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

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

▶ アーム・リミテッドの特許一覧

特表2024-513553スタッシングトランザクションを処理するための装置及び方法
<>
  • 特表-スタッシングトランザクションを処理するための装置及び方法 図1
  • 特表-スタッシングトランザクションを処理するための装置及び方法 図2
  • 特表-スタッシングトランザクションを処理するための装置及び方法 図3
  • 特表-スタッシングトランザクションを処理するための装置及び方法 図4
  • 特表-スタッシングトランザクションを処理するための装置及び方法 図5
  • 特表-スタッシングトランザクションを処理するための装置及び方法 図6
  • 特表-スタッシングトランザクションを処理するための装置及び方法 図7
  • 特表-スタッシングトランザクションを処理するための装置及び方法 図8
  • 特表-スタッシングトランザクションを処理するための装置及び方法 図9
  • 特表-スタッシングトランザクションを処理するための装置及び方法 図10
  • 特表-スタッシングトランザクションを処理するための装置及び方法 図11
  • 特表-スタッシングトランザクションを処理するための装置及び方法 図12
  • 特表-スタッシングトランザクションを処理するための装置及び方法 図13
  • 特表-スタッシングトランザクションを処理するための装置及び方法 図14
  • 特表-スタッシングトランザクションを処理するための装置及び方法 図15
  • 特表-スタッシングトランザクションを処理するための装置及び方法 図16
  • 特表-スタッシングトランザクションを処理するための装置及び方法 図17
  • 特表-スタッシングトランザクションを処理するための装置及び方法 図18
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-26
(54)【発明の名称】スタッシングトランザクションを処理するための装置及び方法
(51)【国際特許分類】
   G06F 12/14 20060101AFI20240318BHJP
   G06F 21/57 20130101ALI20240318BHJP
【FI】
G06F12/14 510A
G06F21/57
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023560312
(86)(22)【出願日】2022-02-14
(85)【翻訳文提出日】2023-10-25
(86)【国際出願番号】 GB2022050386
(87)【国際公開番号】W WO2022214776
(87)【国際公開日】2022-10-13
(31)【優先権主張番号】2104930.9
(32)【優先日】2021-04-07
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
(71)【出願人】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】トーマス、テシル
(72)【発明者】
【氏名】エラド、ユヴァル
(72)【発明者】
【氏名】ランガラジャン、サヌナサン
(72)【発明者】
【氏名】ガルシア-トビン、カルロス
【テーマコード(参考)】
5B017
【Fターム(参考)】
5B017AA01
5B017BA01
5B017CA01
(57)【要約】
装置及び方法が提供され、この装置は、デバイスを1つ以上の処理要素に結合し、各処理要素が信頼できる実行環境で動作するインターコネクト回路と、スタッシングトランザクションをデバイスから受信し、許可されたスタッシングトランザクションを1つ以上の処理要素のうちの少なくとも1つにとってアクセス可能な所与のストレージ構造にリダイレクトするためのセキュアスタッシング決定回路と、を備える。セキュアスタッシング決定回路は、所与のスタッシングトランザクションを受信することに応答して、所与のスタッシングトランザクションが所与の信頼できる実行環境に関連付けられた信頼できる実行環境識別子を含むかどうかを判定し、信頼できる実行環境識別子に依存するリダイレクション要件が満たされたときに、所与のスタッシングトランザクションを許可されたスタッシングトランザクションとして扱うように構成されている。
【選択図】図12
【特許請求の範囲】
【請求項1】
少なくとも1つが信頼できる実行環境で動作するように構成された1つ以上の処理要素にデバイスを結合するインターコネクト回路と、
前記デバイスからスタッシングトランザクションを受信し、許可されたスタッシングトランザクションを、前記1つ以上の処理要素のうちの少なくとも1つにとってアクセス可能な所与のストレージ構造にリダイレクトするためのセキュアスタッシング決定回路と、を備え、
前記セキュアスタッシング決定回路は、所与のスタッシングトランザクションを受信することに応答して、前記所与のスタッシングトランザクションが所与の信頼できる実行環境に関連付けられた信頼できる実行環境識別子を含むか否かを判定し、前記信頼できる実行環境識別子に依存するリダイレクション要件が満たされたときに、前記所与のスタッシングトランザクションを許可されたスタッシングトランザクションとして扱うように構成されている、装置。
【請求項2】
前記スタッシングトランザクションの各々は、メモリ内の位置に関連付けられたデータにアクセスするための要求を含む、請求項1に記載の装置。
【請求項3】
前記スタッシングトランザクションの各々は、メモリ内の位置に関連付けられた位置にデータを書き込むための書き込み要求を含み、
前記セキュアスタッシング決定回路は、前記リダイレクション要件が満たされたときに、前記データを前記所与のストレージ構造に書き込むように構成されている、請求項1又は2に記載の装置。
【請求項4】
前記リダイレクション要件が満たされているかどうかは、
前記信頼できる実行環境識別子が存在するかどうか、及び/又は、前記信頼できる実行環境識別子の値、に依存する、請求項1~3のいずれか一項に記載の装置。
【請求項5】
前記セキュアスタッシング決定回路は、前記所与のストレージ構造が信頼できる実行環境内にあるとき、前記信頼できる実行環境識別子が存在しないか又は無効であるときに、前記所与のスタッシングトランザクションを拒否するように構成されている、請求項1~4のいずれか一項に記載の装置。
【請求項6】
前記セキュアスタッシング決定回路は、前記所与のスタッシングトランザクションを拒否することに応答して、エラー信号をアサートするように構成されている、請求項5に記載の装置。
【請求項7】
前記所与のストレージ構造は、前記許可されたスタッシングトランザクションに応じて選択されている、請求項1~6のいずれか一項に記載の装置。
【請求項8】
前記セキュアスタッシング決定回路は、前記所与のスタッシングトランザクションが前記所与のストレージ構造を示すステアリングタグを含むかどうかを判定するように構成されており、前記セキュアスタッシング決定回路が、前記所与のスタッシングトランザクションが前記ステアリングタグを含むと判定したとき、前記リダイレクション要件が満たされているかどうかは、前記ステアリングタグに更に依存する、請求項1~7のいずれか一項に記載の装置。
【請求項9】
前記セキュアスタッシング決定回路は、前記所与のストレージ構造が第1の信頼できる実行環境内にあり、かつ前記信頼できる実行環境識別子が存在しないか又は無効であるとき、前記所与のストレージ構造が第1の信頼できる実行環境内にあり、かつ前記信頼できる実行環境識別子が異なる信頼できる実行環境に関連付けられているとき、前記ステアリングタグが無効であるとき、のうちの少なくとも一つのときに、前記所与のスタッシングトランザクションを拒否するように構成されている、請求項8に記載の装置。
【請求項10】
前記所与のストレージ構造は、前記信頼できる実行環境識別子の値、及び/又は、前記ステアリングタグの値、に応じて選択される、請求項8又は9に記載の装置。
【請求項11】
前記セキュアスタッシング決定回路は、前記ステアリングタグが存在しない場合を除き、前記ステアリングタグの前記値に応じて前記所与のストレージ構造を選択するように構成されている、請求項10に記載の装置。
【請求項12】
前記所与のスタッシングトランザクションは、メモリ内の所与の位置にあるデータにアクセスする要求を含み、前記セキュアスタッシング決定回路は、前記信頼される実行環境識別子に基づいて、前記所与のメモリ内の位置に記憶された前記データを暗号化するための暗号化キーを示す暗号化キー識別子を識別するように構成されている、請求項1~11のいずれか一項に記載の装置。
【請求項13】
前記スタッシングトランザクションの各々は、メモリ内の位置に関連付けられた位置にデータを書き込むための書き込み要求を含み、
前記セキュアスタッシング決定回路は、前記暗号化キー識別子及び前記データを前記所与のストレージ構造に書き込むように構成されている、請求項12に記載の装置。
【請求項14】
前記所与のストレージ構造は、キャッシュを備える、請求項1~13のいずれか一項に記載の装置。
【請求項15】
前記セキュアスタッシング決定回路は、前記信頼できる実行環境識別子に基づいて、前記キャッシュの少なくとも1つの所与のキャッシュラインが少なくとも1つの他のキャッシュにも保持されることを許可されるかどうか、を制御するように構成されている、請求項14に記載の装置。
【請求項16】
複数のデバイスの階層構造内のデバイスの第1のレベルにおいて提供されるルートポートを備え、前記デバイスが前記複数のデバイスの階層構造内に提供されており、かつ前記ルートポートを介して前記インターコネクトに結合されている、請求項1~15のいずれか一項に記載の装置。
【請求項17】
前記デバイスは、パケットネットワーク内にリクエスタデバイスを備え、前記リクエスタデバイスは、前記インターコネクトへの前方伝播のために、前記パケットネットワークのパケットプロトコルに従って前記スタッシングトランザクションを前記ルートポートに送信するように構成されている、請求項16に記載の装置。
【請求項18】
前記パケットプロトコルは、PCIe(Peripheral Component Interconnect Express)プロトコルである、請求項17に記載の装置。
【請求項19】
前記ルートポートは、前記セキュアスタッシング決定回路を備える、請求項16~18のいずれか一項に記載の装置。
【請求項20】
前記インターコネクトは、メモリの一部分へのアクセスを制御する役割を担うホームノード回路を備え、前記ホームノード回路は、前記セキュアスタッシング決定回路を備える、請求項1~18のいずれか一項に記載の装置。
【請求項21】
トランザクションをスタッシングする方法であって、前記方法は、
インターコネクト回路を介して、少なくとも1つが信頼できる実行環境で動作するように構成された1つ以上の処理要素に結合されたデバイスからスタッシングトランザクションを受信することと、
許可されたスタッシングトランザクションを、前記1つ以上の処理要素のうちの少なくとも1つにとってアクセス可能な所与のストレージ構造にリダイレクトすることと、
所与のスタッシングトランザクションを受信することに応答して、前記所与のスタッシングトランザクションが、所与の信頼できる実行環境に関連付けられた信頼できる実行環境識別子を含むかどうかを判定することと、前記信頼できる実行環境識別子に依存するリダイレクション要件が満たされたときに、前記所与のスタッシングトランザクションを許可されたスタッシングトランザクションとして扱うことと、
を含む方法。
【発明の詳細な説明】
【技術分野】
【0001】
本技法は、データ処理の分野に関する。
【0002】
データ処理システムでは、1つ以上の処理要素が、インターコネクトを介して1つ以上のデバイスに結合され得る。例えば、デバイスは、バスマスタデバイス、ネットワークインターフェースコントローラ、ディスプレイコントローラなどを含み得る。デバイスは、インターコネクトにメモリアクセス要求(デバイストランザクションとも呼ばれる)を発行し、デバイス及び1つ以上の処理要素にとってアクセス可能なメモリ内の特定の位置へのメモリアクセスを要求することが可能であり得る。
【0003】
本技法の第1の例から見ると、
少なくとも1つが信頼できる実行環境で動作するように構成された1つ以上の処理要素にデバイスを結合するインターコネクト回路と、デバイスからスタッシングトランザクションを受信し、許可されたスタッシングトランザクションを、1つ以上の処理要素のうちの少なくとも1つにとってアクセス可能な所与のストレージ構造にリダイレクトするためのセキュアスタッシング決定回路と、を備え、
セキュアスタッシング決定回路は、所与のスタッシングトランザクションを受信することに応答して、この所与のスタッシングトランザクションが所与の信頼できる実行環境に関連付けられた信頼できる実行環境識別子を含むか否かを判定し、この信頼できる実行環境識別子に依存するリダイレクション要件が満たされたときに、この所与のスタッシングトランザクションを許可されたスタッシングトランザクションとして扱うように構成されている、装置が提供される。
【0004】
本技法の別の例から見ると、トランザクションをスタッシングする方法であって、
インターコネクト回路を介して、少なくとも1つが信頼できる実行環境で動作するように構成された1つ以上の処理要素に結合されたデバイスからスタッシングトランザクションを受信することと、
許可されたスタッシングトランザクションを、1つ以上の処理要素のうちの少なくとも1つにとってアクセス可能な所与のストレージ構造にリダイレクトすることと、
所与のスタッシングトランザクションを受信することに応答して、所与のスタッシングトランザクションが、所与の信頼できる実行環境に関連付けられた信頼できる実行環境識別子を含むかどうかを判定することと、信頼できる実行環境識別子に依存するリダイレクション要件が満たされたときに、所与のスタッシングトランザクションを許可されたスタッシングトランザクションとして扱うことと、を含む方法が提供される。
【0005】
本技法の更なる態様、特徴、及び利点は、添付の図面と併せて読まれる以下の例の説明から明らかとなる。
【図面の簡単な説明】
【0006】
図1】データ処理装置の例を概略的に示す。
図2】処理回路が動作することができるいくつもの領域を示す。
図3】グラニュール保護ルックアップをサポートする処理システムの例を示す。
図4】いくつもの物理アドレス空間の、メモリシステム内の位置を識別するシステム物理アドレス空間上での別名化を概略的に示す。
図5】有効なハードウェア物理アドレス空間を分割し、それによってアーキテクチャ上の異なる物理アドレス空間が、システム物理アドレス空間のそれぞれの部分へのアクセスを有する例を示す。
図6】処理回路の現在の動作領域を判定する方法を示すフロー図である。
図7】仮想アドレスを物理アドレスに変換するために使用されるページテーブルエントリのページテーブルエントリフォーマットの例を示す。
図8】所与のメモリアクセス要求によってアクセスされる物理アドレス空間を選択する方法を示すフロー図である。
図9】どの物理アドレス空間が所与の物理アドレスにアクセスを許可されているかを示すグラニュール保護情報を提供するためのグラニュール保護テーブルのエントリの例を示す。
図10】グラニュール保護ルックアップを実行する方法を示すフロー図である。
図11】アドレス変換及びグラニュール保護情報フィルタリングのいくつものステージを示す。
図12】インターコネクトを介して接続された複数のノードを含むデータ処理システムの一例を示す。
図13】スタッシングトランザクションの一例を示す。
図14】セキュアスタッシング決定回路の一例を示す。
図15】セキュアスタッシング決定回路に格納され得るターゲットキャッシュテーブルの一例を示す。
図16】セキュアスタッシング決定回路がステアリングタグ及びレルムIDに応じてどのようにスタッシングトランザクションを扱い得るかの例を示す図である。
図17】スタッシングトランザクションを処理するための方法を示すフロー図である。
図18】セキュアスタッシング決定回路を有する集積回路の例を示す。
【0007】
添付図面を参照して実施形態を考察する前に、例示的な実施形態及び関連する利点について以下の説明が提供される。
【0008】
1つの例示的な構成によれば、デバイスを1つ以上の処理要素に結合するためのインターコネクト回路を備える装置が提供され、各処理要素は、信頼できる実行環境において動作する。加えて、セキュアスタッシング決定回路は、デバイスからスタッシングトランザクションを受信し、許可されたスタッシングトランザクションを1つ以上の処理要素のうちの少なくとも1つにとってアクセス可能な所与のストレージ構造にリダイレクトするために提供される。セキュアスタッシング決定回路は、所与のスタッシングトランザクションを受信することに応答して、所与のスタッシングトランザクションが所与の信頼できる実行環境に関連付けられた信頼できる実行環境識別子を含むかどうかを判定し、信頼できる実行環境識別子に依存するリダイレクション要件が満たされたときに、所与のスタッシングトランザクションを許可されたスタッシングトランザクションとして扱うように更に構成されている。
【0009】
インターコネクトを介して少なくとも1つのデバイスに結合された少なくとも1つの処理要素を備える上述のデータ処理システムなどのいくつかのシステムでは、処理要素(複数可)又はデバイス(複数可)のいずれかで実行される特定のプロセスが、他のプロセスから切り離して安全に実行される必要がある場合がある。そのようなシステムは、いくつもの信頼できる実行環境(レルムとも呼ばれる)における動作をサポートすることができ、各々は、その信頼できる実行環境内で実行するプロセスにとってのみアクセス可能であり得るメモリ内の1つ以上の領域に関連付けられている。例えば、所与の処理要素又はデバイスは、信頼できる実行環境内で動作し得る。あるいは、所与のデバイス又は処理要素上で実行する異なるプロセスは、異なる信頼できる実行環境内で動作し得る。
【0010】
このように信頼できる実行環境を提供することにより、所与の信頼できる実行環境の外部で動作するプロセスが、所与の信頼できる実行環境に関連付けられたメモリの領域内に記憶された任意のデータにアクセスすることを防止することによって、所与の信頼できる実行環境内のプロセスが安全に実行されることが可能になる。
【0011】
上述したように、データ処理システム内の1つ以上のデバイスは、インターコネクトにメモリアクセス要求(デバイストランザクションとも呼ばれる)を発行することができ、デバイス及び1つ以上の処理要素にとってアクセス可能なメモリ内の特定の位置へのアクセスを要求することができる。例えば、これらは、ターゲットメモリ位置にデータを書き込むための書き込み要求、又はターゲットメモリ位置からデータを読み出すための読み出し要求を含んでもよい。通常、これらのデバイストランザクションはメモリシステム内で終了することが予想される。例えば、ターゲットメモリ領域にデータを書き込むことによって書き込み要求が完了することが予想される。したがって、処理要素のうちの1つが、そのデータに後でアクセスするためには、メモリからそのデータを取り出すために処理要素自体のアクセス要求を発行することになる。このようなメモリへのアクセスに関連付けられた著しいレイテンシが存在する可能性がある。メモリは、インターコネクトなどのいくつもの構造によって処理要素から分離されている可能性があるので、データを取り出す際にレイテンシを発生させる可能性がある。加えて、メモリが大きい可能性があり、これは、要求されたデータのメモリアドレスがメモリ内でアクセスされるときに更なるレイテンシが発生する可能性があることを意味する。
【0012】
したがって、処理要素は、例えば、メモリにも記憶されているデータのローカルコピーを記憶することができる1つ以上のストレージ構造(例えば、キャッシュ又は他の記憶ユニットなどの記憶回路)にアクセスすることができる。これらのストレージ構造は、インターコネクトに対して少なくとも1つの処理要素と同じ側にあるように、インターコネクトによってメモリから分離されていてもよく、処理要素がメモリにアクセスする必要なくデータにアクセスすることを可能にすることができる。これにより、データへのアクセスに関わるレイテンシを低減することによって、著しいパフォーマンスの向上を提供することができる。例えば、ストレージ構造は、インターコネクト回路を介して信号を送信する必要なしにデータを取り出すことができるように、インターコネクトの処理要素と同じ側にあってもよい。加えて、ストレージ構造をメモリよりも大幅に小さくすることができ、その結果、要求されているデータにより迅速にアクセスすることができる。
【0013】
しかしながら、例えば、デバイスによって発行されたトランザクションに起因して、メモリ内のデータが更新されると、1つ以上のストレージ構造に記憶されたそのデータのローカルコピー(又は複数のコピー)は、もはや最新ではなくなる。これは、処理要素が次にデータにアクセスする必要があるときにメモリからデータを取り出す必要があることを意味する。したがって、メモリ位置がデバイストランザクションに応答して更新されたとき、そのメモリ位置へのアクセスを有する他の処理要素のパフォーマンスに対するノックオン効果が存在し得る。
【0014】
本技法の装置は、いくつかのデバイストランザクションが、少なくとも1つの処理要素にとってアクセス可能な所与のストレージ構造にリダイレクトされることを可能にすることによって、この問題に対処しようとする。これらのデバイストランザクションは、データを所与のストレージ構造内で「スタッシング」するので、「スタッシングトランザクション」と呼ばれ、したがって、メモリ内で終了するのではなく、所与のストレージ構造内で終了する。これにより、データをメモリからではなく所与のストレージ構造から取り出すことができるので、少なくとも1つの処理要素によるそのデータへの後続のアクセスは低減されたレイテンシで実行することが可能である。
【0015】
しかしながら、本技法の発明者らは、スタッシングトランザクションがリダイレクトされるストレージ構造が、トランザクションを発行したデバイス(又はデバイス上で実行するプロセス)の信頼できる実行環境とは異なる信頼できる実行環境内にある(例えば、アクセス可能である)場合、これが潜在的なセキュリティ脆弱性をもたらす可能性があることに気付いた。これにより、(例えば、デバイス上で実行されるプロセスのプログラマの観点から)信頼できないプロセスが、デバイス上で実行されているプロセスに関連する機密データにアクセスできてしまう可能性がある。
【0016】
したがって、改善されたセキュリティを提供するために、デバイスからスタッシングトランザクションを受信し、許可されたスタッシングトランザクションを、1つ以上の処理要素のうちの少なくとも1つにとってアクセス可能な所与のストレージ構造にリダイレクトするために、セキュアスタッシング決定回路が提供される。
【0017】
デバイス及び1つ以上の処理要素は、インターコネクト回路を介して結合(例えば、接続)され、処理要素のうちの少なくとも1つは、信頼できる実行環境で動作する。更に、セキュアスタッシング決定回路によって受信されたスタッシングトランザクションは、特定の信頼できる実行環境(例えばレルム)に関連付けられた信頼できる実行環境識別子(例えばレルムID)を含むことができる。セキュアスタッシング決定回路は、所与のスタッシングトランザクションについて、所与のスタッシングトランザクションが信頼できる実行環境識別子を含むかどうかをチェックし、信頼できる実行識別子に依存するリダイレクション要件が満たされたときに、所与のスタッシングトランザクションを許可されたスタッシングトランザクションとして扱うように構成されている。例えば、リダイレクション要件は、所与のスタッシングトランザクションが信頼できる実行環境識別子を含むかどうかに基づくことができ、かつ/又は所与のトランザクションの信頼できる実行識別子の値に基づくことができる。
【0018】
したがって、本技法は、システムのセキュリティを損なうことなく、向上されたパフォーマンスを提供する。特に、少なくともいくつかのスタッシングトランザクションが、所与の処理要素にとってアクセス可能なストレージ構造にリダイレクトされることを可能にすることで、トランザクションに応答して記憶されたデータへの後続のアクセスに関連付けられたレイテンシを低減することによって、システムのパフォーマンスを向上させることができる。加えて、許可されたスタッシングトランザクション(信頼できる実行識別子に依存するリダイレクション要件を満たす)のみをリダイレクトさせることによって、システムのセキュリティを改善することができる。
【0019】
いくつかの例では、スタッシングトランザクションの各々は、メモリ内の位置に関連付けられたデータにアクセスする要求を含む。例えば、メモリは、所与のストレージ構造とは別個の構造であってもよく、例えば、インターコネクト回路を含むいくつもの構成要素によって、1つ以上の処理要素及び所与のストレージ構造から分離されてもよい。したがって、メモリへのアクセスは、所与のストレージ構造へのアクセスと比べてレイテンシの増加を招く可能性が高い。したがって、トランザクションによって識別されたメモリ内の位置ではなく所与のストレージ構造へのアクセスをトリガするように、許可されたスタッシングトランザクションをリダイレクトすることによって、処理要素がそのメモリ位置に関連付けられたデータに後でアクセスする場合、レイテンシの減少をもたらすことができる。これが、ひいてはパフォーマンスの向上につながり得る。
【0020】
いくつかの例では、スタッシングトランザクションは、メモリ内の位置に関連付けられた位置にデータを書き込むための書き込み要求を含んでもよく、セキュアスタッシング決定回路は、リダイレクション要件が満たされたときに、データを所与のストレージ構造に書き込むように構成され得る。このようにして、メモリ内の位置にデータを書き込む代わりに所与のストレージ構造にデータを書き込むことによって、そのストレージ構造へのアクセスを有する処理要素(複数可)によるそのデータへの後続のアクセスに関連付けられたレイテンシを低減することができ、パフォーマンスの向上につながる。
【0021】
特に、所与のストレージ構造へのアクセスを有する少なくとも1つの処理要素が信頼できる実行環境で動作している場合、データを所与のストレージ構造に直接書き込むことを可能にすることは、当業者には直観に反しているように思われる可能性があり、信頼できる実行環境内の処理要素にとってアクセス可能なストレージ構造に外部デバイスがデータを直接書き込むことを可能にすることは、システムのセキュリティを潜在的に損なうように見える可能性がある。しかしながら、本発明者らは、スタッシングトランザクションが信頼できる実行環境識別子を含むかどうかをチェックし、特定のリダイレクション基準が満たされているときにのみ、スタッシングトランザクションを所与のストレージ構造にリダイレクトするためのセキュアスタッシング決定回路を提供することによって、システムのセキュリティに著しく影響を及ぼすことなく、スタッシングトランザクションをリダイレクトすることのパフォーマンス利益を達成することができることに気付いた。
【0022】
いくつかの例では、リダイレクション要件が満たされているかどうかは、信頼できる実行環境識別子が存在するかどうか、及び/又は、信頼できる実行環境識別子の値に依存する。例えば、リダイレクション要件が満たされているかどうかは、信頼できる実行環境識別子が存在しない場合を除き、信頼できる実行環境識別子の値に依存してもよい。リダイレクション要件は、信頼できる実行環境識別子に関する条件に加えて、他の要因に更に依存し得ることが理解されよう。例えば、リダイレクション要件が満たされているかどうかは、スタッシングトランザクションによってターゲットとされるメモリ位置が信頼できる実行環境内にあるかどうかに少なくとも部分的に依存し得る。
【0023】
いくつかの例では、セキュアスタッシング決定回路は、所与のストレージ構造が信頼できる実行環境内にあるとき、信頼できる実行環境識別子が存在しないか又は無効であるときに、所与のスタッシングトランザクションを拒否するように構成されている。例えば、所与のスタッシングトランザクションが有効な信頼できる実行環境識別子を示さない場合、スタッシングトランザクションは、所与のストレージ構造が信頼できる実行環境内にある場合、拒否されてもよい。これにより、信頼できるデバイス(例えば、信頼できる実行環境内で動作するデバイス)からのスタッシングトランザクションのみが信頼できる実行環境内のストレージ構造にアクセスすることを許可されることを確実にすることによって、改善されたセキュリティを提供することができる。
【0024】
いくつかの例では、セキュアスタッシング決定回路は、所与のスタッシングトランザクションを拒否することに応答して、エラー信号をアサートするように構成されている。例えば、アサートされたエラー信号は、エラーログレジスタのセットにエラーを記録(例えば、ログ)してもよい。エラーログレジスタは、例えば、インターコネクト回路内に配置されてもよく、セキュアスタッシング決定回路によって拒絶された以前のスタッシングトランザクションを含む、以前のエラーの記録を保持してもよい。特定の例では、デバイスがルートポートを介してインターコネクトに接続されている場合、エラーログレジスタは、ルートポート内に配置され得る。
【0025】
いくつかの例では、所与のストレージ構造は、許可されたスタッシングトランザクションに応じて選択される。例えば、所与のストレージ構造は、トランザクションによって示されたメモリ位置、トランザクションによって示された信頼できる実行識別子(存在する場合)、及び/又はトランザクションによって示された何らかの他の識別子に基づいて識別されてもよい。
【0026】
いくつかの例では、セキュアスタッシング決定回路は、所与のスタッシングトランザクションが所与のストレージ構造を示すステアリングタグを含むかどうかを判定するように構成され、セキュアスタッシング決定回路が、所与のスタッシングトランザクションがステアリングタグを含むと判定したとき、リダイレクション要件が満たされているかどうかは、ステアリングタグに更に依存する。したがって、ステアリングタグは、デバイスによって発行された少なくともいくつかのトランザクションが、メモリに向けられる代わりに、処理要素にとってアクセス可能なストレージ構造にスタッシュされる(例えば、リダイレクトされる)ことを可能にする機構を提供してもよい。上述したように、スタッシングトランザクションが1つ以上の処理要素にとってアクセス可能なストレージ構造にリダイレクトされることを可能にすることにより、処理要素(複数可)によるそのデータへの後続のアクセスに関連付けられた低減されたレイテンシに関して、著しいパフォーマンス利益を提供する。
【0027】
いくつかの例では、セキュアスタッシング決定回路は、所与のストレージ構造が第1の信頼できる実行環境内にあり、かつ信頼できる実行環境識別子が存在しないか若しくは無効であるとき、かつ/又は所与のストレージ構造が第1の信頼できる実行環境内にあり、かつ信頼できる実行環境識別子が異なる信頼できる実行環境に関連付けられているとき、かつ/又はステアリングタグが無効であるときに、所与のスタッシングトランザクションを拒否するように構成されている。この手法によって、ステアリングタグの提供に関連付けられたパフォーマンス利益は、システムのセキュリティを損なうことなく達成することができる。特に、この例は、スタッシングトランザクションの拒否をトリガすることができる3つの条件を提供する。
【0028】
(条件1)所与のストレージ構造は第1の信頼できる実行環境内にあり、かつ信頼できる実行環境識別子は存在しないか又は無効である。この条件は、アイデンティティ及び/又はセキュリティ証明書が指定されていないプロセスによる所与のストレージ構造へのアクセスから保護する。有効な信頼できる実行識別子が指定されていない場合、セキュアスタッシング決定回路が、所与のスタッシングトランザクションによる所与のストレージ構造へのアクセスを許可することが安全であるかどうかを判定することは困難である可能性があり、したがって、最も安全な手法は、スタッシングトランザクションを拒否することであってもよい。
【0029】
(条件2)所与のストレージ構造は、第1の信頼できる実行環境内にあり、かつ信頼できる実行環境識別子は、異なる信頼できる実行環境に関連付けられている。この条件は、所与のストレージ構造が提供される信頼できる実行環境の外部で実行されているプロセスによる所与のストレージ構造へのアクセスから保護する。これにより、第1の信頼できる実行環境内で動作するプロセスを、第1の信頼できる実行環境内のプロセスの観点から信頼できない可能性があるその環境外のプロセスから隔離された状態に保つことによって、セキュリティを改善することができる。更に、デバイスが実行されている信頼できる実行環境に関連付けられたデータは、第1の信頼できる実行環境内のプロセスによるアクセスから同様に保護される。この条件が満たされているかどうかは、例えば、ステアリングタグと信頼できる実行環境識別子との比較に基づいて判定することができる。
【0030】
(条件3)ステアリングタグは無効である。この条件は、いくつもの理由のいずれかのために適用され得る。例えば、ステアリングタグが無効である場合、セキュアスタッシング決定回路が所与のストレージ構造のアイデンティティを判定することは困難である可能性があり、したがって、データが間違ったストレージ構造に誤って書き込まれることを回避するために、スタッシングトランザクションは拒否され得る。
【0031】
上記の条件は、任意の組み合わせで適用されてもよく、それでもなお顕著なセキュリティ改善を提供することが理解されよう(上記の理由のため)。例えば、上記の条件のいずれか1つを単独で提供することができ、それでも、その特定の条件に対して上記で説明したセキュリティ上の利益を提供することができる。あるいは、3つの条件のうちの2つの任意の組み合わせが提供されてもよく、又は実際に3つ全ての条件が提供されてもよい。
【0032】
いくつかの例では、所与のストレージ構造は、信頼できる実行環境識別子の値、及び/又はステアリングタグの値に応じて選択される。例えば、有効なステアリングタグが存在する場合、所与のストレージ構造は、ステアリングタグによって識別され得る。一方、所与のストレージ構造は、代わりに、信頼できる実行環境に基づいて判定されてもよい。これにより、所与のストレージ構造が識別される方法においてより多くの柔軟性を提供するので、有利である可能性がある。
【0033】
いくつかの特定の例では、セキュアスタッシング決定回路は、ステアリングタグが存在しない場合を除き、ステアリングタグの値に応じて所与のストレージ構造を選択するように構成されている。例えば、ステアリングタグが存在しない場合、所与のストレージ構造は、信頼できる実行環境識別子によって識別された信頼できる実行環境内のストレージ構造であると判定されてもよい。したがって、信頼できる実行環境識別子は、いくつかのシステムにおいて、ステアリングタグの必要性をなくすという追加の利点を提供することができる。これにより、トランザクション内の符号化空間が制限される場合があり、ステアリングタグを除去することによって符号化空間が他の目的のために解放される場合があるので、有用である可能性がある。
【0034】
信頼できる実行環境で動作するプロセスのみにとってアクセス可能な暗号化キーを使用してデータを暗号化することによって、信頼できる実行環境に関連付けられたデータを保護することが有用である可能性がある。データを暗号化することによって、攻撃者がデータを取得したとしても、暗号化キーも取得せずにはデータを解釈することはできないであろう。したがって、信頼できる実行環境識別子に応じて暗号化キー識別子を識別し、データの暗号化キーが識別されるようにすることが有用である可能性がある。したがって、いくつかの例では、所与のスタッシングトランザクションは、メモリ内の所与の位置にあるデータにアクセスする要求を含み、セキュアスタッシング決定回路は、信頼できる実行環境識別子に基づいて、メモリ内の所与の位置に記憶されたデータを暗号化するための暗号化キーを示す暗号化キー識別子を識別するように構成されている。
【0035】
いくつかの例では、スタッシングトランザクションが、メモリ内の位置に関連付けられた位置にデータを書き込むための書き込み要求を含むとき、セキュアスタッシング決定回路は、暗号化キー識別子及びデータを所与のストレージ構造に書き込むように構成され得る。例えば、暗号化キー識別子は、所与のストレージ構造内にデータと一緒に記憶されることが可能であり、その結果、そのデータがその後メモリに記憶される場合(例えば、ストレージ構造から追い出されることに起因して)、暗号化キーを見つけて、データを暗号化するために使用することができる。しかしながら、暗号化キー識別子がデータと共に所与のストレージ構造内に記憶されることは必須ではなく、例えば、暗号化キー識別子は、代わりに、それが必要とされるときにはいつも(例えば、データが所与のストレージ構造から追い出されるとき)、信頼できる実行識別子を使用してルックアップされ得ることが理解されよう。また、例えば、所与のストレージ構造が完全に単一の信頼できる実行環境内にある(例えば、所与のストレージ構造が単一の信頼できる実行環境に関連付けられたデータのみを保持する)場合、所与のストレージ構造に記憶された任意のデータが、その単一の信頼できる実行環境に関連付けられた1つ以上の暗号化キーを使用して暗号化されることが暗黙的である可能性があるので、暗号化キー識別子は全く必要とされない場合がある。
【0036】
いくつかの例では、所与のストレージ構造はキャッシュを備える。キャッシュは通常、メモリとは別個のローカルストレージ構造であり、(論理的に)メモリよりもシステム内の1つ以上の処理要素により近いところに提供される。したがって、多くの場合、メモリにアクセスするよりもキャッシュにアクセスする方が著しく速い(例えば、より低いレイテンシに関連付けられる)。更に、キャッシュは、メモリよりも大幅に小さくてもよく、したがって、キャッシュ内の必要なデータを検索することは、著しく迅速であってもよい。したがって、メモリ内のいくつかのデータのコピー(例えば、頻繁にアクセスされるデータなど)は、低減されたレイテンシでアクセスできるように、1つ以上のキャッシュ内に保持することができる。メモリではなくキャッシュ内のデータにアクセスするためのスタッシングトランザクションを可能にすることは、したがって、そのデータへの後続のアクセスに関連付けられたレイテンシを低減することによって、パフォーマンスの向上をもたらすことができる。
【0037】
処理システムでは、複数のレベルのキャッシュがメモリ階層内に提供されてもよく、(必ずしもそうではないが、通常はより小さい)いくつかのキャッシュは、処理要素のより近くに提供され、(必ずしもそうではないが、通常はより大きい)他のキャッシュは、複数の処理要素間で共有されてもよく、メモリのより近くに提供される。特定のメモリ位置におけるデータのコピーは、複数のキャッシュ内に保持され得る。例えば、データ項目は、処理要素に近いレベル1キャッシュと、メモリにより近いより大きなレベル2キャッシュとの両方に保持されてもよく、その結果、データがレベル1キャッシュから追い出された場合、処理要素がメモリからデータを取り出す必要がなく、依然としてレベル2キャッシュから適度に迅速にアクセスすることができる。これはキャッシュ包含性として知られている。しかしながら、いくつかのキャッシュが複数の処理要素間で共有される場合にセキュリティ上の問題を提示する可能性があり、これらの処理要素の全てが同じ信頼できる実行環境内で動作するわけではない場合、1つの信頼できる実行環境に関連付けられたデータを、他の実行環境で実行されるプロセスにとってもアクセス可能なキャッシュに記憶することが望ましくない場合がある。たとえデータが暗号化されていても、又は他の信頼できる実行環境内のプロセスにとってアクセス不可能な共有キャッシュの一部分に保持されていても、これは依然としてセキュリティリスクを提示する可能性がある。例えば、攻撃者は、キャッシュの特定のエントリにデータが記憶されているかどうかを、単にそのエントリへのアクセス要求がどれだけ迅速に拒絶されるかに基づいて判定することができる場合がある。これは、攻撃者に、どのメモリ位置が、異なる信頼できる実行環境内の所与のプロセスによって最近アクセスされたかの指示を与える可能性があり、これは、いくつかの状況では、システムのセキュリティを損なうのに十分である場合がある。
【0038】
したがって、所与のスタッシングトランザクションによって示された信頼できる実行環境識別子に応じて、キャッシュ包含性を制御すること、例えば、所与のデータ項目のコピーが複数のキャッシュに記憶されるか、又はただ1つのキャッシュに記憶されるかを制御すること、ができることが有用である場合がある。これにより、他の信頼できる実行環境内のプロセスがデータにアクセスすること、又はキャッシュ内のそのデータの存在に基づいて何らかの仮定をすることを防ぐことによって、改善されたセキュリティを提供することができる。したがって、いくつかの例では、セキュアスタッシング決定回路は、信頼できる実行環境識別子に基づいて、キャッシュの少なくとも1つの所与のキャッシュラインが少なくとも1つの他のキャッシュにも保持されることが許可されるかどうかを制御するように構成されている。
【0039】
いくつかの例では、装置は、デバイスの階層構造内のデバイスの第1のレベルに設けられたルートポートを備え、デバイスは、デバイスの階層構造内に設けられ、ルートポートを介してインターコネクトに結合されている。デバイスがインターコネクトに結合され得る多くの方法が存在するが、一例は、デバイスとインターコネクトとの間にルートポートを提供することである。これは、デバイスが階層構造に配置されることを可能にし、1つ以上のルートポートが階層の第1のレベル(例えば、インターコネクトに最も近い)に提供されるので、多数のデバイスを含むネットワークにおいて特に有用である可能性がある。本技法のデバイスは、(例えば、階層の第2のレベルにおいて)ルートポートに直接接続されてもよく、又は1つ以上の他の介在デバイスを介してルートポートに接続されてもよい。
【0040】
いくつかの例では、デバイスは、パケットネットワーク内のリクエスタデバイスを備え、リクエスタデバイスは、インターコネクトへの前方伝播のために、パケットネットワークのパケットプロトコルに従って、スタッシングトランザクションをルートポートに送信するように構成されている。パケットネットワークは、デバイスが提供され得る特定のタイプのネットワークである。しかしながら、本技法は、デバイスがインターコネクト回路を介して1つ以上の処理要素に結合される任意のタイプのネットワークに適用可能であることが理解されよう。
【0041】
いくつかの例では、パケットプロトコルは、PCIe(Peripheral Component Interconnect Express)プロトコルであり得る。PCIeは、広く使用されているパケットプロトコルであり、したがって、本技法がこの規格内で適用可能であることは明らかに有利である。しかしながら、本技法は、この規格内の用途に限定されず、実際には、デバイスがインターコネクト回路を介して1つ以上の処理要素に結合される任意のタイプのネットワーク内に適用され得ることが理解されよう。
【0042】
いくつかの例では、ルートポートは、セキュアスタッシング決定回路を備える。デバイスと1つ以上の処理要素との間には、セキュアスタッシング決定を配置するための多くの潜在的な位置があるが、1つの可能性は、この回路をルートポート内に設けることである。
【0043】
いくつかの例では、インターコネクトは、メモリの一部分へのアクセスを制御することを担うホームノード回路を備え、ホームノード回路は、セキュアスタッシング決定回路を備える。したがって、セキュアスタッシング決定回路のための別の可能な位置は、インターコネクト自体内にあり、そのような例示的な実装形態では、セキュアスタッシング決定回路は、インターコネクトのホームノード内に提供され得る。
【0044】
ルートノード及びホームノードは両方とも、本技法がある既存のシステム内で適用されることを可能にするために、セキュアスタッシング決定回路が配置され得る場所の単なる例であることが理解されよう。しかしながら、他の例では、セキュアスタッシング決定回路が他の位置に設けられ得ることが理解されるよう。
【0045】
ここで、本技法の実施例を、図面を参照して説明する。
【0046】
図1は、少なくとも1つのリクエスタデバイス4及び少なくとも1つのコンプリータデバイス6を有するデータ処理システム2の例を概略的に示す。インターコネクト8は、リクエスタデバイス4とコンプリータデバイス6との間の通信を提供する。リクエスタデバイスは、特定のアドレス指定可能なメモリシステム位置へのメモリアクセスを要求するメモリアクセス要求を発行することができる。コンプリータデバイス6は、それに向けられたメモリアクセス要求を処理する責任を有するデバイスである。図1には示されていないが、いくつかのデバイスは、リクエスタデバイスとコンプリータデバイスの両方として機能できる場合がある。リクエスタデバイス4は、例えば、中央処理装置(CPU)若しくはグラフィック処理装置(GPU)などの処理要素、又はバスマスタ装置、ネットワークインターフェースコントローラ、ディスプレイコントローラなどの他のマスタデバイスを含むことができる。コンプリータデバイスは、対応するメモリ記憶装置へのアクセス制御を担うメモリコントローラ、周辺デバイスへのアクセスを制御するための周辺コントローラなどを含むことができる。図1は、リクエスタデバイス4のうちの1つの例示的な構成をより詳細に示しているが、他のリクエスタデバイス4も同様の構成を有することができることが理解されよう。あるいは、他のリクエスタデバイスは、図1の左側に示されるリクエスタデバイス4と異なる構成を有し得る。
【0047】
リクエスタデバイス4は、レジスタ12に記憶されたデータを参照して、命令に応答するデータ処理を実行するための処理回路10を有する。レジスタ12は、オペランド及び処理された命令の結果を記憶するための汎用レジスタだけでなく、処理回路によって処理がどのように実行されるかを構成するための制御データを記憶するための制御レジスタを含み得る。例えば、制御データは、どの動作領域が現在の領域であるかを選択するために使用される現在の領域指示14と、どの例外レベルが処理回路10が動作している現在の例外レベルであるかを示す現在の例外レベル指示15とを含み得る。
【0048】
処理回路10は、アクセスされるべきアドレス可能な位置を識別する仮想アドレス(VA)と、現在の領域を識別するドメイン識別子(ドメインID又は「セキュリティ状態」)とを指定するメモリアクセス要求を発行することが可能であり得る。アドレス変換回路16(例えば、メモリ管理ユニット(MMU))は、メモリシステムに記憶されたページテーブル構造において定義されたページテーブルデータに基づいて、アドレス変換のより多くのステージのうちの1つを介して、仮想アドレスを物理アドレス(PA)に変換する。変換ルックアサイドバッファ(TLB)18は、アドレス変換が必要な都度ページテーブル情報がメモリからフェッチされなければならない場合よりもより速いアクセスのために、そのページテーブル情報の一部をキャッシュするためのルックアップキャッシュとして機能する。この例では、物理アドレスを生成するだけでなく、アドレス変換回路16はまた、物理アドレスと関連付けられたいくつもの物理アドレス空間のうちの1つを選択し、選択された物理アドレス空間を識別する物理アドレス空間(PAS)識別子を出力する。PASの選択については、以下でより詳細に論じる。
【0049】
PASフィルタ20は、変換された物理アドレス及びPAS識別子に基づいて、その物理アドレスがPAS識別子によって識別され指定された物理アドレス空間内でアクセスされることが許可されているかどうかを確認するためのリクエスタフィルタリング回路として機能する。このルックアップは、メモリシステム内に記憶されたグラニュール保護テーブル構造に格納されたグラニュール保護情報に基づく。グラニュール保護情報は、TLB18内におけるページテーブルデータのキャッシュと同様に、グラニュール保護情報キャッシュ22内にキャッシュされ得る。図1の例では、グラニュール保護情報キャッシュ22は、TLB18とは別々の構造として示されているが、他の例では、これらのタイプのルックアップキャッシュを単一ルックアップキャッシュ構造として組み合わせることができ、その結果、組み合わされた構造のエントリの単一ルックアップは、ページテーブル情報及びグラニュール保護情報の両方を提供する。グラニュール保護情報は、所与の物理アドレスがアクセスされ得る物理アドレス空間を制限する情報を定義し、このルックアップに基づいて、メモリアクセス要求が1つ以上のキャッシュ24及び/又はインターコネクト8に対して発行されることを進めることを可能とするかどうかをPASフィルタ20が判定する。メモリアクセス要求に対する指定されたPASが指定された物理アドレスにアクセスすることを許可されない場合、PASフィルタ20は、トランザクションをブロックし、不具合をシグナリングすることができる。
【0050】
図1は、システムが複数のリクエスタデバイス4を有する状態の例を示しているが、図1の左側の1つの要求デバイスに示される特徴は、シングルコアプロセッサなど1つのリクエスタデバイスのみが存在するシステムにも含まれ得る。
【0051】
図1は、所与の要求に対するPASの選択がアドレス変換回路16によって行われる例を示しているが、他の例では、どのPASを選択するかを決定するための情報を、PAと共にアドレス変換回路16によってPASフィルタ20に対して出力することができ、PASフィルタ20は、PASを選択し、選択されたPAS内でPAがアクセスされることが可能かどうかを確認することができる。
【0052】
PASフィルタ20の提供は、それぞれがそれ自体の隔離された物理アドレス空間に関連付けられた、いくつもの動作領域で動作することができるシステムをサポートするのに役立つ。ここで、(例えば、いくつかのキャッシュ又はスヌープフィルタなどのコヒーレンシー実施メカニズムのための)メモリシステムの少なくとも一部について、別々の物理アドレス空間は、それらのアドレス空間内のアドレスが実際にメモリシステム内の同じ物理的位置を指す場合でも、あたかも全く別のメモリシステム位置を識別する別のアドレスのセットを指すかのように扱われる。これは、セキュリティ目的のために有用であり得る。
【0053】
図2は、処理回路10が動作することができる異なる動作状態及び領域の例、ならびに異なる例外レベル及び領域で実行され得るソフトウェアのタイプの例を示している(当然のことながら、システム上にインストールされる特定のソフトウェアは、そのシステムを管理する当事者によって選択され、したがって、ハードウェアアーキテクチャの本質的な特徴ではないことが理解されよう)。
【0054】
処理回路10は、いくつもの異なる例外レベル80、この実施例では、EL0、EL1、EL2、及びEL3とラベル付けされた4つの例外レベルで動作可能であり、この実施例では、EL3は最高レベルの特権を有する例外レベルを指し、EL0は最低の特権を有する例外レベルを指す。他のアーキテクチャでは、逆の採番を選び、最大の数を有する例外レベルが最低の特権を有すると見なし得ることが理解されよう。この実施例では、最低特権の例外レベルEL0は、アプリケーションレベルのコードのためのものであり、次に高い特権の例外レベルEL1は、オペレーティングシステムレベルのコードに使用され、次に高い特権の例外レベルEL2は、いくつかの仮想オペレーティングシステム間の切り替えを管理するハイパーバイザレベルコードに使用され、最高特権の例外レベルEL3は、後述するように、それぞれの領域間の切り替え及び物理アドレスの物理アドレス空間への配分を管理するモニタコードに使用される。
【0055】
ソフトウェアを処理している間に特定の例外レベルで例外が発生するとき、いくつかのタイプの例外については、例外がより高い(より高特権の)例外レベルに受け入れられ、例外が受け入れられる特定の例外レベルは、発生した特定の例外の属性に基づいて選択される。しかしながら、いくつかの状況においては、例外が受け入れられたときに処理されていたコードと関連付けられた例外レベルと同じ例外レベルで、他のタイプの例外が受け入れられ得る。例外が受け入れられるとき、例外が受け入れられた時点のプロセッサの状態を特徴付ける情報を、例えば例外が受け入れられた時点での現在の例外レベルを含めて保存することができる。したがって、例外に対処するために例外ハンドラが処理されると、処理は以前の処理に戻ることができ、保存された情報を使用して、処理が戻るべき例外レベルを識別することができる。
【0056】
異なる例外レベルに加えて、処理回路はまた、ルート領域82、セキュア(S)領域84、よりセキュアでない領域86、及びレルム領域88を含むいくつもの動作領域をサポートする。参照を容易にするために、よりセキュアでない領域は、「非セキュア」(NS)領域として以下に説明されるが、これは、セキュリティの特定のレベル(又は欠如)を意味することを意図するものではないことが理解されよう。代わりに、「非セキュア」は、非セキュア領域が、セキュア領域で動作するコードよりもよりセキュアではないコードを対象としていることを単に示す。ルート領域82は、処理回路10が最高例外レベルEL3にあるときに選択される。処理回路が他の例外レベルEL0~EL2のうちの1つにあるとき、現在の領域は、現在の領域インジケータ14に基づいて選択され、これは、他の領域84、86、88のうちのどれがアクティブであるかを示す。他の領域84、86、88の各々について、処理回路は、例外レベルEL0、EL1、又はEL2のいずれかにあり得る。
【0057】
起動時に、いくつものブートコード(例えば、BL1、BL2、OEMブート)が、例えば、より高度の特権の例外レベルEL3又はEL2内で実行され得る。ブートコードBL1、BL2は、例えば、ルート領域と関連付けられ得、OEMブートコードは、セキュア領域で動作し得る。しかしながら、システムが起動されると、実行中、処理回路10は、一度に領域82、84、86、及び88のうちの1つで動作するとみなされ得る。領域82~88の各々は、それ自体の関連する物理アドレス空間(PAS)と関連付けられている。これにより、メモリシステムの少なくとも一部内で、異なる領域からのデータの隔離が可能とされている。これについては、以下でより詳細に説明する。
【0058】
非セキュア領域86は、通常のアプリケーションレベル処理、及びそのようなアプリケーションを管理するためのオペレーティングシステム及びハイパーバイザアクティビティに使用することができる。したがって、非セキュア領域86内で、EL0で動作するアプリケーションコード30、EL1で動作するオペレーティングシステム(OS)コード32、及びEL2で動作するハイパーバイザコード34が存在し得る。
【0059】
セキュア領域84は、特定のシステムオンチップセキュリティ、メディア、又はシステムサービスが、非セキュア処理に使用される物理アドレス空間とは別の物理アドレス空間に隔離されることを可能にする。セキュア領域と非セキュア領域とは、非セキュア領域コードがセキュア領域84と関連付けられたリソースにアクセスできない一方で、セキュア領域は、セキュアリソースと非セキュアリソースの両方にアクセスできるという意味では同等でない。セキュア及び非セキュア領域84、86のそのような分割をサポートするシステムの例は、Arm(登録商標)Limitedによって提供されるTrustZone(登録商標)アーキテクチャに基づくシステムである。セキュア領域は、信頼できるアプリケーション36をEL0で、信頼できるオペレーティングシステム38をEL1で、及び任意選択でセキュア分割マネージャ40をEL2で実行できる。EL2はセキュア分割がサポートされる場合、ステージ2のページテーブルを使用して、セキュア領域84内で実行されている異なる信頼できるオペレーティングシステム38間の隔離を、ハイパーバイザ34が非セキュア領域86内で実行される仮想マシン間又はゲストオペレーティングシステム32間の隔離を管理することができる方法と同様の方法で、サポートすることができる。
【0060】
システムをセキュア領域84をサポートするように拡張することは、単一のハードウェアプロセッサが隔離されたセキュア処理をサポートすることを可能にし、かつ処理が別のハードウェアプロセッサ上で行われる必要性を回避できるために、近年一般的になった。しかしながら、セキュア領域の使用の人気が高まるにつれ、そのようなセキュア領域を有する多くの実用システムは、今や、セキュア領域内で、広範囲の異なるソフトウェアプロバイダによって提供されるサービスの比較的高度な混合環境をサポートしている。例えば、セキュア領域84内で動作するコードは異なるソフトウェアを含み得、その提供者には(とりわけ)、集積回路を製造したシリコンプロバイダ、シリコンプロバイダによって提供される集積回路を携帯電話などの電子デバイスに組み立てる相手先商標製品製造業者(OEM)、オペレーティングシステム32をデバイスのために提供するオペレーティングシステムベンダー(OSV)、及び/又はクラウドを介して、いくつもの異なる顧客のためのサービスをサポートするクラウドサーバを管理するクラウドプラットフォームプロバイダを含む。
【0061】
しかしながら、(非セキュア領域86内のアプリケーション30として実行することが通常予想され得る)ユーザレベルコードの提供者が、同じ物理プラットフォーム上でコードを動作させる他の当事者に情報を漏らさないことが信頼できるセキュアなコンピューティング環境を提供されることへの要望が高まっている。そのようなセキュアコンピューティング環境は、実行中に動的に配分可能であって、潜在的に機密性のあるコード又はデータの処理をデバイスに任せる前に、十分なセキュリティ保証が物理的プラットフォーム上で提供されているかどうかをユーザが検証できるように保証され証明可能であることが望ましい可能性がある。そのようなソフトウェアのユーザは、非セキュア領域86で通常動作し得る、機能が豊富なオペレーティングシステム32又はハイパーバイザ34の提供者を信頼することを望まない可能性がある(あるいは、それらのプロバイダ自体は信頼できても、ユーザは、オペレーティングシステム32又はハイパーバイザ34が攻撃者によって不正アクセスされることから自らを守ることを望み得る)。また、セキュア領域84はセキュアな処理を必要としているそのようなユーザ提供アプリケーションのために使用可能であるが、実際上、これはセキュアなコンピューティング環境を必要とするコードを提供するユーザと、セキュア領域84内で動作する既存のコードのプロバイダの両方に対して問題を引き起こす。セキュア領域84内で動作する既存のコードのプロバイダにとって、セキュア領域内に恣意的なユーザ提供コードが追加されることにより、それらのコードに対する潜在的な攻撃の攻撃対象領域が増加する。これは望ましくないことであり得、したがってユーザがセキュア領域84にコードを追加可能としないよう強く勧奨され得る。一方、セキュアなコンピューティング環境を必要とするコードを提供するユーザは、特定の領域で動作するコードの保証及び証明がユーザ提供コードが処理を実行する前提条件として必要とされる場合、セキュア領域84で動作する異なるソフトウェアプロバイダによって提供される別個のコードの全てを監査し証明することは困難であり得、セキュア領域84で動作する異なるコードのプロバイダの全てに、自らのデータ又はコードへのアクセスを任せることに否定的であり得る。これは、第三者がよりセキュアなサービスを提供する機会を制限し得る。
【0062】
したがって、図2に示すように、レルム領域と呼ばれる追加の領域88が提供され、セキュア領域24で動作する構成要素に関連付けられた任意のセキュアなコンピューティング環境に直交するセキュアなコンピューティング環境を提供するために、ユーザが導入したそのようなコードによって使用され得る。レルム領域では、実行されるソフトウェアは、いくつものレルムを含むことができ、各レルムは、例外レベルEL2で動作するレルムマネージメントモジュール(RMM)46によって他のレルムから隔離され得る。RMM46は、例えば、ハイパーバイザ34が非セキュア領域86で動作する異なる構成要素間の分離を管理する方法と同様に、ページテーブル構造内のアクセス許可及びアドレスマッピングを定義することによって、レルム領域88を実行するそれぞれのレルム42、44間の隔離を制御することができる。この例では、レルムは、EL0で実行されるアプリケーションレベルのレルム42と、例外レベルEL0及びEL1にわたって実行されるカプセル化アプリケーション/オペレーティングシステムレルム44とを含む。EL0及びEL0/EL1タイプの両方のレルムをサポートすることが必須ではなく、同じタイプの複数のレルムがRMM46によって確立され得ることが理解されよう。
【0063】
レルム領域88は、セキュア領域84と同様に、レルム領域に配分されたそれ自体の物理アドレス空間を有するが、レルム領域及びセキュア領域88、84は、非セキュア領域86に関連付けられた非セキュアPASに各々アクセスすることができる一方で、レルム領域及びセキュア領域88、84は、互いの物理アドレス空間にアクセスすることができないという意味で、レルム領域はセキュア領域84に直交している。これは、レルム領域88で実行されているコードとセキュア領域84とは互いに依存関係を有しないことを意味する。レルム領域内のコードは、ハードウェア、RMM46、及び領域間の切り替えを管理するルート領域82で動作するコードのみを信頼すればよく、これは、証明と保証がより実現可能であることを意味する。証明は、所与のソフトウェアが、デバイス上にインストールされたコードが特定の予想された特性に一致することの検証を要求することを可能にする。これは、デバイス上にインストールされたプログラムコードのハッシュが、信頼できる当事者により暗号プロトコルを使用して署名された予想値と一致するかどうかをチェックすることによって実施することができる。RMM46及びモニタコード29は、例えば、このソフトウェアのハッシュが、処理システム2を含む集積回路を製造したシリコンプロバイダ、又は領域ベースのメモリアクセス制御をサポートするプロセッサアーキテクチャを設計したアーキテクチャプロバイダなどの信頼できる当事者によって署名された予想値と一致するかどうかをチェックすることによって証明され得る。これにより、ユーザ提供コード42、44は、任意のセキュアな又は機密性のある機能を実行する前に、領域ベースのアーキテクチャの完全性が信頼できるかどうかを検証することができる。
【0064】
したがって、これらのプロセスが以前実行されていたであろう非セキュア領域内のギャップを示す点線で示されるように、以前は非セキュア領域86内で実行していたであろうレルム42、44に関連付けられているコードは、今や、それらのデータとコードは非セキュア領域86で動作する他のコードによってアクセスできないため、それらがより強いセキュリティ保証を有し得るレルム領域に移動され得ることが分かる。しかしながら、レルム領域88及びセキュア領域84が直交しており、したがって相互の物理アドレス空間を見ることができないという事実により、これは、レルム領域内のコードのプロバイダはセキュア領域内のコードのプロバイダを信頼する必要がなく、逆も同様であることを意味する。レルム領域内のコードは、ルート領域82及びRMM46のモニタコード29を提供するファームウェアを単に信頼することができ、これはシリコンプロバイダ、又はプロセッサによってサポートされる命令セットアーキテクチャのプロバイダにより提供され得る。これらのプロバイダは、彼らのデバイス上でコードが実行されているとき、初めから本質的に信頼される必要があり得、その結果、ユーザがセキュアコンピューティング環境を提供され得るために、他のオペレーティングシステムベンダー、OEM、又はクラウドホストとの他の更なる信頼関係がユーザにより必要とされることはない。
【0065】
これは、例えば、様々な目的のアプリケーション及び使用事例のために有用であり、例えば、モバイルウォレット及び支払いアプリケーション、ゲームにおける不正及び著作権侵害防止メカニズム、オペレーティングシステムプラットフォームセキュリティ拡張、セキュアな仮想マシンホスティング、機密コンピューティング、ネットワーク化、又はインターネット・オブ・シングスのためのゲートウェイ処理を含む。ユーザは、レルムサポートが有用である他の多くのアプリケーションを見つけ得ることが理解されよう。
【0066】
レルムに提供されるセキュリティ保証をサポートするために、処理システムは、証明レポート機能をサポートすることができ、起動時又は実行中に、ファームウェアの画像と構成、例えば、モニタコードの画像と構成、又はRMMコードの画像と構成の測定が行われる。実行中にはレルムのコンテンツと構成が測定され、それによって、レルムオーナーが関連性のある証明レポートを既知の実装及び保証に対してトレースバックし、そのシステム上で動作するかどうかについて信頼決定を行うことができる。
【0067】
図2に示されるように、領域の切り替えを管理する別個のルート領域82が提供され、そのルート領域は、それ自体の隔離されたルート物理アドレス空間を有する。ルート領域を作成し、リソースをセキュア領域から隔離することは、たとえ非セキュア及びセキュア領域86、84のみを有しレルム領域88を有しないシステムであっても、より堅牢な実装を可能にするが、レルム領域88をサポートする実装にも使用することができる。ルート領域82は、シリコンプロバイダ又はアーキテクチャ設計者によって提供される(又は保証された)モニタソフトウェア29を使用して実装することができ、セキュアブート機能、トラステッドブート測定、システムオンチップ構成、デバッグ制御及びOEMなどの他の当事者によって提供されるファームウェア構成要素のファームウェア更新管理を提供するために使用することができる。ルート領域のコードは、シリコンプロバイダ又はアーキテクチャ設計者によって最終的なデバイスへの依存関係なしに開発し、保証し、かつ展開することができる。対照的に、セキュア領域84は、特定のプラットフォーム及びセキュリティサービスを実装するためにOEMによって管理され得る。非セキュア領域86の管理は、オペレーティングシステムサービスを提供するオペレーティングシステム32によって制御され得る一方で、レルム領域88は、セキュア領域84内の既存のセキュアソフトウェア環境とは相互に隔離されると同時に、ユーザ又はサードパーティのアプリケーションに専用であり得る信頼できる実行環境の新しい形態の開発を可能にする。
【0068】
図3は、これらの技術をサポートするための処理システム2の別の例を概略的に示す。図1にあるものと同じである要素は、同じ参照番号で示されている。図3は、アドレス変換回路16のより詳細を示し、ステージ1メモリ管理ユニット50、及びステージ2メモリ管理ユニット52を含む。ステージ1MMU50は、仮想アドレスから物理アドレスへ(変換がEL2又はEL3コードによってトリガされるとき)又は中間アドレスへ(ステージ2MMU52による更なるステージ2変換が必要である動作状態で、変換がEL0又はEL1コードによってトリガされるとき)のいずれかの変換に関与し得る。ステージ2MMUは、中間アドレスを物理アドレスに変換することができる。ステージ1MMUは、EL0又はEL1から開始される変換についてはオペレーティングシステムによって制御されるページテーブルに、EL2からの変換についてはハイパーバイザによって制御されるページテーブルに、又はEL3からの変換についてはモニタコード29によって制御されるページテーブルに基づくことができる。一方、ステージ2MMU52は、どの領域が使用されているかに応じて、ハイパーバイザ34、RMM46又はセキュア分割マネージャ14によって定義されるページテーブル構造に基づくことができる。変換をこのように2つの段階に分離することにより、オペレーティングシステムは、それらがシステム上で動作する唯一のオペレーティングシステムであるという仮定の下で、それら自体のための及びアプリケーションのためのアドレス変換を管理することが可能となり、一方、RMM46、ハイパーバイザ34、又はSPM40は、同じ領域内で実行される異なるオペレーティングシステム間の隔離を管理することができる。
【0069】
図3に示すように、アドレス変換回路16を使用するアドレス変換プロセスは、現在の例外レベル15及び現在の領域14(又はセキュリティ状態)と組み合わせて、特定の物理アドレス空間(PAS識別子又は「PAS TAG」によって識別される)のセクションが所与のメモリアクセス要求に応答してアクセスされることを可能にするセキュリティ属性54を返すことができる。物理アドレス及びPAS識別子は、前述のグラニュール保護情報を提供するグラニュール保護テーブル56内でルックアップすることができる。この例では、PASフィルタ20は、選択されたPASが要求された物理アドレスにアクセスを許可されているかどうかを検証し、許可されている場合、トランザクションがメモリシステムのシステムファブリックの一部である任意のキャッシュ24又はインターコネクト8に渡されることを許可する、詳細(granular)メモリ保護ユニット(GMPU)として示されている。
【0070】
GMPU20は、別のアドレス空間にメモリを割り当てることを可能にしつつ、同時に、ハードウェアベースの強力な隔離保証を提供し、物理メモリをこれらのアドレス空間に割り当てる方法における空間的及び時間的柔軟性だけでなく、効率的な共有スキームを提供する。前述のように、システム内の実行ユニットは、「ルートワールド」と呼ばれ最高例外レベル(EL3)に位置する1つの実行状態(ルートワールド)が存在する仮想実行状態(領域又は「ワールド」)に論理的に分割され、ルートワールドはこれらのワールドへの物理メモリ割り当てを管理する。
【0071】
単一のシステム物理アドレス空間は、複数の「論理」又は「アーキテクチャ上の」物理アドレス空間(PAS)に仮想化され、そのような各PASは、独立したコヒーレンシ属性を有する直交アドレス空間である。システム物理アドレスは、PASタグでそれを拡張することによって、単一の「論理」物理アドレス空間にマッピングされる。
【0072】
所与のワールドは、論理物理アドレス空間のサブセットへのアクセスを許可される。これは、メモリ管理ユニット16の出力に取り付けることができるハードウェアフィルタ20によって実施される。
【0073】
ワールドは、アドレス変換に使用されるページテーブルの変換表記述子のフィールドを使用してアクセスのセキュリティ属性(PASタグ)を定義する。ハードウェアフィルタ20は、システム物理アドレス空間内の各ページに対してグラニュール保護情報(GPI)を定義するテーブル(グラニュール保護テーブル56、又はGPT)へのアクセスを有し、グラニュール保護情報は、それが関連付けられているPAS TAG、及び(任意選択で)他のグラニュール保護属性を示す。
【0074】
ハードウェアフィルタ20は、グラニュールのGPIに対するワールドID及びセキュリティ属性をチェックして、アクセスが許可され得るか否かを判定し、このようにして、詳細メモリ保護ユニット(GMPU)を形成する。
【0075】
GPT56は、例えば、オンチップSRAM又はオフチップDRAMに存在することができる。オフチップに記憶された場合、GPT56は、GPT56のセキュリティを維持するために暗号化、完全性、及び鮮度のメカニズムを使用し得るオンチップメモリ保護エンジンによって完全性保護され得る。
【0076】
GMPU20を、コンプリータ側ではなく、システムのリクエスタ側(例えば、MMU出力上)に位置させることにより、インターコネクト8が、複数のDRAMポートにわたって継続してページをハッシング/ストライピングすることを許可しながら、ページ詳細でアクセス許可を割り当てることを可能にする。
【0077】
トランザクションは、物理的別名化ポイント60の点として定義された場所に到達するまで、システムファブリック24、8全体を通して伝播するため、PASTAGがタグ付けされたままである。これにより、スレーブ側フィルタリングと比較してセキュリティ保証を弱めることなく、フィルタをマスター側に配置することができる。トランザクションがシステム全体を通して伝播するにつれて、PAS TAGは、アドレス隔離のための詳細なセキュリティメカニズムとして使用することができる。例えば、キャッシュは、キャッシュ内のアドレスタグにPAS TAGを追加して、同じPAに対して誤ったPAS TAGを使用して行われるアクセスがキャッシュにヒットすることを防止し、それによってサイドチャネル抵抗を改善することができる。PAS TAGはまた、外部DRAMに書き込まれる前にデータを暗号化するメモリコントローラに取り付けられた保護エンジンのコンテキストセレクタとして使用することができる。
【0078】
物理的別名化ポイント(PoPA)は、PAS TAGが剥離され、アドレスが論理物理アドレスからシステム物理アドレスに戻るシステム内の位置である。PoPAは、物理DRAMへのアクセスが(PAS TAGを介して解決された暗号化コンテキストを使用して)行われる、システムのコンプリータ側でキャッシュの下方に位置することができる。あるいは、セキュリティの弱化という犠牲においてシステムの実装を簡素化するために、キャッシュの上方に位置してもよい。
【0079】
任意の時点で、ワールドは、1つのPASから別のPASにページを遷移させることを要求できる。要求は、モニタコード29に対してEL3で行われ、GPIの現在の状態を検査する。EL3は、特定の遷移のセットのみ(例えば、レルムPASからセキュアなPASでなく、非セキュアPASからセキュアなPAS)が発生することを可能にし得る。クリーンな遷移を提供するために、新しい命令「データを削除し物理的別名化ポイントまで無効化」がシステムによりサポートされ、EL3はページを新しいPASに遷移させる前にこれを提出できる。これにより、前のPASに関連付けられた任意の残留状態がPoPA60(よりもリクエスタ側に近い)の上流の任意のキャッシュからフラッシュされることが保証される。
【0080】
GMPU20をマスター側に取り付けることによって達成することができる別の特性は、ワールド間のメモリの効率的な共有である。物理的グラニュールへの共有アクセスを、他のワールドがそれにアクセスすることを防止しながら、Nワールドのサブセットに許可することが望ましい場合がある。これは、「限定的共有」語義(semantic)をグラニュール保護情報に追加すると共に、それが特定のPAS TAGを使用することを強制することによって達成することができる。一例として、GPIは、物理的グラニュールに、セキュアPAS84のPAS TAGがタグ付けされている間、「レルムワールド」88及び「セキュアワールド」84によってのみアクセスされ得ることを示すことができる。
【0081】
上記の特性の例は、特定の物理的グラニュールの可視性特性の急速な変化をもたらす。各ワールドに、そのワールドにとってのみアクセス可能な私的PASが割り当てられている場合を考える。特定のグラニュールに対し、ワールドは、それらのGPIを「排他的」から「非セキュアワールドと限定的共有」に変更することによって、PASの関連付けを変更することなく、任意の時点で非セキュアワールドに対して可視となるように要求することができる。このようにして、コストのかかるキャッシュメンテナンス又はデータコピー操作を必要とせずに、そのグラニュールの可視性を高めることができる。
【0082】
図4は、それぞれの物理アドレス空間をハードウェアに設けられる物理メモリ上で別名化する概念を示す。前述のように、領域82、84、86、88の各々は、それ自体のそれぞれの物理アドレス空間61を有する。
【0083】
物理アドレスがアドレス変換回路16によって生成される時点で、物理アドレスは、システムによってサポートされた特定の数値範囲62内の値を有し、これは、どの物理アドレス空間が選択されるかに関係なく同じである。しかしながら、物理アドレスの生成に加えて、アドレス変換回路16はまた、現在の領域14及び/又は物理アドレスを導出するために使用されるページテーブルエントリ内の情報に基づいて、特定の物理アドレス空間(PAS)を選択し得る。代替的に、PASの選択を実行するアドレス変換回路16の代わりに、アドレス変換回路(例えば、MMU)は、物理アドレスと、PASの選択に使用される、ページテーブルエントリ(PTE)から導出された情報を出力することができ、次いで、この情報は、PASフィルタ又はGMPU20によって使用されて、PASを選択することができる。
【0084】
所与のメモリアクセス要求に対するPASの選択は、以下の表で定義される規則に従って、処理回路10がメモリアクセス要求を発行するときに動作している現在の領域に応じて限定され得る。
【0085】
【表1】
【0086】
選択に利用可能な複数の物理アドレス空間が存在する領域については、物理アドレスを提供するために使用されるアクセスされたページテーブルエントリからの情報を使用して、利用可能なPASオプションの間から選択する。
【0087】
したがって、PASフィルタ20がシステムファブリック24、8にメモリアクセス要求を出力する時点では(それが任意のフィルタリングチェックに合格したと仮定して)、メモリアクセス要求は、物理アドレス(PA)及び選択された物理アドレス空間(PAS)と関連付けられている。
【0088】
物理的別名化(PoPA)ポイント60の前に動作するメモリシステム構成要素(キャッシュ、インターコネクト、スヌープフィルタなど)の視点からは、それぞれの物理アドレス空間61は、メモリ内の異なるシステム位置に対応する完全に別のアドレス範囲とみなされる。これは、PoPA前メモリシステム構成要素の視点からは、メモリアクセス要求によって識別されるアドレス範囲は、実際には、アドレス変換において出力され得る範囲62の4倍のサイズであることを意味する。これは、事実上、PAS識別子は物理アドレス自体と並んで追加のアドレスビットとして扱われ、そのため、選択されるPASによっては同じ物理アドレスPAxが別個の物理アドレス空間61内のいくつもの別名化物理アドレス63の数にマッピングされ得るためである。これらの別名化物理アドレス63は、全て実際には、物理的ハードウェアに実装された同じメモリシステム位置に対応するが、PoPA前メモリシステム構成要素は、別名化アドレス63を別のアドレスとして扱う。したがって、そのようなアドレスにエントリを配分するPoPA前キャッシュ又はスヌープフィルタがある場合、別名化アドレス63は、別のキャッシュヒット/ミス決定と別のコヒーレンシ管理を有する、異なるエントリにマッピングされるであろう。これは、他の領域の動作を探るメカニズムとして、キャッシュ又はコヒーレンシサイドチャネルを使用する攻撃者の可能性又は有効性を低減する。
【0089】
システムは、(例えば、以下に論じられる図14に示されるように)2つ以上のPoPA60を含み得る。各PoPA60において、別名化物理アドレスは、システム物理アドレス空間64内の単一の非別名化されたアドレス65に折り畳まれる。非別名化アドレス65は、任意のPoPA後構成要素の下流に提供され、その結果、メモリシステム位置を実際に識別するシステム物理アドレス空間64は、再び、リクエスタ側で実行されるアドレス変換において出力され得る物理アドレスの範囲と同じサイズである。例えば、PoPA60では、PAS識別子はアドレスから剥離され得、下流の構成要素については、アドレスはPASを指定することなく、単に物理アドレス値を使用して識別することができる。あるいは、メモリアクセス要求のいくつかのコンプリータ側フィルタリングが所望されるいくつかの場合、PAS識別子は、PoPA60の下流で依然として提供され得るが、アドレスの一部として解釈されなくてもよい。その結果、異なる物理アドレス空間60に現れる同じ物理アドレスは、PoPAの下流において同じメモリシステム位置を指すように解釈されるであろう。しかし、供給されたPAS識別子は、それでもコンプリータ側セキュリティチェックを実行するために使用され得る。
【0090】
図5は、システム物理アドレス空間64を、グラニュール保護テーブル56を使用して、どのようにして特定のアーキテクチャ上の物理アドレス空間61内のアクセスのために配分されたチャンクに分割することができるかを示す。グラニュール保護テーブル(GPT)56は、システム物理アドレス空間65のどの部分を各アーキテクチャ上の物理アドレス空間61からアクセス可能とするかを定義する。例えば、GPT56は、あるサイズの物理アドレスのグラニュール(例えば4Kページ)に各々対応するいくつものエントリを含み得、そのグラニュールの割り当てられたPASを定義し得、これは、非セキュア、セキュア、レルム、及びルート領域の中から選択され得る。設計により、特定のグラニュール又はグラニュールのセットが、領域のうちの1つと関連付けられたPASに割り当てられている場合、それはその領域と関連付けられたPAS内でのみアクセスすることができ、他の領域のPAS内でアクセスすることはできない。しかしながら、(例えば)セキュアPASに配分されたグラニュールはルートPAS内からアクセスできないにもかかわらず、ルート領域82はそれでも、そのページテーブル内に、物理的なアドレス指定されたメモリのその区域にマッピングされたページに関連付けられた仮想アドレスがルートPASの代わりにセキュアPAS内の物理アドレスに変換されることを確実にするためのPAS選択情報を指定することによって、物理アドレスのそのグラニュールにアクセスできることに留意されたい。したがって、(前述の表に定義されたアクセス可否ルールによって許可される範囲での)領域間のデータの共有は、所与のメモリアクセス要求のPASを選択する時点で制御され得る。
【0091】
しかしながら、いくつかの実装では、GPTによって定義された、割り当てられたPAS内で物理アドレスのグラニュールへのアクセスを可能とすることに加えて、GPTは、他のGPT属性を使用して、アドレス空間のうちのある区域(例えば、通常は、その領域のアクセス要求に対して割り当てられたPASを選択することが許可されない、下位の又は直交する特権の領域に関連付けられたアドレス空間)を別のアドレス空間と共有されたものとしてマークすることができる。これは、所与のグラニュールに対して割り当てられたPASを変更する必要なしに、データを一時的に共有することを容易とし得る。例えば、図5では、レルムPASの区域70は、レルム領域に割り当てられるようにGPT内に定義されており、非セキュア領域86はそのアクセス要求のためにレルムPASを選択できないため、通常、非セキュア領域86からアクセス不可能である。非セキュア領域26はレルムPASにアクセスできないため、通常、非セキュアコードは区域70のデータを見ることができなかった。しかしながら、レルムが、メモリの割り当てられた区域内のそのデータのいくつかを非セキュア領域と共有することを一次的に望む場合、ルート領域82で動作するモニタコード29に、区域70が非セキュア領域86と共有されることを示すようにGPT56を更新することを要求することができ、これにより、どの領域が区域70に対して割り当てられた領域であるかを変更する必要なしに、区域70を図5の左側に示される非セキュアPASからもアクセス可能とし得る。レルム領域がそのアドレス空間の区域を非セキュア領域と共有されるものとして指し示す場合、非セキュア領域から発行され、その区域をターゲットとするメモリアクセス要求は、当初は非セキュアPASを指定し得るが、PASフィルタ20は要求のPAS識別子が代わりにレルムPASを指定するように再マッピングすることができる。それにより、下流のメモリシステム構成要素は要求をあたかも初めからレルム領域から発行されたかのように扱う。この共有は、異なる領域を特定のメモリ区域に割り当てるための動作が、より高程度のキャッシュ/TLB無効化、及び/又はメモリ内のデータゼロ化若しくはメモリ区域間でのデータコピーを伴う、よりパフォーマンス集約的であり得るために、パフォーマンスを改善し得る。これは、共有が一時的なものに過ぎないと予想される場合には正当化できない可能性がある。
【0092】
図6は、処理回路10によって、又はアドレス変換回路16若しくはPASフィルタ20によって実行され得る、どのようにして現在の動作領域を判定するかを示すフロー図である。ステップ100では、現在の例外レベル15がEL3であるかどうかが判定され、そうである場合、次いで、ステップ102で、現在の領域がルート領域82であると判定される。現在の例外レベルがEL3でない場合、ステップ104で、現在の領域が、プロセッサのEL3制御レジスタ内の少なくとも2つの領域表示ビット14によって示されるように、非セキュア、セキュア、及びレルム領域86、84、88のうちの1つであると判定される(ルート領域は現在の例外レベルがEL3であることで示されるため、ルート領域に対応する領域表示ビット14のコードを有することは必須でなくてもよく、したがって少なくとも1つの領域表示ビットのコードを他の目的に留保しておくことができる)。EL3制御レジスタは、EL3で動作するときに書き込み可能であり、他の例外レベルEL2~EL0から書き込むことはできない。
【0093】
図7は、アドレス変換回路16によって、仮想アドレスから物理アドレスへのマッピング、仮想アドレスから中間アドレスへのマッピング、又は中間アドレスから物理アドレスへのマッピングに使用されるページテーブル構造内のページテーブルエントリのために(そもそもステージ2の変換が必要な動作状態で変換がなされているか、及びステージ2変換が必要な場合、変換がステージ1、ステージ2のどちらであるかに応じて)使用することができるページテーブルエントリ(PTE)の例を示す。一般に、所与のページテーブル構造は、ページテーブルの第1のレベルがプロセッサの変換テーブルベースアドレスレジスタに記憶されたベースアドレスに基づいて識別されるページテーブルツリーとして実装される、マルチレベルテーブル構造として定義されてもよく、ページテーブル内の特定のレベル1ページテーブルエントリを選択するインデックスは、変換ルックアップの実行対象である入力アドレスのビットのサブセットから導出される(入力アドレスは、ステージ2変換のための中間アドレスの、ステージ1変換用の仮想アドレスであり得る)。レベル1ページテーブルエントリは、次のレベルのページテーブルへのポインタ112を提供する「テーブル記述子」110であり得、そこから、更なるページテーブルエントリが、入力アドレスのビットの更なるサブセットに基づいて選択され得る。最終的に、連続するレベルのページテーブルへの1つ以上のルックアップの後、入力アドレスに対応する出力アドレス120を提供するブロック又はページ記述子PTE114、116、118を識別することができる。出力アドレスは、(更なるステージ2変換もまた実行される動作状態において実行されるステージ1変換のための)中間アドレス、又は(ステージ2の変換、又はステージ2が必要とされないときのステージ1の変換のための)物理アドレスであり得る。
【0094】
上述の別個の物理アドレス空間をサポートするために、ページテーブルエントリフォーマットは、次のレベルのページテーブルポインタ112又は出力アドレス120、及びメモリの対応するブロックへのアクセスを制御するための任意の属性122に加えて、物理アドレス空間選択で使用するためのいくつかの追加の状態を指定することができる。
【0095】
テーブル記述子110については、非セキュア領域86以外の任意の領域によって使用されるPTEは、次のレベルのページテーブルが非セキュア物理アドレス空間と現在の領域の物理アドレス空間のどちらからアクセスされるべきかを示す非セキュアテーブルインジケータ124を含む。これは、ページテーブルのより効率的な管理を容易にするのに役立つ。多くの場合、ルート、レルム又はセキュア領域24によって使用されるページテーブル構造は、仮想アドレス空間の一部分についてのみ特別なページテーブルエントリを定義すれば足り得る。そして、他の部分については非セキュア領域26によって使用されるものと同じページテーブルエントリが使用可能である。したがって、非セキュアテーブルインジケータ124を提供することによって、ページテーブル構造のより高レベルでレルム/セキュア専用テーブル記述子を提供することができる一方で、ページテーブルツリーのあるポイントで、ルートレルム又はセキュア領域は、アドレス空間のより高いセキュリティが必要とされない部分については、非セキュア領域からのページテーブルエントリの使用に切り替えることできる。ページテーブルツリーの他の部分にある他のページテーブル記述子は、ルート、レルム、又はセキュア領域に関連付けられた関連する物理アドレス空間からなおフェッチできる。
【0096】
一方、ブロック/ページ記述子114、116、118は、どの領域に関連付けられているかに応じて、物理アドレス空間選択情報126を含み得る。非セキュア領域86内で使用される非セキュアブロック/ページ記述子118は、非セキュア領域が非セキュアPASにのみアクセスできるため、いかなるPAS選択情報をも含まない。しかしながら、他の領域については、ブロック/ページ記述子114、116は、入力アドレスを変換するPASを選択するために使用されるPAS選択情報126を含む。ルート領域22について、EL3ページテーブルエントリは、対応する物理アドレスが変換される選択されたPASとして4つの領域82、84、86、88のいずれかと関連付けられたPASを示すために少なくとも2ビットを含むPAS選択情報126を有し得る。対照的に、レルム及びセキュア領域については、対応するブロック/ページ記述子116は1ビットのPAS選択情報126のみを含む必要があり、これによって、レルム領域については、レルムと非セキュアPASの間で選択し、セキュア領域についてはセキュアPASと非セキュアPASの間で選択する。回路実装の効率を向上させ、ページテーブルエントリのサイズを増加させることを回避するために、レルム及びセキュア領域については、ブロック/ページ記述子116は、PAS選択情報126を、現在の領域がレルム又はセキュアであるかどうかに関係なく、PTE内の同じ位置にコードすることができるため、PAS選択ビット126を共有することができる。
【0097】
したがって、図8は、現在の領域、及び所与のメモリアクセス要求に対して物理アドレスを生成する際に使用される、ブロック/ページPTEからの情報124、126に基づいてPASを選択する方法を示すフロー図である。PAS選択は、アドレス変換回路16によって実行され得る、又はアドレス変換回路がPAS選択情報126をPASフィルタ20に送付する場合には、アドレス変換回路16とPASフィルタ20との組み合わせによって実行され得る。
【0098】
図8のステップ130では、処理回路10が、所与の仮想アドレス(VA)をターゲットVAとして指定してメモリアクセス要求を発行する。ステップ132では、アドレス変換回路16が、そのTLB18内の任意のページテーブルエントリ(又はそのようなページテーブルエントリから導出されたキャッシュ情報)をルックアップする。いずれかの必要なページテーブル情報が利用できない場合、アドレス変換回路16は、必要なPTEをフェッチするためにメモリへのページテーブルウォークを開始する(VAから中間アドレス(IPA)へ、そしてIPAからPAへのマッピングを得るため、潜在的に、ページテーブル構造のそれぞれのレベル及び/又はアドレス変換の複数ステージをステップスルーするための一連のメモリアクセスを要する)。ページテーブルウォーク動作においてアドレス変換回路16によって発行される任意のメモリアクセス要求は、それ自体が、アドレス変換及びPASフィルタリングの対象となり得る。したがって、ステップ130で受信された要求は、メモリからページテーブルエントリを要求するために発行されたメモリアクセス要求であり得ることに留意されたい。関連性を有するページテーブル情報が識別されると、仮想アドレスは、物理アドレスに(おそらくIPAを介して2つのステージで)変換される。ステップ134では、アドレス変換回路16又はPASフィルタ20が、図6に示す手法を使用して、どの領域が現在の領域であるかを判定する。
【0099】
現在の領域が非セキュア領域である場合、ステップ136で、このメモリアクセス要求のために選択された出力PASは非セキュアPASである。
【0100】
現在の領域がセキュア領域である場合、ステップ138で、物理アドレスを提供したブロック/ページ記述子PTEに含まれたPAS選択情報126に基づいて出力PASが選択され、出力PASはセキュアPAS又は非セキュアPASのいずれかとして選択される。
【0101】
現在の領域がレルム領域である場合、ステップ140で、物理アドレスが導出されたブロック/ページ記述子PTEに含まれるPAS選択情報126に基づいて出力PASが選択され、この場合、出力PASはレルムPAS又は非セキュアPASのいずれかとして選択される。
【0102】
ステップ134で現在の領域がルート領域であると判定された場合、ステップ142で、物理アドレスが導出されたルートブロック/ページ記述子PTE114内のPAS選択情報126に基づいて、出力PASが選択される。この場合、出力PASは、ルート、レルム、セキュア、及び非セキュア領域に関連付けられた物理アドレス空間のいずれかとして選択される。
【0103】
図9は、物理アドレスの所与のグラニュールに対するGPT56のエントリの例を示す。GPTエントリ150は、物理アドレスのグラニュールに割り当てられたPASを識別する割り当てられたPAS識別子152を含み、任意選択で、例えば、物理アドレスのグラニュールが割り当てられたPAS以外の1つ以上の他のPASで可視化される前述の共有属性情報156を含むことができる更なる属性154を含む。共有属性情報156の設定は、割り当てられたPASに関連付けられた領域内で実行されるコードからの要求に応じてルート領域によって実行され得る。また、属性は、(メモリアクセス要求のために選択されたPASが物理アドレスのグラニュールにアクセスできるかどうかを判定するための)GPTチェックが、以下で更に説明するように、PASフィルタ20によってリクエスタ側で、又はインターコネクトのコンプリータデバイス側のコンプリータ側フィルタリング回路によって実行されるべきかどうかを示す、パススルーインジケータフィールド158を含み得る。パススルーインジケータ158が第1の値を有する場合、リクエスタ側フィルタリングチェックがリクエスタ側のPASフィルタ20で必要とされ得て、これらが失敗した場合、メモリアクセス要求はブロックされて不具合がシグナリングされ得る。しかしながら、パススルーインジケータ158が第2の値を有する場合、GPT56に基づくリクエスタ側フィルタリングチェックは、そのGPTエントリ150に対応する物理アドレスのグラニュール内の物理アドレスを指定するメモリアクセス要求のためには不要であり得、この場合、メモリアクセス要求は選択されたPASが物理アドレスのそのグラニュールにアクセス可能とされた許可されたPASのうちの1つであるかどうかをチェックすることには関係なく、キャッシュ24又はインターコネクト8にパススルーされてもよく、その代わりにそのような任意のPASフィルタリングチェックが次いでコンプリータ側で後で実行される。
【0104】
図10は、インターコネクト8のリクエスタ側でPASフィルタ20によって実行されるリクエスタ側PASフィルタリングチェックを示すフロー図である。ステップ170では、PASフィルタ20が、物理アドレスと関連付けられたメモリアクセス要求と、前述の図8に示されるように選択され得る出力PASとを受信する。
【0105】
ステップ172では、PASフィルタ20が、利用可能な場合はグラニュール保護情報キャッシュ22から、又はメモリに記憶されたテーブル構造から必要なGPTエントリをフェッチするための要求をメモリに発行することによって、指定されたPAに対応するGPTエントリを取得する。必要とされるGPTエントリが取得されると、ステップ174において、PASフィルタは、メモリアクセス要求に対して選択された出力PASが、ステップ172で得られたGPTエントリにおいて定義された割り当てられたPAS152と同じであるかどうかを判定する。そうである場合、ステップ176で、(PA及び出力PASを指定する)メモリアクセス要求をキャッシュ24又はインターコネクト8に渡すことが可能とされる。
【0106】
出力PASが割り当てられたPASでない場合、ステップ178において、PASフィルタは、出力PASが、指定されたPAに対応するアドレスのグラニュールにアクセス可能とされた許可されたPASとして、得られたGPTエントリからの共有属性情報156に示されているかどうかを判定する。そうである場合、ステップ176で再び、メモリアクセス要求は、キャッシュ24又はインターコネクト8に渡されることが許可される。共有属性情報は、GPTエントリ150内の一意のビット(又はビットのセット)として符号化することができる、又は同じフィールドの他の符号化が他の情報を示し得るGPTエントリ150のフィールドの1つ以上の符号化として符号化することができる。ステップ178で、共有属性が、割り当てられたPAS以外の出力PASがPAにアクセスすることが許可されていると判定された場合、ステップ176で、キャッシュ24又はインターコネクト8に渡されたメモリアクセス要求で指定されたPASは、出力PASではなく割り当てられたPASである。PASフィルタ20は、メモリアクセス要求によって指定されたPASを、割り当てられたPASに一致するように変形させ、その結果、下流メモリシステム構成要素は、割り当てられたPASを指定して発行された要求と同じように扱う。
【0107】
出力PASが、特定の物理アドレスにアクセスすることが許可されているとして共有属性情報156に示されていない場合(又は代替的に、共有属性情報156がサポートされない実装においては、ステップ178はスキップされる)、ステップ180で、ターゲット物理アドレスに対して得られたGPTエントリ内のパススルーインジケータ158が、リクエスタ側PASフィルタ20で実行されたチェックに関係なく、メモリアクセス要求がキャッシュ24又はインターコネクト8にパススルーされ得ることを識別するかどうかが判定され、パススルーインジケータが指定されている場合、ステップ176で、(出力PASをメモリアクセス要求に関連付けられたPASとして指定して)メモリアクセス要求を再び進めることができる。あるいは、ステップ174、178、及び180におけるいずれのチェックも、メモリアクセス要求が許可されていることを識別しない場合、ステップ182で、メモリアクセス要求はブロックされる。したがって、メモリアクセス要求はキャッシュ24又はインターコネクト8に渡されず、不具合がシグナリングされて、不具合に対処するための例外処理をトリガし得る。
【0108】
ステップ174、178、180は図10に順々に示されているが、これらのステップはまた、所望される場合、並列して又は異なる順序で実施され得る。また、ステップ178及び180は必須ではなく、いくつかの実装態様は、共有属性情報156及び/又はパススルーインジケータ158の使用をサポートしない場合があることを理解されたい。
【0109】
図11は、アドレス変換回路16及びPASフィルタの動作を要約する。PASフィルタリング20は、アドレス変換回路によって実行される、ステージ1(及び任意選択でステージ2)のアドレス変換後に実行される追加のステージ3のチェックとみなすことができる。また、EL3変換は、2ビットのアドレスに基づく(図11の実施例ではNS、NSEとラベル付けされた)選択情報を提供するページテーブルエントリに基づいており、一方、単一ビットの選択情報「NS」は、他の状態のPASを選択するために使用されることにも留意されたい。グラニュール保護チェックへの入力として図11に示すセキュリティ状態は、処理要素4の現在の領域を識別するドメインIDを指す。
【0110】
図12は、その中で本技法が適用され得るデバイスのネットワークの一例を示す。特に、図12は、ルートポート202及びインターコネクト204を介して、いくつものプロセッサブロック(プロセッサコア)206、暗号化エンジン208、及び暗号化エンジン208を介してメモリ210に結合されたいくつものデバイス200を示す。インターコネクト204は、デバイス(図に示されるデバイス200のうちの1つなど)を1つ以上の処理要素(図に示されるプロセッサブロック206A、206B、206C内に示される処理回路212A、212B、212Cなど)に結合するインターコネクト回路の一例である。例えば、インターコネクト204は、図1に示されるインターコネクト8と同一又は類似の構成を有することができる。
【0111】
インターコネクト及びそれに接続された構成要素(ルートポート202及びプロセッサブロック206など)は、インターコネクト通信プロトコルを使用して、それらの間でメッセージを交換することができる。しかし、代替の通信プロトコルに従って動作し、したがってインターコネクトを含むサブシステムに対する外部デバイスとみなすことができるデバイスも、例えば図12に示すルートポート202を介してインターコネクトに接続することができる。例として、図12に示されるデバイス200A及び200Bは、パケットネットワークを使用してルートポート202と通信することができ、PCIe(Peripheral Component Interconnect Express)プロトコルなど、そのパケットネットワークのパケットプロトコルを使用することができる。したがって、ルートポートは、外部デバイス200A、200Bによって使用されるプロトコルと、インターコネクト及びそれに接続された接続構成要素によって使用されるプロトコルとの間のブリッジとして機能する。
【0112】
メモリ210へのアクセスは、図3に示すメモリコントローラMCなどのメモリコントローラ(図12には図示せず)によって制御することができる。暗号化エンジン208は、データがメモリ210に記憶される前にデータを暗号化するため、又はデータがメモリ210から取り出されるときにデータを復号化するために提供される。
【0113】
プロセッサブロック206の各々は、図1に示される処理回路10と同一であってもよく、メモリ210に記憶されたデータにアクセスするための(例えば)ロード/ストア命令を含むプログラム命令を実行するように構成されている、処理回路212を備える。
【0114】
処理回路212の各セットは、複数のキャッシュへのアクセスを有し、各キャッシュは、メモリ210に記憶されたデータのいくつかのコピーを記憶する。いくつかの例では、図12に示すキャッシュは、図1のPASフィルタ20とインターコネクト8との間のキャッシュ24と同等であってもよい。
【0115】
特に、各プロセッサブロック206は、メモリ210に記憶されたデータのコピーを記憶するためのレベル1データキャッシュ214と、メモリ210に記憶された命令のコピーを記憶するためのレベル1命令キャッシュ216とを備える。各プロセッサブロック206はまた、データ及び命令の両方のコピーを記憶する統合されたレベル2キャッシュ218へのアクセスを有し得る。統合されたレベル2キャッシュ218の各々は、それ自体のレベル2キャッシュ218Cを組み込むプロセッサブロック206Cの例のように、1つのプロセッサブロック206のみにとってアクセス可能であってもよく、プロセッサブロックの同じクラスタ220内にあり、レベル2キャッシュ218Aを共有すると考えられるプロセッサブロック206A及び206Bの例のように、複数のプロセッサブロック206間で共有されてもよい。
【0116】
したがって、図12に示されるネットワークのメモリシステムは、メモリ210と処理回路212のセットの各々との間に提供される複数のレベルのキャッシュを有する階層構造を有し得る。キャッシュ214、216、218は、上述したように、メモリ210に記憶されたデータ又は命令のコピーを記憶することができる。キャッシュに記憶されたデータ又は命令は、低減されたレイテンシで処理回路212によってアクセスされ得る。この低減されたレイテンシは、部分的に、キャッシュが通常メインメモリ210よりも大幅に小さい結果であり、その結果、キャッシュのうちのアドレスをルックアップすることが、メモリ中のアドレスをルックアップすることよりも著しく迅速であり得る。加えて、キャッシュは、メモリ210よりも処理回路212により近く、特に、メモリ210は、インターコネクト204などの他の構成要素によって処理回路212から分離されているが、キャッシュ214、216、218は分離されておらず、これもまた、キャッシュに保持されたデータにアクセスすることに関連付けられたレイテンシを低減する。したがって、いくつかのデータ(特に、処理回路によって頻繁にアクセスされるデータ)がローカルキャッシュに記憶されることを可能にすることは、データアクセスに関連付けられたレイテンシを低減することによって、各プロセッサブロック206のパフォーマンスが向上されることを可能にする。
【0117】
上述したように、図12に示すシステムは、複数のレベルのキャッシュを備える。これは必須ではなく、処理要素に単一のキャッシュを提供しても何らかのパフォーマンス利益をもたらすが、レベル1キャッシュ214のサイズを増大させる必要なく、処理回路のより近くに著しく多くのデータを記憶することを可能にするので、特に有利であり得る。通常は、レベル1キャッシュ214は、処理回路212によって直近にアクセスされた(したがって、再びアクセスされる可能性が非常に高い)データを記憶し、キャッシュの後続の各レベルは、前のキャッシュレベルに記憶されたデータよりも最近アクセスされていないデータを記憶する。
【0118】
キャッシュは包含的であってもよく、これは、1つのキャッシュに記憶されたデータが後続の各キャッシュレベルにも記憶されることを意味する。実際には、これは、レベル1キャッシュを超える各キャッシュが、前のキャッシュレベルに記憶されたデータ(命令を含む)の全て、及びいくつかの追加データを記憶することを意味する。これは、(例えば、LRU(least recently used)ポリシーなどのキャッシュ置換ポリシーに起因して)データ項目が1つのキャッシュから追い出されるとき、そのデータ項目が後続のレベルのキャッシュに残る可能性が高いことを意味する。例えば、データがレベル1データキャッシュ214から追い出される場合、そのデータは、レベル1データキャッシュ214から追い出された後の少なくともいくらかの時間の間、レベル2キャッシュ218に残る。これは、レベル1データキャッシュ214から追い出された後に(しかし、レベル2キャッシュから追い出される前に)処理回路がそのデータに再びアクセスする必要がある場合、データがレベル1データキャッシュ214に存在していた場合よりもレイテンシは大きいものの、メモリからデータを取り出す必要なく、データに依然としてアクセスすることができることを意味する。
【0119】
あるいは、キャッシュは排他的であってもよく、これは、所与のデータ項目が所与の時間にキャッシュレベルのみに記憶されることを意味する。
【0120】
包含的キャッシュ又は排他的キャッシュの選択は実装の詳細であり、システムの必要性に基づいて選択することができる。更に、システム内のキャッシュの全てが包含的又は排他的である必要はない。実際、包含的キャッシュ内の所与のデータ項目は、それらが1つのキャッシュのみに記憶されるように、排他的として扱われ得る。
【0121】
図12は、メモリ210と処理回路212との間の2つのレベルのキャッシュのみを示すが、任意の数のレベルのキャッシュが提供され得ることが理解されよう。更に、図12のキャッシュレベルは、最小番号が処理回路に最も近いキャッシュに対応するように番号付けされている(すなわち、レベル1は処理回路212に最も近く、レベル2はレベル1よりも処理回路212から遠い)が、これは単なるラベルであり、異なる機能を暗示することなく、ラベル付けの任意の他の選択肢を使用することができることが理解されよう。
【0122】
各プロセッサブロック206の処理回路212によって実行されているプロセスは、上述の領域(ワールド)のうちの1つ内で実行されてもよい。例えば、プロセスは、セキュア領域84、よりセキュアでない領域86、レルム領域88、又はルート領域82内で実行することができ、これらのプロセスによるメモリへのアクセスは、上記で詳細に説明した技法に従って制御することができる。例えば、別個の物理アドレス空間(PAS)が領域の各々に提供されてもよい。
【0123】
更に、処理回路によって実行されるプロセスは、異なる信頼できる実行環境内で実行されてもよく、1つの信頼できる実行環境において実行されるプロセスは、他の信頼できる実行環境において実行されるプロセスから隔離される。例えば、所与の処理要素は、その処理要素上で実行される任意のプロセスが、処理要素に関連付けられた信頼できる実行環境内で実行されるように、完全に1つの信頼できる実行環境内で動作し得る。処理要素は、異なる時間に異なる信頼できる実行環境内で動作し得る。あるいは、所与の処理要素の処理回路212上で実行する異なるプロセスは、異なる信頼できる実行環境において実行されてもよい。これらの信頼できる実行環境は、例えば、上述したように、レルム領域内で提供されるレルムに対応することができる。しかしながら、セキュア領域又はルート領域などの他の領域内に信頼できる実行環境を提供することも可能であり得ることが理解されよう。更に、別個の実行ドメインを持たないシステムにおいて信頼できる実行環境を提供することも可能である。
【0124】
上述したように、プロセッサブロック206は、インターコネクト204に接続されており、これにより、プロセッサブロックは、暗号化エンジン208を介してメモリ210と通信し、ルートポートを介してデバイス200と通信することができる。この例におけるインターコネクト204は、インターコネクトに接続されたデバイス(例えば、プロセッサブロック206又はデバイス200)のいずれかによるメモリ210の一部分へのアクセスを制御するように構成された少なくとも1つのホームノード222を備える。
【0125】
デバイス200の各々は、例えば、図1に示すように、リクエスタデバイス4であってもよい。あるいは、デバイス200は、トランザクションをインターコネクト204に送信し、メモリ210に記憶されたデータへのアクセスを要求することができる任意の他のデバイスであってもよい。デバイスの各々は、所与の信頼できる実行環境内で動作し得、したがって、その信頼できる実行環境に関連付けられたデータにアクセスすることを許可され得る。例えば、デバイスのうちの1つで実行する特定のプロセスは、特定の信頼できる実行環境内で実行されるとみなされてもよい。あるいは、特定のデバイス自体が所与の信頼できる実行環境内にあるとみなされてもよく、その結果、そのデバイスによって実行される任意のプロセスも、その信頼できる実行環境内にあるとみなされる。本明細書で説明する技法によれば、デバイス200のうちの1つによって発行されたトランザクションは、トランザクションを発行するプロセスが属する信頼できる実行環境を識別する信頼できる実行環境識別子(本明細書ではレルム識別子又はレルムIDとも呼ばれる)を含むことができる。
【0126】
デバイス200は、ルートポート202を介してインターコネクト202に接続される。特に、デバイス200及びルートポート202は階層構造内に設けられ、第1レベルのデバイスのルートポート202はインターコネクト204に直接接続され、デバイス200はルートポートを介してインターコネクトに接続される。単一のルートポートのみが図12に示されているが、複数のルートポートが提供されてもよいことが理解されよう。更に、デバイス200及びルートポート202を含む図12のデバイスネットワークには2つのレベルのデバイスしか示されていないが、デバイス200とルートポート202との間に更なるレベルのデバイスがあってもよく、所与のレベルの各デバイスは、ツリー状構造で前のレベルのデバイスのうちの1つに接続される。他の例では、デバイス200は、介在するルートポートなしにインターコネクトに直接接続されてもよい。
【0127】
デバイス200によって発行され得るトランザクションの1つのタイプは、スタッシングトランザクションである。スタッシングトランザクションは、メモリ210内のデータにアクセスするのではなく、処理要素のうちの1つにとってアクセス可能なストレージ構造内のデータにアクセスする要求を含む。図12の例では、ストレージ構造は、キャッシュ214、216、218のうちの1つを備える。しかしながら、キャッシュを有さないシステムでは、これは、メモリ210以外の任意のストレージ構造、例えば、プロセッサブロック206のうちの少なくとも1つとインターコネクト204の同じ側の任意のストレージ構造を指し得ることが理解されよう。
【0128】
所与のスタッシングトランザクションが、それがルーティングされるキャッシュを示す方法は、様々であり得る。いくつかの例では、トランザクションがルーティングされるべきキャッシュを示すためにステアリングタグが使用され、他の例では、これは、スタッシングトランザクションによって示される信頼できる実行識別子に基づいて判定され得る。
【0129】
トランザクションをこのようにキャッシュにステアリングすることを可能にし、その結果、スタッシングトランザクションが、データをメモリ210ではなくキャッシュの1つに直接書き込むことができ、システムのパフォーマンスを向上させることができる。特に、処理要素のうちの1つによるそのデータへの後続のアクセスに関連付けられたレイテンシは、例えば、データがすでにキャッシュ内に存在することになるので、低減されることができ、メモリからデータを取り出すことに関連付けられたレイテンシは、回避されることができる。
【0130】
しかしながら、特にプロセッサブロック206及びそれらのキャッシュが信頼できる実行環境内で動作している場合、デバイスによって発行されたトランザクションがプロセッサブロック206にとってアクセス可能なキャッシュに直接データを書き込むことを可能にすることは、直観に反しているように思われる可能性がある。当業者であれば、外部デバイスが所与の信頼できる実行環境内のキャッシュに直接アクセスできるようにすることは、セキュリティリスクをもたらす可能性があると想定するであろう。
【0131】
しかしながら、本技法の発明者らは、デバイス(又は複数のデバイス200)からスタッシングトランザクションを受信し、許可されたスタッシングトランザクションを1つ以上のプロセッサブロック206のうちの少なくとも1つにとってアクセス可能な所与のストレージ構造(例えば、キャッシュ214、216、218のうちの1つ)にリダイレクトするために、セキュアスタッシング決定回路224を提供することによって、このセキュリティリスクが軽減され得ることに気付いた。特に、セキュアスタッシング決定回路224は、所与のスタッシングトランザクションを受信することに応答して、所与のスタッシングトランザクションが所与の信頼できる実行環境に関連付けられた信頼できる実行環境識別子を含むかどうかを判定し、信頼できる実行環境識別子に依存するリダイレクション要件が満たされたときに、所与のスタッシングトランザクションを許可されたスタッシングトランザクションとして扱うように構成されている。これは改善されたセキュリティを提供し、その結果、システムのセキュリティを損なうことなく、スタッシングトランザクションに関連付けられたパフォーマンス利益を提供することができる。
【0132】
図12に示すように、セキュアスタッシング決定回路224は、ルートポート202内に提供することができる。しかし、セキュアスタッシング決定回路224は、インターコネクト204内のホームノード222内など、異なる位置に提供することも可能である。
【0133】
セキュアスタッシング決定回路224が、スタッシングトランザクションが許可されたスタッシングトランザクションであるかどうかを判定することができる1つの方法は、信頼できる実行環境識別子(レルムID)及びスタッシングトランザクションに関連付けられたステアリングタグの一方又は両方に基づく(又は、実際には、これらの識別子のいずれかが存在しないことに基づく)。
【0134】
図13は、ステアリングタグ302及びレルムID 304を含むスタッシングトランザクション300の一例を示す。上述したように、レルムID 304は、トランザクションを発行するデバイスが実行している信頼できる実行環境を示し、ステアリングタグ302は、(セキュアスタッシング決定回路によって許可される場合)トランザクションがリダイレクトされる、特定のストレージ構造(例えば、キャッシュ)を示す。図13に示すスタッシングトランザクションはまた、識別されたストレージ構造書き込まれるデータ及びその関連しているメモリアドレスであるペイロード306を含む。スタッシングトランザクションは、メモリではなくキャッシュにリダイレクトされるように意図されているが、所与のキャッシュ内の適切なエントリを識別することができるように、メモリアドレスを依然として提供することができる。
【0135】
図14は、図12に示すセキュアスタッシング決定回路224の一例を示す。上述したように、セキュアスタッシング決定回路224は、デバイス200のうちの少なくとも1つからスタッシングリクエストを受信し、それらが許可されたスタッシングトランザクションであるかどうかを判定し、許可されたトランザクションをシステム内のキャッシュのうちの1つにリダイレクトするように構成されている。
【0136】
図14の例では、セキュアスタッシング決定回路224は、ターゲットキャッシュテーブル400を備え、ターゲットキャッシュテーブル400をルックアップすることによって、受信されたスタッシングトランザクションが許可されたスタッシングトランザクションであるかどうかを判定するように構成されている。
【0137】
図15は、ターゲットキャッシュテーブル400の一例を示す。この特定の例では、ターゲットキャッシュテーブル400の各エントリは、ステアリングタグと、そのステアリングタグに関連付けられたターゲットキャッシュと、そのキャッシュが動作する信頼できる実行環境を識別するレルムIDとを指定する。このテーブルは、関連付けられたターゲットキャッシュ及びそのレルムIDを判定するためにステアリングタグを使用して、又はどのキャッシュがそのレルム内にあるかを判定するためにレルムIDを使用して、参照することができる。テーブル内でルックアップされる値は、セキュアスタッシング決定回路によって受信される所与のスタッシングトランザクションのフォーマットに依存し得る。例えば、スタッシングトランザクションを受信すると、セキュアスタッシング決定回路は、トランザクションがステアリングタグ及びレルムIDを含むかどうかを判定することができる。
【0138】
受信されたスタッシングトランザクションが有効なステアリングタグ及び有効なレルムIDを含む場合、セキュアスタッシング決定回路は、ステアリングタグ又はレルムIDのいずれかを使用してターゲットキャッシュテーブル400を参照することができる。1つの特定の例では、セキュアスタッシング決定回路は、ターゲットキャッシュテーブル400内のステアリングタグをルックアップし、ステアリングタグ及びその関連するレルムIDに関連付けられたターゲットキャッシュを見つける。ターゲットキャッシュのレルムIDが、受信されたスタッシングトランザクションのレルムIDと一致する場合、セキュアスタッシング決定回路は、受信されたスタッシングトランザクションを識別されたターゲットキャッシュにリダイレクトする。
【0139】
受信されたスタッシングトランザクションが有効なステアリングタグを含むがレルムIDを含まない場合、セキュアスタッシング決定回路は、ターゲットキャッシュテーブル400においてステアリングタグをルックアップし得る。そのステアリングタグに関連付けられたレルムIDが、関連付けられたターゲットキャッシュがレルム内にあることを示す場合、スタッシングトランザクションは、セキュアスタッシング決定回路によって拒否される。そうでない場合、セキュアスタッシング決定回路は、スタッシングトランザクションを識別されたターゲットキャッシュにリダイレクトする。
【0140】
受信されたスタッシングトランザクションが有効なレルムIDを含むがステアリングタグを含まない場合、セキュアスタッシング決定回路は、ターゲットキャッシュテーブル400内のレルムIDをルックアップし、そのレルムIDに関連付けられたターゲットキャッシュにスタッシングトランザクションをリダイレクトすることができる。
【0141】
図15に示されるターゲットキャッシュテーブル400は、ターゲットキャッシュテーブル400がどのように構成され得るかの一例に過ぎず、他の例も可能であることが理解されよう。例えば、各レルムに別個のテーブルが提供されてもよく、ルックアップされるテーブルはレルムIDに基づいて選択され得る。あるいは、各ステアリングタグに別個のテーブルが提供されてもよい。
【0142】
図15はまた、任意選択でセキュアスタッシング決定回路内に提供されてもよいレルムキーIDテーブル500の一例を示す。本技法のいくつかの例では、スタッシングトランザクションによって指定されたレルムIDを使用してレルムキーIDを識別することができ、その後、レルムキーIDを使用して、特定のレルムに関連付けられたデータがメモリに記憶される前にそれを暗号化するために使用されるレルム暗号化キーを識別することができる。セキュアスタッシング決定回路内にレルムキーIDテーブル500を提供することは、セキュアスタッシング決定回路が、レルムIDに基づいて、所与のスタッシングトランザクションのためのレルムキーIDを識別することを可能にする。次いで、レルムキーIDは、いくつもの異なる方法で使用され得る。例えば、レルムキーIDは、スタッシングトランザクションと共にターゲットキャッシュに送信されてもよく、少なくともいくつかの状況では、それは、スタッシングトランザクションによって識別されたデータと共にターゲットキャッシュに書き込まれてもよい。
【0143】
任意選択で、セキュアスタッシング決定回路はまた、所与の許可されたスタッシングトランザクションに関してキャッシュ包含性を制御するように構成されていてもよい。上述したように、処理システムは、階層構造の複数のレベルのキャッシュを備えることができ、キャッシュの少なくともいくつかは、1つのキャッシュ内のデータのコピーが階層内のより低いレベルのキャッシュにも保持される(例えば、レベル1キャッシュ内のデータがレベル2キャッシュにも保持される)ことを意味する「包含的」であってもよい。しかしながら、特定のデータ項目が特定のプロセスにとってのみアクセス可能であることが意図されている場合、例えば、データ項目が特定のレルムに関連付けられている場合、このデータ項目が複数のキャッシュに記憶されることは望ましくない場合がある。特に、それらは、いくつかのレベル2キャッシュなど、複数の処理要素間で共有されるキャッシュ内に機密データ(例えば、レルムに関連付けられたデータ)を記憶することに関連付けられたセキュリティリスクであり得る。したがって、セキュアスタッシング決定回路がレルムIDに基づいてキャッシュ包含性を制御することを可能にすることで、改善されたセキュリティを提供することができる。例えば、セキュアスタッシング決定回路は、レルムIDが存在するとき、又はレルムIDが所定の値を有するとき、所与のスタッシングトランザクションに関連付けられたデータのコピーが2つ以上のキャッシュに記憶されるのを防止するように構成することができる。
【0144】
しかしながら、セキュアスタッシング決定回路がレルムキーIDを識別する能力、又は許可されたスタッシングトランザクションのキャッシュ包含性を制御する能力は、セキュアスタッシング決定回路がどのスタッシングトランザクションをリダイレクトし、どれを拒否するかを制御する能力に影響を与えることなく提供又は省略することができる任意選択の特徴であることが理解されよう。
【0145】
ステアリングタグ及びレルムIDに基づいてセキュアスタッシング決定回路によってどのようにスタッシングが制御され得るかについてのいくつかのオプションが上記で説明された一方、図16は、ステアリングタグ及び/又はレルムIDの所与の組合せにセキュアスタッシング決定回路がどのように応答し得るかの概要を提供する。図16の表は、上述した方法でキャッシュ包含性を制御すること、又はレルムキーIDを識別することを示していないが、これらの任意選択の特徴のいずれか(又は両方)が、表に示された応答に加えて提供され得ることが理解されよう。また、図16は、要求内で識別されたターゲットキャッシュ及び/又はメモリアドレスがレルム内にあるときに、セキュアスタッシング決定回路がどのようにスタッシングトランザクションを扱い得るかを示しており、セキュアスタッシング決定回路は、他のスタッシングトランザクションを様々に扱い得ることも理解されよう。
【0146】
本技法のセキュアスタッシング決定回路は、スタッシングトランザクションの受信することに応答して、スタッシングトランザクションがレルムID(信頼できる実行環境識別子)を含むかどうか、及び少なくともこの例では、スタッシングトランザクションがステアリングタグを含むかどうかを判定するように構成されている。次いで、レルムID及びステアリングタグ(又はその不在)に基づいて、セキュアスタッシング決定回路は、スタッシングトランザクションをどのように扱うかを判定することができる。
【0147】
セキュアスタッシング決定回路によるいくつもの可能なアクションが、図16の表に示されている。しかしながら、これらは単なる例であり、本技法の実際の実装は異なり得ることが理解されよう。例えば、スタッシングトランザクションが許可されたトランザクションとして扱われるいくつかの状況では(例えば、ステアリングタグが存在しないがレルムIDが存在し有効であるとき)、スタッシングトランザクションは、いくつかの実装では、代わりに拒否され得る。また、この表に示される例は、受信されたスタッシングトランザクションによってターゲットとされるキャッシュがレルム内にないとき(例えば、キャッシュがよりセキュアでない領域内にある場合)に適用されるとみなされないことも理解されよう。
【0148】
図16の表によれば、レルムIDが存在しないとき、又はレルムIDが存在するが無効であるとき、ステアリングタグが存在するかどうかにかかわらず、スタッシングトランザクションは拒否される。この状況では、レルムIDがないことは、トランザクションを送信するプロセス又はデバイスが、提供されたレルムのいずれかの中のデータにアクセスすることを信頼されているかどうかを容易に判定することができないことを意味する。したがって、潜在的に信頼できない、又は悪意のある行為者によるアクセスから、レルムのいずれかに関連付けられたデータを保護するために、トランザクションは拒否される。
【0149】
レルムIDが存在し有効であるとき、スタッシングトランザクションを発行するプロセス又はデバイスは、レルムIDによって識別されるレルム内のキャッシュのいずれにもアクセスすることが信頼されていると想定することができる。したがって、取られるアクションはステアリングタグに依存する。
【0150】
特に、レルムIDが存在し有効であるが、ステアリングタグが存在しない場合、トランザクションは、(少なくともこの例では)トランザクションのレルムIDに関連付けられたレルム内のキャッシュにリダイレクトされる。この状況では、どのキャッシュがターゲットにされることが意図されていたかが知られていない場合があるが、トランザクションを再発行する必要があるようにそのトランザクションを拒絶するのではなく、ターゲットキャッシュが識別されたレルム内のキャッシュであると想定することが、セキュアスタッシング決定回路にとってより効率的であり得る。これにより、データが、そのレルム内でプロセスを実行する処理要素にとってアクセス可能なキャッシュ内に記憶されることを可能にし、これは、上記で詳細に説明したパフォーマンス利益(例えば、データへの後続アクセスに関連付けられた低減されたレイテンシ)を提供する。その後、どのキャッシュがターゲットキャッシュであるかについての想定が正しくなかったことが判明した場合、トランザクションを発行するデバイス/プロセスがそのレルム内のデータにアクセスする許可を有することを有効レルムIDが示したので、システムのセキュリティは損なわれていない。
【0151】
一方、レルムIDが存在し有効であるが、ステアリングタグが存在するが無効である場合、トランザクションは拒否される。ステアリングタグの存在は、トランザクションを発行するプロセス/デバイスが特定のキャッシュをターゲットキャッシュにすることを意図したことを示すが、セキュアスタッシング決定回路は、どのキャッシュがターゲットキャッシュであるかを判定することができないので、この応答は適切であり得る。しかしながら、他の例では、セキュアスタッシング決定回路は、代わりに、ステアリングタグが存在しないかのようにトランザクションを扱い、それをレルムIDに関連付けられたレルム内のキャッシュにリダイレクトすることを選択してもよい。
【0152】
最後に、レルムID及びステアリングタグの両方が存在し有効である場合、セキュアスタッシング決定回路は、ステアリングタグによって識別されたターゲットキャッシュがレルムIDによって識別されたレルムと同じレルム内にあるかどうかをチェックするように構成されている。両方のレルムが同じである場合、トランザクションはリダイレクトされる。そうでない場合、トランザクションは拒否される。このようにして、システムのセキュリティを損なうことなく、キャッシュスタッシングを可能にするパフォーマンス利益を達成することができる。特に、アクセスが許可されていないレルム内のキャッシュにアクセスしようとするいかなるトランザクションも拒絶される。
【0153】
アクセスが拒絶されると、セキュアスタッシング決定回路は、エラー信号をアサートすることができ、これにより、セキュアスタッシング決定回路にとってアクセス可能なレジスタのセットにエラーがログされ得る。例えば、これらのレジスタは、ルートポート内又はインターコネクト内にあり得る。
【0154】
次に図17を参照すると、この図は、本技法によるセキュアスタッシング決定回路によって実行される方法の一例を示すフローチャートである。図17に示される方法は、スタッシングトランザクションが受信されるのを待つステップ702を含む。スタッシングトランザクションがセキュアスタッシング決定回路によって受信されると、本方法は、スタッシングトランザクションがレルムIDを含むかどうかを判定するステップ704に進む。レルムIDが存在しない場合、本方法は、トランザクションが有効なステアリングタグを含むかどうかをチェックするステップ706を含む。有効なステアリングタグが存在しない場合、セキュアスタッシング決定回路はトランザクションをリダイレクトするキャッシュを識別することができないので、トランザクションは拒否される(708)。一方、有効なステアリングタグが存在する場合、セキュアスタッシング決定回路は、ステアリングタグに関連付けられたターゲットキャッシュをルックアップし、ターゲットキャッシュがレルム内にあるかどうかを判定する(710)。ターゲットキャッシュがレルム内にある場合、トランザクションはターゲットキャッシュのレルムに対応するレルムIDを含まないので、トランザクションは拒否される(708)。一方、ターゲットキャッシュがレルム内にない場合、トランザクションは、ステアリングタグによって識別されたキャッシュにリダイレクトされる(712)。
【0155】
ステップ704に戻り、レルムIDが存在すると判定された場合、本方法は、レルムIDが有効であるかどうかを判定するステップ714に進む。レルムIDが無効である場合、トランザクションは拒否される(708)。一方、レルムIDが有効である場合、本方法は、トランザクションがステアリングタグを含むかどうかを判定するステップ716に進む。
【0156】
ステアリングタグが存在しない場合、トランザクションは、レルムIDによって識別されるレルム内のキャッシュにリダイレクトされる(718)。一方、ステアリングタグが存在する場合、本方法は、ステアリングタグが有効であるかどうかを判定するステップ720に進む。
【0157】
ステアリングタグが無効である場合、トランザクションは拒否される(708)。一方、ステアリングタグが存在する場合、本方法は、ステアリングタグによって識別されるキャッシュがレルムIDによって識別されるレルム内にあるかどうかを判定するステップ722に進む。キャッシュがレルムIDによって識別されるレルムと同じレルム内にある場合、ステップ712において、トランザクションは識別されたキャッシュにリダイレクトされる。一方、キャッシュがレルムIDによって識別されたレルム内にない場合、トランザクションはステップ708で拒否される。
【0158】
図17には示されていないが、任意選択で、いくつもの追加のステップを提供することもできることが理解されよう。例えば、ステップ718及び712はまた、レルムIDに基づいてキャッシュ包含性を制御することを含み得る。また、ステップ716と718との間、及び/又はステップ722と712との間に、トランザクションによって識別されたレルムについてレルムキーIDをルックアップする追加のステップを設けることができる。
【0159】
この方法によれば、1つ以上のデバイスによって発行されたスタッシングトランザクションは、レルムIDに依存する特定のリダイレクション要件が満たされているという条件で、システム内のキャッシュ(又は1つ以上の処理要素とインターコネクトの同じ側にある他のストレージ構造)にリダイレクトすることができる。これは、データがメモリから取り出されるのではなく、キャッシュからアクセスされる許可されたスタッシングトランザクションに応答して書き込まれたデータへの後続のアクセスを可能にし、アクセスに関連付けられたレイテンシを低減するので、著しいパフォーマンス利益を提供する。加えて、リダイレクション要件が満たされているスタッシングトランザクションのみをリダイレクトすることによって、システムのセキュリティを維持することができる。特に、リダイレクション要件をレルムIDに依存させることによって、(例えば)レルム領域内の各レルムの隔離を維持することができる。したがって、本技法は、セキュリティを犠牲にすることなく向上されたパフォーマンスを提供する。
【0160】
図18は、本技法が実装され得るシステム800の一例を概略的に示す。システム800は、複数のソケット802を備え、それぞれが少なくとも1つの処理要素803(図12に示される処理回路212を備え得る)を保持する。この例では、各ソケットはシステムオンチップ(SoC)を含む。処理要素803の各々は、少なくとも1つのキャッシュ214へのアクセスを有する(この図には示されていないが、上記で詳細に説明したように、メモリ階層の更なるレベルに他のキャッシュがあってもよいことが理解されよう)。ソケットA 802Aはまた、インターコネクト204によって処理要素803に結合されている共有デバイス200を保持する。特に、デバイス200をインターコネクト204に結合するためにルートポート202が提供される。インターコネクト204を介して処理要素803及びデバイス200にとってアクセス可能なメモリ210も提供される。データがメモリ210に記憶される前にデータを暗号化するために、暗号化エンジン208も提供される。
【0161】
共有デバイス200は、仮想デバイスを定義するプロセスのセットを実行しており、仮想デバイスは、特定のレルム内で動作しているとみなされている。共有デバイス200は、スタッシングトランザクションを含むトランザクションをインターコネクト204に発行するように構成されており、トランザクションは、仮想デバイスによって生成される。上述したように、トランザクションに含まれるデータが、低減されたレイテンシで処理要素803のうちの1つによって後でアクセスされ得るように、デバイス200によって発行されたスタッシングトランザクションをシステム内のキャッシュ214のうちの1つにリダイレクトできるようにすることが特に有利であり得る。
【0162】
この例における処理要素803A、803Bのうちのいくつかは、特定のレルム(仮想デバイスの場合と同じレルム)内でプロセスを実行しており、したがって、それらの関連付けられたキャッシュ214A、214Bは、レルム内のプライベートキャッシュであるとみなされる。一方、処理要素803Cのうちの1つは、攻撃者の制御下にあり、したがって、少なくとも、その処理要素に関連付けられたキャッシュ214Cは、攻撃者にとってアクセス可能である。これは、この特定のキャッシュ214Cに記憶された任意のデータが攻撃者にとって可視であり、したがって安全でないことを意味する。
【0163】
更に、ソケットA 802AとソケットB 802Bとの間のリンク806は、非セキュアであり(又は、より詳細には、セキュリティの好ましい標準よりもよりセキュアではない)、したがって、攻撃者の制御下にあるプローブ804は、非セキュアリンク806を介して送信された信号を傍受することができる。したがって、ソケットB上のキャッシュ214D内でアクセスされるデータも、攻撃者にとってアクセス可能である。
【0164】
したがって、共有デバイス200によって発行されたスタッシングトランザクションをレルム内のキャッシュ214A、214Bのいずれかにリダイレクトすることは(共有デバイス200上で実行される仮想デバイスが同じレルム内で動作しているので)許容されるが、これらのスタッシングトランザクションのいずれかを攻撃者の制御下でキャッシュ214C、214Dのいずれかにリダイレクトすることは、レルムに関連付けられた潜在的に機密のデータへのアクセスを攻撃者に与えることになるので、適切ではない。
【0165】
実際には、1つ以上の処理要素803Cが攻撃者の制御下にあるかどうか、又は攻撃者の制御下にあるプローブが非セキュアリンク806を介して信号を傍受しているかどうかは、通常は明らかではない。したがって、攻撃者が機密データにアクセスすることを防止することは、攻撃者の制御下で機密データをキャッシュに書き込むことを回避することほど簡単ではない。
【0166】
したがって、図18のシステムは、ある機密プロセス(例えば、セキュア環境が好ましいプロセス)が、隔離されたレルム内で実行されることを可能にし、1つのレルム内で実行するプロセスは、他のレルム内で実行するプロセスから、及びレルムのいずれかからも外部で実行する任意のプロセスからも、隔離される。図18の例では、スレッドA及びスレッドBはレルム内で実行されており、したがって、それらはレルム外の任意の他のプロセスから隔離されている。キャッシュ214A、214Bの2つも同じレルム内にあるとみなされ、そのレルム内のプロセスのみがキャッシュにアクセスすることを許可される。したがって、レルムの外側のプロセス(例えば、攻撃者が制御する処理要素803C上で実行される任意のプロセスを含む)は、スレッドA又はスレッドBに関連付けられた任意の機密データにアクセスすることを妨げられる。これは、システム800のよりセキュアでない処理構成要素のうちのいくつかが攻撃者によって侵入されたとしても、これらのスレッドのセキュリティを維持する。
【0167】
そのようなレルムベースのシステム内では、スタッシングトランザクションに関連付けられたパフォーマンス利益を提供することも可能である。特に、上述したように、スタッシングトランザクションは、デバイス200が実行しているレルムを示すレルムIDでタグ付けされ得る。次いで、セキュアスタッシング決定回路224は、スタッシングトランザクションがキャッシュ214の1つにリダイレクトされるかどうかを制御するために提供される。セキュアスタッシング決定回路224は、図12に示すようにルートポート224内に提供されることも、又はインターコネクト回路204内に提供されることもできる。例えば、図18に示すように、セキュアスタッシング決定回路は、インターコネクト204のホームノード222に設けることができる。セキュアスタッシング決定回路224は、ルートノード202及びホームノード222の両方に示されているが、これは純粋に例示目的のためであり、実際には、セキュアスタッシング決定回路は、ルートポート224又はホームノード222にあってもよいが、必ずしも両方の位置にある必要はないことが理解されよう。
【0168】
セキュアスタッシング決定回路224は、デバイス200によって発行されたスタッシングトランザクションが許可されたトランザクションであるかどうかを、スタッシングトランザクションによって指定されたレルムIDに依存するリダイレクション要件を考慮することによって判定するように構成されている。次いで、許可されたトランザクションは、レルム内のキャッシュ214A、214Bのうちの1つに向けられてもよい。
【0169】
図18はまた、セキュアスタッシング決定回路224の例をより詳細に示す。この例におけるセキュアスタッシング決定回路224は、入力として、所与のスタッシングトランザクションのレルムID及びステアリングタグを受け取り、許可されたスタッシングトランザクションについて、ターゲットキャッシュテーブルを参照することによって、ターゲットキャッシュのアイデンティティ、及び任意選択でレルムのレルムキーIDを判定するように構成された有効性及び実施回路808を備える。
【0170】
したがって、図18のシステム800は、セキュリティを損なうことなく、向上されたパフォーマンスの上述の利点を提供するために、本技法がどのように実装され得るかの特定の例を提供する。
【0171】
本出願において、「~ように構成された(configured to...)」という用語は、装置の要素が、定義された動作を実施することが可能である構成を有することを意味するために使用される。この文脈において、「構成」とは、ハードウェア又はソフトウェアの配置又は相互接続の方法を意味する。例えば、装置は、定義された動作を提供する専用ハードウェアを有してもよく、又はプロセッサ若しくは他の処理デバイスが、機能を実行するようにプログラムされてもよい。「ように構成された」は、装置要素が、定義された動作を提供するために何らかの変更がなされる必要があることを意味しない。
【0172】
本発明の例示的な実施形態が添付の図面を参照して本明細書で詳細に説明されているが、本発明はこれらの精密な実施形態に限定されず、様々な変更及び修正が、添付の特許請求の範囲によって定義された本発明の範囲及び精神から逸脱することなく、当業者によってこれらの実施形態になされ得ることを理解されたい。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
【国際調査報告】