(57)【要約】  本発明は、フラッシュメモリの誤り訂正回路の回路規模を縮小することを目的とする。本発明は、複数のメモリに対するデータの書き込み、読み出しを制御する、誤り訂正機能付きコントローラであって、バッファメモリと、誤り訂正回路と、複数のメモリのそれぞれに対応して設けられメモリとデータのやりとりを行う複数のインターフェースモジュールとを備え、複数のインターフェースモジュールはメモリからセクターデータとそのセクターデータに対応する誤り訂正符号を受信し受信したセクターデータと誤り訂正符号に基づきシンドロームを生成するシンドローム生成機能部を備え、バッファメモリは複数のセクターデータを一時的に格納し、誤り訂正回路は複数の前記シンドローム生成機能部によって生成されるシンドロームに基づいて誤りの発生しているアドレスを決定すると共に、バッファメモリに格納されたセクターデータにおけるアドレスに対応するビットを訂正する。
2010013437.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリに対するデータの書き込み、読み出しを制御する、誤り訂正機能付きコントローラであって、
バッファメモリと、
誤り訂正回路と、
前記複数のメモリのそれぞれに対応して設けられ、前記メモリとデータのやりとりを行う複数のインターフェースモジュールとを備え、
前記複数のインターフェースモジュールは、前記メモリからセクターデータとそのセクターデータに対応する誤り訂正符号を受信し、前記受信したセクターデータと誤り訂正符号に基づきシンドロームを生成するシンドローム生成機能部を備え、
前記バッファメモリは複数の前記セクターデータを一時的に格納し、
前記誤り訂正回路は、複数の前記シンドローム生成機能部によって生成される夫々のシンドロームに対応して、誤りの発生しているアドレスを決定すると共に、前記バッファメモリに格納された前記セクターデータにおける前記アドレスに対応するビットを訂正する
ことを特徴とする誤り訂正機能付きコントローラ。
【請求項２】
前記インターフェースモジュールがメモリインターフェースモジュールである
ことを特徴とする請求項１に記載の誤り訂正機能付きコントローラ。
【請求項３】
前記誤り訂正機能付きコントローラはさらに処理順序判定機能部を有し、
前記処理順序判定機能部は複数の前記シンドローム生成機能部からの訂正が必要か否かの情報をもとにして、複数の前記セクターデータのうち誤り訂正を行う対象となるセクターデータのスケジューリングを行う
ことを特徴とする請求項２に記載の誤り訂正機能付きコントローラ。
【請求項４】
前記処理順序判定機能部のスケジューリングが、誤り訂正が必要なセクターデータのなかでアドレスの若いセクターデータを優先的に処理するものである
ことを特徴とする請求項３に記載の誤り訂正機能付きコントローラ。
【請求項５】
前記処理順序判定機能部のスケジューリングが、さらにｎセクター（ｎは２以上の自然数）の範囲のセクターデータのみを誤り訂正の対象とするものである
ことを特徴とする請求項４に記載の誤り訂正機能付きコントローラ。
【請求項６】
前記ｎセクターは前記訂正機能付きコントローラ外部にセクター分のデータを出力するのに要する時間と、セクター分の誤り訂正処理とを行う時間をもとに決定される
ことを特徴とする請求項５に記載の誤り訂正機能付きコントローラ。
【請求項７】
前記処理順序判定機能部のスケジューリングが、さらに誤り訂正の対象範囲を設定する期間と、誤り訂正の対象範囲とを設定しない期間を設けるものである
ことを特徴とする請求項５に記載の誤り訂正機能付きコントローラ。
【請求項８】
前記誤り訂正の対象範囲を設定する期間と設定しない期間は、メモリからのセクターデータ読み出し時間と、誤り訂正処理を行う時間とをもとに決定される
ことを特徴とする請求項７に記載の誤り訂正機能付きコントローラ。
【請求項９】
複数のメモリと、
前記複数のメモリに対するデータの書き込み、読み出しを制御する、請求項２〜８のうちのいずれか一に記載の誤り訂正機能付きコントローラとを備えた
ことを特徴とする誤り訂正機能付き記憶装置。
【請求項１０】
前記メモリが不揮発性メモリである
ことを特徴とする請求項９に記載の誤り訂正機能付き記憶装置。
【請求項１１】
請求項９又は１０に記載の誤り訂正機能付き記憶装置と、
前記記憶装置に対してデータの書き込み、読み出しを行うホスト機器とを有する
ことを特徴とする誤り訂正機能付きシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリ等の誤り訂正が必要なメモリに対する誤り訂正機能を備えたコントローラ、そのようなメモリに対する誤り訂正機能を備えた記憶装置、及び、当該記憶装置を用いる誤り訂正機能を備えたシステムに関する。
【背景技術】
【０００２】
近年、書き換え可能な半導体デバイスとしての不揮発性メモリであるＮＡＮＤタイプのフラッシュメモリを搭載した不揮発性記憶装置としてのメモリーカードは、デジタルカメラや携帯電話の記憶媒体としてその市場規模を拡大している。そして更に、廉価な記憶デバイスとして、メモリーカード以外、例えばＨＤＤ置き換えのＳＳＤや、ホスト機器に直接搭載するメモリ等にも、適用が拡がっている。【０００３】
同時に、半導体デバイスとしてプロセスの微細化に伴い記憶容量の増加が進んでいる。記憶容量の増加は、記憶媒体に格納できるデータの容量の増加に繋がる。データの容量の増加は、そのデータへのアクセスの利便性のために読み出し・書き込み時間の高速化の要求に繋がる。【０００４】
一方で、プロセスの微細化が及ぼす影響の別の面として、フラッシュメモリの信頼性の低下が挙げられる。フラッシュメモリの微細化に伴い、情報を記憶するための電子の数が少なくなる。そのことはリテンション、リードディスターブ、プログラムディスターブ等の種々の劣化要因を引き起こす。そこで、誤り訂正機能を搭載して、フラッシュメモリを使用する記憶装置の信頼性を向上させる手法が一般的に用いられている。【０００５】
図９は、従来の記憶装置である不揮発性記憶装置の一例のブロック図である。図９を用いて誤り訂正機能の適用状況について説明する。図９に示す不揮発性記憶装置９０１は、誤り訂正機能を備えたコントローラ９０２と不揮発性メモリ９０３からなる。不揮発性記憶装置９０１は、アドレスを指定した上での外部からのデータの書込みや読み出しが可能であり、書き込まれたデータを不揮発で記憶する。不揮発性メモリ９０３は、不揮発性記憶装置９０１に書き込まれるデータを不揮発性記憶装置９０１内にて記憶するメモリである。【０００６】
コントローラ９０２は、ホストＩ／Ｆ（インターフェース）９０４、バッファメモリ９０５、及び、メモリＩ／Ｆ（インターフェース）モジュール９０６からなる。バッファメモリ９０５は、複数のデータバッファ９０７からなる。個々のデータバッファ９０７は、それぞれ１セクター（５１２バイト）分のデータを格納できる。【０００７】
メモリＩ／Ｆモジュール９０６は、メモリＩ／Ｆ（インターフェース）９０９、訂正符号生成機能部９１０、シンドローム生成機能部９１１、誤り位置検出回路９１２、及び、誤り訂正回路９１３からなる。メモリＩ／Ｆモジュール９０６は、対応する不揮発性メモリ９０３とバッファメモリ９０５との間のデータの転送を行う。訂正符号生成機能部９１０は、不揮発性メモリ９０３にデータを書き込む際に、書き込みを行うデータに対応する誤り訂正符号を生成する。訂正符号生成機能部９１０で生成された誤り訂正符号は、メモリＩ／Ｆ９０９を介して対応する不揮発性メモリ９０３に書き込まれる。【０００８】
シンドローム生成機能部９１１は、不揮発性メモリ９０３からデータが読み出される際に、データとその対応する誤り訂正符号とを読み出してシンドロームの演算を行う。シンドローム生成機能部９１１で行った演算の結果は、誤り位置検出回路９１２へ送られる。誤り位置検出回路９１２は、シンドローム生成機能部９１１から送られるシンドロームを基に、誤りの発生しているデータのアドレス位置を演算によって決定する。誤り訂正回路９１３は、誤り位置検出回路９１２で演算によって決定したアドレス位置のデータをデータバッファ９０７から読み出し、誤りを訂正してデータバッファ９０７に書き戻す。【０００９】
図１０は、従来の記憶装置である不揮発性記憶装置の別例のブロック図である。図１０に示す不揮発性記憶装置は、複数のＩ／Ｆに接続される複数の不揮発性メモリを備える。図１０に示す不揮発性記憶装置では、複数のＩ／Ｆで複数の不揮発性メモリを制御する、即ち複数のＩ／Ｆが同時に動作するので、メモリＩ／Ｆモジュールも複数備わり訂正符号の生成やシンドロームの演算を並行して行う。【００１０】
前述のように、誤り訂正機能部を搭載することによりフラッシュメモリの信頼性を向上させることは、現在一般的に利用されている技術である。しかし、フラッシュメモリ自身の信頼性の低下は、より高性能、即ち誤り訂正能力の大きな誤り訂正回路を必要としている。【００１１】
図１１は、従来の不揮発性記憶装置における誤り訂正回路の回路規模の例を示す表である。図１１に示す数値は、５２８バイト当たりで４バイト訂正可能なリードソロモン（Ｒｅａｄ−Ｓｏｌｏｍｏｎ）符号を実装した回路における訂正符号生成機能部、シンドローム生成機能部、及び、誤り訂正機能部の比率である。図１１の表から明らかなように、誤り訂正機能部の回路規模が他に比べて大きい。【００１２】
訂正符号生成機能部やシンドローム生成機能部の回路規模は、ほぼＥＣＣ符号のビット数に比例して増加するが、誤り訂正機能部は演算を行う部位であるため、誤り訂正能力を向上させようとすると回路規模の増加の割合が急激に大きくなる。【００１３】
また、訂正符号生成やシンドローム生成は、不揮発性メモリとのデータ転送時に同時に処理が行われる。しかしながら、誤り訂正は、転送後に独立して行われる処理であるので、その演算処理速度がそのまま記憶装置の全体処理速度に影響を与えてしまう。このような観点からも誤り訂正の演算速度の高速化は求められている。しかしながら、演算速度の高速化は、回路規模を更に増大させる要因となってしまう。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開平１０−１４５２３８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１５】
上述のように、フラッシュメモリの信頼性を維持向上するために必要とされる誤り訂正回路であるが、誤り訂正能力を大きくすることで回路規模が増大してしまうことが課題となっている。本発明は、誤り訂正回路が高い誤り訂正能力を保持しつつ、その回路規模を削減することを目的とする。
【課題を解決するための手段】
【００１６】
上記の目的を達成するために、本発明の誤り訂正機能付きコントローラは、
複数のメモリに対するデータの書き込み、読み出しを制御する、誤り訂正機能付きコントローラであって、
バッファメモリと、
誤り訂正回路と、
前記複数のメモリのそれぞれに対応して設けられ、前記メモリとデータのやりとりを行う複数のインターフェースモジュールとを備え、
前記複数のインターフェースモジュールは、前記メモリからセクターデータとそのセクターデータに対応する誤り訂正符号を受信し、前記受信したセクターデータと誤り訂正符号に基づきシンドロームを生成するシンドローム生成機能部を備え、
前記バッファメモリは複数の前記セクターデータを一時的に格納し、
前記誤り訂正回路は、複数の前記シンドローム生成機能部によって生成される夫々のシンドロームに対応して、誤りの発生しているアドレスを決定すると共に、前記バッファメモリに格納された前記セクターデータにおける前記アドレスに対応するビットを訂正する。【００１７】
上記の目的を達成するために、本発明の本発明の誤り訂正機能付き記憶装置は、
誤り訂正機能付きコントローラと複数のメモリからなる誤り訂正機能付き記憶装置であり、前記誤り訂正機能付きコントローラは、
複数のメモリに対するデータの書き込み、読み出しを制御する、誤り訂正機能付きコントローラであって、
バッファメモリと、
誤り訂正回路と、
前記複数のメモリのそれぞれに対応して設けられ、前記メモリとデータのやりとりを行う複数のインターフェースモジュールとを備え、
前記複数のインターフェースモジュールは、前記メモリからセクターデータとそのセクターデータに対応する誤り訂正符号を受信し、前記受信したセクターデータと誤り訂正符号に基づきシンドロームを生成するシンドローム生成機能部を備え、
前記バッファメモリは複数の前記セクターデータを一時的に格納し、
前記誤り訂正回路は、複数の前記シンドローム生成機能部によって生成される夫々のシンドロームに対応して、誤りの発生しているアドレスを決定すると共に、前記バッファメモリに格納された前記セクターデータにおける前記アドレスに対応するビットを訂正する。【００１８】
上記の目的を達成するために、本発明の本発明の誤り訂正機能付きシステムは、
誤り訂正機能付き記憶装置とホスト機器からなる誤り訂正機能付きシステムであり、
前記誤り訂正機能付き記憶装置は、
誤り訂正機能付きコントローラと複数のメモリからなる誤り訂正機能付き記憶装置であり、
前記誤り訂正機能付きコントローラは、
複数のメモリに対するデータの書き込み、読み出しを制御する、誤り訂正機能付きコントローラであって、
バッファメモリと、
誤り訂正回路と、
前記複数のメモリのそれぞれに対応して設けられ、前記メモリとデータのやりとりを行う複数のインターフェースモジュールとを備え、
前記複数のインターフェースモジュールは、前記メモリからセクターデータとそのセクターデータに対応する誤り訂正符号を受信し、前記受信したセクターデータと誤り訂正符号に基づきシンドロームを生成するシンドローム生成機能部を備え、
前記バッファメモリは複数の前記セクターデータを一時的に格納し、
前記誤り訂正回路は、複数の前記シンドローム生成機能部によって生成される夫々のシンドロームに対応して、誤りの発生しているアドレスを決定すると共に、前記バッファメモリに格納された前記セクターデータにおける前記アドレスに対応するビットを訂正する。
【発明の効果】
【００１９】
本発明によれば、不揮発性記憶装置において誤り訂正回路の機能の一部を複数のＩ／Ｆ間で共有することになるが、依然として誤り訂正回路の訂正能力を落とさず、更に回路規模を削減し延いてはコントローラ及び記憶装置の低コスト化を実現することができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の第１の実施形態に係る誤り訂正機能付き不揮発性記憶装置のブロック図である。
【図２】本発明の第１の実施形態に係る不揮発性記憶装置におけるデータ読み出しのタイミングチャートの一つの例である。
【図３】本発明の第１の実施形態に係る不揮発性記憶装置内のコントローラの誤り訂正機能に関する処理のフローチャートである。
【図４】本発明の第１の実施形態に係る不揮発性記憶装置の誤り訂正処理時間とホストへのデータ転送時間の関係を表す図である。
【図５】本発明の第１の実施形態に係る不揮発性記憶装置におけるデータ読み出しのタイミングチャートの別の例であり、スケジューリングを行うものの例である。更に、不揮発性メモリに格納されるデータに誤りが発生している場合についてのタイミングチャートの例である。
【図６】本発明の第１の実施形態に係る不揮発性記憶装置におけるデータ読み出しのタイミングチャートの別の例であり、スケジューリングを行わないものの例である。更に、不揮発性メモリに格納されるデータに誤りが発生している場合についてのタイミングチャートの例である。
【図７】本発明の第２の実施形態に係る不揮発性記憶装置内のコントローラの誤り訂正機能に関する処理のフローチャートである。
【図８】本発明の第２の実施形態に係る不揮発性記憶装置の誤り訂正処理時間と不揮発性メモリへのデータ転送時間の関係を表す図である。
【図９】従来の記憶装置である不揮発性記憶装置の一例のブロック図である。
【図１０】従来の記憶装置である不揮発性記憶装置の別例のブロック図である。
【図１１】従来の不揮発性記憶装置における誤り訂正回路の回路規模の例を示す表である。
【発明を実施するための形態】
【００２１】
［第１の実施形態］
以下、図面を参照して、本発明の好適な実施の形態を説明する。
【００２２】
図１は、本発明の第１の実施形態に係る誤り訂正機能付き不揮発性記憶装置１０１のブロック図である。該ブロック図にはデータの概略の流れも示されている。
【００２３】
図１に示す不揮発性記憶装置１０１は、概略、誤り訂正機能を備えたコントローラ１０２、不揮発性メモリ＃Ａ１３１、不揮発性メモリ＃Ｂ１３２、不揮発性メモリ＃Ｃ１３３、及び、不揮発性メモリ＃Ｄ１３４からなる。不揮発性記憶装置１０１は、アドレスを指定した上での外部からのデータの書込みや読み出しが可能であり、書き込んだデータは不揮発で記憶される。不揮発性メモリ＃Ａ１３１〜＃Ｄ１３４は、不揮発性記憶装置１０１に書き込まれるデータを記憶するメモリである。不揮発性記憶装置１０１は、ホスト５０によってデータの書き込み、読み出しがなされる。
【００２４】
コントローラ１０２は、ホスト５０との間でコマンド及びデータのやりとりを行うホストＩ／Ｆ１０４を備える。さらに、コントローラ１０２は、バッファメモリ１０５、メモリＩ／Ｆモジュール＃Ａ１６１、メモリＩ／Ｆモジュール＃Ｂ１６２、メモリＩ／Ｆモジュール＃Ｃ１６３、メモリＩ／Ｆモジュール＃Ｄ１６４、誤り位置検出回路１１２、誤り訂正回路１１３、処理順序判定回路１１４、及び、訂正レジスタ１１５からなる。ここで、不揮発性メモリ＃Ａ１３１〜＃Ｄ１３４を複数個備える理由は、複数個の不揮発性メモリの並列動作により不揮発性記憶装置１０１へのデータの書き込みおよび不揮発性記憶装置１０１からのデータの読み出しの性能を向上させることにある。各不揮発性メモリに対しては一般的には巡回的に順番にデータが格納される。
【００２５】
バッファメモリ１０５は、複数のデータバッファ１０７と、夫々のデータバッファ１０７に対応するシンドローム部１０８とからなる。個々のデータバッファ１０７は夫々、１セクター（５１２バイト）分のデータを格納できる。個々のシンドローム部１０８は夫々、対応するデータバッファ１０７の１セクター分のデータ及びそのデータに対応する誤り訂正符号が（後述のシンドローム生成機能部１１１により）不揮発性メモリ＃Ａ１３１〜＃Ｄ１３４から読み出されてシンドローム演算を為された結果を、格納する。
【００２６】
メモリＩ／Ｆモジュール＃Ａ１６１〜＃Ｄ１６４は、夫々、メモリＩ／Ｆ１０９、訂正符号生成機能部１１０、及びシンドローム生成機能部１１１からなる。メモリＩ／Ｆ１０９は、夫々対応する不揮発性メモリ＃Ａ１３１〜＃Ｄ１３４とバッファメモリ１０５との間のデータの転送を行う。訂正符号生成機能部１１０は、不揮発性メモリ＃Ａ１３１〜＃Ｄ１３４にデータを書き込む際に、書き込みを行うデータに対応する誤り訂正符号を生成する。訂正符号生成機能部１１０で生成された誤り訂正符号は、メモリＩ／Ｆ１０９を介して対応する不揮発性メモリ＃Ａ１３１〜＃Ｄ１３４に書き込まれる。
【００２７】
シンドローム生成機能部１１１は、不揮発性メモリ＃Ａ１３１〜＃Ｄ１３４からデータを読み出す際に、データとその対応する誤り訂正符号とを読み出してシンドロームの演算を行う。シンドローム生成機能部１１１で演算を行った結果は、バッファメモリ１０５内のシンドローム部１０８に格納される。
【００２８】
訂正レジスタ１１５は複数の訂正フラグ部１１６を含み、該訂正フラグ部１１６には誤り訂正が必要か否かの情報が格納される。個々の訂正フラグ部１１６は夫々、バッファメモリ１０５のデータバッファ１０７及びシンドローム部１０８と対応している。つまり、データバッファ１０７とシンドローム部１０８と訂正フラグ１１６とで、組みを構成している。従って、不揮発性メモリ＃Ａ１３１〜＃Ｄ１３４から１セクターのデータが読み出されると、セクター毎のデータについて、データバッファ１０７に１セクターのデータが、シンドローム部１０８に１セクターのデータに対応するシンドロームが、及び、訂正フラグ１１６に該セクターのデータに対する誤り訂正が必要か否かの情報が、格納される。
【００２９】
誤り位置検出回路１１２は、誤り訂正回路１１３を介してバッファメモリ１０５のシンドローム部１０８からシンドロームを読み出して、誤りの発生しているビットのアドレスの演算を行う。誤り訂正回路１１３は、処理順序判定回路１１４の判定結果に基づき訂正レジスタ１１５の訂正フラグ１１６を確認して、訂正が必要なセクターに対してはバッファメモリ１０５のシンドローム部１０８からシンドロームを読み出して誤り位置検出回路１１２に転送し、バッファメモリ１０５のデータバッファ１０７の内の、誤り位置検出回路１１２で演算を行った結果である誤りの発生しているビットのアドレスにおける、データを読み出して訂正してデータバッファ１０７に書き戻す。このように、本発明の第１の実施形態に係る半導体記憶装置では、複数のメモリＩ／Ｆモジュール＃Ａ１６１〜＃Ｄ１６４のシンドローム生成機能部１１１からの情報を訂正レジスタ１１５に集約し、その集約された情報を誤り訂正回路１１３が参照して、順番に誤り訂正を行う構成を採っている。
【００３０】
図２は、本発明の第１の実施形態に係る不揮発性記憶装置におけるデータ読み出しのタイミングチャートの一つの例である。ただし、図２は不揮発性メモリに格納されるデータに誤りが発生していない場合のタイミングチャートの例である。
【００３１】
図２において、まず、「不揮発性メモリ＃ＡＩ／Ｆ」は不揮発性メモリ＃Ａ１３１からデータを読み出すＩ／Ｆの信号、「不揮発性メモリ＃ＢＩ／Ｆ」は不揮発性メモリ＃Ｂ１３２からデータを読み出すＩ／Ｆの信号、「不揮発性メモリ＃ＣＩ／Ｆ」は不揮発性メモリ＃Ａ１３３からデータを読み出すＩ／Ｆの信号、「不揮発性メモリ＃ＤＩ／Ｆ」は不揮発性メモリ＃Ａ１３４からデータを読み出すＩ／Ｆの信号である。また、「ホストＩ／Ｆ」はホストＩ／Ｆ１０４から外部のホスト５０にデータを読み出すＩ／Ｆの信号である。
【００３２】
更に、「バッファメモリの状態」は、バッファメモリ１０５の夫々のデータバッファ１０７に不揮発性メモリ＃Ａ１３１〜＃Ｄ１３４から読み出されるデータが格納されてから、該データがホストＩ／Ｆ１０４を通じて不揮発性記憶装置１０１外部に出力されるまでを、示している。なお、第１の実施形態に係るバッファメモリ１０５では、１６個のデータバッファ（データバッファ０〜データバッファ１５）が設けられており、不揮発性記憶装置１０１外部からのアドレスを１６で除算した剰余に対応する番号のデータバッファに夫々データが格納されるものとしている。つまり、アドレスが０のデータはデータバッファ０に、アドレスが１のデータはデータバッファ１に、アドレスが１６のデータはデータバッファ０（１６÷１６＝１・・・０）に、及び、アドレスが１００のデータはデータバッファ４（１００÷１６＝６・・・４）に、格納される。
【００３３】
なお、図２のタイミングチャートの最上部は時間の流れを示している（図５、図６の他のタイミングチャートも同様である。）。
【００３４】
図１及び図２を用いて、不揮発性メモリに格納されるデータに誤りが発生していない場合の、本発明の第１の実施形態に係る誤り訂正機能付き記憶装置の（読み出し時の）動作について、説明する。
【００３５】
最初に時間ｔ０では、不揮発性記憶装置１０１外部のホストからアドレスを指定したデータの読み出しコマンドが発行されて、アドレスに対応するデータおよび該データ以降のアドレスのデータが不揮発性メモリ＃Ａ１３１〜＃Ｄ１３４から読み出され転送が開始される。ここでは、一般的な不揮発性メモリたるＮＡＮＤタイプのフラッシュメモリのデータの書き込みサイズである２Ｋバイトを基本とした動作を前提として説明を進めるので、不揮発性メモリＡ１３１〜＃Ｄ１３４には、４セクター（＝２Ｋバイト÷５１２バイト）毎に巡回的に順番にデータが割り振られて格納されているものとする。
【００３６】
従って、不揮発性メモリ＃Ａ１３１からセクター０のデータが、不揮発性メモリ＃Ｂ１３２からセクター４のデータが、不揮発性メモリ＃Ｃ１３３からセクター８のデータが、不揮発性メモリ＃Ｄ１３４からセクター１２のデータが、読み出されて、夫々のメモリＩ／Ｆ１０９を経由して、バッファメモリ１０５の対応するデータバッファ１０７（即ち、データバッファ０、データバッファ４、データバッファ８、及び、データバッファ１２）に夫々格納される。この際に不揮発性メモリ＃Ａ１３１〜＃Ｄ１３４から読み出されるデータと誤り訂正符号とを基に、各シンドローム生成機能部１１１でシンドロームの演算を行い、演算結果を対応するシンドローム部１０８と訂正フラグ部１１６に格納する。
【００３７】
次に、時間ｔ１では、不揮発性メモリ＃Ａ１３１からセクター１のデータが、不揮発性メモリ＃Ｂ１３２からセクター５のデータが、不揮発性メモリ＃Ｃ１３３からセクター９のデータが、不揮発性メモリ＃Ｄ１３４からセクター１３のデータが、読み出されて、夫々のメモリＩ／Ｆ１０９を経由して、バッファメモリ１０５の対応するデータバッファ１０７（即ち、データバッファ１、データバッファ５、データバッファ９、及び、データバッファ１３）に夫々格納される。上記時間ｔ０の場合と同様に、この際に不揮発性メモリ＃Ａ１３１〜＃Ｄ１３４から読み出されるデータと誤り訂正符号とを基に、各シンドローム生成機能部１１１でシンドロームの演算を行い、演算結果を対応するシンドローム部１０８と訂正フラグ部１１６に格納する。また、セクター０のデータがデータバッファ０に格納されているので、同じ時間ｔ１において該データがホストＩ／Ｆ１０４を経由して不揮発性記憶装置外部に出力される。
【００３８】
次に、時間ｔ２では、不揮発性メモリ＃Ａ１３１からセクター２のデータが、不揮発性メモリ＃Ｂ１３２からセクター６のデータが、不揮発性メモリ＃Ｃ１３３からセクター１０のデータが、不揮発性メモリ＃Ｄ１３４からセクター１４のデータが、読み出されて、夫々のメモリＩ／Ｆ１０９を経由して、バッファメモリ１０５の対応するデータバッファ１０７（即ち、データバッファ２、データバッファ６、データバッファ１０、及び、データバッファ１４）に夫々格納される。上記時間ｔ０、ｔ１の場合と同様に、この際に不揮発性メモリ＃Ａ１３１〜＃Ｄ１３４から読み出されるデータと誤り訂正符号とを基に、各シンドローム生成機能部１１１でシンドロームの演算を行い、演算結果を対応するシンドローム部１０８と訂正フラグ部１１６に格納する。また、セクター１のデータがデータバッファ１に格納されているので、同じ時間ｔ２において該データがホストＩ／Ｆ１０４を経由して不揮発性記憶装置外部に出力される。
【００３９】
以降同様に、夫々の不揮発性メモリ＃Ａ１３１〜＃Ｄ１３４からデータが夫々のメモリＩ／Ｆ１０９を介してバッファメモリ１０５に読み出されて、ホストＩ／Ｆ１０４を介して不揮発性記憶装置１０１外部に出力される。
【００４０】
時間ｔ４では、セクター３〜１５までのデータがデータバッファ３〜１５に格納されるので、ホストＩ／Ｆ１０４を介して順番に連続して不揮発性記憶装置１０１外部にそれらデータが出力される。また同時に時間ｔ４において、セクター１６を格納すべきデータバッファ０に格納されていたセクター０のデータは既に外部に出力済みであるので、不揮発性メモリ＃Ａ１３１からは続けてセクター１６のデータが読み出され得る。しかし、セクター２０、２４、２８を格納すべきデータバッファ４、８、１２には、未だセクター４、８、１２のデータが不揮発性記憶装置１０１外部に出力されずにいる。そのためこの時に、不揮発性メモリ＃Ｂ１３２〜＃Ｄ１３４からデータをバッファメモリ１０５に読み出すことはできない。ただし、対応するデータバッファに格納されたデータが不揮発性記憶装置１０１外部に出力された後に、順次読み出される。
【００４１】
（前述のように）図２では、不揮発性メモリに格納されるデータに誤りが発生していない場合のタイミングチャートを示しているが、この不揮発性記憶装置１０１外部へのデータの読み出しにおいて、処理順序判定回路１１４は、ホストＩ／Ｆ１０４で不揮発性記憶装置１０１外部に転送されているデータのアドレス、及び、メモリＩ／Ｆ１０９でバッファメモリ１０８に読み出されているデータのアドレスを常に認識して、誤り訂正回路１１３に対して誤り訂正を適用するアドレスの範囲を通知している。誤り訂正回路１１３は、処理順序判定回路１１４から通知される誤り訂正可能なアドレス範囲に従って、訂正レジスタ１１５の中の訂正フラグ１１６を確認して、誤り訂正が必要とのデータが格納されていれば、対応するセクターの誤りを訂正する（但し、上記では、誤りが発生していない場合を記載している。）。
【００４２】
図５及び図６は、本発明の第１の実施形態に係る不揮発性記憶装置におけるデータ読み出しのタイミングチャートの別の例であり、不揮発性メモリに格納されるデータに誤りが発生している場合のタイミングチャートの例である。これらについての説明の前に、まず、図３に示す不揮発性記憶装置１０１内のコントローラ１０２の誤り訂正機能に関する処理のフローチャートを用いて本発明の第１の実施形態に係る不揮発性記憶装置における誤り訂正の流れを説明する。
【００４３】
不揮発性記憶装置１０１からデータを読み出す際には、前に記したように処理順序判定回路１１４では、ホストＩ／Ｆ１０４から出力されるセクターのアドレスを認識している。このことがステップ３０１に示されている。ステップ３０１では、ホスト５０が読み出すセクターのアドレス（ＨＡＤＲとする）を取得する。
【００４４】
次にステップ３０２では、エラー認識領域を決定する。このことはステップ３０１と同様に、処理順序判定回路１１４で行われており、ホストＩ／Ｆ１０４を介してホストに読み出しているデータのアドレスにｎセクターを加算したアドレスの領域、つまり、ＨＡＤＲからＨＡＤＲ＋ｎまでの領域を決定する。
【００４５】
次にステップ３０３では、エラー認識領域の訂正フラグチェックを行う。ここでは、誤り訂正回路１１３が、処理順序判定回路１１４から通知されるエラー認識領域（ＨＡＤＲ〜ＨＡＤＲ＋ｎ）の範囲に対応する訂正レジスタ１１５内の訂正フラグ１１６をチェックする。訂正レジスタ１１５内の訂正フラグ１１６に、誤り訂正が必要との情報が格納されていなければ、ステップ３０１に戻る（図２に示すタイミングチャートのように、誤りが発生していない場合には、これらのステップ３０１、ステップ３０２、及びステップ３０３が巡回されることになる。）。訂正レジスタ１１５内の訂正フラグ１１６に、誤り訂正が必要との情報が格納されていれば、ステップ３０４へと移る。
【００４６】
ステップ３０４では、エラーセクターの最小アドレスを取得する。つまり、誤り訂正回路１１３は、ステップ３０３で誤り訂正が必要との情報が格納されていることをチェックした訂正フラグ１１６の中で、最もアドレスの小さいセクターのそのアドレスを決定する。
【００４７】
次に、ステップ３０５において誤り訂正回路１１３は、ステップ３０４で決定したアドレスに対応するシンドロームをシンドローム部１０８から読み出して誤り位置検出回路１１２へと転送し、誤りの発生しているビットのアドレスを決定する演算を実行させる。誤り位置検出回路１１２では、転送されたシンドロームを基にして誤りの発生しているビットのアドレスを決定し、誤り訂正回路１１３へ通知する。誤り訂正回路１１３では、誤り位置検出回路１１２から通知された、誤りの発生しているビットのアドレスを基にデータバッファ１０７からデータを読み出して、誤りを訂正して書き戻す。そして、次の誤り訂正を行うためにステップ３０１へと戻る。
【００４８】
これらのステップ３０１〜３０５のステップグループ３０６の期間において、不揮発性記憶装置１０１からの読み出しが完了したら、処理を完了する。
【００４９】
続いて、上記フローチャートにて、エラー認識領域（ｎセクター）を設定する理由について、図４を用いて述べる。
【００５０】
図１に示すような複数の不揮発性メモリとのメモリＩ／Ｆを備えて、複数のメモリＩ／Ｆで同時にデータを転送する不揮発性記憶装置では、不揮発性メモリからコントローラに読み出されるセクターデータがアドレスの順番ではないことが多い。例えば、図２のタイミングチャートにおいてセクター３とセクター４とでは、セクター４の方が先に読み出される。しかし、その場合でもホストに対するデータ出力では、アドレスの順番を守る必要がある。そのため、誤り訂正を行う回路が複数の不揮発性メモリとのＩ／Ｆに対して一つしかない場合（即ち、図１のような場合）には、誤り訂正の順序が制御される必要がある。
【００５１】
ここで、図４は、図３に示すフローチャートに含まれるエラー認識領域（ＨＡＤＲ＋ｎ）の加算分のｎセクターを決定するための、処理時間に関する考察の一例を示した図である。図４に示すように、誤り訂正処理のための誤り訂正処理期間が、ホストへの１セクター分のデータ転送の期間よりも長い場合（即ち、通常の場合）を採り上げる。
【００５２】
誤り訂正処理期間の開始時間をｔｈＳＴＡＲＴ、終了時間をｔｈＥＮＤとしている。ホストへのセクターデータの出力がｔｈＳＴＡＲＴ〜ｔｈＥＮＤよりも短時間であり、ｔｈＳＴＡＲＴからｔｈＥＮＤまでの期間にｍセクター、（ｍ＋１）セクター、（ｍ＋２）セクターの３セクター分のデータの転送が可能であるものとしている（ｍは自然数）。この場合に、訂正が必要な誤りが一つのセクターのみで発生し、かつそのセクターが（ｍ＋３）セクターであるとする。そうすると、ｔｈＥＮＤのタイミングで（ｍ＋３）セクターのデータをホストに出力する必要があるので、（ｍ＋３）セクターのデータを遅延なく出力するためには、ｔｈＳＴＡＲＴのタイミングまたはそれよりも前のタイミングで（ｍ＋３）セクターの誤り訂正処理を開始する必要がある。従って、ｎ（セクター）としては４以上を設定することが適切ということになる。
【００５３】
上記の場合は（ｍ＋３）セクターのみに誤りが発生した場合、つまり誤りの発生の頻度が比較的低い場合についての設定であるが、誤りの発生の頻度が高く訂正処理を頻繁に行う可能性が高い場合には、ｎの値をより大きく取る必要がある。但し、ｎを大きく取りすぎると、誤りの発生順序に訂正処理を行うことになってしまう。つまり、ホストに対して先に出力するデータよりも後に出力するデータを先に誤り訂正することが生じやすくなり、結果としてホストに対する読み出しの速度が低下する要因となる。
【００５４】
図５は、ｎ＝４とした場合の、本発明の第１の実施形態に係る不揮発性記憶装置におけるデータ読み出しのタイミングチャートの例である。また、図５は、図２のデータと略同じデータを読み出す際における、誤りが発生している場合のタイミングチャートである。
【００５５】
図５の不揮発性メモリ＃ＡＩ／Ｆ〜＃ＤＩ／Ｆにおいて、ハッチングのかかった部分が誤りの発生しているセクターを表している。時間ｔ０では、各不揮発性メモリ＃Ａ１３１〜＃Ｄ１３４からデータの読み出しが開始される。この時点には、ホストに対してまだデータの出力は行われていないが、ＨＡＤＲの値はセクター０を取る（ホストに対するデータの出力が行われていない場合には、ＨＡＤＲは次にホスト出力されるセクターの値を取る。）。ＨＡＤＲは０であるのでｎ＝４の場合には、４セクターまでのデータに対して誤りが発生しているかどうかが判定される。つまり、処理順序判定回路１１４が、セクター０〜セクター４のエラー認識領域の範囲を誤り訂正回路１１３に通知し、誤り訂正回路１１３が、セクター０からセクター４の範囲に対応する訂正レジスタ１１５内の訂正フラグ１１６をチェックする。
【００５６】
ｔ０からｔ１の期間では、不揮発性メモリ＃Ｂ１３２のセクター４のデータと、不揮発性メモリ＃Ｄ１３４のセクター１２のデータとに、誤りが発生しているが、誤りの発生はシンドロームの演算を行った後にしか認識され得ないので、それまではステップ３０１〜３０３のステップがループされる。
【００５７】
次に、時間ｔ１では、不揮発性メモリ＃Ｂ１３２のデータと訂正符号を基にシンドロームを生成したメモリＩ／Ｆモジュール＃Ｂ１６２のシンドローム生成機能部１１１は、シンドロームからセクター４内の誤りを検出し、対応するシンドローム部１０８にシンドロームの結果を、対応する訂正フラグ１１６に誤り訂正が必要という情報を、夫々格納する。メモリＩ／Ｆモジュール＃Ｄ１６４のシンドローム生成機能部１１１も同様に、セクター１２内の誤りを検出し、対応するシンドローム部１０８と訂正フラグ１１６とに書き込む。同じく時間ｔ１に誤り訂正回路１１３は、ステップ３０３でセクター４に対応する訂正フラグ１１６に誤り訂正が必要という情報を確認する。そして訂正回路１１３は、ステップ３０４でエラー訂正の必要なセクターの中で最小セクターのアドレス、ここではセクター４を取得してステップ３０５の誤り訂正を実行する。以降同様に、ホスト読み出しセクター＋４セクターの範囲をエラー認識領域として、誤りの訂正が行われる。
【００５８】
このように誤りの訂正をスケジューリングすることで、誤り訂正回路の数をメモリＩ／Ｆの数よりも少なくでき、よって回路規模を削減することができる。
【００５９】
図６は、図５の場合と同様に誤りが発生しているものの、エラー認識領域を設定しない場合の、本発明の第１の実施形態に係る不揮発性記憶装置におけるデータ読み出しのタイミングチャートの例である。この「エラー認識領域を設定しない」場合には、誤りの発生した順序に誤りの訂正を行う。より正確に言うと、誤り訂正を実行していないときに、誤りが発生しているセクターデータがチェックされれば、誤りが発生しているセクターデータの最もアドレスの若いセクターデータの誤り訂正が、その時点で行われる、という判定ルールが使用される。この判定ルールは、図３に示すフローチャートと比べると、スケジューリングが必ずしも適正ではないので、図６に示すホストへのデータ読み出しの性能は、図５の場合と比べて若干低下していることがわかる。しかしながら、この図６の場合においても、複数のメモリＩ／Ｆに対して誤り訂正回路は一つであるから、回路規模の削減は実現されている。
【００６０】
［第２の実施形態］
続いて、図面を参照しつつ本発明の第２の実施形態に係る誤り訂正機能付き記憶装置及び誤り訂正機能付きコントローラについて説明する。
【００６１】
第２の実施形態に係る誤り訂正機能付き記憶装置の物理的構成は、図１に示す第１の実施形態に係る誤り訂正機能付き記憶装置と同じである。従って、複数のメモリＩ／Ｆモジュール＃Ａ１６１〜＃Ｄ１６４の夫々におけるシンドローム生成機能部１１１からの情報を訂正レジスタ１１５に集約し、その集約された情報を誤り訂正回路１１３が参照して順番に誤り訂正を行う、という構成は第１の実施形態と同様である。
【００６２】
第２の実施形態では、誤り訂正機能に関する処理のフローチャートが、第１の実施形態のものと異なる。図７は、本発明の第２の実施形態に係る不揮発性記憶装置１０１内のコントローラ１０２の誤り訂正機能に関する処理のフローチャートである。不揮発性記憶装置１０１からデータを読み出す際には、処理順序判定回路１１４はホストＩ／Ｆ１０４から出力されるセクターのアドレスに加えて、不揮発性メモリ＃Ａ１３１〜＃Ｄ１３４のＩ／Ｆにおける転送セクターのアドレスを認識している。このことがステップ８０６に示されているが、これについてはあとで説明する。
【００６３】
まずステップ８０１では、処理順序判定回路１１４が、ホストが読み出すセクターのアドレス（ＨＡＤＲとする）を取得する。次にステップ８０２では、エラー認識領域を決定する。このことはステップ８０１と同様に、処理順序判定回路１１４で行われており、ホストＩ／Ｆ１０４を介してホストに読み出しているデータにｎセクターを加算したアドレスの領域、つまり、ＨＡＤＲからＨＡＤＲ＋ｎの領域を決定する。次にステップ８０３では、エラー認識領域の訂正フラグチェックを行う。ここでは、誤り訂正回路１１３が、処理順序判定回路１１４から通知されるエラー認識領域（ＨＡＤＲ〜ＨＡＤＲ＋ｎ）の範囲に対応する訂正レジスタ１１５内の訂正フラグ１１６をチェックする。訂正レジスタ１１５内の訂正フラグ１１６に、誤り訂正が必要との情報が格納されていなければ、ステップ８０６に移る。訂正レジスタ１１５内の訂正フラグ１１６に、誤り訂正が必要との情報が格納されていれば、ステップ８０４へと移る。
【００６４】
ステップ８０４では、エラーセクターの最小アドレスを取得する。つまり、誤り訂正回路１１３は、ステップ８０３で誤り訂正が必要との情報が格納されていることをチェックした訂正フラグ１１６の中で、最もアドレスの小さなセクターのそのアドレスを取得する。
【００６５】
次に、ステップ８０５において誤り訂正回路１１３は、ステップ８０４で決定したアドレスに対応するシンドロームをシンドローム部１０８から読み出して誤り位置検出回路１１２へと転送し、誤りの発生しているビットのアドレスを決定する演算を実行させる。誤り位置検出回路１１２では、転送されたシンドロームを基にして誤りの発生しているビットのアドレスを決定し、誤り訂正回路１１３へ通知する。誤り訂正回路１１３では、誤り位置検出回路１１２から通知された、誤りの発生しているビットのアドレスを基にデータバッファ１０７からデータを読み出して、誤りを訂正して書き戻す。そして、次の誤り訂正を行うためにステップ８０１へと戻る。
【００６６】
一方、前述のように、ステップ８０３で訂正レジスタ１１５内の訂正フラグ１１６に誤り訂正が必要との情報が格納されていない場合、ステップ８０６に移り、ここで、処理順序判定回路１１４は、エラー認識領域解除期間であるかどうかを判定する。
【００６７】
上記のエラー認識領域解除期間について、図８を用いて説明する。図８では、（一つの）不揮発性メモリからのあるセクターデータの読み出しの開始時をｔｆＳＴＡＲＴ、不揮発性メモリからのセクターデータの読み出しの終了時をｔｆＥＮＤと表している。なおここでの不揮発性メモリからのセクターデータ読み出しの認識対象は、ホストに次に読み出し出力すべきセクターに対応するデータである。ｔｆＳＴＡＲＴ〜ｔｆＥＮＤは、不揮発性メモリからの１セクター分のデータの読み出し時間である。
【００６８】
誤り訂正処理に要する時間（誤り訂正処理期間）が、ｔｆＳＴＡＲＴ〜ｔｆＥＮＤよりも短い場合を考える。ここで、不揮発性メモリからのデータの読み出し開始時ｔｆＳＴＡＲＴを始点とし、不揮発性メモリからのデータの読み出し終了時ｔｆＥＮＤから誤り訂正処理期間を減じた時点を終点とする期間を、認識領域解除期間と設定している。この認識領域解除期間において誤り訂正処理を開始するならば、不揮発性メモリからのデータ読み出しが終わる前に、誤り訂正処理を終わらせることが可能である。即ち、次にホストに出力予定のセクターのデータを不揮発性メモリから読み出す際の認識領域解除期間において誤り訂正処理を開始すれば、次にホストに出力予定のセクターのデータの出力を遅延させる要因とはならない。それ故に、この期間に予め認識領域以外のセクターのデータの誤りを訂正しておくことは意味がある。ちなみに、認識領域解除期間以降に誤り訂正が開始する場合、該誤り訂正が終了する前に不揮発性メモリからのデータの読み出しが完了することになる。つまり、もし、読み出しを行った当該セクターに誤りがあるならば、動作中の誤り訂正処理が終了するのを待って当該セクターデータの誤り訂正処理が行われることになる。このことは、ホストへの読み出し性能を低下させる要因となり得る。
【００６９】
ステップ８０６で、処理順序判定回路１１４は、エラー認識領域解除期間であるかどうかを判定する。エラー認識領域解除期間でなければ、ステップ８０１へと戻る。エラー認識解除期間であれば、先のセクターのデータの誤りを訂正し得る機会があるということであるので、処理順序判定回路１１４はエラー認識領域解除期間であることを誤り訂正回路１１３に通知する。このとき、フローチャート、特にステップ８０３から明確に分かるが、エラー認識領域（ＨＡＤＲ〜ＨＡＤＲ＋ｎ）では誤りが発生していない。よって、ステップ８０７では誤り訂正回路１１３は全領域の訂正フラグ１１６のチェックを行う。誤り訂正が必要との情報がなければステップ８０１へ戻る。誤り訂正が必要との情報があれば、ステップ８０８へと移る。ステップ８０８では、誤り訂正回路１１３は、ステップ８０７で誤り訂正が必要との情報が格納されていることをチェックした訂正フラグ１１６の中で、最もアドレスの小さなセクターのそのアドレスを取得する。その後ステップ８０５に移る。
【００７０】
これらのステップ８０１〜８０８のステップグループ８０９の期間において、不揮発性記憶装置１０１からの読み出しが完了したら、処理を完了する。
【００７１】
図７のフローチャートに示すように、エラー認識領域解除期間を設けることにより、性能低下を発生させること無く、誤りの発生したセクターのデータの誤り訂正処理を実行することができる。
【００７２】
［その他の実施形態］
本発明は、不揮発性メモリにのみ適用されるものではなく、複数のＩ／Ｆを備えて並列にデータの転送が行われる構成を備える揮発性メモリにも適用され得る。またさらに、メモリに適用が限定されるものでもなく、複数の通信経路を持ち、それら通信経路を介してデータと対応する誤り訂正符号とが送信され、誤りの訂正が為される必要があるシステムなどに適用することも可能である。
【００７３】
また、誤り訂正回路の個数も１つに限定されない。本発明の基本的思想を適用すれば、不揮発性メモリにおいて、シンドローム生成機能部の数よりも誤り訂正回路の数を少なく構成して回路規模を削減できる。
【産業上の利用可能性】
【００７４】
本発明を利用することにより、誤り訂正能力を維持したまま誤り訂正回路の回路規模を削減できから、本発明は、低コスト及び省スペースを目的とする誤り訂正機能付き記憶装置に有用である。
【符号の説明】
【００７５】
１０１・・・不揮発性記憶装置、
１０２・・・コントローラ、
１３１・・・不揮発性メモリ＃Ａ、
１３２・・・不揮発性メモリ＃Ｂ、
１３３・・・不揮発性メモリ＃Ｃ、
１３４・・・不揮発性メモリ＃Ｄ、
１０４・・・ホストＩ／Ｆ、
１０５・・・バッファメモリ、
１６１・・・メモリＩ／Ｆモジュール＃Ａ、
１６２・・・メモリＩ／Ｆモジュール＃Ｂ、
１６３・・・メモリＩ／Ｆモジュール＃Ｃ、
１６４・・・メモリＩ／Ｆモジュール＃Ｄ、
１０７・・・データバッファ、
１０８・・・シンドローム部、
１０９・・・メモリＩ／Ｆ、
１１０・・・訂正符号生成機能部、
１１１・・・シンドローム生成機能部、
１１２・・・誤り位置検出回路、
１１３・・・誤り訂正回路、
１１４・・・処理順序判定回路、
１１５・・・訂正レジスタ、
１１６・・・訂正フラグ、
９０１・・・不揮発性記憶装置、
９０２・・・コントローラ、
９０３・・・不揮発性メモリ、
９０４・・・ホストＩ／Ｆ、
９０５・・・バッファメモリ、
９０６・・・メモリＩ／Ｆモジュール、
９０７・・・データバッファ、
９０９・・・メモリＩ／Ｆ、
９１０・・・訂正符号生成機能部、
９１１・・・シンドローム生成機能部、
９１２・・・誤り位置検出回路、
９１３・・・誤り訂正回路。
【図１】
2010013437.tif 000003
【図２】
2010013437.tif 000004
【図３】
2010013437.tif 000005
【図４】
2010013437.tif 000006
【図５】
2010013437.tif 000007
【図６】
2010013437.tif 000008
【図７】
2010013437.tif 000009
【図８】
2010013437.tif 000010
【図９】
2010013437.tif 000011
【図１０】
2010013437.tif 000012
【図１１】
2010013437.tif 000013
【手続補正書】
【提出日】平成22年2月25日(2010.2.25)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリ等の誤り訂正が必要なメモリに対する誤り訂正機能を備えたコントローラ、そのようなメモリに対する誤り訂正機能を備えた記憶装置、及び、当該記憶装置を用いる誤り訂正機能を備えたシステムに関する。
【背景技術】
【０００２】
近年、書き換え可能な半導体デバイスとしての不揮発性メモリであるＮＡＮＤタイプのフラッシュメモリを搭載した不揮発性記憶装置としてのメモリーカードは、デジタルカメラや携帯電話の記憶媒体としてその市場規模を拡大している。そして更に、廉価な記憶デバイスとして、メモリーカード以外、例えばＨＤＤ置き換えのＳＳＤや、ホスト機器に直接搭載するメモリ等にも、適用が拡がっている。
【０００３】
同時に、半導体デバイスとしてプロセスの微細化に伴い記憶容量の増加が進んでいる。記憶容量の増加は、記憶媒体に格納できるデータの容量の増加に繋がる。データの容量の増加は、そのデータへのアクセスの利便性のために読み出し・書き込み時間の高速化の要求に繋がる。
【０００４】
一方で、プロセスの微細化が及ぼす影響の別の面として、フラッシュメモリの信頼性の低下が挙げられる。フラッシュメモリの微細化に伴い、情報を記憶するための電子の数が少なくなる。そのことはリテンション、リードディスターブ、プログラムディスターブ等の種々の劣化要因を引き起こす。そこで、誤り訂正機能を搭載して、フラッシュメモリを使用する記憶装置の信頼性を向上させる手法が一般的に用いられている。
【０００５】
図９は、従来の記憶装置である不揮発性記憶装置の一例のブロック図である。図９を用いて誤り訂正機能の適用状況について説明する。図９に示す不揮発性記憶装置９０１は、誤り訂正機能を備えたコントローラ９０２と不揮発性メモリ９０３からなる。不揮発性記憶装置９０１は、アドレスを指定した上での外部からのデータの書込みや読み出しが可能であり、書き込まれたデータを不揮発で記憶する。不揮発性メモリ９０３は、不揮発性記憶装置９０１に書き込まれるデータを不揮発性記憶装置９０１内にて記憶するメモリである。
【０００６】
コントローラ９０２は、ホストＩ／Ｆ（インターフェース）９０４、バッファメモリ９０５、及び、メモリＩ／Ｆ（インターフェース）モジュール９０６からなる。バッファメモリ９０５は、複数のデータバッファ９０７からなる。個々のデータバッファ９０７は、それぞれ１セクター（５１２バイト）分のデータを格納できる。
【０００７】
メモリＩ／Ｆモジュール９０６は、メモリＩ／Ｆ（インターフェース）９０９、訂正符号生成機能部９１０、シンドローム生成機能部９１１、誤り位置検出回路９１２、及び、誤り訂正回路９１３からなる。メモリＩ／Ｆモジュール９０６は、対応する不揮発性メモリ９０３とバッファメモリ９０５との間のデータの転送を行う。訂正符号生成機能部９１０は、不揮発性メモリ９０３にデータを書き込む際に、書き込みを行うデータに対応する誤り訂正符号を生成する。訂正符号生成機能部９１０で生成された誤り訂正符号は、メモリＩ／Ｆ９０９を介して対応する不揮発性メモリ９０３に書き込まれる。
【０００８】
シンドローム生成機能部９１１は、不揮発性メモリ９０３からデータが読み出される際に、データとその対応する誤り訂正符号とを読み出してシンドロームの演算を行う。シンドローム生成機能部９１１で行った演算の結果は、誤り位置検出回路９１２へ送られる。誤り位置検出回路９１２は、シンドローム生成機能部９１１から送られるシンドロームを基に、誤りの発生しているデータのアドレス位置を演算によって決定する。誤り訂正回路９１３は、誤り位置検出回路９１２で演算によって決定したアドレス位置のデータをデータバッファ９０７から読み出し、誤りを訂正してデータバッファ９０７に書き戻す。
【０００９】
図１０は、従来の記憶装置である不揮発性記憶装置の別例のブロック図である。図１０に示す不揮発性記憶装置は、複数のＩ／Ｆに接続される複数の不揮発性メモリを備える。図１０に示す不揮発性記憶装置では、複数のＩ／Ｆで複数の不揮発性メモリを制御する、即ち複数のＩ／Ｆが同時に動作するので、メモリＩ／Ｆモジュールも複数備わり訂正符号の生成やシンドロームの演算を並行して行う。
【００１０】
前述のように、誤り訂正機能部を搭載することによりフラッシュメモリの信頼性を向上させることは、現在一般的に利用されている技術である。しかし、フラッシュメモリ自身の信頼性の低下は、より高性能、即ち誤り訂正能力の大きな誤り訂正回路を必要としている。
【００１１】
図１１は、従来の不揮発性記憶装置における誤り訂正回路の回路規模の例を示す表である。図１１に示す数値は、５２８バイト当たりで４バイト訂正可能なリードソロモン（Ｒｅａｄ−Ｓｏｌｏｍｏｎ）符号を実装した回路における訂正符号生成機能部、シンドローム生成機能部、及び、誤り訂正機能部の比率である。図１１の表から明らかなように、誤り訂正機能部の回路規模が他に比べて大きい。
【００１２】
訂正符号生成機能部やシンドローム生成機能部の回路規模は、ほぼＥＣＣ符号のビット数に比例して増加するが、誤り訂正機能部は演算を行う部位であるため、誤り訂正能力を向上させようとすると回路規模の増加の割合が急激に大きくなる。
【００１３】
また、訂正符号生成やシンドローム生成は、不揮発性メモリとのデータ転送時に同時に処理が行われる。しかしながら、誤り訂正は、転送後に独立して行われる処理であるので、その演算処理速度がそのまま記憶装置の全体処理速度に影響を与えてしまう。このような観点からも誤り訂正の演算速度の高速化は求められている。しかしながら、演算速度の高速化は、回路規模を更に増大させる要因となってしまう。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開平１０−１４５２３８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１５】
上述のように、フラッシュメモリの信頼性を維持向上するために必要とされる誤り訂正回路であるが、誤り訂正能力を大きくすることで回路規模が増大してしまうことが課題となっている。本発明は、誤り訂正回路が高い誤り訂正能力を保持しつつ、その回路規模を削減することを目的とする。
【課題を解決するための手段】
【００１６】
上記の目的を達成するために、本発明の誤り訂正機能付きコントローラは、
複数のメモリに対するデータの書き込み、読み出しを制御する、誤り訂正機能付きコントローラであって、
バッファメモリと、
誤り訂正回路と、
前記複数のメモリのそれぞれに対応して設けられ、前記メモリとデータのやりとりを行う複数のインターフェースモジュールとを備え、
前記複数のインターフェースモジュールは、前記メモリからセクターデータとそのセクターデータに対応する誤り訂正符号を受信し、前記受信したセクターデータと誤り訂正符号に基づきシンドロームを生成するシンドローム生成機能部を備え、
前記バッファメモリは複数の前記セクターデータを一時的に格納し、
前記誤り訂正回路は、複数の前記シンドローム生成機能部によって生成される夫々のシンドロームに対応して、誤りの発生しているアドレスを決定すると共に、前記バッファメモリに格納された前記セクターデータにおける前記アドレスに対応するビットを訂正する。
【００１７】
上記の目的を達成するために、本発明の本発明の誤り訂正機能付き記憶装置は、
誤り訂正機能付きコントローラと複数のメモリからなる誤り訂正機能付き記憶装置であり、前記誤り訂正機能付きコントローラは、
複数のメモリに対するデータの書き込み、読み出しを制御する、誤り訂正機能付きコントローラであって、
バッファメモリと、
誤り訂正回路と、
前記複数のメモリのそれぞれに対応して設けられ、前記メモリとデータのやりとりを行う複数のインターフェースモジュールとを備え、
前記複数のインターフェースモジュールは、前記メモリからセクターデータとそのセクターデータに対応する誤り訂正符号を受信し、前記受信したセクターデータと誤り訂正符号に基づきシンドロームを生成するシンドローム生成機能部を備え、
前記バッファメモリは複数の前記セクターデータを一時的に格納し、
前記誤り訂正回路は、複数の前記シンドローム生成機能部によって生成される夫々のシンドロームに対応して、誤りの発生しているアドレスを決定すると共に、前記バッファメモリに格納された前記セクターデータにおける前記アドレスに対応するビットを訂正する。
【００１８】
上記の目的を達成するために、本発明の本発明の誤り訂正機能付きシステムは、
誤り訂正機能付き記憶装置とホスト機器からなる誤り訂正機能付きシステムであり、
前記誤り訂正機能付き記憶装置は、
誤り訂正機能付きコントローラと複数のメモリからなる誤り訂正機能付き記憶装置であり、
前記誤り訂正機能付きコントローラは、
複数のメモリに対するデータの書き込み、読み出しを制御する、誤り訂正機能付きコントローラであって、
バッファメモリと、
誤り訂正回路と、
前記複数のメモリのそれぞれに対応して設けられ、前記メモリとデータのやりとりを行う複数のインターフェースモジュールとを備え、
前記複数のインターフェースモジュールは、前記メモリからセクターデータとそのセクターデータに対応する誤り訂正符号を受信し、前記受信したセクターデータと誤り訂正符号に基づきシンドロームを生成するシンドローム生成機能部を備え、
前記バッファメモリは複数の前記セクターデータを一時的に格納し、
前記誤り訂正回路は、複数の前記シンドローム生成機能部によって生成される夫々のシンドロームに対応して、誤りの発生しているアドレスを決定すると共に、前記バッファメモリに格納された前記セクターデータにおける前記アドレスに対応するビットを訂正する。
【発明の効果】
【００１９】
本発明によれば、不揮発性記憶装置において誤り訂正回路の機能の一部を複数のＩ／Ｆ間で共有することになるが、依然として誤り訂正回路の訂正能力を落とさず、更に回路規模を削減し延いてはコントローラ及び記憶装置の低コスト化を実現することができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の第１の実施形態に係る誤り訂正機能付き不揮発性記憶装置のブロック図である。
【図２】本発明の第１の実施形態に係る不揮発性記憶装置におけるデータ読み出しのタイミングチャートの一つの例である。
【図３】本発明の第１の実施形態に係る不揮発性記憶装置内のコントローラの誤り訂正機能に関する処理のフローチャートである。
【図４】本発明の第１の実施形態に係る不揮発性記憶装置の誤り訂正処理時間とホストへのデータ転送時間の関係を表す図である。
【図５】本発明の第１の実施形態に係る不揮発性記憶装置におけるデータ読み出しのタイミングチャートの別の例であり、スケジューリングを行うものの例である。更に、不揮発性メモリに格納されるデータに誤りが発生している場合についてのタイミングチャートの例である。
【図６】本発明の第１の実施形態に係る不揮発性記憶装置におけるデータ読み出しのタイミングチャートの別の例であり、スケジューリングを行わないものの例である。更に、不揮発性メモリに格納されるデータに誤りが発生している場合についてのタイミングチャートの例である。
【図７】本発明の第２の実施形態に係る不揮発性記憶装置内のコントローラの誤り訂正機能に関する処理のフローチャートである。
【図８】本発明の第２の実施形態に係る不揮発性記憶装置の誤り訂正処理時間と不揮発性メモリへのデータ転送時間の関係を表す図である。
【図９】従来の記憶装置である不揮発性記憶装置の一例のブロック図である。
【図１０】従来の記憶装置である不揮発性記憶装置の別例のブロック図である。
【図１１】従来の不揮発性記憶装置における誤り訂正回路の回路規模の例を示す表である。
【発明を実施するための形態】
【００２１】
［第１の実施形態］
以下、図面を参照して、本発明の好適な実施の形態を説明する。
【００２２】
図１は、本発明の第１の実施形態に係る誤り訂正機能付き不揮発性記憶装置１０１のブロック図である。該ブロック図にはデータの概略の流れも示されている。
【００２３】
図１に示す不揮発性記憶装置１０１は、概略、誤り訂正機能を備えたコントローラ１０２、不揮発性メモリ＃Ａ１３１、不揮発性メモリ＃Ｂ１３２、不揮発性メモリ＃Ｃ１３３、及び、不揮発性メモリ＃Ｄ１３４からなる。不揮発性記憶装置１０１は、アドレスを指定した上での外部からのデータの書込みや読み出しが可能であり、書き込んだデータは不揮発で記憶される。不揮発性メモリ＃Ａ１３１〜＃Ｄ１３４は、不揮発性記憶装置１０１に書き込まれるデータを記憶するメモリである。不揮発性記憶装置１０１は、ホスト５０によってデータの書き込み、読み出しがなされる。
【００２４】
コントローラ１０２は、ホスト５０との間でコマンド及びデータのやりとりを行うホストＩ／Ｆ１０４を備える。さらに、コントローラ１０２は、バッファメモリ１０５、メモリＩ／Ｆモジュール＃Ａ１６１、メモリＩ／Ｆモジュール＃Ｂ１６２、メモリＩ／Ｆモジュール＃Ｃ１６３、メモリＩ／Ｆモジュール＃Ｄ１６４、誤り位置検出回路１１２、誤り訂正回路１１３、処理順序判定回路１１４、及び、訂正レジスタ１１５からなる。ここで、不揮発性メモリ＃Ａ１３１〜＃Ｄ１３４を複数個備える理由は、複数個の不揮発性メモリの並列動作により不揮発性記憶装置１０１へのデータの書き込みおよび不揮発性記憶装置１０１からのデータの読み出しの性能を向上させることにある。各不揮発性メモリに対しては一般的には巡回的に順番にデータが格納される。
【００２５】
バッファメモリ１０５は、複数のデータバッファ１０７と、夫々のデータバッファ１０７に対応するシンドローム部１０８とからなる。個々のデータバッファ１０７は夫々、１セクター（５１２バイト）分のデータを格納できる。個々のシンドローム部１０８は夫々、対応するデータバッファ１０７の１セクター分のデータ及びそのデータに対応する誤り訂正符号が（後述のシンドローム生成機能部１１１により）不揮発性メモリ＃Ａ１３１〜＃Ｄ１３４から読み出されてシンドローム演算を為された結果を、格納する。
【００２６】
メモリＩ／Ｆモジュール＃Ａ１６１〜＃Ｄ１６４は、夫々、メモリＩ／Ｆ１０９、訂正符号生成機能部１１０、及びシンドローム生成機能部１１１からなる。メモリＩ／Ｆ１０９は、夫々対応する不揮発性メモリ＃Ａ１３１〜＃Ｄ１３４とバッファメモリ１０５との間のデータの転送を行う。訂正符号生成機能部１１０は、不揮発性メモリ＃Ａ１３１〜＃Ｄ１３４にデータを書き込む際に、書き込みを行うデータに対応する誤り訂正符号を生成する。訂正符号生成機能部１１０で生成された誤り訂正符号は、メモリＩ／Ｆ１０９を介して対応する不揮発性メモリ＃Ａ１３１〜＃Ｄ１３４に書き込まれる。
【００２７】
シンドローム生成機能部１１１は、不揮発性メモリ＃Ａ１３１〜＃Ｄ１３４からデータを読み出す際に、データとその対応する誤り訂正符号とを読み出してシンドロームの演算を行う。シンドローム生成機能部１１１で演算を行った結果は、バッファメモリ１０５内のシンドローム部１０８に格納される。
【００２８】
訂正レジスタ１１５は複数の訂正フラグ部１１６を含み、該訂正フラグ部１１６には誤り訂正が必要か否かの情報が格納される。個々の訂正フラグ部１１６は夫々、バッファメモリ１０５のデータバッファ１０７及びシンドローム部１０８と対応している。つまり、データバッファ１０７とシンドローム部１０８と訂正フラグ１１６とで、組みを構成している。従って、不揮発性メモリ＃Ａ１３１〜＃Ｄ１３４から１セクターのデータが読み出されると、セクター毎のデータについて、データバッファ１０７に１セクターのデータが、シンドローム部１０８に１セクターのデータに対応するシンドロームが、及び、訂正フラグ１１６に該セクターのデータに対する誤り訂正が必要か否かの情報が、格納される。
【００２９】
誤り位置検出回路１１２は、誤り訂正回路１１３を介してバッファメモリ１０５のシンドローム部１０８からシンドロームを読み出して、誤りの発生しているビットのアドレスの演算を行う。誤り訂正回路１１３は、処理順序判定回路１１４の判定結果に基づき訂正レジスタ１１５の訂正フラグ１１６を確認して、訂正が必要なセクターに対してはバッファメモリ１０５のシンドローム部１０８からシンドロームを読み出して誤り位置検出回路１１２に転送し、バッファメモリ１０５のデータバッファ１０７の内の、誤り位置検出回路１１２で演算を行った結果である誤りの発生しているビットのアドレスにおける、データを読み出して訂正してデータバッファ１０７に書き戻す。このように、本発明の第１の実施形態に係る半導体記憶装置では、複数のメモリＩ／Ｆモジュール＃Ａ１６１〜＃Ｄ１６４のシンドローム生成機能部１１１からの情報を訂正レジスタ１１５に集約し、その集約された情報を誤り訂正回路１１３が参照して、順番に誤り訂正を行う構成を採っている。
【００３０】
図２は、本発明の第１の実施形態に係る不揮発性記憶装置におけるデータ読み出しのタイミングチャートの一つの例である。ただし、図２は不揮発性メモリに格納されるデータに誤りが発生していない場合のタイミングチャートの例である。
【００３１】
図２において、まず、「不揮発性メモリ＃ＡＩ／Ｆ」は不揮発性メモリ＃Ａ１３１からデータを読み出すＩ／Ｆの信号、「不揮発性メモリ＃ＢＩ／Ｆ」は不揮発性メモリ＃Ｂ１３２からデータを読み出すＩ／Ｆの信号、「不揮発性メモリ＃ＣＩ／Ｆ」は不揮発性メモリ＃Ａ１３３からデータを読み出すＩ／Ｆの信号、「不揮発性メモリ＃ＤＩ／Ｆ」は不揮発性メモリ＃Ａ１３４からデータを読み出すＩ／Ｆの信号である。また、「ホストＩ／Ｆ」はホストＩ／Ｆ１０４から外部のホスト５０にデータを読み出すＩ／Ｆの信号である。
【００３２】
更に、「バッファメモリの状態」は、バッファメモリ１０５の夫々のデータバッファ１０７に不揮発性メモリ＃Ａ１３１〜＃Ｄ１３４から読み出されるデータが格納されてから、該データがホストＩ／Ｆ１０４を通じて不揮発性記憶装置１０１外部に出力されるまでを、示している。なお、第１の実施形態に係るバッファメモリ１０５では、１６個のデータバッファ（データバッファ０〜データバッファ１５）が設けられており、不揮発性記憶装置１０１外部からのアドレスを１６で除算した剰余に対応する番号のデータバッファに夫々データが格納されるものとしている。つまり、アドレスが０のデータはデータバッファ０に、アドレスが１のデータはデータバッファ１に、アドレスが１６のデータはデータバッファ０（１６÷１６＝１・・・０）に、及び、アドレスが１００のデータはデータバッファ４（１００÷１６＝６・・・４）に、格納される。
【００３３】
なお、図２のタイミングチャートの最上部は時間の流れを示している（図５、図６の他のタイミングチャートも同様である。）。
【００３４】
図１及び図２を用いて、不揮発性メモリに格納されるデータに誤りが発生していない場合の、本発明の第１の実施形態に係る誤り訂正機能付き記憶装置の（読み出し時の）動作について、説明する。
【００３５】
最初に時間ｔ０では、不揮発性記憶装置１０１外部のホストからアドレスを指定したデータの読み出しコマンドが発行されて、アドレスに対応するデータおよび該データ以降のアドレスのデータが不揮発性メモリ＃Ａ１３１〜＃Ｄ１３４から読み出され転送が開始される。ここでは、一般的な不揮発性メモリたるＮＡＮＤタイプのフラッシュメモリのデータの書き込みサイズである２Ｋバイトを基本とした動作を前提として説明を進めるので、不揮発性メモリＡ１３１〜＃Ｄ１３４には、４セクター（＝２Ｋバイト÷５１２バイト）毎に巡回的に順番にデータが割り振られて格納されているものとする。
【００３６】
従って、不揮発性メモリ＃Ａ１３１からセクター０のデータが、不揮発性メモリ＃Ｂ１３２からセクター４のデータが、不揮発性メモリ＃Ｃ１３３からセクター８のデータが、不揮発性メモリ＃Ｄ１３４からセクター１２のデータが、読み出されて、夫々のメモリＩ／Ｆ１０９を経由して、バッファメモリ１０５の対応するデータバッファ１０７（即ち、データバッファ０、データバッファ４、データバッファ８、及び、データバッファ１２）に夫々格納される。この際に不揮発性メモリ＃Ａ１３１〜＃Ｄ１３４から読み出されるデータと誤り訂正符号とを基に、各シンドローム生成機能部１１１でシンドロームの演算を行い、演算結果を対応するシンドローム部１０８と訂正フラグ部１１６に格納する。
【００３７】
次に、時間ｔ１では、不揮発性メモリ＃Ａ１３１からセクター１のデータが、不揮発性メモリ＃Ｂ１３２からセクター５のデータが、不揮発性メモリ＃Ｃ１３３からセクター９のデータが、不揮発性メモリ＃Ｄ１３４からセクター１３のデータが、読み出されて、夫々のメモリＩ／Ｆ１０９を経由して、バッファメモリ１０５の対応するデータバッファ１０７（即ち、データバッファ１、データバッファ５、データバッファ９、及び、データバッファ１３）に夫々格納される。上記時間ｔ０の場合と同様に、この際に不揮発性メモリ＃Ａ１３１〜＃Ｄ１３４から読み出されるデータと誤り訂正符号とを基に、各シンドローム生成機能部１１１でシンドロームの演算を行い、演算結果を対応するシンドローム部１０８と訂正フラグ部１１６に格納する。また、セクター０のデータがデータバッファ０に格納されているので、同じ時間ｔ１において該データがホストＩ／Ｆ１０４を経由して不揮発性記憶装置外部に出力される。
【００３８】
次に、時間ｔ２では、不揮発性メモリ＃Ａ１３１からセクター２のデータが、不揮発性メモリ＃Ｂ１３２からセクター６のデータが、不揮発性メモリ＃Ｃ１３３からセクター１０のデータが、不揮発性メモリ＃Ｄ１３４からセクター１４のデータが、読み出されて、夫々のメモリＩ／Ｆ１０９を経由して、バッファメモリ１０５の対応するデータバッファ１０７（即ち、データバッファ２、データバッファ６、データバッファ１０、及び、データバッファ１４）に夫々格納される。上記時間ｔ０、ｔ１の場合と同様に、この際に不揮発性メモリ＃Ａ１３１〜＃Ｄ１３４から読み出されるデータと誤り訂正符号とを基に、各シンドローム生成機能部１１１でシンドロームの演算を行い、演算結果を対応するシンドローム部１０８と訂正フラグ部１１６に格納する。また、セクター１のデータがデータバッファ１に格納されているので、同じ時間ｔ２において該データがホストＩ／Ｆ１０４を経由して不揮発性記憶装置外部に出力される。
【００３９】
以降同様に、夫々の不揮発性メモリ＃Ａ１３１〜＃Ｄ１３４からデータが夫々のメモリＩ／Ｆ１０９を介してバッファメモリ１０５に読み出されて、ホストＩ／Ｆ１０４を介して不揮発性記憶装置１０１外部に出力される。
【００４０】
時間ｔ４では、セクター３〜１５までのデータがデータバッファ３〜１５に格納されるので、ホストＩ／Ｆ１０４を介して順番に連続して不揮発性記憶装置１０１外部にそれらデータが出力される。また同時に時間ｔ４において、セクター１６を格納すべきデータバッファ０に格納されていたセクター０のデータは既に外部に出力済みであるので、不揮発性メモリ＃Ａ１３１からは続けてセクター１６のデータが読み出され得る。しかし、セクター２０、２４、２８を格納すべきデータバッファ４、８、１２には、未だセクター４、８、１２のデータが不揮発性記憶装置１０１外部に出力されずにいる。そのためこの時に、不揮発性メモリ＃Ｂ１３２〜＃Ｄ１３４からデータをバッファメモリ１０５に読み出すことはできない。ただし、対応するデータバッファに格納されたデータが不揮発性記憶装置１０１外部に出力された後に、順次読み出される。
【００４１】
（前述のように）図２では、不揮発性メモリに格納されるデータに誤りが発生していない場合のタイミングチャートを示しているが、この不揮発性記憶装置１０１外部へのデータの読み出しにおいて、処理順序判定回路１１４は、ホストＩ／Ｆ１０４で不揮発性記憶装置１０１外部に転送されているデータのアドレス、及び、メモリＩ／Ｆ１０９でバッファメモリ１０８に読み出されているデータのアドレスを常に認識して、誤り訂正回路１１３に対して誤り訂正を適用するアドレスの範囲を通知している。誤り訂正回路１１３は、処理順序判定回路１１４から通知される誤り訂正可能なアドレス範囲に従って、訂正レジスタ１１５の中の訂正フラグ１１６を確認して、誤り訂正が必要とのデータが格納されていれば、対応するセクターの誤りを訂正する（但し、上記では、誤りが発生していない場合を記載している。）。
【００４２】
図５及び図６は、本発明の第１の実施形態に係る不揮発性記憶装置におけるデータ読み出しのタイミングチャートの別の例であり、不揮発性メモリに格納されるデータに誤りが発生している場合のタイミングチャートの例である。これらについての説明の前に、まず、図３に示す不揮発性記憶装置１０１内のコントローラ１０２の誤り訂正機能に関する処理のフローチャートを用いて本発明の第１の実施形態に係る不揮発性記憶装置における誤り訂正の流れを説明する。
【００４３】
不揮発性記憶装置１０１からデータを読み出す際には、前に記したように処理順序判定回路１１４では、ホストＩ／Ｆ１０４から出力されるセクターのアドレスを認識している。このことがステップ３０１に示されている。ステップ３０１では、ホスト５０が読み出すセクターのアドレス（ＨＡＤＲとする）を取得する。
【００４４】
次にステップ３０２では、エラー認識領域を決定する。このことはステップ３０１と同様に、処理順序判定回路１１４で行われており、ホストＩ／Ｆ１０４を介してホストに読み出しているデータのアドレスにｎセクターを加算したアドレスの領域、つまり、ＨＡＤＲからＨＡＤＲ＋ｎまでの領域を決定する。
【００４５】
次にステップ３０３では、エラー認識領域の訂正フラグチェックを行う。ここでは、誤り訂正回路１１３が、処理順序判定回路１１４から通知されるエラー認識領域（ＨＡＤＲ〜ＨＡＤＲ＋ｎ）の範囲に対応する訂正レジスタ１１５内の訂正フラグ１１６をチェックする。訂正レジスタ１１５内の訂正フラグ１１６に、誤り訂正が必要との情報が格納されていなければ、ステップ３０１に戻る（図２に示すタイミングチャートのように、誤りが発生していない場合には、これらのステップ３０１、ステップ３０２、及びステップ３０３が巡回されることになる。）。訂正レジスタ１１５内の訂正フラグ１１６に、誤り訂正が必要との情報が格納されていれば、ステップ３０４へと移る。
【００４６】
ステップ３０４では、エラーセクターの最小アドレスを取得する。つまり、誤り訂正回路１１３は、ステップ３０３で誤り訂正が必要との情報が格納されていることをチェックした訂正フラグ１１６の中で、最もアドレスの小さいセクターのそのアドレスを決定する。
【００４７】
次に、ステップ３０５において誤り訂正回路１１３は、ステップ３０４で決定したアドレスに対応するシンドロームをシンドローム部１０８から読み出して誤り位置検出回路１１２へと転送し、誤りの発生しているビットのアドレスを決定する演算を実行させる。誤り位置検出回路１１２では、転送されたシンドロームを基にして誤りの発生しているビットのアドレスを決定し、誤り訂正回路１１３へ通知する。誤り訂正回路１１３では、誤り位置検出回路１１２から通知された、誤りの発生しているビットのアドレスを基にデータバッファ１０７からデータを読み出して、誤りを訂正して書き戻す。そして、次の誤り訂正を行うためにステップ３０１へと戻る。
【００４８】
これらのステップ３０１〜３０５のステップグループ３０６の期間において、不揮発性記憶装置１０１からの読み出しが完了したら、処理を完了する。
【００４９】
続いて、上記フローチャートにて、エラー認識領域（ｎセクター）を設定する理由について、図４を用いて述べる。
【００５０】
図１に示すような複数の不揮発性メモリとのメモリＩ／Ｆを備えて、複数のメモリＩ／Ｆで同時にデータを転送する不揮発性記憶装置では、不揮発性メモリからコントローラに読み出されるセクターデータがアドレスの順番ではないことが多い。例えば、図２のタイミングチャートにおいてセクター３とセクター４とでは、セクター４の方が先に読み出される。しかし、その場合でもホストに対するデータ出力では、アドレスの順番を守る必要がある。そのため、誤り訂正を行う回路が複数の不揮発性メモリとのＩ／Ｆに対して一つしかない場合（即ち、図１のような場合）には、誤り訂正の順序が制御される必要がある。
【００５１】
ここで、図４は、図３に示すフローチャートに含まれるエラー認識領域（ＨＡＤＲ＋ｎ）の加算分のｎセクターを決定するための、処理時間に関する考察の一例を示した図である。図４に示すように、誤り訂正処理のための誤り訂正処理期間が、ホストへの１セクター分のデータ転送の期間よりも長い場合（即ち、通常の場合）を採り上げる。
【００５２】
誤り訂正処理期間の開始時間をｔｈＳＴＡＲＴ、終了時間をｔｈＥＮＤとしている。ホストへのセクターデータの出力がｔｈＳＴＡＲＴ〜ｔｈＥＮＤよりも短時間であり、ｔｈＳＴＡＲＴからｔｈＥＮＤまでの期間にｍセクター、（ｍ＋１）セクター、（ｍ＋２）セクターの３セクター分のデータの転送が可能であるものとしている（ｍは自然数）。この場合に、訂正が必要な誤りが一つのセクターのみで発生し、かつそのセクターが（ｍ＋３）セクターであるとする。そうすると、ｔｈＥＮＤのタイミングで（ｍ＋３）セクターのデータをホストに出力する必要があるので、（ｍ＋３）セクターのデータを遅延なく出力するためには、ｔｈＳＴＡＲＴのタイミングまたはそれよりも前のタイミングで（ｍ＋３）セクターの誤り訂正処理を開始する必要がある。従って、ｎ（セクター）としては４以上を設定することが適切ということになる。
【００５３】
上記の場合は（ｍ＋３）セクターのみに誤りが発生した場合、つまり誤りの発生の頻度が比較的低い場合についての設定であるが、誤りの発生の頻度が高く訂正処理を頻繁に行う可能性が高い場合には、ｎの値をより大きく取る必要がある。但し、ｎを大きく取りすぎると、誤りの発生順序に訂正処理を行うことになってしまう。つまり、ホストに対して先に出力するデータよりも後に出力するデータを先に誤り訂正することが生じやすくなり、結果としてホストに対する読み出しの速度が低下する要因となる。
【００５４】
図５は、ｎ＝４とした場合の、本発明の第１の実施形態に係る不揮発性記憶装置におけるデータ読み出しのタイミングチャートの例である。また、図５は、図２のデータと略同じデータを読み出す際における、誤りが発生している場合のタイミングチャートである。
【００５５】
図５の不揮発性メモリ＃ＡＩ／Ｆ〜＃ＤＩ／Ｆにおいて、ハッチングのかかった部分が誤りの発生しているセクターを表している。時間ｔ０では、各不揮発性メモリ＃Ａ１３１〜＃Ｄ１３４からデータの読み出しが開始される。この時点には、ホストに対してまだデータの出力は行われていないが、ＨＡＤＲの値はセクター０を取る（ホストに対するデータの出力が行われていない場合には、ＨＡＤＲは次にホスト出力されるセクターの値を取る。）。ＨＡＤＲは０であるのでｎ＝４の場合には、４セクターまでのデータに対して誤りが発生しているかどうかが判定される。つまり、処理順序判定回路１１４が、セクター０〜セクター４のエラー認識領域の範囲を誤り訂正回路１１３に通知し、誤り訂正回路１１３が、セクター０からセクター４の範囲に対応する訂正レジスタ１１５内の訂正フラグ１１６をチェックする。
【００５６】
ｔ０からｔ１の期間では、不揮発性メモリ＃Ｂ１３２のセクター４のデータと、不揮発性メモリ＃Ｄ１３４のセクター１２のデータとに、誤りが発生しているが、誤りの発生はシンドロームの演算を行った後にしか認識され得ないので、それまではステップ３０１〜３０３のステップがループされる。
【００５７】
次に、時間ｔ１では、不揮発性メモリ＃Ｂ１３２のデータと訂正符号を基にシンドロームを生成したメモリＩ／Ｆモジュール＃Ｂ１６２のシンドローム生成機能部１１１は、シンドロームからセクター４内の誤りを検出し、対応するシンドローム部１０８にシンドロームの結果を、対応する訂正フラグ１１６に誤り訂正が必要という情報を、夫々格納する。メモリＩ／Ｆモジュール＃Ｄ１６４のシンドローム生成機能部１１１も同様に、セクター１２内の誤りを検出し、対応するシンドローム部１０８と訂正フラグ１１６とに書き込む。同じく時間ｔ１に誤り訂正回路１１３は、ステップ３０３でセクター４に対応する訂正フラグ１１６に誤り訂正が必要という情報を確認する。そして訂正回路１１３は、ステップ３０４でエラー訂正の必要なセクターの中で最小セクターのアドレス、ここではセクター４を取得してステップ３０５の誤り訂正を実行する。以降同様に、ホスト読み出しセクター＋４セクターの範囲をエラー認識領域として、誤りの訂正が行われる。
【００５８】
このように誤りの訂正をスケジューリングすることで、誤り訂正回路の数をメモリＩ／Ｆの数よりも少なくでき、よって回路規模を削減することができる。
【００５９】
図６は、図５の場合と同様に誤りが発生しているものの、エラー認識領域を設定しない場合の、本発明の第１の実施形態に係る不揮発性記憶装置におけるデータ読み出しのタイミングチャートの例である。この「エラー認識領域を設定しない」場合には、誤りの発生した順序に誤りの訂正を行う。より正確に言うと、誤り訂正を実行していないときに、誤りが発生しているセクターデータがチェックされれば、誤りが発生しているセクターデータの最もアドレスの若いセクターデータの誤り訂正が、その時点で行われる、という判定ルールが使用される。この判定ルールは、図３に示すフローチャートと比べると、スケジューリングが必ずしも適正ではないので、図６に示すホストへのデータ読み出しの性能は、図５の場合と比べて若干低下していることがわかる。しかしながら、この図６の場合においても、複数のメモリＩ／Ｆに対して誤り訂正回路は一つであるから、回路規模の削減は実現されている。
【００６０】
［第２の実施形態］
続いて、図面を参照しつつ本発明の第２の実施形態に係る誤り訂正機能付き記憶装置及び誤り訂正機能付きコントローラについて説明する。
【００６１】
第２の実施形態に係る誤り訂正機能付き記憶装置の物理的構成は、図１に示す第１の実施形態に係る誤り訂正機能付き記憶装置と同じである。従って、複数のメモリＩ／Ｆモジュール＃Ａ１６１〜＃Ｄ１６４の夫々におけるシンドローム生成機能部１１１からの情報を訂正レジスタ１１５に集約し、その集約された情報を誤り訂正回路１１３が参照して順番に誤り訂正を行う、という構成は第１の実施形態と同様である。
【００６２】
第２の実施形態では、誤り訂正機能に関する処理のフローチャートが、第１の実施形態のものと異なる。図７は、本発明の第２の実施形態に係る不揮発性記憶装置１０１内のコントローラ１０２の誤り訂正機能に関する処理のフローチャートである。不揮発性記憶装置１０１からデータを読み出す際には、処理順序判定回路１１４はホストＩ／Ｆ１０４から出力されるセクターのアドレスに加えて、不揮発性メモリ＃Ａ１３１〜＃Ｄ１３４のＩ／Ｆにおける転送セクターのアドレスを認識している。このことがステップ８０６に示されているが、これについてはあとで説明する。
【００６３】
まずステップ８０１では、処理順序判定回路１１４が、ホストが読み出すセクターのアドレス（ＨＡＤＲとする）を取得する。次にステップ８０２では、エラー認識領域を決定する。このことはステップ８０１と同様に、処理順序判定回路１１４で行われており、ホストＩ／Ｆ１０４を介してホストに読み出しているデータにｎセクターを加算したアドレスの領域、つまり、ＨＡＤＲからＨＡＤＲ＋ｎの領域を決定する。次にステップ８０３では、エラー認識領域の訂正フラグチェックを行う。ここでは、誤り訂正回路１１３が、処理順序判定回路１１４から通知されるエラー認識領域（ＨＡＤＲ〜ＨＡＤＲ＋ｎ）の範囲に対応する訂正レジスタ１１５内の訂正フラグ１１６をチェックする。訂正レジスタ１１５内の訂正フラグ１１６に、誤り訂正が必要との情報が格納されていなければ、ステップ８０６に移る。訂正レジスタ１１５内の訂正フラグ１１６に、誤り訂正が必要との情報が格納されていれば、ステップ８０４へと移る。
【００６４】
ステップ８０４では、エラーセクターの最小アドレスを取得する。つまり、誤り訂正回路１１３は、ステップ８０３で誤り訂正が必要との情報が格納されていることをチェックした訂正フラグ１１６の中で、最もアドレスの小さなセクターのそのアドレスを取得する。
【００６５】
次に、ステップ８０５において誤り訂正回路１１３は、ステップ８０４で決定したアドレスに対応するシンドロームをシンドローム部１０８から読み出して誤り位置検出回路１１２へと転送し、誤りの発生しているビットのアドレスを決定する演算を実行させる。誤り位置検出回路１１２では、転送されたシンドロームを基にして誤りの発生しているビットのアドレスを決定し、誤り訂正回路１１３へ通知する。誤り訂正回路１１３では、誤り位置検出回路１１２から通知された、誤りの発生しているビットのアドレスを基にデータバッファ１０７からデータを読み出して、誤りを訂正して書き戻す。そして、次の誤り訂正を行うためにステップ８０１へと戻る。
【００６６】
一方、前述のように、ステップ８０３で訂正レジスタ１１５内の訂正フラグ１１６に誤り訂正が必要との情報が格納されていない場合、ステップ８０６に移り、ここで、処理順序判定回路１１４は、エラー認識領域解除期間であるかどうかを判定する。
【００６７】
上記のエラー認識領域解除期間について、図８を用いて説明する。図８では、（一つの）不揮発性メモリからのあるセクターデータの読み出しの開始時をｔｆＳＴＡＲＴ、不揮発性メモリからのセクターデータの読み出しの終了時をｔｆＥＮＤと表している。なおここでの不揮発性メモリからのセクターデータ読み出しの認識対象は、ホストに次に読み出し出力すべきセクターに対応するデータである。ｔｆＳＴＡＲＴ〜ｔｆＥＮＤは、不揮発性メモリからの１セクター分のデータの読み出し時間である。
【００６８】
誤り訂正処理に要する時間（誤り訂正処理期間）が、ｔｆＳＴＡＲＴ〜ｔｆＥＮＤよりも短い場合を考える。ここで、不揮発性メモリからのデータの読み出し開始時ｔｆＳＴＡＲＴを始点とし、不揮発性メモリからのデータの読み出し終了時ｔｆＥＮＤから誤り訂正処理期間を減じた時点を終点とする期間を、認識領域解除期間と設定している。この認識領域解除期間において誤り訂正処理を開始するならば、不揮発性メモリからのデータ読み出しが終わる前に、誤り訂正処理を終わらせることが可能である。即ち、次にホストに出力予定のセクターのデータを不揮発性メモリから読み出す際の認識領域解除期間において誤り訂正処理を開始すれば、次にホストに出力予定のセクターのデータの出力を遅延させる要因とはならない。それ故に、この期間に予め認識領域以外のセクターのデータの誤りを訂正しておくことは意味がある。ちなみに、認識領域解除期間以降に誤り訂正が開始する場合、該誤り訂正が終了する前に不揮発性メモリからのデータの読み出しが完了することになる。つまり、もし、読み出しを行った当該セクターに誤りがあるならば、動作中の誤り訂正処理が終了するのを待って当該セクターデータの誤り訂正処理が行われることになる。このことは、ホストへの読み出し性能を低下させる要因となり得る。
【００６９】
ステップ８０６で、処理順序判定回路１１４は、エラー認識領域解除期間であるかどうかを判定する。エラー認識領域解除期間でなければ、ステップ８０１へと戻る。エラー認識解除期間であれば、先のセクターのデータの誤りを訂正し得る機会があるということであるので、処理順序判定回路１１４はエラー認識領域解除期間であることを誤り訂正回路１１３に通知する。このとき、フローチャート、特にステップ８０３から明確に分かるが、エラー認識領域（ＨＡＤＲ〜ＨＡＤＲ＋ｎ）では誤りが発生していない。よって、ステップ８０７では誤り訂正回路１１３は全領域の訂正フラグ１１６のチェックを行う。誤り訂正が必要との情報がなければステップ８０１へ戻る。誤り訂正が必要との情報があれば、ステップ８０８へと移る。ステップ８０８では、誤り訂正回路１１３は、ステップ８０７で誤り訂正が必要との情報が格納されていることをチェックした訂正フラグ１１６の中で、最もアドレスの小さなセクターのそのアドレスを取得する。その後ステップ８０５に移る。
【００７０】
これらのステップ８０１〜８０８のステップグループ８０９の期間において、不揮発性記憶装置１０１からの読み出しが完了したら、処理を完了する。
【００７１】
図７のフローチャートに示すように、エラー認識領域解除期間を設けることにより、性能低下を発生させること無く、誤りの発生したセクターのデータの誤り訂正処理を実行することができる。
【００７２】
［その他の実施形態］
本発明は、不揮発性メモリにのみ適用されるものではなく、複数のＩ／Ｆを備えて並列にデータの転送が行われる構成を備える揮発性メモリにも適用され得る。またさらに、メモリに適用が限定されるものでもなく、複数の通信経路を持ち、それら通信経路を介してデータと対応する誤り訂正符号とが送信され、誤りの訂正が為される必要があるシステムなどに適用することも可能である。
【００７３】
また、誤り訂正回路の個数も１つに限定されない。本発明の基本的思想を適用すれば、不揮発性メモリにおいて、シンドローム生成機能部の数よりも誤り訂正回路の数を少なく構成して回路規模を削減できる。
【産業上の利用可能性】
【００７４】
本発明を利用することにより、誤り訂正能力を維持したまま誤り訂正回路の回路規模を削減できから、本発明は、低コスト及び省スペースを目的とする誤り訂正機能付き記憶装置に有用である。
【符号の説明】
【００７５】
１０１・・・不揮発性記憶装置、
１０２・・・コントローラ、
１３１・・・不揮発性メモリ＃Ａ、
１３２・・・不揮発性メモリ＃Ｂ、
１３３・・・不揮発性メモリ＃Ｃ、
１３４・・・不揮発性メモリ＃Ｄ、
１０４・・・ホストＩ／Ｆ、
１０５・・・バッファメモリ、
１６１・・・メモリＩ／Ｆモジュール＃Ａ、
１６２・・・メモリＩ／Ｆモジュール＃Ｂ、
１６３・・・メモリＩ／Ｆモジュール＃Ｃ、
１６４・・・メモリＩ／Ｆモジュール＃Ｄ、
１０７・・・データバッファ、
１０８・・・シンドローム部、
１０９・・・メモリＩ／Ｆ、
１１０・・・訂正符号生成機能部、
１１１・・・シンドローム生成機能部、
１１２・・・誤り位置検出回路、
１１３・・・誤り訂正回路、
１１４・・・処理順序判定回路、
１１５・・・訂正レジスタ、
１１６・・・訂正フラグ、
９０１・・・不揮発性記憶装置、
９０２・・・コントローラ、
９０３・・・不揮発性メモリ、
９０４・・・ホストＩ／Ｆ、
９０５・・・バッファメモリ、
９０６・・・メモリＩ／Ｆモジュール、
９０７・・・データバッファ、
９０９・・・メモリＩ／Ｆ、
９１０・・・訂正符号生成機能部、
９１１・・・シンドローム生成機能部、
９１２・・・誤り位置検出回路、
９１３・・・誤り訂正回路。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のメモリに対するデータの書き込み、読み出しを制御する、誤り訂正機能付きコントローラであって、
バッファメモリと、
誤り訂正回路と、
前記複数のメモリのそれぞれに対応して設けられ、前記メモリとデータのやりとりを行う複数のインターフェースモジュールとを備え、
前記複数のインターフェースモジュールは、前記メモリからセクターデータとそのセクターデータに対応する誤り訂正符号を受信し、前記受信したセクターデータと誤り訂正符号に基づきシンドロームを生成するシンドローム生成機能部を備え、
前記バッファメモリは複数の前記セクターデータを一時的に格納し、
前記誤り訂正回路は、複数の前記シンドローム生成機能部によって生成される夫々のシンドロームに対応して、誤りの発生しているアドレスを決定すると共に、前記バッファメモリに格納された前記セクターデータにおける前記アドレスに対応するビットを訂正する
ことを特徴とする誤り訂正機能付きコントローラ。
【請求項２】
前記インターフェースモジュールがメモリインターフェースモジュールである
ことを特徴とする請求項１に記載の誤り訂正機能付きコントローラ。
【請求項３】
前記誤り訂正機能付きコントローラはさらに処理順序判定機能部を有し、
前記処理順序判定機能部は複数の前記シンドローム生成機能部からの訂正が必要か否かの情報をもとにして、複数の前記セクターデータのうち誤り訂正を行う対象となるセクターデータのスケジューリングを行う
ことを特徴とする請求項２に記載の誤り訂正機能付きコントローラ。
【請求項４】
前記処理順序判定機能部のスケジューリングが、誤り訂正が必要なセクターデータのなかでアドレスの若いセクターデータを優先的に処理するものである
ことを特徴とする請求項３に記載の誤り訂正機能付きコントローラ。
【請求項５】
前記処理順序判定機能部のスケジューリングが、さらにｎセクター（ｎは２以上の自然数）の範囲のセクターデータのみを誤り訂正の対象とするものである
ことを特徴とする請求項４に記載の誤り訂正機能付きコントローラ。
【請求項６】
前記ｎセクターは前記訂正機能付きコントローラ外部にセクター分のデータを出力するのに要する時間と、セクター分の誤り訂正処理とを行う時間をもとに決定される
ことを特徴とする請求項５に記載の誤り訂正機能付きコントローラ。
【請求項７】
前記処理順序判定機能部のスケジューリングが、さらに誤り訂正の対象範囲を設定する期間と、誤り訂正の対象範囲とを設定しない期間を設けるものである
ことを特徴とする請求項５に記載の誤り訂正機能付きコントローラ。
【請求項８】
前記誤り訂正の対象範囲を設定する期間と設定しない期間は、メモリからのセクターデータ読み出し時間と、誤り訂正処理を行う時間とをもとに決定される
ことを特徴とする請求項７に記載の誤り訂正機能付きコントローラ。
【請求項９】
複数のメモリと、
前記複数のメモリに対するデータの書き込み、読み出しを制御する、請求項２〜８のうちのいずれか一に記載の誤り訂正機能付きコントローラとを備えた
ことを特徴とする誤り訂正機能付き記憶装置。
【請求項１０】
前記メモリが不揮発性メモリである
ことを特徴とする請求項９に記載の誤り訂正機能付き記憶装置。
【請求項１１】
請求項９又は１０に記載の誤り訂正機能付き記憶装置と、
前記記憶装置に対してデータの書き込み、読み出しを行うホスト機器とを有する
ことを特徴とする誤り訂正機能付きシステム。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2010013437.tif 000014
【図２】
2010013437.tif 000015
【図３】
2010013437.tif 000016
【図４】
2010013437.tif 000017
【図５】
2010013437.tif 000018
【図６】
2010013437.tif 000019
【図７】
2010013437.tif 000020
【図８】
2010013437.tif 000021
【図９】
2010013437.tif 000022
【図１０】
2010013437.tif 000023
【図１１】
2010013437.tif 000024
【国際調査報告】
2010013437.tif 000025
2010013437.tif 000026