(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-08-08
(54)【発明の名称】ラテラル持続化ディレクトリ状態
(51)【国際特許分類】
G06F 12/121 20160101AFI20240801BHJP
G06F 12/123 20160101ALI20240801BHJP
G06F 12/0806 20160101ALI20240801BHJP
【FI】
G06F12/121 100
G06F12/123
G06F12/0806 100
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024505585
(86)(22)【出願日】2022-08-03
(85)【翻訳文提出日】2024-01-30
(86)【国際出願番号】 EP2022071789
(87)【国際公開番号】W WO2023020839
(87)【国際公開日】2023-02-23
(32)【優先日】2021-08-20
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】バンダムラヴリ、ラム サイ マノジュ
(72)【発明者】
【氏名】ウォルタース、クレイグ
(72)【発明者】
【氏名】ジャコビ、クリスチャン
(72)【発明者】
【氏名】ブロンソン、ティモシー
(72)【発明者】
【氏名】アレクサンダー、グレゴリー、ウィリアム
(72)【発明者】
【氏名】フイン、ヒュー
(72)【発明者】
【氏名】ソネリッター、ロバート
(72)【発明者】
【氏名】コール、ジェイソン
(72)【発明者】
【氏名】バーガー、ディアナ
(72)【発明者】
【氏名】ブランシフォルテ、リチャード、ジョセフ
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205KK14
5B205MM03
5B205QQ02
5B205UU32
(57)【要約】
コンピュータ実行方法は、複数のキャッシュを有する1つまたは複数のプロセッサ・ユニットを定義することであって、各プロセッサ・ユニットが、少なくとも1つのキャッシュを有するプロセッサを備え、1つまたは複数のプロセッサ・ユニットのそれぞれが、相互接続ファブリックによって一緒に連結される、定義することと、複数のキャッシュのそれぞれに対して、複数のキャッシュ・ラインを1つまたは複数の一致クラスに配置することであって、各一致クラスが、クロノロジ・ベクトルを含む、配置することと、複数のスコープ・ドメインに基づいて、複数のキャッシュにおける各キャッシュをキャッシュのクラスタに配置することと、クロノロジ・ベクトルに基づいて、立ち退かせることになる第1のキャッシュ・ラインを決定することと、第1のキャッシュ・ラインのスコープ、およびターゲット・キャッシュに関連付けられた飽和メトリックに基づいて、第1のキャッシュ・ラインをインストールするためのターゲット・キャッシュを決定することであって、第1のキャッシュ・ラインのスコープが、ラテラル持続化タグ・ビットに基づいて決定される、決定することとを含む。
【特許請求の範囲】
【請求項1】
コンピュータ実行方法であって、
複数のキャッシュを有する1つまたは複数のプロセッサ・ユニットを定義することであって、各プロセッサ・ユニットが、前記複数のキャッシュからの少なくとも1つのキャッシュを有するプロセッサを備え、前記1つまたは複数のプロセッサ・ユニットのそれぞれが、相互接続ファブリックによって一緒に連結される、前記定義することと、
前記複数のキャッシュのそれぞれに対して、複数のキャッシュ・ラインを1つまたは複数の一致クラスに配置することであって、前記1つまたは複数の一致クラスにおける各一致クラスが、クロノロジ・ベクトルを含む、前記配置することと、
複数のスコープ・ドメインに基づいて、前記複数のキャッシュにおける各キャッシュをキャッシュのクラスタに配置することと、
第1のキャッシュ・ラインの前記クロノロジ・ベクトルに基づいて、立ち退かせることになる前記第1のキャッシュ・ラインを決定することと、
前記第1のキャッシュ・ラインをインストールするためのターゲット・キャッシュを、前記第1のキャッシュ・ラインのスコープおよび前記ターゲット・キャッシュに関連付けられた飽和メトリックに基づいて決定することであって、前記第1のキャッシュ・ラインの前記スコープが、ラテラル持続化タグ・ビットに基づいて決定される、前記決定することと
を含む、コンピュータ実行方法。
【請求項2】
前記第1のキャッシュ・ラインを前記ターゲット・キャッシュに書き込むことと、前記第1のキャッシュ・ライン用の前記ラテラル持続化タグ・ビットをインクリメントすることとをさらに含む、請求項1に記載の方法。
【請求項3】
前記第1のキャッシュ・ラインを前記ターゲット・キャッシュに書き込むことが、
前記ターゲット・キャッシュから立ち退かせることになる第2のキャッシュ・ラインを選択することと、
前記第2のキャッシュ・ライン用の第2のスコープを決定することと、
前記第2のスコープに基づいて、前記第2のキャッシュ・ライン用の立ち退きロケーションを決定することであって、前記立ち退きロケーションが、ラテラル・キャッシュおよびメイン・メモリのうちの少なくとも1つを含む、前記決定することと
を含む、請求項2に記載の方法。
【請求項4】
前記第1のキャッシュ・ラインを前記ターゲット・キャッシュに書き込むことが、
1つまたは複数のキャッシュ・インストール位置を含むキャッシュ置換ポリシを決定することと、
前記ターゲット・キャッシュのために前記第1のキャッシュ・ライン用のスコープを決定することであって、前記スコープが、前記第1のキャッシュ・ラインをインストールしたいというリクエストのオリジネータを決定し、前記オリジネータが、前記ターゲット・キャッシュにローカルなプロセッサ、およびラテラル・キャッシュのうちの少なくとも1つを含む、前記決定することと、
前記ターゲット・キャッシュにローカルな前記プロセッサによってインストールされたキャッシュ・ラインのパーセンテージ、およびラテラル・キャッシュによってインストールされたキャッシュ・ラインのパーセンテージに基づいて、前記第1のキャッシュ・ラインのインストール位置を決定することと
を含む、請求項2に記載の方法。
【請求項5】
前記1つまたは複数のキャッシュ・インストール位置が、最も新しく使用された(MRU)位置、中間の最も長い間使用されていない(mid-LRU)位置、および最も長い間使用されていない(LRU)位置を含む、請求項4に記載の方法。
【請求項6】
前記第1のキャッシュ・ラインをインストールするための前記ターゲット・キャッシュを決定することが、
前記第1のキャッシュ・ラインの前記スコープに基づいて、キャッシュのターゲット・クラスタを決定することと、
キャッシュの前記ターゲット・クラスタから前記ターゲット・キャッシュを選択することと
を含む、請求項1に記載の方法。
【請求項7】
前記第1のキャッシュ・ラインの前記スコープ、および前記ターゲット・キャッシュに関連付けられた飽和メトリックに基づいて、キャッシュの前記ターゲット・クラスタを決定することが、
キャッシュのクラスタ毎にスコープ・ドメインを決定することと、
前記第1のキャッシュ・ラインの前記スコープより高い前記ターゲット・クラスタのスコープ・ドメインに基づいて、キャッシュの前記ターゲット・クラスタを選択することと
を含む、請求項6に記載の方法。
【請求項8】
前記第1のキャッシュ・ラインの前記スコープ、および前記ターゲット・キャッシュに関連付けられた飽和メトリックに基づいて、キャッシュの前記ターゲット・クラスタを決定することが、
キャッシュのクラスタ毎の組み合わされた飽和メトリックを分析することであって、前記組み合わされた飽和メトリックが、キャッシュのクラスタ内のキャッシュ毎に組み合わされた前記飽和メトリックを含む、前記分析することと、
キャッシュの各クラスタの中の最低の組み合わされた飽和メトリックである前記ターゲット・クラスタについての前記組み合わされた飽和メトリックに基づいて、キャッシュの前記ターゲット・クラスタを選択することと
を含む、請求項6に記載の方法。
【請求項9】
キャッシュの前記ターゲット・クラスタから前記ターゲット・キャッシュを選択することが、
キャッシュの前記ターゲット・クラスタ内の各キャッシュの飽和メトリックを分析することと、
キャッシュの前記ターゲット・クラスタ内の各キャッシュの中の最低の飽和メトリックである前記ターゲット・キャッシュについての前記飽和メトリックに基づいて前記ターゲット・キャッシュを選択することと
を含む、請求項6に記載の方法。
【請求項10】
前記飽和メトリックが、プロセッサ・ミスによって定義されたインストールの数、およびラテラル・キャッシュからのキャッシュにおけるインストールの数のうちの少なくとも1つを含む、請求項1に記載の方法。
【請求項11】
システムであって、
複数のキャッシュを有する1つまたは複数のプロセッサ・ユニットであって、各プロセッサ・ユニットが、前記複数のキャッシュからの少なくとも1つのキャッシュを有するプロセッサを備え、前記1つまたは複数のプロセッサ・ユニットのそれぞれが、相互接続ファブリックによって一緒に連結された、前記プロセッサ・ユニットと、
前記複数のキャッシュのそれぞれに対して、複数のキャッシュ・ラインを1つまたは複数の一致クラスに配置することであって、前記1つまたは複数の一致クラスにおける各一致クラスが、クロノロジ・ベクトルを含む、前記配置すること、
複数のスコープ・ドメインに基づいて、前記複数のキャッシュにおける各キャッシュをキャッシュのクラスタに配置すること、
前記キャッシュ・ラインの前記クロノロジ・ベクトルに基づいて、立ち退かせることになる第1のキャッシュ・ラインを決定すること、
前記第1のキャッシュ・ラインをインストールするためのターゲット・キャッシュを、前記第1のキャッシュ・ラインのスコープおよび前記ターゲット・キャッシュに関連付けられた飽和メトリックに基づいて決定することであって、前記第1のキャッシュ・ラインの前記スコープが、ラテラル持続化タグ・ビットに基づいて決定される、前記決定すること
を実施するように構成された、キャッシュ・コントローラとを備える、システム。
【請求項12】
前記キャッシュ・コントローラが、前記第1のキャッシュ・ラインを前記ターゲット・キャッシュに書き込むことと、前記第1のキャッシュ・ライン用の前記第1のラテラル持続化ビット・タグをインクリメントすることとを実施するようにさらに構成される、請求項11に記載のシステム。
【請求項13】
前記第1のキャッシュ・ラインを前記ターゲット・キャッシュに書き込むことが、
前記ターゲット・キャッシュから立ち退かせることになる第2のキャッシュ・ラインを選択することと、
前記第2のキャッシュ・ライン用の第2のスコープを決定することと、
前記第2のスコープに基づいて、前記第2のキャッシュ・ライン用の立ち退きロケーションを決定することであって、前記立ち退きロケーションが、ラテラル・キャッシュおよびメイン・メモリのうちの少なくとも1つを含む、前記決定することと
を含む、請求項12に記載のシステム。
【請求項14】
前記第1のキャッシュ・ラインを前記ターゲット・キャッシュに書き込むことが、
1つまたは複数のキャッシュ・インストール位置を含むキャッシュ置換ポリシを決定することと、
前記第1のキャッシュ・ラインを前記ターゲット・キャッシュにインストールしたいというリクエストのオリジネータを決定することであって、前記オリジネータが、前記ターゲット・キャッシュにローカルなプロセッサ、およびラテラル・キャッシュのうちの少なくとも1つを含む、前記決定することと、
前記ターゲット・キャッシュにローカルな前記プロセッサによってインストールされたキャッシュ・ラインのパーセンテージ、およびラテラル・キャッシュによってインストールされたキャッシュ・ラインのパーセンテージに基づいて、前記第1のキャッシュ・ラインのインストール位置を決定することと
を含む、請求項12に記載のシステム。
【請求項15】
前記第1のキャッシュ・ラインをインストールするための前記ターゲット・キャッシュを決定することが、
前記第1のキャッシュ・ラインの前記スコープに基づいて、キャッシュのターゲット・クラスタを決定することと、
キャッシュの前記ターゲット・クラスタから前記ターゲット・キャッシュを選択することと
を含む、請求項11に記載のシステム。
【請求項16】
プログラム命令を具体化したコンピュータ可読ストレージ媒体を備えるコンピュータ・プログラム製品であって、前記プログラム命令が、
複数のキャッシュを有する1つまたは複数のプロセッサ・ユニットを定義することであって、各プロセッサ・ユニットが、前記複数のキャッシュからの少なくとも1つのキャッシュを有するプロセッサを備え、前記1つまたは複数のプロセッサ・ユニットのそれぞれが、相互接続ファブリックによって一緒に連結される、前記定義することと、
前記複数のキャッシュのそれぞれに対して、複数のキャッシュ・ラインを1つまたは複数の一致クラスに配置することであって、前記1つまたは複数の一致クラスにおける各一致クラスが、クロノロジ・ベクトルを含む、前記配置することと、
複数のスコープ・ドメインに基づいて、前記複数のキャッシュにおける各キャッシュをキャッシュのクラスタに配置することと、
立ち退かせることになる第1のキャッシュ・ラインを、前記第1のキャッシュ・ラインの前記クロノロジ・ベクトルに基づいて、決定することと、
前記第1のキャッシュ・ラインをインストールするためのターゲット・キャッシュを、前記第1のキャッシュ・ラインのスコープおよび前記ターゲット・キャッシュに関連付けられた飽和メトリックに基づいて決定することであって、前記第1のキャッシュ・ラインの前記スコープが、ラテラル持続化タグ・ビットに基づいて決定される、前記決定することと
を含む動作を1つまたは複数のプロセッサに実施させるように前記1つまたは複数のプロセッサによって実行可能な、コンピュータ・プログラム製品。
【請求項17】
前記第1のキャッシュ・ラインを前記ターゲット・キャッシュに書き込むことと、前記第1のキャッシュ・ライン用の前記第1のラテラル持続化ビットのビットをインクリメントすることとをさらに含む、請求項16に記載のコンピュータ・プログラム製品。
【請求項18】
前記第1のキャッシュ・ラインを前記ターゲット・キャッシュに書き込むことが、
前記ターゲット・キャッシュから立ち退かせることになる第2のキャッシュ・ラインを選択することと、
前記第2のキャッシュ・ライン用の第2のスコープを決定することと、
前記第2のスコープに基づいて、前記第2のキャッシュ・ライン用の立ち退きロケーションを決定することであって、前記立ち退きロケーションが、ラテラル・キャッシュおよびメイン・メモリのうちの少なくとも1つを含む、前記決定することと
を含む、請求項17に記載のコンピュータ・プログラム製品。
【請求項19】
前記第1のキャッシュ・ラインを前記ターゲット・キャッシュに書き込むことが、
1つまたは複数のキャッシュ・インストール位置を含むキャッシュ置換ポリシを決定することと、
前記第1のキャッシュ・ラインを前記ターゲット・キャッシュにインストールしたいというリクエストのオリジネータを決定することであって、前記オリジネータが、前記ターゲット・キャッシュにローカルなプロセッサ、およびラテラル・キャッシュのうちの少なくとも1つを含む、前記決定することと、
前記ターゲット・キャッシュにローカルな前記プロセッサによってインストールされたキャッシュ・ラインのパーセンテージ、およびラテラル・キャッシュによってインストールされたキャッシュ・ラインのパーセンテージに基づいて、前記第1のキャッシュ・ラインのインストール位置を決定することと
を含む、請求項17に記載のコンピュータ・プログラム製品。
【請求項20】
コンピュータ実行方法であって、
処理ドロワー内の複数のマイクロプロセッサ・チップにおける第1のマイクロプロセッサ・チップ上の第1のキャッシュから、第1のキャッシュ・ラインを立ち退かせたいというリクエストを受け取ることであって、前記第1のキャッシュ・ラインが、前記第1のキャッシュ・ライン用のスコープを追跡するラテラル持続化ビットの第1のセットを有する、前記受け取ることと、
前記第1のキャッシュ・ラインの前記スコープを決定することと、
飽和メトリックを有するターゲット・キャッシュを識別することであって、前記ターゲット・キャッシュが、前記第1のキャッシュ・ラインの前記スコープより高いスコープを有する、前記識別することと、
前記ターゲット・キャッシュの前記飽和メトリック、および前記第1のキャッシュ・ラインの前記スコープに基づいて、前記第1のキャッシュ・ラインのためのアクションを決定することと
を含む、コンピュータ実行方法。
【請求項21】
前記アクションが、前記第1のキャッシュ・ラインを前記ターゲット・キャッシュに書き込むことと、ラテラル持続化ビットの前記第1のセットをインクリメントすることとを含む、請求項20に記載の方法。
【請求項22】
前記アクションが、前記ターゲット・キャッシュに関して前記第1のキャッシュ・ラインを拒絶することを含む、請求項20に記載の方法。
【請求項23】
プログラム命令を具体化したコンピュータ可読ストレージ媒体を備えるコンピュータ・プログラム製品であって、前記プログラム命令が、
処理ドロワー内の複数のマイクロプロセッサ・チップにおける第1のマイクロプロセッサ・チップ上の第1のキャッシュから、第1のキャッシュ・ラインを立ち退かせたいというリクエストを受け取ることであって、前記第1のキャッシュ・ラインが、前記第1のキャッシュ・ライン用のスコープを追跡するラテラル持続化ビットの第1のセットを有する、前記受け取ることと、
飽和メトリックを有するターゲット・キャッシュを識別することと、
前記第1のキャッシュ・ラインの前記スコープを決定することと、
前記ターゲット・キャッシュの前記飽和メトリック、および前記第1のキャッシュ・ラインの前記スコープに基づいて、前記第1のキャッシュ・ラインのためのアクションを決定することと
を含む動作を1つまたは複数のプロセッサに実施させるように前記1つまたは複数のプロセッサによって実行可能な、コンピュータ・プログラム製品。
【請求項24】
前記アクションが、前記第1のキャッシュ・ラインを前記ターゲット・キャッシュに書き込むことと、ラテラル持続化ビットの前記第1のセットをインクリメントすることとを含む、請求項23に記載のコンピュータ・プログラム製品。
【請求項25】
前記アクションが、前記ターゲット・キャッシュに関して前記第1のキャッシュ・ラインを拒絶することを含む、請求項23に記載のコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は一般にデータ処理に関し、より詳細には、対称型マルチプロセッシング・コンピュータにおけるラテラル持続化ディレクトリ(lateral persistence directory)状態に関する。
【背景技術】
【0002】
現代の高性能コンピュータ・システムは、典型的には、多くの計算ノードを伴うマルチノードの対称型マルチプロセッシング(「SMP」:symmetric multiprocessing)コンピュータとして実行される。SMPは、マルチプロセッサ・コンピュータ・ハードウェア・アーキテクチャであり、2つ以上の、典型的にはさらに多くの、同一のプロセッサが、単一の共有メイン・メモリに接続され、単一のオペレーティング・システムによって制御される。今日、ほとんどのマルチプロセッサ・システムが、SMPアーキテクチャを使用している。マルチコア・プロセッサの場合、SMPアーキテクチャはコアに適用され、コアを別個のプロセッサとして扱う。プロセッサは、バス、クロスバー・スイッチ、メッシュ・ネットワーク、および同様のものを使用して相互接続されてもよい。各計算ノードは、典型的には、いくつかのプロセッサを含み、プロセッサのそれぞれは、少なくともいくつかのローカル・メモリを有してもよく、ローカル・メモリのうちの少なくともいくつかは、キャッシュ・メモリで加速される。キャッシュ・メモリは、各プロセッサにローカルであること、2つ以上のプロセッサにまたがって共有される計算ノードにローカルであること、またはノード全体に共有されることが可能である。
【発明の概要】
【0003】
本発明の態様は、ラテラル・キャッシュ持続化のための方法を対象とする。1つの態様では、コンピュータ実行方法は、複数のキャッシュを有する1つまたは複数のプロセッサ・ユニットを定義することであって、各プロセッサ・ユニットが、複数のキャッシュからの少なくとも1つのキャッシュを有するプロセッサを備え、1つまたは複数のプロセッサ・ユニットのそれぞれが、相互接続ファブリックによって一緒に連結される、定義することと、複数のキャッシュのそれぞれに対して、複数のキャッシュ・ラインを1つまたは複数の一致クラス(congruence class)に配置することであって、1つまたは複数の一致クラスにおける各一致クラスが、クロノロジ・ベクトルを含む、配置することと、複数のスコープ・ドメインに基づいて、複数のキャッシュにおける各キャッシュをキャッシュのクラスタに配置することと、第1のキャッシュ・ラインのクロノロジ・ベクトルに基づいて、立ち退かせることになる第1のキャッシュ・ラインを決定することと、第1のキャッシュ・ラインのスコープ、およびターゲット・キャッシュに関連付けられた飽和メトリック(saturation metric)に基づいて、第1のキャッシュ・ラインをインストールするためのターゲット・キャッシュを決定することであって、第1のキャッシュ・ラインのスコープが、ラテラル持続化タグ・ビット(複数)に基づいて決定される、決定することとを含む。
【0004】
別の態様では、コンピュータ実行方法は、処理ドロワー内の複数のマイクロプロセッサ・チップにおける第1のマイクロプロセッサ・チップ上の第1のキャッシュから、第1のキャッシュ・ラインを立ち退かせたいというリクエストを受け取ることであって、第1のキャッシュ・ラインが、第1のキャッシュ・ライン用のスコープを追跡するラテラル持続化ビット(複数)の第1のセットを有する、受け取ることと、第1のキャッシュ・ラインのスコープを決定することと、飽和メトリックを有するターゲット・キャッシュを識別することであって、ターゲット・キャッシュが、第1のキャッシュ・ラインのスコープより高いスコープを有する、識別することと、ターゲット・キャッシュのための飽和メトリック、および第1のキャッシュ・ラインのスコープに基づいて、第1のキャッシュ・ラインのためのアクションを決定することとを含む。
【0005】
本発明の他の態様は、コンピュータ・システムおよびコンピュータ・プログラム製品で上述の方法の特徴を実施する。
【0006】
本発明の技術を通じて、追加の技術的特徴および利益が実現される。本発明の実施形態および態様が本明細書で詳細に説明され、特許請求される主題の一部とみなされる。より良く理解するために、詳細な説明および図面を参照する。
【0007】
本明細書に記載の排他的権利の詳細は、本明細書の結論における特許請求の範囲において具体的に指摘され、明確に特許請求される。本発明の実施形態の前述および他の特徴および利点は、添付の図面と併用して行われる以下の詳細な説明から明らかである。
【図面の簡単な説明】
【0008】
【
図1】本発明の1つまたは複数の実施形態による、キャッシュ持続化を利用する分散型対称型マルチプロセッシング(SMP:symmetric multiprocessing)システムのブロック図である。
【
図2】本発明の1つまたは複数の実施形態による、例示的なターゲット・キャッシュのブロック図である。
【
図3】本発明の1つまたは複数の実施形態による、ラテラル・キャッシュ持続化のための方法の流れ図である。
【
図4】本発明の1つまたは複数の実施形態による、ラテラル・キャッシュ持続化のための方法の流れ図である。
【
図5】本発明の1つまたは複数の実施形態による、ラテラル・キャッシュ持続化のための方法の流れ図である。
【
図6】本発明の1つまたは複数の実施形態による、コンピュータ・システムのブロック図である。
【発明を実施するための形態】
【0009】
本明細書に描写された図は例示である。本発明の範囲から逸脱しない、記載の図または動作に対する多くの変形形態が可能である。例えば、アクションは、異なる順序で実施可能であり、またはアクションは、追加、削除、もしくは修正可能である。また、用語「連結される」およびその変形形態は、2つの要素間に通信経路があることを表し、要素間に介在する要素/接続がない要素間の直接的な接続を示唆しない。これらの変形形態の全ては、本明細書の一部であるとみなされる。
【0010】
本発明の1つまたは複数の実施形態は、SMP環境におけるメモリ・アクセスを低減させるためのシステムおよび方法を提供する。伝統的に、メモリ・アクセスの低減は、Nレベルの垂直キャッシュ階層内で大きいキャッシュが、より小さいキャッシュをバックアップすることを利用して対処される。これは、特定のキャッシュ・レベルでは、キャッシュ全てが同じ割合で利用されるわけではないので、欠点を含んでいる。全てのキャッシュが同じ割合で利用されるわけではないので、これは、任意の利用率の低いキャッシュ空間を使用する機会を開く。
【0011】
本発明の1つまたは複数の実施形態では、SMP環境において、態様は、ピア・ラテラル・キャッシュからのキャッシュの立ち退きを存続させるために使用可能なラテラル・キャッシュを定義することを含む。これらのピア・ラテラル・キャッシュは、キャッシュのクラスタに分割可能であり、各クラスタは、持続化のスコープを表す。立ち退かされたキャッシュ・ラインは、まず、次の持続化のスコープでピア・キャッシュのクラスタ内に持続することを許可される。次いで、キャッシュ・ラインがクラスタから立ち退かされ続けると同時に、他のクラスタは、立ち退かされたキャッシュ・ラインが最後のクラスタに達し、メイン・メモリに立ち退かされることが可能になるまで、キャッシュ・ラインの格納のために利用可能である。ラテラル持続化タグ・ビット(複数)は、キャッシュ・ライン毎にキャッシュ持続化のスコープを追跡するために利用可能である。キャッシュ・フェッチ・ミスの場合、キャッシュ・ラインが、システム・キャッシュに初めてインストールされたとき、ラテラル持続化ディレクトリ・タグが0にセットされる。キャッシュ・ラインが、クラスタ内のラテラル・キャッシュに、またはキャッシュの他のクラスタにインストールされると同時に、上記ディレクトリ・タグがインクリメントされ、ターゲット・キャッシュが属するこの対応する持続化のスコープにセットされる。どのレベル・スコープでキャッシュ・ラインが立ち退かされるべきかを決定するために、置換アルゴリズム/ポリシが実施される。ターゲット・キャッシュは、スコープ・レベル内で識別し、適応性のあるLRU(最も長い間使用されていない:least recently used)置換ポリシが、次いで、ターゲット・キャッシュの一致クラスにおけるキャッシュ・ラインをどこにインストールするべきかを決定する。
【0012】
図1は、1つまたは複数の実施形態による、分散型対称型マルチプロセッシング(SMP)システム100(以後「システム100」)を描写している。システム100は、4つの処理単位、すなわち「ドロワー」を含むことができる。各ドロワー240-0、240-1、240-2、240-3は、8つの(8)マイクロプロセッサ(CP)チップ(202-0~202-7)を含む。各CPチップは、8つの(8)コア204-0~204-7を含むことができる。CPチップ内の各コアは、プライベートL1キャッシュ206-0~206-7(命令キャッシュおよびデータ・キャッシュ両方を含む)を含む。これらのプライベートL1キャッシュは、セミプライベートL2キャッシュ208-0~208-7によって支援される。本発明の1つまたは複数の実施形態では、セミプライベートL2キャッシュ208は、オンチップの仮想L3キャッシュを提供するために、相互作用することが可能である。各プロセッサ・ドロワー240は、仮想L4キャッシュを提供する完全接続トポロジを有する8つまでのCPチップ202を含む。仮想L3および仮想L4キャッシュは、チップ202内およびドロワー240内の独立した物理的なL2キャッシュ208をクラスタ化するチップ・キャッシング技術のセットを通じて、統合型共有ビクティム・キャッシュとして機能するように実現可能である。
【0013】
本発明の1つまたは複数の実施形態では、仮想L3/L4キャッシュは、CPチップ内のL2キャッシュのグループ/クラスタ、CPチップのグループ、またはピア・キャッシュからキャッシュ・ラインを立ち退かせるためのドロワー、あるいはその組合せを定義することによって実装される。つまり、キャッシュ・ラインは、本明細書に記載の規定の置換ポリシに従って、L2キャッシュの定義されたグループ/クラスタ内のピアL2に第1のL2から立ち退かされる。
【0014】
本発明の1つまたは複数の実施形態では、ピアのL2キャッシュ(「ラテラル・キャッシュ」と呼ばれることもある)は、1次、2次、および3次と呼ばれるキャッシュのクラスタ214に分割可能であり、これらは、無限数の一意のスコープに拡張可能である。キャッシュ・ラインがL2キャッシュから立ち退かされたとき、この立ち退かされたキャッシュ・ラインは、最後のキャッシュのクラスタに達するまでクラスタを次々通って、キャッシュのクラスタ214内に持続することを可能にされる。1つまたは複数の実施形態では、持続化のスコープを識別するために、ラテラル持続化(LP:lateral persistence)タグ・ビット(複数)が利用可能である。つまり、タグ・ビットは、現在の持続化のスコープが何であるか、および、メモリに立ち退かされるか、プロセッサ・キャッシュによって再び参照される前に、どれだけ多くのスコープをキャッシュ・ラインがホップ可能であるかを表すことができる。フェッチ・ミスの場合、キャッシュ・ラインが、システム・キャッシュに初めてインストールされたとき、LPタグ・ビットは、0にセットされることが可能である。また、同じキャッシュ・ラインがキャッシュから立ち退かされたとき、キャッシュ・ラインは、それぞれの持続化のスコープにセットされたラテラル持続化タグ・ビット内の、次の持続化のスコープ(例えば、1次、2次、または3次)内の他のキャッシュのいずれかにおいて持続される。
【0015】
本発明の1つまたは複数の実施形態では、各ドロワー240は、クラスタ214内のキャッシュから立ち退かされたときにキャッシュ・ラインを持続させるために利用される1つまたは複数のキャッシュ・クラスタ214を含む。例示的な例は、キャッシュ・クラスタ214の1つの構成を示しているが、1つまたは複数の実施形態では、クラスタ214は、グループ/クラスタ内のドロワーL2キャッシュにまたがって含む任意のタイプの構成の任意の数のL2キャッシュを含むことができる。本発明の1つまたは複数の実施形態では、キャッシュ内のデータは、複数のキャッシュ・ラインを含む一致クラス(congruence classes)に配置され、前記一致クラスは、どのエントリを立ち退かせるべきかを決定するために使用されるクロノロジ・ベクトルを含み、キャッシュの立ち退きは、適応性のあるLRU置換ポリシを使用して行われる。ローカル・プロセッサ・フェッチ・ミスにインストールするための空の区画がない場合、置換ポリシは、クロノロジ・ベクトルに基づいて、最も長い間使用されていない、プロセッサに関連付けられたL2キャッシュから、キャッシュ・ラインを立ち退かせようとする。ターゲットL2キャッシュは、ターゲットL2キャッシュを使用する処理コアに関するターゲットL2キャッシュの利用率、およびターゲットL2キャッシュについての任意の他のメトリックを調査することによって識別可能である。ターゲットL2キャッシュは、キャッシュのクラスタ214内のいずれかのL2キャッシュの利用率が最低であることに基づいて、クラスタ214内のL2キャッシュの中から選択可能である。キャッシュの利用率は、予め定義された期間内の総キャッシュ・アクセス、キャッシュの立ち退きまたは書き込みあるいはその両方の頻度、キャッシュ・アクセス、立ち退き、または書き込みあるいはその組合せの間の期間、キャッシュ内にインストールされたラテラル持続キャッシュ・ラインの数、ローカル/リモート・コアからの無効化、および同様のものを含むがこれらに限定されない、いくつかの因子に基づくことが可能である(これらの因子は、飽和メトリックと呼ばれてもよい)。最低利用率のキャッシュを選ぶための方法は、キャッシュ毎の活動を追跡するカウンタのグループ内の最小数として実施可能であり、または、時間ウィンドウ内で最後に使用されたキャッシュを決定するためのLRUポリシとして実施可能である。本発明の1つまたは複数の実施形態では、キャッシュ・ラインが、キャッシュのクラスタ内のラテラル・キャッシュに最初に立ち退かされたとき、LPビットは、1にセット可能であり、1は、キャッシュ・ラインが第1のキャッシュから、1次/第1の持続化のスコープに対応するキャッシュのクラスタ内のターゲット・キャッシュに立ち退かされたことを指示する。同じキャッシュ・ラインが、ターゲット・キャッシュから、次の永続化のスコープ内の新しいターゲット・キャッシュに立ち退かされたとき(すなわち、2次キャストアウト(SCO))、LPビットは、2にセットされることになる、などである。同じキャッシュ・ラインが、ターゲット・キャッシュから立ち退かされたとき、置換ポリシは、新しいキャッシュのクラスタ内で、同じキャッシュ利用率の決定を使用して、キャッシュ・ラインを書き込むための他のキャッシュのクラスタに目を向けることができる。新しいキャッシュのクラスタは、キャッシュがクラスタ/スコープとして仮想的に識別/定義される方式に応じて、同じドロワー240-0内または他のドロワー240-1、240-2、240-3内にあることが可能である。本発明の1つまたは複数の実施形態では、処理コア204によってキャッシュ・ラインがフェッチされた場合、キャッシュ・ラインは、フェッチ・コアのL2キャッシュに書き込まれ、LPビットは、0にリセット可能である。本発明の1つまたは複数の実施形態では、ラテラル持続化および置換ポリシは、キャッシュのクラスタ214の間のキャッシュの立ち退き、およびメイン・メモリ220への立ち退きを管理するために、キャッシュ・コントローラ212を使用して実施可能である。キャッシュ・コントローラ212は、ドロワー240内でローカルなものであることが可能であり、または、キャッシュのクラスタ毎のインスタンス内の分散要素でもよい。
【0016】
本発明の1つまたは複数の実施形態では、置換ポリシはCPチップ202上のラテラル・キャッシュ208に対し優先的なものであり得る。CPチップ202は、CPチップ上に8つあるので、1つ以上の定義されたキャッシュのクラスタ214を有することができる。置換ポリシは、他のCPチップ202上にあってもよい他のL2キャッシュをサーチする前に、まず、CPチップ202にローカルなL2キャッシュ208にキャッシュ・ラインを立ち退かせようとすることができる。例えば、第1のキャッシュ・クラスタ/1次スコープおよび第2のキャッシュ・クラスタ/2次スコープが第1のCPチップ上に存在し、第3のキャッシュ・クラスタ/3次スコープが第2のCPチップ上にある、3つのキャッシュ・クラスタ214を考える。置換ポリシは、キャッシュ・ラインを立ち退かせる予定のキャッシュを含む、第1のキャッシュ・クラスタ内のL2キャッシュの利用割合に注目することができる。これは、第1の持続化のスコープとして定義可能である。第1の持続化のスコープは、立ち退かせるキャッシュが存在する第1のキャッシュ・クラスタ内に注目する。第2の持続化のスコープは、立ち退かせるキャッシュがない、CPチップ上にある任意の他のグループ(例えば、第2のキャッシュ・クラスタ)として定義可能であるが、全システムを含んでもよい。第3の持続化のスコープは、ドロワー内の他のCPチップ上のグループに注目することができる。キャッシュ・クラスタ214内の各L2キャッシュ208の利用率は、キャッシュの立ち退きを持続化させることになるターゲット・キャッシュを決定するために分析されることが可能である。1次クラスタ上のターゲット・キャッシュから同じキャッシュ・ラインをさらに立ち退かせる際、置換ポリシは、前の同じ利用分析を使用して、キャストアウトが持続化するようにキャッシュを2次クラスタから選ぼうとする。最後のスコープからのその後のキャストアウトの際、ラインは、変更された場合、メモリに書き込まれ、そうでない場合、単に捨てられるはずである。ターゲット・キャッシュ内に空の区画がない場合、持続化インストールが、ターゲット・ラテラル・キャッシュにおけるキャストアウト(カスケード・キャストアウト)を引き起こすことがあり、カスケード・キャストアウトは、次のスコープにおいて空の区画が利用可能になるか、キャストアウトのチェーンが最後の持続化のスコープに達するまで、後続のスコープ内の持続化のために送られる。プロセッサは、システム内の特定の利用閾値または競合の下で、カスケード・キャストアウト全てをメモリに迂回させることを決めることができる。特定のレベルのスコープ内のキャッシュの立ち退きを続けるべきかどうかを決定するために、いくつかの利用閾値が使用されることが可能である。例えば、第1のキャッシュ・クラスタ内のキャッシュの利用割合が第1の閾値より高い場合、置換ポリシは、キャッシュ・ラインを立ち退かせるために、同じCPチップ上の第2のキャッシュ・クラスタに注目する。第2のキャッシュ・クラスタ内のL2キャッシュの利用割合も第1の閾値の利用割合より高い場合、置換ポリシは、異なるCPチップ上の第3のキャッシュ・クラスタに注目する、などである。
【0017】
本発明の1つまたは複数の実施形態では、キャッシュ・コントローラ212によって実行される置換ポリシは、システム200内のキャッシュ毎にカウンタ(「飽和カウンタ」)を維持することによって、立ち退かされたキャッシュ・ライン用のターゲット・キャッシュを決定することができる。カウンタは、システム200内のキャッシュ208毎の飽和メトリックを追跡することができる。最初に、立ち退かされたキャッシュ・ラインのホーム・キャッシュ・クラスタ214内のターゲット・キャッシュをサーチすることによって、キャッシュ・ラインが持続されることが可能である。キャッシュ208毎のカウンタは、キャッシュの飽和メトリックを追跡するために使用可能である。この飽和メトリック(すなわち、利用率)は、キャッシュに取り付けられたコア/複数のコアからのキャッシュ内のインストールの数(フェッチ・ミス)、ラテラル・キャッシュ(ピア・キャッシュ)からのキャストアウトのインストールの数、等を含むことができ、カウンタは、インストール・イベント毎にインクリメントする。このカウンタは、キャッシュに取り付けられたコアと、キャッシュがピア・ラテラル・キャッシュから受けたキャストアウトとの組み合わされた活動についてのメトリックを提供する。キャッシュからのキャッシュの立ち退きの場合、キャッシュ・ラインは、最低飽和カウンタ値を有するラテラル・キャッシュ、または、(立ち退き時に)あまりビジーでないキャッシュがキャッシュ・ラインを受け入れるように、あまり活動的でないキャッシュのグループへの立ち退きまたはブロードキャストを行う第1のキャッシュより小さい飽和カウンタ値を有するラテラル・キャッシュ内に、持続化させるために送られる。
【0018】
本発明の1つまたは複数の実施形態では、置換ポリシは、立ち退かされたキャッシュ・ライン用のLPビット、およびラテラル・キャッシュの利用率に基づいて、キャッシュの立ち退き用のターゲット・キャッシュを決定する。ターゲット・キャッシュが決定されると、置換ポリシはさらに、ターゲット・キャッシュ内のどこにキャッシュ・ラインを置くべきかを決定するために利用される。
図2は、本発明の1つまたは複数の実施形態による、例示的なターゲット・キャッシュのブロック図を描写している。例示的なターゲット・キャッシュ200は、8つのキャッシュ・ラインを格納可能な8ウェイ・キャッシュである。例示的なキャッシュ200は、キャッシュ200内のキャッシュ・ラインを管理するために、適応性のある最も長い間使用されていない(LRU)アルゴリズムを利用する。LRUは、キャッシュ200に書き込む必要があるときはいつでも、最も長い間使用されていないキャッシュ・ラインを最初に棄てるキャッシュ置換アルゴリズムである。LRUアルゴリズムは、MRU、Mid-LRU、クオーター-LRU、LRU、および任意の部分的なインストール位置を間に含む複数のインストール位置をサポートする。さらに、LPタグ・ビットは、任意のスコープからのピア・キャッシュによるラテラル・キャストアウトに対して、ローカル・プロセッサによって直接的にインストールされたラインを判別するために使用可能である。所与の一致クラスをスキャンすることは、キャッシュ200に取り付けられたコア/複数のコアと、ラテラル・キャッシュから受けたキャストアウトとの間の活動分散のための基準を与える。インストール時に、ラテラル・キャッシュから持続されたキャストアウト全ては、LRUツリー内の部分的な配置を最初に得る。ローカル・プロセッサ・フェッチによってインストールされたライン全てが、MRU配置を得るはずである。ラテラル・キャストアウトによってインストールされたラインのパーセンテージが、一致クラスの総容量の閾値を超えると、新たに持続されたエントリは、より大きな部分的/MRU配置を得る。より大きい部分的および部分的配置は、ワークロードの要求に基づいて構成可能である。この適応性のあるLRU配置ポリシは、ローカル・プロセッサが活動的なときは、より多くのローカル・インストール、およびローカルに再び参照されるラインを、ならびに、ローカル・プロセッサが休止状態にあるときは、より多くの持続されるエントリを含めるように、キャッシュのスペースを動的に確保する。例えば、キャッシュ内の持続されるエントリの最小容量閾値が50%にセットされた場合、持続されるエントリは、一致クラス内の持続されるエントリの数(現在のインストール102を含む)が一致クラス容量の50%未満になるまで、部分的配置を得るはずである。その後、これらは、より大きな部分的/MRU配置を得る。例示された例では、閾値が75%にセットされた場合、現在のインストール・キャッシュ・ライン102は、持続されるインストール(LPが0より大きい)であり、持続される総インストールは、4である。したがって、ライン102は、依然として、部分的MRU配置を得るはずである。持続されるインストールが6になると、持続されるインストールになろうとするものは、MRU配置を得るはずである。
【0019】
本発明の1つまたは複数の実施形態では、ターゲット・キャッシュの決定された利用割合は、キャッシュ・ラインがどのようにインストールされるか、およびピア・キャッシュ・ラインがターゲット・キャッシュ内にどれだけ多くインストール可能であるかに影響する可能性がある。例えば、ターゲット・キャッシュの利用割合が非常に低い(例えば、予め定義された閾値より低い)場合、ターゲット・キャッシュは、全てではないが、ほとんどのラテラル・キャッシュ・ラインをターゲット・キャッシュ内にインストールすることができる。ピア・キャッシュ・ラインがどれだけ多くインストール可能であるかに影響する複数の閾値利用割合が定義されることが可能である。キャッシュ・ラインの数は、利用可能なメモリのパーセンテージ(キャッシュ・メモリの50%、75%等)または数字で定義可能である。
【0020】
本発明の1つまたは複数の実施形態では、キャッシュ・クラスタ214は、例えば、CPチップ202内のいくつかのキャッシュを選択すること、ドロワー240内のいくつかのキャッシュを選択すること、またはドロワー240にまたがっていくつかのキャッシュを選択すること、あるいはその組合せなど、様々な手段を使用して定義可能である。システム内のキャッシュ・クラスタを定義することは、データ・ソーシング・レイテンシを実行するようなピア・キャッシュの位置、ワークロード・ディスパッチ・パターン、または、OS/ソフトウェア指令ヒント、あるいはその組合せに基づいて実施可能である。スコープ/キャッシュ・クラスタは、ハイパーバイザ・ヒント、ならびに/または、キャッシュに取り付けられた、および/もしくは上述の指令を含む、プロセッサ・タイプに基づいて、経時的に変更可能である。さらに、全てのクラスタが、同じ数のL2キャッシュを有するわけではない。
【0021】
図3は、本発明の1つまたは複数の実施形態による、ラテラル・キャッシュ持続化のための方法300の流れ図を描写している。方法300の少なくとも一部分は、例えば、
図6に示されたプロセッサ601によって、実行可能である。方法300は、ブロック302に示されているように、対称型マルチプロセッシング(SMP)システム内の複数のキャッシュのためのスコープまたはクラスタあるいはその両方を定義することを含む。これは、いくつかのプロセッサ・ユニットを含むデータ処理システムを有することを含み、各プロセッサ・ユニットは、相互接続ファブリックによって一緒に連結された、関連付けられた高および低レベル・キャッシュ(L2)を有するプロセッサを含む。キャッシュ内のデータは、いくつかのキャッシュ・ラインを含む一致クラスに配置され、これらの一致クラスは、どのエントリを立ち退かせるべきかを決定するために使用されるクロノロジ・ベクトルをさらに含む。クロノロジ・ベクトル(エイジ・ビット)は、キャッシュ内のキャッシュ・ラインのエイジを追跡する。キャッシュのクラスタは、1次、2次、および3次と呼ばれる複数のスコープ・ドメインに配置され、これらは、無限数の一意のスコープに拡張可能である。キャッシュの立ち退きおよびキャッシュが立ち退かされると決定された場合、処理キャッシュは、エントリが、1次キャストアウト・スコープ(PCO)もしくは2次キャストアウト・スコープ(SCO)内のピア・キャッシュにラテラリ・キャストアウト(LCO)されるべきか、3次キャストアウト(TCO)としてメモリに書き戻されるべきかを決定する。ブロック304において、方法300は、システム内のキャッシュの活動を追跡するための方法およびメトリックの両方を定義することを含む。どのキャッシュ・ラインを立ち退かせるべきかを決定すると、処理キャッシュは、エントリが、1次キャストアウト・スコープ(PCO)もしくは2次キャストアウト・スコープ(SCO)内のピア・キャッシュにラテラリ・キャストアウト(LCO)されるべきか、3次キャストアウト(TCO)としてメモリに書き戻されるべきかを決定する。ターゲット・スコープのそれぞれの中で、プロセッサ・ミスによって定義されるような、各キャッシュへのインストールの数を追跡する飽和カウンタを使用して、キャッシュの活動が追跡される。ブロック306において、方法300は、一致クラス内の持続されるエントリ容量の閾値を定義することを含む。所与のキャッシュに対してインストールされたキャッシュ・ラインは、例えば、別のキャッシュからのラテラル・キャストアウトに対するローカル・プロセッサ・フェッチなど、様々なリクエスタ・タイプによって、追跡可能である。キャッシュ・ラインのインストール位置は、ラテラル・キャストアウトに対するプロセッサ・フェッチによってインストールされたラインのパーセンテージに基づくことが可能である。ラテラル・キャストアウト上のキャッシュにキャッシュ・ラインがインストールされたとき、キャッシュ・ラインは、非MRU(最も新しく使用された)位置に最初に配置される。ラテラル・キャストアウトによってインストールされたキャッシュ・ラインのパーセンテージが、一致クラスの総容量の予め定義された閾値を超えると、持続されるキャッシュ・エントリは、より大きい部分的/MRU配置を得る。ブロック308において、方法300は、キャッシュ・ライン用の現在の持続化のスコープを追跡するラテラル持続化ビットを有するキャッシュ・ライン(LCO)を立ち退かせたいというリクエストを受け取ることを含む。キャッシュ・ラインの現在のスコープは、ラテラル持続化タグ・ビットを使用して決定され、ラテラル持続化タグ・ビットは、ラインがプロセッサによってインストールまたは再び参照されたときにゼロにセットされ、ラインが現在のキャッシュから立ち退かされ、次のスコープにおけるキャッシュのいずれかにおいて持続されるたびにインクリメントされる。
【0022】
本発明の1つまたは複数の実施形態では、方法300は、ブロック310において、LCOを書き込むためのターゲット・キャッシュを決定することを含み、ターゲット・キャッシュは、現在のスコープより高い持続化のスコープの中にある。現在のスコープは、プロセッサ・ミスによって定義されるような、各キャッシュへのインストールの数を追跡するカウンタを使用して、キャッシュの活動に基づいて決定され、最も活動的でないキャッシュが、キャストアウトを持続するためのターゲットとして選ばれる。キャストアウトは、あまり活動的でないキャッシュのグループに送られることが可能である。カウンタは、(ローカル/リモート・コアからのローカルな立ち退きおよび/または無効化、ならびに/あるいは、ピア・キャッシュの立ち退きによって定義されるような)ローカルもしくはリモートまたはその両方のコアからの無効化の数、ラテラル・キャストアウト・インストールの数、ならびに総キャストアウトの数を追跡する。カウンタは、例えば、LRUツリー・アルゴリズムとして、実行可能である。本発明の1つまたは複数の実施形態では、方法300は、インストールのための空の区画がターゲット・キャッシュにないかどうかを決定すること、および次いで、LCOインストールのための空間を作るためのカスケード・キャストアウト方法を決定することを含む、判定ブロック312を含む。つまり、立ち退かされたエントリが持続化のために送られることは、空の区画がない場合、ターゲット・ラテラル・キャッシュにおけるキャストアウトを引き起こすことがある。この場合、次のスコープにおいて空の区画が利用可能になるまで、または、キャストアウトのチェーンが、最後の持続化のスコープに達するまで、あるいはその両方まで、後続のグループにおける持続化のためにカスケード・キャストアウトが送られる。この場合、システムが競合/ビジー状態であると置換アルゴリズムが決定した場合、カスケード・キャストアウトは、メイン・メモリに迂回される。カスケードの有無に関わらずターゲット・キャッシュが決定され、キャッシュ・ラインがメモリに書き込まれない状態では、方法300は、ブロック314に示されているように、LCOをターゲット・キャッシュに書き込み、LPタグ・ビットをターゲット・キャッシュのスコープにセットすることを含む。また、ブロック316おいて、方法300は、持続されるエントリの数にわたってターゲット・キャッシュの一致クラスをスキャンし、閾値に基づいて、それぞれの部分的な/より大きい部分的なMRU位置におけるターゲット・キャッシュ内にLCOを配置することを含む。クロノロジ・ベクトルは、MRU、Mid-LRU、LRU、および任意の部分的なインストール位置を間に含む複数のインストール位置をサポートする、キャッシュ置換アルゴリズムを含む。ラテラル・キャストアウトにインストールされたラインのパーセンテージが一致クラスの容量の閾値を超えると、持続されるエントリは、より大きい部分的/MRU配置を得る。
【0023】
追加のプロセスがさらに含まれてもよい。
図3に描写されたプロセスが例を表していること、および、本開示の範囲から逸脱することなく、他のプロセスが追加されてもよく、または、既存のプロセスが、除去、修正、もしくは再配置されてもよいことを理解されたい。
【0024】
図4は、本発明の1つまたは複数の実施形態による、ラテラル・キャッシュ持続化のための方法400の流れ図を描写している。方法400の少なくとも一部分は、例えば、
図6に示されたプロセッサ601によって、実行可能である。方法400は、ブロック402に示されているように、複数のキャッシュを有する1つまたは複数のプロセッサ・ユニットを定義することを含み、各プロセッサ・ユニットが、複数のキャッシュからの少なくとも1つのキャッシュを有するプロセッサを備え、1つまたは複数のプロセッサ・ユニットのそれぞれが、相互接続ファブリックによって一緒に連結される。ブロック404において、方法400は、複数のキャッシュのそれぞれに対して、複数のキャッシュ・ラインを1つまたは複数の一致クラスに配置することを含み、1つまたは複数の一致クラスにおける各一致クラスが、クロノロジ・ベクトルを含む。次いで、方法400は、ブロック406に示したように、複数のスコープ・ドメインに基づいて、複数のキャッシュにおける各キャッシュをキャッシュのクラスタに配置することを含む。さらに、ブロック408において、方法400は、第1のキャッシュ・ラインのクロノロジ・ベクトルに基づいて、立ち退かせることになる第1のキャッシュ・ラインを決定することを含む。また、ブロック410において、方法400は、第1のキャッシュ・ラインのスコープ、およびターゲット・キャッシュに関連付けられた飽和メトリックに基づいて、第1のキャッシュ・ラインをインストールするためのターゲット・キャッシュを決定することを含み、第1のキャッシュ・ラインのスコープが、ラテラル持続化タグ・ビットに基づいて決定される。
【0025】
追加のプロセスがさらに含まれてもよい。
図4に描写されたプロセスが例を表していること、および、本開示の範囲から逸脱することなく、他のプロセスが追加されてもよく、または、既存のプロセスが、除去、修正、もしくは再配置されてもよいことを理解されたい。
【0026】
図5は、本発明の1つまたは複数の実施形態による、ラテラル・キャッシュ持続化のための方法500の流れ図を描写している。方法500の少なくとも一部分は、例えば、
図6に示されたプロセッサ601によって、実行可能である。方法500は、ブロック502に示されているように、処理ドロワー内の複数のマイクロプロセッサ・チップにおける第1のマイクロプロセッサ・チップ上の第1のキャッシュから、第1のキャッシュ・ラインを立ち退かせたいというリクエストを受け取ることを含み、第1のキャッシュ・ラインが、第1のキャッシュ・ライン用のスコープを追跡するラテラル持続化ビットの第1のセットを有する。ブロック504において、方法500は、第1のキャッシュ・ラインのスコープを決定することを含む。さらに、方法500は、ブロック506において、飽和メトリックを有するターゲット・キャッシュを識別することを含み、ターゲット・キャッシュが、第1のキャッシュ・ラインのスコープより高いスコープを有する。また、ブロック508において、方法500は、ターゲット・キャッシュの飽和メトリック、および第1のキャッシュ・ラインのスコープに基づいて、第1のキャッシュ・ラインのためのアクションを決定することを含む。
【0027】
追加のプロセスがさらに含まれてもよい。
図5に描写されたプロセスが例を表していること、および、本開示の範囲から逸脱することなく、他のプロセスが追加されてもよく、または、既存のプロセスが、除去、修正、もしくは再配置されてもよいことを理解されたい。
【0028】
ここで
図6に移ると実施形態によるコンピュータ・システム600が全体的に示されている。コンピュータ・システム600は、本明細書に記載のような、様々な通信技術を利用した、任意の数のコンピューティング・デバイスおよびネットワーク、ならびにその組合せを備える、または採用する、あるいはその両方の、電子的なコンピュータ・フレームワークであることが可能である。コンピュータ・システム600は、容易に拡大縮小可能であること、拡張可能であること、およびモジュール方式であることが可能であり、異なるサービスに変更すること、または他とは無関係のいくつかの特徴を再構成することができる。コンピュータ・システム600は、例えば、サーバ、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、またはスマートフォンでもよい。一部の例では、コンピュータ・システム600は、クラウド・コンピューティング・ノードでもよい。コンピュータ・システム600は、コンピュータ・システムによって実行される、プログラム・モジュールなど、コンピュータ・システム実行可能命令の一般的な文脈で説明されてもよい。一般に、プログラム・モジュールは、特定のタスクを実施するか、特定の抽象データ型を実行する、ルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含んでもよい。コンピュータ・システム600は、通信ネットワークを通じてリンクされたリモート処理デバイスによってタスクが実施される分散型クラウド・コンピューティング環境で実践されてもよい。分散型クラウド・コンピューティング環境では、プログラム・モジュールは、メモリ・ストレージ・デバイスを含むローカルおよびリモート両方のコンピュータ・システム・ストレージ媒体に置かれてもよい。
【0029】
図6に示されているように、コンピュータ・システム600には、1つまたは複数の中央処理ユニット(CPU:central processing unit)601a、601b、601c等(まとめてまたは全体的にプロセッサ601と呼ばれる)がある。プロセッサ601は、シングルコア・プロセッサ、マルチコア・プロセッサ、コンピューティング・クラスタ、または任意の数の他の構成であることが可能である。プロセッサ601は、処理回路とも呼ばれ、システム・バス602を介してシステム・メモリ603および様々な他の構成要素に連結される。システム・メモリ603は、リード・オンリ・メモリ(ROM:read only memory)604およびランダム・アクセス・メモリ(RAM:random access memory)605を含むことができる。ROM604は、システム・バス602に連結され、コンピュータ・システム600の特定の基本機能を制御する、基本入出力システム(BIOS)のようなその後続種を有してもよい。RAMは、プロセッサ601による使用のためにシステム・バス602に連結されたリード・ライト・メモリである。システム・メモリ603は、動作中に前記命令の動作のための一時的なメモリ空間を提供する。システム・メモリ603は、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ、フラッシュ・メモリ、または任意の他の適切なメモリ・システムを含むことができる。
【0030】
コンピュータ・システム600は、システム・バス602に連結された入出力(I/O)アダプタ606および通信アダプタ607を備える。I/Oアダプタ606は、ハードディスク608、または任意の他の類似の構成要素、あるいはその両方と通信するスモール・コンピュータ・システム・インターフェース(SCSI)アダプタでもよい。I/Oアダプタ606およびハードディスク608は、本明細書ではまとめて、マス・ストレージ610と呼ばれる。
【0031】
コンピュータ・システム600で実行するためのソフトウェア611は、マス・ストレージ610に格納されてもよい。マス・ストレージ610は、プロセッサ601によって可読の有形ストレージ媒体の例であり、ソフトウェア611は、様々な図を参照しながら本明細書で後述されるように、コンピュータ・システム600を動作させるためのプロセッサ601による実行用の命令として格納される。コンピュータ・プログラム製品の例、およびこのような命令の実行は、本明細書でより詳細に論じられる。通信アダプタ607は、システム・バス602をネットワーク612と相互接続し、ネットワーク612は外部ネットワークでもよく、コンピュータ・システム600が他のこのようなシステムと通信することを可能にする。1つの実施形態では、システム・メモリ603およびマス・ストレージ610の一部分が、
図6に示されている様々な構成要素の機能を協調させるためのオペレーティング・システムをまとめて格納し、オペレーティング・システムは、IBM Corporationのz/OSまたはAIXオペレーティング・システムなど、任意の適切なオペレーティング・システムでもよい。AIXおよびz/OSはIBM Corporationの商標です。
【0032】
追加の入出力デバイスが、ディスプレイ・アダプタ615およびインターフェース・アダプタ616を介してシステム・バス602に接続されているように示されている。1つの実施形態では、アダプタ606、607、615、および616は、中間のバス・ブリッジ(図示せず)を介してシステム・バス602に接続された1つまたは複数のI/Oバスに接続されてもよい。ディスプレイ619(例えば、スクリーンまたはディスプレイ・モニタ)は、ディスプレイ・アダプタ615によってシステム・バス602に接続され、ディスプレイ・アダプタ615は、グラフィックス負荷の大きなアプリケーションの性能を改善するためのグラフィックス・コントローラ、およびビデオ・コントローラを含んでもよい。キーボード621、マウス622、スピーカ623等は、インターフェース・アダプタ616を介してシステム・バス602に相互接続可能であり、インターフェース・アダプタ616は、例えば、複数のデバイス・アダプタを単一の集積回路に統合したスーパーI/Oチップを含んでもよい。ハードディスク・コントローラ、ネットワーク・アダプタ、およびグラフィックス・アダプタなどの周辺デバイスを接続するのに適切なI/Oバスは、典型的には、ペリフェラル・コンポーネント・インターコネクト(PCI)などの、共通プロトコルを含む。したがって、
図6に構成されたように、コンピュータ・システム600は、プロセッサ601の形の処理能力と、システム・メモリ603およびマス・ストレージ610を含むストレージ能力と、キーボード621およびマウス622などの入力手段と、スピーカ623およびディスプレイ619を含む出力能力とを含む。
【0033】
一部の実施形態では、通信アダプタ607は、特にインターネット・スモール・コンピュータ・システム・インターフェースなどの、任意の適切なインターフェースまたはプロトコルを使用してデータを伝送することができる。ネットワーク612は、特にセルラー・ネットワーク、無線ネットワーク、ワイド・エリア・ネットワーク(WAN)、ローカル・エリア・ネットワーク(LAN)、またはインターネットでもよい。外部コンピューティング・デバイスが、ネットワーク612を通じてコンピュータ・システム600に接続してもよい。一部の例では、外部コンピューティング・デバイスは、外部ウェブサーバまたはクラウド・コンピューティング・ノードでもよい。
【0034】
図6のブロック図は、コンピュータ・システム600が、
図6に示されている構成要素の全てを含むべきであることを指示することを意図するものではないことを理解されたい。むしろ、コンピュータ・システム600は、
図6に例示されていない任意の適切なより少ないまたは追加の構成要素(例えば、追加のメモリ構成要素、組み込み型コントローラ、モジュール、追加のネットワーク・インターフェース等)を含むことができる。さらに、コンピュータ・システム600に関する本明細書に記載の実施形態は、任意の適切なロジックで実行されてもよく、本明細書で呼ばれるようなロジックは、様々な実施形態における、任意の適切なハードウェア(例えば、特にプロセッサ、組み込み型コントローラ、もしくは特定用途向け集積回路)、ソフトウェア(例えば、特にアプリケーション)、ファームウェア、または、ハードウェア、ソフトウェア、およびファームウェアの任意の適切な組合せを含むことができる。
【0035】
本発明の様々な実施形態は、関連する図面を参照しながら本明細書で説明される。本発明の代替実施形態は、本発明の範囲から逸脱することなく考案されることが可能である。以下の説明および図面において、要素の間の様々な接続および位置関係(例えば、上、下、隣、等)が説明される。これらの接続または位置関係あるいはその両方は、別途指定のない限り、直接的または間接的であることが可能であり、本発明は、この点に関して、限定することを意図するものではない。したがって、エンティティの連結は、直接的または間接的連結を指すことができ、エンティティ間の位置関係は、直接的または間接的位置関係であることが可能である。その上、本明細書に記載の様々なタスクおよびプロセスのステップは、本明細書で詳細に記載されていない追加のステップまたは機能を有する、より包括的な手順またはプロセスに組み込まれることが可能である。
【0036】
本明細書に記載の方法のうちの1つまたは複数は、データ信号に基づいて論理機能を実行するための論理ゲートを有する個別の論理回路、適切な組合せ論理ゲートを有する特定用途向け集積回路(ASIC)、プログラム可能ゲート・アレイ(PGA)、フィールド・プログラマブル・ゲート・アレイ(FPGA)等、当技術分野でそれぞれよく知られている任意の技術または技術の組合せで、実行可能である。
【0037】
簡潔さのために、本発明の態様の実施および使用に関係のある従来の技術は、本明細書で詳細に説明されることもされないこともある。特に、本明細書に記載の様々な技術的特徴を実施するためのコンピューティング・システムおよび特定のコンピュータ・プログラムの様々な態様が、よく知られている。したがって、簡潔さのために、多くの従来の実装形態の詳細は、本明細書では簡潔に言及されるだけであるか、あるいは、よく知られたシステムもしくはプロセスまたはその両方の詳細を提供することなく全面的に省略される。
【0038】
一部の実施形態では、様々な機能または行為は、所与のロケーションで、または、1つもしくは複数の装置もしくはシステムの動作と共に、あるいはその両方で、実施可能である。一部の実施形態では、所与の機能または行為の一部は、第1のデバイスまたはロケーションにおいて実施可能であり、残りの機能または行為は、1つまたは複数の追加のデバイスまたはロケーションにおいて実施可能である。
【0039】
本明細書で使用される専門用語は、特定の実施形態を説明するためのものにすぎず、限定することを意図するものではない。本明細書で使用されるように、単数形「a」、「an」、および「the」は、別途文脈が明白に指示しない限り、複数形も同様に含むことを意図している。用語「備える(comprises)」または「備える(comprising)」あるいはその両方は、本明細書で使用されるとき、述べられた特徴、整数、ステップ、動作、要素、または構成要素、あるいはその組合せの存在を指定するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素構成要素、またはそのグループ、あるいはその組合せの存在または追加を排除しないことがさらに理解されよう。
【0040】
下記の特許請求の範囲における全ての手段またはステップおよび機能要素の対応する構造、材料、行為、および同等物は、具体的に特許請求されるような他の請求要素と組み合わせて機能を実施するためのいずれかの構造、材料、または行為を含むことを意図している。本開示は、例示および説明のために提示されてきたが、網羅的であること、または開示の形式に限定されることを意図するものではない。本開示の範囲および思想から逸脱しない多くの変更形態および変形形態が当業者には明らかであろう。実施形態は、本開示の原理および実用的な用途を最も良く説明するために、および、想定される特定の使用に適するような様々な修正を伴う様々な実施形態についての開示を、他の当業者が理解できるようにするために、選ばれ、記載された。
【0041】
本明細書で描写された図は例示である。本開示の範囲から逸脱しない、記載された図またはステップ(もしくは動作)に対する多くの変形形態が存在する可能性がある。例えば、アクションは、異なる順序で実施可能であるか、またはアクションは、追加、削除、もしくは修正可能である。また、用語「連結される」は、2つの要素間の信号経路を有することを表し、介在要素/接続が間にない要素間の直接接続を示唆していない。これらの変形形態の全ては、本開示の一部であるとみなされる。
【0042】
以下の定義および省略形は、特許請求の範囲および本明細書の解釈のために使用されることになる。本明細書で使用されるように、用語「備える(comprises)」、「備える(comprising)」、「含む(includes)」、「含む(including)」、「有する(has)」、「有する(having)」、「収める(contains)」、もしくは「収める(containing)」、またはこれらの他の任意の変形形態は、非排他的な包含を含めることを意図している。例えば、要素のリストを含む構造、混合、プロセス、方法、項目、または装置は、必ずしもこれらの要素にだけ限定されるのではなく、明確に列挙されていない、またはこのような構成物、混合、プロセス、方法、項目、もしくは装置に内在しない他の要素を含むことができる。
【0043】
追加として、用語「例示的」は、「例、事例、または例示として機能すること」を意味するために本明細書で使用される。「例示的」として本明細書で説明される任意の実施形態またはデザインは、他の実施形態またはデザインより好ましいまたは有利なものとして必ずしも解釈されるべきではない。用語「少なくとも1つ」および「1つまたは複数」は、1以上の任意の整数、すなわち1、2、3、4等を含むものと理解されている。用語「複数」は、2以上の任意の整数、すなわち2、3、4、5等を含むものと理解されている。用語「接続」は、間接的「接続」および直接的「接続」両方を含むことができる。
【0044】
用語「約(about)」、「実質的に(substantially)」、「およそ(approximately)」、およびこれらの変形形態は、本出願を提出したときに利用可能な機器に基づく特定の量の測定値に関連付けられたある程度の誤差を含むことを意図している。例えば、「約(about)」は、±8%もしくは5%の範囲、または所与の値の2%を含むことができる。
【0045】
本発明は、統合の任意の可能な技術的詳細レベルにおけるシステム、方法、またはコンピュータ・プログラム製品、あるいはその組合せでもよい。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体(または複数の媒体)を含んでもよい。
【0046】
コンピュータ可読ストレージ媒体は、命令実行デバイスによる使用のための命令を保持および格納可能な有形デバイスであることが可能である。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、または前述の任意の適切な組合せでもよいがこれらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例の完全に網羅されていないリストは、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)、消去可能プログラマブル・リード・オンリ・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、命令を記録したパンチ・カードまたは溝内隆起構造などの機械的にエンコードされたデバイス、および前述の任意の適切な組合せを含む。本明細書で使用されるようなコンピュータ可読ストレージ媒体は、電波もしくは他の自由に伝搬する電磁波、導波路もしくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを通じて伝送される電気信号など、本質的に一時的な信号であると解釈されるべきではない。
【0047】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスに、あるいは、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくはワイヤレス・ネットワーク、またはその組合せといったネットワークを介して外部コンピュータまたは外部ストレージ・デバイスに、ダウンロード可能である。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを備えてもよい。各コンピューティング/処理デバイスのネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受け取り、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に格納するためにコンピュータ可読プログラム命令を転送する。
【0048】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ(ISA)命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用の構成データ、または、Smalltalk(R)、C++、もしくは同様のものなどのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは類似のプログラミング言語などの手続き型プログラミング言語を含む1つもしくは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードでもよい。コンピュータ可読プログラム命令は、全面的にユーザのコンピュータ上で、または、部分的にユーザのコンピュータ上で、スタンド・アロンのソフトウェア・パッケージとして、あるいは、部分的にユーザのコンピュータ上かつ部分的にリモート・コンピュータ上で、または全面的にリモート・コンピュータもしくはサーバ上で実行してもよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続されてもよく、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを通じて)外部コンピュータに対して行われてもよい。一部の実施形態では、プログラム可能論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個別化することによって、コンピュータ可読プログラム命令を実行してもよい。
【0049】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照しながら本明細書で説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実行可能であることが理解されよう。
【0050】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/行為を実行するための手段を作り出すべく、機械を生み出すために汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供されてもよい。これらのコンピュータ可読プログラム命令はまた、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/行為の態様を実行する命令を含む製品を、命令を格納したコンピュータ可読ストレージ媒体が備えるべく、コンピュータ可読ストレージ媒体に格納されてもよく、コンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはその組合せに特定の様式で機能するように指図可能である。
【0051】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/行為を実行するべく、コンピュータ実行処理を生み出すために、コンピュータ、他のプログラム可能装置、または他のデバイスで一連の動作ステップを実施するために、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードされてもよい。
【0052】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。この点に関して、フローチャートまたはブロック図の中の各ブロックは、指定の論理機能を実施するための1つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または一部を表してもよい。一部の代替実装形態では、ブロックに記された機能は、図に記された順序とは無関係に行われてもよい。例えば、連続して示された2つのブロックは、実際には、実質的に同時に実行されてもよく、またはブロックは、ときには、含まれる機能に応じて逆の順序で実行されてもよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、および、ブロック図またはフローチャート図あるいはその両方におけるブロックの組合せは、指定の機能もしくは行為を行うか、または、専用ハードウェアとコンピュータ命令との組合せを実行する、専用ハードウェア・ベースのシステムによって実行可能であることにも留意されたい。
【0053】
本発明の様々な実施形態の説明は、例示のために提示されてきたが、網羅的であること、または、開示された実施形態に限定されることを意図するものではない。説明された実施形態の範囲から逸脱することなく、多くの変更形態および変形形態が当業者には明らかであろう。本明細書で使用される専門用語は、実施形態の原理、実用的用途、もしくは市場で見つかる技術に対する技術的改善を最もよく説明するように、または、本明細書に記載の実施形態を他の当業者が理解できるように、選ばれた。
【手続補正書】
【提出日】2024-04-02
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
コンピュータ実行方法であって、
複数のキャッシュを有する1つまたは複数のプロセッサ・ユニットを定義することであって、各プロセッサ・ユニットが、前記複数のキャッシュからの少なくとも1つのキャッシュを有するプロセッサを備え、前記1つまたは複数のプロセッサ・ユニットのそれぞれが、相互接続ファブリックによって一緒に連結される、前記定義することと、
前記複数のキャッシュのそれぞれに対して、複数のキャッシュ・ラインを1つまたは複数の一致クラスに配置することであって、前記1つまたは複数の一致クラスにおける各一致クラスが、クロノロジ・ベクトルを含む、前記配置することと、
複数のスコープ・ドメインに基づいて、前記複数のキャッシュにおける各キャッシュをキャッシュのクラスタに配置することと、
第1のキャッシュ・ラインの前記クロノロジ・ベクトルに基づいて、立ち退かせることになる前記第1のキャッシュ・ラインを決定することと、
前記第1のキャッシュ・ラインをインストールするためのターゲット・キャッシュを、前記第1のキャッシュ・ラインのスコープおよび前記ターゲット・キャッシュに関連付けられた飽和メトリックに基づいて決定することであって、前記第1のキャッシュ・ラインの前記スコープが、ラテラル持続化タグ・ビットに基づいて決定される、前記決定することと
を含む、コンピュータ実行方法。
【請求項2】
前記第1のキャッシュ・ラインを前記ターゲット・キャッシュに書き込むことと、前記第1のキャッシュ・ライン用の前記ラテラル持続化タグ・ビットをインクリメントすることとをさらに含む、請求項1に記載の方法。
【請求項3】
前記第1のキャッシュ・ラインを前記ターゲット・キャッシュに書き込むことが、
前記ターゲット・キャッシュから立ち退かせることになる第2のキャッシュ・ラインを選択することと、
前記第2のキャッシュ・ライン用の第2のスコープを決定することと、
前記第2のスコープに基づいて、前記第2のキャッシュ・ライン用の立ち退きロケーションを決定することであって、前記立ち退きロケーションが、ラテラル・キャッシュおよびメイン・メモリのうちの少なくとも1つを含む、前記決定することと
を含む、請求項2に記載の方法。
【請求項4】
前記第1のキャッシュ・ラインを前記ターゲット・キャッシュに書き込むことが、
1つまたは複数のキャッシュ・インストール位置を含むキャッシュ置換ポリシを決定することと、
前記ターゲット・キャッシュのために前記第1のキャッシュ・ライン用のスコープを決定することであって、前記スコープが、前記第1のキャッシュ・ラインをインストールしたいというリクエストのオリジネータを決定し、前記オリジネータが、前記ターゲット・キャッシュにローカルなプロセッサ、およびラテラル・キャッシュのうちの少なくとも1つを含む、前記決定することと、
前記ターゲット・キャッシュにローカルな前記プロセッサによってインストールされたキャッシュ・ラインのパーセンテージ、およびラテラル・キャッシュによってインストールされたキャッシュ・ラインのパーセンテージに基づいて、前記第1のキャッシュ・ラインのインストール位置を決定することと
を含む、請求項2に記載の方法。
【請求項5】
前記1つまたは複数のキャッシュ・インストール位置が、最も新しく使用された(MRU)位置、中間の最も長い間使用されていない(mid-LRU)位置、および最も長い間使用されていない(LRU)位置を含む、請求項4に記載の方法。
【請求項6】
前記第1のキャッシュ・ラインをインストールするための前記ターゲット・キャッシュを決定することが、
前記第1のキャッシュ・ラインの前記スコープに基づいて、キャッシュのターゲット・クラスタを決定することと、
キャッシュの前記ターゲット・クラスタから前記ターゲット・キャッシュを選択することと
を含む、請求項1に記載の方法。
【請求項7】
前記第1のキャッシュ・ラインの前記スコープ、および前記ターゲット・キャッシュに関連付けられた飽和メトリックに基づいて、キャッシュの前記ターゲット・クラスタを決定することが、
キャッシュのクラスタ毎にスコープ・ドメインを決定することと、
前記第1のキャッシュ・ラインの前記スコープより高い前記ターゲット・クラスタのスコープ・ドメインに基づいて、キャッシュの前記ターゲット・クラスタを選択することと
を含む、請求項6に記載の方法。
【請求項8】
前記第1のキャッシュ・ラインの前記スコープ、および前記ターゲット・キャッシュに関連付けられた飽和メトリックに基づいて、キャッシュの前記ターゲット・クラスタを決定することが、
キャッシュのクラスタ毎の組み合わされた飽和メトリックを分析することであって、前記組み合わされた飽和メトリックが、キャッシュのクラスタ内のキャッシュ毎に組み合わされた前記飽和メトリックを含む、前記分析することと、
キャッシュの各クラスタの中の最低の組み合わされた飽和メトリックである前記ターゲット・クラスタについての前記組み合わされた飽和メトリックに基づいて、キャッシュの前記ターゲット・クラスタを選択することと
を含む、請求項6に記載の方法。
【請求項9】
キャッシュの前記ターゲット・クラスタから前記ターゲット・キャッシュを選択することが、
キャッシュの前記ターゲット・クラスタ内の各キャッシュの飽和メトリックを分析することと、
キャッシュの前記ターゲット・クラスタ内の各キャッシュの中の最低の飽和メトリックである前記ターゲット・キャッシュについての前記飽和メトリックに基づいて前記ターゲット・キャッシュを選択することと
を含む、請求項6に記載の方法。
【請求項10】
前記飽和メトリックが、プロセッサ・ミスによって定義されたインストールの数、およびラテラル・キャッシュからのキャッシュにおけるインストールの数のうちの少なくとも1つを含む、請求項1に記載の方法。
【請求項11】
システムであって、
複数のキャッシュを有する1つまたは複数のプロセッサ・ユニットであって、各プロセッサ・ユニットが、前記複数のキャッシュからの少なくとも1つのキャッシュを有するプロセッサを備え、前記1つまたは複数のプロセッサ・ユニットのそれぞれが、相互接続ファブリックによって一緒に連結された、前記プロセッサ・ユニットと、
前記複数のキャッシュのそれぞれに対して、複数のキャッシュ・ラインを1つまたは複数の一致クラスに配置することであって、前記1つまたは複数の一致クラスにおける各一致クラスが、クロノロジ・ベクトルを含む、前記配置すること、
複数のスコープ・ドメインに基づいて、前記複数のキャッシュにおける各キャッシュをキャッシュのクラスタに配置すること、
前記キャッシュ・ラインの前記クロノロジ・ベクトルに基づいて、立ち退かせることになる第1のキャッシュ・ラインを決定すること、
前記第1のキャッシュ・ラインをインストールするためのターゲット・キャッシュを、前記第1のキャッシュ・ラインのスコープおよび前記ターゲット・キャッシュに関連付けられた飽和メトリックに基づいて決定することであって、前記第1のキャッシュ・ラインの前記スコープが、ラテラル持続化タグ・ビットに基づいて決定される、前記決定すること
を実施するように構成された、キャッシュ・コントローラとを備える、システム。
【請求項12】
前記キャッシュ・コントローラが、前記第1のキャッシュ・ラインを前記ターゲット・キャッシュに書き込むことと、前記第1のキャッシュ・ライン用の前記第1のラテラル持続化ビット・タグをインクリメントすることとを実施するようにさらに構成される、請求項11に記載のシステム。
【請求項13】
前記第1のキャッシュ・ラインを前記ターゲット・キャッシュに書き込むことが、
前記ターゲット・キャッシュから立ち退かせることになる第2のキャッシュ・ラインを選択することと、
前記第2のキャッシュ・ライン用の第2のスコープを決定することと、
前記第2のスコープに基づいて、前記第2のキャッシュ・ライン用の立ち退きロケーションを決定することであって、前記立ち退きロケーションが、ラテラル・キャッシュおよびメイン・メモリのうちの少なくとも1つを含む、前記決定することと
を含む、請求項12に記載のシステム。
【請求項14】
前記第1のキャッシュ・ラインを前記ターゲット・キャッシュに書き込むことが、
1つまたは複数のキャッシュ・インストール位置を含むキャッシュ置換ポリシを決定することと、
前記第1のキャッシュ・ラインを前記ターゲット・キャッシュにインストールしたいというリクエストのオリジネータを決定することであって、前記オリジネータが、前記ターゲット・キャッシュにローカルなプロセッサ、およびラテラル・キャッシュのうちの少なくとも1つを含む、前記決定することと、
前記ターゲット・キャッシュにローカルな前記プロセッサによってインストールされたキャッシュ・ラインのパーセンテージ、およびラテラル・キャッシュによってインストールされたキャッシュ・ラインのパーセンテージに基づいて、前記第1のキャッシュ・ラインのインストール位置を決定することと
を含む、請求項12に記載のシステム。
【請求項15】
前記第1のキャッシュ・ラインをインストールするための前記ターゲット・キャッシュを決定することが、
前記第1のキャッシュ・ラインの前記スコープに基づいて、キャッシュのターゲット・クラスタを決定することと、
キャッシュの前記ターゲット・クラスタから前記ターゲット・キャッシュを選択することと
を含む、請求項11に記載のシステム。
【請求項16】
コンピュータ・プログラ
ムであって、
前記コンピュータ・プログラムは、1つまたは複数のプロセッサに、請求項1ないし10のいずれか1項に記載のコンピュータ実行方法を実行させる、コンピュータ・プログラム。
【請求項17】
コンピュータ実行方法であって、
処理ドロワー内の複数のマイクロプロセッサ・チップにおける第1のマイクロプロセッサ・チップ上の第1のキャッシュから、第1のキャッシュ・ラインを立ち退かせたいというリクエストを受け取ることであって、前記第1のキャッシュ・ラインが、前記第1のキャッシュ・ライン用のスコープを追跡するラテラル持続化ビットの第1のセットを有する、前記受け取ることと、
前記第1のキャッシュ・ラインの前記スコープを決定することと、
飽和メトリックを有するターゲット・キャッシュを識別することであって、前記ターゲット・キャッシュが、前記第1のキャッシュ・ラインの前記スコープより高いスコープを有する、前記識別することと、
前記ターゲット・キャッシュの前記飽和メトリック、および前記第1のキャッシュ・ラインの前記スコープに基づいて、前記第1のキャッシュ・ラインのためのアクションを決定することと
を含む、コンピュータ実行方法。
【請求項18】
前記アクションが、前記第1のキャッシュ・ラインを前記ターゲット・キャッシュに書き込むことと、ラテラル持続化ビットの前記第1のセットをインクリメントすることとを含む、請求項
17に記載の方法。
【請求項19】
前記アクションが、前記ターゲット・キャッシュに関して前記第1のキャッシュ・ラインを拒絶することを含む、請求項
17に記載の方法。
【請求項20】
コンピュータ・プログラ
ムであって、
前記コンピュータ・プログラムは、1つまたは複数のプロセッサに請求項17ないし19のいずれか一項に記載のコンピュータ実行方法を実行させる、コンピュータ・プログラム。
【国際調査報告】