(57)【要約】  態様は、利用可能な共有キャッシュメモリをビクティムキャッシュとして選択することを実施するためのコンピューティングデバイス、システム、および方法を含む。コンピューティングデバイスは、ビクティムキャッシュとして使用するための利用可能な共有キャッシュメモリ空間を有するリモート共有キャッシュメモリを特定してもよい。適切な利用可能な共有キャッシュメモリを選択するために、コンピューティングデバイスは、性能速度、効率、または有効ビクティムキャッシュサイズなどのメトリックに関係する、特定されたリモート共有キャッシュメモリ、または特定されたリモート共有キャッシュメモリに関連付けられたプロセッサクラスタのためのデータを取り出してもよい。取り出されたデータを使用して、コンピューティングデバイスは、ビクティムキャッシュとして使用するために、特定されたリモート共有キャッシュメモリを決定し、ビクティムキャッシュとして使用するために、決定されたリモート共有キャッシュメモリを選択してもよい。
2018511105.tif 000002
【特許請求の範囲】
【請求項１】
複数の共有キャッシュメモリの中から、ビクティムキャッシュとして使用するために、リモート共有キャッシュメモリを選択する方法であって、
前記複数の共有キャッシュメモリの中で、前記ビクティムキャッシュとして使用するために利用可能な空間を有するそれらのリモート共有キャッシュメモリを特定するステップと、
前記特定されたリモート共有キャッシュメモリの各々、または前記特定されたリモート共有キャッシュメモリの各々に関連付けられたプロセッサクラスタについて、リモート共有キャッシュメモリを前記ビクティムキャッシュとして選択するためのメトリックに関係するデータを取り出すステップと、
前記メトリックに基づいて、前記ビクティムキャッシュとして使用するための前記特定されたリモート共有キャッシュメモリの各々の適切性を判定するステップと、
前記判定に基づいて、前記ビクティムキャッシュとして使用するために、前記特定されたリモート共有キャッシュメモリのうちの1つを選択するステップと
を含む、方法。
【請求項２】
リモート共有キャッシュメモリを前記ビクティムキャッシュとして選択するための前記メトリックが、性能速度メトリックを備え、
前記特定されたリモート共有キャッシュメモリの各々、または前記特定されたリモート共有キャッシュメモリの各々に関連付けられたプロセッサクラスタについて、リモート共有キャッシュメモリを前記ビクティムキャッシュとして選択するためのメトリックに関係するデータを取り出すステップが、前記特定されたリモート共有キャッシュメモリのヒット率と、前記特定されたリモート共有キャッシュメモリのためのミス率と、前記プロセッサクラスタのレイテンシと、メインメモリのためのレイテンシとを取り出すステップを含み、
前記メトリックに基づいて、前記ビクティムキャッシュとして使用するための前記特定されたリモート共有キャッシュメモリの各々の適切性を判定するステップが、
前記特定されたリモート共有キャッシュメモリのための性能速度インジケータを計算するステップと、
前記特定されたリモート共有キャッシュメモリのための前記性能速度インジケータを、しきい値または別の特定されたリモート共有キャッシュメモリのための別の性能速度インジケータと比較するステップと
を含む、請求項1に記載の方法。
【請求項３】
アドレスインターリービング方式に基づいて、前記ビクティムキャッシュとして使用するために選択された別のリモート共有キャッシュメモリを用いて、前記ビクティムキャッシュとして使用するために選択された前記特定されたリモート共有キャッシュメモリのメモリアドレスをインターリーブするステップをさらに含む、請求項2に記載の方法。
【請求項４】
前記特定されたリモート共有キャッシュメモリのための性能速度インジケータを計算するステップが、
前記特定されたリモート共有キャッシュメモリの前記ヒット率×前記プロセッサクラスタの前記レイテンシ+前記特定されたリモート共有キャッシュメモリの前記ミス率×前記メインメモリの前記レイテンシとの式を使用するステップを含む、請求項2に記載の方法。
【請求項５】
リモート共有キャッシュメモリを前記ビクティムキャッシュとして選択するための前記メトリックが、効率メトリックを備え、
前記特定されたリモート共有キャッシュメモリの各々、または前記特定されたリモート共有キャッシュメモリの各々に関連付けられたプロセッサクラスタについて、リモート共有キャッシュメモリを前記ビクティムキャッシュとして選択するためのメトリックに関係するデータを取り出すステップが、前記プロセッサクラスタの状態データを取り出すステップを含み、
前記メトリックに基づいて、前記ビクティムキャッシュとして使用するための前記特定されたリモート共有キャッシュメモリの各々の適切性を判定するステップが、前記プロセッサクラスタの前記状態データを、しきい値または別のプロセッサクラスタの状態データと比較するステップを含む、請求項1に記載の方法。
【請求項６】
アドレスインターリービング方式に基づいて、前記ビクティムキャッシュとして使用するために選択された別のリモート共有キャッシュメモリを用いて、前記ビクティムキャッシュとして使用するために選択された前記特定されたリモート共有キャッシュメモリのメモリアドレスをインターリーブするステップをさらに含む、請求項5に記載の方法。
【請求項７】
前記プロセッサクラスタの状態データを取り出すステップが、温度、電流リーク、電力使用、または動作周波数のうちの少なくとも1つを取り出すステップを含む、請求項5に記載の方法。
【請求項８】
リモート共有キャッシュメモリを前記ビクティムキャッシュとして選択するための前記メトリックが、有効ビクティムキャッシュサイズメトリックを備え、
前記特定されたリモート共有キャッシュメモリの各々、または前記特定されたリモート共有キャッシュメモリの各々に関連付けられたプロセッサクラスタについて、リモート共有キャッシュメモリを前記ビクティムキャッシュとして選択するためのメトリックに関係するデータを取り出すステップが、前記特定されたリモート共有キャッシュメモリの利用可能な共有キャッシュメモリサイズ、または前記特定されたリモート共有キャッシュメモリのためのメモリレイテンシのうちの少なくとも1つを取り出すステップを含み、
前記メトリックに基づいて、前記ビクティムキャッシュとして使用するための前記特定されたリモート共有キャッシュメモリの各々の適切性を判定するステップが、前記特定されたリモート共有キャッシュメモリの前記利用可能な共有キャッシュメモリサイズ、または前記特定されたリモート共有キャッシュメモリのための前記メモリレイテンシのうちの少なくとも1つを、しきい値または別の特定されたリモート共有キャッシュメモリのための同じタイプのデータと比較するステップを含む、
請求項1に記載の方法。
【請求項９】
アドレスインターリービング方式に基づいて、前記ビクティムキャッシュとして使用するために選択された別のリモート共有キャッシュメモリを用いて、前記ビクティムキャッシュとして使用するために選択された前記特定されたリモート共有キャッシュメモリのメモリアドレスをインターリーブするステップをさらに含む、請求項8に記載の方法。
【請求項１０】
前記特定されたリモート共有キャッシュメモリと他のリモート共有キャッシュメモリとの間の利用可能な共有キャッシュメモリサイズの比、または前記特定されたリモート共有キャッシュメモリと前記他のリモート共有キャッシュメモリとの間のメモリレイテンシの比に基づいて、前記アドレスインターリービング方式を決定するステップであって、前記アドレスインターリービング方式は、任意のアドレスインターリービング方式、対称nウェイアドレスインターリービング方式、および非対称アドレスインターリービング方式のうちの1つを含む、ステップ
をさらに含む、請求項9に記載の方法。
【請求項１１】
リモート共有キャッシュメモリを前記ビクティムキャッシュとして選択するための前記メトリックを決定するステップをさらに含む、請求項1に記載の方法。
【請求項１２】
コンピューティングデバイスであって、
互いに通信可能に接続された複数のプロセッサクラスタと、
実行プロセスを割り当てられた、前記複数のプロセッサクラスタのうちの第1のプロセッサクラスタと、
前記複数のプロセッサクラスタのうちの少なくとも1つに、各々通信可能に接続された、複数の共有キャッシュメモリと、
前記複数のプロセッサクラスタに通信可能に接続され、かつ動作を実行するようにプロセッサ実行可能命令で構成されるプロセッサであって、前記動作が、
前記複数の共有キャッシュメモリの中で、ビクティムキャッシュとして使用するために利用可能な空間を有するそれらのリモート共有キャッシュメモリを特定することと、
前記特定されたリモート共有キャッシュメモリの各々、または前記特定されたリモート共有キャッシュメモリの各々に関連付けられたプロセッサクラスタについて、リモート共有キャッシュメモリを前記ビクティムキャッシュとして選択するためのメトリックに関係するデータを取り出すことと、
前記メトリックに基づいて、前記ビクティムキャッシュとして使用するための前記特定されたリモート共有キャッシュメモリの各々の適切性を判定することと、
前記判定に基づいて、前記ビクティムキャッシュとして使用するために、前記特定されたリモート共有キャッシュメモリのうちの1つを選択することと
を備えるプロセッサと
を含む、コンピューティングデバイス。
【請求項１３】
前記プロセッサに通信可能に接続されたメインメモリをさらに備え、
リモート共有キャッシュメモリを前記ビクティムキャッシュとして選択するための前記メトリックが、性能速度メトリックを備え、
前記プロセッサが、
前記特定されたリモート共有キャッシュメモリの各々、または前記特定されたリモート共有キャッシュメモリの各々に関連付けられたプロセッサクラスタについて、リモート共有キャッシュメモリを前記ビクティムキャッシュとして選択するためのメトリックに関係するデータを取り出すことが、前記特定されたリモート共有キャッシュメモリのヒット率と、前記特定されたリモート共有キャッシュメモリのためのミス率と、前記プロセッサクラスタのレイテンシと、前記メインメモリのためのレイテンシとを取り出すことを含み、
前記メトリックに基づいて、前記ビクティムキャッシュとして使用するための前記特定されたリモート共有キャッシュメモリの各々の適切性を判定することが、
前記特定されたリモート共有キャッシュメモリのための性能速度インジケータを計算することと、
前記特定されたリモート共有キャッシュメモリのための前記性能速度インジケータを、しきい値または別の特定されたリモート共有キャッシュメモリのための別の性能速度インジケータと比較することと
を含むように、動作を実行するようにプロセッサ実行可能命令でさらに構成される、請求項12に記載のコンピューティングデバイス。
【請求項１４】
前記プロセッサが、アドレスインターリービング方式に基づいて、前記ビクティムキャッシュとして使用するために選択された別のリモート共有キャッシュメモリを用いて、前記ビクティムキャッシュとして使用するために選択された前記特定されたリモート共有キャッシュメモリのメモリアドレスをインターリーブすることを含む動作を実行するようにプロセッサ実行可能命令でさらに構成される、請求項13に記載のコンピューティングデバイス。
【請求項１５】
前記プロセッサが、前記特定されたリモート共有キャッシュメモリのための性能速度インジケータを計算することが、
前記特定されたリモート共有キャッシュメモリの前記ヒット率×前記プロセッサクラスタの前記レイテンシ+前記特定されたリモート共有キャッシュメモリの前記ミス率×前記メインメモリの前記レイテンシとの式を使用することを含むように、動作を実行するようにプロセッサ実行可能命令でさらに構成される、請求項13に記載のコンピューティングデバイス。
【請求項１６】
リモート共有キャッシュメモリを前記ビクティムキャッシュとして選択するための前記メトリックが、効率メトリックを備え、
前記プロセッサが、
前記特定されたリモート共有キャッシュメモリの各々、または前記特定されたリモート共有キャッシュメモリの各々に関連付けられたプロセッサクラスタについて、リモート共有キャッシュメモリを前記ビクティムキャッシュとして選択するためのメトリックに関係するデータを取り出すことが、前記プロセッサクラスタの状態データを取り出すことを含み、
前記メトリックに基づいて、前記ビクティムキャッシュとして使用するための前記特定されたリモート共有キャッシュメモリの各々の適切性を判定することが、前記プロセッサクラスタの前記状態データを、しきい値または別のプロセッサクラスタの状態データと比較することを含む
ように、動作を実行するようにプロセッサ実行可能命令でさらに構成される、請求項12に記載のコンピューティングデバイス。
【請求項１７】
前記プロセッサが、アドレスインターリービング方式に基づいて、前記ビクティムキャッシュとして使用するために選択された別のリモート共有キャッシュメモリを用いて、前記ビクティムキャッシュとして使用するために選択された前記特定されたリモート共有キャッシュメモリのメモリアドレスをインターリーブすることを含む動作を実行するようにプロセッサ実行可能命令でさらに構成される、請求項16に記載のコンピューティングデバイス。
【請求項１８】
前記プロセッサが、前記プロセッサクラスタの状態データを取り出すことが、温度、電流リーク、電力使用、または動作周波数のうちの少なくとも1つを取り出すことを含むように、動作を実行するようにプロセッサ実行可能命令でさらに構成される、請求項16に記載のコンピューティングデバイス。
【請求項１９】
リモート共有キャッシュメモリを前記ビクティムキャッシュとして選択するための前記メトリックが、有効ビクティムキャッシュサイズメトリックを備え、
前記プロセッサが、
前記特定されたリモート共有キャッシュメモリの各々、または前記特定されたリモート共有キャッシュメモリの各々に関連付けられたプロセッサクラスタについて、前記リモート共有キャッシュメモリを前記ビクティムキャッシュとして選択するためのメトリックに関係するデータを取り出すことが、前記特定されたリモート共有キャッシュメモリの利用可能な共有キャッシュメモリサイズ、または前記特定されたリモート共有キャッシュメモリのためのメモリレイテンシのうちの少なくとも1つを取り出すことを含み、
前記メトリックに基づいて、前記ビクティムキャッシュとして使用するための前記特定されたリモート共有キャッシュメモリの各々の適切性を判定することが、前記特定されたリモート共有キャッシュメモリの前記利用可能な共有キャッシュメモリサイズ、または前記特定されたリモート共有キャッシュメモリのための前記メモリレイテンシのうちの少なくとも1つを、しきい値または別の特定されたリモート共有キャッシュメモリのための同じタイプのデータと比較することを含む
ように、動作を実行するようにプロセッサ実行可能命令でさらに構成される、請求項12に記載のコンピューティングデバイス。
【請求項２０】
前記プロセッサが、アドレスインターリービング方式に基づいて、前記ビクティムキャッシュとして使用するために選択された別のリモート共有キャッシュメモリを用いて、前記ビクティムキャッシュとして使用するために選択された前記特定されたリモート共有キャッシュメモリのメモリアドレスをインターリーブすることを含む動作を実行するようにプロセッサ実行可能命令でさらに構成される、請求項19に記載のコンピューティングデバイス。
【請求項２１】
前記プロセッサが、
前記特定されたリモート共有キャッシュメモリと他のリモート共有キャッシュメモリとの間の利用可能な共有キャッシュメモリサイズの比、または前記特定されたリモート共有キャッシュメモリと前記他のリモート共有キャッシュメモリとの間のメモリレイテンシの比に基づいて、前記アドレスインターリービング方式を決定すること
を含む動作を実行するようにプロセッサ実行可能命令でさらに構成され、
前記アドレスインターリービング方式が、任意のアドレスインターリービング方式、対称nウェイアドレスインターリービング方式、および非対称アドレスインターリービング方式のうちの1つを含む、
請求項20に記載のコンピューティングデバイス。
【請求項２２】
前記プロセッサが、リモート共有キャッシュメモリを前記ビクティムキャッシュとして選択するための前記メトリックを決定することを含む動作を実行するようにプロセッサ実行可能命令でさらに構成される、請求項12に記載のコンピューティングデバイス。
【請求項２３】
コンピューティングデバイスであって、
複数の共有キャッシュメモリの中で、ビクティムキャッシュとして使用するために利用可能な空間を有するそれらのリモート共有キャッシュメモリを特定するための手段と、
前記特定されたリモート共有キャッシュメモリの各々、または前記特定されたリモート共有キャッシュメモリの各々に関連付けられたプロセッサクラスタについて、リモート共有キャッシュメモリを前記ビクティムキャッシュとして選択するためのメトリックに関係するデータを取り出すための手段と、
前記メトリックに基づいて、前記ビクティムキャッシュとして使用するための前記特定されたリモート共有キャッシュメモリの各々の適切性を判定するための手段と、
前記判定に基づいて、前記ビクティムキャッシュとして使用するために、前記特定されたリモート共有キャッシュメモリのうちの1つを選択するための手段と
を備える、コンピューティングデバイス。
【請求項２４】
プロセッサに動作を実行させるように構成されるプロセッサ実行可能命令を記憶した非一時的プロセッサ可読媒体であって、前記動作が、
複数の共有キャッシュメモリの中で、ビクティムキャッシュとして使用するために利用可能な空間を有するそれらのリモート共有キャッシュメモリを特定することと、
前記特定されたリモート共有キャッシュメモリの各々、または前記特定されたリモート共有キャッシュメモリの各々に関連付けられたプロセッサクラスタについて、リモート共有キャッシュメモリを前記ビクティムキャッシュとして選択するためのメトリックに関係するデータを取り出すことと、
前記メトリックに基づいて、前記ビクティムキャッシュとして使用するための前記特定されたリモート共有キャッシュメモリの各々の適切性を判定することと、
前記判定に基づいて、前記ビクティムキャッシュとして使用するために、前記特定されたリモート共有キャッシュメモリのうちの1つを選択することと
を含む、非一時的プロセッサ可読記録媒体。
【請求項２５】
リモート共有キャッシュメモリを前記ビクティムキャッシュとして選択するための前記メトリックが、性能速度メトリックを備え、
前記記憶されたプロセッサ実行可能命令が、
前記特定されたリモート共有キャッシュメモリの各々、または前記特定されたリモート共有キャッシュメモリの各々に関連付けられたプロセッサクラスタについて、リモート共有キャッシュメモリを前記ビクティムキャッシュとして選択するためのメトリックに関係するデータを取り出すことが、前記特定されたリモート共有キャッシュメモリのヒット率と、前記特定されたリモート共有キャッシュメモリのためのミス率と、前記プロセッサクラスタのレイテンシと、メインメモリのためのレイテンシとを取り出すことを含み、
前記メトリックに基づいて、前記ビクティムキャッシュとして使用するための前記特定されたリモート共有キャッシュメモリの各々の適切性を判定することが、
前記特定されたリモート共有キャッシュメモリのための性能速度インジケータを計算することと、
前記特定されたリモート共有キャッシュメモリのための前記性能速度インジケータを、しきい値または別の特定されたリモート共有キャッシュメモリのための別の性能速度インジケータと比較することと
を含む
ように、前記プロセッサに動作を実行させるように構成される、請求項24に記載の非一時的プロセッサ可読記録媒体。
【請求項２６】
前記記憶されたプロセッサ実行可能命令が、前記特定されたリモート共有キャッシュメモリのための性能速度インジケータを計算することが、
前記特定されたリモート共有キャッシュメモリの前記ヒット率×前記プロセッサクラスタの前記レイテンシ+前記特定されたリモート共有キャッシュメモリの前記ミス率×前記メインメモリの前記レイテンシとの式を使用することを含むように、前記プロセッサに動作を実行させるように構成される、請求項25に記載の非一時的プロセッサ可読記録媒体。
【請求項２７】
リモート共有キャッシュメモリを前記ビクティムキャッシュとして選択するための前記メトリックが、効率メトリックを備え、
前記記憶されたプロセッサ実行可能命令が、
前記特定されたリモート共有キャッシュメモリの各々、または前記特定されたリモート共有キャッシュメモリの各々に関連付けられたプロセッサクラスタについて、リモート共有キャッシュメモリを前記ビクティムキャッシュとして選択するためのメトリックに関係するデータを取り出すことが、前記プロセッサクラスタの状態データを取り出すことを含み、前記状態データが、温度、電流リーク、電力使用、または動作周波数のうちの少なくとも1つを含み、
前記メトリックに基づいて、前記ビクティムキャッシュとして使用するための前記特定されたリモート共有キャッシュメモリの各々の適切性を判定することが、前記プロセッサクラスタの前記状態データを、しきい値または別のプロセッサクラスタの状態データと比較することを含む
ように、前記プロセッサに動作を実行させるように構成される、請求項24に記載の非一時的プロセッサ可読記録媒体。
【請求項２８】
リモート共有キャッシュメモリを前記ビクティムキャッシュとして選択するための前記メトリックが、有効ビクティムキャッシュサイズメトリックを備え、
前記記憶されたプロセッサ実行可能命令が、
前記特定されたリモート共有キャッシュメモリの各々、または前記特定されたリモート共有キャッシュメモリの各々に関連付けられたプロセッサクラスタについて、リモート共有キャッシュメモリを前記ビクティムキャッシュとして選択するためのメトリックに関係するデータを取り出すことが、前記特定されたリモート共有キャッシュメモリの利用可能な共有キャッシュメモリサイズ、または前記特定されたリモート共有キャッシュメモリのためのメモリレイテンシのうちの少なくとも1つを取り出すことを含み、
前記メトリックに基づいて、前記ビクティムキャッシュとして使用するための前記特定されたリモート共有キャッシュメモリの各々の適切性を判定することが、前記特定されたリモート共有キャッシュメモリの前記利用可能な共有キャッシュメモリサイズ、または前記特定されたリモート共有キャッシュメモリのための前記メモリレイテンシのうちの少なくとも1つを、しきい値または別の特定されたリモート共有キャッシュメモリのための同じタイプのデータと比較することを含む
ように、前記プロセッサに動作を実行させるように構成され、
前記記憶されたプロセッサ実行可能命令が、アドレスインターリービング方式に基づいて、前記ビクティムキャッシュとして使用するために選択された別のリモート共有キャッシュメモリを用いて、前記ビクティムキャッシュとして使用するために選択された前記特定されたリモート共有キャッシュメモリのメモリアドレスをインターリーブすることをさらに含む動作を前記プロセッサに実行させるように構成される、請求項24に記載の非一時的プロセッサ可読記録媒体。
【請求項２９】
前記記憶されたプロセッサ実行可能命令が、
前記特定されたリモート共有キャッシュメモリと他のリモート共有キャッシュメモリとの間の利用可能な共有キャッシュメモリサイズの比、または前記特定されたリモート共有キャッシュメモリと前記他のリモート共有キャッシュメモリとの間のメモリレイテンシの比に基づいて、前記アドレスインターリービング方式を決定することであって、前記アドレスインターリービング方式は、任意のアドレスインターリービング方式、対称nウェイアドレスインターリービング方式、および非対称アドレスインターリービング方式のうちの1つを含む、決定すること
をさらに含む動作を前記プロセッサに実行させるように構成される、請求項28に記載の非一時的プロセッサ可読記録媒体。
【請求項３０】
前記記憶されたプロセッサ実行可能命令が、リモート共有キャッシュメモリを前記ビクティムキャッシュとして選択するための前記メトリックを決定することをさらに含む動作を前記プロセッサに実行させるように構成される、請求項24に記載の非一時的プロセッサ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチクラスタシステムにおいて利用可能なキャッシュを選択する方法に関する。
【背景技術】
【０００２】
広範囲のコンピューティングデバイスにおける性能および特徴に対する需要の増加は、以前の世代よりも高速に実行しながら、より多数の能力およびより重い作業負荷を扱うために、複数の中央プロセッサユニット(CPU)をコンピューティングデバイス内に含めるように、製品を導いてきた。いくつかのアーキテクチャは、異なるタスクを実行し、異なる能力をサポートするために、クラスタに配列されたCPUを含む。コンピューティングデバイスは、コンピューティングデバイスのソフトウェアおよびサブシステムの需要を扱うために、マルチクラスタCPUシステムを含む場合がある。CPUがそれらの処理速度に匹敵する速度で記憶されたコードおよびデータにアクセスすることができる場合にのみ、CPUの数はコンピューティングデバイスの性能を高めることができる。キャッシュメモリへのアクセスを要求するCPUが多すぎると、性能ボトルネックを引き起こす可能性がある。
【０００３】
この性能ボトルネックが生じることを回避するために、各CPUクラスタは、それ自体のキャッシュメモリ、たとえばL2キャッシュを含む場合がある。多くの事例では、コンピューティングデバイスのCPUクラスタのすべてがアクティブであるとは限らない場合があり、またはCPUクラスタのキャッシュが十分に利用されない場合がある。既存のキャッシュコヒーレンシプロトコルは、異なるCPUクラスタのL2キャッシュの間のデータの共有をサポートする。しかしながら、これらのキャッシュコヒーレンシプロトコルは、マルチクラスタCPUシステムにおける利用可能なL2キャッシュリソースを十分に活用することができない。他のアクティブなCPUクラスタをサポートするために活用されるべき好ましいL2キャッシュは、最低のレイテンシと最高の利用可能性の両方を有するマルチクラスタCPUシステムのL2キャッシュとなる。この好ましい環境は、CPUクラスタのために他のL2クラスタリソースを活用しようとするとき、常に存在するとは限らない。さらに、最高の利用可能性と最低のレイテンシとを組み合わせても、最良の性能結果との組合せがもたらされない場合がある。
【発明の概要】
【課題を解決するための手段】
【０００４】
様々な態様の方法および装置は、複数の共有キャッシュメモリの中から、ビクティムキャッシュとして使用するために、リモート共有キャッシュメモリを選択する回路および方法を提供する。態様方法は、複数の共有キャッシュメモリの中で、ビクティムキャッシュとして使用するために利用可能な空間を有するそれらのリモート共有キャッシュメモリを特定するステップと、特定されたリモート共有キャッシュメモリの各々、または特定されたリモート共有キャッシュメモリの各々に関連付けられたプロセッサクラスタについて、リモート共有キャッシュメモリをビクティムキャッシュとして選択するためのメトリックに関係するデータを取り出すステップと、メトリックに基づいて、ビクティムキャッシュとして使用するための特定されたリモート共有キャッシュメモリの各々の適切性を判定するステップと、判定に基づいてビクティムキャッシュとして使用するために、特定されたリモート共有キャッシュメモリのうちの1つを選択するステップとを含み得る。
【０００５】
一態様では、リモート共有キャッシュメモリをビクティムキャッシュとして選択するためのメトリックが、性能速度メトリックを含んでもよく、特定されたリモート共有キャッシュメモリの各々、または特定されたリモート共有キャッシュメモリの各々に関連付けられたプロセッサクラスタについて、リモート共有キャッシュメモリをビクティムキャッシュとして選択するためのメトリックに関係するデータを取り出すステップが、特定されたリモート共有キャッシュメモリのヒット率と、特定されたリモート共有キャッシュメモリのためのミス率と、プロセッサクラスタのレイテンシと、メインメモリのためのレイテンシとを取り出すステップを含んでもよく、メトリックに基づいて、ビクティムキャッシュとして使用するための特定されたリモート共有キャッシュメモリの各々の適切性を判定するステップが、特定されたリモート共有キャッシュメモリのための性能速度インジケータを計算するステップと、特定されたリモート共有キャッシュメモリのための性能速度インジケータを、しきい値または別の特定されたリモート共有キャッシュメモリのための別の性能速度インジケータと比較するステップとを含んでもよい。
【０００６】
態様方法は、アドレスインターリービング方式に基づいて、ビクティムキャッシュとして使用するために選択された別のリモート共有キャッシュメモリを用いて、ビクティムキャッシュとして使用するために選択された、特定されたリモート共有キャッシュメモリのメモリアドレスをインターリーブするステップをさらに含んでもよい。
【０００７】
一態様では、特定されたリモート共有キャッシュメモリのための性能速度インジケータを計算するステップが、特定されたリモート共有キャッシュメモリのヒット率にプロセッサクラスタのレイテンシを乗じたものに、特定されたリモート共有キャッシュメモリのミス率にメインメモリのレイテンシを乗じたものが追加されるもので表わされる式を使用するステップを含んでもよい。
【０００８】
一態様では、リモート共有キャッシュメモリをビクティムキャッシュとして選択するためのメトリックが、効率メトリックを含んでもよく、特定されたリモート共有キャッシュメモリの各々、または特定されたリモート共有キャッシュメモリの各々に関連付けられたプロセッサクラスタについて、リモート共有キャッシュメモリをビクティムキャッシュとして選択するためのメトリックに関係するデータを取り出すステップが、プロセッサクラスタの状態データを取り出すステップを含んでもよく、メトリックに基づいて、ビクティムキャッシュとして使用するための特定されたリモート共有キャッシュメモリの各々の適切性を判定するステップが、プロセッサクラスタの状態データを、しきい値または別のプロセッサクラスタの状態データと比較するステップを含んでもよい。
【０００９】
態様方法は、アドレスインターリービング方式に基づいて、ビクティムキャッシュとして使用するために選択された別のリモート共有キャッシュメモリを用いて、ビクティムキャッシュとして使用するために選択された、特定されたリモート共有キャッシュメモリのメモリアドレスをインターリーブするステップをさらに含んでもよい。
【００１０】
一態様では、プロセッサクラスタの状態データを取り出すステップが、温度、電流リーク、電力使用、または動作周波数のうちの少なくとも1つを取り出すステップを含んでもよい。
【００１１】
一態様では、リモート共有キャッシュメモリをビクティムキャッシュとして選択するためのメトリックが、有効ビクティムキャッシュサイズメトリックを含んでもよく、特定されたリモート共有キャッシュメモリの各々、または特定されたリモート共有キャッシュメモリの各々に関連付けられたプロセッサクラスタについて、リモート共有キャッシュメモリをビクティムキャッシュとして選択するためのメトリックに関係するデータを取り出すステップが、特定されたリモート共有キャッシュメモリの利用可能な共有キャッシュメモリサイズ、または特定されたリモート共有キャッシュメモリのためのメモリレイテンシのうちの少なくとも1つを取り出すステップを含んでもよく、メトリックに従って、ビクティムキャッシュとして使用するための特定されたリモート共有キャッシュメモリの各々の適切性を判定するステップが、特定されたリモート共有キャッシュメモリの利用可能な共有キャッシュメモリサイズ、または特定されたリモート共有キャッシュメモリのためのメモリレイテンシのうちの少なくとも1つを、しきい値または別の特定されたリモート共有キャッシュメモリのための同じタイプのデータと比較するステップを含んでもよく、態様方法は、アドレスインターリービング方式に基づいて、ビクティムキャッシュとして使用するために選択された別の利用可能な共有キャッシュメモリを用いて、ビクティムキャッシュとして使用するために選択された利用可能な共有キャッシュメモリのメモリアドレスをインターリーブするステップをさらに含んでもよい。
【００１２】
態様方法は、アドレスインターリービング方式に基づいて、ビクティムキャッシュとして使用するために選択された別のリモート共有キャッシュメモリを用いて、ビクティムキャッシュとして使用するために選択された、特定されたリモート共有キャッシュメモリのメモリアドレスをインターリーブするステップをさらに含んでもよい。
【００１３】
態様方法は、特定されたリモート共有キャッシュメモリと他のリモート共有キャッシュメモリとの間の利用可能な共有キャッシュメモリサイズの比、または特定されたリモート共有キャッシュメモリと他のリモート共有キャッシュメモリとの間のメモリレイテンシの比に基づいて、アドレスインターリービング方式を決定するステップであって、アドレスインターリービング方式は、任意のアドレスインターリービング方式、対称nウェイアドレスインターリービング方式、および非対称アドレスインターリービング方式のうちの1つを含む、ステップをさらに含んでもよい。
【００１４】
態様方法は、リモート共有キャッシュメモリをビクティムキャッシュとして選択するためのメトリックを決定するステップをさらに含んでもよい。
【００１５】
一態様は、コンピューティングデバイスを含み、コンピューティングデバイスは、互いに通信可能に接続された複数のプロセッサクラスタと、実行プロセスを割り当てられた、複数のプロセッサクラスタのうちの第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キャッシュメモリを選択することによって向上される場合がある。リモートL2キャッシュメモリは、リモートL2キャッシュメモリおよびメインメモリのアクセスに関するレイテンシ性能計算に基づいて選択されてもよい。態様は、アドレスインターリービングを使用して、L2キャッシュメモリの有効容量を増大させることによって、複数のL2キャッシュメモリの使用を向上させる場合がある。態様は、他のスレッドまたはプロセスを実行するプロセッサクラスタの様々な状態に基づいて、複数のL2キャッシュメモリを使用することによって、電力を節約する場合がある。態様は、1つまたは複数の他のプロセッサクラスタのL2キャッシュメモリを使用するビクティムキャッシュモードの有効性を向上させる場合がある。
【００２４】
一態様では、コンピューティングデバイスは、性能メトリックの組合せに基づいて、各L2キャッシュメモリの性能を決定してもよい。そのような性能メトリックは、成功するリモートL2キャッシュメモリアクセスによって調整されたレイテンシを含んでもよい。たとえば、リモートL2キャッシュメモリの性能は、リモートL2キャッシュメモリヒット率×クラスタレイテンシ+リモートL2キャッシュメモリミス率×メインメモリレイテンシの計算に基づいて決定されてもよい。リモートL2キャッシュメモリの不成功のアクセスのレイテンシと組み合わせられた、リモートL2キャッシュメモリの成功するアクセスのレイテンシは、リモートL2キャッシュメモリを使用するための全体的なレイテンシの性能評価を与えてもよい。リモートL2キャッシュメモリを使用するためのレイテンシが低いほど、別のプロセッサクラスタ上で実行されるプロセスをサポートするために、リモートL2キャッシュメモリをビクティムキャッシュとして使用することができる可能性が高い。
【００２５】
一態様では、複数のL2キャッシュメモリの使用を向上させるために、L2キャッシュメモリの有効容量とスループットとを増大させるために、アドレスインターリービングが使用されてもよい。連続するメモリアクセス要求が複数のリモートL2キャッシュメモリにわたって拡散され、それによってビクティムキャッシュスループットが向上されてもよいように、複数のリモートL2キャッシュの利用可能な部分が、インターリーブされてもよい。インターリービング方式は、任意の数のリモートL2キャッシュメモリを含んでもよい。インターリービング方式は、任意であるか、または利用可能なL2キャッシュメモリサイズに基づいてもよい。
【００２６】
一態様では、電力効率を向上させるために、複数のL2キャッシュメモリが、他のスレッドまたはプロセスを実行するプロセッサクラスタの様々な状態に基づいて使用されてもよい。より多くのキャッシュメモリリソースを使用することは、一般により多くの電力を使用することを意味する。複数のL2キャッシュメモリを使用する電力コストを低減するために、リモートL2キャッシュメモリのうちの1つまたは複数が、L2キャッシュメモリに関連付けられたプロセッサクラスタの温度、プロセッサクラスタのプロセッサの動作周波数、プロセッサクラスタの電力消費、および/またはプロセッサの電流リークに基づいて選択されてもよい。次いで、様々な状態のためのより低い値を有するプロセッサに関連付けられた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に示す(ならびに、図6〜図8、図13、および図15において後で説明する)例における、プロセッサクラスタ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を選択するために、様々な方法が採用されてもよい。
【００４７】
一態様では、プロセッサクラスタ402、404、406、408、およびそれらの関係する共有キャッシュメモリ452、454、456、458の各々の性能速度は、性能データの組合せに基づいて決定されてもよい。この性能速度は、利用可能な共有キャッシュメモリ460、462、464、466をビクティムキャッシュとして選択するために使用されてもよい。そのような性能データは、成功するリモート共有キャッシュメモリアクセスによって調整された、図5に示すメモリレイテンシのような、メモリレイテンシを含んでもよい。たとえば、リモート共有キャッシュメモリ452、454、456、458の性能速度は、リモート共有キャッシュメモリヒット率×プロセッサクラスタレイテンシ+リモート共有キャッシュメモリミス率×メインメモリレイテンシの計算に基づいて決定されてもよい。リモート共有キャッシュメモリ452、454、456、458の不成功のアクセスのレイテンシと組み合わせられた、リモート共有キャッシュメモリ452、454、456、458の成功するアクセスのレイテンシは、リモート共有キャッシュメモリ452、454、456、458を使用するための全体的なレイテンシ/性能速度の性能評価を与えてもよい。リモート共有キャッシュメモリ452、454、456、458を使用するための全体的なレイテンシが低いほど、実行プロセッサクラスタ400上で実行される実行プロセスをサポートするために、リモート共有キャッシュメモリ452、454、456、458がビクティムキャッシュとして使用されてもよい可能性が高い。リモート共有キャッシュメモリ452、454、456、458を使用するための性能速度は、しきい値に対して、または別のリモート共有キャッシュメモリ452、454、456、458を使用するための性能速度に対して比較されてもよい。一態様では、リモート共有キャッシュメモリヒット率、プロセッサクラスタレイテンシ、リモート共有キャッシュメモリミス率、および/またはメインメモリレイテンシは、時間期間にわたって測定され、履歴情報に基づいて計算され、かつ/またはストレージから取り出されてもよい。ストレージから取り出された性能データは、構成要素の設計および構築段階中に与えられるか、または記憶された、以前に測定された性能データであってもよい。
【００４８】
図6および図7は、プロセッサクラスタ402、404の各々のための利用可能な共有キャッシュメモリ460、462のレベルを含む複数のプロセッサクラスタ400、402、404を示す。利用可能な共有キャッシュメモリ460、462は、ビクティムキャッシュとして使用されるとき、有効ビクティムキャッシュサイズを増大するために、キャッシュメモリアドレスインターリービングとともに使用されてもよい。キャッシュメモリアドレスインターリービングは、利用可能な共有キャッシュメモリ460、462が単一のより大きいビクティムキャッシュとしてアクセスされてもよいように、リモート共有キャッシュメモリ452、454にわたって、利用可能な共有キャッシュメモリ460、462にアクセスするために使用されるメモリアドレスを拡散させてもよい。これによって、リモート共有キャッシュメモリ452、454に対する連続する要求の部分が、リモート共有キャッシュメモリ452、454のうちの1つがその連続する要求を完了するためにその要求の前の部分を完了することを待機しなければならなくなる可能性が低減される場合がある。キャッシュメモリアドレスインターリービングは、利用可能な共有キャッシュメモリを有する任意の数の複数の共有キャッシュメモリにわたって実装され得る。キャッシュメモリアドレスインターリービングのための方式は任意であってもよく、またはそれらの方式は、各利用可能な共有キャッシュメモリサイズおよび/または関連するプロセッサクラスタ上のアクティビティに基づいてもよい。これらの後者の方式は、nウェイ方式として知られている場合があり、ただし、nは、利用可能な共有キャッシュメモリがそれらに分割されるブロックの数を示し、nは2以上である。
【００４９】
プロセッサクラスタ402、404は、キャッシュメモリアドレスインターリービング方式について説明するための例として役立つ場合がある。図6の例は、利用可能な共有キャッシュメモリ460、462が等しいかまたはほぼ等しいサイズであることを示す。キャッシュメモリアドレスインターリービング方式の実装において、利用可能な共有キャッシュメモリ460、462の同様のサイズが、任意の方式を実装するために好適である。任意の方式では、キャッシュメモリアドレスは、希望されたデータを記憶するアドレスの上書きを回避すること以外にほとんど制御なしに、利用可能な共有キャッシュメモリ460、462にわたって拡散されてもよい(たとえば、置換方式は、記憶されたデータを置換できることをまだ示していない)。利用可能な共有キャッシュメモリ460、462の同様のサイズによって、2つの同様のサイズのブロックから作られた単一のビクティムキャッシュとして、利用可能な共有キャッシュメモリ460、462にアクセスすることができるので、利用可能な共有キャッシュメモリ460、462を単一のビクティムキャッシュとして管理しやすくなる。
【００５０】
図6の例を続けると、nウェイキャッシュメモリアドレスインターリービング方式もまた、同様のサイズの利用可能な共有キャッシュメモリ460、462に対して実装されてもよい。一態様では、nウェイ方式は、利用可能な共有キャッシュメモリ460、462の各々のサイズに基づいてもよい。このタイプのnウェイ方式(図7の例に関してさらに説明する)は、同様のサイズの利用可能な共有キャッシュメモリに適用されてもよいが、そのように行う利益は明白ではないので、その可能性は低い。
【００５１】
一態様では、nウェイ方式は、利用可能な共有キャッシュメモリ460、462に関係するプロセッサクラスタ402、404上のアクティビティに基づいてもよい。実行されているプロセスの需要など、様々な理由で、プロセッサクラスタ402、404は、アクティビティの同じレベルを有していない場合がある。プロセッサクラスタ402、404の間のアクティビティのレベルの差異は、より高いアクティビティレベルを有するプロセッサクラスタ、例のために、たとえばプロセッサクラスタ404など、より低いアクティビティレベルを有するプロセッサクラスタよりも、高いメモリレイテンシを有するプロセッサクラスタ402を生じる場合がある。利用可能な共有キャッシュメモリ460、462の間でメモリレイテンシにおいて差異があるとき、それらにわたってキャッシュメモリアドレスを均等にまたは任意に拡散させることで、実行プロセスを実行するための性能速度の低減が生じる場合がある。そのようなインターリービングは可能であり、有効ビクティムキャッシュサイズを増大させる場合があるが、効率的にそのように行わない場合がある。プロセッサクラスタ402、404上のアクティビティに基づいて、nウェイ方式に従って、利用可能な共有キャッシュメモリ460、462にわたってキャッシュメモリアドレスを拡散させることもまた、有効ビクティムキャッシュサイズを増大させ、より効率的にそのように行う場合がある。そのようなnウェイ方式では、nの値、および、利用可能な共有キャッシュメモリ460、462ごとのブロックの数の割振りは、プロセッサクラスタ402、404の間のメモリレイテンシの差異に基づいてもよい。言い換えれば、この例を続けると、プロセッサクラスタ402のためのメモリレイテンシが、プロセッサクラスタ404のためのメモリレイテンシに対して大きいほど、より頻繁に、利用可能な共有キャッシュメモリ462が、利用可能な共有キャッシュメモリ460よりも優先して使用されるべきである。一例では、より高い数がより高いアクティビティとより高いメモリレイテンシとを示す場合、プロセッサクラスタ402、404の間の7対2のアクティビティの比を仮定すると、nのための値は9であってもよく、逆の比の2対7は、キャッシュメモリアドレスを利用可能な共有キャッシュメモリ460、462に拡散させるために使用されてもよい。したがって、実行プロセスの実行中に、より低いアクティビティおよびメモリレイテンシと、ビクティムキャッシュのためのより高い数の拡散キャッシュメモリアドレスとを有する、利用可能な共有キャッシュメモリ462は、より頻繁にアクセスされてもよい。nのための値と、任意の数の利用可能な共有キャッシュメモリ空間にわたってアドレス指定される拡散キャッシュメモリのための比とをどのように決定するかを判断するための任意のアルゴリズムが、任意の数のプロセッサクラスタ上のアクティビティに基づいてnウェイ方式を実装するために使用されてもよい。
【００５２】
図7の例は、利用可能な共有キャッシュメモリ460、462が異なるサイズであることを示す。この例では、利用可能な共有キャッシュメモリ460は、利用可能な共有キャッシュメモリ462よりも小さい。任意のキャッシュメモリアドレスインターリービング方式は、図6に示す例に関する説明と同様に実装されてもよい。しかしながら、任意の方式は、サイズの差異のために、潜在的に不均一な分散が与えられると、キャッシュメモリアドレスのより少ない線形拡散を生じる場合がある。プロセッサクラスタ402、404上のアクティビティに基づくnウェイ方式もまた、図6に示す例に関する説明と同様に実装されてもよい。
【００５３】
利用可能な共有キャッシュメモリ460、462の各々のサイズに基づくnウェイキャッシュメモリアドレスインターリービング方式は、利用可能な共有キャッシュメモリ460、462が、図7に示す例のように、サイズが異なるときに実装されてもよい。利用可能な共有キャッシュメモリ460、462の間で利用可能な共有キャッシュメモリサイズにおいて差異があるとき、それらにわたってキャッシュメモリアドレスを均等にまたは任意に拡散させることで、実行プロセスを実行するための性能速度の低減が生じる場合がある。そのようなインターリービングは可能であり、有効ビクティムキャッシュサイズを増大させる場合があるが、効率的にそのように行わない場合がある。利用可能な共有キャッシュメモリサイズに基づいて、nウェイ方式に従って、利用可能な共有キャッシュメモリ460、462にわたってキャッシュメモリアドレスを拡散させることもまた、有効ビクティムキャッシュサイズを増大させ、より効率的にそのように行う場合がある。そのようなnウェイ方式では、nの値、および、利用可能な共有キャッシュメモリ460、462ごとのブロックの数の割振りは、プロセッサクラスタ402、404の間の利用可能な共有キャッシュメモリ空間の差異に基づいてもよい。言い換えれば、この例を続けると、プロセッサクラスタ404のための利用可能な共有キャッシュメモリ空間が、プロセッサクラスタ402に対して大きいほど、より頻繁に、利用可能な共有キャッシュメモリ462が、利用可能な共有キャッシュメモリ460よりも優先して使用されるべきである。一例では、より高い数がより大きい利用可能な空間を示す場合、利用可能な共有キャッシュメモリ460、462の間の1対2の利用可能な共有キャッシュメモリサイズの比を仮定すると、nのための値は3であってもよく、この比は、キャッシュメモリアドレスを利用可能な共有キャッシュメモリ460、462に拡散させるために使用されてもよい。したがって、実行プロセスの実行中に、より大きい利用可能な共有キャッシュメモリ空間と、ビクティムキャッシュのためのより高い数の拡散キャッシュメモリアドレスとを有する、利用可能な共有キャッシュメモリ462は、より頻繁にアクセスされてもよい。nのための値と、任意の数の利用可能な共有キャッシュメモリ空間にわたってアドレス指定される拡散キャッシュメモリのための比とをどのように決定するかを判断するための任意のアルゴリズムが、任意の数のプロセッサクラスタ上の利用可能な共有キャッシュメモリ空間に基づいてnウェイ方式を実装するために使用されてもよい。
【００５４】
nウェイ方式の基礎として、利用可能な共有キャッシュメモリのサイズと、プロセッサクラスタ上のアクティビティとの組合せを使用するためのアルゴリズムもまた考えられることに留意されたい。
【００５５】
図8は、スレッド、または実行プロセス以外のプロセスを実行する、プロセッサクラスタ402、404の様々な状態を示すデータ800、802を含む複数のプロセッサクラスタ400、402、404を示す。状態データ800、802は、プロセッサクラスタ402、404の各々の動作の効率を決定するために使用されてもよい。それらのそれぞれの効率に基づいてビクティムキャッシュを選択することで、実行プロセスを実行するときの電力使用を低減してもよい。状態データ800、802は、それぞれのプロセッサクラスタ402、404のための温度、電流リーク、電力使用、および/または動作周波数データを含んでもよい。状態データ800、802の各々は、プロセッサクラスタ402、404の効率を示すために使用されてもよい。概して、状態データ800、802の各々のためのより高い値は、状態データ800、802の各々のためのより低い値と比較して、プロセッサクラスタ402、404上でプロセスを実行するために、より多くの電力が使用されていることを示す。特定のプロセッサクラスタ402、404のための状態データ800、802のうちのいずれか1つまたは複数の値が低いほど、関連付けられた利用可能な共有キャッシュメモリ460、462が、実行プロセスのためのビクティムキャッシュとして使用される場合がある可能性が高い。ビクティムキャッシュとして使用されるべき利用可能な共有キャッシュメモリ460、462の決定は、プロセッサクラスタ402、404の効率を決定するために、状態データ800、802のいずれか1つまたは組合せを使用するアルゴリズムに基づいてもよい。プロセッサクラスタ402、404の効率は、しきい値に対して、または別のプロセッサクラスタ402、404の効率に対して比較されてもよい。一態様では、状態データ800、802は、時間期間にわたって測定され、履歴情報に基づいて計算され、かつ/またはストレージから取り出されてもよい。ストレージから取り出された状態データ800、802は、構成要素の設計および構築段階中に与えられるか、または記憶された、以前に測定された状態データ800、802であってもよい。
【００５６】
図9は、ビクティムキャッシュとしてのリモートの利用可能な共有キャッシュメモリの選択を実施するための態様方法900を示す。方法900は、ソフトウェア、プロセッサなどの汎用もしくは専用ハードウェア、またはソフトウェアとハードウェアとの組合せを使用する、コンピューティングデバイスにおいて実行されてもよい。ブロック902で、コンピューティングデバイスは、ビクティムキャッシュとして使用するための利用可能な共有キャッシュメモリ空間を有するリモート共有キャッシュメモリを特定してもよい。そのようなリモート共有キャッシュメモリの特定は、利用可能な共有キャッシュメモリ空間がリモート共有キャッシュメモリに関連付けられるか否か、またはどのくらい多くの利用可能な共有キャッシュメモリ空間がリモート共有キャッシュメモリに関連付けられるかについての、コンピューティングデバイスによる決定を含んでもよい。これは、プロセッサがリモート共有キャッシュメモリのヒットおよび/またはミス率を監視することによって、あるいは、そのような情報を保持するように構成される、テーブルなどのデータ構造内で利用可能なアドレス空間をチェックすることによって達成されてもよい。リモート共有キャッシュメモリがビクティムキャッシュとして使用するために適しているか否かは、共有キャッシュメモリ内で利用可能な空間の量がしきい値を超えるか否かに依存してもよい。
【００５７】
ブロック904で、コンピューティングデバイスは、それにおいてリモート共有キャッシュメモリをビクティムキャッシュとして選択するべきメトリックを決定してもよい。本明細書で説明するように、コンピューティングデバイスは、性能速度メトリック、効率メトリック、および/または有効ビクティムキャッシュサイズメトリックを考慮してもよい。一態様では、コンピューティングデバイスは、排他的に、または様々なファクタに基づいて、これらのメトリックのうちの1つまたは複数を使用するように事前プログラムされてもよい。一態様では、実行プロセスを含むソフトウェアを含んでもよい、コンピューティングデバイス上で実行するソフトウェアは、ビクティムキャッシュを決定するためにどのメトリックを使用するべきかについて、コンピューティングデバイスに命令してもよい。一態様では、コンピューティングデバイスは、実行プロセスのタイプおよび需要、ならびに/またはコンピューティングデバイスの状態を含むいくつかのファクタに基づいて、どのメトリックを使用するべきかを決定してもよい。
【００５８】
ブロック906で、コンピューティングデバイスは、決定されたメトリックに関係する、特定されたリモート共有キャッシュメモリおよび/または対応するプロセッサクラスタのためのデータを取り出してもよい。本明細書でさらに説明するように、メトリックの各々は、リモート共有キャッシュメモリがビクティムキャッシュとして使用するために選択されてもよいか否かを判定するための異なるデータの使用を伴ってもよい。たとえば、性能速度メトリックは、リモート共有キャッシュメモリにアクセスするための性能データを使用してもよく、効率メトリックは、リモート共有キャッシュメモリに関連付けられたプロセッサクラスタのための効率データを使用してもよく、有効ビクティムキャッシュサイズメトリックは、利用可能な共有キャッシュメモリ空間および/またはレイテンシデータを使用してもよい。
【００５９】
ブロック908で、コンピューティングデバイスは、決定されたメトリックに従って、どのリモート共有キャッシュメモリをビクティムキャッシュとして使用するべきかを決定してもよい。この決定は、特定されたリモート共有キャッシュメモリ、および/またはそれらの対応するプロセッサクラスタの取り出されたデータの比較において行われてもよい。一態様では、取り出されたデータの比較は、リモート共有キャッシュメモリをビクティムキャッシュとして選択または拒否するために、別のものの取り出されたデータに対する、またはしきい値との、あるリモート共有キャッシュメモリおよび/または対応するプロセッサクラスタの取り出されたデータの比較を含んでもよい。一態様では、あるリモート共有キャッシュメモリおよび/または対応するプロセッサクラスタの取り出されたデータの比較は、比較のための値を決定するために、取り出されたデータを使用する計算を含んでもよい。
【００６０】
ブロック910で、コンピューティングデバイスは、ビクティムキャッシュとして使用するためのリモート共有キャッシュメモリのうちの1つまたは複数を選択してもよい。ビクティムキャッシュとして使用するためのリモート共有キャッシュメモリの選択は、ブロック908における比較の好ましい結果から生じる場合がある。ブロック912で、コンピューティングデバイスは、選択されたリモート共有キャッシュメモリを、実行プロセッサクラスタによって実行される実行プロセスのためのビクティムキャッシュとして使用してもよい。
【００６１】
図10は、性能速度メトリックによる、ビクティムキャッシュとしての利用可能なリモート共有キャッシュメモリの選択を実施するための態様方法1000を示す。方法1000は、ソフトウェア、プロセッサなどの汎用もしくは専用ハードウェア、またはソフトウェアとハードウェアとの組合せを使用する、コンピューティングデバイスにおいて実行されてもよい。方法1000のブロックは、図9のブロック904、906、908、910のより詳細を提供する場合がある。ブロック1002で、コンピューティングデバイスは、ビクティムキャッシュが性能速度メトリックに基づいて選択されるべきであると決定してもよい。本明細書で説明するように、性能速度メトリックにおいてビクティムキャッシュを選択するための決定は、事前プログラムされてもよく、実行プロセスを含むソフトウェアを含んでもよいコンピューティングデバイス上で実行するソフトウェアからの命令によって与えられてもよく、かつ/あるいは、実行プロセスのタイプおよび需要、ならびに/またはコンピューティングデバイスの状態を含むいくつかのファクタに基づいてもよい。
【００６２】
ブロック1004で、コンピューティングデバイスは、性能速度に関係する、特定されたリモート共有キャッシュメモリおよび対応するプロセッサクラスタのためのデータを取り出してもよい。本明細書で説明するように、性能速度に関係するこのデータは、リモート共有キャッシュメモリヒット率と、プロセッサクラスタレイテンシと、リモート共有キャッシュメモリミス率と、メインメモリレイテンシとを含んでもよい。性能速度データを取り出すことは、時間期間にわたって性能速度データを測定すること、履歴情報に基づいて性能速度データを計算すること、および/または性能速度データをストレージから取り出すことを含んでもよい。
【００６３】
ブロック1006で、コンピューティングデバイスは、特定されたリモート共有キャッシュメモリのための性能速度インジケータを計算してもよい。性能速度インジケータは、特定されたリモート共有キャッシュメモリの性能速度レベルを特定するために使用されてもよい。態様では、性能速度インジケータを計算することは、次の式、リモート共有キャッシュメモリヒット率×プロセッサクラスタレイテンシ+リモート共有キャッシュメモリミス率×メインメモリレイテンシ、を実行することを伴ってもよい。性能速度インジケータは、特定されたリモート共有キャッシュメモリにアクセスする全体的なレイテンシを示してもよい。
【００６４】
ブロック1008で、コンピューティングデバイスは、特定されたリモート共有キャッシュメモリのための性能速度インジケータを比較してもよい。一態様では、この比較は、しきい値に対して実施されてもよい。一態様では、この比較は、別の特定されたリモート共有キャッシュメモリの性能速度インジケータに対して実施されてもよい。ブロック1010で、コンピューティングデバイスは、ビクティムキャッシュとして使用するために、ブロック1008における比較に基づいて、好ましい性能速度インジケータを有する1つまたは複数のリモート共有キャッシュメモリを選択してもよい。図12を参照しながらさらに詳細に説明するように、方法1000の一態様では、コンピューティングデバイスは、有効ビクティムキャッシュに関係する特定されたリモート共有キャッシュメモリのデータ、複数のリモート共有キャッシュメモリの性能速度、効率、および/またはサイズに基づいて、アドレスインターリービング方式を決定してもよい。実装するべきキャッシュメモリアドレスインターリービング方式に関する決定は、特定されたリモート共有キャッシュメモリの間の性能速度、効率、メモリレイテンシ、および/または利用可能な共有キャッシュメモリサイズの比に依存してもよい。コンピューティングデバイスは、キャッシュメモリアドレスインターリービング方式を、ブロック1010で選択された複数のリモート共有キャッシュメモリに適用してもよい。コンピューティングデバイスは、ブロック912で、選択されたリモート共有キャッシュメモリを、実行プロセッサクラスタによって実行される実行プロセスのためのビクティムキャッシュとして使用してもよい。
【００６５】
図11は、効率メトリックによる、ビクティムキャッシュとしての利用可能なリモート共有キャッシュメモリの選択を実施するための態様方法1100を示す。方法1100は、ソフトウェア、プロセッサなどの汎用もしくは専用ハードウェア、またはソフトウェアとハードウェアとの組合せを使用する、コンピューティングデバイスにおいて実行されてもよい。方法1100のブロックは、図9のブロック904、906、908、910のより詳細を提供する場合がある。ブロック1102で、コンピューティングデバイスは、ビクティムキャッシュが効率メトリックに基づいて選択されるべきであると決定してもよい。本明細書で説明するように、効率メトリックにおいてビクティムキャッシュを選択するための決定は、事前プログラムされてもよく、実行プロセスを含むソフトウェアを含んでもよいコンピューティングデバイス上で実行するソフトウェアからの命令によって与えられてもよく、かつ/あるいは、実行プロセスのタイプおよび需要、ならびに/またはコンピューティングデバイスの状態を含むいくつかのファクタに基づいてもよい。
【００６６】
ブロック1104で、コンピューティングデバイスは、効率に関係する特定されたリモート共有キャッシュメモリの対応するプロセッサクラスタのためのデータを取り出してもよい。本明細書で説明するように、効率に関係するこのデータは、温度、電流リーク、電力使用、および/または動作周波数を含むプロセッサクラスタの状態データを含んでもよい。状態データを取り出すことは、時間期間にわたって状態データを測定すること、履歴情報に基づいて状態データを計算すること、および/または状態データをストレージから取り出すことを含んでもよい。
【００６７】
ブロック1106で、コンピューティングデバイスは、特定されたリモート共有キャッシュメモリのための効率に関係するプロセッサクラスタの状態データを比較してもよい。状態データは、特定されたリモート共有キャッシュメモリと相関させられたプロセッサクラスタの効率レベルを特定するために使用されてもよい。一態様では、この比較は、しきい値に対して実施されてもよい。一態様では、特定されたリモート共有キャッシュメモリと相関させられたプロセッサクラスタの状態データのこの比較は、特定されたリモート共有キャッシュメモリと相関させられた別のプロセッサクラスタの状態データに対して実施されてもよい。ブロック1108で、コンピューティングデバイスは、ビクティムキャッシュとして使用するために、ブロック1106における比較に基づいて、好ましい性能効率データを有する1つまたは複数のプロセッサコアに対応する1つまたは複数のリモート共有キャッシュメモリを選択してもよい。
【００６８】
図12を参照しながらさらに詳細に説明するように、方法1100の一態様では、コンピューティングデバイスは、有効ビクティムキャッシュに関係する特定されたリモート共有キャッシュメモリのデータ、複数のリモート共有キャッシュメモリの性能速度、効率、および/またはサイズに基づいて、アドレスインターリービング方式を決定してもよい。実装するべきキャッシュメモリアドレスインターリービング方式に関する決定は、特定されたリモート共有キャッシュメモリの間の性能速度、効率、メモリレイテンシ、および/または利用可能な共有キャッシュメモリサイズの比に依存してもよい。コンピューティングデバイスは、キャッシュメモリアドレスインターリービング方式を、ブロック1106で選択された複数のリモート共有キャッシュメモリに適用してもよい。コンピューティングデバイスは、ブロック912で、選択されたリモート共有キャッシュメモリを、実行プロセッサクラスタによって実行される実行プロセスのためのビクティムキャッシュとして使用してもよい。
【００６９】
図12は、有効ビクティムキャッシュサイズメトリックによる、ビクティムキャッシュとしての利用可能なリモート共有キャッシュメモリの選択を実施するための態様方法1200を示す。方法1200は、ソフトウェア、プロセッサなどの汎用もしくは専用ハードウェア、またはソフトウェアとハードウェアとの組合せを使用する、コンピューティングデバイスにおいて実行されてもよい。方法1200のブロックは、図9のブロック904、906、908、910のより詳細を提供する場合がある。ブロック1202で、コンピューティングデバイスは、ビクティムキャッシュが有効ビクティムキャッシュサイズメトリックに基づいて選択されるべきであると決定してもよい。本明細書で説明するように、有効ビクティムキャッシュサイズメトリックにおいてビクティムキャッシュを選択するための決定は、事前プログラムされてもよく、実行プロセスを含むソフトウェアを含んでもよいコンピューティングデバイス上で実行するソフトウェアからの命令によって与えられてもよく、かつ/あるいは、実行プロセスのタイプおよび需要、ならびに/またはコンピューティングデバイスの状態を含むいくつかのファクタに基づいてもよい。
【００７０】
ブロック1204で、コンピューティングデバイスは、有効ビクティムキャッシュサイズに関係する特定されたリモート共有キャッシュメモリのためのデータを取り出してもよい。本明細書で説明するように、有効ビクティムキャッシュサイズに関係するこのデータは、特定されたリモート共有キャッシュメモリの利用可能な共有キャッシュメモリサイズ、および/または特定されたリモート共有キャッシュメモリのためのメモリレイテンシを含んでもよい。状態データを取り出すことは、時間期間にわたって状態データを測定すること、履歴情報に基づいて状態データを計算すること、および/または状態データをストレージから取り出すことを含んでもよい。ブロック1206で、コンピューティングデバイスは、有効ビクティムキャッシュサイズに関係する特定されたリモート共有キャッシュメモリのデータを比較してもよい。一態様では、この比較は、しきい値に対して実施されてもよい。一態様では、有効ビクティムキャッシュサイズに関係するある特定されたリモート共有キャッシュメモリのデータのこの比較は、有効ビクティムキャッシュサイズに関係する別の特定されたリモート共有キャッシュメモリのデータに対して実施されてもよい。
【００７１】
オプションのブロック1208で、コンピューティングデバイスは、有効ビクティムキャッシュサイズに関係する特定されたリモート共有キャッシュメモリのデータに基づいて、アドレスインターリービング方式を決定してもよい。一態様では、アドレスインターリービング方式は、任意またはnウェイの、対称または非対称のキャッシュメモリアドレスインターリービング方式を含んでもよい。任意のキャッシュメモリアドレスインターリービング方式は、制約がほとんどまたはまったくなしに、特定されたリモート共有キャッシュメモリに、ビクティムキャッシュのアドレスを割り当ててもよい。nウェイの対称キャッシュメモリアドレスインターリービング方式は、特定されたリモート共有キャッシュメモリの間の均一な分散に基づいて、特定されたリモート共有キャッシュメモリに、ビクティムキャッシュのアドレスを割り当ててもよい。nウェイの非対称キャッシュメモリアドレスインターリービング方式は、特定されたリモート共有キャッシュメモリの間の不均一な分散に基づいて、特定されたリモート共有キャッシュメモリに、ビクティムキャッシュのアドレスを割り当ててもよい。どのキャッシュメモリアドレスインターリービング方式を実装するべきかについての決定は、特定されたリモート共有キャッシュメモリの間の性能速度、効率、メモリレイテンシ、および/または利用可能な共有キャッシュメモリサイズの比に依存してもよい。
【００７２】
ブロック1210で、コンピューティングデバイスは、アドレスインターリービングとともにビクティムキャッシュとして使用するために、ブロック1206における比較に基づいて、好ましい有効ビクティムキャッシュサイズデータを有する1つまたは複数のリモート共有キャッシュメモリを選択してもよい。一態様では、キャッシュメモリアドレスインターリービング方式は、オプションのブロック1208で決定されてもよい。一態様では、キャッシュメモリアドレスインターリービング方式は、事前プログラムされてもよく、かつ/または、実行プロセスを含むソフトウェアを含んでもよいコンピューティングデバイス上で実行するソフトウェアからの命令によって与えられてもよい。コンピューティングデバイスは、ブロック912で、選択されたリモート共有キャッシュメモリを、実行プロセッサクラスタによって実行される実行プロセスのためのビクティムキャッシュとして使用してもよい。
【００７３】
(限定はしないが、図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  プロット点
800、802  データ、状態データ
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ディスクドライブ
【図１】
2018511105.tif 000003
【図２】
2018511105.tif 000004
【図３】
2018511105.tif 000005
【図４】
2018511105.tif 000006
【図５】
2018511105.tif 000007
【図６】
2018511105.tif 000008
【図７】
2018511105.tif 000009
【図８】
2018511105.tif 000010
【図９】
2018511105.tif 000011
【図１０】
2018511105.tif 000012
【図１１】
2018511105.tif 000013
【図１２】
2018511105.tif 000014
【図１３】
2018511105.tif 000015
【図１４】
2018511105.tif 000016
【図１５】
2018511105.tif 000017
【国際調査報告】
2018511105.tif 000018
2018511105.tif 000019