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