(57)【要約】  カードコントローラ（４）、書き換え可能な不揮発性メモリ（５）及びＩＣカードチップ（６）を備え、カードコントローラは、ＩＣカードチップへのリセット指示に応答してＩＣカードチップが出力するリセット応答情報（ＡＴＲ）と、フラッシュメモリの消去単位を示す情報の少なくとも一方の情報を、外部から与えられる所定コマンドに応答して外部に出力可能である。カードホストはリセット応答情報を参照してカードコントローラにＩＣカードチップの動作速度若しくは動作周波数等を変更させることが可能になる。カードホストは、不揮発性メモリに対する記憶情報の書き換えに際して、初期化単位を示す情報を参照することにより、初期化単位に見合う量の書込みデータを記憶装置に送ってから書込み指示を与えることが可能になる。【特許請求の範囲】
【請求項１】
インタフェースコントローラ、書き換え可能な不揮発性メモリ及びデータのセキュリティ処理を行なうセキュリティコントローラを備え、
前記インタフェースコントローラは、セキュリティコントローラへのリセット指示に応答してセキュリティコントローラが出力するリセット応答情報と、前記不揮発性メモリの記憶領域の初期化単位を示す情報の少なくとも一方の情報を、外部から前記インタフェースコントローラに与えられる所定の第１のコマンドに応答して外部に出力可能である、記憶装置。
【請求項２】
前記インタフェースコントローラは、外部から与えられる第２のコマンドに応答して当該第２のコマンドに含まれるセキュリティ処理用情報を抜き出してセキュリティコントローラに与え、外部から与えられる第３のコマンドに応答して前記セキュリティコントローラによるセキュリティ処理結果を外部に出力する、請求項１記載の記憶装置。
【請求項３】
前記インタフェースコントローラは、前記記憶装置の初期化コマンドに応答して前記少なくとも一方の情報をラッチする揮発性記憶回路を有し、前記所定の第１のコマンドに応答して前記記憶回路が保有する前記一方の情報をメモリカードの外部に出力する、請求項１記載の記憶装置。
【請求項４】
前記揮発性記憶回路にラッチする前記少なくとも一方の情報は前記不揮発性メモリから読み出される、請求項３記載の記憶装置。
【請求項５】
前記所定の第１のコマンドは前記記憶装置の初期化コマンドとは異なるコマンドコードを有する、請求項１記載の記憶装置。
【請求項６】
前記所定の第１のコマンドは前記記憶装置の初期化コマンドであり、
前記インタフェースコントローラは、初期化処理のレスポンスに続けて前記少なくとも一方の情報を外部に出力する、請求項１記載の記憶装置。
【請求項７】
前記所定の第１のコマンドは前記インタフェースコントローラが保有する所定のレジスタに対するリードコマンドであり、
前記インタフェースコントローラは、前記レジスタが保有する情報の出力に続けて、又はレジスタの予約領域に割当てて前記少なくとも一方の情報を外部に出力する、請求項１記載の記憶装置。
【請求項８】
前記リセット応答情報は、前記セキュリティコントローラの動作限界周波数及びヒストリカルバイト情報を含む、請求項１記載の記憶装置。
【請求項９】
前記記憶領域の初期化単位を示す情報は、不揮発性メモリの種別を示すデバイスコード、又は前記デバイスコードに基づいて生成された初期化単位に応ずるデータ数情報である、請求項１記載のメ記憶装置。
【請求項１０】
前記インタフェースコントローラは周波数を設定するコマンドに応答してセキュリティコントローラに与えるクロック信号の周波数を変更可能である、請求項１記載の記憶装置。
【請求項１１】
請求項１記載の記憶装置が装着可能にされるデータ処理装置であって、前記リセット応答情報を出力させる前記所定の第１のコマンドを前記記憶装置に出力し、これに応答して前記記憶装置から出力されるリセット応答情報を入力し、入力したリセット応答情報を参照して、前記セキュリティコントローラの動作周波数の設定を変更可能である、データ処理装置。
【請求項１２】
請求項１記載の記憶装置が装着可能にされるデータ処理装置であって、前記記憶領域の初期化単位を示す情報を出力させる前記所定の第１のコマンドを前記記憶装置に出力し、これに応答して記憶装置から出力される前記記憶領域の初期化単位を示す情報を入力し、入力した前記初期化単位を示す情報に基づいて、前記記憶装置への書込みデータのデータ転送数を前記初期化単位毎とする、データ処理装置。
【請求項１３】
インタフェースコントローラ及び書き換え可能な不揮発性メモリを備え、
前記インタフェースコントローラは、前記不揮発性メモリの記憶領域の初期化単位を示す情報を、外部から前記インタフェースコントローラに与えられる所定のコマンドに応答して外部に出力可能である、記憶装置。
【請求項１４】
前記所定のコマンドは記憶装置の初期化コマンドであり、
前記インタフェースコントローラは、初期化処理のレスポンスに続けて前記初期化単位を示す情報を外部に出力する、請求項１３記載の記憶装置。
【請求項１５】
前記所定のコマンドは前記インタフェースコントローラが保有する所定のレジスタに対するリードコマンドであり、
前記インタフェースコントローラは、前記レジスタが保有する情報の出力に続けて、又はレジスタの予約領域に割当てて前記初期化単位を示す情報を外部に出力する、請求項１３記載の記憶装置。
【請求項１６】
前記初期化単位を示す情報は、不揮発性メモリの種別を示すデバイスコード、又は前記デバイスコードに基づいて生成された記憶領域の初期化単位に応ずるデータ数情報である、請求項１３記載の記憶装置。
【請求項１７】
前記インタフェースコントローラは、前記不揮発性メモリからその種別を示すデバイスコードを取得し、取得したデバイスコードに基づいて前記不揮発性メモリの動作限界周波数を取得し、前記所定のコマンドに応答して動作限界周波数を外部に出力する、請求項１３記載の記憶装置。
【請求項１８】
前記インタフェースコントローラは周波数を設定するコマンドに応答して不揮発性メモリに与えるクロック信号の周波数を変更可能である、請求項１７記載の記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性の情報記憶機能を有する記憶装置、不揮発性の情報記憶機能と共に記憶情報に対するセキュリティ機能を有する記憶装置、更にその記憶装置が挿入されるホスト機器などのデータ処理装置に関し、例えばフラッシュメモリチップ、ＩＣカード用マイクロコンピュータチップ及びコントローラチップを有するメモリカードに適用して有効な技術に関する。
【背景技術】
【０００２】
非特許文献１にはＩＣカードのデバイス間におけるインタフェース端子及び転送プロトコルについて記載される。ここには、例えば、ＡＴＲ（Answer To Reset）等について記載がある。ＡＴＲは、リセット処理に対する応答としてリセット処理後にＩＣカードからインタフェースデバイスに向けて送られる通信プロトコルを示すための値である、とされる。非特許文献２にはＩＣカードの情報交換のためのコマンド仕様が記載される。【０００３】
特許文献１には、フラッシュメモリチップとセキュリティ処理を実行可能なＩＣカードチップと、ホストからの要求に応じてフラッシュメモリチップ及びＩＣカードチップへのアクセス等を制御するコントローラチップとを有し、このコントローラチップがフラッシュメモリチップとＩＣカードチップの両方にホストからの要求に応じてアクセス可能な、メモリカードについて記載される。【０００４】
【非特許文献１】ＩＳＯ／ＩＥＣ  ７８１６−３  Second edition（１９９７−１２−１５）
【非特許文献２】ＩＳＯ／ＩＥＣ  ７８１６−４  First edition（１９９５−０９−０１）
【特許文献１】特開２００３−２２２１６号公報（図１）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明者はメモリカードとカードホストとの間でのコミュニケーション能力について検討した。第１には、ＩＣカードチップによるセキュリティ機能を搭載したフラッシュメモリカードのモバイル用途への適用に関してである。【０００６】
通常、ＩＣカードとカードホスト間でＩＣカードリセット時に、カードホストはＩＣカードから出力されるリセット応答としてＡＴＲ情報を直接読み取り、このＡＴＲの情報を使用して必要な通信設定を行い、設定された通信条件にて、それ以降、前記非特許文献２の記載に準拠したコマンド処理を行う。またカードホストのアプリケーションによってはＡＴＲ情報に含まれる、ＩＣカードのＯＳ（オペレーティングシステム）に依存する固有値を使用するものも存在する。特に、モバイル端末をターゲットとしたＩＣカードを使用するアプリケーションを考えると、ＩＣカードによる高速処理が必要な場合には通信速度や演算速度を高速化し、そうでない時は電力消費を抑えてバッテリ寿命を延ばす、という制御形態の必要性が見出された。【０００７】
しかしながら、ＩＣカードによるセキュリティ機能をメモリカードに搭載した場合、コントローラチップがＩＣカードの処理に深く係わらないことがセキュリティ性の維持には望ましいことから、ＩＣカードへのリセット及び通信設定はコントローラが行い、通信設定終了以降におけるカードホストとＩＣカードチップとのデータのやり取りは、ＣＭＤ５１，ＣＭＤ５２などの新規のカードコマンドをコントローラに与えて行なうようにしている。この新規カードコマンドは、ＩＳＯ７８１６に準拠したコマンド処理を指示するＩＣカードコマンド等を付随させたコマンドである。この新規メモリカードコマンドＣＭＤ５２を受取ったカードコントローラは、そのコマンドに付随するセキュリティ処理用の情報であるＩＣカードコマンドをＩＣカードチップに与える。また、そのＩＣカードコマンドに応答してＩＣカードから出力される応答データ等に対しては、メモリカードコマンドＣＭＤ５１を受取ったカードコントローラがカードホストに向けて供給する。【０００８】
その場合には、従来カードホストとＩＣカード間で直接やり取りをしていたＡＴＲ情報を読み出すことが出来ない。即ち、ＩＣカードチップに対するリセットと通信設定はカードコントローラが行ない、ＡＴＲ情報はカードホストに出力されない。通信設定後の新規カードコマンドＣＭＤ５１，ＣＭＤ５２ではＡＴＲ情報を読み出す事ができない。これにより、カードホストにおいて、ＡＴＲ情報を照会するアプリケーションなどによっては、処理上ＩＣカードとの互換性の点で問題となる。さらに、カードホストは前記ＩＣカードチップを有するメモリカードからＡＴＲ情報を取得することができないため、カードホストのアプリケーションやＩＣカードチップによる処理内容に応じてＩＣカードチップの動作周波数などの通信設定を変更することができず、モバイル用途に対する制限になってしまう。これは、従来のメモリカードのコマンド体系ではＩＣカード機能を搭載したメモリカードとカードホストとの間でのコミュニケーション能力が不十分であることに起因する。【０００９】
第２には、メモリカードに搭載されるフラッシュメモリの消去単位がメモリカード間で異なる場合、書込み時におけるカードホストからのデータ転送数により、フラッシュメモリにかかる書換えストレスが増加したりや書込み転送レートが悪くなったりすることに関する。一般的にメモリカードに搭載されるフラッシュメモリはＡＮＤ、ＮＡＮＤ、ＡＧ−ＡＮＤといったメモリアレイの構成の違いや記憶容量の相違により消去単位が統一されていない。この消去単位の違いに対しては、メモリカードのコントローラがその違いに応じて消去処理を制御するが、カードホストからの１回の書込みコマンドで転送される書込みデータ数によってフラッシュメモリが物理的に消去を行う回数が異なる。例えば、消去単位が２０４８ビットのとき、２０４８ビットの書き換えを行なうのに、カードホストが１０２４ビットの書込みデータを伴って２回書込みコマンドを発行する場合には、２０４８ビットの書込みデータを伴って１回書込みコマンドを発行する場合に比べて、消去の高電圧印加によるストレスが２倍になる。書換え単位が大きいフラッシュメモリを搭載したメモリカードほど書換えストレス（消去回数）が大きく、書込み時のオーバーヘッドも大きくなる。これは、従来のメモリカードのコマンド体系では内蔵不揮発性メモリの消去単位を外部から認識するコミュニケーション手段が提供されていないという、コミュニケーション能力の不足に起因する。【００１０】
本発明の目的は、ＩＣカードチップのようなセキュリティコントローラ若しくはフラッシュメモリチップのような不揮発性メモリを搭載したメモリカードのような記憶装置のデータ処理装置との間におけるコミュニケーション能力を向上させることにある。【００１１】
本発明の別の目的は、ＩＣカードチップのようなセキュリティコントローラを搭載したメモリカードのような記憶装置におけるセキュリティコントローラの動作速度や電力消費を変更可能にすることである。【００１２】
本発明のさらに別の目的は、メモリカードに搭載されたフラッシュメモリのような不揮発性メモリにおける記憶領域の初期化単位に則した、書換えストレスが少なく書込みデータの転送効率の良好な初期化を、外部より可能にすることである。【００１３】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１４】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。【００１５】
〔１〕メモリカードのような記憶装置は、インタフェースコントローラ、書き換え可能な不揮発性メモリ及びデータのセキュリティ処理を行なうセキュリティコントローラを備え、前記インタフェースコントローラは、セキュリティコントローラへのリセット指示に応答してセキュリティコントローラが出力するリセット応答情報（ＡＴＲ）と、前記不揮発性メモリの記憶領域の初期化単位を示す情報（Ｆ＿ＣＯＤＥ、Ｆ＿ＣＮＴ）の少なくとも一方の情報を、外部から前記インタフェースコントローラに与えられる所定の第１のコマンドに応答して外部に出力可能である。リセット応答情報を外部からのコマンドに応答して外部に出力することにより、それを受けるカードホストのようなデータ処理装置は、リセット応答情報を参照してインタフェースコントローラにセキュリティコントローラの動作速度若しくは動作周波数等を変更させることが可能になる。また、初期化単位を示す情報を外部からのコマンドに応答して外部に出力することにより、それを受けるカードホストのようなデータ処理装置は、不揮発性メモリに対する記憶情報の書き換えに際して、初期化単位を示す情報を参照することにより、記憶領域の初期化単位に見合う量の書込みデータを記憶装置に送ってから書込み指示を与えることが可能になる。【００１６】
本発明の具体的な形態として、前記インタフェースコントローラは周波数を設定するコマンドに応答してセキュリティコントローラに与えるクロック信号の周波数を変更可能である。【００１７】
本発明の具体的な形態として、前記インタフェースコントローラは、外部から与えられる第２のコマンドに応答して当該第２のコマンドに含まれるセキュリティ処理用情報を抜き出してセキュリティコントローラに与え、外部から与えられる第３のコマンドに応答して前記セキュリティコントローラによるセキュリティ処理結果を外部に出力する。インタフェースコントローラはセキュリティコントローラの構成に立ち入らずにセキュリティコントローラにセキュリティ処理を指示することができる。【００１８】
本発明の具体的な形態として、前記インタフェースコントローラは、上記記憶装置の初期化コマンドに応答して前記少なくとも一方の情報をラッチする揮発性記憶回路を有し、前記所定の第１のコマンドに応答して前記記憶回路が保有する前記一方の情報を上記記憶装置の外部に出力する。このとき、前記揮発性記憶回路にラッチする前記少なくとも一方の情報は前記不揮発性メモリに初期的に格納されていてよい。一々セキュリティコントローラ内部をアクセスしなくても済み、また、不揮発性メモリが複数個存在するような場合に夫々からデバイスコードなどを取得するのに複数回不揮発性メモリをアクセスしなくても済む。【００１９】
本発明の具体的な形態として、前記所定の第１のコマンドは上記記憶装置の初期化コマンドとは異なるコマンドコードを有する。別の形態として、前記所定の第１のコマンドに上記記憶装置の初期化コマンドのコマンドコードを割当てるとき、前記インタフェースコントローラは、初期化処理のレスポンスに続けて前記少なくとも一方の情報を外部に出力する。更に別の形態として、前記所定の第１のコマンドに前記インタフェースコントローラが保有するカード識別レジスタ又はカード特性レジスタのような所定のレジスタに対するリードコマンドのコマンドコードを割当てるとき、前記インタフェースコントローラは、前記レジスタが保有する情報の出力に続けて、又はレジスタの予約領域に割当てて前記少なくとも一方の情報を外部に出力する。【００２０】
本発明の具体的な形態として、前記リセット応答情報は、前記セキュリティコントローラの動作限界周波数及びヒストリカルバイト情報を含む。前記記憶領域の初期化単位を示す情報は、不揮発性メモリの種別を示すデバイスコード、又は前記デバイスコードに基づいて生成された初期化単位に応ずるデータ数情報である。【００２１】
〔２〕カードホストのようなデータ処理装置は、上記記憶装置が装着可能にされ、前記リセット応答情報を出力させる前記所定の第１のコマンドを前記記憶装置に出力し、これに応答して前記記憶装置から出力されるリセット応答情報を入力し、入力したリセット応答情報を参照して、前記セキュリティコントローラの動作周波数の設定を変更可能である。リセット応答情報を外部からのコマンドに応答して外部に出力することにより、それを受けるカードホストのようなデータ処理装置は、リセット応答情報を参照してインタフェースコントローラにセキュリティコントローラの動作速度若しくは動作周波数等を変更させることが可能になる。【００２２】
別の形態によるカードホストのようなデータ処理装置は、上記記憶装置が装着可能にされ、前記記憶領域の初期化単位を示す情報を出力させる前記所定の第１のコマンドを前記記憶装置に出力し、これに応答して前記記憶装置から出力される前記記憶領域の初期化単位を示す情報を入力し、入力した前記初期化単位を示す情報に基づいて、前記記憶装置への書込みデータのデータ転送数を前記初期化単位毎とする。初期化単位を示す情報を外部からのコマンドに応答して外部に出力することにより、それを受けるカードホストのようなデータ処理装置は、不揮発性メモリに対する記憶情報の書き換えに際して、初期化単位を示す情報を参照することにより、記憶領域の初期化単位に見合う量の書込みデータを記憶装置に送ってから書込み指示を与えることが可能になる。【００２３】
〔３〕メモリカードのような記憶装置はインタフェースコントローラ及び書き換え可能な不揮発性メモリを備え、前記インタフェースコントローラは、前記不揮発性メモリの記憶領域の初期化単位を示す情報を、外部から前記インタフェースコントローラに与えられる所定のコマンドに応答して外部に出力可能である。初期化単位を示す情報を外部からのコマンドに応答して外部に出力することにより、それを受けるカードホストのようなデータ処理装置は、不揮発性メモリに対する記憶情報の書き換えに際して、初期化単位を示す情報を参照することにより、記憶領域の初期化単位に見合う量の書込みデータを記憶装置に送ってから書込み指示を与えることが可能になる。【００２４】
本発明の具体的形態として、前記所定のコマンドに前記記憶装置の初期化コマンドと同じコマンドコードを割当てるとき、前記インタフェースコントローラは、初期化処理のレスポンスに続けて前記初期化単位を示す情報を外部に出力する。また、別の形態として、前記所定のコマンドに前記インタフェースコントローラが保有するカード識別レジスタ又はカード特性レジスタのような所定のレジスタに対するリードコマンドと同じコマンドコードを割当てるとき、前記インタフェースコントローラは、前記レジスタが保有する情報の出力に続けて、又はレジスタの予約領域に割当てて前記初期化単位を示す情報を外部に出力する。【００２５】
本発明の具体的形態として、前記初期化単位を示す情報は、不揮発性メモリの種別を示すデバイスコード、又は前記デバイスコードに基づいて生成された記憶領域の初期化単位に応ずるデータ数情報である。前記インタフェースコントローラは、前記不揮発性メモリからその種別を示すデバイスコードを取得し、取得したデバイスコードに基づいて前記不揮発性メモリの動作限界周波数を取得し、前記所定のコマンドに応答して動作限界周波数を外部に出力する。前記インタフェースコントローラは周波数を設定するコマンドに応答して不揮発性メモリに与えるクロック信号の周波数を変更可能である。
【発明の効果】
【００２６】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。【００２７】
すなわち、リセット応答情報の外部出力や初期化単位を示す情報の外部出力を行なうことができるから、ＩＣカードチップのようなセキュリティコントローラ若しくはフラッシュメモリチップのような不揮発性メモリを搭載したメモリカードのような記憶装置に対して、カードホストのようなデータ処理装置との間におけるコミュニケーション能力を向上させることができる。【００２８】
リセット応答情報の外部出力が可能であるから、ＩＣカードチップのようなセキュリティコントローラを搭載したメモリカードのような記憶装置におけるセキュリティコントローラの動作速度や電力消費を変更可能になる。【００２９】
初期化単位を示す情報の外部出力が可能であるから、メモリカードに搭載されたフラッシュメモリのような不揮発性メモリにおける消去単位のような記憶領域に対してその初期化単位に則した書換えストレスが少なく書込みデータの転送効率の良好なアクセス制御を外部より行なうことが可能になる。
【図面の簡単な説明】
【００３０】
【図１】本発明を適用した記憶装置としてのＭＭＣの内部構成を示したブロック図である。
【図２】セキュアリードコマンド（ＣＭＤ５１）とセキュアライトコマンド（ＣＭＤ５２）のコマンドプロトコルを示す説明図である。
【図３】ＡＴＲ情報読み出しコマンドの幾つかの形態を例示する説明図である。
【図４】ＡＴＲ情報読み出しコマンドＣＭＤ５０による機能を実現するための第１の実施形態を例示する説明図である。
【図５】ＡＴＲ情報読み出しコマンドＣＭＤ５０による機能を実現するための第２の実施形態を例示する説明図である。
【図６】ＡＴＲ情報読み出しコマンドＣＭＤ５０による機能を実現するための第３の実施形態を例示する説明図である。
【図７】ホスト機器によるＡＴＲ情報を参照した動作例を示す説明図である。
【図８】ホスト機器によるＡＴＲ情報を参照した別の動作例を示す説明図である。
【図９】ホスト機器によるＡＴＲ情報を参照した別の動作例を示す説明図である。
【図１０】ホスト機器によるＡＴＲ情報を参照した別の動作例を示す説明図である。
【図１１】ホスト機器によるＡＴＲ情報を参照した別の動作例を示す説明図である。
【図１２】消去単位を示す情報としてフラッシュメモリチップに格納されているデバイスコードの読み出しコマンドの幾つかの形態を例示する説明図である。
【図１３】デバイスコード読み出しコマンドＣＭＤ４９による機能を実現するための第１の実施形態を例示する説明図である。
【図１４】デバイスコード読み出しコマンドＣＭＤ４９による機能を実現するための第２の実施形態を例示する説明図である。
【図１５】デバイスコード読み出しコマンドＣＭＤ４９による機能を実現するための第３の実施形態を例示する説明図である。
【図１６】消去単位２ＫＢのフラッシュメモリを搭載したＭＭＣ１に１コマンドで１ＫＢのデータ転送を行なって合計２ＫＢのデータを書き込む場合の動作の前半を例示する説明図である。
【図１７】図１６の動作に続く後半動作を例示する説明図である。
【図１８】１回の書き込みコマンドで１ＫＢの書き込みデータを転送して合計１６ＫＢの書き込みを行なう場合と、１回の書き込みコマンドで２ＫＢの書き込みデータを転送して合計１６ＫＢの書き込みを行なう場合との動作の比較例を示す説明図である。
【図１９】ホスト機器がフラッシュデバイスコードからフラッシュメモリの消去単位を把握して書込みデータの転送数を最適化する動作例を示す説明図である。
【図２０】消去単位２ＫＢのフラッシュメモリを搭載したＭＭＣ１に１コマンドで２ＫＢのデータ転送を行なって合計２ＫＢのデータを書き込む動作を示す説明図である。
【図２１】読み出したデバイスコードに基づく最適書き換え単位の解析機能をコントローラチップが有する場合の例を示す説明図である。
【図２２】最適書き換え単位の解析結果に基づく書込み動作のタイミングチャートである。
【図２３】デバイスコードをフラッシュメモリチップの周波数設定に用いる例を示す説明図である。
【符号の説明】
【００３１】
１  ＭＭＣ
２  ホスト機器
３  ＭＭＣ外部端子
４  コントローラチップ
５  フラッシュメモリチップ
６  ＩＣカードチップ
１０  電源供給端子
１１  クロック入力端子
１２  コマンド入出力端子
１３  データ入出力端子
１４  グランド端子
２０  電源供給端子
２１  クロック入力端子
２３  入出力端子
２４  グランド端子
３１  ＣＰＵ
３２  フラッシュメモリＩ／Ｆ制御回路
３３  ＭＭＣＩ／Ｆ制御回路
３４  ＣＬＫ０発振器
３５  ＶＣＣ２制御回路
３６  ＣＬＫ２制御回路
３７  ＩＣカードＩ／Ｆ制御回路
３８  データバッファ
【発明を実施するための最良の形態】
【００３２】
《ＭＭＣ》
図１は、本発明を適用した記憶装置としてのＭｕｌｔｉＭｅｄｉａＣａｒｄ（ＭｕｌｔｉＭｅｄｉａＣａｒｄは、ＩｎｆｉｎｅｏｎＴｅｃｈｎｏｌｏｇｉｅｓＡＧの登録商標である。以下、「ＭＭＣ」と略記する。）の内部構成を示した図である。ＭＭＣ１は、ＭＭＣ仕様に準拠するのが好ましい。ＭＭＣ１は、ＭＭＣ１に接続されたデータ処理装置としてのホスト機器（若しくはカードホスト）２から発行されたＭＭＣ仕様に準拠したメモリカードコマンドに基づいて、機密データ保護や個人認証などに必要な暗号演算をおこなうセキュリティ処理機能を持つ。【００３３】
ホスト機器２は、例えば、携帯電話、携帯情報端末（ＰＤＡ）、パーソナルコンピュータ、音楽再生（及び録音）装置、カメラ、ビデオカメラ、自動預金預払機、街角端末、及び決済端末等が該当する。【００３４】
ＭＭＣ１は、ＭＭＣ外部端子３、インタフェースコントローラとしてのコントローラチップ４、不揮発性メモリとしてのフラッシュメモリチップ（ＦＬＡＳＨ）５、及びセキュリティコントローラとしてのＩＣカードチップ（ＭＣＵ）６を持つ。フラッシュメモリチップ５は、不揮発性の半導体メモリを記憶媒体とするメモリチップであり、フラッシュメモリコマンドによりデータの読み書きができる。ＭＭＣ外部端子３は、外部のホスト機器２と情報交換するために、電源（ＶＣＣ２）供給端子１０、クロック（ＣＬＫ１）入力端子１１、コマンド（ＣＭＤ）入出力端子１２、データ（ＤＡＴ）入出力端子１３、グランド（ＧＮＤ）端子１４、チップ選択（ＣＳ）端子１５等の７つの端子から構成される。ＭＭＣ仕様は、ＭＭＣ１の動作モードとしてＭＭＣモードとＳＰＩモードという２種類を規定しており、動作モードによってＭＭＣ外部端子３の使用法は異なる。【００３５】
コントローラチップ４は、ＭＭＣ外部端子３、フラッシュメモリチップ５、及びＩＣカードチップ６と接続され、これらを制御するマイコンチップである。【００３６】
ＩＣカードチップ６は、ＩＣカードのプラスチック基板中に埋め込むためのマイコンチップであり、ＩＣカードチップ６が有する外部端子、電気信号プロトコル、コマンドはＩＳＯ／ＩＥＣ７８１６規格に準拠している。ＩＣカードチップ６の外部端子には、電源（ＶＣＣ２）供給端子２０、クロック（ＣＬＫ２）入力端子２１、リセット（ＲＥＳ）入力端子２２、入出力（Ｉ／Ｏ）端子２３、及びグランド（ＧＮＤ）端子２４がある。ＮＣ端子は将来のための予備端子である。コントローラチップ４は、ＩＣカードチップ６の外部端子からＩＣカードチップ６にＩＣカードコマンドを発行することによって、外部のホスト機器２から要求されたセキュリティ処理に必要な演算を行なう。【００３７】
ＩＣカードチップ６は、特に図示は省略するが、演算処理を行うためのＣＰＵ（マイコン）、データ（プログラムを含む。）を記憶するためのＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、ＥＥＰＲＯＭ（Electrically Erasable Programmable ROM）、暗号／復号に関する処理を行うための暗号器を構成する暗号コプロセッサ、及び外部とデータを送受信するためのシリアルインターフェースを備える。これらはバスによって相互に接続される。【００３８】
前記暗号コプロセッサは、ホスト機器２からのコマンドに応じて、セキュリティ処理を実行する。尚、暗号コプロセッサ（ハードウェア）の変わりに、プログラム（ソフトウェア）を用いてＣＰＵがセキュリティ処理を実行してもよい。セキュリティ処理は、例えば、ＩＣカードチップ６内の記憶領域にデータが書き込まれるとき、又は、ＩＣカードチップ６内の記憶領域からデータが読み出されるときに実行される。【００３９】
前記フラッシュメモリチップ５は、不揮発性の記憶素子を有する。一般的に、ＩＣカードチップ６のＥＥＰＲＯＭの記憶容量は、フラッシュメモリチップ５の記憶容量より小さい。但し、ＥＥＰＲＯＭの記憶容量は、フラッシュメモリチップ５の記憶容量と同じでもよいし、大きくてもよい。【００４０】
ＩＣカードチップ６には、セキュリティ評価基準の国際標準であるＩＳＯ／ＩＥＣ１５４０８の評価・認証機関によって認証済みである製品を利用するのが望ましい。一般に、セキュリティ処理を行なう機能を持つＩＣカードを実際の電子決済サービスなどで利用する場合、そのＩＣカードはＩＳＯ／ＩＥＣ１５４０８の評価・認証機関による評価と認定を受ける必要がある。ＭＭＣにセキュリティ処理を行なう機能を追加することによってＭＭＣ１を実現し、それを実際の電子決済サービスなどで利用する場合、ＭＭＣ１も同様にＩＳＯ／ＩＥＣ１５４０８の評価・認証機関による評価と認定を受ける必要がある。本発明においては、ＭＭＣ１は、評価・認証機関によって認証済みのＩＣカードチップ６を内蔵し、そのＩＣカードチップ６を利用してセキュリティ処理をおこなう構造を持つことにより、セキュリティ処理機能を得る。したがって、ＭＭＣ１はＩＳＯ／ＩＥＣ１５４０８に基づくセキュリティ評価基準を容易に満足することができ、ＭＭＣにセキュリティ処理機能を追加するための開発期間を短縮することができる。しかし、ＩＳＯ／ＩＥＣ１５４０８の評価・認証機関により認証済の製品ではないＩＣカードチップを排除するものではなく、ＩＣカードチップにより提供するサービスの求めるセキュリティ強度に応じたＩＣカードチップを用いても良い。【００４１】
ＭＭＣ１は、ＭＭＣ仕様に準拠した外部インタフェースを持つのが好ましい。ＭＭＣ１は、一種類の外部インタフェースを通じて、標準メモリカードコマンド（フラッシュメモリチップへアクセスするためのコマンド）に加えて、セキュリティ処理を実行するコマンドを受け付ける必要がある。コントローラチップ４は、ＭＭＣ１が受信したコマンドが標準メモリカードコマンドであるか、セキュリティ処理を実行するコマンドであるかによって、アクセスすべきチップを選択し、コマンド処理を分配する機能を持つ。この例では、コントローラチップ４は、標準メモリカードコマンドを受信したならば、フラッシュメモリチップ５を選択し、これにフラッシュメモリコマンドを発行してホストデータを読み書きできる。また、セキュリティ処理を実行するコマンドを受信したならば、ＩＣカードチップ６を選択し、これにＩＣカードコマンドを発行してセキュリティ処理を実行することができる。更にコントローラチップは、ホスト機器２とのコミュニケーション能力を強化するために、リセット指示に応答してＩＣカードチップが出力するＡＴＲ情報を外部に出力する機能、並びに、フラッシュメモリチップ５の消去単位を示す情報を外部に出力する機能を有する。しかし、ＭＭＣ仕様に準拠した外部インタフェース以外の外部インタフェースを排除するものではなく、現在存在し若しくは将来において存在するであろう外部インタフェースに準拠するものであって良い。【００４２】
ＩＣカードチップ６の外部端子は、グランド端子２４を除いて、電源供給端子２０、クロック入力端子２１、リセット入力端子２２、入出力端子２３がコントローラチップ４と接続されている。【００４３】
コントローラチップ４は、電源供給端子１０、クロック入力端子１１を通して、ＩＣカードチップ６への電源供給、クロック供給を制御する。本実施形態によれば、ホスト機器２からセキュリティ処理を要求されないときには、コントローラチップ４がＩＣカードチップ６への電源供給やクロック供給を停止することができ、ＭＭＣ１の電力消費を削減することができる。【００４４】
電源が供給されていないＩＣカードチップ６を、ＩＣカードコマンドを受信できる状態にするには、まず、ＩＣカードチップ６に電源供給を開始し、リセット処理を施す必要がある。即ち、コントローラチップ４は、ＭＭＣ１がホスト機器２からセキュリティ処理を実行するコマンドを受信したのを契機に、電源供給端子を通してＩＣカードチップ６への電源供給を開始する機能を有する。また、コントローラチップ４は、ＭＭＣ１がホスト機器２からセキュリティ処理を実行するコマンドを受信したのを契機に、リセット入力端子を通してＩＣカードチップ６のリセット処理をおこなう機能を有する。これによれば、コントローラチップ４は、セキュリティ処理を実行するコマンドを受信するまでＩＣカードチップ６への電源供給を停止させておくことができる。したがって、ＭＭＣ１の電力消費を削減することができる。【００４５】
コントローラチップ４は、ＩＣカードチップ６のクロック入力端子を通してＩＣカードチップ６に供給するクロック信号をＭＭＣ１内部で発生し、その周波数、供給開始タイミング、供給停止タイミングを制御する機能を有する。【００４６】
コントローラチップ４は、ＣＰＵ３１、フラッシュメモリＩ／Ｆ制御回路（ＦＭＩＦ）３２、ＭＭＣＩ／Ｆ制御回路（ＭＭＣＩＦ）３３、ＣＬＫ０発振器（ＣＬＫ０ＧＥＮ）３４、ＶＣＣ２制御回路（ＶＣＣ２ＣＮＴ）３５、ＣＬＫ２制御回路（ＣＬＫ２ＣＮＴ）３６、ＩＣカードＩ／Ｆ制御回路（ＩＣＩＦ）３７、及びデータバッファ３８を有する。これらの構成要素３１〜３８は、ホスト機器２からＶＣＣ１端子１０やＧＮＤ１端子１４、１４を通して供給された電力により動作する。ＭＭＣＩ／Ｆ制御回路３３は、ＣＳ端子１５、ＣＭＤ端子１２、ＣＬＫ１端子１１、及びＤＡＴ端子１３と接続されており、ＭＭＣ１がそれらの端子を通してホスト機器２と情報交換するためのインタフェースを制御する論理回路である。【００４７】
ＣＰＵ３１は、ＭＭＣＩ／Ｆ制御回路３３と接続されており、ＭＭＣＩ／Ｆ制御回路３３を制御する。ＭＭＣＩ／Ｆ制御回路３３がＣＭＤ端子１２を通してホスト機器２からメモリカードコマンドを受信すると、ＭＭＣＩ／Ｆ制御回路３３は、そのコマンドの受信が成功したかどうかの結果をホスト機器２に伝えるためＣＭＤ端子１２を通してホスト機器２にレスポンスを送信する。ＣＰＵ３１は、受信したメモリカードコマンドを解釈し、コマンド内容に応じた処理を実行する。また、そのコマンド内容に応じてホスト機器２とＤＡＴ端子１３を通してデータの送受信をおこなう必要がある場合、ＣＰＵ３１は、ＭＭＣＩ／Ｆ制御回路３３へのデータの送出、ＭＭＣＩ／Ｆ制御回路３３からのデータの取得を行なう。ＣＬＫ０発振器３４は、ＣＰＵ３１と接続され、ＣＰＵ３１を動作させる駆動クロックを供給する。【００４８】
フラッシュメモリチップ５は、不揮発性の半導体メモリを記憶媒体とするメモリチップである。フラッシュメモリチップ５は、ホスト機器２からＶＣＣ１端子１０やＧＮＤ１端子１４を通して供給された電力により動作する。フラッシュメモリチップ５は、外部からのフラッシュメモリコマンドに従って、入力されたデータを不揮発性の半導体メモリに格納するライト機能、また同メモリに格納されたデータを外部に出力するリード機能を持つ。フラッシュメモリＩ／Ｆ制御回路３２は、フラッシュメモリチップ５にフラッシュメモリコマンドを発行したり、そのコマンドで入出力するデータを転送するための論理回路である。ＣＰＵ３１は、フラッシュメモリＩ／Ｆ制御回路３２を制御し、フラッシュメモリチップ５にデータのライト機能やリード機能を実行させる。ホスト機器２から受信したデータをフラッシュメモリチップ５にライトしたり、フラッシュメモリチップ５に格納されたデータをホスト機器２に送信する必要があるとき、ＣＰＵ３１は、フラッシュメモリＩ／Ｆ制御回路３２とＭＭＣＩ／Ｆ制御回路３３の間のデータ転送を制御する。【００４９】
ＩＣカードチップ６のグランド端子２４は、ＭＭＣ外部端子３のＧＮＤ端子１４に接続される。ＩＣカードチップ６のＶＣＣ２端子２０は、コントローラチップ４のＶＣＣ２制御回路３５に接続される。ＩＣカードチップ６のＲＳＴ端子（リセット入力端子）２２とＩ／Ｏ端子（データ入出力端子）２３は、コントローラチップ４のＩＣカードＩ／Ｆ制御回路３７に接続される。ＩＣカードチップ６のＣＬＫ２端子（クロック入力端子）２１は、コントローラチップ４のＣＬＫ２制御回路３６に接続される。【００５０】
ＶＣＣ２端子２０は、ＩＣカードチップ６に電力を供給するための電源端子である。ＶＣＣ２制御回路３５は、ＶＣＣ２電圧を生成し、ＭＯＳ−ＦＥＴ素子を用いたスイッチ回路によりＶＣＣ２端子２０への電力の供給開始と供給停止を制御する回路である。ＶＣＣ２制御回路３５はＣＰＵ３１と接続され、ＣＰＵ３１はＶＣＣ２端子２０への電力供給の開始と停止を制御することができる。ＩＣカードチップ６を使用しないときは、ＣＰＵ３１はＶＣＣ２端子２０への電力供給を停止することができる。ＭＭＣ１は、ＩＣカードチップ６への電力供給を停止することにより、それが消費する電力を節約することができる。【００５１】
ＣＬＫ２端子２１は、ＩＣカードチップ６にクロック信号を入力する端子である。ＣＬＫ２制御回路３６は、ＣＬＫ２端子２１にクロックを供給する回路である。ＣＬＫ２制御回路３６は、ＣＬＫ０発振器３４から供給されたクロック信号をもとにしてＣＬＫ２端子２１に供給するクロック信号を生成する。ＣＬＫ２制御回路３６はＣＰＵ３１と接続されており、ＣＬＫ２端子２１へのクロックの供給開始と供給停止をＣＰＵ３１から制御することができる。ＩＣカードチップ６は、自身内部に駆動クロック発振器をもたない。そのため、ＣＬＫ２端子２１から駆動クロックを供給することによって動作する。ＣＬＫ２制御回路３６が、ＣＬＫ２端子２１へのクロック供給を停止すると、ＩＣカードチップ６の動作は停止するため、ＩＣカードチップ６の消費電力を低下させることができる。この時、ＶＣＣ２端子２０への電力供給が保たれていれば、ＩＣカードチップ６の内部状態は維持される。【００５２】
ここで、ＣＬＫ２端子２１に供給するクロック信号の周波数をＦ２、ＣＬＫ０発振器３４から供給されたクロック信号の周波数をＦ０、ＰとＱを正の整数とすると、ＣＬＫ２制御回路３６は、Ｆ２＝（Ｐ／Ｑ）＊Ｆ０の関係になるようなクロック信号を作成して、これをＣＬＫ２端子２１に供給する。ＰとＱの値はＣＰＵ３１により設定できるようになっている。Ｐを大きく設定してＦ２を大きくすると、ＩＣカードチップ６の内部処理をより高速に駆動できる。Ｑを大きく設定してＦ２を小さくすると、ＩＣカードチップ６の内部処理はより低速に駆動され、ＩＣカードチップ６の消費電力を低下させることができる。ＩＣカードチップ６の駆動クロック周波数は、ＩＣカードチップ６が正しく動作できるような許容周波数範囲内に設定される必要がある。そのため、ＣＬＫ２制御回路３６は、Ｆ２の値がその許容周波数範囲を外れるようなＰとＱの値を設定させないようになっている。【００５３】
Ｉ／Ｏ端子２３は、ＩＣカードチップ６にＩＣカードコマンドを入力したり、ＩＣカードチップ６がＩＣカードレスポンスを出力するときに使用する入出力端子である。ＩＣカードＩ／Ｆ制御回路３７は、Ｉ／Ｏ端子２３と接続されており、Ｉ／Ｏ端子２３を通してＩＣカードコマンドの信号送信やＩＣカードレスポンスの信号受信をおこなう回路である。ＩＣカードＩ／Ｆ制御回路３７はＣＰＵ３１に接続されており、ＣＰＵ３１は、ＩＣカードＩ／Ｆ制御回路３７によるＩＣカードコマンドやＩＣカードレスポンスの送受信の手続きを制御したり、送信すべきＩＣカードコマンドデータをＩＣカードＩ／Ｆ制御回路３７に設定したり、受信したＩＣカードレスポンス等をＩＣカードＩ／Ｆ制御回路３７から取得する。ＩＣカードＩ／Ｆ制御回路３７にはＣＬＫ２制御回路３６からクロックが供給されており、ＩＣカードコマンドやＩＣカードレスポンスは、ＣＬＫ２端子２１に供給するクロック信号にビット単位で同期して、Ｉ／Ｏ端子２３を通して送受信される。また、ＲＳＴ端子２２は、ＩＣカードチップ６をリセットするときにリセット信号を入力する端子である。ＩＣカードＩ／Ｆ制御回路３７は、ＲＳＴ端子２２と接続されており、ＣＰＵ３１の指示によりＩＣカードチップ６にリセット信号を送ることができる。【００５４】
《標準メモリカードコマンド》
ＭＭＣに準拠した標準メモリカードコマンドについて説明する。コマンドは６バイトのコマンドフィールドを有し、先頭１バイトがコマンドコード（先頭２ビットは“０１”固定）、途中の４バイトがパラメータ指定などに利用されるアーギュメント、最後の１バイトがＣＲＣ（Cyclic Redundancy Check）とされる。ＭＭＣではコマンドが発行される毎にホスト機器にレスポンスを返す。例えばＣＭＤ１などのリセット起動コマンドが発行されると、ＭＭＣ１内部が初期化される。このとき、コントローラチップ４はＩＣカードチップ６のリセット端子２２にリセット指示を与える。ＩＣカードチップ６はリセット端子２２にリセット指示が与えられると、内部を初期化した後、リセット応答情報としてのＡＴＲ情報をコントローラチップ４に向けて出力する。ＡＴＲ情報にはＩＣカードチップ６の動作限界周波数やヒストリカルバイト等が含まれている。ヒストリカルバイトはＩＣカードチップ６が保有するＯＳ（オペレーティングシステム）のバージョン情報やアプリケーションプログラムの属性情報等を含む。コントローラチップ４はＩＣカードチップ６から受取ったＡＴＲ情報を参照してクロックＣＬＫ２の周波数などの通信設定を行なう。この後、ホスト機器がＣＭＤ１７などのリード系コマンドを発行すると、ＭＭＣ１は、受領したコマンドに応ずるコマンドインデックス及びカードステータス等を含むレスポンスをホスト機器に返し、フラッシュメモリチップからリードしたデータをホスト機器に出力する。ＣＭＤ２４などのライト系コマンドが発行されると、ＭＭＣ１は、受領したコマンドに応ずるコマンドインデックス及びカードステータス等を含むレスポンスをホスト機器に返し、ホスト機器から供給される書込みデータをフラッシュメモリチップに書き込む。【００５５】
《セキュリティ処理用コマンド》
ＩＣカードチップ６にセキュリティ処理を実行させるセキュリティ処理用コマンドは、ＩＣカードアクセスコマンドで実現され、具体的には標準メモリカードコマンドの空きコマンドコードを利用したセキュアリードコマンド（ＣＭＤ５１）とセキュアライトコマンド（ＣＭＤ５２）を主体とする。それらのコマンドプロトコルは標準メモリカードコマンドのリード系コマンド、ライト系コマンドと同様とされる。【００５６】
図２にはセキュアリードコマンド（ＣＭＤ５１）とセキュアライトコマンド（ＣＭＤ５２）のコマンドプロトコルが示される。ＣＭＤの記載位置に対応された信号情報はＣＭＤ端子を介して入出力される信号情報であることを意味し、ＤＡＴの記載位置に対応された信号情報はＤＡＴ端子を介して入出力される信号情報であることを意味する。図において一重枠内に記述された情報の供給方向はカードホストからＭＭＣ１の向きであり、二重枠内に記述された情報の供給方向はＭＭＣ１からカードホストの向きである。セキュアライトコマンド（ＣＭＤ５２）の場合、書込みデータには、転送データバイト数ＳＴＬと、ＩＳＯ７８１６準拠のＩＣカードコマンド（Ｃ−ＡＰＤＵ）とが含まれる。コントローラチップ４のＣＰＵ３１は供給されたコマンドのコマンドコードからＣＭＤ５２を識別すると、それに付随する書込みデータの内、転送データバイト数ＳＴＬで示されるバイトのＩＣカードコマンド（Ｃ−ＡＰＤＵ）をＩＣＩＦ３７からＩＣカードチップ６の入出力端子２３に与える。セキュアリードコマンド（ＣＭＤ５１）の場合、リードデータには、転送データバイト数ＳＴＬと、ＩＳＯ７８１６準拠のＩＣカードレスポンス（Ｒ−ＡＰＤＵ）とが含まれる。ＩＣカードレスポンス（Ｒ−ＡＰＤＵ）とはＩＣカードによるセキュリティ処理が施されたデータである。即ち、先に発行されたセキュアライトコマンドでＩＣカードに与えられたＩＣカードコマンド（Ｃ−ＡＰＤＵ）にしたがって処理された結果であり、ＩＣＩＦ３７のデータバッファに保持されているデータである。コントローラチップ４のＣＰＵ３１は、供給されたコマンドのコマンドコードからＣＭＤ５１を識別すると、ＩＣカードレスポンス（Ｒ−ＡＰＤＵ）のデータバイト数ＳＴＬを先頭に当該ＩＣカードレスポンス（Ｒ−ＡＰＤＵ）をＭＭＣ１の外部に出力する。【００５７】
前記セキュアリードコマンド（ＣＭＤ５１）ではＩＣカードチップ６からＡＴＲ情報を読み出してＭＭＣ１の外部に出力させることはできない。【００５８】
《ＡＴＲ情報読み出しコマンド》
リセット応答情報としてのＡＴＲ情報は、“ＩＳＯ／ＩＥＣ  ７８１６−３：１９９７（Ｅ）のセクション６．４Ａｎｓｅｒ−ｔｏ−Ｒｅｓｅｔ  ｓｔｒｕｃｔｕｒｅ”に記載されるようにＩＣカードチップの動作限界周波数を決定する動作クロックのクロックレートや入出力データのボーレート、並びにＩＣカードチップのヒストリカルバイト情報等を含む。ＭＭＣ１はホスト機器とのコミュニケーション能力を強化するためのコマンドとして、ＡＴＲ情報をＭＭＣ１の外部に読み出し可能にするコマンド（ＡＴＲ情報読み出しコマンド）を有する。【００５９】
図３にはＡＴＲ情報読み出しコマンドの幾つかの形態が例示される。ＡＴＲ情報読み出しコマンドの第１形態は、標準メモリカードコマンドの空きコマンドコードを利用した新規コマンド（単にＡＴＲ情報読み出しコマンドＣＭＤ５０とも称する）とされる。ＡＴＲ情報読み出しコマンドＣＭＤ５０の欄においてＣＭＤの記載位置に対応された信号情報はＣＭＤ端子を介して入出力される信号情報であることを意味し、ＤＡＴの記載位置に対応された信号情報はＤＡＴ端子を介して入出力される信号情報であることを意味する。図において一重枠内に記述された情報の供給方向はカードホストからＭＭＣ１の向きであり、二重枠内に記述された情報の供給方向はＭＭＣ１からカードホストの向きである。ＣＭＤ端子にコマンドＣＭＤ５０が投入されると、これに応答してレスポンスが返され、ＤＡＴ端子には転送データバイト数ＳＴＬに続けてＡＴＲ情報が出力される。ＡＴＲ情報読み出しコマンドＣＭＤ５０はＭＭＣ１に搭載されたＩＣカードチップが１枚の場合を想定する。【００６０】
ＡＴＲ情報読み出しコマンドの第２の形態は、ＭＭＣ１に搭載されたＩＣカードチップが２枚以上の場合を想定し、ＣＭＤ５０に応答するＤＡＴ端子からのデータ出力は、ＩＣカードチップ毎にデータバイト数ＳＴＬとＡＴＲ情報の順次出力とされる。ＩＣカードチップ６の枚数の認識はコントローラチップ４が行なう。【００６１】
ＡＴＲ情報読み出しコマンドの第３の形態は、ＭＭＣ１に搭載されたＩＣカードチップが２枚以上の場合に、パラメータで指定されたＩＣカードチップのＡＴＲ情報を読み出すようにしたものである。前記パラメータは何番目のＩＣカードチップであるかを指定する情報であり、コントローラチップ４はＩＣカードチップ６の枚数に対してパラメータで指定された番号のＩＣカードチップ６のＡＴＲ情報をＤＡＴ端子から出力する。【００６２】
ＡＴＲ情報読み出しコマンドの第４の形態はＣＭＤ１等の既存のリセット起動コマンドと同じコマンドコードを持ち、コントローラチップ４は初期化処理のレスポンスに続けて、前記ＣＭＤ端子に転送データバイト数ＳＴＬとＡＴＲ情報を出力させる。【００６３】
ＡＴＲ情報読み出しコマンドの第５の形態はＣＭＤ９等の既存のレジスタリードコマンドと同じコマンドコードを持ち、コントローラチップ４はレジスタ値の出力に続けて、又はレジスタの予約領域に割当てて前記ＣＭＤ端子に転送データバイト数ＳＴＬとＡＴＲ情報を出力させる。ＣＭＤ９によるリード対象レジスタは、製造者番号やカードのシリアル番号などを保有するカード識別レジスタ（ＣＩＤ）、アクセスタイム及びカード容量等の情報を保有するカード特性データレジスタ（ＣＳＤ）とされる。【００６４】
図４にはＡＴＲ情報読み出しコマンドＣＭＤ５０による機能を実現するための第１の実施形態が例示される。第１の実施形態は、ＡＴＲ情報読み出しコマンドＣＭＤ５０を受付けると、ＩＣカードチップ６にリセット処理を行ない、それによってＩＣカードチップ６から出力されるＡＴＲ情報をデータバッファ３８に蓄積し、蓄積したＡＴＲ情報をホスト機器２に出力する、というものである。即ち、ホスト機器２からＡＴＲ情報読み出しコマンドＣＭＤ５０が発行されると（ＳＴ１）、コントローラチップ４はこれを入力し、ＣＰＵ３１で解読し、ＩＣＩＦ３７を介してＩＣカードチップ６のＲＥＳ端子にリセットを指示する（ＳＴ２）。これによってＩＣカードチップ６は初期化動作され、ＡＴＲ情報を出力するので、これをＩＣＩＦ３７からＣＰＵ３１を介してデータバッファ３８に格納する（ＳＴ３）。格納されたＡＴＲ情報はＭＭＣＩＦ３３からホスト機器２に向けて出力される（ＳＴ４）。【００６５】
図５にはＡＴＲ情報読み出しコマンドＣＭＤ５０による機能を実現するための第２の実施形態が例示される。第２の実施形態は、ＭＭＣ１のパワーオンリセット時にＩＣカードチップ６のリセット処理で出力されたＡＴＲ情報をデータバッファ３８に蓄えておいて、ＡＴＲ情報読み出しコマンドＣＭＤ５０を受付けたときは、ＡＴＲ情報をデータバッファ３８からホスト機器２に出力する、というものである。即ち、ホスト機器２からリセット起動コマンドＣＭＤ１が発行されると（ＳＴ５）、コントローラチップ４はこれを入力し、ＣＰＵ３１で解読し、ＩＣＩＦ３１を介してＩＣカードチップ６のＲＥＳ端子にリセットを指示する（ＳＴ２）。これによってＩＣカードチップ６は初期化動作され、ＡＴＲ情報を出力するので、これをＩＣＩＦ３７からＣＰＵ３１を介してデータバッファ３８に格納して保持する（ＳＴ３）。その後、ホスト機器２からＡＴＲ情報読み出しコマンドＣＭＤ５０が発行されると（ＳＴ１）、コントローラチップ４はこれを入力し、ＣＰＵ３１で解読し、データバッファ３８に格納してあるＡＴＲ情報をＭＭＣＩＦ３３からホスト機器２に向けて出力する（ＳＴ４）。第２の実施形態は第１の実施形態に比べ、ホスト機器２からＡＴＲ情報読み出しコマンドＣＭＤ５０が発行されてからＡＴＲ情報がＭＭＣＩＦ３３からホスト機器２に出力されるまでの待ち時間が短くなる。【００６６】
図６にはＡＴＲ情報読み出しコマンドＣＭＤ５０による機能を実現するための第３の実施形態が例示される。第３の実施形態は、予めフラッシュメモリチップ５の所定領域にＡＴＲ情報を格納しておき、ＡＴＲ情報読み出しコマンドＣＭＤ５０を受付けたときは、ＡＴＲ情報をフラッシュメモリチップ５から読み出してホスト機器２に出力する、というものである。即ち、フラッシュメモリチップ５にはそのユーザ領域とは別のシステム領域（ＭＭＣ１のユーザに自由な使用が認められていない領域）に、予めＣＩＤなどの制御データやＡＴＲ情報が格納されている。ホスト機器２からＡＴＲ情報読み出しコマンドＣＭＤ５０が発行されると（ＳＴ１）、コントローラチップ４はこれを入力し、ＣＰＵ３１で解読し、ＦＭＩＦ３２を介してＡＴＲ情報をリードして、データバッファ３８に格納する（ＳＴ６）。そして、ＣＰＵ３１はＡＴＲ情報をデータバッファ３８からＭＭＣＩＦ３３を介してホスト機器２に向けて出力する（ＳＴ４）。第３の実施形態は、第１の実施形態に比べれば、ホスト機器２からＡＴＲ情報読み出しコマンドＣＭＤ５０が発行されてからＡＴＲ情報がＭＭＣＩＦ３３からホスト機器２に出力されるまでの待ち時間が短くなるが、その待ち時間は第２の実施形態よりも長い。【００６７】
尚、図示はしないが、図６の例においてフラッシュメモリチップ５からデータバッファ３８へのＡＴＲ情報の読み出しをＣＭＤ１による初期化コマンドで行い、その後、図５の場合と同様にコマンドＣＭＤ５０に応答して、ＡＴＲ情報をデータバッファ３８から外部に出力するようにしてもよい。【００６８】
図７にはホスト機器によるＡＴＲ情報を参照した動作例が示される。ホスト機器２はそのホストアプリケーションプログラムにおけるＡＴＲ情報の照会モジュールを実行すると、ＡＴＲ情報読み出しコマンドＣＭＤ５０を発行する（ＳＴ１）。ＭＭＣ１はこれに応答してコントローラチップ４がＡＴＲ情報をホスト機器２に出力する（ＳＴ４）。ホスト機器２は、その照会モジュールのプログラムにしたがってリードしたＡＴＲ情報がその期待情報で特定されるＩＣカードＯＳのものであるかを判定する（ＳＴ７）。期待したＩＣカードＯＳのものであれば、セキュアライトコマンドＣＭＤ５２を発行して（ＳＴ８）、ＩＣカードチップ６に所定のセキュリティ処理を指示する。例えば、ＩＣカードＯＳに応ずるＡＴＲ情報によりＩＣカードチップに搭載されている暗号化処理方式を判定し、判定した方式が楕円暗号演算による暗号化処理方式である場合には、セキュアライトコマンドＣＭＤ５２の続く書き込みデータ（Ｄａｔａ）にてそれに見合った動作を指示する（ＳＴ９）。【００６９】
図８にはホスト機器によるＡＴＲ情報を参照した別の動作例が示される。例えばホスト機器２がバッテリ電源で動作されるような携帯端末の場合には省電力の観点よりＩＣカードチップ６の動作周波数を低くするのが望ましく、商用電源で動作される残高照会などが可能な据え置き型の端末装置の場合には処理の高速化の観点よりＩＣカードチップ６の動作周波数を高くするのが望ましい。また、ホスト機器２がＩＣカードチップ６と非接触インタフェース通信を行う場合にはＩＣカードチップ６への電力供給もアンテナを介する起電力で賄うから早くデータ処理を完了するのが望ましい。このとき、ホスト機器２は、ＡＴＲ情報読み出しコマンドＣＭＤ５０にて読み出したＡＴＲ情報に含まれる、ＩＣカードチップ６の動作可能周波数情報を参照し、そのホスト機器２が携帯端末であれば、動作周波数設定コマンドＣＭＤ５４にて、その最高動作周波数よりも低い周波数をＩＣカードチップ６に設定する。そのホスト機器２が据え置き型の端末装置であれば、動作周波数設定コマンドＣＭＤ５４にて、そのＩＣカードチップ６の動作周波数を最高動作周波数に設定する。また、そのホスト機器２がＩＣカードチップと非接触でインタフェースを行う装置であれば、動作周波数設定コマンドＣＭＤ５４にて、そのＩＣカードチップ６の動作周波数を最高動作周波数に設定する。なお、ＩＣカード動作周波数設定コマンドＣＭＤ５４は標準メモリカードコマンドの空きコマンドコードを利用した新規コマンドである。上記周波数制御を行うＣＬＫ２ＣＮＴ３６は、ＣＬＫ０ＧＥＮ３４で生成されるクロックを分周する分周器ＤＩＶ１，ＤＩＶ２と、前記分周器ＤＩＶ１，ＤＩＶ２の出力を選択するクロックセレクタＣＬＫＳＥＬを有する。例えばＩＣカードチップ６の最高動作周波数を１０ＭＨｚ（メガ・ヘルツ）とすると、分周器ＤＩＶ１の出力が１０ＭＨｚ、分周器ＤＩＶ２の出力が１ＭＨｚとされる。クロックセレクタＣＬＫＳＥＬによる出力の選択はコマンドＣＭＤ５４で指定される。ホスト機器２はリードしたＡＴＲ情報を参照し、ＡＴＲ情報から把握できる最高動作周波数でＩＣカードチップを動作させたいときはコマンドＣＭＤ５４にて分周器ＤＩＶ１の出力を選択させ、ＡＴＲ情報から把握できる最高動作周波数でＩＣカードチップを動作させたくないときはコマンドＣＭＤ５４にて分周器ＤＩＶ２の出力を選択させる。【００７０】
図９にはホスト機器２によるＡＴＲ情報を参照した別の動作例が示される。ホスト機器２はアプリケーションプログラムに従ったＩＣカードチップ６に対する動作内容に応じてＩＣカードチップ６の動作周波数を制御する。例えばホスト機器２は、そのアプリケーションプログラムにしたがってＩＣカードチップ６に暗号演算を実行させるとき、前記コマンドＣＭＤ５０を発行してＡＴＲ情報を読み込み、読み込んだＡＴＲ情報が示す限界動作周波数でＩＣカードチップ６を動作させるように、コマンドＣＭＤ５４にてコントローラチップ４にＩＣカードチップ６の動作周波数を制御させる。ＩＣカードチップ６に対する動作周波数の制御は、例えば図８で説明したように分周器の出力選択で行うことができる。その後、ホスト機器２は、コマンドＣＭＤ５２にてＩＣコマンド（Ｃ−ＡＰＤＵ））として暗号演算用のＩＣカードコマンドをコントローラチップ４に書き込む。コントローラチップ６はその暗号演算用のＩＣカードコマンド（Ｃ−ＡＰＤＵ）をＩＣカードチップ６に供給し、ＩＣカードチップ６はその暗号演算用のＩＣカードコマンド（Ｃ−ＡＰＤＵ）を解読し、解読結果にしたがって暗号演算（処理）を行い、その演算結果に対するレスポンス（Ｒ−ＡＰＤＵ）を返す。そのレスポンスは、ホスト機器から与えられるコマンドＣＭＤ５１に応答して、コントローラチップ４を経由し、ＭＭＣ１のＤＡＴ端子からホスト機器２に出力される。この動作において、ＩＣカードチップ６による暗号演算処理は、ＩＣカードチップ６の限界動作周波数若しくはそれに見合う高周波数に同期して高速に実行されることになる。要するに、ＡＴＲ情報読み出しコマンドＣＭＤ５０によりホスト機器がＩＣカードチップ６の限界動作周波数などの設定可能な動作能力を把握し、それにしたがってホスト機器はＩＣカードチップ６を利用する動作の性質上、暗号演算の同期クロック周波数の高速化に代表されるように、処理を効率化できる設定をＩＣカードチップ６に対して行うことができる。これにより、ＩＣカードチップ６による暗号演算処理に代表されるように、ホスト機器２のアプリケーションプログラムによる処理にしたがってＭＭＣ１の処理動作を高速化することができる。従来のようにホスト機器２がＩＣカードチップ６のＡＴＲ情報を読み込むためのコマンド体系が用意されていない場合には、図９の破線で囲んだコマンド処理を行うことはできず、ＩＣカードチップ６による暗号演算処理を指定してその動作の高速化を図るという制御を行うことはできず、図９における暗号演算処理の実行期間が長くなってしまう。【００７１】
図１０にはホスト機器２によるＡＴＲ情報を参照した別の動作例が示される。図９と同様に、ホスト機器２はアプリケーションプログラムに従ったＩＣカードチップ６に対する動作内容に応じてＩＣカードチップ６の動作周波数を制御する。ここでは、ホスト機器２とＩＣカードチップ６との間でデータ転送を行うときにＩＣカードチップ６のクロック信号周波数を高く設定する。ホスト機器２はＩＣカードチップ６との間でデータ転送を行うとき、前記コマンドＣＭＤ５０を発行してＡＴＲ情報を読み込み、読み込んだＡＴＲ情報が示す限界動作周波数でＩＣカードチップ６を動作させるように、コマンドＣＭＤ５４にてコントローラチップ４にＩＣカードチップ６の動作周波数を高速化させる。これにより、ホスト機器２とＩＣカードチップ６間の大容量のデータ転送を高速化することができる。従来のようにホスト機器２がＩＣカードチップ６のＡＴＲ情報を読み込むためのコマンド体系が用意されていない場合には、図１０の破線で囲んだコマンド処理を行うことはできず、ＩＣカードチップ６の動作周波数を高くすることはできず、ホスト機器２とＩＣカードチップ６間のデータ転送処理に長い時間を要することになる。【００７２】
図１１にはホスト機器２によるＡＴＲ情報を参照した別の動作例が示される。図９と同様に、ホスト機器２はアプリケーションプログラムに従ったＩＣカードチップ６に対する動作内容に応じてＩＣカードチップ６の動作周波数を制御する。ここでは、ＩＣカードチップ６とフラッシュメモリチップ５との間のデータ転送を行うときにＩＣカードチップ６のクロック信号周波数を高く設定する。ホスト機器２はＩＣカードチップ６とフラッシュメモリチップ５との間でデータ転送を行うとき、前記コマンドＣＭＤ５０を発行してＡＴＲ情報を読み込み、読み込んだＡＴＲ情報が示す限界動作周波数でＩＣカードチップ６を動作させるように、コマンドＣＭＤ５４にてコントローラチップ４にＩＣカードチップ６の動作周波数を高速化させる。これにより、ＩＣカードチップ６とフラッシュメモリチップ５との間の大容量のデータ転送を高速化することができる。従来のようにホスト機器２がＩＣカードチップ６のＡＴＲ情報を読み込むためのコマンド体系が用意されていない場合には、図１０の破線で囲んだコマンド処理を行うことはできず、ＩＣカードチップ６の動作周波数を高くすることはできず、ＩＣカードチップ６とフラッシュメモリチップ５との間のデータ転送処理に長い時間を要することになる。【００７３】
《消去単位を示す情報の読み出しコマンド》
図１２には消去単位を示す情報としてフラッシュメモリチップ５に格納されているデバイスコードの読み出しコマンド（デバイスコード読み出しコマンド）の幾つかの形態が例示される。デバイスコードとはフラッシュメモリの製造メーカ毎における製品種別を示すコード情報とされる。このデバイスコードにより、当該フラッシュメモリチップ５の記憶容量及び消去単位のバイト数などが一意にわかる。【００７４】
デバイスコード読み出しコマンドの第１形態は、標準メモリカードコマンドの空きコマンドコードを利用した新規コマンドＣＭＤ４９とされる。デバイスコード読み出しコマンドＣＭＤ４９の欄においてＣＭＤの記載位置に対応された信号情報はＣＭＤ端子を介して入出力される信号情報であることを意味し、ＤＡＴの記載位置に対応された信号情報はＤＡＴ端子を介して入出力される信号情報であることを意味する。図において一重枠内に記述された情報の供給方向はカードホストからＭＭＣ１の向きであり、二重枠内に記述された情報の供給方向はＭＭＣ１からカードホストの向きである。ＣＭＤ端子にコマンドＣＭＤ４９が投入されると、これに応答してレスポンスが返され、ＤＡＴ端子には転送データバイト数ＳＴＬに続けてフラッシュメモリチップ５のデバイスコード（フラッシュデバイスコード）が出力される。第１形態ではフラッシュメモリチップ５が１個である場合を想定する。【００７５】
デバイスコード読み出しコマンドの第２の形態は、ＭＭＣ１に搭載されたフラッシュメモリチップ５が複数個のメモリチップから構成されている場合を想定し、ＣＭＤ４９に応答するＤＡＴ端子からのデータ出力は、フラッシュメモリチップ５毎にデータバイト数ＳＴＬとフラッシュデバイスコードの順次出力とされる。フラッシュメモリチップ５の個数の認識はコントローラチップ４が行い、その個数分のデータ出力を制御する。【００７６】
デバイスコード読み出しコマンドの第３の形態は、ＭＭＣ１に搭載されたフラッシュメモリチップ５が２枚以上の場合に、パラメータで指定された１枚のフラッシュメモリチップ５のフラッシュデバイスコードを読み出すようにしたものである。前記パラメータは何番目のフラッシュメモリチップであるかを指定する情報であり、コントローラチップ４はフラッシュメモリチップの枚数に対してパラメータで指定された番号のフラッシュメモリチップのフラッシュデバイスコードをＤＡＴ端子から出力する。第３形態は、フラッシュメモリチップ５が複数枚搭載されている場合に、一つずつ個別のフラッシュデバイスコードをリードしようとする場合に用いる意義が有る。【００７７】
図１３にはデバイスコード読み出しコマンドＣＭＤ４９による機能を実現するための第１の実施形態が例示される。第１の実施形態では、ホスト機器２がデバイスコード読み出しコマンドＣＭＤ４９を発行すると（ＳＴ１０）、コントローラチップ４はフラッシュメモリチップ５にデバイスコード出力コマンドを発行し（ＳＴ１１）、これによってフラッシュメモリチップ５から読み出されたフラッシュデバイスコードをデータバッファ３８に蓄積し（ＳＴ１２）、蓄積したフラッシュデバイスコードをホスト機器２に出力する（ＳＴ１３）。Ｆ＿ＣＯＤＥはＭＭＣ１から出力されるフラッシュデバイスコードである。【００７８】
図１４にはデバイスコード読み出しコマンドＣＭＤ４９による機能を実現するための第２の実施形態が例示される。第２の実施形態は、ＭＭＣ１のパワーオンリセット時にリセット処理でフラッシュメモリチップ５からフラッシュデバイスコードを読み出してデータバッファ３８に蓄えておいて、デバイスコード読み出しコマンドＣＭＤ４９を受付けたときは、フラッシュデバイスコードをデータバッファ３８からホスト機器２に出力する、というものである。即ち、ホスト機器２からリセット起動コマンドＣＭＤ１が発行されると（ＳＴ１４）、コントローラチップ４はこれを入力し、ＣＰＵ３１で解読し、ＦＭＩＦ３２を介してフラッシュメモリチップ５にデバイスコード出力コマンドを与える（ＳＴ１１）。コントローラチップ４はこれによってフラッシュメモリチップ５から読み出されたフラッシュデバイスコードをＣＰＵ３１を介してデータバッファ３８に格納して保持する（ＳＴ１２）。その後、ホスト機器２からデバイスコード読み出しコマンドＣＭＤ４９が発行されると（ＳＴ１０）、コントローラチップ４はこれを入力し、ＣＰＵ３１で解読し、データバッファ３８に格納してあるフラッシュデバイスコードをＭＭＣＩＦ３３からホスト機器２に向けて出力する（ＳＴ１３）。第２の実施形態は第１の実施形態に比べ、ホスト機器２からデバイスコード読み出しコマンドＣＭＤ４９が発行されてからフラッシュデバイスコードがＭＭＣＩＦ３３からホスト機器２に出力されるまでの待ち時間が短くなる。【００７９】
図１５にはデバイスコード読み出しコマンドＣＭＤ４９による機能を実現するための第３の実施形態が例示される。第３の実施形態は、予めフラッシュメモリチップ５の所定メモリ領域にフラッシュデバイスコードＦ＿ＣＯＤＥを格納しておき、デバイスコード読み出しコマンドＣＭＤ４９を受付けたときは、フラッシュデバイスコードをリードするメモリアクセスコマンドによってフラッシュデバイスコードをフラッシュメモリチップ５から読み出してホスト機器２に出力する、というものである。即ち、フラッシュメモリチップ５にはそのユーザ領域とは別のシステム領域に、予めＣＩＤなどの制御データやフラッシュデバイスコードＦ＿ＣＯＤＥが格納されている。この領域はフラッシュメモリチップ５が個別に保有するデバイスコードの記憶領域とは別のメモリ領域とされる。したがって、フラッシュメモリチップ５が複数個ある場合には、全てのフラッシュメモリチップのデバイスコードが一つのフラッシュメモリチップの前記所定領域に代表的に格納されることになる。ホスト機器２からデバイスコード読み出しコマンドＣＭＤ４９が発行されると（ＳＴ１０）、コントローラチップ４はこれを入力し、ＣＰＵ３１で解読し、ＦＭＩＦ３２を介してフラッシュメモリチップ５にデバイスコードを読み出すためのメモリアクセスコマンドを与え（ＳＴ１５）、これによってリードしたフラッシュデバイスコードをデータバッファ３８に格納する（ＳＴ１６）。そして、ＣＰＵ３１はフラッシュデバイスコードをデータバッファ３８からＭＭＣＩＦ３３を介してホスト機器２に向けて出力する（ＳＴ１３）。第３の実施形態は、第１の実施形態に比べれば、ホスト機器２からデバイスコード読み出しコマンドＣＭＤ４９が発行されてからフラッシュデバイスコードがＭＭＣＩＦ３３からホスト機器２に出力されるまでの待ち時間が短くなるが、その待ち時間は第２の実施形態よりも長い。【００８０】
尚、図示はしないが、図１５の例においてフラッシュメモリチップ５からデータバッファ３８へのフラッシュデバイスコードの読み出しをＣＭＤ１による初期化コマンドで行い、その後、図１４の場合と同様にコマンドＣＭＤ４９に応答して、フラッシュデバイスコードをデータバッファ３８から外部に出力するようにしてもよい。【００８１】
次に、ホスト機器２によるＭＭＣ１に対するデータ書き込み動作について説明する。フラッシュデバイスコードの利用形態について説明する前に、フラッシュメモリチップの消去単位の違いにより書き込みコマンド処理による指示内容に応じて消去回数や書き込み処理時間に相違を生ずることについて説明する。【００８２】
ＭＭＣ１に対してデータを連続的に書き込むマルチライトを指示するとき、ホスト機器２は、コマンドＣＭＤ２３にて５１２バイト単位の書き込みデータ数を設定し、その後コマンドＣＭＤ２５及び書き込みデータを供給して書込み動作の開始を指示する。したがって、指定される書込みデータ数と消去単位との関係によって、消去回数に相違を生ずる。例えば、１回の書き込みコマンドで１キロバイト（ＫＢ）のデータを転送する場合に、消去単位２ＫＢのＡＮＤ型フラッシュメモリに２ＫＢのデータを書き込む場合には合計２回の書込コマンドが発行され、１消去単位に対して２回消去が必要になる。消去単位４キロバイト（ＫＢ）のＡＧ−ＡＮＤ型フラッシュメモリに４ＫＢのデータを書き込む場合には合計４回の書込コマンドが発行され、１消去単位に対して４回消去が必要になる。同様に、消去単位１６キロバイト（ＫＢ）のＮＡＮＤ型フラッシュメモリに１６ＫＢのデータを書き込む場合には合計１６回の書込コマンドが発行され、１消去単位に対して１６回消去が必要になる。【００８３】
例えば消去単位２ＫＢのフラッシュメモリを搭載したＭＭＣ１に１コマンドで１ＫＢのデータ転送を行なって合計２ＫＢのデータを書き込む場合、図１６に示されるように、ホスト機器から書き込みコマンドＣＭＤ２５と５１２バイト単位の書込みデータＤａｔａ０，Ｄａｔａ１が供給されると（ＳＴ２０）、データバッファにその転送データＤａｔａ０，Ｄａｔａ１（５１２Ｂ×２）を取込む（ＳＴ２１）。書き込みを行なう論理アドレスに対応する有効な物理アドレスが存在する場合には、その論理アドレスを割当てる新たな物理アドレスを検索し、検索された新たな書き込み先物理アドレスのブロックを消去する（ＳＴ２２）。消去された書き込み先物理アドレスには、データバッファ内の１ＫＢの書込みデータＤａｔａ０，Ｄａｔａ１と、書き込み対象論理アドレスが割当てられていた元の物理アドレスの残りの１ＫＢのデータＤａｔａ２’、Ｄａｔａ３’とを書き込む（ＳＴ２３）。次に、図１７に示されるように、ホスト機器から書き込みコマンドＣＭＤ２５と残りの５１２バイト単位の書込みデータＤａｔａ２，Ｄａｔａ３が供給されると（ＳＴ２４）、データバッファにその転送データＤａｔａ２，Ｄａｔａ３（５１２Ｂ×２）を取込む（ＳＴ２５）。書き込みを行なう論理アドレスに対応する有効な物理アドレスが存在する場合には、その論理アドレスを割当てる新たな物理アドレスを検索し、検索された新たな書き込み先物理アドレスのブロックを消去する（ＳＴ２６）。消去された書き込み先物理アドレスには、データバッファ内の１ＫＢの書込みデータＤａｔａ２，Ｄａｔａ３と、書き込み対象論理アドレスが割当てられていた元の物理アドレスの残りの１ＫＢのデータＤａｔａ０、Ｄａｔａ１とを書き込む（ＳＴ２７）。このように、消去単位２ＫＢのフラッシュメモリに対しては１書き込みコマンドによる新たな書き込みデータが１ＫＢの場合には２ブロックの消去が必要になる。【００８４】
また、１回の書き込みコマンドの転送データ数によって書き込み時間にも差を生ずる。例えば図１８に例示されるように、１回の書き込みコマンドで１ＫＢの書き込みデータを転送して合計１６ＫＢの書き込みを行なう場合と、１回の書き込みコマンドで２ＫＢの書き込みデータを転送して合計１６ＫＢの書き込みを行なう場合とを比較すると、消去単位に拘わらず５１２バイト単位のデータ転送に要する合計時間はｔｄｔｒ×３２のように一定になるが、フラッシュメモリに対する消去及び書き込み処理に要する時間に差異を生ずる。消去単位２ＫＢのフラッシュメモリで合計１６ＫＢの書き込みを行なうには、１回の書き込みコマンド毎に２ＫＢの書き込みデータを転送するのが最も効率的である。【００８５】
このように、フラッシュメモリチップの消去単位の違いにより書き込みコマンド処理による指示内容に応じて消去回数や書き込み処理時間に相違を生ずる。これに鑑みれば、ホスト機器がフラッシュメモリの消去単位を把握して書き込みデータを転送すれば、１消去単位に対する消去回数を減らし、また、書き込み処理時間が無駄に長くなることを抑止することが可能になる。ホスト機器２は、前記デバイスコード読み出しコマンドＣＭＤ４９によって読み出したフラッシュデバイスコードからフラッシュメモリチップ５の消去単位を把握する。【００８６】
図１９にはホスト機器２がフラッシュデバイスコードからフラッシュメモリチップ５の消去単位を把握して書込みデータの転送数を最適化する動作例が示される。消去単位２ＫＢのフラッシュメモリチップ５に対して５１２Ｂ単位で書き込みを行なう場合には書き込みコマンドの発行と消去及び書き込み動作を４回繰り返すことが必要になる。これに対し、ホスト機器２は、デバイスコード読み出しコマンドＣＭＤ４９によって読み出したフラッシュデバイスコードからフラッシュメモリチップ５の消去単位を把握すれば、消去単位２ＫＢのフラッシュメモリチップ５の場合には２ＫＢ単位で書き込みを行なえば、ホスト機器２からの書き込みコマンドの発行とフラッシュメモリチップ５での消去及び書き込み動作を１回で完了できることを把握し、それにしたがって、５１２バイトの書込みデータを４個転送して、２ＫＢの書き込み１回で書き込み処理を完了する。【００８７】
図２０には消去単位２ＫＢのフラッシュメモリチップ５を搭載したＭＭＣ１に１コマンドで２ＫＢのデータ転送を行なって合計２ＫＢのデータを書き込む動作が示される。この書き込み動作の前にホスト機器２はコマンドＣＭＤ４９にてＭＭＣ１に搭載されたフラッシュメモリチップ５の消去単位が２ＫＢであることを把握している。【００８８】
ホスト機器２から書き込みコマンドＣＭＤ２５と２ＫＢバイト単位の書込みデータＤａｔａ０，Ｄａｔａ１、Ｄａｔａ２，Ｄａｔａ３が供給されると（ＳＴ３０）、データバッファ３８にその転送データＤａｔａ０，Ｄａｔａ１，Ｄａｔａ２，Ｄａｔａ３（５１２Ｂ×４）を取込む（ＳＴ３１）。書き込みを行なう論理アドレスに対応する有効な物理アドレスが存在する場合には、その論理アドレスを割当てる新たな物理アドレスを検索し、検索された新たな書き込み先物理アドレスのブロックを消去する（ＳＴ３２）。消去された書き込み先物理アドレスには、データバッファ内の２ＫＢの書込みデータＤａｔａ０，Ｄａｔａ１、Ｄａｔａ２，Ｄａｔａ３を書き込む（ＳＴ３３）。これで書き込み処理を完了する。【００８９】
図２１には読み出したデバイスコードも基づく最適書き換え単位の解析機能をコントローラチップ４が有する場合の例を示す。コントローラチップ４は、ホスト機器２から最適書き換え単位読み出しコマンドＣＭＤ４８が供給されると（ＳＴ４０）、そのコマンドＣＭＤ４８をＣＰＵ３１でデコードし、フラッシュメモリチップ５にフラッシュデバイスコードの読み出しを指示（ＳＴ４１）する。コントローラチップ４はフラッシュメモリチップ５から読み出されたフラッシュデバイスコードから、消去単位を取得し、最適な書き換え単位を解析する。例えば、デバイスが消去単位２ＫＢのフラッシュメモリチップ５の場合には最適書き換え単位は２ＫＢである。解析結果は２ＫＢのような値であってもよいし、５１２Ｂをデータ単位とするデータ数、例えば４であってもよい。この解析結果はデータバッファ３８に保持される（ＳＴ４２）。その後、ＣＰＵ３１はデータバッファ３８に保持した最適書き換え単位情報をホスト機器２に出力する。ホスト機器２はその最適書き換え単位情報を直接参照して、１回の書き込みコマンドに付随させるデータ数を決定して、ＭＭＣ１に書き込みコマンドを発行する。例えば、図２２の例では、Ｆ＿ＣＮＴが最適書き換え単位情報であり値４とされる。この値４は、５１２Ｂ×４を意味し、書き込みコマンドＣＭＤ２５に続く書き込みデータは、５１２ＢのＤｉｎ５１２Ｂが４単位とされ、合計２ＫＢとされ、消去単位２ＫＢのフラッシュメモリチップ５にとって消去及び書き込み処理を最も効率的に行なうことができる。【００９０】
図２３にはデバイスコードをフラッシュメモリチップ５の周波数設定に用いる例が示される。ホスト機器２からデバイスコード読み出しコマンドＣＭＤ４９が発行され（ＳＴ１０）、それに応答するフラッシュデバイスコードＦ＿ＣＯＤＥがホスト機器２に出力されると（ＳＴ１３）、ホスト機器２はフラッシュデバイスコードからフラッシュメモリチップ５の動作限界周波数を算出し（ＳＴ５０）、フラッシュメモリチップ５の動作周波数を設定するためのコマンドＣＭＤ５４を発行する（ＳＴ５１）。コントローラチップ４はそのコマンドＣＭＤ５４を受取ると、ＣＬＫ２ＣＮＴ３６によって、ＣＰＵ３１、ＤＢＵＦ３８、フラッシュメモリチップ５の動作周波数を制御する。図８の説明ではＣＬＫ２ＣＮＴ３６によってＩＣカードチップ６の動作周波数の設定を行なったが、ここでは、ＣＬＫ２ＣＮＴ３６は、ＣＬＫ０ＧＥＮ３４で生成されるクロックを分周する分周器ＤＩＶ１，ＤＩＶ２と、前記分周器ＤＩＶ１，ＤＩＶ２の出力を選択するクロックセレクタＣＬＫＳＥＬを有し、例えばフラッシュメモリチップ５の最高動作周波数を１０ＭＨｚ（メガ・ヘルツ）とすると、分周器ＤＩＶ１の出力が１０ＭＨｚ、分周器ＤＩＶ２の出力が１ＭＨｚとされる。クロックセレクタＣＬＫＳＥＬによる出力の選択はコマンドＣＭＤ５４で指定される。ホスト機器２はリードしたフラッシュデバイスコードを参照し、そこから把握できる最高動作周波数でフラッシュメモリチップ５を動作させたいときはコマンドＶＣＭＤ５４にて分周器ＤＩＶ１の出力を選択させ、デバイスコードから把握できる最高動作周波数でＩＣカードチップを動作させたくないときはコマンドＣＭＤ５４にて分周器ＤＩＶ２の出力を選択させる。尚、ＤＢＵＦ３８はシンクロナスＤＲＡＭのようなクロック同期動作されるので、フラッシュメモリチップ５やＣＰＵ３１の動作周波数に合わせてその動作クロック周波数も制御されるようになっている。【００９１】
図８の場合もそうであるが、代表的に２個が示された分周器は可変分周器に変更し、コマンドによって分周比を任意にもしくは多段階でプログラマブルに可変可能に制御できるようにしてもよい。【００９２】
特に図示はしないが、動作限界周波数読み出しコマンドのような所定のコマンドに応答して、コントローラチップ４がフラッシュメモリチップ５からフラッシュデバイスコードＦ＿ＣＯＤＥを読み込み、読み込んだフラッシュデバイスコードからフラッシュメモリチップ５の動作限界周波数を算出し、算出した動作限界周波数をホスト機器２に出力するようにしてもよい。ホスト機器２が、その動作限界周波数に基づいてフラッシュメモリチップ５などの動作周波数を設定するためのコマンドＣＭＤ５４を発行すると、コントローラチップ４はそのコマンドＣＭＤ５４に応答して、前記ＣＬＫ２ＣＮＴ３６によって、ＣＰＵ３１、ＤＢＵＦ３８、フラッシュメモリチップ５の動作周波数を制御する。【００９３】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。【００９４】
例えば、記憶装置はＭＭＣに限定されず、その他のメモリカード規格の種種の記憶装置に広く適用する事ができる。したがって、コマンドコード、コマンドフォーマット、データ通信プロトコルなどはそのカード規格に従って種々変更可能である。また、インタフェースコントローラ、セキュリティコントローラ、不揮発性メモリは夫々別チップであることに限定されず、例えば、インタフェースコントローラと不揮発性メモリメモリを１チップにしたり、全てを１チップにしたりすることも可能である。また、セキュリティコントローラはＩＣカードマイコンに限定されず、将来開発され或いは現に存在する、セキュリティ機能を有する回路モジュールであればよい。
【産業上の利用可能性】
【００９５】
本発明は、フラッシュメモリチップ、ＩＣカード用マイクロコンピュータチップ及びコントローラチップを搭載したメモリカードなどに好適である。
【図１】
2005081180.tif 000002
【図２】
2005081180.tif 000003
【図３】
2005081180.tif 000004
【図４】
2005081180.tif 000005
【図５】
2005081180.tif 000006
【図６】
2005081180.tif 000007
【図７】
2005081180.tif 000008
【図８】
2005081180.tif 000009
【図９】
2005081180.tif 000010
【図１０】
2005081180.tif 000011
【図１１】
2005081180.tif 000012
【図１２】
2005081180.tif 000013
【図１３】
2005081180.tif 000014
【図１４】
2005081180.tif 000015
【図１５】
2005081180.tif 000016
【図１６】
2005081180.tif 000017
【図１７】
2005081180.tif 000018
【図１８】
2005081180.tif 000019
【図１９】
2005081180.tif 000020
【図２０】
2005081180.tif 000021
【図２１】
2005081180.tif 000022
【図２２】
2005081180.tif 000023
【図２３】
2005081180.tif 000024
【国際調査報告】
2005081180.tif 000025
2005081180.tif 000026
2005081180.tif 000027
2005081180.tif 000028