(57)【要約】【課題】カラムの欠陥に起因する処理のパフォーマンスの低下を防止できるようにする。【解決手段】カラムスキップ処理回路３１は、フラッシュメモリ３上に欠陥カラムがある場合に当該欠陥カラムの位置をスキップしてシリアルデータを書き込むための制御を１ページ単位で行う。この回路３１は、ページデータの書込の際、当該ページデータが書き込まれるページ内の欠陥カラムの数（例えば、０個〜４個のうちのいずれか）を表す欠陥数情報を当該ページデータの先頭に付加すると共に、当該ページデータの中における欠陥カラムに対応する位置にダミーとなる特定のデータを挿入した後に、当該ページデータをフラッシュメモリ３側へ転送する。ページデータの読出の際には、フラッシュメモリ３から読み出されるページデータに付加されている欠陥数情報を当該ページデータから抜き取ると共に、この欠陥数情報を参照し、当該欠陥数情報に示される数だけ当該ページデータの中に挿入されているダミーデータを抜き取る。【選択図】      図１０
2006004367.tif 000002
【特許請求の範囲】
【請求項１】
半導体メモリにシリアルデータを書き込む際に、当該半導体メモリ上の欠陥カラムの位置をスキップしてシリアルデータを書き込むことを特徴とする半導体装置。
【請求項２】
不揮発性半導体メモリと、
前記不揮発性半導体メモリ上の欠陥カラムの位置をスキップしてシリアルデータを書き込むための制御を行うコントローラと
を具備することを特徴とするメモリカード。
【請求項３】
前記コントローラは、シリアルデータの書込の際に、当該シリアルデータの中における前記欠陥カラムに対応する位置にダミーとなる特定のデータを挿入した後に、当該シリアルデータを前記不揮発性半導体メモリ側へ転送することを特徴とする請求項２に記載のメモリカード。
【請求項４】
前記コントローラは、シリアルデータの書込の際に、当該シリアルデータが書き込まれる領域内の欠陥カラムの数を表す欠陥数情報を当該シリアルデータに付加した後に、当該シリアルデータを前記不揮発性半導体メモリ側へ転送することを特徴とする請求項３に記載のメモリカード。
【請求項５】
前記コントローラは、前記欠陥数情報として、欠陥カラムの数に応じた複数種類のビットパターンを備え、
各ビットパターンは、複数のビットで構成され、そのうちの一定数のビットにエラーが生じても他のビットパターンとの区別ができるものであることを特徴とする請求項４に記載のメモリカード。
【請求項６】
前記コントローラは、シリアルデータの読出の際に、前記不揮発性半導体メモリから読み出されるシリアルデータに付加されている前記欠陥数情報を当該シリアルデータから抜き取ると共に、この欠陥数情報を参照し、当該欠陥数情報に示される数だけ当該シリアルデータの中に挿入されている特定のデータを抜き取った後に、当該シリアルデータを転送することを特徴とする請求項４又は５のいずれか１項に記載のメモリカード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体メモリを搭載したメモリカードに関し、特にＮＡＮＤ型フラッシュメモリを搭載したメモリカード及びこのカードに搭載される半導体装置に関する。
【背景技術】
【０００２】
メモリカードに搭載されている不揮発性半導体メモリにおいては、カラムの欠陥が後発的に発生することがある。データ読出の際に、カラムの欠陥によるエラーが検出された場合、一般に、ＥＣＣ（Error Checking and Correction）処理によるデータ修復が行われている。
【０００３】
また、データ書込の際には、欠陥カラムを含む領域であっても、その領域に対してデータを強引に書き込んでしまう方法などもある。
【０００４】
また、特許文献１には、カラムリペア回路を設けることにより、欠陥が生じたメモリセルに対するリペア処理を行う技術が開示されている。
【特許文献１】特開２００３−１７８５９３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、データ読出の際にカラムの欠陥によるエラーが生じる度にＥＣＣ処理に頼ることは、ＥＣＣ処理に負荷が集中するばかりか、データ読出処理に時間がかかり、メモリ全体のパフォーマンスが低下することとなるため、望ましいとは言えない。
【０００６】
一方、欠陥カラムを含む領域に対してデータを強引に書き込むことは、エラーレートの増大を招くこととなる。また、対象のメモリがＮＡＮＤ型フラッシュメモリ等である場合、書き込んだデータを検証するための書込ベリファイ機能によるループ処理回数が上限値に達してしまい、結果的にメモリ全体のパフォーマンスが低下することとなる。
【０００７】
また、上記文献に示されるカラムリペア回路を採用した場合、欠陥カラムに対するカラムリペア処理にかなりの時間が費やされてしまい、結果的にメモリ全体のパフォーマンスが低下することとなる。
【０００８】
本発明は上記課題を解決するためになされたものであり、カラムの欠陥に起因する処理のパフォーマンスの低下を防止することができるメモリカード及び半導体装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明に係る半導体装置は、半導体メモリにシリアルデータを書き込む際に、当該半導体メモリ上の欠陥カラムの位置をスキップしてシリアルデータを書き込むことを特徴とする。
【００１０】
また、本発明に係るメモリカードは、不揮発性半導体メモリと、前記不揮発性半導体メモリ上の欠陥カラムの位置をスキップしてシリアルデータを書き込むための制御を行うコントローラとを具備することを特徴とする。
【発明の効果】
【００１１】
カラムの欠陥に起因する処理のパフォーマンスの低下を防止することができる。
【発明を実施するための最良の形態】
【００１２】
以下、図面を参照して、本発明の一実施形態について説明する。  
図１は、本発明の一実施形態に係るメモリカードに搭載されるデバイス類の概略構成を示す斜視図である。  
本実施形態に係るメモリカード１は、図示のように、ＰＣＢ（Printed Circuit Board）基板２上にＮＡＮＤ型フラッシュメモリ３及びコントローラ４が配置されたものとなっている。上記コントローラ４には、ＣＰＵ（Central Processing Unit）８やＲＯＭ（Read-Only Memory）９などの機能ブロックが搭載されている。各デバイスの詳細については後で述べる。なお、ＮＡＮＤ型フラッシュメモリ３は、１つのメモリセルに１ビットの情報を記憶する２値メモリであっても良いし、１つのメモリセルに１ビットより多い情報（例えば２ビット）を記憶する多値メモリであっても良い。また、図１では、ＰＣＢ（Printed Circuit Board）基板２上にＮＡＮＤ型フラッシュメモリ３及びコントローラ４が配置された場合を示したが、ＮＡＮＤ型フラッシュメモリ３及びコントローラ４は、同一のＬＳＩ（Large-scale Integration）基板上に配置されても良い。
【００１３】
以下の説明において使用する用語「論理ブロックアドレス」，「物理ブロックアドレス」は、それぞれ、ブロック自体の論理アドレス，物理アドレスを意味するものである。また、「論理アドレス」，「物理アドレス」は、主に、ブロック自体の論理アドレス，物理アドレスを意味するものではあるが、ブロック単位よりも細かい分解能の単位に相当するアドレスである場合もあり得ることを示すものである。
【００１４】
図２は、ホストと上記メモリカードとを含む構成を示すブロック図である。なお、図１と共通する要素には同一の符号を付している。
【００１５】
ホスト機器（以下、ホストと称す）２０は、接続されるメモリカードに対してアクセスを行うためのハードウェア及びソフトウェア（システム）を備えている。このホスト２０は、メモリカード内部の物理状態（何処の物理ブロックアドレスに、何番目の論理セクタアドレスデータが含まれているか、或いは、何処のブロックが消去状態であるか）を管理し、メモリカード内のフラッシュメモリを直接制御するものとして構築されている。
【００１６】
また、ホスト２０は、消去時の消去ブロックサイズが16kByteに定められているＮＡＮＤ型フラッシュメモリを使用することを前提として、16kByte単位で論理・物理アドレスの割当を行い、多くの場合、論理アドレス16kByte分に関してシーケンシャルにライトアクセスもしくはリードアクセスを行う（該当するコマンドを発行する）。
【００１７】
メモリカード１は、ホスト２０に接続されたときに電源供給を受けて動作し、ホスト２０からのアクセスに応じた処理を行う。このメモリカード１は、前述したようにＮＡＮＤ型フラッシュメモリ３及びコントローラ４を有する。
【００１８】
ＮＡＮＤ型フラッシュメモリ３は、消去時の消去ブロックサイズ（消去単位のブロックサイズ）が256kByteに定められている不揮発性メモリであり、例えば16kByte単位でデータの書込・読出を行うようになっている。このＮＡＮＤ型フラッシュメモリ３は、例えば0.09μｍプロセス技術を用いて製作される。即ち、ＮＡＮＤ型フラッシュメモリ３のデザインルールは、0.1μｍ未満となっている。
【００１９】
コントローラ４は、前述したＣＰＵ８及びＲＯＭ９のほかに、メモリインタフェース部５、ホストインタフェース部６、バッファ７、及びＲＡＭ（Random Access Memory）１０を搭載している。
【００２０】
メモリインタフェース部５は、コントローラ４とＮＡＮＤ型フラッシュメモリ３との間のインタフェース処理を行うものである。ホストインタフェース部６は、コントローラ４とホスト２０との間のインタフェース処理を行うものである。
【００２１】
バッファ７は、ホスト２０から送られてくるデータをＮＡＮＤ型フラッシュメモリ３へ書き込む際に、一定量のデータ（例えば１ページ分）を一時的に記憶したり、ＮＡＮＤ型フラッシュメモリ３から読み出されるデータをホスト２０へ送り出す際に、一定量のデータを一時的に記憶したりするものである。
【００２２】
ＣＰＵ８は、メモリカード１全体の動作を司るものである。このＣＰＵ８は、例えば、メモリカード１が電源供給を受けた際に、ＲＯＭ９の中に格納されているファームウェア（制御プログラム）をＲＡＭ１０上にロードして所定の処理を実行することにより、各種のテーブルをＲＡＭ１０上で作成したり、ホスト２０から書込コマンド，読出コマンド，消去コマンドを受けてＮＡＮＤ型フラッシュメモリ３上の該当領域に対するアクセスを実行したり、バッファ７を通じたデータ転送処理を制御したりする。
【００２３】
ＲＯＭ９は、ＣＰＵ８により使用される制御プログラムなどを格納するメモリである。ＲＡＭ１０は、ＣＰＵ８の作業エリアとして使用され、制御プログラムや各種のテーブルを記憶するメモリである。
【００２４】
図３は、ホスト２０が想定しているフラッシュメモリと、実際に使用するフラッシュメモリ（即ち、メモリカード１内のＮＡＮＤ型フラッシュメモリ３）との、データ配置の違いを示している。  
ホスト２０が想定しているフラッシュメモリでは、各ページは528Byte（512Byte分のデータ記憶部＋16Byte分の冗長部）を有しており、３２ページ分が１つの消去単位（即ち、16kByte＋0.5kByte（ここで、kは1024））となる。以下では、このようなフラッシュメモリを搭載したカードを、「小ブロックカード」と称す場合がある。
【００２５】
一方、実際に使用するフラッシュメモリ３では、各ページは2112Byte（512Byte分のデータ記憶部×４＋10Byte分の冗長部×４＋24Byte分の管理データ記憶部）を有しており、１２８ページ分が１つの消去単位（即ち、256kByte＋8kByte）となる。以下では、このようなフラッシュメモリ３を搭載したカードを、「大ブロックカード」と称す場合がある。なお、以下の説明においては、便宜上、小ブロックカードの消去単位を16kByteと呼び、大ブロックカードの消去単位を256kByteと呼ぶ。
【００２６】
また、ホスト２０が想定しているフラッシュメモリと、実際に使用するフラッシュメモリ３とは、それぞれ、フラッシュメモリへのデータ入出力を行うためのページバッファを備えている。ホスト２０が想定しているフラッシュメモリに備えられるページバッファの記憶容量は、528Byte（512Byte＋16Byte）である。一方、実際に使用するフラッシュメモリ３に備えられるページバッファの記憶容量は、2112Byte（2048Byte＋64Byte）である。データ書込などの際には、各ページバッファは、フラッシュメモリに対するデータ入出力処理を、自身の記憶容量に相当する１ページ分の単位で実行する。
【００２７】
図３の例では、実際に使用するフラッシュメモリ３の消去ブロックサイズが、ホスト２０が想定しているフラッシュメモリの消去ブロックサイズの１６倍である場合を示したが、本発明はこれに限定されるものではなく、略整数倍であれば別の倍率となるように構成することも可能である。
【００２８】
大ブロックカードを実用上有効な製品とするためには、図３に示したフラッシュメモリ３の記憶容量は１Ｇビット以上であることが望ましい。フラッシュメモリ３の記憶容量が例えば１Ｇビットである場合、256kByteブロック（消去単位）の数は、512個となる。
【００２９】
また、図３においては消去単位が256kByteブロックである場合を例示しているが、消去単位が例えば128kByteブロックとなるように構築することも実用上有効である。この場合、128kByteブロックの数は、1024個となる。
【００３０】
また、図３の例では、実際に使用するフラッシュメモリ３の消去ブロックサイズが、ホスト２０が想定しているフラッシュメモリの消去ブロックサイズよりも大きい場合を示したが、本発明はこれに限定されるものではなく、実際に使用するフラッシュメモリ３の消去ブロックサイズが、ホスト２０が想定しているフラッシュメモリの消去ブロックサイズよりも小さいものとして構成することも可能である。
【００３１】
図４は、ホスト２０側システム及びメモリカード１（大ブロックカード）の各コミュニケーション階層を示す図である。
【００３２】
ホスト２０側のシステムは、アプリケーションソフト２１、ファイルシステム２２、ドライバソフト２３、及び小ブロックカード物理アクセス層２４を有する。一方、メモリカード１（大ブロックカード）は、小ブロックカード物理アクセス層１１、小ブロックカード物理・小ブロックカード論理変換層１２、小ブロックカード論理・大ブロックカード物理変換層１３、及び大ブロックカード物理アクセス層１４を有する。
【００３３】
例えば、ホスト２０側のアプリケーションソフト２１がファイルの書込をファイルシステム２２に要求すると、ファイルシステム２２は、小ブロックカードの論理ブロックアドレスに基づきシーケンシャルなセクタ書込をドライバソフト２３に指示する。これを受けて、ドライバソフト２３は、小ブロックカードの論理ブロックアドレスに基づく16kByteブロック毎のシーケンシャルな書込を実現するにあたり、論理・物理ブロック変換を行い、小ブロックカード物理アクセス層２４を通じて、小ブロックカードの物理ブロックアドレスによるランダムな書込コマンドを大ブロックカードに対して発行し、データ転送を行う。
【００３４】
なお、ライトアクセスにおいては、小ブロックカードの場合も大ブロックカードの場合も、プロトコル上、（１）コマンド、（２）ページアドレス（ロウアドレス）、（３）カラムアドレス、（４）データ、（５）プログラム確認コマンド、といった順序で情報の送受が行われることが前提となっている。
【００３５】
大ブロックカード側における小ブロックカード物理アクセス層１１は、ホスト２０から小ブロックカードの物理ブロックアドレスによる書込コマンドを受けると、物理ブロックアドレスやデータのほか、これに付随する付随データに含まれている論理ブロックアドレスを取得する。
【００３６】
小ブロックカード物理・小ブロックカード論理変換層１２は、データ読出などの際に小ブロックカードの物理ブロックアドレス（16kByteブロック分に対応）から小ブロックカードの論理ブロックアドレス（16kByteブロック分に対応）への変換処理を行うための第１のテーブルを有している。変換層１２は、小ブロックカード物理アクセス層１１が書込コマンドを受けて小ブロックカードの論理ブロックアドレスを取得したときにはこれを上記第１のテーブルに反映させる。物理ブロックアドレスに関しても、上記第１のテーブルに反映させる。
【００３７】
小ブロックカード論理・大ブロックカード物理変換層１３は、データ読出などの際に小ブロックカードの論理ブロックアドレス（シーケンシャルな16kByteブロック×１６個分に対応）から大ブロックカードの物理ブロックアドレス（256kByte物理ブロック分に対応）への変換処理を行うための第２のテーブルを有している。変換層１２は、小ブロックカード物理アクセス層１１が書込コマンドを受けて小ブロックカードの論理ブロックアドレスを取得したときにはこれを上記第２のテーブルに反映させる。
【００３８】
大ブロックカード物理アクセス層１４は、小ブロックカード物理アクセス層１１が書込コマンドを受けて取得した小ブロックカードの論理ブロックアドレスに基づき、フラッシュメモリ３内部のデータ配置を決定し、256kByte物理ブロック内において2kByte（１ページ）単位でシーケンシャルに16kByte分のデータを書き込む。また、大ブロックカード物理アクセス層１４は、取得した小ブロックカードの論理ブロックアドレスや物理ブロックアドレスをフラッシュメモリ３内部における管理データ領域内の所定の領域に格納する。
【００３９】
このようにホスト２０は小ブロックカードの物理ブロックアドレスに基づくコマンドを発行するので、大ブロックカード側では、小ブロックカードの物理ブロックアドレスに対応するデータがどの256kByte物理ブロックの中に存在するのかが分かるように管理する。具体的には、16kByteブロック毎に小ブロックカードの論理・物理ブロックアドレスの対応関係を管理すると共に、小ブロックカードの連続した256kByteブロック分の論理ブロックアドレスに対応するデータが大ブロックカード内のどの256kByte物理ブロックに格納されているかが分かるように管理する。
【００４０】
図５は、ホスト２０側から送られてくるコマンドのフォーマットを示す図である。  
ホスト２０側から送られてくるコマンドのパケットは、図５（ａ）に示されるように、コマンド種別情報（ここでは「書込」），アドレス（物理ブロックアドレス），データ（コンテンツなどの実データ及び付随データ（512Byte＋16Byte））といった各種情報を含んでいる。  
このようなフォーマットのパケットにおいては、図５（ｂ）に示されるように、付随データ16Byte中の所定の位置に小ブロックカードの「論理ブロックアドレス」（アクセス対象となる16kByteブロックに対応する論理アドレス）が配置されている。大ブロックカードは、コマンド種別情報，物理ブロックアドレス，データを取得するほか、特に上記「論理ブロックアドレス」を取得する。なお、この「論理ブロックアドレス」は、読出コマンドの場合には付加されない。
【００４１】
図６は、ホスト２０側が想定しているブロック書込操作と、メモリカード１（大ブロックカード）側が実際に行う書込処理とを、対比して示す図である。  
ホスト２０側（同図の左側）では、小ブロックカードの論理アドレスに基づく16kByteブロック単位のシーケンシャルな書込操作の発生時に、小ブロックカードの物理ブロックアドレスによる16kByteブロック単位のランダムな書込操作を行う。
【００４２】
一方、大ブロックカード側（同図の右側）では、ホスト２０側から書込コマンドを受けた場合、小ブロックカードの論理ブロックアドレスに基づく16kByteブロック単位のデータをフラッシュメモリ３内にシーケンシャルに書き込む。
【００４３】
前述のように、ホスト２０は、小ブロックの物理アドレスによる16Byte単位のランダムな書込操作を行う。このようなランダムな書込操作では、一般に、大ブロック（256kByte）の一部のみを書き換えるための処理が多発する。ＮＡＮＤ型フラッシュメモリではブロック単位でしか消去を行えないため、ブロックの一部のみを書き換える場合は、書き換える新データを消去済みの新ブロックに書き込み、新データに書き換えられる旧データを含む旧ブロックから、書き換えられない残りのデータを新ブロックにコピーする必要がある。このように、ブロックの一部のみを書き換える処理は、書き換えられないデータのコピー動作（以下、「巻き添えデータコピー」と称す）を伴うため、ブロックの一部のみを書き換える処理が多発すると、オーバーヘッドが非常に増大することになる。そこで、本実施形態では、ホスト２０側から得られる論理アドレスの順序に従って、大ブロックカード側で物理アドレスを再度割り当てることにより、ブロックの一部のみの書込の発生を低減し、オーバーヘッドの増大を抑制している。
【００４４】
図７は、大ブロックカード内のＮＡＮＤ型フラッシュメモリ３のブロックフォーマット（消去単位である256kByte物理ブロック分）を示す図である。  
大ブロックカードでは、消去単位である256kByte物理ブロックの中に、ホスト２０側が管理する単位である16kByteに相当するデータを書き込むためのブロック（以下、ホスト管理ブロックと称す）が１６個分含まれている。データ書込の際には、小ブロックカードの論理ブロックアドレスの順に個々のデータが配置される。
【００４５】
各ホスト管理ブロックは、８個のページで構成される。各ページは、512Byteデータ領域を４個分含むとともに、各データ領域に対応する10ByteＥＣＣ領域を含んでいる。また、ページ中の最後の512Byteデータ領域（４番目の512Byteデータ領域）の後には、24Byte管理データ領域も設けられる。このため、ページ中の最後の10ByteＥＣＣ領域は、４番目の512Byteデータ領域と24Byte管理データ領域の両方に対応する構成となっている。
【００４６】
更に、各ページの先頭位置には、当該ページ上の欠陥カラムの数（０〜４個）を示す4Byteの欠陥数情報のための領域が設けられる。
【００４７】
また、各ページの最終位置には、4Byteの予備の領域が設けられる。この予備領域は、当該ページ上に欠陥カラムが発生したときのことを考慮して設けられた領域である。当該ページ上に欠陥カラムが存在する場合には、その欠陥カラムの位置にダミーとなる1Byteの特定のデータ（最大４個まで）が書き込まれ、後続するデータの書き込み位置は後方にずれる。この結果、そのずれた分だけ当該予備領域が消費されて狭まることになる。なお、図７は、ダミーとなる特定のデータが挿入されておらず、予備領域が消費されていない場合を例示している。
【００４８】
消去単位である256kByte物理ブロックに含まれる１２８個の24Byte管理データ領域のうち、例えば最後の24Byte管理データ領域には、ホスト２０側から送られてくるコマンドから取得された物理ブロックアドレスに相当するアドレス情報（以下、「ホスト管理物理アドレス」と称す）及び論理ブロックアドレスに相当するアドレス情報（以下、「ホスト管理論理ブロックアドレス」）がまとめて格納されるようになっている。
【００４９】
各256kByteブロック内に格納された「ホスト管理物理アドレス」及び「ホスト管理論理ブロックアドレス」は、図４で説明した小ブロックカード物理・小ブロックカード論理変換層１２が有する第１のテーブルと、小ブロックカード論理・大ブロックカード物理変換層１３が有する第２のテーブルとを作成する際に使用される。
【００５０】
図８は、本実施形態のメモリカード１に対してホスト２０が書込を行う際の、当該メモリカード１のＩ／ＯピンとＲ／Ｂピンとの信号の例を示すタイミングチャートである。
【００５１】
ホスト２０は、メモリカードは16kByteの消去ブロックサイズを有する不揮発性メモリであると仮定してメモリカードを制御している。例えば、メモリカードに対する書込の際には、ホスト２０は、シリアルデータインプットコマンド８０Ｈ（Ｈは１６進を示す）をＩ／Ｏピン１〜８へ入力する。次に、ホスト２０は、カラムアドレスＣ／ＡおよびページアドレスＰ／Ａを、Ｉ／Ｏピン１〜８へ入力する。なお、ここでカラムアドレスＣ／ＡおよびページアドレスＰ／Ａは、ホスト２０がメモリカード１に対して想定している仮想物理アドレス空間におけるカラムアドレスおよびページアドレスである。
【００５２】
更に、ホスト２０は、書込データを、Ｉ／Ｏピン１〜８の個々に対し、５２８回入力する。具体的には、ホスト２０はライトイネーブルピンへの入力信号を５２８回クロッキングしながら、それぞれのＩ／Ｏピンに対し５２８ビット（すべてのＩ／Ｏピン合計で５２８バイト）のデータを順次シフトインする。データのシフトインが完了すると、ホスト２０は、プログラムコマンド１０ＨをＩ／Ｏピン１〜８へ入力する。これに応答してメモリカードは、そのＲ／Ｂピンにロウレベルの信号を出力し、メモリカードがビジー状態であることを示す。その後、所定期間後にＲ／Ｂピンにハイレベルの信号を出力することでメモリカードがレディ状態になったことを示す。
【００５３】
しかしながら、図８におけるＲ／Ｂピンの状態は、あくまでもホスト２０に対してメモリカード１がどのような状態かを示すものである。つまり、図８において、プログラムコマンド１０Ｈの入力に応答して、Ｒ／Ｂピンがビジー状態（つまりロウレベルを出力）を示したとしても、内部でＮＡＮＤ型フラッシュメモリ３に対する書込動作（つまり、ページバッファからメモリセルアレイへのデータ転送）が実際に行われているとは限らない。また、Ｒ／Ｂピンがレディ状態に復帰したとしても、内部でＮＡＮＤ型フラッシュメモリ３に対する書込動作が実際に完了しているとは限らない。
【００５４】
図９は、本実施形態のメモリカード１内のＮＡＮＤ型フラッシュメモリ３に対して、当該メモリカード１内のコントローラ４が書込を行う際の、ＮＡＮＤ型フラッシュメモリ３のＩ／ＯピンとＲ／Ｂピンとの信号の例を示すタイミングチャートである。
【００５５】
コントローラ４は、ＮＡＮＤ型フラッシュメモリ３は256kByteの消去ブロックサイズを有する不揮発性メモリであると認識している。例えば、ＮＡＮＤ型フラッシュメモリ３に対する書込の際には、コントローラ４は、シリアルデータインプットコマンド８０Ｈ（Ｈは１６進を示す）をＩ／Ｏピン１〜８へ入力する。次に、コントローラ４は、カラムアドレスＣ／ＡおよびページアドレスＰ／Ａを、Ｉ／Ｏピン１〜８へ入力する。なお、ここでカラムアドレスＣ／ＡおよびページアドレスＰ／Ａは、コントローラ４がＮＡＮＤ型フラッシュメモリ３に対して想定している実物理アドレス空間におけるカラムアドレスおよびページアドレスである。したがって、図８におけるカラムアドレスＣ／ＡおよびページアドレスＰ／Ａとは必ずしも一致していない。
【００５６】
本実施形態においては、コントローラ４は、上記ページアドレスＰ／Ａに続き、当該ページ上の欠陥カラムの数（０〜４個）を示す4Byteの欠陥数情報（ここでは「Ｄ／Ｉ」と称す）をＩ／Ｏピン１〜８へ入力する。
【００５７】
更に、コントローラ４は、書込データを、Ｉ／Ｏピン１〜８の個々に対し、２１１２回入力する。具体的には、コントローラ４は、ライトイネーブルピンへの入力信号を２１１２回クロッキングしながら、それぞれのＩ／Ｏピンに対し２１１２ビット（すべてのＩ／Ｏピン合計で２１１２バイト）のデータを順次シフトインする。なお、図９は、書込を行うページ上に欠陥カラムが存在しない場合（即ち、欠陥カラムの数が０の場合）を例示している。欠陥カラムが存在する場合には、データＤ0〜Ｄ2111中の該当する位置に、ダミーとなる特定のデータが挿入されることになる。
【００５８】
データのシフトインが完了すると、コントローラ４は、プログラムコマンド１０ＨをＩ／Ｏピン１〜８へ入力する。これに応答してメモリカードは、そのＲ／Ｂピンにロウレベルの信号を出力し、メモリカードがビジー状態であることを示す。その後、所定期間後にＲ／Ｂピンにハイレベルの信号を出力することでメモリカードがレディ状態になったことを示す。図９におけるＲ／Ｂピンの状態は、コントローラ４に対してＮＡＮＤ型フラッシュメモリ３が実際にどのような状態かを示すものである。
【００５９】
なお、上記図８および図９においては、カラムアドレスＣ／ＡおよびページアドレスＰ／Ａの入力をそれぞれ１つのサイクルで示しているが、メモリカード１の容量またはＮＡＮＤ型フラッシュメモリ３の容量に応じて、適宜２サイクル以上になる場合もある。
【００６０】
図１０は、図２中に示されるメモリインタフェース部５を中心とする主要部の概略構成を示す図である。  
図示のように、メモリインタフェース部５には、ＥＣＣ処理回路３０およびカラムスキップ処理回路３１が備えられる。フラッシュメモリ３とバッファ７との間のデータ転送は、これらＥＣＣ処理回路３０およびカラムスキップ処理回路３１を通じて行われる。
【００６１】
ＥＣＣ処理回路３０は、フラッシュメモリ３から読み出されたデータなどに対してエラーの有無をチェックし、エラーが検出された場合にはエラー訂正を行う回路である。  
カラムスキップ処理回路３１は、フラッシュメモリ３上に欠陥カラムがある場合に当該欠陥カラムの位置をスキップしてシリアルデータを書き込むための制御を１ページ単位で行う。なお、ページ内のスキップすべき欠陥カラムの数、およびスキップすべき欠陥カラムの位置に相当するカラムアドレス（スキップアドレス）は、欠陥が新たに検出される毎に、ファームウェアを実行するＣＰＵ８からカラムスキップ処理回路３１へ伝えられる。以下では、本実施形態の内容を理解しやすくするため、１ページ分のシリアルデータ（以下、「ページデータ」と称す）の書込・読出の処理に焦点を絞って説明する。
【００６２】
上記カラムスキップ処理回路３１は、ページデータの書込の際には、当該ページデータが書き込まれるページ（2112Byte（2048Byte＋64Byte））内の欠陥カラムの数（例えば、０個〜４個のうちのいずれか）を表す欠陥数情報を当該ページデータの先頭に付加すると共に、当該ページデータの中における欠陥カラムに対応する位置（スキップアドレスに相当する位置）にダミーとなる特定のデータ（以下、「ダミーデータ」と称す）を挿入した後に、当該ページデータをフラッシュメモリ３側へ転送する。ダミーデータとしては、例えば“FF”データが採用される。これにより、不良カラムへの“0”書込が行われず、不良カラムを書込ベリファイ対象から外すことができる。なお、ダミーデータは、“FF”データに限られない。書込ベリファイ対象から外すことができるものであれば、別のデータであってもよい。
【００６３】
また、カラムスキップ処理回路３１は、ページデータの読出の際には、フラッシュメモリ３から読み出されるページデータに付加されている欠陥数情報を当該ページデータから抜き取ると共に、この欠陥数情報を参照し、当該欠陥数情報に示される数だけ当該ページデータの中に挿入されているダミーデータを抜き取った後に、当該ページデータをホスト側へ転送する。欠陥数情報を参照するのは、ページデータの書込を行った時点での欠陥数を把握する必要があるからであり、ページデータに挿入したダミーデータの数だけ当該ダミーデータの抜取処理をしなければ元のページデータを正しく再現することができないからである（例えば、ページデータの書込を行った時点での欠陥数が２個で、読出を行う時点での欠陥数が３個に増えている場合に、もしもページデータに対して３回の抜取処理を行ってしまうと、抜き取る必要のないデータまで抜き取られてしまう結果となる）。
【００６４】
図１１は、書込の際にカラムスキップ処理回路３１によって処理されたページデータのフォーマット例を示す図である。  
図１１（ａ）は、欠陥カラムが０個の場合のフォーマットを示している。この場合、フォーマットの先頭（4Byte）は、欠陥カラムが０個であることを表す欠陥数情報を有する。なお、スキップすべき欠陥カラムは無いため、ダミーデータは挿入されない。
【００６５】
図１１（ｂ）は、欠陥カラムが１個の場合のフォーマットを示している。この場合、フォーマットの先頭（4Byte）は、欠陥カラムが１個であることを表す欠陥数情報を含む。また、欠陥カラムに対応する位置にダミーデータが挿入される。このダミーデータを挿入した分だけ、ページデータの残りの部分は後方へシフトされ、フォーマットの後端の予備領域が短くなる。
【００６６】
図１１（ｃ）は、欠陥カラムが２個の場合のフォーマットを示している。この場合、フォーマットの先頭（4Byte）は、欠陥カラムが２個であることを表す欠陥数情報を含む。また、１つ目の欠陥カラムに対応する位置に１つ目のダミーデータが挿入されると共に、２つ目の欠陥カラムに対応する位置に２つ目のダミーデータが挿入される。これらダミーデータを挿入した分だけ、ページデータの残りの部分は後方へシフトされ、フォーマットの後端の予備領域が短くなる。
【００６７】
図１２は、図１１中に示される欠陥数情報の具体例を示す図である。  
カラムスキップ処理回路３１は、欠陥数情報として、欠陥カラムの数に応じた複数種類のビットパターンを有している。本実施形態では、図示のように５種類のビットパターンType”0”，Type”1”，Type”2”，Type”3”，Type”4”を使用する。ここで、各Typeの右側の数字は、欠陥カラムの数を表している。
【００６８】
各ビットパターンは複数のビット（32bit）で構成され、そのうちの一定数のビットにエラーが生じても他のビットパターンとの区別ができるものとなっている（なお、図中の白い正方形は値「１」を表し、黒い正方形は値「０」を表している）。図示の例では、Type”1”〜Type”4”のビットパターンに市松模様を採用し、縞の方向を異ならせたり白黒を反転させたりすることで、ビットエラーがある程度発生してもビットパターンのタイプを確実に判別できるように工夫されている。
【００６９】
上記５種類のビットパターンのうち、任意の２つのビットパターンを比較してみると、少なくとも８ビットの値が互いに相違していることがわかる。即ち、各ビットパターンは、各ビットパターンが有する３２ビットのうち、少なくとも８ビット（全体のビット数の１／４のビット数）の値が互いに相違するように設定されている。このため、あるビットパターンにエラーが生じても、そのエラービット数が８個未満であれば、他のビットパターンと区別することができる。
【００７０】
なお、図示のビットパターンの組合せが優れている理由や、その変形例などについては、後で詳しく述べる。
【００７１】
図１３は、図１０中に示されるカラムスキップ処理回路３１の内部構成を示すブロック図である。なお、ここでは、フラッシュメモリ３上の任意のページに対応した処理に焦点を絞って説明する。
【００７２】
カラムスキップ処理回路３１は、図示のように、第１のスキップアドレスレジスタ４１、第２のスキップアドレスレジスタ４２、第３のスキップアドレスレジスタ４３、第４のスキップアドレスレジスタ４４、スキップ数設定レジスタ４５、転送アドレスカウンタ４６、転送アドレス・スキップアドレス比較器４７、スキップ数パターン生成回路４８、ダミー挿入部４９、スキップ数パターン照合判定回路５０、スキップ数レジスタ５１、ダミー抜取部５２などを有している。
【００７３】
第１〜第４のスキップアドレスレジスタ４１〜４４は、ページ内のスキップすべき欠陥カラムの位置に相当するカラムアドレス（スキップアドレス）を記憶するものであり、ファームウェアを実行するＣＰＵ８によって設定（書込処理など）が行われる。第１のスキップアドレスレジスタ４１はページ内の１つ目のスキップアドレスを記憶するものであり、第２のスキップアドレスレジスタ４２は２つ目のスキップアドレスを記憶するものであり、第３のスキップアドレスレジスタ４３は３つ目のスキップアドレスを記憶するものであり、第４のスキップアドレスレジスタ４４は４つ目のスキップアドレスを記憶するものである。
【００７４】
スキップ数設定レジスタ４５は、ページ内のスキップすべき欠陥カラムの数（スキップ数）を記憶するものであり、ファームウェアを実行するＣＰＵ８によって設定（書込処理など）が行われる。
【００７５】
転送アドレスカウンタ４６は、ホスト側から転送されてくるページデータをフラッシュメモリ３側へ書き込む際、およびフラッシュメモリ３から読み出されるページデータをホスト側へ転送する際に使用される。この転送アドレスカウンタ４６は、ホストとフラッシュメモリ３との間で転送されるページデータに対し、その先頭から順に、該当するカラムアドレス（転送アドレス）をカウントする。
【００７６】
転送アドレス・スキップアドレス比較器４７は、ホスト側から転送されてくるページデータをフラッシュメモリ３側へ書き込む際、およびフラッシュメモリ３から読み出されるページデータをホスト側へ転送する際に使用される。この比較器４７は、ページデータ書込の際には、スキップ数設定レジスタ４５に記憶されているスキップ数と同数のスキップアドレスレジスタを使用する。例えば、スキップ数が４である場合、第１のスキップアドレスレジスタ４１に記憶されているスキップアドレスを最初に参照し、その後は、第２のスキップアドレスレジスタ４２，第３のスキップアドレスレジスタ４３，第４のスキップアドレスレジスタ４４の順に、対応するスキップアドレスを参照する。スキップ数が１以上であれば、比較器４７は、転送アドレスカウンタ４６によりカウントされる転送アドレスと、個々のスキップアドレスレジスタにそれぞれ記憶されている個々のスキップアドレスとを順番に比較し、一致が発生する毎に、ダミーデータの挿入指示をダミー挿入部４９へ送る。
【００７７】
一方、上記比較器４７は、ページデータ読出の際には、スキップ数レジスタ５１（後述）に記憶されているスキップ数と同数のスキップアドレスレジスタを使用する。スキップアドレスを参照する順序は、ページデータ書込の場合と同じである。スキップ数が１以上であれば、比較器４７は、転送アドレスカウンタ４６によりカウントされる転送アドレスと、個々のスキップアドレスレジスタにそれぞれ記憶されている個々のスキップアドレスとを順番に比較し、一致が発生する毎に、ダミーデータの抜取指示をダミー抜取部５２へ送る。
【００７８】
スキップ数パターン生成回路４８は、ホスト側から転送されてくるページデータをフラッシュメモリ３側へ書き込む際に使用される。この回路４８は、欠陥数情報として図１２に示した５種類のビットパターンType”0”，Type”1”，Type”2”，Type”3”，Type”4”のうち、スキップ数設定レジスタ４５に設定されているスキップ数ｎに該当するタイプのビットパターンType”n”を生成し、これをページデータの先頭に付加するものである。
【００７９】
ダミー挿入部４９は、ホスト側から転送されてくるページデータをフラッシュメモリ３側へ書き込む際に使用される。このダミー挿入部４９は、転送アドレス・スキップアドレス比較器４７から指示を受けた時に、ページデータ中にダミーデータを挿入する。
【００８０】
スキップ数パターン照合判定回路５０は、フラッシュメモリ３から読み出されるページデータをホスト側へ転送する際に使用される。この回路５０は、フラッシュメモリ３から読み出されるページデータの先頭に欠陥数情報として付加されているビットパターンを抜き取り、このビットパターンのタイプがType”0”，Type”1”，Type”2”，Type”3”，Type”4”のうちのどれに該当するのかを照合により判定する。また、判定されたビットパターンのタイプに対応するスキップ数を、スキップ数レジスタ５１に書き込む。
【００８１】
スキップ数レジスタ５１は、フラッシュメモリ３から読み出されるページデータをホスト側へ転送する際に使用される。このスキップ数レジスタ５１は、スキップ数パターン照合判定回路５０により設定されたスキップ数を記憶するものであり、転送アドレス・スキップアドレス比較器４７により使用される。
【００８２】
ダミー抜取部５２は、フラッシュメモリ３から読み出されるページデータをホスト側へ転送する際に使用される。このダミー抜取部５２は、転送アドレス・スキップアドレス比較器４７から指示を受けた時に、ページデータ中からダミーデータを抜き取る。
【００８３】
次に、図１４を参照して、ページデータ書込の際の処理手順を説明する。  
カラムの欠陥が後発的に発生する度に、ファームウェアを実行するＣＰＵ８により、スキップすべき欠陥カラムの位置に相当するカラムアドレス（スキップアドレス）が第１のスキップアドレスレジスタ４１から順に設定され、また、欠陥カラムの数（スキップ数）がスキップ数設定レジスタ４５に設定される。
【００８４】
ホスト側からＥＣＣ処理回路３０を経由してページデータが転送されてくると、スキップ数パターン生成回路４８は、欠陥数情報としての複数のビットパターンType”0”，Type”1”，Type”2”，Type”3”，Type”4”のうち、スキップ数設定レジスタ４５に設定されているスキップ数ｎに該当するタイプのビットパターンType”n”を生成し、これをページデータの先頭に付加する。
【００８５】
転送アドレスカウンタ４６は、ホスト側から転送されてくるページデータに対し、その先頭から順に、該当するカラムアドレス（転送アドレス）をカウントする。
【００８６】
転送アドレス・スキップアドレス比較器４７は、スキップ数設定レジスタ４５に設定されているスキップ数が１以上であれば、このスキップ数設定レジスタ４５に記憶されているスキップ数と同数のスキップアドレスレジスタを使用し、転送アドレスカウンタ４６によりカウントされる転送アドレスと、個々のスキップアドレスレジスタにそれぞれ記憶されている個々のスキップアドレスとを順番に比較し、一致が発生する毎に、ダミーデータの挿入指示をダミー挿入部４９へ送る。
【００８７】
ダミー挿入部４９は、転送アドレス・スキップアドレス比較器４７から指示を受けた時に、ページデータ中にダミーデータを挿入する。
【００８８】
こうして欠陥数情報の付加およびダミーデータの挿入が行われた後のページデータは、フラッシュメモリ３側へ転送され、該当するページに書き込まれる。
【００８９】
次に、図１５を参照して、ページデータ読出の際の処理手順を説明する。  
フラッシュメモリ３からページデータが読み出されると、スキップ数パターン照合判定回路５０は、ページデータの先頭に欠陥数情報として付加されているビットパターンを抜き取り、このビットパターンのタイプがType”0”，Type”1”，Type”2”，Type”3”，Type”4”のうちのどれに該当するのかを照合により判定する。また、判定されたビットパターンのタイプに対応するスキップ数を、スキップ数レジスタ５１に書き込む。
【００９０】
転送アドレスカウンタ４６は、フラッシュメモリ３から読み出されたページデータに対し、その先頭から順に、該当するカラムアドレス（転送アドレス）をカウントする。
【００９１】
転送アドレス・スキップアドレス比較器４７は、スキップ数レジスタ５１に設定されているスキップ数が１以上であれば、このスキップ数レジスタ５１に記憶されているスキップ数と同数のスキップアドレスレジスタを使用し、転送アドレスカウンタ４６によりカウントされる転送アドレスと、個々のスキップアドレスレジスタにそれぞれ記憶されている個々のスキップアドレスとを順番に比較し、一致が発生する毎に、ダミーデータの挿入指示をダミー挿入部４９へ送る。
【００９２】
ダミー抜取部５２は、転送アドレス・スキップアドレス比較器４７から指示を受けた時に、ページデータ中からダミーデータを抜き取る。
【００９３】
こうして欠陥数情報の抜取およびダミーデータの抜取が行われた後のページデータは、ＥＣＣ処理回路３０を経由してホスト側へ転送される。
【００９４】
以下、図１６〜図２３を参照して、本実施形態における欠陥数情報としてのビットパターンの組合せが優れている理由やその変形例について説明する。なお、各図のビットパターンの中における白い正方形は値「１」を表し、黒い正方形は値「０」を表している。
【００９５】
図１６は、ビットパターンの組合せとして「ＭＯＤＥＬ−１」を採用した場合に、ページデータに付加されているビットパターンType”1”に４つのビットエラーが発生しても、当該ビットパターンType”1”を正しく判定できることを示す図である（ケース１）。
【００９６】
図中の上段部は、「ＭＯＤＥＬ−１」に相当する５種類のビットパターンを示している。また、中段部は、ビットパターンType”1”中に上記４つのビットエラーが発生したために該当するビットの値が反転した状態を示している。なお、図中の黒丸は値「１」が不良のビットエラーの位置を表し、白丸は値「０」が不良のビットエラーの位置を表している。図中の下段部は、中段部に示されるエラーが生じたビットパターンと、上段部に示される５種類のビットパターンとの照合をそれぞれ行った結果を示している。図中の斜線部は、値が一致するビットを表している。また、値が一致するビット１個につき、１点を付し、各ビットパターンの点数が算出されている。この場合、最も高い点数を有するビットパターンはType”1”であるため、このType”1”が求めるべきビットパターンであるものと判定できる。
【００９７】
図１７は、ビットパターンの組合せとして「ＭＯＤＥＬ−１」を採用した場合に、ページデータに付加されているビットパターンType”1”に４つのビットエラー（ビットの値がType”3”に類似した状態となるエラー）が発生しても、当該ビットパターンType”1”を正しく判定できることを示す図である（ケース２）。
【００９８】
このケースでは、図中の中段部は、ビットパターンType”1”中に上記４つのビットエラー（ビットの値がType”3”に類似した状態となるエラー）が発生したために該当するビットの値が反転した状態を示している。また、図中の下段部に示されるように、照合結果では、Type”1”の点数はType”3”の点数よりも高い。結局、最も高い点数を有するビットパターンはType”1”であるため、このType”1”が求めるべきビットパターンであるものと判定できる。
【００９９】
図１８は、ビットパターンの組合せとして「ＭＯＤＥＬ−２」を採用した場合に、ページデータに付加されているビットパターンType”1”に４つのビットエラーが発生しても、当該ビットパターンType”1”を正しく判定できることを示す図である（ケース１）。
【０１００】
図中の上段部は、「ＭＯＤＥＬ−２」に相当する５種類のビットパターンを示している。また、中段部は、ビットパターンType”1”中に上記４つのビットエラーが発生したために該当するビットの値が反転した状態を示している。図中の下段部は、中段部に示されるエラーが生じたビットパターンと、上段部に示される５種類のビットパターンとの照合をそれぞれ行った結果を示している。この場合、最も高い点数を有するビットパターンはType”1”であるため、このType”1”が求めるべきビットパターンであるものと判定できる。
【０１０１】
図１９は、ビットパターンの組合せとして「ＭＯＤＥＬ−２」を採用した場合に、ページデータに付加されているビットパターンType”1”に４つのビットエラー（ビットの値がType”3”に類似した状態となるエラー）が発生しても、当該ビットパターンType”1”を正しく判定できることを示す図である（ケース２）。
【０１０２】
このケースでは、図中の中段部は、ビットパターンType”1”中に上記４つのビットエラー（ビットの値がType”3”に類似した状態となるエラー）が発生したために該当するビットの値が反転した状態を示している。また、図中の下段部に示されるように、照合結果では、Type”1”の点数はType”3”の点数よりも高い。結局、最も高い点数を有するビットパターンはType”1”であるため、このType”1”が求めるべきビットパターンであるものと判定できる。
【０１０３】
図２０は、ビットパターンの組合せとして「ＭＯＤＥＬ−２」を採用した場合に、ページデータに付加されているビットパターンType”0”に４つのビットエラー（ビットの値がType”3”に類似した状態となるエラー）が発生しても、当該ビットパターンType”0”を正しく判定できることを示す図である（ケース３）。
【０１０４】
このケースでは、図中の中段部は、ビットパターンType”0”中に上記４つのビットエラー（ビットの値がType”3”に類似した状態となるエラー）が発生したために該当するビットの値が反転した状態を示している。また、図中の下段部に示されるように、照合結果では、Type”0”の点数はType”3”の点数よりも高い。結局、最も高い点数を有するビットパターンはType”0”であるため、このType”0”が求めるべきビットパターンであるものと判定できる。
【０１０５】
図２１は、ビットパターンの組合せとして「ＭＯＤＥＬ−２」を採用した場合に、ページデータに付加されているビットパターンType”0”に一方向性の８つのビットエラーが発生しても、当該ビットパターンType”0”を正しく判定できることを示す図である（ケース４）。
【０１０６】
このケースでは、図中の中段部は、ビットパターンType”0”中に上記一方向性の８つのビットエラーが発生したために該当するビットの値が反転した状態を示している。図中の下段部に示されるように、照合結果では、最も高い点数を有するビットパターンはType”0”であるため、このType”0”が求めるべきビットパターンであるものと判定できる。
【０１０７】
図２２は、ビットパターンの組合せとして「ＭＯＤＥＬ−２」を採用した場合に、ページデータに付加されているビットパターンType”0”に８つのビットエラー（ビットの値がType”3”に類似した状態となるエラー）が発生した例を示す図である（ケース５）。
【０１０８】
このケースでは、図中の中段部は、ビットパターンType”0”中に上記８つのビットエラーが発生したために該当するビットの値が反転した状態を示している。図中の下段部に示されるように、照合結果では、最も高い点数を有するビットパターンはType”0”およびType”3”であるため、８つ以上のビットエラーが生じたときには判別が困難であることがわかる。
【０１０９】
上述した「ＭＯＤＥＬ−２」は、「ＭＯＤＥＬ−１」に比べ、一方向性のエラーに対する耐性やビットパターン間の点数差の面で優れているといえる。
【０１１０】
なお、上述した「ＭＯＤＥＬ−２」のビットパターンの組合せを、図２３に示す「ＭＯＤＥＬ−３」のように変形してもよい（即ち、Type”0”のビットパターンを変えてもよい）。「ＭＯＤＥＬ−３」を採用した場合、「ＭＯＤＥＬ−２」に比べ、Type”0”に一方向性のビットエラーが発生した場合の耐性を更に強化することができる。例えば図２１のケース４に示した一方向性のビットエラーが発生した場合、「ＭＯＤＥＬ−２」ではType”0”の点数が２４点となるのに対し、「ＭＯＤＥＬ−３」ではそれよりも高い２８点となる。
【０１１１】
このように本実施形態によれば、ページデータ書込の際には、欠陥カラムが後発的に発生した場合には該当する箇所にダミーデータを挿入して、スキップ処理を行うことにより、エラーレートが上がるのを抑制することができる。また、このような処理により、書き込んだデータを検証するための書込ベリファイ機能によって不要なループ処理が実行されてしまうことを回避でき、メモリ全体のパフォーマンスの低下を防止できる。
【０１１２】
また、ページデータ書込の際に欠陥数情報をページデータに付加することにより、ページデータ読出の際にはその欠陥数情報を参照できるため、必要な数のダミーデータを正しく抜き出すことができ、エラーレートの低いページデータを取得することができる。また、これにより、ＥＣＣ処理の負荷を低減することができる。
【０１１３】
また、欠陥数情報として、欠陥カラムの数に応じた複数種類のビットパターンを用意し、各ビットパターンを構成する複数のビットのうちの一定数のビットにエラーが生じても他のビットパターンとの区別ができるように構成することにより、欠陥数情報の信頼性を向上させることができる。
【０１１４】
上記実施形態の説明では、実際に使用するフラッシュメモリ３の消去ブロックサイズが、ホスト２０が想定しているフラッシュメモリの消去ブロックサイズよりも大きい場合を示したが、勿論、実際に使用するフラッシュメモリ３の消去ブロックサイズが、ホスト２０が想定しているフラッシュメモリの消去ブロックサイズと同じであってもよい。
【０１１５】
また、上記実施形態の説明では、不揮発性メモリとしてＮＡＮＤ型フラッシュメモリを例に挙げて説明したが、不揮発性メモリはＮＡＮＤ型フラッシュメモリに限られず、他の種類のメモリを適用してもよい。
【０１１６】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【０１１７】
【図１】本発明の一実施形態に係るメモリカードに搭載されるデバイス類の概略構成を示す斜視図。
【図２】ホストと上記メモリカードとを含む構成を示すブロック図。
【図３】ホストが想定しているフラッシュメモリと、実際に使用するフラッシュメモリとのデータ配置の違いを示す図。
【図４】ホスト側システム及びメモリカード（大ブロックカード）の各コミュニケーション階層を示す図。
【図５】ホスト側から送られてくるコマンドのフォーマットを示す図。
【図６】ホスト側が想定しているブロック書込操作とメモリカード（大ブロックカード）側が実際に行う書込処理とを対比して示す図。
【図７】大ブロックカード内のフラッシュメモリのブロックフォーマット（消去単位である256kByte物理ブロック分）を示す図。
【図８】本実施形態のメモリカードに対してホストが書込を行う際の、当該メモリカードのＩ／ＯピンとＲ／Ｂピンとの信号の例を示すタイミングチャート。
【図９】本実施形態のメモリカード内の不揮発性メモリに対して、当該メモリカード内のコントローラが書込を行う際の、メモリカード内の不揮発性メモリのＩ／ＯピンとＲ／Ｂピンとの信号の例を示すタイミングチャート。
【図１０】図２中に示されるメモリインタフェース部を中心とする主要部の概略構成を示す図。
【図１１】書込の際にカラムスキップ処理回路によって処理されたページデータのフォーマット例を示す図。
【図１２】図１１中に示される欠陥数情報の具体例を示す図。
【図１３】図１０中に示されるカラムスキップ処理回路の内部構成を示すブロック図。
【図１４】ページデータ書込の際の処理手順を説明するための図。
【図１５】ページデータ読出の際の処理手順を説明するための図。
【図１６】ビットパターンの組合せ「ＭＯＤＥＬ−１」におけるビットエラー発生時のケース１を説明するための図。
【図１７】ビットパターンの組合せ「ＭＯＤＥＬ−１」におけるビットエラー発生時のケース２を説明するための図。
【図１８】ビットパターンの組合せ「ＭＯＤＥＬ−２」におけるビットエラー発生時のケース１を説明するための図。
【図１９】ビットパターンの組合せ「ＭＯＤＥＬ−２」におけるビットエラー発生時のケース２を説明するための図。
【図２０】ビットパターンの組合せ「ＭＯＤＥＬ−２」におけるビットエラー発生時のケース３を説明するための図。
【図２１】ビットパターンの組合せ「ＭＯＤＥＬ−２」におけるビットエラー発生時のケース４を説明するための図。
【図２２】ビットパターンの組合せ「ＭＯＤＥＬ−２」におけるビットエラー発生時のケース５を説明するための図。
【図２３】ビットパターンの組合せ「ＭＯＤＥＬ−３」を説明するための図。
【符号の説明】
【０１１８】
１…メモリカード（大ブロックカード）、２…ＰＣＢ基板、３…ＮＡＮＤ型フラッシュメモリ、４…コントローラ、５…メモリインタフェース部、６…ホストインタフェース部、７…バッファ、８…ＣＰＵ、９…ＲＯＭ、１０…ＲＡＭ、１１…小ブロックカード物理アクセス層、１２…小ブロックカード物理・小ブロックカード論理変換層、１３…小ブロックカード論理・大ブロックカード物理変換層、１４…大ブロックカード物理アクセス層、２０…ホスト機器、２１…アプリケーションソフト、２２…ファイルシステム、２３…ドライバソフト、２４…小ブロックカード物理アクセス層、３０…ＥＣＣ処理回路、３１…カラムスキップ処理回路、４１〜４４…スキップアドレスレジスタ、４５…スキップ数設定レジスタ、４６…転送アドレスカウンタ、４７…転送アドレス・スキップアドレス比較器、４８…スキップ数パターン生成回路、４９…ダミー挿入部、５０…スキップ数パターン照合判定回路、５１…スキップ数レジスタ、５２…ダミー抜取部。
【図１】
2006004367.tif 000003
【図２】
2006004367.tif 000004
【図３】
2006004367.tif 000005
【図４】
2006004367.tif 000006
【図５】
2006004367.tif 000007
【図６】
2006004367.tif 000008
【図７】
2006004367.tif 000009
【図８】
2006004367.tif 000010
【図９】
2006004367.tif 000011
【図１０】
2006004367.tif 000012
【図１１】
2006004367.tif 000013
【図１２】
2006004367.tif 000014
【図１３】
2006004367.tif 000015
【図１４】
2006004367.tif 000016
【図１５】
2006004367.tif 000017
【図１６】
2006004367.tif 000018
【図１７】
2006004367.tif 000019
【図１８】
2006004367.tif 000020
【図１９】
2006004367.tif 000021
【図２０】
2006004367.tif 000022
【図２１】
2006004367.tif 000023
【図２２】
2006004367.tif 000024
【図２３】
2006004367.tif 000025