(57)【要約】処理システム（１００）は、ローカルメモリ（１１２）に接続可能なインターコネクトファブリック（１１０）と、インターコネクトファブリックに接続された少なくとも１つのコンピュータ複合体（１０２）と、を備える。コンピュータ複合体は、プロセッサコア（１１４〜１１７）と、キャッシュ階層（１１８）と、を含む。キャッシュ階層は、複数のキャッシュ（１２１〜１３０）と、アクセスレイテンシメトリック及びプリフェッチ精度メトリックのうち少なくとも１つに基づいて、プロセッサコアによって発行可能なメモリ要求の速度をスロットルするように構成されたスロットルコントローラ（２２８）と、を有する。アクセスレイテンシメトリックは、プロセッサコアのメモリ要求の平均アクセスレイテンシを表し、プリフェッチ精度メトリックは、キャッシュ階層のキャッシュのプリフェッチャ（２２０）の精度を表す。【選択図】図２
2021506026.tif 000002
【特許請求の範囲】
【請求項１】
処理システムのメモリ要求スロットルの方法であって、
前記処理システムのキャッシュのレイテンシトラッカにおいて、前記処理システムのプロセッサコアのメモリ要求の平均アクセスレイテンシを表すアクセスレイテンシメトリックを決定することと、
前記キャッシュのプリフェッチ精度トラッカにおいて、前記プロセッサコアに関連するキャッシュのプリフェッチャの精度を表すプリフェッチ精度メトリックを決定することと、
前記キャッシュのスロットルコントローラにおいて、前記アクセスレイテンシメトリックと前記プリフェッチ精度メトリックとのうち少なくとも１つに基づいて、前記プロセッサコアによって発行可能なメモリ要求の速度をスロットルすることと、を含む、
方法。
【請求項２】
前記プロセッサコアによって発行可能なメモリ要求の速度をスロットルすることは、
前記アクセスレイテンシメトリックと前記プリフェッチ精度メトリックとのうち少なくとも１つに基づいて、プリフェッチャ積極度を変更することを含む、
請求項１の方法。
【請求項３】
前記プロセッサコアによって発行可能なメモリ要求の速度をスロットルすることは、
前記プロセッサコアが利用可能な保留メモリ要求の最大数を変更することをさらに含む、
請求項２の方法。
【請求項４】
前記プリフェッチャ積極度を変更することは、
前記プリフェッチャの最大プリフェッチ距離を変更することと、
前記プリフェッチャの最小プリフェッチ信頼度を変更することと、
のうち少なくとも１つを含む、
請求項２の方法。
【請求項５】
前記プリフェッチャ積極度を変更することは、
前記プリフェッチャを選択的に無効にすることをさらに含む、
請求項２の方法。
【請求項６】
前記プロセッサコアによって発行可能なメモリ要求の速度をスロットルすることは、
前記プロセッサコアが利用可能な保留メモリ要求の最大数を変更することを含む、
請求項１の方法。
【請求項７】
前記プリフェッチ精度メトリックを決定することは、前記プロセッサコアで実行される特定のスレッドの前記プリフェッチ精度メトリックを決定することを含み、
前記プロセッサコアが発行可能なメモリアクセス要求の速度をスロットルすることは、前記特定のスレッドに関する前記プロセッサコアによって発行可能なメモリアクセス要求の速度をスロットルすることを含む、
請求項１の方法。
【請求項８】
前記アクセスレイテンシメトリックを決定することは、
前記プロセッサコアに関連するローカルメモリに発行された複数のメモリ要求をサンプリングして、メモリ要求のサンプルセットを生成することと、
前記サンプルセットのメモリ要求毎に、前記メモリ要求を満たすための対応するアクセスレイテンシを測定することと、
前記メモリ要求のサンプルセットについて測定されたアクセスレイテンシの平均に基づいて、前記アクセスレイテンシメトリックを決定することと、を含む、
請求項１の方法。
【請求項９】
前記プロセッサコアによって発行可能なメモリ要求の速度をスロットルすることは、
複数のスロットルレベルを表すデータ構造にアクセスすることであって、各スロットルレベルは、利用可能な保留メモリトランザクションの最大数と、プリフェッチャ積極度のレベルとのうち少なくとも１つに対応する変更を表し、各スロットルレベルは、対応するレイテンシ閾値又は対応するプリフェッチ精度閾値のうち少なくとも１つに関連付けられている、ことと、
前記アクセスレイテンシメトリック及び前記プリフェッチ精度メトリックと、前記複数のスロットルレベルの各々のレイテンシ閾値及びプリフェッチ精度閾値と、の比較に基づいて、前記プロセッサコアに対して実施するスロットルレベルを選択することと、を含む、
請求項１の方法。
【請求項１０】
ローカルメモリに接続可能なインターコネクトファブリックと、
前記インターコネクトファブリックに接続された少なくとも１つのコンピュータ複合体と、を備える処理システムであって、
前記コンピュータ複合体は、
プロセッサコアと、
キャッシュ階層と、を備え、
前記キャッシュ階層は、
複数のキャッシュと、
アクセスレイテンシメトリックとプリフェッチ精度メトリックとのうち少なくとも１つに基づいて、前記プロセッサコアによって発行可能なメモリ要求の速度をスロットルするように構成されたスロットルコントローラと、を備え、
前記アクセスレイテンシメトリックは、前記プロセッサコアのメモリ要求に対する平均アクセスレイテンシを表し、
前記プリフェッチ精度メトリックは、前記キャッシュ階層のキャッシュのプリフェッチャの精度を表す、
処理システム。
【請求項１１】
前記スロットルコントローラは、
前記アクセスレイテンシメトリックと前記プリフェッチ精度メトリックとのうち少なくとも１つに基づいてプリフェッチャ積極度を変更することによって、
前記プロセッサコアによって発行可能なメモリ要求の速度をスロットルするように構成されている、
請求項１０の処理システム。
【請求項１２】
前記スロットルコントローラは、
前記プロセッサコアが利用可能な保留メモリ要求の最大数を変更することによって、
前記プロセッサコアによって発行可能なメモリ要求の速度をスロットルするように構成されている、
請求項１１の処理システム。
【請求項１３】
前記スロットルコントローラは、
前記プリフェッチャの最大プリフェッチ距離を変更することと、
前記プリフェッチャの最小プリフェッチ信頼度を変更することと、
前記プリフェッチャを選択的に無効にすることと、
のうち少なくとも１つによって、前記プリフェッチャ積極度を変更するように構成されている、
請求項１１の処理システム。
【請求項１４】
前記スロットルコントローラは、
前記プリフェッチャの最小プリフェッチ信頼度を変更することによって、
前記プリフェッチャ積極度を変更するように構成されている、
請求項１１の処理システム。
【請求項１５】
前記スロットルコントローラは、
前記プロセッサコアが利用可能な保留メモリ要求の最大数を変更することによって、
前記プロセッサコアによって発行可能なメモリ要求の速度をスロットルするように構成されている、
請求項１０の処理システム。
【請求項１６】
前記キャッシュ階層は、
前記プロセッサコアで実行される特定のスレッドの前記プリフェッチ精度メトリックを決定するように構成されたプリフェッチ精度トラッカをさらに備え、
前記スロットルコントローラは、前記特定のスレッドに関する前記プロセッサコアによって発行可能なメモリアクセス要求の速度をスロットルするように構成されている、
請求項１０の処理システム。
【請求項１７】
前記キャッシュ階層は、
前記プロセッサコアに関連するローカルメモリに発行された複数のメモリ要求をサンプリングして、メモリ要求のサンプルセットを生成することと、
前記サンプルセットのメモリ要求毎に、前記メモリ要求を満たすための対応するアクセスレイテンシを測定することと、
メモリ要求のサンプルセットについて測定されたアクセスレイテンシの平均に基づいて、前記アクセスレイテンシメトリックを決定することと、
によって、前記アクセスレイテンシメトリックを決定するレイテンシトラッカをさらに備える、
請求項１０の処理システム。
【請求項１８】
処理システムのメモリ帯域幅利用をスロットルする方法であって、
前記処理システムのコンピュータ複合体のプロセッサコアにおいてソフトウェアアプリケーションを実行することであって、前記ソフトェアアプリケーションは、前記ソフトウェアアプリケーションのスレッドのターゲットメモリ利用帯域幅制限を設定するように前記プロセッサコアを構成するための少なくとも１つの命令を含む、ことと、
前記コンピュータ複合体において前記スレッドの実際のメモリ利用帯域幅をモニタすることと、
前記モニタされた実際のメモリ利用帯域幅が前記ターゲットメモリ利用帯域幅を満たすまで、前記スレッドに設定されたスロットルレベルをインクリメントするように変更することと、を含み、
前記スロットルレベルは、前記スレッドに関連するキャッシュのプリフェッチャ積極度と、前記スレッドが利用可能な保留トランザクションの最大数と、のうち少なくとも１つを構成する、
方法。
【請求項１９】
前記スロットルレベルは、
前記プリフェッチャのプリフェッチ距離を変更することと、
前記プリフェッチャの最小プリフェッチ信頼度を変更することと、
のうち少なくとも１つによって、前記プリフェッチャ積極度を構成する、
請求項１８の方法。
【請求項２０】
前記スロットルレベルは、
前記プリフェッチャを選択的に無効にすることによって、
前記プリフェッチャ積極度を構成する、
請求項１８の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
多くの処理システムは、複数のプロセッサコアが同じメモリを共有するように、多くのリソースをプールする。これは、プロセッサコアのセットと対応するメモリとの間のリンクがメモリ要求で飽和し、全体的なメモリアクセスレイテンシが増加することにつながることが多い。さらに、オーバーサブスクライブされたメモリリンクは、完全に飽和していないリンクと比較して、全体的なシステムパフォーマンスを低下させる可能性がある。
【０００２】
添付の図面を参照することにより、本開示をより良く理解することができ、その多くの特徴及び利点が当業者に明らかになる。異なる図面で同じ符号を使用している場合、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【０００３】
【図１】いくつかの実施形態による、メモリ要求スロットルを使用する処理システムを示すブロック図である。
【図２】いくつかの実施形態による、図１の処理システムのプロセッサコア及び対応するキャッシュ階層をより詳細に示すブロック図である。
【図３】いくつかの実施形態による、動的メモリ要求スロットルの方法を示すフロー図である。
【図４】いくつかの実施形態による、ソフトウェアで構成されたメモリ要求スロットルの方法を示すフロー図である。
【発明を実施するための形態】
【０００４】
コンピュータ複合体とローカルメモリとの間のリンクのオーバーサブスクリプションや飽和は、システム全体のパフォーマンスに悪影響を及ぼす。本明細書に記載の技術は、メモリリンクを介してアクセスされるメモリへのメモリ要求のメモリリソースコンシューマによって発行可能な速度をスロットルすることによって、コンピュータ複合体のメモリリソースコンシューマが使用するメモリ帯域を抑制して、処理システムのメモリリンク効率を向上させる。このようにして抑制されたメモリリソースコンシューマは、コンピュータ複合体の個々のプロセッサコア、又は、コンピュータ複合体のプロセッサコアによって実行される特定のスレッドを含むことができる。いくつかの実施形態では、メモリリソースコンシューマのアクセスレイテンシメトリック及びプリフェッチ精度メトリックをモニタし、メモリリソースコンシューマに対して実施される特定のメモリ要求スロットルは、これらのメトリックの一方又は両方に基づいている。メモリ要求スロットルは、例えば、メモリリソースコンシューマに代わってプリフェッチャ積極度（prefetcher aggressiveness）を変更することによって、メモリリソースコンシューマが利用可能な保留メモリトランザクションの最大数を変更することによって、又は、プリフェッチャ積極度と、利用可能な保留メモリトランザクションの最大数との変更を組み合わせることによって、実現される。従って、このアプローチは、不正確なプリフェッチ推測を低減し、メモリリソースコンシューマが所定の時点で発行し得るメモリ要求の数を制限し、これにより、メモリリソースコンシューマが消費し得るメモリリンク帯域幅を制限しながら、メモリリソースコンシューマが発行するメモリ要求の有効性を改善しようとする。
【０００５】
図１は、いくつかの実施形態による、メモリ利用効率を向上させるためにメモリ要求スロットルを利用する処理システム１００を示す図である。処理システム１００は、処理ノード１０１等の１つ以上の処理ノードを含む。処理ノード１０１は、コンピュータ複合体１０２，１０４，１０６，１０８等の１つ以上のコンピュータ複合体と、インターコネクトファブリック１１０と、ローカルメモリ１１２と、を含む。各コンピュータ複合体は、４つのプロセッサコア１１４，１１５，１１６，１１７等の１つ以上のプロセッサコアを含む。プロセッサコアは、例えば、中央処理装置（ＣＰＵ）コア、グラフィックス処理装置（ＧＰＵ）コア、デジタル信号プロセッサ（ＤＳＰ）コア、又は、これらの組み合わせを含む。コンピュータ複合体のプロセッサコアの数は、４つより少なくてもよいし、４つより多くてもよいことが理解されよう。
【０００６】
各コンピュータ複合体は、第１レベル（Ｌ１）、第２レベル（Ｌ２）及び第３レベル（Ｌ３）のキャッシュ等のように、１つ以上のレベルのキャッシュを有するキャッシュ階層１１８をさらに含む。図示した例では３つのレベルを含むが、他の実施形態では、キャッシュ階層１１８は、３つより少ないレベル又は３つより多いレベルを含む。各キャッシュレベルは、そのレベルに１つ以上のキャッシュを含む。例示すると、コンピュータ複合体１０２は、Ｌ１において、プロセッサコア毎に、小さいプライベートキャッシュ（Ｌ１キャッシュ１２１，１２２，１２３，１２４として示されており、各Ｌ１キャッシュは、プロセッサコア１１４〜１１７のうち対応するものに関連付けられている）を実装する。さらに、いくつかの実施形態では、コンピュータ複合体は、Ｌ２において、プロセッサコア毎に、より大きいプライベートキャッシュ（Ｌ２キャッシュ１２５，１２６，１２７，１２８として図示され、各Ｌ２キャッシュは、プロセッサコア１１４〜１１７に対応する）も実装する。Ｌ２キャッシュ１２５〜１２８の各々は、対応するプロセッサコアに対してプライベートであるが、キャッシュ階層１１８は、Ｌ２キャッシュ１２５〜１２８間のコヒーレンシを維持するように動作する。他の実施形態では、２つ以上のＬ１キャッシュが１つのＬ２キャッシュを共有してもよい。Ｌ３キャッシュレベルの場合、キャッシュ階層１１８は、コンピュータ複合体１０２のプロセッサコアによって共有され、従って、少なくともＬ２キャッシュ１２５〜１２８によって共有されるＬ３キャッシュ１３０を実装する。他の実施形態では、Ｌ３キャッシュレベルは、Ｌ２キャッシュ１２５〜１２８によって共有される複数のＬ３キャッシュを様々な組み合わせで含んでもよい。
【０００７】
インターコネクトファブリック１１０は、各コンピュータ複合体のキャッシュ階層１１８とローカルメモリ１１２との間のインタフェースとして、コンピュータ複合体１０２，１０４，１０６，１０８間のインタフェースとして、及び、処理システム１００の処理ノード１０１と任意の他の処理ノード１３２との間のインタフェースとして動作する。インターコネクトファブリック１１０は、例えば、ＨｙｐｅｒＴｒａｎｓｐｏｒｔファブリック、Ｉｎｆｉｎｉｔｙファブリック等として実装されてもよい。ローカルメモリ１１２は、１つ以上の個別のランダムアクセスメモリ（ＲＡＭ）コンポーネントを含み、いくつかの実施形態では、ＲＡＭコンポーネントとインターコネクトファブリック１１０との間の複数のリンクを含み、各リンクは、別々のコンピュータ複合体に割り当てられてもよい（又は、コンピュータ複合体のサブセットは、インターコネクトファブリック１１０とローカルメモリ１１２との間の所定のリンクを共有してもよい）。
【０００８】
動作において、オペレーティングシステム（ＯＳ）、ハイパーバイザ又はソフトウェアアプリケーションは、或るプロセスを表す命令セットを、実行のためにコンピュータ複合体１０２〜１０８のプロセッサコアに割り当てる。ここで、特定のプロセッサコアによる命令セットの実行は、「スレッド」と呼ばれる。実行の過程で、これらのスレッドは、プロセッサコアを操作して、ローカルメモリ１１２（又は、他の処理ノードのローカルメモリ）からデータをロードするように機能するメモリ要求を発行する。このようなデータは、実行命令、又は、命令の実行中に操作されるオペランドデータを含むことができる。当技術分野で周知のように、このデータは、典型的に、キャッシュ階層１１８の１つ以上のレベルに一時的にキャッシュされて、データアクセス効率を促進する。従って、キャッシュ階層１１８が、スレッドに代わって、キャッシュ階層１１８に有効な状態で記憶されているデータに対するメモリ要求を発行すると、そのメモリ要求は、キャッシュ階層１１８によって効率的に対応される。しかしながら、メモリ要求が、キャッシュ階層１１８によって満たされない（すなわち、キャッシュ階層１１８全体に対して「キャッシュミス」がある）場合、スレッドを実行するコンピュータ複合体のＬ３キャッシュ１３０は、メモリ要求を満たすために、インターコネクトファブリック１１０を介してローカルメモリ１１２にメモリ要求を転送しなければならない。キャッシュ階層１１８が提供するキャッシュ能力を考慮すると、メモリ要求は、典型的に、２つの形態のうち何れかをとる。すなわち、プロセッサコアが、プロセッサコアのレジスタに現在存在しない特定のデータブロックを必要とする命令を実行した需要型メモリ要求と、キャッシュのプリフェッチャが、近い将来にプロセッサコアが必要とするデータを予測し、プロセッサコアがデータに対する需要型メモリ要求を発行した場合にこの予測したデータがキャッシュされるように、この予測したデータを取得するように投機的メモリ要求を発行するプリフェッチ型メモリ要求と、がある。
【０００９】
コンピュータ複合体の各プロセッサコアが典型的に複数のスレッドを同時に実行し、これらのスレッドの各々が、キャッシュ階層１１８によって満たされない需要型メモリ要求及びプリフェッチ型メモリ要求の両方を頻繁に発行し、よって、ローカルメモリ１１２によって満たされる必要がある場合、コンピュータ複合体とローカルメモリ１１２との間のリンクが、輻輳又はオーバーサブスクリプションになる場合があり、コンピュータ複合体とメモリとのリンクのオーバーサブスクリプションは、通常、処理システム１００の全体的なパフォーマンスに影響する。従って、少なくとも一実施形態では、処理ノード１０１は、メモリリンクのオーバーサブスクリプションのリスクを低減するために、処理ノード１０１のメモリリソースコンシューマが発行可能なメモリ要求の速度を選択的にスロットルするように構成されたメモリ帯域幅制限サブシステム１３４をさらに含む。いくつかの実施形態では、このようにスロットルされるメモリリソースコンシューマは、各プロセッサコアの個々のスレッドであり、他の実施形態では、メモリリソースコンシューマは、全体として個々のプロセッサコアである。さらに他の実施形態では、メモリ帯域幅制限サブシステム１３４によってスロットルされるメモリリソースコンシューマは、個々のスレッド及びプロセッサコアをまとめた組み合わせを含む。
【００１０】
以下に詳細に説明するように、いくつかの実施形態では、メモリ帯域幅制限サブシステム１３４は、各コンピュータ複合体１０２〜１０８のキャッシュ階層１１８のキャッシュ内の個別のコンポーネントとして実装され、一部のコンポーネントは、ローカルメモリ１１２に対して発行されたメモリ要求の平均アクセスレイテンシを表すレイテンシメトリックを確認するように、ローカルメモリ１１２に対して発行されたメモリ要求をモニタするように構成されており、他のコンポーネントは、１つ以上のキャッシュレベルのプリフェッチャをモニタして、各メモリリソースコンシューマのキャッシュのプリフェッチャの精度を表すプリフェッチ精度メトリックを確認するように構成されている。次に、メモリ帯域幅制限サブシステム１３４の他のコンポーネントは、メモリリソースコンシューマのアクセスレイテンシメトリック及びプリフェッチ精度メトリックの両方を用いて、メモリリソースコンシューマに適用するスロットルレベルを決定する。このスロットルレベルは、メモリリソースコンシューマに代わってプリフェッチ型メモリ要求を発行する１つ以上のプリフェッチャのプリフェッチャ積極度と、所定の時点でリソースコンシューマが利用可能又は発行可能な保留メモリ要求の最大数と、の一方又は両方を設定するように動作する。そうすることで、メモリ帯域幅制限サブシステム１３４は、任意の所定のメモリリソースコンシューマが消費するメモリ帯域幅を適切に抑制するように動作し、これにより、コンピュータ複合体とローカルメモリ１１２との間のリンクのより効率的な利用を促進する。
【００１１】
いくつかの実施形態では、メモリ帯域幅制限サブシステム１３４は、全体的なシステムパフォーマンスを向上させるようにスロットル制限を動的に設定するように動作するが、他の実施形態では、メモリ帯域幅制限サブシステム１３４は、例えば、分離又は区別のために、ソフトウェアアプリケーション１３６によって課される固定のターゲット帯域幅制限に従ってスロットル制限を設定するように動作する。さらに、他の実施形態では、メモリ帯域幅制限サブシステム１３４は、ソフトウェアによって課されたターゲット帯域幅制限を確実に満たし、ソフトウェアによって課された帯域幅制限に加えて、スロットルレベルを動的に調整するように動作する。これらのアプローチは、図３及び図４を参照して、本明細書でさらに詳細に説明する。
【００１２】
図２は、いくつかの実施形態による、コンピュータ複合体の対応するプロセッサコア２００のキャッシュ階層１１８の一部を示す図である。プロセッサコア２００は、コンピュータ複合体１０２のプロセッサコア１１４〜１１７のうち何れか等のように、処理システム１００のコンピュータ複合体の１つのプロセッサコアを表す。プロセッサコア２００をサポートするキャッシュ階層１１８の図示した部分は、Ｌ１キャッシュ２０２（例えば、Ｌ１キャッシュ１２１〜１２４のうち何れかを表す）と、Ｌ２キャッシュ２０４（例えば、Ｌ２キャッシュ１２５〜１２８のうち何れかを表す）と、Ｌ３キャッシュ２０６（例えば、Ｌ３キャッシュ１３０を表す）と、を含む。Ｌ１キャッシュ２０２、Ｌ２キャッシュ２０４及びＬ３キャッシュ２０６の各々は、キャッシュラインアレイ（それぞれ、キャッシュラインアレイ２０８，２１０，２１２）と、キャッシュラインアレイへのアクセスを制御するキャッシュコントローラ（それぞれ、キャッシュコントローラ２１４，２１６，２１８）と、を含む。キャッシュラインアレイ２０８，２１０，２１２の各々は、データの対応するキャッシュラインを、対応するアドレス、ステータスビット等を含むキャッシュラインのタグライン情報と共に記憶する複数のエントリを含む。さらに、この例では、Ｌ１キャッシュ２０２はプリフェッチャ２２０を含み、Ｌ２キャッシュ２０４はプリフェッチャ２２２を含み、プリフェッチャ２２０，２２２は、各キャッシュのキャッシュラインを投機的にプリフェッチするように構成されている。Ｌ２キャッシュ２０４は、Ｌ３キャッシュ２０６又はローカルメモリ１１２に向けられるＬ２読み出しミスに対するバッファとして機能するミス情報バッファ（ＭＩＢ）２２４を含む。ＭＩＢ２２４は、複数のＭＩＢエントリ２２６を有し、各ＭＩＢエントリ２２６は、キャッシュコントローラ２１６がＬ３キャッシュ２０６又は直接ローカルメモリ１１２に発行するメモリ要求を処理する前に、Ｌ２読み出しミスであった対応する当該メモリ要求に関する情報を記憶するように構成されている。
【００１３】
プロセッサコア２００及びプロセッサコア２００に関連するキャッシュ階層１１８の図示した部分に関して、メモリ帯域幅制限サブシステム１３４は、スロットルコントローラ２２８と、レイテンシトラッカ２３０と、プリフェッチ精度トラッカ２３２と、を含む。一実施形態では、これらのコンポーネントは、図２に示すようにＬ２キャッシュ２０４で実装されるが、他の実施形態では、これらのコンポーネントの一部又は全てが、他のキャッシュレベルで実装されてもよい。レイテンシトラッカ２３０は、プロセッサコア２００に関連するメモリリソースコンシューマによって発行され、ローカルメモリ１１２によって満たされるメモリ要求のアクセスレイテンシをモニタするように構成されており、これらのレイテンシから、メモリ要求を満たす際の現在のレイテンシを表すアクセスレイテンシメトリックをローカルメモリ１１２に提供するように構成されている。例示すると、いくつかの実施形態では、レイテンシトラッカ２３０は、メモリ要求のサンプリングされたサブセットの各々に対して、ローカルメモリ１１２に対して発行されたメモリ要求を満たすのに必要な時間を追跡するトラッカテーブル２３４を維持する。従って、テーブル２３４は、複数のエントリ２３６を含み、各エントリ２３６は、サンプリングされたメモリ要求に関連するアドレス又はアドレス部分を記憶するアドレス（ＡＤＤＲ）フィールド２３８と、対応するサンプリングされたメモリ要求を満たすのに必要な時間又はレイテンシを表す値を記憶するレイテンシ（ＬＴＣＹ）フィールド２４０と、を含む。レイテンシトラッカ２３０は、エントリ２３６のレイテンシフィールド２４０の値によって表されるレイテンシから、平均又は公称のアクセスレイテンシを決定し、この平均アクセスレイテンシ又はこの平均アクセスレイテンシから決定された他の値を、メモリ要求スロットルにおいてスロットルコントローラ２２８が使用するアクセスレイテンシメトリックとして、スロットルコントローラ２２８に提供する。平均アクセスレイテンシは、プロセッサコア２００に関連するメモリリソースコンシューマ毎に別々に決定されてもよい。これらのメモリリソースコンシューマは、メモリへの同じリンクを共有するので、プロセッサコア２００のメモリ要求に対して決定された平均アクセスレイテンシは、（何れのメモリリソースコンシューマがメモリ要求を発行したかに関わらず）プロセッサコア２００の任意の所定のメモリリソースコンシューマの平均アクセスレイテンシを十分に表す。
【００１４】
プリフェッチ精度トラッカ２３２は、Ｌ１キャッシュ２０２のプリフェッチャ２２０と、Ｌ２キャッシュ２０４のプリフェッチャ２２２と、を含む、プロセッサコア２００に代わって動作するプリフェッチャのプリフェッチ精度をモニタするように構成されている。この目的のために、プリフェッチ精度トラッカ２３２は、プロセッサコア２００に代わって動作する各プリフェッチャの精度テーブル２４２を維持する。一実施形態では、各精度テーブル２４２を使用して、対応するプリフェッチャが発行した最近のプリフェッチ型メモリ要求をスレッド毎に追跡し、追跡された各プリフェッチ型メモリ要求が「正確な」プリフェッチであったか否か、すなわち、追跡されたプリフェッチ型メモリ要求に関連するプリフェッチされたキャッシュラインが、最終的にスレッド需要型メモリ要求のターゲットであったか否かを追跡する。従って、いくつかの実施形態では、精度テーブル２４２は、エントリ２４４の行列を有するデータ構造として実施されており、エントリ２４４の各列は、プロセッサコア２００で現在実行されているＮ個のスレッドのうち対応するスレッドに関連付けられており、その列内の各エントリ２４４は、対応するプリフェッチ型メモリ要求のアドレス又は他の識別子を記憶するアドレス（ＡＤＤＲ）フィールド２４６と、対応するキャッシュラインが、最終的にスレッド需要型メモリ要求のターゲットであったかどうかを示す値（例えば、「０」は、プリフェッチされたキャッシュラインが、正確な投機プリフェッチではなかったことを示し、「１」は、プリフェッチされたキャッシュラインが、正確な投機プリフェッチであったことを示す１つのビット値）を記憶する精度（ＡＣＣＹ）フィールド２４８と、を有する。このようにして、プリフェッチ精度トラッカ２３２は、プリフェッチャ２２０，２２２が発行したプリフェッチをモニタし、それに応じて、対応する精度テーブル２４２をポピュレートする。次に、プリフェッチ精度トラッカ２３２は、精度テーブル２４２のエントリ２４４のフィールド２４８に示されたプリフェッチ精度を定期的又は連続的に評価し、この情報から、対応するプリフェッチャのプリフェッチ精度を表すプリフェッチ精度メトリックを決定して、更新する。異なるスレッドは、他のスレッドよりも正確なプリフェッチ推測の影響を受けやすいので、一実施形態では、プリフェッチ精度トラッカ２３２は、スレッド毎に別々のプリフェッチ精度メトリックを決定して、維持する。他の実施形態では、対応するプリフェッチャの全てのスレッド（又は、２つ以上のスレッドのサブセット）について、１つプリフェッチ精度メトリックが決定される。
【００１５】
スロットルコントローラ２２８は、レイテンシトラッカ２３０からの現在のアクセスレイテンシメトリックと、プリフェッチ精度トラッカ２３２からの１つ以上の現在のプリフェッチ精度メトリックと、の一方又は両方を使用して、プロセッサコア２００に関連する対応するメモリリソースコンシューマが、ローカルメモリ１１２によって満たされるメモリ要求の発行を許可される速度を設定又はスロットルするように構成されており、これにより、メモリリソースコンシューマに起因する現在のメモリ帯域幅利用を変更するように構成されている。以下により詳細に説明するように、少なくとも一実施形態では、レイテンシトラッカ２３０は、レイテンシメトリック及び対応するプリフェッチ精度メトリックの一方又は両方に基づいて、所定のスロットルレベルのセットからメモリリソースコンシューマの特定のスロットルレベルを選択することによって、メモリリソースコンシューマをスロットルする。この各スロットルレベルのセットは、メモリリソースコンシューマが発行可能なメモリ要求の数に影響を与える異なるパラメータを構成し、これには、プリフェッチャ積極度のパラメータを設定して、所定のプリフェッチャがメモリリソースコンシューマに代わってプリフェッチ型メモリ要求を発行する速度を制御すること、（メモリリソースコンシューマがメモリリソースコンシューマに代わって発行したメモリへの直接メモリ要求の総数を制御する）メモリリソースコンシューマが利用可能な保留メモリ要求の最大数のパラメータを設定すること、又は、これらの組み合わせが含まれる。少なくとも一実施形態では、このスロットルレベルのセットは、スロットルレベルテーブル２５０として実装され、スロットルレベルテーブル２５０は、ハードコードされ、実装時にヒューズ又は他のワンタイムプログラム可能要素を介してプログラムされ、インテグレータ又はユーザによってソフトウェア可視レジスタ等を介してプログラムされた等のデータ構造を含む。このスロットル設定プロセスについては、図３を参照して以下により詳細に説明する。
【００１６】
プリフェッチ精度及びメモリ要求レイテンシをモニタすることに基づいて、メモリ要求スロットルレベルを動的に調整することに加えて、又はその代わりに、いくつかの実施形態では、ソフトウェアアプリケーション（例えば、図１のソフトウェアアプリケーション１３６）は、ソフトウェアアプリケーションの１つ以上のスレッドの最大メモリ帯域幅利用メトリックを指定し、スロットルコントローラ２２８は、スロットルレベルを切り替えて、１つ以上のスレッド毎に、指定した最大帯域幅利用メトリックを満たすスロットルレベルを見つけるように構成されている。従って、少なくとも一実施形態では、プロセッサコア２００は、ストレージ要素２５２（例えば、レジスタ）を含むか、ストレージ要素２５２へのアクセスを有し、ソフトウェアアプリケーションは、対応するスレッドの最大メモリ帯域幅利用についてソフトウェアが指定した制限を表す値をストレージ要素２５２に記憶させる少なくとも１つの命令を実行し、この値は、そのスレッドを実施するためにスロットルコントローラ２２８に通信される。このソフトウェアが定義したスロットルプロセスは、図４を参照して以下により詳細に説明する。
【００１７】
図３は、いくつかの実施形態による、処理システム１００のコンピュータ複合体の特定のスレッド、特定のプロセッサコア、又は、他の特定のメモリリソースコンシューマのメモリ要求スロットルレベルを動的に調整する例示的な方法３００を示す図である。説明を容易にするために、方法３００は、図１の処理システム１００の例示的な実施形態と、図２のキャッシュ階層１１８及びメモリ帯域幅制限サブシステム１３４の例示的な実施形態とに関連して説明する。
【００１８】
方法３００は、アクセスレイテンシモニタリングプロセス３０１、プリフェッチ精度モニタリングプロセス３０２及びスロットルレベル設定プロセス３０３という、並列に動作する３つのプロセスを含む。レイテンシモニタリングプロセス３０１は、ブロック３０４で開始し、Ｌ２キャッシュ２０４は、プロセッサコア２００からのメモリ要求をフィルタリングして、ローカルメモリ１１２に対して発行するメモリへの直接メモリ要求を識別する。すなわち、プロセッサコア２００を実装するコンピュータ複合体のキャッシュ階層１１８のキャッシュによって満たすことができず、メモリ要求を満たすためにローカルメモリ１１２に送信されるメモリ要求を識別する。説明すると、メモリ要求がプロセッサコア２００からキャッシュ階層１１８に発行されると、１つ以上のプローブがキャッシュ階層１１８の各キャッシュに送信され、要求されたデータを有するキャッシュラインが少なくとも１つのキャッシュに存在して有効であるか否かを判別することができる。プローブが、このような有効なキャッシュラインがキャッシュ階層１１８にキャッシュされていないことを明らかにした場合、Ｌ３キャッシュ２０６は、ローカルメモリ１１２によって対応する（fulfillment）ために、メモリ要求をインターコネクトファブリック１１０に転送する。同時に、レイテンシトラッカ２３０は、メモリへの直接要求に対してトラッカテーブル２３４にエントリ２３６を割り当てる。
【００１９】
ブロック３０６において、レイテンシトラッカ２３０は、メモリ要求が満たされるのにかかる時間を追跡し、このレイテンシを表す値を、メモリ要求に対して割り当てられたエントリ２３６に記憶する。一実施形態では、レイテンシトラッカ２３０は、メモリ要求がコンピュータ複合体から発行されると、ローカルクロックソースから得られたスタートタイムスタンプをレイテンシフィールド２４０に記憶し、メモリ要求からのデータがコンピュータ複合体のローカルメモリ１１２から受信されると、ローカルクロックソース（例えば、システムタイムクロック）から得られたストップタイムスタンプを記憶し、これらの２つのタイムスタンプの間の差としてレイテンシを計算し、この差を表す値をレイテンシフィールド２４０に記憶する。
【００２０】
ブロック３０４及び３０６のプロセスは、複数のエントリ２３６にメモリへの直接メモリ要求のレイテンシ値をポピュレートするように、プロセッサコア２００に対して発行されたメモリへの直接メモリ要求の一部又は全てについて繰り返される。いくつかの実施形態では、メモリへの直接メモリ要求の各々は、モニタされ、トラッカテーブル２３４に記録されるが、他の実施形態では、メモリへの直接要求は、追跡するメモリへの直接メモリ要求のサンプルセットを決定するために、或る固定又は動的に調整可能な割合（例えば、メモリへの直接アクセス要求の５回に１回がモニタされる、又は、特定のアドレス範囲へのメモリへの直接メモリ要求のみがモニタされる等）でサンプリングされ、このサンプルセットは、トラッカテーブル２３４内で維持され、更新される。トラッカテーブル２３４は、限られた数のエントリ２３６を有し、従って、スライドウィンドウ分析を実施するために、レイテンシトラッカ２３０は、トラッカテーブル２３４が一杯の場合に、最長時間未使用（ＬＲＵ）プロセスを実施して、古いエントリ２３６を、新たに識別されたメモリへの直接メモリ要求で上書きする。
【００２１】
ブロック３０８において、周期的に、又は、何らかのトリガに応じて、レイテンシトラッカ２３０は、トラッカテーブル２３４の占有エントリ２３６（又は、そのサブセット）のレイテンシフィールド２４０のレイテンシの値を評価して、プロセッサコア２００によってローカルメモリ１１２に発行された最近のメモリ要求のレイテンシを表す更新されたアクセスレイテンシメトリックを決定する。いくつかの実施形態では、レイテンシトラッカ２３０は、考慮されたアクセスレイテンシ値から現在の平均又は公称のレイテンシ値を決定し、この現在の平均レイテンシの表現を、更新されたアクセスレイテンシメトリックとして提供する。他の実施形態では、レイテンシトラッカ２３０は、中央値アクセスレイテンシに基づいて、最大アクセスレイテンシに基づいて、最小アクセスレイテンシに基づいて、トリミングされた平均アクセスレイテンシ等に基づいて、更新されたアクセスレイテンシメトリックを決定する。次に、更新されたアクセスレイテンシメトリックは、スロットルコントローラ２２８に利用可能となり、次の更新の反復のためにブロック３０８が繰り返される。
【００２２】
プリフェッチ精度モニタリングプロセス３０２に戻ると、このプロセスは、プリフェッチ精度トラッカ２３２によってモニタされる各プリフェッチャ（例えば、Ｌ１キャッシュ２０２のプリフェッチャ２２０及びＬ２キャッシュ２０４のプリフェッチャ２２２）について並列に行われる。さらに、上述したように、プリフェッチ精度は、構成に応じて、スレッド毎に又はコア毎にモニタされてもよい。説明のために、プロセス３０２は、スレッド毎に説明されるが、この同じアプローチは、本明細書に記載のガイドラインを用いて、コア毎のアプローチに容易に適合される。プロセス３０２は、ブロック３１０で開始し、対象のプリフェッチャが、プリフェッチアルゴリズムを実施して、キャッシュラインのデータが最終的に対応するスレッドによって要求されると予測して、投機的にプリフェッチする次のキャッシュラインを識別し、ローカルメモリ１１２からそのキャッシュラインにアクセスするプリフェッチ型メモリ要求を発行する。このプリフェッチ型メモリ要求を発行することに応じて、プリフェッチ精度トラッカ２３２は、対応するスレッドに関連して、プリフェッチ型メモリ要求に対して精度テーブル２４２のエントリ２４４を割り当てる。
【００２３】
ブロック３１２において、プリフェッチ精度トラッカ２３２は、精度テーブル２４２に示されたプリフェッチ型メモリ要求のプリフェッチ精度を決定する。このため、プリフェッチ精度トラッカ２３２は、スレッドに代わって発行された需要型メモリ要求をモニタし、精度テーブル２４２に示されたプリフェッチ型メモリ要求のターゲットであったキャッシュラインに対して需要型メモリ要求が発行されると、プリフェッチ精度トラッカ２３２は、そのキャッシュラインのプリフェッチが正確なプリフェッチであったことを反映するように、そのプリフェッチ型メモリ要求に割り当てられたエントリ２４４の精度フィールド２４８を更新する（例えば、フィールド２４８に「１」を書き込む）。そうではなく、プリフェッチされたキャッシュラインが、一定期間内に、後続の需要型メモリ要求のターゲットではない（すなわち、スレッドが、プリフェッチされたデータを「使用」しない）場合、プリフェッチ精度トラッカ２３２は、そのキャッシュラインのプリフェッチが不正確又は誤っていることを反映するように（例えば、フィールド２４８に「０」を書き込む又は維持することによって）、精度フィールド２４８を更新する。
【００２４】
ブロック３１４において、周期的に、又は、トリガに応じて、プリフェッチ精度トラッカ２３２は、精度テーブル２４２に基づいて、スレッドのプリフェッチ精度メトリックを更新し、これにより、プリフェッチ精度メトリックは、スレッドのキャッシュラインをプリフェッチするプリフェッチャの精度を表す。プリフェッチ精度は、スレッドのプリフェッチの総数に対する、スレッドの正確なプリフェッチの総数の割合として表すことができるので、いくつかの実施形態では、プリフェッチ精度トラッカ２３２は、正確なプリフェッチを示す（例えば、対応するエントリ２４４の精度フィールド２４８に「１」を有する）精度テーブル２４２のスレッドのエントリ２４４の総数を決定し、精度テーブル２４２のスレッドのエントリ２４４の総数を決定し、これらの２つの数の比に基づいて、プリフェッチ精度メトリックの現在の値を決定する。ブロック３１４のプロセスは、プリフェッチ精度トラッカ２３２によってモニタされるスレッドの一部又は全てに対して繰り返される。
【００２５】
プロセス３０１，３０２と同時に、スロットルレベル設定プロセス３０３の反復は、周期的に、又は、他のトリガイベントに応じて、スロットルコントローラ２２８によって行われる。プロセス３０３の反復は、ブロック３１６によって表され、ブロック３１６において、スロットルコントローラ２２８は、プロセス３０１及びプロセス３０２の各々の最近の反復におけるメモリリソースコンシューマの現在のアクセスレイテンシメトリック及びプリフェッチ精度メトリックの一方又は両方に基づいて、スレッド、プロセッサコア、又は、他のメモリリソースコンシューマのスロットルレベルを設定する。説明を容易にするために、以下では、メモリリソースコンシューマがプロセッサコア２００のスレッドであると仮定するが、本明細書に記載した技術は、本明細書で提供するガイドラインを使用して、メモリリソースコンシューマがプロセッサコア又は他のメモリリソースコンシューマである実施形態でも使用されるように容易に適合される。
【００２６】
スレッドに設定された所定のスロットルレベルは、スレッドに代わってメモリ要求がローカルメモリ１１２に発行される速度を制限するように動作し、従って、プロセッサコアを使用するコンピュータ複合体とローカルメモリ１１２との間の帯域幅をスレッドが使用する量を制限する。この制限は、様々な方法の何れか、又は、これらの組み合わせで実現されてもよい。ブロック３１８に示すように、スロットルレベルは、任意の所定の時点でスレッドに利用可能な保留メモリ要求の数を設定又は変更してもよく、これにより、スレッドに代わって発行可能なメモリ要求の速度が制限される。上述したように、ＭＩＢ２２４（図２）は、キャッシュ階層１１８でミスしたメモリ要求を記憶するＬ２キャッシュ２０４のバッファとして機能し、メモリ要求を満たすためにローカルメモリ１１２への発行を待つ。従って、一実施形態では、Ｌ２キャッシュ２０４のキャッシュコントローラ２１６は、スレッドに設定されたスロットルレベルに基づいて、そのスレッドが使用可能なＭＩＢエントリ２２６の数を変更してもよい。スレッドが、そのスレッドに利用可能な全てのＭＩＢエントリ２２６を使用すると、スレッドは、それ以上のメモリ要求をローカルメモリ１１２に発行することができず、従って、スレッドが利用可能なＭＩＢエントリ２２６の数を制限することは、スレッドがローカルメモリ１１２に発行可能なメモリ要求の最大数を制御するように動作する。
【００２７】
ブロック３２０，３２２，３２４によって表されるように、所定のスレッドに対して設定されたスロットルレベルは、当該スレッドのプリフェッチを発行する際のプリフェッチャ積極度を変更することもできる。プリフェッチャによって実施されるプリフェッチアルゴリズムは、プリフェッチ信頼度及びプリフェッチ距離等を含む幾つかの要因によって制御される。プリフェッチ信頼度は、プリフェッチされたデータがその後にスレッドによって使用されるという信頼性の尺度を意味し、プリフェッチャアルゴリズムは、通常、或る閾値未満のプリフェッチ信頼度を有する可能性のあるプリフェッチが、投機的プリフェッチ型メモリ要求として発行することを許可されないように構成されている。プリフェッチ距離は、プリフェッチャがプリフェッチを許可したスレッドの投機的メモリ要求ストリームがどのくらい先行しているかを反映しており、従って、スレッドに代わってプリフェッチメモリ要求が発行される速度を、プリフェッチ信頼度との組み合わせによって有効に制限する。従って、プリフェッチャの「積極度」は、プリフェッチャが使用するプリフェッチ信頼度閾値又はプリフェッチ距離の一方又は両方によって反映される。このように、いくつかの実施形態では、プリフェッチャ積極度は、ブロック３２０でプリフェッチャ距離を調整すること、プリフェッチャの最小信頼度閾値を調整すること（ブロック３２２）、及び、プリフェッチを全体的に有効又は無効にすること、のうち１つ以上によって抑制される。これらの１つ以上の方法でプリフェッチャ積極度を変更することによって、スロットルコントローラ２２８は、プリフェッチャがスレッドに代わってプリフェッチ型メモリ要求を発行する速度を有効に変更し、これにより、結果として、スレッドに起因するメモリ帯域幅利用を有効に変更する。
【００２８】
上述したように、いくつかの実施形態では、Ｌ１キャッシュ２０２のプリフェッチャ２２０及びＬ２キャッシュ２０４のプリフェッチャ２２２等のように、スレッドに代わって動作して、スレッドのためにデータのプリフェッチを試みる複数のプリフェッチャが存在する。しかしながら、これらのプリフェッチャは、様々な理由により、スレッドに対して異なるプリフェッチャ精度を有し得る。従って、いくつかの実施形態では、スロットルコントローラ２２８は、各プリフェッチャ精度に基づいて、同じスレッドについて、異なるプリフェッチャに対して異なるスロットルレベルを設定する。他の実施形態では、スロットルコントローラ２２８は、例えば、最良のプリフェッチ精度又は最悪のプリフェッチ精度に基づいて、単一のスロットルレベルを選択し、この同じスロットルレベルをスレッドの各プリフェッチャに適用する。
【００２９】
スロットルコントローラ２２８は、様々な技術のうち何れかを用いてスロットルレベルを選択してもよい。いくつかの実施形態では、スロットルコントローラ２２８は、対応するアクセスレイテンシ範囲及びプリフェッチ精度範囲のペアについて対応するスロットルレベルを指定するスロットルレベルテーブル２５０を使用する。従って、スレッドに対して設定するスロットルレベルを決定するために、スロットルコントローラ２２８は、そのスレッドの現在のアクセスレイテンシメトリックと現在のプリフェッチ精度メトリックとに基づいて、スロットルレベルテーブル２５０のルックアップを行い、そのスレッドに対して設定する対応するスロットルレベルを決定する。以下の表１は、スロットルレベルテーブル２５０の例示的な実施形態を示す。
【表１】
2021506026.tif 000003
【００３０】
スロットルレベル０は、スレッドに対して、スロットルを行わないこと、又は、デフォルトのスロットルであることに留意されたい。
【００３１】
他の実施形態では、所定のメトリックのセットに対して特定のスロットルレベルを使用するのではなく、スロットルコントローラ２２８は、スレッドのメトリックが特定の閾値を満たすまで、そのスレッドのスロットルの重要度（severity）を繰り返し増加させる。例えば、一実施形態では、スロットルコントローラ２２８は、追跡している全てのスレッドのプリフェッチャの平均プリフェッチ精度を決定し、所定のスレッドのプリフェッチ精度メトリックがこの平均プリフェッチ精度をある程度（例えば、平均プリフェッチ精度の１５０％）超えると、スロットルコントローラ２２８は、スレッドの更新されたプリフェッチ精度メトリックがこの閾値未満になるまで、スレッドのメモリ要求スロットルの重要度を繰り返し増加させてもよい。
【００３２】
図４は、いくつかの実施形態による、ソフトウェアによって定義されたメモリ帯域幅制限をスレッドに提供する方法４００を示す図である。上述したように、いくつかの実施形態では、ソフトウェアアプリケーション（例えば、図１のソフトウェアアプリケーション１３６）は、コンピュータ複合体のプロセッサコア２００によって実行されるソフトウェアアプリケーションのスレッドに対して、ターゲットメモリ帯域幅利用制限を設定する。従って、方法４００は、ブロック４０２で開始し、ソフトウェアアプリケーションは、例えば、プロセッサコア２００に、制限を表す値をストレージ要素２５２（図２）に記憶させる１つ以上の命令を実行することによって、このターゲット制限を設定する。いくつかの実施形態では、この値は、スレッドの特定の最大メモリ要求発行速度（例えば、１マイクロ秒毎にＸ個のメモリへの直接メモリ要求）を表す。これに応じて、スロットルコントローラ２２８は、ソフトウェアによって定義されたターゲット制限値に基づいて、スレッドの初期スロットルレベルを設定して、実施する。いくつかの実施形態では、初期スロットルレベルは、デフォルトのスロットルレベル（例えば、スロットルレベル０又はスロットル無し）に設定されるが、他の実施形態では、スロットルコントローラ２２８は、コンピュータ複合体又はプロセッサコア２００の現在のアクセスレイテンシメトリックに基づいて、ターゲット帯域幅制限値に適した対応するスロットルレベルを推定する。
【００３３】
ブロック４０６において、レイテンシトラッカ２３０は、例えば、スレッドに代わって発行されたメモリへの直接メモリ要求の現在の速度を追跡することによって、スレッドによる現在の実際のメモリ帯域幅利用をモニタする。ブロック４０８において、スロットルコントローラ２２８は、モニタされた実際のメモリ帯域幅利用を、ソフトウェアが設定したターゲットメモリ利用帯域幅制限と比較する。ソフトウェアによって定義されたターゲットメモリ帯域幅利用制限を満たす場合、ブロック４１０において、スロットルコントローラ２２８は、スレッドのスロットルレベルをより制限の少ないスロットルレベルに調整し、ブロック４０６において、より制限の少ないスロットルレベルでのスレッドのモニタリングに戻る。そうではなく、ソフトウェアによって定義されたターゲット制限が、モニタされた実際のメモリ帯域幅利用によって満たされない場合、ブロック４１２において、スロットルコントローラ２２８は、スレッドのスロットルレベルをより制限の多いスロットルレベルに調整し、ブロック４０６に戻って、より制限の多いスロットルレベルでスレッドをモニタする。このようにして、スロットルコントローラ２２８は、ソフトウェアによって定義されたターゲット制限に適したスロットルレベルにダイヤルインする。上記の表１を用いた例として、ブロック４０４において、スロットルコントローラ２２８が、スレッドの初期スロットルレベルとしてスロットルレベル５を設定したと仮定する。スロットルレベル５において、スレッドが、ソフトウェアによって定義された制限によって表される最大値よりも低い速度でメモリへの直接要求を発行する場合、スロットルコントローラ２２８は、ブロック４１０において、スロットルレベルをスロットルレベル４にデクリメントしてもよい。そうではなく、メモリ要求発行の速度が最大値を超える場合、スロットルコントローラ２２８は、ブロック４１２においてスロットルレベルをスロットルレベル５にインクリメントし、これにより、ソフトウェアによって定義された制限を満たすように、メモリ要求発行の速度をさらに抑制してもよい。
【００３４】
いくつかの実施形態では、メモリ帯域幅制限サブシステム１３４は、方法３００によって表される動的ハードウェア制御メモリ要求スロットルと、方法４００によって表されるソフトウェアによって定義されたメモリ要求スロットルと、の両方を実施してもよい。このような場合、ソフトウェアによって定義されたターゲットメモリ帯域幅利用制限は、方法４００に従って、スロットルコントローラ２２８によって使用され得る最も制限の少ないメモリスロットルレベルを制御し、スロットルコントローラ２２８は、動的スロットルレベル設定方法３００に従って、より制限の多いスロットルレベルを実施することができる。
【００３５】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行する処理システムの１つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の１つ以上のセットを含む。ソフトウェアは、１つ以上のプロセッサによって実行されると、上記の技術の１つ以上の態様を実行するように１つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ（ＲＡＭ）、又は、他の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【００３６】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、１つ以上のさらなるアクティビティが実行される場合があり、１つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【００３７】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
【図１】
2021506026.tif 000004
【図２】
2021506026.tif 000005
【図３】
2021506026.tif 000006
【図４】
2021506026.tif 000007
【手続補正書】
【提出日】令和2年8月18日(2020.8.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
処理システムのメモリ要求スロットルの方法であって、
前記処理システムのキャッシュのレイテンシトラッカにおいて、前記処理システムのプロセッサコアのメモリ要求の平均アクセスレイテンシを表すアクセスレイテンシメトリックを決定することと、
前記キャッシュのプリフェッチ精度トラッカにおいて、前記プロセッサコアに関連するキャッシュのプリフェッチャの精度を表すプリフェッチ精度メトリックを決定することと、
前記キャッシュのスロットルコントローラにおいて、前記アクセスレイテンシメトリックと前記プリフェッチ精度メトリックとのうち少なくとも１つに基づいて、前記プロセッサコアによって発行可能なメモリ要求の速度をスロットルすることと、を含む、
方法。
【請求項２】
前記プロセッサコアにおいてソフトウェアアプリケーションを実行することであって、前記ソフトェアアプリケーションは、前記ソフトウェアアプリケーションのスレッドのターゲットメモリ利用帯域幅制限を設定するように前記プロセッサコアを構成するための少なくとも１つの命令を含む、ことと、
前記プロセッサコアを含むコンピュータ複合体において前記スレッドの実際のメモリ利用帯域幅をモニタすることと、
前記モニタされた実際のメモリ利用帯域幅が前記ターゲットメモリ利用帯域幅を満たすまで、前記スレッドに設定されたスロットルレベルをインクリメントするように変更することと、を含み、
前記スロットルレベルは、前記スレッドに関連するキャッシュのプリフェッチャ積極度と、前記スレッドが利用可能な保留トランザクションの最大数と、のうち少なくとも１つを構成する、
請求項１の方法。
【請求項３】
前記プロセッサコアによって発行可能なメモリ要求の速度をスロットルすることは、
前記アクセスレイテンシメトリックと前記プリフェッチ精度メトリックとのうち少なくとも１つに基づくプリフェッチャ積極度、及び、前記プロセッサコアが利用可能な保留メモリ要求の最大数のうち少なくとも一方を変更することを含む、
請求項１の方法。
【請求項４】
前記プリフェッチャ積極度を変更することは、
前記プリフェッチャの最大プリフェッチ距離を変更することと、
前記プリフェッチャの最小プリフェッチ信頼度を変更することと、
前記プリフェッチャを選択的に無効にすることと、
のうち少なくとも１つを含む、
請求項３の方法。
【請求項５】
前記プロセッサコアによって発行可能なメモリ要求の速度をスロットルすることは、
前記プロセッサコアが利用可能な保留メモリ要求の最大数を変更することを含む、
請求項１の方法。
【請求項６】
前記プリフェッチ精度メトリックを決定することは、前記プロセッサコアで実行される特定のスレッドの前記プリフェッチ精度メトリックを決定することを含み、
前記プロセッサコアが発行可能なメモリ要求の速度をスロットルすることは、前記特定のスレッドに関する前記プロセッサコアによって発行可能なメモリ要求の速度をスロットルすることを含む、
請求項１の方法。
【請求項７】
前記アクセスレイテンシメトリックを決定することは、
前記プロセッサコアに関連するローカルメモリに発行された複数のメモリ要求をサンプリングして、メモリ要求のサンプルセットを生成することと、
前記サンプルセットのメモリ要求毎に、前記メモリ要求を満たすための対応するアクセスレイテンシを測定することと、
前記メモリ要求のサンプルセットについて測定されたアクセスレイテンシの平均に基づいて、前記アクセスレイテンシメトリックを決定することと、を含む、
請求項１の方法。
【請求項８】
前記プロセッサコアによって発行可能なメモリ要求の速度をスロットルすることは、
複数のスロットルレベルを表すデータ構造にアクセスすることであって、各スロットルレベルは、利用可能な保留メモリトランザクションの最大数と、プリフェッチャ積極度のレベルとのうち少なくとも１つに対応する変更を表し、各スロットルレベルは、対応するレイテンシ閾値又は対応するプリフェッチ精度閾値のうち少なくとも１つに関連付けられている、ことと、
前記アクセスレイテンシメトリック及び前記プリフェッチ精度メトリックと、前記複数のスロットルレベルの各々のレイテンシ閾値及びプリフェッチ精度閾値と、の比較に基づいて、前記プロセッサコアに対して実施するスロットルレベルを選択することと、を含む、
請求項１の方法。
【請求項９】
ローカルメモリに接続可能なインターコネクトファブリックと、
前記インターコネクトファブリックに接続された少なくとも１つのコンピュータ複合体と、を備える処理システムであって、
前記コンピュータ複合体は、
プロセッサコアと、
キャッシュ階層と、を備え、
前記キャッシュ階層は、
複数のキャッシュと、
アクセスレイテンシメトリックとプリフェッチ精度メトリックとのうち少なくとも１つに基づいて、前記プロセッサコアによって発行可能なメモリ要求の速度をスロットルするように構成されたスロットルコントローラと、を備え、
前記アクセスレイテンシメトリックは、前記プロセッサコアのメモリ要求に対する平均アクセスレイテンシを表し、
前記プリフェッチ精度メトリックは、前記キャッシュ階層のキャッシュのプリフェッチャの精度を表す、
処理システム。
【請求項１０】
前記スロットルコントローラは、
前記アクセスレイテンシメトリックと前記プリフェッチ精度メトリックとのうち少なくとも１つに基づくプリフェッチャ積極度、及び、前記プロセッサコアが利用可能な保留メモリ要求の最大数のうち少なくとも一方を変更することによって、
前記プロセッサコアによって発行可能なメモリ要求の速度をスロットルするように構成されている、
請求項９の処理システム。
【請求項１１】
前記スロットルコントローラは、
前記プリフェッチャの最大プリフェッチ距離を変更することと、
前記プリフェッチャの最小プリフェッチ信頼度を変更することと、
前記プリフェッチャを選択的に無効にすることと、
のうち少なくとも１つによって、前記プリフェッチャ積極度を変更するように構成されている、
請求項１０の処理システム。
【請求項１２】
前記スロットルコントローラは、
前記プリフェッチャの最小プリフェッチ信頼度を変更することによって、
前記プリフェッチャ積極度を変更するように構成されている、
請求項１０の処理システム。
【請求項１３】
前記スロットルコントローラは、
前記プロセッサコアが利用可能な保留メモリ要求の最大数を変更することによって、
前記プロセッサコアによって発行可能なメモリ要求の速度をスロットルするように構成されている、
請求項９の処理システム。
【請求項１４】
前記キャッシュ階層は、
前記プロセッサコアで実行される特定のスレッドの前記プリフェッチ精度メトリックを決定するように構成されたプリフェッチ精度トラッカをさらに備え、
前記スロットルコントローラは、前記特定のスレッドに関する前記プロセッサコアによって発行可能なメモリ要求の速度をスロットルするように構成されている、
請求項９の処理システム。
【請求項１５】
前記キャッシュ階層は、
前記プロセッサコアに関連するローカルメモリに発行された複数のメモリ要求をサンプリングして、メモリ要求のサンプルセットを生成することと、
前記サンプルセットのメモリ要求毎に、前記メモリ要求を満たすための対応するアクセスレイテンシを測定することと、
メモリ要求のサンプルセットについて測定されたアクセスレイテンシの平均に基づいて、前記アクセスレイテンシメトリックを決定することと、
によって、前記アクセスレイテンシメトリックを決定するレイテンシトラッカをさらに備える、
請求項９の処理システム。
【国際調査報告】
2021506026.tif 000008
2021506026.tif 000009