(57)【特許請求の範囲】
【請求項１】
ソリッドステートデバイス内のオブジェクト指向メモリの方法であって、
原子動作様式で単一オブジェクトとして定義されたデータの組にアクセスすることであって、前記アクセスは、ホスト以外のソースからである、アクセスすることと、
前記ホスト以外のソースからアクセスがあった場合に、いくつかのソリッドステートメモリブロックを含むソリッドステートデバイスの制御構成要素によってフォーマットされるように、前記いくつかのソリッドステートメモリブロック内に前記単一オブジェクトとして前記定義されたデータの組を記憶することと、を含み、
前記定義されたデータの組を記憶することおよび前記定義されたデータの組にアクセスすることは、前記原子動作が完了すると実施され、
前記単一オブジェクトとして前記定義されたデータの組を記憶することは、前記アクセスされた定義されたデータの組上での読み出し検証動作が完了すると実施され、
前記アクセスされたデータ上で前記読み出し検証動作を実施することは、前記アクセスされた定義された新しいデータの組上での前記読み出し検証動作が完了し、前記定義された新しいデータの組の前記記憶することが完了するまで、前記データの以前に記憶された定義されたデータの組の最新の既知の良好なバージョンへポインタを使用することを含む、方法。 
【請求項２】
前記方法は、前記読み出し検証動作が順調に完了すると、前記定義された新しいデータの組の複数のコピーを記憶すること、
少なくとも特定のエラー数が前記定義された新しいデータの組の前記複数のコピーのうちの別の１つで検出される時、前記データの読み出し検証されたコピーに自動フェイルオーバーを提供すること、および／または
少なくとも特定の数の新しいエラーが、前記定義された新しいデータの組の別のそれまでに読み出し検証され、記憶されたコピーで検出される時、前記定義された新しいデータの組の読み出し検証されたコピーに自動フェイルオーバーを提供すること、を含む、請求項１に記載の方法。 
【請求項３】
前記方法は、特定の数のエラーが、前記定義されたデータの組のいくつかのそれまでに読み出し検証され、記憶されたコピーのうちの少なくとも１つで検証される時、エラー修正動作を実施することを含む、請求項２に記載の方法。 
【請求項４】
前記方法は、前記ソースからの前記データにアクセスする前に、前記定義されたデータの組の演算署名を提供することを含み、前記演算署名は、前記ソリッドステートデバイスによって、エラーの検出のために前記ソースに戻すように、および／または前記ホストに戻すように提供される、請求項３に記載の方法。 
【請求項５】
ソリッドステートデバイスであって、
前記ソリッドステートデバイス内のいくつかのソリッドステートメモリアレイに結合される制御構成要素を備え、各アレイは、メモリセルの複数の物理ブロックを有し、前記制御構成要素は、
単一オブジェクトとして定義されたデータの組にアクセスし、
前記アクセスがあった場合に、前記単一オブジェクトとして、前記いくつかのアレイに前記定義されたデータの組を記憶し、
メモリセルの前記物理ブロックの前記いくつかのメモリアレイの特定のパーティション、および
メモリセルのいくつかの隣接する物理ブロック内の先頭から終端まで、
から選択される場所に、前記定義されたデータの組を記憶し、
原子動作の完了まで、前記アレイの前記データの最新の既知の良好なコピーにポインタを割り当てるように構成され、前記ポインタは、前記データの読み出しが前記最新の既知の良好なコピー上で実施されるように指示するように構成される、デバイス。 
【請求項６】
前記定義されたデータの組の１つ以上の反復がアクセスされ、
前記１つ以上の反復の複数のコピーが、前記単一オブジェクトとして前記いくつかのアレイの特定の場所に記憶される、請求項５に記載のデバイス。 
【請求項７】
前記アクセスされたデータの前記１つ以上の反復がアクセスされた後、前記制御構成要素は、前記単一オブジェクトを前記アレイに記憶する前に、前記１つ以上のデータ反復の複数のコピーを独立的に検証するように構成される、請求項６に記載のデバイス。 
【請求項８】
前記制御構成要素は、前記アレイに前記単一オブジェクトを記憶する前に発見されたいくつかのエラーを読み出し、独立的に修正するように構成される、請求項７に記載のデバイス。 
【請求項９】
前記制御構成要素は、ホストによるいかなる読み出しも、新しい最新の既知の良好なコピーへのポインタによって指示されるように、記憶完了肯定応答を前記ホストに送信するように構成される、請求項５に記載のデバイス。 
【請求項１０】
前記制御構成要素は、新しい定義されたデータの組を最新インストールとして保存するように構成され、少なくとも１回記憶された際に、前記新しい定義されたデータの組が順調にブートした後、前記最新インストール構成が既知の良好なコピーとして定義されるようになる、請求項５に記載のデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、半導体メモリデバイス、方法、およびシステムに関し、より具体的には、ソリッドステートデバイス内のオブジェクト指向メモリに関する。
【背景技術】
【０００２】
メモリデバイスは、多様な他の電子デバイスの中でも、例えば、コンピュータ、携帯情報端末（ＰＤＡ）、デジタルカメラ、およびモバイル（例えば、携帯）電話の中の、内部の半導体集積回路、および／または外部の着脱式デバイスとして提供される場合がある。数ある他の種類のメモリ構成の中でも、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、シンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）、相変化ランダムアクセスメモリ（ＰＣＲＡＭ）、およびフラッシュメモリを含む、多くの異なる種類のメモリが存在する。
【０００３】
多種多様な種類のメモリは、メモリデバイスを使用するシステムに使用される場合がある。多種多様な種類のメモリは、ホストのためのメモリを提供するために任意の組み合わせで使用される場合がある。例えば、フラッシュメモリ（例えば、ＮＡＮＤまたはＮＯＲメモリセルを使用する）は、メモリデバイスの中に含まれる場合がある。フラッシュメモリは、ユニバーサルシリアルバス（ＵＳＢ）接続等のインターフェースを介してシステムに結合される場合がある、内部メモリまたは着脱式メモリとして利用される場合がある。
【０００４】
フラッシュメモリデバイスは、広範囲の電子機器用途のための不揮発性メモリとして利用される場合がある。フラッシュメモリデバイスは、高いメモリ密度、高い信頼性、および低電力消費を可能にする１トランジスタメモリセルを使用する場合がある。
【図面の簡単な説明】
【０００５】
【図１】本開示の１つ以上の実施形態に従う、システムのブロック図である。
【図２】本開示の１つ以上の実施形態に従う、メモリアレイの一部の図である。
【図３】本開示の１つ以上の方法の実施形態に従うソリッドステートデバイス内のオブジェクト指向メモリを示すブロック図である。
【発明を実施するための形態】
【０００６】
本開示は、ソリッドステートデバイス内のオブジェクト指向メモリのための方法、デバイス、およびシステムを含む。ソリッドステートデバイス内のオブジェクト指向メモリのための方法の一実施例は、原子動作様式で単一オブジェクトとして定義されたデータの組にアクセスすることを含み、アクセスは、ホスト以外のソースからである。多様な実施形態において、ソースは、説明のためであって限定ではなく、図１に関して説明されるネットワークとすることができる。実施形態はまた、いくつかのソリッドステートメモリブロックを含むソリッドステートデバイスの制御構成要素によってフォーマットされるように、いくつかのソリッドステートメモリブロック内に単一オブジェクトとして定義されたデータの組を記憶することも含む。
【０００７】
ソリッドステートデバイスは、いくつかのメモリデバイス（例えば、いくつかのメモリチップ）を含むことができる。本開示に利用されるように、ある物を意味するために「いくつかの」を使用すると、１つ以上のそのような物を意味することができる。例えば、いくつかのメモリデバイスは、１つ以上のメモリデバイスを意味することができる。当業者は、１つのメモリチップがいくつかのダイを含むことができることを理解するであろう。各ダイは、いくつかのメモリアレイおよびその上の周辺回路を含むことができる。メモリアレイは、いくつかのプレーンを含むことができ、各プレーンは、メモリセルのいくつかの物理ブロックを含む。各物理ブロックは、データのいくつかのセクタを記憶することができる、メモリセルのいくつかのページを含むことができる。
【０００８】
大型記憶容量全体にわたって低レイテンシおよび高帯域幅の動作を実現するために、ソリッドステートデバイスは、並列に動作する複数のチャンネルを含む場合があり、各チャンネルは、メモリのいくらかの部分を動作する。このため、メモリチャンネルコントローラ（例えば、ＮＡＮＤフラッシュコントローラロジック）の複数のコピーが、ソリッドステートデバイスのマルチチャンネルシステムコントローラ上に集積される場合がある。そのような配設において、各チャンネル、またはチャンネルの集約ポイントは、論理から物理へのマッピングおよび／またはブロック管理（例えば、ウェアレベリング）を行うことを含む、チャンネルによって供給される関連メモリを動作するタスクが課される場合がある。したがって、複数のチャンネルの各々に対応する、複数のメモリチャンネルコントローラの各コピーは、マッピングおよびブロック管理の機能を実行するために使用される高速バッファメモリを有する場合がある。加えて、複数のメモリチャンネルコントローラの各コピーは、それぞれのチャンネルに指示された「移動中」データのためのバッファメモリを含む場合がある。
【０００９】
メモリデバイスは、ソリッドステートデバイスを形成するように共に組み合わされる場合がある。ソリッドステートデバイスは、多様な他の種類の不揮発性および揮発性メモリの中でも、不揮発性メモリ（例えば、ＮＡＮＤフラッシュメモリおよび／またはＮＯＲフラッシュメモリ）を含む場合があり、および／または、揮発性メモリ（例えば、ＤＲＡＭおよび／またはＳＲＡＭ）を含む場合がある。
【００１０】
ソリッドステートデバイスは、性能、サイズ、重量、耐久性、動作温度範囲、および／または電力消費の点においてハードドライブに優る利点を有する場合があるので、ソリッドステートデバイスは、コンピュータの主記憶装置等のハードディスクドライブを置換するために使用される場合がある。例えば、ソリッドステートデバイスは、稼動部がないことに起因して、磁気ディスクドライブに比較すると優れた性能を有する場合があり、磁気ディスクドライブに関連する、シーク時間、レイテンシ、および／または他の電気機械的遅延を改善する場合がある。ソリッドステートデバイス製造者は、内部のバッテリー電源を使用しなくてもよいフラッシュソリッドステートデバイスを作成するために不揮発性フラッシュメモリを使用する場合があり、これによって、ドライブをより多用途および小型にすることを可能にする。
【００１１】
いくつかのメモリ用途では、ソリッドステートデバイスは、ハードディスクドライブに対する置換または補完として使用される場合がある。これらの事例において、ソリッドステートデバイスは、ハードドライブの機能に対応するように設計された環境に位置する場合がある。ソリッドステートデバイスとハードドライブとの間の最小消去可能単位の粒度または量子化の差（例えば、ハードドライブの５１２バイトセクタに対して、ソリッドステートデバイスの１２８Ｋまたは２５６Ｋブロック）に起因して、コンピューティングデバイスのハードドライブに対する置換または補完として使用されるソリッドステートデバイスは、ピーク性能レベルで動作しない場合がある。
【００１２】
複数のメモリチャンネルコントローラの各コピーと、メモリの対応する部分との間の並列通信は、その間にデータ、制御、電力、および接地の接続を確立するために約２０ピンを要する場合がある。これによって、結果として、既存のディスクドライブのプロトコルとの互換性を保証するために、大量のピンカウントを有する高価なメモリシステムとなる可能性がある。
【００１３】
ソリッドステートデバイスの開発および採用は、より高い入力／出力性能を求める急速に拡大する必要性によって推進されてきた。高性能のデスクトップコンピュータ、ラップトップ、モバイルシステムもしくはデバイス、ならびに／またはリアルタイムもしくはほぼリアルタイムで情報を配信することが必要な任意のアプリケーションも、ソリッドステートデバイスから恩恵を受けることができる。歴史的に、ソリッドステートデバイスは、ハードドライブよりも高価であった。しかしながら、製造技術の進歩および拡大したチップ容量によって、価格が低下し、一般消費者および企業レベルの消費者のどちらもソリッドステートデバイスをこれまでのメモリシステムに対する有望な代替として再評価するようになっている。
【００１４】
メモリセルは、２つ以上の容易に識別可能な状態の間を迅速に切り替えることができる構造に、デジタル情報を記憶する。いくつかのメモリセルは、セルの領域内に含有される電荷の存在または不在に基づく。その電荷を保存することによって、メモリセルはその記憶したデータを保存する。いくつかのメモリセルの構造は、本質的に、電荷を漏洩し、その格納された電荷を回復するためには継続的に電力が供給されなければならない。
【００１５】
しかしながら、不揮発性メモリは、電荷情報を保存するために電力を必要としない。例えば、フラッシュメモリは、その上に電荷が格納されている「浮遊ゲート」を有する場合があり、これは電荷の漏洩を抑制するために防護されている。したがって、電力は、記憶された情報（例えば、データ、ビット等）を変更する、例えば、メモリセルへの書き込み（すなわち、電荷を格納する）、メモリセルからの読み出し（すなわち、電荷が存在するかどうかを判定する）、および／または消去する（すなわち、電荷を除去する）ためだけに必要である。フラッシュメモリ内に記憶されたデータの不揮発性は、携帯用電子機器用途では利点である。不揮発性メモリは、数ある他の使用の中でも、例であって限定ではなく、パーソナルコンピュータ（例えば、デスクトップおよびラップトップ）、携帯情報端末（ＰＤＡ）、デジタルカメラ、および携帯電話で使用される場合がある。数ある他の種類中でも、コンピューティングシステムにおいて使用される基本入出力システム（ＢＩＯＳ）等のプログラムコードおよびシステムデータは、不揮発性メモリデバイスに記憶される場合がある。
【００１６】
ソリッドステートメモリデバイスは、ソリッドステートフラッシュメモリ上に永続的データを格納するメモリデバイスである場合がある。ソリッドステートメモリデバイスは、関与する可動部品が存在しないため、用語の従来の意味においては、ハードドライブではない。そうではなく、ソリッドステートメモリデバイスは、磁気または光学媒体ではなく、集積回路（ＩＣ）を使用して体系化された半導体メモリのアレイを有する。
【００１７】
この配設は多くの利点を有する。ソリッドステートデバイスへおよびソリッドステートデバイスからのデータ伝送は、電気機械的なディスクドライブよりも速い。シーク時間およびレイテンシも短縮される場合がある。ユーザは、はるかに速いブート時間および／またはオペレーティングシステムの機能も享受する。概して、ソリッドステートデバイスは、耐久性にも優れ、騒音も少なく、破損したり、スピンアップまたはスピンダウンしたりする可動部品を含まない。しかしながら、ソリッドステートデバイスは、性能が異常になる場合があるまでの消去／書き込みサイクルの有限回数が存在するため、設定された平均余命を有する。
【００１８】
このため、定義されたデータの組は、例えば、定義されたデータの組がそれまで記憶されていたメモリセル上の「ウェア」に起因して、定期的に再書き込みされる場合がある。本開示において説明される多様な実施形態において、定義されたデータの組は、そのようなデータのアクセスの前およびアクセス中に、ならびに／またはそのようなデータの記憶後に定義されるような、適切なシステム性能を可能にするための命令を含むことができる、「重要なデータ」の完全な集積パッケージを含むことができる。いくつかの実施形態において、データの「組」は、そのようなデータのアクセス中および／またはアクセス後であるが、定義されたデータの組として完全な統合パッケージを記憶する前に、集積されるようになるデータの複数のパッケージとして定義することができる。
【００１９】
さらに、技術の進歩は、定義されたデータのそれまでに記憶された（例えば、書き込まれた）組の置換を望ましくする場合がある。本開示において、これらの動作の各々は、定義されたデータの組を「更新する」と称することができる。特に重要なデータに対しては（例えば、その実質的にエラーのない読み出し時にシステムの操作性が依存するブートイメージおよび／またはオペレーティングシステムに対しては）、具体的には、新しくアクセスされたデータが、適切な操作性のためにホスト（例えば、ホストデバイスおよび／またはホストデバイスによって管理されるシステム）によって依存されるデータを置換する時、定義されたデータの組をソリッドステートメモリに記憶する前に、そのようなデータの精度を検証することが重要である可能性がある。
【００２０】
ソリッドステートデバイスの中の既存のソリッドステートメモリ（例えば、ＮＯＲおよび／またはＮＡＮＤフラッシュメモリ）は、例えば、一連の固定長の論理ブロックとしてホストデータ（例えば、ファイル）を記憶する場合がある。ホストは、ファイルを作成するために、フラッシュメモリデバイス内のどの論理ブロックが各ファイルに関連するのかを特定するだけでなく、それらの論理ブロックの順序付けも行うテーブルを保持する場合がある。ホストによるメモリデバイスへの読み出しおよび書き込みアクセスは、論理ブロック番号を使用して実施される場合がある。しかしながら、フラッシュデバイスは、読み出しおよび書き込みが基礎ファイルデータ自体にどのように関連するかを理解するための十分な情報を欠く場合がある。
【００２１】
これにもかかわらず、メモリシステムは、多種のホストデータに対して十分良好に機能する場合があるが、いくつかのデータタイプに対しては特定の不具合を有する場合がある。一例は、コード命令の実質的にエラーのない読み出しに依存する機能を有するシステムの操作性にとって重要なプロセッサブート命令および／またはオペレーティングシステム命令等のシステムデータである。この種類のデータの破壊は、そのようなシステムの操作不能をもたらす場合がある。本開示において、向上した信頼性および性能に加えて、さらに広範囲のサービスを提供する、代替のメモリメカニズムを説明する。本開示に説明されるように、代替のメモリメカニズムは、ソリッドステートデバイス内のオブジェクト指向メモリ、および／または例えば、オブジェクト指向メモリを模倣するようにエンコードされた１組の規則によって管理されるブロック指向メモリを利用することができる。
【００２２】
一連の論理ブロックとして（例えば、ブロック指向様式で）ファイルを処理するのではなく、ファイルの中の定義されたデータの組は、代わりに、ソリッドステートメモリデバイスによって単一オブジェクト（例えば、完全集積パッケージ）として処理（例えば、アクセスおよび／または記憶）することができる。定義されたデータの組を単一オブジェクトとして処理することによって、ソリッドステートメモリデバイス（例えば、いくつかの不揮発性ＮＯＲおよび／またはＮＡＮＤフラッシュメモリアレイを有する）が、書き込みおよび読み出しプロセス中に、信頼性および性能を高めることができる、或る動作を実施することを可能にすることができる。特定のシステム機能の操作性のために実質的にエラーのない読み出しが要求されるデータ上で実施することができる、そのような動作の例としては、本明細書に説明される数ある他の動作の中でも、書き込みプロセスが実施されるまたは完了と見なされる前にある種のデータ整合性チェックが実施される読み出し検証、１つのコピーによる読み出し失敗の場合に、システムがコピーの別の１つの読み出しに依存することができるように、そのようなデータの複数のコピーが格納されること、および不良な読み出しまたは再書き込みの場合に、最新の既知の良好なデータの読み出しをシステムに指示できるように、以前の既知の良好なバージョンのデータが保持されること、を挙げることができる。
【００２３】
本開示に説明されるように、ソリッドステートデバイス内のオブジェクト指向データ構造は、前述の動作を提供および／または提供する際に支援することができるが、従来のブロック指向メモリデバイスは、そのような動作が不可能な場合がある。本開示に説明されるように、ソリッドステートデバイスは、数ある他の構成要素の中でも、いくつかのソリッドステートメモリアレイ、およびソリッドステートデバイスコントローラを含むことができる。コントローラは、ソフトウェア、ファームウェア、および／またはハードウェア（例えば、特定用途向け回路回路（ＡＳＩＣ）等のロジック）として記憶される命令（例えば、必要に応じてプロセッサによって実行される）を使用して、ソリッドステートデバイスを管理（例えば、命令、制御、規制等）する制御構成要素とすることができる。本開示によって、当業者は、本明細書では「オブジェクト指向ソリッドステートデバイス」とも称される、ソリッドステートデバイス内のオブジェクト指向メモリのための実施形態を用いて、数ある中でも、これらの動作を実践することが可能になる。
【００２４】
ソリッドステートデバイス内のオブジェクト指向メモリとして書き込む時、ソリッドステートデバイスは、ブロック指向デバイス様式でデータストリームにアクセスすることができる。しかしながら、オブジェクト指向メモリデバイスは、データストリームが単一の定義されたエンティティ（すなわち、単一オブジェクトを定義する、定義されたデータの組）に関連するという理解をもってデータストリームにアクセスすることができるため、例えば、ホストに対する書き込み完了確認応答は、１つ以上のデータ保護動作が順調に完了するまで、遅延することができる。多様なデータ保護動作の実施は、オブジェクト指向メモリ技法の使用を通じて容易にすることができる。これらのデータ保護動作のうちのいくつかを以下に説明する。
【００２５】
ソリッドステートデバイスは、ホストによって読み出されるオブジェクトデータの信頼性を向上するように、オブジェクトに関連するプロパティを使用することができる。ソリッドステートデバイスは、ホストによって読み出される際に媒体エラーがオブジェクトを破壊することになる確率を削減するために、複数のコピーを使用することができる。以下に詳細を説明するように、そのような確率の削減を可能にするために、多様な動作を個別にまたは組み合わせて実施することができる。例えば、フェイルオーバー動作は、エラー検出が読み出しおよび／または書き込みの失敗を示す場合にオブジェクトの別のコピーを使用することができる。いくつかの実施形態において、コピーのうちの少なくとも１つでのエラー検出後に、オブジェクトの複数のコピー上でビット単位の比較を実施することができる。比較で発見された不一致が、結果的に複数のコピーの過半数になる可能性があり、またはソリッドステートデバイスが最新の既知の良好なオブジェクトに戻る可能性がある。別のレベルの検証は、オブジェクト全体の完全な巡回冗長検査（ＣＲＣ）とすることができる。
【００２６】
オブジェクト指向のソリッドステートデバイスは、オブジェクト全体のそれまでに記憶されたバージョンをホストに指示することができる。例えば、オブジェクト指向のソリッドステートデバイスの制御構成要素は、特定の期間（例えば、状況に応じて、予め設定された期間または決定された「オンザフライ」とすることができる）内にオブジェクトへの複数の読み出し要求を検出し、そのような複数の要求をデバイスが再ブートループで得られたインジケータとして認識することができる。そのような認識によって、ソリッドステートデバイスは、結果的にオブジェクトの最新の既知の良好なバージョンをホストに提供することができる。
【００２７】
オブジェクト指向のソリッドステートデバイスは、多様な実施形態において、ホストのブートを早めるためのサービスを提供することができる。これらのサービスの中でも、ソリッドステートデバイスは、数あるイベントの中でも、電源投入時のリセットおよび／または信号の遷移等の特定のイベントに基づいて読み出し動作を自動的に開始することができる。読み出されたデータは、次いで、例えば、ホストおよび／またはホストを含むシステムをブートするために使用することができる場合、ホストに自動的に送信することができ、あるいは、データがその時点でホストおよび／またはホストを含むシステムによって必要とされない場合、データは無視することができる。
【００２８】
ブロック指向のメモリデバイスは概して、ファイル内の論理ブロックの数、ならびに／あるいはブロックが読み出しおよび／または書き込みされる順序を認識するための能力を有さないため、ブロック指向のメモリデバイスは、本明細書に説明される範囲の動作および／またはサービスを実施することが不可能な場合がある。ブロック指向のメモリデバイスは概して、読み出し／書き込みコマンドにのみ応答する。
【００２９】
コンピューティングデバイスが所望のタスクを達成する前に、適当な命令の組を受信する場合がある。例えば、デバイスのプロセッサによって実行されることによって、これらの命令は、デバイスの動作を指示する。これらの命令は、メモリに記憶することができる。命令は、他の命令を呼び出すことができる。コンピューティングデバイスおよび／またはシステム（例えば、サーバ、ルータ、デスクトップコンピュータ、ラップトップ、モバイルデバイスまたはシステム、ならびにプロセッサロジックおよびメモリを有する他のデバイス）は、多様な機能または役割を実施することを可能にするように、オペレーティングシステム層およびアプリケーション層を含むことができる。オペレーティングシステム層は、基礎レベルの制御および操作性を提供する、「カーネル」（すなわち、マスタ制御プログラム）を含む場合がある。カーネルは、例えばホストに対して、数ある中でも、タスク管理、デバイス管理、およびデータ管理を提供する場合がある。カーネルは、コンピューティングデバイス上で稼動するアプリケーションプログラムの基準を設定する場合があり、アプリケーションプログラムによって使用されるリソースを制御する場合がある。アプリケーション層は、オペレーティングシステム層の上に位置し、ユーザによってアクセス可能なプログラム（すなわち、実行可能な命令）を含む場合がある。
【００３０】
ブートイメージおよび／またはオペレーティングシステムの命令は、前述の機能の開始を可能にし、したがって呼び出された重要なデータである可能性がある、コード化された情報（例えば、定義されたビットの組）を含有する場合がある。そのような重要なデータにオブジェクト指向様式でアクセスおよび／または記憶することは、例えば、ホストによって、制御されるシステムの操作性を維持するために、重要なデータの整合性を保存する上で支援するはずである。
【００３１】
本開示に説明されるように、重要なデータを保護することを実行する命令が提供される。新しい定義されたデータの組が、オペレーティングシステムのインストールまたは更新に関連するかどうかに関わらず、少なくとも１回記憶された際に順調にブートした後、新しい定義されたデータの組が「最新インストール」として自動的に保存されるような命令を実行する、１つ以上の実施形態が提供される。最新インストール構成は、「既知の良好な」インストールとなり、例えば、ユーザがブート不可能なカーネル構成を不注意に作成し、バックアップを作成していなかった時に、問題を回避することを助けることになる。１つ以上の定義された重要なデータの組のいくつかのコピーを作成するための命令を実行する、１つ以上の実施形態が提供される。コピーに対してエラー修正動作を適用するために実行することができる命令を実行する、１つ以上の実施形態が提供される。これらおよび他の実施形態は、本開示を一読後に当業者によって理解されるであろう。
【００３２】
図１は、本開示の１つ以上の実施形態に従う、システムのブロック図である。以下の発明を実施するための形態では、本明細書の一部を形成し、その中で、本開示の１つ以上の実施形態がどのように実践されてもよいかを例示として示す、添付の図面を参照する。これらの実施形態は、当業者が本開示の実施形態を実践することを可能にするように十分な詳細が説明され、他の実施形態が利用される場合があること、および本開示の範囲を逸脱することなく、プロセス変更、電気的変更、および／または構造的変更が行われる場合があることが理解される。本明細書に使用される場合、指示子「Ｎ」、「Ｍ」、「Ｒ」および「Ｓ」は、特に図面の参照番号に関して、そのように指定される特定の特徴のうちのいくつかを、本開示の１つ以上の実施形態と共に含むことができることを示す。
【００３３】
本明細書中の図面は、上位の桁（単数または複数）が、図面番号に対応し、残りの桁（複数）は、図面の中の要素または構成要素を識別するという、番号規則に従う。異なる図面間の同様な要素または構成要素は、同様な数字の使用によって識別される場合がある。例えば、１３０は、図１の要素「３０」を参照する場合があり、類似要素が、図２の２３０として参照される場合がある。理解されるように、本明細書の多様な実施形態に示される要素は、本開示のいくつかの追加の実施形態を提供するように、追加、交換、および／または削除することができる。加えて、理解されるように、図面の中に提供される要素の比率および相対尺度は、本発明の実施形態を図示することを意図しており、限定の意味で解釈されてはならない。
【００３４】
システムは、ホストと、ホストメモリと、ホストに対して外部のいくつかのメモリデバイスとを含む場合がある。ホストは、いくつかのプロセッサと、ホストコントローラと、ホストコントローラおよびいくつかの内部メモリデバイスに関連するホストコントローラメモリとを有する場合がある。ホストは、ホストコントローラを介してメモリデバイスと相互作用することによって、内部および／または外部のメモリデバイスを使用する場合がある。ホストコントローラは、メモリデバイスからのデータをホストに読み出す、またはホストからのデータをメモリデバイスに記憶する等、メモリデバイス上で動作を実施するために、メモリデバイスと通信する場合がある。データの読み出しおよび記憶を管理するコマンドは、ホストによって構築される場合がある。ホストコントローラは、コマンドのメモリデバイス能力を制御するハードウェアを有する場合がある。そのような場合、ホストコントローラがメモリデバイス能力を定義するハードウェアを有する時、ホストコントローラは、ホストコントローラ上に存在するハードウェアに関連する能力を有するコマンドを構築することを制限される場合がある。
【００３５】
１つ以上の実施形態において、図１に図示されるシステム１００は、例であって限定ではなく、数ある他の例の中でも、パーソナルコンピュータおよび／またはラップトップコンピュータ、モバイル電話、デジタルカメラ、デジタル記録および再生デバイス、ＰＤＡ、メモリカードリーダ、ならびにインターフェースハブ、およびＵＳＢのための、機能を有効にするように利用することができる。
【００３６】
システム１００は、ホスト１０５を含むことができ、ホスト１０５は、ホストコントローラ１１２を介していくつかの他の構成要素と通信する、少なくとも１つのホストプロセッサ１１４を含む。他のホスト構成要素は、ホストメモリコントローラ１２２を介してアクセスされるホストメモリ１１８を含む場合がある。追加の構成要素は、ホストネットワークインターフェース１１０、およびユーザインターフェース１２５を含む場合がある。
【００３７】
多様な実施形態において、ホストネットワークインターフェース１１０は、ネットワーク１０２との入力および出力デバイスの相互作用を可能にするように、外部ネットワーク１０２とアクセスすること（例えば、それと通信すること）を可能にすることができる。例であって制限ではなく、そのような外部のネットワークとしては、数ある中でも、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、インターネット、および／またはワイヤレスネットワークを挙げることができる。ホストネットワークインターフェース１１０は、ネットワーク１０２を介して、他のデバイスおよび／またはシステム内の対応するインターフェースデバイスに結合される場合がある。同様のものが当業者によって既知であり、かつ理解されるように、ネットワーク１０２はそれ自体、多数の相互接続されたシステムおよび通信リンクからなる場合がある。本明細書に使用される場合、通信リンクは、ハードワイヤリンク、光リンク、衛星または他のワイヤレス通信リンク、波動伝播リンク、または情報の通信のための任意の他のメカニズムである場合がある。
【００３８】
ユーザインターフェース１２５は、多様な実施形態において、キーボード、ポインティングデバイス（例えば、マウス、トラックボール、タッチパッド、またはグラフィックスタブレット）、スキャナ、ディスプレイに組み込まれたタッチスクリーン、音声認識システムのようなオーディオ入力デバイス、マイクロフォン、および／または他の種類の入力デバイス（図示せず）を含んでもよい、いくつかのデバイスによる入力を可能にすることができる。概して、「入力デバイス」と言う用語の使用は、図１に図示されるシステム１００へ情報を入力するための全ての可能な種類のデバイスおよび方式を含むことを意図する。
【００３９】
システム１００のホスト１０５は、多様な実施形態において、ホスト１０５に周辺メモリを提供するソリッドステートデバイス１５０に動作可能に結合することができる。ソリッドステートデバイスは、多様な実施形態において、前述のように、ネットワーク１０２への入力および／または出力を可能にするように、外部ネットワーク１０２との通信（例えば、アクセス）を可能にすることができる、ソリッドステートデバイスネットワークインターフェース１５６を含むことができる。
【００４０】
ソリッドステートデバイスネットワークインターフェース１５６は、多様な実施形態において、ソリッドステートデバイスコントローラ１６６に動作可能に結合することができる。ソリッドステートデバイスコントローラ１６６は、多様な実施形態において、ソリッドステートデバイスネットワークインターフェース１５６へのデータ／情報の入力および／またはソリッドステートデバイスネットワークインターフェース１５６からのデータ／情報の出力を、処理および／または管理することができる。ソリッドステートデバイスコントローラ１６６によってデータ／情報を管理することは、ソリッドステートデバイスコントローラ１６６に埋め込まれた、あるいは別法により関連付けられたプロセッサ１７２によって実行される場合がある。ソリッドステートデバイスコントローラ１６６は、多様な実施形態において、データ／情報を、ホスト１０５に提供し、かつ／またはホスト１０５から受信（例えば、交換）するために、ホスト１０５のホストコントローラ１１２に動作可能に結合することができる。例えば、データ／情報（例えば、コンピュータ可読バイナリコードでコード化されるビット）は、そのようなデータ／情報の実質的にエラーのない読み出し時において、ホスト１０５によって制御されるシステムの操作性がそれに依存する、データ／情報とすることができる。例であって制限ではなく、データ／情報は、ホストおよび／またはホストによって管理されるシステム内のオペレーティングシステムのブートに必要な定義されたデータの組（例えば、ブートイメージ）および／または機能の開始に必要な定義されたデータの組とすることができる。
【００４１】
ソリッドステートデバイス１５０のソリッドステートデバイスコントローラ１６６は、多様な実施形態において、いくつかのソリッドステートメモリアレイ１８６に動作可能に結合することができる。ソリッドステートメモリアレイ１８６は、図２に関してさらに詳細を説明する。簡潔には、１つ以上のソリッドステートメモリアレイ１８６は、多様な実施形態において、定義されたデータの組の実質的にエラーのない読み出し時において、ホスト１０５によって制御されるシステムの操作性がそれに依存する、例えば、単一オブジェクト１９２として定義されたデータの組を記憶するため（例えば、メモリアレイのメモリセル内のそのようなデータの「書き込み」後）に利用することができる。
【００４２】
本開示に説明するように、定義されたデータの組は、１つ以上の単一オブジェクト１９２としてソリッドステートメモリアレイ１８６に記憶されるように、集合的な全体として処理することができ、ホスト１０５によって管理（例えば、指示、制御、規制等）されるシステムのブートおよび／またはオペレーティングシステム機能を高い信頼性で可能にするように、ソリッドステートデバイスコントローラ１６６を通じてホスト１０５にそのように提供することができる。本開示で説明されるように、ソリッドステートデバイス１５０の構成要素１５６、１６６、１７２、１８６、１９２は、多様な実施形態において、そのような単一オブジェクトをオブジェクト指向様式で処理することによって、「重要なデータ」として称される場合がある、そのような定義されたデータの組（すなわち、単一オブジェクト）の信頼性の高い更新を可能にすることができる。
【００４３】
図２は、本開示の１つ以上の実施形態に従う、メモリアレイの一部の図である。図２には示されていないが、当業者は、ソリッドステートメモリアレイ２３０が、その動作に関連する多様な周辺回路と共に、特定の半導体ダイ上に位置することができることを理解するであろう。
【００４４】
図２に示されるように、ソリッドステートメモリアレイ２３０は、メモリセルのいくつかの物理ブロック２４０−０（ブロック０）、２４０−１（ブロック１）、・・・、２４０−Ｍ（ブロックＭ）を有する。インジケータ「Ｍ」は、アレイ２３０がいくつかの物理ブロックを含むことができることを示すために使用される。メモリセルは、単一レベルのセルおよび／または複数レベルのセルとすることができる。本開示の多様な実施形態において、特定の物理メモリブロックは、単一レベルのメモリセル（すなわち、シングルビットのメモリセル）のみを含むことができるか、または物理メモリブロックは、単一ビットセルとしてのみ書き込まれる、複数レベルのメモリセルを含むことができる。例として、アレイ２３０の中の物理ブロックの数は、１２８ブロック、５１２ブロック、または１，０２４ブロックであってもよいが、実施形態は、１２８の特定の倍数、またはアレイ２３０の中の物理ブロックの任意の特定の数に限定されない。
【００４５】
さらに、実施形態は、いくつかのアレイの全てで使用される特定の種類のメモリに限定されない。すなわち、異なるメモリアレイは、多様な実施形態において、当業者によって現在既知の任意の種類のメモリブロック（例えば、不揮発性、揮発性等の多様な種類のメモリ）を使用することができる。しかしながら、本開示の目的のために、いくつかのメモリアレイは、当業者によって理解されるように、ソリッドステートメモリアレイとして構成される、少なくとも１つのアレイを含有する。図２に示される実施形態において、メモリアレイ２３０は、例えば、不揮発性ＮＡＮＤフラッシュメモリアレイとすることができる。いくつかの実施形態において、例であって限定ではなく、メモリアレイ２３０は、不揮発性ＮＯＲフラッシュメモリアレイアーキテクチャを有することができる。
【００４６】
図２に示される例において、各物理ブロック２４０−０、２４０−１、・・・、２４０−Ｍは、ユニットとして一緒に消去することができるメモリセル（例えば、各物理ブロックの中のセルは、実質的に同時の様式で消去することができる）を含む。例えば、各物理ブロックの中のセルは、単一の動作で一緒に消去することができる。各物理ブロック、例えば、２４０−０、２４０−１、・・・、２４０−Ｍは、アクセスライン（例えば、ワードライン）に結合されるメモリセルのいくつかの物理列、例えば、２５０−０、２５０−１、・・・、２５０−Ｒを含有する。インジケータ「Ｒ」は、物理ブロック、例えば、２４０−０、２４０−１、・・・、２４０−Ｍがいくつかの列を含むことができることを示すために使用される。いくつかの実施形態において、各物理ブロックの中の列（例えば、ワードライン）の数は、３２とすることができるが、実施形態は、物理ブロックあたりの列２５０−０、２５０−１、・・・、２５０−Ｒの特定の数に限定されない。
【００４７】
当業者が理解するように、各列２５０−０、２５０−１、・・・、２５０−Ｒは、データの１つ以上のページ（例えば、ビット）を記憶することができる。ページとは、プログラミングおよび／または読み出しの単位（例えば、一緒にまたはメモリセルの機能グループとしてプログラムされ、かつ／または読み出されるいくつかのセル）を言う。図２に示される実施形態において、各列２５０−０、２５０−１、・・・、２５０−Ｒは、１ページのデータを記憶する。しかしながら、本開示の実施形態はそのように限定されない。例えば、本開示のいくつかの実施形態において、各列は、複数ページのデータを記憶することができる。例えば、列内の各セルは、ページの上半分のデータに対して１ビットを寄与することができ、ページの下半分のデータに対して１ビットを寄与することができる。１つ以上の実施形態において、メモリアレイは、メモリセルの複数の物理ブロックを含むことができ、各物理ブロックは、複数のページに体系化することができる。本開示に説明されるように、少なくとも１つのアレイおよび／またはそのようなアレイの中の複数のブロックは、１ページのデータだけを記憶できる、または１ページのデータだけを記憶するような様式で利用される、メモリセルを含む。
【００４８】
本開示の１つ以上の実施形態において、図２に示されるように、列２５０−０等の１列は、いくつかの物理セクタ２５２−０、２５２−１、・・・、２５２−Ｓに応じて（例えば、書き込み動作後に）データを記憶することができる。インジケータ「Ｓ」は、例えば、２５０−０、２５０−１、・・・、２５０−Ｒ等の１列がいくつかの物理セクタを含むことができることを示すために使用される。各物理セクタ２５２−０、２５２−１、・・・、２５２−Ｓは、１つの論理セクタに対応するデータを記憶することができ、エラー修正コード（ＥＣＣ）情報、および論理ブロックアドレス（ＬＢＡ）情報等のオーバーヘッド情報、ならびに定義されたデータの組（例えば、本開示に説明されるような重要なデータ）を含むことができる。当業者が理解するであろうように、論理ブロックアドレッシングは、情報の論理セクタを識別するために、ホストによってしばしば使用されるスキーマである。例として、１つの論理セクタのデータは、いくつかのバイトのデータ（例えば、２５６バイト、５１２バイト、または１，０２４バイト）とすることができる。実施形態はこれらの例に限定されない。
【００４９】
物理ブロック２４０−０、２４０−１、・・・、２４０−Ｍ、列２５０−０、２５０−１、・・・、２５０−Ｒ、セクタ２５２−０、２５２−１、・・・、２５２−Ｓおよびページに対する他の構成が可能であることに注意されたい。例えば、物理ブロック２４０−０、２４０−１、・・・、２４０−Ｍの列２５０−０、２５０−１、・・・、２５０−Ｒは各々、例えば、おおよそ５１２バイトのデータを含むことができる、単一の論理セクタに対応するデータを記憶することができる。
【００５０】
本開示に提供されるその記述に一致して、ソリッドステートデバイスは、多様な実施形態において、ソリッドステートデバイス内のいくつかのソリッドステートメモリアレイに結合される制御構成要素を含むことができ、各アレイは、メモリセルの複数の物理ブロックを有する。加えて、多様な実施形態において、各アレイは、単一オブジェクトとして定義されたデータの組にアクセスし、単一オブジェクトとしていくつかのアレイに定義されたデータの組を記憶するように構成される、ソリッドステートデバイスの制御構成要素によってフォーマットすることができる。
【００５１】
本明細書に使用される場合、ソリッドステートの制御構成要素が１つの動作を実施することができると記載される時、それは「〜するように構成される制御構成要素」または「プロセッサによって実行するように構成される制御構成要素」の短縮代替として理解されるであろう。
【００５２】
いくつかの実施形態において、ソリッドステートデバイスの制御構成要素は、単一オブジェクトのフォーマットを管理する関連プロセッサを含むことができる。フォーマットは、いくつかのソリッドステートメモリアレイ内のメモリセルの複数の物理ブロックのうちのどれに定義されたデータの組が記憶されるかを決定することによって、実施することができる。例えば、ソリッドステートデバイスの制御構成要素は、多様な実施形態において、メモリセルの物理ブロックのいくつかのメモリアレイの特定の（例えば、状況に応じて、事前に決定または「オンザフライ」で決定できる）パーティションに、定義されたデータの組を記憶することができる。特定のパーティションは、本開示に説明されるように、いくつかの因子に基づいて決定することができる。そのような因子として、例であって制限ではなく、数ある中でも、ウェア（例えば、特定のメモリアレイ／ブロック／セルが経験した書き込み／消去サイクルの回数）、特定のブロック／アレイのセルが単一レベルまたは複数レベルのメモリセルかどうか、および／またはブロック／アレイの中のメモリセルの種類を挙げることができる。
【００５３】
例であって制限ではなく、メモリセルの複数の物理ブロックは、不揮発性ＮＡＮＤまたは不揮発性ＮＯＲアーキテクチャに配設することができる。いくつかの実施形態において、ソリッドステートデバイスの制御構成要素は、メモリセルのいくつかの隣接する物理ブロックに先頭から終端まで定義されたデータの組を記憶することができる。例えば、メモリセルの隣接する物理ブロックは、メモリセルの物理ブロックのいくつかのメモリアレイの特定のパーティションによって定義することができる。いくつかの実施形態において、定義されたデータの組は、本明細書に説明されるように、ブートイメージとすることができる。いくつかの実施形態において、定義されたデータの組は、本明細書に説明されるように、いくつかのオペレーティングシステムをインストールおよび／または起動するための命令にすることができる。定義されたデータの組の実施形態は、そのように限定されない。
【００５４】
ソリッドステートデバイスの制御構成要素は、いくつかの実施形態において、原子動作の完了後に、定義されたデータの組にアクセスし、定義されたデータの組をいくつかのアレイに記憶することができる。当業者によって理解されるように、動作の組は、２つの条件を満たす時に原子的であると考えることができる。第１に、動作の組の全体が完了するまで、他のプロセスは、検出されずに行われている変更について知ることができない。第２に、動作のうちのいずれかが成功しない場合、動作の組の全体が中断され、システムの状態は、動作の一切が開始される前の状態に復元される。本開示において、定義されたデータの組に原子動作様式でアクセスすることは、例えば、そうでない場合に、定義されたデータの組の部分的更新および／または部分的インストールになる場合がある、アクセスの途中終了および／または中断を防止することができる。原子動作のためでない場合、重要なデータの部分的書き込みに起因して、いくつかの良くない結果が発生する可能性がある。加えて、ソリッドステートデバイスの制御構成要素は、いくつかの実施形態において、原子動作の完了まで、アレイ内のデータの最新の既知の良好なコピーにポインタを割り当てることができ、ポインタは、データの読み出しが最新の既知の良好なコピー上で実施されるように指示する。最新の既知の良好なオブジェクトへのポインタを提供し、保持することができる。すなわち、書き込みプロセスが順調に完了されるまで、オブジェクトのあらゆる読み出し試行を、最新の既知の良好なオブジェクトへのポインタによって、指示することができる。
【００５５】
加えて、ソリッドステートデバイスは、多様な実施形態において、ソリッドステートデバイス内のいくつかのソリッドステートメモリアレイに結合される制御構成要素を含むことができ、各アレイは、メモリセルの複数の物理ブロックを有する。各アレイは、多様な実施形態において、定義されたデータの組の１つ以上の反復がアクセスされる場合、単一オブジェクトとして定義されたデータの組にアクセスするように構成される、ソリッドステートデバイスの制御構成要素によってフォーマットすることができ、１つ以上の反復の複数のコピーを単一オブジェクトとしていくつかのアレイの特定の位置に記憶することができる。定義されたデータの組の１つ以上の反復にアクセスすることは、本開示に説明されるように、例であって限定ではなく、そのような命令のネットワークプロバイダからおよび／またはホストから、プログラム命令の１つ以上のコピーをダウンロードすることを含むことができる。
【００５６】
ソリッドステートデバイスの制御構成要素は、いくつかの実施形態において、いくつかのアレイのうちの物理的に異なるアレイに複数のコピーの各々を記憶することができる。物理的に異なるアレイに記憶することによって、一定のアレイに限定された障害が、物理的に異なるアレイに記憶された重要なデータを破壊することが防止される場合がある。しかしながら、いくつかの実施形態において、数ある他の考慮事項の中でも、スペースおよび／またはコストの削減のために可能性として、アレイの数は１つとすることができる。前述のように、ソリッドステートデバイスの制御構成要素は、いくつかの実施形態において、メモリセルのいくつかの隣接する物理ブロックで先頭から終端まで単一オブジェクトを読み出すことができる。
【００５７】
書き込みオブジェクトの複数のコピーを記憶することができる（例えば、同時または順次）。フラッシュメモリデバイスの場合、コピーは、全体的な信頼性に寄与するように、物理的に独立したメモリアレイに記憶することができる。多様な実施形態において、オブジェクトは、多様なアレイのメモリセル内部および／またはそれらの間で最も信頼性が高いと判定されたメモリ素子に記憶することができる。例えば、データは、２つ以上ではなく、メモリセルあたり１ビットを現在記憶しているおよび／または記憶することが可能である、素子に記憶することができる。
【００５８】
ソリッドステートデバイスの制御構成要素は、いくつかの実施形態において、他の物理ブロックよりも信頼性が高いと判定されたアレイの物理ブロックに複数のコピーのうちの少なくとも１つを記憶することができる。例えば、より信頼性が高いと判定されたアレイの物理ブロックは、単一レベルのメモリセルを有する物理ブロックとすることができる。そのような単一レベルのメモリセルは、１ビットのデータだけを保持可能にできるか、または、２ビット以上のデータを保持することから制約された複数レベルのメモリセルとすることができる。いずれの場合も、１ビットだけのデータを有するセルは、セルの読み出しに影響を与える電荷レベルに顕著な遷移の確率が少ないことから、信頼性がより高い可能性がある。いくつかの実施形態において、信頼性がより高いと判定されたアレイの物理ブロックは、他の物理ブロックのメモリセルよりも少ない回数再使用されているメモリセルを有する物理ブロック（例えば、より少ない書き込み／消去サイクルを経験しているメモリブロック／セル）とすることができる。アレイの物理ブロックのより高い信頼性を判定する様式は、ここで提供される例に限定されない。
【００５９】
アクセスされたデータの１つ以上の反復がアクセスされた後、いくつかの実施形態において、ソリッドステートデバイスの制御構成要素は、単一オブジェクトをアレイに記憶する前に、１つ以上のデータ反復の複数のコピーを独立的に検証することができる。独立的に検証することは、本明細書に説明される動作として実施することができる。このように、ソリッドステートデバイスの制御構成要素は、いくつかの実施形態において、単一オブジェクトをアレイに記憶する前に発見されたいくつかのエラーを読み出し、独立的に修正することができる。データ反復の検証を完了後、ソリッドステートデバイスの制御構成要素は、以前の最新の既知の良好なコピーを置換するように、新しい最新の既知の良好なコピーとして、１つ以上のデータ反復の特定のコピーにポインタを割り当てることができる。ソリッドステートデバイスの制御要素はまた、ホストによるいずれの読み出しも、新しい最新の既知の良好なコピーへのポインタによって指示されるように、ホストに書き込み完了肯定応答を送信することもできる。
【００６０】
オブジェクト全体が受信された後、コピーの各々は独立的に検証することができる。検証は、少なくとも、オブジェクト全体を読み出し、エラーを修正することを含むことができる。さらに、オブジェクトをソリッドステートメモリアレイ内に記憶することが可能になる前に、特定の数よりも少ない読み出しエラーが、それによって検出された閾値を実装することができる。
【００６１】
加えて、終端から終端までのデータ整合性チェック（例えば、巡回冗長検査（ＣＲＣ）を計算することができる。いくつかの実施形態においては、ＣＲＣは、ソリッドステートメモリデバイスへの伝送の前に、ホストによって組み込むことができる。簡潔には、ＣＲＣ動作は、転送動作後にデータ整合性を検証するために、数学的演算を使用する。ＣＲＣは、入力として、任意の長さのデータストリームを使用し、出力として、或るスペース、一般的には３２ビット整数の値を生成する１種の関数である。ＣＲＣという用語は、関数または関数の出力を表す。ＣＲＣは、伝送または記憶の間のデータの偶発的な改ざんを検出するためのチェックサムとして使用することができる。ＣＲＣは、バイナリハードウェアに実装するのが簡単で、数学的に分析するのが容易で、例えば、伝送チャンネルのノイズによって生じる、一般的なエラーを検出することに特に優れているため、使用されることが多い。
【００６２】
本開示に提供されるその記述と一致して、システムは、多様な実施形態において、システムを管理するために、ホストに動作可能に結合されるように構成される、ホスト制御構成要素を含むことができる。そのようなホストは、例であって制限ではなく、本明細書に説明されるように、携帯用または別途、コンピューティングデバイスおよびシステムの意図される操作性を維持することを含むことができる。ホスト制御構成要素は、複数のソリッドステート物理メモリブロックのメモリセルを有するソリッドステートデバイスの制御構成要素に動作可能に結合されるように構成することができる。加えて、ソリッドステートデバイスの制御構成要素は、後続の書き込みおよび読み出し動作中、単一オブジェクトとして定義されたデータの組にアクセスし、単一オブジェクトとして定義されたデータの組を管理するように構成することができる。
【００６３】
ソリッドステートデバイスの制御構成要素は、いくつかの実施形態において、単一オブジェクトの複数のコピーを記憶することができ、複数のコピーの各々は、物理的に別個のメモリブロックに書き込むための規則の組によって判定されるように、複数のメモリブロックに別個に記憶される。例えば、ソリッドステートデバイスの制御構成要素は、１組の規則に従って、単一オブジェクトの複数のコピーをメモリセルの複数の物理メモリブロックの特定のパーティションに記憶することができる。このように、ソリッドステートデバイスの制御構成要素は、いくつかの実施形態において、端から端までのデータ整合性のために、複数の物理メモリブロックのうちのいくつかで隣接した特定のパーティションに単一オブジェクトの複数のコピーの各々を記憶することができる。
【００６４】
加えて、または代替として、ソリッドステートデバイスの制御構成要素は、いくつかの実施形態において、論理ブロックアドレッシングによって判定されるように、複数の物理メモリブロックに書き込むことができる。このように、ソリッドステートデバイスの制御構成要素は、いくつかの実施形態において、特定の論理ブロックアドレスに記憶することができる。
【００６５】
前述のように、ブロック指向のメモリデバイスは概して、ファイルの中の論理ブロックの数、ならびに／またはブロックが読み出しおよび／もしくは書き込みされる順序を認識するための能力を有さないため、ブロック指向のメモリデバイスは、オブジェクトの指向メモリシステムに関して本明細書に説明される動作および／またはサービスの範囲を実施することが可能ではない場合がある。ブロック指向のメモリデバイスは概して、読み出し／書き込みコマンドにのみ応答する。それにもかかわらず、本開示に説明されるように、ホストおよびソリッドステートデバイスの両方が、特定の論理ブロックアドレスに対するブロックの読み出しおよび書き込みに関連する規則の組に従う時、オブジェクト指向のソリッドステートデバイスに関して本明細書に説明されるいくつかの動作および／またはサービスをエミュレートすることができる。そのようなエミュレーションは、ブロック指向のソリッドステートデバイスが所定の様式でデータを処理する時に実現することができる。
【００６６】
例えば、ブロック指向のデバイスは、データのために予備として保留される一連のブロック番号を定義することができる。データは、特定のシリーズに特定の順序で記憶することができ、ホストは、ソリッドステートデバイスに対するインジケータをデータの最新のブロックに提供する。ソリッドステートデバイスは、データの複数のコピーを管理することができるとともに、必要な時にデータの最新の既知の良好なバージョンへの読み出しアクセスを提供することができる。そのようにデータをブロック指向の配設に記憶することによって、定義されたデータの組の読み出しを、オブジェクト指向のソリッドステートデバイスと同様に先頭から終端まで連続的に実施することが可能になる。
【００６７】
したがって、本開示に説明されるようなシステムは、多様な実施形態において、本明細書に説明されるように、システムを管理するために、ホストに動作可能に結合されるように構成される、ホスト制御構成要素を含むことができる。ホスト制御構成要素は、多様な実施形態において、複数のソリッドステート物理メモリブロックのメモリセルを有するソリッドステートデバイスの制御構成要素に動作可能に結合されるように構成することができる。ソリッドステートデバイスの制御構成要素は、定義されたデータの組を特定の論理ブロックアドレスに記憶するように規則の組を、ホスト制御構成要素およびソリッドステートデバイス制御構成要素が従う時、後続の書き込みおよび読み出し動作中、ブロック指向様式で定義されたデータの組にアクセスし、かつブロック指向様式で定義されたデータの組を処理するように構成することができる。
【００６８】
ホスト制御構成要素およびソリッドステートデバイス制御構成要素が従う規則の組は、多様な実施形態において、複数のソリッドステートデバイスの物理メモリブロックの別個のパーティションされていない物理ブロックに定義された（例えば、ブロック指向のメモリと一致する）データの組の書き込みを可能にする。しかしながら、ホスト制御構成要素およびソリッドステートデバイス制御構成要素が従う規則の組は、多様な実施形態において、定義されたデータの組を記憶するように、特定の一連の物理メモリブロック番号を含むことができる。そのような規則は、定義されたデータの組の書き込みが、特定の順序で実施されることを指示することができる。そのような規則はまた、ホスト制御構成要素が、定義されたデータの組の最新のブロックを特定するように、ソリッドステートデバイス制御構成要素にインジケータを提供することを指示することもできる。そのような規則のうちの１つ以上に従うことによって、ソリッドステートデバイス制御構成要素は、定義されたデータの組がオブジェクト指向様式で記憶されているかのように、定義されたデータの組の先頭から終端まで連続して、定義されたデータの組を読み出すことができる。
【００６９】
いくつかの実施形態において、ソリッドステートデバイス制御構成要素は、複数のコピーの各々が、規則の組によって判定されるように複数のメモリブロックに別個に記憶される場合、定義されたデータの組の複数のコピーを記憶することができる。加えて、ソリッドステートデバイス制御構成要素は、いくつかの実施形態において、ホスト制御構成要素の読み出しアクセスを、定義されたデータの組の最新の既知の良好なコピーに提供するように、定義されたデータの組の複数のコピーを管理することができる。
【００７０】
図３は、本開示の１つ以上の方法の実施形態に従うソリッドステートデバイス内のオブジェクト指向メモリを示すブロック図である。明示的に記載のない限り、本明細書に説明される実施形態は、特定の順序または順次に制約されない。加えて、説明される実施形態のうちのいくつか、またはその要素は、同じまたは少なくとも実施的に同じ時点に発生または動作することができる。
【００７１】
図３に図示される実施形態は、原子動作様式で単一オブジェクトとして定義されたデータの組にアクセスすることを含み、アクセスすることは、ブロック３１０に示されるように、ホスト以外のソースからである。多様な実施形態において、ソースは、説明のためであって限定ではなく、図１に関して説明されるネットワーク１０２とすることができる。いくつかの実施形態において、ホスト以外のソースからデータにアクセスすることは、モバイルシステム内のデータにアクセスすることを含むことができ、モバイルシステムは、数ある他の可能なモバイルシステムの中でも、デジタルカメラ、デジタル音楽デバイス、ネットワークデバイス、モバイル電話、携帯情報端末デバイス、およびラップトップコンピュータを含む群より選択することができる。
【００７２】
原子動作は、本明細書の他の部分に説明されるように実施されることを意図する。いくつかの実施形態において、定義されたデータの組に原子動作様式でアクセスすることは、定義されたデータの組への最初のアクセスが完了するまで、そのようなデータの最新の既知の良好なバージョンへのポインタを使用することを含むことができる。
【００７３】
ブロック３２０に示されるように、実施形態は、いくつかのソリッドステートメモリブロックを含む、ソリッドステートデバイスの制御構成要素によってフォーマットされるように、いくつかのソリッドステートメモリブロックに単一オブジェクトとして、システム内の定義されたデータの組を記憶することを含む。いくつかの実施形態において、記憶することは、原子動作が完了後に実施することができる。定義されたデータの組をいくつかのメモリブロックに記憶することは、いくつかの実施形態において、複数のコピーの各々上で原子動作を独立的に実施することが完了した後に、定義されたデータの組各々の複数のコピーを別個のメモリブロックに記憶することを含むことができる。
【００７４】
ソリッドステートデバイスは、いくつかの実施形態において、特定の期間に定義されたデータの組の新しく記憶されたバージョンに対する複数の読み出し要求を検出すると、定義されたデータの組の以前に記憶されたバージョンをホストに提供することができる。例えば、多様な実施形態において、ソリッドステートデバイスまたはホストは、システムのブート動作に必要な新しく記憶されたブートイメージに対する複数の読み出し要求を検出することができる。このため、いくつかの実施形態において、ソリッドステートデバイスは、ブートイメージの最新の既知の良好なバージョンをホストに提供することができる。
【００７５】
本開示の教示に従い、オブジェクト指向メモリは、多様な実施形態において、定義されたデータの組に単一オブジェクトとしてアクセスすることであって、アクセスは、ホスト以外のソースからである、アクセスすることと、アクセスされた定義されたデータの組上で読み出し検証動作を実施することとを含むことができる。特定の読み出し検証動作の実施形態は、以下により詳細に説明する。実施形態は、いくつかのソリッドステートメモリブロックを含むソリッドステートデバイスに動作可能に結合された制御構成要素によってフォーマットされるように、いくつかのメモリブロック内に、定義されたデータの組を単一オブジェクトとして記憶することを含むことができる。
【００７６】
いくつかの実施形態において、定義されたデータの組を単一オブジェクトとして記憶することは、読み出し検証動作が完了後に実施される。アクセスされたデータ上で読み出し検証動作を実施することは、いくつかの実施形態において、アクセスされた定義された新しいデータの組上での読み出し検証動作が完了し、定義された新しいデータの組の記憶が完了するまで、以前に記憶された定義されたデータの組の最新の既知の良好なバージョンへポインタを使用することを含むことができる。
【００７７】
ソリッドステートデバイスが、オブジェクトは高い信頼性で書き込まれ、検証されたと判定した時、ソリッドステートデバイスは、書き込み完了肯定応答をホストに送信することができる。肯定応答がホストに送信された後の読み出しは全て、以前に既知の良好なオブジェクト上ではなく、新しいオブジェクト上で行われることになる。代替として、ホストは、遷移が発生することを可能にする前に、ソリッドステートデバイスに対するコマンド、レジスタ設定、または同様な通知を通じて遷移を制御することを要求することができる。
【００７８】
読み出し検証動作は、いくつかの実施形態において、コピーの各々上で書き込み動作が実施される前に定義された新しいデータの組の複数のコピー上で独立的に実施することができ、その後、読み出し検証動作がそこで特定の数よりも少ないエラーを検出した、定義された新しいデータの組のコピーを記憶する。いくつかの実施形態は、読み出し検証動作が順調に完了すると、定義された新しいデータの組の複数のコピーを記憶することを含むことができる。いくつかの実施形態は、少なくとも特定の数のエラーが定義された新しいデータの組の複数のコピーのうちの別の１つで検出される時、データの読み出し検証されたコピーに自動フェイルオーバーを提供することを含むことができる。特に、いくつかの実施形態は、特定の数の新しいエラーが、別の、それまでに読み出し検証され、かつ記憶された定義された新しいデータの組のコピーで検出される時、定義された新しいデータの組の読み出し検証されたコピーに自動フェイルオーバーを提供することを含むことができる。読み出し検証動作を実施する実施形態は、巡回冗長検査（ＣＲＣ）動作を実施することを含むことができる。読み出し検証動作の実施形態はそのように限定されない。
【００７９】
エラー検出動作は、送信器から受信器への伝送の間に、ノイズまたは他の障害によって生じたエラーの存在を検出するための能力を有することができる。エラー修正は、元のエラーのないデータを再構築するための追加の能力を有することができる。簡潔には、そのような例は、限定ではなく、その中で送信器がデータおよびエラー検出コードも送信し、受信器がエラーを確認するために使用する、自動再送要求（ＡＲＱ）を含むことができ、誤ったデータの再送信を要求することができる。いくつかの場合、要求は暗示的であり、その中で、受信器は、正しく受信されたデータの肯定応答（ＡＣＫ）を送信し、送信器は、正当な期間内に肯定応答されなかったものを全て再送信する。
【００８０】
別の例は、送信器がその中で、エラー修正コード（ＥＣＣ）を用いてデータをコード化し、コード化されたメッセージを送信する、順方向誤り訂正（ＦＥＣ）である。受信器は送信器にいかなるメッセージも返信しないかもしれない。受信器は、受信内容を「最も可能性が高い」データに復号することができる。コードは、受信器がデータを誤って解釈させるようにだますためには大量のノイズを受けることになるように設計される。重大でないエラーは再送信することなく修正され、重大なエラーは検出され、再送信が要求されるように２つを組み合わせることが可能である。
【００８１】
本開示のいくつかの実施形態は、特定の数のエラーが、定義されたデータの組のそれまでに読み出し検証され、記憶されたいくつかのコピーのうちの少なくとも１つで検証される時、エラー修正動作を実施することを含むことができる。いくつかの実施形態は、特定の数のエラーが、定義されたデータの組のまだ読み出し検証されていない、または、記憶されたいくつかのコピーのうちの少なくとも１つで検出される時、エラー修正動作を実施する。エラー修正動作を実施することは、いくつかの実施形態において、定義されたデータの組の複数のそれまでに読み出し検証され、記憶されたコピーのビット単位の比較を実施することを含むことができ、ソリッドステートデバイスは、一致するコピーの過半数より選択することによって、複数のコピーの中から、１つ以上のコピーを検証する。
【００８２】
他の保護は、定義されたデータの組の演算署名の計算（例えば、当業者によって理解されるように、ハッシュ関数）を含むことができる。ソリッドステートデバイスは、例えば、ハッシュ関数を計算し、次いで、完了肯定応答の一部として、計算結果をホストに戻すように提供することができる。ホストは、次いで、署名が正しいかどうかの判定を行うことができる。オブジェクトを読み出すことはまた、ホストが認証プログラムの一部として使用することができるデータ署名を生成（例えば、ハッシュ関数）することができる。署名は、ホストにオブジェクトデータを送信する前、またはオブジェクトデータが送信される際のいずれかに計算することができ、したがって、署名は、ホストがソリッドステートデバイスから読み出すために使用可能になる。
【００８３】
簡潔には、ハッシュ関数は、大型で、可変サイズ量である可能性があるデータを小型のデータ、通常はアレイへのインデックスとして機能する場合がある単一の整数に変換する、よく定義された手順または数学関数である。ハッシュ関数はほとんどの場合、テーブル参照またはデータ比較タスクを高速化するために使用される。ハッシュ関数は、チェックサム、チェックディジット、フィンガープリント、無作為化関数、誤り訂正符号、および暗号学的ハッシュ関数に関係する。これらの概念はある程度重複するが、各々はその独自の使用および要件を有し、全ては、本開示の範囲内である。
【００８４】
デバイスに演算署名を計算させることは（例えば、電源投入時に自動的に）、コード化されたデータの実行前に、データを認証するために使用することができる。そのような認証は、例えば、ハッカーが、ネットワークおよび／または他の動作へのアクセスを得るためにコードを改ざんすることを防止することによって、システム全体のセキュリティを強化することができる。
【００８５】
本開示のいくつかの実施形態は、ソースからのデータにアクセスする前に、定義されたデータの組の演算署名を提供することを含むことができ、演算署名は、ソリッドステートデバイスによって、エラーの検出のためにソースに戻すように提供される。加えて、または代替として、いくつかの実施形態は、ホストからのデータにアクセスする前に、定義されたデータの組の演算署名を提供することを含むことができ、演算署名は、ソリッドステートデバイスによって、エラーの検出のためにホストに戻すように提供される。
【００８６】
ソリッドステートデバイスは、例えば、ハッシュ関数を計算し、次いで、完了肯定応答の一部として、算出結果をホストに戻すように示すことができる。ホストは、次いで、署名が正しいかどうかの判定を行うことができる。オブジェクトを読み出すことはまた、ホストが認証プログラムの一部として使用することができるデータ署名を生成（例えば、ハッシュ関数）することができる。署名は、ホストにオブジェクトデータを送信する前、またはオブジェクトデータが送信される際のいずれかに計算することができ、したがって、署名は、ホストがソリッドステートデバイスから読み出すために使用可能になる。
＜結論＞
【００８７】
本開示は、ソリッドステートデバイス内のオブジェクト指向メモリの方法、デバイス、およびシステムを含む。ソリッドステートデバイス内のオブジェクト指向メモリのための方法の一実施形態は、原子動作様式で単一オブジェクトとして定義されたデータの組にアクセスすることを含み、アクセスは、ホスト以外のソースからである。実施形態はまた、いくつかのソリッドステートメモリブロックを含むソリッドステートデバイスの制御構成要素によってフォーマットされるように、いくつかのソリッドステートメモリブロック内に単一オブジェクトとして定義されたデータの組を記憶することを含む。
【００８８】
１つの要素が別の要素「の上にある」、「に接続される」、または「と結合される」と言及される時、それは、もう一方の要素の直接その上にあることができる、それに接続できる、またはそれと結合できること、あるいは介在要素が存在する場合があることを理解されたい。対照的に、１つの要素が別の要素「の直接その上に」「に直接接続される」または「と直接結合される」されると言及される場合、介在要素または介在層は存在しない。第１の要素が別の要素「に接続」または「と結合」されると言及される時、第１の要素は２つの要素のうちのもう一方に物理的に付設されることを意図することを理解されたい。対照的に、要素が「動作可能に結合」されると言及される時、要素は相互に連通状態にある。本明細書に使用される場合、ソリッドステートの制御構成要素がアクションを実施することができると記載される時、「するように構成される制御構成要素」または「プロセッサによって実行するように構成される制御構成要素」の短縮された代替として理解されたい。本明細書に使用される場合、用語「または」はそれ自体、その他明示的にこれに反すると記載のない限り、排他的様式で使用されるのではなく、複数の連結された要素を含む。さらに、本明細書に使用される場合、用語「および／または」は、関連列挙項目のうちの１つ以上の任意または全ての組み合わせを含む。
【００８９】
第１、第２等の用語は、本明細書において、多様な要素を記述するために使用される場合があるが、これらの要素はこれらの用語によって限定されてはならないことを理解されたい。これらの用語は、１つの要素を別の要素から区別するために使用されるに過ぎない。したがって、本開示の教示から逸脱することなく、第１の要素は第２の要素と称すことができる。
【００９０】
本開示の詳細説明においては、本明細書の一部を形成し、その中で、本開示の１つ以上の実施形態がどのように実践されてもよいかを例示として示す、添付の図面を参照する。これらの実施形態は、当業者が本開示の実施形態を実践することを可能にするように十分な詳細が説明され、他の実施形態が利用されてもよいこと、および本開示の範囲から逸脱することなく、プロセス変更、電気的変更、または構造的変更が行われてもよいことが理解される。
【００９１】
理解されるように、本明細書の多様な実施形態に示される要素は、本開示のいくつかの追加の実施形態を提供するように、追加、交換、または削除することができる。加えて、理解されるように、図面の中に提供される要素の比率および相対尺度は、本開示の実施形態を図示することを目的とし、限定の意味で解釈されてはならない。
【００９２】
本明細書に使用される用語は、特定の実施形態を説明することのみを目的とし、本開示を限定することを意図しない。本明細書に使用される場合、単数形の「１つの（ａ）、（ａｎ）」および「その（ｔｈｅ）」は、文脈がそうでないことを明確に示さない限り、複数形も含むことを意図する。さらに、本明細書において使用される場合、「含む、備える（ｃｏｍｐｒｉｓｅｓ、ｃｏｍｐｒｉｓｉｎｇ）」という用語は、記載された特徴、個数、ステップ、動作、要素、または構成要素の存在を指定するが、１つ以上の他の特徴、個数、ステップ、動作、要素、構成要素、またはこれらのグループの存在または追加を除外しないことを理解されたい。
【００９３】
別途定義されない限り、本明細書に使用される全ての用語（技術用語および科学用語を含む）は、本開示が属する技術分野の当業者によって一般的に理解されるものと同じ意味を有する。さらに、一般的に使用される辞書で定義されるような用語は、関連技術および本開示の文脈においてそれらの意味と一貫する意味を有するとして解釈されるべきであり、本明細書においてそのように明示的に定義されない限り、理想化されたまたは過度に形式的な意味に解釈されてはならないことが理解される。
【００９４】
本明細書には具体的な実施形態が図示および説明されているが、当業者は、同じ結果を達成するように考案された配設を、示された具体的な実施形態に代えることができることを理解するであろう。本開示は、本開示の多様な実施形態の全ての適応または変形を包含することを意図する。
【００９５】
上記の説明は、制限の様式ではなく、例示の様式において行われたものであることをさらに理解されたい。上記の実施形態の組み合わせ、および本明細書に具体的に説明されない他の実施形態は、上記の説明を検討することによって、当業者には明らかとなるであろう。
【００９６】
本開示の多様な実施形態の適用性は、例えば、他のコンピューティングシステム、モバイルデバイス、および／またはシステム等に関連して、上記の方法、デバイス、およびシステムが使用される他の用途を含む。したがって、本開示の多様な実施形態の適用性は、添付の請求項に加えて、このような特許請求の範囲が権利を与えられる均等物の完全な範囲を参照して決定されなければならない。
【００９７】
前述の発明を実施するための形態では、開示を簡素化するために、多様な特徴が単一の実施形態にまとめられている。この開示方法は、本開示の開示される実施形態が、各請求項に明記されるよりも多くの特徴を使用することが必要であるという意図を反映するものとして解釈されるべきではない。そうではなく、以下の特許請求の範囲が反映するように、発明の主題は、単一の開示される実施形態の全ての特徴に満たない中に存する。したがって、以下の特許請求の範囲は、本明細書において発明を実施するための形態に組み入れられ、各請求項は個別の実施形態として独立する。
【図１】
0005517089.tif 000002
【図２】
0005517089.tif 000003
【図３】
0005517089.tif 000004