IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ グーグル インコーポレイテッドの特許一覧

<>
  • 特表-信頼できるフラッシュストレージ 図1
  • 特表-信頼できるフラッシュストレージ 図2
  • 特表-信頼できるフラッシュストレージ 図3
  • 特表-信頼できるフラッシュストレージ 図4
  • 特表-信頼できるフラッシュストレージ 図5
  • 特表-信頼できるフラッシュストレージ 図6
  • 特表-信頼できるフラッシュストレージ 図7
  • 特表-信頼できるフラッシュストレージ 図8
  • 特表-信頼できるフラッシュストレージ 図9
  • 特表-信頼できるフラッシュストレージ 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-18
(54)【発明の名称】信頼できるフラッシュストレージ
(51)【国際特許分類】
   G06F 12/02 20060101AFI20241010BHJP
   G06F 21/60 20130101ALI20241010BHJP
   G06F 12/00 20060101ALI20241010BHJP
【FI】
G06F12/02 510A
G06F21/60
G06F12/00 597U
G06F12/02 530E
G06F12/00 550Z
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024521151
(86)(22)【出願日】2022-10-11
(85)【翻訳文提出日】2024-05-28
(86)【国際出願番号】 US2022077916
(87)【国際公開番号】W WO2023064776
(87)【国際公開日】2023-04-20
(31)【優先権主張番号】63/256,315
(32)【優先日】2021-10-15
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ウルソイ,メフメト・アルファン
(72)【発明者】
【氏名】フランツ,クリストファー・ジェイ
(72)【発明者】
【氏名】オソリオ・ロザーノ,ミゲル・アンヘル
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AA09
5B160AA14
5B160NA02
(57)【要約】
この文書は、フラッシュストレージにおける信頼できる読み出し、書き込み、および消去操作を可能にし得る、信頼できるフラッシュストレージのための技術および装置について記載する。態様において、データは、2つ以上のページの使用を通じてフラッシュメモリデバイスに記憶され得る。主ページは、記憶操作を実行するための適切なページとして、2つ以上のページから決定され得る。空のエントリが主ページ内で決定され、データが空のエントリ内に記憶され得る。データがエントリに書き込まれた後、無効なデータまたは非推奨のデータのアクセスまたは使用の試みを防ぐためなど、以前のエントリが無効にされてもよい。その際、以前のエントリは、新しいエントリがフラッシュデバイス内に記憶された時点でのみ変更され得る。したがって、記載された技術および装置は、信頼できるフラッシュストレージを可能にし得る。
【特許請求の範囲】
【請求項1】
フラッシュメモリ内の2つ以上のページのうちの1つのページ内にデータを記憶することを含み、前記記憶することは、
前記フラッシュメモリの前記2つ以上のページのうちの主ページを決定することと、
前記主ページの最初の空のエントリを決定することと、
前記主ページの前記最初の空のエントリ内にデータ構造を記憶することと、
を含む方法。
【請求項2】
フラッシュメモリ内の前記2つ以上のページのうちの前記1つのページ内に前記データを記憶することは、
前記フラッシュメモリの前記2つ以上のページのうちの主ページを決定した後、前記主ページが満杯かどうかを決定することと、
前記主ページが満杯であるとの決定に応じて、前記2つ以上のページのうちの他のページを消去することと、
前記データ構造を前記他のページにおける最初の空のエントリ内に記憶することと、
前記他のページを前記主ページとして選択することと、
を含む、請求項1に記載の方法。
【請求項3】
前記データ構造を前記主ページ内の前記最初の空のエントリ内に記憶することは、
前記データ構造の有効性を示すために、前記データ構造のダイジェストまたは識別子を含む前記データ構造の1つまたは複数のフィールドを設定することと、
以前のデータエントリを、前記以前のエントリ内に記憶されるデータ構造のフィールドを変更することによって無効状態に設定することと、
を含む、先行する請求項のいずれか1項に記載の方法。
【請求項4】
前記以前のエントリを前記無効状態に設定することは、
前記以前のエントリ内に記憶される前記データ構造の識別子フィールドを、ゼロ値または前記無効状態を示すように構成される他のゼロ以外の所定値に変更すること、
を含む、請求項3に記載の方法。
【請求項5】
前記データ構造がカウンタフィールドを含み、
前記データ構造を記憶することは、
前記データ構造の前記カウンタフィールドを、以前のエントリ内に記憶される他のデータ構造のカウンタフィールドの値からの増分値として設定すること、または
前記以前のエントリが存在しないとの決定に応じて、前記データ構造の前記カウンタフィールドをデフォルト値として設定すること、
を含む、先行する請求項のいずれか1項に記載の方法。
【請求項6】
前記主ページを決定することは、
フラッシュメモリの前記2つ以上のページのうちの第1のページ内の第1の有効なエントリを決定することと、
フラッシュメモリの前記2つ以上のページのうちの少なくとも1つの第2のページ内の少なくとも1つの第2の有効なエントリを決定することと、
前記第1の有効なエントリ内に記憶されるデータ構造と、前記少なくとも1つの第2の有効なエントリ内に記憶される少なくとも1つのデータ構造とのそれぞれのカウンタフィールドの比較に基づいて、前記フラッシュメモリの前記主ページを決定することと、
を含む、請求項5に記載の方法。
【請求項7】
フラッシュメモリの前記2つ以上のページの各ページは、各ページの状態を記憶するために使用されるそれぞれの状態フィールドを含み、
前記2つ以上のページ内の前記主ページを決定することは、
前記2つ以上の各ページの前記それぞれの状態フィールドに基づいて、最初の主ページを前記主ページとして決定することと、
前記最初の主ページが空のエントリを含むかどうかを決定することと、
前記最初の主ページが空のエントリを含まないとの決定に応じて、前記2つ以上のページのうちの前記最初の主ページとは異なる他のページを前記主ページとして決定することと、
を含む、先行する請求項のいずれか1項に記載の方法。
【請求項8】
前記状態フィールドは、第1の値、または前記第1の値とは異なる第2の値のいずれかを記憶する、請求項7に記載の方法。
【請求項9】
前記他のページを前記主ページとして決定することに応じて、前記他のページの前記状態フィールドを変更して、前記他のページをフラッシュメモリの前記2つ以上のページのうちの前記主ページとして示すことをさらに含む、請求項7または請求項8に記載の方法。
【請求項10】
前記他のページを前記主ページとして決定することに応じて前記他のページを消去し、前記主ページ内の前記最初の空のエントリ内に前記データ構造を記憶することをさらに含む、請求項9に記載の方法。
【請求項11】
前記フラッシュメモリの前記2つ以上のページのうちの前記主ページからデータを読み取ることをさらに含み、前記読み取ることは、
前記2つ以上のページのうちの前記主ページ内の最後の有効なエントリを決定することと、
前記主ページ内の前記最後の有効なエントリ内に記憶されるデータ構造の表示を出力することと、
を含む、先行する請求項のいずれか1項に記載の方法。
【請求項12】
前記フラッシュメモリの前記2つ以上のページのうちの前記1つのページ内に前記データを記憶することは、セキュアブートプロセスの一部として実施される、先行する請求項のいずれか1項に記載の方法。
【請求項13】
前記フラッシュメモリの前記2つ以上のページのうちの前記1つのページ内に前記データを記憶することは、前記ページを付加専用ページとして利用する、先行する請求項のいずれか1項に記載の方法。
【請求項14】
2つ以上のページを含むフラッシュメモリと、
前記フラッシュメモリに動作可能に結合され、請求項1~13のいずれか1項に記載の方法を実行するように構成されるフラッシュ信頼性マネージャと、
を備えるシステム。
【請求項15】
フラッシュメモリと、
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサによって実行されるときに、前記少なくとも1つのプロセッサに請求項1~13のいずれか1項に記載の方法を実行するよう指示するプロセッサ実行可能命令を記憶する少なくとも1つのコンピュータ可読記憶媒体と、
を備える装置。
【発明の詳細な説明】
【背景技術】
【0001】
背景
電子デバイスは、複雑さと重要性とが増したタスクを実行するために継続的に使用される。その結果、電子デバイスには堅牢で高性能のメモリデバイスの実装が必要になる。現在、多くの電子デバイスはフラッシュメモリを不揮発性記憶媒体として利用する。しかしながら、多くのフラッシュメモリデバイスには、フラッシュメモリデバイスを損傷させる前に実行され得るプログラムおよび消去操作の数を規定する書き込み耐久性などの制限がある。さらに、状況によっては、フラッシュメモリデバイス内に記憶されるデータは、記憶操作中の電力消失などの電力変動事象中に破損する場合がある。このような事象は、電子デバイスの動作に不可欠なデータを恒久的に危険にさらす可能性がある。したがって、メモリ障害は、電子デバイスに損害を与える可能性があり、場合によっては、電子デバイスが使用できなくする可能性がある。
【発明の概要】
【0002】
概要
この文書は、フラッシュストレージにおける信頼できる読み出し、書き込み(たとえばプログラム)、および消去操作を可能にし得る、信頼できるフラッシュストレージのための技術および装置について記載する。態様において、データは、2つ以上のページの使用を通じてフラッシュメモリデバイスに記憶され得る。主ページが、記憶操作を実行するための適切なページを決定するために、2つ以上のページに関して決定され得る。空のエントリが主ページ内で決定され得、データが空のエントリ内に記憶され得る。データがエントリに書き込まれた後、無効なデータまたは非推奨のデータのアクセスまたは使用を防ぐためなど、以前のエントリが無効にされてもよい。その際、以前のエントリは、新しいエントリがフラッシュデバイス内に記憶された時点でのみ変更され得る。したがって、記載された技術および装置は、信頼できるフラッシュストレージの態様を可能にし得る。
【0003】
フラッシュメモリの2つ以上のページのうちの1つのページ内にデータを記憶することを含む方法が記載される。データを記憶することは、フラッシュメモリの2つ以上のページのうちの主ページを決定することを含む。主ページ内の最初の空エントリが決定されてもよく、データ(たとえば、ブートコード、ブートデータ、データ構造など)が主ページの最初の空エントリ内に記憶されてもよい。場合によっては、これは、新しいデータまたは更新されたデータが主ページ内の空のエントリに書き込まれる際の書き込み障害の場合に、主ページ内の以前のデータが利用可能であることを確実にする。
【0004】
態様では、信頼できるフラッシュメモリのための方法または他の動作を実行するためにプロセッサによって実行され得る、コンピュータ可読記憶媒体に実装されるフラッシュ信頼性マネージャも記載される。他の態様では、フラッシュメモリと、信頼できるフラッシュメモリの態様を実装するように構成されるフラッシュ信頼性マネージャとを含むシステムが、この文書でさらに記載される。
【0005】
この概要は、信頼できるフラッシュストレージのための技術および装置の簡略化された概念を紹介するために提供され、その概念は、詳細な説明および図面において以下でさらに記載される。この概要は、特許請求の範囲に記載される主題の本質的な特徴を特定しようとするものではなく、また、特許請求の範囲に記載される主題の範囲を決定する際に使用することを意図したものでもない。
【0006】
以下、信頼できるフラッシュストレージの1つまたは複数の態様の詳細について説明する。説明および図における異なる事例での同じ参照番号の使用は、同様の要素を示す。
【図面の簡単な説明】
【0007】
図1】1つまたは複数の態様に従って信頼できるフラッシュストレージを実装できる動作環境の一例を示す図である。
図2】フラッシュ信頼性マネージャを含むシステムの一例を示す図である。
図3】フラッシュメモリ内のフラッシュバンクの一例を示す図である。
図4】信頼できるフラッシュストレージの1つまたは複数の態様に係る、複数のページを含むフラッシュメモリの一例を示す図である。
図5】1つまたは複数の態様に係る主ページ決定のためのカウンタ実装の一例を示す図である。
図6】信頼できるフラッシュストレージの1つまたは複数の態様に係る主ページ決定のための状態方式の一例を示す図である。
図7】1つまたは複数の態様に係る書き込み操作の実施の一例を示す図である。
図8】信頼できるフラッシュストレージの1つまたは複数の態様に係る読み出し操作の実施の一例を示す図である。
図9】信頼できるフラッシュストレージの1つまたは複数の態様に係る書き込み操作のための方法の一例を示す図である。
図10】信頼できるフラッシュストレージの1つまたは複数の態様に係る読み出し操作のための方法の一例を示す図である。
【発明を実施するための形態】
【0008】
詳細な説明
概要
この文書は、信頼できるフラッシュストレージのための技術および装置について説明する。多くの電子デバイスは、デバイスの動作に役立つデータを記憶するためにフラッシュメモリを利用する場合がある。プロビジョニングされる際、フラッシュメモリはページを含み、各ページは値1に初期化された設定数のビットを含む。書き込み操作を通じて、ビットを1から0にプログラムできる。しかしながら、0の値を伴うビットを元の1の値にプログラムするには、消去操作が利用される。消去操作は個々のビットに対して実行できず、代わりに、消去操作はフラッシュメモリのページ(またはバンク)内のすべてのビットを1の値にプログラムし、これにより、時間の経過とともにフラッシュデバイスが損傷する場合がある。さらに、フラッシュデバイスは書き込みまたは消去操作中に電力損失を受け、それにより、書き込みまたは消去中のデータが破損する可能性がある。フラッシュデバイスへの損傷を制限し、フラッシュメモリにデータを記憶するための堅牢な解決策を提供するには、信頼できるフラッシュストレージが必要である。
【0009】
本明細書では、フラッシュメモリ内にデータを記憶するために付加専用方式(append-only fashion)で少なくとも2つのページを利用する信頼できるフラッシュストレージについて説明する。一般に、フラッシュメモリには、読み出し、書き込み、消去の3つの操作を通じてアクセスできる。読み出し操作は、フラッシュメモリに記憶されるデータを取り出し、別のデバイスで利用されるべきコンテンツを出力できる。書き込み操作は、エントリの適切なビットをゼロにプログラムすることによってデータを記憶する適切なエントリを決定することができる。消去コマンドは、ページ(またはバンクまたはブロック)内のすべてのビットを値1に再プログラムできる。信頼できるフラッシュストレージを提供するために、新しいエントリが書き込まれるまで以前のエントリが確実に保持されるように、2つ以上のページが使用される。そのため、データが破損した場合でも、以前のエントリが読み取るために利用可能なままとなり得る。さらに、読み出しおよび書き込み操作を実行する必要がある主ページを2つのページ間で決定することができる。データ構造(ブートコード、ブートデータなど)は、各ページ内のエントリに書き込まれ、有効または無効な状態に設定される。態様において、主ページは、カウンタ方式または状態方式を通じて決定され得る。カウンタ方式は、各データ構造内のカウンタフィールドを利用して、最も高いデータ構造カウンタフィールドを伴う有効なエントリを含むページを決定することができる。状態方式は、ページの状態が記憶される各ページ内の記憶スペースを利用することができる。各ページの状態に基づいて、主ページを決定することができる。したがって、書き込みおよび読み出し操作は主ページで実行され得、フラッシュメモリとの適切な相互作用を決定するために必要な計算が最小限に抑えられる。
【0010】
信頼できるフラッシュストレージの場合、書き込み操作は主ページ内の最初の空のエントリで実行され得る。書き込み操作は、さらに、以前のエントリ内に記憶されるデータ構造のフィールドを変更することによって、たとえば、少なくとも1つの非ゼロビットを持つことが知られているデータ構造のフィールドのすべてまたは一部のビットをゼロに設定することによって、以前のエントリを無効に設定することができる。そうすることで、有効なエントリをより簡単に見つけることができるため、より少ない計算で主ページを決定できる。さらに、たとえば、主ページが満杯であるために、主ページが第1のページから第2のページに変更されるとき、第1のページの以前のエントリを修正することなく、新しいエントリのためのスペースを作るために第2のページが消去されてもよい。態様では、説明したように、信頼できるフラッシュストレージは、フラッシュメモリと動作可能に結合されるフラッシュ信頼性マネージャによって実行される。
【0011】
説明された態様は、フラッシュメモリ書き込みの先行技術の1つまたは複数の利点を提供することができる。たとえば、信頼できるフラッシュストレージは、書き込みが成功した後にのみ以前のエントリが無効になるため、書き込み失敗から回復する機会を提供でき、あるいはデフォルト値にフォールバックすることなく消去失敗から回復する機会を提供できる。さらに、これらの態様は、書き込みごとに1回の消去ではなく、N回の書き込みごとに1回の消去を実行することができ、停電によるデータ破損の可能性を低減する。これに代えてまたは加えて、消去サイクルが少なくとも2つの情報ページにわたって分配され、フラッシュの消耗が軽減される結果となる。これらは、信頼できるフラッシュストレージによって提供される態様および利点のほんの数例にすぎず、その他の態様および利点については、本開示を通じて説明する。
【0012】
図1は、1つまたは複数の態様に係る信頼できるフラッシュストレージのための動作環境100の一例を示す。たとえば、信頼できるフラッシュストレージは、モバイルデバイス102-1、タブレット102-2、パーソナルコンピュータ102-3、ウェアラブルコンピューティングデバイス102-4、または車両102-5(たとえば、車両ナビゲーション、制御、またはエンターテイメントシステム)などの電子デバイス102内で実行され得る。図示されていないが、デスクトップ、サーバ、プリンタ、デジタルカメラ、ゲーム機、ホームオートメーション端末、モバイルホットスポット、セキュリティチップなどの電子デバイス102の他の構成が考えられる。
【0013】
態様において、信頼できるフラッシュストレージを実装することができる電子デバイス102は、プロセッサ104およびコンピュータ可読記憶媒体106を含む。コンピュータ可読記憶媒体106は、たとえば、システムオンチップ(SoC)、または電子デバイス102の処理または機能を提供する別の形態の内部または組み込みシステムとしてプロセッサ104内に、またはプロセッサ104と関連して実装され得る。あるいは、コンピュータ可読記憶媒体106は、外部にあってよいが、プロセッサ104と関連付けられてもよい。コンピュータ可読記憶媒体106は、揮発性メモリ108および不揮発性メモリ110を含み、これらは、任意の適切なタイプ、組合せ、または数の内部または外部メモリデバイスを含み得る。コンピュータ可読記憶媒体106の各メモリは、ハードウェア回路のオンチップメモリ、またはデータインタフェースまたはバスを介してプロセッサ104とデータを通信するオフチップメモリデバイスとして実装され得る。一例では、揮発性メモリ108はランダムアクセスメモリ(RAM)を含む。これに代えてまたは加えて、揮発性メモリ108は、スタティックランダムアクセスメモリ(SRAM)、同期ダイナミックランダムアクセスメモリ(DRAM)、非同期DRAM、ダブルデータレートRAM(DDR)などの他のタイプのメモリを含んでもよい。
【0014】
さらに、不揮発性メモリ110は、フラッシュメモリ114を含み、さらに、読み出し専用メモリ112(ROM112)を含んでもよく、そのいずれも、さまざまなセキュリティ要件を伴う個別のコードパーティションを記憶するために使用され得る。図示されていない他の不揮発性メモリとしては、不揮発性RAM(NVRAM)、電気的消去可能プログラマブルROM(EEPROM)、組み込みマルチメディアカード(eMMC)デバイス、シングルレベルセル(SLC)フラッシュメモリ、マルチレベルセル(MLC)フラッシュメモリなどを挙げることができる。一例では、ROM112はオンチップメモリ領域として実装される。ブートコード(Boot code)は、フラッシュメモリ114およびROM112などの1つまたは複数の不揮発性メモリコンポーネントに記憶され得る。特定の例では、最低レベルのブートコードがROM112に書き込まれるか、またはマスクされる。そうすることによって、ROM112内、またはメタルマスクROM/ブートROM内のブートコードは、チップの製造後に修正することができない。ROM112の修正不可能な性質により、最低レベルのブートコードの信頼性が保証される。より高いレベルのブートコードは、フラッシュメモリ114などのROM112の拡張部分に実装することができる。
【0015】
フラッシュメモリ114は、それぞれが電子デバイス102の異なるシステムにアクセス可能な複数のパーティションを含むフラッシュバンクを通じて実装され得る。いくつかの実装形態では、フラッシュメモリ114は、汎用データを保持するデータパーティションと、データパーティションに関するメタデータおよび設計固有の機密データを保持する情報パーティションとを含み得る。フラッシュメモリ114は耐久性を有することができ、したがって、多数の書き込みおよび消去コマンドによる変更をサポートすることができる。さらに、フラッシュメモリ114は、フラッシュメモリ114内に記憶されたデータを出力する読み出しコマンドをサポートすることができる。
【0016】
電子デバイス102は、信頼できるフラッシュストレージを可能にするフラッシュ信頼性マネージャ116をさらに含む。フラッシュ信頼性マネージャ116は、プロセッサ104によって実行可能な機械可読命令を通じて実装され得る。この実装では、フラッシュ信頼性マネージャ116は、信頼できるフラッシュストレージのための技術に従って、読み出し、書き込み、および消去などの高レベルのプロトコルコマンドをフラッシュコントローラに提供し得る。その結果、フラッシュコントローラは、フラッシュメモリ114上で読み出し、書き込み、および消去動作を実行するために高レベルプロトコルコマンドを調停することができる。他の実装形態では、フラッシュ信頼性マネージャ116は、フラッシュコントローラ内のハードウェアとして実装され、高レベルのプロトコルコマンドを調停して信頼できるフラッシュストレージを実行するように機能することができる。したがって、フラッシュ信頼性マネージャ116は、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向け標準製品(ASSP)、SoC、Complex Programmable Logic Device(CPLD)などを含むがこれらに限定されない任意の数の固定論理回路を通じて実装され得る。
【0017】
電子デバイス102は、揮発性メモリ108および不揮発性メモリ110を含む任意の適切なタイプのコンピュータ可読記憶媒体106からオペレーティングシステムまたはアプリケーションを実行することができる。これに代えてまたは加えて、オペレーティングシステムまたはアプリケーションは、ファームウェアまたは任意の他のコンピュータ可読命令、バイナリ、またはコードとして具現化され得る。電子デバイス102は、電子デバイス102の特定の機能またはサービスを可能にするために、オペレーティングシステムまたはアプリケーションによって提供されるユーザインタフェースを含み得る。
【0018】
電子デバイス102は、I/Oポート118も含むことができる。I/Oポート118により、組み込みデバイス102は、本明細書で説明されるコードまたは値をそれぞれのメモリ、レジスタなどにプログラミングするなど、他のデバイスまたはユーザと相互作用することができる。I/Oポート118は、USBポート、ジョイントテストアクショングループ(JTAG)ポート、テストアクセスおよびプログラミング(TAP)ポート、オーディオポート、シリアルATA(SATA)ポート、PCI-expressベースのポートまたはカードスロット、セキュアデジタル入出力(SDIO)スロット、および/またはその他のレガシーポートなどの内部ポートまたは外部ポートの任意の組合せを含み得る。ヒューマン入力デバイス(HID)、外部コンピュータ可読記憶媒体、または他の周辺機器など、さまざまな周辺機器をI/Oポート118と動作可能に結合することができる。
【0019】
図2は、フラッシュ信頼性マネージャ116を含むシステム200の一例を示す。フラッシュ信頼性マネージャ116は、ホスト202のソフトウェアインタフェース、他のハードウェアコンポーネント、およびフラッシュ物理コントローラ204の間に配置され得る。いくつかの実装形態では、フラッシュ信頼性マネージャ116は、読み出し、書き込み、および消去要求を、ホスト202から、フラッシュ物理コントローラ204のための高レベルプロトコルに変換する。フラッシュ物理コントローラ204は、フラッシュメモリ114内に実装されるように示されているが、外部にあってフラッシュメモリ114に接続されてもよい。フラッシュ物理コントローラ204は、電子デバイス内のさまざまなシステムにアクセス可能な1つまたは複数のパーティションを含むフラッシュバンク206に接続される。したがって、フラッシュ物理コントローラ204は、フラッシュ信頼性マネージャ116によって提供される高レベルプロトコルを実行して、フラッシュバンク206の1つまたは複数のパーティションに対する読み出し、書き込み、および消去コマンドを調停することができる。さらに、フラッシュ物理コントローラ204またはフラッシュ信頼性マネージャ116は、スクランブルまたはバッファリングなど、フラッシュメモリ114上でさまざまなセキュリティ機能を実行するために利用され得る。
【0020】
図3は、フラッシュバンク206の一例を300で示す。フラッシュメモリは、汎用ストレージの連続ブロックとして編成されず、その代わりにデータパーティションと情報パーティションとに編成され得る。たとえば、図示されるように、フラッシュバンク206は、情報パーティション302、情報パーティション304、およびデータパーティション306を含む。データパーティション306は、汎用メモリのような汎用データを記憶することができる。情報パーティション302および情報パーティション304は、データパーティションに関するメタデータおよび設計固有の機密データを記憶することができる。たとえば、情報パーティション(たとえば、情報パーティション302および情報パーティション304)は、冗長情報、製造業者固有の情報、製造業者のフラッシュタイミング情報、設計固有の一意のシード、および冗長ページを含むことができるが、これらに限定されない。各パーティションは、ページを含むか、ページに分割されてもよく、たとえば、情報パーティション302、情報パーティション304、およびデータパーティション306はそれぞれ、設定された数のワードを記憶できる設定された数のエントリを有する最大整数Nのページを含む。各ワードは、ワードサイズを決定する設定されたビット数で構成され得る。デフォルト状態では、各ビットが1に設定され得る。態様において、フラッシュバンク206は、複数の情報パーティションを含み得るが、そのいずれもデータパーティション306と同じサイズである必要はない。
【0021】
パーティションのタイプごとに、ページサイズとワードサイズが同じである必要があり得るが、パーティションの各タイプは異なるページ数を含み得る。したがって、1つまたは複数のパーティションのサイズが他のパーティションと異なる場合がある。しかしながら、すべてのタイプのパーティションは同じプログラムおよび消去ルールに従う場合があり、たとえば、消去コマンドを使用しない限り、ビットを0にプログラムした後は1にプログラムし直すことができない。いくつかの態様では、書き込みコマンドは、1を0にプログラムするためのビット長操作であり得るが、消去コマンドは、0から1の値でプログラムされたすべてのビットを消去するために、ページ全体またはバンク全体に対して操作されなければならない。これに代えてまたは加えて、書き込み操作は、ビット長操作、ニブル長操作、バイト長操作、ワード長操作などのうちの1つまたは複数として実装される書き込み操作など、任意の適切な粒度で実行することができる。場合によっては、データパーティションはソフトウェアおよび他のハードウェアホストによって直接読み取られ得るが、情報パーティションはフラッシュコントローラ(たとえば、フラッシュ物理コントローラ204)によってのみ読み取られ得る。
【0022】
一実装形態において、情報パーティション302および情報パーティション304は、セキュアブートプロセス(secure boot process)を実施するための秘密シードを保持する。情報パーティション内に組み込まれたページは、フラッシュコントローラの初期化時に読み取られ得る。ページから読み取られた値は、その後、電子システムのセキュアブートプロセスの一部として使用されるために供給され得る。一部の実装形態において、セキュアブートプロセスは、作成者シークレット(シリコンデバイスの製造元または設計者から)および所有者シークレット(購入者、または作成者(または以前の所有者)によってデバイス上のコードを実行する権限を与えられたエンティティから)を伴い得る。したがって、情報パーティション302または情報パーティション304は、作成者ページおよび所有者ページを含むことができる。
【0023】
態様において、エントリは、ダイジェスト、識別子、カウンタ、セキュリティバージョン値などのための1つまたは複数のフィールドを伴うデータ構造例1に示されるように実装され得る。エントリは、固定サイズ(たとえば、ワードサイズの倍数)であってもよく、または完全性が保護されてもよい。
【0024】
データ構造例1
typedef struct boot_data {
hmac_digest_t digest;
uint32_t identifier;
uint32_t counter;
uint32_t min_security_version_rom_ext;
//他のデータ(またはパディング)
// ...
}
図4は、信頼できるフラッシュストレージの1つまたは複数の態様に係る複数のページを含むフラッシュメモリ400の一例を示す。たとえば、ページ402およびページ404は、中断された書き込みおよび消去操作から回復できるようにするために、付加専用ログ(append-only logs)として使用される。データは単一のデータ構造にパックすることができ、各ページは、このデータ構造のサイズとページサイズとによって決定される整数N個のエントリを記憶できる。ある時点では、ページ402およびページ404の一方が主(またはアクティブ)ページになり、もう一方が副(または非アクティブ)ページになる。主ページは、満杯になるまで読み出し、書き込みに使用できる。主ページが満杯のときに新しいエントリを記憶する必要がある場合、副ページを消去し、新たに消去したページに新しいエントリを書き込むことができる。新しいエントリが検証されると、主ページと副ページとが切り替わり得る。言い換えれば、主ページが満杯の場合(たとえば、すべてのエントリが埋まっている場合)、副ページは消去され、新たに消去されたページに新しいエントリが書き込まれる。新しいエントリを検証すると、主ページおよび副ページのそれぞれの役割または状態が切り替わる(たとえば、以前に消去されたページが主ページになる)。新しいエントリの検証は、たとえば、新しく書き込まれたエントリを読み戻してその内容を期待値と比較することによって、またはフラッシュコントローラのエラー状態を監視することによって、さまざまな方法で実行できることに留意すべきである。
【0025】
エントリの整合性を検証できるようにするために、記憶されたデータ構造はダイジェスト(またはチェックサム)フィールドを有し得る。一部の実装形態では、エントリの有効性を決定するためにダイジェストを使用できる場合がある。たとえば、ダイジェストを検証して、エントリが有効であることを決定できる。しかしながら、ダイジェストが検証されない場合、エントリは無効であるとみなされる場合がある。態様において、自明でない値を有する識別子フィールドを使用して、最適化としての完全な整合性および空のチェックの前に、無効または空のエントリを迅速に決定できるようにすることができる。態様において、識別子フィールドは、各エントリにわたる所定の定数値であってもよい。あるいは、識別子フィールドはエントリごとに固有であるか、エントリのタイプに基づいて異なってもよい。
【0026】
図5は、信頼できるフラッシュストレージの1つまたは複数の態様に係る主ページ決定のための例示的なカウンタ方式を500で示す。前述したように、カウンタ方式は、付加専用方式で少なくとも2つのページ(たとえば、ページ402およびページ404として示されるページ)を利用することができる。ページ402およびページ404のそれぞれは、書き込み可能であり、かつ、有効または無効に設定できる設定数のエントリを含むことができる。各エントリは、書き込みのたびに増分されるカウンタフィールドを有し得る。書き込みのたびに、エントリが埋められて有効に設定され得る。さらに、他の各エントリ、または以前のエントリが無効に設定され得る。主ページを決定するには、各ページの有効なエントリを見つけた後、そのカウンタフィールドの値に基づいて比較し、より高いカウンタ値を持つページを主ページとして決定し得る。あるいは、各ページ内の最後の有効なエントリを見つけた後、カウンタの値に基づいて比較することもできる。
【0027】
たとえば、ページ402には空のエントリが含まれておらず、同様に有効なエントリも含まれていない。しかしながら、ページ404には、カウンタ値56の有効なエントリが含まれる。その結果、ページ404が主ページとして決定され得る。書き込みコマンドの一部として以前のエントリが無効に設定される実装形態では、以前のエントリの有効性フィールドの設定中にフラッシュメモリが破損する場合がある。その結果、以前のエントリが無効としてマークされない場合がある。この場合、有効な各エントリはカウンタ値に基づいて比較され得、主ページが決定される。別の実装形態では、以前のエントリは無効として設定されない。この実装形態では、ページ402およびページ404の両方に有効なエントリが含まれる可能性がある。有効なエントリが比較され、最も高いカウンタ値を持つ有効なエントリが主ページを決定する。具体的には、主ページは、カウンタ値が最も高いエントリを含むページになる。有効なエントリがない場合、ページを初期化する必要がある、たとえば消去する必要があると決定することができる。初期化前に読み出し要求を受信した場合、デフォルト値が返される場合がある。この動作は、デバイスのライフサイクル状態、ワンタイムプログラマブル(OTP)メモリ構成、またはその他の構成に基づいてさらに制御、許可、または禁止され得る。初期化には、ページ402やページ404などのデフォルトの主ページが含まれ得る。カウンタ方式は、各エントリ内の単純なカウンタフィールドのみを使用するため、その単純さにより信頼できるフラッシュストレージにとって有利であり得る。あるいは、信頼できるフラッシュストレージは状態方式を通じて実行されてもよい。
【0028】
図6は、信頼できるフラッシュストレージの1つまたは複数の態様に従って主ページを決定するための状態方式の一例を600で示す。状態方式は、カウンタ方式と同様に2つの付加専用ページを利用できる。図示されるように、状態方式はページ402およびページ404を含む。各ページは、ページの状態を記憶するための予約領域を有することができる。図6に示すように、2つの定数XおよびYを利用する冗長符号化を使用することができる。定数XおよびYのそれぞれは、それが記憶されているページの状態を表すために使用できる。
【0029】
図6に示される最初の4行は、移行し得る順序でページの状態をリストアップする。さらに、次の行で更新される状態が強調表示される。たとえば、ページの状態領域の値がXおよびY(第1の行)で、ページ402(主ページ)が満杯であると仮定すると、ページ404が消去され、その状態領域がXに設定され、それが主ページになる(第2の行)。この操作が中断される場合、現在の主ページはこの操作中に変更されないため、依然としてページの状態を確実に決定できる。両方のページがX状態(第2の行)にある場合、ページ404が主ページとして書き込まれ得る。ページ404が満杯になると、ページ402が消去され得、その状態がYに変更され得、ページ402が主ページ(第3の行)になる。同様に、ページ402は、満杯になるまで主ページとして書き込まれ得る。ページ402が満杯になると、ページ404が消去され得、その状態がYに変更され得、ページ404が主ページ(第4の行)になる。ページ404は、満杯になるまで主ページとして書き込むことができ、満杯になった時点でページ402は消去され得、その状態がXに設定され得る。これにより、ページ402が主ページとして決定され得、サイクルが最初から開始される。
【0030】
主ページが決定されると、既存のエントリを変更せずに主ページに書き込むことができる。主ページが満杯である場合、副ページが消去され得、副ページが主ページとして書き込まれ得る。したがって、新しいエントリが書き込まれるまで、以前のエントリがクリアまたは無効化され得ないため、信頼できるフラッシュストレージが提供される。主ページの決定およびページの消去は、どのような順序で実行されてもよいことに留意すべきである。たとえば、主ページが満杯であると決定される場合がある。副ページは、主ページとして決定され、削除される場合がある。あるいは、副ページを削除してから主ページとして決定することもできる。状態方式は、エントリに任意の更なるフィールドを必要としない場合があり、主ページを決定するために第2のページをスキャンする必要がないことに留意すべきである。説明を簡単にするために、さまざまな操作(読み出し、書き込み、および消去)がカウンタ方式の文脈において説明される。しかしながら、カウンタフィールドの代わりに、またはカウンタフィールドに加えて、それぞれのページごとに状態を実施することによって、読み出し、書き込み、および消去操作のそれぞれを状態方式に従って実行できることを理解すべきである。
【0031】
図7は、信頼できるフラッシュストレージの1つまたは複数の態様に係る書き込み操作の実装形態の一例を700で示す。ページ402は、書き込み操作が行われる前(たとえば、ページ402-1)と後(たとえば、ページ402-2)を示している。書き込み操作は、主ページの最初の空のエントリ(たとえば、ビットがすべて1である最初のエントリ)に新しいデータ構造を書き込むことができる。いくつかの態様では、空ではないエントリの数が少ないと予想されるため、これは単純な線形検索として実施されてもよい。あるいは、バイナリ検索または任意の他の適切な検索アルゴリズムを使用して、主ページ内の最初の空のエントリを決定することができる。エントリは一意である必要はなく、冗長性のために同じエントリを複数回書き込むことができることに留意されたい。主ページに空のエントリが残っていない場合、新しいデータ構造を書き込むことができる前に副ページが消去され得る。新しいエントリが検証されると、主ページと副ページとを切り替えることができる。新しいエントリが書き込まれた時点で、古い情報に戻ることを避けるために、以前のエントリが無効化され得る(たとえば、構造体のフィールドにすべて0を書き込むことにより)。いくつかの実装形態では、識別子フィールドが0に書き込まれ得る。書き込み操作が中断される場合、以前のエントリは新しいエントリの書き込みが成功した後でのみ無効になるため、依然として有効であり得る。書き込み操作例では、検索によりページ402-1内の最初の空のエントリを決定でき、書き込みコマンドにより、増分されたカウンタを含む新しいデータ構造を空のエントリに書き込むことができ、結果としてページ402-2が得られる。状態方式において、書き込み操作は、必要に応じて各ページの状態を更新することを含むことができる。
【0032】
図8は、信頼できるフラッシュストレージの1つまたは複数の態様に係る読み出し操作の実装形態の一例を800で示す。図8では、ページ402が、主ページであり、少なくとも1つの有効なエントリを含む。読み出し操作は、主ページ内の最後の有効なエントリを返すことができる。書き込み操作と同様に、読み出し操作は、まずページ内の最初の空のエントリを検索する必要があり、最後の有効なエントリを見つけるために後方検索を実行できる。ページに空のエントリがない場合、後方検索はページ内の最後のエントリから開始できる。その結果、以前のエントリが無効に更新されていなくても、読み出し操作が最後の有効なエントリを見つけることができる。1つのページは、たとえば、そのページに書き込まれる前に、有効なエントリを含まなくてもよい。有効なデータがない場合は、電子デバイスのライフサイクル状態または別の構成、たとえばOTPヒューズに基づいてデフォルト値を使用できる。たとえば、製造状態では、ライフサイクル状態が、製造のユースケースを可能にするための対応するデフォルト値を決定できる。別の実装形態では、単一のデフォルト構成を使用できる。
【0033】
一般に、本明細書で説明されるコンポーネント、モジュール、方法、および動作のいずれも、ソフトウェア、ファームウェア、ハードウェア(たとえば、固定論理回路)、手動処理、またはそれらの任意の組合せを使用して実装することができる。例示的な方法の一部の動作は、コンピュータ処理システムに対してローカルかつ/またはリモートであるコンピュータ可読記憶メモリに記憶された実行可能命令の一般的なコンテキストで説明することができ、実装は、ソフトウェアアプリケーション、プログラム、機能などを含み得る。これに代えてまたは加えて、本明細書で説明される機能のいずれかは、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向け標準製品(ASSP)、システムオンチップシステム(SoC)、複合プログラマブルロジックデバイス(CPLD)などを含むがこれらに限定されない、1つまたは複数のハードウェアロジックコンポーネントによって少なくとも部分的に実行され得る。
【0034】
図9は、信頼できるフラッシュストレージの1つまたは複数の態様に係る書き込み操作のための方法例900を示す。902において、フラッシュメモリの2つ以上のページのうちの主ページが決定される。態様において、主ページは、上で詳述したカウンタ方式または状態方式を使用して決定される。いくつかの実装形態では、フラッシュメモリの2つ以上のページのうちの1つのページ内にデータを記憶することは、主ページを決定した後、主ページが満杯であるかどうかを決定することを含む。主ページが満杯であるとの決定に応じて、2つ以上のページのうちの他のページが消去され得る。他のページは、その後、その最初の空のエントリ内にデータを記憶するために使用され、主ページとして決定され得る。場合によっては、これにより、エントリの新しいデータまたは更新されたデータがフラッシュメモリの異なるページに書き込まれるまでデータが消去されなくなり、フラッシュメモリの新しい主ページにデータを記憶するときに消去または書き込みが失敗した場合でもデータが利用可能であることを確実にする。
【0035】
いくつかの実装形態では、カウンタ方式を使用して、フラッシュメモリの複数のページからの主ページの決定を指示して可能にすることができる。たとえば、データは、カウンタフィールドを含むデータ構造として書き込まれるかフォーマットされてもよく、データ構造(たとえば、有効なデータ構造体または有効な構造体)を記憶することは、以前のエントリ内に記憶されたデータ構造のカウンタフィールド(たとえば、有効なエントリを示すための単調増加カウンタ)を増分することによって有効なデータ構造のカウンタフィールドを設定することを含んでもよい。いくつかの実装形態では、以前のエントリが存在しない場合がある。したがって、デフォルト値がカウンタフィールドに書き込まれる場合がある。カウンタ方式では、主ページが、2つ以上のページのうちの第1ページ内の第1の有効なエントリと、2つ以上のページのうちの少なくとも1つの第2のページ内の少なくとも1つの第2の有効なエントリとを決定することによって識別され得る。主ページを決定するために、第1の有効なエントリおよび少なくとも1つの第2の有効なエントリは、第1の有効なエントリと少なくとも1つの第2の有効なエントリのそれぞれ内に記憶されたデータ構造のカウンタフィールドに基づいて比較され得る。いくつかの実装形態では、複数の有効なエントリがページ上に存在し得る。したがって、各ページの最後の有効なエントリを使用して、主ページを決定することができる。
【0036】
いくつかの実装形態では、状態方式を利用してフラッシュメモリの主ページを決定する。たとえば、フラッシュメモリの2つ以上のページの各ページは、各ページの状態を記憶するために使用される状態フィールドを含むことができる。主ページは、2つ以上のページのそれぞれの状態フィールドに基づいて決定され得る。一態様において、最初の主ページは、2つ以上のページのそれぞれの状態フィールドに基づいて決定され、主ページは、ページが空のエントリを含むかどうかを決定するために検索される。主ページが空のエントリを含まない(たとえば、満杯である)と決定される場合、2つ以上のページのうち、最初の主ページとは異なる他のページが主ページとして決定される。いくつかの実装形態では、最初の主ページが満杯であるとの決定に応じて、他のページが消去される。一態様では、他のページの消去に応じて、当該他のページの状態フィールドが変更される。いくつかの実装形態において、有効なデータは、他のページを主ページとして使用して、当該他のページの最初の空のエントリ内に記憶される。
【0037】
904において、主ページ内の最初の空のエントリが決定される。906において、有効なデータ構造が最初の空のエントリ内に記憶される。いくつかの実装形態では、有効なデータ構造は、ダイジェスト、識別子フィールド、またはカウンタフィールドを含み得る。908において、最初の空のエントリ内に有効なデータ構造が記憶されていることに応じて、以前のエントリが無効に設定され得る。以前のエントリは、以前のエントリ内に記憶されているデータ構造内のフィールドを変更することによって無効に設定できる。特定の例では、フィールドまたはその一部がゼロに変更され得る。一態様では、識別子フィールドが非ゼロであることが分かっている可能性があるため、以前のエントリを無効に設定するように識別子フィールドを調整することができる。
【0038】
図10は、信頼できるフラッシュストレージの1つまたは複数の態様に係る読み出し操作のための方法例1000を示す。1002において、フラッシュメモリの2つ以上のページのうちの主ページが決定される。一般に、この決定は、図9の902で行われる主ページ決定と同様であり得る。
【0039】
1004において、2つ以上のページのうちの主ページ内の最後の有効なエントリが決定され得る。最後の有効なエントリは、フラッシュメモリ内に記憶されたデータのいずれかに基づいて決定され得る。たとえば、カウンタ、ダイジェスト、または識別子フィールドを使用して、最後の有効なエントリを決定することができる。1006において、最後の有効なエントリ内に記憶されたデータ構造を出力できる。一般に、出力は、データ構造全体またはデータ構造の一部を含むことができる。しかしながら、一般に、読み出し操作によりフラッシュストレージからデータを取得できる。
【0040】
一般に、上で説明した方法は、フラッシュ信頼性マネージャによって全体または部分的に実施することができる。そうすることで、本明細書で説明される方法および/または態様は、セキュアブート動作または他のタイプのフラッシュメモリアクセスのためのデータ信頼性を向上させるために使用され得る、信頼できるフラッシュストレージを提供することができる。
【0041】
信頼できるフラッシュストレージの例が以下で提示される。
例1:フラッシュメモリ内の2つ以上のページのうちの1つのページ内にデータを記憶することを含み、記憶することは、フラッシュメモリの2つ以上のページのうちの主ページを決定することと、主ページの最初の空のエントリを決定することと、主ページの最初の空のエントリ内にデータ構造を記憶することとを含む、方法。
【0042】
例2:フラッシュメモリ内の2つ以上のページのうちの1つのページ内にデータを記憶することは、フラッシュメモリの2つ以上のページのうちの主ページを決定した後、主ページが満杯かどうかを決定することと、主ページが満杯であるとの決定に応じて、2つ以上のページのうちの他のページを消去することと、データ構造を他のページにおける最初の空のエントリ内に記憶することと、他のページを主ページとして選択することとを含む、前の例のいずれか1つに記載の方法。
【0043】
方法は、フラッシュメモリの2つ以上のページのうちの主ページを決定した後、主ページが満杯であるかどうかを決定することと、主ページが満杯でないとの決定に応じて、主ページの最初の空のエントリ内にデータ構造を記憶することを含んでもよい。
【0044】
例3:データ構造を主ページ内の最初の空のエントリ内に記憶することは、データ構造の有効性を示すために、データ構造のダイジェストまたは識別子を含むデータ構造の1つまたは複数のフィールドを設定することと、以前のデータエントリを、以前のエントリ内に記憶されるデータ構造のフィールドを変更することによって無効状態に設定することとを含む、前の例のいずれか1つに記載の方法。
【0045】
例4:以前のエントリを無効状態に設定することは、以前のエントリ内に記憶されるデータ構造の識別子フィールドを、ゼロ値または無効状態を示すように構成される他のゼロ以外の所定値に変更することを含む、前の例のいずれか1つに記載の方法。
【0046】
例5:データ構造がカウンタフィールドを含み、データ構造を記憶することは、データ構造のカウンタフィールドを、以前のエントリ内に記憶される他のデータ構造のカウンタフィールドの値からの増分値として設定すること、または、以前のエントリが存在しないとの決定に応じて、データ構造のカウンタフィールドをデフォルト値として設定することを含む、前の例のいずれか1つに記載の方法。
【0047】
例6:主ページを決定することは、フラッシュメモリの2つ以上のページのうちの第1のページ内の第1の有効なエントリを決定することと、フラッシュメモリの2つ以上のページのうちの少なくとも1つの第2のページ内の少なくとも1つの第2の有効なエントリを決定することと、第1の有効なエントリ内に記憶されるデータ構造と、少なくとも1つの第2の有効なエントリ内に記憶される少なくとも1つのデータ構造とのそれぞれのカウンタフィールドの比較に基づいて、フラッシュメモリの主ページを決定することとを含む、前の例のいずれか1つに記載の方法。
【0048】
例7:フラッシュメモリの2つ以上のページの各ページは、各ページの状態を記憶するために使用されるそれぞれの状態フィールドを含み、2つ以上のページ内の主ページを決定することは、2つ以上の各ページのそれぞれの状態フィールドに基づいて、最初の主ページを主ページとして決定することと、最初の主ページが空のエントリを含むかどうかを決定することと、最初の主ページが空のエントリを含まないとの決定に応じて、2つ以上のページのうちの最初の主ページとは異なる他のページを主ページとして決定することとを含む、前の例のいずれか1つに記載の方法。
【0049】
例8:状態フィールドは、第1の値、または第1の値とは異なる第2の値のいずれかを記憶する、前の例のいずれか1つに記載の方法。
【0050】
例9:他のページを主ページとして決定することに応じて、他のページの状態フィールドを変更して、他のページをフラッシュメモリの2つ以上のページのうちの主ページとして示すことをさらに含む、前の例のいずれか1つに記載の方法。
【0051】
例10:他のページを主ページとして決定することに応じて他のページを消去し、主ページ内の最初の空のエントリ内にデータ構造を記憶することをさらに含む、前の例のいずれか1つに記載の方法。
【0052】
例11:フラッシュメモリの2つ以上のページのうちの主ページからデータを読み取ることをさらに含み、読み取ることは、2つ以上のページのうちの主ページ内の最後の有効なエントリを決定することと、主ページ内の最後の有効なエントリ内に記憶されるデータ構造の表示を出力することとを含む、前の例のいずれか1つに記載の方法。
【0053】
例12:フラッシュメモリの2つ以上のページのうちの1つのページ内にデータを記憶することは、セキュアブートプロセスの一部として実施される、前の例のいずれか1つに記載の方法。
【0054】
例13:フラッシュメモリの2つ以上のページのうちの1つのページ内にデータを記憶することは、ページを付加専用ページとして利用する、前の例のいずれか1つに記載の方法。
【0055】
例14:2つ以上のページを含むフラッシュメモリと、前の例のいずれか1つに記載の方法を実行するように構成されるフラッシュ信頼性マネージャとを備えるシステム。
【0056】
例15:少なくとも1つのプロセッサによって実行されるときに少なくとも1つのプロセッサに前の例のいずれか1つに記載の方法を実行するよう指示するプロセッサ実行可能命令を記憶する少なくとも1つのコンピュータ可読記憶媒体を備える装置。装置は、フラッシュメモリと少なくとも1つのプロセッサとをさらに備えてもよい。
【0057】
信頼できるフラッシュストレージの態様は、特徴および/または方法に特有の言語で説明されているが、添付の特許請求の範囲の主題は、必ずしも記載された特定の特徴または方法に限定されるわけではない。むしろ、特定の特徴および方法は、特許請求の範囲に記載される信頼できるフラッシュストレージの実装例として開示されており、他の同等の特徴および方法は、添付の特許請求の範囲内にあることが意図される。さらに、さまざまな態様が説明されており、説明される各態様は、独立して、または1つまたは複数の他の説明される態様と関連して実装され得ることが理解されるべきである。
【0058】
文脈で別段の指示がない限り、本明細書での「または」という単語の使用は、「包括的または」、あるいは「または」という単語によって関連付けられる1つまたは複数の項目の包含または適用を許可する用語の使用とみなされ得る(たとえば、「AまたはB」という語句は、「A」のみを許可するもの、「B」のみを許可するもの、または「A」と「B」の両方を許可する)ものとして解釈され得る。また、本明細書で使用される場合、項目のリストの「少なくとも1つ」を指す語句は、単一の部材を含めて、それらの項目の任意の組合せを指す。たとえば、「a、b、またはcの少なくとも1つ」は、a、b、c、a-b、a-c、b-c、およびa-b-cだけでなく、複数の同じ要素との任意の組み合わせ(たとえば、a-a、a-a-a、a-a-b、a-a-c、a-b-b、a-c-c、b-b、b-b-b、b-b-c、c-c、およびc-c-c、またはa、b、およびcの任意の他の順序)もカバーし得る。さらに、添付の図に表される項目および本明細書で論じられる用語は、1つまたは複数の項目または用語を示す場合があり、したがって、この書かれた明細書本文では単一または複数の形式の項目および用語を互換的に参照することができる。信頼できるフラッシュストレージの実装は、特定の機能および/または方法に特有の言語で説明されているが、添付の特許請求の範囲の主題は、必ずしも記載された特定の機能または方法に限定されるわけではない。むしろ、特定の機能および方法は、信頼できるフラッシュストレージの実装例として開示される。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
【手続補正書】
【提出日】2024-07-10
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
フラッシュメモリ内の2つ以上のページのうちの1つのページ内にデータを記憶することを含み、前記記憶することは、
前記フラッシュメモリの前記2つ以上のページのうちの主ページを決定することと、
前記主ページの最初の空のエントリを決定することと、
前記主ページの前記最初の空のエントリ内にデータ構造を記憶することと、
を含む方法。
【請求項2】
フラッシュメモリ内の前記2つ以上のページのうちの前記1つのページ内に前記データを記憶することは、
前記フラッシュメモリの前記2つ以上のページのうちの主ページを決定した後、前記主ページが満杯かどうかを決定することと、
前記主ページが満杯であるとの決定に応じて、前記2つ以上のページのうちの他のページを消去することと、
前記データ構造を前記他のページにおける最初の空のエントリ内に記憶することと、
前記他のページを前記主ページとして選択することと、
を含む、請求項1に記載の方法。
【請求項3】
前記データ構造を前記主ページ内の前記最初の空のエントリ内に記憶することは、
前記データ構造の有効性を示すために、前記データ構造のダイジェストまたは識別子を含む前記データ構造の1つまたは複数のフィールドを設定することと、
以前のエントリを、前記以前のエントリ内に記憶されるデータ構造のフィールドを変更することによって無効状態に設定することと、
を含む、請求項1記載の方法。
【請求項4】
前記以前のエントリを前記無効状態に設定することは、
前記以前のエントリ内に記憶される前記データ構造の識別子フィールドを、ゼロ値または前記無効状態を示すように構成される他のゼロ以外の所定値に変更すること、
を含む、請求項3に記載の方法。
【請求項5】
前記データ構造がカウンタフィールドを含み、
前記データ構造を記憶することは、
前記データ構造の前記カウンタフィールドを、以前のエントリ内に記憶される他のデータ構造のカウンタフィールドの値からの増分値として設定すること、または
前記以前のエントリが存在しないとの決定に応じて、前記データ構造の前記カウンタフィールドをデフォルト値として設定すること、
を含む、請求項1記載の方法。
【請求項6】
前記主ページを決定することは、
フラッシュメモリの前記2つ以上のページのうちの第1のページ内の第1の有効なエントリを決定することと、
フラッシュメモリの前記2つ以上のページのうちの少なくとも1つの第2のページ内の少なくとも1つの第2の有効なエントリを決定することと、
前記第1の有効なエントリ内に記憶されるデータ構造と、前記少なくとも1つの第2の有効なエントリ内に記憶される少なくとも1つのデータ構造とのそれぞれのカウンタフィールドの比較に基づいて、前記フラッシュメモリの前記主ページを決定することと、
を含む、請求項5に記載の方法。
【請求項7】
フラッシュメモリの前記2つ以上のページの各ページは、各ページの状態を記憶するために使用されるそれぞれの状態フィールドを含み、
前記2つ以上のページ内の前記主ページを決定することは、
前記2つ以上のページの各ページの前記それぞれの状態フィールドに基づいて、最初の主ページを前記主ページとして決定することと、
前記最初の主ページが空のエントリを含むかどうかを決定することと、
前記最初の主ページが空のエントリを含まないとの決定に応じて、前記2つ以上のページのうちの前記最初の主ページとは異なる他のページを前記主ページとして決定することと、
を含む、請求項1記載の方法。
【請求項8】
前記状態フィールドは、第1の値、または前記第1の値とは異なる第2の値のいずれかを記憶する、請求項7に記載の方法。
【請求項9】
前記他のページを前記主ページとして決定することに応じて、前記他のページの前記状態フィールドを変更して、前記他のページをフラッシュメモリの前記2つ以上のページのうちの前記主ページとして示すことをさらに含む、請求項7記載の方法。
【請求項10】
前記他のページを前記主ページとして決定することに応じて前記他のページを消去し、前記主ページ内の前記最初の空のエントリ内に前記データ構造を記憶することをさらに含む、請求項9に記載の方法。
【請求項11】
前記フラッシュメモリの前記2つ以上のページのうちの前記主ページからデータを読み取ることをさらに含み、前記読み取ることは、
前記2つ以上のページのうちの前記主ページ内の最後の有効なエントリを決定することと、
前記主ページ内の前記最後の有効なエントリ内に記憶されるデータ構造の表示を出力することと、
を含む、請求項1記載の方法。
【請求項12】
前記フラッシュメモリの前記2つ以上のページのうちの前記1つのページ内に前記データを記憶することは、セキュアブートプロセスの一部として実施される、請求項1記載の方法。
【請求項13】
前記フラッシュメモリの前記2つ以上のページのうちの前記1つのページ内に前記データを記憶することは、前記2つ以上のページを付加専用ページとして利用する、請求項1記載の方法。
【請求項14】
2つ以上のページを含むフラッシュメモリと、
前記フラッシュメモリに動作可能に結合され、請求項1~13のいずれか1項に記載の方法を実行するように構成されるフラッシュ信頼性マネージャと、
を備えるシステム。
【請求項15】
フラッシュメモリと、
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサによって実行されるときに、前記少なくとも1つのプロセッサに請求項1~13のいずれか1項に記載の方法を実行するよう指示するプロセッサ実行可能命令を記憶する少なくとも1つのコンピュータ可読記憶媒体と、
を備える装置。
【国際調査報告】