(57)【要約】【課題】スループットを低下させることなくメモリチップの故障を防ぐことが可能な半導体記憶装置を提供すること。【解決手段】夫々独立に動作可能な複数のメモリ領域を有する不揮発性半導体メモリと、複数のメモリ領域に対しデータのアクセスを実行し、アクセス可能状態になったらデータ転送要求を転送管理部に出力する複数のメモリインタフェースと、データを一時記憶する一時記憶バッファとを有する。ＥＣＣ処理部は、一時記憶バッファと複数のメモリインタフェースとの間で転送中のデータを用いて不揮発性半導体メモリの複数のメモリ領域へ分散して書き込まれるデータあるいは複数のメモリ領域へ分散して書き込まれたデータに関するＥＣＣ処理を実行する。転送管理部は、データ転送にかかるデータがＥＣＣ処理を実行するか否かを判定し、ＥＣＣ処理を実行すると判定したデータにのみＥＣＣ処理部でのＥＣＣ処理を実行させる。【選択図】図１
2012128660.tif 000002
【特許請求の範囲】
【請求項１】
夫々独立に動作可能な複数のメモリ領域を有する不揮発性半導体メモリと、
前記複数のメモリ領域に対しデータのアクセスを実行し、アクセス可能状態になったらデータ転送要求を転送管理部に出力する複数のメモリインタフェースと、
データを一時記憶する一時記憶バッファと、
前記複数のメモリインタフェースからのデータ転送要求の内容に基づき前記一時記憶バッファと前記複数のメモリインタフェースとの間でのデータ転送順管理を行う転送管理部と、
データ及びＥＣＣ処理の符号化結果を前記複数のメモリ領域へ分散して書き込ませるよう前記複数のメモリインタフェースを制御する制御部と、
前記一時記憶バッファと前記複数のメモリインタフェースとの間で転送中のデータを用いて前記複数のメモリ領域へ分散して書き込むべきデータあるいは前記複数のメモリ領域へ分散して既に書き込まれたデータに関する前記ＥＣＣ処理を実行するＥＣＣ処理部と、
を備え、
前記転送管理部は、前記データ転送要求にかかるデータが前記ＥＣＣ処理を実行するか否かを判定し、前記ＥＣＣ処理を実行すると判定したデータにのみ前記ＥＣＣ処理部でのＥＣＣ処理を実行させることを特徴とする半導体記憶装置。
【請求項２】
前記転送管理部は、前記複数のメモリインタフェースからのデータ転送要求の順序を管理する機能を備え、
前記複数のメモリインタフェースからデータ転送要求が入力された順番で前記メモリインタフェースのデータ転送要求の内容を判断し、データ転送の実行の許可とＥＣＣ処理の制御を行うことを特徴とする請求項１に記載の半導体記憶装置。
【請求項３】
前記転送管理部は、あらかじめ定められた順番で前記メモリインタフェースからのデータ転送要求を判断する機能を備え、
あらかじめ定められた順番に従って、前記メモリインタフェースのデータ転送要求の内容を判断し、データ転送の実行の許可とＥＣＣ処理の制御を行うことを特徴とする請求項１に記載の半導体記憶装置。
【請求項４】
前記ＥＣＣ処理部には、予め決められたデータ順にＥＣＣ処理を行うべきＥＣＣ方式が採用されており、
前記転送管理部は、前記メモリインタフェースからのデータ転送要求の内容に基づき、当該データ転送要求が前記ＥＣＣ処理を実行するか否かと、当該データ転送が前記データ順に従っているか否かを判定し、データ順に従っている場合は前記ＥＣＣ処理部によるＥＣＣ処理を実行させて当該データ転送を即座に実行し、データ順に従っていない場合は当該データ転送をスキップして他の前記メモリインタフェースのデータ転送要求の判断を行うことを特徴とする請求項１乃至請求項３の何れか一つに記載の半導体記憶装置。
【請求項５】
前記転送管理部は、前記メモリインタフェースからのデータ転送要求の内容に基づき、当該データ転送要求が前記ＥＣＣ処理を実行するか否かと、当該データ転送が前記データ順に従っているか否かを判定し、ＥＣＣ処理を実行しないと判定された場合に、前記ＥＣＣ処理部によるＥＣＣ処理を実行させることなく当該データ転送要求を即座に実行させることを特徴とする請求項１乃至請求項４の何れか一つに記載の半導体記憶装置。
【請求項６】
前記ＥＣＣ処理部には、予め決められたデータ順にＥＣＣ処理を行う制約のないＥＣＣ方式が採用されており、
前記転送管理部は、前記メモリインタフェースからのデータ転送要求の内容に基づき、当該データ転送要求が前記ＥＣＣ処理を実行するか否かを判断し、判断内容に従って前記ＥＣＣ処理部によるＥＣＣ処理を実行させて当該データ転送を即座に実行することを特徴とする請求項１乃至請求項３の何れか一つに記載の半導体記憶装置。
【請求項７】
前記ＥＣＣ処理部には、符号化時のデータ入力順で復号化のデータ入力順がきまるＥＣＣ方式が採用され、
前記転送管理部は、前記メモリインタフェースからのデータ転送要求の内容に基づき、当該データ転送要求が前記ＥＣＣ処理を実行するか否かと、符号化か復号化かを判定し、符号化である場合は前記ＥＣＣ処理部によるＥＣＣ処理を実行させて当該データ転送を即座に実行し、符号化したデータの順序を記録することを特徴とする請求項１乃至請求項３の何れか一つに記載の半導体記憶装置。
【請求項８】
前記ＥＣＣ処理部には、符号化時のデータ入力順で復号化のデータ入力順がきまるＥＣＣ方式が採用され、
前記転送管理部は、前記メモリインタフェースからのデータ転送要求の内容に基づき、当該データ転送要求が前記ＥＣＣ処理を実行するか否かと、符号化か復号化かを判定し、復号化である場合は符号化時に記録した順序関係を元に復号化順に従っているかをさらに判定し、復号化順に従っている場合は前記ＥＣＣ処理部によるＥＣＣ処理を実行させて当該データ転送を即座に実行し、データ順に従っていない場合は当該データ転送をスキップして他の前記メモリインタフェースのデータ転送要求の判断を行うことを特徴とする請求項７に記載の半導体記憶装置。
【請求項９】
前記ＥＣＣ処理部で採用しているＥＣＣ方式が巡回符号であることを特徴とする請求項１乃至請求項５、請求項７及び請求項８の何れか一つに記載の半導体記憶装置。
【請求項１０】
前記ＥＣＣ処理部で採用しているＥＣＣ方式が排他的論理和からパリティを計算することを特徴とする請求項１乃至請求項３、及び請求項６の何れか一つに記載の半導体記憶装置。
【請求項１１】
前記複数のメモリ領域は、複数のページを有するブロックを複数個有するメモリチップを１個以上含むことを特徴とする請求項１乃至請求項１０の何れか一つに記載の半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性半導体メモリを備えた半導体記憶装置に関する。
【背景技術】
【０００２】
半導体記憶チップをメモリチップとして多数用いた半導体記憶装置では、メモリセルの故障を修復するための誤り訂正符号（ＥＣＣ）を用いても、メモリチップの故障を防ぐことができず、結果的に、半導体記憶装置の故障となる恐れがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−２１１２０９号公報
【特許文献２】特開２０１０−１６０８７３号公報
【非特許文献】
【０００４】
【非特許文献１】A Case for Redundant Arrays of Inexpensive Disks (RAID)  UC Berkeley Technical Report UCB/CSD-87-391 1987年
【非特許文献２】A Tutorial on Reed-Solomon Coding for Fault-Tolerance in RAID-like Systems James S. Plank Technical Report CS-96-332 Department of Computer Science University of Tennessee
【非特許文献３】D. Patterson, G. Gibson, and R. Katz. "A Case for Redundant Arrays of Inexpensive Disks （RAID）", Proceedings of the 1988 ACM SIGMOD, pp.109-116, June 1988.
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の一つの実施形態は、スループットを低下させることなくメモリチップの故障を防ぐことが可能な半導体記憶装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一つの実施形態によれば、夫々独立に動作可能な複数のメモリ領域を有する不揮発性半導体メモリと、前記複数のメモリ領域に対しデータのアクセスを実行し、アクセス可能状態になったらデータ転送要求を転送管理部に出力する複数のメモリインタフェースと、データを一時記憶する一時記憶バッファとを有する。制御部は、データを前記複数のメモリ領域へ分散して書き込ませるよう前記複数のメモリインタフェースを制御する。転送管理部は、前記複数のメモリインタフェースからのデータ転送要求の内容に基づき前記一時記憶バッファと前記複数のメモリインタフェースとの間でデータ転送管理を行う。ＥＣＣ処理部は、前記一時記憶バッファと前記複数のメモリインタフェースとの間で転送中のデータを用いて前記複数のメモリ領域へ分散して書き込まれるデータあるいは前記複数のメモリ領域へ分散して書き込まれたデータに関するＥＣＣ処理を実行する。転送管理部は、前記データ転送にかかるデータが前記ＥＣＣ処理を実行するか否かを判定し、ＥＣＣ処理を実行すると判定したデータにのみ前記ＥＣＣ処理部でのＥＣＣ処理を実行させる。
【図面の簡単な説明】
【０００７】
【図１】図１は、半導体記憶装置としてのＳＳＤの内部構成例を示す図である。
【図２】図２は、ＮＡＮＤＩ／Ｆの内部構成例を示す図である。
【図３】図３は、跨ぎＥＣＣ処理の符号化処理を説明する図である。
【図４】図４は、跨ぎＥＣＣ処理の復号化処理を説明する図である。
【図５】図５は、管理テーブルの構成例を示す図である。
【図６】図６は、フォギーファイン書き込みの様子を示す図である。
【図７】図７は、第１の実施形態の動作手順を示すフローチャートである。
【図８】図８は、データ転送制御を示す図である。
【図９】図９は、跨ぎＥＣＣ処理での復号化手順を示すフローチャートである。
【図１０】図１０は、第２の実施形態の動作手順を示すフローチャートである。
【図１１】図１１は、パーソナルコンピュータの外観を示す斜視図である。
【図１２】図１２は、パーソナルコンピュータの機能構成例を示す図である。
【発明を実施するための形態】
【０００８】
コンピュータシステムに用いられるメモリシステムとして、ＮＡＮＤ型フラッシュメモリ（以降、単にＮＡＮＤメモリという）などの不揮発性半導体メモリを搭載したＳＳＤ（Solid  State  Drive）が注目されている。ＳＳＤにおいては、一時記憶バッファを備えることが多く、ホスト装置から要求されたデータをＮＡＮＤメモリにライトする際には、ホスト装置から入力されたデータを一時記憶バッファで一時記憶し、その後、一時記憶バッファから読み出したデータをＮＡＮＤメモリに書き込む。
【０００９】
一方、ＮＡＮＤメモリのチップ不良率が、１チップでは製品として問題がない場合でも、ＳＳＤのように多くのメモリチップを搭載したシステムにおいては、システムとしての不良率が無視できない大きさになることがある。このため、チップ不良を救済するための跨ぎ誤り訂正が考えられる。跨ぎ誤り訂正においては、複数のメモリチップへ分散して記録するデータから誤り訂正符号を計算する。この誤り訂正符号を計算する際、ＳＳＤにおいては、一時記憶バッファに記憶された符号元データを使用して誤り訂正符号を計算し、計算が終了したら、計算された誤り訂正符号と符号元データをＮＡＮＤメモリに書き込むこととなる。
【００１０】
このため、第１サイクルでは、一時記憶バッファに記憶された符号元データを使用して誤り訂正符号を計算し、その後の第２サイクルで、メモリチップへの誤り訂正符号及び符号元データの転送を行うことが考えられるが、この手法では、合計２サイクルを使用してデータ転送及び符号計算を行う、別言すればメモリチップに対する書き込み以外で符号の計算のための一時記憶バッファへのアクセスが発生するため、一時記憶バッファのバンド幅を圧迫し、スループットが低下する。
【００１１】
また、跨ぎ誤り訂正においてＲＳ（Reed-Solomon）符号のような巡回符号を使用した場合、符号化（以下、エンコード処理と記述する場合がある）時と復号化（以下、デコード処理と記述する場合がある）時で同一のデータ入力順にする必要がある。しかしながら、このデータ入力順が必ずしも複数のＮＡＮＤメモリに対して最速で書き込みまたは読み出しが可能な順序であるとは限らず、常にデータ入力順を守っていると、跨ぎ訂正を行わない場合と比較してシステム性能を低下させてしまう可能性がある。
【００１２】
そこで、本実施形態においては、
・跨ぎ誤り訂正回路は、一時記憶バッファとＮＡＮＤメモリ間で転送中のデータを用いて跨ぎ誤り訂正処理（符号化／復号化）を実行する、
・跨ぎ誤り訂正処理の必要／不要を判断し、不要な場合は跨ぎ誤り訂正処理を行わない、
・データ入力順序を守る必要がある跨ぎ誤り訂正処理の場合は、ＮＡＮＤメモリ側の要求に関係なくデータ入力順序を守って一時記憶バッファとＮＡＮＤメモリ間でのデータ転送を実行する、
といった制御を実行することとする。
【００１３】
以下に添付図面を参照して、実施形態にかかる半導体記憶装置を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【００１４】
（第１の実施形態）
図１は、実施形態にかかる半導体記憶装置の構成を示すブロック図である。ここでは、半導体記憶装置の一例としてＳＳＤ（Solid  State  Drive）１００を例に挙げて説明するが、本実施の形態の適用対象はＳＳＤに限定しない。例えば、不揮発にデータを記憶する半導体メモリ及びコントローラを搭載したメモリカード等の補助記憶装置に対しても、本実施の形態を適用することが可能である。図１では、概ね、データ線を実線で示し、制御線を破線で示している。
【００１５】
また、各実施形態における各機能ブロックは、ハードウェア、及びソフトウェアのいずれか、又は両者の組み合わせとして実現することができる。このため、各機能ブロックは、これらのいずれでもあることが明確となるように、概してそれらの機能の観点から以下に説明される。このような機能が、ハードウェアとして実現されるか、又はソフトウェアとして実現されるかは、具体的な実施態様、或いはシステム全体に課される設計制約に依存する。当業者は、具体的な実施態様ごとに、様々な方法でこれらの機能を実現し得るが、そのような実現を決定することは本発明の範疇に含まれる。
【００１６】
ＳＳＤ１００は、パーソナルコンピュータなどのホスト装置とホストインタフェース（ホストＩ／Ｆ）１５０で接続され、ホスト装置の外部記憶装置として機能する。ＳＳＤ１００は、ホストＩ／Ｆ１５０と、ホスト装置からリード／ライトされるデータを記憶する不揮発性半導体メモリであるＮＡＮＤメモリ１０（１０−０〜１０−４）と、ＳＳＤ１００とホスト装置とのデータ転送制御にかかる各種制御を実行するコントローラ２０と、コントローラ２０がデータ転送のための転送データを一次格納するために使用され、例えばＤＲＡＭなどの揮発性メモリで構成される一時記憶バッファ３０と、ＮＡＮＤメモリ１０−０〜１０−４と一時記憶バッファ３０との間のデータ転送制御を実行するＮＡＮＤインタフェース（ＮＡＮＤＩ／Ｆ）４０（４０−０〜４０−４）と、複数のＮＡＮＤメモリ１０−０〜１０−４に跨って分散記憶されたデータの跨ぎＥＣＣ処理（誤り訂正符号化／復号化）を実行する跨ぎＥＣＣ回路５０と、ホスト装置が指定する論理アドレスとしてのＬＢＡ（Logical Block Addressing）とＮＡＮＤメモリ１０上でのデータ記憶位置と、跨ぎ訂正符号化処理によって作成された符号のＮＡＮＤメモリ１０上での記憶位置との対応関係などの各種管理情報が記憶される管理情報記憶部６０とを備える。
【００１７】
ホスト装置から送信されてきたデータは、コントローラ２０の制御の基に、ホストＩ／Ｆ１５０を経由して一時記憶バッファ３０に一旦格納され、その後、一時記憶バッファ３０から読み出されてＮＡＮＤＩ／Ｆ４０を経由してＮＡＮＤメモリ１０に書き込まれる。ＮＡＮＤメモリ１０から読み出されたデータは、ＮＡＮＤＩ／Ｆ４０を経由して一時記憶バッファ３０に一旦格納され、その後、一時記憶バッファ３０から読み出されてホストＩ／Ｆ１５０を経由してホスト装置に転送される。
【００１８】
ＮＡＮＤメモリ１０は、ホストによって指定されたユーザデータを記憶したり、管理情報記憶部６０で管理される管理情報をバックアップ用に記憶したりする。ＮＡＮＤメモリ１０は、複数のメモリセルがマトリクス状に配列されたメモリセルアレイを有し、個々のメモリセルは上位ページ及び下位ページを使用して多値記憶が可能である。この実施形態では、便宜上、ＮＡＮＤメモリ１０−０〜１０−４は、夫々１つのメモリチップによって構成されるとする。各メモリチップは、データ消去の単位である物理ブロックを複数配列して構成される。また、ＮＡＮＤメモリ１０では、物理ページごとにデータの書き込み及びデータの読み出しが行われる。物理ブロックは、複数の物理ページによって構成されている。ＮＡＮＤメモリ１０−０〜１０−４へのデータや冗長情報（跨ぎ誤り訂正符号）の書き込みは、ＮＡＮＤメモリ１０−０〜１０−４の物理的な記憶位置を用いて、論理アドレス（ＬＢＡ）とは無関係に、ページの昇順に行なわれる。
【００１９】
本実施形態では、ＮＡＮＤメモリ１０の個数を５個としている。ＮＡＮＤメモリ１０−０〜１０−４に対して各々１つのチャネル（ｃｈ０〜ｃｈ４）を割り当て、このうち１つのチャネル（ｃｈ４とする）を、跨ぎＥＣＣ回路５０で作成した冗長情報を書き込むためのチャネルとして割り当てて、残りのチャネル（ｃｈ０〜ｃｈ３）を、ホスト装置から書き込みが要求されたデータを書き込むためのチャネルとして割り当てて、チャネルｃｈ０〜ｃｈ４の各ページを１つの組として誤り訂正符号を構成する。すなわち、ＮＡＮＤメモリ１０−０〜１０−３がデータ記憶用であり、ＮＡＮＤメモリ１０−４が誤り訂正符号用である。誤り訂正符号を構成するチャネルｃｈ０〜ｃｈ４の物理ブロックの組を論理ブロックということとする。ＮＡＮＤメモリ１０−０〜１０−４は、各別のチャネルｃｈ０〜ｃｈ４を介してＮＡＮＤＩ／Ｆ４０−０〜４０−４に接続されており、ＮＡＮＤメモリ１０−０〜１０−４は、独立して並列動作することが可能である。
【００２０】
ホストＩ／Ｆ１５０は、例えばＡＴＡ（Advanced  Technology  Attachment）規格の通信インタフェースを有し、コントローラ２０の制御にしたがってＳＳＤ１００とホスト装置との通信を制御する。ホストＩ／Ｆ１５０は、ホスト装置から送信されたコマンドを受信し、当該コマンドによって論理アドレス（ＬＢＡ）が指定されたデータの書き込みが要求されている場合、当該コマンド（ライトコマンド）をコントローラ２０に送る。その際、書き込みが要求されたデータのサイズがページサイズ以下であれば、当該データを一時記憶バッファ３０に送り、当該データのサイズがページサイズより大きい場合、当該データをページ単位に分割し、分割したデータ（分割データという）を一時記憶バッファ３０に送る。これは、この実施形態では、論理アドレスと物理アドレスとの変換をページ単位で行っているためである。
【００２１】
一時記憶バッファ３０は、データ転送用の一時記憶部として使用される。すなわち、ホスト装置から書込み要求があったデータをＮＡＮＤメモリ１０に書込む前に一時的に保存したり、ホスト装置から読出し要求があったデータをＮＡＮＤメモリ１０から読出して一時的に保存したりするために使用される。一時記憶バッファ３０は、例えばＤＲＡＭなどの揮発性メモリで構成される。
【００２２】
ＮＡＮＤＩ／Ｆ４０−０〜４０−４は、ＮＡＮＤメモリ１０−０〜１０−４と一時記憶バッファ３０との間のデータ転送制御を実行するものであり、図２にその内部構成例を示す。ＮＡＮＤＩ／Ｆ４０−０〜４０−４では、各チャネルを独立して動作させるために、チャネル毎に、ＤＭＡコントローラ（ＤＭＡＣ）４１と、誤り訂正回路（ＥＣＣ回路）４３と、メモリＩ／Ｆ４４、ＮＡＮＤＩ／Ｆ制御部４５を備える。ＤＭＡコントローラ４１は、ＮＡＮＤＩ／Ｆ制御部４５による制御に従って、一時記憶バッファ３０とＥＣＣ回路４３との間のデータ転送制御をＤＭＡ（Direct  Memory  Access）方式に従って行う。
【００２３】
ＥＣＣ回路４３は、ＮＡＮＤＩ／Ｆ制御部４５による制御に従って、ＤＭＡコントローラ４１から転送されたデータに対して、ＥＣＣ処理（誤り訂正処理）におけるエンコード処理を行い、エンコード結果をデータに付加して出力する。また、ＥＣＣ回路４３は、ＮＡＮＤＩ／Ｆ制御部４５による制御に従って、メモリＩ／Ｆ４４を介してＮＡＮＤメモリ１０から読み出されたデータに対して、ＥＣＣ処理におけるデコード処理（誤り訂正符号を用いた誤り訂正処理）を行い、誤り訂正されたデータをＤＭＡコントローラ４１に出力する。メモリＩ／Ｆ４４は、ＥＣＣ回路４３から出力されるＥＣＣ符号が付加されたデータをＮＡＮＤメモリ１０に出力するとともに、ＮＡＮＤメモリ１０から入力されたＥＣＣ符号が付加されたデータをＥＣＣ回路４３に出力する。
【００２４】
ＥＣＣ回路４３は、書き込み対象のデータに対して、例えばページサイズのデータ毎に、誤り検出符号（例えば、ＣＲＣ符号）及び誤り訂正（ＥＣＣ）符号（例えば、ハミング符号）を生成して付加する。誤り検出符号、ＥＣＣ符号が付加されたデータが、メモリＩ／Ｆ４４を介してＮＡＮＤメモリ１０に書き込まれる。また、ＮＡＮＤメモリ１０からデータを読み出す場合は、ＥＣＣ回路４３は、ＮＡＮＤメモリ１０から読み出されたページサイズのデータに対して、ＥＣＣ符号による誤り訂正を行った後、誤り検出符号を用いて誤訂正が発生しているか否かを検出する。
【００２５】
ＥＣＣ回路４３は、誤訂正が発生していると判定された場合に、すなわち、ＥＣＣ符号の訂正能力以上の誤りが生じて誤訂正が発生した場合に、その旨をＮＡＮＤＩ／Ｆ制御部４５を経由してコントローラ２０に通知する。コントローラ２０は、ＥＣＣ回路４３から誤訂正の通知を受信した場合に、誤り箇所のページサイズのデータを含むデータ及び冗長情報を再度複数のＮＡＮＤメモリ１０−０〜１０−４から読み出して、読み出したデータに対し跨ぎＥＣＣ回路５０での跨ぎＥＣＣ処理を実行させる。以下、ＮＡＮＤＩ／Ｆコントローラ４０−０〜４０−４内のＥＣＣ回路で行われるＥＣＣ処理を、跨ぎＥＣＣ処理と区別するためにページＥＣＣと呼称する。
【００２６】
ＮＡＮＤＩ／Ｆ制御部４５は、コントローラ２０の主制御部２１から受けた命令をＮＡＮＤＩ／Ｆ用のコマンドに変換し、変換したコマンドに従って、ＤＭＡコントローラ４１、ＥＣＣ回路４３、及びメモリＩ／Ｆ４４を制御する。また、ＮＡＮＤＩ／Ｆ制御部４５は、自身がチャネル接続されるＮＡＮＤメモリ１０の動作状態（動作中／待機中など）を管理しており、コントローラ２０から受けた前の命令についての処理が終了していない場合は、前の命令についての処理が終了した時点でコントローラ２０の転送順管理部２３に今回の命令に対応するデータ転送要求を出力する。ここで、コントローラ２０の主制御部２１から通知される命令には、当該命令が跨ぎＥＣＣ回路５０での跨ぎＥＣＣ処理が必要であるか否かを示す跨ぎＥＣＣオンオフ情報Ｅflagが付加されており、ＮＡＮＤＩ／Ｆ制御部４５は、コントローラ２０の転送順管理部２３に命令を出力する際には、跨ぎＥＣＣオンオフ情報Ｅflagを付加して出力する。
【００２７】
ＮＡＮＤＩ／Ｆ４０−０〜４０−４の各ＮＡＮＤＩ／Ｆ制御部４５では、コントローラ２０の転送順管理部２３から受けた実行許可に従って、チャネル対応するＮＡＮＤメモリ１０−０〜１０−４から読み出したページ単位のデータを一時記憶バッファ３０に転送させる。
【００２８】
跨ぎＥＣＣ回路５０は、一時記憶バッファ３０とＮＡＮＤＩ／Ｆ４０との間のデータ転送の際に、転送中のデータを用いて、別言すれば転送中のデータを覗き見ながら誤り訂正符号化処理または誤り訂正復号化処理を実行する。跨ぎＥＣＣ回路５０において、誤り訂正符号化処理は、通常、一時記憶バッファ３０からＮＡＮＤＩ／Ｆ４０へのデータ転送の際に行われ、かつコントローラ２０の転送順管理部２３からの実行要求が通知された際に実行される。コントローラ２０の転送順管理部２３からの実行要求が通知されない場合は、跨ぎＥＣＣ回路５０における誤り訂正符号化処理は実行されない。
【００２９】
誤り訂正符号化処理の一例を、図３に示す。誤り訂正符号化処理においては、独立動作可能な複数のＮＡＮＤメモリ１０−０〜１０−３に分散記憶されるデータ、別言すれば複数のメモリチップに分散記憶されるデータを用いて誤り訂正符号を作成する。図３では、跨ぎＥＣＣ回路５０は、チャネルｃｈ０〜ｃｈ３への各書き込み対象のページサイズのデータに対して、オフセットが等しい位置の例えばバイト同士で誤り訂正符号を計算する。この計算結果は冗長情報として、跨ぎＥＣＣ回路５０からチャネルｃｈ４のＮＡＮＤＩ／Ｆ４０−４に転送され、チャネルｃｈ４のＮＡＮＤＩ／Ｆ４０−４によってＮＡＮＤメモリ１０−４の上述のオフセットが等しい位置に書き込まれる。即ち、チャネルｃｈ０〜ｃｈ４において、ページ内のオフセットが等しい位置のバイト同士によって誤り訂正符号が構成される。
【００３０】
このような誤り訂正符号化の際に、各チャネルｃｈ０〜ｃｈ３からそれぞれ１つの物理ブロックを選択し、選択した各物理ブロックから１つのページを選択し、選択した各ページのオフセットが等しい位置の例えばバイト同士（同一カラム）から誤り訂正符号を計算するようにしてもよいし、各チャネルｃｈ０〜ｃｈ３からそれぞれ複数個の物理ブロックを選択し、選択した各物理ブロックから１つのページを選択し、選択した各ページのオフセットが等しい位置の例えばバイト同士（同一カラム）から誤り訂正符号を計算するようにしてもよい。
【００３１】
また、跨ぎＥＣＣ回路５０において、誤り訂正復号化処理は、通常、ＮＡＮＤＩ／Ｆ４０から一時記憶バッファ３０へのデータ転送の際に行われ、かつコントローラ２０の転送順管理部２３からの実行要求が通知された際に実行される。コントローラ２０の転送順管理部２３からの実行要求が通知されない場合は、誤り訂正復号化処理は実行されない。
【００３２】
誤り訂正復号化処理の一例を、図４に示す。図４は、チャネルｃｈ３のＮＡＮＤメモリ１０−３に発生した故障により異常の発生したデータを復元する様子を示す図である。図４に示した復元の様子は、符号化方式としてパリティが採用された場合を示している。具体的には、訂正できない誤りの生じたデータと同一の誤り訂正符号に関連付けられたデータであって、訂正できない誤りの生じたデータに対応するチャネル以外のチャネルのＮＡＮＤメモリに書き込まれたデータと冗長情報（ここでは、チャネルｃｈ０、ｃｈ１、ｃｈ２に書き込まれた各データ及びチャネルｃｈ４に書き込まれた冗長情報）を読み出す。そして、跨ぎＥＣＣ回路５０は、当該各データ及び冗長情報における同じオフセットのバイトデータを用いてチャネルｃｈ３におけるデータを復元する。なお、符号化方式として、例えばＲＳ符号あるいはＢＣＨ（Bose-Chaudhuri-Hocqenghem）符号が採用されている場合は、訂正できない誤りの生じたチャネルのデータを含む全てのチャネルのデータと冗長符号とを用いて、誤りの生じたチャネルのデータの復元が行われる。
【００３３】
なお、ＮＡＮＤメモリ１０からの読み出しの場合に、跨ぎＥＣＣ回路５０で符号化が行われる場合もある。例えば、データＡ，Ｂ，Ｃ，ＤがＮＡＮＤメモリ１０−０〜１０−３に書き込まれ、それに対応する符号ＥがＮＡＮＤメモリ１０−４に記憶されているとする。この状態でデータＡがデータＡ´にホスト装置によって更新された場合、ホスト装置から書き込まれたＡ´と、ＮＡＮＤメモリ１０−１〜１０−３上にあるデータＢ，Ｃ，Ｄとで、符号Ｅを計算し直す必要がある。このような場合は、一時記憶バッファ３０からＮＡＮＤＩ／Ｆへのデータ転送の際に、跨ぎＥＣＣ回路５０でデータＡ´の符号を計算し、次に、ＮＡＮＤメモリ１０−１〜１０−３から読み出したデータＢ，Ｃ，ＤのＮＡＮＤＩ／Ｆからのデータ転送の際に、跨ぎＥＣＣ回路５０でデータＢ，Ｃ，Ｄの符号を計算して、新たな符号Ｅ´を計算する。
【００３４】
ここで、第１の実施形態においては、跨ぎＥＣＣ回路５０は、例えば、ＲＳ符号あるいはＢＣＨ符号などの巡回符号のように、復号化の際に符号化の際と同じ順序でデータをＥＣＣ回路４３に入力する必要がある誤り訂正符号方式を採用する。跨ぎＥＣＣ回路５０においては、一時記憶バッファ３０とＮＡＮＤＩ／Ｆ４０−０〜４０−４との間で転送されている最中のデータを用いて符号化するので、符号化の際、コントローラ２０では一時記憶バッファ３０からＮＡＮＤＩ／Ｆ４０−０〜４０−４に転送される符号化対象データの転送順序を管理情報記憶部６０に記憶しておき、復号化の際にはこの記憶した順序通りにＮＡＮＤＩ／Ｆ４０−０〜４０−４から一時記憶バッファ３０へのデータ転送を行う。
【００３５】
すなわち、符号化対象データの転送順序が跨ぎＥＣＣ回路５０での符号化順序となるので、巡回符号の場合は、復号化の際には符号化の順序通りに復号化を行う必要があり、符号化の際のデータ転送順通りに復号化の際のデータ転送を実行する。なお、符号化順序を管理する必要のある場合、符号化の際の一時記憶バッファ３０からＮＡＮＤＩ／Ｆ４０−０〜４０−４へのデータ転送順を予め決めておき、この決められた順に一時記憶バッファ３０とＮＡＮＤＩ／Ｆ４０−０〜４０−４との間のデータ転送を実行させるようにしてもよい。
【００３６】
これに対し、跨ぎＥＣＣ回路５０で採用する誤り訂正符号化方式として、各ＮＡＮＤＩ／Ｆ４０−０〜４０−３のＥＣＣ回路４３−０〜４３−３でのページＥＣＣ処理の誤り訂正結果に基づき誤り位置（誤りチャネル）を検出し、この検出結果に基づいて誤り訂正復号化を行う例えばパリティ（排他的論理和）のような符号化を採用した場合、復号化の際に符号化の際と同じ順序でデータを跨ぎＥＣＣ回路５０に入力する必要はない。このような誤り訂正符号を跨ぎＥＣＣ回路５０が採用する場合の処理については、第２の実施形態で説明する。
【００３７】
管理情報記憶部６０は、ＮＡＮＤメモリ１０に記憶されるデータ（符号元データ）の格納位置と、該データに対応する跨ぎ誤り訂正符号（冗長情報）の格納位置と、ホスト装置が指定する論理アドレス（ＬＢＡ）との対応を管理するデータ−符号管理情報を含む各種管理情報を格納するために使用される。管理情報は、ＮＡＮＤメモリ１０でバックアップされる。データ−符号管理情報としては、論理アドレス（ＬＢＡ）と符号が記憶されているＮＡＮＤメモリ上の記憶位置との対応関係、符号元データと跨ぎ誤り訂正符号との対応関係、符号元データと跨ぎ誤り訂正符号とのＮＡＮＤメモリ上の記憶位置を規定することができれば、その構成は任意である。さらに、管理情報記憶部６０には、前述した跨ぎＥＣＣ処理を行う際の一時記憶バッファ３０とＮＡＮＤＩ／Ｆ４０−０〜４０−４との間のデータ転送順序、すなわち跨ぎＥＣＣ回路５０でのＥＣＣ処理順を管理するためのＥＣＣ処理順管理情報Ｅseqも記憶されて、コントローラ２０によって管理されている。
【００３８】
図５にデータ−符号管理情報を管理するための管理テーブルの一例を示す。データ−符号管理テーブルは、ＬＢＡテーブルと、論物変換テーブルとを有する。ＬＢＡテーブルのエントリは、論理アドレス（ＬＢＡ）をインデックスとして、チャネルの番号と、ページに付与されたページ番号と、当該データが記憶されている前述した論理ブロックに付与された論理ブロック番号とから構成される。
【００３９】
論理ブロック番号は、符号元データ及び跨ぎ誤り訂正符号（冗長情報）を関連付けるための識別情報である。チャネルの番号は、ここでは、ｃｈ０〜ｃｈ４とし、当該ＬＢＡに対応するデータが記憶されている物理ブロックのあるＮＡＮＤメモリ１０がいずれのチャネルに接続されているかを示す。そしてページ番号は、当該ＬＢＡに対応するデータが、論理ブロック番号とチャネル番号で特定される物理ブロックの中のどのページに記憶されているかを示す。
【００４０】
論物変換テーブルは、論理ブロック番号と、その論理ブロックに関連付けられた各チャネルの各物理ブロックとを対応付けて記憶する。論物変換テーブルには、論理ブロック番号をインデックスとして、当該論理ブロックに関連付けられた各チャネルの物理ブロックのアドレス（物理ブロックアドレス）が記憶される。このような構成においては、ある論理アドレスに対応するＬＢＡテーブルのエントリに記憶されていた論理ブロック番号をインデックスとし、そのインデックスで、当該論理ブロックに関する論物変換テーブルのエントリを特定する。次に、当該論物変換テーブルのエントリに記憶されている物理ブロックの中から、当該ＬＢＡテーブルのエントリに記録されていたチャネル番号のチャネルに接続されているＮＡＮＤメモリ１０の物理ブロックを特定する。そして、当該ＬＢＡテーブルのエントリに含まれるページ番号によって、当該論理アドレスに対応するデータが書き込まれているページを特定する。
【００４１】
尚、上述したように、チャネルｃｈ０〜ｃｈ３の各ページには、ホスト装置から書き込みが要求されたデータについて、ページ単位で書き込みが行なわれ、チャネルｃｈ４には、跨ぎ誤り訂正符号を構成するために付加される冗長情報が書き込まれる。このため、論物変換テーブルの各エントリに記録されるチャネルｃｈ４の物理アドレスの記憶領域には、冗長情報が各々書き込まれている。
【００４２】
コントローラ２０は、主制御部２１と、転送順管理部２３を備える。主制御部２１は、ＮＡＮＤメモリ１０に記憶されているシステムプログラムを図示しない主記憶部に読み出して実行するプロセッサであり、システムプログラムを実行することで各種管理機能を実現する。主制御部２１は、ホストＩ／Ｆ１５０を介して、ホスト装置から送信されたコマンドを解釈し、解釈したコマンドに応じてホストＩ／Ｆ１５０、一時記憶バッファ３０、跨ぎＥＣＣ回路５０、ＮＡＮＤＩ／Ｆ４０−０〜４０−４などの構成要素を制御することで、ＮＡＮＤメモリ１０へのデータの書き込みやＮＡＮＤメモリ１０からのデータの読み出しを制御する。また、主制御部２１は、ＮＡＮＤメモリ１０の整理や一時記憶バッファ３０からのデータフラッシュなどが必要なときには、そのためのコマンドを作成し、一時記憶バッファ３０、跨ぎＥＣＣ回路５０、ＮＡＮＤＩ／Ｆ４０−０〜４０−４などを制御する。
【００４３】
ここで、前述したように、本実施形態では、ホスト装置からライト要求されたデータがページのサイズより大きい場合にはこれを複数のページ単位に分割し、分割したページ単位のデータを各チャネルｃｈ０〜ｃｈ３に分散させて、書き込みを行う。また、ホスト装置からリード要求されたデータがページのサイズより大きい場合には、これを複数に分割し、分割したページ単位のデータをＮＡＮＤメモリ１０から読みだして一時記憶バッファ３０へ転送する。このようなページ分割についての各種管理は、主制御部２１で行われている。
【００４４】
また、主制御部２１は、ＮＡＮＤＩ／Ｆ４０−０〜４０−４に出力する命令が跨ぎＥＣＣ処理を行う必要があるか否かを判断する跨ぎＥＣＣ処理判断部２２を有する。跨ぎＥＣＣ処理判断部２２は、ＮＡＮＤＩ／Ｆ４０−０〜４０−４に命令を出力する際に、前述したように、この命令が跨ぎＥＣＣ処理を行う必要があるか否かを示す跨ぎＥＣＣオンオフ情報Ｅflagを付加して出力する。以下に、跨ぎＥＣＣ処理判断部２２が、どのような場合に、跨ぎＥＣＣオンオフ情報Ｅflagをオンにするかの一例を示す。
（１）ホスト装置からのリード要求では、跨ぎＥＣＣ処理を実行しない。Ｅflag＝オフ
（２）ホスト装置からのライト要求では、跨ぎＥＣＣ処理（符号化）を実行する。Ｅflag＝オン
（３）ＮＡＮＤメモリ１０のデータ整理を行う際のＮＡＮＤメモリ１０から一時記憶バッファ３０へのデータ転送では、跨ぎＥＣＣ処理を実行しない。Ｅflag＝オフ
（４）ホスト装置からのリード要求の際、あるいはデータ整理を行う際のＮＡＮＤメモリ１０から一時記憶バッファ３０へのデータ転送の際に、ページＥＣＣ処理により誤り訂正不可能と判断した場合は、再度データをＮＡＮＤメモリ１０からリードし、リードしたデータを使用して跨ぎＥＣＣ処理（復号化）を実行する。Ｅflag＝オン
（５）ホスト装置からライト要求されたデータに対応する所望の閾値分布を形成するために、ＮＡＮＤメモリ１０に対して複数回に渡り同一データの入力が必要な際に、当該複数回のデータ入力のうちの何れか１回に係るデータ転送のときに跨ぎＥＣＣ処理（符号化）を実行し、その他のデータ転送のときには跨ぎＥＣＣ処理（符号化）を行わない。Ｅflag＝オン／オフ
【００４５】
ここで、上述したＮＡＮＤメモリ１０の整理について説明する。ＮＡＮＤメモリ１０では、つぎのような書き込み方式が採用されていることが多い。この書き込み方式では、書き込みの前に、ブロックを消去する必要がある。ＮＡＮＤメモリ１０では、消去をブロック単位で行ない、消去済みのブロックに対してページ単位で書き込みを行う。即ち、ＮＡＮＤメモリ１０においては、消去済みのブロックのうち書き込みがまだ行われていないページに対して順次書き込みが可能であり、既に書き込みが行なわれたページに対する上書きは不可能である。
【００４６】
また、データの書き込み要求において指定された論理アドレス（ＬＢＡ）が再度指定されて新たなデータの書き込み（データ更新）がホストから要求されると、ＳＳＤ１００では、消去済みのブロックの書き込みがまだ行なわれていないページに対して新たなデータの書き込みを行う。このとき、当該論理アドレスに対応して前回書き込みが行われたページを無効にして、新たなデータの書き込みが行われたページを有効にする。またこのとき、ＳＳＤ１００は、上述した跨ぎ訂正符号を構成しながら新たなデータ及び冗長情報の書き込みを行なう。
【００４７】
前述した管理情報記憶部６０は、論理ブロックに関連付けられた各チャネルｃｈ０〜ｃｈ４の物理ブロックについて、どのページが有効でどのページが無効であるかを管理しているテーブルを有しているが、その詳細説明は省略する。
【００４８】
ＮＡＮＤメモリ１０において、書き込みを続けることにより、無効にされたページが増えてくると、書き込みを実現可能な容量が少なくなってくる。そして、書き込みが可能な新規の消去済みのブロック、即ち、消去後に書き込みがまだ行なわれていないブロック（フリーブロックという）が少なくなり、フリーブロックの確保が不可能になった時点で書き込みが困難となってしまう。
【００４９】
これを防ぐために、ＳＳＤ１００では、適当なタイミングでＮＡＮＤメモリ１０の整理、例えばコンパクションを行う。コンパクションでは、有効なデータを集めて、違うブロックに書き直す。無効なデータしか存在しないブロックは消去され、新たなフリーブロックを生成する。このようなコンパクションの際には、ＮＡＮＤメモリ１０のデータが一時記憶バッファ３０に一旦読み出された後、再度ＮＡＮＤメモリ１０の別のブロックに書き込まれる。
【００５０】
次に上述した複数回のデータ入力が必要な書き込み方式について図６を用いて説明する。複数回のデータ入力が必要な書き込み方式として、例えば、多値メモリセルにおいて隣接メモリセルへの書き込みに伴う閾値変動を抑制する為、一旦ターゲットの閾値よりも粗く書き込みを行い、隣接メモリセルへの書き込みを実行した後、ターゲットの閾値に正確に書き込みを行う方式（以下、この様な書き込み方式をフォギーファイン書き込み方式と記述する）が挙げられる。この様な書き込み方式は、例えば、特開２０１０−１６０８７３号公報において詳細に開示されている。
（１）まず、ＮＡＮＤメモリ１０に下位ページ及び上位ページに対応する合計２ページ分のデータ入力を行い、ワードライン０（ＷＬ０）の下位ページ及び上位ページにデータがフォギー（ラフ）書き込みされる。
（２）次に、ＮＡＮＤメモリ１０に下位ページ及び上位ページに対応する合計２ページ分のデータ入力を行い、ワードライン１（ＷＬ１）の下位ページ及び上位ページにデータがフォギー（ラフ）書き込みされる。
（３）次に、（１）で入力した合計２ページ分のデータと同一のデータ入力を行い、ワードライン０（ＷＬ０）の下位ページ及び上位ページにデータがファイン書き込みされる。
（４）次に、ＮＡＮＤメモリ１０に下位ページ及び上位ページに対応する合計２ページ分のデータ入力を行い、ワードライン２（ＷＬ２）の下位ページ及び上位ページにデータがフォギー（ラフ）書き込みされる。
（５）次に、（２）で入力した合計２ページ分のデータと同一のデータ入力を行い、ワードライン１（ＷＬ１）の下位ページ及び上位ページにデータがファイン書き込みされる。以下同様である。
このようにフォギーファイン書き込み方式を採用する際には、同じページに対し２回の書き込み処理が行われるため、同一のページに対応するデータを２回入力する必要が生じる。なお、データ入力回数は２回に限るものではなく、各ページへの書き込み順序もこれに限定されるものではない。
【００５１】
転送順管理部２３は、ＮＡＮＤＩ／Ｆ４０−０〜４０−４から入力された複数の跨ぎＥＣＣオンオフ情報Ｅflag付きデータ転送要求の実行順序を決定し、決定した実行順序にしたがった順序にＮＡＮＤＩ／Ｆ４０−０〜４０−４に実行許可を出力する。実行順序の決定方法の一例を下記に示す。以下の決定方法では、コントローラ２０の主制御部２１の管理によってＮＡＮＤＩ／Ｆ４０−０〜４０−４から通知されたデータ転送要求には符号化の要求と復号化の要求が混ざらないようにしている。
【００５２】
（ａ）ＮＡＮＤＩ／Ｆ４０−０〜４０−４から通知されたデータ転送要求が全て跨ぎＥＣＣ処理の対象である場合（Ｅflag＝オン）は、ＮＡＮＤＩ／Ｆ４０−０〜４０−４から通知されたデータ転送要求の通知順序（入力順）に関係なく、符号・復号化の順序のみに従ってデータ転送要求の実行順序を決定する。
（ｂ）ＮＡＮＤＩ／Ｆ４０−０〜４０−４から通知されたデータ転送要求に、跨ぎＥＣＣ処理の対象（Ｅflag＝オン）と、非対象（Ｅflag＝オフ）が混在する場合は、ＮＡＮＤＩ／Ｆ４０−０〜４０−４から通知されたデータ転送要求が跨ぎＥＣＣ処理の非対象である場合には即座に実行し、跨ぎＥＣＣ処理の対象である場合には符号化／復号化の順序通りであるか否かを判定し、符号化／復号化の順序通りならばすぐに実行するが、符号化／復号化の順序に反する場合には、次のＮＡＮＤＩ／Ｆからのデータ転送要求の判断に移る。
（ｃ）ＮＡＮＤＩ／Ｆ４０−０〜４０−４から通知されたデータ転送要求が全て跨ぎＥＣＣ処理の非対象である場合（Ｅflag＝オフ）は、転送順を判断するＮＡＮＤＩ／Ｆを決定した段階でデータ転送を実行する。
【００５３】
次に、図７に示すフローチャートに従って転送順管理部２３で行われる処理手順について説明する。転送順管理部２３では、この場合、ラウンドロビンに従ってデータ転送を行うか否かを判断するＮＡＮＤＩ／Ｆ４０を決定する。この場合は、ラウンドロビン順は、ＮＡＮＤＩ／Ｆ４０−０→ＮＡＮＤＩ／Ｆ４０−１→ＮＡＮＤＩ／Ｆ４０−２→ＮＡＮＤＩ／Ｆ４０−３→ＮＡＮＤＩ／Ｆ４０−０→…であるとする。
【００５４】
まず、転送順管理部２３は、チャネルｃｈ０のＮＡＮＤＩ／Ｆ４０−０からのデータ転送要求があるか否かを判断する（ステップＳ１００、Ｓ１１０）。データ転送要求がない場合は、手順をステップＳ１９０に移行する。データ転送要求がある場合は、データ転送要求の内容を読み取り（ステップＳ１２０）、この読み取り内容におけるデータ転送要求に付加されている跨ぎＥＣＣオンオフ情報Ｅflagに基づきこのデータ転送が跨ぎＥＣＣ処理の対象か否かを判断する（ステップＳ１３０）。
【００５５】
転送順管理部２３は、ステップＳ１３０で、このデータ転送要求が跨ぎＥＣＣ処理の非対象であると判断した場合は、跨ぎＥＣＣ回路５０に跨ぎＥＣＣ処理非実行の指示を出し（ステップＳ１５０）、またＮＡＮＤＩ／Ｆ４０−０にデータ転送の実行許可を通知する（ステップＳ１７０）。これにより、ＮＡＮＤＩ／Ｆ４０−０によって、ＮＡＮＤＩ／Ｆ４０−０と一時記憶バッファ３０間のデータ転送が跨ぎＥＣＣ処理無しで実行される（ステップＳ１８０）。このデータ転送終了後、転送順管理部２３は、ラウンドロビンで決められた次のＮＡＮＤＩ／Ｆ４０−１からのデータ転送要求があるか否かを判定する（ステップＳ１９０）。
【００５６】
一方、ステップＳ１３０で、転送順管理部２３は、今回のデータ転送要求が跨ぎＥＣＣ処理の対象であると判断した場合は、ステップＳ１２０で読み取ったデータ転送要求の内容に基づき、このデータ転送要求で行われようとしている跨ぎＥＣＣ処理が次に跨ぎＥＣＣ処理を行わせるべきデータであるか否か、すなわちこのデータ転送要求に応答して即座に跨ぎＥＣＣ処理を伴うデータ転送を行わせた場合、そのＥＣＣ処理順は正しいか否かを、管理情報記憶部６０に記憶されたＥＣＣ処理順管理情報Ｅseqを用いて判定する（ステップＳ１４０）。転送順管理部２３は、今回のデータ転送要求がＥＣＣ処理順を守っていると判断した場合は、跨ぎＥＣＣ回路５０に、符号化か復号化かの識別情報を含む跨ぎＥＣＣ処理実行の指示を出し（ステップＳ１６０）、またＮＡＮＤＩ／Ｆ４０−０にデータ転送の実行許可を通知する（ステップＳ１７０）。これにより、ＮＡＮＤＩ／Ｆ４０−０によって、ＮＡＮＤＩ／Ｆ４０−０と一時記憶バッファ３０間のデータ転送が跨ぎＥＣＣ処理有りで実行される（ステップＳ１８０）。
【００５７】
しかし、ステップＳ１４０で、転送順管理部２３は、今回のデータ転送要求がＥＣＣ処理順を守っていないと判断した場合は、ＮＡＮＤＩ／Ｆ４０−０からの今回のデータ転送要求をスキップし、ラウンドロビンで決められた次のＮＡＮＤＩ／Ｆ４０−１からのデータ転送要求があるか否かを判定する（ステップＳ１９０）。
【００５８】
転送順管理部２３は、次のＮＡＮＤＩ／Ｆ４０−１からデータ転送要求があるか否かを判断する（ステップＳ１９０）。ＮＡＮＤＩ／Ｆ４０−１からデータ転送要求がある場合は、ステップＳ１２０〜Ｓ１８０の手順を前記同様にして実行し、ＮＡＮＤＩ／Ｆ４０−１からのデータ転送要求に対処する。ＮＡＮＤＩ／Ｆ４０−１からデータ転送要求がない場合は、全てのＮＡＮＤＩ／Ｆからの要求がないか否かを判定し（ステップＳ２００）、他のＮＡＮＤＩ／Ｆからの要求がある場合は、ＮＡＮＤＩ／Ｆ４０−２、４０−３からのデータ転送要求に対し、前述と同様の処理を実行する。ＮＡＮＤＩ／Ｆ４０−３からのデータ転送要求に対する処理が終了すると、再度ＮＡＮＤＩ／Ｆ４０−０に戻り、前述と同様の処理を実行する。このようにして、全てのＮＡＮＤＩ／Ｆ４０からのデータ転送要求がなくなると、転送順管理部２３は手順を終了する。
【００５９】
主制御部２１は、転送順管理部２３からの報告に基づき、１つの跨ぎ誤り訂正符号を構成する全てのデータ転送が終了したか否かを管理しており、１つの跨ぎ誤り訂正符号を構成する全てのデータ転送が終了した時点で跨ぎＥＣＣ回路５０に転送方向を含む冗長情報（符号化結果／復号化結果）の転送要求を通知する。転送方向とは、跨ぎＥＣＣ回路５０から一時記憶バッファ３０への転送か、跨ぎＥＣＣ回路５０からＮＡＮＤＩ／Ｆ４０への転送かを識別する情報である。この通知を受けた跨ぎＥＣＣ回路５０では、指示された転送方向に応じて、跨ぎＥＣＣ処理結果をＮＡＮＤＩ／Ｆ４０−４または一時記憶バッファ３０に転送する。
【００６０】
例えば、ホスト装置から要求された書き込み要求の場合は、１つの跨ぎ誤り訂正符号を構成する全てのデータ転送（一時記憶バッファ３０→ＮＡＮＤＩ／Ｆ４０−０〜４０−３）が終了した後に、跨ぎＥＣＣ回路５０から符号化結果がＮＡＮＤＩ／Ｆ４０−４に転送される。そして、ＮＡＮＤＩ／Ｆ４０−４は、主制御部２１からの命令で指定されたＮＡＮＤメモリ１０−４上の記憶位置に、跨ぎＥＣＣ回路５０から転送された符号化結果を書き込む。
【００６１】
次に、図８を用いて具体例について説明する。例えば、図８に示すように、ＮＡＮＤＩ／Ｆ４０−０から跨ぎＥＣＣ処理無しのリード要求が２つあり（Ｒｅａｄ＃１、Ｒｅａｄ＃２）、ＮＡＮＤＩ／Ｆ４０−１から跨ぎＥＣＣ処理有りのリード要求が１つあり、ＮＡＮＤＩ／Ｆ４０−２から跨ぎＥＣＣ処理有りのリード要求が１つあり、ＮＡＮＤＩ／Ｆ４０−３から跨ぎＥＣＣ処理有りのリード要求が１つある場合を想定する。この場合、跨ぎＥＣＣ処理は、図８に示すように、ＮＡＮＤＩ／Ｆ４０−２→ＮＡＮＤＩ／Ｆ４０−１→ＮＡＮＤＩ／Ｆ４０−３の順序で行う必要があるとする。
【００６２】
最初は、ＮＡＮＤＩ／Ｆ４０−０のデータ転送要求（Ｒｅａｄ＃１）が判断され、このデータ転送要求は跨ぎＥＣＣ処理を伴わないので、ＮＡＮＤＩ／Ｆ４０−０のデータ転送（Ｒｅａｄ＃１）が即座に実行される。次に、ＮＡＮＤＩ／Ｆ４０−１のデータ転送要求（復号化Ｒｅａｄ）が判断されるが、このデータ転送要求は復号化順を守っていないので、スキップされる。次に、ＮＡＮＤＩ／Ｆ４０−２のデータ転送要求（復号化Ｒｅａｄ）が判断されるが、このデータ転送要求は復号化順を守っているので、このＮＡＮＤＩ／Ｆ４０−２のデータ転送要求が即実行される。次に、ＮＡＮＤＩ／Ｆ４０−３のデータ転送要求（復号化Ｒｅａｄ）が判断されるが、このデータ転送要求は復号化順を守っていないので、スキップされる。
【００６３】
次に、ＮＡＮＤＩ／Ｆ４０−０のデータ転送要求（Ｒｅａｄ＃２）が判断され、このデータ転送要求は跨ぎＥＣＣ処理を伴わないので、ＮＡＮＤＩ／Ｆ４０−０のデータ転送（Ｒｅａｄ＃２）が即実行される。次に、ＮＡＮＤＩ／Ｆ４０−１のデータ転送要求（復号化Ｒｅａｄ）が判断されるが、このデータ転送要求は復号化順を守っているので、このＮＡＮＤＩ／Ｆ４０−１のデータ転送要求が即実行される。次に、ＮＡＮＤＩ／Ｆ４０−１のデータ転送要求が判断されるが、データ転送要求がないので、次にスキップされる。次に、ＮＡＮＤＩ／Ｆ４０−３のデータ転送要求（復号化Ｒｅａｄ）が判断されるが、このデータ転送要求は復号化順を守っているので、このＮＡＮＤＩ／Ｆ４０−３のデータ転送要求が即実行される。
【００６４】
次に、図９に示すフローチャートに従って主制御部２１で行われるページＥＣＣでの誤り訂正不可能な場合の動作手順について説明する。主制御部２１は、ＮＡＮＤＩ／Ｆ４０−０〜４０−３内の何れかのＥＣＣ回路４３から誤り訂正不可能（上述した誤訂正の発生）の報告があった場合（ステップＳ３００：Ｙｅｓ）、管理情報記憶部６０に記憶された図５に示したデータ−符号管理情報を用いて、誤りを検出したデータに対応する跨ぎ誤り訂正符号と、当該符号を生成するために使用された符号元データを特定する（ステップＳ３１０）。
【００６５】
さらに、主制御部２１は、特定した符号元データと特定した跨ぎ誤り訂正符号の読み出し順序を管理情報記憶部６０に記憶されたＥＣＣ処理順管理情報Ｅseqを用いて決定し、この決定結果を転送順管理部２３に指示する（ステップＳ３２０）。さらに、主制御部２１は、特定した符号元データと特定した跨ぎ誤り訂正符号の読み出し要求命令をＮＡＮＤＩ／Ｆ４０に通知する（ステップＳ３３０）。
【００６６】
これにより、特定した跨ぎ誤り訂正符号を構成する全ての符号元データ転送（ＮＡＮＤＩ／Ｆ４０−０〜４０−３→一時記憶バッファ３０）が終了した後に、ＮＡＮＤＩ／Ｆ４０−４から跨ぎＥＣＣ回路５０への跨ぎ誤り訂正符号のデータ転送が行われ、その後跨ぎＥＣＣ回路５０から復号化結果が一時記憶バッファ３０に転送される。
【００６７】
このように第１の実施形態によれば、一時記憶バッファ３０とＮＡＮＤＩ／Ｆ４０間で転送中のデータを用いて跨ぎＥＣＣ処理を実行し、跨ぎＥＣＣ処理の必要／不要を判断し、不要な場合は跨ぎＥＣＣ処理をスキップし、さらにＮＡＮＤＩ／Ｆ４０側の要求に関係なく跨ぎＥＣＣ処理順序を守って一時記憶バッファ３０とＮＡＮＤＩ／Ｆ４０間でのデータ転送を実行することとしたので、一時記憶バッファのバンド幅を圧迫することなく、スループット、システム性能を向上させることが可能となる。
【００６８】
なお、上記実施形態においては、転送順管理部２３は、ラウンドロビンによって決められた順番でＮＡＮＤＩ／Ｆ４０からのデータ転送要求を判断する機能を備えることとしたが、ＮＡＮＤＩ／Ｆ４０からデータ転送要求が入力された順番にＮＡＮＤＩ／Ｆ４０からデータ転送要求の内容を判断する機能を備えるようにしてもよく、この判断結果に基づいてＮＡＮＤＩ／Ｆ４０に対するデータ転送の実行の許可を与えるとともに、跨ぎＥＣＣ回路５０でのＥＣＣ処理の制御を行う。
【００６９】
また、転送順管理部２３において、ＮＡＮＤＩ／Ｆ４０からのデータ転送要求の内容に基づき、当該データ転送要求がＥＣＣ処理を実行するか否かと、符号化か復号化かを判定することとしてもよい。そして、ＥＣＣ処理を実行すると判断し、かつ符号化であると判断した場合は、跨ぎＥＣＣ回路５０による跨ぎＥＣＣ処理を実行させて当該データ転送を即座に実行し、符号化したデータの順序を前述したＥＣＣ処理順管理情報Ｅseqとして記録する。また、ＥＣＣ処理を実行すると判断し、かつ復号化であると判断した場合は、符号化時に記録したＥＣＣ処理順管理情報Ｅseqを元に復号化順に従っているかを判定し、復号化順に従っている場合は跨ぎＥＣＣ回路５０による跨ぎＥＣＣ処理を実行させて当該データ転送を即座に実行し、復号化順に従っていない場合は当該データ転送をスキップして他のＮＡＮＤＩ／Ｆ４０からのデータ転送要求の判断を行う。
【００７０】
（第２の実施形態）
第２の実施形態では、跨ぎＥＣＣ回路５０で採用する誤り訂正符号化方式として、パリティ（排他的論理和）のような、符号化／復号化順序に制約がない方式を採用する。パリティを採用した場合は、各ＮＡＮＤＩ／Ｆ４０−０〜４０−３のＥＣＣ回路４３−０〜４３−３でのページＥＣＣ処理の誤り訂正結果に基づき誤り位置（誤りチャネル）を検出し、この検出結果に基づいて誤り訂正復号化を行う。すなわち、図４に示したように、誤り訂正不可能なチャネルを除いた他のチャネルのデータと、符号を用いて復号化が行われる。
【００７１】
図１０は、第２の実施形態での転送順管理部２３の動作手順を示すフローチャートである。図１０に示すフローチャートでは、図７に示した動作手順におけるステップＳ１４０での処理を無くしている。
【００７２】
まず、転送順管理部２３は、チャネルｃｈ０のＮＡＮＤＩ／Ｆ４０−０からのデータ転送要求があるか否かを判断する（ステップＳ１００、Ｓ１１０）。データ転送要求がない場合は、手順をステップＳ１９０に移行する。データ転送要求がある場合は、データ転送要求の内容を読み取り（ステップＳ１２０）、この読み取り内容におけるデータ転送要求に付加されている跨ぎＥＣＣオンオフ情報Ｅflagに基づきこのデータ転送が跨ぎＥＣＣ処理の対象か否かを判断する（ステップＳ１３０）。
【００７３】
転送順管理部２３は、このデータ転送要求が跨ぎＥＣＣ処理の非対象であると判断した場合は、跨ぎＥＣＣ回路５０に跨ぎＥＣＣ処理非実行の指示を出し（ステップＳ１５０）、またＮＡＮＤＩ／Ｆ４０−０にデータ転送の実行許可を通知する（ステップＳ１７０）。これにより、ＮＡＮＤＩ／Ｆ４０−０によって、ＮＡＮＤＩ／Ｆ４０−０と一時記憶バッファ３０間のデータ転送が跨ぎＥＣＣ処理なしで実行される（ステップＳ１８０）。このデータ転送終了後、転送順管理部２３は、ラウンドロビンで決められた次のＮＡＮＤＩ／Ｆ４０−１からの次のデータ転送要求があるか否かを判定する（ステップＳ１９０）。
【００７４】
一方、ステップＳ１３０で、転送順管理部２３は、今回のデータ転送要求が跨ぎＥＣＣ処理の対象であると判断した場合は、跨ぎＥＣＣ回路５０に、符号化か復号化かの識別情報を含む跨ぎＥＣＣ処理実行の指示を出し（ステップＳ１６０）、またＮＡＮＤＩ／Ｆ４０−０にデータ転送の実行許可を通知する（ステップＳ１７０）。これにより、ＮＡＮＤＩ／Ｆ４０−０によって、ＮＡＮＤＩ／Ｆ４０−０と一時記憶バッファ３０間のデータ転送が跨ぎＥＣＣ処理ありで実行される（ステップＳ１８０）。
【００７５】
転送順管理部２３は、つぎのＮＡＮＤＩ／Ｆ４０−１からデータ転送要求があるか否かを判断する（ステップＳ１９０）。ＮＡＮＤＩ／Ｆ４０−１からデータ転送要求がある場合は、ステップＳ１２０〜Ｓ１８０の手順を前記同様にして実行し、ＮＡＮＤＩ／Ｆ４０−１からのデータ転送要求に対処する。ＮＡＮＤＩ／Ｆ４０−１からデータ転送要求がない場合は、全てのＮＡＮＤＩ／Ｆからの要求があるか否かを判定し（ステップＳ２００）、他のＮＡＮＤＩ／Ｆからの要求がある場合は、ＮＡＮＤＩ／Ｆ４０−２、４０−３からのデータ転送要求に対し、前述と同様の処理を実行する。ＮＡＮＤＩ／Ｆ４０−３からのデータ転送要求に対する処理が終了すると、再度ＮＡＮＤＩ／Ｆ４０−０に戻り、前述と同様の処理を実行する。このようにして、全てのＮＡＮＤＩ／Ｆ４０からのデータ転送要求がなくなると、転送順管理部２３は手順を終了する。
【００７６】
このように第２の実施形態によれば、一時記憶バッファ３０とＮＡＮＤＩ／Ｆ４０間で転送中のデータを用いて跨ぎＥＣＣ処理を実行し、跨ぎＥＣＣ処理の必要／不要を判断し、不要な場合は跨ぎＥＣＣ処理をスキップすることとしたので、一時記憶バッファのバンド幅を圧迫することなく、スループット、システム性能を向上させることが可能となる。
【００７７】
（第３の実施の形態）
図１１は、ＳＳＤ２００を搭載したパーソナルコンピュータ１２００の一例を示す斜視図である。パーソナルコンピュータ１２００は、本体１２０１、及び表示ユニット１２０２を備えている。表示ユニット１２０２は、ディスプレイハウジング１２０３と、このディスプレイハウジング１２０３に収容された表示装置１２０４とを備えている。
【００７８】
本体１２０１は、筐体１２０５と、キーボード１２０６と、ポインティングデバイスであるタッチパッド１２０７とを備えている。筐体１２０５内部には、メイン回路基板、ＯＤＤ（Optical  Disk  Device）ユニット、カードスロット、及びＳＳＤ１００等が収容されている。
【００７９】
カードスロットは、筐体１２０５の周壁に隣接して設けられている。周壁には、カードスロットに対向する開口部１２０８が設けられている。ユーザは、この開口部１２０８を通じて筐体１２０５の外部から追加デバイスをカードスロットに挿抜することが可能である。
【００８０】
ＳＳＤ１００は、従来のＨＤＤの置き換えとして、パーソナルコンピュータ１２００内部に実装された状態として使用してもよいし、パーソナルコンピュータ１２００が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
【００８１】
図１２は、ＳＳＤを搭載したパーソナルコンピュータのシステム構成例を示している。パーソナルコンピュータ１２００は、ＣＰＵ１３０１、ノースブリッジ１３０２、主メモリ１３０３、ビデオコントローラ１３０４、オーディオコントローラ１３０５、サウスブリッジ１３０９、ＢＩＯＳ−ＲＯＭ１３１０、ＳＳＤ１００、ＯＤＤユニット１３１１、エンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１３１２、及びネットワークコントローラ１３１３等を備えている。
【００８２】
ＣＰＵ１３０１は、パーソナルコンピュータ１２００の動作を制御するために設けられたプロセッサであり、ＳＳＤ１００から主メモリ１３０３にロードされるオペレーティングシステム（ＯＳ）を実行する。更に、ＯＤＤユニット１３１１が、装填された光ディスクに対して読出し処理及び書込み処理の少なくとも１つの処理の実行を可能にした場合に、ＣＰＵ１３０１は、それらの処理の実行をする。
【００８３】
また、ＣＰＵ１３０１は、ＢＩＯＳ−ＲＯＭ１３１０に格納されたシステムＢＩＯＳ（Basic  Input  Output  System）も実行する。尚、システムＢＩＯＳは、パーソナルコンピュータ１２００内のハードウェア制御のためのプログラムである。
【００８４】
ノースブリッジ１３０２は、ＣＰＵ１３０１のローカルバスとサウスブリッジ１３０９との間を接続するブリッジデバイスである。ノースブリッジ１３０２には、主メモリ１３０３をアクセス制御するメモリコントローラも内蔵されている。
【００８５】
また、ノースブリッジ１３０２は、ＡＧＰ（Accelerated  Graphics  Port）バス等を介してビデオコントローラ１３０４との通信、及びオーディオコントローラ１３０５との通信を実行する機能も有している。
【００８６】
主メモリ１３０３は、プログラムやデータを一時的に記憶し、ＣＰＵ１３０１のワークエリアとして機能する。主メモリ１３０３は、例えばＲＡＭから構成される。
【００８７】
ビデオコントローラ１３０４は、パーソナルコンピュータ１２００のディスプレイモニタとして使用される表示ユニット１２０２を制御するビデオ再生コントローラである。
【００８８】
オーディオコントローラ１３０５は、パーソナルコンピュータ１２００のスピーカ１３０６を制御するオーディオ再生コントローラである。
【００８９】
サウスブリッジ１３０９は、ＬＰＣ（Low  Pin  Count）バス１３１４上の各デバイス、及びＰＣＩ（Peripheral  Component  Interconnect）バス１３１５上の各デバイスを制御する。また、サウスブリッジ１３０９は、各種ソフトウェア及びデータを格納する記憶装置であるＳＳＤ１００を、ＡＴＡインタフェースを介して制御する。
【００９０】
パーソナルコンピュータ１２００は、セクタ単位でＳＳＤ１００へのアクセスを行う。ＡＴＡインタフェースを介して、書き込みコマンド、読出しコマンド、キャッシュフラッシュコマンド等がＳＳＤ１００に入力される。
【００９１】
また、サウスブリッジ１３０９は、ＢＩＯＳ−ＲＯＭ１３１０、及びＯＤＤユニット１３１１をアクセス制御するための機能も有している。
【００９２】
ＥＣ／ＫＢＣ１３１２は、電力管理のためのエンベデッドコントローラと、キーボード（ＫＢ）１２０６及びタッチパッド１２０７を制御するためのキーボードコントローラとが集積された１チップマイクロコンピュータである。
【００９３】
このＥＣ／ＫＢＣ１３１２は、ユーザによるパワーボタンの操作に応じてパーソナルコンピュータ１２００の電源をＯＮ／ＯＦＦする機能を有している。ネットワークコントローラ１３１３は、例えばインターネット等の外部ネットワークとの通信を実行する通信装置である。
【００９４】
[変形例]
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【００９５】
上述した実施の形態において、ＥＣＣ回路４３で行われるページＥＣＣとしてはページ単位のデータ毎にＥＣＣ符号を付加しているが、ページより小さな単位（例として５１２バイトのセクター単位）でＥＣＣ符号を付加することも可能である。このような構成において、ページより小さな単位でデータの誤りが訂正できなかった場合は、当該データに異常が発生したとして、複数のチャネルにより構成された跨ぎＥＣＣ処理を用いて、当該データを復元すれば良い。また、ＥＣＣ回路４３で行われるＥＣＣ処理として、ページより大きくブロックより小さい単位でＥＣＣ符号を付加することも可能である。
【００９６】
上述した実施の形態において、複数のチャネルで跨ぎ誤り訂正符号を構成する単位を、バイトとしたが、これに限らず、バイトよりも大きいサイズや小さいサイズを単位としても良い。
【００９７】
上述した実施の形態において、跨ぎＥＣＣ処理においては、データを書き込むチャネル数を４つとし、これらのデータに対する冗長情報を書き込むチャネル数を１つとして、誤り訂正符号を構成するチャネル数を５つとしたが、これに限らない。また、跨ぎＥＣＣ処理の冗長情報を書き込むためのチャネルをチャネルｃｈ４に固定したが、これに限らず、誤り訂正符号を構成する単位毎にチャネルを変更するようにしても良い。
【００９８】
上述した実施の形態において、チャネルとＮＡＮＤメモリチップとは１対１に対応させるようにしたが、これに限らず、チャネルとＮＡＮＤメモリチップとが１対複数で対応させる、即ち、１つのチャネルに対して複数のＮＡＮＤメモリチップが割り当てられるようにしても良い。
【００９９】
上述した実施の形態において、書き込み対象データに対してチャネルを割り当てる際、チャネルｃｈ０〜ｃｈ３のうち少なくとも１つへの割り当て後、書き込み対象データがない状態が一定時間以上継続した場合、チャネルｃｈ０〜ｃｈ３のうち書き込み対象データの割り当てのないチャネルにおいて、該当のページにダミーデータ（例えば全てのビットが「０」のデータ）を書き込んで、チャネルｃｈ０〜ｃｈ３において対応する各ページのデータを用いて計算した冗長情報を、チャネルｃｈ４の対応するページを書き込むようにする。このような構成によれば、チャネルｃｈ０〜ｃｈ３の各々対応するページのうち書き込みの既に済んでいるチャネルのデータについて、誤り訂正符号が構成されず、当該データに誤りがあった場合に復元できない恐れを回避することが可能になる。
【符号の説明】
【０１００】
１０  ＮＡＮＤメモリ、２０  コントローラ、２１  主制御部、２２  跨ぎＥＣＣ処理判断部、２３  転送順管理部、３０  一時記憶バッファ、４０  ＮＡＮＤＩ／Ｆ、４１  ＤＭＡコントローラ、４３  ＥＣＣ回路、４４  メモリＩ／Ｆ、４５  ＮＡＮＤＩ／Ｆ制御部、５０  跨ぎＥＣＣ回路、６０  管理情報記憶部、１５０  ホストＩ／Ｆ。
【図１】
2012128660.tif 000003
【図２】
2012128660.tif 000004
【図３】
2012128660.tif 000005
【図４】
2012128660.tif 000006
【図５】
2012128660.tif 000007
【図６】
2012128660.tif 000008
【図７】
2012128660.tif 000009
【図８】
2012128660.tif 000010
【図９】
2012128660.tif 000011
【図１０】
2012128660.tif 000012
【図１１】
2012128660.tif 000013
【図１２】
2012128660.tif 000014