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

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

▶ クアルコム,インコーポレイテッドの特許一覧

特許7453482メモリ間の保護されたデータストリーミング
<>
  • 特許-メモリ間の保護されたデータストリーミング 図1
  • 特許-メモリ間の保護されたデータストリーミング 図2
  • 特許-メモリ間の保護されたデータストリーミング 図3
  • 特許-メモリ間の保護されたデータストリーミング 図4
  • 特許-メモリ間の保護されたデータストリーミング 図5
  • 特許-メモリ間の保護されたデータストリーミング 図6
  • 特許-メモリ間の保護されたデータストリーミング 図7
  • 特許-メモリ間の保護されたデータストリーミング 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-11
(45)【発行日】2024-03-19
(54)【発明の名称】メモリ間の保護されたデータストリーミング
(51)【国際特許分類】
   G06F 21/85 20130101AFI20240312BHJP
   G06F 12/00 20060101ALI20240312BHJP
   G06F 12/06 20060101ALI20240312BHJP
   H04L 9/08 20060101ALI20240312BHJP
   H04L 9/14 20060101ALI20240312BHJP
【FI】
G06F21/85
G06F12/00 550E
G06F12/06 515K
H04L9/08 B
H04L9/14
【請求項の数】 29
(21)【出願番号】P 2023541587
(86)(22)【出願日】2021-12-01
(65)【公表番号】
(43)【公表日】2023-12-21
(86)【国際出願番号】 US2021061457
(87)【国際公開番号】W WO2022154889
(87)【国際公開日】2022-07-21
【審査請求日】2023-07-07
(31)【優先権主張番号】17/147,110
(32)【優先日】2021-01-12
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】507364838
【氏名又は名称】クアルコム,インコーポレイテッド
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100163522
【弁理士】
【氏名又は名称】黒田 晋平
(72)【発明者】
【氏名】ヤンル・リ
(72)【発明者】
【氏名】デクスター・タミオ・チュン
【審査官】小林 秀和
(56)【参考文献】
【文献】米国特許出願公開第2008/0025503(US,A1)
【文献】国際公開第2019/026225(WO,A1)
【文献】特開2006-287376(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/85
G06F 12/00
G06F 12/06
H04L 9/08
H04L 9/14
(57)【特許請求の範囲】
【請求項1】
メモリ間でデータを転送するための方法であって、
鍵生成器を用いて、ルート鍵および前記ルート鍵に対するハンドル生成するステップと、
ルートオブトラストモジュールに、前記ルート鍵および前記ハンドルを送信するステップと、
前記ルートオブトラストモジュールを用いて、前記ルート鍵から秘密鍵を導出するために使用される鍵導出方法情報を生成するステップと、
プロセッサに前記ルートオブトラストモジュールを用いて前記ハンドルを送信するステップであって、前記プロセッサが、第1のメモリの第1のアクセラレータに、かつ第2のメモリの第2のアクセラレータに前記ハンドルを提供するステップであって、前記第1のメモリがダイナミックランダムアクセスメモリを備え、前記第2のメモリが不揮発性ランダムアクセスメモリを備える、ステップと、
前記第1のアクセラレータおよび前記第2のアクセラレータに前記ルートオブトラストモジュールを用いて前記ルート鍵および前記鍵導出方法情報を送信するステップと、
前記第1のアクセラレータおよび第2のアクセラレータが、前記第1のメモリおよび第2のメモリ内のデータを暗号化するために、前記ルート鍵に基づいて前記秘密鍵を導出するステップと、
前記プロセッサが、メモリ転送トランザクションに関連付けられたデータを前記第1のメモリから読み取るステップと、
前記プロセッサが、前記第1のメモリからの前記メモリ転送トランザクションに関連付けられた前記読み取られたデータから、ページテーブルの属性情報に基づいて、バイパス指示を生成するステップと、
前記メモリ転送トランザクションに関連付けられた前記バイパス指示がアサートされるかどうかを判定するステップと、
前記データを前記第1のメモリから第2のメモリに転送するステップであって、前記バイパス指示がアサートされる場合、前記データの第1処理を行うことをバイパスするステップを含み、前記バイパス指示がアサートされる場合、前記データの第2処理を行うことをバイパスするステップをさらに含み、前記データの前記第1処理を行うことを前記バイパスするステップと、前記データの前記第2処理を行うことを前記バイパスするステップとの両方が、前記第1のアクセラレータおよび第2のアクセラレータによる前記秘密鍵の使用を回避する、ステップと、
前記データを前記第2のメモリ内に記憶するステップと
を含む、方法。
【請求項2】
前記データを前記第1のメモリから前記第2のメモリに前記転送するステップが、前記バイパス指示がアサートされない場合に前記第1のメモリから読み取られたデータの第1処理を行うステップと、前記バイパス指示がアサートされない場合に前記第1処理から得られたデータの第2処理を行うステップとをさらに含む、請求項1に記載の方法。
【請求項3】
前記第2処理を行うステップが、前記第1処理の逆動作である、請求項2に記載の方法。
【請求項4】
前記第1処理を行うステップが、解読するステップ含み、
前記第2処理を行うステップが、暗号化するステップ含む、
請求項3に記載の方法。
【請求項5】
前記データを前記読み取るステップが、前記データを第1のメモリ領域から読み取るステップを含み、
前記第1のメモリから読み取られた前記データの前記第1処理を行うステップが、前記秘密鍵のうちの1つを使用して、前記第1のメモリ領域から読み取られた前記データを解読するステップを含み、
前記第2処理を行うステップが、前記秘密鍵のうちの1つを使用して、前記解読するステップから得られたデータを再暗号化するステップを含み、
前記データを前記記憶するステップが、前記解読するステップから得られた前記データを第2のメモリ領域内に記憶するステップを含み、
前記バイパス指示が、少なくとも1つの秘密鍵が前記第1のメモリ領域および前記第2のメモリ領域に共通であることを示す、
請求項3に記載の方法。
【請求項6】
前記ページテーブルが前記第1のメモリ領域に関連付けられる、請求項5に記載の方法。
【請求項7】
前記第1のメモリが暗号化カーネルコンテキストデータを記憶する、請求項1に記載の方法。
【請求項8】
前記プロセッサが、アクティブモードから休止モードに遷移すると判定するステップをさらに含む、請求項1に記載の方法。
【請求項9】
メモリ間でデータを転送するためのシステムであって、
ルート鍵および前記ルート鍵に対するハンドルを生成し、かつルートオブトラストモジュールに、前記ルート鍵および前記ハンドルを送信する、鍵生成器と、
前記ルート鍵から秘密鍵を導出するために使用される鍵導出方法情報を生成し、かつ前記ハンドルをプロセッサに送信する、ルートオブトラストモジュールと、
第1のメモリの第1のアクセラレータに、かつ第2のメモリの第2のアクセラレータに前記ハンドルを提供する、前記プロセッサであって、前記第1のメモリがダイナミックランダムアクセスメモリを備え、前記第2のメモリが不揮発性ランダムアクセスメモリを備える、プロセッサと
を備え、
前記ルートオブトラストモジュールが、前記ルート鍵および前記鍵導出方法情報を前記第1のアクセラレータおよび前記第2のアクセラレータに送信し、
前記第1のアクセラレータおよび第2のアクセラレータが、前記第1のメモリおよび第2のメモリ内のデータを暗号化するために、前記ルート鍵に基づいて前記秘密鍵を導出し、
第1処理ロジックおよび第2処理ロジックならびに前記プロセッサを含むメモリ転送制御ロジックであって、
前記プロセッサに、メモリ転送トランザクションに関連付けられたデータを前記第1のメモリから読み取らせることであって、前記プロセッサが、前記第1のメモリからの前記メモリ転送トランザクションに関連付けられた前記読み取られたデータからのページテーブルの属性情報に基づいてバイパス指示を生成する、ことと、
前記メモリ転送トランザクションに関連付けられた前記バイパス指示がアサートされるかどうかを判定することと、
前記バイパス指示がアサートされる場合、前記データへの前記第1処理ロジックの適用をバイパスすることと、
前記バイパス指示がアサートされる場合、前記第1処理ロジックの出力への前記第2処理ロジックの適用をバイパスすることであって、前記第1処理ロジックの適用を前記バイパスすることと、前記第2処理ロジックの適用を前記バイパスすることの両方が、前記第1および第2のアクセラレータによる前記秘密鍵の使用を回避する、ことと、
前記データを前記第2のメモリ内に記憶することと
を行うように構成される、メモリ転送制御ロジックを
備える、システム。
【請求項10】
前記メモリ転送制御ロジックが、
前記バイパス指示がアサートされない場合、前記第1のメモリから読み取られた前記データに前記第1処理ロジックを適用することと、
前記バイパス指示がアサートされない場合、前記第1処理ロジックの出力に前記第2処理ロジックを適用することと
を行うようにさらに構成される、請求項9に記載のシステム。
【請求項11】
前記第1処理ロジックおよび前記第2処理ロジックが、逆動作を実行するように構成される、請求項10に記載のシステム。
【請求項12】
前記第1処理ロジックが、解読すること実行するように構成され、
前記第2処理ロジックが、暗号化すること実行するように構成される、
請求項11に記載のシステム。
【請求項13】
前記第1処理ロジックが、前記データを第1のメモリ領域から読み取り、前記秘密鍵のうちの1つを使用して、前記データを解読するように構成され、
前記第2処理ロジックが、前記秘密鍵のうちの1つを使用して、前記第1処理ロジックによって解読されたデータを再暗号化し、前記第1処理ロジックによって再暗号化されたデータを第2のメモリ領域内に記憶するように構成され、
前記バイパス指示が、少なくとも1つの秘密鍵が前記第1のメモリ領域および前記第2のメモリ領域に共通であることを示す、
請求項11に記載のシステム。
【請求項14】
前記ページテーブルが前記第1のメモリ領域に関連付けられる、請求項13に記載のシステム。
【請求項15】
前記第1のメモリが暗号化カーネルコンテキストデータを記憶する、請求項9に記載のシステム。
【請求項16】
前記プロセッサが、アクティブモードから休止モードに遷移するかどうかを判定する、請求項9に記載のシステム。
【請求項17】
前記第1処理ロジックが前記第1のアクセラレータを備え、
前記第2処理ロジックが前記第2のアクセラレータを備える、
請求項9に記載のシステム。
【請求項18】
メモリ間でデータを転送するためのシステムであって、
ルート鍵および前記ルート鍵に対するハンドルを生成し、かつルートオブトラストモジュールに、前記ルート鍵および前記ハンドルを送信する、鍵生成器と、
前記ルート鍵から秘密鍵を導出するために使用される鍵導出方法情報を生成し、前記ハンドルをプロセッサに送信する、ルートオブトラストモジュールと、
第1のメモリの第1のアクセラレータに、また第2のメモリの第2のアクセラレータに前記ハンドルを提供する、前記プロセッサであって、前記第1のメモリがダイナミックランダムアクセスメモリを備え、前記第2のメモリが不揮発性ランダムアクセスメモリを備える、プロセッサと
を備え、
前記ルートオブトラストモジュールが、前記ルート鍵および前記鍵導出方法情報を前記第1のアクセラレータおよび前記第2のアクセラレータに送信し、
前記第1のアクセラレータおよび第2のアクセラレータが、前記第1のメモリおよび第2のメモリ内のデータを暗号化するために、前記ルート鍵に基づいて前記秘密鍵を導出し、
メモリ転送トランザクションに関連付けられたデータを前記第1のメモリから読み取るための手段と、
前記第1のメモリからの前記メモリ転送トランザクションに関連付けられた前記読み取られたデータからのページテーブルのハードウェア属性に基づくページに基づいて、バイパス指示を生成するための手段と、
前記メモリ転送トランザクションに関連付けられた前記バイパス指示がアサートされるかどうかを判定するための手段と、
前記データを前記第1のメモリから第2のメモリに転送するための手段であって、前記バイパス指示がアサートされる場合、前記データの第1処理を行うことをバイパスするための手段を含み、前記バイパス指示がアサートされる場合、前記データの第2処理を行うことをバイパスするための手段をさらに含み、前記データの前記第1処理を行うことを前記バイパスするための手段と、前記データの前記第2処理を行うことを前記バイパスするための手段との両方が、前記第1および第2のアクセラレータによる前記秘密鍵の使用を回避する、手段と、
前記データを前記第2のメモリ内に記憶するための手段と
を備える、システム。
【請求項19】
前記転送するための手段が、
前記バイパス指示がアサートされない場合、前記データの第1処理を行うための手段と、
前記バイパス指示がアサートされない場合、前記第1処理を行うための手段の結果の第2処理を行うための手段と
をさらに含む、請求項18に記載のシステム。
【請求項20】
前記第2処理を行うための手段が、前記第1処理を行うための手段の逆を含む、請求項18に記載のシステム。
【請求項21】
前記第1処理を行うための手段が、解読するための手段含み、
前記第2処理を行うための手段が、暗号化するための手段含む、
請求項20に記載のシステム。
【請求項22】
前記第1処理を行うための手段が、前記秘密鍵のうちの1つを使用して解読するための手段を含み、
前記第2処理を行うための手段が、前記秘密鍵のうちの1つを使用して再暗号化するための手段を含み、
前記データを前記読み取るための手段が、前記データを第1のメモリ領域から読み取るための手段を含み、
前記データを前記記憶するための手段が、前記データを第2のメモリ領域内に記憶するための手段を含み、
前記バイパス指示が、少なくとも1つの秘密鍵が前記第1のメモリ領域および前記第2のメモリ領域に共通であることを示す、
請求項20に記載のシステム。
【請求項23】
前記ページテーブルが前記第1のメモリ領域に関連付けられる、請求項22に記載のシステム。
【請求項24】
前記第1のメモリが暗号化カーネルコンテキストデータを記憶する、請求項18に記載のシステム。
【請求項25】
メモリ間でデータを転送するためのコンピュータ可読記録媒体であって、コンピュータ実行可能形態で命令を記憶した非一時的コンピュータ可読記録媒体を備え、前記命令が、コンピューティングデバイスの処理システムによって実行されると、
鍵生成器を用いて、ルート鍵および前記ルート鍵に対するハンドル生成することと、
ルートオブトラストモジュールに、前記ルート鍵および前記ハンドルを送信することと、
前記ルートオブトラストモジュールを用いて、前記ルート鍵から秘密鍵を導出するために使用される鍵導出方法情報を生成することと、
前記ルートオブトラストモジュールを用いて前記ハンドルをプロセッサに送信することと、
前記プロセッサが、第1のメモリの第1のアクセラレータに、また第2のメモリの第2のアクセラレータに前記ハンドルを提供することであって、前記第1のメモリがダイナミックランダムアクセスメモリを備え、前記第2のメモリが不揮発性ランダムアクセスメモリを備える、ことと、
前記ルートオブトラストモジュールを用いて、前記ルート鍵および前記鍵導出方法情報を前記第1のアクセラレータおよび前記第2のアクセラレータに送信することと、
前記第1および第2のアクセラレータが、前記第1のメモリおよび第2のメモリ内のデータを暗号化するために、前記ルート鍵に基づいて前記秘密鍵を導出することと、
前記プロセッサを用いて、メモリ転送トランザクションに関連付けられたデータを前記第1のメモリから読み取ることと、
前記プロセッサが、前記第1のメモリからの前記メモリ転送トランザクションに関連付けられた前記読み取られたデータからのページテーブルの属性情報に基づいて、バイパス指示を生成することと、
前記メモリ転送トランザクションに関連付けられた前記バイパス指示がアサートされるかどうかを判定することと、
前記バイパス指示がアサートされる場合、前記データの第1処理を行うことをバイパスすることと、
前記バイパス指示がアサートされる場合、前記データの第2処理を行うことをバイパスすることであって、前記データの前記第1処理を前記バイパスすることと、前記データの前記第2処理を前記バイパスすることの両方が、前記第1および第2のアクセラレータによる前記秘密鍵の使用を回避する、ことと、
前記データを前記第2のメモリ内に記憶することと
を行うように前記処理システムを構成する、コンピュータ可読記録媒体。
【請求項26】
前記命令が、
前記バイパス指示がアサートされない場合、前記データの第1処理を行うことと、
前記バイパス指示がアサートされない場合、前記データの前記第1処理の結果の第2処理を行うことと
を行うように前記処理システムをさらに構成する、請求項25に記載のコンピュータ可読記録媒体。
【請求項27】
前記命令が、解読すること実行するように前記処理システムを構成することによって、前記データの前記第1処理を行うように前記処理システムを構成し、
前記命令が、暗号化すること実行するように前記処理システムを構成することによって、前記データの前記第1処理の結果の第2処理を行うように前記処理システムをさらに構成する、
請求項26に記載のコンピュータ可読記録媒体。
【請求項28】
前記第1のメモリが暗号化カーネルコンテキストデータを記憶する、請求項26に記載のコンピュータ可読記録媒体。
【請求項29】
前記プロセッサが、アクティブモードから休止モードに遷移すると判定する、請求項25に記載のコンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリ間の保護されたデータストリーミングに関する。
【背景技術】
【0002】
ポータブルコンピューティングデバイス("PCD")は、個人レベルおよび専門レベルで人々の必需品になっている。これらのデバイスは、セルラー電話、タブレットコンピュータ、パームトップコンピュータ、携帯情報端末("PDA")、ポータブルゲームコンソール、および他のポータブル電子デバイスを含む場合がある。PCDは、一般に、機能をユーザに伝えるためにともに動作するように設計された多数の構成要素を含む集積回路またはシステムオンチップ("SoC")を含む。たとえば、SoCは、複数のコアを備えた中央処理ユニット("CPU")、グラフィカル処理ユニット("GPU")、ニューラル処理ユニット("NPU")、デジタル信号プロセッサ("DSP")、ワイヤレストランシーバユニット(モデムとも呼ばれる)など、任意の数の処理エンジンを含む場合がある。SoCは、PCD、または別のSoC、メモリチップなど、コンピューティングデバイス内の他の構成要素に結合される場合がある。
【0003】
データがメモリ間でストリーミングまたは転送される場合がある使用事例または動作シナリオが存在する。データは、同じシステム(たとえば、同じSoC)内の2つのメモリ間で、またはあるシステム内のメモリから別のシステム(たとえば、異なるSoC)内のメモリに転送される場合がある。CPU、ダイレクトメモリアクセス("DMA")コントローラ、メモリアクセラレータなど、処理エンジンは、メモリ間のデータ転送の態様を制御する場合がある。
【0004】
メモリ内に記憶されたデータが保護される場合がある。暗号化は、データ保護のタイプの一例である。パリティ情報(たとえば、誤り訂正コードまたは"ECC")を使用する誤り検出および誤り訂正は、データ保護のもう1つの例である。認証はデータ保護のまた別の例である。たとえば、圧縮およびアンチロールバックなど、メモリ内に記憶されたデータの他のタイプの処理が知られている。
【0005】
データがメモリ間で転送されるとき、ソースメモリおよび宛先メモリに対して逆処理動作が実行されてもよい。たとえば、ソースメモリ内に暗号化形態で記憶されたデータは、ソースメモリからそれを読み取った後で解読されてもよく、次いで、解読データは、宛先メモリ内にそれを記憶する前に再暗号化されてもよい。
【発明の概要】
【課題を解決するための手段】
【0006】
メモリ間でデータを転送するシステム、方法、コンピュータ可読媒体、および他の例について本明細書で開示する。
【0007】
メモリ間でデータを転送するための例示的な方法は、メモリ転送トランザクション(memory transfer transaction)に関連付けられたデータを第1のメモリから読み取るステップを含んでもよい。例示的な方法はまた、メモリ転送ランザクションに関連付けられたバイパス指示がアサートされるかどうかを判定するステップを含んでもよい。例示的な方法はさらに、データを第1のメモリから第2のメモリに転送するステップを含んでもよい。転送するステップは、バイパス指示がアサートされる場合、データの第1処理を行うことをバイパスするステップを含んでもよい。転送するステップはさらに、バイパス指示がアサートされる場合、データの第2処理を行うことをバイパスするステップを含んでもよい。例示的な方法はまたさらに、データを第2のメモリ内に記憶するステップを含んでもよい。
【0008】
メモリ間でデータを転送するための例示的なシステムは、第1のメモリと、第2のメモリと、メモリ転送制御ロジックとを含んでもよい。メモリ転送制御ロジックは、第1処理ロジックおよび第2処理ロジックを含んでもよい。メモリ転送制御ロジックは、メモリ転送トランザクションに関連付けられたデータを第1のメモリから読み取るように構成されてもよい。メモリ転送制御ロジックはまた、メモリ転送トランザクションに関連付けられたバイパス指示がアサートされるかどうかを判定するように構成されてもよい。メモリ転送制御ロジックはさらに、バイパス指示がアサートされる場合、データへの第1処理ロジックの適用をバイパスするように構成されてもよい。メモリ転送制御ロジックはまたさらに、バイパス指示がアサートされる場合、第2処理ロジックの適用をバイパスするように構成されてもよい。メモリ転送制御ロジックはまたさらに、データを第2のメモリ内に記憶するように構成されてもよい。
【0009】
メモリ間でデータを転送するための別の例示的なシステムは、メモリ転送トランザクションに関連付けられたデータを第1のメモリから読み取るための手段を含んでもよい。例示的なシステムはまた、メモリ転送トランザクションに関連付けられたバイパス指示がアサートされるかどうかを判定するための手段を含んでもよい。例示的なシステムはさらに、データを第1のメモリから第2のメモリに転送するための手段を含んでもよい。転送するための手段は、バイパス指示がアサートされる場合、第1処理を行うことをバイパスするための手段を含んでもよい。転送するための手段はさらに、バイパス指示がアサートされる場合、第2処理を行うことをバイパスするための手段を含んでもよい。例示的なシステムはまた、データを第2のメモリ内に記憶するための手段を含んでもよい。
【0010】
メモリ間でデータを転送するための例示的なコンピュータ可読媒体は、その上にコンピュータ実行可能形態で命令を記憶した非一時的コンピュータ可読媒体を備えてもよい。命令は、コンピューティングデバイスの処理システムによって実行されると、メモリ転送トランザクションに関連付けられたデータを第1のメモリから読み取るように処理システムを構成してもよい。命令はまた、処理システムによって実行されると、メモリ転送トランザクションに関連付けられたバイパス指示がアサートされるかどうかを判定するように処理システムを構成してもよい。命令はさらに、処理システムによって実行されると、バイパス指示がアサートされる場合、データの第1処理を行うことをバイパスするように処理システムを構成してもよい。命令はまたさらに、処理システムによって実行されると、バイパス指示がアサートされる場合、データの第2処理を行うことをバイパスするように構成されてもよい。命令はまたさらに、処理システムによって実行されると、データを第2のメモリ内に記憶するように処理システムを構成してもよい。
【0011】
図では、同様の参照番号は、その他の形で示されない限り、様々な図の全体を通して同様の部分を指す。"102A"または"102B"などの文字指定を伴う参照番号の場合、文字指定は、同じ図に存在している2つの同様の部分または要素を区別する場合がある。参照番号がすべての図において同じ参照番号を有するすべての部分を含むことが意図されるとき、参照番号に対する文字指定は省略される場合がある。
【図面の簡単な説明】
【0012】
図1】例示的な実施形態による、メモリ間でデータを転送するためのシステムを示すブロック図である。
図2】例示的な実施形態による、メモリ間でデータを転送するための別のシステムを示すブロック図である。
図3】例示的な実施形態による、メモリ間でデータを転送するためのまた別のシステムを示すブロック図である。
図4】例示的な実施形態による、メモリ間でデータを転送するための方法を示すフロー図である。
図5】例示的な実施形態による、メモリ間のデータの転送を制御するためのアクションのシーケンスを示す機能ブロック図である。
図6】例示的な実施形態による、メモリ間でデータを転送するためのまた別のシステムを示すブロック図である。
図7】例示的な実施形態による、メモリ間で鍵を転送するための方法を示すフロー図である。
図8】例示的な実施形態による、ポータブルコンピューティングデバイスのブロック図である。
【発明を実施するための形態】
【0013】
「例示的(exemplary)」という語は、「例、事例、または例示として働くこと」を意味するために本明細書で使用される。「例示的(illustrative)」という語は、本明細書で「例示的(exemplary)」の同義語として使用される場合がある。「例示的」として本明細書において説明するいかなる態様も、必ずしも他の態様よりも好ましいまたは有利であると解釈されるべきではない。本明細書で、「結合される」という用語は、本明細書で何の介在要素も介さずに接続されることを意味する「直接的に接続される」という用語とは対照的に、0個以上の介在要素を介して接続されることを意味する。
【0014】
図1に示すように、例示的な(illustrative)または例示的な(exemplary)実施形態では、コンピューティングデバイス100は、少なくとも1つのプロセッサ102、ならびに少なくとも1つの第1のメモリ104および第2のメモリ106を含んでもよい。明快のために示されていないが、コンピューティングデバイス100はまた、たとえば、他のメモリ、他のプロセッサ、インターフェース、電力コントローラなど、他の構成要素を含んでもよい。プロセッサ102ならびにメモリ104および106は、1つまたは複数のバスまたは他はデータ通信相互接続108によって相互接続されてもよい。コンピューティングデバイス100は、任意のタイプのものであってもよい。同様に、メモリ104および106は、任意のタイプのものであってもよい。プロセッサ102は、たとえば、CPU、NPU、GPU、DMAエンジンなど、または以下で説明する「アクセラレータ」タイプを含めて、任意の他のタイプのプロセッサであってもよい。図1に示す実施形態では、プロセッサ102は単体形態を有するが、他の実施形態では、そのようなプロセッサは、2つ以上のプロセッサを備えた、分散形態であってもよい。また、以下で説明するように、いくつかの実施形態では、メモリ104および106ならびにプロセッサ102は、互いと同じチップ上にあってもよく、他の実施形態では、これらの構成要素のうちの1つまたは複数は、これらの構成要素のうちの1つまたは複数の他の構成要素とは異なるチップ上にあってもよい。第1のメモリ104および第2のメモリ106は各々、任意の数の、また任意のタイプの物理的データ記憶デバイスを備えてもよい。
【0015】
図1に示す実施形態では、プロセッサ102は、第1処理ロジック110および第2処理ロジック112で構成されてもよい。とはいえ、そのようなプロセッサが分散される実施形態では、そのような第1および第2処理ロジックは、2つのプロセッサ間で分散されてもよい。第1処理ロジック110および第2処理ロジック112は、従来のコンピューティング原理による、プロセッサ102上の対応するソフトウェアの実行により構成されるプロセッサロジックに対応する場合がある。すなわち、プロセッサ102は、実行中のソフトウェアによって構成されることによって、第1処理ロジック110および第2処理ロジック112を提供または具現してもよい。簡潔のために、構成されるプロセッサ102の制御下で生じる場合がある対応するアクションまたは機能は、第1処理ロジック110(たとえば、「第1処理」アクションまたは機能)または第2処理ロジック112(たとえば、「第2処理」アクションまたは機能)によって実行されると呼ばれる場合がある。
【0016】
第1処理ロジック110は、機能の中でも、第1のメモリ104から第2のメモリ106へ、または第2のメモリ106から第1のメモリ104へなど、データがメモリ間で転送されるメモリ転送トランザクションの態様を制御してもよい。第2処理ロジック112は、同様に、機能の中でも、第1のメモリ104から第2のメモリ106へ、または第2のメモリ106から第1のメモリ104へなど、データがメモリ間で転送されるメモリ転送トランザクションの態様を制御してもよい。メモリ転送トランザクションは、第1処理ロジック110、第2処理ロジック112、または他のロジックによって開始されてもよい。
【0017】
第1のメモリ104と第2のメモリ106との間のメモリ転送トランザクションの対象であるデータが保護されてもよい。様々なタイプのデータ保護が当業者に知られており、本明細書で説明する例示的な実施形態において企図される。たとえば、データは、データを転送することに先立って、第1のメモリ104または第2のメモリ106内に暗号化形態で記憶されてもよい。代替または追加として、データは、データを転送することに先立って、第1のメモリ104または第2のメモリ106内に対応するメタデータとともに記憶されてもよい。そのようなメタデータの例は、誤ったビット変更(すなわち、データ破壊)に対して対応するデータを保護し得るパリティ(誤り訂正コード("ECC")の例ではシンドロームと呼ばれることがある)メタデータである。そのようなメタデータの別の例は、ハッシングおよび認証用のダイジェストである。処理が追加のメタデータを生成するかどうかは、処理のタイプに依存する。たとえば、インプレース暗号化処理(encyption-in-place processing)は、追加のメタデータを生成しない場合がある。以下で説明するように、メタデータは、元のデータが記憶される場合があるアドレスとは異なる別のアドレスにおいて記憶されてもよい。
【0018】
第1処理ロジック110および第2処理ロジック112は、様々な機能または動作を実行してもよく、少なくとも1つのそのような動作は、以下で説明する特徴に従って、選択的に有効化または実行(また逆に、選択的に無効化またはバイパス)されてもよい。すなわち、第1処理ロジック110および第2処理ロジック112は、選択的にデータの第1処理および第2処理を行うために選択的にデータに適用されてもよい。そのような処理ロジックまたは処理機能をバイパスすることは、データを転送するために必要とされる時間量を低減し、電力を節約し、他の利点を提供する場合がある。
【0019】
第1処理ロジック110が、有効化されるかまたはデータに適用されると実行する場合がある第1処理動作または機能は、第2処理ロジック112が、有効化されるかまたはデータに適用されると実行する場合がある第2処理動作または機能の逆であってもよい。データが第1のメモリ104から第2のメモリ106に転送される例では、第1処理ロジック110は、データが第1のメモリ104から読み取られた後でそのデータを解読してもよく、第2処理ロジック112は、データが第2のメモリ106内に記憶される前にそのデータを暗号化(すなわち、再暗号化)してもよい。図1では、破線矢印114は、第1処理ロジック110による解読および第2処理ロジック112による再暗号化を含めて、第1のメモリ104から第2のメモリ106へのそのようなデータ転送を概念的に示す。代替または追加として、データが第2のメモリ106から第1のメモリ104に転送される例(図示せず)では、第2処理ロジック112は、データが第2のメモリ106から読み取られた後でデータを解読してもよく、第1処理ロジック110は、データが第1のメモリ104内に記憶される前にデータを再暗号化してもよい。
【0020】
第1処理ロジック110による第1処理が生じるかまたはバイパスされるか、および第2処理ロジック112による第2処理が生じるかまたはバイパスされるかは、メモリ転送トランザクションに関連付けられたバイパス指示の状態に基づいてもよい。したがって、データを第1のメモリ104から第2のメモリ106に転送することは、第1処理ロジック110が、バイパス指示がアサートされない場合、第1のメモリ104から読み取られたデータを解読することと、バイパス指示がアサートされる場合、第1のメモリ104から読み取られたデータを解読することをバイパスすることとを含んでもよい。そのような例では、データを第1のメモリ104から第2のメモリ106に転送することはまた、第2処理ロジック112が、バイパス指示がアサートされない場合、そのデータを再暗号化することと、バイパス指示がアサートされる場合、再暗号化することをバイパスすることとを含んでもよい。データが第1のメモリ104から読み取られた後でデータの解読をバイパスすること、およびデータが第2のメモリ106内に記憶される前にそのデータの再暗号化をバイパスすることは、したがって、データをその元の(暗号化)形態で保存する。図では、別の破線矢印116は、第1処理ロジック110による解読がバイパスされ、第2処理ロジック112による再暗号化がバイパスされる、第1のメモリ104から第2のメモリ106へのデータ転送を概念的に示す。
【0021】
以下で説明するように、第1のメモリ104内に暗号化形態で記憶されたデータの解読をバイパスすること、および再暗号化データを第2のメモリ106内に記憶する前に解読データを再暗号化することは、たとえば、それぞれ、第1および第2のメモリ104および106内のデータを保護するために使用される暗号鍵(図1に示さず)が互いと同一であるときに生じる場合がある。そのような同一鍵を提供する方法の例について以下で説明する。各々がメモリ領域に関連付けられる複数の鍵が存在する場合がある。たとえば、第1処理ロジック110は、第1のメモリ104内の領域118の中に記憶されたデータを保護するために第1の鍵を使用してもよく、第2処理ロジック112は、第2のメモリ106内の領域120の中に記憶されたデータを保護するために第1の鍵と同一の第2の鍵を使用してもよい。
【0022】
図2に示すように、別の例示的な(illustrative)または例示的な(exemplary)実施形態では、コンピューティングデバイス200は、1つまたは複数のバスまたは相互接続212によって相互接続された、CPU202、第1のメモリ204、第2のメモリ206、第1のメモリコントローラ208、および第2のメモリコントローラ210を含んでもよい。第1および第2のメモリコントローラ208および210は、プロセッサまたは処理システムのタイプである。第1および第2のメモリコントローラ208および210は、メモリ転送トランザクションのいくつかの態様を従来の様式で制御してもよい。従来の、したがって当業者がよく理解するメモリコントローラ機能については、本明細書で説明しない。
【0023】
第1のメモリコントローラ208は、第1のメモリアクセラレータ214を含んでもよい。第2のメモリコントローラ210は、第2のメモリアクセラレータ216を同様に含んでもよい。第1および第2のメモリアクセラレータ214および216は、プロセッサまたは処理システムのタイプである。示す実施形態では、第1および第2のメモリアクセラレータ214および216は、第1および第2処理ロジック110および112(図1)に関して上記で説明した動作など、場合によっては、CPU202によって実行される場合がある処理タスクまたは処理動作のうちのいくつかをオフロードするために含まれてもよい。たとえば、第1のメモリアクセラレータ214は、他の機能の中でも、データを第1のメモリ204内に記憶する前にそのデータを暗号化し、データを第1のメモリ204から読み取った後でそのデータを解読するように構成されてもよい。同様に、第2のメモリアクセラレータ214は、他の機能の中でも、データを第2のメモリ206内に記憶する前にそのデータを暗号化し、データを第2のメモリ206内から読み取った後にそのデータを解読するように構成されてもよい。
【0024】
第1および第2のメモリアクセラレータ214および216による暗号化および解読は、バイパス指示の状態に基づいて、選択的に実行およびバイパスされてもよい。データが第1のメモリ204から第2のメモリ206に転送される例では、データを転送することは、バイパス指示がアサートされない場合、第1のメモリコントローラ208が第1のメモリ204から読み取られたデータを第1のメモリアクセラレータ214に提供することを含んでもよい。そのような例では、データを転送することはまた、バイパス指示がアサートされる場合、第1のメモリコントローラ208が、第1のメモリ204から読み取られたデータを第1のメモリアクセラレータ214にバイパスすること、または提供しないことを含んでもよい。第1のメモリ204からデータを読み取る間に第1のメモリコントローラ208が第1のメモリアクセラレータ214をバイパスするとき、第1のメモリアクセラレータ214は、そのデータの解読を試みず、第1のメモリコントローラ208は、相互接続212を介して、そのデータを元の(暗号化)形態で第2のメモリコントローラ210に渡す。そのような例では、データを転送することは、バイパス指示がアサートされない場合、第2のメモリコントローラ210が第1のメモリコントローラ208から(相互接続212を介して)受信されたデータを第2のメモリアクセラレータ216に提供することをさらに含んでもよい。そのような例では、データを転送することは、バイパス指示がアサートされる場合、第2のメモリコントローラ210が受信されたデータを第2のメモリアクセラレータ216にバイパスするか、または提供しないことをさらに含んでもよい。データを第2のメモリ206内に記憶する間に第2のメモリコントローラ210が第2のメモリアクセラレータ216をバイパスするとき、第2のメモリアクセラレータ216は、そのデータの暗号化を試みず、第2のメモリコントローラ210は、そのデータをそれが受信された元の(暗号化)形態で記憶する。図2では、破線矢印218は、第1および第2のメモリアクセラレータ214および216がバイパスされない、第1のメモリ204から第2のメモリ206へのデータ転送を概念的に示す。もう1つの破線矢印220は、第1および第2のメモリアクセラレータ214および216がバイパスされる、第1のメモリ204から第2のメモリ206へのデータ転送を概念的に示す。いくつかの例では、CPU202はまた、たとえば、メモリ転送トランザクションを開始すること、トランザクションがいつ完了するかを決定することなど、メモリ204と206との間でデータを転送する役割を果たす場合もある。
【0025】
メモリ204および206内の暗号化データを図1に示した実施形態に関して上記で説明した様式で保護するために鍵が使用されてもよい。たとえば、第1のメモリコントローラ210は、第1のメモリ204内の領域222の中に記憶されたデータを保護するために第1の鍵を使用してもよく、第2のメモリコントローラ212は、第2のメモリ206内の領域224の中に記憶されたデータを保護するために第1の鍵と同一の第2の鍵を使用してもよい。
【0026】
パリティ情報または第1のメモリ204または第2のメモリ206の中に記憶されたデータに対応する他のメタデータがやはり記憶されてもよい。そのようなメタデータに関する処理動作または処理機能は、バイパス指示の状態に基づいて、選択的に実行およびバイパスされてもよい。たとえば、第1および第2のメモリアクセラレータ214および216によるパリティ動作(たとえば、パリティ情報生成、誤り検出または誤り訂正など)は、バイパス指示の状態に基づいて、選択的に実行およびバイパスされてもよい。パリティ保護データが第1のメモリ204から第2のメモリ206に転送される例では、データを転送することは、バイパス指示がアサートされない場合、第1のメモリコントローラ208が、第1のメモリ204から読み取られたデータと第1のメモリ204から読み取られた対応するパリティ情報(たとえば、誤り訂正コードまたは"ECC")の両方を第1のメモリアクセラレータ214に提供し、それにより、第1のメモリアクセラレータ214がECCを使用してデータに対して誤り訂正動作を実行することを有効化または可能にすることを含んでもよい。そのような例では、データを転送することはまた、バイパス指示がアサートされる場合、第1のメモリコントローラ208が第1のメモリアクセラレータ214をバイパスし、それにより、第1のメモリアクセラレータ214がデータに対して誤り訂正動作を実行することを無効化または不可能にすることを含んでもよい。第1のメモリ204からパリティ保護データを読み取る間に第1のメモリコントローラ208が第1のメモリアクセラレータ214をバイパスするとき、第1のメモリアクセラレータ214は、相互接続212を介して、そのデータならびに対応するパリティ情報をそれらの元の形態で第2のメモリコントローラ210に渡す。そのような例では、データおよびメタデータを転送することは、バイパス指示がアサートされない場合、第2のメモリコントローラ210が第1のメモリコントローラ210から受信されたデータを第2のメモリアクセラレータ216に提供し、それにより、第2のメモリアクセラレータ216がデータからECCを再生成することを有効化または可能にすることをさらに含んでもよい。そのような例では、データを転送することは、バイパス指示がアサートされる場合、第2のメモリコントローラ210が受信されたデータおよびECCを第2のメモリアクセラレータ214にバイパスするか、または提供せず、それにより、第2のメモリアクセラレータ216がECCを再生成することを無効化または不可能にすることをまたさらに含んでもよい。ECC保護データを第2のメモリ206内に記憶する間に第2のメモリコントローラ210が第2のメモリアクセラレータ216をバイパスするとき、第2のメモリコントローラ210は、データおよび対応するECCを第2のメモリコントローラ210がそのデータおよび対応するECCを受信した元の形態で記憶する。
【0027】
第2のメモリ206内のECCのロケーションは第2処理ロジック112における構成に依存するため、第1処理ロジック110は、第2のメモリ206内のECC用の宛先アドレスを知らない場合がある。したがって、第1処理ロジック110は、ECCを搬送するトランザクションの宛先アドレスとして第2のメモリ206における元のデータのベースアドレスを使用してもよい。第2処理ロジック112がトランザクションを(このトランザクションが、元のデータではなく、ECCを搬送することを示すためにアサートされるバイパス指示、たとえば、バス信号とともに)受信すると、第2処理ロジック112は、元のデータのアドレスである着信トランザクションのアドレスに基づいて、ECC用の宛先アドレスを計算するためにその事前プログラムされた構成を使用してもよい。第2処理ロジック112は、次いで、ECCを第2のメモリ206内の計算されたアドレスに記憶してもよい。
【0028】
上述のバイパス指示は、任意の形態であってもよい。たとえば、バイパス指示は、構成要素がページテーブル(図示せず)を使用してメモリからデータを読み取るときに構成要素が生成する信号であってもよい。当業者が理解するように、ページテーブルは、それにより、CPU、メモリコントローラ、アクセラレータなどの構成要素がメモリ転送トランザクションのターゲットである物理アドレスを決定することを有効化する、仮想メモリアドレスと物理メモリアドレスとの間のマッピングまたは変換が記憶されるデータ構造である。ページテーブル内の1つまたは複数のビットは、ハードウェア属性情報と呼ばれることがあるものを記憶するために利用可能であってもよい。よく知られているページベースのハードウェア属性("PBHA")は、ページテーブル内に記憶されたハードウェア属性情報の一例である。ページテーブルが読み取られるとき、PBHA、またはそこから導出された信号は、メモリ転送トランザクションの部分としてバスを介してメモリシステムを通じて伝搬されてもよい。本開示の一態様によれば、いくつかの例では、上述のメモリコントローラ208または210(またはそれぞれアクセラレータ214または216)のいずれかが、PBHAビット、またはメモリ転送トランザクションの対象であるデータに関連付けられた他のハードウェア属性情報を読み取ってもよい。
【0029】
データが第1のメモリ204から第2のメモリ206(図2)に転送される例では、データを転送することは、第1のメモリコントローラ208が、データが位置する第1のメモリ204内のアドレスだけではなく、そのアドレス(またはそのアドレスを含むメモリ領域)に関連付けられたハードウェア属性情報をやはり決定するために、ページテーブルを読み取ることを含んでもよい。ハードウェア属性情報は、たとえば、第1処理および第2処理を有効にすることを示すために"1"の値を、また第1処理および第2処理をバイパスすることを示すために"0"の値を有してもよい。したがって、データが第1のメモリ204から第2のメモリ206(図2)に転送される例では、ハードウェア属性情報は、第1のメモリアクセラレータ214による誤り検査(たとえば、誤り訂正)を有効化し、第2のメモリアクセラレータ216によるパリティ生成を有効化することを示すために"1"の値を、また第1のメモリアクセラレータ214による誤り検査をバイパスすること、および第2のメモリアクセラレータ216によってパリティ生成をバイパスすることによって、誤り検査をバイパスすること示すために"0"の値を有してもよい。第1のメモリコントローラ208が、第1のメモリコントローラ208が第1のメモリ204からデータを読み取るメモリ転送トランザクションの部分としてページテーブルからこのハードウェア属性情報を読み取る例では、ハードウェア属性情報は、読取りトランザクションの部分としてデータとともに、相互接続212上で伝搬され得る。
【0030】
この例では、ハードウェア属性情報は、アクセラレータ214および216をバイパスするかどうかをメモリコントローラ208および210に示す(または代替として、パリティ動作を実行するかまたはパリティ動作をバイパスするかをアクセラレータ214および216に直接示す)。とはいえ、他の例では、そのようなハードウェア属性情報は、解読および再暗号化を実行するかまたは解読および再暗号化をバイパスするか、圧縮解除および再圧縮を実行するかまたは圧縮解除および再圧縮をバイパスするかなどをそのような構成要素に同様に示してもよい。
【0031】
図3に示すように、様々な実施形態は、上記で説明した構成要素に加えて構成要素を含んでもよい。上述のデバイス100(図1)または200(図2)の例であってもよいデバイス300は、そのような追加の構成要素を含んでもよい。たとえば、デバイス300は、1つまたは複数のバスまたは相互接続312によって相互接続された、CPU302、ダイナミックランダムアクセスメモリ("DRAM")304、不揮発性ランダムアクセスメモリ("NVRAM")306、DRAMコントローラ308、およびNVRAMコントローラ310を含んでもよい。DRAM304は、たとえば、ダブルデータレート同期DRAM("DDR-SDRAM")を備えてもよい。NVRAM306は、たとえば、フラッシュメモリを備えてもよい。DRAMコントローラ308は、DRAMアクセラレータ314を含んでもよい。同様に、NVRAMコントローラ310は、NVRAMアクセラレータ316を含んでもよい。デバイス300の前述の要素は、デバイス100または200の上述の要素と同様であってもよい。たとえば、DRAM304およびNVRAM306は、それぞれ、第1および第2のメモリ204および206の例であってもよい。
【0032】
前述の要素に加えて、デバイス300は、たとえば、NPU318などの他のプロセッサ、および記憶メモリ320など、追加のタイプのメモリを含んでもよい。記憶メモリコントローラ322は、記憶メモリ320に結合されてよい。デバイス300はまた、以下で説明する様式で機能してもよい、ルートオブトラスト("RoT")324、鍵生成器326、およびプログラマブルヒューズ328を含んでもよい。デバイス300は、スタティックRAM("SRAM")330など、他の要素を含んでもよい。動作のいくつかの例では、図1図2に関して上記で説明した様式でメモリ間で転送されるデータは、本明細書の範囲から逸脱せずに、スタティックRAM330内に一時的に記憶されてもよく、または他の場所に一時的に記憶されるかまたはバッファリングされてもよい。
【0033】
CPU302、メモリコントローラ308、310、および322、NPU318、RoT324、鍵生成器326、ヒューズ328、およびSRAM330は、システムオンチップ("SoC")332上に含まれてもよい。SoC332は、たとえば、周辺構成要素相互接続("PCI")バス334または他のシステム間バスを介して、デバイス300の他の構成要素に結合されてもよい。したがって、SoC332は、PCIコントローラ336を含んでもよい。PCIコントローラ336は、以下で説明する様式で動作する場合があるPCIアクセラレータ338を含んでもよい。PCI周辺デバイス装置340は、PCIバス334およびPCIコントローラ336を介して、SoC332と通信するように構成されてもよい。
【0034】
図4では、データをある(「第1の」)メモリから別の(「第2の」)メモリに転送するための例示的な方法400は、上述のデバイス100(図1)、200(図2)または300(図3)のうちのいずれかまたは以下の説明と矛盾しない任意の他のデバイスにおいて実行されてもよい。方法400の以下の説明において、「第1のメモリ」および「第2のメモリ」という用語は、その間でデータがデータバスまたは同様の相互接続を介して転送されてもよい任意の2つのメモリまたは他のデータ記憶デバイスを広く含んでもよい。第1のメモリおよび第2のメモリは各々、任意の数の、また任意のタイプの物理記憶デバイスを備えてもよい。
【0035】
ブロック402によって示すように、方法400は、データを第1のメモリから読み取るステップを含んでもよい。ブロック404によって示すように、方法400は、バイパス指示がアサートされるかどうかを判定するステップを含んでもよい。ブロック406および408によってそれぞれ示すように、方法400は、バイパス指示がアサートされない場合、データの第1処理および第2処理を行うステップを含んでもよい。たとえば、それぞれ、第1処理は、解読すること、パリティ検査すること、および圧縮解除することのうちの少なくとも1つを含んでもよく、第2処理は、再暗号化すること、パリティを再生成すること、および再圧縮することのうちの少なくとも1つを含んでもよい。ブロック410および412によってそれぞれ示すように、方法400は、バイパス指示がアサートされる場合、データの第1処理および第2処理を行うことをバイパスするステップを含んでもよい。ブロック414によって示すように、方法400は、バイパス指示がアサートされない場合、処理(ブロック406および408)に続いて、またはバイパス指示がアサートされる場合、バイパス(ブロック410および412)に続いてのいずれかで、データを第2のメモリ内に記憶するステップを含んでもよい。
【0036】
また、データに対応するメタデータも(データと同じメモリ内であれ、または異なるメモリ内であれ)記憶される例では、メタデータは、方法400に従って、別のメモリに同様に転送されてもよい。すなわち、上記で説明した様式で、データを第1のメモリから第2のメモリに転送することはまた、任意の関連付けられたメタデータを第1のメモリから第2のメモリに同様の様式で転送することを含んでもよい。
【0037】
図5は、機能ブロック図500を使用して、メモリ間でデータを転送するためのシステムを構成するための例示的な制御経路またはアクションのシーケンスを示す。図5に示す例は、上述のデバイス300(図3)などのデバイスがアクティブモードから休止モードに遷移する使用事例または動作シナリオに関する。アクティブモードから休止モードへの遷移において、オペレーティングシステムカーネルコンテキストデータなどのデータは、DRAM304からNVRAM306に転送されてもよい。そのような休止モードは当業者によってよく理解されているため、メモリ間でデータを転送することに直接関係しない態様については、本明細書でさらに詳細に説明しない。
【0038】
オペレーティングシステムカーネルコンテキストデータは、デバイスがアクティブモードである間、暗号化形態でDRAM304内に記憶されてもよく、同様に、デバイスが休止モードである間、暗号化形態でNVRAM306内に記憶されてもよい。以下の例では、カーネルコンテキストデータが転送される前と後の両方で、カーネルコンテキストデータにアクセスすることを有効化するために、暗号鍵が生成され、使用される。
【0039】
矢印502によって示すように、鍵生成器326は、1または複数のハードウェア鍵を生成してもよい。そのようなハードウェア鍵はソフトウェアにとって認識可能でないことがあるため、鍵生成器326は、ハードウェア鍵に対するハンドルをソフトウェアに提供してもよい。たとえば、ヒューズ328(図3)によってセキュアに符号化された情報を使用して、鍵生成器326は、公開鍵のあるタイプであってよいルート鍵("Root_key")を生成してもよい。RoT324は、ルート鍵に対するハンドルを鍵生成器326から受信してもよい。矢印508によって示すように、RoT324は、ルート鍵に対するハンドル("Handle_root")をCPU302に(たとえば、オペレーティングシステムカーネルに)提供してもよい。矢印510および514によって示すように、CPU302(たとえば、オペレーティングシステムカーネル)は、DRAMアクセラレータ314およびNVRAMアクセラレータ316がその鍵の値をソフトウェアに公開せずに、ハードウェア鍵を得るためのハンドルを使用することができるように、ハンドルをDRAMコントローラ308およびNVRAMコントローラ310に渡してもよい。それぞれ、矢印504および506によって示すように、RoT324は、同じルート鍵をDRAMアクセラレータ314とNVRAMアクセラレータ316の両方に提供してもよい。RoT324はまた、DRAMアクセラレータ314およびNVRAMアクセラレータ316が各々、ルート鍵から1つまたは複数の秘密鍵を導出するために使用してもよい鍵導出方法情報をDRAMアクセラレータ314とNVRAMアクセラレータ316の両方に提供する。RoT324は、同じ鍵導出方法情報をDRAMアクセラレータ314とNVRAMアクセラレータ316の両方に提供してもよいため、DRAMアクセラレータ314およびNVRAMアクセラレータは、それらのアクセラレータが秘密鍵を導出するたびに、同一の秘密鍵を導出してもよい。
【0040】
動作のいくつかの例では、カーネルコンテキストデータは、DRAM304内に1つの領域(または「バッファ」)のみを、またNVRAM306内に1つの領域のみを占有するため、DRAMアクセラレータ314およびNVRAMアクセラレータ316は各々、1つの秘密鍵のみを導出してもよい。動作の他の例では、カーネルコンテキストデータは、DRAM304内に2つ以上の領域を、またNVRAM306内に2つ以上の領域を占有するため、DRAMアクセラレータ314およびNVRAMアクセラレータ316は各々、2つ以上の秘密鍵を導出してもよい。図5に示す例では、DRAMアクセラレータ314およびNVRAMアクセラレータ316は各々、他方が導出する鍵と同一の1つの鍵("Derived_key_1")を導出してもよい。
【0041】
DRAM304内に記憶されたカーネルコンテキストデータは、導出鍵によって保護される。DRAMコントローラ308およびDRAMアクセラレータ314は、たとえば、CPU302など、いずれかのエンティティが導出鍵に対するハンドル("Handle_1")またはルート鍵に対するハンドル("Handle_root")を使用してDRAM304にアクセスしない限り、いずれのエンティティもDRAM304内に記憶されたカーネルコンテキストデータにアクセスすることを可能にしない。
【0042】
CPU302は、従来の様式でアクティブモードから休止モードに切り替えるかどうかを判定してもよい。その下でCPU302が動作するソフトウェアは、コンテキスト保存ソフトウェアを含んでもよい。CPU302がアクティブモードから休止モードに遷移すると判定するとき、CPU302は、コンテキスト保存ソフトウェアの制御下で、カーネルコンテキストデータのDRAM304からNVRAM306への転送を開始してもよい。CPU302は、カーネルコンテキストデータが記憶されたメモリ領域に関連付けられたページテーブル属性情報を読み取るなど、上記で説明した様式で、バイパス指示をアサートさせてもよい。結果として、カーネルコンテキストデータは、DRAMアクセラレータ314がそれを解読せずに、DRAM304内から転送され、NVRAMアクセラレータ316がそれを再暗号化せずに、NVRAM306内に転送される。CPU302が、バイパス指示をアサートさせるデータ転送の態様を制御する代替として、DRAMコントローラ308、DRAMアクセラレータ314、NVRAMコントローラ310、NVRAMアクセラレータ316、DMAエンジン(図示せず)など、任意の他の処理エンジンが他の例に関して上記で説明したようなデータ転送の態様を制御してもよい。
【0043】
この例では、データをDRAM304からNVRAM306に転送することは、CPU302が、カーネルコンテキストデータのDRAM304からNVRAM306への転送を制御することだけではなく、導出鍵("Derived_key_1")およびそのハンドル("Handle_1")のDRAMアクセラレータ314からNVRAMアクセラレータ316への転送を制御することも含んでよい。導出鍵およびそのハンドルがNVRAMアクセラレータ316に転送された後、NVRAM306内に記憶されたカーネルコンテキストデータは、カーネルコンテキストデータがDRAM304内に保存されている間に保護されたのと同様の様式で、導出鍵によって保護される。すなわち、NVRAMコントローラ310およびNVRAMアクセラレータ316は、たとえば、CPU302などのいずれかのエンティティがそのエンティティが導出鍵に対するハンドル("Handle_1")またはルート鍵に対するハンドル("Handle_root")を使用してNVRAM306にアクセスしない限り、いずれのエンティティもNVRAM306内に記憶されたカーネルコンテキストデータにアクセスすることを可能にしない。
【0044】
デバイスは、休止モードからアクティブモードに戻ってもよい。そのような例では、カーネルコンテキストデータは、NVRAM306からDRAM304に転送し戻されてもよい。カーネルコンテキストデータをDRAM304からNVRAM306に転送することに関して上記で説明した動作と同様の動作が、カーネルコンテキストデータをNVRAM306からDRAM304に転送する際に実行されてもよい。
【0045】
図6に示すように、例示的な実施形態では、メモリ間でデータを転送することは、たとえば、PCIバス634など、セキュアなシステム間データバスを介してデータ(および鍵)を転送することを含んでもよい。以下の説明は、セキュアなシステム間データバスがPCI仕様に準拠する例示的な実施形態に関するが、他の実施形態では、そのようなシステム間データバスは、バスエンドポイントにおいてデータを暗号化および解読するように構成されるバスコントローラを採用する任意のタイプのものであってもよい。PCIバス634は、第1のSoC632Aなどの第1のシステムと第2のSoC632Bなどの第2のシステムとの間に結合されてもよい。第1のSoC632A、第2のSoC632B、およびPCIバス634は、デバイス600内に含まれてもよい。第1および第2のSoC632Aおよび632Bのうちの一方は、図3に関して上記で説明したSoC332の一例であってもよく、他方は、PCI周辺デバイス340(図3)の一例であってもよい。
【0046】
第1のSoC632Aは、1つまたは複数のバスまたは相互接続612Aによって相互接続された、CPU602A、DRAMコントローラ608A、およびNVRAMコントローラ610Aを含んでもよい。DRAMコントローラ608AおよびNVRAMコントローラ610Aは、それぞれ、DRAM604AおよびNVRAM606Aに結合されてもよい。DRAMコントローラ608AおよびNVRAMコントローラ610Aは、それぞれ、DRAMアクセラレータ614AおよびNVRAMアクセラレータ616Aを含んでもよい。第1のSoC632Aはまた、RoT624Aを含んでもよい。第1のSoC632Aは、PCIバス634の第1のエンドポイントに結合されたPCIコントローラ636Aをさらに含んでもよい。PCIコントローラ636Aは、PCIアクセラレータ638Aを含んでもよい。明快のために示されていないが、第1のSoC632Aはまた、鍵生成器、プログラマブルヒューズ、他のメモリ、メモリコントローラ、プロセッサなど、SoC332(図3)に関して上記で説明した要素と同様の他の要素を含んでもよい。
【0047】
同様に、第2のSoC632Bは、1つまたは複数のバスまたは相互接続612Bによって相互接続された、CPU602B、DRAMコントローラ608B、およびNVRAMコントローラ610Bを含んでもよい。DRAMコントローラ608BおよびNVRAMコントローラ610Bは、それぞれ、DRAM604BおよびNVRAM606Bに結合されてもよい。DRAMコントローラ608BおよびNVRAMコントローラ610Bは、それぞれ、DRAMアクセラレータ614BおよびNVRAMアクセラレータ616Bを含んでもよい。第2のSoC632Bはまた、RoT624Bを含んでもよい。第2のSoC632Bは、PCIバス634の第2のエンドポイントに結合されたPCIコントローラ636Bをさらに含んでもよい。PCIコントローラ636Bは、PCIアクセラレータ638Bを含んでもよい。明快のために示されていないが、第2のSoC632Bはまた、鍵生成器、プログラマブルヒューズ、他のメモリ、メモリコントローラ、プロセッサなど、SoC332(図3)に関して上記で説明した要素と同様の他の要素を含んでもよい。
【0048】
メモリ間でデータを転送する例の以下の説明では、SoC332(図3)に関して上記で説明したものと同様の、SoC632Aおよび632Bの動作の態様は、簡潔のために、省略される場合がある。たとえば、RoT624Aおよび624Bは、上記で説明した様式で暗号化鍵を提供してもよい。データがDRAM604AからDRAM604Bに転送される例では、同一の鍵がDRAMアクセラレータ614AおよびDRAMアクセラレータ614Bに提供されてもよい。
【0049】
たとえば、トラステッドプラットフォームモジュール("TPM")640によって、他の暗号鍵がPCIコントローラ636Aおよび636Bに提供されてもよい。PCIコントローラ636Aおよび636Bに提供される鍵は、互いと同一であってもよい。TPM640は、ISO/IEC11889として知られる規格に準拠してもよい。
【0050】
PCIプロトコルは通常、セキュアデータ転送特徴を含む。送信側PCIコントローラは、当業者が理解するように、PCIバスを介してデータを伝送する前にデータを暗号化することを選択的に有効化されることができる。送信側PCIコントローラがデータを暗号化する場合、PCIプロトコルは、データパケットが暗号化されることを受信側PCIコントローラに通知し、受信側PCIコントローラは、それに応じて、それらのデータパケットを解読する。送信側PCIコントローラがデータを暗号化しない場合、PCIプロトコルは、データパケットが暗号化されないことを受信側PCIコントローラに通知し、受信側PCIコントローラは、それらのデータパケットの解読を試みない。
【0051】
図6に示す例示的な実施形態では、PCIコントローラ636Aおよび636Bは、上述のバイパス指示を検出するようにさらに構成されてよい。他の実施形態に関して上記で説明したのと同じ様式で、メモリ読取りトランザクションは、バイパス指示をデータとともに相互接続612A上で伝搬させてもよい。PCIアクセラレータ638Aは、バイパス指示がアサートされるかどうかを検出してもよい。それにより送信側PCIコントローラがPCIバスを介してデータを伝送する前にデータを暗号化することが選択的に有効化されることができる、上述のPCIセキュアデータ転送特徴を活用して、PCIアクセラレータ638Aは、バイパス指示がアサートされる場合、データの暗号化をバイパスするように構成されてもよい。
【0052】
データがPCIバス634を介して転送される前に、DRAMアクセラレータ614Aは、そのデータを保護している鍵を転送してもよい。PCIセキュアデータ転送特徴は、PCIバス634を介して鍵を転送するために利用されてもよい。データが(その中にデータが暗号化形態で存在する)DRAM604AからDRAM604Bに転送される例では、DRAMアクセラレータ614Aは、バイパス指示をアサートさせない様式で、記憶されたデータを保護するために使用される鍵をPCIコントローラ636Aに提供してもよい。PCIコントローラ636Aは、したがって、PCIバス634を介して鍵をPCIコントローラ636Bに送信する前に鍵を暗号化する。PCIコントローラ636Aは、その場合、鍵をDRAMアクセラレータ614Bに提供する前に鍵を解読する。
【0053】
データがDRAM604AからDRAM604Bに転送される例では、PCIコントローラ636Aは、データをDRAM604Aから(DRAMメモリコントローラ608Aを介して)読み取り、PCIバス634を介してデータを転送してもよい。そのようなメモリ転送トランザクションは、この例では、DRAMアクセラレータ614Aによってだけではなく、(他の例では)CPU602A、NVRAMアクセラレータ616A、またはPCIコントローラ636A(またはそのPCIアクセラレータ638A)など、他の上述のプロセッサのうちのいずれかによって開始されてもよいことに留意されたい。そのようなメモリ転送トランザクションの部分として、バイパス指示は、他の実施形態に関して上記で説明した様式でアサートされてもよい。バイパス指示がアサートされる場合、DRAMメモリコントローラ608Aおよび608Bが暗号化および解読をバイパスするだけではなく、PCIコントローラ636AがPCIバス634を介してデータをPCIコントローラ636Bに送信する前に、PCIコントローラ636Aもデータを暗号化しない。上記で説明した他の例におけるように、データはそれが(この例では、PCIバス634を介して)転送される前に再暗号化されないが、これは、データがそこからデータが読み取られるメモリ内に暗号化形態で存在し、データがそこにデータが転送されるメモリ内に同じ暗号化形態で存在し続けるためである。
【0054】
PCIコントローラ636Aは、転送されるデータパケットペイロードの部分としてバイパス指示を含むように構成されてもよい。PCIコントローラ636Bは、バイパス指示をペイロードから抽出するように構成されてもよい。PCIコントローラ636Bは、バイパス指示を受信されたデータとともにDRAMアクセラレータ614Bに提供するように構成されてもよい。この例では、DRAMアクセラレータ614Bは、バイパス指示がアサートされることを検出し、したがって、データをDRAM604B内に記憶する前にデータの解読を試みなくてもよい。
【0055】
図7では、セキュアなシステム間バス(たとえば、PCI)を使用してデータを第1のシステムから第2のシステムに転送するための方法の部分として鍵を転送するための方法700を示す。他の実施形態に関して上記で説明したように、データは、第1のシステム内のメモリの中に暗号化形態で存在してもよい。ブロック702によって示すように、方法700は、転送されているデータに関連付けられた鍵を読み取るステップを含んでもよい。ブロック704によって示すように、方法700は、第1のシステム内のデータバス(たとえば、PCI)コントローラを使用して鍵を暗号化するステップをさらに含んでもよい。ブロック706によって示すように、データバスコントローラは、次いで、システム間バスを介して鍵を(暗号化形態で)第2のシステムに送信してもよい。第2のシステム内のデータバス(たとえば、PCI)コントローラは、ブロック708によって示すように、鍵を受信し、解読してもよい。第2のシステム内のデータバスコントローラは、次いで、鍵をメモリコントローラ、メモリアクセラレータ、またはデータが第2のシステム内のメモリの中に記憶されるときにデータを保護する他のプロセッサに提供してもよい。ブロック710によって示すように、プロセッサは、鍵を記憶し、場合によっては、記憶されたデータを保護するためにその鍵を使用してもよい。
【0056】
他の実施形態に関して上記で説明したように、第1のシステム内のデータバスコントローラは、データバスコントローラがデータバスを介してデータを送信するとき、上記で言及した鍵によって保護されるデータの暗号化をバイパスしてもよい。同様に、第2のシステム内のデータバスコントローラは、データバスコントローラがデータバスを介してデータを受信するとき、データの解読をバイパスしてもよい。第2のシステム内で、データバスコントローラ、メモリコントローラ、メモリアクセラレータ、または他のプロセッサは、受信されたデータを第2のシステム内のメモリの中に記憶してもよい。データは、したがって、そのデータが第1のシステム内のメモリの中に存在するのと同じ暗号化形態で第2のシステム内のメモリの中に存在する。
【0057】
図8に示すように、メモリ間でデータを転送するためのシステムおよび方法の例示的な実施形態は、ポータブルコンピューティングデバイス("PCD")800内で提供されてもよい。PCD800は、上述のデバイス100(図1)、200(図2)、300(図3)、600(図6)などのうちのいずれかの一例であってもよい。PCD800の構成要素間の相互接続は、図8において概念的な様式で示されており、データバスまたは他の物理データ相互接続を表すことを意図しないことに留意されたい。むしろ、PCD800の様々なプロセッサおよびメモリは、図1図3および図6に関して上記で説明したのと同様の様式で相互接続されてよい。
【0058】
PCD800は、SoC802を含んでもよい。SoC802は、CPU804、GPU806、DSP807、アナログ信号プロセッサ808、または他のプロセッサを含んでもよい。CPU804は、第Nのコア804Nに至るまで、第1のコア804A、第2のコア804Bなど、複数のコアを含んでもよい。SoC802のいくつかの例では、CPU804はアプリケーションプロセッサと呼ばれる場合がある。
【0059】
ディスプレイコントローラ810およびタッチスクリーンコントローラ812は、CPU804に結合されてもよい。SoC802の外部にあるタッチスクリーンディスプレイ814は、ディスプレイコントローラ810およびタッチスクリーンコントローラ812に結合されてもよい。PCD800は、CPU804に結合されたビデオデコーダ816をさらに含んでもよい。ビデオ増幅器818は、ビデオデコーダ816およびタッチスクリーンディスプレイ814に結合されてもよい。ビデオポート820は、ビデオ増幅器818に結合されてもよい。ユニバサールシリアルバス("USB")コントローラ822もCPU804に結合されてよく、USBポート824はUSBコントローラ822に結合されてもよい。加入者識別モジュール("SIM")カード826も、CPU804に結合されてよい。
【0060】
1つまたは複数のメモリがCPU804に結合されてもよい。1つまたは複数のメモリは、揮発性メモリと不揮発性メモリの両方を含んでもよい。揮発性メモリの例は、スタティックランダムアクセスメモリ("SRAM")828およびダイナミックRAM("DRAM")830および831を含む。そのようなメモリは、DRAM830など、SoC802の外部にあっても、またはDRAM831など、SoC802の内部にあってもよい。CPU804に結合されたDRAMコントローラ832は、DRAM830および831へのデータの書込みおよびそこからのデータの読取りを制御してもよい。他の実施形態では、そのようなDRAMコントローラは、CPU804など、プロセッサ内に含まれてもよい。
【0061】
ステレオオーディオコーデック834が、アナログ信号プロセッサ808に結合されてもよい。さらに、オーディオ増幅器836が、ステレオオーディオコーデック834に結合されてもよい。第1および第2のステレオスピーカ838および840が、それぞれ、オーディオ増幅器836に結合されてもよい。加えて、マイクロフォン増幅器842がステレオオーディオコーデック834に結合されてよく、マイクロフォン844がマイクロフォン増幅器842に結合されてもよい。周波数変調("FM")ラジオチューナ846が、ステレオオーディオコーデック834に結合されてもよい。FMアンテナ848が、FMラジオチューナ846に結合されてもよい。さらに、ステレオヘッドフォン850が、ステレオオーディオコーデック834に結合されてもよい。CPU804に結合されてもよい他のデバイスは、1つまたは複数のデジタル(たとえば、CCDまたはCMOS)カメラ852を含む。加えて、キーパッド860、マイクロフォンを備えたモノヘッドセット862、および振動デバイス864が、アナログ信号プロセッサ808に結合されてもよい。
【0062】
無線周波数(RF)トランシーバまたはモデム854がアナログ信号プロセッサ808およびCPU804に結合されてもよい。RFスイッチ856がモデム854およびRFアンテナ858に結合されてもよい。例示的な実施形態では、モデム854はCPU804および様々な他のプロセッサを有する同じSoC802内に含まれているが、他の実施形態では、そのようなモデムは、そのようなSoC、たとえば、別個のチップの外部にあってもよく、それ自体があるタイプのSoCと呼ばれる場合がある。
【0063】
SoC802は、1つまたは複数の内部のまたはオンチップの熱センサ870Aを有してもよく、1つまたは複数の外部のまたはオフチップの熱センサ870Bに結合されてもよい。アナログデジタル変換機("ADC")コントローラ872は、熱センサ870Aおよび870Bによってもたらされた電圧降下をデジタル信号に変換してもよい。電源874および電力管理集積回路("PMIC")876が電力をSoC802に供給してもよい。
【0064】
SoC802内部のバスまたは他のデータ相互接続は、明快のために示されていないが、SoC802は、PCIバス880を介してPCI周辺デバイス878に結合されてもよい。PCI周辺デバイス878の例は、カメラデータバッファ、グラフィックスデータバッファ、またはメモリを有する他の周辺デバイスを含んでもよい。
【0065】
ファームウェアまたはソフトウェアは、DRAM830または831、SRAM828など、上述のメモリのうちのいずれかの中に記憶されてもよく、またはその上でソフトウェアまたはファームウェアが実行するプロセッサハードウェアによって直接アクセス可能なローカルメモリ内に記憶されてもよい。そのようなファームウェアまたはソフトウェアの実行が上述の方法のうちのいずれかの態様を制御する場合があるか、または上述のシステムのうちのいずれかの態様を構成する場合がある。ファームウェアまたはソフトウェアをプロセッサハードウェアによる実行のためにコンピュータ可読形態でその中に記憶した任意のそのようなメモリまたは他の一時的記憶媒体は、その用語が特許語彙において理解されるような「コンピュータ可読媒体」の一例であり得る。
【0066】
本開示による、メモリ間でデータを転送することは、上述の例示的なシステム、方法、コンピュータ可読媒体などのうちのいずれかにおいて具現されてもよい。代替的な実施形態は、本発明が関係する技術分野の当業者には明らかとなろう。したがって、選択された態様が詳細に示され説明されてきたが、様々な置換および改変がそれらに行われてよいことを理解されよう。
【0067】
以下の番号付き条項において、実装例が説明される。
【0068】
1.メモリ間でデータを転送するための方法であって、
メモリ転送トランザクションに関連付けられたデータを第1のメモリから読み取るステップと、
メモリ転送トランザクションに関連付けられたバイパス指示がアサートされるかどうかを判定するステップと、
データを第1のメモリから第2のメモリに転送するステップであって、バイパス指示がアサートされる場合、データの第1処理を行うことをバイパスするステップを含み、データの第2処理を行うことをバイパスするステップをさらに含む、転送するステップと、
データを第2のメモリ内に記憶するステップと
を含む、方法。
【0069】
2.データを第1のメモリから第2のメモリに転送するステップが、バイパス指示がアサートされない場合、第1のメモリから読み取られたデータの第1処理を行うステップと、バイパス指示がアサートされない場合、第1処理から得られたデータの第2処理を行うステップとをさらに含む、条項1の方法。
【0070】
3.第2処理を行うステップが、第1処理の逆動作を含む、条項2の方法。
【0071】
4.
第1処理を行うステップが、解読するステップ、パリティ検査するステップ、および圧縮解除するステップのうちの少なくとも1つを含み、
第2処理を行うステップが、暗号化するステップ、パリティを生成するステップ、および圧縮するステップのうちの少なくとも1つを含む
条項3の方法。
【0072】
5.
データを読み取るステップが、データを第1のメモリ領域から読み取るステップを含み、
第1のメモリから読み取られたデータの第1処理を行うステップが、第1のメモリ領域から読み取られたデータを解読するステップを含み、
第2処理を行うステップが、解読するステップから得られたデータを再暗号化するステップを含み、
データを記憶するステップが、解読するステップから得られたデータを第2のメモリ領域内に記憶するステップを含み、
バイパス指示が、暗号化鍵が第1のメモリ領域および第2のメモリ領域に共通であることを示す
条項3の方法。
【0073】
6.第1のメモリ領域に関連付けられたページテーブル属性情報に基づいて、バイパス指示を生成するステップをさらに含む、条項5の方法。
【0074】
7.
データに関連付けられたメタデータを第1のメモリから読み取るステップと、
メタデータを第1のメモリから第2のメモリに転送するステップであって、第1のメモリから読み取られたデータの第1処理を行うステップが、バイパス指示がアサートされない場合、メタデータを使用するステップを含み、第1処理を行うステップをバイパスするステップが、バイパス指示がアサートされる場合、メタデータを保存するステップを含む、転送するステップと、
保存されたメタデータを第2のメモリ内に記憶するステップと
をさらに含む、条項2の方法。
【0075】
8.
データに関連付けられた鍵を読み取るステップと、
データバスに結合された第1のデータバスコントローラを使用して、鍵を暗号化するステップと、
第1のデータバスコントローラおよびデータバスを使用して、暗号化鍵を第1のメモリから第2のメモリに転送するステップと、
データバスに結合された第2のデータバスコントローラを使用して、暗号化鍵を解読するステップと、
解読鍵をデータに関連して第2のメモリ内に記憶するステップと
をさらに含む、条項1の方法。
【0076】
9.データバスが周辺構成要素相互接続(PCI)バスである、条項8の方法。
【0077】
10.メモリ間でデータを転送するためのシステムであって、
第1のメモリと、
第2のメモリと、
第1処理ロジックおよび第2処理ロジックを含むメモリ転送制御ロジックと
を備え、前記メモリ転送処理ロジックが、
メモリ転送トランザクションに関連付けられたデータを第1のメモリから読み取ることと、
メモリ転送トランザクションに関連付けられたバイパス指示がアサートされるかどうかを判定することと、
バイパス指示がアサートされる場合、データへの第1処理ロジックの適用をバイパスすることと、
バイパス指示がアサートされる場合、第1処理ロジックの出力への第2処理ロジックの適用をバイパスすることと、
データを第2のメモリ内に記憶することと
を行うように構成される、システム。
【0078】
11.メモリ転送制御ロジックが、
バイパス指示がアサートされない場合、第1のメモリから読み取られたデータに第1処理ロジックを適用することと、
バイパス指示がアサートされない場合、第1処理ロジックの出力に第2処理ロジックを適用することと
を行うようにさらに構成される、条項10のシステム。
【0079】
12.第1処理ロジックおよび第2処理ロジックが、逆動作を実行するように構成される、条項11のシステム。
【0080】
13.
第1処理ロジックが、解読すること、パリティ検査すること、および圧縮解除することのうちの少なくとも1つを実行するように構成され、
第2処理ロジックが、暗号化すること、パリティを生成すること、および圧縮することのうちの少なくとも1つを実行するように構成される
条項12のシステム。
【0081】
14.
第1処理ロジックが、データを第1のメモリ領域から読み取り、データを解読するように構成され、
第2処理ロジックが、第1処理ロジックによって解読されたデータを再暗号化し、第2処理ロジックによって再暗号化されたデータを第2のメモリ領域内に記憶するように構成され、
バイパス指示が、暗号化鍵が第1のメモリ領域および第2のメモリ領域に共通であることを示す
条項12のシステム。
【0082】
15.メモリ転送制御ロジックが、第1のメモリ領域に関連付けられたページテーブル属性情報に基づいて、バイパス指示を生成するように構成される、条項14のシステム。
【0083】
16.メモリ転送制御ロジックが、
データに関連付けられたメタデータを第1のメモリから読み取ることと、
バイパス指示がアサートされない場合、メタデータを使用することによって、第1のメモリから読み取られたデータに第1処理ロジックを適用することと、
バイパス指示がアサートされる場合、メタデータを保存するために第1処理ロジックの適用をバイパスすることと、
保存されたメタデータを第2のメモリ内に記憶することと
を行うようにさらに構成される、条項10のシステム。
【0084】
17.メモリ転送制御ロジックが、
第1のシステム内の第1のデータバスコントローラであって、第1のシステムが第1のメモリを含み、
データに関連付けられた鍵を読み取ることと、
鍵を暗号化することと、
暗号化鍵をデータバス上で転送することと
を行うように構成される
第1のデータバスコントローラと、
データバスによって第1のシステムに結合された第2のシステム内の第2のデータバスコントローラであって、第2のシステムが第2のメモリを含み、
暗号化鍵をデータバス上で受信することと、
暗号化鍵を解読することと、
解読鍵をデータに関連付けられた第2のメモリ内に記憶することと
を行うように構成される
第2のデータバスコントローラと
を備える、条項10のシステム。
【0085】
18.データバスが周辺構成要素相互接続(PCI)バスである、条項17のシステム。
【0086】
19.
第1処理ロジックが、第1のメモリに関連付けられ、
データを第1のメモリから読み取ることと、
バイパス指示がアサートされるかどうかを判定することと、
バイパス指示がアサートされない場合、第1のメモリから読み取られたデータを処理することと、
バイパス指示がアサートされる場合、第1のメモリから読み取られたデータを処理することをバイパスすることと
を行うように構成され、
第2処理ロジックが、第2のメモリに関連付けられ、
バイパス指示がアサートされるかどうかを判定することと、
バイパス指示がアサートされない場合、第1処理ロジックによって出力されたデータを処理することと、
バイパス指示がアサートされる場合、第1のメモリから読み取られたデータを処理することをバイパスすることと、
バイパス指示がアサートされない場合、第2処理ロジックによって出力されたデータを第2のメモリ内に記憶することと、
バイパス指示がアサートされる場合、第1のメモリから読み取られたデータを第2のメモリ内に記憶することと
を行うように構成される、条項10のシステム。
【0087】
20.
第1処理ロジックが第1のメモリアクセラレータを備え、
第2処理ロジックが第2のメモリアクセラレータを備える
条項19のシステム。
【0088】
21.メモリ間でデータを転送するためのシステムであって、
メモリ転送トランザクションに関連付けられたデータを第1のメモリから読み取るための手段と、
メモリ転送トランザクションに関連付けられたバイパス指示がアサートされるかどうかを判定するための手段と、
データを第1のメモリから第2のメモリに転送するための手段であって、バイパス指示がアサートされる場合、データの第1処理を行うことをバイパスするための手段を含み、バイパス指示がアサートされる場合、データの第2処理を行うことをバイパスするための手段をさらに含む、転送するための手段と、
データを第2のメモリ内に記憶するための手段と
を備える、システム。
【0089】
22.転送するための手段が、
バイパス指示がアサートされない場合、データの第1処理を行うための手段と、
バイパス指示がアサートされない場合、第1処理を行うための手段の結果の第2処理を行うための手段と
をさらに含む、条項21のシステム。
【0090】
23.第2処理を行うための手段が、第1処理を行うための手段の逆を含む、条項21のシステム。
【0091】
24.
第1処理を行うための手段が、解読するための手段、パリティ検査するための手段、および圧縮解除するための手段のうちの少なくとも1つを含み、
第2処理を行うための手段が、暗号化するための手段、パリティを生成するための手段、および圧縮するための手段のうちの少なくとも1つを含む
条項23のシステム。
【0092】
25.
第1処理を行うための手段が、解読するための手段を含み、
第2処理を行うための手段が、再暗号化するための手段を含み、
データを読み取るための手段が、データを第1のメモリ領域から読み取るための手段を含み、
データを記憶するための手段が、データを第2のメモリ領域内に記憶するための手段を含み、
バイパス指示が、暗号化鍵が第1のメモリ領域および第2のメモリ領域に共通であることを示す
条項23のシステム。
【0093】
26.第1のメモリ領域に関連付けられたページテーブル属性情報に基づいて、バイパス指示を生成するための手段をさらに備える、条項25のシステム。
【0094】
27.
データを読み取るための手段がさらに、データに関連付けられたメタデータを第1のメモリから読み取るためであり、
データを転送するための手段がさらに、メタデータを第1のメモリから第2のメモリに転送するためであり、データの第1処理を行うための手段が、バイパス指示がアサートされない場合、メタデータを使用するための手段と、バイパス指示がアサートされる場合、メタデータを保存するための手段とを含み、
データを記憶するための手段がさらに、保存されたメタデータを第2のメモリ内に記憶するためである
条項21のシステム。
【0095】
28.
データに関連付けられた鍵を読み取るための手段と、
データバスに結合された第1のデータバスコントローラを使用して、鍵を暗号化するための手段と、
暗号化鍵を第1のメモリから第2のメモリに転送するための手段と、
データバスに結合された第2のデータバスコントローラを使用して、暗号化鍵を解読するための手段と、
解読鍵をデータに関連して第2のメモリ内に記憶するための手段と
をさらに備える、条項21のシステム。
【0096】
29.メモリ間でデータを転送するためのコンピュータ可読媒体であって、その上にコンピュータ実行可能形態で命令を記憶した非一時的コンピュータ可読媒体を備え、命令が、コンピューティングデバイスの処理システムによって実行されると、
メモリ転送トランザクションに関連付けられたデータを第1のメモリから読み取ることと、
メモリ転送トランザクションに関連付けられたバイパス指示がアサートされるかどうかを判定することと、
バイパス指示がアサートされる場合、データの第1処理を行うことをバイパスすることと、
バイパス指示がアサートされる場合、データの第2処理を行うことをバイパスすることと、
データを第2のメモリ内に記憶することと
を行うように処理システムを構成する、コンピュータ可読媒体。
【0097】
30.命令が、
バイパス指示がアサートされない場合、データの第1処理を行うことと、
バイパス指示がアサートされない場合、データの第1処理の結果の第2処理を行うことと
を行うように処理システムをさらに構成する、条項29のコンピュータ可読媒体。
【0098】
31.
命令が、解読すること、パリティ検査すること、および圧縮解除することのうちの少なくとも1つを実行するように処理システムを構成することによって、データの第1処理を行うように処理システムを構成し、
命令が、暗号化すること、パリティを生成すること、および圧縮することのうちの少なくとも1つを実行するように処理システムを構成することによって、データの第1処理の結果の第2処理を行うように処理システムを構成する
条項30のコンピュータ可読媒体。
【0099】
32.命令が、ページテーブル属性情報に基づいて、バイパス指示を生成するように処理システムをさらに構成する、条項30のコンピュータ可読媒体。
【0100】
33.命令が、
データに関連付けられたメタデータを第1のメモリから読み取ることと、
メタデータを第1のメモリから第2のメモリに転送することであって、命令が、バイパス指示がアサートされない場合、メタデータを使用してデータの第1処理を行うように処理システムを構成し、バイパス指示がアサートされる場合、メタデータを保存するためにデータの第1処理行うことをバイパスするように処理システムを構成する、転送することと、
保存されたメタデータを第2のメモリ内に記憶することと
を行うように処理システムをさらに構成する、条項30のコンピュータ可読媒体。
【0101】
34.命令が、
バイパス指示がアサートされる場合、データに関連付けられた鍵を読み取ることと、
データバスに結合された第1のデータバスコントローラを使用して、鍵を暗号化することと、
第1のデータバスコントローラおよびデータバスを使用して、暗号化鍵を第1のメモリから第2のメモリに転送することと、
データバスに結合された第2のデータバスコントローラを使用して、暗号化鍵を解読することと、
解読鍵をデータに関連して第2のメモリ内に記憶することと
を行うように処理システムをさらに構成する、条項30のコンピュータ可読媒体。
【符号の説明】
【0102】
100 コンピューティングデバイス、デバイス
102 プロセッサ
104 第1のメモリ、メモリ
106 第2のメモリ、メモリ
108 1つまたは複数のバスまたは他のデータ通信相互接続
110 第1処理ロジック
112 第2処理ロジック
118 領域
120 領域
200 コンピューティングデバイス、デバイス
202 CPU
204 第1のメモリ、メモリ
206 第2のメモリ、メモリ
208 第1のメモリコントローラ、メモリコントローラ
210 第2のメモリコントローラ、メモリコントローラ
212 相互接続
214 第1のメモリアクセラレータ、アクセラレータ
216 第1のメモリアクセラレータ、アクセラレータ
222 領域
224 領域
300 デバイス
302 CPU
304 ダイナミックランダムアクセスメモリ("DRAM")
306 不揮発性ランダムアクセスメモリ("NVRAM")
308 DRAMコントローラ、メモリコントローラ
310 NVRAMコントローラ、メモリコントローラ
312 バスまたは相互接続
314 DRAMアクセラレータ
316 NVRAMアクセラレータ
318 NPU
320 記憶メモリ
322 記憶メモリコントローラ、コントローラ
324 ルートオブトラスト("RoT")
326 鍵生成器
328 プログラマブルヒューズ、ヒューズ
330 スタティックRAM("SRAM")
332 システムオンチップ("SoC")
334 周辺構成要素相互接続("PCI")バス
336 PCIコントローラ
338 PCIアクセラレータ
340 PCI周辺デバイス
400 方法
500 機能ブロック図
600 デバイス
602A CPU
602B CPU
604A DRAM
604B DRAM
606A NVRAM\
606B NVRAM
608A DRAMコントローラ
608B DRAMコントローラ
610A NVRAMコントローラ
610B NVRAMコントローラ
612A 相互接続
612B 相互接続
614A DRAMアクセラレータ
614B DRAMアクセラレータ
616A NVRAMアクセラレータ
616B NVRAMアクセラレータ
624A RoT
624B RoT
632A 第1のSoC
632B 第2のSoC
634 PCIバス
636A PCIコントローラ
636B PCIコントローラ
638A PCIアクセラレータ
638B PCIアクセラレータ
640 トラステッドプラットフォームモジュール("TPM")
700 方法
800 ポータブルコンピューティングデバイス("PCD")
802 SoC
804 CPU
804A 第1のコア
804B 第2のコア
804 第Nのコア
806 GPU
807 DSP
808 アナログ信号プロセッサ
810 ディスプレイコントローラ
812 タッチ-スクリーンコントローラ
814 タッチスクリーンディスプレイ
816 ビデオデコーダ
818 ビデオ増幅器
820 ビデオポート
822 ユニバサールシリアルバス("USB")コントローラ
824 USBポート
826 加入者識別モジュール("SIM")カード
828 スタティックランダムアクセスメモリ("SRAM")
830 ダイナミックRAM("DRAM")
831 ダイナミックRAM("DRAM")
834 ステレオオーディオコーデック
836 オーディオ増幅器
838 第1のステレオスピーカ
840 第2のステレオスピーカ
842 マイクロフォン増幅器
844 マイクロフォン
846 周波数変調("FM")ラジオチューナ
848 FMアンテナ
850 ステレオヘッドフォン
852 デジタル(たとえば、CCDまたはCMOS)カメラ
854 無線周波数(RF)トランシーバまたはモデム
856 RFスイッチ
858 RFアンテナ
860 キーパッド
862 マイクロフォンを備えたモノヘッドセット
864 振動デバイス
870A 内部のまたはオンチップの熱センサ、熱センサ
870B 外部のまたはオフチップの熱センサ、熱センサ
872 アナログデジタル変換機("ADC")コントローラ
874 電源
876 電力管理集積回路("PMIC")
878 PCI周辺デバイス
880 PCIバス
図1
図2
図3
図4
図5
図6
図7
図8