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

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

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

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022144291
(43)【公開日】2022-10-03
(54)【発明の名称】メモリシステム
(51)【国際特許分類】
   G06F 12/00 20060101AFI20220926BHJP
   G11C 11/56 20060101ALI20220926BHJP
   G11C 16/04 20060101ALI20220926BHJP
   G11C 16/08 20060101ALI20220926BHJP
【FI】
G06F12/00 597U
G11C11/56 220
G11C16/04 170
G11C16/08 120
【審査請求】未請求
【請求項の数】19
【出願形態】OL
(21)【出願番号】P 2021045228
(22)【出願日】2021-03-18
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110000408
【氏名又は名称】弁理士法人高橋・林アンドパートナーズ
(72)【発明者】
【氏名】野田 優子
【テーマコード(参考)】
5B160
5B225
【Fターム(参考)】
5B160CA02
5B160CA03
5B160DA08
5B225BA01
5B225BA19
5B225CA28
5B225DA10
5B225DE08
5B225EA05
5B225FA01
(57)【要約】      (修正有)
【課題】メモリシステムの動作を高速化させるメモリシステムを提供する。
【解決手段】メモリシステム1は、第1ページ及び第2ページを含む不揮発性メモリ20と、不揮発性メモリを制御するメモリコントローラ10と、を備える。メモリコントローラは、第1時刻に前記第1ページに対する第1書き込み動作を行い、第1時刻の後の第2時刻に第2ページに対する第2書き込み動作を行い、第1時刻と第2時刻との時間差と、第1書き込み動作よりも後に行われた第1ページに対する第1読み出し動作が成功した条件を示す第1履歴値と、に基づいて、第1読み出し動作の後に行われる第2ページに対する第2読み出し動作の条件を決定する。
【選択図】図1
【特許請求の範囲】
【請求項1】
第1ページ及び第2ページを含む不揮発性メモリと、前記不揮発性メモリを制御するメモリコントローラと、を備えるメモリシステムであって、
前記メモリコントローラは、
第1時刻に前記第1ページに対する第1書き込み動作を行い、前記第1時刻の後の第2時刻に前記第2ページに対する第2書き込み動作を行い、
前記第1時刻と前記第2時刻との時間差と、前記第1書き込み動作よりも後に行われた前記第1ページに対する第1読み出し動作が成功した条件を示す第1履歴値と、に基づいて、前記第1読み出し動作の後に行われる前記第2ページに対する第2読み出し動作の条件を決定するメモリシステム。
【請求項2】
前記メモリコントローラは、
前記第1書き込み動作の際に前記第1時刻を記憶し、
前記第2書き込み動作の際に前記第2時刻を記憶し、
前記第2読み出し動作の条件を決定する際に前記第1時刻及び前記第2時刻に基づいて前記時間差を計算する、請求項1に記載のメモリシステム。
【請求項3】
前記メモリコントローラは、
前記第1書き込み動作の際に前記第1時刻を記憶し、
前記第2書き込み動作の際に前記時間差を計算して記憶する、請求項1に記載のメモリシステム。
【請求項4】
前記不揮発性メモリは、第3ページをさらに含み、
前記メモリコントローラは、
前記第2時刻の後の第3時刻に前記第3ページに対する第3書き込み動作を行い、
前記第2読み出し動作が成功した条件を示す第2履歴値を用いて前記第3ページに対する第3読み出し動作を行う、請求項1乃至3のいずれか一に記載のメモリシステム。
【請求項5】
前記メモリコントローラは、
前記第1履歴値と、前記第2読み出し動作が成功した条件を示す第2履歴値と、を記憶し、
前記第1履歴値と前記第2履歴値とが同じ場合に、前記第1履歴値及び前記第2履歴値と同じ履歴値を前記第1ページと前記第2ページとに共通の共通履歴値として記憶する、請求項1乃至4のいずれか一に記載のメモリシステム。
【請求項6】
前記メモリコントローラは、
ホストからの読み出し要求に応じて前記第1読み出し動作及び前記第2読み出し動作を行い、
ホストからの読み出し要求とは別に前記不揮発性メモリに対する読み出し検査を実行し、
前記読み出し検査に応じて前記共通履歴値を記憶する、請求項5に記載のメモリシステム。
【請求項7】
前記第1ページ及び前記第2ページを含む複数のページの各々の読み出し電圧値について複数のパラメータが設定されており、
前記メモリコントローラは、
ホストからの読み出し要求に応じて前記第1読み出し動作及び前記第2読み出し動作を行い、
ホストからの読み出し要求とは別に前記不揮発性メモリに対する読み出し検査を実行して前記複数のパラメータを決定する、請求項1乃至6のいずれか一に記載のメモリシステム。
【請求項8】
前記不揮発性メモリは、第4ページをさらに含み、
前記メモリコントローラは、
第4時刻に前記第4ページに対する第4書き込み動作を行い、
前記第4ページに対する第4読み出し動作が成功した条件を示す履歴値が存在しない場合、かつ、前記第4時刻と前記第1時刻とが所定の時間差内である場合、前記第1履歴値を用いて前記第4読み出し動作を行い、
前記第4読み出し動作が成功した条件を示す履歴値が存在しない場合、かつ、前記第4時刻と前記第2時刻とが所定の時間差内である場合、前記第2読み出し動作が成功した条件を示す第2履歴を用いて前記第4読み出し動作を行う、請求項1乃至7のいずれか一に記載のメモリシステム。
【請求項9】
前記メモリコントローラは、前記第1ページを含む第1メモリグループと前記第2ページを含む第2メモリグループとを含むX個のメモリグループに対するX個の読み出し条件が規定されたテーブルを、前記X個のメモリグループの中に同じ読み出し条件のメモリグループがある場合に、前記X個のメモリグループ又は前記X個の読み出し条件に基づいて圧縮する、請求項1乃至8のいずれか一に記載のメモリシステム。
【請求項10】
前記メモリコントローラは、
ホストからの前記不揮発性メモリに対する読み出し要求に応じて前記第1読み出し動作及び前記第2読み出し動作を行い、
前記第1ページと前記第1履歴値とを関連付け、前記第2ページと前記第2ページに対する読み出し動作が成功した条件を示す第2履歴値とを関連付けて管理し、
ホストからの前記不揮発性メモリに対する読み出し要求とは別に前記第1ページ及び前記第2ページに対する読み出し検査を実行し、
前記読み出し検査の結果に応じて、前記第1ページ及び前記第2ページと前記第1履歴値及び前記第2履歴値との関連付けを変更する、請求項1に記載のメモリシステム。
【請求項11】
前記メモリコントローラは、前記第1履歴値と前記第2履歴値とが同じ履歴値を示す場合に、前記第1履歴値及び前記第2履歴値と同じ履歴値を前記第1ページと前記第2ページとに共通の共通履歴値として記憶する、請求項10に記載のメモリシステム。
【請求項12】
前記メモリコントローラは、前記読み出し検査によって、前記第1履歴値と前記第2履歴値とが同じ履歴値を示す場合に、前記第1ページと前記第2ページとに共通の共通履歴値を記憶する、請求項10又は11に記載のメモリシステム。
【請求項13】
前記第1ページ及び前記第2ページを含む複数のページの各々の読み出し電圧値について複数のパラメータが設定されており、
前記メモリコントローラは、
ホストからの読み出し要求に応じて前記第1読み出し動作及び前記第2読み出し動作を行い、
ホストからの読み出し要求とは別に前記不揮発性メモリに対する読み出し検査を実行して前記複数のパラメータを決定する、請求項10乃至12のいずれか一に記載のメモリシステム。
【請求項14】
複数のページを含む不揮発性メモリと、前記不揮発性メモリを制御するメモリコントローラと、を備えるメモリシステムであって、
前記メモリコントローラは、
ホストからの前記不揮発性メモリに対する読み出し要求に応じて前記ページに対する読み出し動作を行い、
前記ページと、前記ページに対する読み出し動作が成功した条件を示す履歴値と、を関連付けて管理し、
ホストからの前記不揮発性メモリに対する読み出し要求とは別に前記不揮発性メモリに対する読み出し検査を実行し、
前記読み出し検査の結果に応じて、前記複数のページと前記履歴値との関連付けを変更するメモリシステム。
【請求項15】
前記複数のページは、第1ページ及び第2ページを含み、
前記履歴値は、前記第1ページに対する読み出し動作が成功した条件を示す第1履歴値と、前記2ページに対する読み出し動作が成功した条件を示す第2履歴値と、を含み、
前記メモリコントローラは、前記読み出し検査によって、前記第1履歴値と前記第2履歴値とが同じ履歴値を示す場合に、前記第1ページと前記第2ページとに共通の共通履歴値を、前記第1ページ及び前記第2ページに関連付けて管理する、請求項14に記載のメモリシステム。
【請求項16】
前記複数のページは、第1ページ及び第2ページを含み、
前記履歴値は、前記第1ページ及び前記第2ページに対する読み出し動作が成功した条件を示し、前記第1ページと前記第2ページとに共通の共通履歴値を含み、
前記メモリコントローラは、前記読み出し検査によって、前記第1ページと前記第2ページとが異なる履歴値を示す場合に、前記第1ページに対する読み出し動作が成功した条件を示す第1履歴値を前記第1ページに関連付け、前記2ページに対する読み出し動作が成功した条件を示す第2履歴値を前記第2ページに関連付けて管理する、請求項14に記載のメモリシステム。
【請求項17】
前記メモリコントローラは、前記第1履歴値と前記第2履歴値とが同じ場合に、前記第1履歴値及び前記第2履歴値と同じ履歴値を前記共通履歴値として記憶する、請求項15又は16に記載のメモリシステム。
【請求項18】
前記メモリコントローラは、前記読み出し検査を定期的に実行する、請求項14乃至17のいずれか一に記載のメモリシステム。
【請求項19】
複数のページの各々の読み出し電圧値について複数のパラメータが設定されており、
前記メモリコントローラは、前記読み出し検査の結果に応じて、前記複数のパラメータを決定する、請求項14乃至18のいずれか一に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の一実施形態は不揮発性メモリを備えるメモリシステムに関する。
【背景技術】
【0002】
近年、不揮発性メモリを備えるメモリシステムが広く普及している(特許文献1~3)。このようなメモリシステムとして、NAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)が知られている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許出願公開第2019/0332323号明細書
【特許文献2】米国特許第8248856号明細書
【特許文献3】米国特許第9449695号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
本開示は、メモリシステムの動作を高速化させることを目的とする。
【課題を解決するための手段】
【0005】
一実施形態に係るメモリシステムは、第1ページ及び第2ページを含む不揮発性メモリと、前記不揮発性メモリを制御するメモリコントローラと、を備える。前記メモリコントローラは、第1時刻に前記第1ページに対する第1書き込み動作を行い、前記第1時刻の後の第2時刻に前記第2ページに対する第2書き込み動作を行い、前記第1時刻と前記第2時刻との時間差と、前記第1書き込み動作よりも後に行われた前記第1ページに対する第1読み出し動作が成功した条件を示す第1履歴値と、に基づいて、前記第1読み出し動作の後に行われる前記第2ページに対する第2読み出し動作の条件を決定する。
【図面の簡単な説明】
【0006】
図1】一実施形態に係るメモリシステムの構成を示すブロック図である。
図2】一実施形態に係るメモリセルトランジスタのしきい値分布を示す図である。
図3】一実施形態に係るメモリシステムにおいて用いられるシフトテーブルを示す図である。
図4】一実施形態に係るメモリシステムにおいて用いられる書き込み時間テーブルを示す図である。
図5】一実施形態に係るメモリシステムにおいて用いられる履歴グループテーブルを示す図である。
図6】一実施形態に係るメモリシステムにおいて用いられる履歴テーブルの変形例を示す図である。
図7】一実施形態に係るメモリシステムの読み出し動作を示すフローチャートである。
図8】一実施形態に係るメモリシステムにおける書き込み時間テーブルと履歴テーブルとの関係を示す図である。
図9】一実施形態に係るメモリシステムの書き込み動作を示すフローチャートである。
図10】一実施形態に係るメモリシステムにおける書き込み時間テーブルと履歴テーブルとの関係を示す図である。
図11】一実施形態に係るメモリシステムにおいて、他の読み出しグループの履歴情報を用いて読み出し条件を推測する方法を示す図である。
図12】一実施形態に係るメモリシステムにおいて、他の読み出しグループの履歴情報を用いて読み出し条件を推測する方法を示す図である。
図13】一実施形態に係るメモリシステムにおいて、他の読み出しグループの履歴情報を用いて読み出し条件を推測する方法を示す図である。
図14】一実施形態に係るメモリシステムにおいて、読み出し条件に応じて読み出しグループを更新する図である。
図15】一実施形態に係るメモリシステムにおいて用いられる書き込み時間テーブルの圧縮方法を示す図である。
図16】一実施形態に係るメモリシステムの構成を示すブロック図である。
図17】一実施形態に係るメモリシステムにおける履歴値のループ検査を示すフローチャートである。
図18】一実施形態に係るメモリシステムにおける履歴テーブルの更新を示す図である。
図19】一実施形態に係るメモリシステムにおける履歴値のループ検査を示すフローチャートである。
図20】一実施形態に係るメモリシステムにおける履歴テーブルの更新を示す図である。
図21】一実施形態に係るメモリシステムにおける履歴テーブルの更新を示す図である。
図22】一実施形態に係るメモリシステムの応用例を示す図である。
図23】一実施形態に係るメモリシステムの応用例を示す図である。
【発明を実施するための形態】
【0007】
以下、実施形態にかかるメモリシステムについて、図面を参照して具体的に説明する。以下の説明において、略同一の機能及び構成を有する構成要素について、同一符号が付されており、必要な場合にのみ重複する説明が行われる。以下に示す各実施形態は、この実施形態の技術的思想を具体化するための装置や方法を例示する。実施形態の技術思想は、構成要素の材質、形状、構造、配置等を下記のものに限定されない。実施形態の技術的思想は、特許請求の範囲に対して、種々の変更を加えたものであってもよい。
【0008】
なお、以下の各実施形態は、技術的な矛盾を生じない限り、互いに組み合わせることができる。
【0009】
<第1実施形態>
第1実施形態に係るメモリシステムについて説明する。第1実施形態に係るメモリシステムは、例えば、半導体記憶装置としてのNAND型フラッシュメモリと、当該NAND型フラッシュメモリを制御するメモリコントローラと、を含む。本実施形態において、メモリコントローラは、メモリの読み出し動作及び書き込み動作などの制御を行う機能を有する。メモリコントローラは、当該メモリの書き込み動作時に、書き込み動作を行った時刻又はある基準時からの時間差を記憶する。そして、メモリコントローラは、当該メモリの読み出し動作時に、記憶された時刻又は時間差の情報に基づいて、読み出し動作の条件を決定する。
【0010】
1-1.メモリシステム1の全体構成
図1は、一実施形態に係るメモリシステムの構成を説明するためのブロック図である。図1に示すように、メモリシステム1は、メモリコントローラ10と、複数のメモリセルを含む不揮発性メモリ20とを備える。メモリシステム1は、ホスト30と接続可能である。図1では、メモリシステム1とホスト30とが接続された状態が示されている。ホスト30は、例えば、パーソナルコンピュータ、携帯端末などの電子機器である。
【0011】
不揮発性メモリ20は、複数のメモリチップ21を含む。メモリコントローラ10は複数のメモリチップ21の各々を制御する。具体的には、メモリコントローラ10は、メモリチップ21の各々に対してデータの書き込み動作及び読み出し動作を実行する。複数のメモリチップ21の各々は、NANDバスを介してメモリコントローラ10に接続されている。各々のメモリチップ21は、複数のダイ22を含む。ダイ22は、メモリセルが形成されたウェハ単位を意味する。複数のダイ22が積層されることでメモリチップ21が構成されている。各々のダイ22には、複数のメモリブロック23が設けられている。メモリブロック23は一括消去が可能な単位である。メモリブロック23に設けられた全てのメモリセルトランジスタは同じソース線に接続されている。メモリブロック23の1つの単位を「物理ブロック」という場合がある。また、メモリセルトランジスタを単に「メモリセル」という場合がある。
【0012】
不揮発性メモリ20は、データを不揮発に記憶する不揮発性メモリであり、例えば、NAND型フラッシュメモリ(以下、単にNANDメモリという)である。以下の説明では、不揮発性メモリ20としてNANDメモリが用いられた場合を例示するが、不揮発性メモリ20として3次元構造フラッシュメモリ、ReRAM(Resistance Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)等のNANDメモリ以外の半導体記憶装置を用いることができる。不揮発性メモリ20が半導体記憶装置であることは必須ではない。半導体記憶装置以外の種々の記憶媒体に対して本実施形態を適用することができる。
【0013】
メモリシステム1は、メモリコントローラ10と不揮発性メモリ20とが1つのパッケージとして構成されるメモリカード等であってもよく、SSD(Solid State Drive)等であってもよい。
【0014】
メモリコントローラ10は、例えばSoC(System-On-a-Chip)として構成される半導体集積回路である。以下で説明するメモリコントローラ10の各構成要素の動作の一部又は全部はハードウエアによって実現されるが、CPU(Central Processing Unit)がファームウエアを実行することによって実現されてもよい。
【0015】
メモリコントローラ10は、ホスト30からの書き込み要求に従って不揮発性メモリ20への書き込み動作を制御し、ホスト30からの読み出し要求に従って不揮発性メモリ20からの読み出し動作を制御する。メモリコントローラ10は、プロセッサ(Processor)11、RAM(Random Access Memory)12、ROM(Read Only Memory)13、ランダマイザ(Randomizer)14、ECC回路(ECC)15、圧縮・伸張回路(Compression/Decompression Circuit)16、ホストインタフェース(Host I/F)17、及びメモリインタフェース(Memory I/F)18を備える。これらの機能ブロックは内部バス19で相互に接続されている。
【0016】
プロセッサ11は、メモリシステム1の各機能ブロックを統括的に制御する制御部である。プロセッサ11は、ホスト30からの要求をホストインタフェース17経由で受け付けた場合に、その要求に応じた制御を行う。例えば、プロセッサ11は、ホスト30からの書き込み要求に応じて、不揮発性メモリ20へのデータの書き込み動作をメモリインタフェース18へ指示する。プロセッサ11は、ホスト30からの読み出し要求に応じて、不揮発性メモリ20からのデータの読み出し動作をメモリインタフェース18へ指示する。
【0017】
プロセッサ11は、ホスト30から書き込み要求を受信した場合、RAM12に保持されているデータに対して、不揮発性メモリ20上の格納領域(メモリ領域)を決定する。すなわち、プロセッサ11は、データの書き込み先を管理する。ホスト30から受信したデータの論理アドレスと当該データが格納された不揮発性メモリ20上の格納領域を示す物理アドレスとの対応はアドレス変換テーブルに格納される。プロセッサ11は、書き込み要求に応じた書き込み動作を実行する際に、書き込み動作が行われた時刻又はある基準時からの時間差をRAM12の書き込み時間テーブルに記憶する。
【0018】
プロセッサ11は、ホスト30から読み出し要求を受信した場合、読み出し要求によって指定された論理アドレスを、上述のアドレス変換テーブルを用いて物理アドレスに変換し、当該物理アドレスからの読み出し動作をメモリインタフェース18へ指示する。
【0019】
図1に示すように、プロセッサ11は履歴値管理部110及びパトロール管理部120を含む。履歴値管理部110は、後述するシフトテーブル200、書き込み時間テーブル400、及び履歴グループテーブル500を管理する。また、履歴値管理部110は、読み出し要求に応じた読み出し動作を実行する際に、上記の書き込み時間テーブルに記憶された時刻又は時間差、及び過去に読み出し動作に成功した条件(履歴値)を管理する履歴グループテーブル500に基づいて読み出し動作の条件を決定する。パトロール管理部120は、ホスト30からの要求とは別にバックグラウンド処理として不揮発性メモリ20に対する読み出し検査を実行し、不揮発性メモリ20に含まれるメモリセルの読み出し条件(履歴値)の確認を行う。
【0020】
NANDメモリでは、一般に、「ページ」と呼ばれるデータ単位で書き込み動作及び読み出し動作が行われ、上記の物理ブロックのデータ単位で消去が行われる。以下の説明において、「ページ」は書き込み動作における最小単位を意味する。同一のワード線に接続される複数のメモリセルを「メモリセルグループ」という。メモリセルがSLC(Single Level Cell)である場合は、1つのメモリセルグループによって1ページが構成される。1つのメモリセルグループによって2ページが構成されるMLC(Multi Level Cell)、1つのメモリセルグループによって3ページが構成されるTLC(Triple Level Cell)、又は1つのメモリセルグループによって4ページが構成されるQLC(Quad Level Cell)などの多ビットセルである場合、1つのメモリセルグループが複数ページに対応する。各メモリセルはワード線及びビット線の両方に接続される。したがって、ワード線を識別するアドレスとビット線を識別するアドレスとを用いて各メモリセルを識別することが可能である。
【0021】
RAM12は、例えばデータバッファとして使用され、メモリコントローラ10がホスト30から受信したデータを不揮発性メモリ20へ記憶させるまでに一時的に保持する。RAM12は、不揮発性メモリ20から読み出したデータをホスト30へ送信するまでの間に一時的に保持する。RAM12として、例えば、SRAM(Static Random Access Memory)又はDRAM(Dynamic Random Access Memory)などの汎用メモリを用いることができる。
【0022】
RAM12は、シフトテーブル200、書き込み時間テーブル400、及び履歴グループテーブル500を含む。RAM12は、上記のテーブルの他に、アドレス変換テーブル、及び起動時等に不揮発性メモリ20の特定の領域から読み出されて展開されるマスタテーブル(スナップショット)などの各種管理テーブル、又は各種管理テーブルの変更差分であるログ情報などを記憶する。上記のように、RAM12はワーキングメモリとして使用されてもよい。RAM12に記憶される上記のテーブルのうち、シフトテーブル200、書き込み時間テーブル400、及び履歴グループテーブル500の詳細は後述する。
【0023】
ROM13は、メモリコントローラ10を動作させるための種々のプログラムやパラメータ等を記憶する。ROM13に格納されているプログラムやパラメータ等は、必要に応じてプロセッサ11に読み出されて実行される。
【0024】
ランダマイザ14は、例えば線形帰還シフトレジスタ等を含み、入力されたシード値に対して一義的に求められる擬似乱数を生成する。ランダマイザ14によって生成された擬似乱数は、例えばプロセッサ11において書き込みデータとの排他的論理和が計算される。これにより、不揮発性メモリ20に書き込まれる書き込みデータがランダマイズされる。また、ランダマイザ14は不揮発性メモリ20から読み出されたデータに対するランダマイズの解除を実行する。ランダマイズの解除とは、ランダマイズされたデータからランダマイズ前の元のデータを得ることである。
【0025】
ECC回路15は、プロセッサ11からの指示に基づいて、書き込み動作時のECC符号化(誤り訂正符号化)及び読み出し動作時のECC復号(誤り訂正復号)を実行する。ECC回路15の符号化方式として、例えば、LDPC(Low-Density Parity-Check)符号、BCH(Bose-Chaudhuri-Hocquenghem)符号、又はRS(Reed-Solomon)符号を用いた符号化方式を採用することができる。
【0026】
圧縮・伸張回路16は、不揮発性メモリ20へ書き込むデータを圧縮する符号化器として動作する。圧縮・伸張回路16は、不揮発性メモリ20から読み出されたデータを伸張する復号器としても動作する。
【0027】
ホストインタフェース17は、ホスト30とホストインタフェース17との間のインタフェース規格に従った処理を実行する。ホストインタフェース17は、ホスト30から受信した要求及び書き込み対象のデータなどを内部バス19に出力する。ホストインタフェース17は、不揮発性メモリ20から読み出され、圧縮・伸張回路16によって伸張されたデータをホスト30へ送信する。ホストインタフェース17は、プロセッサ11からの応答などをホスト30へ送信する。
【0028】
メモリインタフェース18は、プロセッサ11の指示に基づいて、不揮発性メモリ20への書き込み動作を行う。メモリインタフェース18は、プロセッサ11の指示に基づいて、不揮発性メモリ20からの読み出し動作を行う。
【0029】
ホスト30からホストインタフェース17へ送信されたデータは、内部バス19に転送されてRAM12に一時的に保持される。当該データは、圧縮・伸張回路16によって圧縮され、ランダマイザ14によってランダマイズされ、ECC回路15により誤り訂正符号化される。その後、当該データは、メモリインタフェース18を介して不揮発性メモリ20に書き込まれる。すなわち、プロセッサ11は、ホスト30から送信されたデータに基づくデータを不揮発性メモリ20に書き込む。一方、不揮発性メモリ20から読み出されたデータは、ECC回路15によって誤り訂正復号が行われる。その後、当該データについて、ランダマイザ14によってランダマイズの解除が実行され、圧縮・伸張回路16によって伸張されることで、オリジナルのデータに復元される。復元されたデータは、例えばRAM12に一時的に保持された後、ホストインタフェース17を介してホスト30へ転送される。すなわち、プロセッサ11は、不揮発性メモリ20から読み出されたデータに基づくデータをホスト30へ送信する。圧縮・伸張回路16によって圧縮・伸張されるデータ及び/又はランダマイザ14によってランダマイズ・ランダマイズの解除が実行されるデータ及び/又はECC回路15によって符号化されるデータには、上記のデータ以外にも、メモリコントローラ10内部で用いる制御データ等が含まれてもよい。
【0030】
以上のような構成を備えるメモリシステム1における書き込み動作では、プロセッサ11は、不揮発性メモリ20への書き込み動作実行時に、圧縮・伸張回路16に対してデータの圧縮を指示する。その際、プロセッサ11は、不揮発性メモリ20における書き込みデータの格納場所(格納アドレス)を決定し、決定した格納場所をメモリインタフェース18へ指示する。圧縮・伸張回路16は、プロセッサ11からの指示に基づいて、RAM12上のデータを圧縮する。そして、ランダマイザ14は、プロセッサ11からの指示に基づいて、RAM12上の圧縮されたデータをランダマイズする。そして、ECC回路15は、プロセッサ11からの指示に基づいて、ランダマイズされたデータをさらにECC符号化する。これにより生成された書き込みデータは、メモリインタフェース18を介して不揮発性メモリ20の指定された格納場所に書き込まれる。
【0031】
一方、読み出し動作では、プロセッサ11は、不揮発性メモリ20に対する読み出し動作時に、不揮発性メモリ20上のアドレスを指定し、指定されたアドレスに応じてメモリセルの読み出し動作の条件を決定してメモリインタフェース18へ読み出し動作の実行を指示する。プロセッサ11は、ECC回路15へECC復号の開始を指示するとともに、ランダマイザ14へランダマイズの解除の開始を指示し、圧縮・伸張回路16へ伸張の開始を指示する。メモリインタフェース18は、プロセッサ11の指示に従って、不揮発性メモリ20の指定されたアドレスに対する読み出し動作を実行し、この読み出し動作によって得られた読み出しデータをECC回路15に入力する。ECC回路15は入力された読み出しデータをECC復号する。ランダマイザ14はECC復号されたデータに対してランダマイズの解除を実行する。圧縮・伸張回路16はランダマイズの解除が実行されたデータを伸張する。この伸張に成功した場合、プロセッサ11は、伸張されたオリジナルのデータをRAM12に格納する。一方、ECC復号またはランダマイズの解除または伸張に失敗した場合、プロセッサ11は、例えば、ホスト30へリードエラーを通知する。
【0032】
1-2.メモリセルトランジスタのしきい値分布
図2は、一実施形態に係るメモリセルとして用いられるトランジスタ(メモリセルトランジスタ)のしきい値分布を示す図である。なお、図2では、メモリセルトランジスタのしきい値分布の一例として、TLCについて説明するが、メモリシステム1においてQLC、MLC、SLCが用いられてもよい。
【0033】
図2は、メモリセルトランジスタのしきい値分布、データの割り付け、読み出し電圧、及びベリファイ電圧の一例をそれぞれ示す。図2に示すしきい値分布の縦軸はメモリセルトランジスタの個数(Number of cells)に対応し、横軸はメモリセルトランジスタのしきい値電圧Vth(Threshold voltage)に対応している。
【0034】
図2に示すように、TLC方式において複数のメモリセルトランジスタは、8つのしきい値分布を形成する。この8個のしきい値分布を書き込みレベルという場合がある。当該書き込みレベルを、しきい値電圧の低い方から順に“Er”レベル、“A”レベル、“B”レベル、“C”レベル、“D”レベル、“E”レベル、“F”レベル、“G”レベルと称する。これらの書き込みレベルには、例えば以下に示すような、それぞれ異なる3ビットデータが割り当てられる。この3ビットデータを下位ビット(Lower)、中位ビット(Middle)、上位ビット(Upper)という。
【0035】
同一ワード線に接続されたメモリセルトランジスタが保持するLowerビットの集合をLowerページといい、Middleビットの集合をMiddleページといい、Upperビットの集合をUpperページという。データの書き込み動作及び読み出し動作は、上記のページ単位で行われる。
【0036】
“Er”レベル:“111”データ
“A”レベル:“110”データ
“B”レベル:“100”データ
“C”レベル:“000”データ
“D”レベル:“010”データ
“E”レベル:“011”データ
“F”レベル:“001”データ
“G”レベル:“101”データ
なお、上記のデータは、Upper、Middle、Lowerの順で表記されている。
【0037】
隣接するしきい値分布の間には、それぞれ書き込み動作で使用されるベリファイ電圧が設定される。具体的には、“A”レベル、“B”レベル、“C”レベル、“D”レベル、“E”レベル、“F”レベル、及び“G”レベルにそれぞれ対応して、ベリファイ電圧AV、BV、CV、DV、EV、FV、及びGVが設定される。
【0038】
例えば、ベリファイ電圧AVは、“Er”レベルにおける最大のしきい値電圧と“A”レベルにおける最小のしきい値電圧との間に設定される。メモリセルトランジスタにベリファイ電圧AVが印加されると、しきい値電圧が“Er”レベルに含まれるメモリセルトランジスタがオン状態になり、しきい値電圧が“A”レベル以上のしきい値分布に含まれるメモリセルトランジスタがオフ状態になる。
【0039】
その他のベリファイ電圧BV、CV、DV、EV、FV、及びGVもベリファイ電圧AVと同様に設定される。ベリファイ電圧BVは、“A”レベルと“B”レベルとの間に設定される。ベリファイ電圧CVは、“B”レベルと“C”レベルとの間に設定される。ベリファイ電圧DVは、“C”レベルと“D”レベルとの間に設定される。ベリファイ電圧EVは、“D”レベルと“E”レベルとの間に設定される。ベリファイ電圧FVは、“E”レベルと“F”レベルとの間に設定される。ベリファイ電圧GVは、“F”レベルと“G”レベルとの間に設定される。
【0040】
例えば、ベリファイ電圧AVは0.8Vに、ベリファイ電圧BVは1.6Vに、ベリファイ電圧CVは2.4Vに、ベリファイ電圧DVは3.1Vに、ベリファイ電圧EVは3.8Vに、ベリファイ電圧FVは4.6Vに、ベリファイ電圧GVは5.6Vに、それぞれ設定されてもよい。しかし、これらのベリファイ電圧AV~GVは、上記の電圧値に限定されない。ベリファイ電圧AV~GVは、例えば、0.0V~7.0Vの範囲で、適宜、段階的に設定されてもよい。
【0041】
隣接するしきい値分布の間には、それぞれの読み出し動作で使用される読み出し電圧が設定される。例えば、メモリセルトランジスタのしきい値電圧が“Er”レベルに含まれるのか、“A”レベル以上に含まれるのかを判定する読み出し電圧ARは、“Er”レベルにおける最大のしきい値電圧と“A”レベルにおける最小のしきい値電圧との間に設定される。
【0042】
その他の読み出し電圧BR、CR、DR、ER、FR、及びGRも読み出し電圧ARと同様に、隣接するレベル間に設定される。例えば、読み出し電圧BRは、“A”レベルと“B”レベルとの間に設定される。読み出し電圧CRは、“B”レベルと“C”レベルとの間に設定される。読み出し電圧DRは、“C”レベルと“D”レベルとの間に設定される。読み出し電圧ERは、“D”レベルと“E”レベルとの間に設定される。読み出し電圧FRは、“E”レベルと“F”レベルとの間に設定される。読み出し電圧GRは、“F”レベルと“G”レベルとの間に設定される。
【0043】
読み出しパス電圧VREADは、最も高いしきい値分布(例えば“G”レベル)の最大のしきい値電圧よりも高い電圧値に設定される。読み出しパス電圧VREADがゲートに印加されたメモリセルトランジスタは、記憶するデータに依らずにオン状態になる。
【0044】
ベリファイ電圧AV、BV、CV、DV、EV、FV、及びGVは、それぞれ読み出し電圧AR、BR、CR、DR、ER、FR、及びGRよりも高い電圧に設定される。つまり、ベリファイ電圧AV~GVは、それぞれ“A”レベル、“B”レベル、“C”レベル、“D”レベル、“E”レベル、“F”レベル、及び“G”レベルのしきい値分布の下裾近傍に設定される。
【0045】
上記のデータの割り付けが適用された場合、読み出し動作において下位ビットの1ページデータ(Lowerページのデータ)は、読み出し電圧AR及びERを用いた読み出し結果によって確定する。中位ビットの1ページデータ(Middleページのデータ)は、読み出し電圧BR、DR、及びFRを用いた読み出し結果によって確定する。上位ビットの1ページデータ(Upperページのデータ)は、読み出し電圧CR及びGRを用いた読み出し結果によって確定する。このように、Lowerページ、Middleページ、及びUpperページのデータが、それぞれ2回、3回、及び2回の読み出し動作によって確定するため、このデータの割り付けは“2-3-2コード”と称される。
【0046】
1-3.管理テーブル
図3図5を用いて、RAM12に記憶される管理テーブルの一例について説明する。
【0047】
1-3-1.シフトテーブル200
図3は、一実施形態に係るメモリシステムにおいて用いられるシフトテーブルを示す図である。図3に示すように、シフトテーブル200は、m+1個のエントリを有する。ここで、mは1以上の整数である。各エントリには、“#0”~“#m”のインデックス(Index)が割り当てられている。各エントリには、読み出し電圧AV~GVにおいて、選択ワード線に印加される読み出し電圧又は当該読み出し電圧のシフト値(Shift value)に関する情報が記憶されている。図3の例では、Index“#0”に対して「書き込み直後の読み出し値」が関連付けられている。同様に、Index“#1”に対して「1日後の読み出し値」が関連付けられている。Index“#2”に対して「3日後の読み出し値」が関連付けられている。なお、図3に示すIndexは、他のテーブルにおいて不揮発性メモリ20に含まれるメモリセルの読み出し条件(履歴値)として管理される。したがって、Indexを「履歴値」という場合がある。また、図3は、シフトテーブル“#0”におけるインデックス及びシフト値を示すが、他のシフトテーブル200では、図3とは異なるインデックス及びシフト値が関連付けられている。
【0048】
上記のように、図2に示す“Er”レベル~“G”レベルの各々のレベルは、読み出し電圧“AR”~“GR”によって区別することができる。しかし、データを書き込んだ後に時間が経過すると、リークによる保持した電荷量の低下及び隣接するメモリセルトランジスタ間の干渉(セル間干渉効果)によって、しきい値分布が低電圧側にシフトする場合がある。このシフト量は、メモリセルトランジスタへの書き込みからの経過時間が長いほど大きく、書き込み回数が多いブロックほど大きい。その結果、各レベルのしきい値分布の幅が拡がり、当該しきい値分布が各レベルのしきい値分布の低電圧側に設定された読み出し電圧と重なってしまう場合がある。
【0049】
上記のように、セル間干渉効果によってしきい値分布が変動すると、上記の読み出し電圧“AR”~“GR”では正しくデータを読み出すことができない場合がある。つまり、読み出し動作を行った対象のビットに対してエラーが通知される。エラービットの数が、ECC回路15が訂正可能なビット数を超えると、データの読み出し動作が失敗したと判断される。
【0050】
上記のようにしきい値分布が変動した場合に、メモリコントローラ10は、読み出し電圧を図2の“AR”~“GR”から低電圧側にシフトさせて、再度データの読み出し動作を試みる。このような読み出し動作をシフトリードという。図3のシフト値には、読み出し電圧“AR”~“GR”について、シフトさせる量が設定されている。換言すると、図3のシフト値には複数のパラメータ(読み出し電圧“AR”~“GR”)が設定されている。そして、シフトテーブル200におけるインデックス#が決定されることは、上記の複数のパラメータが決定されることを意味する。
【0051】
1-3-2.書き込み時間テーブル400
図4は、一実施形態に係るメモリシステムにおいて用いられる書き込み時間テーブルを示す図である。図4に示すように、書き込み時間テーブル400では、所定のブロック(Blk)及び所定のページ(Page)に対応するワード線WLのアドレスと、当該ワード線WLにおいて書き込み動作が行われた書き込み時刻(Write Time)とが、互いに関連付けて管理されている。図4では、書き込み時刻はワード線単位で記憶される。ワード線には複数のページが属しているため、上記の構成を換言すると、書き込み時刻はページグループ単位で記憶される、ということができる。ただし、書き込み時刻はワード線に含まれるページ単位で記憶されてもよい。
【0052】
図4において、ワード線WL0に属するページを「第1ページ」といい、ワード線WL0に属する第1ページのグループを「第1ページグループ」という場合がある。また、あるブロックに含まれるワード線WL0に属するページと、別のブロックに含まれるワード線WL0に属するページとに対してまとめて書き込み動作を行う場合、これらのページを第1ページグループということもできる。同様に、ワード線WL1に属するページを「第2ページ」といい、ワード線WL1に属する第2ページのグループを「第2ページグループ」という場合がある。第1ページ又は第1ページグループに対する書き込み動作を「第1書き込み動作」という場合がある。第2ページ又は第2ページグループに対する書き込み動作を「第2書き込み動作」という場合がある。第1ページ又は第1ページグループに対する読み出し動作を「第1読み出し動作」という場合がある。第2ページ又は第2ページグループに対する読み出し動作を「第2読み出し動作」という場合がある。第1書き込み動作を行った時刻を「第1時刻」という場合がある。第2書き込み動作を行った時刻を「第2時刻」という場合がある。
【0053】
上記の場合、書き込み時間テーブル400では、第1ページ又は第1ページグループと、第1書き込み動作が行われた第1時刻tと、が関連付けて記憶されている、ということができる。同様に、書き込み時間テーブル400では、第2ページ又は第2ページグループと、第2書き込み動作が行われた第2時刻tと、が関連付けて記憶されている、ということができる。
【0054】
上記と同様に、ワード線WL7に属するページを「第3ページ」といい、ワード線WL7に属する第3ページのグループを「第3ページグループ」という場合がある。第3ページ又は第3ページグループに対する書き込み動作を「第3書き込み動作」という場合がある。第3ページ又は第3ページグループに対する読み出し動作を「第3読み出し動作」という場合がある。第3書き込み動作を行った時刻を「第3時刻」という場合がある。
【0055】
図4に示す書き込み時間テーブル400では、全てのワード線WLに対して書き込み時刻が記憶された例が示されているが、ワード線WL0~WL7とワード線WL8~WL15とをそれぞれ1つの読み出しグループと定義した場合、全てのワード線WLに対して書き込み時刻が記憶されていなくてもよい。例えば、各々の読み出しグループに対して1つのワード線(例えば、ワード線WL0、WL8、・・・)についてのみ時刻が記憶されていてもよく、読み出しグループの一部のワード線(例えば、偶数番目のワード線WL0、WL2、WL4、・・・)についての時刻が記憶されていてもよい。なお、時刻が記憶されるワード線は、必ずしも等間隔のワード線でなくてもよい。
【0056】
詳細は後述するが、書き込み時間テーブル400において、書き込み時刻の代わりに、ある基準時と書き込み動作が実行された時刻との時間差が記憶されていてもよい。例えば、ブロックにおける最初のワード線WL0について、書き込み時刻tが記憶され、その他のワード線WL1~WLNについて、ワード線WL0における書き込み時刻tと対象のワード線における書き込み時刻(t~tN)との時間差が記憶されてもよい。ここで、Nは1以上の整数である。以下の説明において、書き込み時刻及び上記の時間差をまとめて「書き込み時間情報」という場合がある。
【0057】
1-3-3.履歴グループテーブル500
図5は、一実施形態に係るメモリシステムにおいて用いられる履歴グループテーブルを示す図である。図5に示すように、履歴グループテーブル500では、書き込み時間情報に基づいて決定される履歴グループ510(Group #)と、各グループに割り当てられたシフトテーブル200(Table #)と、シフトテーブル200におけるIndex(履歴値)とが、互いに関連付けて管理されている。図5の例では、履歴グループテーブル500はn+1個の履歴グループ510を有する。ここで、nは1以上の整数である。上記履歴グループ510は、所定の期間内に書き込み動作が行われたページがまとめられたものである。図5の履歴値は、対象のページに対する読み出し動作が成功した条件(シフト値)に相当する。履歴値は、ホスト30からの読み出し要求に基づく読み出し動作によって得られてもよく、当該読み出し要求とは別に、後述するバックグラウンド処理における不揮発性メモリ20の読み出し検査によって得られてもよい。メモリコントローラ10は、履歴グループテーブル500に基づいて、選択されたページ及びワード線WLに印加すべき読み出し電圧を決定する。
【0058】
例えば、同日に書き込み動作が完了したページを同一の履歴グループ510とする。又は、図4の書き込み時間テーブル400において、ワード線WL0に属するページ又はページグループに対して書き込み動作が行われた時刻(以降、「ワード線WL0の書き込み時刻t」という。他のワード線WLについても上記と同様の表現を用いる。)を基準時とした場合、ワード線WL0と、ワード線WL0の書き込み時刻tから所定の期間内に書き込み動作が完了したワード線WLと、を同一の履歴グループ510とする。換言すると、ワード線WL0の書き込み時刻tと他のワード線WLの書き込み時刻(t~tN)との時間差が所定の時間内である場合、これらのワード線WLを同一の履歴グループ510にグループ化して管理する。書き込み時刻に基づいてグループ化する動作は、読み出し動作時に行われてもよく、書き込み動作時に行われてもよい。
【0059】
読み出し動作時にグループ化を行う場合、書き込み時間テーブル400に記憶された書き込み時刻に基づいて各ワード線WLの書き込み時刻間の時間差を計算し、計算された時間差に基づいてグループ化が行われる。なお、詳細は後述するが、書き込み動作時にグループ化を行う場合、ある基準時(例えば、対象のブロックにおける最初のワード線WL0の書き込み時刻t)から対象のワード線WLの書き込み時刻までの時間差に基づいてグループ化を行い、書き込み時間テーブル400に記憶する。
【0060】
1-3-4.履歴テーブル300
図6は、一実施形態に係るメモリシステムにおいて用いられる履歴テーブルの変形例を示す図である。当該変形例では、履歴値管理部110は、履歴グループテーブル500の他に履歴テーブル300を管理し、RAM12に履歴テーブル300を記憶してもよい。履歴値管理部110が履歴テーブル300を管理する場合、メモリコントローラ10は、履歴テーブル300を参照して、選択されたページ及びワード線WLに印加すべき読み出し電圧を決定することができる。図6に示すように、履歴テーブル300では、ブロック(Blk)、ページ(Page)、ワード線(WL)、及びシフトテーブル200におけるIndex(履歴値)が互いに関連付けて管理されている。なお、図6の履歴値は、上記の履歴グループテーブル500(図5参照)に基づいて得られる。ページ及びワード線WLは、ブロックに対応する物理アドレスを示す。
【0061】
図6では、ページ及びワード線WLの組み合わせに応じて、履歴値として図3のインデックスが設定されている。例えば、ブロック“#0”、ページ“Lower”、ワード線“WL0~WL7”の組み合わせに対して履歴値としてIndex“#0”が割り当てられている。上記のように複数のワード線WLによって構成されるグループに対して共通の履歴値が割り当てられている。このように共通の履歴値が割り当てられているグループを「読み出しグループ」という場合がある。
【0062】
上記のように、同一の読み出しグループに属するページは、同じ履歴値を用いて読み出し動作が行われる。例えば、ブロック“#0”、ページ“Lower”、ワード線“WL0”に対して求められた履歴値は、ブロック“#0”、ページ“Lower”、ワード線“WL1~WL7”の読み出し動作にも適用される。
【0063】
図6に示すように、ブロック“#0”、ページ“Lower”、ワード線“WL8~WL15”の読み出しグループに対して、履歴値としてIndex“#1”が割り当てられている。つまり、同じブロックであっても、異なるワード線WLに対して異なる履歴値が割り当てられる場合がある。
【0064】
1-4.動作フロー
図7及び図9を用いて、それぞれメモリシステム1における読み出し動作及び書き込み動作のフローを説明する。図7は、読み出し動作時に書き込み時間情報を用いて上記のグループ化を行う動作フローを示す。図9は、書き込み動作時に書き込み時間情報を用いて上記のグループ化を行う動作フローを示す。
【0065】
1-4-1.読み出し動作フロー
図7は、一実施形態に係るメモリシステムの読み出し動作を示すフローチャートである。図7に示すように、読み出し動作はステップS601~S609のステップを含む。これらのステップの動作は、メモリコントローラ10のプロセッサ11によって実行される。図7に示す動作は、ホスト30からの不揮発性メモリ20に対する読み出し要求に応じて開始される。読み出し動作が開始されると、まず、アドレス変換テーブルに基づいて、読み出し要求に係る論理アドレス情報から物理アドレス(ページ及びワード線WL)が特定される。そして、図4に示す書き込み時間テーブル400を参照して、上記の物理アドレスに対応する書き込み時間情報を確認する(ステップS601)。
【0066】
図4の書き込み時間テーブル400を参照して上記の動作を換言すると、ワード線WL0に属する第1ページ又は第1ページグループに対する第1書き込み動作の際に第1時刻tが記憶される。同様に、ワード線WL1に属する第2ページ又は第2ページグループに対する第2書き込みの際に第2時刻tが記憶される。
【0067】
S601で確認された書き込み時間情報から、図5における履歴グループ510を確認する(ステップS602)。具体的には、各ワード線WLの書き込み時刻に基づき、各ワード線WLが属する履歴グループ510を計算する。例えば、図4において、あるブロック内で最初に書き込み動作が行われるワード線WL0の書き込み時刻tを基準時とすると、ワード線WL0の履歴グループ510は、ワード線WL0の書き込み時刻tと読み出し動作が行われる読み出し時刻との差に基づいて決定される(図8参照)。また、上記の場合、ワード線WL1の履歴グループ510は、ワード線WL0の書き込み時刻tとワード線WL1の書き込み時刻tとの間の時間差に基づいて決定される(図8参照)。同様に、ワード線WL2の履歴グループ510は、ワード線WL0の書き込み時刻tとワード線WL2の書き込み時刻tとの間の時間差に基づいて決定される。
【0068】
履歴グループテーブル500の履歴値(Index #)は、ページ又はページグループに対する書き込み動作の後に行われた読み出し動作が成功した条件を示す。よって、第1書き込み動作よりも後に行われた第1ページ又は第1ページグループ(Group #0)に対する第1読み出し動作が成功した条件を「第1履歴値」ということができる。なお、本実施形態では、ワード線WL0に対する第1書き込み動作が行われた時刻(t)と第1読み出し動作が行われた時刻との差に基づいて決定されたグループがGroup #0である構成を例示したが、この例に限定されない。上記のS602の動作を換言すると、まず、第1時刻tと第2時刻tとの時間差を計算し、次に計算された時間差と、第1履歴値(Index #0)と、に基づいて、上記の第1読み出し動作の後に行われる第2ページ又は第2ページグループ(Group #1)に対する第2読み出し条件を決定するということができる。つまり、第2読み出し動作の条件(第2読み出し条件)を決定する際に第1時刻t及び第2時刻tに基づいて上記の時間差を計算する。なお、ワード線WL0~WL7に属するページ又はページグループに対して同じ履歴値が割り当てられている場合、上記の第1読み出し動作(又は、第2読み出し動作)が成功した条件を示す第1履歴値(又は、第2履歴値)を用いて、上記の第3ページ又は第3ページグループに対する第3読み出し動作を行う、ということができる。
【0069】
S602で確認された履歴グループ510から、図3に示す読み出し電圧のシフト値を確認する(ステップS603)。具体的には、図8に示すようにワード線WL1が履歴グループ510“#1”に属している場合、履歴グループテーブル500に基づいて、シフトテーブル“#0”及びIndex“#1”が読み出される。その結果、図3に示すシフトテーブル200に基づいて、ワード線WL1に供給される読み出し電圧のシフト値として「1日後の読み出し値」が読み出される。
【0070】
S603で確認されたシフト値を用いて読み出し動作が実行される(ステップS604)。この読み出し動作によって得られた読み出しデータがメモリコントローラ10に送信されると、ECC回路15によってエラー検出が行われる(ステップS605)。
【0071】
S605において、ECC回路15によってエラーが検出されない場合、又はECC回路15によってエラーを訂正することができた場合(S605の「Yes」)、読み出し動作が成功したと判断され、上記のシフト値を履歴値として保存し(ステップS606)、読み出し動作が完了する(End<リトライシーケンス終了>)。例えば、S606において、図5に示された履歴グループテーブル500において、読み出し動作が成功したときの読み出し条件(Table及びIndexのそれぞれの番号)を、該当のGroup #と関連付けて保存する。一方、S605において、読み出しデータに含まれるエラービット数がECC回路15によって訂正可能なビット数を超えている場合(S605の「No」)、履歴グループテーブル500において履歴グループ510に対応するインデックスが最大値であるか否か判断される(ステップS607)。
【0072】
S607において、履歴グループテーブル500の履歴グループ510に対応するインデックスが最大値(#m)である場合(S605の「Yes」)、読み出し動作の対象のブロックをリフレッシュ対象として記録し(ステップS608)、例えばVthトラッキング動作などのような、データを正しく読み出すための動作に移行する(End<次工程に進む>)。一方、S607において、履歴グループテーブル500の履歴グループ510に対応するインデックスが最大値ではない場合(S605の「No」)、当該履歴グループ510に対応するインデックスが繰り上げられ(ステップS609)、S604の工程に戻る。
【0073】
1-4-2.書き込み動作フロー
図9は、一実施形態に係るメモリシステムの書き込み動作を示すフローチャートである。図9に示すように、書き込み動作はステップS901~S904のステップを含む。これらのステップの動作は、メモリコントローラ10のプロセッサ11によって実行される。図9に示す動作は、ホスト30からの不揮発性メモリ20に対する書き込み要求に応じて開始される。
【0074】
書き込み動作が開始されると、まず、アドレス変換テーブルに書き込み対象のページの論理アドレスの情報が記録される(ステップS901)。記録された論理アドレス情報に基づいて物理アドレス(ページ及びワード線WL)が特定される。そして、特定された物理アドレスのページに対して書き込み動作が実行される(ステップS902)。
【0075】
S902で実行された書き込み動作が完了すると、プロセッサ11は、書き込み動作が完了したページの物理アドレスと、書き込み動作が行われた書き込み時刻とを取得する(ステップS903)。続いて、プロセッサ11は、対象のページの書き込み時刻とある基準時との時間差に基づいて、書き込みグループ410を決定し、書き込み時間テーブル400に記録する(図10参照)。なお、図10は、一実施形態に係るメモリシステムにおける書き込み時間テーブルと履歴テーブルとの関係を示す図である。
【0076】
上記のS903及びS904の動作を換言すると、ワード線WL0に属する第1ページ又は第1ページグループに対する第1書き込み動作の際に第1時刻tが記憶される。ワード線WL1に属する第2ページ又は第2ページグループに対する第2書き込み動作の際に、例えば第1時刻tと第2時刻tとの時間差が計算され、当該時間差に基づいて決定された書き込みグループ410が記憶される。
【0077】
なお、上記の「1-4-1.読み出しフロー」において用いられた図4の書き込み時間テーブル400とは異なり、「1-4-2.書き込みフロー」では、図10に示すように、ワード線WLのアドレスと、上記の書き込みグループ410とが関連付けて管理されている。
【0078】
書き込みグループ410は、図5に示す履歴グループ510と同様の概念のグループである。つまり、書き込みグループ410は、所定の期間内に書き込み動作が行われたページがまとめられたグループである。例えば、同日に書き込み動作が完了したページを同一の書き込みグループ410とする。又は、図10の書き込み時間テーブル400において、ワード線WL0の書き込み時刻tを基準時とした場合、ワード線WL0と、ワード線WL0の書き込み時刻tから所定の期間内に書き込み動作が完了したワード線WLと、を同一の書き込みグループ410とする。換言すると、ワード線WL0の書き込み時刻tと他のワード線WLの書き込み時刻との時間差が所定の時間内である場合、これらのワード線WLを同一の書き込みグループ410にグループ化して管理する。
【0079】
図10の書き込み時間テーブル400において、ワード線WL0の書き込み時刻tを基準時とする場合、基準時の対象となるワード線WL0について、ワード線WL0の書き込み時刻tが記憶されている。一方、ワード線WL0以外のワード線WL1~WLNについて、書き込みグループ410が割り当てられている。ここで、Nは1以上の整数である。書き込みグループ410のグループ番号#は、履歴グループ510のグループ番号#に対応している。
【0080】
読み出し動作を実行する場合は、書き込みグループ410に対応する履歴グループ510に基づいて読み出し電圧のシフト値を確認する。そして、確認されたシフト値を用いて、図7に示すS603以降のステップを実行することで読み出し動作を行う。
【0081】
以上のように、本実施形態に係るメモリシステム1によると、書き込み動作の完了から一定時間が経過して、メモリセルトランジスタのしきい値電圧Vthが変動している場合であっても、読み出し動作を実行する前に、当該メモリセルトランジスタに適した読み出し電圧を推定することができる。したがって、読み出し動作時のリトライやリフレッシュの回数を低減することができる。その結果、メモリシステム1の動作を高速化することができる。
【0082】
さらに、「1-4-1.読み出しフロー」の動作方法では、書き込み時間テーブル400において各アドレスに対する書き込み時刻が記憶されているのに対して、「1-4-2.書き込みフロー」の動作方法では、書き込み時間テーブル400に記憶される情報が書き込みグループ410(図10参照)を特定する値なので、「1-4-1.読み出しフロー」の動作方法に比べて書き込み時間テーブル400の容量を低減することができる。
【0083】
<第2実施形態>
図11図13を用いて、第2実施形態に係るメモリシステムについて説明する。第2実施形態に係るメモリシステムは、読み出し動作において、第1実施形態に係るメモリシステムと相違する。その他の点において、第2実施形態は第1実施形態と同様の構成を有するため、説明を省略する。第2実施形態の読み出し動作は、ワード線WLに属するページであって、読み出し動作の対象のページに対する履歴値(「ワード線WLに対する履歴値」という場合がある)が存在しない場合に、読み出し動作の対象ではないワード線WLに対する履歴値を利用して、読み出し動作の対象のワード線WLに対する読み出し電圧を推定する読み出し動作である。
【0084】
図11図13は、一実施形態に係るメモリシステムにおいて、他の読み出しグループの履歴情報を用いて読み出し条件を推測する方法を示す図である。第2実施形態の例では、図11に示すように、ブロック(Blk:#0)におけるワード線WL0に属するページに対して履歴値“#0”が存在し、ワード線WL1に属するページに対して履歴値“#1”が存在しているが、ブロック(Blk:#1)におけるワード線WL2及びワード線WL3に対して履歴値は存在していない。このような条件において、ブロック(Blk:#1)におけるワード線WL2及びワード線WL3に対する読み出し要求があった場合の動作について説明する。
【0085】
Blk:#1のワード線WL2及びワード線WL3に属するページに対する読み出し動作を実行する場合、図12に示す書き込み時間テーブル400を参照して、これらの読み出し条件が推定される。具体的には、当該ワード線WL2及びワード線WL3の各々の書き込み時刻から所定の範囲内の時刻に書き込み動作が実行されたページが属するワード線WLであって、図11において履歴値が関連付けられているワード線WLが検索される。又は、ある基準時とBlk:#1のワード線WL2又はワード線WL3に対する書き込み時刻との時間差が、図11において履歴値が関連付けられているワード線WLのうち、その基準時からの時間差が範囲内であるBlk:#0のワード線WLが検索される。
【0086】
例えば、上記の2つの具体例のうち前者の例において、上記の所定の範囲を1時間と規定した例について図12を用いて説明する。図12に示す例の場合、Blk:#1のワード線WL2に対する書き込み時刻「Nov. 24, 2020 19:00」との時間差が1時間であり、履歴値が関連付けられているBlk:#0のワード線WL0(書き込み時刻「Nov. 24, 2020 18:00」)が上記の検索結果として出力される。同様に、Blk:#1のワード線WL3に対する書き込み時刻「Nov. 27, 2020 9:00」との時間差が10分であり、履歴値が関連付けられているBlk:#0のワード線WL1(書き込み時刻「Nov. 27, 2020 9:10」)が上記の検索結果として出力される。そして、検索結果として出力されたBlk:#0のワード線WL0の履歴値“#0”をBlk:#1のワード線WL2の履歴値として設定し、Blk:#0のワード線WL1の履歴値“#1”をBlk:#1のワード線WL3の履歴値として設定する(図13参照)。
【0087】
上記の構成において、Blk:#1のワード線WL2又はワード線WL3に属するページを「第4ページ」といい、Blk:#1のワード線WL2又はワード線WL3に属する第4ページのグループを「第4ページグループ」という場合がある。第4ページ又は第4ページグループに対する書き込み動作を「第4書き込み動作」という場合がある。第4ページ又は第4ページグループに対する読み出し動作を「第4読み出し動作」という場合がある。第4書き込み動作を行った時刻を「第4時刻」という場合がある。上記の場合、第4読み出し動作が成功した条件を示す履歴値が存在しない場合、かつ、第4時刻と上記第1時刻(又は、上記第2時刻)とが所定の時間差内である場合、上記第1履歴値(又は、上記第2履歴値)を用いて第4読み出し動作を行う、ということができる。
【0088】
以上のように、第2実施形態に係るメモリシステム1によると、履歴値が存在しないページについて読み出し動作を実行する場合であっても、書き込み時刻に基づいて履歴値を推定することができる。
【0089】
なお、本実施形態では、書き込み時間テーブル400には各ワード線WLの書き込み時刻が記憶された場合について説明したが、図10のように、書き込み時間テーブル400に各ワード線WLに対して書き込みグループ410が記憶されていてもよい。その場合は、読み出し動作の対象であるワード線WL0と同じ書き込みグループ410に属するワード線WLに対する履歴値を使用することもでき、ワード線WL0と所定の関係にある書き込みグループ410に属するワード線WLに対する履歴値を使用することもできる。
【0090】
<第3実施形態>
図14を用いて、第3実施形態に係るメモリシステムについて説明する。第3実施形態に係るメモリシステムは、複数のワード線WLに共通の履歴グループ510が割り当てられる点において、第1実施形態に係るメモリシステムと読み出し動作が相違する。その他の点において、第3実施形態は第1実施形態と同様の構成を有するため、説明を省略する。図14において、上段のテーブルはある時点における状態を示すテーブルであり、中段のテーブルはその時点から一定時間経過後(例えば10日後)の状態を示すテーブルである。下段のテーブルは、中段のテーブルにおいてワード線ごとに履歴グループが割り当てられていたものを、一部のワード線に対して履歴グループを共通化した状態を示すテーブルである。
【0091】
図14に示すように、本実施形態のメモリシステム1において、ブロック“#0”、ワード線WL0に属するページ「Lower」及び「Middle」に対して1日目に書き込み動作が実行されている。同様に、ブロック“#0”、ワード線WL1に属するページ「Lower」及び「Middle」に対して2日目に書き込み動作が実行されている。ブロック“#0”、ワード線WL・・・に属するページ「Lower」及び「Middle」に対して3日目に書き込み動作が実行されている。ブロック“#0”、ワード線WL7に属するページ「Lower」及び「Middle」に対して4日目に書き込み動作が実行されている(図14の上段テーブル)。
【0092】
メモリセルトランジスタのしきい値電圧Vthの単位時間あたりの変動量は、経過時間が長くなるほど小さくなる。つまり、4日目にワード線WL7に対する書き込みが実行された直後は、まだワード線WL0~WL7に属するメモリセルトランジスタの各々における単位時間あたりのしきい値電圧Vthの変動量の差は大きいが、例えば、上記の4日目の書き込みからさらに10日後には、ワード線WL0~WL7に属するメモリセルトランジスタの各々における単位時間あたりのしきい値電圧Vthの変動量の差は非常に小さくなる。このように、単位時間あたりのしきい値電圧Vthの変動量が小さい場合、ワード線WL0~WL7に属するメモリセルトランジスタを等価として扱うことができる(図14の中段テーブル)。したがって、上記のような場合、ブロック“#0”、ページ「Lower」及び「Middle」、ワード線WL0~WL7に共通の履歴グループ“#0”を割り当てることができる(図14の下段テーブル)。
【0093】
上記の構成において、ページ「Lower」かつワード線WL0に対する履歴値を第1履歴値といい、ページ「Lower」かつワード線WL1に対する履歴値を第2履歴値というと、第1履歴値と第2履歴値とが同じ場合に、第1履歴値及び第2履歴値と同じ履歴値をワード線WL0~WL1に共通の共通履歴値として記憶する、ということができる。
【0094】
なお、上記の書き込み動作から一定時間経過後(上記の例では10日後)の履歴値は、ホスト30からの読み出し要求に基づく読み出し動作によって得られてもよく、当該読み出し要求とは別に、後述するバックグラウンド処理の読み出し検査によって得られてもよい。また、図2に示すように、各メモリセルトランジスタの読み出し電圧値について、複数のパラメータ(“A”レベル~“G”レベル)が設定されている。上記の履歴値の決定は、この複数のパラメータを決定することを意味する。この複数のパラメータの決定は、ホスト30からの読み出し要求に基づく読み出し動作によって得られてもよく、当該読み出し要求とは別に、後述するバックグラウンド処理の読み出し検査によって得られてもよい。
【0095】
上記のように、複数のワード線WLに共通の履歴グループ510を割り当てることで、履歴グループテーブル500の容量を低減することができるだけでなく、リトライレートやリフレッシュレートを低減することができる。
【0096】
なお、上記の例では、複数のワード線WLについて、割り当てられていた別々の履歴グループ510を共通の履歴グループ510に変更する構成を示したが、この構成に限定されない。例えば、書き込み動作の直後、又は書き込み動作の後の最初の読み出し動作の時点で、複数のワード線WLに対して共通の履歴グループ510を割り当てられることが判っている場合、これらの時点で複数のワード線WLに対して共通の履歴グループ510を割り当ててもよい。
【0097】
<第4実施形態>
図15を用いて、第4実施形態に係るメモリシステムについて説明する。第4実施形態に係るメモリシステムは、第1実施形態に係るメモリシステムと書き込み時間テーブルの構成が相違する。その他の点において、第4実施形態は第1実施形態と同様の構成を有するため、説明を省略する。第4実施形態の書き込み時間テーブルは、第1実施形態の書き込み時間テーブルが圧縮されたテーブルである。
【0098】
図15に示すように、第4実施形態では、書き込み時間テーブル400が圧縮されて圧縮テーブル420に変換されている。図15に示す書き込み時間テーブル400は、図10に示す書き込み時間テーブル400と類似のテーブルである。ブロック“#0”に対する書き込み時間テーブル400-0では、ワード線WL0~WL191に対する書き込みグループ410として“#0”が割り当てられている。同様に、ワード線WL192~WL287に対する書き込みグループ410として“#1”が割り当てられている。同様に、ワード線WL288~に対する書き込みグループ410-0として“#2”が割り当てられている。つまり、書き込みグループ410-0の値はワード線WL192及びWL288で切り替わる。上記と同様に、ブロック“#1”に対する書き込み時間テーブル400-1では、書き込みグループ410-1の値はワード線WL24、WL48、WL72、・・・で切り替わる。
【0099】
図15に示すように、圧縮テーブル420では、書き込みグループ410と、各々のグループにおいて書き込みグループ410の値が切り替わるワード線アドレスとが、互いに関連付けられて管理されている。上記のように、書き込みグループ“#0”では、ワード線WL192及びWL288でグループの値が切り替わるため、圧縮テーブル420では、ブロック“#0”に対して「192、288」という数値だけが記憶されている。同様に、圧縮テーブル420では、ブロック“#1”に対して「24、48、72、・・・」という数字だけが記憶されている。
【0100】
上記の構成において、書き込み時間テーブル400-0の各ワード線WLに属するグループを「メモリグループ」というと、例えばX個(WL0、・・・、WL192、・・・、WL288、・・・)のメモリグループに対するX個の読み出し条件が規定されたテーブル(書き込み時間テーブル400-0)において、X個のメモリグループの中に同じ読み出し条件のメモリグループ(WL0~WL191、WL192~WL287、又はWL288~)がある場合に、上記X個のメモリグループ又はX個の読み出し条件に基づいて書き込み時間テーブル400-0を圧縮する、ということができる。ここで、Xは1以上の整数である。
【0101】
以上のように、本実施形態に係るメモリシステム1によると、書き込み時間テーブル400に代えて圧縮テーブル420を用いることで、テーブルを格納するためのメモリ容量を低減することができる。
【0102】
<第5実施形態>
図16図21を用いて、第5実施形態に係るメモリシステムについて説明する。第5実施形態に係るメモリシステムは、ホスト30からの読み出し要求に応じた読み出し動作に加えて、ホスト30からの読み出し要求とは別にバックグラウンド処理として不揮発性メモリ20の読み出し検査を行う。そして、その検査結果に応じて履歴グループテーブル500を更新する。なお、上記の読み出し検査によって各ページの履歴値が検査され、必要に応じて履歴値が更新される。この履歴値の検査は、バックグラウンド処理として繰り返し行われるため、履歴値のループ検査という場合がある。
【0103】
5-1.メモリシステム1の全体構成
図16は、一実施形態に係るメモリシステムの構成を説明するためのブロック図である。図16の構成は図1の構成と類似しているが、図16のプロセッサ11が履歴値確認ルーチン部130を有する点において、図1の構成を相違する。その他の構成について、図16図1と同じなので、詳細な説明は省略する。履歴値確認ルーチン部130は、パトロール管理部120による不揮発性メモリ20の読み出し検査の結果に基づき、履歴グループテーブル500における履歴グループ510の統合、分割、又は例外規定などの処理を実行する。具体的には、履歴値確認ルーチン部130は、異なる履歴グループ510に対して割り当てられた履歴値が同じ場合、これらの履歴グループ510を1つの履歴グループ510に統合する処理を行う。又は、1つの履歴グループ510の中に異なる履歴値が割り当てられるべきメモリグループが存在することが判明した場合に、履歴グループ510を分割してそれぞれのページにとって適した履歴値を割り当てる、若しくは、当該メモリグループに対して例外規定を設定する。
【0104】
5-2.履歴値の統合処理の動作フロー
図17は、一実施形態に係るメモリシステムにおける履歴値のループ検査を示すフローチャートである。図17に示すように、履歴値のループ検査はステップS1701~S1705のステップを含む。これらのステップは、メモリコントローラ10のプロセッサ11(特に、上記のパトロール管理部120及び履歴値確認ルーチン部130)によって実行される。図17に示す動作は、ホスト30からの不揮発性メモリ20に対する読み出し要求に基づく読み出し動作とは別に実行される。また、図17に示す動作は定期的に実行される。
【0105】
まず、検査対象の履歴グループテーブル500について、各履歴グループ510の履歴値の検査が実行される(ステップS1701)。全ての履歴グループ510の履歴値の検査が終了すると、又は履歴グループ510の履歴値の検査をしながら、各履歴グループテーブル500において隣接する履歴グループ510の履歴値の比較が行われる(ステップS1702)。S1702では、図5の履歴グループ510のGroup“#k”の履歴値とGroup“#k+1”の履歴値とが比較される。ここで、kは0以上の整数である。具体的には、図5の履歴グループ510“#0”の履歴値と“#1”の履歴値とが比較され、“#1”の履歴値と“#2”の履歴値とが比較される。
【0106】
S1702において、Group“#k”の履歴値とGroup“#k+1”の履歴値とが一定期間同じ場合(S1703の「Yes」)、Group“#k”の履歴値とGroup“#k+1”の履歴値とが統合され(ステップS1704)、ステップS1705のループ処理に進む。一方、S1702においてGroup“#k”の履歴値とGroup“#k+1”の履歴値とが異なる場合、又はGroup“#k”の履歴値とGroup“#k+1”の履歴値とが同じである期間が所定の期間に達していない場合(S1703の「No」)、ステップS1705のループ処理に進む。S1705のループ処理によって、S1701のステップに戻り、S1701~S1705のステップが繰り返し実行される。
【0107】
5-3.履歴値の統合処理
図18は、一実施形態に係るメモリシステムにおける履歴テーブルの更新を示す図である。図18は、図17におけるS1704のステップの詳細な処理を示す。図18において、履歴グループテーブル500-1はある時点(第1時点)におけるテーブルであり、履歴グループテーブル500-2は第1時点から上記の所定の時間が経過した後の第2時点におけるテーブルであり、履歴グループテーブル500-3は履歴グループ510が統合された後のテーブルである。
【0108】
図18に示すように、第1時点の履歴グループテーブル500-1では、履歴グループ510(Group)“#0”の履歴値(Index)が“#4”であり、Group“#1”のIndexが“#3”である。第1時点から所定の時間が経過した第2時点で検査した結果である履歴グループテーブル500-2では、Group“#1”のIndexが“#3”から“#4”に変動し、Group“#0”及び“#1”のIndexがいずれも“#4”である。このように、Group“#0”及びGroup“#1”の履歴値(Index)が同じ状態が一定期間続いた場合、Group“#0”とGroup“#1”とをGroup“#0・#1”に統合する。換言すると、第1Group“#k(#0)”の第1履歴値(Index #4)と、第2Group“#k+1(#1)”の第2履歴値(Index #4)とが同じ履歴値を示す場合、第1Group“#k”と第2Group“#k+1”との共通の共通履歴値(Index #4)を、第1Group“#0”及び第2Group“#1”(Group“#0・#1”)に関連付けて管理する。
【0109】
5-4.履歴値の分割処理の動作フロー
「5-2.履歴値の統合処理の動作フロー」の例では、履歴値のループ検査によって、隣接する履歴グループ510の履歴値が一定期間同じ場合に、これらの履歴グループ510を統合する構成を例示したが、履歴値のループ検査によって、同一の履歴グループ510内に異なる履歴値のサブグループが存在する場合に、これらのサブグループごとに分割することができる。
【0110】
図19は、一実施形態に係るメモリシステムにおける履歴値のループ検査を示すフローチャートである。図19に示すように、履歴値のループ検査はステップS1801~S1805のステップを含む。これらのステップは、メモリコントローラ10のプロセッサ11(特に、上記のパトロール管理部120及び履歴値確認ルーチン部130)によって実行される。図19に示す動作は、ホスト30からの不揮発性メモリ20に対する読み出し要求に基づく読み出し動作とは別に実行される。
【0111】
まず、検査対象の履歴グループテーブル500について、各履歴グループ510の履歴値の検査が実行される(ステップS1801)。全ての履歴グループ510の履歴値の検査が終了すると、又は履歴グループ510の履歴値の検査をしながら、各履歴グループテーブル500において、同一の履歴グループ510に含まれる複数のメモリグループに対する履歴値の比較が行われる(ステップS1802)。具体的には、履歴グループ510に含まれる各ワード線WLに対する履歴値の比較が行われる。
【0112】
S1802において、Group“#k”に含まれる複数のワード線WLに対する履歴値が異なる場合(S1803の「Yes」)、Group“#k”に含まれるワード線WLの履歴値に応じてGroup“#k”がGroup“#k”とGroup“#k”とに分割される(ステップS1804)。つまり、Group“#k”は複数のワード線WLに共通の共通履歴値を有していた、ということができる。なお、Group“#k”に含まれるワード線WLの履歴値は全て同じであり、Group“#k”に含まれるワード線WLの履歴値は全て同じである。S1804で分割処理が行われると、ステップS1805のループ処理に進む。一方、Group“#k”内の全てのワード線WLの履歴値が同じ場合(S1803の「No」)、ステップS1805のループ処理に進む。S1805のループ処理によって、S1801のステップに戻り、S1801~S1805のステップが繰り返し実行される。
【0113】
5-5.履歴値の分割処理
図20は、一実施形態に係るメモリシステムにおける履歴テーブルの更新を示す図である。図20は、図19におけるS1804のステップの詳細な処理を示す。図20において、履歴グループテーブル500-4及び書き込み時間テーブル400-4はある時点(第3時点)におけるテーブルであり、履歴グループテーブル500-5は履歴グループ510が分割された後のテーブルである。なお、上記の分割処理は、「5-3.履歴値の統合処理」の後の処理であって、上記の統合処理によって統合された履歴グループ510を分割する処理であってもよく、上記の統合処理とは独立した処理であってもよい。
【0114】
図20に示す例では、第3時点よりも前の時点では、ワード線WL0~WL2の履歴値(Index)が“#4”であり、これらのワード線WLはGroup“#0”に属していた。しかし、第3時点では、ワード線WL0~WL1に対するIndexは“#4”だが、ワード線WL2に対するIndexが“#3”である。この場合、図20の書き込み時間テーブル400-4に示すように、ワード線WL2の属するGroupを“#1”に変更する。その結果、見た目は履歴グループテーブル500-4と差はないが、Blk“#0”の履歴グループテーブル500-5のGroup“#0”にはワード線WL2は含まれておらず、ワード線WL2は履歴グループテーブル500-5のGroup“#1”に含まれる。
【0115】
5-6.履歴値の例外規定処理
「5-4.履歴値の分割処理の動作フロー」及び「5-5.履歴値の分割処理」の例では、履歴値のループ検査によって、同一の履歴グループ510内に異なる履歴値に対応するワード線WLが存在する場合に、当該ワード線WLを分割する構成を例示したが、このような場合に、履歴グループ510内の異なる履歴値に対応するワード線WLに対して、当該履歴グループ510の例外であることを規定してもよい。
【0116】
図21は、一実施形態に係るメモリシステムにおける履歴テーブルの更新を示す図である。図21では、図20の場合と同様に、上記の第3時点よりも前の時点では、ワード線WL0~WL2のIndexが“#4”であり、これらのワード線WLはGroup“#0”に属していたが、第3時点では、ワード線WL0~WL1に対する履歴値は“#4”だが、ワード線WL2に対する履歴値が“#3”である。この場合、図21の例外規定テーブル520に示すように、Blk“#0”の履歴グループテーブル500-4のGroup“#0”において、例外的にワード線WL2のIndexが“#3”であることが規定されている。
【0117】
以上のように、本実施形態に係るメモリシステム1によると、各種テーブルがバックグラウンド処理によって更新されることで、テーブルを格納するためのメモリ容量を低減することができ、さらに、ホスト30からの読み出し要求があった時点における最適な読み出し条件を提供することができる。
【0118】
<第6実施形態>
図22及び図23を用いて、上記の第1実施形態~第5実施形態に係るメモリシステム1の適用例について説明する。図22及び図23は、一実施形態に係るメモリシステムの応用例を示す図である。第6実施形態では、Zoned NameSpace(ZNS) SSDについて説明する。ZNSとは、アドレス空間をゾーン(Zone)ごとに区分し、ホスト30がZoneを指定して書き込み要求を行う方式である。ZNSは、NVM Express(NVMe)の一部として規格化されている。ZNSを用いることで、ホスト30が書き込み動作などを効率的に管理することができ、メモリコントローラ10において用いられるメモリ容量を低減することができる。
【0119】
図22は、ホスト30からデータ1~6の書き込み要求があった場合を示す。これらのデータ1~6は、それぞれ異なるZoneに書き込まれる。ここで、例えばデータ1~6は、それぞれ異なるアプリケーションに関するデータである。ホスト30からメモリシステム1にデータ1~6の書き込み要求があると、メモリコントローラ10によってデータ1~6が書き込まれるZoneのアドレスが不揮発性メモリ20上のブロックのアドレスに変換される。そして、データ1~6の各々は変換されたブロックに書き込まれる。
【0120】
図22に示すように、データ1~6の各々について、ホスト30が指定するZoneに対応するブロックの最初のワード線WLから順に書き込み動作が行われる。図22において、データ1~6はそれぞれメモリブロック23-1~6に書き込まれる。データ1~2のデータ量はその他のデータ3~6のデータ量に比べて小さい。
【0121】
図23は、データ1~6の書き込み動作が完了してから一定時間が経過した後に、ホスト30からデータ7~12の書き込み要求があった場合を示す。データ7~12は、それぞれデータ1~6と同じアプリケーションに関するデータである。つまり、ホスト30は、例えばデータ7に対してデータ1と同じZoneを指定して書き込み要求を行う。上記のように、データ7~12はそれぞれメモリブロック23-1~6に書き込まれる。データ7~8のデータ量はその他のデータ9~12のデータ量に比べて小さい。その結果、メモリブロック23-3~23-6に比べてメモリブロック23-1~23-2は、メモリブロック内に記憶されるデータの書き込み動作が完了した時刻の差が大きくなる。
【0122】
上記のように、ZNS SSDの場合、書き込まれるデータ量及びデータの更新頻度は、アプリケーションごとに異なる場合がある。例えば、データ量が小さいかつ更新頻度が低いアプリケーションの場合、同一のブロック内に書き込み動作が行われた時間が大きく異なるデータが共存することがある。そのような場合であっても、第1実施形態~第5実施形態のようなメモリシステム1を適用することで、書き込み動作が行われた時刻に応じて読み出し条件を設定することができるため、読み出し動作時のリトライやリフレッシュの回数を低減することができ、メモリシステム1の動作を高速化することができる。
【0123】
なお、上記の第5実施形態のバックグラウンド処理を用いて、図14に示す処理を行ってもよい。
【0124】
以上で説明されたブロック(Blk)は物理ブロックを指すが、ブロック(Blk)は論理ブロックであってもよい。論理ブロックは、例えば複数の物理ブロックの集合であり、メモリコントローラ10は、論理ブロックを構成する複数の物理ブロックに対して並行して書き込み、読み出し、又は消去を実行することができる。
【0125】
以上、本発明について図面を参照しながら説明したが、本発明は上記の実施形態に限られるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、本実施形態の圧縮・伸張回路を基にして、当業者が適宜構成要素の追加、削除もしくは設計変更を行ったものも、本発明の要旨を備えている限り、本発明の範囲に含まれる。さらに、上述した各実施形態は、相互に矛盾がない限り適宜組み合わせが可能であり、各実施形態に共通する技術事項については、明示の記載がなくても各実施形態に含まれる。
【0126】
上述した各実施形態の態様によりもたらされる作用効果とは異なる他の作用効果であっても、本明細書の記載から明らかなもの、又は、当業者において容易に予測し得るものについては、当然に本発明によりもたらされるものと解される。
【符号の説明】
【0127】
1:メモリシステム、 10:メモリコントローラ、 11:プロセッサ、 12:RAM、 13:ROM、 14:ランダマイザ、 15:ECC回路、 16:圧縮・伸張回路、 17:ホストインタフェース、 18:メモリインタフェース、 19:内部バス、 20:不揮発性メモリ、 21:メモリチップ、 22:ダイ、 23:メモリブロック、 30:ホスト、 110:履歴値管理部、 120:パトロール管理部、 130:履歴値確認ルーチン部、 200:シフトテーブル、 300:履歴テーブル、 400:時間テーブル、 410:書き込みグループ、 420:圧縮テーブル、 500:履歴グループテーブル、 510:履歴グループ、 520:例外規定テーブル
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23