(57)【要約】  態様は、ビクティムキャッシュとのレイテンシの低減を利用するように実行プロセスを実行プロセッサクラスタにスケジューリングすることを実施するためのコンピューティングデバイス、システム、および方法を含む。コンピューティングデバイスは、利用可能な共有キャッシュメモリ空間を有する第1のリモート共有キャッシュメモリを有する第1のプロセッサクラスタを決定し得る。実行プロセスを適切にスケジューリングするために、コンピューティングデバイスは、実行プロセスとともにスケジューリングされた実行プロセッサクラスタよりも低い第1のリモート共有キャッシュメモリに対するレイテンシを有する第2のプロセッサクラスタを決定し得る。第2のプロセッサクラスタは、利用可能な共有キャッシュメモリ空間のサイズと第1のリモート共有キャッシュメモリに対する第2のプロセッサクラスタのレイテンシとに基づいて実行プロセスをスケジューリングされ、したがって実行プロセッサクラスタになり得る。利用可能な共有キャッシュメモリ空間は、実行プロセスのためのビクティムキャッシュとして使用され得る。
2018511111.tif 000002
【特許請求の範囲】
【請求項１】
ビクティムキャッシュとのレイテンシの低減を利用するように実行プロセスを実行プロセッサクラスタにスケジューリングするための方法であって、
利用可能な共有キャッシュメモリ空間を有する第1のリモート共有キャッシュメモリを有する第1のプロセッサクラスタを決定するステップと、
前記実行プロセスとともにスケジューリングされた第1の実行プロセッサクラスタよりも低い前記第1のリモート共有キャッシュメモリに対するレイテンシを有する第2のプロセッサクラスタを決定するステップと、
前記利用可能な共有キャッシュメモリ空間のサイズと前記第1のリモート共有キャッシュメモリに対する前記第2のプロセッサクラスタの前記レイテンシとに基づいて前記実行プロセスを第2の実行プロセッサクラスタとしての前記第2のプロセッサクラスタにスケジューリングするステップと、
前記実行プロセスのための前記ビクティムキャッシュとして前記利用可能な共有キャッシュメモリ空間を使用するステップと
を含む、方法。
【請求項２】
利用可能な共有キャッシュメモリ空間を有する第1のリモート共有キャッシュメモリを有する第1のプロセッサクラスタを決定するステップが、最高の量の利用可能な共有キャッシュメモリ空間を有する前記第1のリモート共有キャッシュメモリを有する前記第1のプロセッサクラスタを決定することを含み、
前記実行プロセスとともにスケジューリングされた第1の実行プロセッサクラスタよりも低い前記第1のリモート共有キャッシュメモリに対するレイテンシを有する第2のプロセッサクラスタを決定するステップが、前記第1のリモート共有キャッシュメモリに対する最低のレイテンシを有する前記第2のプロセッサクラスタを決定することを含み、
前記利用可能な共有キャッシュメモリ空間のサイズと前記第1のリモート共有キャッシュメモリに対する前記第2のプロセッサクラスタの前記レイテンシとに基づいて前記実行プロセスを第2の実行プロセッサクラスタとしての前記第2のプロセッサクラスタにスケジューリングするステップが、前記最高の量の利用可能な共有キャッシュメモリ空間を有する前記第1のリモート共有キャッシュメモリに対する前記最低のレイテンシを有する前記第2のプロセッサクラスタに基づいて前記実行プロセスを第2の実行プロセッサクラスタとしての前記第2のプロセッサクラスタにスケジューリングすることを含む、
請求項1に記載の方法。
【請求項３】
プロセスが前記第2のプロセッサクラスタに向けてスケジューリングされるかどうかを決定するステップと、
前記プロセスが前記第2のプロセッサクラスタに向けてスケジューリングされるとの決定に応答して前記プロセスを第3のプロセッサクラスタとしての前記第1の実行プロセッサクラスタにスケジューリングするステップと
をさらに含む、請求項1に記載の方法。
【請求項４】
最高の量の利用可能な共有キャッシュメモリ空間を有する第2のリモート共有キャッシュメモリを有する第3のプロセッサクラスタを決定するステップであって、前記第2のリモート共有キャッシュメモリが前記第1のリモート共有キャッシュメモリ以外の任意のリモート共有キャッシュメモリを含む、ステップと、
前記第2の実行プロセッサクラスタに対する最低のレイテンシを有する第4のプロセッサクラスタを決定するステップであって、前記第4のプロセッサクラスタが前記第1のプロセッサクラスタ以外の任意のプロセッサクラスタを含む、ステップと、
前記第3のプロセッサクラスタに向けてスケジューリングされたプロセスを前記第4のプロセッサクラスタにスケジューリングするステップと、
前記実行プロセスのための前記ビクティムキャッシュの一部として前記最高の量の利用可能な共有キャッシュメモリ空間を使用するステップと
をさらに含む、請求項1に記載の方法。
【請求項５】
プロセスが前記第4のプロセッサクラスタに向けてスケジューリングされるかどうかを決定するステップと、
前記プロセスが前記第4のプロセッサクラスタに向けてスケジューリングされるとの決定に応答して前記プロセスを前記第3のプロセッサクラスタにスケジューリングするステップと
をさらに含む、請求項4に記載の方法。
【請求項６】
互いに通信可能に接続された複数のプロセッサクラスタと、
実行プロセスとともにスケジューリングされた前記複数のプロセッサクラスタの第1の実行プロセッサクラスタと、
各々が前記複数のプロセッサのうちの少なくとも1つに通信可能に接続された複数の共有キャッシュメモリと、
前記複数のプロセッサクラスタに通信可能に接続されたプロセッサであって、
利用可能な共有キャッシュメモリ空間を有する第1のリモート共有キャッシュメモリを有する第1のプロセッサクラスタを決定することと、
前記実行プロセスとともにスケジューリングされた前記第1の実行プロセッサクラスタよりも低い前記第1のリモート共有キャッシュメモリに対するレイテンシを有する第2のプロセッサクラスタを決定することと、
前記利用可能な共有キャッシュメモリ空間のサイズと前記第1のリモート共有キャッシュメモリに対する前記第2のプロセッサクラスタの前記レイテンシとに基づいて前記実行プロセスを第2の実行プロセッサクラスタとしての前記第2のプロセッサクラスタにスケジューリングすることと、
前記実行プロセスのためのビクティムキャッシュとして前記利用可能な共有キャッシュメモリ空間を使用することと
を含む動作を実行するためのプロセッサ実行可能命令を用いて構成されたプロセッサと
を含む、コンピューティングデバイス。
【請求項７】
前記プロセッサが、
利用可能な共有キャッシュメモリ空間を有する第1のリモート共有キャッシュメモリを有する第1のプロセッサクラスタを決定することが、最高の量の利用可能な共有キャッシュメモリ空間を有する前記第1のリモート共有キャッシュメモリを有する前記第1のプロセッサクラスタを決定することを含み、
前記実行プロセスとともにスケジューリングされた前記第1の実行プロセッサクラスタよりも低い前記第1のリモート共有キャッシュメモリに対するレイテンシを有する第2のプロセッサクラスタを決定することが、前記第1のリモート共有キャッシュメモリに対する最低のレイテンシを有する前記第2のプロセッサクラスタを決定することを含み、
前記利用可能な共有キャッシュメモリ空間のサイズと前記第1のリモート共有キャッシュメモリに対する前記第2のプロセッサクラスタの前記レイテンシとに基づいて前記実行プロセスを第2の実行プロセッサクラスタとしての前記第2のプロセッサクラスタにスケジューリングすることが、前記最高の量の利用可能な共有キャッシュメモリ空間を有する前記第1のリモート共有キャッシュメモリに対する前記最低のレイテンシを有する前記第2のプロセッサクラスタに基づいて前記実行プロセスを第2の実行プロセッサクラスタとしての前記第2のプロセッサクラスタにスケジューリングすることを含む
ように動作を実行するためのプロセッサ実行可能命令を用いてさらに構成される、請求項6に記載のコンピューティングデバイス。
【請求項８】
前記プロセッサが、
プロセスが前記第2のプロセッサクラスタに向けてスケジューリングされるかどうかを決定することと、
前記プロセスが前記第2のプロセッサクラスタに向けてスケジューリングされるとの決定に応答して前記プロセスを第3のプロセッサクラスタとしての前記第1の実行プロセッサクラスタにスケジューリングすることと
を含む動作を実行するためのプロセッサ実行可能命令を用いてさらに構成される、請求項6に記載のコンピューティングデバイス。
【請求項９】
前記プロセッサが、
最高の量の利用可能な共有キャッシュメモリ空間を有する第2のリモート共有キャッシュメモリを有する第3のプロセッサクラスタを決定することであって、前記第2のリモート共有キャッシュメモリが前記第1のリモート共有キャッシュメモリ以外の任意のリモート共有キャッシュメモリを含む、決定することと、
前記第2の実行プロセッサクラスタに対する最低のレイテンシを有する第4のプロセッサクラスタを決定することであって、前記第4のプロセッサクラスタが前記第1のプロセッサクラスタ以外の任意のプロセッサクラスタを含む、決定することと、
前記第3のプロセッサクラスタに向けてスケジューリングされたプロセスを前記第4のプロセッサクラスタにスケジューリングすることと、
前記実行プロセスのための前記ビクティムキャッシュの一部として前記最高の量の利用可能な共有キャッシュメモリ空間を使用することと
を含む動作を実行するためのプロセッサ実行可能命令を用いてさらに構成される、請求項6に記載のコンピューティングデバイス。
【請求項１０】
前記プロセッサが、
プロセスが前記第4のプロセッサクラスタに向けてスケジューリングされるかどうかを決定することと、
前記プロセスが前記第4のプロセッサクラスタに向けてスケジューリングされるとの決定に応答して前記プロセスを前記第3のプロセッサクラスタにスケジューリングすることと
を含む動作を実行するためのプロセッサ実行可能命令を用いてさらに構成される、請求項9に記載のコンピューティングデバイス。
【請求項１１】
利用可能な共有キャッシュメモリ空間を有する第1のリモート共有キャッシュメモリを有する第1のプロセッサクラスタを決定するための手段と、
実行プロセスとともにスケジューリングされた第1の実行プロセッサクラスタよりも低い前記第1のリモート共有キャッシュメモリに対するレイテンシを有する第2のプロセッサクラスタを決定するための手段と、
前記利用可能な共有キャッシュメモリ空間のサイズと前記第1のリモート共有キャッシュメモリに対する前記第2のプロセッサクラスタの前記レイテンシとに基づいて、前記実行プロセスを第2の実行プロセッサクラスタとしての前記第2のプロセッサクラスタにスケジューリングするための手段と、
前記実行プロセスのためのビクティムキャッシュとして前記利用可能な共有キャッシュメモリ空間を使用するための手段と
を含む、コンピューティングデバイス。
【請求項１２】
利用可能な共有キャッシュメモリ空間を有する第1のリモート共有キャッシュメモリを有する第1のプロセッサクラスタを決定するための手段が、最高の量の利用可能な共有キャッシュメモリ空間を有する前記第1のリモート共有キャッシュメモリを有する前記第1のプロセッサクラスタを決定するための手段を含み、
前記実行プロセスとともにスケジューリングされた第1の実行プロセッサクラスタよりも低い前記第1のリモート共有キャッシュメモリに対するレイテンシを有する第2のプロセッサクラスタを決定するための手段が、前記第1のリモート共有キャッシュメモリに対する最低のレイテンシを有する前記第2のプロセッサクラスタを決定するための手段を含み、
前記利用可能な共有キャッシュメモリ空間のサイズと前記第1のリモート共有キャッシュメモリに対する前記第2のプロセッサクラスタの前記レイテンシとに基づいて前記実行プロセスを第2の実行プロセッサクラスタとしての前記第2のプロセッサクラスタにスケジューリングするための手段が、前記最高の量の利用可能な共有キャッシュメモリ空間を有する前記第1のリモート共有キャッシュメモリに対する前記最低のレイテンシを有する前記第2のプロセッサクラスタに基づいて前記実行プロセスを第2の実行プロセッサクラスタとしての前記第2のプロセッサクラスタにスケジューリングするための手段を含む、
請求項11に記載のコンピューティングデバイス。
【請求項１３】
プロセスが前記第2のプロセッサクラスタに向けてスケジューリングされるかどうかを決定するための手段と、
前記プロセスが前記第2のプロセッサクラスタに向けてスケジューリングされるとの決定に応答して前記プロセスを第3のプロセッサクラスタとしての前記第1の実行プロセッサクラスタにスケジューリングするための手段と
をさらに含む、請求項11に記載のコンピューティングデバイス。
【請求項１４】
最高の量の利用可能な共有キャッシュメモリ空間を有する第2のリモート共有キャッシュメモリを有する第3のプロセッサクラスタを決定するための手段であって、前記第2のリモート共有キャッシュメモリが前記第1のリモート共有キャッシュメモリ以外の任意のリモート共有キャッシュメモリを含む、手段と、
前記第2の実行プロセッサクラスタに対する最低のレイテンシを有する第4のプロセッサクラスタを決定するための手段であって、前記第4のプロセッサクラスタが前記第1のプロセッサクラスタ以外の任意のプロセッサクラスタを含む、手段と、
前記第3のプロセッサクラスタに向けてスケジューリングされたプロセスを前記第4のプロセッサクラスタにスケジューリングするための手段と、
前記実行プロセスのための前記ビクティムキャッシュの一部として前記最高の量の利用可能な共有キャッシュメモリ空間を使用するための手段と
をさらに含む、請求項11に記載のコンピューティングデバイス。
【請求項１５】
プロセスが前記第4のプロセッサクラスタに向けてスケジューリングされるかどうかを決定するための手段と、
前記プロセスが前記第4のプロセッサクラスタに向けてスケジューリングされるとの決定に応答して前記プロセスを前記第3のプロセッサクラスタにスケジューリングするための手段と
をさらに含む、請求項14に記載のコンピューティングデバイス。
【請求項１６】
プロセッサ実行可能命令を記憶した非一時的プロセッサ可読媒体であって、前記プロセッサ実行可能命令がプロセッサに、
利用可能な共有キャッシュメモリ空間を有する第1のリモート共有キャッシュメモリを有する第1のプロセッサクラスタを決定することと、
実行プロセスとともにスケジューリングされた第1の実行プロセッサクラスタよりも低い前記第1のリモート共有キャッシュメモリに対するレイテンシを有する第2のプロセッサクラスタを決定することと、
前記利用可能な共有キャッシュメモリ空間のサイズと前記第1のリモート共有キャッシュメモリに対する前記第2のプロセッサクラスタの前記レイテンシとに基づいて前記実行プロセスを第2の実行プロセッサクラスタとしての前記第2のプロセッサクラスタにスケジューリングすることと、
前記実行プロセスのためのビクティムキャッシュとして前記利用可能な共有キャッシュメモリ空間を使用することと
を含む動作を実行させるように構成される、非一時的プロセッサ可読媒体。
【請求項１７】
前記記憶されたプロセッサ実行可能命令が、
利用可能な共有キャッシュメモリ空間を有する第1のリモート共有キャッシュメモリを有する第1のプロセッサクラスタを決定することが、最高の量の利用可能な共有キャッシュメモリ空間を有する前記第1のリモート共有キャッシュメモリを有する前記第1のプロセッサクラスタを決定することを含み、
前記実行プロセスとともにスケジューリングされた第1の実行プロセッサクラスタよりも低い前記第1のリモート共有キャッシュメモリに対するレイテンシを有する第2のプロセッサクラスタを決定することが、前記第1のリモート共有キャッシュメモリに対する最低のレイテンシを有する前記第2のプロセッサクラスタを決定することを含み、
前記利用可能な共有キャッシュメモリ空間のサイズと前記第1のリモート共有キャッシュメモリに対する前記第2のプロセッサクラスタの前記レイテンシとに基づいて前記実行プロセスを第2の実行プロセッサクラスタとしての前記第2のプロセッサクラスタにスケジューリングすることが、前記最高の量の利用可能な共有キャッシュメモリ空間を有する前記第1のリモート共有キャッシュメモリに対する前記最低のレイテンシを有する前記第2のプロセッサクラスタに基づいて前記実行プロセスを第2の実行プロセッサクラスタとしての前記第2のプロセッサクラスタにスケジューリングすることを含む
ように前記プロセッサに動作を実行させるように構成される、請求項16に記載の非一時的プロセッサ可読媒体。
【請求項１８】
前記記憶されたプロセッサ実行可能命令が、
プロセスが前記第2のプロセッサクラスタに向けてスケジューリングされるかどうかを決定することと、
前記プロセスが前記第2のプロセッサクラスタに向けてスケジューリングされるとの決定に応答して前記プロセスを第3のプロセッサクラスタとしての前記第1の実行プロセッサクラスタにスケジューリングすることと
をさらに含む動作を前記プロセッサに実行させるように構成される、請求項16に記載の非一時的プロセッサ可読媒体。
【請求項１９】
前記記憶されたプロセッサ実行可能命令が、
最高の量の利用可能な共有キャッシュメモリ空間を有する第2のリモート共有キャッシュメモリを有する第3のプロセッサクラスタを決定することであって、前記第2のリモート共有キャッシュメモリが前記第1のリモート共有キャッシュメモリ以外の任意のリモート共有キャッシュメモリを含む、決定することと、
前記第2の実行プロセッサクラスタに対する最低のレイテンシを有する第4のプロセッサクラスタを決定することであって、前記第4のプロセッサクラスタが前記第1のプロセッサクラスタ以外の任意のプロセッサクラスタを含む、決定することと、
前記第3のプロセッサクラスタに向けてスケジューリングされたプロセスを前記第4のプロセッサクラスタにスケジューリングすることと、
前記実行プロセスのための前記ビクティムキャッシュの一部として前記最高の量の利用可能な共有キャッシュメモリ空間を使用することと
をさらに含む動作を前記プロセッサに実行させるように構成される、請求項16に記載の非一時的プロセッサ可読媒体。
【請求項２０】
前記記憶されたプロセッサ実行可能命令が、
プロセスが前記第4のプロセッサクラスタに向けてスケジューリングされるかどうかを決定することと、
前記プロセスが前記第4のプロセッサクラスタに向けてスケジューリングされるとの決定に応答して前記プロセスを前記第3のプロセッサクラスタにスケジューリングすることと
をさらに含む動作を前記プロセッサに実行させるように構成される、請求項19に記載の非一時的プロセッサ可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
広範囲のコンピューティングデバイスにおける性能および特徴に対する需要の増加は、以前の世代よりも高速に実行しながら、より多数の能力およびより重い作業負荷を扱うために、複数の中央プロセッサユニット(CPU)をコンピューティングデバイス内に含めるように、製品を導いてきた。いくつかのアーキテクチャは、異なるタスクを実行し、異なる能力をサポートするために、クラスタに配列されたCPUを含む。コンピューティングデバイスは、コンピューティングデバイスのソフトウェアおよびサブシステムの需要を扱うために、マルチクラスタCPUシステムを含む場合がある。CPUが、それらの処理速度に匹敵する速度で、記憶されたコードおよびデータにアクセスすることができる場合にのみ、CPUの数で、コンピューティングデバイスの性能を高めることができる。キャッシュメモリへのアクセスを要求するCPUが多すぎると、性能ボトルネックを引き起こす可能性がある。
【０００２】
この性能ボトルネックが生じることを回避するために、各CPUクラスタは、それ自体のキャッシュメモリ、たとえば、L2キャッシュを含む場合がある。多くの事例では、コンピューティングデバイスのCPUクラスタのすべてがアクティブであるとは限らない場合があり、または、CPUクラスタのキャッシュが十分に利用されない場合がある。既存のキャッシュコヒーレンシプロトコルは、異なるCPUクラスタのL2キャッシュの間のデータの共有をサポートする。しかしながら、これらのキャッシュコヒーレンシプロトコルは、マルチクラスタCPUシステムにおける利用可能なL2キャッシュリソースを十分に活用することができない。他のアクティブなCPUクラスタをサポートするために活用されるべき好ましいL2キャッシュは、最低のレイテンシと最高の利用可能性の両方を有するマルチクラスタCPUシステムのL2キャッシュとなる。この好ましい環境は、CPUクラスタのために他のL2クラスタリソースを活用しようとするとき、常に存在するとは限らない。さらに、最高の利用可能性と最低のレイテンシとを組み合わせても、最良の性能結果との組合せがもたらされない場合がある。
【発明の概要】
【課題を解決するための手段】
【０００３】
様々な態様の方法および装置は、ビクティムキャッシュとのレイテンシの低減を利用するように実行プロセスを実行プロセッサクラスタにスケジューリングするための回路および方法を提供する。態様方法は、利用可能な共有キャッシュメモリ空間を有する第1のリモート共有キャッシュメモリを有する第1のプロセッサクラスタを決定するステップと、実行プロセスとともにスケジューリングされた第1の実行プロセッサクラスタよりも低い第1のリモート共有キャッシュメモリに対するレイテンシを有する第2のプロセッサクラスタを決定するステップと、利用可能な共有キャッシュメモリ空間のサイズと第1のリモート共有キャッシュメモリに対する第2のプロセッサクラスタのレイテンシとに基づいて実行プロセスを第2の実行プロセッサクラスタとしての第2のプロセッサクラスタにスケジューリングするステップと、実行プロセスのためのビクティムキャッシュとして利用可能な共有キャッシュメモリ空間を使用するステップとを含み得る。
【０００４】
一態様では、利用可能な共有キャッシュメモリ空間を有する第1のリモート共有キャッシュメモリを有する第1のプロセッサクラスタを決定するステップが、最高の量の利用可能な共有キャッシュメモリ空間を有する第1のリモート共有キャッシュメモリを有する第1のプロセッサクラスタを決定することを含む場合があり、実行プロセスとともにスケジューリングされた第1の実行プロセッサクラスタよりも低い第1のリモート共有キャッシュメモリに対するレイテンシを有する第2のプロセッサクラスタを決定するステップが、第1のリモート共有キャッシュメモリに対する最低のレイテンシを有する第2のプロセッサクラスタを決定することを含む場合があり、利用可能な共有キャッシュメモリ空間のサイズと第1のリモート共有キャッシュメモリに対する第2のプロセッサクラスタのレイテンシとに基づいて実行プロセスを第2の実行プロセッサクラスタとしての第2のプロセッサクラスタにスケジューリングするステップが、最高の量の利用可能な共有キャッシュメモリ空間を有する第1のリモート共有キャッシュメモリに対する最低のレイテンシを有する第2のプロセッサクラスタに基づいて実行プロセスを第2の実行プロセッサクラスタとしての第2のプロセッサクラスタにスケジューリングすることを含む場合がある。
【０００５】
一態様方法は、プロセスが第2のプロセッサクラスタに向けてスケジューリングされるかどうかを決定するステップと、プロセスが第2のプロセッサクラスタに向けてスケジューリングされるとの決定に応答してプロセスを第3のプロセッサクラスタとしての第1の実行プロセッサクラスタにスケジューリングするステップとをさらに含み得る。
【０００６】
一態様方法は、最高の量の利用可能な共有キャッシュメモリ空間を有する第2のリモート共有キャッシュメモリを有する第3のプロセッサクラスタを決定するステップであって、第2のリモート共有キャッシュメモリが第1のリモート共有キャッシュメモリ以外の任意のリモート共有キャッシュメモリを含む、ステップと、第2の実行プロセッサクラスタに対する最低のレイテンシを有する第4のプロセッサクラスタを決定するステップであって、第4のプロセッサクラスタが第1のプロセッサクラスタ以外の任意のプロセッサクラスタを含む、ステップと、第3のプロセッサクラスタに向けてスケジューリングされたプロセスを第4のプロセッサクラスタにスケジューリングするステップと、実行プロセスのためのビクティムキャッシュの一部として最高の量の利用可能な共有キャッシュメモリ空間を使用するステップとをさらに含み得る。
【０００７】
一態様方法は、プロセスが第4のプロセッサクラスタに向けてスケジューリングされるかどうかを決定するステップと、プロセスが第4のプロセッサクラスタに向けてスケジューリングされるとの決定に応答してプロセスを第3のプロセッサクラスタにスケジューリングするステップとをさらに含み得る。
【０００８】
一態様は、コンピューティングデバイスを含み、コンピューティングデバイスは、互いに通信可能に接続された複数のプロセッサクラスタと、実行プロセスを割り当てられた、複数のプロセッサクラスタのうちの第1の実行プロセッサクラスタと、複数のプロセッサのうちの少なくとも1つに、各々通信可能に接続された、複数の共有キャッシュメモリと、複数のプロセッサクラスタに通信可能に接続され、上記で説明した1つまたは複数の態様方法の動作を実行するようにプロセッサ実行可能命令で構成された、プロセッサとを有する。
【０００９】
一態様は、上記で説明した1つまたは複数の態様方法の機能を実行するための手段を有するコンピューティングデバイスを含む。
【００１０】
一態様は、上記で説明した1つまたは複数の態様方法の動作をプロセッサに実行させるように構成されたプロセッサ実行可能命令を記憶した、非一時的プロセッサ可読媒体を含む。
【００１１】
本明細書に組み込まれ、本明細書の一部を構成する添付の図面は、本発明の例示的な態様を示し、上記の概略的な説明および下記の詳細な説明とともに、本発明の特徴について説明するのに役立つ。
【図面の簡単な説明】
【００１２】
【図１】一態様を実装するのに適したコンピューティングデバイスを示す構成要素ブロック図である。
【図２】一態様を実装するのに適した例示的なマルチコアプロセッサを示す構成要素ブロック図である。
【図３】一態様を実装するのに適した例示的なシステムオンチップ(SoC)を示す構成要素ブロック図である。
【図４】一態様による、プロセッサクラスタごとの利用可能な共有キャッシュメモリのレベルを含む、複数のプロセッサクラスタの図である。
【図５】一態様による、実行プロセッサクラスタに対する複数のプロセッサクラスタのためのプロット点を含む、グラフ図である。
【図６】一態様による、プロセッサクラスタごとの利用可能な共有キャッシュメモリのレベルを含む、複数のプロセッサクラスタの図である。
【図７】一態様による、実行プロセッサクラスタに対する複数のプロセッサクラスタのプロット点を含むグラフである。
【図８】一態様による、プロセッサクラスタごとの利用可能な共有キャッシュメモリのレベルを含む、複数のプロセッサクラスタの図である。
【図９】一態様による、実行プロセッサクラスタに対する複数のプロセッサクラスタのプロット点を含むグラフである。
【図１０】ビクティムキャッシュとしての利用可能なリモート共有キャッシュメモリの選択を実施するための態様方法を示すプロセスフロー図である。
【図１１】ビクティムキャッシュとのレイテンシの低減を利用するように実行プロセスを実行プロセスクラスタにスケジューリングすることを実施するための態様方法を示すプロセスフロー図である。
【図１２】レイテンシの低減およびビクティムキャッシュのより高い利用可能性を利用するように、より低い需要のプロセスを実行プロセスのためのプロセッサクラスタにスケジューリングすることを実施するための態様方法を示すプロセスフロー図である。
【図１３】様々な態様とともに使用するのに適した例示的なモバイルコンピューティングデバイスを示す構成要素ブロック図である。
【図１４】様々な態様とともに使用するのに適した例示的なモバイルコンピューティングデバイスを示す構成要素ブロック図である。
【図１５】様々な態様とともに使用するのに適した例示的なサーバを示す構成要素ブロック図である。
【発明を実施するための形態】
【００１３】
添付の図面を参照しながら、様々な態様について詳細に説明する。可能な限り、同じまたは同様の部分を指すために図面全体を通じて同じ参照番号が使用される。具体的な例および実装形態への言及は説明のためであり、本発明の範囲または特許請求の範囲を限定するものではない。
【００１４】
「コンピューティングデバイス」および「モバイルコンピューティングデバイス」という用語は、セルラー電話、スマートフォン、パーソナルまたはモバイルマルチメディアプレーヤ、携帯情報端末(PDA)、ラップトップコンピュータ、タブレットコンピュータ、スマートブック、ウルトラブック、パームトップコンピュータ、ワイヤレス電子メールレシーバ、マルチメディアインターネット対応セルラー電話、ワイヤレスゲームコントローラ、ならびに、メモリおよびマルチコアプログラマブルプロセッサを含む同様のパーソナル電子デバイスのうちのいずれか1つまたはすべてを指すために本明細書で互換的に使用される。コンピューティングデバイスは、コンピューティングデバイス内に1つまたは複数のプロセッサを含み、したがって、動作を実行するコンピューティングデバイスへの言及は、動作を実行するデバイス内の1つまたは複数のプロセッサを包含する。様々な態様は、限られたメモリおよびバッテリーリソースを有するスマートフォンなどのモバイルコンピューティングデバイスに特に有用であるが、本態様は一般に、複数のメモリデバイスおよび限られた電力バジェットを実装する任意の電子デバイスにおいて有用であり、この場合、プロセッサの電力消費を低減することで、モバイルコンピューティングデバイスのバッテリー動作時間を延ばすことができる。
【００１５】
「システムオンチップ」(SoC)という用語は、一般に、限定はしないが、ハードウェアコア、メモリ、および通信インターフェースを含む相互接続された電子回路のセットを指すために本明細書で使用される。ハードウェアコアは、汎用プロセッサ、中央処理ユニット(CPU)、デジタル信号プロセッサ(DSP)、グラフィックス処理ユニット(GPU)、加速処理ユニット(APU)、補助プロセッサ、シングルコアプロセッサ、およびマルチコアプロセッサなどの様々な異なるタイプのプロセッサを含んでもよい。ハードウェアコアは、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、他のプログラマブル論理デバイス、個別ゲート論理、トランジスタ論理、性能監視ハードウェア、ウォッチドッグハードウェア、および時間基準などの他のハードウェアおよびハードウェアの組合せをさらに具現化してもよい。集積回路は、集積回路の構成要素がシリコンなどの単体の半導体材料上に存在するように構成されてもよい。
【００１６】
態様は、マルチクラスタCPUシステムにおける利用可能なキャッシュリソースの活用の向上のための方法、およびそのような方法を実施するコンピューティングデバイスを含む。様々な態様は、任意のタイプのキャッシュメモリ(たとえば、L1キャッシュメモリ、L2キャッシュメモリ、L3キャッシュメモリ、L4キャッシュメモリなど)に適用されてもよく、したがって、L2キャッシュメモリへの言及は、例示的なタイプのキャッシュメモリとして、説明を簡単にするために使用され、特に明記されていない限り、特許請求の範囲を限定するものではない。一態様では、キャッシュリソース活用は、高いL2キャッシュ需要があるプロセスのためにビクティムキャッシュとして使用するためのリモートL2キャッシュメモリを選択することによって向上される場合がある。態様は、1つまたは複数の他のプロセッサクラスタのL2キャッシュメモリを使用するビクティムキャッシュモードの有効性を向上させる場合がある。
【００１７】
一態様は、高いL2キャッシュ需要を有するプロセスをスレッドにより近いプロセッサクラスタに移動させるか、または低いL2キャッシュ要求を有するプロセスを移動させることによって多重プロセッサクラスタシステムにおける利用可能なL2キャッシュリソースの使用を向上させ、それによってビクティムキャッシュモードの効果およびレイテンシを向上させ得る。
【００１８】
多重プロセッサクラスタシステムでは、利用可能なL2キャッシュは、複数のプロセッサクラスタにわたって分散され得る。一態様では、多重プロセッサクラスタシステムは、複数のプロセッサクラスタと利用可能なL2キャッシュとの間の関係を決定するように構成され得る。多重プロセッサクラスタシステムは、高い利用可能性を有するL2キャッシュを決定し得る。プロセスは、次いで、L2リソースを共有する必要性を検討するプロセッサにスケジューリングされ得る。高いL2キャッシュ需要を有するプロセスは、低いL2キャッシュ要求を有するスレッドを実行するプロセッサクラスタにより近いプロセッサクラスタに移動させられる場合がある。低いL2キャッシュ要求を有するスレッドを実行するプロセッサは、ビクティムキャッシュとして使用するために高い利用可能性を有する関連のL2キャッシュを有する場合がある。高キャッシュプロセスを高いL2キャッシュ利用可能性を有するプロセッサクラスタにより近いプロセッサに移動させることはまた、プロセスを実行するプロセッサクラスタとL2ビクティムキャッシュとの間の物理的距離を低減し、それによってレイテンシを低減する場合がある。高キャッシュ要求スレッドを実行するプロセッサクラスタは、次いで、低いキャッシュ要求を有するプロセッサクラスタに関連するL2キャッシュをリモートビクティムキャッシュとして使用する場合がある。
【００１９】
複数のリモートビクティムキャッシュは、プロセスの実行を助けるために実装され得る。プロセスは、第2のプロセッサクラスタおよび第3のプロセッサクラスタにより近い場合がある第1のプロセッサクラスタに移動させられる場合があり、第2のプロセッサクラスタおよび第3のプロセッサクラスタの各々は、第1のプロセッサクラスタへのそれらの接近によるレイテンシを低減するために、比較的高いレベルの利用可能なL2キャッシュメモリを有する。一態様では、第1のプロセッサクラスタは、(1)別のプロセッサクラスタに関連するリモートL2キャッシュにアクセスする際のレイテンシと、(2)リモートL2キャッシュの利用可能性のレベルとの組合せに基づいてプロセスをスケジューリングするために選択され得る。言い換えれば、プロセッサ選択は、レイテンシを低減することと、リモートL2キャッシュの利用可能性を増大させることとに基づいている場合がある。
【００２０】
リモートビクティムキャッシュとして使用するためのリモートL2キャッシュメモリのレイテンシを低減し、利用可能性を高めることで、キャッシュミスの数を低減し、結果としてメインメモリへのアクセスをより少なくし、帯域幅使用を低減し、メモリアクセス競合を低減し、性能を向上させてもよい。これによって、プロセスを実行する性能が高くなる場合があり、その理由は、記憶された情報へのアクセスがより速く、遅延または割込みを受けにくいからである。また、リモートL2キャッシュメモリを使用することによって消費される電力を低減することで、様々なプロセッサ状態によって引き起こされる性能劣化を回避することによって、性能を向上させてもよい。
【００２１】
図1は、様々な態様とともに使用するのに適した、リモートコンピューティングデバイス50と通信しているコンピューティングデバイス10を含むシステムを示す。コンピューティングデバイス10は、プロセッサ14と、メモリ16と、通信インターフェース18と、ストレージメモリインターフェース20とをもつ、SoC12を含んでもよい。コンピューティングデバイスは、ワイヤードモデムまたはワイヤレスモデムなどの通信構成要素22、ストレージメモリ24、ワイヤレスネットワーク30へのワイヤレス接続32を確立するためのアンテナ26、および/またはインターネット40へのワイヤード接続44に接続するためのネットワークインターフェース28をさらに含んでもよい。プロセッサ14は、様々なハードウェアコアのいずれか、ならびにいくつかのプロセッサコアを含んでもよい。SoC12は、1つまたは複数のプロセッサ14を含んでもよい。コンピューティングデバイス10は、2つ以上のSoC12を含み、それによって、プロセッサ14およびプロセッサコアの数を増加させてもよい。コンピューティングデバイス10は、SoC12に関連付けられていないプロセッサ14を含んでもよい。個々のプロセッサ14は、図2を参照しながら以下で説明するようなマルチコアプロセッサであってもよい。プロセッサ14はそれぞれ、コンピューティングデバイス10の他のプロセッサ14と同じであってもよく、またはそれらとは異なっていてもよい特定の目的のために構成されてもよい。同じまたは異なる構成のプロセッサ14およびプロセッサコアのうちの1つまたは複数は、一緒にグループ化されてもよい。
【００２２】
SoC12のメモリ16は、プロセッサ14がアクセスするためのデータおよびプロセッサ実行可能コードを記憶するように構成された揮発性または不揮発性メモリであってもよい。コンピューティングデバイス10および/またはSoC12は、様々な目的のために構成された1つまたは複数のメモリ16を含んでもよい。一態様では、1つまたは複数のメモリ16は、ランダムアクセスメモリ(RAM)もしくはメインメモリ、またはキャッシュメモリなど、揮発性メモリを含んでもよい。これらのメモリ16は、不揮発性メモリから要求され、様々なファクタに基づいて、将来のアクセスを予期して不揮発性メモリからメモリ16にロードされる、限られた量のデータおよび/またはプロセッサ実行可能コード命令、ならびに/あるいは、プロセッサ14によって作成され、不揮発性メモリ内に記憶されずに、将来の迅速なアクセスのために一時的に記憶された中間処理データおよび/またはプロセッサ実行可能コード命令を一時的に保持するように構成されてもよい。一態様では、メモリ16は、異なるプロセッサ14またはプロセッサコアによって使用するための専用であるか、またはそれらの間で共有されてもよい。
【００２３】
一態様では、メモリ16は、プロセッサ14のうちの1つまたは複数によるアクセスのために、別のメモリ16またはストレージメモリ24など、別のメモリデバイスからメモリ16にロードされるプロセッサ実行可能コードを、少なくとも一時的に記憶するように構成されてもよい。一態様では、メモリ16にロードされたプロセッサ実行可能コードは、プロセッサ14による機能の実行に応答してロードされてもよい。機能の実行に応答して、プロセッサ実行可能コードをメモリ16にロードすることは、要求されたプロセッサ実行可能コードがメモリ16内にないために、不成功またはミスであるメモリ16へのメモリアクセス要求から生じる場合がある。ミスに応答して、要求されたプロセッサ実行可能コードを他のメモリデバイスからメモリデバイス16にロードするために、別のメモリデバイスへのメモリアクセス要求が行われてもよい。一態様では、機能の実行に応答して、プロセッサ実行可能コードをメモリ16にロードすることは、別のメモリデバイスへのメモリアクセス要求から生じる場合があり、プロセッサ実行可能コードは、後のアクセスのためにメモリ16にロードされてもよい。
【００２４】
通信インターフェース18、通信構成要素22、アンテナ26、および/またはネットワークインターフェース28は、コンピューティングデバイス10がワイヤレス接続32を介してワイヤレスネットワーク30上でおよび/またはワイヤードネットワーク44上でリモートコンピューティングデバイス50と通信することが可能になるように、調和して動作してもよい。ワイヤレスネットワーク30は、コンピューティングデバイス10にリモートコンピューティングデバイス50とデータを交換する場合の手段であるインターネット40への接続を提供するために、たとえば、ワイヤレス通信に使用される無線周波数スペクトルを含む様々なワイヤレス通信技術を使用して実装されてもよい。
【００２５】
ストレージメモリインターフェース20およびストレージメモリ24は、コンピューティングデバイス10が不揮発性記憶媒体上にデータとプロセッサ実行可能コードとを記憶することが可能になるように、調和して動作してもよい。ストレージメモリ24は、ストレージメモリ24がプロセッサ14のうちの1つまたは複数によってアクセスするためのプロセッサ実行可能コードを記憶してもよいメモリ16の一態様とほとんど同じに構成されてもよい。不揮発性であるストレージメモリ24は、コンピューティングデバイス10の電源が切断された後でも情報を保持してもよい。電源が再び投入され、コンピューティングデバイス10が再起動すると、コンピューティングデバイス10がストレージメモリ24上に記憶された情報を利用可能にしてもよい。ストレージメモリインターフェース20は、ストレージメモリ24へのアクセスを制御し、プロセッサ14がストレージメモリ24からデータを読み取り、ストレージメモリ24にデータを書き込むことを可能にしてもよい。
【００２６】
コンピューティングデバイス10の構成要素のいくつかまたはすべては、依然として必要な機能を果たしながら、別様に配置および/または組み合わされてもよい。その上、コンピューティングデバイス10は、構成要素の各々の1つに限定されなくてもよく、各構成要素の複数のインスタンスは、コンピューティングデバイス10の様々な構成中に含まれてもよい。
【００２７】
図2は、一態様を実装するのに適したマルチコアプロセッサ14を示す。マルチコアプロセッサ14は、複数の同種または異種のプロセッサコア200、201、202、203を有してもよい。単一のプロセッサ14のプロセッサコア200、201、202、203が同じ目的のために構成され、同じまたは同様の性能特性を有してもよいという点で、プロセッサコア200、201、202、203は同種であってもよい。たとえば、プロセッサ14は汎用プロセッサであってもよく、プロセッサコア200、201、202、203は同種の汎用プロセッサコアであってもよい。代替的に、プロセッサ14はグラフィックス処理ユニットまたはデジタル信号プロセッサであってもよく、プロセッサコア200、201、202、203はそれぞれ、同種のグラフィックスプロセッサコアまたはデジタル信号プロセッサコアであってもよい。参照しやすいように、「プロセッサ」および「プロセッサコア」という用語は、本明細書で交換可能に使用される場合がある。
【００２８】
単一のプロセッサ14のプロセッサコア200、201、202、203が異なる目的のために構成され、および/または異なる性能特性を有してもよいという点で、プロセッサコア200、201、202、203は異種であってもよい。そのような異種のプロセッサコアの例は、より低速で低電力のプロセッサコアがより強力で電力を大量に消費するプロセッサコアと結合される場合がある「big.LITTLE」アーキテクチャとして知られているものを含んでもよい。
【００２９】
図2に示す例では、マルチコアプロセッサ14は、4つのプロセッサコア200、201、202、203(すなわち、プロセッサコア0、プロセッサコア1、プロセッサコア2、およびプロセッサコア3)を含む。説明を容易にするために、本明細書の例は、図2に示す4つのプロセッサコア200、201、202、203を参照する場合がある。しかしながら、図2に示し、本明細書で説明する4つのプロセッサコア200、201、202、203は単に一例として提供され、決して様々な態様を4コアプロセッサシステムに限定するものではない。コンピューティングデバイス10、SoC12、またはマルチコアプロセッサ14は、図示され本明細書で説明される4つのプロセッサコア200、201、202、203よりも少数またはより多数のプロセッサコアを個々にまたは組合せで含んでもよい。
【００３０】
一態様では、プロセッサコア200、201、202、203は、関連付けられた専用キャッシュメモリ204、206、208、210を有してもよい。図1のメモリ16のように、専用キャッシュメモリ204、206、208、210は、不揮発性メモリから要求されるか、または将来のアクセスを予期して不揮発性メモリからロードされる、限られた量のデータおよび/またはプロセッサ実行可能コード命令を一時的に保持するように構成されてもよい。専用キャッシュメモリ204、206、208、210はまた、プロセッサコア200、201、202、203によって作成され、不揮発性メモリ内に記憶されずに将来の迅速なアクセスのために一時的に記憶される、中間処理データおよび/またはプロセッサ実行可能コード命令を記憶するように構成されてもよい。専用キャッシュメモリ204、206、208、210は、各々、プロセッサコア200、201、202、203のうちの1つに関連付けられてもよい。各専用キャッシュメモリ204、206、208、210は、そのそれぞれの関連付けられたプロセッサコア200、201、202、203によってアクセスされてもよい。図2に示す例では、各プロセッサコア200、201、202、203は、専用キャッシュメモリ204、206、208、210のうちの1つと通信している(すなわち、プロセッサコア0が専用キャッシュメモリ0とペアにされ、プロセッサコア1が専用キャッシュメモリ1とペアにされ、プロセッサコア2が専用キャッシュメモリ2とペアにされ、プロセッサコア3が専用キャッシュメモリ3とペアにされる)。各プロセッサコア200、201、202、203は、ただ1つの専用キャッシュメモリ204、206、208、210と通信しているように示されるが、専用キャッシュメモリの数は、限定するものではなく、プロセッサコア200、201、202、203ごとに変動してもよい。
【００３１】
一態様では、プロセッサコア200、201、202、203は、関連付けられた共有キャッシュメモリ212、214を有してもよい。共有キャッシュメモリ212、214は、専用キャッシュメモリ204、206、208、210と同様の機能を実行するように構成されてもよい。しかしながら、共有キャッシュメモリ212、214は、各々、プロセッサコア200、201、202、203のうちの2つ以上と通信していてもよい(すなわち、プロセッサコア0およびプロセッサコア1が共有キャッシュメモリ0とペアにされ、プロセッサコア2およびプロセッサコア3が共有キャッシュメモリ1とペアにされる)。各プロセッサコア200、201、202、203は、ただ1つの共有キャッシュメモリ212、214と通信しているように示されるが、共有キャッシュメモリの数は、限定するものではなく、プロセッサコア200、201、202、203ごとに変動してもよい。同様に、各共有キャッシュメモリは、2つのみのプロセッサコア200、201、202、203と通信しているように示されるが、プロセッサコアの数は、限定するものではなく、共有キャッシュメモリ212、214ごとに変動してもよい。同じ共有キャッシュメモリ212、214と通信しているプロセッサコア200、201、202、203は、本明細書でさらに説明するように、プロセッサクラスタ内で一緒にグループ化されてもよい。
【００３２】
図3は、一態様を実装するのに適したSoC12を示す。SoC12は、複数の同種または異種のプロセッサ300、302、304、306を有してもよい。プロセッサ300、302、304、306の各々は、図2のプロセッサ14と同様であってもよい。各プロセッサ300、302、304、306の目的および/または性能特性によって、プロセッサ300、302、304、306が、図2のプロセッサコア200、201、202、203と同様に同種であるか、異種であるかが決定してもよい。
【００３３】
専用キャッシュメモリ204、206、208、210および共有キャッシュメモリ212、214もまた、図2で説明した同じ構成要素と同様であるが、ここでは、専用キャッシュメモリ204、206、208、210および共有キャッシュメモリ212、214は、プロセッサ300、302、304、306と通信している。SoC12の構成要素の数および構成は、限定するものではなく、SoC12は、変動する配列において構成要素のいずれかのより多いまたはより少ないものを含んでもよい。
【００３４】
一態様では、本明細書で説明するプロセッサおよびプロセッサコアは、共有キャッシュメモリを共有するために同じSoCまたはプロセッサ上にある必要がない。プロセッサおよびプロセッサコアは、1つまたは複数の他のプロセッサまたはプロセッサコアと同じ共有キャッシュメモリへの接続を維持しながら、様々な構成要素にわたって分散されてもよい。
【００３５】
図4は、一態様による、利用可能な共有キャッシュメモリ460、462、464、466の変動するレベルを含む、複数のプロセッサクラスタ400、402、404、406、408を示す。図4に示す(ならびに、図7および図9において後で説明する)例における、プロセッサクラスタ400、402、404、406、408は、専用キャッシュメモリ430、432、434、436、438、440、442、444、446、448と、共有キャッシュメモリ450、452、454、456、458とに各々関連付けられた、2つのプロセッサ410、412、414、416、418、420、422、424、426、428を有するように各々示されている。たとえば、プロセッサクラスタ400(プロセッサクラスタ0)は、プロセッサ410(プロセッサ01)、412(プロセッサ02)を含み、プロセッサ410、412は、それぞれの専用キャッシュメモリ430(プロセッサ01に関連付けられた専用キャッシュメモリ01)、432(プロセッサ02に関連付けられた専用キャッシュメモリ02)に各々関連付けられる。その上、プロセッサ410、412は、共有キャッシュメモリ450(プロセッサ01およびプロセッサ02に関連付けられた共有キャッシュメモリ0)に各々関連付けられる。プロセッサクラスタ400、402、404、406、408は、相互接続バス468を介して互いに通信していてもよく、それによって、プロセッサクラスタ400、402、404、406、408が、共有キャッシュメモリ450、452、454、456、458へ、それらから、およびそれらに関するデータを通信することが可能になってもよい。上述のように、これらの例示的なプロセッサクラスタ400、402、404、406、408は、限定するものではなく、様々な数および構成における構成要素を備えてもよい。
【００３６】
共有キャッシュメモリ450、452、454、456、458のうちの1つまたは複数は、利用可能な共有キャッシュメモリ460、462、464、466である一部分を含んでもよい。言い換えれば、共有キャッシュメモリ450、452、454、456、458の部分は、潜在的使用のために情報を記憶するか、またはアクセスされるかのいずれかで、使用中であってもよい。共有キャッシュメモリ450、452、454、456、458の他の部分は、もはや使用のために指定されない情報を記憶するか、空であるか、またはアクセスされていないかのいずれかで、アイドルまたは利用可能であってもよい。利用可能な共有キャッシュメモリ460、462、464、466は、共有キャッシュメモリ450、452、454、456、458の後の方の部分である。各利用可能な共有キャッシュメモリ460、462、464、466は、利用可能な共有キャッシュメモリ460、462、464、466の変動するサイズによって示されるように、共有キャッシュメモリ空間の変動するレベルを含んでもよい。各利用可能な共有キャッシュメモリ460、462、464、466の共有キャッシュメモリ空間の量は、共有キャッシュメモリ450、452、454、456、458の使用に応じて経時的に変動してもよい。
【００３７】
図4に示す例は、プロセッサクラスタ400が利用可能な共有キャッシュメモリを有していないことを示す。この例では、プロセッサクラスタ400は、高い共有キャッシュメモリ需要があるプロセス(実行プロセスと呼ばれる場合もある)を割り当てられ、このことは、実行プロセスが、共有キャッシュメモリ450のための利用可能な共有キャッシュメモリであった場合があるもののすべてまたはほぼすべてを使用することを意味する。プロセッサクラスタ400、402、404、406、408のいずれかは、実行プロセスを割り当てられるとき、実行プロセッサクラスタ400、402、404、406、408と呼ばれる場合もある。共有キャッシュメモリ450、452、454、456、458のいずれかは、実行プロセッサクラスタ400、402、404、406、408に対してリモートであるとき、リモート共有キャッシュメモリ450、452、454、456、458と呼ばれる場合もある。さらに、この例は、共有キャッシュメモリ452、454、456、458の各々が、異なるレベルの利用可能な共有キャッシュメモリ460、462、464、466を含む(すなわち、利用可能な共有キャッシュメモリ2は、利用可能な共有キャッシュメモリ1よりも小さく、利用可能な共有キャッシュメモリ1は、利用可能な共有キャッシュメモリ3よりも小さく、利用可能な共有キャッシュメモリ3は、利用可能な共有キャッシュメモリ4よりも小さい)ことを示す。実行プロセッサクラスタ400に対するプロセッサクラスタ402、404、406、408の各々のロケーションは、実行プロセッサクラスタ400からのプロセッサクラスタ402、404、406、408の各々の相対的距離を示してもよい。相対的距離は、プロセッサクラスタ402、404、406、408と実行プロセッサクラスタ400との間の通信のための変動するレイテンシを生じる場合がある。
【００３８】
図5は、実行プロセッサクラスタ400に対するプロセッサクラスタ402、404、406、408のためのプロット点502、504、506、508を含む、メモリレイテンシ対利用可能な共有メモリキャッシュサイズのグラフ500を示す。各プロット点502、504、506、508は、図4のプロセッサクラスタ402、404、406、408のうちの1つと相関する(すなわち、プロット点1はプロセッサクラスタ1と相関し、プロット点2はプロセッサクラスタ2と相関し、プロット点3はプロセッサクラスタ3と相関し、プロット点4はプロセッサクラスタ4と相関する)。グラフ500は、図4で表した利用可能な共有メモリキャッシュサイズおよび距離/レイテンシと相関する。たとえば、プロセッサクラスタ402は、実行プロセッサクラスタ400までの距離が最も近いので、プロット点502は、メモリレイテンシを示すy軸上で最低である。プロセッサクラスタ404、406、408が実行プロセッサクラスタ400から遠くなるほど、より多いメモリレイテンシが、対応するプロット点504、506、508によって示される。同様に、対応するプロセッサクラスタ402、404、406、408のための利用可能な共有キャッシュメモリ460、462、464、466のサイズが、x軸に沿って対応するプロット点502、504、506、508によって示される。グラフ500の軸上に示す値は、例示的であり、非限定的なものであり、任意の範囲の値が、メモリレイテンシおよび利用可能な共有キャッシュメモリサイズを測定する際に使用されてもよい。
【００３９】
図5に示し、図4に示す例と対応する例では、プロセッサクラスタ402は、プロット点502によって示すように、実行プロセッサクラスタ400と通信しているとき、最低のメモリレイテンシを有し、2番目に低い量の利用可能な共有キャッシュメモリ460を有する。同様に、プロセッサクラスタ404は、プロット点504によって示すように、2番目に低いメモリレイテンシと、最低の利用可能な共有キャッシュメモリ462とを有する。プロセッサクラスタ406は、プロット点506によって示すように、2番目に高いメモリレイテンシと、2番目に高い利用可能な共有キャッシュメモリ464とを有する。プロセッサクラスタ408は、プロット点508によって示すように、最高のメモリレイテンシと、最高の利用可能な共有キャッシュメモリ466とを有する。概して、実行プロセスのためのビクティムキャッシュとして使用するための好ましい利用可能な共有キャッシュメモリは、最低のメモリレイテンシと最高の利用可能な共有キャッシュメモリサイズとの組合せ(すなわち、グラフ500の右下隅に最も近い)を有することになる。しかしながら、最低のメモリレイテンシと最高の利用可能な共有キャッシュメモリサイズは、必ずしも利用可能な共有キャッシュメモリ460、462、464、466から利用可能であるとは限らない場合がある。したがって、実行プロセッサクラスタ400によって実行される実行プロセスのためのビクティムキャッシュとして、利用可能な共有キャッシュメモリ460、462、464、466を選択するために、様々な方法が採用されてもよい。
【００４０】
図6は、図4と同様に、一態様による、様々なレベルの利用可能な共有キャッシュメモリ460、462、464、466を含む複数のプロセッサクラスタ400、402、404、406、408を示す。一態様では、実行プロセスは、実行プロセッサクラスタと、ビクティムキャッシュとして使用される利用可能な共有キャッシュメモリを含むプロセッサクラスタとの間のレイテンシを低減するために、プロセッサクラスタ400、402、404、406、408から再スケジューリングされ得る。図6は、図4に類似しているが、図4から変化している。図4のように実行プロセッサクラスタがプロセッサクラスタ400である場合、図6において、実行プロセスは、この例ではプロセッサクラスタ406が実行プロセッサクラスタ406となるようにプロセッサクラスタ406に再スケジューリングされる。さらに、この例では、図4においてプロセッサクラスタ406に向けてスケジューリングされたプロセスは、プロセッサクラスタ400に再スケジューリングされ、その結果、プロセッサクラスタ400は、ここで、図4の利用可能な共有キャッシュメモリ464と等価であり得る、利用可能な共有キャッシュメモリ464を含む。この例では、実行プロセッサクラスタ406は、利用可能な共有キャッシュメモリ464を含まなくなる。
【００４１】
本明細書でさらに説明するように、実行プロセスは、図4において、1つの実行プロセッサクラスタ400から新規の実行プロセッサクラスタ406に再スケジューリングされ得る。これは、実行プロセッサクラスタ406が、ビクティムキャッシュを構成する共有キャッシュメモリ460、462、464、466により接近している場合があるとき、実行プロセスを実行する際のレイテンシを低減するために行われる場合がある。この例では、ビクティムキャッシュは、プロセッサクラスタ408内の共有キャッシュメモリ458の利用可能な共有キャッシュメモリ466を含み得る。共有キャッシュメモリ458は、本明細書で説明するビクティムキャッシュの一部として共有キャッシュメモリを選択するための態様のうちのいずれかによるビクティムキャッシュとして使用するために選択され得る。一態様では、共有キャッシュメモリ458は、それが最も利用可能な共有キャッシュメモリ466を含むことに基づいて選択され得る。プロセッサクラスタ406は、実行プロセッサクラスタ406として選択され得るが、その理由は、レイテンシが、たとえば近接性に基づいて、利用可能な共有キャッシュメモリ466を含むプロセッサクラスタ408と、プロセッサクラスタ406との間で最も低いからである。
【００４２】
図7は、実行プロセッサクラスタ406に対するプロセッサクラスタ400、402、404、408のプロット点502、504、508、702を含む、メモリレイテンシ対利用可能な共有メモリキャッシュサイズのグラフ700を示す。各プロット点502、504、508、702は、図6のプロセッサクラスタ400、402、404、408のうちの1つに関連する(すなわち、プロット点0がプロセッサクラスタ0に関連し、プロット点1がプロセッサクラスタ1に関連し、プロット点2がプロセッサクラスタ2に関連し、プロット点4がプロセッサクラスタ4に関連する)。グラフ700は、図6に表す、利用可能な共有メモリキャッシュサイズおよび距離/レイテンシに関連する。図7はまた、実行プロセスが再スケジューリングされる前の、プロセッサクラスタ408が最も利用可能な共有キャッシュメモリ466を含むことを示すプロット点508を示す、図5の変形形態である。図6に関して上記で説明したように、プロセッサクラスタ408が最も利用可能な共有キャッシュメモリ466を含むので、実行プロセスは、プロセッサクラスタ400からプロセッサクラスタ406に再スケジューリングされる。実行プロセスは、最大量の利用可能な共有キャッシュメモリ466を利用し、利用可能な共有キャッシュメモリ466をビクティムキャッシュとして使用する際のレイテンシを低減するように再スケジューリングされる。ここで実行プロセスを実行プロセッサクラスタ406に再スケジューリングした結果として、グラフ700は、プロセッサクラスタ402、404、408のレイテンシの図5からの変化を示し、実行プロセッサクラスタ406の代わりにプロセッサクラスタ400を含む。ここで、グラフ700は、プロセッサクラスタ408が、依然として最高の利用可能な共有キャッシュメモリ466を有する一方で、ここでも実行プロセッサクラスタ406に対する最低のレイテンシを有することをプロット点508で示す。
【００４３】
図8は、図4および図6と同様に、一態様による、様々なレベルの利用可能な共有キャッシュメモリ460、462、464、466を含む複数のプロセッサクラスタ400、402、404、406、408を示す。一態様では、実行プロセス以外のプロセスは、実行プロセッサクラスタと、ビクティムキャッシュとして使用される利用可能な共有キャッシュメモリを含むプロセッサクラスタとの間のレイテンシを低減するために、プロセッサクラスタ400、402、404、406、408から再スケジューリングされ得る。図8の例は、実行プロセスの再スケジューリングよりむしろ、または実行プロセスの再スケジューリングに加えて、より低いレイテンシを有するビクティムキャッシュとして使用するための利用可能な共有キャッシュメモリを増大させるために、実行プロセスにより近い別のプロセスを再スケジューリングすることを示す。図6では、実行プロセスは、実行プロセッサクラスタ406にスケジューリングされ、利用可能な共有キャッシュメモリ466は、ビクティムキャッシュとして使用されるが、このことは図8に持ち越される。すでにビクティムキャッシュの一部でない最高の利用可能な共有キャッシュメモリは、ビクティムキャッシュに加えられるものとして特定され得る。図6の例では、すでにビクティムキャッシュの一部でない最高の利用可能な共有キャッシュメモリは、プロセッサクラスタ400の利用可能な共有キャッシュメモリ464である。利用可能な共有キャッシュメモリ464を使用する際のレイテンシを低減しながら最高の利用可能な共有キャッシュメモリ464をビクティムキャッシュに加えるために、プロセッサクラスタ400のプロセスは、実行プロセッサクラスタ406に対してより低いレイテンシを有するプロセッサクラスタに再スケジューリングされ得る。
【００４４】
図6の例では、プロセッサクラスタ402および404は、プロセッサクラスタ400よりも、実行プロセッサクラスタ406に接近し/実行プロセッサクラスタ406とのより低いレイテンシを有する。プロセッサクラスタ404がプロセッサクラスタ402よりもさらに近く/低いレイテンシを有するので、プロセッサクラスタ400のプロセスは、プロセッサクラスタ404へ再スケジューリングされ得る。次に、プロセッサクラスタ404へすでにスケジューリングされた任意のプロセスが、プロセッサクラスタ400などの別のプロセッサクラスタに再スケジューリングされ得る。プロセッサクラスタ400および404のプロセスを再スケジューリングする際、各々は、それらに関連する再スケジューリングされたプロセスの利用可能なキャッシュメモリ空間462、464で終わる場合がある。したがって、より大きい利用可能なキャッシュメモリ空間464は、プロセッサが再スケジューリングされた後、実行プロセッサ406により近いプロセッサクラスタ404上に見出される場合がある。利用可能なキャッシュメモリ空間464は、ここで、それがプロセッサクラスタ400上にあったときよりも低いレイテンシを有するビクティムキャッシュの少なくとも一部として実行プロセスによって使用される場合がある。
【００４５】
図9は、実行プロセッサクラスタ406に対するプロセッサクラスタ400、402、404、408のプロット点502、504、508、702を含む、メモリレイテンシ対利用可能な共有メモリキャッシュサイズのグラフ900を示す。各プロット点502、504、508、702は、図6のプロセッサクラスタ400、402、404、408のうちの1つに関連する(すなわち、プロット点0がプロセッサクラスタ0に関連し、プロット点1がプロセッサクラスタ1に関連し、プロット点2がプロセッサクラスタ2に関連し、プロット点4がプロセッサクラスタ4に関連する)。グラフ900は、図8に表す、利用可能な共有メモリキャッシュサイズおよび距離/レイテンシに関連する。図9はまた、プロセッサクラスタ400および404に関連するプロセスが再スケジューリングされる前のプロット点504、702を示す、図7の変形形態である。図8に関して上記で説明したように、プロセッサクラスタ400が、すでにビクティムキャッシュの一部でない最も利用可能な共有キャッシュメモリ464を含むので、プロセッサクラスタ400に向けてスケジューリングされたプロセスは、プロセッサクラスタ404に再スケジューリングされる。プロセスは、最大量の利用可能な共有キャッシュメモリ464を利用し、利用可能な共有キャッシュメモリ464をビクティムキャッシュとして使用する際のレイテンシを低減するために、プロセッサクラスタ404に再スケジューリングされる。プロセスをプロセッサクラスタ404に再スケジューリングした結果として、グラフ900は、利用可能な共有キャッシュメモリ空間の量およびプロセッサクラスタ400、404のレイテンシの図6からの変化を示す。ここで、グラフ900は、プロセッサクラスタ404が、ここでビクティムキャッシュに追加するための最高の利用可能な共有キャッシュメモリ466を有し、実行プロセッサクラスタ406に対するより低いレイテンシを有することをプロット点504で示す。
【００４６】
図10は、ビクティムキャッシュとしてのリモートの利用可能な共有キャッシュメモリの選択を実施するための態様方法1000を示す。方法1000は、ソフトウェア、プロセッサなどの汎用もしくは専用ハードウェア、またはソフトウェアとハードウェアとの組合せを使用する、コンピューティングデバイスにおいて実行されてもよい。ブロック1002で、コンピューティングデバイスは、ビクティムキャッシュとして使用するための利用可能な共有キャッシュメモリ空間をもつリモート共有キャッシュメモリを特定してもよい。そのようなリモート共有キャッシュメモリの特定は、利用可能な共有キャッシュメモリ空間がリモート共有キャッシュメモリに関連付けられるか否か、またはどのくらい多くの利用可能な共有キャッシュメモリ空間がリモート共有キャッシュメモリに関連付けられるかについての、コンピューティングデバイスによる決定を含んでもよい。これは、プロセッサがリモート共有キャッシュメモリのヒットおよび/またはミス率を監視することによって、あるいは、そのような情報を保持するように構成された、テーブルなどのデータ構造内で利用可能なアドレス空間をチェックすることによって達成されてもよい。リモート共有キャッシュメモリがビクティムキャッシュとして使用するために適しているか否かは、その利用可能な共有キャッシュメモリ空間の量がしきい値を超えるか否かに依存してもよい。
【００４７】
ブロック1004では、コンピューティングデバイスは、リモート共有キャッシュメモリの利用可能な共有キャッシュメモリ空間の量に関連する特定されたリモート共有キャッシュメモリに関するデータを取り出す場合がある。ブロック1006では、コンピューティングデバイスは、リモート共有キャッシュメモリの利用可能な共有キャッシュメモリ空間の量に応じて、どのリモート共有キャッシュメモリをビクティムキャッシュとして使用すべきかを決定し得る。この決定は、特定されたリモート共有キャッシュの取り出されたデータの比較において行われてもよい。一態様では、取り出されたデータの比較は、リモート共有キャッシュメモリをビクティムキャッシュとして選択または拒否するために、別のものの取り出されたデータに対する、またはしきい値との、あるリモート共有キャッシュメモリの取り出されたデータの比較を含んでもよい。一態様では、あるリモート共有キャッシュメモリの取り出されたデータの比較は、比較のための値を決定するために、取り出されたデータを使用する計算を含んでもよい。
【００４８】
ブロック1008で、コンピューティングデバイスは、ビクティムキャッシュとして使用するためのリモート共有キャッシュメモリのうちの1つまたは複数を選択してもよい。ビクティムキャッシュとして使用するためのリモート共有キャッシュメモリの選択は、ブロック1006における比較の好ましい結果から生じる場合がある。ブロック1010で、コンピューティングデバイスは、選択されたリモート共有キャッシュメモリを、実行プロセッサクラスタによって実行される実行プロセスのためのビクティムキャッシュとして使用してもよい。
【００４９】
図11は、ビクティムキャッシュとのレイテンシの低減を利用するように実行プロセスを実行プロセスクラスタにスケジューリングすることを実施するための態様方法1100を示す。方法1100は、ソフトウェア、プロセッサなどの汎用もしくは専用ハードウェア、またはソフトウェアとハードウェアとの組合せを使用する、コンピューティングデバイスにおいて実行されてもよい。一態様では、方法1100は、実行プロセスをスケジューリングするプロセッサクラスタの選択に影響を及ぼし得る、ビクティムキャッシュにおいて使用するリモート共有キャッシュメモリを選択するためのブロック1002、1004、1006、1008とともに実施され得る。一態様では、実行プロセスは、高いキャッシュメモリ需要を含み得る。方法1100は、コンピューティングデバイスが、最高の量の利用可能な共有キャッシュメモリ空間を有するリモート共有キャッシュメモリを決定し得るブロック1102とともに実施され得る。本明細書で言及するように、コンピューティングデバイスが最大量の利用可能な共有キャッシュメモリを決定し得るリモート共有キャッシュメモリは、すでにビクティムキャッシュの一部でないリモート共有キャッシュメモリを含む。
【００５０】
リモート共有キャッシュメモリは、実行プロセスを実行するためにスケジューリングされたプロセッサクラスタから離れている場合があり、リモート共有キャッシュメモリは、関連のプロセッサクラスタにスケジューリングされたプロセスの低いキャッシュメモリ要求による利用可能な共有キャッシュメモリを有する場合がある。最高の量の利用可能な共有キャッシュメモリ空間を有するリモート共有キャッシュは、任意の他のプロセッサクラスタにスケジューリングされた任意のプロセスの最低のキャッシュメモリ要求を有するプロセスを実行するようにスケジューリングされたプロセッサクラスタに関連付けられる場合がある。
【００５１】
最も利用可能な共有キャッシュメモリ空間を含むリモート共有キャッシュメモリの決定は、利用可能な共有キャッシュメモリ空間がリモート共有キャッシュメモリに関連付けられるかどうか、またはどれくらい量の利用可能な共有キャッシュメモリ空間がリモート共有キャッシュメモリに関連付けられるかを決定することを含み得る。これは、リモート共有キャッシュメモリのヒット率および/またはミス率を監視することによって、またはそのような情報を保持するように構成されたテーブルなどのデータ構造内の利用可能なアドレス空間をチェックすることによって達成される場合がある。リモート共有キャッシュメモリがビクティムキャッシュとして使用するのに適しているかどうかは、その利用可能な共有キャッシュメモリ空間の量がしきい値を超えるかどうかに依存し得る。ブロック1104では、コンピューティングデバイスは、ビクティムキャッシュとして使用するための最高の量の利用可能な共有キャッシュメモリ空間を有するリモート共有キャッシュメモリを選択する場合がある。
【００５２】
ブロック1106では、コンピューティングデバイスは、選択されたリモート共有キャッシュメモリに対する、または選択されたリモート共有キャッシュメモリを含むプロセッサクラスタに対する、最低のレイテンシを有するプロセッサクラスタを決定する場合がある。一態様では、プロセッサクラスタ間のレイテンシは、時間期間にわたって測定され、履歴情報に基づいて計算され、および/またはストレージから取り出される場合がある。ストレージから取り出されるプロセッサクラスタ間のレイテンシは、構成要素の設計および構築のフェーズ中に提供されるか、または記憶された以前測定されたレイテンシデータである場合がある。選択されたリモート共有キャッシュメモリに対する最低のレイテンシを有するプロセッサクラスタの決定は、プロセッサクラスタと、選択されたリモート共有キャッシュメモリを含むプロセッサクラスタとの間のレイテンシの比較の好ましい結果に基づいて行われる場合がある。ブロック1108では、コンピューティングデバイスは、実行プロセッサクラスタとして選択されたリモート共有キャッシュメモリに対する最低のレイテンシを有するプロセッサクラスタを選択する場合がある。
【００５３】
決定ブロック1110では、コンピューティングデバイスは、実行プロセッサクラスタがスケジューリングされたプロセスを有するかどうかを決定し得る。実行プロセッサクラスタがスケジューリングされたプロセスを有する(すなわち、決定ブロック1110=「イエス」)との決定に応答して、ブロック1112において、コンピューティングデバイスは、実行プロセッサクラスタの現在のプロセスを、実行プロセッサクラスタと、選択されたリモート共有キャッシュメモリに対応するプロセッサクラスタと以外のプロセッサクラスタにスケジューリングする場合がある。実行プロセスを実行プロセッサクラスタにスケジューリングするために、コンピューティングデバイスは、実行プロセスのための実行プロセッサクラスタを解放するために実行プロセッサクラスタに向けてスケジューリングされた任意の既存のプロセスを再スケジューリングすることを選ぶ場合がある。この再スケジューリングは、特に既存のプロセスが完了に近い場合、必要でない場合があるが、実行プロセスを実行する際の遅延を回避し得る。したがって、コンピューティングデバイスは、既存のプロセスを、実行プロセッサクラスタでない別のプロセッサクラスタに再スケジューリングする場合がある。さらに、コンピューティングデバイスは、選択されたリモート共有キャッシュメモリを含むプロセッサクラスタでない別のプロセッサクラスタに既存のプロセスを再スケジューリングする場合がある。実行プロセッサクラスタ上でスケジューリングされた既存のプロセスは、別のプロセッサクラスタがすでに最高の量の利用可能な共有キャッシュメモリを含むように決定され得るとき、最高の量の利用可能な共有キャッシュメモリを許容しないようにすでに決定される場合がある。最高の量の利用可能な共有キャッシュメモリを含むプロセッサクラスタに既存のプロセスを再スケジューリングすることは、プロセッサクラスタの利用可能な共有キャッシュメモリ空間を低減する場合があり、その結果、そのプロセッサクラスタは最高の利用可能な共有キャッシュメモリ空間を有しなくなる。したがって、実行プロセッサクラスタの既存のプロセスを、最高の量の利用可能な共有キャッシュメモリを含むプロセッサクラスタに再スケジューリングすることを回避することが好ましい場合がある。既存のプロセスは、任意の他のプロセッサクラスタに再スケジューリングされる場合がある。
【００５４】
ブロック1114では、コンピューティングデバイスは、実行プロセッサクラスタによって実行するための実行プロセスをスケジューリングし得る。実行プロセスのこのスケジューリングの結果、実行プロセスは、ここで、実行プロセッサクラスタに対する最低のレイテンシを有するプロセッサクラスタ上の最高の利用可能な共有キャッシュメモリ空間を含むビクティムキャッシュを使用して実行プロセッサクラスタによって実行される場合がある。コンピューティングデバイスは、ブロック1010において実行プロセッサクラスタによって実行された実行プロセスのためのビクティムキャッシュとして選択されたリモート共有キャッシュメモリを使用する場合がある。
【００５５】
実行プロセッサクラスタがスケジューリングされたプロセスを有しない(すなわち、決定ブロック1110=「ノー」)との決定に応答して、ブロック1114において、コンピューティングデバイスは、実行プロセッサクラスタによって実行するための実行プロセスをスケジューリングする場合がある。
【００５６】
図12は、レイテンシの低減およびビクティムキャッシュのより高い利用可能性を利用するように、より低い需要プロセスを実行プロセスのためのプロセッサクラスタにスケジューリングすることを実施するための態様方法を示すプロセスフロー図である。方法1200は、ソフトウェア、プロセッサなどの汎用ハードウェアもしくは専用ハードウェア、またはソフトウェアとハードウェアの組合せを使用するコンピューティングデバイスにおいて実行され得る。一態様では、ブロック1114から続く方法1200は、場合によっては、ビクティムキャッシュとのレイテンシの低減を利用するように実行プロセスを実行プロセスクラスタにスケジューリングするための方法1100とともに実施される場合がある。一態様では、方法1200は、独立した方法として実施される場合がある。ブロック1202では、コンピューティングデバイスは、選択されたリモート共有キャッシュメモリに対応する任意のプロセッサクラスタ以外の実行プロセッサクラスタに対する最低のレイテンシを有するプロセッサクラスタを決定する場合がある。一態様では、プロセッサクラスタ間のレイテンシは、時間期間にわたって測定され、履歴情報に基づいて計算され、および/またはストレージから取り出される場合がある。ストレージから取り出されるプロセッサクラスタ間のレイテンシは、構成要素の設計および構築のフェーズ中に提供されるか、または記憶された以前測定されたレイテンシデータである場合がある。実行プロセッサクラスタに対する最低のレイテンシを有するプロセッサクラスタの決定は、プロセッサクラスタと、選択されたリモート共有キャッシュメモリを含む実行プロセッサクラスタとの間のレイテンシの比較の好ましい結果に基づいて行われる場合がある。一態様では、方法1200は、プロセッサクラスタの利用可能な共有キャッシュメモリをビクティムキャッシュに加えることによってビクティムキャッシュを拡張するのに役立つ場合がある。したがって、プロセッサクラスタの選択されたリモート共有キャッシュメモリがすでにビクティムキャッシュに属している態様では、ビクティムキャッシュのその選択されたリモート共有キャッシュメモリを置き換えることを回避するためにそのようなプロセッサクラスタを選択しないことが好ましい場合がある。ブロック1204では、コンピューティングデバイスは、ビクティムキャッシュにおいて使用するための最低のレイテンシのプロセッサクラスタに対応するリモート共有キャッシュを選択する場合がある。
【００５７】
決定ブロック1206では、コンピューティングデバイスは、最低のレイテンシのプロセッサクラスタが既存のスケジューリングされたプロセスを有するかどうかを決定し得る。最低のレイテンシのプロセッサクラスタが既存のスケジューリングされたプロセスを有する(すなわち、決定ブロック1206=「イエス」)との決定に応答して、ブロック1208において、コンピューティングデバイスは、対応する最低のレイテンシのプロセッサクラスタの利用可能なリモート共有キャッシュメモリ空間を決定し得る。これは、リモート共有キャッシュメモリのヒット率および/またはミス率を監視することによって、またはそのような情報を保持するように構成されたテーブルなどのデータ構造内の利用可能なアドレス空間をチェックすることによって達成される場合がある。決定ブロック1210では、コンピューティングデバイスは、別のプロセッサクラスタが最低のレイテンシのプロセッサクラスタよりも利用可能なリモート共有キャッシュメモリを有するかどうかを決定し得る。一態様では、この決定は、実行プロセッサクラスタと、場合によってはすでにビクティムキャッシュに含まれる利用可能な共有キャッシュメモリに対応する任意のプロセッサクラスタとを除外する場合がある。本明細書で説明するように、任意のプロセッサクラスタの利用可能な共有キャッシュメモリのサイズは、リモート共有キャッシュメモリのヒット率および/またはミス率を監視することによって、またはそのような情報を保持するように構成されたテーブルなどのデータ構造内の利用可能なアドレス空間をチェックすることによって決定される場合がある。より大きい量の利用可能なリモート共有キャッシュメモリの決定は、プロセッサクラスタの利用可能なリモート共有キャッシュメモリの比較の好ましい結果に基づいている場合がある。
【００５８】
別のプロセッサクラスタが最低のレイテンシのプロセッサクラスタよりも利用可能なリモート共有キャッシュメモリを有する(すなわち、決定ブロック1210=「イエス」)との決定に応答して、ブロック1212において、コンピューティングデバイスは、より利用可能なリモート共有キャッシュメモリを有するプロセッサクラスタに最低のレイテンシのプロセッサクラスタのプロセスをスケジューリングする場合がある。ブロック1214では、コンピューティングデバイスは、より利用可能なリモート共有キャッシュメモリを有するプロセッサクラスタのプロセスを、最低のレイテンシのプロセッサクラスタにスケジューリングする場合がある。最低のレイテンシのプロセッサクラスタのプロセスと、より利用可能なリモート共有キャッシュメモリを有するプロセッサクラスタのプロセスとを互いにスケジューリングする際に、最低のレイテンシのプロセッサクラスタは、より利用可能なリモート共有キャッシュメモリを有するプロセッサクラスタになる。したがって、最大の利用可能なリモート共有キャッシュメモリは、ここで、最低のレイテンシのプロセッサクラスタに対応する。コンピューティングデバイスは、ブロック1010において実行プロセッサクラスタによって実行された実行プロセスのためのビクティムキャッシュとして選択されたリモート共有キャッシュメモリを使用する場合がある。
【００５９】
最低のレイテンシのプロセッサクラスタが既存のスケジューリングされたプロセスを有しない(すなわち、決定ブロック1206=「ノー」)との決定に応答して、ブロック1010において、コンピューティングデバイスは、実行プロセッサクラスタによって実行される実行プロセスのためのビクティムキャッシュとして選択されたリモート共有キャッシュメモリを使用する場合がある。同様に、他のどのプロセッサクラスタも、最低のレイテンシのプロセッサクラスタよりも利用可能なリモート共有キャッシュメモリを有しない(すなわち、決定ブロック1210=「ノー」)との決定に応答して、ブロック1010において、コンピューティングデバイスは、実行プロセッサクラスタによって実行される実行プロセスのためのビクティムキャッシュとして選択されたリモート共有キャッシュメモリを使用する場合がある。
【００６０】
(限定はしないが、図1〜図12を参照して上記で説明した態様を含む)様々な態様は、図13に示す様々な態様とともに使用するのに適した例示的なモバイルコンピューティングデバイスを含んでもよい多種多様なコンピューティングシステムにおいて実装されてもよい。モバイルコンピューティングデバイス1300は、タッチスクリーンコントローラ1304と内部メモリ1306とに結合されたプロセッサ1302を含んでもよい。プロセッサ1302は、汎用または特定の処理タスクに指定された1つまたは複数のマルチコア集積回路であってもよい。内部メモリ1306は揮発性または不揮発性メモリであってもよく、また、セキュアおよび/もしくは暗号化メモリ、または非セキュアおよび/もしくは非暗号化メモリ、またはそれらの任意の組合せであってもよい。活用されてもよいメモリタイプの例には、限定はしないが、DDR、LPDDR、GDDR、WIDEIO、RAM、SRAM、DRAM、P-RAM、R-RAM、M-RAM、STT-RAM、および埋め込みDRAMが含まれる。タッチスクリーンコントローラ1304およびプロセッサ1302は、抵抗感知タッチスクリーン、容量感知タッチスクリーン、赤外線感知タッチスクリーンなどのタッチスクリーンパネル1312に結合されてもよい。加えて、コンピューティングデバイス1300のディスプレイは、タッチスクリーン能力を有する必要がない。
【００６１】
モバイルコンピューティングデバイス1300は、互いにおよび/またはプロセッサ1302に結合された、通信を送信および受信するための1つまたは複数の無線信号トランシーバ1308(たとえば、Peanut、Bluetooth（登録商標）、Zigbee、Wi-Fi、RF無線)と、アンテナ1310とを有してもよい。トランシーバ1308およびアンテナ1310は、様々なワイヤレス伝送プロトコルスタックおよびインターフェースを実装するために、上述した回路とともに使用されてもよい。モバイルコンピューティングデバイス1300は、セルラーネットワークを介した通信を可能にし、プロセッサに結合されたセルラーネットワークワイヤレスモデムチップ1316を含んでもよい。
【００６２】
モバイルコンピューティングデバイス1300は、プロセッサ1302に結合された周辺デバイス接続インターフェース1318を含んでもよい。周辺デバイス接続インターフェース1318は、1つのタイプの接続を受け入れるように単独で構成されてもよく、または、USB、FireWire、Thunderbolt、もしくはPCIeなどの共通もしくはプロプライエタリの様々なタイプの物理接続および通信接続を受け入れるように構成されてもよい。周辺デバイス接続インターフェース1318はまた、同様に構成された周辺デバイス接続ポート(図示せず)に結合されてもよい。
【００６３】
モバイルコンピューティングデバイス1300はまた、オーディオ出力を提供するためのスピーカー1314を含んでもよい。モバイルコンピューティングデバイス1300はまた、本明細書で論じる構成要素のすべてまたはいくつかを収容するための、プラスチック、金属、または材料の組合せから構築された筐体1320を含んでもよい。モバイルコンピューティングデバイス1300は、使い捨てバッテリーまたは充電式バッテリーなどの、プロセッサ1302に結合された電源1322を含んでもよい。充電式バッテリーは、モバイルコンピューティングデバイス1300の外部にある電源から充電電流を受けるために、周辺デバイス接続ポートに結合される場合もある。モバイルコンピューティングデバイス1300はまた、ユーザ入力を受け取るための物理ボタン1324を含んでもよい。モバイルコンピューティングデバイス1300は、モバイルコンピューティングデバイス1300をオンオフするための電源ボタン1326を含んでもよい。
【００６４】
(限定はしないが、図1〜図12を参照して上記で説明した態様を含む)様々な態様は、図14に示すラップトップコンピュータ1400など、様々なモバイルコンピューティングデバイスを含んでもよい多種多様なコンピューティングシステムにおいて実装されてもよい。多くのラップトップコンピュータは、コンピュータのポインティングデバイスとして働くタッチパッドタッチ面1417を含み、したがって、タッチスクリーンディスプレイを装備した、上で説明したコンピューティングデバイス上で実装されるものと同様のドラッグジェスチャー、スクロールジェスチャー、およびフリックジェスチャーを受け取ってもよい。ラップトップコンピュータ1400は通常、揮発性メモリ1412、およびフラッシュメモリのディスクドライブ1413などの大容量不揮発性メモリに結合されたプロセッサ1411を含む。加えて、コンピュータ1400は、プロセッサ1411に結合されたワイヤレスデータリンクおよび/またはセルラー電話トランシーバ1416に接続されてもよい、電磁放射を送信および受信するための1つまたは複数のアンテナ1408を有してもよい。コンピュータ1400はまた、プロセッサ1411に結合されたフロッピーディスクドライブ1414およびコンパクトディスク(CD)ドライブ1415を含んでもよい。ノートブック構成では、コンピュータハウジングは、すべてがプロセッサ1411に結合された、タッチパッド1417、キーボード1418、およびディスプレイ1419を含む。コンピューティングデバイスの他の構成は、よく知られているように、(たとえば、USB入力を介して)プロセッサに結合されたコンピュータマウスまたはトラックボールを含み得、それらはまた、様々な態様とともに使用されてもよい。
【００６５】
(限定はしないが、図1〜図12を参照して上記で説明した態様を含む)様々な態様は、サーバキャッシュメモリ内にデータを圧縮するための様々な市販のサーバのうちのいずれかを含んでもよい多種多様なコンピューティングシステムにおいて実装され得る。例示的なサーバ1500が、図15に示されている。そのようなサーバ1500は通常、揮発性メモリ1502と、ディスクドライブ1504などの大容量不揮発性メモリとに結合された、1つまたは複数のマルチコアプロセッサアセンブリ1501を含む。図15に示すように、マルチコアプロセッサアセンブリ1501は、それらをアセンブリのラックに挿入することによって、サーバ1500に追加されてもよい。サーバ1500はまた、プロセッサ1501に結合されたフロッピーディスクドライブ、コンパクトディスク(CD)またはDVDディスクドライブ1506を含んでもよい。サーバ1500はまた、他のブロードキャストシステムコンピュータおよびサーバに結合されたローカルエリアネットワーク、インターネット、公衆交換電話網、ならびに/またはセルラーデータネットワーク(たとえば、CDMA、TDMA、GSM（登録商標）、PCS、3G、4G、LTE、もしくは任意の他のタイプのセルラーデータネットワーク)など、ネットワーク1505とのネットワークインターフェース接続を確立するための、マルチコアプロセッサアセンブリ1501に結合されたネットワークアクセスポート1503を含んでもよい。
【００６６】
様々な態様の動作を遂行するためにプログラマブルプロセッサ上で実行するためのコンピュータプログラムコードまたは「プログラムコード」は、C、C++、C#、Smalltalk、Java（登録商標）、JavaScript（登録商標）、Visual Basic、構造化照会言語(たとえば、Transact-SQL)、Perlなどの高水準プログラミング言語で、または様々な他のプログラミング言語で書かれる場合がある。本出願で使用する、コンピュータ可読記憶媒体上に記憶されるプログラムコードまたはプログラムは、そのフォーマットがプロセッサによって理解可能である(オブジェクトコードなどの)機械言語コードを指す場合がある。
【００６７】
多くのコンピューティングデバイスのオペレーティングシステムカーネルは、(非特権コードが動作する場合)ユーザ空間に編成され、(特権コードが動作する場合)カーネル空間に編成される。この分離は、カーネル空間の一部であるコードが一般公有使用許諾(GPL)を受けなければならない一方で、ユーザ空間内で動作するコードがGPLを受けなくてもよい、Androidおよび他のGPL環境において特に重要である。本明細書で説明する様々なソフトウェア構成要素/モジュールは、別段に明記されていない限り、カーネル空間またはユーザ空間のいずれかにおいて実装されてもよいことを理解されたい。
【００６８】
上記の方法説明およびプロセスフロー図は、単に例示的な例として提供され、様々な態様の動作が提示された順序で実行されなければならないことを要求または暗示するものではない。当業者によって諒解されるように、上記の態様における動作の順序は、任意の順序で実行されてもよい。「その後」、「次いで」、「次に」などの語は、動作の順序を限定するものではなく、これらの語は単に、方法の説明を通して読者を導くために使用される。さらに、たとえば、冠詞「a」、「an」または「the」を使用する、単数形での請求項の要素へのいかなる言及も、その要素を単数形に限定するものとして解釈されるべきではない。
【００６９】
様々な態様に関して説明する様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズム動作は、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装されてもよい。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、および動作について、上記では概してそれらの機能に関して説明した。そのような機能がハードウェアとして実装されるか、ソフトウェアとして実装されるかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装する場合があるが、そのような実装の判断は、本発明の範囲からの逸脱を引き起こすと解釈されるべきではない。
【００７０】
本明細書で開示する態様に関して説明する様々な例示的な論理、論理ブロック、モジュール、および回路を実装するために使用されるハードウェアは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明する機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行されてもよい。汎用プロセッサはマイクロプロセッサであってもよいが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであってもよい。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装されてもよい。代替的に、いくつかの動作または方法は、所与の機能に固有の回路によって実行されてもよい。
【００７１】
1つまたは複数の態様では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せにおいて実装されてもよい。ソフトウェアにおいて実装される場合、機能は、非一時的コンピュータ可読媒体または非一時的プロセッサ可読媒体上の1つまたは複数の命令またはコードとして記憶されてもよい。本明細書で開示する方法またはアルゴリズムの動作は、非一時的コンピュータ可読またはプロセッサ可読記憶媒体上に存在してもよいプロセッサ実行可能ソフトウェアモジュールにおいて具現化されてもよい。非一時的コンピュータ可読またはプロセッサ可読記憶媒体は、コンピュータまたはプロセッサによってアクセスされてもよい任意の記憶媒体であってもよい。限定ではなく例として、そのような非一時的コンピュータ可読またはプロセッサ可読媒体は、RAM、ROM、EEPROM、FLASHメモリ、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または命令もしくはデータ構造の形態で所望のプログラムコードを記憶するために使用される場合があり、コンピュータによってアクセスされる場合がある任意の他の媒体を含んでもよい。ディスク(disk)およびディスク(disc)は、本明細書で使用するとき、コンパクトディスク(disc)(CD)、レーザーディスク（登録商標）(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)、およびブルーレイディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生する一方で、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せも、非一時的コンピュータ可読およびプロセッサ可読媒体の範囲内に含まれる。加えて、方法またはアルゴリズムの動作は、コンピュータプログラム製品に組み込まれる場合がある、非一時的プロセッサ可読媒体および/またはコンピュータ可読媒体上のコードおよび/または命令の1つまたは任意の組合せまたはセットとして存在する場合がある。
【００７２】
開示した態様の前述の説明は、任意の当業者が本発明を作成または使用することを可能にするために提供される。これらの態様に対する様々な修正は当業者には容易に明らかとなり、本明細書で定義された一般原理は、本発明の趣旨または範囲から逸脱することなく、他の態様に適用され得る。したがって、本発明は、本明細書に示す態様に限定されるものではなく、以下の特許請求の範囲、ならびに本明細書で開示する原理および新規の特徴と一致する最も広い範囲を与えられるべきである。
【符号の説明】
【００７３】
10  コンピューティングデバイス
12  SoC
14  プロセッサ、マルチコアプロセッサ
16  メモリ、メモリデバイス
18  通信インターフェース
20  ストレージメモリインターフェース
22  通信構成要素
24  ストレージメモリ
26、1310、1408  アンテナ
28  ネットワークインターフェース
30  ワイヤレスネットワーク
32  ワイヤレス接続
40  インターネット
44  ワイヤード接続、ワイヤードネットワーク
50  リモートコンピューティングデバイス
200、201、202、203  プロセッサコア
204、206、208、210、430、432、434、436、438、440、442、444、446、448  専用キャッシュメモリ
212、214  共有キャッシュメモリ
300、302、304、306、410、412、414、416、418、420、422、424、426、428、1302、1411  プロセッサ
400、402、404、406、408  プロセッサクラスタ、実行プロセッサクラスタ
450、452、454、456、458  共有キャッシュメモリ、リモート共有キャッシュメモリ
460、462、464、466  利用可能な共有キャッシュメモリ
468  相互接続バス
502、504、506、508  プロット点
1300  モバイルコンピューティングデバイス、コンピューティングデバイス
1304  タッチスクリーンコントローラ
1306  内部メモリ
1308  無線信号トランシーバ、トランシーバ
1312  タッチスクリーンパネル
1314  スピーカー
1316  セルラーネットワークワイヤレスモデムチップ
1318  周辺デバイス接続インターフェース
1320  筐体
1322  電源
1324  物理ボタン
1326  電源ボタン
1400  ラップトップコンピュータ、コンピュータ
1412、1502  揮発性メモリ
1413、1504  ディスクドライブ
1414  フロッピーディスクドライブ
1415  コンパクトディスク(CD)ドライブ
1416  セルラー電話トランシーバ
1417  タッチパッドタッチ面、タッチパッド
1418  キーボード
1419  ディスプレイ
1500  サーバ
1501  マルチコアプロセッサアセンブリ
1503  ネットワークアクセスポート
1505  ネットワーク
1506  フロッピーディスクドライブ、コンパクトディスク(CD)またはDVDディスクドライブ
【図１】
2018511111.tif 000003
【図２】
2018511111.tif 000004
【図３】
2018511111.tif 000005
【図４】
2018511111.tif 000006
【図５】
2018511111.tif 000007
【図６】
2018511111.tif 000008
【図７】
2018511111.tif 000009
【図８】
2018511111.tif 000010
【図９】
2018511111.tif 000011
【図１０】
2018511111.tif 000012
【図１１】
2018511111.tif 000013
【図１２】
2018511111.tif 000014
【図１３】
2018511111.tif 000015
【図１４】
2018511111.tif 000016
【図１５】
2018511111.tif 000017
【国際調査報告】
2018511111.tif 000018
2018511111.tif 000019
2018511111.tif 000020