(57)【要約】【課題】関連性のないパリティデータによる誤訂正を防止することができる半導体記録装置及びその制御方法等を提供する。【解決手段】ユーザデータ及びパリティデータを記録するためのフラッシュメモリ１８と、フラッシュメモリ１８にユーザデータの記録を指示する第１のライトコマンドを受信する外部インターフェイス部１０と、パリティデータの有効又は無効を示す管理情報を管理するブロック管理部１２とを備える。ブロック管理部１２は、外部インターフェイス部１０を介して受信した第１のライトコマンドに関連するユーザデータがフラッシュメモリ１８に記録される際に、当該ユーザデータに対応するパリティデータが無効であることを示すように管理情報を更新する。【選択図】図２
2011154676.tif 000002
【特許請求の範囲】
【請求項１】
ユーザデータ及びパリティデータを記録するための不揮発性メモリと、
前記不揮発性メモリに前記ユーザデータの記録を指示する第１のライトコマンドを受信するインターフェイス部と、
前記パリティデータの有効又は無効を示す管理情報を管理する管理部とを備え、
前記管理部は、
前記インターフェイス部を介して受信した前記第１のライトコマンドに関連するユーザデータが前記不揮発性メモリに記録される際に、当該ユーザデータに対応するパリティデータが無効であることを示すように前記管理情報を更新する
半導体記録装置。
【請求項２】
さらに、前記管理情報が登録される管理テーブルを備え、
前記管理部は、前記管理テーブルに登録された前記管理情報を更新することにより、当該管理情報を管理する
請求項１に記載の半導体記録装置。
【請求項３】
前記不揮発性メモリは、消去単位であるブロックによって構成されており、
前記管理情報は、前記ブロック単位で前記管理テーブルに登録されている
請求項２に記載の半導体記録装置。
【請求項４】
前記不揮発性メモリは、複数のページからなるブロックによって構成されており、
前記管理情報は、記録可能な最小単位である前記ページ単位で前記管理テーブルに登録されている
請求項２に記載の半導体記録装置。
【請求項５】
前記インターフェイス部は、前記パリティデータの記録を指示する第２のライトコマンドを受信し、
さらに、受信したコマンドが前記第１のライトコマンドであるか前記第２のライトコマンドであるかを識別するためのコマンド解析部を備え、
前記管理部は、
前記コマンド解析部によって前記受信したライトコマンドが前記第１のライトコマンドであると識別された場合に、前記パリティデータが無効であることを示すように前記管理情報を更新し、前記コマンド解析部によって前記受信したライトコマンドが前記第２のライトコマンドであると識別された場合に、前記パリティデータが有効であることを示すように前記管理情報を更新する
請求項１〜４のいずれか１項に記載の半導体記録装置。
【請求項６】
前記外部インターフェイス部は、前記第１のライトコマンドを受信した後に、前記第２のライトコマンドを受信し、
前記管理部は、前記第１のライトコマンドによって前記パリティデータが無効であることを示すように前記管理情報を更新した後に、前記第２のライトコマンドによって前記パリティデータが有効であることを示すように前記管理情報を更新する
請求項５に記載の半導体記録装置。
【請求項７】
さらに、前記第１のライトコマンド関連する前記ユーザデータに対応する前記パリティデータを生成して、当該ユーザデータと当該パリティデータとを含むＥＣＣ符号を生成するためのＥＣＣ処理部を備える
請求項１〜４のいずれか１項に記載の半導体記録装置。
【請求項８】
さらに、前記第１のライトコマンドを解析して、前記第１のライトコマンドのサイズが所定サイズの整数倍であるか否かを検出するコマンド解析部を備え、
前記ＥＣＣ処理部は、前記コマンド解析部によって前記第１のライトコマンドのサイズが前記所定サイズの整数倍であると検出された場合に前記ＥＣＣ符号を生成し、前記コマンド解析部によって前記第１のライトコマンドのサイズが前記所定サイズの整数倍でないと検出された場合に前記ＥＣＣ符号を生成しない
請求項７に記載の半導体記録装置。
【請求項９】
前記管理部は、前記コマンド解析部によって前記第１のライトコマンドのサイズが前記所定サイズの整数倍であると検出された場合に、前記記録済みのパリティデータが有効であることを示すように前記管理情報を更新し、前記コマンド解析部によって前記第１のライトコマンドのサイズが前記所定サイズの整数倍でないと検出された場合に、前記記録済みのパリティデータが無効であることを示すように前記管理情報を更新する
請求項８に記載の半導体記録装置。
【請求項１０】
ホスト機器と半導体記録装置からなる半導体記録システムであって、
前記ホスト機器は、
前記半導体記録装置との間でコマンドの送受信を行う外部インターフェイス部と、
ユーザデータに対するパリティデータを生成し、前記ユーザデータと前記パリティデータとを含むＥＣＣ符号を生成するＥＣＣ処理部と、
前記ユーザデータに関連する第１のライトコマンドを生成する第１のコマンド処理部と、
前記パリティデータに関連する第２のライトコマンドを生成する第２のコマンド処理部とを備え、
前記半導体記録装置は、
前記ユーザデータ及び前記パリティデータを記録するための不揮発性メモリと、
前記不揮発性メモリに前記ユーザデータの記録を指示する第１のライトコマンドを受信するインターフェイス部と、
前記パリティデータの有効又は無効を示す管理情報を管理する管理部とを備え、
前記管理部は、
前記外部インターフェイス部を介して受信した前記第１のライトコマンド関連するユーザデータが前記不揮発性メモリに記録される際に、当該ユーザデータに対応するパリティデータが無効であることを示すように前記管理情報を更新する
半導体記録システム。
【請求項１１】
前記ホスト機器は、
前記外部インターフェイス部を介して第１のライトコマンド及び第２のライトコマンドを前記半導体記録装置に送信する際に、前記第１のライトコマンドを送信した後で、前記第２のライトコマンドを送信し、
前記半導体記録装置は、さらに、
前記管理情報が登録される管理テーブルを備え、
前記管理部は、
前記第１のライトコマンドに対応するユーザデータの記録開始時において、前記パリティデータが無効であることを示すように前記管理情報を更新し、前記第２のライトコマンドに対応するパリティデータの記録終了時に、前記パリティデータが有効であることを示すように前記管理情報を更新する
請求項１０に記載の半導体記録システム。
【請求項１２】
前記管理部は、
前記第２のライトコマンドにかかるライト処理を選択的に実施する
請求項１０又は１１に記載の半導体記録システム。
【請求項１３】
前記第１のコマンド処理部は、
汎用ドライバを用いて前記第１のライトコマンドを生成する
請求項１０〜１２のいずれか１項に記載の半導体記録システム。
【請求項１４】
前記管理部は、
前記第２のライトコマンドに対応するパリティデータを、汎用ドライバではアクセスすることができない前記不揮発性メモリの領域に記録する
請求項１０〜１３のいずれか１項に記載の半導体記録システム。
【請求項１５】
ユーザデータ及びパリティデータを記録するための不揮発性メモリと、前記不揮発性メモリに前記ユーザデータの記録を指示する第１のライトコマンドを受信するインターフェイス部と、前記パリティデータの有効又は無効を示す管理情報を管理する管理部とを備える半導体記録装置の制御方法であって、
前記インターフェイス部を介して受信した前記第１のライトコマンドに関連するユーザデータが前記不揮発性メモリに記録される際に、当該ユーザデータに対応するパリティデータが無効であることを示すように前記管理情報を更新する
半導体記録装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリカードなどの半導体記録装置及びその制御方法並びに半導体記録システムに関し、特に、半導体記録装置内部における不揮発性メモリのデータ保持特性のバラツキ及び書き換え回数に伴う劣化を抑制する制御手法等に関する。
【背景技術】
【０００２】
従来、フラッシュメモリが内蔵されたカード型の記録媒体であるＳＤ（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）カード等の半導体記録装置は、超小型、超薄型であり、その取り扱い易さから、ディジタルカメラ、携帯機器等において画像等のデータを記録するために広く利用されている。
【０００３】
半導体記録装置に内蔵されているフラッシュメモリは、一定サイズの多数の物理ブロックから成り、物理ブロックの単位でデータを消去できるメモリである。昨今の大容量化の要請に対応すべく、フラッシュメモリは１セルで２ビット以上のデータが蓄積できる多値フラッシュメモリが商品化されている。
【０００４】
多値フラッシュメモリの一例として４値フラッシュメモリについて、図１を用いて説明する。図１は、４値フラッシュメモリのフローティングゲートに蓄積する電子の蓄積状態と閾値電圧（Ｖｔｈ）との関係を示す図である。
【０００５】
図１に示すように、４値のフラッシュメモリでは、フローティングゲートの電子の蓄積状態をその閾値電圧（Ｖｔｈ）に従って４状態で管理する。図１において、蓄積する電子の数（電子のチャージ量）が少なく電位が一番低い状態は、消去状態であり、これを（１，１）とする。そして電子が蓄積していくにつれて閾値電圧が離散的に上昇し、その状態を夫々、（１，０）、（０，０）、（０，１）とする。このように、蓄積する電子の数に比例して電位が上昇するので、所定の電位の閾値に収まるように電子の蓄積状態を４状態で制御することができる。これによって、１つのメモリセルに２ビットのデータを記録することができる。
【０００６】
しかしながら、４値フラッシュメモリにおいては、電子のチャージ量によって４状態を識別するために、４値フラッシュメモリにおける各状態間の閾値電圧の差が、２値フラッシュメモリにおける状態間の閾値電圧の差よりも小さい。
【０００７】
また、データの書き換えが繰り返し行われると、電子の注入と引き抜きによってゲート酸化膜にわずかな損傷が発生する。この損傷が積み重なると電子トラップが数多く形成されるため、実際のフローティングゲートに蓄積される電子数が減少してしまう。さらに、半導体プロセスの微細化に比例してフローティングゲートに蓄積される電子数が少なくなるため、フラッシュメモリの微細化が進むと電子トラップの影響は大きくなる。
【０００８】
このように、フラッシュメモリの大容量化を支える多値記録及び半導体プロセスの微細化に従い、フラッシュメモリのデータ保持特性の劣化といった課題が顕著になってきた。
【０００９】
上記のフラッシュメモリのデータ保持特性の改善手法として、エラー訂正能力を強化する手法が提案されている。
【００１０】
例えば、特許文献１では、複数チップで構成されたフラッシュメモリにおいて、フラッシュメモリの互いに異なるチップ内のブロックを関連付け、関連付けられた複数のブロックを共通のグループとして取り扱い、グループ内の１ブロックを当該グループ内の他のブロックに書き込まれたユーザデータのパリティ用のブロックに割当てることにより、誤り訂正能力を強化し、フラッシュメモリのデータ保持特性の劣化を抑制している。
【００１１】
そして、ホスト機器から発行される論理アドレスと当該論理アドレスに対応するユーザデータライト領域とパリティデータライト領域との関連付けに関して、従来、以下の２方式が提案されている。
【００１２】
従来方式１は、複数個のフラッシュメモリチップを内蔵した半導体記録装置において、１個のフラッシュメモリチップをパリティデータのライト領域として用い、それ以外のフラッシュメモリチップをユーザデータのライト領域として用いる方法である（本方式は、ハードディスクのＲＡＩＤ４に相当する）。
【００１３】
従来方式２は、ユーザデータライト領域及びパリティデータライト領域をフラッシュメモリのページ単位で区分けし、パリティデータライト領域にかかるフラッシュメモリチップを順番に移動することによって、パリティデータを各フラッシュメモリチップに略均等に割り当て、ホスト機器が発行する論理アドレスとの対応関係を一意に定めたテーブルを記録する方法である（本方式は、ハードディスクのＲＡＩＤ５に相当する）。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開２００６−１８３７３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１５】
上記のような半導体記録装置の構成を、メモリカードのような着脱型の半導体記録装置に適応する場合、メモリカードにパリティ処理回路を内蔵する第１の手法と、メモリカードの外部にパリティ処理回路を実装する第２の手法が想定される。
【００１６】
メモリカードにパリティ処理回路を内蔵する第１の手法は、専用のハードを必要とするため、安価なメモリカードを提供できないといった課題がある。一方、メモリカードの外部にパリティ処理回路を実装する第２の手法は、パリティ処理をホスト機器のＣＰＵを利用すれば、比較的安価に実現可能である。
【００１７】
第２の手法を汎用ＰＣに適応する場合は、アプリケーションでパリティデータを発生させファイルとして記録する（ａ）方式と、メモリカードの専用ドライバでパリティデータを発生して記録する（ｂ）方式とが想定される。
【００１８】
（ａ）方式では、ユーザデータとそれに関連するパリティデータが所定の関係を維持した論理アドレスに対応づけてライトされないといった課題があり、フラッシュメモリのデータ保持特性の改善手法としては有効でない。
【００１９】
また、（ｂ）方式では、ユーザデータとそれに関連するパリティデータが所定の関係を維持した論理アドレスに対応づけてライトされる。
【００２０】
しかしながら、専用ドライバによってパリティデータがライト済みのメモリカードに、パリティデータ処理機能がない汎用ドライバによってユーザデータが上書きされてしまった場合、汎用ドライバでライトしたユーザデータとライト済みパリティデータとの関連性が消失してしまう。この場合、上書き後のユーザデータに発生したエラーを、当該ユーザデータとは関連性のないパリティデータで訂正すると、誤訂正になってしまうといった課題がある。
【００２１】
本発明は、上記課題を解決するものであり、関連性のないパリティデータによる誤訂正を防止することができる半導体記録装置及びその制御方法等を提供することを目的とする。
【課題を解決するための手段】
【００２２】
この課題を解決するために、本発明に係る半導体記録装置は、ユーザデータ及びパリティデータを記録するための不揮発性メモリと、前記不揮発性メモリに前記ユーザデータの記録を指示する第１のライトコマンドを受信するインターフェイス部と、前記パリティデータの有効又は無効を示す管理情報を管理する管理部とを備え、前記管理部は、前記インターフェイス部を介して受信した前記第１のライトコマンドに関連するユーザデータが前記不揮発性メモリに記録される際に、当該ユーザデータに対応するパリティデータが無効であることを示すように前記管理情報を更新するものである。
【００２３】
この構成により、第１のライトコマンドに関連するユーザデータを不揮発性メモリに記録する際に、当該第１のライトコマンドで指定された領域に記録済みとなっているパリティデータを無効化するので、ユーザデータとパリティデータとの不整合を検出することができる。
【００２４】
さらに、本発明に係る半導体記録装置において、前記管理情報が登録される管理テーブルを備え、前記管理部は、前記管理テーブルに登録された前記管理情報を更新することにより、当該管理情報を管理することが好ましい。
【００２５】
さらに、本発明に係る半導体記録装置において、前記不揮発性メモリは、消去単位であるブロックによって構成されており、前記管理情報は、前記ブロック単位で前記管理テーブルに登録されていることが好ましい。
【００２６】
さらに、本発明に係る半導体記録装置において、前記不揮発性メモリは、複数のページからなるブロックによって構成されており、前記管理情報は、記録可能な最小単位である前記ページ単位で前記管理テーブルに登録されていることが好ましい。
【００２７】
さらに、本発明に係る半導体記録装置において、前記インターフェイス部は、前記パリティデータの記録を指示する第２のライトコマンドを受信し、受信したコマンドが前記第１のライトコマンドであるか前記第２のライトコマンドであるかを識別するためのコマンド解析部を備え、前記管理部は、前記コマンド解析部によって前記受信したライトコマンドが前記第１のライトコマンドであると識別された場合に、前記パリティデータが無効であることを示すように前記管理情報を更新し、前記コマンド解析部によって前記受信したライトコマンドが前記第２のライトコマンドであると識別された場合に、前記パリティデータが有効であることを示すように前記管理情報を更新することが好ましい。
【００２８】
さらに、本発明に係る半導体記録装置において、前記外部インターフェイス部は、前記第１のライトコマンドを受信した後に、前記第２のライトコマンドを受信し、前記管理部は、前記第１のライトコマンドによって前記パリティデータが無効であることを示すように前記管理情報を更新した後に、前記第２のライトコマンドによって前記パリティデータが有効であることを示すように前記管理情報を更新することが好ましい。
【００２９】
さらに、本発明に係る半導体記録装置において、前記第１のライトコマンド関連する前記ユーザデータに対応する前記パリティデータを生成して、当該ユーザデータと当該パリティデータとを含むＥＣＣ符号を生成するためのＥＣＣ処理部を備えることが好ましい。
【００３０】
さらに、本発明に係る半導体記録装置において、前記第１のライトコマンドを解析して、前記第１のライトコマンドのサイズが所定サイズの整数倍であるか否かを検出するコマンド解析部を備え、前記ＥＣＣ処理部は、前記コマンド解析部によって前記第１のライトコマンドのサイズが前記所定サイズの整数倍であると検出された場合に前記ＥＣＣ符号を生成し、前記コマンド解析部によって前記第１のライトコマンドのサイズが前記所定サイズの整数倍でないと検出された場合に前記ＥＣＣ符号を生成しないことが好ましい。
【００３１】
さらに、本発明に係る半導体記録装置において、前記管理部は、前記コマンド解析部によって前記第１のライトコマンドのサイズが前記所定サイズの整数倍であると検出された場合に、前記記録済みのパリティデータが有効であることを示すように前記管理情報を更新し、前記コマンド解析部によって前記第１のライトコマンドのサイズが前記所定サイズの整数倍でないと検出された場合に、前記記録済みのパリティデータが無効であることを示すように前記管理情報を更新することが好ましい。
【００３２】
また、本発明に係る半導体記録システムは、ホスト機器と半導体記録装置からなる半導体記録システムであって、前記ホスト機器は、前記半導体記録装置との間でコマンドの送受信を行う外部インターフェイス部と、ユーザデータに対するパリティデータを生成し、前記ユーザデータと前記パリティデータとを含むＥＣＣ符号を生成するＥＣＣ処理部と、前記ユーザデータに関連する第１のライトコマンドを生成する第１のコマンド処理部と、前記パリティデータに関連する第２のライトコマンドを生成する第２のコマンド処理部とを備え、前記半導体記録装置は、前記ユーザデータ及び前記パリティデータを記録するための不揮発性メモリと、前記不揮発性メモリに前記ユーザデータの記録を指示する第１のライトコマンドを受信するインターフェイス部と、前記パリティデータの有効又は無効を示す管理情報を管理する管理部とを備え、前記管理部は、前記外部インターフェイス部を介して受信した前記第１のライトコマンド関連するユーザデータが前記不揮発性メモリに記録される際に、当該ユーザデータに対応するパリティデータが無効であることを示すように前記管理情報を更新するものである。
【００３３】
さらに、本発明に係る半導体記録システムにおいて、前記ホスト機器は、前記外部インターフェイス部を介して第１のライトコマンド及び第２のライトコマンドを前記半導体記録装置に送信する際に、前記第１のライトコマンドを送信した後で、前記第２のライトコマンドを送信し、前記半導体記録装置は、さらに、前記管理情報が登録される管理テーブルを備え、前記管理部は、前記第１のライトコマンドに対応するユーザデータの記録開始時において、前記パリティデータが無効であることを示すように前記管理情報を更新し、前記第２のライトコマンドに対応するパリティデータの記録終了時に、前記パリティデータが有効であることを示すように前記管理情報を更新することが好ましい。
【００３４】
さらに、本発明に係る半導体記録システムにおいて、前記管理部は、前記第２のライトコマンドにかかるライト処理を選択的に実施することが好ましい。
【００３５】
さらに、本発明に係る半導体記録システムにおいて、前記第１のコマンド処理部は、汎用ドライバを用いて前記第１のライトコマンドを生成することが好ましい。
【００３６】
さらに、本発明に係る半導体記録システムにおいて、前記管理部は、前記第２のライトコマンドに対応するパリティデータを、汎用ドライバではアクセスすることができない前記不揮発性メモリの領域に記録することが好ましい。
【００３７】
また、本発明に係る半導体記録装置の制御方法は、ユーザデータ及びパリティデータを記録するための不揮発性メモリと、前記不揮発性メモリに前記ユーザデータの記録を指示する第１のライトコマンドを受信するインターフェイス部と、前記パリティデータの有効又は無効を示す管理情報を管理する管理部とを備える半導体記録装置の制御方法であって、前記インターフェイス部を介して受信した前記第１のライトコマンドに関連するユーザデータが前記不揮発性メモリに記録される際に、当該ユーザデータに対応するパリティデータが無効であることを示すように前記管理情報を更新するものである。
【発明の効果】
【００３８】
本発明によれば、第１のライトコマンドに対応するユーザデータのライト終了直後に半導体記録装置の取り外し等が発生したとしても、当該ユーザデータと関連づけられているパリティデータが無効化されているので、ユーザデータとパリティデータの不整合を検出することができる。これにより、ユーザデータのリードエラーが発生した場合において、ユーザデータと不整合となっているパリティデータの使用を禁止することができるので、当該ユーザデータとの関連性のないパリティデータによって訂正を行うことによって生じる誤訂正を防止することができる。
【図面の簡単な説明】
【００３９】
【図１】図１は、４値フラッシュメモリのフローティングゲートに蓄積する電子の蓄積状態と閾値電圧（Ｖｔｈ）との関係を示す図である。
【図２】図２は、本発明の実施の形態１に係る半導体記録システムの全体構成を示す図である。
【図３】図３は、本発明の実施の形態１に係る半導体記録装置におけるフラッシュメモリの内部構成を示す図である。
【図４】図４は、本発明の実施の形態１に係る半導体記録システムにおける論理ブロックとパリティブロックとの関係を示す概念図である。
【図５Ａ】図５Ａは、本発明の実施の形態１に係る半導体記録装置についての論理ブロックにおける論物変換テーブルの一例を示す図である。
【図５Ｂ】図５Ｂは、本発明の実施の形態１に係る半導体記録装置についてのパリティブロックにおける論物変換テーブルの一例を示す図である。
【図６】図６は、本発明の実施の形態１に係る半導体記録装置におけるＥＣＣパリティ管理テーブルの一例を示す図である。
【図７】図７は、本発明の実施の形態１に係る半導体記録システムにおけるライト動作のフローチャートである。
【図８】図８は、本発明の実施の形態１に係る半導体記録システムにおける半導体記録装置のユーザデータ又はパリティデータのライトライト処理のフローチャートである。
【図９】図９は、本発明の実施の形態２に係る半導体記録システムの全体構成を示す図である。
【図１０】図１０は、本発明の実施の形態２に係る半導体記録システムにおける論理ブロックとパリティブロックとの関係を示す概念図である。
【図１１Ａ】図１１Ａは、本発明の実施の形態２に係る半導体記録装置についての論理ブロックにおける論物変換テーブルの一例を示す図である。
【図１１Ｂ】図１１Ｂは、本発明の実施の形態２に係る半導体記録装置についてのパリティブロックにおける論物変換テーブルの一例を示す図である。
【図１２】図１２は、本発明の実施の形態２に係る半導体記録装置におけるＥＣＣパリティ管理テーブルの一例を示す図である。
【図１３】図１３は、本発明の実施の形態２に係る半導体記録システムにおけるライト動作のフローチャートである。
【図１４】図１４は、本発明の実施の形態２に係る半導体記録システムにおける半導体記録装置のライト処理のフローチャートである。
【発明を実施するための形態】
【００４０】
以下、実施の形態に係る半導体記録装置、半導体記録装置の制御方法及び半導体記録システムについて、図面を参照しながら説明する。
【００４１】
（実施の形態１）
まず、実施の形態１に係る半導体記録装置及び半導体記録システムについて、図２を用いて説明する。図２は、実施の形態１に係る半導体記録システムの全体構成を示す図である。
【００４２】
図２に示すように、実施の形態１に係る半導体記録システムは、ホスト機器１００と着脱型の半導体記録装置２００とによって構成される。
【００４３】
以下、本実施の形態に係るホスト機器１００の構成要素について説明する。
【００４４】
図２に示すように、本実施の形態に係るホスト機器１００は、データメモリ１と、専用ドライバ２と、外部インターフェイス部６とを備える。
【００４５】
同図において、データメモリ１は、半導体記録装置２００にライトするユーザデータ及びパリティデータを蓄積しておくためのメモリである。
【００４６】
専用ドライバ２は、半導体記録装置２００のための専用のドライバであり、第１のＥＣＣ処理部３、専用コマンド処理部４及び汎用コマンド処理部５によって構成される。
【００４７】
専用ドライバ２において、第１のＥＣＣ処理部３は、データメモリ１に記録されたユーザデータに基づいて第１のＥＣＣ符号を生成する。具体的に、第１のＥＣＣ処理部３は、パリティデータ処理機能を有し、ユーザデータに対応するパリティデータを生成することにより、ユーザデータとパリティデータとからなる第１のＥＣＣ符号を生成する。
【００４８】
また、専用コマンド処理部４は、パリティデータに関連する専用コマンドの処理を行うものであり、第１のＥＣＣ処理部３で生成されたパリティデータを半導体記録装置２００にライトするための専用コマンド（専用ライトコマンド）を生成したり、半導体記録装置２００に記録されているパリティデータを半導体記録装置２００からリードするための専用コマンド（専用リードコマンド）を生成したりする。
【００４９】
一方、汎用コマンド処理部５は、汎用ドライバ（不図示）で使用することができるとともにユーザデータに関連する汎用コマンドの処理を行う。ゆえに、専用ドライバ２の替わりに汎用ドライバを使用した場合は、専用ドライバ２は、汎用コマンド処理部５のみが機能する。
【００５０】
外部インターフェイス部６は、半導体記録装置２００との間でコマンド及びデータの送受信を行うためのインターフェイスであり、半導体記録装置２００に対してライトコマンド（書き込み命令）やリードコマンド（読み出し命令）を発行したり、半導体記録装置２００との間でユーザデータやパリティデータを送受信したりする。より具体的には、外部インターフェイス部６は、半導体記録装置２００に記録するためのユーザデータ及び汎用ライトコマンドを含むライトコマンドグループ（第１のコマンドグループ）、半導体記録装置２００に記録するためのパリティデータ及び専用ライトコマンドを含むライトコマンドグループ（第２のコマンドグループ）、又は、半導体記録装置２００からユーザデータをリードするためのリードコマンド等を発行する。
【００５１】
次に、本実施の形態に係る半導体記録装置２００の構成要素について説明する。
【００５２】
図２に示すように、本実施の形態に係る半導体記録装置２００は、外部インターフェイス部１０と、コマンド解析部１１と、ブロック管理部１２と、論物変換テーブル１３と、空ブロックテーブル１４と、ＥＣＣパリティ管理テーブル１５と、第２のＥＣＣ処理部１６と、フラッシュメモリアクセス部１７と、フラッシュメモリ１８とを備える。
【００５３】
同図において、外部インターフェイス部１０は、ホスト機器１００から、コマンド、ユーザデータ又はパリティデータを受信したり、フラッシュメモリ１８に記録されたユーザデータを送信したりするインターフェイスである。
【００５４】
例えば、外部インターフェイス部１０は、ホスト機器１００から、フラッシュメモリ１８にライトするためのユーザデータ及び汎用ライトコマンドを含むライトコマンドグループを受信したり、フラッシュメモリ１８にライトするためのパリティデータ及び専用ライトコマンドを含むライトコマンドグループを受信したりする。また、外部インターフェイス部１０は、受信したコマンドをコマンド解析部１１に送信する。
【００５５】
さらに、外部インターフェイス部１０は、ホスト機器１００から、フラッシュメモリ１８に記録されたユーザデータをリードするためのリードコマンドを受信して、ホスト機器１００に対してユーザデータを送信する。
【００５６】
コマンド解析部１１は、外部インターフェイス部１０を介してホスト機器１００が発行したコマンドを受信して、当該コマンドを解析する。例えば、ホスト機器１００から受信したライトコマンドは、コマンド解析部１１によって解析され、汎用ライトコマンドであるか専用ライトコマンドであるかを識別する。
【００５７】
ブロック管理部１２は、論物変換テーブル１３、空ブロックテーブル１４及びＥＣＣパリティ管理テーブル１５によってフラッシュメモリ１８の物理ブロックを管理等するものであり、上記テーブルに記録される管理情報を更新したり、後述するようにライトコマンド等に基づいて様々な変換等の制御を行ったりする管理制御部である。ブロック管理部１２は、その他にも本実施の形態に記載される様々な制御を行うための制御部としても機能する。
【００５８】
論物変換テーブル１３は、ホスト機器１００とのインターフェイスにおいて、一意に定められた論理ブロックとフラッシュメモリ１８の物理ブロックとの対応関係を示す管理情報（論物ブロック管理情報）が記録されたテーブルである。
【００５９】
空ブロックテーブル１４は、フラッシュメモリ１８の全物理ブロックが新規にライト可能かどうかを示す管理情報（未使用ブロック管理情報）が記録されたテーブルである。空ブロックテーブル１４には、フラッシュメモリ１８の物理ブロック毎に、使用中ブロックには「１」が格納され、未使用ブロックには「０」が格納されている。
【００６０】
ＥＣＣパリティ管理テーブル１５は、夫々の論理ブロックに関連づけられてライトされる第１のＥＣＣ符号が有効か否か、すなわち、ユーザデータ及びこれに対応するパリティデータが有効か否かを示す管理情報（データ有効性管理情報）が記録されたテーブルである。
【００６１】
なお、論物変換テーブル１３、空ブロックテーブル１４及びＥＣＣパリティ管理テーブル１５の各テーブルの詳細については後述する。
【００６２】
第２のＥＣＣ処理部１６は、フラッシュメモリ１８の物理ブロックを構成する各ページにおいて、ユーザデータ及びパリティデータに対して第２のＥＣＣ符号の生成、及び、第２のＥＣＣ符号を利用した誤り訂正を実施する。
【００６３】
フラッシュメモリアクセス部１７は、ブロック管理部１２に示すアドレスに従い、フラッシュメモリ１８のリード及びライトを行う。
【００６４】
フラッシュメモリ１８は、所定のデータを記録するための不揮発性メモリである。本実施の形態において、フラッシュメモリ１８は、４個のフラッシュメモリチップで構成され、各フラッシュメモリチップは、複数のページによって構成される物理ブロックを有する。なお、ページとは、ホスト機器等の外部装置から見たときに、データを記録できる最小単位（書き込みアクセス単位）であり、ブロック（物理ブロック）とは、最小消去単位である。また、４個のフラッシュメモリチップのそれぞれには、ユーザデータ、パリティデータ、論物変換テーブル１３のデータ、及び、ＥＣＣパリティ管理テーブル１５のデータが保持される。
【００６５】
パリティデータは、ホスト機器１００の第１のＥＣＣ処理部３で生成されるデータであって専用ドライバ２の内部データであるため、半導体記録装置２００においては、ホスト機器１００のファイルシステムが認識しない領域にライトされる。よって、パリティデータのライト／リードは、専用ドライバ２で発行される専用コマンドを介して、半導体記録装置２００の予め定められた領域に限定して行われる。一方、ホスト機器１００のファイルシステムが認識する領域には、汎用コマンドを介して、ユーザデータのライト／リードが行われる。
【００６６】
ここで、本実施の形態で使用するフラッシュメモリ１８の内部構成について、図３を用いて説明する。図３は、本実施の形態に係る半導体記録装置２００におけるフラッシュメモリ１８の内部構成を示す図である。なお、図３において、「ＰＢ」は物理ブロックを示しており、「ＰＢ０」はブロックアドレスが「０」の物理ブロックを示している。また、「ＰＢ１」及び「ＰＢ１０２３」も同様に、夫々ブロックアドレスが「１」の物理ブロック、ブロックアドレスが「１０２３」の物理ブロックを示している。
【００６７】
また、図３に示すように、フラッシュメモリ１８の各物理ブロックは、複数のページで構成されており、「ページ０」及び「ページ１」等は、夫々ページ番号が「０」のページ、ページ番号が「１」のページであることを示している。なお、本実施の形態において、１つの物理ブロックＰＢは、ページ０〜ページ６３の６４ページで構成されている。
【００６８】
フラッシュメモリ１８のページにライトするデータサイズを４ＫＢとすれば、１物理ブロックは６４ページで構成されているので、各ブロックは２５６ＫＢ（４ＫＢ＊６４）のデータを格納することができる。さらに、１つのフラッシュメモリは、１０２４個の物理ブロックから構成されているので、１つのフラッシュメモリには２５６ＭＢのデータを格納することができる。本実施の形態において、フラッシュメモリ１８は、４個のフラッシュメモリチップで構成されているため、４０９６個の物理ブロックが存在する。
【００６９】
次に、４０９６個の物理ブロックへの各種データの割り当てについて説明する。本実施の形態では、第１のＥＣＣ処理部３は、４バイトのユーザデータによって１バイトのパリティデータを生成する。つまり、フラッシュメモリ１８にライトするユーザデータとパリティデータとの割合は４：１になる。そこで、全４０９６個のフラッシュメモリ１８の物理ブロックにおいて、３２００個の物理ブロックはユーザデータを記録するための物理ブロック（ユーザデータ用物理ブロック）として、８００個の物理ブロックはパリティデータを記録するための物理ブロック（パリティデータ用物理ブロック）として、また、残りの９６個は論物変換テーブルなどのシステムデータを記録するための物理ブロック又は代替ブロックとして割り当てられる。なお、後発的に不良となった物理ブロック（後発不良ブロック）が発生した場合は、当該後発不良ブロックをＤｅｆｅｃｔブロックとして登録して当該物理ブロックの使用を禁止し、代わりに上記代替ブロックを使用する。
【００７０】
次に、論理ブロックとパリティブロックについて、図４を用いて説明する。図４は、本実施の形態に係る半導体記録システムにおける論理ブロックとパリティブロックとの関係を示す概念図である。論理ブロックにはユーザデータが記録され、パリティブロックには連番の４個の論理ブロックにかかるユーザデータから生成されたパリティデータが記録される。図４において、パリティブロックは、ファイルシステムでは認識できないブロックであり、専用ドライバ２と半導体記録装置２００との間のみにおいて予め定められた所定の領域である。
【００７１】
論理ブロックのサイズは１ＭＢであり、連続する２０４８セクタ（１セクタ＝５１２Ｂ）に対応する。論理ブロックは０番から７９９番の連番が付されており、論理ブロック番号とセクタ番号の対応は、以下の式１で表される。
【００７２】
（式１）  （論理ブロック番号）＝（セクタ番号）／２０４８
【００７３】
パリティブロックのサイズは、論理ブロックと同様に１ＭＢであり、パリティブロックの番号は０番から１９９番の連番が付されている。そして、論理ブロックと関連づけられたパリティブロックの番号は、以下の式２で表される。
【００７４】
（式２）  （関連するパリティブロック番号）＝（論理ブロック番号）／４
【００７５】
また、論理ブロック及びパリティブロックは、夫々６４ページの論理ページによって構成される。論理ページのサイズは１６ＫＢ（＝１ＭＢ／６４）であり、各論理ページには０番から６３番までの連番が付される。
【００７６】
セクタ番号と論理ブロックの論理ページ番号の関係は、以下の式３で表される。
【００７７】
（式３）  （論理ブロックの論理ページ番号）＝（（セクタ番号）％２０４８）／３２
【００７８】
なお、式３において、「％」は、剰余（除算の余り）を求める演算子を表す。以降、同様である。
【００７９】
また、セクタ番号と、当該セクタに関連するパリティブロックの論理ページ番号との関係は、以下の式４で表される。
【００８０】
（式４）  （関連するパリティブロックの論理ページ番号）＝（（セクタ番号）％８１９２）／１２８
【００８１】
次に、拡張ブロックと拡張ページについて説明する。
【００８２】
拡張ブロックは、４個のフラッシュメモリ（フラッシュメモリ０〜フラッシュメモリ３）において、各フラッシュメモリから１物理ブロックずつ抽出した４個の物理ブロックによって構成される。１つの物理ブロックのサイズは２５６ＫＢなので、拡張ブロックのサイズは１ＭＢとなる。ここで、拡張ブロックを構成する４個の物理ブロック番号は同一のブロック番号である必要はなく、各物理ブロックの書き換え回数を平均化できることからランダムに抽出されることが望ましい。
【００８３】
拡張ページは、拡張ブロックを構成する４個の物理ブロックの同一番号のページが連結されたものである。物理ブロックの１ページのサイズは４ＫＢなので、拡張ページのサイズは１６ＫＢとなる。物理ブロックは６４ページで構成されているので、拡張ブロックも同様に６４ページの拡張ページにより構成される。
【００８４】
次に、論物変換テーブル１３について説明する。
【００８５】
論物変換テーブル１３は、論理ブロックと拡張ブロックとの対応関係を示す管理情報（第１の論物ブロック管理情報）が記録されたテーブルと、パリティブロックと拡張ブロックとの対応関係を示す管理情報（第２の論物ブロック管理情報）が記録されたテーブルとからなる。拡張ブロックは、上述のとおり、４個のフラッシュメモリから夫々１個抽出した４個の物理ブロックで構成されているので、論理ブロック番号及びパリティブロック番号とそれに対応する４個の物理ブロック番号とは、夫々対応付けられてテーブル化される。
【００８６】
図５Ａ及び図５Ｂに論物変換テーブル１３の一例を示す。図５Ａは、本実施の形態に係る半導体記録装置２００についての論理ブロックにおける論物変換テーブルの一例を示す図であり、図５Ｂは、同半導体記録装置２００についてのパリティブロックにおける論物変換テーブルの一例を示す図である。
【００８７】
図５Ａに示すように、論理ブロックにおける論物変換テーブル１３は、各論理ブロック番号と、各論理ブロックに割り当てられた物理ブロック番号との対応表であり、同論物変換テーブル１３には、０番〜７９９番の８００個の論理ブロック夫々に対応する４つの物理ブロック番号が登録されており、これにより、フラッシュメモリ１８の物理ブロックが管理されている。
【００８８】
また、図５Ｂに示すように、パリティブロックの論物変換テーブル１３は、各パリティブロック番号と、各パリティブロックに割り当てられた物理ブロック番号との対応表であり、同論物変換テーブル１３には、０番〜１９９番の２００個のパリティブロック夫々に対応する物理ブロック番号が登録されており、これにより、フラッシュメモリ１８の物理ブロックが管理されている。
【００８９】
以下、論理ブロック又はパリティブロックと、物理ブロックとの割り当てについて、さらに詳細に説明する。
【００９０】
図５Ａに示すように、１個の論理ブロック番号に対応して、４つのフラッシュメモリ（フラッシュメモリ０〜３）の各フラッシュメモリより１個ずつの物理ブロックが割り当てられる。図５Ａにおいて、物理ブロック番号として示される同図の符号「０−０」、「１−３００」、「２−６００」及び「３−９００」等は、夫々０番のフラッシュメモリ０における０番の物理ブロック、１番のフラッシュメモリ１における３００番の物理ブロック、２番のフラッシュメモリ２における６００番の物理ブロック、３番のフラッシュメモリ３における９００番の物理ブロックを示している。また、符号「０−１０２４」、「１−１０２４」、「２−１０２４」及び「３−１０２４」は、各フラッシュメモリにおける１０２４番の物理ブロックを示しているが、各フラッシュメモリにおける有効な物理ブロック番号は０〜１０２３であるため、１０２４番を示す「１０２４」の符号は、当該論理ブロックには物理ブロックが割り当てられていない、あるいはライトされているが使用されていないことを示している。すなわち、１０２４番の物理ブロック番号が割り当てられた物理ブロックは、未使用のブロックである。なお、以上は、図５Ｂにおいても同様である。
【００９１】
具体的には、例えば、図５Ａによると、論理ブロック番号が０番の論理ブロックには、「０−０」、「１−３００」、「２−６００」及び「３−９００」の番号の４個の物理ブロックが割り当てられ、１番の論理ブロックには、「０−１００」、「１−４００」、「２−７００」及び「３−１０００」の番号の４個の物理ブロックが割り当てられ、２番の論理ブロックには、「０−２００」、「１−５００」、「２−８００」及び「３−０」の番号の４個の物理ブロックが割り当てられ、そして、３番の論理ブロックには、「０−３００」、「１−６００」、「２−９００」及び「３−１００」の番号の４個の物理ブロックが夫々割り当てられている。また、論理ブロック番号が７９９番の論理ブロックには、物理ブロックが割り当てられていないことを示している。
【００９２】
同様に、図５Ｂによると、パリティブロック番号が０番のパリティブロックには、「０−４００」、「１−７００」、「２−１０００」及び「３−２００」の４個の物理ブロックが割り当てられ、１番及び１９９番のパリティブロックには、物理ブロックが割り当てられていないことを示している。
【００９３】
図５Ａ及び図５Ｂに示される論物変換テーブル１３は、ライトの工程において論理ブロックが書き換えられる毎に更新される。更新は、ブロック管理部１２によって行われる。更新において、ブロック管理部１２は、論物変換テーブル１３における１０２４番の物理ブロック番号が割り当てられた未使用の物理ブロックを各フラッシュメモリから１個ずつ新たに抽出することによって新論理ブロックを生成し、当該新論理ブロックに対応する未使用の物理ブロックにユーザデータをライトしてから、ライトした物理ブロックの番号と新論理ブロックの番号とが対応するようにして論物変換テーブル１３を更新すればよい。その際、以前に使用していた物理ブロックは未使用ブロックとなるように更新され、論物変換テーブル１３における当該物理ブロックには１０２４番が割り当てられる。なお、フラッシュメモリ１８の全物理ブロックから有効物理ブロック（論物変換テーブル１３に使用されている状態として記録されている物理ブロック）を除いた物理ブロックが未使用ブロックとなる。
【００９４】
未使用ブロックの抽出はデータをライトする毎に実施しても良いが、本実施の形態では、後述する空ブロックテーブル１４を電源投入時に作成しておき、空ブロックテーブル１４を管理することにより、未使用ブロックの抽出を実施した。
【００９５】
次に、空ブロックテーブル１４について説明する。
【００９６】
空ブロックテーブル１４は、上述のとおり、フラッシュメモリ１８の全物理ブロックが新規にライト可能かどうかを示す管理情報（未使用ブロック管理情報）が記録されたテーブルである。空ブロックテーブル１４において、論物変換テーブル１３で使用されている状態として記録されている有効物理ブロック及び使用不可と判断された不良物理ブロックには使用中の「１」が格納され、未ライトの物理ブロック及びライトされているが未使用となった物理ブロックには「０」が格納されている。
【００９７】
より具体的には、ブロック管理部１２は、電源投入時に論物変換テーブル１３と不良物理ブロックとをリスト化した不良物理ブロックテーブルをリードすることにより、空ブロックテーブル１４を作成する。そして、ブロック管理部１２は、論物変換テーブル１３の更新と同期して空ブロックテーブル１４を更新する。これにより、未使用ブロックの抽出処理を高速化することができる。
【００９８】
次に、ＥＣＣパリティ管理テーブル１５について説明する。
【００９９】
ＥＣＣパリティ管理テーブル１５は、第１のＥＣＣ処理部３により生成され、半導体記録装置２００のフラッシュメモリ１８にライトされた第１のＥＣＣ符号、すなわち、ユーザデータ及びこれに対応するパリティデータが有効か否かを示す管理情報（データ有効性管理情報）が登録されるテーブルである。ユーザデータ及びパリティデータの有効性は、論理ブロック毎に管理される。
【０１００】
図６に、ＥＣＣパリティ管理テーブル１５の一例を示す。図６は、本実施の形態に係る半導体記録装置２００におけるＥＣＣパリティ管理テーブルの一例を示す図である。
【０１０１】
図６に示すように、ＥＣＣパリティ管理テーブル１５は、論理ブロック番号が０番から７９９番までの８００個の全論理ブロックにおいて、夫々の論理ブロックにかかるユーザデータ及びパリティデータの有効性を示すフラグ（管理情報）を保持し、夫々の論理ブロックにかかるユーザデータ及びパリティデータが有効であれば「１」が格納され、無効であれば「０」が格納される。
【０１０２】
例えば、図６においては、論理ブロック番号が０〜２番の論理ブロックに対応するユーザデータの有効性を示すセル及びパリティデータの有効性を示すセルには、共に「１」が格納されているので、ユーザデータ及びパリティデータは共に有効であることが示されている。同様に、３番の論理ブロックでは、ユーザデータのみが有効であり、他の論理ブロックでは、ユーザデータ及びパリティデータは共に無効であることが示されている。
【０１０３】
ＥＣＣパリティ管理テーブル１５は、半導体記録装置２００のフォーマット時に、全論理ブロックのユーザデータ及びパリティデータが共に無効とされ、全てのセルに「０」が格納される。そして、ブロック管理部１２によって、当該論理ブロックにかかるユーザデータのライト開始時点においては、フラッシュメモリ１８に記録済みのユーザデータとこれに対応するパリティデータとが共に無効化するように管理情報が更新される。さらに、当該論理ブロックにかかるユーザデータのライト終了時点においては、記録済みのユーザデータが有効化するように管理情報が更新され、当該論理ブロックにかかるユーザデータとパリティデータとのライト処理が共に完了した時点において、記録済みのパリティデータが有効となるように管理情報を更新する。
【０１０４】
以上が、本実施の形態におけるメモリ制御の要素となる、論理ブロック、パリティブロック、論理ページ、拡張ブロック、拡張ページ、論物変換テーブル、空ブロックテーブル及びＥＣＣパリティ管理テーブルについての説明である。
【０１０５】
以下、本実施の形態に係る半導体記録システムのライト時の動作について、図２を参照しながら、図７を用いてさらに詳細に説明する。図７は、本実施の形態に係る半導体記録システムにおけるライト動作のフローチャートである。
【０１０６】
本実施の形態に係る半導体記録システムにおいて、ライトコマンド（ライト命令）、ライト対象のセクタ番号、そのセクタ番号に対応するユーザデータ、及び、ユーザデータに関連付けられたパリティデータは、ホスト機器１００の外部インターフェイス部６から半導体記録装置２００の外部インターフェイス部１０に転送される。なお、以降は、説明を簡単にするために、半導体記録装置２００にライトするデータアライメントは、上述した論理ブロックの単位の１ＭＢに限定して説明する。
【０１０７】
最初に、ホスト機器１００側の動作について詳細に説明する。
【０１０８】
図７に示すように、まず、ホスト機器１００において、第１のＥＣＣ処理が行われる（Ｓ１１０）。
【０１０９】
この場合、データメモリ１に蓄積されたライト対象のユーザデータが、第１のＥＣＣ処理部３に入力される。
【０１１０】
具体的に、第１のＥＣＣ処理部３は、データメモリ１に格納されたユーザデータを４ＫＢ間隔で１バイトずつリードし、合計４バイトのユーザデータのＥＸＯＲ演算を行って１バイトのパリティデータを生成する。生成したパリティデータはデータメモリ１の所定の領域に格納される。半導体記録装置２００のフラッシュメモリ１８における１論理ページのサイズは１６ＫＢなので、順次パリティデータを生成すれば、第１のＥＣＣ処理部３は、１論理ページ当たり４ＫＢのパリティデータを生成することになる。ゆえに、第１のＥＣＣ処理部３は、１論理ブロックに対しては、６４ページ分の２５６ＫＢのパリティデータを生成することになる。
【０１１１】
このように、４ＫＢ単位で１バイトずつ抽出した４バイトから１バイトのパリティデータを生成すれば、１６ＫＢで構成される１論理ページは４ＫＢ単位で４個の物理ブロックで構成されているので、第１のＥＣＣ符号を構成する１バイトのシンボル（第１のＥＣＣ符号同士を識別するための識別符号）が異なる物理ブロックにライトされることになり、物理ブロックの後発不良及びデータ保持特性の劣化に対する誤り耐性を強化することができる。
【０１１２】
第１のＥＣＣ符号が生成されると、ホスト機器１００は、図７に示すように、ユーザデータに関連する汎用ライトコマンド、又は、パリティデータに関連する専用ライトコマンドを半導体記録装置２００に発行する（Ｓ１２０）。
【０１１３】
汎用ライトコマンドは、データメモリ１に格納されているユーザデータに対応するライトコマンドであり、汎用コマンド処理部５によって、ライトするユーザデータの先頭論理セクタ番号、ライトするセクタ数、及び、ライトするユーザデータが格納されているホスト機器１００側のメモリアドレスが付加されることにより生成される。汎用ライトコマンドは、外部インターフェイス部６を介して半導体記録装置２００に発行される。
【０１１４】
一方、専用ライトコマンドは、データメモリ１に格納されているパリティデータに対応するライトコマンドであり、専用コマンド処理部４によって、予め定められたパリティブロック番号、その論理ページ番号、及び、ライトするパリティデータが格納されているホスト機器１００側のメモリアドレスが付加されることにより生成される。専用ライトコマンドは、外部インターフェイス部６を介して半導体記録装置２００に発行される。
【０１１５】
なお、１論理ブロックにかかるパリティデータは、１パリティブロックの連続する１６論理ページ分に当るので、専用ドライバ２は１６ＫＢの専用ライトコマンドを１６回発行すれば、１論理ブロックにかかるパリティデータをライトすることができる。
【０１１６】
また、本実施の形態において、ユーザデータのライト処理と当該ユーザデータに関連するパリティデータのライト処理とはシーケンシャルで行うが、ユーザデータのライト処理とパリティデータのライト処理のシーケンスについては、後述する半導体記録装置２００の取り外しを考慮して、ユーザデータのライト処理の後に、当該ユーザデータに関連づけられたパリティデータのライト処理を行うことが好ましい。
【０１１７】
次に、半導体記録装置２００側の動作について詳細に説明する。すなわち、本実施の形態に係る半導体記録装置の制御方法について説明する。
【０１１８】
図７に示すように、半導体記録装置２００は、ホスト機器１００からライトコマンドを受け取ると、ユーザデータ又はパリティデータのライト処理を行う（Ｓ１３０）。ライト処理の詳細については、後述する。
【０１１９】
その後、半導体記録装置２００は、第２のＥＣＣ処理部１６によって、第２のＥＣＣ処理を行う（Ｓ１４０）。第２のＥＣＣ処理部１６は、４個のフラッシュメモリ夫々に対応して４系統実装されている。第２のＥＣＣ処理部１６は、ホスト機器側からのアクセスの単位がセクタ（＝５１２バイト）であることを考慮して、入力される４Ｋバイトのデータを８分割し、８分割した夫々の５１２バイトに対して１６バイトのパリティが付加されたリードソロモン符号を生成する。このような構成とすることにより、５１２バイト当たり、最大８バイトのエラーを訂正することができる。
【０１２０】
次に、半導体記録装置２００は、フラッシュメモリアクセス部１７によって、第２のＥＣＣパリティ付きデータのライトを行う（Ｓ１５０）。フラッシュメモリアクセス部１７は、４個のフラッシュメモリ夫々に対応して４系統実装されている。夫々のフラッシュメモリアクセス部１７は、フラッシュメモリのアドレス及びライトに関するコマンドを発行し、第２のＥＣＣ処理部１６によって生成された第２のＥＣＣパリティ付データを夫々のフラッシュメモリにライトする。
【０１２１】
以上により、本実施の形態に係る半導体記録システムのライト動作が終了する。
【０１２２】
ここで、図７に示す半導体記録装置２００のユーザデータ又はパリティデータのライト処理（Ｓ１３０）について、図８を用いて詳細に説明する。図８は、本実施の形態に係る半導体記録システムにおける半導体記録装置２００についてのユーザデータ又はパリティデータのライト処理のフローチャートである。
【０１２３】
図８に示すように、半導記録装置２００は、外部インターフェイス部１０によってホスト機器１００からのライトコマンドを受信する（Ｓ１３１）。
【０１２４】
次に、外部インターフェイス部１０を介して受信されたライトコマンドは、コマンド解析部１１によって解析される（Ｓ１３２）。コマンド解析部１１によって、ホスト機器１００から受信したライトコマンドがユーザデータに関連する汎用ライトコマンドであるか、あるいは、パリティデータに関連する専用ライトコマンドであるかが識別される。汎用コマンドである場合は、当該ライトコマンドは汎用ライトコマンドとして認識される。一方、ホスト機器１００からのライトコマンドが専用コマンドである場合は、当該ライトコマンドは専用コマンドとして認識される。
【０１２５】
そして、ライトコマンドが汎用ライトコマンドである場合は、半導体記録装置２００は、ホスト機器側のメモリアドレスに格納されているユーザデータをホスト機器側のデータメモリ１からリードすることにより、ユーザデータを取得する（Ｓ１３３）。
【０１２６】
このとき、ブロック管理部１２は、コマンド解析部１１により取得した汎用ライトコマンドに基づいてデータをライトするメモリ領域を対応付けるために、当該汎用ライトコマンドにかかる先頭論理セクタ番号及びセクタ数を、内蔵するフラッシュメモリ１８のアドレス情報に変換する。これにより、取得したユーザデータが、４個のフラッシュメモリの所定のアドレスに対応するメモリ領域に割り当てられる。
【０１２７】
本実施の形態において、１６ＫＢのユーザデータと４個のフラッシュメモリ１８との対応関係は、次のように行われる。（セクタ番号％３２）／４＝０の場合にはユーザデータはフラッシュメモリ０にライトされ、（セクタ番号％３２）／４＝１の場合にはユーザデータはフラッシュメモリ１にライトされ、（セクタ番号％３２）／４＝２の場合にはユーザデータはフラッシュメモリ２にライトされ、（セクタ番号％３２）／４＝３の場合にはユーザデータはフラッシュメモリ３にライトされる。
【０１２８】
また、ブロック管理部１２は、論理セクタ番号を、上記式１及び上記式３に従い、半導体記録装置２００の論理ブロック番号と論理ページ番号に変換する。そして、ブロック管理部１２は、空ブロックテーブル１４を参照しながら、ユーザデータをライトする各フラッシュメモリの物理ブロック番号とページ番号とを導出し、ライト対象の論理ブロック番号及び論理ページ番号と、導出した各フラッシュメモリの物理ブロック番号及びページ番号との関連を論物変換テーブル１３に格納する。
【０１２９】
なお、上記動作において、論理ページ番号と物理ブロックのページ番号とを同一番号に定めておけば、論物変換テーブル１３に格納するデータは論理ブロック番号と各フラッシュメモリの物理ブロック番号との対応のみでよい。
【０１３０】
さらに、ブロック管理部１２によって、ＥＣＣパリティ管理テーブル１５が制御される。具体的に、ブロック管理部１２は、ユーザデータのフラッシュメモリ１８へのライト開始時点において、一旦、当該ライトコマンドにかかる論理ブロックのユーザデータと、当該ユーザデータに対応するパリティデータとが共に無効であることを示すように、ＥＣＣパリティ管理テーブル１５の管理情報を更新する（Ｓ１３４）。
【０１３１】
すなわち、図６で説明したように、ライトコマンドにかかる論理ブロックの番号に対応するユーザデータ及びパリティデータの有効性を示すセルに、データが無効であることを示す管理情報（フラグ）として「０」を格納する又は「０」となるように更新する。
【０１３２】
その後、少なくともユーザデータのライト終了時点において、当該ライトコマンドにかかる論理ブロックのユーザデータのみが有効であることを示すように、ＥＣＣパリティ管理テーブル１５の管理情報を更新する（Ｓ１３５）。
【０１３３】
すなわち、ライト開始時において一旦無効化したユーザデータが有効となるように管理情報（フラグ）を更新する。
【０１３４】
なお、本実施の形態において、論物変換テーブル１３の更新は、ユーザデータのライト終了時点で実施する。また、ＥＣＣパリティ管理テーブル１５のユーザデータ部が無効であって、論物変換テーブル１３に有効な物理ブロック番号が格納されているような場合は、ユーザデータのライト中に半導体記録装置２００の取り外し等が発生したことになり、この場合、ブロック管理部１２によって、書き換え前の論物変換テーブル１３にかかる物理ブロックにライトされているデータをリードすればよい。
【０１３５】
次に、図８に示すライトコマンド解析（Ｓ１３２）において、ホスト機器１００からのライトコマンドが専用ライトコマンドであると認識された場合について説明する。
【０１３６】
この場合、半導体記録装置２００は、パリティデータが格納されているホスト機器１００側のメモリアドレスにかかるデータをホスト機器１００側のデータメモリ１からリードすることにより、パリティデータを取得する（Ｓ１３６）。
【０１３７】
このとき、ブロック管理部１２は、コマンド解析部１１により取得した専用ライトコマンドにかかるパリティブロック番号とその論理ページ番号を、内蔵するフラッシュメモリ１８のアドレス情報に変換する。上述のように、４バイトのユーザデータより１バイトのパリティデータが生成されるので、４論理ページ分のユーザデータに対応するパリティデータが１論理ページにライトされる。
【０１３８】
本実施の形態では、１論理ブロックに対応する２５６ＫＢのパリティデータのライトを実施するため、１論理ページ（＝１６ＫＢ）のパリティライトコマンドを６４回発行すればよい。なお、１６ＫＢ未満のパリティデータをライトする場合には、ホスト機器１００側で、対応する論理ページのパリティデータを専用リードコマンドによってリードした後に、更新部分を書き換えてライトすることになる。
【０１３９】
パリティブロック番号とその論理ページ番号を、内蔵するフラッシュメモリ１８のアドレス情報に変換する制御動作において、汎用ライトコマンドと同様に、ブロック管理部１２は、空ブロックテーブル１４を参照しながら、パリティデータをライトする各フラッシュメモリの物理ブロック番号とページ番号とを導出し、ライト対象のパリティブロック番号及びその論理ページ番号と、導出した各フラッシュメモリの物理ブロック番号及びページ番号との関連を論物変換テーブル１３に格納する。
【０１４０】
なお、上記動作において、論理ページ番号と物理ブロックのページ番号とを同一番号に定めておけば、論物変換テーブル１３に格納するデータはパリティブロック番号と各フラッシュメモリの物理ブロック番号の対応のみでよい。
【０１４１】
さらに、ブロック管理部１２によって、ＥＣＣパリティ管理テーブル１５が制御される。具体的に、ブロック管理部１２は、１個の論理ブロックに関連づけられた全パリティデータのライト終了時点において、当該パリティデータと関連づけられた論理ブロックのパリティデータが有効であることを示すように、ＥＣＣパリティ管理テーブル１５の管理情報を更新する（Ｓ１３７）。
【０１４２】
これにより、パリティデータのライト処理は終了するが、１個の論理ブロックのユーザデータのライト処理と、その論理ブロックに関連づけられたパリティデータのライト処理とは、以下の２つのルールに従って実施することが必要となる。なお、このようなユーザデータとパリティデータとのライト順序は、ブロック管理部１２によって制御することができる。
【０１４３】
（ルール１）論理ブロックへのユーザデータのライト開始より先に当該論理ブロックに関連付けられたパリティデータをライトしてはいけない。すなわち、ホスト機器１００は、ユーザデータに関連する汎用ライトコマンドを送信した後で、パリティデータに関連する専用ライトコマンドを送信し、半導体記録装置２００は、フラッシュメモリ１８に対して、ユーザデータをライトした後に、パリティデータをライトする。
【０１４４】
（ルール２）１論理ブロックに関連づけられた全パリティデータのライト終了前に、対応する論理ブロックの全ユーザデータのライトを終了している。すなわち、ホスト機器１００は、汎用ライトコマンドの送信から開始し、対応する論理ブロックの全ユーザデータのライトが完了した後で、専用ライトコマンドの送信を開始し、１論理ブロックに関連づけられた全パリティデータのライトを行う。
【０１４５】
上記２つのルールは、着脱可能な半導体記録装置２００がライト中に取り外された場合、あるいは、専用ドライバでライトされたユーザデータを汎用ドライバで書き換えられた場合において有効に作用する。以下、この２つの場合について説明する。
【０１４６】
まず、着脱可能な半導体記録装置２００がライト中に取り外された場合について説明する。この場合、さらに、半導体記録装置２００がライト中に取り外されるタイミングを分類すると、以下の４つに分類される。
【０１４７】
（Ｔ１）半導体記録装置２００において、ユーザデータをライトしている途中
（Ｔ２）半導体記録装置２００において、パリティデータをライトしている途中
（Ｔ３）半導体記録装置２００において、ユーザデータのライトが完了後、ユーザデータと関連するパリティデータのライトが開始される前
（Ｔ４）（Ｔ１）〜（Ｔ３）に該当しないタイミング
【０１４８】
上記の４つの取り外しタイミングにおけるＥＣＣパリティ管理テーブル１５における「ユーザデータの有効性」及び「パリティデータの有効性」について詳細に説明する。
【０１４９】
（Ｔ１）のタイミングで半導体記録装置２００が取り外された場合は、ユーザデータのライト開始時にＥＣＣパリティ管理テーブル１５における「ユーザデータの有効性」と「パリティデータの有効性」とは共に無効に更新されているため、「ユーザデータの有効性」と「パリティデータの有効性」とは共に無効となる。しかしながら、論物変換テーブル１３の更新は、ユーザデータのライト終了時点で実施するため、更新前の論物変換テーブル１３にかかる物理ブロックにライトされているユーザデータ及びパリティデータは有効である。
【０１５０】
また、（Ｔ２）のタイミングで半導体記録装置２００が取り外された場合は、ＥＣＣパリティ管理テーブル１５における「ユーザデータの有効性」は有効であり、「パリティデータの有効性」は無効となる。従って、この場合は、更新したユーザデータのみを使用し、パリティデータは使用しない。
【０１５１】
また、（Ｔ３）のタイミングで半導体記録装置２００が取り外された場合は、ＥＣＣパリティ管理テーブル１５における「ユーザデータの有効性」は有効であり、「パリティデータの有効性」は無効となる。従って、この場合も、更新したユーザデータのみを使用し、パリティデータは使用しない。
【０１５２】
また、（Ｔ４）のタイミングではライトにかかるシーケンスは発生しておらず、問題とならない。
【０１５３】
このように、ユーザデータのライト開始時において、ＥＣＣパリティ管理テーブル１５における「ユーザデータの有効性」と「パリティデータの有効性」とを共に無効に更新すれば、ユーザデータが更新されている一方で、それにかかるパリティデータが更新されていない場合に半導体記録装置２００が取り外されることにより発生するユーザデータのパリティデータの不一致を検出することができる。ゆえに、ユーザデータのリードでエラーが発生した場合に、パリティデータの使用を禁止することが可能となり、相関のないパリティデータを使用することで発生する誤訂正を防止することができる。なお、このようなユーザデータとパリティデータとの不一致の検出は、ブロック管理部１２等の半導体記録装置２００内の制御部で行うことができる。
【０１５４】
次に、専用ドライバ２でライトされたユーザデータを汎用ドライバで書き換えられた場合について説明する。
【０１５５】
本実施の形態におけるパリティデータのライト領域は専用ドライバ２のみがアクセス可能な領域であり、汎用ドライバでアクセスすることができない領域である。よって、汎用ドライバを使用する場合は、パリティデータのライトコマンドを使用することはできない。
【０１５６】
専用ドライバ２でライトされたブロックにかかるＥＣＣパリティ管理テーブル１５の「ユーザデータの有効性」と「パリティデータの有効性」とは共に有効な状態である。この状態から汎用ドライバでユーザデータのライトコマンドのみを実施すると、ユーザデータのライトコマンドの開始時点において、ＥＣＣパリティ管理テーブル１５の「ユーザデータの有効性」と「パリティデータの有効性」とは共に無効となる。そして、ユーザデータのライトコマンドが終了すると、ＥＣＣパリティ管理テーブル１５の「ユーザデータの有効性」のみが有効となり、「パリティデータの有効性」は無効のままとなる。よって、ユーザデータとそれにかかるパリティデータとは関連性がないと判定することができ、ユーザデータのリードでエラーが発生した場合に、パリティデータの使用を禁止することができる。これにより、相関のないパリティデータを使用することで発生する誤訂正を防止することができる。なお、このようなユーザデータとパリティデータとの関連性の判定は、ブロック管理部１２等の半導体記録装置２００内の制御部で行うことができる。
【０１５７】
次に、本実施の形態に係る半導体記録システムのリード時の動作について、ホスト機器１００に汎用ドライバが実装されている場合、ホスト機器１００に専用ドライバが実装されている場合の夫々について説明する。
【０１５８】
まず、ホスト機器１００に汎用ドライバが実装されている場合について説明する。
【０１５９】
この場合、外部インターフェイス部１０を介して受信されたリードコマンドは、コマンド解析部１１により解析され、当該リードコマンドが汎用リードコマンドとして認識される。
【０１６０】
このとき、ブロック管理部１２は、汎用リードコマンドにより取得されたユーザデータのリードにかかる先頭論理セクタ番号及びリードセクタ数を、論物変換テーブル１３を参照しながら内蔵するフラッシュメモリ１８のアドレス情報に変換する。
【０１６１】
そして、フラッシュメモリアクセス部１７により、変換したアドレスに従ってフラッシュメモリ１８に対してリードコマンドが発行され、フラッシュメモリ１８からユーザデータがリードされる。フラッシュメモリ１８からリードされたユーザデータは、第２のＥＣＣ処理部１６に入力される。第２のＥＣＣ処理部１６では、フラッシュメモリ１８のページ毎にエラー訂正を実施する。そして、エラー訂正が可能であった場合は、ブロック管理部１２は、エラー訂正されたユーザデータを、ホスト機器１００側のデータメモリ１の所定アドレスに外部インターフェイス部１０を介して転送する。一方、エラー訂正が不可であった場合は、ブロック管理部１２は、外部インターフェイス部１０を介してエラー訂正が不可であったことをホスト機器１００に転送する。
【０１６２】
次に、専用ドライバ２が実装されている場合の動作について説明する。なお、第２のＥＣＣ処理部１６でエラー訂正が可能であった場合の動作は、汎用ドライバが実装された場合の動作と同一であるので説明は省略する。
【０１６３】
第２のＥＣＣ処理部１６でエラー訂正が不可であった場合の動作は、以下の（Ｓ１）〜（Ｓ９）のステップで実施される。
【０１６４】
（Ｓ１）まず、半導体記録装置２００は、外部インターフェイス部１０を介してエラー訂正が不可であったことと、そのエラーが発生した論理セクタ番号をホスト機器１００に転送する。
【０１６５】
（Ｓ２）次に、ホスト機器１００の専用ドライバ２が、専用コマンド処理部４により、エラーが発生した論理セクタ番号にかかるパリティブロック番号と論理ページ番号とを算出する。
【０１６６】
（Ｓ３）その後、専用コマンド処理部４は、エラーが発生した論理セクタ番号にかかるパリティブロック番号と論理ページ番号とに関連する専用リードコマンドを、外部インターフェイス部６を介して半導体記録装置２００に対して発行する。
【０１６７】
（Ｓ４）半導体記録装置２００は、外部インターフェイス部１０を介してホスト機器１００からの専用リードコマンドを受信する。コマンド解析部１１は、受信した専用リードコマンドをパリティデータのリードコマンドとして判定する。
【０１６８】
（Ｓ５）その後、ブロック管理部１２は、論物変換テーブル１３を参照しながら、パリティブロック番号とその論理ページ番号とをフラッシュメモリ１８のアドレスに変換する。
【０１６９】
（Ｓ６）さらに、ブロック管理部１２は、ＥＣＣパリティ管理テーブル１５を参照しながら、当該論理ブロックに対応するパリティデータの有効性を照合する。
【０１７０】
（Ｓ７）そして、ブロック管理部１２によって、当該論理ブロックに対応するパリティデータが無効と判定された場合は、パリティデータが使用不可なことをホスト機器１００に転送し、シーケンスは終了する。一方、当該論理ブロックに対応するパリティデータが有効と判定された場合は、フラッシュメモリアクセス部１７によりリードコマンドを発行し、フラッシュメモリ１８からパリティデータがリードされる。
【０１７１】
（Ｓ８）その後、リードされたパリティデータは第２のＥＣＣ処理部１６によってエラー訂正される。このとき、エラー訂正が不能な場合は、エラー訂正不能をホスト機器１００に転送し、シーケンスは終了する。一方、エラー訂正が可能な場合は、ブロック管理部１２は、エラー訂正されたパリティデータをホスト機器１００側のデータメモリ１の所定アドレスに外部インターフェイス部１０を介して転送する。
【０１７２】
（Ｓ９）ホスト機器１００は、第１のＥＣＣ処理部３により、パリティデータを使用してリードエラーが検出されたユーザデータの誤り訂正を実施する。
【０１７３】
このように、専用ドライバ２がホスト機器１００に実装されている場合、専用ドライバ２によって生成された第１のＥＣＣパリティは半導体記録装置２００にライトされ、ＥＣＣパリティ管理テーブル１５によって、ライトされているユーザデータにかかるパリティデータの有効性が管理される。そして、ユーザデータのリードでエラーが発生した場合、パリティデータを使用したエラー訂正の可否をＥＣＣパリティ管理テーブル１５により判定することができるので、ライト中の半導体記録装置２００の取り外しや汎用ドライバによるユーザデータの書き換えで発生するユーザデータとパリティデータとの不整合を検出することができる。よって、ユーザデータのリードエラーが発生した場合において、ユーザデータと不整合となっているパリティデータの使用を禁止することができるため、不整合となっているパリティデータによる誤訂正を防止することができる。
【０１７４】
なお、本実施の形態では半導体記録装置２００を構成するメモリをフラッシュメモリとして説明したが、不揮発性メモリであれば同様の効果が得られることはいうまでもない。
【０１７５】
また、本実施の形態では、第１のＥＣＣ符号のパリティは単純パリティにしたが、複数バイトのパリティにすることによりエラー訂正能力が向上することはいうまでもない。
【０１７６】
また、本実施の形態では、第１のＥＣＣ符号を構成するシンボル数はパリティを含めて５個にしたが、それに限定されるものではない。
【０１７７】
また、本実施の形態では、第１のＥＣＣ符号の処理はドライバで実施する方式にしたが、ホスト機器１００のハードウェアで実施してもよい。
【０１７８】
さらに、本実施の形態では、ＥＣＣパリティ管理テーブル１５により、論理ブロック単位でパリティデータの有効性を管理したが、論理ページ単位でパリティデータの有効性を管理してもよい。この場合の管理手法は、パリティブロックの論理ページ単位で、パリティデータの有効性を判定する２ビットの「更新の可能性有り」と「更新完了」とを示すマーカを設け、ユーザデータのライト開始時に「更新の可能性有り」とし、パリティデータのライト完了後に「更新完了」とすればよい。そして、ユーザデータのエラーが発生した場合、「更新の可能性有り」かつ「更新完了」のパターンのみ、パリティデータを有効にしてエラー訂正を実施することにより、上記と同様の効果が得られる。
【０１７９】
（実施の形態２）
次に、実施の形態２に係る半導体記録装置及び半導体記録システムについて、図９を用いて説明する。図９は、実施の形態２に係る半導体記録システムの全体構成を示す図である。
【０１８０】
図９に示す本実施の形態に係る半導体記録システムは、図２に示す実施の形態１に係る半導体記録システムの変形である。従って、図９において、図２に示す構成要素と同じ機能の構成要素については同じ符号を付しており、その説明は省略又は簡略化する。
【０１８１】
実施の形態２と実施の形態１とが異なる点は、上述の実施の形態１では、第１のＥＣＣ処理部３はホスト機器１００に実装され、第１のＥＣＣ符号はホスト機器１００によって生成されていたのに対し、本実施の形態では、第１のＥＣＣ処理部３は半導体記録装置３００の内部に実装され、ホスト機器より発行されるライトコマンドのパラメータに応じて第１のＥＣＣ処理のＯＮ／ＯＦＦを切り替える点である。
【０１８２】
具体的には、実施の形態１で説明した論理ページの整数倍（＝１６ＫＢの整数倍）のライトコマンドが発行された場合は、第１のＥＣＣ符号を生成してパリティデータを記録し、それ以外のライトコマンドが発行された場合は、第１のＥＣＣ符号は生成せずに、パリティデータを記録しない。これにより、１６ＫＢ未満の小ブロックのライトにおいて、対象となる６４ＫＢ未満のブロックの属する論理ページのデータをリードし、ライト対象となるデータとリードしたデータとで１６ＫＢを再構成してライトする処理を行うことにより、ライト転送レートの劣化を防止することができる。
【０１８３】
以下、図９を参照しながら、本実施の形態に係る半導体記録装置３００の内部構成とその動作について説明する。
【０１８４】
図９に示すように、本実施の形態に係る半導体記録装置３００は、外部インターフェイス部１０と、コマンド解析部２０と、ブロック管理部１２と、論物変換テーブル２１と、空ブロックテーブル１４と、ＥＣＣパリティ管理テーブル２２と、第２のＥＣＣ処理部１６と、フラッシュメモリアクセス部１７と、フラッシュメモリ２３と、そして、第１のＥＣＣ処理部３とを備える。
【０１８５】
同図において、コマンド解析部２０は、ホスト機器から命令されるユーザデータに対応するライトコマンドを解析して、当該ライトコマンドのサイズが論理ページのアライメント（＝１６ＫＢ）の整数倍かどうかを検出する。そして、ライトコマンドがアライメント（＝１６ＫＢ）の整数倍の場合は、第１のＥＣＣ処理部３によって第１のＥＣＣパリティが生成される。一方、ライトコマンドがアライメント（＝１６ＫＢ）の整数倍でない場合は、第１のＥＣＣ処理部３はスルーして、第１のＥＣＣパリティは生成されない。
【０１８６】
第１のＥＣＣ処理部３は、実施の形態１と同様に、ユーザデータに基づいて第１のＥＣＣ符号を生成する。本実施の形態では、第１のＥＣＣ処理部３は、ユーザデータを４ＫＢ間隔で１バイトずつリードし、合計４バイトのユーザデータのＥＸＯＲ演算を行って、１バイトのパリティデータを生成する。半導体記録装置３００のフラッシュメモリ２３における１論理ページのサイズは１６ＫＢなので、順次パリティデータを生成すれば、第１のＥＣＣ処理部３は、１論理ページ当たり４ＫＢのパリティデータを生成することになる。
【０１８７】
ここで、本実施の形態に係る半導体記録システムにおける論理ブロックとパリティブロックとの関係について、図１０を用いて説明する。図１０は、本実施の形態に係る半導体記録システムにおける論理ブロックとパリティブロックとの関係を示す概念図である。
【０１８８】
本実施の形態において、論理ブロックとパリティブロックとの定義は、実施の形態１とは異なる。すなわち、上述の実施の形態１では、１個のパリティブロックが４個の論理ブロックに割り当てられていたが、本実施の形態では、図１０に示すように、１個のパリティブロックに対して１個の論理ブロックが対応するように構成されている。また、本実施の形態でも、ユーザデータとパリティデータの比は４：１である。
【０１８９】
従って、図１０に示すように、論理ブロックは、フラッシュメモリの４個の物理ブロックから構成され、パリティブロックは、フラッシュメモリの１個の物理ブロックから構成される。このように、実施の形態１では、半導体記録装置２００には４個のフラッシュメモリ１８を内蔵していたが、本実施の形態では、半導体記録装置３００には、５個のフラッシュメモリ２３が内蔵されている。
【０１９０】
このように、本実施の形態と実施の形態１とは、論理ブロックとパリティブロックとの定義が異なるために、本実施の形態に係る論物変換テーブル２１も実施の形態１とは異なる構成となる。以下、本実施の形態に係る半導体記録装置３００における論物変換テーブルについて、図１１Ａ及び図１１Ｂを用いて説明する。図１１Ａは、本実施の形態に係る半導体記録装置３００についての論理ブロックにおける論物変換テーブルの一例を示す図であり、図１１Ｂは、同半導体記録装置３００についてのパリティブロックにおける論物変換テーブルの一例を示す図である。
【０１９１】
図１１Ａに示すように、論理ブロックにおける論物変換テーブル２１は、各論理ブロック番号と、各論理ブロックに割り当てられた物理ブロック番号との対応表であり、同論物変換テーブル２１には、０番〜９９９番の１０００個の論理ブロック夫々に対応する物理ブロック番号が登録されており、これにより、フラッシュメモリ２３の物理ブロックが管理されている。
【０１９２】
また、図１１Ｂに示すように、パリティブロックの論物変換テーブル２１は、各パリティブロック番号と、各パリティブロックに割り当てられた物理ブロック番号との対応表であり、同論物変換テーブル２１には、０番〜９９９番の１０００個のパリティブロック夫々に対応する物理ブロック番号が登録されており、これにより、フラッシュメモリ２３の物理ブロックが管理されている。
【０１９３】
このように、本実施の形態では５個のフラッシュメモリを使用するので、実施の形態１では０〜７９９番で定義されていた論理ブロック番号は、本実施の形態では０〜９９９番まで拡張される。また、実施の形態１ではパリティブロック番号が０〜１９９番で定義されていたが、本実施の形態では、１個のパリティブロックに対して１個の論理ブロックが対応するので、パリティブロック番号は０〜９９９番となる。
【０１９４】
なお、図１１Ａ及び図１１Ｂにおいて、符号「０−０」及び「１−３００」等は、実施の形態１と同様であるので、その説明は省略するが、論理ブロックは、０番、１番、２番及び３番の各フラッシュメモリの物理ブロックから構成され、パリティブロックは、４番のフラッシュメモリの物理ブロックから構成される。
【０１９５】
このように構成される論物変換テーブル２１は、実施の形態１における論物変換テーブル１３と同様にして更新等される。
【０１９６】
次に、本実施の形態に係るＥＣＣパリティ管理テーブル２２について、図１２を用いて説明する。図１２は、本実施の形態に係る半導体記録装置３００におけるＥＣＣパリティ管理テーブルの一例を示す図である。
【０１９７】
本実施の形態に係るＥＣＣパリティ管理テーブル２２は、第１のＥＣＣ処理部３により生成されたパリティデータが有効か否かを示す管理情報（データ有効性管理情報）が記録されたテーブルである。
【０１９８】
実施の形態１では、ユーザデータとパリティデータとがホスト機器からシーケンシャルに転送されていたが、本実施の形態では、パリティデータが、半導体記録装置３００内部の第１のＥＣＣ処理部３によって生成される。従って、本実施の形態に係るＥＣＣパリティ管理テーブル２２は、実施の形態１とは異なる構成となる。
【０１９９】
すなわち、実施の形態１では、ＥＣＣパリティ管理テーブル１５におけるパリティデータの有効性は論理ブロック毎に管理されていたが、本実施の形態では、ＥＣＣパリティ管理テーブル２２におけるパリティデータの有効性は、図１２に示すように、各パリティブロックを構成するページ単位で、つまり、当該ページに関連する論理ページ毎に管理されている。
【０２００】
そして、同図に示すように、ＥＣＣパリティ管理テーブル２２は、パリティブロック番号が０番から９９９番までの１０００個のパリティブロックにおいて、各パリティブロックの夫々のページには、同一番号の論理ブロックにおける同一番号の論理ページにかかるパリティデータがライトされた場合には、パリティデータを有効とする管理情報として「１」が格納され、そうでない場合は、パリティデータを無効とする管理情報として「０」が格納される。
【０２０１】
本実施の形態では、ホスト機器より命令されるユーザデータのライトコマンドのサイズが論理ページのアライメント（＝１６ＫＢ）の整数倍である場合は、第１のＥＣＣ処理部３でパリティデータを生成し、パリティデータをパリティブロックにライトするとともに、ＥＣＣパリティ管理テーブル２２の当該論理ページのパリティデータが有効であることを示すように管理情報を更新する。一方、ホスト機器より命令されるユーザデータのライトコマンドのサイズがアライメント（＝１６ＫＢ）の整数倍ではなく当該アライメント未満の場合は、第１のＥＣＣ処理部３の処理はスルーして、ＥＣＣパリティ管理テーブル２２の当該論理ページのパリティデータが無効であることを示すように管理情報を更新する。
【０２０２】
以下、本実施の形態に係る半導体記録システムのライト時の動作について、図９を参照しながら、図１３を用いてさらに詳細に説明する。図１３は、本実施の形態に係る半導体記録システムにおけるライト動作のフローチャートである。
【０２０３】
まず、図１３に示すように、ホスト機器は、半導体記録装置３００に対してユーザデータに記録を指示するために、ユーザデータに関連するライトコマンドを発行する（Ｓ２１０）。
【０２０４】
次に、半導体記録装置３００は、ホスト機器から、ユーザデータに関連するライトコマンドを受け取ると、ユーザデータのライト処理を行う（Ｓ２２０）。ユーザデータのライト処理の詳細については、後述する。
【０２０５】
次に、半導体記録装置３００は、第２のＥＣＣ処理部１６によって、第２のＥＣＣ処理を行う（Ｓ２３０）。この処理は、実施の形態１と同様である。
【０２０６】
その後、半導体記録装置３００は、フラッシュメモリアクセス部１７によって、第２のＥＣＣパリティ付きデータのライトを行う（Ｓ２４０）。この処理も、実施の形態１と同様である。
【０２０７】
以上により、本実施の形態に係る半導体記録システムのライト動作が終了する。
【０２０８】
ここで、図１３に示す半導体記録装置３００のユーザデータのライト処理（Ｓ２２０）について、図１４を用いて詳細に説明する。図１４は、本実施の形態に係る半導体記録システムにおける半導体記録装置３００のライト処理のフローチャートである。
【０２０９】
図１４に示すように、半導記録装置３００は、外部インターフェイス部１０によってホスト機器からユーザデータのライトコマンドを受信する（Ｓ２２１）。
【０２１０】
次に、外部インターフェイス部１０を介して受信されたライトコマンドは、コマンド解析部２０によって解析される（Ｓ２２２）。このとき、コマンド解析部２０は、ホスト機器から命令されるユーザデータのライトコマンドが論理ページのアライメント（＝１６ＫＢ）の整数倍かどうかを検出する。
【０２１１】
そして、ライトコマンドがアライメント（＝１６ＫＢ）の整数倍の場合（Ｓ２２２においてＹｅｓ）は、ユーザデータをライトするとともに、第１のＥＣＣ処理が行われる（Ｓ２２３）。この場合、第１のＥＣＣ処理部３は、ユーザデータに基づいてパリティデータを生成して、第１のＥＣＣパリティを生成する。
【０２１２】
その後、ブロック管理部１２は、第１のＥＣＣ処理部３によって生成されたパリティデータを、フラッシュメモリアクセス部１７を介してフラッシュメモリ２３のパリティブロックにライトする（Ｓ２２４）。
【０２１３】
そして、ブロック管理部１２は、パリティデータのライトとともに、ＥＣＣパリティ管理テーブル２２における該当する論理ページのパリティデータが有効であることを示すように管理情報を更新する（Ｓ２２５）。
【０２１４】
一方、ライトコマンド解析（Ｓ２２２）において、ライトコマンドがアライメント（＝１６ＫＢ）の整数倍でない場合（Ｓ２２２においてＮｏ）は、ユーザデータのライト処理は行うが、第１のＥＣＣ処理部３の処理はスルーするとともに、ＥＣＣパリティ管理テーブル２２における該当する論理ページのパリティデータが無効であることを示すように管理情報を更新する（Ｓ２２６）。
【０２１５】
これにより、本実施の形態に係る半導体記録システムにおけるユーザデータのライト処理が終了する。
【０２１６】
このように、本実施の形態では、ホスト機器から命令されるユーザデータのライトコマンドによって、パリティデータのライトの実施又は未実施を選択している。これにより、ユーザデータのリードにおいて、リードする論理ページにかかるパリティデータの有効性をＥＣＣパリティ管理テーブル２２で検出してから、パリティデータを使用してエラー訂正の可否を判定することにより、誤訂正を防止することが可能となる。
【０２１７】
以上説明したように、ホスト機器から命令されるユーザデータのライトコマンドによって、ユーザデータの論理ページにかかるパリティデータのライトの実施又は未実施を選択し、その選択結果をＥＣＣパリティ管理テーブル２２に格納して、パリティデータとＥＣＣパリティ管理テーブルとをライトすることにより、小ブロックのライト性能を犠牲にすることなく、信頼性の高い半導体記録装置を提供することができる。
【０２１８】
なお、小ブロックでライトするＦＡＴなどのシステムデータを重複してライトすることにより、小ブロックのデータにパリティデータを付加して記録していないことによる信頼性の低下を防止することが可能であり、高信頼性と小ブロックのライト性能の両立が可能となる。
【０２１９】
また、本実施の形態において、ＥＣＣパリティ管理テーブル２２のパリティデータの有効性を示すビットを、パリティブロックの夫々のページにライトしてもよい。
【０２２０】
また、本実施の形態において、ＥＣＣパリティ管理テーブル２２のパリティデータの有効性を示すビットを、論理ブロックの夫々の論理ページにライトしてもよい。
【０２２１】
さらに、本実施の形態では、ライトコマンドサイズによってパリティデータのライトの有無を選択したが、実施の形態１のように専用ライトコマンドのみに対して、パリティデータをライトするように制御してもよいことはいうまでもない。
【０２２２】
以上、本発明の実施の形態に係る半導体記録装置、半導体記録システム及び半導体記録装置の制御方法について、実施の形態に基づいて説明したが、本発明は、これらの実施の形態に限定されるものではない。
【０２２３】
例えば、上記実施の形態に係る半導体記録装置の制御方法については、コンピュータによって実行させるコンピュータプログラムによって構成することもできる。また、当該半導体記録装置の制御方法のコンピュータプログラムについては、コンピュータによって読み取り可能な記録媒体に記録されていてもよい。記憶媒体としては、磁気ディスク、光ディスク、光磁気ディスク、ＩＣカード、半導体メモリ等があり、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）（登録商標）がある。
【０２２４】
その他、本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したもの、または異なる実施の形態あるいは変形例における構成要素を組み合わせて構築される形態も、本発明の範囲内に含まれる。
【産業上の利用可能性】
【０２２５】
本発明に係る半導体記録装置は、メモリカードなどの半導体記録装置に関し、特に内部の不揮発性メモリのデータ保持特性の低下および後発半導体不良に対応し、不揮発性メモリの物理ブロックに跨がるＥＣＣ符号を生成してライトすることで、物理ブロックの後発不良、データ保持特性のブロックばらつきを抑制することができる。よって、本発明は、データ保持特性が良好でない多値フラッシュメモリを使用した半導体記録装置又は高信頼性が要求される業務用映像記録分野における半導体記録システム等において有用である。
【符号の説明】
【０２２６】
１  データメモリ
２  専用ドライバ
３  第１のＥＣＣ処理部
４  専用コマンド処理部
５  汎用コマンド処理部
６、１０  外部インターフェイス部
１１、２０  コマンド解析部
１２  ブロック管理部
１３、２１  論物変換テーブル
１４  空ブロックテーブル
１５、２２  ＥＣＣパリティ管理テーブル
１６  第２のＥＣＣ処理部
１７  フラッシュメモリアクセス部
１８、２３  フラッシュメモリ
【図１】
2011154676.tif 000003
【図２】
2011154676.tif 000004
【図３】
2011154676.tif 000005
【図４】
2011154676.tif 000006
【図５Ａ】
2011154676.tif 000007
【図５Ｂ】
2011154676.tif 000008
【図６】
2011154676.tif 000009
【図７】
2011154676.tif 000010
【図８】
2011154676.tif 000011
【図９】
2011154676.tif 000012
【図１０】
2011154676.tif 000013
【図１１Ａ】
2011154676.tif 000014
【図１１Ｂ】
2011154676.tif 000015
【図１２】
2011154676.tif 000016
【図１３】
2011154676.tif 000017
【図１４】
2011154676.tif 000018