IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 東芝メモリ株式会社の特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025025871
(43)【公開日】2025-02-21
(54)【発明の名称】メモリシステム
(51)【国際特許分類】
   G06F 12/00 20060101AFI20250214BHJP
   G06F 12/02 20060101ALI20250214BHJP
【FI】
G06F12/00 560B
G06F12/00 597U
G06F12/02 510A
【審査請求】未請求
【請求項の数】20
【出願形態】OL
(21)【出願番号】P 2023131077
(22)【出願日】2023-08-10
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】藤川 尚志
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AA12
5B160CB01
(57)【要約】
【課題】 不揮発性メモリにアクセスする際に用いられるデータバッファのサイズを低減できるメモリシステムを実現する。
【解決手段】 実施形態によれば、メモリシステムは、不揮発性メモリチップと、ライトバッファと、コントローラとを具備する。不揮発性メモリチップは、メモリセルアレイを含む。ライトバッファは、ホストによる書き込み要求を受け付けたことに応じて受信されたデータを格納可能である。コントローラは、不揮発性メモリチップに対する1回の書き込み動作で書き込まれる第1サイズのデータよりも小さい第2サイズのデータを、ライトバッファから不揮発性メモリチップへ転送するデータ転送動作を、複数回行う。コントローラは、複数回のデータ転送動作によって不揮発性メモリチップへそれぞれ転送された複数の第2サイズのデータを、メモリセルアレイに書き込む。
【選択図】図11
【特許請求の範囲】
【請求項1】
メモリセルアレイを含む不揮発性メモリチップと、
ホストによる書き込み要求を受け付けたことに応じて受信されたデータを格納可能なライトバッファと、
前記不揮発性メモリチップに対する1回の書き込み動作で書き込まれる第1サイズのデータよりも小さい第2サイズのデータを、前記ライトバッファから前記不揮発性メモリチップへ転送するデータ転送動作を、複数回行い、
前記複数回のデータ転送動作によって前記不揮発性メモリチップへそれぞれ転送された複数の前記第2サイズのデータを、前記メモリセルアレイに書き込むように構成されるコントローラと、を具備する、
メモリシステム。
【請求項2】
前記コントローラは、
前記ホストから受信された後、前記メモリセルアレイにまだ書き込まれていないデータの第3サイズが前記第1サイズ未満である間に、前記ホストからデータの不揮発化要求を受け付けた場合、前記第1サイズから前記第3サイズを引いた第4サイズのダミーデータを、前記不揮発性メモリチップへ転送し、
前記第3サイズのデータと前記第4サイズのダミーデータとを前記メモリセルアレイに書き込むように構成される、
請求項1に記載のメモリシステム。
【請求項3】
前記メモリセルアレイは、データが第1方式で書き込まれる第1ブロックと、データが前記第1方式とは異なる第2方式で書き込まれる第2ブロックとを含み、
前記コントローラは、
前記複数の前記第2サイズのデータを、前記第1方式で前記第1ブロックに書き込み、
前記不揮発性メモリチップへ転送され、且つ前記メモリセルアレイにまだ書き込まれてない1つ以上の前記第2サイズのデータの総サイズが前記第1サイズ未満である間に、前記ホストからデータの不揮発化要求を受け付けた場合、前記1つ以上の第2サイズのデータの少なくとも一部を、前記第2方式で前記第2ブロックに書き込むように構成される、
請求項1に記載のメモリシステム。
【請求項4】
前記第1方式は、メモリセル当たりにMビットのデータが書き込まれる方式であり、
前記第2方式は、メモリセル当たりにNビットのデータが書き込まれる方式であり、
前記Mは、2以上の整数であり、
前記Nは、前記Mより小さい数である、
請求項3に記載のメモリシステム。
【請求項5】
前記コントローラは、さらに、前記第2サイズのデータを前記不揮発性メモリチップへ転送する前記データ転送動作を行った後、前記第2サイズのデータが格納されている前記ライトバッファ内の記憶領域を解放するように構成される、
請求項1に記載のメモリシステム。
【請求項6】
前記複数の第2サイズのデータの総サイズは、前記第1サイズと等しい、
請求項1に記載のメモリシステム。
【請求項7】
前記不揮発性メモリチップは、複数のラッチ回路を含み、
前記複数の第2サイズのデータは、前記複数のラッチ回路にそれぞれ格納され、
前記コントローラは、前記複数のラッチ回路にそれぞれ格納されている前記複数の第2サイズのデータを、前記メモリセルアレイに書き込むように構成される、
請求項1に記載のメモリシステム。
【請求項8】
前記不揮発性メモリチップは、第1ラッチ回路と、第2ラッチ回路とを含み、
前記コントローラは、
前記ライトバッファに格納されている前記第2サイズの第1データを、前記第1ラッチ回路へ転送し、
前記第1ラッチ回路に格納されている前記第1データを、前記第2ラッチ回路へ移動し、
前記第2ラッチ回路に格納されている前記第1データを、前記メモリセルアレイに書き込むように構成される、
請求項1に記載のメモリシステム。
【請求項9】
前記不揮発性メモリチップは、第1プレーンと、第2プレーンとを含み、
前記コントローラは、
前記第2サイズの第1データを、前記ライトバッファから前記第1プレーンへ転送するデータ転送動作を行い、
前記第2サイズの第2データを、前記ライトバッファから前記第2プレーンへ転送するデータ転送動作を行い、
前記第1データを前記第1プレーン内のブロックに書き込む動作と、前記第2データを前記第2プレーン内のブロックに書き込む動作とを並列に行うように構成される、
請求項1に記載のメモリシステム。
【請求項10】
前記不揮発性メモリチップは、ブロックを含み、
前記コントローラは、
前記第2サイズの第1データを、前記ライトバッファから前記不揮発性メモリチップへ転送するデータ転送動作を行い、
前記第2サイズの第2データを、前記ライトバッファから前記不揮発性メモリチップへ転送するデータ転送動作を行い、
メモリセル当たりにMビットのデータが書き込まれる方式で、前記第1データと前記第2データを前記ブロックに書き込むように構成され、
前記Mは、2以上の整数である、
請求項1に記載のメモリシステム。
【請求項11】
前記ライトバッファは、前記コントローラ内に設けられている、
請求項1に記載のメモリシステム。
【請求項12】
前記ホストによる読み出し要求を受け付けたことに応じて前記不揮発性メモリチップから読み出されたデータを格納可能なリードバッファをさらに具備する、
請求項1乃至請求項11のいずれか一項に記載のメモリシステム。
【請求項13】
第1メモリセルアレイと、第1ラッチ回路と、第2ラッチ回路とを含む第1プレーンと、第2メモリセルアレイと、第3ラッチ回路と、第4ラッチ回路とを含む第2プレーンとを有する不揮発性メモリチップと、
ホストによる書き込み要求を受け付けたことに応じて受信されたデータを格納可能なライトバッファと、
データ入力開始を指示する第1コマンドと、前記第1メモリセルアレイ内の第1ブロックを示す第1アドレスと、前記第1ブロックに書き込まれるべき第1データと、前記第1データを前記第1ラッチ回路に保持させる第2コマンドとを含む第1コマンドセットと、
データ入力開始を指示する第3コマンドと、前記第2メモリセルアレイ内の第2ブロックを示す第2アドレスと、前記第2ブロックに書き込まれるべき第2データと、前記第1ラッチ回路に保持された前記第1データを前記第2ラッチ回路に移動させるとともに前記第3ラッチ回路に入力された前記第2データを前記第4ラッチ回路に移動させる第4コマンドとを含む第2コマンドセットと、
データ入力開始を指示する第5コマンドと、前記第1ブロックを示す第3アドレスと、前記第1ブロックに書き込まれるべき第3データと、前記第3データを前記第1ラッチ回路に保持させる第6コマンドとを含む第3コマンドセットと、
データ入力開始を指示する第7コマンドと、前記第2ブロックを示す第4アドレスと、前記第2ブロックに書き込まれるべき第4データと、前記第1データ、前記第2データ、前記第3データ、および前記第4データの前記第1メモリセルアレイおよび前記第2メモリセルアレイへのプログラムを指示する第8コマンドとを含む第4コマンドセットと、を前記不揮発性メモリチップに送信するように構成されたコントローラと、を具備する、
メモリシステム。
【請求項14】
前記受信されたデータは、第1サイズのデータであり、
前記第1データは、前記第1サイズよりも小さい第2サイズのデータである、
請求項13に記載のメモリシステム。
【請求項15】
前記第1データ、前記第2データ、前記第3データ、および前記第4データのそれぞれは、前記不揮発性メモリチップに対する1回の書き込み動作で書き込まれる第3サイズのデータよりも小さい第2サイズのデータであり、
前記コントローラは、
前記ホストから受信された後、前記第1メモリセルアレイおよび前記第2メモリセルアレイを含む前記不揮発性メモリチップ内のメモリセルアレイにまだ書き込まれていないデータの第4サイズが前記第3サイズ未満である間に、前記ホストからデータの不揮発化要求を受け付けた場合、前記第3サイズから前記第4サイズを引いた第5サイズのダミーデータを、前記不揮発性メモリチップへ転送し、
前記第4サイズのデータと前記第5サイズのダミーデータとを前記メモリセルアレイに書き込むように構成される、
請求項13に記載のメモリシステム。
【請求項16】
前記第1データ、前記第2データ、前記第3データ、および前記第4データのそれぞれは、前記不揮発性メモリチップに対する1回の書き込み動作で書き込まれる第3サイズのデータよりも小さい第2サイズのデータであり、
前記第1メモリセルアレイは、データが第1方式で書き込まれる前記第1ブロックと、データが前記第1方式とは異なる第2方式で書き込まれる第3ブロックとを含み、
前記コントローラは、
前記第1データおよび前記第3データを、前記第1方式で前記第1ブロックに書き込み、
前記不揮発性メモリチップへ転送され、且つ前記第1メモリセルアレイおよび前記第2メモリセルアレイを含む前記不揮発性メモリチップ内のメモリセルアレイにまだ書き込まれてない1つ以上の前記第2サイズのデータの総サイズが前記第3サイズ未満である間に、前記ホストからデータの不揮発化要求を受け付けた場合、前記1つ以上の第2サイズのデータの少なくとも一部を、前記第2方式で前記第3ブロックに書き込むように構成される、
請求項13に記載のメモリシステム。
【請求項17】
前記コントローラは、前記1つ以上の第2サイズのデータの内の第5データが格納されている前記第1プレーン内の第5ラッチ回路を示す第9コマンドと、前記第2方式を指定する第10コマンドと、データ入力開始を指示する第11コマンドと、前記第3ブロックを指定する第5アドレスと、前記第5データを前記第5ラッチ回路に保持させるか、または前記第5データの前記第1メモリセルアレイへのプログラムを指示する第12コマンドとを含むコマンドセットを、前記不揮発性メモリチップに送信するように構成される、
請求項16に記載のメモリシステム。
【請求項18】
前記第1方式は、メモリセル当たりにMビットのデータが書き込まれる方式であり、
前記第2方式は、メモリセル当たりにNビットのデータが書き込まれる方式であり、
前記Mは、2以上の整数であり、
前記Nは、前記Mより小さい数である、
請求項16に記載のメモリシステム。
【請求項19】
前記コントローラは、さらに、前記第2サイズのデータを前記ライトバッファから前記不揮発性メモリチップへ転送するデータ転送動作を行った後、前記第2サイズのデータが格納されている前記ライトバッファ内の記憶領域を解放するように構成される、
請求項14乃至請求項18のいずれか一項に記載のメモリシステム。
【請求項20】
前記ライトバッファは、前記コントローラ内に設けられている、
請求項13に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、不揮発性メモリを制御する技術に関する。
【背景技術】
【0002】
近年、不揮発性メモリを備えるメモリシステムが広く普及している。このようなメモリシステムの1つとして、NAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)が知られている。SSDは、様々なコンピューティングデバイスのメインストレージとして使用されている。
【0003】
ホストから不揮発性メモリにアクセスされる場合、メモリシステムはデータバッファを備えることが一般的である。ホストから不揮発性メモリへのアクセスは、例えば、ホストからデータを受信して不揮発性メモリに書き込む動作、および不揮発性メモリからデータを読み出してホストへ送信する動作である。データバッファは、例えば、ライトバッファとリードバッファとを含む。ライトバッファは、不揮発性メモリに書き込まれるべきデータを記憶する。リードバッファは、不揮発性メモリから読み出されたデータを記憶する。メモリシステムは、データバッファを備えることにより、ホストとのデータの送受信と、不揮発性メモリに対する書き込み動作および読み出し動作を効率的に行うことができる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許出願公開第2022/0342585号明細書
【特許文献2】米国特許出願公開第2017/0269856号明細書
【特許文献3】米国特許出願公開第2019/0163620号明細書
【発明の概要】
【発明が解決しようとする課題】
【0005】
データバッファのサイズは、不揮発性メモリに対する書き込み方式および書き込み順序に大きく左右され得る。例えば、書き込み方式および書き込み順序をライトバッファのサイズを小さくするように最適化した場合、リードバッファのサイズが大きくなってしまう可能性がある。一方で、書き込み方式および書き込み順序をリードバッファのサイズを小さくするように最適化した場合、ライトバッファのサイズが大きくなってしまう可能性がある。
【0006】
実施形態の一つは、不揮発性メモリにアクセスする際に用いられるデータバッファのサイズを低減できるメモリシステムを提供する。
【課題を解決するための手段】
【0007】
実施形態によれば、メモリシステムは、不揮発性メモリチップと、ライトバッファと、コントローラとを具備する。不揮発性メモリチップは、メモリセルアレイを含む。ライトバッファは、ホストによる書き込み要求を受け付けたことに応じて受信されたデータを格納可能である。コントローラは、不揮発性メモリチップに対する1回の書き込み動作で書き込まれる第1サイズのデータよりも小さい第2サイズのデータを、ライトバッファから不揮発性メモリチップへ転送するデータ転送動作を、複数回行う。コントローラは、複数回のデータ転送動作によって不揮発性メモリチップへそれぞれ転送された複数の第2サイズのデータを、メモリセルアレイに書き込む。
【図面の簡単な説明】
【0008】
図1】第1実施形態に係るメモリシステムを含む情報処理システムの構成例を示すブロック図。
図2】第1実施形態のメモリシステムに含まれる不揮発性メモリチップの構成例を示すブロック図。
図3】第1実施形態のメモリシステムに含まれるブロックの構成例を示す斜視図。
図4】第1実施形態のメモリシステムに含まれるブロックの回路構成例を示す図。
図5】第1実施形態のメモリシステムに含まれる不揮発性メモリチップにおける書き込み順序の例を示す図。
図6】比較例のメモリシステムに含まれる複数の不揮発性メモリチップにおける書き込み順序の例を示す図。
図7】比較例のメモリシステムにおける不揮発性メモリチップへの書き込み動作を示す図。
図8】比較例のメモリシステムにおける不揮発性メモリチップからの読み出し動作を示す図。
図9】比較例のメモリシステムに含まれる複数の不揮発性メモリチップにおける書き込み順序の別の例を示す図。
図10】第1実施形態のメモリシステムに含まれる不揮発性メモリチップへの書き込み動作の例を示す図。
図11】第1実施形態のメモリシステムに含まれる不揮発性メモリチップに対するコマンドシーケンスの例を示す図。
図12A】第1実施形態のメモリシステムにおいて実行される書き込み制御処理の手順の例を示すフローチャート。
図12B図12Aに後続する書き込み制御処理の手順の例を示すフローチャート。
図13A】第2実施形態に係るメモリシステムにおいて実行される不揮発化処理の手順の例を示すフローチャート。
図13B図13Aに後続する不揮発化処理の手順の例を示すフローチャート。
図14】第3実施形態に係るメモリシステムに含まれる不揮発性メモリチップに対するコマンドシーケンスの例を示す図。
図15】第3実施形態のメモリシステムにおいて実行される不揮発化処理の手順の例を示すフローチャート。
【発明を実施するための形態】
【0009】
以下、実施の形態について図面を参照して説明する。
【0010】
(第1実施形態)
まず図1を参照して、第1実施形態に係るメモリシステムを含む情報処理システム1の構成を説明する。情報処理システム1は、ホストデバイス2と、メモリシステム3とを含む。
【0011】
ホストデバイス2は、大量且つ多様なデータをメモリシステム3に保存するストレージサーバであってもよいし、パーソナルコンピュータであってもよい。以下では、ホストデバイス2を、ホスト2とも称する。
【0012】
メモリシステム3は、不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成されたストレージデバイスである。不揮発性メモリは、例えば、NAND型フラッシュメモリである。メモリシステム3はストレージデバイス、または、半導体ストレージデバイスとも称される。メモリシステム3は、例えば、NAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)、またはUniversal Flash Storage(UFS)デバイスとして実現される。
【0013】
メモリシステム3は、ホスト2のストレージとして使用され得る。メモリシステム3は、ホスト2に内蔵されてもよいし、ホスト2にケーブルまたはネットワークを介して接続されてもよい。
【0014】
ホスト2とメモリシステム3とを接続するためのインタフェースは、PCI ExpressTM(PCIeTM)、EthernetTM、Fibre channel、NVM ExpressTM(NVMeTM)、UFS等の規格に準拠する。
【0015】
メモリシステム3は、例えば、メモリデバイス4、およびコントローラ6を備える。メモリシステム3は、DRAM5をさらに備えていてもよい。
【0016】
メモリデバイス4は、1つ以上の不揮発性メモリチップ41を含む。1つ以上の不揮発性メモリチップ41は、例えば、不揮発性メモリチップ41-0、41-1、41-2、41-3、……である。以下では、メモリデバイス4が4個の不揮発性メモリチップ41-0、41-1、41-2、および41-3を含む場合について、主に例示する。不揮発性メモリチップ41-0、41-1、41-2、41-3、……の内の特定しない1つを指して、不揮発性メモリチップ41とも称する。また、不揮発性メモリチップ41-0、41-1、41-2、41-3、……の内のi番目の不揮発性メモリチップを、第i不揮発性メモリチップ41と表記する。不揮発性メモリチップ41は、例えば、NAND型フラッシュメモリダイである。
【0017】
不揮発性メモリチップ41は、複数のブロックを含む。1つのブロックは、データ消去動作の最小単位として機能する。ブロックは、「消去ブロック」、または「物理ブロック」と称されることもある。複数のブロックのそれぞれは、複数のページを含む。複数のページのそれぞれは、単一のワード線に接続された複数のメモリセルを含む。1つのページは、データ書き込み動作およびデータ読み出し動作の単位として機能する。なお、ワード線がデータ書き込み動作およびデータ読み出し動作の単位として機能してもよい。
【0018】
各ブロックに対するプログラム/イレーズサイクル数(P/Eサイクル数)には上限があり、最大P/Eサイクル数と称される。あるブロックの1回のP/Eサイクルは、このブロック内のすべてのメモリセルを消去状態にするためのデータ消去動作と、このブロックのページそれぞれにデータを書き込むデータプログラム動作とを含む。なお、ブロック(より詳しくは、メモリセル)にデータを書き込むことは、ブロック(メモリセル)にデータをプログラムすることと同義である。
【0019】
不揮発性メモリチップ41は、メモリセル当たりに複数ビットを格納可能に構成されたフラッシュメモリとして実現され得る。
【0020】
メモリセル当たりに複数ビットを記憶可能に構成されたフラッシュメモリとは、例えば、マルチレベルセル(MLC、あるいは4LC)フラッシュメモリ、トリプルレベルセル(TLC、あるいは8LC)フラッシュメモリ、およびクワッドレベルセル(QLC、あるいは16LC)フラッシュメモリである。MLCフラッシュメモリは、メモリセル当たりに2ビットのデータを記憶可能である。TLCフラッシュメモリは、メモリセル当たりに3ビットのデータを記憶可能である。QLCフラッシュメモリは、メモリセル当たりに4ビットのデータを記憶可能である。なお、メモリセル当たりに1ビットを記憶可能に構成されたフラッシュメモリは、シングルレベルセル(SLC、あるいは2LC)フラッシュメモリとも称される。
【0021】
不揮発性メモリチップ41がMLCフラッシュメモリとして実現される場合、通常は、2ページ分のデータが、同一ワード線に接続された複数のメモリセルに書き込まれる。2ページ分のデータは、Lower(下位)ページデータと、Upper(上位)ページデータとで構成される。これにより、メモリセル当たりに2ビットを書き込むことができる。MLCフラッシュメモリ内の任意の領域(例えば、1つ以上の任意のブロック)は、メモリセル当たりに1ビットのみを記憶可能な領域(SLC領域)として使用することができる。SLC領域にデータを書き込む動作においては、1ページ分のデータ(Lowerページデータ)のみが同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、SLC領域として使用される各ブロックにおいては、SLCフラッシュメモリ内の各ブロック(SLCブロック)と同様に、メモリセル当たりに1ビットのみを書き込むことができる。この結果、SLC領域として使用される各ブロックは、擬似的なSLCブロックとして機能する。
【0022】
不揮発性メモリチップ41がTLCフラッシュメモリとして実現される場合、通常は、3ページ分のデータが、同一ワード線に接続された複数のメモリセルに書き込まれる。3ページ分のデータは、Lowerページデータ、Middle(中位)ページデータ、およびUpperページデータで構成される。これにより、メモリセル当たりに3ビットを書き込むことができる。このTLCフラッシュメモリ内の任意の領域(例えば、1つ以上の任意のブロック)は、上述のSLC領域として使用されてもよいし、メモリセル当たりに2ビットを記憶可能なMLC領域として使用されてもよい。なお、SLC領域およびMLC領域は、ブロックよりも細かい単位で設定されてもよい。MLC領域においては、2ページ分のデータのみが同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、MLC領域においては、メモリセル当たりに2ビットのみを書き込むことができる。
【0023】
不揮発性メモリチップ41がQLCフラッシュメモリとして実現される場合、通常、4ページ分のデータが、同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、メモリセル当たりに4ビットを書き込むことができる。このQLCフラッシュメモリ内の任意の領域(例えば、1つ以上の任意のブロック)は、SLC領域として使用されてもよいし、MLC領域として使用されてもよいし、あるいは、メモリセル当たりに3ビットを記憶可能なTLC領域として使用されてもよい。なお、SLC領域、MLC領域、およびTLC領域は、ブロックよりも細かい単位で設定されてもよい。TLC領域においては、3ページ分のデータのみが、同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、TLC領域においては、メモリセル当たりに3ビットを書き込むことができる。
【0024】
なお、不揮発性メモリチップ41は、メモリセル当たりに5ビット以上を記憶可能に構成されていてもよい。この場合においても、不揮発性メモリチップ41の任意の領域は、メモリセル当たりに4ビット以下のデータのみが書き込まれる領域として使用され得る。
【0025】
DRAM5は揮発性のメモリである。DRAM5には、例えば、ファームウェア(FW)51の格納領域、および論理物理アドレス変換テーブル52の格納領域が設けられる。
【0026】
FW51は、コントローラ6の動作を制御するためのプログラムである。FW51は、例えば、メモリデバイス4からDRAM5にロードされる。
【0027】
コントローラ6は、System-on-a-chip(SoC)のような回路によって実現され得る。コントローラ6は、メモリデバイス4を制御するように構成される。コントローラ6内の各部の機能は、コントローラ6内の専用ハードウェアによって実現されてもよいし、FWを実行するプロセッサによって実現されてもよい。
【0028】
コントローラ6は、メモリデバイス4のデータ管理およびブロック管理を実行するように構成されたフラッシュトランスレーション層(FTL)として機能してもよい。このFTLによって実行されるデータ管理には、(1)論理アドレスそれぞれとメモリデバイス4の物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理、および(2)ページ単位のデータ読み出し/データ書き込み動作とブロック単位のデータ消去動作との差異を隠蔽するための処理が含まれる。ブロック管理には、不良ブロックの管理、ウェアレベリング、およびガベージコレクションが含まれる。
【0029】
論理アドレスは、メモリシステム3の記憶領域をアドレス指定するために、ホスト2によって使用される。論理アドレスは、例えば論理ブロックアドレス(LBA)である。
【0030】
論理アドレスそれぞれと物理アドレスそれぞれとの間のマッピングの管理は、例えば、論理物理アドレス変換テーブル52を用いて実行される。コントローラ6は、論理物理アドレス変換テーブル52を使用して、論理アドレスそれぞれと物理アドレスそれぞれとの間のマッピングを特定の管理サイズ単位で管理する。ある論理アドレスに対応する物理アドレスは、この論理アドレスのデータが書き込まれたメモリデバイス4内の物理記憶位置を示す。コントローラ6は、論理物理アドレス変換テーブル52を用いて、メモリデバイス4の記憶領域を論理的に分割した複数の記憶領域を管理する。これら複数の記憶領域は、複数の論理アドレスにそれぞれ対応する。つまり、これら複数の記憶領域のそれぞれは、1つの論理アドレスで特定される。論理物理アドレス変換テーブル52は、メモリシステム3の起動時にメモリデバイス4からDRAM5にロードされてもよい。
【0031】
1つのページへのデータ書き込みは、1回のP/Eサイクル当たり1回のみ可能である。このため、コントローラ6は、ある論理アドレスに対応する更新データを、この論理アドレスに対応する以前のデータが格納されている物理記憶位置ではなく、別の物理記憶位置に書き込む。そして、コントローラ6は、この論理アドレスをこの別の物理記憶位置に関連付けるように論理物理アドレス変換テーブル52を更新することにより、以前のデータを無効化する。論理物理アドレス変換テーブル52から参照されているデータ(すなわち論理アドレスと紐付けられているデータ)は有効データと称される。また、どの論理アドレスとも紐付けられていないデータは無効データと称される。有効データは、後にホスト2からリードされる可能性があるデータである。無効データは、もはやホスト2からリードされる可能性が無いデータである。
【0032】
また、コントローラ6は、例えば、SLC方式、MLC方式、TLC方式、およびQLC方式のいずれかで、不揮発性メモリチップ41に対する書き込み動作を実行し得る。SLC方式は、メモリセル当たりに1ビットが書き込まれる方式である。MLC方式は、メモリセル当たりに2ビットが書き込まれる方式である。TLC方式は、メモリセル当たりに3ビットが書き込まれる方式である。QLC方式は、メモリセル当たりに4ビットが書き込まれる方式である。
【0033】
コントローラ6は、例えば、ホストインタフェース回路(ホストI/F)11、メモリインタフェース回路(メモリI/F)12、DRAMインタフェース回路(DRAM I/F)13、スタティックランダムアクセスメモリ(SRAM)14、およびCPU15を含んでもよい。これらホストI/F11、メモリI/F12、DRAM I/F13、SRAM14、およびCPU15は、バス10を介して接続されていてもよい。
【0034】
ホストI/F11は、ホスト2から様々なコマンド、例えば、入出力(I/O)コマンド、各種制御コマンドやデータを受信する回路として機能する。I/Oコマンドには、例えば、ライトコマンド、およびリードコマンドが含まれる。制御コマンドには、例えば、フラッシュ(flush)コマンドが含まれる。また、ホストI/F11は、コマンドに対する応答やデータをホスト2に送信する回路として機能する。
【0035】
メモリI/F12は、コントローラ6とメモリデバイス4とを電気的に接続する。メモリI/F12は、Toggle DDR、Open NAND Flash Interface(ONFI)等のインタフェース規格に対応する。
【0036】
メモリI/F12は、メモリデバイス4を制御するように構成されたNAND制御回路として機能する。メモリI/F12は、複数のチャネルch0、ch1、ch2、ch3、……を介して、メモリデバイス4内の複数の不揮発性メモリチップ41にそれぞれ接続されていてもよい。複数の不揮発性メモリチップ41が並列に駆動されることにより、メモリデバイス4全体に対するアクセスを広帯域化することができる。
【0037】
DRAM I/F13は、DRAM5へのアクセスを制御するように構成されたDRAM制御回路として機能する。
【0038】
SRAM14は、揮発性のメモリである。SRAM14には、例えば、データを一時的に記憶するバッファ領域が設けられる。バッファ領域は、例えば、ライトバッファ141と、リードバッファ142とを含む。ライトバッファ141は、不揮発性メモリチップ41に書き込まれるべきユーザデータを一時的に記憶する。リードバッファ142は、不揮発性メモリチップ41から読み出されたユーザデータを一時的に記憶する。なお、ライトバッファ141およびリードバッファ142として、DRAM5の記憶領域が割り当てられてもよい。また、FW51の格納領域、および論理物理アドレス変換テーブル52の格納領域として、SRAM14の記憶領域が割り当てられてもよい。ライトバッファ141、リードバッファ142、FW51の格納領域、および論理物理アドレス変換テーブル52の格納領域として、SRAM14の記憶領域が割り当てられる場合、メモリシステム3はDRAM5を備えていなくてもよい。
【0039】
CPU15は、ホストI/F11、メモリI/F12、DRAM I/F13、およびSRAM14を制御するように構成されたプロセッサである。CPU15はメモリデバイス4からDRAM5にロードされたFW51を実行することによって、様々な処理を行う。FW51は、CPU15に様々な処理を実行させるための命令群を含む制御プログラムである。CPU15は、ホスト2からの様々なコマンドを処理するためのコマンド処理等を実行することができる。CPU15の動作は、CPU15によって実行されるFW51によって制御される。
【0040】
コントローラ6内の各部の機能は、コントローラ6内の専用ハードウェアによって実現されてもよいし、CPU15がFW51を実行することによって実現されてもよい。
【0041】
CPU15は、例えば、ライト制御部151およびリード制御部152として機能する。CPU15は、例えばFW51を実行することにより、これら各部として機能する。
【0042】
ライト制御部151は、ホスト2から書き込み要求(例えば、ライトコマンド)を受け付けたことに応じて、ホスト2からユーザデータを受信し、そのユーザデータを不揮発性メモリチップ41に書き込むための動作を制御する。リード制御部152は、ホスト2から読み出し要求(例えば、リードコマンド)を受け付けたことに応じて、不揮発性メモリチップ41からユーザデータを読み出し、ホスト2に送信するための動作を制御する。
【0043】
ここで、不揮発性メモリチップ41の構成についてより具体的に説明する。図2は、不揮発性メモリチップ41の構成例を示すブロック図である。
【0044】
不揮発性メモリチップ41は、例えば、T個のプレーン45を含む。Tは、1以上の整数である。図2では、T個のプレーン45が、4個のプレーン45-0、45-1、45-2、および45-3である例を示している。
【0045】
T個のプレーン45のそれぞれは、周辺回路31、ラッチ32、およびメモリセルアレイ33を含む。
【0046】
周辺回路31は、メモリセルアレイ33を制御する回路である。周辺回路31は、例えば、ロウデコーダ、カラムデコーダ、およびセンスアンプを含む。周辺回路31は、メモリセルアレイ33に対して、プログラム動作(書き込み動作)、センス動作(読み出し動作)、および消去動作を実行し得る。
【0047】
ラッチ32は、コントローラ6と不揮発性メモリチップ41との間で転送されるデータを一時的に記憶する記憶領域を含む回路である。ラッチ32は、レジスタ、またはバッファとも称される。データ書き込み動作の際、コントローラ6から受信したデータは、ラッチ32に一時的に格納された後、メモリセルアレイ33にプログラムされる。以下では、コントローラ6から受信され、ライトバッファ141に格納されたデータをラッチ32に転送(入力)する動作を、データイン動作と称する。また、ラッチ32に格納されたデータをメモリセルアレイ33にプログラムする動作を、プログラム動作と称する。ラッチ32は、例えば、1個のデータ入力用ラッチ(DL)321と、M個のプログラム用ラッチ(PL)322とを含む。Mは、1以上の整数である。
【0048】
データ入力用ラッチ321は、ライトバッファ141から転送されたデータを一時的に記憶する。
【0049】
M個のプログラム用ラッチ322のそれぞれは、データ入力用ラッチ321から転送されたデータを一時的に記憶する。M個のプログラム用ラッチ322が記憶しているデータ全体は、例えば、1回のプログラム動作でメモリセルアレイ33に書き込まれる。具体的には、データがTLC方式でメモリセルアレイ33に書き込まれる場合、例えば、3個のプログラム用ラッチ322が記憶している3ページ分のデータが、1回のプログラム動作でメモリセルアレイ33に書き込まれる。3個のプログラム用ラッチ322を、第0プログラム用ラッチ(第0PL)322-0、第1プログラム用ラッチ(第1PL)322-1、および第2プログラム用ラッチ(第2PL)322-2とも称する。
【0050】
メモリセルアレイ33は、複数のブロックを含む。複数のブロックのそれぞれは、マトリクス状に配置された複数の不揮発性メモリセルトランジスタを含む。以下では、不揮発性メモリセルトランジスタを、単に、メモリセルと称する。図2では、複数のブロックが、ブロックB0、B1、B2、…である例を示している。
【0051】
複数のブロックのそれぞれは、複数のストリングユニットを含む。図2では、各ブロックが、4個のストリングユニットSU0、SU1、SU2、およびSU3を含む例を示している。
【0052】
複数のストリングユニットのそれぞれは、メモリセルの集合である。各ストリングユニットは、例えば、複数のNANDストリングNSを含む。各NANDストリングNSは、直列接続されたメモリセルの集合である。
【0053】
図3および図4を参照して、メモリセルアレイ33に含まれるブロックの構成について、より具体的に説明する。図3および図4では、ブロックB0の構成例を示すが、メモリセルアレイ33内の他のブロックも同様の構成を有する。
【0054】
図3は、ブロックB0の構成例を示す斜視図である。
【0055】
ブロックB0は、4個のストリングユニットSU0、SU1、SU2、およびSU3を含む。
【0056】
4個のストリングユニットSU0、SU1、SU2、およびSU3は、複数のワードラインWL0、……、WLxが積層された方向(図3では、垂直方向)と直交する方向(図3では、水平方向)に配置されている。4個のストリングユニットSU0、SU1、SU2、およびSU3のそれぞれは、複数のNANDストリングNSを含む。
【0057】
各NANDストリングNSの一端は、複数のビットラインBL0、……、BLyの内の対応するビットラインに接続されている。各NANDストリングNSは、垂直方向に延在している。各NANDストリングNSに含まれる複数のメモリセルの制御ゲートは、複数のワードラインWL0、……、WLxにそれぞれ接続されている。
【0058】
図4は、ブロックB0の回路構成例を示す。
【0059】
各NANDストリングNSは、例えば、複数のメモリセルMT0、……、MTxと、2つの選択トランジスタST1およびST2を含む。複数のメモリセルMT0、……、MTxのそれぞれは、制御ゲートと電荷蓄積層とを含み、データを不揮発に記憶する。複数のメモリセルMT0、……、MTxは、選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に直列接続される。選択トランジスタST1のドレインは、複数のビットラインBL0、……、BLyの内の対応するビットラインに接続されている。選択トランジスタST2のソースは、複数のストリングユニットSU0、SU1、SU2、およびSU3で共通のソースラインSLに接続される。
【0060】
ストリングユニットSU0内の選択トランジスタST1のゲートは、ストリングユニットSU0に対応する選択ゲート線SGD0に接続される。ストリングユニットSU1内の選択トランジスタST1のゲートは、ストリングユニットSU1に対応する選択ゲート線SGD1に接続される。ストリングユニットSU2内の選択トランジスタST1のゲートは、ストリングユニットSU2に対応する選択ゲート線SGD2に接続される。ストリングユニットSU3内の選択トランジスタST1のゲートは、ストリングユニットSU3に対応する選択ゲート線SGD3に接続される。
【0061】
ストリングユニットSU0、SU1、SU2、およびSU3内の選択トランジスタST2のゲートは、選択ゲート線SGSに共通接続される。なお、ストリングユニットSU0、SU1、SU2、およびSU3内の選択トランジスタST2のゲートは、ストリングユニット毎に異なる選択ゲート線に接続されてもよい。ブロックB0に含まれるメモリセルMT0、……、MTxの制御ゲートは、それぞれワードラインWL0、……、WLxに共通接続される。
【0062】
周辺回路31によるプログラム動作とセンス動作のそれぞれは、1つのストリングユニットにおいて1つのワードラインに接続された複数のメモリセルに対して、一括して実行され得る。プログラム動作およびセンス動作のそれぞれにおいて、一括して選択されるメモリセルの集合をメモリセルグループと称する。
【0063】
1つのメモリセルが1ビットのデータを記憶するように構成されている場合にメモリセルグループ当たりに記憶されるデータのサイズを、1ページ分のデータと称する。例えば、1つのメモリセルが3ビットのデータを記憶するように構成されている場合、メモリセルグループ当たりに記憶されるデータは、3ページ分のデータである。
【0064】
周辺回路31による消去動作は、例えば、ブロック単位で実行される。つまり、1つのブロックに含まれる全てのメモリセルに格納されているデータは、一括して消去される。
【0065】
次いで、不揮発性メモリチップ41に対する書き込み方式および書き込み順序と、ライトバッファ141およびリードバッファ142のサイズ(容量)との関係について説明する。書き込み順序は、不揮発性メモリチップ41においてデータが書き込まれるアドレスの順序を示す。書き込み順序は、書き込みアドレッシングとも称される。
【0066】
ライトバッファ141およびリードバッファ142のサイズは、不揮発性メモリチップ41に対する書き込み方式および書き込み順序に左右され得る。例えば、書き込み方式および書き込み順序をライトバッファ141のサイズを小さくするように最適化した場合、リードバッファ142のサイズが大きくなってしまう可能性がある。一方で、書き込み方式および書き込み順序をリードバッファ142のサイズを小さくするように最適化した場合、ライトバッファ141のサイズが大きくなってしまう可能性がある。
【0067】
以下では、不揮発性メモリチップ41に対する書き込み方式として、フルシーケンスプログラム(FSP)動作が用いられる場合を例示する。FSP動作は、1回のプログラム動作で、複数ページ分のデータを1つ以上のブロックにプログラムする動作である。例えば、不揮発性メモリチップ41内のブロックに対してTLC方式でデータがプログラムされる場合、FSP動作では、3ページ分のデータ(Lowerページデータ、Middleページデータ、およびUpperページデータ)が不揮発性メモリチップ41に転送(入力)され、転送された3ページ分のデータが1つのブロックに一括してプログラムされる。なお、以下の説明は、TLC方式が用いられるケースに限らず、一定量のデータが1つ以上のブロックに一括してプログラムされる任意のケースに同様に適用できる。
【0068】
1回のFSP動作は、単一のブロックに対して行われる場合もあれば、1つの不揮発性メモリチップ41内の複数のプレーン45にそれぞれ含まれる複数のブロックに対して行われる場合もある。プレーン45に含まれるブロックを、プレーンブロック(PB)とも称する。1回のプログラム動作を、複数のプレーン45にそれぞれ含まれる複数のプレーンブロックに対して行うことは、マルチプレーンプログラムとも称される。不揮発性メモリチップ41が複数のプレーン45を含む場合、プログラム性能を重視して、マルチプレーンプログラムが使用されることが一般的である。
【0069】
図5は、1つの不揮発性メモリチップ41における書き込み順序の例を示す。ここでは、4個のプレーン45を含む不揮発性メモリチップ41に対して、TLC方式、およびマルチプレーンプログラムによるFSP動作が行われることを想定する。4個のプレーン45は、第0プレーン45-0、第1プレーン45-1、第2プレーン45-2、および第3プレーン45-3である。
【0070】
4個のプレーン45にそれぞれ含まれる書き込み対象の4個のブロックを、プレーンブロックPB0、PB1、PB2、およびPB3と称する。具体的は、プレーンブロックPB0は、第0プレーン45-0に含まれる、TLC方式による書き込み対象のブロックである。プレーンブロックPB1は、第1プレーン45-1に含まれる、TLC方式による書き込み対象のブロックである。プレーンブロックPB2は、第2プレーン45-2に含まれる、TLC方式による書き込み対象のブロックである。プレーンブロックPB3は、第3プレーン45-3に含まれる、TLC方式による書き込み対象のブロックである。1回のFSP動作でデータが書き込まれる各プレーンブロック内の位置は、例えば、ストリングの番号で特定される。
【0071】
図5に示すように、ストリング番号“0”に対応するFSP動作では、不揮発性メモリチップ41に対して以下の(0)から(11)の順序でページデータが入力(転送)される。
(0)プレーンブロックPB0用のLowerページデータ
(1)プレーンブロックPB1用のLowerページデータ
(2)プレーンブロックPB2用のLowerページデータ
(3)プレーンブロックPB3用のLowerページデータ
(4)プレーンブロックPB0用のMiddleページデータ
(5)プレーンブロックPB1用のMiddleページデータ
(6)プレーンブロックPB2用のMiddleページデータ
(7)プレーンブロックPB3用のMiddleページデータ
(8)プレーンブロックPB0用のUpperページデータ
(9)プレーンブロックPB1用のUpperページデータ
(10)プレーンブロックPB2用のUpperページデータ
(11)プレーンブロックPB3用のUpperページデータ
なお、順序を示す番号は、図5の対応するストリング番号(ここでは、ストリング番号“0”)において、Lowerページ、Middleページ、およびUpperページのいずれか1つと、プレーンブロックPB0、PB1、PB2、およびPB3のいずれか1つとで特定される枠内の数値と対応する。
【0072】
(0)から(11)の順序で入力された12ページ分のデータは、1回のFSP動作で書き込まれるデータである。12ページ分のデータは、入力順に従って、プレーンブロックPB0、PB1、PB2、およびPB3にプログラムされる。
【0073】
次いで、データの書き込み順序は、ストリング方向に進む。具体的には、ストリング番号を0から1に増加させる。ストリング番号“1”に対応するFSP動作では、(12)から(23)の順序で、12ページ分のデータが不揮発性メモリチップ41に入力される。(12)から(23)の順序で入力される具体的なページデータは、(0)から(11)と同様である。入力された12ページ分のデータは、入力順に従って、プレーンブロックPB0、PB1、PB2、およびPB3にプログラムされる。
【0074】
以降も同様にして、増加させたストリング番号に対応するFSP動作が順次行われ得る。
【0075】
なお、メモリシステム3では、プログラム性能を向上するために、インターリーブ書き込み動作が行われることがある。インターリーブ書き込み動作は、複数の不揮発性メモリチップ41に対して並列に実行される書き込み動作である。
【0076】
ここで、図6および図7を参照して、比較例に係るメモリシステムにおける複数の不揮発性メモリチップに対するインターリーブ書き込み動作について説明する。
【0077】
図6は、比較例に係るメモリシステムに含まれる複数の不揮発性メモリチップにおける書き込み順序の例を示す。ここでは、比較例のメモリシステムが4個の不揮発性メモリチップを含み、4個のプレーンをそれぞれ含む4個の不揮発性メモリチップに対して、TLC方式、およびマルチプレーンプログラムによるFSP動作が行われることを想定する。4個の不揮発性メモリチップは、第0不揮発性メモリチップ41A-0、第1不揮発性メモリチップ41A-1、第2不揮発性メモリチップ41A-2、および第3不揮発性メモリチップ41A-3である。不揮発性メモリチップ41A-0、41A-1、41A-2、および41A-3のそれぞれにおいて、4個のプレーンにそれぞれ含まれる書き込み対象の4個のブロックを、プレーンブロックPB0、PB1、PB2、およびPB3と称する。
【0078】
図6に示すように、ストリング番号“0”に対応するFSP動作では、まず、第0不揮発性メモリチップ41A-0に対して(0)から(11)の順序でページデータが入力される。この(0)から(11)の順序で入力されるページデータは、図5を参照して前述した(0)から(11)の順序で入力されるページデータと同様である。なお、順序を示す番号は、図6の対応するストリング番号と不揮発性メモリチップの組み合わせ(ここでは、ストリング番号“0”と第0不揮発性メモリチップ41A-0の組み合わせ)において、Lowerページ、Middleページ、およびUpperページのいずれか1つと、プレーンブロックPB0、PB1、PB2、およびPB3のいずれか1つとで特定される枠内の数値と対応する。
【0079】
(0)から(11)の順序で入力された12ページ分のデータは、1回のFSP動作で第0不揮発性メモリチップ41A-0に書き込まれるデータである。12ページ分のデータは、入力順に従って、第0不揮発性メモリチップ41A-0のプレーンブロックPB0、PB1、PB2、およびPB3にプログラムされる。
【0080】
複数の不揮発性メモリチップに対するインターリーブ書き込み動作が行われる場合、第0不揮発性メモリチップ41A-0に対する(0)から(11)の順序によるデータ入力の後、書き込み順序は、ストリング方向ではなく、チップ方向に進む。ここでは、書き込み順序は、第0不揮発性メモリチップ41A-0から第1不揮発性メモリチップ41A-1に進む。
【0081】
したがって、次に、第1不揮発性メモリチップ41A-1に対して、(12)から(23)の順序でページデータが入力される。(12)から(23)の順序で入力される具体的なページデータは、(0)から(11)の順序で入力されるページデータと同様であり、データイン動作の対象が第0不揮発性メモリチップ41A-0から第1不揮発性メモリチップ41A-1に置き換えられる。
【0082】
(12)から(23)の順序で入力された12ページ分のデータは、1回のFSP動作で第1不揮発性メモリチップ41A-1に書き込まれるデータである。12ページ分のデータは、入力順に従って、第1不揮発性メモリチップ41A-1のプレーンブロックPB0、PB1、PB2、およびPB3にプログラムされる。
【0083】
次いで、第2不揮発性メモリチップ41A-2に対して、(24)から(35)の順序でページデータが入力される。(24)から(35)の順序で入力される具体的なページデータは、(0)から(11)の順序で入力されるページデータと同様であり、データイン動作の対象が第0不揮発性メモリチップ41A-0から第2不揮発性メモリチップ41A-2に置き換えられる。
【0084】
(24)から(35)の順序で入力された12ページ分のデータは、1回のFSP動作で第2不揮発性メモリチップ41A-2に書き込まれるデータである。12ページ分のデータは、入力順に従って、第2不揮発性メモリチップ41A-2のプレーンブロックPB0、PB1、PB2、およびPB3にプログラムされる。
【0085】
そして、第3不揮発性メモリチップ41A-3に対して、(36)から(47)の順序でページデータが入力される。(36)から(47)の順序で入力される具体的なページデータは、(0)から(11)の順序で入力されるページデータと同様であり、データイン動作の対象が第0不揮発性メモリチップ41A-0から第3不揮発性メモリチップ41A-3に置き換えられる。
【0086】
(36)から(47)の順序で入力された12ページ分のデータは、1回のFSP動作で第3不揮発性メモリチップ41A-3に書き込まれるデータである。12ページ分のデータは、入力順に従って、第3不揮発性メモリチップ41A-3のプレーンブロックPB0、PB1、PB2、およびPB3にプログラムされる。
【0087】
(0)から(47)の順序で4個の不揮発性メモリチップ41A-0、41A-1、41A-2、および41A-3に対するデータイン動作が行われた後、書き込み順序は、ストリング方向に進む(すなわち、ストリング番号を増加させる方向に進む)。以降、同様にして、増加させたストリング番号に応じて、不揮発性メモリチップ41A-0、41A-1、41A-2、および41A-3に対するFSP動作が順次行われ得る。
【0088】
ホストからの書き込み要求に応じた書き込み処理では、ホストから受信したデータを順に不揮発性メモリチップ41A-0、41A-1、41A-2、および41A-3にプログラムしていくことになる。不揮発性メモリチップ41A-0、41A-1、41A-2、および41A-3のそれぞれに対するFSP動作を実行するためには、1つの不揮発性メモリチップに12ページ分のデータ(=3ページ×4PB分のデータ)を入力する必要がある。つまり、12ページ分のデータが入力されなければ、1つの不揮発性メモリチップに対するFSP動作を実行できない。そのため、比較例のメモリシステムのコントローラは、例えば、12ページ分のデータがライトバッファに蓄積された後、蓄積された12ページ分のデータの不揮発性メモリチップへの入力(転送)を開始する。
【0089】
図7は、比較例のメモリシステム3Aにおいて、図6に示した書き込み順序に従う場合の、不揮発性メモリチップ41A-0、41A-1、41A-2、および41A-3への書き込み動作を示す。メモリシステム3Aは、ホスト2Aからの書き込み要求に応じて書き込み動作を行う。
【0090】
メモリシステム3Aは、メモリデバイス4Aと、コントローラ6Aとを含む。メモリデバイス4Aは、不揮発性メモリチップ41A-0、41A-1、41A-2、および41A-3を含む。不揮発性メモリチップ41A-0、41A-1、41A-2、および41A-3のそれぞれは、4個のプレーンを含む。図7では、第0不揮発性メモリチップ41A-0において、4個のプレーンにそれぞれに含まれる4個のプレーンブロックPB0、PB1、PB2、およびPB3が、TLC方式での書き込み対象のブロックとして割り当てられている。
【0091】
コントローラ6Aは、書き込み動作を制御するライト制御部151Aと、ライトバッファ141Aとを含む。ライト制御部151Aは、ホスト2からの書き込み要求を受け付けたことに応じてホスト2Aから転送されたユーザデータを、ライトバッファ141Aに格納する(図7中の(1))。
【0092】
ライト制御部151Aは、4個のプレーンブロックPB0、PB1、PB2、およびPB3に対する1回のFSP動作に必要なユーザデータ61Aがライトバッファ141Aに格納されたことに応じ、ライトバッファ141Aから第0不揮発性メモリチップ41A-0にユーザデータ61Aを入力するデータイン動作を行う(図7中の(2))。4個のプレーンブロックPB0、PB1、PB2、およびPB3に対する1回のFSP動作に必要なユーザデータ61Aは、12ページ分のユーザデータである。
【0093】
そして、ライト制御部151Aは、4個のプレーンブロックPB0、PB1、PB2、およびPB3にユーザデータ61Aをプログラムするプログラム動作を行う(図7中の(3))。これにより、第0不揮発性メモリチップ41A-0(より詳しくは、第0不揮発性メモリチップ41A-0内の4個のプレーンブロックPB0、PB1、PB2、およびPB3)に対する1回のFSP動作が完了する。
【0094】
ライトバッファ141Aから第0不揮発性メモリチップ41A-0にユーザデータ61Aを入力するデータイン動作が完了した場合、ユーザデータ61Aが格納されているライトバッファ141Aの記憶領域は解放される。そして、例えば、次の第1不揮発性メモリチップ41A-1に対するFSP動作に必要なユーザデータ(すなわち、別の12ページ分のユーザデータ)が、ライトバッファ141Aに新たに格納される。ライト制御部151Aは、第0不揮発性メモリチップ41A-0の場合と同様にして、第1不揮発性メモリチップ41A-1に対するデータイン動作およびプログラム動作を行う。さらに、ライト制御部151Aは、同様にして、第2不揮発性メモリチップ41A-2、および第3不揮発性メモリチップ41A-3のそれぞれに対するデータイン動作およびプログラム動作を行う。
【0095】
このように、図6に示した書き込み順序に従う場合、ライトバッファ141Aとして割り当てられる記憶領域のサイズは、1つの不揮発性メモリチップ41Aに対する1回のFSP動作に必要なデータのサイズ(ここでは、12ページ分のサイズ)で済む。つまり、図6に示した書き込み順序は、ライトバッファ141Aのサイズを小さくするように最適化したものと云える。
【0096】
一方で、図6に示した書き込み順序で書き込まれたユーザデータを不揮発性メモリチップ41A-0、41A-1、41A-2、および41A-3から読み出して、ホスト2Aに送信する場合、読み出されたユーザデータを一時的に記憶するコントローラ6A内のリードバッファのサイズは、大きくなる傾向がある。
【0097】
図8は、比較例のメモリシステム3Aにおいて、図6に示した書き込み順序に従って書き込まれたデータの、不揮発性メモリチップ41A-0、41A-1、41A-2、および41A-3からの読み出し動作を示す。メモリシステム3Aは、ホスト2Aからの読み出し要求に応じて読み出し動作を行う。
【0098】
コントローラ6Aと、4個の不揮発性メモリチップ41A-0、41A-1、41A-2、および41A-3とは、4チャネルのデータバスch0、ch1、ch2、およびch3でそれぞれ接続されている。4個の不揮発性メモリチップ41A-0、41A-1、41A-2、および41A-3は、対応するチャネルのデータバスch0、ch1、ch2、およびch3を介して、データを並列にコントローラ6Aへ送出可能である。
【0099】
コントローラ6Aは、読み出し動作を制御するリード制御部152Aと、4個のリードバッファ142Aとを含む。4個のリードバッファ142は、第0リードバッファ142A-0、第1リードバッファ142A-1、第2リードバッファ142A-2、および第3リードバッファ142A-3である。4個のリードバッファ142A-0、142A-1、142A-2、および142A-3は、4個の不揮発性メモリチップ41A-0、41A-1、41A-2、および41A-3にそれぞれ対応する。
【0100】
リード制御部152Aは、ホスト2Aからの読み出し要求を受け付けたことに応じて、4個の不揮発性メモリチップ41A-0、41A-1、41A-2、および41A-3から並列にユーザデータを読み出し、読み出されたユーザデータをリードバッファ142A-0、142A-1、142A-2、および142A-3に格納する(図8中の(1))。具体的には、リード制御部152Aは、第0不揮発性メモリチップ41A-0から読み出されたユーザデータ62A-0を、第0リードバッファ142A-0に格納する。リード制御部152Aは、第1不揮発性メモリチップ41A-1から読み出されたユーザデータ62A-1を、第1リードバッファ142A-1に格納する。リード制御部152Aは、第2不揮発性メモリチップ41A-2から読み出されたユーザデータ62A-2を、第2リードバッファ142A-2に格納する。リード制御部152Aは、第3不揮発性メモリチップ41A-3から読み出されたユーザデータ62A-3を、第3リードバッファ142A-3に格納する。
【0101】
そして、リード制御部152Aは、図6に示した書き込み順序通りに、ユーザデータ62A-0、62A-1、62A-2、および62A-3をホスト2Aに転送する(図8中の(2))。つまり、リード制御部152Aは、リードバッファ142A-0、142A-1、142A-2、および142A-3に格納されているユーザデータ62A-0、62A-1、62A-2、および62A-3をホスト2Aに転送する順序が、図6に示した書き込み順序に従うように制御する。
【0102】
例えば、図6に示した書き込み順序において、第0不揮発性メモリチップ41A-0に着目する。第0不揮発性メモリチップ41A-0では、(0)から(11)の12ページ分のユーザデータが入力された後に、(48)から(59)の12ページ分のユーザデータが入力されている。
【0103】
そして、(0)から(11)の12ページ分のユーザデータの入力と、(48)から(59)の12ページ分のユーザデータの入力との間には、(12)から(47)の36ページ分のユーザデータが、第1不揮発性メモリチップ41A-1、第2不揮発性メモリチップ41A-2、および第3不揮発性メモリチップ41A-3に入力されている。
【0104】
そのため、読み出し動作では、(0)から(11)の12ページ分のユーザデータがホスト2Aに転送された後、第1不揮発性メモリチップ41A-1、第2不揮発性メモリチップ41A-2、および第3不揮発性メモリチップ41A-3からの(12)から(47)の36ページ分のユーザデータがホスト2Aに転送されるまで、(48)から(59)のユーザデータはホスト2Aに転送されない。
【0105】
このように、図6に示した書き込み順序で書き込まれたユーザデータを不揮発性メモリチップ41A-0、41A-1、41A-2、および41A-3から読み出し、ホスト2Aに転送する場合、書き込み順序に従ってホスト2Aに転送するために、読み出された後にリードバッファ142A-0、142A-1、142A-2、および142A-3で転送を待つユーザデータの量が増加する。そのため、リードバッファ142A-0、142A-1、142A-2、および142A-3として割り当てられる記憶領域のサイズは大きくなる。したがって、図6に示した書き込み順序では、ライトバッファ141Aのサイズを小さくできるものの、リードバッファ142A-0、142A-1、142A-2、および142A-3のサイズが大きくなる可能性がある。
【0106】
これに対して、リードバッファ142A-0、142A-1、142A-2、および142A-3のサイズを小さくするように最適化するための書き込み順序について説明する。
【0107】
図9は、比較例に係るメモリシステムに含まれる複数の不揮発性メモリチップにおける書き込み順序の別の例を示す。ここでは、図6に示した書き込み順序の例と同様に、比較例のメモリシステム3Aが4個の不揮発性メモリチップ41A-0、41A-1、41A-2、および41A-3を含み、4個のプレーンをそれぞれ含む4個の不揮発性メモリチップ41A-0、41A-1、41A-2、および41A-3に対して、TLC方式、およびマルチプレーンプログラムによるFSP動作が行われることを想定する。不揮発性メモリチップ41A-0、41A-1、41A-2、および41A-3のそれぞれにおいて、4個のプレーンにそれぞれ含まれる書き込み対象の4個のブロックを、プレーンブロックPB0、PB1、PB2、およびPB3と称する。
【0108】
図9に示すように、ストリング番号“0”に対応するFSP動作では、まず、第0不揮発性メモリチップ41A-0に対して、以下の(0)から(3)の順序でページデータが入力される。
(0)プレーンブロックPB0用のLowerページデータ
(1)プレーンブロックPB1用のLowerページデータ
(2)プレーンブロックPB2用のLowerページデータ
(3)プレーンブロックPB3用のLowerページデータ
なお、順序を示す番号は、図9の対応するストリング番号と不揮発性メモリチップの組み合わせ(ここでは、ストリング番号“0”と第0不揮発性メモリチップ41A-0の組み合わせ)において、Lowerページ、Middleページ、およびUpperページのいずれか1つと、プレーンブロックPB0、PB1、PB2、およびPB3のいずれか1つとで特定される枠内の数値と対応する。
【0109】
この第0不揮発性メモリチップ41A-0に対する(0)から(3)の順序によるLowerページデータ入力の後、データの書き込み順序は、ページ方向ではなく、チップ方向に進む。
【0110】
したがって、次に、第1不揮発性メモリチップ41A-1に対して、(4)から(7)の順序でLowerページデータが入力される。(4)から(7)の順序で入力される具体的なページデータは、(0)から(3)の順序で入力されるページデータと同様であり、データイン動作の対象が第0不揮発性メモリチップ41A-0から第1不揮発性メモリチップ41A-1に置き換えられる。
【0111】
次いで、第2不揮発性メモリチップ41A-2に対して、(8)から(11)の順序でLowerページデータが入力される。(8)から(11)の順序で入力される具体的なページデータは、(0)から(3)の順序で入力されるページデータと同様であり、データイン動作の対象が第0不揮発性メモリチップ41A-0から第2不揮発性メモリチップ41A-2に置き換えられる。
【0112】
そして、第3不揮発性メモリチップ41A-3に対して、(12)から(15)の順序でLowerページデータが入力される。(12)から(15)の順序で入力される具体的なページデータは、(0)から(3)の順序で入力されるページデータと同様であり、データイン動作の対象が第0不揮発性メモリチップ41A-0から第3不揮発性メモリチップ41A-3に置き換えられる。
【0113】
(0)から(15)の順序で、第0不揮発性メモリチップ41A-0、第1不揮発性メモリチップ41A-1、第2不揮発性メモリチップ41A-2、および第3不揮発性メモリチップ41A-3に対するLowerページデータの入力が行われた後、書き込み順序はページ方向に進む。
【0114】
したがって、(16)から(31)の順序で、第0不揮発性メモリチップ41A-0、第1不揮発性メモリチップ41A-1、第2不揮発性メモリチップ41A-2、および第3不揮発性メモリチップ41A-3に対するMiddleページデータの入力が行われる。そして、(32)から(47)の順序で、第0不揮発性メモリチップ41A-0、第1不揮発性メモリチップ41A-1、第2不揮発性メモリチップ41A-2、および第3不揮発性メモリチップ41A-3に対するUpperページデータの入力が行われる。
【0115】
(0)から(3)、(16)から(19)、および(32)から(35)の順序で入力された12ページ分のデータは、1回のFSP動作で第0不揮発性メモリチップ41A-0に書き込まれるデータである。12ページ分のデータは、入力順に従って、第0不揮発性メモリチップ41A-0のプレーンブロックPB0、PB1、PB2、およびPB3にプログラムされる。
【0116】
同様に、(4)から(7)、(20)から(23)、および(36)から(39)の順序で入力された12ページ分のデータは、1回のFSP動作で第1不揮発性メモリチップ41A-1に書き込まれるデータである。12ページ分のデータは、入力順に従って、第1不揮発性メモリチップ41A-1のプレーンブロックPB0、PB1、PB2、およびPB3にプログラムされる。
【0117】
第2不揮発性メモリチップ41A-2、および第3不揮発性メモリチップ41A-3のそれぞれに対しても同様に、12ページ分のデータがプログラムされる。
【0118】
(0)から(47)の順序で4個の不揮発性メモリチップ41A-0、41A-1、41A-2、および41A-3に対するデータ入力が行われた後、書き込み順序は、ストリング方向に進む。以降、同様にして、増加させたストリング番号に対応するFSP動作が順次行われ得る。
【0119】
図8を参照して前述したように、コントローラ6Aは、ホスト2Aからの読み出し要求を受け付けた場合、不揮発性メモリチップ41A-0、41A-1、41A-2、および41A-3から読み出したユーザデータ62A-0、62A-1、62A-2、および62A-3を、リードバッファ142A-0、142A-1、142A-2、および142A-3に格納する。そして、コントローラ6Aは、リードバッファ142A-0、142A-1、142A-2、および142A-3に格納されたユーザデータ62A-0、62A-1、62A-2、および62A-3を、書き込み順序通りにホスト2Aに転送するように制御する。
【0120】
ここで、図9に示した書き込み順序において、第0不揮発性メモリチップ41A-0に着目する。第0不揮発性メモリチップ41A-0では、(0)から(3)の順序で4ページ分のユーザデータが入力された後に、(16)から(19)の順序で4ページ分のユーザデータが入力されている。
【0121】
そして、(0)から(3)の4ページ分のユーザデータの入力と、(16)から(19)の4ページ分のユーザデータの入力との間には、(4)から(15)の12ページ分のユーザデータが、第1不揮発性メモリチップ41A-1、第2不揮発性メモリチップ41A-2、および第3不揮発性メモリチップ41A-3に入力されている。
【0122】
そのため、読み出し動作では、(0)から(3)の4ページ分のユーザデータがホスト2Aに転送され、第1不揮発性メモリチップ41A-1、第2不揮発性メモリチップ41A-2、および第3不揮発性メモリチップ41A-3から(4)から(15)の12ページ分のユーザデータがホスト2Aに転送された後に、(16)から(19)の4ページ分のユーザデータがホスト2Aに転送される。
【0123】
これに対して、図6に示した書き込み順序を用いた場合の読み出し動作では、前述したように、(0)から(11)のユーザデータがホスト2Aに転送された後、第1不揮発性メモリチップ41A-1、第2不揮発性メモリチップ41A-2、および第3不揮発性メモリチップ41A-3からの(12)から(47)の36ページ分のユーザデータがホスト2Aに転送されるまで、(48)から(59)の12ページ分のユーザデータがリードバッファ142A-0に格納される。
【0124】
したがって、図9に示した書き込み順序で書き込まれたユーザデータを不揮発性メモリチップ41A-0、41A-1、41A-2、および41A-3から読み出し、ホスト2Aに転送する場合、図6に示した書き込み順序が用いられる場合と比較して、読み出された後にリードバッファ142A-0、142A-1、142A-2、および142A-3で転送を待つユーザデータの量が減少する。そのため、リードバッファ142A-0、142A-1、142A-2、および142A-3として割り当てられる記憶領域のサイズは小さくなる。
【0125】
一方で、図9に示す書き込み順序が用いられる場合、コントローラ6Aは、例えば、第0不揮発性メモリチップ41A-0に対する1回のFSP動作を行うために、(0)から(35)までに対応する36ページ分のデータがライトバッファ141Aに蓄積された後、蓄積された36ページ分のデータの不揮発性メモリチップ41Aへの入力を開始する。
【0126】
これに対して、図6に示す書き込み順序が用いられる場合、ライトバッファ141Aとして割り当てられる記憶領域のサイズは、1つの不揮発性メモリチップ41Aに対するFSP動作に必要なデータのサイズ(例えば、12ページ分)で済む。
【0127】
したがって、図9に示した書き込み順序でユーザデータを不揮発性メモリチップ41A-0、41A-1、41A-2、および41A-3に書き込む場合、図6に示した書き込み順序が用いられる場合と比較して、ライトバッファ141Aとして割り当てられる記憶領域のサイズは大きくなる。
【0128】
このように、比較例のメモリシステム3Aでは、図6に示す書き込み順序が用いられる場合、ライトバッファ141Aのサイズを低減できるが、リードバッファ142Aのサイズを低減できない。また、比較例のメモリシステム3Aでは、図9に示す書き込み順序が用いられる場合、リードバッファ142Aのサイズを低減できるが、ライトバッファ141Aのサイズを低減できない。したがって、比較例のメモリシステム3Aでは、ライトバッファ141Aとリードバッファ142Aの双方のサイズを低減することができない。
【0129】
これに対して、第1実施形態のメモリシステム3では、ライトバッファ141のサイズとリードバッファ142のサイズの双方を低減するための書き込み動作が行われる。具体的には、コントローラ6は、不揮発性メモリチップ41に対する1回の書き込み動作で書き込まれる第1サイズのユーザデータよりも小さい第2サイズのユーザデータを、ライトバッファ141から不揮発性メモリチップ41(より詳しくは、ラッチ32)へ転送するデータイン動作を、複数回行う。そして、コントローラ6は、複数回のデータイン動作によって不揮発性メモリチップ41へそれぞれ転送された複数の第2サイズのユーザデータを、メモリセルアレイ33に書き込む。複数の第2サイズのユーザデータの総サイズは、例えば、第1サイズと等しい。
【0130】
このように、メモリシステム3では、第2サイズのユーザデータをライトバッファ141から不揮発性メモリチップ41へ転送するデータ転送動作を、複数回行う。これにより、メモリシステム3では、第2サイズのユーザデータをバッファする記憶領域として、ライトバッファ141だけでなく、不揮発性メモリチップ41(より詳しくは、ラッチ32)も利用される。そのため、メモリシステム3では、例えば、第1サイズのユーザデータがライトバッファ141Aに蓄積されてから不揮発性メモリチップ41Aへのデータイン動作を開始する比較例のメモリシステム3Aと比較して、ライトバッファ141のサイズを低減できる。さらに、メモリシステム3では、図9に示す書き込み順序が用いられることにより、リードバッファ142のサイズも低減できる。したがって、メモリシステム3では、ホスト2が不揮発性メモリチップ41にアクセスする際に用いられるデータバッファ(例えば、ライトバッファ141、およびリードバッファ142)のサイズを低減できる。
【0131】
第1実施形態のメモリシステム3における書き込み動作について具体的に説明する。
【0132】
図10は、不揮発性メモリチップ41への書き込み動作の例を示す。ここでは、図9に示した書き込み順序に従う場合の、4個の不揮発性メモリチップ41-0、41-1、41-2、および41-3へのインターリーブ書き込み動作を例示する。つまり、4個のプレーン45をそれぞれ含む4個の不揮発性メモリチップ41-0、41-1、41-2、および41-3に対して、TLC方式、およびマルチプレーンプログラムによるFSP動作が行われることを想定する。メモリシステム3は、ホスト2からの書き込み要求に応じて書き込み動作を行う。書き込み動作は、例えば、ライト制御部151として機能するCPU15によって制御される。
【0133】
図10に示す例では、第0不揮発性メモリチップ41A-0において、4個のプレーン45-0、45-1、45-2、および45-3にそれぞれに含まれる4個のプレーンブロックPB0、PB1、PB2、およびPB3が、TLC方式での書き込み対象のブロックとして割り当てられている。第0不揮発性メモリチップ41A-0内の4個のプレーンブロックPB0、PB1、PB2、およびPB3にユーザデータを書き込む動作について説明する。
【0134】
ライト制御部151は、ホスト2からの書き込み要求を受け付けたことに応じてホスト2から転送されたユーザデータを、ライトバッファ141に格納する(図10中の(1))。
【0135】
ライト制御部151は、第0不揮発性メモリチップ41-0に対する1回のFSP動作で書き込まれる第1サイズのユーザデータよりも小さい第2サイズのユーザデータを、ライトバッファ141から第0不揮発性メモリチップ41-0のデータ入力用ラッチ(DL)321へ転送する動作(データイン動作)を行う(図10中の(2))。第1サイズのユーザデータは、例えば、12ページ分のデータである。第2サイズのユーザデータは、例えば、1ページ分のユーザデータ61である。また、第2サイズは、例えば、ホスト2からの書き込み要求を受け付けたことに応じてホスト2から受信されるユーザデータのサイズよりも小さい。ライト制御部151は、例えば、ライトバッファ141に第2サイズのユーザデータが蓄積される毎に、データイン動作を行う。ライトバッファ141に格納されているユーザデータは、不揮発性メモリチップ41(より詳しくは、メモリセルアレイ33)にまだ書き込まれていないデータである。ライト制御部151は、第2サイズのユーザデータがデータ入力用ラッチ321に転送されたことに応じ、その第2サイズのユーザデータが格納されていたライトバッファ141内の記憶領域を解放する。解放された記憶領域は、新たなユーザデータの格納に利用可能になる。
【0136】
データイン動作により、プレーン45-0、45-1、45-2、および45-3の全てでデータ入力用ラッチ321に1ページ分のユーザデータ61が格納された場合、ライト制御部151は、プレーン45-0、45-1、45-2、および45-3のそれぞれにおいて、データ入力用ラッチ321に格納されているユーザデータ61を、第0プログラム用ラッチ(第0PL)322-0に移動する動作(データ移動動作)を行う(図10中の(3))。第0プログラム用ラッチ322-0に格納されたデータは、例えば、プレーンブロックPB0、PB1、PB2、およびPB3にLowerページデータとしてプログラムされるデータである。
【0137】
プレーンブロックPB0、PB1、PB2、およびPB3にLowerページデータとしてプログラムされるデータを、プレーン45-0、45-1、45-2、および45-3のそれぞれの第0プログラム用ラッチ322-0に格納するための動作について、より具体的に説明する。
【0138】
まず、例えば、ライトバッファ141に1ページ分のユーザデータ61が蓄積されたことに応じて、ライト制御部151は、1ページ分のユーザデータ61を、ライトバッファ141から第0プレーン45-0のデータ入力用ラッチ321に転送する。ライト制御部151は、転送された1ページ分のユーザデータ61が格納されていたライトバッファ141内の記憶領域を解放する。解放された記憶領域は、新たなユーザデータの格納に利用可能になる。
【0139】
次に、ライトバッファ141に1ページ分のユーザデータ61が新たに蓄積されたことに応じて、ライト制御部151は、1ページ分のユーザデータ61を、ライトバッファ141から第1プレーン45-1のデータ入力用ラッチ321に転送する。ライト制御部151は、転送された1ページ分のユーザデータ61が格納されていたライトバッファ141内の記憶領域を解放する。
【0140】
同様にして、ライト制御部151は、1ページ分のユーザデータ61をライトバッファ141から第2プレーン45-2のデータ入力用ラッチ321に転送する。そして、ライト制御部151は、1ページ分のユーザデータ61をライトバッファ141から第3プレーン45-3のデータ入力用ラッチ321に転送する。
【0141】
プレーン45-0、45-1、45-2、および45-3の全てでデータ入力用ラッチ321に1ページ分のユーザデータ61が格納されたことに応じ、ライト制御部151は、プレーン45-0、45-1、45-2、および45-3のそれぞれにおいて、データ入力用ラッチ321に格納されているユーザデータ61を、第0プログラム用ラッチ322-0に移動する。これにより、プレーンブロックPB0、PB1、PB2、およびPB3のそれぞれにLowerページデータとしてプログラムされるデータが、プレーン45-0、45-1、45-2、および45-3のそれぞれの第0プログラム用ラッチ322-0に格納される。
【0142】
次いで、ライト制御部151は、プレーンブロックPB0、PB1、PB2、およびPB3にMiddleページデータとしてプログラムされるデータを、プレーン45-0、45-1、45-2、および45-3のそれぞれの第1プログラム用ラッチ(第1PL)322-1に格納するための動作を行う。具体的な動作は、前述したLowerページデータを第0プログラム用ラッチ322-0に格納するためのデータイン動作およびデータ移動動作において、第0プログラム用ラッチ322-0を第1プログラム用ラッチ322-1に置き換えた動作に相当する。
【0143】
そして、ライト制御部151は、プレーンブロックPB0、PB1、PB2、およびPB3にUpperページデータとしてプログラムされるデータを、プレーン45-0、45-1、45-2、および45-3のそれぞれの第2プログラム用ラッチ(第2PL)322-2に格納するための動作を行う。具体的な動作は、前述したLowerページデータを第0プログラム用ラッチ322-0に格納するためのデータイン動作およびデータ移動動作において、第0プログラム用ラッチ322-0を第2プログラム用ラッチ322-2に置き換えた動作に相当する。
【0144】
これにより、プレーン45-0、45-1、45-2、および45-3の全てで、第0プログラム用ラッチ322-0にLowerページデータが格納され、第1プログラム用ラッチ322-1にMiddleページデータが格納され、第2プログラム用ラッチ322-2にUpperページデータが格納される。つまり、1ページ分のデータ(すなわち、第2サイズのユーザデータ)を第0不揮発性メモリチップ41-0に入力するページイン動作を12回行うことにより、第0不揮発性メモリチップ41-0に対する1回のFSP動作に必要な12ページ分のデータ(すなわち、第1サイズのデータ)が不揮発性メモリチップ41に入力された状態になる。
【0145】
そして、ライト制御部151は、プレーン45-0、45-1、45-2、および45-3のそれぞれにおいて、プログラム用ラッチ322-0、322-1、および322-2に格納されているデータを、対応するプレーンブロックPB0、PB1、PB2、またはPB3にプログラムする(図10中の(4))。つまり、ライト制御部151は、第0不揮発性メモリチップ41A-0に対するFSP動作を行う。具体的には、ライト制御部151は、第0プレーン45-0において、第0プログラム用ラッチ322-0に格納されているLowerページデータと、第1プログラム用ラッチ322-1に格納されているMiddleページデータと、第2プログラム用ラッチ322-2に格納されているUpperページデータとを、第0プレーンブロックPB0にプログラムする。ライト制御部151は、第1プレーン45-1、第2プレーン45-2、および第3プレーン45-3のそれぞれについても同様にして、Lowerページデータ、Middleページデータ、およびUpperページデータを、対応するブレーンブロックPB1、PB2、またはPB3にプログラムする。
【0146】
以上の書き込み動作により、ライト制御部151は、第0不揮発性メモリチップ41-0に対して、TLC方式、およびマルチプレーンプログラムによるFSP動作を行うことができる。ライト制御部151は、例えば、図9に示した書き込み順序に従って、第1不揮発性メモリチップ41-1、第2不揮発性メモリチップ41-2、および第3不揮発性メモリチップ41-3に対しても同様に、TLC方式、およびマルチプレーンプログラムによるFSP動作を行う。これにより、ライト制御部151は、4個の不揮発性メモリチップ41-0、41-1、41-2、および41-3へのインターリーブ書き込み動作を行うことができる。
【0147】
この書き込み動作では、ライト制御部151は、不揮発性メモリチップ41に対する1回のFSP動作で書き込まれる第1サイズのユーザデータよりも小さい第2サイズのユーザデータを、ライトバッファ141からデータ入力用ラッチ321へ転送する。例えば、ライト制御部151は、ライトバッファ141に蓄積された第2サイズのユーザデータを、逐次、データ入力用ラッチ321に転送する。そして、ライト制御部151は、データ入力用ラッチ321に転送された第2サイズのユーザデータが格納されていたライトバッファ141内の記憶領域を解放する。解放された記憶領域は、新たなユーザデータの格納に利用可能になる。
【0148】
これにより、第1実施形態のメモリシステム3では、例えば、1回のFSP動作で不揮発性メモリチップ41Aにプログラムされる第1サイズのデータ(例えば、12ページ分のデータ)がライトバッファ141Aに蓄積されてから、そのデータを不揮発性メモリチップ41Aに入力する比較例のメモリシステム3Aと比較して、ライトバッファ141のサイズを小さくできる。
【0149】
なお、メモリシステム3における読み出し動作については、ホスト2による読み出し要求に応じて不揮発性メモリチップ41から読み出され、リードバッファ142に格納されたデータが、図6に示した書き込み順序ではなく、図9に示した書き込み順序に従ってホスト2に転送されることを除いて、図8に示した比較例のメモリシステム3Aにおける読み出し動作と同様である。具体的には、リード制御部152は、ホスト2からの読み出し要求を受け付けたことに応じて、例えば、4個の不揮発性メモリチップ41-0、41-1、41-2、および41-3から並列にユーザデータを読み出し、読み出されたユーザデータをリードバッファ142に格納する。そして、リード制御部152は、図9に示した書き込み順序通りに、リードバッファ142に格納されているユーザデータをホスト2に転送する。つまり、リード制御部152は、リードバッファ142に格納されているユーザデータをホスト2に転送する順序が、図9に示した書き込み順序に従うように制御する。これにより、図9を参照して前述したように、リードバッファ142のサイズを低減できる。
【0150】
図11は、不揮発性メモリチップ41に対するコマンドシーケンスの例を示す。このコマンドシーケンスは、1つの不揮発性メモリチップ41に対する1回のFSP動作に対応する。ここでは、不揮発性メモリチップ41に対して、TLC方式、およびマルチプレーンプログラムによるFSP動作が行われることを想定する。このコマンドシーケンスは、例えば、ライト制御部151による制御の下、メモリI/F12によって不揮発性メモリチップ41へ送出される。不揮発性メモリチップ41は、T個のプレーン45を含む。T個のプレーン45にそれぞれに含まれるT個のプレーンブロックPBx、……、PByが、TLC方式での書き込み対象のブロックとして割り当てられている。プレーンブロックPBxを含むプレーン45を、プレーン45-xと称する。プレーンブロックPByを含むプレーン45を、プレーン45-yと称する。
【0151】
図11に示すコマンドシーケンスは、先頭からタイミングAまでのシーケンス、タイミングAからタイミングBまでのシーケンス、およびタイミングBから終端までのシーケンスを含む。先頭からタイミングAまでのシーケンスは、Lowerページデータを入力するためのシーケンスである。タイミングAからタイミングBまでのシーケンスは、Middleページデータを入力するためのシーケンスである。タイミングBから終端までのシーケンスは、Upperページデータを入力して、入力されたLowerページデータ、Middleページデータ、およびUpperページデータをプレーンブロックにプログラムするためのシーケンスである。不揮発性メモリチップ41に対する指示は、例えば、第1コマンド、アドレス、データ、および第2コマンドのセットを単位として行われる。以下では、先頭からタイミングAまでのシーケンス、タイミングAからタイミングBまでのシーケンス、およびタイミングBから終端までのシーケンスを順に説明する。
【0152】
(先頭からタイミングAまでのシーケンス:Lowerページデータの入力)
まず、メモリI/F12は、第1コマンド701、アドレス702、Lowerページデータ703、および第2コマンド704を、不揮発性メモリチップ41のプレーン45-xへ送出する。第1コマンド701は、コマンド“80h”または“85h”である。コマンド“80h”および“85h”は、データ入力開始のコマンドである。アドレス702は、Lowerページデータ703を書き込むプレーンブロックPBxを指定する。Lowerページデータ703は、プレーンブロックPBxに書き込まれるべきLowerページ用のユーザデータである。第2コマンド704は、コマンド“11h”である。コマンド“11h”は、入力されたデータをそのままラッチ32(ここでは、データ入力用ラッチ321)に残しておくコマンドである。なお、各コマンドとして定義された値は一例であり、規格または仕様により定義された値が用いられる。第1コマンド701、アドレス702、Lowerページデータ703、および第2コマンド704により、ライトバッファ141から転送されたLowerページデータ703がプレーン45-xのデータ入力用ラッチ321に格納(入力)される。
【0153】
メモリI/F12は、T個のプレーン45からプレーン45-xおよびプレーン45-yを除いた残りのプレーン45のそれぞれについても同様に、ライトバッファ141から転送されたLowerページデータを、対応するプレーン45内のデータ入力用ラッチ321に格納するためのシーケンスを実行する。
【0154】
そして、メモリI/F12は、第1コマンド705、アドレス706、Lowerページデータ707、および第2コマンド708を、不揮発性メモリチップ41のプレーン45-yへ送出する。第1コマンド705は、コマンド“80h”または“85h”である。アドレス706は、Lowerページデータ707を書き込むプレーンブロックPByを指定する。Lowerページデータ707は、プレーンブロックPByに書き込まれるべきLowerページ用のユーザデータである。第2コマンド708は、コマンド“1Ah”である。コマンド“1Ah”は、T個のプレーン45のデータ入力用ラッチ321に入力されたデータをプログラム用ラッチ322に移動させ、次のページのデータ入力の準備をするコマンドである。
【0155】
第1コマンド705、アドレス706、Lowerページデータ707、および第2コマンド708により、ライトバッファ141から転送されたLowerページデータ707がプレーン45-yのデータ入力用ラッチ321に格納され、さらにT個のプレーン45のそれぞれにおいて、データ入力用ラッチ321に格納されているLowerページデータが第0プログラム用ラッチ322-0に移動される。具体的には、プレーン45-xのデータ入力用ラッチ321に格納されているLowerページデータ703が、プレーン45-xの第0プログラム用ラッチ322-0に移動される。また、プレーン45-yのデータ入力用ラッチ321に格納されているLowerページデータ707が、プレーン45-yの第0プログラム用ラッチ322-0に移動される。したがって、先頭からタイミングAまでのシーケンスにより、T個のプレーン45の全てで、第0プログラム用ラッチ322-0にLowerページデータが格納された状態になる。
【0156】
(タイミングAからタイミングBまでのシーケンス:Middleページデータの入力)
次いで、メモリI/F12は、第1コマンド709、アドレス710、Middleページデータ711、および第2コマンド712を、不揮発性メモリチップ41のプレーン45-xへ送出する。第1コマンド709は、コマンド“80h”または“85h”である。アドレス710は、Middleページデータ711を書き込むプレーンブロックPBxを指定する。Middleページデータ711は、プレーンブロックPBxに書き込まれるべきMiddleページ用のユーザデータである。第2コマンド712は、コマンド“11h”である。第1コマンド709、アドレス710、Middleページデータ711、および第2コマンド712により、ライトバッファ141から転送されたMiddleページデータ711がプレーン45-xのデータ入力用ラッチ321に格納される。
【0157】
メモリI/F12は、T個のプレーン45からプレーン45-xおよびプレーン45-yを除いた残りのプレーンブロックのそれぞれについても同様に、対応するプレーン45内のデータ入力用ラッチ321にMiddleページデータを転送するためのシーケンスを実行する。
【0158】
そして、メモリI/F12は、第1コマンド713、アドレス714、Middleページデータ715、および第2コマンド716を、不揮発性メモリチップ41のプレーン45-yへ送出する。第1コマンド713は、コマンド“80h”または“85h”である。アドレス714は、Middleページデータ715を書き込むプレーンブロックPByを指定する。Middleページデータ715は、プレーンブロックPByに書き込まれるべきMiddleページ用のユーザデータである。第2コマンド716は、コマンド“1Ah”である。
【0159】
第1コマンド713、アドレス714、Middleページデータ715、および第2コマンド716により、ライトバッファ141から転送されたMiddleページデータ715がプレーン45-yのデータ入力用ラッチ321に格納され、さらにT個のプレーン45のそれぞれにおいて、データ入力用ラッチ321に格納されているMiddleページデータが第1プログラム用ラッチ322-1に移動される。具体的には、プレーン45-xのデータ入力用ラッチ321に格納されているMiddleページデータ711が、プレーン45-xの第1プログラム用ラッチ322-1に移動される。また、プレーン45-yのデータ入力用ラッチ321に格納されているMiddleページデータ715が、プレーン45-yの第1プログラム用ラッチ322-1に移動される。したがって、タイミングAからタイミングBまでのシーケンスにより、T個のプレーン45の全てで、第1プログラム用ラッチ322-1にMiddleページデータが格納された状態になる。
【0160】
(タイミングBから終端までのシーケンス:Upperページデータの入力、およびプログラム)
次いで、メモリI/F12は、第1コマンド717、アドレス718、Upperページデータ719、および第2コマンド720を、不揮発性メモリチップ41のプレーン45-xへ送出する。第1コマンド717は、コマンド“80h”または“85h”である。アドレス718は、Upperページデータ719を書き込むプレーンブロックPBxを指定する。Upperページデータ719は、プレーンブロックPBxに書き込まれるべきUpperページ用のユーザデータである。第2コマンド720は、コマンド“11h”である。第1コマンド717、アドレス718、Upperページデータ719、および第2コマンド720により、ライトバッファ141から転送されたUpperページデータ719がプレーン45-xのデータ入力用ラッチ321に格納される。
【0161】
メモリI/F12は、T個のプレーン45からプレーン45-xおよびプレーン45-yを除いた残りのプレーン45についても同様に、対応するプレーン45内のデータ入力用ラッチ321にUpperページデータを転送するためのシーケンスを実行する。
【0162】
そして、メモリI/F12は、第1コマンド721、アドレス722、Upperページデータ723、および第2コマンド724を、不揮発性メモリチップ41のプレーン45-yへ送出する。第1コマンド721は、コマンド“80h”または“85h”である。アドレス722は、Upperページデータ723を書き込むプレーンブロックPByを指定する。Upperページデータ723は、プレーンブロックPByに書き込まれるべきUpperページ用のユーザデータである。第2コマンド724は、コマンド“10h”または“15h”である。コマンド“10h”または“15h”は、指定された内容に基づくプログラムを開始するコマンドである。
【0163】
第1コマンド721、アドレス722、Upperページデータ723、および第2コマンド724により、ライトバッファ141から転送されたUpperページデータ723がプレーン45-yのデータ入力用ラッチ321に格納され、T個のプレーン45のそれぞれにおいて、データ入力用ラッチ321に格納されているUpperページデータが第2プログラム用ラッチ322-2に移動され、プログラム用ラッチ322-0、322-1、および322-3にそれぞれ格納されているLowerページデータ、Middleページデータ、およびUpperページデータがプレーンブロックにプログラムされる。
【0164】
具体的には、プレーン45-xのデータ入力用ラッチ321に格納されているUpperページデータ719が、プレーン45-xの第2プログラム用ラッチ322-2に移動される。そして、プレーン45-xにおいて、第0プログラム用ラッチ322-0に格納されているLowerページデータ703、第1プログラム用ラッチ322-1に格納されているMiddleページデータ711、および第2プログラム用ラッチ322-2に格納されているUpperページデータ719が、プレーンブロックPBxにプログラムされる。
【0165】
また、プレーン45-yのデータ入力用ラッチ321に格納されているUpperページデータ723が、プレーン45-yの第2プログラム用ラッチ322-2に移動される。そして、プレーン45-yにおいて、第0プログラム用ラッチ322-0に格納されているLowerページデータ707、第1プログラム用ラッチ322-1に格納されているMiddleページデータ715、および第2プログラム用ラッチ322-2に格納されているUpperページデータ723が、プレーンブロックPByにプログラムされる。
【0166】
以上のコマンドシーケンスにより、メモリI/F12は、T個のプレーン45を含む不揮発性メモリチップ41に対して、TLC方式、およびマルチプレーンプログラムによる1回のFSP動作を行うことができる。このコマンドシーケンスでは、例えば、1ページ分のユーザデータがライトバッファ141に蓄積される毎に、その1ページ分のユーザデータがライトバッファ141から不揮発性メモリチップ41のデータ入力用ラッチ321に転送される。ユーザデータがデータ入力用ラッチ321に転送されたことに応じて、そのユーザデータが格納されていたライトバッファ141内の記憶領域は解放される。また、データ入力用ラッチ321に格納されたユーザデータは、プログラム用ラッチ322に移動される。したがって、メモリシステム3では、不揮発性メモリチップ41に書き込まれるべきユーザデータのバッファとして、ライトバッファ141だけでなく、データ入力用ラッチ321およびプログラム用ラッチ322も利用される。そのため、メモリシステム3では、例えば、不揮発性メモリチップ41Aに1回のFSP動作でプログラムされる全ページ分のユーザデータ(ここでは、T×3ページ分のユーザデータ)がライトバッファ141Aに蓄積されてから、そのユーザデータを不揮発性メモリチップ41Aに入力する比較例のメモリシステム3Aと比較して、ライトバッファ141のサイズを小さくできる。
【0167】
なお、複数の不揮発性メモリチップ41に対するインターリーブ書き込み動作が行われる場合、メモリI/F12は、例えば、複数の不揮発性メモリチップ41のそれぞれに対して、図11に示したコマンドシーケンスを並列に行う。また、前述したコマンドの種類、ラッチ32の数等の構成は一例であり、第1実施形態のメモリシステム3における書き込み動作は、一定量のデータを1つ以上のブロックに一括して書き込む任意の構成に適用できる。
【0168】
図12Aおよび図12Bは、CPU15によって実行される書き込み制御処理の手順の例を示すフローチャートである。書き込み制御処理は、メモリデバイス4にユーザデータを書き込むための処理である。CPU15は、例えば、ホスト2からライトコマンドを受け付けたことに応じて、書き込み制御処理を実行する。ここでは、S個の不揮発性メモリチップ41に並列にユーザデータが書き込まれる場合を例示する。S個の不揮発性メモリチップ41のそれぞれは、T個のプレーン45を含むものとする。Sは、1以上の整数である。Tは、1以上の整数である。また、書き込み制御処理では、データが第1方式でブロック(プレーンブロック)に書き込まれるものとする。第1方式は、1回のプログラム動作でMページのデータが書き込まれる(つまり、メモリセル当たりMビットのデータが書き込まれる)方式である。以下では、Mが2以上の整数であるものとする。
【0169】
まず、CPU15は、変数i、j、およびkのそれぞれを0に設定する(ステップS101)。変数iは、S個の不揮発性メモリチップ41の1つを特定するために用いられる。変数jは、T個のプレーン45の1つを特定するために用いられる。変数kは、1回のプログラム動作で1つのプレーンブロックに書き込まれるMページのデータの内の1ページのデータを特定するために用いられる。例えば、1回のプログラム動作で3ページのデータが1つのプレーンブロックに書き込まれる場合(すなわち、第1方式がTLC方式である場合)、変数kは、Lowerページ、Middleページ、およびUpperページのいずれか1つを特定する。具体的には、例えば、0である変数kはLowerページを示し、1である変数kはMiddleページを示し、2である変数kはUpperページを示す。
【0170】
次に、CPU15は、ライトバッファ141に1ページ分のユーザデータが格納されているか否かを判定する(ステップS102)。
【0171】
ライトバッファ141に1ページ分のユーザデータが格納されていない場合(ステップS102のNo)、CPU15による処理はステップS102に戻る。つまり、CPU15は、ライトバッファ141に1ページ分のユーザデータが格納されるまで待機する。
【0172】
ライトバッファ141に1ページ分のユーザデータが格納されている場合(ステップS102のYes)、CPU15は、1ページ分のユーザデータを、ライトバッファ141から第i不揮発性メモリチップ41内の第jプレーン45のデータ入力用ラッチ321に転送する(ステップS103)。CPU15は、転送されたユーザデータが格納されていたライトバッファ141内の記憶領域を解放する(ステップS104)。CPU15は、変数jに1を加算することにより、変数jを更新する(ステップS105)。そして、CPU15は、更新された変数jが、プレーン数Tと等しいか否かを判定する(ステップS106)。
【0173】
更新された変数jがプレーン数Tより小さい場合(ステップS106のNo)、CPU15による処理はステップS102に戻る。つまり、CPU15は、更新された変数jに基づいて、第i不揮発性メモリチップ41内の第jプレーン45のデータ入力用ラッチ321に1ページ分のユーザデータを転送するための処理をさらに行う。したがって、CPU15は、第i不揮発性メモリチップ41内のT個のプレーン45のそれぞれのデータ入力用ラッチ321に1ページ分のユーザデータを転送するまで、ステップS102からステップS106までの手順を繰り返し行う。
【0174】
更新された変数jがプレーン数Tと等しい場合(ステップS106のYes)、図12Bに示すように、CPU15は、第i不揮発性メモリチップ41内のT個のプレーン45のそれぞれにおいて、データ入力用ラッチ321から第kプログラム用ラッチ322に1ページ分のユーザデータを移動する(ステップS107)。CPU15は、変数jを0に設定する(ステップS108)。そして、CPU15は、変数kが、ページ数Mから1を引いた値と等しいか否かを判定する(ステップS109)。
【0175】
変数kが、ページ数Mから1を引いた値よりも小さい場合(ステップS109のNo)、CPU15は、変数iに1を加算することにより、変数iを更新する(ステップS110)。そして、CPU15は、更新された変数iが不揮発性メモリチップ数Sと等しいか否かを判定する(ステップS111)。
【0176】
更新された変数iが不揮発性メモリチップ数Sよりも小さい場合(ステップS111のNo)、図12Aに示すように、CPU15による処理はステップS102に戻る。つまり、CPU15は、更新された変数iに基づいて、第i不揮発性メモリチップ41について、プレーン45毎の第kプログラム用ラッチ322-kに1ページ分のユーザデータを転送するための処理をさらに行う。
【0177】
更新された変数iが不揮発性メモリチップ数Sと等しい場合(ステップS111のYes)、CPU15は、変数iを0に設定する(ステップS112)。そして、CPU15は、変数kに1を加算することにより、変数kを更新し(ステップS113)、図12Aに示すように、ステップS102に戻る。つまり、CPU15は、更新された変数kに基づいて、S個の不揮発性メモリチップ41のそれぞれについて、プレーン45毎の第kプログラム用ラッチ322-kに1ページ分のユーザデータを転送するための処理をさらに行う。
【0178】
また、変数kが、ページ数Mから1を引いた値と等しい場合(ステップS109のYes)、CPU15は、第i不揮発性メモリチップ41に対するFSP動作を行う(ステップS114)。変数kが、ページ数Mから1を引いた値と等しい場合、第i不揮発性メモリチップ41内のT個のプレーン45のそれぞれのM個のプログラム用ラッチ322には、第i不揮発性メモリチップ41に対する1回のFSP動作で書き込まれるべきユーザデータが格納されている。CPU15は、FSP動作において、格納されているユーザデータを、T個のプレーン45にそれぞれ含まれるT個のプレーンブロックにプログラムする。つまり、T個のプレーン45のそれぞれにおいて、M個のプログラム用ラッチ322にそれぞれ格納されているMページのユーザデータが、対応するプレーン45内のプレーンブロックに書き込まれる。
【0179】
次いで、CPU15は、変数iに1を加算することにより、変数iを更新する(ステップS115)。CPU15は、更新された変数iが不揮発性メモリチップ数Sと等しいか否かを判定する(ステップS116)。
【0180】
更新された変数iが不揮発性メモリチップ数Sよりも小さい場合(ステップS116のNo)、図12Aに示すように、CPU15による処理はステップS102に戻る。つまり、CPU15は、更新された変数iに基づいて、第i不揮発性メモリチップ41について、プレーン45毎の第kプログラム用ラッチ322-kに1ページ分のユーザデータを転送するための処理をさらに行う。
【0181】
更新された変数iが不揮発性メモリチップ数Sと等しい場合(ステップS116のYes)、CPU15は、後続するストリングへのデータ書き込みがあるか否かを判定する(ステップS117)。例えば、CPU15は、ホスト2による書き込み要求に応じて、後続するストリングにデータを書き込む必要があるか否かを判定する。
【0182】
後続するストリングへのデータ書き込みがある場合(ステップS117のYes)、図12Aに示すように、CPU15による処理はステップS101に戻り、その後続するストリングへのデータ書き込みのための処理が行われる。
【0183】
後続するストリングへのデータ書き込みがない場合(ステップS117のNo)、CPU15は書き込み制御処理を終了する。
【0184】
以上の書き込み制御処理により、CPU15は、S個の不揮発性メモリチップ41のそれぞれに対するFSP動作を並列に行う場合に、メモリシステム3に設けられるライトバッファ141のサイズを低減できる。具体的には、CPU15は、1回のFSP動作で書き込まれる全ユーザデータがライトバッファ141に蓄積されることを待つことなく、ライトバッファ141に格納された1ページ分のユーザデータをデータ入力用ラッチ321に転送する。CPU15は、データ入力用ラッチ321に格納された1ページ分のユーザデータをさらに、プログラム用ラッチ322に転送する。これにより、1回のFSP動作で書き込まれるユーザデータがラッチ32に保持され、ライトバッファ141に滞留する時間が短縮されるので、メモリシステム3に設けられるライトバッファ141のサイズを低減できる。
【0185】
さらに、S個の不揮発性メモリチップ41に対する書き込み順序として、図9に示した書き込み順序が用いられることにより、リードバッファ142のサイズも低減できる。
【0186】
したがって、メモリシステム3では、ホスト2が不揮発性メモリチップ41にアクセスする際に用いられるデータバッファのサイズを低減できる。
【0187】
(第2実施形態)
第1実施形態のメモリシステム3では、コントローラ6は、不揮発性メモリチップ41に対する1回の書き込み動作(例えば、1回のFSP動作)で書き込まれる第1サイズのユーザデータよりも小さい第2サイズのユーザデータを、ライトバッファ141からラッチ32へ転送するデータ転送動作を、複数回行う。そして、コントローラ6は、複数回のデータ転送動作でラッチ32にそれぞれ転送された複数の第2サイズのユーザデータをメモリセルアレイ33に書き込む。
【0188】
これに対して、第2実施形態のメモリシステム3は、ホスト2から受信された後、不揮発性メモリチップ41のメモリセルアレイ33にまだ書き込まれていないユーザデータのサイズ(第3サイズ)が第1サイズ未満である間に、ホスト2からユーザデータの不揮発化要求を受け付けた場合に、ユーザデータを不揮発化するための構成をさらに備える。
【0189】
第2実施形態に係るメモリシステム3の構成は、第1実施形態のメモリシステム3と同様である。第2実施形態のメモリシステム3と第1実施形態のメモリシステム3とでは、第2実施形態のメモリシステム3がユーザデータを不揮発化するための構成を備える点が異なる。以下、第1実施形態と異なる点を主に説明する。
【0190】
コントローラ6のライト制御部151は、第2サイズのユーザデータがライトバッファ141に蓄積されたことに応じ、その第2サイズのユーザデータを不揮発性メモリチップ41のデータ入力用ラッチ321に転送する。つまり、ライト制御部151は、不揮発性メモリチップ41に対する1回のFSP動作で書き込まれる第1サイズのユーザデータをホスト2から受信する前に、不揮発性メモリチップ41へのデータ入力を開始する。この場合、不揮発性メモリチップ41へのデータ入力を開始した後に、1回のFSP動作に必要なユーザデータをホスト2から受信できるとは限らない。
【0191】
ライト制御部151は、ホスト2から受信された後、不揮発性メモリチップ41のメモリセルアレイ33にまだ書き込まれていないユーザデータの第3サイズが第1サイズ未満である間に、ホスト2からユーザデータの不揮発化要求(例えば、フラッシュコマンド)を受け付けた場合、第1サイズから第3サイズを引いた第4サイズのダミーデータを、不揮発性メモリチップ41のラッチ32へ転送する。そして、ライト制御部151は、第3サイズのユーザデータと第4サイズのダミーデータとをメモリセルアレイ33に書き込む。
【0192】
これにより、不揮発性メモリチップ41へのデータ入力を開始した後、1回のFSP動作に必要なユーザデータをホスト2から受信する前に、ホスト2から不揮発化要求を受け付けた場合にも、ホスト2から受信したユーザデータを不揮発化できる。
【0193】
したがって、第2実施形態のメモリシステム3では、ライトバッファ141およびリードバッファ142のサイズを小さくできると共に、ホスト2からの不揮発化要求に応じた処理も実行できる。
【0194】
図13Aおよび図13Bは、CPU15(より詳しくは、ライト制御部151)によって実行される不揮発化処理の手順の例を示すフローチャートである。不揮発化処理は、ホスト2から受信された後、不揮発性メモリチップ41にまだ書き込まれていないユーザデータを不揮発化する(すなわち、不揮発性メモリチップ41に書き込む)ための処理である。CPU15は、例えば、図12Aおよび図12Bを参照して前述した書き込み制御処理を実行している間にホスト2から不揮発化要求を受け付けたことに応じて、不揮発化処理を実行する。不揮発化処理で用いられる変数i、j、およびkの値には、実行中の書き込み制御処理における変数i、j、およびkの値がそれぞれ用いられるものとする。また、不揮発性メモリチップ数S、プレーン数T、およびページ数Mは、書き込み制御処理と共通である。
【0195】
まず、CPU15は、ライトバッファ141にユーザデータが格納されているか否かを判定する(ステップS201)。
【0196】
ライトバッファ141にユーザデータが格納されている場合(ステップS201のYes)、CPU15は、ライトバッファ141に格納されているユーザデータが、1ページ以上のユーザデータであるか否かを判定する(ステップS202)。
【0197】
ライトバッファ141に格納されているユーザデータが、1ページ以上のユーザデータである場合(ステップS202のYes)、CPU15は、1ページ分のユーザデータをライトバッファ141から第i不揮発性メモリチップ41内の第jプレーン45のデータ入力用ラッチ321に転送し(ステップS203)、ステップS205に進む。
【0198】
ライトバッファ141に格納されているユーザデータが、1ページ未満のユーザデータである場合(ステップS202のNo)、CPU15は、そのユーザデータとダミーデータとからなる1ページ分のデータを、第i不揮発性メモリチップ41内の第jプレーン45のデータ入力用ラッチ321に転送し(ステップS204)、ステップS205に進む。
【0199】
そして、CPU15は、転送されたユーザデータが格納されていたライトバッファ141内の記憶領域を解放し(ステップS205)、ステップS207に進む。
【0200】
また、ライトバッファ141にユーザデータが格納されていない場合(ステップS201のNo)、CPU15は、1ページ分のダミーデータを、第i不揮発性メモリチップ41内の第jプレーン45のデータ入力用ラッチ321に転送し(ステップS206)、ステップS207に進む。
【0201】
次いで、CPU15は、変数jに1を加算することにより、変数jを更新する(ステップS207)。そして、CPU15は、更新された変数jが、プレーン数Tと等しいか否かを判定する(ステップS208)。
【0202】
更新された変数jがプレーン数Tより小さい場合(ステップS208のNo)、CPU15による処理はステップS201に戻る。つまり、CPU15は、更新された変数jに基づいて、第i不揮発性メモリチップ41内の第jプレーン45のデータ入力用ラッチ321に1ページ分のデータを転送するための処理をさらに行う。したがって、CPU15は、第i不揮発性メモリチップ41内のT個のプレーン45のそれぞれのデータ入力用ラッチ321に1ページ分のデータを転送するまで、ステップS201からステップS208までの手順を繰り返し行う。なお、転送される1ページ分のデータは、ユーザデータとダミーデータの少なくとも一方で構成される。
【0203】
更新された変数jがプレーン数Tと等しい場合(ステップS208のYes)、図13Bに示すように、CPU15は、第i不揮発性メモリチップ41内のT個のプレーン45のそれぞれにおいて、データ入力用ラッチ321から第kプログラム用ラッチ322に1ページ分のデータを移動する(ステップS107)。
【0204】
以降のステップS210からステップS218までの手順は、図12Aおよび図12Bを参照して前述した書き込み制御処理のステップS108からステップS116までの手順と同様である。図12Bに示した書き込み制御処理のステップS107では、1ページ分のユーザデータがデータ入力用ラッチ321から第kプログラム用ラッチ322-kに転送される。これに対して、図13Bに示す不揮発化処理のステップS209では、ステップS203でデータ入力用ラッチ321に転送された1ページ分のユーザデータと、ステップS204でデータ入力用ラッチ321に転送されたユーザデータとダミーデータからなる1ページ分のデータと、ステップS206で転送された1ページ分のダミーデータのいずれかが、第kプログラム用ラッチ322-kに転送される。転送されたデータは、各不揮発性メモリチップ41におけるFSP動作によって、プレーンブロックに書き込まれる。
【0205】
以上の不揮発化処理により、ホスト2から受け取ったユーザデータの量がFSP動作に必要なデータ量に満たない場合にも、CPU15は、不揮発化要求に応じて、ホスト2から受け取ったユーザデータを不揮発化できる。CPU15は、ダミーデータをデータ入力用ラッチ321およびプログラム用ラッチ322に転送することにより、FSP動作に必要なデータを不揮発性メモリチップ41に入力できる。
【0206】
(第3実施形態)
第1実施形態のメモリシステム3では、コントローラ6が、不揮発性メモリチップ41に対する1回の書き込み動作で書き込まれる第1サイズのユーザデータよりも小さい第2サイズのユーザデータを、ライトバッファ141からラッチ32へ転送するデータ転送動作を、複数回行う。そして、コントローラ6は、複数回のデータ転送動作でラッチ32にそれぞれ転送された複数の第2サイズのユーザデータを第1方式でメモリセルアレイ33に書き込む。
【0207】
また、第2実施形態のメモリシステム3は、ホスト2から受信された後、不揮発性メモリチップ41のメモリセルアレイ33にまだ書き込まれていないユーザデータの第3サイズが第1サイズ未満である間に、ホスト2からデータの不揮発化要求を受け付けた場合に、ユーザデータにダミーデータを加えたデータを第1方式で不揮発化するための構成を備える。
【0208】
これに対して、第3実施形態のメモリシステム3は、ラッチ32に入力済みのユーザデータが第1サイズ未満である間に、ホスト2からデータの不揮発化要求を受け付けた場合、ラッチ32に入力済みのユーザデータを、第1方式とは異なる第2方式で不揮発化するための構成を備える。
【0209】
第3実施形態に係るメモリシステム3の構成は、第1および第2実施形態のメモリシステム3と同様である。第3実施形態のメモリシステム3と第1および第2実施形態のメモリシステム3とでは、第3実施形態のメモリシステム3がユーザデータを第2方式で不揮発化するための構成を備える点が異なる。以下、第1および第2実施形態と異なる点を主に説明する。
【0210】
コントローラ6のライト制御部151は、不揮発性メモリチップ41に対する1回の書き込み動作で書き込まれる第1サイズのユーザデータよりも小さい第2サイズのユーザデータを、ライトバッファ141から不揮発性メモリチップ41のラッチ32へ転送するデータ転送動作を、複数回行う。そして、ライト制御部151は、複数の第2サイズのユーザデータを第1方式でメモリセルアレイ33に書き込む。
【0211】
ライト制御部151は、不揮発性メモリチップ41のラッチ32へ転送され、且つメモリセルアレイ33にまだ書き込まれてない1つ以上の第2サイズのユーザデータの総サイズが第1サイズ未満である間に、ホスト2からユーザデータの不揮発化要求を受け付けた場合、ラッチ32に入力済みのユーザデータの少なくとも一部を、第1方式とは異なる第2方式で不揮発化する。ラッチ32に入力済みのユーザデータは、例えば、データ入力用ラッチ321、第0プログラム用ラッチ322-0、第1プログラム用ラッチ322-1、および第2プログラム用ラッチ322-2の少なくともいずれかに格納されているユーザデータである。具体的には、ライト制御部151は、ラッチ32に入力済みのユーザデータの少なくとも一部を、第1方式での書き込み対象のブロック(例えば、プレーンブロックPB0、PB1、PB2、またはPB3)が含まれるプレーン45内の別のブロックに、第2方式で書き込む。
【0212】
第1方式は、メモリセル当たりにMビットのデータが書き込まれる方式である。第2方式は、メモリセル当たりにNビットのデータが書き込まれる方式である。Mは、2以上の整数である。Nは、Mより小さい数である。例えば、第1方式としてTLC方式が用いられる場合、第2方式としてSLC方式が用いられる。したがって、第2方式での1回のプログラム動作で必要なデータのサイズは、第1方式での1回のプログラム動作で必要なデータのサイズよりも小さい。
【0213】
図14は、不揮発性メモリチップ41に対するコマンドシーケンスの例を示す。このコマンドシーケンスは、1つの不揮発性メモリチップ41に対する1回の不揮発化動作に対応する。ここでは、複数のプレーン45を含む不揮発性メモリチップ41に対して、不揮発化動作が行われることを想定する。このコマンドシーケンスは、例えば、ライト制御部151による制御の下、メモリI/F12によって不揮発性メモリチップ41へ送出される。不揮発性メモリチップ41に対する指示は、例えば、第1プリフィックスコマンド、第2プリフィックスコマンド、第1コマンド、アドレス、および第2コマンドのセットを単位として行われる。
【0214】
まず、メモリI/F12は、第1プリフィックスコマンド801、第2プリフィックスコマンド802、第1コマンド803、アドレス804、および第2コマンド805を、不揮発性メモリチップ41へ送出する。第1プリフィックスコマンド801は、例えば、コマンド“01h”、“02h”、および“03h”のいずれかである。コマンド“01h”、“02h”、および“03h”は、データ入力用ラッチ321とプログラム用ラッチ322-0、322-1、および322-2の内の、プログラムされるべきデータが格納されているラッチ32を指定するコマンドである。第1プリフィックスコマンド801で指定されたラッチ32を、第1対象ラッチ32と称する。第1対象ラッチ32に格納されているデータを、第1データと称する。第2プリフィックスコマンド802は、例えば、コマンド“A2h”である。コマンド“A2h”は、データをプログラムする第2方式を指定するコマンドである。第1コマンド803は、コマンド“80h”または“85h”である。コマンド“80h”および“85h”は、データ入力開始のコマンドである。アドレス804は、第1データを第2方式でプログラムするブロック(以下、第1ブロックと称する)を指定する。第1ブロックは、第1データが第1方式でプログラムされる予定であったブロックを含むプレーン45内の別のブロックである。アドレス804は、第1データを第2方式でプログラムする第1ブロック内のストリングをさらに指定し得る。第2コマンド805は、例えば、コマンド“11h”である。コマンド“11h”は、入力されたデータをそのままラッチ32に残しておくコマンドである。メモリI/F12は、不揮発性メモリチップ41に含まれる他のプレーン45に対する不揮発化動作を並列に行う場合、第2コマンド805としてコマンド“11h”を送出する。
【0215】
第1プリフィックスコマンド801、第2プリフィックスコマンド802、第1コマンド803、アドレス804、および第2コマンド805により、第1対象ラッチ32に格納されている第1データを、第2方式で第1ブロック(より詳しくは、第1ブロック内のストリング)にプログラムすることが指定される。
【0216】
メモリI/F12は、別のプレーン45についても同様に、いずれかのラッチ32に入力済みのデータを、第1方式でプログラムされる予定であったブロックとは別のブロックに、第2方式でプログラムすることを指定するためのシーケンスを実行する。
【0217】
そして、メモリI/F12は、第1プリフィックスコマンド806、第2プリフィックスコマンド807、第1コマンド808、アドレス809、および第2コマンド810を、不揮発性メモリチップ41へ送出する。第1プリフィックスコマンド806は、例えば、コマンド“01h”、“02h”、および“03h”のいずれかである。第1プリフィックスコマンド806で指定されたラッチ32を、第2対象ラッチ32と称する。第2対象ラッチ32に格納されているデータを、第2データと称する。第2プリフィックスコマンド807は、例えば、コマンド“A2h”である。第1コマンド808は、コマンド“80h”または“85h”である。アドレス809は、第2データを第2方式でプログラムするブロック(以下、第2ブロックと称する)を指定する。第2ブロックは、第2データが第1方式でプログラムされる予定であったブロックを含むプレーン45内の別のブロックである。アドレス809は、第2データを第2方式でプログラムする第2ブロック内のストリングをさらに指定し得る。第2コマンド810は、例えば、コマンド“10h”である。コマンド“10h”は、指定された内容に基づくプログラムを開始するコマンドである。
【0218】
第1プリフィックスコマンド806、第2プリフィックスコマンド807、第1コマンド808、アドレス809、および第2コマンド810により、指定されたラッチ32に格納されているデータが、指定されたブロック(より詳しくは、指定されたブロック内の指定されたストリング)に、指定された方式でプログラムされる。具体的には、第1対象ラッチ32に格納されている第1データが第2方式で第1ブロックにプログラムされる。また、第2対象ラッチ32に格納されている第2データが第2方式で第2ブロックにプログラムされる。なお、指定されたラッチ32がデータ入力用ラッチ321である場合、データ入力用ラッチ321に格納されているデータは、プログラム用ラッチ322に移動された後に、指定されたブロックにプログラムされてもよい。
【0219】
なお、各プレーン45のデータ入力用ラッチ321およびプログラム用ラッチ322に、第2方式の1回のプログラム動作でプログラムされるサイズを超えるデータが格納されている場合には、メモリI/F12は、図14に示したコマンドシーケンスを、第1プリフィックスコマンド801および806で指定するラッチ32を変更しながら、繰り返し実行する。第2方式の1回の書き込み動作で書き込まれるサイズのデータは、例えば、SLC方式の1回の書き込み動作では、1ページ分のデータである。
【0220】
以上のコマンドシーケンスにより、メモリI/F12は、複数のプレーン45を含む不揮発性メモリチップ41に対して不揮発化動作を行うことができる。このコマンドシーケンスでは、メモリI/F12は、ラッチ32に入力済みのデータを第2方式(例えば、SLC方式)でブロックに書き込む。つまり、メモリI/F12は、FSP動作でデータをプログラムする場合の制約無しに、例えば、1ページ分のデータをSLC方式でブロックに書き込むことができる。また、ラッチ32に入力済みのデータを第1方式(例えば、TLC方式)で書き込むために、ダミーデータを不揮発性メモリチップ41に入力する必要もない。したがって、メモリシステム3では、ラッチ32に入力済みのデータを高速に不揮発化できる。そのため、メモリシステム3は、ホスト2からの不揮発化要求に対して低レイテンシで応答できる。
【0221】
図15は、CPU15によって実行される不揮発化処理の手順の例を示すフローチャートである。不揮発化処理は、ホスト2から受信された後、不揮発性メモリチップ41にまだ書き込まれていないユーザデータを不揮発化するための処理である。CPU15は、例えば、図12を参照して前述した書き込み制御処理を実行している間にホスト2から不揮発化要求を受け付けたことに応じて、不揮発化処理を実行する。CPU15は、この不揮発化処理を、例えば、S個の不揮発性メモリチップ41のそれぞれに対して行う。不揮発性メモリチップ数S、およびプレーン数Tは、書き込み制御処理と共通である。また、この不揮発化処理では、データが第2方式でブロックにプログラムされるものとする。第2方式は、1回のプログラム動作でNページのデータがプログラムされる(つまり、メモリセル当たりNビットのデータがプログラムされる)方式である。
【0222】
まず、CPU15は、不揮発性メモリチップ41において、各プレーン45のP個のプログラム用ラッチ322にユーザデータが格納されているか否かを判定する(ステップS301)。Pは、1以上であり、且つページ数M以下である整数である。
【0223】
各プレーン45のいずれのプログラム用ラッチ322にもユーザデータが格納されていない場合(ステップS301のNo)、CPU15による処理はステップS306に進む。
【0224】
各プレーン45のP個のプログラム用ラッチ322にユーザデータが格納されている場合(ステップS301のYes)、CPU15は、変数kに0を設定する(ステップS302)。変数kは、ユーザデータが格納されているP個のプログラム用ラッチ322の1つを特定するために用いられる。CPU15は、T個のプレーン45のそれぞれにおいて、第kプログラム用ラッチ322-kに格納されているユーザデータを、第2方式で、対応するプレーン45のブロックにプログラムする(ステップS303)。データが第2方式でプログラムされるブロックは、データが第1方式でプログラムされるブロック(例えば、書き込み制御処理におけるFSP動作の対象のブロック)とは異なるブロックである。CPU15は、第2方式でのユーザデータのプログラムを、T個のプレーン45で並列に行ってもよい。次いで、CPU15は、変数kに1を加算することにより、変数kを更新する(ステップS304)。CPU15は、更新された変数kが、ユーザデータが格納されているプログラム用ラッチ322の数P未満であるか否かを判定する(ステップS305)。
【0225】
更新された変数kがP未満である場合(ステップS305のYes)、CPU15による処理はステップS303に戻る。つまり、CPU15は、更新された変数kに基づいて、第kプログラム用ラッチ322に格納されているユーザデータを第2モードで書き込むための処理をさらに行う。
【0226】
更新された変数kがPと等しい場合(ステップS305のNo)、CPU15による処理はステップS306に進む。
【0227】
次いで、CPU15は、不揮発性メモリチップ41内のQ個のプレーン45において、データ入力用ラッチ321にユーザデータが格納されているか否かを判定する(ステップS306)。Qは、1以上であり、且つプレーン数T以下である整数である。
【0228】
Q個のプレーン45において、データ入力用ラッチ321にユーザデータが格納されている場合(ステップS306のYes)、CPU15は、Q個のプレーン45のそれぞれにおいて、データ入力用ラッチ321に格納されているユーザデータを、第2方式で、対応するプレーン45内のブロックにプログラムし(ステップS307)、不揮発化処理を終了する。なお、Qが2以上である場合、CPU15は、第2方式でのユーザデータの書き込みを、Q個のプレーン45で並列に行ってもよい。また、CPU15は、データ入力用ラッチ321に格納されているユーザデータを、プログラム用ラッチ322に転送した後に、第2方式で書き込んでもよい。
【0229】
いずれのプレーン45のデータ入力用ラッチ321にもユーザデータが格納されていない場合(ステップS306のNo)、CPU15は不揮発化処理を終了する。
【0230】
以上の不揮発化処理により、CPU15は、ホスト2からの不揮発化要求に応じて、データ入力用ラッチ321に格納されているユーザ、およびプログラム用ラッチ322に格納されているユーザデータを、第2方式で不揮発化できる。CPU15は、メモリセル当たりNビットのデータが書き込まれる第2方式でユーザデータを不揮発化することにより、メモリセル当たりMビットのデータが書き込まれる第1方式でユーザデータおよびダミーデータを不揮発化する場合と比較して、低レイテンシで不揮発化要求に応答できる。また、第2方式に対応する小さなサイズのデータ単位(例えば、4KB単位)でデータをプログラムするので、例えば、ダミーデータを、FSP動作を行うために必要なデータとして不揮発性メモリチップ41に入力する必要がない。なお、CPU15は、ホスト2からの不揮発化要求に応じて、ライトバッファ141に格納されているユーザデータについても同様に、第2方式でブロックに書き込み得る。
【0231】
以上説明したように、第1乃至第3実施形態によれば、不揮発性メモリにアクセスする際に用いられるデータバッファのサイズを低減できる。ライト制御部151は、不揮発性メモリチップ41に対する1回の書き込み動作で書き込まれる第1サイズのデータよりも小さい第2サイズのデータを、ライトバッファ141から不揮発性メモリチップ41(より詳しくは、ラッチ32)へ転送するデータ転送動作を、複数回行う。ライト制御部151は、複数回のデータ転送動作によって不揮発性メモリチップ41へそれぞれ転送された複数の第2サイズのデータを、不揮発性メモリチップ41のメモリセルアレイ33に書き込む。
【0232】
これにより、メモリシステム3では、第1サイズのデータがライトバッファ141Aに蓄積されてから不揮発性メモリチップ41Aへのデータ転送を開始する比較例のメモリシステム3Aと比較して、ライトバッファ141のサイズを低減できる。さらに、メモリシステム3では、図9に示す書き込み順序を用いることによりリードバッファ142のサイズも低減できる。したがって、メモリシステム3では、ホスト2が不揮発性メモリチップ41にアクセスする際に用いられるライトバッファ141、およびリードバッファ142のサイズを低減できる。
【0233】
第1乃至第3実施形態に記載された様々な機能の各々は、回路(処理回路)によって実現されてもよい。処理回路の例には、中央処理装置(CPU)のような、プログラムされたプロセッサが含まれる。このプロセッサは、メモリに格納されたコンピュータプログラム(命令群)を実行することによって、記載された機能それぞれを実行する。このプロセッサは、電気回路を含むマイクロプロセッサであってもよい。処理回路の例には、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、マイクロコントローラ、コントローラ、他の電気回路部品も含まれる。これら実施形態に記載されたCPU以外の他のコンポーネントの各々もまた処理回路によって実現されてもよい。
【0234】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0235】
1…情報処理システム、2…ホスト、3…メモリシステム、4…メモリデバイス、5…DRAM、6…コントローラ、11…ホストI/F、12…メモリI/F、13…DRAM I/F、14…SRAM、15…CPU、141…ライトバッファ、142…リードバッファ、151…ライト制御部、152…リード制御部、31…周辺回路、32…ラッチ、321…データ入力用ラッチ、322…プログラム用ラッチ、322-0…第0プログラム用ラッチ、322-1…第1プログラム用ラッチ、322-2…第2プログラム用ラッチ、33…メモリセルアレイ、41…不揮発性メモリチップ、41-0…第0不揮発性メモリチップ、41-1…第1不揮発性メモリチップ、41-2…第2不揮発性メモリチップ、41-3…第3不揮発性メモリチップ、45…プレーン、45-0…第0プレーン、45-1…第1プレーン、45-2…第2プレーン、45-3…第3プレーン、51…FW、52…論理物理アドレス変換テーブル、61…ユーザデータ。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12A
図12B
図13A
図13B
図14
図15