説明

半導体記録装置、半導体記録装置の制御方法及び半導体記録システム

【課題】関連性のないパリティデータによる誤訂正を防止することができる半導体記録装置及びその制御方法等を提供する。
【解決手段】ユーザデータ及びパリティデータを記録するためのフラッシュメモリ18と、フラッシュメモリ18にユーザデータの記録を指示する第1のライトコマンドを受信する外部インターフェイス部10と、パリティデータの有効又は無効を示す管理情報を管理するブロック管理部12とを備える。ブロック管理部12は、外部インターフェイス部10を介して受信した第1のライトコマンドに関連するユーザデータがフラッシュメモリ18に記録される際に、当該ユーザデータに対応するパリティデータが無効であることを示すように管理情報を更新する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリカードなどの半導体記録装置及びその制御方法並びに半導体記録システムに関し、特に、半導体記録装置内部における不揮発性メモリのデータ保持特性のバラツキ及び書き換え回数に伴う劣化を抑制する制御手法等に関する。
【背景技術】
【0002】
従来、フラッシュメモリが内蔵されたカード型の記録媒体であるSD(Secure Digital)カード等の半導体記録装置は、超小型、超薄型であり、その取り扱い易さから、ディジタルカメラ、携帯機器等において画像等のデータを記録するために広く利用されている。
【0003】
半導体記録装置に内蔵されているフラッシュメモリは、一定サイズの多数の物理ブロックから成り、物理ブロックの単位でデータを消去できるメモリである。昨今の大容量化の要請に対応すべく、フラッシュメモリは1セルで2ビット以上のデータが蓄積できる多値フラッシュメモリが商品化されている。
【0004】
多値フラッシュメモリの一例として4値フラッシュメモリについて、図1を用いて説明する。図1は、4値フラッシュメモリのフローティングゲートに蓄積する電子の蓄積状態と閾値電圧(Vth)との関係を示す図である。
【0005】
図1に示すように、4値のフラッシュメモリでは、フローティングゲートの電子の蓄積状態をその閾値電圧(Vth)に従って4状態で管理する。図1において、蓄積する電子の数(電子のチャージ量)が少なく電位が一番低い状態は、消去状態であり、これを(1,1)とする。そして電子が蓄積していくにつれて閾値電圧が離散的に上昇し、その状態を夫々、(1,0)、(0,0)、(0,1)とする。このように、蓄積する電子の数に比例して電位が上昇するので、所定の電位の閾値に収まるように電子の蓄積状態を4状態で制御することができる。これによって、1つのメモリセルに2ビットのデータを記録することができる。
【0006】
しかしながら、4値フラッシュメモリにおいては、電子のチャージ量によって4状態を識別するために、4値フラッシュメモリにおける各状態間の閾値電圧の差が、2値フラッシュメモリにおける状態間の閾値電圧の差よりも小さい。
【0007】
また、データの書き換えが繰り返し行われると、電子の注入と引き抜きによってゲート酸化膜にわずかな損傷が発生する。この損傷が積み重なると電子トラップが数多く形成されるため、実際のフローティングゲートに蓄積される電子数が減少してしまう。さらに、半導体プロセスの微細化に比例してフローティングゲートに蓄積される電子数が少なくなるため、フラッシュメモリの微細化が進むと電子トラップの影響は大きくなる。
【0008】
このように、フラッシュメモリの大容量化を支える多値記録及び半導体プロセスの微細化に従い、フラッシュメモリのデータ保持特性の劣化といった課題が顕著になってきた。
【0009】
上記のフラッシュメモリのデータ保持特性の改善手法として、エラー訂正能力を強化する手法が提案されている。
【0010】
例えば、特許文献1では、複数チップで構成されたフラッシュメモリにおいて、フラッシュメモリの互いに異なるチップ内のブロックを関連付け、関連付けられた複数のブロックを共通のグループとして取り扱い、グループ内の1ブロックを当該グループ内の他のブロックに書き込まれたユーザデータのパリティ用のブロックに割当てることにより、誤り訂正能力を強化し、フラッシュメモリのデータ保持特性の劣化を抑制している。
【0011】
そして、ホスト機器から発行される論理アドレスと当該論理アドレスに対応するユーザデータライト領域とパリティデータライト領域との関連付けに関して、従来、以下の2方式が提案されている。
【0012】
従来方式1は、複数個のフラッシュメモリチップを内蔵した半導体記録装置において、1個のフラッシュメモリチップをパリティデータのライト領域として用い、それ以外のフラッシュメモリチップをユーザデータのライト領域として用いる方法である(本方式は、ハードディスクのRAID4に相当する)。
【0013】
従来方式2は、ユーザデータライト領域及びパリティデータライト領域をフラッシュメモリのページ単位で区分けし、パリティデータライト領域にかかるフラッシュメモリチップを順番に移動することによって、パリティデータを各フラッシュメモリチップに略均等に割り当て、ホスト機器が発行する論理アドレスとの対応関係を一意に定めたテーブルを記録する方法である(本方式は、ハードディスクのRAID5に相当する)。
【先行技術文献】
【特許文献】
【0014】
【特許文献1】特開2006−18373号公報
【発明の概要】
【発明が解決しようとする課題】
【0015】
上記のような半導体記録装置の構成を、メモリカードのような着脱型の半導体記録装置に適応する場合、メモリカードにパリティ処理回路を内蔵する第1の手法と、メモリカードの外部にパリティ処理回路を実装する第2の手法が想定される。
【0016】
メモリカードにパリティ処理回路を内蔵する第1の手法は、専用のハードを必要とするため、安価なメモリカードを提供できないといった課題がある。一方、メモリカードの外部にパリティ処理回路を実装する第2の手法は、パリティ処理をホスト機器のCPUを利用すれば、比較的安価に実現可能である。
【0017】
第2の手法を汎用PCに適応する場合は、アプリケーションでパリティデータを発生させファイルとして記録する(a)方式と、メモリカードの専用ドライバでパリティデータを発生して記録する(b)方式とが想定される。
【0018】
(a)方式では、ユーザデータとそれに関連するパリティデータが所定の関係を維持した論理アドレスに対応づけてライトされないといった課題があり、フラッシュメモリのデータ保持特性の改善手法としては有効でない。
【0019】
また、(b)方式では、ユーザデータとそれに関連するパリティデータが所定の関係を維持した論理アドレスに対応づけてライトされる。
【0020】
しかしながら、専用ドライバによってパリティデータがライト済みのメモリカードに、パリティデータ処理機能がない汎用ドライバによってユーザデータが上書きされてしまった場合、汎用ドライバでライトしたユーザデータとライト済みパリティデータとの関連性が消失してしまう。この場合、上書き後のユーザデータに発生したエラーを、当該ユーザデータとは関連性のないパリティデータで訂正すると、誤訂正になってしまうといった課題がある。
【0021】
本発明は、上記課題を解決するものであり、関連性のないパリティデータによる誤訂正を防止することができる半導体記録装置及びその制御方法等を提供することを目的とする。
【課題を解決するための手段】
【0022】
この課題を解決するために、本発明に係る半導体記録装置は、ユーザデータ及びパリティデータを記録するための不揮発性メモリと、前記不揮発性メモリに前記ユーザデータの記録を指示する第1のライトコマンドを受信するインターフェイス部と、前記パリティデータの有効又は無効を示す管理情報を管理する管理部とを備え、前記管理部は、前記インターフェイス部を介して受信した前記第1のライトコマンドに関連するユーザデータが前記不揮発性メモリに記録される際に、当該ユーザデータに対応するパリティデータが無効であることを示すように前記管理情報を更新するものである。
【0023】
この構成により、第1のライトコマンドに関連するユーザデータを不揮発性メモリに記録する際に、当該第1のライトコマンドで指定された領域に記録済みとなっているパリティデータを無効化するので、ユーザデータとパリティデータとの不整合を検出することができる。
【0024】
さらに、本発明に係る半導体記録装置において、前記管理情報が登録される管理テーブルを備え、前記管理部は、前記管理テーブルに登録された前記管理情報を更新することにより、当該管理情報を管理することが好ましい。
【0025】
さらに、本発明に係る半導体記録装置において、前記不揮発性メモリは、消去単位であるブロックによって構成されており、前記管理情報は、前記ブロック単位で前記管理テーブルに登録されていることが好ましい。
【0026】
さらに、本発明に係る半導体記録装置において、前記不揮発性メモリは、複数のページからなるブロックによって構成されており、前記管理情報は、記録可能な最小単位である前記ページ単位で前記管理テーブルに登録されていることが好ましい。
【0027】
さらに、本発明に係る半導体記録装置において、前記インターフェイス部は、前記パリティデータの記録を指示する第2のライトコマンドを受信し、受信したコマンドが前記第1のライトコマンドであるか前記第2のライトコマンドであるかを識別するためのコマンド解析部を備え、前記管理部は、前記コマンド解析部によって前記受信したライトコマンドが前記第1のライトコマンドであると識別された場合に、前記パリティデータが無効であることを示すように前記管理情報を更新し、前記コマンド解析部によって前記受信したライトコマンドが前記第2のライトコマンドであると識別された場合に、前記パリティデータが有効であることを示すように前記管理情報を更新することが好ましい。
【0028】
さらに、本発明に係る半導体記録装置において、前記外部インターフェイス部は、前記第1のライトコマンドを受信した後に、前記第2のライトコマンドを受信し、前記管理部は、前記第1のライトコマンドによって前記パリティデータが無効であることを示すように前記管理情報を更新した後に、前記第2のライトコマンドによって前記パリティデータが有効であることを示すように前記管理情報を更新することが好ましい。
【0029】
さらに、本発明に係る半導体記録装置において、前記第1のライトコマンド関連する前記ユーザデータに対応する前記パリティデータを生成して、当該ユーザデータと当該パリティデータとを含むECC符号を生成するためのECC処理部を備えることが好ましい。
【0030】
さらに、本発明に係る半導体記録装置において、前記第1のライトコマンドを解析して、前記第1のライトコマンドのサイズが所定サイズの整数倍であるか否かを検出するコマンド解析部を備え、前記ECC処理部は、前記コマンド解析部によって前記第1のライトコマンドのサイズが前記所定サイズの整数倍であると検出された場合に前記ECC符号を生成し、前記コマンド解析部によって前記第1のライトコマンドのサイズが前記所定サイズの整数倍でないと検出された場合に前記ECC符号を生成しないことが好ましい。
【0031】
さらに、本発明に係る半導体記録装置において、前記管理部は、前記コマンド解析部によって前記第1のライトコマンドのサイズが前記所定サイズの整数倍であると検出された場合に、前記記録済みのパリティデータが有効であることを示すように前記管理情報を更新し、前記コマンド解析部によって前記第1のライトコマンドのサイズが前記所定サイズの整数倍でないと検出された場合に、前記記録済みのパリティデータが無効であることを示すように前記管理情報を更新することが好ましい。
【0032】
また、本発明に係る半導体記録システムは、ホスト機器と半導体記録装置からなる半導体記録システムであって、前記ホスト機器は、前記半導体記録装置との間でコマンドの送受信を行う外部インターフェイス部と、ユーザデータに対するパリティデータを生成し、前記ユーザデータと前記パリティデータとを含むECC符号を生成するECC処理部と、前記ユーザデータに関連する第1のライトコマンドを生成する第1のコマンド処理部と、前記パリティデータに関連する第2のライトコマンドを生成する第2のコマンド処理部とを備え、前記半導体記録装置は、前記ユーザデータ及び前記パリティデータを記録するための不揮発性メモリと、前記不揮発性メモリに前記ユーザデータの記録を指示する第1のライトコマンドを受信するインターフェイス部と、前記パリティデータの有効又は無効を示す管理情報を管理する管理部とを備え、前記管理部は、前記外部インターフェイス部を介して受信した前記第1のライトコマンド関連するユーザデータが前記不揮発性メモリに記録される際に、当該ユーザデータに対応するパリティデータが無効であることを示すように前記管理情報を更新するものである。
【0033】
さらに、本発明に係る半導体記録システムにおいて、前記ホスト機器は、前記外部インターフェイス部を介して第1のライトコマンド及び第2のライトコマンドを前記半導体記録装置に送信する際に、前記第1のライトコマンドを送信した後で、前記第2のライトコマンドを送信し、前記半導体記録装置は、さらに、前記管理情報が登録される管理テーブルを備え、前記管理部は、前記第1のライトコマンドに対応するユーザデータの記録開始時において、前記パリティデータが無効であることを示すように前記管理情報を更新し、前記第2のライトコマンドに対応するパリティデータの記録終了時に、前記パリティデータが有効であることを示すように前記管理情報を更新することが好ましい。
【0034】
さらに、本発明に係る半導体記録システムにおいて、前記管理部は、前記第2のライトコマンドにかかるライト処理を選択的に実施することが好ましい。
【0035】
さらに、本発明に係る半導体記録システムにおいて、前記第1のコマンド処理部は、汎用ドライバを用いて前記第1のライトコマンドを生成することが好ましい。
【0036】
さらに、本発明に係る半導体記録システムにおいて、前記管理部は、前記第2のライトコマンドに対応するパリティデータを、汎用ドライバではアクセスすることができない前記不揮発性メモリの領域に記録することが好ましい。
【0037】
また、本発明に係る半導体記録装置の制御方法は、ユーザデータ及びパリティデータを記録するための不揮発性メモリと、前記不揮発性メモリに前記ユーザデータの記録を指示する第1のライトコマンドを受信するインターフェイス部と、前記パリティデータの有効又は無効を示す管理情報を管理する管理部とを備える半導体記録装置の制御方法であって、前記インターフェイス部を介して受信した前記第1のライトコマンドに関連するユーザデータが前記不揮発性メモリに記録される際に、当該ユーザデータに対応するパリティデータが無効であることを示すように前記管理情報を更新するものである。
【発明の効果】
【0038】
本発明によれば、第1のライトコマンドに対応するユーザデータのライト終了直後に半導体記録装置の取り外し等が発生したとしても、当該ユーザデータと関連づけられているパリティデータが無効化されているので、ユーザデータとパリティデータの不整合を検出することができる。これにより、ユーザデータのリードエラーが発生した場合において、ユーザデータと不整合となっているパリティデータの使用を禁止することができるので、当該ユーザデータとの関連性のないパリティデータによって訂正を行うことによって生じる誤訂正を防止することができる。
【図面の簡単な説明】
【0039】
【図1】図1は、4値フラッシュメモリのフローティングゲートに蓄積する電子の蓄積状態と閾値電圧(Vth)との関係を示す図である。
【図2】図2は、本発明の実施の形態1に係る半導体記録システムの全体構成を示す図である。
【図3】図3は、本発明の実施の形態1に係る半導体記録装置におけるフラッシュメモリの内部構成を示す図である。
【図4】図4は、本発明の実施の形態1に係る半導体記録システムにおける論理ブロックとパリティブロックとの関係を示す概念図である。
【図5A】図5Aは、本発明の実施の形態1に係る半導体記録装置についての論理ブロックにおける論物変換テーブルの一例を示す図である。
【図5B】図5Bは、本発明の実施の形態1に係る半導体記録装置についてのパリティブロックにおける論物変換テーブルの一例を示す図である。
【図6】図6は、本発明の実施の形態1に係る半導体記録装置におけるECCパリティ管理テーブルの一例を示す図である。
【図7】図7は、本発明の実施の形態1に係る半導体記録システムにおけるライト動作のフローチャートである。
【図8】図8は、本発明の実施の形態1に係る半導体記録システムにおける半導体記録装置のユーザデータ又はパリティデータのライトライト処理のフローチャートである。
【図9】図9は、本発明の実施の形態2に係る半導体記録システムの全体構成を示す図である。
【図10】図10は、本発明の実施の形態2に係る半導体記録システムにおける論理ブロックとパリティブロックとの関係を示す概念図である。
【図11A】図11Aは、本発明の実施の形態2に係る半導体記録装置についての論理ブロックにおける論物変換テーブルの一例を示す図である。
【図11B】図11Bは、本発明の実施の形態2に係る半導体記録装置についてのパリティブロックにおける論物変換テーブルの一例を示す図である。
【図12】図12は、本発明の実施の形態2に係る半導体記録装置におけるECCパリティ管理テーブルの一例を示す図である。
【図13】図13は、本発明の実施の形態2に係る半導体記録システムにおけるライト動作のフローチャートである。
【図14】図14は、本発明の実施の形態2に係る半導体記録システムにおける半導体記録装置のライト処理のフローチャートである。
【発明を実施するための形態】
【0040】
以下、実施の形態に係る半導体記録装置、半導体記録装置の制御方法及び半導体記録システムについて、図面を参照しながら説明する。
【0041】
(実施の形態1)
まず、実施の形態1に係る半導体記録装置及び半導体記録システムについて、図2を用いて説明する。図2は、実施の形態1に係る半導体記録システムの全体構成を示す図である。
【0042】
図2に示すように、実施の形態1に係る半導体記録システムは、ホスト機器100と着脱型の半導体記録装置200とによって構成される。
【0043】
以下、本実施の形態に係るホスト機器100の構成要素について説明する。
【0044】
図2に示すように、本実施の形態に係るホスト機器100は、データメモリ1と、専用ドライバ2と、外部インターフェイス部6とを備える。
【0045】
同図において、データメモリ1は、半導体記録装置200にライトするユーザデータ及びパリティデータを蓄積しておくためのメモリである。
【0046】
専用ドライバ2は、半導体記録装置200のための専用のドライバであり、第1のECC処理部3、専用コマンド処理部4及び汎用コマンド処理部5によって構成される。
【0047】
専用ドライバ2において、第1のECC処理部3は、データメモリ1に記録されたユーザデータに基づいて第1のECC符号を生成する。具体的に、第1のECC処理部3は、パリティデータ処理機能を有し、ユーザデータに対応するパリティデータを生成することにより、ユーザデータとパリティデータとからなる第1のECC符号を生成する。
【0048】
また、専用コマンド処理部4は、パリティデータに関連する専用コマンドの処理を行うものであり、第1のECC処理部3で生成されたパリティデータを半導体記録装置200にライトするための専用コマンド(専用ライトコマンド)を生成したり、半導体記録装置200に記録されているパリティデータを半導体記録装置200からリードするための専用コマンド(専用リードコマンド)を生成したりする。
【0049】
一方、汎用コマンド処理部5は、汎用ドライバ(不図示)で使用することができるとともにユーザデータに関連する汎用コマンドの処理を行う。ゆえに、専用ドライバ2の替わりに汎用ドライバを使用した場合は、専用ドライバ2は、汎用コマンド処理部5のみが機能する。
【0050】
外部インターフェイス部6は、半導体記録装置200との間でコマンド及びデータの送受信を行うためのインターフェイスであり、半導体記録装置200に対してライトコマンド(書き込み命令)やリードコマンド(読み出し命令)を発行したり、半導体記録装置200との間でユーザデータやパリティデータを送受信したりする。より具体的には、外部インターフェイス部6は、半導体記録装置200に記録するためのユーザデータ及び汎用ライトコマンドを含むライトコマンドグループ(第1のコマンドグループ)、半導体記録装置200に記録するためのパリティデータ及び専用ライトコマンドを含むライトコマンドグループ(第2のコマンドグループ)、又は、半導体記録装置200からユーザデータをリードするためのリードコマンド等を発行する。
【0051】
次に、本実施の形態に係る半導体記録装置200の構成要素について説明する。
【0052】
図2に示すように、本実施の形態に係る半導体記録装置200は、外部インターフェイス部10と、コマンド解析部11と、ブロック管理部12と、論物変換テーブル13と、空ブロックテーブル14と、ECCパリティ管理テーブル15と、第2のECC処理部16と、フラッシュメモリアクセス部17と、フラッシュメモリ18とを備える。
【0053】
同図において、外部インターフェイス部10は、ホスト機器100から、コマンド、ユーザデータ又はパリティデータを受信したり、フラッシュメモリ18に記録されたユーザデータを送信したりするインターフェイスである。
【0054】
例えば、外部インターフェイス部10は、ホスト機器100から、フラッシュメモリ18にライトするためのユーザデータ及び汎用ライトコマンドを含むライトコマンドグループを受信したり、フラッシュメモリ18にライトするためのパリティデータ及び専用ライトコマンドを含むライトコマンドグループを受信したりする。また、外部インターフェイス部10は、受信したコマンドをコマンド解析部11に送信する。
【0055】
さらに、外部インターフェイス部10は、ホスト機器100から、フラッシュメモリ18に記録されたユーザデータをリードするためのリードコマンドを受信して、ホスト機器100に対してユーザデータを送信する。
【0056】
コマンド解析部11は、外部インターフェイス部10を介してホスト機器100が発行したコマンドを受信して、当該コマンドを解析する。例えば、ホスト機器100から受信したライトコマンドは、コマンド解析部11によって解析され、汎用ライトコマンドであるか専用ライトコマンドであるかを識別する。
【0057】
ブロック管理部12は、論物変換テーブル13、空ブロックテーブル14及びECCパリティ管理テーブル15によってフラッシュメモリ18の物理ブロックを管理等するものであり、上記テーブルに記録される管理情報を更新したり、後述するようにライトコマンド等に基づいて様々な変換等の制御を行ったりする管理制御部である。ブロック管理部12は、その他にも本実施の形態に記載される様々な制御を行うための制御部としても機能する。
【0058】
論物変換テーブル13は、ホスト機器100とのインターフェイスにおいて、一意に定められた論理ブロックとフラッシュメモリ18の物理ブロックとの対応関係を示す管理情報(論物ブロック管理情報)が記録されたテーブルである。
【0059】
空ブロックテーブル14は、フラッシュメモリ18の全物理ブロックが新規にライト可能かどうかを示す管理情報(未使用ブロック管理情報)が記録されたテーブルである。空ブロックテーブル14には、フラッシュメモリ18の物理ブロック毎に、使用中ブロックには「1」が格納され、未使用ブロックには「0」が格納されている。
【0060】
ECCパリティ管理テーブル15は、夫々の論理ブロックに関連づけられてライトされる第1のECC符号が有効か否か、すなわち、ユーザデータ及びこれに対応するパリティデータが有効か否かを示す管理情報(データ有効性管理情報)が記録されたテーブルである。
【0061】
なお、論物変換テーブル13、空ブロックテーブル14及びECCパリティ管理テーブル15の各テーブルの詳細については後述する。
【0062】
第2のECC処理部16は、フラッシュメモリ18の物理ブロックを構成する各ページにおいて、ユーザデータ及びパリティデータに対して第2のECC符号の生成、及び、第2のECC符号を利用した誤り訂正を実施する。
【0063】
フラッシュメモリアクセス部17は、ブロック管理部12に示すアドレスに従い、フラッシュメモリ18のリード及びライトを行う。
【0064】
フラッシュメモリ18は、所定のデータを記録するための不揮発性メモリである。本実施の形態において、フラッシュメモリ18は、4個のフラッシュメモリチップで構成され、各フラッシュメモリチップは、複数のページによって構成される物理ブロックを有する。なお、ページとは、ホスト機器等の外部装置から見たときに、データを記録できる最小単位(書き込みアクセス単位)であり、ブロック(物理ブロック)とは、最小消去単位である。また、4個のフラッシュメモリチップのそれぞれには、ユーザデータ、パリティデータ、論物変換テーブル13のデータ、及び、ECCパリティ管理テーブル15のデータが保持される。
【0065】
パリティデータは、ホスト機器100の第1のECC処理部3で生成されるデータであって専用ドライバ2の内部データであるため、半導体記録装置200においては、ホスト機器100のファイルシステムが認識しない領域にライトされる。よって、パリティデータのライト/リードは、専用ドライバ2で発行される専用コマンドを介して、半導体記録装置200の予め定められた領域に限定して行われる。一方、ホスト機器100のファイルシステムが認識する領域には、汎用コマンドを介して、ユーザデータのライト/リードが行われる。
【0066】
ここで、本実施の形態で使用するフラッシュメモリ18の内部構成について、図3を用いて説明する。図3は、本実施の形態に係る半導体記録装置200におけるフラッシュメモリ18の内部構成を示す図である。なお、図3において、「PB」は物理ブロックを示しており、「PB0」はブロックアドレスが「0」の物理ブロックを示している。また、「PB1」及び「PB1023」も同様に、夫々ブロックアドレスが「1」の物理ブロック、ブロックアドレスが「1023」の物理ブロックを示している。
【0067】
また、図3に示すように、フラッシュメモリ18の各物理ブロックは、複数のページで構成されており、「ページ0」及び「ページ1」等は、夫々ページ番号が「0」のページ、ページ番号が「1」のページであることを示している。なお、本実施の形態において、1つの物理ブロックPBは、ページ0〜ページ63の64ページで構成されている。
【0068】
フラッシュメモリ18のページにライトするデータサイズを4KBとすれば、1物理ブロックは64ページで構成されているので、各ブロックは256KB(4KB*64)のデータを格納することができる。さらに、1つのフラッシュメモリは、1024個の物理ブロックから構成されているので、1つのフラッシュメモリには256MBのデータを格納することができる。本実施の形態において、フラッシュメモリ18は、4個のフラッシュメモリチップで構成されているため、4096個の物理ブロックが存在する。
【0069】
次に、4096個の物理ブロックへの各種データの割り当てについて説明する。本実施の形態では、第1のECC処理部3は、4バイトのユーザデータによって1バイトのパリティデータを生成する。つまり、フラッシュメモリ18にライトするユーザデータとパリティデータとの割合は4:1になる。そこで、全4096個のフラッシュメモリ18の物理ブロックにおいて、3200個の物理ブロックはユーザデータを記録するための物理ブロック(ユーザデータ用物理ブロック)として、800個の物理ブロックはパリティデータを記録するための物理ブロック(パリティデータ用物理ブロック)として、また、残りの96個は論物変換テーブルなどのシステムデータを記録するための物理ブロック又は代替ブロックとして割り当てられる。なお、後発的に不良となった物理ブロック(後発不良ブロック)が発生した場合は、当該後発不良ブロックをDefectブロックとして登録して当該物理ブロックの使用を禁止し、代わりに上記代替ブロックを使用する。
【0070】
次に、論理ブロックとパリティブロックについて、図4を用いて説明する。図4は、本実施の形態に係る半導体記録システムにおける論理ブロックとパリティブロックとの関係を示す概念図である。論理ブロックにはユーザデータが記録され、パリティブロックには連番の4個の論理ブロックにかかるユーザデータから生成されたパリティデータが記録される。図4において、パリティブロックは、ファイルシステムでは認識できないブロックであり、専用ドライバ2と半導体記録装置200との間のみにおいて予め定められた所定の領域である。
【0071】
論理ブロックのサイズは1MBであり、連続する2048セクタ(1セクタ=512B)に対応する。論理ブロックは0番から799番の連番が付されており、論理ブロック番号とセクタ番号の対応は、以下の式1で表される。
【0072】
(式1) (論理ブロック番号)=(セクタ番号)/2048
【0073】
パリティブロックのサイズは、論理ブロックと同様に1MBであり、パリティブロックの番号は0番から199番の連番が付されている。そして、論理ブロックと関連づけられたパリティブロックの番号は、以下の式2で表される。
【0074】
(式2) (関連するパリティブロック番号)=(論理ブロック番号)/4
【0075】
また、論理ブロック及びパリティブロックは、夫々64ページの論理ページによって構成される。論理ページのサイズは16KB(=1MB/64)であり、各論理ページには0番から63番までの連番が付される。
【0076】
セクタ番号と論理ブロックの論理ページ番号の関係は、以下の式3で表される。
【0077】
(式3) (論理ブロックの論理ページ番号)=((セクタ番号)%2048)/32
【0078】
なお、式3において、「%」は、剰余(除算の余り)を求める演算子を表す。以降、同様である。
【0079】
また、セクタ番号と、当該セクタに関連するパリティブロックの論理ページ番号との関係は、以下の式4で表される。
【0080】
(式4) (関連するパリティブロックの論理ページ番号)=((セクタ番号)%8192)/128
【0081】
次に、拡張ブロックと拡張ページについて説明する。
【0082】
拡張ブロックは、4個のフラッシュメモリ(フラッシュメモリ0〜フラッシュメモリ3)において、各フラッシュメモリから1物理ブロックずつ抽出した4個の物理ブロックによって構成される。1つの物理ブロックのサイズは256KBなので、拡張ブロックのサイズは1MBとなる。ここで、拡張ブロックを構成する4個の物理ブロック番号は同一のブロック番号である必要はなく、各物理ブロックの書き換え回数を平均化できることからランダムに抽出されることが望ましい。
【0083】
拡張ページは、拡張ブロックを構成する4個の物理ブロックの同一番号のページが連結されたものである。物理ブロックの1ページのサイズは4KBなので、拡張ページのサイズは16KBとなる。物理ブロックは64ページで構成されているので、拡張ブロックも同様に64ページの拡張ページにより構成される。
【0084】
次に、論物変換テーブル13について説明する。
【0085】
論物変換テーブル13は、論理ブロックと拡張ブロックとの対応関係を示す管理情報(第1の論物ブロック管理情報)が記録されたテーブルと、パリティブロックと拡張ブロックとの対応関係を示す管理情報(第2の論物ブロック管理情報)が記録されたテーブルとからなる。拡張ブロックは、上述のとおり、4個のフラッシュメモリから夫々1個抽出した4個の物理ブロックで構成されているので、論理ブロック番号及びパリティブロック番号とそれに対応する4個の物理ブロック番号とは、夫々対応付けられてテーブル化される。
【0086】
図5A及び図5Bに論物変換テーブル13の一例を示す。図5Aは、本実施の形態に係る半導体記録装置200についての論理ブロックにおける論物変換テーブルの一例を示す図であり、図5Bは、同半導体記録装置200についてのパリティブロックにおける論物変換テーブルの一例を示す図である。
【0087】
図5Aに示すように、論理ブロックにおける論物変換テーブル13は、各論理ブロック番号と、各論理ブロックに割り当てられた物理ブロック番号との対応表であり、同論物変換テーブル13には、0番〜799番の800個の論理ブロック夫々に対応する4つの物理ブロック番号が登録されており、これにより、フラッシュメモリ18の物理ブロックが管理されている。
【0088】
また、図5Bに示すように、パリティブロックの論物変換テーブル13は、各パリティブロック番号と、各パリティブロックに割り当てられた物理ブロック番号との対応表であり、同論物変換テーブル13には、0番〜199番の200個のパリティブロック夫々に対応する物理ブロック番号が登録されており、これにより、フラッシュメモリ18の物理ブロックが管理されている。
【0089】
以下、論理ブロック又はパリティブロックと、物理ブロックとの割り当てについて、さらに詳細に説明する。
【0090】
図5Aに示すように、1個の論理ブロック番号に対応して、4つのフラッシュメモリ(フラッシュメモリ0〜3)の各フラッシュメモリより1個ずつの物理ブロックが割り当てられる。図5Aにおいて、物理ブロック番号として示される同図の符号「0−0」、「1−300」、「2−600」及び「3−900」等は、夫々0番のフラッシュメモリ0における0番の物理ブロック、1番のフラッシュメモリ1における300番の物理ブロック、2番のフラッシュメモリ2における600番の物理ブロック、3番のフラッシュメモリ3における900番の物理ブロックを示している。また、符号「0−1024」、「1−1024」、「2−1024」及び「3−1024」は、各フラッシュメモリにおける1024番の物理ブロックを示しているが、各フラッシュメモリにおける有効な物理ブロック番号は0〜1023であるため、1024番を示す「1024」の符号は、当該論理ブロックには物理ブロックが割り当てられていない、あるいはライトされているが使用されていないことを示している。すなわち、1024番の物理ブロック番号が割り当てられた物理ブロックは、未使用のブロックである。なお、以上は、図5Bにおいても同様である。
【0091】
具体的には、例えば、図5Aによると、論理ブロック番号が0番の論理ブロックには、「0−0」、「1−300」、「2−600」及び「3−900」の番号の4個の物理ブロックが割り当てられ、1番の論理ブロックには、「0−100」、「1−400」、「2−700」及び「3−1000」の番号の4個の物理ブロックが割り当てられ、2番の論理ブロックには、「0−200」、「1−500」、「2−800」及び「3−0」の番号の4個の物理ブロックが割り当てられ、そして、3番の論理ブロックには、「0−300」、「1−600」、「2−900」及び「3−100」の番号の4個の物理ブロックが夫々割り当てられている。また、論理ブロック番号が799番の論理ブロックには、物理ブロックが割り当てられていないことを示している。
【0092】
同様に、図5Bによると、パリティブロック番号が0番のパリティブロックには、「0−400」、「1−700」、「2−1000」及び「3−200」の4個の物理ブロックが割り当てられ、1番及び199番のパリティブロックには、物理ブロックが割り当てられていないことを示している。
【0093】
図5A及び図5Bに示される論物変換テーブル13は、ライトの工程において論理ブロックが書き換えられる毎に更新される。更新は、ブロック管理部12によって行われる。更新において、ブロック管理部12は、論物変換テーブル13における1024番の物理ブロック番号が割り当てられた未使用の物理ブロックを各フラッシュメモリから1個ずつ新たに抽出することによって新論理ブロックを生成し、当該新論理ブロックに対応する未使用の物理ブロックにユーザデータをライトしてから、ライトした物理ブロックの番号と新論理ブロックの番号とが対応するようにして論物変換テーブル13を更新すればよい。その際、以前に使用していた物理ブロックは未使用ブロックとなるように更新され、論物変換テーブル13における当該物理ブロックには1024番が割り当てられる。なお、フラッシュメモリ18の全物理ブロックから有効物理ブロック(論物変換テーブル13に使用されている状態として記録されている物理ブロック)を除いた物理ブロックが未使用ブロックとなる。
【0094】
未使用ブロックの抽出はデータをライトする毎に実施しても良いが、本実施の形態では、後述する空ブロックテーブル14を電源投入時に作成しておき、空ブロックテーブル14を管理することにより、未使用ブロックの抽出を実施した。
【0095】
次に、空ブロックテーブル14について説明する。
【0096】
空ブロックテーブル14は、上述のとおり、フラッシュメモリ18の全物理ブロックが新規にライト可能かどうかを示す管理情報(未使用ブロック管理情報)が記録されたテーブルである。空ブロックテーブル14において、論物変換テーブル13で使用されている状態として記録されている有効物理ブロック及び使用不可と判断された不良物理ブロックには使用中の「1」が格納され、未ライトの物理ブロック及びライトされているが未使用となった物理ブロックには「0」が格納されている。
【0097】
より具体的には、ブロック管理部12は、電源投入時に論物変換テーブル13と不良物理ブロックとをリスト化した不良物理ブロックテーブルをリードすることにより、空ブロックテーブル14を作成する。そして、ブロック管理部12は、論物変換テーブル13の更新と同期して空ブロックテーブル14を更新する。これにより、未使用ブロックの抽出処理を高速化することができる。
【0098】
次に、ECCパリティ管理テーブル15について説明する。
【0099】
ECCパリティ管理テーブル15は、第1のECC処理部3により生成され、半導体記録装置200のフラッシュメモリ18にライトされた第1のECC符号、すなわち、ユーザデータ及びこれに対応するパリティデータが有効か否かを示す管理情報(データ有効性管理情報)が登録されるテーブルである。ユーザデータ及びパリティデータの有効性は、論理ブロック毎に管理される。
【0100】
図6に、ECCパリティ管理テーブル15の一例を示す。図6は、本実施の形態に係る半導体記録装置200におけるECCパリティ管理テーブルの一例を示す図である。
【0101】
図6に示すように、ECCパリティ管理テーブル15は、論理ブロック番号が0番から799番までの800個の全論理ブロックにおいて、夫々の論理ブロックにかかるユーザデータ及びパリティデータの有効性を示すフラグ(管理情報)を保持し、夫々の論理ブロックにかかるユーザデータ及びパリティデータが有効であれば「1」が格納され、無効であれば「0」が格納される。
【0102】
例えば、図6においては、論理ブロック番号が0〜2番の論理ブロックに対応するユーザデータの有効性を示すセル及びパリティデータの有効性を示すセルには、共に「1」が格納されているので、ユーザデータ及びパリティデータは共に有効であることが示されている。同様に、3番の論理ブロックでは、ユーザデータのみが有効であり、他の論理ブロックでは、ユーザデータ及びパリティデータは共に無効であることが示されている。
【0103】
ECCパリティ管理テーブル15は、半導体記録装置200のフォーマット時に、全論理ブロックのユーザデータ及びパリティデータが共に無効とされ、全てのセルに「0」が格納される。そして、ブロック管理部12によって、当該論理ブロックにかかるユーザデータのライト開始時点においては、フラッシュメモリ18に記録済みのユーザデータとこれに対応するパリティデータとが共に無効化するように管理情報が更新される。さらに、当該論理ブロックにかかるユーザデータのライト終了時点においては、記録済みのユーザデータが有効化するように管理情報が更新され、当該論理ブロックにかかるユーザデータとパリティデータとのライト処理が共に完了した時点において、記録済みのパリティデータが有効となるように管理情報を更新する。
【0104】
以上が、本実施の形態におけるメモリ制御の要素となる、論理ブロック、パリティブロック、論理ページ、拡張ブロック、拡張ページ、論物変換テーブル、空ブロックテーブル及びECCパリティ管理テーブルについての説明である。
【0105】
以下、本実施の形態に係る半導体記録システムのライト時の動作について、図2を参照しながら、図7を用いてさらに詳細に説明する。図7は、本実施の形態に係る半導体記録システムにおけるライト動作のフローチャートである。
【0106】
本実施の形態に係る半導体記録システムにおいて、ライトコマンド(ライト命令)、ライト対象のセクタ番号、そのセクタ番号に対応するユーザデータ、及び、ユーザデータに関連付けられたパリティデータは、ホスト機器100の外部インターフェイス部6から半導体記録装置200の外部インターフェイス部10に転送される。なお、以降は、説明を簡単にするために、半導体記録装置200にライトするデータアライメントは、上述した論理ブロックの単位の1MBに限定して説明する。
【0107】
最初に、ホスト機器100側の動作について詳細に説明する。
【0108】
図7に示すように、まず、ホスト機器100において、第1のECC処理が行われる(S110)。
【0109】
この場合、データメモリ1に蓄積されたライト対象のユーザデータが、第1のECC処理部3に入力される。
【0110】
具体的に、第1のECC処理部3は、データメモリ1に格納されたユーザデータを4KB間隔で1バイトずつリードし、合計4バイトのユーザデータのEXOR演算を行って1バイトのパリティデータを生成する。生成したパリティデータはデータメモリ1の所定の領域に格納される。半導体記録装置200のフラッシュメモリ18における1論理ページのサイズは16KBなので、順次パリティデータを生成すれば、第1のECC処理部3は、1論理ページ当たり4KBのパリティデータを生成することになる。ゆえに、第1のECC処理部3は、1論理ブロックに対しては、64ページ分の256KBのパリティデータを生成することになる。
【0111】
このように、4KB単位で1バイトずつ抽出した4バイトから1バイトのパリティデータを生成すれば、16KBで構成される1論理ページは4KB単位で4個の物理ブロックで構成されているので、第1のECC符号を構成する1バイトのシンボル(第1のECC符号同士を識別するための識別符号)が異なる物理ブロックにライトされることになり、物理ブロックの後発不良及びデータ保持特性の劣化に対する誤り耐性を強化することができる。
【0112】
第1のECC符号が生成されると、ホスト機器100は、図7に示すように、ユーザデータに関連する汎用ライトコマンド、又は、パリティデータに関連する専用ライトコマンドを半導体記録装置200に発行する(S120)。
【0113】
汎用ライトコマンドは、データメモリ1に格納されているユーザデータに対応するライトコマンドであり、汎用コマンド処理部5によって、ライトするユーザデータの先頭論理セクタ番号、ライトするセクタ数、及び、ライトするユーザデータが格納されているホスト機器100側のメモリアドレスが付加されることにより生成される。汎用ライトコマンドは、外部インターフェイス部6を介して半導体記録装置200に発行される。
【0114】
一方、専用ライトコマンドは、データメモリ1に格納されているパリティデータに対応するライトコマンドであり、専用コマンド処理部4によって、予め定められたパリティブロック番号、その論理ページ番号、及び、ライトするパリティデータが格納されているホスト機器100側のメモリアドレスが付加されることにより生成される。専用ライトコマンドは、外部インターフェイス部6を介して半導体記録装置200に発行される。
【0115】
なお、1論理ブロックにかかるパリティデータは、1パリティブロックの連続する16論理ページ分に当るので、専用ドライバ2は16KBの専用ライトコマンドを16回発行すれば、1論理ブロックにかかるパリティデータをライトすることができる。
【0116】
また、本実施の形態において、ユーザデータのライト処理と当該ユーザデータに関連するパリティデータのライト処理とはシーケンシャルで行うが、ユーザデータのライト処理とパリティデータのライト処理のシーケンスについては、後述する半導体記録装置200の取り外しを考慮して、ユーザデータのライト処理の後に、当該ユーザデータに関連づけられたパリティデータのライト処理を行うことが好ましい。
【0117】
次に、半導体記録装置200側の動作について詳細に説明する。すなわち、本実施の形態に係る半導体記録装置の制御方法について説明する。
【0118】
図7に示すように、半導体記録装置200は、ホスト機器100からライトコマンドを受け取ると、ユーザデータ又はパリティデータのライト処理を行う(S130)。ライト処理の詳細については、後述する。
【0119】
その後、半導体記録装置200は、第2のECC処理部16によって、第2のECC処理を行う(S140)。第2のECC処理部16は、4個のフラッシュメモリ夫々に対応して4系統実装されている。第2のECC処理部16は、ホスト機器側からのアクセスの単位がセクタ(=512バイト)であることを考慮して、入力される4Kバイトのデータを8分割し、8分割した夫々の512バイトに対して16バイトのパリティが付加されたリードソロモン符号を生成する。このような構成とすることにより、512バイト当たり、最大8バイトのエラーを訂正することができる。
【0120】
次に、半導体記録装置200は、フラッシュメモリアクセス部17によって、第2のECCパリティ付きデータのライトを行う(S150)。フラッシュメモリアクセス部17は、4個のフラッシュメモリ夫々に対応して4系統実装されている。夫々のフラッシュメモリアクセス部17は、フラッシュメモリのアドレス及びライトに関するコマンドを発行し、第2のECC処理部16によって生成された第2のECCパリティ付データを夫々のフラッシュメモリにライトする。
【0121】
以上により、本実施の形態に係る半導体記録システムのライト動作が終了する。
【0122】
ここで、図7に示す半導体記録装置200のユーザデータ又はパリティデータのライト処理(S130)について、図8を用いて詳細に説明する。図8は、本実施の形態に係る半導体記録システムにおける半導体記録装置200についてのユーザデータ又はパリティデータのライト処理のフローチャートである。
【0123】
図8に示すように、半導記録装置200は、外部インターフェイス部10によってホスト機器100からのライトコマンドを受信する(S131)。
【0124】
次に、外部インターフェイス部10を介して受信されたライトコマンドは、コマンド解析部11によって解析される(S132)。コマンド解析部11によって、ホスト機器100から受信したライトコマンドがユーザデータに関連する汎用ライトコマンドであるか、あるいは、パリティデータに関連する専用ライトコマンドであるかが識別される。汎用コマンドである場合は、当該ライトコマンドは汎用ライトコマンドとして認識される。一方、ホスト機器100からのライトコマンドが専用コマンドである場合は、当該ライトコマンドは専用コマンドとして認識される。
【0125】
そして、ライトコマンドが汎用ライトコマンドである場合は、半導体記録装置200は、ホスト機器側のメモリアドレスに格納されているユーザデータをホスト機器側のデータメモリ1からリードすることにより、ユーザデータを取得する(S133)。
【0126】
このとき、ブロック管理部12は、コマンド解析部11により取得した汎用ライトコマンドに基づいてデータをライトするメモリ領域を対応付けるために、当該汎用ライトコマンドにかかる先頭論理セクタ番号及びセクタ数を、内蔵するフラッシュメモリ18のアドレス情報に変換する。これにより、取得したユーザデータが、4個のフラッシュメモリの所定のアドレスに対応するメモリ領域に割り当てられる。
【0127】
本実施の形態において、16KBのユーザデータと4個のフラッシュメモリ18との対応関係は、次のように行われる。(セクタ番号%32)/4=0の場合にはユーザデータはフラッシュメモリ0にライトされ、(セクタ番号%32)/4=1の場合にはユーザデータはフラッシュメモリ1にライトされ、(セクタ番号%32)/4=2の場合にはユーザデータはフラッシュメモリ2にライトされ、(セクタ番号%32)/4=3の場合にはユーザデータはフラッシュメモリ3にライトされる。
【0128】
また、ブロック管理部12は、論理セクタ番号を、上記式1及び上記式3に従い、半導体記録装置200の論理ブロック番号と論理ページ番号に変換する。そして、ブロック管理部12は、空ブロックテーブル14を参照しながら、ユーザデータをライトする各フラッシュメモリの物理ブロック番号とページ番号とを導出し、ライト対象の論理ブロック番号及び論理ページ番号と、導出した各フラッシュメモリの物理ブロック番号及びページ番号との関連を論物変換テーブル13に格納する。
【0129】
なお、上記動作において、論理ページ番号と物理ブロックのページ番号とを同一番号に定めておけば、論物変換テーブル13に格納するデータは論理ブロック番号と各フラッシュメモリの物理ブロック番号との対応のみでよい。
【0130】
さらに、ブロック管理部12によって、ECCパリティ管理テーブル15が制御される。具体的に、ブロック管理部12は、ユーザデータのフラッシュメモリ18へのライト開始時点において、一旦、当該ライトコマンドにかかる論理ブロックのユーザデータと、当該ユーザデータに対応するパリティデータとが共に無効であることを示すように、ECCパリティ管理テーブル15の管理情報を更新する(S134)。
【0131】
すなわち、図6で説明したように、ライトコマンドにかかる論理ブロックの番号に対応するユーザデータ及びパリティデータの有効性を示すセルに、データが無効であることを示す管理情報(フラグ)として「0」を格納する又は「0」となるように更新する。
【0132】
その後、少なくともユーザデータのライト終了時点において、当該ライトコマンドにかかる論理ブロックのユーザデータのみが有効であることを示すように、ECCパリティ管理テーブル15の管理情報を更新する(S135)。
【0133】
すなわち、ライト開始時において一旦無効化したユーザデータが有効となるように管理情報(フラグ)を更新する。
【0134】
なお、本実施の形態において、論物変換テーブル13の更新は、ユーザデータのライト終了時点で実施する。また、ECCパリティ管理テーブル15のユーザデータ部が無効であって、論物変換テーブル13に有効な物理ブロック番号が格納されているような場合は、ユーザデータのライト中に半導体記録装置200の取り外し等が発生したことになり、この場合、ブロック管理部12によって、書き換え前の論物変換テーブル13にかかる物理ブロックにライトされているデータをリードすればよい。
【0135】
次に、図8に示すライトコマンド解析(S132)において、ホスト機器100からのライトコマンドが専用ライトコマンドであると認識された場合について説明する。
【0136】
この場合、半導体記録装置200は、パリティデータが格納されているホスト機器100側のメモリアドレスにかかるデータをホスト機器100側のデータメモリ1からリードすることにより、パリティデータを取得する(S136)。
【0137】
このとき、ブロック管理部12は、コマンド解析部11により取得した専用ライトコマンドにかかるパリティブロック番号とその論理ページ番号を、内蔵するフラッシュメモリ18のアドレス情報に変換する。上述のように、4バイトのユーザデータより1バイトのパリティデータが生成されるので、4論理ページ分のユーザデータに対応するパリティデータが1論理ページにライトされる。
【0138】
本実施の形態では、1論理ブロックに対応する256KBのパリティデータのライトを実施するため、1論理ページ(=16KB)のパリティライトコマンドを64回発行すればよい。なお、16KB未満のパリティデータをライトする場合には、ホスト機器100側で、対応する論理ページのパリティデータを専用リードコマンドによってリードした後に、更新部分を書き換えてライトすることになる。
【0139】
パリティブロック番号とその論理ページ番号を、内蔵するフラッシュメモリ18のアドレス情報に変換する制御動作において、汎用ライトコマンドと同様に、ブロック管理部12は、空ブロックテーブル14を参照しながら、パリティデータをライトする各フラッシュメモリの物理ブロック番号とページ番号とを導出し、ライト対象のパリティブロック番号及びその論理ページ番号と、導出した各フラッシュメモリの物理ブロック番号及びページ番号との関連を論物変換テーブル13に格納する。
【0140】
なお、上記動作において、論理ページ番号と物理ブロックのページ番号とを同一番号に定めておけば、論物変換テーブル13に格納するデータはパリティブロック番号と各フラッシュメモリの物理ブロック番号の対応のみでよい。
【0141】
さらに、ブロック管理部12によって、ECCパリティ管理テーブル15が制御される。具体的に、ブロック管理部12は、1個の論理ブロックに関連づけられた全パリティデータのライト終了時点において、当該パリティデータと関連づけられた論理ブロックのパリティデータが有効であることを示すように、ECCパリティ管理テーブル15の管理情報を更新する(S137)。
【0142】
これにより、パリティデータのライト処理は終了するが、1個の論理ブロックのユーザデータのライト処理と、その論理ブロックに関連づけられたパリティデータのライト処理とは、以下の2つのルールに従って実施することが必要となる。なお、このようなユーザデータとパリティデータとのライト順序は、ブロック管理部12によって制御することができる。
【0143】
(ルール1)論理ブロックへのユーザデータのライト開始より先に当該論理ブロックに関連付けられたパリティデータをライトしてはいけない。すなわち、ホスト機器100は、ユーザデータに関連する汎用ライトコマンドを送信した後で、パリティデータに関連する専用ライトコマンドを送信し、半導体記録装置200は、フラッシュメモリ18に対して、ユーザデータをライトした後に、パリティデータをライトする。
【0144】
(ルール2)1論理ブロックに関連づけられた全パリティデータのライト終了前に、対応する論理ブロックの全ユーザデータのライトを終了している。すなわち、ホスト機器100は、汎用ライトコマンドの送信から開始し、対応する論理ブロックの全ユーザデータのライトが完了した後で、専用ライトコマンドの送信を開始し、1論理ブロックに関連づけられた全パリティデータのライトを行う。
【0145】
上記2つのルールは、着脱可能な半導体記録装置200がライト中に取り外された場合、あるいは、専用ドライバでライトされたユーザデータを汎用ドライバで書き換えられた場合において有効に作用する。以下、この2つの場合について説明する。
【0146】
まず、着脱可能な半導体記録装置200がライト中に取り外された場合について説明する。この場合、さらに、半導体記録装置200がライト中に取り外されるタイミングを分類すると、以下の4つに分類される。
【0147】
(T1)半導体記録装置200において、ユーザデータをライトしている途中
(T2)半導体記録装置200において、パリティデータをライトしている途中
(T3)半導体記録装置200において、ユーザデータのライトが完了後、ユーザデータと関連するパリティデータのライトが開始される前
(T4)(T1)〜(T3)に該当しないタイミング
【0148】
上記の4つの取り外しタイミングにおけるECCパリティ管理テーブル15における「ユーザデータの有効性」及び「パリティデータの有効性」について詳細に説明する。
【0149】
(T1)のタイミングで半導体記録装置200が取り外された場合は、ユーザデータのライト開始時にECCパリティ管理テーブル15における「ユーザデータの有効性」と「パリティデータの有効性」とは共に無効に更新されているため、「ユーザデータの有効性」と「パリティデータの有効性」とは共に無効となる。しかしながら、論物変換テーブル13の更新は、ユーザデータのライト終了時点で実施するため、更新前の論物変換テーブル13にかかる物理ブロックにライトされているユーザデータ及びパリティデータは有効である。
【0150】
また、(T2)のタイミングで半導体記録装置200が取り外された場合は、ECCパリティ管理テーブル15における「ユーザデータの有効性」は有効であり、「パリティデータの有効性」は無効となる。従って、この場合は、更新したユーザデータのみを使用し、パリティデータは使用しない。
【0151】
また、(T3)のタイミングで半導体記録装置200が取り外された場合は、ECCパリティ管理テーブル15における「ユーザデータの有効性」は有効であり、「パリティデータの有効性」は無効となる。従って、この場合も、更新したユーザデータのみを使用し、パリティデータは使用しない。
【0152】
また、(T4)のタイミングではライトにかかるシーケンスは発生しておらず、問題とならない。
【0153】
このように、ユーザデータのライト開始時において、ECCパリティ管理テーブル15における「ユーザデータの有効性」と「パリティデータの有効性」とを共に無効に更新すれば、ユーザデータが更新されている一方で、それにかかるパリティデータが更新されていない場合に半導体記録装置200が取り外されることにより発生するユーザデータのパリティデータの不一致を検出することができる。ゆえに、ユーザデータのリードでエラーが発生した場合に、パリティデータの使用を禁止することが可能となり、相関のないパリティデータを使用することで発生する誤訂正を防止することができる。なお、このようなユーザデータとパリティデータとの不一致の検出は、ブロック管理部12等の半導体記録装置200内の制御部で行うことができる。
【0154】
次に、専用ドライバ2でライトされたユーザデータを汎用ドライバで書き換えられた場合について説明する。
【0155】
本実施の形態におけるパリティデータのライト領域は専用ドライバ2のみがアクセス可能な領域であり、汎用ドライバでアクセスすることができない領域である。よって、汎用ドライバを使用する場合は、パリティデータのライトコマンドを使用することはできない。
【0156】
専用ドライバ2でライトされたブロックにかかるECCパリティ管理テーブル15の「ユーザデータの有効性」と「パリティデータの有効性」とは共に有効な状態である。この状態から汎用ドライバでユーザデータのライトコマンドのみを実施すると、ユーザデータのライトコマンドの開始時点において、ECCパリティ管理テーブル15の「ユーザデータの有効性」と「パリティデータの有効性」とは共に無効となる。そして、ユーザデータのライトコマンドが終了すると、ECCパリティ管理テーブル15の「ユーザデータの有効性」のみが有効となり、「パリティデータの有効性」は無効のままとなる。よって、ユーザデータとそれにかかるパリティデータとは関連性がないと判定することができ、ユーザデータのリードでエラーが発生した場合に、パリティデータの使用を禁止することができる。これにより、相関のないパリティデータを使用することで発生する誤訂正を防止することができる。なお、このようなユーザデータとパリティデータとの関連性の判定は、ブロック管理部12等の半導体記録装置200内の制御部で行うことができる。
【0157】
次に、本実施の形態に係る半導体記録システムのリード時の動作について、ホスト機器100に汎用ドライバが実装されている場合、ホスト機器100に専用ドライバが実装されている場合の夫々について説明する。
【0158】
まず、ホスト機器100に汎用ドライバが実装されている場合について説明する。
【0159】
この場合、外部インターフェイス部10を介して受信されたリードコマンドは、コマンド解析部11により解析され、当該リードコマンドが汎用リードコマンドとして認識される。
【0160】
このとき、ブロック管理部12は、汎用リードコマンドにより取得されたユーザデータのリードにかかる先頭論理セクタ番号及びリードセクタ数を、論物変換テーブル13を参照しながら内蔵するフラッシュメモリ18のアドレス情報に変換する。
【0161】
そして、フラッシュメモリアクセス部17により、変換したアドレスに従ってフラッシュメモリ18に対してリードコマンドが発行され、フラッシュメモリ18からユーザデータがリードされる。フラッシュメモリ18からリードされたユーザデータは、第2のECC処理部16に入力される。第2のECC処理部16では、フラッシュメモリ18のページ毎にエラー訂正を実施する。そして、エラー訂正が可能であった場合は、ブロック管理部12は、エラー訂正されたユーザデータを、ホスト機器100側のデータメモリ1の所定アドレスに外部インターフェイス部10を介して転送する。一方、エラー訂正が不可であった場合は、ブロック管理部12は、外部インターフェイス部10を介してエラー訂正が不可であったことをホスト機器100に転送する。
【0162】
次に、専用ドライバ2が実装されている場合の動作について説明する。なお、第2のECC処理部16でエラー訂正が可能であった場合の動作は、汎用ドライバが実装された場合の動作と同一であるので説明は省略する。
【0163】
第2のECC処理部16でエラー訂正が不可であった場合の動作は、以下の(S1)〜(S9)のステップで実施される。
【0164】
(S1)まず、半導体記録装置200は、外部インターフェイス部10を介してエラー訂正が不可であったことと、そのエラーが発生した論理セクタ番号をホスト機器100に転送する。
【0165】
(S2)次に、ホスト機器100の専用ドライバ2が、専用コマンド処理部4により、エラーが発生した論理セクタ番号にかかるパリティブロック番号と論理ページ番号とを算出する。
【0166】
(S3)その後、専用コマンド処理部4は、エラーが発生した論理セクタ番号にかかるパリティブロック番号と論理ページ番号とに関連する専用リードコマンドを、外部インターフェイス部6を介して半導体記録装置200に対して発行する。
【0167】
(S4)半導体記録装置200は、外部インターフェイス部10を介してホスト機器100からの専用リードコマンドを受信する。コマンド解析部11は、受信した専用リードコマンドをパリティデータのリードコマンドとして判定する。
【0168】
(S5)その後、ブロック管理部12は、論物変換テーブル13を参照しながら、パリティブロック番号とその論理ページ番号とをフラッシュメモリ18のアドレスに変換する。
【0169】
(S6)さらに、ブロック管理部12は、ECCパリティ管理テーブル15を参照しながら、当該論理ブロックに対応するパリティデータの有効性を照合する。
【0170】
(S7)そして、ブロック管理部12によって、当該論理ブロックに対応するパリティデータが無効と判定された場合は、パリティデータが使用不可なことをホスト機器100に転送し、シーケンスは終了する。一方、当該論理ブロックに対応するパリティデータが有効と判定された場合は、フラッシュメモリアクセス部17によりリードコマンドを発行し、フラッシュメモリ18からパリティデータがリードされる。
【0171】
(S8)その後、リードされたパリティデータは第2のECC処理部16によってエラー訂正される。このとき、エラー訂正が不能な場合は、エラー訂正不能をホスト機器100に転送し、シーケンスは終了する。一方、エラー訂正が可能な場合は、ブロック管理部12は、エラー訂正されたパリティデータをホスト機器100側のデータメモリ1の所定アドレスに外部インターフェイス部10を介して転送する。
【0172】
(S9)ホスト機器100は、第1のECC処理部3により、パリティデータを使用してリードエラーが検出されたユーザデータの誤り訂正を実施する。
【0173】
このように、専用ドライバ2がホスト機器100に実装されている場合、専用ドライバ2によって生成された第1のECCパリティは半導体記録装置200にライトされ、ECCパリティ管理テーブル15によって、ライトされているユーザデータにかかるパリティデータの有効性が管理される。そして、ユーザデータのリードでエラーが発生した場合、パリティデータを使用したエラー訂正の可否をECCパリティ管理テーブル15により判定することができるので、ライト中の半導体記録装置200の取り外しや汎用ドライバによるユーザデータの書き換えで発生するユーザデータとパリティデータとの不整合を検出することができる。よって、ユーザデータのリードエラーが発生した場合において、ユーザデータと不整合となっているパリティデータの使用を禁止することができるため、不整合となっているパリティデータによる誤訂正を防止することができる。
【0174】
なお、本実施の形態では半導体記録装置200を構成するメモリをフラッシュメモリとして説明したが、不揮発性メモリであれば同様の効果が得られることはいうまでもない。
【0175】
また、本実施の形態では、第1のECC符号のパリティは単純パリティにしたが、複数バイトのパリティにすることによりエラー訂正能力が向上することはいうまでもない。
【0176】
また、本実施の形態では、第1のECC符号を構成するシンボル数はパリティを含めて5個にしたが、それに限定されるものではない。
【0177】
また、本実施の形態では、第1のECC符号の処理はドライバで実施する方式にしたが、ホスト機器100のハードウェアで実施してもよい。
【0178】
さらに、本実施の形態では、ECCパリティ管理テーブル15により、論理ブロック単位でパリティデータの有効性を管理したが、論理ページ単位でパリティデータの有効性を管理してもよい。この場合の管理手法は、パリティブロックの論理ページ単位で、パリティデータの有効性を判定する2ビットの「更新の可能性有り」と「更新完了」とを示すマーカを設け、ユーザデータのライト開始時に「更新の可能性有り」とし、パリティデータのライト完了後に「更新完了」とすればよい。そして、ユーザデータのエラーが発生した場合、「更新の可能性有り」かつ「更新完了」のパターンのみ、パリティデータを有効にしてエラー訂正を実施することにより、上記と同様の効果が得られる。
【0179】
(実施の形態2)
次に、実施の形態2に係る半導体記録装置及び半導体記録システムについて、図9を用いて説明する。図9は、実施の形態2に係る半導体記録システムの全体構成を示す図である。
【0180】
図9に示す本実施の形態に係る半導体記録システムは、図2に示す実施の形態1に係る半導体記録システムの変形である。従って、図9において、図2に示す構成要素と同じ機能の構成要素については同じ符号を付しており、その説明は省略又は簡略化する。
【0181】
実施の形態2と実施の形態1とが異なる点は、上述の実施の形態1では、第1のECC処理部3はホスト機器100に実装され、第1のECC符号はホスト機器100によって生成されていたのに対し、本実施の形態では、第1のECC処理部3は半導体記録装置300の内部に実装され、ホスト機器より発行されるライトコマンドのパラメータに応じて第1のECC処理のON/OFFを切り替える点である。
【0182】
具体的には、実施の形態1で説明した論理ページの整数倍(=16KBの整数倍)のライトコマンドが発行された場合は、第1のECC符号を生成してパリティデータを記録し、それ以外のライトコマンドが発行された場合は、第1のECC符号は生成せずに、パリティデータを記録しない。これにより、16KB未満の小ブロックのライトにおいて、対象となる64KB未満のブロックの属する論理ページのデータをリードし、ライト対象となるデータとリードしたデータとで16KBを再構成してライトする処理を行うことにより、ライト転送レートの劣化を防止することができる。
【0183】
以下、図9を参照しながら、本実施の形態に係る半導体記録装置300の内部構成とその動作について説明する。
【0184】
図9に示すように、本実施の形態に係る半導体記録装置300は、外部インターフェイス部10と、コマンド解析部20と、ブロック管理部12と、論物変換テーブル21と、空ブロックテーブル14と、ECCパリティ管理テーブル22と、第2のECC処理部16と、フラッシュメモリアクセス部17と、フラッシュメモリ23と、そして、第1のECC処理部3とを備える。
【0185】
同図において、コマンド解析部20は、ホスト機器から命令されるユーザデータに対応するライトコマンドを解析して、当該ライトコマンドのサイズが論理ページのアライメント(=16KB)の整数倍かどうかを検出する。そして、ライトコマンドがアライメント(=16KB)の整数倍の場合は、第1のECC処理部3によって第1のECCパリティが生成される。一方、ライトコマンドがアライメント(=16KB)の整数倍でない場合は、第1のECC処理部3はスルーして、第1のECCパリティは生成されない。
【0186】
第1のECC処理部3は、実施の形態1と同様に、ユーザデータに基づいて第1のECC符号を生成する。本実施の形態では、第1のECC処理部3は、ユーザデータを4KB間隔で1バイトずつリードし、合計4バイトのユーザデータのEXOR演算を行って、1バイトのパリティデータを生成する。半導体記録装置300のフラッシュメモリ23における1論理ページのサイズは16KBなので、順次パリティデータを生成すれば、第1のECC処理部3は、1論理ページ当たり4KBのパリティデータを生成することになる。
【0187】
ここで、本実施の形態に係る半導体記録システムにおける論理ブロックとパリティブロックとの関係について、図10を用いて説明する。図10は、本実施の形態に係る半導体記録システムにおける論理ブロックとパリティブロックとの関係を示す概念図である。
【0188】
本実施の形態において、論理ブロックとパリティブロックとの定義は、実施の形態1とは異なる。すなわち、上述の実施の形態1では、1個のパリティブロックが4個の論理ブロックに割り当てられていたが、本実施の形態では、図10に示すように、1個のパリティブロックに対して1個の論理ブロックが対応するように構成されている。また、本実施の形態でも、ユーザデータとパリティデータの比は4:1である。
【0189】
従って、図10に示すように、論理ブロックは、フラッシュメモリの4個の物理ブロックから構成され、パリティブロックは、フラッシュメモリの1個の物理ブロックから構成される。このように、実施の形態1では、半導体記録装置200には4個のフラッシュメモリ18を内蔵していたが、本実施の形態では、半導体記録装置300には、5個のフラッシュメモリ23が内蔵されている。
【0190】
このように、本実施の形態と実施の形態1とは、論理ブロックとパリティブロックとの定義が異なるために、本実施の形態に係る論物変換テーブル21も実施の形態1とは異なる構成となる。以下、本実施の形態に係る半導体記録装置300における論物変換テーブルについて、図11A及び図11Bを用いて説明する。図11Aは、本実施の形態に係る半導体記録装置300についての論理ブロックにおける論物変換テーブルの一例を示す図であり、図11Bは、同半導体記録装置300についてのパリティブロックにおける論物変換テーブルの一例を示す図である。
【0191】
図11Aに示すように、論理ブロックにおける論物変換テーブル21は、各論理ブロック番号と、各論理ブロックに割り当てられた物理ブロック番号との対応表であり、同論物変換テーブル21には、0番〜999番の1000個の論理ブロック夫々に対応する物理ブロック番号が登録されており、これにより、フラッシュメモリ23の物理ブロックが管理されている。
【0192】
また、図11Bに示すように、パリティブロックの論物変換テーブル21は、各パリティブロック番号と、各パリティブロックに割り当てられた物理ブロック番号との対応表であり、同論物変換テーブル21には、0番〜999番の1000個のパリティブロック夫々に対応する物理ブロック番号が登録されており、これにより、フラッシュメモリ23の物理ブロックが管理されている。
【0193】
このように、本実施の形態では5個のフラッシュメモリを使用するので、実施の形態1では0〜799番で定義されていた論理ブロック番号は、本実施の形態では0〜999番まで拡張される。また、実施の形態1ではパリティブロック番号が0〜199番で定義されていたが、本実施の形態では、1個のパリティブロックに対して1個の論理ブロックが対応するので、パリティブロック番号は0〜999番となる。
【0194】
なお、図11A及び図11Bにおいて、符号「0−0」及び「1−300」等は、実施の形態1と同様であるので、その説明は省略するが、論理ブロックは、0番、1番、2番及び3番の各フラッシュメモリの物理ブロックから構成され、パリティブロックは、4番のフラッシュメモリの物理ブロックから構成される。
【0195】
このように構成される論物変換テーブル21は、実施の形態1における論物変換テーブル13と同様にして更新等される。
【0196】
次に、本実施の形態に係るECCパリティ管理テーブル22について、図12を用いて説明する。図12は、本実施の形態に係る半導体記録装置300におけるECCパリティ管理テーブルの一例を示す図である。
【0197】
本実施の形態に係るECCパリティ管理テーブル22は、第1のECC処理部3により生成されたパリティデータが有効か否かを示す管理情報(データ有効性管理情報)が記録されたテーブルである。
【0198】
実施の形態1では、ユーザデータとパリティデータとがホスト機器からシーケンシャルに転送されていたが、本実施の形態では、パリティデータが、半導体記録装置300内部の第1のECC処理部3によって生成される。従って、本実施の形態に係るECCパリティ管理テーブル22は、実施の形態1とは異なる構成となる。
【0199】
すなわち、実施の形態1では、ECCパリティ管理テーブル15におけるパリティデータの有効性は論理ブロック毎に管理されていたが、本実施の形態では、ECCパリティ管理テーブル22におけるパリティデータの有効性は、図12に示すように、各パリティブロックを構成するページ単位で、つまり、当該ページに関連する論理ページ毎に管理されている。
【0200】
そして、同図に示すように、ECCパリティ管理テーブル22は、パリティブロック番号が0番から999番までの1000個のパリティブロックにおいて、各パリティブロックの夫々のページには、同一番号の論理ブロックにおける同一番号の論理ページにかかるパリティデータがライトされた場合には、パリティデータを有効とする管理情報として「1」が格納され、そうでない場合は、パリティデータを無効とする管理情報として「0」が格納される。
【0201】
本実施の形態では、ホスト機器より命令されるユーザデータのライトコマンドのサイズが論理ページのアライメント(=16KB)の整数倍である場合は、第1のECC処理部3でパリティデータを生成し、パリティデータをパリティブロックにライトするとともに、ECCパリティ管理テーブル22の当該論理ページのパリティデータが有効であることを示すように管理情報を更新する。一方、ホスト機器より命令されるユーザデータのライトコマンドのサイズがアライメント(=16KB)の整数倍ではなく当該アライメント未満の場合は、第1のECC処理部3の処理はスルーして、ECCパリティ管理テーブル22の当該論理ページのパリティデータが無効であることを示すように管理情報を更新する。
【0202】
以下、本実施の形態に係る半導体記録システムのライト時の動作について、図9を参照しながら、図13を用いてさらに詳細に説明する。図13は、本実施の形態に係る半導体記録システムにおけるライト動作のフローチャートである。
【0203】
まず、図13に示すように、ホスト機器は、半導体記録装置300に対してユーザデータに記録を指示するために、ユーザデータに関連するライトコマンドを発行する(S210)。
【0204】
次に、半導体記録装置300は、ホスト機器から、ユーザデータに関連するライトコマンドを受け取ると、ユーザデータのライト処理を行う(S220)。ユーザデータのライト処理の詳細については、後述する。
【0205】
次に、半導体記録装置300は、第2のECC処理部16によって、第2のECC処理を行う(S230)。この処理は、実施の形態1と同様である。
【0206】
その後、半導体記録装置300は、フラッシュメモリアクセス部17によって、第2のECCパリティ付きデータのライトを行う(S240)。この処理も、実施の形態1と同様である。
【0207】
以上により、本実施の形態に係る半導体記録システムのライト動作が終了する。
【0208】
ここで、図13に示す半導体記録装置300のユーザデータのライト処理(S220)について、図14を用いて詳細に説明する。図14は、本実施の形態に係る半導体記録システムにおける半導体記録装置300のライト処理のフローチャートである。
【0209】
図14に示すように、半導記録装置300は、外部インターフェイス部10によってホスト機器からユーザデータのライトコマンドを受信する(S221)。
【0210】
次に、外部インターフェイス部10を介して受信されたライトコマンドは、コマンド解析部20によって解析される(S222)。このとき、コマンド解析部20は、ホスト機器から命令されるユーザデータのライトコマンドが論理ページのアライメント(=16KB)の整数倍かどうかを検出する。
【0211】
そして、ライトコマンドがアライメント(=16KB)の整数倍の場合(S222においてYes)は、ユーザデータをライトするとともに、第1のECC処理が行われる(S223)。この場合、第1のECC処理部3は、ユーザデータに基づいてパリティデータを生成して、第1のECCパリティを生成する。
【0212】
その後、ブロック管理部12は、第1のECC処理部3によって生成されたパリティデータを、フラッシュメモリアクセス部17を介してフラッシュメモリ23のパリティブロックにライトする(S224)。
【0213】
そして、ブロック管理部12は、パリティデータのライトとともに、ECCパリティ管理テーブル22における該当する論理ページのパリティデータが有効であることを示すように管理情報を更新する(S225)。
【0214】
一方、ライトコマンド解析(S222)において、ライトコマンドがアライメント(=16KB)の整数倍でない場合(S222においてNo)は、ユーザデータのライト処理は行うが、第1のECC処理部3の処理はスルーするとともに、ECCパリティ管理テーブル22における該当する論理ページのパリティデータが無効であることを示すように管理情報を更新する(S226)。
【0215】
これにより、本実施の形態に係る半導体記録システムにおけるユーザデータのライト処理が終了する。
【0216】
このように、本実施の形態では、ホスト機器から命令されるユーザデータのライトコマンドによって、パリティデータのライトの実施又は未実施を選択している。これにより、ユーザデータのリードにおいて、リードする論理ページにかかるパリティデータの有効性をECCパリティ管理テーブル22で検出してから、パリティデータを使用してエラー訂正の可否を判定することにより、誤訂正を防止することが可能となる。
【0217】
以上説明したように、ホスト機器から命令されるユーザデータのライトコマンドによって、ユーザデータの論理ページにかかるパリティデータのライトの実施又は未実施を選択し、その選択結果をECCパリティ管理テーブル22に格納して、パリティデータとECCパリティ管理テーブルとをライトすることにより、小ブロックのライト性能を犠牲にすることなく、信頼性の高い半導体記録装置を提供することができる。
【0218】
なお、小ブロックでライトするFATなどのシステムデータを重複してライトすることにより、小ブロックのデータにパリティデータを付加して記録していないことによる信頼性の低下を防止することが可能であり、高信頼性と小ブロックのライト性能の両立が可能となる。
【0219】
また、本実施の形態において、ECCパリティ管理テーブル22のパリティデータの有効性を示すビットを、パリティブロックの夫々のページにライトしてもよい。
【0220】
また、本実施の形態において、ECCパリティ管理テーブル22のパリティデータの有効性を示すビットを、論理ブロックの夫々の論理ページにライトしてもよい。
【0221】
さらに、本実施の形態では、ライトコマンドサイズによってパリティデータのライトの有無を選択したが、実施の形態1のように専用ライトコマンドのみに対して、パリティデータをライトするように制御してもよいことはいうまでもない。
【0222】
以上、本発明の実施の形態に係る半導体記録装置、半導体記録システム及び半導体記録装置の制御方法について、実施の形態に基づいて説明したが、本発明は、これらの実施の形態に限定されるものではない。
【0223】
例えば、上記実施の形態に係る半導体記録装置の制御方法については、コンピュータによって実行させるコンピュータプログラムによって構成することもできる。また、当該半導体記録装置の制御方法のコンピュータプログラムについては、コンピュータによって読み取り可能な記録媒体に記録されていてもよい。記憶媒体としては、磁気ディスク、光ディスク、光磁気ディスク、ICカード、半導体メモリ等があり、例えば、フレキシブルディスク、ハードディスク、CD−ROM、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)(登録商標)がある。
【0224】
その他、本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したもの、または異なる実施の形態あるいは変形例における構成要素を組み合わせて構築される形態も、本発明の範囲内に含まれる。
【産業上の利用可能性】
【0225】
本発明に係る半導体記録装置は、メモリカードなどの半導体記録装置に関し、特に内部の不揮発性メモリのデータ保持特性の低下および後発半導体不良に対応し、不揮発性メモリの物理ブロックに跨がるECC符号を生成してライトすることで、物理ブロックの後発不良、データ保持特性のブロックばらつきを抑制することができる。よって、本発明は、データ保持特性が良好でない多値フラッシュメモリを使用した半導体記録装置又は高信頼性が要求される業務用映像記録分野における半導体記録システム等において有用である。
【符号の説明】
【0226】
1 データメモリ
2 専用ドライバ
3 第1のECC処理部
4 専用コマンド処理部
5 汎用コマンド処理部
6、10 外部インターフェイス部
11、20 コマンド解析部
12 ブロック管理部
13、21 論物変換テーブル
14 空ブロックテーブル
15、22 ECCパリティ管理テーブル
16 第2のECC処理部
17 フラッシュメモリアクセス部
18、23 フラッシュメモリ

【特許請求の範囲】
【請求項1】
ユーザデータ及びパリティデータを記録するための不揮発性メモリと、
前記不揮発性メモリに前記ユーザデータの記録を指示する第1のライトコマンドを受信するインターフェイス部と、
前記パリティデータの有効又は無効を示す管理情報を管理する管理部とを備え、
前記管理部は、
前記インターフェイス部を介して受信した前記第1のライトコマンドに関連するユーザデータが前記不揮発性メモリに記録される際に、当該ユーザデータに対応するパリティデータが無効であることを示すように前記管理情報を更新する
半導体記録装置。
【請求項2】
さらに、前記管理情報が登録される管理テーブルを備え、
前記管理部は、前記管理テーブルに登録された前記管理情報を更新することにより、当該管理情報を管理する
請求項1に記載の半導体記録装置。
【請求項3】
前記不揮発性メモリは、消去単位であるブロックによって構成されており、
前記管理情報は、前記ブロック単位で前記管理テーブルに登録されている
請求項2に記載の半導体記録装置。
【請求項4】
前記不揮発性メモリは、複数のページからなるブロックによって構成されており、
前記管理情報は、記録可能な最小単位である前記ページ単位で前記管理テーブルに登録されている
請求項2に記載の半導体記録装置。
【請求項5】
前記インターフェイス部は、前記パリティデータの記録を指示する第2のライトコマンドを受信し、
さらに、受信したコマンドが前記第1のライトコマンドであるか前記第2のライトコマンドであるかを識別するためのコマンド解析部を備え、
前記管理部は、
前記コマンド解析部によって前記受信したライトコマンドが前記第1のライトコマンドであると識別された場合に、前記パリティデータが無効であることを示すように前記管理情報を更新し、前記コマンド解析部によって前記受信したライトコマンドが前記第2のライトコマンドであると識別された場合に、前記パリティデータが有効であることを示すように前記管理情報を更新する
請求項1〜4のいずれか1項に記載の半導体記録装置。
【請求項6】
前記外部インターフェイス部は、前記第1のライトコマンドを受信した後に、前記第2のライトコマンドを受信し、
前記管理部は、前記第1のライトコマンドによって前記パリティデータが無効であることを示すように前記管理情報を更新した後に、前記第2のライトコマンドによって前記パリティデータが有効であることを示すように前記管理情報を更新する
請求項5に記載の半導体記録装置。
【請求項7】
さらに、前記第1のライトコマンド関連する前記ユーザデータに対応する前記パリティデータを生成して、当該ユーザデータと当該パリティデータとを含むECC符号を生成するためのECC処理部を備える
請求項1〜4のいずれか1項に記載の半導体記録装置。
【請求項8】
さらに、前記第1のライトコマンドを解析して、前記第1のライトコマンドのサイズが所定サイズの整数倍であるか否かを検出するコマンド解析部を備え、
前記ECC処理部は、前記コマンド解析部によって前記第1のライトコマンドのサイズが前記所定サイズの整数倍であると検出された場合に前記ECC符号を生成し、前記コマンド解析部によって前記第1のライトコマンドのサイズが前記所定サイズの整数倍でないと検出された場合に前記ECC符号を生成しない
請求項7に記載の半導体記録装置。
【請求項9】
前記管理部は、前記コマンド解析部によって前記第1のライトコマンドのサイズが前記所定サイズの整数倍であると検出された場合に、前記記録済みのパリティデータが有効であることを示すように前記管理情報を更新し、前記コマンド解析部によって前記第1のライトコマンドのサイズが前記所定サイズの整数倍でないと検出された場合に、前記記録済みのパリティデータが無効であることを示すように前記管理情報を更新する
請求項8に記載の半導体記録装置。
【請求項10】
ホスト機器と半導体記録装置からなる半導体記録システムであって、
前記ホスト機器は、
前記半導体記録装置との間でコマンドの送受信を行う外部インターフェイス部と、
ユーザデータに対するパリティデータを生成し、前記ユーザデータと前記パリティデータとを含むECC符号を生成するECC処理部と、
前記ユーザデータに関連する第1のライトコマンドを生成する第1のコマンド処理部と、
前記パリティデータに関連する第2のライトコマンドを生成する第2のコマンド処理部とを備え、
前記半導体記録装置は、
前記ユーザデータ及び前記パリティデータを記録するための不揮発性メモリと、
前記不揮発性メモリに前記ユーザデータの記録を指示する第1のライトコマンドを受信するインターフェイス部と、
前記パリティデータの有効又は無効を示す管理情報を管理する管理部とを備え、
前記管理部は、
前記外部インターフェイス部を介して受信した前記第1のライトコマンド関連するユーザデータが前記不揮発性メモリに記録される際に、当該ユーザデータに対応するパリティデータが無効であることを示すように前記管理情報を更新する
半導体記録システム。
【請求項11】
前記ホスト機器は、
前記外部インターフェイス部を介して第1のライトコマンド及び第2のライトコマンドを前記半導体記録装置に送信する際に、前記第1のライトコマンドを送信した後で、前記第2のライトコマンドを送信し、
前記半導体記録装置は、さらに、
前記管理情報が登録される管理テーブルを備え、
前記管理部は、
前記第1のライトコマンドに対応するユーザデータの記録開始時において、前記パリティデータが無効であることを示すように前記管理情報を更新し、前記第2のライトコマンドに対応するパリティデータの記録終了時に、前記パリティデータが有効であることを示すように前記管理情報を更新する
請求項10に記載の半導体記録システム。
【請求項12】
前記管理部は、
前記第2のライトコマンドにかかるライト処理を選択的に実施する
請求項10又は11に記載の半導体記録システム。
【請求項13】
前記第1のコマンド処理部は、
汎用ドライバを用いて前記第1のライトコマンドを生成する
請求項10〜12のいずれか1項に記載の半導体記録システム。
【請求項14】
前記管理部は、
前記第2のライトコマンドに対応するパリティデータを、汎用ドライバではアクセスすることができない前記不揮発性メモリの領域に記録する
請求項10〜13のいずれか1項に記載の半導体記録システム。
【請求項15】
ユーザデータ及びパリティデータを記録するための不揮発性メモリと、前記不揮発性メモリに前記ユーザデータの記録を指示する第1のライトコマンドを受信するインターフェイス部と、前記パリティデータの有効又は無効を示す管理情報を管理する管理部とを備える半導体記録装置の制御方法であって、
前記インターフェイス部を介して受信した前記第1のライトコマンドに関連するユーザデータが前記不揮発性メモリに記録される際に、当該ユーザデータに対応するパリティデータが無効であることを示すように前記管理情報を更新する
半導体記録装置の制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5A】
image rotate

【図5B】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11A】
image rotate

【図11B】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公開番号】特開2011−154676(P2011−154676A)
【公開日】平成23年8月11日(2011.8.11)
【国際特許分類】
【出願番号】特願2010−262994(P2010−262994)
【出願日】平成22年11月25日(2010.11.25)
【出願人】(000005821)パナソニック株式会社 (73,050)
【Fターム(参考)】