(57)【要約】【課題】ＲＡＭなどの揮発性メモリに記憶される情報の量を低減しつつ処理の効率化を実現する。【解決手段】第１のテーブル３１及び第２のテーブル３２は、ホストが想定しているフラッシュメモリにおけるアドレスと実際に使用するフラッシュメモリにおけるアドレスとの全ての対応付けのうち、一部の対応付けを示すアドレス変換情報である。これら第１のテーブル３１及び第２のテーブル３２を参照することにより、ホスト２０が想定しているフラッシュメモリにおける所定のアドレス範囲に含まれる個々の物理ブロックアドレスxPBAもしくは論理ブロックアドレスxLBAが、実際に使用するフラッシュメモリ上のどの物理アドレスPBAに対応するのかを導き出すことができるようになっている。【選択図】      図１１
2006011533.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）（後述）を記憶するブロックを対応させる。
【００６３】
図１１に示される第１のテーブル３１及び第２のテーブル３２の例では、全てのゾーンのうち、予めテーブル作成対象ゾーンとして指定されている２つのゾーン（ZoneN, ZoneN+1）に関するアドレス情報のみが記述されている。即ち、２ゾーン分について、「xPBAからxLBA（10bit）への変換」および「xLBAからPBA（13bit）への変換」を行えるようになっている。なお、図中では、個々のアドレスの対応付けを理解し易くするため、各ゾーンにおける連続する1024個のxPBAに対して共通の番号0〜1023を付し、同様に、各ゾーンにおける連続する1000個のxLBAに対して共通の番号0〜999を付している。また、図１１中のZoneNは偶数番号のゾーンであることを表しており、ZoneN+1は奇数番号のゾーンであることを表している。
【００６４】
コントローラ４は、このような第１のテーブル３１と第２のテーブル３２とを組み合わせたアドレス変換テーブルを例えば２セット分作成し、ＲＡＭ１０上に常駐させる。２セット分のアドレス変換テーブルを作成する場合には、１つは例えばホスト２０が現在アクセスを行っているゾーンに関するアドレス変換テーブルにし、もう１つは例えばＦＡＴ（File Allocation Table）領域のように頻繁にホスト２０がアクセスしてくることが予想されるゾーンに関するアドレス変換テーブルにすることが望ましい。
【００６５】
コントローラ４は、ホスト２０から書込コマンドを受けた場合には、この書込コマンドから得られるxPBA及びxLBAの対応関係を第１のテーブル３１に反映させる（即ち、第１のテーブル３１を修正する）。また、コントローラ４は、データ書込先のPBAを決定した後、このPBA及び上記xLBAの対応関係を第２のテーブル３２に反映させる（即ち、第２のテーブル３２を修正する）。
【００６６】
一方、コントローラ４は、ホスト２０から読出コマンドを受けた場合には、第１のテーブル３１を参照し、読出コマンドから得られるxPBAに対応するxLBAを検索する。また、コントローラ４は、第２のテーブル３２を参照し、上記検索したxLBAに対応するPBAを検索し、この検索されたPBAのブロックからのデータ読出を行う。
【００６７】
このように、本実施形態では、全てのアドレス範囲に関するアドレス変換テーブルをＲＡＭ１０上に記憶させるのではなく、一部のアドレス範囲だけに関するアドレス変換テーブルをＲＡＭ１０上に記憶させるようにしているので、記憶に必要な情報量を低減でき、より小さなＲＡＭ１０を実装することが可能となる。その際に、「xPBAからxLBA（10bit）への変換」および「xLBAからPBA（13bit）への変換」を行うための２種類のテーブルを採用することにより、更なる情報量の低減を実現している。また、頻繁にアクセスされることが予想されるゾーンに関するテーブルをＲＡＭ１０上に記憶させることにより、テーブル再作成の時間を低減し、高速なアクセスを実現できる。
【００６８】
図１２は、フラッシュメモリ３上のデータブロック及び集中管理ブロックの概略構成をそれぞれ対比して示す図である。  
データブロック（１物理ブロック分）は、前述の図８においても示したように１２８個のデータページで構成される。このようなデータブロックは、フラッシュメモリ３上に複数個存在し、ユーザデータ（ユーザが読み書きすることが可能な文書、静止画、動画などのデータ）を記憶するために使用される。なお、個々のデータブロックにおける例えば最終データページ中の所定領域には、当該データブロックのPBAに対応するxPBA及びxLBAの情報が記憶される。その詳細については、後で述べる。
【００６９】
一方、集中管理ブロック（１物理ブロック分）は、１つのＣＩＳ（Card Information Structure）ページ及び複数の管理ページ０，１，２，３，…で構成される。この集中管理ブロックは、当該フラッシュメモリ３上に１個のみ存在し、フラッシュメモリ３に関する種々な管理情報（基本的にはユーザが自由に読み書きすることができず、フラッシュメモリ３の起動時などにホストやコントローラが使用する情報）を一括して記憶する特別なブロックであり、全物理領域の中でもロバスト性（robustness）が最も高い領域に設けられる。
【００７０】
集中管理ブロック中のＣＩＳページは、例えばフラッシュメモリ３が所定のメモリカードの物理フォーマット仕様に沿ってフォーマッティングされているか否かを見分けるために使用されるページである。管理ページ０，１，２，３，…は、個々のデータブロックがそれぞれ属しているゾーンの番号（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）の組合せが記憶されている。
【００７５】
図１６は、図１２中に示されるデータブロックにおける最終データページのフォーマットの一例を示す図である。図１７は、図１６中に示されるデータページの中の管理データ領域(24Byte)のフォーマットの詳細を示す図である。また、図１８は、図１６中に示される主要な情報に関する説明を表にしてまとめたものである。以下、図１６〜図１８を参照して、個々のデータブロックにおけるデータページの詳細を説明する。
【００７６】
図１６中のデータページには、「Data」、「ECC」、「管理データ」で表された複数の領域がある。領域「Data」は、ユーザデータを記憶する領域である。領域「ECC」は、カラムアドレス0-517の情報に対応するECC、カラムアドレス528-1045の情報に対応するECC、カラムアドレス1056-1573の情報に対応するECC、及びカラムアドレス1584-2101の情報に対応するECCを記憶する領域である。領域「管理データ」は、当該ページもしくはブロックに関する管理情報（24Byte）を記憶する領域である。
【００７７】
上記「管理データ」には、「Zone」、「xLBA」、「xPBA」、「Pair」、「ID」で表された複数の領域がある。領域「Zone」は、当該ページが属しているZone No.（7bit）を記憶する領域である。領域「xLBA」は、当該ページを含むホスト管理ブロック（８ページ分）に書かれたデータに対応付けられているxLBA（10bit）を記憶する領域である。領域「xPBA」は、当該ページを含む１物理ブロック（１２８ページ分）の中の先頭のホスト管理ブロック（８ページ分）から当該ページを含むホスト管理ブロック（８ページ分）までにそれぞれ書かれたデータに対応付けられているxPBA（20Byte）を下位アドレス順に配置して記憶する領域である。当該ページが最終ページである場合、１６個のxPBAの全てが記憶されることになる。領域「Pair」は、ＥＣＣエラー等の対処のために当該ページを含む物理ブロックと対をなす別の物理ブロックの位置情報（7bit）を記憶する領域である。領域「ID」は、当該ページに書かれているデータの種類及びBadブロック属性（1Byte）を記憶する領域である。
【００７８】
次に、図１９〜図２１のフローチャートを参照して、本実施形態によるアドレス変換テーブルを用いた動作を説明する。なお、ＲＡＭ１０には、図１１に示した第１のテーブル３１（xPBA→xLBA変換テーブル）と第２のテーブル３２（xLBA→PBA変換テーブル）とを組み合わせたアドレス変換テーブルが常駐しており、ＣＰＵ８は、当該アドレス変換テーブルを用いて、ホスト２０からのアクセス要求を処理するものとする。
【００７９】
まず、図１９を参照して、アドレス変換テーブルを用いたデータ書込の動作を説明する。  
ＣＰＵ８は、ホスト２０から送られてくるライトコマンド及びライトアドレスxPBAを取得する（ステップＡ１，Ａ２）、当該ライトアドレスが現在のアドレス変換テーブルが対応できるゾーンに属するものであるか否かを、第１のテーブル３１を参照して判定する（ステップＡ３）。
【００８０】
ライトアドレスが、現在のアドレス変換テーブルが対応できるゾーンに属さない場合は、新たなアドレス変換テーブルを作成（例えば、現在のアドレス変換テーブルを更新）する（ステップＡ３）。一方、現在のアドレス変換テーブルが対応できるゾーンに属する場合は、新たなアドレス変換テーブルを作成する必要はない。なお、アドレス変換テーブルの作成方法については、後で述べる。
【００８１】
ＣＰＵ８は、ホスト２０から送られてくるライトデータを受け取ると（ステップＡ５）、ビジー信号をアサートし（ステップＡ６）、ライト要求が物理ブロック中のPage0への書込を示しているか否かを判定する（ステップＡ７）。Page0への書込である場合には、ライトデータに含まれている付随データの中からxLBAを抽出し（ステップＡ８）、このxLBAと上記取得したxPBAとの組合せに基づき、第１のテーブル３１を更新する（ステップＡ９）。なお、Page0への書込でなければ、第１のテーブル３１の更新は行わない。
【００８２】
次いで、ＣＰＵ８は、書き込むべきライトデータが小ブロックカードにおける４ページ分（即ち、大ブロックカードにおける１ページ分）に達したか否かを判定する（ステップＡ１０）。達していなければ、ステップＡ１〜Ａ９の処理を繰り返す。
【００８３】
一方、書き込むべきライトデータが小ブロックカードにおける４ページ分に達していれば、第２のテーブル３２を参照することにより上記xLBAからPBAを導出し、このPBAに該当するフラッシュメモリ３上の物理ブロックに当該データを書き込む（ステップＡ１１）。なお、ＣＰＵ８は、データの書込を行った後、ビジー信号をデアサートする。
【００８４】
また、ＣＰＵ８は、上記データの書込がPage0への書込であったか否かを判定する（ステップＡ１２）。Page0への書込であった場合には、xLBAとPBAとの組合せに基づき、第２のテーブル３２を更新し（ステップＡ１３）、処理を終了する。Page0への書込でなかった場合には、第２のテーブル３２の更新は行わない。なお、ＣＰＵ８は、第１のテーブル３１及び第２のテーブル３２を更新した場合には、その更新内容をフラッシュメモリ３上の該当する管理データ領域に適時に反映させる。
【００８５】
次に、図２０を参照して、アドレス変換テーブルを用いたデータ読出の動作を説明する。  
ＣＰＵ８は、ホスト２０から送られてくるリードコマンド及びリードアドレスxPBAを取得する（ステップＢ１，Ｂ２）、ビジー信号をアサートし（ステップＢ３）、当該リードアドレスが現在のアドレス変換テーブルが対応できるゾーンに属するものであるか否かを、第１のテーブル３１を参照して判定する（ステップＢ４）。
【００８６】
リードアドレスが、現在のアドレス変換テーブルが対応できるゾーンに属さない場合は、新たなアドレス変換テーブルを作成（例えば、現在のアドレス変換テーブルを更新）する（ステップＢ５）。一方、現在のアドレス変換テーブルが対応できるゾーンに属する場合は、新たなアドレス変換テーブルを作成する必要はない。なお、アドレス変換テーブルの作成方法については、後で述べる。
【００８７】
次いで、ＣＰＵ８は、リード要求が奇数番号のゾーンに該当するものであるか否かを判定する（ステップＢ６）。ここで、奇数番号のゾーン（例えば図１１中のZoneN+1）に該当する場合には、上記取得したxPBAの値に1024を加算する（ステップＢ７）。なお、偶数番号のゾーン（例えば図１１中のZoneN）に該当する場合には、1024の加算は行わない。
【００８８】
そして、ＣＰＵ８は、第１のテーブル３１を参照することにより上記取得したxPBAからxLBAを導出し（ステップＢ８）、更に、第２のテーブル３２を参照することにより当該xLBAからPBAを導出し、このPBAに該当するフラッシュメモリ３上の物理ブロックからデータを読み出す（ステップＢ９）。また、ＣＰＵ８は、データの読出を行った後、ビジー信号をデアサートし（ステップＢ１０）、リードデータをホスト２０へ送る（ステップＢ１１）。
【００８９】
次に、図２１を参照して、アドレス変換テーブルの作成の動作を説明する。  
ＣＰＵ８は、フラッシュメモリ３上の集中管理ブロックに含まれる個々の管理ページ１，２，３，…に対し、順番に、以下に説明する共通のルーチンを実行する（Page loopを実行する）（ステップＣ１１）。このPage loopの中では、ＣＰＵ８は、集中管理ブロックから個々の管理ページを順に読み出し（ステップＣ１２）、各管理ページに含まれる個々のカラム０，１，２，…，２０４７に対し、順番に、以下に説明する共通のルーチンを実行する（Column loopを実行する）（ステップＣ１３）。
【００９０】
上記Column loopの中では、ＣＰＵ８は、図１５に示したようにカラムの領域に記憶されているZone No.を参照し（ステップＣ１４）、そのZone No.がテーブル作成対象ゾーンに該当するか否かを判定する（ステップＣ１５）。即ち、チェック対象のカラムに対応付けられているPBAに該当するデータブロック（に書かれているデータ）がテーブル作成対象ゾーンに該当するか否かを判定する。
【００９１】
テーブル作成対象ゾーンに該当する場合には、ＣＰＵ８は、上記データブロックの中における最終ページの情報を読み出し（ステップＣ１６）、読み出した情報の中の管理データからxLBA及びxPBAを取得し、取得したxLBA及びxPBAならびに上記データブロックのPBAに基づき、第１のテーブル３１及び第２のテーブル３２を更新もしくは作成する（ステップＣ１７）。なお、テーブル作成対象ゾーンに該当しない場合には、ステップＣ１６及びＣ１７の処理は行わない。
【００９２】
最終の管理ページに含まれる最終のカラムに対する処理が完了すると、ＣＰＵ８は、Column loopを終了し（ステップＣ１８）、Page loopを終了する（ステップＣ１９）。
【００９３】
このように、本実施形態では、フラッシュメモリ３上に集中管理ブロックを設けているので、どのPBAのデータブロックから情報を読み出せばアドレス変換テーブルを作成できるかがすぐにわかり、アドレス変換テーブルの作成時間を縮減することができる。また、集中管理ブロック中の管理ページには必要最小限の情報（ゾーン番号等）を記憶させているので、管理ブロックの書換え回数を低減することができる。
【００９４】
上記実施形態の説明では、ホスト２０が想定している半導体メモリにおけるアドレスと実際に使用する半導体メモリのアドレスとの対応付けの管理や制御（アドレス変換テーブルの作成・参照・変更・格納やアドレス変換処理など）をコントローラ４が行う場合を例に挙げたが、代りに、当該制御をホスト２０側のドライバソフト２３等が行うものとして構築してもよい。
【００９５】
また、上記実施形態の説明では、実際に使用するフラッシュメモリ３の消去ブロックサイズが、ホスト２０が想定しているフラッシュメモリの消去ブロックサイズよりも大きい場合を示したが、勿論、実際に使用するフラッシュメモリ３の消去ブロックサイズが、ホスト２０が想定しているフラッシュメモリの消去ブロックサイズと同じであってもよい。
【００９６】
また、上記実施形態の説明では、不揮発性メモリとしてＮＡＮＤ型フラッシュメモリを例に挙げて説明したが、不揮発性メモリはＮＡＮＤ型フラッシュメモリに限られず、他の種類のメモリを適用してもよい。
【００９７】
本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００９８】
【図１】本発明の一実施形態に係るメモリカードに搭載されるデバイス類の概略構成を示す斜視図。
【図２】ホストと上記メモリカードとを含む構成を示すブロック図。
【図３】ホストが想定しているフラッシュメモリと、実際に使用するフラッシュメモリとのデータ配置の違いを示す図。
【図４】ホスト側システム及びメモリカード（大ブロックカード）の各コミュニケーション階層を示す図。
【図５】ホスト側から送られてくるコマンドのフォーマットを示す図。
【図６】ホスト側が想定しているブロック書込操作とメモリカード（大ブロックカード）側が実際に行う書込処理とを対比して示す図。
【図７】大ブロックカード内のフラッシュメモリのブロックフォーマット（消去単位である256kByte物理ブロック分）の一例を示す図。
【図８】図７とは異なるブロックフォーマットの例を示す図。
【図９】本実施形態のメモリカードに対してホストが書込を行う際の、当該メモリカードのＩ／ＯピンとＲ／Ｂピンとの信号の例を示すタイミングチャート。
【図１０】本実施形態のメモリカード内の不揮発性メモリに対して、当該メモリカード内のコントローラが書込を行う際の、メモリカード内の不揮発性メモリのＩ／ＯピンとＲ／Ｂピンとの信号の例を示すタイミングチャート。
【図１１】図４中に示される小ブロックカード物理・小ブロックカード論理変換層及び小ブロックカード論理・大ブロックカード物理変換層にそれぞれ備えられる第１のテーブル及び第２のテーブルの一例を示す図。
【図１２】フラッシュメモリ上のデータブロック及び集中管理ブロックの概略構成をそれぞれ対比して示す図。
【図１３】図１２中に示される集中管理ブロックのフォーマットの一例を示す図。
【図１４】図１３中に示される主要な情報に関する説明を表にしてまとめた図。
【図１５】図１３中に示される管理ページ０における各カラムのフォーマットの一例を示す図。
【図１６】図１２中に示されるデータブロックにおける最終データページのフォーマットの一例を示す図。
【図１７】図１６中に示されるデータページの中の管理データ領域(24Byte)のフォーマットの詳細を示す図。
【図１８】図１６中に示される主要な情報に関する説明を表にしてまとめた図。
【図１９】アドレス変換テーブルを用いたデータ書込の動作を示すフローチャート。
【図２０】アドレス変換テーブルを用いたデータ読出の動作を示すフローチャート。
【図２１】アドレス変換テーブルの作成の動作を示すフローチャート。
【符号の説明】
【００９９】
１…メモリカード（大ブロックカード）、２…ＰＣＢ基板、３…ＮＡＮＤ型フラッシュメモリ、４…コントローラ、５…メモリインタフェース部、６…ホストインタフェース部、７…バッファ、８…ＣＰＵ、９…ＲＯＭ、１０…ＲＡＭ、１１…小ブロックカード物理アクセス層、１２…小ブロックカード物理・小ブロックカード論理変換層、１３…小ブロックカード論理・大ブロックカード物理変換層、１４…大ブロックカード物理アクセス層、２０…ホスト機器、２１…アプリケーションソフト、２２…ファイルシステム、２３…ドライバソフト、２４…小ブロックカード物理アクセス層、３１…第１のテーブル、３２…第２のテーブル。
【図１】
2006011533.tif 000003
【図２】
2006011533.tif 000004
【図３】
2006011533.tif 000005
【図４】
2006011533.tif 000006
【図５】
2006011533.tif 000007
【図６】
2006011533.tif 000008
【図７】
2006011533.tif 000009
【図８】
2006011533.tif 000010
【図９】
2006011533.tif 000011
【図１０】
2006011533.tif 000012
【図１１】
2006011533.tif 000013
【図１２】
2006011533.tif 000014
【図１３】
2006011533.tif 000015
【図１４】
2006011533.tif 000016
【図１５】
2006011533.tif 000017
【図１６】
2006011533.tif 000018
【図１７】
2006011533.tif 000019
【図１８】
2006011533.tif 000020
【図１９】
2006011533.tif 000021
【図２０】
2006011533.tif 000022
【図２１】
2006011533.tif 000023