(57)【要約】システムは、スケジューラ［１１１］を含むマルチコアプロセッサ［１０２］を含む。マルチコアプロセッサは、システムメモリ［１０３］及びオペレーティングシステム［１２０］と通信する。マルチコアプロセッサは、第１のプロセスと第２のプロセスとを実行する。システムは、スケジューラを使用して、第１の設定点がレイテンシ依存性（ＬＳ）フロア以下である場合には、第１のプロセスによる制御サイクルにおける現在の使用が第１のプロセスの使用の第１の設定点［１２９］を満たすまで、又は、第１の設定点がＬＳフロアを超えた場合には、第１のプロセスによる制御サイクルにおける現在の使用がＬＳフロアを超えるまで、第２のプロセスによるメモリ帯域幅の使用を制御する。【選択図】図１
2021508108.tif 000002
【特許請求の範囲】
【請求項１】
システムメモリ及びオペレーティングシステムと通信するプロセッサであって、
第１のプロセス及び第２のプロセスを実行する複数のプロセッサコアと、
スケジューラと、を備え、
前記スケジューラは、
第１の設定点が前記第１のプロセスのレイテンシ依存性（ＬＳ）フロア以下である場合に、前記第１のプロセスによる制御サイクルにおける現在の使用が、メモリ帯域幅の使用に対応する前記第１の設定点を満たすまで、又は、
前記第１の設定点が前記ＬＳフロアを超えた場合に、前記第１のプロセスによる前記制御サイクルにおける現在の使用が前記ＬＳフロアを超えるまで、
前記第２のプロセスによる前記メモリ帯域幅の使用をスケジュールするように構成されている、
プロセッサ。
【請求項２】
前記スケジューラは、
将来の制御サイクルにおける前記第１のプロセスによる前記メモリ帯域幅の使用を推定することによって、前記第１の設定点を決定するように構成されている、
請求項１のプロセッサ。
【請求項３】
前記ＬＳフロアは、前記プロセッサの第１のコアによる前記メモリ帯域幅の使用の制限に対応しており、
前記第１のプロセスの前記第１の設定点は、前記第１のコアに関連付けられており、
前記第１のプロセスによる現在の使用は、前記第１のコアによる前記メモリ帯域幅の使用である、
請求項１のプロセッサ。
【請求項４】
前記スケジューラは、
システムレイテンシ閾値を記憶することと、
前記システムレイテンシ閾値を現在のシステムプロセスレイテンシと比較することによって、前記システムレイテンシ閾値のシステムプロセスレイテンシ違反を判別することと、
前記システムプロセスレイテンシ違反が解決されるまで、前記第２のプロセスの実行を制御することと、
を行うように構成されている、
請求項１のプロセッサ。
【請求項５】
前記スケジューラは、
前記システムプロセスレイテンシ違反が解決されるまで、前記第１のプロセスの実行をスロットルするように構成されている、
請求項４のプロセッサ。
【請求項６】
前記スケジューラは、
システムレイテンシ閾値を記憶することと、
前記システムレイテンシ閾値を現在のシステムプロセスレイテンシと比較することによって、前記システムレイテンシ閾値のシステムプロセスレイテンシ違反を判別することと、
現在の制御サイクルにおける前記第２のプロセスによる前記メモリ帯域幅の使用の制限に少なくとも基づいて、前記第１のプロセス及び前記第２のプロセスの制御方式を生成することと、
前記現在の制御サイクルの後続の制御サイクルにおいて前記制限を下げることによって、前記現在のシステムプロセスレイテンシが前記システムレイテンシ閾値に違反しなくなるまで前記制御方式を適用することと、
を行うように構成されている、
請求項１に記載のプロセッサ。
【請求項７】
前記システムレイテンシ閾値のためのレジスタを備え、前記レジスタは、前記オペレーティングシステムにおいて前記第１のプロセスが起動する場合に、前記オペレーティングシステムのアプリケーションプログラムインタフェース（ＡＰＩ）を介してアクセス可能である、
請求項６のプロセッサ。
【請求項８】
前記ＬＳフロアのためのレジスタを備え、前記レジスタは、前記オペレーティングシステムにおいて前記第１のプロセスが起動する場合に、前記オペレーティングシステムのアプリケーションプログラムインタフェース（ＡＰＩ）を介してアクセス可能である、
請求項１のプロセッサ。
【請求項９】
デバイスのプロセッサのスケジューラによって、前記デバイスの前記プロセッサ上で実行されている非レイテンシ依存性（ＮＬＳ）プロセスによる前記デバイスのメモリ帯域幅の現在の使用を判別することと、
前記スケジューラによって、前記プロセッサ上で実行されているレイテンシ依存性（ＬＳ）プロセスによる前記メモリ帯域幅の現在の使用を判別することと、
前記ＬＳプロセスが前記メモリ帯域幅の少なくともＬＳフロアを使用することを要求する場合であって、前記現在の使用が、前記ＬＳプロセスが前記メモリ帯域幅の少なくともＬＳフロアの量を使用できないことを示す場合に、前記スケジューラによって、全体的なＮＬＳスロットル値を決定することと、
前記スケジューラによって、前記全体的なＮＬＳスロットル値に基づいて、前記ＮＬＳプロセスのスロットル方式を決定することと、
前記プロセッサによって、前記スロットル方式に基づいて、第１のスロットルを前記ＮＬＳプロセスの第１のＮＬＳプロセスに適用することであって、前記第１のスロットルは、前記メモリ帯域幅の消費量の低減を含む、ことと、を含む、
方法。
【請求項１０】
前記ＬＳプロセスが、少なくともＬＳフロアの使用量を使用できない場合、及び、前記ＬＳプロセスが、少なくとも前記メモリ帯域幅の前記ＬＳフロアを使用するように要求する場合に、前記スケジューラによって、前記ＬＳプロセスのための第２のスロットルの量を決定することと、
前記プロセッサによって、少なくとも１つの制御サイクルの間に、前記第２のスロットルを前記ＬＳプロセスに適用することと、を含む、
請求項９の方法。
【請求項１１】
前記プロセッサは、第１のコアと第２のコアとを含むマルチコアプロセッサであり、
前記ＬＳプロセスは、制御サイクルにおいて前記第１のコアで実行され、
前記第１のスロットルは、前記制御サイクルにおいて前記第２のコアによる前記メモリ帯域幅の消費量の低減を適用する、
請求項９の方法。
【請求項１２】
前記プロセッサは、複数のコアを含むマルチコアプロセッサであり、
前記第１のスロットルは、同じ制御サイクルで実行される前記第１のＮＬＳプロセスの複数のスレッドに適用される、
請求項９の方法。
【請求項１３】
前記第１のＮＬＳプロセス、第２のＮＬＳプロセス又はＬＳプロセスの何れかが前記デバイスのレイテンシ目標外で実行されている場合に、前記スケジューラによって、前記ＮＬＳプロセスの第１のＮＬＳプロセス又は第２のＮＬＳプロセスに対してレイテンシスロットルを実施することを含む、
請求項９の方法。
【請求項１４】
前記ＬＳフロアは、前記ＬＳプロセスの受信ネットワーク帯域幅フロアである、
請求項９の方法。
【請求項１５】
コンピューティングプロセッサであって、
前記コンピューティングプロセッサ上で実行されている非レイテンシ依存性（ＮＬＳ）プロセスによるデバイスのメモリ帯域幅の現在の使用を記憶するレジスタの第１のセットと、
前記コンピューティングプロセッサ上で実行されているレイテンシ依存性（ＬＳ）プロセスによる前記メモリ帯域幅の現在の使用を記憶するレジスタの第２のセットと、
前記ＬＳプロセスのＬＳフロアを記憶するレジスタの第３のセットと、
前記ＮＬＳプロセスの全体的なＮＬＳスロットル値を記憶するレジスタの第４のセットと、
スケジューラと、を備え、
前記スケジューラは、
１つ以上の前記ＬＳプロセスが前記メモリ帯域幅の少なくとも前記ＬＳフロアの使用を要求した後に、前記１つ以上の前記ＬＳプロセスが各々の前記メモリ帯域幅の少なくともＬＳフロア量を使用できない場合を判別することと、
前記全体的なＮＬＳスロットル値に基づいて、前記ＮＬＳプロセスのためのスロットル値のセットを決定することと、
前記スロットル値のセットに基づいて、１つ以上の前記ＮＬＳプロセスによる前記メモリ帯域幅の使用をスロットルすることと、を行う、
コンピューティングプロセッサ。
【請求項１６】
前記ＬＳプロセスのＬＳスロットル値を記憶するレジスタの第５のセットを備え、
前記スケジューラは、
前記ＬＳプロセスが、各々の前記メモリ帯域幅の少なくともＬＳフロアを使用することを要求する場合であって、前記１つ以上の前記ＬＳプロセスが、前記メモリ帯域幅の少なくとも前記ＬＳフロア量を使用できない場合に、前記ＬＳプロセスのためのＬＳスロットル量を決定することと、
少なくとも１つの制御サイクルに対して決定された前記ＬＳスロットル量に基づいて、前記１つ以上の前記ＬＳプロセスをスロットルすることと、を行う、
請求項１５のコンピューティングプロセッサ。
【請求項１７】
前記コンピューティングプロセッサは、第１のコアと第２のコアとを含むマルチコアプロセッサであり、
前記ＮＬＳプロセスは、制御サイクルにおいて前記第１のコアで実行され、
前記スロットルは、前記制御サイクルにおいて前記第１のコアによる前記メモリ帯域幅の消費量の低減を適用する、
請求項１５のコンピューティングプロセッサ。
【請求項１８】
前記ＮＬＳプロセスは、第１のＮＬＳプロセスを含み、
前記コンピューティングプロセッサは、複数のコアを含み、
前記スロットルは、前記コンピューティングプロセッサ内の同じ制御サイクルで実行される第１のＮＬＳプロセスの複数のスレッドに適用される、
請求項１５のコンピューティングプロセッサ。
【請求項１９】
前記ＮＬＳプロセスは、第１のＮＬＳプロセスを含み、
前記スケジューラは、
ＬＳプロセスが前記デバイスのレイテンシ制限外で実行されている場合に、レイテンシスロットルを前記第１のＮＬＳプロセスに適用する、
請求項１５のコンピューティングプロセッサ。
【請求項２０】
前記ＬＳプロセスは、第１のＬＳプロセスを含み、
前記スケジューラは、
何れかのＬＳプロセスが前記デバイスのレイテンシ制限外で実行されている場合に、レイテンシスロットルを前記第１のＬＳプロセスに適用する、
請求項１５のコンピューティングプロセッサ。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピュータサーバ等の処理システムでは、プロセッサは、多くの場合、同時に実行されている異なるプロセスからのタスクを処理する必要があり、異なるプロセスは、異なるユーザ、クライアント及びデバイスに関連付けられている。並行プロセスは、処理リソースについて競合する。プロセッサ及び処理システムを、特定のリソースが常に利用可能であることを保証するように過剰に構築することもできるが、このアプローチでは、コストが高くなり、リソースが殆ど期間使用されずに無駄になる可能性がある。システムによっては、異なるプロセスへのリソースの割り当てを管理するために、オペレーティングシステムが、各プロセスに優先順位を割り当て、その優先順位に従って各プロセスにリソースを割り当てる優先順位スキームを実装する。しかしながら、従来の優先順位スキームは、特に優先度の高いプロセスが、あるリソースに関してはアイドル状態であり、他のリソースに関してはアイドル状態ではない場合に、このプロセスに対してリソースを過剰に割り当てる結果をもたらす。優先度の高いプロセスによるアクティビティの少ない期間では、厳格なルールによって制約された処理システムは、本来であれば優先度の低いプロセスが使用できるはずのかなり計算能力を無駄にしてしまう。
【０００２】
添付の図面を参照することにより、本開示をより良く理解することができ、その多くの特徴及び利点が当業者に明らかになる。異なる図面で同じ符号を使用している場合、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【０００３】
【図１】いくつかの実施形態による、サービスレベル目標（ＳＬＯ）を満たす複数の処理コア及びスケジューラを有するコンピューティングシステムを示すブロック図である。
【図２】いくつかの実施形態による、コンピューティングシステムを動作させる方法を示すフローチャートである。
【図３】いくつかの実施形態による、コンピューティングシステムを動作させる方法を示すフローチャートである。
【図４】いくつかの実施形態による、コンピューティングシステムを動作させる方法を示すフローチャートである。
【図５】いくつかの実施形態による、コンピューティングシステムを動作させる方法を示すフローチャートである。
【図６】いくつかの実施形態による、コンピューティングシステムを動作させる方法を示すフローチャートである。
【図７】いくつかの実施形態による、システムの様々な時点でのレイテンシ依存性（ＬＳ）フロア及び非レイテンシ依存性（ＮＬＳ）制限を示す表である。
【図８】いくつかの実施形態による、システムの様々な時点でのレイテンシ依存性（ＬＳ）フロア及び非レイテンシ依存性（ＮＬＳ）制限を示す表である。
【図９】いくつかの実施形態による、システムの様々な時点でのレイテンシ依存性（ＬＳ）フロア及び非レイテンシ依存性（ＮＬＳ）制限を示す表である。
【図１０】いくつかの実施形態による、システムの様々な時点でのレイテンシ依存性（ＬＳ）フロア及び非レイテンシ依存性（ＮＬＳ）制限を示す表である。
【図１１】いくつかの実施形態による、システムの様々な時点でのレイテンシ依存性（ＬＳ）フロア及び非レイテンシ依存性（ＮＬＳ）制限を示す表である。
【図１２】いくつかの実施形態による、コンピューティングシステムの経時的なリソース消費量及びプロセスレイテンシを示すグラフである。
【図１３】いくつかの実施形態による、コンピューティングシステムにおけるプロセスのメモリ帯域幅の使用に対するメモリレイテンシを示すグラフである。
【発明を実施するための形態】
【０００４】
概して、図１〜図１３は、処理システムで同時に実行されるプロセスにリソースを割り当てる技術を示しており、これにより、各プロセスには、様々な制限された共有コンピューティングシステムリソースへのアクセス可否のための少なくとも最低限のフロア（floor）が割り当てられている。このような有限リソース（Limited Resources：ＬＲ）には、カウント数又はサイクル数で測定されるＣＰＵの可用性（availability）、メモリの可用性（例えば、Ｌ３メモリキャッシュの可用性）、メモリ帯域幅の可用性、ネットワークリソースの可用性、受信ネットワーク帯域幅の使用、送信ネットワーク帯域幅の使用等のうち少なくとも１つが含まれる。コンピューティングシステムは、有限リソースを管理して、レイテンシ依存性（ＬＳ）プロセス及び非レイテンシ依存性（ＮＬＳ）プロセスがサービスレベル目標（ＳＬＯ）を満たし、これと同時に利用可能なＬＲの使用を最大化することを確実にする。ＳＬＯには必須の目標（mandatory objectives）及び希望的な目標（aspirational objects）が含まれるが、便宜上、必須の目標を本明細書では目標又はＳＬＯと呼び、希望的なＳＬＯを設定点（setpoints）と呼ぶ。また、処理システムは、測定することができ、ある程度制御することができるが、プロセス間に割り当てられない特定の特性又は特質も有する。このような特性の例としては、メモリレイテンシ及びプロセス全体のレイテンシがある。これらの特性は、本明細書で説明するように、ＳＬＯ、希望的な目標又は設定点であってもよい。
【０００５】
具体例として、本明細書で説明する技術は、ＮＬＳプロセスによって使用されるメモリ帯域幅を制御する。これは、許容可能なシステムメモリレイテンシをもたらし、ＬＳプロセスが少なくとも各々のメモリ帯域幅フロアを要求する際に、各ＬＳプロセスが所望のメモリ帯域幅フロアを達成することにつながる。つまり、システムは、ＬＳプロセスに各々のＳＬＯメモリ帯域幅の使用量を取得させるという目標を達成するために、第２変数（全てのプロセスに影響を与えるシステムメモリレイテンシ）に影響を与えるように１つの変数（ＮＬＳメモリ帯域幅の使用）を制御する。
【０００６】
システムメモリレイテンシが大きすぎると、レイテンシが小さい場合に、ＬＳプロセスがメモリ帯域幅の割り当て（ＬＲフロア）を消費するかを判別することができない。つまり、ハードウェアシステムでは、ＬＳプロセスが、取得しているよりも多くのメモリ帯域幅の使用を「要求」しているかどうかを判別する方法がない。したがって、システムは、本明細書で説明するように、制限、上限（caps）又はスロットルを適用する設定点を使用してＮＬＳプロセスを管理し、必要に応じて総システムメモリ帯域幅を低下させる。ＬＳプロセスが帯域幅の割り当てを消費できるレベルまでレイテンシが低下すると、必ずしもレイテンシを「コントラクト（contract）」レイテンシまで低下させる必要がなく、ＮＬＳプロセスがそれ以上スロットルされないので、以前のスキーム（方式）で可能であった以上にシステムから有用な作業を得ることができる。
【０００７】
システムがコントラクトレイテンシを達成するまでＮＬＳプロセスをスロットルし、そのコントラクトレイテンシが実現可能な最小メモリレイテンシではない場合、コントラクトレイテンシは、システムがＮＬＳプロセスをスロットルする範囲内のものになる。つまり、システムは、ＬＲフロアのメモリ帯域幅の使用又は公称レイテンシ（コントラクトレイテンシ）を確実に提供し、これにより、システムが、ＬＳプロセスへのより多くのメモリ帯域幅を得るために最低限のレイテンシに到達しようとして、ＮＬＳプロセスの動作を完全に停止することによって、ＮＬＳプロセスに過度の不利益を与えないように、システムが最適化される。システムは、ＬＳプロセスがＬＲフロアを満たすことができないほどレイテンシが高くにならない限り、ＮＬＳプロセスがより多くのメモリ帯域幅を使用し、システムレイテンシをコントラクトレイテンシよりも大きくすることができる。いくつかの実施形態によれば、そのようなシステムにおける成功は、コントラクトシステムレイテンシが達成されるか、帯域幅のフロアがＬＳプロセスに対して実質的に常に満たされるように、ＮＬＳメモリ帯域幅の使用を管理することである。他の実施形態では、これらの条件の両方が実質的に常に満たされる。
【０００８】
図１は、いくつかの実施形態による、有限リソース（例えば、メモリ帯域幅の使用量）のＳＬＯを満たす複数の処理コア及びスケジューラを有する処理システム１００を示すブロック図である。簡単にするために、単一の有限リソースについて説明する。本明細書で説明する技術と同一又は類似の技術は、システム内で動作する全てのプロセスによって複数の有限リソースがより完全に利用されるように、プロセス毎に、コンピューティングシステム内の複数の有限リソースに対応する複数のＳＬＯを同時に満たすように実装することができる。いくつかの実施形態では、処理システム１００は、サーバ、デスクトップ又はラップトップコンピュータ、スマートフォン、タブレット、ゲーム機等を含む任意の数の電子デバイスに組み込まれる。処理システム１００は、システムメモリ１０３及びマルチコアプロセッサ１０２を含むコンピューティングデバイス１０１と、本明細書でさらに説明するこれらの設定と、を含む。
【０００９】
システムメモリ１０３は、１つ以上のリードオンリーメモリ（ＲＯＭ）及びランダムアクセスメモリ（ＲＡＭ）を使用する。システムメモリ１０３は、オペレーティングシステム（ＯＳ）１２０を記憶する。いくつかの実施形態によれば、ＯＳ１２０は、本明細書でさらに説明するコンポーネントを構成するためのＳＬＯスケジューラＡＰＩ１０８を利用可能にする。ＯＳ１２０は、システムメモリ１０３内のアプリケーション１２１等のアプリケーションの実行を管理する。アプリケーション１２１の一部、及び、プロセッサ１０２で動作するプロセスの少なくとも一部は、アプリケーション１２１に関連付けられている。プロセッサ１０２で動作するプロセスは、レイテンシ依存性（ＬＳ）又は非レイテンシ依存性（ＮＬＳ）の何れかに指定される。ＮＬＳプロセスは、ＬＲの使用の希望的な目標を達成するように、「ベストエフォート」方式で実行できるプロセスとしても知られている。目標達成の成功度は、時間、制御サイクル、違反のない累積時間等の単位で測定されてもよい。
【００１０】
本明細書に記載されているレイテンシは、特に明記されていない限り、ＬＳプロセス及びＮＬＳプロセスに関連している。レイテンシのタイプに関連するＬＲの一例は、メモリレイテンシであり、いくつかの実施形態によれば、これは、メモリシステムがいくつかのデータの読み出しを要求するプロセッサ（例えば、プロセッサ１０２、ＣＰＵ又はＧＰＵ）に応答するのに要する時間を指す。多くのコンピューティングシステムでは、メモリレイテンシは、メモリ帯域幅の使用と少なくとも部分的に相関している。例えば、帯域幅の使用率が高いほど、メモリレイテンシが多少高くなる。この相関関係は、処理システム１００等の特定のコンピューティングシステムにおける他の条件に依存して、強い場合もあれば弱い場合もある。いくつかの実施形態によれば、総メモリ帯域幅の要求が増加すると、システムレイテンシが増加することになる。ただし、特定の時間におけるシステムレイテンシが低い場合には、通常、所定の個々のプロセスがより多くの帯域幅を消費する。すなわち、プロセスについては、消費される帯域幅は、ある程度、システムレイテンシの関数であるが、処理システム１００等のシステムの振る舞い方では、レイテンシは、ある程度、帯域幅要求の関数である。
【００１１】
いくつかの実施形態によれば、各アプリケーション１２１は、ＬＳ又はＮＬＳの指定と共に使用するための１つ以上のプロセススケジュールパラメータ１２２を含むか、これに関連付けられている。プロセススケジュールパラメータ１２２は、以下にさらに説明するように、ＬＳタスク、ＬＳジョブ、ＬＳプロセス及びＬＳスレッドを、ＮＬＳタスク、ＮＬＳジョブ、ＮＬＳプロセス及びＮＬＳスレッドとは異なるように動作させるように、コンピューティングデバイス１０１を構成する。
【００１２】
プロセッサ１０２は、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ（ＤＳＰ）、又は、これらの任意の組み合わせを含むが、これらに限定されない。いくつかの実施形態によれば、プロセッサ１０２は、コンピューティングデバイス１０１内の第１のコア１０５から第Ｎのコア１０６（Ｎ個のコアのうち最後のコアを表す）まで等の複数のコアを含む。マルチコアプロセッサでは、複数のプロセッサ又は「コア」は、単一の集積回路ダイ１２３内に含まれてもよいし、コンピューティングデバイス１０１内の複数の集積回路ダイ上に含まれてもよい。複数の回路ダイは、単一のチップパッケージ内に配置されてもよい。プロセッサ１０２は、コンピューティングデバイス１０１内で動作する複数のタスク及びプロセスのスレッドの性能向上及び効率的な処理のためにインタフェースされた２つ以上のコア１０５，１０６を有する。いくつかの実施形態によれば、プロセスのスレッドは、レイテンシ、キャッシュ使用、負荷分散等に基づいて、ＯＳ１２０によってマルチコアプロセッサの１つ以上のコアに実行のために割り当てられる。いくつかの実施形態によれば、プロセッサ１０２は、例えば、図１のメモリキャッシュ１０７によって表されるレベル１キャッシュ、レベル２キャッシュ及びレベル３キャッシュを含むキャッシュ階層を含む。また、プロセッサ１０２は、レジスタ１１０のセットと、ＳＬＯスケジューラ１１１と、メモリコントローラ１１２と、を含む。
【００１３】
メモリコントローラ１１２は、メモリバス等の相互接続１１３を介して、プロセッサ１０２の様々なコンポーネントを他のコンポーネントと接続し、プロセッサ１０２の様々なコンポーネントの動作を他のコンポーネントと連携させる。メモリコントローラ１１２は、第１のアプリケーション１２１等の１つ以上のアプリケーションのうち１つ以上のプロセスの動作を可能にするために、ＳＬＯスケジューラ１１１と通信し、ＳＬＯスケジューラ１１１の動作と連携させる。スレッド形式のプロセスは、プロセッサ１０２内でアクティブである。いくつかの実施形態によれば、ＳＬＯスケジューラ１１１及びメモリコントローラ１１２は、プロセスの実行時に、プロセッサ１０２のコア１０５，１０６及び他のコンポーネントのステップ及び実行をカウントするための独自のメモリレジスタを有する。他の実施形態では、ＳＬＯスケジューラ１１１及びメモリコントローラ１１２は、プロセッサ１０２の各々の動作（コア１０５，１０６及び他のコンポーネントのステップ及び実行）のために、プロセッサ１０２で指定された特定のメモリレジスタ１１０にアクセスする。１つ以上のプロセススケジュールパラメータ１２２は、ＬＳアプリケーションとして指定されたアプリケーション、又は、ＬＳプロセスとして指定された当該アプリケーションの任意のプロセスに、ＬＲのＬＲフロア１２５を提供する。いくつかの実施形態によれば、ＬＳの指定は、ＯＳ１２０においてアプリケーション１２１が起動されたときに、アプリケーション１２１に対して生成されたプロセスのプロセスＩＤ１２４に基づいて行われる。プロセススケジュールパラメータ１２２は、ＳＬＯスケジューラ１１１によって使用されるために、レジスタ１１０に提供される。
【００１４】
いくつかの実施形態によれば、処理システム１００は、少なくとも１つのＬＳプロセスのための少なくとも１つのＬＲフロア１２５と、システムメモリレイテンシ閾値１２６と、で構成されており、少なくとも１つのプロセスのための対応するリソース上に１つ以上のプロセス制限１２７又は上限を含むことができる。ＬＲフロア１２５は、個々のプロセス単位で提供されてもよいし、ＬＲフロア１２５は、ＬＲフロア１２５に関係するように指定された一部又は全てのＬＳプロセスに対して共有されてもよい。これらの要素は、レジスタ１１０又はＳＬＯスケジューラ１１１の何れかに含まれる。プロセス制限１２７は、ＬＳ制限（ＬＳプロセスに関連付けられたＬＲ制限）又はＮＬＳ制限（ＮＬＳプロセスに関連付けられたＬＲ制限）の何れかである。他の実施形態によれば、ＳＬＯスケジューラ１１１は、各ＬＳプロセスによるＬＲの使用に関するフロア、及び／又は、ＳＬＯスケジューラ１１１に関与する各ＬＳプロセス又は各ＮＬＳプロセスによるＬＲの使用に関する制限の両方を含むプロセス毎に、ＬＲの割り当てが設けられている。いくつかの実施形態によれば、プロセス対して設定点を設けることができる。本明細書で使用する場合、いくつかの実施形態によれば、設定点は、何らかの他のシステム属性を制御しようとするために動的に設定されるリソースの現在の割り当てである。例えば、現在の設定点は、特定のＳＬＯ（例えば、システムレイテンシ、ＬＳプロセスで利用可能な帯域幅）を満たすための調整のためにＳＬＯスケジューラによって選択された特定のプロセスで使用するメモリ帯域幅の目標値に対応するプロセスに提供される。これにより、設定点は、特定の制御サイクルにおいてプロセスが消費する目標量である。
【００１５】
ＳＬＯスケジューラ１１１は、メモリコントローラ１１２と相互動作して、プロセッサ１０２のための制御方式を生成して実行する。レジスタ１１０は、１つ以上の現在の使用値１２８（例えば、ＬＳプロセス及びＮＬＳプロセスによるＬＲの現在の使用、１つ以上のプロセス設定点１２９、１つ以上の関係１３０等）のためのレジスタを含む。１つ以上の関係１３０は、様々な形態をとる。いくつかの実施形態では、関係１３０は、ある変数と別の変数との間のポインタ又は直接対応関係等の単純なものである。他の実施形態では、関係は複雑であり、コンピューティングシステムにおける少なくとも１つのＬＳプロセスと、少なくとも１つのＮＬＲプロセスと、少なくとも１つの有限リソースとの間の線形プロセス制御モデル及び非線形プロセス制御モデルの形態をとる。一例として、ＬＲは、メモリ帯域幅の使用量である。いくつかの実施形態によれば、１つ以上の関係１３０は、システムレイテンシ閾値１２６と、１つ以上の（ＬＳ）フロア１２５と、１つ以上の（ＮＬＳ）プロセス制限１２７との間の関係を含む。
【００１６】
プロセッサ１０２が動作しているとき、ＳＬＯスケジューラ１１１は、各ＬＳ指定プロセスが、処理時間単位又は制御サイクル毎に、ＬＲの利用可能な量のうち少なくともそのフロア１２５が確実に提供されるように動作する。コンピューティングデバイス１０１では、相互接続１１３は、システムメモリ１０３及び少なくとも１つのバス／インタフェースサブコントローラ１１４と通信する。コンピューティングデバイス１０１が動作しているとき、バス／インタフェースサブコントローラ１１４は、ネットワークコントローラ１１８及び１つ以上のインタフェースバス１１５と通信して、必要に応じて様々なコンポーネントと相互に作用する。
【００１７】
インタフェースバス１１５は、ソリッドステートドライブ（ＳＳＤ）、従来のハードドライブ（ＨＤ）、又は、光メディアデバイス等の他のパーシステントストレージデバイス等の１つ以上のストレージデバイス１１６と通信する。ＯＳ１２０は、起動時又はブートプロセス中に、ストレージデバイス１１６からシステムメモリ１０３にロードされる。いくつかの実施形態によれば、ＳＬＯスケジューラ１１１の起動状態及び初期構成は、ＯＳ１２０のブートローダによって提供される。その後、各ＬＳアプリケーションがＯＳ１２０によって起動されると、ＳＬＯスケジューラ１１１が動作して、少なくともＬＲのフロア１２５をＬＳアプリケーションに提供する。
【００１８】
また、インタフェースバス１１５は、グラフィックス処理ユニット（ＧＰＵ）１０４等の１つ以上の出力デバイス１１７と通信する。いくつかの実施形態によれば、ＧＰＵ１０４は、それ自体のメモリレジスタ、キャッシュ、ＳＬＯスケジューラ及びメモリコントローラを有し、ＧＰＵ１０４は、プロセッサ１０２と同じように、それ自体のＳＬＯスケジューラで動作して、ＧＰＵ１０４で動作するプロセス及びスレッドを制御するように構成されている。特に明記しない限り、ＧＰＵ１０４及びそれ自体のＳＬＯスケジューラは、プロセッサ１０２及びそのＳＬＯスケジューラ１１１と同じように構成されている。ネットワークコントローラ１１８は、コンピューティングデバイス１０１と、他のデバイス１１９（例えば、ネットワーク（図示省略）を介してコンピューティングデバイス１０１に接続されたデバイス等）との間の通信及び相互運用性を容易にする。
【００１９】
図２は、いくつかの実施形態による、ＳＬＯスケジューラを有するシステムを動作させる方法を示すフローチャートである。方法２００は、図１のデバイス１０１等のシステム又はデバイスにおいて、（１）ＬＲを管理して、特にＬＳプロセスがＮＬＳプロセスと比較して相対的にアイドル状態にある場合に、ＬＲの全体的な消費量を増加させるとともに、（２）システムの全てのプロセスのグローバル目標であって、そのグローバル目標が、ＬＲに依存するか、ＬＲの関数であるグローバル目標を達成するように機能する。一例として、ＬＲは、メモリ帯域幅の使用であり、グローバル目標は、全てのプロセスによるメモリレイテンシである。
【００２０】
ブロック２０１において、デバイスのプロセッサで動作する全てのプロセスによるＬＲの使用が測定される。ブロック２０２において、全てのプロセスについてグローバル目標が測定される。ブロック２０３において、全てのＬＳプロセスが各々のＬＲフロアの割り当てを消費しているかどうかが判定される。例えば、各ＬＳプロセスのカウント値が、静的に指定されたＬＲフロア値と比較される。全てのＬＳプロセスが現在各々のＬＲフロアを消費している場合、ブロック２０４において、ＬＳプロセス及び／又はＮＬＳプロセスに適用されているスロットル（スロットル調整）が減らされ、ＬＳプロセス及び／又はＮＬＳプロセスは、後続の制御サイクルにおいてより多くのＬＲを消費することができる。ブロック２０５において、グローバルリソースの使用がグローバルコントラクト目標を達成しているかどうかが判定される。いくつかの実施形態では、ブロック２０５でのこの判定は、カウントされた値又は累積された値を、特定のグローバルリソースの静的に指定されたコントラクト目標値と比較することを含む。一例を挙げると、全てのプロセスのメモリレイテンシ（ＭＬ）が最大コントラクトＭＬ未満の場合、特定の制御サイクルでは、コントラクトＭＬの違反が明らかではない。ＬＳプロセスがそれぞれＬＲフロア未満で消費している場合には、ＬＳプロセスがＬＲを積極的に消費しておらず、ＬＳプロセスがメモリ帯域幅の制限を受けていないために、システムは安定しており、方法２００は、グローバル目標の評価を継続する。
【００２１】
ブロック２０６において、全てのＮＬＳプロセスについて、各々の最大スロットル値が適用されるかどうかが判定される。適用されない場合、ＳＬＯスケジューラは、ＮＬＳプロセスに制御の自由が未だ残っているため、ブロック２０７において、１つ以上のＮＬＳプロセスに対してスロットルを増加させる等のさらなる措置を講じる。ブロック２０６において、全てのＮＬＳプロセスが最大限にスロットルされている場合、ブロック２０８において、ＳＬＯスケジューラは、ＬＲフロアを超える閾値を超えて消費するＬＳプロセスがあるかどうかを判定する。そのようなＬＳプロセスがある場合、ブロック２０９において、ＳＬＯスケジューラは、各々の保証されたフロアを超えるかなりの量のＬＲを消費しているＬＳプロセスのうち何れか１つ以上のスロットルを増加させる。方法２００は、グローバルコントラクト目標を達成すること、ＬＳプロセスが少なくともそのＬＲのフロアを消費していることを保証すること、及び、ＮＬＳプロセスが残りのＬＲの多くを消費することを可能にするために、ＬＳプロセス及びＮＬＳプロセスをスロットルするシステムの一実施形態である。
【００２２】
図３は、いくつかの実施形態による、ＳＬＯスケジューラを有するシステムを動作させる方法を示すフローチャートである。図３において、方法３００は、ブロック３０１において、全てのプロセスによるメモリ帯域幅の使用（ＭＢＵ）を測定することを含む。ブロック３０２において、メモリレイテンシ（ＭＬ）が、全てのプロセスについて測定される。ブロック３０３において、全てのＬＳプロセスが、各々のＭＢＵフロアを消費しているかどうかが判定される。消費している場合、その判定は、１つ以上のＬＳプロセスがかなりのメモリ帯域幅を消費していることを示す。ブロック３０４において、ＬＳプロセスの何れかが、そのＭＢＵフロアを超えるかなりの量を消費しているかどうかが判定される。本明細書で使用するかなりの量とは、様々な意味のうち１つを指す。例えば、いくつかの実施形態では、かなりの量は、現在の値が、各々のＭＢＵフロアを超えて閾値を上回っているかどうかを評価することによって判定される。（ブロック３０４において）かなりの量を消費していない場合、ＬＳプロセスはメモリ帯域幅が制限されていないので、制御サイクルにおいて、それ以上の対応がとられない。ブロック３０４において、ＬＳプロセスの何れかが、そのＭＢＵフロアを超えるかなりの量を消費している場合、ブロック３０８において、ＳＬＯスケジューラは、当業者に知られているように、特定のＬＳプロセス及び／又はＮＬＳプロセスのスロットルを減らす。例えば、後続の制御サイクルにおいてメモリ帯域幅の使用がより公平に共有されるように、ＭＢＵフロアを超えるかなりの量を消費するＬＳプロセスの１つ以上が、そのＭＢＵフロアに向けてスロットルバック（throttled back）される。
【００２３】
ブロック３０３において、何れのＬＳプロセスも、各々のＭＢＵフロアを消費していない場合（ブロック３０３：ＮＯ）、ＬＳプロセスは、ＭＢＵに関して十分にアクティブではない。ブロック３０５において、システムは、何れかのＬＳプロセスがスロットルされているかどうかを判定する。スロットルされている場合、３０８において、システムは、スロットルされたＬＤＳプロセスに対するスロットルを減らすか無くす。ブロック３０６において、システムは、システムＭＬがコントラクトレイテンシ以下であるかどうかを判定する。システムＭＬは、グローバル目標の一例である。システムＭＬがコントラクトレイテンシ以下の場合、ブロック３０７において、システムは、システムＭＬがコントラクトレイテンシを大幅に下回っているかどうかを判定する。システムＭＬがコントラクトレイテンシを大幅に下回っている場合、システムは、消費可能なＭＬを有しており、ブロック３０８において、システムは、低システムＭＬを利用するために、ＬＳプロセス及び／又はＮＬＳプロセスのスロットルを減らす。システムＭＬがコントラクトレイテンシ以下ではない場合、ブロック３０９から開始して、システムはさらなるステップを実行する。
【００２４】
ブロック３０９において、システムは、全てのＮＬＳプロセスが最大スロットル値にあるか（最大限にスロットルされたか）どうかを判定する。最大スロットル値にない場合、ブロック３１１において、ＳＬＯスケジューラは、未だ最大限にスロットルされていない１つ以上のＮＬＳプロセスに対するスロットルを増加させる。スロットルされるＮＬＳプロセスがない場合、ブロック３１０において、システムは、何れかのＬＳプロセスが、そのＭＢＵフロアを大幅に超えて消費しているかどうかを判定する。消費している場合、そのようなＬＳプロセスがスロットルの対象となる。ブロック３１２において、ＳＬＯスケジューラは、各々のＭＢＵフロアを超えて消費している１つ以上のＬＳプロセスに対するスロットルを増加させる。ブロック３１０において、全てのＬＳプロセスが、そのＭＢＵフロア以下である場合、ＳＬＯスケジューラは、ＬＳプロセスが、各々のＭＢＵフロア以下で消費できるように構成されているので、それ以上のスロットルが利用できない。
【００２５】
図４は、いくつかの実施形態による、ＳＬＯスケジューラを有するシステムを動作させる方法を示すフローチャートである。方法４００は、ＳＬＯスケジューラによって、プロセッサの各単位時間又は制御サイクルの間に有限リソース（ＬＲ）を管理するように、図１のデバイス１０１等のシステム又はデバイスにおいて動作する。具体例として、図４では、ＬＲは、メモリ帯域幅の使用量（ＭＢＵ）である。いくつかの実施形態では、制御サイクルは、ＣＰＵ上で実行される一定数のプログラムカウンタサイクル若しくは一定数の命令の実行ステップ、又は、制御サイクルに割り当てられた一定の時間である。制御サイクルは、ＮＬＳ指定プロセスとその各々のスレッドとにＮＬＳスロットルを適用すること、及び、ＬＳ指定プロセスとその各々のスレッドとにＬＳスロットルを適用することによって制御目標を達成するために、１つ以上のプロセスと、必要に応じて単一のプロセスの１つ以上のスレッドとに適用されるスロットルを含む。方法４００は、先ず、ＬＲの使用を管理するように動作し、次に、プロセッサで動作するＬＳプロセス及びＮＬＳプロセスに関連するレイテンシを管理するように動作する。方法４００は、現在の制御サイクルでの使用、又は、将来の制御サイクルでの使用を制御する。図４に関して単一のＬＲに言及しているが、当業者に理解されるように、複数のＬＲをＳＬＯスケジューラによって管理可能である。
【００２６】
ブロック４０１において、図１のＳＬＯスケジューラ１１１等のＳＬＯスケジューラは、ＮＬＳプロセスの各々によるＬＲの現在の使用を判定する。図４のブロック４０２において、ＳＬＯスケジューラは、ＬＳプロセスの各々によるＬＲの現在の使用を判定する。いくつかの実施形態では、特定のプロセスによる現在の使用は、プロセッサの全てのコアに亘って動作する１つ以上の特定のプロセスのスレッドによるＬＲの総使用量である。他の実施形態では、ＬＲの使用は、特定のプロセスの単一コアに対してのものであり、ＬＲは、ＬＳプロセスが単一コア上で動作する単一コアに関連している。いくつかの実施形態では、現在の使用を判定することは、レジスタの値にアクセスすることであって、この値が、図１のプロセッサ１０２等のプロセッサで動作するプロセスによるＬＲの現在の使用に関連する時間フレーム（制御サイクル）に亘ってカウントされた値である、ことを含む。他の実施形態では、現在の使用を判定することは、複数のクロックサイクル、プログラムカウンタサイクル又は制御サイクル等の時間に亘って値を測定することを含む。いくつかの実施形態によれば、特定の時間サイクルの間の現在の使用は、図１のプロセッサ１０２のレジスタ１１０のうち１つ等のように、ＳＬＯスケジューラ１１１に利用可能なレジスタで利用可能である。
【００２７】
図４のブロック４０３において、ＳＬＯスケジューラは、各ＬＳプロセスによる現在の使用が、少なくともそのＬＲフロアをシステムに要求しており、実際には少なくともそのフロアを使用していないかどうかを判定する。ブロック４０３において、何れのＬＳプロセスも判定に失敗していない場合、ＮＬＳプロセスを含むさらなるステップがブロック４０４及び４０５で実行される。ブロック４０４において、ＳＬＯスケジューラは、ＮＬＳプロセスに対するＮＬＳ割り当てを判定する。ブロック４０５において、ＳＬＯスケジューラは、ＮＬＳ割り当てを各々のＮＬＳプロセスに適用する。或るシナリオによれば、割り当ての１つのセットは、各々のＮＬＳプロセスに対するＮＬＳ固有の制限を取り除くことを含む。別のシナリオでは、以下で詳述するように、ＮＬＳ割り当てが、ＬＳプロセスに関連する要因と、ＬＲの現在の消費量及び需要と、プロセッサの現在の状態と、を含む他の要因に基づいて判定される。
【００２８】
ブロック４０６において、１つ以上のＬＳプロセスが、少なくとも各々のＬＲのＬＲフロアを要求している場合、ＳＬＯスケジューラは、全体的なＮＬＳスロットルを判定する。ＮＬＳスロットルは、ＮＬＳプロセス間で共有する必要のあるＬＲ（メモリ帯域幅使用量）の全体的な値を含む。ブロック４０７において、全体的なＮＬＳスロットルを使用して、ＳＬＯスケジューラは、ＮＬＳプロセスを対象としたＮＬＳスロットル方式を判定する。いくつかの実施形態によれば、ＮＬＳスロットル方式は、ＮＬＳプロセスの各々によるＬＲの使用に対する制限を設定することを含む。ＮＬＳスロットル方式は、各制御サイクル又は複数の制御サイクルに亘ってカウントされる使用のカウント又は使用の値であるＮＬＳスロットルを含む。いくつかの実施形態によれば、スロットル方式は、各ＮＬＳプロセスがプロセッサ上で一度に実行できるトランザクションの数を制限することを含む。他の実施形態によれば、特定のＮＬＳスロットル方式は、現在動作中のＬＳプロセス、現在動作中のＮＬＳプロセス、ＬＲの現在の消費量及び需要、並びに、プロセッサの現在の状態に関連する１つ以上の要因に関連する。一般に、ＮＬＳスロットル方式は、スループット（時間単位毎に完了した合計作業量）の最大化、応答時間（作業が有効になってから、プロセス、ジョブ又はスレッドがリソース上で実行を開始する最初の時点までの時間）の最小化、レイテンシ（作業が可能になってから完了するまでの時間）の最小化、及び、公平性（各プロセスに、等しい量のプロセッサ時間、又は、各プロセスの優先順位及び作業量に応じて一般的に適切な別の相対的な時間を提供すること）の最大化のうち１つ以上を含む。実際には、これらの目標は競合することが多いため（例えば、スループットとレイテンシ）、ＳＬＯスケジューラは、適切な妥協策を実施する。ブロック４０８において、ＳＬＯスケジューラは、判定されたＮＬＳスロットル方式を適用する。いくつかの実施形態では、ＮＬＳスロットル方式の適用は、現在の制御時間サイクル又は近接の（次の）制御時間サイクルで行われる。
【００２９】
ブロック４０９において、ＳＬＯスケジューラは、各要求ＬＳプロセスが、ＬＲをそのＬＲフロア以上で消費しているかどうかを判定する。消費している場合、ＳＬＯスケジューラは、少なくとも１つのＬＳプロセスが少なくともそのＬＲフロアを要求していることを考慮して、ブロック４０４及び４０５で既に説明した機能を実行する。消費していない場合、ブロック４１０において、ＳＬＯスケジューラは、プロセッサ上で動作するＬＳプロセスに適用するＬＳスロットルの全体量を判定する。ブロック４１１において、ＳＬＯスケジューラは、ＬＳスロットル方式を判定する。いくつかの実施形態によれば、ＬＳスロットル方式は、ＬＳプロセスの各々によるＬＲの使用に対する制限を設定することを含む。方式の一例によれば、ブロック４１１において、ＬＳスロットル方式は、１つ以上のＬＳプロセスが、各々のＬＲフロアを遥かに超えて消費する他のＬＳプロセスを犠牲にして、少なくともその各々のＬＲのＬＲフロアを消費できなくする代わりに、全てのＬＳプロセスが、少なくとも各々のＬＲフロアを消費するように、現在動作しているＬＳプロセス間でメモリ帯域幅使用量の消費のバランスをとる。別の例示的な方式によれば、ＬＳスロットル方式は、ＬＳプロセスの各々による消費を、ＳＬＯスケジューラの少なくとも１つの制御サイクルの間に、等しい割合で低下させる。ブロック４１２において、ＳＬＯスケジューラは、現在動作しているＬＳプロセスにＬＳスロットル方式を適用する。
【００３０】
ブロック４１３において、スロットル方式を適用してＬＲの消費量を制御した後、ＳＬＯスケジューラは、全てのＬＳプロセスが、第２の制御変数としての各々の時間レイテンシ目標の範囲内で動作しているかどうかを判定する。範囲内で動作していない場合、ブロック４１４において、ＳＬＯスケジューラは、ＮＬＳプロセスのスロットル方式を実行する。例えば、ブロック４１４では、ＮＬＳプロセスのみがレイテンシスロットル方式の影響を受ける。ブロック４１４において、ＬＳプロセスは、ＳＬＯスケジューラにおいて、１、２、３又は他の指定された制御サイクル数以内にシステムのレイテンシ目標を達成する機会をＬＳプロセスに提供するようにスロットルされない。或いは、全てのＬＳプロセスが、システム上で動作している間に、レイテンシ目標又は各々のレイテンシ目標の範囲内で動作していない場合、ブロック４１５において、ＳＬＯスケジューラは、全てのプロセスのレイテンシスロットルを実行する。例えば、ブロック４１５において、プロセッサ上で動作するＬＳプロセスのうち１つ以上がレイテンシ目標又は各々のレイテンシ目標の範囲内で動作しない場合、プロセッサ上で動作する全てのプロセスが同じ減少を共有する。少なくとも１つの実施形態によれば、各ＬＳプロセス及び各ＮＬＳプロセスを含む各プロセスは、自身のレイテンシ目標を有してもよい。他の実施形態によれば、プロセッサ並びにそのＮＬＳプロセス及びＬＳプロセスは、グローバルプロセッサレイテンシ目標を設けている。他の実施形態によれば、１つ以上のＬＳプロセスのみがレイテンシ目標を有し、プロセッサ上で動作する他のプロセスには、自身の個別のプロセス目標又はシステム全体のプロセス目標が設けられていない。
【００３１】
図５は、いくつかの実施形態による、システムを動作させる方法を示すフローチャートである。方法５００は、ＬＲ（例えば、メモリ帯域幅の使用量）を管理するように、図１のデバイス１０１等のシステム又はデバイスにおいて動作する。方法５００は、先ず、プロセッサ上で動作するＬＳプロセス及びＮＬＳプロセスに関連するレイテンシを管理し、次に、ＬＲの使用を管理するように動作する。
【００３２】
ブロック５０１において、ＳＬＯスケジューラは、プロセッサ上で動作する全てのプロセスによる現在のレイテンシを判定する。ブロック５０２において、ＳＬＯスケジューラは、何れかのＬＳプロセスが、そのレイテンシ制限の範囲を越えているかどうかを判定する。いくつかの実施形態によれば、レイテンシ制限は、全てのプロセスに対して同じレイテンシ制限である。代替的に、他の実施形態によれば、各ＬＳプロセスは、自身の個々のレイテンシ制限を有するか、全てのＬＳプロセスに対するレイテンシ制限を、全てのＮＬＳプロセスに対する個々のレイテンシ制限と共有する。何れかのＬＳプロセスがレイテンシ制限の範囲を越えている場合、ブロック５２０，５１９，５１８において、さらに処理が行われる。ブロック５２０において、ＳＬＯスケジューラは、レイテンシに関連するＮＬＳプロセスのうち１つ以上のリソースを特定する。ブロック５１９において、ＳＬＯスケジューラは、ＮＬＳプロセスに対する、１つ以上の特定されたレイテンシリソースのＮＬＳ割り当てを判定する。ブロック５１８において、ＳＬＯスケジューラは、以前に判定されたＮＬＳ割り当てをＮＬＳプロセスに適用する。ブロック５１８の後、後続のＳＬＯ制御サイクルが実行される。
【００３３】
ブロック５０３において、全てのＬＳプロセスがレイテンシ制限内にある場合（ＬＳプロセスがそのレイテンシ制限を越えていない場合）、ブロック５０３において、ＳＬＯスケジューラは、各ＮＬＳプロセスがそのレイテンシ制限内にあるかどうかを判定する。制限内にある場合、さらに処理が行われる。制限内にない場合、ブロック５０４において、ＳＬＯスケジューラは、各ＮＬＳプロセスが、プロセッサ及びシステムに許容可能なレイテンシの上限範囲内にあるかどうかを判定する。いくつかの実施形態によれば、プロセッサ上で動作するＮＬＳプロセス毎に別々のＮＬＳ上限がある。各ＮＬＳプロセスが許容可能なレイテンシの上限範囲内にある場合、さらに処理が行われる。上限範囲内にない場合、ブロック５０５において、ＳＬＯスケジューラは、許容可能なレイテンシの上限範囲を越えているものとして、各ＮＬＳプロセスにフラグを立てる。ブロック５０５の後、後続の処理は、プロセッサ上で動作するプロセスによるＬＲの使用を含む。
【００３４】
ブロック５０６において、ＳＬＯスケジューラは、全てのプロセスによる現在のＬＲの使用を判定する。ブロック５０７において、ＳＬＯスケジューラは、ＬＳプロセスの各々による現在のＬＲ使用を判定すること等によって、ＬＳプロセスによる現在のＬＲ使用を判定する。図５に関して、いくつかの実施形態では、特定のプロセスによる現在の使用は、プロセッサの全てのコアに亘って動作する特定のプロセスのスレッドによるＬＲの総使用である。他の実施形態では、使用は単一コアに対してのものであり、ＬＲは単一コアに対してのものである。いくつかの実施形態では、現在の使用を判定することは、時間フレーム又は制御サイクルに亘ってカウントされたレジスタの値にアクセスすることを含み、この値は、図１のプロセッサ１０２等のプロセッサで動作するプロセスによるＬＲの現在の使用に関連している。他の実施形態では、プロセスの現在の使用を判定することは、特定のプロセスの経時的な値を測定することを含む。
【００３５】
ブロック５０８において、ＳＬＯスケジューラは、何れかのＬＳプロセスによる現在の使用が、少なくともそのＬＲフロアをシステムに要求しているかどうかを判定する。プロセッサ上で動作しているＬＳプロセスがそのＬＲフロアを要求していない場合、ＮＬＳプロセスを含む追加のステップが実行される。ブロック５１６において、ＳＬＯスケジューラは、ＮＬＳプロセスに対するＮＬＳ割り当てを判定する。ブロック５１７において、ＳＬＯスケジューラは、ＮＬＳ割り当てを各々のＮＬＳプロセスに適用する。或るシナリオによれば、割り当ての１つのセットは、各々のＮＬＳプロセスに対するＮＬＳ固有の制限を取り除くことを含む。別のシナリオでは、以下で詳述するように、ＮＬＳ割り当ては、ＬＳプロセスに関連する要因と、ＬＲの現在の消費量及び需要と、プロセッサの現在の状態と、を含む他の要因に基づいて判定される。ブロック５１７に続いて、ＳＬＯスケジューラによるさらなる制御サイクルが実行される。
【００３６】
ブロック５０８において、ＳＬＯスケジューラが、１つ以上のＬＳプロセスが少なくともそのＬＲフロアを要求していることを判定した場合、ブロック５０９において、ＳＬＯスケジューラは、全体的なＮＬＳスロットルを判定する。ＮＬＳスロットルは、ＮＬＳプロセス間で共有する必要のある全体的な値を含む。ブロック５１０において、全体的なＮＬＳスロットルを使用して、ＳＬＯスケジューラは、ＮＬＳスロットル方式を判定する。特定のＮＬＳスロットル方式は、現在動作しているＬＳプロセス、現在動作しているＮＬＳプロセス、ＬＲの現在の消費量及び需要、並びに、プロセッサの現在の状態に関連する１つ以上の要因に関連する。ブロック５１１において、ＳＬＯスケジューラは、判定されたＮＬＳスロットル方式を適用する。
【００３７】
ブロック５１２において、ＳＬＯスケジューラは、各要求ＬＳプロセスが、ＬＲをそのＬＲフロア以上で消費しているかどうかを判定する。消費している場合、ＳＬＯスケジューラは、ブロック５１６及び５１７で既に説明した機能を実行する。消費していない場合、ブロック５１３において、ＳＬＯスケジューラは、プロセッサ上で動作するＬＳプロセスに適用するＬＳスロットル調整の全体量を判定する。ブロック５１４において、ＳＬＯスケジューラは、ＬＳスロットル方式を判定する。ＬＳスロットル方式の一例によれば、ブロック５１４において、１つ以上のＬＳプロセスが、少なくともそのＬＲのＬＲフロアを消費できなくする代わりに、ＬＲの消費量が、現在動作しているＬＳプロセス間でバランスをとられる。別の例示的な方式によれば、ＬＳスロットル方式は、ＬＳプロセスの全ての消費を、ＳＬＯスケジューラの少なくとも１つの制御サイクルの間に、等しい割合で低下させる。ブロック５１５において、ＳＬＯスケジューラは、現在動作しているＬＳプロセスにＬＳスロットル方式を適用する。
【００３８】
図６は、いくつかの実施形態による、システムを動作させる方法を示すフローチャートである。方法６００は、第１のＬＲ及び第２のＬＲの制御を含む。いくつかの実施形態によれば、制御方式は、プロセス固有の制約又は目標として、第１のＬＲの代わりにプロセスレイテンシを制御し、第２のＬＲとして、システム又はデバイスの最大能力を制御する。例えば、方法６００の対象となるシステムは、図１の処理システム１００である。他の実施形態によれば、第１のＬＲは、図１の処理システム１００等のシステム又はデバイスの第１の最大能力であり、第２のＬＲは、図１の処理システム１００等のシステム又はデバイスの第２の最大能力である。
【００３９】
ブロック６０１において、ＳＬＯスケジューラは、システム又はデバイスのプロセッサ上で動作するＮＬＳプロセスによる第１のＬＲの現在の使用を判定する。ブロック６０２において、ＳＬＯスケジューラは、システム又はデバイスのプロセッサ上で動作するＬＳプロセスによる第１のＬＲの現在の使用を判定する。ブロック６０３において、ＳＬＯスケジューラは、何れかのＬＳプロセスが、少なくともその第１のＬＲのＬＲフロアを要求しているかどうかを判定する。要求していない場合、ブロック６０４において、適切な制御方式がＳＬＯスケジューラによって適用される。要求している場合、ブロック６０５において、ＳＬＯスケジューラは、ＮＬＳプロセス及びＬＳプロセスによる第１のＬＲの現在の使用に基づいて、プロセスに対する第１の制御方式を判定する。ブロック６０６に進み、ＳＬＯスケジューラは、システム又はデバイスのプロセッサ上で動作するＮＬＳプロセスによる第２のＬＲの現在の使用を判定する。ブロック６０７において、ＳＬＯスケジューラは、システム又はデバイスのプロセッサ上で動作するＬＳプロセスによる第２のＬＲの現在の使用を判定する。ブロック６０８において、ＳＬＯスケジューラは、何れかのＬＳプロセスが、少なくともその第２のＬＲのＬＲフロアを要求しているかどうかを判定する。要求していない場合、ブロック６０４において、適切な制御方式がＳＬＯスケジューラによって適用される。要求している場合、ブロック６０９において、ＳＬＯスケジューラは、ＮＬＳプロセス及びＬＳプロセスによる第２のＬＲの現在の使用に基づいて、プロセスに対する第２の制御方式を判定する。ブロック６１０において、ＳＬＯスケジューラは、プロセッサ上で動作するプロセスに対する第１のフロア制御方式と第２のフロア制御方式とを組み合わせる。ＳＬＯスケジューラは、ＬＳプロセス及びＮＬＳプロセスがプロセッサ上で動作している限り、図６の一連の動作を実行する。
【００４０】
図７〜図１１は、いくつかの実施形態による、様々な時点でのシステムのレイテンシ依存性フロア及び非レイテンシ依存性設定点を示す表である。例えば、システムは、図１の処理システム１００である。いくつかの実施形態では、図７〜図１１の表のうち１つ又はそれに類似するメモリ構造は、図１のプロセッサダイ１２３等のプロセッサダイにおいて、構成可能なレジスタ１１０のセットとして直接生成される。レジスタの値は、プロセス変数が決定され更新されるにつれて、経時的に変化する。表が図７〜図１１に記載され図示されているが、当業者によって容易に理解されるように、他のタイプのコンピューティング構造及びメモリ構造が、本明細書で説明する技術で使用可能である。例えば、他のコンピューティング構造及びメモリ構造は、１つ以上のアレイ、図１のレジスタ１１０等の１つ以上のレジスタ、及び、図１のキャッシュ１０７で動作する１つ以上のバッファを含む。
【００４１】
図７〜図１１では、ＬＳプロセスの任意の数のリソースと任意の数の関連ＳＬＯとが追跡され、制御方式に組み込まれ、表に示され、ＳＬＯスケジューラによって実行されるが、簡単にするために、第１のリソース（例えば、メモリ帯域幅の使用量）のアクティビティ及び消費量と、プロセスレイテンシと、のみを、図７〜図１１の表を参照して説明する。いくつかの実施形態によれば、プロセスレイテンシは、全体的な現在のシステムプロセスレイテンシ、ＬＳプロセスのＬＳプロセスレイテンシ、又は、ＮＬＳプロセスのＮＬＳプロセスレイテンシである。いくつかの実施形態によれば、ＬＳプロセスレイテンシはＳＬＯであり、一方、ＮＬＳプロセスレイテンシは、この制御変数をプロセスレイテンシ閾値以内にするために制御方式を必要とする場合がある目標又は制御方式を必要としない場合がある目標である。
【００４２】
さらに、図７〜図１１に示すアクティビティ、値及び変数は、図７〜図１１に亘って、ある表から別の表に移動する間に経時的に変化する値及び変数のセットを有する１つの表を参照して、以下に簡単に説明する。ここで、各図は、アクティブな処理システムの１つの時点、又は、タイムラインに沿ったスナップショットを表す。図７〜図１１の値と変数との間の関係は、図１２に示すグラフと関連付けながら容易に理解される。簡単にするために、プロセスのシステムレイテンシは、図７〜図１１に示されていないが、図１２に示されており、それと関連して説明する。
【００４３】
図７は、アクティブな処理システムのタイムラインに沿った第１の時間におけるシステムのフロア及び設定点を示す表７００である。レイテンシ依存性（ＬＳ）フロアを、表７００の第１の部分７０１に示す。第１の部分７０１は、ＬＳプロセス７０２と、第１のリソース（例えば、メモリ帯域幅の使用量）のＬＳプロセス毎の第１の実際（actual）のリソース使用７０３と、第１のリソースのＬＳプロセス毎の第１のＳＬＯ７０４と、第２のリソースのＬＳプロセス毎の第２の実際のリソース使用７０５と、第２のリソースのＬＳプロセス毎の第２のＳＬＯ７０６と、を含む。第１の実際のリソース使用７０３及び第２の実際のリソース使用７０５は時間の関数であり、したがって、図７に示す値は、ＬＳプロセス７０２がプロセッサ上で実行されると、時間とともに急速且つ可変的に変化する。同様に、ＳＬＯ７０４，７０６は、ユーザ又はプログラムによる構成調整等によって、経時的に変更可能である。ＳＬＯ７０４，７０６は、第１の実際のリソース使用７０３及び第２の実際のリソース使用７０５と比較すると、変更頻度が比較的低くなる。例えば、ＳＬＯ７０４，７０６は、分、時間、日及び週のオーダで変化し、実際のリソース使用７０３，７０５は、マイクロ秒及びミリ秒のオーダで変化する。
【００４４】
表７００及び図８〜図１０に関連する後続の説明では、第１のリソースの最大利用可能量は１０単位である。説明のために、第１のリソースは、ギガバイト毎秒（ＧＢ／ｓ）の単位で測定されるメモリ帯域幅の使用量である。７０３における第１の時間では、第１のＬＳプロセスは、第１のリソースを実際のリソース使用値０．１ＧＢ／ｓで消費しており、第２のＬＳプロセスは、第１のリソースを実際のリソース使用値１．１ＧＢ／ｓで消費している。７０３における第１のＬＳプロセス値及び第２のＬＳプロセス値の両方は、７０４における各々のＳＬＯよりも小さく、それらの合計使用は、第１の時間において４．０ＧＢ／ｓの値を有する第１のリソースの合計ＳＬＯ未満である。
【００４５】
７０５及び７０６におけるＬＳプロセスによる第２のリソースの消費量に関連する値及び値の合計については説明しないが、同様に処理され、第１のリソースに関連する値及び合計と同様の関係を有する。ＬＳプロセスによる実際の使用の値を７０５に示し、７０６には、これらの値に対する各々のＳＬＯの変数名プレースホルダ「ＳＬＯ＿２＿１」及び「ＳＬＯ＿２＿２」が示されている。合計プレースホルダ「ＬＴ＿Ａ＿２」及び「ＳＬＯ＿Ｔ＿２」を、それぞれ７０５及び７０６に示す。当業者によって理解されるように、これらのプレースホルダは、オペレーティングシステムにおいて値を有する。
【００４６】
表７００の第２の部分７１１は、ＮＬＳプロセス７１２と、第１のリソースのＮＬＳプロセス毎の第３の実際のリソース使用７１３と、第１のリソースのＮＬＳプロセス毎の第１の設定点７１４と、第２のリソースのＮＬＳプロセス毎の第４の実際のリソース使用７１５と、第２のリソースのＮＬＳプロセス毎の設定点７１６と、を含む。ＮＬＳプロセスの任意の数のリソース使用と、対応する設定点と、が追跡され、第２の部分７１１によって示される制御方式に組み込まれる。７１３における第１の時間では、第１のＮＬＳプロセス、第２のＮＬＳプロセス及び第３のＮＬＳプロセスが、それぞれ実際のリソース使用値１．１ＧＢ／ｓ、２．２ＧＢ／ｓ及び３．３ＧＢ／ｓで第１のリソースを消費しており、現在の各使用値は、７１４の各々の設定点１．０ＧＢ／ｓ、２．０ＧＢ／ｓ及び３．０ＧＢ／ｓを超えている。
【００４７】
７１５及び７１６でのＮＬＳプロセスによる第２のリソースの消費量に関連する値及び値の合計は、本明細書では説明しないが、同様に処理され、ＮＬＳプロセスに対する第１のリソースに関連する値及び合計と同様の関係を有する。ＮＬＳプロセスによる実際の使用の値を７１５に示し、７１６には、これらのＮＬＳプロセス使用値に対する各々の設定点の変数名プレースホルダ「ＳＴＰＴ＿２＿１」、「ＳＴＰＴ＿２＿２」及び「ＳＴＰＴ＿２＿３」が示されている。合計プレースホルダ「ＮＴ＿Ａ＿２」及び「Ｔ＿Ｔ＿２」を、それぞれ７１５，７１６に示す。当業者によって理解されるように、これらのプレースホルダは、オペレーティングシステムにおいて値を有する。
【００４８】
図７では、第１の時間に、７０３における第１のリソースの第１のＬＳプロセス及び第２のＬＳプロセスの消費量の値は、７０４における各々の第１のリソースのＳＬＯ未満であり、ＬＳプロセスは、ＬＳプロセスの各々が７０４で利用可能な２．０単位（ＧＢ／ｓ）のフロアを下回って第１のリソースを消費していることを示す。７１３における第１のリソースの第１のＮＬＳプロセス、第２のＮＬＳプロセス及び第３のＮＬＳプロセスの消費の値は、７１４における各々のプロセス設定点を超えており、制限又はキャップがＮＬＳプロセスの何れにも適用されていないことを示す。制限は、制約、スロットル又はコントロールと呼ばれる場合がある。制御方式は、１つ以上の制御サイクルの制限として機能する設定点のセットを含む。第１の時間に、ＮＬＳプロセスは、ＬＳプロセス用に予約された合計４．０単位（ＧＢ／ｓ）が、ＮＬＳプロセスによって合計許容消費量の６．０単位（ＧＢ／ｓ）を制限した従来の制限制御方式よりも高い割合で、第１のＬＲを消費することができる。さらに、第１の時間に、ＮＬＳプロセスの各々は、７１４に示すように、ＮＬＳプロセス毎に指定された従来のキャップを超えて、第１のリソースを消費することが許可される。第１のリソースの最大利用可能量は１０単位（ＧＢ／ｓ）であるため、７０３のＬＳプロセス及び７１３のＮＬＳプロセスによる第１のリソースの総消費量は、この最大利用可能量以下である必要がある。第１の時間に、ＬＳプロセスによる消費量がＮＬＳプロセスの消費量と組み合わされると、第１のリソースの合計は７．８単位（ＧＢ／ｓ）となり、最大の１０単位（ＧＢ／ｓ）を下回る。したがって、第１の時間には、リソース共有方式が必要ない。
【００４９】
図８は、アクティブな処理システムのタイムラインに沿った第２の時間におけるシステムのフロア及び設定点を示す表８００である。フロアは、表８００の第１の部分としてのＬＳフロアテーブル８０１内にあり、設定点は、表８００の第２の部分としてのＮＬＳ設定点テーブル８１１内にある。表８００は、図７の表７００と同様であるが、少なくとも３つの点で異なる。第１に、第１のリソースのみの制御が本明細書で説明されるため、表８００には、ＬＳフロアテーブル８０１内の８０３における第１の実際の使用値と、８０６における第１のリソースの対応する８０４のＳＬＯと、があるのみであり、第２のリソースに関するものはない。図７の値と比較して、第１のＬＳプロセスの値は、７０３での０．１ＧＢ／ｓから８０３での２．１ＧＢ／ｓに変更されている。第２の時間に、８０３における第１のリソースの第２のＬＳプロセスの消費量の値は、８０４におけるその第１のリソースのＳＬＯ未満であり、タイムラインの第２の時間におけるＬＳプロセスは、第２のＬＳプロセスが８０４で利用可能な２．０のフロアを下回って第１のリソースを消費していることを示す。
【００５０】
第２に、表８００は、ＬＳプロセスの各々について、８０５におけるＳＬ設定点等の第１の設定点を含む。８０５では、ＳＬ設定点は、第１のＬＳプロセス及び第２のＬＳプロセスの両方について２．０の値にある。ＳＬ設定点は、ＳＬＯスケジューラによって読み出されるか、ＳＬＯスケジューラに供給され、８０３での実際の使用値に変更をもたらすために、８０２に示される第１のＬＳプロセス及び第２のＬＳプロセスに関連してＳＬＯスケジューラによって動作されるシステム内の値（例えば、表８００、レジスタ１１０、プロセススケジュールパラメータ１２２）である。いくつかの実施形態によれば、ＳＬＯスケジューラは、制御方式内の制御変数間で決定された関係を使用する。決定された関係は、ＳＬＯスケジューラに記憶されるか、ＳＬＯスケジューラに供給される所定のモデルの形態をとってもよく、コンピューティングデバイスが動作するときのＳＬＯスケジューラによる履歴観察によって決定されてもよい。理想的なシステムでは、ＳＬＯスケジューラは、８０５のＳＬ設定点の値を使用してシステムを駆動し、システム内の他の制約に違反することなく、プロセスによる８０３の実際の使用値を８０４のＳＬＯ値に変更する。いくつかの実施形態によれば、現在の制御サイクル又は将来の制御サイクルにおいて、ＬＳプロセス８０２の１つ以上による８０３，８０４での第１のリソースの使用を推定することに基づいて、設定点が提供される。
【００５１】
第３に、表８００は、８１２で示されるＮＬＳプロセスの各々について、８１５にＮＬＳ制限（「ＮＬＳ＿１＿ＬＩＭＩＴ」とラベル付けされている）を含む。いくつかの実施形態によれば、８１５のＮＬＳ制限は、ＮＬＳプロセス８１２の各々による第１のリソースの消費量をスロットルするように、ＳＬＯスケジューラによって調整される最大値である。８１４の設定点を有するＮＬＳプロセスが特定のリソースの最大量を消費すると、プロセスは、その設定点に対応する次の制御サイクル又は関連する期間までプロセッサにおいてアイドル状態にされる。図８に表す第２の時間に、ＮＬＳプロセス８１２の実際の消費量の値８１３は、８１４でそれぞれ１．０ＧＢ／ｓ、２．０ＧＢ／ｓ及び３．０ＧＢ／ｓであって、ＮＬＳプロセス８１２の第１のリソースの設定点を超えており、ＮＬＳプロセスのためのリソース共有方式が必要とされていない。３．２ＧＢ／ｓと６．６ＧＢ／ｓとの合計がシステムで利用可能な１０単位（ＧＢ／ｓ）未満であることから分かるように、システムの第１のリソースの過剰な可用性のために、何れのＮＬＳプロセスもスロットルされない。ＮＬＳプロセスの総消費量は６．６ＧＢ／ｓであり、これは８１４での設定点の合計６．０ＧＢ／ｓを超えている。この消費量は、８０２のＬＳプロセスのために常に４．０ＧＢ／ｓを確保している従来のシステムを考慮すると、ＮＬＳプロセスの利用率が０．６ＧＢ／ｓ向上している。従来のシステムでは、８１２のＮＬＳプロセスによる第１のリソースの使用可能な消費量が、６．０ＧＢ／ｓに上限設定されていた。必要に応じて、８１５のＮＬＳ制限は、８０２のＬＳプロセスと８１２のＮＬＳプロセスとの間の第１のリソースの消費量が所望のバランスに到達するために、８１４で各々の第１の設定点の上又は下に設定される。さらに、８１５のＮＬＳ制限は、第１のリソースの消費量がシステム内の別のリソースの消費量に影響を与えるか制限するＮＬＳプロセスによる第１のリソースの消費量を低減するために設定されてもよい。例えば、第１のリソースが処理中のメモリ要求の総数である場合、メモリ帯域幅の制限又は最大値（システム内の別のリソース又は制御変数である）に達するために、８１２のＮＬＳプロセスに８１５のＮＬＳ制限が適用される。さらにまた、８１２に示すＮＬＳプロセスの実行は、システム内の他の相互に関連する変数に基づいてスロットルされてもよい。
【００５２】
図９は、アクティブな処理システムのタイムラインに沿った第３の時間におけるシステムのフロア及び設定点を示す表９００である。フロアは、テーブル９００の第１の部分としてのＬＳフロアテーブル９０１内にあり、設定点は、テーブル９００の第２の部分としてのＮＬＳ設定点テーブル９１１内にある。表９００は、図８の表８００と同様であるが、少なくとも２つの点で異なる。第１に、ＬＳプロセス及びＮＬＳプロセスによる第１のリソースの実際の消費量（メモリ帯域幅の使用量）の特定の値が、表８００と比較して変更されている。９０２のＬＳプロセスの各々による実際の消費量は、１．８ＧＢ／ｓに変更されている。すなわち、第１のＬＳプロセスの消費量は、２．１ＧＢ／ｓから１．８ＧＢ／ｓに減少し、第２のＬＳプロセスの消費量は、１．１ＧＢ／ｓから１．８ＧＢ／ｓに増加している。９０３でのＬＳプロセスによる消費量の合計は３．６ＧＢ／ｓであるが、これは、９０４における各ＳＬＯの合計が４．０ＧＢ／ｓである合計を下回っている。ＬＳプロセスの各々の９０５でのＳＬ設定点は、２．０の値のままである。また、ＮＬＳプロセス消費値のうち１つが、３．３ＧＢ／ｓから３．１ＧＢ／ｓに変更されている。
【００５３】
第２に、ＳＬＯスケジューラは、第３の時間に第３のＮＬＳプロセスに、上限設定又は最大値を設定している。この制限（「ＮＬＳ＿１＿ＬＩＭＩＴ」とラベル付けされている）は、９１５に「ＹＥＳ」というラベルで示されており、ＳＬＯスケジューラが、第３のＮＬＳプロセス（９１３に３．１ＧＢ／ｓと示されており、第３のＮＬＳプロセスは９１４の設定点３．０に従う）による第１のリソースの消費量をスロットルする際にアクティブであることを示している。９１４の他の設定点は、最初の２つのＮＬＳプロセスについて同じである。９１３でのＮＬＳプロセスによる総消費量は６．４ＧＢ／に減少しており、これは、特権ＬＳプロセス９０２が第１のリソースの合計３．６ＧＢ／ｓを消費し、残りの６．４ＧＢ／ｓが、９１３に示すように、全てのＮＬＳプロセス９１２の間で分割される必要があるためである。９０３のＬＳプロセスと９１３のＮＬＳプロセスとによる第１のリソースの消費量の合計は、第１のリソースの最大利用可能量としての１０．０ＧＢ／ｓである。図９は、図１のＳＬＯスケジューラ１１１等のコントローラ又はスケジューラが、ＮＬＳ消費量の合計をスロットルする必要がある場合に、第１のリソースの消費量を最も少ない数のＮＬＳプロセスによって減少させるようにプログラムされた、第１のリソースを共有するための第１の制御方式を示している。他の実施形態では、ＳＬＯスケジューラは、この例では最大６．４ＧＢ／ｓである総ＮＬＳ消費に対応するために、一部又は全てのＮＬＳプロセス９１２を等しい割合で調整し、これにより、９１３での実際の消費量を等しい割合で減らすように構成されている。第３の時間に、ＬＳプロセス９０２のスロットルが必要とされず又は望まれない。
【００５４】
図１０は、アクティブな処理システムのタイムラインに沿った第４の時間におけるシステムのフロア及び設定点を示す表１０００である。フロアは、表１０００の第１の部分としてＬＳフロアテーブル１００１内にあり、設定点は、表１０００の第２の部分としてＮＬＳ設定点テーブル１０１１内にある。表１０００は、図９の表９００と同様であるが、少なくとも２つの点で異なる。第１に、ＬＳプロセス及びＮＬＳプロセスによる第１のリソースの実際の消費量（メモリ帯域幅の使用量）の特定の値が、表９００と比較して変更されている。１００３での第１のＬＳプロセスによる実際の消費量は、９０３での１．８ＧＢ／ｓから１００３での２．０ＧＢ／ｓに増加している。ＬＳプロセスによる総消費量は、１００３では３．８ＧＢ／ｓに上昇しており、これは１００４での各ＳＬＯの合計を下回っている。ＬＳプロセスの１００５での各ＳＬ設定点は、２．０の値のままである。第４の時間に、１００２のＬＳプロセスは、１００４に示すように、それぞれ２．０ＧＢ／ｓの保証された最小値又はＳＬ保証を要求している。１０１３において、ＮＬＳプロセスの各々は、各ＮＬＳプロセスが図９の場合よりも少なく消費しているように、図９の値に対して下方にスロットルされている。ＮＬＳプロセスは、１０１３においてそれぞれ１．０ＧＢ／ｓ、２．０ＧＢ／ｓ、３．０ＧＢ／ｓである合計６．０ＧＢ／ｓを消費しており、これは、表１０００の第２の部分１０１１にある全てのＮＬＳプロセスが消費可能な合計である。
【００５５】
第２に、ＳＬＯスケジューラは、１０１５でラベル「ＹＥＳ」によって示すように、第４の時間にＮＬＳプロセスの各々に制限をかけており、ＳＬＯスケジューラが、ＮＬＳプロセスの全てによる第１のリソースの消費量をスロットルする際にアクティブであることを示している。１０１３では、ＮＬＳプロセスの各々の消費量が減少している。１００３のＬＳプロセスと１０１３のＮＬＳプロセスとによる第１のリソースの消費量の合計は、第１のリソースの最大利用可能量としての１０．０ＧＢ／ｓである。図１０は、図１のＳＬＯスケジューラ１１１等のコントローラ又はスケジューラが、ＮＬＳ消費量の合計をスロットルする必要がある場合に、第１のリソースの消費量を２つ以上のＮＬＳプロセスにより減少させるようにプログラムされた第１の制御方式の別の状態を示している。複数のタイプのスロットルアルゴリズムのうち１つを、各ＮＬＳプロセスに適用してもよい。適用されるスロットルアルゴリズムのタイプは、特定のＮＬＳプロセスによる第１の（若しくは、他の）リソースの消費履歴、全てのＮＬＳプロセスによる第１の（若しくは、他の）リソースの消費履歴、１つのＬＳプロセスによる第１の（若しくは、他の）リソースの消費履歴、全てのＬＳプロセスによる第１の（若しくは、他の）リソースの消費履歴、又は、これらの組み合わせ等のように、１つ以上の他の変数に基づいて選択されてもよい。１０１２のＮＬＳプロセスの各々は、図８の表８００の８１３の消費値と比較すると、１０１３の実際の値において１０％の同じ一定の割合だけ減少している。１．１ＧＢ／ｓの値が１．０ＧＢ／ｓに減少し、２．２ＧＢ／ｓの値が２．０に減少し、３．０の値が３．０に減少している。図１０に示すように、ＳＬＯスケジューラは、１０１３でのＮＬＳプロセスのそれぞれによる消費量を、１つ以上の制御サイクルの間、その１０１４での設定点に保持している。さらなる制限又はスロットルが必要な場合、１０１４の設定点の１つ以上が別の制御サイクルにおいて低減され、実際の消費値１０１３のうち１つ以上がこれに応じて低下して、１０１２で示す各ＮＬＳプロセスの設定点１０１４を満たす。第４の時間に、ＬＳプロセス１００２のスロットルは必要とされず又は望まれない。図１０に示すように、１００２のＬＳプロセスは、１００３において、１００４に示すそれらの保証された又はコントラクトされたＳＬＯ値を消費している。ＳＬＯスケジューラのポリシーは、１００４のＳＬＯ値と設定点の値１０１４とに設定されている。
【００５６】
図１１は、アクティブな処理システムのタイムラインに沿った第５の時間におけるシステムのフロア及び設定点を示す表１１００である。表１１００は、図１０の表１０００と同様であるが、少なくとも２つの点で異なる。第１に、ＮＬＳプロセスによる第１のリソースの実際の消費量（メモリ帯域幅の使用量）の特定の値が、表１０００と比較して変更されている。１１１２に示すＮＬＳプロセスの各々による実際の消費量は減少している。１１１３において、ＮＬＳプロセスの各々は、各ＮＬＳプロセスが表１０００の場合よりも少なく消費しているように、下方にスロットルされている。ＮＬＳプロセスは、１０１３においてそれぞれ、０．８ＧＢ／ｓ、１．６ＧＢ／ｓ、２．６ＧＢ／ｓである合計５．０ＧＢ／ｓを消費しており、これは、表１１００の第２の部分１１１１にある全てのＮＬＳプロセスによる消費可能な合計よりも少ない。ＳＬＯスケジューラは、図１２に関して後述するように、グローバルレイテンシ要件を満たすために、ＮＬＳプロセスによる消費量を低減している。ＳＬＯスケジューラは、グローバルプロセスレイテンシの到達目標を達成するために、最初にＮＬＳプロセスによる第１のリソースの消費量を低減するように構成されている。ＮＬＳプロセスによるシステムリソースの消費量をスロットル又は低減してもグローバルレイテンシの到達目標を達成できない場合、ＳＬＯスケジューラは、１１０４でＳＬＯを低下させることによって、第１のリソースの消費量も低減するように構成されている。表１１００では、第２のプロセスＬＳ−ＰＲＯＣＥＳＳ＿２による消費量が、１．８単位から２．０単位に増加することによって、ＬＳプロセスによる総消費量が、１１０３での４．０ＧＢ／ｓに増加しており、ここでの４．０単位は、１１０４の各ＳＬＯの合計と同じである。各ＬＳプロセスの１１０５でのＳＬ設定点は、２．０の値のままである。第５の時間に、１１０２のＬＳプロセスは、それらの保証された最小値である２．０ＧＢ／ｓを要求しており、ＬＳプロセスが、第１のリソースの実際の消費量の各々のフロアを消費できないことに違反していない。
【００５７】
第２に、１１１２に示すＮＬＳプロセスは、全てのＮＬＳプロセスで使用可能な６．０ＧＢ／ｓ未満にスロットルされる。１１１３では、ＮＬＳプロセスによる実際の総消費量は５．０ＧＢ／ｓである。表１１００の第２の部分１１１１では、ＳＬＯスケジューラは、１１１５のラベル「ＹＥＳ」によって示すように、第５の時間にＮＬＳプロセスの各々に設定点又は制限を設けている。ＳＬＯスケジューラは、システム全体の目標を達成するために、必要に応じて、ＮＬＳプロセスによる第１のリソースの消費量を第１のリソースの使用可能な量未満に積極的にスロットルする等のように、様々な動作を実行するように構成されている。目標は、システム全体の目標、ポリシー、コントラクト、最低条件及びＳＬＯと呼ばれる場合がある。１０１３での値と比較して、１１１３でのＮＬＳプロセスの各々による第１のリソースの消費量は減少している。１１０３のＬＳプロセスと１１１３のＮＬＳプロセスとによる第１のリソースの消費量の合計は、第１の有限リソースのシステム最大値である１０．０ＧＢ／ｓを下回っている。図１１は、図１のＳＬＯスケジューラ１１１等のコントローラ又はスケジューラが、ＮＬＳ消費量の合計を第１のリソースの使用可能な量よりも少なくスロットルする必要がある場合に、第１のリソースの消費量を２つ以上のＮＬＳプロセスによって減少させるようにプログラムされた制御方式の別の状態を示している。ＳＬＯスケジューラは、第２のリソース、及び、ＮＬＳプロセスが消費し又は影響を与えている他のリソースに関して、同じＮＬＳプロセスをスロットルするように構成されている。
【００５８】
表１１００は、システム内の第１のリソース（メモリ帯域幅の使用量）の使用可能な合計量（６．０ＧＢ／ｓ）が、１１１２で示すＮＬＳプロセスのセットに割り当てられた５．０ＧＢ／ｓの値を超えた場合でも、１１１３での実際の消費量が、１１１４でのＮＬＳプロセスの設定点を満たすので、ＮＬＳプロセスの動作が依然としてＳＬＯスケジューラの制御下にあることを示している。さらなる制限又はスロットル調整が必要な場合、１１１４での設定点の１つ以上がさらに低減され、実際の消費値１１１３の１つ以上が低下して、１１１２での各ＮＬＳプロセスの設定点として提供される設定点１１１４を満たす。表１１００には示していないが、ＮＬＳ対ＬＳ（ＮＶＬ）のスロットル比率が提供されており、これにより、ＮＬＳプロセスの総消費量が、時間の経過とともに、ＮＶＬスロットル比率まで減少し、その後、さらなるプロセスのスロットルが必要な場合に、第１のリソースの消費量の低減分が、ＬＳプロセス及びＮＬＳプロセスの両方に分散される。このようにして、１１１２のＮＬＳプロセスは、１１０３の過剰にアクティブなＬＳプロセスを犠牲にして、１１１３で全て０になるまで低下するわけではない。一般に、第５の時間には、１１０３でのＬＳプロセスの使用をスロットルする必要がなく又は望まれていない。表１１００の第１の部分１１０１に示すように、１１０２のＬＳプロセスは、１１０４に示す保証され又はコントラクトされたＳＬＯ値で、１１０３の第１のリソースの一定量を消費している。
【００５９】
図１２は、いくつかの実施形態による、コンピューティングシステムの経時的なリソース消費量及びメモリレイテンシを示すグラフである。グラフ１２００は、マイクロ秒単位のメモリレイテンシの値を表す第１のトレース１２０１を示す。第１のトレース１２０１は、システム内の全てのＬＳプロセス及びＮＬＳプロセスによって経験され、図７〜図１１に示すようなメモリレイテンシを表す。また、グラフ１２００は、図７〜図１１に示す全ての第１のリソース（メモリ帯域幅使用量）の実際の消費量の値を表す第２のトレース１２０２を示す。グラフ１２００の総消費量は１０単位（ＧＢ／ｓ）である。システムレイテンシの小区分は、グラフ１２００の第１の縦軸１２０４に沿って示されている。総消費量の小区分は、グラフ１２００の第２の縦軸１２０５に沿って示される。
【００６０】
時間は、グラフ１２００の横軸１２０３に沿って描かれる。時間は、プロセッサの制御サイクルの単位である。横軸１２０３は、Ｔ１〜Ｔ５とラベル付けされた５つの区間に細分化されている。各区間は、表７００，８００，９００，１０００，１１００のうち何れかに対応し、Ｔ１が表７００に対応し、Ｔ２が表８００に対応し、Ｔ３が表９００に対応し、Ｔ４が表１０００に対応し、Ｔ５が表１１００に対応する。
【００６１】
メモリレイテンシ１２０１は、最初の３つの区間Ｔ１〜Ｔ３では、システムレイテンシ閾値１２０６を下回っている。レイテンシ閾値１２０６は、アイドル状態のシステムのレイテンシに基づく所定の閾値である。例えば、レイテンシ閾値１２０６は、アイドル状態システムのレイテンシより、１％、２％、２．５％、３％、５％、７％、１０％、１２％、１５％、２０％、２５％、３０％、３５％、４０％、４５％、５０％のうち１つよりも高い値である。第４の区間Ｔ４では、実際のメモリレイテンシ１２０１は、領域１２０７でレイテンシ閾値１２０６を超えて急上昇する。システムは、メモリレイテンシ１２０１を制御するように構成されている。システムは、ＳＬＯスケジューラを起動することによって、プログラム的に、第５の区間Ｔ５のメモリレイテンシ１２０１を（第４の区間Ｔ４に対して）、レイテンシ閾値１２０６以下に下げることができる。第５の区間Ｔ５に示すように、メモリレイテンシ１２０１は、いくつかの条件において、第２のトレース１２０２の値の変化に少なくともある程度依存している。図示した条件は、ＮＬＳプロセスによる第１のリソースの消費量を低減することによって、第１のリソースの全体的な消費量を最大１０ＧＢ／ｓ未満に低減することである。表１１００を参照すると、メモリレイテンシ１２０１は、９１２でのＮＬＳプロセスによる第１のリソースの全体的な消費量の低減に依存している。具体的には、グラフ１２００のＴ５に示すように、ＳＬＯスケジューラは、３つのＮＬＳプロセスの各々によって、第１のリソースの消費量を低減している。グラフ１２００に示す特定のシステム構成及び制御方式は、第１のリソースの最大使用を可能にすることを犠牲にしても、メモリレイテンシ１２０１がレイテンシ閾値１２０６未満に確実に留まるようにすることを含む。
【００６２】
さらに、表７００、表８００及び表９００から明らかであるように、また、グラフ１２００から明らかであるように、システムのＳＬＯスケジューラは、システム及びプロセッサの２つの従属変数を所望の範囲内に維持するように構成されている。特に、ＳＬＯスケジューラは、各ＬＳプロセスが第１のリソースを各フロア（例えば２．０ＧＢ／ｓのフロア等）で消費できるようにすることができ、グラフ１２００に示すように、ＮＬＳプロセスの活動を調整することによって、全体的なメモリレイテンシをレイテンシ閾値１２０６未満に維持することができる。いくつかの実施形態によれば、ＳＬＯスケジューラがレイテンシ閾値１２０６未満のメモリレイテンシ１２０１を制御するために使用する１つの変数は、プロセッサ又はプロセッサ内の各コアのメモリプリフェッチの量である。
【００６３】
図７〜図１２を参照して説明した例では、フロア制御変数は、少なくともグラフ１２００の第４の区間Ｔ４によって表される一定期間の間、プロセスレイテンシ変数よりも優先される。区間Ｔ１，Ｔ２，Ｔ３では、システムは、ＮＬＳプロセスがＬＳプロセスにコミットされていない過剰な帯域幅を使用できるようにしている。ウィンドウＴ４では、システムは、図１０の１００３で明らかなように、レイテンシがコントラクトレイテンシを超えており、プロセスＬＳ２がそのフロアを満たしていないことを認識する。ＮＬＳプロセスにキャップ又は制限を動的に配置することによって、システムは、第５の区間Ｔ５のシステムレイテンシを、ほぼ全ての時間で、又は、少なくともかなりの時間単位若しくは制御時間単位に亘って下げることによって、ＬＳ２を、割り当てられた帯域幅に戻すことができる。
【００６４】
他の実施形態によれば、当業者には明らかであるように、本明細書で説明するプロセッサ及びＳＬＯスケジューラは、リソースの保証されたフロアを有するＬＳプロセスを提供するだけではなく、プロセス動作及びシステム動作を実質的な時間範囲（例えば、分、時間、日、月）に亘って実質的に常に所望の状態に形成するようにコントラクト上限を提供する。
【００６５】
図１３は、いくつかの実施形態による、コンピューティングシステムで動作する単一のＬＳプロセスのメモリ帯域幅使用対プロセスメモリレイテンシを示すグラフ１３００である。図１３は、プロセッサの動作と、特定のプロセスに関してＳＬＯスケジューラによって実行された動作の結果と、を示している。第１の相関１３０１及び第２の相関１３０２は、コンピューティングシステム条件の２つのセットの下でのプロセッサによるプロセスの命令の実行に関連するメモリレイテンシ１３０３及びメモリ帯域幅使用１３０４の間の関係を示す。２つの相関１３０１，１３０２は、システム内の特定のプロセスについての複数の可能な相関のうち２つである。２つの相関１３０１，１３０２を含むコンピューティングシステム内のプロセスの相関は、非線形であり、マルチリレーショナルである。つまり、システム内の複数の変数は、メモリレイテンシ１３０３及びメモリ帯域幅使用１３０４を含むプロセスの動作に影響を与える。説明のために、相関１３０１，１３０２の各々は、ミリ秒又は秒の間持続し、一方、制御ループは、マイクロ秒のオーダ等のより小さい時間スケールで評価する。
【００６６】
ＳＬＯスケジューラは、プロセスの動作を、コントラクトプロセスレイテンシ１３０５、最大許容プロセスレイテンシ等の特定の制限内に収めるようにタスクされる。ここで、プロセスの動作は、可能な場合には実質的に全ての時間において、コントラクトプロセスレイテンシ１３０５以下に維持される。コントラクトプロセスレイテンシ１３０５は、物理的な計算上の最小メモリレイテンシ時間１３１２を超える妥当な値であり、それ未満では、どんなに単純なプロセスであっても、他のプロセスがシステムリソースを競合することなくコンピューティングシステム内で動作することができない。本明細書で説明するコントラクトプロセスレイテンシ１３０５は、ハードウェアコンポーネント又はシステムと人間のオペレータとの間のコントラクトであり、人間のオペレータと、ハードウェアコンポーネント又はシステムを使用する顧客と、の間のコントラクトではない。コントラクトは、ＳＬＯスケジューラの構成中に設定又は識別され、特定のコンピューティングシステムは、ＳＬＯスケジューラに提供されるコントラクトされたプロセスレイテンシ１３０５又は他の制約を満たすことができることが理解される。
【００６７】
図１３では、ＳＬＯスケジューラは、プロセスが少なくともそのメモリ帯域幅フロア１３０６を使用することを要求しているときに、プロセスの動作をプロセスのメモリ帯域幅フロア１３０６に（メモリ帯域幅フロア１３０６以上に）もたらすようにタスクされる。要約すると、ＳＬＯスケジューラは、特定のプロセスの少なくとも２つの従属変数又は動作１３０３，１３０４を制御するために、コンピューティングシステム内の特定の変数を制御する。プロセスが少なくともそのメモリ帯域幅フロア１３０６を要求していない場合、ＳＬＯスケジューラは、プロセスが、保証されたメモリ帯域幅フロア１３０６よりも少ない消費量を消費することを許可することができる。いくつかの実施形態によれば、プロセスが少なくともそのメモリ帯域幅フロア１３０６を要求している場合、メモリレイテンシ１３０３及びメモリ帯域幅の使用１３０４の２つの動作についてのプロセスの所望の動作は、第２の相関１３０２に沿った第３の点１３１１で示すように、コントラクトプロセスレイテンシ１３０５を含む両方の条件を満たす。他の実施形態によれば、ＳＬＯスケジューラは、２つの条件のうち１つを満たし、これは、図１３の相関１３０１，１３０２に沿った特定の点で示されている。
【００６８】
第１の相関１３０１は、システムが特定のレベルのプロセッサ負荷を含むシステム条件の第１のセットの下にあるときのプロセスの挙動を記述する。例えば、システム条件の第１のセットは、プロセッサ上で動作するアクティブなＬＳプロセス及びＮＬＳプロセスの第１のセットの負荷が大きく、プロセスによるメモリ帯域幅の使用のための適度な量の競合を含む。第１の時間Ｔ１では、プロセスの動作は、相関１３０１に沿った第１の点１３０７であり、これは、プロセスのコントラクトプロセスレイテンシ１３０５を超えるメモリレイテンシ、及び、メモリ帯域幅フロア１３０６未満のメモリ帯域幅使用に対応する。説明のために、Ｔ１を含む全ての時間において、プロセスは、少なくともそのメモリ帯域幅フロア１３０６を要求している。したがって、Ｔ１では、ＳＬＯスケジューラは、ＳＬＯスケジューラの制約条件である少なくともそのメモリ帯域幅フロア１３０６をプロセスに提供するように、コンピューティングシステムを制御することに違反している。
【００６９】
ＳＬＯスケジューラは、第１の時間Ｔ１の後、第２の時間Ｔ２で、システム内のＮＬＳプロセスにキャップを設定することによって、システムのレイテンシを低減している。これにより、第１の相関１３０１に沿った第２の点１３０８でプロセスの動作が行われる。いくつかの実施形態によれば、第２の時間Ｔ２は、Ｔ１後の複数のＳＬＯスケジューラ制御サイクルである。図示するように、プロセスの動作は、第２の点１３０８におけるＴ２において、（１）メモリレイテンシを、コントラクトされたプロセスレイテンシ１３０５以下に減少させるが、（２）少なくともプロセスが要求しているメモリ帯域幅フロア１３０６を提供しない、という２つの条件のうち１つのみを満たす。その結果、相関１３０１によって示すように、ＳＬＯスケジューラは、メモリ帯域幅フロア１３０６を満たすことに違反する。しかしながら、第２の点１３０８でのこの条件のセットは、ＳＬＯスケジューラが第１の相関１３０１に沿って提供することができる最良のものである。したがって、ＳＬＯスケジューラは、システムレイテンシに関するコントラクト義務を果たしており、ＬＳプロセスは、そのメモリ帯域幅のフロア割り当てを要求してはならず、ＳＬＯスケジューラの側でのそれ以上のアクションが必要ない。ＮＬＳプロセスによって消費されるメモリ帯域幅のキャップは、任意の適切な手段によって達成することができる。一実施形態によれば、方法は、所定のＮＬＳプロセスについて所定の時間に処理中の同時メモリ要求の数に対応する、利用可能なプールの利用可能なトークンの数を低減することを含む。したがって、特定のプロセスは、メモリ帯域幅を消費するための次の１つ以上の制御サイクルの間、競合が少なくなる。このメモリ帯域幅の総需要の減少により、システム内の全てのプロセスが経験するメモリレイテンシが減少する。
【００７０】
第２の相関１３０２は、コンピューティングシステム内の特定のプロセスに関する複数の代替の相関のうち１つである。ＳＬＯスケジューラが、第２の相関１３０２が有効になるようにシステム条件を変更した場合、又は、コンピューティングシステムが、第２の相関１３０２が有効になるように別の状態に移行した場合、特定のプロセスの動作は、ＳＬＯスケジューラの制御下で、第１の点１３０９から第２の相関１３０２に沿った別の点に変化する。例えば、プロセスの動作を、第２の点１３１０又は第３の点１３１１に変更することができる。第１の点１３０９は、プロセスのコントラクトプロセスレイテンシ１３０５を超えるメモリレイテンシと、メモリ帯域幅フロア１３０６未満のメモリ帯域幅の使用と、に対応する。プロセスは、時間Ｔ１において、メモリ帯域幅の使用１３０４をメモリ帯域幅フロア１３０６以上で消費することを要求している。点１３０９は、特定のプロセスの両方の条件の違反に対応する。
【００７１】
第２の相関１３０２は、異なる時間に発生し得るコンピューティングシステム内の特定のプロセスに関する複数の代替の相関のうち１つである。第２の相関１３０２が有効になると、特定のプロセスの動作は、ＳＬＯスケジューラの制御の下で、第１の点１３０９から、第２の相関１３０２に沿った別の点に変化する。例えば、ＬＳプロセスは、帯域幅の割り当てを消費しておらず、システムのレイテンシがコントラクトレイテンシを上回っているので、ＳＬＯスケジューラは、ＬＳプロセスの動作点を移動する必要がある。ＳＬＯスケジューラは、システム内のＮＬＳプロセスの帯域幅利用率にキャップを設けることによって、システムの総メモリ帯域幅需要を低減する。このようにして、ＬＳプロセスの動作点は、相関曲線１３０２に沿った第２の点に変更される。
【００７２】
第１の時間Ｔ１の後の第２の時間Ｔ２で、ＳＬＯスケジューラは、他のプロセス（例えば、ＬＳプロセス、ＮＬＳプロセス、ＬＳプロセス及びＮＬＳプロセスの両方）がより少ないプロセッサリソースを消費するようにシステム条件を調整することによって、プロセスの動作を第２の点１３１０又は第３の点１３１１にする。図１３に示すように、特定のプロセスの動作は、第２の点１３１０において、プロセスがメモリ帯域幅フロア１３０６以上を要求している状態にある場合、メモリ帯域幅フロア１３０６以上のメモリ帯域幅使用を満たしている。第３の点１３１１では、第２の相関１３０２に沿ったＴ２でのプロセスの動作も、（１）プロセスメモリレイテンシがコントラクトプロセスレイテンシ１３０５未満であり、（２）プロセスがこのフロア以上を要求している状態にある場合、メモリ帯域幅の使用がそのメモリ帯域フロア１３０６以上であること、の両方の条件を満たしている。したがって、第２の時間Ｔ２における少なくとも１つの制御時間サイクルの間、ＳＬＯスケジューラは、特定のプロセスの動作に適用される第２の相関１３０２に対応するものから離れて、独立した制御変数によってシステムの状態をさらに変更する必要がない。実際、第３の点１３１１では、ＳＬＯスケジューラは、図３に示すような方法に従うことによって、ＬＳプロセス及びＮＬＳプロセスに対するスロットルを徐々に減らすことができる。これは、第３の条件の最適化と考えることができる。第３の条件は、第１の制約を満たしながらシステム全体のスループットが最大になるように、スロットルを可能な限り少なく適用することである。
【００７３】
要約すると、図１３に関して、所定の時間間隔に亘るプロセス特性が第１の相関１３０１によって記述されている場合、ＳＬＯスケジューラは、第１の相関１３０１とコントラクトプロセスレイテンシ１３０５との交点にプロセスの動作を駆動するように構成されている。しかし、ＬＳプロセス特性が変化し、プロセスが第２の相関１３０２によって記述されている場合、第１の実施形態によれば、ＳＬＯスケジューラは、第２の相関１３０２とメモリ帯域幅フロア１３０６との交点にプロセスの挙動を駆動するように構成されている。第２の実施形態によれば、ＳＬＯスケジューラは、第２の相関１３０２とコントラクトプロセスレイテンシ１３０５との交点にプロセス挙動を駆動するように構成されている。一般に、或る動作フェーズ中にプロセスが消費するメモリ帯域幅１３０４のレイテンシ１３０３の関係は、特定のコンピューティングシステムで動作する対応するソフトウェアアプリケーションのプロセスの関数である。コンピューティングシステムは、第１の相関１３０１に従って或る期間動作するプロセスと、第２の相関１３０２に従って他の期間動作するプロセスとを適応させ、プロセスが、制御ループの反復時間よりも実質的に長い間、これらの相関１３０１，１３０２のうち何れかに留まるようにする。すなわち、ＳＬＯスケジューラを介したシステムは、プロセスの相関が変化する前にプロセスの動作を制御するための複数の調整期間を有する。
【００７４】
図１３に示す例は、本明細書で説明するＳＬＯスケジューラの実施形態によって制御される他のシステム全体の条件及び他のプロセスの動作に適用可能である。いくつかの実施形態では、プロセス動作の測定値又はカウント、システムレイテンシ閾値、ＬＳフロア、ＮＬＳ設定点等のＳＬＯスケジューラのコンポーネント、及び、他のコンポーネントは、図１のプロセッサ１０２のレジスタ１１０のセット等のデータ構造に記憶されている。さらに、データ構造の値は、図１のシステムメモリ１０３等のシステムメモリのプロセススケジュールパラメータ１２２から生じてもよい。いくつかの実施形態によれば、必要に応じて、システムレイテンシ閾値、ＬＳフロア、ＮＬＳ設定点及び他のコンポーネントは、図１のＳＬＯスケジューラＡＰＩ１０８及びＯＳ１２０等のオペレーティングシステムによって提供されるＳＬＯスケジューラＡＰＩを介して、図１のＳＬＯスケジューラ１１１等のＳＬＯスケジューラに提供される。いくつかの実施形態によれば、ＳＬＯスケジューラは、オペレーティングシステム内でアプリケーションを実行又は起動することによってアプリケーションがサービスされるときに、特定のプロセスに対して構成される。例えば、アプリケーション１２１が最初に実行されるとき、又は、アプリケーション１２１のコピーが別のプロセスによって生成されるときに、特定のプロセスのシステムレイテンシ閾値、ＬＳフロア及びＮＬＳ設定点が、図１のＳＬＯスケジューラ１１１に関するレジスタ１１０に提供される。図１のプロセススケジュールパラメータ１２２、図１３の相関１３０１，１３０２等のプロセス相関は、図１のＳＬＯスケジューラ１１１等のＳＬＯスケジューラを動作させるために適用される。
【００７５】
いくつかの実施形態では、上記の装置及び技術は、図１を参照して上述したプロセッサ１０２等の１つ以上の集積回路（ＩＣ）デバイス（集積回路パッケージ又はマイクロチップとも呼ばれる）を含むシステムに実装される。これらのＩＣデバイスの設計及び製造には、電子設計自動化（ＥＤＡ）及びコンピュータ支援設計（ＣＡＤ）ソフトウェアツールが使用される。これらの設計ツールは、通常、１つ以上のソフトウェアプログラムとして表される。１つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計又は適合するための処理の少なくとも一部を実行するように１つ以上のＩＣデバイスの回路を表すコードで動作するようにコンピュータシステムを操作する、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含むことができる。設計ツール又は製造ツールを表すソフトウェア命令は、通常、コンピューティングシステムがアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ＩＣデバイスの設計又は製造の１つ以上のフェーズを表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶されてもよいし、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体からアクセスされてもよい。
【００７６】
第１の態様では、システムメモリ及びオペレーティングシステムと通信するプロセッサであって、プロセッサは、第１のプロセス及び第２のプロセスを実行する複数のプロセッサコアと、スケジューラであって、第１の設定点が第１のプロセスのレイテンシ依存性（ＬＳ）フロア以下である場合に、第１のプロセスによる制御サイクルにおける現在の使用が、メモリ帯域幅の使用に対応する第１の設定点を満たすまで、又は、第１の設定点がＬＳフロアを超えた場合に、第１のプロセスによる制御サイクルにおける現在の使用がＬＳフロアを超えるまで、第２のプロセスによるメモリ帯域幅の使用をスケジュールするように構成されたスケジューラと、を含む。
【００７７】
第１の態様の一実施形態では、スケジューラは、将来の制御サイクルにおける第１のプロセスによるメモリ帯域幅の使用を推定することによって、第１の設定点を決定するように構成されている。別の実施形態では、ＬＳフロアは、プロセッサの第１のコアによるメモリ帯域幅の使用制限に対応しており、第１のプロセスの第１の設定点は、第１のコアに関連付けられており、第１のプロセスによる現在の使用は、第１のコアによるメモリ帯域幅の使用である。さらなる実施形態では、スケジューラは、システムレイテンシ閾値を記憶することと、システムレイテンシ閾値を現在のシステムプロセスレイテンシと比較することによって、システムレイテンシ閾値のシステムプロセスレイテンシ違反を判別すること、システムプロセスレイテンシ違反が解決されるまで、第２のプロセスの実行を制御することと、を行うように構成されている。特定の実施形態では、スケジューラは、システムプロセスレイテンシ違反が解決されるまで、第１のプロセスの実行をスロットルするように構成されている。
【００７８】
第１の態様のさらなる実施形態では、スケジューラは、システムレイテンシ閾値を記憶することと、システムレイテンシ閾値を現在のシステムプロセスレイテンシと比較することによって、システムレイテンシ閾値のシステムプロセスレイテンシ違反を判別することと、を行うように構成されている。また、スケジューラは、現在の制御サイクルにおける第２のプロセスによるメモリ帯域幅の使用制限に少なくとも基づいて、第１のプロセス及び第２のプロセスの制御方式を生成することと、現在の制御サイクルの後続の制御サイクルにおいて制限を下げることによって、現在のシステムプロセスレイテンシがシステムレイテンシ閾値に違反しなくなるまで制御方式を適用することと、を行うように構成されている。より特定の実施形態では、プロセッサは、システムレイテンシ閾値のためのレジスタを含み、レジスタは、オペレーティングシステムにおいて第１のプロセスが起動する場合に、オペレーティングシステムのアプリケーションプログラムインタフェース（ＡＰＩ）を介してアクセス可能である。
【００７９】
第１の態様のさらなる実施形態では、ＬＳフロアのためのレジスタであって、レジスタは、オペレーティングシステムにおいて第１のプロセスが起動する場合に、オペレーティングシステムのアプリケーションプログラムインタフェース（ＡＰＩ）を介してアクセス可能である。
【００８０】
第２の態様では、方法は、デバイスのプロセッサのスケジューラによって、デバイスのプロセッサ上で実行されている非レイテンシ依存性（ＮＬＳ）プロセスによるデバイスのメモリ帯域幅の現在の使用を判別することと、スケジューラによって、プロセッサ上で実行されているレイテンシ依存性（ＬＳ）プロセスによるメモリ帯域幅の現在の使用を判別することと、ＬＳプロセスがメモリ帯域幅の少なくともＬＳフロアを使用することを要求する場合であって、現在の使用が、ＬＳプロセスがメモリ帯域幅の少なくともＬＳフロアの量を使用できないことを示す場合、スケジューラによって、全体的なＮＬＳスロットル値を決定することと、スケジューラによって、全体的なＮＬＳスロットル値に基づいて、ＮＬＳプロセスのスロットル方式を決定することと、プロセッサによって、スロットル方式に基づいて、第１のスロットルをＮＬＳプロセスの第１のＮＬＳプロセスに適用することであって、第１のスロットルは、メモリ帯域幅の消費量の低減を含む、ことと、を含む。
【００８１】
第２の態様の一実施形態では、方法は、ＬＳプロセスが、少なくともＬＳフロアの使用量を使用できない場合、及び、ＬＳプロセスが、少なくともメモリ帯域幅のＬＳフロアを使用するように要求する場合に、スケジューラによって、ＬＳプロセスのための第２のスロットルの量を決定することと、プロセッサによって、少なくとも１つの制御サイクルの間に、第２のスロットルをＬＳプロセスに適用することと、をさらに含む。別の実施形態において、プロセッサは、第１のコアと第２のコアとを含むマルチコアプロセッサであり、ＬＳプロセスは、制御サイクルにおいて第１のコアで実行され、第１のスロットルは、制御サイクルにおいて第２のコアによるメモリ帯域幅の消費量の低減を適用する。さらに別の実施形態では、プロセッサは、複数のコアを含むマルチコアプロセッサであり、第１のスロットルは、同じ制御サイクルで実行される第１のＮＬＳプロセスの複数のスレッドに適用される。
【００８２】
第２の態様のさらなる実施形態では、方法は、第１のＮＬＳプロセス、第２のＮＬＳプロセス又はＬＳプロセスの何れかがデバイスのレイテンシ目標外で実行されている場合に、スケジューラによって、ＮＬＳプロセスの第１のＮＬＳプロセス又は第２のＮＬＳプロセスに対してレイテンシスロットルを実施することを含む。さらなる実施形態では、ＬＳフロアは、ＬＳプロセスの受信ネットワーク帯域幅フロアである。
【００８３】
第３の態様では、コンピューティングプロセッサは、コンピューティングプロセッサ上で実行されている非レイテンシ依存性（ＮＬＳ）プロセスによるデバイスのメモリ帯域幅の現在の使用を記憶するレジスタの第１のセットと、コンピューティングプロセッサ上で実行されているレイテンシ依存性（ＬＳ）プロセスによるメモリ帯域幅の現在の使用を記憶するレジスタの第２のセットと、ＬＳプロセスのＬＳフロアを記憶するレジスタの第３のセットと、ＮＬＳプロセスの全体的なＮＬＳスロットル値を記憶するレジスタの第４のセットと、スケジューラと、を含み、スケジューラは、１つ以上のＬＳプロセスがメモリ帯域幅の少なくともＬＳフロアの使用を要求した後に、１つ以上のＬＳプロセスが各々のメモリ帯域幅の少なくともＬＳフロア量を使用できない場合を判別することと、全体的なＮＬＳスロットル値に基づいて、ＮＬＳプロセスのためのスロットル値のセットを決定することと、スロットル値のセットに基づいて、１つ以上のＮＬＳプロセスによるメモリ帯域幅の使用をスロットルすることと、を行う。
【００８４】
第３の態様の一実施形態では、コンピューティングプロセッサは、ＬＳプロセスのＬＳスロットル値を記憶するレジスタの第５のセットを備え、スケジューラは、ＬＳプロセスが、各々のメモリ帯域幅の少なくともＬＳフロアを使用することを要求する場合であって、１つ以上のＬＳプロセスがメモリ帯域幅の少なくともＬＳフロア量を使用できない場合に、ＬＳプロセスのためのＬＳスロットル量を決定することと、少なくとも１つの制御サイクルに対して決定されたＬＳスロットル量に基づいて、１つ以上のＬＳプロセスをスロットルすることと、を行う。別の実施形態では、コンピューティングプロセッサは、第１のコアと第２のコアとを含むマルチコアプロセッサであり、ＮＬＳプロセスは、制御サイクルにおいて第１のコアで実行され、スロットルは、制御サイクルにおいて第１のコアによるメモリ帯域幅の消費量の低減を適用する。
【００８５】
第３の態様のさらなる実施形態では、ＮＬＳプロセスは、第１のＮＬＳプロセスを含み、コンピューティングプロセッサは、複数のコアを含み、スロットルは、コンピューティングプロセッサ内の同じ制御サイクルで実行される第１のＮＬＳプロセスの複数のスレッドに適用される。さらに別の実施形態では、ＮＬＳプロセスは、第１のＮＬＳプロセスを含み、スケジューラは、ＬＳプロセスがデバイスのレイテンシ制限外で実行されている場合に、レイテンシスロットルを第１のＮＬＳプロセスに適用する。さらに別の実施形態では、ＬＳプロセスは、第１のＬＳプロセスを含み、スケジューラは、何れかのＬＳプロセスがデバイスのレイテンシ制限外で実行されている場合に、レイテンシスロットルを第１のＬＳプロセスに適用する。
【００８６】
コンピュータ可読記憶媒体は、命令及び／又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。かかる記憶媒体には、限定されないが、光媒体（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、ブルーレイ（登録商標）ディスク）、磁気媒体（例えば、フロッピー（登録商標）ディスク、磁気テープ、磁気ハードドライブ）、揮発性メモリ（例えば、ＲＡＭ）、不揮発性メモリ（例えば、ＲＯＭ、フラッシュメモリ）、又は、微小電気機械システム（ＭＥＭＳ）ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体は、コンピュータシステムに内蔵されてもよいし（例えば、システムＲＡＭ又はＲＯＭ）、コンピュータシステムに固定的に取り付けられてもよいし（例えば、磁気ハードドライブ）、コンピュータシステムに着脱可能に取り付けられてもよいし（例えば、光学ディスク又はユニバーサルシリアルバス（ＵＳＢ）ベースのフラッシュメモリ）、有線又は無線のネットワークを介してコンピュータシステムに接続されてもよい（例えば、ネットワークアクセス可能なストレージ（ＮＡＳ））。
【００８７】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行する処理システムの１つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の１つ以上のセットを含む。ソフトウェアは、１つ以上のプロセッサによって実行されると、上記の技術の１つ以上の態様を実行するように１つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ（ＲＡＭ）、又は、他の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【００８８】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、１つ以上のさらなるアクティビティが実行される場合があり、１つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【００８９】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
【図１】
2021508108.tif 000003
【図２】
2021508108.tif 000004
【図３】
2021508108.tif 000005
【図４】
2021508108.tif 000006
【図５】
2021508108.tif 000007
【図６】
2021508108.tif 000008
【図７】
2021508108.tif 000009
【図８】
2021508108.tif 000010
【図９】
2021508108.tif 000011
【図１０】
2021508108.tif 000012
【図１１】
2021508108.tif 000013
【図１２】
2021508108.tif 000014
【図１３】
2021508108.tif 000015
【手続補正書】
【提出日】令和2年8月18日(2020.8.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
システムメモリ及びオペレーティングシステムと通信するプロセッサであって、
第１のプロセス及び第２のプロセスを実行する複数のプロセッサコアと、
スケジューラと、を備え、
前記スケジューラは、
第１の設定点が前記第１のプロセスのレイテンシ依存性（ＬＳ）フロア以下である場合に、前記第１のプロセスによる制御サイクルにおける現在の使用が、メモリ帯域幅の使用に対応する前記第１の設定点を満たすまで、又は、
前記第１の設定点が前記ＬＳフロアを超えた場合に、前記第１のプロセスによる前記制御サイクルにおける現在の使用が前記ＬＳフロアを超えるまで、
前記第２のプロセスによる前記メモリ帯域幅の使用をスケジュールするように構成されている、
プロセッサ。
【請求項２】
前記スケジューラは、
将来の制御サイクルにおける前記第１のプロセスによる前記メモリ帯域幅の使用を推定することによって、前記第１の設定点を決定するように構成されている、
請求項１のプロセッサ。
【請求項３】
前記ＬＳフロアは、前記プロセッサの第１のコアによる前記メモリ帯域幅の使用の制限に対応しており、
前記第１のプロセスの前記第１の設定点は、前記第１のコアに関連付けられており、
前記第１のプロセスによる現在の使用は、前記第１のコアによる前記メモリ帯域幅の使用である、
請求項１のプロセッサ。
【請求項４】
前記スケジューラは、
システムレイテンシ閾値を記憶することと、
前記システムレイテンシ閾値を現在のシステムプロセスレイテンシと比較することによって、前記システムレイテンシ閾値のシステムプロセスレイテンシ違反を判別することと、
前記システムプロセスレイテンシ違反が解決されるまで、前記第２のプロセスの実行を制御することと、
を行うように構成されている、
請求項１のプロセッサ。
【請求項５】
前記スケジューラは、
前記システムプロセスレイテンシ違反が解決されるまで、前記第１のプロセスの実行をスロットルするように構成されている、
請求項４のプロセッサ。
【請求項６】
前記スケジューラは、
システムレイテンシ閾値を記憶することと、
前記システムレイテンシ閾値を現在のシステムプロセスレイテンシと比較することによって、前記システムレイテンシ閾値のシステムプロセスレイテンシ違反を判別することと、
現在の制御サイクルにおける前記第２のプロセスによる前記メモリ帯域幅の使用の制限に少なくとも基づいて、前記第１のプロセス及び前記第２のプロセスの制御方式を生成することと、
前記現在の制御サイクルの後続の制御サイクルにおいて前記制限を下げることによって、前記現在のシステムプロセスレイテンシが前記システムレイテンシ閾値に違反しなくなるまで前記制御方式を適用することと、
を行うように構成されている、
請求項１〜５の何れかに記載のプロセッサ。
【請求項７】
前記システムレイテンシ閾値のためのレジスタを備え、前記レジスタは、前記オペレーティングシステムにおいて前記第１のプロセスが起動する場合に、前記オペレーティングシステムのアプリケーションプログラムインタフェース（ＡＰＩ）を介してアクセス可能である、
請求項６のプロセッサ。
【請求項８】
前記ＬＳフロアのためのレジスタを備え、前記レジスタは、前記オペレーティングシステムにおいて前記第１のプロセスが起動する場合に、前記オペレーティングシステムのアプリケーションプログラムインタフェース（ＡＰＩ）を介してアクセス可能である、
請求項１〜７の何れかのプロセッサ。
【請求項９】
デバイスのプロセッサのスケジューラによって、前記デバイスの前記プロセッサ上で実行されている非レイテンシ依存性（ＮＬＳ）プロセスによる前記デバイスのメモリ帯域幅の現在の使用を判別することと、
前記スケジューラによって、前記プロセッサ上で実行されているレイテンシ依存性（ＬＳ）プロセスによる前記メモリ帯域幅の現在の使用を判別することと、
前記ＬＳプロセスが前記メモリ帯域幅の少なくともＬＳフロアを使用することを要求する場合であって、前記現在の使用が、前記ＬＳプロセスが前記メモリ帯域幅の少なくともＬＳフロアの量を使用できないことを示す場合に、前記スケジューラによって、全体的なＮＬＳスロットル値を決定することと、
前記スケジューラによって、前記全体的なＮＬＳスロットル値に基づいて、前記ＮＬＳプロセスのスロットル方式を決定することと、
前記プロセッサによって、前記スロットル方式に基づいて、第１のスロットルを前記ＮＬＳプロセスの第１のＮＬＳプロセスに適用することであって、前記第１のスロットルは、前記メモリ帯域幅の消費量の低減を含む、ことと、を含む、
方法。
【請求項１０】
前記ＬＳプロセスが、少なくともＬＳフロアの使用量を使用できない場合、及び、前記ＬＳプロセスが、少なくとも前記メモリ帯域幅の前記ＬＳフロアを使用するように要求する場合に、前記スケジューラによって、前記ＬＳプロセスのための第２のスロットルの量を決定することと、
前記プロセッサによって、少なくとも１つの制御サイクルの間に、前記第２のスロットルを前記ＬＳプロセスに適用することと、を含む、
請求項９の方法。
【請求項１１】
前記プロセッサは、第１のコアと第２のコアとを含むマルチコアプロセッサであり、
前記ＬＳプロセスは、制御サイクルにおいて前記第１のコアで実行され、
前記第１のスロットルは、前記制御サイクルにおいて前記第２のコアによる前記メモリ帯域幅の消費量の低減を適用する、
請求項９の方法。
【請求項１２】
前記プロセッサは、複数のコアを含むマルチコアプロセッサであり、
前記第１のスロットルは、同じ制御サイクルで実行される前記第１のＮＬＳプロセスの複数のスレッドに適用される、
請求項９の方法。
【請求項１３】
前記第１のＮＬＳプロセス、第２のＮＬＳプロセス又はＬＳプロセスの何れかが前記デバイスのレイテンシ目標外で実行されている場合に、前記スケジューラによって、前記ＮＬＳプロセスの第１のＮＬＳプロセス又は第２のＮＬＳプロセスに対してレイテンシスロットルを実施することを含む、
請求項９の方法。
【請求項１４】
前記ＬＳフロアは、前記ＬＳプロセスの受信ネットワーク帯域幅フロアである、
請求項９の方法。
【請求項１５】
コンピューティングプロセッサであって、
前記コンピューティングプロセッサ上で実行されている非レイテンシ依存性（ＮＬＳ）プロセスによるデバイスのメモリ帯域幅の現在の使用を記憶するレジスタの第１のセットと、
前記コンピューティングプロセッサ上で実行されているレイテンシ依存性（ＬＳ）プロセスによる前記メモリ帯域幅の現在の使用を記憶するレジスタの第２のセットと、
前記ＬＳプロセスのＬＳフロアを記憶するレジスタの第３のセットと、
前記ＮＬＳプロセスの全体的なＮＬＳスロットル値を記憶するレジスタの第４のセットと、
スケジューラと、を備え、
前記スケジューラは、
１つ以上の前記ＬＳプロセスが前記メモリ帯域幅の少なくとも前記ＬＳフロアの使用を要求した後に、前記１つ以上の前記ＬＳプロセスが各々の前記メモリ帯域幅の少なくともＬＳフロア量を使用できない場合を判別することと、
前記全体的なＮＬＳスロットル値に基づいて、前記ＮＬＳプロセスのためのスロットル値のセットを決定することと、
前記スロットル値のセットに基づいて、１つ以上の前記ＮＬＳプロセスによる前記メモリ帯域幅の使用をスロットルすることと、を行う、
コンピューティングプロセッサ。
【国際調査報告】
2021508108.tif 000016
2021508108.tif 000017