(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0007】
本発明の1若しくはそれ以上の実施形態の詳細な説明を、以下で、本発明の選択された
詳細を図示する添付の図を併用して行う。本発明を実施形態との関連で説明する。実施形
態は、本明細書では、単なる例示であると理解されるものであり、本発明は、明確に、本
明細書中の実施形態のいずれか若しくは全部に、またはいずれか若しくは全部によって限
定されるものではなく、本発明は、多数の代替形態、改変形態、および均等物を包含する
ものである。説明が単調にならないように、様々な言葉によるラベル(最初の、最後の、
ある一定の、様々な、別の、他の、特定の、選択の、いくつかの、目立ったなど)が実施
形態のセットを区別するために適用される場合がある。本明細書で使用する場合、そのよ
うなラベルは、明確に、質を伝えるためのものでも、いかなる形の好みや先入観を伝える
ためのものでもなく、単に、別々のセットを都合よく区別するためのものにすぎない。開
示するプロセスのいくつかの動作の順序は本発明の範囲内で変更可能である。多様な実施
形態がプロセス、システム、および/またはプログラム命令の各特徴の差異を説明するの
に使用される場合は常に、所定の、または動的に決定される基準に従って、複数の多様な
実施形態にそれぞれ対応する複数の動作モードの1つの静的選択および/または動的選択
を行う他の実施形態が企図されている。以下の説明では、本発明の十分な理解を提供する
ために、多数の具体的詳細を示す。それらの詳細は例として示すものであり、本発明は、
それらの詳細の一部または全部がなくても、特許請求の範囲に従って実施されうる。わか
りやすくするために、本発明に関連した技術分野で公知の技術資料は、本発明が不必要に
曖昧になることのないように詳細に説明していない。
【0008】
概説
この概説は、詳細な説明のより迅速な理解を助けるために含まれるにすぎず、本発明は
、(それがある場合には、明示的な例を含む)この概説で提示される概念だけに限定され
るものではなく、どんな概説の段落も、必然的に、主題全体の縮約された見方であり、網
羅的な、または限定的な記述であることを意味するものではない。例えば、以下の概説は
、スペースおよび編成によりある一定の実施形態だけに限定される概要情報を提供するも
のである。特許請求の範囲が究極的にそこに導かれることになる実施形態を含む多くの他
の実施形態があり、それらを本明細書の残りの部分にわたって論じる。
【0009】
頭字語
以下で定義する様々な省略形(頭字語など)の少なくともいくつかは、本明細書で使用
するある一定の要素を指すものである。
【0011】
SSD MST機能は、SSD製造者が、SSDのための試験を定義、作成し、SSD
の生産インスタンス上で試験を実行し、試験の完了後に実行した結果を集約することを可
能にする。製造者は、SSDの内部動作(例えば、試験の各要素がSSDによってどのよ
うにして実施されるか)の具体的知識なしで試験を作成し、対象とする生産および/また
は品質保証要件に従って試験をカスタマイズする。試験は、任意選択で、製造者が定義す
るように、試験パラメータ、順序、および終了基準のうちの1若しくはそれ以上を組み入
れる。試験は、(例えば、ATA SMARTプロトコルといったストレージ・インター
フェース・プロトコルによって起動されるような)SSDによって実施される任意選択の
既定の、かつ/または組み込み式の試験に加えて行われるものである。
【0012】
試験の定義および作成は、テストスクリプトを生成すること、およびスクリプトを生産
SSD上へロードすることを含む。実行は、生産SSDの電源を投入し、生産SSDがロ
ードされたスクリプトを自己実行することを含む。電源投入および自己実行は、例えば、
スクリプトをロードしたホストに接続されている間に、スクリプトをSSDにロードする
ことはできないが、SSDに電力を提供することが可能なラックに接続されている間に、
または電力を提供することが可能なある他の構成部品に接続されている間に行われる。ラ
ックは、任意選択で、相対的に多数の生産用SSDの費用効率的な並列試験を可能にする
ために低価格化される。結果集約は、自己実行の結果(イベントログや不良ブロック情報
など)を読み取ること、および生産SSDを顧客使用に備えることを含む。使用に備える
ことは、生産SSDをセキュア消去すること、結果の一部(イベントログなど)をクリア
すること、および結果の一部(不良ブロック情報など)をそのままにしておくことを含む
。
【0013】
SSDは、(例えば、ホストがSSDの「入力」SMARTログを書き込むことによっ
て)試験を受け取り、(例えば、ファームウェアが入力SMARTログからコマンドを読
み取ることによって)試験のコマンドを実行し、(例えば、ファームウェアがSSDの「
出力」SMARTログに書き込むことによって)結果を提供することができるようになっ
ている。SSDは、ハードウェア、ソフトウェア、およびファームウェアのうちの任意の
1若しくはそれ以上によって、受け取り、実行、および提供を行うことができるようにな
っている。コマンドは、ドライブ書き込み、ドライブ消去、SATA PHYバーンイン
、遅延、およびストレスモードを含む。コマンド(「プリミティブ」ともいう)のうちの
任意の1若しくはそれ以上が、例えばコマンドの動作を指定するための、0以上のパラメ
ータを有する。
【0014】
ある実施形態および/または使用シナリオでは、SSD MST機能は、SSD仮想製
造モデルと併用される。場合によっては、SSD MST機能は、(例えば、仮想ドライ
ブ製造モデルを使用するシステムベンダのコンテキストでは)SSDを製造しているシス
テムベンダによって使用される。
【0015】
仮想ドライブ製造モデルは、システムベンダが、記憶デバイスの製造のための、メモリ
デバイスといった選択される材料を直接調達することを可能にする。直接調達は、システ
ムベンダが記憶デバイスベンダから(選択される材料を使用した)記憶デバイスを調達す
る技法と比べて、選択される材料にかかるマージンマークアップ(マージン上乗せなど)
を省く。メモリデバイス以外の、選択される材料の他の例には、電源、温度センサ、ケー
シング、プリント回路基板、および受動部品が含まれる。具体例として、選択される材料
は、フラッシュ・メモリ・デバイスなどのNVMといったメモリデバイスであり、記憶デ
バイスはSSDである。設計業者は、SSDコントローラおよび関連付けられたファーム
ウェアを、基準設計、SSDコントローラと共に基準設計において使用するための、推奨
され、かつ/またはサポートされるフラッシュ・メモリ・デバイスのリスト、および、任
意選択で、SSDコントローラを使用して構築される記憶デバイスの大量生産を可能にす
る製造用ソフトウェアと共に実施する。設計業者は、任意選択で、かつ/または選択的に
、システムベンダが、SSDコントローラ、ファームウェア、リストのうちフラッシュ・
メモリ・デバイス、および他の材料を使用して、基準設計に従ったSSDの大量生産を直
接(または間接的に)行うことを可能にするために、システムベンダに、販促品、エンジ
ニアリング情報、エンジニアリングサンプル、製造用ソフトウェア、および/または試験
/資格サービスを提供する。
【0016】
様々な実施形態および/または使用シナリオにおいて、設計業者によって実施されるS
SDコントローラおよび/またはファームウェアは、複数のフラッシュ・メモリ・ベンダ
からのフラッシュ・メモリ・デバイスと共に動作することができるようになっている。複
数のフラッシ・メモリ・ベンダからのフラッシュ・メモリ・デバイスを用いた動作は、例
えば、使用されるフラッシュ・メモリ・デバイスに従って、インターフェースプロトコル
、読み取り、書き込み、および/若しくは消去の技法、パラメータ、ならびに/または特
性の運用を変えることによって可能となる。複数のフラッシ・メモリ・ベンダからのフラ
ッシュ・メモリ・デバイスを用いた動作は、さらに、別の例では、様々な誤り回復符号に
従ってフラッシュ・メモリ・デバイスを管理する管理アルゴリズムによって可能となる。
【0017】
様々な実施形態および/または使用シナリオにおいて、設計業者によって実施されるS
SDコントローラおよび/またはファームウェアは、様々なサイズの量のホストLBを用
いて動作することができるようになっており、例えば、企業および/またはクラウド使用
シナリオのための様々なLBサイズを用いて動作するSSD製品、ならびに、例えば、産
業および/またはクライアント使用シナリオのための単一LBサイズを用いて動作するS
SD製品を使用可能にする。様々な実施形態および/または使用シナリオにおいて、設計
業者によって実施されるSSDコントローラおよび/またはファームウェアは、例えば、
企業、クラウド、産業、および/またはクライアントでの各使用シナリオのためといった
様々な容量のSSDを実施することができるようになっている。
【0018】
ある実施形態では、SSDといった入出力装置がSSDコントローラを含む。SSDコ
ントローラは、SSDのホストインターフェースとNVMとの間のブリッジとして働き、
SSDのホストインターフェースを介してコンピューティングホストから送られたホスト
プロトコルのコマンドを実行する。コマンドの少なくとも一部がSSDに、コンピューテ
ィングホストから送られたデータおよびコンピューティングホストに送られるデータを用
いて、それぞれ、NVMの書き込みおよび読み取りを行うよう指図する。別の実施形態で
は、SSDコントローラは、マップを使用してホストプロトコルのLBAとNVM内の物
理的記憶アドレスとの間の変換を行うことができるようになっている。別の実施形態では
、マップの少なくとも一部分が、(コンピューティングホストからは見えない)入出力装
置の専用記憶に使用される。例えば、コンピューティングホストからアクセスできないL
BAの一部分が、入出力装置によって、ログ、統計、または他の専用データへのアクセス
を管理するのに使用される。
【0019】
様々な実施形態によれば、マップは、1レベルマップ、2レベルマップ、マルチレベル
マップ、直接マップ、連想マップ、およびホストプロトコルのLBAをNVM内の物理的
記憶アドレスと関連付ける他の手段のうちの1若しくはそれ以上である。例えば、ある実
施形態では、2レベルマップは、LBAの第1の関数を、複数の第2レベル・マップ・ペ
ージのうちの1つのNVM内のそれぞれのアドレスと関連付ける第1レベルマップを含み
、第2レベル・マップ・ページの各々は、LBAの第2の関数をLBAに対応するデータ
のNVM内のそれぞれのアドレスと関連付ける。別の実施形態では、LBAの第1の関数
およびLBAの第2の関数の例は、第2レベル・マップ・ページの各々に含まれる固定数
のエントリによって除算されるときに得られる商および余りである。複数の第2レベル・
マップ・ページをまとめて第2レベルマップと呼ぶ。本明細書では、マップの1若しくは
それ以上のエントリという場合、それは、1レベルマップ、2レベルマップの第1レベル
、2レベルマップの第2レベル、マルチレベルマップの任意のレベル、またはエントリを
有する任意の他の種類のマップを含む、任意の種類のマップの1若しくはそれ以上のエン
トリをいう。
【0020】
様々な実施形態によれば、第2レベルマップ(またはマルチレベルマップの低レベル)
のマップページの各々は、マップページの他のものと同数のエントリを含む、マップペー
ジの少なくとも他のいくつかと異なる数のエントリを含む、マップページの他のものと同
じ粒度のエントリを含む、マップページの他のものと異なる粒度のエントリを含む、すべ
て同じ粒度ものであるエントリを含む、複数の粒度のものであるエントリを含む、マップ
ページの内容の書式および/またはレイアウトを指定するそれぞれのヘッダを含む、なら
びにマップページのエントリを表す任意の他の書式、レイアウト、または編成を有する、
のうちの1若しくはそれ以上である。例えば、第1の第2レベル・マップ・ページは、1
エントリ当たり4KBの粒度の仕様を有し、第2の第2レベル・マップ・ページは、1エ
ントリ当たり8KBの粒度、および第1の第2レベル・マップ・ページの半数だけのエン
トリの仕様を有する。
【0021】
別の実施形態では、高レベルマップのエントリは、対応する低レベル・マップページの
書式および/またはレイアウト情報を含む。例えば、第1レベルマップ内のエントリの各
々は、関連付けられた第2レベル・マップ・ページ内のエントリについての粒度仕様を含
む。
【0022】
ある実施形態では、マップは複数のエントリを含み、エントリの各々は、1若しくはそ
れ以上のLBAを、LBAのデータが記憶されているNVM内のそれぞれの位置を選択的
に含む情報と関連付ける。例えば、LBAは512Bのセクタを指定し、マップ内の各エ
ントリは、LBAの並んだ8セクタ(4KB)領域と関連付けられている。
【0023】
様々な実施形態によれば、マップのエントリの情報は、NVM内の位置、NVM内の読
み取り単位のアドレス、NVMに記憶された関連付けられたLBAのデータを獲得するた
めに読み取るべき読み取り単位の数、NVMに記憶された関連付けられたLBAのデータ
のサイズであって、任意選択で、かつ/または選択的に1バイトより大きい粒度を有する
サイズ、関連付けられたLBAのデータが切り捨てられているといった理由で、関連付け
られたLBAのデータがNVMに存在しないという表示、関連付けられたLBAのデータ
の属性、および関連付けられたLBAのデータの任意の他のメタデータ、属性、または性
質のうちの1若しくはそれ以上を含む。
【0024】
ある実施形態では、NVM内のアドレスは、アドレスのうちの1つを表すのに必要とさ
れるビット数を低減させるために領域へグループ化される。例えば、入出力装置のLBA
が64領域に分割され、NVMが、LBA領域の各々に1つずつ、64領域に分割される
場合には、特定のLBAと関連付けられたマップエントリは、必要とするアドレスビット
数が6少なくて済む。というのは、NVM内の領域のうちの1つが特定のLBAの領域に
よって決定されうるからである。様々な実施形態によれば、LBAの領域とNVMの領域
との間の関連付けは、同等性、1対1数値関数といった直接的関連付け、表ルックアップ
、動的マッピング、および2セットの数を関連付ける任意の他の方法のうちの1若しくは
それ以上によるものである。
【0025】
様々な実施形態では、NVM内の位置は、複数の読み取り単位のうちの1つのアドレス
、ならびに読み取り単位での長さおよび/または範囲を含む。長さは、NVMに記憶され
た複数のデータ項目のうちの特定の1つのサイズであり、マップのエントリと関連付けら
れた特定のデータ項目は長さを含む。様々な実施形態によれば、長さは、1バイト、1よ
り大きいバイト、1読み取り単位、読み取り単位の指定された小部分、データ項目のうち
の1つの最大許容圧縮率に従った粒度、および記憶使用量を追跡するのに使用される任意
の他の粒度のうちの1若しくはそれ以上の粒度を有する。範囲は、特定のデータ項目のそ
れぞれの部分を記憶する、整数の読み取り単位といった読み取り単位の数である。別の実
施形態および/または使用シナリオでは、読み取り単位の範囲内の最初の読み取り単位お
よび/または読み取り単位の範囲内の最後の読み取り単位は、任意選択で、かつ/または
選択的に、データ項目のうちの複数のデータ項目の一部または全部を記憶する。ある実施
形態および/または使用シナリオでは、長さおよび/または範囲は、例えば、長さ(長さ
および/または範囲が符号化されるコンテキストではサイズともいう)を範囲からのオフ
セットとして記憶することによって、符号化されて記憶される。ある実施形態および/ま
たは使用シナリオでは、長さおよび/または範囲の未使用の符号化が、関連付けられたデ
ータ項目がNVMに存在するかどうかについての指示といった追加情報を符号化する。
【0026】
NVM内の位置をアドレスおよび長さとして符号化することにより、NVMに記憶され
るデータを、様々なサイズのものとすることが可能になる。例えば、第1の4KB領域は
400Bのサイズまで圧縮されており、全体として単一の読み取り単位に記憶されており
(例えば、1つの読み取り単位の範囲を有し)、1つの読み取り単位の長さを有し、他方
、第2の4KB領域は圧縮不能であり、全体として1より大の読み取り単位内に記憶され
ており(例えば、1より大の読み取り単位の範囲を有し)、1より大の読み取り単位の長
さを有する。別の例では、第3の2KB領域は1KBのサイズまで圧縮されており、2つ
の読み取り単位にまたがって記憶されており(例えば、2つの読み取り単位の範囲を有し
)、1つの読み取り単位の長さを有し、他方、第4の1KB領域は圧縮不能であるが、1
つの読み取り単位内に記憶されており(例えば、1つの読み取り単位の範囲を有し)、1
つの読み取り単位の長さを有する。別の実施形態では、LBAの領域と関連付けられた記
憶の読み取り単位での長さおよび/または範囲を有することにより、LBAの領域のデー
タを取り出すのにNVMの必要な部分だけを読み取ることが可能になる。
【0027】
ある実施形態では、マップのエントリの各々は、エントリと関連付けられたLBAの領
域の属性を指定する、メタデータともいう情報を含む。別の実施形態では、メタデータの
少なくとも一部は、例えば、領域の複数のLBAの各々について別々のメタデータ仕様を
有することによって、領域の粒度より細かい粒度ものである。
【0028】
ある実施形態では、NVM内の様々なサイズの量の圧縮データにアクセスすることによ
り、ある使用シナリオでは記憶効率が改善される。例えば、SSDコントローラは、コン
ピューティングホストから(例えばディスク書き込みコマンドに関連した)(圧縮されて
いない)データを受け取り、データを圧縮し、データをフラッシュメモリへ記憶する。コ
ンピューティングホストからの(例えばディスク読み取りコマンドに関連した)その後の
要求に応答して、SSDコントローラはフラッシュメモリから圧縮データを読み取り、圧
縮データを解凍し、解凍されたデータをコンピューティングホストに提供する。圧縮デー
タは、様々なサイズの量に従ってフラッシュメモリに記憶され、各量のサイズは、例えば
、圧縮アルゴリズム、動作モード、様々なデータに関する圧縮有効性により変動する。S
SDコントローラは、一部は、含まれるマップ表を調べて(1つまたは複数の)ヘッダが
フラッシュメモリのどこに記憶されているか確認することによってデータを解凍する。S
SDコントローラは、適切な(圧縮)データがフラッシュメモリのどこに記憶されている
か確認するためにフラッシュメモリから得た(1つまたは複数の)ヘッダをパースする。
SSDコントローラは、コンピューティングホストに提供すべき解凍データを生成するた
めに、フラッシュメモリからの適切なデータを解凍する。本出願では、「解凍する(un
compress)」(およびその変形)は、「伸張する(decompress)」(
およびその変形)と同義である。
【0029】
様々な実施形態では、SSDコントローラは、コンピューティングホストとインターフ
ェースするためのホストインターフェースと、フラッシュメモリといったNVMとインタ
ーフェースするためのインターフェースと、各インターフェースを制御し、圧縮および解
凍と共に、低レベル冗長性および/または誤り訂正、高レベル冗長性および/または誤り
訂正、ならびに独立シリコン素子を用いた動的高レベル冗長性モード管理を行う(かつ/
または行うことの様々な態様を制御する)ための回路とを含む。
【0030】
様々な実施形態によれば、あるホストインターフェースは、USBインターフェース規
格、CFインターフェース規格、MMCインターフェース規格、eMMCインターフェー
ス規格、サンダーボルトインターフェース規格、UFSインターフェース規格、SDイン
ターフェース規格、メモリ・スティック・インターフェース規格、xDピクチャ・カード
・インターフェース規格、IDEインターフェース規格、SATAインターフェース規格
、SCSIインターフェース規格、SASインターフェース規格、およびPCIeインタ
ーフェース規格のうちの1若しくはそれ以上に準拠する。様々な実施形態によれば、コン
ピューティングホストは、コンピュータ、ワークステーションコンピュータ、サーバコン
ピュータ、ストレージサーバ、SAN、NASデバイス、DASデバイス、ストレージア
プライアンス、PC、ラップトップコンピュータ、ノートブックコンピュータ、ネットブ
ックコンピュータ、タブレット機器またはタブレットコンピュータ、ウルトラブックコン
ピュータ、電子読み取り装置(e−readerなど)、PDA、ナビゲーションンシス
テム、(ハンドヘルド型)GPS機器、自動通信路制御システム、自動車媒体制御システ
ムまたはコンピュータ、プリンタ、コピー機またはファックス機またはオールインワン機
器、POS機器、金銭登録機、メディアプレーヤ、テレビ、メディアレコーダ、DVR、
ディジタルカメラ、セルラハンドセット、コードレス電話機ハンドセット、および電子ゲ
ームのうちの全部または任意の部分である。ある実施形態では、インターフェースホスト
(SAS/SATAブリッジなど)は、コンピューティングホストおよび/またはコンピ
ューティングホストへのブリッジとして動作する。
【0031】
様々な実施形態では、SSDコントローラは、1若しくはそれ以上のプロセッサを含む
。プロセッサは、SSDコントローラの動作を制御し、かつ/または行うためにファーム
ウェアを実行する。SSDコントローラは、コマンドおよび/または状況ならびにデータ
を送り、受け取るためにコンピューティングホストと通信する。コンピューティングホス
トは、オペレーティングシステム、ドライバ、およびアプリケーションのうちの1若しく
はそれ以上を実行する。コンピューティングホストによるSSDコントローラとの通信は
、任意選択で、かつ/または選択的に、ドライバおよび/またはアプリケーションによる
ものである。第1の例では、SSDコントローラへのすべての通信がドライバによるもの
であり、アプリケーションは、ドライバに高レベルコマンドを提供し、ドライバがそれを
SSDコントローラのための特定のコマンドに変換する。第2の例では、ドライバはバイ
パスモードを実施し、アプリケーションは、ドライバを介してSSDコントローラに特定
のコマンドを送ることができるようになっている。第3の例では、PCIe SSDコン
トローラが1若しくはそれ以上の仮想機能(Virtual Functions:VF
s)をサポートし、アプリケーションが、一度構成されると、ドライバをバイパスしてS
SDコントローラを直接通信することを可能にする。
【0032】
様々な実施形態によれば、あるSSDは、HDD、CDドライブ、DVDドライブとい
った磁気的不揮発性記憶および/または光学的不揮発性記憶によって使用されるフォーム
ファクタ、電気的インターフェース、および/またはプロトコルに準拠する。様々な実施
形態では、SSDは、0以上のパリティ符号、0以上のRS符号、0以上のBCH符号、
0以上のビタビ符号または他のトレリス符号、および0以上のLDPC符号の様々な組み
合わせを使用する。
【0033】
例示的実施形態
発明を実施するための形態の概説を終えるにあたり、以下に、例示的実施形態をまとめ
て示す。これらの例示的実施形態は、少なくとも一部は「EC」(Example Co
mbinations:ECs)として明示的に列挙されたものを含み、本明細書で説明
する概念に従った様々な種類の実施形態の詳細な説明を提供するものである。これらの例
は、相互排他的であることも、網羅的であることも、限定的であることも意図されておら
ず、本発明は、これらの例示的実施形態だけに限定されるものではなく、発行される特許
請求の範囲およびこれの均等物の範囲内のすべての可能な改変形態および変形形態を包含
するものである。
【0034】
EC1)システムであって、
暗号鍵を提供することにより、ファームウェア(FW)を暗号化ファームウェアリポジ
トリからの1若しくはそれ以上のイメージとして解読することを可能にする手段であって
、前記イメージは、入出力装置の基準設計に従って構築された入出力装置に含まれる入出
力装置コントローラと互換性があるものである、前記暗号鍵を提供する手段と、
前記暗号化ファームウェアリポジトリへのアクセスを提供する手段と
を有し、
入出力装置は、構成部品のリストの中から選択される構成部品を有し、当該リストは、
前記ファームウェア、前記入出力装置コントローラ、および前記入出力装置の基準設計と
互換性のある構成部品を含むものである
システム。
【0035】
EC2)EC1記載のシステムにおいて、前記暗号鍵を提供する手段は、前記ファーム
ウェアをイメージとして解読するために、事業体(business)に対して前記暗号
鍵を利用可能にする手段を含み、前記アクセスを提供する手段は、前記暗号化ファームウ
ェアリポジトリを事業体対して利用可能にする手段を有するシステム。
【0036】
EC3)システムであって、
暗号化ファームウェア(FW)リポジトリへのアクセスを提供して、暗号鍵により、フ
ァームウェアを当該暗号化ファームウェアリポジトリからの1若しくはそれ以上のイメー
ジとして解読することを可能にする手段であって、前記イメージは、入出力装置の基準設
計に従って構築された入出力装置に含まれる入出力装置コントローラと互換性があるもの
である、前記アクセスを提供する手段と、
前記ファームウェア、前記入出力装置コントローラ、および前記入出力装置の基準設計
と互換性のある構成部品のリストを提供する手段と
を有し、
前記入出力装置は、前記リストの中から選択される構成部品を有するものである
システム。
【0037】
EC4)EC3記載のシステムにおいて、前記アクセスを提供する手段は事業体が解読
を行うことを可能にするシステム。
【0038】
EC5)システムであって、
エージェントに入出力装置の基準設計を提供する手段と、
前記エージェントに構成部品のリストへのアクセスを提供する手段と、
前記エージェントに、
暗号化ファームウェア(FW)リポジトリへのアクセス、
前記ファームウェアを前記暗号化ファームウェアリポジトリからの1若しくはそれ以
上のイメージとして解読することを可能にする暗号鍵、
入出力装置コントローラであって、前記イメージは、当該入出力装置コントローラお
よび入出力装置の基準設計と互換性があるものである、前記入出力装置コントローラ、な
らびに、
入出力装置のプロトタイプインスタンスおよび/または製造インスタンスにイメージ
のうちの1つをダウンロードすることが可能な製造用ソフトウェアツール
のうちの任意の1若しくはそれ以上を提供する手段と
を有し、
前記リスト中の部品の各々は、前記イメージ、前記入出力装置コントローラ、および前
記入出力装置の基準設計と互換性を有し、
前記3つの手段による提供によって、前記エージェントは、前記リストの中から選択さ
れる構成部品に従った入出力装置を生産することが可能となるものである
システム。
【0039】
EC6)EC5記載のシステムにおいて、エージェントは事業体を含むシステム。
【0040】
EC7)システムであって、
入出力装置の基準設計に従って構築された入出力装置コントローラを含む入出力装置に
、入出力装置コントローラと互換性のあるファームウェア(FW)をダウンロードする手
段と、
ファームウェアをパーソナル化する手段と
を有し、
入出力装置は、構成部品のリストの中から選択される構成部品を有し、当該リストは、
ファームウェア、入出力装置コントローラ、および入出力装置の基準設計と互換性のある
構成部品であり、
ファームウェアは、暗号鍵を使用して暗号化ファームウェアリポジトリから解読される
1若しくはそれ以上のイメージのうちの1つである
システム。
【0041】
EC8)システムであって、
暗号鍵を受け取る手段と、
ファームウェア(FW)を少なくとも一部的に受け取った暗号鍵によって、暗号化ファ
ームウェアリポジトリからの1若しくはそれ以上のイメージとしての解読する手段であっ
て、前記イメージは、入出力装置の基準設計に従って構築され、入出力装置コントローラ
を含む入出力装置と互換性があるものである、前記解読する手段と
を有し、
前記入出力装置は、構成部品のリストの中から選択される構成部品を有し、当該リスト
は、ファームウェア、入出力装置コントローラ、および入出力装置の基準設計と互換性の
ある構成部品である
システム。
【0042】
EC9)EC1、EC3、EC5、EC7、またはEC8記載のシステムにおいて、さ
らに、
同じ事業実体が、入出力装置の基準設計、入出力装置コントローラ、リスト、暗号化フ
ァームウェアリポジトリ、および暗号鍵を利用可能にする手段を含むものであるシステム
。
【0043】
EC10)EC1、EC3、EC5、EC7、またはEC8記載のシステムにおいて、
さらに、
同じ事業実体が、入出力装置の基準設計、入出力装置コントローラ、リスト、暗号化フ
ァームウェアリポジトリ、および暗号鍵のうちの任意の1若しくはそれ以上を利用可能に
する手段を含むものであるシステム。
【0044】
EC11)EC9またはEC10記載のシステムにおいて、利用可能にする手段のうち
の任意の、またはすべての部分が、少なくとも一部は、
電子メール、
1若しくはそれ以上の拡張可能なマークアップ言語(XML)注釈付き仕様および/ま
たはXMLベースの形式、
1若しくはそれ以上のサーバ間トランザクション、
インターネットを使用した事業体間自動化システム、
多層化インターネット商取引ベースサーバの任意の1若しくはそれ以上の層、
1若しくはそれ以上のウェブサーバ、データベースサーバ、および/またはアプリケー
ションサーバ、ならびに
1若しくはそれ以上のウェブ、データベース、および/またはアプリケーションのスク
リプト、プログラム、および/またはアプリケーション
のうちの任意の1若しくはそれ以上によって実施されるシステム。
【0045】
EC12)EC1、EC3、EC5、EC7、またはEC8記載のシステムにおいて、
選択される構成部品は、複数の不揮発性メモリデバイス製造者からの不揮発性メモリデバ
イスを含むシステム。
【0046】
EC13)EC12記載のシステムにおいて、入出力装置はソリッドステートディスク
(SSD)を有し、入出力装置コントローラはSSDコントローラを有し、入出力装置の
基準設計はSSD基準設計を有し、不揮発性メモリデバイスはソリッドステート・メモリ
・デバイスを有し、不揮発性メモリデバイス製造者はソリッドステート・メモリ・デバイ
ス製造者を含むシステム。
【0047】
EC14)方法であって、
暗号鍵を提供することにより、ファームウェア(FW)を暗号化ファームウェアリポジ
トリからの1若しくはそれ以上のイメージとして解読することを可能にする工程であって
、前記イメージは、入出力装置の基準設計に従って構築された入出力装置に含まれる入出
力装置コントローラと互換性があるものである、前記暗号鍵を提供する工程
を有し、
前記入出力装置は、構成部品のリストの中から選択される構成部品を有し、当該リスト
は、前記ファームウェア、前記入出力装置コントローラ、および前記入出力装置の基準設
計と互換性のある構成部品を含むものである
方法。
【0048】
EC15)EC14記載の方法において、前記暗号鍵を提供する工程は、前記ファーム
ウェアをイメージとしての解読するために事業体対して前記暗号鍵を利用可能にする工程
を含む方法。
【0049】
EC16)方法であって、
暗号化ファームウェア(FW)リポジトリへのアクセスを提供して、暗号鍵により、フ
ァームウェアを当該記暗号化ファームウェア(FW)リポジトリからの1若しくはそれ以
上のイメージとして解読する工程であって、イメージが、入出力装置の基準設計に従って
構築された入出力装置に含まれる入出力装置コントローラと互換性があるものである、提
供する工程
を有し、
入出力装置は、構成部品のリストの中から選択される構成部品を有し、当該リストは、
ファームウェア、入出力装置コントローラ、および入出力装置の基準設計と互換性のある
構成部品である
方法。
【0050】
EC17)EC16記載の方法において、暗号化ファームウェアへのアクセスを提供す
る工程は、事業体がイメージとしてのファームウェアを暗号鍵によって解読することを可
能にするために暗号化ファームウェアを事業体が利用できるようにする工程を含む方法。
【0051】
EC18)方法であって、
エージェントに要素を提供する工程であって、当該要素は、
暗号化ファームウェア(FW)リポジトリへのアクセス、
暗号化ファームウェアリポジトリからの1若しくはそれ以上のイメージとしてのファ
ームウェアを解読することを可能にする暗号鍵、
入出力装置の基準設計、
入出力装置コントローラであって、前記イメージは、当該入出力装置コントローラお
よび前記入出力装置の基準設計と互換性があるものである、前記入出力装置コントローラ
、ならびに
前記イメージ、前記入出力装置コントローラ、および前記入出力装置の基準設計と互
換性のある構成部品のリストへのアクセス、
前記入出力装置のプロトタイプインスタンスおよび/または製造インスタンスにイメ
ージのうちの1つをダウンロードすることが可能な製造用ソフトウェアツール
のうちの任意の1若しくはそれ以上を含むものである、前記要素を提供する工程
を有し、
前記提供される要素は、前記エージェントが、前記リストの中から選択される構成部品
に従った入出力装置を生産することを可能にするものである
方法。
【0052】
EC19)EC18記載の方法において、エージェントは事業体を含む方法。
【0053】
EC20)方法であって、
入出力装置の基準設計に従って構築された入出力装置コントローラを含む入出力装置に
、入出力装置コントローラと互換性のあるファームウェア(FW)をダウンロードする工
程
を有し、
前記入出力装置は、構成部品のリストの中から選択される構成部品を有し、当該リスト
は、前記ファームウェア、前記入出力装置コントローラ、および前記入出力装置の基準設
計と互換性のある構成部品であり、
前記ファームウェアは、暗号鍵を使用して暗号化ファームウェアリポジトリから解読さ
れる1若しくはそれ以上のイメージのうちの1つである
方法。
【0054】
EC21)方法であって、
少なくとも一部的に暗号鍵を使用して、ファームウェアを暗号化ファームウェア(FW
)リポジトリからの1若しくはそれ以上のイメージとして解読する工程であって、当該イ
メージは、入出力装置の基準設計に従って構築され、入出力装置コントローラを含む入出
力装置と互換性があるものである、前記解読する工程
を有し、
前記入出力装置は、構成部品のリストの中から選択される構成部品を有し、当該リスト
は、前記ファームウェア、前記入出力装置コントローラ、および前記入出力装置の基準設
計と互換性のある構成部品である
方法。
【0055】
EC22)EC14、EC16、EC18、EC20、またはEC21記載の方法にお
いて、入出力装置の基準設計、入出力装置コントローラ、リスト、暗号化ファームウェア
リポジトリ、および暗号鍵は、同じ事業実体によって利用可能にされる方法。
【0056】
EC23)EC14、EC16、EC18、EC20、またはEC21記載の方法にお
いて、入出力装置の基準設計、入出力装置コントローラ、リスト、暗号化ファームウェア
リポジトリ、および暗号鍵のうちの任意の1若しくはそれ以上が、同じ事業実体によって
利用可能にされる方法。
【0057】
EC24)EC22または23記載の方法において、利用可能にすることの任意の、ま
たはすべての部分が、少なくとも一部は、
電子メール、
1若しくはそれ以上の拡張可能なマークアップ言語(XML)注釈付き仕様および/ま
たはXMLベースの形式、
1若しくはそれ以上のサーバ間トランザクション、
インターネットを使用した事業体間自動化システム、
多層化インターネット商取引ベースサーバの任意の1若しくはそれ以上の層、
1若しくはそれ以上のウェブサーバ、データベースサーバ、および/またはアプリケー
ションサーバ、ならびに
1若しくはそれ以上ウェブ、データベース、および/またはアプリケーションのスクリ
プト、プログラム、および/またはアプリケーション
のうちの任意の1若しくはそれ以上によるものである方法。
【0058】
EC25)EC14、EC16、EC18、EC20、またはEC21記載の方法にお
いて、選択される構成部品は、複数の不揮発性メモリデバイス製造者からの不揮発性メモ
リデバイスを含む方法。
【0059】
EC26)EC25記載の方法において、入出力装置はソリッドステートディスク(S
SD)を有し、入出力装置コントローラはSSDコントローラを有し、入出力装置の基準
設計はSSD基準設計を有し、不揮発性メモリデバイスはソリッドステート・メモリ・デ
バイスを有し、不揮発性メモリデバイス製造者はソリッドステート・メモリ・デバイス製
造者を含む方法。
【0060】
EC27)方法であって、
入出力装置コントローラと互換性のあるファームウェア(FW)をエージェント対して
利用可能にする工程と、
前記エージェントに入出力装置の基準設計を提供する工程と、
前記エージェントに不揮発性メモリデバイスのリストを提供する工程であって、当該リ
ストは、複数の不揮発性メモリデバイス製造者からの不揮発性メモリデバイスを含むもの
である、前記基準設計を提供する工程と
を有し、
前記入出力装置コントローラはファームウェアと協動して、前記入出力装置の基準設計
、および前記リスト内の不揮発性メモリデバイスのうち任意のデバイスによって前記入出
力装置を実装することが可能なものである
方法。
【0061】
EC28)EC27記載の方法において、前記エージェントは事業体であり、ファーム
ウェアを利用できるようにする工程は、事業体にファームウェアの使用許諾を与える工程
を含む方法。
【0062】
EC29)EC28記載の方法において、さらに、
事業体に入出力装置コントローラを販売する工程を含むものである方法。
【0063】
EC30)EC29記載の方法において、入出力装置はソリッドステートディスク(S
SD)を有し、入出力装置コントローラはSSDコントローラを有し、入出力装置の基準
設計はSSD基準設計を有し、不揮発性メモリデバイスはソリッドステート・メモリ・デ
バイスを有し、不揮発性メモリデバイス製造者はソリッドステート・メモリ・デバイス製
造者を含む方法。
【0064】
EC31)EC30記載の方法において、ソリッドステート・メモリ・デバイスはフラ
ッシュ・メモリ・デバイスを有し、ソリッドステート・メモリ・デバイス製造者はフラッ
シュ・メモリ・デバイス製造者を含む方法。
【0065】
EC32)EC31記載の方法において、さらに、
事業体が、リストのフラッシュ・メモリ・デバイスの中から選択される多量のフラッシ
ュ・メモリ・デバイスを購入する工程であって、多量がSSDの大量生産を可能にするの
に十分な量である、購入する工程を含むものである方法。
【0066】
EC33)EC32記載の方法において、事業体はシステムベンダであり、販売する動
作、使用許諾を与える動作、および2つの提供する動作は設計業者によって行われる方法
。
【0067】
EC34)EC33記載の方法において、システムベンダと設計業者とは互いに異なる
会社である方法。
【0068】
EC35)EC33記載の方法において、システムベンダと設計業者とは同じ会社の部
分である方法。
【0069】
EC36)EC31記載の方法において、さらに、
事業体に、1若しくはそれ以上のプロトタイプSSDの検証および/または特徴付けの
結果を提供する工程であって、プロトタイプSSDが、SSD基準設計に従ったSSDコ
ントローラおよびファームウェアのインスタンスを使用して構築されるものである、提供
する工程をさらに含むものである方法。
【0070】
EC37)EC31記載の方法において、さらに、
事業体に、1若しくはそれ以上のプロトタイプSSDの1若しくはそれ以上の信頼性実
証試験(RDT)の結果を提供する工程であって、プロトタイプSSDが、SSD基準設
計に従ったSSDコントローラおよびファームウェアのインスタンスを使用して構築され
るものである、提供する工程をさらに含むものである方法。
【0071】
EC38)EC37記載の方法において、事業体はシステムベンダであり、販売する動
作、使用許諾を与える動作、および3つの提供する動作は設計業者によって行われる方法
。
【0072】
EC39)EC31記載の方法において、さらに、
事業体に、1若しくはそれ以上のプロトタイプSSDの1若しくはそれ以上の設計検証
試験(DVT)の結果を提供する工程であって、プロトタイプSSDが、SSD基準設計
に従ったSSDコントローラおよびファームウェアのインスタンスを使用して構築される
ものである、提供する工程を含むものである方法。
【0073】
EC40)EC39記載の方法において、事業体はシステムベンダであり、販売する動
作、使用許諾を与える動作、および3つの提供する動作は設計業者によって行われる方法
。
【0074】
EC41)EC31記載の方法において、さらに、
基準設計に従って事業体によって直接、または間接的に製造される、ファームウェアと
SSDコントローラとを含む複数のSSDのうちの故障したSSDについての故障解析を
提供する工程を含むものである方法。
【0075】
EC42)EC41記載の方法において、事業体はシステムベンダであり、販売する工
程、使用許諾を与える工程、および3つの提供する工程は設計業者によって行われる方法
。
【0076】
EC43)EC31記載の方法において、事業体は第1の事業体であり、さらに、
第2の事業体に製造用ソフトウェアツールを提供する工程であって、製造用ソフトウェ
アツールがSSDの製造インスタンスにファームウェアをダウンロードすることができる
ようになっているものである、提供する工程を含むものである方法。
【0077】
EC44)EC43記載の方法において、第1の事業体はシステムベンダであり、販売
する動作、使用許諾を与える動作、および3つの提供する動作は設計業者によって行われ
る方法。
【0078】
EC45)EC43記載の方法において、製造用ソフトウェアツールは、さらに、SS
Dの製造インスタンスに、製造自己試験およびSSDの製造インスタンスのフラッシュメ
モリの試験のうちの1若しくはそれ以上を行うよう指図することができるようになってい
る方法。
【0079】
EC46)EC43記載の方法において、第1の事業体と第2の事業体とは同じ会社の
ものである方法。
【0080】
EC47)EC43記載の方法において、第1の事業体と第2の事業体とは互いに異な
る会社のものである方法。
【0081】
EC48)EC25または28記載の方法において、入出力装置の基準設計は、入出力
装置コントローラ、不揮発性メモリデバイスのうちの1若しくはそれ以上、1若しくはそ
れ以上の電源、1若しくはそれ以上の温度センサ、1若しくはそれ以上のケーシング、1
若しくはそれ以上のプリント回路基板、1若しくはそれ以上の受動部品、およびファーム
ウェアのうちの1若しくはそれ以上に従ったものである方法。
【0082】
EC49)EC26または30記載の方法において、ソリッドステート・メモリ・デバ
イスはフラッシュ・メモリ・デバイスを有し、ソリッドステート・メモリ・デバイス製造
者はフラッシュ・メモリ・デバイス製造者を含む方法。
【0083】
EC50)EC49記載の方法において、
SSDは、複数のクラスのSSDのうちの第1の特定のクラスのSSDであり、
SSDコントローラはファームウェアと協動して、さらに、SSD基準設計およびリス
トのフラッシュ・メモリ・デバイスのうちのいずれかによって、少なくとも1つの第2の
特定のクラスのSSDを実施することができるようになっており、
各クラスのSSDは、企業クラスのSSD、クラウドクラスのSSD、産業クラスのS
SD、およびクライアントクラスのSSDを含む
方法。
【0084】
EC51)EC49記載の方法において、
SSDは、複数のクラスのSSDのうちの第1の特定のクラスのSSDであり、
各クラスのSSDは、企業クラスのSSD、クラウドクラスのSSD、産業クラスのS
SD、およびクライアントクラスのSSDを有し、
ファームウェアは、複数のクラスのファームウェアのうちの第1の特定のクラスのファ
ームウェアであり、
各クラスのファームウェアは、企業クラスのSSDと関連付けられた企業クラスのファ
ームウェア、クラウドクラスのSSDと関連付けられたクラウドクラスのファームウェア
、産業クラスのSSDと関連付けられた産業クラスのファームウェア、およびクライアン
トクラスのSSDと関連付けられたクライアントクラスのファームウェアを有し、
SSDコントローラは各クラスのファームウェアのうちの第2の特定のクラスのファー
ムウェアと協動して、さらに、SSD基準設計およびリストのフラッシュ・メモリ・デバ
イスのうちのいずれかによって、各クラスのSSDのうちの少なくとも1つの第2の特定
のクラスのSSDを実施することができるようになっており、
第2の特定のクラスのSSDは、第2の特定のクラスのファームウェアと関連付けられ
たクラスのSSDである方法。
【0085】
EC52)EC51記載の方法において、各クラスのファームウェアのうちの少なくと
も2つが、少なくともいくつかの共通のルーチン、関数、および/または演算を有する方
法。
【0086】
EC53)EC50または51記載の方法において、フラッシュ・メモリ・デバイス製
造者のうちの第1の製造者からのフラッシュ・メモリ・デバイスが第1の特定のクラスの
SSDを製造するのに使用可能であり、フラッシュ・メモリ・デバイス製造者のうちの第
2の製造者からのフラッシュ・メモリ・デバイスが第2の特定のクラスのSSDを製造す
るのに使用可能である方法。
【0087】
EC54)EC50または51記載の方法において、フラッシュ・メモリ・デバイス製
造者のうちの特定の製造者のフラッシュ・メモリ・デバイスの複数のカテゴリのうちの第
1のカテゴリのうちのフラッシュ・メモリ・デバイスが第1の特定のクラスのSSDを製
造するのに使用可能であり、カテゴリのうちの第2のカテゴリのうちのフラッシュ・メモ
リ・デバイスが第2の特定のクラスのSSDを製造するのに使用可能である方法。
【0088】
EC55)EC49記載の方法において、SSDは相対的に大容量のSSDであり、S
SDコントローラはファームウェアと協動して、さらに、SSD基準設計およびリストの
フラッシュ・メモリ・デバイスのうちのいずれかによって、相対的に小容量のSSDを実
施することができるようになっている方法。
【0089】
EC56)EC55記載の方法において、フラッシュ・メモリ・デバイス製造者のうち
第1の製造者からのフラッシュ・メモリ・デバイスが相対的に大容量のSSDを製造する
のに使用可能であり、フラッシュ・メモリ・デバイス製造者のうち第2の製造者からのフ
ラッシュ・メモリ・デバイスが相対的に小容量のSSDを製造するのに使用可能である方
法。
【0090】
EC57)EC55記載の方法において、フラッシュ・メモリ・デバイス製造者のうち
特定の製造者のフラッシュ・メモリ・デバイスの複数のカテゴリのうち第1のカテゴリの
うちフラッシュ・メモリ・デバイスが相対的に大容量のSSDを製造するのに使用可能で
あり、カテゴリのうち第2のカテゴリのうちフラッシュ・メモリ・デバイスが相対的に小
容量のSSDを製造するのに使用可能である方法。
【0091】
EC58)EC49記載の方法において、SSDコントローラは単一の集積回路(IC
)において実施される方法。
【0092】
EC59)EC49記載の方法において、SSDコントローラは、リストのフラッシュ
・メモリ・デバイスのうちのいずれかとデータをやりとりすることが可能なフラッシュ・
メモリ・インターフェースを含む方法。
【0093】
EC60)EC49記載の方法において、SSDコントローラは、記憶インターフェー
ス規格と適合し、記憶インターフェースを介して記憶コマンドを提供するコンピューティ
ングホストに接続することができるようになっている記憶インターフェースを含む方法。
【0094】
EC61)EC60記載の方法において、さらに、
記憶コマンドを提供するようにコンピューティングホストを動作させる工程を含むもの
である方法。
【0095】
EC62)方法であって、
ホストに接続された記憶デバイスの記憶インターフェースを介して1若しくはそれ以上
のコマンドを当該ホストから受け取る工程であって、前記コマンドは、前記ホストによっ
て、通常は記憶デバイスによって生成されるログ情報の記憶専用である記憶デバイスの記
憶空間に記憶されるものである、前記コマンドを受け取る工程と、
イベントに応答してコマンドの実行の開始を指示するインジケータを受け取る工程と、
前記イベントに応答してコマンドを実行する工程と
を含む方法。
【0096】
EC63)EC62記載の方法において、さらに、
事業体がファームウェアを暗号化ファームウェアリポジトリからの1若しくはそれ以上
のイメージとして解読することを可能にするために事業体に暗号鍵を提供する工程であっ
て、イメージが、記憶デバイスに含まれる記憶デバイスコントローラの処理要素によって
実行可能であり、イメージがコマンドの実行を可能にし、記憶デバイスが記憶デバイスの
基準設計に従って組み立てられているものである、提供する工程と、
事業体に暗号化ファームウェアリポジトリへのアクセスを提供する工程と
を含むものであり、
コマンドは記憶デバイスの製造自己試験を含み、
記憶デバイスは、構成部品のリストの中から選択される構成部品を有し、リストは、フ
ァームウェア、記憶デバイスコントローラ、および記憶デバイスの基準設計と互換性のあ
る構成部品である
方法。
【0097】
EC64)EC62記載の方法において、
記憶デバイスは記憶デバイスコントローラと記憶媒体とを有し、
記憶デバイスコントローラと互換性のあるファームウェアの使用許諾が事業体に与えら
れ、
記憶デバイスは、基準設計と、事業体に提供される候補記憶媒体デバイスのリストとに
従って組み立てられており、
記憶媒体は、リストの中から事業体によって選択される要素で構成されており、
記憶デバイスコントローラはファームウェアと協動して、基準設計およびリストの任意
のメンバによって記憶デバイスを実施することができるようになっており、
記憶デバイスコントローラはファームウェアと協動して、実行する工程を行うことがで
きるようになっており、
実行する工程は記憶デバイスの製造自己試験を行う
方法。
【0098】
EC65)EC62記載の方法において、さらに、
実行する工程によって生成される1若しくはそれ以上の結果を記憶する工程を含むもの
である方法。
【0099】
EC66)EC62記載の方法において、インジケータは、ホストからの、記憶インタ
ーフェースを介したものである方法。
【0100】
EC67)EC62記載の方法において、記憶空間は、通常は自己モニタリング分析報
告技術(SMART)ログ専用のものである方法。
【0101】
EC68)EC67記載の方法において、SMARTログは第1のSMARTログであ
り、さらに、
実行する工程の1若しくはそれ以上の結果を第2のSMARTログに記憶する工程を含
むものである方法。
【0102】
EC69)EC62記載の方法において、イベントは、次の電源投入イベントおよび即
時開始イベントを含む複数のイベントのうちの1つである方法。
【0103】
EC70)EC62記載の方法において、2つの受け取る動作および実行する動作は、
少なくとも一部は、ソリッドステートディスク(SSD)のコントローラによって行われ
る方法。
【0104】
EC71)EC62記載の方法において、2つの受け取る動作および実行する動作は、
少なくとも一部は、記憶デバイスに含まれる記憶デバイスコントローラによって実施され
る方法。
【0105】
EC72)EC71記載の方法において、記憶デバイスコントローラは単一の集積回路
(IC)において実施される方法。
【0106】
EC73)方法であって、
記憶デバイスの記憶インターフェースを介して、記憶デバイスのログ記憶空間の第1の
部分に記憶された1若しくはそれ以上のコマンドの実行の開始を指示するインジケータを
受け取る工程と、
前記インジケータの受け取りに応答してコマンドを実行する工程と、
実行する工程の全部または任意の部分によって生成される1若しくはそれ以上の結果を
、ログ記憶空間の第2の部分に記憶する工程と
を含む方法。
【0107】
EC74)EC73記載の方法において、インジケータは、記憶インターフェースに接
続されたホストによって提供される方法。
【0108】
EC75)EC73記載の方法において、ログ記憶空間は、記憶インターフェースを介
して受け取られる自己モニタリング分析報告技術(SMART)ログ記憶空間読み取りま
たは書き込みアクセスによるアクセスと互換性のあるSMARTログ記憶空間である方法
。
【0109】
EC76)EC73記載の方法において、受け取る動作、実行する動作、および記憶す
る動作は、少なくとも一部は、ソリッドステートディスク(SSD)のコントローラによ
って行われる方法。
【0110】
EC77)方法であって、
記憶デバイスにおいて、記憶デバイスの記憶インターフェースを介してホストから情報
を受け取る工程であって、情報が、記憶デバイスの製造自己試験の少なくとも一部分を行
うことと一致する1若しくはそれ以上のコマンドを含み、情報が、さらに、コマンドは記
憶デバイスのログ記憶の第1の部分に記憶されるべきであるという指示を含むものである
、受け取る工程と、
記憶デバイスにおいて、記憶インターフェースを介してホストからインジケータを受け
取る工程であって、インジケータが、ログ記憶の第1の部分に記憶されたコマンドの実行
をいつ開始すべきか指定する記憶デバイスへの信号である、受け取る工程と、
記憶デバイスにおいて、インジケータの受け取りに応答して、コマンドを実行する工程
と、
記憶デバイスにおいて、実行する工程の少なくとも一部の結果をログ記憶の第2の部分
に記憶する工程と
を有し、
ログ記憶は、記憶インターフェースを介して受け取られる自己モニタリング分析報告技
術(SMART)ログ記憶アクセスコマンドによってアクセス可能なSMARTログ記憶
である
方法。
【0111】
EC78)EC77記載の方法において、インジケータは、コマンドの実行を即時に開
始するよう指示し、記憶デバイスは、少なくとも一部は実行する工程の間にホストに接続
される方法。
【0112】
EC79)EC77記載の方法において、インジケータは、次の電源投入時にコマンド
の実行を開始するよう指示し、実行する工程は、さらに、次の電源投入に応答したもので
あり、記憶デバイスは、少なくとも一部は実行する工程の間にホストから切り離される方
法。
【0113】
EC80)EC62、EC73、またはEC77記載の方法において、コマンドのうち
の少なくとも1つが記憶デバイスに記憶デバイスに含まれる記憶媒体を試験するよう指図
し、これによって記憶デバイスが記憶インターフェースを介して受け取られるデータを記
憶することが可能になる方法。
【0114】
EC81)EC62、EC73、またはEC77記載の方法において、記憶デバイスは
ソリッドステートディスク(SSD)を有し、記憶インターフェースはシリアル・アドバ
ンスド・テクノロジ・アタッチメント(SATA)インターフェースを含む方法。
【0115】
EC82)EC62、EC73、またはEC77記載の方法において、インジケータは
、ベンダ固有の自己モニタリング分析報告技術(SMART)コマンドトランスポート(
SCT)コマンドである方法。
【0116】
EC83)EC62、EC73、またはEC77記載の方法において、コマンドは、記
憶書き込みコマンド、記憶消去コマンド、記憶インターフェース・バーンイン・コマンド
、遅延コマンド、ストレス・モード・コマンド、ループコマンド、および条件付きコマン
ドのうちの任意の1若しくはそれ以上を含む方法。
【0117】
EC84)EC62、EC73、またはEC77記載の方法において、コマンドは、一
連の1若しくはそれ以上の種類の動作を含む方法。
【0118】
EC85)EC84記載の方法において、動作の種類のうちの少なくとも1つは、記憶
デバイスに含まれる記憶媒体の書き込みを指定する方法。
【0119】
EC86)EC84記載の方法において、動作の種類のうちの少なくとも1つは、記憶
デバイスに含まれる記憶媒体の消去を指定する方法。
【0120】
EC87)EC84記載の方法において、動作の種類のうちの少なくとも1つは、記憶
デバイスに含まれる記憶媒体の検証を指定する方法。
【0121】
EC88)EC84記載の方法において、動作の種類のうちの1若しくはそれ以上は、
長さに対応するサイズの記憶デバイスに含まれる記憶媒体の部分と関連付けられたアドレ
スおよび長さを含む方法。
【0122】
EC89)EC65、EC73、またはEC77記載の方法において、結果は、試験状
態、1若しくはそれ以上の進捗インジケータ、1若しくはそれ以上の統計、および誤り情
報のうちの任意の1若しくはそれ以上を含む方法。
【0123】
EC90)EC89記載の方法において、試験状態は、起動されていない、起動されて
いる、実行中、入力の終了、打ち切られた、および誤り試験状態のうちの任意の1若しく
はそれ以上を含む方法。
【0124】
EC91)EC89記載の方法において、進捗インジケータのうちの少なくとも1つが
、
コマンドに対する入力オフセット、
コマンドのうちの現在のコマンドのインジケータ、
完了したコマンドの数の尺度、
コマンドのうちの任意の1若しくはそれ以上の完了の量の尺度、
試験されるべき状態のままである記憶デバイスのユーザデータ記憶の量の尺度、
試験されたユーザデータ記憶の量の尺度、および
実行する工程の開始時からの経過時間の尺度
のうちの任意の1若しくはそれ以上を含む方法。
【0125】
EC92)EC89記載の方法において、統計のうちの少なくとも1つが、記憶デバイ
スの全部または任意の部分の温度、記憶デバイスのユーザデータ記憶の不良部分、ユーザ
データ記憶の再マップ部分、および記憶デバイスの誤りのない読み取りのうちの1若しく
はそれ以上を含む方法。
【0126】
EC93)EC89記載の方法において、誤り情報は、訂正可能誤りおよび/または訂
正不能誤り、プログラム誤り、消去誤り、ビット誤りのカウントおよび/または種類、な
らびに誤りイベントのうちの1若しくはそれ以上を含む方法。
【0127】
EC94)EC62、EC73、またはEC77記載の方法において、記憶デバイスは
、少なくとも一部は、含まれる1若しくはそれ以上のフラッシュ・メモリ・デバイスによ
って大容量記憶を実施する方法。
【0128】
EC95)EC94記載の方法において、記憶デバイスは、フラッシュ・メモリ・デバ
イスのうちの少なくとも1つとデータをやりとりすることが可能なフラッシュ・メモリ・
インターフェースを含む方法。
【0129】
EC96)EC94記載の方法において、記憶インターフェースは記憶インターフェー
ス規格と互換性のある方法。
【0130】
EC97)EC62、EC74、またはEC77記載の方法において、さらに、
コマンドを提供するようにホストを動作させる工程を含むものである方法。
【0131】
EC98)記憶デバイスであって、
ファームウェアと、
ファームウェアの命令を実行することが可能な処理要素と、
記憶インターフェースに接続されたホストから、1若しくはそれ以上のコマンド、およ
びイベントに応答したコマンドの実行の開始を指示するインジケータを受け取ることが可
能な記憶インターフェースと、
記憶空間と
を有し、
処理要素によるファームウェアの1若しくはそれ以上のルーチンの実行が、
ホストによって指図されるコマンドを、通常は記憶デバイスによって生成されるログ情
報の記憶専用である記憶空間の部分に記憶すること、および
イベントに応答してコマンドを実行すること
を可能にする
記憶デバイス。
【0132】
EC99)EC98記載の記憶デバイスにおいて、ファームウェア、処理要素、記憶イ
ンターフェース、および記憶空間はソリッドステートディスク(SSD)に含まれ、記憶
インターフェースは、シリアル・アドバンスド・テクノロジ・アタッチメント(SATA
)インターフェースを含む記憶デバイス。
【0133】
EC100)EC98記載の記憶デバイスにおいて、記憶空間は第1の自己モニタリン
グ分析報告技術(SMART)ログと第2のSMARTログとを有し、第1のSMART
ログは上記部分を有し、実行することは、第2のSMARTログに記憶される1若しくは
それ以上の結果を生成する記憶デバイス。
【0134】
EC101)記憶デバイスであって、
第1の部分と第2の部分とを有するログ記憶空間と、
ファームウェアと、
前記ファームウェアの命令を実行することが可能な処理要素と、
記憶インターフェースに接続されたホストから、第1の部分に記憶された1若しくはそ
れ以上のコマンドの実行の開始を指示するインジケータを受け取ることが可能な記憶イン
ターフェースと
を有し、
前記処理要素によってファームウェアの1若しくはそれ以上のルーチンが実行されるこ
とにより、
インジケータの受け取りに応答してコマンドを実行する工程、および
前記実行する工程の全部または任意の部分によって生成される1若しくはそれ以上の結
果を第2の部分に記憶する工程
が可能になるものである
記憶デバイス。
【0135】
EC102)EC101記載の記憶デバイスにおいて、ファームウェア、処理要素、記
憶インターフェース、およびログ記憶空間はソリッドステートディスク(SSD)に含ま
れ、記憶インターフェースはシリアル・アドバンスド・テクノロジ・アタッチメント(S
ATA)インターフェースを含む記憶デバイス。
【0136】
EC103)EC101記載の記憶デバイスにおいて、ログ記憶空間は第1および第2
の自己モニタリング分析報告技術(SMART)ログを有し、第1のSMARTログは第
1の部分を有し、第2のSMARTログは第2の部分を含む記憶デバイス。
【0137】
EC104)EC98またはEC101記載の記憶デバイスにおいて、コマンドは、記
憶書き込みコマンド、記憶消去コマンド、記憶インターフェース・バーンイン・コマンド
、遅延コマンド、ストレス・モード・コマンド、ループコマンド、および条件付きコマン
ドのうちの任意の1若しくはそれ以上を含む記憶デバイス。
【0138】
EC105)EC98またはEC101記載の記憶デバイスにおいて、さらに、
記憶媒体を含むものであり、
コマンドは、一連の1若しくはそれ以上の種類の動作を有し、動作のうちの任意の1若
しくはそれ以上が、記憶媒体の書き込み、消去、および検証のうちの任意の1若しくはそ
れ以上を指定することを含む記憶デバイス。
【0139】
EC106)記憶デバイスの処理要素によって実行されると、処理要素に、動作を行わ
せる命令のセットが記憶されている有形のコンピュータ可読媒体であって、動作が、
記憶デバイスの記憶インターフェースを介した、記憶デバイスに接続されたホストから
の1若しくはそれ以上のコマンドの受け取りを管理する動作であって、コマンドがホスト
によって、通常は記憶デバイスによって生成されるログ情報の記憶専用である記憶デバイ
スの記憶空間の部分に記憶されるよう指図されるものである、管理する動作と、
イベントに応答してコマンドの実行の開始を指示するインジケータを認識する動作と、
イベントに応答してコマンドを実行する動作と
を含むものである有形のコンピュータ可読媒体。
【0140】
EC107)EC106記載の有形のコンピュータ可読媒体において、記憶空間は第1
の自己モニタリング分析報告技術(SMART)ログと第2のSMARTログとを有し、
第1のSMARTログは上記部分を有し、コマンドを実行する動作は、第2のSMART
ログに記憶される1若しくはそれ以上の結果を生成する有形のコンピュータ可読媒体。
【0141】
EC108)記憶デバイスの処理要素によって実行されると、処理要素に、動作を行わ
せる命令のセットが記憶されている有形のコンピュータ可読媒体であって、動作が、
記憶デバイスの記憶インターフェースを介した、記憶デバイスのログ記憶空間の第1の
部分に記憶された1若しくはそれ以上のコマンドの実行の開始を指示するインジケータの
受け取りを管理する動作と、
インジケータの受け取りに応答してコマンドを実行する動作と、
コマンドを実行する動作の全部または任意の部分によって生成される1若しくはそれ以
上の結果をログ記憶空間の第2の部分に記憶する動作と
を含むものである有形のコンピュータ可読媒体。
【0142】
EC109)EC108記載の有形のコンピュータ可読媒体において、ログ記憶空間は
第1および第2の自己モニタリング分析報告技術(SMART)ログを有し、第1のSM
ARTログは第1の部分を有し、第2のSMARTログは第2の部分を含む有形のコンピ
ュータ可読媒体。
【0143】
EC110)EC106またはEC108記載の有形のコンピュータ可読媒体において
、コマンドは、記憶書き込みコマンド、記憶消去コマンド、記憶インターフェース・バー
ンイン・コマンド、遅延コマンド、ストレス・モード・コマンド、ループコマンド、およ
び条件付きコマンドのうちの任意の1若しくはそれ以上を含む有形のコンピュータ可読媒
体。
【0144】
EC111)EC106またはEC108記載の有形のコンピュータ可読媒体において
、記憶デバイスは記憶媒体を有し、コマンドは、一連の1若しくはそれ以上の種類の動作
を有し、動作のうちの任意の1若しくはそれ以上が、記憶媒体の書き込み、消去、および
検証のうちの任意の1若しくはそれ以上を指定することを含む有形のコンピュータ可読媒
体。
【0145】
EC112)システムであって、
ホストに接続された記憶デバイスの記憶インターフェースを介して1若しくはそれ以上
のコマンドをホストから受け取る手段であって、前記コマンドは、ホストによって、通常
は記憶デバイスによって生成されるログ情報の記憶専用である記憶デバイスの記憶空間の
部分に記憶されるものである、前記コマンドを受け取る手段と、
イベントに応答してコマンドの実行の開始を指示するインジケータを受け取る手段と、
前記イベントに応答してコマンドを実行する手段と
を含むシステム。
【0146】
EC113)EC112記載のシステムにおいて、コマンドを受け取る手段、インジケ
ータを受け取る手段、および実行する手段はソリッドステートディスク(SSD)に含ま
れ、記憶インターフェースはシリアル・アドバンスド・テクノロジ・アタッチメント(S
ATA)インターフェースを含むシステム。
【0147】
EC114)システムであって、
記憶デバイスが、記憶デバイスの記憶インターフェースを介して、記憶デバイスのログ
記憶空間の第1の部分に記憶された1若しくはそれ以上のコマンドの実行の開始を指示す
るインジケータを受け取る手段と、
受け取る手段に応答してコマンドを実行する手段と、
ログ記憶空間の第2の部分に、実行する手段の全部または任意の部分によって生成され
る1若しくはそれ以上の結果を記憶する手段と
を含むシステム。
【0148】
EC115)EC114記載のシステムにおいて、受け取る手段、実行する手段、およ
び記憶する手段はソリッドステートディスク(SSD)に含まれ、記憶インターフェース
はシリアル・アドバンスド・テクノロジ・アタッチメント(SATA)インターフェース
を含むシステム。
【0149】
EC116)EC112またはEC114記載のシステムにおいて、コマンドは、記憶
書き込みコマンド、記憶消去コマンド、記憶インターフェース・バーンイン・コマンド、
遅延コマンド、ストレス・モード・コマンド、ループコマンド、および条件付きコマンド
のうちの任意の1若しくはそれ以上を含むシステム。
【0150】
EC117)EC112またはEC114記載のシステムにおいて、さらに、
記憶媒体を含むものであり
コマンドは、一連の1若しくはそれ以上の種類の動作を有し、動作のうちの任意の1若
しくはそれ以上が、記憶媒体の書き込み、消去、および検証のうちの任意の1若しくはそ
れ以上を指定することを含むシステム。
【0151】
EC118)方法であって、
エージェントに入出力装置コントローラを提供する工程と、
前記エージェントに入出力装置コントローラと互換性のあるファームウェア(FW)を
提供する工程と、
前記エージェントに入出力装置の基準設計を提供する工程と、
前記エージェントに不揮発性メモリデバイスのリストを提供する工程であって、当該リ
ストは複数の不揮発性メモリデバイス製造者からの不揮発性メモリデバイスを含むもので
ある、前記リストを提供する工程と
を有し、
前記入出力装置コントローラはファームウェアと協動して、前記入出力装置の基準設計
、およびリストの不揮発性メモリデバイスのうちの任意のデバイスによって、前記入出力
装置を実施することが可能なものである
方法。
【0152】
EC119)EC118記載の方法において、
エージェントは事業体を含み、エージェントに入出力装置コントローラを提供する工程
は、事業体に入出力装置コントローラを販売する工程を有し、
ファームウェアを提供する工程は、事業体にファームウェアの使用許諾を与える工程を
含む
方法。
【0153】
EC120)EC119記載の方法において、入出力装置はソリッドステートディスク
(SSD)を有し、入出力装置コントローラはSSDコントローラを有し、入出力装置の
基準設計はSSD基準設計を含み、不揮発性メモリデバイスはフラッシュ・メモリ・デバ
イスを含み、不揮発性メモリデバイス製造者はフラッシュ・メモリ・デバイス製造者を含
む方法。
【0154】
EC121)EC119記載の方法において、さらに、
事業体が、リストの不揮発性メモリデバイスの中から選択される多量の不揮発性メモリ
デバイスを購入する工程であって、多量が入出力装置の大量生産を可能にするのに十分な
量である、購入する工程を含むものである方法。
【0155】
EC122)EC121記載の方法において、事業体はシステムベンダであり、販売す
る動作、使用許諾を与える動作、および2つの提供する動作は設計業者によって行われる
方法。
【0156】
EC123)EC122記載の方法において、システムベンダと設計業者とは互いに異
なる会社である方法。
【0157】
EC124)EC123記載の方法において、入出力装置は企業クラスのSSDであり
、入出力装置コントローラはファームウェアと協動して、さらに、入出力装置の基準設計
、およびリストの不揮発性メモリデバイスのうちの少なくとも一部によって、クライアン
トクラスのSSDを実施することができるようになっている方法。
【0158】
EC125)EC123記載の方法において、入出力装置は相対的に大容量のSSDで
あり、入出力装置コントローラはファームウェアと協動して、さらに、入出力装置の基準
設計、およびリストの不揮発性メモリデバイスのうちの少なくとも一部によって、相対的
に小容量のSSDを実施することができるようになっている方法。
【0159】
EC126)記憶インターフェース規格を有し、または参照する前述のECのうちのい
ずれかであって、記憶インターフェース規格は、
ユニバーサル・シリアル・バス(USB)インターフェース規格、
コンパクトフラッシュ(登録商標)(CF)インターフェース規格、
マルチメディアカード(MMC)インターフェース規格、
組み込みMMC(eMMC)インターフェース規格、
サンダーボルト(Thunderbolt)インターフェース規格、
UFSインターフェース規格、
セキュアディジタル(SD)インターフェース規格、
メモリ・スティック・インターフェース規格、
xDピクチャ・カード・インターフェース規格、
統合ドライブエレクトロニクス(IDE)インターフェース規格、
シリアル・アドバンスド・テクノロジ・アタッチメント(SATA)インターフェース
規格、
外部SATA(eSATA)インターフェース規格、
小型コンピュータ・システム・インターフェース(SCSI)インターフェース規格、
シリアル小型コンピュータ・システム・インターフェース(SAS)インターフェース
規格、
ファイバ・チャネル・インターフェース規格、
イーサネット(登録商標)(Ethernet(登録商標))インターフェース規格、
および
周辺装置相互接続エクスプレス(PCIe)インターフェース規格
のうちの1若しくはそれ以上を含むEC。
【0160】
EC127)フラッシュ・メモリ・インターフェースを有し、または参照する前述のE
Cのうちのいずれかであって、フラッシュ・メモリ・インターフェースは、
オープンNANDフラッシュインターフェース(ONFI)、
トグルモードインターフェース、
ダブルデータレート(DDR)同期インターフェース、
DDR2同期インターフェース、
同期インターフェース、および
非同期インターフェース
のうちの1若しくはそれ以上と互換性のあるEC。
【0161】
EC128)コンピューティングホストを有し、または参照する前述のECのうちのい
ずれかであって、コンピューティングホストは、
コンピュータ、
ワークステーションコンピュータ、
サーバコンピュータ、
ストレージサーバ、
ストレージ・アタッチト・ネットワーク(SAN)、
ネットワーク・アタッチト・ストレージ(NAS)デバイス、
ダイレクト・アタッチト・ストレージ(DAS)デバイス、
ストレージアプライアンス、
パーソナルコンピュータ(PC)、
ラップトップコンピュータ、
ノートブックコンピュータ、
ネットブックコンピュータ、
タブレット機器またはタブレットコンピュータ、
ウルトラブックコンピュータ、
電子読み取り装置(e−reader)、
携帯情報端末(PDA)
ナビゲーションシステム
(ハンドヘルド型)全地球測位システム(GPS)機器、
自動車制御システム、
自動車媒体制御システムまたは自動車媒体制御コンピュータ、
プリンタ、コピー機またはファックス機またはオールインワン機器、
販売時点(POS)機器、
金銭登録機、
メディアプレーヤ、
テレビ、
メディアレコーダ、
ディジタル・ビデオ・レコーダ(DVR)
ディジタルカメラ、
セルラハンドセット、
コードレス電話機ハンドセット、および
電子ゲーム
のうちの1若しくはそれ以上を含むEC。
【0162】
EC129)少なくとも1つのフラッシュ・メモリ・デバイスを有し、または参照する
前述のECのうちのいずれかであって、少なくとも1つのフラッシュ・メモリ・デバイス
の少なくとも一部分は、
NANDフラッシュ技術記憶セル、および
NORフラッシュ技術記憶セル
のうちの1若しくはそれ以上を含むEC。
【0163】
EC130)少なくとも1つのフラッシュ・メモリ・デバイスを有し、または参照する
前述のECのうちのいずれかであって、少なくとも1つのフラッシュ・メモリ・デバイス
の少なくとも一部分は、
シングルレベルセル(SLC)フラッシュ技術記憶セル、および
マルチレベルセル(MLC)フラッシュ技術記憶セル
のうちの1若しくはそれ以上を含むEC。
【0164】
EC131)少なくとも1つのフラッシュ・メモリ・デバイスを有し、または参照する
前述のECのうちのいずれかであって、少なくとも1つのフラッシュ・メモリ・デバイス
の少なくとも一部分は、
多結晶シリコン技術ベースの電荷蓄積セル、および
シリコン窒化膜技術ベースの電荷蓄積セル
のうちの1若しくはそれ以上を含むEC。
【0165】
EC132)少なくとも1つのフラッシュ・メモリ・デバイスを有し、または参照する
前述のECのうちのいずれかであって、少なくとも1つのフラッシュ・メモリ・デバイス
の少なくとも一部分は、
2次元技術ベースのフラッシュメモリ技術、および
3次元技術ベースのフラッシュメモリ技術
のうちの1若しくはそれ以上を含むEC。
【0166】
システム
図1Aに、VDMMおよびSSD MSTとの使用に準拠したSSDコントローラを含
むSSDの実施形態の選択された詳細を図示する。SSDコントローラは、NVM素子(
フラッシュメモリなど)によって実施されるような不揮発性記憶を管理するためのもので
ある。SSDコントローラ100は1若しくはそれ以上の外部インターフェース110を
介してホスト(不図示)に通信可能に接続されている。様々な実施形態によれば、外部イ
ンターフェース110は、SATAインターフェース、SASインターフェース、PCI
eインターフェース、ファイバ・チャネル・インターフェース、イーサネット(登録商標
)(Ethernet(登録商標))インターフェース(10ギガビットイーサネット(
登録商標)など)、上記のインターフェースのいずれかの非標準バージョン、カスタムイ
ンターフェース、またはストレージおよび/若しくは通信および/若しくはコンピューテ
ィング機器を相互接続するのに使用される任意の他の種類のインターフェースのうちの1
若しくはそれ以上である。例えば、ある実施形態では、SSDコントローラ100は、S
ATAインターフェースおよびPCIeインターフェースを含む。
【0167】
SSDコントローラ100は、さらに、1若しくはそれ以上のデバイスインターフェー
ス190を介して、フラッシュデバイス192の1若しくはそれ以上のインスタンスとい
った、1若しくはそれ以上の記憶デバイスを含むNVM199に通信可能に接続されてい
る。様々な実施形態によれば、デバイスインターフェース190は、非同期インターフェ
ース、同期インターフェース、シングルデータレート(SDR)インターフェース、ダブ
ルデータレート(DDR)インターフェース、DRAM互換DDR若しくはDDR2同期
インターフェース、ONFI2.2やONFI3.0互換インターフェースといったON
FI互換インターフェース、トグルモード互換フラッシュインターフェース、上記のイン
ターフェースのいずれかの非標準バージョン、カスタムインターフェース、または記憶デ
バイスに接続するのに使用される任意の他の種類のインターフェースのうちの1若しくは
それ以上である。
【0168】
フラッシュデバイス192の各々は、ある実施形態では、1若しくはそれ以上の個々の
フラッシュダイ194を有する。フラッシュデバイス192のうちの特定のフラッシュデ
バイスの種類に従って、特定のフラッシュデバイス192内の複数のフラッシュダイ19
4に、並列に、任意選択で、かつ/または選択的にアクセスすることができる。フラッシ
ュデバイス192は、単に、SSDコントローラ100に通信可能に接続することが可能
な記憶デバイスの一種を表しているにすぎない。様々な実施形態では、SLC NAND
フラッシュメモリ、MLC NANDフラッシュメモリ、NORフラッシュメモリ、多結
晶シリコン若しくはシリコン窒化膜技術ベースの電荷蓄積セルを使用したフラッシュメモ
リ、2次元若しくは3次元技術ベースのフラッシュメモリ、読み取り専用メモリ、スタテ
ィック・ランダム・アクセス・メモリ、ダイナミック・ランダム・アクセス・メモリ、強
磁性メモリ、相変化メモリ、レーストラックメモリ、ReRAM、または任意の他の種類
のメモリデバイス若しくは記憶媒体といった、任意の種類の記憶デバイスを使用すること
ができる。
【0169】
様々な実施形態によれば、デバイスインターフェース190は、1つのバスにつきフラ
ッシュデバイス192の1若しくはそれ以上のインスタンスを有する1若しくはそれ以上
のバス;グループ内のバスにおおむね並列にアクセスさせる、1つのバスにつきフラッシ
ュデバイス192の1若しくはそれ以上のインスタンスを有する1若しくはそれ以上のバ
スグループ;またはデバイスインターフェース190上へのフラッシュデバイス192の
1若しくはそれ以上のインスタンスの任意の他の編成として編成される。
【0170】
引き続き
図1Aにおいて、SSDコントローラ100は、ホストインターフェース11
1、データ処理121、バッファ131、マップ141、リサイクラ151、ECC16
1、デバイスインターフェース論理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までの数として表された一意のタグを有する。ある実施形態では、タグ追跡1
13は、外部インターフェース110を介して受け取ったコマンドのための外部タグを、
SSDコントローラ100による処理の間にコマンドを追跡するのに使用される内部タグ
と関連付けることができるようになっている。
【0172】
様々な実施形態によれば、データ処理121は、任意選択で、かつ/または選択的に、
バッファ131と外部インターフェース110との間で送られる一部または全部のデータ
を処理する、およびデータ処理121は、任意選択で、かつ/または選択的に、バッファ
131に記憶されたデータを処理する、以下のうちの1若しくはそれ以上が行われる。あ
る実施形態では、データ処理121は、1若しくはそれ以上のエンジン123を使用して
、書式設定、書式設定の変更、符号変換、ならびに他のデータ処理および/または操作タ
スクのうちの1若しくはそれ以上を行う。
【0173】
バッファ131は、外部インターフェース110からデバイスインターフェース190
へ/デバイスインターフェース190から外部インターフェース110へ送られたデータ
を記憶する。ある実施形態では、バッファ131は、さらに、SSDコントローラ100
によってフラッシュデバイス192の1若しくはそれ以上のインスタンスを管理するのに
使用される、一部または全部のマップ表といったシステムデータも記憶する。様々な実施
形態では、バッファ131は、データの一時記憶に使用されるメモリ137、バッファ1
31への、かつ/またはバッファ131からのデータの移動を制御するのに使用されるD
MA133、ならびに高レベル誤り訂正および/または冗長性機能と、他のデータ移動お
よび/または操作機能とを提供するのに使用されるECC−X135のうちの1若しくは
それ以上を有する。高レベル冗長性機能の一例がRAID様の能力(RASIEなど)で
あり、ディスクレベルではなく、フラッシュ・デバイス・レベル(フラッシュデバイス1
92のうちの複数のものなど)および/またはフラッシュダイ・レベル(フラッシュダイ
194など)の冗長性を備える。
【0174】
様々な実施形態によれば、以下のうちの1若しくはそれ以上である。ECC161は、
任意選択で、かつ/または選択的に、バッファ131とデバイスインターフェース190
との間で送られる一部または全部のデータを処理する;およびECC161は、任意選択
で、かつ/または選択的に、バッファ131に記憶されたデータを処理する。ある実施形
態では、ECC161は、例えば1若しくはそれ以上のECC技法に従った低レベル誤り
訂正および/または冗長性機能を提供するのに使用される。ある実施形態では、ECC1
61は、CRC符号、ハミング符号、RS符号、BCH符号、LDPC符号、ビタビ符号
、トレリス符号、硬判定符号、軟判定符号、消去ベースの符号、任意の誤り検出および/
または訂正符号、ならびに上記の任意の組み合わせのうちの1若しくはそれ以上を実施す
る。ある実施形態では、ECC161は、1若しくはそれ以上の復号器(LDPC復号器
など)を含む。
【0175】
デバイスインターフェース論理191は、デバイスインターフェース190を介してフ
ラッシュデバイス192のインスタンスを制御する。デバイスインターフェース論理19
1は、フラッシュデバイス192のプロトコルに従ってフラッシュデバイス192のイン
スタンスへ/からデータを送ることができるようになっている。デバイスインターフェー
ス論理191は、デバイスインターフェース190を介したフラッシュデバイス192の
インスタンスの制御を選択的に配列するスケジューリング193を含む。例えば、ある実
施形態では、スケジューリング193は、フラッシュデバイス192のインスタンスへの
操作を待ち行列に入れ、フラッシュデバイス192(またはフラッシュダイ194)のイ
ンスタンスの個々のインスタンスへの操作を、フラッシュデバイス192(またはフラッ
シュダイ194)のインスタンスの個々のインスタンスが利用可能になるに従って選択的
に送ることができるようになっている。
【0176】
マップ141は、外部インターフェース110上で使用されるデータアドレス指定と、
デバイスインターフェース190上で使用されるデータアドレス指定との間の変換を行い
、表143を使用して外部データアドレスからNVM199内の位置へマップする。例え
ば、ある実施形態では、マップ141は、外部インターフェース110上で使用されるL
BAを、表143によって提供されるマッピングにより、1若しくはそれ以上のフラッシ
ュダイ194を対象とするブロックおよび/またはページアドレスに変換する。ドライブ
製造または割り振り解除以来一度も書き込まれていないLBAでは、マップは、LBAが
読み取られた場合に返すべきデフォルト値を指し示す。例えば、割り振り解除コマンドを
処理するときに、マップは、割り振り解除されたLBAに対応するエントリがデフォルト
値のうちの1つを指し示すように変更される。様々な実施形態では、様々なデフォルト値
があり、各々が対応するポインタを有する。複数のデフォルト値は、ある(例えば第1の
範囲内の)割り振り解除されたLBAを1つのデフォルト値として読み取り、ある(例え
ば第2の範囲内の)割り振り解除されたLBAを別のデフォルト値として読み取ることを
可能にする。デフォルト値は、様々な実施形態では、フラッシュメモリ、ハードウェア、
ファームウェア、コマンドおよび/若しくはプリミティブ引数および/若しくはパラメー
タ、プログラマブルレジスタ、またはそれらの様々な組み合わせによって定義される。
【0177】
ある実施形態では、マップ141は、表143を使用して、外部インターフェース11
0上で使用されるアドレスと、デバイスインターフェース190上で使用されるデータア
ドレス指定との間の変換を行い、かつ/またはルックアップする。様々な実施形態によれ
ば、表143は、1レベルマップ、2レベルマップ、マルチレベルマップ、マップキャッ
シュ、圧縮マップ、あるアドレス空間から別のアドレス空間への任意の種類のマッピング
、および上記の任意の組み合わせのうちの1若しくはそれ以上である。様々な実施形態に
よれば、表143は、スタティック・ランダム・アクセス・メモリ、ダイナミック・ラン
ダム・アクセス・メモリ、NVM(フラッシュメモリなど)、キャッシュメモリ、オンチ
ップメモリ、オフチップメモリ、および上記の任意の組み合わせのうちの1若しくはそれ
以上を含む。
【0178】
ある実施形態では、リサイクラ151は、不要部分の整理を行う。例えば、ある実施形
態では、フラッシュデバイス192のインスタンスは、ブロックが書き換え可能になる前
に消去されなければならないブロックを含む。リサイクラ151は、例えば、マップ14
1によって維持されるマップをスキャンすることによって、フラッシュデバイス192の
インスタンスのどの部分が実際に使用されているか(例えば、割り振り解除されているの
ではなく割り振られていること)を判定し、フラッシュデバイス192のインスタンスの
未使用の(例えば割り振り解除された)部分を、未使用の部分を消去することによって書
き込みに利用できるようにすることができるようになっている。別の実施形態では、リサ
イクラ151は、フラッシュデバイス192のインスタンスのより大きい連続した部分を
書き込みに利用できるようにするために、フラッシュデバイス192のインスタンス内に
記憶されたデータを移動することができるようになっている。
【0179】
ある実施形態では、フラッシュデバイス192のインスタンスは、異なる種類および/
または属性のデータを記憶するための1若しくはそれ以上のバンドを保持するように、選
択的に、かつ/または動的に構成され、管理され、かつ/または使用される。バンドの数
、配置、サイズ、および種類は、動的に変更可能である。例えば、コンピューティングホ
ストからのデータはホット(アクティブな)バンドに書き込まれ、リサイクラ151から
のデータはコールド(あまりアクティブではない)バンドに書き込まれる。ある使用シナ
リオでは、コンピューティングホストが長い順次のストリームを書き込む場合には、ホッ
トバンドのサイズが増大し、コンピューティングホストがランダムな書き込みを行い、ま
たはわずかな書き込みしか行わない場合には、コールドバンドのサイズが増大する。
【0180】
CPU171は、SSDコントローラ100の様々な部分を制御する。CPU171は
、CPUコア172を含む。CPUコア172は、様々な実施形態によれば、1若しくは
それ以上のシングルコアプロセッサまたはマルチコアプロセッサである。CPUコア17
2内の個々のプロセッサコアは、ある実施形態では、マルチスレッド化されている。CP
Uコア172は、命令および/またはデータのキャッシュおよび/またはメモリを含む。
例えば、命令メモリは、CPUコア172が、SSDコントローラ100を制御するため
のプログラム(ファームウェアとも呼ばれるソフトウェアなど)を実行することを可能に
する命令を含む。ある実施形態では、CPUコア172によって実行されるファームウェ
アの一部または全部が、(例えば、
図1BのNVM199のファームウェア106として
図示されている)フラッシュデバイス192のインスタンス上に記憶される。
【0181】
様々な実施形態では、CPU171は、外部インターフェース110を介して受け取ら
れるコマンドを、コマンドが進行している間に追跡し、制御するコマンド管理173、バ
ッファ131の割り振りおよび使用を制御するバッファ管理175、マップ141を制御
する変換管理177、データアドレス指定の整合性を制御し、例えば、外部データアクセ
スと再利用データアクセスとの間の矛盾を回避するコヒーレンシ管理179、デバイスイ
ンターフェース論理191を制御するデバイス管理181、識別情報の変更および通信を
制御する識別情報管理182、ならびに、任意選択で、他の管理部をさらに含む。CPU
171によって果たされる管理機能は、そのいずれか、若しくは全部が、ハードウェア、
ソフトウェア(CPUコア172上や、外部インターフェース110を介して接続された
ホスト上で実行されるファームウェアなど)、またはそれらの任意の実施形態によって制
御され、かつ/または管理され、あるいは、そのどれも、制御も管理もされないものであ
る。
【0182】
ある実施形態では、CPU171は、性能統計の収集および/または報告、SMART
の実施、電源逐次開閉機構の制御、電力消費の制御および/または調整、電源障害への応
答、クロック速度の制御および/またはモニタリングおよび/または調整、ならびに他の
管理タスクのうちの1若しくはそれ以上といった、他の管理タスクを行うことができるよ
うになっている。
【0183】
様々な実施形態は、SSDコントローラ100と同様の、例えば、ホストインターフェ
ース111および/または外部インターフェース110の適応による、様々なコンピュー
ティングホストを用いた動作と互換性のあるコンピューティングホスト・フラッシュ・メ
モリ・コントローラを含む。様々なコンピューティングホストは、コンピュータ、ワーク
ステーションコンピュータ、サーバコンピュータ、ストレージサーバ、SAN、NASデ
バイス、DASデバイス、ストレージアプライアンス、PC、ラップトップコンピュータ
、ノートブックコンピュータ、ネットブックコンピュータ、タブレット機器またはタブレ
ットコンピュータ、ウルトラブックコンピュータ、電子読み取り装置(e−reader
など)、PDA、ナビゲーションンシステム、(ハンドヘルド型)GPS機器、自動通信
路制御システム、自動車媒体制御システムまたはコンピュータ、プリンタ、コピー機また
はファックス機またはオールインワン機器、POS機器、金銭登録機、メディアプレーヤ
、テレビ、メディアレコーダ、DVR、ディジタルカメラ、セルラハンドセット、コード
レス電話機ハンドセット、および電子ゲームのうちの1つまたはそれらの任意の組み合わ
せを含む。
【0184】
様々な実施形態では、SSDコントローラ(またはコンピューティングホスト・フラッ
シュ・メモリ・コントローラ)の全部または任意の部分が、単一のIC、マルチダイIC
の単一のダイ、マルチダイICの複数のダイ、または複数のIC上で実施される。例えば
、バッファ131は、SSDコントローラ100の他の要素と同じダイ上に実施される。
別の例では、バッファ131は、SSDコントローラ100の他の要素と異なるダイ上に
実施される。
【0185】
図1Bに、
図1AのSSDの1若しくはそれ以上のインスタンスを含むシステムの様々
な実施形態の選択された詳細を図示する。SSD101は、デバイスインターフェース1
90を介してNVM199に接続されたSSDコントローラ100を含む。図には、様々
な種別の実施形態、すなわち、ホストに直接接続された単一のSSD、各々がそれぞれの
外部インターフェースを介してホストに直接それぞれ接続されている複数のSSD、およ
び様々な相互接続要素を介してホストに間接的に接続された1若しくはそれ以上のSSD
が示されている。
【0186】
ホストに直接接続された単一のSSDの例示的実施形態としては、SSD101の1つ
のインスタンスが、外部インターフェース110を介してホスト102に直接接続される
(例えば、スイッチ/ファブリック/中間コントローラ103が省かれ、バイパスされ、
またはパススルーされる)。各々がそれぞれの外部インターフェースを介してホストに直
接接続されている複数のSSDの例示的実施形態としては、SSD101の複数のインス
タンスの各々が、外部インターフェース110のそれぞれのインスタンスを介してホスト
102に直接それぞれ接続される(例えば、スイッチ/ファブリック/中間コントローラ
103が省かれ、バイパスされ、またはパススルーされる)。様々な相互接続要素を介し
てホストに間接的に接続された1若しくはそれ以上のSSDの例示的実施形態としては、
SSD101の1若しくはそれ以上のインスタンスの各々が、ホスト102に間接的にそ
れぞれ接続される。各間接接続は、スイッチ/ファブリック/中間コントローラ103に
接続された外部インターフェース110のそれぞれのインスタンス、およびホスト102
に接続する中間インターフェース104を介したものである。
【0187】
スイッチ/ファブリック/中間コントローラ103を含む実施形態の一部は、メモリイ
ンターフェース180を介して接続された、SSDによってアクセス可能なカードメモリ
112Cも含む。様々な実施形態では、SSD、スイッチ/ファブリック/中間コントロ
ーラ、および/またはカードメモリのうちの1若しくはそれ以上が、物理的に識別可能な
モジュール、カード、または差し込み可能な要素(入出力カード116など)上に含まれ
る。ある実施形態では、SSD101(またはその変形)は、ホスト102として動作す
るイニシエータ(開始プログラム)に接続されたSASドライブまたはSATAドライブ
に対応する。
【0188】
ホスト102は、OS105、ドライバ107、アプリケーション109、マルチデバ
イス管理ソフトウェア114の様々な組み合わせといった、ホストソフトウェア115の
様々な要素を実行することができるようになっている。点線矢印107Dは、ホストソフ
トウェア←→入出力装置通信、例えば、SSD101のインスタンスのうちの1若しくは
それ以上から/へ、ドライバ107を介したOS105、ドライバ107、および、ドラ
イバ107を介して、またはVFとして直接アプリケーション109のうちの任意の1若
しくはそれ以上へ/から送られ/受け取られるデータを表す。
【0189】
OS105は、SSDとインターフェースするための(概念的にはドライバ107によ
って図示されている)ドライバを含み、かつ/またはそのようなドライバを用いて動作す
ることができるようになっている。Windows(登録商標)の様々なバージョン(9
5、98、ME、NT、XP、2000、サーバ、Vista、および7など)、Lin
ux(登録商標)の様々なバージョン(Red Hat、Debian、およびUbun
tuなど)、ならびにMacOSの様々なバージョン(8、9およびXなど)がOS10
5の例である。様々な実施形態では、ドライバは、SATA、AHCI、NVM Exp
ressといった標準のインターフェースおよび/またはプロトコルを用いて動作する標
準のドライバおよび/または汎用のドライバ(「シュリンクラップされた(市販の)」ま
たは「プリインストールされた」ともいう)であり、あるいは、任意選択で、SSD10
1に特有のコマンドの使用を可能にするようにカスタマイズされており、かつ/またはベ
ンダ特有のものである。あるドライブおよび/またはドライバは、アプリケーションレベ
ルのプログラム、例えば最適化NANDアクセス(Optimized NAND Ac
cess)(ONAともいう)または直接NANDアクセス(Direct NAND
Access)(DNAともいう)の各技法によるアプリケーション109などが、コマ
ンドをSSD101に直接伝えることを可能にするパススルーモードを有し、カスタマイ
ズされたアプリケーションが、汎用ドライバとでさえもSSD101に特有のコマンドを
使用することを可能にする。ONAの技法は、非標準変更子(hints)の使用、ベン
ダ特有のコマンドの使用、非標準の統計の通信、例えば圧縮可能性に従った実際のNVM
の使用、および他の技法のうちの1若しくはそれ以上を含む。DNAの技法は、NVMへ
のマップされていない読み取り、書き込み、および/または消去アクセスを提供する非標
準のコマンドまたはベンダ特有の(コマンド)の使用、例えば、入出力装置が通常は行う
はずのデータの書式設定をバイパスすることによる、NVMへのより直接的なアクセスを
提供する非標準の、またはベンダ特有のコマンドの使用、および他の技法のうちの1若し
くはそれ以上を含む。ドライバの例は、ONAまたはDNAサポートなしのドライバ、O
NA使用可能ドライバ、DNA使用可能ドライバ、ONA/DNA使用可能ドライバであ
る。ドライバの別の例は、ベンダ提供ドライバ、ベンダ開発ドライバ、および/またはベ
ンダ拡張ドライバ、ならびにクライアント提供ドライバ、クライアント開発ドライバ、お
よび/またはクライアント拡張ドライバである。
【0190】
アプリケーションレベルのプログラムの例は、ONAまたはDNAサポートなしのアプ
リケーション、ONA使用可能アプリケーション、DNA使用可能アプリケーション、お
よびONA/DNA使用可能アプリケーションである。点線矢印109Dは、アプリケー
ション←→入出力装置通信(ドライバによるバイパスや、アプリケーションのためのVF
によるバイパスなど)、例えば、OSを仲介として使用するアプリケーションなしでSS
Dと通信するONA使用可能アプリケーションおよびONA使用可能ドライバなどを表す
。点線矢印109Vは、アプリケーション←→入出力装置通信(アプリケーションのため
のVFによるバイパスなど)、例えば、OSまたはドライバを仲介として使用するアプリ
ケーションなしでSSDと通信するDNA使用可能アプリケーションおよびDNA使用可
能ドライバなどを表す。
【0191】
NVM199の1若しくはそれ以上の部分が、ある実施形態では、ファームウェア記憶
、例えばファームウェア106に使用される。ファームウェア記憶は、1若しくはそれ以
上のファームウェアイメージ(またはその部分)を含む。ファームウェアイメージは、例
えばSSDコントローラ100のCPUコア172によって実行される、例えばファーム
ウェアの1若しくはそれ以上のイメージを有する。ファームウェアイメージは、別の例で
は、例えばファームウェア実行時にCPUコアによって参照される、定数、パラメータ値
、NVMデバイス情報の1若しくはそれ以上のイメージを有する。ファームウェアのイメ
ージは、例えば、現在のファームウェアイメージおよび0以上の(ファームウェア更新に
対して)前のファームウェアイメージに対応する。様々な実施形態では、ファームウェア
は、汎用動作モード、標準動作モード、ONA動作モード、および/またはDNA動作モ
ードを提供する。ある実施形態では、ファームウェア動作モードのうちの1若しくはそれ
以上が、ドライバによって任意選択で伝えられ、かつ/または提供される、鍵または様々
なソフトウェア技法によって使用可能とされる(例えば、1若しくはそれ以上のAPIが
「ロック解除」される)。
【0192】
スイッチ/ファブリック/中間コントローラを欠くある実施形態では、SSDは、外部
インターフェース110を介して直接ホストに接続される。様々な実施形態では、SSD
コントローラ100は、RAIDコントローラといった他のコントローラの1若しくはそ
れ以上の中間レベルを介してホストに接続される。ある実施形態では、SSD101(ま
たはその変形)は、SASドライブまたはSATAドライブに対応し、スイッチ/ファブ
リック/中間コントローラ103は、イニシエータにさらに接続されたエキスパンダに対
応し、あるいは、スイッチ/ファブリック/中間コントローラ103は、エキスパンダを
介してイニシエータに間接的に接続されたブリッジに対応する。ある実施形態では、スイ
ッチ/ファブリック/中間コントローラ103は、1若しくはそれ以上のPCIeスイッ
チおよび/またはファブリックを含む。
【0193】
様々な実施形態、例えば、コンピューティングホストとしてのホスト102(コンピュ
ータ、ワークステーションコンピュータ、サーバコンピュータ、ストレージサーバ、SA
N、NASデバイス、DASデバイス、ストレージアプライアンス、PC、ラップトップ
コンピュータ、ノートブックコンピュータ、および/またはネットブックコンピュータな
ど)を有する実施形態のあるものでは、コンピューティングホストは、任意選択で、1若
しくはそれ以上のローカルサーバおよび/またはリモートサーバ(例えば、任意選択のサ
ーバ118)と(例えば、任意選択の入出力装置/リソースおよび記憶装置/リソース1
17および任意選択のLAN/WAN119を介して)通信することができるようになっ
ている。通信は、例えば、SSD101要素のうちの任意の1若しくはそれ以上のローカ
ルおよび/またはリモートのアクセス、管理、および/または使用を可能にする。ある実
施形態では、通信は、全部または一部がイーサネット(登録商標)(Ethernet(
登録商標))によるものである。ある実施形態では、通信は、全部または一部がファイバ
チャネルによるものである。LAN/WAN119は、様々な実施形態では、1若しくは
それ以上のローカル・エリア・ネットワークおよび/または広域ネットワーク、例えば、
サーバファーム内のネットワーク、サーバファームを接続するネットワーク、メトロエリ
アネットワーク、およびインターネットのうちの任意の1若しくはそれ以上を表す。
【0194】
様々な実施形態では、1若しくはそれ以上のNVMと組み合わされたSSDコントロー
ラおよび/またはコンピューティングホスト・フラッシュ・メモリ・コントローラが、U
SB記憶コンポーネント、CF記憶コンポーネント、MMC記憶コンポーネント、eMM
C記憶コンポーネント、サンダーボルト記憶コンポーネント、UFS記憶コンポーネント
、SD記憶コンポーネント、メモリスティック記憶コンポーネント、xDピクチャカード
記憶コンポーネントといった不揮発性記憶コンポーネントとして実施される。
【0195】
様々な実施形態では、SSDコントローラ(またはコンピューティングホスト・フラッ
シュ・メモリ・コントローラ)の全部またはいずれかの部分、またはその機能が、コント
ローラが接続されるべきホスト(
図1Bのホスト102など)において実施される。様々
な実施形態では、SSDコントローラ(若しくはコンピューティングホスト・フラッシュ
・メモリ・コントローラ)の全部またはいずれかの部分、またはその機能が、ハードウェ
ア(論理回路など)、ソフトウェアおよび/若しくはファームウェア(ドライバソフトウ
ェアおよび/若しくはSSD制御ファームウェアなど)、またはそれらの任意の組み合わ
せによって実施される。例えば、(例えば
図1AのECC161および/またはECC−
X135と同様の)ECC部の、またはECC部と関連付けられた機能が、一部はホスト
上のソフトウェアによって、一部はSSDコントローラ内のファームウェアとハードウェ
アとの組み合わせによって実施される。別の例として、(例えば
図1Aのリサイクラ15
1と同様の)リサイクラ部の、またはリサイクラ部と関連付けられた機能が、一部はホス
ト上のソフトウェアによって、一部はコンピューティングホスト・フラッシュ・メモリ・
コントローラ内のハードウェアによって実施される。
【0196】
マッピング操作
図2に、LBAのLPN部分のマッピングの実施形態の選択された詳細を図示する。あ
る実施形態では、読み取り単位は、NVMのページの部分といった、独立に読み取ること
のできるNVMの最も細かい粒度である。別の実施形態では、読み取り単位は、検査ビッ
トによって保護されるすべてのデータに(低レベル)誤り訂正符号の検査ビット(冗長性
ともいう)を加えたものに対応する。例えば、
図1AのECC161は、検査ビットによ
る、例えばLDPC符号による誤り訂正を実施し、読み取り単位は、LDPC符号化ビッ
トによって保護されるデータビットにLDPC符号を加えたものを実施する符号化ビット
に対応する。
【0197】
ある実施形態では、マップ141は、LBA211のLPN213部分を、例えば(図
1Aに図示される)表143によって、LPNのためのマップ情報221にマップする。
LPNのためのマップ情報(例えばLPNのためのマップ情報221)をマップエントリ
ともいう。マップ141は、LPNを対応するマップエントリと関連付けるといわれる。
様々な実施形態では、マッピングは、1若しくはそれ以上の連想ルックアップ、1若しく
はそれ以上の非連想ルックアップ、および/または1若しくはそれ以上の他の技法による
ものである。
【0198】
ある実施形態では、SSDコントローラ100は、潜在的に、かつ/またはアクティブ
に使用されているLPNごとに1つのマップエントリを維持する。
【0199】
ある実施形態では、LPNのためのマップ情報221は、それぞれの読み取り単位アド
レス223および読み取り単位での長さ225を含む。ある実施形態では、長さおよび/
または範囲は、例えば、読み取り単位での長さ225の全部またはいずれかの部分におい
て、例えば、長さを範囲からのオフセットとして記憶することによって、符号化して記憶
される。別の実施形態では、第1のLPNは第1のマップエントリと関連付けられており
、(第1のLPNと異なるが、第1のLPNによって参照される論理ページと同サイズの
論理ページを参照する)第2のLPNは第2のマップエントリと関連付けられており、第
1のマップエントリのそれぞれの読み取り単位での長さは、第2のマップエントリのそれ
ぞれの読み取り単位での長さと異なる。
【0200】
様々な実施形態では、同じ時点において、第1のLPNは第1のマップエントリと関連
付けられており、(第1のLPNと異なる)第2のLPNは第2のマップエントリと関連
付けられており、第1のマップエントリのそれぞれの読み取り単位アドレスは、第2のマ
ップエントリのそれぞれの読み取り単位アドレスと同じである。別の実施形態では、第1
のLPNと関連付けられたデータおよび第2のLPNと関連付けられたデータは、どちら
も、NVM199内の同じデバイスの同じ物理ページに記憶されている。
【0201】
様々な実施形態によれば、読み取り単位アドレス223は、NVM内の開始アドレス、
NVM内の終了アドレス、上記のいずれかのオフセット、およびLPN213と関連付け
られたNVMの部分を識別するための任意の他の技法のうちの1若しくはそれ以上と関連
付けられている。
【0202】
図3に、読み取り単位の量で測った長さを総体として有する、様々な読み取り単位とし
て編成された読み取りデータを生成するための、読み取り単位アドレスのところのNVM
へのアクセスの実施形態の選択された詳細を図示する。様々な実施形態によれば、最初の
読み取り単位313は、NVMのアドレス空間における最低のアドレスを有する読み取り
データ311内の読み取り単位のうちの1つ、読み取り単位のうちの固定された1つ、読
み取り単位のうちの任意の1つ、読み取り単位のうちの可変の1つ、および任意の他の技
法によって選択される読み取り単位のうちの1つのうちの1若しくはそれ以上である。様
々な実施形態では、SSDコントローラ100は、NVM199にアクセスし、読み取り
単位での長さ225によって指定される数以下の数の読み取り単位を読み取ることによっ
て読み取りデータ311を生成することができるようになっている。
【0203】
図4Aに、(
図3の読み取り単位313や読み取り単位315といった)読み取り単位
の実施形態の選択された詳細を読み取り単位401Aとして図示する。様々な実施形態お
よび/または使用シナリオにおいて、ヘッダ1 411AからヘッダN 419Aは連続
しており、ヘッダの各々によって(例えばそれぞれのオフセットにより)識別されるそれ
ぞれのデータ領域は、ヘッダの最後のものに後に続いて連続している。各データ領域は総
体としてデータバイト421Aを形成している。各データ領域は、各ヘッダが記憶される
位置順と一致した位置順で記憶される。例えば、読み取り単位の先頭のところの第1のヘ
ッダを考えると、第2のヘッダおよび第3のヘッダは、第1のヘッダのすぐ後に続く。(
第1のヘッダ内の第1のオフセットによって識別される)第1のデータ領域は第3のヘッ
ダのすぐ後に続く。(第2のヘッダ内の第2のオフセットによって識別される)第2のデ
ータ領域は第1のデータ領域のすぐ後に続く。同様に、(第3のヘッダ内によって識別さ
れる)第3データ領域も第2のデータ領域のすぐ後に続く。
【0204】
図4Bに、(
図3の読み取り単位313や読み取り単位315といった)読み取り単位
の別の実施形態の選択された詳細を読み取り単位401Bとして図示する。様々な実施形
態および/または使用シナリオにおいて、ヘッダマーカ(HM)410Bは、後に続く連
続したヘッダ(ヘッダ1 411B、ヘッダ2 412B...ヘッダN 419B)の数
を指示する任意選択の最初のフィールド(例えば1バイトのフィールド)である。データ
領域(データバイト421B、データバイト422B...データバイト429B)は、そ
れぞれ、ヘッダ(ヘッダ1 411B、ヘッダ2 412B...ヘッダN 419B)に
よって識別され、ヘッダが記憶される位置順とは逆の位置順で記憶される。ヘッダは読み
取り単位の先頭から開始し、対応するデータ領域は読み取り単位の末尾から開始する。あ
る実施形態では、データ領域内のデータバイト(例えば、データバイト421B、データ
バイト422B...データバイト429B)は、前方順(位置順と一致するバイト順)に
配置され、別の実施形態では、データバイトは、逆順(位置順に対して反転されたバイト
順)に配置される。ある実施形態では、ヘッダマーカが、(例えば
図4Aに示すように)
ヘッダおよびデータバイトが同じ位置順で記憶されている読み取り単位で使用される。
【0205】
ある実施形態では、任意選択のパディングバイト431A(または431B)は、特定
のLPNと関連付けられたデータの粒度に従ったものである。例えば、ある実施形態では
、データバイト421A(またはデータバイト421B、データバイト422B...デー
タバイト429Bの総体)が、ヘッダ1 411AからヘッダN 419Aまで(または
ヘッダ1 411B、ヘッダ2 412B...ヘッダN 419B)の最後のヘッダを除
くすべてのヘッダと関連付けられたデータを記憶した後で、決まった量、例えば8バイト
より少ない残りのスペースを有する場合には、最後のヘッダと関連付けられたLPNのデ
ータは後続の読み取り単位において開始する。別の実施形態では、最後のヘッダ内の特定
のオフセット値(例えばすべて1)が、最後のヘッダと関連付けられたLPNのデータが
後続の読み取り単位において開始することを指示する。
【0206】
図5に、いくつかのフィールドを有するヘッダ(例えば、
図4Aのヘッダ1 411A
からヘッダN 419Aまでや、
図4Bのヘッダ1 411Bからヘッダ 419Bまで
のいずれか)の実施形態の選択された詳細を図示する。ある実施形態では、ヘッダは固定
長である(例えば、各ヘッダは同じバイト数の長さである)。ヘッダ501は、種類51
1、最終標識513、フラグ515、LPN517、長さ519、およびオフセット52
1の各フィールドを含む。種類フィールドは、データバイトのカテゴリを識別する。例え
ば、種類フィールドは、データバイトのカテゴリが、ホストデータ(論理ページデータな
ど)またはシステムデータ(マップ情報やチェックポイント情報など)の1つであること
を指示する。最終フィールドは、ヘッダがデータバイトの前の最終ヘッダであることを指
示する。ヘッダマーカを用いるある実施形態では、最終フィールドは任意選択で割愛され
る。LPNフィールドは、ヘッダが関連付けられているLPNである。LPNフィールド
は、特定のLPNと関連付けられたヘッダのうちの特定のヘッダを、例えば、特定のLP
Nと一致するLPNフィールドを有するヘッダを求めてヘッダをサーチすることによって
決定するためのヘッダのパーシングを可能にする。長さフィールドは、データバイトのバ
イト単位の長さ(例えば、ヘッダ501と関連付けられたデータバイト421Aに何バイ
トのデータがあるか)である。ある実施形態では、オフセットフィールド内のオフセット
は、特定の粒度(8バイトの粒度など)に従って丸められる。
【0207】
様々な実施形態では、特定のLPNと関連付けられた一部または全部の情報が、特定の
LPNと関連付けられたマップエントリ、特定のLPNと関連付けられたヘッダ、または
その両方に記憶される。例えば、ある実施形態では、長さ519の一部または全部が、ヘ
ッダではなくマップエントリに記憶される。
【0208】
不揮発性メモリの編成および管理の選択された態様
様々な実施形態において、SSDの大容量記憶を実施するNVMが1若しくはそれ以上
のフラッシュダイによって実施される。各フラッシュダイは整数個のブロック(N個のブ
ロックなど)を含み、ブロックは消去の最小量である。ある実施形態では、各ブロックが
整数個のページを含み、ページは書き込みの最小量である。様々な実施形態によれば、以
下のうちの1若しくはそれ以上が該当する。読み取り単位は読み取りおよび誤り訂正の最
小量である、各ページは整数個の読み取り単位を含む、2つ若しくはそれ以上のページの
関連付けられたグループが整数個の読み取り単位を含む、ならびに、読み取り単位は、任
意選択で、かつ/または選択的に、ページ境界にまたがる。
【0209】
様々な実施形態において、様々なNVM管理機能(読み取り、再利用、消去、および/
またはプログラミング/書き込みなど)が、R−ブロックの単位で行われる。R−ブロッ
クは、例えばフラッシュメモリの、様々なダイ(すべてのダイ、全部または一部が故障し
たものを除くすべてのダイ、および/またはダイのうちの1若しくはそれ以上の選択され
たサブセットなど)に及ぶ論理スライスまたはセクションとして例示される。例えば、R
個のフラッシュダイを有し、各フラッシュダイがN個のブロックを有するフラッシュメモ
リでは、各R−ブロックは、合計でN個のR−ブロックについて、全部合わせたフラッシ
ュダイの各々からの第i番目のブロックである。例を続けて、R個のフラッシュダイのう
ちの1つが故障した場合には、各R−ブロックは、合計でN−1個のR−ブロックについ
て、故障したフラッシュダイを除いたフラッシュダイの各々から第i番目のブロックであ
る。別の例として、各々がN個のブロックを有するR個のフラッシュダイを有するフラッ
シュメモリでは、各R−ブロックは、合計でN/2個のR−ブロックについて、フラッシ
ュダイの各々から第i番目と第(i+1)番目のブロックである。さらに別の例として、
複数のデュアル・プレーン・デバイスを有するフラッシュメモリでは、各R−ブロックは
、デュアル・プレーン・デバイスの各々から第i番目の偶数ブロックと第i番目の奇数ブ
ロックである。
【0210】
仮想ドライブ製造モデル
図6に、仮想SSD製造モデルといった仮想ドライブ製造モデルの実施形態の選択され
た詳細の流れ図を示す。動作は、3つの互いに異なる事業実体、すなわち設計業者610
(集積回路設計会社など)、製造者620(契約製造会社など)、およびシステムベンダ
630(OEMなど)によって行われるものとして図示されている。様々な実施形態にお
いて、互いに異なる事業実体は互いに異なる企業であり、別の実施形態では、互いに異な
る事業実体のうちの1若しくはそれ以上は、同じ企業の部分である。様々な実施形態にお
いて、互いに異なる事業実体のうちの任意の1若しくはそれ以上は、企業、共同経営者、
所有者、進行中の企業を公式、または非公式に運営している1人若しくはそれ以上の個人
、およびいかなる特定の企業にも組織にも帰属せずに運営している1人若しくはそれ以上
の個人、のうちの任意の1若しくはそれ以上である。様々な実施形態において、互いに異
なる事業実体のうちの任意の1若しくはそれ以上は、営利目的の実体、非営利目的の実体
、教育団体、および政府機関のうちの任意の1若しくはそれ以上である。
【0211】
概念的には、設計業者は、SSDコントローラおよび関連付けられたファームウェアを
、システムベンダに、基準設計ならびに、SSDコントローラおよびリストから選択され
る1若しくはそれ以上のフラッシュ・メモリ・デバイス(および/または他の材料)を使
用してSSDを生産するための、推奨され、かつ/またはサポートされるフラッシュ・メ
モリ・デバイス(および/または他のデバイス/構成部品といった他の材料)の関連付け
られたリストと共に提供する。次いでシステムベンダは、少なくとも一部は、SSDコン
トローラ、ファームウェア、基準設計、リスト、および/またはこれらの1若しくはそれ
以上の属性(価格、入手可能性、耐久性、および/または性能など)に基づいて、これら
の中からSSDを製造するための材料を選択する。選択は、リストの中から1若しくはそ
れ以上のフラッシュ・メモリ・デバイスを選択することを含む。システムベンダは、さら
に、SSDの1若しくはそれ以上のプロトタイプを製造するための材料を調達する。様々
な実施形態において、プロトタイプのうちの異なるものは、例えば、選択されるメモリデ
バイスの比較を可能にするために、選択されるフラッシュ・メモリ・デバイスのうちの異
なるものを使用して構築される。製造者(システムベンダからの指図に従って働く契約製
造者など)がプロトタイプSSDを構築する。設計業者はプロトタイプSSDを評価し、
評価の結果の全部または任意の部分がシステムベンダに提供される。
【0212】
システムベンダは、少なくとも、提供された結果の一部分に基づき、直接、または契約
製造者(プロトタイプSSDを構築した契約製造者など)により、またはシステムベンダ
と契約製造者の両方により、SSDを大量生産する。システムベンダは、大量生産で使用
される材料(例えば、設計業者からのSSDコントローラおよび/またはリストで特定さ
れる、また任意選択で、1若しくはそれ以上のフラッシュ・メモリ・ベンダからのフラッ
シュ・メモリ・デバイス)を調達する(またはこれの調達を指図する)。システムベンダ
は、(例えば、サーバといった企業用途、データセンタといったクラウド用途、高耐久化
コンピュータといった産業用途、および/またはPCといったクライアント用途で使用す
るために)1者若しくはそれ以上の顧客に、大量生産されたSSDを販売する。よって、
システムベンダは、フラッシュ・メモリ・デバイス(および/または他の材料)自体のベ
ンダへのマージン以外に、大量生産SSDに組み込まれるフラッシュ・メモリ・デバイス
(および/または他の材料)にかかるマージンを支払わずに大量生産SSDを販売するこ
とができるようになっている。
【0213】
ある実施形態および/または使用シナリオでは、システムベンダは、RMAおよび/ま
たは点検作業を、少なくとも顧客との対話に関して、任意選択で、全部または一部を、設
計業者によってシステムベンダに提供される訓練および/またはツールに基づいて行う。
RMAおよび/または点検は、様々な実施形態によれば、システムベンダ、設計業者、ま
たは両者によって行われる故障解析作業に情報を提供する。大量生産SSDの全部または
任意の部分の再加工が、例えば契約製造者によって行われる。
【0214】
システムベンダの例には、いわゆる「クラウドプロバイダ」(Google、Face
book、およびAmazonなど)、データセンタ実施者/ユーザ(銀行、製薬会社、
および金融サービス会社など)、ならびにSSDを含むシステムのOEMが含まれる。シ
ステムベンダの他の例には、ある種の製造者、例えば、ある契約製造者および/またはあ
る相手先ブランドによる設計製造者が含まれる。
【0215】
より具体的には、図で示すように、設計業者は、SSDコントローラと、SSDコント
ローラによって実行するためのファームウェアとを実施する(コントローラおよびファー
ムウェア611)。設計業者は、少なくとも一部はSSDコントローラおよびファームウ
ェアに基づいて、少なくとも1つの関連付けられた基準設計と、基準設計の各々と共に使
用するための、推奨され、かつ/またはサポートされるフラッシュ・メモリ・デバイスの
リストを作成する(基準設計およびフラッシュ推奨612)。設計業者は、例えば、SS
Dコントローラ、ファームウェア、少なくとも1つの基準設計、およびリストのフラッシ
ュ・メモリ・デバイスのうちの1若しくはそれ以上を使用して、1若しくはそれ以上のS
SDの文書およびエンジニアリング/デバッグサンプルを作成する。文書(販促品および
/またはエンジニアリング情報など)は、全部または一部が、サンプルSSDおよびリス
トのフラッシュ・メモリ・デバイスの評価/特徴付け(価格、性能、および/または機能
など)、ならびに、通常は設計業者内部のものである設計文書(SSDコントローラ、フ
ァームウェア、および/または少なくとも1つの基準設計を記述するアーキテクチャ文書
など)のうちの任意の1若しくはそれ以上に基づくものである。
【0216】
設計業者は、文書の全部または任意の部分、サンプルSSDのうちの1若しくはそれ以
上、少なくとも1つの基準設計、および/または(推奨され、かつ/またはサポートされ
るフラッシュ・メモリ・デバイスの)リストをシステムベンダに提供する。設計業者によ
ってシステムベンダに提供された前述の項目に少なくとも一部は基づき、システムベンダ
は、SSDの大量生産に必要な材料を(あるいは、最初に、プロトタイプ組立てに十分な
量の材料を)選択、調達し、大量生産されるSSDのための設計を承認する(BOM選択
、BOM調達、および設計承認632)。選択は、リストのフラッシュ・メモリ・デバイ
スの中から1若しくはそれ以上のフラッシュ・メモリ・デバイスを選択することを含む。
調達は、SSDのプロトタイプ組立ておよび/または大量生産のために十分な量の選択さ
れるフラッシュ・メモリ・デバイスを調達することを含む。大量生産SSDは、少なくと
も1つの基準設計に従ったものであり、SSDコントローラ、ファームウェア(または、
任意選択で、かつ/若しくは選択的に、企業バージョン、クラウドバージョン、産業バー
ジョン、および/若しくはクライアントバージョンといったシステムベンダ用にカスタマ
イズされたファームウェアの1若しくはそれ以上のバージョン)、および選択されるフラ
ッシュ・メモリ・デバイスを使用する。ある実施形態では、ファームウェア(またはファ
ームウェアのカスタマイズバージョン)は、SSDコントローラを用いて製造されるSS
Dで使用するためにシステムベンダに使用許諾される。
【0217】
この後で、システムベンダ630は製造者620に、少なくとも1つの基準設計に従っ
た、SSDコントローラ、ファームウェア、およびリストの選択されるフラッシュ・メモ
リ・デバイスを含む1若しくはそれ以上のプロトタイプSSDを組み立てるよう指図する
(プロトタイプ製造623)。プロトタイプSSDは、システムベンダによって調達され
た少なくとも一部の材料(SSDコントローラおよび選択されるフラッシュ・メモリ・デ
バイスなど)を使用して構築される。ある実施形態および/または使用シナリオ(不図示
)では、システムベンダがプロトタイプSSDを組み立てる。
【0218】
次いで設計業者610は、例えば、ハードウェア検証および特徴付け(ハードウェア検
証/特徴付け614)ならびに/または信頼性および検証試験(RDT、EVT、および
DVT615)によって、プロトタイプSSDを評価し、かつ/または特徴付ける。ハー
ドウェア検証および特徴付けは、任意選択で、相互運用性および/またはコンプライアン
ス検査を含む。例えば、プロトタイプSSDは、ホスト・インターフェース・プロトコル
および/または電気信号規格へのコンプライアンスについて検証される。様々な実施形態
によれば、設計業者は、ファームウェア、システムベンダ用にカスタマイズされたファー
ムウェアの1若しくはそれ以上のバージョン、またはこれらの任意の組み合わせを使用し
て評価および/または特徴付けを行う。設計業者は、検証/特徴付けの1若しくはそれ以
上の結果をシステムベンダに提供する。システムベンダは、提供された結果の少なくとも
一部を調べ、プロトタイプSSDが大量生産に十分な品質のものであると判定する(シス
テム品質保証634)。設計業者は、例えば、製造者(大量生産625)および/または
システムベンダ(大量生産635)によって行われた大量生産(大量生産655)に対す
る信頼性および検証試験の1若しくはそれ以上の結果を提供する。システムベンダは、大
量生産(製造者、システムベンダ、または両者によって行われる)に対してシステム品質
保証の結果を提供する。
【0219】
ある実施形態では、大量生産SSDの大量生産を可能にするために、設計業者610が
、大量生産(例えば、大量生産625として製造者620によって、または大量生産63
5としてシステムベンダ630によって行われる大量生産655)において任意選択で使
用するための製造用ソフトウェアツール(製造用ソフトウェアツール616)を提供する
。様々な実施形態および/または使用シナリオにおいて、製造用ソフトウェアツールは、
選択される設計業者の作業618としてまとめて図示されている、コントローラおよびフ
ァームウェア611、基準設計およびフラッシュ推奨612、ハードウェア検証/特徴付
け614、ならびにRDT、EVT、およびDVT615のうちの任意の1若しくはそれ
以上からの情報に基づくものである。例えば、ある実施形態では、製造用ソフトウェアツ
ールは、複数の大量生産SSDに接続されたコンピュータシステム上で走るプログラムで
あり、複数の大量生産SSDのすべてと、おおむね、完全に、または部分的に並列に通信
すること、例えばこれらを構成することができるようになっている。
【0220】
様々な実施形態および/または使用シナリオによれば、製造用ソフトウェアツールは、
最初に大量生産SSDのうちの1つを構成すること;大量生産SSDのうちの1つにファ
ームウェアをダウンロードすること;大量生産SSDのうちの1つでMSTまたは他の診
断機能を実行すること;大量生産SSDのうちの1つのためのそれぞれの一意の暗号化鍵
の割り当てを行うこと;大量生産SSDのうちの1つに他の一意のID(イーサネット(
登録商標)MACアドレスなど)を割り当てること;情報をデータベースに記録すること
(製造記録および/または製造統計など);一意の暗号化鍵の割り当ての一部として、か
つ/または鍵供託のために設計業者のサーバと(例えばインターネットを介して)通信す
ること;ならびに、任意選択で、かつ/または選択的に大量生産の一部として使用される
他の機能、のうちの1若しくはそれ以上を可能にし、かつ/または行う。ある実施形態で
は、製造用ソフトウェアツールは、プロトタイプ組立てのために(例えばプロトタイプ製
造623のために)使用される。詳細は本明細書に別途記載する「製造用ソフトウェアツ
ール」を参照されたい。
【0221】
次いでシステムベンダは、大量生産SSDのうちの1若しくはそれ以上を販売する。販
売される大量生産SSDのうちの一部は、例えば、欠陥、故障、障害、不備、および/ま
たは欠損が認められるために、顧客によって返却される。システムベンダは、顧客から販
売済みのSSDのうちの返却されたものを受け取り、受け入れ検査および/または点検(
RMA/点検636)を行う。例えば、検査および/または点検の結果に応じて、返却さ
れたSSDは、例えば、設計業者(故障解析617)および/またはシステムベンダ(故
障解析637)によって行われる故障解析のために提供される。状況によっては、製造者
(および/またはシステムベンダ、明示されていない)は、故障解析されたSSDのうち
の一部を修復し、改訂し、かつ/または調整しようと試みる(再加工627)。次いでシ
ステムベンダは、任意選択で、故障解析されたSSDのうちの正常に再加工されたものを
販売する(不図示)。ある実施形態では、設計業者はシステムベンダに、故障解析、およ
び/または返却されたSSDが故障解析後にどこに送られるべきか(例えば、設計業者か
、製造者か、それともシステムベンダか)の判断を助けるための1若しくはそれ以上のソ
フトウェアツールを供給する。
【0222】
様々な実施形態および/または使用シナリオにおいて、設計業者は、SSDコントロー
ラのインスタンスをシステムベンダに販売し、ファームウェアの使用許諾をシステムベン
ダに与え、システムベンダのために設計業者によってカスタマイズされたファームウェア
を作成し、これの使用許諾を与え、またはこれらの任意の組み合わせを行う。
【0223】
ある使用許諾ベースの実施形態では、SSD生産(プロトタイプや大量生産など)が、
少なくとも一部は、設計業者がシステムベンダに、例えば、ファームウェア使用許諾、フ
ァームウェアスタンピング、および/またはファームウェア抽出など、様々な機能の使用
許諾を与えることによって可能とされる。使用許諾ベースの実施形態のうちのあるもので
は、製造用ソフトウェアツール(製造用ソフトウェアツール616など)の使用が、設計
業者によるシステムベンダへの使用許諾の条件によって必要とされる。製造用ソフトウェ
アツールの使用を必要とする使用許諾ベースの実施形態のうちのあるものでは、ファーム
ウェア使用許諾、ファームウェアスタンピング、および/またはファームウェア抽出のう
ちの1若しくはそれ以上の実行が、製造用ソフトウェアツールによるものであることが(
例えば、設計業者によるシステムベンダへの使用許諾の条件によって)必要とされる。様
々な実施形態によれば、設計業者610によって提供される製造用ソフトウェアツール6
16の使用を必要とすることは、設計業者610が、例えば、製造用ソフトウェアツール
616がインターネットを介して設計業者610に統計および/または他の情報を報告す
ることによって、生産をモニタし、かつ/またはSSDについてのファームウェア若しく
は他の使用許諾を追跡すること;製造されたSSDのための鍵供託といった機能を果たす
こと;ならびに他のモニタリング、追跡、使用許諾、または供託機能のうちの1若しくは
それ以上を行うことを可能にする。
【0224】
図には明示されていないが、ある実施形態および/または使用シナリオでは、図示の動
作のうちのあるものが、図示の動作のうちの別のあるものへフィードバックを提供する。
例えば、ハードウェア検証/特徴付け614ならびに/またはRDT、EVT、およびD
VT615の結果の一部または全部が、コントローラおよびファームウェア611ならび
に/または基準設計およびフラッシュ推奨612にフィードバックされる。別の例として
は、大量生産625および/または大量生産635から得られた情報が、コントローラお
よびファームウェア611、基準設計およびフラッシュ推奨612、ならびにBOM選択
、BOM調達、および設計承認632のうちの任意の1若しくはそれ以上にフィードバッ
クされる。さらに別の例としては、RMA/点検636、故障解析617、故障解析63
7、および/または再加工627のうちの任意の1若しくはそれ以上から収集されたデー
タが、コントローラおよびファームウェア611、基準設計およびフラッシュ推奨612
、BOM選択、BOM調達、および設計承認632、大量生産625ならびに大量生産6
35のうちの任意の1若しくはそれ以上にフィードバックされる。
【0225】
ある実施形態および/または使用シナリオでは、
図6に示す動作が、概念的には、複数
のシステムベンダ(および任意選択で対応する複数の製造者)と共に同じ設計業者によっ
て再現される。よって、設計業者は複数のシステムベンダに仮想ドライブ製造能力を提供
する。
【0226】
様々な実施形態および/または使用シナリオにおいて、設計業者によって実施されるS
SDコントローラおよび/またはファームウェア(コントローラおよびファームウェア6
11)は、複数のフラッシュ・メモリ・デバイス・ベンダからのフラッシュ・メモリ・デ
バイスを用いて動作することができるようになっている。例えば、SSDコントローラお
よび/またはファームウェアは、様々な読み取り技術、書き込み(プログラム)技術、お
よび/若しくは消去技術、パラメータ、ならびに/または特性を有するフラッシュ・メモ
リ・デバイスを用いて動作することができるようになっている。例を続けて、SSDコン
トローラは、各フラッシュダイ、フラッシュダイのブロック、ブロックのページ、または
ページの任意の部分または下位部分上での動作(読み取り、書き込み、および/若しくは
消去)の回数または動作の特性(再試行、ソフトエラー、および/若しくはハードエラー
の回数)を追跡するのに(例えば、ファームウェアおよび/または様々なハードウェア状
態機械によって)使用されるメモリ(制御RAM125のスケーリングされたデータ構造
126など)を含む。SSDコントローラは、選択的に、かつ/または任意選択で、追跡
された動作の回数、追跡された動作の特性、および/または、SSDコントローラが管理
している特定のフラッシュ・メモリ・デバイスの具体的特性に従って、読み取り動作、書
き込み動作、および/または消去動作を変更する。状況によっては、SSDコントローラ
による読み取り動作、書き込み動作、および/または消去動作の変更は、複数のフラッシ
ュ・メモリ・ベンダからの様々なフラッシュ・メモリ・デバイスを用いたSSDコントロ
ーラの動作を可能にし、様々なフラッシュ・メモリ・デバイスは、推奨され、かつ/また
はサポートされるフラッシュ・メモリ・デバイスのリストに含まれるものである。
【0227】
別の例としては、SSDコントローラおよび/またはファームウェアは、0以上のパリ
ティ符号、0以上のRS符号、0以上のBCH符号、0以上のビタビ符号または他のトレ
リス符号、および0以上のLDPC符号といった、様々な誤り回復符号に従ってフラッシ
ュ・メモリ・デバイスを管理することができるようになっている。例を続けて、SSDコ
ントローラおよび/またはファームウェアは、第1の符号率の様々なBCH符号に従った
第1のフラッシュ・メモリ・ベンダからの選択されるフラッシュ・メモリ・デバイス、な
らびに第2の符号率の様々なBCH符号に従った第2のフラッシュ・メモリ・ベンダから
の選択されるフラッシュ・メモリ・デバイスを管理することができるようになっている。
さらに、SSDコントローラおよび/またはファームウェアは、様々なパリティ符号に従
った第3のフラッシュ・メモリ・ベンダからの第1のカテゴリのフラッシュ・メモリ・デ
バイス、および様々なLDPC符号に従った第3のフラッシュ・メモリ・ベンダからの第
2のカテゴリのフラッシュ・メモリ・デバイスを管理することができるようになっている
。推奨され、かつ/またはサポートされるフラッシュ・メモリ・デバイスのリストは、任
意選択で、第1のフラッシュ・メモリ・ベンダからの選択されるフラッシュ・メモリ・デ
バイス、第2のフラッシュ・メモリ・ベンダからの選択されるフラッシュ・メモリ・デバ
イス、および第3のフラッシュ・メモリ・ベンダからの第1および第2のカテゴリのフラ
ッシュ・メモリ・デバイスのうちの1若しくはそれ以上を含む。
【0228】
様々な実施形態および/または使用シナリオにおいて、SSDコントローラおよび/ま
たはファームウェアは、例えば、512バイト、516バイト、520バイト、524バ
イト、528バイト、532バイト、536バイト、540バイト、1024バイト、1
032バイト、2048バイト、2056バイト、4096バイト、4100バイト、4
104バイト、4108バイト、4112バイト、4116バイト、4160バイト、4
164バイト、4172バイト、4192バイト、4196バイト、4204バイト、4
224バイト、4228バイト、4236バイト、4256バイトのうちの任意の1若し
くはそれ以上など、様々なサイズの量のホストLBを用いて動作することができるように
なっている。前述のLBサイズのうちのいずれかを用いた動作は、それぞれの多様な期待
される顧客を対象とする様々なSSD製品においてSSDコントローラおよび/またはフ
ァームウェアを使用することを可能にする。例えば、システムベンダは、前述のLBサイ
ズの任意の2つ若しくはそれ以上を用いて動作することが可能な1若しくはそれ以上のS
SD製品を、サーバ(ストレージサーバなど)ベンダである企業顧客に、またはデータ・
センタ・ベンダであるクラウド顧客に提供し、512バイトのLBを用いて動作すること
が可能な1若しくはそれ以上のSSD製品を、高耐久化コンピュータベンダである産業顧
客に、またはPC(ラップトップなど)ベンダであるクライアント顧客に提供する。
【0229】
様々な実施形態および/または使用シナリオにおいて、SSDコントローラおよび/ま
たはファームウェアは、様々な容量のSSDを実施ことができるようになっており、それ
ぞれの多様な期待される顧客を対象とするSSD製品を可能にする。例えば、システムベ
ンダは、相対的の大容量のSSDを、サーバ(ストレージサーバなど)ベンダである企業
顧客に、またはデータ・センタ・ベンダであるクラウド顧客に提供し、相対的に小容量の
SSDを、高耐久化コンピュータベンダである産業顧客に、またはPC(ラップトップな
ど)ベンダであるクライアント顧客に提供する。別の例としては、システムベンダは、2
つのSSDを企業顧客および/またはクラウド顧客に提供し、SSDのうちの第1のもの
は相対的に大容量であり、相対的に遅いランダムアクセスを行うことができ、SSDのう
ちの第2のものは相対的に小容量であり、相対的に速いランダムアクセスを行うことがで
きる。ある実施形態では、SSDコントローラおよび/またはファームウェアは、少なく
とも一部は、ホストLBAからNVM位置への2レベルマッピングによる、様々な容量の
SSDを実施することができるようになっている。2レベルマッピングは、例えば、一部
は、1SLMページあたりのSLMエントリの数を表すプログラム可能な値でLBAの除
算を行って、商と余りを得ることによって実施される。商はFLMエントリを選択し、余
りは、選択されたFLMエントリによって選択されるSLMページの特定のエントリを選
択する(詳細は本明細書に別途記載する「LBAからNVMへの位置マッピング」を参照
されたい)。
【0230】
様々な実施形態および/または使用シナリオにおいて、SSDコントローラおよび/ま
たはファームウェアは、様々な温度能力、例えば、広くない温度範囲にわたる高信頼動作
や、広い温度範囲にわたる動作などのSSDを実施することができるようになっており、
様々な温度範囲を対象とするSSD製品を可能にする。例えば、システムベンダは、広く
ない温度範囲のSSDを、企業、クラウド、および/またはクライアント客に提供し、広
い温度範囲のSSDを産業顧客に提供する。ある実施形態では、SSDコントローラおよ
び/またはファームウェアは、少なくとも一部は、様々な温度能力の不揮発性メモリデバ
イスとの適合動作による様々な温度能力のSSDを実施することができるようになってい
る。
【0231】
様々な実施形態および/または使用シナリオにおいて、SSDコントローラおよび/ま
たはファームウェアは、様々な信頼性、耐久性、および/または性能の予測可能性のSS
Dを実施することができるようになっており、様々な信頼性、耐久性、および/または性
能の予測可能性の特徴セットを対象とするSSD製品を可能にする。例えば、システムベ
ンダは、相対的に高い信頼性および耐久性のSSDを企業、クラウド、および/または産
業顧客に提供し、相対的に低い信頼性および耐久性のSSDをクライアント顧客に提供す
る。別の例としては、システムベンダは、相対的に予測可能性の高い性能を有するSSD
をクラウド顧客に提供し、相対的に予測可能性の低い性能を有するSSDを企業、産業お
よび/またはクライアント顧客に提供する。ある実施形態では、SSDコントローラおよ
び/またはファームウェアは、少なくとも一部は、様々な信頼性および/または耐久性の
不揮発性メモリデバイスを用いた動作による、様々な信頼性および/または耐久性のSS
Dを実施することができるようになっている。ある実施形態では、SSDコントローラお
よび/またはファームウェアは、少なくとも一部は、同じ不揮発性メモリデバイスを様々
な信頼性および/または耐久性のモードで動作させる(例えば、MLCデバイスをSLC
モードまたはMLCモードで動作させる)ことによる、様々な信頼性および/または耐久
性のSSDを実施することができるようになっている。ある実施形態では、SSDコント
ローラおよび/またはファームウェアは、少なくとも一部は、オーバープロビジョニング
の量を変更することによる、様々な性能の予測可能性のSSDを実施することができるよ
うになっている(例えば、ある使用シナリオでは、より高いオーバープロビジョニングは
、より高い性能の予測可能性を可能にする)。
【0232】
よって、除算を使用し、プログラム可能な値を変更することによって、2レベルマップ
の記憶に割り振られる固定サイズの記憶(例えば、2レベルマップの第1レベルの記憶お
よび/または第2レベルのマップページのキャッシュの記憶)について、相対的に大容量
のSSDが、相対的に小容量のSSDよりも相対的に大きい粒度でマップされることが可
能になる。マッピングの粒度が減少するに従って、ある実施形態および/または使用シナ
リオでは、使用可能な同時にアクティブなマップエントリの数が増加する。状況によって
は、同時にアクティブなマップエントリの数が増加するに従って、ランダムアクセスの性
能および/または効率よく処理される独立の順次ストリームの数が増加する。
【0233】
様々な実施形態および/または使用シナリオにおいて、設計業者によって実施されるS
SDコントローラ(コントローラおよびファームウェア611)は、
図1AのSSDコン
トローラ100と同一であり、またはこれの変形である。様々な実施形態および/または
使用シナリオにおいて、設計業者によって実施されるファームウェア(コントローラおよ
びファームウェア611)は、
図1Bのファームウェア106と同一であり、またはこれ
の変形である。様々な実施形態および/または使用シナリオにおいて、設計業者によって
作成される少なくとも1つの基準設計(基準設計およびフラッシュ推奨612)は、例え
ば、
図1Bに示す実施形態および/またはコンテキストのいずれかで使用される、
図1A
のSSD101と同一であり、またはこれの変形である。様々な実施形態および/または
使用シナリオにおいて、設計業者によって作成される、推奨され、かつ/またはサポート
されるフラッシュ・メモリ・デバイスのリスト(基準設計およびフラッシュ推奨612)
は、
図1Aに示す、フラッシュデバイス192、フラッシュダイ194、およびNVM1
99のうちの任意の1若しくはそれ以上に関するものである。
【0234】
以上の
図6の説明は、システムベンダによって行われるBOM選択について設計業者に
よって具体的に推奨され、かつ/またはサポートされる要素としてのフラッシュ・メモリ
・デバイスを中心とするものである。様々な他の実施形態では、電源、温度センサ、ケー
シング、プリント回路基板、および受動部品を含む他のデバイス/構成部品といった様々
な他の(または追加の)材料が、システムベンダによって行われるBOM選択について設
計業者によって具体的に推奨され、かつ/またはサポートされる。例えば、第1の温度セ
ンサベンダからの第1および第2の温度センサは設計業者によって推奨され、かつ/また
はサポートされ、第2の温度センサベンダからの第3の温度センサは、(例えば、ファー
ムウェアでのサポートを欠くために)設計業者によって推奨されず、サポートされない。
よって、システムベンダは、SSDのプロトタイプ組立てまたは製造のための材料を選択
するときに、第3の温度センサを除く、第1および第2の温度センサの中から自由に選択
することができる。
【0235】
SSDの大量生産およびプロトタイプ構築
図7Aに、仮想ドライブ製造モデルに従ったSSDの(大量)製造(またはプロトタイ
プ構築)の実施形態の選択された詳細の概念図を示す。図示の要素は、2つの切り離され
た部分にグループ化されており、任意選択で、エンジニアリングセットアップ作業が工場
作業と別個に行われることを可能にする。第1の部分(エンジニアリング730A)は、
生産運転のセットアップのために、例えば、1回の生産運転につき1回や、同じモデルの
SSDの一連の生産運転について1回行われる。第2の部分(工場740F)は、それぞ
れのSSDの製造の様々な局面を完結するために、(例えばプロトタイプ構築のための)
1回の生産運転であれ、(例えば大量生産のための)同じモデルのSSDの一連の生産運
転のうちの1回であれ、生産運転ごとに行われる。様々な実施形態および/または使用シ
ナリオによれば、エンジニアリング730Aの要素として描かれている作業の全部または
任意の部分が、
図6のシステムベンダ630、および
図6の製造者620のうちの1若し
くはそれ以上によって行われる。
【0236】
エンジニアリング730Aの要素は、1若しくはそれ以上のSSDの製造のための、「
スタンプされたファームウェア」ともいうファームウェアイメージ(製造ファームウェア
パッケージ721)の作成を含む。製造ファームウェアイメージは、アプリケーションプ
ログラム(パッケージマネージャ711)により、使用許諾記述(ライセンスファイル7
01)および配布されたファームウェアイメージ(配布ファームウェアパッケージ703
)に従って作成される。パッケージマネージャは、ライセンスファイルを使用して配布フ
ァームウェアパッケージからファームウェアを抽出し、1若しくはそれ以上のスタンプ機
能(例えば、製造ファームウェアパッケージを暗号化し、セキュリティ保護し、パーソナ
ル化し、かつ/またはカスタマイズする機能)を実行し、製造ファームウェアパッケージ
を作成する。パッケージマネージャは、任意選択で、ライセンスファイルで特定される使
用可能な使用許諾ドライブ構成(例えば、設計業者が、システムベンダに対して提供およ
び/またはサポートすることを承認している構成)の全部またはいずれかのためのドライ
ブ構成テンプレートを作成する。ある実施形態では、パッケージマネージャは、GUIを
介して対話することができるようになっている。様々な実施形態および/または使用シナ
リオにおいて、ライセンスファイル、配布ファームウェアパッケージ、およびパッケージ
マネージャのうちの任意の1若しくはそれ以上が、
図6の設計業者610によって提供さ
れる。
【0237】
エンジニアリング730Aの要素は、さらに、工場740Fの要素によって使用される
製造用ソフトウェアを制御するための1若しくはそれ以上のコマンドライン入力および/
またはファイル(ドライブ構成および設定ファイル722)の作成を含む。ドライブ構成
および設定ファイルは、アプリケーションプログラム(構成マネージャ712)によって
、ドライブ構成の記述および/またはパラメータ(システムベンダ所望のドライブ設定7
04)に従って作成される。構成マネージャは、任意選択で、すべてのSSD設定および
/またはダウンロードオプションを管理するための中央リポジトリとして動作する。ある
実施形態では、構成マネージャは、ドライブ設定およびファームウェア・ダウンロード・
フロー・オプションのための制御パネルを備えるGUIとして動作することができるよう
になっている。ある実施形態および/または使用シナリオでは、システムベンダ所望のド
ライブ設定は
図6のシステムベンダ630によって提供され、構成マネージャは
図6の設
計業者610によって提供される。
【0238】
製造ファームウェアパッケージならびにドライブ構成および設定ファイルは、製造用ソ
フトウェアツール(MT)751が使用するために、エンジニアリング730Aから工場
740Fへ渡される。製造ツールは、ファームウェアを有しないSSD、あるいは、交換
/アップグレードされるべきファームウェアを有するSSD(新規のSSD750F)に
ファームウェアをダウンロードすることができるようになっている。新規のSSDは、こ
れによって、新しくダウンロードされたファームウェアを有するSSD(ファームウェア
がロードされたSSD750L)に変換される。ダウンロードされるファームウェアは、
製造ファームウェアパッケージ、ドライブ構成および設定ファイル、ならびに一意の識別
情報(通し番号、ワールド・ワイド・ネーム(WWN)760、診断ロック解除鍵、およ
び/またはベンダ識別情報データ)に基づくものである。
【0239】
ある実施形態および/または使用シナリオでは、ファームウェアのダウンロードは、例
えば、一意の通し番号および/または一意のWWNを設定することにより、SSDを製品
化することを含む。ある実施形態および/または使用シナリオでは、製造用ソフトウェア
ツールは、SSDに固有の、公開暗号化鍵といった暗号化鍵を提供し、かつ/または供託
することができるようになっている。別の実施形態および/または使用シナリオでは、提
供および/または供託は、設計業者が運用するサーバと通信することを含む。ある実施形
態および/または使用シナリオでは、製造用ソフトウェアツールは、1若しくはそれ以上
の工場試験を行った後で、SMART属性および/またはログをリセットして(例えばC
learSMARTを実行して)クリーンな工場出荷状態にすることができるようになっ
ている。
【0240】
ある実施形態では、ファームウェアのダウンロードは、例えば、顧客へのSSDのリリ
ース前の最終作業として、SSDのセキュア消去を行うことを含む。ある実施形態では、
製造ツールは、ダウンロードされたファームウェアに、ファームウェアがダウンロードさ
れているSSD上で1若しくはそれ以上の製造試験を実行するよう指図することができる
ようになっている。製造試験は、SSDのMSTおよび/またはSSDのフラッシュメモ
リの試験を含む。
【0241】
「ファームウェアを有しないSSD」の一例が、ファームウェアをダウンロードさせた
後で(また任意選択で、1若しくはそれ以上の後続の製造作業を行った後で)SSDとし
て動作する要素の集合体である。例えば、
図1BのSSD101は、ファームウェア10
6がまだダウンロードされておらず、ファームウェアを有しないSSDの一例である。
【0242】
特定のSSDの製造の具体例としては、システムベンダは、設計業者によって提供され
たライセンスファイル、および設計業者によって提供された配布ファームウェアパッケー
ジから特定の製造ファームウェアパッケージを開発する。システムベンダは特定の製造フ
ァームウェアパッケージを、設計業者からの、例えば、LINUX(登録商標)の1バー
ジョンを走らせているPC上で実行されるパッケージ・マネージャ・アプリケーションを
使用して開発する。システムベンダは、特定のSSDについての所望のドライブ設定(例
えば、容量、オーバープロビジョニング、信頼性特徴、ならびに他の製品特有の属性およ
び/またはモデル特有の属性)を決定し、所望のドライブ設定を、設計業者からの、例え
ばPC上で実行された構成マネージャアプリケーションに供給する。構成マネージャアプ
リケーションは、1若しくはそれ以上の特定のコマンドラインの特定のファイルを作成し
、特定のコマンドラインは特定のSSDおよび所望のドライブ設定に特有のものである。
【0243】
例を続けて、製造者は、設計業者によって提供された製造ツールを使用して、ファーム
ウェアを有しないSSDを、ファームウェアを有するSSDに変換する。製造ツールは、
特定のコマンドラインによって制御される製造ファームウェアパッケージを、ファームウ
ェアを有しないSSDにダウンロードし、これによって、ファームウェアを有しないSS
Dを、ファームウェアを有するSSDに変換する。製造ツールは、任意選択で、ファーム
ウェアを有するSSDに、ダウンロードされたファームウェアによってMSTを実行する
よう指図する。特定のコマンドラインは、例えば、ダウンロードされるファームウェアの
各インスタンスをカスタマイズするのに使用される通し番号および/またはWWN情報の
生成を指定して、例えば、製造されるあらゆるSSDが一意のWWNおよび/または一意
の通し番号を有するようにする。
【0244】
様々な実施形態では、パッケージマネージャ711、構成マネージャ712、および製
造用ソフトウェアツール(MT)751のうちの任意の1若しくはそれ以上が、
図6の製
造用ソフトウェアツール616の全部若しくは任意の部分、またはこれらの(1若しくは
それ以上の)変形である。
【0245】
図7Bに、仮想ドライブ製造モデルに従ったSSDの(大量)製造(またはプロトタイ
プ構築)のためのシステムの実施形態の選択された詳細を示す。コンピューティングホス
ト、例えばワークステーションコンピュータ、PC、ラップトップコンピュータ、ノート
ブックコンピュータ(ホスト780P)が、(SSD.1 790P.1...SSD.N
790P.Nとして図示されている)1若しくはそれ以上のSSDに接続されている。
コンピューティングホストは、製造ツール・アプリケーション・ソフトウェア(ホスト7
80Pに図示され、さらに
図7Aに別のコンテキストで図示されている製造用ソフトウェ
アツール(MT)751など)を実行することができるようになっている。単一のホスト
に接続された任意の数のSSDを有する実施形態、ならびに、複数のホストを有し、ホス
トの各々が1若しくはそれ以上のSSDのそれぞれのグループに接続された実施形態が企
図されている。単一のホストに接続された複数のSSDを有する実施形態では、単一のホ
ストは、任意選択で、製造用ソフトウェアツールによって、完全に、または部分的に並列
の、任意の数の接続されたSSDへのファームウェアダウンロード、および/または接続
されたSSD上での(1若しくはそれ以上の)製造試験を指図することができるようにな
っている。
【0246】
動作に際して、ホスト780Pは、製造用ソフトウェアツール(MT)751を実行し
て、SSD.1 790P.1...SSD.N 790P.Nのうちの任意の1若しくは
それ以上へファームウェアをダウンロードし、よって、ファームウェアなしの1若しくは
それ以上のSSDをファームウェアありの1若しくはそれ以上のSSDに変換する(
図7
Aの新規のSSD750F、製造用ソフトウェアツール(MT)751、およびファーム
ウェアがロードされたSSD750Lで示されている)。
【0247】
ある実施形態では、製造用ソフトウェアツールは、例えば、ホスト(ホスト780Pな
ど)上で実行されているシェルプログラムによって解釈される一連の1若しくはそれ以上
のコマンドラインなど、コマンドライン呼び出しによって動作する。一具体例として、コ
マンドライン呼び出しは、製造用ソフトウェアツール(製造用ソフトウェアツール(MT
)751など)を識別する第1のパラメータ、ファームウェアを受け入れる用意ができて
いるSSDに対応する特定のデバイス(SSD.1 790P.1...SSD.N 79
0P.Nのうちの1つなど)を識別する第2のパラメータ、ドライブ構成ファイル(
図7
Aのドライブ構成および設定ファイル722など)を識別する第3のパラメータ、それぞ
れ、ファームウェアを受け入れる用意ができているSSDのための通し番号およびWWN
(
図7Aの通し番号、ワールド・ワイド・ネーム(WWN)760など)である第4のパ
ラメータおよび第5のパラメータを含む。第6の(任意選択の)パラメータは診断ロック
解除鍵を指定する。ある実施形態および/または使用シナリオでは、診断ロック解除鍵は
、製造用ソフトウェアツールによって作成されたSSDの使用中の特定のコマンド、例え
ば、特定のシステムベンダに固有の診断コマンドへの無許可のアクセスを防止するのに使
用される。第7の(任意選択の)パラメータは、512Bのベンダ識別情報データファイ
ル、例えば、特定のシステムベンダに固有の情報の集合を指定する。第8の(任意選択の
)パラメータは、出力および/またはログファイルの名前を指定する。別の実施形態では
、出力および/またはログは、SSD上で行われたダウンロードおよび/または任意のM
STおよび/またはフラッシュデバイス試験の結果を含む状況情報が書き込まれる。
【0248】
図7Cに、仮想ドライブ製造モデルに従ったSSD、例えば、
図7Aおよび/または図
7Bに示すような実施形態によって作成されたSSDのファームウェア更新の実施形態の
選択された詳細の概念図を示す。
図7Aと同様に、図示の要素は2つの切り離された部分
へグループ化されており、任意選択で、エンジニアリングセットアップ作業がファームウ
ェア更新と別個に行われることを可能にする。第1の部分(エンジニアリング730C)
は、ファームウェア更新のセットアップのために、例えば、1回の生産運転ごとのファー
ムウェアリリースごとに1回や、同じモデルのSSDの一連の生産運転ごとのファームウ
ェアリリースごとに1回行われる。第2の部分(エンドユーザ740E)は、(例えばプ
ロトタイプファームウェア更新のための)1回の生産運転についてであれ、(例えばエン
ド・ユーザ・ファームウェア更新のための)同じモデルのSSDの一連の生産運転のうち
の1回についてであれ、ファームウェア更新ごとに行われる。様々な実施形態および/ま
たは使用シナリオによれば、エンジニアリング730Cの要素として描かれている作業の
全部または任意の部分が、
図6のシステムベンダ630および
図6の製造者620のうち
の1若しくはそれ以上によって行われる。ある実施形態および/または使用シナリオでは
、エンジニアリング730Cの要素が、
図7Aのエンジニアリング730Aの要素と同じ
組織によって行われる。
【0249】
エンジニアリング730Cの要素は、1若しくはそれ以上のSSDのファームウェア更
新のための、フィールド更新ファームウェアイメージ(フィールド更新ファームウェアパ
ッケージ723)の作成を含む。
図7Aの製造ファームウェアパッケージ721と同様に
、フィールド更新ファームウェアイメージは、パッケージマネージャ711により、ライ
センスファイル701および配布ファームウェアパッケージ703に従って作成される。
パッケージマネージャは、ライセンスファイルを使用して配布ファームウェアパッケージ
からファームウェア更新に使用可能なファームウェアを抽出し、1若しくはそれ以上のス
タンプ機能(例えば、フィールド更新ファームウェアパッケージを暗号化し、セキュリテ
ィ保護し、パーソナル化し、かつ/またはカスタマイズする機能)を実行し、フィールド
更新ファームウェアパッケージを作成する。例えば、パッケージマネージャは、特定のフ
ィールド更新ファームウェアパッケージを、特定のフィールド更新ファームウェアパッケ
ージによってファームウェアを更新させるべきであるSSDを作成するのに使用された対
応する特定の製造ファームウェアパッケージを作成するときにパッケージマネージャによ
って行われたパーソナル化の全部または任意の部分と一致するようにパーソナル化する。
別の例としては、パッケージマネージャは、ハッシュスタンプを(例えば、フィールド更
新ファームウェアパッケージの最初の要素の一部としてや、フィールド更新ファームウェ
アパッケージの最後の要素の一部として)フィールド更新ファームウェアパッケージに加
え、フィールド更新ファームウェアパッケージをパーソナル化する。スタンプは、フィー
ルド更新ファームウェアパッケージを、フィールド更新ファームウェアパッケージのスタ
ンプと一致するハッシュスタンプを備えるファームウェアを有するSSD上でのみ使用可
能とすることができる1若しくはそれ以上セキュリティ措置を含む。
【0250】
フィールド更新ファームウェアパッケージは、SSD更新ソフトウェアツール(UT)
753が使用するために、エンジニアリング730Cからエンドユーザ740Eへ渡され
る。SSD更新ツールは、(古い)ファームウェアを有するSSD((古い)ファームウ
ェアがロードされたSSD750X)へのファームウェアダウンロードによりファームウ
ェアを更新することができるようになっている。古いファームウェアを有するSSDは、
これによって、新しいファームウェアを有するSSD((新しい)ファームウェアがロー
ドされたSSD750Y)に変換される。ある実施形態および/または使用シナリオでは
、ファームウェア更新は、((1若しくはそれ以上の)暗号化鍵754で表される)1若
しくはそれ以上の鍵、ベンダ識別子、ファームウェア・オーバーライド・ストリング、お
よび/または様々なセキュリティ技術によってロック解除され、かつ/または使用可能と
される。ロック解除および/または使用可能化は、フィールド更新ファームウェアパッケ
ージを作成するときにパッケージマネージャによって行われるスタンプ機能と互換性があ
る。よって、無許可の者がファームウェアアップグレードを行うこと、例えば、新しい/
改訂されたファームウェアを、以前にファームウェアをダウンロードしたSSD上にダウ
ンロードすることが防止される。様々なコンテキストにおいて、エンドユーザ740Eは
、(例えば、ファームウェアへのエンジニアリング変更を求める)設計業者、(例えば、
ファームウェアへの生産関連の変更を求める)システムベンダおよび/若しくは製造者、
またはシステムベンダの顧客(例えば、エンドユーザが以前に使用していたSSDのフィ
ールドアップグレードを行うエンドユーザ)のうちの任意の1若しくはそれ以上を表す。
【0251】
ある実施形態および/または使用シナリオでは、ファームウェア更新は、以前に作成さ
れたSSD(例えば、以前にダウンロードされたファームウェアを有するSSD)を、あ
る構成および/または挙動のセットから別の構成および/または挙動のセットへ変更する
ための情報および/または作業を含む。例えば、(例えば、
図7Aの構成マネージャ71
2によるシステムベンダ所望のドライブ設定704によって)作成時に別様に設定された
挙動を、ファームウェア更新によって変更することを可能にする付録がファームウェアイ
メージに追加される。
【0252】
図7Dに、仮想ドライブ製造モデルに従ったSSDのファームウェア更新のためのシス
テムの実施形態の選択された詳細を示す。
図7Bと同様に、コンピューティングホスト、
例えば、ワークステーションコンピュータ、PC、ラップトップコンピュータ、ノートブ
ックコンピュータ(ホスト780E)が、(SSD.1 790E.1...SSD.N
790E.Nとして図示されている)1若しくはそれ以上のSSDに接続されている。コ
ンピューティングホストは、SSD更新ツール・アプリケーション・ソフトウェア(ホス
ト780Eに図示され、さらに
図7Cに別のコンテキストで図示されているSSD更新ソ
フトウェアツール(UT)753など)を実行することができるようになっている。
図7
Bと同様に、単一のホストに接続された任意の数のSSDを有する実施形態、ならびに、
複数のホストを有し、ホストの各々が1若しくはそれ以上のSSDのそれぞれのグループ
に接続された実施形態が企図されている。単一のホストに接続された複数のSSDを有す
る実施形態では、単一のホストは、任意選択で、SSD更新ソフトウェアツールによって
、完全に、または部分的に並列に、任意の数の接続されたSSDにファームウェア更新(
ダウンロードなど)を指図することができるようになっている。
【0253】
動作に際して、ホスト780Eは、SSD更新ソフトウェアツール(UT)753を実
行して、SSD.1 790E.1...SSD.N 790E.Nのうちの任意の1若し
くはそれ以上へファームウェアを更新し(例えばダウンロードし)、よって、古いファー
ムウェアを有する1若しくはそれ以上のSSDを新しいファームウェアを有する1若しく
はそれ以上のSSDに変換する(
図7Cの(古い)ファームウェアがロードされたSSD
750X、SSD更新ソフトウェアツール(UT)753、および(新しい)ファームウ
ェアがロードされたSSD750Yで示されている)。
【0254】
ある実施形態および/または使用シナリオでは、パッケージマネージャ711によって
行われる1若しくはそれ以上の機能/動作(例えば、製造ファームウェアパッケージ72
1および/若しくはフィールド更新ファームウェアパッケージ723の作成)ならびに/
または構成マネージャ712によって行われる1若しくはそれ以上の機能/動作(例えば
、ドライブ構成および設定ファイル722の作成)が、1若しくはそれ以上の鍵、ベンダ
識別子、ファームウェア・オーバーライド・ストリング、および/または様々なセキュリ
ティ技術((1若しくはそれ以上の)暗号化鍵702)によってロック解除され、かつ/
または使用可能とされる。
【0255】
様々な実施形態および/または使用シナリオでは、
図7Bのホスト780Pおよび
図7
Dのホスト780Eのどちらか一方または両方が、
図1Bのホスト102と同一であり、
またはこれの変形である。様々な実施形態および/または使用シナリオでは、
図7BのS
SD.1 790P.1...SSD.N 790P.Nおよび
図7DのSSD.1 79
0E.1...SSD.N 790E.Nのうちの任意の1若しくはそれ以上が、例えば、
図1Bに示すSSD101と同一であり、またはこれの変形である。
【0256】
VDMM実施技術の選択例
ある実施形態および/または使用シナリオでは、
図6および
図7A〜
図7Dの1若しく
はそれ以上の要素またはこれらの部分が、完全に、または部分的に、いくつかのコンピュ
ータ支援技術および/またはコンピュータ関連技術のうちの1若しくはそれ以上によって
行われる。例えば、要素間の1若しくはそれ以上のパスが、電子メール、XML注釈付き
仕様および/またはXMLベースの形式、ならびにサーバ間トランザクションのうちの任
意の1若しくはそれ以上によって実施可能である。例えば、
図6のBOM選択、BOM調
達、および設計承認632への基準設計およびフラッシュ推奨612情報の通信は、電子
メールおよび/または複数のXML注釈付き仕様によるものである。別の例としては、1
若しくはそれ以上の要素が、少なくとも一部は、多層化インターネット商取引ベースサー
バの任意の1若しくはそれ以上の層、1若しくはそれ以上のウェブサーバ、データベース
サーバ、および/またはアプリケーションサーバ、ならびに1若しくはそれ以上ウェブ、
データベース、および/またはアプリケーションのスクリプト、プログラム、および/ま
たはアプリケーションのうちの任意の1若しくはそれ以上によって実施可能である。例え
ば、
図6のコントローラおよびファームウェア611に関連した文書が、例えば、1若し
くはそれ以上のウェブサーバ、データベースサーバ、および/またはアプリケーションサ
ーバによって動作するウェブサイトを介して供与される。
【0257】
さらに別の例として、例えば、暗号化通信、パスワード、および/または証明書、なら
びにこれらのサーバに基づく暗号鍵供託技術が、ある特定の動作を実施するのに使用され
る。例えば、使用許諾サーバが、暗号鍵、例えば
図7Aおよび
図7Cのライセンスファイ
ル701の全部または任意の部分の暗号化された検査を提供する。別の例としては、ある
要素が、完全に、または部分的に、インターネットを使用した1若しくはそれ以上の事業
体間自動化システムによって配布される。例えば、
図7Bで使用される製造用ソフトウェ
アツール(MT)751(および/または
図7Dで使用されるSSD更新ソフトウェアツ
ール(UT)753)の配布は、設計業者による、インターネットを使用した製造者自動
化システムへのものである。
【0258】
様々な実施形態および/または使用シナリオでは、
図6および
図7A〜
図7Dの1若し
くはそれ以上の要素またはこれらの部分が、場所の様々な組み合わせにおいて行われる。
例えば、(
図6の)設計業者610、製造者620、およびシステムベンダ630に関連
したすべての作業が、同じ場所で行われる。別の例としては、設計業者610に関連した
すべての作業が第1の場所で行われ、製造者620に関連したすべての作業が第2の場所
で行われ、システムベンダ630に関連したすべての作業が第3の場所で行われる。さら
に別の例としては、設計業者610およびシステムベンダ630に関連したある作業が第
1の場所で行われ、製造者620およびシステムベンダ630に関連したある作業が第2
の場所で行われる。別の例としては、(
図7Aの)エンジニアリング730Aおよび工場
740Fに関連したある作業が複数の場所で行われる。
LBAからNVMへの位置マッピング
図8に、LBAからNVMへの位置マッピング800として、FLMと1若しくはそれ
以上のSLMページとを有する2レベルマップによる、LBAからNVMに記憶されたL
Bへのマッピングの実施形態の選択された詳細を図示する。2レベルマップは、(概念的
には単一の要素SLMページ820として図示されている)1若しくはそれ以上の第2レ
ベル要素に接続された第1レベル要素(FLM810)によって実施される。FLMは複
数のエントリ(SLMページ/長さ810.1...SLMページ/長さ810.M)を含
む。FLMのエントリの各々はSLMページのうちの1つ(例えばSLMページ820)
を指し示す。SLMページは複数のエントリ(LBページ/長さ820.1...LBペー
ジ/長さ820.N)を含む。SLMページのエントリの各々は、データが開始するNV
M内の位置(例えば、少なくとも、LBAについてのホスト書き込みデータの先頭を記憶
している読み取り単位など)を指し示す。除算器(整数除算器822)は、例えば、プロ
グラマブル・ハードウェア・レジスタ(SLMエントリ/SLMページ(CSR)823
)からパラメータを受け取って、入ってくるLBAを除算して、どのFLMエントリを選
択すべきか、および(選択されたFLMエントリによって指し示されたSLMページ内の
)どのSLMエントリを選択すべきか判定する。除算器は、FLMとSLMページとに接
続されている。
【0259】
様々な実施形態では、図は、
図1Aのマップ141および/若しくは表143の、また
はそれらに関連した選択された詳細を示す。例えば、ある実施形態では、マップ141お
よび/または表143は、例えば、FLMの1若しくはそれ以上のエントリおよび/また
はSLMの1若しくはそれ以上のエントリといったマッピング情報の1若しくはそれ以上
のキャッシュを実施する。FLMおよび/またはSLMの全体イメージは、NVM(
図1
AのNVM199など)の一部分に維持され、例えば、キャッシュが前にキャッシュされ
たFLMおよび/またはSLMエントリを置き換えるときに更新される。ある実施形態で
は、FLMおよび/またはSLMの全体イメージは、ローリングチェックポイントまたは
ピンポンチェックポイントによって実施され、チェックポイントの各々はそれぞれの全体
マップイメージの一部分である。
【0260】
動作に際して、LBA821が整数除算器822に提示される。除算器はLBAを、S
LMエントリ/SLMページ(CSR)823によって提供される1SLMページあたり
のSLMエントリの数で除算し、結果として商(FLMインデックス822Q)および余
り(SLMページインデックス822R)が得られる。商はFLMエントリのうちの1つ
を選択するのに使用され、選択されたFLMエントリのページフィールドが読み取られる
(SLMポインタ810S)。ページフィールドはSLMページのうちの1つ(SLMペ
ージ820など)を選択するのに使用され、余りは、選択されたSLMページのエントリ
を(例えばオフセットとして)選択するのに使用される。選択されたSLMページエント
リのページフィールドが、少なくとも、提示されたLBAに対応するLBの先頭が記憶さ
れている特定のNVM内の位置、例えば、特定の読み取り単位を選択するのに使用される
(LBポインタ820L)。様々な実施形態では、LBポインタは、NVMの読み取り単
位のアドレス(
図2の読み取り単位アドレス223など)を含む。ある実施形態では、S
LMエントリの各々は、LBのデータのすべてを獲得するのに何個の読み取り単位を読み
取るべきか、および/または読み取り単位内のどこでLBのデータが始まるか(
図2の読
み取り単位での長さ225など)を指示する長さフィールド(符号化サイズおよび/また
は範囲など)を含む。ある実施形態では、FLMエントリの各々は、FLMエントリのペ
ージフィールドによって指定されたそれぞれのSLMエントリのすべてを獲得するのに何
個の読み取り単位を読み取るべきか(
図2の読み取り単位での長さ225など)を指示す
る長さフィールド(符号化サイズおよび/または範囲など)を含む。
【0261】
様々な実施形態では、商は、キャッシュ、例えば、SLMページのフル・アソシアティ
ブ・キャッシュにアクセスするためのキーとして使用される。キャッシュに特定のSLM
ページについてのヒットがある場合には、特定のSLMページの最も遅いコピーがNVM
にアクセスせずにキャッシュ内で見つかる。複数のSLMページへの高速アクセスを提供
することにより、ある実施形態および/または使用シナリオでは、NVMへのランダムア
クセスおよび/またはNVMへの順次データアクセスの複数の独立ストリームのより効率
的な処理(例えば、LBAの第1の領域への順次データアクセスの第1のストリームに、
LBA第2の領域への順次データアクセスの第2のストリームを割り込ませるなど)が可
能になる。
【0262】
ソリッドステートディスク製造自己試験
SSD MSTフローの例の概要は以下の通りである。技術者が試験されるべきSSD
を(例えば、SSDを試験ホストコンピュータに差し込むことにより)ホストに接続する
。技術者およびホスト上で実行されている1若しくはそれ以上のプログラムのうちの任意
の1若しくはそれ以上の指図の下で、SSDは(任意選択でホストと協動して)SSDの
フラッシュの試験を実行し、次いで、製造後に生じた欠陥リストの開始状態を保存する。
フラッシュ試験は、例えば、ホストとの接続状態が機能していることを検査するものであ
る。製造後に生じた欠陥リストの開始状態は、例えば、動作不能であるフラッシュのブロ
ックの開始リストである。次いでホストは、入力ログ(SMARTログなど)に試験を形
成するコマンドを書き込むことによってMSTを構成する。コマンドは、SSDが(例え
ばファームウェアによって)実行することのできる複数のサポートされるMSTコマンド
の中から選択される。概念的には、サポートされるMSTコマンドは、総体として、SS
DのフラッシュとインターフェースするためのAPIに対応する。ホストが構成を完了す
ると、ホストは、SSDをMSTモードにし、SSDに、入力ログからコマンドを実行す
ることによって試験を開始するよう指図するためにSTARTコマンドを(例えば、MS
T_STARTといった特定のSCTコマンドとして)送る。
【0263】
ある使用シナリオでは、STARTコマンドは、SSDに、(ホストに接続されている
間に)試験を即時に開始するよう指示する。別の使用シナリオでは、STARTマンドは
、SSDに、即時に待機モードに入り、SSDが次に電源投入されるまで試験の開始を遅
延させるよう指示する。STARTコマンドが待機モードに入ることを指示する使用シナ
リオのうちの少なくとも一部では、SSDが待機モードに入り、電源を切られた後で、技
術者はSSDをホストから切り離し、SSDを電源(ラックなど)に接続する。次いで技
術者は、SSDに電源を印加するよう電源に指図する。SSDが電源投入されると、SS
Dは試験を開始する。
【0264】
試験が開始した後で、技術者は、SSD上の指示器(例えば、LEDといった視覚表示
)が、試験が完了したことを指示するのを見守る。あるいは、技術者は、周期的にSSD
の電源を切り、SSDを電源から切り離し、SSDをホストに接続し、SSDに電源を投
入し、ホストを介してSSDに、試験の状況、例えば試験が完了したか否かの判定を問い
合わせる。
【0265】
SSDが試験を完了すると、SSDは待機モードに入る。次いで技術者は(SSDがま
だホストに接続されていない場合は)SSDをホストに接続し、SSDに電源を投入する
。ホストは(例えば、技術者の指図の下で、かつ/またはSSDの接続および電源オンに
応答して)試験の結果および製造後に生じた欠陥リストの最終状態を(SSDから)読み
取り、(例えばホストに接続されたストレージに)保存する。次いでホストは、SSDに
MSTを終了するよう指図するためにSSDにCOMPLETEコマンドを(例えば、M
ST_COMPLETEといった特定のSCTコマンドとして)送り、SSDをシステム
ベンダおよび/または顧客への販売のために準備する。
【0266】
以上は一人の技術者の観点から説明されているが、様々な実施形態および/または使用
シナリオにおいて、技術者は一人の個人、あるいは、例えばある一定の期間にわたる、複
数の個人である。
【0267】
ある実施形態および/または使用シナリオでは、MSTが、MSTを受けるSSDの環
境コンテキストの制御のための1若しくはそれ以上の環境パラメータを指定する。ある実
施形態では、環境パラメータは、例えばSSDのフラッシュに適用できる1若しくはそれ
以上の電圧ランプを実施するのに使用される。
【0268】
図9Aに、SSD MSTフローの実施形態の選択された詳細を示す。様々な状況にお
いて、SSD上の試験に関してフローを実行した結果として、SSD上に以前に記憶され
たユーザデータの全部または任意の部分が消去され、かつ/または上書きされる。(SS
D MSTのコンテキストにおける「ユーザデータ」の例には、ホスト読み取り/書き込
みとして受け取られ、またはホスト読み取り/書き込みから生じるデータ、例えば、オペ
レーティング・システム・データ、ドライバデータ、アプリケーションデータなどが含ま
れる。)ホストを使用して、フローに従った試験がセットアップされ、開始される。試験
は、SSDが試験を完了するまで、またはホストが、SSDにABORTコマンドを(例
えば、MST_ABORTといった特定のSCTコマンドとして)送ることによって、S
SDに試験を中途で終了するよう指図するまで、SSDの電源サイクルにまたがって実行
し続ける。ある実施形態では、SSDの一部のフラッシュが行使され、例えば、任意選択
で、任意のオーバープロビジョニング割り振りおよび/または指定を含む、ユーザデータ
を記憶するために割り振られ、かつ/または指定されたフラッシュの領域上だけが行使さ
れる。ある実施形態では、ホストは、試験の結果を解釈する(例えば、ホストは、試験に
合格したか、それとも不合格であったか判定する)。様々な実施形態では、(例えば仮想
ドライブ製造モデルによる)設計業者が、図示のSSD MSTフローに従った作業を可
能にするSSD内のファームウェアを提供する。
【0269】
フローは、大まかに3つの部分、すなわち、試験を実行するためにセットアップするこ
と(MSTを準備する910)、試験を実行すること(MSTを実行する920)、およ
び試験の完了後の様々な完了後作業を実行すること(MSTを終了する930)として構
成されている。フローの準備部分は、例えば、試験要員がコマンドを作成し、かつ/また
はコマンドを作成するためにホスト上でスクリプトを実行することによって、1若しくは
それ以上のMSTコマンドを作成すること(MSTコマンドを生成する912)から開始
する(開始911)。ある使用シナリオ(例えば、ある製造使用シナリオ)では、試験は
、ただ1つのドライブ(SSDなど)書き込みコマンドだけである。フローは引き続き、
SSDをMST動作のために準備し(SSDをMST動作に備える913)、これは例え
ば、ホストがSSDから製造後に生じた欠陥リストの開始状態を読み取ること、およびホ
ストがSSDに、セキュア消去を行い、1若しくはそれ以上のSMARTログをクリアす
るよう指図することを含む。次いでホストは、試験のコマンドをSSDの入力SMART
ログに記憶する(MSTコマンドをSMARTログ0xF8に書き込む914)ことによ
って、試験を実行するためにSSDを構成する。
【0270】
フローでは続いて、ホストが、例えば、SSDにMST_STARTコマンドを発行す
ることによって、SSDにMSTモードに入る(MSTを起動させる915)よう指図す
る。ある使用シナリオでは、発行されるMST_STARTコマンドは、SSDに、SS
Dの次の電源投入時にSMARTログからの試験のコマンドの実行を開始するよう指示す
る機能コードを含む。MST_STARTコマンドを受け取ったことに応答して、SSD
はMSTフラグを設定する。SSDは次に、それ以上ホストと対話せずに(例えば、ホス
トに接続された、SATAインターフェースといったホストインターフェースなしで)入
力SMARTログに記憶された試験を実行することができるようになる。ある実施形態で
は、ホストは、SSDによって出力SMARTログに記憶された試験状態インジケータが
、SSDがMSTモードに入り、かつ/またはMSTモードを作動させたと指示するまで
、SSDの出力SMARTログ(SMARTログ0xF9など)をポーリングする。ホス
トが、SSDがMSTモードに入り、かつ/またはMSTモードを作動させたと判定した
ことに応答して、ホストはSSDに、即時に待機モードに入るよう指図し、次いで、SS
Dの電源を切る。SSDの電源が切られると、SSDは、例えば、試験要員がSSDをホ
ストから、例えばMST動作専用のラックに位置変更することによって、ホストから切り
離され、電源に接続される(SSDを移動する916)。
【0271】
ある使用シナリオでは、位置変更の切り離し(SSDを移動する916)が省かれ、試
験は、SSDがホストに接続されたままの間に行われる。ある使用シナリオでは、発行さ
れるMST_STARTコマンドは、SSDに、例えばホストに接続されたままである間
に、即時にコマンドの実行を開始するよう指示する機能コードを含む。
【0272】
MST_STARTコマンドを発行し、続いて、任意選択で、ラックに接続されるよう
にSSDを位置変更した後で、フローの準備部分(MSTを準備する910)が完了し、
実行部分(MSTを実行する920)が開始する。フローは引き続き、例えばホストまた
はラックによって、SSDに電源を印加する(SSDの電源をオンにする921)。電源
の印加に応答して、SSDは、MSTモードでの動作を開始し(MSTを開始する922
)、入力SMARTログからのコマンドのフェッチおよび実行を開始する(SMARTロ
グ0xF8MSTコマンドを実行する923)。MSTモードにある間に、SSDは、デ
ータコマンド(SATAデータコマンドなど)の処理を使用不可にする。さらに、MST
モードにある間に、SSDは、識別問い合わせに応答して(例えば、SATAドライバ識
別問い合わせに応答してIdentストリングの第7の文字に「T」を示すことによって
)MSTモードの動作を指示する。試験のコマンドを実行している間、SSDは、進捗、
状況、および/または結果情報を提供し、かつ/または記録する(進捗を指示する(LE
D、イベントログ、SMARTログ0xF9)924)。様々な実施形態および/または
使用シナリオでは、進捗、状況、および/または結果情報のうちの任意の1若しくはそれ
以上が累積統計を含む。様々な状況において、誤りの数、(1若しくはそれ以上の)誤り
位置、およびコマンドのうちのいくつが処理されたかのうちの1若しくはそれ以上が含ま
れる。(例えば、ホストがMST_ABORTコマンドにより試験を打ち切るようSSD
に指図することによって)試験を中途で終了するよう指示されない限り、SSDは、(例
えば、1若しくはそれ以上の入力パラメータによって)試験において指定された終了指示
が満たされるまで(完了したか?925)、試験のコマンドのフェッチおよび実行を続け
る。試験が完了すると、SSDは、(例えば、LEDが点滅をやめるなどによって、イベ
ント、ログによって、かつ/またはSMARTログ0xF9によって)試験が完了したこ
とを指示し、例えば、ファームウェアがSSDのすべての動作を停止することによって遊
休モードに入る(SSDを待機させる926)。
【0273】
SSDがホストに接続されている間に試験を実行している場合には、ある使用シナリオ
では、ホストは、進捗、状況、および/または結果情報(出力SMARTログなど)を読
み取って、試験がいつ完了したか判定する。SSDがホストまたはラックに接続されてい
る間に試験を実行している場合には、試験要員は、ある使用シナリオでは、LEDを観察
して試験がいつ完了したか判定する。試験が完了したときに、SSDがホストからラック
へ移動されていた(SSDを移動する916)場合には、SSDは、電源が切られ、例え
ば、試験要員がSSDをラックからホストへ位置変更することによって、ラックから切り
離され、ホストに接続される(SSDを移動する927)。
【0274】
試験を完了し、任意選択で、ホストに接続されるようにSSDを位置変更した後で、フ
ローの実行部分(MSTを実行する920)は完了し、様々な完了作業部分(MSTを終
了する930)が開始する。フローは引き続き、まだ印加されていない場合には、例えば
ホストによってSSDに電源を印加する(SSDの電源をオンにする931)。ホストは
、SSDから、試験の進捗、状況、および/または結果情報の全部または任意の部分を読
み取る(結果を読み取る(イベントログ、欠陥、SMARTログ0xF9)932)。あ
る実施形態では、結果情報は、製造後に生じた欠陥リストの最終状態を含む。ホストが進
捗、状況、および/または結果情報の読み取りを完了した後で、ホストは、SSDがMS
Tモードを終了するよう要求する(MST_COMPLETEコマンドを送る933)。
次いでホストは、例えば、SSDに1若しくはそれ以上の消去および/またはSMART
ログコマンドを送ることによって、SSDに、試験後のクリーンアップを行うよう指図す
る(セキュア消去を実行し、SMARTをクリアする934)。次いでホストはSSDの
電源を切り、SSDを、次の電源投入時にSSDが、SATAデータコマンドといったデ
ータコマンドを受け取り、処理することができるようになる状態にしておく(SSDをS
ATA動作に備える935)。次いで試験要員はSSDをホストから切り離す(SSDを
切断する936)。切り離しの後で、フローの様々な完了作業部分(MSTを終了する9
30)が完了し、全フローが完了する(終了999)。次にSSDは、システムベンダお
よび/または顧客への販売に備えて準備される。
【0275】
ある実施形態、および/または使用シナリオでは(例えば、SSDが試験を行っている
間にホストに接続されたままであるときには)、ホストは、SSDに(例えば特定のSC
Tコマンドによるものとしての)ABORTコマンドを送ることによって、SSDに試験
を中途で終了するよう指図する。これに応答して、SSDは、試験のコマンドの実行を停
止し、遊休モードに入る。
【0276】
MSTモードに入るよう求めるホストからの指図の後、試験完了または打ち切りの前に
、SSDは、1回の電源切断および電源投入のサイクルの後で試験を再開する。具体的に
は、SSDが923、924、および925のいずれかにある間に電源切断が行われた場
合、次の電源投入時に、SSDは、電源切断が原因で試験の実行が中断された場合には、
試験を再開する。
【0277】
様々な実施形態および/または使用シナリオにおいて、ホストは、SSDから読み取ら
れた進捗、状況、および/または結果情報(例えば、イベントログや製造後に生じた欠陥
リストの最終状態)の全部または任意の部分をアーカイブする。様々な実施形態および/
または使用シナリオにおいて、ホストは、入力ログ(例えば、試験のコマンドのうちの1
若しくはそれ以上)の全部または任意の部分をアーカイブする。様々な実施形態および/
または使用シナリオにおいて、ホストは、SSDから読み取られた様々な情報要素の全部
または任意の部分を(例えば、1若しくはそれ以上のスクリプト、プログラム、および/
または解析ツールの実行によって)解釈する。
【0278】
(例えば生産フローにおける)ある実施形態および/または使用シナリオでは、試験を
形成するコマンドの作成(MSTコマンドを生成する912)は、SSDのグループ、例
えば、1生産運転を形成するSSDインスタンスの集合や、同じ生産ラインからのSSD
インスタンスの集合について1回行われる。図に示すフローの残りの部分は、SSDイン
スタンスの各々について行われる。フロー(またはフローの変形)は、生産(製造など)
での使用だけに限定されない。様々な実施形態および/または使用シナリオにおいて、フ
ロー(またはフローの変形)は、バーンイン、品質保証サービス/作業、故障解析、およ
び/またはRMA/点検作業のうちの任意の1若しくはそれ以上の一部として使用される
。
【0279】
様々な実施形態および/または使用シナリオでは、特定のSCTコマンド(START
、COMPLETE、およびABORTなど)のうちの1若しくはそれ以上が、ベンダ固
有のものである。
【0280】
図9Bに、例えば、
図9Aに関して説明したような、1若しくはそれ以上のSSD上で
1若しくはそれ以上のMSTを実行するためのシステムの実施形態の選択された詳細を示
す。システムは、SSD.1 990.1...SSD.N 990.Nとして示す1若し
くはそれ以上のSSDに接続されたホスト/ラック980を含む。ある実施形態および/
または使用シナリオでは、図示のホスト/ラックは、(例えば、MSTを準備し、実行し
、終了する)SSDによって行われるMSTの持続期間にわたって使用されるコンピュー
ティングホストを表す。ある実施形態および/または使用シナリオでは、図示のホスト/
ラックは、(例えば、MSTを準備し、終了する)SSDによって行われるMSTの開始
部分および終了部分に使用されるコンピューティングホストを表し、(例えばMSTを実
行する)MSTの中間部分のための電源用試験ラックを表す。ホスト/ラックは、SSD
にコマンドおよび/またはデータを提供し、SSDから情報および/またはデータを受け
取ることができるようになっている。ホスト/ラックは、SSDに電力を提供することが
できるようになっているが、SSDにコマンドおよび/またはデータを提供することはで
きない。
【0281】
ホスト/ラックは、例えばインターネットによる、別の場所にあるコンピューティング
リソースおよび記憶リソースとの通信を可能にするためにLAN/WAN984に接続さ
れている。ホスト/ラックは、SSDに適用するための様々な試験、ならびにSSDへの
試験の適用からの結果の保持を可能にするためにストレージ985に接続されている。ホ
スト/ラックは、概念的には、MSTコマンド981として図示されている少なくとも1
つのSSD試験を含む。ホスト/ラックは、概念的には、結果982として図示されてい
る、SSDのうちの少なくとも1つが少なくとも1つのMSTを行った結果の少なくとも
1つの集合を含む。ホスト/ラック980「内部」に図示されているが、様々な実施形態
および/または使用シナリオにおいて、MSTコマンド981および/または結果982
は、LAN/WAN984を介してアクセス可能なリモートリソースに保持され、かつ/
またはストレージ985の全部または任意の部分に保持される。
【0282】
SSD.1 990.1は、フラッシュ996として図示されている、大容量記憶を実
施するための1若しくはそれ以上のNVMを含む。SSD.1 990.1は、MSTに
関連した特定の機能を実施する。様々な実施形態において、特定の機能は、ハードウェア
、ソフトウェア、およびファームウェアのうちの任意の1若しくはそれ以上の様々な組み
合わせによって実施される。特定の機能は、SMARTログ0xF8(MSTコマンド)
991、LED(進捗指示器)992、イベントログ(進捗、結果)993、SMART
ログ0xF9(進捗、結果)994、および欠陥リスト995のうちの任意の1若しくは
それ以上を含む。別々の要素として図示されているが、様々な実施形態では、各機能のう
ちの1若しくはそれ以上が同じ要素において実施される。例えば、SMARTログ0xF
8(MSTコマンド)991および/またはSMARTログ0xF9(進捗、結果)99
4は、フラッシュ996の一部分、例えば、特定のLBAと関連付けられたホストデータ
を記憶するのに使用されるフラッシュの部分から分離された部分で実施される。別の例と
しては、イベントログ(進捗、結果)993が、フラッシュ996の一部分で実施される
。
【0283】
様々な実施形態において、SMARTログ0xF8(MSTコマンド)991、イベン
トログ(進捗、結果)993、SMARTログ0xF9(進捗、結果)994、および欠
陥リスト995のうちの任意の1若しくはそれ以上が、SSDのデバイスメモリの全部ま
たは任意の部分によって実施される。SSDデバイスメモリの1若しくはそれ以上の位置
が、ホストLBAと関連付けられたメモリ空間から分離されたSSDデバイスメモリ空間
によってアドレス指定可能である。SSDデバイスメモリ空間は、SSDのホストインタ
ーフェースを介してホストが提供する1若しくはそれ以上のコマンドによってホストから
アクセス可能である。例えば、ホストは、SSDのSATAインターフェースを介してS
SDのデバイスメモリを読み取り/書き込むコマンドを提供する。
【0284】
SMARTログ0xF8(MSTコマンド)991は、ホスト/ラック980によって
提供される試験のコマンドのための記憶を提供する。試験を行うときに、SSD.1 9
90.1は、SMARTログ0xF8(MSTコマンド)991からコマンドをフェッチ
し、実行する。LED(進捗指示器)992は、試験が完了したか否かの指示を提供する
。イベントログ(進捗、結果)993およびSMARTログ0xF9(進捗、結果)99
4は、試験の進捗指示および結果のための記憶を提供する。SSD.1 990.1は、
ホスト/ラック980に、イベントログ(進捗、結果)993およびSMARTログ0x
F9(進捗、結果)994へのアクセスを提供することができるようになっている。例え
ば、試験が実行されているときに、ホスト/ラックはEvenログにアクセスして、試験
が完了したか否か判定する。別の例としては、試験が完了したときに、ホスト/ラックは
、SMARTログ0xF9にアクセスして、試験を行っている間にSSD1 990.1
が記憶した試験の結果を得る。欠陥リスト995は、フラッシュ996の動作不能な、ま
たは相対的に性能の不十分なブロックのリストのための記憶を提供する。SSD.1 9
90.1は、ホスト/ラック980に、欠陥リスト995へのアクセスを提供することが
できるようになっている。例えば、試験が完了した後で、ホスト/ラックは、欠陥リスト
にアクセスして、後で解析する可能性のあるSSDに関する情報をアーカイブする。
【0285】
明示されていないが、SSD.1 990.NはSSD.1 990.1と同様の、ま
たは同一の要素を含む。
【0286】
状況によっては、例えば、突発的なSSD故障や、MST試験がはかどらないために、
MST試験が失敗することがある。故障の原因には、ファームウェア「パニック」、入力
SMARTログにおける不正確なデータ、およびタイムアウト値を超えるサイクル時間が
含まれる。ある使用シナリオでは、MST試験は、故障を指示する1若しくはそれ以上の
条件を指定する(例えばパラメータとして表された)基準を含む。基準は、訂正可能な低
レベルおよび/または高レベルのECC誤りの数、訂正不能な低レベルおよび/または高
レベルのECC誤りの数、プログラム誤りの数、消去誤りの数、ならびに誤りのない読み
取りに対するビット誤りの比を含む。
【0287】
様々な実施形態において、
図9Bのいくつかの要素は、
図9Aのいくつかの要素によっ
て記述される動作に関連したものである。例えば、
図9Bのホスト/ラック980は、ホ
ストおよび/またはラックによって行われる
図9Aの動作のうちの任意の1若しくはそれ
以上を行う。
図9BのSSD.1 990.1...SSD.N 990.Nのうちの任意
の1若しくはそれ以上は、SSDによって行われる、またはSSDに関連した
図9Aの動
作の対象を表す。同様に、
図9BのSSD.1 990.1の特定の要素は、
図9Aの特
定の要素に関連したものである。例えば、
図9BのSMARTログ0xF8(MSTコマ
ンド)991は、
図9AのMSTコマンドをSMARTログ0xF8に書き込む914お
よびSMARTログ0xF8MSTコマンドを実行する923に示されているSMART
ログ0xF8の実施形態である。別の例として、
図9BのLED(進捗指示器)992は
、進捗を指示する(LED、イベントログ、SMARTログ0xF9)924のLEDの
実施形態である。別の例として、
図9Bのイベントログ(進捗、結果)993は、
図9A
の進捗を指示する(LED、イベントログ、SMARTログ0xF9)924および結果
を読み取る(イベントログ、欠陥、SMARTログ0xF9)932のイベントログの実
施形態である。別の例として、
図9BのSMARTログ0xF9(進捗、結果)994は
、
図9Aの進捗を指示する(LED、イベントログ、SMARTログ0xF9)924お
よび結果を読み取る(イベントログ、欠陥、SMARTログ0xF9)932のSMAR
Tログ0xF9の実施形態である。別の例として、
図9Bの欠陥リスト995は、
図9A
の結果を読み取る(イベントログ、欠陥、SMARTログ0xF9)932の欠陥の実施
形態である。
【0288】
様々な実施形態では、
図1Aおよび/または
図1Bの要素の全部または任意の部分が、
図9Aおよび
図9Bの要素の全部または任意の部分の例示的実施形態である。例えば、図
1Aおよび
図1BのSSD101は、
図9Aの動作、および
図9BのSSD.1 990
.1...SSD.N 990.Nのうちの任意の1若しくはそれ以上に関して言及される
SSDの例示的実施形態である。別の例として、
図1Bのホスト102は、
図9Aの動作
に関する、
図9Bのホスト/ラック980のホストおよび/またはラックの例示的実施形
態である。別の例として、
図1AのCPU171は、
図9Aの動作および
図9Bの要素に
関して言及されるファームウェアを実行することが可能なプロセッサの例示的実施形態で
ある。別の例として、
図1Bのファームウェア106は、
図9Aの動作および
図9Bの要
素に関して言及されるファームウェアの例示的実施形態である。
【0289】
様々な実施形態では、
図9Aで説明されるフローの全部または任意の部分が、
図6およ
び/または
図7のコンテキストに関して説明されるSSDの試験(例えば工場試験および
/またはMST)の全部または任意の部分の例示的実施形態である。様々な実施形態およ
び/または使用シナリオでは、
図9Aで説明されるフローの全部または任意の部分(例え
ばホストによって行われる動作)が、
図6の製造用ソフトウェアツール616によって実
施される。様々な実施形態では、
図9Bの全部または任意の部分が
図7Bの全部または任
意の部分の例示的実施形態である(例えば、ホスト/ラック980はホスト780Pの例
示的実施形態であり、SSD.1 990.1...SSD.N 990.NはSSD.1
790P.1...SSD.N 790P.Nの例示的実施形態である)。
【0290】
図10に、MSTコマンド、ならびに関連付けられたパラメータ対の数、およびパラメ
ータ識別子/値対の実施形態の選択された詳細を示す。MST全体(MST入力1000
など)は、1若しくはそれ以上のコマンドと終了マーカとを有するコマンドのシーケンス
である。様々な実施形態において、MST入力1000は、(例えば、
図9AのMSTコ
マンドをSMARTログ0xF8に書き込む914および/または
図9BのSMARTロ
グ0xF8(MSTコマンド)991の場合と同様に)試験されるべきSSDの入力SM
ARTログにホストによって記憶されると共に、(例えば、
図9AのSMARTログ0x
F8MSTコマンドを実行する923の場合と同様に)SSDによってフェッチされ、実
行されるコマンドを表す。
【0291】
各コマンドの後には、数字の後に何個のパラメータ対が続くか指示する数字が続き、数
字の後には、0以上のパラメータ識別子と値の対が続く。最後のコマンドの後には終了マ
ーカが続く。ある使用シナリオでは、MSTは単一のコマンドを含み、任意選択で、1若
しくはそれ以上のパラメータ識別子と値の対を有する。ある使用シナリオでは、MSTは
任意の数のコマンドを含み、各コマンドはそれぞれのパラメータ情報を有し、コマンドの
数は、試験されるべきSSDの入力SMARTログのサイズによってのみ制限される。
【0292】
図に具体的に示すように、MST入力1000は、N個のコマンド(コマンド1および
パラメータ1 1010、コマンド2およびパラメータ2 1020...コマンドNおよ
びパラメータN 1080)の後に終了マーカ(センチネル1090)が続くものを含む
。SSDはセンチネルを、(例えば、MST入力を処理するファームウェアによって)M
STにこれ以上のコマンドが存在しないというインジケータとして理解し、これに応答し
てSSDは、試験が完了したことを指示し、(例えば、
図9AのSSDを待機させる92
6の場合と同様に)遊休モードに入る。
【0293】
コマンド1およびパラメータ1 1010は詳細に図示されており、コマンド(コマン
ド1 1011)の後に、何個のパラメータ対が続くか指示する部分(パラメータ対の数
1012)が続き、パラメータ識別子値対としてのパラメータ対(パラメータIDと値の
対1 1013...パラメータIDと値の対N 1014)で終わる。様々な使用シナリ
オにおいて、コマンド1およびパラメータ1 1010はMST内の唯一のコマンドであ
り、あるいは、MST内の複数のコマンドのうちの第1のコマンドである。いくつかの異
なるシナリオでは、パラメータ対の数1012は0であり(パラメータIDと値の対1
1013...パラメータIDと値の対N 1014が省かれる)、パラメータ対の数10
12は1であり(パラメータIDと値の対1 1013だけがコマンド1およびパラメー
タ1 1010のために存在する)、以下同様である。明示されていないが、コマンド2
およびパラメータ2 1020...コマンドNおよびパラメータN 1080は、各々、
各コマンドの後に何個のそれぞれのパラメータ対が続くか、ならびにそれぞれのパラメー
タ識別子/値対を指示するそれぞれの部分を有する。
【0294】
図11に、MSTで使用可能な様々なコマンド(例えば、ファームウェアによって実行
可能なサポートMSTコマンド)の実施形態の選択された詳細を示す。MSTコマンド1
100は、複数のコマンドについてのコマンドコード、コマンド名、コマンド記述を図示
している。MSTコマンドは、例えば、
図10のMST入力1000として示すような、
MSTを表現する際のコマンドとして使用できる。図で記述されるコマンドには、ドライ
ブ書き込み1101、ドライブ消去1102、SATA PHYバーンイン1103、遅
延1104およびストレスモード1105が含まれる。他のコマンド、例えば、ループコ
マンドおよび/または分岐コマンドなど、MST内のフロー制御を行うためのコマンドも
企図されている。
図11のコンテキストでは、(本明細書で別途説明される)SSDが「
ドライブ」の一例である。
【0295】
図12に、MSTの例の選択された詳細を示す。MST入力の例1200は、総体とし
てMSTの例を形成する、複数のコマンドについてのコマンドおよび関連付けられた記述
ならびに終了マーカを示している。MSTの例は、(例えば、
図9AのMSTコマンドを
SMARTログ0xF8に書き込む914および/または
図9BのSMARTログ0xF
8(MSTコマンド)991の場合と同様に)試験されるべきSSDの入力SMARTロ
グにホストによって記憶されると共に、(例えば、
図9AのSMARTログ0xF8MS
Tコマンドを実行する923の場合と同様に)SSDによってフェッチされ、実行される
MSTコマンドのシーケンスとして使用するのに適する。
図12のコンテキストでは、(
本明細書で別途説明される)SSDが「DRIVE」および「ドライブ」の一例である。
【0296】
図13A〜
図13Dに、具体的な使用シナリオにおけるドライブ書き込みコマンド(例
えば、
図11のドライブ書き込み1101)の実施の実施形態の選択された詳細を示す。
概念的には、(例えばMST処理の間に)ドライブ書き込みコマンドを実行するSSDが
、複数のR−ブロックといった部分としてSSDのフラッシュに作用する。
図13A〜図
13Dには、SSDのフラッシュが複数のR−ブロックとして示されており、図の各々は
、それぞれの時点およびR−ブロックの対応する状態に対応するものである。ニーモニッ
ク「Sys」は、システムデータ(例えば一部または全部のマップ表)と関連付けられた
R−ブロックに対応する。ニーモニック「Usr」は、(例えば、ホスト読み取り/書き
込みとして受け取られ、またはホスト読み取り/書き込みから生じる)ユーザデータと関
連付けられたR−ブロックに対応する。点線の大きい「×印」は、「不良」な(例えば、
動作不能な、欠陥のある、かつ/または相対的に高い誤り率で特徴付けられる)R−ブロ
ックに対応する。ニーモニック「Pat」は、例えば、特定のパターン、複数の特定のパ
ターンのうちの選択される1つ、および/または算出されるパターンで、(例えば、SS
Dのファームウェアによる)ドライブ書き込みコマンドの実行によって書き込まれたR−
ブロックに対応する。
【0297】
ドライブ書き込みコマンドは反復して実行され、概念的には、各反復時に、1若しくは
それ以上のR−ブロックにわたって書き込みを逐次的に実行する。
図13A〜
図13Dで
図示する実施形態では、ユーザデータと関連付けられたR−ブロックだけが書き込まれる
(例えば、システムデータと関連付けられたR−ブロックは保持される)。ドライブ書き
込みコマンドの実行が進むに従って、SSDは(例えばファームウェアによって)周期的
に統計を収集、記録し、どのR−ブロックも意図せずに消去されていないことを検査/検
証する。ある実施形態では、ドライブ書き込みコマンドの進捗がサイクル数で測られ、各
サイクルは、ユーザデータと関連付けられたすべてのR−ブロックへの少なくとも1回の
書き込みに対応する。ドライブ書き込みコマンドの反復が完了すると、SSDは(例えば
ファームウェアによって)どのR−ブロックも意図せずに消去されていないこと、および
/またはすべてのR−ブロックが正しくプログラムされていることを検査/検証する。
【0298】
図13Aに、ドライブ書き込みコマンドの実行による変更の前の時点に対応する、初期
状態のR−ブロック1301〜1310としてのSSDのフラッシュを示す。R−ブロッ
ク1303、1304、1306〜1308、および1310は、(Usrニーモニック
で図示するように)ユーザデータに割り振られており、かつ/またはユーザデータを含む
。ドライブ書き込みコマンドはまだR−ブロックのいずれも変更していないため、ドライ
ブ書き込みコマンドの実行によって書き込まれたR−ブロックはない。R−ブロック13
01および1302は、(Sysニーモニックで図示するように)システムデータに割り
振られており、かつ/またはシステムデータを含む。図示の実施形態では、ドライブ書き
込みコマンドは、ユーザデータと関連付けられたR−ブロックだけを変更し、したがって
、R−ブロック1301および1302は、ドライブ書き込みコマンドの実行全体を通し
てシステムデータと関連付けられたままであり、
図13B〜
図13Dに関してもこれ以上
論じない。R−ブロック1305および1309は(点線の大きい×印で図示するように
)不良である。図示の使用シナリオでは、これ以上の不良R−ブロックは発見されない(
また、以前に不良であったR−ブロックのいずれも何らかの理由で修復されない)。した
がって、R−ブロック1305および1309は、ドライブ書き込みコマンドの実行全体
を通してこれらだけに限られた不良R−ブロックであり、
図13B〜
図13Dに関しても
これ以上論じない。
【0299】
図13Bに、ドライブ書き込みコマンドの第1の反復後の時点に対応する、第1の反復
状態のR−ブロック1301〜1310を示す。R−ブロック1303および1304は
、ここでは、(Patニーモニックで図示するように)ドライブ書き込みコマンドの第1
の反復によって書き込まれたそれぞれのパターンを含む。R−ブロック1306〜130
8および1310は、ドライブ書き込みコマンドの実行によってまだ変更されておらず、
(Usrニーモニックで図示するように)ユーザデータと関連付けられたままである。
【0300】
図13Cに、ドライブ書き込みコマンドの第2の反復後の時点に対応する、第2の反復
状態のR−ブロック1301〜1310を示す。R−ブロック1306および1307は
、ここでは、(Patニーモニックで図示するように)ドライブ書き込みコマンドの第2
の反復によって書き込まれたそれぞれのパターンを含む。R−ブロック1303および1
304は、(Usrニーモニックで図示するように)ユーザデータと関連付けられている
が、ドライブ書き込みコマンドの実行前にR−ブロック1303および1304に記憶さ
れたユーザデータは、(例えば、ドライブ書き込みコマンドの第1の反復によって)上書
きされている。R−ブロック1308および1310は、ドライブ書き込みコマンドの実
行によってまだ変更されておらず、(Usrニーモニックで図示するように)ユーザデー
タと関連付けられたままである。
【0301】
図13Dに、ドライブ書き込みコマンドの完了後の時点に対応する、最終状態のR−ブ
ロック1301〜1310を示す。R−ブロック1308および1310は、ここでは、
(Patニーモニックで図示するように)ドライブ書き込みコマンドの最終反復によって
書き込まれたそれぞれのパターンを含む。R−ブロック1303、1304、1306、
および1307は、(Usrニーモニックで図示するように)ユーザデータと関連付けら
れているが、ドライブ書き込みコマンドの実行前にR−ブロック1303、1304、1
306、および1307に記憶されたユーザデータは、(例えば、ドライブ書き込みコマ
ンドの第1または第2の反復によって)上書きされている。
【0302】
様々な実施形態および/または使用シナリオにおいて、ドライブ書き込みコマンドは、
以下の表に記述するように、0以上のパラメータを有する。表内のすべてのパラメータは
任意選択のものであることに留意されたい。
【0304】
様々な実施形態および/または使用シナリオにおいて、SATA PHYバーンインコ
マンドは、以下の表に記述するように、0以上のパラメータを有する。表内のすべてのパ
ラメータは任意選択のものであることに留意されたい。
【0306】
MST試験の一部としてのSATA PHYバーンインコマンドを実行している間にS
SDのSATAリンクを介してホストに接続されるSSDを考える。SATAリンクは、
SATA PHYバーンインコマンドが実行されている間は利用できないため、ホストは
、SSDに試験を中途で終了するためのABORTコマンドを送ることができない。代わ
りにSSDは、試験を中途で終了するために電源を切られる。ある実施形態では、SAT
A PHYバーンインコマンドは、少なくとも一部は、SATAリンクのBIST機能、
SATAリンクのSATA PHY、または両方のアクティブ化によって実施される。
【0307】
ある実施形態および/または使用シナリオでは、ストレス・モード・コマンド(ストレ
スモード1105など)が、特定のフラッシュアクセスを指定するMSTの構築を可能に
する。状況によっては、特定のフラッシュアクセスは、特定の製造者またはシステムベン
ダ(
図6の製造者620またはシステムベンダ630など)が専有するアクセスのシーケ
ンスである。ストレス・モード・コマンドは、製造者またはシステムベンダが、SSDの
ファームウェアにおいて専有のシーケンスを実施せずに、よって、設計業者(
図6の設計
業者610など)に専有のシーケンスを開示せずに、専有のシーケンスに従ってSSDを
行使することを可能にする。ある使用シナリオでは、製造者またはシステムベンダは、1
若しくはそれ以上の特定のストレス・モード・コマンドを使用して、例えば、特定のスト
レス・モード・コマンドのうちの1若しくはそれ以上のパラメータのうちの1若しくはそ
れ以上を変化させることによって、SSDのフラッシュの動作不能なブロックを突き止め
る。様々な使用シナリオにおいて、専有のシーケンスは、フラッシュの動作電圧、フラッ
シュの特定のセルの行使、フラッシュに対する操作の頻度、フラッシュの誤り検査率、フ
ラッシュのセルの位相的欠陥、フラッシュのセル間の接続のうちの任意の1若しくはそれ
以上に関連したパラメータのうちの1若しくはそれ以上を変化させる。ある実施形態では
、ストレス・モード・コマンドは、SSDのファームウェアによって、例えば、
図10で
示すようなコマンドおよびパラメータ指定に従って、アドレス、シーケンス、および挙動
の各パラメータのうちの任意の1若しくはそれ以上を含むように実施される。
【0308】
図14に、MST結果ログの実施形態の選択された詳細を示す。MST結果ログ140
0は、複数のログフィールドについてのログフィールドおよび関連付けられたログフィー
ルド要素を図示している。様々な実施形態において、MST結果ログ1400の全部また
は任意の部分は、(例えば、
図9Aの進捗を指示する(LED、イベントログ、SMAR
Tログ0xF9)924および結果を読み取る(イベントログ、欠陥、SMARTログ0
xF9)932で参照されると共に、
図9Bのイベントログ(進捗、結果)993および
SMARTログ0xF9(進捗、結果)994で例示される)イベントログおよびSMA
RTログのうちの任意の1若しくはそれ以上の全部または任意の部分を表す。図で記述す
るログフィールドは、ログヘッダ1401、試験状態1402、進捗標識1403、統計
1404、および誤り1405を含む。
【0309】
以下の表に、MST結果ログの様々な実施形態の選択された要素を記載する。要素のう
ちの任意の1若しくはそれ以上が、様々な実施形態において任意選択のものである。
【0311】
以下の表に、MSTイベントログの様々な実施形態の選択された要素を記載する。要素
のうちの任意の1若しくはそれ以上が、様々な実施形態において任意選択のものである。
【0313】
他の実施形態情報
様々な実施形態において、SSD(
図9BのSSD.1 990.1など)は、少なく
とも一部はファームウェアによって、MSTコマンド(
図11のMSTコマンド1100
など)の処理を実施する。ファームウェアは、様々なモジュール、例えば、(例えば相対
的に低い権限レベルの)ユーザ空間で実行するためのモジュールや、(例えば相対的に高
い権限レベルの)コア空間で実行するためのモジュールを含む。ある実施形態では、ユー
ザ空間モジュールは、パーシングモジュールおよびコマンド実行モジュールを含む。ある
実施形態では、コア空間モジュールは、例えばリサイクラ(
図1Aのリサイクラ151な
ど)に関連した、ハードウェア調整モジュールを含む。ある実施形態では、MSTコマン
ドの処理および/またはMSTモードでの動作に特有のファームウェアの部分は、誤り処
理および/若しくは報告ルーチンへの「触手」、または、通常は特にMSTモードに関連
したものではない他のルートを含む。
【0314】
以下の表に、MSTモードの全部または任意の部分を実施するファームウェアの選択さ
れたルーチンの例を記載する。
【0316】
以下の表に、ユーザ空間とコア空間との間の選択されたAPIエントリ点の例を記載す
る(エントリ点は、MSTモードの全部または任意の部分を実施するファームウェアによ
って実施される)。
【0318】
実施技法の例
ある実施形態では、入出力装置またはこれの(1若しくはそれ以上の)部分、例えば、
フラッシュメモリなどを備える1若しくはそれ以上のSSDを含むストレージ入出力装置
といった入出力装置のVDMMおよび/またはSSD MSTと共に使用するのに適する
SSDおよび/またはSSDコントローラ、コンピューティングホストのフラッシュ・メ
モリ・コントローラおよび/またはSSDコントローラ(
図1AのSSDコントローラ1
00など)、ならびに、プロセッサ、マイクロプロセッサ、システム・オン・チップ、特
定用途向け集積回路、ハードウェアアクセラレータ、または前述の動作の全部若しくは部
分を提供する他の回路の部分によって行われる動作の全部または任意の部分の様々な組み
合わせが、コンピュータシステムによる処理に準拠する仕様によって指定される。仕様は
、様々な記述、例えば、ハードウェア記述言語、回路記述、ネットリスト記述、マスク記
述、またはレイアウト記述に従ったものである。記述の例には、Verilog、VHD
L、SPICE、SPICEの変形、例えば、PSpice、IBIS、LEF、DEF
、GDS−II、OASIS、または他の記述が含まれる。様々な実施形態では、処理は
、1若しくはそれ以上の集積回路上に含めるのに適する論理および/または回路を生成し
、検証し、または指定するための解釈、コンパイル、シミュレーション、および合成の任
意の組み合わせを含む。各集積回路は、様々な実施形態によれば、様々な技法に従って設
計することができ、かつ/または製造することができる。技法には、プログラマブルな技
法(例えば、フィールド若しくはマスク・プログラマブル・ゲート・アレイ集積回路)、
セミカスタムの技法(例えば、全部若しくは一部がセルベースの集積回路)、およびフル
カスタムの技法(例えば、実質的に専門化された集積回路)、それらの任意の組み合わせ
、または集積回路の設計および/若しくは製造と適合する任意の他の技法が含まれる。
【0319】
ある実施形態では、命令のセットを記憶しているコンピュータ可読媒体によって記述さ
れる動作の全部または部分の様々な組み合わせが、1若しくはそれ以上のプログラム命令
の実行および/若しくは解釈によって、1若しくはそれ以上のソースおよび/若しくはス
クリプト言語命令文の解釈および/若しくはコンパイルによって、または、プログラミン
グおよび/若しくはスクリプティング言語命令文で表現された情報をコンパイルし、変換
し、かつ/または解釈することによって生成されるバイナリ命令の実行によって実行され
る。命令文は任意の標準のプログラミングまたはスクリプティング言語(例えば、C、C
++、Fortran、Pascal、Ada、Java(登録商標)、VBscrip
t、Shell)に準拠する。プログラム命令、言語命令文、またはバイナリ命令のうち
の1若しくはそれ以上が、任意選択で、1若しくはそれ以上のコンピュータ可読記憶媒体
要素上に記憶される。様々な実施形態では、プログラム命令の一部、全部、または様々な
部分が、1若しくはそれ以上の関数、ルーチン、サブルーチン、インラインルーチン、プ
ロシージャ、マクロ、またはそれらの部分として実現される。
【0320】
各実施形態を、SSDの不揮発性メモリの一例としてのフラッシュ・メモリ・デバイス
を使用して説明した。多くの他の種類の揮発性または不揮発性のメモリデバイスが、フラ
ッシュ・メモリ・デバイスの代わりに、またはフラッシュ・メモリ・デバイスに加えて、
これらの実施形態の多くで適用でき、使用できるものであり、複数の異なる種類のメモリ
デバイスを使用する実施形態がある。さらに、各実施形態を、入出力装置の一種といった
電子構成部品の例としてSSDを使用して説明した。本明細書で説明した技法は、他の種
類の入出力装置、コンピュータ、ネットワーク設備、他の形の電子設備といった多くの異
なる電子構成部品に等しく適用できる。
【0321】
結論
ある特定の選択が、説明において、テキストおよび図面を作成するに際の単なる便宜の
ためになされており、別の指示がない限り、それらの選択は、それ自体で、前述の実施形
態の構造または動作に関する追加情報を伝えるものと解釈すべきではない。選択の例には
、図の符番に使用される呼称の特定の編成または割り当て、および実施形態の特徴および
要素を識別し、参照するのに使用される要素識別子(コールアウトや数値識別子など)の
特定の編成または割り当てが含まれる。
【0322】
「includes」または「including」という語は、開放型範囲の論理集
合を記述する抽象概念として解釈されるべきことが明確に意図されており、後に続けて「
within」という語が明示されない限り物理的包含を伝えるためのものではない。
【0323】
前述の実施形態は、説明および理解の明確さのためにある程度詳細に説明されているが
、本発明は提示した詳細だけに限定されるものではない。本発明の多くの実施形態がある
。開示の実施形態は例示であり、限定ではない。
【0324】
説明と整合性を有する、構成、配置、および使用における多くの変形が可能であり、そ
れらの変形は、発行される特許の特許請求の範囲内にあることが理解されるであろう。例
えば、相互接続および機能ユニットのビット幅、クロック速度、および使用される技術の
種類は、各構成要素ブロックにおける様々な実施形態に従って変わりうる。相互接続およ
び論理に与えられた名称は、単なる例であり、説明した概念を限定するものと解釈すべき
ではない。フローチャートおよび流れ図のプロセス、動作、および機能要素の順序および
配置は、様々な実施形態に従って変わりうる。また、特に別に指定しない限り、指定され
る値範囲、使用される最大値および最小値、または他の特定の仕様(例えば、フラッシュ
メモリ技術の種類、レジスタおよびバッファ内のエントリまたは段の数)は、単に前述の
実施形態のものにすぎず、実施技術の改善および変更を追跡することが見込まれるもので
あり、限定として解釈すべきではない。
【0325】
当分野で公知の機能的に等価の技法を、様々なコンポーネント、サブシステム、動作、
関数、ルーチン、サブルーチン、インラインルーチン、プロシージャ、マクロ、またはそ
れらの部分を実施するのに、前述の技法の代わりに用いることができる。また、実施形態
の多くの機能的態様を、より高速な処理(以前にハードウェアにあった機能のソフトウェ
アへの移行を円滑化する)およびより高い集積密度(以前にソフトウェアにあった機能の
ハードウェアへの移行を円滑化する)の実施形態に依存する設計制約条件および技術傾向
に応じて、選択的に、ハードウェア(おおむね専用の回路など)で、またはソフトウェア
で(例えば、プログラムされたコントローラ若しくはプロセッサのある方式によって)実
現できることも理解される。様々な実施形態の具体的な変形は、これに限定されるもので
はないが、分割の違い、フォームファクタおよび構成の違い、異なるオペレーティングシ
ステムおよび他のシステムソフトウェアの使用、異なるインターフェース規格、ネットワ
ークプロトコル、または通信リンクの使用、本明細書で説明した概念を、特定の用途の固
有の技術的業務的制約条件に従って実施するときに予期されるべき他の変形を含む。
【0326】
各実施形態は、前述の各実施形態の多くの態様の最小限の実施に必要とされるものを大
きく超えた詳細および環境的コンテキストと共に説明されている。ある実施形態は、残り
の要素間での基本的協働を変更せずに開示の構成要素または機能を割愛することを当業者
は理解するであろう。よって、開示の詳細の多くが前述の実施形態の様々な態様を実施す
るのに必要ではないことが理解される。残りの要素が先行技術と区別できる範囲内で、割
愛される構成要素および特徴は本明細書で説明した概念を限定するものではない。
【0327】
設計におけるすべてのそのような変形は、前述の実施形態によって伝えられる教示に対
する実質的な変更ではない。また、本明細書で説明した実施形態は、他のコンピューティ
ング用途およびネットワーキング用途に幅広い適用性を有し、前述の実施形態の特定の用
途または産業だけに限定されるものではないことも理解される。よって本発明は、発行さ
れる特許の特許請求の範囲内に包含されるあらゆる可能な改変形態および変形形態を含む
ものと解釈すべきである。