(57)【要約】【課題】メモリカードの仕様に合わないシーケンスでコマンドを発行してくるホスト機器に対して、正常に応答することが可能なコントローラ、メモリカード及びその制御方法を提供する。【解決手段】コントローラ１は、ホストインタフェース部６とＣＰＵ８を備える。ホストインタフェース部６は、ホスト機器２０から出力された第１の不揮発性半導体メモリに対するコマンドシーケンスを受け取る。ＣＰＵ８は、ホスト機器２０から出力された第１の不揮発性半導体メモリに対する前記コマンドシーケンスを処理し、このコマンドシーケンスに応じて第２の不揮発性半導体メモリ３に対するデータの書き込み、読み出し及び消去の動作を制御する。【選択図】      図１
2006092019.tif 000002
【特許請求の範囲】
【請求項１】
ホスト機器から出力された第１の不揮発性半導体メモリに対するコマンドシーケンスを受け取るホストインタフェース部と、
前記ホスト機器から出力された前記第１の不揮発性半導体メモリに対する前記コマンドシーケンスを処理し前記コマンドシーケンスに応じて、第２の不揮発性半導体メモリに対するデータの書き込み、読み出し及び消去の動作を制御する処理回路と、
を具備することを特徴とするコントローラ。
【請求項２】
ホスト機器に装着され、前記ホスト機器から出力された第１の不揮発性半導体メモリに対するコマンドシーケンスを受け取るメモリカードにおいて、
データの書き込み、読み出し及び消去が行われる第２の不揮発性半導体メモリと、
前記ホスト機器から出力された前記第１の不揮発性半導体メモリに対する前記コマンドシーケンスを処理し前記コマンドシーケンスに応じて、前記第２の不揮発性半導体メモリに対するデータの書き込み、読み出し及び消去の動作を制御するコントローラと、
を具備することを特徴とするメモリカード。
【請求項３】
前記第１の不揮発性半導体メモリが有する第１の消去ブロックサイズは、前記第２の不揮発性半導体メモリが有する第２の消去ブロックサイズとは異なることを特徴とする請求項２に記載のメモリカード。
【請求項４】
前記コントローラは、前記ホスト機器から出力された前記コマンドシーケンスを処理する制御手段を有し、前記制御手段は、
前記コマンドシーケンスが含むコマンドが、書き込み、読み出し、消去、ＩＤリード、ステータスリードのいずれであるか判定するステップと、
前記コマンドが書き込み、読み出し、消去のいずれかであるとき、アドレスが所定数入力されたか否かを判定するステップと、
前記アドレスが所定数入力されたとき、書き込み、読み出し、消去のいずれかを実行するステップと、
前記アドレスが所定数入力されないとき、前記ホスト機器からコマンドが入力されたか否かを判定するステップと、
前記コマンドがＩＤリード、ステータスリードのいずれかであるとき、ＩＤリード、ステータスリードのいずれかを実行するステップと、
を具備すること特徴とする請求項２または３に記載のメモリカード。
【請求項５】
ホスト機器に装着され、前記ホスト機器からアクセスされるメモリカードの制御方法において、
前記ホスト機器から入力されたコマンドが、書き込み、読み出し、消去、ＩＤリード、ステータスリードのいずれであるか判定するステップと、
前記コマンドが書き込み、読み出し、消去のいずれかであるとき、アドレスが所定数入力されたか否かを判定するステップと、
前記アドレスが所定数入力されたとき、書き込み、読み出し、消去のいずれかを実行するステップと、
前記アドレスが所定数入力されないとき、前記ホスト機器からコマンドが入力されたか否かを判定するステップと、
前記コマンドがＩＤリード、ステータスリードのいずれかであるとき、ＩＤリード、ステータスリードのいずれかを実行するステップと、
を具備することを特徴とするメモリカードの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、コントローラ、記憶素子を有するメモリカード及びその制御方法に関するものであり、例えば、ホスト機器からのアクセスによりデータの書き込み、読み出し、及び消去を行うメモリカード、メモリカードに搭載されたコントローラ、及びメモリカードの制御方法に関するものである。
【背景技術】
【０００２】
近年、パーソナルコンピュータ、ＰＤＡ、カメラ、携帯電話等の様々な携帯用電子機器においては、リムーバブル記憶デバイスの１つであるメモリカードが多く用いられている。メモリカードの中には、コントローラを搭載せずＮＡＮＤ型フラッシュメモリだけを搭載したものがある。この従来のＮＡＮＤ型フラッシュメモリでは、通常、消去時の消去ブロックサイズが小さく、例えば１６kByteに定められている。
【０００３】
ところで、現在、メモリカードに搭載されるＮＡＮＤ型フラッシュメモリには、大容量で安価な、消去時の消去ブロックサイズが大きいＮＡＮＤ型フラッシュメモリが用いられつつある。このＮＡＮＤ型フラッシュメモリでは、例えば２５６kByteに消去ブロックサイズが定められている。このため、ホスト機器が、消去ブロックサイズが小さいＮＡＮＤ型フラッシュメモリであると想定してメモリカードにアクセスしてきた場合、消去ブロックサイズが大きいＮＡＮＤ型フラッシュメモリを搭載したメモリカードは正常に応答することができず、誤動作する原因となっている。
【０００４】
なお、特許文献１には、複数種のメモリチップとこれらメモリチップを制御するメモリコントローラを有するメモリシステムにおいて、１つのメモリコントローラで複数種のメモリチップをアクセスできるように構成した技術が記載されている。
【特許文献１】特開２００２−２５９３２２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
そこでこの発明は、前記事情に鑑みてなされたものであり、メモリカードに搭載された不揮発性半導体メモリの仕様に合わないシーケンスでコマンドを発行してくるホスト機器に対して、正常に応答することが可能なコントローラ、メモリカード及びその制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
前記目的を達成するために、この発明の一実施形態のコントローラは、ホスト機器から出力された第１の不揮発性半導体メモリに対するコマンドシーケンスを受け取るホストインタフェース部と、前記ホスト機器から出力された前記第１の不揮発性半導体メモリに対する前記コマンドシーケンスを処理し前記コマンドシーケンスに応じて、第２の不揮発性半導体メモリに対するデータの書き込み、読み出し及び消去の動作を制御する処理回路とを具備することを特徴とする。
【０００７】
また、この発明の一実施形態のメモリカードは、ホスト機器に装着され、前記ホスト機器から出力された第１の不揮発性半導体メモリに対するコマンドシーケンスを受け取るメモリカードであって、データの書き込み、読み出し及び消去が行われる第２の不揮発性半導体メモリと、前記ホスト機器から出力された前記第１の不揮発性半導体メモリに対する前記コマンドシーケンスを処理し前記コマンドシーケンスに応じて、前記第２の不揮発性半導体メモリに対するデータの書き込み、読み出し及び消去の動作を制御するコントローラとを具備することを特徴とする。
【０００８】
また、この発明の一実施形態のメモリカードの制御方法は、ホスト機器に装着され、前記ホスト機器からアクセスされるメモリカードの制御方法であって、前記ホスト機器から入力されたコマンドが、書き込み、読み出し、消去、ＩＤリード、ステータスリードのいずれであるか判定するステップと、前記コマンドが書き込み、読み出し、消去のいずれかであるとき、アドレスが所定数入力されたか否かを判定するステップと、前記アドレスが所定数入力されたとき、書き込み、読み出し、消去のいずれかを実行するステップと、前記アドレスが所定数入力されないとき、前記ホスト機器からコマンドが入力されたか否かを判定するステップと、前記コマンドがＩＤリード、ステータスリードのいずれかであるとき、ＩＤリード、ステータスリードのいずれかを実行するステップとを具備することを特徴とする。
【発明の効果】
【０００９】
この発明によれば、メモリカードに搭載された不揮発性半導体メモリの仕様に合わないシーケンスでコマンドを発行してくるホスト機器に対して、正常に応答することが可能なメモリカード及びその制御方法を提供することができる。
【発明を実施するための最良の形態】
【００１０】
以下、図面を参照してこの発明の実施形態について説明する。説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【００１１】
図１は、この発明の実施形態のメモリカードの構成を示すブロック図である。
【００１２】
メモリカード１は、図１に示すように、ＮＡＮＤ型フラッシュメモリ３及びコントローラ４を含む。コントローラ４には、ＣＰＵ（Central Processing Unit）８やＲＯＭ（Read-Only Memory）９などの機能ブロックが搭載されている。各デバイスの詳細については後で述べる。なお、ＮＡＮＤ型フラッシュメモリ３は、１つのメモリセルに１ビットの情報を記憶する２値メモリであっても良いし、１つのメモリセルに１ビットより多い情報（例えば２ビット）を記憶する多値メモリであっても良い。またここでは、ＮＡＮＤ型フラッシュメモリを用いた例を説明するが、これに限るわけではなく、ＮＯＲ型メモリなど、その他の不揮発性半導体メモリにも適用できる。
【００１３】
また、図示しないが、ＮＡＮＤ型フラッシュメモリ３及びコントローラ４は、ＰＣＢ（Printed Circuit Board）基板上に配置されていても良いし、同一のＬＳＩ（Large-scale Integration）内に形成されていても良い。
【００１４】
以下の説明において使用する用語「論理ブロックアドレス」，「物理ブロックアドレス」は、それぞれ、ブロック自体の論理アドレス，物理アドレスを意味するものである。また、「論理アドレス」，「物理アドレス」は、主に、ブロック自体の論理アドレス，物理アドレスを意味するものではあるが、ブロック単位よりも細かい分解能の単位に相当するアドレスである場合もあり得ることを示すものである。
【００１５】
ホスト機器２０は、接続されるメモリカード１に対してアクセスを行うためのハードウェア及びソフトウェア（システム）を備えている。このホスト機器２０は、メモリカード内部の物理状態（何処の物理ブロックアドレスに、何番目の論理セクタアドレスデータが含まれているか、或いは、何処のブロックが消去状態であるか）を管理し、メモリカード１内のＮＡＮＤ型フラッシュメモリ３を直接制御するものとして構築されている。
【００１６】
また、ホスト機器２０は、消去時の消去ブロックサイズが１６kByteに定められているＮＡＮＤ型フラッシュメモリを使用することを前提として、１６kByte単位で論理アドレス、物理アドレスの割当を行い、多くの場合、論理アドレス１６kByte分に関してシーケンシャルにライトアクセスもしくはリードアクセスを行う（該当するコマンドを発行する）。
【００１７】
メモリカード１は、ホスト機器２０に接続されたときに電源供給を受けて動作し、ホスト機器２０からのアクセスに応じた処理を行う。このメモリカード１は、前述したようにＮＡＮＤ型フラッシュメモリ３及びコントローラ４を有する。
【００１８】
ＮＡＮＤ型フラッシュメモリ３は、消去時の消去ブロックサイズ（消去単位のブロックサイズ）が２５６kByteに定められている不揮発性メモリであり、例えば１６kByte単位でデータの書き込み・読み出しを行うようになっている。このＮＡＮＤ型フラッシュメモリ３は、例えば０.０９μｍプロセス技術を用いて製作される。即ち、ＮＡＮＤ型フラッシュメモリ３のデザインルールは、０.１μｍ未満となっている。
【００１９】
コントローラ４は、前述したＣＰＵ８及びＲＯＭ９のほかに、メモリインタフェース部５、ホストインタフェース部６、バッファ７、及びＲＡＭ（Random Access Memory）１０を搭載している。
【００２０】
メモリインタフェース部５は、コントローラ４とＮＡＮＤ型フラッシュメモリ３との間のインタフェース処理を行うものである。ホストインタフェース部６は、コントローラ４とホスト機器２０との間のインタフェース処理を行うものである。
【００２１】
図２は、本実施形態のメモリカードのピン配置を示す平面図であり、ピン形成面からみた図である。ホストインタフェース部６が有するピンは、図２に示すように配置されている。図３に、そのピンアサイン、すなわちピン番号とそのピンに割り当てられた信号を示す。ピン１、９は基準電圧、例えば接地電圧ＧＮＤに、ピン１８は電源電圧Ｖccに割り当てられている。ピン２は、メモリカード１の内部動作状態をホスト機器２０に知らせるためのレディ・ビジー信号Ｒ／−Ｂ(Ready/Busy)に割り当てられている。書き込み、読み出し、及び消去時など、内部で動作実行中はピン２からビジー信号が出力され、動作が完了するとレディ信号が出力される。ピン３はデータを出力させるリードイネーブル信号−ＲＥ(Read Enable)に、ピン４はメモリカード１を動作モードにするカードイネーブル信号−ＣＥ(Card Enable)に割り当てられている。ピン５はコマンドの取り込みをコントロールするためのコマンドラッチイネーブル信号ＣＬＥ(Command Latch Enable)に、ピン６はアドレス、及び入力データの取り込みをコントロールするためのアドレスラッチイネーブル信号ＡＬＥ(Address Latch Enable)に割り当てられている。ピン７はデータをメモリカード１に書き込むためのライトイネーブル信号−ＷＥ(Write Enable)に、ピン８は書き込み、及び消去を強制的に禁止させるためのライトプロテクト信号−ＷＰ(Write Protect)に割り当てられている。さらに、ピン１０、１１、…、１７は、コマンド、アドレス、及びデータが入出力されるピンＤ０(Data0)、Ｄ１(Data0)、…、Ｄ７(Data7)に割り当てられている。このように、本実施形態のメモリカード１は、ＮＡＮＤ型フラッシュメモリ３のピン構成に対応したピン構成を有しており、ホスト機器２０がＮＡＮＤ型フラッシュメモリに対するコマンドシーケンスによりメモリカード１にアクセスを行うことが可能となっている。なお、コマンドシーケンスとは、コマンドとアドレスが入力される一連の順序（入力タイミング）のことをいう。なお、図３中において、“Ｓ”は電源電圧を示し、“Ｉ”はメモリカードへの入力であることを示し、“Ｏ”はメモリカードからの出力であることを示し、さらに“Ｉ／Ｏ”はメモリカードに対する入出力であることを示す。また、ピン名（信号名）の頭に付した“−”は、Low True信号であること、すなわち“Ｌ”のとき活性化を指示する信号であることを示す。
【００２２】
バッファ７は、ホスト機器２０から送られてくるデータをＮＡＮＤ型フラッシュメモリ３へ書き込む際に、一定量のデータ（例えば１ページ分）を一時的に記憶したり、ＮＡＮＤ型フラッシュメモリ３から読み出されたデータをホスト機器２０へ送り出す際に、一定量のデータを一時的に記憶したりするものである。
【００２３】
ＣＰＵ８は、メモリカード１全体の動作を司るものである。ＲＯＭ９は、ＣＰＵ８により使用される制御プログラムなどを格納するメモリである。ＲＡＭ１０は、ＣＰＵ８の作業エリアとして使用され、制御プログラムや各種のテーブルを記憶する揮発性メモリである。ＣＰＵ８は、例えば、メモリカード１が電源供給を受けた際に、ＲＯＭ９の中に格納されているファームウェア（制御プログラム）をＲＡＭ１０上にロードして所定の処理を実行することにより、各種のテーブルをＲＡＭ１０上で作成したり、ホスト機器２０から書き込みコマンド，読み出しコマンド，消去コマンドを受けてＮＡＮＤ型フラッシュメモリ３上の該当領域に対するアクセスを実行したり、バッファ７を通じたデータ転送処理を制御したりする。
【００２４】
図４は、前記ファームウェア（制御プログラム）によって実行される制御の一例であり、ホスト機器２０から入力されたコマンドシーケンスを処理する制御手順を示すフローチャートである。
【００２５】
まず、ＣＰＵ８は、ホスト機器２０からコマンドが入力されたか否かを判定する（ステップＳ１）。続いて、コマンドが入力されたときは、そのコマンドが書き込みコマンドまたは読み出しコマンドであるか否かを判定する（ステップＳ２）。なお、ステップＳ１でコマンドが入力されていないと判定したときは、再びステップＳ１に戻る。
【００２６】
次に、入力されたコマンドが、書き込みコマンドあるいは読み出しコマンドであると判定したときは、アドレスが所定のバイト数、ここでは４バイト入力されたか否かを判定する（ステップＳ３）。アドレスが４バイト入力されたときは、書き込みあるいは読み出しの処理を行い（ステップＳ４）、ステップＳ１に戻る。一方、ステップＳ３で、アドレスが所定時間内に４バイト入力されないときは、再びコマンドが入力されたか否かを判定する（ステップＳ５）。ここで、コマンドが入力されたときは、ステップＳ２に戻り、ステップＳ２以降の処理を繰り返す。一方、コマンドが入力されないときは、ステップＳ３に戻り、ステップＳ３以降の処理を繰り返す。
【００２７】
また、ステップＳ２において、入力されたコマンドが書き込みコマンドあるいは読み出しコマンドでないと判定したときは、コマンドが消去コマンドであるか否かを判定する（ステップＳ６）。入力されたコマンドが、消去コマンドであると判定したときは、アドレスが所定のバイト数、ここでは３バイト入力されたか否かを判定する（ステップＳ７）。アドレスが３バイト入力されたときは、消去の処理を行い（ステップＳ８）、ステップＳ１に戻る。一方、ステップＳ７で、アドレスが所定時間内に３バイト入力されないときは、再びコマンドが入力されたか否かを判定する（ステップＳ９）。コマンドが入力されたときは、ステップＳ２に戻り、ステップＳ２以降の処理を繰り返す。一方、コマンドが入力されないときは、ステップＳ７に戻り、ステップＳ７以降の処理を繰り返す。
【００２８】
また、ステップＳ６において、入力されたコマンドが消去コマンドでないと判定したときは、コマンドがＩＤリードコマンドあるいはステータスリードコマンドであるか否かを判定する（ステップＳ１０）。入力されたコマンドが、ＩＤリードコマンドあるいはステータスリードコマンドであると判定したときは、ＩＤリードあるいはステータスリードの処理を行い（ステップＳ１１）、ステップＳ１に戻る。一方、入力されたコマンドがＩＤリードコマンドあるいはステータスリードコマンドでないと判定したときは、処理を行わず、そのままステップＳ１に戻る。
【００２９】
図５及び図６は、ホスト機器２０からコントローラ４に入力されるＩＤリードコマンドを含むコマンドシーケンスのタイミングチャートである。図５に示すコマンドシーケンスがメモリカード１の仕様書で定義された、ＩＤリードコマンドのコマンドシーケンスであるとき、図６に示すコマンドシーケンスによってＩＤリードを実行しようとするホスト機器があると仮定する。
【００３０】
図５に示すコマンドシーケンスでは、以下のようなタイミングでコマンド、アドレス、及びデータが入出力される。
【００３１】
コマンドラッチイネーブル信号ＣＬＥが“ハイレベル（以下、Ｈと記す）”で、カードイネーブル信号−ＣＥが“ロウレベル（以下、Ｌと記す）”、及びアドレスラッチイネーブル信号ＡＬＥが“Ｌ”のとき、ライトイネーブル信号−ＷＥの立ち上がりエッジにて、ピンＤ０〜Ｄ７からＩＤリードコマンドＣＯＭがコントローラ４に取り込まれる。次に、コマンドラッチイネーブル信号ＣＬＥが“Ｌ”で、カードイネーブル信号−ＣＥが“Ｌ”、及びアドレスラッチイネーブル信号ＡＬＥが“Ｈ”のとき、ライトイネーブル信号−ＷＥの立ち上がりエッジにて、ピンＤ０〜Ｄ７からアドレス“００（１６進数）”がコントローラ４に取り込まれる。さらに、コマンドラッチイネーブル信号ＣＬＥが“Ｌ”で、カードイネーブル信号−ＣＥが“Ｌ”、及びアドレスラッチイネーブル信号ＡＬＥが“Ｌ”のとき、リードイネーブル信号−ＲＥの立ち上がりエッジにて、ピンＤ０〜Ｄ７からデータ０〜データ３がホスト機器２０に取り込まれる。
【００３２】
また、図６に示すコマンドシーケンスでは、以下のようなタイミングでコマンド、アドレス、及びデータが入出力される。
【００３３】
コマンドラッチイネーブル信号ＣＬＥが“Ｈ”で、カードイネーブル信号−ＣＥが“Ｌ”、及びアドレスラッチイネーブル信号ＡＬＥが“Ｌ”のとき、ライトイネーブル信号−ＷＥの立ち上がりエッジにて、ピンＤ０〜Ｄ７からＩＤリードコマンドＣＯＭがコントローラ４に取り込まれる。次に、コマンドラッチイネーブル信号ＣＬＥが“Ｌ”で、カードイネーブル信号−ＣＥが“Ｌ”、及びアドレスラッチイネーブル信号ＡＬＥが“Ｈ”のとき、ライトイネーブル信号−ＷＥの立ち上がりエッジにて、ピンＤ０〜Ｄ７からアドレスａｄｒ１〜ａｄｒ３がコントローラ４に取り込まれる。さらに、コマンドラッチイネーブル信号ＣＬＥが“Ｌ”で、カードイネーブル信号−ＣＥが“Ｌ”、及びアドレスラッチイネーブル信号ＡＬＥが“Ｌ”のとき、リードイネーブル信号−ＲＥの立ち上がりエッジにて、ピンＤ０〜Ｄ７からデータ０〜データ３がホスト機器２０に取り込まれる。
【００３４】
図６に示すような、ＩＤリードコマンドのコマンドシーケンスではアドレスａｄｒ１〜ａｄｒ３の入力は無視すべきである。しかし、図４に示した制御手順を実行するための制御プログラムを持たない従来のメモリカードでは、書き込み時及び読み出し時と同様に４サイクルのアドレスがホスト機器２０から発行されるため、本来、無視すべきアドレスａｄｒ１〜ａｄｒ３の入力をコントローラ内のシーケンサが書き込み時や読み出し時のアドレス入力と解釈して誤動作する可能性がある。
【００３５】
そこで、本実施形態のメモリカード１では、図４に示した制御手順を用いて図６に示したコマンドシーケンスを処理する。これにより、ステップＳ１、Ｓ２、Ｓ６、Ｓ１０、Ｓ１１の順序で処理が移行し、ＩＤリードの処理が実行される。すなわち、アドレスａｄｒ１〜ａｄｒ３が入力されても、書き込み時や読み出し時であるとして誤動作することなく、正常にＩＤリードの処理を実行することできる。
【００３６】
なおここでは、ＩＤリードコマンドの入力後に、アドレスが４サイクル入力される例を示したが、これに限るわけではなく、ホスト機器２０から仕様書に従ったコマンドシーケンスが入力されないその他の場合でも、誤動作することなく本来の処理を実行することが可能である。また、図４に示した制御手順をファームウェア（制御プログラム）によって実行した例を示したが、コントローラ４内に形成したハードウェア（シーケンサ）によって実行するようにしてもよい。
【００３７】
図７は、ホスト機器２０が想定しているフラッシュメモリと、実際に使用するフラッシュメモリ（メモリカード１内のＮＡＮＤ型フラッシュメモリ３）との、データ配置の違いを示している。
【００３８】
ホスト機器２０が想定しているフラッシュメモリでは、各ページは５２８Byte（５１２Byte分のデータ記憶部＋１６Byte分の冗長部）を有しており、３２ページ分が１つの消去単位（即ち、１６kByte＋０.５kByte（ここで、kは１０２４））となる。以下では、このようなフラッシュメモリを搭載したカードを、「小ブロックカード」と称す場合がある。
【００３９】
一方、実際に使用するフラッシュメモリ３では、各ページは２１１２Byte（例えば５１２Byte分のデータ記憶部×４＋１０Byte分の冗長部×４＋２４Byte分の管理データ記憶部）を有しており、１２８ページ分が１つの消去単位（即ち、２５６kByte＋８kByte）となる。以下では、このようなフラッシュメモリ３を搭載したカードを、「大ブロックカード」と称す場合がある。なお、以下の説明においては、便宜上、小ブロックカードの消去単位を１６kByteと呼び、大ブロックカードの消去単位を２５６kByteと呼ぶ。
【００４０】
また、ホスト機器２０が想定しているフラッシュメモリと、実際に使用するフラッシュメモリ３は、それぞれ、フラッシュメモリへのデータ入出力を行うためのページバッファを備えている。ホスト機器２０が想定しているフラッシュメモリに備えられるページバッファの記憶容量は、５２８Byte（５１２Byte＋１６Byte）である。一方、実際に使用するフラッシュメモリ３に備えられるページバッファの記憶容量は、２１１２Byte（２０４８Byte＋６４Byte）である。データ書き込みなどの際には、各ページバッファは、フラッシュメモリに対するデータ入出力処理を、自身の記憶容量に相当する１ページ分の単位で実行する。
【００４１】
図７に示した例では、実際に使用するフラッシュメモリ３の消去ブロックサイズが、ホスト機器２０が想定しているフラッシュメモリの消去ブロックサイズの１６倍である場合を示したが、本発明はこれに限定されるものではなく、略整数倍であれば別の倍率となるように構成することも可能である。
【００４２】
大ブロックカードを実用上有効な製品とするためには、図７に示したフラッシュメモリ３の記憶容量は１Ｇビット以上であることが望ましい。フラッシュメモリ３の記憶容量が例えば１Ｇビットである場合、２５６kByteブロック（消去単位）の数は、５１２個となる。また、図７においては消去単位が２５６kByteブロックである場合を例示しているが、消去単位が例えば１２８kByteブロックとなるように構築することも実用上有効である。この場合、１２８kByteブロックの数は、１０２４個となる。
【００４３】
また、図７に示した例では、実際に使用するフラッシュメモリ３の消去ブロックサイズが、ホスト機器２０が想定しているフラッシュメモリの消去ブロックサイズよりも大きい場合を示したが、本発明はこれに限定されるものではなく、実際に使用するフラッシュメモリ３の消去ブロックサイズが、ホスト機器２０が想定しているフラッシュメモリの消去ブロックサイズよりも小さいものとして構成することも可能である。
【００４４】
図８は、ホスト機器２０側システム及びメモリカード１（大ブロックカード）における各コミュニケーション階層を示す図である。
【００４５】
ホスト機器２０側のシステムは、アプリケーションソフト２１、ファイルシステム２２、ドライバソフト２３、及び小ブロックカード物理アクセス層２４を有する。一方、メモリカード１（大ブロックカード）は、小ブロックカード物理アクセス層１１、小ブロックカード物理・小ブロックカード論理変換層１２、小ブロックカード論理・大ブロックカード物理変換層１３、及び大ブロックカード物理アクセス層１４を有する。
【００４６】
例えば、ホスト機器２０側のアプリケーションソフト２１がファイルの書き込みをファイルシステム２２に要求すると、ファイルシステム２２は、小ブロックカードの論理ブロックアドレスに基づきシーケンシャルなセクタ書き込みをドライバソフト２３に指示する。これを受けて、ドライバソフト２３は、小ブロックカードの論理ブロックアドレスに基づく１６kByteブロック毎のシーケンシャルな書き込みを実現するにあたり、論理・物理ブロック変換を行い、小ブロックカード物理アクセス層２４を通じて、小ブロックカードの物理ブロックアドレスによるランダムな書き込みコマンドを大ブロックカードに対して発行し、データ転送を行う。
【００４７】
なお、ライトアクセスにおいては、小ブロックカードの場合も大ブロックカードの場合も、プロトコル上、（１）コマンド、（２）ページアドレス（ロウアドレス）、（３）カラムアドレス、（４）データ、（５）プログラム確認コマンド、といった順序で情報の送受が行われることが前提となっている。
【００４８】
大ブロックカード側における小ブロックカード物理アクセス層１１は、ホスト機器２０から小ブロックカードの物理ブロックアドレスによる書き込みコマンドを受けると、物理ブロックアドレスやデータのほか、これに付随する付随データに含まれている論理ブロックアドレスを取得する。
【００４９】
小ブロックカード物理・小ブロックカード論理変換層１２は、データ読み出しなどの際に小ブロックカードの物理ブロックアドレス（１６kByteブロック分に対応）から小ブロックカードの論理ブロックアドレス（１６kByteブロック分に対応）への変換処理を行うための第１のテーブルを有している。変換層１２は、小ブロックカード物理アクセス層１１が書き込みコマンドを受けて小ブロックカードの論理ブロックアドレスを取得したときにはこれを上記第１のテーブルに反映させる。物理ブロックアドレスに関しても、上記第１のテーブルに反映させる。
【００５０】
小ブロックカード論理・大ブロックカード物理変換層１３は、データ読み出しなどの際に小ブロックカードの論理ブロックアドレス（シーケンシャルな１６kByteブロック×１６個分に対応）から大ブロックカードの物理ブロックアドレス（２５６kByte物理ブロック分に対応）への変換処理を行うための第２のテーブルを有している。変換層１２は、小ブロックカード物理アクセス層１１が書き込みコマンドを受けて小ブロックカードの論理ブロックアドレスを取得したときにはこれを上記第２のテーブルに反映させる。
【００５１】
大ブロックカード物理アクセス層１４は、小ブロックカード物理アクセス層１１が書き込みコマンドを受けて取得した小ブロックカードの論理ブロックアドレスに基づき、フラッシュメモリ３内部のデータ配置を決定し、２５６kByte物理ブロック内において２kByte（１ページ）単位でシーケンシャルに１６kByte分のデータを書き込む。また、大ブロックカード物理アクセス層１４は、取得した小ブロックカードの論理ブロックアドレスや物理ブロックアドレスをフラッシュメモリ３内部における管理データ領域内の所定の領域に格納する。
【００５２】
このようにホスト機器２０は小ブロックカードの物理ブロックアドレスに基づくコマンドを発行するので、大ブロックカード側では、小ブロックカードの物理ブロックアドレスに対応するデータがどの２５６kByte物理ブロックの中に存在するのかが分かるように管理する。具体的には、１６kByteブロック毎に小ブロックカードの論理・物理ブロックアドレスの対応関係を管理すると共に、小ブロックカードの連続した２５６kByteブロック分の論理ブロックアドレスに対応するデータが大ブロックカード内のどの２５６kByte物理ブロックに格納されているかが分かるように管理する。
【００５３】
図９（ａ）、図９（ｂ）は、ホスト機器２０側から送られてくるコマンドのフォーマットを示す図である。
【００５４】
ホスト機器２０側から送られてくるコマンドのパケットは、図９（ａ）に示すように、コマンド種別情報（ここでは「書き込み」），アドレス（物理ブロックアドレス），データ（コンテンツなどの実データ及び付随データ（５１２Byte＋１６Byte））といった各種情報を含んでいる。
【００５５】
このようなフォーマットのパケットにおいては、図９（ｂ）に示すように、付随データ１６Byte中の所定の位置に小ブロックカードの「論理ブロックアドレス」（アクセス対象となる１６kByteブロックに対応する論理アドレス）が配置されている。大ブロックカードは、コマンド種別情報，物理ブロックアドレス，データを取得するほか、特に上記「論理ブロックアドレス」を取得する。なお、この「論理ブロックアドレス」は、読み出しコマンドの場合には付加されない。
【００５６】
図１０は、ホスト機器２０側が想定しているブロック書き込み操作と、メモリカード１（大ブロックカード）側が実際に行う書き込み処理とを対比して示す図である。
【００５７】
ホスト機器２０側（同図の左側）では、小ブロックカードの論理アドレスに基づく１６kByteブロック単位のシーケンシャルな書き込み操作の発生時に、小ブロックカードの物理ブロックアドレスによる１６kByteブロック単位のランダムな書き込み操作を行う。
【００５８】
一方、大ブロックカード側（同図の右側）では、ホスト機器２０側から書き込みコマンドを受けた場合、小ブロックカードの論理ブロックアドレスに基づく１６kByteブロック単位のデータをフラッシュメモリ３内にシーケンシャルに書き込む。
【００５９】
前述のように、ホスト機器２０は、小ブロックの物理アドレスによる１６Byte単位のランダムな書き込み操作を行う。このようなランダムな書き込み操作では、一般に、大ブロック（２５６kByte）の一部のみを書き換えるための処理が多発する。ＮＡＮＤ型フラッシュメモリではブロック単位でしか消去を行えないため、ブロックの一部のみを書き換える場合は、書き換える新データを消去済みの新ブロックに書き込み、新データに書き換えられる旧データを含む旧ブロックから、書き換えられない残りのデータを新ブロックにコピーする必要がある。このように、ブロックの一部のみを書き換える処理は、書き換えられないデータのコピー動作（巻き添えデータコピー）を伴うため、ブロックの一部のみを書き換える処理が多発すると、オーバーヘッドが非常に増大することになる。そこで、本実施形態では、ホスト機器２０側から得られる論理アドレスの順序に従って、大ブロックカード側で物理アドレスを再度割り当てることにより、ブロックの一部のみの書き込みの発生を低減し、オーバーヘッドの増大を抑制している。
【００６０】
図１１は、大ブロックカード内のＮＡＮＤ型フラッシュメモリ３のブロックフォーマット（消去単位である２５６kByte物理ブロック分）の一例を示す図である。
【００６１】
大ブロックカードでは、消去単位である２５６kByte物理ブロックの中に、ホスト機器２０側が管理する単位である１６kByteに相当するデータを書き込むためのブロック（以下、ホスト管理ブロックと称す）が１６個分含まれている。データ書き込みの際には、小ブロックカードにおける論理ブロックアドレスの順に個々のデータが配置される。
【００６２】
各ホスト管理ブロックは、８個のページで構成される。各ページは、５１２Byteデータ領域を４個分含むと共に、各データ領域に対応する１０ByteＥＣＣ領域を含んでいる。また、ページ中の最後の５１２Byteデータ領域（４番目の５１２Byteデータ領域）の後には、２４Byte管理データ領域も設けられる。このため、ページ中の最後の１０ByteＥＣＣ領域は、４番目の５１２Byteデータ領域と２４Byte管理データ領域の両方に対応する構成となっている。
【００６３】
消去単位である２５６kByte物理ブロックに含まれる１２８個の２４Byte管理データ領域のうち、例えば最後の２４Byte管理データ領域には、ホスト機器２０側から送られてくるコマンドから取得された物理ブロックアドレスに相当するアドレス情報、及び論理ブロックアドレスに相当するアドレス情報がまとめて格納されるようになっている。これらのアドレス情報は、図８で説明した小ブロックカード物理・小ブロックカード論理変換層１２が有する第１のテーブルと、小ブロックカード論理・大ブロックカード物理変換層１３が有する第２のテーブルとを作成する際に使用される。
【００６４】
図１２は、大ブロックカード内のＮＡＮＤ型フラッシュメモリ３のブロックフォーマットの他の例を示す図である。
【００６５】
図１２に示すフロックフォーマットは、図１１に示したブロックフォーマットに比べると、各ページにおけるＥＣＣ０、ＥＣＣ１、ＥＣＣ２の領域の配置位置が異なる。ただし、各ページにおけるユーザデータの記憶容量は、図１１に示したブロックフォーマットと図１２に示すブロックフォーマットとで同じである。すなわち、図１１に示したブロックフォーマットでは、各ページに２０４８Byte（５１２Byte＋５１２Byte＋５１２Byte＋５１２Byte）の記憶領域が設けられており、図１２に示すブロックフォーマットでは、各ページに２０４８Byte（５１８Byte＋５１８Byte＋５１８Byte＋４９４Byte）の記憶領域が設けられている。以下では、図１２に示したブロックフォーマットを採用した場合を前提にして説明を行う。
【００６６】
図１３は、本実施形態のメモリカード１に対してホスト機器２０が書き込みを行う際に、メモリカード１のＩ／Ｏ（Input/Output）ピン（ピン１０〜ピン１７）とＲ／−Ｂ（Ready/Busy）ピン（ピン２）に入出力される信号例を示すタイミングチャートである。
【００６７】
ホスト機器２０は、メモリカード１が１６kByteの消去ブロックサイズを有する不揮発性メモリであると仮定してメモリカードを制御している。例えば、メモリカード１に対する書き込みの際には、ホスト機器２０は、シリアルデータインプットコマンド“８０Ｈ（Ｈは１６進を示す）”をＩ／Ｏピン（ピン１０〜ピン１７）へ入力する。次に、ホスト機器２０は、カラムアドレス“Ｃ／Ａ”およびページアドレス“Ｐ／Ａ”を、Ｉ／Ｏピンへ入力する。なお、ここでカラムアドレス“Ｃ／Ａ”およびページアドレス“Ｐ／Ａ”は、ホスト機器２０がメモリカード１に対して想定している仮想物理アドレス空間におけるカラムアドレスおよびページアドレスである。
【００６８】
更に、ホスト機器２０は、書き込みデータを、Ｉ／Ｏピン（ピン１０〜ピン１７）の個々に対し、５２８回入力する。具体的には、ホスト機器２０はライトイネーブルピンへの入力信号を５２８回クロッキングしながら、それぞれのＩ／Ｏピンに対し５２８ビット（すべてのＩ／Ｏピン合計で５２８バイト）のデータを順次シフトインする。データのシフトインが完了すると、ホスト機器２０は、プログラムコマンド“１０Ｈ”をＩ／Ｏピンへ入力する。これに応答してメモリカード１は、そのＲ／−Ｂピンに“Ｌ”の信号を出力し、メモリカード１がビジー状態であることを示す。その後、所定期間後にＲ／−Ｂピンに“Ｈ”の信号を出力することでメモリカードがレディ状態になったことを示す。
【００６９】
しかしながら、図１３におけるＲ／−Ｂピンの状態は、あくまでもホスト機器２０に対してメモリカード１がどのような状態かを示すものである。つまり、図１３において、プログラムコマンド“１０Ｈ”の入力に応答して、Ｒ／−Ｂピンがビジー状態（つまり“Ｌ”を出力）を示したとしても、内部でＮＡＮＤ型フラッシュメモリ３に対する書き込み動作（つまり、ページバッファからメモリセルアレイへのデータ転送）が実際に行われているとは限らない。また、Ｒ／−Ｂピンがレディ状態に復帰したとしても、内部でＮＡＮＤ型フラッシュメモリ３に対する書き込み動作が実際に完了しているとは限らない。
【００７０】
図１４は、本実施形態のメモリカード１内のＮＡＮＤ型フラッシュメモリ３に対して、メモリカード１内のコントローラ４が書き込みを行う際に、ＮＡＮＤ型フラッシュメモリ３のＩ／Ｏピン１〜８とＲ／−Ｂ(Ready/Busy)ピンに入出力される信号例を示すタイミングチャートである。なお、ＮＡＮＤ型フラッシュメモリ３、及びメモリインタフェース部５は、図３に示したホストインタフェース部６が有するピンと同様に、コマンド、アドレス、及びデータが入出力されるＩ／Ｏピン１〜８、レディ・ビジー信号を出力するＲ／−Ｂ(Ready/Busy)ピン、データを出力させるリードイネーブル信号が入力される−ＲＥ(Read Enable)ピンを有している。さらに、ＮＡＮＤ型フラッシュメモリ３を動作モードにするチップイネーブル信号が入力される−ＣＥ(Card Enable)ピン、コマンドの取り込みをコントロールするためのコマンドラッチイネーブル信号が入力されるＣＬＥ(Command Latch Enable)ピン、アドレス、及び入力データの取り込みをコントロールするためのアドレスラッチイネーブル信号が入力されるＡＬＥ(Address Latch Enable)ピンを有している。さらに、データをＮＡＮＤ型フラッシュメモリ３に書き込むためのライトイネーブル信号が入力される−ＷＥ(Write Enable)ピン、書き込み、及び消去を強制的に禁止させるためのライトプロテクト信号が入力される−ＷＰ(Write Protect)ピンを有している。
【００７１】
コントローラ４は、ＮＡＮＤ型フラッシュメモリ３が２５６kByteの消去ブロックサイズを有する不揮発性メモリであると認識している。例えば、ＮＡＮＤ型フラッシュメモリ３に対する書き込みの際には、コントローラ４は、シリアルデータインプットコマンド“８０Ｈ（Ｈは１６進を示す）”をＩ／Ｏピン１〜８へ入力する。次に、コントローラ４は、カラムアドレス“Ｃ／Ａ”およびページアドレス“Ｐ／Ａ”を、Ｉ／Ｏピン１〜８へ入力する。なお、ここでカラムアドレス“Ｃ／Ａ”およびページアドレス“Ｐ／Ａ”は、コントローラ４がＮＡＮＤ型フラッシュメモリ３に対して想定している実物理アドレス空間におけるカラムアドレスおよびページアドレスである。したがって、図１３におけるカラムアドレス“Ｃ／Ａ”およびページアドレス“Ｐ／Ａ”とは必ずしも一致していない。
【００７２】
更に、コントローラ４は、書き込みデータを、Ｉ／Ｏピン１〜８の個々に対し、２１１２回入力する。具体的には、コントローラ４は、ライトイネーブルピンへの入力信号を２１１２回クロッキングしながら、それぞれのＩ／Ｏピンに対し２１１２ビット（すべてのＩ／Ｏピン合計で２１１２バイト）のデータを順次シフトインする。データのシフトインが完了すると、コントローラ４は、プログラムコマンド“１０Ｈ”をＩ／Ｏピン１〜８へ入力する。これに応答してメモリカード１は、そのＲ／−Ｂピンに“Ｌ”の信号を出力し、メモリカードがビジー状態であることを示す。その後、所定期間後にＲ／−Ｂピンに“Ｈ”の信号を出力することでメモリカードがレディ状態になったことを示す。図１４におけるＲ／−Ｂピンの状態は、コントローラ４に対してＮＡＮＤ型フラッシュメモリ３が実際にどのような状態かを示すものである。
【００７３】
なお、前記図１３および図１４においては、カラムアドレス“Ｃ／Ａ”およびページアドレス“Ｐ／Ａ”の入力をそれぞれ１つのサイクルで示しているが、メモリカード１の容量またはＮＡＮＤ型フラッシュメモリ３の容量に応じて、適宜２サイクル以上になる場合もある。
【００７４】
この発明の実施形態のメモリカード及びその制御方法によれば、メモリカードが搭載したＮＡＮＤ型フラッシュメモリの仕様に明記されておらず、かつ禁止もされていないシーケンスでコマンドを発行してくるホスト機器に対して、正常に応答すること可能である。
【００７５】
なお、前述した実施形態は唯一の実施形態ではなく、前記構成の変更あるいは各種構成の追加によって、様々な実施形態を形成することが可能である。
【図面の簡単な説明】
【００７６】
【図１】この発明の実施形態のメモリカードの構成を示すブロック図である。
【図２】本実施形態のメモリカードの外形とピン配置を示す平面図である。
【図３】本実施形態のメモリカードのピンアサインを示す図表である。
【図４】本実施形態のメモリカードに入力されたコマンドシーケンスを処理する制御手順の一例を示すフローチャートである。
【図５】本実施形態のメモリカードに入力されるＩＤリードコマンドのコマンドシーケンスの一例を示すタイミングチャートである。
【図６】本実施形態のメモリカードに入力されるＩＤリードコマンドのコマンドシーケンスの他の例を示すタイミングチャートである。
【図７】ホスト機器が想定しているフラッシュメモリと、メモリカード内のＮＡＮＤ型フラッシュメモリのデータ配置を示す図である。
【図８】ホスト機器側システム及びメモリカードにおける各コミュニケーション階層を示す図である。
【図９】ホスト機器から送られてくるコマンドのフォーマットを示す図である。
【図１０】ホスト機器が想定しているブロック書き込み操作と、メモリカードが実際に行う書き込み処理とを対比して示す図である。
【図１１】メモリカード内のＮＡＮＤ型フラッシュメモリのブロックフォーマットの一例を示す図である。
【図１２】メモリカード内のＮＡＮＤ型フラッシュメモリのブロックフォーマットの他の例を示す図である。
【図１３】本実施形態のメモリカードに対してホスト機器が書き込みを行う際に、メモリカードのＩ／ＯピンとＲ／−Ｂピンに入出力される信号例を示すタイミングチャートである。
【図１４】本実施形態のメモリカード内のＮＡＮＤ型フラッシュメモリに対してコントローラが書き込みを行う際に、ＮＡＮＤ型フラッシュメモリのＩ／ＯピンとＲ／−Ｂピンに入出力される信号例を示すタイミングチャートである。
【符号の説明】
【００７７】
１…メモリカード、３…ＮＡＮＤ型フラッシュメモリ、４…コントローラ、５…メモリインタフェース部、６…ホストインタフェース部、７…バッファ、８…ＣＰＵ（Central Processing Unit）、９…ＲＯＭ（Read-Only Memory）、１０…ＲＡＭ（Random Access Memory）、２０…ホスト機器。
【図１】
2006092019.tif 000003
【図２】
2006092019.tif 000004
【図３】
2006092019.tif 000005
【図４】
2006092019.tif 000006
【図５】
2006092019.tif 000007
【図６】
2006092019.tif 000008
【図７】
2006092019.tif 000009
【図８】
2006092019.tif 000010
【図９】
2006092019.tif 000011
【図１０】
2006092019.tif 000012
【図１１】
2006092019.tif 000013
【図１２】
2006092019.tif 000014
【図１３】
2006092019.tif 000015
【図１４】
2006092019.tif 000016