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

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

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

<>
  • 特開-メモリシステム 図1
  • 特開-メモリシステム 図2
  • 特開-メモリシステム 図3
  • 特開-メモリシステム 図4
  • 特開-メモリシステム 図5
  • 特開-メモリシステム 図6
  • 特開-メモリシステム 図7
  • 特開-メモリシステム 図8
  • 特開-メモリシステム 図9
  • 特開-メモリシステム 図10
  • 特開-メモリシステム 図11
  • 特開-メモリシステム 図12
  • 特開-メモリシステム 図13
  • 特開-メモリシステム 図14
  • 特開-メモリシステム 図15
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023153674
(43)【公開日】2023-10-18
(54)【発明の名称】メモリシステム
(51)【国際特許分類】
   G06F 12/00 20060101AFI20231011BHJP
   G11C 16/04 20060101ALI20231011BHJP
   G11C 16/34 20060101ALI20231011BHJP
【FI】
G06F12/00 550Z
G11C16/04 170
G11C16/34 163
G06F12/00 597U
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022063074
(22)【出願日】2022-04-05
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】安田 哲也
【テーマコード(参考)】
5B160
5B225
【Fターム(参考)】
5B160AA10
5B160AA12
5B160AA14
5B160NA03
5B225BA01
5B225CA27
5B225DD05
5B225DD08
5B225DE08
5B225EA05
5B225FA01
(57)【要約】      (修正有)
【課題】ライト処理性能を安定させるメモリシステムを提供する。
【解決手段】メモリシステム1は、複数の物理ブロックを含む不揮発性メモリ20と、メモリコントローラ10と、を備える。メモリコントローラは、複数の物理ブロックを、複数の第1ブロック集合にそれぞれ複数割り当て、第1ブロック集合が持つ不良物理ブロック数毎に、複数の第1ブロック集合を複数のグループに分け、複数のグループ内の複数の第1ブロック集合をイレース回数でソートしたリストを生成し、不良物理ブロックの基準値を算出し、不揮発性メモリへのライト処理時に、リストを参照し、基準値に基づいて複数のグループから第1ブロック集合を複数選択した第2ブロック集合を生成し、第2ブロック集合の物理ブロックへデータをライトする。
【選択図】図1
【特許請求の範囲】
【請求項1】
複数の物理ブロックを含む不揮発性メモリと、コントローラとを備え、
前記コントローラは、
前記複数の物理ブロックを、複数の第1ブロック集合にそれぞれ複数割り当て、
前記第1ブロック集合が持つ不良物理ブロック数毎に、複数の前記第1ブロック集合を複数のグループに分け、
前記複数のグループ内の複数の前記第1ブロック集合をイレース回数でソートしたリストを生成し、
前記不良物理ブロックの基準値を算出し、
前記不揮発性メモリへのライト処理時に、前記リストを参照し、前記基準値に基づいて前記複数のグループから前記第1ブロック集合を複数選択した第2ブロック集合を生成し、
前記第2ブロック集合の物理ブロックへデータをライトする、
メモリシステム。
【請求項2】
前記コントローラは、
前記不揮発性メモリ全体における前記第1ブロック集合の数と、前記不揮発性メモリ全体における前記不良物理ブロック数と、前記第2ブロック集合における第1ブロック集合の数とに基づいた前記基準値を算出する、
請求項1に記載のメモリシステム。
【請求項3】
前記コントローラは、物理ブロックへライトするデータの訂正符号長に基づいて前記第2ブロック集合を生成する、請求項1に記載のメモリシステム。
【請求項4】
前記コントローラは、前記ライト処理時に、
消去可能な前記第2ブロック集合が含む前記第1ブロック集合について前記リストを更新し、
前記基準値に基づいて前記複数のグループから前記第1ブロック集合を複数選択した第2ブロック集合を生成する、
請求項1に記載のメモリシステム。
【請求項5】
前記リストは前記第1ブロック集合のイレース回数を含み、
消去可能な前記第2ブロック集合が含む前記第1ブロック集合の前記イレース回数は、前記リストを更新した時に1増加する、
請求項4に記載のメモリシステム。
【請求項6】
前記コントローラは、
前記第2ブロック集合を複数含む第3ブロック集合を複数生成し、
前記第3ブロックに含まれる不良物理ブロックの数が、周期値となるように前記第2ブロック集合を選択する、
請求項1に記載のメモリシステム。
【請求項7】
前記周期値は、前記第2ブロック集合の最大不良物理ブロック数に基づいて定められる、請求項6に記載のメモリシステム。
【請求項8】
前記周期値を所定期間毎に更新する、請求項6に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本実施形態は、メモリシステムに関する。
【背景技術】
【0002】
近年、不揮発性メモリを備えるメモリシステムが広く普及している。このようなメモリシステムの1つとして、NAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)が知られている。SSDは、様々なコンピューティングデバイスのメインストレージとして使用されている。
【0003】
不揮発性メモリは、複数の物理ブロックを含む。また、メモリシステムは、不揮発性メモリへ並列アクセスを実現したり、訂正符号を生成したりするために、複数の物理ブロックから構成される物理ブロックの集合を生成する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許第9626289号明細書
【発明の概要】
【発明が解決しようとする課題】
【0005】
物理ブロックの集合には、不良物理ブロックも含まれる可能性がある。物理ブロックの集合間において、物理ブロック集合に含まれる不良物理ブロックの数に偏りがあると、ライト処理の性能が不安定になる。
【0006】
一つの実施形態は、ライト処理性能を安定させることを目的とする。
【課題を解決するための手段】
【0007】
一つの実施形態によれば、メモリシステムは、複数の物理ブロックを含む不揮発性メモリと、コントローラとを備える。コントローラは、複数の物理ブロックを、複数の第1ブロック集合にそれぞれ複数割り当て、第1ブロック集合が持つ不良物理ブロック数毎に、複数の第1ブロック集合を複数のグループに分け、複数のグループ内の複数の第1ブロック集合をイレース回数でソートしたリストを生成し、不揮発性メモリへのライト処理時に、リストを参照し、基準値に基づいて複数のグループから第1ブロック集合を複数選択した第2ブロック集合を生成し、第2ブロック集合の物理ブロックへデータをライトする。
【図面の簡単な説明】
【0008】
図1】第1実施形態にかかるメモリシステムの構成の一例を示す図。
図2】第1実施形態におけるメモリセルアレイの構成を示す回路図。
図3】第1実施形態にかかる各ブロックの関係を示す図。
図4】第1実施形態にかかるメディアブロックテーブルの一例を示す図。
図5】第1実施形態にかかるコンポジションブロックテーブルの一例を示す図。
図6】第1実施形態にかかるフリーブロックリストの一例を示す図。
図7】第1実施形態にかかるフリーブロックリストを概念的に示す図。
図8】第1実施形態にかかるコンポジションブロックの一例を示す図。
図9】第1実施形態にかかる初回起動時のライト処理の処理手順を示すフローチャート。
図10】第1実施形態にかかるブロック解放処理の処理手順を示すフローチャート。
図11】第1実施形態にかかる初回起動以降のライト処理の処理手順を示すフローチャート。
図12】第2実施形態にかかる周期に基づくコンポジションブロックの一例を示す図。
図13】第2実施形態にかかる初回起動時のライト処理の処理手順を示すフローチャート。
図14】第2実施形態にかかるブロック解放処理の処理手順を示すフローチャート。
図15】第2実施形態にかかる初回起動以降のライト処理の処理手順を示すフローチャート。
【発明を実施するための形態】
【0009】
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【0010】
(第1実施形態)
図1は、第1実施形態にかかるメモリシステム1の構成の一例を示す図である。図1に示すように、メモリシステム1は、メモリコントローラ10、NAND型フラッシュメモリ20(以下、「NANDメモリ20」と記載)及びDRAM(Dynamic Random Access Memory)30を備える。メモリコントローラ10は、NANDメモリ20およびDRAM30と接続する。メモリシステム1は、メモリコントローラ10とNANDメモリ20とが1つのパッケージとして構成されるメモリカード等であってもよいし、SSD(Solid State Drive)等であってもよい。メモリシステム1は、ホスト2と接続可能であり、図1ではホスト2と接続された状態が示されている。
【0011】
メモリコントローラ10は、例えばSoC(System on a Chip)として構成され得る。また、メモリコントローラ10は、FPGA(Field Programmable Gate Array)またはASIC(Application Specific Integrated Circuit)を備えていてもよい。メモリコントローラ10は、NANDメモリ20に各種動作を命令することができる。メモリコントローラ10は、外部のホスト2からの要求(リクエスト)に基づいた動作と、ホスト2からの要求に依らない動作とを実行する。メモリコントローラ10の各機能は、プログラムを実行するCPU(Central Processing Unit)により実現されてもよく、専用のハードウェアで実現されてもよい。
【0012】
メモリコントローラ10は、ホストインタフェース(I/F)11、CPU12、ECC(Error Correcting Codes)部13、NANDインタフェース(I/F)15、及びDRAMインタフェース(I/F)16を備える。メモリコントローラ10は、ホストI/F11、CPU12、ECC部13、NANDI/F15、及びDRAMI/F16は、内部バスで相互に接続されている。
【0013】
ホスト11は、ホスト2に接続され、メモリシステム1とホスト2との間の通信を司る。ホストI/F11は、例えばメモリシステム1とホスト2との間で、データ、要求、及びアドレスの転送を制御する。ホストI/F11は、ホスト2との間の通信インタフェース規格に従った処理を実施する。ホストI/F11は、ホスト2から受信したアクセス先のアドレスおよびコマンドの信号を受信する。また、ホストI/F11は、ホスト2から書き込み対象のデータを受信する。
【0014】
CPU12は、メモリコントローラ10全体の動作を制御する。CPU12は、例えばホスト2から受信したライト要求に応答してライトコマンドを発行して、発行したライトコマンドを、NANDI/F15を介してNANDメモリ20に送信する。また、CPU12は、ホスト2から受信したリード要求に応答してリードコマンドを発行して、発行したリードコマンドを、NANDI/F15を介してNANDメモリ20に送信する。また、CPU12は、ホスト2から受信したイレース要求に応答して、イレースコマンドを発行して、発行したイレースコマンドを、NANDI/F15を介してNANDメモリ20に送信する。
【0015】
ECC部13は、データを符号化することで誤り検出訂正用のパリティを生成するとともに、データとパリティとを含む符号語を生成する。例えば、ECC部13は、予め定められている単位のデータをCPU12から受信し、受信したデータを符号化して、パリティを生成することで符号語を生成する。また、ECC部13は、NANDメモリ20から読み出された符号語を復号してデータを復元する。例えば、NANDメモリ20から読み出されたデータに誤りがあった時、ECC部13は、読み出されたデータに対応する符号語を復号して、データを復元する。
【0016】
ECC部13は、データを符号化して、当該データに対応するECC(すなわちパリティ)を生成する。ECC部13は、線形符号であるECCを生成し得る。線形符号である複数のECCは、それらECC間での減算が、すなわち排他的論理和(XOR)演算が、可能である。このようなECCとして、例えばReed-Solomon(RS)符号、XORパリティが用いられる。
【0017】
NANDI/F15は、NANDメモリ20との間の通信を司る。NANDI/F15は、NANDインタフェース規格に基づいて構成されている。
【0018】
DRAMI/F16は、DRAM30との間の通信を司る。DRAMI/F16は、DRAMインタフェース規格に基づいて構成されている。DRAM30は、各種テーブルを格納する領域を有する。
【0019】
不揮発性メモリとしてのNANDメモリ20は、メモリセルアレイを含む。メモリセルアレイは、マトリクス状に配置された複数のメモリセルを含む。NANDメモリ20のメモリセルアレイは、複数の物理ブロックを含む。NANDメモリ20は、複数の不揮発性メモリチップ(例えば複数のNAND型フラッシュメモリダイ)を含んでいてもよい。NANDメモリ20は、二次元構造の不揮発性メモリであってもよいし、三次元構造の不揮発性メモリであってもよい。
【0020】
図2は、1個のブロックの構成例を示す回路図である。なお、各物理ブロックBLKは、同一の構成を有している。物理ブロックBLKは、例えば4つのストリングユニットSU0~SU3を有する。各ストリングユニットSUは、複数のNANDストリング212を含む。
【0021】
NANDストリング212の各々は、例えば64個のメモリセルトランジスタMT(MT0~MT63)および選択トランジスタST1、ST2を含んでいる。メモリセルトランジスタMTは、制御ゲートと電荷蓄積層とを備え、データを不揮発に保持する。そして64個のメモリセルトランジスタMT(MT0~MT63)は、選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に直列接続されている。なお、メモリセルトランジスタMTは、電荷蓄積層に絶縁膜を用いたMONOS型であってもよいし、電荷蓄積層に導電膜を用いたFG型であってもよい。さらに、NANDストリング212内のメモリセルトランジスタMTの個数は64個に限定されない。
【0022】
ストリングユニットSU0~SU3の各々における選択トランジスタST1のゲートは、各々の選択ゲート線SGD0~SGD3に接続される。これに対してストリングユニットSU0~SU3の各々における選択トランジスタST2のゲートは、例えば選択ゲート線SGSに共通接続される。ストリングユニットSU0~SU3の各々における選択トランジスタST2のゲートは、ストリングユニットSU毎に異なる選択ゲート線SGS0~SGS3(不図示)に接続されてもよい。同一のブロックBLK内にある各メモリセルトランジスタMT0~MT63の制御ゲートは、各々のワード線WL0~WL63に共通接続される。
【0023】
ストリングユニットSU内にある各NANDストリング212の選択トランジスタST1のドレインは、各々異なるビット線BL(BL0~BL(N-1)、但しNは2以上の自然数)に接続される。また、ビット線BLは、複数のブロックBLK間で各ストリングユニットSU内にある1つのNANDストリング212を共通に接続する。更に、各選択トランジスタST2のソースは、ソース線SLに共通に接続されている。
【0024】
つまりストリングユニットSUは、各々が異なるビット線BLに接続され、且つ同一の選択ゲート線SGDに接続された複数のNANDストリング212の集合である。またブロックBLKは、ワード線WLを共通にする複数のストリングユニットSUの集合である。そしてメモリセルアレイは、少なくとも1つのビット線BLを共有する複数の物理ブロックBLKの集合である。
【0025】
ライトおよびリードは、1つのストリングユニットSUにおける1つのワード線WLに接続されたメモリセルトランジスタMTに対して、一括して実行され得る。ライトおよびリードの際に、一括して選択されるメモリセルトランジスタMTの群をメモリセルグループと表記する。そして、1つのメモリセルグループにライトされる、あるいはリードされる1ビットのデータの集まりの単位をページと表記する。
【0026】
イレースは、物理ブロックBLK単位で実行される。即ち、1つのブロックBLKに格納された全てのデータは、一括にイレースされる。
【0027】
ライト処理において、メモリコントローラ10は、ホスト2からのライト要求に応答して、ライトコマンドとライト要求に関連付けられたデータを、NANDI/F15を介してNANDメモリ20に送信する。ライト処理において、NANDメモリ20は受信したデータをメモリセルアレイに書き込む。
【0028】
イレース処理において、メモリコントローラ10は、ホスト2からのイレース要求に応答して、イレースコマンドをNANDI/F15を介してNANDメモリ20に送信する。イレース処理において、NANDメモリ20は受信したイレースコマンドに基づいて、メモリセルアレイのデータを消去する。
【0029】
続いて、物理ブロックを有する各種ブロックの関係を図3に示す。図3に示すように、コンポジションブロック53は、複数のメディアブロック52aおよびメディアブロック52bを有する。コンポジションブロック53内に含まれるメディアブロック52の数は、メモリコントローラ10によって決定され、どのコンポジションブロック53も同一の数のメディアブロック52を有する。また、各メディアブロック52は、複数の物理ブロック51を有する。例えば、メディアブロック52aは、物理ブロック51a~物理ブロック51dを有する。以下、複数のメディアブロック52aおよびメディアブロック52bを区別しない場合には、メディアブロック52と称する。物理ブロック51a~物理ブロック51dを区別しない場合には、物理ブロック51と称する。
【0030】
本実施形態では、全てのコンポジションブロック53は同一の数のメディアブロック52を有するが、これに限られない。例えば、メモリコントローラ10がコンポジションブロック53に含まれるパリティのサイズを小さくしてNANDメモリ20にデータを書き込む際、コンポジションブロック53が有するメディアブロック52の数を減らしてもよい。
【0031】
メディアブロック52は、並列アクセス実現のための並列動作要素である各プレーンから物理ブロックを1つずつ選択したブロックである。メディアブロック52は、第1ブロック集合の一例である。メモリシステム1が、出荷前および出荷後に初期起動した際に、物理ブロック51とメディアブロック52との対応関係を設定する。また、CPU12は、全てのメディアブロック52をフリーブロックリストにenqueueする。ここで、フリーブロックリストとは、有効なデータが格納されていない物理ブロック51のリストをいう。メモリシステム1が初回起動した際、メディアブロック52と対応付けられる物理ブロック51はイレースされた状態である。
【0032】
コンポジションブロック53は、物理ブロック51を訂正符号長分まとめるために複数のメディアブロック52を選択したブロックである。コンポジションブロック53は、メモリコントローラ10がイレース処理を行う際の、消去単位である。コンポジションブロック53は、第2ブロック集合の一例である。CPU12は、ライト処理時に、フリーブロックリストからメディアブロック52をdequeueして、コンポジションブロック53を割り当てる。以下では割り当てることを生成すると称する。
【0033】
ところで、メディアブロック52は、ライトもリードもできない物理ブロック51である不良物理ブロックを有する可能性がある。仮に、メディアブロック52に含まれる物理ブロック51のうちの不良物理ブロックの数を考慮せずに、コンポジションブロック53を生成すると、コンポジションブロック53内の不良物理ブロックの数に偏りが生じてしまい、ライト性能にばらつきが出てしまう。
【0034】
そこで、メモリシステム1は、不良物理ブロックの数が偏らないようにコンポジションブロックを生成する。
【0035】
コンポジションブロック53を生成する方法を説明する前に、メモリシステム1が、DRAM30で記憶するテーブル情報を説明する。メモリシステム1のDRAM30は、メディアブロックテーブルと、コンポジションブロックテーブルと、フリーブロックリストとを記憶する。
【0036】
まず、図4を用いてメディアブロックテーブルについて説明する。メディアブロックテーブルは、「MB Index」と、「PB Indexes」と、「Erase Count」と、「MB LinkedList」とを対応付けたテーブルである。なお、このテーブルでは、1つのメディアブロック52が4つの物理ブロック51を有する例を示している。
【0037】
物理ブロック51はそれぞれ、識別情報を付される。「PB Index」が「W」である物理ブロック51を「PB #W」と称する。「PB Indexes」は、メディアブロック52に含まれる物理ブロック51の識別情報を表したテーブルである。物理ブロック51が不良物理ブロックである場合、識別情報は「Defect」と示す。なお、物理ブロック51が、不良物理ブロックである場合、「Defect」を示すマジック値(例えば、0xFF)が入力されていてもよい。
【0038】
「MB Index」は、それぞれのメディアブロック52の識別情報である。例えば、「MB Index」が「0」であるメディアブロックには、物理ブロックの識別情報が「PB #0」、「Defect」、「PB #2」、「PB #3」である物理ブロック51が対応付けられている。また、「MB Index」が「X」であるメディアブロック52を「MB #X」と称する。
【0039】
「MB #1」であるメディアブロック52には、物理ブロックの識別情報が「PB #4」、「PB #5」、「PB #6」、「PB #7」である物理ブロック51が対応付けられている。「MB #2」であるメディアブロック52には、物理ブロックの識別情報が「PB #8」、「PB #9」、「Defect」、「Defect」である物理ブロック51が対応付けられている。「MB #3」であるメディアブロック52には、物理ブロックの識別情報が「PB #12」、「PB #13」、「PB #14」、「PB #15」である物理ブロック51が対応付けられている。「MB #4」であるメディアブロック52には、物理ブロックの識別情報が「PB #16」、「Defect」、「PB #18」、「PB #19」である物理ブロック51が対応付けられている。「MB #5」であるメディアブロック52には、物理ブロックの識別情報が「PB #20」、「PB #21」、「PB #22」、「PB #23」である物理ブロック51が対応付けられている。「MB #p」であるメディアブロック52には、物理ブロックの識別情報が「PB #m」、「Defect」、「Defect」、「PB #m+1」である物理ブロック51(但し、mは0以上の自然数)が対応付けられている。
【0040】
「MB #0」であるメディアブロック52には、不良物理ブロックが1つ含まれる。「MB #1」であるメディアブロック52には、不良物理ブロックが含まれない。「MB #2」であるメディアブロック52には、不良物理ブロックが2つ含まれる。「MB #3」であるメディアブロック52には、不良物理ブロックが含まれない。「MB #4」であるメディアブロック52には、不良物理ブロックが1つ含まれる。「MB #5」であるメディアブロック52には、不良物理ブロックが含まれない。「MB #p」であるメディアブロック52には、不良物理ブロックが2つ含まれる。
【0041】
「EraseCount」は、メディアブロック52に対応する物理ブロック51のデータをイレースした回数を示す。CPU12は、イレースコマンドをNANDI/F15に送信した場合、イレース対象のメディアブロックの「MB Index」の「EraseCount」をカウントアップする。このように、CPU12は、メディアブロック52に対応する物理ブロック51のデータをイレースした回数を「EraseCount」に格納する。すなわち、メディアブロックテーブルは、メディアブロック52のイレース回数を管理する。
【0042】
「MB LinkedList」は、フリーブロックリストにおけるメディアブロック52の前後関係を示すリストである。「MB LinkedList」の「Prev」は、そのメディアブロック52の前のメディアブロック52を示す。「MB LinkedList」の「Next」は、そのメディアブロック52の次のメディアブロック52を示す。
【0043】
例えば、「MB #0」であるメディアブロック52は、「MB LinkedList」の「Prev」が、「null」で、「Next」が「null」である。これは、「MB #0」であるメディアブロック52は、フリーブロックリストに追加されていないことを示す。
【0044】
「MB#2」であるメディアブロック52は、「MB LinkedList」の「Prev」が、「null」で、「Next」が「MB #p」である。これは、「MB #2」であるメディアブロック52がフリーブロックであることと、フリーブロックであるメディアブロック52の先頭であり、「MB #p」であるメディアブロック52が後ろに存在することを示している。
【0045】
「MB #3」であるメディアブロック52は「MB LinkedList」の「Prev」が、「MB #5」で、「Next」が「null」である。これは、「MB #3」であるメディアブロック52がフリーブロックであることと、フリーブロックリスト内において、「MB #3」であるメディアブロック52の前に「MB #5」であるメディアブロック52が存在すること、フリーブロックリストの末尾であることを示している。
【0046】
「MB#5」であるメディアブロック52は「MB LinkedList」の「Prev」が、「MB #1」で、「Next」が「MB #3」である。これは、「MB #5」であるメディアブロック52がフリーブロックであることと、フリーブロックリスト内において、「MB #5」であるメディアブロック52の前に「MB #1」であるメディアブロック52が存在し、「MB #3」であるメディアブロック52が後ろに存在することを示している。
【0047】
続いて、図5を用いてコンポジションブロックテーブルについて説明する。コンポジションブロックテーブルは、「CB Index」と、「MB Indexes」とを対応付けたテーブルである。
【0048】
「CB Index」は、それぞれのコンポジションブロック53の識別情報である。「MB Indexes」は、各コンポジションブロック53に対応するメディアブロック52の識別情報である。CPU12は、データを書き込む際、フリーブロック内のデータを消去する前にコンポジションブロックテーブルのエントリーを生成する。また、「CB Index」が「Y」であるコンポジションブロック53を「CB #Y」と称する。「CB #0」のコンポジションブロック53は、「MB #0」であるメディアブロック52と「MB #4」であるメディアブロック52を有する。なお、「CB #2」のコンポジションブロックの「MB Indexes」が「null」となっている。これは、「CB #2」のコンポジションブロック53が未構築であることを示す。また、コンポジションテーブルのエントリー数は、出荷時に決定されており、その後増減しない。
【0049】
続いて、図6を用いてフリーブロックリストについて説明する。フリーブロックリストは、「FB Index」と、「Defect」と、「MB LinkedList」とを対応付けたリストである。「FB Index」は、フリーブロックリストの識別情報である。「Defect」は、フリーブロックリストに属するメディアブロックに含まれる不良物理ブロックの数を示す。「MB LinkedList」は、フリーブロックリストに属するメディアブロック52のうち、先頭および末尾のメディアブロック52の識別情報を示す。また、「FB Index」が「Z」であるフリーブロックを「FB #Z」と称する。
【0050】
図6に示すように、「FB Index」の番号と「Defect」の番号は同一である。「FB #0」のフリーブロックリストの「Defect」は、「0」である。よって、「FB #0」のフリーブロックリストには、不良物理ブロックの数が0であるメディアブロック52が追加される。同様に、「FB #1」のフリーブロックリストの「Defect」は、「1」である。よって、「FB #1」のフリーブロックリストには、不良物理ブロックの数が1であるメディアブロック52が追加される。「MB LinkedList」の「Head」は、フリーブロックリストに追加されたメディアブロック52の先頭の「MB Index」を示す。「MB LinkedList」の「Tail」は、フリーブロックリストに追加されたメディアブロック52の末尾の「MB Index」を示す。
【0051】
図6の「FB #0」であるフリーブロックリストに注目する。「Head」が「MB #1」であり、「Tail」が「MB #3」である。これは、メディアブロック52に含まれる不良物理ブロックの数が0であるフリーブロックリストの先頭が「MB #1」であるということを示している。ここで図4のメディアブロックテーブルを参照する。「MB #1」の「Prev」は「null」であり、「Next」は「MB #5」である。「MB #1」のイレース回数は1である。次に、「MB #5」を参照すると、「MB #5」の「Prev」は「MB #1」であり、「Next」は「MB #3」である。「MB #5」のイレース回数は1である。次に、「MB #3」を参照すると、「MB #3」の「Prev」は「MB #5」であり、「Next」は「null」である。「MB #3」のイレース回数は2である。これにより、「FB #0」であるフリーブロックリストの先頭のメディアブロック52は「MB #1」であり、末尾のメディアブロック52は「MB #3」であり、間に「MB #5」のブロックリストが存在することが示される。さらに、「FB #0」のフリーブロックリストに含まれる複数のメディアブロック52は、イレース回数でソートされている。
【0052】
以上のように、メモリシステム1は、コンポジションブロック53を生成する前(例えば出荷前または出荷後に初回起動した際)に、メディアブロック52と、物理ブロック51とを対応付けたメディアブロックテーブルを構築する。メモリシステム1は、メディアブロックに含まれる不良物理ブロックの数でメディアブロックをグルーピングして、フリーブロックリストを生成する。メモリシステム1は、フリーブロックリスト中の各グループのメディアブロックをイレース回数でソートする。
【0053】
メモリシステム1は、ホスト2からのライト処理要求を受け付けると、データを書き込み可能なコンポジションブロック53が存在するかどうかを確認する。書き込み可能なコンポジションブロックがない場合、メモリシステム1はフリーブロックリストを参照し、不良物理ブロックの数が所定数となるようにメディアブロック52を選択して、コンポジションブロック53を生成する。
【0054】
また、コンポジションブロック53を作成後、ホスト2からデータの破棄を指示するトリムコマンドを受け取ったり、メモリシステム1によってガベージコレクションが行われたりして、コンポジションブロック53に含まれるメディアブロック内に有効なデータがなくなると、ブロック解放処理が行われる。つまり、コンポジションブロック53内のメディアブロック52が無効データを有するメディアブロック52のみになると、メモリシステム1はブロック解放処理を行う。ここでは、有効データは、後にホスト2からリードされる可能性があるデータである。無効データは、もはやホスト2からリードされる可能性が無いデータである。ブロック解放処理では、メモリシステム1は、まず、有効データが存在しないコンポジションブロック53に含まれるメディアブロック52を、フリーブロックリストに追加する。つまり、メモリシステム1は、無効データのみを有するコンポジションブロック53に含まれるメディアブロック52を、フリーブロックリストに追加する。メモリシステム1は、フリーブロックリストに追加したメディアブロック52を、不良物理ブロックの数に応じてグルーピングする。メモリシステム1は、コンポジションブロックテーブルを参照し、無効データのみを有するコンポジションブロック53のリストに追加されているメディアブロック52を消去する。
【0055】
コンポジションブロック53を生成する際、メモリシステム1はフリーブロックリストを参照して、複数のメディアブロック52を選択する。フリーブロックリストに追加されているメディアブロック52には、イレースされた状態のメディアブロック52と、無効データのみを有するメディアブロック52が存在する。選択したメディアブロック52がデータを有する場合、メモリシステム1は、データを有するメディアブロック52の「EraseCount」の値を1増やし、メディアブロック52に含まれる物理ブロック51のデータを消去する。
【0056】
また、メモリシステム1は、ブロック解放処理を、コンポジションブロック53を生成する直前に実行してもよい。
【0057】
ここで、コンポジションブロック53を生成する方法を説明する。図7は、フリーブロックリストで管理されるメディアブロック52の状態の例である。メディアブロック52a~メディアブロック52lのそれぞれに付されている数字は、イレース回数を表す。
【0058】
メモリシステム1は、メディアブロック52に含まれる不良物理ブロックの数でメディアブロック52をグルーピングして、各グループのメディアブロック52をイレース回数に基づいてソートする。メディアブロック52a~メディアブロック52dは、不良物理ブロックの数が0であるフリーブロックリストに属している。メディアブロック52e~メディアブロック52hは不良物理ブロックの数が1であるフリーブロックリストに属している。換言すると、メディアブロック52e~メディアブロック52hは、それぞれ不良物理ブロックDBを1つ有する。また、不良物理ブロックの数が2であるフリーブロックリストは、メディアブロック52i~メディアブロック52lを有する。換言すると、メディアブロック52i~メディアブロック52lは、それぞれ不良物理ブロックDBを2つ有する。
【0059】
CPU12は、複数のメディアブロック52を有するコンポジションブロック53を生成する際、コンポジションブロック53内のメディアブロック52の不良物理ブロックの数が平均値となるように、メディアブロック52を選択する。平均値とは、NANDメモリ20全体における物理ブロック51の総数と、NANDメモリ20全体における不良物理ブロックの数と、コンポジションブロック53を構成する物理ブロック51の数とに基づいて算出される値である。例えば、メモリシステム1は、NANDメモリ20全体における不良物理ブロックの数と、コンポジションブロックを構成するメディアブロックの数とを乗算した値を、NANDメモリ20全体におけるメディアブロック52の総数で除算して、不良物理ブロックの数の平均値を計算する。平均値は、基準値の一例である。
【0060】
図8は、コンポジションブロック53に含まれる不良物理ブロックの数の平均値を2とする場合のコンポジションブロック53の構成を示す。コンポジションブロック53を生成する際、CPU12は、算出した物理ブロック51の数の平均値に基づいて、フリーブロックリストを参照し、イレース回数の少ない順に複数のメディアブロック52を選択する。この例では、CPU12は、不良物理ブロックの数が2のメディアブロック52からイレース回数が2であるメディアブロック52iを選択し、不良物理ブロックの数が0のメディアブロックからイレース回数が1であるメディアブロック52aを選択し、コンポジションブロック53bを生成する。続いて、CPU12は、不良物理ブロックの数が1のメディアブロック52から、イレース回数が2であるメディアブロック52eとイレース回数が4であるメディアブロック52fとを選択し、コンポジションブロック53aを生成する。このように、CPU12は、コンポジションブロック53b、コンポジションブロック53aの順にコンポジションブロック53を生成する。
【0061】
続いて、第1実施形態にかかるメモリシステム1(より詳しくはCPU12)によるライト処理手順について、図9を用いて説明する。図9は、メモリシステム1を初回に起動した時の、本実施形態にかかるライト処理の処理手順を示すフローチャートである。
【0062】
まず、CPU12は、製造または出荷した後に初回起動した際にメディアブロック52と、物理ブロック51とを対応付けたメディアブロックテーブルを構築する(ステップS1)。そして、CPU12は、全てのメディアブロック52をフリーブロックリストへenqueueする(ステップS2)。
【0063】
CPU12は、フリーブロックリストにenqueueしたメディアブロック52を、不良物理ブロックの数に応じてグルーピングし、イレース回数でソートする(ステップS3)。CPU12は、コンポジションブロックに含まれる不良物理ブロックの数が所定の値となるように、フリーブロックリストから複数のメディアブロック52を選択する(ステップS4)。CPU12は、選択した複数のメディアブロック52をフリーブロックリストからdequeueする(ステップS5)。CPU12は、選択したメディアブロック52をコンポジションブロックテーブルにenqueueして、コンポジションブロック53を構築する(ステップS6)。CPU12は、コンポジションブロック53に含まれる物理ブロック51にデータをライトする(ステップS7)。
【0064】
第1実施形態にかかるCPU12によるブロック解放処理手順について、図10のフローチャートを用いて説明する。
【0065】
コンポジションブロック53内のメディアブロック52の全てが無効データのみを有するメディアブロック52になると、CPU12は、無効データのみを有するコンポジションブロック53に含まれるメディアブロック52を、フリーブロックリストにenqueueする(ステップS11)。CPU12は、フリーブロックリストにenqueueしたメディアブロック52を、不良物理ブロックの数に応じてグルーピングし、イレース回数でソートする(ステップS12)。CPU12は、コンポジションブロックテーブルを参照し、無効データのみを有するコンポジションブロック53にenqueueされているメディアブロック52をdequeueする(ステップS13)。
【0066】
第1実施形態にかかるCPU12によるライト処理手順について、図11を用いて説明する。図11は、初回起動以降のメモリシステム1の本実施形態にかかるライト処理の処理手順を示すフローチャートである。
【0067】
ライト処理を行う際、CPU12は、データを書き込み可能なコンポジションブロック53が存在するかどうかを確認する。書き込み可能なコンポジションブロック53がある場合(ステップS20_Yes)、CPU12は、書き込み可能なコンポジションブロック53に含まれる物理ブロック51にデータをライトする(ステップS27)。書き込み可能なコンポジションブロック53がない場合(ステップ20_No)、CPU12は、フリーブロックリストを参照し、コンポジションブロック53に含まれる不良物理ブロックの数が所定の値となるように、フリーブロックリストから複数のメディアブロック52を選択する(ステップS21)。選択した複数のメディアブロック52をフリーブロックリストからdequeueする(ステップS22)。選択したメディアブロック52に無効データが書き込まれている場合(ステップS23_Yes)、CPU12は、無効データが書き込まれているメディアブロック52の「Erase Count」の値を1増やす(ステップS24)。CPU12は、メディアブロック52に含まれる物理ブロック51のデータを消去する(ステップS25)。CPU12は、選択したメディアブロック52をコンポジションブロックテーブルにenqueueし、コンポジションブロック53を構築する(ステップS26)。CPU12は、コンポジションブロック53に含まれる物理ブロック51にデータをライトする(ステップS27)。
【0068】
選択したメディアブロック52に無効データが書き込まれていない(選択したメディアブロック52がイレースされた状態である)場合(ステップS23_No)、CPU12は、選択したメディアブロック52をコンポジションブロックテーブルにenqueueし、コンポジションブロック531を構築する(ステップS26)。CPU12は、コンポジションブロック53に含まれる物理ブロック51にデータをライトする(ステップS27)。
【0069】
なお、ここでは、コンポジションブロック53に含まれるメディアブロック52内に有効なデータがなくなると、その都度ブロック解放処理が行われているが、コンポジションブロック53を構築する直前にブロック解放処理が行われていてもよい。
【0070】
第1実施形態では、メモリシステム1は(より詳しくは、CPU12は)、コンポジションブロック53を生成する際、メディアブロック52を、メディアブロック52内の不良物理ブロックの数毎にグループ分けする。メモリシステム1は、グループ内で、メディアブロック52をイレース処理回数でソートしたフリーブロックリストを生成する。そして、メモリシステム1は、フリーブロックリストを参照し、不良物理ブロックの数の平均値に基づいて各グループのメディアブロックを複数選択する。メモリシステム1は、選択したメディアブロックを用いてコンポジションブロック53を生成し、コンポジションブロック53の物理ブロック51へデータをライトする。
【0071】
ここで、比較例1のメモリシステムを検討する。比較例1のメモリシステムは、メディアブロック内の不良物理ブロックの数を考慮せずに、イレース処理回数でソートしたフリーブロックリストを生成する。このフリーブロックリストからメディアブロックが選択されることによって、コンポジションブロックが生成される。比較例1のメモリシステムの場合、メディアブロックに含まれる不良物理ブロックの数を考慮していないので、コンポジションブロックに含まれる不良物理ブロックの数が、コンポジションブロックによって大きく異なる可能性がある。この結果、不良物理ブロックを多く含むコンポジションブロックに対してライト処理を実行すると、ライトエラー率が高まり、ライト処理性能が低下してしまう。
【0072】
また、比較例2のメモリシステムを検討する。比較例2のメモリシステムはメディアブロックに含まれる不良物理ブロックの数のみを管理し、メディアブロックのイレース処理回数を考慮しない。比較例2のメモリシステムは、メディアブロックに含まれる不良物理ブロックの数でメディアブロックをグルーピングして、フリーブロックリストを生成する。このフリーブロックリストからメディアブロックが選択されることによって、コンポジションブロックが生成される。比較例2のメモリシステムがコンポジションブロックに含まれる不良物理ブロックを平準化した場合、メディアブロックのイレース処理回数を考慮しないため、コンポジションブロックに含まれるメディアブロックのイレース回数の平準化が不可能になる。このことで、ライト処理性能が低下する。
【0073】
一方、第1実施形態にかかるメモリシステム1は、不良物理ブロックの数毎にグループ分けしたフリーブロックリストから、不良物理ブロックの数が平均値となるようにメディアブロック52を複数選択することで、コンポジションブロック53の不良物理ブロックの数を平準化することができる。
【0074】
また、メモリシステム1は、NANDメモリ20全体におけるメディアブロック52の総数と、NANDメモリ20全体における不良物理ブロックの数と、コンポジションブロックを構成するメディアブロックの数とに基づいて平均値を算出する。このように、メ1は、コンポジションブロック53内のメディアブロック52における不良物理ブロックの数の平均値を基準値とすることで、コンポジションブロック53の不良物理ブロックの数を平準化することができる。
【0075】
さらに、メディアブロック52のイレース処理回数を基にメディアブロック52をソートし、フリーブロックリストを作成することで、コンポジションブロック53に含まれるメディアブロック52のイレース回数を平準化することが可能である。
【0076】
以上の実施形態により、メモリシステム1のライト処理の性能を安定させることができる。
【0077】
(第2実施形態)
第1実施形態では、メモリシステム1がコンポジションブロック53を生成する際、1つのコンポジションブロック53に含まれる不良物理ブロックの数が所定の値になるように、メモリシステム1がメディアブロック52を選択する場合について述べた。
【0078】
第1実施形態のメモリシステム1は、不良物理ブロックの数が平均値を上回るフリーブロックリストを選択してコンポジションブロック53を生成することができない。つまり、平均値が例えば2である場合、CPU12は、不良物理ブロックの数が3であるフリーブロックリストを選択できない。
【0079】
そこで、第2実施形態のメモリシステム1は、複数のコンポジションブロック53群に含まれる不良物理ブロックの数の周期においての平均を考慮して、コンポジションブロック53を生成する。複数のコンポジションブロック53群を周期コンポジションブロック531とする。メモリシステム1は、周期コンポジションブロックテーブルを備える。
【0080】
また、メディアブロックに含まれる最大の不良物理ブロックの数を、メディアブロックに含まれる不良物理ブロックの数の平均値で除算し、結果を整数値へ切り上げた値を周期値とする。CPU12は、周期コンポジションブロック531に含まれる不良物理ブロックの数が周期値となるように、フリーブロックリストからメディアブロック52を選択する。
【0081】
図12を用いて、周期コンポジションブロック531aおよび周期コンポジションブロック531bを生成する例について説明する。この例では、CPU12は、周期コンポジションブロック531に含まれるコンポジションブロック53を2ブロック、周期値を2と決定し、周期コンポジションブロック531aおよび周期コンポジションブロック531bを生成する。尚、周期コンポジションブロック531に含まれる不良物理ブロックの数が周期値以上であれば、CPU12は周期コンポジションブロック531内に含まれるコンポジションブロック53の数を任意に決定できる。
【0082】
まず、CPU12は、不良物理ブロックの数が2のメディアブロック52iと不良物理ブロックの数が0のメディアブロック52nとをフリーブロックリストから選択し、コンポジションブロック53aを生成する。そして、CPU12は、不良物理ブロックの数が2のメディアブロック52jと不良物理ブロックの数が0のメディアブロック52oとをフリーブロックリストから選択し、コンポジションブロック53fを生成する。CPU12は、周期コンポジションブロックテーブルに、コンポジションブロック53aおよびコンポジションブロック53fを追加する。周期コンポジションブロック531b内の不良物理ブロックの数の平均値は2となる。
【0083】
続いて、CPU12は、不良物理ブロックの数が0のメディアブロック52bと不良物理ブロックの数が1のメディアブロック52fとをフリーブロックリストから選択し、コンポジションブロック53cを生成する。そして、CPU12は、不良物理ブロックの数が3のメディアブロック52mと不良物理ブロックの数が0のメディアブロック52aとをフリーブロックリストから選択し、コンポジションブロック53dを生成する。CPU12は、周期コンポジションブロックテーブルに、コンポジションブロック53dおよびコンポジションブロック53cを追加する。この場合、周期コンポジションブロック531aの不良物理ブロックの数の平均値が2となる。
【0084】
なお、メディアブロック52の不良物理ブロックの数は、時間経過や書き込み消去回数の増加により増えるので、メモリシステム1は、所定期間が経過する毎に周期値を算出し直すようにしてもよい。すなわち、メモリシステム1は、動的に周期値を算出し、周期コンポジションブロック531を生成する際に、算出した周期値を反映するようにしてもよい。
【0085】
続いて、第2実施形態にかかるCPU12によるライト処理手順について、図13を用いて説明する。図13は、第2実施形態にかかるライト処理の処理手順を示すフローチャートである。
【0086】
まず、メモリシステム1は、製造または出荷した後に初回起動した際にメディアブロック52と、物理ブロック51とを対応付けたメディアブロックテーブルを構築する(ステップS31)。そして、CPU12は、全てのメディアブロック52をフリーブロックリストへenqueueする(ステップS32)。
【0087】
CPU12は、周期コンポジションブロック531内に含まれる不良物理ブロックの数の平均値が所定値となるようにフリーブロックリストから複数のメディアブロック52を選択する(ステップS33)。CPU12は、選択した複数のメディアブロック52をフリーブロックリストからdequeueする(ステップS34)。CPU12は、選択したメディアブロック52をコンポジションブロックテーブルにenqueueして、コンポジションブロック53を構築する(ステップS35)。CPU12は、周期コンポジションテーブルに、作成したコンポジションブロックをenqueueして、周期コンポジションブロック531を構築する(ステップS36)。CPU12は、コンポジションブロック53に含まれる物理ブロック51にデータをライトする(ステップS37)。
【0088】
第2実施形態にかかるCPU12によるブロック解放処理手順について、図14のフローチャートを用いて説明する。
【0089】
周期コンポジションブロック531内のメディアブロック52の全てが無効データのみを有するメディアブロックのみになると、CPU12は、無効データのみを有する周期コンポジションブロック531に含まれるメディアブロック52を、フリーブロックリストにenqueueする(ステップS41)。CPU12は、フリーブロックリストにenqueueしたメディアブロック52を、不良物理ブロックの数に応じてグルーピングし、イレース回数でソートする(ステップS42)。CPU12は、周期コンポジションブロックテーブルを参照し、無効データのみを有するコンポジションブロック53をdequeueする(ステップS43)。CPU12は、コンポジションブロックテーブルを参照し、無効データのみを有するコンポジションブロック53にenqueueされているメディアブロック52をdequeueする(ステップS44)。
【0090】
第2実施形態にかかるCPU12によるライト処理手順について、図15を用いて説明する。図15は、初回起動以降のメモリシステム1の本実施形態にかかるライト処理の処理手順を示すフローチャートである。
【0091】
ライト処理を行う際、CPU12は、データを書き込み可能なコンポジションブロック53が存在するかどうかを確認する。書き込み可能なコンポジションブロック53がある場合(ステップS50_Yes)、CPU12は、書き込み可能なコンポジションブロック53に含まれる物理ブロック51にデータをライトする(ステップS58)。書き込み可能なコンポジションブロック53がない場合(ステップ50_No)、CPU12は、フリーブロックリストを参照し、コンポジションブロック53に含まれる不良物理ブロックの数が所定の値となるように、フリーブロックリストから複数のメディアブロック52を選択する(ステップS51)。選択した複数のメディアブロック52をフリーブロックリストからdequeueする(ステップS52)。選択したメディアブロック52に無効データが書き込まれている場合(ステップS53_Yes)、CPU12は、無効データが書き込まれているメディアブロック52の「Erase Count」の値を1増やす(ステップS54)。CPU12は、メディアブロック52に含まれる物理ブロック51のデータを消去する(ステップS55)。CPU12は、選択したメディアブロック52をコンポジションブロックテーブルにenqueueし、コンポジションブロック53を構築する(ステップS56)。CPU12は、周期コンポジションテーブルに、作成したコンポジションブロックをenqueueし、周期コンポジションブロック531を構築する(ステップS57)。CPU12は、コンポジションブロック53に含まれる物理ブロック51にデータをライトする(ステップS58)。
【0092】
選択したメディアブロック52に無効データが書き込まれていない(選択したメディアブロック52がイレースされた状態である)場合(ステップS53_No)、CPU12は、選択したメディアブロック52をコンポジションブロックテーブルにenqueueし、コンポジションブロック53を構築する(ステップS56)。CPU12は、周期コンポジションテーブルに、作成したコンポジションブロックをenqueueし、周期コンポジションブロック531を構築する(ステップS57)。CPU12は、コンポジションブロック53に含まれる物理ブロック51にデータをライトする(ステップS58)。
【0093】
なお、ここでは、コンポジションブロック53に含まれるメディアブロック52内に有効なデータがなくなると、その都度ブロック解放処理が行われているが、コンポジションブロック53を構築する直前にブロック解放処理が行われていてもよい。
【0094】
第2実施形態では、メモリシステム1は、所定の数の周期コンポジションブロック531のそれぞれに含まれる不良物理ブロックの数が、周期値となるよう、周期コンポジションブロック531を生成する。この場合、メモリシステム1は、平均値を超えるメディアブロック52が存在しても、当該メディアブロック52を選択してコンポジションブロック53を生成することができる。
【0095】
また、メモリシステム1は、メディアブロック52に含まれる最大の不良物理ブロックの数に基づいて周期値を定める。これにより、メモリシステム1は、不良物理ブロックの数が多いメディアブロック52を選択しても、周期コンポジションブロック531のそれぞれに含まれる不良物理ブロックの数を平準化することができる。
【0096】
また、メモリシステム1は、所定期間毎に、周期値を定めるようにしてもよい。この期間は、時間経過により不良物理ブロックが増加すると考えられる期間又はメディアブロック52の消去回数が所定数増加すると考えられる期間である。メモリシステム1は、内部にタイマーを備え、所定の期間が経過したことを判定してもよい。これにより、不良物理ブロックの数が増加した場合でもコンポジションブロック53のそれぞれに含まれる不良物理ブロックの数を平準化することができる。
【0097】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0098】
1 メモリシステム、2 ホスト、10 メモリコントローラ、11 ホストI/F、12 CPU、13 ECC部、15 NANDI/F、16 DRAMI/F、20 NANDメモリ、30 DRAM、51 物理ブロック、52 メディアブロック、53 コンポジションブロック。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15