(57)【要約】【課題】集中管理ブロックにエラーがある場合、システムを確実に起動することが困難であった。【解決手段】メモリ３は、管理情報を含む複数のブロックと、各ブロックの前記管理情報を集中した集中管理ブロックとを有する。制御部８は、起動時にメモリ３内の集中管理ブロックを検出し、この集中管理ブロックがエラーを含む場合、システムに設定された制約時間内において、メモリ内の複数のブロックから管理情報を検索し、この検索された管理情報をメモリの集中管理ブロックに書き込む。【選択図】図３
2007011872.tif 000002
【特許請求の範囲】
【請求項１】
管理情報を含む複数のブロックと、各ブロックの前記管理情報を集中した集中管理ブロックとを有するメモリと、
起動時に前記メモリ内の集中管理ブロックを検出し、この集中管理ブロックがエラーを含む場合、システムに設定された制約時間内において、前記メモリ内の複数の前記ブロックから前記管理情報を検索し、この検索された管理情報を前記メモリの前記集中管理ブロックに書き込む制御部と
を具備することを特徴とするメモリカード。
【請求項２】
起動時にメモリ内の集中管理ブロックを検出し、
この集中管理ブロックがエラーを含む場合、システムに設定された制約時間内において、前記メモリ内の複数のブロックから管理情報を検索し、
検索された前記管理情報を前記メモリの前記集中管理ブロックに書き込む
ことを特徴とするメモリカードの制御方法。
【請求項３】
前記集中管理ブロックは、前記ブロックが正常か否かを示す第１の情報を含むことを特徴とする請求項１又は２に記載のメモリカード又はメモリカードの制御方法。
【請求項４】
前記制約時間は、前記メモリの全ブロックをスキャンするに必要な時間の半分以上に設定され、前記制御部は、集中管理ブロックがエラーを含む場合、前記メモリの半分のブロックをスキャンすることを特徴とする請求項１又は２に記載のメモリカード又はメモリカードの制御方法。
【請求項５】
前記制約時間は、前記メモリの全ブロックをスキャンするに必要な時間の半分以下に設定され、前記制御部は、集中管理ブロックがエラーを含む場合、前記メモリの全ブロック数の半分以下のブロックをスキャンすることを特徴とする請求項１又は２に記載のメモリカード又はメモリカードの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばＮＡＮＤフラッシュメモリを用いたメモリカードとその起動時の制御方法に関する。
【背景技術】
【０００２】
ＮＡＮＤフラッシュメモリを使用するシステムは、システム起動時にメモリ内の各ブロックのデータをスキャンし、エラーを有するブロック（以下、バッドブロックと称す）であるか否か、空きブロックであるか否か、書かれているデータの論理ブロックアドレスは何か、といった情報を得る必要がある。しかし、近時、メモリ内にこれらの情報を集中的に管理する集中管理ブロックを設け、この集中管理ブロックにメモリ内の全ブロックの各種情報を一括して書き込んでおく手法が考えられている（例えば特許文献１参照）。
【０００３】
この集中管理ブロックを設けることにより、起動時に集中管理ブロックを検出し、この集中管理ブロックのデータを読み出すことにより、メモリ内の全ブロックをスキャンすることなくメモリ全体の情報を得ることが可能となる。
【０００４】
しかしながら、集中管理ブロックの読み出し時に訂正不可能なエラーが発生し、集中管理ブロックの情報が読み出せなかった場合、システムを起動することが不可能となってしまう。この場合、殆どのブロックが正常であるにも拘らず、メモリカードを使用することが困難となるため、ユーザにとって非常に不都合である。
【特許文献１】特開平９−１９８８８４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、集中管理ブロックにエラーがある場合においても、システムを確実に起動することが可能なメモリカードとその制御方法を提供する。
【課題を解決するための手段】
【０００６】
本発明のメモリカードの態様は、管理情報を含む複数のブロックと、各ブロックの前記管理情報を集中した集中管理ブロックとを有するメモリと、起動時に前記メモリ内の集中管理ブロックを検出し、この集中管理ブロックがエラーを含む場合、システムに設定された制約時間内において、前記メモリ内の複数の前記ブロックから前記管理情報を検索し、この検索された管理情報を前記メモリの前記集中管理ブロックに書き込む制御部とを具備することを特徴とする。
【０００７】
本発明のメモリカードの制御方法の態様は、起動時にメモリ内の集中管理ブロックを検出し、この集中管理ブロックがエラーを含む場合、システムに設定された制約時間内において、前記メモリ内の複数のブロックから管理情報を検索し、検索された前記管理情報を前記メモリの前記集中管理ブロックに書き込むことを特徴とする。
【発明の効果】
【０００８】
本発明によれば、集中管理ブロックにエラーがある場合においても、システムを確実に起動することが可能なメモリカードとその制御方法を提供できる。
【発明を実施するための最良の形態】
【０００９】
以下、本発明の実施の形態について、図面を参照して説明する。
【００１０】
図２は、本発明の実施形態に係るメモリカードに搭載されるデバイス類の概略構成を示す斜視図である。
【００１１】
メモリカード１は、ＰＣＢ（Printed Circuit Board）基板２と、このＰＣＢ（Printed Circuit Board）基板２上に配置されたＮＡＮＤ型フラッシュメモリ３及びコントローラ４とにより構成されている。コントローラ４は、ＣＰＵ（Central Processing Unit）８やＲＯＭ（Read-Only Memory）９などの機能ブロックを有している。各デバイスの詳細については後述する。なお、ＮＡＮＤ型フラッシュメモリ３は、１つのメモリセルに１ビットの情報を記憶する２値メモリであっても良いし、１つのメモリセルに１ビットより多い情報（例えば２ビット）を記憶する多値メモリであっても良い。また、図２は、ＰＣＢ基板２上にＮＡＮＤ型フラッシュメモリ３及びコントローラ４が配置された場合を示しているが、ＮＡＮＤ型フラッシュメモリ３及びコントローラ４は、同一のＬＳＩ（Large-scale Integration）基板上に配置されても良い。
【００１２】
以下の説明において使用する用語「論理ブロックアドレス」、「物理ブロックアドレス」は、それぞれブロック自体の論理アドレス，物理アドレスを意味する。また、「論理アドレス」、「物理アドレス」は、主に、ブロック自体の論理アドレス、物理アドレスを意味するが、ブロック単位よりも細かい分解能の単位に相当するアドレスである場合もあり得ることを示している。
【００１３】
図３は、ホストと上記メモリカードとを含む構成を示すブロック図である。図３において、図２と同一部分には同一符号を付している。
【００１４】
ホスト機器（以下、ホストと称す）２０は、接続されるメモリカードをアクセスするためのハードウェア及びソフトウェア（システム）を備えている。このホスト２０は、メモリカード内部の物理状態（何処の物理ブロックアドレスに、何番目の論理セクタアドレスデータが含まれているか、或いは、何処のブロックが消去状態であるか）を管理し、メモリカード内のフラッシュメモリを直接制御する。
【００１５】
また、ホスト２０は、消去時の消去ブロックサイズが１６ｋＢｙｔｅに定められているＮＡＮＤ型フラッシュメモリを使用することを前提とし、１６ｋＢｙｔｅ単位で論理・物理アドレスの割当を行い、多くの場合、論理アドレス１６ｋＢｙｔｅ分に関してシーケンシャルにライトアクセスもしくはリードアクセスを行う（該当するコマンドを発行する）。
【００１６】
メモリカード１は、ホスト２０に接続されたときに電源供給を受けて動作し、ホスト２０からのアクセスに応じた処理を行う。このメモリカード１は、前述したようにＮＡＮＤ型フラッシュメモリ３及びコントローラ４を有している。
【００１７】
ＮＡＮＤ型フラッシュメモリ３は、消去時のブロックサイズ（消去ブロックサイズ）が例えば２５６ｋＢｙｔｅに定められた不揮発性メモリであり、例えば１６ｋＢｙｔｅ単位でデータの書き込み・読み出しを行うようになっている。このＮＡＮＤ型フラッシュメモリ３は、例えば０．０９μｍプロセス技術を用いて製作される。即ち、ＮＡＮＤ型フラッシュメモリ３のデザインルールは、０．１μｍ未満となっている。
【００１８】
コントローラ４は、前述したＣＰＵ８及びＲＯＭ９のほかに、メモリインタフェース部５、ホストインタフェース部６、バッファ７、及びＲＡＭ（Random Access Memory）１０を搭載している。
【００１９】
メモリインタフェース部５は、コントローラ４とＮＡＮＤ型フラッシュメモリ３との間のインタフェース処理を行う。ホストインタフェース部６は、コントローラ４とホスト２０との間のインタフェース処理を行う。
【００２０】
バッファ７は、ホスト２０から送られてくるデータをＮＡＮＤ型フラッシュメモリ３へ書き込む際に、一定量のデータ（例えば１ページ分）を一時的に記憶したり、ＮＡＮＤ型フラッシュメモリ３から読み出されるデータをホスト２０へ送り出す際に、一定量のデータを一時的に記憶したりする。
【００２１】
ＣＰＵ８は、メモリカード１全体の動作を司るものである。このＣＰＵ８は、例えばメモリカード１が電源供給を受けた際に、ＲＯＭ９の中に格納されているファームウェア（制御プログラム）をＲＡＭ１０上にロードして所定の処理を実行する。すなわち、ＣＰＵ８は、各種のテーブルをＲＡＭ１０上に作成したり、ホスト２０から書き込みコマンド、読み出しコマンド、消去コマンドを受けてＮＡＮＤ型フラッシュメモリ３上の該当領域をアクセスしたり、バッファ７を通じてデータ転送処理を制御したりする。
【００２２】
ＲＯＭ９は、ＣＰＵ８により使用される制御プログラムなどを格納するメモリである。ＲＡＭ１０は、ＣＰＵ８の作業エリアとして使用され、制御プログラムや各種のテーブルを記憶する揮発性メモリである。
【００２３】
図４は、ホスト２０が想定しているフラッシュメモリと、実際に使用するフラッシュメモリ（即ち、メモリカード１内のＮＡＮＤ型フラッシュメモリ３）との、データ配置の違いを示している。  
ホスト２０が想定しているフラッシュメモリにおいて、各ページは５２８Ｂｙｔｅ（５１２Ｂｙｔｅ分のデータ記憶部＋１６Ｂｙｔｅ分の冗長部）を有しており、３２ページ分が１つの消去単位（即ち、１６ｋＢｙｔｅ＋０．５ｋＢｙｔｅ（ここで、ｋは１０２４））となる。以下では、このようなフラッシュメモリを搭載したカードを、「小ブロックカード」と称す場合がある。
【００２４】
一方、実際に使用するフラッシュメモリ３において、各ページは２１１２Ｂｙｔｅ（例えば５１２Ｂｙｔｅ分のデータ記憶部×４＋１０Ｂｙｔｅ分の冗長部×４＋２４Ｂｙｔｅ分の管理データ記憶部）を有しており、１２８ページ分が１つの消去単位（即ち、２５６ｋＢｙｔｅ＋８ｋＢｙｔｅ）となる。以下では、このようなフラッシュメモリ３を搭載したカードを、「大ブロックカード」と称す場合がある。なお、以下の説明においては、便宜上、小ブロックカードの消去単位を１６ｋＢｙｔｅと呼び、大ブロックカードの消去単位を２５６ｋＢｙｔｅと呼ぶ。
【００２５】
また、ホスト２０が想定しているフラッシュメモリと、実際に使用するフラッシュメモリ３とは、それぞれフラッシュメモリに対してデータを入出力するためのページバッファを備えている。ホスト２０が想定しているフラッシュメモリに備えられるページバッファの記憶容量は、５２８Ｂｙｔｅ（５１２Ｂｙｔｅ＋１６Ｂｙｔｅ）である。一方、実際に使用するフラッシュメモリ３に備えられるページバッファの記憶容量は、２１１２Ｂｙｔｅ（２０４８Ｂｙｔｅ＋６４Ｂｙｔｅ）である。データ書き込みなどの際において、各ページバッファは、フラッシュメモリに対するデータ入出力処理を、自身の記憶容量に相当する１ページ分の単位で実行する。
【００２６】
図４に示す例は、実際に使用するフラッシュメモリ３の消去ブロックサイズが、ホスト２０が想定しているフラッシュメモリの消去ブロックサイズの１６倍である場合を示している。しかし、本実施形態はこれに限定されるものではなく、略整数倍であれば別の倍率となるように構成することも可能である。
【００２７】
大ブロックカードを実用上有効な製品とするためには、図４に示したフラッシュメモリ３の記憶容量は１Ｇビット以上であることが望ましい。フラッシュメモリ３の記憶容量が例えば１Ｇビットである場合、２５６ｋＢｙｔｅブロック（消去単位）の数は、５１２個となる。
【００２８】
また、図４においては消去単位が２５６ｋＢｙｔｅブロックである場合を例示しているが、消去単位が例えば１２８ｋＢｙｔｅブロックとなるように構築することも実用上有効である。この場合、１２８ｋＢｙｔｅブロックの数は、１０２４個となる。
【００２９】
また、図４に示す例は、実際に使用するフラッシュメモリ３の消去ブロックサイズが、ホスト２０が想定しているフラッシュメモリの消去ブロックサイズよりも大きい場合を示している。しかし、本実施形態はこれに限定されるものではなく、実際に使用するフラッシュメモリ３の消去ブロックサイズが、ホスト２０が想定しているフラッシュメモリの消去ブロックサイズよりも小さいものとして構成することも可能である。
【００３０】
図５は、ホスト２０側システム及びメモリカード１（大ブロックカード）の各コミュニケーション階層を示す図である。
【００３１】
ホスト２０側のシステムは、アプリケーションソフト２１、ファイルシステム２２、ドライバソフト２３、及び小ブロックカード物理アクセス層２４を有する。一方、メモリカード１（大ブロックカード）は、小ブロックカード物理アクセス層１１、小ブロックカード物理・小ブロックカード論理変換層１２、小ブロックカード論理・大ブロックカード物理変換層１３、及び大ブロックカード物理アクセス層１４を有する。
【００３２】
例えばホスト２０側のアプリケーションソフト２１がファイルの書き込みをファイルシステム２２に要求すると、ファイルシステム２２は、小ブロックカードの論理ブロックアドレスに基づきシーケンシャルなセクタ書き込みをドライバソフト２３に指示する。これを受けて、ドライバソフト２３は、小ブロックカードの論理ブロックアドレスに基づく１６ｋＢｙｔｅブロック毎のシーケンシャルな書き込みを実現する。この際、ドライバソフト２３は、論理・物理ブロック変換を行い、小ブロックカード物理アクセス層２４を通じて、小ブロックカードの物理ブロックアドレスによるランダムな書き込みコマンドを大ブロックカードに対して発行し、データ転送を行う。
【００３３】
なお、ライトアクセスにおいては、小ブロックカードの場合も大ブロックカードの場合も、プロトコル上、（１）コマンド、（２）ページアドレス（ロウアドレス）、（３）カラムアドレス、（４）データ、（５）プログラム確認コマンド、といった順序で情報の送受が行われることが前提となっている。
【００３４】
大ブロックカード側における小ブロックカード物理アクセス層１１は、ホスト２０から小ブロックカードの物理ブロックアドレスによる書き込みコマンドを受けると、物理ブロックアドレスやデータのほか、これに付随する付随データに含まれている論理ブロックアドレスを取得する。
【００３５】
小ブロックカード物理・小ブロックカード論理変換層１２は、データ読み出しなどの際に小ブロックカードの物理ブロックアドレス（１６ｋＢｙｔｅブロック分に対応）から小ブロックカードの論理ブロックアドレス（１６ｋＢｙｔｅブロック分に対応）への変換処理を行うための第１のテーブルを有している。変換層１２は、小ブロックカード物理アクセス層１１が書き込みコマンドを受けて小ブロックカードの論理ブロックアドレスを取得したとき、これを上記第１のテーブルに反映させる。物理ブロックアドレスに関しても、上記第１のテーブルに反映させる。
【００３６】
小ブロックカード論理・大ブロックカード物理変換層１３は、データ読み出しなどの際に小ブロックカードの論理ブロックアドレス（シーケンシャルな１６ｋＢｙｔｅブロック×１６個分に対応）から大ブロックカードの物理ブロックアドレス（２５６ｋＢｙｔｅ物理ブロック分に対応）への変換処理を行うための第２のテーブルを有している。変換層１２は、小ブロックカード物理アクセス層１１が書き込みコマンドを受けて小ブロックカードの論理ブロックアドレスを取得したとき、これを上記第２のテーブルに反映させる。
【００３７】
大ブロックカード物理アクセス層１４は、小ブロックカード物理アクセス層１１が書き込みコマンドを受けて取得した小ブロックカードの論理ブロックアドレスに基づき、フラッシュメモリ３内部のデータ配置を決定し、２５６ｋＢｙｔｅ物理ブロック内において２ｋＢｙｔｅ（１ページ）単位でシーケンシャルに１６ｋＢｙｔｅ分のデータを書き込む。また、大ブロックカード物理アクセス層１４は、取得した小ブロックカードの論理ブロックアドレスや物理ブロックアドレスをフラッシュメモリ３内部における管理データ領域内の所定の領域に格納する。
【００３８】
このようにホスト２０は小ブロックカードの物理ブロックアドレスに基づくコマンドを発行するため、大ブロックカード側は、小ブロックカードの物理ブロックアドレスに対応するデータがどの２５６ｋＢｙｔｅ物理ブロックの中に存在するかが分かるように管理する。具体的には、１６ｋＢｙｔｅブロック毎に小ブロックカードの論理・物理ブロックアドレスの対応関係を管理すると共に、小ブロックカードの連続した２５６ｋＢｙｔｅブロック分の論理ブロックアドレスに対応するデータが大ブロックカード内のどの２５６ｋＢｙｔｅ物理ブロックに格納されているかが分かるように管理する。
【００３９】
図６は、ホスト２０側から送られてくるコマンドのフォーマットを示す図である。ホスト２０側から送られてくるコマンドのパケットは、図６（ａ）に示すように、コマンド種別情報（ここでは「書き込み」）、アドレス（物理ブロックアドレス）、データ（コンテンツなどの実データ及び付随データ（５１２Ｂｙｔｅ＋１６Ｂｙｔｅ））といった各種情報を含んでいる。  
このようなフォーマットのパケットにおいては、図６（ｂ）に示されるように、付随データ１６Ｂｙｔｅ中の所定の位置に小ブロックカードの「論理ブロックアドレス」（アクセス対象となる１６ｋＢｙｔｅブロックに対応する論理アドレス）が配置されている。大ブロックカードは、コマンド種別情報、物理ブロックアドレス、データを取得するほか、特に上記「論理ブロックアドレス」を取得する。なお、この「論理ブロックアドレス」は、読み出しコマンドの場合には付加されない。
【００４０】
図７は、ホスト２０側が想定しているブロック書き込み操作と、メモリカード１（大ブロックカード）側が実際に行う書き込み処理とを、対比して示す図である。  
ホスト２０側（同図の左側）では、小ブロックカードの論理アドレスに基づく１６ｋＢｙｔｅブロック単位のシーケンシャルな書き込み操作の発生時に、小ブロックカードの物理ブロックアドレスによる１６ｋＢｙｔｅブロック単位のランダムな書き込み操作を行う。
【００４１】
一方、大ブロックカード側（同図の右側）では、ホスト２０側から書き込みコマンドを受けた場合、小ブロックカードの論理ブロックアドレスに基づく１６ｋＢｙｔｅブロック単位のデータをフラッシュメモリ３内にシーケンシャルに書き込む。
【００４２】
前述のように、ホスト２０は、小ブロックの物理アドレスによる１６Ｂｙｔｅ単位のランダムな書き込み操作を行う。このようなランダムな書き込み操作では、一般に、大ブロック（２５６ｋＢｙｔｅ）の一部のみを書き換えるための処理が多発する。ＮＡＮＤ型フラッシュメモリではブロック単位でしか消去を行えないため、ブロックの一部のみを書き換える場合は、書き換える新データを消去済みの新ブロックに書き込み、新データに書き換えられる旧データを含む旧ブロックから、書き換えられない残りのデータを新ブロックにコピーする必要がある。このように、ブロックの一部のみを書き換える処理は、書き換えられないデータのコピー動作（以下、「巻き添えデータコピー」と称す）を伴うため、ブロックの一部のみを書き換える処理が多発すると、オーバーヘッドが非常に増大する。そこで、本実施形態では、ホスト２０側から得られる論理アドレスの順序に従って、大ブロックカード側で物理アドレスを再度割り当てることにより、ブロックの一部のみの書き込みの発生を低減し、オーバーヘッドの増大を抑制している。
【００４３】
図８は、大ブロックカード内のＮＡＮＤ型フラッシュメモリ３のブロックフォーマット（消去単位である２５６ｋＢｙｔｅ物理ブロック分）の一例を示している。
【００４４】
大ブロックカードでは、消去単位である２５６ｋＢｙｔｅ物理ブロックの中に、ホスト２０側が管理する単位である１６ｋＢｙｔｅに相当するデータを書き込むためのブロック（以下、ホスト管理ブロックと称す）が１６個分含まれている。データ書き込みの際には、小ブロックカードの論理ブロックアドレスの順に個々のデータが配置される。
【００４５】
各ホスト管理ブロックは、８個のページで構成される。各ページは、５１２Ｂｙｔｅデータ領域を４個分含むとともに、各データ領域に対応する１０ＢｙｔｅＥＣＣ領域を含んでいる。また、ページ中の最後の５１２Ｂｙｔｅデータ領域（４番目の５１２Ｂｙｔｅデータ領域）の後には、２４Ｂｙｔｅ管理データ領域も設けられる。このため、ページ中の最後の１０ＢｙｔｅＥＣＣ領域は、４番目の５１２Ｂｙｔｅデータ領域と２４Ｂｙｔｅ管理データ領域の両方に対応する構成となっている。
【００４６】
消去単位である２５６ｋＢｙｔｅ物理ブロックに含まれる１２８個の２４Ｂｙｔｅ管理データ領域のうち、例えば最後の２４Ｂｙｔｅ管理データ領域には、ホスト２０側から送られてくるコマンドから取得された物理ブロックアドレスに相当するアドレス情報、及び論理ブロックアドレスに相当するアドレス情報がまとめて格納されるようになっている。これらのアドレス情報は、図５で説明した小ブロックカード物理・小ブロックカード論理変換層１２が有する第１のテーブルと、小ブロックカード論理・大ブロックカード物理変換層１３が有する第２のテーブルとを作成する際に使用される。
【００４７】
図９は、図８とは異なるブロックフォーマットの例を示す図である。  
図９に示すブロックフォーマットは、図８のブロックフォーマットに比べると、各ページにおけるＥＣＣ０，ＥＣＣ１，ＥＣＣ２の領域の配置位置が異なる。ただし、各ページにおけるユーザデータの記憶容量は、図８に示すブロックフォーマットと図９に示すブロックフォーマットとでは同じである。即ち、図８に示すブロックフォーマットは、各ページに２０４８Ｂｙｔｅ（５１２Ｂｙｔｅ＋５１２Ｂｙｔｅ＋５１２Ｂｙｔｅ＋５１２Ｂｙｔｅ）の記憶領域が設けられており、図９に示すブロックフォーマットは、各ページに２０４８Ｂｙｔｅ（５１８Ｂｙｔｅ＋５１８Ｂｙｔｅ＋５１８Ｂｙｔｅ＋４９４Ｂｙｔｅ）の記憶領域が設けられている。以下では、図９に示すブロックフォーマットを採用した場合を前提にして説明する。
【００４８】
図１０は、本実施形態のメモリカード１に対してホスト２０が書き込みを行う際の、当該メモリカード１のＩ／ＯピンとＲ／Ｂピンとの信号の例を示すタイミングチャートである。
【００４９】
ホスト２０は、メモリカードが１６ｋＢｙｔｅの消去ブロックサイズを有する不揮発性メモリであると仮定してメモリカードを制御している。例えばメモリカードに対する書き込みの際、ホスト２０は、シリアルデータインプットコマンド８０Ｈ（Ｈは１６進を示す）をＩ／Ｏピン１〜８へ入力する。次に、ホスト２０は、カラムアドレスＣ／ＡおよびページアドレスＰ／Ａを、Ｉ／Ｏピン１〜８へ入力する。なお、ここでカラムアドレスＣ／ＡおよびページアドレスＰ／Ａは、ホスト２０がメモリカード１に対して想定している仮想物理アドレス空間におけるカラムアドレスおよびページアドレスである。
【００５０】
さらに、ホスト２０は、書き込みデータを、Ｉ／Ｏピン１〜８の個々に対し、５２８回入力する。具体的には、ホスト２０はライトイネーブルピンへの入力信号を５２８回クロッキングしながら、それぞれのＩ／Ｏピンに対し５２８ビット（全てのＩ／Ｏピン合計で５２８バイト）のデータを順次シフトインする。データのシフトインが完了すると、ホスト２０は、プログラムコマンド１０ＨをＩ／Ｏピン１〜８へ入力する。これに応答してメモリカードは、そのＲ／Ｂピンにロウレベルの信号を出力し、メモリカードがビジー状態であることを示す。その後、所定期間後にＲ／Ｂピンにハイレベルの信号を出力することでメモリカードがレディ状態になったことを示す。
【００５１】
しかしながら、図１０におけるＲ／Ｂピンの状態は、あくまでもホスト２０に対してメモリカード１がどのような状態かを示すものである。つまり、図１０において、プログラムコマンド１０Ｈの入力に応答して、Ｒ／Ｂピンがビジー状態（つまりロウレベルを出力）を示したとしても、内部でＮＡＮＤ型フラッシュメモリ３に対する書き込み動作（つまり、ページバッファからメモリセルアレイへのデータ転送）が実際に行われているとは限らない。また、Ｒ／Ｂピンがレディ状態に復帰したとしても、内部でＮＡＮＤ型フラッシュメモリ３に対する書き込み動作が実際に完了しているとは限らない。
【００５２】
図１１は、本実施形態のメモリカード１内のＮＡＮＤ型フラッシュメモリ３に対して、当該メモリカード１内のコントローラ４が書き込みを行う際の、ＮＡＮＤ型フラッシュメモリ３のＩ／ＯピンとＲ／Ｂピンとの信号の例を示すタイミングチャートである。
【００５３】
コントローラ４は、ＮＡＮＤ型フラッシュメモリ３が２５６ｋＢｙｔｅの消去ブロックサイズを有する不揮発性メモリであると認識している。例えば、ＮＡＮＤ型フラッシュメモリ３に対する書き込みの際、コントローラ４は、シリアルデータインプットコマンド８０ＨをＩ／Ｏピン１〜８へ入力する。次に、コントローラ４は、カラムアドレスＣ／ＡおよびページアドレスＰ／Ａを、Ｉ／Ｏピン１〜８へ入力する。なお、ここでカラムアドレスＣ／ＡおよびページアドレスＰ／Ａは、コントローラ４がＮＡＮＤ型フラッシュメモリ３に対して想定している実物理アドレス空間におけるカラムアドレスおよびページアドレスである。したがって、図１０におけるカラムアドレスＣ／ＡおよびページアドレスＰ／Ａとは必ずしも一致していない。
【００５４】
さらに、コントローラ４は、書き込みデータを、Ｉ／Ｏピン１〜８の個々に対し、２１１２回入力する。具体的には、コントローラ４は、ライトイネーブルピンへの入力信号を２１１２回クロッキングしながら、それぞれのＩ／Ｏピンに対し２１１２ビット（全てのＩ／Ｏピン合計で２１１２バイト）のデータを順次シフトインする。データのシフトインが完了すると、コントローラ４は、プログラムコマンド１０ＨをＩ／Ｏピン１〜８へ入力する。これに応答してメモリカードは、そのＲ／Ｂピンにロウレベルの信号を出力し、メモリカードがビジー状態であることを示す。その後、所定期間後にＲ／Ｂピンにハイレベルの信号を出力することでメモリカードがレディ状態になったことを示す。図１１におけるＲ／Ｂピンの状態は、コントローラ４に対してＮＡＮＤ型フラッシュメモリ３が実際にどのような状態かを示している。
【００５５】
なお、上記図１０および図１１は、カラムアドレスＣ／ＡおよびページアドレスＰ／Ａの入力をそれぞれ１つのサイクルで示しているが、メモリカード１の容量またはＮＡＮＤ型フラッシュメモリ３の容量に応じて、適宜２サイクル以上になる場合もある。
【００５６】
上記図１０および図１１から分かるように、メモリカードがビジー状態でいられる時間には制約がある。このため、その間にデータ書き込みを行い、所定期間後には当該メモリカードがレディ状態になったことをホスト側に示さなければならない。
【００５７】
以下の説明では、ホスト２０が想定しているフラッシュメモリにおける物理ブロックアドレス，論理ブロックアドレスをそれぞれ「ｘＰＢＡ」、「ｘＬＢＡ」と略称し、フラッシュメモリ３における物理ブロックアドレスを「ＰＢＡ」と略称するものとする。
【００５８】
本実施形態では、ホスト２０が想定しているフラッシュメモリのデータ記憶領域を複数のゾーンに分け、各ゾーンに番号を付与して管理する。具体的には、物理ブロックアドレスｘＰＢＡ１〜１０２３に対応する１０２４個のブロック群をＺｏｎｅ０、物理ブロックアドレスｘＰＢＡ１０２４〜２０４７に対応する１０２４個のブロック群をＺｏｎｅ１、物理ブロックアドレスｘＰＢＡ２０４８〜３０７１に対応する１０２４個のブロック群をＺｏｎｅ２、…のように定義し、各ゾーンに１０００個のｘＬＢＡを対応付ける。なお、物理ブロックアドレスｘＰＢＡ０には、当該メモリカード１に関するＣＩＳ（Card Information Structure）（後述）を記憶するブロックを対応させる。
【００５９】
図１２（ａ）（ｂ）は、フラッシュメモリ３上のデータブロック及び集中管理ブロックの概略構成をそれぞれ対比して示している。
【００６０】
図１２（ａ）に示すデータブロック（１物理ブロック分）は、図９にも示したように、１２８個のデータページで構成される。このようなデータブロックは、フラッシュメモリ３上に複数個存在し、ユーザデータ（ユーザが読み書きすることが可能な文書、静止画、動画などのデータ）を記憶するために使用される。なお、個々のデータブロックにおける例えば最終データページ中の所定領域には、当該データブロックのＰＢＡに対応するｘＰＢＡ及びｘＬＢＡの情報が記憶されており、アドレス変換テーブルを作成する際に利用される。
【００６１】
一方、図１２（ｂ）に示す集中管理ブロック（１物理ブロック分）は、１つのＣＩＳ（Card Information Structure）ページ及び複数の管理ページ０，１，２，３，…で構成される。この集中管理ブロックは、当該フラッシュメモリ３上に１個のみ存在する。この集中管理ブロックは、フラッシュメモリ３に関する種々な管理情報（基本的にはユーザが自由に読み書きすることができず、フラッシュメモリ３の起動時などにホストやコントローラが使用する情報）を一括して記憶する特別なブロックであり、全物理領域の中でもロバスト性（robustness）が最も高い領域に設けられる。即ち、集中管理ブロックは、全物理領域の中でも最もＥＣＣエラー数の少ない領域に設けられる。
【００６２】
集中管理ブロック中のＣＩＳページは、例えばフラッシュメモリ３が所定のメモリカードの物理フォーマット仕様に沿ってフォーマッティングされているか否かを見分けるために使用されるページである。管理ページ０，１，２，３，…は、個々のデータブロックがそれぞれ属しているゾーンの番号（Zone No.）や個々のデータブロックのエラーに関するステータス（status）を記憶するページである。この管理ページは、テーブル作成対象ゾーンとして予め指定されているゾーンに該当するデータブロック群のＰＢＡを知得するために使用され、アドレス変換テーブルを作成する際に利用される。
【００６３】
図１３は、図１２中に示される集中管理ブロックのフォーマットの一例を示している。図１４は、図１３中に示される主要な情報に関する説明をまとめたものである。また、図１５は、図１４中に示された管理ページ０における各カラムのフォーマットの一例を示している。以下、図１３〜図１５を参照して、ＣＩＳページ及び管理ページ０，１，２，３，…の詳細を説明する。
【００６４】
図１３中のＣＩＳページには、「ＣＩＳ」、「ＣＩＳ−ＰＢＡ」、「識別番号」、「ＩＤ」、「空きＢＬＫ」、「ＥＣＣ」、「Ｍｏｄｅ」、「Ｍａｘ ＰＢＡ」、「Ｍａｘ ＰＰＡ」、「１０３４Ｂ」、「４Ｂ」等で表された種々な領域がある。領域「ＣＩＳ」は、ホスト２０に読ませるべきカード情報構造データ（ＣＩＳデータ）を記憶する領域である。領域「ＣＩＳ−ＰＢＡ」は、ホスト２０側から見た、ＣＩＳデータの格納位置を示す物理アドレス（ｘＰＢＡ）を記憶する領域である（ホスト２０がＣＩＳデータの書き換えを行った場合に対応できるようにするため、当該物理アドレスが記憶される）。領域「識別番号」は、メモリカード１の識別番号を記憶する領域である。領域「ＩＤ」は、当該ページに書かれているデータの種類及びバッドブロック属性を記憶する領域である。領域「空きＢＬＫ」は、データが消去済みである空きブロックのＰＢＡを記憶する領域である。領域「ＥＣＣ」は、カラムアドレス０−５１７の情報に対応するＥＣＣ、カラムアドレス５２８−１０４５の情報に対応するＥＣＣ、及びカラムアドレス１０５６−２１０１の情報に対応するＥＣＣを記憶する領域である。領域「Ｍｏｄｅ」、「Ｍａｘ ＰＢＡ」、「Ｍａｘ ＰＰＡ」、「１０３４Ｂ」、「４Ｂ」は、デバック時に使用される各種の情報を記憶する領域である（ここでは詳細な説明を省略する）。
【００６５】
一方、図１３中の管理ページ０，１，２，３，…には、「Assign & Status」、「ＩＤ」、「ＥＣＣ」、「１９Ｂ」、「４Ｂ」等で表された複数の領域がある。領域「Assign & Status」は、データブロック毎に、当該データブロックにアサインされているゾーンの番号（Zone No.）及び当該データブロックにＥＣＣエラーが何個存在するかを示すステータス（Status）を記憶する領域である。領域「ＩＤ」は、当該ページに書かれているデータの種類及びバッドブロック属性を記憶する領域である。領域「ＥＣＣ」は、カラムアドレス０−５１７の情報に対応するＥＣＣ、カラムアドレス５２８−１０４５の情報に対応するＥＣＣ、カラムアドレス１０５６−１５７３の情報に対応するＥＣＣ、及びカラムアドレス１５８４−２１０１の情報に対応するＥＣＣを記憶する領域である。領域「１９Ｂ」及び「４Ｂ」は、空き領域（未使用領域）である。
【００６６】
例えば全管理ページ０，１，２，３，…のうちの管理ページ０に着目すると、図１５に示すように、管理ページ０を構成する個々のカラムＣｏｌ．０， Ｃｏｌ．１， Ｃｏｌ．２，…には、個々のデータブロックを識別するＰＢＡ０， ＰＢＡ１， ＰＢＡ２， …に対応する領域が設けられ、各領域（１Ｂｙｔｅ分）には上述したゾーン番号（Zone No.）（７ｂｉｔのうちの上記６ｂｉｔ）及びステータス（Status）（２ｂｉｔ）の組合せが記憶されている。
【００６７】
ところで、前述したように、集中管理ブロックの読み出し時に訂正不可能なエラーが発生し、集中管理ブロックの情報が読み出せなかった場合、集中管理ブロックを作成し直す必要がある。このため、メモリ内の各種情報を得るために、メモリ内の全ブロックをスキャンする必要がある。しかし、システムの起動時に制約時間が設けられているシステムがあり、スキャン時間がこの制約時間よりも長い場合、システムを起動することができなくなるという問題が発生する。
【００６８】
例えば１ページの大きさが（２０４８＋６４）Ｂｙｔｅで、１ブロックが１２８ページであり、全部で８１９２ブロックからなるＮＡＮＤフラッシュメモリを使用するシステムを考える。このシステムは集中管理ブロックにメモリ全体の空きブロックの位置を示す情報を書き込んでいるとすると、この管理情報の読み出しが不可能となってしまった場合、８１９２ブロック全てをスキャンして空きブロックであるかどうかをチェックする必要がある。１ブロックのスキャンに要する時間を１００μｓとすると、全ブロックをスキャンするために約８２０ｍｓの時間がかかることになる。
【００６９】
仮に、このシステムの起動時に設定された制約時間が５００ｍｓ以内であるとすると、この制約時間内に全てのブロックの管理情報を読み出すことは困難である。したがって、管理情報の読み出しが不可能となった時点でシステムを起動することが不可能となってしまう。この場合、殆どのブロックが正常であるにも拘らず、メモリカードを使用することが困難となる。
【００７０】
そこで、本実施形態においては、図１に示すような動作により、管理ブロックを再構築することにより、システムの起動を可能としている。図１は、例えばメモリカード１のコントローラ４の動作を示している。
【００７１】
以下、図１を参照してメモリカードの起動時の動作について説明する。
【００７２】
図３に示すように、メモリカード１がホスト２０に装着され、ホスト２０によりメモリカード１が起動されると（Ｓ１１）、フラッシュメモリ３内の集中管理ブロックが検出される（Ｓ１２）。この集中管理ブロックの検出は、例えば次のように行なわれる。
【００７３】
図１６に示すように、製品出荷時、フラッシュメモリ３の記憶領域は、複数のエリアＡｒｅａ０〜３にプリフォーマットされている。１つのエリアは、例えば１０２４個のブロックを含んでいる。各エリアは、集中管理ブロックが存在するか否かを示す情報を記憶する特定ページを含むデータブロック（以下、「マーキングブロック」と称す）を有している。即ち、各エリアには、１つのマーキングブロックが設けられている。例えば、特定ページ（ｐａｇｅ０）を構成する全てのカラムの値が“０”である場合、当該特定ページが属しているエリアには集中管理ブロックは存在せず、カラムの値が“１”となっているものが一つでもある場合、当該特定ページが属しているエリアには集中管理ブロックが存在することを表すように定義されている。図１６に示す例の場合、Ａｒｅａ１に集中管理ブロックが存在する。
【００７４】
コントローラ４は、集中管理ブロックを検索するとき、各エリアに含まれるマーキングブロックを探し、そのマーキングブロック中に含まれる特定ページを参照することによって、集中管理ブロック検索する。
【００７５】
集中管理ブロックが検出されると、集中管理ブロック内の情報が読み出される（Ｓ１３）。この読み出し時に例えばＥＣＣエラーなど、訂正不可能なエラーが発生したかどうかが判断される（Ｓ１４）。この結果、エラーが発生した場合、集中管理ブロックが再構築される。すなわち、フラッシュメモリ３の各ブロックがスキャンされ、各ブロックから管理情報が読み出される。この読み出された管理情報は、例えば図３に示すバッファ７に保持される。この動作は、フラッシュメモリ３内のブロック数が例えば８１９２個である場合、その半分の４０９６個分繰り返される（Ｓ１５）。このようにして、フラッシュメモリ３内の前半のブロックから管理情報が検索されると、バッファ７内に保持された管理情報がフラッシュメモリ３の集中管理ブロックに書き込まれる（Ｓ１６）。
【００７６】
この後、フラッシュメモリ３内の残りの４０９６ブロックをスキャンし、これらブロックから管理情報を読み出す（Ｓ１７）。この読み出された管理情報はバッファ７内に保持される。後半の４０９６ブロックから管理情報が読み出されると、バッファ７内の管理情報がフラッシュメモリ３の集中管理ブロックに書き込まれる（Ｓ１８）。
【００７７】
ところで、後半の４０９６ブロックのスキャン中にシステムに設定された制約時間に達すると起動不可能となる。この後、システムを再度起動すると（Ｓ１１）、集中管理ブロックが検索され（Ｓ１２）、集中管理情報が読み出される（Ｓ１３）。この後、読み出しエラーが発生したかどうかが判別される（Ｓ１４）。この場合、上記前半４０９６ブロックのデータは集中管理ブロックに既に記録され、この記録は正常に終了している。このため、ＥＣＣエラーは生じていない。したがって、制御がステップＳ１９に移行され、集中管理ブロックに全ブロックの管理情報が記録されているかどうかが判別される。この場合、全部ロックの半分のブロックの管理情報のみが記録されているため、制御が前記ステップＳ１７に移行され、残りの４０９６ブロックがスキャンされ、管理情報が検索される。この検索された管理情報は、バッファ１７に記憶され、検索が終了すると、バッファ１７に保持された管理情報がフラッシュメモリ３の集中管理ブロックに書き込まれる（Ｓ１８）。後半のスキャンは、全ブロックの半分のブロックをスキャンすればよい。このため、システムに設定された制約時間の範囲内で、後半の管理情報を検索することができる。したがって、後半のスキャンの間にタイムアウトすることを回避できる。
【００７８】
具体的には、１ブロックのスキャンに要する時間が例えば１００μｓであり、このシステムの起動時に設定された制約時間が例えば５００ｍｓであるとした場合、８１９２個のブロックの半分の４０９６個のブロックをスキャンするために必要な時間は約４１０ｍｓである。したがって、前半のブロックスキャン及び後半のブロックスキャンは、制約時間内で終了する。このため、タイムアウトを回避できる。
【００７９】
このようにして、検索した管理情報を集中管理ブロックに書き込み、集中管理ブロックを再構築した状態においてシステムを起動することができる（Ｓ２０）。
【００８０】
尚、上記実施形態において、ブロックスキャンは、システムに設定された制約時間より若干短く、前半、後半とも全ブロック数の半数の４０９６ブロックとした。しかし、これに限定されるものではなく、１ブロックのスキャンに要する時間や、システム起動時の制約時間に応じて、スキャン対象のブロック数を少なくしてもよい。例えば制約時間がメモリ３の全ブロック数の半分以下のブロック数をスキャンするに必要な時間に設定されている場合、１回のスキャンで、管理情報を読み出し可能なブロック数は、４０９６個以下となる。したがって、メモリ３の全ブロックをスキャンするための回数が増加するため、正常に起動するまでの再起動回数が増えることとなるが、再起動不能となることを回避できる。
【００８１】
上記実施形態によれば、システムの起動時に集中管理情報の読み出しが不可能となってしまった場合、システムに設定された制約時間内で、フラッシュメモリ３のブロックをスキャンして管理情報を読み出し、読み出した管理情報を集中管理ブロックに書き込んでいる。このため、集中管理情報の読み出しが不可能となってしまった場合においても、何度かシステムを再起動して各ブロックの管理情報を検索し、集中管理ブロックに書き込むことにより、集中管理情報を復旧でき、システムの再起動不能を回避することができる。
【００８２】
尚、本発明は、上記実施形態に限定されるものではなく、発明の要旨を変えない範囲において種々変形実施可能なことは勿論である。
【図面の簡単な説明】
【００８３】
【図１】実施形態に係る動作を示すフローチャート。
【図２】本発明の実施形態に係るメモリカードに搭載されるデバイス類の概略構成を示す斜視図。
【図３】ホストと図２に示すメモリカードとを含む構成を示すブロック図。
【図４】ホストが想定しているフラッシュメモリと、実際に使用するフラッシュメモリとの関係を示す図。
【図５】ホスト側システムとメモリカードの各コミュニケーション階層を示す図。
【図６】図６（ａ）（ｂ）は、ホスト側から送られてくるコマンドのフォーマットを示す図。
【図７】ホスト側が想定しているブロック書き込み操作と、メモリカード側が実際に行う書き込み処理とを対比して示す図。
【図８】大ブロックカード内のＮＡＮＤ型フラッシュメモリのブロックフォーマットの一例を示す図。
【図９】図８とは異なるブロックフォーマットの例を示す図。
【図１０】本実施形態のメモリカードに対してホストが書き込みを行う際の信号の例を示すタイミングチャート。
【図１１】本実施形態のメモリカード内のフラッシュメモリに対して、当該メモリカード内のコントローラが書き込みを行う際の信号の例を示すタイミングチャート。
【図１２】図１２（ａ）（ｂ）は、フラッシュメモリ上のデータブロック及び集中管理ブロックの概略構成を示す図。
【図１３】図１２（ｂ）に示す集中管理ブロックのフォーマットの一例を示す図。
【図１４】図１３に示す主要な情報に関する説明を示す図。
【図１５】図１４中に示す管理ページ０における各カラムのフォーマットの一例を示す図。
【図１６】集中管理ブロックの位置を示す図。
【符号の説明】
【００８４】
１…メモリカード、３…ＮＡＮＤ型フラッシュメモリ、４…コントローラ、７…バッファ、８…ＣＰＵ、２０…ホスト。
【図１】
2007011872.tif 000003
【図２】
2007011872.tif 000004
【図３】
2007011872.tif 000005
【図４】
2007011872.tif 000006
【図５】
2007011872.tif 000007
【図６】
2007011872.tif 000008
【図７】
2007011872.tif 000009
【図８】
2007011872.tif 000010
【図９】
2007011872.tif 000011
【図１０】
2007011872.tif 000012
【図１１】
2007011872.tif 000013
【図１２】
2007011872.tif 000014
【図１３】
2007011872.tif 000015
【図１４】
2007011872.tif 000016
【図１５】
2007011872.tif 000017
【図１６】
2007011872.tif 000018