(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-17
(45)【発行日】2024-09-26
(54)【発明の名称】共有メモリにアクセスするためのシステム、方法、及び装置
(51)【国際特許分類】
G06F 12/0831 20160101AFI20240918BHJP
【FI】
G06F12/0831
(21)【出願番号】P 2021557022
(86)(22)【出願日】2020-03-17
(86)【国際出願番号】 GB2020050686
(87)【国際公開番号】W WO2020193949
(87)【国際公開日】2020-10-01
【審査請求日】2023-02-20
(32)【優先日】2019-03-22
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】ラマグリ、グルナス
(72)【発明者】
【氏名】リンジ、トゥシャー ピー.
(72)【発明者】
【氏名】パテル、ムケシュ
(72)【発明者】
【氏名】ジャラル、ジャムシュド
(72)【発明者】
【氏名】トゥマラ、アショック クマール
(72)【発明者】
【氏名】ワークハイザー、マーク デビット
【審査官】田名網 忠雄
(56)【参考文献】
【文献】特開2017-123051(JP,A)
【文献】米国特許出願公開第2018/0157590(US,A1)
【文献】米国特許出願公開第2019/0073324(US,A1)
【文献】特開2006-216012(JP,A)
【文献】特開2013-140446(JP,A)
【文献】特開2008-293494(JP,A)
【文献】特開2018-109965(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/0806-12/0837
(57)【特許請求の範囲】
【請求項1】
データ処理ネットワークにおけるメモリ保護のための方法であって、
データ処理ネットワークの第1のメモリ保護ユニットによって、前記データ処理ネットワークの第1の要求ノードから、前記データ処理ネットワークの共有メモリにおける第1のメモリアドレスに関連付けられたデータのアクション要求を受信することと、
前記第1のメモリ保護ユニットによって、前記第1のメモリアドレスに応じて1つ以上のアクセス許可を判定することと、
前記第1のメモリ保護ユニットによって、前記第1のメモリアドレスに対する前記第1の要求ノードに対する前記1つ以上のアクセス許可で前記アクション要求を拡張することと、
前記データ処理ネットワークのホームノードにおいて、前記データ処理ネットワークの
前記第1の要求ノードからの要求メッセージを受信することであって、前記要求メッセージが
、前記第1のメモリアドレスに対する前記第1の要求ノードに対する1つ以上のアクセス許可
で拡張された前記アクション要求を含
み、前記第1の要求ノードは、前記第1のメモリ保護ユニットを介して前記ホームノードに結合されている、ことと、
前記ホームノードによって、前記
アクション要求の要求されたアクションが前記第1の要求ノードによって許可されるかどうかを、
前記拡張されたアクション要求における前記1つ以上のアクセス許可から判定することと、
前記要求されたアクションが、前記第1の要求ノードによって許可されると、コヒーレンシープロトコルに従って、システムキャッシュ、前記データ処理ネットワークの第2の要求ノードのローカルキャッシュ、又は前記共有メモリから、前記第1のメモリアドレスに関連付けられた前記データにアクセスすることと、
前記要求されたアクションが、前記第1の要求ノードによって許可されない場合、前記第1のメモリアドレスに関連付けられた前記データにアクセスすることなく、前記第1の要求ノードに応答メッセージを送信することと、を含む、方法。
【請求項2】
前記アクション要求が読み取り要求を含み、前記1つ以上のアクセス許可が読み取り許可を含まないとき、前記第1の要求ノードへの前記応答メッセージがダミーデータを含む、請求項1に記載の方法。
【請求項3】
前記アクション要求が、修正されたデータの書き込み要求を含み、前記方法が、前記1つ以上のアクセス許可が書き込み許可を含まないときに、前記ホームノードが前記修正されたデータを破棄することを更に含む、請求項1に記載の方法。
【請求項4】
前記1つ以上のアクセス許可が書き込み許可を含まないとき、前記ホームノードが前記第1の要求ノードにおいて前記修正されたデータを無効化することを更に含む、請求項
3に記載の方法。
【請求項5】
前記アクション要求が読み取り要求を含み、前記第1のメモリアドレスに関連付けられた前記データにアクセスすることが、
前記ホームノードによって、前記第2の要求ノードから前記第1のメモリアドレスに関連付けられた修正されたデータを取得することと、
前記第2の要求ノードが、前記修正されたデータに対する書き込み許可を有するときに、
前記第1の要求ノードが、前記修正されたデータに対する書き込み許可を有していないとき、
前記ホームノードによって、前記修正されたデータを前記第1のメモリアドレスで前記共有メモリに書き込んで、前記修正されたデータをクリーンデータに変更することと、
前記ホームノードによって、前記クリーンデータを前記第1の要求ノードに送信することと、
前記第1の要求ノードが、前記修正されたデータに対する書き込み許可を有するとき、
前記ホームノードによって、前記修正されたデータを前記第1の要求ノードに送信することと、
前記第2の要求ノードが、前記修正されたデータに対する書き込み許可を有していないときに、
前記ホームノードによって、前記第1のメモリアドレスで前記共有メモリからクリーンデータを取得することと、
前記ホームノードによって、前記クリーンデータを前記第1の要求ノードに送信することと、
前記第2の要求ノードにおいて前記第1のメモリアドレスに関連付けられた前記データを無効化することと、を含む、請求項1に記載の方法。
【請求項6】
前記アクション要求が、前記第1の要求ノードが書き込み許可を有していない前記第1の
メモリアドレスにおけるデータを無効化する要求を含み、前記第1のメモリアドレスに関連付けられた前記データにアクセスすることが、
前記ホームノードによって、前記第2の要求ノードから前記第1のメモリアドレスに関連付けられたデータを取得することと、
前記取得されたデータが、修正コヒーレンス状態にあるとき、
前記ホームノードによって、前記取得されたデータを前記第1のメモリアドレスで前記共有メモリに書き込んで、前記第1のメモリアドレスに関連付けられた前記データ
のコヒーレンス状態を「修正」から「クリーン」に変更することと、
前記第2の要求ノードにおいて前記第1のメモリアドレスに関連付けられた前記データを無効化することと、を含む、請求項1に記載の方法。
【請求項7】
前記第2の要求ノードが、第2のメモリ保護ユニットを介して前記ホームノードに結合され、前記方法が、
前記ホームノードによって、スヌープメッセージを前記第2の要求ノードに送信することと、
前記第2の要求ノードによって、スヌープされたデータを含むスヌープ応答を送信することと、
前記第2のメモリ保護ユニットによって、前記スヌープ応答を前記第2の要求ノードに対する1つ以上のアクセス許可で拡張することと、
前記ホームノードによって、前記拡張されたスヌープ応答を受信することと、
前記第2の要求ノードに対する前記1つ以上のアクセス許可が、前記第2の要求ノードが前記スヌープされたデータの読み取り許可を有していないことを示すとき、前記ホームノードによって、前記スヌープされたデータをドロップすることと、
前記スヌープされたデータが修正され、前記第2の要求ノードに対する1つ以上のアクセス許可が、前記第2の要求ノードが前記修正されたデータの書き込み許可を有していないことを示すときに、前記ホームノードによって、前記スヌープされたデータをドロップすることと、
を更に含む、請求項1に記載の方法。
【請求項8】
前記スヌープされたデータが
前記ホームノードによってドロップさ
れるとき、前記第2の要求ノードにおいて前記スヌープされたデータを無効化することを更に含む、請求項
7に記載の方法。
【請求項9】
前記スヌープされたデータが、前記ホームノードによってドロップされるとき、
前記ホームノードによって、前記第1のメモリアドレスで前記共有メモリからクリーンデータを取得することと、
前記ホームノードによって、前記クリーンデータを前記第1の要求ノードに送信することと、を更に含む、請求項
7に記載の方法。
【請求項10】
前記第2のメモリ保護ユニットが、
前記第2の要求ノードへの前記スヌープメッセージを傍受することと、
前記スヌープメッセージ内のトランザクション識別子を、前記第2の要求ノードの前記1つ以上のアクセス許可で色付けして、色付けされたスヌープメッセージを提供することと、
前記色付けされたスヌープメッセージを前記第2の要求ノードに転送することと、
前記第2の要求ノードから前記スヌープ応答を傍受することと、
前記スヌープ応答内の前記トランザクション識別子を色抜きすることと、
前記1つ以上のアクセス許可で拡張された、前記色抜きされたスヌープ応答を前記ホームノードに転送することと、を更に含む、請求項
7に記載の方法。
【請求項11】
前記アクション要求が、前記第1のメモリアドレスに関連付けられたデータを無効化する要求を含み、前記第1のメモリアドレスに関連付けられた前記データにアクセスすることが、
前記ホームノードによって、前記システムキャッシュ内又は前記第2の要求ノードの前記ローカルキャッシュ内のデータを取得することであって、前記データが「修正」コヒーレンス状態にある、ことと、
前記第1の要求ノードが、前記データに対する書き込み許可を有していないとき、
前記データを前記共有メモリに書き込んで、前記コヒーレンシープロトコルに従って、前記データの前記コヒーレンス状態を「修正」から「クリーン」に変更することと、 前記データを前記第1の要求ノードに送信することと、
前記システムキャッシュ内又は前記第2の要求ノードの前記ローカルキャッシュ内の前記データの前記コヒーレンス状態を「無効」に変更することと、を含む、請求項1に記載の方法。
【請求項12】
装置であって、
複数のクロスポイントスイッチであって、前記複数のクロスポイントスイッチのうちの第1のクロスポイントスイッチが、第1のメモリ保護ユニットを含み、第1の要求ノードへのインターフェースを提供する、複数のクロスポイントスイッチと、
ホームノードと、
前記複数のクロスポイントスイッチと、前記ホームノードと、共有メモリとを結合するインターコネクトであって、前記ホームノードが、前記共有メモリへのアクセスのためのコヒーレンシーシーポイントを提供する、インターコネクトと、
を備え、
前記第1のメモリ保護ユニットが、前記第1の要求ノードから前記ホームノードに向けられたメッセージを傍受し、前記傍受されたメッセージを前記第1の要求ノードの1つ以上のアクセス許可で拡張し、前記拡張されたメッセージを前記ホームノードに転送し、 前記ホームノードが、前記1つ以上のアクセス許可に応じて、前記拡張されたメッセージに応答する、装置。
【請求項13】
前記メッセージが、前記共有メモリ内の第1のメモリアドレスに関連付けられ、前記第1のメモリ保護ユニットが、前記第1のメモリアドレスに応じて前記第1のメモリ保護ユニットのアドレステーブル内の前記1つ以上のアクセス許可を検索するように構成されている、請求項
12に記載の装置。
【請求項14】
前記複数のクロスポイントスイッチの第2のクロスポイントスイッチが、第2のメモリ保護ユニットを含み、第2の要求ノードへのインターフェースを提供し、
前記ホームノードが、前記第1の要求ノードからの前記メッセージに応答して、スヌープメッセージを前記第2の要求ノードに送信するように構成され、
前記第2の要求ノードが、前記スヌープメッセージに応答して、スヌープされたデータを含むスヌープ応答を前記ホームノードに送信するように構成され、
前記第2のメモリ保護ユニットが、前記スヌープ応答を傍受し、前記スヌープ応答を前記第2の要求ノードの1つ以上のアクセス許可で拡張し、前記拡張されたスヌープ応答を前記ホームノードへ転送するように構成され、
前記ホームノードが、
前記第2の要求ノードに対する前記1つ以上のアクセス許可が、前記第2の要求ノードが前記スヌープされたデータの読み取り許可を有していないことを示すとき、前記スヌープされたデータをドロップし、
前記スヌープされたデータが修正され、前記第2の要求ノードに対する前記1つ以上のアクセス許可が、前記第2の要求ノードが前記修正されたデータの書き込み許可を有していないことを示すとき、前記スヌープされたデータをドロップする、
ように更に構成されている、請求項
12に記載の装置。
【請求項15】
前記ホームノードが、前記スヌープされたデータがドロップされたとき、前記共有メモリからクリーンデータを取得し、前記第1の要求ノードに前記クリーンデータを転送するように更に構成されている、請求項
14に記載の装置。
【請求項16】
前記第1の要求ノードからの前記メッセージが、前記共有メモリ内の第1のメモリアドレスに関連付けられたデータに対する読み取り要求を含み、前記1つ以上のアクセス許可が、前記第1の要求ノードが前記第1のメモリアドレスの読み取り許可を有していないことを示すときに、前記ホームノードが、前記第1の要求ノードにダミーデータを送信するように更に構成されている、請求項
12に記載の装置。
【請求項17】
前記第1の要求ノードからの前記メッセージが
、第1のデータに対する書き込み要求を含み、前記1つ以上のアクセス許可が、前記第1の要求ノード
が第1のメモリアドレスに対する書き込み許可を有していないことを示
すとき、前記ホームノードが、前記第1の要求ノードで
前記第1のメモリアドレスに関連付けられた前記第1のデータを無効化するように更に構成されている、請求項
12に記載の装置。
【請求項18】
前記1つ以上のアクセス許可が、前記第1の要求ノードが前記第1のメモリアドレスの書き込み許可を有していないことを示すとき、前記ホームノードが、前記書き込み要求をドロップするように更に構成されている、請求項
17に記載の装置。
【請求項19】
請求項
12に記載の装置を説明するハードウェア記述言語の命令を含む非一時的コンピュータ可読媒体。
【請求項20】
請求項
12に記載の装置のネットリスト記述を含む非一時的コンピュータ可読媒体。
【請求項21】
請求項
12に記載の装置を備える集積回路。
【発明の詳細な説明】
【発明の概要】
【発明が解決しようとする課題】
【0001】
本開示は、概してコンピュータメモリに関し、より具体的には、共有メモリにアクセスするためのスキームに関する。
【0002】
多くの命令実行システムにおいて、共有メモリコンテンツは、共有メモリへのデータの読み取り又は書き込み要求により、不正アクセスによる危険にさらされ得る。これらの不正アクセスは、メモリコンテンツを望ましくない形で破損させる恐れがある。
【図面の簡単な説明】
【0003】
添付図面は視覚的表示を提供し、様々な代表的な実施形態をより完全に説明するために使用され、当業者が、開示される代表的な実施形態及びそれらの固有の利点をより良く理解するために使用され得る。これらの図面では、同様の参照番号は対応する要素を特定する。
【0004】
【
図1】
図1は、例示的な1×3メッシュCMN(コヒーレントメッシュネットワーク)システムを示す図である。
【0005】
【
図2】
図2は、本開示の様々な実施形態に係る、メモリ保護ユニット(MPU)を有するデータ処理システムのブロック図である。
【0006】
【
図3】
図3は、本開示の様々な実施形態に係る、メモリ保護ユニット(MPU)アドレス領域及び許可の例を示す図である。
【0007】
【
図4】
図4は、本開示の様々な実施形態に係る、許可されたアクセスを有する読み取り及び書き込みトランザクションの信号フロー図である。
【0008】
【
図5】
図5は、本開示の様々な実施形態に係る、許可されたアクセスなしの読み取り及び書き込みトランザクションの信号フロー図である。
【0009】
【
図6】
図6は、本開示の様々な実施形態に係る、スヌープトランザクションの信号フロー図である。
【0010】
【
図7】
図7は、本開示の様々な実施形態に係る、更なるスヌープトランザクションの信号フロー図である。
【0011】
【
図8】
図8は、本開示の様々な実施形態に係る、更なるアクセストランザクションの信号フロー図である。
【
図9】
図9は、本開示の様々な実施形態に係る、更なるアクセストランザクションの信号フロー図である。
【
図10】
図10は、本開示の様々な実施形態に係る、更なるアクセストランザクションの信号フロー図である。
【0012】
【
図11A】
図11Aは、本開示の様々な実施形態による、アクセス許可に応じた要求フィルタリングを示すフローチャートである。
【
図11B】
図11Bは、本開示の様々な実施形態による、アクセス許可に応じた要求フィルタリングを示すフローチャートである。
【0013】
【
図12】
図12は、本開示の様々な実施形態に係る、要求をフィルタリングするための装置を示す図である。
【0014】
【
図13A】
図13Aは、本開示の様々な実施形態に係る、メモリ保護ユニットによるトランザクション識別子の色付けを示す図である。
【
図13B】
図13Bは、本開示の様々な実施形態に係る、メモリ保護ユニットによるトランザクション識別子の色付けを示す図である。
【
図13C】
図13Cは、本開示の様々な実施形態に係る、メモリ保護ユニットによるトランザクション識別子の色付けを示す図である。
【
図13D】
図13Dは、本開示の様々な実施形態に係る、メモリ保護ユニットによるトランザクション識別子の色付けを示す図である。
【発明を実施するための形態】
【0015】
本開示は、多くの異なる形態の実施形態を受け入れることができるが、本開示は、説明される原理の一例としてみなされるべきであり、開示を図示及び記載された特定の実施形態に限定することを意図するものではないという理解の元に、図示され、詳細な具体的な実施形態で記載される。以下の説明では、同様の参照番号は、図面中のいくつかの図において、同じ、類似の、又は対応する部分を説明するために使用される。
【0016】
本文書では、第1及び第2や頂部及び底部などの関係を示す用語は、そのような実体又はアクション間の実際のそのような関係又は順序を必ずしも要求したり示唆したりすることなく、ある実体又は動作を別の実体又はアクションと区別するためにのみ使用され得る。用語「comprise(備える)」、「comprises」、「comprising」、又はそれらの任意の他の変形は、非排他的な包含を網羅することを意図しており、そのため、要素のリストを含むプロセス、方法、物品、又は装置はそれらの要素のみを含むのみならず、明示的に列挙されていない、又はそのようなプロセス、方法、物品、若しくは装置に固有の他の要素を含んでもよい。「comprise(備える)...a」によって先行される要素は、更なる制約なしには、その要素を備えるプロセス、方法、物品、又は装置における追加の同一要素の存在を排除するものではない。
【0017】
本明細書全体を通して使用される「一実施形態」、「特定の実施形態」、「実施形態」、又は類似の表現は、実施形態に関連して説明される特定の特徴、構造、又は特性が、開示される主題の少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書全体を通して様々な場所におけるこのような語句の出現は、必ずしも同じ実施形態を指すものではない。更に、特定の特徴、構造、又は特性は、限定することなく、1つ以上の実施形態において任意の好適な方法で組み合わされてもよい。
【0018】
本明細書で使用されるとき、用語「or」は、包括的に、又は任意の1つ若しくは任意の組み合わせを意味するものとして解釈されるべきである。したがって、「A、B、又はC」は、以下のいずれかを意味する。
A;B;C;A及びB;A及びC;B及びC;A、B、及びC。この定義の例外は、要素、機能、工程、又は作用の組み合わせが、何らかの点で本質的に相互排他的である場合にのみ生じる。
【0019】
例示の簡略化及び明確化のため、対応する要素又は類似の要素を示すために、図面の中で参照番号を繰り返してもよい。本明細書に記載される実施形態の理解を提供するために、多数の詳細を記載する。実施形態は、これらの詳細を伴わずに実施されてもよい。他の例では、記載される実施形態を不明瞭にすることを避けるために、周知の方法、手順、及び構成要素については詳細に説明していない。説明は、本明細書に記載される実施形態の範囲を限定するものとみなされるべきではない。
【0020】
本明細書に記載される実施形態は、どのようにして、メモリ領域毎のマスター毎に読み取り/書き込み許可を使用することによって、データ処理ネットワーク内の不正アクセサリから共有メモリコンテンツを保護することができるかを示す。
【0021】
本開示によれば、不正アクセスを防止しながら共有メモリにアクセスするための改善手段が提供される。
【0022】
図1は、例示的なデータ処理ネットワーク100の概略図である。この単純な実施例では、ネットワークは、1×3メッシュCMN(コヒーレントメッシュネットワーク)として構成される。クロスポイント(M×P)は、データ処理ネットワーク内の交点を提供し、標的ノード識別子に基づいて、メッセージのプロトコルパケットを正しいノードにルーティングする役割を担う。CMNの一例は、ネットワーキングインフラストラクチャ、ストレージ、サーバ、HPC、自動車、及び産業用ソリューションを含む広範なアプリケーションにわたるインテリジェント接続システム用に設計されたArm(登録商標)CoreLink(商標)CMN-600コヒーレントメッシュネットワークである。高度に拡張性のあるメッシュは、Arm(登録商標)v8-Aプロセッサ用に最適化され、広範囲の性能点にわたってカスタマイズすることができる。データ処理ネットワークは、例えば、アーム(登録商標)AMBA(登録商標)5CHIプロトコル(ARM(登録商標)及びAMBA(登録商標)は、Arm Limitedの登録商標である)に基づくARM(登録商標)CMN製品系列などの、コヒーレントなインターコネクトを含んでもよい。インターコネクトの仕様は、以下に記載されるように、インターコネクト内のデバイスを識別する。
【0023】
ネットワークは、要求マスターとして動作し、データトランザクションを開始する1つ以上の要求ノードを含んでもよい。例示的な要求ノードを以下に挙げる。
・RN-F:中央処理ユニット(CPU)、コヒーレントグラフィック処理ユニット(GPU)、又は要求マスターとして動作する他のアクセラレータなどの完全コヒーレント要求ノード
・RN-I:入力/出力(I/O)トラフィックを、例えば、コヒーレントハブインターフェース(CHI)又は他のネットワークインターコネクトにトンネリングするI/Oコヒーレント要求ノード
・RN-D:DVMトラフィックをサポートする分散仮想メモリ(DVM)要求ノード
【0024】
ネットワークは、要求ノードからアクセス要求を受信する1つ以上のホームノードを更に含んでもよい。各ホームノードは、所与のメモリアドレスセットに関するコヒーレンス及びシリアル化の点として機能し、データトランザクションを監視し、データラインが1つ以上のノードに記憶又は所有される記録を保持するためのスヌープフィルタを含んでもよい。メモリアクセスがホームノードで受信されると、スヌープ要求が、ローカルキャッシュ内にアクセスされたデータのコピーを有するノードに送信され得る。例示的なホームノードとしては、正常なメモリ要求をサービスする完全コヒーレントホームノード(HN-F)及びI/O要求をサービスする役割を担うI/Oコヒーレントホームノード(HN-I)を含む。このようなノードは、効率的なコヒーレンシー分解能のためのキャッシュメモリ及びスヌープフィルタを含んでもよく、したがって、必要に応じてスヌープを送信する。キャッシュメモリは、プロセッサが通常のRAMにアクセスできるよりも迅速にアクセスできるように、典型的には高速ランダムアクセスメモリ(RAM)である。
【0025】
加えて、データ処理ネットワークは、要求をホームノード内でローカルにサービスすることができない場合には、ホームノードからの要求にサービスする1つ以上のスレーブノードを含む。スレーブノードの例は、メモリコントローラ又は要求ノードである。さもなければ、要求は、要求を受信するホームノードによってサービスされる。
【0026】
図1に示すように、RNF(完全コヒーレント要求ノード)102は、MXP(メッシュクロスポイント)104に動作可能に結合される。MXP104は、MXP108及びMXP114に動作可能に結合される。MXP108は、RNI(I/Oコヒーレント要求ノード)106及びHNF(完全コヒーレントホームノード)110に動作可能に結合される。MXP114は、SNF(完全コヒーレントスレーブノード)112及びHND(ホームノード)118に動作可能に結合される。要求ノード102、106は、ホームノード(HN-F/HN-I)118、110に要求を送信することによってデータにアクセスする。スレーブノード112は、例えば、動的メモリコントローラ(DMC)であってもよい。
【0027】
読み取りアクセスの場合、ホームノード118は、キャッシュメモリ及びスレーブノード112内の入力アドレスを検索する。アドレスがキャッシュメモリ内で利用可能である場合、データを提供することによって要求がサービスされる。データがキャッシュ内で利用可能ではないが、スレーブノード112でヒットした場合、ホームノード110は、キャッシュラインを含むRN-F102にスヌープ要求を送信し、要求をサービスする。スヌープされたRN-F102は、(ホームノードが要求にサービスすることができるように)データをホームノード110に返送することができる、又は、スヌープ要求のタイプに応じて、DCT(直接キャッシュ転送)と呼ばれるプロセスにおいてデータを要求ノード106に直接送信することができる。
【0028】
RN-F102からの書き込みアクセスの場合、ホームノード118は、要求が部分書き込みに関するものか、又はフルキャッシュライン書き込みに関するものかをチェックする。要求のサイズに応じて、ホームノード118は、要求データをメモリデータ又はスヌープされたデータとマージすることができる。マージされたデータは、要求属性に基づき、メモリ(スレーブノード)に書き戻されるか、又はキャッシュがホームノード内に存在する場合にはキャッシュに充填されてもよい。
【0029】
要求が、例えば、キャッシュアクセスエラー又はスヌープエラーなどの、ホームノード内の任意のエラーを招いた場合、ホームノードは、エラー状態に応答することによって要求を完了し、マスターノードがアクセス状態を把握するように割り込みを任意で生成してもよい。
【0030】
AMBA(登録商標)5CHIプロトコルなどのコヒーレントネットワークプロトコルは、様々なアクション要求を指定することができる。
1.データありの読み取り要求-応答はデータを含む。
2.データなしの読み取り要求-応答はデータを含まない。
3.書き込み要求-要求元からキャッシュ又はメモリへのクリーンデータ/修正されたデータの書き込み
4.キャッシュメンテナンス動作(CMO)-DRAM、I/Oマスター又は下流キャッシュ、及びホームノードを超える他のメモリなどのメモリへのキャッシュラインのフラッシング
5.アトミック要求-メモリ内のサブキャッシュラインアトミック動作を実行する。
6.退避要求-今後のアクセスのために、キャッシュラインがRN-Fキャッシュ内に退避される動作
【0031】
コヒーレントネットワークでは、共有データがコヒーレントに維持されることを確保するために様々なアクションが実行される。例えば、アクションは、ノードがデータの最新ではないコピーを有さないように確保することができる。しかしながら、無許可マスターによる読み取り/書き込みアクセスは、メモリコンテンツを破損させる可能性があり、単純な許可ベースのフィルタリングは、無許可マスターが多くの様々な方法で破損データを露出させ得るコヒーレントシステムには対処していない。したがって、保護メモリシステムでは、共有メモリに修正されたデータを書き込むなどのいくつかの所望のアクションが、特定のノードによって許可されない場合がある。このことはコヒーレンス維持に影響を及ぼす。
【0032】
本開示は、コヒーレントデータ処理ネットワーク内のメモリを保護することに関する。
【0033】
一実施形態では、データ処理ネットワークの第1の要求ノードからの要求メッセージは、データ処理ネットワークのホームノードで受信される。要求メッセージは、データ処理ネットワークの共有メモリ内の第1のアドレスに関連付けられたデータに対するアクション要求と、第1のメモリアドレスに対する第1の要求ノードに対する1つ以上のアクセス許可と、を含む。要求アクションは、例えば、第1のメモリ要求に関連付けられたデータのコヒーレンス状態を読み取り、書き込み、又は変更するためのものであってもよい。ホームノードは、要求されたアクションが第1の要求ノードによって許可されるかどうかを、1つ以上のアクセス許可から判定する。要求されたアクションが第1の要求ノードによって許可されると、第1のメモリアドレスに関連付けられたデータは、コヒーレンシープロトコルに従って、システムキャッシュ、データ処理ネットワークの第2の要求ノードのローカルキャッシュ、又は共有メモリからアクセスされる。しかしながら、要求されたアクションが第1の要求ノードによって許可されないとき、第1のメモリアドレスに関連付けられたデータにアクセスすることなく、応答メッセージが第1の要求ノードに送信される。
【0034】
アクセス許可は、データ処理ネットワークのクロスポイントに位置するメモリ保護ユニット(MPU)を使用することによって提供され得る。MPUは、クロスポイントにおいてネットワークに結合された要求に対するアクセス許可を定義するように構成可能なレジスタを有する。
【0035】
図2は、メモリ保護ユニット(MPU)を組み込んだデータ処理ネットワークの一例を備えたシステム200を示す。
図2は、マスターノードRN-F202、RN-I216、メッシュクロスポイント(MXP)206、212、220、ホームノードHN-I210、HN-F208、スレーブノードSN-F218、及びMPU204、214を示す。
図2のシステム200は、例えば、コヒーレントメッシュネットワークであってもよい。
【0036】
システム200内の要求ノードマスター(RN-F202及びRN-I216)のそれぞれは、メモリ保護ユニット(それぞれ、MPU204及び214)を介してネットワークインターコネクトに結合される。MPU(204、214)は、
図3に示すように、アドレス領域及び対応する読み取り/書き込み許可でプログラムされる構成可能なレジスタを含む。
【0037】
上述のように、メモリ保護ユニット(MPU)204、214は、コンピュータハードウェアユニットであってもよい。MPUは、中央処理装置(CPU)の一部として、インターコネクトファブリックの一部として、又は別個のハードウェアモジュール若しくはブロックとして実装されてもよい。いくつかの実施形態では、MPUは、メモリ保護サポートのみを提供するメモリ管理ユニット(MMU)の縮小版であり、仮想メモリ管理などの他のメモリ管理機能ではなくメモリ保護のみを必要とする低電力プロセッサに実装され得る。
【0038】
第1の要求ノード202は、データ処理システム200の第1のメモリ保護ユニット204を介してホームノード208に結合される。第1のメモリ保護ユニット204は、第1の要求ノード202からアクション要求を受信し、第1のメモリアドレスに応じて第1の要求ノードに割り当てられた1つ以上のアクセス許可を判定し、ホームノード208に送信する前に、アクション要求を第1の要求ノードに対する1つ以上のアクセス許可で拡張する。
【0039】
本開示による一実施形態では、アクセス許可が、既存のアーキテクチャインタフェースで使用されていない要求のビットに記憶されることによって、既存のメッセージングプロトコルにメモリ保護を追加することが可能となる。別の実施形態では、要求内の既存のフィールド(例えば、トランザクション識別子フィールド)が、アクセス許可を記憶するために拡張される。更に別の実施形態では、アクセス許可を記憶するための要求に追加のフィールドが追加される。
【0040】
図3は、メモリ保護ユニット(MPU)アドレス領域及び許可の例300を示す。MPU領域0,320(a)~MPU領域N,320(n)(式中、「n」は任意の好適な数である)はそれぞれ、読み取り領域322、書き込み領域324、開始アドレス326、及び終了アドレス328を有する。MPU領域の数は設計上の選択であり、任意の好適な数を使用することができる。MPU領域0,320(a)は、関連する読み取り部分322(a)、書き込み部分324(a)、開始アドレス326(a)、及び終了アドレス328(a)を有する。同様に、MPU領域N320(n)は、関連する読み取り部分322(n)、書き込み部分324(n)、開始アドレス326(n)、及びエンドアドレス328(n)を有する。
【0041】
要求ノード(例えば、
図2に示す202)がクロスポイント(例えば、
図2に示す204)に要求を送信すると、要求からのアドレスが、開始アドレス326及び終了アドレス328によって表される領域と照らしてMPU内で探索される。一致が発見されると、領域320の対応する読み取り及び書き込み許可属性が、要求と共にホームノードへ送信される。
【0042】
MPUはまた、領域一致が発見されない場合に、デフォルトの読み取り/書き込み許可を含んでもよい。次いで、HNはR/W許可を使用して、メモリコンテンツへのアクセスを可能にする。
【0043】
これらの許可定義は、以下を含む。
R:要求は読み取り許可を有する
W:要求は書き込み許可を有する
~R:要求は読み取り許可を有していない
~W:要求は書き込み許可を有していない
【0044】
要求ノードからホームノードへの読み取り要求は、MPUによって傍受される。読み取られるメモリアドレスは、MPU内のテーブル内で検索されて、メモリアドレスの要求ノードに対するアクセス許可を判定する。次に、MPUは、読み取り要求をアクセス許可(AP)で拡張し、拡張された要求をホームノードに転送する。したがって、フローは以下のとおりである。
要求ノード→RN_Req→MPU領域検索→RN_Req+AP→ホームノード
【0045】
ホームノードがRN-Fに送信するスヌープ要求の場合、スヌープ要求からのスヌープアドレスがMPU内で検索される。スヌープ応答は、アクセス許可で拡張され、拡張されたスヌープ応答は、ホームノードに返送される。次いで、ホームノードは、スヌープ応答に関するアクセス許可を利用して判定を行うことができる。フローは以下のとおりである。
ホームノード→HNF_Snp_要求→MPU検索→スヌープ応答+AP→ホームノード
【0046】
ホームノードは、R/Wアクセス許可に基づいて、スヌープ応答をフィルタリングする。
【0047】
図4は、許可されたアクセスを有する読み取り/書き込み要求タイプの例400を示す。第1の要求ノードCPU402は、ホームノード404及びスレーブノード406と通信する。図示される例では、スレーブノード406は、動的メモリコントローラ(DMC)である。
【0048】
読み取り要求408が、CPU402からホームノード404へ送信され、そこで許可のフィルタリング、キャッシュ又はメモリアクセス411が実行される。この例では、CPUは、アドレスに対する読み取り及び書き込み(R/W)アクセス許可を有し、読み取り要求408がこれらの許可で拡張される。読み取り要求410が許可され、DMC406に送信される。メッセージ410に応答して、データ412がDMC406からCPU402に送信される。
【0049】
確認応答414が、CPU402からホームノード404に送信される。
【0050】
書き込み要求416が、CPU402からホームノード404に送信される。それに応答して、ホームノード404は、許可フィルタリング、キャッシュ割り当て、又はメモリ書き込み417を実行する。メモリ書き込みの前に、「バッファ準備」メッセージ418が、ホームノード404からCPU402に送信され、ホームノードがデータを受信する準備ができており、データをバッファリングするために利用可能なストレージを有することを示す。データ420が、CPU402からホームノード404に送信され、書き込み要求422が、ホームノード404からDMC406に送信される。「バッファ準備」メッセージ426が、DMC406からホームノード404に送信される。最終的に、これがキャッシュライン被害である場合、ホームノード404によってメモリ書き込みが実行される(427)。データ428が、ホームノード404からDMC406に送信される。
【0051】
したがって、いくつかの実施形態では、ホームノードは、拡張されたアクセス許可に従ってアクション要求に応答する。換言すれば、ホームノードは、拡張されたアクセス許可に応じてアクション要求を「フィルタリング」する。例えば、アクション要求が読み取り要求を含み、1つ以上のアクセス許可が読み取り許可を含まないとき、ホームノードは、要求にサービスせずに、ダミーデータを第1の要求ノードに返送する。
【0052】
アクション要求が修正されたデータの書き込み要求を含み、1つ以上のアクセス許可が書き込み許可を含まないとき、ホームノードは、修正されたデータを破棄し、任意で第1の要求ノードで修正されたデータを無効化する。
【0053】
図5は、本開示の様々な実施形態に係る、アクセス許可に基づく要求フィルタリングの例500を示す。CPU、ホームノード、及びDMC間の情報の流れを示す一連のアクションは、矢印によって示される。
図5は、CPUタイムライン502、ホームノードタイムライン504、及びDMCタイムライン506を示し、時間は頂部から底部へと増加する。情報の流れは、データ処理ネットワークのハードウェア、プロセッサ上で実行されるソフトウェア、又はそれらの組み合わせによって生成されてもよい。
【0054】
図5に示すような要求元保護機構は、CPU502に送信されることから良好なデータを保護する。第1のトランザクションは、CPUからの読み取り要求510である。読み取り要求512が、CPUからホームノードに送信される。読み取り要求512が、アクセス許可(~R/~W)で拡張される。ホームノードの許可フィルタは、読み取りが許可されていないアクセス許可から判定するため、520でキャッシュ又はメモリアクセスは実行されない。その代わりに、ダミーデータ514が、ホームノードからCPUに送信され、確認応答518が、CPUからホームノードに返送される。
【0055】
第2のトランザクションは、書き込み要求530である。アクセス許可(~R/~W)で拡張された書き込み要求メッセージ532が、CPUからホームノードに送信される。それに応じて、ホームノード504は、CPUが書き込み許可を有していないとのアクセス許可から判定し、540で要求はドロップされる。要求がドロップされる前に、「バッファ準備」メッセージ534が、ホームノードからCPUに送信され、データ536が、CPUからホームノードに送信される。しかしながら、要求元は、書き込み許可を有していないため、データ536はドロップされる。データ536は、メモリに書き込まれない。あるいは、ホームノードは、「バッファ準備」メッセージ534内でエラーメッセージをCPUに送信してもよい。
【0056】
図5の装置及びシステム動作は、要求元保護機構がアクセス許可に基づいて要求フィルタリングを提供することを示す。これらの許可には、読み取り許可、書き込み許可、及びスヌープ許可が挙げられる。
【0057】
読み取り許可:RNが読み取り要求に関する読み取り許可を有さない場合、ホームノード(HN)は、内部キャッシュを検索しない、又はキャッシュラインを有し得るRN-Fをスヌープしない。HNは、読み取り要求がMPU違反に遭遇したことを示す、ゼロデータ及びエラーステータスで要求に応答する。
【0058】
書き込み許可:RNが書き込み許可を有していない場合、HNは、要求を処理するが、RNからのダーティデータはメモリに更新されない。HNは、必要に応じて、完了応答に関する許可エラーを示すことができる。
【0059】
スヌープ許可:RN-Fがコヒーレンシーのためにスヌープされなければならない場合、スヌープ応答に関する許可がチェックされる。スヌープされたRN-Fがデータを返送する場合、フィルタリングされる。ダーティデータを有するスヌープ応答は、RN-Fが書き込み許可を有する場合にのみ許可されることが
図6に示される。
【0060】
アクション要求がデータの読み取り要求を含み、要求されたデータのコピーが第2の要求ノードのローカルキャッシュ内に記憶されているとき、ホームノードは、スヌープメッセージを第2の要求ノードに送信し、データ応答を受信することによって、第2の要求ノードからデータを取得してもよい。データ応答は、第2の要求ノードのアクセス許可で拡張される。取得されたデータが修正状態にあるとき、ホームノードは、後述の
図6及び
図7に示すようにアクセス許可に応じて進む。
【0061】
第2の要求ノードが修正されたデータに対する書き込み許可を有し、第1の要求ノードが修正データの書き込み許可を有していないとき、ホームノードは、第1のメモリアドレスで修正されたデータを共有メモリに書き込み、修正されたデータをクリーンデータに変更して、第1の要求ノードにクリーンデータを送信する。
【0062】
第2の要求ノードが修正されたデータに対する書き込み許可を有し、第1の要求ノードが修正データに対する書き込み許可を有するとき、ホームノードは、修正されたデータを第1の要求ノードに送信する。
【0063】
第2の要求ノードが修正されたデータの書き込み許可を有していないとき、ホームノードは、第1のメモリアドレスで共有メモリからクリーンデータを取得し、第1の要求ノードにクリーンデータを送信し、第2の要求ノードにおいて第1のメモリアドレスに関連付けられたデータを無効化する。
【0064】
図6は、アクセス許可に基づく、スヌープ中央処理装置(CPU)フィルタリングの信号フローチャート600である。RN-Fが書き込み許可を有する場合のみ、ダーティデータを伴うスヌープ応答が認められる。同様に、RN-Fが読み取り許可を有する場合、クリーンデータのみが認められる。MPU違反がある場合、データはドロップされる。ホームノードは、DMCからデータをフェッチし、要求をサービスする。
図6に示すように、読み取り要求トランザクション610に関する信号フローチャート600は、第1の要求ノードCPU0から開始される。
図6は、CPU0タイムライン602(a)、ホームノードタイムライン604、第2の要求ノード(CPU1)タイムライン602(b)、及びDMCタイムライン606を更に示す。読み取り及び書き込み許可(R/W)612を有する読み取り要求が、第1の要求ノード(CPU0)からホームノードに送信される。CPU0が読み取り許可を有するため、ホームノードの許可フィルタは、キャッシュ及び/又はメモリアクセス613を許可する。スヌープ要求614が、ホームノードから、要求されたデータのコピーを有すると判定された第2の要求ノード(CPU1)に送信される。CPU1は、修正された又は「ダーティ」スヌープデータ616をホームノードに戻すことによって応答する。スヌープデータは、CPU1の(R/~W)アクセス許可で拡張される。CPU1は、書き込み許可を有さないため、618でスヌープデータはホームノードによってドロップされ、読み取り要求620が、ホームノードからDMCに送信されて、クリーンデータを取得する。次いで、クリーンデータ622が、DMCからCPU0に送信され、確認応答624が、CPU0からホームノードに送信される。
【0065】
図7は、第1の要求ノード(CPU0)が読み取り許可を有するが、書き込み許可を有しない(R/~W)別の実施形態700を示す。この方法は、アクセス許可に基づいて「クリーン」データ対「ダーティ」(修正された)データを制御する例であり、CPU0タイムライン702(a)、ホームノードタイムライン704、第2の要求ノード(CPU1)タイムライン702(b)、及びDMCタイムライン706を示す。このような場合のホームノードは、修正されたデータをDMCに書き込み、第1の要求ノードにクリーンデータを提供する。DMC書き込みなしで修正されたデータが提供された場合、(書き込み許可フィルタリングに起因して)CPUからの後続のエビクションがドロップされることによって、修正されたデータを失う。
【0066】
図7は、第1の要求ノードCPU0によって開始された読み取り要求トランザクション710を更に示す。読み取り許可を有するが書き込み許可を有していない(R/~W)読み取り要求712が、ホームノードに送信される。CPU0は読み取り許可を有するため、ホームノードの許可フィルタはキャッシュ及び/又はメモリアクセスを許可する(713)。スヌープ要求714が、ホームノードから第2の要求ノード(CPU1)に送信される。CPU1は、(R/W)許可で拡張された、修正されたダーティデータ716をホームノード704に送信する。書き込みが許可されているため、ホームノードは、(R/W許可を有する)書き込み要求734をDMCに送信して、修正されたデータのメモリ735への書き込みを開始する。「バッファ準備」信号736が、DMCからホームノードに送信され、次いで、データ738がホームノードからDMCに送信されて、メモリへの書き込みを完了し、データのコヒーレンス状態を修正された(ダーティ)からクリーンへ変更する。クリーンデータ730が、ホームノードからCPU0に送信され、確認応答732がCPU0からホームノードに送信される。
【0067】
前記アクション要求が、前記第1の要求ノードが書き込み許可を有していない前記第1のアドレスにおけるデータを無効化する要求を含み、データのコピーが第2の要求ノードに記憶されているとき、ホームノードは、第2の要求ノードから第1のメモリアドレスに関連付けられたデータを取得する。取得されたデータが修正されたコヒーレンス状態にあるとき、ホームノードは、第1のメモリアドレスにおける共有メモリに取得されたデータを書き込むことにより、第1のメモリアドレスに関連付けられたデータのコヒーレンス状態を「修正」から「クリーン」に変更し、第2の要求ノードで第1のメモリアドレスに関連付けられたデータを無効化する。
【0068】
図8は、要求許可フィルタリングを無効化するための方法の信号フローチャート800である。
図8は、CPU0タイムライン802(a)、ホームノードタイムライン804、第2の要求ノード(CPU1)タイムライン802(b)、及びDMCタイムライン806を示す。無効化トランザクション810は、CPU0から開始される。他のノードに記憶されたデータを無効化する要求は、データを一意にする要求として指定されてもよい。アクセス許可(R/~W)で拡張された「一意」要求812が、ホームノードに送信される。ホームノードでの許可フィルタは、814で要求を「クリーン-一意」に変換する。「スヌープ-クリーン-無効」要求816が、ホームノードからCPU1に送信される。CPU1は、(R/W)許可で拡張された修正データ818をホームノードに送信して、スヌープデータを提供する(818)。無効化の完了が、メッセージ820内でホームノードからCPU0に送信され、確認応答822が、CPU0からホームノードに送信される。
【0069】
修正されたデータが失われることを防止するために、ホームノードは、(R/W)許可を有する書き込み要求824をDMCに送信する。「バッファ準備」信号826が、DMCからホームノードに送信され、次いで、データ830が、ホームノードからDMCに送信される。したがって、832でデータがメモリに書き込まれる。
【0070】
無効化要求許可、つまりRN(要求ノード)が、全ての下流又はピアキャッシュからのメモリコンテンツを無効化しつつ、データ又はデータなしの完了を受信することができる、無効化タイプであり、読み取り専用許可のみを有する要求(例えば、ReadOnceMakeInvalid、MakeUniqueなど)の場合、
図8に示すように、ホームノードは、そのような要求を非侵襲型要求に変換する。例えば、MakeUnique要求812が、CleanUnique要求814に変換され、ReadOnceMakeInvalid(ラベルなし)が、ReadOnceCleanInvalid(ラベルなし)に変換される。このような変換は、システム内の既存のダーティデータ又は修正されたデータがメモリに書き込まれ、完了が任意のメモリコンテンツを破損しないことを確保する。
【0071】
CMOに関しては、要求ノードが読み取り専用許可を有する場合、ホームノードは、非侵襲型要求への同様の変換を行う。例えば、MakeInvalidは、CleanInvalidに変換される。要求ノードが読み取り許可も書き込み許可も有していない場合、トランザクションは、メモリを更新することなく完了する。
【0072】
別のシーケンスは、MakeUnique及びCleanUniqueなどの特定の要求タイプがデータなしの完了を有する無データ要求許可である。CPUが許可エラー通知(バスエラー)を要求しない場合、「クリーン」ステータスに誤って遷移する可能性がある。したがって、クリーンデータは、コヒーレントメモリ内に記憶するのに好適なデータである。このデータは、有効である、又は明確である、又は許容可能であるために、ダーティデータとは異なる。このキャッシュラインへの後続のスヌープは、不良データを他のCPU及びメモリ位置に露出させる恐れがある。これを回避するために、ホームノードは、スヌープ要求(SnpMakeInvalid)での無データ要求完了に従い、RNキャッシュ内のキャッシュラインを無効にする。これにより、確実にCPUは、一意状態でキャッシュラインを有さない。
【0073】
図9は、様々な実施形態に係る、書き込み要求の許可フィルタリングの方法の信号フロー
図900である。これに関連して、第1の要求ノード(CPU0)のタイムライン902、ホームノード(HN-F)のタイムライン904、第2の要求ノードのタイムライン906(CPU1)が示されている。アクセス要求908は、データのステータスをダーティからクリーンに変更するために、メモリに修正(ダーティ)データを書き込む「WriteClean」要求である。しかしながら、要求に対して拡張されたアクセス許可は、CPU0がデータアドレスの書き込み許可を有していないことを示す。要求を受信すると、ホームノードHN-Fは、CPU0が書き込み許可を有していないと判定する。ホームノードは、CPU1をスヌープせず、データをメモリに書き込まない。ホームノードは、完了メッセージ910をCPU0に返送し、これは、ホームノードがデータを受信する準備ができていることを示す。CPU0は、メッセージ912内でデータをホームノードに送信する。したがって、期間914では、CPU0は、修正された(ダーティ)「不良」データを有するが、メモリに書き込むことができない。いったんデータがメッセージ912内でホームノードに書き込まれると、CPU0は、データのステータスを「クリーン」に変更する。しかしながら、データは、依然として「不良」である。その後、ホームノードは、CPU0に無効化メッセージ916を送信して、CPU0に記憶されたデータを無効化する。CPU0は、メッセージ918内でこのことを確認応答する。したがって、期間920では、CPU0は、データのステータスを「クリーン」として示すが、期間922では、データは無効として示される。
【0074】
図10は、本開示の様々な実施形態に係る、読み取り要求のフィルタリングを許可する方法の信号フロー図である。フロー図は、第1の要求ノード(CPU0)のタイムライン1002、ホームノード(HN-F)のタイムライン1004、第2の要求ノード(CPU1)のタイムライン1006、及びメモリコントローラ(DMC)のタイムライン1008を含む。第1の要求ノード(CPU0)からのアクセス要求1010は、第2の要求ノード(CPU1)に記憶されたデータのコピーを取得するための「ReadShared」要求である。CPU0は、メモリアドレスに対する読み取り許可を有しているため、ホームノードは、データのためにスヌープメッセージ1012をCPU1に送信する。期間1014では、CPU1のデータは、修正されているという意味で「不良」であるが、CPU1がデータの書き込み許可を有していないので、メモリに書き戻すことによってクリーンにすることができない。しかしながら、CPU1は、スヌープ応答1016において、修正された(ダーティ)データをホームノードに返送する。スヌープ応答1016内のアクセス許可は、CPU1が書き込み許可を有しておらず、データが「不良」であることをホームノードに示す。ホームノードは、クリーンデータのために、読み取り要求1018をメモリコントローラ(DMC)に送信する。クリーンデータが、メッセージ1020内で第1の要求ノード(CPU0)に送信され、データは、メッセージ1022内でホームノードによって確認応答される。この時点で、CPU0は良好データを有するが、CPU1は依然として不良データを有する。したがって、ホームノードは、CPU1に無効化メッセージ1024を送信し、CPU1は確認応答を行う(1026)。このようにして、CPU1における「不良」データは、CPU0に渡されず、そこからメモリに書き込まれ、メモリは保護される。
【0075】
図11A及び11Bは、本開示の実施形態に係るアクセス許可のフィルタリング方法のフローチャート1100である。この方法は、データ処理ネットワークのハードウェアで実行されてもよい。
【0076】
図11Aを参照すると、ブロック1102で、第1の要求ノード(RN-F又はRN-I)からの新しい要求がアクセスされ、ブロック1104で、MXP内のMPU内のアドレス検索が実行される。ブロック1106で、要求にR/W(読み取り/書き込み)許可が付加される。
【0077】
ブロック1108で、ホームノード(HN-F)が要求を受信し、許可をチェックする。判定ブロック1110で、許可が許容可能かどうかが判定される。許可が許容可能でない場合、判定ブロック1110からの否定分岐1112によって示されるように、ブロック1114でエラー応答が送信され、プロトコルフローが完了する。
【0078】
許可が許容可能とみなされる場合、決定ブロック1110からの肯定分岐1116によって示されるように、ブロック1118でキャッシュ/スヌープフィルタ検索が実行される。次いで、判定ブロック1120で、スヌープが必要かどうかについて判定される。判定ブロック1120からの否定分岐1122によって示されるように、必要でない場合、フローはポイント「A」へ、そこから
図11Bの決定ブロック1124へ続く。
【0079】
次に
図11Bを参照すると、判定ブロック1124からの否定分岐1126によって示されるように、スレーブノードSN-Fへのスヌープが必要でない場合、ブロック1130で、エラーなしでプロトコルフローが完了する。
【0080】
判定ブロック1124からの肯定分岐によって示されるように、SN-Fに進むと判定された場合、ブロック1158で要求がDMCに送信され、ブロック1160でDMCからの応答を受信する。上述したように、ブロック1030で、プロトコルフローはエラーなしで完了する。
【0081】
再び
図11Aを参照すると、判定ブロック1120からの肯定分岐1132によって示されるようにスヌープが必要とされるとき、ブロック1134で、スヌープが、ホームノードから、データのコピーを有するとしてスヌープフィルタ内に示されるノード(「スヌーピー」と称される)に送信される。MXPはスヌープ要求を傍受し、ブロック1136で、スヌーピー許可のためにMPU内でスヌープアドレス検索を実行する。MXPは、スヌープトランザクション識別子をMPU許可で色付けし、ブロック1138でスヌープ要求をスヌーピーに転送する。次いで、スヌーピーは、スヌープ要求を処理し、ブロック1140で色付けされたトランザクション識別子を有するスヌープ応答を送信する。
【0082】
MXPは、スヌープ応答を傍受し、ブロック1142で、色付けされたトランザクション識別子からMPU許可フィールドに投入し、フローはポイント「B」に続く。
【0083】
再び
図11Bを参照すると、ホームノード(HN-F)は、スヌープ応答を受信し、ブロック1144で、スヌーピー許可を確認する。判定ブロック1146で、スヌーピーデータを使用又は消費することができるかどうかが判定される。判定ブロック1146からの肯定分岐1148によって示されるように、使用又は消費できる場合、ブロック1130で、プロトコルフローはエラーなしで完了する。
【0084】
判定ブロック1146からの否定分岐1150によって示されるように、スヌーピーデータが消費され得ない場合、判定ブロック1152で、要求がSN-Fに進むかどうかが判定される。判定ブロック1152からの肯定分岐によって示されるように、SN-Fに進む場合、ブロック1158で要求がDMCに送信され、ブロック1160でDMC応答が受信され、ブロック1130でプロトコルフローがエラーなしで完了する。
【0085】
判定ブロック1152からの否定分岐1154によって示されるように、要求がSN-Fに進まないと判定される場合、ブロック1156でエラー応答が送信され、プロトコルフローが完了する。
【0086】
スヌーピー又は第2の要求ノードで受信されたスヌープ要求は、スヌープされたデータのメモリアドレスを含む。このメモリアドレスは、アクセス許可を決定するためにMPUで使用することができる。スヌープ応答は、一般に、トランザクション識別子を含み得るメモリアドレスを含まない。一実施形態では、スヌープ応答をアクセス許可で拡張するために、スヌープ要求が受信されたとき、アクセス許可がMPU内のトランザクション識別子と関連付けられる。これは、例えば、MPUにテーブルを記憶することによって行われてもよい。次いで、スヌープ応答内の同じトランザクション識別子が使用されて、スヌープ応答がスヌーピーから受信されたときにアクセス許可を識別する。別の実施形態では、アクセス許可は、スヌーピーに送信されたトランザクション識別子メッセージに追加される。したがって、アクセス許可は、スヌーピーへの要求内に記憶され、スヌーピーからの応答で返される。例えば、トランザクション識別子の数は、4分の1に低減されてもよく、アクセス許可は、トランザクション識別子の2つの最上位ビットに記憶される。次に、トランザクション識別子は、アクセス許可によって「色付けされた」と言われる。本実施形態では、メモリ保護ユニットは、第2の要求ノードへのスヌープメッセージを傍受し、スヌープメッセージ内のトランザクション識別子を第2の要求ノードの1つ以上のアクセス許可で色付けして、色付けされたスヌープメッセージを提供し、色付けされたスヌープメッセージを第2の要求ノードに転送する。次いで、メモリ保護ユニットは、第2の要求ノードからのスヌープ応答を傍受して、スヌープ応答内のトランザクション識別子を色抜きし、1つ以上のアクセス許可で拡張された、色抜きされたスヌープ応答をホームノードに転送する。
【0087】
いずれの実施形態においても、ホームノードは、MPUを介してスヌープメッセージを第2の要求ノード又はスヌーピーに送信し、第2の要求ノードは、スヌープされたデータを含むスヌープ応答を送信する。第2のメモリ保護ユニットは、スヌープ応答を第2の要求ノードに対する1つ以上のアクセス許可で拡張する。これは、トランザクション識別子を使用してアクセス許可を検索する、又は、例えば、色付けされたトランザクション識別子からアクセス許可を読み取ることによって行われる。ホームノードは、拡張されたスヌープ応答を受信し、第2の要求ノードに対する1つ以上のアクセス許可が、第2の要求ノードがスヌ-プされたデータの読み取り許可を有していないことを示すときに、スヌープされたデータをドロップする。ホームノードはまた、スヌープされたデータが修正されたときに、スヌープされたデータをドロップし、第2の要求ノードに対する1つ以上のアクセス許可は、第2の要求ノードが修正されたデータの書き込み許可を有していないことを示す。加えて、スヌープされたデータがホームノードでドロップされ、コヒーレンシープロトコルが、第2の要求ノードが第1のデータのコピーを保持することを可能にすると、第2の要求ノードでのスヌープされたデータは無効化され得る。
【0088】
スヌープされたデータがホームノードによってドロップされると、ホームノードは、第1のメモリアドレスで共有メモリからクリーンデータを取得し、それを第1の要求ノードに送信する。
【0089】
図12は、本開示の実施形態に係る、要求をフィルタリングするための装置1200を示す。この装置は、許可アクセス要求に基づいて共有メモリへのアクセスを許可するか、又は許可アクセス要求を拒否するかを判定するために使用される。装置1200は、CPU0 1202(a)、CPU0 1202(n)、モジュール1204(a)、モジュール1204(n)、キャッシュ1206(a)、キャッシュ1206(n)、ノードモジュール1246、及びDMC1236を含む。CPU0 1202(a)は、第1のプロセッサ、又は第1のCPUマスター、又はCPU/IOと見なすことができる。CPU1 1202(n)は、第2のプロセッサ又は第2のCPUマスターと見なすことができる。
【0090】
コヒーレントインターコネクト1246は、クロスポイント(MXP)1212及び1220、並びにホームノードHN-F1216を含む。MXP1212及び1220はそれぞれ、メモリ保護ユニット(MPU)(それぞれ1213及び1221)を含む。
【0091】
CPU0 1202(a)及びCPU1 1202(n)は、それぞれ、リンク1210、1242及び1224、1226を介して、コヒーレントインターコネクト1246と双方向通信する。コヒーレントインターコネクト1246は、リンク1234、1238を介してDMC(メモリコントローラ)1236と双方向通信する。双方向通信は、装置1200の構成要素間でデータを転送(送信及び/又は受信)することを可能にするデータ通信バス、ワイヤ、ワイヤのセット、無線チャネル、又は他の好適な伝送媒体であってもよい。
【0092】
動作中、CPU0 1202(a)のキャッシュ1206(a)は、ライン1242によって示されるように、インターコネクト1246のMXP1212にデータアクセス要求を送信する。クロスポイント1212でのMPUは、要求をアクセス許可で拡張する。
【0093】
クロスポイント1212でのMPUは、ライン1214を介してホームノード(HN-F)1216に要求を送信する。HN-F1216は、リンク1218上のMXP1220を介して、CPU1(1202(n))にスヌープ要求を送信する。1220でのMPUは、スヌープ要求内のトランザクション識別子をアクセス許可で色付けし、ライン1224を介してCPU11202(n)のキャッシュ1206(n)にスヌープ要求を転送する。
【0094】
キャッシュ1206(n)での受信に続いて、データ応答が、キャッシュ1206(n)からライン1226を介してクロスポイント1220でMPUに送信される。データ応答内のトランザクション識別子は、MPUによって色抜きされ、ライン1228を介してHN-F1216に転送される。HN-Fモジュール1216は、ライン1234を介してデータをDMC1236に送信する。
【0095】
HN-Fモジュール1216は、ライン1240を介してデータをMXP1212に送信する。MXP1212は、ライン1210を介してCPU01202(a)のキャッシュ1206(a)にデータを転送する。
【0096】
したがって、様々な実施形態では、複数のクロスポイントスイッチ、ホームノード、及びインターコネクトを備える装置が提供される。クロスポイントスイッチは、第1のメモリ保護ユニットを備え、第1の要求ノードへのインターフェースを提供する一方、インターコネクトは、複数のクロスポイントスイッチ、ホームノード及び共有メモリの間を結合する。ホームノードは、共有メモリへのアクセスのためのコヒーレンシーポイントを提供する。メモリ保護ユニットは、第1の要求ノードからホームノードへ向けられたメッセージを傍受し、傍受されたメッセージを第1の要求ノードの1つ以上のアクセス許可で拡張し、拡張されたメッセージをホームノードに転送する。ホームノードは、1つ以上のアクセス許可に応じて拡張されたメッセージに応答する。
【0097】
メモリ保護ユニットで受信されたメッセージは、共有メモリ内の第1のメモリアドレスに関連付けられ、メモリ保護ユニットは、第1のメモリアドレスに応じて第1のメモリ保護ユニットのアドレステーブル内の1つ以上のアクセス許可を検索するように構成される。
【0098】
ホームノードは、第1の要求ノードからのアクセス要求に応答してスヌープメッセージを送信するように構成されているため、第2の要求ノードにおけるメモリ保護ユニットは、ホームノードからスヌープメッセージを受信する。第2の要求ノードは、スヌープメッセージに応答して、スヌープデータを含むスヌープ応答をホームノードに返送する。第2の要求ノードにおけるメモリ保護ユニットは、スヌープ応答を傍受し、スヌープ応答を第2の要求ノードの1つ以上のアクセス許可で拡張し、拡張されたスヌープ応答をホームノードに転送する。ホームノードは、第2の要求ノードに対する1つ以上のアクセス許可が、第2の要求ノードが、スヌープされたデータの読み取り許可を有していないことを示すとき、スヌープされたデータをドロップし、スヌープされたデータが修正され、第2の要求ノードに対する1つ以上のアクセス許可が、第2の要求ノードが、修正されたデータの読み取り許可を有していないことを示すとき、スヌープされたデータをドロップするように更に構成される。
【0099】
加えて、ホームノードは、スヌープされたデータがドロップされたとき、共有メモリからクリーンデータを取得し、第1の要求ノードにクリーンデータを転送する。
【0100】
第1の要求ノードからのメッセージが、共有メモリ内の第1のメモリアドレスに関連付けられたデータに対する読み取り要求を含み、1つ以上のアクセス許可が、第1の要求ノードが第1のメモリアドレスの読み取り許可を有していないことを示すとき、ホームノードは、ダミーデータを第1の要求ノードに送信する。第1の要求ノードからのメッセージが、第1のデータに対する書き込み要求を含み、1つ以上のアクセス許可が、第1の要求ノードが第1のメモリアドレスに対する書き込み許可を有していないことを示し、書き込み要求が、第1の要求ノードが第1のデータのコピーを保持することを可能にするタイプであるとき、ホームノードは、第1の要求ノードで第1のデータを無効化してもよい。1つ以上のアクセス許可が、第1の要求ノードが第1のメモリアドレスの書き込み許可を有していないことを示すとき、ホームノードが、書き込み要求をドロップしてもよい。
【0101】
スヌープ応答内のアクセス許可は、スヌープ要求で受信されたトランザクション識別子を色付けすることによって取得することができる。
【0102】
図13A~Dは、トランザクション識別子のMPUによる色付けを示す。共通のトランザクション識別子は、
図12に示され、応答を要求に関連付けることを可能にする、要求リンク1242、1214、1218、及び1236並びに応答リンク1234、1238、1240及び1210に沿って送られるメッセージなど、同じトランザクションの一部を成す全てのメッセージに含まれる。一実施形態によれば、トランザクション識別子は、識別子のビットがアクセス許可のために使用され得るように制限されてもよい。
【0103】
図13Aは、トランザクション識別子を保持するためのビット1322(a)...(n)(式中、「n」は任意の好適な数である)を有するレジスタ1320を示す。この例では、レジスタ1320は、制限されたトランザクション識別子に使用されない2つのビット1322(a)及び1322(b)を有する。これらは、例えばゼロで占められてもよい。スヌープ要求1218として
図12に記載されたスヌープ要求に対応するレジスタステータス1320は、HN-F1216からMXP1230に送信される。
【0104】
図13Bは、ビット1322(a)...(n)(式中、「n」は任意の好適な数である)を有するレジスタ1320を示す。レジスタ1320は、R及びWでそれぞれ占められる2つのビット1322(a)及び1322(b)を有する。スヌープ要求1234として
図12に記載されたスヌープ要求に対応するレジスタステータス1320は、MXP1230からCPU11202(n)のキャッシュ1206(n)に送信される。MXP内のMPUは、スヌープ要求内のアドレスを使用して、アクセス許可を取得し、トランザクション識別子フィールド内の2つの未使用ビット1322(a)及び1322(b)にアクセス許可を投入する。トランザクション識別子は、アクセス許可によって「色付けされた」と言われる。
【0105】
図13Cは、ビット1322(a)...(n)(式中、「n」は任意の好適な数である)を有するレジスタ1320を示す。レジスタ1320は、R及びWでそれぞれ占められる2つのビット1322(a)及び1322(b)を有する。このレジスタステータス1320は、
図12のリンク1236を介して、CPU11202(n)からMXP1230に送信されたトランザクション識別子に対応する。CPUは、受信すると(アクセス許可で色付けされた)同じトランザクション識別子を返すため、CPU1の動作に変更は必要とされない。
【0106】
図13Dは、ビット1322(a)...(n)(式中、「n」は任意の好適な数である)を有するレジスタ1320を示す。レジスタ1320は、ゼロで占められた2つのビット1322(a)及び1322(b)を有する。ビット1324(a)及び1324(b)は、それぞれR及びWで占められる。このレジスタ1320は、ホームノードに進むスヌープ応答に対応する。これは、Rビット及びWビットがトランザクション識別子1320内にないことを示す。ビット1324(a)及びビット1324(b)として示されるアクセス許可は、トランザクション識別子から除去され、
図12のリンク1238を介してMXP1230からHN-F1216に送信されたスヌープ応答においてゼロに置き換えられる。ホームノードへのスヌープ応答は、アクセス許可で拡張される。
【0107】
本明細書で使用するとき、用語「プロセッサ」は、コンピュータ、マイクロコントローラ、埋め込みマイクロコントローラ、マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、及び複合プログラマブル論理デバイス(CPLD)などのプログラム可能ハードウェアを包含するか、又は使用することができる。これらのハードウェアの例は更に、所望の機能制御モジュールを達成するために組み合わせて使用されてもよい。コンピュータ、マイクロコントローラ、及びマイクロプロセッサは、アセンブリ、C、C++、C#などの言語を使用してプログラムされてもよい。FPGA、ASIC、及びCPLDは、大抵の場合、プログラム可能なデバイス上でより少ない機能性を有する内部ハードウェアモジュール間の接続を構成するVHSICハードウェア記述言語(VHDL)又はVerilogなどのハードウェア記述言語(HDL)を使用してプログラムされる。
【0108】
本開示は、本明細書に記載される実施形態に係る方法、装置、システム、及びコンピュータプログラム製品のフローチャート図及び/又はブロック図を参照して説明される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図におけるブロックの組み合わせは、ハードウェア、又は実行されたコンピュータプログラム命令、又はそれらの組み合わせで実装され得ることが理解されるであろう。
【0109】
当業者には理解されるように、実施形態は、システム、方法、又はコンピュータプログラム製品として記載され得る。したがって、本開示は、完全ハードウェアの実施形態、完全ソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、又はソフトウェア及びハードウェアの態様を組み合わせた実施形態の形態をとることができ、本明細書では全て一般的に「回路」、「モジュール」、又は「システム」と称され得る。
【0110】
更に、本開示は、装置を説明するハードウェア記述言語(HDL)(VHSICハードウェア記述言語(VHDL)又はVerilogなど)の命令を記憶する、又は請求項の装置のネットリスト記述を記憶する非一時的コンピュータ可読媒体の形態をとることができる。このような記述は、例えば、フィールドプログラマブルゲートアレイ(FPGA)、又は同様の構成可能ハードウェアを構成するために使用されてもよい、又はカスタム集積回路用の設計ツールへの入力として使用されてもよい。
【0111】
本明細書で詳細に説明されている様々な代表的な実施形態は、例として提示されており、限定として提示されていない。当業者であれば、説明される実施形態の形態及び詳細において様々な変更がなされ得、添付の特許請求の範囲内に留まる等価な実施形態をもたらすことが理解されるであろう。