(57)【特許請求の範囲】
【請求項１】
ストレージ装置のための方法であって、
ホストシステムからのファイルを前記ストレージ装置で受信するステップと、
受信したファイルに、前記ストレージ装置によって操作を要求するコマンドが含まれるか否かを判断するステップと、
前記ストレージ装置によって操作を要求するコマンドが前記ファイルに含まれると判断したことを受けて、
前記ストレージ装置のコマンド解析モジュールにより、前記コマンドを解釈するステップと、
前記コマンド解析モジュールにより、操作に関する情報を前記コマンドから抽出するステップと、
前記ストレージ装置によって操作を実行した後で前記ホストシステムに送信すべき応答を含むように受信したファイルのコンテンツを修正し、その修正したファイルを前記ストレージ装置に書き込み、前記ホストシステムが前記修正したファイルを読み出す要求を前記ストレージ装置に対して発行したことに応じて、前記ファイルを前記ホストシステムに返すことによって、操作を実行した後に、前記コマンド解析モジュールにより、前記ホストシステムへ応答を送信するステップと、
前記ストレージ装置によって操作を要求するコマンドが前記ファイルに含まれないと判断したことを受けて、前記ファイルを前記ストレージ装置に書き込むステップと、
を含む方法。
【請求項２】
請求項１記載の方法において、
前記コマンドには複数の操作に関する情報が埋め込まれる方法。
【請求項３】
請求項１記載の方法において、
前記コマンド解析モジュールは、前記操作に関する情報を前記ストレージ装置のモジュールに提供する方法。
【請求項４】
請求項３記載の方法において、
前記モジュールは、マイクロコントローラである方法。
【請求項５】
請求項１記載の方法において、
前記コマンド解析モジュールは、ＸＭＬパーサである方法。
【請求項６】
請求項１記載の方法において、
前記ストレージ装置は、不揮発性メモリストレージ装置である方法。
【請求項７】
請求項１記載の方法において、
前記ファイルに、前記ストレージ装置によって操作を要求するコマンドが含まれるか否かを前記ストレージ装置のファームウェアコードにより判断する方法。
【請求項８】
請求項１記載の方法において、
前記コマンド解析モジュールは、パーシャルソフトウェア層を介して前記ホストシステムと連携する方法。
【請求項９】
請求項１記載の方法において、
前記ストレージ装置は、前記ホストシステムにリムーバブルストレージを提供するフラッシュメモリドライブまたはフラッシュメモリカードを備える方法。
【請求項１０】
ストレージ装置であって、
コマンド解析モジュールであって、
ホストシステムからファイルを受信し、
受信したファイルに、前記ストレージ装置によって操作を要求するコマンドが含まれるか否かを判断し、
前記ストレージ装置によって操作を要求するコマンドが前記ファイルに含まれると判断したことを受けて、
前記コマンドを解釈し、
操作に関する情報を前記コマンドから抽出し、
前記ストレージ装置によって操作を実行した後で前記ホストシステムに送信すべき応答を含むように受信したファイルのコンテンツを修正し、その修正したファイルを前記ストレージ装置に書き込み、前記ホストシステムが前記修正したファイルを読み出す要求を前記ストレージ装置に対して発行したことに応じて、前記ファイルを前記ホストシステムに返すことによって、操作を実行した後に前記ホストシステムへ応答を送信し、かつ
前記ストレージ装置によって操作を要求するコマンドが前記ファイルに含まれないと判断したことを受けて、前記ファイルを前記ストレージ装置に書き込むためのコマンド解析モジュールを備えるストレージ装置。
【請求項１１】
請求項１０記載のストレージ装置において、
前記コマンドには複数の操作に関する情報が埋め込まれるストレージ装置。
【請求項１２】
請求項１０記載のストレージ装置において、
前記コマンド解析モジュールは、前記操作に関する情報を前記ストレージ装置のモジュールに提供するストレージ装置。
【請求項１３】
請求項１２記載のストレージ装置において、
前記モジュールは、マイクロコントローラであるストレージ装置。
【請求項１４】
請求項１０記載のストレージ装置において、
前記コマンド解析モジュールは、ＸＭＬパーサであるストレージ装置。
【請求項１５】
請求項１０記載のストレージ装置において、
前記ストレージ装置は、不揮発性メモリストレージ装置であるストレージ装置。
【請求項１６】
請求項１０記載のストレージ装置において、
前記ファイルに、前記ストレージ装置によって操作を要求するコマンドが含まれるか否かを前記ストレージ装置のファームウェアコードにより判断するストレージ装置。
【請求項１７】
請求項１０記載のストレージ装置において、
前記コマンド解析モジュールは、パーシャルソフトウェア層を介して前記ホストシステムと連携するストレージ装置。
【請求項１８】
請求項１０記載のストレージ装置において、
前記ストレージ装置は、前記ホストシステムにリムーバブルストレージを提供するフラッシュメモリドライブまたはフラッシュメモリカードを備えるストレージ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリストレージ装置に関し、より具体的には不揮発性メモリストレージ装置との通信に関する。
【０００２】
関連出願の相互参照
本願は、その全体が本願明細書において参照により援用されている、２００７年６月２９日に出願された米国特許出願第１１／７７１，２０３号（特許文献１）と２００７年６月２９日に出願された米国特許出願第１１／７７１，１６５号（特許文献２）の利益を主張する。
【背景技術】
【０００３】
情報の蓄積にあたって、不揮発性メモリストレージ装置が一般的に利用されている。これらの装置は携帯電話機、デジタルカメラ、デスクトップコンピュータ、ラップトップコンピュータ、およびその他の類似のシステムで使われている（本願明細書では合同的かつ互換的に「ホストシステム」または「ホスト」と呼ぶ）。
各種のホストシステムプラットフォームではソフトウェア層（ソフトウェア開発キット（ＳＤＫ）層と呼ばれることもある）を使用し、不揮発性メモリスストレージデバイスドライバを介して不揮発性メモリストレージ装置と通信する。不揮発性メモリストレージ装置のさらなる機能にアクセスするため、ホストシステムにＳＤＫ層を追加することもあり、これにより、これらのＳＤＫ層なしでは利用できない不揮発性メモリストレージ装置のさらなる機能にアクセスすることができる。異なるホストシステム提供業者へのＳＤＫ移植は厄介であり、これを軽減することが望まれる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願第１１／７７１，２０３号
【特許文献２】米国特許出願第１１／７７１，１６５号
【発明の概要】
【０００５】
一実施形態において、ストレージ装置のための方法が提供される。この方法は、ストレージ装置のコマンド解析モジュールにより、ホストシステムからのコマンドを解釈することと、コマンド解析モジュールにより、操作に関する情報をコマンドから抽出することとを含む。
【０００６】
別の実施形態において、ストレージ装置のための方法が提供される。この方法は、ストレージ装置により、ホストシステムからプラットフォーム独立形式コマンドを受信することと、ストレージ装置のコマンド解析モジュールにより、コマンドを解釈することと、コマンド解析モジュールにより、操作に関する情報をコマンドから抽出することと、ストレージ装置によって操作が実行された後、コマンド解析モジュールにより、ホストシステムへ応答を送信することとを含む。
【０００７】
さらに別の実施形態において、ストレージ装置のための方法が提供される。この方法は、ストレージ装置により、ホストシステムからプラットフォーム独立形式コマンドを受信することと、ストレージ装置のファームウェアコードにより、コマンドにて操作指令の有無を検出することと、コマンド解析モジュールにより、操作に関する情報をコマンドから抽出することと、ストレージ装置によって操作が実行された後、コマンド解析モジュールにより、ホストシステムへ応答を送信することとを含む。
【０００８】
一実施形態において、ストレージ装置が提供される。このストレージ装置は、ホストシステムからのプラットフォーム独立形式コマンドを解釈し、かつ操作に関する情報をコマンドから抽出する、コマンド解析モジュールを含み、このコマンド解析モジュールはホストシステムと連携する。
【０００９】
別の実施形態において、ストレージ装置が提供される。このストレージ装置は、ホストシステムからプラットフォーム独立形式コマンドを受信し、コマンドを解釈し、操作に関する情報をコマンドから抽出し、かつストレージ装置によって操作が実行された後にホストシステムへ応答を送信する、コマンド解析モジュールを含む。
【００１０】
さらに別の実施形態において、ストレージ装置が提供される。このストレージ装置は、ホストシステムからプラットフォーム独立形式コマンドを受信し、ストレージ装置のファームウェアコードがコマンドにて操作指令の有無を検出した後に操作に関する情報をコマンドから抽出し、かつストレージ装置によって操作が実行された後にホストシステムへ応答を送信する、コマンド解析モジュールを含む。
【００１１】
この簡単な概要は、説明の本質を速やかに理解できるように提供されたものである。この後に続く好適な実施形態の詳細な説明を添付の図面と併せて参照することにより、より完全に説明を理解することができる。
【００１２】
これより種々の実施形態の図面を参照しながら前述した特徴とその他の特徴を説明する。図面において、同じ構成要素には同じ参照符号を付す。図に示された実施形態は、説明を制限することではなく図解することを目的とする。図面は以下の図を含む。
【図面の簡単な説明】
【００１３】
【図１Ａ】不揮発性メモリ装置へ機能的に結合するホストシステムのブロック図を示す。
【図１Ｂ】不揮発性メモリ装置用メモリコントローラのブロック図の一例を示す。
【図１Ｃ】不揮発性メモリ装置との通信に用いる典型的なソフトウェアアーキテクチャのブロック図を示す。
【図１Ｄ】一実施形態に従い、コマンド解析モジュールを備えるシステムのブロック図を示す。
【図２】一実施形態に従い、不揮発性メモリ装置と通信するプロセスの流れ図を示す。
【図３】一実施形態に従い、不揮発性メモリ装置と通信するプロセスおよびシステムの一例を示す。
【発明を実施するための形態】
【００１４】
種々の実施形態の理解を助けるため、計算システムと不揮発性メモリストレージ装置の一般的なアーキテクチャおよび動作を先に説明する。次に、一般的なアーキテクチャを参照しながら具合的なアーキテクチャおよび動作を説明する。
【００１５】
図１Ａは、システムバス１０５へ接続された中央処理装置（「ＣＰＵ」）（またはマイクロプロセッサ、またはプロセッサ）１０１を含む典型的なホストシステム１００のブロック図を示す。システムバス１０５へ結合されたランダムアクセスメインメモリ（「ＲＡＭ」）１０３は、メモリストレージへのアクセスをＣＰＵ１０１に提供する。ＣＰＵ１０１はプログラム命令を実行するときに処理ステップをＲＡＭ１０３に蓄積し、蓄積された処理ステップをＲＡＭ１０３から実行する。
ホストシステム１００は、ネットワークインターフェイス１０４経由でコンピュータネットワーク（図示せず）へ接続する。インターネットはこのようなネットワークの１つであり、ホストシステム１００はインターネットからアプリケーション、コード、文書等の電子情報をダウンロードできる。
起動命令シーケンスや基本入出力操作システム（ＢＩＯＳ）シーケンス等、一定の命令シーケンスを蓄積するため、読み出し専用メモリ（「ＲＯＭ」）１０２を設ける。
キーボード、キーパッド、ポインティングデバイス（「マウス」）、モニタ、モデム等の入出力（「Ｉ／Ｏ」）装置１０６も設ける。
【００１６】
ホストシステム１００と結合する不揮発性メモリストレージ装置１１１は、コントローラモジュール１０８（「メモリコントローラ」または「コントローラ」と呼ばれることもある）とソリッドステートメモリモジュール１０９〜１１０（メモリモジュール＃１およびメモリモジュール＃Ｎと図に示されている）とを含む。コントローラモジュール１０８はバスインターフェイス１０７を介して、あるいはシステムバス１０５を介して直接的に、あるいは他の何らかの周辺バス（図示せず）を介して、ホストプロセッサ１０１と連携する。
【００１７】
不揮発性メモリストレージ装置１１１は、一実施形態において、フラッシュメモリ装置（またはカード）であってもよい。コンパクトフラッシュ（ＣＦ）、マルチメディアカード（ＭＭＣ）、セキュアデジタル（ＳＤ）、ミニＳＤ、メモリスティック、スマートメディア、トランスフラッシュ等、現在様々なフラッシュメモリカードが数多く市販されている。これらのカードはいずれも規格化された仕様（例えば、その全体が本願明細書において参照により援用されているユニバーサルシリアルバス（ＵＳＢ）仕様に基づくインターフェイス）に基づく特有の機械的および／または電気的インターフェイス（あるいは無線インターフェイス等、タイプの異なる何らかのインターフェイス）を有するが、それぞれに内蔵されたフラッシュメモリはよく似ている。これらのカードはいずれも、本件出願人にあたるサンディスク  コーポレイションより入手できる。
サンディスク  コーポレイションはまた、そのＣｒｕｚｅｒという商標のもとで一連のフラッシュドライブを提供している。これはユニバーサルシリアルバス（ＵＳＢ）プラグを有する小型の手持ち型メモリシステムであって、ホストシステムとの接続にあたってこのプラグをホストのＵＳＢ差込口に差し込む。これらのメモリカードとフラッシュドライブはコントローラを内蔵し、このコントローラがホストシステムと連携して、ホストシステムに内蔵されたフラッシュメモリの動作を制御する。
【００１８】
このようなメモリカードとフラッシュドライブを使用するホストシステム（１００等）は数多くあり、様々である。例えば、パーソナルコンピュータ（ＰＣ）、ラップトップをはじめとするポータブルコンピュータ、携帯電話機、個人用携帯情報端末（ＰＤＡ）、デジタル静止画カメラ、デジタル動画カメラ、ポータブルオーディオプレイヤ等を挙げることができる。ホストは通常ならば１種類以上のメモリカードまたはフラッシュドライブに対応する差込口を内蔵するが、メモリカードを差し込むアダプタが必要なものもある。
【００１９】
図１Ｂは、コントローラモジュール１０８の内部アーキテクチャのブロック図を示す。コントローラモジュール１０８はマイクロコントローラ１１４を含み、マイクロコントローラは、インターフェイスロジック１１６を通じて他の様々なコンポーネントと連携する。メモリ１１５には、マイクロコントローラ１１４が不揮発性メモリストレージ装置１１１の動作を制御するためのファームウェアおよびソフトウェア命令が蓄積される。メモリ１１５は、揮発性の再プログラム可能なランダムアクセスメモリ（「ＲＡＭ」）か、再プログラム不可能な不揮発性メモリ（「ＲＯＭ」）か、一度だけプログラム可能なメモリか、再プログラム可能なフラッシュ形式の電気的に消去可能でプログラム可能な読み出し専用メモリ（「ＥＥＰＲＯＭ」）であってもよい。
ホストインターフェイス１１３はホストシステム１００と連携し、メモリインターフェイス１１２はメモリモジュール１０９〜１１０と連携する。
【００２０】
図１Ｃは、ストレージデバイスドライバ１２１とＳＤＫ層１１８とを用いて不揮発性メモリストレージ装置１１１と通信する従来型オペレーティングシステムの最上位ブロック図を示す。ソフトウェアアプリケーション１１７はホストシステム１００によって実行され、不揮発性メモリストレージ装置１１１に蓄積された情報を読み出すコマンドか、不揮発性メモリストレージ装置１１１で情報を書き込むコマンドか、他の何らかの機能を遂行するコマンドを送信する。これらの操作はファームウェア命令１１９を実行するマイクロコントローラ１１４によって遂行される。
ホストシステム１００には、不揮発性メモリストレージ装置１１１へのアクセスにあたってＳＤＫ層１１８が必要になることがある。使用するオペレーティングシステムはホストシステム１００によって異なるため、バージョンが異なるＳＤＫ層１１８が必要になる。これはストレージ装置の提供業者にとって厄介であり、不揮発性メモリストレージ装置１１１を使用するユーザにも支障をきたすことがある。
【００２１】
一実施形態において、不揮発性メモリストレージ装置１１１ＡへのアクセスにあたってＳＤＫ層１１８が不要か、パーシャルＳＤＫ層１２０（ＳＤＫ層１１８の薄バージョン）（「薄ＳＤＫ層」と呼ぶ）を使用する、簡略されたアーキテクチャが提供される。図１Ｄは、プラットフォームに依存しない形式で不揮発性メモリストレージ装置１１１Ａと通信する最上位アーキテクチャのブロック図を示す。不揮発性メモリストレージ装置１１１Ａは、不揮発性メモリストレージ装置１１１の全コンポーネントを含むほか、後述する、ホストシステム１００と連携するコマンド解析モジュール１２２を含む。
コマンド解析モジュール１２２は、ホストシステム１００からストレージドライバ１２１と薄ＳＤＫ層１２０とを通じて送信されるコマンドを解析する。これらのコマンドは汎用形式をとるため、ホストシステムごとに別々のＳＤＫ層１１８を用意する必要はない。
【００２２】
コマンド解析モジュール１２２は、一実施形態において、ＸＭＬパーサである。ＸＭＬは、その全体が本願明細書において参照により援用されているＷ３Ｃコンソーシアムによって定義される標準マークアップ言語（拡張マークアップ言語(Extensible Markup language)）の略である。ＸＭＬは普及しつつあるテキスト方式のマークアップ言語である。ＨＴＭＬ（ハイパーテキストマークアップ言語）と同様に、データはタグ（山括弧で括られた識別子＜．．．＞等）を用いて識別する。これらのタグはいずれも「マークアップ」と呼ばれている。しかし、ＨＴＭＬと違ってＸＭＬのタグはデータ表示のあり方を指定するのではなく、データを識別するものである。ＨＴＭＬのタグは「このデータを太字フォントで表示」（＜ｂ＞．．．＜／ｂ＞）と指定するが、ＸＭＬのタグは、プログラムにおけるフィールド名のような働きをする。ＸＭＬのタグはアプリケーションのタイプに応じてカスタマイズできる。この実施形態のコマンド解析モジュール１２２は、ホストシステム１００からＸＭＬタグ（コマンド）を受信し、解釈できる。
【００２３】
パーシャルＳＤＫ層１２０とコマンド解析モジュール１２２との間では、読み出し、書き込み、削除、ディレクトリ作成コマンド等、種々のファイルシステムコマンドに対応するＸＭＬタグが規定されている。ホストシステム１００によって送信されるＸＭＬタグは、ディレクトリ作成、データ書き込み、データ読み出し等、複数の操作の実行命令を含むことがある。操作の実行にあたって、コマンド解析モジュール１２２が操作に関する情報を抽出し、不揮発性メモリストレージ装置１１１Ａの適当なコンポーネント／モジュール（マイクロコントローラ１１４等）に通知する。
【００２４】
図２は、薄ＳＤＫ層１２０を使用するか、ＳＤＫ層１１８を使用せずに不揮発性メモリストレージ装置１１１Ａと通信するプロセスの流れ図を示す。このプロセスは、ホストシステム１００が不揮発性メモリストレージ装置１１１Ａへクエリコマンドを送信するステップＳ２００で始まる。ステップＳ２０２では、不揮発性メモリストレージ装置１１１Ａでサポートされた機能に関する情報が不揮発性メモリストレージ装置１１１Ａから送信される。
ステップＳ２０４では、ホストシステム１００がプラットフォーム独立形式のコマンドを送信する。プラットフォーム独立形式とは、コマンドの形式がホストシステム１００のオペレーティングシステム／環境に左右されないことを意味する。例えば、ＸＭＬ等がプラットフォーム独立形式にあたる。
コマンド解析モジュール１２２は、ステップＳ２０６でコマンド（またはタグ）を解析し、ホストシステム１００が要望する任意の操作について情報を抽出する。１つのタグに複数の操作の情報を入れることもできる。コマンド解析モジュール１２２は、操作を実行すべきモジュールに通知する。
ステップＳ２０８では操作が実行され、ホストシステム１００が応答を望む場合には、コマンド解析モジュール１２２がホストシステム１００に応答を送り返す。
【００２５】
以下、一実施形態に従いＸＭＬタグを使用する一例を紹介する。この例のホストシステムはディレクトリ作成コマンドを送信してもよい。以下に記された斜体のテキストは、この操作の実行に用いられるＸＭＬタグを示す。タグ「Ｐａｔｈ」にはディレクトリ名が入り、ホストがステータスを知りたい場合には、タグ「ＲｅｔＳｔａｔｕｓ」に操作の「リターンステータス」が蓄積される。以下、ディレクトリを作成するためのＸＭＬタグを示す。
＜ＦｉｌｅＳｙｓｔｅｍＯｐｅｒａｔｉｏｎ＞
＜ＯｐＴｙｐｅ＞ＣｒｅａｔｅＤｉｒｅｃｔｏｒｙ＜／ＯｐＴｙｐｅ＞
＜Ｐａｒａｍｅｔｅｒｓ＞
＜Ｐａｔｈ＞”０：＼＼ＭｙＤｉｒ＼＼ＭｙＭｕｓｉｃ”＜／Ｐａｔｈ＞
＜／Ｐａｒａｍｅｔｅｒｓ＞
＜ＲｅｔＳｔａｔｕｓ＞＜／ＲｅｔＳｔａｔｕｓ＞
＜／ＦｉｌｅＳｙｓｔｅｍＯｐｅｒａｔｉｏｎ＞
【００２６】
図３は、図２の処理ステップを使用する一例を示す。この例のホストシステム１００は携帯電話機である。例えば、ホストシステム１００は、ディレクトリを作成するためのＸＭＬタグ（例えば、パケット／ファイル「ｗｒｉｔｅ  ＳＮＤＫ．ＸＭＬ」）を用意する。このＸＭＬタグは、ファイルシステムオペレーションによって識別される。不揮発性メモリストレージ装置１１１Ａは、ＸＭＬタグで指定された操作をサポートしない場合には、その旨を伝える応答（またはステータス）「Ｉｎｔｅｒｆａｃｅ＿Ｎｏｔ＿Ｓｕｐｐｏｒｔｅｄ」を返すことができる。
ファームウェア１１９は、タグの書き込みに先立ちＸＭＬタグで操作指令の有無を判断する。これは、ファームウェア１１９がファイルシステム操作を識別するために使用可能な特別な識別子を使用することにより達成され得る。
コマンド解析モジュール１２２はＸＭＬパケットを傍受し、要求された操作を実行するため、適当なモジュールに通知する。操作が実行された後にはコマンド解析モジュール１２２がホストシステム１００へステータスＸＭＬパケットを送信する。
ホストシステム１００は、操作ステータスのチェックを望む場合にタグを読み返すことができる。例えば、図３では、「０：＼＼ｍｙＤｉｒ＼＼ＭｙＭｕｓｉｃ」作成の結果として「ＳＤ＿ＳＵＣＣＥＳＳ」が返っている。
一実施形態において、不揮発性メモリストレージ装置と通信しその機能にアクセスするにあたって、パーシャルＳＤＫ層が必要となる場合と、ＳＤＫ層が不要となる場合とがある。
【００２７】
前述した実施形態の説明では不揮発性メモリストレージ装置が使われているが、ハードディスクやテープドライブ、またはその他の種類のホストシステムとの連携にあたってメモリコントローラや状態マシン等のハードウェア／ソフトウェアを使用するストレージ装置等、いかなるタイプのストレージ装置であっても前述した実施形態を実装できることに留意するべきである。
現時点で好適な実施形態と考えられるものについて説明が記されているが、この説明が前述したものに限定されないことが理解できるはずである。反対に、本願の説明は様々な修正および等価構成を添付の特許請求の範囲の精神および範囲内に含めることを目的とする。
【図１Ａ】
0005416697.tif 000002
【図１Ｂ】
0005416697.tif 000003
【図１Ｃ】
0005416697.tif 000004
【図１Ｄ】
0005416697.tif 000005
【図２】
0005416697.tif 000006
【図３】
0005416697.tif 000007