(57)【要約】【課題】異なる消去ブロックサイズを想定したメモリへのアクセスに対して柔軟に対応できるようにする。【解決手段】メモリカード１は、コントローラ４とＮＡＮＤ型フラッシュメモリ３とを有する。コントローラ４は、第１の消去ブロックサイズを有する半導体メモリにおける第１のアドレスと前記第１の消去ブロックサイズよりも大きい第２の消去ブロックサイズを有する半導体メモリにおける第２のアドレスとの対応付けを管理するためのプログラムを格納するＲＯＭ９と、このＲＯＭ９に格納されているプログラムを実行するＣＰＵ８とを含んでいる。ＮＡＮＤ型フラッシュメモリ３は、前記第２の消去ブロックサイズを有するメモリである。コントローラ４は、前記第２のアドレスを用いてＮＡＮＤ型フラッシュメモリ３に対するアクセスを実行する。【選択図】      図１
2005222228.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物理ブロックに格納されているかが分かるように管理する。
【００３８】
また、ホスト２０は、消去単位が16kByteブロックであることを前提として、256kByte物理ブロックを消去単位としている大ブロックカードにアクセスしてくる。これに対し、大ブロックカードは、ホスト２０が使用している制御アルゴリズムや物理フォーマットに合わせて柔軟に応答する。例えば、「新たな16kByteの論理ブロックアドレスによる書込操作が発生した場合は、それ以前に同一の論理ブロックアドレスにより書込操作が発生したときの小ブロックカードの16kByte物理ブロックアドレスに対応するブロック（以下、「旧アサイン論理ブロック」と称す）のデータ消去が行われる」というホスト２０側の制御アルゴリズムに鑑み、消去対象の旧アサイン論理ブロックが消去状態であることをエミュレートする。しかし、実際には、大ブロックカード側では消去対象の16kByteブロック分の消去を行わない。これにより、フラッシュメモリ３への物理的な操作に関するオーバーヘッドを大幅に縮減することができる。
【００３９】
図５は、ホスト２０側から送られてくるコマンドのフォーマットを示す図である。  
ホスト２０側から送られてくるコマンドのパケットは、図５（ａ）に示されるように、コマンド種別情報（ここでは「書込」），アドレス（物理ブロックアドレス），データ（コンテンツなどの実データ及び付随データ（512Byte＋16Byte）といった各種情報を含んでいる。  
このようなフォーマットのパケットにおいては、図５（ｂ）に示されるように、付随データ16Byte中の所定の位置に小ブロックカードの「論理ブロックアドレス」（アクセス対象となる16Byteブロックに対応する論理アドレス）が配置されている。大ブロックカードは、コマンド種別情報，物理ブロックアドレス，データを取得するほか、特に上記「論理ブロックアドレス」を取得する。
【００４０】
図６は、ホスト２０側が想定しているブロック書込操作と、メモリカード１（大ブロックカード）側が実際に行う書込処理とを、対比して示す図である。  
ホスト２０側（同図の左側）では、小ブロックカードの論理アドレスに基づく16kByteブロック単位のシーケンシャルな書込操作の発生時に、小ブロックカードの物理ブロックアドレスによる16kByteブロック単位のランダムな書込操作を行う。また、これに伴い、旧アサイン論理ブロックが16kByteブロック単位で消去されることを前提としている。
【００４１】
一方、大ブロックカード側（同図の右側）では、ホスト２０側から書込コマンドを受けた場合、小ブロックカードの論理ブロックアドレスに基づく16kByteブロック単位のデータをフラッシュメモリ３内にシーケンシャルに書き込む。この場合、上記前提に合わせ、ホスト２０側に対しては大ブロックカード側小ブロックカード内の旧アサイン論理ブロックは消去の状態にあるものとして対応する。例えば旧アサイン論理ブロックに対する読出アクセスがあった場合には、そのブロックは消去状態にある旨を応答する。また、小ブロックカードの論理ブロックアドレスにアサインされていない小ブロックカードの物理ブロックについても、消去の状態にあるものとして対応する。
【００４２】
前述のように、ホスト２０は、小ブロックの物理アドレスによる16Byte単位のランダムな書込操作を行う。このようなランダムな書込操作では、一般に、大ブロック（256kByte）の一部のみを書き換えるための処理が多発する。ＮＡＮＤ型フラッシュメモリではブロック単位でしか消去を行えないため、ブロックの一部のみを書き換える場合は、書き換える新データを消去済みの新ブロックに書き込み、新データに書き換えられる旧データを含む旧ブロックから、書き換えられない残りのデータを新ブロックにコピーする必要がある。このように、ブロックの一部のみを書き換える処理は、書き換えられないデータのコピー動作（以下、「巻き添えデータコピー」と称す）を伴うため、ブロックの一部のみを書き換える処理が多発すると、オーバーヘッドが非常に増大することになる。
【００４３】
そこで、本実施形態では、ホスト２０側から得られる論理アドレスの順序に従って、大ブロックカード側で物理アドレスを再度割り当てることにより、ブロックの一部のみの書込の発生を低減し、オーバーヘッドの増大を抑制しているのである。
【００４４】
図７は、大ブロックカード内のＮＡＮＤ型フラッシュメモリ３のブロックフォーマット（消去単位である256kByte物理ブロック分）を示す図である。  
大ブロックカードでは、消去単位である256kByte物理ブロックの中に、ホスト２０側が管理する単位である16kByteに相当するデータを書き込むためのブロック（以下、ホスト管理ブロックと称す）が１６個分含まれている。データ書込の際には、小ブロックカードの論理ブロックアドレスの順に個々のデータが配置される。
【００４５】
各ホスト管理ブロックは、８個のページで構成される。各ページは、512Byteデータ領域を４個分含むとともに、各データ領域に対応する10ByteＥＣＣ領域を含んでいる。また、ページ中の最後の512Byteデータ領域（４番目の512Byteデータ領域）の後には、24Byte管理データ領域も設けられる。このため、ページ中の最後の10ByteＥＣＣ領域は、４番目の512Byteデータ領域と24Byte管理データ領域の両方に対応する構成となっている。
【００４６】
消去単位である256kByte物理ブロックに含まれる１２８個の24Byte管理データ領域のうち、最後の24Byte管理データ領域３０には、ホスト２０側から送られてくるコマンドから取得された物理ブロックアドレスに相当するアドレス情報（以下、「ホスト管理物理アドレス」と称す）及び論理ブロックアドレスに相当するアドレス情報（以下、「ホスト管理論理ブロックアドレス」）がまとめて格納されるようになっている。
【００４７】
具体的には、16kByteデータが１つの16kByteホスト管理ブロックに書き込まれる毎に、対応するホスト管理物理アドレス（例えば10bit分）が管理データ領域３０内の所定の領域に格納される。これにより、１６個の16kByteホスト管理ブロックに対応する１６個のホスト管理物理アドレスが管理データ領域３０内の所定の領域に格納される。一方、ホスト管理論理アドレスに関しては、１６個の16kByteホスト管理ブロックに対応する連続した１６個の論理ブロックアドレスのうち、その代表として、先頭の論理ブロックアドレス（例えば10bit分）がホスト管理論理アドレスとして管理データ領域３０内の所定の領域に格納される。
【００４８】
上記構成において、各256Byteブロック内の最終領域（512Byte＋24Byte＋10Byteの領域）に配置されている情報を読み出して、その中の24Byte管理データを参照することにより、当該256Byteブロックに対応する１６ブロック分の「ホスト管理物理アドレス」及び「ホスト管理論理ブロックアドレス」をまとめて知得することができる。
【００４９】
各256Byteブロック内に格納された「ホスト管理物理アドレス」及び「ホスト管理論理ブロックアドレス」は、図４で説明した小ブロックカード物理・小ブロックカード論理変換層１２が有する第１のテーブルと、小ブロックカード論理・大ブロックカード物理変換層１３が有する第２のテーブルとを作成する際に使用される。
【００５０】
図８は、コントローラ４内のＲＡＭ１０上に作成される各種のテーブルを示す図である。  
「小ブロックカード論理・物理ブロックアドレス」テーブル３１及び「小ブロックカード論理ブロックアドレス・大ブロックカード物理ブロックアドレス」テーブル３２は、それぞれ前述した第１のテーブル及び第２のテーブルに相当するものであり、データ管理領域３０（図７）に格納されている「ホスト管理物理アドレス」及び「ホスト管理論理ブロックアドレス」を利用してＲＡＭ１０上に作成される。
【００５１】
「小ブロックカード論理・物理ブロックアドレス」テーブル３１は、データ読出などの際に小ブロックカードの物理ブロックアドレス（16kByteブロック分に対応）から小ブロックカードの論理ブロックアドレス（16kByteブロック分に対応）への変換処理を行うために使用される。
【００５２】
「小ブロックカード論理ブロックアドレス・大ブロックカード物理ブロックアドレス」テーブル３２は、データ読出などの際に小ブロックカードの論理ブロックアドレス（シーケンシャルな16kByteブロック×１６個分に対応）から大ブロックカードの物理ブロックアドレス（256kByte物理ブロック分に対応）への変換処理を行うために使用される。
【００５３】
次に、図９のフローチャートを参照して、各種テーブルの作成処理の流れを説明する。  
例えばメモリカード１（大ブロックカード）がホスト２０側から電源供給を受けると（ステップＡ１）、ＣＰＵ８は動作を開始し、ＲＯＭ９の中に格納されている制御プログラム（小ブロックカードにおける物理・論理ブロックアドレスと当該フラッシュメモリ３における物理ブロックアドレスとの対応付けを管理するためのプログラム）などをＲＡＭ１０上にロードして処理する（ステップＡ２）。
【００５４】
次に、ＣＰＵ８は、フラッシュメモリ３の管理データ領域３０内に格納されている「ホスト管理物理アドレス」及び「ホスト管理論理ブロックアドレス」を利用することによって、ＲＡＭ１０上に「小ブロックカード論理・物理ブロックアドレス」テーブル３１と「小ブロックカード論理ブロックアドレス・大ブロックカード物理ブロックアドレス」テーブル３２とを作成する（ステップＡ３）。そして、ＣＰＵ８は、ホスト２０からのコマンド待ち状態となり（ステップＡ４）、制御プログラムに従ってライトアクセス，リードアクセス，消去アクセスに対する各処理を行えるようになる。
【００５５】
次に、図１０のフローチャートを参照して、ライトアクセスに対する処理の流れを説明する。  
ＣＰＵ８は、ホスト２０から、例えば16kByteブロックに対する書込コマンドを受けると（ステップＢ１）、小ブロックカードの物理ブロックアドレスやデータのほか、これに付随する付随データに含まれている論理ブロックアドレスを取得する（ステップＢ２）。
【００５６】
ＣＰＵ８は、取得した小ブロックカードの論理ブロックアドレスの順に、16kByteデータを256kByte物理ブロック内に書き込むと共に、当該小ブロックカードの論理ブロックアドレス及び物理ブロックアドレスに相当する「ホスト管理論理ブロックアドレス」及び「ホスト管理物理アドレス」を管理データ領域３０内の所定の領域に格納する（ステップＢ３）。また、ＣＰＵ８は、取得した上記小ブロックカードの論理ブロックアドレス及び物理ブロックアドレスをＲＡＭ１０上のテーブル３１，３２に反映させる（ステップＢ４）。  
最後に、ＣＰＵ８は、ホストへ書込処理の完了を通知する（ステップＢ５）。
【００５７】
次に、図１１のフローチャートおよび図１２乃至図１５の概念図を参照して、前述の図１０に示されるステップＢ３におけるデータ書込みの処理の詳細について説明する。  
ＣＰＵ８は、データ書込に際し、いま対象となっている論理ブロックアドレス（16kByteブロック分に対応）が、先行する論理ブロックアドレス（16kByteブロック分に対応）に連続するものであるか否かを判定する（図１１のステップＣ１）。即ち、図１２に示されるように、16kByte物理ブロックＸ１へのデータ書込まで済んでいる状態において、次に書き込むべき物理ブロックが上記物理ブロックＸ１に続く16kByte物理ブロックＸ２に該当するか否かを判定する。  
連続するものであれば、ＣＰＵ８は、大ブロックカードの256kByte物理ブロック内に、先に書き込んだ16kByteデータに引き続き、書込対象の16kByteデータを書き込む（図１１のステップＣ２）。即ち、図１３に示されるように、前述の16kByte物理ブロックＸ２へのデータ書込を行う。
【００５８】
一方、連続するものでなければ、大ブロックカードの256kByte物理ブロック内の後半データに関して巻き添えデータコピー操作を実施する（図１１のステップＣ３）。即ち、図１４に示されるように、対象となっている256kByte物理ブロックに対応する旧256kByteブロックには、上記物理ブロックＸ１までの書込（更新）によって不要となった旧データを有する旧アサイン16kByte論理ブロック群の物理領域Ｙ１と、更新がないために有効に残っている有効データを有する物理領域Ｙ２とが存在する。そこで、この物理ブロックＹ２のデータを、対象となっている256kByteブロック内の上記物理ブロックＸ１の後に続く物理領域Ｙ３にコピーする。また、このコピー後、ＣＰＵ８は、不要となった旧256kByteブロック内のデータを消去する。
【００５９】
次いで、大ブロックカードの新たな256kByte物理ブロック（データ消去済み）への書込を実施し、待機する（ステップＣ４）。なお、書込対象となる領域が256kByte区切りの先頭であるか否かによって、処理が異なる。即ち、書込対象となる領域が256kByte区切りの先頭の場合、図１５（ａ）に示されるように、当該先頭の位置にある物理ブロックＺ１に16kByteデータを書き込む。一方、書込対象となる領域が256kByte区切りの先頭でない場合、前半データに関して巻き添えデータコピー操作を実施する。即ち、図１５（ｂ）に示されるように、先頭から上記書込対象の直前までの物理領域Ｚ２に、旧アサイン16kByte論理ブロック群のデータをコピーし、その後、書込対象となる物理領域Ｘ３に16kByteデータを書き込む。
【００６０】
次に、図１６のフローチャートを参照して、リードアクセスに対する処理の流れを説明する。  
ＣＰＵ８は、ホスト２０から、例えば16kByteブロックに対する読出コマンドを受けると（ステップＤ１）、そのコマンドに付加されている小ブロックカードの物理ブロックアドレスを取得する（ステップＤ２）。
【００６１】
次に、ＣＰＵ８は、「小ブロックカード論理・物理ブロックアドレス」テーブル３１を参照することにより、取得した小ブロックカードの物理ブロックアドレスから小ブロックカードの論理ブロックアドレスを得る（ステップＤ３）。次いで、ＣＰＵ８は、「小ブロックカード論理ブロックアドレス・大ブロックカード物理ブロックアドレス」テーブル３２を参照することにより、得られた小ブロックカードの論理ブロックアドレスから大ブロックカードの物理ブロックアドレスを得る（ステップＤ４）。
【００６２】
最後に、ＣＰＵ８は、得られた大ブロックカードの物理ブロックアドレスに該当する物理領域からデータを読み出し、それをホスト２０へ返送する（ステップＤ５）。
【００６３】
次に、図１７のフローチャートを参照して、消去アクセスに対する処理の流れを説明する。  
ＣＰＵ８は、ホスト２０から、例えば16kByteブロックに対する消去コマンドを受けると（ステップＥ１）、必要に応じ、該当するブロックが消去状態にあることを示す情報をＲＡＭ１０上の所定の領域に記録する（所定のテーブルを更新する）（ステップＥ２）。
【００６４】
なお、このステップＥ２の処理は省略してもよい。ステップＥ２の処理を行っておくと、電源オフもしくはオンのときにホスト２０から消去状態の確認要求がもしあった場合に、当該消去状態を正しく応答することができる。
【００６５】
最後に、ＣＰＵ８は、実際には指定されたブロックに対する消去処理を行わずに、消去を行った旨をホストへ通知する（ステップＥ３）。
【００６６】
図１８は、本実施形態のメモリカード１に対してホスト２０が書込を行う際の、当該メモリカード１のＩ／ＯピンとＲ／Ｂピンとの信号の例を示すタイミングチャートである。
【００６７】
ホスト２０は、メモリカードは16kByteの消去ブロックサイズを有する不揮発性メモリであると仮定してメモリカードを制御している。例えば、メモリカードに対する書込の際には、ホスト２０は、シリアルデータインプットコマンド８０Ｈ（Ｈは１６進を示す）をＩ／Ｏピン１〜８へ入力する。次に、ホスト２０は、カラムアドレスＣ／ＡおよびページアドレスＰ／Ａを、Ｉ／Ｏピン１〜８へ入力する。なお、ここでカラムアドレスＣ／ＡおよびページアドレスＰ／Ａは、ホスト２０がメモリカード１に対して想定している仮想物理アドレス空間におけるカラムアドレスおよびページアドレスである。
【００６８】
更に、ホスト２０は、書込データを、Ｉ／Ｏピン１〜８の個々に対し、５２８回入力する。具体的には、ホスト２０はライトイネーブルピンへの入力信号を５２８回クロッキングしながら、それぞれのＩ／Ｏピンに対し５２８ビット（すべてのＩ／Ｏピン合計で５２８バイト）のデータを順次シフトインする。データのシフトインが完了すると、ホスト２０は、プログラムコマンド１０ＨをＩ／Ｏピン１〜８へ入力する。これに応答してメモリカードは、そのＲ／Ｂピンにロウレベルの信号を出力し、メモリカードがビジー状態であることを示す。その後、所定期間後にＲ／Ｂピンにハイレベルの信号を出力することでメモリカードがレディ状態になったことを示す。
【００６９】
しかしながら、図１８におけるＲ／Ｂピンの状態は、あくまでもホスト２０に対してメモリカード１がどのような状態かを示すものである。つまり、図１８において、プログラムコマンド１０Ｈの入力に応答して、Ｒ／Ｂピンがビジー状態（つまりロウレベルを出力）を示したとしても、内部でＮＡＮＤ型フラッシュメモリ３に対する書込動作（つまり、ページバッファからメモリセルアレイへのデータ転送）が実際に行われているとは限らない。また、Ｒ／Ｂピンがレディ状態に復帰したとしても、内部でＮＡＮＤ型フラッシュメモリ３に対する書込動作が実際に完了しているとは限らない。
【００７０】
図１９は、本実施形態のメモリカード１内のＮＡＮＤ型フラッシュメモリ３に対して、当該メモリカード１内のコントローラ４が書込を行う際の、ＮＡＮＤ型フラッシュメモリ３のＩ／ＯピンとＲ／Ｂピンとの信号の例を示すタイミングチャートである。
【００７１】
コントローラ４は、ＮＡＮＤ型フラッシュメモリ３は256kByteの消去ブロックサイズを有する不揮発性メモリであると認識している。例えば、ＮＡＮＤ型フラッシュメモリ３に対する書込の際には、コントローラ１は、シリアルデータインプットコマンド８０Ｈ（Ｈは１６進を示す）をＩ／Ｏピン１〜８へ入力する。次に、コントローラ１は、カラムアドレスＣ／ＡおよびページアドレスＰ／Ａを、Ｉ／Ｏピン１〜８へ入力する。なお、ここでカラムアドレスＣ／ＡおよびページアドレスＰ／Ａは、コントローラ１がＮＡＮＤ型フラッシュメモリ３に対して想定している実物理アドレス空間におけるカラムアドレスおよびページアドレスである。したがって、図１８におけるカラムアドレスＣ／ＡおよびページアドレスＰ／Ａとは必ずしも一致していない。
【００７２】
更に、コントローラ１は、書込データを、Ｉ／Ｏピン１〜８の個々に対し、２１１２回入力する。具体的には、コントローラ１は、ライトイネーブルピンへの入力信号を２１１２回クロッキングしながら、それぞれのＩ／Ｏピンに対し２１１２ビット（すべてのＩ／Ｏピン合計で２１１２バイト）のデータを順次シフトインする。データのシフトインが完了すると、コントローラ１は、プログラムコマンド１０ＨをＩ／Ｏピン１〜８へ入力する。これに応答してメモリカードは、そのＲ／Ｂピンにロウレベルの信号を出力し、メモリカードがビジー状態であることを示す。その後、所定期間後にＲ／Ｂピンにハイレベルの信号を出力することでメモリカードがレディ状態になったことを示す。
【００７３】
図１９におけるＲ／Ｂピンの状態は、コントローラ４に対してＮＡＮＤ型フラッシュメモリ３が実際にどのような状態かを示すものである。
【００７４】
なお、上記図１８および図１９においは、カラムアドレスＣ／ＡおよびページアドレスＰ／Ａの入力をそれぞれ１つのサイクルで示しているが、メモリカード１の容量またはＮＡＮＤ型フラッシュメモリ３の容量に応じて、適宜２サイクル以上になる場合もある。
【００７５】
図２０は、本実施形態のメモリカード１の使用方法を模式的に示す図である。  
例えば、ホスト２０に予め搭載されているコントローラが、16kByteの消去ブロック単位を有する小ブロックカード１００の使用を前提としているとする。この場合、メモリカード内に適切なコントローラを内蔵することなく256kByteの消去ブロック単位を有するメモリを使用して大ブロックカードを実現すると、消去単位が異なることから正常なアクセスができない虞がある。これに対し、本実施形態に基づき256kByteの消去ブロック単位を有するメモリ用のコントローラ４を含んで大ブロックカードを実現すれば、小ブロックカード対応のホスト機器２０に対しても大ブロックカードを挿入して使用することが可能となる。
【００７６】
このように本実施形態によれば、小ブロックカードをアクセス対象とするホスト側から送られてくる書込コマンドに付随されている情報の中から連続する論理ブロックアドレスを得て、大ブロックカードの物理ブロック内において小ブロックカードの論理ブロックアドレスの順にデータを配置することによりデータ配置の最適化を実現し、書込時のオーバーヘッドの縮減を実現している。また、小ブロックカードの物理・論理ブロックアドレス及び大ブロックカードの物理ブロックアドレスの対応関係を管理することにより、小ブロックカードと大ブロックカードの整合性を効率的に維持することができる。また、ホストからの消去コマンドに対しても、それを実際に大ブロックカードの消去ブロックサイズの一部に反映させる（部分的に消去状態とする）のではなく、あたかもメモリカード内の該当消去ブロックが消去されたが如く振る舞うことにより、大ブロックカード内部の操作負荷を軽減することが可能となる。
【００７７】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００７８】
【図１】本発明の一実施形態に係るメモリカードに搭載されるデバイス類の概略構成を示す斜視図。
【図２】ホスト機器と上記メモリカードとを含む構成を示すブロック図。
【図３】ホストが想定しているフラッシュメモリと、実際に使用するフラッシュメモリとのデータ配置の違いを示す図。
【図４】ホスト側システム及びメモリカード（大ブロックカード）の各コミュニケーション階層を示す図。
【図５】ホスト側から送られてくるコマンドのフォーマットを示す図。
【図６】ホスト側が想定しているブロック書込操作とメモリカード（大ブロックカード）側が実際に行う書込処理とを対比して示す図。
【図７】大ブロックカード内のフラッシュメモリのブロックフォーマット（消去単位である256kByte物理ブロック分）を示す図。
【図８】コントローラ内のＲＡＭ上に作成される各種のテーブルを示す図。
【図９】各種テーブルの作成処理の流れを示すフローチャート。
【図１０】ライトアクセスに対する処理の流れを示すフローチャート。
【図１１】図１０に示されるステップＢ３におけるデータ書込みの処理の詳細を示すフローチャート。
【図１２】図１１に示されるステップＣ１の処理を模式的に示す図。
【図１３】図１１に示されるステップＣ２の処理を模式的に示す図。
【図１４】図１１に示されるステップＣ３の処理を模式的に示す図。
【図１５】図１１に示されるステップＣ４の処理を模式的に示す図。
【図１６】リードアクセスに対する処理の流れを示すフローチャート。
【図１７】消去アクセスに対する処理の流れを示すフローチャート。
【図１８】本実施形態のメモリカードに対してホストが書込を行う際の、当該メモリカードのＩ／ＯピンとＲ／Ｂピンとの信号の例を示すタイミングチャート。
【図１９】本実施形態のメモリカード内の不揮発性メモリに対して、当該メモリカード内のコントローラが書込を行う際の、メモリカード内の不揮発性メモリのＩ／ＯピンとＲ／Ｂピンとの信号の例を示すタイミングチャート。
【図２０】本実施形態のメモリカードの使用方法を模式的に示す図。
【符号の説明】
【００７９】
１…メモリカード（大ブロックカード）、２…ＰＣＢ基板、３…ＮＡＮＤ型フラッシュメモリ、４…コントローラ、５…メモリインタフェース部、６…ホストインタフェース部、７…バッファ、８…ＣＰＵ、９…ＲＯＭ、１０…ＲＡＭ、１１…小ブロックカード物理アクセス層、１２…小ブロックカード物理・小ブロックカード論理変換層、１３…小ブロックカード論理・大ブロックカード物理変換層、１４…大ブロックカード物理アクセス層、２０…ホスト機器、２１…アプリケーションソフト、２２…ファイルシステム、２３…ドライバソフト、２４…小ブロックカード物理アクセス層、３０…24Byte管理データ領域、１００…メモリカード（小ブロックカード）。
【図１】
2005222228.tif 000003
【図２】
2005222228.tif 000004
【図３】
2005222228.tif 000005
【図４】
2005222228.tif 000006
【図５】
2005222228.tif 000007
【図６】
2005222228.tif 000008
【図７】
2005222228.tif 000009
【図８】
2005222228.tif 000010
【図９】
2005222228.tif 000011
【図１０】
2005222228.tif 000012
【図１１】
2005222228.tif 000013
【図１２】
2005222228.tif 000014
【図１３】
2005222228.tif 000015
【図１４】
2005222228.tif 000016
【図１５】
2005222228.tif 000017
【図１６】
2005222228.tif 000018
【図１７】
2005222228.tif 000019
【図１８】
2005222228.tif 000020
【図１９】
2005222228.tif 000021
【図２０】
2005222228.tif 000022