(57)【要約】【課題】情報端末からのフラッシュメモリとＩＣカードへの並列アクセスを行うことができ、また、フラッシュメモリから情報端末とＩＣカードへのデータ転送を並列に行うことができる記憶装置を提供する。【解決手段】記憶装置において、フラッシュメモリデバイス１３０へのアクセスに用いられるフラッシュメモリバッファと、ＩＣカードデバイス１８０へのアクセスに用いられるＩＣカードバッファを持ち、かつそれらはデータの読み出しに用いられるＲＥＡＤバッファとデータの書き込みに用いられるＷＲＩＴＥバッファに分けて管理し、記憶装置に接続された情報端末、記憶装置内部のＩＣカード、フラッシュメモリへのアクセスを制御するアドレス制御部（１６０、１６２、１６４）と、それらのデータ転送時の競合を調停するアドレス制御管理部１９０を備えた。【選択図】図１
2007310760.tif 000002
【特許請求の範囲】
【請求項１】
情報端末が接続されるインターフェースと、
不揮発性の記憶領域を有する記憶部と、
データ処理機能を有する処理部と、
前記記憶部へのデータ書き込み時のデータを格納する第１のバッファメモリと、
前記記憶部からのデータ読み出し時のデータを格納する第２のバッファメモリと、
前記処理部へのデータ書き込み時のデータを格納する第３のバッファメモリと、
前記処理部からのデータ読み出し時のデータを格納する第４のバッファメモリと、
前記第１のバッファメモリ、前記第２のバッファメモリ、前記第３のバッファメモリ、および前記第４のバッファメモリと前記情報端末との間のデータ転送を制御する第１のアドレス制御部と、
前記第１のバッファメモリ、前記第２のバッファメモリ、前記第３のバッファメモリ、および前記第４のバッファメモリと前記処理部との間のデータ転送を制御する第２のアドレス制御部と、
前記第１のバッファメモリ、前記第２のバッファメモリ、前記第３のバッファメモリ、および前記第４のバッファメモリと前記記憶部との間のデータ転送を制御する第３のアドレス制御部とを備え、
前記第１のアドレス制御部、前記第２のアドレス制御部、および前記第３のアドレス制御部は、データを転送する際、前記第１のバッファメモリ、前記第２のバッファメモリ、前記第３のバッファメモリ、および前記第４のバッファメモリの状態に基づいて、データの転送制御を行うことを特徴とする記憶装置。
【請求項２】
請求項１記載の記憶装置において、
前記第１のアドレス制御部、前記第２のアドレス制御部、および前記第３のアドレス制御部は、それぞれ、前記インターフェースとの間の転送バス、前記処理部との間の転送バス、および前記記憶部との間の転送バスにおける転送データの競合の調停処理を行うことを特徴とする記憶装置。
【請求項３】
請求項１記載の記憶装置において、
前記第１のアドレス制御部と前記インターフェースとの間の転送バス、前記第２のアドレス制御部と前記処理部との間の転送バス、および前記第３のアドレス制御部と前記記憶部との間の転送バスにおける転送データの競合の調停を行うアドレス制御管理部を備えたことを特徴とする記憶装置。
【請求項４】
請求項３記載の記憶装置において、
前記アドレス制御管理部は、前記第１のアドレス制御部、前記第２のアドレス制御部、および前記第３のアドレス制御部による前記第１のバッファメモリ、前記第２のバッファメモリ、前記第３のバッファメモリ、および前記第４のバッファメモリの利用状態を管理し、その管理情報に基づいて前記第１のアドレス制御部、前記第２のアドレス制御部、および前記第３のアドレス制御部のデータ転送処理における競合の調停を行うことを特徴とする記憶装置。
【請求項５】
請求項３記載の記憶装置において、
前記アドレス制御管理部は、前記第１のアドレス制御部、前記第２のアドレス制御部、および前記第３のアドレス制御部による前記第１のバッファメモリ、前記第２のバッファメモリ、前記第３のバッファメモリ、および前記第４のバッファメモリの利用状態を管理するテーブルを有し、
前記第１のアドレス制御部、前記第２のアドレス制御部、および前記第３のアドレス制御部は、前記テーブルの情報に基づいて、前記第１のバッファメモリ、前記第２のバッファメモリ、前記第３のバッファメモリ、および前記第４のバッファメモリへのデータの転送制御を行うことを特徴とする記憶装置。
【請求項６】
請求項１記載の記憶装置において、
前記情報端末からの、前記記憶部へのデータ転送および前記処理部へのデータ転送が発生した場合に、
前記第１のアドレス制御部は、前記記憶部へのデータ転送には前記第１のバッファメモリを優先的に用い、前記処理部へのデータ転送には前記第３のバッファメモリを優先的に用いることを特徴とする記憶装置。
【請求項７】
請求項６記載の記憶装置において、
前記第１のアドレス制御部は、前記第１のバッファメモリまたは前記第３のバッファメモリが既に利用され、かつ前記第２のバッファメモリまたは前記第４のバッファメモリが利用可能である場合に、データ転送に前記前記第２のバッファメモリまたは前記第４のバッファメモリを用いることを特徴とする記憶装置。
【請求項８】
請求項１記載の記憶装置において、
前記記憶部の第１のデータを前記処理部へ転送して処理する場合に、
前記第２のアドレス制御部および前記第３のアドレス制御部は、前記第３のバッファメモリおよび前記第４のバッファメモリを優先的に用いることを特徴とする記憶装置。
【請求項９】
請求項８記載の記憶装置において、
前記第３のアドレス制御部は、前記処理部へ送る第１のデータを前記第３のバッファメモリに転送し、
前記第２のアドレス制御部は、前記第３のバッファメモリのデータを前記処理部に転送し、前記処理部で前記第１のデータを処理した結果である第２のデータを前記第４のバッファメモリに転送することを特徴とする記憶装置。
【請求項１０】
請求項８または９記載の記憶装置において、
前記第３のアドレス制御部および前記第２のアドレス制御部は、前記第３のバッファメモリおよび前記第４のバッファメモリが既に利用され、かつ前記第１のバッファメモリおよび前記第２のバッファメモリが利用可能である場合に、データ転送に前記第１のバッファメモリと前記第２のバッファメモリを用いることを特徴とする記憶装置。
【請求項１１】
請求項１記載の記憶装置において、
前記記憶部から、前記情報端末へのデータ転送および前記処理部へのデータ転送が発生した場合に、
前記第３のアドレス制御部は、前記情報端末へのデータ転送には前記第２のバッファメモリを優先的に用い、前記処理部へのデータ転送には前記第３のバッファメモリを優先的に用いることを特徴とする記憶装置。
【請求項１２】
請求項１１記載の記憶装置において、
前記第３のアドレス制御部は、前記第２のバッファメモリまたは前記第３のバッファメモリが既に利用され、かつ前記第１のバッファメモリまたは前記第４のバッファメモリが利用可能である場合に、データ転送に前記前記第１のバッファメモリまたは前記第４のバッファメモリを用いることを特徴とする記憶装置。
【請求項１３】
請求項１記載の記憶装置において、
前記情報端末から連続して前記記憶部へデータが転送され、その処理が連続して発生した場合に、
前記第１のアドレス制御部は、前記記憶部へのデータ転送に前記第１のバッファメモリおよび前記第２のバッファメモリの両方を用いることを特徴とする記憶装置。
【請求項１４】
請求項１３記載の記憶装置において、
前記第１のアドレス制御部は、前記第３のアドレス制御部による前記第１のバッファメモリまたは前記第２のバッファメモリから前記記憶部へのデータ転送中に、前記情報端末から次のデータを受け付け、前記第１のバッファメモリまたは前記第２のバッファメモリにデータを転送することを特徴とする記憶装置。
【請求項１５】
請求項１３記載の記憶装置において、
前記第３のアドレス制御部は、前記第１のバッファメモリまたは前記第２のバッファメモリのデータを前記記憶部に転送する際、前記記憶装置の書き込みサイズに基づいて、複数のデータをまとめて転送することを特徴とする記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は汎用的な処理機能と不揮発性記憶領域を持つ記憶装置に関し、特に、内部でのアクセス処理に適用して有効な技術に関する。
【背景技術】
【０００２】
従来、汎用的な処理機能と不揮発性記憶領域を持つ記憶装置としては、国際公開第２００４／０３４３１８パンフレット（特許文献１）に記載されたＩＣカードおよびアダプタがあった。これは、ＩＣカードとフラッシュメモリ、および制御回路を有する構成の記憶装置であり、制御回路により、ＩＣカードとフラッシュメモリへのアクセスを制御するものである。
【０００３】
また、ホスト機器からの要求に応じて、フラッシュメモリチップとＩＣカードチップの両方にアクセスする記憶装置が、特開２００３−２２２１６号公報（特許文献２）に記載されている。
【特許文献１】国際公開第２００４／０３４３１８パンフレット
【特許文献２】特開２００３−２２２１６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に記載の記憶装置は、接続された情報端末からのアクセスに応じてＩＣカードとフラッシュメモリの相互にアクセスする必要があるが、その処理は排他的であり、ＩＣカードのアクセスが発生している際にはフラッシュメモリの、フラッシュメモリがアクセスされている際にはＩＣカードのアクセスが制限されるという問題があった。
【０００５】
また、特許文献２に記載の記憶装置は、フラッシュメモリチップとＩＣカードチップの両方にアクセスはしているが、ホスト機器からの要求でフラッシュメモリチップとＩＣカードチップの両方にアクセスするものであり、記憶装置のみでのフラッシュメモリチップとＩＣカードチップと間のデータ転送は行わず、データ転送などは、ホスト機器からの要求のみで行われていた。
【０００６】
そこで、本発明の目的は、情報端末からのフラッシュメモリとＩＣカードへの並列アクセスを行うことができ、また、フラッシュメモリから情報端末とＩＣカードへのデータ転送を並列に行うことができる記憶装置を提供することにある。
【０００７】
また、記憶装置内の複数のバッファにより、情報端末、フラッシュメモリ、ＩＣカード間のデータの転送効率を向上させることができる記憶装置を提供することにある。
【課題を解決するための手段】
【０００８】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【０００９】
本発明による記憶装置は、情報端末が接続されるインターフェースと、不揮発性の記憶領域を有する記憶部と、汎用のデータ処理機能を有する処理部と、記憶部へのデータ書き込み時のデータを格納する第１のバッファメモリと、記憶部からのデータ読み出し時のデータを格納する第２のバッファメモリと、処理部へのデータ書き込み時のデータを格納する第３のバッファメモリと、処理部からのデータ読み出し時のデータを格納する第４のバッファメモリと、第１のバッファメモリ、第２のバッファメモリ、第３のバッファメモリ、および第４のバッファメモリと情報端末との間のデータ転送を制御する第１のアドレス制御部と、第１のバッファメモリ、第２のバッファメモリ、第３のバッファメモリ、および第４のバッファメモリと処理部との間のデータ転送を制御する第２のアドレス制御部と、第１のバッファメモリ、第２のバッファメモリ、第３のバッファメモリ、および第４のバッファメモリと記憶部との間のデータ転送を制御する第３のアドレス制御部とを備え、第１のアドレス制御部、第２のアドレス制御部、および第３のアドレス制御部は、データを転送する際、第１のバッファメモリ、第２のバッファメモリ、第３のバッファメモリ、および第４のバッファメモリの状態に基づいて、データの転送制御を行うものである。
【発明の効果】
【００１０】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００１１】
本発明によれば、情報端末からのフラッシュメモリとＩＣカードへの並列アクセスにより処理効率が向上するという効果を奏する。
【００１２】
また、フラッシュメモリから情報端末とＩＣカードへのデータ転送を並列に行うことが可能となることで処理効率が向上するという効果を奏する。
【００１３】
また、ＩＣカードデバイスへのデータ入出力に上記のフラッシュメモリへのアクセスを主目的とするバッファと、ＩＣカードへのアクセスに主に用いられるバッファの双方を用いることが可能となるため、処理効率が向上するという効果を奏する。
【００１４】
また、連続して情報端末からフラッシュメモリへの転送並びにフラッシュメモリから情報端末への転送を行う場合にフラッシュメモリへのアクセスを主目的とするバッファの読み出しを主目的とするバッファと書き込みを主目的とするバッファを交互に利用することにより転送効率が向上するという効果を奏する。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１６】
＜記憶装置の構成＞
図１により、本発明の一実施の形態に係る記憶装置の構成について説明する。図１は本発明の一実施の形態に係る記憶装置の構成を示す構成図である。
【００１７】
図１において、記憶装置１００は、インターフェース１１０と、コントローラデバイス１２０、フラッシュメモリデバイス１３０、ＩＣカードデバイス１８０を有する。ここで記憶装置１００には、メモリーカード、ＵＳＢメモリ、ＨＤＤ、ＩＣカードなどの情報記憶媒体等が該当する。
【００１８】
インターフェース１１０は、外部の端末とコマンドコード、データ、クロック、電源、媒体セレクト信号等をやりとりするためのインターフェースであり、ＭＭＣ（ＭｕｌｔｉＭｅｄｉａＣａｒｄの略である）、ＳＤメモリカード、ＵＳＢ、ＡＴＡ、ＩＳＯ７８１６、ＬＡＮ等の接触インターフェースや、ＩＥＥＥ  ８０２．１１ｂ、Ｂｌｕｅｔｏｏｔｈ、ＩＳＯ  １４４４３  ＴｙｐｅＡ等の非接触インターフェースであってもよい。
【００１９】
また、後述するように、これらの通信インターフェースを組み合わせたものであってもよい。
【００２０】
コントローラデバイス１２０は、記憶装置１００内部を制御する回路であり、通信制御回路の他に、ＣＰＵ、メモリ、ＥＥＰＲＯＭが含まれる構成であってもよい。コントローラデバイス１２０は、それらの機能の他に第１のバッファメモリであるフラッシュＷＲＩＴＥバッファ１５０、第２のバッファメモリであるフラッシュＲＥＡＤバッファ１５２、第３のバッファメモリであるＩＣカードＷＲＩＴＥバッファ１５４、第４のバッファメモリであるＩＣカードＲＥＡＤバッファ１５６、第１〜第３のアドレス制御部であるアドレス制御部（１６０、１６２、１６４）、アドレス制御管理部１９０を含む。
【００２１】
フラッシュＷＲＩＴＥバッファ１５０、フラッシュＲＥＡＤバッファ１５２、ＩＣカードＷＲＩＴＥバッファ１５４、ＩＣカードＲＥＡＤバッファ１５６はＳＲＡＭやＤＲＡＭのような揮発性のメモリ素子からなるデバイスであり、一続きのメモリ空間を分割したものであってもよいが、ここではその役割から４つの領域に分けて扱っている。
【００２２】
また、フラッシュＷＲＩＴＥバッファ１５０、フラッシュＲＥＡＤバッファ１５２と、ＩＣカードＷＲＩＴＥバッファ１５４、ＩＣカードＲＥＡＤバッファ１５６についても取り扱うデータの種類から、ここでは分けて扱い、図１においてもそのように記載している。
【００２３】
また、各バッファの容量は、例えば、主にフラッシュメモリデバイス１３０のバッファとして用いられるフラッシュＷＲＩＴＥバッファ１５０およびフラッシュＲＥＡＤバッファ１５２はデータの転送量なども多いため、大きな容量のバッファを使用し、主にＩＣカードデバイス１８０のバッファとして用いられるＩＣカードＷＲＩＴＥバッファ１５４およびＩＣカードＲＥＡＤバッファ１５６はＩＣカードデバイス１８０との間のデータは少ないため、フラッシュＷＲＩＴＥバッファ１５０およびフラッシュＲＥＡＤバッファ１５２の容量よりは小さい容量のバッファが使用される。
【００２４】
例えば、フラッシュＷＲＩＴＥバッファ１５０およびフラッシュＲＥＡＤバッファ１５２はそれぞれ２Ｋバイトのバッファ、ＩＣカードＷＲＩＴＥバッファ１５４およびＩＣカードＲＥＡＤバッファ１５６は２５６バイトのバッファを使用する。
【００２５】
なお、ＩＣカードＷＲＩＴＥバッファ１５４およびＩＣカードＲＥＡＤバッファ１５６は、フラッシュＷＲＩＴＥバッファ１５０およびフラッシュＲＥＡＤバッファ１５２の替わりとして一時的に使用されることもあるため、フラッシュＷＲＩＴＥバッファ１５０およびフラッシュＲＥＡＤバッファ１５２の基本的な転送単位である５１２バイトの容量としてもよい。
【００２６】
アドレス制御部（１６０、１６２、１６４）は接続された各メモリの入出力を制御するモジュールであり、論理回路またはコントローラ上で動作するプログラムとして実装されていてもよい。また、アドレス制御部（１６０、１６２、１６４）はデータ入出力の切り替えだけではなく、転送アドレスの変換を行ってもよい。
【００２７】
この処理はコントローラデバイス１２０上に予め組み込まれたプログラムや回路、特定のアドレスへのアクセスや、外部コマンドがトリガーになっていてもよいが、ＩＣカードデバイス１８０のようなプログラマブルなデバイスの指示によりアドレス変換の仕組みを決定できてもよい。
【００２８】
この場合、記憶装置１００の初期化時にコントローラデバイスはＩＣカードデバイスと通信し、変換の仕組みをロードしてもよい。その場合、アドレス制御部（１６０、１６２、１６４）はロードされたパターンを用いることでアドレス変換の仕組みを制御してもよい。また、このような仕組みをアドレス制御管理部１９０が行ってもよい。その場合、アドレス制御部（１６０、１６２、１６４）はデータ入出力の際にアドレス制御管理部１９０にアドレス変換の有無を訪ねてもよい。この時アドレス変換部（１６０、１６２、１６４）は予め決められたタイミングまたは直前に問い合わせた時に指示されたタイミングによりＩＣカードデバイス１８０にアドレス変換のパターンを問い合わせることにより、動的にアドレス変換のパターンを変更できる仕組みであってもよい。
【００２９】
その際にＩＣカードデバイス１８０上のパターンを送出するソフトウエアは、予め定められたアドレス変換機能によりアドレス変換のパターンを生成してもよく、それらは予め定められたタイミングでパターンの変換を行ったり、フラッシュメモリデバイス１３０の内容や、外部インターフェースから入力されたコマンドをトリガーにしてパターンの変換を行う仕組みであってもよい。
【００３０】
例えば、ログ情報の格納を行う場合で、外部からは格納位置の特定を行わせたくない場合、フラッシュメモリデバイス１３０上のアドレスをアドレス制御部１６０または１６４が制御することにより、端末２００からのアクセス制限を行うことと同時に、ログ情報が上書きされないように毎回異なるアドレスにすることや、ログ情報格納領域がすべて埋まった際に古いデータを消去して書き込むなどの操作を行うことが可能となる。
【００３１】
アドレス制御管理部１９０は、バッファの利用状態と各データ出力バスの状態に関する情報を管理し、アドレス制御部が複数ある場合に、各アドレス制御部の競合を調停する役割を果たすモジュールであり、論理回路またはコントローラ上で動作するプログラムとして実装されていてもよい。
【００３２】
アドレス制御管理部１９０はフラッシュＷＲＩＴＥバッファ１５０、フラッシュＲＥＡＤバッファ１５２、ＩＣカードＷＲＩＴＥバッファ１５４、ＩＣカードＲＥＡＤバッファ１５６の利用を排他制御またはキューにより管理してもよい。アドレス制御部（１６０、１６２、１６４）はデータ転送先にバッファを指定する場合、そのバッファにデータを格納可能かどうかをアドレス制御管理部１９０に問い合わせてもよい。
【００３３】
そのバッファが利用可能ならばアドレス制御管理部１９０は指定されたバッファにデータを点数するための伝送路をロックし、メッセージをアドレス制御部（１６０、１６２、１６４）に返してもよい。
【００３４】
また、アドレス制御管理部１９０は、テーブルやフラグを持つことにより、複数のアドレス制御部（１６０、１６２、１６４）の動作時の競合の調停を行うようにしてもよいし、各アドレス制御部（１６０、１６２、１６４）が、アドレス制御管理部１９０やその他の記憶部に格納されたテーブルやフラグを参照することにより、それぞれが競合の調停を行うようにしてもよい。
【００３５】
ここで、簡単のために以下の説明ではアドレス制御部（１６０、１６２、１６４）が転送路のロックを行うように記述するが、実際の処理はアドレス制御管理部１９０が行う。
【００３６】
ロック状態はアドレス制御部（１６０、１６２、１６４）が利用完了通知をアドレス制御管理部１９０に返すことで解除される。ただし、各バッファの利用状態をキューにより管理できるならば、アドレス制御管理部１９０は要求をキューとしてためておき、利用可能となった段階で利用許可を与えてもよい。
【００３７】
これらのバッファメモリと各アドレス制御部（１６０、１６２、１６４）の接続は汎用バスのようなデータ通信路を介して行われてもよいが、専用のメモリアクセスバスを通して行ってもよい。
【００３８】
このとき、各アドレス制御部（１６０、１６２、１６４）が個別にメモリアクセスバスを持ってもよい。その場合、複数のバッファメモリ領域を有している効果とあわせて、処理効率が向上するという効果がある。この向上のプロセスについては後述する。
【００３９】
また、専用のメモリアクセスバスを持たない場合でも、複数のメモリ領域を持つことで、処理のパイプライン化が可能であり、結果として処理効率が向上する効果を持つ。アドレス制御部（１６０、１６２、１６４）はアドレス制御管理部１９０により、データの流れを制御する。
【００４０】
記憶部であるフラッシュメモリデバイス１３０は、外部より電力を供給されてない状態でも書き込んだ情報を保持する装置であり、フラッシュメモリ、磁気ディスク、ＥＥＰＲＯＭ、強磁性体メモリ等が該当する。したがって、ＳＤＲＡＭ等の揮発性記憶装置と、ＳＤＲＡＭにデータ保持のための電力を供給するバッテリー装置を組み合わせた構成であってもよい。また不揮発性記憶装置は、記憶装置の外部からは直接操作できないアクセス制限領域を持ってもよい。
【００４１】
処理部であるＩＣカードデバイス１８０はＣＰＵ、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、データバス、インターフェース回路、クロックジェネレータ、シリアル−パラレルデータ変換回路等から構成される処理装置であり、ＪＡＶＡ（登録商標）カード、ＭＵＬＴＯＳカード等に利用されているセキュリティチップや、同等の構成を持つものが該当する。
【００４２】
ＩＣカードデバイス１８０はオペレーティングシステムを搭載していてもよく、そのオペレーティングシステム上で任意のソフトウエアが動作可能であってもよい。
【００４３】
また、図１ではＩＣカードデバイス１８０をコントローラデバイス１２０に接続する構成を取っているが、ＩＣカードデバイス１８０が２つ以上のＩＯポートを有するならば、コントローラデバイス１２０と接続されていない端子は、コントローラデバイス１２０に接続されずに直接外部インターフェースに接続されていたり、コントローラデバイス１２０を介するものの、中の制御回路とは独立または、伝送インターフェースの変換やデータのバッファリングのみを行う形で外部インターフェースと接続される形式であってもよい。
【００４４】
ここで伝送インターフェースの変換とは、シリアル−パラレル変換や、ＲＦ（Ｒａｄｉｏ  Ｆｒｅｑｕｅｎｃｙの略である）変換、ＡＴＡやＭＭＣ等の命令セットへの変換や、これらのデータのＵＳＢインターフェースへの変換などが該当する。
【００４５】
また、ＩＯポートは１つであるものの、インターフェースからの入力に応じて上記のような外部インターフェースとの接続方法と伝送経路が切り替え可能な形式であってもよい。
【００４６】
ＩＣカードデバイス１８０がセキュリティ処理を主目的とする場合、消費電流や外部クロックを変化させることによる内部動作解析や、ＩＣのレジンコーティングやメタル層を除去することによるプローブによる解析から内部の動作およびメモリの内容を保護する耐タンパー化が施されていてもよい。
【００４７】
図１で示した構成により、複数の目的でのフラッシュメモリアクセス、複数の目的での外部インターフェースからのデータ入出力、複数の目的でのＩＣカードデバイスアクセスの並列処理が可能となる効果がある。また、データ入出力処理の高速化が可能になる効果がある。
【００４８】
ここで複数の目的とは、外部からのデータアクセスと内部処理のためのデータアクセスが発生する場合など、データ要求元またはデータ送出先が異なる場合を意味している。ただし、複数の目的での利用は、単一での目的での利用を拡張したものであり、単一での目的での利用が制限されるものではない。
【００４９】
＜記憶装置の動作＞
次に、図２〜図６により、本発明の一実施の形態に係る記憶装置の動作について説明する。図２は本発明の一実施の形態に係る記憶装置のフラッシュメモリデバイスのデータの並列処理を示すフローチャート、図３は本発明の一実施の形態に係る記憶装置の情報端末からのデータの並列転送処理を示すフローチャート、図４は本発明の一実施の形態に係る記憶装置のＩＣカードデバイスへのデータ転送を示すフローチャート、図５は本発明の一実施の形態に係る記憶装置の情報端末からのデータ転送を示すフローチャート、図６は本発明の一実施の形態に係る記憶装置の異なる接続形態を説明するための説明図である。
【００５０】
まず、図２は端末２００からフラッシュメモリデバイス１３０へのデータ転送と、フラッシュメモリデバイス１３０内のデータをＩＣカードデバイス１８０が処理し、再びフラッシュメモリデバイス１３０に書き戻す処理を例示しており、このような処理を行うケースとしては、端末２００からのデータ転送処理がログ情報を格納し、格納したログ情報をＩＣカードデバイス１８０で検証するような処理が該当する。
【００５１】
また、この他に、ＩＣカードデバイス１８０でデータを暗号化、スクランブル化するなどの処理を行ってもよく、この場合、データ転送速度を犠牲にせずにセキュリティ処理を施すことが可能となる効果がある。
【００５２】
また、フラッシュメモリデバイス１３０からのデータ読み出しは直前に格納したデータである必要はなく、任意にタイミングでの任意のアドレスへのアクセスであってもよい。
【００５３】
また、データの読み出しと書き込みが対になっている必要はなく、読み出しのみ、書き込みのみが行われてもよい。また、読み出しと書き込みが行われる際にそのアドレスは異なっていてもよい。
【００５４】
まず、端末２００上のデータ２３０は、アドレス制御部１６０により指定されたフラッシュＷＲＩＴＥバッファ１５０にデータを転送する（ステップ２１０）。フラッシュＷＲＩＴＥバッファ１５０上のデータ２３３は、アドレス制御部１６４により指示されたタイミングでフラッシュメモリデバイス１３０に格納される（ステップ２１２）。
【００５５】
格納が終了した場合、コントローラデバイス１２０は端末２００に処理結果を通知する（ステップ２１４）。ここで、データ（２３０、２３３，２３５）は、インターフェースにあわせた形式でエンコードされており、アドレスや命令コードを持っていてもよく、転送する毎に変化してもよい。
【００５６】
例えば、データ２３３がフラッシュメモリデバイス１３０への格納アドレスを含んだ形である場合、フラッシュメモリデバイス１３０に格納後のデータ２３５はアドレスに関するデータを含まなくてもよい。
【００５７】
また、端末２００インターフェースとの通信が暗号化されていたり、データ格納時にバルク暗号処理が施される場合などは、ステップ２１０またはステップ２１２のタイミングで、またフラッシュＷＲＩＴＥバッファ１５０にデータがある際にデータの暗復号処理等のデータ処理を行ってもよい。
【００５８】
以下においても、特に断らない限り、アドレス制御部（１６０、１６２、１６４）がデータを処理するタイミングまたはフラッシュＷＲＩＴＥバッファ１５０、フラッシュＲＥＡＤバッファ１５２、ＩＣカードＷＲＩＴＥバッファ１５４、ＩＣカードＲＥＡＤバッファ１５６にデータがあるタイミングで上記のようなデータ処理を行ってもよい。
【００５９】
ステップ２１４により通知を受け取った後、端末２００は新しいデータ２４０を転送し（ステップ２１６）、アドレス制御部１６０により指定されたフラッシュＷＲＩＴＥバッファ１５０に格納する。
【００６０】
フラッシュＷＲＩＴＥバッファ１５０は、データ２４３をアドレス制御部１６４により指示されたタイミングでフラッシュメモリデバイス１３０に格納する（ステップ２１８）。格納が終了すると、コントローラデバイス１２０は、終了通知を端末２００に転送する（ステップ２２０）。
【００６１】
このような通常のデータ転送シーケンスと並列に、ステップ２１２の終了後にフラッシュメモリデバイス１３０にあるデータ２３５はＩＣカードデバイス１８０での処理のために、アドレス制御部１６４により、ＩＣカードＷＲＩＴＥバッファ１５４に転送される（ステップ２５０）。ＩＣカードＷＲＩＴＥバッファ１５４にデータが格納されると、アドレス制御部１６２はデータ２７０をＩＣカードデバイス１８０に転送する（ステップ２５２）。
【００６２】
このときのステップ２５２はステップ２１６とタイミング的に重なる可能性がある。仮にタイミングが重なる場合でも利用するＷＲＩＴＥバッファが異なり、また、端末２００からフラッシュＷＲＩＴＥバッファ１５０と、ＩＣカードＷＲＩＴＥバッファ１５４からＩＣカードデバイス１８０のデータ伝送経路、それぞれのデータの転送を制御するアドレス制御部（１６０、１６２）も異なることから、これらの処理は並列に実行可能となる。
【００６３】
ただし、アドレス制御部の動作をコントローラデバイス１２０上の１つのＣＰＵが処理する場合、それぞれの処理は同時には実行できないが、その場合でもデータ転送要求とデータ転送完了通知を割り込み処理としてＣＰＵに知らせることにより、干渉を極力減らした形で処理の効率化を図れるという効果がある。
【００６４】
以下、同じシーケンスラインで同時にデータ転送が発生する場合が記述されるが、特に断りがない限りここで示したようにそれぞれの処理は並列化されて実行されている。
【００６５】
また、各データのシーケンスは便宜的にタイミングをあわせて記載しているが、実際には処理するデータ量、または、インターフェースの転送速度、データ処理に要する時間により、正確に図のよう切り分けられるものではない。
【００６６】
ただし、データ格納時の転送先と転送元のバッファは、フラッシュメモリデバイス１３０とＩＣカードデバイス１８０で分かれており、さらに、それぞれＷＲＩＴＥバッファ、ＲＥＡＤバッファに分かれており、バッファが異なることにより、処理の実行中に他の処理で利用中のデータが破壊されるおそれはなく、また、インターフェース１１０とアドレス制御部１６０、ＩＣカードデバイス１８０とアドレス制御部１６２、フラッシュメモリデバイス１３０とアドレス制御部１６４の間の転送バスにおける競合は各アドレス制御部（１６０、１６２，１６４）およびアドレス制御管理部１９０が調停するため転送処理が中止されたままになることはないという効果を持つ。
【００６７】
例えば、ステップ２１８のフラッシュメモリデバイス１３０へのデータ転送とステップ２５６の処理は重なるおそれがあるが、それぞれのデータが格納されているバッファが異なり、かつアドレス制御部１６４がこれらの処理を排他的に切り分けることによりデータが破壊されるおそれなく処理を継続できる。このことは他のケースにおいても同様である。
【００６８】
ＩＣカードデバイス１８０で処理されたデータ２７５は、アドレス制御部１６２により指定されたＩＣカードＲＥＡＤバッファ１５６に格納される（ステップ２５４）。ＩＣカードＲＥＡＤバッファ１５６上のデータ２８０はアドレス制御部１６４により指示されたタイミングでフラッシュメモリデバイス１３０に格納される（ステップ２５６）。
【００６９】
このときデータ２８５のアドレスはデータ２３５のアドレスと異なっていてもよい。このように動作することでフラッシュメモリデバイス１３０へのアクセスに関するステップ２３０からステップ２４５までの処理と、ステップ２５０からステップ２５６までの処理は並列化が可能となり、処理が高速化される。
【００７０】
また、図３は端末２００がデータをフラッシュメモリデバイス１３０に格納する処理と、端末２００がデータをＩＣカードデバイス１８０で計算させる処理を例示したものであり、このような処理を行うケースとしては、コンテンツの転送処理を行いながら、ＩＣカードデバイス１８０での課金処理を行う場合等が該当する。
【００７１】
図３においては、ステップ３１０からステップ３２０までの処理とデータ（３３０、３３３、３３５、３９０、３９３、３９５）は、それぞれ図２のフォローチャートにおけるステップ２１０からステップ２２０までの処理と、データ（２３０、２３３、２３５、２４０、２４３、２４５）と同等であり、説明は省略する。
【００７２】
このような処理の実行中に、記憶装置１００がＩＣカード処理の実行を許可している場合、端末２００から転送されたデータ３７０がアドレス制御部１６０により選択されたＩＣカードＷＲＩＴＥバッファ１５４に転送される（ステップ３５０）。
【００７３】
ＩＣカードＷＲＩＴＥバッファ１５４にあるデータ３７３はアドレス制御部１６２により指定されたタイミングでＩＣカードデバイス１８０に送られる（ステップ３５２）。
【００７４】
ＩＣカードデバイス１８０で計算されたデータ３７５はアドレス制御部１６２により指定されたＩＣカードＲＥＡＤバッファ１５６に格納される（ステップ３５４）。ＩＣカードＲＥＡＤバッファ１５６上のデータ３７７はアドレス制御部１６０により指定されたタイミングで端末２００に転送される。
【００７５】
ここでもフラッシュメモリアクセスとＩＣカード処理において利用するバッファは、フラッシュＷＲＩＴＥバッファ１５０、ＩＣカードＷＲＩＴＥバッファ１５４、ＩＣカードＲＥＡＤバッファ１５６と異なっており、また、端末２００との通信はアドレス制御部１６０が端末２００との間での転送バス上の競合を調停するため、それぞれの処理を実行中に他の処理のデータが破壊されるおそれはないという効果を持つ。
【００７６】
図３に示すように、それぞれの処理において他の処理の影響を軽微にできるため、並列度を向上させるという効果を持つ。このように動作することで端末２００からのアクセスに関するステップ３１０からステップ３２０までの処理と、ステップ３５０からステップ３５６までの処理は並列化による高速実行が可能となる。
【００７７】
また、図４は端末２００がデータをＩＣカードデバイス１８０で計算させる処理と、フラッシュメモリデバイス１３０上のデータをＩＣカードデバイス１８０で計算させる処理とを例示したものであり、このような処理を行うケースとしては、ＩＣカードデバイス１８０での決済処理後に決済処理の履歴やバランスシートをフラッシュメモリに格納する処理等が該当する。
【００７８】
まず、端末２００がＩＣカードデバイス１８０で処理を行うために用意したデータ４５０は、アドレス制御部１６０によって指定されたＩＣカードＷＲＩＴＥバッファ１５４に送られる（ステップ４１０）。
【００７９】
ＩＣカードＷＲＩＴＥバッファ１５４上のデータ４５３は、アドレス制御部１６２によって指定されたタイミングでＩＣカードデバイス１８０に送られる（ステップ４１２）。
【００８０】
ＩＣカードデバイス１８０で計算されたデータ４５５は、アドレス制御部１６２によって指定されたＩＣカードＲＥＡＤバッファ１５６へ送られる（ステップ４１４）。
【００８１】
ＩＣカードＲＥＡＤバッファ１５６上のデータ４５７は、アドレス制御部１６０によって指定されたタイミングで端末２００へ送られる。
【００８２】
この処理と平行してフラッシュメモリデバイス１３０上のデータ４７０をＩＣカードデバイス１８０で処理したい場合、アドレス制御部１６４は既にＩＣカードＷＲＩＴＥバッファ１５４とＩＣカードＲＥＡＤバッファ１５６の組が利用されているためにアドレス制御部１６４はフラッシュＷＲＩＴＥバッファ１５０とフラッシュＲＥＡＤバッファ１５２の利用を選択し、フラッシュＷＲＩＴＥバッファ１５０をデータ４７０の転送先として選択する（ステップ４２０）。
【００８３】
次に、アドレス制御部１６２によって指定されたタイミングでデータ４７５はＩＣカードデバイス１８０に転送される（ステップ４２２）。ＩＣカードデバイス１８０により計算された後に、処理後のデータ４８０はアドレス制御部１６２により選択されたフラッシュＲＥＡＤバッファ１５２に転送される（ステップ４２４）。
【００８４】
フラッシュＷＲＩＴＥバッファ１５０上のデータ４８５はアドレス制御部１６４の指定したタイミングでフラッシュメモリデバイス１３０に格納される（ステップ４２６）。
【００８５】
ここでフラッシュメモリデバイス１３０からのデータ読み出しが必要ないならば、ステップ４２０およびステップ４２２は省略してもよい。
【００８６】
また、ステップ４２０はステップ４１０の後に始まっているが、ステップ４１２が終了した以降に始まってもよい。
【００８７】
これらの場合、データ転送要求元はＩＣカードデバイス１８０であると考えられるため、ＩＣカードデバイス１８０からの通知をトリガーにしてステップ４１２以降が開始される。
【００８８】
その際のデータ通信要求は、ＩＣカードデバイス１８０とコントローラデバイス１２０の間の通常のデータ転送路の他に専用の通信路を設け、そこからフラッシュメモリアクセスが指示されてもよいし、データ転送を伴わない端末２００からのコマンドに応じて開始されてもよい。
【００８９】
また、ステップ４１４を通じてＩＣカードＲＥＡＤバッファ１５６に格納されるデータ４５７にその指定が含まれていてもよい。
【００９０】
また、ＩＣカードアクセス後等にコントローラデバイス１２０が発行する特定の命令によりその情報がコントローラデバイス１２０に通知されてもよい。
【００９１】
図４においては、ステップ４１２とステップ４２２の処理が同時に発生する可能性がある。この場合、アドレス制御部１６２は片方の通信が完了するまで、もう片方の通信を待たせておく。
【００９２】
例えば、ステップ４１２が優先して処理される場合、ステップ４１２とステップ４１４が終了するまでステップ４２２の実行を待たせておいてもよい。この結果、ステップ４１４とステップ４２４が同時に発生する可能性はなくなる。
【００９３】
以上のように、ステップ４１０からステップ４１６までの処理と、ステップ４２０からステップ４２６までの処理は利用するバッファが、フラッシュＷＲＩＴＥバッファ１５０、フラッシュＲＥＡＤバッファ１５２、ＩＣカードＷＲＩＴＥバッファ１５４、ＩＣカードＲＥＡＤバッファ１５６と異なっており、また、ＩＣカードデバイス１８０との通信は、アドレス制御部１６２がＩＣカードデバイス１８０との間での転送バス上での競合を調停するため、それぞれの処理を実行中に他の処理のデータが破壊されるおそれはないという効果を持つ。したがって処理の並列化に高速実行が可能となる。
【００９４】
図５は端末２００からフラッシュメモリデバイス１３０への転送処理が連続して発生した場合の処理を表しており、従来では、図２〜図４に示すフローチャートで説明してきた動作の場合、ＩＣカードデバイス１８０のような処理機能とフラッシュメモリデバイス１３０のような記憶領域を持つデバイスでは、他方のデータ処理を行っている際のデバイス間の調停を端末２００となる機器が行わなければならず性能の向上しないという問題があった。
【００９５】
そのため、本実施の形態のように転送処理用のバッファを２つに分けることでデータ転送時のバッファの競合をなくし、また、読み出し用のバッファと書き込み用のバッファに分けることでデータ処理のパイプライン化が可能となる。
【００９６】
いままでの説明によれば、端末２００からのデータをＩＣカードデバイス１８０で処理させる場合、データはＩＣカードＷＲＩＴＥバッファ１５４からＩＣカードデバイス１８０に送られ、計算された後に結果がＩＣカードＲＥＡＤバッファ１５６に格納され端末２００に返されることになる。
【００９７】
したがって、ＩＣカードＷＲＩＴＥバッファ１５４やＩＣカードＲＥＡＤバッファ１５６が１つ以上のデータを格納できるだけのサイズを有するならば、それらのデータをキューで管理し、複数の命令を同時に受け付けておくことが可能となる。
【００９８】
これは端末２００からのデータ転送やフラッシュメモリデバイス１３０からのデータ読み出しについても同様である。
【００９９】
例えば、フラッシュメモリ等のデバイスは、あるサイズのメモリセル毎に一括して読み書きするように設計されているため、連続してデータ転送がある場合にはデータが書き換えのサイズに達した段階でデータを転送するとデータ処理効率が高まる。
【０１００】
このとき、少なくともデータ書き換えサイズのデータバッファが２つあれば、データ書き込み処理とデータ転送処理を並列して行えるため、よりデータ転送処理の効率が増すという効果がある。
【０１０１】
図５において端末２００上のデータ５５０は、アドレス制御部１６０により指定されたフラッシュＷＲＩＴＥバッファ１５０に転送される。このときデータ５５０がフラッシュメモリデバイス１３０のデータ書き込みサイズに満たない場合で、さらに連続してデータがくることがわかっている場合、データが来るのを待ち、データが書き込みサイズまたはフラッシュＷＲＩＴＥバッファ１５０のサイズに達した後に処理５１２を行ってもよい。
【０１０２】
ここで連続してデータが転送されるかどうかは、端末２００からデータに付随して送られてくるコマンドによって識別してもよい。ＭＭＣのようなメモリカードでは、シングルデータ転送命令とマルチデータ転送命令が用意されており、この場合、マルチデータ転送命令と転送サイズをトリガーにこの制御を行ってもよい。
【０１０３】
この制御は以下のステップ５１４においてフラッシュＲＥＡＤバッファ１５２を転送先に指定可能とするかどうかを決める際の情報としてもよい。
【０１０４】
アドレス制御部１６４は先ほど示したような指定したタイミングでフラッシュメモリデバイス１３０にデータを転送する（ステップ５１２）。ステップ５１２が実行中にさらに端末２００からデータ５６０の転送要求が生じた場合、アドレス制御部１６０は、フラッシュＲＥＡＤバッファ１５２が使われていないならばフラッシュＲＥＡＤバッファ１５２にデータを転送してもよい（ステップ５１４）。
【０１０５】
この場合、このステップ５１４での処理は、ステップ５１２での処理で利用するフラッシュＷＲＩＴＥバッファ１５０とは異なるフラッシュＲＥＡＤバッファ１５２を用いてデータ転送を行い、また、データ転送のバスはインターフェース１１０とアドレス制御部１６０、フラッシュメモリデバイス１３０とアドレス制御部１６４の間で異なっているため、並列に動作可能となる。
【０１０６】
このときもデータ５６０がフラッシュＲＥＡＤバッファ１５２のサイズまたはフラッシュメモリデバイス１３０の書き込みサイズに達しておらず、かつ連続してデータが来ることがわかっている場合、データが来るのを待ち、データが書き込みサイズまたはフラッシュＲＥＡＤバッファ１５２のサイズに達した後にステップ５１６を行ってもよい。
【０１０７】
アドレス制御部１６４は先ほど示したような指定したタイミングでフラッシュメモリデバイス１３０にデータを転送してもよい（ステップ５１６）。同様にステップ５１８およびステップ５２０もステップ５１０とステップ５１２と同様に実行されてもよい。
【０１０８】
アドレス制御部（１６０、１６２、１６４）はデータ入出力の競合を調停するモジュールであるが、データ転送先が、図６に示すように、多くある場合、それらのうちのどのデバイスを用いるかを制御する目的で利用してもよい。
【０１０９】
図６で記憶装置６００は、２つのインターフェース（１１０，６１０）、２つのＩＣカードデバイス（１８０，６８０）、２つのフラッシュメモリデバイス（１３０、６３０）を有し、それらがコントローラデバイス６２０に接続された構成である。
【０１１０】
例えば、インターフェースとして無線と有線の接続インターフェースを持ち、有線と無線の接続に対応したＩＣカードデバイスを持ち、フラッシュメモリとＨＤＤを搭載したようなデバイスがこれに相当する。ただし、この構成においてインターフェース、ＩＣカードデバイス、フラッシュメモリデバイスが１つの場合を含む任意の数であってもよい。
【０１１１】
このような構成を取る場合、図２から図５に示すフローチャートで説明した経路とは別に、ＩＣカードデバイス（１８０、６８０）間、フラッシュメモリデバイス（１３０，６３０）間でのデータ転送をアドレス制御部（１６２，１６４）が制御してもよい。
【０１１２】
この場合、ＩＣカードデバイス（１８０、６８０）間の通信は通信要求元をＩＣカードデバイス１８０、通信相手をＩＣカードデバイス６８０とした場合に、データがアドレス制御部１６２により選択されたＩＣカードＷＲＩＴＥバッファ１５４に送られ、その後に再びアドレス制御部１６２を通じてＩＣカードデバイス６８０に送信されて計算される。
【０１１３】
計算された結果はアドレス制御部１６２により選択されたＩＣカードＲＥＡＤバッファ１５６に送られ、その後に再びアドレス制御部１６２を通じてＩＣカードデバイス１８０に送信される。これが逆の場合も同様でデータ送信時はＩＣカードＷＲＩＴＥバッファ１５４が用いられ、データ受信時はＩＣカードＷＲＩＴＥバッファ１５６が用いられることとなる。
【０１１４】
フラッシュメモリデバイス（１３０，６３０）間の通信では共通してフラッシュＷＲＩＴＥバッファ１５０が用いられ、データ転送サイズが大きい場合には、図５と同様にフラッシュＷＲＩＴＥバッファ１５０とフラッシュＲＥＡＤバッファ１５２を交互に使うことによりデータ転送効率を向上させる効果がある。
【０１１５】
端末２００からのデータ転送が生じた場合で、図６に示すようにフラッシュメモリデバイス（１３０、６３０）が複数ある場合、アドレスによりどちらのデバイスを用いるか定めてもよい。この場合、２つのデバイスは容量や記憶方式が異なっていてもよい。
【０１１６】
また、端末２００からは片方のフラッシュメモリデバイス（１３０、６３０）しかアクセスできない仕組みであってもよい。ここの２つのフラッシュメモリデバイス（１３０、６３０）は物理的には１つの装置でありながら、論理的に２つの装置として分かれるような構成であってもよい。
【０１１７】
同様に、ＩＣカードデバイス（１８０、６８０）も機能や性能が異なっていてもよく、また物理的には１つのデバイスでありながら論理チャネルのような仕組みを持つことによって論理的に２つのデバイスのように見せる仕組みであってもよい。
【０１１８】
端末２００からＩＣカードデバイス（１８０、６８０）にアクセスが発生した場合、どのインターフェースからアクセスされたかに応じてＩＣカードデバイス（１８０、６８０）のどちらを用いるか選択する仕組みであってもよいし、ＩＣカードデバイス（１８０、６８０）への命令を発効する前にどちらのＩＣカードデバイス（１８０、６８０）を用いるかを選択する仕組みであってもよい。
【０１１９】
２つのＩＣカードデバイス（１８０、６８０）が同じ機能を持つならば、処理を行っていない方のＩＣカードデバイスを選択するという方式であってもよい。
【０１２０】
いずれの場合もアドレス制御部１６２によりどちらのデバイスを用いるかを定めてもよい。例えば、記憶装置６００の初期化時にそれぞれのＩＣカードデバイス（１８０、６８０）が有しているアプリケーションのＩＤをコントローラデバイスに送信し、アドレス制御部（１６０、１６２、１６４）、またはアドレス制御管理部１９０がその情報に応じて端末２００からの送信されたアプリケーション選択のコマンドからどちらのデバイスを用いるかを判断してもよい。
【０１２１】
ただし、この情報はアプリケーション選択時のみしか得られないため、そのコマンドがどのアプリケーションに向けられたものなのかを判断するために、アドレス制御部１６０は論理チャネルと同等の機能を有しておくことが望ましい。
【０１２２】
また、図６に示すように、コントローラデバイス６２０に２つのフラッシュメモリデバイス（１３０、６３０）が接続されている場合に、読み出しと書き込みを行うデバイスを別にしてもよい。これにはフラッシュメモリデバイス１３０に格納したデータをフラッシュメモリデバイス６３０にコピーすることでデータのバックアップを行う操作や、フラッシュメモリデバイス１３０のデータのハッシュ値、またはＥＣＣコードをフラッシュメモリデバイス６３０に格納することでフラッシュメモリデバイス１３０上のデータの完全性を向上させることが可能になる。
【０１２３】
このような利用において、端末２００とのデータ転送経路およびバッファと、フラッシュメモリデバイス１３０上のデータを処理するために読み出すバッファが異なる方が処理効率は高くなり、また、その際のデータ格納先のバッファ選択のためにアドレス制御部１６４が必要になる。
【０１２４】
＜アドレス制御部の動作＞
次に、図７〜図９により、本発明の一実施の形態に係る記憶装置において、以上のような動作を実現するためのアドレス制御部（１６０、１６２，１６４）の動作について説明する。図７〜図９は本発明の一実施の形態に係る記憶装置のアドレス制御部の動作を示すフローチャートであり、図７はアドレス制御部１６０、図８はアドレス制御部１６２、図９はアドレス制御部１６４の基本動作を示している。
【０１２５】
この他に、アドレス制御部１６０ならば、格納アドレスの変換処理や高速転送のためのバッファ選択処理を行ってもよいし、アドレス制御部１６２またはアドレス制御部１６４ならば接続された（ＩＣカードデバイス１８０と６８０、フラッシュメモリデバイス１３０と６３０のような）２つのデバイス間でデータ通信を行う機能をサポートしてもよい。
【０１２６】
アドレス制御部１６０の基本動作としては、コントローラデバイス１２０内のＣＰＵ上で動作するプログラムなどがバッファに対してデータ転送を行いたい場合、そのプログラムはアドレス制御部１６０に対してアクセス要求を発生させる。
【０１２７】
そして、図７（ａ）に示すように、アドレス制御部１６０はアクセス要求元からのアクセス発生により（ステップ７１０）、転送処理がロック中かどうかを調べる（ステップ７１２）。
【０１２８】
ロック処理の判断の対象となるデータ転送路は、それぞれのアドレス制御部が制御するデータ転送路のみである。
【０１２９】
転送処理がロックされている場合、アドレス制御部１６０はロック状態であることを呼び出し元に通知する（ステップ７３２）。
【０１３０】
ただし、データ転送処理をキャンセルすることができない場合などはロックが解除されるまで待ち続けてもよい。ただし、この場合でも一定の時間ロックが解除されない場合はエラーを通知する仕組みであってもよい。
【０１３１】
ステップ７１２でロック中でない、またはロックが解除された場合には、アドレス制御部１６０は自身がバスを占有するために転送処理のロックを行う（ステップ７１４）。
【０１３２】
次に、アドレス制御部１６０は、その要求がフラッシュメモリアクセスかＩＣカードアクセスかを判断する（ステップ７１６）。
【０１３３】
この判断は要求元からの指示により判断してもよいし、データ転送インターフェースが複数あり、その違いにより判断できる場合には、インターフェースの違いを判断基準としてもよい。
【０１３４】
また、外部と信号線をつながっており、その信号線上のデータによって判断できる仕組みであってもよい。ＩＣカードアクセスの場合、ＩＣカードＷＲＩＴＥバッファ１５４にデータが存在するかどうかを調べる（ステップ７２０）。
【０１３５】
ＩＣカードＷＲＩＴＥバッファ１５４にデータが存在しないならば、転送先をＩＣカードＷＲＩＴＥバッファに設定し（ステップ７２４）、データをセットする（ステップ７２６）。データ転送完了後、アドレス制御部はロックを解除し、処理の終了を呼び出し元に通知する（ステップ７２８）。
【０１３６】
ステップ７２０においてＩＣカードＷＲＩＴＥバッファにデータがある場合、データセットエラーを呼び出し元に通知する（ステップ７３０）。ステップ７１６においてフラッシュメモリアクセスである場合、フラッシュＷＲＩＴＥバッファ１５０にデータがあるかどうかを調べる（ステップ７１８）。データが存在しない場合、転送先をフラッシュＷＲＩＴＥバッファ１５０にセットし（ステップ７２２）、ステップ７２６以降の操作を行う。
【０１３７】
フラッシュＷＲＩＴＥバッファ１５０にデータがある場合、データセットエラーを返す（ステップ７３０）。
【０１３８】
なお、以上の処理は基本動作であり、例えば、図５のフローチャートに示すような連続してデータ転送を行う場合などでは、フラッシュＷＲＩＴＥバッファ１５０にデータがある場合に、フラッシュＲＥＡＤバッファ１５２にデータを転送先にセットすることも可能である。
【０１３９】
次に、コントローラデバイス１２０内のＣＰＵ上で動作するプログラムなどがバッファからデータ転送を行いたい場合、そのプログラムはアドレス制御部１６０に対してアクセス要求を発生させる。
【０１４０】
そして、図７（ｂ）に示すように、アドレス制御部１６０はアクセス要求元からのアクセス発生により（ステップ７５０）、転送処理がロック中かどうかを調べる（ステップ７５２）。転送処理がロック中でないならば転送処理をロックし（ステップ７５４）、データを出力し（ステップ７５６）、転送処理ロックを解除して要求元に処理の完了を通知する（ステップ７５８）。
【０１４１】
ステップ７５２において転送処理がロック中であるならばロック状態であることを要求元に通知する（ステップ７６０）。
【０１４２】
また、アドレス制御部１６２の基本動作としては、図８（ｂ）に示すように、アドレス制御部１６２は要求元よりバッファからの転送要求が生じると（ステップ８５０）、それがフラッシュＷＲＩＴＥバッファ１５０からのデータ転送か、ＩＣカードＷＲＩＴＥバッファ１５４からのデータ転送なのかを判別する（ステップ８５２）。
【０１４３】
このときの判別は、要求元からの情報によって行われてもよい。データ転送元がＩＣカードＷＲＩＴＥバッファである場合、ＩＣカードＲＥＡＤバッファにデータがあるかどうかを確かめる（ステップ８５６）。
【０１４４】
これは出力データの出力タイミングをＩＣカードデバイス１８０が制御するため、出力バッファも確保しておく必要があるためである。ＩＣカードＲＥＡＤバッファが空いている状態ならば、アドレス制御部は転送処理をロックし（ステップ８６０）、そのデータ出力元がフラッシュＷＲＩＴＥバッファ１５０なのかＩＣカードＷＲＩＴＥバッファ１５４なのかを記憶しておき、データをＩＣカードデバイスに出力する。
【０１４５】
このとき、転送元のバッファがコマンドＡＰＤＵのみを格納するならば転送処理とＩＣカードＷＲＩＴＥバッファ１５０、ＩＣカードＲＥＡＤバッファ１５４をロックした状態で端末２００からのデータ転送を受け付ける仕組みであってもよい。
【０１４６】
ステップ８５６においてデータがある場合、バッファ転送エラーを呼び出し元に通知する（ステップ８６８）。
【０１４７】
ステップ８５２においてフラッシュＷＲＩＴＥバッファ１５０からの転送処理であった場合、フラッシュＲＥＡＤバッファにデータがあるかどうかを確かめる（ステップ８５４）。データがない場合、ステップ８５８以下を実行する。データがあるならば、バッファ転送エラーを呼び出し元に通知する（ステップ８６８）。
【０１４８】
また、図８（ａ）に示すように、ＩＣカードデバイスからのアクセスが発生した場合（ステップ８１０）、アドレス制御部１６２は処理８６２で記録した転送元バッファをチェックする。それがＩＣカードＷＲＩＴＥバッファ１５４であった場合、ＩＣカードＲＥＡＤバッファ１５６を選択し（ステップ８１６）、データを出力し（ステップ８１８）、転送処理のロックを解除する（ステップ８２０）。
【０１４９】
ステップ８１２においてステップ８６２で記憶していた転送元が、フラッシュＷＲＩＴＥバッファ１５０であった場合、転送先としてフラッシュＲＥＡＤバッファ１５２を選択し（ステップ８１４）、ステップ８１８以降を実行する。このときのステップ８１２、ステップ８１６、ステップ８１４までの手順は、出力するデータに依存しないため、ステップ８１０を行う前に実行してもよい。
【０１５０】
また、出力データがデータのみであったり、ＡＣＫのみである場合には、続くコマンドのために転送処理とＩＣカードＷＲＩＴＥバッファ１５０、ＩＣカードＲＥＡＤバッファ１５４を他の要求元からの処理を行わせないためにロック状態を維持しておいてもよい。
【０１５１】
また、アドレス制御部１６４の基本動作としては、図９（ａ）に示すように、アドレス制御部１６４は要求元よりフラッシュメモリデバイス１３０からの転送要求が生じると（ステップ９１０）、転送処理がロック中かどうかを判断する（ステップ９１２）。
【０１５２】
転送処理がロック中である場合、アドレス制御部１６４はロック状態であることを転送元に通知する（ステップ９３６）。転送処理がロックされていなければ、アドレス制御部１６４は転送処理をロックする（ステップ９１４）。
【０１５３】
次に、アドレス制御部１６４はそれが端末２００へのデータ転送であるかどうかを判断する（ステップ９１６）。この判断は要求元からの情報を元に行ってもよい。それが端末２００へのデータ転送である場合、フラッシュＲＥＡＤバッファ１５２にデータがあるかどうかを確かめる（ステップ９１８）。
【０１５４】
データがある場合はＩＣカードＷＲＩＴＥバッファ１５４およびＩＣカードＲＥＡＤバッファ１５６にデータがあるかどうかを確かめる（ステップ９２２）。どちらにもデータがある場合、アドレス制御部１６４は要求元にバッファエラーを通知する（ステップ９３０）。
【０１５５】
ステップ９２２においてＩＣカードＷＲＩＴＥバッファ１５４およびＩＣカードＲＥＡＤバッファ１５６にデータがないならば、転送先をＩＣカードＲＥＡＤバッファ１５６にセットする（ステップ９２８）。
【０１５６】
このとき通常とは異なる転送バッファが選択されているため、その旨を転送要求元に通知してもよいし、アドレス制御管理部１９０に通知してもよい。
【０１５７】
ステップ９１８においてフラッシュＲＥＡＤバッファ１５２にデータがない場合、転送先をフラッシュＲＥＡＤバッファ１５２にセットする（ステップ９２６）。ステップ９１６においてそれがＩＣカードデバイス１８０へのデータ転送でないならば、ＩＣカードＷＲＩＴＥバッファ１５４およびＩＣカードＲＥＡＤバッファ１５６にデータがあるかどうかを確かめる（ステップ９２０）。
【０１５８】
データがある場合、次にフラッシュＲＥＡＤバッファ１５２にデータがあるかどうかを確かめる（ステップ９２４）。両方にデータがある場合、アドレス制御部１６４は要求元にバッファエラーを通知する（ステップ９３０）。
【０１５９】
ステップ９２４においてフラッシュＲＥＡＤバッファ１５２にデータがないならば、転送先をフラッシュＲＥＡＤバッファ１５２にセットする（ステップ９２６）。
【０１６０】
このとき通常とは異なる転送バッファが選択されているため、その旨を転送要求元に通知してもよいし、アドレス制御管理部１９０に通知してもよい。
【０１６１】
ステップ９２０においてＩＣカードＷＲＩＴＥバッファ１５４およびＩＣカードＲＥＡＤバッファ１５６にデータがないならば、転送先をＩＣカードＲＥＡＤバッファ１５６にセットする（ステップ９２８）。
【０１６２】
ステップ９２６およびステップ９２８後にアドレス制御部１６４はデータ出力を行い（ステップ９３２）、転送処理ロックを解除して要求元に完了通知を行う（ステップ９３４）。
【０１６３】
次に、図９（ｂ）に示すように、バッファからのフラッシュメモリデバイスへの転送が発生した場合（ステップ９５０）、アドレス制御部１６４は転送処理がロック中かどうかを調べる（ステップ９５２）。
【０１６４】
転送処理がロック中でないならば転送処理をロックし（ステップ９５４）、データを出力し（ステップ９５６）、転送処理ロックを解除して要求元に処理の完了を通知する（ステップ９５８）。ステップ９５２において転送処理がロック中であるならばロック状態であることを要求元に通知する（ステップ９６０）。
【０１６５】
以上のアドレス制御部（１６０、１６２、１６４）のそれぞれの制御により、インターフェース１１０に接続された端末２００、フラッシュメモリデバイス１３０、ＩＣカードデバイス１８０と、各バッファ間のデータ転送が制御されることにより、処理効率を向上させることが可能である。
【０１６６】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【産業上の利用可能性】
【０１６７】
本発明は汎用的な処理機能と不揮発性記憶領域を持つ記憶装置に関し、特に、内部で複数のアクセスを処理するデバイスに適用可能である。
【図面の簡単な説明】
【０１６８】
【図１】本発明の一実施の形態に係る記憶装置の構成を示す構成図である。
【図２】本発明の一実施の形態に係る記憶装置のフラッシュメモリデバイスのデータの並列処理を示すフローチャートである。
【図３】本発明の一実施の形態に係る記憶装置の情報端末からのデータの並列転送処理を示すフローチャートである。
【図４】本発明の一実施の形態に係る記憶装置のＩＣカードデバイスへのデータ転送を示すフローチャートである。
【図５】本発明の一実施の形態に係る記憶装置の情報端末からのデータ転送を示すフローチャートである。
【図６】本発明の一実施の形態に係る記憶装置の異なる接続形態を説明するための説明図である。
【図７】本発明の一実施の形態に係る記憶装置のアドレス制御部の動作を示すフローチャートである。
【図８】本発明の一実施の形態に係る記憶装置のアドレス制御部の動作を示すフローチャートである。
【図９】本発明の一実施の形態に係る記憶装置のアドレス制御部の動作を示すフローチャートである。
【符号の説明】
【０１６９】
１００…記憶装置、２００…端末（情報端末）、１２０、６２０…コントローラデバイス、１１０、６１０…インターフェース、１３０、６３０…フラッシュメモリデバイス、１８０、６８０…ＩＣカードデバイス、１５０…フラッシュＷＲＩＴＥバッファ、１５２…フラッシュＲＥＡＤバッファ、１５４…ＩＣカードＷＲＩＴＥバッファ、１５６…ＩＣカードＲＥＡＤバッファ、１６０、１６２、１６４…アドレス制御部、１９０…アドレス制御管理部。
【図１】
2007310760.tif 000003
【図２】
2007310760.tif 000004
【図３】
2007310760.tif 000005
【図４】
2007310760.tif 000006
【図５】
2007310760.tif 000007
【図６】
2007310760.tif 000008
【図７】
2007310760.tif 000009
【図８】
2007310760.tif 000010
【図９】
2007310760.tif 000011