(57)【要約】  入出力デバイスがコンピューティングホストに接続される。ある実施形態では、デバイスは、デバイスに直接接続されていないコンピューティングホストのメモリを利用して、デバイスのマップのシャドウコピーおよび／またはデバイスの状態といった情報を記憶することができるようになっている。マップのシャドウコピーの記憶は、デバイスとコンピューティングホストの一方または両方が、マップのシャドウコピーを利用して、例えば、読み出し待ち時間を低減させることを可能にする。状態の記憶は、通常はデバイスが低電力状態を開始するときに失われるはずの揮発性状態を保存することを可能にする。ある実施形態では、デバイスは、標準コマンドの１若しくはそれ以上の非標準修飾子を実施する。非標準修飾子は標準コマンドの実行を変更し、標準コマンドだけを有するホストプロトコルに存在しない機能を提供する。
2014522066.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
コンピューティングホストから送信された、仕様（ｓｐｅｃｉｆｉｃａｔｉｏｎ）を有するコマンドを入出力デバイスで受け取る工程であって、当該仕様は複数の非標準仕様のうちの少なくとも１つを有し、当該非標準仕様は１若しくはそれ以上の非標準コマンド修飾子を有するものである、前記受け取る工程と、
前記仕様が前記非標準コマンド修飾子のうちの特定の１つを有することに応答して、前記特定の非標準コマンド修飾子に従って前記コマンドを実行する工程と
を有し、
前記非標準仕様のうちの少なくとも１つは複数のデータ宛先のうちの特定の１つを識別し、前記データ宛先は複数のデータバンドを有するものである、
方法。
【請求項２】
方法であって、
コンピューティングホストで、入出力デバイスに仕様を有するコマンドを提供する工程であって、当該仕様は複数の非標準仕様のうちの少なくとも１つを有し、当該非標準仕様は１若しくはそれ以上の非標準コマンド修飾子を有するものである、前記提供する工程を有し、
前記仕様が前記非標準コマンド修飾子のうちの特定の１つを有することに応答して、前記入出力デバイスは前記特定の非標準コマンド修飾子に従って前記コマンドを実行し、
前記非標準仕様のうちの少なくとも１つは複数のデータ宛先のうちの特定の１つを識別し、前記データ宛先は複数のデータバンドを有するものである、
方法。
【請求項３】
請求項１または２記載の方法において、前記データバンドは、データベース・ジャーナル用データバンド、ホットデータバンド、およびコールドデータバンドのうちの１若しくはそれ以上に対応するものである方法。
【請求項４】
請求項３記載の方法において、前記データベース・ジャーナル用データバンドはデータベース・ジャーナルの類型データのために確保されるものである方法。
【請求項５】
請求項４記載の方法において、前記データベース・ジャーナル用データバンド内の最も古いデータは、任意選択で、および/または選択的に、自動削除されるものである方法。
【請求項６】
請求項３記載の方法において、前記ホットデータバンドは、前記コンピューティングホストが送信元であるデータに少なくとも使用されるものである方法。
【請求項７】
請求項６記載の方法において、前記コンピューティングホストは、
コンピュータ、
ワークステーションコンピュータ、
サーバコンピュータ、
ストレージサーバ、
パーソナルコンピュータ（ＰＣ）、
ラップトップコンピュータ、
ノートブックコンピュータ、
ネットブックコンピュータ、
携帯情報端末（ＰＤＡ）、
メディアプレーヤ、
メディアレコーダ、
デジタルカメラ、
セルラハンドセット、
コードレス電話機ハンドセット、および
電子ゲーム
のうちの１若しくはそれ以上を有するものである方法。
【請求項８】
請求項６記載の方法において、前記コンピューティングホストが相対的に長い順次ストリームを書き込んだことに応答して、前記ホットデータバンドのサイズが増大するものである方法。
【請求項９】
請求項３記載の方法において、前記コールドデータバンドは、少なくともリサイクラからのデータに使用されるものである方法。
【請求項１０】
方法であって、
コンピューティングホストから送信された、仕様を有するコマンドを入出力デバイスで受け取る工程であって、当該仕様は複数の非標準仕様のうちの少なくとも１つを有し、当該非標準仕様は１若しくはそれ以上の非標準コマンド修飾子を有するものである、前記受け取る工程と、
前記仕様が前記非標準コマンド修飾子のうちの特定の１つを有することに応答して、前記特定の非標準コマンド修飾子に従って前記コマンドを実行する工程であって、前記コマンドのデータと共に前記非標準コマンド修飾子の指示を記憶する工程を有するものである、前記コマンドを実行する工程と、
前記指示にアクセスして、前記データの全部または任意の部分を、再利用するのではなく削減することを決定する工程と
を有する方法。
【請求項１１】
請求項１、２、または１０記載の方法において、特定の非標準修飾子を有効にするためのモード設定仕様を有するモード設定コマンドを受け取ることにより、前記モード設定コマンドの後に受け取られる標準コマンドが、任意選択で、および/または選択的に、前記特定の非標準修飾子に従って処理されるものである方法。
【請求項１２】
請求項１、２、または１０記載の方法において、前記非標準仕様のうちの少なくとも１つは、
データタイプ、
データアクセスタイプ、
データ順序付け、
データ関係、および
コマンド関係
のうちの１若しくはそれ以上を指定する方法。
【請求項１３】
請求項１、２、または１０記載の方法において、前記コマンドは、少なくとも部分的に前記コンピューティングホストに接続された入出力カードのメモリデバイスから前記コンピューティングホストによって取得される位置情報を有するものである方法。
【請求項１４】
システムであって、
コンピューティングホストから仕様を有するコマンドを受け取る手段を有する入出力デバイスであって、当該仕様は複数の非標準仕様のうちの少なくとも１つを有し、当該非標準仕様は１若しくはそれ以上の非標準コマンド修飾子を有するものである、前記入出力デバイスを有し、
前記入出力デバイスは、さらに、前記仕様が前記非標準コマンド修飾子のうちの特定の１つを有することに応答して、前記特定の非標準コマンド修飾子に従って前記コマンドを実行する手段を有するものであり、
前記非標準仕様のうちの少なくとも１つは複数のデータ宛先のうちの特定の１つを識別し、前記データ宛先は複数のデータバンドを有するものである、
システム。
【請求項１５】
システムであって、
入出力デバイスに仕様を有するコマンドを提供する手段を有するコンピューティングホストであって、当該仕様は複数の非標準仕様のうちの少なくとも１つを有し、当該非標準仕様は１若しくはそれ以上の非標準コマンド修飾子を有するものである、前記コンピューティングホストを有し、
前記仕様が前記非標準コマンド修飾子のうちの特定の１つを有することに応答して、前記入出力デバイスは前記特定の非標準コマンド修飾子に従って前記コマンドを実行し、
前記非標準仕様のうちの少なくとも１つは複数のデータ宛先のうちの特定の１つを識別し、前記データ宛先は複数のデータバンドを有するものである、
システム。
【請求項１６】
請求項１４または１５記載のシステムにおいて、前記データバンドは、データベース・ジャーナル用データバンド、ホットデータバンド、およびコールドデータバンドのうちの１若しくはそれ以上に対応するものであるシステム。
【請求項１７】
請求項１６記載のシステムにおいて、前記データベース・ジャーナル用データバンドはデータベース・ジャーナルの類型データのために確保されるシステム。
【請求項１８】
請求項１７記載のシステムにおいて、前記データベース・ジャーナル用データバンド内の最も古いデータは、任意選択で、および/または選択的に、自動削除されるものであるシステム。
【請求項１９】
請求項１６記載のシステムにおいて、前記ホットデータバンドは、前記コンピューティングホストが送信元であるデータに少なくとも使用されるものであるシステム。
【請求項２０】
請求項１９記載のシステムにおいて、前記コンピューティングホストは、
コンピュータ、
ワークステーションコンピュータ、
サーバコンピュータ、
ストレージサーバ、
パーソナルコンピュータ（ＰＣ）、
ラップトップコンピュータ、
ノートブックコンピュータ、
ネットブックコンピュータ、
携帯情報端末（ＰＤＡ）、
メディアプレーヤ、
メディアレコーダ、
デジタルカメラ、
セルラハンドセット、
コードレス電話機ハンドセット、および
電子ゲーム
のうちのいずれか１つであるシステム。
【請求項２１】
請求項１９記載のシステムにおいて、前記コンピューティングホストが相対的に長い順次ストリームを書き込んだことに応答して、前記ホットデータバンドのサイズが増大するものであるシステム。
【請求項２２】
請求項１６記載のシステムにおいて、前記コールドデータバンドは、少なくともリサイクラからのデータに使用されるものであるシステム。
【請求項２３】
システムであって、
コンピューティングホストから仕様を有するコマンドを受け取る手段を有する入出力デバイスであって、当該仕様は複数の非標準仕様のうちの少なくとも１つを有し、当該非標準仕様は１若しくはそれ以上の非標準コマンド修飾子を有するものであり、
当該入出力デバイスは、さらに、前記仕様が前記非標準コマンド修飾子のうちの特定の１つを有することに応答して、前記特定の非標準コマンド修飾子に従って前記コマンドを実行する手段を有し、当該手段は、前記コマンドのデータと共に前記非標準コマンド修飾子の指示を記憶する手段を有するものである、
前記入出力デバイスと、
前記指示にアクセスして、前記データの全部または任意の部分を、再利用するのではなく削減することを決定する手段と
を有するシステム。
【請求項２４】
請求項１４、１５、または２３記載のシステムにおいて、特定の非標準修飾子を有効にするためのモード設定仕様を有するモード設定コマンドを受け取ることにより、前記モード設定コマンドの後に受け取られる標準コマンドが、任意選択で、および/または選択的に、前記特定の非標準修飾子に従って処理されるものであるシステム。
【請求項２５】
請求項１４、１５、または２３記載のシステムにおいて、前記非標準仕様のうちの少なくとも１つは、
データタイプ、
データアクセスタイプ、
データ順序付け、
データ関係、および
コマンド関係
のうちの１若しくはそれ以上を指定するシステム。
【請求項２６】
請求項１４、１５、または２３記載のシステムにおいて、前記コマンドは、少なくとも部分的に前記コンピューティングホストに接続された入出力カードのメモリデバイスから前記コンピューティングホストによって取得される位置情報を有するものであるシステム。
【請求項２７】
システムであって、
外部インターフェースを介してコンピューティングホストからコマンドを入出力デバイスで受け取る手段と、
前記コマンドのタイプを確認する手段と、
前記コマンドのタイプが読み出しコマンドであることに応答して、マップにアクセスして前記コマンドの論理ブロックアドレス（ＬＢＡ）を変換（ｔｒａｎｓｌａｔｅ）し、不揮発性メモリ（ＮＶＭ）内の所定の位置を選択的に含む変換された論理ブロックアドレス情報を取得する手段と、
前記コマンドのタイプが予めマッピングされた読み出しコマンドであることに応答して、当該予めマッピングされた読み出しコマンドの情報から、前記マップを使用せずに前記不揮発性メモリ内の前記位置を決定する手段と、
前記位置に対応するデータを返す手段と
を有し、
前記情報は、前記変換された論理ブロックアドレス情報の少なくとも一部分を有するものである、
システム。
【請求項２８】
請求項２７記載のシステムにおいて、前記位置は第１の位置であり、前記情報は第１の情報であり、当該システムは、さらに、
前記コマンドのタイプが書き込みコマンドであることに応答して、前記書き込みコマンドのデータを前記不揮発性メモリ内の第２の位置に書き込む手段と、
前記コマンドのタイプが書き込みコマンドであることに応答して、前記書き込みコマンドの論理ブロックアドレスと前記マップ内の前記第２の位置との関連付けを記憶する手段と、
前記コマンドのタイプが書き込みコマンドであることに応答して、前記第２の位置に基づいた第２の情報を含む更新情報を前記マップのシャドウコピーに送る手段と
を有し、
前記第１の情報は、少なくとも部分的に前記シャドウコピーから取得され、前記シャドウコピーは、少なくとも部分的に前記コンピューティングホストに接続された入出力カードのメモリデバイスに記憶されるものであるシステム。
【請求項２９】
システムであって、
低電力状態を開始するという指示を入出力デバイスで受け取る手段と、
前記入出力デバイスの内部状態をコンピューティングホストのシステムアクセス可能メモリに保存する手段と、
前記低電力状態を終了するという指示を前記入出力デバイスで受け取る手段と、
前記システムアクセス可能メモリから前記入出力デバイスの前記内部状態を復元する手段と
を有するシステム。
【請求項３０】
請求項２９記載のシステムにおいて、前記システムアクセス可能メモリは、前記コンピューティングホストに接続された入出力カードのメモリデバイスを有し、前記入出力デバイスの前記内部状態は、前記入出力デバイスの論理ブロックアドレス（ＬＢＡ）を前記入出力デバイスの不揮発性メモリ（ＮＶＭ）内の所定の位置と選択的に関連付けるマップの少なくとも一部分のシャドウコピーを有し、前記マップは前記不揮発性メモリに不揮発的に記憶されるものであるシステム。
【請求項３１】
システムであって、
標準コマンドと非標準修飾子の仕様とを有する拡張コマンドを入出力デバイスで受け取る手段と、
前記非標準修飾子に従って前記標準コマンドを実行する手段と
を有し、
前記非標準修飾子を使用して前記標準コマンドの実行を変更することによりシステムレベルの性能が改善されるものである
システム。
【請求項３２】
請求項３１記載のシステムにおいて、前記拡張コマンドは、前記コンピューティングホストによって少なくとも部分的に前記コンピューティングホストに接続された入出力カードのメモリデバイスから取得される位置情報を有するものであるシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願の優先権利益の主張を、（それがある場合には、適宜）添付の出願データシート、請求、または送達状において行う。本出願の種類によって許容される範囲内で、本出願はこの参照によりあらゆる目的で以下の出願を組み込むものであり、以下の出願はすべて、発明がなされた時点において本出願と所有者を同じくするものである。
【０００２】
２０１１年８月９日付で出願された、Ｅａｒｌ  Ｔ．ＣＯＨＥＮを筆頭発明者とする、「Ｉ／Ｏ  ＤＥＶＩＣＥ  ＡＮＤ  ＣＯＭＰＵＴＩＮＧ  ＨＯＳＴ  ＩＮＴＥＲＯＰＥＲＡＴＩＯＮ」という名称の、米国仮出願（整理番号第ＳＦ−１１−１５号および出願番号第６１／５２１，７３９号）；２０１１年９月６日付で出願された、Ｅａｒｌ  Ｔ．ＣＯＨＥＮを筆頭発明者とする、「Ｉ／Ｏ  ＤＥＶＩＣＥ  ＡＮＤ  ＣＯＭＰＵＴＩＮＧ  ＨＯＳＴ  ＩＮＴＥＲＯＰＥＲＡＴＩＯＮ」という名称の、米国仮出願（整理番号第ＳＦ−１１−１５Ａ号および出願番号第６１／５３１，５５１号）；および２０１１年１０月５日付で出願された、Ｅａｒｌ  Ｔ．ＣＯＨＥＮを筆頭発明者とする、「Ｉ／Ｏ  ＤＥＶＩＣＥ  ＡＮＤ  ＣＯＭＰＵＴＩＮＧ  ＨＯＳＴ  ＩＮＴＥＲＯＰＥＲＡＴＩＯＮ」という名称の、米国仮出願（整理番号第ＳＦ−１１−１５Ｂ号および出願番号第６１／５４３，６６６号）。
【背景技術】
【０００３】
分野：コンピューティングホストおよび入出力デバイスの技術の進歩が、使用の性能、効率、及び有用性の改善を提供するために必要とされる。
【０００４】
関連技術：公知である、または周知であるものとして明記されない限り、コンテキスト、定義、または比較を目的とするものを含む本明細書における技法および概念の言及は、そのような技法または概念が以前から公知であり、あるいは先行技術の一部であることの容認と解釈すべきではない。特許、特許出願、および出版物を含む、本明細書で引用されるあらゆる参照文献は（それがある場合には）、具体的に組み込まれているか否かを問わず、あらゆる目的で、この参照によりその全体が本明細書に組み込まれるものである。
【発明の概要】
【課題を解決するための手段】
【０００５】
本発明は多くの方法で実施されてよく、例えば、プロセス、製造品、装置、システム、組成物、ならびに、コンピュータ可読記憶媒体（ディスクといった光学的大容量記憶装置および／または磁気的大容量記憶装置、フラッシュストレージといった不揮発性記憶を有する集積回路など）や、プログラム命令が光通信リンクまたは電子通信リンク上で送られるコンピュータネットワークといったコンピュータ可読媒体として実施されてよい。詳細な説明では、上記の分野における使用のコスト、収益性、性能、効率、および有用性の改善を可能にする本発明の１つ若しくはそれ以上の実施形態の説明を行う。詳細な説明は、詳細な説明の残りの部分の理解を容易にするための概説を含む。概説は、本明細書で説明する概念に従うシステム、方法、製造品、およびコンピュータ可読媒体の１つ若しくはそれ以上の例示的実施形態を含む。結論の項でより詳細に論じるように、本発明は、発行される特許請求の範囲内のあらゆる可能な改変形態および変形形態を包含するものである。
【図面の簡単な説明】
【０００６】
【図１Ａ】図１Ａは、（コンピューティングホストといった）ホストとの相互運用に使用可能な（入出力記憶デバイスといった）入出力デバイスにおける動作と適合したソリッドステートディスク（Ｓｏｌｉｄ−Ｓｔａｔｅ  Ｄｉｓｋ：ＳＳＤ）コントローラを含むＳＳＤの実施形態の選択された詳細を示す図である。
【図１Ｂ】図１Ｂは、図１ＡのＳＳＤの１つ若しくはそれ以上のインスタンスを含むシステムの様々な実施形態の選択された詳細を示す図である。
【図２】図２は、論理ブロックアドレス（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ：ＬＢＡ）の論理ページ番号（Ｌｏｇｉｃａｌ  Ｐａｇｅ  Ｎｕｍｂｅｒ：ＬＰＮ）部分のマッピングの実施形態の選択された詳細を示す図である。
【図３】図３は、読み出し単位の量として測った長さを総体として有する、様々な読み出し単位数として編成された読み出しデータを生成するための読み出し単位アドレスのところの不揮発性メモリ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ：ＮＶＭ）へのアクセスの実施形態の選択された詳細を示す図である。
【図４Ａ】図４Ａは、読み出し単位の実施形態の選択された詳細を示す図である。
【図４Ｂ】図４Ｂは、読み出し単位の別の実施形態の選択された詳細を示す図である。
【図５】図５は、いくつかのフィールドを有するヘッダの実施形態の選択された詳細を示す図である。
【図６】図６は、入出力デバイスにおけるコマンドおよび任意選択のヒント情報の処理の一実施形態の選択された詳細を示す流れ図である。
【図７】図７は、入出力デバイスにおけるコマンドおよび任意選択のヒント情報の処理の別の実施形態を示す流れ図である。
【図８】図８は、入出力デバイスにおけるコマンドおよび任意選択のヒント情報の処理のさらに別の実施形態を示す流れ図である。
【図９】図９は、入出力デバイスにおけるコマンドおよび任意選択のシャドウマップ情報の処理の一実施形態を示す流れ図である。
【図１０】図１０は、コンピューティングホストにおけるシャドウマップ情報の維持の一実施形態を示す流れ図である。
【図１１】図１１は、コンピューティングホストにおけるコマンドおよび任意選択のシャドウマップ情報の発行の一実施形態を示す流れ図である。
【図１２】図１２は、入出力デバイスの休眠状態の開始および終了の一実施形態を示す流れ図である。
【図１３Ａ】図１３Ａは、入出力デバイスとコンピューティングホストとの相互運用の一実施形態をまとめて示す流れ図である。
【図１３Ｂ】図１３Ｂは、入出力デバイスとコンピューティングホストとの相互運用の一実施形態をまとめて示す流れ図である。
【０００７】
図面の参照符号の一覧
【表１】
2014522066.tif 000003
2014522066.tif 000004
2014522066.tif 000005
2014522066.tif 000006
2014522066.tif 000007
2014522066.tif 000008
【発明を実施するための形態】
【０００８】
本発明の１つ若しくはそれ以上の実施形態の詳細な説明を、以下で、本発明の選択された詳細を図示する添付の図を併用して行う。本発明を実施形態との関連で説明する。実施形態は、本明細書では、単なる例示であると理解されるものであり、本発明は、明確に、本明細書中の実施形態のいずれか若しくは全部に、またはいずれか若しくは全部によって限定されるものではなく、本発明は、多数の代替形態、改変形態、および均等物を包含するものである。説明が単調にならないように、様々な言葉によるラベル（これに限定されるものではないが、最初の、最後の、ある一定の、様々な、別の、他の、特定の、選択の、いくつかの、目立ったなど）が実施形態のセットを区別するために適用される場合がある。本明細書で使用する場合、そのようなラベルは、明確に、質を伝えるためのものでも、いかなる形の好みや先入観を伝えるためのものでもなく、単に、別々のセットを都合よく区別するためのものにすぎない。開示するプロセスのいくつかの動作の順序は本発明の範囲内で変更可能である。多様な実施形態がプロセス、方法、および／またはプログラム命令の各特徴の差異を説明するのに使用される場合は常に、所定の、または動的に決定される基準に従って、複数の多様な実施形態にそれぞれ対応する複数の動作モードの１つの静的選択および／または動的選択を行う他の実施形態が企図されている。以下の説明では、本発明の十分な理解を提供するために、多数の具体的詳細を示す。それらの詳細は例として示すものであり、本発明は、それらの詳細の一部または全部がなくても、特許請求の範囲に従って実施されうる。わかりやすくするために、本発明に関連した技術分野で公知の技術資料は、本発明が不必要に曖昧になることのないように詳細に説明していない。
【０００９】
概説
この概説は、詳細な説明のより迅速な理解を助けるために含まれるにすぎず、本発明は、（それがある場合には、明示的な例を含む）この概説で提示される概念だけに限定されるものではなく、どんな概説の段落も、必然的に、主題全体の縮約された見方であり、網羅的な、または限定的な記述であることを意味するものではない。例えば、以下の概説は、スペースおよび編成によりある一定の実施形態だけに限定される概要情報を提供するものである。特許請求の範囲が究極的にそこに導かれることになる実施形態を含む多くの他の実施形態があり、それらを本明細書の残りの部分にわたって論じる。
【００１０】
頭字語
ここで定義される様々な縮めた表現の略語（例えば、頭字語）の少なくとも一部が本明細書において使用される特定の要素を指す。
【００１１】
【表２】
2014522066.tif 000009
2014522066.tif 000010
2014522066.tif 000011
【００１２】
ある実施形態では、ソリッドステートディスク（ＳＳＤ）といった入出力デバイスが、ホストインターフェースを介して、本明細書では単にホストとも呼ぶホスト・コンピューティング・システムに接続される。様々な実施形態によれば、接続は、ＰＣＩｅ、ＳＡＴＡ、ＳＡＳ、ＵＳＢ、イーサネット（登録商標）、ファイバチャネル、または２台の電子デバイスを接続するのに適した任意の他のインターフェースを含む１若しくはそれ以上のホストインターフェースを介したものである。別の実施形態では、ホストインターフェースは、電気信号インターフェースおよびホストプロトコルを含む。ホストプロトコルは、入出力デバイスにデータを送り、入出力デバイスからデータを受け取るコマンドを含む、入出力デバイスと通信するための標準コマンドを定義する。
【００１３】
ホスト・コンピューティング・システムは、本明細書でコンピューティングホストと呼ぶ（または単に「ホスト」と呼ぶ場合もある）１若しくはそれ以上の処理要素を含む。様々な実施形態によれば、コンピューティングホストは、オペレーティングシステムおよび／またはハイパーバイザといった監視ソフトウェア、監視ソフトウェアと入出力デバイスとの間で通信するためのドライバ、アプリケーションソフトウェア、ならびにＢＩＯＳ、のうちの１若しくはそれ以上を実行する。別の実施形態では、ドライバの一部分の一部または全部またはコピーがＢＩＯＳ、オペレーティングシステム、ハイパーバイザ、およびアプリケーションのうちの１若しくはそれ以上に組み込まれる。さらに別の実施形態では、アプリケーションは、バイパスモードでドライバを介してコマンドを送ることによって、および/または入出力デバイスとの直接通信を有することによって、入出力デバイスとより直接的に通信することができるようになっている。入出力デバイスとの直接通信を有するアプリケーションの一例は、ＰＣＩｅ入出力デバイスの仮想機能（ＶＦ）によって提供される。ドライバは入出力デバイスの一次機能と通信して入出力デバイスを全体にわたって構成し、１若しくはそれ以上のアプリケーションが、それぞれの仮想機能によって入出力デバイスと直接通信する。仮想機能は、アプリケーションの各々が入出力デバイスの少なくとも一部分をアプリケーションの専用入出力デバイスとして扱うことを可能にする。
【００１４】
ホストプロトコルの標準コマンドは、ホストプロトコルが標準化される時点の入出力デバイスの特徴および機能のセットを提供する。入出力デバイスの中には、標準ホストプロトコルでサポートされていない特徴および／または機能を有し、よって、コンピューティングホストが標準ホストプロトコルを使用して制御することができないものがある。したがって、ある実施形態では、非標準の特徴および／または機能が、以下のうちの１若しくはそれ以上を含む技術によってホストプロトコルに追加される：予約コマンドコードを使用すること；ベンダ特有のコマンドを使用すること；既存のコマンド内の予約フィールドを使用すること；不使用のアドレスビットといった、特定の入出力デバイスによって使用されないコマンドのある特定のフィールド内のビットを使用すること；ＳＡＴＡにおけるＳＥＴ  ＦＥＡＴＵＲＥＳコマンドによるものと同様に、機能レジスタに新しい特徴を追加すること；コマンドを集約し、および/または融合することによるもの；ならびに当分野で公知の他の技術。非標準の特徴および／または機能の使用は、任意選択で、入出力デバイスと通信することができるようにした非標準のドライバおよび／またはアプリケーションの使用と組み合わされる。
【００１５】
本明細書において、標準コマンドの非標準修飾子とは、上記の技術のいずれかを使用して、標準ホストプロトコルでサポートされていない非標準の特徴および／または機能で標準コマンドを拡張することを指す。様々な実施形態では、非標準修飾子（またはその部分）を、任意選択で、（標準）コマンドによって使用され、または（標準）コマンドと共に提供されるヒントと呼ぶ。第１の例では、非標準修飾子は、ホストプロトコル内でコマンドの一部として符号化され、もっぱらそのコマンドのみに影響を及ぼす（「一度に１つ」のヒントなど）。第２の例では、非標準修飾子は、ホストプロトコル内でコマンドの一部として符号化され、例えば後続のコマンドのうちの１つに対する別の非標準修飾子によって一時的に使用不可とされない限り、または、例えば別のコマンドに対する別の非標準修飾子によって、すべてのそれ以後のコマンドについて使用不可とされない限り、後続のコマンドに対して有効のままである（「スティッキーな」ヒントなど）。第３の例では、非標準修飾子は、ＳＡＴＡにおけるＳＥＴ  ＦＥＡＴＵＲＥＳコマンドによるものと同様に、モード設定コマンドによって構成レジスタにおいて使用可能とされ、例えば別のモード設定コマンドによって明示的に使用不可とされない限り有効のままである。これらの例の多くの組み合わせおよび変形が可能である。
【００１６】
様々な実施形態によれば、非標準の特徴および／または機能は、以下のうちの１若しくはそれ以上に影響を及ぼす：コマンドの実行；コマンドの能力および／または性能；コマンドと関連付けられたデータの扱いおよび／または処理；複数のコマンド間の関係；複数のコマンドのデータ間の関係；コマンドのデータが切り捨てられるという指示；コマンドのデータが訂正不能であるという指示；コマンドのデータタイプの仕様；コマンドのデータのデータアクセスタイプの仕様；複数のコマンドのデータについてのデータ順序付けの仕様；複数のコマンドのデータ間のデータ関係の仕様；任意の他のデータ値、データタイプ、データシーケンス、データ関係、データ宛先、またはデータプロパティの仕様；能力および／または性能といった入出力デバイスのプロパティ；ならびに、入出力デバイスの動作および／またはコマンドおよび／若しくはデータの処理、および／またはデータの記憶、取得および／若しくは再利用に影響を及ぼす任意の他の特徴および／または機能。
【００１７】
ある実施形態および／または使用シナリオでは、コマンドが複数のＬＢＡのうちの１つを含み、マップが、任意選択で、および/または選択的に、コマンドのＬＢＡをマップの複数のエントリのうちの１つと関連付ける。マップのエントリの各々は、入出力デバイスのＮＶＭ内の位置、および／またはＬＢＡと関連付けられたデータがＮＶＭに存在しない（割り当てられていない、割り当て解除されている、削除されている、ＮＶＭから切り捨てられているなど）という指示を含む。様々な実施形態によれば、コマンドを受け取ったことに応答して、入出力デバイスは以下のうちの１若しくはそれ以上を実行する：ＬＢＡと関連付けられたマップのエントリにアクセスする；ＬＢＡと関連付けられたマップのエントリにコマンドの非標準修飾子の指示を記憶する；ＬＢＡと関連付けられたマップのエントリから前のコマンドの非標準修飾子の指示を取得する；およびコマンドを受け取ったことに応答して入出力デバイスによって実行される他の動作。マップのエントリからの非標準修飾子を記憶し、および/または取得することにより、非標準修飾子の影響を、ＬＢＡのうちの特定のものと関連付け、および/または複数のコマンドにわたって持続させることが可能になる。例えば、コマンドは、複数のデータバンドのうちの１固定データバンドであるデータ宛先を指定する特定の非標準修飾子を含む。指定の固定データバンドにコマンドのデータを記憶することに加えて、特定の非標準修飾子の指示も、コマンドのＬＢＡと関連付けられたマップのエントリに記憶される。コマンドのデータのその後の再利用動作では、コマンドのＬＢＡと関連付けられたマップのエントリにアクセスし、特定の非標準修飾子の指示に従って、再利用動作にデータを再利用して指定の固定データバンド戻させることが可能になる。
【００１８】
データのタイプを指定する非標準修飾子の例には、圧縮不能といったデータの圧縮性の仕様（ｓｐｅｃｉｆｉｃａｔｉｏｎ）や、データベースジャーナルとしての使用といったデータの使用モデルの仕様が含まれる。場合によっては、（仕様や、マップに記録されている以前に提供された仕様といった）特定のタイプのものであると（例えば、入出力デバイスおよび／またはホストによって）識別されたデータは、任意選択で、および/または選択的に、入出力デバイスによってより効率よく処理される。ある使用シナリオでは、例えば、データベース・ジャーナル・タイプのものであると識別されたデータは、任意選択で、および/または選択的に、複数のデータバンドのうちの、データベース・ジャーナルの類型データのために確保されたデータベース・ジャーナル用データバンドに記憶される。様々な実施形態において、データベース・ジャーナル用データバンドは、固定サイズのものであり、一杯になると、データベース・ジャーナル用データバンド内の最も古いデータは、任意選択で、および/または選択的に、自動削除される。
【００１９】
データアクセスタイプを指定する非標準修飾子の例には、読み出し／書き込みアクセスタイプの仕様、略読み出しアクセスタイプ（ｒｅａｄ−ｍｏｓｔｌｙ  ａｃｃｅｓｓ  ｔｙｐｅ）の仕様、略書き込みアクセスタイプの仕様（ｗｒｉｔｅ−ｍｏｓｔｌｙ  ａｃｃｅｓｓ  ｔｙｐｅ）、追記型（読み出し専用ともいう）アクセスタイプの仕様、および一時アクセスタイプの仕様が含まれる。場合によっては、（仕様や、マップに記録されている以前に提供された仕様といった）特定のアクセスタイプを有するものであると（例えば、入出力デバイスおよび／またはホストによって）識別されたデータは、任意選択で、および/または選択的に、入出力デバイスによってより効率よく処理される。第１の例では、データが読み取られ、または書き込まれる相対頻度を特定することは、任意選択で、および/または選択的に、入出力デバイスが、データの書き込み、アクセス、読み出し、および／または再利用をより効率よく可能にするようなやり方で、および/またはそのような位置にデータを都合よく記憶することを可能にする。第２の例では、入出力デバイスによって追記型であると識別されているデータへの標準書き込みアクセスが、任意選択で、および/または選択的に、誤りとして扱われる。
【００２０】
ある実施形態では、一時アクセスタイプの仕様は、データが入出力デバイスによって記憶されることを可能にし、さらに、任意選択で、および/または選択的に、入出力デバイスが、コンピューティングホストからそうするよう求めるコマンドを受け取っていなくても、データを削除し、および/または削減すること（「自動削減」など）を可能にする。例えば、ストレージの特定の部分が一時的であると識別することが、任意選択で、および/または選択的に、入出力デバイスが、ストレージのその部分を再利用するのではなく削減することを可能にする。様々な実施形態によれば、入出力デバイスによって削除され、または削減された一時データへのコンピューティングホストによるその後のアクセスは、以下のうちの１若しくはそれ以上を返す：データが削除され、または削減されたという指示；誤り指示；特定のパターンおよび／または値を含むデータ；ならびにデータが入出力デバイスによって削除され、または削減されたというコンピューティングへの任意の他の指示。
【００２１】
様々な実施形態において、リセット後一時アクセスタイプの仕様は、データが入出力デバイスによって記憶されることを可能にし、さらに、任意選択で、および/または選択的に、入出力デバイスが、コンピューティングホストからそうするよう求めるコマンドを受け取っていなくても、ただし、入出力デバイスおよび／または入出力デバイスを含むシステムの後続の電源サイクルおよび／またはリセットの後に限って、データを削除し、および/または削減すること（「自動切り捨て」など）を可能にする。例えば、ページファイルといったある特定のオペレーティング・システム・データおよび／またはメムキャッシュディー（ｍｅｍｃａｃｈｅｄ）アプリケーションのデータといった特定のアプリケーションのデータは、システムの電源サイクルおよび／またはリセットの後で無効になる。ある実施形態では、リセット後一時アクセスタイプの指示は、２ビットカウンタといったカウンタを含む。グローバルカウンタの値を使用して、リセット後一時アクセスタイプの指示のカウンタが初期化される。グローバルカウンタは、入出力デバイスおよび／またはシステムの電源サイクルおよび／またはリセットごとに増分される。リセット後一時アクセスタイプの指示を有する、入出力デバイスのＮＶＭの一部分といったストレージの特定の部分が、リセット後一時アクセスタイプの指示のカウンタがグローバルカウンタと一致するかどうかに従って、再利用のためにストレージのその特定の部分を処理するときに、選択的に切り捨てられる。さらに別の実施形態では、複数のグローバルカウンタがあり、グローバルカウンタの各々は、任意選択で、および/または選択的に、独立に増分され、リセット後一時アクセスタイプの指示は、グローバルカウンタの個々のカウンタの仕様をさらに含む。ビットマスクや固定値といったカウンタ以外の技術が、様々な実施形態において、ストレージの特定の部分が再利用されるときに選択的に切り捨てられるべきであるかどうか識別するのに使用される。
【００２２】
さらに別の実施形態では、電源サイクルおよび／またはリセットの指示は、リセット後一時アクセスタイプの指示を有するストレージの部分が後で再利用のために処理されるときにストレージのその部分が切り捨てられることが可能であることを指示するためにコンピューティングホストから提供される信号である。第１の例では、仮想機械を用いる環境において、コンピューティングホストから提供される信号は、仮想機械のリセットおよび／または終了の指示である。第２の例では、メムキャッシュディーアプリケーションを用い、コンピューティングホストから提供される信号は、メムキャッシュディーアプリケーションのリセットおよび／または終了の指示である。第３の例では、電源サイクルおよび／またはリセットの指示は、入出力デバイスの仮想機能の機能レベルのリセットである。ある使用シナリオでは、ＬＢＡの特定の範囲といった、仮想機能と関連付けられた入出力デバイスのＮＶＭの部分だけが、機能レベルのリセットによる影響を受ける。
【００２３】
データ順序付けを指定する非標準修飾子の例には、順次データ順序付けの仕様、およびアトミックデータ順序付けの仕様が含まれる。場合によっては、（仕様や、マップに記録されている以前に提供された仕様といった）特定のデータ順序付けのものであると（例えば、入出力デバイスおよび／またはホストによって）識別されたデータは、任意選択で、および/または選択的に、入出力デバイスによってより効率よく処理される。第１の例では、データが順次データ順序付けに属すると特定することは、任意選択で、および/または選択的に、入出力デバイスが、データの書き込み、アクセス、読み出し、および／または再利用をより効率よく可能にするようなやり方で、および/またはそのような位置にデータを都合よく記憶することを可能にする。第２の例では、データがアトミックデータ順序付けに属すると特定することは、任意選択で、および/または選択的に、入出力デバイスが、アトミックデータ順序付けのデータを１単位として都合よく扱うことを可能にし、アトミックデータ順序付けのデータの全部がコンピューティングホストによって識別可能であるように正常に書き込まれること、またはアトミックデータ順序付けのデータが全く書き込まれないことを保証することを可能にする。ある実施形態では、データのアトミックシーケンスを書き込むことは、シーケンスの開始および／または終了を指示するログ情報といったメタデータを書き込むことを含む。
【００２４】
データ関係を指定する非標準修飾子の例には、複数のデータ項目間の読み出しおよび／または書き込みの関連付けの仕様が含まれる。場合によっては、（仕様や、マップに記録されている以前に提供された仕様といった）特定のデータ関係のものであると（例えば、入出力デバイスおよび／またはホストによって）識別されたデータは、任意選択で、および/または選択的に、入出力デバイスによってより効率よく処理される。例えば、２つのデータ項目間の読み出しデータ関係を特定することは、任意選択で、および/または選択的に、入出力デバイスが、データ項目のうちの第１の項目が読み取られるときに、データ項目のうちの第２の項目を都合よくプリフェッチすることを可能にする。ある使用例および／またはシナリオでは、第１のデータ項目はファイルシステム内のファイルのラベルであり、第２のデータ項目はファイルの対応する範囲である。様々な実施形態によれば、データ関係は以下のうちの１若しくはそれ以上である：１対１；１対多；多対１；多対多；書き込みコマンドと比較すると読み出しコマンドについては異なるなど、コマンドによって異なるデータ関係；およびデータ項目間の任意の他の関係。
【００２５】
データ宛先を指定する非標準修飾子の例には、（特定のフラッシュ記憶要素や、例えばＮＶＭの要素間でのデータ拡散を可能にするためのフラッシュ記憶要素の集合体といった）ＮＶＭの特定の部分の仕様、階層型ストレージ層の仕様、ストレージのタイプの仕様、および複数のデータバンドのうちの１つの仕様が含まれる。場合によっては、（仕様や、マップに記録されている以前に提供された仕様といった）特定のデータ宛先のものであると（例えば、入出力デバイスおよび／またはホストによって）識別されたデータは、任意選択で、および/または選択的に、入出力デバイスによってより効率よく処理される。第１の例では、データが指定のタイプのストレージに優先的に記憶されていることを特定することは、入出力デバイスが、任意選択で、および/または選択的に、ＳＬＣフラッシュ対ＭＬＣフラッシュ、フラッシュ対ＭＲＡＭ、あるいは揮発性メモリ対ＮＶＭといった、異なる特性の複数のメモリのうちの１つにデータを都合よく記憶することを可能にする。メモリの異なる特性は以下のうちの１若しくはそれ以上を含む：揮発性；アクセス時間、待ち時間、および／またはバンド幅といった性能；読み出し、書き込み、または消去の時間；能力；信頼性；寿命；低レベル誤り訂正および／または冗長性機能；高レベル誤り訂正および／または冗長性機能；ならびに他のメモリ特性。第２の例では、データが複数のデータバンドのうちの指定のデータバンドに記憶されるべきであることを特定することは、任意選択で、および/または選択的に、入出力デバイスが、データを指定のデータバンドに都合よく記憶して、書き込み速度、再利用速度、再利用頻度、書き込み増幅、およびデータストレージの他の特性のうちの１若しくはそれ以上を改善することを可能にする。
【００２６】
コマンド関係を指定する非標準修飾子の例には、コマンド間の好ましい、または必要とされる相対順序を課すコマンド優先順位の仕様、および少なくともいくつかのタイプのコマンド間の境界を課すコマンドバリアの仕様が含まれる。例えば、書き込みコマンド・バリア・タイプのコマンドバリアは、読み出しコマンドに対しては透過的であるが、書き込みコマンドに対しては非透過的であり、書き込みコマンドバリアが、すべての以前に実行依頼された書き込みコマンドが書き込みコマンドバリアの完了の前に完了するよう保証することを可能にする。
【００２７】
集約され、および/または融合されたコマンドの例は、１単位として扱われ、実行されないかまとめて実行されるかのどちらかである、２若しくはそれ以上のコマンドの組み合わせである。例えば、非標準修飾子は、融合コマンドシーケンスの開始、継続、または終了を指定する。融合コマンドシーケンスのコマンドは、すべてのコマンドが正常に完了しない限り、コマンドのいずれの影響も現れないようなアトミックなやり方で実行される。融合コマンドシーケンスの一例が比較−書き込みシーケンスであり、このシーケンスでは、後続の書き込みコマンドの影響は、先行する比較コマンドが、例えば比較が等しいことによって正常に行われた場合に限って現れる。様々な実施形態によれば、融合コマンドシーケンスのコマンドは、順次に、並列に、ホストプロトコルの順序付け規則によって決定される順序で、コマンドが入出力デバイスによって受け取られる順序で、および任意の順序で、のうちの１若しくはそれ以上のとして実行される。
【００２８】
一部の実施形態では、ＳＳＤといった入出力装置がＳＳＤコントローラを含む。ＳＳＤコントローラはホストインターフェースとＳＳＤのＮＶＭとの間のブリッジとして働き、ＳＳＤのホストインターフェースを介してコンピューティングホストから送られるホストプロトコルのコマンドを実行する。コマンドの少なくとも一部は、ＳＳＤに、コンピューティングホストから送られたデータおよびコンピューティングホストに送られるデータについて、それぞれ、ＮＶＭの書き込みおよび読み出しを行うよう指図する。別の実施形態では、ＳＳＤコントローラは、マップを使用してホストプロトコルのＬＢＡとＮＶＭ内の物理的記憶アドレスとを変換することができるようになっている。別の実施形態では、マップの少なくとも一部分が、入出力装置の専用記憶（コンピューティングホストからは見えない）に使用される。例えば、コンピューティングホストからアクセスできないＬＢＡの部分が、入出力装置によって、ログ、統計、または他の専用データへのアクセスを管理するのに使用される。
【００２９】
様々な実施形態によれば、マップは、１レベルマップ、２レベルマップ、マルチレベルマップ、直接マップ、連想マップ、およびホストプロトコルのＬＢＡをＮＶＭ内の物理的記憶アドレスと関連付ける他の手段のうち１若しくはそれ以上である。例えば、ある実施形態では、２レベルマップは、ＬＢＡの第１の関数を、複数の第２レベル・マップ・ページのうち１つのＮＶＭ内のそれぞれのアドレスと関連付ける第１レベルマップを有し、第２レベル・マップ・ページの各々は、ＬＢＡの第２の関数をＬＢＡに対応するデータのＮＶＭ内のそれぞれのアドレスと関連付ける。別の実施形態では、ＬＢＡの第１の関数およびＬＢＡの第２の関数の例は、第２レベル・マップ・ページの各々に含まれる固定数のエントリによって除算されるときに得られる商および余りである。複数の第２レベル・マップ・ページをまとめて第２レベルマップと呼ぶ。本明細書では、マップの１若しくはそれ以上のエントリという場合、それは、１レベルマップ、２レベルマップの第１レベル、２レベルマップの第２レベル、マルチレベルマップの任意のレベル、またはエントリを有する任意の他の種類のマップを含む、任意の種類のマップの１若しくはそれ以上のエントリをいう。
【００３０】
様々な実施形態によれば、第２レベルマップ（またはマルチレベルマップの低レベル）のマップページの各々は、マップページの他のものと同数のエントリを含む、マップページの少なくとも他のいくつかと異なる数のエントリを含む、マップページの他のものと同じ粒度のエントリを含む、マップページの他のものと異なる粒度のエントリを含む、すべて同じ粒度ものであるエントリを含む、複数の粒度のものであるエントリを含む、マップページの内容の書式および／またはレイアウトを指定するそれぞれのヘッダを含む、ならびにマップページのエントリを表す任意の他の書式、レイアウト、または編成を有する、のうち１若しくはそれ以上である。例えば、第１の第２レベル・マップ・ページは、１エントリ当たり４ＫＢの粒度の仕様を有し、第２の第２レベル・マップ・ページは、１エントリ当たり８ＫＢの粒度、および第１の第２レベル・マップ・ページの半数だけのエントリの仕様を有する。
【００３１】
別の実施形態では、高レベルマップのエントリは、対応する低レベル・マップページの書式および／またはレイアウト情報を含む。例えば、第１レベルマップ内のエントリの各々は、関連付けられた第２レベル・マップ・ページ内のエントリについての粒度仕様を含む。
【００３２】
ある実施形態では、マップは複数のエントリを有し、エントリの各々は、１若しくはそれ以上のＬＢＡを、ＬＢＡのデータが記憶されているＮＶＭ内のそれぞれの位置を選択的に含む情報と関連付ける。例えば、ＬＢＡは５１２Ｂのセクタを指定し、マップ内の各エントリは、ＬＢＡの並んだ８セクタ（４ＫＢ）領域と関連付けられている。
【００３３】
様々な実施形態によれば、マップのエントリの情報は、ＮＶＭ内の位置、ＮＶＭ内の読み出し単位のアドレス、ＮＶＭに記憶された関連付けられたＬＢＡのデータを取得するために読み出すべき読み出し単位の数、ＮＶＭに記憶された関連付けられたＬＢＡのデータのサイズであって、任意選択で、および/または選択的に１バイトより大きい粒度を有するサイズ、関連付けられたＬＢＡのデータが切り捨てられているといった理由で、関連付けられたＬＢＡのデータがＮＶＭに存在しないという表示、関連付けられたＬＢＡのデータに適用された任意の非標準修飾子を含む、関連付けられたＬＢＡのデータの属性、および関連付けられたＬＢＡのデータの任意の他のメタデータ、属性、または性質のうち１若しくはそれ以上を含む。
【００３４】
ある実施形態では、ＮＶＭ内のアドレスは、アドレスのうち１つを表すのに必要とされるビット数を低減させるために領域へグループ化される。例えば、入出力装置のＬＢＡが６４領域に分割され、ＮＶＭが、ＬＢＡ領域の各々に１つずつ、６４領域に分割される場合には、特定のＬＢＡと関連付けられたマップエントリは、必要とするアドレスビット数が６少なくて済む。というのは、ＮＶＭ内の領域のうち１つが特定のＬＢＡの領域によって決定されうるからである。様々な実施形態によれば、ＬＢＡの領域とＮＶＭの領域との間の関連付けは、同等性、１対１数値関数といった直接的関連付け、表ルックアップ、動的マッピング、および２セットの数を関連付ける任意の他の方法のうち１若しくはそれ以上によるものである。
【００３５】
様々な実施形態では、ＮＶＭ内の位置は、複数の読み出し単位のうち１つのアドレス、ならびに読み出し単位での長さおよび／または範囲を含む。長さは、ＮＶＭに記憶された複数のデータ項目のうち特定の１つのサイズであり、マップのエントリと関連付けられた特定のデータ項目は長さを含む。様々な実施形態によれば、長さは、１バイト、１より大きいバイト、１読み出し単位、読み出し単位の指定された小部分、データ項目のうち１つの最大許容圧縮率に従った粒度、および記憶使用量を追跡するのに使用される任意の他の粒度のうち１若しくはそれ以上の粒度を有する。範囲は、特定のデータ項目のそれぞれの部分を記憶する、整数の読み出し単位といった読み出し単位の数である。別の実施形態および／または使用シナリオでは、読み出し単位の範囲内の最初の読み出し単位および／または読み出し単位の範囲内の最後の読み出し単位は、任意選択で、および/または選択的に、データ項目のうち複数のデータ項目の一部または全部を記憶する。ある実施形態および／または使用シナリオでは、長さおよび／または範囲は、例えば、長さ（長さおよび／または範囲が符号化されるコンテキストではサイズともいう）を範囲からのオフセットとして記憶することによって、符号化されて記憶される。ある実施形態および／または使用シナリオでは、長さおよび／または範囲の未使用の符号化が、非標準修飾子の指示や、関連付けられたデータ項目がＮＶＭに存在するかどうかについての指示といった追加情報を符号化する。
【００３６】
ＮＶＭ内の位置をアドレスおよび長さとして符号化することにより、ＮＶＭに記憶されたデータをサイズ変更することが可能になる。例えば、第１の４ＫＢ領域は４００Ｂのサイズに圧縮され、全体が単一の読み出し単位に記憶され、１読み出し単位の長さを有し、他方第２の４ＫＢ領域は圧縮不能であり、１より大の読み出し単位にまたがり、１より大の読み出し単位の長さを有する。別の実施形態では、ＬＢＡの領域と関連付けられた記憶の読み出し単位での長さおよび／または範囲を有することにより、ＮＶＭの必要な部分だけを読み出すことでＬＢＡの領域のデータを検索することを可能にする。
【００３７】
ある実施形態では、マップのエントリの各々は、エントリと関連付けられたＬＢＡの領域の属性を指定する、メタデータともいう情報を含む。別の実施形態では、メタデータの少なくとも一部は、例えば、領域の複数のＬＢＡの各々について別々のメタデータ仕様を有することによって、領域の粒度より細かい粒度ものである。様々な実施形態によれば、メタデータは、領域と関連付けられたＮＶＭ内のデータに適用可能な、および/または領域と関連付けられたＮＶＭ内のデータの書き込み、データへのアクセス、データの読み出し、および／若しくはデータの再利用を変更し、および/または制御するのに使用されるべき１若しくはそれ以上の非標準修飾子を含む。
【００３８】
コマンドの非標準修飾子に応答してメタデータをマップのエントリに記憶することの一例として、拡張書き込みコマンドは、ＬＢＡ、および書き込みコマンドのデータが一時的であることを指定する非標準修飾子を含む。書き込みコマンドのデータがＮＶＭに記憶され、ＬＢＡと関連付けられたマップの特定のエントリが、書き込みコマンドのデータのＮＶＭ内の位置、およびＬＢＡと関連付けられたデータの一時指定の指示を含むように更新される。マップのその特定のエントリにアクセスする、後続のコマンドや、再利用などの内部動作といった後続の動作は、ＬＢＡと関連付けられたデータの一時指定の指示を決定し、ＬＢＡと関連付けられたデータの一時指定の指示が存在する場合には異なるやり方で実行することができる。例えば、ＬＢＡと関連付けられたデータの一時指定の指示を有するＬＢＡの再利用は、ある実施形態では、ＬＢＡと関連付けられたデータを再利用するのではなく、ＬＢＡと関連付けられたデータを削減することができるようになっている。
【００３９】
ある実施形態では、入出力デバイスは、ＤＲＡＭといった外部メモリを含み、外部メモリは、例えばＤＤＲ２またはＤＤＲ３インターフェースを介して、入出力デバイスの要素に直接接続される。様々な実施形態によれば、外部メモリは、以下のうちの１若しくはそれ以上のために使用される：入出力デバイスのマップの一部または全部を記憶するため；入出力デバイスのマルチレベルマップのレベルのうちの１若しくはそれ以上を記憶するため；入出力デバイスに送られた書き込みデータをバッファするため；入出力デバイスの内部状態を記憶するため；および入出力デバイスの任意の他のメモリストレージ。例えば、外部メモリは、マップへのアクセスを提供するのに使用されるが、外部メモリが揮発性である場合には、更新がＮＶＭ内のマップに選択的に記憶される。様々な実施形態および／または使用シナリオにおいて、更新は、任意選択で、条件付きで、および/または選択的に、即時に記憶され、および/または遅延される。別の実施形態および／または使用シナリオでは、すべての更新が記憶される。別の実施形態および／または使用シナリオでは、更新のうちの一部が（例えば、より古い更新が、そのより古い更新を記憶する前により新しい更新に取って代わられているために、または更新のうちの１若しくはそれ以上の記憶を省略することを可能にする回復技術のために）記憶されない。様々な実施形態によれば、外部メモリは以下のうちの１若しくはそれ以上である：ＳＲＡＭである；ＤＲＡＭである；ＭＲＡＭまたは他のＮＶＭである；ＤＤＲインターフェースを有する；ＤＤＲ２またはＤＤＲ３インターフェースを有する；任意の他のメモリインターフェースを有する；および任意の他の揮発性または不揮発性の外部メモリデバイスである。
【００４０】
マルチレベルマップを有するいくつかの実施形態といった別の実施形態では、マップの下位レベルが、入出力デバイスのＬＢＡと関連付けられたデータといったコンピューティングホストからのデータと共に入出力デバイスのＮＶＭに記憶され、入出力デバイスは、任意選択で、および/または選択的に、直接接続されたＤＲＡＭを利用しない。マップの下位レベルのエントリへのアクセスは、少なくともときどきは、ＮＶＭを使用して行われる。
【００４１】
ある実施形態では、マップのシャドウコピーがコンピューティングホストのメモリに記憶される。様々な実施形態において、入出力デバイスは、マップのシャドウコピーや内部状態といった情報を、コンピューティングホストのメモリに記憶する。様々な実施形態によれば、コンピューティングホストのメモリは、以下のうちの１若しくはそれ以上である：プロセッサに接続されたＤＲＡＭメモリといったコンピューティングホストのメインメモリ；コンピューティングホストのシステムアクセス可能メモリ；コンピューティングホストの入出力空間メモリ；コンピューティングホストのＰＣＩｅアドレス指定可能メモリ；ＤＲＡＭメモリやＳＲＡＭメモリといった揮発性メモリ；フラッシュメモリやＭＲＡＭメモリといったＮＶＭ；入出力デバイスからアクセス可能であり、入出力デバイスに直接接続されていない任意のメモリ；および入出力デバイスとコンピューティングホストの両方からアクセス可能な任意のメモリ。
【００４２】
様々な実施形態によれば、マップのシャドウコピーは、以下のうちの１若しくはそれ以上を含む：マップのエントリのうちの少なくともいくつか；マップのすべてのエントリ；マップの対応するエントリのサブセットを含むエントリ；マップの対応するエントリに従った情報を含むエントリ；マップのエントリに存在しない有効な指示および／または他の情報を含むエントリ；２レベルマップの第２レベルのエントリに対応するエントリのみ；マルチレベルマップの最低レベルのエントリに対応するエントリのみ；２レベルマップの第２レベルのページに対応するページ構造といったマップのページ構造に対応するページ構造；ならびにマップと論理的に整合性を有する任意の構造。
【００４３】
別の実施形態では、マップのシャドウコピーは、以下のうちの１若しくはそれ以上を有する：マップの対応するエントリと同じ書式を有するエントリ；マップの対応するエントリと類似した書式を有するエントリ；およびマップの対応するエントリと異なる書式を有するエントリ。第１の例では、２レベルマップの第２レベルのページがＮＶＭに圧縮形式で記憶され、マップの第２レベルのシャドウコピーが非圧縮形式で記憶される。第２の例では、マップのシャドウコピーのエントリのうちの１若しくはそれ以上を含むマップのシャドウコピーの複数の部分の各々が、マップに存在しない有効な指示を有する。有効な指示は、それらの部分が独立に初期化され、および/または更新されることを可能にする。第３の例では、マップのシャドウコピーのエントリの各々が、エントリと関連付けられたＬＢＡのデータが１若しくはそれ以上の記憶層のうちのどれに存在するか指示する、マップに存在しない情報を有する。第４の例では、マップのエントリの各々が、エントリと関連付けられたＬＢＡのデータのアーカイブ状態を指示する、マップのシャドウコピーに存在しない情報を有する。第５の例では、マップのシャドウコピーおよび／またはマップは、各エントリと関連付けられたＬＢＡのデータのストレージ層を指示することができるようになっている。第６の例では、マップのシャドウコピーおよび／またはマップは、ホストによって読み出し可能な、および/または書き込み可能な、１エントリ当たり１若しくはそれ以上のビットを含む。第７の例では、マップのエントリの各々が、それぞれの長さおよびそれぞれの範囲を含み、マップのシャドウコピーの対応するエントリの各々が、それぞれの範囲を含み、それぞれの長さを含まない。
【００４４】
ある実施形態では、入出力デバイスの電源オンやリセットといったリセットイベント時に、マップの初期シャドウコピーがコンピューティングホストのメモリに記憶される。様々な実施形態によれば、マップの初期シャドウコピーは、以下のうちの１若しくはそれ以上である：すべて無効；マップのコピー；マルチレベルマップの１つ若しくは複数のレベルのコピー；最初に使用されるものとして識別された部分といった、マップの少なくとも一部分のコピー；およびマップと整合性を有する任意の状態。別の実施形態では、マップのシャドウコピーは、ＬＢＡが参照される際に動的に更新される。第１の例では、ＬＢＡに対応するマップのシャドウコピー内のエントリが、ＬＢＡが最初にアクセスされるときに、初期状態から更新される。第２の例では、ＬＢＡに対応するマップのシャドウコピーの一部分が、ＬＢＡが最初にアクセスされるときに、初期状態から更新される。引き続き第２の例では、この部分は、ＬＢＡと関連付けられたエントリを含む第２レベルのマップページに対応するエントリといった、マップのシャドウコピーの複数のエントリを含む。
【００４５】
ある実施形態では、入出力デバイスによって受け取られる１若しくはそれ以上のコマンドの各々は、入出力デバイスがコマンドの実行の少なくとも一部分としてマップを更新することを可能にする。これら１若しくはそれ以上のコマンドを、本明細書では、マップ更新コマンドと呼ぶ。様々な実施形態によれば、マップ更新コマンドは、書き込みコマンド、切り捨てコマンド、マップの少なくとも一部分を無効にするコマンド、およびマップを変更することができるようにした任意の他のコマンド、のうちの１若しくはそれ以上を含む。
【００４６】
ある実施形態では、書き込みコマンドといったマップ更新コマンドは、ＬＢＡを含み、ＬＢＡに対応するマップのシャドウコピー内のエントリを無効にする。様々な実施形態によれば、以下のうちの１若しくはそれ以上である：無効化はマップ更新コマンドを発行するときにコンピューティングホストによって行われる；無効化はマップ更新コマンドを受け取り、および/または実行するときに入出力デバイスによって行われる；無効化は、ＬＢＡに対応するマップのシャドウコピー内のエントリ内の有効な指示をオフにすることを含む；および無効化は、ＬＢＡに対応するエントリを含むマップのシャドウコピーの複数のエントリを含むマップのシャドウコピーの一部分内の有効な指示をオフにすることを含む。マップ更新コマンドに応答してマップ更新コマンドのＬＢＡに対応するマップのシャドウコピー内のエントリを無効にすることは、マップのシャドウコピー内のエントリへのその後のアクセスが、マップのシャドウコピー内のエントリの情報が無効であると決定することを可能にする。
【００４７】
ある実施形態および／または使用シナリオでは、入出力デバイスによって受け取られる書き込みコマンドが、書き込みコマンドのデータが入出力デバイスのＮＶＭに書き込まれることを可能にする。入出力デバイスは、書き込みコマンドのデータが書き込まれるＮＶＭ内の位置を決定し、書き込みコマンドのＬＢＡと関連付けられたマップ内のエントリを、ＮＶＭ内の位置を含むように更新する。別の実施形態では、コンピューティングホストのメモリ内のマップのシャドウコピーも、書き込みコマンドのＬＢＡと関連付けられたマップのシャドウコピー内のエントリがＮＶＭ内の位置を含むように更新される。
【００４８】
ある実施形態および／または使用シナリオでは、切り捨てコマンドを受け取ったことに応答して、入出力デバイスは、切り捨てコマンドのＬＢＡと関連付けられたマップ内のエントリを、ＬＢＡと関連付けられたデータがＮＶＭに存在しないという指示を含むように更新する。別の実施形態では、コンピューティングホストのメモリ内のマップのシャドウコピーも、切り捨てコマンドのＬＢＡと関連付けられたマップのシャドウコピー内のエントリがＬＢＡと関連付けられたデータがＮＶＭに存在しないという指示を含むように更新される。
【００４９】
様々な実施形態によれば、マップのシャドウコピーの更新は、以下のうちの１若しくはそれ以上によって行われる：マップ更新コマンドといった特定のタイプのコマンドを発行したことに応答したコンピューティングホスト；入出力デバイスから更新情報を受け取ったことに応答したコンピューティングホスト；最近の更新を求めて入出力デバイスをポーリングし、更新情報を有する応答を受け取ったことに応答したコンピューティングホスト；ＰＣＩｅアドレス空間内のマップのシャドウコピーにアクセスすることによってなど、コンピューティングホストのメモリ内のマップのシャドウコピーにアクセスすることによる入出力デバイス；ならびにコンピューティングホストおよび入出力デバイスを含むシステムの別のエージェント。更新情報は、マップの１若しくはそれ以上のエントリの少なくともいくつかのコンテンツに従った情報、および／または１若しくはそれ以上のエントリと関連付けられたそれぞれのＬＢＡといった１若しくはそれ以上のエントリの指示を含む。様々な実施形態において、更新情報は、任意の書式で、または１若しくはそれ以上の入出力デバイスと１若しくはそれ以上のコンピューティングホストとの間で情報を伝える任意の技術によって伝えられる。第１の例では、ＳＡＴＡホストプロトコルを使用して、更新情報は、コンピューティングホストが読み出し可能なログページで伝えられる。第２の例では、ＮＶＭ  ＥｘｐｒｅｓｓといったＰＣＩｅベースのホストプロトコルを使用して、更新情報は、少なくとも部分的に入出力デバイスがコンピューティングホストのメモリ内の領域を書き込み、コンピューティングホストに割り込みで知らせることによって伝えられる。
【００５０】
ある実施形態では、マップ更新コマンドのＬＢＡと関連付けられたマップ内のエントリは、ＬＢＡと関連付けられ、ＮＶＭに記憶されたデータの長さおよび／または範囲を指定する情報をさらに含む。というのは、ＬＢＡと関連付けられ、ＮＶＭに記憶されたデータの長さおよび／または範囲を指定する情報がデータの圧縮率に応じて変動するからである。別の実施形態では、マップ更新コマンドのＬＢＡと関連付けられたマップのシャドウコピー内のエントリは、任意選択で、および/または選択的に、ＬＢＡと関連付けられ、ＮＶＭに記憶されたデータの長さおよび／または範囲をさらに含む。様々な実施形態によれば、ＬＢＡと関連付けられ、ＮＶＭに記憶されたデータの長さおよび／または範囲は、任意選択で、および/または選択的に、さらに、以下のうちの１若しくはそれ以上を符号化することができるようになっている：ＬＢＡと関連付けられたデータの一部および／または全部が切り捨てられるという指示；ＬＢＡと関連付けられたデータの一部および／または全部が訂正不能であるという指示；ならびに、ＬＢＡと関連付けられたデータの一部および／または全部の任意の他のプロパティ。
【００５１】
ある実施形態および／または使用シナリオでは、ＬＢＡと関連付けられ、ＮＶＭに記憶されたデータの長さを、マップ更新コマンドのＬＢＡと関連付けられたマップのシャドウコピー内のエントリに記憶することは、マップ更新コマンドのＬＢＡのデータを上書きするときなどに、後続のマップ更新コマンドにおいてＬＢＡと関連付けられ、ＮＶＭに記憶されたデータの長さを提供するためのマップのシャドウコピーの使用を可能にする。ＬＢＡと関連付けられ、ＮＶＭに記憶されたデータの長さは、後続のマップ更新コマンドによってマップ更新コマンドのＬＢＡのデータを上書きするときに、マップ更新コマンドのＬＢＡのデータを含むＮＶＭの領域における使用空間統計を調整するのに使用される。例えば、マップ更新コマンドのＬＢＡのデータを含むＮＶＭの領域についての使用空間統計が、後続のマップ更新コマンドによってマップ更新コマンドのＬＢＡのデータを上書きするときに、ＬＢＡと関連付けられ、ＮＶＭに記憶されたデータの長さの分だけ減分される。
【００５２】
ある実施形態では、ＬＢＡのところのデータを要求する読み出しコマンドといったマップ読み出し要求が、ＬＢＡに対応するマップのシャドウコピー内のエントリにアクセスすることができるようになっている。様々な実施形態によれば、以下のうちの１若しくはそれ以上である：アクセスは読み出しコマンドを発行するときにコンピューティングホストによって行われる；アクセスは読み出しコマンドを受け取り、および/または実行するときに入出力デバイスによって行われる；およびアクセスはＬＢＡに対応するマップのシャドウコピー内のエントリの少なくとも一部分を読み取ることを含む。読み出しコマンドのＬＢＡに対応するマップのシャドウコピー内のエントリにアクセスすることにより、マップにアクセスしなくても、マップの対応するエントリに従った情報が提供される。マルチレベルマップの下位レベルといったマップが入出力デバイスのＮＶＭに記憶されるある実施形態および／または使用シナリオでは、マップのシャドウコピーへのアクセスは、より待ち時間が短く、ＬＢＡのところのデータにアクセスする待ち時間を都合よく向上させる。
【００５３】
ある実施形態では、入出力デバイスからの特定のＬＢＡに対応するデータを読み取るよう求める読み出し要求に応答して、コンピューティングホストは、特定のＬＢＡに対応するマップのシャドウコピーのエントリの少なくとも一部分を読み取る。コンピューティングホストは、入出力デバイスに予めマッピングされた読み出しコマンドを送り、予めマッピングされた読み出しコマンドは、入出力デバイスのＮＶＭ内の位置といったマップのシャドウコピーのエントリの情報を含む。様々な実施形態において、予めマッピングされた読み出しコマンドは特定のＬＢＡを提供しない。別の実施形態および／または使用シナリオでは、ＮＶＭ内の位置はＮＶＭ内のそれぞれの範囲を含む。
【００５４】
ある実施形態では、入出力デバイスからの特定のＬＢＡに対応するデータを読み取るよう求める読み出し要求に応答して、コンピューティングホストは、特定のＬＢＡに対応するマップのシャドウコピーのエントリの少なくとも一部分を読み取ることができるようになっている。マップのシャドウコピーのエントリが有効でないことが、例えば有効指示によって指示される場合、コンピューティングホストは入出力デバイスに、特定のＬＢＡを含む読み出しコマンドを送る。マップのシャドウコピーのエントリが有効であることが、例えば有効指示によって指示される場合、コンピューティングホストは入出力デバイスに、入出力デバイスのＮＶＭ内の位置といった、マップのシャドウコピーのエントリの情報を含む予めマッピングされた読み出しコマンドを送る。様々な実施形態において、予めマッピングされた読み出しコマンドは特定のＬＢＡを提供しない。別の実施形態および／または使用シナリオでは、ＮＶＭ内の位置はＮＶＭ内のそれぞれの範囲を含む。
【００５５】
ある実施形態では、入出力デバイスが入出力デバイスのＮＶＭ内の位置を含む予めマッピングされた読み出しコマンドを受け取ったことに応答して、入出力デバイスは、その位置のところのＮＶＭにアクセスして読み出しデータを取得することができるようになっている。入出力デバイスは、予めマッピングされた読み出しコマンドを受け取ったことに応答してマップにアクセスすることを省略する。予めマッピングされた読み出しコマンドに応答して、読み出しデータおよび／またはその処理済みバージョンが返される。
【００５６】
ある実施形態では、入出力デバイスが特定のＬＢＡに対応する入出力デバイスからのデータを読み取るよう求める読み出しコマンドを受け取ったことに応答して、入出力デバイスは、特定のＬＢＡに対応するマップのシャドウコピーのエントリの少なくとも一部分を読み取ることができるようになっている。入出力デバイスは、マップにアクセスせずに、マップのシャドウコピーのエントリから特定のＬＢＡのデータに対応するＮＶＭ内の位置を取得する。入出力デバイスは、ＮＶＭ内のその位置のところのＮＶＭにアクセスして読み出しデータを取得する。読み出しコマンドに応答して、読み出しデータおよび／またはその処理済みバージョンが返される。
【００５７】
ある実施形態では、特定のＬＢＡに対応する入出力デバイスからのデータを読み取るよう求める読み出しコマンドの受け取りに応答して、入出力デバイスは、特定のＬＢＡに対応するマップのシャドウコピーのエントリの少なくとも一部分を読み取ることができるようになっている。マップのシャドウコピーのエントリが有効でないことが、例えば有効指示によって指示される場合、入出力デバイスはマップにアクセスして、特定のＬＢＡのデータに対応するＮＶＭ内の位置を決定する。マップのシャドウコピーのエントリが有効であることが、例えば有効指示によって指示される場合、入出力デバイスは、マップにアクセスせずに、マップのシャドウコピーのエントリから特定のＬＢＡのデータに対応するＮＶＭ内の位置を取得する。入出力デバイスは、ＮＶＭ内の位置のところのＮＶＭにアクセスして読み出しデータを取得する。読み出しコマンドに応答して、読み出しデータおよび／または処理済みバージョンが返される。
【００５８】
上記の実施形態の変形を含む別の実施形態および／または使用シナリオでは、入出力デバイスのＮＶＭ内の位置は、任意選択で、および/または選択的に、特定のＬＢＡに対応するデータが入出力デバイスのＮＶＭに存在するかどうかの指示を符号化することができるようになっている。例えば、削減されたデータまたは入出力デバイスが書式設定されて以来書き込まれたことのないデータは入出力デバイスのＮＶＭに存在しない。
【００５９】
コンピューティングホストがＮＶＭ内の位置を、マップのシャドウコピーにアクセスすることによってなど、入出力デバイスからデータを読み取ろうと試みることの一部として決定する変形形態では、コンピューティングホストは、入出力デバイスにコマンドを送らずに、特定のＬＢＡに対応するデータが入出力デバイスのＮＶＭに存在しないと決定することができるようになっている。様々な実施形態によれば、以下のうちの１若しくはそれ以上である：コンピューティングホストは入出力デバイスにコマンドを送らずに読み出し要求への応答を返す；コンピューティングホストは入出力デバイスに特定のＬＢＡを含むコマンドを送る；およびコンピューティングホストは入出力デバイスに、特定のＬＢＡに対応するマップのシャドウコピーのエントリから取得される情報を含むコマンドを送る。
【００６０】
入出力デバイスがＮＶＭ内の位置を、マップのシャドウコピーにアクセスすることによってなど、読み出しコマンドを実行することの一部として決定する変形形態では、入出力デバイスは、ＮＶＭにアクセスして読み出しデータを取得せずに、読み出しコマンドへの応答を返すことができるようになっている。
【００６１】
ある実施形態では、入出力デバイスは、ＮＶＭの領域を再利用するときにマップのシャドウコピーを使用することができるようになっている。再利用は、マップにシャドウコピーのエントリによって、再利用のためにＮＶＭの領域から読み取られたデータがまだ有効であるかどうかを、例えば、マップのシャドウコピーのエントリのうちの１つにおいて最新であることによって決定ことができるようになっている。様々な実施形態において、最新であるデータは、任意選択で、および/または選択的に、データをＮＶＭ内の新しい位置に書き込み、マップのエントリを、新しい位置を指定するように更新することによって再利用される。様々な実施形態によれば、マップのシャドウコピーのエントリのうちの対応する１つは、無効にされ、または新しい位置で更新される。別の実施形態では、ＮＶＭ内の特定の位置のところのＮＶＭから読み取られたデータは、データと関連付けられ、ＮＶＭから読み取られたヘッダがＬＢＡの少なくとも一部分を含み、ＬＢＡの少なくとも一部分と関連付けられたマップのシャドウコピー内のエントリがＮＶＭ内の特定の位置を含む場合に、最新である。
【００６２】
ある実施形態では、無効化または更新は、（例えば、書き込み後比較的すぐの）再利用と関連付けられた書き込みに応答したものである。別の実施形態では、無効化または更新は、入出力デバイスが（例えば、書き込みが行われてから任意の長さの時間経過後に）領域を消去した（あるいは消去しようとしている）ことに応答したものである。データの自動切り捨てを提供するある実施形態では、再利用は自動切り捨てを含み、その場合、最新のデータは、新しい位置に書き込まれるのではなく、マップ内で切り捨て済みとマークされる。コンピューティングホストはデータまたはデータ切り捨ての指示を受け取ることができるようになっているため、様々な実施形態および／または使用シナリオでは、（たとえ削減されたとしても）最新のデータが提供され、あるいは切り捨ての指示が提供され、書き込みに応答して、または消去に応答して再利用関連の更新が行われるかどうかにかからわらず、マップのシャドウコピーの使用を可能にする。
【００６３】
例えば、入出力デバイスはコンピューティングホストに、再利用によって更新されている第２レベルのマップエントリおよび／またはマップ部分（第２レベルのマップページなど）のリストの更新を伝える。伝達は、ログメッセージ、予約ＬＢＡ空間、またはマップ情報を提供するのに適した任意の技術のうちの任意の１若しくはそれ以上によるものである。更新は、任意選択で、および/または選択的に、マップのシャドウコピーの１若しくはそれ以上のエントリの無効化を指示し、および/またはマップのシャドウコピーの影響を受けたエントリの１若しくはそれ以上の新しい値を含む。入出力デバイスはコンピューティングホストに、更新が利用可能であることを以下のうちの１若しくはそれ以上によって通知する：コマンド状況内の予約ビット、入出力デバイスからコンピューティングホストへの任意の１若しくはそれ以上のタイプの応答内の予約ビット、誤り報告、割り込み、および入出力デバイスとコンピューティングホストとの間で通信するための他の技術。ある使用シナリオでは、更新された第２レベルのマップエントリによって参照されたデータの消去は、更新が（例えば、マップのシャドウコピーに対して）適用されているというコンピューティングホストからの確認を受け取ることに依存したものである。
【００６４】
様々な実施形態において、マップのシャドウコピーは、ＣＲＣやチェックサムといった１若しくはそれ以上の誤り検出コードを含む。誤り検出コードの各々は、マップのシャドウコピーの１若しくはそれ以上のエントリを含むそれぞれの部分を保護する。例えば、ある実施形態では、それぞれの部分は第２レベルのマップページに対応する。様々な実施形態によれば、それぞれの部分のうちの１つの完全性は以下のうちの１若しくはそれ以上によって検証される：それぞれの部分と関連付けられた誤り検出コードを再計算し、検証すること；それぞれの部分と関連付けられた誤り検出コードを、マップの対応する部分に従って計算された誤り検出コードと比較すること；およびそれぞれの部分をマップの対応する部分と共に直接検証すること。様々な実施形態によれば、それぞれの部分のうちの１つの完全性は以下のうちの１若しくはそれ以上として検証される：入出力デバイスおよび／または入出力デバイスを含むシステムのリセットおよび／または電源サイクルの都度；入出力デバイスおよび／または入出力デバイスを含むシステムが低電力および／または休眠状態（低電力動作状態など）を終了する都度；指定の間隔後に；ならびに指定の頻度に従って周期的に。
【００６５】
ある実施形態では、入出力デバイスは、コンピューティングホストのメモリを使用して入出力デバイスの状態を保存することができるようになっている。様々な実施形態によれば、入出力デバイスの状態は以下のうちの１若しくはそれ以上を含む：マップのシャドウコピー；入出力デバイスのマップのキャッシュ；入出力デバイスのマルチレベルマップの１若しくはそれ以上のレベルのキャッシュ；入出力デバイスの２レベルマップの第１レベル；入出力デバイスのマルチレベルマップの上位レベル；入出力デバイスの揮発状態；ＮＶＭのアクセスおよび／または挙動に従った統計といった入出力デバイスによって維持される統計；入出力デバイスが低電力状態を開始するときに失われる入出力デバイスの内部状態；ならびに入出力デバイスの他の状態。様々な実施形態において、入出力デバイスの保存された状態のすべての部分または任意の部分が、任意選択で、および/または選択的に、保存されるときに暗号化され、復元されるときに解読される。
【００６６】
ある実施形態では、通常モード（高電力動作状態など）で動作している入出力デバイスは、例えば、低電力状態を開始するよう求める要求を受け取ったことに応答して、または入出力デバイスの非アクティビティ期間に応答して、入出力デバイスの構成設定に従って、低電力および／または休眠状態（低電力動作状態など）を開始することを決定することができるようになっている。低電力状態を開始することを決定したことに応答して、入出力デバイスは、入出力デバイスの状態の少なくとも１つの第１の部分をコンピューティングホストのメモリに保存することができるようになっている。入出力デバイスは次いで、低電力状態を開始することができるようになっており、入出力デバイスの状態の少なくとも１つの第１の部分は、例えば、入出力デバイスの少なくとも一部分への電力が除去されることによって失われる。その後に、入出力デバイスは、例えば、低電力状態を終了するよう求める要求を受け取ることによって、低電力状態を終了することを決定することができるようになっている。低電力状態を終了することを決定したことに応答して、入出力デバイスは、低電力状態を終了することができるようになっている。入出力デバイスは次いで、コンピューティングホストのメモリから入出力デバイス状態の少なくとも１つの第１の部分を復元し、通常モードでの動作を再開することができるようになっている。様々な実施形態によれば、低電力状態は、待機状態、休眠状態、休止状態、遊休状態、および入出力デバイスの電力管理プロトコルにおける任意の状態、のうちの１若しくはそれ以上である。
【００６７】
別の実施形態では、低電力状態を開始することを決定したことに応答して、入出力デバイスの状態の少なくとも１つの第２の部分が入出力デバイスのＮＶＭに保存される。さらに別の実施形態では、低電力状態を終了することを決定したことに応答して、入出力デバイスは、ＮＶＭから入出力デバイスの状態の少なくとも１つの第３の部分を復元することができるようになっている。例えば、ある使用シナリオでは、入出力デバイスの状態の少なくとも１つの第１の部分は第１レベルのマップを含み、入出力デバイスの状態の少なくとも１つの第２の部分は入出力デバイスの状態のチェックポイントを含み、入出力デバイスの状態の少なくとも１つの第３の部分は入出力デバイスのプロセッサの実行可能コードを含む。
【００６８】
様々な実施形態において、入出力記憶デバイスは、１若しくはそれ以上の非標準統計を計算することができるようになっている。非標準統計の例は、ストレージ使用状況、ストレージ使用パーセンテージ、書き込み増幅、ならびに入出力記憶デバイスの不揮発性記憶の１若しくはそれ以上のバンドのサイズおよび／または使用状況である。ある実施形態および／使用シナリオでは、入出力記憶デバイスのストレージの少なくとも一部分を実施するＮＶＭに書き込まれるべきデータが、ＮＶＭでの書き込みの前にサイズを低減される。非標準統計の別の例は、少なくとも部分的にサイズ低減に基づく、および/または過去および／若しくは現在のサイズ低減に基づく将来のサイズ低減の予測に基づくストレージ使用状況および／またはストレージ使用パーセンテージである。非標準統計値の返しを要求する（例えばコンピューティングホストからの）コマンドを受け取ったことに応答して、入出力記憶デバイスは、要求された非標準統計を（例えばコンピューティングホストに）返す。（例えば非標準統計のうちの１若しくはそれ以上の全部または任意の部分の）計算の結果は、任意選択で、任意のサイズ低減の影響を受ける。サイズ低減は、例えば、圧縮および／またはデータ重複排除によるものである。ある実施形態および／または使用シナリオでは、非標準統計のうちの１若しくはそれ以上（例えば、ＮＶＭの使用状況といったストレージ使用状況）が、以下のうちの１若しくはそれ以上に従って変動する：サイズ低減の質、（例えばコンピューティングホストから受け取られる）切り捨てコマンドの数および／またはサイズ、（例えばコンピューティングホストから）受け取られる一時データの量、ならびに（例えば入出力記憶デバイスによって）削減された一時データの量。ある実施形態および／または使用シナリオでは、非標準統計のうちの１若しくはそれ以上（例えばバンドの使用状況）が、サイズ低減の質に従って変動する。
【００６９】
一部の実施形態では、ＮＶＭ内の様々なサイズの量の圧縮データにアクセスすることにより、ある使用シナリオでは記憶効率が改善される。例えば、ＳＳＤコントローラは、コンピューティングホストから（例えばディスク書き込みコマンドに関連した）（圧縮されていない）データを受け取り、データを圧縮し、データをフラッシュメモリへ記憶する。コンピューティングホストからの（例えばディスク読み出しコマンドに関連した）その後の要求に応答して、ＳＳＤコントローラはフラッシュメモリから圧縮データを読み出し、圧縮データを解凍し、解凍されたデータをコンピューティングホストに提供する。圧縮データは、様々なサイズの量に従ってフラッシュメモリに記憶され、各量のサイズは、例えば、圧縮アルゴリズム、動作モード、様々なデータに関する圧縮有効性により変動する。ＳＳＤコントローラは、一部は、含まれるマップ表を調べて（１つまたは複数の）ヘッダがフラッシュメモリのどこに記憶されているか確認することによってデータを解凍する。ＳＳＤコントローラは、適切な（圧縮）データがフラッシュメモリのどこに記憶されているか確認するためにフラッシュメモリから得た（１つまたは複数の）ヘッダをパースする。ＳＳＤコントローラは、コンピューティングホストに提供すべき解凍データを生成するために、フラッシュメモリからの適切なデータを解凍する。本出願では、「解凍する（ｕｎｃｏｍｐｒｅｓｓ）」（およびその変形）は、「伸張する（ｄｅｃｏｍｐｒｅｓｓ）」（およびその変形）と同義である。
【００７０】
様々な実施形態では、ＳＳＤコントローラは、コンピューティングホストとインターフェースするためのホストインターフェースと、フラッシュメモリといったＮＶＭとインターフェースするためのインターフェースと、各インターフェースを制御し、圧縮および解凍と共に、低レベル誤り訂正、高レベル誤り訂正、ならびに独立シリコン素子を用いた動的高レベル冗長性モード管理を行う（および/または行うことの様々な態様を制御する）ための回路とを含む。
【００７１】
様々な実施形態によれば、あるホストインターフェースは、ＵＳＢインターフェース規格、ＣＦインターフェース規格、ＭＭＣインターフェース規格、ＳＤインターフェース規格、メモリ・スティック・インターフェース規格、ｘＤピクチャ・カード・インターフェース規格、ＩＤＥインターフェース規格、ＳＡＴＡインターフェース規格、ＳＣＳＩインターフェース規格、ＳＡＳインターフェース規格、およびＰＣＩｅインターフェース規格のうちの１つ若しくはそれ以上と適合する。様々な実施形態によれば、コンピューティングホストは、コンピュータ、ワークステーションコンピュータ、サーバコンピュータ、ストレージサーバ、ＰＣ、ラップトップコンピュータ、ノートブックコンピュータ、ネットブックコンピュータ、ＰＤＡ、メディアプレーヤ、メディアレコーダ、ディジタルカメラ、セルラハンドセット、コードレス電話機ハンドセット、および電子ゲームのうちの全部または任意の部分である。一部の実施形態では、インターフェースホスト（ＳＡＳ／ＳＡＴＡブリッジなど）は、コンピューティングホストおよび／またはコンピューティングホストへのブリッジとして動作する。
【００７２】
様々な実施形態では、ＳＳＤコントローラは、１つ若しくはそれ以上のプロセッサを含む。プロセッサは、ＳＳＤコントローラの動作を制御し、および/または行うためにファームウェアを実行する。ＳＳＤコントローラは、コマンドおよび／または状況ならびにデータを送り、受け取るためにコンピューティングホストと通信する。コンピューティングホストは、オペレーティングシステム、ドライバ、およびアプリケーションのうちの１つ若しくはそれ以上を実行する。コンピューティングホストによるＳＳＤコントローラとの通信は、任意選択で、および/または選択的に、ドライバおよび／またはアプリケーションによるものである。第１の例では、ＳＳＤコントローラへのすべての通信がドライバによるものであり、アプリケーションは、ドライバに高レベルコマンドを提供し、ドライバがそれをＳＳＤコントローラのための特定のコマンドに変換する。第２の例では、ドライバはバイパスモードを実施し、アプリケーションは、ドライバを介してＳＳＤコントローラに特定のコマンドを送ることができるようになっている。第３の例では、ＰＣＩｅ  ＳＳＤコントローラが１つ若しくはそれ以上の仮想機能（Ｖｉｒｔｕａｌ  Ｆｕｎｃｔｉｏｎｓ：ＶＦｓ）をサポートし、アプリケーションが、一度構成されると、ドライバをバイパスしてＳＳＤコントローラを直接通信することを可能にする。
【００７３】
様々な実施形態によれば、あるＳＳＤは、ＨＤＤ、ＣＤドライブ、ＤＶＤドライブといった磁気的不揮発性記憶および／または光学的不揮発性記憶によって使用されるフォームファクタ、電気的インターフェース、および／またはプロトコルと適合する。様々な実施形態では、ＳＳＤは、０以上のパリティ符号、０以上のＲＳ符号、０以上のＢＣＨ符号、０以上のビタビ符号または他のトレリス符号、および０以上のＬＤＰＣ符号の様々な組み合わせを使用する。
【００７４】
例示的な実施形態
詳細な記載に対する導入を締めくくる際に続くものは、「ＥＣｓ」（例示的な組み合わせ）として明示的に列挙される少なくとも一部の例示的な実施形態を含む例示的な実施形態を集めたものであり、本明細書において記載される概念に従った様々な実施形態の種類の追加的な記載を提供する。これらの例は、互いに排他的、網羅的、又は制限的であることを意味せず、本発明はこれらの例示的な実施形態には限定されるものでなく、特許請求の範囲の範囲内の全ての可能な改変形態及び変化形態を含む。
【００７５】
ＥＣ１）方法であって、
標準コマンドと非標準修飾子の仕様とを有する拡張コマンドを入出力デバイスで受け取る工程と、
前記非標準修飾子に従って前記標準コマンドを実行する工程と
を有し、
前記非標準修飾子を使用して前記標準コマンドの実行を変更することによりシステムレベルの性能が改善されるものである
方法。
【００７６】
ＥＣ２）方法であって、
非標準修飾子を有効にする仕様を有するモード設定コマンドを入出力デバイスで受け取る工程と、
標準コマンドを前記入出力デバイスで受け取る工程と、
前記非標準修飾子に従って前記標準コマンドを実行する工程と
を有し、
前記非標準修飾子を使用して前記標準コマンドの実行を変更することによりシステムレベルの性能が改善されるものである
方法。
【００７７】
ＥＣ３）ＥＣ１またはＥＣ２記載の方法において、さらに、
前記非標準修飾子を前記標準コマンドのデータと関連付ける工程を有するものである方法。
【００７８】
ＥＣ４）ＥＣ３記載の方法において、さらに、
前記標準コマンドの前記データと共に後で取得するために前記非標準修飾子の指示を記憶する工程を有するものである方法。
【００７９】
ＥＣ５）ＥＣ４記載の方法において、前記記憶する工程は不揮発的である方法。
【００８０】
ＥＣ６）ＥＣ４記載の方法において、さらに、
前記非標準修飾子の前記指示をマップの複数のエントリのうちの特定の１つに記憶する工程であって、前記特定のエントリは前記標準コマンドの論理ブロックアドレス（ＬＢＡ）によって前記標準コマンドの前記データと関連付けられている、記憶する工程を有するものである方法。
【００８１】
ＥＣ７）ＥＣ４記載の方法において、前記標準コマンドは書き込みコマンドであり、さらに、
前記書き込みコマンドの前記データへのアクセスを指定する後続の読み出しコマンドに応答して、前記非標準修飾子の前記指示に従って前記後続の読み出しコマンドの実行を変更する工程を有するものである方法。
【００８２】
ＥＣ８）ＥＣ４記載の方法において、前記標準コマンドは第１のコマンドであり、さらに、
前記第１のコマンドの前記データへのアクセスを指定する後続のコマンドに応答して、前記非標準修飾子の前記指示に従って前記後続のコマンドの実行を変更する工程を有するものである方法。
【００８３】
ＥＣ９）ＥＣ８記載の方法において、
前記第１のコマンドは書き込みコマンドであり、
前記非標準修飾子は、前記書き込みコマンドの前記データが読み出し専用であるという指示を有し、
前記後続のコマンドの実行を変更する前記工程は、前記後続のコマンドが標準書き込みコマンドである場合に誤り指示を返す工程を有する方法。
【００８４】
ＥＣ１０）ＥＣ４記載の方法において、前記標準コマンドは書き込みコマンドであり、さらに、
前記書き込みコマンドの前記データが再利用されるべきであると決定する工程と、
前記非標準修飾子の前記指示にアクセスする工程と、
前記非標準修飾子の前記指示に応答して、前記書き込みコマンドの前記データを削減する工程と
を有し、それによって、前記書き込みコマンドの前記データは再利用されるのではなく切り捨てられる方法。
【００８５】
ＥＣ１１）ＥＣ１またはＥＣ２記載の方法において、前記標準コマンドは読み出しコマンドである方法。
【００８６】
ＥＣ１２）ＥＣ１またはＥＣ２記載の方法において、前記標準コマンドは読み出しコマンドまたは書き込みコマンドの一方である方法。
【００８７】
ＥＣ１３）ＥＣ１またはＥＣ２記載の方法において、前記標準コマンドはデータ移動コマンドである方法。
【００８８】
ＥＣ１４）ＥＣ１またはＥＣ２記載の方法において、前記標準コマンドは切り捨てコマンドである方法。
【００８９】
ＥＣ１５）ＥＣ１４記載の方法において、前記非標準修飾子は、前記切り捨てコマンドが必須であるかそれとも任意選択であるか選択的に決定する方法。
【００９０】
ＥＣ１６）ＥＣ１またはＥＣ２記載の方法において、前記非標準修飾子は、少なくとも部分的に前記標準コマンドの予約フィールドによって指定される方法。
【００９１】
ＥＣ１７）ＥＣ１またはＥＣ２記載の方法において、前記非標準修飾子は、少なくとも部分的に前記標準コマンドの複数のアドレスビットのうちの少なくともいくつかによって指定される方法。
【００９２】
ＥＣ１８）ＥＣ１７記載の方法において、前記アドレスビットのうちの前記少なくともいくつかは、前記入出力デバイスによってそれ以外に使用されない方法。
【００９３】
ＥＣ１９）ＥＣ１またはＥＣ２記載の方法において、前記非標準修飾子は、
データタイプの仕様、
データアクセスタイプの仕様、
データ順序付けの仕様、
データ関係の仕様、
データ宛先の仕様、および
コマンド関係の仕様
のうちの１若しくはそれ以上である方法。
【００９４】
ＥＣ２０）ＥＣ１９記載の方法において、前記データタイプの前記仕様は圧縮率指示を有する方法。
【００９５】
ＥＣ２１）ＥＣ２０記載の方法において、前記データタイプの前記仕様は、前記データタイプが圧縮不能であるという指示を有する方法。
【００９６】
ＥＣ２２）ＥＣ１９記載の方法において、前記データタイプの前記仕様はデータベース・ジャーナル・タイプの指示を有する方法。
【００９７】
ＥＣ２３）ＥＣ１９記載の方法において、前記データアクセスタイプの前記仕様は、読み出し／書き込みデータアクセスタイプの指示、略読み出しデータアクセスタイプの指示、および略書き込みデータアクセスタイプの指示のうちの２若しくはそれ以上を有する方法。
【００９８】
ＥＣ２４）ＥＣ１９記載の方法において、前記データアクセスタイプの前記仕様は、読み出し／書き込みデータアクセスタイプの指示、略読み出しデータアクセスタイプの指示、略書き込みデータアクセスタイプの指示および一時データアクセスタイプの指示のうちの２若しくはそれ以上を有する方法。
【００９９】
ＥＣ２５）ＥＣ１９記載の方法において、前記データアクセスタイプの前記仕様は一時データアクセスタイプの指示を有する方法。
【０１００】
ＥＣ２６）ＥＣ２５記載の方法において、
前記標準コマンドは書き込みコマンドであり、前記非標準修飾子は前記一時データアクセスタイプの指示を有し、さらに、
前記書き込みコマンドのデータを不揮発的に記憶する工程と、
前記書き込みコマンドによって記憶された前記データが再利用されるべきであると決定したことに応答し、前記非標準修飾子に従って、前記書き込みコマンドによって記憶された前記データを削減する工程と
を有するものである方法。
【０１０１】
ＥＣ２７）ＥＣ２６記載の方法において、さらに、
前記削減する工程に続く前記書き込みコマンドによって記憶された前記データの読み出しに応答して、前記書き込みコマンドによって記憶された前記データが切り捨てられるという指示を返す工程を有するものである方法。
【０１０２】
ＥＣ２８）ＥＣ２６記載の方法において、さらに、
前記書き込みコマンドによって記憶された前記データの読み出しに応答して、前記書き込みコマンドによって記憶された前記データが切り捨てられるという指示、または前記書き込みコマンドによって記憶された前記データを選択的に返す工程を有するものである方法。
【０１０３】
ＥＣ２９）ＥＣ２７またはＥＣ２８記載の方法において、さらに、
前記読み出しに応答して、前記書き込みコマンドによって記憶された前記データが切り捨てられるという前記指示を非データ応答として返す工程を有するものである方法。
【０１０４】
ＥＣ３０）ＥＣ２７またはＥＣ２８記載の方法において、さらに、
前記読み出しに応答して、前記書き込みコマンドによって記憶された前記データが切り捨てられるという前記指示を返されるデータにおいて特定のパターンとして返す工程を有するものである方法。
【０１０５】
ＥＣ３１）ＥＣ１９記載の方法において、前記データアクセスタイプの前記仕様は読み出し専用データアクセスタイプの指示を有する方法。
【０１０６】
ＥＣ３２）ＥＣ３１記載の方法において、前記標準コマンドは第１の書き込みコマンドであり、前記非標準修飾子は前記読み出し専用データアクセスタイプの指示を有し、さらに、
前記第１の書き込みコマンドの論理ブロックアドレス（ＬＢＡ）に従って前記第１の書き込みコマンドのデータを不揮発的に記憶する工程と、
前記第１の書き込みコマンドの前記論理ブロックアドレスに書き込もうとする後続の書き込みコマンドに応答して、誤り指示を返す工程と
を有するものである方法。
【０１０７】
ＥＣ３３）ＥＣ１９記載の方法において、前記データ順序付けの前記仕様はアトミックシーケンスの指示を有する方法。
【０１０８】
ＥＣ３４）ＥＣ１９記載の方法において、前記データ順序付けの前記仕様は、順次シーケンスの指示およびアトミックシーケンスの指示のうちの１若しくはそれ以上を有する方法。
【０１０９】
ＥＣ３５）ＥＣ１９記載の方法において、さらに、
前記データ関係を前記標準コマンドのデータと関連付ける工程を有するものである方法。
【０１１０】
ＥＣ３６）ＥＣ３５記載の方法において、さらに、
前記データ関係および前記標準コマンドの前記データを不揮発的に記憶する工程を有するものである方法。
【０１１１】
ＥＣ３７）ＥＣ３６記載の方法において、前記標準コマンドは第１の標準コマンドであり、さらに、
続いて、前記データ関係を後続の標準コマンドのデータと関連付ける工程を有するものである方法。
【０１１２】
ＥＣ３８）ＥＣ３７記載の方法において、さらに、
前記データ関係に従ってデータを取得する工程を有するものである方法。
【０１１３】
ＥＣ３９）ＥＣ１９記載の方法において、前記データ宛先の前記仕様は複数のデータバンドのうちの１つを指定する方法。
【０１１４】
ＥＣ４０）ＥＣ３９記載の方法において、前記データバンドはホットバンドとコールドバンドとを有する方法。
【０１１５】
ＥＣ４１）ＥＣ１９記載の方法において、前記コマンド関係の前記仕様はコマンド優先順位を有する方法。
【０１１６】
ＥＣ４２）ＥＣ１９記載の方法において、前記コマンド関係の前記仕様はコマンド順序付け従属関係を有する方法。
【０１１７】
ＥＣ４３）ＥＣ４２記載の方法において、前記コマンド順序付け従属関係はコマンドバリアである方法。
【０１１８】
ＥＣ４４）ＥＣ２記載の方法において、前記標準コマンドは２若しくはそれ以上の標準コマンドのシーケンスである方法。
【０１１９】
ＥＣ４５）ＥＣ２記載の方法において、
前記モード設定コマンドは第１のモード設定コマンドであり、さらに、
前記標準コマンドを受け取る前記工程に続いて、前記非標準修飾子を使用不可にする仕様を有する第２のモード設定コマンドを受け取る工程を有するものである方法。
【０１２０】
ＥＣ４６）方法であって、
入出力デバイスで、外部インターフェースを介してコマンドを受け取る工程と、
前記コマンドのタイプを確認する工程と、
前記コマンドのタイプが読み出しコマンドである場合、マップにアクセスして前記コマンドの論理ブロックアドレス（ＬＢＡ）を変換し、不揮発性メモリ（ＮＶＭ）内の所定の位置を選択的に有する変換された論理ブロックアドレス情報を取得する工程と、
前記コマンドのタイプが予めマッピングされた読み出しコマンドである場合、当該予めマッピングされた読み出しコマンドの情報から、前記マップを使用せずに前記不揮発性メモリ内の前記位置を決定する工程と、
前記不揮発性メモリ内の前記位置に対応するデータを返す工程と
を有し、
前記予めマッピングされた読み出しコマンドの前記情報は、前記変換された論理ブロックアドレス情報の少なくとも一部分を有するものである、
方法。
【０１２１】
ＥＣ４７）ＥＣ４６記載の方法において、前記変換された論理ブロックアドレス情報は、前記不揮発性メモリ内の位置または前記コマンドの前記論理ブロックアドレスが前記不揮発性メモリに存在しないという指示を選択的に有するものである方法。
【０１２２】
ＥＣ４８）ＥＣ４６記載の方法において、前記変換された論理ブロックアドレス情報は、前記不揮発性メモリの１若しくはそれ以上の読み出し単位のうちの第１の読み出し単位のアドレスおよび読み出し単位での長さを選択的に有する方法。
【０１２３】
ＥＣ４９）ＥＣ４８記載の方法において、前記１若しくはそれ以上の読み出し単位の各々のサイズは少なくとも５１２バイトである方法。
【０１２４】
ＥＣ５０）ＥＣ４６記載の方法において、さらに、
前記マップのシャドウコピーにアクセスして前記論理ブロックアドレスを変換して、前記変換された論理ブロックアドレス情報の前記少なくとも一部分を取得する工程と、
前記入出力デバイスに前記変換された論理ブロックアドレス情報の前記少なくとも一部分を含む前記予めマッピングされた読み出しコマンドを送る工程と
を有するものである方法。
【０１２５】
ＥＣ５１）ＥＣ５０記載の方法において、前記アクセスする工程はコンピューティングホストにおけるものである方法。
【０１２６】
ＥＣ５２）ＥＣ５０記載の方法において、前記マップの前記シャドウコピーは複数のエントリを有し、前記エントリの各々は有効性の指示を有する方法。
【０１２７】
ＥＣ５３）ＥＣ５２記載の方法において、
前記論理ブロックアドレスは複数の論理ブロックアドレス（ＬＢＡ）のうちの１つであり、
前記変換された論理ブロックアドレス情報は複数の変換された論理ブロックアドレス情報のうちの１つであり、
前記マップの前記シャドウコピーの前記有効なエントリの各々は、前記論理ブロックアドレスのうちの１若しくはそれ以上を、前記複数の変換された論理ブロックアドレス情報のそれぞれの情報と関連付ける方法。
【０１２８】
ＥＣ５４）ＥＣ５３記載の方法において、前記マップの前記シャドウコピーの前記有効なエントリの各々は、前記複数の変換された論理ブロックアドレス情報の前記それぞれの情報の少なくとも一部分を有する方法。
【０１２９】
ＥＣ５５）ＥＣ５３記載の方法において、前記マップの前記シャドウコピーの前記有効なエントリのうちの少なくとも１つは、前記有効なエントリのうちの前記少なくとも１つと関連付けられた前記論理ブロックアドレスが前記不揮発性メモリに存在しないことを選択的に指定する方法。
【０１３０】
ＥＣ５６）ＥＣ５５記載の方法において、前記有効なエントリのうちの前記少なくとも１つと関連付けられた前記論理ブロックアドレスは切り捨てられるものである方法。
【０１３１】
ＥＣ５７）ＥＣ５２記載の方法において、
前記不揮発性メモリ内の前記位置は前記不揮発性メモリ内の複数の位置のうちの１つであり、
前記マップの前記シャドウコピーの前記有効なエントリの各々は前記不揮発性メモリ内のそれぞれの位置を選択的に指定する方法。
【０１３２】
ＥＣ５８）ＥＣ５７記載の方法において、前記マップの前記シャドウコピーの前記有効なエントリの各々は、前記エントリと関連付けられたデータが前記不揮発性メモリに存在しないことを選択的に指定する方法。
【０１３３】
ＥＣ５９）ＥＣ５２記載の方法において、さらに、
最初に前記マップの前記シャドウコピーのすべてのエントリを無効とマークする工程を有するものである方法。
【０１３４】
ＥＣ６０）ＥＣ５２記載の方法において、さらに、
前記入出力デバイスに書き込みコマンドを送ったことに応答して、前記書き込みコマンドの論理ブロックアドレス（ＬＢＡ）と関連付けられた前記マップの前記シャドウコピーのエントリを無効とマークする工程を有するものである方法。
【０１３５】
ＥＣ６１）ＥＣ６０記載の方法において、さらに、
前記入出力デバイスで、前記外部インターフェースを介して前記書き込みコマンドを受け取る工程と、
前記書き込みコマンドを受け取る前記工程に続いて、前記書き込みコマンドの前記論理ブロックアドレスに対応するシャドウマップ更新を送る工程と
を有するものである方法。
【０１３６】
ＥＣ６２）ＥＣ６１記載の方法において、さらに、
前記シャドウマップ更新に従って前記マップの前記シャドウコピーを更新する工程を有するものであり、
前記更新する工程は、前記書き込みコマンドの前記論理ブロックアドレスと関連付けられた前記マップの前記シャドウコピーの前記エントリを有効とマークする方法。
【０１３７】
ＥＣ６３）ＥＣ６２記載の方法において、前記更新する工程は前記入出力デバイスによるものである方法。
【０１３８】
ＥＣ６４）ＥＣ５０記載の方法において、さらに、
前記マップの前記シャドウコピーを前記入出力デバイスに接続されたコンピューティングホストのメモリに記憶する工程を有するものである方法。
【０１３９】
ＥＣ６５）ＥＣ６４記載の方法において、さらに、
前記マップの前記シャドウコピーへの前記更新を前記入出力デバイスから前記コンピューティングホストに送る工程を有するものである方法。
【０１４０】
ＥＣ６６）ＥＣ６４記載の方法において、前記コンピューティングホストの前記メモリは前記コンピューティングホストのメインメモリを有する方法。
【０１４１】
ＥＣ６７）ＥＣ６４記載の方法において、前記コンピューティングホストの前記メモリは前記コンピューティングホストの入出力空間メモリを有する方法。
【０１４２】
ＥＣ６８）ＥＣ６７記載の方法において、前記コンピューティングホストの前記メモリは、ＰＣＩｅアドレス空間において前記入出力デバイスによってアクセス可能である方法。
【０１４３】
ＥＣ６９）ＥＣ６４記載の方法において、前記マップは前記不揮発性メモリに不揮発的に記憶される方法。
【０１４４】
ＥＣ７０）ＥＣ６９記載の方法において、前記コンピューティングホストの前記メモリは揮発性メモリを有する方法。
【０１４５】
ＥＣ７１）ＥＣ４６記載の方法において、前記マップは２レベルマップを有する方法。
【０１４６】
ＥＣ７２）ＥＣ７１記載の方法において、
前記マップは第１レベルおよび第２レベルを有し、
前記マップの前記シャドウコピーは前記マップの前記第２レベルに対応する方法。
【０１４７】
ＥＣ７３）方法であって、
入出力デバイスで、外部インターフェースを介して書き込みコマンドを受け取る工程と、
前記書き込みコマンドのデータを不揮発性メモリ（ＮＶＭ）内の所定の位置に書き込む工程と、
前記書き込みコマンドの論理ブロックアドレス（ＬＢＡ）とマップ内の前記不揮発性メモリ内の前記位置との関連付けを記憶する工程と、
前記不揮発性メモリ内の前記位置に基づいた情報を有する更新情報を前記マップのシャドウコピーに送る工程と
を有する方法。
【０１４８】
ＥＣ７４）ＥＣ７３記載の方法において、前記マップは２レベルマップを有する方法。
【０１４９】
ＥＣ７５）ＥＣ７４記載の方法において、
前記マップは第１レベルおよび第２レベルを有し、
前記マップの前記シャドウコピーは前記マップの前記第２レベルに対応する方法。
【０１５０】
ＥＣ７６）ＥＣ７３記載の方法において、前記不揮発性メモリ内の前記位置に従った前記情報は、前記不揮発性メモリの１若しくはそれ以上の読み出し単位のうちの第１の読み出し単位のアドレスおよび読み出し単位での長さを有する方法。
【０１５１】
ＥＣ７７）ＥＣ７３記載の方法において、さらに、
前記マップの前記シャドウコピーを前記入出力デバイスに接続されたコンピューティングホストのメモリに記憶する工程を有するものである方法。
【０１５２】
ＥＣ７８）ＥＣ７７記載の方法において、さらに、
前記マップの前記シャドウコピーへの前記更新を前記入出力デバイスから前記コンピューティングホストに送る工程を有するものである方法。
【０１５３】
ＥＣ７９）ＥＣ７７記載の方法において、前記コンピューティングホストの前記メモリは前記コンピューティングホストのメインメモリを有する方法。
【０１５４】
ＥＣ８０）ＥＣ７７記載の方法において、前記コンピューティングホストの前記メモリは前記コンピューティングホストの入出力空間メモリを有する方法。
【０１５５】
ＥＣ８１）ＥＣ８０記載の方法において、前記コンピューティングホストの前記メモリは、ＰＣＩｅアドレス空間において前記入出力デバイスによってアクセス可能である方法。
【０１５６】
ＥＣ８２）ＥＣ８０記載の方法において、さらに、
前記マップの前記シャドウコピーへの前記更新を前記入出力デバイスから前記コンピューティングホストの前記入出力空間メモリに送る工程を有するものである方法。
【０１５７】
ＥＣ８３）ＥＣ８２記載の方法において、前記更新を送る前記工程はＰＣＩｅ書き込み要求を送る工程を有する方法。
【０１５８】
ＥＣ８４）ＥＣ８２記載の方法において、前記更新を送る前記工程は前記マップの前記シャドウコピーの読み出し−変更−書き込みを有する方法。
【０１５９】
ＥＣ８５）ＥＣ８２記載の方法において、さらに、
前記入出力デバイスが読み出しコマンドを実行する前に、前記マップの前記シャドウコピーから前記読み出しコマンドの論理ブロックアドレス（ＬＢＡ）の変換をフェッチする工程を有するものである方法。
【０１６０】
ＥＣ８６）ＥＣ８５記載の方法において、前記フェッチする工程は前記入出力デバイスによるものである方法。
【０１６１】
ＥＣ８７）ＥＣ８６記載の方法において、前記フェッチする工程はＰＣＩｅ読み出し要求を送る工程を有する方法。
【０１６２】
ＥＣ８８）ＥＣ８５記載の方法において、前記フェッチする工程は前記コンピューティングホストによるものであり、前記読み出しコマンドは予めマッピングされた読み出しコマンドである方法。
【０１６３】
ＥＣ８９）ＥＣ７７記載の方法において、前記マップは前記不揮発性メモリに不揮発的に記憶される方法。
【０１６４】
ＥＣ９０）ＥＣ８９記載の方法において、前記コンピューティングホストの前記メモリは揮発性メモリを有する方法。
【０１６５】
ＥＣ９１）方法であって、
入出力デバイスのマップのシャドウコピーを初期化して、当該マップのシャドウコピーの複数のエントリのすべてを無効とマークする工程と、
前記入出力デバイスから前記マップの前記シャドウコピーに対する更新を受け取る工程と、
前記マップの前記シャドウコピーに対する更新に従って、前記マップの前記シャドウコピーのエントリのうちの少なくとも１つを有効とマークする工程と
を有する方法。
【０１６６】
ＥＣ９２）ＥＣ９１記載の方法において、前記更新に従ってマークする前記工程は、前記更新の変換論理ブロックアドレス（ＬＢＡ）情報を前記エントリのうちの前記少なくとも１つと関連付ける工程をさらに有するものである方法。
【０１６７】
ＥＣ９３）ＥＣ９２記載の方法において、前記変換された論理ブロックアドレス情報は前記入出力デバイスの不揮発性メモリ（ＮＶＭ）内の位置を有する方法。
【０１６８】
ＥＣ９４）ＥＣ９１記載の方法において、前記マップの前記シャドウコピーの前記エントリの各々は、前記入出力デバイスの少なくとも１つの論理ブロックアドレス（ＬＢＡ）を、前記入出力デバイスの不揮発性メモリ（ＮＶＭ）内の位置と選択的に関連付ける方法。
【０１６９】
ＥＣ９５）ＥＣ９１記載の方法において、前記入出力デバイスの前記マップは２レベルマップを有する方法。
【０１７０】
ＥＣ９６）ＥＣ９５記載の方法において、
前記入出力デバイスの前記マップは第１レベルおよび第２レベルを有し、
前記マップの前記シャドウコピーは前記入出力デバイスの前記マップの前記第２レベルに対応する方法。
【０１７１】
ＥＣ９７）ＥＣ９１記載の方法において、さらに、
前記マップの前記シャドウコピーを前記入出力デバイスに接続されたコンピューティングホストのメモリに記憶する工程を有するものである方法。
【０１７２】
ＥＣ９８）ＥＣ９７記載の方法において、さらに、
前記マップの前記シャドウコピーへの前記更新を前記入出力デバイスから前記コンピューティングホストに送る工程を有するものである方法。
【０１７３】
ＥＣ９９）ＥＣ９７記載の方法において、前記コンピューティングホストの前記メモリは前記コンピューティングホストのメインメモリを有する方法。
【０１７４】
ＥＣ１００）ＥＣ９７記載の方法において、前記コンピューティングホストの前記メモリは前記コンピューティングホストの入出力空間メモリを有する方法。
【０１７５】
ＥＣ１０１）ＥＣ１００記載の方法において、前記コンピューティングホストの前記メモリは、ＰＣＩｅアドレス空間において前記入出力デバイスによってアクセス可能である方法。
【０１７６】
ＥＣ１０２）ＥＣ１００記載の方法において、さらに、
前記マップの前記シャドウコピーへの前記更新を前記入出力デバイスから前記コンピューティングホストの前記入出力空間メモリに送る工程を有するものである方法。
【０１７７】
ＥＣ１０３）ＥＣ１０２記載の方法において、前記更新を送る前記工程はＰＣＩｅ書き込み要求を送る工程を有する方法。
【０１７８】
ＥＣ１０４）ＥＣ１０２記載の方法において、前記更新を送る前記工程は前記マップの前記シャドウコピーの読み出し−変更−書き込みを有する方法。
【０１７９】
ＥＣ１０５）ＥＣ１０２記載の方法において、さらに、
前記入出力デバイスが読み出しコマンドを実行する前に、前記マップの前記シャドウコピーから前記読み出しコマンドの論理ブロックアドレス（ＬＢＡ）の変換をフェッチする工程を有するものである方法。
【０１８０】
ＥＣ１０６）ＥＣ１０５記載の方法において、前記フェッチする工程は前記入出力デバイスによるものである方法。
【０１８１】
ＥＣ１０７）ＥＣ１０６記載の方法において、前記フェッチする工程はＰＣＩｅ読み出し要求を送る工程を有する方法。
【０１８２】
ＥＣ１０８）ＥＣ１０５記載の方法において、前記フェッチする工程は前記コンピューティングホストによるものであり、前記読み出しコマンドは予めマッピングされた読み出しコマンドである方法。
【０１８３】
ＥＣ１０９）ＥＣ９７記載の方法において、前記マップは前記入出力デバイスの不揮発性メモリ（ＮＶＭ）に不揮発的に記憶される方法。
【０１８４】
ＥＣ１１０）ＥＣ１０９記載の方法において、前記コンピューティングホストの前記メモリは揮発性メモリを有する方法。
【０１８５】
ＥＣ１１１）方法であって、
入出力デバイスに対する要求が読み出し要求であるかどうかを決定する工程であって、
前記入出力デバイスは複数のエントリを有するマップを有し、当該マップの複数のエントリのうちの少なくともいくつかのエントリの各々は、前記入出力デバイスの各論理ブロックアドレス（ＬＢＡ）を、前記入出力デバイスの不揮発性メモリ（ＮＶＭ）内の所定の位置を選択的に有する各変換された論理ブロックアドレス情報にマップするものであり、
前記マップのシャドウコピーは対応する複数のエントリを有するものである、
前記決定する工程と、
前記要求が読み出し要求である場合、当該読み出し要求の論理ブロックアドレスと関連付けられた前記マップの前記シャドウコピーの前記エントリのうちの特定の１つが有効であるかどうかを決定する工程と、
前記特定のエントリが有効である場合、前記特定のエントリに基づいた、前記各変換された論理ブロックアドレス情報の少なくとも一部分を有する予めマッピングされた読み出しコマンドを前記入出力デバイスに選択的に送る工程と
を有する方法。
【０１８６】
ＥＣ１１２）ＥＣ１１１記載の方法において、
前記マップのシャドウコピーの前記エントリの各々は前記マップ内のそれぞれのエントリに対応し、
前記マップの前記エントリのうちの前記少なくともいくつかのエントリ各々は、前記各論理ブロックアドレスによってマップされた前記各変換された論理ブロックアドレス情報を有し、
前記マップの前記エントリのうちの前記少なくともいくつかのうちの１つに対応する前記マップのシャドウコピーの前記エントリの各々は、前記各変換された論理ブロックアドレス情報の少なくとも一部分を有するものである方法。
【０１８７】
ＥＣ１１３）ＥＣ１１１記載の方法において、前記マップの前記複数のエントリは第２レベルのマップである方法。
【０１８８】
ＥＣ１１４）ＥＣ１１３記載の方法において、前記入出力デバイスは第１レベルのマップをさらに有するものである方法。
【０１８９】
ＥＣ１１５）ＥＣ１１１記載の方法において、前記それぞれの変換された論理ブロックアドレス情報の前記少なくとも一部分は、前記不揮発性メモリ内の前記位置または前記それぞれの論理ブロックアドレスが前記不揮発性メモリに存在しないという指示を選択的に有する方法。
【０１９０】
ＥＣ１１６）ＥＣ１１５記載の方法において、前記選択的に送る工程は、前記特定のエントリに従った前記それぞれの変換された論理ブロックアドレス情報の前記少なくとも一部分が、前記読み出し要求の前記論理ブロックアドレスが前記不揮発性メモリに存在しないことを指示するかどうか決定する工程を有する方法。
【０１９１】
ＥＣ１１７）ＥＣ１１６記載の方法において、前記選択的に送る工程は、前記特定のエントリに従った前記それぞれの変換された論理ブロックアドレス情報の前記少なくとも一部分が、前記読み出し要求の前記論理ブロックアドレスが前記不揮発性メモリに存在することを指示する場合に、単に前記入出力デバイスに前記予めマッピングされた読み出しコマンドを送る工程をさらに有するものである方法。
【０１９２】
ＥＣ１１８）ＥＣ１１７記載の方法において、前記読み出し要求の前記論理ブロックアドレスが切り捨てられる場合には、前記特定のエントリに従った前記それぞれの変換された論理ブロックアドレス情報の前記少なくとも一部分は、前記読み出し要求の前記論理ブロックアドレスが前記不揮発性メモリに存在しないことを指示する方法。
【０１９３】
ＥＣ１１９）ＥＣ１１１記載の方法において、前記それぞれの変換された論理ブロックアドレス情報の前記少なくとも一部分は、前記不揮発性メモリの１若しくはそれ以上の読み出し単位のうちの第１の読み出し単位のアドレスおよび読み出し単位での長さを選択的に有する方法。
【０１９４】
ＥＣ１２０）ＥＣ１１９記載の方法において、前記１若しくはそれ以上の読み出し単位の各々のサイズは少なくとも５１２バイトである方法。
【０１９５】
ＥＣ１２１）ＥＣ１１１記載の方法において、さらに、
前記特定のエントリが無効である場合に、前記入出力デバイスに前記読み出し要求の前記論理ブロックアドレスを有する標準読み出しコマンドを送る工程を有するものである方法。
【０１９６】
ＥＣ１２２）ＥＣ１１１記載の方法において、さらに、
前記要求が書き込み要求である場合に、前記書き込み要求の論理ブロックアドレスと関連付けられた前記マップの前記シャドウコピーの前記エントリのうちの１つを無効とマークする工程を有するものである方法。
【０１９７】
ＥＣ１２３）ＥＣ１１１記載の方法において、前記マップの前記シャドウコピーの各エントリは、有効性指示、および前記マップの対応するエントリからの少なくともいくつかのコンテンツのコピーを有する方法。
【０１９８】
ＥＣ１２４）ＥＣ１２３記載の方法において、前記特定のエントリが有効である場合に、前記マップ内の前記対応するエントリからの少なくともいくつかのコンテンツの前記コピーは、前記マップの前記対応するエントリからの前記少なくともいくつかのコンテンツと同じである方法。
【０１９９】
ＥＣ１２５）ＥＣ１２３記載の方法において、前記マップの前記シャドウコピーの有効なエントリは前記マップの有効なエントリの部分集合である方法。
【０２００】
ＥＣ１２６）ＥＣ１２５記載の方法において、前記部分集合は真部分集合である方法。
【０２０１】
ＥＣ１２７）ＥＣ１１１記載の方法において、前記マップの前記シャドウコピーの前記エントリの各々は、無効であり、または前記マップの対応するエントリに従った情報を有する方法。
【０２０２】
ＥＣ１２８）ＥＣ１１１記載の方法において、前記入出力デバイスの前記マップは２レベルマップを有する方法。
【０２０３】
ＥＣ１２９）ＥＣ１２８記載の方法において、
前記入出力デバイスの前記マップは第１レベルおよび第２レベルを有し、
前記マップの前記シャドウコピーは前記入出力デバイスの前記マップの前記第２レベルに対応する方法。
【０２０４】
ＥＣ１３０）ＥＣ１１１記載の方法において、前記マップの前記シャドウコピーの前記エントリの各々は有効性の指示を有する方法。
【０２０５】
ＥＣ１３１）ＥＣ１３０記載の方法において、前記マップの前記シャドウコピーの前記有効なエントリの各々は、前記論理ブロックアドレスのうちのそれぞれの１若しくはそれ以上を、前記不揮発性メモリ内のそれぞれの位置と選択的に関連付ける方法。
【０２０６】
ＥＣ１３２）ＥＣ１３１記載の方法において、前記マップの前記シャドウコピーの前記有効なエントリのうちの少なくとも１つは、前記有効なエントリのうちの前記少なくとも１つと関連付けられた前記それぞれの論理ブロックアドレスのうちの少なくとも１つが前記不揮発性メモリに存在しないことを選択的に指定する方法。
【０２０７】
ＥＣ１３３）ＥＣ１３２記載の方法において、前記有効なエントリのうちの前記少なくとも１つと関連付けられた前記それぞれの論理ブロックアドレスのうちの前記少なくとも１つは切り捨てられる方法。
【０２０８】
ＥＣ１３４）ＥＣ１３０記載の方法において、前記マップの前記シャドウコピーの前記有効なエントリの各々は前記不揮発性メモリ内のそれぞれの位置を選択的に指定する方法。
【０２０９】
ＥＣ１３５）ＥＣ１３０記載の方法において、さらに、
最初に前記マップの前記シャドウコピーのすべての前記エントリを無効とマークする工程を有するものである方法。
【０２１０】
ＥＣ１３６）ＥＣ１１１記載の方法において、さらに、
前記マップの前記シャドウコピーを前記入出力デバイスに接続されたコンピューティングホストのメモリに記憶する工程を有するものである方法。
【０２１１】
ＥＣ１３７）ＥＣ１３６記載の方法において、さらに、
前記入出力デバイスから前記マップの前記シャドウコピーへの更新を受け取る工程を有するものである方法。
【０２１２】
ＥＣ１３８）ＥＣ１３６記載の方法において、前記コンピューティングホストの前記メモリは前記コンピューティングホストのメインメモリを有する方法。
【０２１３】
ＥＣ１３９）ＥＣ１３６記載の方法において、前記コンピューティングホストの前記メモリは前記コンピューティングホストの入出力空間メモリを有する方法。
【０２１４】
ＥＣ１４０）ＥＣ１３９記載の方法において、前記コンピューティングホストの前記メモリは、ＰＣＩｅアドレス空間において前記入出力デバイスによってアクセス可能である方法。
【０２１５】
ＥＣ１４１）ＥＣ１３９記載の方法において、さらに、
前記マップの前記シャドウコピーへの前記更新を前記入出力デバイスから前記コンピューティングホストの前記入出力空間メモリに送る工程を有するものである方法。
【０２１６】
ＥＣ１４２）ＥＣ１４１記載の方法において、前記更新を送る前記工程はＰＣＩｅ書き込み要求を送る工程を有する方法。
【０２１７】
ＥＣ１４３）ＥＣ１４１記載の方法において、前記更新を送る前記工程はマップのシャドウコピーの読み出し−変更−書き込みを有する方法。
【０２１８】
ＥＣ１４４）ＥＣ１４１記載の方法において、さらに、
前記入出力デバイスが特定のコマンドを実行する前に、前記マップの前記シャドウコピーから前記特定のコマンドの論理ブロックアドレスの変換をフェッチする工程を有するものである方法。
【０２１９】
ＥＣ１４５）ＥＣ１４４記載の方法において、前記フェッチする工程は前記入出力デバイスによるものである方法。
【０２２０】
ＥＣ１４６）ＥＣ１４５記載の方法において、前記フェッチする工程はＰＣＩｅ読み出し要求を送る工程を有する方法。
【０２２１】
ＥＣ１４７）ＥＣ１４４記載の方法において、前記フェッチする工程は前記コンピューティングホストによるものである方法。
【０２２２】
ＥＣ１４８）ＥＣ１４７記載の方法において、前記特定のコマンドは予めマッピングされた読み出しコマンドである方法。
【０２２３】
ＥＣ１４９）ＥＣ１３６記載の方法において、前記マップは前記不揮発性メモリに不揮発的に記憶される方法。
【０２２４】
ＥＣ１５０）ＥＣ１４９記載の方法において、前記コンピューティングホストの前記メモリは揮発性メモリを有する方法。
【０２２５】
ＥＣ１５１）方法であって、
低電力状態を開始するという指示を入出力デバイスで受け取る工程と、
前記入出力デバイスの内部状態をコンピューティングホストのシステムアクセス可能メモリに保存する工程と、
前記低電力状態を終了するという指示を前記入出力デバイスで受け取る工程と、
前記システムアクセス可能メモリから前記入出力デバイスの前記内部状態を復元する工程と
を有する方法。
【０２２６】
ＥＣ１５２）ＥＣ１５１記載の方法において、前記コンピューティングホストの前記システムアクセス可能メモリは前記コンピューティングホストのメインメモリを有する方法。
【０２２７】
ＥＣ１５３）ＥＣ１５１記載の方法において、前記コンピューティングホストの前記システムアクセス可能メモリは前記コンピューティングホストの入出力空間メモリを有する方法。
【０２２８】
ＥＣ１５４）ＥＣ１５３記載の方法において、前記コンピューティングホストの前記システムアクセス可能メモリは、ＰＣＩｅアドレス空間において前記入出力デバイスによってアクセス可能である方法。
【０２２９】
ＥＣ１５５）システムであって、
コンピューティングホストに接続された入出力デバイスと、
前記入出力デバイスの論理ブロックアドレス（ＬＢＡ）を前記入出力デバイスの不揮発性メモリ（ＮＶＭ）内の所定の位置と選択的に関連付ける前記入出力デバイスのマップと、
前記コンピューティングホストのメモリ内の前記マップのシャドウコピーと
を有し、
前記マップのシャドウコピーにアクセスするために前記入出力デバイスを対象とする少なくともいくつかの動作が有効化され、それにより、前記入出力デバイスの不揮発性メモリ内の所定の位置が決定されるものである、
システム。
【０２３０】
ＥＣ１５６）ＥＣ１５５記載のシステムにおいて、前記少なくともいくつかの動作は前記マップにアクセスために有効化されていないものであるシステム。
【０２３１】
ＥＣ１５７）ＥＣ１５５記載のシステムにおいて、
前記マップの前記シャドウコピーは複数のエントリを有し、当該エントリの各々は前記論理ブロックアドレスの各々のうちの１つと関連付けられており、当該エントリの各々は有効性の指示を有し、
前記マップのシャドウコピーの前記有効なエントリのうちの少なくとも１つは、前記有効なエントリのうちの前記少なくとも１つと関連付けられた前記各論理ブロックアドレスが前記不揮発性メモリに存在しないことを選択的に特定するシステム。
【０２３２】
ＥＣ１５８）ＥＣ１５７記載のシステムにおいて、前記有効なエントリのうちの前記少なくとも１つと関連付けられた前記それぞれの論理ブロックアドレスは切り捨てられるシステム。
【０２３３】
ＥＣ１５９）ＥＣ１５５記載のシステムにおいて、前記コンピューティングホストの前記メモリは前記コンピューティングホストのメインメモリを有するシステム。
【０２３４】
ＥＣ１６０）ＥＣ１５５記載のシステムにおいて、前記コンピューティングホストの前記メモリは前記コンピューティングホストの入出力空間メモリを有するシステム。
【０２３５】
ＥＣ１６１）ＥＣ１６０記載のシステムにおいて、前記コンピューティングホストの前記入出力空間メモリは、ＰＣＩｅアドレス空間において前記入出力デバイスによってアクセス可能であるシステム。
【０２３６】
ＥＣ１６２）ＥＣ１６１記載のシステムにおいて、さらに、
前記入出力デバイスと前記コンピューティングホストの前記入出力空間メモリとを含む入出力カードを有するものであるシステム。
【０２３７】
ＥＣ１６３）ＥＣ１６２記載のシステムにおいて、前記入出力デバイスは、前記入出力カード上の複数の入出力デバイスのうちの第１の入出力デバイスであり、前記コンピューティングホストの前記入出力空間メモリは前記複数の入出力デバイス間で共用されるシステム。
【０２３８】
ＥＣ１６４）ＥＣ１６２記載のシステムにおいて、前記入出力カードは前記コンピューティングホストの前記メモリを有するシステム。
【０２３９】
ＥＣ１６５）ＥＣ１６２記載のシステムにおいて、
前記入出力カードはスイッチを有し、
前記入出力デバイスと前記コンピューティングホストの前記メモリとは各々前記スイッチに接続されているシステム。
【０２４０】
ＥＣ１６６）ＥＣ１６５記載のシステムにおいて、
前記入出力デバイスは複数の入出力デバイスのうちの第１の入出力デバイスであり、
前記入出力デバイスの各々は前記スイッチに接続されているシステム。
【０２４１】
ＥＣ１６７）ＥＣ１６５記載のシステムにおいて、前記コンピューティングホストの前記メモリは前記スイッチに直接接続されているシステム。
【０２４２】
ＥＣ１６８）ＥＣ１５５記載のシステムにおいて、前記マップは前記入出力デバイスに直接接続されているシステム。
【０２４３】
ＥＣ１６９）ＥＣ１５５記載のシステムにおいて、前記マップは前記不揮発性メモリに記憶されるシステム。
【０２４４】
ＥＣ１７０）ＥＣ１５５記載のシステムにおいて、前記マップの前記シャドウコピーは前記入出力デバイスに直接接続されていないシステム。
【０２４５】
ＥＣ１７１）ＥＣ１５５記載のシステムにおいて、前記マップは２レベルマップを有するシステム。
【０２４６】
ＥＣ１７２）ＥＣ１７１記載のシステムにおいて、
前記マップは第１レベルおよび第２レベルを有し、
前記マップの前記シャドウコピーは前記マップの前記第２レベルに対応するシステム。
【０２４７】
ＥＣ１７３）ＥＣ１５５記載のシステムにおいて、前記マップは前記不揮発性メモリに不揮発的に記憶されるシステム。
【０２４８】
ＥＣ１７４）ＥＣ１７３記載のシステムにおいて、前記コンピューティングホストの前記メモリは揮発性メモリを有するシステム。
【０２４９】
ＥＣ１７５）システムであって、
コンピューティングホストに接続された入出力デバイスと、
前記コンピューティングホストによってアクセス可能なメモリであって、当該メモリは前記入出力デバイスに直接接続されていないものである、前記メモリと
を有し、
前記入出力デバイスの状態は、前記コンピューティングホストによってアクセス可能な前記メモリに記憶されるものである、
システム。
【０２５０】
ＥＣ１７６）ＥＣ１７５記載のシステムにおいて、さらに、
前記入出力デバイスの論理ブロックアドレス（ＬＢＡ）を前記入出力デバイスの不揮発性メモリ（ＮＶＭ）内の所定の位置と選択的に関連付ける入出力デバイスのマップを有するものであり、
前記コンピューティングホストによってアクセス可能な前記メモリに記憶された前記入出力デバイスの前記状態は、前記コンピューティングホストによってアクセス可能な前記メモリに記憶された前記マップのシャドウコピーを有し、
前記マップは前記不揮発性メモリに不揮発的に記憶されるものであるシステム。
【０２５１】
ＥＣ１７７）ＥＣ１７６記載のシステムにおいて、
前記マップのシャドウコピーは複数のエントリを有し、当該エントリの各々は前記論理ブロックアドレスの各々のうちの１つと関連付けられており、当該エントリの各々は有効性の指示を有し、
前記マップのシャドウコピーの前記有効なエントリのうちの少なくとも１つは、前記有効なエントリのうちの前記少なくとも１つと関連付けられた前記各論理ブロックアドレスが前記不揮発性メモリに存在しないことを選択的に特定するものであるシステム。
【０２５２】
ＥＣ１７８）ＥＣ１７５記載のシステムにおいて、前記コンピューティングホストによってアクセス可能な前記メモリは前記コンピューティングホストのメインメモリを有するシステム。
【０２５３】
ＥＣ１７９）ＥＣ１７５記載のシステムにおいて、前記コンピューティングホストによってアクセス可能な前記メモリは前記コンピューティングホストの入出力空間メモリを有するシステム。
【０２５４】
ＥＣ１８０）ＥＣ１７９記載のシステムにおいて、前記コンピューティングホストの前記入出力空間メモリは、ＰＣＩｅアドレス空間において前記入出力デバイスによってアクセス可能であるシステム。
【０２５５】
ＥＣ１８１）ＥＣ１７５記載のシステムにおいて、前記コンピューティングホストによってアクセス可能な前記メモリに記憶された前記入出力デバイスの前記状態は前記入出力デバイスの内部状態を有するシステム。
【０２５６】
ＥＣ１８２）ＥＣ１８１記載のシステムにおいて、前記入出力デバイスの前記内部状態は、前記入出力デバイスが低電力状態を開始するときに失われる状態を有するシステム。
【０２５７】
ＥＣ１８３）ＥＣ１８２記載のシステムにおいて、前記低電力状態を開始するよう求める要求に応答して、前記入出力デバイスは、前記入出力デバイスが前記低電力状態を開始するときに失われる前記状態を、前記コンピューティングホストによってアクセス可能な前記メモリに記憶することができるようにしたシステム。
【０２５８】
ＥＣ１８４）ＥＣ１７５記載のシステムにおいて、前記コンピューティングホストによってアクセス可能な前記メモリは揮発性メモリを有するシステム。
【０２５９】
ＥＣ１８５）方法であって、
ストレージにアクセスするよう求めるコマンドを受け取る工程であって、前記コマンドはアクセスタイプを指定し、１若しくはそれ以上のパラメータを有するものである、前記受け取る工程と、
前記ストレージの位置を決定する工程と
を有し、前記決定する工程は、含まれるデータ構造を条件付きで参照して前記位置を確認する工程を有し、前記参照する工程は、前記パラメータのうちの１若しくはそれ以上が前記位置の仕様を有する場合は省略されるものである、
方法。
【０２６０】
ＥＣ１８６）ＥＣ１８５記載の方法において、前記仕様は、
前記ストレージの領域の指示、
前記ストレージの物理的アドレスの指示、
前記ストレージのデータの長さ、および
前記ストレージのデータの範囲
のうちの１若しくはそれ以上を有する方法。
【０２６１】
ＥＣ１８７）ＥＣ１８５記載の方法において、前記含まれるデータ構造は、それぞれの１若しくはそれ以上の論理ブロックアドレス（ＬＢＡ）と関連付けられたデータが前記ストレージ内のどこに位置するかを各々が記述する１若しくはそれ以上のエントリを有する方法。
【０２６２】
ＥＣ１８８）ＥＣ１８７記載の方法において、前記エントリの各々は、前記それぞれの論理ブロックアドレスと関連付けられた１若しくはそれ以上の属性をさらに選択的に記述するものである方法。
【０２６３】
ＥＣ１８９）ＥＣ１８７記載の方法において、前記エントリの各々は、前記ストレージの１若しくはそれ以上の領域と関連付けられた１若しくはそれ以上の属性をさらに記述するものである方法。
【０２６４】
ＥＣ１９０）ＥＣ１８５記載の方法において、さらに、
前記受け取る工程の前に、前記含まれるデータ構造への変更を記述する更新を提供する工程を有するものである方法。
【０２６５】
ＥＣ１９１）ＥＣ１９０記載の方法において、前記コマンドはコンピューティングホストによって提供され、前記更新は前記コンピューティングホストに提供される方法。
【０２６６】
ＥＣ１９２）ＥＣ１９０記載の方法において、前記更新は前記位置の前記仕様を有する方法。
【０２６７】
ＥＣ１９３）ＥＣ１９２記載の方法において、前記コマンドは論理ブロックアドレス（ＬＢＡ）に従ったものであり、前記提供する工程は前記論理ブロックアドレスに書き込みコマンドを提供したことに応答したものである方法。
【０２６８】
ＥＣ１９４）ＥＣ１９２記載の方法において、前記提供する工程は、前記ストレージの少なくともいくらかを実施する不揮発性メモリ（ＮＶＭ）の１若しくはそれ以上の部分を再利用し、および/または再配置したことに応答したものである方法。
【０２６９】
ＥＣ１９５）ＥＣ１８５記載の方法において、前記受け取る工程および前記決定する工程は、入出力記憶デバイスによるものである方法。
【０２７０】
ＥＣ１９６）ＥＣ１８５記載の方法において、前記コマンドはコンピューティングホストによって提供される方法。
【０２７１】
ＥＣ１９７）ＥＣ１８５記載の方法において、前記パラメータは標準パラメータおよび非標準パラメータを有し、前記標準パラメータは規格によって定義され、前記非標準パラメータは前記規格によって定義されず、前記非標準パラメータは、前記仕様を有する前記パラメータを有する方法。
【０２７２】
ＥＣ１９８）ＥＣ１８５記載の方法において、前記コマンドは規格によって定義され、前記仕様を有する前記パラメータは前記規格によって定義されない方法。
【０２７３】
ＥＣ１９９）ＥＣ１９７またはＥＣ１９８記載の方法において、前記仕様を有する前記パラメータは、
予約コマンドコード、
ベンダ特有のパラメータ、
予約フィールド、
不使用フィールド、および
機能レジスタ内の値
のうちの１若しくはそれ以上を有する方法。
【０２７４】
ＥＣ２００）ＥＣ１８５記載の方法において、さらに、
前記アクセスタイプおよび前記位置に従って前記ストレージのアクセスを実行する工程を有するものである方法。
【０２７５】
ＥＣ２０１）ＥＣ２００記載の方法において、前記アクセスタイプは読み出しアクセスタイプであり、前記アクセスは読み出しアクセスである方法。
【０２７６】
ＥＣ２０２）ＥＣ２０１記載の方法において、前記パラメータは前記仕様を有する方法。
【０２７７】
ＥＣ２０３）ＥＣ２０２記載の方法において、前記コマンドは予めマッピングされた読み出しコマンドである方法。
【０２７８】
ＥＣ２０４）ＥＣ１８５記載の方法において、前記位置は第１の位置であり、さらに、
前記アクセスタイプおよび第２の位置に従って前記ストレージのアクセスを行う工程を有するものである方法。
【０２７９】
ＥＣ２０５）ＥＣ２０４記載の方法において、前記アクセスタイプは書き込みアクセスタイプであり、前記アクセスは書き込みアクセスである方法。
【０２８０】
ＥＣ２０６）ＥＣ２０５記載の方法において、さらに、
前記含まれるデータ構造への変更を記述する更新を提供する工程であって、前記更新は前記第２の位置の指定を有するものである、提供する工程を有するものである方法。
【０２８１】
ＥＣ２０７）ＥＣ２０５記載の方法において、さらに、
前記仕様に従って前記ストレージの使用状況の計算を修正する工程を有するものである方法。
【０２８２】
ＥＣ２０８）ＥＣ１８５記載の方法において、前記コマンドは切り捨てコマンドであり、前記アクセスタイプは切り捨てアクセスタイプである方法。
【０２８３】
ＥＣ２０９）ＥＣ２０８記載の方法において、さらに、
前記含まれるデータ構造への変更を記述する更新を提供する工程であって、前記更新は、前記コマンドを受け取る前記工程の前に前記位置にマップされた論理ブロックアドレス（ＬＢＡ）の属性の仕様を有するものである、提供する工程を有するものである方法。
【０２８４】
ＥＣ２１０）ＥＣ２０９記載の方法において、前記属性は、前記論理ブロックアドレスが削減されたことを指示する方法。
【０２８５】
ＥＣ２１１）ＥＣ２０８記載の方法において、さらに、
前記仕様に従って前記ストレージの使用状況の計算を修正する工程を有するものである方法。
【０２８６】
ＥＣ２１２）方法であって、
コマンドを受け取る工程であって、当該コマンドは複数のコマンドタイプのうちの１つであり、当該コマンドタイプは第１のタイプおよび第２のタイプを有するものである、前記受け取る工程と、
前記コマンドが前記コマンドタイプのうちのどのコマンドであるかを決定する工程と、
前記コマンドが前記第１のタイプのコマンドである場合、第１の処理を行い、次いで第２の処理を行う工程と、
前記コマンドが前記第２のタイプのコマンドである場合、前記第１の処理を行わずに前記第２の処理を行う工程と
を有し、
前記第２の処理は、前記コマンドが前記第１のタイプのものである場合、前記第１の処理によって生成される情報を使用し、前記コマンドが前記第２のタイプのものである場合、当該コマンドによって提供される情報を使用するものである、
方法。
【０２８７】
ＥＣ２１３）ＥＣ２１２記載の方法において、前記コマンドは入出力記憶デバイスのストレージにアクセスするものである方法。
【０２８８】
ＥＣ２１４）ＥＣ２１３記載の方法において、前記第１の処理は、含まれるデータ構造にアクセスして前記情報を生成する工程を有する方法。
【０２８９】
ＥＣ２１５）ＥＣ２１４記載の方法において、前記含まれるデータ構造は、論理ブロックアドレス（ＬＢＡ）と前記ストレージの少なくともいくらかを実施する不揮発性メモリ（ＮＶＭ）の物理アドレスとの間のマッピングを記述するマップであり、前記情報は前記マッピングのうちの１つの少なくとも一部を有する方法。
【０２９０】
ＥＣ２１６）ＥＣ２１５記載の方法において、前記第１のタイプのコマンドは前記論理ブロックアドレスのうちの少なくとも１つを指定する方法。
【０２９１】
ＥＣ２１７）ＥＣ２１６記載の方法において、前記第２のタイプのコマンドは前記論理ブロックアドレスのうちのいずれも指定しない方法。
【０２９２】
ＥＣ２１８）ＥＣ２１４記載の方法において、さらに、
前記受け取る工程の前に、前記含まれるデータ構造への変更を記述する更新を提供する工程を有するものである方法。
【０２９３】
ＥＣ２１９）ＥＣ２１８記載の方法において、前記更新は前記情報の指定を有する方法。
【０２９４】
ＥＣ２２０）ＥＣ２１９記載の方法において、前記仕様は、
前記ストレージの領域の指示、
前記ストレージの物理アドレスの指示、
前記ストレージのデータの長さ、および
前記ストレージのデータの範囲
のうちの１若しくはそれ以上を有する方法。
【０２９５】
ＥＣ２２１）ＥＣ２１９記載の方法において、前記提供する工程は、前記コマンドタイプのうちの書き込みコマンドタイプを受け取ったことに応答したものである方法。
【０２９６】
ＥＣ２２２）ＥＣ２１９記載の方法において、前記提供する工程は、前記ストレージの少なくともいくらかを実施する不揮発性メモリ（ＮＶＭ）の一部分を再利用し、および/または再配置したことに応答したものである方法。
【０２９７】
ＥＣ２２３）ＥＣ２１８記載の方法において、前記コマンドはコンピューティングホストによって提供され、前記更新は前記コンピューティングホストに提供される方法。
【０２９８】
ＥＣ２２４）ＥＣ２１３記載の方法において、前記受け取る工程、前記決定する工程、および前記２つの行う動作は、前記入出力記憶デバイスによるものである方法。
【０２９９】
ＥＣ２２５）ＥＣ２１３記載の方法において、前記コマンドはコンピューティングホストによって提供される方法。
【０３００】
ＥＣ２２６）ＥＣ２１２記載の方法において、前記第１のタイプの前記コマンドは規格によって定義され、前記第２のタイプの前記コマンドは前記規格によって定義されない方法。
【０３０１】
ＥＣ２２７）ＥＣ２１２記載の方法において、前記コマンドが前記第２のタイプのものであるときに、前記情報は、
予約コマンドコード、
ベンダ特有のパラメータ、
予約フィールド、
不使用フィールド、および
機能レジスタ内の値
のうちの１若しくはそれ以上によって提供される方法。
【０３０２】
ＥＣ２２８）ＥＣ２１４記載の方法において、前記第１のタイプは読み出しタイプを有し、前記第２のタイプは予めマッピングされた読み出しタイプを有する方法。
【０３０３】
ＥＣ２２９）ＥＣ２２８記載の方法において、前記ストレージの前記アクセスは読み出しアクセスであり、前記情報は前記ストレージの位置を有し、前記第２の処理は前記位置を読み取る工程を有する方法。
【０３０４】
ＥＣ２３０）ＥＣ２１４記載の方法において、前記第１のタイプは第１の書き込みタイプを有し、前記第２のタイプは第２の書き込みタイプを有し、前記第２の書き込みタイプは、前記第１の書き込みタイプが前記情報を提供しない間に前記情報を提供する方法。
【０３０５】
ＥＣ２３１）ＥＣ２３０記載の方法において、前記ストレージの前記アクセスは書き込みアクセスであり、前記情報は前記ストレージの第１の位置を有し、前記第２の処理は、前記ストレージの第２の位置を書き込む工程と、前記第１の位置に従って前記ストレージの使用状況の計算を修正する工程とを有する方法。
【０３０６】
ＥＣ２３２）ＥＣ２３１記載の方法において、さらに、
前記含まれるデータ構造への変更を記述する更新を提供する工程であって、前記更新は前記第２の位置の指定を有するものである、提供する工程を有するものである方法。
【０３０７】
ＥＣ２３３）ＥＣ２１４記載の方法において、前記第１のタイプは第１の切り捨てタイプを有し、前記第２のタイプは第２の切り捨てタイプを有し、前記第２の切り捨てタイプは、前記第１の切り捨てタイプが前記情報を提供しない間に前記情報を提供する方法。
【０３０８】
ＥＣ２３４）ＥＣ２３３記載の方法において、前記ストレージの前記アクセスは切り捨てアクセスであり、前記情報は前記ストレージの位置を有し、前記第２の処理は、前記位置に従って前記ストレージの使用状況の計算を修正する工程を有する方法。
【０３０９】
ＥＣ２３５）ＥＣ２３４記載の方法において、さらに、
前記含まれるデータ構造への変更を記述する更新を提供する工程であって、前記更新は、前記コマンドを受け取る前記工程の前に、前記含まれるデータ構造に従って前記位置にマップされた論理ブロックアドレス（ＬＢＡ）の属性の仕様を有するものである、提供する工程を有するものである方法。
【０３１０】
ＥＣ２３６）ＥＣ２３５記載の方法において、前記属性は、前記論理ブロックアドレスが削減されたことを指示する方法。
【０３１１】
ＥＣ２３７）方法であって、
コンピューティングホストからコマンドを受け取る工程であって、前記コマンドは０若しくはそれ以上の標準パラメータおよび１若しくはそれ以上の非標準パラメータを有するものである、前記受け取る工程と、
前記標準パラメータに従って前記コマンドを実行する工程と
を有し、
前記受け取る工程および前記実行する工程は入出力記憶デバイスを介して行われるものであり、当該入出力記憶デバイスは、前記非標準パラメータを使用することにより、前記非標準パラメータを使用しない場合よりも高い効率で動作可能である
方法。
【０３１２】
ＥＣ２３８）ＥＣ２３７記載の方法において、前記入出力記憶デバイスはストレージを前記コンピューティングホストにインターフェースさせるものである方法。
【０３１３】
ＥＣ２３９）ＥＣ２３７記載の方法において、前記入出力記憶デバイスは、前記非標準パラメータを使用することにより、前記非標準パラメータを使用しない場合よりも高い効率で前記コマンドを実行するように動作可能である方法。
【０３１４】
ＥＣ２４０）ＥＣ２３９記載の方法において、さらに、
前記入出力記憶デバイスのストレージの少なくとも一部分を実施する不揮発性メモリ（ＮＶＭ）を管理する工程を有するものである方法。
【０３１５】
ＥＣ２４１）ＥＣ２４０記載の方法において、前記コマンドは読み出しコマンドであり、前記非標準パラメータのうちの１若しくはそれ以上は、少なくとも部分的に前記不揮発性メモリ内の物理位置を指定し、さらに、
前記物理位置を読み取る工程を有するものである方法。
【０３１６】
ＥＣ２４２）ＥＣ２４１記載の方法において、さらに、
前記入出力記憶デバイスが含まれる入出力デバイスマップへのマッピング更新を行う工程と、前記マッピング更新のうちの少なくともいくつかを前記コンピューティングホストに提供して、前記コンピューティングホストがコンピューティング・ホスト・マップを更新することができるようにする工程とを有するものであり、前記コンピューティング・ホスト・マップおよび前記入出力デバイスマップは、各々、論理ブロックアドレス（ＬＢＡ）と前記不揮発性メモリの位置との間のマッピングを記述するそれぞれのエントリを有し、前記非標準パラメータのうちの少なくとも１つは、少なくとも部分的に前記コンピューティング・ホスト・マップにアクセスすることによって決定される方法。
【０３１７】
ＥＣ２４３）ＥＣ２４２記載の方法において、前記コンピューティング・ホスト・マップにアクセスするための待ち時間は、前記入出力デバイスマップにアクセスするための待ち時間よりも短く、より前記高い効率はより低い待ち時間を有する方法。
【０３１８】
ＥＣ２４４）ＥＣ２４０記載の方法において、前記コマンドは書き込みコマンドであり、前記非標準パラメータのうちの１若しくはそれ以上は、少なくとも部分的に前記不揮発性メモリ内の第１の物理位置を指定し、さらに、
前記不揮発性メモリ内の第２の物理位置を書き込む工程と、前記第１の物理位置に従って前記ストレージの使用状況の計算を修正する工程とを有するものである方法。
【０３１９】
ＥＣ２４５）ＥＣ２４４記載の方法において、さらに、
前記入出力記憶デバイスが含まれる入出力デバイスマップへのマッピング更新を行う工程と、前記マッピング更新のうちの少なくともいくつかを前記コンピューティングホストに提供して、前記コンピューティングホストがコンピューティング・ホスト・マップを更新することができるようにする工程とを有するものであり、前記コンピューティング・ホスト・マップおよび前記入出力デバイスマップは、各々、論理ブロックアドレス（ＬＢＡ）と前記不揮発性メモリの位置との間のマッピングを記述するそれぞれのエントリを有し、前記非標準パラメータのうちの少なくとも１つは、少なくとも部分的に前記コンピューティング・ホスト・マップにアクセスすることによって決定される方法。
【０３２０】
ＥＣ２４６）ＥＣ２４５記載の方法において、前記コンピューティング・ホスト・マップにアクセスするための待ち時間は、前記入出力デバイスマップにアクセスするための待ち時間よりも短く、より前記高い効率はより低い待ち時間を有する方法。
【０３２１】
ＥＣ２４７）ＥＣ２３７記載の方法において、前記コマンドは第１のコマンドであり、前記入出力記憶デバイスは、前記非標準パラメータに従って、前記非標準パラメータを使用しない場合よりも高い効率で、前記第１のコマンドの後で受け取られる第２のコマンドを実行するように動作可能である方法。
【０３２２】
ＥＣ２４８）ＥＣ２４７記載の方法において、さらに、
前記入出力記憶デバイスのストレージの少なくとも一部分を実施する不揮発性メモリ（ＮＶＭ）を管理する工程を有するものである方法。
【０３２３】
ＥＣ２４９）ＥＣ２４８記載の方法において、さらに、
前記入出力記憶デバイスが、論理ブロックアドレス（ＬＢＡ）と前記不揮発性メモリの位置との間のマッピングを記述するエントリを有する含まれるマップを管理する工程を有するものである方法。
【０３２４】
ＥＣ２５０）ＥＣ２４９記載の方法において、前記標準パラメータのうちの１若しくはそれ以上の少なくとも一部分は特定の論理ブロックアドレスを有し、さらに、
前記入出力記憶デバイスが、前記非標準パラメータから決定される少なくともいくらかの情報を、前記エントリのうちの少なくとも１つの選択されるエントリに記憶する工程を有するものであり、前記選択されるエントリは、少なくとも部分的に前記特定の論理ブロックアドレスによって選択される方法。
【０３２５】
ＥＣ２５１）ＥＣ２５０記載の方法において、前記第２のコマンドは前記特定の論理ブロックアドレスに従ったものである方法。
【０３２６】
ＥＣ２５２）ＥＣ２５０記載の方法において、前記情報は複数のデータバンドのうちの特定の１つの識別を有し、さらに、
前記入出力記憶デバイスが、前記特定の論理ブロックアドレスがマップされている前記不揮発性メモリの部分を、前記特定のデータバンド内に留まるように再利用する工程を有するものである方法。
【０３２７】
ＥＣ２５３）ＥＣ２４８記載の方法において、前記非標準パラメータのうちの少なくとも１若しくはそれ以上は、少なくとも部分的に複数のデータタイプのうちの１つを指定し、前記複数のデータタイプは、
圧縮可能データタイプ、
圧縮不能データタイプ、および
使用モデル・データ・タイプ
のうちの任意の２若しくはそれ以上を有する方法。
【０３２８】
ＥＣ２５４）ＥＣ２５３記載の方法において、前記使用モデル・データ・タイプはデータベース・ジャーナル・データ・タイプを有し、さらに、
前記入出力記憶デバイスが、前記データベース・ジャーナル・データ・タイプと関連付けられたデータを複数のデータバンドのうちのデータベース・ジャーナル用データバンドに記憶するように前記不揮発性メモリを管理する工程と、
前記入出力記憶デバイスが、前記データベース・ジャーナル用データバンドを、前記データベース・ジャーナル・バンド内のデータの量が閾値を超えるときに、前記データベース・ジャーナル・バンドのより古いデータが選択的に削除されるように管理する工程とを有するものである方法。
【０３２９】
ＥＣ２５５）ＥＣ２５４記載の方法において、さらに、
前記より古いデータが再利用されるときに前記より古いデータを削除する工程を有するものである方法。
【０３３０】
ＥＣ２５６）ＥＣ２４８記載の方法において、前記非標準パラメータのうちの少なくとも１若しくはそれ以上は、少なくとも部分的に複数のデータアクセスタイプのうちの１つを指定し、前記データアクセスタイプは、
読み出し／書き込みデータアクセスタイプ、
略読み出しデータアクセスタイプ、
略書き込みデータアクセスタイプ、および
一時データアクセスタイプ
のうちの任意の２若しくはそれ以上を有する方法。
【０３３１】
ＥＣ２５７）ＥＣ２５６記載の方法において、前記第２のコマンドは書き込みコマンドであり、さらに、
前記入出力記憶デバイスが、前記書き込みコマンドに応答して前記不揮発性メモリの特定の部分を書き込む工程であって、前記特定の部分は、少なくとも部分的に前記データアクセスタイプによって決定されるものである、書き込む工程を有するものである方法。
【０３３２】
ＥＣ２５８）ＥＣ２５７記載の方法において、前記データアクセスタイプは読み出し／書き込みデータアクセスタイプであり、前記特定の部分は、相対的に多数のプログラム／消去サイクルに耐えたことがなく、相対的に少数のプログラム／消去サイクルに耐えたことがないものである方法。
【０３３３】
ＥＣ２５９）ＥＣ２５７記載の方法において、前記データアクセスタイプは略読み出しデータアクセスタイプであり、前記特定の部分は、相対的に多数のプログラム／消去サイクルに耐えたことがあるものである方法。
【０３３４】
ＥＣ２６０）ＥＣ２５７記載の方法において、前記データアクセスタイプは略書き込みデータアクセスタイプであり、前記特定の部分は、相対的に少数のプログラム／消去サイクルに耐えたことがあるものである方法。
【０３３５】
ＥＣ２６１）ＥＣ２５８、ＥＣ２５９、またはＥＣ２６０記載の方法において、前記より高い効率はより高い信頼性を有する方法。
【０３３６】
ＥＣ２６２）ＥＣ２５８、ＥＣ２５９、またはＥＣ２６０記載の方法において、前記より高い効率はより長い寿命を有する方法。
【０３３７】
ＥＣ２６３）ＥＣ２５６記載の方法において、前記標準パラメータのうちの１若しくはそれ以上の少なくとも一部分は特定の論理ブロックアドレスを有し、前記データアクセスタイプは前記一時データアクセスタイプであり、さらに、
前記入出力記憶デバイスが、特定のイベントに応答して、前記特定の論理ブロックアドレスに対応する前記不揮発性メモリ内の位置のところに記憶されたデータを削除する工程を有するものである方法。
【０３３８】
ＥＣ２６４）ＥＣ２６３記載の方法において、前記データを削除する前記工程は、前記特定の論理ブロックアドレスに従った前記マップのエントリのところの前記入出力記憶デバイスのマップを、前記特定の論理ブロックアドレスに対応するデータが前記不揮発性メモリに存在しないことを指定するように更新する工程を有する方法。
【０３３９】
ＥＣ２６５）ＥＣ２６３記載の方法において、前記データを削除する前記工程は、前記データを削減する工程を有する方法。
【０３４０】
ＥＣ２６６）ＥＣ２６３記載の方法において、前記特定のイベントは、
前記入出力記憶デバイスの不揮発性メモリ管理動作、
前記入出力記憶デバイスの不揮発性メモリ再利用動作、
前記入出力記憶デバイスの電源サイクル、
前記入出力記憶デバイスのリセット、
仮想入出力記憶デバイスの仮想機械電源サイクル、
仮想入出力記憶デバイスの仮想機械リセット、
前記コンピューティングホストからの明示的要求、および
メムキャッシュディーアプリケーションからの要求
のうちの任意の１若しくはそれ以上である方法。
【０３４１】
ＥＣ２６７）ＥＣ２４８記載の方法において、前記非標準パラメータのうちの少なくとも１若しくはそれ以上は、少なくとも部分的に複数のデータ順序付けのうちの１つを指定し、前記データ順序付けは、順次順序付けおよびアトミック順序付けのうちの任意の２若しくはそれ以上を有する方法。
【０３４２】
ＥＣ２６８）ＥＣ２４８記載の方法において、前記非標準パラメータのうちの少なくとも１若しくはそれ以上は、少なくとも部分的に複数のデータ関係のうちの１つを指定し、前記データ関係は、複数のデータ項目間の読み出しおよび／または書き込み関連付け、ならびにプリフェッチデータ関係のうちの任意の２若しくはそれ以上を有する方法。
【０３４３】
ＥＣ２６９）ＥＣ２４８記載の方法において、前記非標準パラメータのうちの少なくとも１若しくはそれ以上は、少なくとも部分的に複数のデータ宛先のうちの１つを指定し、前記データ宛先は、
前記不揮発性メモリの特定の部分、
階層型ストレージ層、
ストレージのタイプ、および特定のデータバンド
のうちの任意の２若しくはそれ以上を有する方法。
【０３４４】
ＥＣ２７０）ＥＣ２６９記載の方法において、ストレージの前記タイプは、
シングルレベルセル（ＳＬＣ）、
マルチレベルセル（ＭＬＣ）、
磁気ランダム・アクセス・メモリ（ＭＲＡＭ）、
揮発性、および
不揮発性
のうちの任意の１若しくはそれ以上である方法。
【０３４５】
ＥＣ２７１）ＥＣ２６９記載の方法において、前記データ宛先のうちの前記１つの仕様は、
書き込み速度、
再利用速度、
再利用頻度、および
書き込み増幅
のうちの１若しくはそれ以上の改善を可能にする方法。
【０３４６】
ＥＣ２７２）ＥＣ２４８記載の方法において、前記非標準パラメータのうちの少なくとも１若しくはそれ以上は、少なくとも部分的に複数のコマンド処理特性のうちの１つを指定し、前記コマンド処理特性は、
コマンド優先順位、
コマンド順序付け、
特定のタイプのコマンドに対するバリア、
特定のタイプのコマンド間の境界、
コマンドの集約、
コマンドの融合、および
コマンドのアトミック動作
のうちの任意の２若しくはそれ以上を有する方法。
【０３４７】
ＥＣ２７３）ＥＣ２３９またはＥＣ２４７記載の方法において、前記より高い効率はより高い性能を有する方法。
【０３４８】
ＥＣ２７４）ＥＣ２７３記載の方法において、前記より高い性能は、
より高いバンド幅、
より低い待ち時間、および
より低い電力
のうちの１若しくはそれ以上を有する方法。
【０３４９】
ＥＣ２７５）ＥＣ２３９またはＥＣ２４７記載の方法において、前記より高い効率はより高い信頼性を有する方法。
【０３５０】
ＥＣ２７６）ＥＣ２７５記載の方法において、前記より高い信頼性は、より低い誤り率およびより長い寿命のうちの１若しくはそれ以上を有する方法。
【０３５１】
ＥＣ２７７）方法であって、
コンピューティングホストから非標準統計値の返しを要求するコマンドを受け取る工程と、
前記コンピューティングホストに前記非標準統計値を返す工程と
を有し、
前記受け取る工程および前記返す工程は、前記非標準統計を計算するように動作可能な入出力記憶デバイスを介して実行されるものである、
方法。
【０３５２】
ＥＣ２７８）ＥＣ２７７記載の方法において、さらに、
前記入出力記憶デバイスのストレージの少なくとも一部分を実施する不揮発性メモリ（ＮＶＭ）に書き込まれるべきデータのサイズを低減させる工程を有するものであり、
前記計算は、少なくとも一部は前記低減させる工程に基づくものである方法。
【０３５３】
ＥＣ２７９）ＥＣ２７８記載の方法において、前記低減させる工程は圧縮を有する方法。
【０３５４】
ＥＣ２８０）ＥＣ２７８記載の方法において、前記低減させる工程はデータ重複排除を有する方法。
【０３５５】
ＥＣ２８１）ＥＣ２７８記載の方法において、前記非標準統計は前記不揮発性メモリの使用状況に従ったものである方法。
【０３５６】
ＥＣ２８２）ＥＣ２８１記載の方法において、前記不揮発性メモリの前記使用状況は、前記低減させる工程の質に従って変動する方法。
【０３５７】
ＥＣ２８３）ＥＣ２８１記載の方法において、前記不揮発性メモリの前記使用状況は、前記コンピューティングホストから受け取られる切り捨てコマンドの数および／またはサイズに従って変動する方法。
【０３５８】
ＥＣ２８４）ＥＣ２８１記載の方法において、前記不揮発性メモリの前記使用状況は、前記コンピューティングホストから受け取られる一時データの量に従って変動する方法。
【０３５９】
ＥＣ２８５）ＥＣ２８４記載の方法において、前記不揮発性メモリの前記使用状況は、前記入出力記憶デバイスによって削減された前記一時データの量に従って変動する方法。
【０３６０】
ＥＣ２８６）ＥＣ２８１記載の方法において、前記非標準統計は前記不揮発性メモリの使用状況パーセンテージに従ったものである方法。
【０３６１】
ＥＣ２８７）ＥＣ２８１記載の方法において、前記非標準統計は、前記入出力記憶デバイスの書き込み増幅に従ったものである方法。
【０３６２】
ＥＣ２８８）ＥＣ２７８記載の方法において、前記非標準統計は前記不揮発性メモリの１若しくはそれ以上のバンドのサイズである方法。
【０３６３】
ＥＣ２８９）ＥＣ２７８記載の方法において、前記非標準統計は前記不揮発性メモリの１若しくはそれ以上のバンドの使用状況である方法。
【０３６４】
ＥＣ２９０）ＥＣ２８９記載の方法において、前記不揮発性メモリの前記１若しくはそれ以上のバンドの前記使用状況は前記低減させる工程の質に従って変動する方法。
【０３６５】
ＥＣ２９１）ＥＣ１９５、ＥＣ２１３、ＥＣ２３８、またはＥＣ２７７記載の方法において、前記入出力記憶デバイスは、前記コマンドの前記受け取りを行うことができるようにしたソリッドステートディスク（ＳＳＤ）コントローラを有する方法。
【０３６６】
ＥＣ２９２）ＥＣ２９１記載の方法において、前記ＳＳＤコントローラは単一の集積回路（ＩＣ）において実装される方法。
【０３６７】
ＥＣ２９３）ＥＣ２９２記載の方法において、前記ストレージの少なくとも一部分は不揮発性メモリ（ＮＶＭ）によって実施される方法。
【０３６８】
ＥＣ２９４）ＥＣ２９３記載の方法において、前記不揮発性メモリは１若しくはそれ以上のフラッシュメモリを有する方法。
【０３６９】
ＥＣ２９５）ＥＣ２９３記載の方法において、前記不揮発性メモリの少なくとも一部分は、
ＮＡＮＤフラッシュ技術記憶セル、および
ＮＯＲフラッシュ技術記憶セル
のうちの１若しくはそれ以上を有する方法。
【０３７０】
ＥＣ２９６）ＥＣ２９３記載の方法において、前記不揮発性メモリの少なくとも一部分は、
シングルレベルセル（ＳＬＣ）フラッシュ技術記憶セル、および
マルチレベルセル（ＭＬＣ）フラッシュ技術記憶セル
のうちの１若しくはそれ以上を有する方法。
【０３７１】
ＥＣ２９７）ＥＣ２９３記載の方法において、前記ソリッドステートディスクコントローラは、前記不揮発性メモリに対してデータを通信するように動作可能な不揮発性メモリインターフェースを有し、前記データのうちの少なくとも一部は前記コマンドのうちの少なくともいくつかと関連付けられているものである方法。
【０３７２】
ＥＣ２９８）ＥＣ２９７記載の方法において、前記不揮発性メモリインターフェースは、
オープンＮＡＮＤフラッシュインターフェース（ＯＮＦＩ）、
トグルモードインターフェース、
デュアル・データ・レート（ＤＤＲ）同期インターフェース、
同期インターフェース、および
非同期インターフェース
のうちの１若しくはそれ以上と適合する方法。
【０３７３】
ＥＣ２９９）ＥＣ２９３記載の方法において、前記ソリッドステートディスクコントローラおよび前記不揮発性メモリはソリッドステートディスクに具備される方法。
【０３７４】
ＥＣ３００）ＥＣ２９１記載の方法において、前記ソリッドステートディスクコントローラは、ストレージインターフェース規格と適合し、前記ストレージインターフェースを介して前記コマンドを提供するコンピューティングホストに接続するよう動作可能なストレージインターフェースを有するものである方法。
【０３７５】
ＥＣ３０１）ＥＣ３００記載の方法において、さらに、
前記コマンドを提供するように前記コンピューティングホストを動作させる工程を有するものである方法。
【０３７６】
ＥＣ３０２）方法であって、
外部インターフェースを介してコンピューティングホストから入出力デバイスでコマンドを受け取る工程と、
前記コマンドのタイプを確認する工程と、
前記コマンドのタイプが読み出しコマンドであることに応答して、マップにアクセスして前記コマンドの論理ブロックアドレス（ＬＢＡ）を変換し、不揮発性メモリ（ＮＶＭ）内の所定の位置を選択的に含む変換された論理ブロックアドレス情報を取得する工程と、
前記コマンドタイプが予めマッピングされた読み出しコマンドであることに応答して、前記予めマッピングされた読み出しコマンドの情報から、前記マップを使用せずに前記不揮発性メモリ内の前記位置を決定する工程と、
前記位置に対応するデータを返す工程と
を有し、
前記情報は、前記変換された論理ブロックアドレス情報の少なくとも一部分を有するものである、
方法。
【０３７７】
ＥＣ３０３）ＥＣ３０２記載の方法において、前記位置は第１の位置であり、前記情報は第１の情報であり、当該方法は、さらに、
前記コマンドのタイプが書き込みコマンドであることに応答して、
前記書き込みコマンドのデータを前記不揮発性メモリ内の第２の位置に書き込む工程と、
前記書き込みコマンドの論理ブロックアドレスと前記マップの不揮発性メモリ内の前記第２の位置との関連付けを記憶する工程と、
前記第２の位置に基づいた第２の情報を含む更新情報を前記マップのシャドウコピーに送る工程と
を有し、
前記第１の情報は、少なくとも部分的に前記シャドウコピーから取得され、前記シャドウコピーは、少なくとも部分的に前記コンピューティングホストに接続された入出力カードのメモリデバイスに記憶されるものである方法。
【０３７８】
ＥＣ３０４）システムであって、
標準コマンドと非標準修飾子の仕様とを有する拡張コマンドを受け取る手段と、
前記非標準修飾子に従って前記標準コマンドを実行する手段と
を有し、
前記非標準修飾子を使用して前記標準コマンドの実行を変更することによりシステムレベルの性能が改善されるものである
システム。
【０３７９】
ＥＣ３０５）システムであって、
非標準修飾子を有効にする仕様を有するモード設定コマンドを入出力デバイスで受け取る手段と、
前記入出力デバイスで、標準コマンドを受け取る手段と、
前記非標準修飾子に従って前記標準コマンドを実行する手段と
を有し、
前記非標準修飾子を使用して前記標準コマンドの実行を変更することによりシステムレベルの性能が改善されるものである
システム。
【０３８０】
ＥＣ３０６）ＥＣ３０４またはＥＣ３０５記載のシステムにおいて、さらに、
前記非標準修飾子を前記標準コマンドのデータと関連付ける手段を有するものであるシステム。
【０３８１】
ＥＣ３０７）ＥＣ３０６記載のシステムにおいて、さらに、
前記標準コマンドの前記データと共に後で取得するために前記非標準修飾子の指示を記憶する手段を有するものであるシステム。
【０３８２】
ＥＣ３０８）ＥＣ３０７記載のシステムにおいて、前記記憶は不揮発的であるシステム。
【０３８３】
ＥＣ３０９）ＥＣ３０７記載のシステムにおいて、さらに、
前記非標準修飾子の前記指示をマップの複数のエントリのうちの特定の１つに記憶する手段であって、前記特定のエントリは前記標準コマンドの論理ブロックアドレス（ＬＢＡ）によって前記標準コマンドの前記データと関連付けられている、記憶する手段を有するものであるシステム。
【０３８４】
ＥＣ３１０）ＥＣ３０７記載のシステムにおいて、前記標準コマンドは書き込みコマンドであり、さらに、
前記書き込みコマンドの前記データへのアクセスを指定する後続の読み出しコマンドに応答して、前記非標準修飾子の前記指示に従って前記後続の読み出しコマンドの実行を変更する手段を有するものであるシステム。
【０３８５】
ＥＣ３１１）ＥＣ３０７記載のシステムにおいて、前記標準コマンドは第１のコマンドであり、さらに、
前記第１のコマンドの前記データへのアクセスを指定する後続のコマンドに応答して、前記非標準修飾子の前記指示に従って前記後続のコマンドの実行を変更する手段を有するものであるシステム。
【０３８６】
ＥＣ３１２）ＥＣ３１１記載のシステムにおいて、
前記第１のコマンドは書き込みコマンドであり、
前記非標準修飾子は、前記書き込みコマンドの前記データが読み出し専用であるという指示を有し、
前記後続のコマンドの実行の前記変更は、前記後続のコマンドが標準書き込みコマンドである場合に誤り指示を返すことを有するシステム。
【０３８７】
ＥＣ３１３）ＥＣ３０７記載のシステムにおいて、前記標準コマンドは書き込みコマンドであり、さらに、
前記書き込みコマンドの前記データが再利用されるべきであると決定する手段と、
前記非標準修飾子の前記指示にアクセスする手段と、
前記非標準修飾子の前記指示に応答して、前記書き込みコマンドの前記データを削減する手段と
を有し、それによって、前記書き込みコマンドの前記データは再利用されるのではなく切り捨てられるシステム。
【０３８８】
ＥＣ３１４）ＥＣ３０４またはＥＣ３０５記載のシステムにおいて、前記標準コマンドは読み出しコマンドであるシステム。
【０３８９】
ＥＣ３１５）ＥＣ３０４またはＥＣ３０５記載のシステムにおいて、前記標準コマンドは読み出しコマンドまたは書き込みコマンドの一方であるシステム。
【０３９０】
ＥＣ３１６）ＥＣ３０４またはＥＣ３０５記載のシステムにおいて、前記標準コマンドはデータ移動コマンドであるシステム。
【０３９１】
ＥＣ３１７）ＥＣ３０４またはＥＣ３０５記載のシステムにおいて、前記標準コマンドは切り捨てコマンドであるシステム。
【０３９２】
ＥＣ３１８）ＥＣ３１７記載のシステムにおいて、前記非標準修飾子は、前記切り捨てコマンドが必須であるかそれとも任意選択であるか選択的に決定するシステム。
【０３９３】
ＥＣ３１９）ＥＣ３０４またはＥＣ３０５記載のシステムにおいて、前記非標準修飾子は、少なくとも部分的に前記標準コマンドの予約フィールドによって指定されるシステム。
【０３９４】
ＥＣ３２０）ＥＣ３０４またはＥＣ３０５記載のシステムにおいて、前記非標準修飾子は、少なくとも部分的に前記標準コマンドの複数のアドレスビットのうちの少なくともいくつかによって指定されるシステム。
【０３９５】
ＥＣ３２１）ＥＣ３２０記載のシステムにおいて、前記アドレスビットのうちの前記少なくともいくつかは、前記入出力デバイスによってそれ以外に使用されないシステム。
【０３９６】
ＥＣ３２２）ＥＣ３０４またはＥＣ３０５記載のシステムにおいて、前記非標準修飾子は、
データタイプの仕様、
データアクセスタイプの仕様、
データ順序付けの仕様、
データ関係の仕様、
データ宛先の仕様、および
コマンド関係の仕様
のうちの１若しくはそれ以上であるシステム。
【０３９７】
ＥＣ３２３）ＥＣ３２２記載のシステムにおいて、前記データタイプの前記仕様は圧縮率指示を有するシステム。
【０３９８】
ＥＣ３２４）ＥＣ３２３記載のシステムにおいて、前記データタイプの前記仕様は、前記データタイプが圧縮不能であるという指示を有するシステム。
【０３９９】
ＥＣ３２５）ＥＣ３２２記載のシステムにおいて、前記データタイプの前記仕様はデータベース・ジャーナル・タイプの指示を有するシステム。
【０４００】
ＥＣ３２６）ＥＣ３２２記載のシステムにおいて、前記データアクセスタイプの前記仕様は、読み出し／書き込みデータアクセスタイプの指示、略読み出しデータアクセスタイプの指示、および略書き込みデータアクセスタイプの指示のうちの２若しくはそれ以上を有するシステム。
【０４０１】
ＥＣ３２７）ＥＣ３２２記載のシステムにおいて、前記データアクセスタイプの前記仕様は、読み出し／書き込みデータアクセスタイプの指示、略読み出しデータアクセスタイプの指示、略書き込みデータアクセスタイプの指示、および一時データアクセスタイプの指示のうちの２若しくはそれ以上を有するシステム。
【０４０２】
ＥＣ３２８）ＥＣ３２２記載のシステムにおいて、前記データアクセスタイプの前記仕様は一時データアクセスタイプの指示を有するシステム。
【０４０３】
ＥＣ３２９）ＥＣ３２８記載のシステムにおいて、
前記標準コマンドは書き込みコマンドであり、前記非標準修飾子は前記一時データアクセスタイプの指示を有し、さらに、
前記書き込みコマンドのデータを不揮発的に記憶する手段と、
前記書き込みコマンドによって記憶された前記データが再利用されるべきであると決定したことに応答し、前記非標準修飾子に従って、前記書き込みコマンドによって記憶された前記データを削減する手段と
を有するものであるシステム。
【０４０４】
ＥＣ３３０）ＥＣ３２９記載のシステムにおいて、さらに、
前記切り捨てに続く前記書き込みコマンドによって記憶された前記データの読み出しに応答して、前記書き込みコマンドによって記憶された前記データが切り捨てられるという指示を返す手段を有するものであるシステム。
【０４０５】
ＥＣ３３１）ＥＣ３２９記載のシステムにおいて、さらに、
前記書き込みコマンドによって記憶された前記データの読み出しに応答して、前記書き込みコマンドによって記憶された前記データが切り捨てられるという指示、または前記書き込みコマンドによって記憶された前記データを選択的に返す手段を有するものであるシステム。
【０４０６】
ＥＣ３３２）ＥＣ３３０またはＥＣ３３１記載のシステムにおいて、さらに、
前記読み出しに応答して、前記書き込みコマンドによって記憶された前記データが切り捨てられるという前記指示を非データ応答として返す手段を有するものであるシステム。
【０４０７】
ＥＣ３３３）ＥＣ３３０またはＥＣ３３１記載のシステムにおいて、さらに、
前記読み出しに応答して、前記書き込みコマンドによって記憶された前記データが切り捨てられるという前記指示を返されるデータにおいて特定のパターンとして返す手段を有するものであるシステム。
【０４０８】
ＥＣ３３４）ＥＣ３２２記載のシステムにおいて、前記データアクセスタイプの前記仕様は読み出し専用データアクセスタイプの指示を有するシステム。
【０４０９】
ＥＣ３３５）ＥＣ３３４記載のシステムにおいて、
前記標準コマンドは第１の書き込みコマンドであり、前記非標準修飾子は前記読み出し専用データアクセスタイプの指示を有し、さらに、
前記第１の書き込みコマンドの論理ブロックアドレス（ＬＢＡ）に従って前記第１の書き込みコマンドのデータを不揮発的に記憶する手段と、
前記第１の書き込みコマンドの前記論理ブロックアドレスに書き込もうとする後続の書き込みコマンドに応答して、誤り指示を返す手段と
を有するものであるシステム。
【０４１０】
ＥＣ３３６）ＥＣ３２２記載のシステムにおいて、前記データ順序付けの前記仕様はアトミックシーケンスの指示を有するシステム。
【０４１１】
ＥＣ３３７）ＥＣ３２２記載のシステムにおいて、前記データ順序付けの前記仕様は、順次シーケンスの指示およびアトミックシーケンスの指示のうちの１若しくはそれ以上を有するシステム。
【０４１２】
ＥＣ３３８）ＥＣ３２２記載のシステムにおいて、さらに、
前記データ関係を前記標準コマンドのデータと関連付ける手段を有するものであるシステム。
【０４１３】
ＥＣ３３９）ＥＣ３３８記載のシステムにおいて、さらに、
前記データ関係および前記標準コマンドの前記データを不揮発的に記憶する手段を有するものであるシステム。
【０４１４】
ＥＣ３４０）ＥＣ３３９記載のシステムにおいて、前記標準コマンドは第１の標準コマンドであり、さらに、
続いて、前記データ関係を後続の標準コマンドのデータと関連付ける手段を有するものであるシステム。
【０４１５】
ＥＣ３４１）ＥＣ３４０記載のシステムにおいて、さらに、
前記データ関係に従ってデータを取得する手段を有するものであるシステム。
【０４１６】
ＥＣ３４２）ＥＣ３２２記載のシステムにおいて、前記データ宛先の前記仕様は複数のデータバンドのうちの１つを指定するシステム。
【０４１７】
ＥＣ３４３）ＥＣ３４２記載のシステムにおいて、前記データバンドはホットバンドとコールドバンドとを有するシステム。
【０４１８】
ＥＣ３４４）ＥＣ３２２記載のシステムにおいて、前記コマンド関係の前記仕様はコマンド優先順位を有するシステム。
【０４１９】
ＥＣ３４５）ＥＣ３２２記載のシステムにおいて、前記コマンド関係の前記仕様はコマンド順序付け従属関係を有するシステム。
【０４２０】
ＥＣ３４６）ＥＣ３４５記載のシステムにおいて、前記コマンド順序付け従属関係はコマンドバリアであるシステム。
【０４２１】
ＥＣ３４７）ＥＣ３０５記載のシステムにおいて、前記標準コマンドは２若しくはそれ以上の標準コマンドのシーケンスであるシステム。
【０４２２】
ＥＣ３４８）ＥＣ３０５記載のシステムにおいて、
前記モード設定コマンドは第１のモード設定コマンドであり、さらに、
前記標準コマンドの前記受け取りに続いて、前記非標準修飾子を使用不可にする仕様を有する第２のモード設定コマンドを受け取る手段を有するものであるシステム。
【０４２３】
ＥＣ３４９）システムであって、
外部インターフェースを介して入出力デバイスでコマンドを受け取る手段と、
前記コマンドのタイプを確認する手段と、
前記コマンドのタイプが読み出しコマンドである場合、マップにアクセスして前記コマンドの論理ブロックアドレス（ＬＢＡ）を変換し、不揮発性メモリ（ＮＶＭ）内の所定の位置を選択的に含む変換された論理ブロックアドレス情報を取得する手段と、
前記コマンドの前記タイプが予めマッピングされた読み出しコマンドである場合、前記予めマッピングされた読み出しコマンドの情報から、前記マップを使用せずに前記不揮発性メモリ内の前記位置を決定する手段と、
前記不揮発性メモリ内の前記位置に対応するデータを返す手段と
を有し、
前記予めマッピングされた読み出しコマンドの前記情報は、前記変換された論理ブロックアドレス情報の少なくとも一部分を有するものである、
システム。
【０４２４】
ＥＣ３５０）ＥＣ３４９記載のシステムにおいて、前記変換された論理ブロックアドレス情報は、前記不揮発性メモリ内の位置または前記コマンドの前記論理ブロックアドレスが前記不揮発性メモリに存在しないという指示を選択的に有するシステム。
【０４２５】
ＥＣ３５１）ＥＣ３４９記載のシステムにおいて、前記変換された論理ブロックアドレス情報は、前記不揮発性メモリの１若しくはそれ以上の読み出し単位のうちの第１の読み出し単位のアドレスおよび読み出し単位での長さを選択的に有するシステム。
【０４２６】
ＥＣ３５２）ＥＣ３５１記載のシステムにおいて、前記１若しくはそれ以上の読み出し単位の各々のサイズは少なくとも５１２バイトであるシステム。
【０４２７】
ＥＣ３５３）ＥＣ３４９記載のシステムにおいて、さらに、
前記マップのシャドウコピーにアクセスして前記論理ブロックアドレスを変換して、前記変換された論理ブロックアドレス情報の前記少なくとも一部分を取得する手段と、
前記入出力デバイスに前記変換された論理ブロックアドレス情報の前記少なくとも一部分を含む前記予めマッピングされた読み出しコマンドを送る手段と
を有するものであるシステム。
【０４２８】
ＥＣ３５４）ＥＣ３５３記載のシステムにおいて、前記アクセスはコンピューティングホストにおけるものであるシステム。
【０４２９】
ＥＣ３５５）ＥＣ３５３記載のシステムにおいて、前記マップの前記シャドウコピーは複数のエントリを有し、前記エントリの各々は有効性の指示を有するシステム。
【０４３０】
ＥＣ３５６）ＥＣ３５５記載のシステムにおいて、
前記論理ブロックアドレスは複数の論理ブロックアドレス（ＬＢＡ）のうちの１つであり、
前記変換された論理ブロックアドレス情報は複数の変換された論理ブロックアドレス情報のうちの１つであり、
前記マップの前記シャドウコピーの前記有効なエントリの各々は、前記論理ブロックアドレスのうちの１若しくはそれ以上を、前記複数の変換された論理ブロックアドレス情報のそれぞれの情報と関連付けるシステム。
【０４３１】
ＥＣ３５７）ＥＣ３５６記載のシステムにおいて、前記マップの前記シャドウコピーの前記有効なエントリの各々は、前記複数の変換された論理ブロックアドレス情報の前記それぞれの情報の少なくとも一部分を有するシステム。
【０４３２】
ＥＣ３５８）ＥＣ３５６記載のシステムにおいて、前記マップの前記シャドウコピーの前記有効なエントリのうちの少なくとも１つは、前記有効なエントリのうちの前記少なくとも１つと関連付けられた前記論理ブロックアドレスが前記不揮発性メモリに存在しないことを選択的に指定するシステム。
【０４３３】
ＥＣ３５９）ＥＣ３５８記載のシステムにおいて、前記有効なエントリのうちの前記少なくとも１つと関連付けられた前記論理ブロックアドレスは切り捨てられるシステム。
【０４３４】
ＥＣ３６０）ＥＣ３５５記載のシステムにおいて、
前記不揮発性メモリ内の前記位置は前記不揮発性メモリ内の複数の位置のうちの１つであり、
前記マップの前記シャドウコピーの前記有効なエントリの各々は前記不揮発性メモリ内のそれぞれの位置を選択的に指定するシステム。
【０４３５】
ＥＣ３６１）ＥＣ３６０記載のシステムにおいて、前記マップの前記シャドウコピーの前記有効なエントリの各々は、前記エントリと関連付けられたデータが前記不揮発性メモリに存在しないことを選択的に指定するシステム。
【０４３６】
ＥＣ３６２）ＥＣ３５５記載のシステムにおいて、さらに、
最初に前記マップの前記シャドウコピーのすべてのエントリを無効とマークする手段を有するものであるシステム。
【０４３７】
ＥＣ３６３）ＥＣ３５５記載のシステムにおいて、さらに、
前記入出力デバイスに書き込みコマンドを送ったことに応答して、前記書き込みコマンドの論理ブロックアドレス（ＬＢＡ）と関連付けられた前記マップの前記シャドウコピーのエントリを無効とマークする手段を有するものであるシステム。
【０４３８】
ＥＣ３６４）ＥＣ３６３記載のシステムにおいて、さらに、
前記入出力デバイスで、前記外部インターフェースを介して前記書き込みコマンドを受け取る手段と、
前記書き込みコマンドの前記受け取りに続いて、前記書き込みコマンドの前記論理ブロックアドレスに対応するシャドウマップ更新を送る手段と
を有するものであるシステム。
【０４３９】
ＥＣ３６５）ＥＣ３６４記載のシステムにおいて、さらに、
前記シャドウマップ更新に従って前記マップの前記シャドウコピーを更新する手段を有するものであり、
前記更新する手段は、前記書き込みコマンドの前記論理ブロックアドレスと関連付けられた前記マップの前記シャドウコピーの前記エントリを有効とマークするシステム。
【０４４０】
ＥＣ３６６）ＥＣ３６５記載のシステムにおいて、前記更新は前記入出力デバイスによるものであるシステム。
【０４４１】
ＥＣ３６７）ＥＣ３５３記載のシステムにおいて、さらに、
前記マップの前記シャドウコピーを前記入出力デバイスに接続されたコンピューティングホストのメモリに記憶する手段を有するものであるシステム。
【０４４２】
ＥＣ３６８）ＥＣ３６７記載のシステムにおいて、さらに、
前記マップの前記シャドウコピーへの前記更新を前記入出力デバイスから前記コンピューティングホストに送る手段を有するものであるシステム。
【０４４３】
ＥＣ３６９）ＥＣ３６７記載のシステムにおいて、前記コンピューティングホストの前記メモリは前記コンピューティングホストのメインメモリを有するシステム。
【０４４４】
ＥＣ３７０）ＥＣ３６７記載のシステムにおいて、前記コンピューティングホストの前記メモリは前記コンピューティングホストの入出力空間メモリを有するシステム。
【０４４５】
ＥＣ３７１）ＥＣ３７０記載のシステムにおいて、前記コンピューティングホストの前記メモリは、ＰＣＩｅアドレス空間において前記入出力デバイスによってアクセス可能であるシステム。
【０４４６】
ＥＣ３７２）ＥＣ３６７記載のシステムにおいて、前記マップは前記不揮発性メモリに不揮発的に記憶されるシステム。
【０４４７】
ＥＣ３７３）ＥＣ３７２記載のシステムにおいて、前記コンピューティングホストの前記メモリは揮発性メモリを有するシステム。
【０４４８】
ＥＣ３７４）ＥＣ３４９記載のシステムにおいて、前記マップは２レベルマップを有するシステム。
【０４４９】
ＥＣ３７５）ＥＣ３７４記載のシステムにおいて、
前記マップは第１レベルおよび第２レベルを有し、
前記マップの前記シャドウコピーは前記マップの前記第２レベルに対応するシステム。
【０４５０】
ＥＣ３７６）システムであって、
入出力デバイスで、外部インターフェースを介して書き込みコマンドを受け取る手段と、
前記書き込みコマンドのデータを不揮発性メモリ（ＮＶＭ）内の位置に書き込む手段と、
前記書き込みコマンドの論理ブロックアドレス（ＬＢＡ）とマップの前記不揮発性メモリ内の前記位置との関連付けを記憶する手段と、
前記不揮発性メモリ内の前記位置に従った情報を有する更新を前記マップのシャドウコピーに送る手段と
を有するシステム。
【０４５１】
ＥＣ３７７）ＥＣ３７６記載のシステムにおいて、前記マップは２レベルマップを有するシステム。
【０４５２】
ＥＣ３７８）ＥＣ３７７記載のシステムにおいて、
前記マップは第１レベルおよび第２レベルを有し、
前記マップの前記シャドウコピーは前記マップの前記第２レベルに対応するシステム。
【０４５３】
ＥＣ３７９）ＥＣ３７６記載のシステムにおいて、前記不揮発性メモリ内の前記位置に従った前記情報は、前記不揮発性メモリの１若しくはそれ以上の読み出し単位のうちの第１の読み出し単位のアドレスおよび読み出し単位での長さを有するシステム。
【０４５４】
ＥＣ３８０）ＥＣ３７６記載のシステムにおいて、さらに、
前記マップの前記シャドウコピーを前記入出力デバイスに接続されたコンピューティングホストのメモリに記憶する手段を有するものであるシステム。
【０４５５】
ＥＣ３８１）ＥＣ３８０記載のシステムにおいて、さらに、
前記マップの前記シャドウコピーへの前記更新を前記入出力デバイスから前記コンピューティングホストに送る手段を有するものであるシステム。
【０４５６】
ＥＣ３８２）ＥＣ３８０記載のシステムにおいて、前記コンピューティングホストの前記メモリは前記コンピューティングホストのメインメモリを有するシステム。
【０４５７】
ＥＣ３８３）ＥＣ３８０記載のシステムにおいて、前記コンピューティングホストの前記メモリは前記コンピューティングホストの入出力空間メモリを有するシステム。
【０４５８】
ＥＣ３８４）ＥＣ３８３記載のシステムにおいて、前記コンピューティングホストの前記メモリは、ＰＣＩｅアドレス空間において前記入出力デバイスによってアクセス可能であるシステム。
【０４５９】
ＥＣ３８５）ＥＣ３８３記載のシステムにおいて、さらに、
前記マップの前記シャドウコピーへの前記更新を前記入出力デバイスから前記コンピューティングホストの前記入出力空間メモリに送る手段を有するものであるシステム。
【０４６０】
ＥＣ３８６）ＥＣ３８５記載のシステムにおいて、前記更新を送る前記手段はＰＣＩｅ書き込み要求を送る手段を有するシステム。
【０４６１】
ＥＣ３８７）ＥＣ３８５記載のシステムにおいて、前記更新を送る前記手段は前記マップの前記シャドウコピーの読み出し−変更−書き込みの手段を有するシステム。
【０４６２】
ＥＣ３８８）ＥＣ３８５記載のシステムにおいて、さらに、
前記入出力デバイスが読み出しコマンドを実行する前に、前記マップの前記シャドウコピーから前記読み出しコマンドの論理ブロックアドレス（ＬＢＡ）の変換をフェッチする手段を有するものであるシステム。
【０４６３】
ＥＣ３８９）ＥＣ３８８記載のシステムにおいて、前記フェッチは前記入出力デバイスによるものであるシステム。
【０４６４】
ＥＣ３９０）ＥＣ３８９記載のシステムにおいて、前記フェッチする手段はＰＣＩｅ読み出し要求を送る手段を有するシステム。
【０４６５】
ＥＣ３９１）ＥＣ３８８記載のシステムにおいて、前記フェッチは前記コンピューティングホストによるものであり、前記読み出しコマンドは予めマッピングされた読み出しコマンドであるシステム。
【０４６６】
ＥＣ３９２）ＥＣ３８０記載のシステムにおいて、前記マップは前記不揮発性メモリに不揮発的に記憶されるシステム。
【０４６７】
ＥＣ３９３）ＥＣ３９２記載のシステムにおいて、前記コンピューティングホストの前記メモリは揮発性メモリを有するシステム。
【０４６８】
ＥＣ３９４）システムであって、
入出力デバイスのマップのシャドウコピーを初期化して、当該マップのシャドウコピーの複数のエントリのすべてを無効とマークする手段と、
前記入出力デバイスから前記マップの前記シャドウコピーに対する更新を受け取る手段と、
前記マップの前記シャドウコピーに対する更新に従って、前記マップの前記シャドウコピーのエントリのうちの少なくとも１つを有効とマークする手段と
を有するシステム。
【０４６９】
ＥＣ３９５）ＥＣ３９４記載のシステムにおいて、前記更新に従って前記マークする手段は、前記更新の変換論理ブロックアドレス（ＬＢＡ）情報を前記エントリのうちの前記少なくとも１つと関連付ける手段をさらに有するものであるシステム。
【０４７０】
ＥＣ３９６）ＥＣ３９５記載のシステムにおいて、前記変換された論理ブロックアドレス情報は前記入出力デバイスの不揮発性メモリ（ＮＶＭ）内の位置を有するシステム。
【０４７１】
ＥＣ３９７）ＥＣ３９４記載のシステムにおいて、前記マップの前記シャドウコピーの前記エントリの各々は、前記入出力デバイスの少なくとも１つの論理ブロックアドレス（ＬＢＡ）を、前記入出力デバイスの不揮発性メモリ（ＮＶＭ）内の位置と選択的に関連付けるシステム。
【０４７２】
ＥＣ３９８）ＥＣ３９４記載のシステムにおいて、前記入出力デバイスの前記マップは２レベルマップを有するシステム。
【０４７３】
ＥＣ３９９）ＥＣ３９８記載のシステムにおいて、
前記入出力デバイスの前記マップは第１レベルおよび第２レベルを有し、
前記マップの前記シャドウコピーは前記入出力デバイスの前記マップの前記第２レベルに対応するシステム。
【０４７４】
ＥＣ４００）ＥＣ３９４記載のシステムにおいて、さらに、
前記マップの前記シャドウコピーを前記入出力デバイスに接続されたコンピューティングホストのメモリに記憶する手段を有するものであるシステム。
【０４７５】
ＥＣ４０１）ＥＣ４００記載のシステムにおいて、さらに、
前記マップの前記シャドウコピーへの前記更新を前記入出力デバイスから前記コンピューティングホストに送る手段を有するものであるシステム。
【０４７６】
ＥＣ４０２）ＥＣ４００記載のシステムにおいて、前記コンピューティングホストの前記メモリは前記コンピューティングホストのメインメモリを有するシステム。
【０４７７】
ＥＣ４０３）ＥＣ４００記載のシステムにおいて、前記コンピューティングホストの前記メモリは前記コンピューティングホストの入出力空間メモリを有するシステム。
【０４７８】
ＥＣ４０４）ＥＣ４０３記載のシステムにおいて、前記コンピューティングホストの前記メモリは、ＰＣＩｅアドレス空間において前記入出力デバイスによってアクセス可能であるシステム。
【０４７９】
ＥＣ４０５）ＥＣ４０３記載のシステムにおいて、さらに、
前記マップの前記シャドウコピーへの前記更新を前記入出力デバイスから前記コンピューティングホストの前記入出力空間メモリに送る手段を有するものであるシステム。
【０４８０】
ＥＣ４０６）ＥＣ４０５記載のシステムにおいて、前記更新を送る前記手段はＰＣＩｅ書き込み要求を送る手段を有するシステム。
【０４８１】
ＥＣ４０７）ＥＣ４０５記載のシステムにおいて、前記更新を送る前記手段は前記マップの前記シャドウコピーの読み出し−変更−書き込みの手段を有するシステム。
【０４８２】
ＥＣ４０８）ＥＣ４０５記載のシステムにおいて、さらに、
前記入出力デバイスが読み出しコマンドを実行する前に、前記マップの前記シャドウコピーから前記読み出しコマンドの論理ブロックアドレス（ＬＢＡ）の変換をフェッチする手段を有するものであるシステム。
【０４８３】
ＥＣ４０９）ＥＣ４０８記載のシステムにおいて、前記フェッチは前記入出力デバイスによるものであるシステム。
【０４８４】
ＥＣ４１０）ＥＣ４０９記載のシステムにおいて、前記フェッチする手段はＰＣＩｅ読み出し要求を送る手段を有するシステム。
【０４８５】
ＥＣ４１１）ＥＣ４０８記載のシステムにおいて、前記フェッチは前記コンピューティングホストによるものであり、前記読み出しコマンドは予めマッピングされた読み出しコマンドであるシステム。
【０４８６】
ＥＣ４１２）ＥＣ４００記載のシステムにおいて、前記マップは前記入出力デバイスの不揮発性メモリ（ＮＶＭ）に不揮発的に記憶されるシステム。
【０４８７】
ＥＣ４１３）ＥＣ４１２記載のシステムにおいて、前記コンピューティングホストの前記メモリは揮発性メモリを有するシステム。
【０４８８】
ＥＣ４１４）システムであって、
入出力デバイスに対する要求が読み出し要求であるかどうかを決定する手段であって、
前記入出力デバイスは複数のエントリを有するマップを有し、当該マップの複数のエントリのうちの少なくともいくつかの各々は、前記入出力デバイスの各論理ブロックアドレス（ＬＢＡ）を、前記入出力デバイスの不揮発性メモリ（ＮＶＭ）内の所定の位置を選択的に有する各変換された論理ブロックアドレス情報にマップするものであり、
前記マップのシャドウコピーは対応する複数のエントリを有するものである、
前記決定する手段と、
前記要求が読み出し要求である場合、当該読み出し要求の論理ブロックアドレスと関連付けられた前記マップの前記シャドウコピーの前記エントリのうちの特定の１つが有効であるかどうかを決定する手段と、
前記特定のエントリが有効である場合、前記特定のエントリに基づいた、前記各変換された論理ブロックアドレス情報の少なくとも一部分を有する予めマッピングされた読み出しコマンドを前記入出力デバイスに選択的に送る手段と
を有するシステム。
【０４８９】
ＥＣ４１５）ＥＣ４１４記載のシステムにおいて、
前記マップの前記シャドウコピーの前記エントリの各々は前記マップ内のそれぞれのエントリに対応し、
前記マップの前記エントリのうちの前記少なくともいくつかの各々は、前記それぞれの論理ブロックアドレスによってマップされた前記それぞれの変換された論理ブロックアドレス情報を有し、
前記マップの前記エントリのうちの前記少なくともいくつかのうちの１つに対応する前記マップの前記シャドウコピーの前記エントリの各々は、前記それぞれの変換された論理ブロックアドレス情報の少なくとも一部分を有するシステム。
【０４９０】
ＥＣ４１６）ＥＣ４１４記載のシステムにおいて、前記マップの前記複数のエントリは第２レベルのマップであるシステム。
【０４９１】
ＥＣ４１７）ＥＣ４１６記載のシステムにおいて、前記入出力デバイスは第１レベルのマップをさらに有するものであるシステム。
【０４９２】
ＥＣ４１８）ＥＣ４１４記載のシステムにおいて、前記それぞれの変換された論理ブロックアドレス情報の前記少なくとも一部分は、前記不揮発性メモリ内の前記位置または前記それぞれの論理ブロックアドレスが前記不揮発性メモリに存在しないという指示を選択的に有するシステム。
【０４９３】
ＥＣ４１９）ＥＣ４１８記載のシステムにおいて、前記選択的に送る手段は、前記特定のエントリに従った前記それぞれの変換された論理ブロックアドレス情報の前記少なくとも一部分が、前記読み出し要求の前記論理ブロックアドレスが前記不揮発性メモリに存在しないことを指示するかどうか決定する手段を有するシステム。
【０４９４】
ＥＣ４２０）ＥＣ４１９記載のシステムにおいて、前記選択的に送る手段は、前記特定のエントリに従った前記それぞれの変換された論理ブロックアドレス情報の前記少なくとも一部分が、前記読み出し要求の前記論理ブロックアドレスが前記不揮発性メモリに存在することを指示する場合に、単に前記入出力デバイスに前記予めマッピングされた読み出しコマンドを送る手段をさらに有するものであるシステム。
【０４９５】
ＥＣ４２１）ＥＣ４２０記載のシステムにおいて、前記読み出し要求の前記論理ブロックアドレスが切り捨てられる場合には、前記特定のエントリに従った前記それぞれの変換された論理ブロックアドレス情報の前記少なくとも一部分は、前記読み出し要求の前記論理ブロックアドレスが前記不揮発性メモリに存在しないことを指示するシステム。
【０４９６】
ＥＣ４２２）ＥＣ４１４記載のシステムにおいて、前記それぞれの変換された論理ブロックアドレス情報の前記少なくとも一部分は、前記不揮発性メモリの１若しくはそれ以上の読み出し単位のうちの第１の読み出し単位のアドレスおよび読み出し単位での長さを選択的に有するシステム。
【０４９７】
ＥＣ４２３）ＥＣ４２２記載のシステムにおいて、前記１若しくはそれ以上の読み出し単位の各々のサイズは少なくとも５１２バイトであるシステム。
【０４９８】
ＥＣ４２４）ＥＣ４１４記載のシステムにおいて、さらに、
前記特定のエントリが無効である場合に、前記入出力デバイスに前記読み出し要求の前記論理ブロックアドレスを有する標準読み出しコマンドを送る手段を有するものであるシステム。
【０４９９】
ＥＣ４２５）ＥＣ４１４記載のシステムにおいて、さらに、
前記要求が書き込み要求である場合に、前記書き込み要求の論理ブロックアドレスと関連付けられた前記マップの前記シャドウコピーの前記エントリのうちの１つを無効とマークする手段を有するものであるシステム。
【０５００】
ＥＣ４２６）ＥＣ４１４記載のシステムにおいて、前記マップの前記シャドウコピーの各エントリは、有効性指示、および前記マップの対応するエントリからの少なくともいくつかのコンテンツのコピーを有するシステム。
【０５０１】
ＥＣ４２７）ＥＣ４２６記載のシステムにおいて、前記特定のエントリが有効である場合に、前記マップ内の前記対応するエントリからの少なくともいくつかのコンテンツの前記コピーは、前記マップの前記対応するエントリからの前記少なくともいくつかのコンテンツと同じであるシステム。
【０５０２】
ＥＣ４２８）ＥＣ４２６記載のシステムにおいて、前記マップの前記シャドウコピーの有効なエントリは前記マップの有効なエントリの部分集合であるシステム。
【０５０３】
ＥＣ４２９）ＥＣ４２８記載のシステムにおいて、前記部分集合は真部分集合であるシステム。
【０５０４】
ＥＣ４３０）ＥＣ４１４記載のシステムにおいて、前記マップの前記シャドウコピーの前記エントリの各々は、無効であり、または前記マップの対応するエントリに従った情報を有するシステム。
【０５０５】
ＥＣ４３１）ＥＣ４１４記載のシステムにおいて、前記入出力デバイスの前記マップは２レベルマップを有するシステム。
【０５０６】
ＥＣ４３２）ＥＣ４３１記載のシステムにおいて、
前記入出力デバイスの前記マップは第１レベルおよび第２レベルを有し、
前記マップの前記シャドウコピーは前記入出力デバイスの前記マップの前記第２レベルに対応するシステム。
【０５０７】
ＥＣ４３３）ＥＣ４１４記載のシステムにおいて、前記マップの前記シャドウコピーの前記エントリの各々は有効性の指示を有するシステム。
【０５０８】
ＥＣ４３４）ＥＣ４３３記載のシステムにおいて、前記マップの前記シャドウコピーの前記有効なエントリの各々は、前記論理ブロックアドレスのうちのそれぞれの１若しくはそれ以上を、前記不揮発性メモリ内のそれぞれの位置と選択的に関連付けるシステム。
【０５０９】
ＥＣ４３５）ＥＣ４３４記載のシステムにおいて、前記マップの前記シャドウコピーの前記有効なエントリのうちの少なくとも１つは、前記有効なエントリのうちの前記少なくとも１つと関連付けられた前記それぞれの論理ブロックアドレスのうちの少なくとも１つが前記不揮発性メモリに存在しないことを選択的に指定するシステム。
【０５１０】
ＥＣ４３６）ＥＣ４３５記載のシステムにおいて、前記有効なエントリのうちの前記少なくとも１つと関連付けられた前記それぞれの論理ブロックアドレスのうちの前記少なくとも１つは切り捨てられるシステム。
【０５１１】
ＥＣ４３７）ＥＣ４３３記載のシステムにおいて、前記マップの前記シャドウコピーの前記有効なエントリの各々は前記不揮発性メモリ内のそれぞれの位置を選択的に指定するシステム。
【０５１２】
ＥＣ４３８）ＥＣ４３３記載のシステムにおいて、さらに、
最初に前記マップの前記シャドウコピーのすべての前記エントリを無効とマークする手段を有するものであるシステム。
【０５１３】
ＥＣ４３９）ＥＣ４１４記載のシステムにおいて、さらに、
前記マップの前記シャドウコピーを前記入出力デバイスに接続されたコンピューティングホストのメモリに記憶する手段を有するものであるシステム。
【０５１４】
ＥＣ４４０）ＥＣ４３９記載のシステムにおいて、さらに、
前記入出力デバイスから前記マップの前記シャドウコピーへの更新を受け取る手段を有するものであるシステム。
【０５１５】
ＥＣ４４１）ＥＣ４３９記載のシステムにおいて、前記コンピューティングホストの前記メモリは前記コンピューティングホストのメインメモリを有するシステム。
【０５１６】
ＥＣ４４２）ＥＣ４３９記載のシステムにおいて、前記コンピューティングホストの前記メモリは前記コンピューティングホストの入出力空間メモリを有するシステム。
【０５１７】
ＥＣ４４３）ＥＣ４４２記載のシステムにおいて、前記コンピューティングホストの前記メモリは、ＰＣＩｅアドレス空間において前記入出力デバイスによってアクセス可能であるシステム。
【０５１８】
ＥＣ４４４）ＥＣ４４２記載のシステムにおいて、さらに、
前記マップの前記シャドウコピーへの前記更新を前記入出力デバイスから前記コンピューティングホストの前記入出力空間メモリに送る手段を有するものであるシステム。
【０５１９】
ＥＣ４４５）ＥＣ４４４記載のシステムにおいて、前記更新を送る前記手段はＰＣＩｅ書き込み要求を送る手段を有するシステム。
【０５２０】
ＥＣ４４６）ＥＣ４４４記載のシステムにおいて、前記更新を送る前記手段は前記マップの前記シャドウコピーの読み出し−変更−書き込みの手段を有するシステム。
【０５２１】
ＥＣ４４７）ＥＣ４４４記載のシステムにおいて、さらに、
前記入出力デバイスが特定のコマンドを実行する前に、前記マップの前記シャドウコピーから前記特定のコマンドの論理ブロックアドレスの変換をフェッチする手段を有するものであるシステム。
【０５２２】
ＥＣ４４８）ＥＣ４４７記載のシステムにおいて、前記フェッチは前記入出力デバイスによるものであるシステム。
【０５２３】
ＥＣ４４９）ＥＣ４４８記載のシステムにおいて、前記フェッチする手段はＰＣＩｅ読み出し要求を送る手段を有するシステム。
【０５２４】
ＥＣ４５０）ＥＣ４４７記載のシステムにおいて、前記フェッチは前記コンピューティングホストによるものであるシステム。
【０５２５】
ＥＣ４５１）ＥＣ４５０記載のシステムにおいて、前記特定のコマンドは予めマッピングされた読み出しコマンドであるシステム。
【０５２６】
ＥＣ４５２）ＥＣ４３９記載のシステムにおいて、前記マップは前記不揮発性メモリに不揮発的に記憶されるシステム。
【０５２７】
ＥＣ４５３）ＥＣ４５２記載のシステムにおいて、前記コンピューティングホストの前記メモリは揮発性メモリを有するシステム。
【０５２８】
ＥＣ４５４）システムであって、
低電力状態を開始するという指示を入出力デバイスで受け取る手段と、
前記入出力デバイスの内部状態をコンピューティングホストのシステムアクセス可能メモリに保存する手段と、
前記低電力状態を終了するという指示を前記入出力デバイスで受け取る手段と、
前記システムアクセス可能メモリから前記入出力デバイスの前記内部状態を復元する手段と
を有するシステム。
【０５２９】
ＥＣ４５５）ＥＣ４５４記載のシステムにおいて、前記コンピューティングホストの前記システムアクセス可能メモリは前記コンピューティングホストのメインメモリを有するシステム。
【０５３０】
ＥＣ４５６）ＥＣ４５４記載のシステムにおいて、前記コンピューティングホストの前記システムアクセス可能メモリは前記コンピューティングホストの入出力空間メモリを有するシステム。
【０５３１】
ＥＣ４５７）ＥＣ４５６記載のシステムにおいて、前記コンピューティングホストの前記システムアクセス可能メモリは、ＰＣＩｅアドレス空間において前記入出力デバイスによってアクセス可能であるシステム。
【０５３２】
ＥＣ４５８）システムであって、
ストレージにアクセスするよう求めるコマンドを受け取る手段であって、前記コマンドはアクセスタイプを指定し、１若しくはそれ以上のパラメータを有するものである、前記受け取る手段と、
前記ストレージの位置を決定する手段と
を有し、
前記決定する手段は、含まれるデータ構造を条件付きで参照して前記位置を確認する手段を有し、前記参照は、前記パラメータのうちの１若しくはそれ以上が前記位置の仕様を有する場合は省略されるものである、
システム。
【０５３３】
ＥＣ４５９）ＥＣ４５８記載のシステムにおいて、前記指定は、
前記ストレージの領域の指示、
前記ストレージの物理アドレスの指示、
前記ストレージのデータの長さ、および
前記ストレージのデータの範囲
のうちの１若しくはそれ以上を有するシステム。
【０５３４】
ＥＣ４６０）ＥＣ４５８記載のシステムにおいて、前記含まれるデータ構造は、それぞれの１若しくはそれ以上の論理ブロックアドレス（ＬＢＡ）と関連付けられたデータが前記ストレージ内のどこに位置するかを各々が記述する１若しくはそれ以上のエントリを有するシステム。
【０５３５】
ＥＣ４６１）ＥＣ４６０記載のシステムにおいて、前記エントリの各々は、前記それぞれの論理ブロックアドレスと関連付けられた１若しくはそれ以上の属性をさらに選択的に記述するものであるシステム。
【０５３６】
ＥＣ４６２）ＥＣ４６０記載のシステムにおいて、前記エントリの各々は、前記ストレージの１若しくはそれ以上の領域と関連付けられた１若しくはそれ以上の属性をさらに記述するものであるシステム。
【０５３７】
ＥＣ４６３）ＥＣ４５８記載のシステムにおいて、さらに、
前記受け取りの前に、前記含まれるデータ構造への変更を記述する更新を提供する手段を有するものであるシステム。
【０５３８】
ＥＣ４６４）ＥＣ４６３記載のシステムにおいて、前記コマンドはコンピューティングホストによって提供され、前記更新は前記コンピューティングホストに提供されるシステム。
【０５３９】
ＥＣ４６５）ＥＣ４６３記載のシステムにおいて、前記更新は前記位置の前記仕様を有するシステム。
【０５４０】
ＥＣ４６６）ＥＣ４６５記載のシステムにおいて、前記コマンドは論理ブロックアドレス（ＬＢＡ）に従ったものであり、前記提供は前記論理ブロックアドレスに書き込みコマンドを提供したことに応答したものであるシステム。
【０５４１】
ＥＣ４６７）ＥＣ４６５記載のシステムにおいて、前記提供する手段は、前記ストレージの少なくともいくらかを実施する不揮発性メモリ（ＮＶＭ）の１若しくはそれ以上の部分を再利用し、および/または再配置したことに応答するものであるシステム。
【０５４２】
ＥＣ４６８）ＥＣ４５８記載のシステムにおいて、前記受け取りおよび前記決定は、入出力記憶デバイスによるものであるシステム。
【０５４３】
ＥＣ４６９）ＥＣ４５８記載のシステムにおいて、前記コマンドはコンピューティングホストによって提供されるシステム。
【０５４４】
ＥＣ４７０）ＥＣ４５８記載のシステムにおいて、前記パラメータは標準パラメータおよび非標準パラメータを有し、前記標準パラメータは規格によって定義され、前記非標準パラメータは前記規格によって定義されず、前記非標準パラメータは、前記仕様を有する前記パラメータを有するシステム。
【０５４５】
ＥＣ４７１）ＥＣ４５８記載のシステムにおいて、前記コマンドは規格によって定義され、前記仕様を有する前記パラメータは前記規格によって定義されないシステム。
【０５４６】
ＥＣ４７２）ＥＣ４７０またはＥＣ４７１記載のシステムにおいて、前記仕様を有する前記パラメータは、
予約コマンドコード、
ベンダ特有のパラメータ、
予約フィールド、
不使用フィールド、および
機能レジスタ内の値
のうちの１若しくはそれ以上を有するシステム。
【０５４７】
ＥＣ４７３）ＥＣ４５８記載のシステムにおいて、さらに、
前記アクセスタイプおよび前記位置に従って前記ストレージのアクセスを行う手段を有するものであるシステム。
【０５４８】
ＥＣ４７４）ＥＣ４７３記載のシステムにおいて、前記アクセスタイプは読み出しアクセスタイプであり、前記アクセスは読み出しアクセスであるシステム。
【０５４９】
ＥＣ４７５）ＥＣ４７４記載のシステムにおいて、前記パラメータは前記仕様を有するシステム。
【０５５０】
ＥＣ４７６）ＥＣ４７５記載のシステムにおいて、前記コマンドは予めマッピングされた読み出しコマンドであるシステム。
【０５５１】
ＥＣ４７７）ＥＣ４５８記載のシステムにおいて、前記位置は第１の位置であり、さらに、
前記アクセスタイプおよび第２の位置に従って前記ストレージのアクセスを行う手段を有するものであるシステム。
【０５５２】
ＥＣ４７８）ＥＣ４７７記載のシステムにおいて、前記アクセスタイプは書き込みアクセスタイプであり、前記アクセスは書き込みアクセスであるシステム。
【０５５３】
ＥＣ４７９）ＥＣ４７８記載のシステムにおいて、さらに、
前記含まれるデータ構造への変更を記述する更新を提供する手段であって、前記更新は前記第２の位置の仕様を有するものである、提供する手段を有するものであるシステム。
【０５５４】
ＥＣ４８０）ＥＣ４７８記載のシステムにおいて、さらに、
前記仕様に従って前記ストレージの使用状況の計算を修正する手段を有するものであるシステム。
【０５５５】
ＥＣ４８１）ＥＣ４５８記載のシステムにおいて、前記コマンドは切り捨てコマンドであり、前記アクセスタイプは切り捨てアクセスタイプであるシステム。
【０５５６】
ＥＣ４８２）ＥＣ４８１記載のシステムにおいて、さらに、
前記含まれるデータ構造への変更を記述する更新を提供する手段であって、前記更新は、前記コマンドの受け取りの前に前記位置にマップされた論理ブロックアドレス（ＬＢＡ）の属性の仕様を有するものである、提供する手段を有するものであるシステム。
【０５５７】
ＥＣ４８３）ＥＣ４８２記載のシステムにおいて、前記属性は、前記論理ブロックアドレスが削減されたことを指示するシステム。
【０５５８】
ＥＣ４８４）ＥＣ４８１記載のシステムにおいて、さらに、
前記仕様に従って前記ストレージの使用状況の計算を修正する手段を有するものであるシステム。
【０５５９】
ＥＣ４８５）システムであって、
コマンドを受け取る手段であって、当該コマンドは複数のコマンドタイプのうちの１つであり、当該コマンドタイプは第１のタイプおよび第２のタイプを有するものである、前記受け取る手段と、
前記コマンドが前記コマンドのタイプのうちのどれであるか決定する手段と、
前記コマンドが前記第１のタイプのものである場合、第１の処理を行い、次いで第２の処理を行う手段と、
前記コマンドが前記第２のタイプのものである場合、前記第１の処理を行わずに前記第２の処理を行う手段と
を有し、
前記第２の処理は、前記コマンドが前記第１のタイプのものである場合、前記第１の処理によって生成される情報を使用し、前記コマンドが前記第２のタイプのものである場合、当該コマンドによって提供される情報を使用するものである、
システム。
【０５６０】
ＥＣ４８６）ＥＣ４８５記載のシステムにおいて、前記コマンドは入出力記憶デバイスのストレージにアクセスするものであるシステム。
【０５６１】
ＥＣ４８７）ＥＣ４８６記載のシステムにおいて、前記第１の処理は、含まれるデータ構造にアクセスして前記情報を生成することを有するシステム。
【０５６２】
ＥＣ４８８）ＥＣ４８７記載のシステムにおいて、前記含まれるデータ構造は、論理ブロックアドレス（ＬＢＡ）と前記ストレージの少なくともいくらかを実施する不揮発性メモリ（ＮＶＭ）の物理アドレスとの間のマッピングを記述するマップであり、前記情報は前記マッピングのうちの１つの少なくとも一部を有するシステム。
【０５６３】
ＥＣ４８９）ＥＣ４８８記載のシステムにおいて、前記第１のタイプのコマンドは前記論理ブロックアドレスのうちの少なくとも１つを指定するシステム。
【０５６４】
ＥＣ４９０）ＥＣ４８９記載のシステムにおいて、前記第２のタイプのコマンドは前記論理ブロックアドレスのうちのいずれも指定しないシステム。
【０５６５】
ＥＣ４９１）ＥＣ４８７記載のシステムにおいて、さらに、
前記受け取りの前に、前記含まれるデータ構造への変更を記述する更新を提供する手段を有するものであるシステム。
【０５６６】
ＥＣ４９２）ＥＣ４９１記載のシステムにおいて、前記更新は前記情報の仕様を有するシステム。
【０５６７】
ＥＣ４９３）ＥＣ４９２記載のシステムにおいて、前記仕様は、
前記ストレージの領域の指示、
前記ストレージの物理アドレスの指示、
前記ストレージのデータの長さ、および
前記ストレージのデータの範囲
のうちの１若しくはそれ以上を有するシステム。
【０５６８】
ＥＣ４９４）ＥＣ４９２記載のシステムにおいて、前記提供する手段は、前記コマンドのタイプのうちの書き込みコマンドを受け取ったことに応答するものであるシステム。
【０５６９】
ＥＣ４９５）ＥＣ４９２記載のシステムにおいて、前記提供する手段は、前記ストレージの少なくともいくらかを実施する不揮発性メモリ（ＮＶＭ）の一部分を再利用し、および/または再配置したことに応答するものであるシステム。
【０５７０】
ＥＣ４９６）ＥＣ４９１記載のシステムにおいて、前記コマンドはコンピューティングホストによって提供され、前記更新は前記コンピューティングホストに提供されるシステム。
【０５７１】
ＥＣ４９７）ＥＣ４８６記載のシステムにおいて、前記受け取り、前記決定、および前記２つの行う動作は、前記入出力記憶デバイスによるものであるシステム。
【０５７２】
ＥＣ４９８）ＥＣ４８６記載のシステムにおいて、前記コマンドはコンピューティングホストによって提供されるシステム。
【０５７３】
ＥＣ４９９）ＥＣ４８５記載のシステムにおいて、前記第１のタイプの前記コマンドは前記規格によって定義され、前記第２のタイプの前記コマンドは前記規格によって定義されないシステム。
【０５７４】
ＥＣ５００）ＥＣ４８５記載のシステムにおいて、前記コマンドが前記第２のタイプのものであるときに、前記情報は、
予約コマンドコード、
ベンダ特有のパラメータ、
予約フィールド、
不使用フィールド、および
機能レジスタ内の値
のうちの１若しくはそれ以上によって提供されるシステム。
【０５７５】
ＥＣ５０１）ＥＣ４８７記載のシステムにおいて、前記第１のタイプは読み出しタイプを有し、前記第２のタイプは予めマッピングされた読み出しタイプを有するシステム。
【０５７６】
ＥＣ５０２）ＥＣ５０１記載のシステムにおいて、前記ストレージの前記アクセスは読み出しアクセスであり、前記情報は前記ストレージの位置を有し、前記第２の処理は前記位置を読み取ることを有するシステム。
【０５７７】
ＥＣ５０３）ＥＣ４８７記載のシステムにおいて、前記第１のタイプは第１の書き込みタイプを有し、前記第２のタイプは第２の書き込みタイプを有し、前記第２の書き込みタイプは、前記第１の書き込みタイプが前記情報を提供しない間に前記情報を提供するシステム。
【０５７８】
ＥＣ５０４）ＥＣ５０３記載のシステムにおいて、前記ストレージの前記アクセスは書き込みアクセスであり、前記情報は前記ストレージの第１の位置を有し、前記第２の処理は、前記ストレージの第２の位置を書き込むことと、前記第１の位置に従って前記ストレージの使用状況の計算を修正することとを有するシステム。
【０５７９】
ＥＣ５０５）ＥＣ５０４記載のシステムにおいて、さらに、
前記含まれるデータ構造への変更を記述する更新を提供する手段であって、前記更新は前記第２の位置の仕様を有するものである、提供する手段を有するものであるシステム。
【０５８０】
ＥＣ５０６）ＥＣ４８７記載のシステムにおいて、前記第１のタイプは第１の切り捨てタイプを有し、前記第２のタイプは第２の切り捨てタイプを有し、前記第２の切り捨てタイプは、前記第１の切り捨てタイプが前記情報を提供しない間に前記情報を提供するシステム。
【０５８１】
ＥＣ５０７）ＥＣ５０６記載のシステムにおいて、前記ストレージの前記アクセスは切り捨てアクセスであり、前記情報は前記ストレージの位置を有し、前記第２の処理は、前記位置に従って前記ストレージの使用状況の計算を修正する工程を有するシステム。
【０５８２】
ＥＣ５０８）ＥＣ５０７記載のシステムにおいて、さらに、
前記含まれるデータ構造への変更を記述する更新を提供する手段であって、前記更新は、前記コマンドの前記受け取りの前に前記含まれるデータ構造に従って前記位置にマップされた論理ブロックアドレス（ＬＢＡ）の属性の仕様を有するものである、提供する手段を有するものであるシステム。
【０５８３】
ＥＣ５０９）ＥＣ５０８記載のシステムにおいて、前記属性は、前記論理ブロックアドレスが削減されたことを指示するシステム。
【０５８４】
ＥＣ５１０）システムであって、
コンピューティングホストからコマンドを受け取る手段であって、前記コマンドは０若しくはそれ以上の標準パラメータおよび１若しくはそれ以上の非標準パラメータを有するものである、前記受け取る手段と、
前記標準パラメータに従って前記コマンドを実行する手段と
を有し、
前記受け取りおよび前記実行は、前記非標準パラメータを使用して、入出力記憶デバイスを介して行われるものであり、当該入出力記憶デバイスは、前記非標準パラメータを使用することにより、前記非標準パラメータを使用しない場合よりも高い効率で動作可能である、
システム。
【０５８５】
ＥＣ５１１）ＥＣ５１０記載のシステムにおいて、前記入出力記憶デバイスは前記コンピューティングホストへのストレージにインターフェースするシステム。
【０５８６】
ＥＣ５１２）ＥＣ５１０記載のシステムにおいて、前記入出力記憶デバイスは、前記非標準パラメータを使用することにより、前記非標準パラメータを使用しない場合よりも高い効率で前記コマンドを実行するように動作可能であるシステム。
【０５８７】
ＥＣ５１３）ＥＣ５１２記載のシステムにおいて、さらに、
前記入出力記憶デバイスのストレージの少なくとも一部分を実施する不揮発性メモリ（ＮＶＭ）を管理する手段を有するものであるシステム。
【０５８８】
ＥＣ５１４）ＥＣ５１３記載のシステムにおいて、前記コマンドは読み出しコマンドであり、前記非標準パラメータのうちの１若しくはそれ以上は、少なくとも部分的に前記不揮発性メモリ内の物理位置を指定し、さらに、
前記物理位置を読み取る手段を有するものであるシステム。
【０５８９】
ＥＣ５１５）ＥＣ５１４記載のシステムにおいて、さらに、
前記入出力記憶デバイスが、含まれる入出力デバイスマップへのマッピング更新を行い、前記マッピング更新のうちの少なくともいくつかを前記コンピューティングホストに提供して、前記コンピューティングホストがコンピューティング・ホスト・マップを更新することができるようにする手段を有するものであり、前記コンピューティング・ホスト・マップおよび前記入出力デバイスマップは、各々、論理ブロックアドレス（ＬＢＡ）と不揮発性メモリの前記位置との間のマッピングを記述するそれぞれのエントリを有し、前記非標準パラメータのうちの少なくとも１つは、少なくとも部分的に前記コンピューティング・ホスト・マップにアクセスすることによって決定されるシステム。
【０５９０】
ＥＣ５１６）ＥＣ５１５記載のシステムにおいて、前記コンピューティング・ホスト・マップにアクセスするための待ち時間は、前記入出力デバイスマップにアクセスするための待ち時間よりも短く、前記より高い効率はより低い待ち時間を有するシステム。
【０５９１】
ＥＣ５１７）ＥＣ５１３記載のシステムにおいて、前記コマンドは書き込みコマンドであり、前記非標準パラメータのうちの１若しくはそれ以上は、少なくとも部分的に前記不揮発性メモリ内の第１の物理位置を指定し、さらに、
前記不揮発性メモリ内の第２の物理位置を書き込むことと、前記第１の物理位置に従って前記ストレージの使用状況の計算を修正することとを有するものであるシステム。
【０５９２】
ＥＣ５１８）ＥＣ５１７記載のシステムにおいて、さらに、
前記入出力記憶デバイスが、含まれる入出力デバイスマップへのマッピング更新を行い、前記マッピング更新のうちの少なくともいくつかを前記コンピューティングホストに提供して、前記コンピューティングホストがコンピューティング・ホスト・マップを更新することを可能にする手段を有するものであり、前記コンピューティング・ホスト・マップおよび前記入出力デバイスマップは、各々、論理ブロックアドレス（ＬＢＡ）と前記不揮発性メモリの位置との間のマッピングを記述するそれぞれのエントリを有し、前記非標準パラメータのうちの少なくとも１つは、少なくとも部分的に前記コンピューティング・ホスト・マップにアクセスすることによって決定されるシステム。
【０５９３】
ＥＣ５１９）ＥＣ５１８記載のシステムにおいて、前記コンピューティング・ホスト・マップにアクセスするための待ち時間は、前記入出力デバイスマップにアクセスするための待ち時間よりも短く、前記より高い効率はより低い待ち時間を有するシステム。
【０５９４】
ＥＣ５２０）ＥＣ５１０記載のシステムにおいて、前記コマンドは第１のコマンドであり、前記入出力記憶デバイスは、前記非標準パラメータに従って、前記非標準パラメータを使用しない場合よりも高い効率で、前記第１のコマンドの後で受け取られる第２のコマンドを実行するように動作可能であるシステム。
【０５９５】
ＥＣ５２１）ＥＣ５２０記載のシステムにおいて、さらに、
前記入出力記憶デバイスのストレージの少なくとも一部分を実施する不揮発性メモリ（ＮＶＭ）を管理する手段を有するものであるシステム。
【０５９６】
ＥＣ５２２）ＥＣ５２１記載のシステムにおいて、さらに、
前記入出力記憶デバイスが、論理ブロックアドレス（ＬＢＡ）と前記不揮発性メモリの位置との間のマッピングを記述するエントリを有する含まれるマップを管理する手段を有するものであるシステム。
【０５９７】
ＥＣ５２３）ＥＣ５２２記載のシステムにおいて、前記標準パラメータのうちの１若しくはそれ以上の少なくとも一部分は特定の論理ブロックアドレスを有し、さらに、
前記入出力記憶デバイスが、前記非標準パラメータから決定される少なくともいくらかの情報を、前記エントリのうちの少なくとも１つの選択されるエントリに記憶することを有するものであり、前記選択されるエントリは、少なくとも部分的に前記特定の論理ブロックアドレスによって選択されるシステム。
【０５９８】
ＥＣ５２４）ＥＣ５２３記載のシステムにおいて、前記第２のコマンドは前記特定の論理ブロックアドレスに従ったものであるシステム。
【０５９９】
ＥＣ５２５）ＥＣ５２３記載のシステムにおいて、前記情報は複数のデータバンドのうちの特定の１つの識別を有し、さらに、
前記入出力記憶デバイスが、前記特定の論理ブロックアドレスがマップされている前記不揮発性メモリの部分を、前記特定のデータバンド内に留まるように再利用する手段を有するものであるシステム。
【０６００】
ＥＣ５２６）ＥＣ５２１記載のシステムにおいて、前記非標準パラメータのうちの少なくとも１若しくはそれ以上は、少なくとも部分的に複数のデータタイプのうちの１つを指定し、前記複数のデータタイプは、
圧縮可能データタイプ、
圧縮不能データタイプ、および
使用モデル・データ・タイプ
のうちの任意の２若しくはそれ以上を有するシステム。
【０６０１】
ＥＣ５２７）ＥＣ５２６記載のシステムにおいて、前記使用モデル・データ・タイプはデータベース・ジャーナル・データ・タイプを有し、さらに、
前記入出力記憶デバイスが、前記データベース・ジャーナル・データ・タイプと関連付けられたデータを複数のデータバンドのうちのデータベース・ジャーナル用データバンドに記憶するように前記不揮発性メモリを管理する手段と、
前記入出力記憶デバイスが、前記データベース・ジャーナル用データバンドを、前記データベース・ジャーナル・バンド内のデータの量が閾値を超えるときに、前記データベース・ジャーナル・バンドのより古いデータが選択的に削除されるように管理する手段と
を有するものであるシステム。
【０６０２】
ＥＣ５２８）ＥＣ５２７記載のシステムにおいて、さらに、
前記より古いデータが再利用されるときに前記より古いデータを削除する手段を有するものであるシステム。
【０６０３】
ＥＣ５２９）ＥＣ５２１記載のシステムにおいて、前記非標準パラメータのうちの少なくとも１若しくはそれ以上は、少なくとも部分的に複数のデータアクセスタイプのうちの１つを指定し、前記複数のデータアクセスタイプは、
読み出し／書き込みデータアクセスタイプ、
略読み出しデータアクセスタイプ、
略書き込みデータアクセスタイプ、および
一時データアクセスタイプ
のうちの任意の２若しくはそれ以上を有するシステム。
【０６０４】
ＥＣ５３０）ＥＣ５２９記載のシステムにおいて、前記第２のコマンドは書き込みコマンドであり、さらに、
前記入出力記憶デバイスが、前記書き込みコマンドに応答して前記不揮発性メモリの特定の部分を書き込む手段であって、前記特定の部分は、少なくとも部分的に前記データアクセスタイプによって決定されるものである、書き込む手段を有するものであるシステム。
【０６０５】
ＥＣ５３１）ＥＣ５３０記載のシステムにおいて、前記データアクセスタイプは読み出し／書き込みデータアクセスタイプであり、前記特定の部分は、相対的に多数のプログラム／消去サイクルに耐えたことがなく、相対的に少数のプログラム／消去サイクルに耐えたことがないものであるシステム。
【０６０６】
ＥＣ５３２）ＥＣ５３０記載のシステムにおいて、前記データアクセスタイプは略読み出しデータアクセスタイプであり、前記特定の部分は、相対的に多数のプログラム／消去サイクルに耐えたことがあるものであるシステム。
【０６０７】
ＥＣ５３３）ＥＣ５３０記載のシステムにおいて、前記データアクセスタイプは略書き込みデータアクセスタイプであり、前記特定の部分は、相対的に少数のプログラム／消去サイクルに耐えたことがあるものであるシステム。
【０６０８】
ＥＣ５３４）ＥＣ５３１、ＥＣ５３２、またはＥＣ５３３記載のシステムにおいて、前記より高い効率はより高い信頼性を有するシステム。
【０６０９】
ＥＣ５３５）ＥＣ５３１、ＥＣ５３２、またはＥＣ５３３記載のシステムにおいて、前記より高い効率はより長い寿命を有するシステム。
【０６１０】
ＥＣ５３６）ＥＣ５２９記載のシステムにおいて、前記標準パラメータのうちの１若しくはそれ以上の少なくとも一部分は特定の論理ブロックアドレスを有し、前記データアクセスタイプは前記一時データアクセスタイプであり、さらに、
前記入出力記憶デバイスが、特定のイベントに応答して、前記特定の論理ブロックアドレスに対応する前記不揮発性メモリ内の位置のところに記憶されたデータを削除する手段を有するものであるシステム。
【０６１１】
ＥＣ５３７）ＥＣ５３６記載のシステムにおいて、前記データを削除する前記手段は、前記特定の論理ブロックアドレスに対応するデータが前記不揮発性メモリに存在しないことを指定するために、前記特定の論理ブロックアドレスに従って前記マップのエントリのところの前記入出力記憶デバイスのマップを更新する手段を有するシステム。
【０６１２】
ＥＣ５３８）ＥＣ５３６記載のシステムにおいて、前記データを削除する前記手段は、前記データを削減する手段を有するシステム。
【０６１３】
ＥＣ５３９）ＥＣ５３６記載のシステムにおいて、前記特定のイベントは、
前記入出力記憶デバイスの不揮発性メモリ管理動作、
前記入出力記憶デバイスの不揮発性メモリ再利用動作、
前記入出力記憶デバイスの電源サイクル、
前記入出力記憶デバイスのリセット、
仮想入出力記憶デバイスの仮想機械電源サイクル、
仮想入出力記憶デバイスの仮想機械リセット、
前記コンピューティングホストからの明示的要求、および
メムキャッシュディーアプリケーションからの要求
のうちの任意の１若しくはそれ以上であるシステム。
【０６１４】
ＥＣ５４０）ＥＣ５２１記載のシステムにおいて、前記非標準パラメータのうちの少なくとも１若しくはそれ以上は、少なくとも部分的に複数のデータ順序付けのうちの１つを指定し、前記データ順序付けは、順次順序付けおよびアトミック順序付けのうちの任意の２若しくはそれ以上を有するシステム。
【０６１５】
ＥＣ５４１）ＥＣ５２１記載のシステムにおいて、前記非標準パラメータのうちの少なくとも１若しくはそれ以上は、少なくとも部分的に複数のデータ関係のうちの１つを指定し、前記データ関係は、複数のデータ項目間の読み出しおよび／または書き込み関連付け、ならびにプリフェッチデータ関係のうちの任意の２若しくはそれ以上を有するシステム。
【０６１６】
ＥＣ５４２）ＥＣ５２１記載のシステムにおいて、前記非標準パラメータのうちの少なくとも１若しくはそれ以上は、少なくとも部分的に複数のデータ宛先のうちの１つを指定し、前記データ宛先は、
前記不揮発性メモリの特定の部分、
階層型ストレージ層、
ストレージのタイプ、および
特定のデータバンド
のうちの任意の２若しくはそれ以上を有するシステム。
【０６１７】
ＥＣ５４３）ＥＣ５４２記載のシステムにおいて、ストレージの前記タイプは、
シングルレベルセル（ＳＬＣ）、
マルチレベルセル（ＭＬＣ）、
磁気ランダム・アクセス・メモリ（ＭＲＡＭ）、
揮発性、および
不揮発性
のうちの任意の１若しくはそれ以上であるシステム。
【０６１８】
ＥＣ５４４）ＥＣ５４２記載のシステムにおいて、前記データ宛先のうちの前記１つの前記仕様は、
書き込み速度、
再利用速度、
再利用頻度、および
書き込み増幅
のうちの１若しくはそれ以上の改善を可能にするシステム。
【０６１９】
ＥＣ５４５）ＥＣ５２１記載のシステムにおいて、前記非標準パラメータのうちの少なくとも１若しくはそれ以上は、少なくとも部分的に複数のコマンド処理特性のうちの１つを指定し、前記コマンド処理特性は、
コマンド優先順位、
コマンド順序付け、
特定のタイプのコマンドに対するバリア、
特定のタイプのコマンド間の境界、
コマンドの集約、
コマンドの融合、および
コマンドのアトミック動作
のうちの任意の２若しくはそれ以上を有するシステム。
【０６２０】
ＥＣ５４６）ＥＣ５１２またはＥＣ５２０記載のシステムにおいて、前記より高い効率はより高い性能を有するシステム。
【０６２１】
ＥＣ５４７）ＥＣ５４６記載のシステムにおいて、前記より高い性能は、
より高いバンド幅、
より低い待ち時間、および
より低い電力
のうちの１若しくはそれ以上を有するシステム。
【０６２２】
ＥＣ５４８）ＥＣ５１２またはＥＣ５２０記載のシステムにおいて、前記より高い効率はより高い信頼性を有するシステム。
【０６２３】
ＥＣ５４９）ＥＣ５４８記載のシステムにおいて、前記より高い信頼性は、より低い誤り率およびより長い寿命のうちの１若しくはそれ以上を有するシステム。
【０６２４】
ＥＣ５５０）システムであって、
コンピューティングホストからコマンドを受け取る手段であって、前記コマンドは、非標準統計値の返しを要求するものである、前記受け取る手段と、
前記コンピューティングホストに前記非標準統計値を返す手段と
を有し、
前記受け取る工程および前記返す工程は、前記非標準統計を計算するように動作可能な入出力記憶デバイスを介して実行されるものである、
システム。
【０６２５】
ＥＣ５５１）ＥＣ５５０記載のシステムにおいて、さらに、
前記入出力記憶デバイスのストレージの少なくとも一部分を実施する不揮発性メモリ（ＮＶＭ）に書き込まれるべきデータのサイズを低減させる手段を有するものであり、
前記計算は、少なくとも一部は前記低減に基づくものであるシステム。
【０６２６】
ＥＣ５５２）ＥＣ５５１記載のシステムにおいて、前記低減させる手段は圧縮の手段を有するシステム。
【０６２７】
ＥＣ５５３）ＥＣ５５１記載のシステムにおいて、前記低減させる手段は重複排除の手段を有するシステム。
【０６２８】
ＥＣ５５４）ＥＣ５５１記載のシステムにおいて、前記非標準統計は前記不揮発性メモリの使用状況に従ったものであるシステム。
【０６２９】
ＥＣ５５５）ＥＣ５５４記載のシステムにおいて、前記不揮発性メモリの前記使用状況は、前記低減の質に従って変動するシステム。
【０６３０】
ＥＣ５５６）ＥＣ５５４記載のシステムにおいて、前記不揮発性メモリの前記使用状況は、前記コンピューティングホストから受け取られる切り捨てコマンドの数および／またはサイズに従って変動するシステム。
【０６３１】
ＥＣ５５７）ＥＣ５５４記載のシステムにおいて、前記不揮発性メモリの前記使用状況は、前記コンピューティングホストから受け取られる一時データの量に従って変動するシステム。
【０６３２】
ＥＣ５５８）ＥＣ５５７記載のシステムにおいて、前記不揮発性メモリの前記使用状況は、前記入出力記憶デバイスによって削減された前記一時データの量に従って変動するシステム。
【０６３３】
ＥＣ５５９）ＥＣ５５４記載のシステムにおいて、前記非標準統計は前記不揮発性メモリの使用状況パーセンテージに従ったものであるシステム。
【０６３４】
ＥＣ５６０）ＥＣ５５４記載のシステムにおいて、前記非標準統計は前記入出力記憶デバイスの書き込み増幅に従ったものであるシステム。
【０６３５】
ＥＣ５６１）ＥＣ５５１記載のシステムにおいて、前記非標準統計は前記不揮発性メモリの１若しくはそれ以上のバンドのサイズであるシステム。
【０６３６】
ＥＣ５６２）ＥＣ５５１記載のシステムにおいて、前記非標準統計は前記不揮発性メモリの１若しくはそれ以上のバンドの使用状況であるシステム。
【０６３７】
ＥＣ５６３）ＥＣ５６２記載のシステムにおいて、前記不揮発性メモリの前記１若しくはそれ以上のバンドの前記使用状況は前記低減の質に従って変動するシステム。
【０６３８】
ＥＣ５６４）ＥＣ４６８、ＥＣ４８６、ＥＣ５１１、またはＥＣ５５０記載のシステムにおいて、前記入出力記憶デバイスは前記コマンドを受け取る前記手段であるソリッドステートディスク（ＳＳＤ）コントローラを有するシステム。
【０６３９】
ＥＣ５６５）ＥＣ５６４記載のシステムにおいて、前記ソリッドステートディスクコントローラは単一の集積回路（ＩＣ）において実装されるシステム。
【０６４０】
ＥＣ５６６）ＥＣ５６５記載のシステムにおいて、前記ストレージの少なくとも一部分は不揮発性メモリ（ＮＶＭ）によって実施されるシステム。
【０６４１】
ＥＣ５６７）ＥＣ５６６記載のシステムにおいて、前記不揮発性メモリは１若しくはそれ以上のフラッシュメモリを有するシステム。
【０６４２】
ＥＣ５６８）ＥＣ５６６記載のシステムにおいて、前記不揮発性メモリの少なくとも一部分は、
ＮＡＮＤフラッシュ技術記憶セル、および
ＮＯＲフラッシュ技術記憶セル
のうちの１若しくはそれ以上を有するシステム。
【０６４３】
ＥＣ５６９）ＥＣ５６６記載のシステムにおいて、前記不揮発性メモリの少なくとも一部分は、
シングルレベルセル（ＳＬＣ）フラッシュ技術記憶セル、および
マルチレベルセル（ＭＬＣ）フラッシュ技術記憶セル
のうちの１若しくはそれ以上を有するシステム。
【０６４４】
ＥＣ５７０）ＥＣ５６６記載のシステムにおいて、前記ソリッドステートディスクコントローラは、前記不揮発性メモリに対してデータを通信するように動作可能な不揮発性メモリインターフェースを有し、前記データのうちの少なくとも一部は前記コマンドのうちの少なくともいくつかと関連付けられているものであるシステム。
【０６４５】
ＥＣ５７１）ＥＣ５７０記載のシステムにおいて、前記不揮発性メモリインターフェースは、
オープンＮＡＮＤフラッシュインターフェース（ＯＮＦＩ）、
トグルモードインターフェース、
デュアル・データ・レート（ＤＤＲ）同期インターフェース、
同期インターフェース、および
非同期インターフェース
のうちの１若しくはそれ以上と適合するシステム。
【０６４６】
ＥＣ５７２）ＥＣ５６６記載のシステムにおいて、前記ソリッドステートディスクコントローラおよび前記不揮発性メモリはソリッドステートディスクに具備されるシステム。
【０６４７】
ＥＣ５７３）ＥＣ５６４記載のシステムにおいて、前記ソリッドステートディスクコントローラは、ストレージインターフェース規格と適合し、前記ストレージインターフェースを介して前記コマンドを提供するコンピューティングホストに接続するように動作可能なストレージインターフェースを有するシステム。
【０６４８】
ＥＣ５７４）ＥＣ５７３記載のシステムにおいて、さらに、
前記コマンドを提供するように前記コンピューティングホストを動作させる手段を有するものであるシステム。
【０６４９】
ＥＣ５７５）少なくとも１つのストレージインターフェース規格を有するか、又は参照する上記ＥＣのうちのいずれかのＥＣであって、前記ストレージインターフェース規格は、
ユニバーサル・シリアル・バス（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ：ＵＳＢ）インターフェース規格と、
コンパクトフラッシュ（登録商標）（Ｃｏｍｐａｃｔ  Ｆｌａｓｈ：ＣＦ）インターフェース規格と、
マルチメディアカード（ＭｕｌｔｉＭｅｄｉａＣａｒｄ：ＭＭＣ）インターフェース規格と、
セキュアデジタル（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ：ＳＤ）インターフェース規格と、
メモリ・スティック・インターフェース規格と、
ｘＤピクチャ・カード・インターフェース規格と、
内蔵ドライブエレクトロニクス（Ｉｎｔｅｇｒａｔｅｄ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ：ＩＤＥ）インターフェース規格と、
シリアル・アドバンスト・テクノロジー・アタッチメント（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ：ＳＡＴＡ）インターフェース規格と、
エクスターナルＳＡＴＡ（ｅＳＡＴＡ）インターフェース規格と、
スモール・コンピュータ・システム・インターフェース（ＳＣＳＩ）インターフェース規格と、
シリアル接続スモール・コンピュータ・システム・インターフェース（ＳＡＳ）インターフェース規格と、
ファイバー・チャンネル・インターフェース規格と、
イーサネット（登録商標）インターフェース規格と、
ペリフェラル・コンポーネント・インターコネクト・エキスプレス（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ：ＰＣＩｅ）インターフェース規格と
のうちの１若しくはそれ以上を有するものであるストレージインターフェース規格を有するか、又は参照する上記ＥＣのうちのいずれかのＥＣ。
【０６５０】
ＥＣ１４６）少なくとも１つの計算ホストを有するか、又は参照する上記のＥＣのうちのいずれかのＥＣであって、前記計算ホストは、
コンピュータと、
ワークステーションコンピュータと、
サーバコンピュータと、
ストレージサーバと、
パーソナルコンピュータ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ：ＰＣ）と、
ラップトップコンピュータと、
ノートブックコンピュータと、
ネットブックコンピュータと、
携帯端末（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ：ＰＤＡ）と、
メディアプレイヤと、
メディアレコーダと、
デジタルカメラと、
セル方式送受話器と、
コードレス電話の送受話器と、
電子ゲームと
のうちの１若しくはそれ以上を有するものである、上記ＥＣのうちのいずれかのＥＣ。
【０６５１】
システム
図１Ａに、（コンピューティングホストなどの）ホストと相互動作する（入出力記憶デバイスなどの）入出力デバイス内で動作可能であるＳＳＤコントローラを有するＳＳＤ１０１の実施形態の選択された詳細を図示する。ＳＳＤコントローラは、ＮＶＭ素子（フラッシュメモリなど）によって実施されるような不揮発性記憶を管理するためのものである。ＳＳＤコントローラ１００は１若しくはそれ以上の外部インターフェース１１０を介してホスト（不図示）に通信可能に接続されている。様々な実施形態によれば、外部インターフェース１１０は、ＳＡＴＡインターフェース、ＳＡＳインターフェース、ＰＣＩｅインターフェース、ファイバ・チャネル・インターフェース、イーサネット（登録商標）（Ｅｔｈｅｒｎｅｔ（登録商標））インターフェース（１０ギガビットイーサネット（登録商標）など）、上記のインターフェースのいずれかの非標準バージョン、カスタムインターフェース、またはストレージおよび／若しくは通信および／若しくはコンピューティング機器を相互接続するのに使用される任意の他の種類のインターフェースのうち１若しくはそれ以上である。例えば、ある実施形態では、ＳＳＤコントローラ１００は、ＳＡＴＡインターフェースおよびＰＣＩｅインターフェースを有する。
【０６５２】
ＳＳＤコントローラ１００は、さらに、１若しくはそれ以上のデバイスインターフェース１９０を介して、フラッシュデバイス１９２の１若しくはそれ以上のインスタンスといった、１若しくはそれ以上の記憶デバイスを有するＮＶＭ１９９に通信可能に接続されている。様々な実施形態によれば、デバイスインターフェース１９０は、非同期インターフェース、同期インターフェース、ＤＤＲ同期インターフェース、ＯＮＦＩ２．２やＯＮＦＩ３．０互換インターフェースといったＯＮＦＩ互換インターフェース、トグルモード互換フラッシュインターフェース、上記のインターフェースのいずれかの非標準バージョン、カスタムインターフェース、または記憶デバイスに接続するのに使用される任意の他の種類のインターフェースのうち１若しくはそれ以上である。
【０６５３】
フラッシュデバイス１９２の各々は、ある実施形態では、１若しくはそれ以上の個々のフラッシュダイ１９４を有する。フラッシュデバイス１９２のうち特定のフラッシュデバイスの種類に従って、特定のフラッシュデバイス１９２内の複数のフラッシュダイ１９４に、並列に、任意選択で、および/または選択的にアクセスすることができる。フラッシュデバイス１９２は、単に、ＳＳＤコントローラ１００に通信可能に接続することが可能な記憶デバイスの一種を表しているにすぎない。様々な実施形態では、ＳＬＣ  ＮＡＮＤフラッシュメモリ、ＭＬＣ  ＮＡＮＤフラッシュメモリ、ＮＯＲフラッシュメモリ、読み出し専用メモリ、スタティック・ランダム・アクセス・メモリ、ダイナミック・ランダム・アクセス・メモリ、強磁性メモリ、相変化メモリ、レーストラックメモリ、または任意の他の種類のメモリデバイス若しくは記憶媒体といった、任意の種類の記憶デバイスを使用することができる。
【０６５４】
様々な実施形態によれば、デバイスインターフェース１９０は、１つのバスにつきフラッシュデバイス１９２の１若しくはそれ以上のインスタンスを有する１若しくはそれ以上のバス；グループ内のバスにおおむね並列にアクセスさせる、１つのバスにつきフラッシュデバイス１９２の１若しくはそれ以上のインスタンスを有する１若しくはそれ以上のバスグループ；またはデバイスインターフェース１９０上へのフラッシュデバイス１９２の１若しくはそれ以上のインスタンスの任意の他の編成として編成される。
【０６５５】
引き続き図１Ａにおいて、ＳＳＤコントローラ１００は、ホストインターフェース１１１、データ処理１２１、バッファ１３１、マップ１４１、リサイクラ１５１、ＥＣＣ１６１、デバイスインターフェース論理１９１、ＣＰＵ１７１といった１若しくはそれ以上のモジュールを有する。図１Ａに図示する具体的なモジュールおよび相互接続は、単に、一実施形態を表すにすぎず、これらのモジュールの一部または全部、および図示されていないさらに別のモジュールの多くの配置および相互接続が考えられる。第１の例として、ある実施形態では、デュアルポーティングを提供するための２つ以上のホストインターフェース１１１がある。第２の例として、ある実施形態では、データ処理１２１および／またはＥＣＣ１６１がバッファ１３１と組み合わされている。第３の例として、ある実施形態では、ホストインターフェース１１１がバッファ１３１に直接接続されており、データ処理１２１が、バッファ１３１に記憶されたデータに任意選択で、および/または選択的に作用する。第４の例として、ある実施形態では、デバイスインターフェース論理１９１がバッファ１３１に直接接続されており、ＥＣＣ１６１が、バッファ１３１に記憶されたデータに任意選択で、および/または選択的に作用する。
【０６５６】
ホストインターフェース１１１は、外部インターフェース１１０を介してコマンドおよび／またはデータを送受信し、ある実施形態では、タグ追跡１１３によって個々のコマンドの進捗を追跡する。例えば、コマンドは、読み出すべきアドレス（ＬＢＡなど）およびデータの量（ＬＢＡ量、例えばセクタの数など）を指定する読み出しコマンドを含み、これに応答してＳＳＤは、読み出し状況および／または読み出しデータを提供する。別の例では、コマンドは、ＮＶＭ１９９内の位置を指定する予めマッピングされた読み出しコマンド、ならびに読み出し単位量での長さおよび／または範囲を含む。さらに別の例では、コマンドは、書き込むべきアドレス（ＬＢＡなど）およびデータの量（ＬＢＡ量、例えばセクタの数など）を指定する書き込みコマンドを含み、これに応答してＳＳＤは、書き込み状況を提供し、および／または書き込みデータを要求し、任意選択でその後に書き込み状況を提供する。さらに別の例では、コマンドは、もはや割り当てられる必要のなくなった１つ若しくはそれ以上のアドレス（１つ若しくはそれ以上のＬＢＡなど）を指定する割り当て解除コマンド（切り捨てコマンドなど）を含み、これに応答してＳＳＤは、マップをしかるべく変更し、任意選択で割り当て解除状況を提供する。あるコンテキストでは、ＡＴＡ互換ＴＲＩＭコマンドが割り当て解除コマンドの例である。さらに別の例では、コマンドは、超コンデンサ・テスト・コマンドまたはデータハーデニング成功問い合わせを含み、これに応答してＳＳＤは、適切な状況を提供する。ある実施形態では、ホストインターフェース１１１は、ＳＡＴＡプロトコルと適合し、ＮＣＱコマンドを使用して、最高３２までの未処理のコマンドを有することができるようになっており、各コマンドは０から３１までの数として表された一意のタグを有する。ある実施形態では、タグ追跡１１３は、外部インターフェース１１０を介して受け取ったコマンドのための外部タグを、ＳＳＤコントローラ１００による処理の間にコマンドを追跡するのに使用される内部タグと関連付けることができるようになっている。
【０６５７】
様々な実施形態によれば、データ処理１２１は、任意選択で、および/または選択的に、バッファ１３１と外部インターフェース１１０との間で送られる一部または全部のデータを処理する、およびデータ処理１２１は、任意選択で、および/または選択的に、バッファ１３１に記憶されたデータを処理する、以下のうち１若しくはそれ以上が行われる。ある実施形態では、データ処理１２１は、１若しくはそれ以上のエンジン１２３を使用して、書式設定、書式設定の変更、符号変換、ならびに他のデータ処理および／または動作タスクのうち１若しくはそれ以上を行う。
【０６５８】
バッファ１３１は、外部インターフェース１１０からデバイスインターフェース１９０へ／デバイスインターフェース１９０から外部インターフェース１１０へ送られたデータを記憶する。ある実施形態では、バッファ１３１は、さらに、ＳＳＤコントローラ１００によってフラッシュデバイス１９２の１若しくはそれ以上のインスタンスを管理するのに使用される、一部または全部のマップ表といったシステムデータも記憶する。様々な実施形態では、バッファ１３１は、データの一時記憶に使用されるメモリ１３７、バッファ１３１への、および/またはバッファ１３１からのデータの移動を制御するのに使用されるＤＭＡ１３３、ならびに高レベル誤り訂正および／または冗長性機能と、他のデータ移動および／または動作機能とを提供するのに使用されるＥＣＣ−Ｘ１３５のうち１若しくはそれ以上を有する。高レベル冗長性機能の一例がＲＡＩＤ様の能力であり、ディスクレベルではなく、フラッシュ・デバイス・レベル（フラッシュデバイス１９２のうち複数のものなど）および／またはフラッシュダイ・レベル（フラッシュダイ１９４など）の冗長性を備える。
【０６５９】
様々な実施形態によれば、以下のうち１若しくはそれ以上である。ＥＣＣ１６１は、任意選択で、および/または選択的に、バッファ１３１とデバイスインターフェース１９０との間で送られる一部または全部のデータを処理する；およびＥＣＣ１６１は、任意選択で、および/または選択的に、バッファ１３１に記憶されたデータを処理する。ある実施形態では、ＥＣＣ１６１は、例えば１若しくはそれ以上のＥＣＣ技法に従った低レベル誤り訂正および／または冗長性機能を提供するのに使用される。ある実施形態では、ＥＣＣ１６１は、ＣＲＣ符号、ハミング符号、ＲＳ符号、ＢＣＨ符号、ＬＤＰＣ符号、ビタビ符号、トレリス符号、硬判定符号、軟判定符号、消去ベースの符号、任意の誤り検出および／または訂正符号、ならびに上記の任意の組み合わせのうち１若しくはそれ以上を実施する。ある実施形態では、ＥＣＣ１６１は、１若しくはそれ以上の復号器（ＬＤＰＣ復号器など）を有する。
【０６６０】
デバイスインターフェース論理１９１は、デバイスインターフェース１９０を介してフラッシュデバイス１９２のインスタンスを制御する。デバイスインターフェース論理１９１は、フラッシュデバイス１９２のプロトコルに従ってフラッシュデバイス１９２のインスタンスへ／からデータを送ることができるようになっている。デバイスインターフェース論理１９１は、デバイスインターフェース１９０を介したフラッシュデバイス１９２のインスタンスの制御を選択的に配列するスケジューリング１９３を有する。例えば、ある実施形態では、スケジューリング１９３は、フラッシュデバイス１９２のインスタンスへの動作を待ち行列に入れ、フラッシュデバイス１９２（またはフラッシュダイ１９４）のインスタンスの個々のインスタンスへの動作を、フラッシュデバイス１９２（またはフラッシュダイ１９４）のインスタンスの個々のインスタンスが利用可能になるに従って選択的に送ることができるようになっている。
【０６６１】
マップ１４１は、外部インターフェース１１０上で使用されるデータアドレス仕様と、デバイスインターフェース１９０上で使用されるデータアドレス仕様との間の変換を行い、表１４３を使用して外部データアドレスからＮＶＭ１９９内の位置へマップする。例えば、ある実施形態では、マップ１４１は、外部インターフェース１１０上で使用されるＬＢＡを、表１４３によって提供されるマッピングにより、１若しくはそれ以上のフラッシュダイ１９４を対象とするブロックおよび／またはページアドレスに変換する。ドライブ製造または割り当て解除以来一度も書き込まれていないＬＢＡでは、マップは、ＬＢＡが読み出された場合に返すべきデフォルト値を指し示す。例えば、割り当て解除コマンドを処理するときに、マップは、割り当て解除されたＬＢＡに対応するエントリがデフォルト値のうち１つを指し示すように変更される。様々な実施形態では、様々なデフォルト値があり、各々が対応するポインタを有する。複数のデフォルト値は、ある（例えば第１の範囲内の）割り当て解除されたＬＢＡを１つのデフォルト値として読み出し、ある（例えば第２の範囲内の）割り当て解除されたＬＢＡを別のデフォルト値として読み出すことを可能にする。デフォルト値は、様々な実施形態では、フラッシュメモリ、ハードウェア、ファームウェア、コマンドおよび／若しくはプリミティブ引数および／若しくはパラメータ、プログラマブルレジスタ、またはそれらの様々な組み合わせによって定義される。
【０６６２】
ある実施形態では、マップ１４１は、表１４３を使用して、外部インターフェース１１０上で使用されるアドレスと、デバイスインターフェース１９０上で使用されるデータアドレス仕様との間の変換を行い、および/またはルックアップする。様々な実施形態によれば、表１４３は、１レベルマップ、２レベルマップ、マルチレベルマップ、マップキャッシュ、圧縮マップ、あるアドレス空間から別のアドレス空間への任意の種類のマッピング、および上記の任意の組み合わせのうち１若しくはそれ以上である。様々な実施形態によれば、表１４３は、スタティック・ランダム・アクセス・メモリ、ダイナミック・ランダム・アクセス・メモリ、ＮＶＭ（フラッシュメモリなど）、キャッシュメモリ、オンチップメモリ、オフチップメモリ、および上記の任意の組み合わせのうち１若しくはそれ以上を有する。
【０６６３】
ある実施形態では、リサイクラ１５１は、不要部分の整理を行う。例えば、ある実施形態では、フラッシュデバイス１９２のインスタンスは、ブロックが書き換え可能になる前に消去されなければならないブロックを有する。リサイクラ１５１は、例えば、マップ１４１によって維持されるマップをスキャンすることによって、フラッシュデバイス１９２のインスタンスのどの部分が実際に使用されているか（例えば、割り当て解除されているのではなく割り当てられていること）を決定し、フラッシュデバイス１９２のインスタンスの未使用の（例えば割り当て解除された）部分を、未使用の部分を消去することによって書き込みに利用できるようにすることができるようになっている。別の実施形態では、リサイクラ１５１は、フラッシュデバイス１９２のインスタンスのより大きい連続した部分を書き込みに利用できるようにするために、フラッシュデバイス１９２のインスタンス内に記憶されたデータを移動することができるようになっている。
【０６６４】
ある実施形態では、フラッシュデバイス１９２のインスタンスは、異なる種類および／または属性のデータを記憶するための１若しくはそれ以上のバンドを保持するように、選択的に、および/または動的に構成され、管理され、および/または使用される。バンドの数、配置、サイズ、および種類は、動的に変更可能である。例えば、コンピューティングホストからのデータはホット（アクティブな）バンドに書き込まれ、リサイクラ１５１からのデータはコールド（あまりアクティブではない）バンドに書き込まれる。ある使用シナリオでは、コンピューティングホストが長い順次のストリームを書き込む場合には、ホットバンドのサイズが増大し、コンピューティングホストがランダムな書き込みを行い、またはわずかな書き込みしか行わない場合には、コールドバンドのサイズが増大する。
【０６６５】
ＣＰＵ１７１は、ＳＳＤコントローラ１００の様々な部分を制御する。ＣＰＵ１７１は、ＣＰＵコア１７２を有する。ＣＰＵコア１７２は、様々な実施形態によれば、１若しくはそれ以上のシングルコアプロセッサまたはマルチコアプロセッサである。ＣＰＵコア１７２内の個々のプロセッサコアは、ある実施形態では、マルチスレッド化されている。ＣＰＵコア１７２は、命令および／またはデータのキャッシュおよび／またはメモリを有する。例えば、命令メモリは、ＣＰＵコア１７２が、ＳＳＤコントローラ１００を制御するためのプログラム（ファームウェアとも呼ばれるソフトウェアなど）を実行することを可能にする命令を有する。ある実施形態では、ＣＰＵコア１７２によって実行されるファームウェアの一部または全部が、（例えば、図１ＢのＮＶＭ１９９のファームウェア１０６として図示されている）フラッシュデバイス１９２のインスタンス上に記憶される。
【０６６６】
様々な実施形態では、ＣＰＵ１７１は、外部インターフェース１１０を介して受け取られるコマンドを、コマンドが進行している間に追跡し、制御するコマンド管理１７３、バッファ１３１の割り当ておよび使用を制御するバッファ管理１７５、マップ１４１を制御する変換管理１７７、データアドレス指定の整合性を制御し、例えば、外部データアクセスと再利用データアクセスとの間の矛盾を回避するコヒーレンシ管理１７９、デバイスインターフェース論理１９１を制御するデバイス管理１８１、識別情報の変更および通信を制御する識別情報管理１８２、ならびに、任意選択で、他の管理部をさらに有する。ＣＰＵ１７１によって果たされる管理機能は、そのいずれか、若しくは全部が、ハードウェア、ソフトウェア（ＣＰＵコア１７２上や、外部インターフェース１１０を介して接続されたホスト上で実行されるファームウェアなど）、またはそれらの任意の実施形態によって制御され、および/または管理され、あるいは、そのどれも、制御も管理もされないものである。
【０６６７】
ある実施形態では、ＣＰＵ１７１は、性能統計の収集および／または報告、ＳＭＡＲＴの実施、電源逐次開閉機構の制御、電力消費の制御および／または調整、電源障害への応答、クロック速度の制御および／またはモニタリングおよび／または調整、ならびに他の管理タスクのうち１若しくはそれ以上といった、他の管理タスクを行うことができるようになっている。
【０６６８】
様々な実施形態は、ＳＳＤコントローラ１００と同様の、例えば、ホストインターフェース１１１および／または外部インターフェース１１０の適応による、様々なコンピューティングホストを用いた動作と適合するコンピューティングホスト・フラッシュ・メモリ・コントローラを有する。様々なコンピューティングホストは、コンピュータ、ワークステーションコンピュータ、サーバコンピュータ、ストレージサーバ、ＰＣ、ラップトップコンピュータ、ノートブックコンピュータ、ネットブックコンピュータ、ＰＤＡ、メディアプレーヤ、メディアレコーダ、ディジタルカメラ、セルラハンドセット、コードレス電話機ハンドセット、および電子ゲームのうち１つまたはそれらの任意の組み合わせを有する。
【０６６９】
様々な実施形態では、ＳＳＤコントローラ（またはコンピューティングホスト・フラッシュ・メモリ・コントローラ）の全部または任意の部分が、単一のＩＣ、マルチダイＩＣの単一のダイ、マルチダイＩＣの複数のダイ、または複数のＩＣ上で実施される。例えば、バッファ１３１は、ＳＳＤコントローラ１００の他の要素と同じダイ上に実施される。別の例では、バッファ１３１は、ＳＳＤコントローラ１００の他の要素と異なるダイ上に実施される。
【０６７０】
図１Ｂに、図１ＡのＳＳＤの１若しくはそれ以上のインスタンスを有するシステムの様々な実施形態の選択された詳細を図示する。ＳＳＤ１０１は、デバイスインターフェース１９０を介してＮＶＭ１９９に接続されたＳＳＤコントローラ１００を有する。図には、様々な種別の実施形態、すなわち、ホストに直接接続された単一のＳＳＤ、各々がそれぞれの外部インターフェースを介してホストに直接それぞれ接続されている複数のＳＳＤ、および様々な相互接続要素を介してホストに間接的に接続された１若しくはそれ以上のＳＳＤが示されている。
【０６７１】
ホストに直接接続された単一のＳＳＤの例示的実施形態としては、ＳＳＤ１０１の１つのインスタンスが、外部インターフェース１１０を介してホスト１０２に直接接続される（例えば、スイッチ／ファブリック／中間コントローラ１０３が省かれ、バイパスされ、またはパススルーされる）。各々がそれぞれの外部インターフェースを介してホストに直接接続されている複数のＳＳＤの例示的実施形態としては、ＳＳＤ１０１の複数のインスタンスの各々が、外部インターフェース１１０のそれぞれのインスタンスを介してホスト１０２に直接それぞれ接続される（例えば、スイッチ／ファブリック／中間コントローラ１０３が省かれ、バイパスされ、またはパススルーされる）。様々な相互接続要素を介してホストに間接的に接続された１若しくはそれ以上のＳＳＤの例示的実施形態としては、ＳＳＤ１０１の１若しくはそれ以上のインスタンスの各々が、ホスト１０２に間接的にそれぞれ接続される。各間接接続は、スイッチ／ファブリック／中間コントローラ１０３に接続された外部インターフェース１１０のそれぞれのインスタンス、およびホスト１０２に接続する中間インターフェース１０４を介したものである。
【０６７２】
スイッチ／ファブリック／中間コントローラ１０３を有する実施形態の一部は、メモリインターフェース１８０を介して接続された、ＳＳＤによってアクセス可能なカードメモリ１１２Ｃも有する。様々な実施形態では、ＳＳＤ、スイッチ／ファブリック／中間コントローラ、および／またはカードメモリのうち１若しくはそれ以上が、物理的に識別可能なモジュール、カード、または差し込み可能な要素（入出力カード１１６など）上に含まれる。ある実施形態では、ＳＳＤ１０１（またはその変形）は、ホスト１０２として動作するイニシエータ（開始プログラム）に接続されたＳＡＳドライブまたはＳＡＴＡドライブに対応する。
【０６７３】
ホスト１０２は、ＯＳ１０５、ドライバ１０７、アプリケーション１０９、マルチデバイス管理ソフトウェア１１４の様々な組み合わせといった、ホストソフトウェア１１５の様々な要素を実行することができるようになっている。点線矢印１０７Ｄは、ホストソフトウェア←→入出力装置通信、例えば、ＳＳＤ１０１のインスタンスのうち１若しくはそれ以上から／へ、ドライバ１０７を介したＯＳ１０５、ドライバ１０７、および、ドライバ１０７を介して、またはＶＦとして直接アプリケーション１０９のうち任意の１若しくはそれ以上へ／から送られ／受け取られるデータを表す。
【０６７４】
ＯＳ１０５は、ＳＳＤとインターフェースするための（概念的にはドライバ１０７によって図示されている）ドライバを有し、および/またはそのようなドライバを用いて動作することができるようになっている。Ｗｉｎｄｏｗｓ（登録商標）の様々なバージョン（９５、９８、ＭＥ、ＮＴ、ＸＰ、２０００、サーバ、Ｖｉｓｔａ、および７など）、Ｌｉｎｕｘ（登録商標）の様々なバージョン（Ｒｅｄ  Ｈａｔ、Ｄｅｂｉａｎ、およびＵｂｕｎｔｕなど）、ならびにＭａｃＯＳの様々なバージョン（８、９およびＸなど）がＯＳ１０５の例である。様々な実施形態では、ドライバは、ＳＡＴＡ、ＡＨＣＩ、ＮＶＭ  Ｅｘｐｒｅｓｓといった標準のインターフェースおよび／またはプロトコルを用いて動作する標準のドライバおよび／または汎用のドライバ（「シュリンクラップされた（市販の）」または「プリインストールされた」ともいう）であり、あるいは、任意選択で、ＳＳＤ１０１に特有のコマンドの使用を可能にするようにカスタマイズされており、および/またはベンダ特有のものである。あるドライブおよび／またはドライバは、アプリケーションレベルのプログラム、例えば最適化ＮＡＮＤアクセス（Ｏｐｔｉｍｉｚｅｄ  ＮＡＮＤ  Ａｃｃｅｓｓ）（ＯＮＡともいう）または直接ＮＡＮＤアクセス（Ｄｉｒｅｃｔ  ＮＡＮＤ  Ａｃｃｅｓｓ）（ＤＮＡともいう）の各技法によるアプリケーション１０９などが、コマンドをＳＳＤ１０１に直接伝えることを可能にするパススルーモードを有し、カスタマイズされたアプリケーションが、汎用ドライバとでさえもＳＳＤ１０１に特有のコマンドを使用することを可能にする。ＯＮＡの技法は、非標準修飾子（ｈｉｎｔｓ）の使用、ベンダ特有のコマンドの使用、非標準の統計の通信、例えば圧縮可能性に従った実際のＮＶＭの使用、および他の技法のうち１若しくはそれ以上を有する。ＤＮＡの技法は、ＮＶＭへのマップされていない読み出し、書き込み、および／または消去アクセスを提供する非標準のコマンドまたはベンダ特有の（コマンド）の使用、例えば、入出力装置が通常は行うはずのデータの書式設定をバイパスすることによる、ＮＶＭへのより直接的なアクセスを提供する非標準の、またはベンダ特有のコマンドの使用、および他の技法のうち１若しくはそれ以上を有する。ドライバの例は、ＯＮＡまたはＤＮＡサポートなしのドライバ、ＯＮＡ使用可能ドライバ、ＤＮＡ使用可能ドライバ、ＯＮＡ／ＤＮＡ使用可能ドライバである。ドライバの別の例は、ベンダ提供ドライバ、ベンダ開発ドライバ、および／またはベンダ拡張ドライバ、ならびにクライアント提供ドライバ、クライアント開発ドライバ、および／またはクライアント拡張ドライバである。
【０６７５】
アプリケーションレベルのプログラムの例は、ＯＮＡまたはＤＮＡサポートなしのアプリケーション、ＯＮＡ使用可能アプリケーション、ＤＮＡ使用可能アプリケーション、およびＯＮＡ／ＤＮＡ使用可能アプリケーションである。点線矢印１０９Ｄは、アプリケーション←→入出力装置通信（ドライバによるバイパスや、アプリケーションのためのＶＦによるバイパスなど）、例えば、ＯＳを仲介として使用するアプリケーションなしでＳＳＤと通信するＯＮＡ使用可能アプリケーションおよびＯＮＡ使用可能ドライバなどを表す。点線矢印１０９Ｖは、アプリケーション←→入出力装置通信（アプリケーションのためのＶＦによるバイパスなど）、例えば、ＯＳまたはドライバを仲介として使用するアプリケーションなしでＳＳＤと通信するＤＮＡ使用可能アプリケーションおよびＤＮＡ使用可能ドライバなどを表す。
【０６７６】
ＮＶＭ１９９の１若しくはそれ以上の部分が、ある実施形態では、ファームウェア記憶、例えばファームウェア１０６に使用される。ファームウェア記憶は、１若しくはそれ以上のファームウェアイメージ（またはその部分）を有する。ファームウェアイメージは、例えばＳＳＤコントローラ１００のＣＰＵコア１７２によって実行される、例えばファームウェアの１若しくはそれ以上のイメージを有する。ファームウェアイメージは、別の例では、例えばファームウェア実行時にＣＰＵコアによって参照される、定数、パラメータ値、ＮＶＭデバイス情報の１若しくはそれ以上のイメージを有する。ファームウェアのイメージは、例えば、現在のファームウェアイメージおよび０以上の（ファームウェア更新に対して）前のファームウェアイメージに対応する。様々な実施形態では、ファームウェアは、汎用動作モード、標準動作モード、ＯＮＡ動作モード、および／またはＤＮＡ動作モードを提供する。ある実施形態では、ファームウェア動作モードのうち１若しくはそれ以上が、ドライバによって任意選択で伝えられ、および/または提供される、鍵または様々なソフトウェア技法によって使用可能とされる（例えば、１若しくはそれ以上のＡＰＩが「ロック解除」される）。
【０６７７】
ある実施形態では、ホスト１０２はシャドウマップ１０８を別個のハードウェアリソースとして含み、別の実施形態では、シャドウマップは、一部または全部がホストメモリ１１２Ｈによって実施される。シャドウマップ１０８、ホストメモリ１１２Ｈ、およびカードメモリ１１２Ｃの例は、ＤＲＡＭ、ＳＲＡＭ、および／またはフラッシュデバイスによって実施されるような１若しくはそれ以上の揮発性素子および／またはＮＶＭ素子である。ホストメモリのさらに別の例は、システムメモリ、ホスト・メイン・メモリ、ホスト・キャッシュ・メモリ、ホストアクセス可能メモリ、および入出力デバイスアクセス可能メモリである。
【０６７８】
本明細書で別により詳細に説明するように、様々な実施形態において、ホスト１０２および／またはＳＳＤ１０１のインスタンスのうちの１若しくはそれ以上は、シャドウマップ１０８にアクセスして、ＬＢＡを、ＮＶＭ１９９のインスタンスのうちの１若しくはそれ以上の要素といった、入出力デバイスＮＶＭのうちの１若しくはそれ以上の部分を対象とするブロックアドレスおよび／またはページアドレスに変換するのに使用可能なマッピング情報の全部または任意の部分を保存し、取得することができるようになっている。概念的には、シャドウマップは、マップ１４１のインスタンスのうちの１若しくはそれ以上に含まれる情報に従う（例えば情報を追尾する）。シャドウマップ内の情報は、ホスト１０２のうちの１若しくはそれ以上によって（例えば、ＳＳＤにコマンドを発行することと連動して）、またＳＳＤ１０１のインスタンスのうちの１若しくはそれ以上によって（ホストからのコマンドを処理することと連動して）更新される。ある実施形態および／または使用シナリオ（例えば、入出力カード１１６を有し、図１Ｂの（任意選択の）カードメモリ１１２Ｃをシャドウマップのストレージとして使用するいくつかの実施形態）では、１若しくはそれ以上の入出力デバイス、例えばＳＳＤはシャドウマップにアクセスし、ホストはシャドウマップにアクセスしない。やはり本明細書で別により詳細に説明するように、様々な実施形態において、ＳＳＤ１０１のインスタンスのうちの１若しくはそれ以上は、カードメモリ１１２Ｃおよび／またはホストメモリ１１２Ｈにアクセスして、例えば、休眠状態を開始し、終了するときに、それぞれのＳＳＤインスタンスの内部の状態情報を保存し、復元することができるようになっている。
【０６７９】
スイッチ／ファブリック／中間コントローラを欠くある実施形態では、ＳＳＤは、外部インターフェース１１０を介して直接ホストに接続される。様々な実施形態では、ＳＳＤコントローラ１００は、ＲＡＩＤコントローラといった他のコントローラの１若しくはそれ以上の中間レベルを介してホストに接続される。ある実施形態では、ＳＳＤ１０１（またはその変形）は、ＳＡＳドライブまたはＳＡＴＡドライブに対応し、スイッチ／ファブリック／中間コントローラ１０３は、イニシエータにさらに接続されたエキスパンダに対応し、あるいは、スイッチ／ファブリック／中間コントローラ１０３は、エキスパンダを介してイニシエータに間接的に接続されたブリッジに対応する。ある実施形態では、スイッチ／ファブリック／中間コントローラ１０３は、１若しくはそれ以上のＰＣＩｅスイッチおよび／またはファブリックを有する。
【０６８０】
様々な実施形態、例えば、コンピューティングホストとしてのホスト１０２（コンピュータ、ワークステーションコンピュータ、サーバコンピュータ、ストレージサーバ、ＰＣ、ラップトップコンピュータ、ノートブックコンピュータ、および／またはネットブックコンピュータなど）を有する実施形態のあるものでは、コンピューティングホストは、任意選択で、１若しくはそれ以上のローカルサーバおよび／またはリモートサーバ（例えば、任意選択のサーバ１１８）と（例えば、任意選択の入出力装置／リソースおよび記憶装置／リソース１１７および任意選択のＬＡＮ／ＷＡＮ１１９を介して）通信することができるようになっている。通信は、例えば、ＳＳＤ１０１要素のうち任意の１若しくはそれ以上のローカルおよび／またはリモートのアクセス、管理、および／または使用を可能にする。ある実施形態では、通信は、全部または一部がイーサネット（登録商標）（Ｅｔｈｅｒｎｅｔ（登録商標））によるものである。ある実施形態では、通信は、全部または一部がファイバチャネルによるものである。ＬＡＮ／ＷＡＮ１１９は、様々な実施形態では、１若しくはそれ以上のローカル・エリア・ネットワークおよび／または広域ネットワーク、例えば、サーバファーム内のネットワーク、サーバファームを接続するネットワーク、メトロエリアネットワーク、およびインターネットのうち任意の１若しくはそれ以上を表す。
【０６８１】
様々な実施形態では、１若しくはそれ以上のＮＶＭと組み合わされたＳＳＤコントローラおよび／またはコンピューティングホスト・フラッシュ・メモリ・コントローラが、ＵＳＢ記憶コンポーネント、ＣＦ記憶コンポーネント、ＭＭＣ記憶コンポーネント、ＳＤ記憶コンポーネント、メモリスティック記憶コンポーネント、ｘＤピクチャカード記憶コンポーネントといった不揮発性記憶コンポーネントとして実施される。
【０６８２】
様々な実施形態では、ＳＳＤコントローラ（またはコンピューティングホスト・フラッシュ・メモリ・コントローラ）の全部またはいずれかの部分、またはその機能が、コントローラが接続されるべきホスト（図１Ｂのホスト１０２など）において実施される。様々な実施形態では、ＳＳＤコントローラ（若しくはコンピューティングホスト・フラッシュ・メモリ・コントローラ）の全部またはいずれかの部分、またはその機能が、ハードウェア（論理回路など）、ソフトウェアおよび／若しくはファームウェア（ドライバソフトウェアおよび／若しくはＳＳＤ制御ファームウェアなど）、またはそれらの任意の組み合わせによって実施される。例えば、（例えば図１ＡのＥＣＣ１６１および／またはＥＣＣ−Ｘ１３５と同様の）ＥＣＣ部の、またはＥＣＣ部と関連付けられた機能が、一部はホスト上のソフトウェアによって、一部はＳＳＤコントローラ内のファームウェアとハードウェアとの組み合わせによって実施される。別の例として、（例えば図１Ａのリサイクラ１５１と同様の）リサイクラ部の、またはリサイクラ部と関連付けられた機能が、一部はホスト上のソフトウェアによって、一部はコンピューティングホスト・フラッシュ・メモリ・コントローラ内のハードウェアによって実施される。
【０６８３】
マッピングの動作
図２に、ＬＢＡのＬＰＮ部分のマッピングの実施形態の選択された詳細を図示する。ある実施形態では、読み出し単位は、ＮＶＭのページの部分といった、独立に読み出すことのできるＮＶＭの最も細かい粒度である。別の実施形態では、読み出し単位は、検査ビットによって保護されるすべてのデータに（低レベル）誤り訂正符号の検査ビット（冗長性ともいう）を加えたものに対応する。例えば、図１ＡのＥＣＣ１６１は、検査ビットによる、例えばＬＤＰＣ符号による誤り訂正を実施し、読み出し単位は、ＬＤＰＣ符号化ビットによって保護されるデータビットにＬＤＰＣ符号を加えたものを実施する符号化ビットに対応する。
【０６８４】
ある実施形態では、マップ１４１は、ＬＢＡ２１１のＬＰＮ２１３部分を、例えば（図１Ａに図示される）表１４３によって、ＬＰＮのためのマップ情報２２１にマップする。ＬＰＮのためのマップ情報（例えばＬＰＮのためのマップ情報２２１）をマップエントリともいう。マップ１４１は、ＬＰＮを対応するマップエントリと関連付けるといわれる。様々な実施形態では、マッピングは、１若しくはそれ以上の連想ルックアップ、１若しくはそれ以上の非連想ルックアップ、および／または１若しくはそれ以上の他の技法によるものである。
【０６８５】
ある実施形態では、ＳＳＤコントローラ１００は、潜在的に、および/またはアクティブに使用されているＬＰＮごとに１つのマップエントリを維持する。
【０６８６】
ある実施形態では、ＬＰＮのためのマップ情報２２１は、それぞれの読み出し単位アドレス２２３および読み出し単位での長さ２２５を有する。ある実施形態では、長さおよび／または範囲は、例えば、読み出し単位での長さ２２５の全部またはいずれかの部分において、例えば、長さを範囲からのオフセットとして記憶することによって、符号化して記憶される。別の実施形態では、第１のＬＰＮは第１のマップエントリと関連付けられており、（第１のＬＰＮと異なるが、第１のＬＰＮによって参照される論理ページと同サイズの論理ページを参照する）第２のＬＰＮは第２のマップエントリと関連付けられており、第１のマップエントリのそれぞれの読み出し単位での長さは、第２のマップエントリのそれぞれの読み出し単位での長さと異なる。
【０６８７】
様々な実施形態では、同じ時点において、第１のＬＰＮは第１のマップエントリと関連付けられており、（第１のＬＰＮと異なる）第２のＬＰＮは第２のマップエントリと関連付けられており、第１のマップエントリのそれぞれの読み出し単位アドレスは、第２のマップエントリのそれぞれの読み出し単位アドレスと同じである。別の実施形態では、第１のＬＰＮと関連付けられたデータおよび第２のＬＰＮと関連付けられたデータは、どちらも、ＮＶＭ１９９内の同じデバイスの同じ物理ページに記憶されている。
【０６８８】
様々な実施形態によれば、読み出し単位アドレス２２３は、ＮＶＭ内の開始アドレス、ＮＶＭ内の終了アドレス、上記のいずれかのオフセット、およびＬＰＮ２１３と関連付けられたＮＶＭの部分を特定するための任意の他の技法のうち１若しくはそれ以上と関連付けられている。
【０６８９】
図３に、読み出し単位の量で測った長さを総体として有する、様々な読み出し単位として編成された読み出しデータを生成するための、読み出し単位アドレスのところのＮＶＭへのアクセスの実施形態の選択された詳細を図示する。様々な実施形態によれば、最初の読み出し単位３１３は、ＮＶＭのアドレス空間における最低のアドレスを有する読み出しデータ３１１内の読み出し単位のうち１つ、読み出し単位のうち固定された１つ、読み出し単位のうちのいずれか１つ、読み出し単位のうち可変の１つ、および任意の他の技法によって選択される読み出し単位のうち１つのうち１若しくはそれ以上である。様々な実施形態では、ＳＳＤコントローラ１００は、ＮＶＭ１９９にアクセスし、読み出し単位での長さ２２５によって指定される数以下の数の読み出し単位を読み出すことによって読み出しデータ３１１を生成することができるようになっている。
【０６９０】
図４Ａに、（図３の読み出し単位３１３や読み出し単位３１５といった）読み出し単位の実施形態の選択された詳細を読み出し単位４０１Ａとして図示する。様々な実施形態および使用シナリオにおいて、ヘッダ１  ４１１ＡからヘッダＮ  ４１９Ａは連続しており、ヘッダの各々によって（例えばそれぞれのオフセットにより）特定されるそれぞれのデータ領域は、ヘッダの最後のものに後に続いて連続している。各データ領域は総体としてデータバイト４２１Ａを形成している。各データ領域は、各ヘッダが記憶される位置順と一致した位置順で記憶される。例えば、読み出し単位の先頭のところの第１のヘッダを考えると、第２のヘッダおよび第３のヘッダは、第１のヘッダのすぐ後に続く。（第１のヘッダ内の第１のオフセットによって特定される）第１のデータ領域は第３のヘッダのすぐ後に続く。（第２のヘッダ内の第２のオフセットによって特定される）第２のデータ領域は第１のデータ領域のすぐ後に続く。同様に、（第３のヘッダ内によって特定される）第３データ領域も第２のデータ領域のすぐ後に続く。
【０６９１】
図４Ｂに、（図３の読み出し単位３１３や読み出し単位３１５といった）読み出し単位の別の実施形態の選択された詳細を読み出し単位４０１Ｂとして図示する。様々な実施形態および／または使用シナリオにおいて、ヘッダマーカ（ＨＭ）４１０Ｂは、後に続く連続したヘッダ（ヘッダ１  ４１１Ｂ、ヘッダ２  ４１２Ｂ...ヘッダＮ  ４１９Ｂ）の数を指示する任意選択の最初のフィールド（例えば１バイトのフィールド）である。データ領域（データバイト４２１Ｂ、データバイト４２２Ｂ...データバイト４２９Ｂ）は、それぞれ、ヘッダ（ヘッダ１  ４１１Ｂ、ヘッダ２  ４１２Ｂ...ヘッダＮ  ４１９Ｂ）によって特定され、ヘッダが記憶される位置順とは逆の位置順で記憶される。ヘッダは読み出し単位の先頭から開始し、対応するデータ領域は読み出し単位の末尾から開始する。ある実施形態では、データ領域内のデータバイト（例えば、データバイト４２１Ｂ、データバイト４２２Ｂ...データバイト４２９Ｂ）は、前方順（位置順と一致するバイト順）に配置され、別の実施形態では、データバイトは、逆順（位置順に対して反転されたバイト順）に配置される。ある実施形態では、ヘッダマーカが、（例えば図４Ａに示すように）ヘッダおよびデータバイトが同じ位置順で記憶されている読み出し単位で使用される。
【０６９２】
ある実施形態では、任意選択のパディングバイト４３１Ａ（または４３１Ｂ）は、特定のＬＰＮと関連付けられたデータの粒度に従ったものである。例えば、ある実施形態では、データバイト４２１Ａ（またはデータバイト４２１Ｂ、データバイト４２２Ｂ...データバイト４２９Ｂの総体）が、ヘッダ１  ４１１ＡからヘッダＮ  ４１９Ａまで（またはヘッダ１  ４１１Ｂ、ヘッダ２  ４１２Ｂ...ヘッダＮ  ４１９Ｂ）の最後のヘッダを除くすべてのヘッダと関連付けられたデータを記憶した後で、決まった量、例えば８バイトより少ない残りのスペースを有する場合には、最後のヘッダと関連付けられたＬＰＮのデータは後続の読み出し単位において開始する。別の実施形態では、最後のヘッダ内の特定のオフセット値（例えばすべて１）が、最後のヘッダと関連付けられたＬＰＮのデータが後続の読み出し単位において開始することを指示する。
【０６９３】
図５に、いくつかのフィールドを有するヘッダ（例えば、図４Ａのヘッダ１  ４１１ＡからヘッダＮ  ４１９Ａまでや、図４Ｂのヘッダ１  ４１１Ｂからヘッダ  ４１９Ｂまでのいずれか）の実施形態の選択された詳細を図示する。ある実施形態では、ヘッダは固定長である（例えば、各ヘッダは同じバイト数の長さである）。ヘッダ５０１は、種類５１１、最終標識５１３、フラグ５１５、ＬＰＮ５１７、長さ５１９、およびオフセット５２１の各フィールドを有する。種類フィールドは、データバイトのカテゴリを特定する。例えば、種類フィールドは、データバイトのカテゴリが、ホストデータ（論理ページデータなど）またはシステムデータ（マップ情報やチェックポイント情報など）の１つであることを指示する。最終フィールドは、ヘッダがデータバイトの前の最終ヘッダであることを指示する。ヘッダマーカを用いるある実施形態では、最終フィールドは任意選択で割愛される。ＬＰＮフィールドは、ヘッダが関連付けられているＬＰＮである。ＬＰＮフィールドは、特定のＬＰＮと関連付けられたヘッダのうち特定のヘッダを、例えば、特定のＬＰＮと一致するＬＰＮフィールドを有するヘッダを求めてヘッダをサーチすることによって決定するためのヘッダのパーシングを可能にする。長さフィールドは、データバイトのバイト単位の長さ（例えば、ヘッダ５０１と関連付けられたデータバイト４２１Ａに何バイトのデータがあるか）である。ある実施形態では、オフセットフィールド内のオフセットは、特定の粒度（８バイトの粒度など）に従って丸められる。エポックフィールドは、同じストリームまたは異なるストリームの他のオブジェクトに関連してヘッダがその一部であるオブジェクトの書き込み順を特定するタイムマーカである。
【０６９４】
様々な実施形態では、特定のＬＰＮと関連付けられた一部または全部の情報が、特定のＬＰＮと関連付けられたマップエントリ、特定のＬＰＮと関連付けられたヘッダ、またはその両方に記憶される。例えば、ある実施形態では、長さ５１９の一部または全部が、ヘッダではなくマップエントリに記憶される。
【０６９５】
コマンド操作
図６に、入出力デバイスコマンド処理６００として、入出力デバイス（記憶デバイスなど）におけるコマンドおよび任意選択のヒント情報の処理の一実施形態の選択された詳細の流れ図を示す。ある実施形態および／または使用シナリオでは、入出力デバイスコマンド処理６００は、「一度に１つ」のヒント処理を可能にし、この処理では、明示的ヒントモードを有する特定のコマンドが入出力デバイスに送られ、入出力デバイスは付随するヒントに従って特定のコマンドを処理する。後続のコマンドの処理はヒントによる影響を受けない（が、後続のコマンドのうちの１若しくはそれ以上は、任意選択で、それぞれの処理に影響を及ぼすそれぞれの付随するヒントを有する）。
【０６９６】
入出力デバイスの例が、図１Ａおよび図１Ｂに示すＳＳＤ１０１のインスタンスである。処理は、電源投入されていない、休眠モードの、リセット状態の、といった入出力デバイスの非アクティブ状態から開始する（入出力デバイス電源オフまたはリセット状態６０１）。処理は、電源投入される、動作状態および／またはアクティブ状態に遷移する、リセットを終了する、といった、入出力デバイスがアクティブになるときに次に進む（アクティブ化する６０１Ａ）。入出力デバイスは次いで、内部データ構造およびハードウェア要素を初期化することによって、例えば、初期値を記憶し、以前に保存された値を復元し、および/またはアクティブな動作と適合する状態値を作成することによって、動作の準備を行う（入出力デバイス初期化６１１）。
【０６９７】
動作の準備を行った後で、入出力デバイスはホストからのコマンドの受け取りを待つ（「コマンドを受け取るか？６２１」および「いいえ６２１Ｎ」）。コマンドを受け取り次第（はい６２１Ｙ）、入出力デバイスは、コマンドがヒントと共に提供され、またはコマンドがヒントを使用するか否か決定する（コマンドはヒントありか、またはヒントを使用するか？６３１）。そうである場合（はい６３１Ｙ）には、入出力デバイスは、ヒントと共に、および/またはヒントを使用してコマンドを処理する（ヒントを使用してコマンドを処理する６４１）。そうでない場合（いいえ６３１Ｎ）には、入出力デバイスは、ヒントなしでコマンドを処理する（コマンドを処理する（ヒントなし）６５１）。（ヒントありまたはヒントなしの）コマンドの処理の後で、入出力デバイスは、任意選択で、および/または選択的に、ホストに結果情報を返す（コマンド状況を送る６６１）。入出力デバイス内の処理は次いで折り返して別のコマンドを待つ（コマンドを受け取るか？６２１）。
【０６９８】
図７に、入出力デバイスコマンド処理７００として、入出力デバイス（記憶デバイスなど）におけるコマンドおよび任意選択のヒント情報の処理の別の実施形態の流れ図を示す。ある実施形態および／または使用シナリオでは、入出力デバイスコマンド処理７００は「スティッキーな」ヒント処理を可能にし、この処理では、ヒントモードを開始するコマンドが入出力デバイスに送られ、その後に続いてヒントモードで処理される１若しくはそれ以上のコマンドが送られる。次いで、ヒントモードを終了するコマンドが、任意選択で、および/または選択的に、入出力デバイスに送られ、ヒントモードを終了するコマンドが送られる場合には、後続のコマンドはヒントなしで処理される。
【０６９９】
図６の場合と同様に、入出力デバイスの例は、図１Ａおよび図１Ｂに示すＳＳＤ１０１のインスタンスである。やはり図６の場合と同様に、処理は入出力デバイスの非アクティブ状態から開始し（入出力デバイス電源オフまたはリセット状態７０１）、続いて入出力デバイスがアクティブになり（アクティブ化する７０１Ａ）、動作の準備を行う（入出力デバイス初期化７１１）。
【０７００】
動作の準備を行った後で、入出力デバイスはホストからのコマンドの受け取りを待つ（「コマンドを受け取るか？７２１」および「いいえ７２１Ｎ」）。コマンドを受け取り次第（はい７２１Ｙ）、入出力デバイスは、コマンドがヒントモードに関連したものであるか否か決定する（コマンドはヒントモードのものか？７３１）。そうである場合（はい７３１Ｙ）には、入出力デバイスはヒントモードを開始する（またはコマンドに応じて、ヒントモードを終了する）（ヒントモードを開始／終了する７４１）。そうでない場合（いいえ７３１Ｎ）には、入出力デバイスは、ヒントモードを開始せずに（または終了せずに）、現在のモードでコマンドを処理する（現在のモードでコマンドを処理する７５１）。（ヒントモードに関連したものであるにせよ、そうでないにせよ）コマンドの処理の後で、入出力デバイスは、任意選択で、および/または選択的に、ホストに結果情報を返す（コマンド状況を送る７６１）。ある実施形態および／または使用シナリオでは、例えば、コマンドおよび／または結果情報に応じて、入出力デバイス内の処理は次いで、折り返して別のコマンドを待ち（コマンドを受け取るか？７２１）、または条件付きで、かつ／若しくは選択的に（例えば、コマンドおよび／または結果情報に応じて）、入出力デバイスは次いで、ヒントモードを終了すべきか否か決定する（ヒントモードを終了するか？７７１）。そうである場合（はい７７１Ｙ）には、入出力デバイスはヒントモードを終了し（ヒントモードを終了する７８１）、入出力デバイス内の処理は次いで、折り返して別のコマンドを待つ（コマンドを受け取るか？７２１）。そうでない場合（いいえ７７１Ｎ）には、入出力デバイス内の処理は、ヒントモードを終了せずに、折り返して別のコマンドを待つ（コマンドを受け取るか？７２１）。ある実施形態では、単一のコマンドの処理の間に、入出力デバイスは、ヒントモードを開始し、単一のコマンドに基づいて、さらに、コマンドを実行して（読み出し動作、書き込み動作、切り捨て動作といった）特定の動作を実行する。例えば、いくつかのコマンドについては、処理は、７４１から７５１へ、次いで７６１へ進む。
【０７０１】
図８に、入出力デバイスコマンド処理８００として、入出力デバイス（記憶デバイスなど）におけるコマンドおよび任意選択のヒント情報の処理の別の実施形態の流れ図を示す。概念的には、図８には、１若しくはそれ以上の実施形態において同時に利用可能な図６および図７で表された機能が表されている。様々な実施形態および／または使用シナリオにおいて、入出力デバイスコマンド処理８００は、一度に１つの、スティッキーなヒント処理を可能にし、この処理では、同時に使用可能な１若しくはそれ以上のヒントおよび／またはヒントモードがある。ヒントおよび／またはヒントモードは、任意選択で、選択的に、および/または条件付きで、コマンドのタイプ、ＬＢＡ、データバンド、あるいは他のアドレス、データおよび／またはコマンド関連のパラメータ若しくは条件といった、１若しくはそれ以上の要因に依存する。
【０７０２】
図６および図７の場合と同様に、入出力デバイスの例は、図１Ａおよび図１Ｂに示すＳＳＤ１０１のインスタンスである。やはり図６および図７の場合と同様に、処理は入出力デバイスの非アクティブ状態から開始し（入出力デバイス電源オフまたはリセット状態８０１）、続いて入出力デバイスがアクティブになり（アクティブ化する８０１Ａ）、動作の準備を行う（入出力デバイス初期化８１１）。
【０７０３】
動作の準備を行った後で、入出力デバイスはホストからのコマンドの受け取りを待つ（「コマンドを受け取るか？８２１」および「いいえ８２１Ｎ」）。コマンドを受け取り次第（はい８２１Ｙ）、入出力デバイスは、コマンドが、明示的にヒントと共に提供され、またはコマンドが明示的にヒントを使用するか否か決定する（ヒントありか、またはヒントを使用するか？８３１）。そうである場合（はい８３１Ｙ）には、入出力デバイスは、現在のモードに従って明示的なヒントと共に、および/または明示的なヒントを使用してコマンドを処理する（現在のモードでヒントを用いて処理する８３２）。様々な実施形態において、現在のモードは、コマンド、コマンドを有するＬＢＡ、（例えば、コマンドを有するＬＢＡ、マップ情報、またはデータバンドとモードとの他の関係から決定される）データバンド、他のアドレス、データおよび／若しくはコマンド関連のパラメータ若しくは条件、または１若しくはそれ以上の以前に提供された明示的ヒントおよび／若しくは暗黙的ヒントのうちの１若しくはそれ以上に依存する。
【０７０４】
コマンドが明示的なヒントを有しておらず、明示的なヒントを使用しない場合（いいえ８３１Ｎ）には、入出力デバイスは、コマンドが特定のヒントモードを開始すべきであるか否か決定する（ヒントモードを開始するか？８４１）。そうである場合（はい８４１Ｙ）には、入出力デバイスは特定のヒントモードを開始する（特定のヒントモードを開始する（現在のモード＋＝特定のモード）８４２）。単一のヒントモードがある実施形態では、単一のヒントモードを開始することは、概念的には、現在のモードに、単一のヒントモードに対応する値を割り当てることに対応する。２若しくはそれ以上のヒントモードがある実施形態では、特定のヒントモードを開始することは、概念的には、現在のモードに、特定のヒントモードと共に（例えばこれを加えた）現在のモードに対応する値を割り当てることに対応する。様々な実施形態において、特定のヒントモードは、１若しくはそれ以上のＬＢＡ、ＬＢＡの１若しくはそれ以上の範囲、および１若しくはそれ以上のデータバンドのうちの１若しくはそれ以上と関連付けられている。明示的なヒントを有する、または使用するコマンドの処理は、一度に１つのヒント処理を可能にする。
【０７０５】
コマンドが特定のヒントモードを開始すべきでない場合（いいえ８４１Ｎ）には、入出力デバイスは、コマンドが特定のヒントモードを終了すべきであるか否か決定する（ヒントモードを終了するか？８５１）。そうである場合（はい８５１Ｙ）には、入出力デバイスは特定のヒントモードを終了する（特定のヒントモードを終了する（現在のモード−＝特定のモード）８５２）。単一のヒントモードがある実施形態では、単一のヒントモードを終了することは、概念的には、現在のモードに、単一のヒントモードが非アクティブであることに対応するデフォルト値を割り当てることに対応する。２若しくはそれ以上のヒントモードがある実施形態では、特定のヒントモードを終了することは、概念的には、現在のモードに、特定のヒントモードなしで（例えばこれを差し引いた）現在のモードに対応する値を割り当てることに対応する。様々な実施形態において、特定のヒントモードは、１若しくはそれ以上のＬＢＡ、ＬＢＡの１若しくはそれ以上の範囲、および１若しくはそれ以上のデータバンドのうちの１若しくはそれ以上と関連付けられている。
【０７０６】
コマンドが特定のヒントモードを終了すべきでない場合（いいえ８５１Ｎ）には、入出力デバイスは、コマンドが特定のヒントモードを終了すべきであるか否か決定する（すべてのヒントモードを終了するか？８６１）。そうである場合（はい８６１Ｙ）には、入出力デバイスはすべてのヒントモードを終了する（すべてのヒントモードを終了する（現在のモード＝デフォルトモード）８６２）。単一のヒントモードがある実施形態（または２若しくはそれ以上ヒントモードがある実施形態）では、すべてのヒントモードを終了することは、概念的には、現在のモードに、単一のヒントモード（またはすべてのヒントモード）が非アクティブであることに対応するデフォルト値を割り当てることに対応する。
【０７０７】
コマンドがすべてのヒントモードを終了すべきでない場合（いいえ８６１Ｎ）には、コマンドは、現在のモードで処理され（現在のモードで処理する（ヒントなし）８７２）、現在のモードは、例えば、以前に受け取られたヒント開始／終了に関連したコマンドに基づく現在のモードへのあらゆる以前の変更を含むが、コマンドはヒントを提供しないと決定されているため、いかなる追加のヒント情報も含まない。特定のヒントモードを開始するコマンドおよび特定のヒントモードまたはすべてのヒントモードを終了するコマンドの処理は、スティッキーなヒント処理を可能にする。
【０７０８】
（それぞれ、８３２、８４２、８５２、８６２、および８７２に対応する、明示的に提供されたヒントありの、または明示的に提供されたヒントを使用した、特定のヒントモードを開始する、または終了する、すべてのヒントモードを終了する、あるいは現在のモードだけに基づいた）コマンドの処理の後で、入出力デバイスは、任意選択で、および/または選択的に、ホストに結果情報を返す（状況を送る８８１）。ある実施形態および／または使用シナリオでは、例えば、コマンドおよび／または結果情報に応じて、入出力デバイス内の処理は次いで、折り返して別のコマンドを待ち（コマンドを受け取るか？８２１）、または任意選択で、条件付きで、かつ／若しくは選択的に（例えば、コマンドおよび／または結果情報に応じて）、入出力デバイスは次いで、１若しくはそれ以上のヒントモードを終了し（（１若しくはそれ以上の）ヒントモードを終了する８８２）、入出力デバイス内の処理は次いで折り返して別のコマンドを待つ（コマンドを受け取るか？８２１）。
【０７０９】
決定８３１、８４１、８５１、および８６１の順序付けは例示にすぎず、他の順序付けを有する別の実施形態、ならびに決定のうちの１若しくはそれ以上が並列に行われ、または決定の「はい」パスのうちの複数が、任意選択で、および/または選択的に評価される実施形態も企図されている。例えば、ある実施形態では、特定のコマンドがその特定のコマンドおよび後続のコマンドに影響を及ぼすスティッキーなヒントを使用する。
【０７１０】
マップ操作
図９に、入出力デバイスコマンド処理９００として、入出力デバイス（記憶デバイスなど）におけるコマンドおよび任意選択のシャドウマップ情報の処理の一実施形態の流れ図を示す。ある実施形態および／または使用シナリオでは、入出力デバイスコマンド処理９００は、入出力デバイスが、通常は特定の処理によって取得されるはずのホスト提供情報に基づいて特定の処理を省略する（例えば、図１Ａおよび図１Ｂのマップ１４１といったマップへのアクセスをスキップする）ことを可能にする。ホストは、少なくとも部分的に入出力デバイスから伝えられるマップ更新によって管理されるシャドウマップにアクセスすることによって情報を提供することができるようになっている。
【０７１１】
図６から図８の場合と同様に、入出力デバイスの例は、図１Ａおよび図１Ｂに示すＳＳＤ１０１のインスタンスである。やはり図６から図８の場合と同様に、処理は入出力デバイスの非アクティブ状態から開始し（入出力デバイス電源オフまたはリセット状態９０１）、続いて入出力デバイスがアクティブになり（アクティブ化する９０１Ａ）、動作の準備を行う（入出力デバイス初期化９１１）。
【０７１２】
動作の準備を行った後で、入出力デバイスは、任意選択で、および/または選択的に、ホストに開始マップ情報を伝える（ホストに初期マップを転送する９２１）。ある実施形態および／または使用シナリオでは、入出力デバイスは、概念的「フェッチ・オン・デマンド」技術に従って開始マップ情報の全部または任意の部分の伝達を省略する。伝達は、任意選択で、バックグラウンド動作として行われる。ホストは伝えられたマップ情報をシャドウマップ（図１Ｂのシャドウマップ１０８など）において保持する。入出力デバイスは次いで、ホストからのコマンドの受け取りを待つ（「コマンドを受け取るか？９３１」および「いいえ９３１Ｎ」）。
【０７１３】
コマンドを受け取り次第（はい９３１Ｙ）、入出力デバイスは、コマンドが、図１Ａのフラッシュダイ１９４のうちの１若しくはそれ以上のブロック／ページといった、入出力デバイスＮＶＭの特定の部分の特定のブロックアドレスおよび／またはページアドレスを対象とする位置情報を含み、または有するか否か決定する（位置は提供されたか？９４１）。そうでない場合（いいえ９４１Ｎ）には、入出力デバイスは、例えば、マップにアクセスすることによって、特定のブロックアドレスおよび／またはページアドレスならびに入出力デバイスＮＶＭの特定の部分を決定する（位置を決定する９５１）。入出力デバイスは、決定した位置を使用してコマンドを処理する（コマンドを処理する９６１）。コマンドが位置情報を含み、または有する場合（はい９４１Ｙ）には、位置決定は省略され、入出力デバイスは、提供された位置情報を使用してコマンドを処理する（コマンドを処理する９６１）。
【０７１４】
コマンドの処理の後で、入出力デバイスは、任意選択で、および/または選択的に、ホストに結果情報を返し（コマンド状況を送る９７１）、結果情報は任意選択で１つ若しくは複数のマップ更新を含み、例えば、コマンドが書き込みコマンドである場合には、入出力デバイスはホストに、特定のブロックアドレスおよび／またはページアドレスを対象とする位置情報など、書き込みコマンドのＬＢＡと入出力デバイスＮＶＭの特定の部分との間のマッピングを記述するマップ更新を伝える。ある実施形態および／または使用シナリオでは、例えば、コマンドおよび／または結果情報に応じて、入出力デバイス内の処理は次いで、折り返して別のコマンドを待ち（コマンドを受け取るか？９３１）、または条件付きで、かつ／若しくは選択的に（例えば、コマンドおよび／または結果情報に応じて）、入出力デバイスは次いで、ホストにマップ更新を伝えるべきか否か決定する（マップ更新を送るべきか？９８１）。そうでない場合（いいえ９８１Ｎ）には、入出力デバイス内の処理は、折り返して別のコマンドを待つ（コマンドを受け取るか？９３１）。そうである場合（はい９８１Ｙ）には、入出力デバイスはホストに１若しくはそれ以上のマップ更新を伝える（ホストに（１若しくはそれ以上の）マップ更新を転送する９９１）。ある実施形態では、マップ更新はバックグラウンド動作として伝えられる。ある実施形態では、マップ更新は累積され、グループとして、任意選択でバックグラウンド動作として転送される。入出力デバイス内の処理は次いで折り返して別のコマンドを待つ（コマンドを受け取るか？９３１）。
【０７１５】
ある実施形態および／または使用シナリオでは、入出力デバイスは、初期化またはコマンドの直接関連したものではない入出力デバイスによる処理に応答して、ホストに１若しくはそれ以上の更新を伝える。例えば、入出力デバイスが入出力デバイスＮＶＭの領域を再利用するときに、ＬＢＡと入出力デバイスＮＶＭ内の位置との間のマッピングへの０若しくはそれ以上の変更が生じる。入出力デバイスは、ある場合、マッピング変更を、９８１／９９１の場合と同様に、１若しくはそれ以上のマップ更新としてホストに伝える。
【０７１６】
（カードメモリを備える入出力カード、例えば、図１Ｂの（任意選択の）カードメモリ１１２Ｃをシャドウマップ用のストレージとして使用する入出力カード１１６などを有するある実施形態といった）ある実施形態および／または使用シナリオでは、１若しくはそれ以上の入出力デバイスは、ホストの関与なしで、シャドウマップとしてカードメモリを使用する。ホストにマップ更新を伝えるのではなく、入出力デバイスは、マップ更新に従ってシャドウマップを変更する。
【０７１７】
図１０に、ホスト・シャドウ・マップ処理１０００として、コンピューティングホストにおけるシャドウマップ情報の維持の一実施形態の流れ図を示す。ある実施形態および／または使用シナリオでは、ホスト・シャドウ・マップ処理１０００は、入出力デバイスが、通常は特定の処理によって取得されるはずのホスト提供情報に基づいて特定の処理を省略する（例えば、図１Ａおよび図１Ｂのマップ１４１といったマップへのアクセスをスキップする）ことを可能にする。ホストは、少なくとも部分的に入出力デバイスから伝えられるマップ更新によって管理されるシャドウマップにアクセスすることによって情報を提供することができるようになっている。
【０７１８】
ホストの例は図１Ｂに示すホスト１０２である。図６から図９場合と同様に、処理は入出力デバイスの非アクティブ状態から開始し（入出力デバイス電源オフまたはリセット状態１００１）、続いて入出力デバイスがアクティブになる（アクティブ化する１００１Ａ）。ホストは次いで、図１Ｂのシャドウマップ１０８といったシャドウマップのすべてのエントリを情報がないとマークする（シャドウマップをすべて無効として初期化する１０１１）。ホストの処理は次いで、入出力デバイスから伝えられる１若しくはそれ以上のマップ更新の受け取りを待つ（「初期マップまたは更新を受け取るか？１０２１」および「いいえ１０２１Ｎ」）。マップ更新を受け取り次第（はい１０２１Ｙ）、ホストは、受け取ったマップ更新に従ってシャドウマップを更新する（シャドウマップを更新する１０３１）。
【０７１９】
様々な実施形態において、入出力デバイスから伝えられるマップ更新は、初期化に関連した入出力デバイス処理（図９のホストに初期マップを転送する９２１など）の結果、書き込みに関連した入出力デバイス処理（図９のコマンド状況を送る（任意選択で、書き込みのためのマップ更新と共に）９７１）の結果、マップ更新の入出力デバイス累積（図９のホストに（１若しくはそれ以上の）マップ更新を転送する９９１）の結果、またはこれらの任意の組み合わせである。ある実施形態および／または使用シナリオでは、ホストは、任意選択で、および/または選択的に、マップ更新のうちの１若しくはそれ以上を無視する。例えば、ホストは、再利用アクティビティに起因して生じる特定のマップ更新を、例えば、特定のマップ更新が、ホストが特定のマップ更新を処理する前の書き込みが原因でホストが無効にするシャドウ・マップ・エントリに対応するときなどに無視する。
【０７２０】
ある実施形態および／または使用シナリオ（例えば、入出力カード１１６を有し、図１Ｂの（任意選択の）カードメモリ１１２Ｃをシャドウマップのストレージとして使用するいくつかの実施形態）では、１若しくはそれ以上の入出力デバイス、例えばＳＳＤはシャドウマップを使用し、ホストはシャドウマップを使用しない。入出力デバイスは、図１０に示す処理の全部または任意の部分を実行し、例えば、入出力デバイスは、シャドウマップ初期化および更新を行う。
【０７２１】
ある実施形態では、入出力デバイスは、ホストコマンドから独立して、および/またはホストコマンドに応答してではあるが、ホストコマンド内で参照されないＬＢＡにおいて、または読み出しコマンドといった、通常はマップを更新しないはずのホストコマンド内のＬＢＡにおいてマップを更新する。第１の例では、再利用（不要部分の整理など）に起因してＮＶＭ内のデータが再配置され、マップは任意のそうした再配置データの新しい位置を反映するように更新される。第２の例では、読み出しコマンドに応答して、過剰な読み出し回数を有する（例えば、データは読み出し妨害誤りを冒す可能性が高い）という決定に起因してデータが再配置される。入出力デバイスは、任意選択で、および/または選択的に、ホストに、例えば、割り込みによって、あるいは状況情報によって、独立の入出力デバイスアクティビティに起因したマップへの未処理の更新があることを知らせる。様々な実施形態によれば、独立の入出力デバイスアクティビティに起因したマップへの更新は以下のうちの１若しくはそれ以上である：ホストコマンドに応答したものであるマップの他の更新と共にホストに伝えられる；ホストへの別個の通信としてホストに伝えられる；ホストが要求した独立の更新に応答して、例えば独立の更新のログを読み取ることによってホストに伝えられる；入出力デバイスによってシャドウマップに直接書き込まれる；および他の技術。別の実施形態では、再利用され、および/または再配置されたＮＶＭの部分が、ＮＶＭのその部分のあらゆるマップ更新がホストに伝えられ、および/またはシャドウマップにおいて更新されるまで消去されない。ある実施形態および／または使用シナリオでは、シャドウマップ更新後まで消去を遅延させることは、（再利用および／または再配置の前の）シャドウマップ内の以前の位置情報がホストによって使用されることを可能にし、よって、そうでなければ、更新エントリが新しい位置情報で更新されるまで更新エントリの使用を不可能にするはずのシャドウマップの更新エントリの無効化による性能の不利益を回避する。
【０７２２】
図１１に、ホストコマンド発行１１００として、コンピューティングホストにおけるコマンドおよび任意選択のシャドウマップ情報の発行の一実施形態の流れ図を示す。ある実施形態および／または使用シナリオでは、ホストコマンド発行１１００は、入出力デバイスが、通常は特定の処理によって取得されるはずのホスト提供情報に基づいて特定の処理を省略する（例えば、図１Ａおよび図１Ｂのマップ１４１といったマップへのアクセスをスキップする）ことを可能にする。ホストは、少なくとも部分的にホストからの変更（ならびに入出力デバイスから伝えられるマップ更新）によって管理されるシャドウマップにアクセスすることによって情報を提供することができるようになっている。
【０７２３】
ある実施形態および／または使用シナリオでは、書き込みコマンドを発行することと併せて、ホストは、書き込みが変更するＬＢＡについてのシャドウ・マップ・エントリを無効にする。というのは、書き込みコマンドを処理するときに、ＬＢＡについてのマッピングが入出力デバイスによって変更されるからである。続いて、入出力デバイスは、任意選択で、書き込まれたＬＢＡに関連した１若しくはそれ以上のマップ更新を伝え、ホストは次いで、マップ更新に従ってシャドウマップを変更する。ある実施形態および／または使用シナリオでは、切り捨てコマンドを発行することと併せて、ホストは、任意選択で、および/または選択的に、切り捨てが関連するＬＢＡについてのシャドウ・マップ・エントリを切り捨て済みとマークする。というのは、切り捨てコマンドを処理するときに、ＬＢＡについてのマッピングが入出力デバイスによって切り捨て済みとマークされるからである。入出力デバイスは、任意選択で、削減されたＬＢＡに関連したマップ更新を伝えることを省略する。というのは、ホストはすでにそれらのＬＢＡを切り捨て済みとマークしているからである。ある実施形態および／または使用シナリオでは、読み出しコマンドを発行することと併せて、ホストは、任意選択で、および/または選択的に、読み出しコマンドがアクセスするＬＢＡについてのシャドウマップ内に有効なエントリがあるかどうか検査する。有効なエントリが見つかる場合には、ホストは、予めマッピングされた読み出しコマンドを、有効なエントリからの位置情報と共に発行し、任意選択で、コマンドを発行するときにＬＢＡを省略する。位置情報は、入出力デバイスが、通常はＬＢＡから位置情報を決定するために行われるはずのマップルックアップを省略することを可能にする。有効なエントリが見つからない場合には、ホストは、ＬＢＡと共に、位置情報なしで読み出しコマンドを発行する。入出力デバイスは次いで、一部は、読み取ったＬＢＡに基づいてマップルックアップを実行することによって読み出しコマンドを処理して位置情報を決定する、
より具体的には、ホストの例は図１Ｂに示すホスト１０２である。図６から図１０場合と同様に、処理は入出力デバイスの非アクティブ状態から開始し（入出力デバイス電源オフまたはリセット状態１１０１）、続いて入出力デバイスがアクティブになる（アクティブ化する１１０１Ａ）。ホストの処理は次いで、任意選択で、および/または選択的に、すべてのシャドウ・マップ・エントリを空とマークし、ホスト上で実行されているソフトウェア要素（例えば、図１ＢのＯＳ１０５、ドライバ１０７、およびアプリケーション１０９の様々な組み合わせ）によって生成されるコマンドといったコマンドを待つ（「コマンドは？１１１１」および「いいえ１１１１Ｎ」）。コマンドが生成され次第（はい１１１１Ｙ）、ホストは、生成されたコマンドがどのコマンドか、あるいはどのコマンドタイプか決定する（コマンドを復号する１１２１）。
【０７２４】
コマンドが書き込みコマンド、あるいは書き込みコマンドタイプ（書き込み１１２１Ｗ）である場合には、ホストは、書き込みが変更するＬＢＡについてのシャドウ・マップ・エントリを空とマークし（例えば無効にし）（シャドウマップ内のＬＢＡを無効とマークする１１３１）、入出力デバイスに書き込みを発行する（コマンドを発行する１１６１）。コマンドが切り捨てコマンド、あるいは切り捨てコマンドタイプ（切り捨て１１２１Ｔ）である場合には、ホストは、切り捨てが関連するＬＢＡについてのシャドウ・マップ・エントリを切り捨て済みとマークし（シャドウマップ内のＬＢＡを切り捨て済みとマークする１１４１）、入出力デバイスに切り捨てを発行する（コマンドを発行する１１６１）。コマンドが読み出しコマンド、あるいは読み出しコマンドタイプ（読み出し１１２１Ｒ）である場合には、ホストは、読み出しがアクセスするＬＢＡについてのシャドウマップ内に有効なエントリがあるかどうか検査する（ＬＢＡはシャドウマップ内で有効か？１１５１）。有効なエントリが見つかる場合（はい１１５１Ｙ）には、ホストは入出力デバイスに、有効なエントリからの位置情報と共に予めマッピングされた読み出しコマンドを発行し、任意選択で、コマンドを発行するときにＬＢＡを省略する（コマンドを（シャドウマップからの位置と共に）予めマッピングされた読み出しとして発行する１１７１）。有効なエントリが見つからない場合（いいえ１１５１Ｎ）には、ホストは入出力デバイスに、ＬＢＡと共に、位置情報なしで読み出しコマンドを発行する（コマンドを発行する１１６１）。コマンドが書き込み、切り捨て、または読み出し以外、あるいは、書き込みタイプ、切り捨てタイプ、または読み出し種類以外である場合（その他１１２１Ｏ）には、ホストは入出力デバイスにコマンドを発行し（コマンドを発行する１１６１）、任意選択で、コマンドと関連付けられた任意のＬＢＡを含める。
【０７２５】
ある実施形態では、ホストが入出力デバイスにコマンドを発行する（コマンドを発行する１１６１）ときに、ホストは、任意選択で、および/または選択的に、コマンドが関連するＬＢＡについてのシャドウマップの（ある場合）有効なエントリから取得される情報を含める。例えば、書き込みコマンドのＬＢＡについてのシャドウマップ内に有効なエントリがある場合には、ホストは、入出力デバイスにその書き込みコマンドを発行するときに、有効なエントリからの位置および／または長さ情報を提供する。入出力デバイスは、例えば、その位置および／または長さ情報を使用して、使用空間の記帳を更新する（例えば、使用空間［位置］−＝長さなど）。ある実施形態では、ホストが予めマッピングされた読み出しコマンドを発行する（コマンドを（シャドウマップからの位置と共に）予めマッピングされた読み出しとして発行する１１７１）ときに、ホストは、長さおよび／または範囲情報を含むシャドウマップからの位置情報を提供し、入出力デバイスが、マップにアクセスせずに、（その長さおよび／または範囲に基づいて）どれだけのデータを読み取るべきか決定することを可能にする。
【０７２６】
ホストは、任意選択で、および/または選択的に、コマンドのサイズに基づいてシャドウマップを無視する。相対的に長い長さを有するコマンド、例えば、各々がそれぞれのマップエントリと関連付けられている複数のＬＢＡ単位にまたがるデータを参照するコマンドなどは、場合によっては、追加の位置情報（例えば、１ＬＢＡ単位当たり１つの位置情報など）を有し、コマンドのサイズを増大させる。相対的に長い長さを有するコマンドは、入出力デバイスの順次マップエントリにアクセスし、マップアクセスのコストは複数の単位にわたってならされる。例えば、ホストは４ＫＢを上回るデータを参照する読み出しコマンドのシャドウマップを無視する。ある実施形態では、ホストは、任意選択で、および/または選択的に、相対的に中程度の長さを有するコマンドを複数のコマンドに分割する。例えば、ホストは、８ＫＢ（または１６ＫＢ）のデータを参照する読み出しコマンドを、各々４ＫＢのデータを参照する２つの（または４つの）読み出しコマンドに分割する。ある実施形態では、予めマッピングされた読み出しコマンド（またはその変形）は、複数の位置情報要素を指定することができるようになっており、別の実施形態では、予めマッピングされた読み出しコマンド（およびその変形）は、単一の位置情報要素を指定するだけに制限される。ある実施形態では、下位部分（入出力デバイスＮＶＭの４ＫＢ部分の１つの特定のＳＡＴＡセクタなど）へのアクセスは、その特定のセクタを識別する追加の位置情報を使用する。
【０７２７】
（カードメモリを備える入出力カード、例えば、図１Ｂの（任意選択の）カードメモリ１１２Ｃをシャドウマップ用のストレージとして使用する入出力カード１１６などを有するある実施形態といった）ある実施形態および／または使用シナリオでは、１若しくはそれ以上の入出力デバイスはシャドウマップを使用し、ホストはシャドウマップを使用しない。入出力デバイスは、任意選択で、および/または選択的に、図１１に示す処理の全部または任意の部分を実行する。例えば、入出力デバイスはシャドウマップ内の特定のエントリを、書き込みコマンドを処理するときには無効とマークし、切り捨てコマンドを処理するときには切り捨て済みとマークする。
【０７２８】
低電力動作
図１２に、入出力デバイス休眠開始／終了１２００として、入出力デバイス（記憶デバイスなど）の休眠状態の開始および終了の一実施形態の流れ図を示す。ある実施形態および／または使用シナリオでは、入出力デバイス休眠開始／終了１２００は、入出力デバイスの電力ダウンまたは電源オフを可能にすることによって、例えば、休眠状態を開始することによって、内部状態の全部または任意の部分を入出力デバイスとは別個の（あるいは、入出力デバイスに対して別個の電力制御を受ける）保存／復元メモリに記憶することによって、電力低減を可能にする。入出力デバイスが休眠状態を終了するときに、内部状態の全部または一部が保存／復元メモリから復元される。ある実施形態および／または使用シナリオでは、保存／復元メモリから内部状態を復元することは、保存／復元メモリ以外に保持された情報から内部状態を再構築すること（例えば、入出力デバイスのＮＶＭの読み出しから取得されるマップ情報からマップ情報のキャッシュを再構築することなど）よりも効率がよい（例えば、より低い待ち時間および／またはより低電力である）。
【０７２９】
内部状態の例は、入出力デバイスの任意の揮発性状態（入出力デバイスが休眠状態で動作するときに失われる状態など）、マップ情報（図１Ａおよび図１Ｂのマップ１４１で維持されるキャッシュマップ情報、シャドウマップ情報、マルチレベルマップの任意の１若しくはそれ以上のレベルなど）、ならびに入出力デバイスによって維持される統計である。保存／復元メモリの例は、入出力デバイスにアクセス可能で、入出力デバイスにとって相対的にローカルであるメモリ（（任意選択の）カードメモリ１１２Ｃなど）、および入出力デバイスからアクセス可能なホストメモリ（ホストメモリ１１２Ｈ、およびシャドウマップ１０８など）である。
【０７３０】
図６から図９の場合と同様に、入出力デバイスの例は、図１Ａおよび図１Ｂに示すＳＳＤ１０１のインスタンスである。やはり図６から図９の場合と同様に、処理は入出力デバイスの非アクティブ状態から開始し（入出力デバイス電源オフまたはリセット状態１２０１）、続いて入出力デバイスがアクティブになり（アクティブ化する１２０１Ａ）、動作の準備を行う（入出力デバイス初期化１２１１）。
【０７３１】
動作の準備を行った後で、入出力デバイスは、コマンドを受け取り、処理し、電源投入せずに他のアクティビティを実行することができるようにした高電力動作状態になる（アクティブな動作状態１２２１）。低電力動作状態を開始するよう求める要求を待つ間（「休眠状態を開始するか？１２３１」および「いいえ１２３１Ｎ」）、入出力デバイスは高電力動作状態（アクティブな動作状態１２２１）のままであり、ある場合、受け取ったコマンドを実行する（図示せず）。入出力デバイスのインターフェースを介して受け取られる明示的要求や、非アクティビティの期間に応答して入出力デバイスによって生成される暗黙的要求といった、低電力動作状態を開始するよう求める要求を受け取り次第（はい１２３１Ｙ）、入出力デバイスは内部状態の全部または任意の部分を保存／復元メモリに記憶する（内部状態を保存／復元メモリに記憶する１２４１）。入出力デバイスは次いで、低電力動作状態を開始する（休眠状態１２５１）。様々な実施形態において、入出力デバイスは、内部状態の全部または任意の部分を、例えば、複数の暗号化技術のうちのいずれか１つにより暗号化することによって、暗号化された形で保存する。
【０７３２】
低電力動作状態を終了するよう求める要求を待つ間（「休眠状態を終了するか？１２６１」および「いいえ１２６１Ｎ」）、入出力デバイスは低電力動作状態（休眠状態１２５１）のままである。低電力動作状態を終了するよう求める要求を受け取り次第（はい１２６１Ｙ）、入出力デバイスは、保存／復元メモリから保存／復元メモリに保存された内部状態の全部または任意の部分を復元する（保存／復元メモリから内部状態を復元する１２７１）。入出力デバイスは次いで、高電力動作状態を開始し、入出力デバイス内の処理は次いで折り返して戻る（アクティブな動作状態１２２１）。様々な実施形態において、入出力デバイスは、例えば、暗号化技術のうちのいずれか１つにより解読することによって、暗号化された形から内部状態の全部または任意の部分を復元する。
【０７３３】
様々な実施形態において、休眠状態は、電源オフ状態、電力ダウン状態、低減電力状態、低電力状態、低めの電力状態、休止状態、入出力デバイスの全部または任意の部分が電源オフされ、若しくは電力ダウンされた状態、または入出力デバイスが完全に（例えばアクティブに）動作しているときよりも少ない電力を消費する任意の動作状態のうちの任意の１若しくはそれ以上である。様々な実施形態において、休眠状態を終了することは、例えば、ＮＶＭへのアクセスによる情報の再構築に起因する待ち時間の代償（および／または電力コスト）を課し、（ＮＶＭへのアクセスによる再構築の代わりに）保存／復元メモリから読み取ることにより情報を復元することは、待ち時間の代償（および／または電力コスト）を低減させる。様々な実施形態において、内部状態の全部または任意の部分は（例えば、「内部状態を保存／復元メモリに保存する１２４１」と関連付けられた処理によって）保存される。ある実施形態では、ドライバが、ホストメモリの一部分を、保存／復元メモリとして使用されるように割り当てる。
【０７３４】
組み合わせ動作
図１３Ａおよび図１３Ｂに、それぞれ、入出力デバイスとコンピューティングホストとの相互運用１３００Ａおよび１３００Ｂとして、入出力デバイス（記憶デバイスなど）とコンピューティングホストとの相互運用の一実施形態の流れ図をまとめて示す。本明細書の別の箇所では、これら２つの図をまとめて記述し、入出力デバイスとコンピューティングホストとの相互運用１３００と呼ぶ。入出力デバイスとコンピューティングホストとの相互運用１３００は、概念的には、一度に１つのスティッキーなヒント、ホスト提供の位置情報、ホスト・シャドウ・マップ情報のホストおよび入出力デバイスの更新、ならびに入出力デバイス内部状態の保存および復元といった、図６から図１２によって示される１若しくはそれ以上の機能を組み合わせた様々な実施形態を示すものである。
【０７３５】
やはり本明細書の別の箇所では、ホスト動作１３１０Ａおよびホスト動作１３１０Ｂをまとめてホスト動作１３１０と呼び、デバイス動作１３２０Ａおよびデバイス動作１３２０Ｂをまとめてデバイス動作１３２０と呼ぶ。ホスト動作１３１０は、図１Ｂのホスト１０２といったコンピューティングホストによって行われる動作を記述している。デバイス動作１３２０は、図１ＢのＳＳＤ１０１のインスタンスのうちのいずれか１つといった入出力デバイス（記憶デバイスなど）によって行われる動作を記述している。
【０７３６】
処理は（図６などの場合と同様に）入出力デバイスの非アクティブ状態から開始する（入出力デバイス電源オフ／休眠またはリセット状態１３０１）。処理は、入出力デバイスが、例えば、電源オンされ、動作および／またはアクティブ状態に遷移し、あるいはリセットを終了することによってアクティブになるときに次に進む。次いでホスト（アクティブ化する１３０１Ｈ）は、図１Ｂのシャドウマップ１０８といったシャドウマップのすべてのエントリを情報がないとマークする（シャドウマップをすべて無効として初期化する１３１１）。入出力デバイス（アクティブ化する１３０１Ｄ）は動作の準備を行う（入出力デバイス初期化、およびメモリからの条件付き状態復元１３２１）。ある実施形態および／または使用シナリオでは、準備は、任意選択で、および/または条件付きで、保存／復元メモリ（図１Ｂの（任意選択の）カードメモリ１１２Ｃなど）から内部状態の全部または一部を復元することを含む。様々な実施形態において、入出力デバイスは、例えば、複数の暗号化技術のうちのいずれか１つにより解読することによって、暗号化された形から内部状態の全部または任意の部分を復元する。ある実施形態では、ホストは解読の全部または任意の部分を行う。
【０７３７】
次いで入出力デバイスは、ホストがシャドウマップをさらに初期化し、および/または更新する（シャドウマップを初期化／更新する１３１２）ために、任意選択で、および/または選択的に、（ホストへ１３２２Ｈとして）ホストに、ある場合、更新されたマップ情報を伝える（ホストにローカルマップ（全部または更新）を送る１３２２）。場合によっては、入出力デバイスに電源投入した後の１３２２／１３１２までの最初のパスは、概念的には、ローカルマップ（図１Ｂのマップ１４１など）の全イメージを送ることによりシャドウマップを初期化することに対応し、１３２２／１３１２までの後続のパスは、概念的には、入出力デバイスによるコマンドの実行、および／または再利用といった入出力デバイスの独立のアクティビティの結果としてシャドウマップを（増分的に）更新することに対応する。場合によっては、シャドウマップは、ＬＢＡがホストによって参照された結果として更新される。ある実施形態および／または使用シナリオでは、ホストは、任意選択で、および/または選択的に、マップ更新のうちの１若しくはそれ以上を無視する。例えば、ホストは、再利用アクティビティに起因して生じる特定のマップ更新を、例えば、特定のマップ更新が、ホストが特定のマップ更新を処理する前の書き込みに起因してホストが無効にするシャドウ・マップ・エントリに対応するときなどに無視する。
【０７３８】
ある実施形態および／または使用シナリオでは、入出力デバイスは、初期化またはコマンドの直接関連したものではない入出力デバイスによる処理に応答して、ホストに１若しくはそれ以上の更新を伝える。例えば、入出力デバイスが入出力デバイスＮＶＭの領域を再利用するときに、ＬＢＡと入出力デバイスＮＶＭ内の位置との間のマッピングへの０若しくはそれ以上の変更が生じる。入出力デバイスは、ある場合、マッピング変更を、１３２２の場合と同様に、１若しくはそれ以上のマップ更新としてホストに伝える。
【０７３９】
入出力デバイス内の処理は次いで、入出力デバイスが低電力動作状態を開始するよう求める要求（休眠１３２２Ｓ）を受け取るか、それともコマンド（コマンド１３２２Ｃ）を受け取るかに応じて進む。低電力動作状態を開始するよう求める要求を受け取り次第、入出力デバイスは、任意選択で、および/または選択的に、内部状態の全部または任意の部分を保存／復元メモリに保存する（休眠要求を受け取る、およびメモリに状態を保存する１３２３）。様々な実施形態において、入出力デバイスは、内部状態の全部または任意の部分を、例えば、暗号化技術のうちのいずれかにより暗号化することによって、暗号化された形で保存する。ある実施形態では、ホストは暗号化の全部または任意の部分を行う。入出力デバイスは次いで、低電力動作状態を開始し、戻ってアクティブ化を待つ（入出力デバイス電源オフ／休眠またはリセット状態１３０１）。コマンドの受け取りは、以下で、（コマンド／（ヒント）（およびシャドウマップ情報）を受け取る１３２５）に関連して説明する。
【０７４０】
シャドウマップの初期化を完了した後で、ホストは、例えば、図１ＢのＯＳ１０５、ドライバ１０７、およびアプリケーション１０９のうちの任意の１若しくはそれ以上により、コマンドを生成し（生成する１３１２Ｇ）、任意選択でヒントと共に、またはヒントを使用して生成する（コマンドを生成する（任意選択のヒント）１３１３）。ホストは次いで、任意選択で、および/または選択的に、コマンドは、ホストが、ある場合、シャドウマップから入出力デバイスに有効な情報を提供することに有用性があるようなものであるかどうか決定する（シャドウマップを参照するか？１３１４Ｒ）。いいえ（いいえ１３１４ＲＮ）である場合には、ホストは、いかなるシャドウマップ情報もなしで入出力デバイスに（任意選択でヒントと共に、またはヒントを使用して）コマンドを提供する（コマンド／（ヒント）を、シャドウマップ情報なしで送る１３１５Ｎ）。例えば、ある実施形態では、コマンドが読み出しである場合には、場合によっては、ホストが位置情報を提供することに有用性があり、よって、入出力デバイスが、位置情報を決定することを省略し、読み出しデータを低減された待ち時間で提供することが可能になる。引き続きこの例について、コマンドが書き込みである場合には、場合によっては、ホストが位置情報を提供することにほとんど、または全く有用性がない。というのは、入出力デバイスに位置情報を提供することはほとんどまたは全く性能上の利益をもたらさず、位置情報は、書き込み処理の性能にとって相対的に重要でないからである。別の例として、ある実施形態では、コマンドが単一のＬＢＡを参照する場合には、場合によっては、ホストが位置情報を提供することに有用性があり、よって、入出力デバイスが、位置情報を決定することを省略し、コマンドの待ち時間を低減させることを可能にする。引き続き別の例について、コマンドが複数の連続したＬＢＡを参照する場合には、場合によっては、ホストが位置情報を提供することにほとんど有用性がない。というのは、入出力デバイスに位置情報を提供することはほとんどまたは全く性能上の利益をもたらさず、コマンドの平均待ち時間は、入出力デバイスが位置情報を決定するか否かの影響を相対的に受けにくいからである。
【０７４１】
ホストが入出力デバイスに有効なシャドウマップ情報を提供することに有用性がある場合（はい１３１４ＲＹ）には、ホストは、コマンドが関連するＬＢＡについてシャドウマップ内に有効なエントリがあるかどうか検査する（シャドウマップの有効なエントリか？１３１４Ｖ）。有効なエントリが見つからない（いいえ１３１４ＶＮ）場合には、ホストは入出力デバイスに、ＬＢＡと共に（任意選択でヒントと共に、またはヒントを使用して）、シャドウマップ情報なしでコマンドを発行する（コマンド／（ヒント）を、シャドウマップ情報なしで送る１３１５Ｎ）。有効なエントリが見つかる（はい１３１４ＶＹ）場合には、ホストは入出力デバイスに、有効なエントリからのシャドウマップ情報と共にコマンドを発行し、任意選択で、コマンドを発行するときにＬＢＡを省略する（コマンド／（ヒント）およびシャドウマップ情報を送る１３１５Ｍ）。ある実施形態では、１３１４Ｒが省略され、シャドウマップは、有効なエントリの有無について非選択的に検査され（例えば、処理は１３１３から１３１４Ｖに進み）、あるいは、シャドウマップは有効なエントリの有無について全く検査されない（例えば、処理は１３１３から１３１５Ｎに進む）。
【０７４２】
コマンド、任意選択のＬＢＡ、および任意選択のヒント情報は、１３１５Ｍに関連した処理からにせよ、１３１５Ｎに関連した処理からにせよ、ホストから入出力デバイスに（デバイスへ１３１５Ｄ）提供される（送る１３１５Ｓ）。コマンドが入出力デバイスに提供された後で、ホストは、任意選択で、および/または選択的に、コマンドおよび／または他の基準に従ってコマンドに関連したＬＢＡについてのシャドウ・マップ・エントリをマークする（シャドウマップ情報を選択的に変更する１３１６）。ホストの処理は次いで、入出力デバイスからの状況を待つ。
【０７４３】
コマンドを、ＬＢＡのうちの０若しくはそれ以上、シャドウマップ（位置など）、および任意選択のヒント情報と共に受け取り次第（コマンド／（ヒント）（およびシャドウマップ情報）を受け取る１３２５）、入出力デバイスは、シャドウマップ情報の関連性および存在を決定する（シャドウマップ情報は？１３２６）。シャドウマップ情報が受け取ったコマンドに関して利益を提供しない場合（不要１３２６Ｕ）には、入出力デバイスは現在のモードで任意選択のヒント情報と共に、または任意選択のヒント情報を使用してコマンドを処理する（現在のモードでコマンド／（ヒント）を処理する１３２８）。ある実施形態および／または使用シナリオでは、入出力デバイスは、ホストからは利用できない情報を有し、入出力デバイスは、ホストがシャドウマップからの情報を提供するときでさえも、ローカルマップにアクセスする。例えば、シャドウマップは完全には初期化されず、デバイスは、ホストにない切り捨て情報を有する。別の例では、入出力デバイスは、入出力デバイスＮＶＭの一部分の再利用および消去などが原因で、シャドウマップ情報が不完全である（例えば、あるＬＢＡの情報が欠けている）と決定する。例えば、入出力デバイスは、予めマッピングされた読み出しコマンド内の位置情報により、入出力デバイスＮＶＭの対応する部分が消去されていると決定し、その位置情報を使用する代わりに、入出力デバイスはローカルマップにアクセスして位置情報を取得する。現在のモードは、任意選択で、および/または選択的に、コマンドが（ある場合）どのＬＢＡに関連するかの関数であり、さらに任意選択で、および/または選択的に、以前に受け取った特定のヒントモードを開始／終了するコマンドの関数である。
【０７４４】
シャドウマップ情報が受け取ったコマンドに関して有用であり、シャドウマップ情報がホストによって提供された場合（はい１３２６Ｙ）には、入出力デバイスは、現在のモードでの任意選択のヒント情報および提供されたシャドウマップ情報と共に、またはそれらを使用してコマンドを処理する（現在のモードでコマンド／（ヒント）を処理する１３２８）。シャドウマップ情報がホストによって提供されておらず、コマンドの処理がマップ情報に依存する場合（いいえ１３２６Ｎ）には、入出力デバイスは、ローカルマップ（図１Ｂのマップ１４１など）にアクセスして、コマンドを実行するときに使用すべき位置情報といった情報を決定する（ローカルマップを参照する１３２７）。次いで入出力デバイスは、現在のモードでの任意選択のヒント情報およびローカルマップからのマップ情報と共に、またはそれらを使用してコマンドを処理する（現在のモードでコマンド／（ヒント）を処理する１３２８）。
【０７４５】
コマンドを処理した後で、入出力デバイスは、任意選択で、および/または選択的に、ホストに（ホストへ１３２９Ｈ）結果情報を返す（状況を送る１３２９）。次いで入出力デバイスは、任意選択で、および/または選択的に、ホストに、ある場合、更新されたマップ情報を伝え（ホストにローカルマップ（全部または更新）を送る１３２２）、低電力動作状態を開始するよう求める要求またはコマンドを待つ。ホストの処理は、状況を待って、状況を受け取り（状況を受け取る１３１９）、次いで、ある場合、（「ホストへ１３２２Ｈ」として）入出力デバイスからシャドウマップへのマップ更新を待つ（シャドウマップを初期化／更新する１３１２）。
【０７４６】
（カードメモリを有する入出力カード、例えば、図１Ｂの（任意選択の）カードメモリ１１２Ｃをシャドウマップ用のストレージとして使用する入出力カード１１６などを有するある実施形態といった）ある実施形態および／または使用シナリオでは、入出力デバイスは、ホストの関与なしで、シャドウマップとしてカードメモリを使用する。入出力デバイスは、シャドウマップを初期化し、シャドウマップに、ある場合、マップ更新を適用する。入出力デバイスは、任意選択で、および/または選択的に、（ローカルマップの代わりに、および/またはローカルマップに加えて）シャドウマップにアクセスして位置情報を取得する。
【０７４７】
図６から図１３Ａ／図１３Ｂのうちの１若しくはそれ以上によって全部または一部が説明される実施形態といった様々な実施形態において、様々なホストコマンドは、以下の表で記載するように、シャドウ・マップ・エントリ状態に応じたホスト処理をもたらす。表では、シャドウ・マップ・エントリ状態が「有効」であるときの「書き込み」コマンドのコマンドパラメータとしての「位置、長さ、範囲」といった、イタリック体表記の要素は任意選択である。
【０７４８】
表に関連した例として、ＬＢＡが切り捨てられていないことを指示する有効なシャドウ・マップ・エントリを有するＬＢＡに関連した読み出しコマンドを考える。ホストは、有効なシャドウ・マップ・エントリからの「位置」のパラメータと共に「予めマッピングされた読み出し」コマンドによって有効なシャドウ・マップ・エントリからの情報を伝える。任意選択で、ホストは、有効なシャドウ・マップ・エントリからの「長さ」および／または「範囲」情報も伝える。入出力デバイスに「位置」、「長さ」、および／または「範囲」の情報を提供することにより、通常は行われるはずのローカルマップへのアクセスが省略されるため、入出力デバイス内の処理が低減される。別の例として、ＬＢＡが削減されたことを指示する有効なシャドウ・マップ・エントリを有するＬＢＡに関連した読み出しコマンドを考える。（データが切り捨てられているために）読み取るべき有用なデータがないため、ある実施形態では、入出力デバイスにコマンドが送られず（「動作なし」）、よって、入出力デバイスによる無益な処理が低減され、および/または省かれる。別の実施形態では、たとえＬＢＡが削減されたことをシャドウ・マップ・エントリが指示していても、読み出しコマンドが入出力デバイスに送られる（「読み出し（ＬＢＡ）」）。入出力デバイスに読み出しコマンドを送ることにより、（ホストではなく）入出力デバイスが、削減されたＬＢＡの読み出しのために返すべきデータを決定することをできるようになる。別の実施形態では、読み出しコマンドは、シャドウ・マップ・エントリからの「長さ」および／または「範囲」の情報と共に提供される。「長さ」および／または「範囲」の情報は、複数の切り捨てタイプのうちの１つを符号化しており、入出力デバイスは、少なくとも一部は符号化に基づいて読み出しのために返すべきデータを決定する。
【０７４９】
【表３】
2014522066.tif 000012
他の実施形態の情報
以上の説明において、コマンドはホストから入出力デバイスに送られる（例えば発行される）ものとして説明され（例えば、図６の６２１、図７の７２１、図８の８２１、図９の９３１、図１１の１１６１、および図１３Ａ／図１３Ｂの１３１５Ｓ／１３２５）、結果は入出力デバイスからホストに返されるものとして説明されている（例えば、図６の６６１、図７の７６１、図８の８８１、図９の９７１および９９１、図１０の１０２１、ならびに図１３Ａ／図１３Ｂの１３２９／１３１９および１３２２／１３１２）。様々な実施形態および／または使用シナリオにおいて、コマンドはプログラムされた入出力、ＤＭＡ、エントリによって作業待ち行列に送られ、１若しくはそれ以上のコマンド、モード、ならびに／または入出力デバイスの構成レジスタおよび／若しくは構成ページに書き込まれ、ホストから入出力デバイスに「プッシュされ」、ホストから入出力デバイスによって、また、ホストから入出力デバイスへのコマンドの通信を可能にする他の技術によって「プルされる」。様々な実施形態および／または使用シナリオにおいて、結果は、ホストメモリ、ＤＭＡ、エントリへの入出力デバイスアクセスによって完了待ち行列に送られ、入出力デバイスの１若しくはそれ以上の状況レジスタおよび／またはログページから読み取られ、入出力デバイスからホストに「プッシュされ」、入出力デバイスからホストによって、また、入出力デバイスからホストへの結果の通信を可能にする他の技術によって「プルされる」。ある実施形態では、複数の結果が完了待ち行列へとグループ化され、ホストは、任意選択で、および/または選択的に、（例えば、割り込み機構によって）一度に１コマンドよりも大きい粒度で結果を知らされる。ある実施形態では、ホストがマップ更新を要求したことに応答して、例えば、ホストが入出力デバイスのログページを読み出し、それに応答して入出力デバイスがホストに1若しくはそれ以上のマップ更新を送ることによって、更新マップ情報が入出力デバイスによってホストに提供される。
【０７５０】
以上で説明した実施形態のうちのいくつかでは、（例えば、図７の７４１および／または７８１、図８の８４２、８５２、および／または８７２、ならびに図１３Ａ／図１３Ｂの１３２８のうちの任意の１若しくはそれ以上の処理に際して、および/またはこれに関連して）いくつかのスティッキーなヒントが、任意選択で、および/または選択的に、１若しくはそれ以上のマップエントリに、また任意選択で、１若しくはそれ以上のシャドウ・マップ・エントリに記録される。例えば、あるデータタイプのヒントはスティッキーなヒントとして使用され、ヒントと共に供給されるＬＢＡのマップエントリに記録され、対応するシャドウマップ更新が、任意選択で、および/または選択的に提供される。後続のそのＬＢＡの参照は、ＬＢＡのマップエントリに記録されたそのデータタイプのヒントに従って処理される。スティッキーなヒントとして使用可能なヒントの別の例は、データアクセスタイプのヒント、データ順序付けのヒント、データ関係のヒント、およびデータ宛先のヒントである。
【０７５１】
様々な実施形態では、例えば、図６から図１３Ａ／１３Ｂで説明した動作および／または機能の全部またはいずれかの部分が、例えば、１若しくはそれ以上の状態機械によって実施される。状態機械の実施態様の例には、ハードウェア（論理ゲートおよび／若しくは回路、専用状態機械回路、配線制御回路など）、ソフトウェア（ファームウェアやマイクロコードなど）、またはハードウェアとソフトウェアの組み合わせが含まれる。一部の実施形態では、状態機械のうち１若しくはそれ以上が、少なくとも部分的にファームウェア、ドライバ、および／またはアプリケーションによって実施される。様々な実施形態において、状態機械のうち１若しくはそれ以上が、一部が図１ＡのＳＳＤコントローラ１００によって、一部がＣＰＵコア１７２によって実行されるファームウェアによって、一部が図１Ｂのファームウェア１０６によって、一部がドライバ１０７によって、および/または一部がアプリケーション１０９によって実施される。
【０７５２】
様々な実施形態では、図６から図１３Ａ／１３Ｂ説明した動作および／または機能の全部またはいずれかの部分が、ハードウェアおよび／またはファームウェアの技法の任意の組み合わせにより、例えば、図１Ａのコマンド管理１７３、変換管理１７７、および／またはマップ１４１のうちいずれか１若しくはそれ以上によって、その制御下で、および/またはそれに従って実施される。
【０７５３】
様々な実施形態において、ＨＢＡはホストの要素（１若しくはそれ以上のプロセッサおよび１若しくはそれ以上のメモリなど）を、入出力デバイス、例えばＳＡＴＡドライブといった入出力記憶デバイスなどに接続する。ＨＢＡのプロセッサおよび／またはメモリへの接続は、少なくとも部分的に１若しくはそれ以上の入出力デバイス通信インターフェース、バス、および／またはチャネル（ＰＣＩｅインターフェースなど）を介したものである。プロセッサのうちのあるものは、入出力デバイスと通信するＯＳ、ドライバ、および／またはアプリケーションのソフトウェア要素を実行する。ある実施形態では、ホストの要素とＨＢＡとの間のトランスポートはＡＨＣＩに準拠し、Ｔ１３準拠ＡＴＡコマンドがＨＢＡを介して入出力デバイスのＳＳＤのＳＡＴＡまたはＰＣＩｅインターフェースに渡される。別の実施形態では、ホストの要素とＨＢＡとの間のトランスポートはＮＶＭエクスプレスに準拠し、Ｔ１３準拠ＡＴＡコマンドと類似した少なくともいくつかの属性を有するコマンドがＨＢＡを介して入出力デバイスのＳＳＤのＰＣＩｅインターフェースに渡される。ある実施形態ではＨＢＡはホストに含まれ、別の実施形態ではＨＢＡは入出力デバイスに含まれる。ある実施形態ではＨＢＡは省かれ、入出力デバイスは（明示的なＨＢＡなしで）１若しくはそれ以上の入出力デバイス通信インターフェース、バス、および／またはチャネル（ＰＣＩｅインターフェースなど）に接続される。
【０７５４】
例えば、図１Ｂのコンテキストでは、ホスト１０２は、ホスト上で走っているソフトウェア（例えばＯＳ１０５、ドライバ１０７、および／またはアプリケーション１０９）と（例えば、ホストインターフェース１１１に含まれるＳＡＴＡ互換ホストインターフェースを有する）ＳＳＤ１０１との間の通信を可能にするＨＢＡを含む。通信は、ソフトウェアからＳＳＤへのコマンドの受け渡しを含む。コマンドのトランスポートはＡＨＣＩを介したものであり、Ｔ１３準拠ＡＴＡコマンドがＳＳＤのＳＡＴＡインターフェースに提供される。よって、図６から図１３Ａ／図１３Ｂに関して説明したようなコマンドおよび／または結果は、ＡＨＣＩトランスポートによって受け渡される。
【０７５５】
別の例として、図１Ｂのコンテキストでは、ホスト１０２は、スイッチ／ファブリック／中間コントローラ１０３との通信を可能にするチップセットを含み、中間インターフェース１０４および外部インターフェース１１０はＰＣＩｅ互換である（例えば、ＳＳＤ１０１はホストインターフェース１１１に含まれるＰＣＩｅインターフェースを有する）。チップセットおよびスイッチ／ファブリック／中間コントローラ１０３は、ホストのＯＳ、ドライバ、および／またはアプリケーションソフトウェアとＳＳＤ１０１との間の、コマンドの受け渡しを含む通信を可能にする。コマンドのトランスポートはＮＶＭエクスプレスを介したものであり、Ｔ１３準拠ＡＴＡコマンドに類似した少なくともいくつかの属性を有するコマンドがＳＳＤのＰＣＩｅインターフェースに提供される。よって、図６から図１３Ａ／図１３Ｂに関して説明したようなコマンドおよび／または結果は、ＮＶＭエクスプレストランスポートによって受け渡される。
【０７５６】
実施技法の例
ある実施形態では、入出力デバイスまたはその一部、例えば、（コンピューティングホストなどの）ホスト、例えば、フラッシュメモリ、コンピューティングホスト・フラッシュ・メモリ・コントローラ、および／またはＳＳＤコントローラ（例えば図１ＡのＳＳＤコントローラ１００）、ならびにプロセッサ、マイクロプロセッサ、システム・オン・チップ、特定用途向け集積回路、ハードウェアアクセラレータ、または前述の動作の全部または部分を提供する他の回路と相互動作する入出力デバイスのＳＳＤコントローラよって行われる動作の全部またはいずれかの部分の様々な組み合わせが、コンピュータシステムによる処理と適合する仕様によって指定される。仕様は、様々な記述、例えば、ハードウェア記述言語、回路記述、ネットリスト記述、マスク記述、またはレイアウト記述に従ったものである。記述の例には、Ｖｅｒｉｌｏｇ、ＶＨＤＬ、ＳＰＩＣＥ、ＳＰＩＣＥの変形、例えば、ＰＳｐｉｃｅ、ＩＢＩＳ、ＬＥＦ、ＤＥＦ、ＧＤＳ−ＩＩ、ＯＡＳＩＳ、または他の記述が含まれる。様々な実施形態では、処理は、１若しくはそれ以上の集積回路上に含めるのに適する論理および／または回路を生成し、検証し、または指定するための解釈、コンパイル、シミュレーション、および合成の任意の組み合わせを含む。各集積回路は、様々な実施形態によれば、様々な技法に従って設計することができ、および/または製造することができる。技法には、プログラマブルな技法（例えば、フィールド若しくはマスク・プログラマブル・ゲート・アレイ集積回路）、セミカスタムの技法（例えば、全部若しくは一部がセルベースの集積回路）、およびフルカスタムの技法（例えば、実質的に専門化された集積回路）、それらの任意の組み合わせ、または集積回路の設計および／若しくは製造と適合する任意の他の技法が含まれる。
【０７５７】
ある実施形態では、命令のセットを記憶しているコンピュータ可読媒体によって記述される動作の全部または部分の様々な組み合わせが、１若しくはそれ以上のプログラム命令の実行および／若しくは解釈によって、１若しくはそれ以上のソースおよび／若しくはスクリプト言語命令文の解釈および／若しくはコンパイルによって、または、プログラミングおよび／若しくはスクリプティング言語命令文で表現された情報をコンパイルし、変換し、および/または解釈することによって生成されるバイナリ命令の実行によって実行される。命令文は任意の標準のプログラミングまたはスクリプティング言語（例えば、Ｃ、Ｃ＋＋、Ｆｏｒｔｒａｎ、Ｐａｓｃａｌ、Ａｄａ、Ｊａｖａ（登録商標）、ＶＢｓｃｒｉｐｔ、Ｓｈｅｌｌ）と適合する。プログラム命令、言語命令文、またはバイナリ命令のうち１若しくはそれ以上が、任意選択で、１若しくはそれ以上のコンピュータ可読記憶媒体要素上に記憶される。様々な実施形態では、プログラム命令の一部、全部、または様々な部分が、１若しくはそれ以上の関数、ルーチン、サブルーチン、インラインルーチン、プロシージャ、マクロ、またはそれらの部分として実現される。
【０７５８】
結論
ある特定の選択が、説明において、テキストおよび図面を作成するに際の単なる便宜のためになされており、別の指示がない限り、それらの選択は、それ自体で、前述の実施形態の構造または動作に関する追加情報を伝えるものと解釈すべきではない。選択の例には、図の符番に使用される呼称の特定の編成または割り当て、および実施形態の特徴および要素を識別し、参照するのに使用される要素識別子（コールアウトや数値識別子など）の特定の編成または割り当てが含まれる。
【０７５９】
「ｉｎｃｌｕｄｅｓ」または「ｉｎｃｌｕｄｉｎｇ」という語は、開放型範囲の論理集合を記述する抽象概念として解釈されるべきことが明確に意図されており、後に続けて「ｗｉｔｈｉｎ」という語が明示されない限り物理的包含を伝えるためのものではない。
前述の実施形態は、説明および理解の明確さのためにある程度詳細に説明されているが、本発明は提示した詳細だけに限定されるものではない。本発明の多くの実施形態がある。開示の実施形態は例示であり、限定ではない。
【０７６０】
説明と整合性を有する、構成、配置、および使用における多くの変形が可能であり、それらの変形は、発行される特許の特許請求の範囲内にあることが理解されるであろう。例えば、相互接続および機能ユニットのビット幅、クロック速度、および使用される技術の種類は、各構成要素ブロックにおける様々な実施形態に従って変わりうる。相互接続および論理に与えられた名称は、単なる例であり、説明した概念を限定するものと解釈すべきではない。フローチャートおよび流れ図のプロセス、動作、および機能要素の順序および配置は、様々な実施形態に従って変わりうる。また、特に別に指定しない限り、指定される値範囲、使用される最大値および最小値、または他の特定の仕様（例えば、フラッシュメモリ技術の種類、レジスタおよびバッファ内のエントリまたは段の数）は、単に前述の実施形態のものにすぎず、実施技術の改善および変更を追跡することが見込まれるものであり、限定として解釈すべきではない。
【０７６１】
当分野で公知の機能的に等価の技法を、様々なコンポーネント、サブシステム、動作、関数、ルーチン、サブルーチン、インラインルーチン、プロシージャ、マクロ、またはそれらの部分を実施するのに、前述の技法の代わりに用いることができる。また、実施形態の多くの機能的態様を、より高速な処理（以前にハードウェアにあった機能のソフトウェアへの移行を円滑化する）およびより高い集積密度（以前にソフトウェアにあった機能のハードウェアへの移行を円滑化する）の実施形態に依存する設計制約条件および技術傾向に応じて、選択的に、ハードウェア（おおむね専用の回路など）で、またはソフトウェアで（例えば、プログラムされたコントローラ若しくはプロセッサのある方式によって）実現できることも理解される。様々な実施形態の具体的な変形は、これに限定されるものではないが、分割の違い、フォームファクタおよび構成の違い、異なるオペレーティングシステムおよび他のシステムソフトウェアの使用、異なるインターフェース規格、ネットワークプロトコル、または通信リンクの使用、本明細書で説明した概念を、特定の用途の固有の技術的業務的制約条件に従って実施するときに予期されるべき他の変形を含む。
【０７６２】
各実施形態は、前述の各実施形態の多くの態様の最小限の実施に必要とされるものを大きく超えた詳細および環境的コンテキストと共に説明されている。ある実施形態は、残りの要素間での基本的協働を変更せずに開示の構成要素または機能を割愛することを当業者は理解するであろう。よって、開示の詳細の多くが前述の実施形態の様々な態様を実施するのに必要ではないことが理解される。残りの要素が先行技術と区別できる範囲内で、割愛される構成要素および特徴は本明細書で説明した概念を限定するものではない。
【０７６３】
設計におけるすべてのそのような変形は、前述の実施形態によって伝えられる教示に対する実質的な変更ではない。また、本明細書で説明した実施形態は、他のコンピューティング用途およびネットワーキング用途に幅広い適用性を有し、前述の実施形態の特定の用途または産業だけに限定されるものではないことも理解される。よって本発明は、発行される特許の特許請求の範囲内に包含されるあらゆる可能な改変形態および変形形態を含むものと解釈すべきである。
【図１Ａ】
2014522066.tif 000013
【図１Ｂ】
2014522066.tif 000014
【図２】
2014522066.tif 000015
【図３】
2014522066.tif 000016
【図４Ａ】
2014522066.tif 000017
【図４Ｂ】
2014522066.tif 000018
【図５】
2014522066.tif 000019
【図６】
2014522066.tif 000020
【図７】
2014522066.tif 000021
【図８】
2014522066.tif 000022
【図９】
2014522066.tif 000023
【図１０】
2014522066.tif 000024
【図１１】
2014522066.tif 000025
【図１２】
2014522066.tif 000026
【図１３Ａ】
2014522066.tif 000027
【図１３Ｂ】
2014522066.tif 000028
【国際調査報告】
2014522066.tif 000029
2014522066.tif 000030
2014522066.tif 000031