特許第6082389号(P6082389)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ シーゲイト テクノロジー エルエルシーの特許一覧

特許6082389ホストから見たデバイスファームウェア更新の影響の管理
<>
  • 特許6082389-ホストから見たデバイスファームウェア更新の影響の管理 図000006
  • 特許6082389-ホストから見たデバイスファームウェア更新の影響の管理 図000007
  • 特許6082389-ホストから見たデバイスファームウェア更新の影響の管理 図000008
  • 特許6082389-ホストから見たデバイスファームウェア更新の影響の管理 図000009
  • 特許6082389-ホストから見たデバイスファームウェア更新の影響の管理 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6082389
(24)【登録日】2017年1月27日
(45)【発行日】2017年2月15日
(54)【発明の名称】ホストから見たデバイスファームウェア更新の影響の管理
(51)【国際特許分類】
   G06F 3/06 20060101AFI20170206BHJP
   G06F 11/00 20060101ALI20170206BHJP
   G06F 3/08 20060101ALI20170206BHJP
【FI】
   G06F3/06 301G
   G06F9/06 630A
   G06F3/08 H
【請求項の数】20
【全頁数】47
(21)【出願番号】特願2014-514587(P2014-514587)
(86)(22)【出願日】2012年6月6日
(65)【公表番号】特表2014-519662(P2014-519662A)
(43)【公表日】2014年8月14日
(86)【国際出願番号】US2012041088
(87)【国際公開番号】WO2012170521
(87)【国際公開日】20121213
【審査請求日】2015年6月6日
(31)【優先権主張番号】61/494,262
(32)【優先日】2011年6月7日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】500373758
【氏名又は名称】シーゲイト テクノロジー エルエルシー
【氏名又は名称原語表記】Seagate Technology LLC
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】ステンフォート、ロス
(72)【発明者】
【氏名】マッケイ、キース
【審査官】 桜井 茂行
(56)【参考文献】
【文献】 特開2000−148465(JP,A)
【文献】 特開2009−116772(JP,A)
【文献】 特開2001−331327(JP,A)
【文献】 米国特許出願公開第2010/0011134(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06−3/08
G06F 9/44−9/54
G06F 11/00
(57)【特許請求の範囲】
【請求項1】
デバイスであって、
不揮発性メモリと、
コンピューティングホストに接続する手段と、
前記不揮発性メモリを、第1のファームウェア、第1のファームウェア改訂識別子、第2のファームウェア、および第2のファームウェア改訂識別子を記憶するように管理する手段と、
前記コンピューティングホストから前記第1のファームウェアを受け取る手段であって、前記第1のファームウェアは前記第1のファームウェア改訂識別子と関連付けられているものである、前記第1のファームウェアを受け取る手段と、
前記コンピューティングホストから前記第2のファームウェアを受け取る手段であって、当該受け取る手段は前記第1のファームウェアを受け取る手段の後で動作するものであり、前記第2のファームウェアは前記第2のファームウェア改訂識別子と関連付けられているものである、前記第2のファームウェアを受け取る手段と、
前記コンピューティングホストに前記第1のファームウェア改訂識別子を返す手段であって、当該返す手段は、前記コンピューティングホストからの特定のタイプのコマンドに応答するものであり、当該デバイスが前記第2のファームウェアを実行している間であって、且つ特定のイベントが発生する前に動作するものである、前記返す手段と
を有し、
前記返す手段の動作により、前記コンピューティングホスト上で実行されているオペレーティングシステム(Operating System:OS)は、当該デバイスが前記第1のファームウェアを実行している間中、および前記特定のイベントが発生するまで前記第2のファームウェアを実行している間に、返されたファームウェア改訂識別子の値の変更に応答して誤りを検出することなく実行を継続することが可能になるものである、デバイス。
【請求項2】
請求項1記載のデバイスにおいて、前記特定のイベントはデバイスの電源サイクルであるデバイス。
【請求項3】
請求項1記載のデバイスにおいて、さらに、
前記コンピューティングホストに前記第2のファームウェア改訂識別子を返す手段であって、当該デバイスが前記第2のファームウェアを実行している間であって、且つ前記特定のイベントが発生した後で動作するものであり、前記コンピューティングホストからの前記特定のタイプのコマンドに応答するものである、前記第2のファームウェア改訂識別子を返す前記手段を有するデバイス。
【請求項4】
請求項1記載のデバイスにおいて、前記オペレーティングシステムはWindows(登録商標)オペレーティングシステムの1バージョンを有するデバイス。
【請求項5】
請求項1記載のデバイスにおいて、前記特定のタイプのコマンドは、シリアル・アドバンスド・テクノロジ・アタッチメント(SATA)IDENTIFYタイプのコマンドを有するデバイス。
【請求項6】
請求項1記載のデバイスにおいて、前記特定のタイプのコマンドは、シリアル小型コンピュータ・システム・インターフェース(シリアルSCSI)(SAS)重要製品データ(VPD)読み取りタイプのコマンドを有するデバイス。
【請求項7】
デバイスであって、
不揮発性メモリと、
前記不揮発性メモリを、第1のファームウェア、第1のファームウェア改訂識別子、第2のファームウェア、および第2のファームウェア改訂識別子を記憶するように管理する手段であって、当該デバイスはコンピューティングホストに接続可能である、前記管理する手段と、
前記コンピューティングホストから前記第1のファームウェアを受け取る手段であって、前記第1のファームウェアは前記第1のファームウェア改訂識別子と関連付けられているものである、前記第1のファームウェアを受け取る手段と、
前記コンピューティングホストから前記第2のファームウェアを受け取る手段であって、当該受け取る手段は、前記第1のファームウェアを受け取る前記手段の後で動作するものであり、前記第2のファームウェアは前記第2のファームウェア改訂識別子と関連付けられているものである、前記第2のファームウェアを受け取る手段と、
前記コンピューティングホストに前記第1のファームウェア改訂識別子を返す手段であって、当該返す手段は、前記コンピューティングホストからの第1のタイプのコマンドに応答するものであり、当該デバイスが前記第2のファームウェアを実行している間に動作するものである、前記第1のファームウェア改訂識別子を返す前記手段と、
前記コンピューティングホストに前記第2のファームウェア改訂識別子を返す手段であって、当該返す手段は、前記コンピューティングホストからの第2のタイプのコマンドに応答するものであり、当該デバイスが前記第2のファームウェアを実行している間に動作するものである、前記第2のファームウェア改訂識別子を返す前記手段と
を有し、
前記第1のタイプのコマンドは識別読み取りタイプのコマンドであり、
前記第2のタイプのコマンドはベンダ特有のタイプのコマンドである、デバイス。
【請求項8】
請求項7記載のデバイスにおいて、前記ベンダ特有のタイプのコマンドはベンダ特有のファームウェア識別情報読み取りタイプのコマンドを有するデバイス。
【請求項9】
請求項7記載のデバイスにおいて、前記識別読み取りタイプのコマンドは、シリアル・アドバンスド・テクノロジ・アタッチメント(SATA)IDENTIFYタイプのコマンドを有するデバイス。
【請求項10】
請求項7記載のデバイスにおいて、前記識別読み取りタイプのコマンドは、シリアル小型コンピュータ・システム・インターフェース(シリアルSCSI)(SAS)重要製品データ(VPD)読み取りタイプのコマンドを有するデバイス。
【請求項11】
請求項7記載のデバイスにおいて、前記識別読み取りタイプのコマンドは、前記第2のファームウェア改訂識別子が前記第1のファームウェア改訂識別子の代わりに返されるように処理されるときに、前記コンピューティングホスト上で実行されているオペレーティングシステム(OS)が回復不能の誤りを発生させるタイプのコマンドを有するデバイス。
【請求項12】
請求項11記載のデバイスにおいて、前記オペレーティングシステムはWindows(登録商標)オペレーティングシステムの1バージョンを有するデバイス。
【請求項13】
記憶デバイスであって、
現在のファームウェア改訂識別子と関連付けられた現在のファームウェアに従って記憶デバイスを動作させる第1の手段であって、前記現在のファームウェア改訂識別子を、記憶デバイスと通信するコンピューティングホストに返す第2の手段を有するものである、前記第1の手段と、
前記第1の手段の後で動作する、前記現在のファームウェア改訂識別子とは異なる新しいファームウェア改訂識別子と関連付けられた新しいファームウェアを受け取る第3の手段と、
前記第3の手段の後で動作する、前記新しいファームウェアに従って記憶デバイスを動作させる第4の手段であって、前記現在のファームウェア改訂識別子を前記コンピューティングホストに返す第5の手段を有するものである、前記第4の手段と、
前記第3の手段の後で電源サイクルに応答して動作する、前記新しいファームウェアに従って記憶デバイスを動作させる第6の手段であって、前記新しいファームウェア改訂識別子を前記コンピューティングホストに返す第7の手段を有するものである、前記第6の手段と、
前記新しいファームウェアの少なくとも一部分を記憶することができるようにした不揮発性メモリと
を有し、
前記3つの返す手段は、各々、前記コンピューティングホストからの複数のタイプのコマンドのうちの特定の1つのそれぞれのインスタンスに応答し、前記特定のタイプのコマンドは、
(a)前記現在のファームウェア改訂識別子が前記それぞれのインスタンスの第1のものに応答して前記コンピューティングホストに返され、
(b)前記新しいファームウェア改訂識別子が前記それぞれのインスタンスの第2のものに応答して前記コンピューティングホストに返され、
(c)前記現在のファームウェア改訂識別子が返されるのと前記新しいファームウェア改訂識別子が返されるのとの間に前記電源サイクルが行われないときには、
前記コンピューティングホスト上で実行されているオペレーティングシステム(OS)が、前記新しいファームウェア改訂識別子の返しに応答して回復不能の誤りを発生させるようなものである、記憶デバイス。
【請求項14】
請求項13記載の記憶デバイスにおいて、前記オペレーティングシステムはWindows(登録商標)OSの1バージョンを有する記憶デバイス
【請求項15】
請求項13記載の記憶デバイスにおいて、前記特定のタイプのコマンドは、シリアル・アドバンスド・テクノロジ・アタッチメント(SATA)IDENTIFYタイプのコマンドを有する記憶デバイス
【請求項16】
請求項13記載の記憶デバイスにおいて、前記特定のタイプのコマンドは、小型コンピュータ・システム・インターフェース(SCSI)重要製品データ(VPD)読み取りタイプのコマンドを有する記憶デバイス
【請求項17】
請求項13記載の記憶デバイスにおいて、前記特定のタイプのコマンドは、シリアル小型コンピュータ・システム・インターフェース(シリアルSCSI)(SAS)重要製品データ(VPD)読み取りタイプのコマンドを有する記憶デバイス
【請求項18】
請求項13記載の記憶デバイスにおいて、前記受け取る手段は、前記電源サイクルまで前記現在のファームウェア改訂識別子を保存する手段を有する記憶デバイス
【請求項19】
請求項13記載の記憶デバイスにおいて、前記受け取る手段は、前記電源サイクルまで前記現在のファームウェア改訂識別子を変更されないよう保護する手段を有する記憶デバイス
【請求項20】
請求項13記載の記憶デバイスにおいて、前記受け取る手段は、前記現在のファームウェア改訂識別子を前記コンピューティングホストに提供する手段と、前記コンピューティングホストから前記現在のファームウェア改訂識別子を復元する手段とを有する記憶デバイス
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願の優先権利益の主張を、(それがある場合には、適宜)添付の出願データシート、請求、または送達状において行う。本出願の種類によって許容される範囲内で、本出願はこの参照によりあらゆる目的で以下の出願を組み込むものであり、以下の出願はすべて、発明がなされた時点において本出願と所有者を同じくするものである。
【0002】
2011年7月6日付で出願された、Ross John Stenfortを筆頭発明者とする、「Management Of Device Firmware Update Effects As Seen By A Host」という名称の、米国仮出願(整理番号第SF−11−12号および出願番号第61/494262号)。
【背景技術】
【0003】
分野:格納技術の進歩が、使用の性能、効率、及び有用性の改善を提供するために必要とされる。
【0004】
関連技術:公知である、または周知であるものとして明記されない限り、コンテキスト、定義、または比較を目的とするものを含む本明細書における技法および概念の言及は、そのような技法または概念が以前から公知であり、あるいは先行技術の一部であることの容認と解釈すべきではない。特許、特許出願、および出版物を含む、本明細書で引用されるあらゆる参照文献は(それがある場合には)、具体的に組み込まれているか否かを問わず、あらゆる目的で、この参照によりその全体が本明細書に組み込まれるものである。
この出願の発明に関連する先行技術文献情報としては、以下のものがある(国際出願日以降国際段階で引用された文献及び他国に国内移行した際に引用された文献を含む)。
(先行技術文献)
(特許文献)
(特許文献1) 米国特許出願公開第2008/0040713号明細書
(特許文献2) 米国特許第7865907号明細書
(特許文献3) 米国特許第7065769号明細書
(特許文献4) 米国特許出願公開第2010/0095079号明細書
(特許文献5) 米国特許出願公開第2005/0028172号明細書
【発明の概要】
【課題を解決するための手段】
【0005】
本発明は多くの方法で実施されてよく、例えば、プロセス、製造品、装置、システム、組成物、ならびに、コンピュータ可読記憶媒体(ディスクといった光学的大容量記憶装置および/または磁気的大容量記憶装置、フラッシュストレージといった不揮発性記憶を有する集積回路など)や、プログラム命令が光通信リンクまたは電子通信リンク上で送られるコンピュータネットワークといったコンピュータ可読媒体として実施されてよい。詳細な説明では、上記の分野における使用のコスト、収益性、性能、効率、および有用性の改善を可能にする本発明の1つ若しくはそれ以上の実施形態の説明を行う。詳細な説明は、詳細な説明の残りの部分の理解を容易にするための概説を含む。概説は、本明細書で説明する概念に従うシステム、方法、製造品、およびコンピュータ可読媒体の1つ若しくはそれ以上の例示的実施形態を含む。結論の項でより詳細に論じるように、本発明は、発行される特許請求の範囲内のあらゆる可能な改変形態および変形形態を包含するものである。
【図面の簡単な説明】
【0006】
図1A図1Aは、ホストから見たデバイスファームウェア更新の影響の管理を提供するソリッドステートディスク(Solid−State Disk:SSD)を含むSSDの実施形態の選択された詳細を示す図である。
図1B図1Bは、図1AのSSDを含むシステムの実施形態の選択された詳細を示す図である。
図1C図1Cは、図1AのSSDを含むシステムの別の実施形態の選択された詳細を示す図である。
図2図2は、ホストから見たデバイスファームウェア更新の影響の管理の実施形態の選択された詳細を示す流れ図である。
図3図3は、ホストから見たデバイスファームウェア更新の影響の管理の別の実施形態の選択された詳細を示す流れ図である。
【0007】
【表1】
【発明を実施するための形態】
【0008】
本発明の1つ若しくはそれ以上の実施形態の詳細な説明を、以下で、本発明の選択された詳細を図示する添付の図を併用して行う。本発明を実施形態との関連で説明する。実施形態は、本明細書では、単なる例示であると理解されるものであり、本発明は、明確に、本明細書中の実施形態のいずれか若しくは全部に、またはいずれか若しくは全部によって限定されるものではなく、本発明は、多数の代替形態、改変形態、および均等物を包含するものである。説明が単調にならないように、様々な言葉によるラベル(これに限定されるものではないが、最初の、最後の、ある一定の、様々な、別の、他の、特定の、選択の、いくつかの、目立ったなど)が実施形態のセットを区別するために適用される場合がある。本明細書で使用する場合、そのようなラベルは、明確に、質を伝えるためのものでも、いかなる形の好みや先入観を伝えるためのものでもなく、単に、別々のセットを都合よく区別するためのものにすぎない。開示するプロセスのいくつかの動作の順序は本発明の範囲内で変更可能である。多様な実施形態がプロセス、方法、および/またはプログラム命令の各特徴の差異を説明するのに使用される場合は常に、所定の、または動的に決定される基準に従って、複数の多様な実施形態にそれぞれ対応する複数の動作モードの1つの静的選択および/または動的選択を行う他の実施形態が企図されている。以下の説明では、本発明の十分な理解を提供するために、多数の具体的詳細を示す。それらの詳細は例として示すものであり、本発明は、それらの詳細の一部または全部がなくても、特許請求の範囲に従って実施されうる。わかりやすくするために、本発明に関連した技術分野で公知の技術資料は、本発明が不必要に曖昧になることのないように詳細に説明していない。
【0009】
概説
この概説は、詳細な説明のより迅速な理解を助けるために含まれるにすぎず、本発明は、(それがある場合には、明示的な例を含む)この概説で提示される概念だけに限定されるものではなく、どんな概説の段落も、必然的に、主題全体の縮約された見方であり、網羅的な、または限定的な記述であることを意味するものではない。例えば、以下の概説は、スペースおよび編成によりある一定の実施形態だけに限定される概要情報を提供するものである。特許請求の範囲が究極的にそこに導かれることになる実施形態を含む多くの他の実施形態があり、それらを本明細書の残りの部分にわたって論じる。
【0010】
頭字語
ここで定義される様々な縮めた表現の略語(例えば、頭字語)の少なくとも一部が本明細書において使用される特定の要素を指す。
【0011】
【表2】
コンピューティングホストから見たデバイスファームウェア更新の影響の管理は、可視性の遅延なしではオペレーティングシステム(Operating System:OS)が回復不能の誤りおよび「クラッシュ」を発生させることになるはずのコンテキストなどにおいて、例えばデバイスファームウェア更新の影響の少なくとも一部分の可視性を遅延させることによって、ファームウェア更新をまたいでホスト上で連続してOSを走らせることを可能にする。例えば、デバイス(SATA互換SSDなど)が、Windows(登録商標)の未修正バージョンを走らせているコンピューティングホストに接続されているとする。デバイス上のファームウェアが更新され、例えば、起動されることによって、および/またはファームウェアの実行に利用できる1若しくはそれ以上のライブラリおよび/若しくは表によってアクティブ化される。通常は(更新されたファームウェアがアクティブ化されると)OSから即座に見えるようになるはずの情報の一部分の可視性が、デバイスの電源サイクルまで遅延される。その部分が、例えばファームウェア改訂識別子などを含む場合には、可視性の遅延は、OSを再起動せずにファームウェア更新/アクティブ化をまたいで連続してOSを走らせることを可能にする。
【0012】
デバイスのファームウェアが更新され、コンピューティングホストから見たファームウェア更新の1若しくはそれ以上の影響が、任意選択で、例えば、ホスト上で走っており、デバイスにアクセスするOSへの更新の影響の少なくとも一部分の可視性を遅延させることによって管理される。遅延は、可視性遅延を終了させる特定のイベントまで続く。特定のイベントの例は、デバイスが電源サイクルされる(例えば、電源の切断およびその後の再印加など)、デバイスの全部または任意の部分がある電力モードから別の電力モードへ遷移する(例えば、休眠モードまたはPHY電力管理モードを終了するなど)、デバイスがベンダ特有のコマンドを受け取る、デバイスがファームウェア更新の一部として特定のパラメータおよび/またはコードを受け取る、デバイスをホストに接続するリンクのリセットなどである。(例えばデバイスへのコマンドを介してホストによりアクセス可能な)デバイスのモード情報は、任意で、前述のイベント例のうちのどれが可視性の遅延を終了させるイベントに対応するか選択的に決定する。
【0013】
例えば、デバイスは更新されるファームウェアを備えるコントローラを有するSATA互換SSDである。ファームウェア改訂識別子を提供する更新の部分の可視性は、SSDが電源サイクルされるまで遅延される。よって、デバイスが電源サイクルされるまで、OSには、SSDは、少なくともファームウェア改訂識別子に関しては、更新前のファームウェアで動作しているように見える。OSがWindows(登録商標)のある特定のバージョンのうちの1つ(例えば、95、98、ME、NT、XP、2000、Server、Vista、7など)である場合には、更新されたファームウェア改訂識別子の可視性の遅延は、ある実施形態および/または使用シナリオでは、OSが、再起動および/または電源サイクルを行わなければ走り続ける(ユーザアプリケーションなどの実行を継続する)ことができなくなる回復不能の誤りを発生させるのを防ぐ。ファームウェア改訂識別子は、例えば、デバイスのVPDデータを返すSATA'IDENTIFY'コマンドに応答して、あるいはSCSI/SAS VPD読み取りコマンドに応答して、OSから見ることができる。例えば、SATAコンテキストでは、ファームウェア改訂識別子は「Identify Device Data Words 23−26(デバイス識別データワード23〜26)」に含まれる。別の例として、SCSIコンテキストでは、ファームウェア改訂識別子は、「Device Constituents VPD page(デバイス構成要素VPDページ)」、例えば製品改訂レベルエントリなどに含まれる。
【0014】
ファームウェア更新の影響の少なくとも一部分の可視性の遅延は、例えば、identifyおよび/または識別情報の1若しくはそれ以上の変更の可視性の遅延に対応する。デバイス(記憶デバイスなど)のファームウェアが更新され、(例えば、記憶デバイスのコントローラが更新されたファームウェアを起動させることによって)アクティブ化され、コンピューティングホスト(例えば、Windows(登録商標)といったOSを走らせているコンピュータなど)にidentifyおよび/または識別情報を返すために参照される(1若しくはそれ以上の)Identify/識別データ構造の全部または任意の部分が、ファームウェア更新前のファームウェアに対応する状態で保存される。コントローラは、可視性の遅延を終了させるイベントがコントローラによって検出されるまで(またはコントローラにその通知が提供されるまで)保存された(1若しくはそれ以上の)Identify/識別データ構造内の値を保存された状態に保持する。イベントの後、コントローラは更新されたファームウェアを起動するが、もう(1若しくはそれ以上の)Identify/識別データ構造を保存せず、代わりに、更新されたファームウェアに従って新しく(1若しくはそれ以上の)Identify/識別データ構造を構築する。
【0015】
identifyおよび/または識別情報は、識別する情報、動作パラメータ、およびファームウェアのバージョン間、製品間、製品ライン間、およびそれらの特定のインスタンス間で異なる他の情報の全部または任意の部分の任意の組み合わせを含む。識別する情報の例は、ファームウェア改訂識別子、ファームウェア改訂番号、および特定のSSDまたは特定のSSDを用いた製品の識別などである。識別する情報のさらに別の例は、特定のインスタンスに特有の参照(通し番号など)、特定のインスタンスクラスに特有の参照(改訂識別子/レベルまたは製品IDなど)、および特定の製造者/企業に特有の参照(ベンダIDなど)である。動作パラメータの例には、SSPの対象となる1若しくはそれ以上のパラメータ、例えば、通常は、COMINIT/COMRESETコマンド、ファームウェア更新、リンクリセット、PHY電力管理モード遷移、および/または電源サイクルをまたいで保存されないSSPパラメータなどを含む。
【0016】
(1若しくはそれ以上の)Identify/識別データ構造は、複数の技法のうちの1つ若しくは任意の組み合わせによって保存される。第1の技法例として、コントローラは、例えば、可視性の遅延を終了させるイベントが発生するまで起動中に(1若しくはそれ以上の)データ構造に割り振られる(1若しくはそれ以上の)記憶場所の変更を妨げることによって、あるいは、可視性の遅延を終了させるイベントと関連付けられる起動についてのみ(1若しくはそれ以上の)記憶場所の変更を可能にすることによって、(1若しくはそれ以上の)Identify/識別データ構造を変更されないよう保護する。任意選択で、通常は(1若しくはそれ以上の)Identify/識別データ構造に記憶されたはずの情報は、例えば、(VPD領域内の1若しくはそれ以上のベンダ特有のフィールドといった)ベンダ特有のデータ構造に対応する他の(1若しくはそれ以上の)データ構造に記憶される。
【0017】
第2の技法例として、コントローラは、ホスト上のドライバと連携して動作し、新しいファームウェアがダウンロードされ、アクティブ化され、および/または起動される前に、(1若しくはそれ以上の)Identify/識別データ構造からドライバに情報を提供する。(可視性の遅延を終了させるイベントなしでの)新しいファームウェアのダウンロード、アクティブ化、および/または起動の一部として、ドライバは、前に提供された(1若しくはそれ以上の)Identify/識別データ構造情報をコントローラに供給し、コントローラは、(1若しくはそれ以上の)Identify/識別データ構造に割り振られた(1若しくはそれ以上の)記憶場所に供給された情報を読み込む。
【0018】
第3の技法例として、ホスト上のドライバはデバイスに、デバイスが(1若しくはそれ以上の)Identify/識別データ構造に読み込むための情報を提供する。ドライバは、ファームウェア更新の後で、デバイスが、読み込まれた(1若しくはそれ以上の)Identify/識別データ構造に依存するホストからの任意のコマンドに応答する前に、情報を供給する。例えば情報は、SSPの対象となる1若しくはそれ以上のパラメータに対応する。
【0019】
任意選択で、前述の技法のいずれかと組み合わせて、デバイスを、ホストに、通常は、可視性の遅延を終了させるイベントの後でようやく(1若しくはそれ以上の)Identify/識別データ構造において可視になるべき情報を提供することができるようにする。具体例としては、記憶デバイスのファームウェアがホストの指図の下で更新され、ファームウェア改訂識別子が保存される。よって、ホスト上で実行中のOS(Windows(登録商標)の1バージョンなど)によって認識されるIdentify Frameに関して、ファームウェア改訂識別子はファームウェア更新をまたいで不変のままであり、OSが、新しいファームウェア改訂識別子が再起動および/または電源サイクルなしで可視になることに起因する回復不能の誤り(「クラッシュ」など)が発生させるのを防ぐ。ファームウェア更新の後で、ホスト上で実行されているエージェント(アプリケーションプログラムやドライバなど)は検査を行って、記憶デバイス上のファームウェアが最新バージョンであるかどうか判定する。エージェントは記憶デバイスに特定のコマンド(例えば、ベンダ特有のidentify/識別情報の読み取りであり、Identify Frameを返すはずの読み取りとは異なる読み取りなど)を送り、これに応答して記憶デバイスは新しいファームウェア改訂識別子を提供する。次いでエージェントは、新しいファームウェア改訂識別子を最新のファームウェア改訂識別子と比較して、記憶デバイスが最新のファームウェアを有しているかどうか判定する。
【0020】
記憶デバイスがどのファームウェアバージョンを走らせているか判定するためにエージェントが送る特定のコマンドに応答して、新しいファームウェア改訂識別子は、ファームウェアが「新しい」か、それとも「古い」かにかかわらず、また、起動が、可視性の遅延を終了させるイベントと関連付けられるか否かにかかわらず、例えば、ファームウェアが起動する際にファームウェアのバージョンに対応するファームウェア改訂識別子で更新される「影」VPD領域から提供される。あるいは、新しいファームウェア改訂識別子は、ファームウェアが起動する際にファームウェアの起動バージョンに対応するファームウェア改訂識別子が書き込まれた「ログ」から提供される。
【0021】
任意選択で、前のファームウェア改訂識別子が影VPD領域に記憶される。さらに任意選択で、デバイス内の(例えば、デバイスへのコマンドによってホストからアクセスすることのできる)モード情報が、影VPD領域が可視性の遅延を終了させるイベント時に更新されるか否か選択的に判定する。例えば、モード情報は、電源サイクル時の影VPD領域への更新を妨げるように設定され、さもなければそのような変更が誤りを発生させることになるはずの場合に、ファームウェア改訂識別子がシステムにおいて不変のままであることを可能にする。影VPD領域には任意選択で、SMART Logによって、および/またはベンダ特有のコマンドといったベンダ特有の機構によってアクセスできる。
【0022】
前述の具体例はファームウェア改訂識別子に関するものであるが、他の実施形態は、同様のやり方で、SSPの対象となるパラメータ、ならびに保存されたIdentify/識別情報、より一般的には、OSからの可視性遅延の対象となるファームウェア更新の任意の部分を扱う。
【0023】
任意選択で、単独で、または前述の技法のいずれかと組み合わせて、デバイスを、最近のファームウェア更新および/または1若しくはそれ以上の前のファームウェア更新の結果を記憶し、続いてホストに提供することができるようにする。記憶および提供は、例えば、ファームウェアの1若しくはそれ以上の前のバージョンへの「ロールバック」、ファームウェアの1若しくはそれ以上の前のバージョンの実行からのidentify/識別情報へのアクセス、ファームウェアの現在のバージョンの実行からのidentify/識別情報(ファームウェア識別子および/または、通常は可視性の遅延の対象となるSSPの対象となる1若しくはそれ以上のパラメータなど)へのアクセスなどを可能にする。
【0024】
ファームウェア更新の一例は、デバイスによって(例えば、デバイスのプロセッサがファームウェアを実行することによって)使用されるファームウェアの全部または任意の部分が新しいファームウェアで置き換えられるときであり、デバイスは次いで、新しいファームウェアを使用して(例えば、新しいファームウェアを起動し、次いで実行することによって、および/またはファームウェアの実行に利用できる1若しくはそれ以上のライブラリおよび/若しくは表によって)機能する。置き換えは、任意選択で、例えば、ファームウェアの保持に割り振られた(例えばファームウェアを記憶するのに使用される)不揮発性(フラッシュメモリなど)に書き込む(上書きする)ことを含む。
【0025】
一部の実施形態では、NVM内の様々なサイズの量の圧縮データにアクセスすることにより、ある使用シナリオでは記憶効率が改善される。例えば、SSDコントローラは、コンピューティングホストから(例えばディスク書き込みコマンドに関連した)(圧縮されていない)データを受け取り、データを圧縮し、データをフラッシュメモリへ記憶する。コンピューティングホストからの(例えばディスク読み出しコマンドに関連した)その後の要求に応答して、SSDコントローラはフラッシュメモリから圧縮データを読み出し、圧縮データを解凍し、解凍されたデータをコンピューティングホストに提供する。圧縮データは、様々なサイズの量に従ってフラッシュメモリに記憶され、各量のサイズは、例えば、圧縮アルゴリズム、動作モード、様々なデータに関する圧縮有効性により変動する。SSDコントローラは、一部は、含まれるマップ表を調べて(1つまたは複数の)ヘッダがフラッシュメモリのどこに記憶されているか確認することによってデータを解凍する。SSDコントローラは、適切な(圧縮)データがフラッシュメモリのどこに記憶されているか確認するためにフラッシュメモリから得た(1つまたは複数の)ヘッダをパースする。SSDコントローラは、コンピューティングホストに提供すべき解凍データを生成するために、フラッシュメモリからの適切なデータを解凍する。本出願では、「解凍する(uncompress)」(およびその変形)は、「伸張する(decompress)」(およびその変形)と同義である。
【0026】
様々な実施形態では、SSDコントローラは、コンピューティングホストとインターフェースするためのホストインターフェースと、フラッシュメモリといったNVMとインターフェースするためのインターフェースと、各インターフェースを制御し、圧縮および解凍と共に、低レベル誤り訂正、高レベル誤り訂正、ならびに独立シリコン素子を用いた動的高レベル冗長性モード管理を行う(および/または行うことの様々な態様を制御する)ための回路とを含む。
【0027】
様々な実施形態によれば、あるホストインターフェースは、USBインターフェース規格、CFインターフェース規格、MMCインターフェース規格、SDインターフェース規格、メモリ・スティック・インターフェース規格、xDピクチャ・カード・インターフェース規格、IDEインターフェース規格、SATAインターフェース規格、SCSIインターフェース規格、SASインターフェース規格、およびPCIeインターフェース規格のうちの1つ若しくはそれ以上と適合する。様々な実施形態によれば、コンピューティングホストは、コンピュータ、ワークステーションコンピュータ、サーバコンピュータ、ストレージサーバ、PC、ラップトップコンピュータ、ノートブックコンピュータ、ネットブックコンピュータ、PDA、メディアプレーヤ、メディアレコーダ、デジタルカメラ、セルラハンドセット、コードレス電話機ハンドセット、および電子ゲームのうちの全部または任意の部分である。一部の実施形態では、インターフェースホスト(SAS/SATAブリッジなど)は、コンピューティングホストおよび/またはコンピューティングホストへのブリッジとして動作する。
【0028】
様々な実施形態によれば、あるSSDは、HDD、CDドライブ、DVDドライブといった磁気的不揮発性記憶および/または光学的不揮発性記憶によって使用されるフォームファクタ、電気的インターフェース、および/またはプロトコルと適合する。様々な実施形態では、SSDは、0以上のパリティ符号、0以上のRS符号、0以上のBCH符号、0以上のビタビ符号または他のトレリス符号、および0以上のLDPC符号の様々な組み合わせを使用する。
【0029】
例示的な実施形態
詳細な記載に対する導入を締めくくる際に続くものは、「ECs」(例示的な組み合わせ)として明示的に列挙される少なくとも一部の例示的な実施形態を含む例示的な実施形態を集めたものであり、本明細書において記載される概念に従った様々な実施形態の種類の追加的な記載を提供する。これらの例は、互いに排他的、網羅的、又は制限的であることを意味せず、本発明はこれらの例示的な実施形態には限定されず、刊行された特許請求の範囲及びその均等物の範囲内の全ての可能な改変及び変化形を含む
EC1)方法であって、
(a)現在の選択識別情報と関連付けられた現在のファームウェアに従ってデバイスを動作させる工程であって、デバイスと通信するコンピューティングホストに当該現在の選択識別情報を返す工程を有するものである、前記(a)の動作させる工程と、
(b)前記(a)の工程の後、前記デバイスにおいて、新しい選択識別情報と関連付けられた新しいファームウェアを受け取る工程であって、当該新しい選択識別情報は現在の選択識別情報のそれぞれの要素に対応する1若しくはそれ以上の要素を有し、新しい選択識別情報の要素のうちの少なくとも1つは、現在の選択識別情報の対応する要素とは異なる値を有するものである、前記受け取る工程と、
(c)前記(b)の工程の後、前記新しいファームウェアに従ってデバイスを動作させる工程であって、前記現在の選択識別情報をコンピューティングホストに返す工程を有するものである、前記(c)の動作させる工程と、
(d)(b)の工程の後、前記新しい選択識別情報の可視性の遅延を終了させるイベントに応答して、前記新しいファームウェアに従って前記デバイスを動作させる工程であって、前記新しい選択識別情報をコンピューティングホストに返す工程を有するものである(d)の動作させる工程と
を有する方法。
【0030】
EC2)EC1記載の方法において、前記3つの返す工程は、各々、シリアル・アドバンスド・テクノロジ・アタッチメント(SATA)IDENTIFYタイプのコマンドのそれぞれのインスタンスに応答したものである方法。
【0031】
EC3)EC1記載の方法において、前記3つの返す工程は、各々、小型コンピュータ・システム・インターフェース(SCSI)重要製品データ(VPD)読み取りタイプのコマンドのそれぞれのインスタンスに応答したものである方法。
【0032】
EC4)EC1記載の方法において、前記3つの返す工程は、各々、前記コンピューティングホストからの1若しくはそれ以上のタイプのコマンドのうちの特定の1つのインスタンスに応答したものであり、当該特定のタイプのコマンドは、前記(c)の返す工程で新しい選択識別情報が返された場合、前記コンピューティングホスト上で実行されているオペレーティングシステム(OS)に回復不能の誤りが発生するタイプのコマンドである方法。
【0033】
EC5)EC4記載の方法において、前記オペレーティングシステムはWindows(登録商標)オペレーティングシステムの1バージョンを有する方法。
【0034】
EC6)EC4記載の方法において、前記特定のタイプのコマンドは、シリアル・アドバンスド・テクノロジ・アタッチメント(SATA)IDENTIFYタイプのコマンドを有する方法。
【0035】
EC7)EC4記載の方法において、前記特定のタイプのコマンドは、小型コンピュータ・システム・インターフェース(SCSI)重要製品データ(VPD)読み取りタイプのコマンドを有する方法。
【0036】
EC8)EC4記載の方法において、特定のタイプのコマンドは、シリアル小型コンピュータ・システム・インターフェース(シリアルSCSI)(SAS)重要製品データ(VPD)読み取りタイプのコマンドを有する方法。
【0037】
EC9)EC1記載の方法において、
前記新しいファームウェアは第1の新しいファームウェアであり、前記新しい選択識別情報は第1の新しい選択識別情報であり、さらに、
(e)前記(c)の工程の後、第2の新しい選択識別情報と関連付けられた第2の新しいファームウェアを受け取る工程と、
(f)前記(e)の工程の後、第2の新しいファームウェアに従ってデバイスを動作させる工程であって、前記現在の選択識別情報をコンピューティングホストに返す工程を有するものである、前記(f)の動作させる工程と
を有するものである方法。
【0038】
EC10)EC9記載の方法において、前記4つの返す工程は、各々、前記コンピューティングホストからの1若しくはそれ以上タイプのコマンドのうちの特定の1つのインスタンスに応答したものであり、当該特定のタイプのコマンドは、前記(f)の返す工程で新しい選択識別情報が返された場合、前記コンピューティングホスト上で実行されているオペレーティングシステム(OS)に回復不能の誤りが発生するタイプのコマンドである方法。
【0039】
EC11)EC10記載の方法において、前記特定のタイプのコマンドは、シリアル・アドバンスド・テクノロジ・アタッチメント(SATA)IDENTIFYタイプのコマンドを有する方法。
【0040】
EC12)EC10記載の方法において、前記特定のタイプのコマンドは、小型コンピュータ・システム・インターフェース(SCSI)重要製品データ(VPD)読み取りタイプのコマンドを有する方法。
【0041】
EC13)EC10記載の方法において、前記特定のタイプのコマンドは、シリアル小型コンピュータ・システム・インターフェース(シリアルSCSI)(SAS)重要製品データ(VPD)読み取りタイプのコマンドを有する方法。
【0042】
EC14)EC1記載の方法において、前記現在の選択識別情報は現在の他の識別情報と組み合わさった現在の選択識別情報であり、前記(a)の返す工程は、現在の他の識別情報と組み合わさった現在の選択識別情報を返すものである方法。
【0043】
EC15)EC1記載の方法において、新しい識別情報は新しい他の識別情報と組み合わさった新しい選択識別情報であり、前記(c)の返す工程は、現在の他の識別情報と組み合わさった新しい選択識別情報を返すことによって現在の選択識別情報を返す方法。
【0044】
EC16)EC1記載の方法において、
現在の選択識別情報は現在の他の識別情報と組み合わさった現在の選択識別情報であり、前記(a)の返す工程は、現在の他の識別情報と組み合わさった現在の選択識別情報を返し、
新しい識別情報は新しい他の識別情報と組み合わさった新しい選択識別情報であり、新しい識別情報は現在の識別情報のそれぞれの要素に対応する1若しくはそれ以上の要素を有し、新しい他の識別情報は現在の他の識別情報のそれぞれの要素に対応する1若しくはそれ以上の要素を有し、前記(c)の返す工程は、現在の他の識別情報と組み合わさった新しい選択識別情報を返すことによって現在の選択識別情報を返す方法。
【0045】
EC17)EC1記載の方法において、さらに、
現在のファームウェアの少なくとも一部分を実行し、および/またはダウンロードして現在のファームウェアと現在の選択識別情報との間の関連付けを形成する工程と、
新しいファームウェアの少なくとも一部分を実行し、および/またはダウンロードして新しいファームウェアと新しい選択識別情報との間の関連付けを形成する工程と
を有するものである方法。
【0046】
EC18)EC1記載の方法において、新しい選択識別情報の可視性の遅延を終了させるイベントは、
デバイスが電源サイクルされること、
デバイスの全部または任意の部分がある電力モードから別の電力モードに遷移すること、
デバイスがベンダ特有のコマンドを受け取ること、
デバイスがファームウェア更新の一部として特定のパラメータおよび/またはコードを受け取ること、ならびに
デバイスをホストに接続するリンクがリセットされること
のうちの任意の1若しくはそれ以上を有する方法。
【0047】
EC19)EC1記載の方法において、
現在の選択識別情報は現在のファームウェア改訂識別子であり、
新しい選択識別情報は新しいファームウェア改訂識別子であり、
前記3つの返す工程は、各々、シリアル・アドバンスド・テクノロジ・アタッチメント(SATA)IDENTIFYコマンドのインスタンスに応答したものである方法。
【0048】
EC20)EC1記載の方法において、
現在の選択識別情報は現在のファームウェア改訂識別子であり、
新しい選択識別情報は新しいファームウェア改訂識別子であり、
前記3つの返す工程は、各々、重要製品データ(VPD)読み取りコマンドのインスタンスに応答したものである方法。
【0049】
EC21)EC20記載の方法において、読み取りは小型コンピュータ・システム・インターフェース(SCSI)読み取りを有する方法。
【0050】
EC22)EC20記載の方法において、読み取りはシリアル小型コンピュータ・システム・インターフェース(シリアルSCSI)(SAS)読み取りを有する方法。
【0051】
EC23)EC1記載の方法において、
現在の選択識別情報はプロトコル互換性レベルであり、
新しい選択識別情報はプロトコル互換性レベルである方法。
【0052】
EC24)EC1記載の方法において、さらに、
コンピューティングホストを、デバイスから現在の選択識別情報を受け取り、および/または受け取った現在の選択識別情報をデバイスに提供するように動作させる工程を有するものである方法。
【0053】
EC25)EC1記載の方法において、さらに、
現在の選択識別情報の少なくとも一部分を1若しくはそれ以上の不揮発性メモリに記憶する工程を有するものである方法。
【0054】
EC26)EC25記載の方法において、SSDコントローラはストレージインターフェース規格と適合したストレージインターフェースを有し、コンピューティングホストとデバイスとの間の通信はストレージインターフェースを介したものである方法。
【0055】
EC27)EC1記載の方法において、選択識別情報はファームウェア改訂識別子を有する方法。
【0056】
EC28)EC1記載の方法において、選択識別情報はソフトウェア設定保存(SSP)の対象となる1若しくはそれ以上のパラメータを有する方法。
【0057】
EC29)EC1記載の方法において、受け取る工程は、新しい選択識別情報の可視性の遅延を終了させるイベントまで現在の選択識別情報を保存する工程を有する方法。
【0058】
EC30)EC1記載の方法において、受け取る工程は、新しい選択識別情報の可視性の遅延を終了させるイベントまで現在の選択識別情報を変更されないよう保護する工程を有する方法。
【0059】
EC31)EC1記載の方法において、さらに、
新しい選択識別情報の可視性の遅延を終了させるイベントに応答して、現在の選択識別情報の変更からの保護を解除する工程を有するものである方法。
【0060】
EC32)EC1記載の方法において、受け取る工程は、現在の選択識別情報をコンピューティングホストに提供し、コンピューティングホストから現在の選択識別情報を復元する工程を有する方法。
【0061】
EC33)EC1記載の方法において、受け取る工程は新しいファームウェアをアクティブ化する工程を有する方法。
【0062】
EC34)EC1記載の方法において、デバイスは記憶デバイスを有する方法。
【0063】
EC35)EC1記載の方法において、デバイスはコントローラを有し、3つの動作させる動作および受け取る動作は、少なくとも一部はコントローラによって実行される方法。
【0064】
EC36)EC1記載の方法において、コンピューティグホストとデバイスとの間の通信は、ストレージインターフェース規格と適合したストレージインターフェースを介したものである方法。
【0065】
EC37)EC1記載の方法において、デバイスはソリッドステートディスク(SSD)を有する方法。
【0066】
EC38)EC37記載の方法において、SSDはSSDコントローラを有し、3つの動作させる動作および受け取る動作は、少なくとも一部はSSDコントローラによって行われる方法。
【0067】
EC39)EC38記載の方法において、SSDコントローラは不揮発性メモリインターフェースを有し、記憶される部分の記憶は、少なくとも一部は不揮発性メモリインターフェースを介したものである方法。
【0068】
EC40)EC38記載の方法において、SSDは1若しくはそれ以上の不揮発性メモリをさらに有するものである方法。
【0069】
EC41)EC40記載の方法において、SSDコントローラは不揮発性メモリとインターフェースする不揮発性メモリインターフェースを有する方法。
【0070】
EC42)方法であって、
デバイスにおいて、コンピューティングホストから第1のファームウェアを受け取る工程と、
前記デバイスにおいて、前記コンピューティングホストから第2のファームウェアを受け取る工程であって、当該第2のファームウェアを受け取る工程は前記第1のファームウェアを受け取る工程の後で行われるものである、前記第2のファームウェアを受け取る工程と、
前記第2のファームウェアを実行している間に、前記コンピューティングホストからの特定のタイプのコマンドに応答して、前記コンピューティングホストに、前記第1のファームウェアおよび前記第2のファームウェアの任意の組み合わせに対するアクセスを提供する工程と
を有する方法。
【0071】
EC43)EC42記載の方法において、前記アクセスは、前記コンピューティングホスト上で実行されているオペレーティングシステム(OS)に識別情報を返す工程を有し、当該識別情報は、前記第1のファームウェアの実行によって決定される任意の情報と、前記第2のファームウェアの実行によって決定される任意の情報とを有し、前記第1のファームウェアの実行によって決定される情報は、前記第2のファームウェアの実行によって決定される対応する情報が代わりに返された場合、前記オペレーティングシステムに回復不能の誤りが発生するタイプの情報である方法。
【0072】
EC44)EC43記載の方法において、オペレーティングシステムはWindows(登録商標)オペレーティングシステムの1バージョンを有する方法。
【0073】
EC45)EC44記載の方法において、特定のタイプのコマンドは、シリアル・アドバンスド・テクノロジ・アタッチメント(SATA)IDENTIFYタイプのコマンド、または小型コンピュータ・システム・インターフェース(SCSI)重要製品データ(VPD)読み取りタイプのコマンドを有する方法。
【0074】
EC46)EC42記載の方法において、前記アクセスは、前記コンピューティングホスト上で実行されているオペレーティングシステム(OS)に識別情報を返す工程を有し、当該識別情報は、前記第1のファームウェアの実行によって決定される任意の情報と第2のファームウェアの実行によって決定される任意の情報とを有し、前記特定のタイプのコマンドは、シリアル・アドバンスド・テクノロジ・アタッチメント(SATA)IDENTIFYタイプのコマンド、または小型コンピュータ・システム・インターフェース(SCSI)重要製品データ(VPD)読み取りタイプのコマンドを有する方法。
【0075】
EC47)EC46記載の方法において、前記第1のファームウェアの実行によって決定される情報は、前記第2のファームウェアの実行によって決定される、対応情報が代わりに返された場合、前記オペレーティングシステムに回復不能の誤りが発生するタイプの情報である方法。
【0076】
EC48)EC47記載の方法において、オペレーティングシステムはWindows(登録商標)オペレーティングシステムの1バージョンを有する方法。
【0077】
EC49)EC42記載の方法において、前記アクセスを提供する工程は、前記アクセスされたファームウェアに従って、前記デバイスを起動させる工程を有する方法。
【0078】
EC50)EC42記載の方法において、前記アクセスを提供する工程は、前記アクセスされたファームウェアのファームウェアイメージの全部または任意の部分を読み取り、および/または書き込む工程を有する方法。
【0079】
EC51)EC42記載の方法において、アクセスを提供する工程は、アクセスされたファームウェアの全部または任意の部分の1若しくはそれ以上の実行結果の全部または任意の部分を読み取り、および/または書き込む工程を有する方法。
【0080】
EC52)EC51記載の方法において、結果は重要製品データ(VPD)の全部または任意の部分のイメージを含む方法。
【0081】
EC53)EC51記載の方法において、結果はファームウェア改訂識別子を含む方法。
【0082】
EC54)EC51記載の方法において、結果はソフトウェア設定保存(SSP)の対象となる1若しくはそれ以上のパラメータを含む方法。
【0083】
EC55)EC42記載の方法において、アクセスを提供する工程は、1若しくはそれ以上の不揮発性メモリ内の1若しくはそれ以上のデータ構造を管理する工程を有する方法。
【0084】
EC56)方法であって、
デバイスにおいて、コンピューティングホストから第1のファームウェアを受け取る工程であって、当該第1のファームウェアは第1のファームウェア識別情報と関連付けられているものである、前記第1のファームウェアを受け取る工程と、
前記デバイスにおいて、前記コンピューティングホストから第2のファームウェアを受け取る工程であって、当該第2のファームウェアを受け取る工程は前記第1のファームウェアを受け取る工程の後で行われるものであり、前記第2のファームウェアは第2のファームウェア識別情報と関連付けられているものである、前記第2のファームウェアを受け取る工程と、
前記デバイスが前記コンピューティングホストに前記第1のファームウェア識別情報を返す工程であって、当該返す工程は、前記コンピューティングホストからの特定のタイプのコマンドに応答して実行されるものであり、前記デバイスが前記第2のファームウェアを実行している間であって、且つ特定のイベントが発生する前に実行されるものである、前記第1のファームウェア識別情報を返す工程と
を有する方法。
【0085】
EC57)EC56記載の方法において、第1のファームウェア識別情報を返す工程により、コンピューティングホスト上で実行されているオペレーティングシステム(OS)は、デバイスが第1のファームウェアを実行している間中、および特定のイベントまでの第2のファームウェアを実行している間に、再起動せずに実行を継続することが可能になるものである方法。
【0086】
EC58)EC57記載の方法において、前記オペレーティングシステムはWindows(登録商標)オペレーティングシステムの1バージョンを有する方法。
【0087】
EC59)EC57記載の方法において、前記特定のタイプのコマンドは、シリアル・アドバンスド・テクノロジ・アタッチメント(SATA)IDENTIFYタイプのコマンドを有する方法。
【0088】
EC60)EC57記載の方法において、前記特定のタイプのコマンドは、シリアル小型コンピュータ・システム・インターフェース(シリアルSCSI)(SAS)重要製品データ(VPD)読み取りタイプのコマンドを有する方法。
【0089】
EC61)EC56記載の方法において、第1のファームウェア識別情報を返す工程により、前記コンピューティングホスト上で実行されているオペレーティングシステム(OS)は、デバイスが第1のファームウェアを実行している間中、および特定のイベントまでの第2のファームウェアを実行している間に、返されたファームウェア改訂識別子の値の変更に応答して誤りを検出することなく実行を継続することが可能になるものである方法。
【0090】
EC62)EC61記載の方法において、前記オペレーティングシステムはWindows(登録商標)オペレーティングシステムの1バージョンを有する方法。
【0091】
EC63)EC61記載の方法において、前記特定のタイプのコマンドは、シリアル・アドバンスド・テクノロジ・アタッチメント(SATA)IDENTIFYタイプのコマンドを有する方法。
【0092】
EC64)EC61記載の方法において、前記特定のタイプのコマンドは、シリアル小型コンピュータ・システム・インターフェース(シリアルSCSI)(SAS)重要製品データ(VPD)読み取りタイプのコマンドを有する方法。
【0093】
EC65)EC56記載の方法において、前記デバイスはソリッドステートディスク(SSD)を有し、当該ソリッドステートディスクは、前記第1のファームウェア、前記第1のファームウェア識別情報、前記第2のファームウェア、および前記第2のファームウェア識別情報の全部または任意の組み合わせの全部または任意の部分を記憶するように当該ソリッドステートディスクの1若しくはそれ以上の不揮発性メモリを管理することが可能なコントローラを有する方法。
【0094】
EC66)EC56記載の方法において、前記特定のイベントは、
デバイスが電源サイクルされること、
デバイスの全部または任意の部分がある電力モードから別の電力モードに遷移すること、
デバイスがベンダ特有のコマンドを受け取ること、
デバイスがファームウェア更新の一部として特定のパラメータおよび/またはコードを受け取ること、ならびに
デバイスをホストに接続するリンクがリセットされること
のうちの任意の1若しくはそれ以上を有する方法。
【0095】
EC67)EC56記載の方法において、
前記第1のファームウェア識別情報は第1のファームウェア改訂識別子を有し、
前記第2のファームウェア識別情報は第2のファームウェア改訂識別子を有する方法。
【0096】
EC68)EC56記載の方法において、
前記第1のファームウェア識別情報は第1のプロトコル互換性レベル識別子を有し、
前記第2のファームウェア識別情報は第2のプロトコル互換性レベル識別子を有する方法。
【0097】
EC69)EC56記載の方法において、
前記第1のファームウェア識別情報は、ソフトウェア設定保存(SSP)の対象となる1若しくはそれ以上のパラメータに対応する第1の値セットを有し、
前記第2のファームウェア識別情報は該パラメータに対応する第2の値セットを有する方法。
【0098】
EC70)方法であって、
デバイスにおいて、コンピューティングホストから第1のファームウェアを受け取る工程であって、当該第1のファームウェアは第1のファームウェア識別情報と関連付けられているものである、前記第1のファームウェアを受け取る工程と、
前記デバイスにおいて、前記コンピューティングホストから第2のファームウェアを受け取る工程であって、当該第2のファームウェアを受け取る工程は、前記第1のファームウェアを受け取る工程の後で行われるものであり、前記第2のファームウェアは第2のファームウェア識別情報と関連付けられているものである、前記第2のファームウェアを受け取る工程と、
前記デバイスが前記コンピューティングホストに前記第1のファームウェア識別情報を返す工程であって、当該返す工程は、前記コンピューティングホストからの第1のタイプのコマンドに応答して実行されるものであり、前記デバイスが前記第2のファームウェアを実行している間に実行されるものである、前記第1のファームウェア識別情報を返す工程と、
前記デバイスが前記コンピューティングホストに前記第2のファームウェア識別情報を返す工程であって、当該返す工程は、前記コンピューティングホストからの第2のタイプのコマンドに応答して実行されるものであり、前記デバイスが第2のファームウェアを実行している間に実行されるものである、前記第2のファームウェア識別情報を返す工程と
を有する方法。
【0099】
EC71)EC70記載の方法において、
第1のタイプのコマンドは識別読み取りタイプのコマンドであり、
第2のタイプのコマンドはベンダ特有のタイプのコマンドである方法。
【0100】
EC72)EC71記載の方法において、前記ベンダ特有のタイプのコマンドはベンダ特有のファームウェア識別情報読み取りタイプのコマンドを有する方法。
【0101】
EC73)EC71記載の方法において、前記識別読み取りタイプのコマンドは、シリアル・アドバンスド・テクノロジ・アタッチメント(SATA)IDENTIFYタイプのコマンドを有する方法。
【0102】
EC74)EC71記載の方法において、前記識別読み取りタイプのコマンドは、シリアル小型コンピュータ・システム・インターフェース(シリアルSCSI)(SAS)重要製品データ(VPD)読み取りタイプのコマンドを有する方法。
【0103】
EC75)EC71記載の方法において、前記識別読み取りタイプのコマンドは、前記第2のファームウェア識別情報が前記第1のファームウェア識別情報の代わりに返されるように処理されるときに、前記コンピューティングホスト上で実行されているオペレーティングシステム(OS)に回復不能の誤りを発生させるタイプのコマンドを有する方法。
【0104】
EC76)EC75記載の方法において、オペレーティングシステムはWindows(登録商標)オペレーティングシステムの1バージョンを有する方法。
【0105】
EC77)EC70記載の方法において、前記第1のファームウェア識別情報を返す工程により、前記コンピューティングホスト上で実行されているオペレーティングシステム(OS)は、前記デバイスが前記第1のファームウェアを実行し、前記第2のファームウェアを実行している間中、再起動せずに実行を継続することが可能になるものである方法。
【0106】
EC78)EC77記載の方法において、前記オペレーティングシステムはWindows(登録商標)オペレーティングシステムの1バージョンを有する方法。
【0107】
EC79)EC77記載の方法において、前記特定のタイプのコマンドは、シリアル・アドバンスド・テクノロジ・アタッチメント(SATA)IDENTIFYタイプのコマンドを有する方法。
【0108】
EC80)EC77記載の方法において、前記特定のタイプのコマンドは、シリアル小型コンピュータ・システム・インターフェース(シリアルSCSI)(SAS)重要製品データ(VPD)読み取りタイプのコマンドを有する方法。
【0109】
EC81)EC70記載の方法において、前記第1のファームウェア識別情報を返す工程により、前記コンピューティングホスト上で実行されているオペレーティングシステム(OS)は、前記デバイスが前記第1のファームウェアを実行し、前記第2のファームウェアを実行している間中、返されたファームウェア改訂識別子の値の変更に応答して誤りを検出することなく実行を継続することが可能になるものである方法。
【0110】
EC82)EC81記載の方法において、前記オペレーティングシステムはWindows(登録商標)オペレーティングシステムの1バージョンを有する方法。
【0111】
EC83)EC81記載の方法において、前記特定のタイプのコマンドは、シリアル・アドバンスド・テクノロジ・アタッチメント(SATA)IDENTIFYタイプのコマンドを有する方法。
【0112】
EC84)EC81記載の方法において、前記特定のタイプのコマンドは、シリアル小型コンピュータ・システム・インターフェース(シリアルSCSI)(SAS)重要製品データ(VPD)読み取りタイプのコマンドを有する方法。
【0113】
EC85)EC70記載の方法において、前記デバイスはソリッドステートディスク(SSD)を有し、当該ソリッドステートディスクは、前記第1のファームウェア、前記第1のファームウェア識別情報、前記第2のファームウェア、および前記第2のファームウェア識別情報の全部または任意の組み合わせの全部または任意の部分を記憶するように当該ソリッドステートディスクの1若しくはそれ以上の不揮発性メモリを管理することが可能なコントローラを有する方法。
【0114】
EC86)EC70記載の方法において、
前記第1のファームウェア識別情報は第1のファームウェア改訂識別子を有し、
前記第2のファームウェア識別情報は第2のファームウェア改訂識別子を有する方法。
【0115】
EC87)EC70記載の方法において、
前記第1のファームウェア識別情報は第1のプロトコル互換性レベル識別子を有し、
前記第2のファームウェア識別情報は第2のプロトコル互換性レベル識別子を有する方法。
【0116】
EC88)EC70記載の方法において、
前記第1のファームウェア識別情報は、ソフトウェア設定保存(SSP)の対象となる1若しくはそれ以上のパラメータに対応する第1の値セットを有し、
前記第2のファームウェア識別情報は当該パラメータに対応する第2の値セットを有する方法。
【0117】
EC89)方法であって、
(a)現在のファームウェア改訂識別子と関連付けられた現在のファームウェアに従って記憶デバイスコントローラを動作させる工程であって、当該記憶デバイスコントローラを有する記憶デバイスと通信するコンピューティングホストに当該現在のファームウェア改訂識別子を返す工程を有するものである、前記(a)の動作させる工程と、
(b)前記(a)の工程の後、少なくとも部分的に記憶デバイスコントローラを介して、現在のファームウェア改訂識別子とは異なる新しいファームウェア改訂識別子と関連付けられた新しいファームウェアを受け取る工程と、
(c)前記(b)の工程の後、前記新しいファームウェアに従って前記記憶デバイスコントローラを動作させる工程であって、前記現在のファームウェア改訂識別子をコンピューティングホストに返す工程を有するものである、前記(c)の動作させる工程と、
(d)前記(b)の工程の後、電源サイクルに応答して、前記新しいファームウェアに従って前記記憶デバイスコントローラを動作させる工程であって、前記新しいファームウェア改訂識別子をコンピューティングホストに返す工程を有するものである、前記(d)の動作させる工程と
を有し、
(f)前記記憶デバイスは、前記新しいファームウェアの少なくとも一部を記憶することが可能な不揮発性メモリ(NVM)を有し、
(g)前記3つの返す工程は、各々、前記コンピューティングホストからの複数のタイプのコマンドのうちの特定の1つのインスタンスに応答したものであり、当該特定のタイプのコマンドにより、前記(c)の返す工程で前記新しいファームウェア改訂識別子が返された場合、前記コンピューティングホスト上で実行されているオペレーティングシステム(OS)に回復不能の誤りが発生するものである方法。
【0118】
EC90)EC89記載の方法において、前記不揮発性メモリはフラッシュメモリを有する方法。
【0119】
EC91)EC89記載の方法において、前記記憶デバイスは不揮発性メモリを有するソリッドステートディスク(SSD)を有する方法。
【0120】
EC92)EC91記載の方法において、前記不揮発性メモリはフラッシュメモリを有する方法。
【0121】
EC93)EC89記載の方法において、前記記憶デバイスは不揮発性メモリを有するハード・ディスク・ドライブ(HDD)を有する方法。
【0122】
EC94)EC89記載の方法において、前記オペレーティングシステムはWindows(登録商標)オペレーティングシステムの1バージョンを有する方法。
【0123】
前記
EC95)EC89記載の方法において、特定のタイプのコマンドは、シリアル・アドバンスド・テクノロジ・アタッチメント(SATA)IDENTIFYタイプのコマンドを有する方法。
【0124】
EC96)EC89記載の方法において、前記特定のタイプのコマンドは、小型コンピュータ・システム・インターフェース(SCSI)重要製品データ(VPD)読み取りタイプのコマンドを有する方法。
【0125】
EC97)EC89記載の方法において、前記特定のタイプのコマンドは、シリアル小型コンピュータ・システム・インターフェース(シリアルSCSI)(SAS)重要製品データ(VPD)読み取りタイプのコマンドを有する方法。
【0126】
EC98)EC89記載の方法において、前記受け取る工程は、電源サイクルまで現在のファームウェア改訂識別子を保存する工程を有する方法。
【0127】
EC99)EC89記載の方法において、前記受け取る工程は、電源サイクルまで現在のファームウェア改訂識別子を変更されないよう保護する工程を有する方法。
【0128】
EC100)EC89記載の方法において、前記受け取る工程は、前記現在のファームウェア改訂識別子を前記コンピューティングホストに提供し、前記コンピューティングホストから前記現在のファームウェア改訂識別子を復元する工程を有する方法。
【0129】
EC101)方法であって、
コンピューティングホストに接続可能な記憶デバイスにおいて、記憶デバイスの不揮発性メモリ(NVM)を、第1のファームウェア、第1のファームウェア改訂識別子、第2のファームウェア、および第2のファームウェア改訂識別子を記憶するように管理する工程と、
前記記憶デバイスにおいて、前記コンピューティングホストから前記第1のファームウェアを受け取る工程であって、前記第1のファームウェアは前記第1のファームウェア改訂識別子と関連付けられているものである、前記第1のファームウェアを受け取る工程と、
前記記憶デバイスにおいて、前記コンピューティングホストから前記第2のファームウェアを受け取る工程であって、当該受け取る工程は、前記第1のファームウェアを受け取る工程の後で実行されるものであり、前記第2のファームウェアは前記第2のファームウェア改訂識別子と関連付けられているものである、前記第2のファームウェアを受け取る工程と、
前記記憶デバイスが前記コンピューティングホストに前記第1のファームウェア改訂識別子を返す工程であって、当該返す工程は、前記コンピューティングホストからの特定のタイプのコマンドに応答するものであり、前記記憶デバイスが前記第2のファームウェアを実行している間であって、且つ特定のイベントが発生する前に実行されるものである、前記第1のファームウェア改訂識別子を返す工程と
を有し、
前記第1のファームウェア改訂識別子を返す工程により、前記コンピューティングホスト上で実行されているオペレーティングシステム(OS)は、前記記憶デバイスが前記第1のファームウェアを実行している間中、および特定のイベントが発生するまで前記第2のファームウェアを実行している間に、返されたファームウェア改訂識別子の値の変更に応答して誤りを検出することなく実行を継続することが可能になるものである方法。
【0130】
EC102)EC101記載の方法において、前記不揮発性メモリはフラッシュメモリを有する方法。
【0131】
EC103)EC101記載の方法において、前記記憶デバイスは不揮発性メモリを有するソリッドステートディスク(SSD)を有する方法。
【0132】
EC104)EC103記載の方法において、前記不揮発性メモリはフラッシュメモリを有する方法。
【0133】
EC105)EC101記載の方法において、前記記憶デバイスは不揮発性メモリを有するハード・ディスク・ドライブ(HDD)を有する方法。
【0134】
EC106)EC101記載の方法において、前記特定のイベントは記憶デバイスの電源サイクルである方法。
【0135】
EC107)EC101記載の方法において、さらに、
前記第2のファームウェアを実行している間であって、且つ特定のイベントが発生した後で、前記コンピューティングホストからの特定のタイプのコマンドに応答して、前記コンピューティングホストに前記第2のファームウェア改訂識別子を返す工程を有するものである方法。
【0136】
EC108)EC101記載の方法において、前記オペレーティングシステムはWindows(登録商標)オペレーティングシステムの1バージョンを有する方法。
【0137】
EC109)EC101記載の方法において、前記特定のタイプのコマンドは、シリアル・アドバンスド・テクノロジ・アタッチメント(SATA)IDENTIFYタイプのコマンドを有する方法。
【0138】
EC110)EC101記載の方法において、前記特定のタイプのコマンドは、シリアル小型コンピュータ・システム・インターフェース(シリアルSCSI)(SAS)重要製品データ(VPD)読み取りタイプのコマンドを有する方法。
【0139】
EC111)方法であって、
記憶デバイスの不揮発性メモリ(NVM)を、第1のファームウェア、第1のファームウェア改訂識別子、第2のファームウェア、および第2のファームウェア改訂識別子を記憶するように管理する工程であって、当該記憶デバイスはコンピューティングホストに接続可能なものである、前記管理する工程と、
前記記憶デバイスにおいて、前記コンピューティングホストから前記第1のファームウェアを受け取る工程であって、前記第1のファームウェアは前記第1のファームウェア改訂識別子と関連付けられているものである、前記第1のファームウェアを受け取る工程と、
前記記憶デバイスにおいて、前記コンピューティングホストから前記第2のファームウェアを受け取る工程であって、当該受け取る工程は、前記第1のファームウェアを受け取る工程の後で実行されるものであり、前記第2のファームウェアは前記第2のファームウェア改訂識別子と関連付けられているものである、前記第2のファームウェアを受け取る工程と、
前記記憶デバイスが前記コンピューティングホストに前記第1のファームウェア改訂識別子を返す工程であって、当該返す工程は、前記コンピューティングホストからの第1のタイプのコマンドに応答するものであり、前記記憶デバイスが前記第2のファームウェアを実行している間に行われるものである、前記第1のファームウェア改訂識別子を返す工程と、
前記記憶デバイスが前記コンピューティングホストに、前記第2のファームウェア改訂識別子を返す工程であって、前記第1のファームウェア改訂識別子を返す工程は、前記コンピューティングホストからの第2のタイプのコマンドに応答するものであり、前記記憶デバイスが第2のファームウェアを実行している間に行われるものである、前記第2のファームウェア改訂識別子を返す工程と
を有し、
前記第1タイプのコマンドは識別読み取りタイプのコマンドであり、
前記第2タイプのコマンドはベンダ特有のタイプのコマンドである
方法。
【0140】
EC112)EC111記載の方法において、前記不揮発性メモリはフラッシュメモリを有する方法。
【0141】
EC113)EC111記載の方法において、前記記憶デバイスは不揮発性メモリを有するソリッドステートディスク(SSD)を有する方法。
【0142】
EC114)EC113記載の方法において、前記不揮発性メモリはフラッシュメモリを有する方法。
【0143】
EC115)EC111記載の方法において、前記記憶デバイスは不揮発性メモリを有するハード・ディスク・ドライブ(HDD)を有する方法。
【0144】
EC116)EC111記載の方法において、前記ベンダ特有のタイプのコマンドはベンダ特有のファームウェア識別情報読み取りタイプのコマンドを有する方法。
【0145】
EC117)EC111記載の方法において、前記識別読み取りタイプのコマンドは、シリアル・アドバンスド・テクノロジ・アタッチメント(SATA)IDENTIFYタイプのコマンドを有する方法。
【0146】
EC118)EC111記載の方法において、前記識別読み取りタイプのコマンドは、シリアル小型コンピュータ・システム・インターフェース(シリアルSCSI)(SAS)重要製品データ(VPD)読み取りタイプのコマンドを有する方法。
【0147】
EC119)EC111記載の方法において、前記識別読み取りタイプのコマンドは、前記第2のファームウェア改訂識別子が前記第1のファームウェア改訂識別子の代わりに返されるように処理されるときに、前記コンピューティングホスト上で実行されているオペレーティングシステム(OS)に回復不能の誤りを発生させるタイプのコマンドを有する方法。
【0148】
EC120)EC119記載の方法において、前記オペレーティングシステムはWindows(登録商標)オペレーティングシステムの1バージョンを有する方法。
【0149】
EC121)システムであって、
(a)複数のファームウェアイメージのうちの選択された1つに従って実行する手段であって、当該複数のファームウェアイメージの各々は対応する識別子を有し、当該複数のファームウェアイメージは、それぞれのイメージに対応する現在のファームウェアイメージと新しいファームウェアイメージとを有するものであり、当該現在および新しいファームウェアイメージはそれぞれ対応する現在の識別子および新しい識別子を有するものである、前記実行する手段と、
(b)前記実行する手段を現在のファームウェアイメージである選択されたファームウェアイメージと共に使用し、当該使用中に、コンピューティングホストからの複数のタイプのコマンドのうちの特定の1つの第1のインスタンスに応答して、前記現在の識別子を返す手段と、
(c)前記(b)の手段の後に動作して、前記新しい識別子を有する前記新しいファームウェアイメージを受け取る手段と、
(d)前記(c)の手段の後に動作して、前記実行する手段を前記新しいファームウェアイメージである選択されたファームウェアイメージと共に使用し、当該使用中に、特定のタイプのコマンドの第2のインスタンスに応答して、前記現在の識別子を返す手段と、
(e)前記(b)の手段の後に電源サイクルに応答して動作する手段であって、前記実行する手段を前記新しいファームウェアイメージである選択されたファームウェアイメージと共に使用し、当該使用中に、特定のタイプのコマンドの第3のインスタンスに応答して、前記新しい識別子を返す手段と、
前記新しいファームウェアの少なくとも一部を記憶可能なフラッシュメモリと
を有し、
前記特定のタイプのコマンドは、
(i)第1の識別子の各々が前記特定のタイプのコマンドの第1のインスタンスの各々に応答して前記コンピューティングホストに返され、
(ii)第2の識別子の各々が特定のタイプのコマンドの第2のインスタンスの各々に応答して前記コンピューティングホストに返され、
(iii)前記第1の識別子の各々が返されるときと前記第2の識別子の各々が返されるときとの間に電源サイクルが行われない
場合、
前記第2の識別子の返しに応答して、前記コンピューティングホスト上で実行されているオペレーティングシステム(OS)に回復不能の誤りが発生するタイプのコマンドであるシステム。
【0150】
EC122)EC121記載のシステムにおいて、ソリッドステートディスク(SSD)の全部または任意の部分を有するシステム。
【0151】
EC123)EC121記載のシステムにおいて、前記オペレーティングシステムはWindows(登録商標)オペレーティングシステムの1バージョンを有し、前記特定のタイプのコマンドはシリアル・アドバンスド・テクノロジ・アタッチメント(SATA)IDENTIFYタイプのコマンドを有するシステム。
【0152】
EC124)EC121記載のシステムにおいて、前記オペレーティングシステムはWindows(登録商標)オペレーティングシステムの1バージョンを有し、前記特定のタイプのコマンドは、シリアル小型コンピュータ・システム・インターフェース(シリアルSCSI)(SAS)重要製品データ(VPD)読み取りタイプのコマンドを有するシステム。
【0153】
SSDコントローラを有し、またはこれに言及している前述のECのいずれかにおいて、SSDコントローラは単一の集積回路(IC)において実装されるEC。
【0154】
SSDコントローラおよび1若しくはそれ以上の不揮発性メモリを有し、またはこれらに言及している前述のECのいずれかにおいて、SSDコントローラおよび不揮発性メモリはSSDに具備されているEC。
【0155】
1若しくはそれ以上の不揮発性メモリを有し、またはこれに言及している前述のECのいずれかにおいて、1若しくはそれ以上の不揮発性メモリのうちの少なくとも1つは1若しくはそれ以上のフラッシュメモリを有するEC。
【0156】
SSDコントローラおよびコンピューティングホストを有し、またはこれらに言及している前述のECのいずれかにおいて、SSDコントローラは、ストレージインターフェース規格と適合し、コンピューティングホストに接続することができるようにしたストレージインターフェースを有するEC。
【0157】
SSDコントローラを有し、またはこれに言及している前述のECのいずれかにおいて、SSDコントローラは不揮発性メモリインターフェースを有するEC。
【0158】
不揮発性メモリインターフェースを有し、またはこれに言及している前述のECのいずれかにおいて、不揮発性メモリインターフェースはフラッシュ・メモリ・インターフェースを有するEC。
【0159】
SSDコントローラを有し、またはこれに言及している前述のECのいずれかにおいて、SSDコントローラはフラッシュ・メモリ・インターフェースを有するEC。
【0160】
1若しくはそれ以上のフラッシュメモリを有し、またはこれに言及している前述のECのいずれかにおいて、フラッシュメモリのうちの少なくとも1つは、
NANDフラッシュ技術記憶セル、および
NORフラッシュ技術記憶セル
のうちの1若しくはそれ以上を有するEC。
【0161】
1若しくはそれ以上のフラッシュメモリを有し、またはこれに言及している前述のECのいずれかにおいて、フラッシュメモリのうちの少なくとも1つは、
シングルレベルセル(SLC)フラッシュ技術記憶セル、および
マルチレベルセル(MLC)フラッシュ技術記憶セル
のうちの1若しくはそれ以上を有するEC。
【0162】
フラッシュ・メモリ・インターフェースを有し、またはこれに言及している前述のECのいずれかにおいて、フラッシュ・メモリ・インターフェースは、
オープンNANDフラッシュインターフェース(ONFI)、
トグルモードインターフェース、
デュアル・データ・レート(DDR)同期インターフェース、
同期インターフェース、および
非同期インターフェース
のうちの1若しくはそれ以上と適合するEC。
【0163】
ストレージインターフェース規格を有するか、又は参照する上記ECのうちのいずれかのECであって、前記ストレージインターフェース規格は、
ユニバーサル・シリアル・バス(Universal Serial Bus:USB)インターフェース規格と、
コンパクトフラッシュ(登録商標)(Compact Flash:CF)インターフェース規格と、
マルチメディアカード(MultiMediaCard:MMC)インターフェース規格と、
セキュアデジタル(Secure Digital:SD)インターフェース規格と、
メモリ・スティック・インターフェース規格と、
xDピクチャ・カード・インターフェース規格と、
内蔵ドライブエレクトロニクス(Integrated Drive Electronics:IDE)インターフェース規格と、
シリアル・アドバンスト・テクノロジー・アタッチメント(Serial Advanced Technology Attachment:SATA)インターフェース規格と、
エクスターナルSATA(eSATA)インターフェース規格と、
スモール・コンピュータ・システム・インターフェース(SCSI)インターフェース規格と、
シリアル接続スモール・コンピュータ・システム・インターフェース(SAS)インターフェース規格と、
ファイバー・チャンネル・インターフェース規格と、
イーサネット(登録商標)インターフェース規格と、
ペリフェラル・コンポーネント・インターコネクト・エキスプレス(Peripheral Component Interconnect express:PCIe)インターフェース規格と
のうちの1若しくはそれ以上を有するものであるストレージインターフェース規格を有するか、又は参照する上記ECのうちのいずれかのEC。
【0164】
EC146)計算ホストを有するか、又は参照する上記のECのうちのいずれかのECであって、前記計算ホストは、
コンピュータと、
ワークステーションコンピュータと、
サーバコンピュータと、
ストレージサーバと、
パーソナルコンピュータ(Personal Computer:PC)と、
ラップトップコンピュータと、
ノートブックコンピュータと、
ネットブックコンピュータと、
携帯端末(Personal Digital Assistant:PDA)と、
メディアプレーヤと、
メディアレコーダと、
デジタルカメラと、
セル方式送受話器と、
コードレス電話の送受話器と、
電子ゲームと
のうちの1若しくはそれ以上を有するものである計算ホストを有するか、又は参照する上記ECのうちのいずれかのEC。
【0165】
さらに別のECも企図されており、これらには、前述のECの全部または任意の部分の装置、システム、方法、手段プラス機能、およびコンピュータ可読媒体の類似物および/または変形が含まれる。
【0166】
システム
図1Aは、ホストから見たデバイスファームウェア更新の影響の管理を提供するSSDコントローラ100を含むSSD101の実施形態の選択された詳細を図示する。SSDコントローラはNVM要素(例えば、フラッシュメモリ)を介して実装される不揮発性ストレージなどの不揮発性ストレージを管理するためのものである。SSDコントローラ100は1若しくはそれ以上の外部インターフェース110を介してホスト(図示せず)に通信するように接続される。様々な実施形態に従って、外部インターフェース110は、SATAインターフェース、SASインターフェース、PICeインターフェース、ファイバー・チャンネル・インターフェース、イーサネット(登録商標)インターフェース(例えば、10ギガビットのイーサネット(登録商標))、上記のインターフェースのうちのいずれかの規格外版、若しくは特注のインターフェース、又はストレージ及び/又は通信機器及び/又は計算デバイスを相互接続するために使用されるその他任意の種類のインターフェースのうちの1若しくはそれ以上である。例えば、一部の実施形態において、SSDコントローラ100はSATAインターフェースとPCIeインターフェースとを含む。
【0167】
SSDコントローラ100は、さらに、1つ若しくはそれ以上のデバイスインターフェース190を介して、1つ若しくはそれ以上のフラッシュデバイス192といった、1つ若しくはそれ以上の記憶デバイスを含むNVM199に通信可能に接続されている。様々な実施形態によれば、デバイスインターフェース190は、非同期インターフェース、同期インターフェース、DDR同期インターフェース、ONFI2.2やONFI3.0互換インターフェースといったONFI互換インターフェース、トグルモード互換フラッシュインターフェース、上記のインターフェースのいずれかの非標準バージョン、カスタムインターフェース、または記憶デバイスに接続するのに使用される任意の他の種類のインターフェースのうちの1つ若しくはそれ以上である。
【0168】
各フラッシュデバイス192は、一部の実施形態では、1つ若しくはそれ以上の個々のフラッシュダイ194を有する。フラッシュデバイス192のうちの特定のフラッシュデバイスの種類に従って、特定のフラッシュデバイス192内の複数のフラッシュダイ194に、並列に、任意選択で、および/または選択的にアクセスすることができる。フラッシュデバイス192は、単に、SSDコントローラ100に通信可能に接続することができるようにした記憶デバイスの一種を表しているにすぎない。様々な実施形態では、SLC NANDフラッシュメモリ、MLC NANDフラッシュメモリ、NORフラッシュメモリ、多結晶シリコン若しくはシリコン窒化膜技術ベースの電荷蓄積セルを使用したフラッシュメモリ、2次元若しくは3次元技術ベースのフラッシュメモリ、読み出し専用メモリ、スタティック・ランダム・アクセス・メモリ、ダイナミック・ランダム・アクセス・メモリ、強磁性メモリ、相変化メモリ、レーストラックメモリ、ReRAM、または任意の他の種類のメモリデバイス若しくは記憶媒体といった、任意の種類の記憶デバイスを使用することができる。
【0169】
様々な実施形態によれば、デバイスインターフェース190は、1つのバスにつき1つ若しくはそれ以上のフラッシュデバイス192を有する1つ若しくはそれ以上のバス;グループ内のバスにおおむね並列にアクセスさせる、1つのバスにつき1つ若しくはそれ以上のフラッシュデバイス192を有する1つ若しくはそれ以上のバスグループ;またはデバイスインターフェース190上へのフラッシュデバイス192の1つ若しくはそれ以上のインスタンスの任意の他の編成として編成される。
【0170】
引き続き図1Aにおいて、SSDコントローラ100は、ホストインターフェース111、データ処理121、バッファ131、マップ141、リサイクラ151、ECC161、デバイスインターフェース論理191、CPU171といった1つ若しくはそれ以上のモジュールを有する。図1Aに図示する具体的なモジュールおよび相互接続は、単に、一実施形態を表すにすぎず、これらのモジュールの一部または全部、および図示されていないさらに別のモジュールの多くの配置および相互接続が考えられる。第1の例として、一部の実施形態では、デュアルポーティングを提供するための2つ以上のホストインターフェース111がある。第2の例として、一部の実施形態では、データ処理121および/またはECC161がバッファ131と組み合わされている。第3の例として、一部の実施形態では、ホストインターフェース111がバッファ131に直接接続されており、データ処理121が、バッファ131に記憶されたデータに任意選択で、および/または選択的に作用する。第4の例として、一部の実施形態では、デバイスインターフェース論理191がバッファ131に直接接続されており、ECC161が、バッファ131に記憶されたデータに任意選択で、および/または選択的に作用する。
【0171】
ホストインターフェース111は、外部インターフェース110を介してコマンドおよび/またはデータを送受信し、一部の実施形態では、タグ追跡113によって個々のコマンドの進捗を追跡する。例えば、コマンドは、読み出すべきアドレス(LBAなど)およびデータの量(LBA量、例えばセクタの数など)を指定する読み出しコマンドを含み、これに応答してSSDは、読み出し状況および/または読み出しデータを提供する。別の例として、コマンドは、書き込むべきアドレス(LBAなど)およびデータの量(LBA量、例えばセクタの数など)を指定する書き込みコマンドを含み、これに応答してSSDは、書き込み状況を提供し、および/または書き込みデータを要求し、任意選択でその後に書き込み状況を提供する。さらに別の例として、コマンドは、もはや割り振られる必要のなくなった1つ若しくはそれ以上のアドレス(1つ若しくはそれ以上のLBAなど)を指定する割り振り解除コマンド(trimコマンドなど)を含み、これに応答してSSDは、マップをしかるべく変更し、任意選択で割り振り解除状況を提供する。あるコンテキストでは、ATA互換TRIMコマンドが割り振り解除コマンドの例である。さらに別の例として、コマンドは、超コンデンサ・テスト・コマンドまたはデータハーデニング成功問い合わせを含み、これに応答してSSDは、適切な状況を提供する。一部の実施形態では、ホストインターフェース111は、SATAプロトコルと適合し、NCQコマンドを使用して、最高32までの未処理のコマンドを有することができるようになっており、各コマンドは0から31までの数として表された一意のタグを有する。一部の実施形態では、タグ追跡113は、外部インターフェース110を介して受け取ったコマンドのための外部タグを、SSDコントローラ100による処理の間にコマンドを追跡するのに使用される内部タグと関連付けることができるようになっている。
【0172】
様々な実施形態によれば、データ処理121は、任意選択で、および/または選択的に、バッファ131と外部インターフェース110との間で送られる一部または全部のデータを処理する、およびデータ処理121は、任意選択で、および/または選択的に、バッファ131に記憶されたデータを処理する、以下のうちの1つ若しくはそれ以上が行われる。一部の実施形態では、データ処理121は、1つ若しくはそれ以上のエンジン123を使用して、書式設定、書式設定の変更、符号変換、ならびに他のデータ処理および/または操作タスクのうちの1つ若しくはそれ以上を行う。
【0173】
バッファ131は、外部インターフェース110からデバイスインターフェース190へ/デバイスインターフェース190から外部インターフェース110へ送られたデータを記憶する。一部の実施形態では、バッファ131は、さらに、SSDコントローラ100によって1つ若しくはそれ以上のフラッシュデバイス192を管理するのに使用される、一部または全部のマップ表といったシステムデータも記憶する。様々な実施形態では、バッファ131は、データの一時記憶に使用されるメモリ137、バッファ131への、および/またはバッファ131からのデータの移動を制御するのに使用されるDMA133、ならびに高レベル誤り訂正および/または冗長性機能と、他のデータ移動および/または操作機能とを提供するのに使用されるECC−X135のうちの1つ若しくはそれ以上を有する。高レベル冗長性機能の一例がRAID様の能力であり、ディスクレベルではなく、フラッシュ・デバイス(フラッシュデバイス192のうちの複数のものなど)レベルおよび/またはフラッシュダイ(フラッシュダイ194など)レベルの冗長性を備える。
【0174】
様々な実施形態によれば、以下のうちの1つ若しくはそれ以上である。ECC161は、任意選択で、および/または選択的に、バッファ131とデバイスインターフェース190との間で送られる一部または全部のデータを処理する;およびECC161は、任意選択で、および/または選択的に、バッファ131に記憶されたデータを処理する。一部の実施形態では、ECC161は、例えば1つ若しくはそれ以上のECC技法に従った低レベル誤り訂正および/または冗長性機能を提供するのに使用される。一部の実施形態では、ECC161は、CRC符号、ハミング符号、RS符号、BCH符号、LDPC符号、ビタビ符号、トレリス符号、硬判定符号、軟判定符号、消去ベースの符号、任意の誤り検出および/または訂正符号、ならびに上記の任意の組み合わせのうちの1つ若しくはそれ以上を実施する。一部の実施形態では、ECC161は、1つ若しくはそれ以上の復号器(LDPC復号器など)を含む。
【0175】
デバイスインターフェース論理191は、デバイスインターフェース190を介してフラッシュデバイス192のインスタンスを制御する。デバイスインターフェース論理191は、フラッシュデバイス192のプロトコルに従ってフラッシュデバイス192のインスタンスへ/からデータを送ることができるようになっている。デバイスインターフェース論理191は、デバイスインターフェース190を介したフラッシュデバイス192のインスタンスの制御を選択的に配列するスケジューリング193を含む。例えば、一部の実施形態では、スケジューリング193は、フラッシュデバイス192のインスタンスへの操作を待ち行列に入れ、フラッシュデバイス192(またはフラッシュダイ194)のインスタンスの個々のインスタンスへの操作を、フラッシュデバイス192(またはフラッシュダイ194)のインスタンスの個々のインスタンスが利用可能になるに従って選択的に送ることができるようになっている。
【0176】
マップ141は、外部インターフェース110上で使用されるデータアドレス指定と、デバイスインターフェース190上で使用されるデータアドレス指定との間の変換を行い、表143を使用して外部データアドレスからNVM199内の位置へマップする。例えば、一部の実施形態では、マップ141は、外部インターフェース110上で使用されるLBAを、表143によって提供されるマッピングにより、1つ若しくはそれ以上のフラッシュダイ194を対象とするブロックおよび/またはページアドレスに変換する。ドライブ製造または割り振り解除以来一度も書き込まれていないLBAでは、マップは、LBAが読み取出された場合に返すべきデフォルト値を指し示す。例えば、割り振り解除コマンドを処理するときに、マップは、割り振り解除されたLBAに対応するエントリがデフォルト値のうちの1つを指し示すように変更される。様々な実施形態では、様々なデフォルト値があり、各々が対応するポインタを有する。複数のデフォルト値は、ある(例えば第1の範囲内の)割り振り解除されたLBAを1つのデフォルト値として読み出し、ある(例えば第2の範囲内の)割り振り解除されたLBAを別のデフォルト値として読み出すことを可能にする。デフォルト値は、様々な実施形態では、フラッシュメモリ、ハードウェア、ファームウェア、コマンドおよび/若しくはプリミティブ引数および/若しくはパラメータ、プログラマブルレジスタ、またはそれらの様々な組み合わせによって定義される。
【0177】
一部の実施形態では、リサイクラ151は、不要部分の整理を行う。例えば、一部の実施形態では、フラッシュデバイス192のインスタンスは、ブロックが書き換え可能になる前に消去されなければならないブロックを含む。リサイクラ151は、例えば、マップ141によって維持されるマップをスキャンすることによって、フラッシュデバイス192のインスタンスのどの部分が実際に使用されているか(例えば、割り振り解除されているのではなく割り振られていること)を判定し、フラッシュデバイス192のインスタンスの未使用の(例えば割り振り解除された)部分を消去することによって書き込みに利用できるようにすることができるようになっている。別の実施形態では、リサイクラ151は、フラッシュデバイス192のインスタンスのより大きい連続した部分を書き込みに利用できるようにするために、フラッシュデバイス192のインスタンス内に記憶されたデータを移動することができるようになっている。
【0178】
CPU171は、SSDコントローラ100の様々な部分を制御する。CPU171は、CPUコア172を含む。CPUコア172は、様々な実施形態によれば、1つ若しくはそれ以上のシングルコアプロセッサまたはマルチコアプロセッサである。CPUコア172内の個々のプロセッサコアは、一部の実施形態では、マルチスレッド化されている。CPUコア172は、命令および/またはデータのキャッシュおよび/またはメモリを含む。例えば、命令メモリは、CPUコア172が、SSDコントローラ100を制御するためのプログラム(ファームウェアとも呼ばれるソフトウェアなど)を実行することを可能にする命令を含む。一部の実施形態では、CPUコア172によって実行されるファームウェアの一部または全部が、(例えば、図1Bおよび図1CのNVM199のファームウェア106として図示されている)フラッシュデバイス192のインスタンス上に記憶される。
【0179】
様々な実施形態では、CPU171は、外部インターフェース110を介して受け取られるコマンドを、コマンドが進行している間に追跡し、制御するコマンド管理173、バッファ131の割り振りおよび使用を制御するバッファ管理175、マップ141を制御する変換管理177、データアドレス指定の整合性を制御し、例えば、外部データアクセスと再利用データアクセスとの間の矛盾を回避するコヒーレンシ管理179、デバイスインターフェース論理191を制御するデバイス管理181、識別情報の変更および通信を制御する識別情報管理182、ならびに、任意選択で、他の管理部をさらに含む。CPU171によって果たされる管理機能は、そのいずれか、若しくは全部が、ハードウェア、ソフトウェア(CPUコア172上や、外部インターフェース110を介して接続されたホスト上で実行されるファームウェアなど)、またはそれらの任意の実施形態によって制御され、および/または管理され、あるいは、そのどれも、制御も管理もされないものである。
【0180】
一部の実施形態では、CPU171は、性能統計の収集および/または報告、SMARTの実施、電源逐次開閉機構の制御、電力消費の制御および/または調整、電源障害への応答、クロック速度の制御および/またはモニタリングおよび/または調整、ならびに他の管理タスクのうちの1つ若しくはそれ以上といった、他の管理タスクを行うことができるようになっている。
【0181】
様々な実施形態は、SSDコントローラ100と同様の、例えば、ホストインターフェース111および/または外部インターフェース110の適応による、様々なコンピューティングホストを用いた動作と適合するコンピューティングホスト・フラッシュ・メモリ・コントローラを含む。様々なコンピューティングホストは、コンピュータ、ワークステーションコンピュータ、サーバコンピュータ、ストレージサーバ、PC、ラップトップコンピュータ、ノートブックコンピュータ、ネットブックコンピュータ、PDA、メディアプレーヤ、メディアレコーダ、デジタルカメラ、セルラハンドセット、コードレス電話機ハンドセット、および電子ゲームのうちの1つまたはそれらの任意の組み合わせを含む。
【0182】
様々な実施形態では、SSDコントローラ(またはコンピューティングホスト・フラッシュ・メモリ・コントローラ)の全部または任意の部分が、単一のIC、マルチダイICの単一のダイ、マルチダイICの複数のダイ、または複数のIC上で実施される。例えば、バッファ131は、SSDコントローラ100の他の要素と同じダイ上に実施される。別の例では、バッファ131は、SSDコントローラ100の他の要素と異なるダイ上に実施される。
【0183】
図1Bに、図1AのSSDを含むシステムの実施形態の選択された詳細を図示する。SSD101は、デバイスインターフェース190を介してNVM199に接続されたSSDコントローラ100を含む。SSDは、外部インターフェース110を介してホスト102に接続されている。一部の実施形態では、SSD101(またはその変形)は、ホスト102として動作するイニシエータ(開始プログラム)に接続されたSASドライブまたはSATAドライブに対応する。
【0184】
ホスト102はOS105を実行することが可能であり、OSはSSDとインターフェースするための(図示せず)ドライバを含み、および/またはそのようなドライバを用いて動作することができるようになっている。Windows(登録商標)の様々なバージョン(95、98、ME、NT、XP、2000、サーバ、Vista、および7など)、Linux(登録商標)の様々なバージョン(Red Hat、Debian、およびUbuntuなど)、ならびにMacOSの様々なバージョン(8、9およびXなど)がOS105の例である。
【0185】
NVM199の1つ若しくはそれ以上の部分が、一部の実施形態では、ファームウェア記憶106および/または選択ID情報記憶107に使用される。ファームウェア記憶は、1つ若しくはそれ以上のファームウェアイメージ(またはその部分)を含む。ファームウェアイメージは、例えばSSDコントローラ100のCPUコア172によって実行される、例えばソフトウェアの1つ若しくはそれ以上のイメージを有する。ファームウェアイメージは、別の例では、例えばファームウェア実行時にCPUコアによって参照される、定数、パラメータ値、NVMデバイス情報の1つ若しくはそれ以上のイメージを有する。ソフトウェアの1つ若しくはそれ以上のイメージは、例えば、現在のファームウェアイメージおよび0以上の(ファームウェア更新に対して)前のファームウェアイメージに対応する。
【0186】
選択ID情報記憶107は、SSD101、SSDコントローラ100、CPUコアによって現在実行されている(または次の電源サイクルの後で実行されるべき)ソフトウェアの全部または任意の部分、およびSSDを具現化している特定の製品のいずれか1若しくはそれ以上と関連付けられた識別/識別情報の全部または任意の部分の1若しくはそれ以上のイメージを含む。1若しくはそれ以上の識別/識別情報イメージは、例えば、現在のファームウェアイメージ実行の結果および0若しくはそれ以上の前のファームウェアイメージ実行の結果に対応する。
【0187】
様々な実施形態において、選択ID情報記憶107は、ファームウェア改訂識別子の全部若しくは任意の部分、ならびに/またはSSPの対象となる状態および/若しくはパラメータの全部または任意の部分を含む。より一般的には、選択ID情報記憶は、本明細書の別の箇所に記載したidentifyおよび/または識別情報の全部または任意の部分の1若しくはそれ以上のバージョンを含む。各バージョンは、ファームウェアのそれぞれのバージョンおよび/またはファームウェアの起動に対応する。
【0188】
図1Cに、図1AのSSDを含むシステムの別の実施形態の選択された詳細を示す。図1Bと同様に、SSD101は、デバイスインターフェース190を介してNVM199に接続されたSSDコントローラ100を含む。SSDは外部インターフェース110を介してホスト102に接続されており、外部インターフェース110はさらに中間コントローラ103に、次いで中間インターフェース104を介してホスト102に接続されている。様々な実施形態において、SSDコントローラ100は、RAIDコントローラといった1若しくはそれ以上の中間レベルの他のコントローラを介してホストに接続されている。ある実施形態では、SSD101(またはその変形)はSASドライブまたはSATAドライブに対応し、中間コントローラ103は、イニシエータにさらに接続されているエキスパンダに対応し、あるいは中間コントローラ103は、エキスパンダを介してイニシエータに間接的に接続されているブリッジに対応する。
【0189】
様々な実施形態では、1つ若しくはそれ以上のNVMと組み合わされたSSDコントローラおよび/またはコンピューティングホスト・フラッシュ・メモリ・コントローラが、USB記憶コンポーネント、CF記憶コンポーネント、MMC記憶コンポーネント、SD記憶コンポーネント、メモリスティック記憶コンポーネント、xDピクチャカード記憶コンポーネントといった不揮発性記憶コンポーネントとして実施される。
【0190】
様々な実施形態では、SSDコントローラ(またはコンピューティングホスト・フラッシュ・メモリ・コントローラ)の全部またはいずれかの部分、またはその機能が、コントローラが接続されるべきホスト(図1Cのホスト102など)において実施される。様々な実施形態では、SSDコントローラ(若しくはコンピューティングホスト・フラッシュ・メモリ・コントローラ)の全部またはいずれかの部分、またはその機能が、ハードウェア(論理回路など)、ソフトウェアおよび/若しくはファームウェア(ドライバソフトウェアおよび/またはSSD制御ファームウェアなど)、またはそれらの任意の組み合わせによって実施される。例えば、(例えば図1AのECC161および/またはECC−X135と同様の)ECC部の、またはECC部と関連付けられた機能が、一部はホスト上のソフトウェアによって、一部はSSDコントローラ内のファームウェアとハードウェアとの組み合わせによって実施される。別の例として、(例えば図1Aのリサイクラ151と同様の)リサイクラ部の、またはリサイクラ部と関連付けられた機能が、一部はホスト上のソフトウェアによって、一部はコンピューティングホスト・フラッシュ・メモリ・コントローラ内のハードウェアによって実施される。
【0191】
動作
図2に、ホストから見たデバイスファームウェア更新の影響の管理の実施形態の選択された詳細の流れ図200を示す。図の実施形態の動作についてのシステムコンテキストの例は、OSがホスト上で走っているホストに接続されたデバイスを含む。デバイスはホストからのコマンドに応答し、可視性の遅延を終了させるイベント(電源サイクルなど)を検出し、これに応答することができるようになっている。デバイスはファームウェア(ファームウェアを実行しているコントローラなど)に従って動作する。またデバイスは、ファームウェアを介して(例えば、ファームウェアの一部分を変更するコントローラを介して)読み取り可能であり、書き込み可能である選択identify/識別情報に従って動作する。選択identify/識別情報(「ID情報」ともいう)は、本明細書の別の箇所に記載したidentifyおよび/または識別情報の1若しくはそれ以上のサブセットであり、それらのサブセットは、デバイスの実施形態、使用シナリオ、および/または動作モードによって異なる。図に示す流れは、ファームウェア更新の影響の少なくとも一部分の可視性の遅延を提供し、よって、ホストから見たデバイスファームウェア更新の影響の管理を可能にする。
【0192】
ID情報は1若しくはそれ以上の要素(パラメータ、値、および/またはフィールドなど)を含む。デバイスがファームウェアによって起動し、および/または少なくとも一部はファームウェアによって選択された機能を果たすときに、ID情報が参照される(例えば、読み取られ、書き込まれ、またはその両方が行われる)。ファームウェアの特定のバージョンはID情報の特定のバージョンと対応する。例えば、ファームウェアの特定のバージョンの起動時に、ファームウェアの特定のバージョンはID情報の1若しくはそれ以上の要素を読み込み、よって、読み込みID情報はファームウェアの特定のバージョンに対応する。別の例としては、ファームウェアの特定のバージョンの特定の機能を果たしている間に、ID情報の1若しくはそれ以上の要素が書き込まれ、結果としてファームウェアの特定のバージョンと書き込まれたID情報との間の対応が生じる。
【0193】
具体的に図に示すように、流れは、デバイスが、ファームウェアの「古い」バージョンに従い、古いファームウェアに対応する「古い」ID情報に従って動作すること((古い)ファームウェア(古い)ID情報で動作する、201)から開始する。流れが201に留まっている間に、デバイスがID情報に依存するホストからの選択コマンドに応答するときに、デバイスは、古いID情報に従ったものである読み込みID情報を参照する。例えば、デバイスがSATA互換SSDである場合には、SATA IDENTIFYコマンドに応答して、デバイスは古いID情報から決定されたVPDを返し、VPDは、例えば、ファームウェア改訂識別子および/またはSSPの対象となるパラメータを含む。
【0194】
外部エージェント(ユーザやファームウェアバージョン検査ツールなど)が、例えば、新しいファームウェアをダウンロードし、アクティブ化/起動することによって、デバイスのファームウェア更新が行われるべきであると決定する。ファームウェア更新は、ホストがデバイスに、ファームウェアを更新/ダウンロードするよう求めるコマンド(ダウンロードコマンド、201D)を発行することから開始し、これに応答してデバイスは、任意選択でホストと連携して、新しいファームウェアを獲得する((新しい)ファームウェアをダウンロードする、202)。次いでデバイスは、内部状態および/または機能を変更して、電源サイクルまで読み込みID情報の変更を妨げる(選択ID情報を保護する、203)。
【0195】
ファームウェア更新は続いて、ホストがデバイスに、新しいファームウェアで動作するよう求めるコマンド(アクティブ化コマンド、203A)を発行し、これに応答してデバイスは新しいファームウェアをアクティブ化し((新しい)ファームウェアをアクティブ化する、204)、新しいファームウェアを使用して起動する(デバイスが起動する、205)。起動後の読み込みID情報は(古いファームウェアに対応する)古いID情報に従ったものである。というのは、読み込みID情報は変更されないよう保護されている(203)からである。起動後、デバイスは、新しいファームウェアのバージョンに従い、古いファームウェアに対応する古いID情報に従って動作する((新しい)ファームウェア(古い)ID情報で動作する、206)。流れが206に留まっている間に、デバイスが(ID情報に依存する)ホストからの選択コマンドに応答するときに、デバイスは、201にある間と同様に、古いID情報に従って読み込まれたID情報を参照する。
【0196】
したがって、デバイスが(ID情報に依存する)選択コマンドに応答するときに、デバイスは、古いID情報に従って読み込まれたID情報を参照し、よって、ファームウェア更新の影響の少なくとも一部分の可視性を遅延させる。実際上、選択コマンドに関して、ファームウェア更新の前後で同一のID情報が参照される。
【0197】
例えば、デバイスがSATA互換SSDである場合には、SATA IDENTIFYコマンドに応答して、実際上デバイスは古いID情報を参照し、古いID情報からファームウェア改訂識別子を決定し(決定されるファームウェア改訂識別子は古いファームウェアに対応する)、古いファームウェア改訂識別子を含むVPDを返す。よって、ファームウェア更新の前後で同じファームウェア改訂識別子が提供される。ファームウェア更新の前後で同じファームウェア改訂識別子を提供することは、ホスト上で走っているWindows(登録商標)OSのある特定のバージョンが、例えば、更新の前後に提供されたファームウェア改訂識別子が異なっていた場合には、OSが回復不能の誤りおよび「クラッシュ」を発生させることになるはずの状況などにおいて、OSを再起動せずにファームウェア更新をまたいで走り続けることを可能にする。
【0198】
別の例として、デバイスがSATA互換SSDである場合には、SATA IDENTIFYコマンドに応答して、実際上デバイスは古いID情報を参照し、古いID情報からSSPの対象となるパラメータを決定し(決定されるパラメータは古いファームウェアに対応するSSPの対象となる)、SSPの対象となる古いパラメータを含むVPDを返す。よって、ファームウェア更新の前後で同じSSPの対象となるパラメータが提供される。
【0199】
流れは、新しいファームウェアに対応する情報を有するID情報の読み込みを可能にする電源サイクルまで完了しない。電源サイクルは、デバイスおよびホストを電源サイクルすることに対応し、したがって、ホスト上のOSは電源サイクルの一部として再起動される(OSは、特に201〜206と関連付けられたいかなる処理に関しても再起動されていないことに留意されたい)。よって、流れは、電源サイクルが行われるときに、電源が切断され、再印加された(電源サイクル、206P)ことに応答して進み、デバイスは内部状態および/または機能を変更して、読み込みID情報の変更を可能にする(選択ID情報の保護を解除する、207)。次いでデバイスは新しいファームウェアを使用して起動する(デバイスが起動する、208)。起動後の読み込みID情報は(新しいファームウェアに対応する)新しいID情報である。というのは、読み込みID情報は変更可能になっている(207)からである。起動後、デバイスは、新しいファームウェアのバージョンに従い、新しいファームウェアに対応する新しいID情報に従って動作する((新しい)ファームウェア(新しい)ID情報で動作する、209)。流れが209に留まっている間に、デバイスが(ID情報に依存する)ホストからの選択コマンドに応答するときに、デバイスは、新しいID情報に従って読み込まれたID情報を参照する。流れはここで完了し、ファームウェア更新の影響の少なくとも一部分の可視性の遅延は終了する。
【0200】
概念的には、209の動作は201の動作と等価である(動作は相互に対応し合うファームウェアおよびID情報に従ったものである)。よって、さらに別のファームウェア更新が、任意選択で、あたかも209が201であったかのように行われ、逆もまた同様である。
【0201】
ある実施形態および/または使用シナリオでは、第1のファームウェア更新に続いて可視性の遅延を終了させるイベントが発生する前に第2のファームウェア更新がダウンロードされる。ファームウェア更新の影響の少なくとも一部分の可視性の遅延は、第2のファームウェア更新をまたいで延長される。概念的には、ID情報は、第2のファームウェア更新のダウンロードをまたいで、電源サイクルまでさらに保存される。
【0202】
より具体的に、図2に関して説明した一実施形態において、第1のファームウェア更新(第1の新しいファームウェア)を受け取っているが、まだ電源サイクルされておらず、よって、206と同様に動作しているデバイスを考える。次いでホストがデバイスに、(第2の新しい)ファームウェアを更新/ダウンロードするよう求めるコマンドを発行し、これに応答してデバイスは、202と同様に(第2の新しい)ファームウェアを獲得する。次いでデバイスは、内部状態および/または機能を変更して、203と同様に電源サイクルまで読み込みID情報の変更を妨げる。保護される読み込みID情報は、第1のファームウェア更新のダウンロードの前の読み込みID情報と同一である。アクティブ化および起動の後、デバイスは、206の動作と同様に、第2の新しいファームウェアに従い、(第1のファームウェア更新前の古いファームウェアに対応する)古いID情報に従って動作する。ある使用シナリオでは、1若しくはそれ以上のさらに別のファームウェア更新が電源サイクルの前に行われ、各々のファームウェア更新は、読み込みID情報がそれぞれのファームウェア更新をまたいで保存されるように処理される。
【0203】
ある実施形態および/または使用シナリオでは、動作202〜205の1若しくはそれ以上が組み合わされ、および/または図に示すのと異なる順序で行われる。例えば、202および203は組み合わされて、ファームウェアをダウンロードするよう求めるコマンドが、デバイスによって、電源サイクルまで読み込みID情報の変更を妨げることと共にファームウェアを更新/ダウンロードすることも含むよう解釈される。別の例として、203は、202の前に、ファームウェアをダウンロードするよう求めるコマンドに応答して行われる。ある実施形態では、204は、203に続いて、新しいファームウェアで動作するよう求めるコマンドを受け取らずに行われる。他の変形も企図されている。
【0204】
図3に、ホストから見たデバイスファームウェア更新の影響の管理の別の実施形態の選択された詳細の流れ図300を示す。図3の実施形態はいくつかの点で図2と同様に動作する。図2の実施形態の動作についてのシステムコンテキストの例は、図3の実施形態に適用できる。図に示す流れは、ファームウェア更新の影響の少なくとも一部分の可視性の遅延を提供し、よって、ホストから見たデバイスファームウェア更新の影響の管理を可能にする。
【0205】
図に示すように、流れは、デバイスが、ファームウェアの「古い」バージョンに従い、古いファームウェアに対応する「古い」ID情報に従って動作すること((古い)ファームウェア(古い)ID情報で動作する、301)から開始する。流れが301に留まっている間、動作は図2の201と同様であり、よって、デバイスが(ID情報に依存する)ホストからの選択コマンドに応答するときに、デバイスは、古いID情報に従って読み込まれたID情報を参照する。
【0206】
さらに図2と同様に、外部エージェントが、デバイスにファームウェア更新が行われるべきであると決定する。しかし、図2の実施形態とは異なり、図3の実施形態では、ファームウェア更新は、ホストがデバイスに、デバイスからホストにID情報を提供するよう求めるコマンド(ID読み取りコマンド、301R)を発行することから開始する。これに応答して、デバイスはホストに読み込みID情報を送る(選択ID情報を提供する、302)。ファームウェア更新は続いて、ホストがデバイスに、ファームウェアを更新/ダウンロードするよう求めるコマンド(ダウンロードコマンド、302D)を発行し、これに応答してデバイスは、任意選択でホストと連携して、新しいファームウェアを獲得する((新しい)ファームウェアをダウンロードする、303)。
【0207】
ファームウェア更新は続いて、ホストがデバイスに、新しいファームウェアで動作するよう求めるコマンド(アクティブ化コマンド、303A)を発行する。これに応答してデバイスは新しいファームウェアをアクティブ化し((新しい)ファームウェアをアクティブ化する、304)、新しいファームウェアを使用して起動する(デバイスが起動する、305)。しかし、デバイスが完全に新しいファームウェアでの動作を開始する前に、ホストはデバイスに、ホストからID情報を受け取るよう求めるコマンド(ID書き込みコマンド、305W)を送る。これに応答してデバイスは、ホストからID情報を受け取り、受け取ったID情報を読み込みID情報として保存する(選択ID情報を受け取る、306)。ホストは、306で使用するために、デバイスが302で提供したのと同一のID情報を提供し、したがって、読み込みID情報は古いID情報に従ったものである。次いでデバイスは、完全に新しいファームウェアおよび古いID情報に従った動作を開始する((新しい)ファームウェア(古い)ID情報で動作する、307)。流れが307に留まっている間に、デバイスが(ID情報に依存する)ホストからの選択コマンドに応答するときに、デバイスは、301にある間と同様に、古いID情報に従って読み込まれたID情報を参照する。
【0208】
したがって、図2と同様に、デバイスが(ID情報に依存する)選択コマンドに応答するときに、デバイスは実際上古いID情報を参照し、よって、ファームウェア更新の影響の少なくとも一部分の可視性を遅延させ、実際上、ファームウェア更新の前後で同一のID情報を参照する。例えば、ファームウェア更新の前後で同じファームウェア改訂識別子が提供され、(ホスト上で走っている)Windows(登録商標)OSのある特定のバージョンが、例えば、更新の前後に提供されたファームウェア改訂識別子が異なっていた場合には、OSが回復不能の誤りおよび「クラッシュ」を発生させることになるはずの状況などにおいて、OSを再起動せずにファームウェア更新をまたいで走り続けることを可能にする。別の例としては、ファームウェア更新の前後で同じSSPの対象となるパラメータが提供される。
【0209】
図2と同様に、流れは、新しいファームウェアに対応する情報を有するID情報の読み込みを可能にする電源サイクルまで完了しない。電源サイクルは、デバイスおよびホストを電源サイクルすることに対応し、したがって、ホスト上のOSは電源サイクルの一部として再起動される(OSは、特に301〜307と関連付けられたいかなる処理に関しても再起動されていないことに留意されたい)。よって、流れは、電源サイクルが行われるときに、電源が切断され、再印加された(電源サイクル、307P)ことに応答して進み、デバイスは、306によって書き込まれた読み込みID情報のあらゆる影響を排除する(選択ID情報を廃棄する、308)。次いでデバイスは新しいファームウェアを使用して起動する(デバイスが起動する、309)。起動後の読み込みID情報は(新しいファームウェアに対応する)新しいID情報である。というのは、古いID情報を提供するよう求めるホストからのID書き込みコマンドが発行されず、読み込みID情報は起動時に新しいID情報と共に書き込まれるからである。起動後、デバイスは、新しいファームウェアのバージョンに従い、新しいファームウェアに対応する新しいID情報に従って動作する((新しい)ファームウェア(新しい)ID情報で動作する、310)。流れが310に留まっている間に、デバイスが(ID情報に依存する)ホストからの選択コマンドに応答するときに、デバイスは、新しいID情報に従って読み込まれたID情報を参照する。流れはここで完了し、ファームウェア更新の影響の少なくとも一部分の可視性の遅延は終了する。
【0210】
概念的には、310の動作は301の動作と等価である(動作は相互に対応し合うファームウェアおよびID情報に従ったものである)。よって、さらに別のファームウェア更新が、任意選択で、あたかも310が301であったかのように行われ、以下同様である。
【0211】
図2と同様に、図3に関連したある実施形態および/または使用シナリオでは、第1のファームウェア更新に続いて可視性の遅延を終了させるイベントが発生する前に第2のファームウェア更新がダウンロードされる。ファームウェア更新の影響の少なくとも一部分の可視性の遅延は、第2のファームウェア更新をまたいで延長される。概念的には、ID情報には、第2のファームウェア更新後に、古いID情報が再度読み込まれる。
【0212】
より具体的に、図3に関して説明した一実施形態において、第1のファームウェア更新(第1の新しいファームウェア)を受け取っているが、まだ電源サイクルされておらず、よって、307と同様に動作しているデバイスを考える。次いでホストが、302と同様に、デバイスに読み込みID情報を提供するよう求めるコマンドを発行することによって(第2の新しい)ファームウェア更新を開始し、これに応答してデバイスは読み込みID情報を提供する。ファームウェア更新は続いて、(第2の新しい)ファームウェアのダウンロード、アクティブ化、および起動を行う。しかし、デバイスが完全に(第2の新しい)ファームウェアでの動作を開始する前に、ホストはデバイスに、(305Wと同様の)ID情報を受け取るよう求めるコマンドを送る。ホストは使用するために、デバイスが先に、読み込みID情報を提供するよう求めるホストからのコマンドに応答して提供したのと同一のID情報を提供する。デバイスは提供されたID情報を読み込みID情報として書き込み、したがって、読み込みID情報は古いID情報に従ったものである。次いでデバイスは、307の動作と同様に、完全に第2の新しいファームウェアおよび(第1のファームウェア更新の前の古いファームウェアに対応する)古いID情報に従った動作を開始する。ある使用シナリオでは、1若しくはそれ以上のさらに別のファームウェア更新が電源サイクルの前に行われ、各々のファームウェア更新は、読み込みID情報にそれぞれのファームウェア更新の後で古いID情報が再度読み込まれるように処理される。
【0213】
概念的には図3に示した実施形態の変形である一実施形態では、ID情報が、例えば、SSPの対象となる1若しくはそれ以上のパラメータなどに対応する。デバイスが完全に新しいファームウェアで動作する前に、デバイスから読み込みID情報を読み取らずに、ホストがデバイスに明示的にID情報を提供する。これに応答してデバイスは、提供されたID情報を読み込みID情報に書き込む。より具体的に、図3に関して説明した一実施形態において、301と同様に動作しているデバイスを考える。流れは、ホストがデバイスにダウンロードコマンドを提供したことに応答して301から303に直接進む。次いで流れは、304、305、および306に沿って進む。306に関しては、ホストは、302が省かれているため、デバイスからホストに提供されたID情報とは無関係のID情報を提供する。
【0214】
図2および図3に関して説明した前述の実施形態では、可視性の遅延を終了させるイベントは、デバイスが電源サイクルされることである(例えば、図2の206Pや図3の307Pなど)。他の実施形態も企図されており、例えばイベントは、デバイスがある電力モードから別の電力モードに遷移する(例えば、休眠モードまたはPHY電力管理モードを終了するなど)、デバイスがベンダ特有のコマンドを受け取る、デバイスがファームウェア更新の一部として特定のパラメータおよび/またはコードを受け取る、ならびにデバイスをホストに接続リンクのリセットの全部または任意の部分のいずれか1若しくはそれ以上である場合などである。
【0215】
ある実施形態および/または使用シナリオでは、動作302〜306の1若しくはそれ以上が組み合わされ、および/または図に示すのと異なる順序で行われる。例えば、302および303は組み合わされ、および/または図示と異なる順序で行われて、ファームウェアをダウンロードするよう求めるコマンドが、デバイスによって、デバイスが読み込みID情報をホストに送ることと共にファームウェアを更新/ダウンロードすることも含むように解釈され、デバイスからホストに読み込みID情報を提供するよう求めるコマンドは使用されない。別の例として、304は305と組み合わされ、例えばデバイスは、新しいファームウェアで動作するよう求めるコマンドに応答して(明示的なアクティブ化なしで)起動する。ある実施形態および/または使用シナリオでは、304は、303に続いて、新しいファームウェアで動作するよう求めるコマンドを受け取らずに行われる。ある実施形態および/または使用シナリオでは、308は省かれ、309は、例えば、前に記憶されたID情報を上書きすることによってID情報を読み込む。他の変形も企図されている。
【0216】
図2および/または図3に関連した様々な実施形態において、デバイスは任意選択で(例えば、1若しくはそれ以上のモードビット、ベンダ特有のコマンド、SSDコントローラによって検出されたファームウェアイベント、またはこれらの任意の組み合わせの関数として)ファームウェアのダウンロード、アクティブ化、および/または電源サイクルに応答した起動のうちのいずれか1若しくはそれ以上を行う。例えば、第1のベンダ特有のコマンドの受け取りの関数として、デバイスは、現在はまだ実行していない新しくダウンロードされたファームウェアをアクティブ化し、起動するのではなく、現在の実行中のファームウェアを使用して起動する。さらに、第2のベンダ特有のコマンドの受け取りの関数として、デバイスは、新しくダウンロードされたファームウェアを使用して起動する。
【0217】
図2および/または図3に関連した様々な実施形態において、デバイスは、ファームウェア更新の後、電源サイクルの前に、ホストに新しいID情報(新しいファームウェアに対応するID情報など)を選択的に提供することができるようになっている。(ID情報に依存する)ホストからの選択コマンドは、2つのコマンドグループを含む。選択コマンドの第1のグループは、デバイスにより、読み込みID情報に従って、よって、ファームウェア更新の後で、電源サイクルの前に処理され、第1のコマンドグループは、古いID情報に従ったID情報を受け取る。選択コマンドの第1のグループは、デバイスが新しいID情報で応答することになった場合に、ある使用シナリオでは、OSが回復不能の誤りを発生させることになるはずのホストからのコマンド、例えば、これに応答してIdentify Frameを受け取るコマンドなどに対応する。選択コマンドの第2のグループは、デバイスにより、ファームウェア更新後に電源サイクルが行われたかどうかにかかわらず、現在実行中のファームウェアに対応するID情報に従って処理される。例えば、206(図2)または307(図3)で動作している間に、第2のグループのコマンドに応答して、デバイスはホストに(新しいファームウェアに対応する)新しいID情報を提供する。新しい識別情報は、新しいファームウェアのダウンロードと起動との間に電源サイクルが行われたかどうかにかかわらず、例えば、デバイスが新しいファームウェアで起動するときに新しい識別情報が書き込まれた、例えば、影VPD領域および/またはログから提供される。
【0218】
図2および/または図3に関連した様々な実施形態において、ファームウェア更新の影響の少なくとも一部分の可視性の遅延は、1若しくはそれ以上のモードによって有効化(無効化)される。例えば、「遅延」モードでは、第1のモード有効化実施形態の動作は図2に従ったものである。「非遅延」モードでは、第1のモード有効化実施形態の動作は、読み込みID情報の変更が妨げられない(例えば、203がスキップされ、流れが、新しいファームウェアで動作するよう求めるコマンドに応答して202から204に進む)ことを除いては、図2に従ったものである。その場合206の動作は新しいファームウェア、および新しいファームウェアに対応する読み込みID情報に従ったものである。別の例として、「遅延」モードでは、第2のモード有効化実施形態の動作は図3に従ったものである。「非遅延」モードでは、第2のモード有効化実施形態の動作は、ID情報を受け取るよう求めるホストからのコマンドが発行されず(例えば、306がスキップされ、流れが305から307に進み)、読み込みID情報が起動によって書き込まれたままになることを除いて、図3に従ったものである。その場合307の動作は新しいファームウェア、および新しいファームウェアに対応する読み込みID情報に従ったものである。
【0219】
図2および/または図3に関連した様々な実施形態においては、最新のファームウェア更新および/または1若しくはそれ以上の前のファームウェア更新の結果(例えば、更新されたファームウェアの起動/実行によって生成された(1若しくはそれ以上の)ファームウェアイメージおよび/またはID情報など)が記憶される。前のファームウェア更新の結果を記憶することは、例えば、前のファームウェアイメージから起動することなどによる、ファームウェア更新からの「ロールバック」を可能にする。前のファームウェア更新の結果を記憶することは、デバイスが(ベンダ特有の)ホストコマンドに応答して(例えば前のファームウェア更新に関連した)前のID情報を提供することを可能にする。最新のファームウェア更新の結果を記憶することは、デバイスが(ベンダ特有の)ホストコマンドに応答して、通常は可視性の遅延の対象となるID情報を提供することを可能にする。
【0220】
図2および図3に関連したデバイスおよびホストの例は、それぞれ、図1Bおよび図1Cの、SSD101およびホスト102である。図2および図3に関連したファームウェアについての記憶の例は、図1Bおよび図1Cのファームウェア記憶106である。図2および図3に関連したID情報の全部または任意の部分についての記憶の例は、図1Bおよび図1Cの選択ID情報記憶107の全部または任意の部分である。「古い」ファームウェアの例には、工場出荷時インストール済みファームウェア、OEMインストール済みファームウェア、および(例えば前回のダウンロードからの)ユーザインストール済みファームウェアが含まれる。
【0221】
様々な実施形態において、図2および/または図3で説明した動作および/または機能の全部または任意の部分は、例えば、1若しくはそれ以上の状態機械によって実装される。状態機械の実装例には、ハードウェア(例えば、論理ゲートおよび/または回路、専用状態機械回路、配線式制御回路など)、ソフトウェア(例えばファームウェアやマイクロコードなど)、あるいはハードウェアとソフトウェアの組み合わせが含まれる。ある実施形態では、状態機械の1若しくはそれ以上は、少なくとも一部は、更新の対象となるファームウェアによって実装される。様々な実施形態において、状態機械の1若しくはそれ以上は、一部が図1AのSSDコントローラ100によって、一部がCPUコア172によって実行されるファームウェアによって、および/または一部が図1Bおよび図1Cのファームウェア記憶106に記憶されたファームウェアによって実装される。
【0222】
様々な実施形態において、図2および/または図3で説明した動作および/または機能の全部または任意の部分は、例えば、図1Aの識別管理182によって、またはこれに従って実装される。ある実施形態では、(図2の206Pおよび図3の307Pに関連したような)電源の切断および印加は、デバイスのコントローラの回路に含まれる電源オンリセット回路、例えば、図1AのSSDコントローラ100に含まれる回路などによって決定される。
【0223】
様々な実施形態において、図2のおよび/または図3で説明したID情報に関連して行われる1若しくはそれ以上の動作(例えば、保護する、保護を解除する、提供する、受け取る、読み取る、書き込むなど)は、ファームウェア記憶106の全部または任意の部分にアクセスすることを含む。例えば、ある実施形態では、図2の203および207は、ファームウェア記憶106の少なくとも一部分に書き込むこと(例えば、ID情報が変更されないよう保護されていることを指示するフラグを設定し、クリアすることなど)を含む。別の例として、ある実施形態では、図3の302および306は、それぞれ、ファームウェア記憶106の少なくとも一部分を読み取ることおよび書き込むことを含む。
【0224】
様々な実施形態において、HBAはホストの要素(1若しくはそれ以上のプロセッサおよび1若しくはそれ以上のメモリなど)を、デバイス、例えばSATAドライブといった記憶デバイスなどに接続する。HBAのプロセッサおよび/またはメモリへの接続は、少なくとも一部は、1若しくはそれ以上のデバイス通信インターフェース、バス、および/またはチャネル(PCIeインターフェースなど)を介したものである。プロセッサのうちのあるものは、デバイスと通信するOSおよび/またはドライバソフトウェアを実行する。ある実施形態では、ホストの要素とHBAとの間のトランスポートはAHCIに準拠し、T13準拠ATAコマンドがHBAを介してデバイスのSSDのSATAまたはPCIeインターフェースに渡される。別の実施形態では、ホストの要素とHBAとの間のトランスポートはNVMエクスプレスに準拠し、T13準拠ATAコマンドと類似した少なくとも一部の属性を有するコマンドがHBAを介してデバイスのSSDのPCIeインターフェースに渡される。ある実施形態ではHBAはホストに含まれ、別の実施形態ではHBAはデバイスに含まれる。ある実施形態ではHBAは省かれ、デバイスは(明示的なHBAなしで)1若しくはそれ以上のデバイス通信インターフェース、バス、および/またはチャネル(PCIeインターフェースなど)に接続される。
【0225】
例えば、図1Bのコンテキストでは、ホスト102は、ホスト上で走っているソフトウェア(例えばOS105および/または関連付けられたドライバなど)と(ホストインターフェース111に含まれるSATA互換ホストインターフェースを有する)SSD101との間の通信を可能にするHBAを含む。通信は、ソフトウェアからSSDへのコマンドの受け渡しを含む。コマンドのトランスポートはAHCIを介したものであり、T13準拠ATAコマンドがSSDのSATAインターフェースに提供される。よって、図2の201Dおよび203A、ならびに図3の301R、302D、303A、および305Wは、AHCIトランスポートによって受け渡される。
【0226】
別の例として、図1Cのコンテキストでは、ホスト102は、中間コントローラ103との通信を可能にするチップセットを含み、中間インターフェース104および外部インターフェース110はPCIe互換である(例えば、SSD101はホストインターフェース111に含まれるPCIeインターフェースを有する)。チップセットおよび中間コントローラ103は、ホストのOSおよび/またはドライバソフトウェアとSSD101との間の、コマンドの受け渡しを含む通信を可能にする。コマンドのトランスポートはNVMエクスプレスを介したものであり、T13準拠ATAコマンドに類似した少なくともいくつかの属性を有するコマンドがSSDのPCIeインターフェースに提供される。よって、図2の201Dおよび203A、ならびに図3の301R、302D、303A、および305Wは、NVMエクスプレストランスポートによって受け渡される。
【0227】
以上、コンピューティングホストから見たファームウェア更新の影響を管理することができるようにした、コンピューティングホストに接続された記憶デバイスの実施形態など、様々な実施形態を説明した。記憶デバイスおよびコンピューティングホストに適用可能な技法は、一般に、コンピューティングホストから見たファームウェア更新の影響を管理することができるようになっている、ホストに接続されたデバイスの様々な実施形態に適用可能である。様々な実施形態は、記憶デバイスの例としてSSDを用いて説明されている。SSDベースの記憶デバイスに適用可能な技法は、HDDベースの記憶デバイス、ならびに他の不揮発性記憶技術に基づく記憶デバイスの様々な実施形態にも適用可能である。
【0228】
実施技法の例
一部の実施形態では、フラッシュメモリ、コンピューティングホスト・フラッシュ・メモリ・コントローラなどを有するSSDコントローラ(例えばホストから見たデバイスファームウェア更新の影響の管理を提供するSSD)、および/またはSSDコントローラ(例えば図1AのSSDコントローラ100)、ならびにプロセッサ、マイクロプロセッサ、システム・オン・チップ、特定用途向け集積回路、ハードウェアアクセラレータ、または前述の動作の全部または部分を提供する他の回路を実装するシステムによって行われる動作の全部またはいずれかの部分の様々な組み合わせが、コンピュータシステムによる処理と適合する仕様によって指定される。仕様は、様々な記述、例えば、ハードウェア記述言語、回路記述、ネットリスト記述、マスク記述、またはレイアウト記述に従ったものである。記述の例には、Verilog、VHDL、SPICE、SPICEの変形、例えば、PSpice、IBIS、LEF、DEF、GDS−II、OASIS、または他の記述が含まれる。様々な実施形態では、処理は、1つ若しくはそれ以上の集積回路上に含めるのに適する論理および/または回路を生成し、検証し、または指定するための解釈、コンパイル、シミュレーション、および合成の任意の組み合わせを含む。各集積回路は、様々な実施形態によれば、様々な技法に従って設計することができ、および/または製造することができる。技法には、プログラマブルな技法(例えば、フィールド若しくはマスク・プログラマブル・ゲート・アレイ集積回路)、セミカスタムの技法(例えば、全部若しくは一部がセルベースの集積回路)、およびフルカスタムの技法(例えば、実質的に専門化された集積回路)、それらの任意の組み合わせ、または集積回路の設計および/若しくは製造と適合する任意の他の技法が含まれる。
【0229】
一部の実施形態では、命令のセットを記憶しているコンピュータ可読媒体によって記述される動作の全部または部分の様々な組み合わせが、1つ若しくはそれ以上のプログラム命令の実行および/若しくは解釈によって、1つ若しくはそれ以上のソースおよび/若しくはスクリプト言語命令文の解釈および/若しくはコンパイルによって、または、プログラミングおよび/若しくはスクリプティング言語命令文で表現された情報をコンパイルし、変換し、および/または解釈することによって生成されるバイナリ命令の実行によって実行される。命令文は任意の標準のプログラミングまたはスクリプティング言語(例えば、C、C++、Fortran、Pascal、Ada、Java(登録商標)、VBscript、Shell)と適合する。プログラム命令、言語命令文、またはバイナリ命令のうちの1つ若しくはそれ以上が、任意選択で、1つ若しくはそれ以上のコンピュータ可読記憶媒体要素上に記憶される。様々な実施形態では、プログラム命令の一部、全部、または様々な部分が、1つ若しくはそれ以上の関数、ルーチン、サブルーチン、インラインルーチン、プロシージャ、マクロ、またはそれらの部分として実現される。
【0230】
結論
ある特定の選択が、説明において、テキストおよび図面を作成するに際の単なる便宜のためになされており、別の指示がない限り、それらの選択は、それ自体で、前述の実施形態の構造または動作に関する追加情報を伝えるものと解釈すべきではない。選択の例には、図の符番に使用される呼称の特定の編成または割り当て、および実施形態の特徴および要素を識別し、参照するのに使用される要素識別子(コールアウトや数値識別子など)の特定の編成または割り当てが含まれる。
【0231】
「includes」または「including」という語は、開放型範囲の論理集合を記述する抽象概念として解釈されるべきことが明確に意図されており、後に続けて「within」という語が明示されない限り物理的包含を伝えるためのものではない。
【0232】
前述の実施形態は、説明および理解の明確さのためにある程度詳細に説明されているが、本発明は提示した詳細だけに限定されるものではない。本発明の多くの実施形態がある。開示の実施形態は例示であり、限定ではない。
【0233】
説明と整合性を有する、構成、配置、および使用における多くの変形が可能であり、それらの変形は、発行される特許の特許請求の範囲内にあることが理解されるであろう。例えば、相互接続および機能ユニットのビット幅、クロック速度、および使用される技術の種類は、各構成要素ブロックにおける様々な実施形態に従って変わりうる。相互接続および論理に与えられた名称は、単なる例であり、説明した概念を限定するものと解釈すべきではない。フローチャートおよび流れ図のプロセス、動作、および機能要素の順序および配置は、様々な実施形態に従って変わりうる。また、特に別に指定しない限り、指定される値範囲、使用される最大値および最小値、または他の特定の仕様(例えば、フラッシュメモリ技術の種類、レジスタおよびバッファ内のエントリまたは段の数)は、単に前述の実施形態のものにすぎず、実施技術の改善および変更を追跡することが見込まれるものであり、限定として解釈すべきではない。
【0234】
当分野で公知の機能的に等価の技法を、様々なコンポーネント、サブシステム、動作、関数、ルーチン、サブルーチン、インラインルーチン、プロシージャ、マクロ、またはそれらの部分を実施するのに、前述の技法の代わりに用いることができる。また、実施形態の多くの機能的態様を、より高速な処理(以前にハードウェアにあった機能のソフトウェアへの移行を円滑化する)およびより高い集積密度(以前にソフトウェアにあった機能のハードウェアへの移行を円滑化する)の実施形態に依存する設計制約条件および技術傾向に応じて、選択的に、ハードウェア(専用の回路など)で、またはソフトウェアで(例えば、プログラムされたコントローラ若しくはプロセッサのある方式によって)実現できることも理解される。様々な実施形態の具体的な変形は、これに限定されるものではないが、分割の違い、フォームファクタおよび構成の違い、異なるオペレーティングシステムおよび他のシステムソフトウェアの使用、異なるインターフェース規格、ネットワークプロトコル、または通信リンクの使用、本明細書で説明した概念を、特定の用途の固有の技術的業務的制約条件に従って実施するときに予期されるべき他の変形を含む。
【0235】
各実施形態は、前述の各実施形態の多くの態様の最小限の実施に必要とされるものを大きく超えた詳細および環境的コンテキストと共に説明されている。一部の実施形態は、残りの要素間での基本的協働を変更せずに開示の構成要素または機能を割愛することを当業者は理解するであろう。よって、開示の詳細の多くが前述の実施形態の様々な態様を実施するのに必要ではないことが理解される。残りの要素が先行技術と区別できる範囲内で、割愛される構成要素および特徴は本明細書で説明した概念を限定するものではない。
【0236】
設計におけるすべてのそのような変形は、前述の実施形態によって伝えられる教示に対する実質的な変更ではない。また、本明細書で説明した実施形態は、他のコンピューティング用途およびネットワーキング用途に幅広い適用性を有し、前述の実施形態の特定の用途または産業だけに限定されるものではないことも理解される。よって本発明は、発行される特許の特許請求の範囲内に包含されるあらゆる可能な改変形態および変形形態を含むものと解釈すべきである。
図1A
図1B
図1C
図2
図3