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

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

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

<>
  • 特開-メモリシステムおよび制御方法 図1
  • 特開-メモリシステムおよび制御方法 図2
  • 特開-メモリシステムおよび制御方法 図3
  • 特開-メモリシステムおよび制御方法 図4
  • 特開-メモリシステムおよび制御方法 図5
  • 特開-メモリシステムおよび制御方法 図6
  • 特開-メモリシステムおよび制御方法 図7
  • 特開-メモリシステムおよび制御方法 図8
  • 特開-メモリシステムおよび制御方法 図9
  • 特開-メモリシステムおよび制御方法 図10
  • 特開-メモリシステムおよび制御方法 図11
  • 特開-メモリシステムおよび制御方法 図12
  • 特開-メモリシステムおよび制御方法 図13
  • 特開-メモリシステムおよび制御方法 図14
  • 特開-メモリシステムおよび制御方法 図15
  • 特開-メモリシステムおよび制御方法 図16
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024033402
(43)【公開日】2024-03-13
(54)【発明の名称】メモリシステムおよび制御方法
(51)【国際特許分類】
   G06F 11/10 20060101AFI20240306BHJP
   G06F 12/00 20060101ALI20240306BHJP
【FI】
G06F11/10 662
G06F12/00 597U
G06F11/10 672
【審査請求】未請求
【請求項の数】16
【出願形態】OL
(21)【出願番号】P 2022136954
(22)【出願日】2022-08-30
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】菅野 伸一
(72)【発明者】
【氏名】佐々木 勇輝
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160NA02
(57)【要約】
【課題】信頼性を維持しつつライトアンプリフィケーションを改善することができるメモリシステムを実現する。
【解決手段】コントローラは、符号化率が1未満である場合、複数のライトデータを符号化して、複数のライトデータと一つ以上の消失復元符号とを含む符号語を生成する。コントローラは、符号化率が1である場合、複数のライトデータを含み且つ消失復元符号を含まない符号語を生成する。コントローラは、累積エラー数を算出する。コントローラは、累積書き込み量と累積読み出し量のうちの少なくとも一方を算出する。コントローラは、累積エラー数を累積書き込み量または累積読み出し量で除した第1の値が第1の閾値を下回った場合に符号化率が大きくなり、第1の値が第2の閾値以上である場合に符号化率が小さくなるように、符号化率を変更する。
【選択図】図1
【特許請求の範囲】
【請求項1】
ホストに接続可能なメモリシステムであって、
不揮発性メモリと、
前記不揮発性メモリに電気的に接続され、前記ホストから受信される複数のライトデータを含む符号語を生成し、前記符号語を前記不揮発性メモリに書き込むように構成されるコントローラと、を具備し、
前記コントローラは、
符号化率が1未満である場合、前記符号化率に基づいて、前記複数のライトデータを符号化して、前記複数のライトデータと一つ以上の消失復元符号とを含む前記符号語を生成し、
前記符号化率が1である場合、前記複数のライトデータを含み且つ前記消失復元符号を含まない前記符号語を生成し、
正しいデータを前記ホストに送信することに失敗するデータエラーが発生した回数の累積値を示す累積エラー数を算出し、
前記ホストからのライトコマンドそれぞれに基づいて前記不揮発性メモリに書き込まれるライトデータの総量を示す累積書き込み量と、前記ホストからのリードコマンドそれぞれによって前記不揮発性メモリからの読み出しが要求されたリードデータの総量を示す累積読み出し量と、のうち少なくとも一つを算出し、
前記累積エラー数を前記累積書き込み量または前記累積読み出し量で除した第1の値が第1の閾値を下回った場合に前記符号化率が大きくなり、前記第1の値が前記第1の閾値以上の第2の閾値以上である場合に前記符号化率が小さくなるように、前記符号化率を前記第1の値に基づいて変更し、
前記符号化率が変更された場合、前記ホストから受信される新たなライトデータ、および前記不揮発性メモリのコピー元記憶位置からコピー先記憶位置にコピーされるデータの各々を、変更後の符号化率で符号化するように構成される、
メモリシステム。
【請求項2】
前記データエラーが発生した回数は、前記消失復元符号を使用した消失復元処理によって復元不能なエラーが発生した回数である、
請求項1に記載のメモリシステム。
【請求項3】
前記不揮発性メモリは、各々がデータ消去動作の単位である複数のブロックを含み、
前記コントローラは、
前記複数のライトデータそれぞれと0以上の前記消失復元符号それぞれとが前記不揮発性メモリの異なるブロックに書き込まれるように、前記複数のブロックに含まれる複数の第1のブロックに跨がって前記符号語を書き込むように構成される、
請求項1に記載のメモリシステム。
【請求項4】
前記符号語は、前記消失復元符号を冗長符号として含む組織符号であり、
前記符号語は、前記符号語に含まれる前記冗長符号の量と同量の消失データを復元可能であり、
前記コントローラは、
前記符号語を前記複数の第1のブロックに跨がって書き込む際、前記複数の第1のブロックそれぞれの識別子と、前記複数の第1のブロックの数と、前記複数の第1のブロックのうち、前記冗長符号が書き込まれたブロックの数と、を示す第1の情報を生成し、
前記符号語に含まれるデータの消失が検出され、且つ前記消失されたデータの量が、前記第1の情報によって示される前記冗長符号が書き込まれたブロックの数から決定される前記冗長符号の量を超えていない場合、前記消失されたデータを除く、前記符号語に含まれる残りのデータそれぞれと、前記符号語に含まれる前記冗長符号とを使用して、前記消失されたデータを復元するようにさらに構成され、
前記複数の第1のブロックの各々は、複数の符号語の各々に含まれるデータのみか、または前記複数の符号語の各々に含まれる冗長符号のみを格納する、
請求項3に記載のメモリシステム。
【請求項5】
前記コントローラは、
前記複数のブロックそれぞれの消去回数を管理し、
前記複数のブロックそれぞれの消去回数の差を小さくするウェアレベリングを実行するようにさらに構成される、
請求項3に記載のメモリシステム。
【請求項6】
前記コントローラは、
前記符号語に含まれる前記消失復元符号の量を減らして前記符号化率を大きくするように構成される、
請求項1に記載のメモリシステム。
【請求項7】
前記コントローラは、
前記累積エラー数が第3の閾値よりも小さく、且つ前記累積書き込み量と前記累積読み出し量とのうちの少なくとも一つが第4の閾値よりも小さい場合、前記第1の値とは無関係に、前記複数のライトデータを1未満の第1の符号化率を使用して符号化するようにさらに構成される、
請求項1に記載のメモリシステム。
【請求項8】
前記第1の値は、前記累積エラー数を、前記累積書き込み量および前記累積読み出し量のうちのいずれか小さい値で除することによって算出される、
請求項1に記載のメモリシステム。
【請求項9】
前記符号化率が変更された場合、変更前の符号化率で生成され且つ前記不揮発性メモリに書き込み済みの符号語は前記不揮発性メモリに維持される、
請求項1に記載のメモリシステム。
【請求項10】
不揮発性メモリを制御する制御方法であって、
符号化率が1未満である場合、前記符号化率に基づいて、ホストから受信される複数のライトデータを符号化して前記複数のライトデータと一つ以上の消失復元符号とを含む符号語を生成し、前記符号語を前記不揮発性メモリに書き込むことと、
前記符号化率が1である場合、前記複数のライトデータを含み且つ前記消失復元符号を含まない符号語を生成し、前記符号語を前記不揮発性メモリに書き込むことと、
正しいデータを前記ホストに送信することに失敗するデータエラーが発生した回数の累積値を示す累積エラー数を算出することと、
前記ホストからのライトコマンドそれぞれに基づいて前記不揮発性メモリに書き込まれるライトデータの総量を示す累積書き込み量と、前記ホストからのリードコマンドそれぞれによって前記不揮発性メモリからの読み出しが要求されたリードデータの総量を示す累積読み出し量と、のうち少なくとも一つを算出することと、
前記累積エラー数を前記累積書き込み量または前記累積読み出し量で除した第1の値が第1の閾値を下回った場合に前記符号化率が大きくなり、前記第1の値が前記第1の閾値以上の第2の閾値以上である場合に前記符号化率が小さくなるように、前記符号化率を前記第1の値に基づいて変更することと、
前記符号化率が変更された場合、前記ホストから受信される新たなライトデータ、および前記不揮発性メモリのコピー元記憶位置からコピー先記憶位置にコピーされるデータの各々を、変更後の符号化率で符号化することと、を具備する、
制御方法。
【請求項11】
前記データエラーが発生した回数は、前記消失復元符号によって復元不能なエラーが発生した回数である、
請求項10に記載の制御方法。
【請求項12】
前記不揮発性メモリは、各々がデータ消去動作の単位である複数のブロックを含み、
前記符号語を書き込むことは、前記複数のライトデータそれぞれと0以上の前記消失復元符号それぞれとが前記不揮発性メモリの異なるブロックに書き込まれるように、前記複数のブロックに含まれる複数の第1のブロックに跨がって前記符号語を書き込むことを含む、
請求項10に記載の制御方法。
【請求項13】
前記符号語は、前記消失復元符号を冗長符号として含む組織符号であり、
前記符号語は、前記符号語に含まれる前記冗長符号の量と同量の消失データを復元可能であり、
前記符号語を前記複数の第1のブロックに跨がって書き込む際、前記複数の第1のブロックそれぞれの識別子と、前記複数の第1のブロックの数と、前記複数の第1のブロックのうち、前記冗長符号が書き込まれたブロックの数と、を示す第1の情報を生成することと、
前記符号語に含まれるデータの消失が検出され、且つ前記消失されたデータの量が、前記第1の情報によって示される前記冗長符号が書き込まれたブロックの数から決定される前記冗長符号の量を超えていない場合、前記消失されたデータを除く、前記符号語に含まれる残りのデータそれぞれと、前記符号語に含まれる前記冗長符号とを使用して、前記消失されたデータを復元することと、をさらに具備し、
前記複数の第1のブロックの各々は、複数の符号語の各々に含まれるデータのみか、または前記複数の符号語の各々に含まれる冗長符号のみを格納する、
請求項12に記載の制御方法。
【請求項14】
前記複数のブロックそれぞれの消去回数を管理することと、
前記複数のブロックそれぞれの消去回数の差を小さくするウェアレベリングを実行することと、をさらに具備する
請求項12に記載の制御方法。
【請求項15】
前記符号化率を大きくすることは、前記符号語に含まれる前記消失復元符号の量を減らして前記符号化率を大きくすることを含む、
請求項10に記載の制御方法。
【請求項16】
前記累積エラー数が第3の閾値よりも小さく、且つ前記累積書き込み量と前記累積読み出し量とのうちの少なくとも一つが第4の閾値よりも小さい場合、前記第1の値とは無関係に、前記複数のライトデータを1未満の第1の符号化率を使用して符号化することをさらに具備する、
請求項10に記載の制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、不揮発性メモリを制御する技術に関する。
【背景技術】
【0002】
近年、不揮発性メモリを備えるメモリシステムが広く普及している。このようなメモリシステムの一つとして、NAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)が知られている。
【0003】
SSDのようなメモリシステムにおいては、その信頼性を維持するために、消失復元技術が利用される場合がある。消失復元技術は、消失復元符号を使用して、消失データを復元する技術である。
【0004】
しかしながら、メモリシステムにおいてデータの消失が発生する回数は、時間の経過に伴って変動する場合がある。このため、一定の消失復元能力を有する消失復元符号化を常に利用すると、消失データが少ない期間においては、不揮発性メモリに書き込まれた消失復元符号が利用されずに無駄になる場合がある。無駄な消失復元符号を不揮発性メモリに書き込むことは、メモリシステムのライトアンプリフィケーションを増加させ、結果として、メモリシステムの書き込み性能の低下およびメモリシステムの寿命の悪化を引き起こす。
【0005】
したがって、メモリシステムにおいては、信頼性を維持しつつ、ライトアンプリフィケーションを改善できる新たな技術が必要とされている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】米国特許第9,021,337号明細書
【特許文献2】米国特許第8,788,910号明細書
【特許文献3】米国特許出願公開第2010/0199150号明細書
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明の一実施形態が解決しようとする課題は、信頼性を維持しつつライトアンプリフィケーションを改善することができるメモリシステムおよび制御方法を提供することである。
【課題を解決するための手段】
【0008】
実施形態によれば、ホストに接続可能なメモリシステムは、不揮発性メモリと、前記不揮発性メモリに電気的に接続され、前記ホストから受信される複数のライトデータを含む符号語を生成し、前記符号語を前記不揮発性メモリに書き込むように構成されるコントローラとを具備する。前記コントローラは、符号化率が1未満である場合、前記符号化率に基づいて、前記複数のライトデータを符号化して、前記複数のライトデータと一つ以上の消失復元符号とを含む前記符号語を生成する。前記コントローラは、前記符号化率が1である場合、前記複数のライトデータを含み且つ前記消失復元符号を含まない前記符号語を生成する。前記コントローラは、正しいデータを前記ホストに送信することに失敗するデータエラーが発生した回数の累積値を示す累積エラー数を算出する。前記コントローラは、前記ホストからのライトコマンドそれぞれに基づいて前記不揮発性メモリに書き込まれるライトデータの総量を示す累積書き込み量と、前記ホストからのリードコマンドそれぞれによって前記不揮発性メモリからの読み出しが要求されたリードデータの総量を示す累積読み出し量と、のうち少なくとも一つを算出する。前記コントローラは、前記累積エラー数を前記累積書き込み量または前記累積読み出し量で除した第1の値が第1の閾値を下回った場合に前記符号化率が大きくなり、前記第1の値が前記第1の閾値以上の第2の閾値以上である場合に前記符号化率が小さくなるように、前記符号化率を前記第1の値に基づいて変更する。前記コントローラは、前記符号化率が変更された場合、前記ホストから受信される新たなライトデータ、および前記不揮発性メモリのコピー元記憶位置からコピー先記憶位置にコピーされるデータの各々を、変更後の符号化率で符号化する。
【図面の簡単な説明】
【0009】
図1】実施形態に係るメモリシステムを含む情報処理システムの構成例を示すブロック図。
図2】実施形態に係るメモリシステムにおいて使用される、複数のチャンネルと複数のNAND型フラッシュメモリダイとの関係の例を示すブロック図。
図3】実施形態に係るメモリシステムにおいて使用されるスーパーブロックの構成例を示す図。
図4】実施形態に係るメモリシステムにおいて、第1の符号化率でデータが書き込まれたスーパーブロックの第1の例を示す図。
図5】実施形態に係るメモリシステムにおいて、第2の符号化率でデータが書き込まれたスーパーブロックの第2の例を示す図。
図6】実施形態に係るメモリシステムにおいて、第3の符号化率でデータが書き込まれたスーパーブロックの第3の例を示す図。
図7】実施形態に係るメモリシステムにおいて、第4の符号化率でデータが書き込まれたスーパーブロックの第4の例を示す図。
図8】実施形態に係るメモリシステムにおいて、第5の符号化率でデータが書き込まれたスーパーブロックの第5の例を示す図。
図9】実施形態に係るメモリシステムにおいて、第1の符号化率に基づいて生成された符号語を示す図。
図10】実施形態に係るメモリシステムにおける内部エラー数と、データエラーの数を示す図。
図11】実施形態に係るメモリシステムにおいて使用される符号化率情報を示す図。
図12】実施形態に係るメモリシステムにおいて実行されるデータ書き込み処理およびデータ読み出し処理の例を示す図。
図13】実施形態に係るメモリシステムにおいて実行される符号化率変更処理の手順を示すフローチャート。
図14】実施形態に係るメモリシステムにおいて実行されるデータ書き込み処理の手順を示すフローチャート。
図15】実施形態に係るメモリシステムにおいて実行されるデータ読み出し処理の手順を示すフローチャート。
図16】実施形態に係るメモリシステムにおいて実行される符号化率変更処理の第2の手順を示すフローチャート。
【発明を実施するための形態】
【0010】
以下、図面を参照して、実施形態を説明する。
まず、実施形態に係るメモリシステムを含む情報処理システムの構成について説明する。図1は、実施形態に係るメモリシステムとホストとを含む情報処理システムの構成例を示すブロック図である。以下では、実施形態に係るメモリシステムがソリッドステートドライブ(SSD)3として実現されている場合を想定する。
【0011】
情報処理システム1は、ホスト(ホストデバイス)2と、SSD3とを含む。
【0012】
ホスト2は、SSD3にアクセスする情報処理装置である。情報処理装置の例には、パーソナルコンピュータ、サーバコンピュータ、他の様々なコンピューティングデバイスが含まれる。ホスト2は、データを書き込むための要求であるライト要求(ライトコマンド)をSSD3に送信する。また、ホスト2は、データを読み出すための要求であるリード要求(リードコマンド)をSSD3に送信する。
【0013】
SSD3は、不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。不揮発性メモリとしては、例えば、NAND型フラッシュメモリが用いられる。SSD3は、ホスト2から受信されたライトコマンドに基づいて、データ書き込み動作を実行する。また、SSD3は、ホスト2から受信されたリードコマンドに基づいて、データ読み出し動作を実行する。
【0014】
ホスト2とSSD3とを接続するための論理インタフェースの規格としては、例えば、Serial Attached SCSI(SAS)、Serial ATA(SATA)、NVM ExpressTM(NVMeTM)が使用される。
【0015】
次に、ホスト2の構成要素について説明する。ホスト2は、プロセッサ21と、メモリ22とを含む。
【0016】
プロセッサ21は、CPU(Central Processing Unit)である。プロセッサ21は、ホスト2の各コンポーネントの動作を制御するように構成されている。プロセッサ21は、SSD3からメモリ22にロードされるソフトウェア(ホストソフトウェア)を実行する。ホスト2は、SSD3以外の他のストレージデバイスを含んでいてもよい。この場合、ホストソフトウェアは、他のストレージデバイスからメモリ22にロードされてもよい。ホストソフトウェアには、オペレーティングシステム、ファイルシステム、デバイスドライバ、アプリケーションプログラム等が含まれる。
【0017】
メモリ22は、ホスト2に設けられたメインメモリである。メモリ22は、揮発性の半導体メモリである。メモリ22は、例えば、DRAM(Dynamic Random Access Memory)のようなランダムアクセスメモリによって実現される。
【0018】
次に、SSD3の構成要素について説明する。SSD3は、コントローラ4と、NAND型フラッシュメモリ5と、DRAM6とを含む。
【0019】
コントローラ4は、Toggle NANDフラッシュインタフェース、オープンNANDフラッシュインタフェース(ONFI)のような、NANDインタフェース43を介して、不揮発性メモリであるNAND型フラッシュメモリ5に電気的に接続されている。コントローラ4は、NAND型フラッシュメモリ5を制御するように構成されたメモリコントローラとして動作する。このコントローラ4は、System-on-a-chip(SoC)のような回路によって実現されてもよい。
【0020】
NAND型フラッシュメモリ5は、マトリクス状に配置された複数のメモリセルを含むメモリセルアレイを含む。NAND型フラッシュメモリ5は、2次元構造のフラッシュメモリであってもよいし、3次元構造のフラッシュメモリであってもよい。
【0021】
NAND型フラッシュメモリ5のメモリセルアレイは、複数のブロックBLK0~BLKx-1を含む。ブロックBLK0~BLKx-1の各々は、複数のページ(ここではページP0~Py-1)を含む。ブロックBLK0~BLKx-1の各々は、データ消去動作の単位として機能する。ブロックは、「消去ブロック」、「物理ブロック」、または「フラッシュブロック」と称されることもある。ページP0~Py-1の各々は、データ書き込み動作およびデータ読み込み動作の各々の単位である。
【0022】
DRAM6は、揮発性の半導体メモリである。DRAM6は、例えば、NAND型フラッシュメモリ5に書き込むべきデータを一時的に格納するために使用される。また、DRAM6の記憶領域は、コントローラ4によって使用される様々な管理データを格納するために使用される。
【0023】
次に、コントローラ4の詳細な構成について説明する。
【0024】
コントローラ4は、ホストインタフェース(I/F)41と、CPU42と、NANDインタフェース(I/F)43と、DRAMインタフェース(I/F)44と、直接メモリアクセスコントローラ(DMAC)45と、スタティックRAM(SRAM)46と、エンコード/デコード部47と、を含む。これらホストインタフェース41と、CPU42と、NANDインタフェース43と、DRAMインタフェース44と、DMAC45と、SRAM46と、エンコード/デコード部47とは、バス40を介して相互接続される。
【0025】
ホストインタフェース41は、ホスト2との通信を実行するホストインタフェース回路である。ホストインタフェース41は、例えば、PCIeコントローラである。あるいは、SSD3がネットワークインタフェースコントローラを内蔵する構成である場合には、ホストインタフェース41は、ネットワークインタフェースコントローラの一部として実現されてもよい。ホストインタフェース41は、ホスト2から様々なコマンドを受信する。これらコマンドには、ライトコマンド、リードコマンド、コピーコマンド、等が含まれる。
【0026】
CPU42は、プロセッサである。CPU42は、ホストインタフェース41と、NANDインタフェース43と、DRAMインタフェース44と、DMAC45と、SRAM46と、エンコード/デコード部47と、を制御する。CPU42は、SSD3への電源の供給に応じて、NAND型フラッシュメモリ5または図示しないROMから制御プログラム(ファームウェア)をDRAM6またはSRAM46にロードする。
【0027】
NANDインタフェース43は、NAND型フラッシュメモリ5を制御するメモリインタフェース回路である。NANDインタフェース43は、CPU42の制御の下、NAND型フラッシュメモリ5を制御する。NAND型フラッシュメモリ5が複数のNAND型フラッシュメモリダイを含む場合、NANDインタフェース43は、例えば、複数のチャンネル(Ch)を介して複数のNAND型フラッシュメモリダイに接続される。NANDインタフェース43とNAND型フラッシュメモリ5との間の通信は、例えば、Toggle NANDフラッシュインタフェースまたはオープンNANDフラッシュインタフェース(ONFI)に準拠して実行される。
【0028】
DRAMインタフェース44は、DRAM6を制御するDRAMインタフェース回路である。DRAMインタフェース44は、CPU42の制御の下、DRAM6を制御する。
【0029】
DMAC45は、CPU42の制御の下、ホスト2のメモリ22とDRAM6(またはSRAM46)との間のデータ転送を実行する。ホスト2のメモリ22からDRAM6(またはSRAM46)にライトデータを転送すべき場合には、CPU42は、ライトデータが格納されているホスト2のメモリ22における位置を示す転送元アドレス、ライトデータのサイズ、ライトデータが転送されるべきDRAM6(またはSRAM46)における位置を示す転送先アドレスをDMAC45に対して指定する。
【0030】
SRAM46は、揮発性のメモリである。SRAM46は、例えば、CPU42の作業領域として使用される。
【0031】
エンコード/デコード部47は、NAND型フラッシュメモリ5にデータを書き込む時、このデータにエラー訂正コード(Error Correction Code:ECC)を冗長符号として付加するエンコードを実行する。NAND型フラッシュメモリ5からデータがリードされた時、エンコード/デコード部47は、リードされたデータに付加されたECCを使用して、このデータのエラー訂正を行うデコードを実行する。ECCを使用したデコードにおいて、エラー訂正が失敗することを、ECCエラーと称する。また、エンコード/デコード部47は、消失復元符号化部471と、消失復元復号部472とを含む。
【0032】
消失復元符号化部471は、NAND型フラッシュメモリ5に書き込まれる複数のデータを消失復元符号化することで符号語を生成する。消失復元符号化のための符号(消失復元符号)としては、例えば、リードソロモン符号、パリティ検査符号、等が使用される。符号語は、複数の情報シンボルと、1以上の冗長シンボルと、を含む組織符号である。符号語に含まれる複数のシンボルのうち、情報シンボルの割合を符号化率と称する。例えば、一つの符号語に含まれる情報シンボルと冗長シンボルとの総数がnで、情報シンボルの数がkである場合、この符号語の符号化率は、k/nで表される。消失復元復号部472は、符号化率に基づいて符号語に含まれる冗長シンボルの数を決定して、符号語を生成する。符号化率の最大値は、1である。符号化率が1である場合、符号語は、情報シンボルのみを含み、冗長シンボルを含まない。したがって、消失復元符号化部471によって生成される符号語は、複数の情報シンボルと、零個以上の冗長シンボルとを含む。情報シンボルは、例えば、ライトデータである。冗長シンボルは、例えば、複数のライトデータを符号化して生成された冗長符号である消失復元符号である。消失復元符号化部471によって生成された符号語は、例えば、複数のブロックに跨がって書き込まれる。この場合、符号語に含まれる複数のライトデータおよび消失復元符号は、互いに異なるブロックにそれぞれ書き込まれる。
【0033】
消失復元復号部472は、NAND型フラッシュメモリ5から読み出されたデータに対するエラー訂正が失敗した際、つまり、データの消失が検出された際に、消失復元処理を実行する。消失復元復号部472は、消失データが含まれている符号語が消失復元符号を有するか否かを判定する。この符号語が消失復元符号を有する場合、消失復元復号部472は、この符号語に対する消失復元処理を実行する。消失復元処理において、消失復元復号部472は、この符号語に含まれている残りのデータそれぞれと冗長符号とをNAND型フラッシュメモリ5から読み出し、これら残りのデータそれぞれと冗長符号とを使用して、消失データを復元する。符号語によって復元可能な消失データの量は、符号語に冗長符号として含まれる消失復元符号の量と同量である。符号語に含まれる複数のライトデータおよび消失復元符号は、互いに異なるブロックにそれぞれ書き込まれている。このため、あるブロックに書き込まれたデータが正しく読み出せなくなった場合であっても、そのデータを、他のブロックのデータそれぞれと、さらに他のブロックの消失復元符号とを使用して復元できる。
【0034】
次に、DRAM6に記憶される情報ついて説明する。DRAM6は、論理物理アドレス変換テーブル(L2Pテーブル:Logical to Physical address translation table)61と、ブロック管理テーブル62と、符号化率情報63とを記憶する。
【0035】
L2Pテーブル61は、マッピング情報を保持するテーブルである。マッピング情報は、論理アドレスと物理アドレスとの間の対応関係を示す情報である。論理アドレスは、アクセス対象のデータを識別するアドレスである。論理アドレスは、ホスト2からのコマンド(ライトコマンド、リードコマンド、等)によって指定される。論理アドレスとしては、論理ブロックアドレス(LBA)が使用される。一つのLBAは、例えば、1セクタ(例えば4KiB)のデータに対応する。物理アドレスは、NAND型フラッシュメモリ5の物理記憶位置を特定するアドレスである。物理アドレスは、例えば、ブロックアドレスと、ブロック内オフセットとを含む。ブロックアドレスは、個々のブロックを一意に特定可能なアドレスである。NAND型フラッシュメモリ5が複数のNAND型フラッシュダイによって構成されている場合、あるブロックのブロックアドレスは、NAND型フラッシュダイのダイ番号と、このダイ内のブロック番号とによって表されてもよい。ブロック内オフセットは、ブロックに含まれる記憶位置それぞれを一意に特定可能なオフセットアドレスである。ブロック内のある特定の記憶位置のオフセットアドレスは、ブロックの先頭の記憶位置から特定の記憶位置までのセクタの数によって表されてもよい。
【0036】
ブロック管理テーブル62は、NAND型フラッシュメモリ5の複数のブロックそれぞれを管理するための管理情報を格納するために使用される。
【0037】
ブロック管理テーブル62は、メモリシステム3に含まれるブロックに対応する管理情報を含むテーブルである。ブロック管理テーブル62が管理する管理情報は、例えば、対応するブロックの消去回数(プログラム/イレーズサイクルの数)を示す情報、および対応するブロックが利用可能か否かを示す情報を含む。
【0038】
符号化率情報63は、NAND型フラッシュメモリ5に書き込まれる符号語の各々に対応する情報である。符号化率情報63は、例えば、符号語毎に、符号語が書き込まれたブロックの各々を示す識別子、符号語が書き込まれたブロックの数を示す情報、および消失復元符号が書き込まれたブロックの数を示す情報を含む。NAND型フラッシュメモリ5に符号語が書き込まれる際に、この符号語に対応する符号化率情報63が生成される。また、消失復元処理を実行する際に、消失復元復号部472は、符号化率情報63を参照して、消失復元処理が実行される符号語に対応する情報を取得する。
【0039】
次に、CPU42の機能構成例について説明する。CPU42は、累積エラー数算出部421、累積書き込み量算出部422、累積読み出し量算出部423、ライト制御部424、符号化率変更部425、および符号化率情報生成部425として機能する。なお、CPU42の各機能の一部または全体は、コントローラ4の専用のハードウェアによって実現されてもよい。
【0040】
累積エラー数算出部421は、データエラーが発生した回数の累積値を累積エラー数として算出する。データエラーは、SSD3が正しいデータ(リードデータ)をホスト2に送信することに失敗することを意味する。データエラーが発生した回数は、訂正不能なエラーが発生した回数、つまり、消失復元符号を使用した消失復元処理によって復元不能なエラーが発生した回数である。たとえデータの消失が発生しても、消失復元処理によってこの消失データを復元できた場合には、この消失データの発生は、データエラーの発生としてカウントされない。復元された正しいデータをホスト2に送信できるからである。データエラーが発生すると、リードコマンドによって要求された正しいリードデータをホスト2に送信することができない。そのため、メモリシステム3は、ホスト2に対してエラーが発生したことを示すエラーメッセージを通知する。データエラーは、例えば、符号語が有する消失復元符号の量よりも、消失データの量が大きい場合に発生する。データエラーが発生した回数は、例えば、セクタの単位でカウントされる。例えば、2セクタ分の正しいリードデータをホスト2に送信することに失敗した場合、累積エラー数は、2だけインクリメントされてもよい。
【0041】
累積書き込み量算出部422は、ホスト2から受信されたライトコマンドそれぞれに基づいて書き込まれるライトデータのサイズの累積値を累積書き込み量として算出する。累積書き込み量は、ホスト2から受信されたライトコマンドそれぞれに基づいてNAND型フラッシュメモリ5に書き込まれるライトデータの総量を示す。
【0042】
累積読み出し量算出部423は、ホスト2から受信されたリードコマンドそれぞれによって要求されたリードデータのサイズの累積値を累積読み出し量として算出する。累積読み出し量は、ホスト2から受信されたリードコマンドそれぞれによってNAND型フラッシュメモリ5からの読み出しが要求されたリードデータの総量を示す。
【0043】
ライト制御部424は、ホスト2から受信したライトコマンドに基づいて、ホスト2からライトデータを受信する。ライト制御部424は、受信したライトデータをNAND型フラッシュメモリ5に書き込む。ライト制御部424は、受信したライトデータが書き込まれるべきブロックを決定する。ライト制御部424は、例えば、ウェアレベリングを考慮して、ライトデータが書き込まれるべきブロックを決定する。具体的には、ライト制御部424は、複数のフリーブロックの中から最も少ない消去回数を有するブロックを選択する動作と、選択したブロックを、ライトデータが書き込まれるべきブロックとして割り当てる動作とを実行する。これにより、SSD3において利用されるブロックそれぞれの消去回数の差を小さくするウェアレベリングが実行される。
【0044】
また、ライト制御部424は、コピーコマンドに基づいて、NAND型フラッシュメモリ5に記憶されているコピー対象データを読み出し、読み出したコピー対象データをNAND型フラッシュメモリ5の別のブロックに書き込む。コピーコマンドは、ホスト2から発行され得る。コピーコマンドは、ホスト2から発行される代わりに、ガベージコレクション動作に基づいて、コントローラ4によって内部的に発行されてもよい。
【0045】
ライト制御部424は、複数のブロックグループを管理する。複数のブロックグループの各々は、NAND型フラッシュメモリ5に含まれている複数のブロックBLK(物理ブロック)のうちの2以上のブロックBLK(物理ブロック)から構成される。ブロックグループは、スーパーブロックとも称される。
【0046】
符号化率変更部425は、NAND型フラッシュメモリ5に書き込まれるべきライトデータの符号化率を変更する。符号化率変更部425は、例えば、累積書き込み量と累積読み出し量のうち小さい方の値を有する累積値を選択する。符号化率変更部425は、累積エラー数を選択した累積値で除した値を算出する。符号化率変更部425は、算出された値と、第1の閾値を比較して、算出された値が第1の閾値を下回っている場合、符号化率がより大きい値になるように符号化率を変更する。ここで、符号化率の最大値は、1である。また、符号化率変更部425は、算出された値と、第2の閾値とを比較して、算出された値が第2の閾値以上である場合、符号化率がより小さい値になるように符号化率を変更する。第2の閾値は、第1の閾値と同じ値か、あるいは第1の閾値よりも大きい値である。
【0047】
このように、符号化率変更部425は、累積エラー数を累積書き込み量または累積読み出し量で除した値に基づいて、符号化率を変更する。
【0048】
累積エラー数を累積書き込み量または累積読み出し量で除した値は、データエラーの発生の割合を示す。この割合は、訂正不能ビットエラー率(UBER)とも称される。UBERで表されるデータエラーの発生の割合は、SSD3の信頼性を維持するために、ある値以下に抑えられることが好ましい。UBERは、一般に、以下の式で表される。
【0049】
UBER=[データエラーの数]/[読み出されたビットの数]
累積書き込み量と累積読み出し量が等しい場合には、累積エラー数を累積書き込み量で除した値は、上式で示されるUBERの通常の定義に整合する。このため、UBERは、累積エラー数を累積読み出し量で除することによって算出され得、あるいは、累積エラー数を累積書き込み量で除することによって算出され得る。
【0050】
なお、例えば、ホスト2による書き込みとホスト2による読み出しとの比率が等分ではなく、累積書き込み量よりも累積読み出し量が大きい状況である場合もある。この場合には、累積エラー数を累積読み出し量で除した値を常にUBERとして使用すると、累積エラー数を累積書き込み量で除した値を使用する場合と比べて低い値がUBERとして算出されてしまう。
【0051】
一方、累積読み出し量よりも累積書き込み量が大きい状況である場合もある。この場合には、累積エラー数を累積書き込み量で除した値を常にUBERとして使用すると、累積エラー数を累積読み出し量で除した値を使用する場合と比べて低い値がUBERとして算出されてしまう。
【0052】
このため、本実施形態では、累積書き込み量よりも累積読み出し量が大きい状況である場合には、累積エラー数を累積書き込み量で除した値が、データエラーの発生の割合として使用されてもよい。
【0053】
また、累積読み出し量よりも累積書き込み量が大きい状況である場合には、累積エラー数を累積読み出し量で除した値が、データエラーの発生の割合として使用されてもよい。
【0054】
このように、累積書き込み量と累積読み出し量とを選択的に使用することにより、データエラーの発生の割合をより厳しい基準で求めることができる。以下では、累積読み出し量と累積書き込み量のうち小さい方の値を選択し、累積エラー数を、選択した値で除した値を、UBERとして使用する場合を主として説明する。
【0055】
符号化率情報生成部426は、NAND型フラッシュメモリ5に書き込まれる符号語に対応する符号化率情報を生成する。符号化率情報生成部426は、ホスト2から受信されたライトデータを含む符号語がNAND型フラッシュメモリ5に書き込まれる際に、この符号語に対応する符号化率情報63を生成し、DRAM6に格納する。
【0056】
次に、複数のNAND型フラッシュメモリダイを含むNAND型フラッシュメモリ5の構成について説明する。図2は、実施形態に係るメモリシステムにおいて使用される、複数のチャンネルと複数のNAND型フラッシュメモリダイとの関係の例を示すブロック図である。
【0057】
複数のNAND型フラッシュメモリダイの各々は独立して動作可能である。このため、NAND型フラッシュメモリダイは、並列動作可能な単位として扱われる。図2においては、NANDインタフェース(I/F)43に16個のチャンネルCh.1~Ch.16が接続されており、16個のチャンネルCh.1~Ch.16の各々に2つのNAND型フラッシュメモリダイが接続されている場合が例示されている。
【0058】
この場合、チャンネルCh.1~Ch.16に接続された16個のNAND型フラッシュメモリダイ#1~#16がバンク#0として構成されてもよく、またチャンネルCh.1~Ch.16に接続された残りの16個のNAND型フラッシュメモリダイ#17~#32がバンク#1として構成されてもよい。バンクは、複数のメモリダイをバンクインタリーブによって並列動作させるための単位として扱われる。図2の構成例においては、16チャンネルと、2つのバンクを使用したバンクインタリーブとによって、最大32個のNAND型フラッシュメモリダイを並列動作させることができる。
【0059】
データ消去動作は、一つのブロック(物理ブロック)の単位で実行されてもよいし、並列動作可能な複数の物理ブロックの集合を含むブロックグループの単位で実行されてもよい。ブロックグループは、スーパーブロックとしても参照される。
【0060】
一つのブロックグループ、つまり複数の物理ブロックの集合を含む一つのスーパーブロックは、これに限定されないが、NAND型フラッシュメモリダイ#1~#32から一つずつ選択される計32個の物理ブロックを含んでいてもよい。なお、NAND型フラッシュメモリダイ#1~#32の各々はマルチプレーン構成を有していてもよい。例えば、NAND型フラッシュメモリダイ#1~#32の各々が、2つのプレーンを含むマルチプレーン構成を有する場合には、一つのスーパーブロックは、NAND型フラッシュメモリダイ#1~#32に対応する64個のプレーンから一つずつ選択される計64個の物理ブロックを含んでいてもよい。
【0061】
図3には、32個の物理ブロック(ここでは、NAND型フラッシュメモリダイ#1の物理ブロックBLK2、NAND型フラッシュメモリダイ#2の物理ブロックBLK3、NAND型フラッシュメモリダイ#3の物理ブロックBLK7、NAND型フラッシュメモリダイ#4内の物理ブロックBLK4、NAND型フラッシュメモリダイ#5内の物理ブロックBLK6、…、NAND型フラッシュメモリダイ#32内の物理ブロックBLK3)を含む一つのスーパーブロック(SB)が例示されている。
【0062】
なお、一つのスーパーブロックが一つの物理ブロックのみを含む構成が利用されてもよく、この場合には、一つのスーパーブロックは一つの物理ブロックと等価である。
【0063】
スーパーブロックは、スーパーブロックを構成する物理ブロックの各々に含まれるページ(物理ページ)P0~Py-1と同数の論理ページを含む。論理ページは、スーパーページとも称される。1つのスーパーページは、スーパーブロックに含まれる物理ブロックの数と同数の32個の物理ページを含む。例えば、図示されているスーパーブロックの先頭のスーパーページは、NAND型フラッシュメモリダイ#0,#2,#3,#4,#5,…,#32それぞれの物理ブロックBLK2,BLK3,BLK7,BLK4,BLK6,…,BLK3の物理ページP1を含む。
【0064】
次に、第1の符号化率で符号化された符号語が書き込まれたスーパーブロックについて説明する。図4は、実施形態に係るメモリシステムにおいて、第1の符号化率でデータが書き込まれたスーパーブロックの第1の例を示す図である。図4において、14/16の符号化率を使用して生成された符号語がスーパーブロックSB#1に書き込まれている場合について説明する。ここで、スーパーブロックSB#1は、NAND型フラッシュメモリダイ#1,#2,…,#16それぞれのブロックBLK1で構成されている。そのため、スーパーブロックSB#1に含まれる物理ブロックの数は16である。
【0065】
スーパーブロックSB#1に書き込まれている符号語のそれぞれは、14/16の符号化率で符号化されている。そのため、符号語に含まれるシンボル数の総数は、16である。16個のシンボルのうちの14個のシンボルは、ライトデータである情報シンボルである。16個のシンボルのうちの2個のシンボルは、消失復元符号である冗長シンボルである。
【0066】
複数の符号語の各々は、NAND型フラッシュメモリダイ#1,#2,…,#16にそれぞれ含まれる16個のブロックBLK1に跨がって書き込まれている。
【0067】
複数の符号語の各々において、NAND型フラッシュメモリダイ#1,#2,…,#14にそれぞれ含まれる14個のブロックBLK1の各々に書き込まれたデータは、1ページ分のサイズを有するライトデータである。NAND型フラッシュメモリダイ#1,#2,…,#14にそれぞれ含まれる14個のブロックBLK1の各々は、複数の符号語の各々に含まれるデータのみを記憶するためのブロックとして使用され、複数の符号語の各々に含まれる消失復元符号を記憶するためのブロックとしては使用されない。このため、同じブロックにデータと消失復元符号とが混在されることはない。なお、スーパーブロックSB#1に対する次の消去動作が実行された後は、NAND型フラッシュメモリダイ#1,#2,…,#14にそれぞれ含まれる14個のブロックBLK1の各々は、データのみを記憶するためのブロックとして使用されてもよいし、消失復元符号のみ記憶するためのブロックとして使用されてもよい。
【0068】
NAND型フラッシュメモリダイ#15および#16にそれぞれ含まれる2個のブロックBLK1の各々に書き込まれた消失復元符号は、1ページ分のサイズを有する冗長符号である。NAND型フラッシュメモリダイ#15および#16にそれぞれ含まれる2個のブロックBLK1の各々は、複数の符号語の各々に含まれる消失復元符号のみを記憶するためのブロックとして使用され、複数の符号語の各々に含まれるデータを記憶するためのブロックとしては使用されない。スーパーブロックSB#1に対する次の消去動作が実行された後は、NAND型フラッシュメモリダイ#15および#16にそれぞれ含まれる2個のブロックBLK1の各々は、消失復元符号のみを記憶するためのブロックとして使用されてもよいし、データのみを記憶するためのブロックとして使用されてもよい。
【0069】
このように、14/16の符号化率で符号化された符号語が書き込まれたスーパーブロックSB#1は、消失復元符号のみが書き込まれた物理ブロックを二つ含んでいる。したがって、コントローラ4は、消失データを符号語当たり最大2つの物理ブロックまで復元することができる。換言すれば、符号語当たりに復元可能な消失データの最大シンボル数は、2である。
【0070】
次に、第2の符号化率で符号化された符号語が書き込まれたスーパーブロックについて説明する。図5は、実施形態に係るメモリシステムにおいて、第2の符号化率でデータが書き込まれたスーパーブロックの第2の例を示す図である。図5において、15/16の符号化率を使用して生成された符号語がスーパーブロックSB#10に書き込まれている場合について説明する。ここで、スーパーブロックSB#10は、NAND型フラッシュメモリダイ#1,#2,…,#16それぞれのブロックBLK10で構成されている。そのため、スーパーブロックSB#10に含まれる物理ブロックの数は16である。
【0071】
スーパーブロックSB#10に書き込まれている符号語のそれぞれは、15/16の符号化率に基づいて符号化されている。そのため、符号語に含まれるシンボルの総数は、16である。16個のシンボルのうちの15個のシンボルは、ライトデータである情報シンボルである。16個のシンボルのうちの1個のシンボルは、消失復元符号である冗長シンボルである。
【0072】
NAND型フラッシュメモリダイ#1,#2,…,#15にそれぞれ含まれる15個のブロックBLK10の各々に書き込まれたデータは、1ページ分のサイズを有するライトデータである。NAND型フラッシュメモリダイ#1,#2,…,#15にそれぞれ含まれる15個のブロックBLK10の各々は、スーパーブロックSB#10に対する次の消去動作が実行されるまでの間、データのみを記憶するブロックとして使用される。
【0073】
NAND型フラッシュメモリダイ#16に含まれるブロックBLK10に書き込まれた消失復元符号は、1ページ分のサイズを有する冗長符号である。NAND型フラッシュメモリダイ#16のブロックBLK10は、スーパーブロックSB#10に対する次の消去動作が実行されるまでの間、消失復元符号のみを記憶するブロックとして使用される。
【0074】
このように、15/16の符号化率で符号化された符号語が書き込まれたスーパーブロックSB#10は、消失復元符号のみが書き込まれた物理ブロックを一つだけ含んでいる。したがって、コントローラ4は、消失データを符号語当たり1つの物理ブロックだけ復元することができる。換言すれば、符号語当たりに復元可能な消失データのシンボル数は、1である。
【0075】
15/16の符号化率で符号化された符号語は、14/16の符号化率で符号化された符号語と比較して、低い消失復元能力を有するが、消失復元符号が利用されない場合に無駄になる消失復元符号の量が少ないため、ライトアンプリフィケーションの増加を抑えることができる。
【0076】
次に、第3の符号化率で符号化された符号語が書き込まれたスーパーブロックについて説明する。図6は、実施形態に係るメモリシステムにおいて、第3の符号化率でデータが書き込まれたスーパーブロックの第3の例を示す図である。図6において、16/16の符号化率を使用して生成された符号語がスーパーブロックSB#20に書き込まれている場合について説明する。ここで、スーパーブロックSB#20は、NAND型フラッシュメモリダイ#1,#2,…,#16それぞれのブロックBLK20で構成されている。そのため、スーパーブロックSB#20に含まれる物理ブロックの数は16である。
【0077】
スーパーブロックSB#20に書き込まれている符号語のそれぞれは、16/16(=1)の符号化率に基づいて符号化されている。そのため、符号語に含まれるシンボル数の総数は、16である。16個のシンボルのうちの全てのシンボルが、ライトデータである情報シンボルである。このため、符号語は、消失復元符号である冗長シンボルを含まない。
【0078】
NAND型フラッシュメモリダイ#1,#2,…,#16にそれぞれ含まれる16個のブロックBLK20の各々に書き込まれたデータは、1ページ分のサイズを有するライトデータである。NAND型フラッシュメモリダイ#1,#2,…,#16にそれぞれ含まれる16個のブロックBLK20の各々は、スーパーブロックSB#20に対する次の消去動作が実行されるまでの間、データのみを記憶するブロックとして使用される。
【0079】
このように、16/16の符号化率で符号化された符号語が書き込まれたスーパーブロックSB#20は、消失復元符号のみが書き込まれた物理ブロックを含んでいない。したがって、コントローラ4は、消失データを復元できない。
【0080】
16/16の符号化率で符号化された符号語は、15/16の符号化率で符号化された符号語と比較して、より低い消失復元能力を有するが、消失復元符号が利用されない場合に無駄になる消失復元符号の量がないため、ライトアンプリフィケーションの増加をさらに抑えることができる。
【0081】
次に、第4の符号化率で符号化された符号語が書き込まれたスーパーブロックについて説明する。図7は、実施形態に係るメモリシステムにおいて、第4の符号化率でデータが書き込まれたスーパーブロックの第4の例を示す図である。
【0082】
図7において、13/15の符号化率を使用して生成された符号語がスーパーブロックSB#30に書き込まれている場合について説明する。ここで、スーパーブロックSB#30は、例えば、NAND型フラッシュメモリダイ#16に含まれるブロックを含まず、NAND型フラッシュメモリダイ#1,#2,…,#15それぞれのブロックBLK30で構成されている。そのため、スーパーブロックSB#30に含まれる物理ブロックの数は15である。スーパーブロックSB#30に属すべきNAND型フラッシュメモリダイ#16のブロックは、例えば、不良ブロックである。
【0083】
スーパーブロックSB#30に書き込まれている符号語のそれぞれは、13/15の符号化率に基づいて符号化されている。そのため、符号語に含まれるシンボル数の総数は、15である。15個のシンボルのうちの13個のシンボルは、ライトデータである情報シンボルである。15個のシンボルのうちの2個のシンボルは、消失復元符号である冗長シンボルである。
【0084】
NAND型フラッシュメモリダイ#1,#2,…,#13にそれぞれ含まれる13個のブロックBLK30の各々に書き込まれたデータは、1ページ分のサイズを有するライトデータである。NAND型フラッシュメモリダイ#1,#2,…,#13にそれぞれ含まれる13個のブロックBLK30は、スーパーブロックSB#30に対する次の消去動作が実行されるまでの間、データのみを記憶するブロックとして使用される。
【0085】
NAND型フラッシュメモリダイ#14および#15にそれぞれ含まれる2個のブロックBLK30の各々に書き込まれた消失復元符号は、1ページ分のサイズを有する冗長符号である。NAND型フラッシュメモリダイ#14および#15にそれぞれ含まれる2個のブロックBLK30の各々は、スーパーブロックSB#30に対する次の消去動作が実行されるまでの間、消失復元符号のみを記憶するブロックとして使用される。
【0086】
このように、13/15の符号化率で符号化された符号語が書き込まれたスーパーブロックSB#30は、消失復元符号のみが書き込まれた物理ブロックを二つだけ含んでいる。また、一つの符号語に含まれるライトデータの数は、13である。このため、13個のライトデータのうちの2つのライトデータに対する消失復元処理を成功させることができる。
【0087】
13/15の符号化率で符号化された符号語は、14/16の符号化率で符号化された符号語と比較して、より高い消失復元能力を有する。14/16の符号化率で符号化された符号語が14個のライトデータのうちの2つのライトデータに対する消失復元処理を成功させることができるのに対し、13/15の符号化率で符号化された符号語は、13個のライトデータのうちの2つのライトデータに対する消失復元処理を成功させることができるからである。また、13/15の符号化率で符号化された符号語は、13/16の符号化率で符号化された符号語と比較して、より低い消失復元能力を有するが、ライトアンプリフィケーションの増加を抑えることができる。
【0088】
次に、第5の符号化率で符号化された符号語が書き込まれたスーパーブロックについて説明する。図8は、実施形態に係るメモリシステムにおいて、第5の符号化率でデータが書き込まれたスーパーブロックの第5の例を示す図である。
【0089】
図8において、12/14の符号化率を使用して生成された符号語がスーパーブロックSB#40に書き込まれている場合について説明する。ここで、スーパーブロックSB#40は、例えば、NAND型フラッシュメモリダイ#15に含まれるブロックとNAND型フラッシュメモリダイ#16に含まれるブロックとを含まず、NAND型フラッシュメモリダイ#1,#2,…,#14それぞれのブロックBLK40で構成されている。そのため、スーパーブロックSB#40に含まれる物理ブロックの数は14である。スーパーブロックSB#40に属すべきNAND型フラッシュメモリダイ#15のブロックおよびスーパーブロックSB#40に属すべきNAND型フラッシュメモリダイ#16のブロックの各々は、例えば、不良ブロックである。
【0090】
スーパーブロックSB#40に書き込まれている符号語のそれぞれは、12/14の符号化率に基づいて符号化されている。そのため、符号語に含まれるシンボル数の総数は、14である。14個のシンボルのうちの12個のシンボルは、ライトデータである情報シンボルである。14個のシンボルのうちの2個のシンボルは、消失復元符号である冗長シンボルである。
【0091】
NAND型フラッシュメモリダイ#1,#2,…,#12にそれぞれ含まれる12個のブロックBLK40の各々に書き込まれたデータは、1ページ分のサイズを有するライトデータである。NAND型フラッシュメモリダイ#1,#2,…,#12にそれぞれ含まれる12個のブロックBLK40は、スーパーブロックSB#40に対する次の消去動作が実行されるまでの間、データのみを記憶するブロックとして使用される。
【0092】
NAND型フラッシュメモリダイ#13および#14にそれぞれ含まれる2個のブロックBLK40の各々に書き込まれた消失復元符号は、1ページ分のサイズを有する冗長符号である。NAND型フラッシュメモリダイ#13および14にそれぞれ含まれる2個のブロックBLK40は、スーパーブロックSB#40に対する次の消去動作が実行されるまでの間、消失復元符号のみを記憶するブロックとして使用される。
【0093】
このように、12/14の符号化率で符号化された符号語が書き込まれたスーパーブロックSB#40は、消失復元符号のみが書き込まれた物理ブロックを二つだけ含んでいる。また、一つの符号語に含まれるライトデータの数は、12である。このため、12個のライトデータのうちの2つのライトデータに対する消失復元処理を成功させることができる。
【0094】
12/14の符号化率で符号化された符号語は、13/15の符号化率で符号化された符号語と比較して、より高い消失復元能力を有する。13/15の符号化率で符号化された符号語が13個のライトデータのうちの2つのライトデータに対する消失復元処理を成功させることができるのに対し、12/14の符号化率で符号化された符号語は、12個のライトデータのうちの2つのライトデータに対する消失復元処理を成功させることができるからである。また、12/14の符号化率で符号化された符号語は、13/16の符号化率で符号化された符号語と比較して、より低い消失復元能力を有するが、ライトアンプリフィケーションの増加を抑えることができる。
【0095】
次に、符号語について説明する。図9は、実施形態に係るメモリシステムにおいて、第1の符号化率に基づいて生成された符号語を示す図である。ここで、第1の符号化率は、14/16である。
【0096】
図9における符号語に含まれるシンボルの数は、16である。16個のシンボルのうち、14個が情報シンボルであり、2個が冗長シンボルである。
【0097】
符号語に含まれる情報シンボルは、データである。データは、例えば、ホスト2から受信されたライトデータである。各データには、コントローラ4によってECCが付加される。コントローラ4は、データを読み出した際に、読み出されたデータに付加されたECCを使用して、読み出されたデータの誤り訂正を行う。
【0098】
符号語に含まれる冗長シンボルは、消失復元符号である。消失復元符号は、この符号語に含まれる全てのデータを符号化率に基づいて符号化することによって生成される。
【0099】
符号語に含まれる一つのデータがホスト2から受信されたリードコマンドによって指定された際、コントローラ4は、指定された一つのデータをNAND型フラッシュメモリ5から読み出す。コントローラ4は、読み出したデータに付加されているECCを使用して、読み出したデータの誤り訂正を行う。ECCを使用した誤り訂正に成功した場合。コントローラ4は、読み出したデータをホスト2に送信する。ECCを使用した誤り訂正が失敗した場合、コントローラ4は、読み出したデータ(消失データ)に対する消失復元処理を開始する。
【0100】
次に、メモリシステム3におけるエラー数の遷移について説明する。図10は、実施形態に係るメモリシステムにおける内部のエラーレートと、UBERとを示す図である。
【0101】
縦軸は、レートを示す。横軸は、メモリシステム3に含まれる複数のブロックの消去回数である。コントローラ4によってウェアレベリングが実行されるので、メモリシステム3に含まれる複数のブロックそれぞれの消去回数は、ほぼ同じ値を有する。そのため、横軸の消去回数は、例えば、メモリシステム3の任意のブロックの消去回数である。累積書き込み量および累積読み出し量は、時間の経過に伴って増加する。累積書き込み量に伴って各ブロックの消去回数が増加するので、各ブロックの消去回数も、時間の経過に伴って増加する。
【0102】
グラフに示される内部のエラーレートは、累積読み出し量(または累積書き込み量)に対するデータ消失の発生数の割合を示す曲線である。
【0103】
内部のエラーレートは、メモリシステム3の稼働開始期(例えば、消去回数0から消去回数aまでの間)には、例えば、利用不可能なブロックとして登録されていない不良ブロック(バッドブロック)内の不良の記憶位置からのデータの読み出しなどの影響により、比較的大きい値が計測される。この間に、バッドブロックであると判定されたブロックが、利用不可能なブロックとして登録されることにより、内部のエラーレートは次第に減少していく。
【0104】
安定動作期(例えば、消去回数aから消去回数bまでの間)では、内部のエラーレートは、安定した値を推移する。
【0105】
各ブロックの消去回数が増えるにつれてメモリシステム3が疲弊してくると(例えば、消去回数b以降)、内部のエラーレートは、再び増加する傾向となる。
【0106】
グラフに示されるUBERは、累積読み出し量(または累積書き込み量)に対するデータエラーの発生回数の割合を示す曲線である。つまり、内部のエラーレートと、UBERとの差は、消失復元処理によって消失データの復元に成功した回数である。
【0107】
本実施形態では、メモリシステム3の稼働開始期(例えば、消去回数0からaまでの間)は、バッドブロックの影響が大きいため、小さい値の符号化率(つまり、高い消失復元能力を有する消失復元符号)が使用される。例えば、予め決められた1未満の符号化率(デフォルトの符号化率)が使用される。また、UBERが閾値Th3に近い値に増加した場合には、符号化率は、デフォルトの符号化率よりも小さい値に変更される。これにより、UBERを、閾値Th3(例えば、1/1017)を超えない範囲に制御することができる。そして、内部のエラーレートが次第に減少すると、UBERも減少し始める。
【0108】
UBERの値が閾値Th1を下回ると(消去回数a)と、コントローラ4は、メモリシステム3が安定動作していると判定し、符号化率を大きい値に変更する。これにより、NAND型フラッシュメモリ5に書き込まれる消失復元符号の消失復元能力は低下される。しかし、消去回数aからbの期間における内部のエラーレートは比較的低いので、消失復元能力が低い符号語がNAND型フラッシュメモリ5に書き込まれる場合であっても、UBERは、閾値Th3(例えば、1/1017)を超えない範囲に制御される。また、NAND型フラッシュメモリ5に書き込まれる消失復元符号の量が減るので、ライトアンプリフィケーションの増加を抑制できる。さらに、消失復元符号の量が減った分だけオーバープロビジョニング領域を増やすことができる。
【0109】
各ブロックの消去回数が増えるにつれてメモリシステム3が徐々に疲弊して、内部のエラーレートが増加する。内部のエラーレートの増加に伴って、UBERの値も次第に増加する。UBERの値が閾値Th2以上になる(消去回数b)と、コントローラ4は、高い消失復元能力を有する消失復元符号が使用するために、符号化率を小さい値に変更する。これにより、UBERを、閾値Th3(例えば、1/1017)を超えない範囲に制御することができる。
【0110】
次に、符号化率情報63について説明する。図11は、実施形態に係るメモリシステムにおいて使用される符号化率情報を示す図である。図11において、スーパーブロックSB#1に書き込まれた符号語#1、およびスーパーブロックSB#2に書き込まれた符号語#2それぞれに対応する符号化率情報63が図示されている。
【0111】
例えば、符号語#1は、14/16の符号化率でスーパーブロックSB#1に書き込まれる。また、符号語#2は、16/16の符号化率でスーパーブロックSB#2に書き込まれる。
【0112】
符号語#1に対応する符号化率情報63は、符号語#1をスーパーブロックSB#1に含まれる複数のブロックに跨がって書き込む際に生成される。符号化率情報63は、スーパーブロック識別子(SBID)と、ブロック数と、消失復元符号数と、符号語#1に含まれる複数のシンボルそれぞれが書き込まれる複数のブロックの識別子と、を示す情報を含む。
【0113】
符号語#1に対応するSBIDは、スーパーブロックSB#1の識別子(=1)を示す。
【0114】
符号語#1に対応するブロック数は、スーパーブロックSB#1を構成する物理ブロックの数に対応する16を示す。ブロック数の代わりに、符号語#1に含まれるシンボルの総数を示す値が示されていてもよい。
【0115】
符号語#1に対応する消失復元符号数は、符号語#1に含まれる消失復元符号の数(=2)を示す。消失復元符号数は、符号語#1に含まれる冗長シンボルの数である。コントローラ4は、ブロック数と、消失復元符号数とを参照することによって、符号語#1に対応する符号化率を取得することができる。ここで、符号語#1に対応する符号化率は、(16-2)/16=14/16である。
【0116】
符号語#1が書き込まれたスーパーブロックSB#1は、チャンネルch1~ch16に接続され且つバンク#0に含まれる16個のNAND型フラッシュメモリダイにそれぞれ含まれる16個の物理ブロックBLK1によって構成されている。16個のNAND型フラッシュメモリダイの各々は、チャンネル番号chと、バンク番号BNKとによって識別される。そのため、符号語#1に対応する符号化率情報63は、複数のブロックの識別子として、BLK1(ch1,BNK0)と、BLK1(ch2,BNK0)と、…、BLK1(ch14,BNK0)と、BLK1(ch15,BNK0)と、BLK1(ch16,BNK0)とを示す情報を含む。例えば、BLK1(ch1,BNK0)は、NAND型フラッシュメモリダイ#1に含まれる物理ブロックBLK1を示す。
【0117】
符号化率情報63は、物理ブロックそれぞれに書き込まれるシンボルが、データ(I)であるか、または消失復元符号(Er)であるかを示す属性情報を含む。ここで、BLK1(ch0,BNK0),…,BLK1(ch14,BNK0)に対応する属性情報は、書き込まれるシンボルがデータであることを示すIである。また、BLK1(ch15,BNK0)およびBLK1(ch16,BNK0)に対応する属性情報は、書き込まれるシンボルが消失復元符号であることを示すErである。
【0118】
また、符号語#2に対応するSBIDは、スーパーブロックSB#2の識別子(=2)を示す。
【0119】
符号語#2に対応するブロック数は、スーパーブロックSB#2を構成する物理ブロックの数に対応する16を示す。ブロック数の代わりに、符号語#2に含まれるシンボルの総数を示す値が示されていてもよい。
【0120】
符号語#2に対応する消失復元符号数は、符号語#2に含まれる消失復元符号の数(=1)を示す。ここで、符号語#2に対応する符号化率は、(16-1)/16=15/16である。
【0121】
符号語#2が書き込まれたスーパーブロックSB#2は、チャンネルch1~ch16に接続され且つバンク#0に含まれる16個のNAND型フラッシュメモリダイにそれぞれ含まれる16個の物理ブロックBLK2によって構成されている。16個のNAND型フラッシュメモリダイの各々は、チャンネル番号chと、バンク番号BNKとによって識別される。そのため、符号語#2に対応する符号化率情報63は、複数のブロックの識別子として、BLK2(ch1,BNK0)と、BLK2(ch2,BNK0)と、…、BLK2(ch14,BNK0)と、BLK2(ch15,BNK0)と、BLK2(ch16,BNK0)とを示す情報を含む。
【0122】
BLK2(ch1,BNK0),…,BLK2(ch16,BNK0)に対応する属性情報は、書き込まれるシンボルがデータであることを示すIである。
【0123】
次に、データ書き込み処理およびデータ読み出し処理について説明する。図12は、実施形態に係るメモリシステムにおいて実行されるデータ書き込み処理およびデータ読み出し処理の例を示す図である。
【0124】
まず、データ書き込み処理において、ライト制御部424は、受信されたライトコマンドに関連付けられたライトデータを、ホスト2から受信する。ライト制御部424の書き込み先決定部4241は、受信したライトデータが書き込まれるべきスーパーブロックを決定する。ライト制御部424は、決定されたスーパーブロックを示す情報を符号化率情報生成部426に通知する。ライト制御部424は、受信したライトデータを累積書き込み量算出部422に受け渡す。
【0125】
累積書き込み量算出部422は、受け取ったライトデータのサイズを累積書き込み量に加算することで累積書き込み量を算出する。累積書き込み量算出部422は、算出した累積書き込み量を符号化率変更部425に通知する。そして、累積書き込み量算出部422は、受け取ったライトデータを消失復元符号化部471に受け渡す。
【0126】
累積書き込み量が通知された符号化率変更部425は、累積書き込み量と、累積読み出し量とを比較して、より小さい累積値を選択する。符号化率変更部425は、累積エラー数算出部421によって算出される累積エラー数を選択した累積値で除した値を算出する。符号化率変更部425は、算出した値が第1の閾値Th1未満であるか否かを判定する。算出した値が第1の閾値Th1未満であれば、符号化率変更部425は、現在の符号化率よりも大きい値になるように符号化率を変更する。また、符号化率変更部425は、算出した値が第2の閾値Th2以上であるか否かを判定する。算出した値が第2の閾値Th2以上である場合、符号化率変更部425は、現在の符号化率よりも小さい値になるように符号化率を変更する。第2の閾値Th2が第1の閾値Th1よりも大きい値に設定されているケースにおいては、算出した値が第1の閾値Th1よりも大きく、且つ第2の閾値Th2よりも小さい値である場合、符号化率変更部425は、現在の符号化率を維持する。
【0127】
符号化率を変更した場合、符号化率変更部425は、変更後の符号化率を消失復元符号化部471と、符号化率情報生成部426とに通知する。
【0128】
消失復元符号化部471は、累積書き込み量算出部422から受け取ったライトデータに対する符号化を実行する。消失復元符号化部471は、符号化率変更部425から通知される符号化率に基づいて、ライトデータを使用してNAND型フラッシュメモリ5に書き込まれるべき符号語を生成する。消失復元符号化部471は、生成した符号語をNAND型フラッシュメモリ5に転送する。
【0129】
NAND型フラッシュメモリ5においては、符号語は、書き込み先決定部4241によって決定された書き込み先のスーパーブロックに書き込まれる。なお、変更後の符号化率が適用されるデータは、ホスト2から受信される新たなライトデータと、ホスト2からのコピーコマンドに基づいてまたはガベージコレクションによって、NAND型フラッシュメモリ5のコピー元記憶位置からコピー先記憶位置にコピーされるコピー対象データである。変更前の符号化率で生成され且つNAND型フラッシュメモリ5に既に書き込まれている符号語は、NAND型フラッシュメモリ5にそのまま維持され、その符号化率は変更されない。変更前の符号化率で符号化されたデータは、ホスト2からのコピーコマンドに基づいてまたはガベージコレクションによって、そのデータをコピー対象データとしてコピー先記憶位置にコピーする動作が実行される際に、変更後の符号化率で符号化される。
【0130】
符号化率情報生成部426は、NAND型フラッシュメモリ5に書き込まれる符号語に対応する符号化率情報63を生成し、符号化率情報63をDRAM6に格納する。
【0131】
データ読み出し動作においては、ホスト2からのリードコマンドによって指定されたデータがNAND型フラッシュメモリ5から読み出される。このリードデータは、消失復元復号部472に転送される。
【0132】
消失復元復号部472は、リードデータに対して、ECCを使用した誤り訂正を実行する。ECCを使用した誤り訂正に成功した場合、消失復元復号部472は、リードデータを累積読み出し量算出部423に受け渡す。
【0133】
累積読み出し量算出部423は、受け取ったリードデータのサイズを累積読み出し量に加算することで累積読み出し量を算出する。累積読み出し量算出部423は、算出した累積読み出し量を符号化率変更部425に通知する。そして、累積読み出し量算出部423は、リードデータをホスト2に送信する。累積読み出し量を通知された符号化率変更部425は、累積書き込み量を通知された際と同様の処理を実行する。
【0134】
リードデータに対するECCを使用した誤り訂正に失敗した場合、リードデータは消失データとして検出される。このため、消失復元復号部472は、リードデータに対する消失復元処理を実行する。この場合、消失復元復号部472は、符号化率情報63から、リードデータ(消失データ)を含む符号語に対応する符号化率情報を取得する。この符号語が消失復元符号を含んでいない場合(符号化率=1)、消失復元復号部472は、データエラーの発生を累積エラー数算出部421に通知する。なお、この場合、データエラーの発生を示すメッセージが、コントローラ4によってホスト2に通知される。さらに、消失復元復号部472は、リードデータ(消失データ)のサイズを累積読み出し量算出部423に通知してもよい。この場合、累積読み出し量算出部423は、受け取ったリードデータのサイズを累積読み出し量に加算することで累積読み出し量を算出する。
【0135】
データエラーが通知された累積エラー数算出部421は、累積エラー数を、例えば1だけインクリメントする。なお、累積エラー数をセクタの単位でカウントする場合は、累積エラー数は、リードデータ(消失データ)に含まれるセクタの数だけインクリメントされる。累積エラー数算出部421は、インクリメントされた累積エラー数を符号化率変更部425に通知する。累積エラー数が通知された符号化率変更部425は、累積書き込み量が通知された際と同様の処理を実行する。
【0136】
また、リードデータ(消失データ)を含む符号語が消失復元符号を含んでいる場合、消失復元復号部472は、この符号語に含まれている、リードデータ(消失データ)以外の全てのデータと、この符号語に含まれている全ての消失復元符号とを、NAND型フラッシュメモリ5から読み出す。消失復元復号部472は、読み出した全てのデータと読み出した全ての消失復元符号とを使用して、リードデータ(消失データ)を復元するための消失復元処理を実行する。
【0137】
消失復元処理が成功した場合、消失復元復号部472は、ECCを使用した誤り訂正に成功した場合と同様の動作を実行する。
【0138】
消失復元処理に失敗した場合、消失復元復号部472は、符号語が消失復元符号を含んでいない場合と同様の処理を実行する。
【0139】
次に、符号化率変更処理について説明する。図13は、実施形態に係るメモリシステムにおいて実行される符号化率変更処理の手順を示すフローチャートである。コントローラ4は、累積エラー数、累積書き込み量、あるいは累積読み出し量のいずれかが更新された場合に符号化率変更処理を開始する。
【0140】
コントローラ4は、累積書き込み量が累積読み出し量よりも大きいか否かを判定する(ステップS101)。
【0141】
累積書き込み量が累積読み出し量よりも大きい場合(ステップS101でYes)、コントローラ4は、累積エラー数を累積読み出し量で除した値を算出する(ステップS102)。
【0142】
累積書き込み量が累積読み出し量よりも小さい場合(ステップS101でNo)、コントローラ4は、累積エラー数を累積書き込み量で除した値を算出する(ステップS103)。
【0143】
コントローラ4は、算出された値が第1の閾値Th1未満であるか否かを判定する(ステップS104)。
【0144】
算出された値が第1の閾値Th1未満である場合(ステップS104でYes)、コントローラ4は、符号化率を現在の符号化率よりも大きい値に設定する(ステップS105)。ここで、符号化率の最大値は1である。
【0145】
コントローラ4は、決定された符号化率を記録する(ステップS106)。
【0146】
算出された値が第1の閾値Th1以上である場合(ステップS104でNo)、コントローラ4は、算出された値が第2の閾値Th2以上であるか否かを判定する(ステップS107)。
【0147】
算出された値が第2の閾値Th2以上である場合(ステップS107でYes)、コントローラ4は、符号化率を現在の符号化率よりも小さい値に設定し(ステップS108)、決定された符号化率を記録する(ステップS106)。
【0148】
算出された値が第2の閾値Th2未満である場合(ステップS107でNo)、コントローラ4は、現在の符号化率を維持する(ステップS109)。
【0149】
ステップS106、またはステップS109の手順の後、コントローラ4は、符号化率が変更されたか否かを判定する(ステップS110)。
【0150】
符号化率が変更された場合(ステップS110でYes)、コントローラ4は、データの書き込み先スーパーブロックとして割り当てられているスーパーブロックを変更する(ステップS111)。
【0151】
符号化率が変更されていない場合(ステップS110でNo)、コントローラ4は、ステップS111の手順をスキップし、符号化率変更処理を終了する。
【0152】
次に、データ書き込み処理について説明する。図14は、実施形態に係るメモリシステムにおいて実行されるデータ書き込み処理の手順を示すフローチャートである。
【0153】
まず、コントローラ4は、ライトコマンドを受信したか否かを判定する(ステップS201)。
【0154】
ライトコマンドを受信していない場合(ステップS201でNo)、コントローラ4は、ライトコマンドを受信するまで待つ。
【0155】
ライトコマンドを受信した場合(ステップS201でYes)、コントローラ4は、受信したライトコマンドに関連付けられたライトデータをホスト2から受信する(ステップS202)。
【0156】
コントローラ4は、受信したライトデータのサイズを累積書き込み量に加算することで、累積書き込み量を更新する(ステップS203)。
【0157】
コントローラ4は、図13で説明した符号化率変更処理を実行する(ステップS204)。
【0158】
符号化率変更処理が終了すると、コントローラ4は、変更後の符号化率である現在の符号化率に基づいて、ホスト2から受信された複数のライトデータをエンコードし、これによって消失復元用の符号語を生成する(ステップS205)。ライトデータのエンコードにおいて、現在の符号化率が1未満である場合、コントローラ4は、現在の符号化率に基づいて、複数のライトデータを符号化して、複数のライトデータと一つ以上の消失復元符号とを含む符号語を生成する。現在の符号化率が1である場合、コントローラ4は、複数のライトデータを含み且つ消失復元符号を含まない符号語を生成する。
【0159】
コントローラ4は、生成した符号語をNAND型フラッシュメモリ5に書き込むデータ書き込み動作を実行する(ステップS206)。データ書き込み動作において、コントローラ4は、複数のライトデータそれぞれと0以上の消失復元符号それぞれとがNAND型フラッシュメモリ5の異なるブロックに書き込まれるように、書き込み先のスーパーブロックに含まれる複数のブロックに跨がって符号語を書き込む。符号化率が変更された場合、書き込み先のスーパーブロックが変更されて新たなスーパーブロックが書き込み先のスーパーブロックとして割り当てられる。このため、各スーパーブロックには、異なる符号化率を有する符号語が混在することはない。
【0160】
次に、データ読み出し処理について説明する。図15は、実施形態に係るメモリシステムにおいて実行されるデータ読み出し処理の手順を示すフローチャートである。
【0161】
まず、コントローラ4は、リードコマンドを受信したか否かを判定する(ステップS301)。
【0162】
リードコマンドを受信していない場合(ステップS301でNo)、コントローラ4は、リードコマンドを受信するまで待つ。
【0163】
リードコマンドを受信した場合(ステップS301でYes)、コントローラ4は、リードコマンドによって指定されたデータをNAND型フラッシュメモリ5から読み出すデータ読み出し動作を実行する(ステップS302)。
【0164】
コントローラ4は、ステップS302で読み出されたデータの消失が検出されたか否かを判定する(ステップS303)。
【0165】
データの消失が検出されなかった場合、つまり読み出されたリードデータに付加されているECCを使用したエラー訂正が成功した場合(ステップS303でNo)、コントローラ4は、リードデータ(正しいデータ)をホスト2に送信する(ステップS304)。
【0166】
コントローラ4は、送信されたリードデータのサイズを累積読み出し量に加算することで、累積読み出し量を更新する(ステップS305)。
【0167】
コントローラ4は、図13で説明された符号化率変更処理を実行する(ステップS306)。
【0168】
データの消失が検出された場合、つまりリードデータに付加されているECCを使用したエラー訂正が失敗した場合(ステップS303でYes)、コントローラ4は、リードデータが含まれる符号語の符号化率を、符号化率情報63から取得する(ステップS307)。
【0169】
コントローラ4は、取得した符号化率情報63を参照して、リードデータが含まれる符号語に対する消失復元処理を実行する(ステップS308)。ステップS308において、コントローラ4は、リードデータ(消失データ)の量が、取得した符号化率情報63によって示される冗長符号が書き込まれたブロックの数から決定される冗長符号の量を超えていない場合に、リードデータ(消失データ)を除く、符号語に含まれる残りのデータそれぞれと、符号語に含まれる冗長符号とを使用して、消失データを復元する。
【0170】
コントローラ4は、データエラーが発生したか否かを判定する(ステップS309)。データエラーは、消失復元処理が失敗した場合に発生する。
【0171】
データエラーが発生しなかった場合(ステップS309でNo)、コントローラ4は、復元に成功したリードデータをホスト2に送信する(ステップS304)。
【0172】
コントローラ4は、送信されたリードデータのサイズを累積読み出し量に加算することで、累積読み出し量を更新する(ステップS305)。
【0173】
コントローラ4は、図13で説明された符号化率変更処理を実行する(ステップS306)。
【0174】
データエラーが発生した場合(ステップS309でYes)、コントローラ4は、正しいリードデータを送信することができないことを示すエラーメッセージをホスト2に通知する(ステップS310)。
【0175】
コントローラ4は、累積エラー数を、例えば1だけインクリメントした値に更新する(ステップS311)。
【0176】
コントローラ4は、データエラーが発生したリードデータのサイズを累積読み出し量に加算することで、累積読み出し量を更新する(ステップS305)。
【0177】
コントローラ4は、図13で説明された符号化率変更処理を実行する(ステップS306)。
【0178】
次に、メモリシステム3が稼働開始してからあまり時間が経過していない状況において、累積エラー数が所定値未満である場合には、符号化率が変更されない場合の符号化率変更処理について説明する。図16は、実施形態に係るメモリシステムにおいて実行される符号化率変更処理の第2の手順を示すフローチャートである。
【0179】
まず、コントローラ4は、符号化率を変更すべきか否かを判定する(ステップS401)。ここで、コントローラ4は、例えば、図13で説明したステップS101~S104,およびS107の手順を実行することによって、符号化率を変更すべきか否かを判定する。
【0180】
符号化率を変更すべきでない場合(ステップS401でNo)、コントローラ4は、符号化率を維持する(ステップS402)。
【0181】
符号化率を変更すべき場合(ステップS401でYes)、コントローラ4は、累積エラー数が所定値以上であるか否かを判定する(ステップS403)。
【0182】
累積エラー数が所定値以上である場合(ステップS403)、コントローラ4は、データエラーの発生回数が極端に多いと判定し、現在の符号化率よりも小さい値に符号化率を決定する(ステップS404)。
【0183】
コントローラ4は、ステップS404で決定された符号化率を記録する(ステップS405)。
【0184】
累積エラー数が所定値未満である場合(ステップS403でNo)、コントローラ4は、累積書き込み量が第4の閾値未満であるか否かを判定する(ステップS406)。第4の閾値は、累積書き込み量または累積読み出し量が所定の量に達したか否かを判定するための基準値である。
【0185】
累積書き込み量が第4の閾値未満である場合(ステップS406でYes)、コントローラ4は、累積書き込み量が少なく、累積エラー数を累積書き込み量で除した値(UBER)の信頼性が十分ではないと判定し、安全性を優先するために、現在の符号化率を維持する(ステップS402)。
【0186】
累積書き込み量が第4の閾値以上である場合(ステップS406でNo)、コントローラ4は、累積読み出し量が第4の閾値未満であるか否かを判定する(ステップS407)。
【0187】
累積読み出し量が第4の閾値未満である場合(ステップS407でYes)、コントローラ4は、累積書き込み量が少なく、累積エラー数を累積読み出し量で除した値(UBER)の信頼性が十分ではないと判定し、安全性を優先するために、現在の符号化率を維持する(ステップS402)。
【0188】
累積読み出し量が第4の閾値以上である場合(ステップS407でNo)、コントローラ4は、累積エラー数を、累積書き込み量と累積読み出し量のうちのより小さい値を有するずれかの量で除した値に基づいて、符号化率を決定する(ステップS404)。
【0189】
コントローラ4は、決定された符号化率を記録する(ステップS405)。
【0190】
以上の処理により、累積エラー数が所定値よりも小さく、且つ累積書き込み量と累積読み出し量とのうちの少なくとも一つが第4の閾値よりも小さい場合には、算出されるUBERとは無関係に、例えば1未満の符号化率であるデフォルトの符号化率でライトデータを符号化することができる。
【0191】
以上説明したように、実施形態によれば、累積エラー数を累積書き込み量または累積読み出し量で除した第1の値が第1の閾値を下回った場合に符号化率が大きくなり、第1の値が第1の閾値以上の第2の閾値以上である場合に符号化率が小さくなるように、符号化率が変更される。したがって、メモリシステム3が安定動作している際に符号化率を大きくすることができるので、コントローラ4は、利用される可能性が低い消失復元符号が、NAND型フラッシュメモリ5に書き込まれる頻度を減らすことができる。このことは、メモリシステム3のライトアンプリフィケーションの増加を抑制することにつながる。
【0192】
また、コントローラ4は、符号化率を決定する際に、累積書き込み量および累積読み出し量のうと小さい方の値を使用することによって、たとえ累積書き込み量および累積読み出し量のうちの一方の値が他方の値よりも極端に大きい場合であっても、データエラーの発生頻度が低く見積もられてしまうことを避けることができる。
【0193】
またさらに、コントローラ4は、累積エラー数が所定の値よりも小さく、且つ累積書き込み量と累積読み出し量とのうちの少なくとも一つが第4の閾値よりも小さい場合、UBERの値とは無関係に、複数のライトデータを予め決められた1未満の符号化率を使用して符号化する。メモリシステム3が稼働開始してから間もない間では、累積エラー数を累積書き込み量および累積読み出し量のうち小さい方の値で除した値が不安定な値である場合があるためである。
【0194】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、更新を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0195】
1…情報処理システム、2…ホスト、3…SSD、4…コントローラ、5…NAND型フラッシュメモリ、6…DRAM、21…プロセッサ、22…メモリ、40…バス、41…ホストインタフェース、42…CPU、43…NANDインタフェース、44…DRAMインタフェース、45…DMAC、46…SRAM、47…エンコード/デコード部、61…L2Pテーブル、62…ブロック管理テーブル、63…符号化率情報、421…累積エラー数算出部、422…累積書き込み量算出部、423…累積読み出し量算出部、424…ライト制御部、425…符号化率変更部、426…符号化率情報生成部、471…消失復元符号化部、472…消失復元復号部、4241…書き込み先決定部。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16