(57)【要約】【課題】メモリに記憶される管理ブロックを短時間で検索できるようにする。【解決手段】フラッシュメモリ３の記憶領域は、複数のエリアArea0, Area1, Area2, …に区切られる。各エリアは、当該エリア内に前述の集中管理ブロックが存在するか否かを示す情報を記憶する特定ページpage0を含むマーキングブロックを有する。例えば、特定ページpage0を構成する全てのカラムの値が０である場合には当該特定ページが属しているエリアには集中管理ブロックは存在せず、カラムの値が１となっているものが一つでもある場合には当該特定ページが属しているエリアには集中管理ブロックが存在することを表すように定義されている。上記特定ページは、該当するエリアの最上位ブロックがBadブロックでなければ当該最上位ブロックの中に設けられ、一方、BadブロックであればそのBadブロックに続くブロック（Badブロックでない正常なブロック）の中に設けられる。【選択図】      図１５
2006039772.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータブロックと記憶媒体に関する情報を一括して管理するための情報を記憶する管理ブロックとで構成される記憶領域を具備し、前記記憶領域は複数のエリアに区切られ、各エリアは当該エリア内に前記管理ブロックが存在するか否かを示す情報を記憶する特定ページを含むデータブロックを有することを特徴とする不揮発性半導体メモリ。
【請求項２】
複数のデータブロックとメモリカードに関する情報を一括して管理するための情報を記憶する管理ブロックとで構成される記憶領域を有する不揮発性半導体メモリと、
前記記憶領域の中の前記管理ブロックを検索するコントローラとを具備し、
前記不揮発性半導体メモリにおける前記記憶領域は複数のエリアに区切られ、各エリアは当該エリア内に前記管理ブロックが存在するか否かを示す情報を記憶する特定ページを含むデータブロックを有し、
前記コントローラは、各エリアに含まれる前記特定ページを参照することによって前記管理ブロックを検索することを特徴とするメモリカード。
【請求項３】
前記コントローラは、個々のエリアに対して順に検索を行い、検索対象としているエリアの最上位ブロックが不良ブロックでなければ当該最上位ブロックの中の特定ページを参照し、一方、不良ブロックであればその不良ブロックに続く不良でないブロックの中の特定ページを参照することを特徴とする請求項２に記載のメモリカード。
【請求項４】
前記特定ページを構成する全てのカラムの値が０である場合には当該特定ページが属しているエリアには前記管理ブロックは存在せず、カラムの値が１となっているものがある場合には当該特定ページが属しているエリアには前記管理ブロックが存在することを特徴とする請求項２に記載のメモリカード。
【請求項５】
複数のデータブロックと記憶媒体に関する情報を一括して管理するための情報を記憶する管理ブロックとで構成される記憶領域を有する半導体メモリの制御方法において、
前記記憶領域を構成する個々のエリアに対して順に検索を行い、
検索対象としているエリアの中の不良でないブロックの中の特定ページを参照し、
前記参照した特定ページに示される情報に基づき、当該特定ページが属しているエリアに前記管理ブロックが存在するか否かを判定することを特徴とする半導体メモリの制御方法。
【請求項６】
複数のデータブロックと記憶媒体に関する情報を一括して管理するための情報を記憶する管理ブロックとで構成される記憶領域を有する半導体メモリの制御方法において、
前記記憶領域を構成する個々のエリアに対して順に検索を行い、
検索対象としているエリアの最上位ブロックが不良ブロックでなければ当該最上位ブロックの中の特定ページを参照し、一方、不良ブロックであればその不良ブロックに続く不良でないブロックの中の特定ページを参照し、
前記参照した特定ページに示される情報に基づき、当該特定ページが属しているエリアに前記管理ブロックが存在するか否かを判定することを特徴とする半導体メモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体メモリを搭載したメモリカードに関し、特に所定の消去ブロックサイズを有する不揮発性半導体メモリを搭載したメモリカード、及び半導体メモリの制御方法に関する。
【背景技術】
【０００２】
種々あるメモリカードの中には、ＮＡＮＤ型フラッシュメモリなどの不揮発性メモリの所定領域に、当該メモリカードに関する各種の情報（ホストへ通知すべき情報、アドレス変換テーブルの作成に必要な情報、欠陥ブロックの情報など）を管理する管理ブロックを備えたものがある。
【０００３】
このようなメモリカードの電源投入時には、上記管理ブロックが検索され、当該管理ブロックから必要な情報が読み出されて使用される。
【０００４】
例えば、特許文献１には、メモリカードに関するカード管理情報を格納する管理ブロックを有するフラッシュメモリが開示されている。
【特許文献１】特開平９−１９８８８４号公報（図１等）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、ＮＡＮＤ型フラッシュメモリなどの不揮発性メモリの記憶領域を構成するブロックの数が少ない場合には、上記管理ブロックを比較的短時間で検索することができる。しかし、不揮発性メモリの記憶容量が増え、ブロック数が増えてくると、管理ブロックを検索するのに時間がかかり、ホストに対する応答などが遅れてしまい、メモリカードの仕様に定められる時間的な制約を満たさなくなるおそれがある。
【０００６】
本発明は上記課題を解決するためになされたものであり、メモリに記憶される管理ブロックを短時間で検索することができるメモリカード、及び半導体メモリの制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る不揮発性半導体メモリは、複数のデータブロックと記憶媒体に関する情報を一括して管理するための情報を記憶する管理ブロックとで構成される記憶領域を具備し、前記記憶領域は複数のエリアに区切られ、各エリアは当該エリア内に前記管理ブロックが存在するか否かを示す情報を記憶する特定ページを含むデータブロックを有することを特徴とする。
【０００８】
また、本発明に係るメモリカードは、複数のデータブロックとメモリカードに関する情報を一括して管理するための情報を記憶する管理ブロックとで構成される記憶領域を有する不揮発性半導体メモリと、前記記憶領域の中の前記管理ブロックを検索するコントローラとを具備し、前記不揮発性半導体メモリにおける前記記憶領域は複数のエリアに区切られ、各エリアは当該エリア内に前記管理ブロックが存在するか否かを示す情報を記憶する特定ページを含むデータブロックを有し、前記コントローラは、各エリアに含まれる前記特定ページを参照することによって前記管理ブロックを検索することを特徴とする。
【０００９】
また、本発明に係る半導体メモリの制御方法は、複数のデータブロックと記憶媒体に関する情報を一括して管理するための情報を記憶する管理ブロックとで構成される記憶領域を有する半導体メモリの制御方法において、前記記憶領域を構成する個々のエリアに対して順に検索を行い、検索対象としているエリアの中の不良でないブロックの中の特定ページを参照し、前記参照した特定ページに示される情報に基づき、当該特定ページが属しているエリアに前記管理ブロックが存在するか否かを判定することを特徴とする。
【発明の効果】
【００１０】
メモリに記憶される管理ブロックを短時間で検索することができる。
【発明を実施するための最良の形態】
【００１１】
以下、図面を参照して、本発明の一実施形態について説明する。  
図１は、本発明の一実施形態に係るメモリカードに搭載されるデバイス類の概略構成を示す斜視図である。  
本実施形態に係るメモリカード１は、図示のように、ＰＣＢ（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管理データ領域の両方に対応する構成となっている。
【００４５】
消去単位である256kByte物理ブロックに含まれる１２８個の24Byte管理データ領域のうち、例えば最後の24Byte管理データ領域には、ホスト２０側から送られてくるコマンドから取得された物理ブロックアドレスに相当するアドレス情報、及び論理ブロックアドレスに相当するアドレス情報がまとめて格納されるようになっている。これらのアドレス情報は、図４で説明した小ブロックカード物理・小ブロックカード論理変換層１２が有する第１のテーブルと、小ブロックカード論理・大ブロックカード物理変換層１３が有する第２のテーブルとを作成する際に使用される。
【００４６】
図８は、図７とは異なるブロックフォーマットの例を示す図である。  
図８のブロックフォーマットは、図７のブロックフォーマットに比べると、各ページにおけるＥＣＣ０，ＥＣＣ１，ＥＣＣ２の領域の配置位置が異なる。ただし、各ページにおけるユーザデータの記憶容量は、図７のブロックフォーマットと図８のブロックフォーマットとでは同じである。即ち、図７のブロックフォーマットでは、各ページに2048Byte（512Byte＋512Byte＋512Byte＋512Byte）の記憶領域が設けられており、図８のブロックフォーマットでは、各ページに2048Byte（518Byte＋518Byte＋518Byte＋494Byte）の記憶領域が設けられている。以下では、図８のブロックフォーマットを採用した場合を前提にして説明を行う。
【００４７】
図９は、本実施形態のメモリカード１に対してホスト２０が書込を行う際の、当該メモリカード１のＩ／ＯピンとＲ／Ｂピンとの信号の例を示すタイミングチャートである。
【００４８】
ホスト２０は、メモリカードは16kByteの消去ブロックサイズを有する不揮発性メモリであると仮定してメモリカードを制御している。例えば、メモリカードに対する書込の際には、ホスト２０は、シリアルデータインプットコマンド８０Ｈ（Ｈは１６進を示す）をＩ／Ｏピン１〜８へ入力する。次に、ホスト２０は、カラムアドレスＣ／ＡおよびページアドレスＰ／Ａを、Ｉ／Ｏピン１〜８へ入力する。なお、ここでカラムアドレスＣ／ＡおよびページアドレスＰ／Ａは、ホスト２０がメモリカード１に対して想定している仮想物理アドレス空間におけるカラムアドレスおよびページアドレスである。
【００４９】
更に、ホスト２０は、書込データを、Ｉ／Ｏピン１〜８の個々に対し、５２８回入力する。具体的には、ホスト２０はライトイネーブルピンへの入力信号を５２８回クロッキングしながら、それぞれのＩ／Ｏピンに対し５２８ビット（すべてのＩ／Ｏピン合計で５２８バイト）のデータを順次シフトインする。データのシフトインが完了すると、ホスト２０は、プログラムコマンド１０ＨをＩ／Ｏピン１〜８へ入力する。これに応答してメモリカードは、そのＲ／Ｂピンにロウレベルの信号を出力し、メモリカードがビジー状態であることを示す。その後、所定期間後にＲ／Ｂピンにハイレベルの信号を出力することでメモリカードがレディ状態になったことを示す。
【００５０】
しかしながら、図９におけるＲ／Ｂピンの状態は、あくまでもホスト２０に対してメモリカード１がどのような状態かを示すものである。つまり、図９において、プログラムコマンド１０Ｈの入力に応答して、Ｒ／Ｂピンがビジー状態（つまりロウレベルを出力）を示したとしても、内部でＮＡＮＤ型フラッシュメモリ３に対する書込動作（つまり、ページバッファからメモリセルアレイへのデータ転送）が実際に行われているとは限らない。また、Ｒ／Ｂピンがレディ状態に復帰したとしても、内部でＮＡＮＤ型フラッシュメモリ３に対する書込動作が実際に完了しているとは限らない。
【００５１】
図１０は、本実施形態のメモリカード１内のＮＡＮＤ型フラッシュメモリ３に対して、当該メモリカード１内のコントローラ４が書込を行う際の、ＮＡＮＤ型フラッシュメモリ３のＩ／ＯピンとＲ／Ｂピンとの信号の例を示すタイミングチャートである。
【００５２】
コントローラ４は、ＮＡＮＤ型フラッシュメモリ３は256kByteの消去ブロックサイズを有する不揮発性メモリであると認識している。例えば、ＮＡＮＤ型フラッシュメモリ３に対する書込の際には、コントローラ４は、シリアルデータインプットコマンド８０Ｈ（Ｈは１６進を示す）をＩ／Ｏピン１〜８へ入力する。次に、コントローラ４は、カラムアドレスＣ／ＡおよびページアドレスＰ／Ａを、Ｉ／Ｏピン１〜８へ入力する。なお、ここでカラムアドレスＣ／ＡおよびページアドレスＰ／Ａは、コントローラ４がＮＡＮＤ型フラッシュメモリ３に対して想定している実物理アドレス空間におけるカラムアドレスおよびページアドレスである。したがって、図９におけるカラムアドレスＣ／ＡおよびページアドレスＰ／Ａとは必ずしも一致していない。
【００５３】
更に、コントローラ４は、書込データを、Ｉ／Ｏピン１〜８の個々に対し、２１１２回入力する。具体的には、コントローラ４は、ライトイネーブルピンへの入力信号を２１１２回クロッキングしながら、それぞれのＩ／Ｏピンに対し２１１２ビット（すべてのＩ／Ｏピン合計で２１１２バイト）のデータを順次シフトインする。データのシフトインが完了すると、コントローラ４は、プログラムコマンド１０ＨをＩ／Ｏピン１〜８へ入力する。これに応答してメモリカードは、そのＲ／Ｂピンにロウレベルの信号を出力し、メモリカードがビジー状態であることを示す。その後、所定期間後にＲ／Ｂピンにハイレベルの信号を出力することでメモリカードがレディ状態になったことを示す。図１０におけるＲ／Ｂピンの状態は、コントローラ４に対してＮＡＮＤ型フラッシュメモリ３が実際にどのような状態かを示すものである。
【００５４】
なお、上記図９および図１０においては、カラムアドレスＣ／ＡおよびページアドレスＰ／Ａの入力をそれぞれ１つのサイクルで示しているが、メモリカード１の容量またはＮＡＮＤ型フラッシュメモリ３の容量に応じて、適宜２サイクル以上になる場合もある。
【００５５】
上記図９および図１０からわかるように、メモリカードがビジー状態でいられる時間には制約があるため、その間にデータ書込を行い、所定期間後には当該メモリカードがレディ状態になったことをホスト側に示さなければならない。
【００５６】
以下の説明では、ホスト２０が想定しているフラッシュメモリにおける物理ブロックアドレス，論理ブロックアドレスをそれぞれ「xPBA」，「xLBA」と略称し、フラッシュメモリ３における物理ブロックアドレスを「PBA」と略称するものとする。
【００５７】
本実施形態では、ホスト２０が想定しているフラッシュメモリのデータ記憶領域を複数のゾーンに分け、各ゾーンに番号を付与して管理する。具体的には、物理ブロックアドレスxPBA1〜1023に対応する1024個のブロック群をZone0、物理ブロックアドレスxPBA1024〜2047に対応する1024個のブロック群をZone1、物理ブロックアドレスxPBA2048〜3071に対応する1024個のブロック群をZone2、…のように定義し、各ゾーンに1000個のxLBAを対応付ける。なお、物理ブロックアドレスxPBA0には、当該メモリカード１に関するＣＩＳ（Card Information Structure）（後述）を記憶するブロックを対応させる。
【００５８】
図１１は、フラッシュメモリ３上のデータブロック及び集中管理ブロックの概略構成をそれぞれ対比して示す図である。  
データブロック（１物理ブロック分）は、前述の図８においても示したように１２８個のデータページで構成される。このようなデータブロックは、フラッシュメモリ３上に複数個存在し、ユーザデータ（ユーザが読み書きすることが可能な文書、静止画、動画などのデータ）を記憶するために使用される。なお、個々のデータブロックにおける例えば最終データページ中の所定領域には、当該データブロックのPBAに対応するxPBA及びxLBAの情報が記憶されており、アドレス変換テーブルを作成する際に利用される。
【００５９】
一方、集中管理ブロック（１物理ブロック分）は、１つのＣＩＳ（Card Information Structure）ページ及び複数の管理ページ０，１，２，３，…で構成される。この集中管理ブロックは、当該フラッシュメモリ３上に１個のみ存在し、フラッシュメモリ３に関する種々な管理情報（基本的にはユーザが自由に読み書きすることができず、フラッシュメモリ３の起動時などにホストやコントローラが使用する情報）を一括して記憶する特別なブロックであり、全物理領域の中でもロバスト性（robustness）が最も高い領域に設けられる。即ち、集中管理ブロックは、全物理領域の中でも最もECCエラー数の少ない領域に設けられる。
【００６０】
集中管理ブロック中のＣＩＳページは、例えばフラッシュメモリ３が所定のメモリカードの物理フォーマット仕様に沿ってフォーマッティングされているか否かを見分けるために使用されるページである。管理ページ０，１，２，３，…は、個々のデータブロックがそれぞれ属しているゾーンの番号（Zone No.）や個々のデータブロックのエラーに関するステータス（status）を記憶するページである。この管理ページは、テーブル作成対象ゾーンとして予め指定されているゾーンに該当するデータブロック群のPBAを知得するために使用され、アドレス変換テーブルを作成する際に利用される。
【００６１】
図１２は、図１１中に示される集中管理ブロックのフォーマットの一例を示す図である。図１３は、図１２中に示される主要な情報に関する説明を表にしてまとめたものである。また、図１４は、図１２中に示される管理ページ０における各カラムのフォーマットの一例を示す図である。以下、図１２〜図１４を参照して、ＣＩＳページ及び管理ページ０，１，２，３，…の詳細を説明する。
【００６２】
図１２中のＣＩＳページには、「CIS」、「CIS-PBA」、「識別番号」、「ID」、「空きBLK」、「ECC」、「Mode」、「Max PBA」、「Max PPA」、「1034B」、「4B」等で表された種々な領域がある。領域「CIS」は、ホスト２０に読ませるべきカード情報構造データ（ＣＩＳデータ）を記憶する領域である。領域「CIS-PBA」は、ホスト２０側から見た、ＣＩＳデータの格納位置を示す物理アドレス（xPBA）を記憶する領域である（ホスト２０がＣＩＳデータの書き換えを行った場合に対応できるようにするため、当該物理アドレスが記憶される）。領域「識別番号」は、メモリカード１の識別番号を記憶する領域である。領域「ID」は、当該ページに書かれているデータの種類及びBadブロック属性を記憶する領域である。領域「空きBLK」は、データが消去済みである空きブロックのPBAを記憶する領域である。領域「ECC」は、カラムアドレス0-517の情報に対応するECC、カラムアドレス528-1045の情報に対応するECC、及びカラムアドレス1056-2101の情報に対応するECCを記憶する領域である。領域「Mode」、「Max PBA」、「Max PPA」、「1034B」、「4B」は、デバック時に使用される各種の情報を記憶する領域である（ここでは詳細な説明を省略する）。
【００６３】
一方、図１２中の管理ページ０，１，２，３，…には、「Assign & Status」、「ID」、「ECC」、「19B」、「4B」等で表された複数の領域がある。領域「Assign & Status」は、データブロック毎に、当該データブロックにアサインされているゾーンの番号（Zone No.）及び当該データブロックにECCエラーが何個存在するかを示すステータス（Status）を記憶する領域である。領域「ID」は、当該ページに書かれているデータの種類及びBadブロック属性を記憶する領域である。領域「ECC」は、カラムアドレス0-517の情報に対応するECC、カラムアドレス528-1045の情報に対応するECC、カラムアドレス1056-1573の情報に対応するECC、及びカラムアドレス1584-2101の情報に対応するECCを記憶する領域である。領域「19B」及び「4B」は、空き領域（未使用領域）である。
【００６４】
例えば全管理ページ０，１，２，３，…のうちの管理ページ０に着目すると、図１４に示されるように、管理ページ０を構成する個々のカラムCol.0, Col.1, Col.2, …には、個々のデータブロックを識別するPBA0, PBA1, PBA2, …に対応する領域が設けられ、各領域（1Byte分）には上述したZone No.（７bitのうちの上記６bit）及びStatus（２bit）の組合せが記憶されている。
【００６５】
図１５は、集中管理ブロックを短時間で検索できるようにするフォーマットの一例を説明するための図である。  
フラッシュメモリ３の記憶領域は、製品出荷前に、複数のエリアArea0, Area1, Area2, …に区切られる（プリフォーマットされる）。図示の例では、エリアArea0には1024個のブロック（block0〜block1023）が含まれ、エリアArea1には1024個のブロック（block1024〜block2047）が含まれ、…といったように区切られている。
【００６６】
各エリアは、当該エリア内に前述の集中管理ブロックが存在するか否かを示す情報を記憶する特定ページpage0を含むデータブロック（以下、「マーキングブロック」と称す）を有する。即ち、各エリアには、１つのマーキングブロックが設けられる。図示の例では、Area0におけるマーキングブロックは、block0である。
【００６７】
例えば、特定ページpage0を構成する全てのカラムの値が０である場合には当該特定ページが属しているエリアには集中管理ブロックは存在せず、カラムの値が１となっているものが一つでもある場合には当該特定ページが属しているエリアには集中管理ブロックが存在することを表すように定義されている。
【００６８】
また、各ブロックにおけるpage127上の所定のカラム（例えば、col.2097）には、当該ブロックがBadブロック（データの記憶に使用されないブロック）であるかを示すビットが設けられる。
【００６９】
上記特定ページは、該当するエリアの最上位ブロックがBadブロックでなければ当該最上位ブロックの中に設けられ、一方、BadブロックであればそのBadブロックに続くブロック（Badブロックでない正常なブロック）の中に設けられる。
【００７０】
前述のコントローラ４（図１，図２を参照）は、集中管理ブロックの検索を行う際には、各エリアに含まれるマーキングブロックを探し、そのマーキングブロック中に含まれる特定ページを参照することによって、集中管理ブロックを短時間で検索することができるものとなっている。
【００７１】
具体的には、コントローラ４は、最上位エリアから最下位エリアに向けて順に検索を行い、検索対象としているエリアの最上位ブロック中のpage127を参照することにより当該ブロックがBadブロックであるか否かを判定する。Badブロックでなければ当該最上位ブロックがマーキングブロックであるものと見なし、そのマーキングブロックの中の特定ページであるpage0を参照する。一方、検索対象としているエリアの最上位ブロックがBadブロックであればそのBadブロックに続くブロックがBadブロックであるか否かを当該ブロックのpage127を参照することにより判定する。このように、検索対象としているエリアのブロックがBadブロックであるか否かを最上位ブロックから最下位ブロックに向けて順に判定し、Badブロックでない正常な最上位ブロックを探し出す。Badブロックでない最上位ブロックが探し出せた場合は、そのブロックをマーキングブロックであるものと見なし、当該マーキングブロックの中の特定ページであるpage0を参照する。参照した特定ページが集中管理データの存在を表している場合には、当該特定ページが属しているエリアの中の全ブロックに対して検索を行い、集中管理ブロックを探し出し、これを読み出す。
【００７２】
このようなコントローラ４による検索処理は、ＲＯＭ９からＲＡＭ１０上にロードされた制御プログラムを実行するＣＰＵ８やメモリインタフェース部５を通じて制御される。
【００７３】
ここで、図１６を参照して、コントローラ４があるエリアに設けられる集中管理ブロックを検出するに至るまでの一具体例を説明する。ここでは、集中管理ブロックはblock1500に存在し、Badブロックはblock3071だけであるものとする。
【００７４】
コントローラ４は、Area3における最上位のブロックであるblock4095がBadブロックであるか否かを判定する。block4095はBadブロックでないため、page0における全てのカラムデータの値が０であるか否かを判定する（ステップＳ１）。page0における全てのカラムデータの値が０であるため、管理ブロックはArea3には無いものと見なし、次のエリアを検索対象とする。
【００７５】
次に、コントローラ４は、Area2における最上位のブロックであるblock3071がBadブロックであるか否かを判定する（ステップＳ２）。block3071はBadブロックであるため、次のblock3070がBadブロックであるか否かを判定する。block3070はBadブロックでないため、page0における全てのカラムデータの値が０であるか否かを判定する（ステップＳ３）。page0における全てのカラムデータの値が０であるため、管理ブロックはArea2には無いものと見なし、次のエリアを検索対象とする。
【００７６】
次に、コントローラ４は、Area1における最上位のブロックであるblock2047がBadブロックであるか否かを判定する。block4047はBadブロックでないため、page0における全てのカラムデータの値が０であるか否かを判定する（ステップＳ４）。page0における全てのカラムデータの値が０というわけではなく、値が１のカラムデータもあるため、管理ブロックはArea1の中にあるものと見なし、Area1内の最上位ブロックから順に集中管理ブロックを検索する（ステップＳ５）。コントローラ４は、block1500の集中管理ブロックを検出すると、これを読み出す（ステップＳ６）。
【００７７】
次に、図１７を参照して、コントローラ４による集中管理ブロックの検索動作を説明する。  
コントローラ４は、例えばメモリカード１の電源が投入された際には、メモリカードがビジー状態であることを示した後、以下のような検索処理を開始する。
【００７８】
コントローラ４は、まず、最上位エリアを検索対象エリアとし（ステップＳ１１）、その検索対象エリアの中の最上位ブロックを検索対象ブロックとする（ステップＳ１２）。
【００７９】
コントローラ４は、検索対象ブロックがBadブロックであるか否かを判定する（ステップＳ１３）。Badブロックであれば（ステップＳ１３のＹｅｓ）、そのブロックより一つ下位のブロックを検索対象ブロックとし（ステップＳ１４）、ステップＳ１３の処理を繰り返す。一方、Badブロックでなければ（ステップＳ１３のＮｏ）、検索対象ブロックの中のpage0を読み出す（ステップＳ１５）。
【００８０】
コントローラ４は、読み出したpage0における各カラムデータの値が０であるか否かを判定する（ステップＳ１６）。全てのカラムデータの値が０であれば（ステップＳ１６のＹｅｓ）、検索対象エリアには集中管理ブロックは無いものと見なし、そのエリアより一つ下位のエリアを検索対象とし（ステップＳ１７）、ステップＳ１２からの処理を繰り返す。一方、一つでも値が１のカラムデータがあれば（ステップＳ１６のＮｏ）、検索対象エリアには集中管理ブロックがあるものと見なし、当該エリアの最上位ブロックから順に集中管理ブロックを探す。
【００８１】
コントローラ４は、検索対象ブロックが集中管理ブロックであるか否かを判定する（ステップＳ１８）。集中管理ブロックでなければ（ステップＳ１８のＮｏ）、検索対象ブロックより一つ下位のブロックを検索対象とし（ステップＳ１９）、検索対象ブロックの中のpage0を読み出し（ステップＳ２０）、ステップＳ１８からの処理を繰り返す。一方、集中管理ブロックであれば（ステップＳ１８のＹｅｓ）、当該集中管理ブロックを読み出して、ホスト側へ必要な情報の転送を行う。
【００８２】
コントローラ４は、上記処理が完了すると、メモリカードがレディ状態であることを示し、一連の処理を終了する。
【００８３】
このように本実施形態によれば、フラッシュメモリ３上の記憶領域を複数のエリアに区切るとともに、各エリアには、当該エリア内に集中管理ブロックが存在するか否かを示す情報を記憶する特定ページを含むデータブロック（即ち、マーキングブロック）を設けているので、各エリアに集中管理ブロックが存在するか否かを即座に判断することができ、集中管理ブロックの検索時間を短縮することができる。
【００８４】
また、本実施形態によれば、メモリカードに関する管理情報を分散するのではなく、単一の集中管理ブロックにより一括して管理する形態としているので、全物理領域の中でもロバスト性が最も高い領域に管理情報をまとめて配置することができ、重要な情報が不意に破壊されてしまうことを防止することができる。
【００８５】
上記実施形態の説明では、ホスト２０が想定している半導体メモリにおけるアドレスと実際に使用する半導体メモリのアドレスとの対応付けの管理や制御（集中管理ブロックの検索処理など）をコントローラ４が行う場合を例に挙げたが、代りに、当該制御をホスト２０側のドライバソフト２３等が行うものとして構築してもよい。
【００８６】
また、上記実施形態の説明では、実際に使用するフラッシュメモリ３の消去ブロックサイズが、ホスト２０が想定しているフラッシュメモリの消去ブロックサイズよりも大きい場合を示したが、勿論、実際に使用するフラッシュメモリ３の消去ブロックサイズが、ホスト２０が想定しているフラッシュメモリの消去ブロックサイズと同じであってもよい。
【００８７】
また、上記実施形態の説明では、不揮発性メモリとしてＮＡＮＤ型フラッシュメモリを例に挙げて説明したが、不揮発性メモリはＮＡＮＤ型フラッシュメモリに限られず、他の種類のメモリを適用してもよい。
【００８８】
本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００８９】
【図１】本発明の一実施形態に係るメモリカードに搭載されるデバイス類の概略構成を示す斜視図。
【図２】ホストと上記メモリカードとを含む構成を示すブロック図。
【図３】ホストが想定しているフラッシュメモリと、実際に使用するフラッシュメモリとのデータ配置の違いを示す図。
【図４】ホスト側システム及びメモリカード（大ブロックカード）の各コミュニケーション階層を示す図。
【図５】ホスト側から送られてくるコマンドのフォーマットを示す図。
【図６】ホスト側が想定しているブロック書込操作とメモリカード（大ブロックカード）側が実際に行う書込処理とを対比して示す図。
【図７】大ブロックカード内のフラッシュメモリのブロックフォーマット（消去単位である256kByte物理ブロック分）の一例を示す図。
【図８】図７とは異なるブロックフォーマットの例を示す図。
【図９】本実施形態のメモリカードに対してホストが書込を行う際の、当該メモリカードのＩ／ＯピンとＲ／Ｂピンとの信号の例を示すタイミングチャート。
【図１０】本実施形態のメモリカード内の不揮発性メモリに対して、当該メモリカード内のコントローラが書込を行う際の、メモリカード内の不揮発性メモリのＩ／ＯピンとＲ／Ｂピンとの信号の例を示すタイミングチャート。
【図１１】フラッシュメモリ上のデータブロック及び集中管理ブロックの概略構成をそれぞれ対比して示す図。
【図１２】図１１中に示される集中管理ブロックのフォーマットの一例を示す図。
【図１３】図１２中に示される主要な情報に関する説明を表にしてまとめた図。
【図１４】図１２中に示される管理ページ０における各カラムのフォーマットの一例を示す図。
【図１５】集中管理ブロックを短時間で検索できるようにするフォーマットの一例を説明するための図。
【図１６】コントローラがあるエリアに設けられる集中管理ブロックを検出するに至るまでの一具体例を説明するための図。
【図１７】コントローラによる集中管理ブロックの検索動作を示すフローチャート。
【符号の説明】
【００９０】
１…メモリカード（大ブロックカード）、２…ＰＣＢ基板、３…ＮＡＮＤ型フラッシュメモリ、４…コントローラ、５…メモリインタフェース部、６…ホストインタフェース部、７…バッファ、８…ＣＰＵ、９…ＲＯＭ、１０…ＲＡＭ、１１…小ブロックカード物理アクセス層、１２…小ブロックカード物理・小ブロックカード論理変換層、１３…小ブロックカード論理・大ブロックカード物理変換層、１４…大ブロックカード物理アクセス層、２０…ホスト機器、２１…アプリケーションソフト、２２…ファイルシステム、２３…ドライバソフト、２４…小ブロックカード物理アクセス層。
【図１】
2006039772.tif 000003
【図２】
2006039772.tif 000004
【図３】
2006039772.tif 000005
【図４】
2006039772.tif 000006
【図５】
2006039772.tif 000007
【図６】
2006039772.tif 000008
【図７】
2006039772.tif 000009
【図８】
2006039772.tif 000010
【図９】
2006039772.tif 000011
【図１０】
2006039772.tif 000012
【図１１】
2006039772.tif 000013
【図１２】
2006039772.tif 000014
【図１３】
2006039772.tif 000015
【図１４】
2006039772.tif 000016
【図１５】
2006039772.tif 000017
【図１６】
2006039772.tif 000018
【図１７】
2006039772.tif 000019