(57)【要約】【課題】不揮発性メモリの仕様等が変更された場合に、第２のコントローラの機能を変更するたけでメモリシステムを再構築することができるメモリシステムを提供する。【解決手段】本発明の実施の形態に係るメモリシステムは、ホスト機器に接続される第１のコントローラと、前記第１のコントローラに接続されるとともに、不揮発性メモリに接続される第２のコントローラと、前記第２のコントローラに接続される前記不揮発性メモリと、を具備し、前記第２のコントローラは、前記第１のコントローラと前記不揮発性メモリとの間でデータの授受を行う。【選択図】図１
2009099112.tif 000002
【特許請求の範囲】
【請求項１】
ホスト機器に接続される第１のコントローラと、
前記第１のコントローラに接続されるとともに、不揮発性メモリに接続される第２のコントローラと、
前記第２のコントローラに接続される前記不揮発性メモリと、を具備し、
前記第２のコントローラは、前記第１のコントローラと前記不揮発性メモリとの間でデータの授受を行うことを特徴とするメモリシステム。
【請求項２】
前記第２のコントローラは、前記第１のコントローラと接続する第１のメモリインターフェースと、前記不揮発性メモリと接続する第２のメモリインターフェースと、を有し、前記第１のメモリインターフェース及び前記第２のメモリインターフェースは、前記第１のコントローラ及び前記不揮発性メモリとの間で同一の制御信号を授受することを特徴とする請求項１記載のメモリシステム。
【請求項３】
前記第１のコントローラ及び前記第２のコントローラは、個別の半導体素子により構成したことを特徴とする請求項１又は２に記載のメモリシステム。
【請求項４】
前記第２のコントローラは、前記第１のメモリインターフェースと前記第２のメモリインターフェースとを直接接続する経路を有し、
前記第２のコントローラ及び前記不揮発性メモリは、同一の半導体パッケージに封入されたことを特徴とする請求項１乃至３の何れかに記載のメモリシステム。
【請求項５】
一方の端部にＵＳＢコネクタの入出力端子となるＵＳＢ端子を形成した回路基板を具備し、
前記回路基板に前記第２のコントローラ及び前記不揮発性メモリを封入した半導体パッケージを実装したことを特徴とする請求項４記載のメモリシステム。
【請求項６】
ホスト機器に接続される第１のコントローラと、
前記第１のコントローラに接続されるとともに、複数の不揮発性メモリに接続される第２のコントローラと、
前記第２のコントローラに接続される前記複数の不揮発性メモリと、を具備し、
前記第２のコントローラは、前記第１のコントローラと前記複数の不揮発性メモリとの間でデータの授受を行うことを特徴とするメモリシステム。
【請求項７】
前記第２のコントローラは、前記ホスト機器から入力される書込データの書換回数をカウントするカウンタを有し、前記カウンタによりカウントされる書換回数に基づいて、前記複数の不揮発性メモリに対する前記書込データの記憶先を変更することを特徴とする請求項６記載のメモリシステム。
【請求項８】
前記第２のコントローラは、前記ホスト機器から入力される書込データと当該書込データの付加データとを分離し、前記複数の不揮発性メモリに対する前記書込データと前記付加データの記憶先を振り分けるデータ振分部を有することを特徴とする請求項６記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリシステムに関し、特に不揮発性メモリを備えたメモリシステムに関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリ等の不揮発性メモリでは、チップレイアウトを形成する線幅の微細化に伴い、書き込み時、読み出し時のページサイズや消去ブロックサイズ、各種コマンドシーケンス、信頼性を保持するために必要なエラー訂正符号等に変更が発生する。このため、メモリカード等の不揮発性メモリとコントローラとを備えたメモリシステムでは、不揮発性メモリの世代変更に伴ってコントローラ機能の変更が必須になる。
【０００３】
例えば、特許文献１に記載されたメモリカードでは、コントローラがメモリデバイスの複数のデバイスコードを保存し、メモリデバイスから読み出したデバイスコードと保存したデバイスコードを比較して、対応可能なメモリデバイスの種類を判別して、デバイスコードが確定されていないメモリデバイスに対応可能としている。
【特許文献１】特開２００５−１５７６８４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明は、不揮発性メモリの仕様等が変更された場合に、第２のコントローラの機能を変更するたけでメモリシステムを再構築することができるメモリシステムを提供する。
【課題を解決するための手段】
【０００５】
本発明の実施の形態に係るメモリシステムは、ホスト機器に接続される第１のコントローラと、前記第１のコントローラに接続されるとともに、不揮発性メモリに接続される第２のコントローラと、前記第２のコントローラに接続される前記不揮発性メモリと、を具備し、前記第２のコントローラは、前記第１のコントローラと前記不揮発性メモリとの間でデータの授受を行うことを特徴とする。
【０００６】
本発明の実施の形態に係るメモリシステムは、ホスト機器に接続される第１のコントローラと、前記第１のコントローラに接続されるとともに、複数の不揮発性メモリに接続される第２のコントローラと、前記第２のコントローラに接続される前記複数の不揮発性メモリと、を具備し、前記第２のコントローラは、前記第１のコントローラと前記複数の不揮発性メモリとの間でデータの授受を行うことを特徴とすることを特徴とする。
【発明の効果】
【０００７】
本発明よれば、不揮発性メモリの仕様等が変更された場合に、第２のコントローラの機能を変更するたけでメモリシステムを再構築するメモリシステムを提供することができる。
【発明を実施するための最良の形態】
【０００８】
以下、本発明の実施の形態を、図面を参照しつつ、説明する。実施の形態に係るメモリシステムはここではＮＡＮＤ型フラッシュメモリを例に取って説明する。なお、実施の形態において、同一構成要素には同一符号を付け、実施の形態の間において重複する説明は省略する。
【０００９】
（第１の実施の形態）
図１は、本発明のメモリシステムを適用した第１の実施の形態に係るメモリカードの概略構成を示す図である。図１に示すようにメモリカード１は、コントローラＡ２、コントローラＢ３及びＮＡＮＤフラッシュメモリ４を有する。コントローラＡ２は、ホストバス１１によりホスト装置２０に接続され、ＮＡＮＤバス１２によりコントローラＢ３に接続されている。コントローラＢ３は、ＮＡＮＤバス１２によりコントローラＡ２に接続され、ＮＡＮＤバス１３によりＮＡＮＤフラッシュメモリ４に接続されている。ＮＡＮＤフラッシュメモリ４は、ＮＡＮＤバス１３によりコントローラＢ３に接続されている。なお、ＮＡＮＤフラッシュメモリ４は、一つのメモリセルに１ビットのデータを記憶する２値メモリであっても良いし、一つのメモリセルに１ビットより多いデータ（例えば、２ビット）を記憶する多値メモリであっても良い。ここでは、不揮発性メモリの例としてＮＡＮＤ型フラッシュメモリを挙げて説明するが、不揮発性メモリはＮＡＮＤ型フラッシュメモリに限らず、例えば、ＮＯＲ型フラッシュメモリ等でもよい。
【００１０】
以下の説明において使用する用語「論理ブロックアドレス」、「物理ブロックアドレス」は、それぞれ、ＮＡＮＤフラッシュメモリ４内のブロック自体に割り当てられる論理アドレス、物理アドレスを意味するものである。また、「論理アドレス」、「物理アドレス」は、主に、ブロック自体の論理アドレス、物理アドレスを意味するものであるが、ブロック単位よりも細かい分解能の単位に相当するアドレスである場合もあり得る。
【００１１】
ホスト装置２０は、接続されるメモリカード１に対してアクセスを行うためのハードウェア及びソフトウェアを備えている。ホスト装置２０は、メモリカード１内部の物理状態（何処の物理ブロックアドレスに、何番目の何番目の論理セクタアドレスデータが含まれているか、或いは、何処のブロックが消去状態であるか）を管理し、メモリカード１内のＮＡＮＤフラッシュメモリ４を直接制御するものとして構築されている。
【００１２】
また、ホスト装置２０は、消去時の消去ブロックサイズが１６ｋＢｙｔｅに定められているＮＡＮＤフラッシュメモリ（ＮＡＮＤフラッシュメモリ４を限定するものではない）を使用することを前提として、１６ｋＢｙｔｅ単位で論理・物理アドレスの割り当てを行う。すなわち、ホスト装置２０は、多くの場合、論理アドレス１６ｋＢｙｔｅ分に関してシーケンシャルにライトアクセス又はリードアクセスを行う（該当するコマンドを発行する）。
【００１３】
メモリカード１は、ホスト装置２０に接続されたときに電源供給を受けて動作し、ホスト装置２０からのアクセスに応じた処理を行う。コントローラＡ２は、図２に示すように、ホストインターフェース（以下、ホストＩ／Ｆという）２１、バッファＲＡＭ２２、ＮＡＮＤインターフェース（以下、ＮＡＮＤ＿Ｉ／Ｆという）２３、ＣＰＵ（Central Processing Unit）２４、及びＲＯＭ（Read Only Memory）２５を有する。    
【００１４】
ホストＩ／Ｆ２１は、ホストバス１１に接続され、ホスト装置２０とバッファＲＡＭ２２及びＣＰＵ２４との間のインターフェース処理を行う。ＮＡＮＤ＿Ｉ／Ｆ２３は、ＮＡＮＤバス１２に接続され、コントローラＢ３とバッファＲＡＭ２２及びＣＰＵ２４との間のインターフェース処理を行う。
【００１５】
バッファＲＡＭ２２は、ホスト装置２０から入力されるデータをＮＡＮＤフラッシュメモリ４に書き込む際に、一定量のデータ（例えば、１ページ分）を一時的に記憶し、ＮＡＮＤフラッシュメモリ４から読み出されるデータをホスト装置２０に出力する際に、一定量のデータを一時的に記憶する。また、バッファＲＡＭ２２は、ＣＰＵ２４の作業領域として使用され、制御プログラム等を記憶する。
【００１６】
ＣＰＵ２４は、メモリカード１全体の動作を制御するものである。ＣＰＵ２４は、例えば、メモリカード１が電源供給を受けた際に、ＲＯＭ２５内に格納されているファームウェア（後述する制御プログラム）をバッファＲＡＭ２２にロードして所定の処理を実行することにより、ホスト装置２０から書込コマンド、読出コマンド、消去コマンドを受けてＮＡＮＤフラッシュメモリ４内の該当領域に対するアクセス処理をコントローラＢ３との間で実行し、バッファＲＡＭ２２を通じたデータ転送処理を制御する。
【００１７】
ＲＯＭ２５は、ＣＰＵ２４により使用される制御プログラム等を格納するメモリである。なお、コントローラＡ２は、ＮＡＮＤバス１３によりコントローラＢ３と接続されており、ＣＰＵ２４は、コントローラＢ３をＮＡＮＤフラッシュメモリ４であるものとして各種の処理を実行する。すなわち、ＣＰＵ２４は、ホスト装置２０から書込コマンド、読出コマンド、消去コマンドを受け付けた際に、コントローラＢ３に対して書込コマンド、読出コマンド、消去コマンドを転送する処理を実行する。
【００１８】
コントローラＢ３は、図３に示すように、ＮＡＮＤ＿Ｉ／Ｆ３１、バッファＲＡＭ３２、ＥＣＣ（Error Correcting Code）回路３３、ＮＡＮＤ＿Ｉ／Ｆ３４、ＣＰＵ３５、及びＲＯＭ３６を有する。
【００１９】
ＮＡＮＤ＿Ｉ／Ｆ３１は、ＮＡＮＤバス１２に接続され、コントローラＡ２とバッファＲＡＭ３２及びＣＰＵ３５との間のインターフェース処理を行う。ＮＡＮＤ＿Ｉ／Ｆ３４は、ＮＡＮＤバス１３に接続され、ＮＡＮＤフラッシュメモリ４とＥＣＣ回路３３及びＣＰＵ３５との間のインターフェース処理を行う。
【００２０】
バッファＲＡＭ３２は、コントローラＡ２から入力されるデータをＮＡＮＤフラッシュメモリ４に書き込む際に、一定量のデータ（例えば、１ページ分）を一時的に記憶し、ＮＡＮＤフラッシュメモリ４から読み出されるデータをコントローラＡ２に出力する際に、一定量のデータを一時的に記憶する。また、バッファＲＡＭ３２は、ＣＰＵ３４の作業領域として使用され、制御プログラムや各種のテーブル等を記憶する。
【００２１】
ＥＣＣ回路３３は、ＮＡＮＤフラッシュメモリ４に書き込む書込データに付加されたＥＣＣデータに基づく当該書込データの誤り訂正処理、ＮＡＮＤフラッシュメモリ４から読み出される読出データに対してＥＣＣデータを付加する処理等を行う。
【００２２】
ＣＰＵ３５は、ＮＡＮＤフラッシュメモリ４に対するアクセス処理を制御するものである。ＣＰＵ３５は、例えば、メモリカード１が電源供給を受けた際に、ＲＯＭ３６内に格納されているファームウェアをバッファＲＡＭ３２にロードして所定の処理を実行する。ＣＰＵ３５は、所定の処理において、後述する各種のテーブルをバッファＲＡＭ３２上で作成し、コントローラＡ２から書込コマンド、読出コマンド、消去コマンドを受け付けてＮＡＮＤフラッシュメモリ４内の該当領域に対するアクセス処理を実行し、バッファＲＡＭ３２を通じたデータ転送処理を実行する。
【００２３】
ＲＯＭ３６は、ＣＰＵ３５により使用される制御プログラム等を格納するメモリである。なお、コントローラＢ３は、ＮＡＮＤバス１２によりコントローラＡ２と接続されており、ＣＰＵ３５は、コントローラＡ２に対してＮＡＮＤフラッシュメモリ４であるものとして処理を実行する。すなわち、ＣＰＵ３５は、コントローラＡ２から書込コマンド、読出コマンド、消去コマンドを受け付けた際に、ＮＡＮＤフラッシュメモリ４内の該当領域に対するアクセス処理を実行する。
【００２４】
図４は、ホスト装置２０が想定しているフラッシュメモリと、実際に使用するフラッシュメモリ、すなわち、メモリカード１内のＮＡＮＤフラッシュメモリ４との、データ配置の違いを示している。ホスト装置２０が想定しているフラッシュメモリでは、各ページが５２８Ｂｙｔｅ（５１２Ｂｙｔｅ分のデータ記憶部＋１６Ｂｙｔｅ分の冗長部）を有しており、３２ページ分が１つの消去単位、すなわち、１６ｋＢｙｔｅ＋０．５ｋＢｙｔｅ（ここでは、ｋは１０２４）となる。以下では、このようなフラッシュメモリを搭載したカードを、「小ブロックカード」と称す場合がある。
【００２５】
一方、実際に使用するＮＡＮＤフラッシュメモリ４では、各ページは２１１２Ｂｙｔｅ（５１２Ｂｙｔｅ分のデータ記憶部×４＋２４Ｂｙｔｅ分の管理データ記憶部）を有しており、１２８ページ分が１つの消去単位、すなわち、２５６ｋＢｙｔｅ＋８ｋＢｙｔｅとなる。以下では、このようなＮＡＮＤフラッシュメモリ４を搭載したカードを、「大ブロックカード」と称す場合がある。なお、以下の説明では、便宜上、小ブロックカードの消去単位を１６ｋＢｙｔｅと呼び、大ブロックカードの消去単位を２５６ｋＢｙｔｅと呼ぶ。
【００２６】
また、ホスト装置２０が想定しているフラッシュメモリと、実際に使用するＮＡＮＤフラッシュメモリ４とは、それぞれ、フラッシュメモリへのデータ入出力を行うためのページバッファを備えている。ホスト装置２０が想定しているフラッシュメモリに備えられるページバッファの記憶容量は、５２８Ｂｙｔｅ（５１２Ｂｙｔｅ＋１６Ｂｙｔｅ）である。一方、実際に使用するＮＡＮＤフラッシュメモリ４に備えられるページバッファの記憶容量は、２１１２Ｂｙｔｅ（２０４８Ｂｙｔｅ＋６４Ｂｙｔｅ）である。データ書込等の際には、自身の記憶容量に相当する１ページ分の単位で実行する。
【００２７】
図４の例では、実際に使用するＮＡＮＤフラッシュメモリ４の消去サイズが、ホスト装置２０が想定しているフラッシュメモリの消去サイズの１６倍である場合を示したが、本発明はこれに限定されるものではなく、略整数倍であれば別の倍率となるように構成することも可能である。
【００２８】
大ブロックカードを実用上有効な製品とするためには、図４に示したＮＡＮＤフラッシュメモリ４の記憶容量は１Ｇビット以上であることが望ましい。ＮＡＮＤフラッシュメモリ４の記憶容量が、例えば、１Ｇビットである場合、２５６ｋＢｙｔｅブロック（消去単位）の数は、５１２個となる。
【００２９】
また、図４においては消去単位が２５６ｋＢｙｔｅである場合を例示しているが、消去単位が例えば１２８ｋＢｙｔｅブロックとなるように構築することも実用上有効である。この場合、１２８ｋＢｙｔｅブロックの数は、１０２４個となる。
【００３０】
図５は、ホスト装置２０側のシステム及びメモリカード１（大ブロックカード）の各コミュニケーション階層を示す図である。
【００３１】
ホスト装置２０側のシステムは、アプリケーションソフト４１、ファイルシステム４２、ドライバソフト４３、及び小ブロックカード物理アクセス層４４を有する。一方、メモリカード１（大ブロックカード）は、小ブロックカード物理アクセス層５１、小ブロックカード物理・小ブロックカード論理変換層５２、小ブロックカード物理・大ブロックカード論理変換層５３、及び大ブロックカード物理アクセス層５４を有する。
【００３２】
例えば、ホスト装置２０側のアプリケーションソフト４１がファイルの書込をファイルシステム４２に要求すると、ファイルシステム４２は、小ブロックカードの論理ブロックアドレスに基づきシーケンシャルなセクタ書込をドライバソフト４３に指示する。これを受けて、ドライバソフト４３は、小ブロックカードの論理ブロックアドレスに基づく１６ｋＢｙｔｅブロック毎のシーケンシャルな書込を実現する処理を実行する。この場合、ドライバソフト４３は、論理・物理ブロック変換を行い、小ブロックカード物理アクセス層４４を通じて、小ブロックカードの物理ブロックアドレスによるランダムな書込コマンドを大ブロックカードに対して発行し、データ転送を行う。
【００３３】
なお、ライトアクセスにおいては、小ブロックカードの場合も大ブロックカードの場合も、プロトコル上、（１）コマンド、（２）ページアドレス（ロウアドレス）、（３）カラムアドレス、（４）データ、（５）プログラム確認コマンド、といった順序で情報の授受が行われることが前提となっている。
【００３４】
大ブロックカード側の小ブロックカード物理アクセス層５１は、ホスト装置２０から小ブロックカードの物理ブロックアドレスによる書込コマンドを受けると、物理ブロックアドレスやデータのほか、これに付随する付随データに含まれている論理ブロックアドレスを取得する。
【００３５】
小ブロックカード物理・小ブロックカード論理変換層５２は、データ読出などの際に小ブロックカードの論理ブロックアドレス（１６ｋＢｙｔｅ分に対応）から小ブロックカードの論理ブロックアドレス（１６ｋＢｙｔｅ分に対応）への変換処理を行うための第１のテーブルを有している。小ブロックカード物理・小ブロックカード論理変換層５２は、小ブロックカード物理アクセス層５１が書込コマンドを受けて小ブロックカードの論理ブロックアドレスを取得したときには、これを第１のテーブルに反映させる。小ブロックカード物理・小ブロックカード論理変換層５２は、物理ブロックアドレスに関しても、第１のテーブルに反映させる。
【００３６】
小ブロックカード物理・大ブロックカード論理変換層５３は、データ読出などの際小ブロックカードの論理ブロックアドレス（シーケンシャルな１６ｋＢｙｔｅブロック×１６個分に対応）から大ブロックカードの物理ブロックアドレス（２５６ｋＢｙｔｅ物理ブロック分に対応）への変換処理を行うための第２のテーブルを有している。小ブロックカード物理・大ブロックカード論理変換層５３は、小ブロックカード物理アクセス層５１が読出コマンドを受けて小ブロックカードの論理アドレスを取得したときには、これを第２のテーブルに反映させる。
【００３７】
大ブロックカード物理アクセス層５４は、小ブロックカード物理アクセス層５１が書込コマンドを受けて取得した小ブロックカードの論理ブロックアドレスに基づき、ＮＡＮＤフラッシュメモリ４内のデータ配置を決定し、２５６ｋＢｙｔｅ物理ブロック内において２ｋＢｙｔｅ（１ページ）単位でシーケンシャルに１６ｋＢｙｔｅ分のデータを書き込む。また、大ブロックカード物理アクセス層５４は、取得した小ブロックカードの論理ブロックアドレスや物理ブロックアドレスをＮＡＮＤフラッシュメモリ４内部の管理データ領域内の所定の領域に格納する。
【００３８】
このようにホスト装置２０は、小ブロックカードの物理ブロックアドレスに基づくコマンドを発行するため、大ブロックカード側では、小ブロックカードの物理ブロックアドレスに対応するデータがどの２５６ｋＢｙｔｅ物理ブロックの中に存在するのかが分かるように管理する。具体的には、１６ｋＢｙｔｅ毎に小ブロックカードの論理・物理ブロックアドレスの対応関係を管理すると共に、小ブロックカードの連続した２５６ｋＢｙｔｅブロック分の論理ブロックアドレスに対応するデータが大ブロックカード内のどの２５６ｋＢｙｔｅ物理ブロックに格納されているかが分かるように管理する。
【００３９】
また、ホスト装置２０は、消去単位が１６ｋＢｙｔｅブロックであることを前提として、２５６ｋＢｙｔｅ物理ブロックを消去単位としている大ブロックカードにアクセスしてくる。これに対し、大ブロックカードは、ホスト装置２０が使用している制御アルゴリズムや物理フォーマットに合わせて柔軟に応答する。例えば、「新たな１６ｋＢｙｔｅの論理ブロックアドレスにより書込操作が発生した場合は、それ以前に同一の論理ブロックアドレスにより書込操作が発生したときの小ブロックカードの１６ｋＢｙｔｅ物理ブロックアドレスに対応するブロック（以下、「旧アサイン論理ブロック」と称す）のデータ消去が行われる」というホスト装置２０側のアルゴリズムに鑑み、消去対象の旧アサイン論理ブロックが消去状態であることをエミュレートする。しかし、実際には、大ブロックカード側では消去対象の１６ｋＢｙｔｅブロック分の消去を行わない。こりにより、ＮＡＮＤフラッシュメモリ４への物理的な操作に関するオーバーヘッドを大幅に削減することができる。
【００４０】
図６は、ホスト装置２０側から送られてくるコマンドのフォーマットを示す図である。ホスト装置２０側から送られてくるコマンドのパケットは、図６（ａ）に示すように、コマンド種別情報（ここでは「書込」）、アドレス（物理ブロックアドレス）、データ（コンテンツ等の実データ及び付随データ（５１２Ｂｙｔｅ＋１６Ｂｙｔｅ））といった各種情報を含んでいる。
【００４１】
このようなフォーマットのパケットにおいては、図６（ｂ）に示すように、付随データ１６Ｂｙｔｅ中の所定の位置に小ブロックカードの「論理ブロックアドレス」（アクセス対象となる１６Ｂｙｔｅブロックに対応する論理アドレス）が配置されている。大ブロックカードは、コマンド種別情報、物理ブロックアドレス、データを取得するほか、特に上記「論理ブロックアドレス」を取得する。
【００４２】
図７は、ホスト装置２０側が想定しているブロック書込操作と、メモリカード１（大ブロックカード）側が実際に行う書込処理とを、対比して示す図である。ホスト装置２０側（図中の左側）では、小ブロックカードの論理アドレスに基づく１６ｋＢｙｔｅ物理ブロック単位のシーケンシャルな書込操作の発生時に、小ブロックカードの物理ブロックアドレスによる１６ｋＢｙｔｅブロック単位のランダムな書込操作を行う。また、これに伴い、旧アサイン論理ブロックが１６ｋＢｙｔｅブロック単位で消去されることを前提としている。
【００４３】
一方、大ブロックカード（図中の右側）では、ホスト装置２０側から書込コマンドを受けた場合、小ブロックカードの論理ブロックアドレスに基づく１６ｋＢｙｔｅブロック単位のデータをＮＡＮＤフラッシュメモリ４内にシーケンシャルに書き込む。この場合、上記前提に合わせ、ホスト装置２０側に対しては大ブロックカード側小ブロックカード内の旧アサイン論理ブロックは消去の状態にあるものとして対応する。例えば、旧アサイン論理ブロックに対する読出アクセスがあった場合には、そのブロックは消去状態にある旨をホスト装置２０に応答する。また、小ブロックについても、消去の状態にあるものとして対応する。
【００４４】
前述のように、ホスト装置２０は、小ブロックの物理アドレスによる１６ｋＢｙｔｅ単位のランダムな書込操作を行う。このようなランダムな書込操作では、一般に、大ブロック（２５６ｋＢｙｔｅ）の一部のみを書き換えるための処理が多発する。ＮＡＮＤフラッシュメモリでは、ブロック単位でしか消去を行えないため、フロックの一部のみを書き換える場合は、書き換える新データを消去済みの新ブロックに書き込み、新データに書き換えられる旧データを含む旧ブロックから、書き換えられないデータのコピー動作（以下、「巻き添えデータコピー」と称す）を伴うため、ブロックの一部のみを書き換える処理が多発すると、オーバーヘッドが増大することになる。
【００４５】
そこで、本実施形態では、ホスト装置２０側から得られる論理アドレスの順序にし従って、大ブロックカード側で物理アドレスを再度割り当てることにより、ブロックの一部のみの書込の発生を低減し、オーバーヘッドの増大を抑制する。
【００４６】
図８は、大ブロックカード内のＮＡＮＤフラッシュメモリ４のブロックフォーマット（消去単位である２５６ｋＢｙｔｅ物理ブロック分）を示す図である。大ブロックカードでは、消去単位である２５６ｋＢｙｔｅ物理ブロックの中に、ホスト装置２０側が管理する単位である１６ｋＢｙｔｅに相当するデータを書き込むためのブロック（以下、ホスト管理ブロックと称す）が１６個分含まれている。データ書込の際には、小ブロックカードの論理ブロックアドレスの順に個々のデータが配置される。
【００４７】
各ホスト管理ブロックは、８個のページで構成される。各ページは、５１２Ｂｙｔｅデータ領域を４個分含むとともに、各データ領域に対応する１０ＢｙｔｅＥＣＣ領域を含んでいる。また、ページ中の最後の５１２Ｂｙｔｅデータ領域（４番目の５１２Ｂｙｔｅデータ領域）の後には、２４Ｂｙｔｅ管理データ領域も設けられる。このため、ページ中の最後の１０ＢｙｔｅＥＣＣ領域は、４番目の５１２Ｂｙｔｅデータ領域と２４Ｂｙｔｅ管理データ領域の両方に対応する構成となっている。
【００４８】
消去単位である２５６ｋＢｙｔｅ物理ブロックに含まれる１２８個の２４Ｂｙｔｅ管理データ領域のうち、最後の２４Ｂｙｔｅ管理データ領域６０には、ホスト装置２０側から送られてくるコマンドから取得された物理ブロックアドレスに相当するアドレス情報（以下、「ホスト管理物理アドレス」と称す）及び論理ブロックアドレスに相当するアドレス情報（以下、「ホスト管理論理ブロックアドレス」と称す）がまとめて格納される。
【００４９】
具体的には、１６ｋＢｙｔｅデータが１つの１６ｋＢｙｔｅホスト管理ブロックに書き込まれる毎に、対応するホスト管理物理アドレス（例えば、１０ｂｉｔ分）が管理データ領域６０内の所定の領域に格納される。これにより、１６個の１６ｋＢｙｔｅホスト管理ブロックに対応する１６個のホスト管理物理アドレスが管理データ領域６０内の所定の領域に格納される。一方、ホスト管理論理アドレスに関しては、１６個の１６ｋＢｙｔｅホスト管理ブロックに対応する連続した１６個の論理ブロックアドレスのうち、その代表として、先頭の論理ブロックアドレス（例えば、１０ｂｉｔ分）がホスト管理論理アドレスとして管理データ領域６０内の所定の領域に格納される。
【００５０】
上記構成において、各２５６Ｂｙｔｅブロック内の最終領域（５１２Ｂｙｔｅ＋２４Ｂｙｔｅ＋１０Ｂｙｔｅの領域）に配置されている情報を読み出して、その中の２４Ｂｙｔｅ管理データを参照することにより、当該２５６ｋＢｙｔｅブロックに対応する１６ブロック分の「ホスト管理物理アドレス」及び「ホスト管理論理ブロックアドレス」をまとめて取得することができる。
【００５１】
各２５６Ｂｙｔｅブロック内に格納された「ホスト管理物理アドレス」及び「ホスト管理論理ブロックアドレス」は、図５で説明した小ブロックカード物理・小ブロックカード論理変換層５２が有する第１のテーブルと、小ブロックカード論理・大ブロックカード物理変換層５３が有する第２のテーブルとを作成する際に使用される。
【００５２】
図９は、コントローラＢ３のバッファＲＡＭ３２内に作成される各種のテーブルを示す図である。「小ブロックカード論理・物理ブロックアドレス」テーブル３２ａ及び「小ブロックカード論理ブロックアドレス・大ブロックカード物理ブロックアドレス」テーブル３２ｂは、それぞれ前述した第１のテーブル及び第２のテーブルに相当するものであり、データ管理領域６０（図８参照）に格納されている「ホスト管理物理アドレス」及び「ホスト管理論理アドレス」を利用してバッファＲＡＭ３２内に作成される。
【００５３】
「小ブロックカード論理・物理ブロックアドレス」テーブル３２ａは、データ読出などの際に小ブロックカードの物理ブロックアドレス（１６ｋＢｙｔｅブロック分に対応）から小ブロックカードの論理ブロックアドレス（１６ｋＢｙｔｅブロック分に対応）への変換処理を行うために使用される。
【００５４】
「小ブロックカード論理ブロックアドレス・大ブロックカード物理ブロックアドレス」テーブル３２ｂは、データ読出などの際に小ブロックカードの論理ブロックアドレス（シーケンシャルな１６ｋＢｙｔｅブロック×１６個分に対応）から大ブロックカードの論理ブロックアドレス（２５６ｋＢｙｔｅ物理ブロック分に対応）への変換処理を行うために使用される。
【００５５】
次に、図１０のフローチャートを参照して、各種テーブルの作成処理の流れを説明する。例えば、メモリカード１（大ブロックカード）がホスト装置２０側から電源供給を受けると（ステップＡ１）、コントローラＢ３内のＣＰＵ３５は動作を開始し、ＲＯＭ３６に格納されている制御プログラム（小ブロックカードにおける物理・論理ブロックアドレスと当該ＮＡＮＤフラッシュメモリ４における物理ブロックアドレスとの対応付けを管理するためのプログラム）等をバッファＲＡＭ３２上にロードして処理する（ステップＡ２）。なお、この時、コントローラＡ２内のＣＰＵ２４も動作を開始し、ＲＯＭ２５に格納されている制御プログラム（メモリカード１全体の動作を制御するためのプログラム）等をバッファＲＡＭ２２上にロードして処理する。
【００５６】
次に、ＣＰＵ３５は、ＮＡＮＤフラッシュメモリ４のデータ管理領域６０内に格納されている「ホスト管理物理アドレス」及び「ホスト管理論理ブロックアドレス」を利用することによって、バッファＲＡＭ３２上に「小ブロックカード論理・物理ブロックアドレス」テーブル３２ａと「小ブロックカード論理ブロックアドレス・大ブロックカード物理ブロックアドレス」テーブル３２ｂとを作成する（ステップＡ３）。そして、ＣＰＵ３５は、ホスト装置２０からのコマンド待ち状態になり（ステップＡ４）、制御プログラムに従ってライトアクセス、リードアクセス、消去アクセスに対する各処理が行えるようになる。
【００５７】
次に、図１１のフローチャートを参照して、ライトアクセスに対する処理の流れを説明する。ＣＰＵ３５は、ホスト装置２０側からコントローラＡ２を経由して、例えば、１６ｋＢｙｔｅブロックに対する書込コマンドを受けると（ステップＢ１）、小ブロックカードの物理ブロックアドレスやデータのほか、これに付随する付随データに含まれている論理ブロックアドレスを取得する（ステップＢ２）。
【００５８】
ＣＰＵ３５は、取得した小ブロックカードの論理ブロックアドレスの順に、１６ｋＢｙｔｅデータを２５６ｋＢｙｔｅ物理ブロック内に書き込むと共に、当該小ブロックカードの論理ブロックアドレス及び物理ブロックアドレスに相当する「ホスト管理論理アドレス」及び「ホスト管理物理アドレス」を管理データ領域６０内の所定の領域に格納する（ステップＢ３）。また、ＣＰＵ３５は、取得した上記小ブロックカードの論理ブロックアドレス及び物理ブロックアドレスをバッファＲＡＭ３２上の「小ブロックカード論理・物理ブロックアドレス」テーブル３２ａと「小ブロックカード論理ブロックアドレス・大ブロックカード物理ブロックアドレス」テーブル３２ｂに反映させる（ステップＢ４）。最後に、ＣＰＵ３５は、ホスト装置２０に書込処理の完了を通知する（ステップＢ５）。
【００５９】
次に、図１２のフローチャート及び図１３〜図１６の概念図を参照して、前述の図１１に示したステップＢ３におけるデータ書込処理の詳細について説明する。
【００６０】
ＣＰＵ３５は、データ書込に際し、対象となっている論理ブロックアドレス（１６ｋＢｙｔｅブロック分に対応）が、先行する論理ブロックアドレス（１６ｋＢｙｔｅブロック分に対応）に連続するものであるか否かを判定する（図１２のステップＣ１）。すなわち、図１３に示すように、１６ｋＢｙｔｅ物理ブロックアドレスＸ１へのデータ書込まで済んでいる状態において、次に書き込むべき物理ブロックが上記物理ブロックＸ１に続く１６ｋＢｙｔｅ物理ブロックアＸ２に該当するか否かを判定する。
【００６１】
連続するものであれば、ＣＰＵ３５は、大ブロックカードの２５６ｋＢｙｔｅ物理ブロック内に、先に書き込んだ１６ｋＢｙｔｅデータに引き続き、書込対象の１６ｋＢｙｔｅデータを書き込む（図１２のステップＣ２）。すなわち、図１４に示すように、前述の１６ｋＢｙｔｅ物理ブロックアＸ２へのデータ書込を行う。
【００６２】
一方、連続するものでなければ、大ブロックカードの２５６ｋＢｙｔｅ物理ブロック内の後半データに関して巻き添えデータコピー操作を実施する（図１２のステップＣ３）。すなわち、図１５に示すように、対象となっている２５６ｋＢｙｔｅ物理ブロックには、上記物理ブロックＸ１までの書込（更新）によって不要となった旧データを有する旧アサイン１６ｋＢｙｔｅ論理ブロック群の物理領域Ｙ１と、更新がないために有効に残っている有効データを有する物理領域Ｙ２とが存在する。そこで、この物理ブロックＹ２のデータを、対象となっている２５６ｋＢｙｔｅブロック内の上記物理ブロックＸ１の後に続く物理領域Ｙ３にコピーする。また、コピー後、ＣＰＵ３５は、不要となった旧２５６ｋＢｙｔｅブロック内のデータを消去する。
【００６３】
次いで、大ブロックカードの新たな２５６ｋＢｙｔｅ物理ブロック（データ消去済み）への書込を実施し、待機する（図１２のステップＣ４）。なお、書込対象となる領域が２５６ｋＢｙｔｅ区切りの先頭であるか否かによって、処理が異なる。すなわち、書込対象となる領域が２５６ｋＢｙｔｅ区切りの先頭の場合、図１６（ａ）に示すように、当該先頭の位置にある物理ブロックＺ１に１６ｋＢｙｔｅデータを書き込む。一方、書込対象となる領域が２５６ｋＢｙｔｅ区切りの先頭でない場合、前半データに関して巻き添えデータコピー操作を実施する。すなわち、図１６（ｂ）に示すように、先頭から上記書込対象の直前までの物理領域Ｚ２に、旧アサイン１６ｋＢｙｔｅ物理ブロック群のデータをコピーし、その後、書込対象となる物理領域Ｘ３に１６ｋＢｙｔｅデータを書き込む。
【００６４】
次に、図１７に示すフローチャートを参照して、リードアクセスに対する処理の流れを説明する。ＣＰＵ３５は、ホスト装置２０から、例えば１６ｋＢｙｔｅブロックに対する読出コマンドを受けると（ステップＤ１）、そのコマンドに付加されている小ブロックカードの物理ブロックアドレスを取得する（ステップｄ２）。
【００６５】
次に、ＣＰＵ３５は、「小ブロックカード論理・物理ブロックアドレス」テーブル３２ａを参照することにより、取得した小ブロックカードの物理ブロックアドレスから小ブロックの論理ブロックアドレスを取得する（ステップＤ３）。次いで、ＣＰＵ３５は、「小ブロックカード論理ブロックアドレス・大ブロックカード物理ブロックアドレス」テーブル３２ｂを参照することにより、取得した小ブロックの論理ブロックアドレスから大ブロックカードの物理ブロックアドレスを取得する（ステップＤ４）。
【００６６】
次に、図１８に示すフローチャートを参照して、消去アクセスに対する処理の流れを説明する。ＣＰＵ３５は、ホスト装置２０から、例えば１６ｋＢｙｔｅ物理ブロックに対する消去コマンドを受けると（ステップＥ１）、必要に応じて、該当するブロックが消去状態にあることを示す情報をバッファＲＡＭ３２上の所定の領域に記録する（所定のテーブルを更新する）（ステップＥ２）。
【００６７】
なお、このステップＥ２の処理は省略してもよい。ステップＥ２の処理を行っておくと、電源オフもしくは電源オンのときにホスト装置２０側から消去状態の確認要求があった場合に、当該消去状態を正しく応答することができる。
【００６８】
最後に、ＣＰＵ３５は、実際には指定されたブロックに対する消去処理を行わずに、消去を行った旨をホスト装置２０へ通知する（ステップＥ３）。
【００６９】
図１９は、本実施の形態のメモリカード１に対してホスト装置２０が書き込みを行う際の当該メモリカード１のＩ／ＯピンとＲ／Ｂピンに入出力される信号の例を示すタイミングチャートである。
【００７０】
ホスト装置２０は、メモリカード１は１６ｋＢｙｔｅの消去ブロックサイズを有する不揮発性メモリであると仮定してメモリカード１を制御している。例えば、メモリカード１に対する書込の際には、ホスト装置２０は、シリアルデータインプットコマンド８０Ｈ（Ｈは１６進を示す）をＩ／Ｏピン１〜８へ入力する。次に、ホスト装置２０は、カラムアドレスＣ／Ａ及びページアドレスＰ／Ａを、Ｉ／Ｏピン１〜８へ入力する。なお、ここでカラムアドレスＣ／Ａ及びページアドレスＰ／Ａは、ホスト装置２０がメモリカード１に対して想定している仮想物理アドレス空間におけるカラムアドレス及びページアドレスである。
【００７１】
更に、ホスト装置２０は、書込データを、Ｉ／Ｏピン１〜８の個々に対し、５２８回入力する。具体的には、ホスト装置２０は、ライトイネーブルピンへの入力信号を５２８回クロッキングしながら、それぞれのＩ／Ｏピンに対して５２８ビット（すべてのＩ／Ｏピン合計で５２８バイト）のデータを順次シフトインする。データをシフトインが完了すると、ホスト装置２０は、プログラムコマンド１０ＨをＩ／Ｏピン１〜８へ入力する。これに応答してメモリカード１は、そのＲ／Ｂピンにロウレベルの信号を出力し、メモリカード１がビジー状態であることを示す。その後、所定時間後にＲ／Ｂピンにハイレベルの信号を出力することでレディ状態になったことを示す。
【００７２】
しかしながら、図１９におけるＲ／Ｂピンの状態は、あくまでもホスト装置２０に対してメモリカード１がどのような状態かを示すものである。つまり、図１９において、プログラムコマンド１０Ｈの入力に応答して、Ｒ／Ｂピンがビジー状態（つまりロウレベルを出力）を示したとしても、メモリカード１内部でＮＡＮＤフラッシュメモリ４に対する書込動作（つまり、ページバッファからメモリセルアレイへのデータ転送）が実際に行われているとは限らない。また、Ｒ／Ｂピンがレディ状態に復帰したとしても、メモリカード１内部でＮＡＮＤフラッシュメモリ４に対する書込動作が実際に完了しているとは限らない。
【００７３】
図２０は、本実施の形態のメモリカード１内のＮＡＮＤフラッシュメモリ４に対して、当該メモリカード１内のコントローラＢ３が書き込みを行う際のＮＡＮＤフラッシュメモリ４のＩ／ＯピンとＲ／Ｂピンに入出力される信号の例を示すタイミングチャートである。
【００７４】
コントローラＢ３は、ＮＡＮＤフラッシュメモリ４は２５６ｋＢｙｔｅの消去ブロックサイズを有する不揮発性メモリであると認識している。同様に、コントローラＡ２もＮＡＮＤフラッシュメモリ４は２５６ｋＢｙｔｅの消去ブロックサイズを有する不揮発性メモリであると認識している。例えば、ＮＡＮＤフラッシュメモリ４に対する書込の際には、コントローラＢ３は、シリアルデータインプットコマンド８０Ｈ（Ｈは１６進を示す）をＩ／Ｏピン１〜８へ入力する。次に、コントローラＢ３は、カラムアドレスＣ／Ａ及びページアドレスＰ／Ａを、Ｉ／Ｏピン１〜８へ入力する。なお、ここでカラムアドレスＣ／Ａ及びページアドレスＰ／Ａは、コントローラＢ３がＮＡＮＤフラッシュメモリ４に対して想定している実物理アドレス空間におけるカラムアドレス及びページアドレスとは必ずしも一致していない。
【００７５】
更に、コントローラＢ３は、書込データを、Ｉ／Ｏピン１〜８の個々に対し、２１１２回入力する。具体的には、コントローラＢ３は、ライトイネーブルピンへの入力信号を２１１２回クロッキングしながら、それぞれのＩ／Ｏピンに対して２１１２ビット（すべてのＩ／Ｏピン合計で２１１２バイト）のデータを順次シフトインする。データをシフトインが完了すると、コントローラＢ３は、プログラムコマンド１０ＨをＩ／Ｏピン１〜８へ入力する。これに応答してメモリカード１は、そのＲ／Ｂピンにロウレベルの信号を出力し、メモリカード１がビジー状態であることを示す。その後、所定時間後にＲ／Ｂピンにハイレベルの信号を出力することでレディ状態になったことを示す。
【００７６】
図２０におけるＲ／Ｂピンの状態は、コントローラＢ３に対してＮＡＮＤフラッシュメモリ４が実際にどのような状態かを示すものである。
【００７７】
なお、上記図１９及び図２０においては、カラムアドレスＣ／Ａ及びページアドレスＰ／Ａの入力それぞれを１つのサイクルで示しているが、メモリカード１の容量またはＮＡＮＤフラッシュメモリ４の容量に応じて、適宜２サイクル以上になる場合もある。
【００７８】
図２１は、本実施の形態のメモリカード１の使用方法を模式的に示す図である。
【００７９】
例えば、ホスト装置２０に予め搭載されているコントローラが、１６ｋＢｙｔｅの消去ブロック単位を有する小ブロックカード１００の使用を前提としているものとする。この場合、メモリカード内に適切なコントローラを内蔵することなく２５６ｋＢｙｔｅの消去ブロック単位を有するメモリを使用して大ブロックカードを実現すると、消去単位が異なることから正常なアクセスができない虞がある。これに対し、本実施の形態に基づき２５６ｋＢｙｔｅの消去ブロック単位を有するメモリ用のコントローラＢ３を含む大ブロックカード１を実現すれば、小ブロックカード対応のホスト装置２０に対しても大ブロックカード１を挿入して使用することが可能となる。
【００８０】
このように本実施の形態によれば、小ブロックカードをアクセス対象とするホスト装置２０側から送られてくる書込コマンドに付随されている情報から連続する論理ブロックアドレスを取得して、大ブロックカードの物理ブロック内において小ブロックカードの論理ブロックアドレスの順にデータを配置することによりデータ配置の最適化を実現し、書込時のオーバーヘッドの削減を実現している。また、小ブロックカードの物理・論理ブロックアドレス及び大ブロックカードの物理ブロックアドレスの対応関係を管理することにより、小ブロックカードと大ブロックカードの整合性を効率的に維持することができる。また、ホスト装置２０からの消去コマンドに対しても、それを実際に大ブロックカードの消去ブロックサイズの一部に反映させる（部分的に消去状態とする）のではなく、あたかもメモリカード内の該当消去ブロックが消去されたように振る舞うことにより、大ブロックカード内部の操作負荷を軽減することが可能となる。
【００８１】
また、本実施の形態のメモリカード１では、メモリカード１全体の動作を制御するコントローラＡ２と、ＮＡＮＤフラッシュメモリ４に対するアクセス処理を制御するコントローラＢ３とを有する構成とした。コントローラＢ３は、ＮＡＮＤバス１２によりコントローラＡ２と接続して、コントローラＢ３がコントローラＡ２に対してＮＡＮＤフラッシュメモリとして認識されるように構成した。このため、例えば、ＮＡＮＤフラッシュメモリ４の世代が変更されて、ＮＡＮＤバス１３を介して行われる制御コマンド等のプロトコルが変更されたり、信頼性を維持するためのＥＣＣ回路３３を変更する必要が発生した場合等は、コントローラＢ３のＮＡＮＤ＿Ｉ／Ｆ３４及びＥＣＣ回路３３を変更することにより、コントローラＡ２やホストバス１１に接続されるホスト装置２０に変更を加えずにメモリカード１を再構築することが可能になる。
【００８２】
なお、上記図１に示したメモリカード１を構築する際には、２つのコントローラＡ２，Ｂ３とＮＡＮＤフラッシュメモリ４を別々のパッケージとして構成しても良い。例えば、図２２に示すように、メモリカード１は、コントローラＡ２を含むコントローラチップ２０１と、コントローラＢ３及びＮＡＮＤフラッシュメモリ４を含むメモリチップ２０２として構成しても良い。このように構成することにより、ＮＡＮＤフラッシュメモリ４の世代が変わっても、メモリチップ２０２を交換するだけで、メモリカード１全体に影響を与えずにメモリカード１を再構築することが可能になる。
【００８３】
（第２の実施の形態）
本第２の実施の形態では、ＮＡＮＤバス１２とＮＡＮＤバス１３を直接接続する経路を形成する構成としたコントローラＢを有するメモリカードを提供する。図２３は、本発明のメモリシステムを適用した第２の実施の形態に係るメモリカードの概略構成を示す図である。なお、図２３において、上記第１の実施の形態において図２２に示したメモリカード１と同一の構成部分には同一の符号を付しており、その同一構成の構成説明は省略する。
【００８４】
図２３に示すように、メモリカード２００は、コントローラＡ２を含むコントローラチップ２０１と、コントローラＢ２０２１及びＮＡＮＤフラッシュメモリ４を含むメモリチップ２０２とを有する。コントローラＡ２は、ホストバス１１によりホスト装置２０に接続され、ＮＡＮＤバス１２によりコントローラＢ２０２１に接続されている。コントローラＢ２０２１は、ＮＡＮＤバス１２によりコントローラＡ２に接続され、ＮＡＮＤバス１３によりＮＡＮＤフラッシュメモリ４に接続されている。ＮＡＮＤフラッシュメモリ４は、ＮＡＮＤバス１３によりコントローラＢ３に接続されている。なお、ＮＡＮＤフラッシュメモリ４は、一つのメモリセルに１ビットのデータを記憶する２値メモリであっても良いし、一つのメモリセルに１ビットより多いデータ（例えば、２ビット）を記憶する多値メモリであっても良い。ここでは、不揮発性メモリの例としてＮＡＮＤ型フラッシュメモリを挙げて説明するが、不揮発性メモリはＮＡＮＤ型フラッシュメモリに限らず、例えば、ＮＯＲ型フラッシュメモリ等でもよい。
【００８５】
本第２の実施の形態では、ホスト装置２０は、メモリカード２００の出荷テスト時において、テスタとしてメモリカード２００と電気的に接続されるものとする。コントローラＢ２０２１は、ＮＡＮＤ＿Ｉ／Ｆ３１が受け取ったアドレスを変換し、この変換したアドレスを用いてＮＡＮＤフラッシュメモリ４にアクセスする第１モードと、ＮＡＮＤ＿Ｉ／Ｆ３１が受け取ったアドレスを用いてＮＡＮＤフラッシュメモリ４に直接アクセスする第２モードとで動作し、第１モードと第２モードとの動作モードの切り替えをコマンドに応じて制御する。
【００８６】
以下において、第１モードから第２モードへの切り替え動作を移行動作と呼び、第２モードから第１モードへの切り替え動作を復帰動作と呼ぶ。なお、「第１モード」とは、ホスト装置２０がＮＡＮＤフラッシュメモリ４に直接アクセスしない動作モードであり、メモリカード２００を実際に使用する時と同様の動作モードを意味する。
【００８７】
出荷テスト時において、ホスト装置２０は、コントローラＢ２０２１とＮＡＮＤフラッシュメモリ４を個別にテストする。以下の説明では、コントローラＢ２０２１のみを対象にして実行するテストを「コントローラ単体テスト」、ＮＡＮＤフラッシュメモリ４のみを対象にして実行するテストを「ＮＡＮＤ単体テスト」とそれぞれ呼ぶ。コントローラ単体テスト時においては、動作モードが第１モードに設定され、ＮＡＮＤ単体テスト時においては、動作モードが第２モードに設定される。
【００８８】
ＮＡＮＤフラッシュメモリ４は、例えば、１Ｇビット以上の記憶容量を有し、消去単位である消去ブロックサイズが２５６ｋＢｙｔｅに設定され、データの書き込み及び読み出しは１６ｋＢｙｔｅ単位で行われるものとする。なお、ＮＡＮＤフラッシュメモリ４は、例えば、０．０９μｍプロセス技術を用いて製造され、デザインルールは０．１μｍ未満であるものとする。
【００８９】
コントローラＢ２０２１は、図２４に示すように、ＮＡＮＤ＿Ｉ／Ｆ３１、バッファＲＡＭ３２、ＥＣＣ回路３３、ＮＡＮＤ＿Ｉ／Ｆ３４、ＣＰＵ３５、ＲＯＭ３６、及びアクセス経路設定部２０２２を有する。
【００９０】
ＣＰＵ３５は、ＮＡＮＤフラッシュメモリ４に対するアクセス処理を制御するものである。ＣＰＵ３５は、第１モードにおいて、ＲＯＭ３６内に格納されているファームウェアをバッファＲＡＭ３２にロードして所定の処理を実行する。ＣＰＵ３５は、第１モード時に実行する処理により、各種のテーブルをバッファＲＡＭ３２内に作成し、ホスト装置２０から書込コマンド、読出コマンド、及び消去コマンドを受け付けてＮＡＮＤフラッシュメモリ４に対するアクセスを実行し、バッファＲＡＭ３２を通じたデータ転送処理を制御する。
【００９１】
アクセス経路設定部２０２２は、第２モードにおいて、ホスト装置２０がＮＡＮＤフラッシュメモリ４に直接アクセスするアクセス経路を設定する。図２４に示すように、アクセス経路設定部２０２２は、ＮＡＮＤ＿Ｉ／Ｆ３１及びバッファＲＡＭ３２の間に接続された第１のスイッチＳＷ１と、ＥＣＣ回路３３及びＮＡＮＤ＿Ｉ／Ｆ３４の間に接続された第２のスイッチＳＷ２を有する。第１及び第２のスイッチＳＷ１，ＳＷ２は、ＣＰＵ３５から入力される切り替え制御信号に応じて、ＮＡＮＤ＿Ｉ／Ｆ３１、バッファＲＡＭ３２、ＥＣＣ回路３３及びＮＡＮＤ＿Ｉ／Ｆ３４の接続関係を切り替える。この切り替えにより、第２モードでは、書込データ及び読出データ等がバッファＲＡＭ３２及びＥＣＣ回路３３を迂回し、且つホスト装置２０が発行するコマンド等をＮＡＮＤフラッシュメモリ４に直接伝達できる。
【００９２】
以上のように、コントローラＢ２０２１は、移行動作と復帰動作をコマンドに応じて制御する構成としているため、メモリカード２００の外部接続ピン数を増加させることなく第２モードを実現することができる。
【００９３】
メモリカード２００の外部接続ピンの配置例を図２５に示す。図２５は、メモリカード２００をピン形成面から見た平面図である。メモリカード２００は、第１〜第１８ピンＰ１〜Ｐ１８の合計１８個の外部接続ピンを有している。第１〜第１８ピンＰ１〜Ｐ１８の各ピンと各ピンに割り当てられる信号例を図２６に示す。なお、図２６の属性“タイプ”において、記号“Ｓ”は電源電圧を示し、記号“Ｉ”はメモリカード２００への入力であることを示し、記号“Ｏ”はメモリカード２００からの出力であることを示し、記号“Ｉ／Ｏ”はメモリカード２００に対する入出力であることを示す。また、ピン名（記号名）の先頭に付した記号“−”は、ロウ・トゥルー信号であること、すなわち、“Ｌｏｗ”レベルの時に活性化する信号であることを示す。
【００９４】
図２６において、第１及び第９ピンＰ１，Ｐ９は接地電圧ＧＮＤに、第１８ピンＰ１８は電源電圧Ｖｃｃにそれぞれ割り当てられている。
【００９５】
第２ピンＰ２は、メモリカード２００の内部動作状態をホスト装置２０に知らせるためのレディ／ビジー（Ｒ／−Ｂ）信号に割り当てられている。メモリカード２００内において、データの書き込み、読み出し、及び消去時等の動作実行中は第２ピンＰ２からビジー信号が出力され、動作が完了すると第２ピンＰ２からレディ信号が出力される。
【００９６】
第３ピンＰ３は、メモリカード２００からデータを出力させるリード・イネーブル（−ＲＥ）信号に、第４ピンＰ４は、メモリカード２００を動作可能状態にするカード・イネーブル（−ＣＥ）信号にそれぞれ割り当てられている。
【００９７】
第５ピンＰ５は、コマンドの取り込みを制御するためのコマンド・ラッチ・イネーブル（ＣＬＥ）信号に、第６ピンＰ６は、アドレスの取り込みを制御するためのアドレス・ラッチ・イネーブル（ＡＬＥ）信号にそれぞれ割り当てられている。
【００９８】
第７ピンＰ７は、データをメモリカード２００に書き込むためのライト・イネーブル（−ＷＥ）信号に、第８ピンＰ８は、書き込み及び消去を強制的に禁止させるためのライト・プロテクト（−ＷＰ）信号にそれぞれ割り当てられている。
【００９９】
第１０〜第１７ピンＰ１０〜Ｐ１７は、コマンド、アドレス、及びデータの各ビットＤ０〜Ｄ７にそれぞれ割り当てられている。なお、図２６に示した外部接続ピンの配置例は、図２４に示したホストバス１１に接続されたコントローラＡ２内のホストＩ／Ｆ２１（図２参照）が有するピン（図示せず）と１対１で対応するものである。
【０１００】
一方、ＮＡＮＤフラッシュメモリ４及びＮＡＮＤ＿Ｉ／Ｆ３４は、図２６に示したホストＩ／Ｆ２１が有するピンと同様のピン構成を有している。具体的には、ＮＡＮＤフラッシュメモリ４及びＮＡＮＤ＿Ｉ／Ｆ３４は、コマンド、アドレス、及びデータが入出力される入出力（Ｉ／Ｏ）ピン１〜８と、レディ・ビジー信号を出力するＲ／−Ｂピンと、リード・イネーブル信号が入力される−ＲＥピンと、チップ・イネーブル信号が入力される−ＣＥピンと、コマンド・ラッチ・イネーブル信号が入力されるＣＬＥピンと、アドレス・ラッチ・イネーブル信号が入力されるＡＬＥピンと、ライト・イネーブル信号が入力される−ＷＥピンと、ライト・プロテクト信号が入力される−ＷＰピンと、を備える。
【０１０１】
以上のように、メモリカード２００は、ＮＡＮＤフラッシュメモリ４のピン構成に対応したピン構成を有しており、ホスト装置２０がＮＡＮＤフラッシュメモリ４に対するコマンドシーケンスによりメモリカード２００にアクセスを行うことが可能である。ここで、「コマンドシーケンス」とは、１つのコマンドとアドレス等との組み合わせ、複数のコマンドの組み合わせ、あるいは、コマンド、アドレス、データを何れかもしくは全てを１つ又は複数組み合わせたものを意味する。
【０１０２】
上述したように、コントローラＢ２０２１は、移行動作と復帰動作をコマンドに応じて制御する。しかし、コントローラＢ２０２１は、ホスト装置２０から入力される移行動作及び復帰動作に係るコマンドを書き込みコマンドや読み出しコマンドと認識して誤動作する虞がある。また、ホスト装置２０から復帰動作を指示するコマンド（例えば、“ＦＦｈ”コマンド（ｈ；１６進を示す））と同一のアドレス又はデータが入力された場合、コントローラＢ２０２１は、意図しない復帰動作を実行する虞がある。
【０１０３】
そこで、本第２の実施の形態では、コントローラＢ２０２１がホスト装置２０から入力されるコマンドシーケンスにより移行動作及び復帰動作を制御することにより、コントローラＢ２０２１の誤動作を回避することを可能にする。具体的には、ＮＡＮＤ単体テストを実行する場合、ホスト装置２０は、メモリカード２００の電源投入後、移行動作を指示するコマンドシーケンスを発行する。コントローラＢ２０２１は、当該コマンドシーケンス受け付けることより動作モードを第２モードに設定し、ホスト装置２０から復帰動作を指示するコマンドシーケンスが発行されるまで第２モードを維持する。
このようにコマンドシーケンスを用いることにより、コントローラＢ２０２１が第２モード中に意図しない復帰動作を実行することを回避できる。
【０１０４】
更に、ホスト装置２０は、第１モードにおいて、消去ブロックサイズが１６ｋＢｙｔｅに設定されているＮＡＮＤフラッシュメモリ４を使用することを前提として、１６ｋＢｙｔｅ単位で論理アドレス及び物理アドレスの割り当てを行う。ホスト装置２０は、第１モードにおいて、論理アドレス１６ｋＢｙｔｅ分に関してシーケンシャルに書き込みアクセス又は読み出しアクセスを行うため、該当するコマンドを発行する。なお、以下の説明において使用する用語「論理ブロックアドレス」及び「物理ブロックアドレス」は、それぞれ、ＮＡＮＤフラッシュメモリ４内のブロック自体に割り当てられる論理アドレス、物理アドレスを意味するものである。また、「論理アドレス」、「物理アドレス」は、主に、ブロック自体の論理アドレス、物理アドレスを意味するものであるが、ブロック単位よりも細かい分解能の単位に相当するアドレスである場合もあり得る。
【０１０５】
また、ホスト装置２０は、メモリカード２００内部の物理状態、例えば、何処の物理ブロックアドレスに、何番番目の論理セクタアドレスデータが含まれているか、あるいは何処のブロックが消去状態であるか等を管理し、メモリカード２００内のＮＡＮＤフラッシュメモリ４を直接制御するものとして構築されている。
【０１０６】
消去ブロックサイズが１６ｋＢｙｔｅに設定されているＮＡＮＤフラッシュメモリ４を使用することを想定してホスト装置２０が動作する場合、ＮＡＮＤフラッシュメモリ４の実際の消去ブロックサイズは２５６ｋＢｙｔｅであるため、メモリカード２００は正常に応答できずに誤動作することになる。
【０１０７】
このメモリカード２００の誤動作を回避するため、コントローラＢ２０２１は、第１モードにおいて、ホスト装置２０がＮＡＮＤフラッシュメモリ４の消去ブロックサイズよりも小さい消去ブロックサイズを想定して発行するコマンドシーケンスを処理し、ＮＡＮＤフラッシュメモリ４に対する書き込み、読み出し、及び消去の各動作を制御する。
【０１０８】
図２７を用いて、ホスト装置２０が想定しているＮＡＮＤフラッシュメモリと、実際に使用するＮＡＮＤフラッシュメモリ４とのデータ配置の差異を説明する。
【０１０９】
ホスト装置２０が想定しているＮＡＮＤフラッシュメモリでは、各ページが５１２Ｂｙｔｅ分のデータ記憶部と、１６Ｂｙｔｅ分の冗長部とからなる５２８Ｂｙｔｅの記憶容量を有しており、３２ページ分が１つの消去単位（１６ｋＢｙｔｅ＋０．５ｋＢｙｔｅ）となる。以下では、説明の便宜上、このようなページ構成のＮＡＮＤフラッシュメモリを搭載したメモリカードを「小ブロックカード」と称する場合がある。
【０１１０】
一方、実際に使用するＮＡＮＤフラッシュメモリ４では、各ページは、例えば、５１２Ｂｙｔｅ分のデータ記憶部が４つと、１０Ｂｙｔｅ分の冗長部が４つと、２４Ｂｙｔｅ分の管理データ記憶部とからなる２１１２Ｂｙｔｅの記憶容量を有しており、１２８ページ分が１つの消去単位（２５６ｋＢｙｔｅ＋８ｋＢｙｔｅ）となる。以下では、説明の便宜上、このようなページ構成のＮＡＮＤフラッシュメモリ４を搭載したメモリカード２００を「大ブロックカード」と称する場合がある。
【０１１１】
また、図２７に示すように、ホスト装置２０が想定しているＮＡＮＤフラッシュメモリ及び実際に使用するＮＡＮＤフラッシュメモリ４は、ＮＡＮＤフラッシュメモリへのデータ入出力を行うためのページバッファ４０１，４０２をそれぞれ備えている。ホスト装置２０が想定しているＮＡＮＤフラッシュメモリに備えられるページバッファ４０１の記憶容量は、５２８Ｂｙｔｅ（５１２Ｂｙｔｅ＋１６Ｂｙｔｅ）である。一方、実際に使用するＮＡＮＤフラッシュメモリ４に備えられるページバッファ４０２の記憶容量は、２１１２Ｂｙｔｅ（２０４８Ｂｙｔｅ＋６４Ｂｙｔｅ）である。データ書き込み等の際には、ＮＡＮＤフラッシュメモリに対するデータ入出力は、各ページバッファ４０１，４０２の記憶容量に相当する１ページ単位で実行される。
【０１１２】
上述したように、ホスト装置２０が想定しているＮＡＮＤフラッシュメモリと実際に使用するＮＡＮＤフラッシュメモリ４は、ページ構成が異なるため、コントローラＢ２０２１は、ホスト装置２０がＮＡＮＤフラッシュメモリ４にアクセス可能とするための各種処理を実行する。
【０１１３】
ホスト装置２０及びメモリカード２００内のコントローラＢ２０２１の各機能構成例を図２８に示す。ホスト装置２０は、ホスト装置２０側のＲＯＭ（図示せず）等に格納されたプログラムをＣＰＵ（図示せず）等にて実行することにより、図２８に示すアプリケーション処理部７１、ファイルシステム部７２、ドライバ部７３、及び物理アクセス部７４の各機能を実現する。
【０１１４】
一方、コントローラＢ２０２１は、例えば、ＲＯＭ３６に格納された制御プログラムをＣＰＵ３５にて実行することにより、図２８に示す第１物理アクセス部８１、物理／論理変換部８２、論理／物理変換部８３、及び第２物理アクセス部８４の各機能を実現する。
【０１１５】
ホスト装置２０側のアプリケーション処理部７１がファイルの書き込みをファイルシステム部７２に要求すると、ファイルシステム部７２は、小ブロックカードの論理ブロックアドレスに基づきシーケンシャルなセクタ書き込みをドライバ部７３に指示する。これを受けて、ドライバ部７３は、小ブロックカードの論理ブロックアドレスに基づく１６ｋＢｙｔｅ毎のシーケンシャルな書き込みを実現するため、論理／物理ブロック変換を行い、物理アクセス部７４を通じて、小ブロックカードの物理ブロックアドレスによるランダムな書き込みコマンドを大ブロックカードに対して発行し、データ転送を行う。
【０１１６】
書き込みアクセスにおいては、小ブロックカードの場合も大ブロックカードの場合も、プロトコル上、（１）コマンド、（２）ページアドレス（ロウアドレス）、（３）カラムアドレス、（４）データ、（５）プログラム確認コマンド、といった順序で情報の授受が行われる。
【０１１７】
コントローラＢ２０２１側の第１物理アクセス部８１は、ホスト装置２０から小ブロックカードの物理ブロックアドレスによる書き込みコマンドを受け付けると、物理ブロックアドレスやデータのほか、これに付随する付随データに含まれている論理ブロックアドレスを取得する。
【０１１８】
物理／論理変換部８２は、データ読み出しの際に小ブロックカードの物理ブロックアドレス（１６ｋＢｙｔｅ分に対応）から小ブロックカードの論理ブロックアドレス（１６ｋＢｙｔｅ分に対応）への変換処理を行うための第１テーブルを作成する。第１テーブルは、バッファＲＡＭ３２の第１テーブル格納領域３２１に格納される。物理／論理変換部８２は、第１物理アクセス部８１が書き込みコマンドを受け付けて小ブロックカードの論理ブロックアドレスを取得したときに、その論理ブロックアドレスを第１テーブルに反映させる。また、物理／論理変換部８２は、物理ブロックアドレスに関しても第１テーブルに反映させる。
【０１１９】
論理／物理変換部８３は、データ読み出しの際に小ブロックカードの論理ブロックアドレス（シーケンシャルな１６ｋＢｙｔｅ×１６個分に対応）から大ブロックカードの物理ブロックアドレス（２５６ｋＢｙｔｅ物理ブロック分に対応）への変換処理を行うための第２テーブルを作成する。第２テーブルは、バッファＲＡＭ３２の第２テーブル格納領域３２２に格納される。論理／物理変換部８３は、第１物理アクセス部８１が書き込みコマンドを受け付けて小ブロックカードの論理ブロックアドレスを取得したときに、その論理ブロックアドレスを第２テーブルに反映させる。
【０１２０】
第２物理アクセス部８４は、第１物理アクセス部８１が書き込みコマンドを受け付けて取得した小ブロックカードの論理ブロックアドレスに基づき、ＮＡＮＤフラッシュメモリ４内部のデータ配置を決定し、２５６ｋＢｙｔｅ物理ブロック内において２ｋＢｙｔｅ（１ページ）単位でシーケンシャルに１６ｋＢｙｔｅ分のデータを書き込む。また、第２物理アクセス部８４は、取得した小ブロックカードの論理ブロックアドレスや物理ブロックアドレスをＮＡＮＤフラッシュメモリ４内部における管理データ領域内の所定の領域に格納する。
【０１２１】
このように、ホスト装置２０は小ブロックカードの物理ブロックアドレスに基づくコマンドを発行するため、メモリカード２００側では、小ブロックカードの物理ブロックアドレスに対応するデータが何処の２５６ｋＢｙｔｅ物理ブロックの内に存在するかが分かるように管理する。具体的には、コントローラＢ２０２１は、１６ｋＢｙｔｅブロック毎に小ブロックカードの論理／物理ブロックアドレスの対応関係を管理するともに、小ブロックカードの連続した２５６ｋＢｙｔｅ分の論理ブロックアドレスに対応するデータがメモリカード２００のＮＡＮＤフラッシュメモリ４内の何処の２５６ｋＢｙｔｅ物理ブロックに格納されているかが分かるように管理する。
【０１２２】
次に、図２９を参照してホスト装置２０からメモリカード２００に送られるコマンドのフォーマット例を説明する。ホスト装置２０から送られるコマンドのパケットは、図２９（ａ）に示すように、コマンド種別情報（例えば、書込コマンド）と、アドレス（物理ブロックアドレス）と、データ（コンテンツ等の実データ及び付随データ（５１２Ｂｙｔｅ＋１６Ｂｙｔｅ））といった各種情報を含んでいる。
【０１２３】
このようなフォーマットのパケットでは、図２９（ｂ）に示すように、付随データ１６Ｂｙｔｅ中の所定の位置に小ブロックカードの論理ブロックアドレス（アクセス対象となる１６ｋＢｙｔｅブロックに対応する論理アドレス）が配置されている。メモリカード２００は、ホスト装置２０から送られるコマンドからコマンド種別情報、物理ブロックアドレス、及びデータを取得するほか、特に論理ブロックアドレスを取得する。なお、論理ブロックアドレスは、読み出しコマンドの場合には付加されない。
【０１２４】
次に、図３０を参照して、第１モードにおいて、ホスト装置２０が想定しているブロック書き込み操作と、メモリカード２００が実際に行う書き込み処理とを対比して説明する。
【０１２５】
ホスト装置２０側では、図３０（ａ）に示すように、小ブロックカードの論理アドレスに基づく１６ｋＢｙｔｅブロック単位のシーケンシャルな書き込み操作の発生時に、小ブロックカードの物理ブロックアドレスによる１６ｋＢｙｔｅブロック単位のランダムな書き込み操作が行われる。
【０１２６】
一方、メモリカード２００側では、図３０（ｂ）に示すように、ホスト装置２０から書き込みコマンドを受け付けた場合、小ブロックカードの論理ブロックアドレスに基づく１６ｋＢｙｔｅブロック単位のデータがＮＡＮＤフラッシュメモリ４内にシーケンシャルに書き込まれる。
【０１２７】
上述のように、ホスト装置２０は、小ブロックカードの物理アドレスによる１６ｋＢｙｔｅブロック単位のランダムな書き込み操作を行う。このようなランダムな書き込み操作では、一般に、大ブロック（２５６ｋＢｙｔｅ）の一部のみを書き換える処理が多発する。ＮＡＮＤフラッシュメモリ４では、ブロック単位でしか消去を行えないため、ブロックの一部のみを書き換える場合は、書き換える新データを消去済みの新ブロックに書き込み、新データにより書き換えられる旧ブロックから、書き換えられない残りのデータを新ブロックにコピーする必要がある。
【０１２８】
上記のように、ブロックの一部のみを書き換える処理は、書き換えられないデータのコピー動作（巻き添えデータコピー）を伴うため、ブロックの一部のみを書き換える処理が多発すると、オーバーヘッドが増大することになる。そこで、本第２の実施の形態では、ホスト装置２０側から得られる論理アドレスの順序に従って、メモリカード２００側で物理アドレスを再度割り当てることにより、ブロックの一部のみの書き換えの発生を低減し、オーバーヘッドの増大を抑制可能にしている。
【０１２９】
次に、図３１を参照して、ＮＡＮＤフラッシュメモリ４のブロックフォーマット（消去単位である２５６ｋＢｙｔｅ物理ブロック分）について説明する。
【０１３０】
ＮＡＮＤフラッシュメモリ４では、消去単位である２５６ｋＢｙｔｅ物理ブロックの中に、ホスト装置２０が管理する単位である１６ｋＢｙｔｅに相当するデータを書き込むためのブロック（以下、「ホスト管理ブロック」という）が１６個分含まれている。データ書き込みの際には、小ブロックカードの論理ブロックアドレスの順序に従って個々のデータが配置される。
【０１３１】
各ホスト管理ブロックは、８個のページで構成される。各ページは、５１２Ｂｙｔｅデータ領域を４個分含むと共に、各データ領域に対応する１０Ｂｙｔｅの誤り訂正符号（ＥＣＣ）領域を含んでいる。また、ページ中の最後の５１２Ｂｙｔｅデータ領域（４番目の５１２Ｂｙｔｅデータ領域）の後には、２４Ｂｙｔｅ管理データ領域が設けられる。このため、ページ中の最後の１０ＢｙｔｅＥＣＣ領域は、４番目の５１２Ｂｙｔｅデータ領域と２４Ｂｙｔｅ管理データ領域の両方に対応する構成となっている。
【０１３２】
消去単位である２５６ｋＢｙｔｅの物理ブロックに含まれる１２８個の２４Ｂｙｔｅ管理データ領域のうち、例えば、最後の２４Ｂｙｔｅ管理データ領域には、ホスト装置２０から送られてくるコマンドから取得された物理ブロックアドレスに相当するアドレス情報、及び論理ブロックアドレスに相当するアドレス情報がまとめて格納される。これらのアドレス情報は、上述した第１及び第２テーブルを作成する際に使用される。
【０１３３】
次に、図３２を参照して、第１モードにおいて、メモリカード２００に対してホスト装置２０が書き込みを行う際に、メモリカード２００の入出力（Ｉ／Ｏ）ピン（第１０〜第１７ピンＰ１０〜Ｐ１７）とレディ／ビジー（Ｒ／−Ｂ）ピン（第２ピンＰ２）に入出力される信号例を説明する。
【０１３４】
ホスト装置２０は、メモリカード２００が１６ｋＢｙｔｅの消去ブロックサイズを有する不揮発性メモリであると仮定してメモリカード２００を制御している。このため、メモリカード２００に対する書き込みの際に、ホスト装置２０は、シリアルデータインプットコマンド“８０Ｈ”をＩ／Ｏピン（第１０〜第１７ピンＰ１０〜Ｐ１７）へ入力する。次に、ホスト装置２０は、カラムアドレス“Ｃ／Ａ”及びページアドレス“Ｐ／Ａ”をＩ／Ｏピン（第１０〜第１７ピンＰ１０〜Ｐ１７）へ入力する。なお、ここで、カラムアドレス“Ｃ／Ａ”及びページアドレス“Ｐ／Ａ”は、ホスト装置２０がメモリカード２００に対して想定している仮想物理アドレス空間におけるカラムアドレス及びページアドレスである。
【０１３５】
更に、ホスト装置２０は、書き込みデータを、Ｉ／Ｏピン（第１０〜第１７ピンＰ１０〜Ｐ１７）の各々に対して５２８回入力する。具体的には、ホスト装置２０は、ライト・イネーブルピン（第７ピンＰ７）への入力信号を５２８回クロッキングしながら、それぞれのＩ／Ｏピン（第１０〜第１７ピンＰ１０〜Ｐ１７）に対し５２８ビット（全てのＩ／Ｏピン合計で５２８Ｂｙｔｅ）のデータを順次シフトインする。データのシフトインが完了すると、ホスト装置２０は、プログラムコマンド“１０Ｈ”をＩ／Ｏピン（第１０〜第１７ピンＰ１０〜Ｐ１７）へ入力する。これに応答してメモリカード２００は、そのレディ／ビジー（Ｒ／−Ｂ）ピンに“Ｌ”信号を出力し、メモリカード２００がビジー状態であることをホスト装置２０に伝達する。その後、所定期間後にレディ／ビジー（Ｒ／−Ｂ）ピンに“Ｈ”信号を出力することで、メモリカード２００がレディ状態になったことをホスト装置２０に伝達する。
【０１３６】
しかしながら、図３２におけるレディ／ビジー（Ｒ／−Ｂ）ピンの状態は、あくまでもホスト装置２０に対してメモリカード２００がどのような状態かを示すものである。つまり、図３２において、プログラムコマンド“１０Ｈ”の入力に応答して、メモリカード２００のレディ／ビジー（Ｒ／−Ｂ）ピンがビジー状態（つまり、“Ｌ”信号を出力）を示したとしても、メモリカード２００の内部ではＮＡＮＤフラッシュメモリ４に対する書き込み動作（ページバッファ４０１からメモリセルアレイのデータ転送）が実際に行われているとは限らない。また、レディ／ビジー（Ｒ／−Ｂ）ピンがレディ状態に復帰したとしても、メモリカード２００の内部ではＮＡＮＤフラッシュメモリ４に対する書き込み動作が実際に終了しているとは限らない。
【０１３７】
一方、第１モードにおいて、メモリカード２００の内部ではＮＡＮＤフラッシュメモリ４に対して、メモリカード２００内のコントローラＢ２０２１が書き込みを行う際に、ＮＡＮＤフラッシュメモリ４のＩ／Ｏピン１〜８とＲ／−Ｂピンに入出力される信号例を図３３に示す。
【０１３８】
コントローラＢ２０２１は、ＮＡＮＤフラッシュメモリ４が２５６ｋＢｙｔｅの消去ブロックサイズを有する不揮発性メモリであると認識している。コントローラＢ２０２１は、例えば、ＮＡＮＤフラッシュメモリ４に対する書き込みの際には、シリアルデータインプットコマンド“８０Ｈ”をＩ／Ｏピン１〜８へ入力する。次に、コントローラＢ２０２１は、カラムアドレス“Ｃ／Ａ”及びページアドレス“Ｐ／Ａ”をＩ／Ｏピン１〜８へ入力する。なお、ここで、カラムアドレス“Ｃ／Ａ”及びページアドレス“Ｐ／Ａ”は、ＮＡＮＤフラッシュメモリ４の実物理アドレス空間におけるカラムアドレス及びページアドレスである。したがって、図３２におけるカラムアドレス及びページアドレスと、図３３におけるカラムアドレス及びページアドレスは、必ずしも一致していない。
【０１３９】
更に、コントローラＢ２０２１は、書き込みデータを、Ｉ／Ｏピン１〜８の各々に対して２１１２回入力する。具体的には、コントローラＢ２０２１は、ライトイネーブルピンへの入力信号を２１１２回クロッキングしながら、それぞれのＩ／Ｏピン１〜８に対して２１１２ビット（全てのＩ／Ｏピン合計で２１１２Ｂｙｔｅ）のデータを順次シフトインする。データのシフトインが完了すると、コントローラＢ２０２１は、プログラムコマンド“１０Ｈ”をＩ／Ｏピン１〜８へ入力する。これに応答してメモリカード２００は、そのＲ／−Ｂピンに“Ｌ”信号を出力し、メモリカード２００がビジー状態であることをホスト装置２０に伝達する。その後、所定期間後にＲ／−Ｂピンに“Ｈ”信号を出力することで、メモリカード２００がレディ状態になったことをホスト装置２０に伝達する。図３３におけるＲ／−Ｂピンの状態は、コントローラＢ２０２１に対してＮＡＮＤフラッシュメモリ４が実際にどのような状態かを示すものである。
【０１４０】
なお、図３２及び図３３においては、カラムアドレス“Ｃ／Ａ”及びページアドレス“Ｐ／Ａ”の入力を、それぞれ１つのサイクルで示しているが、メモリカード２００の容量又はＮＡＮＤフラッシュメモリ４の容量に応じて、適宜２サイクル以上になる場合もある。
【０１４１】
また、図３２及び図３３においては、第１モードにおける書き込み動作を説明したが、第２モードにおいてはホスト装置２０がメモリカード２００のＮＡＮＤフラッシュメモリ４に対して図３３に示す書き込み動作を直接実行することになる。
【０１４２】
以下、図３４に示すフローチャートを参照して、第２の実施の形態に係るメモリカードテスト方法について説明する。
【０１４３】
まず、ステップＦ１において、コントローラＢ２０２１ではＮＡＮＤ単体テストを実行するか否かが判定される。ＮＡＮＤ単体テストを実行する場合(ステップＦ１：ＹＥＳ)、ステップＦ２に進む。ＮＡＮＤ単体テストを実行しない場合(ステップＦ１：ＮＯ)、ステップＦ５に進む。
【０１４４】
ステップＦ２において、ホスト装置２０は、メモリカード２００に対して移行動作を指示するコマンドシーケンス、例えば、“ＸＸ−ＹＹ−ＺＺ”等を出力する。コントローラＢ２０２１内のＣＰＵ３５は、移行動作を指示するコマンドシーケンスに応じて動作モードを第２モードに設定する。具体的には、ＣＰＵ３５が、アクセス経路設定部２０２２の第１及び第２スイッチＳＷ１，ＳＷ２に切り替え制御信号を供給することによりアクセス経路が設定される。動作モードが第２モードに設定されると、ステップＦ３に進む。
【０１４５】
ステップＦ３において、ホスト装置２０は、ＮＡＮＤ単体テストを実行する。ホスト装置２０は、例えば、書き込みデータと読み出しデータの整合性を確認することで、ＮＡＮＤフラッシュメモリ４に不具合箇所が含まれているかを判定する。この結果、ＮＡＮＤフラッシュメモリ４において、誤ったデータが保持されるビット（フェイルビット）、及び書き込みも読み出しもできないビット（バッドブロック）等の有無が判定される。ＮＡＮＤ単体テストが完了すると、ステップＦ４に進む。
【０１４６】
ステップＦ４において、ホスト装置２０は、メモリカード２００に対して復帰動作を指示するコマンドシーケンスを出力する。復帰動作を指示するコマンドシーケンスがメモリカード２００に伝達されると、ステップＦ５に進む。
【０１４７】
ステップＦ５において、ＣＰＵ３５は、動作モードを第１モードに設定する。
【０１４８】
ステップＦ６において、コントローラＢ２０２１ではコントローラ単体テストを実行するか否かが判定される。コントローラＢ２０２１は、コントローラ単体テストを実行する場合(ステップＦ６：ＹＥＳ)、ステップＦ７に進む。コントローラ単体テストを実行しない場合(ステップＦ６：ＮＯ)、ステップＦ５に戻る。
【０１４９】
ステップＦ７において、ホスト装置２０は、コントローラ単体テストを実行する。一例として、ホスト装置２０がコントローラＢ２０２１に任意のコマンド等を入力し、コントローラＢ２０２１が正常に応答するか等のテストが実行される。コントローラ単体テストが完了すると、ステップＦ８に進む。
【０１５０】
ステップＦ８において、コントローラＢ２０２１ではＮＡＮＤ単体テストを実行するか否かが判定される。ＮＡＮＤ単体テストを実行する場合(ステップＦ８：ＹＥＳ)、ステップＦ２に戻る。ＮＡＮＤ単体テストを実行しない場合(ステップＦ８：ＮＯ)、テスト動作を終了する。
【０１５１】
以上のように、第２の実施の形態のメモリカード２００では、ホスト装置２０から送られてくるコマンドにより移行動作及び復帰動作が制御されるため、メモリカード２００のピン数を増加させることなく第２モードを実現できる。更に、特定のコマンドシーケンスによって第２モードを制御することで、メモリカード２００が書き込み時や読み出し時であると誤認識して誤動作することを回避できる。また、ホスト装置２０が、第２モードにおいて第１モードよりも大きい消去ブロックサイズを取り扱うため、ＮＡＮＤフラッシュメモリ４の単体テストに要する時間を短縮できる。
【０１５２】
また、第２の実施の形態のメモリカード２００では、コントローラＡ２を含むコントローラチップ２０１と、コントローラＢ２０２１及びＮＡＮＤフラッシュメモリ４を含むメモリチップ２０２として構成した。このように構成することにより、メモリチップ２０２を交換するだけで、コントローラＢ２０２１に変更を加えずに異なるブロックサイズや信頼性を持ったＮＡＮＤフラッシュメモリに置き換えることが可能になる。
【０１５３】
なお、上記第２の実施の形態では、メモリカード２００がホスト装置２０から送られてくるコマンドによりアクセス経路設定部２０２２がアクセス経路を設定する場合を示した。この構成に限定するものではなく、例えば、図３５に示すメモリカード２００のように、アクセス経路設定部２０２２が電源投入を検知して、アクセス経路を自動的に設定する構成としても良い。
【０１５４】
上述の図２４に示したコントローラＢ２０２１では、ＣＰＵ３５等の起動中に不具合が発生した場合、第２モードに移行できず、ホスト装置２０は解析（テスト）を進めることができない。このため、電源投入時は自動的に第２モードに設定することでＮＡＮＤ単体テストを実行可能になる。
【０１５５】
アクセス経路設定部２０２２は、図２５及び図２６に示す第１及び第９ピンＰ１，Ｐ９に接地電圧ＧＮＤが印加され、第１８ピンＰ１８に電源電圧Ｖｃｃが印加されると、例えば、電源電圧Ｖｃｃの立ち上がりをトリガとしてアクセス経路を設定する。
【０１５６】
メモリカード２００の電源投入時に自動的に設定された第２モードから第１モードに復帰する際には、復帰動作を指示するコマンドシーケンスに限らず、復帰動作を指示するコマンド、例えば、“ＦＦＨ”コマンドを使用すれば良い。すなわち、図３５に示すコントローラＢ２０２１は、コマンド及びコマンドシーケンスのいずれによっても復帰動作を実行可能である。但し、図２４に示すコントローラＢ２０２１と同様に、移行動作を指示するコマンドシーケンスによって第２モードが設定された場合、復帰動作を指示するコマンドシーケンスでなければ第１モードに復帰できないものとする。
【０１５７】
以下、図３６に示すフローチャートを参照して、図３５に示したコントローラＢ２０２１によるメモリカードテスト方法を説明する。但し、図３４に示したメモリカードテスト方法と重複する処理については同一のステップ符号を付して、その説明を省略する。
【０１５８】
まず、ステップＧ１において、メモリカード２００がホスト装置２０の図示しないカードスロットに挿入され、ホスト装置２０からメモリカード２００に電源が供給される。メモリカード２００に電源が供給されると、コントローラＢ２０２１内のアクセス経路設定部２０２２によりアクセス経路が自動的に設定されて、動作モードが第２モードに自動的に設定される。
【０１５９】
ステップＦ１において、コントローラＢ２０２１では、ＮＡＮＤ単体テストを実行するか否かが判定される。ＮＡＮＤ単体テストを実行する場合(ステップＦ１：ＹＥＳ)、ステップＦ２に進む。ＮＡＮＤ単体テストを実行しない場合(ステップＦ１：ＮＯ)、ステップＦ５に進む。
【０１６０】
ステップＧ２においては、復帰動作を指示するコマンドがホスト装置２０からメモリカード２００へ入力される。復帰動作を指示するコマンドがホスト装置２０からメモリカード２００へ入力されると、ステップＦ５に進む。
【０１６１】
ステップＦ２〜ステップＦ８の各処理は、図３４と同様に実行される。
【０１６２】
以上のように、図３５に示したコントローラＢ２０２１の構成によれば、電源投入直後は自動的に第２モードに設定することにより、コントローラＢ２０２１に異常があった場合でもＮＡＮＤ単体テストが実行可能になる。
【０１６３】
（第３の実施の形態）
本第３の実施の形態では、上記第１の実施の形態に示したメモリカード１をパッケージ化する際の構成を例示する。図３７は、本第３の実施の形態に係るメモリカード３００をパッケージ化した際の構成を示す断面図である。なお、図３７において、上記第１の実施の形態において図１に示したメモリカード１と同一の構成部分には同一の符号を付している。
【０１６４】
図３７において、７０は基板である。この基板７０上には、層間膜７１を介して上記ＮＡＮＤフラッシュメモリ４が形成されている。ＮＡＮＤフラッシュメモリ４上には、上記コントローラＡ２及び上記コントローラＢ３がそれぞれ層間膜７１を介して形成されている。基板７０、ＮＡＮＤフラッシュメモリ４、及びコントローラＢ３において、図中左端部の各上面にはボンディングワイヤ７２を接続するためのパッド７３〜７５が形成されている。また、コントローラＢ３の図中右端部の上面と、コントローラＡ２の図中左端部の上面には、ボンディングワイヤ７２を接続するためのパッド７６，７７がそれぞれ形成されている。また、基板７０の図中左端部の下面側には、上記図２５に示した第１〜第１８ピンＰ１〜Ｐ１８に対応する外部接続ピン７８が形成されている。
【０１６５】
図３８は、本第３の実施の形態に係るメモリカード３００をパッケージ化した際の他の構成を示す断面図である。なお、図３８において、上記第１の実施の形態において図１に示したメモリカード１と同一の構成部分と、図３７に示した構成と同一の構成部分には同一の符号を付しており、その説明を省略する。
【０１６６】
図３８において、ＮＡＮＤフラッシュメモリ４上には、コントローラＢ３が層間膜７１を介して形成されている。コントローラＢ３上には、コントローラＡ２が層間膜７１を介して形成されている。基板７０、ＮＡＮＤフラッシュメモリ４、コントローラＢ３、及びコントローラＡ２において、図中左端部の各上面にはボンディングワイヤ７２を接続するためのパッド７３〜７５，７７がそれぞれ形成されている。
【０１６７】
上記図３７及び図３８に示した各パッケージの断面図は、ＮＡＮＤフラッシュメモリ４上にコントローラＢ３及びコントローラＡ２を積層して形成した場合を例示したものである。図３７及び図３８に示した各メモリカード３００は、ＮＡＮＤフラッシュメモリ４上にコントローラＢ３及びコントローラＡ２を積層し、ボンディングワイヤ７２を接続した後、外部接続ピン７８を除く全体が樹脂等により封止される。
【０１６８】
上述のように、積層構造とすることにより、実質的にＮＡＮＤフラッシュメモリ４を実装可能な基板７０の大きさでメモリカード３００を形成することができ、メモリカード３００としてのパッケージの大きさを縮小することが可能になる。
【０１６９】
図３９は、本第３の実施の形態に係るメモリカードをパッケージ化した際の他の構成を示す断面図である。なお、図３９において、上記第１の実施の形態において図１に示したメモリカード１と同一の構成部分と、図３７に示した構成と同一の構成部分には同一の符号を付しており、その説明を省略する。
【０１７０】
図３９において、メモリカード４００の基板７０上には、ＮＡＮＤフラッシュメモリ４、コントローラＢ３、及びコントローラＡ２がそれぞれ層間膜７１を介して形成されている。コントローラＢ３の図中左端部の上面にはボンディングワイヤ７２を接続するためのパッド７５が形成されている。また、コントローラＢ３の図中右端部の上面と、コントローラＡ２の図中左端部の上面には、ボンディングワイヤ７２を接続するためのパッド７６，７７がそれぞれ形成されている。また、コントローラＡ２の図中右端部の上面と、ＮＡＮＤフラッシュメモリ４の図中左端部の上面には、ボンディングワイヤ７２を接続するためのパッド８１，８２がそれぞれ形成されている。
【０１７１】
図３９に示したメモリカード４００は、基板７０上にＮＡＮＤフラッシュメモリ４、コントローラＢ３、及びコントローラＡ２を形成し、ボンディングワイヤ７２を接続した後、外部接続ピン７８を除く全体が樹脂等により封止される。
【０１７２】
上記図３９に示したパッケージの断面図は、ＮＡＮＤフラッシュメモリ４、コントローラＢ３、及びコントローラＡ２を基板７０上に配置した場合を例示したものである。このような構造とすることにより、ＮＡＮＤフラッシュメモリ４の世代を変更する際に、ＮＡＮＤフラッシュメモリ４やコントローラＢ３の交換が容易になる。
【０１７３】
なお、上記図３７〜図３９に示した各パッケージの構成は、メモリカード１，２００に対応するものとして示したが、メモリカード以外に、例えば、マルチチップパッケージ（ＭＣＭ）、システム・イン・パッケージ（ＳｉＰ）等としても適用可能である。
【０１７４】
（第４の実施の形態）
本第４の実施の形態では、上記第３の実施の形態において例示したパッケージをＵＳＢ（Universal Serial Bus ）メモリとして適用する場合の構成を例示する。図４０は、本第３の実施の形態に係るＵＳＢメモリの構成を示す断面図である。なお、図４０において、上記第３の実施の形態において図３７に示したメモリカードのパッケージ構成と同一の構成部分には同一の符号を付して、その説明を省略する。
【０１７５】
図４０に示すＵＳＢメモリ５００において、５０１は回路基板である。この回路基板５０１の上面側には、電子部品５０２及びＵＳＢコントローラ等の制御チップ５０３が実装されると共に、ＵＳＢコネクタの入出力端子となる導体層５０４が形成されている。また、回路基板５０１の下面側には、上記図３７に示したパッケージ化したメモリカード３００が実装されている。また、５０５はＵＳＢメモリ５００の外装ケースである。
【０１７６】
図４０に示したＵＳＢメモリ５００では、メモリカード３００をそのまま回路基板５０１に実装するようにしたため、ＵＳＢメモリの製造を容易にすることができるとともに、メモリカード３００の利用範囲を拡大することができる。また、ＵＳＢメモリ５００内のＮＡＮＤフラッシュメモリ４の世代を変更する場合に、その世代に合わせて製造されたメモリカード３００を利用して実装することが可能になり、ＵＳＢメモリとしての仕様変更も容易になる。
【０１７７】
なお、本第４の実施の形態では、ＵＳＢメモリ内に図３７に示したメモリカード３００を適用した場合を例示したが、これに限定するものではなく、上記図３８に示したメモリカード３００や図３９に示したメモリカード４００等を適用しても良い。
【０１７８】
（第５の実施の形態）
本第５の実施の形態では、コントローラＢに構成が異なる２つのＮＡＮＤフラッシュメモリを接続し、ホスト装置２０から入力される書込データの書換回数に基づいて、２つのＮＡＮＤフラッシュメモリに対する書込データの記憶先を変更する場合を説明する。図４１は、本第５の実施の形態に係るメモリカードの概略構成を示す図である。なお、図４１において、上記第１の実施の形態において図１に示したメモリカード１と同一の構成部分には同一の符号を付している。
【０１７９】
図４１に示すようにメモリカード６００は、コントローラＡ６０１、コントローラＢ６０２及びＮＡＮＤフラッシュメモリＭ１，Ｍ２を有する。コントローラＡ６０１は、ホストバス１１によりホスト装置２０に接続され、ＮＡＮＤバス６１１によりコントローラＢ６０２に接続されている。コントローラＢ６０２は、ＮＡＮＤバス６１１によりコントローラＡ６０１に接続され、ＮＡＮＤバス６１２によりＮＡＮＤフラッシュメモリＭ１に接続され、ＮＡＮＤバス６１３によりＮＡＮＤフラッシュメモリＭ２に接続されている。ＮＡＮＤフラッシュメモリＭ１は、ＮＡＮＤバス６１２によりコントローラＢ６０２に接続されている。ＮＡＮＤフラッシュメモリＭ２は、ＮＡＮＤバス６１３によりコントローラＢ６０２に接続されている。
【０１８０】
なお、ＮＡＮＤフラッシュメモリＭ１，Ｍ２は、一つのメモリセルに１ビットのデータを記憶する２値メモリであっても良いし、一つのメモリセルに１ビットより多いデータ（例えば、２ビット）を記憶する多値メモリであっても良い。ここでは、不揮発性メモリの例としてＮＡＮＤ型フラッシュメモリを挙げて説明するが、不揮発性メモリはＮＡＮＤ型フラッシュメモリに限らず、例えば、ＮＯＲ型フラッシュメモリ等でもよい。また、２つのＮＡＮＤフラッシュメモリＭ１，Ｍ２を接続する例を示したが、更に複数のＮＡＮＤフラッシュメモリを接続するようにしてもよい。
【０１８１】
ＮＡＮＤフラッシュメモリＭ１，Ｍ２としては、例えば、記憶容量が異なるもの（大容量と小容量）、記憶するデータのビット数がことなるもの（２値と多値）、デザインルールが異なるもの、データのブロックサイズが異なるもの（大ブロックと小ブロック）等の異なる構成のものを用いるものとする。本第５の実施の形態では、ＮＡＮＤフラッシュメモリＭ１として大容量のものを用い、ＮＡＮＤフラッシュメモリＭ２として小容量のものを用いるものとする。一般的に、ＮＡＮＤフラッシュメは、大容量化とチップ面積の縮小を実現するため設計ルールを縮小している。しかし、設計ルールを縮小するに従って、保証されるデータ書換回数が低減する傾向にあり、ＮＡＮＤフラッシュメの信頼性を低下させることが懸念されている。このため、設計ルールが異なる２種類のＮＡＮＤフラッシュメモリを使用して、書換要求される回数が異なるデータに応じて記憶先のＮＡＮＤフラッシュメモリを適宜変更することにより、信頼性の低下を回避することが可能になる。
【０１８２】
以下の説明において使用する用語「論理ブロックアドレス」、「物理ブロックアドレス」は、それぞれ、ＮＡＮＤフラッシュメモリＭ１，Ｍ２内のブロック自体に割り当てられる論理アドレス、物理アドレスを意味するものである。また、「論理アドレス」、「物理アドレス」は、主に、ブロック自体の論理アドレス、物理アドレスを意味するものであるが、ブロック単位よりも細かい分解能の単位に相当するアドレスである場合もあり得る。
【０１８３】
ホスト装置２０は、接続されるメモリカード６００に対してアクセスを行うためのハードウェア及びソフトウェアを備えている。ホスト装置２０は、メモリカード６００内部の物理状態（何処の物理ブロックアドレスに、何番目の何番目の論理セクタアドレスデータが含まれているか、或いは、何処のブロックが消去状態であるか）を管理し、メモリカード６００内のＮＡＮＤフラッシュメモリＭ１，Ｍ２を直接制御するものとして構築されている。
【０１８４】
また、ホスト装置２０は、消去時の消去ブロックサイズが１６ｋＢｙｔｅに定められているＮＡＮＤフラッシュメモリ（ＮＡＮＤフラッシュメモリＭ１，Ｍ２を限定するものではない）を使用することを前提として、１６ｋＢｙｔｅ単位で論理・物理アドレスの割り当てを行う。すなわち、ホスト装置２０は、多くの場合、論理アドレス１６ｋＢｙｔｅ分に関してシーケンシャルにライトアクセス又はリードアクセスを行う（該当するコマンドを発行する）。    
【０１８５】
メモリカード６００は、ホスト装置２０に接続されたときに電源供給を受けて動作し、ホスト装置２０からのアクセスに応じた処理を行う。コントローラＡ６０１は、図４２に示すように、ホストインターフェース（以下、ホストＩ／Ｆという）６２１、バッファＲＡＭ６２２、ＮＡＮＤインターフェース（以下、ＮＡＮＤ＿Ｉ／Ｆという）６２３、ＣＰＵ（Central Processing Unit）６２４、及びＲＯＭ（Read Only Memory）６２５を有する。    
【０１８６】
ホストＩ／Ｆ６２１は、ホストバス１１に接続され、ホスト装置２０とバッファＲＡＭ６２２及びＣＰＵ６２４との間のインターフェース処理を行う。ＮＡＮＤ＿Ｉ／Ｆ６２３は、ＮＡＮＤバス６１１に接続され、コントローラＢ６０２とバッファＲＡＭ６２２及びＣＰＵ６２４との間のインターフェース処理を行う。
【０１８７】
バッファＲＡＭ６２２は、ホスト装置２０から入力されるデータをＮＡＮＤフラッシュメモリＭ１，Ｍ２に書き込む際に、一定量のデータ（例えば、１ページ分）を一時的に記憶し、ＮＡＮＤフラッシュメモリＭ１，Ｍ２から読み出されるデータをホスト装置２０に出力する際に、一定量のデータを一時的に記憶する。また、バッファＲＡＭ６２２は、ＣＰＵ６２４の作業領域として使用され、制御プログラム等を記憶する。
【０１８８】
ＣＰＵ６２４は、メモリカード６００全体の動作を制御するものである。ＣＰＵ６２４は、例えば、メモリカード６００が電源供給を受けた際に、ＲＯＭ６２５内に格納されているファームウェア（後述する制御プログラム）をバッファＲＡＭ６２２にロードして所定の処理を実行することにより、ホスト装置２０から書込コマンド、読出コマンド、消去コマンドを受けてＮＡＮＤフラッシュメモリＭ１，Ｍ２内の該当領域に対するアクセス処理をコントローラＢ６０２との間で実行し、バッファＲＡＭ６２２を通じたデータ転送処理を制御する。
【０１８９】
ＲＯＭ６２５は、ＣＰＵ６２４により使用される制御プログラム等を格納するメモリである。なお、コントローラＡ６０１は、ＮＡＮＤバス６１１によりコントローラＢ６０２と接続されており、ＣＰＵ６２４は、コントローラＢ６０２をＮＡＮＤフラッシュメモリＭ１，Ｍ２であるものとして各種の処理を実行する。すなわち、ＣＰＵ６２４は、ホスト装置２０から書込コマンド、読出コマンド、消去コマンドを受け付けた際に、コントローラＢ６０２に対して書込コマンド、読出コマンド、消去コマンドを転送する処理を実行する。
【０１９０】
コントローラＢ６０２は、図４３に示すように、ＮＡＮＤ＿Ｉ／Ｆ６３１、バッファＲＡＭ６３２、ＥＣＣ（Error Correcting Code）回路６３３、ＮＡＮＤ＿Ｉ／Ｆ６３４，６３５、ＣＰＵ６３６、ＲＯＭ６３７、及びカウンタ６３８を有する。
【０１９１】
ＮＡＮＤ＿Ｉ／Ｆ３１は、ＮＡＮＤバス１２に接続され、コントローラＡ２とバッファＲＡＭ３２及びＣＰＵ３５との間のインターフェース処理を行う。ＮＡＮＤ＿Ｉ／Ｆ３４は、ＮＡＮＤバス１３に接続され、ＮＡＮＤフラッシュメモリ４とＥＣＣ回路３３及びＣＰＵ３５との間のインターフェース処理を行う。
【０１９２】
バッファＲＡＭ６３２は、コントローラＡ６０１から入力されるデータをＮＡＮＤフラッシュメモリＭ１，Ｍ２に書き込む際に、一定量のデータ（例えば、１ページ分）を一時的に記憶し、ＮＡＮＤフラッシュメモリＭ１，Ｍ２から読み出されるデータをコントローラＡ６０１に出力する際に、一定量のデータを一時的に記憶する。また、バッファＲＡＭ６３２は、ＣＰＵ６３６の作業領域として使用され、制御プログラムや各種のテーブル等を記憶する。
【０１９３】
ＥＣＣ回路６３３は、ＮＡＮＤフラッシュメモリＭ１，Ｍ２に書き込む書込データに付加されたＥＣＣデータに基づく当該書込データの誤り訂正処理、ＮＡＮＤフラッシュメモリＭ１，Ｍ２から読み出される読出データに対してＥＣＣデータを付加する処理等を行う。
【０１９４】
ＣＰＵ６３６は、ＮＡＮＤフラッシュメモリＭ１，Ｍ２に対するアクセス処理を制御するものである。ＣＰＵ６３６は、例えば、メモリカード６００が電源供給を受けた際に、ＲＯＭ６３７内に格納されているファームウェアをバッファＲＡＭ６３２にロードして所定の処理を実行する。ＣＰＵ６３６は、所定の処理において、後述する各種のテーブルをバッファＲＡＭ６３２上で作成し、コントローラＡ６０１から書込コマンド、読出コマンド、消去コマンドを受け付けてＮＡＮＤフラッシュメモリＭ１，Ｍ２内の該当領域に対するアクセス処理を実行し、バッファＲＡＭ６３２を通じたデータ転送処理を実行する。
【０１９５】
ＲＯＭ６３７は、ＣＰＵ６３６により使用される制御プログラムと書込制御プログラム等を格納するメモリである。なお、コントローラＢ６０２は、ＮＡＮＤバス６１１によりコントローラＡ６０１と接続されており、ＣＰＵ６３６は、コントローラＡ６０１に対してＮＡＮＤフラッシュメモリＭ１，Ｍ２であるものとして処理を実行する。すなわち、ＣＰＵ６３６は、コントローラＡ６０１から書込コマンド、読出コマンド、消去コマンドを受け付けた際に、ＮＡＮＤフラッシュメモリＭ１，Ｍ２内の該当領域に対するアクセス処理を実行する。また、ＣＰＵ６３６は、コントローラＡ６０１から書込コマンドと書込データを受け付けた際に、書込制御プログラムに応じた書込処理（図４５に示すフローチャート参照）を実行する。
【０１９６】
カウンタ６３８は、上記書込処理において書込データの書込論理ブロックアドレスＬＢＡ毎に書換回数ｎをカウントするものである。カウンタ６３８は、ＣＰＵ６３６の制御下で書込データの書込論理ブロックアドレスＬＢＡ毎に書換回数ｎをカウントアップし、カウントアップした書換回数ｎをＣＰＵ６３６に出力する。
【０１９７】
図４４は、コントローラＢ６０２の上記書込処理に関わる構成を示す図である。なお、図４４において図４３に示したコントローラＢ６０２内の構成と同一の構成部分には同一符号を付している。図４４に示すようにコントローラＢ６０２は、バッファＲＡＭ６３２内に書換回数ｎに基づいてＮＡＮＤフラッシュメモリＭ１，Ｍ２に対して記憶先を変更する書込データの論理ブロックアドレスＬＢＡと物理ブロックアドレスＰＢＡを記憶する領域として第１データＬＢＡ・ＰＢＡ記憶部Ｍ１Ｐと第２データＬＢＡ・ＰＢＡ記憶部Ｍ２Ｐを設けている。第１データＬＢＡ・ＰＢＡ記憶部Ｍ１Ｐは、書換回数ｎが少ないデータ（以下、第１データという）の書換回数ｎと論理ブロックアドレスＬＢＡと物理ブロックアドレスＰＢＡとを、書込論理ブロックアドレスブロック（以下、書込ＬＢＡブロックという）毎に記憶する領域である。第２データＬＢＡ・ＰＢＡ記憶部Ｍ２Ｐは、書換回数ｎが多いデータ（以下、第２データという）の書換回数ｎと論理ブロックアドレスＬＢＡと物理ブロックアドレスＰＢＡとを、書込ＬＢＡブロック毎に記憶する領域である。
【０１９８】
図４４に示すように、ＮＡＮＤフラッシュメモリＭ１は第１データ記憶部とし、ＮＡＮＤフラッシュメモリＭ２は第２データ記憶部とする。したがって、ＮＡＮＤフラッシュメモリＭ１に記憶した第１データの論理ブロックアドレスＬＢＡと物理ブロックアドレスＰＢＡを第１データＬＢＡ・ＰＢＡ記憶部Ｍ１Ｐに記憶し、ＮＡＮＤフラッシュメモリＭ２に記憶した第２データの論理ブロックアドレスＬＢＡと物理ブロックアドレスＰＢＡを第２データＬＢＡ・ＰＢＡ記憶部Ｍ２Ｐに記憶する。
【０１９９】
次に、図４５に示すフローチャートを参照して、コントローラＢ６０２において実行される書込処理について説明する。
【０２００】
ＣＰＵ６３６は、ホスト装置２０側からコントローラＡ６０１を経由して書き込み要求コマンドと書込データを受けると（ステップＧ１）、この書き込み要求コマンドに付加された付加データに含まれている論理ブロックアドレスＬＢＡを取得する。次いで、ＣＰＵ６３６は、取得した論理ブロックアドレスＬＢＡが第１データＬＢＡ・ＰＢＡ記憶部Ｍ１Ｐに登録されているか否かを確認する(ステップＧ２)。ＣＰＵ６３６は、第１データＬＢＡ・ＰＢＡ記憶部Ｍ１Ｐに登録されていることを確認すると(ステップＧ２：ＹＥＳ)、当該書込論理ブロックアドレス（以下、書込ＬＢＡという）の書換回数ｎをカウンタ６３８によりカウントアップする(ステップＧ３)。
【０２０１】
次いで、ＣＰＵ６３６は、第１データＬＢＡ・ＰＢＡ記憶部Ｍ１Ｐ内に当該書込ＬＢＡが登録されている書込ＬＢＡブロック内の書換回数ｎの最大値ｎｍａｘと最小値ｎｍｉｎの差分ｎｄ１を算出する(ステップＧ４)。次いで、ＣＰＵ６３６は、差分ｎｄ１が基準値Ｎ１（第１データの書換回数を判定する値）より大きいか否かを判定する（ｎｄ１＞Ｎ１）(ステップＧ５)。差分ｎｄ１が基準値Ｎ１より大きい場合(ステップＧ５：ＹＥＳ)、ＣＰＵ６３６は、当該書込ＬＢＡの登録先を第１データＬＢＡ・ＰＢＡ記憶部Ｍ１Ｐから第２データＬＢＡ・ＰＢＡ記憶部Ｍ２Ｐに変更する(ステップＧ６)。
【０２０２】
次いで、ＣＰＵ６３６は、当該書込データを第２データとして記憶先をＮＡＮＤフラッシュメモリＭ１からＮＡＮＤフラッシュメモリＭ２に変更する(ステップＧ７)。この時、ＣＰＵ６３６は、第２データを記憶したＮＡＮＤフラッシュメモリＭ２内の書込物理アドレス（以下、書込ＰＢＡという）を書込ＬＢＡと対応付けて第２データＬＢＡ・ＰＢＡ記憶部Ｍ２Ｐに登録する(ステップＧ７)。なお、この第２データをＮＡＮＤフラッシュメモリＭ２に記憶する前に、ＥＣＣ回路６３３では書込データに付加されたＥＣＣデータに基づく当該書込データの誤り訂正処理が行われる。次いで、ＣＰＵ６３６は、第１データＬＢＡ・ＰＢＡ記憶部Ｍ１Ｐ内で登録先を変更した書込ＬＢＡの書換回数ｎをリセットする（“０”にする）(ステップＧ８)。
【０２０３】
また、差分ｎｄ１が基準値Ｎ１以下の場合(ステップＧ５：ＮＯ)、ＣＰＵ６３６は、当該書込データ、すなわち、第１データをＮＡＮＤフラッシュメモリＭ１に記憶する(ステップＧ９)。この時、ＣＰＵ６３６は、当該第１データを記憶したＮＡＮＤフラッシュメモリＭ１内の書込ＰＢＡを第１データＬＢＡ・ＰＢＡ記憶部Ｍ１Ｐに登録する。なお、第１データをＮＡＮＤフラッシュメモリＭ１に記憶する前に、ＥＣＣ回路６３３では書込データに付加されたＥＣＣデータに基づく当該書込データの誤り訂正処理が行われる。
【０２０４】
また、ステップＧ２において、当該書込ＬＢＡが第１データＬＢＡ・ＰＢＡ記憶部Ｍ１Ｐに登録されていない場合(ステップＧ２：ＮＯ)、当該書込ＬＢＡは第２データＬＢＡ・ＰＢＡ記憶部Ｍ２Ｐに登録されている。この時、ＣＰＵ６３６は、当該書込ＬＢＡの書換回数ｎをカウンタ６３８によりカウントアップする(ステップＧ１０)。
【０２０５】
次いで、ＣＰＵ６３６は、第２データＬＢＡ・ＰＢＡ記憶部Ｍ２Ｐ内に当該書込ＬＢＡが登録されている書込ＬＢＡブロック内の書換回数ｎの最大値ｎｍａｘと最小値ｎｍｉｎの差分ｎｄ２を算出する(ステップＧ１１)。次いで、ＣＰＵ６３６は、差分ｎｄ２が基準値Ｎ２（第２データの書換回数を判定する値）より小さいか否かを判定する（ｎｄ２＜Ｎ１）(ステップＧ１２)。差分ｎ２が基準値Ｎ２より小さい場合(ステップＧ１１：ＹＥＳ)、ＣＰＵ６３６は、当該書込ＬＢＡの登録先を第２データＬＢＡ・ＰＢＡ記憶部Ｍ２Ｐから第１データＬＢＡ・ＰＢＡ記憶部Ｍ１Ｐに変更する(ステップＧ１４)。
【０２０６】
次いで、ＣＰＵ６３６は、当該書込データを第１データとして記憶先をＮＡＮＤフラッシュメモリＭ２からＮＡＮＤフラッシュメモリＭ１に変更する(ステップＧ１５)。この時、ＣＰＵ６３６は、第１データを記憶したＮＡＮＤフラッシュメモリＭ１内の書込ＰＢＡを書込ＬＢＡと対応付けて第１データＬＢＡ・ＰＢＡ記憶部Ｍ１Ｐに登録する(ステップＧ１５)。なお、この第１データをＮＡＮＤフラッシュメモリＭ１に記憶する前に、ＥＣＣ回路６３３では書込データに付加されたＥＣＣデータに基づく当該書込データの誤り訂正処理が行われる。次いで、ＣＰＵ６３６は、第２データＬＢＡ・ＰＢＡ記憶部Ｍ１Ｐ内で登録先を変更した書込ＬＢＡの書換回数ｎをリセットする（“０”にする）(ステップＧ１６)。
【０２０７】
また、差分ｎｄ２が基準値Ｎ２以上の場合(ステップＧ１２：ＮＯ)、ＣＰＵ６３６は、当該書込データ、すなわち、第２データをＮＡＮＤフラッシュメモリＭ２に記憶する(ステップＧ１３)。この時、ＣＰＵ６３６は、当該第２データを記憶したＮＡＮＤフラッシュメモリＭ２内の書込ＰＢＡを第２データＬＢＡ・ＰＢＡ記憶部Ｍ２Ｐに登録する。なお、第２データをＮＡＮＤフラッシュメモリＭ２に記憶する前に、ＥＣＣ回路６３３では書込データに付加されたＥＣＣデータに基づく当該書込データの誤り訂正処理が行われる。
【０２０８】
以上のように、本第５の実施の形態に係るメモリカード６００では、異なる記憶容量を有する２つのＮＡＮＤフラッシュメモリＭ１，Ｍ２をコントローラＢ６０２に接続し、コントローラＢ６０２により書込データの書換回数ｎに基づいてＮＡＮＤフラッシュメモリＭ１，Ｍ２に対する書込データの記憶先を変更するようにした。この場合、書換回数ｎが少ない第１データを大容量のＮＡＮＤフラッシュメモリＭ１に記憶し、書換回数ｎが多い第２データを小容量のＮＡＮＤフラッシュメモリＭ２に記憶するようにした。また、第１データに関する書換回数ｎの差分ｎｄ１が基準値Ｎ１より大きくなった場合は、第２データとして記憶先をＮＡＮＤフラッシュメモリＭ１からＮＡＮＤフラッシュメモリＭ２に変更するようにした。さらに、第２データに関する書換回数ｎの差分ｎｄ２が基準値Ｎ２より小さくなった場合は、第１データとして記憶先をＮＡＮＤフラッシュメモリＭ２からＮＡＮＤフラッシュメモリＭ１に変更するようにした。
【０２０９】
したがって、メモリカード内に記憶容量が異なる２つのＮＡＮＤフラッシュメモリを搭載した場合、ホスト装置から受け付ける書込データの書換回数に応じて記憶先を動的に変更することが可能になる。例えば、ホスト装置から受け付ける書込データとして、アプリケーションプログラムや画像データ等の書換回数が少ない大容量データ（第１データ）と、ファイルシステム等の書換回数が多い小容量データ（第２データ）を大容量のＮＡＮＤフラッシュメモリＭ１と小容量のＮＡＮＤフラッシュメモリＭ２に振り分けて記憶することが可能になる。その結果、構成が異なる２つのＮＡＮＤフラッシュメモリＭ１，Ｍ２を有効に利用することが可能なメモリカードを提供することが可能になる。
【０２１０】
さらに、ブロック単位でデータの書き込みを行うＮＡＮＤフラッシュメモリＭ１，Ｍ２において、第２データの書き込みに伴うデータ引越動作等を一方のＮＡＮＤフラッシュメモリＭ２に止めることができる。その結果、第２データの書き換え動作に伴うオーバーヘッドの影響を限定的なものとすることが可能になり、メモリカードの性能及び信頼性を向上させることができる。
【０２１１】
なお、本第５の実施の形態に係るメモリカード６００では、記憶容量が異なるＮＡＮＤフラッシュメモリＭ１，Ｍ２をコントローラＢ６０２に接続する場合を示したが、この構成に限定するものではない。例えば、図４６に示すようなメモリカード７００の構成としてもよい。なお、図４６に示すメモリカード７００では、図４１に示したメモリカード６００と同一の構成部分には同一符号を付している。
【０２１２】
図４６に示すメモリカード７００では、コントローラＡ６０１をコントローラチップ７０１とし、コントローラＢ６０２とＮＡＮＤフラッシュメモリＭ１を混載したメモリチップ７０２とし、ＮＡＮＤフラッシュメモリＭ２を別チップとして構成している。
【０２１３】
このように構成することにより、ＮＡＮＤフラッシュメモリＭ２の世代（設計ルール）が変更された際に、ＮＡＮＤフラッシュメモリＭ２のみを交換し、コントローラＢ６０２の制御プログラムを変更するだけで対応可能になり、メモリカード全体の設計に影響を与えずにメモリシステムを更新することが可能になる。
【０２１４】
なお、図４５に示したフローチャートにおいて設定した基準値Ｎ１，Ｎ２は、ＮＡＮＤフラッシュメモリＭ１，Ｍ２の仕様や、メモリカード６００が接続されるホストから入力されるデータの種類等に応じて適宜変更してもよい。要は、基準値Ｎ１，Ｎ２は、第１データと第２データの記憶先がＮＡＮＤフラッシュメモリＭ１，Ｍ２間で変更される回数を低減するように設定すれば良い。
【０２１５】
（第６の実施の形態）
本第６の実施の形態では、コントローラＢに構成が異なる２つのＮＡＮＤフラッシュメモリを接続し、ホスト装置２０から入力される書込データと付加データ（パリティデータ等）を分離し、２つのＮＡＮＤフラッシュメモリに対して書込データと付加データの記憶先を振り分ける場合を説明する。図４７は、本第６の実施の形態に係るメモリカード８００の概略構成を示す図である。なお、図４７において、上記第５の実施の形態において図４１に示したメモリカード６００と同一の構成部分には同一の符号を付している。
【０２１６】
図４７に示すメモリカード８００において、図４１に示したメモリカード６００と異なる構成部分は、コントローラＢ８０２としたことであり、他の構成と構成間の接続関係は同一である。
【０２１７】
なお、ＮＡＮＤフラッシュメモリＭ１，Ｍ２は、一つのメモリセルに１ビットのデータを記憶する２値メモリであっても良いし、一つのメモリセルに１ビットより多いデータ（例えば、２ビット）を記憶する多値メモリであっても良い。ここでは、不揮発性メモリの例としてＮＡＮＤ型フラッシュメモリを挙げて説明するが、不揮発性メモリはＮＡＮＤ型フラッシュメモリに限らず、例えば、ＮＯＲ型フラッシュメモリ等でもよい。また、２つのＮＡＮＤフラッシュメモリＭ１，Ｍ２を接続する例を示したが、更に複数のＮＡＮＤフラッシュメモリを接続するようにしてもよい。
【０２１８】
ＮＡＮＤフラッシュメモリＭ１，Ｍ２としては、例えば、記憶容量が異なるもの（大容量と小容量）、記憶するデータのビット数がことなるもの（２値と多値）、デザインルールが異なるもの、データのブロックサイズが異なるもの（大ブロックと小ブロック）等の異なる構成のものを用いるものとする。本第５の実施の形態では、ＮＡＮＤフラッシュメモリＭ１として大容量のものを用い、ＮＡＮＤフラッシュメモリＭ２として小容量のものを用いるものとする。
【０２１９】
以下の説明において使用する用語「論理ブロックアドレス」、「物理ブロックアドレス」は、それぞれ、ＮＡＮＤフラッシュメモリＭ１，Ｍ２内のブロック自体に割り当てられる論理アドレス、物理アドレスを意味するものである。また、「論理アドレス」、「物理アドレス」は、主に、ブロック自体の論理アドレス、物理アドレスを意味するものであるが、ブロック単位よりも細かい分解能の単位に相当するアドレスである場合もあり得る。
【０２２０】
コントローラＢ８０２は、図４８に示すように、ＮＡＮＤ＿Ｉ／Ｆ６３１、バッファＲＡＭ８０３、ＥＣＣ（Error Correcting Code）回路６３３、データ振分部８０４、ＮＡＮＤ＿Ｉ／Ｆ６３４，６３５、ＣＰＵ８０５、ＲＯＭ８０６、及びアクセス経路設定部８０７を有する。なお、図４８において、上記第５の実施の形態において図４２に示したコントローラＢ６０２と同一の構成部分には同一の符号を付している。同一符号を付した構成部分の説明は省略する。
【０２２１】
バッファＲＡＭ８０３は、コントローラＡ６０１から入力されるデータをＮＡＮＤフラッシュメモリＭ１，Ｍ２に書き込む際に、一定量のデータ（例えば、１ページ分）を一時的に記憶し、ＮＡＮＤフラッシュメモリＭ１，Ｍ２から読み出されるデータをコントローラＡ６０１に出力する際に、一定量のデータを一時的に記憶する。また、バッファＲＡＭ８０３は、ＣＰＵ８０５の作業領域として使用され、制御プログラムや各種のテーブル等を記憶する。さらに、バッファＲＡＭ８０３は、ＮＡＮＤフラッシュメモリＭ１，Ｍ２に振り分けて記憶する実データとＥＣＣデータの記憶先を管理するための実データＬＢＡ・ＰＢＡ記憶部Ｍ１ＰとＥＣＣデータＬＢＡ・ＰＢＡ記憶部Ｍ２Ｐを有する。
【０２２２】
ＣＰＵ８０５は、ＮＡＮＤフラッシュメモリＭ１，Ｍ２に対するアクセス処理を制御するものである。ＣＰＵ８０５は、例えば、メモリカード８００が電源供給を受けた際に、ＲＯＭ８０６内に格納されているファームウェアをバッファＲＡＭ８０３にロードして所定の処理を実行する。ＣＰＵ８０５は、所定の処理において、後述する各種のテーブルをバッファＲＡＭ８０３上で作成し、コントローラＡ６０１から書込コマンド、読出コマンド、消去コマンドを受け付けてＮＡＮＤフラッシュメモリＭ１，Ｍ２内の該当領域に対するアクセス処理を実行し、バッファＲＡＭ８０３を通じたデータ転送処理を実行する。
【０２２３】
ＲＯＭ８０６は、ＣＰＵ８０５により使用される制御プログラムと書込制御プログラム等を格納するメモリである。なお、コントローラＢ８０２は、ＮＡＮＤバス６１１によりコントローラＡ６０１と接続されており、ＣＰＵ６３６は、コントローラＡ６０１に対してＮＡＮＤフラッシュメモリＭ１，Ｍ２であるものとして処理を実行する。すなわち、ＣＰＵ８０５は、コントローラＡ６０１から書込コマンド、読出コマンド、消去コマンドを受け付けた際に、ＮＡＮＤフラッシュメモリＭ１，Ｍ２内の該当領域に対するアクセス処理を実行する。
【０２２４】
また、ＣＰＵ８０５は、コントローラＡ６０１から書込コマンドと書込データを受け付けた際に、書込制御プログラムに応じた書込処理（図５０に示すフローチャート参照）を実行する。さらに、ＣＰＵ８０５は、コントローラＡ６０１から読出コマンドを受け付けた際に、読出制御プログラムに応じた読出処理（図５１に示すフローチャート参照）を実行する。また、ＣＰＵ８０５は、コントローラＡ６０１から消去コマンドを受け付けた際に、消去制御プログラムに応じた消去処理（図５２に示すフローチャート参照）を実行する。
【０２２５】
データ振分部８０４は、ＣＰＵ８０５により書込処理が実行される際に、実データとＥＣＣデータの記憶先をＮＡＮＤフラッシュメモリＭ１，Ｍ２に振り分けて記憶する動作を実行する。また、データ振分部８０４は、ＣＰＵ８０５により読出処理が実行される際に、ＮＡＮＤフラッシュメモリＭ１，Ｍ２から該当する実データとＥＣＣデータを読み出す動作を実行する。
【０２２６】
アクセス経路設定部８０７は、ホスト装置２０がＮＡＮＤフラッシュメモリＭ１，Ｍ２に直接アクセスするアクセス経路を設定する。図４８に示すように、アクセス経路設定部８０７は、ＮＡＮＤ＿Ｉ／Ｆ６３１及びバッファＲＡＭ８０３の間に接続された第１のスイッチＳＷ１と、データ振分部８０４及びＮＡＮＤ＿Ｉ／Ｆ６３４，６３５の間に接続された第２のスイッチＳＷ２及び第３のスイッチＳＷ３を有する。第１〜第３のスイッチＳＷ１〜ＳＷ３は、ＣＰＵ８０５から入力される切り替え制御信号に応じて、ＮＡＮＤ＿Ｉ／Ｆ６３１、バッファＲＡＭ８０３、データ振分部８０４及びＮＡＮＤ＿Ｉ／Ｆ６３４，６３５の接続関係を切り替える。この切り替えにより、書込データ及び読出データ等がバッファＲＡＭ８０３、ＥＣＣ回路３３、データ振分部８０４を迂回し、且つホスト装置２０が発行するコマンド等をＮＡＮＤフラッシュメモリＭ１，Ｍ２に直接伝達できる。
【０２２７】
図４９は、コントローラＢ８０２の上記書込処理に関わる構成を示す図である。なお、図４９において図４８に示したコントローラＢ８０２内の構成と同一の構成部分には同一符号を付している。図４９に示すようにコントローラＢ８０２は、バッファＲＡＭ８０３内にＮＡＮＤフラッシュメモリＭ１，Ｍ２に対して記憶先が振り分けられる実データとＥＣＣデータの各論理ブロックアドレスＬＢＡと物理ブロックアドレスＰＢＡを記憶する領域として実データＬＢＡ・ＰＢＡ記憶部Ｍ１ＰとＥＣＣデータＬＢＡ・ＰＢＡ記憶部Ｍ２Ｐを設けている。実データＬＢＡ・ＰＢＡ記憶部Ｍ１Ｐは、ホスト装置２０から書込要求された書込データから分離されたデータ本体（本第６の実施の形態では実データという）の記憶先の論理ブロックアドレスＬＢＡと物理ブロックアドレスＰＢＡを記憶する領域である。ＥＣＣデータＬＢＡ・ＰＢＡ記憶部Ｍ２Ｐは、実データに付加されるＥＣＣデータ（付加データ）の記憶先の論理ブロックアドレスＬＢＡと物理ブロックアドレスＰＢＡを記憶する領域である。
【０２２８】
図４９に示すように、ＮＡＮＤフラッシュメモリＭ１は実データ記憶部とし、ＮＡＮＤフラッシュメモリＭ２はＥＣＣデータ記憶部とする。したがって、ＮＡＮＤフラッシュメモリＭ１に記憶した実データの論理ブロックアドレスＬＢＡと物理ブロックアドレスＰＢＡを実データＬＢＡ・ＰＢＡ記憶部Ｍ１Ｐに記憶し、ＮＡＮＤフラッシュメモリＭ２に記憶したＥＣＣデータの論理ブロックアドレスＬＢＡと物理ブロックアドレスＰＢＡをＥＣＣデータＬＢＡ・ＰＢＡ記憶部Ｍ２Ｐに記憶する。また、実データＬＢＡ・ＰＢＡ記憶部Ｍ１Ｐは、実データの消去状態を示す消去情報を対応付けて記憶する。ＥＣＣデータＬＢＡ・ＰＢＡ記憶部Ｍ２Ｐは、ＥＣＣデータの消去状態を示す消去情報を対応付けて記憶する。
【０２２９】
次に、図５０に示すフローチャートを参照して、コントローラＢ８０２において実行される書込処理について説明する。
【０２３０】
ＣＰＵ８０５は、ホスト装置２０側からコントローラＡ６０１を経由して書き込み要求コマンドと書込データを受け付けると（ステップＨ１）、この書き込み要求コマンドに付加された付加データに含まれている書込論理ブロックアドレスＬＢＡと書込データに付加されたＥＣＣデータを取り出す（ステップＨ２）。この処理により実データとＥＣＣデータが分離される。
【０２３１】
次いで、ＣＰＵ８０５は、書込論理ブロックアドレスＬＢＡ順に分離した実データとＥＣＣデータをＮＡＮＤフラッシュメモリＭ１，Ｍ２に振り分けて記憶する（ステップＨ３）。この処理に際して、データ振分部８０４は、ＣＰＵ８０５から分離されて入力される実データとＥＣＣデータを、ＣＰＵ８０５から入力される書込論理ブロックアドレスＬＢＡ順にＮＡＮＤフラッシュメモリＭ１，Ｍ２に振り分けて記憶する。なお、この実データをＮＡＮＤフラッシュメモリＭ１に記憶する前に、ＥＣＣ回路６３３では実データに付加されたＥＣＣデータに基づく当該実データの誤り訂正処理が行われる。
【０２３２】
次いで、ＣＰＵ８０５は、実データを記憶したＮＡＮＤフラッシュメモリＭ１内の論理ブロックアドレスＬＢＡと物理ブロックアドレスＰＢＡを実データＬＢＡ・ＰＢＡ記憶部Ｍ１Ｐに記憶し、ＥＣＣデータを記憶したＮＡＮＤフラッシュメモリＭ２内の論理ブロックアドレスＬＢＡと物理ブロックアドレスＰＢＡをＥＣＣデータＬＢＡ・ＰＢＡ記憶部Ｍ２Ｐに記憶する（ステップＨ４）。
【０２３３】
次いで、ＣＰＵ８０５は、ホスト装置２０へ書込処理の完了を通知する（ステップＨ５）。この書込処理の完了通知は、コントローラＢ８０２からコントローラＡ６０１を通じてホスト装置２０に通知される。
【０２３４】
次に、図５１に示すフローチャートを参照して、コントローラＢ８０２において実行される読出処理について説明する。
【０２３５】
ＣＰＵ８０５は、ホスト装置２０側からコントローラＡ６０１を経由して読み出し要求コマンドを受けると（ステップＩ１）、この読み出し要求コマンドに含まれる物理ブロックアドレスＰＢＡを参照する（ステップＩ２）。次いで、ＣＰＵ８０５は、読み出し要求コマンドから参照した物理ブロックアドレスＰＢＡに基づいて、実データＬＢＡ・ＰＢＡ記憶部Ｍ１Ｐを参照して読み出し対象実データの論理ブロックアドレスＬＢＡと物理ブロックアドレスＰＢＡを取得する（ステップＩ３）。
【０２３６】
次いで、ＣＰＵ８０５は、読み出し要求コマンドから参照した物理ブロックアドレスＰＢＡに基づいて、ＥＣＣデータＬＢＡ・ＰＢＡ記憶部Ｍ２Ｐを読み出し対象ＥＣＣデータの論理ブロックアドレスＬＢＡと物理ブロックアドレスＰＢＡを取得する（ステップＩ４）。
【０２３７】
次いで、ＣＰＵ８０５は、ステップＩ３で取得した実データの論理ブロックアドレスＬＢＡと物理ブロックアドレスＰＢＡに対応するＮＡＮＤフラッシュメモリＭ１内の領域から実データを読み出し、ステップＩ４で取得したＥＣＣデータの論理ブロックアドレスＬＢＡと物理ブロックアドレスＰＢＡに対応するＮＡＮＤフラッシュメモリＭ２内の領域からＥＣＣデータを読み出し、ホスト装置２０に返送する（ステップＩ５）。この処理に際して、データ振分部８０４は、ＣＰＵ８０５から入力される実データとＥＣＣデータの各論理ブロックアドレスＬＢＡと各物理ブロックアドレスＰＢＡによりＮＡＮＤフラッシュメモリＭ１，Ｍ２内の各領域から実データとＥＣＣデータを読み出してＥＣＣ回路６３３に出力する。ＥＣＣ回路６３３は、入力された実データにＥＣＣデータを付加してＣＰＵ８０５に出力する。そして、コントローラＢ８０２からコントローラＡ６０１を通じてホスト装置２０に読み出し対象データが返送される。
【０２３８】
次に、図５２に示すフローチャートを参照して、コントローラＢ８０２において実行される消去処理について説明する。
【０２３９】
ＣＰＵ８０５は、ホスト装置２０側からコントローラＡ６０１を経由して消去要求コマンドを受け付けると（ステップＪ１）、この消去要求コマンドに含まれる物理ブロックアドレスＰＢＡを参照する（ステップＪ２）。
【０２４０】
次いで、ステップＪ３において、ＣＰＵ８０５は、消去要求コマンドから参照した物理ブロックアドレスＰＢＡに基づいて、実データＬＢＡ・ＰＢＡ記憶部Ｍ１Ｐ内の対応する実データの論理ブロックアドレスＬＢＡと物理ブロックアドレスＰＢＡの記憶領域に消去状態であることを示す消去情報を記憶する。さらに、ステップＪ３において、ＣＰＵ８０５は、消去要求コマンドから参照した物理ブロックアドレスＰＢＡに基づいて、ＥＣＣデータＬＢＡ・ＰＢＡ記憶部Ｍ２Ｐ内の対応するＥＣＣデータ論理ブロックアドレスＬＢＡと物理ブロックアドレスＰＢＡの記憶領域に消去状態であることを示す消去情報を記憶する。
【０２４１】
次いで、ＣＰＵ８０５は、消去要求された物理ブロックアドレスＰＢＡに対応するＮＡＮＤフラッシュメモリＭ１，Ｍ２内の実データ及びＥＣＣデータの消去は行わず、消去を行った旨をホスト装置２０に通知する（ステップＪ４）。この消去通知は、コントローラＢ８０２からコントローラＡ６０１を通じてホスト装置２０に通知される。
【０２４２】
以上のように、本第６の実施の形態に係るメモリカード８００では、異なる記憶容量を有する２つのＮＡＮＤフラッシュメモリＭ１，Ｍ２をコントローラＢ８０２に接続し、コントローラＢ８０２とデータ振分部８０４によりホスト装置２０から書き込み要求された書込データを実データとＥＣＣデータに分離し、ＮＡＮＤフラッシュメモリＭ１，Ｍ２に対して振り分けて記憶するようにした。
【０２４３】
したがって、メモリカード内に記憶容量が異なる２つのＮＡＮＤフラッシュメモリＭ１，Ｍ２を搭載した場合、ホスト装置から受け付ける書込データを実データとＥＣＣデータに分離してＮＡＮＤフラッシュメモリＭ１，Ｍ２に振り分けて記憶先することが可能になる。その結果、構成が異なる２つのＮＡＮＤフラッシュメモリＭ１，Ｍ２を有効に利用することが可能なメモリカードを提供することが可能になる。
【０２４４】
また、本第６の実施の形態に係るメモリカード８００では、コントローラＢ８０２内にアクセス経路設定部８０７を有する構成とした。このため、上記第２の実施の形態に示したように、メモリカード８００の出荷テスト時において、ホスト装置２０をテスタとしてメモリカード８００と電気的に接続することが可能になる。この場合、コントローラＢ８０２は、ホスト装置２０から受け取ったアドレスを変換し、この変換したアドレスを用いてＮＡＮＤフラッシュメモリＭ１，Ｍ２にアクセスする第１モードと、ホスト装置２０から受け取ったアドレスを用いてＮＡＮＤフラッシュメモリＭ１，Ｍ２に直接アクセスする第２モードとで動作することが可能になる。また、コントローラＢ８０２は、ホスト装置２０から受け取る動作モードの切り替えコマンドに応じて第１モードと第２モードを切り替える切替制御を実行する。
【０２４５】
そして、上記第２の実施の形態に示したように、出荷テスト時において、ホスト装置２０は、メモリカード８００内のコントローラＢ８０２とＮＡＮＤフラッシュメモリＭ１，Ｍ２を個別にテストすることが可能になる。さらに、コントローラＢ８０２は、第１モードから第２モードに移行する移行動作と、第２モードから第１モードに復帰する復帰動作を、ホスト装置２０から受け取るコマンドに応じて制御する構成であるため、メモリカード８００の外部接続ピン数を増加させることなく第２モードを実現することができる。
【０２４６】
また、ＮＡＮＤ単体テストを実行する場合、ホスト装置２０は、メモリカード８００の電源投入後、移行動作を指示するコマンドシーケンスを発行する。コントローラＢ８０２は、当該コマンドシーケンス受け付けることより動作モードを第２モードに設定し、ホスト装置２０から復帰動作を指示するコマンドシーケンスが発行されるまで第２モードを維持する。このようにコマンドシーケンスを用いることにより、コントローラＢ８０２が第２モード中に意図しない復帰動作を実行することを回避できる。
【０２４７】
なお、図４８では、メモリカード８００がホスト装置２０から送られてくるコマンドによりアクセス経路設定部８０７がアクセス経路を設定する場合を示した。この構成に限定するものではなく、例えば、図３５に示したメモリカード２００のように、アクセス経路設定部２０２２が電源投入を検知してアクセス経路を自動的に設定する構成を、メモリカード８００に適用するようにしても良い。この場合、電源投入直後は自動的に第２モードに設定することにより、コントローラＢ８０２に異常があった場合でもＮＡＮＤ単体テストが実行可能になる。
【０２４８】
なお、本第６の実施の形態に係るメモリカード８００では、記憶容量が異なるＮＡＮＤフラッシュメモリＭ１，Ｍ２をコントローラＢ８０２に接続する場合を示したが、この構成に限定するものではない。例えば、図５３に示すようなメモリカード９００の構成としてもよい。なお、図５３に示すメモリカード９００では、図４８に示したメモリカード８００と同一の構成部分には同一符号を付している。
【０２４９】
図５３に示すメモリカード９００では、コントローラＡ６０１をコントローラチップ９０１とし、コントローラＡ６０１にＮＡＮＤバス６１３を介して外部にＮＡＮＤフラッシュメモリＭ１を接続し、コントローラＢ８０２とＮＡＮＤフラッシュメモリＭ２を混載したメモリチップ９０２として構成している。
【０２５０】
このように構成することにより、ＮＡＮＤフラッシュメモリＭ１の世代（設計ルール）が変更された際に、ＮＡＮＤフラッシュメモリＭ１のみを交換し、コントローラＡ６０１の制御プログラムを変更するだけで対応可能になり、メモリカード全体の設計に影響を与えずにメモリシステムを更新することが可能になる。また、ＮＡＮＤフラッシュメモリＭ２の世代（設計ルール）が変更された際に、メモリチップ９０２のみを交換し、コントローラＢ８０２の制御プログラムを変更するだけで対応可能になり、メモリカード全体の設計に影響を与えずにメモリシステムを更新することが可能になる。
【０２５１】
（第７の実施の形態）
本第７の実施の形態では、上記第５の実施の形態に示したメモリカード６００をパッケージ化する際の構成を例示する。図５４は、本第７の実施の形態に係るメモリカード６００をパッケージ化した際の構成を示す断面図である。なお、図５４において、上記第５の実施の形態において図４１に示したメモリカード６００と同一の構成部分には同一の符号を付している。
【０２５２】
図５４において、６５０は基板である。この基板６５０上には、層間膜６５１を介して上記ＮＡＮＤフラッシュメモリＭ１，Ｍ２が積層されている。ＮＡＮＤフラッシュメモリＭ２上には、上記コントローラＡ６０１及び上記コントローラＢ６０２がそれぞれ層間膜６５１を介して形成されている。基板６５０、ＮＡＮＤフラッシュメモリＭ１，Ｍ２、及びコントローラＢ６０２において、図中左端部の各上面にはボンディングワイヤ６５８を接続するためのパッド６５２〜６５５が形成されている。また、コントローラＢ６０２の図中右端部の上面と、コントローラＡ６０１の図中左端部の上面には、ボンディングワイヤ６５８を接続するためのパッド６５６，６５７がそれぞれ形成されている。また、基板６５０の図中左端部の下面側には、上記図２５に示した第１〜第１８ピンＰ１〜Ｐ１８に対応する外部接続ピン６５９が形成されている。
【０２５３】
図５５は、本第７の実施の形態に係るメモリカード６００をパッケージ化した際の他の構成を示す断面図である。なお、図５５において、上記第５の実施の形態において図４１に示したメモリカード６００と同一の構成部分と、図５４に示した構成と同一の構成部分には同一の符号を付しており、その説明を省略する。
【０２５４】
図５５において、ＮＡＮＤフラッシュメモリＭ２上には、コントローラＢ６０２が層間膜６５１を介して形成されている。コントローラＢ６０２上には、コントローラＡ６０１が層間膜６５１を介して形成されている。基板６５０、ＮＡＮＤフラッシュメモリＭ１，Ｍ２、コントローラＢ６０１、及びコントローラＡ６０１において、図中左端部の各上面にはボンディングワイヤ６５８を接続するためのパッド６５２〜６５６がそれぞれ形成されている。
【０２５５】
上記図５４及び図５５に示した各パッケージの断面図は、ＮＡＮＤフラッシュメモリＭ２上にコントローラＢ６０２及びコントローラＡ６０３を積層して形成した場合を例示したものである。図５４及び図５５に示した各メモリカード６００は、ＮＡＮＤフラッシュメモリＭ２上にコントローラＢ６０２及びコントローラＡ６０１を積層し、ボンディングワイヤ６５８を接続した後、外部接続ピン６５９を除く全体が樹脂等により封止される。
【０２５６】
上述のように、積層構造とすることにより、実質的にＮＡＮＤフラッシュメモリＭ１，Ｍ２を実装可能な基板６５０の大きさでメモリカード６００を形成することができ、メモリカード６００としてのパッケージの大きさを縮小することが可能になる。
【０２５７】
図５６は、本第７の実施の形態に係るメモリカードをパッケージ化した際の他の構成を示す断面図である。なお、図５６において、上記第５の実施の形態において図４１に示したメモリカード６００と同一の構成部分と、図５４に示した構成と同一の構成部分には同一の符号を付しており、その説明を省略する。
【０２５８】
図５６において、メモリカード６００の基板６５０上には、ＮＡＮＤフラッシュメモリＭ１、コントローラＢ６０２、及びコントローラＡ６０１がそれぞれ層間膜６５１を介して形成されている。ＮＡＮＤフラッシュメモリＭ１上には、ＮＡＮＤフラッシュメモリＭ２が層間膜６５１を介して形成されている。コントローラＡ６０１の図中左端部の上面にはボンディングワイヤ６５８を接続するためのパッド６５５が形成されている。また、コントローラＡ６０１の図中右端部の上面と、コントローラＢ６０２の図中左端部の上面には、ボンディングワイヤ６５８を接続するためのパッド６５６，６５７がそれぞれ形成されている。また、コントローラＢ６０１の図中右端部の上面と、ＮＡＮＤフラッシュメモリＭ１の図中左端部の上面には、ボンディングワイヤ６５８を接続するためのパッド６６１，６６２がそれぞれ形成されている。さらに、ＮＡＮＤフラッシュメモリＭ２の図中左端部の上面には、ボンディングワイヤ６５８を接続するためのパッド６６３が形成されている。
【０２５９】
図５６に示したメモリカード６００は、基板６５０上にＮＡＮＤフラッシュメモリＭ１，Ｍ２、コントローラＢ６０２、及びコントローラＡ６０１を形成し、ボンディングワイヤ６５８を接続した後、外部接続ピン６５９を除く全体が樹脂等により封止される。
【０２６０】
上記図５６に示したパッケージの断面図は、ＮＡＮＤフラッシュメモリＭ１，Ｍ２、コントローラＢ６０２、及びコントローラＡ６０１を基板６５０上に配置した場合を例示したものである。このような構造とすることにより、ＮＡＮＤフラッシュメモリＭ１，Ｍ２の世代を変更する際に、ＮＡＮＤフラッシュメモリＭ１やコントローラＢ６０２の交換が容易になる。
【０２６１】
なお、上記図５４〜図５６に示した各パッケージの構成は、メモリカード６００に対応するものとして示したが、メモリカード以外に、例えば、マルチチップパッケージ（ＭＣＭ）、システム・イン・パッケージ（ＳｉＰ）等としても適用可能である。
【０２６２】
（第８の実施の形態）
本第８の実施の形態では、上記第７の実施の形態において例示したパッケージをＵＳＢ（Universal Serial Bus ）メモリとして適用する場合の構成を例示する。図５７は、本第８の実施の形態に係るＵＳＢメモリの構成を示す断面図である。なお、図５７において、上記第７の実施の形態において図５４に示したメモリカードのパッケージ構成と同一の構成部分には同一の符号を付して、その説明を省略する。
【０２６３】
図５７に示すＵＳＢメモリ１０００において、１００１は回路基板である。この回路基板１００１の上面側には、電子部品１００２及びＵＳＢコントローラ等の制御チップ１００３が実装されると共に、ＵＳＢコネクタの入出力端子となる導体層１００４が形成されている。また、回路基板１００１の下面側には、上記図５４に示したパッケージ化したメモリカード６００が実装されている。また、１００５はＵＳＢメモリ１０００の外装ケースである。
【０２６４】
図５７に示したＵＳＢメモリ１０００では、メモリカード６００をそのまま回路基板１００１に実装するようにしたため、ＵＳＢメモリの製造を容易にすることができるとともに、メモリカード６００の利用範囲を拡大することができる。また、ＵＳＢメモリ１０００内のＮＡＮＤフラッシュメモリＭ１，Ｍ２の世代を変更する場合に、その世代に合わせて製造されたメモリカード６００を利用して実装することが可能になり、ＵＳＢメモリとしての仕様変更も容易になる。
【０２６５】
なお、本第８の実施の形態では、ＵＳＢメモリ内に図５４に示したメモリカード６００を適用した場合を例示したが、これに限定するものではなく、上記図５５に示したメモリカード６００や図５６に示したメモリカード６００等を適用しても良い。
【０２６６】
また、上記第５〜第８の実施の形態では、本発明のメモリシステムをメモリカードとＵＳＢメモリに適用した場合を示したが、これらに限定するものではない。例えば、複数のＮＡＮＤフラッシュメモリを搭載して、アプリケーションプログラム等により利用することを可能にしたデジタルカメラ、デジタルビデオカメラ、パーソナルコンピュータ等の各種電子機器にも適用可能である。
【図面の簡単な説明】
【０２６７】
【図１】本発明の第１の実施の形態に係るメモリカードの概略構成を示す図である。
【図２】本発明の第１の実施の形態に係るコントローラＡの概略構成を示す図である。
【図３】本発明の第１の実施の形態に係るコントローラＢの概略構成を示す図である。
【図４】本発明の第１の実施の形態に係るホスト装置が想定しているフラッシュメモリと、実際に使用するＮＡＮＤフラッシュメモリとのデータ配置の違いを示す図である。
【図５】本発明の第１の実施の形態に係るホスト側システム及びメモリカード（大ブロックカード）の各コミュニケーション階層を示す図である。
【図６】本発明の第１の実施の形態に係る（ａ）はホスト装置側から送られてくるコマンドのフォーマットと、（ｂ）はメモリカード内部で処理されるコマンドフォーマットとを示す図である。
【図７】本発明の第１の実施の形態に係るホスト装置が想定しているブロック書込操作と、メモリカード（大ブロックカード）側が実際に行う書込処理とを対比して示す図である。
【図８】本発明の第１の実施の形態に係る大ブロックカード内のフラッシュメモリのブロックフォーマット（２５６ｋＢｙｔｅ物理ブロック分）を示す図である。
【図９】本発明の第１の実施の形態に係るコントローラＢ内のバッファＲＡＭ上に作成される各種のテーブルを示す図である。
【図１０】本発明の第１の実施の形態に係る各種テーブルの作成処理の流れを示すフローチャートである。
【図１１】本発明の第１の実施の形態に係るライトアクセスに対する処理の流れを示すフローチャートである。
【図１２】本発明の第１の実施の形態に係る図１１のステップＢ３におけるデータ書込処理の詳細を示すフローチャートである。
【図１３】本発明の第１の実施の形態に係る図１２のステップＣ１の処理を模式的に示す図である。
【図１４】本発明の第１の実施の形態に係る図１２のステップＣ２の処理を模式的に示す図である。
【図１５】本発明の第１の実施の形態に係る図１２のステップＣ３の処理を模式的に示す図である。
【図１６】本発明の第１の実施の形態に係る図１２のステップＣ４の処理を模式的に示す図である。
【図１７】本発明の第１の実施の形態に係るリードアクセスに対する処理の流れを示すフローチャートである。
【図１８】本発明の第１の実施の形態に係る消去アクセスに対する処理の流れを示すフローチャートである。
【図１９】本発明の第１の実施の形態に係るメモリカードに対してホスト装置が書込を行う際のＩ／ＯピンとＲ／Ｂピンに入出力される信号の例を示すタイミングチャートである。
【図２０】本発明の第１の実施の形態に係るメモリカード内の不揮発性メモリに対してコントローラＢが書き込みを行う際のＩ／ＯピンとＲ／Ｂピンに入出力される信号の例を示すタイミングチャートである。
【図２１】本発明の第１の実施の形態に係るメモリカードの使用方法を模式的に示す図である。
【図２２】本発明の第１の実施の形態に係る他のメモリカードの概略構成を示す図である。
【図２３】本発明の第２の実施の形態に係るメモリカードの概略構成を示す図である。
【図２４】本発明の第２の実施の形態に係るコントローラＢの概略構成を示す図である。
【図２５】本発明の第２の実施の形態に係るメモリカードの外部接続ピンの配置例を示す図である。
【図２６】本発明の第２の実施の形態に係るメモリカードの各外部接続ピンに割り当てられる信号例を示す図である。
【図２７】本発明の第２の実施の形態に係るホスト装置が想定しているフラッシュメモリと、実際に使用するＮＡＮＤフラッシュメモリとのデータ配置の違いを示す図である。
【図２８】本発明の第２の実施の形態に係るホスト装置及びメモリカード内のコントローラＢの各機能構成例を示す図である。
【図２９】本発明の第２の実施の形態に係る（ａ）はホスト装置側から送られてくるコマンドのフォーマットと、（ｂ）はメモリカード内部で処理されるコマンドフォーマットとを示す図である。
【図３０】本発明の第２の実施の形態に係る（ａ）はホスト装置が想定しているブロック書込操作、（ｂ）はメモリカード（大ブロックカード）側が実際に行う書込処理とを対比して示す図である。
【図３１】本発明の第２の実施の形態に係る大ブロックカード内のフラッシュメモリのブロックフォーマット（２５６ｋＢｙｔｅ物理ブロック分）を示す図である。
【図３２】本発明の第２の実施の形態に係るメモリカードに対してホスト装置が書込を行う際のＩ／ＯピンとＲ／Ｂピンに入出力される信号の例を示すタイミングチャートである。
【図３３】本発明の第２の実施の形態に係るメモリカード内の不揮発性メモリに対してコントローラＢが書き込みを行う際のＩ／ＯピンとＲ／Ｂピンに入出力される信号の例を示すタイミングチャートである。
【図３４】本発明の第２の実施の形態に係るメモリカードにおけるテスト動作例を示すフローチャートである。
【図３５】本発明の第２の実施の形態に係る他のコントローラＢの概略構成を示す図である。
【図３６】本発明の第２の実施の形態に係るメモリカードにおける他のテスト動作例を示すフローチャートである。
【図３７】本発明の第３の実施の形態に係るメモリカードをパッケージ化した際の構成を示す断面図である。
【図３８】本発明の第３の実施の形態に係るメモリカードをパッケージ化した際の他の構成を示す断面図である。
【図３９】本発明の第３の実施の形態に係るメモリカードをパッケージ化した際の他の構成を示す断面図である。
【図４０】本発明の第４の実施の形態に係るメモリカードを適用したＵＳＢメモリ概略構成を示す断面図である。
【図４１】本発明の第５の実施の形態に係るメモリカードの概略構成を示す図である。
【図４２】本発明の第５の実施の形態に係るコントローラＡの概略構成を示す図である。
【図４３】本発明の第５の実施の形態に係るコントローラＢの概略構成を示す図である。
【図４４】本発明の第５の実施の形態に係るコントローラＢの書込処理に関わる構成を示す図である。
【図４５】本発明の第５の実施の形態に係るコントローラＢにおいて実行される書込処理を示すフローチャートである。
【図４６】本発明の第５の実施の形態に係る他のメモリカードの概略構成を示す図である。
【図４７】本発明の第６の実施の形態に係るメモリカードの概略構成を示す図である。
【図４８】本発明の第６の実施の形態に係るコントローラＢの概略構成を示す図である。
【図４９】本発明の第６の実施の形態に係るコントローラＢの書込処理に関わる構成を示す図である。
【図５０】本発明の第６の実施の形態に係るコントローラＢにおいて実行される書込処理を示すフローチャートである。
【図５１】本発明の第６の実施の形態に係るコントローラＢにおいて実行される読出処理を示すフローチャートである。
【図５２】本発明の第６の実施の形態に係るコントローラＢにおいて実行される消去処理を示すフローチャートである。
【図５３】本発明の第６の実施の形態に係る他のメモリカードの概略構成を示す図である。
【図５４】本発明の第７の実施の形態に係るメモリカードをパッケージ化した際の構成を示す断面図である。
【図５５】本発明の第７の実施の形態に係るメモリカードをパッケージ化した際の他の構成を示す断面図である。
【図５６】本発明の第７の実施の形態に係るメモリカードをパッケージ化した際の他の構成を示す断面図である。
【図５７】本発明の第８の実施の形態に係るメモリカードを適用したＵＳＢメモリ概略構成を示す断面図である。
【符号の説明】
【０２６８】
１，２００，６００，７００，８００，９００…メモリカード、２，６０１…コントローラＡ、３，６０２，８０２…コントローラＢ、４，Ｍ１，Ｍ２…ＮＡＮＤフラッシュメモリ、１１…ホストバス、１２，１３，６１１〜６１３…ＮＡＮＤバス、２０…ホスト装置、３１，３４，６３４，６３５…ＮＡＮＤ＿Ｉ／Ｆ、３５，６２４，６３６，８０５…ＣＰＵ、２０２２，８０７…アクセス経路設定部、Ｍ１Ｐ…第１データＬＢＡ・ＰＢＡ記憶部，実データＬＢＡ・ＰＢＡ記憶部、Ｍ２Ｐ…第２データＬＢＡ・ＰＢＡ記憶部，ＥＣＣデータＬＢＡ・ＰＢＡ記憶部。
【図１】
2009099112.tif 000003
【図２】
2009099112.tif 000004
【図３】
2009099112.tif 000005
【図４】
2009099112.tif 000006
【図５】
2009099112.tif 000007
【図６】
2009099112.tif 000008
【図７】
2009099112.tif 000009
【図８】
2009099112.tif 000010
【図９】
2009099112.tif 000011
【図１０】
2009099112.tif 000012
【図１１】
2009099112.tif 000013
【図１２】
2009099112.tif 000014
【図１３】
2009099112.tif 000015
【図１４】
2009099112.tif 000016
【図１５】
2009099112.tif 000017
【図１６】
2009099112.tif 000018
【図１７】
2009099112.tif 000019
【図１８】
2009099112.tif 000020
【図１９】
2009099112.tif 000021
【図２０】
2009099112.tif 000022
【図２１】
2009099112.tif 000023
【図２２】
2009099112.tif 000024
【図２３】
2009099112.tif 000025
【図２４】
2009099112.tif 000026
【図２５】
2009099112.tif 000027
【図２６】
2009099112.tif 000028
【図２７】
2009099112.tif 000029
【図２８】
2009099112.tif 000030
【図２９】
2009099112.tif 000031
【図３０】
2009099112.tif 000032
【図３１】
2009099112.tif 000033
【図３２】
2009099112.tif 000034
【図３３】
2009099112.tif 000035
【図３４】
2009099112.tif 000036
【図３５】
2009099112.tif 000037
【図３６】
2009099112.tif 000038
【図３７】
2009099112.tif 000039
【図３８】
2009099112.tif 000040
【図３９】
2009099112.tif 000041
【図４０】
2009099112.tif 000042
【図４１】
2009099112.tif 000043
【図４２】
2009099112.tif 000044
【図４３】
2009099112.tif 000045
【図４４】
2009099112.tif 000046
【図４５】
2009099112.tif 000047
【図４６】
2009099112.tif 000048
【図４７】
2009099112.tif 000049
【図４８】
2009099112.tif 000050
【図４９】
2009099112.tif 000051
【図５０】
2009099112.tif 000052
【図５１】
2009099112.tif 000053
【図５２】
2009099112.tif 000054
【図５３】
2009099112.tif 000055
【図５４】
2009099112.tif 000056
【図５５】
2009099112.tif 000057
【図５６】
2009099112.tif 000058
【図５７】
2009099112.tif 000059