(57)【要約】【課題】誤り訂正の演算で使用する演算結果格納領域の増大を抑えることができるメモリシステムを提供すること。【解決手段】実施形態のメモリシステムは、複数のワード線と前記複数のワード線の各々に接続されたメモリセル群を有する不揮発性メモリと、符号エンコード部と、書込み制御部を備える。前記書込み制御部は、第１乃至第ｍのメモリセル群（ｍは３以上の自然数）に対して第１乃至第ｊの書込みステージ（ｊは２以上かつｍ−１以下の自然数）を実行し、第１の書込みデータと第１の冗長データとを書込み、第ｍ＋１乃至第ｎのメモリセル群（ｎはｍ＋１以上の自然数）に対して前記第１乃至第ｊの書込みステージを実行し、第２の書込みデータと第２の冗長データとを書込む。前記第ｍのメモリセル群に対する前記第ｊの書込みステージの後、前記符号エンコード部は、前記第２の冗長データ生成用の誤り訂正符号化処理を開始する。【選択図】図１
2014134843.tif 000002
【特許請求の範囲】
【請求項１】
複数のワード線と、前記複数のワード線の各々に接続されたメモリセル群とを有する不揮発性メモリと、
ホストから受信した第１の書込みデータに基づいて誤り訂正用の第１の冗長データを生成し、前記ホストから受信した第２の書込みデータに基づいて誤り訂正用の第２の冗長データを生成する符号エンコード部と、
前記複数のワード線のうち、第１乃至第ｍのメモリセル群（ｍは３以上の自然数）の各々に対して第１乃至第ｊの書込みステージ（ｊは２以上かつｍ−１以下の自然数）を実行し、前記第１の書込みデータと前記第１の冗長データとを前記第１乃至第ｍのメモリセル群に書込み、第ｍ＋１乃至第ｎのメモリセル群（ｎはｍ＋１以上の自然数）の各々に対して前記第１乃至第ｊの書込みステージを実行し、前記第２の書込みデータと前記第２の冗長データとを前記第ｍ＋１乃至第ｎのメモリセル群に書込む書込み制御部とを備え、
前記書込み制御部は、前記第１乃至第ｊの書込みステージの各ステージで同一のデータを使用して前記メモリセル群への書込みを行い、前記第１乃至前記第ｍ−１のメモリセル群に対する前記第１乃至第ｊの書込みステージ及び前記第ｍのメモリセル群に対する第１乃至第ｊ−１の書込みステージの実行後、前記第ｍ＋１のメモリセル群に対する第ｊ−１の書込みステージを実行し、その後、前記第ｍのメモリセル群に対する前記第ｊの書込みステージを実行し、
前記符号エンコード部は、前記書込み制御部による前記第ｍのメモリセル群に対する前記第ｊの書き込みステージの実行後、前記第２の冗長データを生成するための誤り訂正符号化処理を開始するメモリシステム。
【請求項２】
前記第１の冗長データを生成するための演算結果及び前記第２の冗長データを生成するための演算結果を格納する演算結果格納バッファをさらに備え、
前記書込み制御部による前記第ｍのメモリセル群に対する前記第ｊの書き込みステージの実行後、前記符号エンコード部が、前記演算結果格納バッファから前記第１の冗長データを生成するための演算結果が格納された領域を解放し、その後、前記第２の冗長データを生成するための演算結果を前記演算結果格納バッファへ格納し、その後、前記第２の冗長データを生成するための誤り訂正符号化処理を開始する請求項１に記載のメモリシステム。
【請求項３】
前記符号エンコード部が、前記演算結果格納バッファから前記第１の冗長データを生成するための演算結果が格納された領域を解放した後、前記書込み制御部が前記第２の冗長データの前記メモリセル群への第１の書込みステージを実行する前に、前記符号エンコード部が、前記第２の冗長データを生成するための誤り訂正符号化処理を開始する請求項２に記載のメモリシステム。
【請求項４】
前記符号エンコード部が、前記演算結果格納バッファから前記第１の冗長データを生成するための演算結果が格納された領域を解放した後、前記書込み制御部による前記第ｍ＋１のメモリセル群に対する前記第ｊの書込みステージにおいて、前記符号エンコード部が、前記第２の冗長データを生成するための誤り訂正符号化処理を開始する請求項２乃至請求項３の何れか１項に記載のメモリシステム。
【請求項５】
前記不揮発性メモリが、前記複数のワード線を有するブロックを複数有し、前記書込み制御部が、前記第１の書込みデータと前記第１の冗長データを、前記ブロックごとの前記第１乃至第ｍのメモリセル群に対して書込みを行い、前記第２の書込みデータと前記第２の冗長データを、前記ブロックごとの前記第ｍ＋１乃至第ｎのメモリセル群に対して書込みを行う請求項１乃至請求項４の何れか１項に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリシステムに関する。
【背景技術】
【０００２】
各メモリセルに２ビット以上のデータを記憶する多値記憶方式のフラッシュメモリへのデータ書込みでは、メモリセル間の干渉等（以降、近接効果と称する）が問題となっており、対策として、メモリセルへのデータの書込みを２段階（２ステージ）以上に分けて行っている。例えば、ワード線（以降、ＷＬと称する）に接続されたメモリセル群へのデータ書込みを複数ステージに分け、ｋ番目のＷＬに対して第１ステージの書込みを行った後、次のｋ＋１番目のＷＬに対して第１ステージのデータ書込みを行ってから、再度ｋ番目のＷＬに対して第２ステージのデータ書込みを行うというような手順でデータ書込みが行われる。
【０００３】
このような書込み手順を持つフラッシュメモリに複数ページに分散して書かれるデータから構成される誤り訂正符号（ページ間ＥＣＣ）を適用する場合、ある誤り訂正符号のデータと別の誤り訂正符号のデータを交互に別のＷＬへ書込むタイミングが存在する。ＷＬへの書込みのタイミングに合わせて誤り訂正符号の演算も交互に行うと、両方の誤り訂正符号の演算結果を同時に保持できるサイズのＲＡＭ（Random Access Memory）やバッファが必要となってしまう。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−２２８３９４号公報
【特許文献２】特開２０１１−２３３２０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明が解決しようとする課題は、誤り訂正の演算で使用する演算結果格納領域の増大を抑えることができるメモリシステムを提供することである。
【課題を解決するための手段】
【０００６】
上記課題を達成するために、実施形態のメモリシステムは、複数のワード線と前記複数のワード線の各々に接続されたメモリセル群を有する不揮発性メモリと、符号エンコード部と、書込み制御部を備える。符号エンコード部は、ホストから受信した第１の書込みデータに基づいて誤り訂正用の第１の冗長データを生成し、前記ホストから受信した第２の書込みデータに基づいて誤り訂正用の第２の冗長データを生成する。前記書込み制御部は、前記複数のワード線のうち、第１乃至第ｍのメモリセル群（ｍは３以上の自然数）の各々に対して第１乃至第ｊの書込みステージ（ｊは２以上かつｍ−１以下の自然数）を実行し、前記第１の書込みデータと前記第１の冗長データとを前記第１乃至第ｍのメモリセル群に書込み、第ｍ＋１乃至第ｎのメモリセル群（ｎはｍ＋１以上の自然数）の各々に対して前記第１乃至第ｊの書込みステージを実行し、前記第２の書込みデータと前記第２の冗長データとを前記第ｍ＋１乃至第ｎのメモリセル群に書込み、前記第１乃至第ｊの書込みステージの各ステージで同一のデータを使用して前記メモリセル群への書込みを行い、前記第１乃至前記第ｍ−１のメモリセル群に対する前記第１乃至第ｊの書込みステージ及び前記第ｍのメモリセル群に対する第１乃至第ｊ−１の書込みステージの実行後、前記第ｍ＋１のメモリセル群に対する第ｊ−１の書込みステージを実行し、その後、前記第ｍのメモリセル群に対する前記第ｊの書込みステージを実行する。前記書込み制御部による前記第ｍのメモリセル群に対する前記第ｊの書込みステージの実行後、前記符号エンコード部が、前記第２の冗長データを生成するための誤り訂正符号化処理を開始する。
【図面の簡単な説明】
【０００７】
【図１】第１の実施形態のメモリシステムの構成例を示すブロック図。
【図２】各ワード線に接続されたメモリセル群へ第１から第３の書込みステージを実行する順番を示す概念図。
【図３】第１の実施形態の誤り訂正符号（ＲＳ符号）の構成例を示す図。
【図４】第１の実施形態の誤り訂正符号（ＸＯＲパリティ符号）の構成例を示す図。
【図５】従来のメモリシステムにおける２個の符号データ単位のシンボル群の書込み手順を示す概念図。
【図６】第１の実施形態のメモリシステムにおける２個の符号データ単位のシンボル群の書込み手順を示す概念図。
【図７】第１の実施形態のメモリシステムにおける各ワード線に接続されたメモリセル群へのデータ書込みを複数ステージに分けて行うときの各書込みステージにおける処理の手順の一例を示すフローチャート。
【図８】第２の実施形態のメモリシステムにおける１ＷＬに対して３個の符号データ単位に含まれるシンボル群を共有して書込む場合の書込み手順を示す概念図。
【図９】第３の実施形態のメモリシステムにおけるＮＡＮＤメモリ内の複数のブロックに１ＷＬ当たり３個の符号データ単位に含まれるシンボル群を格納する例を示す概念図。
【図１０】第３の実施形態のメモリシステムにおける１ＷＬに対して３個の符号データ単位に含まれるシンボル群を共有して書込む場合の書込み手順を示す概念図。
【図１１】第３の実施形態のメモリシステムにおけるＮＡＮＤメモリ内の複数のブロックに１ＷＬ当たり３個の符号データ単位に含まれるシンボル群を格納する場合のシンボル群と書込み先の関係例を示す図。
【発明を実施するための形態】
【０００８】
以下、発明を実施するための実施形態について図面を参照して説明する。
【０００９】
（第１の実施形態）
図１は、第１の実施形態のメモリシステム１の構成例を示すブロック図である。メモリシステム１は、メモリコントローラ２とＮＡＮＤメモリ３を備える。メモリシステム１は、ホスト４と接続可能であり、図１ではホスト４と接続された状態を示している。ホスト４は、例えば、パーソナルコンピュータ、携帯端末などの電子機器である。
【００１０】
ＮＡＮＤメモリ３は、データを不揮発に記憶する不揮発性メモリであり、ｎ（ｎは０以上の整数）＋１個のメモリチップ（メモリ）３１−０〜３１−ｎで構成されている。メモリ３１−ｋは、ｋ番目のメモリチップを表す。なお、ここでは、不揮発性メモリとしてＮＡＮＤメモリ３を用いる例を説明するが、ＮＡＮＤメモリ以外の記憶手段を用いてもよい。
【００１１】
メモリコントローラ２は、ホスト４からの書込みコマンドに従ってＮＡＮＤメモリ３への書込みを制御し、またホスト４からの読出しコマンドに従ってＮＡＮＤメモリ３からの読出しを制御する。メモリコントローラ２は、インターフェース部２１、データバッファ２２、符号エンコード部２３、書込み制御部２４、読出し制御部２５、符号デコード部２６、演算結果格納バッファ２７、メモリインタフェース（Ｉ／Ｆ）２８およびリードエラー検出部２９を備える。
【００１２】
インターフェース部２１は、ホスト４のインターフェース部４１と通信線により接続し、通信線の種別や規格に応じて、ホスト４と記憶装置１の間の転送処理等を実施する。通信線としては、例えば、ＳＡＴＡ（Serial Advanced Technology Attachment）のようなシリアルバスの場合や、アドレスバスとデータバスの場合などがある。インターフェース部２１は、ホスト４からの読出しコマンドや書込みコマンド等を受信するとともに当該コマンドにより転送するデータのアドレスやサイズを受信する。その後、必要なバッファ領域をデータバッファ２２上に確保して、各コマンドの処理を書込み制御部２４や読出し制御部２５に通知する。また、インターフェース部２１は、ホスト４からＮＡＮＤメモリ３への書込みデータを受信してデータバッファ２２へ格納し、ＮＡＮＤメモリ３から読出されてデータバッファ２２へ格納された読出しデータをホスト４へ転送する。
【００１３】
データバッファ２２は、メモリコントローラ２がホスト４から受信したデータをＮＡＮＤメモリ３へ記憶するまでに一時格納したり、ＮＡＮＤメモリ３から読出したデータをホスト４へ送信するまでに一時格納したりするために使用されるメモリであり、例えば、ＳＲＡＭ（Static Random Access Memory）やＤＲＡＭ（Dynamic Random Access Memory）などの汎用メモリで構成される。
【００１４】
書込み制御部２４は、データバッファ２２に格納された書込みデータをＮＡＮＤメモリ３へ書込む処理を制御する。具体的には、書込み制御部２４は、データバッファ２２上のデータを書込むＮＡＮＤメモリ３上の領域を決定し、データをデータバッファ２２から読出して符号エンコード部２３に転送し、また符号エンコード部２３により生成された符号の冗長部を書込むＮＡＮＤメモリ３上の領域を決定し、データおよび冗長部をメモリＩ／Ｆ２８に転送する。また、書込み制御部２４は、メモリＩ／Ｆ２８への書込みデータの転送が終了すると、転送が終了した書込みデータが格納されていたデータバッファ２２の領域を解放する。
【００１５】
符号エンコード部２３は、書込み制御部２４から転送されたデータに基づいて、誤り訂正符号化処理を実施し誤り訂正用の冗長シンボルを生成する。誤り訂正符号としてはどのような符号を用いてもよいが、例えば、ＲＳ（Reed−Solomon）符号やＸＯＲパリティ符号等を用いることができる。誤り訂正符号の種類は限定するものではないが、符号化後に情報シンボルと冗長シンボルとに明確に分離できる組織符号に属する符号が好ましい。すなわち、１個の誤り訂正符号は情報シンボルと冗長シンボルから構成され、情報シンボルは誤り訂正符号の元となったデータであり、冗長シンボルは誤り訂正符号化で生成付加された部分である。符号化の際、演算結果を演算結果格納バッファ２７に格納しておき、格納されたデータと書込み制御部２４から転送されたデータを使用して、冗長シンボルを生成する。本実施の形態では、１つの誤り訂正符号を構成する各シンボルは、ＮＡＮＤメモリ３において異なる書込み単位に記録されるように配置される。一般に誤り訂正符号の１シンボル辺りのビット数よりメモリの書込み単位サイズの方がはるかに大きいため、書込み単位サイズのデータは複数のシンボルを含むシンボル群になる。
【００１６】
書込みエラーとしては、ビット単位のランダム誤りもあるが、ＷＬ単位で周辺回路が故障することによるページ単位でのバースト誤りもある。ページ単位での誤りが発生した場合、１つの誤り訂正符号を同一ページ内の情報シンボル群に基づいて生成すると、ＮＡＮＤメモリ３から冗長シンボルが読出せたとしても、当該符号の元になった情報シンボル群を１つも読出せないことになり、復号ができなくなる。このため、１つの誤り訂正符号を生成するシンボル群は、ＮＡＮＤメモリ３の異なるページに分散させて格納することが望ましい。１つの誤り訂正符号を生成するシンボル群を異なるページに分散させて格納する場合の誤り訂正符号の構成例については、図３、図４で後述する。
【００１７】
演算結果格納バッファ２７は、符号エンコード部２３が誤り訂正符号化処理を実施する際の演算結果を格納するためのバッファであり、例えば、ＳＲＡＭ（Static Random Access Memory）やＤＲＡＭ（Dynamic Random Access Memory）などの汎用メモリが使用される。また、演算結果格納バッファ２７は、データバッファ２２の一部に含まれるように構成してもよい。
【００１８】
メモリＩ／Ｆ２８は、ＮＡＮＤメモリ３への書込みや読出しを直接制御するコントローラである。メモリＩ／Ｆ２８は、書込み制御部２４から転送された書込みデータをＮＡＮＤメモリ３へ転送して、当該書込みデータを書込み制御部２４が決定した書込み領域に書込むよう指示する。また、メモリＩ／Ｆ２８は、読出し制御部２５から読出しを指示されたデータをＮＡＮＤメモリ３から読出し、読出し制御部２５へ転送する。また、ＮＡＮＤメモリ３からのステータス信号等を受信する。
【００１９】
リードエラー検出部２９は、メモリＩ／Ｆ２８がＮＡＮＤメモリ３からデータを読出した際に、読出しに失敗したか成功したか、すなわち読出しエラーの有無を検出し、その検出結果をメモリＩ／Ｆ２８へ通知する。読出しに失敗したか成功したかの判断はどのような方法で行ってもよいが、例えば、ＮＡＮＤメモリ３から出力されるステータス信号等により判断してもよいし、書込み時に誤り検出符号を付加してＮＡＮＤメモリ３へ格納し、誤り検出符号を用いた誤り検出処理で誤りが検出された場合に読出に失敗したと判断してもよい。
【００２０】
読出し制御部２５は、インターフェース部２１経由で通知されたホスト４からの読出しコマンドに従って、読出しを要求されたデータ（読出し対象データ）をＮＡＮＤメモリ３からデータを読出す処理を制御する。具体的には、読出し制御部２５は、読出しを要求されたデータをＮＡＮＤメモリ３からデータを読出すようメモリＩ／Ｆ２８へ指示するとともに、データバッファ２２上の領域に読出したデータを格納する領域を割当てる。読出し制御部２５は、リードエラー検出部２９によりエラーが検出されなかった場合は、読出しデータをデータバッファ２２上の割当てた領域に格納する。また、読出し制御部２５は、リードエラー検出部２９がエラーを検出した場合、エラーの検出されたデータに対応する誤り訂正符号を構成するシンボル全てについて、ＮＡＮＤメモリ３への記憶位置を特定して読出すようメモリＩ／Ｆ２８へ指示する。そして、読出し制御部２５は、読出したそれらのシンボルを符号デコード部２６に転送して誤り訂正処理を実施するよう指示する。その後、当該読出しデータに割当てられていたデータバッファ２２上の領域に誤り訂正処理後のデータを転送する。
【００２１】
符号デコード部２６は、読出し制御部２５から転送されたデータに基づいて復号処理を実施し、誤り訂正後の読出しデータを読出し制御部２５へ転送する。
【００２２】
図２は、各ワード線に接続されたメモリセル群へ第１から第３の書込みステージを実行する順番を示す概念図である。ここで、各メモリセルには３ビットデータの記憶が可能である。この図の書込み順の“１”〜“１５”が第１、第２、第３の書込みステージの実行順を示す。
【００２３】
最初に、ＷＬ０に対して第１の書込みステージを実行する。すなわち、書込み制御部２４が、ＷＬ０への書込み対象のデータをメモリＩ／Ｆ２７に転送し、メモリＩ／Ｆ２７が、書込み制御部２４から転送された書込みデータをＮＡＮＤメモリ３へ転送して、当該書込みデータをＷＬ０に書き込むよう指示する。
【００２４】
次の書込みでは、ＷＬ１に対して第１の書込みステージを実行する。すなわち、書込み制御部２４は、ＷＬ１への書込み対象のデータをメモリＩ／Ｆ２７に転送し、メモリＩ／Ｆ２７が、書込み制御部２４から転送された書込みデータをＮＡＮＤメモリ３へ転送して、当該書込みデータをＷＬ１に書き込むよう指示する。
【００２５】
次の書込みでは、ＷＬ０に対して第２の書込みステージを実行する。すなわち、書込み制御部２４は、ＷＬ０への書込み対象のデータをメモリＩ／Ｆ２７に転送し、メモリＩ／Ｆ２７が、書込み制御部２４から転送された書込みデータをＮＡＮＤメモリ３へ転送して、当該書込みデータをＷＬ０に書き込むよう指示する。
【００２６】
次の書込みでは、ＷＬ２に対して第１の書込みステージを実行する。すなわち、書込み制御部２４が、ＷＬ２への書込み対象のデータをメモリＩ／Ｆ２７に転送し、メモリＩ／Ｆ２７が、書込み制御部２４から転送された書込みデータをＮＡＮＤメモリ３へ転送して、当該書込みデータをＷＬ２に書き込むよう指示する。
【００２７】
次の書込みでは、ＷＬ１に対して第２の書込みステージを実行する。すなわち、書込み制御部２４は、ＷＬ１への書込み対象のデータをメモリＩ／Ｆ２７に転送し、メモリＩ／Ｆ２７が、書込み制御部２４から転送された書込みデータをＮＡＮＤメモリ３へ転送して、当該書込みデータをＷＬ１に書き込むよう指示する。
【００２８】
以上の手順で書込みを続けていき、各ＷＬに対して第１から第３の書込みステージを実行する。それぞれの書込みステージでは３ページ分のデータを書込む。このように、ＷＬを変更しながら第１から第３の書込みステージを順番に実行することにより、近接効果を低減することができる。
【００２９】
図３、４は、本実施形態の誤り訂正符号の構成例を示す図である。図３は、ＲＳ符号を用いる例を示し、図４は、ＸＯＲパリティを用いる例を示している。図３のＲＳ符号を用いる例では、１シンボルを８ビット、図４のＸＯＲパリティを用いる例では１シンボルを１ビットとする。各シンボル群のサイズは、１ページ分のデータサイズである１６Ｋバイトとする。なお、ここでは１シンボルを１ビットまたは８ビットとし、１ページを１６Ｋバイトとしているが、１シンボルのビット数、１ページのデータサイズは、これらに限定されない。
【００３０】
図３の例では、シンボル群＃０〜シンボル群＃２９の３０個のシンボル群を情報シンボル群＃０〜＃２９とし、シンボル群＃３０、シンボル群＃３１を冗長シンボル群＃０〜＃１としている。
【００３１】
図３のＲＳ符号３０１として示した、シンボル群＃０〜シンボル群＃３１の３２シンボルは、１つのＲＳ符号に対応するシンボルである。ＲＳ符号３０１内の情報シンボル群＃０〜＃２９のそれぞれ１シンボルずつ（合計３０シンボル）に基づいて、ＲＳ符号３０１内の冗長シンボル群＃３０、３１の１シンボルずつ（計２シンボル）の冗長シンボルが生成される。そして、各シンボル群＃０〜＃３１をそれぞれ異なるページに書込むことにより、１つのＲＳ符号に対応する３２個のシンボルは異なるページに格納されることになる。
【００３２】
図４の例では、シンボル群＃０〜シンボル群＃３０の３１個のシンボル群を情報シンボル群＃０〜＃３０とし、シンボル群＃３１を冗長シンボル群＃０としている。情報シンボル群＃０〜＃３０のそれぞれ１シンボルずつ（合計３１シンボル）に基づいて冗長シンボル群＃０の１つの冗長シンボルを生成する。そして、各シンボル群＃０〜＃３１をそれぞれ異なるページに書込むことにより、１つのパリティ符号に対応するシンボル群＃０〜シンボル群＃３１は異なるページに格納されることになる。
【００３３】
なお、以上述べた誤り訂正符号の構成は例であり、誤り訂正符号の種類、情報シンボルと冗長シンボルの比率等は、図３、４の例に限定されない。
【００３４】
以降では、１つの誤り訂正符号を構成する情報シンボルと冗長シンボルの合計の数をｎ、情報シンボルの数をｋとする。ｎ個のシンボル群（情報シンボル群と対応する冗長シンボル群）を符号データ単位と呼ぶこととする。図３の例ではｎ＝３２、ｋ＝３０であり、３２シンボル群で１つの符号データ単位を構成し、そのうち３０シンボル群が情報シンボル群である。また、図４の例ではｎ＝３２、ｋ＝３１である。
【００３５】
図５は、従来のメモリシステムにおける２個の符号データ単位のシンボル群の書込み手順を示す概念図である。図２と同様に各ＷＬへの３ページ分のデータ書込みが第１から第３の書込みステージにより実行される。図５の例ではｎ＝１５、ｋ＝１３であり、１５シンボル群で１つの符号データ単位を構成し、そのうち１３シンボル群が情報シンボル群、２シンボル群が冗長シンボル群である。１５シンボル群からなる符号データ単位のそれぞれのデータを符号データ＃０、符号データ＃１とした場合、符号データ＃０と符号データ＃１はＷＬを共有することなく書込みが実施される。
【００３６】
なお、符号エンコード部２３による誤り訂正符号の生成処理（符号エンコード処理）では、演算の入力となるシンボルが増えるごとに、シンボルが増える前までの演算結果を用いて誤り訂正符号を更新することが可能である。すなわち、ｘ（０），ｘ（１），…，ｘ（ｑ−１）のシンボルを用いて求めた誤り訂正符号をＥｑとするとき、ｘ（０），ｘ（１），…，ｘ（ｑ）のシンボルを用いた誤り訂正符号は、Ｅｑとｘ（ｑ）を用いて生成することができることとする。ｎｄ個のシンボルを用いて生成した誤り訂正符号をＮＡＮＤメモリ３へ格納する最終的な誤り訂正符号として生成する場合に、符号エンコード部２３がｎｄ個未満のシンボルを用いて生成した誤り訂正符号（例えば、前述のＥｑ）が演算中間結果となり、演算結果格納バッファ２７に格納する。
【００３７】
図５の書込み順１３から書込み順１８のところに示すように、ＷＬに書込むデータが、符号データ＃０から符号データ＃１に切り替わる際、符号データ＃０に含まれるシンボル群と符号データ＃１に含まれるシンボル群を交互にＷＬへ書込むタイミングがある。図５の書込み順１３で、符号データ＃１の誤り訂正符号化処理の演算を開始する一方、書込み順１８で、符号データ＃０の冗長シンボル群のＷＬへの第３の書込みステージが終了した後、符号データ＃０の誤り訂正符号化処理の演算結果格納用の領域を演算結果格納バッファ２７から解放する。このため、このタイミングでは、符号データ＃０と符号データ＃１の両方の演算結果を演算結果格納バッファ２７に格納する必要が生じる。
【００３８】
冗長シンボル群は２シンボル群であるため、符号データ＃０、符号データ＃１それぞれの演算結果格納用に、１６ｋバイト×２シンボル＝３２ｋバイト必要となり、符号データ＃０と符号データ＃１の両方の演算結果を格納する場合、３２ｋバイト×２＝６４ｋバイト必要になる。そのため、誤り訂正符号化処理の演算結果の格納用に６４Ｋバイト必要になる。
【００３９】
このように従来のメモリシステムにおけるＮＡＮＤメモリへの書込み処理では、ＷＬに書込まれる符号データが切り替わる際、それぞれの符号データのシンボル群を交互にＷＬへ書込むタイミングがあり、このタイミングにおいて、誤り訂正符号化処理の演算も交互に行うと、両方の符号データについての誤り訂正符号化処理の演算結果を演算結果格納バッファ２７に格納する必要が生じるという問題があった。
【００４０】
これに対し、本実施形態のメモリシステムでは、誤り訂正符号化処理の演算順序を入れ替えることで、ＷＬへ書込む符号データが切り替わる際、それぞれの符号データのシンボル群を交互にＷＬへ書込むタイミングにおいても、一方の符号データについての誤り訂正符号化処理の演算結果のみを演算結果格納バッファ２７に格納することとなり、演算結果の格納領域の増大を抑えることができる。
【００４１】
図６は、本実施形態のメモリシステムにおける、２個の符号データ単位のシンボル群の書込み手順を示す概念図である。図５と同様に１５シンボル群で１つの符号データ単位となり、そのうち１３シンボル群が情報シンボル群、２シンボル群が冗長シンボル群である。各ＷＬへの３ページ分のデータ書込みが第１から第３の書込みステージにより実行され、１５シンボル群からなる符号データ単位のそれぞれのデータを符号データ＃０、符号データ＃１とした場合、符号データ＃０と符号データ＃１はＷＬを共有することなく書込みが実施される。図６の書込み順１３では、図５の書込み順１３の場合と異なり、符号データ＃１の誤り訂正符号化処理の演算を開始せず、書込み順１８において、符号データ＃０の冗長シンボル群のＷＬへの第３の書込みステージが終了した後、演算結果格納バッファ２７から符号データ＃０の誤り訂正符号化処理の演算結果格納用の領域を解放し、書込み順１９において、演算結果格納バッファ２７に符号データ＃１の誤り訂正符号化処理の演算結果格納用の領域を確保し、符号データ＃１の誤り訂正符号化処理の演算を開始し、冗長シンボル群の第１の書込みステージである書込み順２５までに、符号データ＃１の誤り訂正符号化処理の演算を終了させる。つまり、符号データ＃１の先頭の情報シンボルが書込まれるＷＬへの第３の書込みステージのタイミングにおいて、誤り訂正符号化処理の演算を開始し、それ以外のＷＬに書込むシンボル群については、最終のＷＬの第１の書込みステージの開始前に符号データ＃１の誤り訂正符号化処理の演算を行う。この場合、符号データ＃０と符号データ＃１の誤り訂正符号化処理の演算結果のうち一方のみを演算結果格納バッファ２７に格納すればよく、必要となるエリアは３２Ｋバイトとなる。
【００４２】
図７は本実施形態のメモリシステムにおける、各ワード線に接続されたメモリセル群へのデータ書込みを複数ステージに分けて行うときの各書込みステージにおける処理の手順の一例を示すフローチャートである。
【００４３】
メモリコントローラ２は、符号データＣ（ｋ）についての誤り訂正符号化処理の演算結果格納用の領域（以降、符号データＣ（ｋ）用の領域と称する）を演算結果格納バッファ２７に確保済みか判定する（ステップ７０１）。符号データＣ（ｋ）のｋは符号データを識別するための番号であり、符号データ＃０が符号データＣ（０）に、符号データ＃１が符号データＣ（１）に該当する。符号データＣ（ｋ）用の領域を演算結果格納バッファ２７に確保済みでない場合（ステップ７０１：Ｎｏ）、メモリコントローラ２は、符号データＣ（ｋ−１）についての誤り訂正符号化処理の演算結果格納用の領域（以降、符号データＣ（ｋ−１）用の領域と称する）が演算結果格納バッファ２７から解放されているか判定し（ステップ７０２）、解放済みの場合（ステップ７０２：Ｙｅｓ）、符号データＣ（ｋ）用の領域を演算結果格納バッファ２７に確保する（ステップ７０３）。符号データＣ（ｋ）用の領域を演算結果格納バッファ２７に確保済みの場合（ステップ７０１：Ｙｅｓ）、又は、符号データＣ（ｋ）用の領域を演算結果格納バッファ２７に確保済みでなく（ステップ７０１：Ｎｏ）符号データＣ（ｋ−１）用の領域が演算結果格納バッファ２７から解放されていない場合（ステップ７０２：Ｎｏ）、書込み対象のデータに情報シンボル群が含まれているか判定するステップ（ステップ７０４）へ進む。
【００４４】
次に、メモリコントローラ２は、書込み対象のデータに情報シンボル群が含まれているか判定する（ステップ７０４）。書込み対象のデータに情報シンボル群が含まれていない場合（ステップ７０４：Ｎｏ）、書込み対象のデータに冗長シンボル群が含まれているか判定を行うステップ（ステップ７０９）へ進む。書込み対象のデータに情報シンボル群が含まれている場合（ステップ７０４：Ｙｅｓ）、符号データＣ（ｋ）用の領域を演算結果格納バッファ２７に確保済みか判定する（ステップ７０５）。確保済みの場合（ステップ７０５：Ｙｅｓ）、書込み対象の情報シンボル群のデータを使用した誤り訂正符号化処理の演算を実行済みか判定し（ステップ７０６）、実行済みでない場合（ステップ７０６：Ｎｏ）、書込み対象の情報シンボル群のデータを、符号エンコード部２３へ転送し、符号エンコード部２３が情報シンボル群に基づいて誤り訂正符号化処理の演算を実行する（ステップ７０７）。演算結果格納用の領域を演算結果格納バッファ２７に確保済みで（ステップ７０５：Ｙｅｓ）、書込み対象の情報シンボル群のデータを使用した誤り訂正符号化処理の演算も実行済みの場合（ステップ７０６：Ｙｅｓ）、情報シンボル群のデータをメモリＩ／Ｆ２８へ転送し（ステップ７０８）、ＮＡＮＤメモリ３上の書込み領域へ書込むよう指示する。また、符号データＣ（ｋ）用の領域を演算結果格納バッファ２７に確保済みでない場合（ステップ７０５：Ｎｏ）、情報シンボル群のデータをメモリＩ／Ｆ２８へ転送し（ステップ７０８）、ＮＡＮＤメモリ３上の書込み領域へ書込むよう指示する。
【００４５】
次に、メモリコントローラ２は、書込み対象のデータに冗長シンボル群が含まれているか判定し（ステップ７０９）、含まれていない場合（ステップ７０９：Ｎｏ）、ＮＡＮＤメモリ３において、メモリＩ／Ｆ２８から転送されたシンボル群のメモリセル群への書込み（プログラム）が実施される（ステップ７１１）。
【００４６】
書込み対象のデータに冗長シンボル群が含まれている場合（ステップ７０９：Ｙｅｓ）、メモリコントローラ２は、冗長シンボル群のデータをメモリＩ／Ｆ２８へ転送し（ステップ７１０）、ＮＡＮＤメモリ３上の書込み領域へ書込むよう指示する。その後、ＮＡＮＤメモリ３において、メモリＩ／Ｆ２８から転送されたシンボル群のメモリセル群への書込み（プログラム）が実施される（ステップ７１１）。
【００４７】
次に、メモリコントローラ２は、現在の書込みステージが符号データＣ（ｋ）の最終ＷＬへの最終の書込みステージか否かを判定する（ステップ７１２）。最終書込みステージでない場合（ステップ７１２：Ｎｏ）、当該書込みステージの処理を終了する。最終書込みステージの場合（ステップ７１２：Ｙｅｓ）、符号データＣ（ｋ）の演算結果格納用領域を解放し（ステップ７１３）、当該書込みステージの処理を終了する。
【００４８】
以上のように、第１の実施形態によれば、メモリコントローラ２が、先頭ＷＬに書込まれるシンボル群のデータについては最終の書込みステージで誤り訂正符号化処理の演算を行い、最終ＷＬに書込まれるシンボル群のデータについては第１の書込みステージで誤り訂正符号化処理の演算を行い、それ以外のＷＬに書込まれるシンボル群のデータについては最終ＷＬへの第１の書込みステージの開始前に演算する。演算結果格納バッファ２７に確保する誤り訂正符号化処理の演算結果格納用の領域を、１つの符号データ単位についての誤り訂正符号化処理の演算に必要な分だけに抑えることができる。
【００４９】
（第２の実施形態）
図８は、第２の実施形態のメモリシステムにおける、１ＷＬに対して３個の符号データ単位に含まれるシンボル群を共有して書込む場合の書込み手順を示す概念図である。また、第２の実施形態によるメモリシステムの構成は図１に示した第１の実施形態のメモリシステム１の構成と同一である。
【００５０】
図８の例ではｎ＝５、ｋ＝４であり、５シンボル群で１つの符号データ単位を構成し、そのうち４シンボル群が情報シンボル群、１シンボル群が冗長シンボル群である。各ＷＬへの３ページ分のデータ書込みが第１から第３の書込みステージにより実行される。それぞれの５シンボル群からなる符号データ単位のそれぞれのデータを符号データ＃０、符号データ＃１、符号データ＃２、符号データ＃３、符号データ＃４、符号データ＃５とした場合、符号データ＃０と符号データ＃１と符号データ＃２に含まれるそれぞれのシンボル群が１つのＷＬに共有して書込まれ、符号データ＃３と符号データ＃４と符号データ＃５に含まれるそれぞれのシンボル群が１つのＷＬに共有して書込まれる。
【００５１】
図８の例では、最初に、符号データ＃０と符号データ＃１と符号データ＃２のそれぞれの情報シンボル群＃０を共有してＷＬ０へ第１の書込みステージによる書込みが実行される。次に、符号データ＃０と符号データ＃１と符号データ＃２のそれぞれの情報シンボル群＃１を共有してＷＬ１へ第１の書込みステージによる書込みが実行される。次に、符号データ＃０と符号データ＃１と符号データ＃２のそれぞれの情報シンボル群＃０を共有してＷＬ０へ第２の書込みステージによる書込みが実行される。次に、符号データ＃０と符号データ＃１と符号データ＃２のそれぞれの情報シンボル群＃２を共有してＷＬ２へ第１の書込みステージによる書込みが実行される。次に、符号データ＃０と符号データ＃１と符号データ＃２のそれぞれの情報シンボル群＃１を共有してＷＬ１へ第２の書込みステージによる書込みが実行される。次に、符号データ＃０と符号データ＃１と符号データ＃２のそれぞれの情報シンボル群＃０を共有してＷＬ０へ第３の書込みステージによる書込みが実行される。以上のような書込みを続けることにより、各ＷＬに対して第１から第３の書込みステージが実行される。このように、ＷＬを変更しながら第１から第３の書込みステージを順番に実行することにより、近接効果を低減することができる。
【００５２】
１個の符号データ単位当たりの冗長シンボル数は１個であり、ＷＬを共有する符号データ単位の数は３個のため、誤り訂正符号化処理の演算結果を保存するのに必要なエリアは、シンボル群のサイズである１６ｋバイトにＷＬを共有する符号データ単位の数である３を掛けた４８Ｋバイトとなる。
【００５３】
図８の書込み順１３では、符号データ＃３、符号データ＃４、符号データ＃５についての誤り訂正符号化処理を開始せず、書込み順１８において、符号データ＃０、符号データ＃１、符号データ＃２についての冗長シンボル群のＷＬへの第３の書込みステージが終了した後、演算結果格納バッファ２７から符号データ＃０、符号データ＃１、符号データ＃２についての誤り訂正符号化処理の演算結果格納用の領域を解放し、書込み順１９において、符号データ＃３、符号データ＃４、符号データ＃５についての誤り訂正符号化処理の演算結果格納用に演算結果格納バッファ２７の領域を確保し、誤り訂正符号化処理の演算を開始する。その後、書込み順２５における冗長シンボル群の第１の書込みステージまでに、符号データ＃３、符号データ＃４、符号データ＃５の誤り訂正符号化処理の演算を終了させる。この場合、符号データ＃０と符号データ＃１と符号データ＃２の誤り訂正符号化処理の演算結果、符号データ＃３と符号データ＃４と符号データ＃５の誤り訂正符号化処理の演算結果のうち一方の演算結果のみを演算結果格納バッファ２７に格納すればよく、必要となるエリアは４８Ｋバイトとなる。
【００５４】
本実施形態のメモリシステムにおいても、各書込みステージにおける処理の手順の一例として図７のフローチャートを適用できる。本実施形態のメモリシステムのように、１ＷＬに対して３個の符号データ単位に含まれるシンボル群を共有して書込む場合、ＷＬへの書込みを共有する３個の符号データ単位のデータがＣ（ｋ）に該当する。例えば、図８の場合、符号データ＃０と符号データ＃１と符号データ＃２のシンボル群が１ＷＬに共有して書込まれ、また符号データ＃３と符号データ＃４と符号データ＃５のシンボル群が１ＷＬに共有して書込まれるため、符号データ＃０と符号データ＃１と符号データ＃２をまとめたものを符号データＣ（０）、符号データ＃３と符号データ＃４と符号データ＃５をまとめたものを符号データＣ（１）とすることで、図７のフローチャートを適用できる。
【００５５】
上述した第２の実施形態によれば、メモリコントローラ２は、１ＷＬに対して複数の符号データ単位に含まれるシンボル群を共有して書込む場合であっても、先頭ＷＬに書込まれるシンボル群のデータについては最終の書込みステージで誤り訂正符号化処理の演算を行い、最終ＷＬに書込まれるシンボル群のデータについては第１の書込みステージで誤り訂正符号化処理の演算を行い、それ以外のＷＬに書込まれるシンボル群のデータについては最終ＷＬへの第１の書込みステージの開始前に演算する。演算結果格納バッファ２７に確保する誤り訂正符号化処理の演算結果格納用の領域を、ＷＬを共有してデータ書込みが行われる符号データ単位についての誤り訂正符号化処理の演算に必要な分だけに抑えることができる。
【００５６】
（第３の実施形態）
図９は、第３の実施形態のメモリシステムにおける、ＮＡＮＤメモリ３内の複数のブロックに１ＷＬ当たり３個の符号データ単位に含まれるシンボル群を格納する例を示す概念図である。第３の実施形態のメモリシステムでは、ＮＡＮＤメモリ３に複数のメモリチップがありそれぞれのブロックへの並列書込みが可能であり、図９では、シンボル群がブロック０からブロック１５のそれぞれのＷＬへ並列して書込まれる例を示している。このブロックは、メモリチップ３１−０〜３１−ｎにおける物理的な記憶領域としての物理ブロックであって、メモリチップ３１−０〜３１−ｎのデータ消去の単位である。また、第３の実施形態によるメモリシステムの構成は図１に示した第１の実施形態のメモリシステム１の構成と同一である。
【００５７】
図１０は、第３の実施形態のメモリシステムにおいて、１ＷＬに対して３個の符号データ単位に含まれるシンボル群を共有して書込む場合の書込み手順を示す概念図であり、図９に示したシンボル群の書込み手順を示している。図９、図１０の例ではｎ＝１２８、ｋ＝１２６であり、１２８シンボル群で１つの符号データ単位を構成し、そのうち１２６シンボル群が情報シンボル群、２シンボル群が冗長シンボル群である。図９、図１０の例では、各ＷＬへの３ページ分のデータ書込みが第１から第３の書込みステージにより実行され、１２８シンボル群からなる符号データ単位のデータをそれぞれ符号データ＃０、符号データ＃１、符号データ＃２、符号データ＃３、符号データ＃４、符号データ＃５とした場合、符号データ＃０と符号データ＃１と符号データ＃２のそれぞれのシンボル群がＷＬを共有して書込まれ、符号データ＃３と符号データ＃４と符号データ＃５のそれぞれのシンボル群がＷＬを共有して書込まれる。
【００５８】
ＷＬへの書込み手順は、第２の実施形態におけるメモリシステムの場合と同様であり、図１０の例では、最初に、各ブロックのＷＬ０へ第１の書込みステージによる書込みが実行される。次に、各ブロックのＷＬ１へ第１の書込みステージによる書込みが実行される。次に、各ブロックのＷＬ０へ第２の書込みステージによる書込みが実行される。次に、各ブロックのＷＬ２へ第１の書込みステージによる書込みが実行される。次に、各ブロックのＷＬ１へ第２の書込みステージによる書込みが実行される。次に、各ブロックのＷＬ０へ第３の書込みステージによる書込みが実行される。以上のような書込みを続けることにより、各ＷＬに対して第１から第３の書込みステージが実行される。このように、ＷＬを変更しながら第１から第３の書込みステージを順番に実行することにより、近接効果を低減することができる。
【００５９】
図１１は、第３の実施形態のメモリシステムにおけるＮＡＮＤメモリ内の複数のブロックに１ＷＬ当たり３個の符号データ単位に含まれるシンボル群を格納する場合の符号データ＃０、符号データ＃１、符号データ＃２のシンボル群と書込み先の関係例を示す図である。図１０の書込み順１における書込みデータを例に採ると、符号データ＃０、符号データ＃１、符号データ＃２の情報シンボル群＃０がブロック０のＷＬ０、情報シンボル群＃１がブロック１のＷＬ０、情報シンボル群＃２がブロック２のＷＬ０へ、情報シンボル群＃３がブロック３のＷＬ０へ、情報シンボル群＃４がブロック４のＷＬ０へ、情報シンボル群＃５がブロック５のＷＬ０へ、情報シンボル群＃６がブロック６のＷＬ０へ、情報シンボル群＃７がブロック７のＷＬ０へ、情報シンボル群＃８がブロック８のＷＬ０へ、情報シンボル群＃９がブロック９のＷＬ０へ、情報シンボル群＃１０がブロック１０のＷＬ０へ、情報シンボル群＃１１がブロック１１のＷＬ０へ、情報シンボル群＃１２がブロック１２のＷＬ０へ、情報シンボル群＃１３がブロック１３のＷＬ０へ、情報シンボル群＃１４がブロック１４のＷＬ０へ、情報シンボル群＃１５がブロック１５のＷＬ０へ並列書込みされる。
【００６０】
符号データ＃３、符号データ＃４、符号データ＃５についての誤り訂正符号化処理の演算は、図１０の書込み順２２における符号データ＃３、符号データ＃４、符号データ＃５の先頭の情報シンボルの第１の書込みステージのタイミングで開始するのではなく、書込み順２７において、符号データ＃０、符号データ＃１、符号データ＃２の冗長シンボル群のＷＬへの第３の書込みステージが終了した後、演算結果格納バッファ２７における符号データ＃０、符号データ＃１、符号データ＃２についての誤り訂正符号化処理の演算結果格納用の領域を解放した後、書込み順２８において、演算結果格納バッファ２７に符号データ＃３、符号データ＃４、符号データ＃５についての誤り訂正符号化処理の演算結果格納用の領域を確保し、符号データ＃３、符号データ＃４、符号データ＃５についての誤り訂正符号化処理の演算を開始する。つまり、符号データ＃３、符号データ＃４、符号データ＃５の先頭の情報シンボルについては、ＷＬに対する第３の書込みステージのタイミングにおいて、誤り訂正符号化処理の演算を開始し、それ以外のＷＬに書込むシンボル群については、最終のＷＬへの第１の書込みステージの開始前に誤り訂正符号化処理の演算を行う。この場合、符号データ＃０、符号データ＃１、符号データ＃２についての誤り訂正符号化処理の演算結果と符号データ＃３、符号データ＃４、符号データ＃５についての誤り訂正符号化処理の演算結果のうち一方のみを演算結果格納バッファ２７に格納することとなる。１つの符号データ単位当たりの冗長シンボル数は２個であり、３個の符号データ単位に含まれるシンボル群がＷＬを共有して書込まれるため、演算結果格納バッファ２７に必要となる誤り訂正符号化処理の演算結果格納用の領域は、シンボル群のサイズである１６ｋバイトにシンボル数である２とＷＬを共有する符号データ単位の数である３を掛けた９６Ｋバイトとなる。
【００６１】
上述した第３の実施形態によれば、並列書込み可能な複数のブロックに同時にデータ書込みを行う場合であっても、先頭ＷＬに書込まれるシンボル群のデータは最終の書込みステージで誤り訂正符号化処理の演算を行い、それ以外のＷＬに書込まれるシンボル群のデータについては最終ＷＬへの第１の書込みステージの開始前に演算する。演算結果格納バッファ２７に確保する誤り訂正符号化処理の演算結果格納用の領域を、ＷＬを共有してデータ書込みが行われる符号データ単位についての誤り訂正符号化処理の演算に必要な分だけに抑えることができる。
【００６２】
なお、本発明は、上述の実施形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
【００６３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これらの実施形態は、その他のさまざまな形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これらの実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【００６４】
１・・・メモリシステム
２・・・メモリコントローラ
３・・・ＮＡＮＤメモリ
４・・・ホスト
２１，４１・・・インターフェース部
２３・・・符号エンコード部
２４・・・書込み制御部
２５・・・読出し制御部
２６・・・符号デコード部
２７・・・演算結果格納バッファ
２８・・・メモリＩ／Ｆ
２９・・・リードエラー検出部
【図１】
2014134843.tif 000003
【図２】
2014134843.tif 000004
【図３】
2014134843.tif 000005
【図４】
2014134843.tif 000006
【図５】
2014134843.tif 000007
【図６】
2014134843.tif 000008
【図７】
2014134843.tif 000009
【図８】
2014134843.tif 000010
【図９】
2014134843.tif 000011
【図１０】
2014134843.tif 000012
【図１１】
2014134843.tif 000013