(57)【要約】【課題】書込に関する時間的制約を満たす動作を実現できるようにする。【解決手段】ブロックＡ内の９番目の領域（ＬＢＡ８）に対してデータ書込要求が発生した場合、まず、当該９番目の領域（ＬＢＡ８）に対して書込が要求されている新データを、ブロックＢ内の１番目（先頭）の領域に書き込む（Ｓ２１）。このとき、書込要求の対象となっている領域のアドレス（例えばブロックアドレスもしくはページアドレス）の値ｎに関係なく、書込が要求されている新データをブロックＢの先頭領域に書き込むと共に、そのアドレスの値ｎを共通するページ上の冗長部に書き込む。続いて、ブロックＡ内の１０〜１６番目の領域（ＬＢＡ９〜ＬＢＡ１５）のデータを、ブロックＢ内の先頭領域に後続する２〜８番目の領域にコピーし（Ｓ２２）、最後に、ブロックＡ内の１〜８番目の領域（ＬＢＡ０〜ＬＢＡ７）のデータを、ブロックＢ内の９〜１６番目の領域にコピーする（Ｓ２３）。【選択図】      図１２
2005339231.tif 000002
【特許請求の範囲】
【請求項１】
所定の消去ブロックサイズを有する半導体メモリにおいて既にデータが書き込まれている第１のブロック内のある領域に対してデータ書込要求が発生した場合、当該領域のアドレスの値に関係なく、データが消去済みである第２のブロックの先頭領域に前記書込要求のデータを書き込むことを特徴とする半導体装置。
【請求項２】
前記第２のブロックの先頭領域に、前記書込要求のデータと共に前記アドレスを書き込むことを特徴とする請求項1に記載の半導体装置。
【請求項３】
前記第２のブロック内のある領域に対してデータ読出要求が発生した場合、当該第２のブロック内の前記先頭領域に書き込まれている前記アドレスに基づいて、データ読出対象のデータが書き込まれている位置を求めることを特徴とする請求項２に記載の半導体装置。
【請求項４】
前記第１のブロック内の他の領域に対してデータ書込要求が無ければ、前記書込要求の対象とされた領域のデータを除く前記第１のブロック内のデータを、前記第２のブロック内の先頭領域以外の領域にコピーすることを特徴とする請求項1乃至３のいずれか１項に記載の半導体装置。
【請求項５】
所定の消去ブロックサイズを有する不揮発性半導体メモリと、
前記不揮発性半導体メモリにおいて既にデータが書き込まれている第１のブロック内のある領域に対してデータ書込要求が発生した場合、当該領域のアドレスの値に関係なく、データが消去済みである第２のブロックの先頭領域に前記書込要求のデータを書き込むコントローラと、
を具備することを特徴とするメモリカード。
【請求項６】
第１の消去ブロックサイズを有する半導体メモリに対してアクセスを実行する半導体装置において、
前記第１の消去ブロックサイズを有する半導体メモリにおける第１のアドレスと前記第１の消去ブロックサイズよりも小さい第２の消去ブロックサイズを有する半導体メモリにおける第２のアドレスとの対応付けを管理し、
前記半導体メモリにおいて既にデータが書き込まれている第１のブロック内の前記第２の消去ブロックサイズに相当する領域に対してデータ書込み要求が発生した場合、当該領域のアドレスの値に関係なく、データが消去済みである第２のブロックの先頭領域に前記書込み要求のデータを書き込むことを特徴とする半導体装置。
【請求項７】
前記第２のアドレスは論理ブロックアドレスを含み、
前記第１のブロック内の他の領域に対してデータ書込要求が無ければ、前記書込要求の対象とされた領域のデータを除く前記第１のブロック内のデータを、前記第２のブロックの先頭領域に書き込まれたデータに対して前記論理ブロックアドレスが連続するように前記第２のブロックにコピーすることを特徴とする請求項６に記載の半導体装置。
【請求項８】
所定の消去ブロックサイズを有する半導体メモリの制御方法において、
前記半導体メモリにおいて既にデータが書き込まれている第１のブロック内のある領域に対してデータ書込要求が発生した場合、当該領域のアドレスの値に関係なく、データが消去済みである第２のブロックの先頭領域に前記書込要求のデータを書き込むための制御を行うことを特徴とする半導体メモリの制御方法。
【請求項９】
第１の消去ブロックサイズを有する半導体メモリの制御方法において、
前記第１の消去ブロックサイズを有する半導体メモリにおける第１のアドレスと前記第１の消去ブロックサイズよりも小さい第２の消去ブロックサイズを有する半導体メモリにおける第２のアドレスとの対応付けを管理し、
前記半導体メモリにおいて既にデータが書き込まれている第１のブロック内の前記第２の消去ブロックサイズに相当する領域に対してデータ書込み要求が発生した場合、当該領域のアドレスの値に関係なく、データが消去済みである第２のブロックの先頭領域に前記書込み要求のデータを書き込むための制御を行うことを特徴とする半導体メモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体メモリを搭載したメモリカードに関し、特に所定の消去ブロックサイズを有する不揮発性半導体メモリを搭載したメモリカード、このカードに搭載される半導体装置、及び半導体メモリの制御方法に関する。
【背景技術】
【０００２】
メモリカードに搭載される不揮発性メモリとしては、ＮＡＮＤ型フラッシュメモリがよく採用される。ＮＡＮＤ型フラッシュメモリにおいては、ある一定の数のメモリセルをまとめてページという単位を構成し、ある一定の数のページをまとめてブロックという単位を構成している。
【０００３】
また、ＮＡＮＤ型フラッシュメモリは、その構成上、一度データを書き込んだセルに対してデータを単純に再書込することはできない。再度データを書き込むためには、消去を行う必要がある。ここで、消去はブロック単位でしか行うことができない。また、読出や書込は一般にページ単位で行う。特に、書込においては、物理ブロック内の先頭ページから順にデータを書き込まなければならないようになっている。
【０００４】
例えば、ＮＡＮＤ型フラッシュメモリ内のコントローラが、ＮＡＮＤ型フラッシュメモリを使用するホスト機器からの書込要求に応じ、既にデータが書き込まれている第１のブロック内のある領域（例えば、ページ）のデータに変更を加える場合を考える。この場合、コントローラはデータが消去済みの第２のブロックを探した後、第１のブロックの先頭ページから変更対象になっているページの直前のページまでのデータを第２のブロックに先頭ページから順に書き込み（コピーし）、続いて、変更対象になっているページのデータを第２のブロックに書き込み、最後に、変更対象になっているページの直後のページから最終ページまでのデータを第２のブロックにコピーするようにしている。
【０００５】
なお、特許文献１には、高速なブロック消去を可能とするＮＡＮＤ型ＥＥＰＲＯＭが開示されている。
【特許文献１】特開２００２−１３３８７７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところが、従来の書込方法によれば、あるブロック内の先頭ページに対して書込を行った後、別のブロック内の最終ページに対して書込を行うような場合、２つの書込の時間間隔が最も大きくなる。このような場合、メモリカードの仕様などに時間的制約が定められていればその時間的制約を満たさない事態が生じ、動作に不具合が生じてしまうおそれがある。上記特許文献１においても、同様な問題が起こり得る。
【０００７】
本発明は上記課題を解決するためになされたものであり、書込に関する時間的制約を満たす動作を実現することのできるメモリカード及び半導体装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係る半導体装置は、所定の消去ブロックサイズを有する半導体メモリにおいて既にデータが書き込まれている第１のブロック内のある領域に対してデータ書込要求が発生した場合、当該領域のアドレスの値に関係なく、データが消去済みである第２のブロックの先頭領域に前記書込要求のデータを書き込むことを特徴とする。
【０００９】
また、本発明に係るメモリカードは、所定の消去ブロックサイズを有する不揮発性半導体メモリと、前記不揮発性半導体メモリにおいて既にデータが書き込まれている第１のブロック内のある領域に対してデータ書込要求が発生した場合、当該領域のアドレスの値に関係なく、データが消去済みである第２のブロックの先頭領域に前記書込要求のデータを書き込むコントローラとを具備することを特徴とする。
【００１０】
また、本発明に係る半導体メモリの制御方法は、所定の消去ブロックサイズを有する半導体メモリの制御方法において、前記半導体メモリにおいて既にデータが書き込まれている第１のブロック内のある領域に対してデータ書込要求が発生した場合、当該領域のアドレスの値に関係なく、データが消去済みである第２のブロックの先頭領域に前記書込要求のデータを書き込むための制御を行うことを特徴とする。
【発明の効果】
【００１１】
書込に関する時間的制約を満たす動作を実現することができる。
【発明を実施するための最良の形態】
【００１２】
以下、図面を参照して、本発明の一実施形態について説明する。  
図１は、本発明の一実施形態に係るメモリカードに搭載されるデバイス類の概略構成を示す斜視図である。  
本実施形態に係るメモリカード１は、図示のように、ＰＣＢ（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中の所定の位置に小ブロックカードの「論理ブロックアドレス」（アクセス対象となる16Byteブロックに対応する論理アドレス）が配置されている。大ブロックカードは、コマンド種別情報，物理ブロックアドレス，データを取得するほか、特に上記「論理ブロックアドレス」を取得する。なお、この「論理ブロックアドレス」は、読出コマンドの場合には付加されない。
【００４１】
図６は、ホスト２０側が想定しているブロック書込操作と、メモリカード１（大ブロックカード）側が実際に行う書込処理とを、対比して示す図である。  
ホスト２０側（同図の左側）では、小ブロックカードの論理アドレスに基づく16kByteブロック単位のシーケンシャルな書込操作の発生時に、小ブロックカードの物理ブロックアドレスによる16kByteブロック単位のランダムな書込操作を行う。
【００４２】
一方、大ブロックカード側（同図の右側）では、ホスト２０側から書込コマンドを受けた場合、小ブロックカードの論理ブロックアドレスに基づく16kByteブロック単位のデータをフラッシュメモリ３内にシーケンシャルに書き込む。
【００４３】
前述のように、ホスト２０は、小ブロックの物理アドレスによる16Byte単位のランダムな書込操作を行う。このようなランダムな書込操作では、一般に、大ブロック（256kByte）の一部のみを書き換えるための処理が多発する。ＮＡＮＤ型フラッシュメモリではブロック単位でしか消去を行えないため、ブロックの一部のみを書き換える場合は、書き換える新データを消去済みの新ブロックに書き込み、新データに書き換えられる旧データを含む旧ブロックから、書き換えられない残りのデータを新ブロックにコピーする必要がある。このように、ブロックの一部のみを書き換える処理は、書き換えられないデータのコピー動作（以下、「巻き添えデータコピー」と称す）を伴うため、ブロックの一部のみを書き換える処理が多発すると、オーバーヘッドが非常に増大することになる。そこで、本実施形態では、ホスト２０側から得られる論理アドレスの順序に従って、大ブロックカード側で物理アドレスを再度割り当てることにより、ブロックの一部のみの書込の発生を低減し、オーバーヘッドの増大を抑制している。
【００４４】
図７は、大ブロックカード内のＮＡＮＤ型フラッシュメモリ３のブロックフォーマット（消去単位である256kByte物理ブロック分）を示す図である。  
大ブロックカードでは、消去単位である256kByte物理ブロックの中に、ホスト２０側が管理する単位である16kByteに相当するデータを書き込むためのブロック（以下、ホスト管理ブロックと称す）が１６個分含まれている。データ書込の際には、小ブロックカードの論理ブロックアドレスの順に個々のデータが配置される。
【００４５】
各ホスト管理ブロックは、８個のページで構成される。各ページは、512Byteデータ領域を４個分含むとともに、各データ領域に対応する10ByteＥＣＣ領域を含んでいる。また、ページ中の最後の512Byteデータ領域（４番目の512Byteデータ領域）の後には、24Byte管理データ領域も設けられる。このため、ページ中の最後の10ByteＥＣＣ領域は、４番目の512Byteデータ領域と24Byte管理データ領域の両方に対応する構成となっている。
【００４６】
消去単位である256kByte物理ブロックに含まれる１２８個の24Byte管理データ領域のうち、例えば最後の24Byte管理データ領域には、ホスト２０側から送られてくるコマンドから取得された物理ブロックアドレスに相当するアドレス情報（以下、「ホスト管理物理アドレス」と称す）及び論理ブロックアドレスに相当するアドレス情報（以下、「ホスト管理論理ブロックアドレス」）がまとめて格納されるようになっている。
【００４７】
各256kByteブロック内に格納された「ホスト管理物理アドレス」及び「ホスト管理論理ブロックアドレス」は、図４で説明した小ブロックカード物理・小ブロックカード論理変換層１２が有する第１のテーブルと、小ブロックカード論理・大ブロックカード物理変換層１３が有する第２のテーブルとを作成する際に使用される。
【００４８】
図８は、本実施形態のメモリカード１に対してホスト２０が書込を行う際の、当該メモリカード１のＩ／ＯピンとＲ／Ｂピンとの信号の例を示すタイミングチャートである。
【００４９】
ホスト２０は、メモリカードは16kByteの消去ブロックサイズを有する不揮発性メモリであると仮定してメモリカードを制御している。例えば、メモリカードに対する書込の際には、ホスト２０は、シリアルデータインプットコマンド８０Ｈ（Ｈは１６進を示す）をＩ／Ｏピン１〜８へ入力する。次に、ホスト２０は、カラムアドレスＣ／ＡおよびページアドレスＰ／Ａを、Ｉ／Ｏピン１〜８へ入力する。なお、ここでカラムアドレスＣ／ＡおよびページアドレスＰ／Ａは、ホスト２０がメモリカード１に対して想定している仮想物理アドレス空間におけるカラムアドレスおよびページアドレスである。
【００５０】
更に、ホスト２０は、書込データを、Ｉ／Ｏピン１〜８の個々に対し、５２８回入力する。具体的には、ホスト２０はライトイネーブルピンへの入力信号を５２８回クロッキングしながら、それぞれのＩ／Ｏピンに対し５２８ビット（すべてのＩ／Ｏピン合計で５２８バイト）のデータを順次シフトインする。データのシフトインが完了すると、ホスト２０は、プログラムコマンド１０ＨをＩ／Ｏピン１〜８へ入力する。これに応答してメモリカードは、そのＲ／Ｂピンにロウレベルの信号を出力し、メモリカードがビジー状態であることを示す。その後、所定期間後にＲ／Ｂピンにハイレベルの信号を出力することでメモリカードがレディ状態になったことを示す。
【００５１】
しかしながら、図８におけるＲ／Ｂピンの状態は、あくまでもホスト２０に対してメモリカード１がどのような状態かを示すものである。つまり、図８において、プログラムコマンド１０Ｈの入力に応答して、Ｒ／Ｂピンがビジー状態（つまりロウレベルを出力）を示したとしても、内部でＮＡＮＤ型フラッシュメモリ３に対する書込動作（つまり、ページバッファからメモリセルアレイへのデータ転送）が実際に行われているとは限らない。また、Ｒ／Ｂピンがレディ状態に復帰したとしても、内部でＮＡＮＤ型フラッシュメモリ３に対する書込動作が実際に完了しているとは限らない。
【００５２】
図９は、本実施形態のメモリカード１内のＮＡＮＤ型フラッシュメモリ３に対して、当該メモリカード１内のコントローラ４が書込を行う際の、ＮＡＮＤ型フラッシュメモリ３のＩ／ＯピンとＲ／Ｂピンとの信号の例を示すタイミングチャートである。
【００５３】
コントローラ４は、ＮＡＮＤ型フラッシュメモリ３は256kByteの消去ブロックサイズを有する不揮発性メモリであると認識している。例えば、ＮＡＮＤ型フラッシュメモリ３に対する書込の際には、コントローラ４は、シリアルデータインプットコマンド８０Ｈ（Ｈは１６進を示す）をＩ／Ｏピン１〜８へ入力する。次に、コントローラ４は、カラムアドレスＣ／ＡおよびページアドレスＰ／Ａを、Ｉ／Ｏピン１〜８へ入力する。なお、ここでカラムアドレスＣ／ＡおよびページアドレスＰ／Ａは、コントローラ４がＮＡＮＤ型フラッシュメモリ３に対して想定している実物理アドレス空間におけるカラムアドレスおよびページアドレスである。したがって、図８におけるカラムアドレスＣ／ＡおよびページアドレスＰ／Ａとは必ずしも一致していない。
【００５４】
更に、コントローラ４は、書込データを、Ｉ／Ｏピン１〜８の個々に対し、２１１２回入力する。具体的には、コントローラ４は、ライトイネーブルピンへの入力信号を２１１２回クロッキングしながら、それぞれのＩ／Ｏピンに対し２１１２ビット（すべてのＩ／Ｏピン合計で２１１２バイト）のデータを順次シフトインする。データのシフトインが完了すると、コントローラ４は、プログラムコマンド１０ＨをＩ／Ｏピン１〜８へ入力する。これに応答してメモリカードは、そのＲ／Ｂピンにロウレベルの信号を出力し、メモリカードがビジー状態であることを示す。その後、所定期間後にＲ／Ｂピンにハイレベルの信号を出力することでメモリカードがレディ状態になったことを示す。図９におけるＲ／Ｂピンの状態は、コントローラ４に対してＮＡＮＤ型フラッシュメモリ３が実際にどのような状態かを示すものである。
【００５５】
なお、上記図８および図９においては、カラムアドレスＣ／ＡおよびページアドレスＰ／Ａの入力をそれぞれ１つのサイクルで示しているが、メモリカード１の容量またはＮＡＮＤ型フラッシュメモリ３の容量に応じて、適宜２サイクル以上になる場合もある。
【００５６】
上記図８および図９からわかるように、メモリカードがビジー状態でいられる時間には制約があるため、その間にデータ書込を行い、所定期間後には当該メモリカードがレディ状態になったことをホスト側に示さなければならない。また、ＮＡＮＤ型フラッシュメモリでは、ある物理ブロック内の各ページに対してデータを書き込む際にも、書込順序に関して制約がある。つまり、ＮＡＮＤ型フラッシュメモリは、物理ブロック内の先頭ページ（図１０に例示した先頭ワード線ＷＬ０上のセルに相当）から順番にデータを書き込まなければない構造になっている。本実施形態では、後述する手法により、上述した個々の制約を満たしつつ効率的なデータ書込を実現する。
【００５７】
次に、図１１および図１２を参照して、本実施形態による基本的なデータ書込方法を、従来技術によるデータ書込方法と対比させて説明する。  
ここでは、ＮＡＮＤ型フラッシュメモリ３上において、データが既に書き込まれているブロックＡ内のＬＢＡ８で表された９番目の領域（即ち、図７における「ホスト管理ブロック８」（ページ８個分で構成される領域））に対してデータ書込要求が発生した場合の、データ消去済みのブロックＢへの書込動作を例に挙げる。なお、ブロックＡ内では、当該９番目の領域以外の領域に対するデータ書込要求は発生しなかったものとする。この場合の書込動作は、本実施形態ではコントローラ４（図１，図２を参照）によって制御され、具体的にはＲＯＭ９からＲＡＭ１０上にロードされた制御プログラムを実行するＣＰＵ８やメモリインタフェース部５を通じて制御される。
【００５８】
図１１に示される従来技術によるデータ書込方法では、ブロックＡ内の９番目の領域（ＬＢＡ８）に対してデータ書込要求が発生した場合、まず、ブロックＡ内の１〜８番目の領域（ＬＢＡ０〜ＬＢＡ７）のデータを、ブロックＢ内の１〜８番目の領域にコピーする（ステップＳ１１）。
【００５９】
続いて、ブロックＡ内の９番目の領域（ＬＢＡ８）に対して書込が要求されている新データを、ブロックＢ内の９番目の領域に書き込む（ステップＳ１２）。
【００６０】
最後に、ブロックＡ内の１０〜１６番目の領域（ＬＢＡ９〜ＬＢＡ１５）のデータを、ブロックＢ内の１０〜１６番目の領域にコピーする（ステップＳ１３）。
【００６１】
一方、図１２に示される本実施形態によるデータ書込方法では、ブロックＡ内の９番目の領域（ＬＢＡ８）に対してデータ書込要求が発生した場合、まず、当該９番目の領域（ＬＢＡ８）に対して書込が要求されている新データを、ブロックＢ内の１番目（先頭）の領域に書き込む（ステップＳ２１）。このとき、書込要求の対象となっている領域のアドレス（例えばブロックアドレスもしくはページアドレス）の値ｎに関係なく、書込が要求されている新データをブロックＢの先頭領域に書き込むと共に、そのアドレスの値ｎを共通するページ上の冗長部に書き込む。
【００６２】
続いて、ブロックＡ内の１０〜１６番目の領域（ＬＢＡ９〜ＬＢＡ１５）のデータを、ブロックＢ内の先頭領域に後続する２〜８番目の領域にコピーする（ステップＳ２２）。このとき、アドレスの値n+1〜ｍも、共通するページ上の冗長部にそれぞれ書き込む。
【００６３】
最後に、ブロックＡ内の１〜８番目の領域（ＬＢＡ０〜ＬＢＡ７）のデータを、ブロックＢ内の９〜１６番目の領域にコピーする（ステップＳ２３）。このとき、アドレスの値0〜n-1も、共通するページ上の冗長部にそれぞれ書き込む。  
なお、ブロックＢへのデータ書込が終了した後は、ブロックＡ上のデータを消去する。この消去は、メモリカードがレディ状態になったことを示した後に行うようにしてもよい。
【００６４】
上記ステップＳ２１〜Ｓ２３に示した処理を、データ書込要求が発生する毎に行うことにより、ある書込から次の書込までの時間間隔の増大を防止でき、従来技術のところで説明した時間的制約の問題を解決することができる。また、各物理ブロック内の先頭領域から順番にデータを書き込まなければならないという制約を満たすものとなっている。
【００６５】
一方、上記ステップＳ２１〜Ｓ２３に示した処理を行った後、ブロックＢ内のある領域に対してデータ読出要求が発生した場合には、コントローラ４は、ブロックＢ内の先頭領域に書き込まれているアドレスｎに基づいて、データ読出対象のデータが書き込まれている位置を求めることができる。この場合、アドレスｎと読出要求のアドレスとから、読出要求されているデータがブロックＢ内のどのアドレスに該当するかを算出すればよい。
【００６６】
次に、図１３および図１４を参照して、本実施形態によるデータ書込方法と従来技術によるデータ書込方法との違いが顕著に現れる一例について説明する。  
ここでは、ＮＡＮＤ型フラッシュメモリ３上において、データが既に書き込まれているブロックＣ内のＬＢＡ０で表された先頭領域に対してデータ書込要求が発生し、且つ、ブロックＤ内のＬＢＡ３１で表された最終領域に対してデータ書込要求が発生した場合の、データ消去済みのブロックＥおよびブロックＦへの書込動作を例に挙げる。
【００６７】
図１３に示される従来技術によるデータ書込方法では、まず、ブロックＣ内の１番目の領域（ＬＢＡ０）に対して書込が要求されている新データを、ブロックＥ内の１番目の領域に書き込む（ステップＳ３１）。
【００６８】
続いて、ブロックＣ内の２〜１６番目の領域（ＬＢＡ１〜ＬＢＡ１５）のデータを、ブロックＥ内の２〜１６番目の領域にコピーする（ステップＳ３２）。
【００６９】
続いて、ブロックＤ内の１〜１５番目の領域（ＬＢＡ１６〜ＬＢＡ３０）のデータを、ブロックＦ内の１〜１５番目の領域にコピーする（ステップＳ３３）。
【００７０】
最後に、ブロックＤ内の３２番目の領域（ＬＢＡ３１）に対して書込が要求されている新データを、ブロックＦ内の３２番目の領域に書き込む（ステップＳ３４）。
【００７１】
この例では、ステップＳ３１の書込からステップＳ３４の書込までの時間間隔が非常に大きいため、従来技術のところで説明したような時間的制約を満たすことができないおそれがある。
【００７２】
一方、図１４に示される本実施形態によるデータ書込方法では、まず、ブロックＣ内の１番目の領域（ＬＢＡ０）に対して書込が要求されている新データを、ブロックＥ内の１番目（先頭）の領域に書き込む（ステップＳ４１）。このとき、書込要求の対象となっている領域のアドレスの値に関係なく、書込が要求されている新データをブロックＥの先頭領域に書き込むと共に、そのアドレスの値（ここでは図示を省略）を共通するページ上の冗長部に書き込む。
【００７３】
続いて、ブロックＣ内の２〜１６番目の領域（ＬＢＡ１〜ＬＢＡ１５）のデータを、ブロックＥ内の２〜１６番目の領域にコピーする（ステップＳ４２）。このとき、該当するアドレスの値（ここでは図示を省略）も、共通するページ上の冗長部にそれぞれ書き込む。
【００７４】
次に、ブロックＤ内の１６番目の領域（ＬＢＡ３１）に対して書込が要求されている新データを、ブロックＦ内の１番目（先頭）の領域に書き込む（ステップＳ４３）。このとき、書込要求の対象となっている領域のアドレスの値に関係なく、書込が要求されている新データをブロックＦの先頭領域に書き込むと共に、そのアドレスの値（ここでは図示を省略）を共通するページ上の冗長部に書き込む。
【００７５】
最後に、ブロックＤ内の１〜１５番目の領域（ＬＢＡ１６〜ＬＢＡ３０）のデータを、ブロックＦ内の２〜１６番目の領域にコピーする（ステップＳ４４）。このとき、該当するアドレスの値（ここでは図示を省略）も、共通するページ上の冗長部にそれぞれ書き込む。
【００７６】
なお、ブロックＥへのデータ書込が終了した後は、ブロックＣ上のデータを消去する。同様に、ブロックＦへのデータ書込が終了した後は、ブロックＤ上のデータを消去する。これらの消去は、まとめて一度に行うようにしてもよい。また、これらの消去は、メモリカードがレディ状態になったことを示した後に行うようにしてもよい。
【００７７】
この図１４の例からわかるように、図１３の場合と異なり、ステップＳ４１の書込からステップＳ４３の書込までの時間間隔を短縮することができるため、書込に関する時間的制約を満たすことができる。
【００７８】
なお、上の説明では、ステップＳ４１〜ステップＳ４２〜ステップＳ４３〜ステップ４４の順番で処理を進める例を示したが、代りに、ステップＳ４１〜ステップＳ４３〜ステップＳ４２〜ステップ４４の順番で処理を進めるようにしてもよい。即ち、ブロックＥの先頭領域への新データの書込を行った後、ブロックＦの先頭領域への新データの書込を行い、その後にブロックＥの残りの領域へのデータコピーを行い、最後にブロックＦの残りの領域へのデータコピーを行うようにしてもよい。この場合も、各物理ブロック内の先頭領域から順番にデータを書き込まなければならないという制約を満たしている。
【００７９】
また、上記図１２および図１４のデータ書込方法では、大ブロックカードを対象にした例を示したが、小ブロックカードを対象に実施することも可能である。この場合、図中の各ＬＢＡを１つのページと見なして扱えばよい。
【００８０】
このように本実施形態によれば、ある書込から次の書込までの時間間隔を短縮することができ、メモリカードの仕様などに定められている時間的制約などを満たす書込動作を実現することができる。
【００８１】
上記実施形態の説明では、実際に使用する半導体メモリに対するデータ読出・書込の制御（図１２および図１４に示した処理の制御を含む）をコントローラ４が行う場合を例に挙げたが、代りに、当該制御をホスト２０側のドライバソフト２３等が行うものとして構築してもよい。この場合、ホスト２０が想定している半導体メモリにおけるアドレスと実施に使用する半導体メモリのアドレスとの対応付けの管理などについても、ホスト２０側で行うものとして構築してもよい。
【００８２】
また、上記実施形態の説明では、不揮発性メモリとしてＮＡＮＤ型フラッシュメモリを例に挙げて説明したが、不揮発性メモリはＮＡＮＤ型フラッシュメモリに限られず、他の種類のメモリを適用してもよい。
【００８３】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００８４】
【図１】本発明の一実施形態に係るメモリカードに搭載されるデバイス類の概略構成を示す斜視図。
【図２】ホストと上記メモリカードとを含む構成を示すブロック図。
【図３】ホストが想定しているフラッシュメモリと、実際に使用するフラッシュメモリとのデータ配置の違いを示す図。
【図４】ホスト側システム及びメモリカード（大ブロックカード）の各コミュニケーション階層を示す図。
【図５】ホスト側から送られてくるコマンドのフォーマットを示す図。
【図６】ホスト側が想定しているブロック書込操作とメモリカード（大ブロックカード）側が実際に行う書込処理とを対比して示す図。
【図７】大ブロックカード内のフラッシュメモリのブロックフォーマット（消去単位である256kByte物理ブロック分）を示す図。
【図８】本実施形態のメモリカードに対してホストが書込を行う際の、当該メモリカードのＩ／ＯピンとＲ／Ｂピンとの信号の例を示すタイミングチャート。
【図９】本実施形態のメモリカード内の不揮発性メモリに対して、当該メモリカード内のコントローラが書込を行う際の、メモリカード内の不揮発性メモリのＩ／ＯピンとＲ／Ｂピンとの信号の例を示すタイミングチャート。
【図１０】ＮＡＮＤ型フラッシュメモリにおけるデータ書込の順番を説明するための図。
【図１１】従来技術による基本的なデータ書込方法の一例を説明するための図。
【図１２】本実施形態による基本的なデータ書込方法の一例を説明するための図。
【図１３】従来技術によるデータ書込方法の具体例を説明するための図。
【図１４】本実施形態によるデータ書込方法の具体例を説明するための図。
【符号の説明】
【００８５】
１…メモリカード（大ブロックカード）、２…ＰＣＢ基板、３…ＮＡＮＤ型フラッシュメモリ、４…コントローラ、５…メモリインタフェース部、６…ホストインタフェース部、７…バッファ、８…ＣＰＵ、９…ＲＯＭ、１０…ＲＡＭ、１１…小ブロックカード物理アクセス層、１２…小ブロックカード物理・小ブロックカード論理変換層、１３…小ブロックカード論理・大ブロックカード物理変換層、１４…大ブロックカード物理アクセス層、２０…ホスト機器、２１…アプリケーションソフト、２２…ファイルシステム、２３…ドライバソフト、２４…小ブロックカード物理アクセス層。
【図１】
2005339231.tif 000003
【図２】
2005339231.tif 000004
【図３】
2005339231.tif 000005
【図４】
2005339231.tif 000006
【図５】
2005339231.tif 000007
【図６】
2005339231.tif 000008
【図７】
2005339231.tif 000009
【図８】
2005339231.tif 000010
【図９】
2005339231.tif 000011
【図１０】
2005339231.tif 000012
【図１１】
2005339231.tif 000013
【図１２】
2005339231.tif 000014
【図１３】
2005339231.tif 000015
【図１４】
2005339231.tif 000016