(57)【要約】【課題】ブロック単位アドレッシング方法に対応していない既存のホスト装置との互換性を維持しつつ、メモリカードのメモリアドレス空間の拡張を図る。【解決手段】ＳＤメモリカード１０１は、バンク識別番号と、特定ビット幅のメモリアドレスを伴うメモリアクセスコマンドとをホスト装置１０から受信するＩ／Ｏインタフェース１１１と、３２ビット幅のメモリアドレスによってアクセス可能な最大メモリサイズよりも大きいメモリサイズの記憶領域を含むフラッシュメモリ１１６と、フラッシュメモリ１１６の記憶領域を複数のバンクに分割して管理し、バンク識別番号で指定される複数のバンクの一つを、３２ビット幅のメモリアドレスを伴うメモリアクセスコマンドに従ってアクセスするカードコントローラ１１４とを備えている。【選択図】      図１
2005258804.tif 000002
【特許請求の範囲】
【請求項１】
ホスト装置に取り外し自在に接続可能なメモリカード装置において、
前記ホスト装置との通信を実行して、前記ホスト装置から送信される、少なくとも、特定ビット幅のメモリアドレスを伴うメモリアクセスコマンドを含むコマンド群を受信するホストインタフェースユニットと、
前記特定ビット幅のメモリアドレスによってアドレス指定可能な最大メモリサイズよりも大きな記憶領域を有する不揮発性半導体メモリと、
前記不揮発性半導体メモリの記憶領域を複数のバンクに分割し前記複数のバンクそれぞれに対応する複数のバンク識別番号を管理するバンク識別番号管理手段と、
前記ホスト装置から送信されるバンク指定コマンドに含まれるバンク識別番号に応じて、前記複数のバンクの一つをアクセス対象バンクとして指定するバンク指定手段と、
前記指定された前記複数のバンクの一つを、前記ホスト装置から送信される、前記特定ビット幅のメモリアドレスを伴う前記メモリアクセスコマンドに応じてアクセスするメモリ制御手段とを具備することを特徴とするメモリカード装置。
【請求項２】
前記ホスト装置から送信されるカードアドレス生成コマンドに応じて、前記メモリカード装置を識別するためのカードアドレスを生成して前記ホスト装置に送信するカードアドレス生成手段をさらに具備し、
前記バンク識別番号管理手段は、前記複数のバンクの中の特定の一つのバンクに対して前記生成されたカードアドレスの値に等しいバンク識別番号が割り当てられるように、前記カードアドレス生成手段によって生成されたカードアドレスから、前記複数のバンクそれぞれに対応するバンク識別番号を生成するように構成されており、
前記バンク指定コマンドは、前記ホスト装置から送信される、前記カードアドレスで指定されるメモリカード装置の動作モードを前記ホスト装置との間でデータ転送を実行可能なデータ転送モードに遷移させるカード選択コマンドであることを特徴とする請求項１記載のメモリカード装置。
【請求項３】
前記バンク識別番号管理手段は、前記メモリカード装置を識別するためのカードアドレスから、前記複数のバンクそれぞれに対応するバンク識別番号を生成するように構成されており、
前記バンク指定コマンドは、前記ホスト装置から送信される、前記カードアドレスから生成されるバンク識別番号を含み前記メモリカード装置の動作モードを前記ホスト装置との間でデータ転送を実行可能なデータ転送モードに遷移させるカード選択コマンドであり、
前記バンク指定手段は、前記カード選択コマンドに含まれるバンク識別番号に応じて前記複数のバンクの一つをアクセス対象バンクとして指定するように構成されていることを特徴とする請求項１記載のメモリカード装置。
【請求項４】
ホスト装置に取り外し自在に接続可能なメモリカード装置において、
前記ホスト装置との通信を実行して、前記ホスト装置から送信される、少なくとも、前記メモリカード装置を識別するためのカードアドレスの生成を要求するカードアドレス生成コマンドと、前記メモリカード装置を識別するためのカードアドレスから生成された値をバンク識別番号として含み前記メモリカード装置の動作モードを前記ホスト装置との間でデータ転送を実行可能な転送モードに遷移させるカード選択コマンドと、特定ビット幅のメモリアドレスを伴うメモリアクセスコマンドとを含むコマンド群を受信するホストインタフェースユニットと、
前記特定ビット幅のメモリアドレスによってアドレス指定可能な最大メモリサイズよりも大きな記憶領域を有する不揮発性半導体メモリと、
前記カードアドレス生成コマンドに応答して、前記カードアドレスを生成して前記ホスト装置に送信するカードアドレス生成手段と、
前記不揮発性半導体メモリの記憶領域を複数のバンクに分割し、前記カードアドレス生成手段によって生成されたカードアドレスから生成された値を、前記複数のバンクにそれぞれ対応する前記バンク識別番号として管理するバンク識別番号管理手段と、
前記カード選択コマンドに含まれるバンク識別番号に応じて、前記複数のバンクの一つをアクセス対象バンクとして指定するバンク指定手段と、
前記指定された前記複数のバンクの一つを、前記ホスト装置から送信される、前記特定ビット幅のメモリアドレスを伴う前記メモリアクセスコマンドに応じてアクセスするメモリ制御手段とを具備することを特徴とするメモリカード装置。
【請求項５】
ホスト装置に取り外し自在に接続可能なメモリカード装置の動作を制御するメモリカード制御方法であって、
前記ホスト装置との通信を実行して、前記ホスト装置から送信される、少なくとも、特定ビット幅のメモリアドレスを伴うメモリアクセスコマンドを含むコマンド群を受信するステップと、
前記特定ビット幅のメモリアドレスによってアドレス指定可能な最大メモリサイズよりも大きな記憶領域を有する不揮発性半導体メモリの前記記憶領域を複数のバンクに分割し、前記メモリカード装置を識別するためのカードアドレスから、前記複数のバンクそれぞれに割り当てられる複数のバンク識別番号を生成するステップと、
前記ホスト装置から送信される、前記カードアドレスから生成された値をバンク識別番号として含み前記メモリカード装置の動作モードを前記ホスト装置との間でデータ転送を実行可能な転送モードに遷移させるカード選択コマンドに応じて、前記複数のバンクの一つをアクセス対象バンクとして指定するバンク指定ステップと、
前記指定された前記複数のバンクの一つを、前記ホスト装置から送信される、前記特定ビット幅のメモリアドレスを伴う前記メモリアクセスコマンドに応じてアクセスするステップとを具備することを特徴とするメモリカード制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はホスト装置に取り外し自在に接続可能なメモリカード装置およびその制御方法に関する。
【背景技術】
【０００２】
近年、音楽、映像のようなコンテンツデータのデジタル化に伴いデジタル機器の開発が盛んに行われている。これらのデジタル機器の多くは、コンテンツデータを記録するためにコンパクトディスクドライブ、ハードディスクドライブのような記憶装置を備えている。
【０００３】
最近では、デジタル機器は小型化が進み、例えば、音楽再生機のようなデジタル機器では、そのサイズが数センチメートル四方である製品も登場している。このような小型デジタル機器においては、記録媒体の小型化も必要となる。小型記録媒体としては、不揮発性半導体メモリを内蔵したメモリカードが注目されている。
【０００４】
このようなメモリカードの一種として、著作権保護機能を有するメモリカードが知られている（例えば、特許文献１参照。）。このメモリカードは、著作権保護機能の一つとして、不正機器を排除するためのリボケーション機能を有している。
【０００５】
ＳＤ（Secure Digital）メモリカードは著作権保護機能を有するメモリカードであり、ＮＡＮＤ型フラッシュＥＥＰＲＯＭを搭載している。このＮＡＮＤ型フラッシュＥＥＰＲＯＭは不揮発性半導体メモリの一種であり、電気的に書き換えが可能である。ＮＡＮＤ型フラッシュＥＥＰＲＯＭはフラッシュメモリに分類されている。フラッシュメモリにおいては、１回の消去動作で消去可能な最低エリアが消去ブロックとして規定されており、データの消去は常に消去ブロックを単位として行われる。従って、フラッシュメモリは、データの更新が頻繁に発生するランダムアクセス用途よりは、大容量のファイルの記録に適している。
【特許文献１】特開２０００−３５７１２６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、ＳＤメモリカードにおいては、ホスト装置からのメモリアクセスコマンドに付随する３２ビット幅のメモリアドレスを用いて、バイト単位でアクセス位置を指定するというアドレッシング方法（以下、バイト単位アドレッシング方法と称する）が利用されている。このため、ＳＤメモリカードのメモリサイズの上限は２３２バイト、つまり４ＧＢに制限される。
【０００７】
もし、バイト単位アドレッシング方法の代わりに、複数バイトをまとめたブロック単位でアクセス位置を指定するというアドレッシング方法（以下、ブロック単位アドレッシング方法と称する）を利用したならば、たとえ３２ビット幅のメモリアドレスであっても、４ＧＢ以上のメモリアドレス空間をアクセスすることが可能となる。
【０００８】
しかし、単純にブロック単位アドレッシング方法を使用すると、ブロック単位アドレッシング方法に対応していない既存のホスト装置との互換性が維持できなくなるという問題が発生する。すなわち、ブロック単位アドレッシング方法を用いてデータの書き込みを行うと、ファイルの断片化により、一つのファイルを構成するデータ群が４ＧＢを越えるメモリアドレス空間内に分散して書き込まれる場合がある。これは、例えば、全メモリサイズが８ＧＢのメモリカードを例にとると、あるファイルＡを構成する一部のデータは８ＧＢのメモリ空間内の下位４ＧＢ内の位置に存在するにもかかわらず、そのファイルＡの残りの部分のデータは上位４ＧＢ内の位置に存在するという状況である。このように、一つのファイルを構成するデータ群が４ＧＢを越えるメモリアドレス空間内に分散されてしまうと、ブロック単位アドレッシング方法に対応しておらず、バイト単位アドレッシング方法のみに対応した既存のホスト装置は、もはやそのファイルを正しくリードすることができない。バイト単位アドレッシング方法によってアクセス可能な最大メモリ空間は４ＧＢだからである。よって、メモリカードのメモリ空間を拡張するための新たな仕組みの実現が必要である。
【０００９】
本発明は上述の事情を考慮してなされたものであり、ブロック単位アドレッシング方法に対応していない既存のホスト装置との互換性を維持しつつ、アクセス可能なメモリアドレス空間を拡張することが可能なメモリカード装置およびその制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述の課題を解決するため、本発明は、ホスト装置に取り外し自在に接続可能なメモリカード装置において、前記ホスト装置との通信を実行して、前記ホスト装置から送信される、少なくとも、特定ビット幅のメモリアドレスを伴うメモリアクセスコマンドを含むコマンド群を受信するホストインタフェースユニットと、前記特定ビット幅のメモリアドレスによってアドレス指定可能な最大メモリサイズよりも大きな記憶領域を有する不揮発性半導体メモリと、前記不揮発性半導体メモリの記憶領域を複数のバンクに分割し前記複数のバンクそれぞれに対応する複数のバンク識別番号を管理するバンク識別番号管理手段と、前記ホスト装置から送信されるバンク指定コマンドに含まれるバンク識別番号に応じて、前記複数のバンクの一つをアクセス対象バンクとして指定するバンク指定手段と、前記指定された前記複数のバンクの一つを、前記ホスト装置から送信される、前記特定ビット幅のメモリアドレスを伴う前記メモリアクセスコマンドに応じてアクセスするメモリ制御手段とを具備することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、ブロック単位アドレッシング方法に対応していない既存のホスト装置との互換性を維持しつつ、アクセス可能なメモリアドレス空間を拡張することが可能となる。
【発明を実施するための最良の形態】
【００１２】
以下、図面を参照して、本発明の実施形態を説明する。  
（実施形態１）
図１は本発明の第一実施形態に係るメモリカードの構成を示すブロック図である。このメモリカード１０１は、ホスト装置１０に取り外し自在に接続可能なメモリカードであり、例えば、ＳＤ（Secure Digital）メモリカードとして実現されている。ＳＤメモリカード１０１は、パーソナルコンピュータ、ＰＤＡ（Personal Digital Assistants）、カメラ、携帯電話のようなホスト装置１０に設けられたメモリカード装着スロット（ＳＤカードスロット）に着脱自在に装着して使用されるリムーバブル記憶装置である。ホスト装置１０とＳＤメモリカード１０１との間の通信は、全てホスト装置１０からのコマンドによって制御される。
【００１３】
ホスト装置１０とＳＤメモリカード１０１との間を接続するバス（ＳＤバス）２０は、６本の通信線（データＤＡＴ０−３，コマンドＣＭＤ，クロックＣＬＫ）と、３本の電源供給線（ＶＤＤ，ＧＮＤ，ＧＮＤ）を含む。これに対応して、ＳＤメモリカード１０１には、図示のように、４本のデータピン［ＤＡＴ０−３］１０９，１１０，１０２，１０３、コマンドピン［ＣＭＤ］１０４、クロック信号ピン［ＣＬＫ］１０７、電源ピン［ＶＤＤ］１０６、２つのグランドピン［ＧＮＤ］１０５，１０８が設けられている。６本の通信線（データＤＡＴ０−３，コマンドＣＭＤ，クロックＣＬＫ）の機能は次の通りである。
【００１４】
・ＤＡＴ０−３：  各データ線はホスト装置１０とＳＤメモリカード１０１との間のデータ転送に使用される双方向信号線である。ホスト装置１０およびＳＤメモリカード１０１はそれぞれプッシュプルモードで動作する。
【００１５】
・ＣＭＤ：  コマンド信号線は双方向信号線である。ホスト装置１０からＳＤメモリカード１０１へのコマンドの転送、およびＳＤメモリカード１０１からホスト装置１０へのレスポンスの転送に使用される。リードコマンドおよびライトコマンドのようなメモリアクセスコマンドの各々は、そのコマンド引数として３２ビット幅のメモリアドレスを含む。
【００１６】
・ＣＬＫ：  クロック信号線はホスト装置１０からＳＤメモリカード１０１へクロック信号ＣＬＫを送信するための信号線である。ホスト装置１０からＳＤメモリカード１０１へのコマンドの転送、およびホスト装置１０とＳＤメモリカード１０１との間のデータ転送などは、ホスト装置１０からＳＤメモリカード１０１へ供給されるクロック信号ＣＬＫに同期して実行される。
【００１７】
ＳＤメモリカード１０１には、カードコントローラ１１４およびフラッシュメモリ１１６が設けられている。フラッシュメモリ１１６は電気的に消去および書き込み可能な不揮発性半導体メモリであり、例えば、１以上のＮＡＮＤ型フラッシュＥＥＰＲＯＭチップから構成されている。本実施形態においては、フラッシュメモリ１１６は、３２ビット幅のメモリアドレスによってアドレス指定可能な最大メモリサイズ（４ＧＢ）よりも大きいメモリサイズの記憶領域を含む。
【００１８】
フラッシュメモリ１１６の記憶領域は、多数の消去ブロックから構成されている。各消去ブロックのサイズは、例えば、８ＫＢ、１６ＫＢ、あるいは３２ＫＢである。各消去ブロックは、複数のページから構成されている。１ページは、通常、５２８（５１２＋１６）バイトで構成されている。５１２バイトはデータ記憶用領域として用いられ、１６バイトはエラー訂正コード等を格納するための冗長領域として用いられる。消去ブロックのサイズが８ＫＢであれば、１消去ブロックは１６ページから構成される。消去ブロックのサイズが１６ＫＢであれば、１消去ブロックは３２ページから構成される。また消去ブロックのサイズが３２ＫＢであれば、１消去ブロックは６４ページで構成される。例えば、６４ＭＢのフラッシュＥＥＰＲＯＭの場合は、５２８バイト×３２ページ×４０９６消去ブロックで構成されている。
【００１９】
ＳＤメモリカード１０１においては、フラッシュメモリ１１６をユーザデータ領域と保護領域に分けて管理しており通常のコマンドではこのユーザーデータ領域しか読み書きできない。保護領域にアクセスするためには、所定の認証処理が必要となる。この方法は、ＣＰＲＭ（Ｃｏｎｔｅｎｔ  Ｐｒｏｔｅｃｔｉｏｎ  ｆｏｒ  Ｒｅｃｏｒｄａｂｌｅ  Ｍｅｄｉａ：  ｈｔｔｐ：／／ｗｗｗ．４ｃｅｎｔｉｔｙ．ｃｏｍ／ｔｅｃｈ／ｃｐｒｍ／）の仕組みが利用される。この仕組みにより不正機器のアクセスを抑制する機能などが実現される。
【００２０】
カードコントローラ１１４は、ホスト装置１０からのコマンドに応じてフラッシュメモリ１１６をアクセスするコントローラである。このカードコントローラ１１４は、Ｉ／Ｏインタフェースユニット（Ｉ／Ｏ  Ｉ／Ｆ）１１１、ＲＯＭ１１２、ＳＲＡＭ１１３、メモリインタフェース（メモリ  Ｉ／Ｆ）１１５、レジスタ１１７、バンクＩＤ生成部１１８、バンク指定部１１９、およびＭＰＵ１２０を備えている。
【００２１】
Ｉ／Ｏインタフェースユニット（Ｉ／Ｏ  Ｉ／Ｆ）１１１はホスト装置１０との通信を実行するためのホストインタフェースユニットである。ＲＯＭ１１２は、ＭＰＵ１２０によって実行されるプログラム（ファームウェア）を格納している。メモリインタフェース１１５は、ＭＰＵ１２０の制御の下に、ホスト装置１０からのメモリアクセスコマンドに従ってフラッシュメモリ１１６をアクセスするメモリ制御ユニットである。レジスタ１１７は、ＳＤメモリカード１０１に関する各種情報を保持するために利用される。バンクＩＤ生成部１１８は、フラッシュメモリ１１６の記憶領域を複数のバンク（複数の記憶領域）に分割し、それら複数のバンクそれぞれに対応する複数のバンク識別番号を管理するバンク識別番号管理ユニットである。このバンクＩＤ生成部１１８は、複数のバンクそれぞれに割り当てるべき複数のバンク識別番号（バンクＩＤ）を生成する。バンク指定部１１９は、ホスト装置１０から送信された送信バンク識別番号に応じて、複数のバンクの中の一つをアクセス対象バンクとして指定するバンク指定ユニットである。ＭＰＵ１２０は、ＳＤメモリカード１０１の動作を制御するプロセッサであり、ＲＯＭ１１２からＳＲＡＭ１１３にロードされるファームウェアを実行する。ＭＰＵ１２０は、バンクＩＤ生成部１１８およびバンク指定部１１９を用いることにより、フラッシュメモリ１１６の記憶領域を複数のバンクに分割して管理し、そしてホスト装置１０からのバンク識別番号で指定されるバンクを、ホスト装置１０からのメモリアクセスコマンド（ライトコマンド、リードコマンド等）に従ってアクセスする。各バンクに対するアドレッシング（アドレス指定）は、ブロック単位アドレッシング方法に対応していない既存のホスト装置との互換性を維持するために、バイト単位アドレッシング方法を用いて実行される。
【００２２】
次に、図２を参照して、フラッシュメモリ１１６の構成例を説明する。
【００２３】
図２に示されているように、フラッシュメモリ１１６の記憶領域は、保護領域２０１と、ユーザーデータ領域２０２とに分けられている。ユーザーデータ領域２０２のメモリサイズは、メモリアクセスコマンドにコマンド引数として付随する３２ビット幅のメモリアドレスによってアドレス指定可能な最大メモリサイズよりも大きなメモリサイズ、例えば１６ＧＢである。ユーザーデータ領域２０２は、バンクＩＤ生成部１１８によって、バンク０−バンク３の４つのバンクに分割して管理されている。即ち、ユーザーデータ領域２０２の１６ＧＢのメモリアドレス空間（１６進表示で０００００００００〜３ＦＦＦＦＦＦＦＦの空間）には、その下位アドレス側から順にバンク０，１，２，３が割り当てられている。これらバンク０−バンク３の各々のメモリサイズは、３２ビット幅メモリアドレスによってアドレス指定可能な最大メモリサイズ４ＧＢ以下のサイズである。本実施形態では、各バンクのメモリサイズを４ＧＢとしている。
【００２４】
図３には、バンクＩＤ生成部１１８によって管理されているバンクＩＤテーブルの例が示されている。このバンクＩＤテーブルは、バンク０−バンク３の各々に対応するバンクＩＤと、各バンクに対応する絶対アドレスの上位２ビットとの関係を規定するテーブルである。絶対アドレスはユーザーデータ領域２０２が有する１６ＧＢのメモリアドレス空間（１６進表示で０００００００００〜３ＦＦＦＦＦＦＦＦの空間）をアドレス指定可能な３４ビット幅のメモリアドレスである。バンク指定部１１９は、バンクＩＤ生成部１１８によって管理されている、図３のバンクＩＤテーブルを参照して、ホスト装置２０から指定されたバンクＩＤに対応する絶対アドレスの上位２ビットを得る。この上位２ビットと、ホスト装置２０からのメモリアドレスコマンドのコマンド引数として与えられる３２ビット幅のメモリアドレスとによって、３４ビット幅の絶対メモリアドレスを生成することが出来る。
【００２５】
図４には、各バンクに対応する絶対アドレスの上位２ビットと、コマンド引数（３２ビット幅のメモリアドレス）と、３４ビット幅の絶対アドレスとの関係が示されている。
【００２６】
上述したように、３２ビット幅のメモリアドレスは、ホスト装置１０からのメモリアクセスコマンドと一緒にそのコマンドの引数として与えられる。３２ビット幅のメモリアドレスの最大値は１６進表示でＦＦＦＦＦＦＦＦである。
【００２７】
もしホスト装置２０から指定されたバンクＩＤが０であれば、バンク指定部１１９は、バンク０を選択するために、ホスト装置１０からのメモリアクセスコマンドに付随する３２ビット幅のメモリアドレスに対して、上位２ビット“００”を付加することにより、バンク０をアクセスするための３４ビット幅の絶対メモリアドレスを生成する。もしホスト装置２０から指定されたバンクＩＤが１であれば、バンク指定部１１９は、バンク１を選択するために、ホスト装置１０からのメモリアクセスコマンドに付随する３２ビット幅のメモリアドレスに対して、上位２ビット“０１”を付加することにより、バンク１をアクセスするための３４ビット幅の絶対メモリアドレスを生成する。もしホスト装置２０から指定されたバンクＩＤが２であれば、バンク指定部１１９は、バンク２を選択するために、ホスト装置１０からのメモリアクセスコマンドに付随する３２ビット幅のメモリアドレスに対して、上位２ビット“１０”を付加することにより、バンク２をアクセスするための３４ビット幅の絶対メモリアドレスを生成する。またもしホスト装置２０から指定されたバンクＩＤが３であれば、バンク指定部１１９は、バンク３を選択するために、ホスト装置１０からのメモリアクセスコマンドに付随する３２ビット幅のメモリアドレスに対して、上位２ビット“１１”を付加することにより、バンク３をアクセスするための３４ビット幅の絶対メモリアドレスを生成する。
【００２８】
次に、図５を参照して、ＳＤメモリカード１０１の動作を説明する。ここでは、ホスト装置１０からのライトデータをバンクに書き込む場合を想定する。
【００２９】
ステップ５０１において、ホスト装置１０はコマンド（ＣＭＤ）線を介して初期化コマンドをＳＤメモリカード１０１に送信する。ＳＤメモリカード１０１のカードコントローラ１１４は、ステップ５０２において所定の初期化処理を行い、そしてステップ５０３において、初期化処理の終了を示すレスポンスをコマンド（ＣＭＤ）線を介してホスト装置１０に送信する。ステップ５０４において、ホスト装置１０はレスポンスを受信し初期化処理の終了を確認する。
【００３０】
ホスト装置１０は、ステップ５０５において、アクセスすべきバンクを指定するバンク識別番号（バンクＩＤ）を含むバンク指定コマンドをコマンド（ＣＭＤ）線を介してＳＤメモリカード１０１に送信する。ＳＤメモリカード１０１のカードコントローラ１１４は、ステップ５０６において、バンク指定処理として、前述のバンクＩＤテーブルを用いて、ホスト装置１０からのバンク指定コマンドに含まれるバンクＩＤの値を、絶対アドレスの上位２ビットに変換する処理を実行し、その上位２ビットの値を保持しておく。ステップ５０７において、ＳＤメモリカード１０１のカードコントローラ１１４は、バンク指定処理の終了を示すレスポンスをコマンド（ＣＭＤ）線を介してホスト装置１０に送信する。ステップ５０８において、ホスト装置１０はレスポンスを受信し、バンク指定処理の終了を確認する。
【００３１】
ステップ５０９において、ホスト装置１０は、ライトコマンドをコマンド（ＣＭＤ）線を介してＳＤメモリカード１０１に送信する。このライトコマンドには、そのコマンド引数として３２ビット幅のメモリアドレス値が付加されている。ＳＤメモリカード１０１のカードコントローラ１１４は、ライトコマンドを受け付けると、ステップ５１０において、ライトコマンドに付随するコマンド引数から３２ビット幅のメモリアドレス値を得、この３２ビット幅のメモリアドレス値に対して、保持しておいた上位２ビットの値を拡張することにより、３４ビット幅の絶対アドレスを生成する。続くステップ５１１において、ＳＤメモリカード１０１のカードコントローラ１１４は、ライトコマンドに後続してホスト装置１０からデータ（ＤＡＴ０−３）線を介して送信されるライトデータを、３４ビット幅の絶対アドレスで指定されるフラッシュメモリ１１６内の記憶位置に書き込む書き込み処理を実行する。書き込み処理においては、メモリＩ／Ｆ１１５を介して絶対アドレス、ライトデータ、その制御信号がフラッシュメモリ１１６に供給される。書き込み対象バンクは上位２ビットの値によって決定され、またその書き込み対象バンク内のどの記憶位置にデータを書き込むかは、ライトコマンドに付随する３２ビット幅のメモリアドレス値によって決定される。なお、バンク指定機能を持たない既存のホスト装置からのライトコマンドを受信した場合、つまりバンク指定コマンドを受けずにライトコマンドを受信した場合には、ＳＤメモリカード１０１のカードコントローラ１１４は、常にバンク０をアクセス対象バンクとして選択する。
【００３２】
続くステップ５１２では、ＳＤメモリカード１０１のカードコントローラ１１４は、書き込み処理の完了を示すレスポンスをコマンド（ＣＭＤ）線を介してホスト装置１０に送信する。ステップ５１３において、ホスト装置１０はレスポンスを受信し、書き込みの完了を確認する。
【００３３】
尚、同一バンクに対するライトアクセスを複数回実行する場合には、ホスト装置１０は、最初のライトコマンドを送信する前にバンク指定コマンドを一回送信しておくだけでよく、以降は、バンク指定コマンドを送信せずに、ライトコマンドだけを送信すればよい。
【００３４】
また、バンクＩＤの値としては、各バンクを一意に識別することが出来る任意の値を用いることが出来る。さらに、バンクＩＤを含むバンク指定コマンドは必ずしもバンク指定専用のコマンドである必要は無い。バンクＩＤの値をコマンド引数として含むことが可能なコマンドであれば、様々な既存のコマンドをバンク指定コマンドとして利用することが出来る。
【００３５】
このように、本実施形態においては、ホスト装置１０からのバンクＩＤによってまずアクセス対象バンクが指定され、そしてその指定されたアクセス対象バンクに対するライトアクセスがホスト装置１０からのライトコマンドに従って実行される。よって、ホスト装置１０は、アクセス対象バンクを変えるだけで、３２ビット幅のメモリアドレス（バイト単位アドレス）でアクセス可能なメモリアドレス空間よりも大きなメモリアドレス空間をアクセスすることが可能となる。よって、ブロック単位アドレッシング方法に対応していない既存のホスト装置との互換性を維持しつつ、アクセス可能なメモリアドレス空間を拡張することが可能となる。さらに、ファイルの書き込み時には、あるバンクが指定された状態で、ファイルを構成するデータ群を書き込むための何回かのライトアクセスが指定されたバンクに対して実行される。このため、たとえファイルの断片化が発生しても、同一のファイルを構成するデータ群が異なるバンクに跨って記憶されてしまうという事態の発生を防止することができる。したがって、バンク指定機能を持たない既存のホスト装置であっても、バンク０内に存在するファイルについては、そのファイルを構成する全てのデータ群を正しくリードすることができる。
【００３６】
尚、データの読み出しも図５と同様の手順で実行される。また、バンク０−３を４つのフラッシュＥＥＰＲＯＭチップから構成しても良い。この場合、例えば、絶対メモリアドレスの上位２ビットの値に応じて、４つのフラッシュＥＥＰＲＯＭチップの一つに例えばチップイネーブル信号を供給することにより、４つのフラッシュＥＥＰＲＯＭチップの一つがアクセス対象バンクとして指定される。そして、指定されたフラッシュＥＥＰＲＯＭチップに対するアクセスが、３２ビット幅のメモリアドレスを含むメモリアクセスコマンドに従って実行される。
【００３７】
次に、バンク指定コマンドとして、カード選択コマンド（ＣＭＤ７）を利用する場合について説明する。
【００３８】
カード選択コマンド（ＣＭＤ７）は、ＳＤメモリカード１０１の動作モードを、ホスト装置との間でデータ転送を実行可能なデータ転送モードに遷移させるためのコマンドである。カード選択コマンド（ＣＭＤ７）は、ＲＣＡ（Ｒｅｌａｔｉｖｅ  Ｃａｒｄ  Ａｄｄｒｅｓｓ）と称される、ＳＤメモリカード１０１を識別するためのカードアドレスを含む。ＳＤメモリカード１０１は、自身のＲＣＡを含むカード選択コマンドを受信したとき、そのＳＤメモリカード１０１の動作モードをデータ転送モードに遷移させる。データ転送モードに遷移すると、ＳＤメモリカード１０１は、ホスト装置１０からのメモリアクセスコマンド（リードコマンド、ライトコマンド等）を正常に受け付けることができる。よって、通常、ＳＤメモリカード１０１に対するリードアクセスおよびライトアクセスを実行する場合には、メモリアクセスコマンドを発行する前に、ＳＤメモリカード１０１にカード選択コマンドを発行することによって、ＳＤメモリカード１０１をデータ転送モードに設定することが必要となる。
【００３９】
したがって、もしＲＣＡとバンクＩＤとを含むカード選択コマンド（ＣＭＤ７）をＳＤメモリカード１０１に送信すれば、データ転送モードへの遷移の指示とアクセス対象バンクの指定とを一つのコマンドで行うことが出来る。
【００４０】
図６には、カード選択コマンド（ＣＭＤ７）を用いてアクセス対象バンクを指定する処理の手順が示されている。
【００４１】
ステップ６０１において、ホスト装置１０はＲＣＡ生成コマンド（ＣＭＤ３）をコマンド（ＣＭＤ）線を介してＳＤメモリカード１０１に送信する。ＲＣＡ生成コマンド（ＣＭＤ３）は、ＳＤメモリカード１０１に対してＲＣＡの生成（ＲＣＡの発行とも云う）を要求するコマンドである。ステップ６０２においてＳＤメモリカード１０１のカードコントローラ１１４は自身でＲＣＡを生成し、ステップ６０３においてレスポンスとしてそのＲＣＡをコマンド（ＣＭＤ）線を介してホスト装置１０に返信する。ステップ６０４において、ホスト装置１０はＳＤメモリカード１０１からのレスポンスを受信し、ＲＣＡを得る。次に、ステップ６０５において、ホスト装置１０は、ＳＤメモリカード１０１に対してカード選択コマンド（ＣＭＤ７）を送信する。このカード選択コマンド（ＣＭＤ７）は、ＳＤメモリカード１０１のＲＣＡと、アクセス対象バンクを指定するためのバンクＩＤとを含む。なお、カード選択コマンド（ＣＭＤ７）は必ずしもＲＣＡとバンクＩＤとを個別に含む必要はなく、カード選択コマンド（ＣＭＤ７）に含まれるＲＣＡの値をバンクＩＤとして兼用することも出来る。
【００４２】
ステップ６０６において、ＳＤメモリカード１０１のカードコントローラ１１４はＳＤメモリカード１０１の動作モードをデータ転送モードに変更すると共に、バンク指定処理として、カード選択コマンド（ＣＭＤ７）に含まれるバンクＩＤの値を、絶対アドレスの上位２ビットに変換する処理を実行してその上位２ビットの値を保持しておく。ステップ６０７において、ＳＤメモリカード１０１のカードコントローラ１１４はデータ転送モードに変更したことを示すレスポンスをホスト装置１０に返信する。ホスト装置１０はステップ６０８においてレスポンスを受信し、ＳＤメモリカード１０１がデータ転送モードに変更されたことを確認する。
【００４３】
尚、ステップ６０４において、ホスト装置１０は、ＳＤメモリカード１０１から得られたＲＣＡの値を変更したいときは、再度ステップ６０１からステップ６０４までを繰り返すことにより、ＳＤメモリカード１０１から新たなＲＣＡの値を受信することができる。
【００４４】
また、カード選択コマンド（ＣＭＤ７）にＲＣＡとバンクＩＤとを含ませるのではなく、カード選択コマンド（ＣＭＤ７）に含まれるＲＣＡの値をバンクＩＤとして利用する場合には、バンクＩＤ生成部１１８は、ホスト装置１０に対して発行したＲＣＡの値から、バンク０−３それぞれに対応するバンクＩＤを生成する。
【００４５】
図７は、ＲＣＡから生成された値をバンクＩＤとして使用した場合におけるバンクＩＤテーブルの例が示されている。図７においては、バンク０に対応するバンクＩＤとしてＲＣＡの値そのものを使用している。また、バンク１に対応するバンクＩＤはＲＣＡ＋１、バンク２に対応するバンクＩＤはＲＣＡ＋２、バンク３に対応するバンクＩＤはＲＣＡ＋３である。
【００４６】
図７では、ＳＤメモリカード１０１がホスト装置１０に送信したＲＣＡの値が０ｘ１１００の場合を示しており、バンク０、バンク１、バンク２、バンク３のバンクＩＤはそれぞれ、０ｘ１１００、０ｘ１１０１、０ｘ１１０２、０ｘ１１０３となる。図７のバンクＩＤテーブルにおいては、ＲＣＡ、ＲＣＡ＋１、ＲＣＡ＋２、ＲＣＡ＋３それぞれに対して、絶対アドレスの上位２ビットの値が対応付けられている。
【００４７】
このように、ＲＣＡの値からバンク０、バンク１、バンク２、バンク３それぞれのバンクＩＤを生成し、それらバンクＩＤと絶対アドレスの上位２ビットの値とをバンクＩＤテーブルを用いて対応付けて保持することにより、ホスト装置１０は、コマンド引数として以下のような値を含むカード選択コマンドを発行するだけで、所望のバンクを指定することが出来る。
【００４８】
バンク０を指定するときは、ホスト装置１０は、ＳＤメモリカード１０１から得たＲＣＡをコマンド引数として含むカード選択コマンドを発行する。バンク指定機能を持たない既存のホスト装置１０は、常に、ＳＤメモリカード１０１から得たＲＣＡをコマンド引数として含むカード選択コマンドを発行する。このため、ＳＤメモリカード１０１が、バンク指定機能を持たない既存のホスト装置１０に装着された場合には、アクセス対象バンクとしてバンク０を自動的に選択することができる。
【００４９】
バンク１を指定するときは、ホスト装置１０は、ＲＣＡ＋１、つまりＳＤメモリカード１０１から得たＲＣＡの値に＋１を加えた値を、コマンド引数として含むカード選択コマンドを発行する。バンク２を指定するときは、ホスト装置１０は、ＲＣＡ＋２、つまりＳＤメモリカード１０１から得たＲＣＡの値に＋２を加えた値を、コマンド引数として含むカード選択コマンドを発行する。バンク３を指定するときは、ホスト装置１０は、ＲＣＡ＋３、つまりＳＤメモリカード１０１から得たＲＣＡの値に＋３を加えた値を、コマンド引数として含むカード選択コマンドを発行する。
【００５０】
尚、以上の説明では、バンク０、１、２、３に対応するバンクＩＤの値をＲＣＡに対してそれぞれ０、１、２、３を加算することによって生成したが、例えば、ＲＣＡに対してそれぞれ、０、１、２、３以外の４つの値を加算すること、ＲＣＡに対して０、１、２、３をそれぞれ減算すること、または、ＲＣＡに対してそのＲＣＡの値をビット反転するなどの他の演算を施すこと、によって生成しても良い。
【００５１】
カード選択コマンドのコマンド引数は３２ビット幅のサイズを有するが、その上位１６ビット部はＲＣＡを示すために使用され、下位１６ビット部は予約ビットとなっている。このため、カード選択コマンドのコマンド引数にセットすべきＲＣＡの値を、ＲＣＡ、ＲＣＡ＋１、ＲＣＡ＋２、ＲＣＡ＋３のように変化させる代わりに、上位１６ビット部には常にＲＣＡをセットし、予約ビットにセットする値を、０、１、２、３、あるいはＲＣＡ、ＲＣＡ＋１、ＲＣＡ＋２、ＲＣＡ＋３のように変化させてもよい。この場合、バンク指定部１１９は、カード選択コマンドのコマンド引数に含まれる予約ビットからバンクＩＤを取得し、そして、バンクＩＤテーブルを参照して、取得したバンクＩＤを絶対アドレスの上位ビットに変換すればよい。また、カード選択コマンドのみならず、ＲＣＡをコマンド引数として含むコマンドであれば、そのコマンドをバンク指定コマンドとして利用することが出来る。
【００５２】
このように、カード選択コマンドを用いてバンクを指定する方法を用いることにより、バンク指定専用のコマンドを用いることなく、アクセス対象のバンクを指定することが出来る。特に、バンク０に割り当てられるバンクＩＤの値をＲＣＡと等しくすることにより、バンク０については任意の既存のホスト装置が正常にアクセスすることが出来る。
【００５３】
尚、上述の例においては、バンクＩＤを生成する手順をホスト装置１０とＳＤメモリカード１０１との間であらかじめ決めておく方式を前提に説明したが、各バンクに対応するバンクＩＤをＳＤメモリカード１０１からホスト装置１０に通知するようにすることもできる。例えば、ＳＤメモリカード１０１がバンク０−３それぞれに対応するＲＣＡをホスト装置１０に送信し、それらＲＣＡをバンク０−３それぞれに対応するバンクＩＤとして使用することもできる。ＳＤメモリカード１０１は、例えば、ＲＣＡ生成コマンド（ＣＭＤ３）が所定回数発行された場合に次のバンク用のＲＣＡを発行すればよい。その所定回数を例えば３回としたならば、ＳＤメモリカード１０１は、１回目から３回目までのＲＣＡ生成コマンドに対してはバンク０用のＲＣＡを生成し、４回目から６回目までのＲＣＡ生成コマンドに対してはバンク１用のＲＣＡを生成し、７回目から９回目までのＲＣＡ生成コマンドに対してはバンク２用のＲＣＡを生成し、１０回目から１２回目までのＲＣＡ生成コマンドに対してはバンク３用のＲＣＡを生成する。
【００５４】
また、受信したＲＣＡ生成コマンドに含まれるコマンド引数の値が０でなかった場合、あるいは受信したＲＣＡ生成コマンドに含まれるコマンド引数が生成済みのＲＣＡを示す場合に、ＳＤメモリカード１０１が、次のバンク用のＲＣＡを発行するようにしてもよい。この場合、ホスト装置１０は、まずコマンド引数として０を含むＲＣＡ生成コマンドをＳＤメモリカード１０１に送信し、これによりバンク０用のＲＣＡを得る。次に、ホスト装置１０は、バンク０用のＲＣＡをコマンド引数として含むＲＣＡ生成コマンドをＳＤメモリカード１０１に送信し、これによりバンク１用のＲＣＡを得る。次に、ホスト装置１０は、バンク１用のＲＣＡをコマンド引数として含むＲＣＡ生成コマンドをＳＤメモリカード１０１に送信し、これによりバンク２用のＲＣＡを得る。最後に、ホスト装置１０は、バンク２用のＲＣＡをコマンド引数として含むＲＣＡ生成コマンドをＳＤメモリカード１０１に送信し、これによりバンク３用のＲＣＡを得る。
【００５５】
以上説明した第１実施形態においては、フラッシュメモリ１１６のユーザーデータ領域を４つのバンクに分割した場合を説明したが、バンクの数は４つに限定されず、さらに多くのバンクに分割しても良い。
【００５６】
（実施形態２）
次に、本発明の第２実施形態に係るＳＤメモリカード１０１について説明する。
【００５７】
第１実施形態においては、１６ＧＢの記憶領域を各々が４ＧＢのメモリサイズを持つ４つのバンクに分割した例を説明したが、本第２実施形態においては、１６ＧＢの記憶領域を、下位４ＧＢのバンク０と上位１２ＧＢのバンク１との２つのバンクに分割する。バンク０に対するアドレッシングはバイト単位アドレッシング方法を用いて実行され、またバンク１に対するアドレッシングはブロック単位アドレッシング方法を用いて実行される。ホスト装置１０は、第１実施形態と同様の方法でバンク指定を行った後、下位４ＧＢに対しては前述したバイト単位アドレッシング方法を用いてアドレス指定し、上位１２ＧＢに対しては前述したブロック単位アドレッシング方法を用いてアドレス指定する。
【００５８】
図８は、第２実施形態に係るＳＤメモリカード１０１の構成を示すブロック図である。このＳＤメモリカード１０１のカードコントローラ１１４には、図１の構成に加え、バイトアドレス変換部８０１が設けられている。また、ＲＯＭ１１２に格納されたファームウェアは、バイト単位アドレッシング方法とブロック単位アドレッシング方法とを選択的に使用できるように構成されている。その他の部分は、図１と同じである。
【００５９】
バンクＩＤ生成部１１８は、フラッシュメモリ１１６の記憶領域を２つのバンクに分割して管理するためのバンク識別番号（バンクＩＤ）を生成する。バンク指定部１１９は、ホスト装置１０からのバンク識別番号（バンクＩＤ）に応じて、アクセスすべきバンクを指定する。バイトアドレス変換部８０１は、ブロック単位アドレッシング方法が使用される時に、ホスト装置１０から送信されるメモリアクセスコマンドに付随するブロック単位のメモリアドレスを、バイト単位のアドレスに変換する。例えば、１ブロックを５１２バイトとした場合、バイトアドレス変換部８０１は、ブロック単位のメモリアドレスの値を５１２倍することにより、ブロック単位のメモリアドレスの値をフラッシュメモリ１１６の記憶領域を実際にアクセスするためのバイト単位のメモリアドレス値に変換する。
【００６０】
ブロック単位のメモリアドレスによって指定可能な記憶位置は、ブロック毎、つまり５１２バイト毎にとびとびとなる。例えば、ブロック単位のメモリアドレスによって
０ｘ００００００００
０ｘ０００００００１
０ｘ０００００００２
と指定した場合、バイト単位アドレスに変換すると、
０ｘ００００００００
０ｘ０００００２００
０ｘ０００００４００
となる。
【００６１】
ＲＯＭ１１２にはブロック単位アドレッシング方法を解釈するように変更したファームウェアを格納している。ＭＰＵ１２０はこのファームウェアを実行するので、ブロック単位アドレッシングを解釈することができる。
【００６２】
次に、図９を参照して、フラッシュメモリ１１６の構成例を説明する。
【００６３】
図９に示されているように、フラッシュメモリ１１６の記憶領域は、保護領域２０１と、ユーザーデータ領域２０２とに分けられている。ユーザーデータ領域２０２のメモリサイズは例えば１６ＧＢである。ユーザーデータ領域２０２はバンク０とバンク１の２つのバンクに分割して管理されている。即ち、ユーザーデータ領域２０２の１６ＧＢのメモリアドレス空間（１６進表示で０００００００００〜３ＦＦＦＦＦＦＦＦの空間）には、その下位アドレス側から順にバンク０，１が割り当てられている。バンク０のメモリサイズは４ＧＢであり、バンク１のメモリサイズは１２ＧＢである。
【００６４】
図１０には、バンクＩＤ生成部１１８によって管理されているバンクＩＤテーブルの例が示されている。このバンクＩＤテーブルは、バンク０，バンク１の各々に対応するバンクＩＤを規定するテーブルである。ここでは、バンク０に対応するバンクＩＤを０、バンク１に対応するバンクＩＤを１としているが、第１実施形態と同様に、バンクＩＤとしてＲＣＡを用いてもよい。
【００６５】
図１１には、各バンクに対応するコマンド引数（３２ビット幅のメモリアドレス）と、３４ビット幅の絶対アドレスとの関係が示されている。
【００６６】
上述したように、３２ビット幅のメモリアドレスは、ホスト装置１０からのメモリアクセスコマンドと一緒にそのコマンドの引数として与えられる。バンク０に対応する３２ビット幅のメモリアドレスはバイト単位のアドレスであり、またバンク１に対応する３２ビット幅のメモリアドレスはブロック単位のアドレスである。
【００６７】
もしホスト装置１０から指定されたバンクＩＤが０であれば、バンク指定部１１９は、ホスト装置１０からのメモリアクセスコマンドに付随する３２ビット幅のメモリアドレス（バイト単位アドレス）に対して、上位２ビット“００”を付加することにより、バンク０をアクセスするための３４ビット幅の絶対メモリアドレス（バイト単位アドレス）を生成する。もしホスト装置２０から指定されたバンクＩＤが１であれば、バンク指定部１１９は、ホスト装置１０からのメモリアクセスコマンドに付随する３２ビット幅のメモリアドレス（ブロック単位アドレス）を５１２倍することにより、バンク１をアクセスするための３４ビット幅の絶対メモリアドレス（バイト単位アドレス）を生成する。
【００６８】
次に、図１２を参照して、ＳＤメモリカード１０１の動作を説明する。ここでは、ホスト装置１０からのライトデータをバンクに書き込む場合を想定する。図１２は、図５と比してステップ９０１からステップ９０６を追加した点が異なる。その他の部分については、図５と同一である。
【００６９】
ステップ５０１において、ホスト装置１０は初期化コマンドをＳＤメモリカード１０１に送信する。ＳＤメモリカード１０１のカードコントローラ１１４は、ステップ５０２において所定の初期化処理を行い、そしてステップ５０３において、初期化処理の終了を示すレスポンスをホスト装置１０に送信する。ステップ５０４において、ホスト装置１０はレスポンスを受信し初期化処理の終了を確認する。
【００７０】
ホスト装置１０は、ステップ５０５において、アクセスすべきバンクを指定するバンク識別番号（バンクＩＤ）を含むバンク指定コマンドをＳＤメモリカード１０１に送信する。バンク指定コマンドの代わりに、バンクＩＤを含むカード選択コマンドを用いても良い。ステップ５０６において、ＳＤメモリカード１０１のカードコントローラ１１４は、バンク指定処理を実行する。このバンク指定処理においては、ＳＤメモリカード１０１のカードコントローラ１１４は、もしバンク指定コマンドでバンク０が指定されたならば、絶対アドレスの上位２ビットの値として“００”を保持し、もしバンク指定コマンドでバンク１が指定されたならば、上位２ビットの値は何等保持しない。ステップ５０７において、ＳＤメモリカード１０１のカードコントローラ１１４は、バンク指定処理の終了を示すレスポンスをホスト装置１０に送信する。ステップ５０８において、ホスト装置１０はレスポンスを受信し、バンク指定処理の終了を確認する。
【００７１】
バンク１をアクセスする場合、ホスト装置１０は、ステップ９０１において、ＳＤメモリカード１０１のアドレスモードをブロック単位アドレスモードに切り替えることを示すアドレスモード変更コマンドをＳＤメモリカード１０１に送信する。ブロック単位アドレスモードは、ブロック単位のアドレスを受け付けることが可能なアドレスモードである。一方、バンク０をアクセスする場合、ホスト装置１０は、ステップ９０１において、ＳＤメモリカード１０１のアドレスモードをバイト単位アドレスモードに切り替えることを示すアドレスモード変更コマンドをＳＤメモリカード１０１に送信する。バイト単位アドレスモードは、バイト単位のアドレスを受け付けるためのアドレスモードである。
【００７２】
ＳＤメモリカード１０１のカードコントローラ１１４は、ステップ９０２において、アドレスモード変更コマンドに応じて、自身のアドレスモードをバイト単位アドレスモードからブロック単位アドレスモードに変更、またはブロック単位アドレスモードからバイト単位アドレスモードに変更する。ステップ９０３において、ＳＤメモリカード１０１のカードコントローラ１１４は、アドレスモード変更の完了を示すレスポンスをホスト装置１０に送信する。ホスト装置１０はステップ９０４においてレスポンスを受信し、ＳＤメモリカード１０１がアドレスモードを変更したことを確認する。なお、ＳＤメモリカード１０１のデフォルトのアドレスモードはバイト単位アドレスモードであり、ホスト装置からアドレスモード変更コマンドを受信するまでは、ＳＤメモリカード１０１のバイト単位アドレスモードで動作する。
【００７３】
ステップ５０９において、ホスト装置１０は、ライトコマンドをＳＤメモリカード１０１に送信する。このライトコマンドには、そのコマンド引数として３２ビット幅のメモリアドレスが付加されている。この３２ビット幅のメモリアドレスは、アクセス対象バンクがバンク０であるならばバイト単位アドレスであり、アクセス対象バンクがバンク１であるならばブロック単位アドレスである。ステップ９０５において、ＳＤメモリカード１０１のカードコントローラ１１４は、現在のアドレスモードがブロック単位アドレスモードおよびバイト単位アドレスモードのいずれであるかを判別する。
【００７４】
現在のアドレスモードがブロック単位アドレスモードであれば、ＳＤメモリカード１０１のカードコントローラ１１４は、ステップ９０６に進む。ステップ９０６において、ＳＤメモリカード１０１のカードコントローラ１１４は、ライトコマンドに付随するコマンド引数から３２ビット幅のメモリアドレス値を得、このメモリアドレスの値をブロック単位アドレスからバイト単位アドレス（３４ビット幅の絶対アドレス）に変換する。続くステップ５１１において、ＳＤメモリカード１０１のカードコントローラ１１４は、ライトコマンドに後続してホスト装置１０から送信されるライトデータを、バイト単位アドレスで指定されるフラッシュメモリ１１６内の記憶位置に書き込む書き込み処理を実行する。書き込み処理においては、メモリＩ／Ｆ１１５を介して絶対アドレス、ライトデータ、その制御信号がフラッシュメモリ１１６に供給される。
【００７５】
一方、現在のアドレスモードがバイト単位アドレスモードであれば、ＳＤメモリカード１０１のカードコントローラ１１４は、ステップ５１０に進む。ステップ５１０において、ＳＤメモリカード１０１のカードコントローラ１１４は、ライトコマンドに付随するコマンド引数から３２ビット幅のメモリアドレス値を得、この３２ビット幅のメモリアドレス値に対して、保持しておいた上位２ビットの値を拡張することにより、３４ビット幅の絶対アドレスを生成する。続くステップ５１１において、ＳＤメモリカード１０１のカードコントローラ１１４は、ライトコマンドに後続してホスト装置１０から送信されるライトデータを、絶対アドレスで指定されるフラッシュメモリ１１６内の記憶位置に書き込む書き込み処理を実行する。
【００７６】
続くステップ５１２では、ＳＤメモリカード１０１のカードコントローラ１１４は、書き込み処理の完了を示すレスポンスをホスト装置１０に送信する。ステップ５１３において、ホスト装置１０はレスポンスを受信し、書き込みの完了を確認する。
【００７７】
なお、バンク指定機能およびブロック単位アドレスモードをサポートしない既存のホスト装置からのライトコマンドを受信した場合には、ＳＤメモリカード１０１のカードコントローラ１１４は、常にバンク０をバイト単位アドレスモードでアクセスすればよい。これにより、既存のホスト装置も、バンク０に対しては正しくアクセスすることができる。
【００７８】
（実施形態３）
次に、本発明の第３実施形態に係るＳＤメモリカード１０１について説明する。
【００７９】
第３実施形態に係るＳＤメモリカード１０１は、第１実施形態の構成に加え、各バンクに対するアクセスを所定の条件を満たしたときのみ許可するアクセス制御機能を有している。
【００８０】
図１３は、第３実施形態に係るＳＤメモリカード１０１の構成を示すブロック図である。このＳＤメモリカード１０１のカードコントローラ１１４には、図１の構成に加え、バンクアクセス制御部９０１が設けられている。他の点は図１と同じである。バンクアクセス制御部９０１はアクセス制御機能を実現するために設けられたものであり、各バンク毎にホスト装置１０によるアクセスを許可するか否かを判別する。
【００８１】
図１４は、アクセスを許可する条件を規定したアクセス制御テーブルを示している。このアクセス制御テーブルは、アクセスを許可するバンク番号と、バンク指定コマンドの受信回数とを対応付けている。バンクアクセス制御部９０１は、ホスト装置１０からのバンク指定コマンドの受信回数を計数し、その計数されたバンク指定コマンドの受信回数をインデックスとしてアクセス制御テーブルを参照することにより、ホスト装置１０にアクセスを許可すべきバンクを決定する。例えば、図１４のアクセス制御テーブルにおいては、バンク０へのアクセスはバンク指定コマンドの受信回数が３回以上の場合に許可される。同様に、バンク１へのアクセスはバンク指定コマンドの受信回数が５回以上の場合に許可され、バンク２へのアクセスはバンク指定コマンドの受信回数が７回以上の場合に許可され、バンク３へのアクセスはバンク指定コマンドの受信回数が９回以上の場合に許可される。
【００８２】
次に、図１５を参照して、ＳＤメモリカード１０１の動作を説明する。ここでは、ホスト装置１０からのライトデータをバンクに書き込む場合を想定する。本例では、図５のステップ５０５からステップ５０８をステップ１１０１からステップ１１０５に変更している。
【００８３】
ステップ５０１において、ホスト装置１０は初期化コマンドをＳＤメモリカード１０１に送信する。ＳＤメモリカード１０１のカードコントローラ１１４は、ステップ５０２において所定の初期化処理を行い、そしてステップ５０３において、初期化処理の終了を示すレスポンスをホスト装置１０に送信する。ステップ５０４において、ホスト装置１０はレスポンスを受信し初期化処理の終了を確認する。
【００８４】
ホスト装置１０は、ステップ１１０１において、アクセスすべきバンクを指定するバンク識別番号（バンクＩＤ）を含むバンク指定コマンドをＳＤメモリカード１０１に送信する。バンク指定コマンドの代わりに、バンクＩＤを含むカード選択コマンドを用いても良い。ＳＤメモリカード１０１のカードコントローラ１１４は、ステップ１１０２において、バンク指定コマンドを受信すると、バンク指定コマンドの受信回数を示す値を＋１増加する。初期化処理後に初めてバンク指定コマンドを受信した時、バンク指定コマンドの受信回数は１となる。ステップ１１０２においては、ＳＤメモリカード１０１のカードコントローラ１１４は、前述の方法でアクセス可能なバンク番号を判定する。続くステップ１１０３において、ＳＤメモリカード１０１のカードコントローラ１１４は、もしバンク指定コマンドで指定されたアクセス対象バンクがアクセス可能なバンクであるならば、バンク指定処理として、ホスト装置１０からのバンク指定コマンドに含まれるバンクＩＤの値を、絶対アドレスの上位２ビットに変換する処理を実行し、その上位２ビットの値を保持しておく。もしバンク指定コマンドで指定されたアクセス対象バンクがアクセス可能なバンクでなければ、バンク指定処理は実行されない。ステップ１１０４においては、ＳＤメモリカード１０１のカードコントローラ１１４は、バンク指定の終了を示すレスポンスをホスト装置１０に送信する。このレスポンスにはバンク指定処理の成功の有無を示す情報を含めることができる。ステップ１１０５において、ホスト装置１０はレスポンスを受信しバンク指定処理が成功したかどうかを確認する。ホスト装置１０は所望するバンクにアクセスするために必要に応じてステップ１１０１を再度実行する。これに伴い、再度ステップ１１０２、ステップ１１０３、ステップ１１０４が同様の手順で実行される。
【００８５】
ここで、バンクアクセス制御の例として、バンク指定コマンドを３回受信した場合の状態について説明する。バンク指定コマンドを３回受信した状態では、図１４のアクセス制御テーブルを参照してバンク０がアクセス可能であると判断する。バンク指定コマンドにより指定されたバンクが０であるならば、バンク指定処理として、バンク０に対応するバンクＩＤを、そのバンク０に対応する絶対アドレスの上位２ビットに変換する処理が行われる。これにより、バンク０にアクセスすることが可能となる。しかし、バンク指定コマンドにより指定されたバンクが１の場合は、バンク指定処理は実行されない。これにより、バンク１へのアクセスは禁止される。バンク１へのアクセスを禁止する方法としては、バンク指定処理は行わない方法の他、例えば、実在しないバンクのメモリアドレスの上位ビットに変換する方法、またはある特定のバンク、例えばバンク０、に対応する絶対アドレスの上位２ビットに変換して、ある特定のバンクを常にアクセス対象バンクとする方法等が挙げられる。
【００８６】
ステップ１１０４において、ホスト装置１０はレスポンスを受信して指定したバンクがアクセス可能であることを認識すると、ステップ５０９以降の処理を行ってデータの書き込みを行う。ステップ５０９において、ホスト装置１０は、ライトコマンドをＳＤメモリカード１０１に送信する。このライトコマンドには、そのコマンド引数として３２ビット幅のメモリアドレス値が付加されている。ＳＤメモリカード１０１のカードコントローラ１１４は、ライトコマンドを受け付けると、ステップ５１０において、ライトコマンドに付随するコマンド引数から３２ビット幅のメモリアドレス値を得、この３２ビット幅のメモリアドレス値に対して、保持しておいた上位２ビットの値を拡張することにより、３４ビット幅の絶対アドレスを生成する。続くステップ５１１において、ＳＤメモリカード１０１のカードコントローラ１１４は、ライトコマンドに後続してホスト装置１０から送信されるライトデータを、３４ビット幅の絶対アドレスで指定されるフラッシュメモリ１１６内の記憶位置に書き込む書き込み処理を実行する。書き込み処理においては、メモリＩ／Ｆ１１５を介して絶対アドレス、ライトデータ、その制御信号がフラッシュメモリ１１６に供給される。続くステップ５１２では、ＳＤメモリカード１０１のカードコントローラ１１４は、書き込み処理の完了を示すレスポンスをホスト装置１０に送信する。ステップ５１３において、ホスト装置１０はレスポンスを受信し、書き込みの完了を確認する。
【００８７】
尚、上述のバンクアクセス制御では、アクセスを許可するバンクを示したテーブルを参照し、バンク指定コマンド受信回数に達したら対応するバンクをアクセス可能としたが、これに限るものではなく、様々な方法を用いて各バンクのアクセスを制限することが出来る。
【００８８】
また、上述の各実施形態においては、ＳＤメモリカードのユーザーデータ領域を複数バンクに分割して扱う例を示したが、ユーザーデータ領域に限るものではなく、保護領域を複数バンクに分割してもよい。ただし、その場合は保護領域にアクセスするために前述のＣＰＲＭの仕組みを利用する必要がある。また、上述の各実施形態はＳＤメモリカードを例示して説明したが、各実施形態のバンク制御の構成はホスト装置に取り外し自在に接続可能な様々なメモリカードに適用することができる。メモリカードはリムーバブル記憶装置の総称であり、その物理的形状を制限するものではない。
【００８９】
また、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００９０】
【図１】本発明の第１実施形態に係るメモリカードの構成を示すブロック図。
【図２】図１のメモリカードに設けられた不揮発性半導体メモリのバンク構成を示す図。
【図３】図１のメモリカードにおいて使用されるバンクＩＤテーブルの例を示す図。
【図４】図１のメモリカード内の各バンクに対応する絶対アドレスの上位２ビットと、コマンド引数と、３４ビット幅の絶対アドレスとの関係を示す図。
【図５】図１のメモリカードの動作を示すフローチャート。
【図６】図１のメモリカードにおいてカード選択コマンドを用いてバンクを指定する動作を説明するためのフローチャート。
【図７】図１のメモリカードにおいて使用されるバンクＩＤテーブルの他の例を示す図。
【図８】本発明の第２実施形態に係るメモリカードの構成を示すブロック図。
【図９】図８のメモリカードに設けられた不揮発性半導体メモリのバンク構成を示す図。
【図１０】図８のメモリカードにおいて使用されるバンクＩＤテーブルの例を示す図。
【図１１】図８のメモリカード内の各バンクに対応するコマンド引数と、３４ビット幅の絶対アドレスとの関係を示す図。
【図１２】図８のメモリカードの動作を示すフローチャート。
【図１３】本発明の第３実施形態に係るメモリカードの構成を示すブロック図。
【図１４】図１３のメモリカードにおいて用いられるアクセス制御テーブルの例を示す図。
【図１５】図１３のメモリカードの動作を示すフローチャート。
【符号の説明】
【００９１】
１０…ホスト装置、１０１…ＳＤメモリカード、１１１…Ｉ／Ｏインタフェース、１２０…ＭＰＵ、１１５…メモリインタフェース、１１６…フラッシュメモリ、１１８…バンクＩＤ生成部、１１９…バンク指定部、８０１…バイトアドレス変換部、９０１…バンクアクセス制御部。
【図１】
2005258804.tif 000003
【図２】
2005258804.tif 000004
【図３】
2005258804.tif 000005
【図４】
2005258804.tif 000006
【図５】
2005258804.tif 000007
【図６】
2005258804.tif 000008
【図７】
2005258804.tif 000009
【図８】
2005258804.tif 000010
【図９】
2005258804.tif 000011
【図１０】
2005258804.tif 000012
【図１１】
2005258804.tif 000013
【図１２】
2005258804.tif 000014
【図１３】
2005258804.tif 000015
【図１４】
2005258804.tif 000016
【図１５】
2005258804.tif 000017