(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-09-07
(54)【発明の名称】メモリロケーションに記憶されたデータが修正されたかどうかを識別するためのメモリロケーションの監視
(51)【国際特許分類】
G06F 12/0813 20160101AFI20230831BHJP
G06F 12/0811 20160101ALI20230831BHJP
G06F 12/0815 20160101ALI20230831BHJP
【FI】
G06F12/0813
G06F12/0811
G06F12/0815
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023505746
(86)(22)【出願日】2021-08-05
(85)【翻訳文提出日】2023-01-26
(86)【国際出願番号】 GB2021052030
(87)【国際公開番号】W WO2022034293
(87)【国際公開日】2022-02-17
(32)【優先日】2020-08-10
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
(71)【出願人】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】ホースネル、マシュー ジェイムズ
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205KK14
5B205MM02
5B205MM03
5B205MM66
5B205PP24
(57)【要約】
装置は、共有メモリの第1のセットのメモリロケーションの指標を記憶するアドレス記憶回路機構と、アドレス記憶回路機構の容量に達したかどうかを示す容量インジケータと、第1のセットのメモリロケーション及び更なる記憶回路機構で識別された、共有メモリの第2のセットのメモリロケーションを監視して、いずれかのセットのメモリロケーションに記憶されたデータが修正されたかどうかを識別する監視回路機構と、を備える。監視回路機構は、データが修正されたという判定に応答して、データが修正されたという指標を生成し、処理回路機構は、その指標を受信し、共有メモリ内の新しいメモリロケーションのアドレスを指定する監視アドレス命令を実行して、容量インジケータに応じて、新しいアドレスを示すようにアドレス記憶回路機構又は更なる記憶回路機構を更新する。
【選択図】
図4
【特許請求の範囲】
【請求項1】
装置であって、
共有メモリの第1のセットのメモリロケーションの指標を記憶するためのアドレス記憶回路機構と、
前記アドレス記憶回路機構の容量に達したかどうかを示す容量インジケータと、
前記第1のセットのメモリロケーション、及び更なる記憶回路機構において識別された、前記共有メモリの第2のセットのメモリロケーションを監視して、いずれかのセットのメモリロケーションに記憶されたデータが修正されたかどうかを識別する、監視回路機構であって、前記データが修正されたと判定することに応答して、前記データが修正されたという指標を生成する、監視回路機構と、
処理回路機構であって、前記データが修正されたという前記指標を受信するため、かつ前記共有メモリ内の新しいメモリロケーションのアドレスを指定する監視アドレス命令を実行して、
前記容量インジケータに基づいて、前記アドレス記憶回路機構の前記容量に達したかどうかを判定すること、
前記アドレス記憶回路機構の前記容量に達していないと判定することに応答して、前記新しいメモリロケーションが前記監視回路機構によって監視されるべきであることを示すように、前記アドレス記憶回路機構を更新すること、及び
前記アドレス記憶回路機構の前記容量に達したと判定することに応答して、前記新しいメモリロケーションが前記監視回路機構によって監視されるべきであることを示すように、前記更なる記憶回路機構を更新すること、を行うための、処理回路機構と、を備える、装置。
【請求項2】
前記アドレス記憶回路機構は、複数のエントリを含み、各エントリは、前記第1のセットのメモリロケーションの前記指標のうちの1つを記憶するように構成されており、
前記容量インジケータは、前記複数のエントリが前記新しいメモリロケーションの指標を記憶するための少なくとも1つの利用可能なエントリを含まない限り、前記アドレス記憶回路機構の前記容量に達したことを示すように構成されている、請求項1に記載の装置。
【請求項3】
前記容量インジケータは、前記アドレス記憶回路機構に記憶された値に基づいて、前記アドレス記憶回路機構の前記容量に達したかどうかを示す、請求項1又は2に記載の装置。
【請求項4】
前記監視回路機構は、前記第1のセット又は前記第2のセット内のメモリロケーションを識別するスヌープ要求を受信することに応答して、前記データが修正されたことを識別するように構成されている、請求項1~3のいずれか一項に記載の装置。
【請求項5】
前記更なる記憶回路機構は、前記アドレス記憶回路機構に記憶された前記第1のセットのメモリロケーションの前記指標とは異なるフォーマットで、前記第2のセットのメモリロケーションの前記指標を記憶するように構成されている、請求項1~4のいずれか一項に記載の装置。
【請求項6】
前記更なる記憶回路機構は、キャッシュを備える、請求項1~5のいずれか一項に記載の装置。
【請求項7】
前記キャッシュは、前記第2のセットのメモリロケーションを示す複数のエントリを含み、前記エントリの各々は、タグに関連付けられ、
前記監視アドレス命令の実行中に、前記処理回路機構は、前記新しいメモリロケーションを示す新しいエントリに関連付けられた前記タグを所定の値に設定することによって、前記新しいメモリロケーションが監視されるべきであることを示すように前記キャッシュを更新するように構成されている、請求項6に記載の装置。
【請求項8】
前記タグは、前記タグに関連付けられたキャッシュされたメモリロケーションが、現在のトランザクションの実行中に前記処理回路機構によってアクセスされたかどうか、又は前記現在のトランザクションの実行の完了時に前記処理回路機構によってアクセスされるかどうかを示すように構成されたトランザクショナルメモリフィールドに記憶される、請求項7に記載の装置。
【請求項9】
前記監視回路機構は、所与のメモリロケーションを識別するスヌープ要求に応答して、前記所与のメモリロケーションが、前記アドレス記憶回路機構において、前記第1のセットのメモリロケーションにあるとして示されているかどうか、又は前記キャッシュにおいて、前記第2のセットのメモリロケーションにあるとしてタグ付けされているかどうかに基づいて、前記データが修正されたことを識別する、請求項7又は8に記載の装置。
【請求項10】
前記キャッシュは、レベル1データキャッシュである、請求項6~9のいずれか一項に記載の装置。
【請求項11】
前記更なる記憶回路機構は、レジスタを備える、請求項1~5のいずれか一項に記載の装置。
【請求項12】
前記レジスタは、前記第2のセットのメモリロケーションを識別するブルームフィルタを記憶するように構成されている、請求項11に記載の装置。
【請求項13】
前記ブルームフィルタは、ビット配列を含み、
前記監視アドレス命令の実行中に、前記処理回路機構は、前記アドレス記憶回路機構の前記容量に達したと判定することに応答して、
前記ブルームフィルタ中の複数のビット位置を識別するために、前記新しいメモリロケーションの指標に少なくとも1つのハッシュ関数を適用することと、
前記複数のビット位置の各々を所定の値に設定することと、を行う、請求項12に記載の装置。
【請求項14】
前記監視回路機構は、所与のメモリロケーションを識別するスヌープ要求に応答して、
前記所与のメモリロケーションの指標が前記アドレス記憶回路機構に記憶された指標と一致するときに、前記第1のセットのメモリロケーションが前記所与のメモリロケーションを含むと判定することと、
前記ブルームフィルタに対して前記所与のメモリロケーションの前記指標をテストすることに基づいて、前記第2のセットのメモリロケーションが前記所与のメモリロケーションを含むと判定することと、のうちの少なくとも1つに応答して、前記データが修正されたことを判定する、請求項12又は13に記載の装置。
【請求項15】
前記監視回路機構は、前記処理回路機構とは別個である、請求項1~14のいずれか一項に記載の装置。
【請求項16】
前記処理回路機構は、イベント待ち命令に応答して、イベント指標が前記処理回路機構によって受信されるまで、低電力状態に入る、請求項15に記載の装置。
【請求項17】
前記イベント指標は、前記データが修正されたという前記指標を含む、請求項16に記載の装置。
【請求項18】
前記第1のセットのメモリロケーション及び前記第2のセットのメモリロケーションは、他のセットの処理回路機構が、前記処理回路機構によって読み取られるメッセージを書き込むことができるメモリロケーションを含む、請求項1~17のいずれか一項に記載の装置。
【請求項19】
前記第1のセットのメモリロケーション及び前記第2のセットのメモリロケーションは、各々、不連続的なメモリロケーションを含む、請求項1~18のいずれか一項に記載の装置。
【請求項20】
前記監視アドレス命令の実行中に、前記新しいメモリロケーションが前記監視回路機構によって監視されるべきであることを示すように、前記アドレス記憶回路機構を更新することに続いて、前記処理回路機構は、前記アドレス記憶回路機構の前記容量に達しているかどうかをチェックするように構成されており、
前記処理回路機構は、前記アドレス記憶回路機構の前記容量に現在達したと判定することに応答して、前記アドレス記憶回路機構の前記容量に達したことを示すように、前記容量インジケータを更新するように構成されている、請求項1~19のいずれか一項に記載の装置。
【請求項21】
方法であって、
共有メモリの第1のセットのメモリロケーションの指標をアドレス記憶回路機構に記憶することと、
前記アドレス記憶回路機構の容量に達したかどうかを示すための容量インジケータを提供することと、
前記第1のセットのメモリロケーション、及び更なる記憶回路機構で識別された、前記共有メモリの第2のセットのメモリロケーションを監視して、いずれかのセットのメモリロケーションに記憶されたデータが修正されたかどうかを識別することと、
前記データが修正されたと判定することに応答して、前記データが修正されたという指標を生成することと、
処理回路機構において、前記データが修正されたという前記指標を受信することと、
前記共有メモリ内の新しいメモリロケーションのアドレスを指定する監視アドレス命令を実行して、
前記容量インジケータに基づいて、前記アドレス記憶回路機構の前記容量に達したかどうかを判定すること、
前記アドレス記憶回路機構の前記容量に達していないと判定することに応答して、前記新しいメモリロケーションが前記監視回路機構によって監視されるべきであることを示すように前記アドレス記憶回路機構を更新すること、及び
前記アドレス記憶回路機構の前記容量に達したと判定することに応答して、前記新しいメモリロケーションが監視されるべきであることを示すように前記更なる記憶回路機構を更新すること、を行うことと、を含む、方法。
【請求項22】
ターゲットコードを実行するための命令実行環境を提供するために、ホストデータ処理装置を制御するためのコンピュータプログラムであって、
前記ホストデータ処理装置のメモリ内又はレジスタ内にアドレス記憶構造を維持して、共有メモリの第1のセットのメモリロケーションの指標を記憶するためのアドレス記憶プログラム論理と、
前記メモリ又は前記レジスタ内に容量インジケータを維持して、前記アドレス記憶構造の容量に達したかどうかを示すための容量指標プログラム論理と、
前記第1のセットのメモリロケーション、及び前記メモリ又は前記レジスタ内に維持された更なる記憶構造において識別された、前記共有メモリの第2のセットのメモリロケーションを監視して、いずれかのセットのメモリロケーションに記憶されたデータが修正されたかどうかを識別するための監視プログラム論理であって、前記データが修正されたと判定することに応答して、前記データが修正されたという指標を生成する、監視プログラム論理と、
前記ターゲットコードの命令を復号して、データ処理を実行するように前記ホストデータ処理装置を制御する、命令復号プログラム論理と、を備え、
前記命令復号プログラム論理は、前記共有メモリ内の新しいメモリロケーションのアドレスを指定する監視アドレス命令に応答して、
前記容量インジケータに基づいて、前記アドレス記憶構造の前記容量に達したかどうかを判定すること、
前記アドレス記憶構造の前記容量に達していないと判定することに応答して、前記新しいメモリロケーションが監視論理によって監視されるべきであることを示すように、前記アドレス記憶構造を更新すること、及び
前記アドレス記憶構造回路機構の前記容量に達したと判定することに応答して、前記新しいメモリロケーションが前記監視論理によって監視されるべきであることを示すように、前記更なる記憶構造を更新すること、を行う、コンピュータプログラム。
【請求項23】
装置であって、
共有メモリの第1のセットのメモリロケーションの指標を記憶するための手段と、
前記第1のセットのメモリロケーションの指標を記憶するための前記手段の容量に達したかどうかを示すための手段と、
前記第1のセットのメモリロケーション、及び更なる記憶するための手段で識別された、前記共有メモリの第2のセットのメモリロケーションを監視して、いずれかのセットのメモリロケーションに記憶されたデータが修正されたかどうかを識別するための手段と、
前記データが修正されたと判定することに応答して、前記データが修正されたという指標を生成するための手段と、
前記データが修正されたという前記指標を受信するための手段と、
前記共有メモリ内の新しいメモリロケーションのアドレスを指定する監視アドレス命令を実行して、
前記容量インジケータに基づいて、前記第1のセットのメモリロケーションの指標を記憶するための前記手段の前記容量に達したかどうかを判定すること、
前記第1のセットのメモリロケーションの指標を記憶するための前記手段の前記容量に達していないと判定することに応答して、前記新しいメモリロケーションが、監視するための前記手段によって監視されるべきであることを示すように、前記第1のセットのメモリロケーションの指標を記憶するための前記手段を更新すること、及び
前記第1のセットのメモリロケーションの指標を記憶するための前記手段の前記容量に達したと判定することに応答して、前記新しいメモリロケーションが、監視するための前記手段によって監視されるべきであることを示すように前記更なる記憶するための手段を更新すること、を行う、手段と、を備える、装置。
【発明の詳細な説明】
【技術分野】
【0001】
本技術は、データ処理の分野に関する。
【0002】
いくつかのデータ処理システムでは、複数の処理要素(例えば、複数の処理ユニット又は複数のセットの処理回路機構)が、相互接続を介して共有構造にアクセスする。これらの共有構造は、共有メモリを含む可能性があり、処理要素間で通信されるメッセージは、共有メモリを介して通信され得る。例えば、1つの処理要素は、別の処理要素によって受信するためのメッセージを、共有メモリの専用領域内のメモリロケーションに書き込むことができる。次いで、受信側処理要素は、そのメモリロケーションにアクセスすることによってメッセージを受信し得る。
【0003】
本技術の第1の例から見ると、
共有メモリの第1のセットのメモリロケーションの指標を記憶するアドレス記憶回路機構と、
アドレス記憶回路機構の容量に達したかどうかを示す容量インジケータと、
第1のセットのメモリロケーション及び更なる記憶回路機構において識別された、共有メモリの第2のセットのメモリロケーションを監視して、いずれかのセットのメモリロケーションに記憶されたデータが修正されたかどうかを識別する監視回路機構であって、データが修正されたと判定することに応答して、データが修正されたという指標を生成する監視回路機構と、
処理回路機構であって、データが修正されたという指標を受信するため、かつ共有メモリ内の新しいメモリロケーションのアドレスを指定する監視アドレス命令を実行して、
容量インジケータに基づいて、アドレス記憶回路機構の容量に達したかどうかを判定し、
アドレス記憶回路機構の容量に達していないと判定することに応答して、新しいメモリロケーションが監視回路機構によって監視されるべきであることを示すようにアドレス記憶回路機構を更新し、
アドレス記憶回路機構の容量に達したと判定することに応答して、新しいメモリロケーションが監視回路機構によって監視されるべきであることを示すように更なる記憶回路機構を更新する、処理回路機構と、を備える、装置。
【0004】
本技術の第2の例から見ると、
共有メモリの第1のセットのメモリロケーションの指標をアドレス記憶回路機構に記憶することと、
アドレス記憶回路機構の容量に達したかどうかを示す容量インジケータを提供することと、
第1のセットのメモリロケーション及び更なる記憶回路機構で識別された、共有メモリの第2のセットのメモリロケーションを監視して、いずれかのセットのメモリロケーションに記憶されたデータが修正されたかどうかを識別することと、
データが修正されたと判定することに応答して、データが修正されたという指標を生成することと、
処理回路機構において、データが修正されたという指標を受信することと、
共有メモリ内の新しいメモリロケーションのアドレスを指定する監視アドレス命令を実行して、
容量インジケータに基づいて、アドレス記憶回路機構の容量に達したかどうかを判定し、
アドレス記憶回路機構の容量に達していないと判定することに応答して、新しいメモリロケーションが監視回路機構によって監視されるべきであることを示すようにアドレス記憶回路機構を更新し、
アドレス記憶回路機構の容量に達したと判定することに応答して、新しいメモリロケーションが監視されるべきであることを示すように更なる記憶回路機構を更新することと、を含む、方法。
【0005】
本技術の第3の例から見ると、ターゲットコードを実行するための命令実行環境を提供するために、ホストデータ処理装置を制御するコンピュータプログラムであって、
ホストデータ処理装置のメモリ内又はレジスタ内にアドレス記憶構造を維持して、共有メモリの第1のセットのメモリロケーションの指標を記憶するアドレス記憶プログラム論理と、
メモリ又はレジスタ内に容量インジケータを維持して、アドレス記憶構造の容量に達したかどうかを示す容量指標プログラム論理と、
第1のセットのメモリロケーション、及びメモリ又はレジスタ内に維持された更なる記憶回路機構において識別された、第2のセットのメモリロケーションを監視して、いずれかのセットのメモリロケーションに記憶されたデータが修正されたかどうかを識別する監視プログラム論理であって、データが修正されたと判定することに応答して、データが修正されたという指標を生成する監視プログラム論理と、
ターゲットコードの命令を復号して、データ処理を実行するようにホストデータ処理装置を制御する命令復号プログラム論理と、を備え、
命令復号プログラム論理は、共有メモリ内の新しいメモリロケーションのアドレスを指定する監視アドレス命令に応答して、
容量インジケータに基づいて、アドレス記憶構造の容量に達したかどうかを判定し、
アドレス記憶構造の容量に達していないと判定することに応答して、新しいメモリロケーションが監視論理によって監視されるべきであることを示すようにアドレス記憶構造を更新し、
アドレス記憶構造回路機構の容量に達したと判定することに応答して、新しいメモリロケーションが監視論理によって監視されるべきであることを示すように更なる記憶構造を更新する、コンピュータプログラムが提供される。
【0006】
本技術の第4の例から見ると、
共有メモリの第1のセットのメモリロケーションの指標を記憶するための手段と、
第1のセットのメモリロケーションの指標を記憶するための手段の容量に達したかどうかを示すための手段と、
第1のセットのメモリロケーション及び更なる記憶するための手段で識別された、共有メモリの第2のセットのメモリロケーションを監視して、いずれかのセットのメモリロケーションに記憶されたデータが修正されたかどうかを識別するための手段と、
データが修正されたと判定することに応答して、データが修正されたという指標を生成するための手段と、
データが修正されたという指標を受信するための手段と、
共有メモリ内の新しいメモリロケーションのアドレスを指定する監視アドレス命令を実行して、
容量インジケータに基づいて、第1のセットのメモリロケーションの指標を記憶するための手段の容量に達したかどうかを判定し、
第1のセットのメモリロケーションの指標を記憶するための手段の容量に達していないと判定することに応答して、新しいメモリロケーションが監視するための手段によって監視されるべきであることを示すように、第1のセットのメモリロケーションの指標を記憶するための手段を更新し、
第1のセットのメモリロケーションの指標を記憶するための手段の容量に達したと判定することに応答して、新しいメモリロケーションが監視するための手段によって監視されるべきであることを示すように更なる記憶するための手段を更新する、手段と、を備える、装置が提供される。
【図面の簡単な説明】
【0007】
本技術の更なる態様、特徴、及び利点は、添付の図面と併せて読まれる以下の例の説明から明らかとなる。
【
図1】複数の処理要素がインターコネクトを介して共有メモリにアクセスするシステムを概略的に例解する。
【
図2】更なる記憶回路機構がキャッシュを備える、本技術のアドレス記憶回路機構及び更なる記憶回路機構の一例を例解する。
【
図3】ハードウェアトランザクショナルメモリフィールドを含むキャッシュの一例を例解する。
【
図4】更なる記憶回路機構がブルームフィルタを記憶するレジスタを備える、本技術のアドレス記憶回路機構及び更なる記憶回路機構の一例を例解する。
【
図5A】監視アドレス命令に対する処理回路機構の応答を例解するフロー図である。
【
図5B】第1のセットのメモリロケーション又は第2のセットのメモリロケーションからのメモリロケーションの除去を例解するフロー図である。
【
図6】ブルームフィルタを使用する例における監視アドレス命令に対する処理回路機構の応答を例解するフロー図である。
【
図7】キャッシュを使用する例における監視アドレス命令に対する処理回路機構の応答を例解するフロー図である。
【0008】
添付図面を参照して実施形態を考察する前に、例示的な実施形態及び関連する利点について以下の説明が提供される。
【0009】
共有メモリ内のメモリロケーションにメッセージを書き込むとき、送信側処理要素によって送信されたメッセージを受信側処理要素に通知する手法は、受信側処理要素に割り込み要求を送信することである。この手法では、受信側処理要素は、割り込み要求に応答して、現在のプロセスの実行を停止し、割り込みサービスルーチンの実行に切り替わり、この割り込みサービスルーチンは、送信側処理要素によって書き込まれたメッセージを読み取るために共有メモリ内のメモリロケーションにアクセスする命令を含む。しかしながら、特に、割り込み要求が受信されるときに受信側処理要素が命令を実行している場合、現在のプロセスの実行を停止するように処理要素をトリガすることに起因して、この手法に関連する著しい性能コストが存在する可能性がある。追加的に、この手法は、送信側処理要素に制約を課し、送信側処理要素が、メッセージをメモリロケーションに書き込むことに応答して割り込み要求を送信するように構成されていない場合、受信側処理要素は、メッセージに気付かず、したがって、メッセージを読み取らないだろう。
【0010】
別の手法は、受信側処理要素が、メッセージが書き込まれることが予想される共有メモリ内のロケーションを定期的にポーリングして、それらのロケーションにおけるデータが修正されたかどうかを判定することである。これは、送信側処理要素が割り込みをトリガする必要性を回避するが、かなりの量のエネルギーを消費する。また、処理回路機構が実行する命令がないときであっても、受信側処理要素が電源オン状態のままである必要があり、データ処理システムのエネルギー消費が更に増加する。
【0011】
本技術は、メッセージが共有メモリに書き込まれるときに割り込みをトリガすることに関連する性能コストを招くことなく、共有メモリ内のロケーションを監視するより効率的な手法を提供することを目的とする。
【0012】
1つの例示的な構成によれば、共有メモリの第1のセットのメモリロケーションの指標を記憶するアドレス記憶回路機構が提供される。アドレス記憶回路機構は、例えば、第1のセットのメモリロケーションを識別する第1のセットのメモリロケーションのアドレスを記憶するように構成される。第1のセットのメモリロケーションにおけるメモリロケーションは、それらのロケーションに記憶されたデータに対する任意の修正を識別するために、(例えば、処理回路機構とは別個の)専用監視回路機構によって監視される。第1のセットのメモリロケーションを監視するために別個の監視回路機構を提供することは、処理回路機構が他のプロセスを実行することにそのリソースを集中させることを可能にする。処理回路機構が実行するための他のプロセスが存在しない場合、別個の監視回路機構の提供は、処理回路機構が低電力モードに入ることを可能にし、そのエネルギー消費を低減する。
【0013】
しかしながら、本発明者らは、監視回路機構によって監視されるメモリロケーションの数がアドレス記憶回路機構の容量を超える場合に問題が生じることを認識した。
【0014】
この状況に対処する1つの手法は、これらのメモリロケーションを定期的にポーリングすることによってメモリロケーションを監視する処理回路機構のシステムをデフォルトにすることであり得る。処理回路機構は、典型的には、監視回路機構よりも多くのリソースへのアクセスを有し、はるかに多数のメモリロケーションを監視することを可能にする。しかしながら、上で考察されるように、この手法はかなりの量のエネルギーを消費する。
【0015】
代替的な手法は、監視回路機構及びアドレス記憶回路機構を使用していくつかのメモリロケーションを監視する一方で、処理回路機構がそれらのロケーションをポーリングすることによって他のメモリロケーションを監視することであり得る。しかしながら、これは、命令を実行していない間であっても、処理回路機構が電源オン状態のままであることを依然として必要とし、したがって、依然としてかなりの量のエネルギーを消費する。
【0016】
本技術は、メモリロケーションを監視するためのよりエネルギー効率の良い手法を提供する。特に、第2のセットのメモリロケーションは、更なる記憶回路機構において識別され、監視回路機構は、第1のセットのメモリロケーション及び第2のセットのメモリロケーションの両方を監視して、いずれかのセットのメモリロケーションに記憶されたデータが修正されたかどうかを識別する。次いで、監視回路機構は、データが修正されたという判定に応答して、データが修正されたという指標を生成し、処理回路機構が、指標を受信するために提供される。
【0017】
容量インジケータは、アドレス記憶構造の容量に達したかどうかを示すために提供される。例えば、容量インジケータは、回路機構(例えば、テーブルの特定のエントリが特定の値を有するかどうかを(例えば、ANDゲートを介して)検出する回路機構)であり得るか、又はテーブル又は記憶構造内のエントリであり得る。処理回路機構は、監視回路機構によって監視されるべき新しいメモリロケーションを指定する監視アドレス命令に応答して、容量インジケータに基づいて、アドレス記憶回路機構の容量に達したかどうかを判定する。アドレス記憶回路機構の容量に達していないと判定されるときに、処理回路機構は、新しいメモリロケーションが監視回路機構によって監視されるべきであることを示すようにアドレス記憶回路機構を更新する(例えば、新しいメモリロケーションの指標をアドレス記憶回路機構に記憶することによって、新しいメモリロケーションを第1のセットのメモリロケーションに追加する)。アドレス記憶回路機構の容量に達したと判定されるときに、処理回路機構は、代わりに、新しいメモリロケーションが監視回路機構によって監視されるべきであることを示すように更なる記憶回路機構を更新する(例えば、新しいメモリロケーションを第2のメモリロケーションに追加する)。
【0018】
アドレス記憶回路機構の容量に達したときを示す容量インジケータを使用することにより、第2のセットのメモリロケーションが更なる記憶回路機構において識別されることを可能にする。これは、次に、監視回路機構によって監視され得るメモリロケーションの数が増加されることを可能にし、これは、処理回路機構がメモリロケーション自体を監視する必要がある可能性を低減することによって、著しい電力節約につながる。この技術を実装するために必要とされる回路面積の増加は、特に既存の記憶構造が更なる記憶回路機構を実装するために使用される場合(これは必須ではないが、更なる記憶回路機構は装置に追加される追加の記憶構造であり得る)、容量インジケータの追加は回路面積に関して限られたコストを追加するので、制限され得る。したがって、回路面積に関連するコストの増加を制限しながら、大幅な電力節約を達成することができる。
【0019】
いくつかの例では、アドレス記憶回路機構は、複数のエントリを含み、各エントリは、第1のセットのメモリロケーションの指標のうちの1つを記憶するように構成され、容量インジケータは、複数のエントリが新しいメモリロケーションの指標を記憶するための少なくとも1つの利用可能なエントリを含まない限り、アドレス記憶回路機構の容量に達したことを示すように構成されている。
【0020】
例えば、アドレス記憶回路機構の容量は、新しいメモリロケーションの指標を記憶するためにアドレス記憶回路機構に利用可能なエントリがないときに達したと考えられる。
【0021】
いくつかの例では、容量インジケータは、アドレス記憶回路機構に記憶された値に基づいて、アドレス記憶回路機構の容量に達したかどうかを示す。
【0022】
例えば、アドレス記憶回路機構が複数のエントリを含むときに、エントリのうちの1つは、記憶回路機構の容量に達したかどうかに応じて特定の値(例えば、単一のビット-1又は0)を記憶することによって、アドレス記憶回路機構の容量が満たされたかどうかを示すために使用される。容量インジケータを実装するためにアドレス記憶回路機構内のエントリを使用することは、本技術、特に容量インジケータが、アドレス記憶回路機構のサイズのわずかな増加(例えば、単一のエントリによって、又は容量が1又は0によって示される場合にはわずか単一のビットだけ)で実装されることを可能にする。これは、回路面積の増加を制限して、アドレスを監視するための全体容量がかなりの量増加することを可能にする(例えば、監視回路機構が監視することができるメモリロケーションの数は、アドレス記憶回路機構のサイズの増加を制限して、複数の(例えば、2つ以上の)メモリロケーションだけ増加する)。
【0023】
いくつかの例では、監視回路機構は、第1のセット又は第2のセット内のメモリロケーションを識別するスヌープ要求を受信することに応答して、データが修正されたことを識別するように構成されている。
【0024】
これらの例では、スヌープ要求は、キャッシュコヒーレンシを維持するために、共有メモリ内のデータが修正されたこと、及び処理回路機構によって制御される任意のキャッシュ内の対応するエントリが更新又は無効化されるべきであることの指標として使用され得る。既存のキャッシュコヒーレンシシステム(例えば、スヌープ要求)を利用することにより、本技術を典型的なシステムで容易に実装することが可能になる。
【0025】
いくつかの例では、更なる記憶回路機構は、アドレス記憶回路機構に記憶された第1のセットのメモリロケーションの指標とは異なるフォーマットで、第2のセットのメモリロケーションの指標を記憶するように構成されている。
【0026】
例えば、更なる記憶回路機構は、アドレス記憶回路機構と同じ形態を有する別個のアドレス記憶回路機構でも、アドレス記憶回路機構に追加された追加のエントリでもなく、その代わりに、アドレス記憶回路機構に示された第1のセットのメモリロケーションの指標とは異なるフォーマットで第2のセットのメモリロケーションの指標を記憶する追加の異なる記憶回路機構である。異なるフォーマットは、各メモリロケーションを示すために使用されるビットの異なる構成であり、例えば、1つのフォーマットは、フルメモリアドレスを記憶し得、別のフォーマットは、キャッシュ内のフラグセットでメモリアドレスを示し得る一方で、更に別のフォーマットは、メモリアドレスをブルームフィルタにマージすることを含むことができる。第1のセットのメモリロケーションとは異なるフォーマットで第2のセットのメモリロケーションを記憶することによって、これらの例は、より空間効率的な方法で、及び/又は処理システム内の既存の構造を利用する方法で、第2のセットのメモリロケーションの指標を記憶する柔軟性を提供する。
【0027】
いくつかの例では、更なる記憶回路機構はキャッシュを備える。
【0028】
これらの例におけるキャッシュは、第2のセットのメモリロケーションを識別するための専用キャッシュではなく、データキャッシュなど、処理システム内の汎用キャッシュである。汎用キャッシュの例は、共有メモリ内のメモリロケーションの指標と、それらのロケーションから取り出されたデータのコピーとを記憶するデータキャッシュを含む。キャッシュを使用して第2のセットのメモリロケーションを表すこの手法は、処理システム内の既存の記憶構造(例えば、データキャッシュなどの汎用キャッシュ)が更なる記憶回路機構として使用されることを可能にする。このため、本技術は、回路面積の限られた増加で実装することができる。
【0029】
いくつかの例では、キャッシュは、第2のセットのメモリロケーションを示す複数のエントリを含み、エントリの各々は、タグに関連付けられ、監視アドレス命令の実行中に、処理回路機構は、新しいメモリロケーションを示す新しいエントリに関連付けられたタグを所定の値に設定することによって、新しいメモリロケーションが監視されるべきであることを示すようにキャッシュを更新するように構成されている。
【0030】
例えば、タグは、各エントリに関連付けられたフィールド、例えば、その関連付けられたメモリロケーションが第2のセットのメモリロケーション内にあるかどうかに応じて、特定の値(例えば、1又は0)に設定される単一ビットを記憶するフィールドである。この手法は、限られた変更(例えば、各エントリに単一のフィールド(いくつかの例では単一のビット)を追加すること)で既存のキャッシュを使用して第2のセットのメモリロケーションが識別されることを可能にし、本技術を典型的な処理システムにおいて実装することを容易にし、回路面積の限られた増加しか必要としない。
【0031】
いくつかの例では、タグは、タグに関連付けられたキャッシュされたメモリロケーションが、現在のトランザクションの実行中に処理回路機構によってアクセスされたかどうか、又は現在のトランザクションの実行の完了時に処理回路機構によってアクセスされるかどうかを示すように構成されたトランザクショナルメモリフィールドに記憶される。
【0032】
例えば、トランザクションは、処理回路機構によってアトミックに実行される命令のグループである。トランザクションのアトミック性を維持するために、処理回路機構は、トランザクション内の命令によって読み取られたアドレス(アドレスの読み取りセット)、及び/又はトランザクションが完了すると処理回路機構がデータを書き込むであろうアドレス(アドレスの書き込みセット)の記録を維持する。これにより、処理回路機構は、トランザクションが完了する前に、トランザクションに応答してアクセスされたメモリロケーションが他のプロセスによってアクセスされるかどうかを監視することができ、これにより、トランザクション内の命令がアトミックに実行されることが防止される。トランザクショナルメモリフィールドを有するキャッシュにおいて、読み取りセット及び/又は書き込みセットは、トランザクショナルメモリフィールドにおいて識別される(例えば、トランザクショナルメモリフィールドに記憶された値を特定の値に設定することによって)。本技術のこれらの例では、トランザクショナルメモリフィールドの全部又は一部(例えば、読み取りセットインジケータ、書き込みセットインジケータ、又は両方)は、キャッシュされたメモリロケーションが第2のセットのメモリロケーション内にあるかどうかを示すためのタグとして再利用される。これにより、キャッシュのサイズを増加させることなく第2のセットのメモリロケーションを識別することが可能になり、したがって、本技術を回路面積の限られた増加で実装することが可能になる。
【0033】
トランザクショナルメモリフィールドはトランザクションを処理するために利用可能に保たれるべきであると予想されるので、トランザクショナルメモリフィールドをこのように再利用することは直観に反していることを見出す可能性がある。しかしながら、本発明者は、実際にはトランザクションが、いくつかのプロセッサにとってまれであり、したがって、トランザクショナルメモリフィールドを再利用することが、システムの性能に大きな影響を必ずしも与えないことを認識した。特定の例では、トランザクションが実行されるときに、処理回路機構は、トランザクショナルメモリフィールドをクリアし、共有メモリを連続的にポーリングすることによって第2のセットのメモリロケーションを監視することをデフォルトにする。
【0034】
いくつかの例では、監視回路機構は、所与のメモリロケーションを識別するスヌープ要求に応答して、所与のメモリロケーションが、アドレス記憶回路機構において、第1のセットのメモリロケーションにあるとして示されているかどうか、又はキャッシュにおいて、第2のセットのメモリロケーションにあるとしてタグ付けされているかどうかに基づいて、データが修正されたことを識別する。
【0035】
上記のように、既存のキャッシュコヒーレンシシステム(例えば、スヌープ要求)をこのように利用することにより、本技術を典型的な処理システムにおいて容易に実装することが可能になる。スヌープ要求によって識別された所与のメモリロケーションが第1のセットのメモリロケーションの一部であるかどうかをチェックすることは、例えば、アドレス記憶回路機構にアクセスし、アドレス記憶回路機構においてソートされた指標のうちの1つが所与のアドレスの指標と一致するかどうかをチェックすることによって、所与のメモリロケーションをアドレス記憶回路機構に記憶された第1のセットのメモリロケーションの指標に対してチェックすることを伴う。一方、所与のメモリロケーションが第2のセットのメモリロケーション内にあるかどうかをチェックすることは、所与のメモリロケーションが(例えば)キャッシュ内に存在するかどうかを識別することと、存在する場合、そのエントリに関連付けられたタグが設定されているかどうかを判定することとを伴う。
【0036】
いくつかの例では、キャッシュは、レベル1データキャッシュである。
【0037】
これは実装形態の詳細であり、実際には、この目的のために任意のキャッシュが使用され得ることが理解されよう。レベル1データキャッシュは、処理回路機構に最も近いキャッシュであり、したがって、典型的には、メモリ階層の更に下の他のキャッシュよりもこのキャッシュにアクセスするのがより速い。したがって、レベル1データキャッシュを更なる記憶回路機構として使用することは、所与のメモリロケーションが第2のセットのメモリロケーションの一部であるかどうかをチェックするためにかかる時間を短縮し、システムの性能の改善につながる。
【0038】
いくつかの例では、更なる記憶回路機構は、レジスタを備える。
【0039】
レジスタは、典型的には、大量の空間を占有しないので(単一のレジスタは、典型的には、単一のオペランドを記憶するように構成されている)、レジスタを更なる記憶構造として使用することは、本技術を実装するために必要とされる回路面積を制限する。特に空間効率のよい手法は、システム内の既存のレジスタを利用することである。いくつかの例示的な状況では(例えば、処理回路機構が低電力状態にあるとき)、処理回路機構は、利用可能なレジスタの全てを利用するわけではなく、第2のセットのメモリロケーションを識別するために少なくとも1つのレジスタを利用可能なままにする。
【0040】
いくつかの例では、レジスタは、第2のセットのメモリロケーションを識別するブルームフィルタを記憶するように構成されている。
【0041】
ブルームフィルタは、例えば、インジケータメモリロケーションがブルームフィルタによって識別された第2のセットのメモリロケーションの一部であるかどうかを判定するために、どのインジケータメモリロケーションがテストされ得る確率的データ構造である。典型的には、ブルームフィルタに対して値をテストすることは、偽陽性判定(例えば、メモリロケーションが第2のセットの一部であるという誤った判定)を引き起こす可能性があるが、偽陰性判定は引き起こさない。ブルームフィルタは、データ値のセットを識別するための特に空間効率的なフォーマットであり(例えば、単一のレジスタを使用して複数のメモリロケーションを識別し得る)、これにより、本技術のこれらの例を実装するために必要とされる回路面積の増加を制限することが可能になる。実際には、ブルームフィルタ内の値の数が増加するにつれて偽陽性が発生する可能性が増加するので、ブルームフィルタに追加されるデータ値の数を制限することが典型的であるが、事実、単一のレジスタに記憶されたブルームフィルタによって識別され得るデータ値の数は理論的には無制限である。値がブルームフィルタによって表される値のセットの一部であるかどうかを判定するためにかかる時間(例えば、メモリロケーションが第2のセットのロケーションの一部であるかどうかを判定するためにかかる時間)は、いくつの値が表されるかにかかわらず一定である。これは、ブルームフィルタを使用することに関連付けられる時間的利点もあることを意味し、したがって、メモリロケーションが第2のセットのメモリロケーションのうちの1つであるかどうかをチェックするために費やされる処理時間の量は、判定論的に行うことができ、ほとんどの場合、他の技術と比較して低減される。したがって、このようにブルームフィルタを用いることによっても、システムの性能が改善されることを可能にする。
【0042】
いくつかの例では、ブルームフィルタは、ビット配列を含み、監視アドレス命令の実行中に、処理回路機構は、アドレス記憶回路機構の容量に達したと判定することに応答して、ブルームフィルタ内の複数のビット位置を識別するために、新しいメモリロケーションの指標に少なくとも1つのハッシュ関数を適用することと、複数のビット位置の各々を所定の値に設定することと、を行う。
【0043】
そのような例におけるブルームフィルタは、レジスタに記憶される1及び0の配列(例えば、セット、シリーズ)であり、各ハッシュ関数は、入力値(例えば、アドレス又はアドレスの一部などの新しいメモリロケーションの指標)を、配列内の単一のビットロケーション(ビット位置)又は配列内の複数のビット位置にマッピングし、その各々は、入力値がセットに追加されるときに、所定の値(例えば、1又は0)に設定される。したがって、新しいメモリロケーションを第2のセットのメモリロケーションに追加することは、比較的単純な動作であり、更新されるべきレジスタ内の少数のビットのみを必要とする。上記のように、この手法はまた、単一のレジスタを使用して複数のメモリロケーションを識別することができるという事実により、特に空間効率がよい。
【0044】
いくつかの例では、監視回路機構は、所与のメモリロケーションを識別するスヌープ要求に応答して、所与のメモリロケーションの指標がアドレス記憶回路機構に記憶された指標と一致するときに、第1のセットのメモリロケーションが所与のメモリロケーションを含むと判定することと、ブルームフィルタに対して所与のメモリロケーションの指標をテストすることに基づいて、第2のセットのメモリロケーションが所与のメモリロケーションを含むと判定することと、のうちの少なくとも1つに応答して、データが修正されたことを判定する。
【0045】
上で考察されるように、ブルームフィルタに対してメモリロケーションをテストすることは、メモリロケーションが第2のセットのメモリロケーション内にないか、又はある可能性があるという判定が行われることを可能にし、例えば、偽陽性は可能性としてあるが、偽陰性はない。しかしながら、偽陽性は、システムの機能的正確さに影響を及ぼさないので、これらの例では特に問題ではない。すなわち、システムの性能は、実際には修正されていないメモリロケーションに処理回路機構が不必要にアクセスすることに起因して、偽陽性によってわずかに影響を受けるが、これは、処理回路機構の正しい動作を妨げない。スヌープ要求によって識別された所与のメモリロケーションが第1のセットのメモリロケーションの一部であるかどうかをチェックすることは、例えば、アドレス記憶回路機構にアクセスし、アドレス記憶回路機構においてソートされた指標のうちの1つが所与のアドレスの指標と一致するかどうかをチェックすることによって、所与のメモリロケーションをアドレス記憶回路機構に記憶された第1のセットのメモリロケーションの指標に対してチェックすることを伴う。所与のメモリロケーションが潜在的に、ブルームフィルタによって識別された第2のセットのメモリロケーションのうちの一部であるかどうかをチェックすることは、例えば、メモリロケーションを第2のセットに追加するために使用された同じハッシュを所与のメモリロケーションの指標に適用することによって、所与のメモリロケーションの指標をブルームフィルタに対してテストすることと、ハッシュによって識別されたビット位置が所定の値に設定されているかどうかをチェックすることとを伴う。したがって、所与のメモリロケーションが潜在的に第2のセットの一部であるかどうかをチェックするためにかかる時間(及び関連付けられた性能への影響)は、いくつのメモリロケーションが第2のセットに含まれるかにかかわらず一定である。
【0046】
いくつかの例では、監視回路機構は、処理回路機構とは別個である。
【0047】
例えば、監視回路機構は、処理回路機構とは別個のハードウェア構造である。これにより、処理回路機構は、第1及び第2のセットのメモリロケーションを監視するのではなく、命令を実行することに集中することができるので、システムの性能が改善されることを可能にする。代替的に、処理回路機構が実行すべき命令を有しない場合、監視回路機構をハードウェアの別個の部分として有することは、処理回路機構が低電力モードに入ることを可能にし、その電力消費を低減する一方で、監視されるアドレスが監視され続けることを可能にする。
【0048】
いくつかの例では、処理回路機構は、イベント待ち命令に応答して、イベント指標が処理回路機構によって受信されるまで、低電力状態に入る。
【0049】
例えば、処理回路機構は、監視回路機構が低電力状態に入ることなく、低電力状態(例えば、待機状態、電力節約モード)に入るが、これは、監視回路機構が処理回路機構とは別個であるために可能である。監視回路機構が第1及び第2のセットのメモリロケーションを監視し続ける間に処理回路機構が低電力状態に入ることを可能にすることによって、システムの電力消費が低減され得る(例えば、監視回路機構が第1及び第2のセットのアドレスを監視するための専用回路機構であるため、その電力消費は、より広い範囲の動作を実行するように適合された処理回路機構の電力消費よりも低い可能性が高いことを意味する)。
【0050】
いくつかの例では、イベント指標は、データが修正されたという指標を含む。
【0051】
例えば、処理回路機構は、データが修正されたという指標を受信することに応答して、低電力状態を出るように構成されている。これは、(処理回路機構が低電力状態に入ることを可能にすることによって)電力消費の低減を可能にする一方で、依然として、処理回路機構が、第1及び第2のセットのロケーションに記憶されたデータへの任意の修正を通知されることを可能にする。
【0052】
いくつかの例では、第1のセットのメモリロケーション及び第2のセットのメモリロケーションは、他のセットの処理回路機構が、処理回路機構によって読み取られるメッセージを書き込むことができるメモリロケーションを含む。
【0053】
全てが共有メモリへのアクセスを有する複数の処理ユニット(例えば、処理要素とも呼ばれる複数の処理回路機構)を備えるシステムでは、処理ユニットは、共有メモリの特定の領域にメッセージを書き込むことによって、メッセージを互いに送信することができる。受信処理ユニットは、関連するメモリロケーションにアクセスすることによってメッセージを受信する。したがって、特定の領域におけるデータが修正されるときはいつでも、処理回路機構が通知されることが有益である。したがって、これらの例では、第1及び第2のセットのメモリロケーションは、他の処理要素が処理回路機構によって読み取られるべきメッセージを書き込むことができるメモリロケーションであり、したがって、これらのメモリロケーションを監視するための監視回路機構の提供により、メッセージが別の処理要素によってメモリに書き込まれるときに処理回路機構が通知されることを可能にする。
【0054】
いくつかの例では、第1のセットのメモリロケーション及び第2のセットのメモリロケーションは、各々、不連続的なメモリロケーションを含む。
【0055】
したがって、第1及び第2のセットのメモリロケーションは、メモリロケーションアドレスにおいて1つ以上の「ギャップ」を含み、これは、それらのメモリロケーションが別々に識別される(例えば、範囲の一部ではない)ことを意味する。
【0056】
特定の例では、メモリ領域がアドレスロケーションA-B-C-D-Eを含む場合、第1のセットの非連続メモリロケーションは、これらのセットの全てが開始アドレスと終了アドレスとの間に1つ以上のギャップを含むので、{A,B,E}、又は{B,D,E}、又は{A,B,C,E}として定義され得る。そのようなセットは、これらが、そのようなギャップを含まないため、{A,B,C}又は{D,E,F}を含むことができない。すなわち、第1及び第2のセットのメモリロケーションは、開始点及び終了点を有する単一のアドレス範囲を使用して完全に定義することはできない。
【0057】
非連続メモリロケーションが独立して識別されるので、監視回路機構によって監視されるべき各新しいメモリロケーションは、アドレス記憶回路機構又は更なる記憶回路機構への新しいデータの追加(例えば、新しいメモリロケーションの新しい指標を記憶すること)を必要とする。本技術は、監視回路機構によって監視することができる、独立して識別された非連続(例えば、不連続、ばらばら)なメモリロケーションの数を増加させることを可能にする。
【0058】
いくつかの例では、監視アドレス命令の実行中に、新しいメモリロケーションが監視回路機構によって監視されるべきであることを示すように、アドレス記憶回路機構を更新することに続いて、処理回路機構は、アドレス記憶回路機構の容量に現在達しているかどうかをチェックするように構成されており、処理回路機構は、アドレス記憶回路機構の容量に達したと判定することに応答して、アドレス記憶回路機構の容量に達したことを示すように、容量インジケータを更新するように構成されている。
【0059】
例えば、新しいメモリロケーションが第1のセットのメモリロケーションに追加されるたびに、処理回路機構は、アドレス記憶回路機構が結果としてその容量に達したかどうかをチェックし、それに応じて容量インジケータを設定する。これは、容量インジケータの精度が維持されることを可能にする。
【0060】
ここで、特定の実施形態を、図面を参照して説明する。
【0061】
図1は、本出願で説明される技術が使用され得るデータ処理システム2の一例を概略的に例解する。システム2は、メモリ8へのアクセスを共有する複数の処理要素4、6を有する。この例では、処理要素は、2つの中央処理装置(central processing unit、CPU)4及びネットワークインターフェースコントローラ(network interface controller、NIC)6を含むが、これは一例に過ぎず、多くの他のタイプの処理要素、例えば、グラフィックス処理ユニット(graphics processing unit、GPU)、ディスプレイコントローラ、ダイレクトメモリアクセス(direct memory access、DMA)コントローラ、周辺入力/出力(input/output、I/O)コントローラなどが提供され得ることが理解されるだろう。CPU4、6は、データが修正されたことの指標を受信し、かつ監視アドレス命令を実行する処理回路機構の例であり、メインメモリ8は、共有メモリの一例である。コヒーレントインターコネクト10は、コヒーレンシプロトコルに従ってそれぞれの処理要素4、6間のコヒーレンシを管理するために提供される。CPU4などのいくつかの処理要素は、メモリシステムから(例えば、メインメモリ8から)の命令又はデータをキャッシュするための1つ以上のキャッシュ12、13を有する。
図1は、簡潔にするために、単一のレベル1データキャッシュ12及び単一のレベル1命令キャッシュ13を有する各CPU4を例解するが、所与の処理要素は、複数のレベルのキャッシュ(例えば、レベル1キャッシュ及びレベル2キャッシュ)を有することができる。装置はまた、例えばインターコネクト10に結合された少なくとも1つのシステムレベルキャッシュ14を含み、これは特定の処理要素に割り当てられないが、メモリシステムのより近くに位置する。システムキャッシュ14は、キャッシュ自体を有しないネットワークインターフェースコントローラ6などのキャッシュされていない処理要素によるメモリシステムへのアクセスを高速化するために使用され得る。
【0062】
インターコネクト10は、どのキャッシュが特定のアドレスからのデータを保持しているかを追跡するスヌープフィルタ16を有する。スヌープフィルタ16は、正確であり得るか、又は、所与のアドレスが特定のキャッシュにキャッシュされているといういくつかの偽陽性検出を許容するが、偽陰性(データがキャッシュされているが、これがフィルタによって検出されない場合)を可能にしない、より近似的な表現(例えば、フィルタ表現)を使用し得る。所与の処理要素から所与のアドレスへの読み取り又は書き込みアクセスを検出すると、コヒーレントインターコネクト10は、対応するアドレスについてスヌープフィルタ16を調べ、データを保持している可能性のある任意のキャッシュを識別し、必要であれば、対応するキャッシュにスヌープ要求を送信して、それらのキャッシュによって保持されているデータのコヒーレンシ状態を照会し、対応するデータ値を返し、及び/又は無効化をトリガする。コヒーレンシプロトコルは、データが特定のコヒーレンシ状態でキャッシュに保持されているときに、特定のタイプのトランザクションに対してどのような応答が取られるべきかを定義する。例えば、データが、コヒーレンシが他のキャッシュ内の対応するデータとともに維持されるべきであることを示す共有状態でキャッシュされるときに、1つの処理要素による共有データへの書き込みは、他の処理要素が潜在的に期限切れの情報にアクセスすることを回避するために、システム内の他の場所のキャッシュ内の対応するデータの無効化をトリガする。したがって、インターコネクト10は、様々なコヒーレンシプロトコルトランザクション(読み取り、書き込み、又はスヌープトランザクションなど)をそれぞれのキャッシュ又は処理要素と交換することができる。
【0063】
CPU4のうちの1つで実行されるいくつかのソフトウェアプロセスは、他のアクタから受信された多くの通信ストリームを迅速かつ効率的に多重化する必要がある。これらの通信ストリームは、例えば、共有メモリを更新する他の処理要素4から、ネットワークインターフェースコントローラ6若しくは周辺I/Oデバイスを介して外部ソースから、又は同じ処理要素上で実行する別のソフトウェアプロセス(例えば、別の仮想マシン)から来る可能性がある。例えば、他の処理要素4は、共有メモリ8の特定の領域にデータを書き込むことによって、CPUのうちの1つにメッセージを送信することができる。(例えば、他の処理要素からのメッセージをチェックするために)多数のメモリロケーションを連続的にポーリングする必要があるソフトウェアプロセスを回避するために、
図1の各CPU4には、変化について監視されるべき共有メモリ8内の第1のセットのメモリロケーションを定義する監視データを記憶するためのアドレス記憶回路機構20と、メモリシステムへのアクセスを監視する監視回路機構22と、が提供されている。アドレス記憶回路機構20に示されたメモリロケーションのうちの1つ内のデータに対する変化が監視回路機構22によって検出されるときに、監視回路機構22は、対応するCPU4に割り込みを送信して、監視されたアドレスのうちの1つに記憶されたデータが変化したことをCPU4に通知し、割り込みは、データが修正されたことの指標の一例である。アドレス記憶回路機構20は、共有メモリの第1のセットのメモリロケーションの指標を記憶するアドレス記憶回路機構の一例であり、複数の不連続メモリロケーションを独立して定義する監視データを記憶することができ、複数のメモリロケーションが並列に変化について監視され得るようにする。監視回路機構22は、第1のセットのメモリロケーション、及び更なる記憶回路機構で識別された、共有メモリの第2のセットのメモリロケーションを監視して、いずれかのセットのメモリロケーションに記憶されたデータが修正されたかどうかを識別する監視回路機構の一例である。
【0064】
アーキテクチャレベルでは、処理回路機構(CPU)4は、アドレス記憶回路機構20内の監視データの設定及びクリア、及びどの領域が変化したかの報告を制御する命令セットアーキテクチャにおける複数の命令をサポートする。各プロセッサ4の命令デコーダは、例えば、処理のためにフェッチされた命令のオペコードを検出し得、監視アドレス命令(以下で考察される)に遭遇すると、アドレス記憶回路機構20内のデータの更新をトリガするように処理回路機構4を制御し得る。命令デコーダはまた、監視回路機構22からどのメモリロケーションが変化したかの報告を要求するように処理回路機構を制御し得る。
【0065】
したがって、監視アドレス命令は、CPU4がメモリロケーションをCPUローカル監視ストア(アドレス記憶回路機構)20に登録することを可能にするように提供され、対応する監視回路機構22は、CPUが低電力モードに入ってそれらの変化が通知されるのを待つことができ、いかなる変化も見逃すことがない間、それらのロケーションに対する変化を監視することができ、これは、監視回路機構22がCPU4から分離されているので可能であり、したがって、CPUが低電力モードにある間、メモリロケーションを監視し続けることができる。
【0066】
イベント待ち(wait-for-event、WFE)命令を使用して、プロセッサは、電力節約状態(例えば、低電力又は待機モード)に切り替えられることができ、プロセッサ4は、次いで、監視回路機構22が、変化が検出されたことをシグナリングするのを待つ。イベントが発生したことを監視回路機構22がプロセッサに通知するときに、変化が検出されたメモリロケーションの指標(例えば、アドレス)が、処理回路機構によってアクセスされるべきアドレスのバッファ又はログに追加される。
【0067】
図1に示されるように、メモリロケーションの監視の要求を設定することができる各処理要素4には、それ自体の別個のアドレス記憶回路機構20及び監視回路機構22が提供されている。これは、アドレス記憶回路機構がコヒーレントインターコネクト10によって管理されるコヒーレンシ方式に統合されることを可能にし、アドレス記憶回路機構20内のエントリは、いくつかの例では、関連するコヒーレンシプロトコルに従ってコヒーレンシ状態でタグ付けされるようにし、対応するアドレスにおけるデータに対する変更に応答してスヌープされるようにする。更に、メモリロケーションを能動的に監視することに加えて(又はその代わりに)、監視回路機構22は、コヒーレントインターコネクト12によって送信されたスヌープ要求を傍受して、修正されたメモリロケーションを識別するように構成されることも可能である。
【0068】
本発明者は、アドレス記憶回路機構20の容量に達するときに、監視回路機構22によって監視されるべき新しいアドレスを指定する監視アドレス命令が処理回路機構4によって実行される場合、問題が生じる可能性があることを認識した。この状況において、監視回路機構22は、例えば、現在監視されているメモリロケーションのうちの1つを犠牲にすることなく、監視アドレス命令によって指定された新しいメモリロケーションを監視することができないだろう。したがって、監視回路機構22及びアドレス記憶回路機構20によって提供される性能上の利点は、アドレス記憶回路機構20の容量を超えるまでしか提供されない。
【0069】
この問題に対処するために、アドレス記憶回路機構20のサイズを増加させ得るか、又はアドレス監視データを記憶するための追加の記憶回路機構を提供し得る。しかしながら、これは、回路面積の大幅な増加という犠牲を払って生じる。
【0070】
代わりに、本技術は、キャッシュなどの既存の記憶構造又はレジスタにおいて、異なるフォーマットで監視されるべき任意の追加のメモリロケーションを識別することによって、この問題に対処する。以下の例で説明されるように、異なるフォーマットは、メモリロケーションを識別するために使用されるビットの異なる構成であり、例えば、第1のセットのメモリロケーションは、フルメモリアドレスの形態で識別され得る一方で、第2のセットのメモリアドレスは、ブルームフィルタにおいて、又はキャッシュ内のタグセットとして識別され得る。したがって、監視回路機構22は、2つのセットのメモリロケーション、すなわち、アドレス記憶回路機構20に記憶されたアドレス監視データによって識別される第1のセットのメモリロケーションと、更なる記憶回路機構において識別される第2のセットのアドレスとを監視する。例えば、更なる記憶回路機構は、データキャッシュ12又はレジスタを含むことができる。この手法は、回路面積を大幅に増加させることなく、監視回路機構22によって監視され得るメモリロケーションの数を大幅に増加させることを可能にする。
【0071】
更なる記憶回路機構は、いくつかの方法のいずれかで実装され得る。例えば、
図2は、更なる記憶回路機構がキャッシュ24を備える例を概略的に例解する。例えば、これは、
図1に示すレベル1データキャッシュ12であり得るが、システム内の他のキャッシュもまた使用され得ることが理解されるであろう。
【0072】
図2に示されるように、アドレス記憶回路機構20は、監視回路機構22によって監視される共有メモリ内の第1のセットのメモリロケーションの指標を記憶するように提供されている。指標は、任意の形態を採ることができるが、この例では、アドレスである。
【0073】
アドレス記憶回路機構20は複数のエントリ30を有し、各エントリ30は、監視回路機構によって監視される第1のセットのメモリロケーション内のメモリロケーションのアドレスを記憶するように構成されている。これらのアドレスは、共有メモリ内のロケーションを直接識別する物理アドレスであり得るが、対応するメモリロケーションにアクセスすることができる得る前に(例えば、メモリ管理ユニット(memory management unit、MMU)内で)物理アドレスに変換される必要がある仮想アドレスであり得る。
【0074】
アドレス記憶回路機構20はまた、アドレス記憶回路機構20の容量に達したかどうかを示す容量インジケータ32を含む。この例では、容量インジケータ32は、アドレス記憶回路機構20内の追加のエントリ(具体的には最終エントリ)に記憶される値であり、容量に達するときに所定の値に設定される。例えば、アドレス記憶回路機構20の容量に達するとき(例えば、各エントリ30が監視されるべき有効なアドレスを記憶するとき)、容量インジケータ32は1に設定され得、容量に達していないとき、容量インジケータ32は0に設定され得るか、又はエントリを記憶するために使用され得る。しかしながら、これは使用され得る値の一例に過ぎず、実際には、アドレス記憶回路機構20の容量に達したかどうかを示すために任意の値が使用され得ることが理解されるだろう。容量インジケータ32は、アドレス記憶回路機構の容量に達したかどうかを示す容量インジケータの一例である。
【0075】
図2は、キャッシュ24も示す。キャッシュ24は複数のエントリ34を含み、各エントリは、共用メモリ内のメモリロケーションを表すアドレスフィールド36と、対応するメモリロケーションに記憶されたデータのキャッシュコピーを記憶するデータフィールド38と、を含む。キャッシュ24は必ずしもフルアドレスを記憶する必要はなく、代わりに別の形態でメモリロケーションの指標を記憶し得ることが理解されるだろう。図示されていないが、いくつかの例では、各キャッシュエントリ34はまた、各エントリ34のコヒーレンシ状態を示す1つ以上のコヒーレンシフィールドを含む。
図2の例に示すキャッシュ24は、各セットに4つのウェイを含むセットアソシアティブキャッシュである。ただし、これは一例に過ぎず、任意のタイプのキャッシュ(例えば、フルアソシアティブキャッシュ、又はダイレクトマップキャッシュ、又は他の数のウェイを有するキャッシュ)が使用され得ることが理解されるだろう。各エントリ34はまた、そのキャッシュラインのアドレスフィールドに記憶されたアドレスによって識別されるメモリロケーションが、監視回路機構によって監視されるべき第2のセットのメモリロケーションのうちの1つであるかどうかを示す監視フィールド40(又は監視ビット)を含む。いくつかの例では、監視フィールド40は、所与のエントリにおいて識別されるメモリロケーションが第2のセットのメモリロケーションの一部ではないことを示すために第1の値(例えば、0)に設定されるか、又はメモリロケーションが第2のセットの一部であることを示すために第2の値(例えば、1)に設定される単一のビットを記憶する。このように監視フィールド40を追加することにより、システム内の既存のキャッシュ24(例えば、レベル1データキャッシュ)を、回路面積を大幅に増加させることなく、監視回路機構によって監視される第2のセットのメモリロケーションを示すように適合させることができ、この例では、キャッシュのサイズは、各エントリに対して単一のビットだけ拡張する必要があるだけである。
【0076】
次いで、監視回路機構(図示せず)は、第1のセットのメモリロケーション(アドレス記憶回路機構20に記憶されたアドレスによって識別される)及び第2のセットのメモリロケーション(キャッシュ24内の修正フィールド40によって識別される)の両方を、それらのメモリロケーションに記憶されたデータに対する変化について監視するように構成されている。
【0077】
処理回路機構(CPU4)が、監視されるべき新しいメモリロケーションを識別する監視アドレス命令を実行するときに、
図2に例解される例では、新しいメモリロケーションは「アドレスX」にあり、まずアドレス記憶回路機構20の容量に達したことを容量インジケータ32が示すかどうかをチェックする。アドレス記憶回路機構20の容量に達していないことを容量インジケータ32が示す場合(例えば、容量インジケータ32が0に設定されている場合)、処理回路機構は、アドレス記憶回路機構20の利用可能なエントリ30にアドレス(アドレスX)を記憶することによって、新しいメモリロケーションを第1のセットのメモリロケーションに追加する。一方、アドレス記憶回路機構20の容量に達したことを容量インジケータ32が示す場合、処理回路機構は、代わりに、キャッシュ24内の新しいメモリロケーションを特定し、対応する監視フィールド40を所定の値(例えば、1)に設定することによって、新しいメモリロケーションを第2のセットのメモリロケーションに追加する。
【0078】
このようにして、(容量インジケータ32を提供するためにアドレス記憶回路機構20に単一のエントリを追加し、キャッシュ24内の各エントリに単一のフィールド40を追加する)回路面積のわずかな増加だけで、監視回路機構によって監視され得る非連続メモリロケーションの数を大幅に増加させることができる。
【0079】
本技術を実装するために必要とされる回路面積の増加は、監視フィールド40を提供するためにキャッシュ24内の既存のフィールドを再利用することによって、更に小さくすることができる。例えば、
図3は、1つ以上のトランザクショナルメモリフィールド42、44を含むキャッシュ24を示す。これらのフィールドは、アドレスが、トランザクションの実行中に処理回路機構によって追跡されているアドレスの読み取りセット又は書き込みセットの一部であるかどうかを追跡するために使用される。トランザクションは、処理回路機構によってアトミックに実行される命令のブロックであり、メモリに対する任意の更新(例えば、ストア)は、トランザクション内の他の命令が正常に実行された場合にのみ、トランザクションの終了時にコミットされる。トランザクションの実行中に処理回路機構によってアクセスされるメモリロケーションは、それらがトランザクションの実行中に別のプロセスによってアクセスされたかどうかを判定するように追跡される。この例では、処理回路機構は、トランザクションの一部として読み取りアクセスを受けたメモリロケーションに対応するアドレスの読み取りセットと、トランザクションの完了時に書き込まれるであろうメモリロケーションに対応するアドレスの書み込みセットと、を追跡する。
【0080】
本技術のいくつかの例では、トランザクショナルメモリフィールド42、44のうちの一方又は両方が、監視フィールドとして使用するために再利用され、キャッシュのサイズを増加させることなく、第2のセット内のメモリロケーションがキャッシュ12において識別されることが可能になる。
【0081】
トランザクションの処理に悪影響を及ぼすことが予想されるので、トランザクショナルメモリフィールドをこのように再利用することは直観に反していると考える可能性がある。しかしながら、いくつかの状況ではトランザクションはまれであり、その場合、トランザクショナルメモリフィールド42及び44はあまり使用されない。例えば、処理回路機構が低電力状態にされているときに、処理回路機構はトランザクションを処理せず、したがってトランザクショナルメモリフィールド42、44を利用しないだろう。したがって、フィールドは、この時点で、ほとんど又は全くコストをかけずに再利用され得る。
【0082】
処理回路機構がトランザクションを処理するときに、処理回路機構は、トランザクショナルメモリフィールドの全てをクリアし、共有メモリを連続的にポーリングすることによって、第2のセット内のメモリロケーションの監視をデフォルトにし得る。代替的に、トランザクショナルメモリフィールド42、44のうちの一方のみが第2のセット内のメモリロケーションを示すために使用される場合、処理回路機構は、他方のトランザクショナルメモリフィールドを使用してトランザクションを処理することができる。例えば、読み取りセット内のメモリロケーションがトランザクション中にアクセスされる場合、これはトランザクション中にそのロケーションから読み取られたデータが潜在的に最新でなかったことを示すので、書み込みセットよりも読み取りセットのアドレスを監視することがしばしばより重要である。したがって、いくつかの例では、処理回路機構は、第2のセット内のメモリロケーションを示すために書き込みセットフィールド44を再利用し、読み取りセットフィールド42を使用してトランザクションを処理し続ける。
【0083】
第2のセットのメモリロケーションを識別する更なる記憶回路機構がどのように実装され得るかの別の例は、レジスタを使用することである。
図4は、レジスタ48に記憶されたブルームフィルタ46を使用して第2のセットのメモリロケーションが識別される本技術の一例を示す。
【0084】
ブルームフィルタは、要素(例えば、データ値)がセットの一部である可能性が高いかどうかをテストするために使用され得る確率的データ構造である。典型的には、偽陽性は可能性としてあるが、偽陰性はなく、例えば、ブルームフィルタに対して値をテストすることは、値が確実にセット内にないか、潜在的にセット内にあるかを判定する。この例では、ブルームフィルタ46は、レジスタ48に記憶されたビット配列である。処理回路機構は、複数の異なるハッシュ関数47をデータ値に適用することによって、ブルームフィルタ46によって表される値のセットにデータ値を追加し、その結果は、ビット配列内のビット位置のセットを識別する(例えば、各ハッシュ関数47は、1つ以上のビット位置を識別する)。次いで、処理回路機構は、ハッシュ関数によって識別された各ビット位置を設定値(例えば、1)に設定する。値がブルームフィルタによって識別されたセットの一部である可能性が高いかどうかをチェックするために、処理回路機構は、同じハッシュ関数を値に適用し、ハッシュ関数によって識別されたビットが所定の値に設定されるかどうかをチェックする。
【0085】
図4に示される例では、所与のアドレス(アドレスX)を識別する監視アドレス命令が処理回路機構によって実行されるときに、容量インジケータ32がアドレス記憶回路機構20の容量に達したことを示す場合、処理回路機構は、(例えば、ハッシュ関数47のセットをアドレスに適用し、ハッシュ関数47によって識別されるビットを所定の値に設定することによって)アドレスをレジスタ48に記憶されたブルームフィルタ46にマージする。
【0086】
ブルームフィルタは、空間効率的な記憶構造であり、少量の空間に多数のデータ値を記憶することができる。この例では、監視回路機構によって監視されるべき第2のセットのメモリロケーションは、単一のレジスタ48を使用して示され得る。これにより、回路面積を大幅に増加させることなく、監視回路機構によって監視することができるメモリロケーションの数を大幅に拡張することが可能になる。更に、要素がブルームフィルタによって表される要素のセットの一部であるかどうかをテストするためにかかる時間は、セット内にいくつの要素があっても、一定のままである。したがって、ブルームフィルタ46を使用して第2のセットのアドレスを識別することも、処理時間を節約する。
【0087】
いくつかの例では、レジスタ48は、処理回路機構にアクセス可能な既存のセットのレジスタのうちの1つであり、これは、本技術を実装するために必要とされる回路面積を更に低減する。
【0088】
これまで説明した例では、監視回路機構によって監視される第1のセットのメモリロケーション及び第2のセットのメモリロケーションは、それらの関連付けられたメモリアドレスを使用して識別され、例えば、アドレス記憶回路機構20及びキャッシュ24が、第1及び第2のセットのメモリロケーションのアドレスを記憶し、第2のセットのメモリロケーションのアドレスは、ブルームにマージされた入力値であり、異なるフォーマットで識別される。
【0089】
図5Aは、監視アドレス命令に対する本技術の処理回路機構の応答の一例を例解するフロー図である。
【0090】
この方法は、新しいメモリロケーションが監視回路機構によって監視されるべきかどうかを判定するステップS60から始まる。例えば、処理回路機構は、監視アドレス命令が受信されたかどうかを判定する。処理回路機構は、新しいメモリロケーションが監視されるべきであると判定するときに、アドレス記憶回路機構の容量に達したかどうかを判定する(S62)。例えば、処理回路機構は、容量インジケータが所定の値に設定されているかどうかをチェックする。容量に達している場合、処理回路機構は、ステップS60に戻る前に、上で説明される例に従って、キャッシュ又はブルームフィルタにおいて新しいメモリロケーションを示す(S64)。
【0091】
一方、アドレス記憶回路機構の容量に達していない場合、処理回路機構は、新しいメモリロケーション(例えば、アドレス)の指標をアドレス記憶回路機構に追加する(S66)。次いで、処理回路機構は、新しいメモリロケーションの追加に続いて、アドレス記憶回路機構の容量に達したかどうかをチェックする(S68)。アドレス記憶回路機構の容量に達していない場合、方法はS60に戻る。一方、容量に達した場合、処理回路機構は、ステップS60に戻る前に、アドレス記憶回路機構の容量に達したことを示すように容量インジケータを更新する(S70)。集合的に、ステップS66、S68及びS70は、アドレス記憶回路機構を更新するステップS73を形成する。
【0092】
図5Bは、メモリロケーションの第1のセットのメモリロケーション又は第2のセットのメモリロケーションからメモリロケーションの除去を例解するフロー図である。これは、例えば、もはや監視されるべきでないメモリロケーションを指定する特定の監視終了命令に応答し得る。この例では、第2のセットのメモリアドレスはキャッシュ内に示される。
【0093】
この方法は、メモリロケーションが第1のセットのメモリロケーション又は第2のセットのメモリロケーションから除去されるべきかどうかを判定するステップS61から始まる。メモリロケーションが除去されるべきであると判定されるときに、問題のメモリロケーションが(アドレス記憶回路機構に示される)第1のセットのメモリロケーションにあるか、又は(更なる記憶回路機構に示される)第2のセットのメモリロケーションにあるかが判定される(S63)。メモリロケーションが第1のセットにおいて示されるときに、メモリロケーションはアドレス記憶回路機構から除去される(S67)。次いで、容量インジケータがアドレス記憶構造の容量に達したことを示しているかどうかが判定される(S69)。容量インジケータが容量に達したことを示さない場合、この方法はステップS61に戻る。容量インジケータが容量に達したことを示す場合、容量インジケータは、アドレス記憶回路機構の容量がもはや達していないことを示すように更新され(アドレス記憶回路機構からメモリロケーションの除去に起因して)(S71)、この方法はステップS61に戻る。
【0094】
ステップS63に戻って、メモリロケーションが第1のセット内にない(例えば、第2のセット内にある)と判定された場合、方法がステップS61に戻る前に、除去されるべきメモリロケーションに対応するキャッシュライン内の監視タグがクリアされる(S65)。上記したように、この例は、第2のセットのメモリロケーションがキャッシュ内に示されると仮定する。第2のセットが代わりにブルームフィルタ内に示されている場合、エントリをブルームフィルタから除去することができないので、メモリロケーションが第2のセット内にあると判定されるときに、この方法はステップS61に直接戻る。この場合、メモリロケーションがブルームフィルタに対してテストされるときはいつでも、偽陽性の結果が返されるだろう。
【0095】
図6は、本技術のいくつかの例による処理回路機構によって実行される方法を例解するフロー図である。この方法は、新しいメモリロケーションが監視回路機構によって監視されるべきかどうかを判定するステップS60から始まる。処理回路機構が、監視されるべき新しいメモリロケーションがないと判定する場合(例えば、監視アドレス命令が受信されない場合)、この方法は、イベント待ち(WFE)命令が受信されたかどうかを判定するステップS74に直接進む。
【0096】
一方、処理回路機構が、監視されるべき新しいメモリロケーションがある(例えば、監視アドレス命令が受信された)と判定する場合、処理回路機構は、(例えば、容量インジケータが所定の値を有するかどうかをチェックすることによって)アドレス記憶回路機構の容量に達したかどうかを判定する(S62)。容量に達していない場合、処理回路機構は、ステップS74に進む前に、アドレス記憶回路機構を更新する(S73)。ステップS668、S68、及びS70は
図6及び
図7に明示的に示されていないが、これらのステップは全てステップS73の一部として存在することが理解されるだろう。一方、アドレス記憶回路機構の容量に達している場合、処理回路機構は、代わりに、ステップS74に進む前に、新しいメモリロケーションの指標をブルームフィルタにマージする(S72)。
【0097】
ステップS74では、処理回路機構は、WFE命令が受信されたかどうかを判定する。WFE命令が受信されていない場合、この方法はステップS60に戻る。一方、WFE命令が受信された場合、処理回路機構は、イベント(例えば、監視回路機構によって監視されているメモリロケーションのうちの1つにおけるデータが変化している)がすでに発生しているかどうかを判定する(S76)ことによって、WFE命令を実行する。イベントがすでに発生している場合、この方法はステップS84に移動する。
【0098】
イベントがまだ発生していない場合、処理回路機構は、電力節約モード(例えば、低電力状態又は待機状態)に入る一方で、監視回路機構がメモリロケーションの第1及び第2のセットを監視し続ける(S78)。処理回路機構は、イベント通知が受信されたと判定する(S80)まで、電力節約モードのままである。この例におけるイベント通知は、例えば、別の処理回路機構からのメッセージがメモリロケーションに書き込まれたことを意味し得る、監視回路機構によって監視されているメモリロケーションのうちの1つにおけるデータが修正されたという、監視回路機構によって生成される指標を含む。処理回路機構は、イベント通知が受信されるまで、ステップS78及びS80を繰り返す。
【0099】
イベント通知が受信されたときに、処理回路機構は、電力節約状態を出る(S82)。ステップS84では、次いで、処理回路機構は、もしあれば、どのメモリ領域が修正されたかを識別する。処理回路機構は、いずれかのメモリ領域が修正されたかどうかを判定し(S86)、領域が修正されていない場合、ステップS74に戻る。一方、1つ以上のメモリ領域が変化した場合、処理回路機構は、変化したメモリロケーションのアドレスを、処理回路機構によって処理されるアドレスのログに追加する(S88)。
【0100】
図7は、処理回路機構によって実行される代替的な方法を例解するフロー図である。
図7の方法は、処理回路機構が記憶回路機構の容量に達したと判定するときに(S62)、処理回路機構がキャッシュ内で監視されるものとしてメモリロケーションにタグ付けする(S94)(例えば、キャッシュ内の監視フィールドを所定の値に設定することによって)ことを除いて、
図6の方法と同一である。任意選択的に、破線で示されるように、処理回路機構は、最初に、メモリロケーションがキャッシュに記録されているかどうかをチェックし(S90)、記録されていない場合、通常のキャッシュ追い出しポリシーに従ってキャッシュ内のエントリを置き換える(S92)ことができる。しかしながら、メモリロケーションがキャッシュ内に存在することが予想されるので、これらのステップは、任意選択的であり、処理回路機構は、監視アドレス命令の受信に応答してメモリロケーションにアクセスした可能性が高く、その時点でメモリロケーションがキャッシュに追加される。したがって、これらのステップは、命令によって指定されたアドレスをキャッシュに自動的に追加するシステムに含まれる必要はない。
【0101】
図8は、本技術のシミュレータ実装形態を例解する。先で説明される実施形態は、当該技術をサポートする特定の処理ハードウェアを動作させる装置及び方法の点において本発明を実装するが、コンピュータプログラムの使用を通して実装される本明細書において説明される実施形態による命令実行環境を提供することも可能である。このようなコンピュータプログラムは、コンピュータプログラムがハードウェアアーキテクチャのソフトウェアベースの実装形態を提供する限り、シミュレータとしばしば称される。様々なシミュレータコンピュータプログラムは、エミュレータ、仮想マシン、モデル、及び動的バイナリトランスレータを含むバイナリトランスレータを含む。典型的に、シミュレータ実装形態は、シミュレータプログラム104をサポートするホストオペレーティングシステム102を任意選択的に実行して、ホストプロセッサ100で実行される。いくつかの構成では、ハードウェアと提供された命令実行環境との間に、複数の層のシミュレーションがあり、及び/又は同じホストプロセッサ上に提供された複数の異なる命令実行環境がある。歴史的に、強力なプロセッサが、合理的な速度で実行されるシミュレータ実装形態を提供するために必要とされてきたが、そのような手法は、ある状況において、互換性又は再使用の理由から別のプロセッサにネイティブなコードを実行することが望まれるようなときに、正当化される。例えば、シミュレータ実装形態は、ホストプロセッサハードウェアによってサポートされていない追加の機能を有する命令実行環境を提供することができ、又は典型的には異なるハードウェアアーキテクチャに関連付けられた命令実行環境を提供することができる。シミュレーションの概要は、「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、1990年冬USENIX Conference、53~63頁に記載されている。
【0102】
これまで、特定のハードウェア構成物又は機能を参照して実施形態を説明してきたが、シミュレーションされた実施形態では、好適なソフトウェア構成物又は機能によって同等の機能が提供される。例えば、特定の回路機構が、シミュレーションされた実施形態で、コンピュータプログラム論理として実装され得る。同様に、レジスタ又はキャッシュなどのメモリハードウェアが、シミュレーションされた実施形態で、ソフトウェアのデータ構造として実装され得る。
図8の例では、これらは、上記の例で説明したアドレス記憶回路機構を表す(エミュレートする)データ構造(ホスト装置100のメモリ又はレジスタ内)を維持するアドレス記憶プログラム論理108と、上記の例で説明したような容量インジケータを維持する容量指標プログラム110論理と、上記の例で説明した監視回路機構をエミュレートする監視プログラム論理112と、上で説明した処理回路機構の命令デコーダをエミュレートする命令復号プログラム論理114と、を含む。以前に説明される実施形態で参照されているハードウェア要素のうちの1つ以上がホストハードウェア(例えば、ホストプロセッサ100)に存在する構成では、いくつかのシミュレーションされた実施形態は、好適な場合、ホストハードウェアを使用することができる。例えば、ホストプロセッサ130は、
図1のキャッシュ12及び13並びに/又は
図2及び
図3のキャッシュ24の機能を実行するキャッシュをハードウェア内に含み得る。シミュレータコード104はまた、システム2のレジスタを表すデータ構造(ホスト装置100のメモリ又はレジスタ内)を維持するレジスタエミュレーション論理(図示せず)を含むことができる。いくつかの例では、これは、上記のいくつかの例で説明されたブルームフィルタ46を記憶するレジスタ48を含む。
【0103】
ターゲットコード106の監視アドレス命令に応答して、命令復号プログラム論理114は、監視アドレス命令を命令セット内の命令のセットにマッピングして、容量指標プログラム論理110によってエミュレートされた容量インジケータをチェックして、エミュレートされたアドレス記憶回路機構の容量に達したかどうかを判定する。容量に達していないときに、監視アドレス命令によって指定された新しいメモリロケーションの指標が、アドレス記憶プログラム論理108によって維持されるデータ構造に追加されるが、容量に達している場合、新しいメモリロケーションは、キャッシュ(例えば、ホストハードウェア100のキャッシュ、又はメモリ内若しくはホストプロセッサ100のレジスタ内に維持されるデータ構造)内、又はレジスタエミュレーション論理によって維持されるデータ構造に記憶されるブルームフィルタ内に示される。
【0104】
いくつかの例では、シミュレータプログラム104は、コンピュータ可読記憶媒体(例えば、非一時的記憶媒体)に記憶され、(アプリケーション、オペレーティングシステム、及びハイパーバイザを含み得る)ターゲットコード106にプログラムインタフェース(命令実行環境)を提供し、これは、シミュレータプログラム104によってモデル化されたハードウェアアーキテクチャのインタフェースと同じである。したがって、上で説明される監視アドレス命令及びWFE命令を含むターゲットコード106のプログラム命令は、シミュレータプログラム102を使用する命令実行環境内から実行することができ、それによって、上で考察される装置2のハードウェア機能を実際には有していないホストコンピュータ100は、これらの機能をエミュレートすることができる。
【0105】
本出願において、「~ように構成された(configured to...)」という用語は、装置の要素が、定義された動作を実施することが可能である構成を有することを意味するために使用される。この文脈において、「構成」とは、ハードウェア又はソフトウェアの構成又は相互接続の方法を意味する。例えば、装置は、定義された動作を提供する専用ハードウェアを有し得るか、又はプロセッサ若しくは他の処理デバイスが、動作を実行するようにプログラムされ得る。「ように構成された」は、装置要素が、定義された動作を提供するために何らかの変更がなされる必要があることを意味しない。
【0106】
本発明の例解的な実施形態が添付の図面を参照して本明細書で詳細に説明されているが、本発明はこれらの精密な実施形態に限定されず、様々な変更及び修正が、添付の特許請求の範囲によって定義された本発明の範囲及び趣旨から逸脱することなく、当業者によってこれらの実施形態においてなされ得ることを理解されたい。
【国際調査報告】