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

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

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

特開2024-141070メモリシステムおよび情報処理システム
<>
  • 特開-メモリシステムおよび情報処理システム 図1
  • 特開-メモリシステムおよび情報処理システム 図2
  • 特開-メモリシステムおよび情報処理システム 図3
  • 特開-メモリシステムおよび情報処理システム 図4
  • 特開-メモリシステムおよび情報処理システム 図5
  • 特開-メモリシステムおよび情報処理システム 図6
  • 特開-メモリシステムおよび情報処理システム 図7
  • 特開-メモリシステムおよび情報処理システム 図8
  • 特開-メモリシステムおよび情報処理システム 図9
  • 特開-メモリシステムおよび情報処理システム 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024141070
(43)【公開日】2024-10-10
(54)【発明の名称】メモリシステムおよび情報処理システム
(51)【国際特許分類】
   G06F 12/00 20060101AFI20241003BHJP
   G06F 12/02 20060101ALI20241003BHJP
【FI】
G06F12/00 550Z
G06F12/00 597U
G06F12/02 530C
G06F12/00 560B
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2023052512
(22)【出願日】2023-03-29
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】100176599
【弁理士】
【氏名又は名称】高橋 拓也
(74)【代理人】
【識別番号】100205095
【弁理士】
【氏名又は名称】小林 啓一
(74)【代理人】
【識別番号】100208775
【弁理士】
【氏名又は名称】栗田 雅章
(72)【発明者】
【氏名】三浦 浩樹
(72)【発明者】
【氏名】押山 直人
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AA10
5B160CB01
5B160NA02
(57)【要約】
【課題】本発明が解決しようとする課題は、メモリセルの寿命を高くすることができるメモリシステムおよび情報処理システム提供することである。
【解決手段】上記課題を達成するために、実施形態のメモリシステムは、ホストに接続可能であって、複数のメモリセルを含む不揮発性メモリと、前記不揮発性メモリを制御するメモリコントローラと、前記不揮発性メモリと接続されるデータバッファと、前記メモリコントローラに設けられたタグ認識回路とを備える。前記タグ認識回路は、前記データバッファ内の第1のデータに記憶状態タグが付与されているかどうかを認識する。
【選択図】図1
【特許請求の範囲】
【請求項1】
ホストに接続可能であって、
複数のメモリセルを含む不揮発性メモリと、
前記不揮発性メモリを制御するメモリコントローラと、
前記不揮発性メモリと接続されるデータバッファと、
前記メモリコントローラに設けられたタグ認識回路と、
を備え、
前記タグ認識回路は、
前記データバッファ内の第1のデータに記憶状態タグが付与されているかどうかを認識する
メモリシステム。
【請求項2】
前記第1のデータは前記不揮発性メモリへ書き込むライトデータであり、
前記タグ認識回路は、前記第1のデータに前記記憶状態タグが付与されていることを認識した場合、前記メモリコントローラに対して前記記憶状態タグに応じた第1のコマンドを送信し、
前記メモリコントローラは、前記第1のコマンドを受信すると、前記第1のデータを前記記憶状態タグに応じた書き込みモードで前記メモリセルに対して書き込みを行う制御を行う、
請求項1に記載のメモリシステム。
【請求項3】
前記第1のデータは前記不揮発性メモリへ書き込むライトデータであり、
前記メモリコントローラは、ライトのリクエストが行われた場合に、前記タグ認識回路へ前記データバッファにアクセスするコマンドを送る、
請求項1に記載のメモリシステム。
【請求項4】
前記メモリシステムは、前記メモリコントローラに設けられたタグ付与回路をさらに備え、
前記タグ付与回路は、
前記タグ認識回路が前記第1のデータに前記記憶状態タグが付与されていることを認識しなかった場合、前記第1のデータに第1の記憶状態タグを付与する、
請求項3に記載のメモリシステム。
【請求項5】
前記タグ付与回路は、前記第1のデータの管理データに前記第1の記憶状態タグを付与する、
請求項4に記載のメモリシステム。
【請求項6】
前記第1のデータは前記不揮発性メモリから読み出したリードデータであり、
前記メモリコントローラは、リードのリクエストが行われた場合に、前記タグ認識回路へ前記データバッファにアクセスするコマンドを送る、
請求項1に記載のメモリシステム。
【請求項7】
前記メモリシステムは、前記メモリコントローラに設けられたタグ付与回路をさらに備え、
前記タグ付与回路は、
前記タグ認識回路が前記第1のデータに前記記憶状態タグが付与されていることを認識しなかった場合、前記第1のデータに前記第1のデータを読み出した前記メモリセルの書き込みモードに応じた第2の記憶状態タグを付与する、
請求項6に記載のメモリシステム。
【請求項8】
複数のメモリセルを含む不揮発性メモリと、前記不揮発性メモリを制御するメモリコントローラと、前記不揮発性メモリと接続されるデータバッファと、前記メモリコントローラに設けられたタグ認識回路と、前記メモリコントローラに設けられたタグ付与回路と、を有するメモリシステムと、
前記メモリシステムと接続されるホストと、
を備え、
前記タグ認識回路は、
前記データバッファ内の第1のデータに記憶状態タグが付与されているかどうかを確認し、
前記タグ認識回路が前記第1のデータに前記記憶状態タグが付与されていることを認識した場合、
前記メモリコントローラは、前記第1のデータを前記記憶状態タグに応じた書き込みモードで前記メモリセルに対して書き込みを行う制御、または前記第1のデータを前記ホストに対して送出を行う制御を行い、
前記タグ認識回路が前記第1のデータに前記記憶状態タグが付与されていることを認識しなかった場合、
前記タグ付与回路は、前記第1のデータに対して第1の記憶状態タグ、または第2の記憶状態タグを付与し、
前記メモリコントローラは、前記第1の記憶状態タグが付与された前記第1のデータを前記第1の記憶状態タグに応じた書き込みモードで前記メモリセルに対して書き込みを行う制御、または第2の記憶状態タグが付与された前記第1のデータを前記ホストに対して送出を行う制御を行う、
情報処理システム。
【請求項9】
前記第2の記憶状態タグは、前記第1のデータが前記不揮発性メモリから読み出したデータである場合に、前記第1のデータを読み出した前記メモリセルの書き込みモードに応じた記憶状態タグである、
請求項8に記載の情報処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリシステムおよび情報処理システムに関する。
【背景技術】
【0002】
ストレージデバイスの1つとして、不揮発性メモリを備えるソリッドステートドライブ(SSD)が知られている。SSDは、ホストデバイス(以下、ホストと称する)から受け取ったデータを不揮発性メモリのメモリセルに書き込む。
【0003】
書き込みモードとして、書き込み速度優先の第1の書き込みモードと、書き込み容量優先の第2の書き込みモードを備え、SSD残メモリ容量に応じて書き込みモードを変更するSSDが開発されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許出願公開 第2020/0034067号公報
【特許文献2】特許出願公開 第2012-16407号公報
【特許文献3】米国特許出願公開 第2019/0034105号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明が解決しようとする課題は、メモリセルの寿命を高くすることができるメモリシステムおよび情報処理システム提供することである。
【課題を解決するための手段】
【0006】
上記課題を達成するために、実施形態のメモリシステムは、ホストに接続可能であって、複数のメモリセルを含む不揮発性メモリと、前記不揮発性メモリを制御するメモリコントローラと、前記不揮発性メモリと接続されるデータバッファと、前記メモリコントローラに設けられたタグ認識回路とを備える。前記タグ認識回路は、前記メモリコントローラから前記データバッファにアクセスするコマンドを受け、前記データバッファ内の第1のライトデータに第1のタグを認識した場合、前記メモリコントローラに第1のコマンドを送信する。
【図面の簡単な説明】
【0007】
図1】実施形態に係るメモリシステムの構成例を示すブロック図。
図2】実施形態に係るメモリシステムに含まれるNAND型フラッシュメモリの一構成例を示す図。
図3】実施形態に係るメモリシステムに含まれるNAND型フラッシュメモリの他の構成例を示す図。
図4】実施形態に係るメモリシステムに含まれるNAND型フラッシュメモリに含まれるSLCブロック群の構成例を示す図。
図5】実施形態に係るメモリシステムの、データを書き込む際のメモリコントローラの動作の一例を示すフローチャート。
図6】実施形態に係るメモリシステムの、データを読み込む際のメモリコントローラの動作の一例を示すフローチャート。
図7】実施形態に係るメモリシステムの、メモリコントローラの動作の例を示すブロック図。
図8】実施形態に係るメモリシステムの、メモリコントローラの動作の別の例を示すブロック図。
図9】実施形態に係るメモリシステムで用いられるLBA範囲-アクセス頻度テーブルの構成例を示す図。
図10】実施形態に係るメモリシステムで用いられるブロック-低頻度アクセス割合テーブルの構成例を示す図。
【発明を実施するための形態】
【0008】
以下の説明は、実施形態の技術的思想を具体化するための装置や方法を例示するものであって、実施形態の技術的思想は、以下に説明する構成要素の構造、形状、配置、材質等に限定されるものではない。当業者が容易に想到し得る変形は、当然に開示の範囲に含まれる。説明をより明確にするため、図面において、各要素のサイズ、厚み、平面寸法又は形状等を実際の実施態様に対して変更して模式的に表す場合もある。複数の図面において、互いの寸法の関係や比率が異なる要素が含まれることもある。複数の図面において、対応する要素には同じ参照数字を付して重複する説明を省略する場合もある。いくつかの要素に複数の呼称を付す場合があるが、これら呼称の例はあくまで例示であり、これらの要素に他の呼称を付すことを否定するものではない。また、複数の呼称が付されていない要素についても、他の呼称を付すことを否定するものではない。なお、以下の説明において、「接続」は直接的な接続のみならず、他の要素を介して間接的に接続されることも意味する。
【0009】
以下、発明を実施するための実施形態について図面を参照して説明する。
【0010】
実施形態に係るストレージデバイスを含む情報処理システム1の構成について説明する。図1は、実施形態に係るストレージデバイスを含む情報処理システム1の構成例を示すブロック図である。ストレージデバイスは、不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。ストレージデバイスの一例は、これに限定されないが、SSDを含む。不揮発性メモリの一例は、これに限定されないが、NAND型フラッシュメモリを含む。以下、不揮発性メモリをNANDメモリと称する。ここでは、半導体ストレージデバイスは、NANDメモリ5を含むメモリシステム3である。
【0011】
情報処理システム1は、ホスト2と、メモリシステム3とを含む。ホスト2は、メモリシステム3を制御するように構成された情報処理装置である。ホスト2の例は、パーソナルコンピュータ、サーバコンピュータ、携帯端末、車載機器である。
【0012】
ここでは、ホスト2にケーブルまたはネットワークを介してメモリシステム3が接続されている例について説明するが、メモリシステム3は、ホスト2に内蔵されてもよい。
【0013】
ホスト2とメモリシステム3とを接続するためのインタフェースとしては、これに限定されないが、SATA(Serial ATA)、SAS(Serial Attached SCSI)、UFS(Universal Flash Storage)、PCI Express(PCIe)(登録商標)、Ethernet(登録商標)を使用し得る。
【0014】
メモリシステム3は、メモリコントローラ4と、NANDメモリ5と、DRAM6と、を備える。
【0015】
NANDメモリ5は、マトリクス状に配置された複数のメモリセルを有する。NANDメモリ5は、2次元構造のフラッシュメモリであってもよいし、3次元構造のフラッシュメモリであってもよい。NANDメモリ5は、複数のNANDメモリチップ(すなわち複数のNANDメモリダイ)を含んでいてもよい。各チップは、メモリセル当たりに1ビット又は複数ビットのデータを格納可能に構成されたフラッシュメモリとして実現され得る。
【0016】
メモリセル当たりに1ビットのデータを格納可能に構成されたフラッシュメモリは、シングルレベルセル(SLC)フラッシュメモリと称される。メモリセル当たりに複数ビットのデータを格納可能に構成されたフラッシュメモリの例は、メモリセル当たりに2ビットのデータを格納可能なマルチレベルセル(MLC、あるいは4LC)フラッシュメモリ、メモリセル当たりに3ビットのデータを格納可能なトリプルレベルセル(TLC、あるいは8LC)フラッシュメモリ、メモリセル当たりに4ビットのデータを格納可能なクワッドレベルセル(QLC、あるいは16LC)フラッシュメモリ、メモリセル当たりに5ビット以上のデータを格納可能なフラッシュメモリ等を含む。なお、メモリセル当たりに2ビット以上のデータを格納するフラッシュメモリをMLCフラッシュメモリと称することもあるが、以下では、メモリセル当たりに2ビットのデータを格納するフラッシュメモリをMLCフラッシュメモリと称する。
【0017】
NANDメモリ5のメモリセルアレイは、複数のブロックBLK0~BLKx-1を含む。ブロックBLK0~BLKx-1の各々は、複数のページP0~Py-1を含む。ページP0~Py-1の各々は、同一ワード線に接続された複数のメモリセルを含む。ブロックBLK0~BLKx-1の各々は、NANDメモリ5からデータを消去するデータ消去動作の単位である。ブロックは、「消去ブロック」、「物理ブロック」、または「物理消去ブロック」と称されることもある。ページは、データ書き込み動作およびデータ読み出し動作の単位である。なお、ワード線をデータ書き込み動作およびデータ読み出し動作の単位としてもよい。
【0018】
ブロックBLK0~BLKx-1の各々に対して許容できる最大プログラム/イレーズサイクル数には限界がある。あるブロックの1回のプログラム/イレーズサイクルは、このブロック内のすべてのメモリセルを消去状態にするための消去動作と、このブロックのページそれぞれにデータを書き込む書き込み動作(より詳しくは、プログラム動作)とを含む。
【0019】
各ブロックにおいて、各ページは、ユーザデータを格納するためのユーザデータ領域と管理データを格納するためのシステム領域とを含んでもよい。ユーザデータ領域は、ホスト2から受信したデータの書き込み及び読み出し動作に使用される領域である。管理データは、例えば、所定の管理サイズ(例えば4KB)単位でブロック内の各データが有効データまたは無効データのいずれであるかを示すデータである。
【0020】
ページサイズは16KB+アルファである。メモリコントローラ4は、4KBユーザデータとこの4KBユーザデータに対応する論理アドレス(例えばLBA)との双方を書き込み先ブロックBLKに書き込む。この場合、各々がLBAと4KBユーザデータとを含む4つのデータセットが同じページに書き込まれてもよい。あるいは、4つの4KBユーザデータがページ内のユーザデータ領域に書き込まれ、これら4つの4KBユーザデータに対応する4つのLBAがこのページ内のシステム領域に書き込まれてもよい。
【0021】
メモリコントローラ4は、System-on-a-chip(SoC)のような回路によって実現されてもよい。メモリコントローラ4は、NANDインタフェース(I/F)13を介して、NANDメモリ5に電気的に接続されている。NAND I/F13は、これに限定されないが、Toggle NANDフラッシュインタフェース、オープンNANDフラッシュインタフェース(ONFI)に準拠している。NAND I/F13は、複数のチャネル(Ch)を介して、NANDメモリ5内の複数のNANDメモリチップにそれぞれ接続されている。複数のNANDメモリチップが並列に駆動されることにより、NANDメモリ5に対するアクセスを広帯域化することができる。NAND I/F13は、ECC処理部17を含んでいる。ここでは、NAND I/F13内にECC処理部17が設けられている例について説明するが、メモリコントローラ4内にECC処理部17が設けられてもよい。
【0022】
ECC処理部17は、NANDメモリ5に書き込まれるデータと、NANDメモリ5から読み出されたデータとを、誤り訂正符号(ECC)で保護するための機能を有する回路として実現され得る。ECC処理部17は、NANDメモリ5に書き込まれるデータにECCを付加する。また、ECC処理部17は、NANDメモリ5から読み出されたデータに付加されたECCを用いて、読み出されたデータに誤りが発生しているか否かを判別し、誤りが発生している場合にはその誤りを訂正する。
【0023】
メモリコントローラ4は、NANDメモリ5を制御する。
【0024】
メモリコントローラ4は、上述したNAND I/F13以外に、ホストインタフェース(I/F)11、CPU12、DRAMインタフェース(I/F)14、ダイレクトメモリアクセスコントローラ(DMAC)15、スタティックRAM(SRAM)16を含む。これらホストI/F11、CPU12、NAND I/F13、DRAM I/F14、DMAC15、SRAM16は、バス10を介して相互接続される。
【0025】
ホストI/F11は、ホスト2との通信を実行するように構成されたホストインタフェース回路である。ホストI/F11は、例えば、SATAインタフェースコントローラ、SASインタフェースコントローラ、PCIeコントローラ、Ethernetコントローラ等である。
【0026】
ホストI/F11は、ホスト2から様々なコマンドを受信する。SATAインタフェースではATA規格で定義されたATAコマンドが使用され、SASインタフェースではSCSI規格で定義されたSCSIコマンドが使用され、PCIeインタフェースおよびEthernetインタフェースではNVM Express(NVMe)(登録商標)規格で規定されたNVMeコマンドが使用される。
【0027】
CPU12は、ホストインタフェース11、NANDコントローラ13、およびDRAMインタフェース14を制御するように構成されたプロセッサである。CPU12は、図示しないROM等に格納されている制御プログラム(ファームウェア)を実行することによって様々な処理を行う。CPU12はライト制御部22、ガベージコレクション(以下、GCと称する)/コンパクション制御部26として機能することができる。
【0028】
メモリシステム3は、揮発性メモリであるランダムアクセスメモリ(RAM)として、ダイナミックランダムアクセスメモリ(DRAM6)を備えている。ここでは、DRAM6を備えている場合について説明するが、スタティックランダムアクセスメモリ(SRAM)のようなランダムアクセスメモリがメモリコントローラ4に内蔵されていてもよい。なお、DRAM6は、メモリコントローラ4に内蔵されていてもよい。
【0029】
DRAM6等のランダムアクセスメモリには、例えば、データバッファとしてライトバッファ32およびリードバッファ33のキャッシュ領域とが設けられている。さらに、DRAM6等のランダムアクセスメモリには、処理中に用いられる各種の値や、各種のテーブル(ルックアップテーブル34、LBA範囲-アクセス頻度テーブル35、ブロック-低頻度アクセス割合テーブル36等)の格納領域が設けられてもよい。
【0030】
DRAM6で格納される各種のテーブルは、NANDメモリ5に記憶されている各種のテーブルがメモリシステム3の電源入り時などに展開されたものである。メモリシステム3の初期化処理が終了した後に展開されてもよい。メモリコントローラ4は、DRAM6上で展開された各種のテーブルを用いて処理を行う。メモリコントローラ4は、所定のタイミング(一定期間毎、スタンバイコマンド受信時、フラッシュコマンド受信時、あるいは電源断時等)に各種のテーブルをNANDメモリ5にライトし、NANDメモリ5に記憶されている各種のテーブルを更新する。
【0031】
ライトバッファ32は、ライトデータが一時的に格納される場所である。ライトバッファ32に関する具体的な動作を説明すると、メモリコントローラ4は、ホスト2からのデータの書き込みコマンドを受けると、書き込むデータをライトバッファ32に一時的に格納する。メモリコントローラ4は、ライトバッファ32中のデータを、指定されたアドレスに対応付けたNANDメモリ5内の位置に書き込む。
【0032】
リードバッファ33は、リードデータが一時的に格納される場所である。リードバッファ33に関する具体的な動作を説明すると、メモリコントローラ4は、ホスト2からのデータの読み出しコマンドを受けると、指定されたアドレスに対応するNANDメモリ5の位置からデータを読み出す。メモリコントローラ4は読み出したデータをリードバッファ33に一時的に格納し、リードバッファ33に格納されたデータをホスト2へと送出する。
【0033】
ルックアップ(L2P)テーブル34は、論理物理アドレス変換テーブルとして機能する。論理アドレスは、メモリシステム3の論理アドレス空間内の論理アドレスをアドレス指定するためにホスト2によって使用されるアドレスである。論理アドレスとしては、論理ブロックアドレス(LBA:Logical Block Address(Addressing))が使用され得る。L2Pテーブル34は、論理アドレス(以下、LBAと称する)それぞれとNANDメモリ5の物理アドレス(PBA:Physical Block Address)それぞれとの間のマッピングを管理する。
【0034】
LBA範囲-アクセス頻度テーブル35は、図9に示すように、LBA範囲毎にアクセス頻度を管理する。各LBA範囲は開始LBA,終了LBAによって規定されてもよいし、開始LBAとサイズとによって規定されてもよい。
【0035】
ブロック-低頻度アクセス割合テーブル36は、図10に示すように、ブロック(ブロック番号)毎にアクセス頻度が低い有効データの割合(低頻度アクセス割合)を管理する。ブロック-低頻度アクセス割合テーブル36は、例えば、ブロック番号と、高頻度アクセス有効データ量と、低頻度アクセス有効データ量と、低頻度アクセス割合とを含む。高頻度アクセス有効データ量および低頻度アクセス有効データ量は、L2Pテーブル34およびLBA範囲-アクセス頻度テーブル35の更新に応じて、LBA範囲に含まれるLBA毎のアクセス頻度の変更に応じて、増加または減少する。低頻度アクセス割合は、高頻度アクセス有効データ量と低頻度アクセス有効データ量とを用いて算出され、例えばパーセンテージによって表現されてもよい。
【0036】
メモリコントローラ4は、NANDメモリ5のデータ管理及びブロック管理を実行するように構成されたフラッシュトランスレーション層(FTL)として機能し得る。
【0037】
FTLによって実行されるデータ管理は、(1)LBAそれぞれとNANDメモリ5の物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理、(2)NANDメモリ5の制約(例えば、ページ単位のリード/ライト動作とブロック単位の消去動作)を隠蔽するための処理、を含む。
【0038】
メモリコントローラ4は、L2Pテーブル34を使用して、LBAそれぞれと物理アドレスそれぞれとの間のマッピングを管理する。あるLBAに対応する物理アドレスは、このLBAに対応するデータが書き込まれたNANDメモリ5内の最新の物理的な記憶位置を示す。
【0039】
メモリコントローラ4は、ホスト2から読み出し要求を受信した場合、読み出し要求により指定された論理アドレスを上述のアドレス変換テーブルを用いて物理アドレスに変換し、該物理アドレスからの読み出しをNAND I/F13へ指示する。
【0040】
NANDメモリ5においては、ページへのデータ書き込みはそのページが含まれるブロックの1消去サイクル(プログラム/イレーズサイクル)当たり1回のみ可能である。つまり、データが既に書き込まれているブロック内の領域に新たなデータを直接上書きすることができない。そのため、既に書き込まれているデータを更新する場合には、メモリコントローラ4はそのブロック(または別のブロック)内の未書き込み領域に新たなデータを書き込み、そして以前のデータを無効データとして扱う。換言すれば、メモリコントローラ4は、あるLBAに対応する更新データを、このLBAに対応する以前のデータが格納されている物理記憶位置ではなく、別の物理記憶位置に書き込む。そして、メモリコントローラ4は、L2Pテーブル34を更新してこの別の物理記憶位置を示す物理アドレスをこのLBAに関連付けると共に、以前のデータを無効化する。
【0041】
無効データとは、L2Pテーブル34から参照されていない物理的な記憶位置に記憶されているデータを意味する。例えば、L2Pテーブル34から参照されていない物理的な記憶位置に記憶されているデータ(すなわち最新のデータとしてLBAに関連付けられていないデータ)は無効データである。無効データは、もはやホスト2からリードされる可能性が無いデータである。あるLBAに関連付けられた新たな物理アドレスの記憶位置に更新データが格納されると、それまでそのLBAに関連付けられていた物理アドレスの記憶位置に格納されていた有効データは無効データとなり、更新データが有効データとなる。
【0042】
有効データとは、あるLBAに対応する最新のデータを意味する。例えば、L2Pテーブル34から参照されている物理的な記憶位置に記憶されているデータ(すなわち最新のデータとしてLBAに関連付けられているデータ)は有効データである。有効データは、後にホスト2からリードされる可能性があるデータである。
【0043】
FTLによって実行されるブロック管理は、バッドブロック(不良ブロック)の管理と、ウェアレベリング処理と、GC処理を含む。
【0044】
ウェアレベリング処理は、ブロックそれぞれの書き換え回数(プログラム/イレーズサイクルの数)を均一化するための動作である。
【0045】
GC処理は、有効データと無効データとが混在するブロックの個数を減らし且つフリーブロックの個数を増やすための動作である。フリーブロックとは、有効データを含まないブロックを意味する。フリーブロックは、データ消去動作が施された後、新たなデータの書き込み先ブロックとして利用可能なブロックである。一方、有効データを格納しているブロックはアクティブブロックである。
【0046】
NANDメモリ5は、メモリセル当たりに何ビットのデータが書き込まれるかにより異なる複数の書き込みモードにより書き込み処理を実行することができる。書き込みモードは、例えばメモリセル当たりに1ビットのデータが書き込まれる書き込みモード(以下、SLCモードと称する)、メモリセル当たりに2ビットのデータが書き込まれる書き込みモード(以下、MLCモードと称する)、メモリセル当たりに3ビットのデータが書き込まれる書き込みモード(以下、TLCモードと称する)、メモリセル当たりに4ビットのデータが書き込まれる書き込みモード(以下、QLCモードと称する)、メモリセル当たりに5ビット以上のデータが書き込まれる書き込みモード等を含む。
【0047】
例えば、NANDメモリ5は、メモリセル当たりに2ビットのデータを格納可能なMLCフラッシュメモリ(すなわち、4LCフラッシュメモリ)として実現されていてもよい。
【0048】
この場合、通常は、2ページ分のデータである下位ページデータおよび上位ページデータが、同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、メモリセル当たりに2ビットのデータを書き込むことができる。このMLCフラッシュメモリ内の任意の領域(例えば、1つ以上の任意のブロック)は、メモリセル当たりに1ビットのデータのみを格納可能なSLC領域として使用することができる。
【0049】
このSLC領域にデータを書き込む書き込み動作においては、1ページ分のデータのみが同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、SLC領域として使用される各ブロックにおいては、SLCフラッシュメモリ内の各ブロック(すなわち、SLCブロック)と同様に、メモリセル当たりに1ビットのデータのみを書き込むことができる。この結果、SLC領域として使用される各ブロックは、SLCブロックとして機能する。
【0050】
あるいは、NANDメモリ5は、メモリセル当たりに3ビットのデータを格納可能なTLCフラッシュメモリ(8LCフラッシュメモリ)であってもよい。
【0051】
この場合、通常は、3ページ分のデータである下位ページデータ、ミドルページデータ、および上位ページデータが、同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、メモリセル当たりに3ビットのデータを書き込むことができる。このTLCフラッシュメモリ内の任意の領域(例えば、1つ以上の任意のブロック)は、上述のSLC領域として使用されてもよいし、メモリセル当たりに2ビットのデータを格納可能なMLC領域として使用されてもよい。なお、SLC領域およびMLC領域は、ブロックよりも細かい単位(例えば、ワード線の単位、ブロック内のワード線の集合の単位)で設定されてもよい。MLC領域においては、2ページ分のデータのみが同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、MLC領域においては、メモリセル当たりに2ビットのデータのみを書き込むことができる。
【0052】
あるいは、NANDメモリ5は、メモリセル当たりに4ビットのデータを格納可能なQLCフラッシュメモリ(16LCフラッシュメモリ)であってもよい。
【0053】
この場合、通常、4ページ分のデータが、同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、メモリセル当たりに4ビットのデータを書き込むことができる。このQLCフラッシュメモリ内の任意の領域(例えば、1つ以上の任意のブロック)は、上述のSLC領域として使用されてもよいし、上述のMLC領域として使用されてもよいし、あるいは、メモリセル当たりに3ビットのデータを格納可能なTLC領域として使用されてもよい。なお、SLC領域、MLC領域、およびTLC領域は、ブロックよりも細かい単位(例えば、ワード線の単位、ブロック内のワード線の集合の単位)で設定されてもよい。TLC領域においては、3ページ分のデータのみが、同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、TLC領域においては、メモリセル当たりに3ビットのデータを書き込むことができる。
【0054】
各書き込みモードにおけるメモリセル当たりの記憶密度は、SLCモードでは2値(すなわち、ワード線当たり1ページ)であり、MLCモードでは4値(すなわち、ワード線当たり2ページ)であり、TLCモードでは8値(すなわち、ワード線当たり3ページ)であり、QLCモードでは16値(すなわち、ワード線当たり4ページ)である。そして、NANDメモリ5に対するデータの読み出し速度および書き込み速度は、記憶密度が高いほど遅く、記憶密度が低いほど速い。したがって、これら4つのモードでは、QLCモードにおけるデータの読み出しおよび書き込みが最も遅く、SLCモードにおける読み出しおよび書き込みが最も速い。
【0055】
また、NANDメモリ5の寿命(エンデュランス)は、記憶密度が高いほど短く、記憶密度が低いほど長い。記憶密度が低いほど、隣り合う状態に対応する閾値電圧分布間のマージンは広くなり、記憶密度が高いほど、閾値電圧分布間のマージンは狭くなる。広いマージンは、たとえメモリセルに加わるストレスによってこのメモリセルの閾値電圧がずれても、このメモリセルのデータが誤ったデータとして読み出されてしまう確率の上昇を抑制する。
【0056】
そのため、例えば、SLCモードにおける許容可能なメモリセルの個別の疲弊度は、QLCモードにおける許容可能なメモリセルの個別の疲弊度よりも低くなる。したがって、閾値電圧分布間のマージンが広い低記憶密度の書き込みモードを使用した場合は、閾値電圧分布間のマージンが狭い高記憶密度の書き込みモードを使用した場合に比べ、NANDメモリ5の寿命を長くすること(すなわち、許容できる最大プログラム/イレーズサイクル数を増やすこと)ができる。
【0057】
4つのモードでは、QLCモードにおける寿命が最も短くなり、SLCモードにおける寿命が最も長くなる。例えば、QLCモードでデータが書き込まれた場合に許容できる最大プログラム/イレーズサイクル数は数kサイクルであり、SLCモードでデータが書き込まれた場合に許容できる最大プログラム/イレーズサイクル数は数十kサイクルである。
【0058】
なお、NANDメモリ5は、メモリセル当たりに5ビット以上を格納可能に構成されていてもよい。この場合においても、NANDメモリ5内の任意の領域は、メモリセル当たりに4ビット以下のデータのみが書き込まれる領域として使用され得る。
【0059】
各書き込みモードに応じたNANDメモリ5の記憶容量の例を説明する。ここでは、NANDメモリ5に含まれる複数のNANDメモリチップが、メモリセル当たりに4ビットを格納可能に構成されたQLCフラッシュメモリとして実現される場合を想定する。また、NANDメモリ5にQLCモードでデータが書き込まれた場合、NANDメモリ5の記憶容量は512GBであることを想定する。
【0060】
バッドブロック等がない最適な条件下では、TLCモードでデータが書き込まれた場合のNANDメモリ5の記憶容量は384GBであり、MLCモードでデータが書き込まれた場合のNANDメモリ5の記憶容量は256GBであり、SLCモードでデータが書き込まれた場合のNANDメモリ5の記憶容量は128GBである。
【0061】
このように、データがいずれの書き込みモードで書き込まれるかによって、NANDメモリ5の記憶容量は異なる。
【0062】
実施形態では、NANDメモリ5の書き込みモードは、メモリセル当たりに格納可能なビット数が異なる第1、第2の書き込みモードが選択可能となっている。第1の書き込みモードは、メモリセル当たりに格納可能なビット数が少ない、メモリシステム3のライト性能(およびリード性能)を向上させるための性能優先の書き込みモードである。一方、第2の書き込みモードは、メモリセル当たりに格納可能なビット数が多い、記憶容量を増加させるための容量優先の書き込みモードである。NANDメモリ5が書き込みモードとして、SLCモード、MLCモード、TLCモード、QLCモードを備える場合の第1の書き込みモードと第2の書き込みモードの組み合わせの例を示す。
【0063】
(1)第1の組み合わせでは、第1の書き込みモードはSLCモードとし、第2の書き込みモードはMLCモードとする。(2)第2の組み合わせでは、第1の書き込みモードはSLCモードとし、第2の書き込みモードはTLCモードとする。(3)第3の組み合わせでは、第1の書き込みモードはSLCモードとし、第2の書き込みモードはQLCモードとする。(4)第4の組み合わせでは、第1の書き込みモードはMLCモードとし、第2の書き込みモードはTLCモードとする。(5)第5の組み合わせでは、第1の書き込みモードはMLCモードとし、第2の書き込みモードはQLCモードとする。(6)第6の組み合わせでは、第1の書き込みモードはTLCモードとし、第2の書き込みモードはQLCモードとする。
【0064】
以下の説明では、性能優先の第1の書き込みモードはSLCモードであり、容量優先の第2の書き込みモードはTLCモードとする。
【0065】
実施形態では、後述するように、メモリコントローラ4がNANDメモリ5の書き込みモードを指定するように構成されている。
【0066】
NANDメモリ5の書き込み処理の概要を説明する。ここでは、一例として、第1の書き込みモードとしてSLCモード、第2の書き込みモードとしてTLCモードが使用される場合を説明する。NANDメモリ5の各ブロックはTLCブロックとしてもSLCブロックとしても使用可能である。
【0067】
ホスト2からメモリシステム3に送られたライトデータはライトバッファ32に一旦記憶される。ライトバッファ32から読み出されたライトデータはNANDメモリ5の書き込み先ブロックに書き込まれる。
【0068】
図2は、NANDメモリ5の書き込みモードがSLCモードに設定された場合の書き込み処理の一例を示す。書き込みモードがSLCモードに設定された場合、ライトデータはSLC書き込み先ブロック102に書き込まれる。SLC書き込み先ブロック102はSLCブロックである。
【0069】
図3は、NANDメモリ5の書き込みモードがTLCモードに設定された場合の書き込み処理の一例を示す。書き込みモードがTLCモードに設定された場合、ライトデータはTLC書き込み先ブロック126に書き込まれる。TLC書き込み先ブロック126はTLCブロックである。
【0070】
図2及び図3に示すように、NANDメモリ5は、アクティブブロックプール104とフリーブロックプール116を含む。メモリコントローラ4は、NANDメモリ5の各ブロックBLKをアクティブブロックプール104かフリーブロックプール116に割り当てる。アクティブブロックプール104は、1以上のSLCブロック106と1以上のTLCブロック108を含む。フリーブロックプール116は、1以上のフリーブロック118を含む。
【0071】
メモリコントローラ4は、フリーブロックプール116に割り当てられているフリーブロック118のいずれか1つにデータ消去処理を実行した後、当該ブロックをSLC書き込み先ブロック102又はTLC書き込み先ブロック126に割り当てる。
【0072】
メモリコントローラ4は、SLC書き込み先ブロック102又はTLC書き込み先ブロック126に新たなデータを書き込み余地が無くなると、すなわち、SLC書き込み先ブロック102又はTLC書き込み先ブロック126がライトデータで埋まると、SLC書き込み先ブロック102又はTLC書き込み先ブロック126をアクティブブロックプール104に割り当てる。
【0073】
フリーブロックプール116に割り当てられているフリーブロックの数を増やすためにGC/コンパクション処理が実行される。GC/コンパクション処理においては、メモリコントローラ4は、アクティブブロックプール104に割り当てられているSLCブロック106、TLCブロック108のいずれか1のブロックをコピー元ブロック112とする。例えば、メモリコントローラ4は、有効データと無効データとが混在するアクティブブロックの中で有効データが少ないブロックをコピー元ブロックとしてもよい。メモリコントローラ4は、フリーブロックプール116に割り当てられているフリーブロック118のいずれか1のブロックをコピー先ブロック114とする。
【0074】
メモリコントローラ4は、コピー元ブロック112の有効データをコピー先ブロック114にコピーする。メモリコントローラ4は、L2Pテーブル34を更新して、コピーされたコピー元ブロック112の有効データのLBAそれぞれにコピー先ブロック114の物理アドレスをマッピングする。有効データがコピー先ブロック114にコピーされることによって無効データのみを含むことになったコピー元ブロック112はフリーブロックに割り当てられる。
【0075】
なお、各ブロックはTLCブロックとしてもSLCブロックとしても使用可能であるので、SLC書き込み先ブロック102に割り当てられるブロックは特定のブロックに固定する必要はない。SLC書き込み先ブロック102に割り当てられるフリーブロックを生成するためのGC/コンパクション処理のコピー元ブロックはSLCブロックに限らず、TLCブロックでもよい。SLCブロックは、TLCブロックに比べて33%のデータしか格納しておらず、コピーするデータ量が少ないので、コピー元ブロックとして選ばれる可能性が高い。しかし、TLCブロックでも無効データの割合が高く、有効データの割合が低い場合、コピー元ブロックとして選ばれる可能性がある。例えば、ブロックBLK0はSLC書き込み先ブロック102に割り当てられ、SLCアクティブブロック106とされた後、GC/コンパクション処理によりフリーブロック118とされ、次にTLC書き込み先ブロック126に割り当てられてもよい。このような方式をSLC/TLC切り替え方式と称する。SLC/TLC切り替え方式では、書き込みモードがSLCモードの場合でもTLCモードの場合でも、フリーブロックプール116は共通である。
【0076】
これに対して、SLC書き込み先ブロック102に割り当てられるブロックが特定のブロック、例えばブロックBLK0~BLK99に決められている方式もある。この方式をSLC固定方式と称する。SLC固定方式では、SLC書き込み先ブロック用のフリーブロックプールとTLC書き込み先ブロック用のフリーブロックプールとを別々に設ける必要がある。そして、SLC書き込み先ブロック102用のフリーブロックを作るGC/コンパクション処理とTLC書き込み先ブロック126用のフリーブロックを作るGC/コンパクション処理は別々な処理となる。
【0077】
実施形態は、SLC/TLC切り替え方式にもSLC固定方式にも適用可能である。
【0078】
なお、SLCブロックがコピー元ブロック112として選択され、SLCブロック群122のデータがGC処理によってTLCブロックに書き直す処理をコンパクション処理と称することもあるが、この明細書では、アクティブブロックであるコピー元ブロックの有効データをコピー先ブロックにコピーしてコピー元ブロックをフリーブロックとすることによりフリーブロックを生成する処理をGC/コンパクション処理と総称する。
【0079】
NANDメモリ5において、SLCブロックとして使われているブロックの集合をSLCブロック群122と称する。SLCブロック群122は、本来はTLCブロックであるが、一時的にSLCモードによりデータが書き込まれるSLCブロックを含む。SLCブロック群122内のSLCブロックに書き込まれたデータはGC/コンパクション処理によりTLCブロックにTLCモードにより書き直される。
【0080】
図4は、SLCブロック群122を説明する図である。図4(A)は、NANDメモリ5の書き込みモードがSLCモードに設定された場合のSLCブロック群122の一例を示す。この場合、SLCブロック群122は、ライトデータの書き込み先ブロックとされているSLC書き込み先ブロック102と、ライトデータが既に書き込まれたSLCブロック106を含む。NANDメモリ5のSLCブロック群122以外のブロックは、TLCブロック108を含む。
【0081】
図4(B)は、NANDメモリ5の書き込みモードがTLCモードに設定された場合のSLCブロック群122の一例を示す。この場合、SLCブロック群122は、ライトデータが既に書き込まれたSLCブロック106を含む。NANDメモリ5のSLCブロック群122以外のブロックは、TLCブロック108とTLC書き込み先ブロック126を含む。
【0082】
上述したように、SLCブロック102、106の記憶容量はTLCブロック126、108の記憶容量の1/3であるので、SLCブロック群122のブロック数が減ると、メモリシステム3の記憶容量が増加する。
【0083】
メモリコントローラ4がデータをNANDメモリ5に書き込む際の、書き込みモードの推移について説明する。上述したように、第2の書き込みモードはデータの読み出しおよび書き込みが遅く、書き込み可能回数が少ない。そのためメモリコントローラ4は、NANDメモリ5の容量に余裕がある場合、第1の書き込みモードで、今回は例としてSLCモードでSLCブロックにデータを書き込む。
【0084】
メモリコントローラ4は、NANDメモリ5の残容量が少なくなると、GC・コンパクション処理を行う。具体的にはメモリコントローラ4は、第1の書き込みモードで書き込まれたデータを第2のモードで書きこみ、メモリシステム3の記憶容量を増加させる。その際メモリコントローラ4は、LBA範囲-アクセス頻度テーブル35及びブロック-低頻度アクセス割合テーブル36を参照し、アクセス頻度がある一定の値より小さいデータを優先して第2のモードで書き込む。
【0085】
メモリコントローラ4はLBA範囲-アクセス頻度テーブル35及びブロック-低頻度アクセス割合テーブル36に含まれるアクセス頻度を参照してGC・コンパクション処理を行うと記述したが、参照するものはアクセス頻度に限定されない。
【0086】
(実施形態)
【0087】
メモリコントローラ4は、NANDメモリ5の残容量がさらに少なくなると、GC・コンパクション処理を複数回行う。この処理の結果、アクセス頻度の低いデータは、第2のモードで少なくとも1回以上書き込まれる。具体的に説明すると、アクセス頻度の低いデータは、TLCブロックなどのメモリセルの記憶密度が高いブロックに書き込まれる。反対に、アクセス頻度の高いデータは、GC・コンパクション処理が行われないため、SLCブロックなどのメモリセルの記憶密度が低いブロックに書き込まれたままになる。
【0088】
つまり、NANDメモリにデータが書き込まれて十分な時間が経過した場合、SLCブロックに書き込まれているデータはアクセス頻度が高いデータであり、TLCブロックに書き込まれているデータはアクセス頻度が低いデータである。
【0089】
そこで、本実施形態に係るメモリコントローラ4は、タグ管理部18を備えるように構成する。タグ管理部18はタグ認識回路19とタグ付与回路20を含み、バス10と接続される。タグ管理部18は、メモリコントローラ4がデータを読み出す際に、そのデータの管理データに記憶状態タグを付与する。またタグ管理部18は、メモリコントローラ4がデータを書き込む際に、そのデータの管理データに記憶状態タグが付与されている場合、記憶状態タグに対応したブロックにデータを書き込む。
【0090】
記憶状態タグについて説明する。記憶状態タグは、タグ管理部18によって管理される。タグ管理部18のタグ認識回路19は記憶状態タグを認識することができる。メモリコントローラ4がデータをブロックに書き込む際、タグ認識回路19はデータバッファにアクセスし、管理データに含まれる記憶状態タグを検索する。データバッファはライトバッファ32とリードバッファ33を含む。タグ認識回路19が記憶状態タグを認識した場合、メモリコントローラ4に記憶状態が付与されたコマンドを送信する。メモリコントローラ4はコマンドを受信し、記憶状態に対応したブロックにデータを書き込む。
【0091】
またタグ管理部18は、メモリコントローラ4がデータをNANDメモリからデータバッファに読み出す際、読み出したデータに記憶状態タグが付与されていないことを認識した場合、そのデータに対応する管理データに、記憶状態タグを付与する。例えばメモリコントローラ4がデータをSLCブロックから読み出す場合、タグ認識回路19がデータバッファに読み出したデータに記憶状態タグが付与されていないことを認識すると、タグ付与回路20は、SLCタグを読み出したデータの管理データに付与する。メモリコントローラ4がデータをMLC、TLCおよびQLCブロックから読み出す場合についても同様に、タグ認識回路19がデータバッファに読み出したデータに記憶状態タグが付与されていないことを認識した場合、タグ付与回路20は、対応する記憶状態タグを読み出したデータの管理データに付与する。
【0092】
タグ管理部18について、ハードウェアにより実現されてもよいし、ファームウェアにより実現されてもよい。また、タグ管理部18は、タグを認識する機能部分と、タグを付与する機能部分で構成されているが、この二つの機能は1つの回路として実現されてもよいし、異なる二つの回路として実現されてもよい。
【0093】
本実施形態に係るメモリシステムにおける、NANDメモリ5にデータを書き込む際の、メモリコントローラ4の動作の概要について説明する。図5はメモリコントローラ4の動作フローを示している。
【0094】
メモリコントローラ4は、ホストから論理アドレスを指定した書き込み要求を受信する(ステップS501)。メモリコントローラ4は、ライトバッファ32にライトデータを一時的に格納する(ステップS502)。タグ管理部18は、メモリコントローラ4からライトバッファ32内のライトデータを参照するコマンドを受け、ライトデータの中に記憶状態タグがあるかどうかを確認する(ステップS503)。ライトデータの中に記憶状態タグが認識できなかった場合は、タグ管理部18はライトデータにSLCタグを付与する(ステップS504)。タグ管理部18は、メモリコントローラ4のCPU12に記憶状態が付与されたコマンドを送信する(ステップS505)。
【0095】
メモリコントローラ4は受信した論理アドレスを、NANDメモリ5のユーザ領域内の未使用ページの物理アドレスに割り当てる。メモリコントローラ4は、NANDメモリ5が認識可能な書き込みコマンドを発行する。この書き込みコマンドには、データの記憶状態タグに対応した記憶状態のブロックへの書き込み指示が含まれる。ECC処理部17は、受信したライトデータにパリティを付与する。そして、書き込みコマンド、物理アドレス、およびパリティが付与されたライトデータが、書き込み命令としてNANDメモリ5に送信される(ステップS506)。NANDメモリ5は、書き込み命令を受信すると書き込み動作を実行する(ステップS507)。
【0096】
上記一連のステップによって、メモリコントローラ4は、ライトデータに付与されている記憶状態タグにより指定された記憶状態で、データをNANDメモリ5に書き込む。
【0097】
記憶状態タグが付与されていないデータをそのままメモリシステム3に書き込む場合、メモリコントローラ4はまず記憶密度が低いブロックにデータを書き込む。その後メモリコントローラ4は、NANDメモリ5の残容量に応じて、アクセス頻度が低いデータを記憶密度が高いブロックに書き込む。その際、メモリコントローラ4は、GC/コンパクション処理を複数回行う必要がある。
【0098】
一方で、データに記憶状態タグが付与されていれば、メモリコントローラ4は、記憶状態タグが付与されたデータを書き込む際に、その記憶状態タグと対応した記憶状態のブロックにデータを直接書き込むことができる。つまりアクセス頻度が低いデータであって記憶密度が高いブロックの記憶状態タグがメモリセルへの書き込み前に付与されていれば、直接メモリセルの記憶密度が高いブロックに書き込むことができる。そのため記憶状態タグを付与しない方法と比較してGC/コンパクション処理の回数を減らすことができ、メモリセルの寿命を延ばすことができる。
【0099】
次に、本実施形態に係るメモリシステムにおける、NANDメモリ5に記憶されたデータを読み出す際の、メモリコントローラ4の動作の概要について説明する。図6はメモリコントローラ4の動作フローの一例を示すフローチャートである。
【0100】
メモリコントローラ4は、ホストから論理アドレスを指定した読み出し要求を受信する(ステップS601)。メモリコントローラ4は、論理アドレスを指定した読み出し要求をホストI/F11経由で受信した場合に、L2Pテーブル34を用いて読み出し要求で指定された論理アドレスを物理アドレスに変換する。メモリコントローラ4は、変換された物理アドレスからの読み出しをNANDメモリ5へ指示する(ステップS602)。
【0101】
メモリコントローラ4は、NANDI/F13経由でNANDメモリ5からデータを読み出す(ステップS603)。メモリコントローラ4は、リードバッファ33に読み出しデータを一時的に格納する(ステップS604)。
【0102】
メモリコントローラ4は、タグ管理部18にリードバッファ33内の読み出しデータを参照させるコマンドを送信する(ステップS605)。読み出しデータの中に記憶状態タグが確認できなかった場合、タグ管理部18は、記憶されていた状態に対応する記憶状態タグを読み出しデータ内の管理データに付与する(ステップS606)。
【0103】
メモリコントローラ4は、読み出しデータをホストI/F31経由でホスト2へ送信する(ステップS607)。
【0104】
上記一連のステップによって、メモリコントローラ4は、データを読み出す際に記憶状態タグを付与することができる。そのため本実施形態によれば、読み出したデータを再度書き込む際に、メモリコントローラ4は、読み出したデータに付与された記憶状態タグを基に、適切なメモリセルに書き込むことができる。
【0105】
図7のブロック図は、GC・コンパクション処理により記憶状態タグが付与されたデータの記憶状態が変更される場合の処理を示す。例えばSLCブロックに存在し、SLCタグが付与されたデータを、TLCブロックに書き換える場合の、GC・コンパクション処理について記述する。
【0106】
メモリコントローラ4は、SLCブロックに存在するデータをライトデータとしてライトバッファに送る(ステップS701、ステップS702)。メモリコントローラ4は、書き込み先ブロックの記憶状態がTLCであるというコマンドをタグ管理部18に送信する(ステップS703)。タグ管理部18は、ライトバッファ内のライトデータを参照し、記憶状態タグをSLCタグからTLCタグに変更する(ステップS704)。その後メモリコントローラ4は、TLCブロックにライトデータの書き込みを行う(ステップS705)。
【0107】
上述した動作を行うことにより、SLCタグが付与されたデータをTLCブロックに書き込む際、メモリコントローラ4は、記憶状態タグをSLCタグからTLCタグに変更し、データをTLCブロックに書き込むことができる。同様の処理を行うことで、メモリコントローラ4は、NANDメモリ5内のデータの記憶状態と記憶状態タグを、常に一致させることができる。
【0108】
図8のブロック図は、GC・コンパクション処理により、記憶状態タグが付与されていないデータが別のブロックに書き換えられる場合の動作を記述する。例えばSLCブロックに存在しているが、記憶状態タグが付与されていないデータを、別のSLCブロックに書き換える場合の、GC・コンパクション処理について記述する。
【0109】
メモリコントローラ4は、SLCブロックに存在するデータをライトデータとしてライトバッファに送る(ステップS801、ステップS802)。メモリコントローラ4は、書き込み先ブロックの記憶状態がSLCであるというコマンドをタグ管理部18に送信する(ステップS803)。タグ管理部18は、ライトバッファ内のライトデータを参照し、管理データにSLCタグを付与する(ステップS804)。その後メモリコントローラ4は、SLCブロックにライトデータの書き込みを行う(ステップS805)。
【0110】
上述した動作を行うことにより、メモリコントローラ4は、NANDメモリ5内にある記憶状態タグが付与されていないデータに記憶状態タグを付与することができる。
【0111】
なお、本発明は、上述の実施形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
【0112】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これらの実施形態は、その他のさまざまな形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これらの実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0113】
1・・・情報処理システム
2・・・ホスト
3・・・メモリシステム
4・・・メモリコントローラ
5・・・NANDメモリ
6・・・DRAM
10・・・バス
11・・・ホスト I/F
12・・・CPU
13・・・NAND I/F
14・・・DRAM I/F
15・・・DMAC
16・・・SRAM
17・・・ECC処理部
18・・・タグ管理部
19・・・タグ認識回路
20・・・タグ付与回路
22・・・ライト制御部
26・・・GC/コンパクション制御部
32・・・ライトバッファ
33・・・リードバッファ
34・・・L2Pテーブル
35・・・LBA範囲-アクセス頻度テーブル
36・・・ブロック-低頻度アクセス割合テーブル
102・・・SLC書き込み先ブロック
104・・・アクティブブロックプール
106・・・SLCブロック
108・・・TLCブロック
112・・・コピー元ブロック
114・・・コピー先ブロック
116・・・フリーブロックプール
118・・・フリーブロック
122・・・SLCブロック群
126・・・TLC書き込み先ブロック
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10