(57)【要約】【課題】  デバイスドライバに対する修正をせずにメモリデバイスに追加機能を付与する。【解決手段】  所定のデータシーケンスを認識するための制御論理を強化することによりメモリデバイス内に強化された機能を提供する。該所定データシーケンスを通信するためには標準的な（レガシー）デバイス動作が使用され、それにより既存のデバイスドライバを強化されたデバイスとして使用することが可能となる。【選択図】      図１
2005122725.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置上で第１の動作に関連した受信データを受信する工程と、
前記受信データの中の所定のデータシーケンスが検出されない場合に前記第１の動作を実行する工程と、
前記受信データの中の前記所定のデータシーケンスが検出されると、前記第１の動作とは異なる所定の動作を実行する工程と、
を備えることを特徴とする記憶装置でのアクセス方法。
【請求項２】
前記受信データの中の前記所定のデータシーケンスが検出されると、前記所定の動作を実行することに加えて前記第１の動作を実行する工程をさらに備えることを特徴とする請求項１に記載の方法。
【請求項３】
前記受信データの中の前記所定のデータシーケンスが検出されると、前記第１の動作の代わりに前記所定の動作が実行されることを特徴とする請求項１に記載の方法。
【請求項４】
前記受信データがさらに前記所定のデータシーケンスに加えて第２のデータシーケンスを含み、前記所定の動作が前記第２のデータシーケンスにより指示されることを特徴とする請求項１に記載の方法。
【請求項５】
前記所定の動作を実行することにより結果データが生じることを特徴とする請求項１に記載の方法。
【請求項６】
前記記憶装置上の読み取り動作を受信する工程と、前記読み取り動作に応えて前記結果データを生じさせる工程とをさらに備えることを特徴とする請求項５に記載の方法。
【請求項７】
前記結果データを生じさせる工程が、メモリ構成要素内の所定のロケーションで前記記憶装置のメモリ構成要素に前記結果データを記憶することを含み、前記読み取り動作が前記所定のロケーションを示すアドレス情報を含むことを特徴とする請求項６に記載の方法。
【請求項８】
前記第１の動作が書き込み動作であり、前記第１の動作を実行することが前記記憶装置のメモリ構成要素に前記受信データを記憶することを含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記所定の動作を実行することにより、前記メモリ構成要素以外のデータ記憶装置に記憶される結果データが生じることを特徴とする請求項８に記載の方法。
【請求項１０】
前記所定の動作を実行することにより、前記メモリ構成要素に記憶される結果データが生じることを特徴とする請求項８に記載の方法。
【請求項１１】
前記受信データがアドレス部分とデータ部分とを備え、前記データ部分が前記所定のデータシーケンスを含むことを特徴とする請求項８に記載の方法。
【請求項１２】
前記データ部分が、前記所定の動作を識別するコマンド識別子をさらに備えることを特徴とする請求項１１に記載の方法。
【請求項１３】
前記受信データがアドレス部分とデータ部分とを備え、前記アドレス部分が所定のデータシーケンスを含むことを特徴とする請求項８に記載の方法。
【請求項１４】
前記データ部分が前記所定の動作を識別するコマンド識別子を備えることを特徴とする請求項１３に記載の方法。
【請求項１５】
メモリ構成要素と請求項１に記載の方法に従って動作するように構成された制御構成要素とを有する記憶装置。
【請求項１６】
前記制御構成要素がコンピューティング装置と通信するように構成されることを特徴とする請求項１５に記載の記憶装置。
【請求項１７】
書き込み動作に関連した第１のデータを受信する工程と、
前記第１のデータが所定のシーケンスを含む場合に、前記書き込み動作以外の第１の動作を少なくとも実行する工程と、
前記第１のデータが前記所定のシーケンスを含まない場合に、第１のデータの少なくともいくらかをメモリに記憶することを含む前記書き込み動作を実行する工程と、
を備えることを特徴とするデータ記憶装置を操作するための方法。
【請求項１８】
前記第１の動作を実行すると結果データが生成され、以後の読み取り動作に応えて、前記結果データが前記読み取り動作の応答として生成されることを特徴とする請求項１７に記載の方法。
【請求項１９】
前記メモリ以外のデータ記憶装置内に前記結果データを記憶する工程をさらに備えることを特徴とする請求項１８に記載の方法。
【請求項２０】
前記メモリに前記結果データを記憶する工程をさらに備えることを特徴とする請求項１８に記載の方法。
【請求項２１】
前記結果データがメモリ内の所定のロケーションから記憶され、以後の読み取り動作が前記所定のロケーションを示すアドレスを含むことを特徴とする請求項２０に記載の方法。
【請求項２２】
記憶装置に第１の書き込み動作を通信する工程であって、前記第１の書き込み動作がアドレスデータ及び書き込みデータを備える第１のデータと関連付けられており、前記書き込みデータが前記アドレスデータにより示されるメモリのメモリロケーションに書き込まれる工程と、
前記記憶装置に第２の書き込み動作を通信する工程であって、前記第２の書き込み動作が所定のデータシーケンスを備える第２のデータと関連付けられており、前記記憶装置は前記所定のデータシーケンスの検出に応えて書き込み動作以外の所定の動作を実行する工程と、
前記第２の書き込み動作に続く読み取り動作を通信する工程と、
を備え、
前記所定の動作が結果データを生じさせ、
前記記憶装置が読み取り動作に前記結果データで応答することを特徴とする記憶装置にアクセスするための方法。
【請求項２３】
前記第１の書き込み動作を通信する工程が、ファイルへの第１の書き込み動作を実行することに応えて実行され、前記第２の書き込み動作を通信する工程が前記ファイルへの第２の書き込み動作を実行することに応えて実行され、前記読み取り動作を通信する工程がファイル上で読み取り動作を実行することに応えて実行されることを特徴とする請求項２２に記載の方法。
【請求項２４】
前記ファイルに対する第２の書き込み動作を実行する工程と、前記ファイル上で読み取り動作を実行する工程とが前記記憶装置内で前記所定の動作を実行するためのＡＰＩ（アプリケーションプログラマインタフェース）呼び出しを行うことに応えて実行されることを特徴とする請求項２３に記載の方法。
【請求項２５】
前記ＡＰＩ呼び出しを行う工程と、前記ファイルに対する第２の書き込み動作を実行する工程と、前記ファイル上で読み取り動作を実行する工程とが、アプリケーションの１つまたは複数のプログラムコード部分を備えるプログラムコードにより実行されることを特徴とする請求項２４に記載の方法。
【請求項２６】
前記第１の書き込み動作を通信する工程と、第２の書き込み動作を通信する工程と、読み取り動作を通信する工程とがＯＳ（オペレーティングシステム）の１つまたは複数のプログラムコード部分を備えるプログラムコードによって実行されることを特徴とする請求項２５に記載の方法。
【請求項２７】
前記記憶装置が複数の所定の動作を実行するように構成されることを特徴とする請求項２２に記載の方法。
【請求項２８】
前記第２のデータが前記所定の動作を起こさせるコマンドデータシーケンスをさらに備えることを特徴とする請求項２７に記載の方法。
【請求項２９】
前記第２のデータがアドレスデータをさらに備え、前記所定のデータシーケンスが前記アドレスデータを構成することを特徴とする請求項２７に記載の方法。
【請求項３０】
前記結果データが前記メモリ以外のデータ記憶装置に記憶されることを特徴とする請求項２２に記載の方法。
【請求項３１】
前記結果データが前記メモリ内の所定のロケーションから記憶されることを特徴とする請求項２２に記載の方法。
【請求項３２】
第１の動作を実行するためにデータ記憶装置に指示を通信する工程であって、前記第１の動作が複数の第１のデバイス動作の１つである工程と、
前記データ記憶装置に第１のデータを通信する工程であって、前記第１のデータが前記第１の動作と関連付けられている工程と、
前記第１のデータに含まれるデータに基づいて少なくとも第２の動作を実行するかどうかを判断する工程であって、前記第２の動作は前記複数の第１のデバイス動作には含まれていない工程と、
を備えることを特徴とするデータ記憶装置にアクセスするための方法。
【請求項３３】
前記データ記憶装置が前記第１のデバイス動作に関連した対応するコマンドセットを有し、前記第２の動作が前記コマンドセットのあらゆるコマンドに関連せず、前記指示を通信する工程が前記コマンドセットからコマンドを通信する工程であることを特徴とする請求項３２に記載の方法。
【請求項３４】
前記データ記憶装置が単一の対応するコマンドセットだけを有することを特徴とする請求項３３に記載の方法。
【請求項３５】
前記第１のデータがデータの所定のシーケンスを含む場合に前記第１の動作の代わりに前記第２の動作を実行する工程をさらに備えることを特徴とする請求項３２に記載の方法。
【請求項３６】
前記第１のデータがデータの所定のシーケンスを含む場合に前記第１の動作を実行することに加えて前記第２の動作を実行する工程をさらに備えることを特徴とする請求項３２に記載の方法。
【請求項３７】
前記第１の動作が書き込み動作であり、前記第１のデータが前記書き込み動作によって書き込まれるデータであることを特徴とする請求項３２に記載の方法。
【請求項３８】
前記通信する工程が、前記データ記憶装置の１つまたは複数の信号線で信号をアサートする工程を含むことを特徴とする請求項３２に記載の方法。
【請求項３９】
前記通信する工程が、前記データ記憶装置の１つまたは複数のデータラインでデータを送信する工程を含むことを特徴とする請求項３２に記載の方法。
【請求項４０】
記憶装置で複数の第１の動作を提供する工程であって、それぞれの第１の動作には関連付けられたコマンドがあり、それによりコマンドセットが定義される工程と、
前記記憶装置で複数の第２の動作を提供する工程であって、前記コマンドセットが前記第２の動作と関連付けられるコマンドを有していない工程と、
前記第１の動作の１つと関連付けられるコマンドを記憶装置に通信する工程であって、前記コマンドに関連付けられたデータを通信することを含む工程と、
前記コマンドに関連付けられるデータ内で所定のデータシーケンスを検出する工程であって、それに応えて前記第２の動作の１つを実行する工程と、
前記コマンドに関連付けられたデータが所定のデータシーケンスを有していない場合に、前記コマンドと関連付けられる前記第１の動作の１つを実行する工程と、
を備える記憶装置にアクセスする方法。
【請求項４１】
前記第２の動作の１つを実行することにより結果データが生じることを特徴とする請求項４０に記載の方法。
【請求項４２】
前記コマンドに関連付けられる前記データが前記第２の動作の１つを示すデータを含むことを特徴とする請求項４０に記載の方法。
【請求項４３】
前記コマンドが書き込みコマンドであることを特徴とする請求項４２に記載の方法。
【請求項４４】
前記第１の動作の１つが前記コマンドと関連付けられ、前記方法が前記第２の動作の１つを実行することに加えて前記関連付けられた第１のコマンドを実行する工程をさらに備えることを特徴とする請求項４２に記載の方法。
【請求項４５】
以後のコマンドを前記記憶装置に通信する工程をさらに備え、前記以後のコマンドはそれと関連付けられるデータを有しており、前記データが前記第２の動作の１つを示すことを特徴とする請求項４０に記載の方法。
【請求項４６】
前記第２の動作を実行することで結果データが生じ、さらに前記方法が読み取り動作を起こさせる以後のコマンドを通信する工程と、前記以後のコマンドを検出し、それに応えて結果データを応答する工程とをさらに備えることを特徴とする請求項４０に記載の方法。
【請求項４７】
前記通信する工程が第１のコンピュータプログラムコードを実行することにより実行されることを特徴とする請求項４６に記載の方法。
【請求項４８】
前記第１のプログラムコードの実行が第２のプログラムコードを実行することに応えて行われることを特徴とする請求項４７に記載の方法。
【請求項４９】
前記第１のプログラムコードがオペレーティングシステムを構成する一部であり、前記第２のプログラムコードがアプリケーションプログラムを構成する一部であることを特徴とする請求項４８に記載の方法。
【請求項５０】
対応するコマンドセットを有するメモリ構成要素と、
前記メモリ構成要素にデータを書き込むため、及び前記メモリ構成要素からデータを読み取るためにメモリ構成要素に動作可能に結合される制御構成要素と、
前記制御構成要素に操作可能に結合され、ホストデバイスとの通信のために構成されるインタフェースとを備え、
前記制御構成要素は複数のデバイス動作及び複数の拡張動作を実行するように構成され、前記デバイス動作のそれぞれは前記コマンドセット内のコマンドと関連付けられており、
前記制御構成要素はホストデバイスから通信されるコマンドを検出するようにさらに構成され、通信されたコマンドと関連付けられるデバイス動作を実行でき、
前記制御構成要素はコマンドセットから第１のコマンドに関連した第１のデータ内のデータの所定のシーケンスを検出し、前記データの所定のシーケンスを検出することに応えて拡張動作の１つを実行するようにさらに構成されていることを特徴とする記憶装置。
【請求項５１】
前記拡張動作が前記コマンドセット内に関連付けられたコマンドを有さないことを特徴とする請求項５０に記載の記憶装置。
【請求項５２】
データ記憶装置をさらに備えた記憶装置であって、前記拡張動作の少なくとも１つがメモリ構成要素に記憶可能な結果データを生成することを特徴とする請求項５０に記載の記憶装置。
【請求項５３】
前記拡張動作の少なくとも１つにより結果データが生成され、前記制御構成要素が前記メモリ内の所定のロケーションから前記結果データを記憶するようにさらに構成されることを特徴とする請求項５０に記載の記憶装置。
【請求項５４】
前記第１のコマンドが書き込みコマンドであり、前記第１のデータがアドレス部分及びデータ部分を備えることを特徴とする請求項５０に記載の記憶装置。
【請求項５５】
前記データ部分が前記データの所定のシーケンス及び拡張コマンド指定子を備え、前記制御構成要素は前記拡張コマンド指定子に基づいて前記拡張動作の１つを実行するようにさらに構成されることを特徴とする請求項５４に記載の記憶装置。
【請求項５６】
前記アドレス部分が前記データの所定のシーケンスを備え、前記データ部分が拡張コマンド指定子を備え、前記制御構成要素が拡張コマンド指定子に基づいて前記拡張動作の１つを実行するようにさらに構成されることを特徴とする請求項５４に記載の記憶装置。
【請求項５７】
前記制御構成要素が、前記データの所定のシーケンスを検出することに応えて前記拡張動作を実行することに加えて、前記第１のコマンドに対応するデバイス動作を実行するようにさらに構成されることを特徴とする請求項５０に記載の記憶装置。
【請求項５８】
前記データの所定のシーケンスを検出することに応えて前記第１のコマンドに対応するデバイス動作を実行することの代わりに前記拡張動作が実行されることを特徴とする請求項５０に記載の記憶装置。
【請求項５９】
前記制御構成要素がコントローラ及び１台または複数台の処理装置を備え、前記１台または複数台の処理装置が前記拡張動作を実行するように構成され、前記コントローラがデータの所定のシーケンスを検出するための論理回路を備え、前記コントローラが前記データの所定のシーケンスを検出することに応えて拡張動作を実行するための１台または複数台の処理装置を操作するために動作可能に結合されることを特徴とする請求項５０に記載の記憶装置。
【請求項６０】
１つまたは複数のコマンドを前記記憶装置に通信するための第１のソフトウェアを備え、請求項５０に記載の前記記憶装置と通信するように構成されるホストデバイス。
【請求項６１】
ファイル入力動作及びファイル出力動作を実行するための第２のソフトウェアをさらに備え、前記第１のソフトウェアがファイル入力動作及びファイル出力動作に応えて前記記憶装置に１つまたは複数のコマンドを通信することを特徴とする請求項６０に記載のホストデバイス。
【請求項６２】
記憶装置にアクセスするための方法であって、前記記憶装置が複数の第１の動作及び複数の第２の動作を実行するように構成され、前記第１の動作のそれぞれが関連付けられたコマンドを有し、前記記憶装置がその関連付けられた第１の動作を実行することによりそれに通信されるコマンドの１つを応答するようにさらに構成されており、前記方法は、
前記記憶装置に通信される２つ以上のコマンドの所定のシーケンスを検出する工程と、
前記２つ以上のコマンドの所定のシーケンスが検出される場合に、前記第２の動作の１つを実行する工程と、
を備えることを特徴とする記憶装置へのアクセス方法。
【請求項６３】
前記実行される第２の動作が、前記所定のシーケンスを備えるコマンドのシーケンスに基づくことを特徴とする請求項６２に記載の方法。
【請求項６４】
２つ以上のコマンドの第２の所定のシーケンスが検出された場合、前記第２の動作の別の１つを実行することを特徴とする請求項６２に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概してメモリアクセスに関し、特に機能が強化されたデータ記憶装置へのアクセスに関する。
【背景技術】
【０００２】
メモリデバイス（例えば、ディスクドライブ、フラッシュカード等）においては、拡張コマンドセットにより、強化された機能及び特殊化された特性を提供することがますます必要となってきている。例えば、メモリデバイスのためのアプリケーションの多くは暗号化サービス、拡張アクセス／所有権機能、著作権情報、賃貸パラメータおよびその他の時間ベースパラメータ等を必要とする。メモリデバイスという用語はデータを記憶するための幅広い範囲のデバイスを包含するように意図されており、以下の説明を通してデータ記憶装置と同義的に使用されるものである。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
図６は、メモリデバイスのための従来のシステムアーキテクチャの態様を示している。メモリデバイス６０２は通常適切なインタフェース６０４（例えば、バス、スロット等）を介してホストデバイス６１２に接続されている。該インタフェース６０４はメモリデバイスに設けられているピンアウトまたはコネクタ、及びメモリデバイスが接続されるホストデバイスに設けられるバスまたはスロットの両方を表している。従来は、メモリデバイスはメモリ構成要素６２２、及び該メモリ構成要素にインタフェースを提供する制御論理６２４を含む。メモリ構成要素は、メモリデバイスの種類に応じて、半導体メモリ、磁気メモリ及びまたは光メモリである場合がある。例えば、フラッシュメモリデバイスは通常メモリ構成要素として半導体メモリを備える。ディスク記憶装置は、通常メモリ構成要素として磁気媒体を利用する。光記憶技術は、メモリ構成要素が例えば光磁気媒体を備え、ディスク記憶装置に関しては相対的に新しい技術である。
【０００４】
通常、ホスト６１２側のソフトウェアは、オペレーティングシステム（ＯＳ）６０８の上部で実行する１つまたは複数のホストアプリケーション６００を備える。通常、ホストアプリケーションはＯＳの中に多様なシステムコールを行う。いくつかのシステムコールにはメモリデバイス６０２へアクセスすることが含まれている。アプリケーションプログラマインタフェース（ＡＰＩ）６６４を介してさらに高いレベルの機能がアプリケーションに与えられる。
【０００５】
ＯＳ６０８は、メモリデバイス６０２との間の入出力のためのデバイスドライバの集合（デバイスドライバライブラリ）６０６を含む。デバイスドライバは特定のタスクを実行するためにデバイスに送信されるデータのセットアップを行う。これには、デバイスのコマンドセットから選択されるコマンドを、デバイス内のコマンドレジスタに書き込むことが含まれている。デバイスドライバ関数呼び出し６６２は、ＯＳとデバイスドライバの間のソフトウェアインタフェースである。デバイスにアクセスするＯＳシステムコールはデバイスドライバを介して実行される。デバイスによる多くの入出力動作はメモリデバイスの間で共通であるが（例えば、読み取り、書き込み）、特定種類のタイプのデバイス（例えば、フラッシュメモリ、ＲＡＭ、静的ＲＡＭ）は他のタイプのデバイスと異なって動作し、そのため、デバイスの各タイプにそれぞれ異なったデバイスドライバが必要とされる場合がある。さらに、ある種類の記憶装置（例えば、ディスクドライブ記憶装置）は他の種類の装置（例えば、フラッシュメモリ）にはないさまざまな種類の動作（例えばシーク）を有している場合がある。このようにして、デバイスドライバは特に特定のデバイスとの動作を行うためにそれぞれのデバイスに書き込まれる。
【０００６】
インテリジェントメモリデバイスを強化するために新規機能を追加することは、通常、新しい機能にアクセスするための新しいコマンドを含むようにデバイスの既存のコマンドセットを拡張することを意味する。これには、通常、システムアーキテクチャにおける複数の構成要素にまたがった拡張機能の追加が必要となる。メモリデバイス６０２内でのデータ暗号化などの新しい機能の追加について考えてみる。第１に、デバイスのコマンドセットは、新しい機能のために１つまたは複数の追加のコマンドを含まなくてはならない。これは、新しい機能を実行するための処理機能６３２または他の適切な論理を提供することを含んでいる。拡張制御論理６３４は、通常、新しい機能にアクセスを提供するためにメモリデバイス内で必要とされる。例えば、拡張制御論理はデバイスのコマンドセットの拡張を実行することができ、新しい機能へのアクセスを可能にする。拡張コマンドセットにアクセスするためには、新しいもしくは修正されたデバイスドライバコード６３３が書き込まれなければならない。新しいデバイスドライバとは既存のドライバを修正すること、あるいは機能がデバイスの中の全く新しい機能である場合には完全に新しいドライバを追加することさえ含むこともある。同様に、デバイスドライバ関数呼び出し６６２は、修正されたドライバに対処するためのＯＳ内における対応する修正に合わせて修正されなくてはならない場合がある。
【０００７】
ＡＰＩ６６４は、新しい機能にアクセスするために拡張されなくてはならない場合がある。機能がデバイスにとってまったく新しい場合には、この拡張には新規ＡＰＩ呼び出しが含まれる。そして言うまでもなくメモリデバイスの追加機能を使用するために新しいアプリケーションコード６３１がホストアプリケーション６００に含まれなければならない。
【０００８】
ホストデバイス６１２は多岐に渡る処理ハードウェアとソフトウェアのプラットホームに構築される。あるハードウェアプラットホーム上で実行しているＯＳのためのデバイスドライバは、別のハードウェアプラットホームで実行中の同じＯＳのためのデバイスドライバとは異なることが多い。逆に言えば、指定されたハードウェアプラットホームで実行中のＯＳのために書き込まれるデバイスドライバは同じハードウェアプラットホームを実行する別のＯＳのために書き込まれたデバイスドライバとは異なることが多い。実際には、別のスロットハードウェアが使用される場合（例えばＰｏｃｋｅｔＰＣ）、同じソフトウェア／ハードウェアプラットホームで異なるデバイスドライバが必要とされる場合がある。
【０００９】
デバイスドライバはプラットホームに特有であり、ときおりプラットホーム内ではインストールされる構成要素に基づいて別のデバイスドライバが必要とされる。したがって、デバイスドライバは修正されなければならず、多くの例においてＯＳを拡張する必要がある。デバイスドライバの開発や書き直し及びテストが絶え間なく行われると、新しいドライバのために投資される時間と費用との理由から、わずかな数のプラットホームのみをサポートするという経営上の決定がなされることとなってしまう。
【００１０】
ソフトウェア開発技術はメモリデバイスへの拡張コマンドセットの追加を容易にするために存在するが、デバイスドライバソースコード及び構築環境を得るのは困難であり、複数の環境に対してそれを行わなければならないということが問題を複雑化している。携帯型デバイスドライバに書き込むための解決策を提供するベンダがある。しかしながら、健全な解決策の可用性、及びこれらの解決策の幅広い採用は、特にメモリカード空間においてまだ実現されていない。さらに、デバイスドライバはＯＳレベルで動作するため、オペレーティング環境の重要な箇所へのアクセスを行う。したがって、デバイスドライバが適切に書き込まれていない場合には全体的なシステムが容易に「破壊される」。多くのベンダに依存しすぎて市場に技術を導入できないため、消費者に対する新しいメモリデバイス技術の送達には遅延があり、新規技術を特定のプラットホームに移行することができない場合もある。
【課題を解決するための手段】
【００１１】
本発明は、通常のメモリが書き込まれるのと同様の方法で、拡張コマンドへのアクセスを可能にする「メモリロケーションウィンドウ」を使用するためのメモリデバイス内の機構を提供する。
【発明の効果】
【００１２】
本発明によれば、デバイスドライバに対する修正を必要とせずに追加の機能をメモリデバイスに追加できるようにする。その結果、標準的なデバイスドライバを使用することが可能となる。
【００１３】
本発明の態様、優位点及び新規特徴は添付図面とともに提示される以下の本発明の説明から明らかになるであろう。
【発明を実施するための最良の形態】
【００１４】
図１は、本発明の説明するための実施形態の高レベルの一般化されたブロック図である。図１はメモリデバイス１００及びホストデバイス１５０を示している。該ホストデバイスはメモリに接続できる任意のデータ処理構成要素であればよい。典型的なホストデバイスとしてはパーソナルコンピュータ（ＰＣ）、ラップトップコンピュータ、パーソナルデータアシスタント（ＰＤＡ）、携帯電話（セルホン）等があげられる。メモリデバイスは、機能を追加することで強化が可能であれば任意のインテリジェントデータ記憶装置でよい。例えば、セキュアデバイス（ＳＤ）メモリカードは、公開鍵／秘密鍵暗号化技法などの追加のセキュリティ機能によって強化することが可能である。例えば、コンパクトフラッシュ（ＣＦ）及び他のフラッシュメモリ、マルチメディアカード（ＭＭＣ）、マイクロドライブ技術記憶装置等の他のメモリカードフォーマットも同様に強化が可能である。本発明は、例えばハードディスクドライブ装置、リムーバブル／携帯ハードディスクドライブなどの大容量記憶装置にも適用可能である。当該分野の技術者であれば本発明に従って適用できる多岐に渡るデータ記憶装置技術を認識することができる。
【００１５】
入出力インタフェース１３０により、ホストデバイス１５０とメモリデバイス（データ記憶装置）１００の間が物理的に接続される。インタフェース１３０はメモリデバイス内のピンアウトまたはコネクタと、メモリデバイスが接続されるホストデバイス内に設けられるバスまたはスロットとの両方を表す。該インタフェースはホストデバイスとメモリデバイスの間のデータ通信のためにデータ経路を提供する。ＰＣアーキテクチャでは、入出力インタフェースは拡張カード用のスロット、あるいはユニバーサルシリアルバス（ＵＳＢ）、ファイアワイヤ接続等のなんらかの他の適切なインタフェースであってよい。リムーバブルメモリカードの場合では、入出力インタフェースは、メモリデバイスが差し込まれるスロットである。図２Ａは、典型的なホストデバイスの例として２台のパーソナルデータアシスタント（ＰＤＡ）２５０ａ、２５０ｂを示している。ＰＤＡはメモリカード２００ａ、２００ｂにさまざまな形式のファクタで対処するためにさまざまなスロットハードウェアを利用する。図２Ｂは、ラップトップコンピュータ２５０ｃ及び携帯（セルラー）電話２５０ｄを含むホストデバイスのその他の例を示している。図中に示されているメモリカード２００ｃは仮想プライベートネットワーク（ＶＰＮ）のクライアント機能をホストデバイスに与え、適切なネットワーク２１２での無線基地局２０４を用いた無線リンクによるＶＰＮサーバ２０２への接続を可能にする。
【００１６】
図１に戻ると、ホストデバイス１５０は、適切なデータ処理構成要素（例えばＣＰＵ、マイクロコントローラ等）などの典型的なハードウェア（図示せず）、メモリ（例えば、ＲＯＭ、ＲＡＭ）及び適切なサポート論理回路を備える。該ホストデバイスは、下部のハードウェアで実行され、サービス及び機能を提供する１つまたは複数のアプリケーション１５２ａ、１５２ｂをさらに備える。ＡＰＩトランスレータ１５４は図に示されている本発明の特定の実施形態に従って設けられるソフトウェア構成要素であり、その説明は後述する。
【００１７】
ホストアプリケーション１５２ａ、１５２ｂは、通常適切なオペレーティングシステム（ＯＳ）１５８の上部で実行される。該ＯＳはデバイスドライバ１５６を含む。デバイスドライバは、より高いレベルのホストアプリケーションのために、入出力インタフェース１３０を介してデバイスと通信あるいは相互交信を行い、該デバイスに要求される特定のタスクを実行する。ＡＰＩトランスレータ層１５４は記憶装置によって与えられる強化された機能にアクセスするためのＡＰＩを提供する。ＡＰＩ呼び出しが従来の下部のＯＳ層によって与えられる関数呼び出しに代わるのではなく、ホストアプリケーションの開発に使用可能である関数呼び出しの集合に単に追加されるということがわかる。
【００１８】
本発明における「デバイス」は、前述されたインテリジェントデータ記憶装置の多様な形式を示しており、図１ではメモリデバイス（データ記憶装置）１００として表されている。本発明によれば、図１に図示されている実施形態のメモリデバイスの一例はメモリ１０２、コントローラ１０４及び１つまたは複数のアプリケーションプラットホーム１０６ａ、１０６ｂを備える。該メモリ１０２はデバイスに適切な任意の種類のメモリである。例えば、メモリはフラッシュメモリである。該メモリは、ディスクドライブまたはマイクロドライブの場合でのように、磁気媒体である場合がある。
【００１９】
コントローラ１０４は３つの機能構成要素、つまり制御論理１１６、検出機構１１２、及びハンドリング機構（ＡＰＩトランスレータ）１１４を備える。当該分野の技術者には、本発明の所定の実施例においては、これらの構成要素が図１に図示されるように構成され、あるいは構成されない場合があることを容易に理解できよう。コントローラ１０４の構成要素は、本発明の多様な様態を具現化するメモリデバイスの動作を説明する目的で例示されたものである。制御論理１１６は、メモリ１０２へのアクセスを提供するために通常従来のメモリデバイスにある論理回路を表している。
【００２０】
コントローラ１０４は検出機構１１２を備える。本発明によれば、検出機構はホストデバイス１５０により記憶装置１００に送信されるデータを監視し、特定のデータパターンを検出する。本発明の特定の実施形態では、メモリデバイスに送信されるコマンドを監視し、特に書き込みデータがデータの特定のパターンを含んだ書き込みコマンドに応答する論理回路を検出機構が備えている。検出機構には、データパターンを解析し、特定のデータパターンを探すステートマシンを用いてよい。
【００２１】
コントローラ１０４は、さらにハンドリング機構１１４を備える。本発明によれば、ハンドリング機構は検出機構１１２に応答して１つまたは複数のアプリケーションプラットホーム１０６ａ、１０６ｂにより与えられる関数にアクセスする。
【００２２】
メモリデバイスの強化された機能は１つまたは複数のアプリケーションプラットホーム１０６ａ、１０６ｂによって提供される。これらの要素は、強化されたメモリデバイスの追加の機能を実行する論理回路を表している。例えば、ある実施例では、スマートチップカードがアプリケーションプラットホームを構成し、データ暗号化サービスを提供している。第２のスマートカードチップによってＶＰＮクライアントサービスを提供するための別のアプリケーションプラットホームを構成することが可能である。あるいは、図に示されているアプリケーションプラットホーム１０６ａ、１０６ｂは、単一の処理装置で実行するさまざまなプロセスを表している。
【００２３】
図３を参照すると、ホストアプリケーションとデバイスとの間の入出力動作のための基本的なデータアクセスモデルには単純な読み書き動作が含まれている。ここでは、ホストアプリケーション１５２ａ、１５２ｂはデータが書き込まれるメモリロケーション、あるいはデータが読み取られるメモリロケーションを指定する。この種の低いレベルの入出力をサポートするＯＳは、例えば、＿ｗｒｉｔｅ（）、＿ｒｅａｄ（）などのデバイスドライバに対する対応する呼び出しを実行する。実際の作業では、デバイスドライバは次にデバイスと通信し、指定された入出力動作をセットアップし、その動作を実行する。
【００２４】
このようにして、例えば典型的な入出力シーケンス３０２では、メモリロケーションに対する従来の書き込み動作が図示されている。これは、なんらかのＤＡＴＡ（データ）を伴うメモリロケーションを示すアドレス、ＡＤＤＲを含んでいる。ホストアプリケーション１５２ａ、１５２ｂからのこの種の低いレベルの書き込み動作をサポートするＯＳはデバイスドライバライブラリ内の対応するデータ書き込みルーチンを単に呼び出し、アドレスＡＤＤＲとＤＡＴＡを指定する。そうして、該ＡＤＤＲとＤＡＴＡがデバイスに「送信」される。アドレスとデータとのデバイスへの通信の詳細はデバイスごとにさまざまである。例えば、メモリデバイスでは、ＡＤＤＲはアドレスバス上へストローブされ、次にデータバスの上にＤＡＴＡがストローブされる。
【００２５】
メモリデバイスでは、コントローラ１０４内の検出機構１１２は、所定のデータシーケンスを探す。説明上の目的から、入出力シーケンス３０２の書き込み動作のＤＡＴＡが所定のデータシーケンスを含まず、そのため、コントローラがＡＤＤＲによって示されるメモリ構成要素１０２のロケーションからＤＡＴＡの書き込み動作を単に実行すると仮定する。太活字の矢印はメモリ構成要素へのデータの流れを示している。コントローラは、通常、デバイスドライバとのなんらかの形のソフトウェア及び／またはハードウェアハンドシェーキングを提供し、書き込み動作の成功または書き込み試行の失敗を示す。
【００２６】
ここでは、シーケンス３０２の中の次の動作が読み取り動作であると仮定する。通常、読み取り動作においては、（例えば過去の入出力動作のアドレスによって）明示的であるか、あるいは暗黙であるかに関わらずアドレスＡＤＤＲの指定が行われる。ＯＳは、デバイスドライバ内で対応するデータ読み取りルーチンを呼び出し、デバイスで読み取り動作を行う。図３は、読み取り動作によりメモリ１０２内の指定されたロケーションにアクセスし、そのメモリロケーションで始まるデータを返送することを示している。なお、読み取り動作は、読み出されるデータ単位（バイト、ワード等）の数を指定するためのパラメータが含まれている。このパラメータはホストアプリケーション１５２ａ、１５２ｂによって、あるいはＯＳによって指定できる。例えば、ブロック入出力に対し、ＯＳはデータの固定サイズのブロックを指定する。
【００２７】
次に、入出力シーケンス３０４を考える。メモリロケーションに対する従来の書き込み動作が示されている。つまり、アドレス成分ＡＤＤＲとデータ成分Ｆ−ＤＡＴＡが入出力シーケンス３０２におけるように与えられる。しかしながら、本発明の態様によれば、データ（Ｆ−ＤＡＴＡ）はここでは「フラグ」と呼ばれるデータの所定のシーケンスを含んでいる。Ｆ−ＤＡＴＡシーケンスは、フラグ成分に加えて拡張コマンド構成要素を含んでおり、したがって
Ｆ−ＤＡＴＡ＝＜フラグ＞＜拡張コマンド＞
となる。ＯＳは、アドレスパラメータＡＤＤＲ及びデータＦ−ＤＡＴＡを使用して、再びデバイスドライバのデータ書き込みルーチンを呼び出す。次に、デバイスドライバはＦ−ＤＡＴＡをデバイスに送信する。シーケンス３０４における書き込み動作のＯＳ及びデバイスドライバによる処理がシーケンス３０２における書き込み動作と全く同一であることに留意する必要がある。
【００２８】
データがデバイスによって受信されると、コントローラ１０４内の検出機構１１２はフラグシーケンスを構成するデータの所定のシーケンスを検出する。次にＦ−ＤＡＴＡの拡張コマンド構成要素がハンドリング機構１１４によって処理される。このようにして、本発明のこの実施形態では、フラグシーケンスが検出されると、データ記憶装置はＦ−ＤＡＴＡの指定されたメモリロケーションへの書き込みを実行しない。代わりに、Ｆ−ＤＡＴＡは遮られ、ハンドリング機構（例えばＡＰＩトランスレータ１１４）が、Ｆ−ＤＡＴＡの拡張コマンド部分により指定される所定の関数を実行するために呼び出される。ハンドリング機構１１４の論理回路は拡張コマンド構成要素を解析し、拡張コマンドにより示される所定の関数を実行するためにアプリケーションプラットホーム１０６にアクセスできる。ホストデバイスからＦ−ＤＡＴＡの特殊な処理を隠すために、コントローラ１０４は書き込み動作成功を示す応答を作成し、このようにしてホスト内のデバイスドライバに、書き込み動作が無事に実行された旨を知らせることができる。
【００２９】
フラグシーケンスは強化された機能にアクセスするためのトリガ機構であり、データはアドレス指定されたメモリロケーションに実際には絶対に書き込まれないため、指定されるアドレスＡＤＤＲは原則的には任意のアドレスであることに留意する必要がある。しかしながら、無効アドレスを不注意に指定した結果、ＯＳによってトリガされる可能性のあるエラー状態を回避するためには、有効なアドレスを使用する方がより便利である。例えば、指定されるＯＳは特定のアドレス範囲を認識するだけである場合があるため、書き込み動作は、たとえそれがデータ記憶装置で無視されてもその範囲内のアドレスを少なくとも指定する必要がある。別のＯＳにはこのような制限がない場合があるため、任意のアドレスを使用できる。
【００３０】
前記説明から、本発明によれば、メモリデバイスの拡張機能を表す拡張コマンドがＯＳまたはデバイスドライバのどちらも修正する必要なくアクセスできることがわかる。デバイスのコマンドセットから取られる既存のコマンド（例えば書き込みコマンドなど）とともにメモリデバイスに特殊データを送信することによって、（１）拡張コマンドはデバイスの既存のコマンドセットに追加することなくアクセスすることができ、（２）したがって、最初にデバイスドライバが書き込まれたコマンドセットに対する変更がないために、既存のデバイスドライバを使用することができる。
【００３１】
後述の説明では、「メモリロケーションウィンドウ」の概念は、フラグシーケンスが検出されるときのメモリデバイスの動作状態と関連付している。「ウィンドウ」内の「メモリロケーション」からのデータにアクセスすることを含め、デバイスの拡張コマンドに「ウィンドウ」を提供するものとしてメモリデバイスを考えることができる。したがってタームメモリロケーションウィンドウとなる。
【００３２】
フラグシーケンスはデータの任意のシーケンスでよい。フラグシーケンスは、ビット、またはバイト等のシーケンスでありえる。フラグシーケンスは連続的であっても連続的でなくてもよい（例えば、フラグはデータストリングの一つおきのビットのシーケンスでありえる）。それぞれが強化された関数にアクセスするためのトリガ機構としての役割を果たすものとして、２つまたは３つ以上の異なるフラグシーケンスが定義される。フラグシーケンスは、ホストアプリケーションコードの通常の実行中のメモリロケーションウィンドウの誤った作動から守るのに十分なほど長いことが望まれる。例えば、長さ８バイトであるフラグシーケンスでは、メモリロケーションウィンドウを誤ってトリガする確率は２６４分の１となる。
【００３３】
本発明のこの実施形態によれば、フラグシーケンスはデータの所定のシーケンスである。つまり、シーケンスの長さ及びバイトシーケンスはホストアプリケーションとの使用の前のある時点であらかじめ決められる。製造者はフラグシーケンスを「ハードコード化する」ことができる。あるいは、適切なインタフェースを用いてデバイスの製造に続くある時点でデバイスの中にフラグシーケンスをプログラミングすることも可能である。例えば、製造メーカからメモリデバイスを購入するベンダは独自の所定のデータシーケンスをデバイスの中にプログラミングするためのソフトウェアを含むソフトウェア開発キットを備えていてもよい。
Ｆ−ＤＡＴＡの拡張コマンド構成要素を使用する代わりに、異なるフラグシーケンスを使用して、メモリデバイスのさまざまな関数をトリガすることができる。実際、Ｆ−ＤＡＴＡ文字列を（１）強化された機能へのアクセスを活性化し、（２）アクセスされる特定の関数を指定する単一の文字列として見なしてよい。
【００３４】
図３に図示される入出力シーケンス３０４についての説明を続行すると、拡張コマンドの実行を行うと、該コマンドによっては、ホストアプリケーション１５２ａ、１５２ｂに返されるべき結果が生じることがある。シーケンス３０４で分かるように、読み取り動作は結果を検索するために書き込み動作に続いて実行できる。
【００３５】
ある実施例によれば、常にメモリロケーションウィンドウをトリガする書き込み動作の直後に読み取り動作が行われるように検出機構１１２を作成することができる。検出機構によって、読み取り動作をハンドリング機構１１４に渡すことが可能である。結果データは、例えばレジスタの集合等などのアプリケーションプラットホーム１０６の一部である記憶装置に記憶できる。ハンドリング機構は、読み取り動作がメモリ構成要素１０２の従来の読み取り動作であるかのようにデータにアクセスし、データをデバイスドライバに通信できる。メモリデバイスの内部動作はデバイスドライバには完全に隠されている。
【００３６】
他の実施例によれば、アプリケーションプラットホームはメモリ構成要素１０２自体の所定領域に結果データを記憶できる。これによりコントローラ１０４内の検出機構１１２が簡略化されることになる。検出機構は読み取り動作を処理するための論理回路を含む必要はなく、他の動作のように制御論理１１６に読み取り動作を処理させることが可能である。したがって結果を検索するために、ホストソフトウェアは読み取り動作を実行し、メモリ構成要素１０２内の所定領域のアドレスを指定することになる。この実施例の変形例として、メモリ構成要素内の１つまたは複数の追加の所定領域を定義し、さまざまなコマンドがメモリ構成要素内のさまざまなロケーションを使用できるようにすることも可能である。
【００３７】
本発明の上述の所定の実施形態によれば、強化された関数にアクセスする（実行する）必要があるたびに、フラグシーケンス及び適切な拡張コマンドを備えるデータの書き込み動作が行われる。言うまでもなく、さらに精密な検出機構１１２を実現できることが理解できる。例えば、代替実施形態においては、フラグシーケンスの書き込みが１度だけで済むように、フラグシーケンスがメモリデバイスを特殊な動作状態とする（「拡張コマンドモード」と呼ぶ）ことが可能である。そうして、以後の書き込み動作によってさまざまな所定の動作を実行するためのさまざまな拡張コマンドを送信することが可能となり、それらの動作によって生じる可能性のある結果にアクセスするために読み取り動作を使用できる。デバイスは、検出機構により検出される別のフラグシーケンスを受信することにより拡張コマンドから解除することができる。
【００３８】
本発明のさらに別の実施形態においては、書き込みアドレスＡＤＤＲは、データシーケンス内の拡張コマンドを提供する代わりに、メモリウィンドウロケーションをトリガし、拡張コマンドにアクセスするのに使用できる。ホストアプリケーションがメモリ内の特定のアドレスに書き込むことを可能にするＡＰＩをホストレベルアプリケーションが備えるＯＳ環境では、ホストアプリケーションは所定のアドレスに対するフラグシーケンスの書き込み動作を実行できる。検出機構１１２がフラグシーケンスを検出すると、ハンドリング機構１１４にそのアドレスを渡す。次に、所定のアドレスに関連付けられている所定の動作（つまり拡張コマンド）を呼び出すことができる。本発明のさらに別の実施形態では、所定のフラグシーケンスを使用する代わりに、書き込みアドレスＡＤＤＲ自体がメモリウィンドウロケーションをトリガするために使用できる。
【００３９】
なお、特定のメモリロケーションにホストアプリケーションによって明示的にアクセスできないＯＳでも本発明の代替実施形態を利用できる。しかしながら、ＯＳだけが特定のアドレスで書き込み動作及び読み取り動作を発行できるため、ホストとＯＳの間には特殊なＡＰＩ規定を定義し、ＯＳに所定のアドレスを使用するように信号で知らせる必要がある。したがって、これらの実施形態は、ＯＳのなんらかの部分に対する修正を必要とするため、そのようなＯＳには適していない可能性がある。
【００４０】
本発明の別の実施形態では、メモリロケーションウィンドウを不注意にトリガする可能性をさらに削減するためにフラグシーケンスをさらに強化できる。フラグシーケンスの書き込み動作の直後に、読み取りシーケンスを実行することができる。デバイスがデータの中のフラグシーケンスを認識したことを示すための所定のデータシーケンスを返すようにコントローラ１０４を構成できる。ホストはデバイスが強化された機能付きのデバイスであるのか、それとも単なるレガシーデバイスにすぎないのかを確認するためにその情報を使用し、相応して処理することができる。この単純な形式のハンドシェーキングはさらに強化できることがわかる。また、ハンドシェーキング技法を使用することにより、必要であればさらに短いフラグシーケンスを使用できるようになる。
【００４１】
図４を参照すると、本発明の別の実施形態によれば、メモリデバイスに記憶される情報にアクセスするためのデータアクセスモデルはＯＳにより提供されるファイルシステムである。したがって、ホストアプリケーション１５２ａはＯＳに対するファイル入出力呼び出しを行う。ＯＳは、ファイル入出力呼び出しをデバイスドライバライブラリにより提供されるさらに低いレベルのデータ書き込みルーチンとデータ読み取りルーチンとに変換する。
【００４２】
最初に、ファイル動作の従来のシーケンス４０２を考える。第１のステップは、通常、ホストアプリケーションが「ファイルを開く」動作を実行することである。通常、これには、ＯＳに対する適切な関数呼び出しを行う、つまりファイル名を指定することが含まれる。図４は、Ｕｎｉｘ（ユニックス）のようなシステム呼び出しを示している。通常、ＯＳは関数呼び出しのパラメータを解析し、次にメモリデバイス（例えばディスクドライブ）と通信するデバイスドライバに対して適切な呼び出しを行う。「ファイルを開く」動作の場合では、ＯＳは通常特定のファイルを識別するファイル識別子（ｆｉｄ）と呼ばれる情報を返す。例えば、ｆｉｄとしては、書き込み動作のためのメモリデバイス内の書き込みロケーションや読み取り動作のための読み取りロケーションなどのパラメータを記憶するＯＳによって維持されるシステムファイルテーブルへのインデックスなどがある。
【００４３】
シーケンス４０２によって示されるように、何らかのＤＡＴＡの「ファイル書き込み」動作が次に実行できる。これによりＯＳはデバイスドライバライブラリに対する適切な呼び出しを行い、ファイル書き込み動作を実行する。ＯＳが実行する動作に関する特定の詳細は特定のＯＳとデバイスによって大きく変わる。ＤＡＴＡが所定のファイルシーケンスを含まないと仮定すると、メモリデバイスのコントローラ１０４内の検出機構１１２はトリガされない。その結果、コントローラはＯＳからのデバイスドライバ呼び出しにより指示されるようにメモリデバイス内の動作を実行し、指定されたファイルにＤＡＴＡを書き込むための処理を行う。
【００４４】
「ファイル読み取り」動作の実行が可能である。これによりＯＳはデバイスドライバライブラリに適切な呼び出しを行い、ファイルからの読み取り動作を実行する。通常、データは「ファイル読み取り」システム呼び出しのパラメータとして提供されるバッファ内に戻される。両方の例では、ファイル書き込みが実行されるのか、あるいはファイル読み取りが実行されるのかに関係なく、デバイスのメモリ構成要素１０２（例えばディスクドライブデバイスの磁気媒体）でデータアクセスが実行される。このようにして、データはメモリ構成要素に記憶されたファイルに書き込まれ、データはメモリ構成要素に記憶されたファイルから読み取られる。
【００４５】
次に本発明の実施形態によるファイル入出力シーケンス４０４の例を考える。第１のステップは、ホストアプリケーションが、例えば「ファイル−Ｘ」などの一意のファイル名を使用して「ファイルを作成する」コマンドを作成することなどである。これにより、ＯＳは指定されるファイルをデバイス内で作成するための必要な処置を実行する。本発明のこの特定の実施形態では、実際のファイルはデバイスのメモリ構成要素１０２で作成される。したがって、ディスクデバイスのケースでは、デバイス上のファイルシステムテーブルは「ファイル−Ｘ」のエントリを示す。また、ＯＳは後のファイル入出力動作のためにファイルｉｄ、つまりｆｉｄをホストアプリケーションに返す。
【００４６】
ここで、「ファイル書き込み」動作がＦ−ＤＡＴＡで実行されると仮定する。図３におけるように、Ｆ−ＤＡＴＡはフラグシーケンス及び拡張コマンドを備え、したがって
Ｆ−ＤＡＴＡ＝＜フラグシーケンス＞＜拡張コマンド＞
となる。ＯＳは従来の方法でファイル書き込み動作を処理する。つまり、ＯＳは、まさに任意のファイル書き込み動作のように、デバイスドライバライブラリに適切な呼び出しを行い、Ｆ−ＤＡＴＡをメモリデバイスに通信する。メモリデバイスのコントローラ１０４内の検出機構１１２はＦ−ＤＡＴＡに含まれるフラグシーケンスを検出する。フラグシーケンスの検出に応えて、Ｆ−ＤＡＴＡはハンドリング機構１１４により処理される。すなわち、Ｆ−ＤＡＴＡの拡張コマンド構成要素がハンドリング機構によって処理される。
【００４７】
しかしながら、本発明のこの特定の実施形態によれば、実際にはＦ−ＤＡＴＡはメモリ構成要素１０２内のファイル「ファイル−Ｘ」にも書き込まれる。Ｆ−ＤＡＴＡのファイル書き込み動作を処理する理由は、ファイルシステムの完全性を保証するためである。ＯＳによっては、ＯＳによって維持されるファイルシステムテーブルによって、ファイルに書き込まれるデータについての情報の追跡調査が行われる。例えば、ファイルサイズの把握を行ったり、チェックサム値をファイルごとに計算する等がＯＳによって行われる。コントローラ１０４が、フラグシーケンス検出時に単にＦ−ＤＡＴＡを遮断する場合、実際にはデータをファイルシステムに書き込まない場合、ＯＳファイルシステムテーブルが実際にファイルシステム内にある内容から逸脱し、その結果ファイルシステムの破壊につながる可能性がある。 したがって、Ｆ−ＤＡＴＡの「ファイル書き込み」動作は、たとえその目的が強化されたデバイスの拡張コマンドの１つを呼び出すことであっても実行される。同様に、図３のシーケンス３０４を参照すると、指定されるメモリロケーションに対するＦ−ＤＡＴＡの書き込み動作は、メモリロケーションウィンドウをトリガすることに加えて実際に実行することができ、そうすることでコントローラ１０４の設計が簡略化される。
【００４８】
図４における説明を続けると、Ｆ−ＤＡＴＡの拡張コマンド構成要素の処理は前述されたように進行する。コントローラ１０４内のハンドリング機構１１４は適切なアプリケーションプラットホーム１０６に指定された拡張コマンドを送り、強化された機能にアクセスする。
【００４９】
再び図４のシーケンス４０４を参照すると、以降の「ファイル読み取り」動作は、強化された関数を実行した結果生じる任意のデータを読み取るために実行される。本発明のこの実施形態の１つの実施例では、コントローラ１０４によって、Ｆ−ＤＡＴＡの書き込み直後の動作がファイル読み取り動作であると想定されている。したがって、ＯＳはファイル読み取り要求を受け取ると、ＯＳは要求をデバイス上での１つまたは複数の読み取り動作に変換する。コントローラは、読み取り要求を受け取ると、次に、ファイル「ファイル−Ｘ」の内容にアクセスする代わりに、拡張コマンドを実行することにより生じるデータを返す。
【００５０】
あるいは、拡張コマンドにより生じるデータは、データフロー４２２によって示されるようにファイルシステムに書き込むことができる。例えば、データは「ファイル−Ｘ」に書き込むことができる。これにより、ホストアプリケーションは「ファイル−Ｘ」上でファイル読み取り動作を実行することで、作成されたデータにアクセスできる。
【００５１】
当該分野における技術者であれば、拡張コマンドセットがアクセスされるたびに、Ｆ−ＤＡＴＡを書き込むために使用されるファイル（例えば、「ファイル−Ｘ」）が増加し続けることが容易に理解できるだろう。多くのケースではこれは望ましくない。いくつかのＯＳでは、「ファイルを作成する」動作は、ファイルを作成する前にそれがすでに存在する場合にはファイルを削除するパラメータを呼び出すことができる。したがって、シーケンス４０４に示される例は、「ファイルを作成する」動作がすでに既存のファイルを削除することを想定している。代替の実施形態では、拡張コマンドの完了時のファイル（例えばＵｎｉｘのｕｎｌｉｎｋ（））を削除するためのシステム呼び出しを「ファイルを開く」の後に行うことができる。さらに別の代替実施形態では、ファイルを開く動作の前にファイルを削除することが可能である。
【００５２】
後述する説明は、データ記憶装置の強化された機能にアクセスするための本発明の多様な態様を一例として示している。説明上の目的から、ＰＩＮ（暗証番号コード）セキュリティ機能を含む強化されたメモリデバイスが提供されると仮定する。すなわち、カードに対するアクセスが許可される前にＰＩＮ検証が実行されることを強化されたメモリデバイスが必要とすると仮定する。説明上の目的のため、以下の動作が実行されると仮定する。
【００５３】
（１）ホストアプリケーションがメモリデバイスに記憶されるプロファイル情報、例えばユーザ名にアクセスする。
【００５４】
（２）メモリデバイスがプロファイル情報を返す。
【００５５】
（３）ホストアプリケーションがユーザ名を表示し、ユーザにＰＩＮを入力するように照会する。
【００５６】
（４）ホストアプリケーションが入力されたＰＩＮのＰＩＮ検証を要求する。
【００５７】
（５）メモリデバイスがホストアプリケーションにより提供された入力ＰＩＮを、メモリデバイスに記憶されているＰＩＮと比較し、肯定的な結果または否定的な結果を返す。
【００５８】
前述のように、ＡＰＩトランスレータ層１５４は、メモリデバイスにより提供される強化された関数に関してホストアプリケーションにインタフェースを提供できる。したがって、例えば、ホストアプリケーションは「ｏｐｅｎＣｈａｎｎｅｌ（）」などのＡＰＩ呼び出しを備え、メモリデバイスの強化された機能に対するアクセスを確立できる。ＯＳがデータ記憶装置のメモリ構成要素１０２に対する直接アクセスをホストレベルアプリケーションに与えるケースでは、このＡＰＩは何も行わない場合がある。ホストアプリケーションがより高いレベルの構成、例えばファイルシステムでデータにアクセスするケースでは、「ｏｐｅｎＤｅｖｉｃｅ（）」ＡＰＩはファイルを開くまたはファイルを作成する動作を実行する。
【００５９】
「ｅｎｃｒｙｐｔ（）」などの関数呼び出しはＡＰＩに含まれ、ホストアプリケーションに記憶装置内で提供される暗号化関数に対するアクセスを与える。したがって、記憶装置で暗号化関数を実行するための詳細はアプリケーションから隠され、このようにしてホストアプリケーションを開発するための作業を削減できる。
【００６０】
以下はＡＰＩ層１５４に提供されるＡＰＩ呼び出しを例示したものである。説明上の目的のため、低レベル直接メモリアクセス（データアクセスモデル１）と、ファイルシステム内でのようなより高いレベルのアクセス（データアクセスモデル２）との２つのデータアクセスモデルについての説明を行う。
【００６１】
ｏｐｅｎＣｈａｎｎｅｌ――メモリデバイスの拡張コマンドセットへのアクセスチャネルを確立する。
【００６２】
データアクセスモデル１――ＡＰＩは何も行わない。例えば図３に図示されるように、直接的にメモリにアクセスするときには、通常対応する「開く」動作はない。メモリが単に書き込まれるまたは読み取られるだけである。
【００６３】
データアクセスモデル２――ＡＰＩはファイルのファイル作成動作を実行できる。例えば、
fid = fcreat（「ファイル−Ｘ」）
である。ファイルｉｄ（ｆｉｄ）を維持するなどのファイルを作成するための他の詳細も、ＡＰＩで処理できる。ファイルが開かれると、以後データをそれに書き込むことができる。あるいは、ファイルを開くコマンドを実行できる。「ファイル−Ｘ」が無事に作成、あるいは開放されたのかを判断するためには、追加のコードが必要とされる。
【００６４】
ｇｅｔＰｒｏｆｉｌｅ――これは、メモリデバイスの拡張コマンドを例示したものである。この関数は、ユーザのためにプロファイル情報を検索する。
【００６５】
データアクセスモデル１――ＡＰＩ実行は以下のようになる。
【００６６】
write(0x1234, “xxxAccessyyy get-profile-command”)
read(0x2468, buffer)
ａ．文字列「ｘｘｘＡｃｃｅｓｓｙｙｙ」は、強化された関数にアクセスするため、このケースではユーザプロファイルにアクセスするためにメモリデバイス内のメモリロケーションウィンドウをトリガする所定のフラグシーケンスである。文字列「ｇｅｔ−ｐｒｏｆｉｌｅ−ｃｏｍｍａｎｄ」はプロファイル情報を検索するための拡張コマンドに対する参照である。言うまでもなく、簡略な数または文字を特定の拡張コマンドの識別子として使用することができる。テキスト文字列には自己文書化になっているという優位点がある。
【００６７】
ｂ．文字列が「書き込み」動作を介してメモリデバイスに送信されると、メモリデバイスのコントローラ１０４内の検出機構１１２は文字列の中のフラグシーケンスを検出することができ、メモリロケーションウィンドウをトリガする。そうして、拡張コマンドはハンドリング機構１１４に渡され、適切な処理がアプリケーションプラットホーム１０６によって実行できる。このケースでは、アプリケーションプラットホームは単に情報の位置を突き止めるだけか、情報をレジスタにロードするだけか、あるいはメモリ構成要素１０２の所定のロケーションに情報をロードすることを行うか、もしくはそれ以外の場合プロファイル情報を使用可能にすることを行う。なお、書き込み動作で提供されるアドレスは無視される。
【００６８】
ｃ．「読み取り」動作が実行されると、メモリデバイスはプロファイル情報を（例えばレジスタから）検索し、データをデバイスドライバに通信する。ＯＳは次にデータを「バッファ」内に移動する。メモリ構成要素１０２の中の所定のメモリロケーションがプロファイル情報を記憶するために使用されると、読み取りコマンドは所定のメモリロケーションのアドレスが含まれる。それ以外の場合、アドレスは無視される。
【００６９】
ｄ．ＡＰＩは次に、データがＡＰＩ呼び出しによってどのようにして得られたのかの詳細を隠しながら、バッファの内容をホストアプリケーションに返すことができる。
【００７０】
データアクセスモデル２――ＡＰＩ実行は以下のようになる。
【００７１】
fwrite(fid, “xxxAccessyyy get-profile-command”) 
fread(fid, buffer)
ａ．ｏｐｅｎＣｈａｎｎｅｌ（）ＡＰＩ呼び出しが以前に行われたと仮定すると、ファイルは書き込みのため、及び読み取りのために開いた状態にある。
【００７２】
ｂ．ＯＳは、ｆｗｒｉｔｅ（）関数呼び出しをメモリデバイスに対する適切な低レベル書き込み動作に変換する。メモリデバイス内での処理は前述されたように進行する。ユーザプロファイル情報はレジスタ内で使用可能にされるか、あるいはそれを実際のファイル（つまり「ファイル−Ｘ」）に書き込むことができる。
【００７３】
ｃ．さらに、メモリデバイスはファイルシステムの破壊を回避するためにファイルに対する実際の書き込み動作を実行するように構成されている。
【００７４】
ｄ．ＯＳはｆｒｅａｄ（）関数をメモリデバイスに対する適切な低レベルの読み取り動作に変換する。メモリデバイスに対して行われるファイル読み取り動作は検出機構１１２により遮られ、データはハンドリング機構１１４及びアプリケーションプラットホーム１０６を介して提供できる。あるいはアプリケーションプラットホーム１０６がユーザプロファイルをファイル「ファイル−Ｘ」の中にダンプした場合には、読み取り動作はファイル自体に向けることができる。
【００７５】
ｅ．メモリデバイスから通信されるデータは次に前述されたように「バッファ」に移動される。
【００７６】
ｖｅｒｉｆｙＰＩＮ――これはメモリデバイスの別の拡張コマンドを例示したものである。この関数はホストにより提供されるＰＩＮをメモリデバイスに記憶されるＰＩＮと比較し、一致するか否かを示す応答を返す。ホストアプリケーションは、このＡＰＩ呼び出しに渡されるＰＩＮを提供する。
【００７７】
データアクセスモデル１――ＡＰＩ実行は以下のようになる。
【００７８】
write(0x1234, “xxxAccessyyy verify-PIN-command ILoveLucy”) 
read(0x2468, buffer)
ａ．シーケンス「ｘｘｘＡｃｃｅｓｓｙｙｙ」は、強化された関数にアクセスするため、このケースではＰＩＮ検証を実行するためにメモリデバイス内のメモリロケーションウィンドウをトリガする。文字列「ｖｅｒｉｆｙ−ＰＩＮ−ｃｏｍｍａｎｄ」は、検証を実行するための拡張コマンドを識別する。
【００７９】
ｂ．データは、このＡＰＩ呼び出しに渡されたユーザのＰＩＮ「ＩＬｏｖｅＬｕｃｙ」も含む。この例では、ホストアプリケーションが、デバイスに送信されるデータの一部として通信（例えば「ＩＬｏｖｅＬｏｃｙ」）を含むことによってメモリデバイスの強化された機能との通信が可能となることが示されている。大量のデータを送信する必要がある場合、複数の書き込み動作を実行できるようにする規定を定義することができる。
【００８０】
ｃ．「書き込み」動作を介してメモリデバイスに文字列が送信されるとき、メモリデバイスのコントローラ１０４内の検出機構１１２は文字列の中のフラグシーケンスを検出でき、メモリロケーションウィンドウをトリガする。拡張コマンドは、次に、アプリケーションプラットホーム１０６によって適切な処理が実行できるハンドリング機構１１４に渡される。このケースでは、アプリケーションプラットホームはホストにより提供されるＰＩＮをメモリデバイスに記憶されるＰＩＮと比較する。次にアプリケーションプラットホームは、ＰＡＳＳ、ＦＡＩＬなどの適切な応答をレジスタ内に、またはメモリ１０２内の所定のロケーション内に記憶することができる。
【００８１】
ｄ．「読み取り」動作が実行されると、メモリデバイスはプロファイル情報を（例えばレジスタから）検索し、データをデバイスドライバに通信して返す。次にＯＳはデータを「バッファ」に移動する。メモリ構成要素１０２内の所定のメモリロケーションがプロファイル情報を記憶するために使用される場合は、読み取りコマンドは所定のメモリロケーションのアドレスを含む。それ以外の場合、アドレスは無視される。
【００８２】
ｅ． ＡＰＩは次にデータがＡＰＩ呼び出しによってどのように得られたのかの詳細を隠しながら、バッファの内容をホストアプリケーションに返すことができる。
【００８３】
データアクセスモデル２――ＡＰＩ実行は以下のようになる。
【００８４】
fwrite(fid, “xxxAccessyyy verify-PIN-command ILoveLucy”) 
fread(fid, buffer)
ａ．ＯＳはｆｗｒｉｔｅ（）関数呼び出しをメモリデバイスに対する低レベル書き込み動作に変換する。メモリデバイスにおける処理は、前述されたように進行する。比較の結果は、レジスタを介して、または結果を実際のファイル（つまり「ファイル−Ｘ」）に書き込むことによって使用可能となる。
【００８５】
ｂ．さらに、メモリデバイスはファイルシステムの破壊を回避するためにファイルに対する実際の書き込み動作を実行するように構成されている。
【００８６】
ｃ．ＯＳはメモリデバイスに対する適切な低レベル読み取り動作にｆｒｅａｄ（）関数を変換する。メモリデバイスに対して行われるファイル読み取り動作は、検出機構１１２によって遮られ、データはハンドリング機構１１４及びアプリケーションプラットホーム１０６を介して提供される。あるいは、アプリケーションプラットホーム１０６がユーザプロファイルをファイル「ファイル−Ｘ」にダンプした場合には、読み取り動作をファイル自体に向けることができる。
【００８７】
ｄ．それから、メモリデバイスから通信されるデータは前述されたように「バッファ」に移動される。
【００８８】
ｃｌｏｓｅＣｈａｎｎｅｌ――メモリデバイスの拡張コマンドセットに対するアクセスチャネルを閉じる。
【００８９】
データアクセスモデル１――ＡＰＩは何も行わない。例えば図３に図示されているようにメモリに直接的にアクセスするとき、通常対応する「閉じる」動作はない。メモリは単に書き込まれる、あるいは読み取られるだけである。
【００９０】
データアクセスモデル２――ＡＰＩは以下を実行できる。
【００９１】
unlink(fid)
このＵｎｉｘシステムコールにより、ファイルシステムからファイルが削除される。同様なシステムコールは他のＯＳにも提供される。ファイル「ファイル−Ｘ」を削除することにより、ファイルシステムの不必要な混雑化を回避できる。
【００９２】
前記のＡＰＩ層の定義において、ホストアプリケーションはユーザのＰＩＮを獲得し、検証するために以下のプログラム断片を含む。
【００９３】
:
openChannel();
getProfile(buffer);
/* the next two subroutines interact with a user to obtain a PIN */
display_name(buffer);
obtain_PIN(p_buffer);
result = verifyPIN(P-buffer);
:
なお、本発明の代替実施形態では、フラグシーケンスの動作によって、メモリデバイスをメモリデバイスに対するデータ書き込みによって多様な強化された関数が実行される「拡張コマンドモード」にすることが可能である。ＡＰＩ呼び出しは以下のように実現できる。ここでも、両方のデータアクセスモデルについて説明する。
【００９４】
ｏｐｅｎＣｈａｎｎｅｌ――アクセスチャネルを確立する。
【００９５】
データアクセスモデル１――ＡＰＩは以下のようになる。
【００９６】
write(0x1234, “xxxAccessyyy”) 
これで、メモリデバイスは拡張コマンドモードになる。
【００９７】
データアクセスモデル２――ＡＰＩはファイルのファイル作成動作を実行できる。例えば、
fid = fcreat(“file-X”)
fwrite(fid, “xxxAccessyyy”)
メモリデバイスを拡張コマンドモードにすることに加えて、文字列「ｘｘｘＡｃｃｅｓｓｙｙｙ」が、ファイルシステムの破壊を回避するためにファイルに書き込まれる。
【００９８】
ｇｅｔＰｒｏｆｉｌｅ――ユーザのためにプロファイル情報を検索する。
【００９９】
データアクセスモデル１――ＡＰＩ実行は以下のようになる。
【０１００】
write(0x1234, “get-profile-command”) 
read(0x2468, buffer)
データアクセスモデル２――ＡＰＩ実行は以下のようになる。
【０１０１】
fwrite(fid, “get-profile-command”)
fread(fid, buffer)
なお、文字列「ｇｅｔ−ｐｒｏｆｉｌｅ−ｃｏｍｍａｎｄ」が、ファイルシステムの破壊を回避するためにファイルに書き込まれる。
【０１０２】
ｖｅｒｉｆｙＰＩＮ――ＰＩＮを検証する。
【０１０３】
データアクセスモデル１――ＡＰＩ実行は以下のようになる。
【０１０４】
write(0x1234, “verify-PIN-command ILoveLucy”)
read(0x2468, buffer)
データアクセスモデル２――ＡＰＩ実行は以下のようになる。
【０１０５】
fwrite(fid, “verify-PIN-command ILoveLucy”)
fread(fid, buffer)
なお、文字列「ｇｅｔ−ｐｒｏｆｉｌｅ−ｃｏｍｍａｎｄ」が、ファイルシステムの破壊を回避するためにファイルに書き込まれる。
【０１０６】
ｃｌｏｓｅＣｈａｎｎｅｌ――アクセスチャネルを閉じる。
【０１０７】
データアクセスモデル１――ＡＰＩは以下のようになる。
【０１０８】
write(0x1234, “xxxCloseAccessyyy”)
これは、拡張コマンドモードからメモリデバイスを解除する第２の所定フラグシーケンスである。
【０１０９】
データアクセスモデル２――ＡＰＩ実行は以下を実行できる。
【０１１０】
fwrite(fid, “xxxCloseAccessyyy”)
unlink(fid)
このＵｎｉｘシステムコールはファイルシステムからファイルを削除する。同様のシステムコールは他のＯＳに提供される。しかしながら、ファイルを削除する前に、メモリデバイスを拡張コマンドモードから解除する必要がある。これはｆｗｒｉｔｅ（）システムコールによって達成される。
【０１１１】
図５を参照すると、一般ブロック図において、強化されたデータ記憶装置５００が本発明の態様に従ってホストデバイス５５０にどのように導入できるのかが示されている。インタフェース５３０は記憶装置に設けられるピンアウトまたはコネクタ、及び記憶装置が接続されるホストデバイスに設けられるバスまたはスロットの両方を表している。
【０１１２】
説明上の目的で、制御論理５１６のみからなるメモリ構成要素５０２及びコントローラ５０４が、レガシーメモリデバイスからなる構成要素を構成すると仮定する。デバイスに追加される強化された機能は、強化された機能を実現する追加論理回路及び／または処理機能５０６によって表される。また、コントローラ５０４は、検出機構５１２のための論理回路及びハンドリング機構５１４のための論理機構を含むように拡張される。別の観点から見ると、メモリデバイスは、データを記憶するためのメモリ構成要素と、関連するすべての論理回路を包含する制御構成要素とを備え、メモリ構成要素に及びメモリ構成要素からデータを転送するものである。
【０１１３】
ホストデバイス５５０上のホストアプリケーション５５２は、強化された機能を活用するために追加コード５５３で修正される。ＡＰＩ５５４は、強化された機能にアクセスするためのデータ通信の詳細のいくらかを隠すことで、ホストアプリケーションの開発を簡略化できるようにするために提供される。
【０１１４】
本発明の検出機構５１２及びハンドリング機構５１４によって、メモリデバイスの機能セットが増加されたとしてもデバイスドライバライブラリ内のデバイスドライバコード６６２、６３３（図６）を新たにしたり修正したりすることが不要となる。本発明によって、ＯＳ及びデバイスドライバが、本来はレガシーデバイスで定義された既存のコマンドセット（例えば書き込み動作と読み取り動作）を使用できるようになり、強化されたデバイス内で拡張コマンドセットにアクセスし、強化された機能を実行することが可能となる。したがって、従来のデバイスにおいて提供されている追加の機能６６２、６３３は本発明によるデバイスでは必要とされていない。その結果、ＯＳの点からは実現する新しい機能性がないため、ＯＳ５５８内のデバイスドライバに対して修正を行う必要はない。したがって、強化された機能が付いた記憶装置をベンダがリリースしようとする際には、カスタマはただ更新されたホストレベルのアプリケーションを得るだけでよい。カスタマの既存のＯＳ及びデバイスドライバには変更が不要である。
【０１１５】
前記から、本発明の基本的な様態は、レガシーデバイスのコマンドセットを使用して、強化されたデバイスで提供される追加された機能を実行することであるとわかる。前記に開示された実施形態では特殊なデータシーケンス、つまりメモリロケーションウィンドウをトリガするための所定のフラグシーケンスが利用されている。
【０１１６】
本発明の別の実施形態によれば、メモリロケーションウィンドウはメモリデバイスに動作の一意のシーケンスを発行することによりトリガされる。例えば、３つの書き込み動作とその後に続く４つの読み取り動作とが、強化されたメモリデバイスの強化された機能へのアクセスをトリガする働きをする。さまざまなシーケンスによってさまざまな関数をトリガすることが可能である。強化された機能によって生じるデータはメモリ構成要素１０２の所定の領域に記憶され、従来の読み取り動作によってアクセスできる。これはやや扱いにくい実施形態であり、メモリデバイス内でより複雑な論理回路を必要とするが、本発明の顕著な態様を具現化するものである。
【０１１７】
図１Ａを参照すると、フラッシュメモリデバイス１００’は図１に図示されるアーキテクチャの一実施例となる。デバイスはメモリ構成要素１０２’及び強化された機能を提供するための論理回路／ファームウェアを表すプラットホーム１０６’を備える。なお、本発明の適切なコントローラ論理回路も提供されるが、説明を簡略化するために図示されていない。図は複数のホストアプリケーション（アプリケーション１、アプリケーション２）が同時にデバイスの強化された機能にアクセス可能な本発明の態様を示している。
【０１１８】
アプリケーション１はファイルの「ｆｏｐｅｎ（）」システムコールを行うことによって第１のメモリロケーションウィンドウ１２２にアクセスする。次に該アプリケーションは「ｆｗｒｉｔｅ（）」呼び出しを行い、フラグシーケンス及び拡張コマンドを（関連するデータとともに）デバイス１００’に送信する。ＯＳ内のファイルシステムは最終的には（フラッシュメモリデバイス用のデバイスドライバを介して）呼び出しを行い、コントローラ（図示せず）によって「覚えられている」メモリ１０２’内のロケーションにこのデータを書き込む。動作の説明を簡略化するためにいくつかの仮定がなされる。第１に、すべてのデータが１つの連続ブロック（例えば５１２バイト）に適合すると仮定される。ファイルシステムはセッション中にはデータの自動的なデフラグメント、あるいは再割り当てを行わない。チェックサムがデータ完全性を保証するために提供される。これらの仮定がある特定の実施例には当てはまらない場合には、追加の処理が提供されてもよい。さらに一般的には、指定されたＯＳまたはファイルシステムの特異性に対処するためには特定の設備が提供されなければならないことがある。しかしながら、このような追加の考慮事項は十分に当該分野の技術者の知識の範囲内である。
【０１１９】
続行すると、アプリケーション１は「ｆｆｌｕｓｈ（）」システムコールを行う。ファイルシステムに応じて「ｆｗｒｉｔｅ（）」がＯＳでバッファに入れられる場合もある。「ｆｆｌｕｓｈ（）」システムコールは強制的にＯＳにデータをデバイスに書き込ませる。デバイス１００’内のコントローラがフラグシーケンスを検出すると、拡張コマンド及び関連データがプラットホーム１０６’に通信され、拡張コマンドにより示される拡張関数を実行する。拡張コマンドを実行した結果として応答データが生じる場合、プラットホーム論理回路／ファームウェアはメモリロケーションウィンドウ１２２のアドレスを提供され、その結果データはそこに書き込まれる。前述されたように、ファイルシステムはそのファイルに割り当てられるメモリをデフラグメントしない、あるいは再割り当てを行わないだろうと仮定される。それ以外の場合、プラットホーム１０６’はその応答データをどこに書き込むかが分からない可能性がある。このような状況では、コントローラは可能であるならばこのような再割り当てを検出するために追加の情報を必要とする。
【０１２０】
続行すると、アプリケーション１は、ファイルを最初まで「巻き戻す」ための「ｆｓｅｅｋ（）」システムコールを行うことができる。次に、メモリロケーションウィンドウ１２２から応答データを読み取るために「ｆｒｅａｄ（）」システムが行われる。ＯＳによっては、ＯＳがその内部バッファからデータを読み取らないことを確実にするためにファイルを閉じなければならない場合がある。ファイルから読み取られるデータが他のなんらかのデータに対する応答データであるかどうかを区別するために（例えば、他のデータはフラグシーケンス及び拡張コマンドからのデータである可能性がある）、すべての応答データの前には１つまたは複数バイトの特殊なシーケンスが先行する、例えば第１のバイトはゼロであるという規定を確立する。このようにして、読み取られるデータがプラットホーム１０６’からの応答データであることを保証するために「ｆｓｅｅｋ（）」シーケンスと「ｆｒｅａｄ（）」シーケンスが必要な場合には１回または複数回繰り返される。応答データは、関数が実行されたという単純な肯定応答である。
【０１２１】
アプリケーション１は、プラットホーム１０６’によって提供される他の関数にアクセスするためにそれ以降の一連の同様なシステムコールを行う。アプリケーションは同じファイル上で「ｆｏｐｅｎ（）」システムコールを実行する必要がある。あるいは、アプリケーションは別のメモリロケーションウィンドウにアクセスするために別のファイルを開くことができる。
【０１２２】
図１Ａは、ホスト上で実行中の別のアプリケーション、すなわちアプリケーション２がアプリケーション１と同時にメモリデバイス１００’の強化された関数にアクセスできることを示している。アプリケーション２は、第２のメモリロケーションウィンドウ１２４を確立するためにアプリケーション１によって開かれるファイルとは異なるファイルを開く。アプリケーション２は、次にフラグシーケンス及び適切な拡張コマンドを書き込むことによってプラットホーム１０６’によって提供される所望の関数にアクセスするために、「ｆｗｒｉｔｅ（）」システムコールを行うことができる。前述したように、アプリケーション２は、強制的にＯＳにデータをメモリデバイス１００’へ送信させるために「ｆｆｌｕｓｈ（）」システムコールを行う必要がある。
【０１２３】
デバイス１００’のコントローラ（図示せず）がフラグシーケンスを検出すると、残りのデータはプラットホーム１０６’に通信され、処理される。これには、メモリロケーションウィンドウ１２４のアドレスを通信し、生じた応答データをプラットホームが書き込むことを可能にさせることが含まれる。
【０１２４】
生じる可能性のある応答データは、ファイルを読み取ることによりアプリケーション２によって獲得できる。アプリケーション１でのように、これには「ｆｓｅｅｋ（）」を行ってファイルシステム内のファイルポインタをファイルの始まりにリセットする、実際にはファイルを始まりに「巻き戻す」ことが含まれる。また、アプリケーション１でのように、「ｆｒｅａｄ（）」動作及び「ｆｓｅｅｋ」動作のシーケンスを、プラットホーム１０６‘がデータを生成するまで実行する必要がある。
【図面の簡単な説明】
【０１２５】
【図１】本発明の実施形態における高レベル機能ブロック図である。
【図１．Ａ】フラッシュメモリデバイス内における本発明の実施形態を示す図である。
【図２．Ａ】本発明のメモリデバイスの多様な用途のサンプルを示す図である。
【図２．Ｂ】本発明のメモリデバイスの多様な用途のサンプルを示す図である。
【図３】本発明の実施形態における、強化されたメモリデバイスにアクセスするための通信シーケンスを示す図である。
【図４】本発明の代替実施形態における、強化されたメモリデバイスにアクセスするための通信シーケンスを示す図である。
【図５】本発明による強化されたメモリデバイスを配備するためのシステムアーキテクチャを示す図である。
【図６】強化されたメモリデバイスを配備するための従来のシステムアーキテクチャを示す図である。
【符号の説明】
【０１２６】
１００  メモリデバイス
１０２  メモリ
１０４  コントローラ
１０６ａ，１０６ｂ  アプリケーションプラットホーム
１１２  検出機構
１１４  ＡＰＩトランスレータ
１１６  制御論理
１３０  入出力インタフェース
１５０  ホストデバイス
１５２ａ，１５２ｂ  アプリケーション
１５４  ＡＰＩトランスレータ
１５６  ドライバ
１５８  ＯＳ
２００ａ，２００ｂ，２００ｃ  メモリカード
２０２  ＶＰＮサーバ
２０４  無線基地局
２０６  企業ＬＡＮ
２１２  ネットワーク
２５０ａ，２５０ｂ  ＰＤＡ
２５０ｃ  ラップトップコンピュータ
２５０ｄ  携帯電話
３０２，３０４  入出力シーケンス
４０２，４０４  入出力シーケンス
５００  データ記憶装置
５０２  メモリ
５０４  コントローラ
５０６  拡張コマンド
５１２  検出機構
５１４  ハンドリング機構
５１６  制御論理
５３０  インタフェース
５５０  ホストデバイス
５５２  アプリケーション
５５３  追加コード
５５４  ＡＰＩトランスレータ
５５６  ドライバ
５５８  ＯＳ
【図１】
2005122725.tif 000003
【図１．Ａ】
2005122725.tif 000004
【図２．Ａ】
2005122725.tif 000005
【図２．Ｂ】
2005122725.tif 000006
【図３】
2005122725.tif 000007
【図４】
2005122725.tif 000008
【図５】
2005122725.tif 000009
【図６】
2005122725.tif 000010