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

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

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

<>
  • 特表-メモリ保護データを使用すること 図1
  • 特表-メモリ保護データを使用すること 図2
  • 特表-メモリ保護データを使用すること 図3
  • 特表-メモリ保護データを使用すること 図4
  • 特表-メモリ保護データを使用すること 図5
  • 特表-メモリ保護データを使用すること 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-02-16
(54)【発明の名称】メモリ保護データを使用すること
(51)【国際特許分類】
   G06F 21/60 20130101AFI20240208BHJP
   G06F 12/02 20060101ALI20240208BHJP
   G06F 21/64 20130101ALI20240208BHJP
【FI】
G06F21/60 340
G06F12/02 510A
G06F21/64
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023548590
(86)(22)【出願日】2021-02-16
(85)【翻訳文提出日】2023-10-05
(86)【国際出願番号】 US2021018231
(87)【国際公開番号】W WO2022177549
(87)【国際公開日】2022-08-25
(81)【指定国・地域】
(71)【出願人】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】リ,ヤンル
(72)【発明者】
【氏名】スリラマギリ,ディープティ・ビジャヤラクシミ
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AA13
(57)【要約】
本開示は、コンピューティングデバイス(102)内でメモリ保護データ(124、126)を使用することを対象とした技法および装置について説明する。技法は、アプリケーションデータ(124)および保護データ(126)を記憶するためにメモリ(122)の領域(208、210、302、304)を割り当てるステップを含む。技法は、割り当てられた領域(208、210、302、304)内のメモリブロックに対応するビット値を有するビットマップ(130)を作成するステップも含む。1つまたは複数のビット値は、アプリケーションデータ(124)および/または保護データ(126)がメモリブロック内に存在するかどうかを示すことができる。技法および装置は、メモリセキュリティ(例えば、暗号化)およびメモリ安全性(例えば、誤り訂正符号(ECC)の使用)などのメモリ保護を、不連続なメモリ割り当てを許容しながら、かつ、オペレーティングシステムを大幅に変更することなく、効率的に使用することを可能にすることができる。
【特許請求の範囲】
【請求項1】
コンピューティングデバイス(102)によって実行される方法(600)であって、前記方法(600)は、
メモリ(122)の複数の領域(208、210、302、304)を割り当てるステップ(602)であって、少なくとも1つの割り当てられた領域(208、210、302、304)が、アプリケーションデータ(124)および保護データ(126)を記憶するためのものである、ステップと、
メモリブロックが前記アプリケーションデータ(124)または前記保護データ(126)のうちの少なくとも一方を含むことを示すビット値を含む、ビットマップ(130)を作成するステップ(604)であって、前記少なくとも1つの割り当てられた領域(208、210、302、304)が前記メモリブロックを含む、ステップと、
前記保護データ(126)を用いて前記アプリケーションデータ(124)を保護するステップ(606)とを含み、前記保護するステップは、前記メモリブロックが前記アプリケーションデータ(124)または前記保護データ(126)のうちの少なくとも一方を含むことを示すために前記ビットマップ(130)の前記ビット値を使用することを含む、方法(600)。
【請求項2】
前記割り当てられた複数の領域のうち別個の領域内に前記アプリケーションデータおよび前記保護データを配置することによって、前記アプリケーションデータおよび前記保護データを記憶するステップをさらに含み、前記別個の領域は、前記メモリの断片化された領域を含む、請求項1に記載の方法。
【請求項3】
前記保護データを含む第1の別個の領域の物理アドレスは、前記アプリケーションデータを含む第2の別個の領域の物理アドレスに基づく1つまたは複数のオフセットを使用して決定可能である、請求項2に記載の方法。
【請求項4】
割り当てられた領域内に前記アプリケーションデータおよび前記保護データを併置することによって、前記アプリケーションデータおよび前記保護データを記憶するステップをさらに含む、請求項1に記載の方法。
【請求項5】
前記割り当てられた領域内に前記アプリケーションデータおよび前記保護データを併置するステップは、前記アプリケーションデータおよび前記保護データを複数のメモリブロックにわたってインターリーブすることを含む、請求項4に記載の方法。
【請求項6】
前記割り当てられた領域内に前記アプリケーションデータおよび前記保護データを併置するステップは、前記アプリケーションデータおよび前記保護データを前記メモリの複数のチャネルにわたってインターリーブすることを含む、請求項4に記載の方法。
【請求項7】
前記メモリブロックは、前記メモリのページに対応する、請求項1から6のいずれか1項に記載の方法。
【請求項8】
前記アプリケーションデータを保護するステップは、前記保護データおよび前記アプリケーションデータを使用して、誤り訂正符号(ECC)アルゴリズム、アンチロールバックカウンタ(ARC)アルゴリズム、データ暗号化アルゴリズム、またはハッシュアルゴリズムのうちの少なくとも1つを実行することを含む、請求項1から7のいずれか1項に記載の方法。
【請求項9】
コンピュータ実行可能命令(108、110、112、114)を含む、コンピュータ可読記憶媒体(104)であって、前記コンピュータ実行可能命令(108、110、112、114)が、コンピューティングデバイス(102)によって実行されたときに、前記コンピューティングデバイス(102)に、先行する請求項のいずれか1項に記載の方法を実施させる、コンピュータ可読記憶媒体(104)。
【請求項10】
1つまたは複数の中央処理装置(116)と、
請求項9に記載のコンピュータ可読記憶媒体(104)と
を備える、コンピューティングデバイス(102)。
【請求項11】
コンピューティングデバイス(102)であって、
メモリ(122)と、
中央処理装置(116)と、
保護エンジン(118)と、
コンピュータ可読記憶媒体(104)とを備え、前記コンピュータ可読記憶媒体(104)は、実行可能コード(108、110、112、114)の1つまたは複数のモジュールを記憶し、前記1つまたは複数のモジュールは、前記中央処理装置(116)による実行時に、前記コンピューティングデバイス(102)に、
アプリケーションデータ(124)および保護データ(126)を記憶するための前記メモリ(122)の量を計算する動作(504)、
前記計算された量を提供するために前記メモリ(122)の1つまたは複数の領域(208、210、302、304)を割り当てる動作(508)、
前記メモリ(122)の少なくとも一部分のビットマップ(130)を作成する動作(520)であって、前記ビットマップが、前記割り当てられた領域(208、210、302、304)の1つまたは複数のメモリブロックが前記アプリケーションデータ(124)または前記保護データ(126)のうちの少なくとも一方を含むことを示すビット値を含む、動作、ならびに
前記ビットマップ(130)を前記保護エンジン(118)にプロビジョニングする動作
を実行するように指示する、コンピューティングデバイス(102)。
【請求項12】
前記保護エンジンはロジックを含み、前記ロジックは、
物理アドレスを含むメモリトランザクションコマンドを受信するように構成され、前記物理アドレスは、前記メモリの前記割り当てられた領域内のメモリブロックに対応し、前記ロジックはさらに、
前記ビットマップを使用して、前記メモリブロックが前記アプリケーションデータまたは前記保護データのうちの少なくとも一方を記憶していると判定し、
前記判定に基づいて、前記メモリブロックを用いて前記メモリトランザクションコマンドを実行するように構成される、請求項11に記載のコンピューティングデバイス。
【請求項13】
前記保護エンジンは、前記メモリに記憶された前記アプリケーションデータおよび/または前記保護データにメモリコントローラを介してアクセスするように構成される、請求項11または12に記載のコンピューティングデバイス。
【請求項14】
前記コンピューティングデバイスのハードウェアの1つまたは複数の要素は、アドレスを操作して前記アプリケーションデータと前記保護データとを同じ領域の中に組み合わせるように構成される、請求項11から13のいずれか1項に記載のコンピューティングデバイス。
【請求項15】
前記メモリは、ダブルデータレートランダムアクセスメモリ(DDR RAM)を含む、請求項11から14のいずれか1項に記載のコンピューティングデバイス。
【請求項16】
前記中央処理装置と、前記保護エンジンと、実行可能コードの前記1つまたは複数のモジュールを記憶する前記コンピュータ可読記憶媒体とは、システムオンチップ(SoC)集積回路デバイス上に含まれる、請求項11から15のいずれか1項に記載のコンピューティングデバイス。
【請求項17】
前記保護エンジンは、少なくとも前記ビットマップのコピーを記憶するように構成されたオンチップキャッシュを含む、請求項11から16のいずれか1項に記載のコンピューティングデバイス。
【発明の詳細な説明】
【背景技術】
【0001】
背景
セキュリティおよび機能安全性は、コンピューティングデバイスの重要な設計上の考慮事項である。コンピューティングデバイスの設計は、例えば、データ暗号化アルゴリズム、ハッシュアルゴリズム、アンチロールバックカウンタ(ARC:anti-rollback counter)アルゴリズムを実行するハードウェアを使用して、セキュリティを向上させることができる。同様に、コンピューティングデバイスの設計は、機能安全性を向上させるために、誤り訂正符号(ECC:error correction code)アルゴリズムを実行するハードウェアを使用してもよい。メモリ保護技法は、一般に、メモリに記憶され、コンピューティングデバイスのハードウェアによってアクセス可能なアプリケーションデータの完全性を保証するために、保護データを使用し得る。
【0002】
既存のメモリ保護技法は、メモリの容量および/またはコンピューティングデバイスのメモリとのトランザクション帯域幅の観点から、オーバーヘッドに影響を与える可能性がある。例えば、ハッシュアルゴリズムが検証すべきアプリケーションデータの64バイトごとに、メモリ内容のハッシュダイジェストを記憶するために2バイトが消費され得る。同様に、ECCアルゴリズムがチェックおよび/または修正すべきアプリケーションデータの64バイトごとに、メモリ内容のECCシンドロームを記憶するために2バイトが消費され得る。一般に、アプリケーションデータと保護データとのサイズ比は、所望の保護強度に依存する場合がある。
【0003】
いくつかの事例において、コンピューティングデバイスの設計は、ハッシュダイジェストおよび/またはECCシンドロームデータなどの保護データを採用するために、メモリの総容量の割り当てを最大20%増加させることを必要とし得る。したがって、メモリの性能に大きな影響を与えることなく保護データをコンピューティングデバイスに組み込むことは困難な場合がある。
【0004】
この背景は、本開示の内容を概略的に提示するために提供されるものである。本明細書において別段の指示がない限り、本セクションにおいて説明された材料は、本開示または添付の特許請求の範囲に対する先行技術であるとは明示的にも黙示的にも自認されない。
【発明の概要】
【課題を解決するための手段】
【0005】
概要
本開示は、コンピューティングデバイス内でメモリ保護データを使用するための技法および装置について説明する。説明される技法は、アプリケーションデータおよび保護データを記憶するためのメモリの領域を割り当てることを含む。このような技法は、割り当てられた領域内のメモリブロックがアプリケーションデータおよび/または保護データを含むかどうかを示すビットマップを作成することも含む。技法および装置は、メモリ消費量を減少させることおよび/またはコンピューティングデバイス内のメモリトランザクションを簡素化することによって、メモリオーバーヘッドを削減することができる。
【0006】
いくつかの態様において、コンピューティングデバイスによって実行される方法が説明される。方法は、アプリケーションデータおよび保護データを記憶するためにメモリの領域を割り当てるステップと、メモリブロックがアプリケーションデータまたは保護データのうちの少なくとも一方を含むことを示すビット値を含むビットマップを作成するステップとを含む。方法はまた、保護データを用いてアプリケーションデータを保護するステップを含み、保護するステップは、メモリブロックがアプリケーションデータまたは保護データのうちの少なくとも一方を含むことを示すためにビット値を使用することを含む。
【0007】
他の態様において、コンピューティングデバイスが説明される。コンピューティングデバイスは、メモリ、中央処理装置(CPU)、保護エンジン、およびコンピュータ可読記憶媒体(CRM)を含む。CRMは、CPUによる実行時にコンピューティングデバイスに複数の動作を実行するように指示する実行可能コードの1つまたは複数のモジュールを含む。動作は、アプリケーションデータおよび保護データを記憶するためのメモリの量を計算することと、計算された量を提供するためにメモリの1つまたは複数の領域を割り当てることとを含む。動作は、割り当てられた領域の1つまたは複数のメモリブロックがアプリケーションデータまたは保護データのうちの少なくとも一方を含むことを示すビット値を含むメモリの少なくとも一部分のビットマップを作成することも含む。動作は、ビットマップを保護エンジンにプロビジョニングすることをさらに含む。
【0008】
添付の図面および以下の説明には、1つまたは複数の実装形態の詳細が記載されている。説明、図面、および特許請求の範囲から他の特徴および利点が明らかになろう。したがって、この概要は、詳細な説明でさらに説明される主題を紹介するために提供される。したがって、読者は、概要が必須の特徴を説明しているとも、特許請求される主題の範囲の制限を説明しているともみなすべきではない。
【0009】
アプリケーションデータとアプリケーションデータを保護するための保護データとを含むメモリ保護データを利用する装置および技法について以下の図面を参照して説明する。図面全体を通じて、同様の特徴および構成要素に言及するために同じ番号が使用されている。
【図面の簡単な説明】
【0010】
図1】1つまたは複数の態様による、メモリ保護データを使用するコンピューティングデバイスを含む例示的な動作環境を示す図である。
図2】1つまたは複数の態様による、メモリを表す物理アドレス空間の例示的な詳細を示す図である。
図3】1つまたは複数の他の態様による、メモリを表す物理アドレス空間の他の例示的な詳細を示す図である。
図4】1つまたは複数の態様による、メモリ保護データを使用し得る例示的なシステムアーキテクチャを示す図である。
図5】1つまたは複数の態様による、メモリ保護データを使用してコンピューティングデバイス内で通信され得る計算およびメッセージの例示的な詳細を示す図である。
図6】1つまたは複数の態様による、メモリ保護データ技法を使用する例示的な方法を示す図である。
【発明を実施するための形態】
【0011】
詳細な説明
概略
本開示は、コンピューティングデバイス内でメモリ保護データを使用することを対象とした技法および装置について説明する。説明される技法は、アプリケーションデータおよび保護データを記憶するためのメモリの領域を割り当てることと、ビットマップを作成することとを含む。ビットマップは、割り当てられた領域内のどのメモリブロックがアプリケーションデータおよび/または保護データを含むかを示す。技法および装置は、メモリ消費量を減少させることおよび/またはコンピューティングデバイス内のメモリトランザクションを簡素化することによって、メモリオーバーヘッドを削減することができる。
【0012】
コンピューティングデバイスのセキュリティおよび機能安全性は、多くの場合、コンピューティングデバイスのCPUによって実行されるアプリケーションをサポートするデータの完全性に依存する。セキュリティおよび/または機能安全性を必要とし得るアプリケーションには、例えば、銀行アプリケーション、電子メールアプリケーション、(例えば、ブレーキシステムを制御する)自動車制御アプリケーションなどが含まれる。アプリケーションをサポートするデータは、一般に、コンピューティングデバイスのメモリに記憶されるが、そのコンピューティングデバイスが、悪意のあるハッキング、ソフトエラー、および磨耗による故障を含むメカニズムを通じて侵害され得る。
【0013】
データの完全性を高めることができ、またコンピューティングデバイスによって実行されているアプリケーションのセキュリティおよび/または機能安全性を向上させるのに効果的な、既存のメモリ保護戦略がある。例えば、コンピューティングデバイスのハードウェアは、データ暗号化、ハッシュ、またはARCアルゴリズムを実行して、データのセキュリティを向上させてもよい。同様に、コンピューティングデバイスのハードウェアは、ECCアルゴリズムを実行して、データの機能安全性を向上させてもよい。これらのアルゴリズムは、一般に、保護データを使用してアプリケーションデータの完全性を保証する。
【0014】
メモリシステムで保護データを採用するための既存の技法もある。しかしながら、これらの既存の技法はそれぞれ、コンピューティングデバイスの性能に悪影響を与える1つまたは複数の欠点を有する。保護データを使用するための既存の技法の第1の欠点としては、コンピューティングデバイスのメモリの容量に関してさらなるオーバーヘッドが発生することが含まれる。例えば、ある技法は、保護されるべきアプリケーションデータ用および保護データ用に実質的に連続したメモリ領域を切り出すこと(carve-out)を伴う場合がある。コンピューティングデバイスのオペレーティングシステムが多くのアプリケーション間でメモリを適切に共有できないため、連続したメモリ領域が大きいとメモリが非効率的に使用されることになる。ハッシュダイジェストデータ、ECCシンドロームデータを含み得る保護データ、およびアプリケーションデータのために連続したメモリを割り当てる事例において、既存の連続技法は、メモリ容量全体の最大20%を保護データのみに割り当てる可能性がある。
【0015】
保護データを使用するための既存の技法の第2の欠点としては、大きな連続した切り出しによる割り当てを回避するために、断片化(fragment)されたメモリ割り当てを許容する技法が含まれる。しかしながら、これらの技法は、メモリを非効率的に予約するとともに、オペレーティングシステムのメモリ管理手順への大幅な修正を伴う。例えば、この場合、アプリケーションデータ用の切り出しは断片化され得るが、保護データ用の切り出しは、メモリシステム全体をカバーする(これにより、アプリケーションデータおよび/または保護データをマッピングし得るアルゴリズムを簡素化する)ように、過大なサイズとなる。
【0016】
サイズが大きくなる理由は、これらの技法では、動作中にアプリケーションデータの実際の量が大幅に少なくなる可能性が高い場合でも、最終的にメモリ空間全体に存在し得るすべてのアプリケーションデータのための保護データを記憶するのに十分なメモリを予約するからである。任意の所与のアプリケーションデータのための保護データを配置するために、これらの技法によって保護データのための完全な予約が使用される。さらに、このような技法は、オペレーティングシステムのメモリ管理手順を修正することに依存する。これらの修正は、ページテーブルエントリで予約され得るビットを再利用して、所与のページについてアプリケーションデータが保護されているかどうかを反映すること、動作中にページ属性を適切に更新すること、およびコンピューティングデバイス内でメモリ属性を含む信号を伝播することを含む。したがって、これらの技法はまた、非標準のオペレーティングシステムを必要とし、メモリ管理手順を複雑にする可能性がある。
【0017】
保護データを使用する既存の技法の第3の欠点としては、コンピューティングデバイス内の大量のメモリトランザクションに関連するオーバーヘッドが含まれる。一例として、メモリ保護アルゴリズムの実行中、コンピューティングデバイスの保護エンジンは、第1に、ECCシンドロームデータを取り出すためにメモリにアクセスし、その後、第2の別個の動作において、チェックおよび修正すべきアプリケーションデータを取り出すためにメモリにアクセスし得る。これらの複数のメモリアクセスは、消費電力およびメモリ遅延の増加をもたらし、そのどちらも計算性能を低下させる可能性がある。
【0018】
様々な詳細レベルでの例示的な実装形態について、関連する図を参照して以下で説明する。例示的な実装形態は、(i)アプリケーションデータおよび保護データを併置しているメモリブロックを含む、アプリケーションデータまたは保護データを記憶する割り当てられたメモリ領域の1つまたは複数のメモリブロックを示すためのビットマップを作成する方法と、(ii)そのようなビットマップを利用する保護エンジンを有するコンピューティングデバイスとを含む。割り当てられたメモリ領域およびメモリブロックは、異なるサイズを有してもよい。例えば、割り当てられたメモリ領域は、ビットマップの例示的な粒度に対応する複数のメモリブロックを含んでもよい。代替として、割り当てられたメモリ領域およびメモリブロックは、メモリページのサイズ(例えば、いくつかのシステムでは4キロバイト(4KB))などの共通のサイズを有してもよい。
【0019】
一般に、連続したメモリの大きなブロックをアプリケーションデータまたは保護データに事前に割り当て得る既存の技法とは対照的に、ビットマップを使用すると、断片化可能なメモリの柔軟性のある選択可能な割り当てが可能になり、メモリ保護の実装時に使用されるメモリ容量が削減される。ビットマップを使用すると、ハードウェアはビットマップを参照して、どのメモリブロックが保護されているアプリケーションデータまたは対応する保護データを含むかを識別および管理することができるので、オペレーティングシステムのメモリマネージャに対する変更を回避することもできる。さらに、このビットマップは、十分に活用されない可能性が高い1つの過大な事前割り当てを使用する代わりに、保護データが使用されるときに保護データ用のメモリ割り当てを行うことを可能にする。さらに、連続したメモリの大きなブロックにわたる複数のメモリアクセスを必要とし得る既存の手法とは対照的に、ビットマップを使用して、断片化されたメモリの所与のメモリブロック内に併置されたメモリ保護データにアクセスすることは、動作速度を向上させ、消費電力を削減することができる。メモリ容量の使用率の削減、保護のためにメモリ部分を独立して割り当てる能力、速度の向上、消費電力の削減、および/またはオペレーティングシステムのメモリ管理プロセスの簡素化を組み合わせることにより、個別に、また共同して、メモリオーバーヘッドの全体的な削減につながる。
【0020】
以下の説明は、最初に例示的な動作環境について、続いて保護データを使用するための例示的なハードウェアおよび特徴の詳細について、続いて例示的な方法について説明し、関連する例示的な態様で締めくくる。この説明は一般に、メモリブロックを有するメモリの領域、ならびに仮想および/または物理メモリのアドレス指定に関連する技法に適用することができる。しかしながら、明確さ、一貫性、および簡潔さのために、説明は、(必要に応じて仮想アドレス空間からの変換後の)物理アドレス空間を使用してアクセスされるメモリのページのコンテキストに提示される。
【0021】
例示的な動作環境
図1は、メモリデータ保護技法を使用するコンピューティングデバイス102を含む例示的なオペレーティング環境100を示す。コンピューティングデバイス102は、ラップトップコンピュータとして示されているが、デスクトップコンピュータ、サーバ、ウェアラブルデバイス、モノのインターネット(IoT)デバイス、エンターテイメントデバイス、自動運転システム(ADS:automated driving system)デバイス、ホームオートメーションデバイス、他の電子デバイスなどとすることができる。
【0022】
コンピューティングデバイス102は、コンピュータ可読記憶媒体(CRM)104と、ハードウェア106とを含む。この説明の文脈において、コンピューティングデバイス102のCRM104は、一過性の信号または搬送波を含まないハードウェアベースの記憶媒体である。一例として、CRM104は、読み取り専用メモリ(ROM)、フラッシュメモリ、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、ディスクドライブ、磁気媒体などのうちの1つまたは複数を含んでもよい。CRM104は、一般に、以下に説明するように、ハードウェア106によって実行可能なソフトウェアおよび/またはドライバの集合体を記憶してもよい。
【0023】
CRM104は、実行可能なコードまたは命令を含む1つまたは複数のモジュールを記憶してもよい。例えば、CRM104は、アプリケーション108、オペレーティングシステム(O/S)カーネル110、仮想マシンモニタ(VMM)112、および保護ドライバ114を記憶してもよい。ハードウェア106は、CPU116、保護エンジン118、メモリコントローラ120、およびメモリ122を含んでもよい。いくつかの事例において、CRM104の1つまたは複数の部分およびハードウェア106の1つまたは複数の要素は、システムオンチップ(SoC)ICデバイスなどの単一の集積回路(IC)デバイス上に組み合わされてもよい。いくつかの実装形態において、CRM104は、ドライバ、OSモジュール、またはハードウェア106上で実行される他のソフトウェアの集合体を記憶することができる。したがって、このソフトウェアは、例えば、アプリケーション108、O/Sカーネル110、VMM112、および/または保護ドライバ114を含むことができる。
【0024】
CRM104内に記憶されるアプリケーション108は、セキュリティおよび/または機能安全性が望まれるアプリケーションであってもよい。アプリケーション108の例には、銀行アプリケーション、決済アプリケーション、電子メールアプリケーション、自動車制御アプリケーション(例えば、ブレーキシステムアプリケーション)などが含まれる。
【0025】
O/Sカーネル110は、コンピューティングデバイス102内のハードウェア106の要素(例えば、CPU116、保護エンジン118、またはメモリコントローラ120)がメモリ122とデータをトランザクション処理する(例えば、メモリからデータを読み取る、またはメモリへデータを書き込む)ことを可能にする実行可能コードを含んでもよい。実行時、コンピューティング動作のためにメモリ122内のページを割り当てることの一部として、O/Sカーネル110は、メモリ122の1つまたは複数の部分(例えば、メモリ122内のページ)の物理アドレスを識別してもよい。代替として、O/Sカーネル110は、仮想メモリアドレスを識別し、別のモジュールまたは物理構成要素(例えば、仮想メモリマネージャ(明示的には図示せず)、メモリコントローラ120、または保護エンジン118)が、対応する物理アドレスを計算することを許容してもよい。
【0026】
VMM112は、ハイパーバイザと呼ばれることもあり、コンピューティングデバイス102内の1つまたは複数のオペレーティングシステムと対話してもよい。いくつかの事例において、VMM112は、メモリ保護データを使用する1つまたは複数の技法の対象となるメモリ122の量を算出するための実行可能コードを含んでもよい。
【0027】
保護ドライバ114はまた、実行可能コードを含んでもよい。保護ドライバ114は、保護エンジン118へのデータのプロビジョニング、保護エンジン118へのビットマップのプロビジョニング、または保護エンジン118との他の通信を可能にしてもよい。このようなデータには、例えば、メモリ保護データを含むメモリ122内のページの物理アドレス、またはメモリ保護データを含むメモリ122内のページに対応するビットマップが含まれることがある。
【0028】
CPU116は、CRM104のモジュールの命令またはコードを実行するためのロジックを含んでもよい。CPU116は、シリコン、ポリシリコン、high-K誘電体、銅などの様々な材料で構成されるシングルコアプロセッサまたはマルチコアプロセッサを含んでもよい。CPU116は、モジュール(例えば、アプリケーション108、O/Sカーネル110、VMM112、保護ドライバ114)のうちの1つまたは複数を実行することによって、メモリ保護データを使用して動作を実行するようにコンピューティングデバイス102に指示してもよい。
【0029】
保護エンジン118は、メモリコントローラ120に通信可能に結合してもよく、メモリ122を用いたメモリ保護データのトランザクション(例えば、読み取り、書き込み)を通じて1つまたは複数の保護アルゴリズム(例えば、データ暗号化、ハッシュ、ARC、ECC)を実行するためのロジックを含んでもよい。
【0030】
いくつかの事例において、保護エンジン118はオンチップキャッシュを含んでもよい。以下でより詳細に説明するメモリ保護データ技法の一部としてオンチップキャッシュを使用して、ページの物理アドレスのコピーもしくはビットマップのコピー、またはビットマップの一部分のコピーを記憶してもよい。いくつかの事例において、記憶動作は、オンチップキャッシュのサイズおよび/またはキャッシュラインサイズに依存する場合がある。
【0031】
メモリ122は、ICデバイスから形成されてもよく、ダイナミックランダムアクセスメモリ(DRAM)メモリ、ダブルデータレートDRAM(DDR DRAM)メモリ、フラッシュメモリ(例えば、NOR、NAND)、スタティックランダムアクセスメモリ(SRAM)など、あるタイプのメモリを含んでもよい。いくつかの事例において、メモリ122は、デュアルインラインメモリモジュール(DIMM)などのメモリモジュールの一部であってもよい。他の事例において、メモリ122は、個別のICデバイスであるか、または別のICデバイス(例えば、SoC ICデバイス)上に埋め込まれてもよい。いくつかの実装形態において、メモリ122は、CRM104の少なくとも一部分を含んでもよい。追加として、または代替として、CRM104内に記憶されたコードまたはデータの少なくとも一部は、ハードウェア106による実行または操作のためにメモリ122内にコピーされてもよい。
【0032】
メモリ保護データ技法は、少なくとも最初はCRM104に記憶され得るコードまたはデータによって実行され、ハードウェア106は、メモリ保護データ(例えば、アプリケーション108に関連付けられ得るアプリケーションデータ124、および対応するアプリケーションデータ124のハッシュダイジェストデータ、ECCシンドロームデータなどを含み得る保護データ126)のためにメモリ122のそれぞれのページを割り当てることを含んでもよい。ページを割り当てる際、CRM104およびハードウェア106は、メモリ122内のページの物理アドレスにマッピングされる物理アドレス空間128に依存してもよい。いくつかの事例において、メモリ保護データ技法のサポートとして、CRM104、およびハードウェア106の1つまたは複数の要素(例えば、CPU116、保護エンジン118、またはメモリコントローラ120のうちの1つまたは複数)は、メモリ保護データ(例えば、アプリケーションデータ124または保護データ126、その両方を含む)の物理アドレスを操作して、メモリ保護データを同じページに結合してもよい。この操作は、データの物理的位置を調整するために、アドレスをマッピング/再マッピングすること、物理アドレスをメモリ122のチャネル、行、バンク、または列に変換することなどを含んでもよい。このような事例において、この操作は、メモリページの競合を回避する場合がある。
【0033】
これらの技法はまた、ビットマップ130のためにメモリ122のそれぞれのページを割り当てること、およびビットマップ130の1つまたは複数の対応するビットを更新することを含んでもよい。ビットマップ130は、メモリ保護データ(例えば、アプリケーションデータ124または保護データ126)を記憶するために割り当てられたメモリ122内のページを示してもよい。例えば、VMM112のアルゴリズムは、メモリ保護データを記憶するために割り当てられたメモリ122のページの物理アドレスにビット値「1」を関連付けることによってビットマップ130を作成してもよい。相補的に、VMM112のアルゴリズムは、メモリ保護データを記憶するために割り当てられていないメモリ122の他のページの物理アドレスにビット値「0」を関連付けてもよい。したがって、ビットマップ130の少なくとも1つのビットは、メモリ122のメモリブロックに対応してもよい。場合によっては、メモリブロックは、メモリのページと同じサイズを有することがある。
【0034】
メモリ保護エンジン118は、メモリ122のページの物理アドレスのシステムビューを含む、アプリケーションデータ124についてのメモリトランザクションコマンドを受信してもよい。次いで、保護エンジン118は、物理アドレスを、アプリケーションデータ124の物理アドレスを保護データ126に必要な量だけオフセットする操作された物理アドレスに変換してもよい。保護エンジン118は、ビットマップ130を使用して、ページがメモリ保護データ(例えば、アプリケーションデータ124および/または保護データ126のうちの1つまたは複数)を記憶していると判定し、判定に基づいて、ページを用いてメモリトランザクションコマンドを実行してもよい。しかしながら、ビットマップ130は、代わりに、ページがメモリ保護データ(例えば、アプリケーションデータ124および/または保護データ126)を記憶しているかどうかを示すために、ページの物理アドレスのシステムビューをマッピングしてもよい。
【0035】
以下により詳細に説明するように、アプリケーションデータ124、保護データ126、およびビットマップ130を使用するメモリ保護データ技法は、アプリケーションデータ124のセキュリティおよび/または機能安全性を保証する機能をコンピューティングデバイス102が実行する際に生じるメモリオーバーヘッドを削減する場合がある。このメモリオーバーヘッドの削減は、例えば、メモリ122のより効率的な使用および全体的な計算速度の向上という点において、コンピューティングデバイス102の全体的な効率を向上させることができる。
【0036】
例示的なハードウェアおよび機能の詳細
図2は、1つまたは複数の態様によるメモリを表す物理アドレス空間の例示的な詳細200を示す。物理アドレス空間は、図1のメモリ122内のページの物理的位置をマッピングする物理アドレス空間128に対応してもよい。図2はまた、アプリケーションデータ124および保護データ126が、(例えば、「混合マッピング」を使用して)メモリ122内で断片化された1つまたは複数のページ内に併置され得ることを示している。図2の例示的な詳細200によれば、メモリ保護データ技法は、メモリ122の使用量を減らし、必要なトランザクションを少なくし、それによってメモリのオーバーヘッドの削減を実現するとともに、オペレーティングシステムのメモリ管理手順への変更が必要になる事態を回避することができる。
【0037】
一般に、メモリ122のアーキテクチャは、1つまたは複数のチャネル202を含んでもよい。さらに、メモリ122内のページは、物理アドレス空間128の物理アドレス204を使用して識別されてもよい。図1のコンピューティングデバイス102の要素(例えば、CRM104およびハードウェア106の要素)は、物理アドレス空間128の物理アドレス204を使用してメモリ保護データ(例えば、アプリケーションデータ124および/または保護データ126)を記憶するためにメモリ122の領域(例えば、ページなどのデータ範囲)を割り当ててもよい。
【0038】
メモリ保護データ技法は、メモリ122内で断片化された(例えば、連続していない)ページを使用してもよい。例えば、図2に図示されているように、ページ206およびページ208はそれぞれ、異なる順列(permutation)のアプリケーションデータ124および保護データ126を収容してもよい。しかしながら、図示されているように、ページ206およびページ208はページ210によって分離されており、したがって断片化されている。
【0039】
メモリ保護データ技法はまた、メモリ122の1つまたは複数のページ内でアプリケーションデータ124および保護データ126の一部を併置してもよい。さらに、アプリケーションデータ124および保護データ126を併置することに関連するトランザクションは、複数のメモリブロック(例えば、ページ)および/またはメモリ122の1つまたは複数のチャネル202にわたってインターリーブすることを含んでもよい。アプリケーションデータ124および保護データ126はさらに、アプリケーションデータ124および対応する保護データ126がメモリ122の同じバンク、同じ行などの中に併置され得るようにインターリーブされてもよく、これにより、保護データ126にアクセスするときに生じ得るページ競合が削減される。
【0040】
いくつかの事例において、ビットマップ130用に割り当てられるメモリ122のページは連続していてもよい。例えば、図2に図示されているように、ビットマップ130の記憶のためにページ212およびページ214が割り当てられてもよい。図示されているように、ページ212およびページ214は互いに隣接しており、したがって連続している。
【0041】
アプリケーションデータ124、保護データ126、およびビットマップ130を記憶するために割り当てられるメモリ122の量は、メモリ122のサイズおよび選択された断片化の粒度に依存してもよい。一例として、メモリ122が4ギガバイト(GB)メモリに対応し、割り当て粒度として4キロバイト(KB)のページサイズが選択された場合、利用可能な断片化されたページごとに1ビット(例えば、利用可能な4GBメモリ内の各4KBページ当たり1ビット)がビットマップ130用に割り当てられてもよい(例えば、ビットマップ130を記憶するために、利用可能な4GBメモリのうちの1MBの連続したメモリ量が割り当てられ得る)。要求が受信されたとき、残りの利用可能な4GBのメモリのうち任意の量の断片化されたメモリが、保護対象のアプリケーションのアプリケーションデータ124または保護データ126を記憶するために割り当てられてもよい。保護の対象ではない他のアプリケーションのアプリケーションデータ用にも、一定量の断片化されたメモリが割り当てられてもよい。特別に大きな連続領域を予約する必要はない。
【0042】
図2の図および説明によれば、アプリケーションデータ124および保護データ126を記憶するために割り当てられたページの断片化は、メモリ保護データ動作を実行している間にコンピューティングデバイス102が消費するメモリ122の量を減少させることによってメモリのオーバーヘッドを削減することができる。上述した例示的な断片化技法を使用して、メモリデータ保護(例えば、ECC保護)を有効にすると、(例えば、メモリ122の1MBよりもわずかに多い)ビットマップ130のためにメモリ122の1MBおよび保護データ126のためにメモリ122の0.03MBを割り当てることができる。対照的に、メモリ122のサイズに基づいてメモリ保護データのためにメモリを比例的に割り当てる他の技法は、保護データのためにメモリ122の128MBを割り当てる可能性がある。
【0043】
図2によって説明される技法は、一般に、メモリ保護データ動作を実行している間にコンピューティングデバイスが消費する保護データ126の量を減少させることによってメモリオーバーヘッドを削減する。さらに、一般に、アプリケーションデータ124および保護データ126をそれぞれのページ内(例えば、それぞれのチャネル、バンク、または行)に併置すると、コンピューティングデバイス102内のメモリトランザクションが削減され、メモリオーバーヘッドのさらなる削減につながる可能性がある。
【0044】
図3は、1つまたは複数の他の態様による物理アドレス空間の他の例示的な詳細300を示す。物理アドレス空間は、図1のメモリ122を表す物理アドレス空間128に対応してもよい。図3はまた、アプリケーションデータ124および保護データ126が、(例えば、「分離マッピング」を使用して)メモリ122内で断片化された1つまたは複数のページにわたって分離され得る事例を示している。図3の例示的な詳細300によれば、メモリ保護データ技法は、メモリ122の使用量を減らしてメモリオーバーヘッドの削減を実現し、オペレーティングシステムのメモリ管理手順への変更が必要になる事態を回避することができる。
【0045】
一般に、図2で前述したように、メモリ122のアーキテクチャは、1つまたは複数のチャネル202を含んでもよい。さらに、メモリ122内のページは、物理アドレス空間128の物理アドレス204を使用して識別されてもよい。図1のコンピューティングデバイス102の要素(例えば、CRM104およびハードウェア106の要素)は、物理アドレス空間128に従って、メモリ保護データ(例えば、アプリケーションデータ124および/または保護データ126)を記憶するためにメモリ122のページを割り当ててもよい。以下に説明するメモリ保護データ技法は、コンピューティングデバイス102内のメモリ消費量を減少させることによってオーバーヘッドを削減することができる。
【0046】
図3に図示されているように、メモリ保護データ技法は、メモリ122内で断片化された(例えば、連続していない)ページを使用してもよい。例えば、図3に図示されているように、ページ302およびページ304は分離されており、連続していない。したがって、オペレーティングシステムは、様々なアプリケーションからの複数のメモリ割り当てを効率的に管理することができる。
【0047】
しかしながら、前の図2で説明したメモリ保護データ技法とは対照的に、ページ302およびページ304は、ページ内でアプリケーションデータおよび保護データを併置しない。例えば、ページ302は、アプリケーションデータ124を収容しているが保護データ126を収容していない。逆に、ページ304は、保護データ126を収容しているがアプリケーションデータ124を収容していない。一般に、メモリ保護データを収容するページは断片化されるが、これらの実装では、ページ内にアプリケーションデータ124および保護データ126が併置されていない。
【0048】
図3のメモリ保護データ技法はまた、メモリ内で連続するページを使用してもよい。例えば、ビットマップ130を収容するページ306と308は連続している。
【0049】
前述の図2と同様に、ビットマップ130用に割り当てられる図3のメモリ122の量は、メモリ122のサイズおよび選択された断片化の粒度に依存してもよい。一例として、メモリ122が、4ギガバイト(GB)メモリに対応し、断片化が、選択された4キロバイト(KB)粒度(例えば、断片化されたページサイズ)に基づく場合、利用可能な断片化されたページごとに1ビット(例えば、利用可能な4GBメモリ内の各4KBページ当たり1ビット)がビットマップ130用に割り当てられてもよい(例えば、利用可能な4GBのうちの1MBの量がビットマップ130用に割り当てられることになる)。アプリケーション要求が受信されたときに、保護を必要とする様々なアプリケーションのアプリケーションデータ124または保護データ126を記憶するために(および、メモリデータ保護が望まれていない他のアプリケーションのアプリケーションデータ124を記憶するために)残りの利用可能なメモリのうちの任意の量の断片化されたメモリが割り当てられてもよい。特別に大きな連続領域を予約する必要はない。
【0050】
図3の図および説明によれば、アプリケーションデータ124および保護データ126を記憶するために割り当てられたページの断片化は、メモリ保護データ動作を実行している間にコンピューティングデバイス102が消費するメモリ122の量を減少させることによってメモリのオーバーヘッドを削減することができる。図2または図3にはそのように示されていないが、いくつかのコンピューティングデバイスの実装は両方の機能を含んでもよい。したがって、コンピューティングデバイスは、アプリケーションデータ124および保護データ126を併置するいくつかのメモリ割り当てと、アプリケーションデータ124および保護データ126を異なるページ、チャネル、バンク、または行に分離する他のメモリ割り当てとを含んでもよい。
【0051】
図4は、メモリ保護データを使用する技法を実行し得る例示的なシステムアーキテクチャ400を示す。システムアーキテクチャ400は、図1のCRM104およびハードウェア106の要素を使用するアーキテクチャであってもよい。
【0052】
図4のシステムアーキテクチャ400は、SoC ICデバイス402を含んでもよい。SoC ICデバイス402は、ハードウェア106の1つまたは複数の機能を実行する(例えば、CPU116、保護エンジン118、および/またはメモリコントローラ120のロジックを実行し得る)、かつ/または、CRM104を用いてデータを記憶する(例えば、アプリケーション108、O/Sカーネル110、VMM112、および/または保護ドライバ114を記憶する)ロジック集積回路およびメモリ集積回路で形成されてもよい。図示されているように、1つまたは複数の内部バス404は、SoC ICデバイスの動作要素を通信可能に結合してもよい。
【0053】
システムアーキテクチャ400はまた、メモリモジュール406を含んでもよい。メモリモジュール406は、ハードウェア106の1つまたは複数の機能を実行する(例えば、メモリ保護データをメモリ122に記憶する)メモリ集積回路を含んでもよい。例えば、メモリモジュール406は、メモリ122を含む1つまたは複数の構成要素が取り付けられたデュアルインラインメモリモジュール(DIMM)を含んでもよく、またはメモリは、パッケージオンパッケージ(PoP)低電力ダブルデータレート(DDR)(LP-DDR)メモリを使用して実現されてもよい。システムアーキテクチャ400の一部として、外部メモリバス408(例えば、エッジコネクタ、ソケット、導電性トレース)は、メモリモジュール406のメモリ122をSoC ICデバイス402のメモリコントローラ120に通信可能に結合してもよい。
【0054】
一般に、システムアーキテクチャ400は、メモリ保護データを使用することを対象とした様々な動作をサポートしてもよい。例えば、システムアーキテクチャ400は、アプリケーションデータおよび保護データ(例えば、図1図3のアプリケーションデータ124および保護データ126)を記憶することを対象としたメモリ122の量を計算すること、計算された量を提供するためにメモリ122のページ(例えば、図2のページ206およびページ208のうちの1つもしくは複数、または図3のページ302およびページ304のうちの1つもしくは複数)を割り当てること、メモリ122のビットマップ(例えば、図1図3のビットマップ130)を作成すること、ならびにビットマップを保護エンジン118にプロビジョニングすることを含む動作をサポートしてもよい。
【0055】
システムアーキテクチャ400はSoC ICデバイス402およびメモリモジュール406を含むが、CRM104およびハードウェア106の要素の多くの異なる配置が可能である。例えば、SoC ICデバイス402およびメモリモジュール406を含む構成とは対照的に、CRM104およびハードウェア106の要素は、サーバラックの異なる部分などに配置された少なくとも1つのプリント回路基板(PCB)にわたって分散され得る、個別のICダイおよび/または構成要素、システムインパッケージ(SIP)などの様々な組合せを使用してもよい。
【0056】
図5は、1つまたは複数の態様によるメモリ保護データ技法を使用してコンピューティングデバイスによって実行される動作およびコンピューティングデバイス内で通信されるメッセージの例示的な詳細500を示す。コンピューティングデバイスのCPU(例えば、図1のコンピューティングデバイス102のCPU116)は、アプリケーション108、O/Sカーネル110、VMM112、および/または保護ドライバ114を含む図1のCRM104に記憶されたモジュールのコードの実行を通じて、動作(例えば、計算)およびトランザクションを遂行してもよい。簡潔にするために、以下の図5の説明では、モジュールが動作を実行することまたはメッセージを通信することについての言及は、CPUがモジュール内に記憶された命令を実行した結果としてコンピューティングデバイスが動作を実行することまたはメッセージを通信することに対応することを理解されたい。
【0057】
メッセージ502において、アプリケーション108は、アプリケーションメモリターゲットをVMM112に通信する。メッセージ502は、アプリケーションメモリターゲットメッセージであり、アプリケーションデータを対象としたメモリの量(例えば、コンピューティングデバイスによって図1のアプリケーションデータ124を記憶することを対象としたメモリ122の第1の量)を示すパラメータを含んでもよい。
【0058】
動作504において、VMM112は、要求されたアプリケーションデータに基づいて、保護データを記憶することを対象としたメモリの量を決定する(例えば、保護データ量を計算する)。例えば、メッセージ502に含まれるパラメータは、アプリケーションデータが保護されるべきであることをVMM112に示してもよい。アプリケーションデータが保護されるべきであると判定されると、VMM112は、保護データを対象とした追加のメモリを計算してもよい(例えば、メモリ122の第2の量が、コンピューティングデバイスによって図1の保護データ126を記憶する対象となる)。次いで、VMM112は、その量を合計して(例えば、アプリケーションデータ124を対象とした第1の量と、保護データ126を対象とした第2の量とを組み合わせて)、コンピューティングデバイスがメモリ保護データを記憶する(例えば、アプリケーションデータ124および保護データ126を記憶する)ことを対象としたメモリの総量(例えば、計算されたメモリ保護データ量)を決定してもよい。
【0059】
メッセージ506において、VMM112は、O/Sカーネル110と通信する。メッセージ506は、保護要求メッセージであり、メモリ保護データ量を割り当てるよう求める、O/Sカーネル110への要求を含む。
【0060】
動作508において、O/Sカーネル110は、メモリ保護データのためにメモリの第1の組のページを割り当てる。この割り当ては、コンピューティングデバイスがメモリ保護データを記憶することを対象としたメモリの量をコンピューティングデバイスに提供する、またはそのメモリの量をコンピューティングデバイス内で予約するのに効果的である。メモリの第1の組のページを割り当てることの一部として、O/Sカーネル110は、メモリ内の断片化されたページ(例えば、図2のページ206およびページ208のうちの1つもしくは複数、または図3のページ302およびページ304のうちの1つもしくは複数)に対応する物理アドレスのリスト(例えば、物理アドレス空間128からの物理アドレス204のリスト)を作成してもよい。
【0061】
メッセージ510において、O/Sカーネル110はVMM112と通信する。メッセージ510は、保護アドレスメッセージであり、コンピューティングデバイスがメモリ保護データを記憶するために割り当てられた第1の組のページの物理アドレスのリストを含んでもよい。
【0062】
動作512において、VMM112は、ビットマップ用に予約されるべきメモリの量(例えば、図1図3のビットマップ130を対象としたメモリ122の第3の量)を計算する。ビットマップを対象としたメモリの量は、メモリ122のサイズおよびメモリ内の断片化粒度(例えば、利用可能なページの数などのメモリブロックの分量)に依存してもよい。ビットマップ用のメモリ量はまた、メモリブロック当たりのビット量に基づいてもよい。例えば、(例えば、保護された状態および保護されない状態だけではない)3つ以上の状態、またはメモリブロックの追加情報(例えば、保護のタイプまたは種類)がビットマップに保持される場合、各メモリブロックは、ビットマップの2ビット、5ビットなどに対応してもよい。各ビットまたは少なくとも1つのビットはそれぞれ、メモリのメモリブロックに対応することができる。
【0063】
メッセージ514において、VMM112はO/Sカーネル110と通信する。メッセージ514は、ビットマップ要求メッセージであり、コンピューティングデバイスがビットマップを記憶することを対象としたメモリ量を割り当てるよう求める、O/Sカーネル110への要求を含む。いくつかの事例において、ビットマップ要求メッセージは、メモリの断片化された領域ではなくメモリの連続した領域から割り当てられるべきであることを示すパラメータを含んでもよい。物理的に連続したメモリ割り当ては、ビットマップ130にアクセスする際のメモリコントローラ120の動作を簡素化することができる。
【0064】
動作516において、O/Sカーネル110は、ビットマップのためにメモリの第2の組のページを割り当てる。この割り当ては、コンピューティングデバイスがビットマップを記憶することを対象としたメモリの量をコンピューティングデバイスに提供する、またはそのメモリの量をコンピューティングデバイス内で予約するのに効果的である。メモリのページを割り当てることの一部として、O/Sカーネル110は、ビットマップ要求メッセージに含まれるパラメータに基づいて、メモリの連続した領域(例えば、図2のページ212およびページ214のうちの1つもしくは複数、または図3のページ306およびページ308のうちの1つもしくは複数)を割り当ててもよい。
【0065】
メッセージ518において、O/Sカーネル110はVMM112と通信する。メッセージ518は、ビットマップアドレスメッセージであり、コンピューティングデバイスがビットマップを記憶するために割り当てられた第2の組のページの物理アドレスを含んでもよい。
【0066】
動作520において、VMM112はビットマップ(例えば、ビットマップ130)を作成してもよい。ビットマップを作成する際、VMM112は、メッセージ510を通じて受信した物理アドレスに、メモリ保護データを記憶することが可能なページを示すための1つまたは複数のビット値を関連付けてもよい。仮想アドレス指定技法を使用し得るアプリケーション108とは異なり、VMM112は、物理メモリアドレス上で動作することができるメモリコントローラ(例えば、図1のメモリコントローラ120)による使用を可能にするために、物理アドレスを使用してビットマップを作成してもよい。
【0067】
メッセージ522において、VMM112は保護ドライバ114と通信する。メッセージ522は、ビットマップメッセージであり、ビットマップを含むかまたはビットマップへの参照を提供する。ビットマップを保護ドライバ114に通信することは、保護ドライバ114が、ビットマップおよび/またはメモリ保護データ用に割り当てられたページの物理アドレスを保護エンジン(例えば、図1の保護エンジン118)にプロビジョニングすることを可能にしてもよい。これは、いくつかの事例において、ビットマップおよび/または物理アドレスを保護エンジンのオンチップキャッシュに書き込むことを含んでもよい。保護エンジンはその後、メモリ保護データをトランザクション処理することおよび1つまたは複数のメモリ保護アルゴリズムを実行することを含むメモリ保護技法を実行してもよい。
【0068】
図5の例示的な詳細500は、メモリ保護データ技法をサポートする一連の動作(例えば、計算)およびメッセージ交換を実行するコンピューティングデバイスのCRM内のモジュールの組合せを示しているが、モジュールおよび一連の動作の組合せは、モジュールおよび/またはコンピューティングリソースの他の組合せを使用して、部分的または全体的に実行されてもよい。いくつかの事例において、モジュールの他の組合せはコンピューティングデバイスの一部でなくてもよい(例えば、コンピューティングデバイス102に通信可能に結合されたサーバの一部である別のCRMに含まれてもよい)。
【0069】
例示的な方法
図6は、1つまたは複数の態様によるメモリ保護データ技法を使用する例示的な方法600を示す。いくつかの事例において、方法600は、図1図5の態様を使用してコンピューティングデバイスによって実行されてもよい。説明される動作は、他の動作と共に、代替の順序で、完全にまたは部分的に重複する方法などで実行されてもよい。
【0070】
動作602において、コンピューティングデバイス(例えば、図5の動作508に図示されているようにO/Sカーネル110のコードを実行するCPU116)は、アプリケーションデータおよび保護データ(例えば、アプリケーションデータ124および保護データ126)を記憶するためにメモリ(例えば、メモリ122)の領域を割り当てる。いくつかの事例において、メモリの領域を割り当てることは、メモリ内で断片化されたページ(例えば、メモリ122のページ206、208、302、または304)を割り当てることを含んでもよい。他の事例において、メモリの領域を割り当てることは、連続したメモリ領域(例えば、メモリ122のページ306および308)からページを割り当てることを含んでもよい。
【0071】
動作604において、コンピューティングデバイス(例えば、図5の動作520に図示されているようにVMM112のコードを実行するCPU116)は、ビットマップ(例えば、ビットマップ130)を作成する。作成されたビットマップは、メモリブロックがアプリケーションデータまたは保護データのうちの少なくとも一方を含むことを示すビット値を含む。メモリブロックは、割り当てられた領域のうちの少なくとも1つに含まれる(例えば、メモリブロックは、ページ206、208、302、もしくは304に対応するか、またはページ206、208、302、もしくは304に含まれる)。ビットマップは、それぞれ少なくとも1つのビット値を有する複数のビットを含むことができる。割り当てられたメモリ領域の所与のメモリブロックは、ビットマップの複数のビットの少なくとも1つのビット値にそれぞれ対応する。
【0072】
動作606において、コンピューティングデバイス(例えば、保護アルゴリズムを実行する保護エンジン118)は、保護データを使用してアプリケーションデータを保護する。アプリケーションデータを保護することは、ビットマップのビット値を使用して、(例えば、少なくとも1つの割り当てられた領域の)メモリブロックがアプリケーションデータまたは保護データのうちの少なくとも一方を含むことを示す動作を含む。アプリケーションデータおよび保護データが併置されるなどいくつかの場合においては、メモリブロックは、アプリケーションデータおよび保護データの両方を含んでもよい。
【0073】
いくつかの事例において、方法600は、割り当てられた領域の別個の領域内にアプリケーションデータおよび保護データを配置すること(例えば、図3に図示されているように、ページ302にアプリケーションデータ124を配置し、ページ304に保護データ126を配置すること)によって、アプリケーションデータおよび保護データを記憶するステップをさらに含んでもよい。別個の領域は、メモリの断片化された領域であってもよい(例えば、ページ302およびページ304は、少なくとも1つの他のアプリケーションに割り当てられた1つまたは複数のページによって分離された断片化されたページである)。
【0074】
アプリケーションデータおよび保護データが別個の領域内に配置される事例では、保護データを含む第1の領域の物理アドレス(例えば、保護データ126を含むページ304の物理アドレス204)は、アプリケーションデータを含む第2の領域の物理アドレス(例えば、アプリケーションデータ124を含むページ302の物理アドレス204)からの1つまたは複数のオフセットを使用して決定可能であってもよい。このようなオフセットは、固定されていてもよく、割り当てられた領域のサイズ、アプリケーションデータ124と保護データ126とのサイズ比(例えば、アプリケーションデータ124の64バイトごとに2バイトの保護データ126)などに基づいて決定可能であってもよい。
【0075】
他の事例において、方法600は、メモリの断片化された領域であり得る少なくとも1つの割り当てられた領域内にアプリケーションデータおよび保護データを併置すること(例えば、図2に図示されているようにページ206内にアプリケーションデータ124および保護データ126を併置すること)によって、アプリケーションデータおよび保護データを記憶するステップをさらに含んでもよい。1つの割り当てられた領域は、メモリの断片化された領域(例えば、断片化されたページであるページ206のようなメモリブロック)であってもよい。
【0076】
アプリケーションデータおよび保護データが併置される事例において、アプリケーションデータおよび保護データを併置することは、アプリケーションデータおよび保護データを、それぞれのバンクまたはメモリ行を含むメモリの複数のメモリブロックおよび/またはチャネル(例えば、チャネル202)にわたってインターリーブすることを含んでもよい。
【0077】
一般に、方法600の前述の例示的な変形形態の場合、アプリケーションデータを保護するステップは、保護データおよびアプリケーションデータを使用する1つまたは複数のアルゴリズムを実行すること(例えば、そのアルゴリズムを保護エンジン118が実行すること)を含んでもよい。このようなアルゴリズムの例には、誤り訂正符号(ECC)アルゴリズム、アンチロールバックカウンタ(ARC)アルゴリズム、データ暗号化アルゴリズム、またはハッシュアルゴリズムが含まれる。
【0078】
前述の説明では、メモリ保護データを使用してコンピューティングデバイスのメモリオーバーヘッドを削減することに関する方法について説明した。これらの方法の態様は、ハードウェア(例えば、固定論理回路)、ファームウェア、ソフトウェア、またはそれらの任意の組合せで実装されてもよい。一例として、方法600で説明された1つまたは複数の動作は、1つまたは複数のプロセッサおよびCRMを有するコンピューティングデバイスによって実行されてもよい。このような事例において、CRMと連携したプロセッサは、1つまたは複数の動作を実行する固定またはハードコードされた回路、有限状態マシン、プログラムされたロジックなどを包含してもよい。
【0079】
さらに、これらの技法は、さらに分割され、組み合わされ得るなどした図1図5に示すエンティティまたは構成要素のうちの1つまたは複数を使用して実現されてもよい。したがって、これらの図は、説明された技法を採用することができる多くの可能なシステムまたは装置のうちのいくつかを示している。これらの図のエンティティおよび構成要素は、一般に、ソフトウェア、ファームウェア、ハードウェア、デバイスもしくはネットワークの全体または一部、あるいはそれらの組合せを表す。
【0080】
追加の例
例1:コンピューティングデバイスによって実行される方法であって、方法は、メモリの複数の領域を割り当てるステップであって、少なくとも1つの割り当てられた領域が、アプリケーションデータおよび保護データを記憶するためのものである、ステップと、メモリブロックがアプリケーションデータまたは保護データのうちの少なくとも一方を含むことを示すビット値を含むビットマップを作成するステップであって、少なくとも1つの割り当てられた領域がメモリブロックを含む、ステップと、保護データを用いてアプリケーションデータを保護するステップとを含み、保護するステップは、メモリブロックがアプリケーションデータまたは保護データのうちの少なくとも一方を含むことを示すためにビットマップのビット値を使用することを含む、方法。
【0081】
例2:割り当てられた複数の領域のうち別個の領域内にアプリケーションデータおよび保護データを配置することによって、アプリケーションデータおよび保護データを記憶するステップをさらに含み、別個の領域は、メモリの断片化された領域を含む、例1に記載の方法。
【0082】
例3:保護データを含む第1の別個の領域の物理アドレスは、アプリケーションデータを含む第2の別個の領域の物理アドレスに基づく1つまたは複数のオフセットを使用して決定可能である、例2に記載の方法。
【0083】
例4:割り当てられた領域内にアプリケーションデータおよび保護データを併置することによって、アプリケーションデータおよび保護データを記憶するステップをさらに含む、例1に記載の方法。
【0084】
例5:割り当てられた領域内にアプリケーションデータおよび保護データを併置するステップは、アプリケーションデータおよび保護データを複数のメモリブロックにわたってインターリーブすることを含む、例4に記載の方法。
【0085】
例6:割り当てられた領域内にアプリケーションデータおよび保護データを併置するステップは、アプリケーションデータおよび保護データを複数のメモリブロックにわたってインターリーブすることを含む、例4に記載の方法。
【0086】
例7:メモリブロックは、メモリのページに対応する、例1から6のいずれか1つに記載の方法。
【0087】
例8:アプリケーションデータを保護するステップは、保護データおよびアプリケーションデータを使用して、誤り訂正符号(ECC)アルゴリズム、アンチロールバックカウンタ(ARC)アルゴリズム、データ暗号化アルゴリズム、またはハッシュアルゴリズムのうちの少なくとも1つを実行することを含む、例1から7のいずれか1つに記載の方法。
【0088】
例9:コンピュータ実行可能命令を含む、コンピュータ可読記憶媒体であって、コンピュータ実行可能命令は、コンピューティングデバイスによって実行されたときに、コンピューティングデバイスに、先行する請求項のいずれか1項に記載の方法を実行させる、コンピュータ可読記憶媒体。
【0089】
例10:1つまたは複数の中央処理装置と、例9に記載のコンピュータ可読記憶媒体とを備える、コンピューティングデバイス。
【0090】
例11:コンピューティングデバイスであって、メモリと、中央処理装置と、保護エンジンと、コンピュータ可読記憶媒体とを備え、コンピュータ可読記憶媒体は、実行可能コードの1つまたは複数のモジュールを記憶し、1つまたは複数のモジュールは、中央処理装置による実行時に、コンピューティングデバイスに、アプリケーションデータおよび保護データを記憶するためのメモリの量を計算する動作、計算された量を提供するためにメモリの1つまたは複数の領域を割り当てる動作、メモリの少なくとも一部分のビットマップを作成する動作であって、ビットマップが、割り当てられた領域の1つまたは複数のメモリブロックがアプリケーションデータまたは保護データのうちの少なくとも一方を含むことを示すビット値を含む、動作、ならびにビットマップを保護エンジンにプロビジョニングする動作を実行するように指示する、コンピューティングデバイス。
【0091】
例12:保護エンジンはロジックを含み、そのロジックは、物理アドレスを含むメモリトランザクションコマンドを受信するように構成され、その物理アドレスは、メモリの割り当てられた領域内のメモリブロックに対応し、上記ロジックはさらに、ビットマップを使用して、メモリブロックがアプリケーションデータまたは保護データのうちの少なくとも一方を記憶していると判定し、判定に基づいて、メモリブロックを用いてメモリトランザクションコマンドを実行するように構成される、例11に記載のコンピューティングデバイス。
【0092】
例13:保護エンジンは、メモリに記憶されたアプリケーションデータおよび/または保護データにメモリコントローラを介してアクセスするように構成される、例11または例12に記載のコンピューティングデバイス。
【0093】
例14:コンピューティングデバイスのハードウェアの1つまたは複数の要素は、アドレスを操作してアプリケーションデータと保護データとを同じ領域の中に組み合わせるように構成される、例11から13のいずれか1つに記載のコンピューティングデバイス。
【0094】
例15:メモリは、ダブルデータレートランダムアクセスメモリ(DDR RAM)を含む、例11から14のいずれか1つに記載のコンピューティングデバイス。
【0095】
例16:中央処理装置と、保護エンジンと、実行可能コードの1つまたは複数のモジュールを記憶するコンピュータ可読記憶媒体とは、システムオンチップ(SoC)集積回路デバイス上に含まれる、例11から15のいずれか1つに記載のコンピューティングデバイス。
【0096】
例17:保護エンジンは、少なくともビットマップのコピーを記憶するように構成されたオンチップキャッシュを含む、例11から16のいずれか1つに記載のコンピューティングデバイス。
【0097】
コンピューティングデバイスのメモリオーバーヘッドを削減する方法でメモリ保護データを使用できるようにする装置および方法による実装について説明されているが、添付の特許請求の範囲の主題は、必ずしも説明された特定の特徴または方法に限定されるわけではない。むしろ、特定の特徴および方法は、コンピューティングデバイスのメモリオーバーヘッドを削減する方法でメモリ保護データを使用するための例示的な実装形態として開示される。
図1
図2
図3
図4
図5
図6
【手続補正書】
【提出日】2023-11-20
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
コンピューティングデバイス(102)によって実行される方法(600)であって、前記方法(600)は、
メモリ(122)の複数の領域(208、210、302、304)を割り当てるステップ(602)であって、少なくとも1つの割り当てられた領域(208、210、302、304)が、アプリケーションデータ(124)および保護データ(126)を記憶するためのものである、ステップと、
メモリブロックが前記アプリケーションデータ(124)または前記保護データ(126)のうちの少なくとも一方を含むことを示すビット値を含む、ビットマップ(130)を作成するステップ(604)であって、前記少なくとも1つの割り当てられた領域(208、210、302、304)が前記メモリブロックを含む、ステップと、
前記保護データ(126)を用いて前記アプリケーションデータ(124)を保護するステップ(606)とを含み、前記保護するステップは、前記メモリブロックが前記アプリケーションデータ(124)または前記保護データ(126)のうちの少なくとも一方を含むことを示すために前記ビットマップ(130)の前記ビット値を使用することを含む、方法(600)。
【請求項2】
前記割り当てられた複数の領域のうち別個の領域内に前記アプリケーションデータおよび前記保護データを配置することによって、前記アプリケーションデータおよび前記保護データを記憶するステップをさらに含み、前記別個の領域は、前記メモリの断片化された領域を含む、請求項1に記載の方法。
【請求項3】
前記保護データを含む第1の別個の領域の物理アドレスは、前記アプリケーションデータを含む第2の別個の領域の物理アドレスに基づく1つまたは複数のオフセットを使用して決定可能である、請求項2に記載の方法。
【請求項4】
割り当てられた領域内に前記アプリケーションデータおよび前記保護データを併置することによって、前記アプリケーションデータおよび前記保護データを記憶するステップをさらに含む、請求項1に記載の方法。
【請求項5】
前記割り当てられた領域内に前記アプリケーションデータおよび前記保護データを併置するステップは、前記アプリケーションデータおよび前記保護データを複数のメモリブロックにわたってインターリーブすることを含む、請求項4に記載の方法。
【請求項6】
前記割り当てられた領域内に前記アプリケーションデータおよび前記保護データを併置するステップは、前記アプリケーションデータおよび前記保護データを前記メモリの複数のチャネルにわたってインターリーブすることを含む、請求項4に記載の方法。
【請求項7】
前記メモリブロックは、前記メモリのページに対応する、請求項1から6のいずれか1項に記載の方法。
【請求項8】
前記アプリケーションデータを保護するステップは、前記保護データおよび前記アプリケーションデータを使用して、誤り訂正符号(ECC)アルゴリズム、アンチロールバックカウンタ(ARC)アルゴリズム、データ暗号化アルゴリズム、またはハッシュアルゴリズムのうちの少なくとも1つを実行することを含む、請求項1から7のいずれか1項に記載の方法。
【請求項9】
コンピュータ実行可能命令(108、110、112、114)を含む、コンピュータプログラム(104)であって、前記コンピュータ実行可能命令(108、110、112、114)が、コンピューティングデバイス(102)によって実行されたときに、前記コンピューティングデバイス(102)に、請求項1~8のいずれか1項に記載の方法を実施させる、コンピュータプログラム(104)。
【請求項10】
1つまたは複数の中央処理装置(116)と、
請求項9に記載のプログラムを格納するコンピュータ可読記憶媒体(104)と
を備える、コンピューティングデバイス(102)。
【請求項11】
コンピューティングデバイス(102)であって、
メモリ(122)と、
中央処理装置(116)と、
保護エンジン(118)と、
コンピュータ可読記憶媒体(104)とを備え、前記コンピュータ可読記憶媒体(104)は、実行可能コード(108、110、112、114)の1つまたは複数のモジュールを記憶し、前記1つまたは複数のモジュールは、前記中央処理装置(116)による実行時に、前記コンピューティングデバイス(102)に、
アプリケーションデータ(124)および保護データ(126)を記憶するための前記メモリ(122)の量を計算する動作(504)、
前記計算された量を提供するために前記メモリ(122)の1つまたは複数の領域(208、210、302、304)を割り当てる動作(508)、
前記メモリ(122)の少なくとも一部分のビットマップ(130)を作成する動作(520)であって、前記ビットマップが、前記割り当てられた領域(208、210、302、304)の1つまたは複数のメモリブロックが前記アプリケーションデータ(124)または前記保護データ(126)のうちの少なくとも一方を含むことを示すビット値を含む、動作、ならびに
前記ビットマップ(130)を前記保護エンジン(118)にプロビジョニングする動作
を実行するように指示する、コンピューティングデバイス(102)。
【請求項12】
前記保護エンジンはロジックを含み、前記ロジックは、
物理アドレスを含むメモリトランザクションコマンドを受信するように構成され、前記物理アドレスは、前記メモリの前記割り当てられた領域内のメモリブロックに対応し、前記ロジックはさらに、
前記ビットマップを使用して、前記メモリブロックが前記アプリケーションデータまたは前記保護データのうちの少なくとも一方を記憶していると判定し、
前記判定に基づいて、前記メモリブロックを用いて前記メモリトランザクションコマンドを実行するように構成される、請求項11に記載のコンピューティングデバイス。
【請求項13】
前記保護エンジンは、前記メモリに記憶された前記アプリケーションデータおよび/または前記保護データにメモリコントローラを介してアクセスするように構成される、請求項11または12に記載のコンピューティングデバイス。
【請求項14】
前記コンピューティングデバイスのハードウェアの1つまたは複数の要素は、アドレスを操作して前記アプリケーションデータと前記保護データとを同じ領域の中に組み合わせるように構成される、請求項11から13のいずれか1項に記載のコンピューティングデバイス。
【請求項15】
前記メモリは、ダブルデータレートランダムアクセスメモリ(DDR RAM)を含む、請求項11から14のいずれか1項に記載のコンピューティングデバイス。
【請求項16】
前記中央処理装置と、前記保護エンジンと、実行可能コードの前記1つまたは複数のモジュールを記憶する前記コンピュータ可読記憶媒体とは、システムオンチップ(SoC)集積回路デバイス上に含まれる、請求項11から15のいずれか1項に記載のコンピューティングデバイス。
【請求項17】
前記保護エンジンは、少なくとも前記ビットマップのコピーを記憶するように構成されたオンチップキャッシュを含む、請求項11から16のいずれか1項に記載のコンピューティングデバイス。
【国際調査報告】