(57)【要約】  態様は、任意の数のプロセッサと、任意の数の電力領域と、任意の数のプロセッサキャッシュとを有する、コンピューティングデバイス上で、複数の分割スヌープディレクトリを実装するための、コンピューティングデバイス、装置、および装置によって実施される方法を含む。たとえば、様々な態様は、第1の電力領域のための第1の分割スヌープディレクトリと、第2の電力領域のための第2の分割スヌープディレクトリとを有効化することであって、第1の電力領域が、第1の複数のプロセッサキャッシュを含み、第2の電力領域が、少なくとも1つのプロセッサキャッシュを含む、有効化すること、第1の複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定すること、および、第1の複数のプロセッサキャッシュが低電力状態であるとの決定に応答して、第1の分割スヌープディレクトリを無効化することを含み得る。同様の動作が、N数の電力領域およびM数のプロセッサキャッシュについて実行され得る。
2019534501.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングデバイス上で複数の分割スヌープディレクトリを実装する方法であって、
第1の電力領域のための第1の分割スヌープディレクトリと、第2の電力領域のための第2の分割スヌープディレクトリとを有効化するステップであって、前記第1の電力領域が、複数のプロセッサキャッシュを含み、前記第2の電力領域が、少なくとも1つのプロセッサキャッシュを含む、ステップと、
前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定するステップと、
前記複数のプロセッサキャッシュのすべてが低電力状態であるとの決定に応答して、前記第1の分割スヌープディレクトリを無効化するステップと
を含む方法。
【請求項２】
前記複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための条件を検出するステップと、
前記少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための前記条件の検出に応答して、前記第1の分割スヌープディレクトリを低電力状態に変化させるための要求を送るステップと
をさらに含む、請求項1に記載の方法。
【請求項３】
前記第1の分割スヌープディレクトリを低電力状態に変化させるための前記要求を受信するステップをさらに含み、
前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定するステップが、前記第1の分割スヌープディレクトリを低電力状態に変化させるための前記要求の受信に応答して、前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定するステップを含む、請求項2に記載の方法。
【請求項４】
前記複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための条件を受信するステップをさらに含み、
前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定するステップが、前記少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための前記条件の検出に応答して、前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定するステップを含む、請求項1に記載の方法。
【請求項５】
前記複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための条件を受信するステップが、前記第1の電力領域から、前記複数のプロセッサキャッシュのうちの前記少なくとも1つのプロセッサキャッシュの電力状態を示す信号を受信するステップを含む、請求項4に記載の方法。
【請求項６】
前記複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュが高電力状態であるとの決定に応答して、前記第1の分割スヌープディレクトリを有効化されたままにするステップをさらに含む、請求項1に記載の方法。
【請求項７】
前記複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュを高電力状態に変化させるための条件を検出するステップと、
前記少なくとも1つのプロセッサキャッシュを高電力状態に変化させるための前記条件の検出と、前記複数のプロセッサキャッシュが低電力状態であるとの決定とに応答して、前記第1の分割スヌープディレクトリを有効化するステップと
をさらに含む、請求項1に記載の方法。
【請求項８】
低電力状態が、「OFF」状態および「RET」(保持)状態のうちの1つを含み、
高電力状態が、「ON」状態を含む、請求項7に記載の方法。
【請求項９】
N個の電力領域のためのN個の分割スヌープディレクトリと、M個の電力領域のためのM個の分割スヌープディレクトリとを有効化するステップであって、NおよびMが1よりも大きい整数であり、前記N個の電力領域が、N個の複数のプロセッサキャッシュを含み、前記M個の電力領域が、少なくとも1つのプロセッサキャッシュを含む、ステップと、
前記N個の複数のプロセッサキャッシュのいずれかがすべて低電力状態であるか否かを決定するステップと、
そのための前記複数のプロセッサキャッシュのすべてが低電力状態である、前記N個の分割スヌープディレクトリのいずれかを無効化するステップと
をさらに含む、請求項1に記載の方法。
【請求項１０】
複数の分割スヌープディレクトリを実装するように構成されたコンピューティングデバイスであって、
複数のプロセッサキャッシュを含む、第1の電力領域と、
少なくとも1つのプロセッサキャッシュを含む、第2の電力領域と、
前記第1の電力領域のための第1の分割スヌープディレクトリと、前記第2の電力領域のための第2の分割スヌープディレクトリとを有する、コヒーレント相互接続と、
前記第1の電力領域に通信可能に接続され、前記コヒーレント相互接続に通信可能に接続された、第1の処理デバイスと、
前記第2の電力領域に通信可能に接続され、前記コヒーレント相互接続に通信可能に接続された、第2の処理デバイスと
を備え、
前記第1の処理デバイスが、
前記第1の分割スヌープディレクトリを有効化すること、
前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定すること、および
前記複数のプロセッサキャッシュのすべてが低電力状態であるとの決定に応答して、前記第1の分割スヌープディレクトリを無効化すること
を含む動作を実行するように構成される、コンピューティングデバイス。
【請求項１１】
前記コンピューティングデバイスが、前記第1の電力領域に通信可能に接続され、前記第1の処理デバイスに通信可能に接続された、第3の処理デバイスをさらに備え、前記第3の処理デバイスが、
前記複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための条件を検出すること、および
前記少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための前記条件の検出に応答して、前記第1の分割スヌープディレクトリを低電力状態に変化させるための要求を、前記第1の処理デバイスに送ること
を含む動作を実行するように構成される、請求項10に記載のコンピューティングデバイス。
【請求項１２】
前記第1の処理デバイスが、前記第1の分割スヌープディレクトリを低電力状態に変化させるための前記要求を受信することをさらに含む、動作を実行するように構成され、
前記第1の処理デバイスが、前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定することが、前記第1の分割スヌープディレクトリを低電力状態に変化させるための前記要求の受信に応答して、前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定することを含むように、動作を実行するように構成される、請求項11に記載のコンピューティングデバイス。
【請求項１３】
前記第1の処理デバイスが、前記複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための条件を受信することをさらに含む、動作を実行するように構成され、
前記第1の処理デバイスが、前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定することが、前記少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための前記条件の検出に応答して、前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定することを含むように、動作を実行するように構成される、請求項10に記載のコンピューティングデバイス。
【請求項１４】
前記第1の処理デバイスが、前記複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための条件を受信することが、前記第1の電力領域から、前記複数のプロセッサキャッシュのうちの前記少なくとも1つのプロセッサキャッシュの電力状態を示す信号を受信することを含むように、動作を実行するように構成される、請求項13に記載のコンピューティングデバイス。
【請求項１５】
前記第1の処理デバイスが、前記複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュが高電力状態であるとの決定に応答して、前記第1の分割スヌープディレクトリを有効化されたままにすることをさらに含む、動作を実行するように構成される、請求項10に記載のコンピューティングデバイス。
【請求項１６】
前記コンピューティングデバイスが、前記第1の電力領域に通信可能に接続され、前記第1の処理デバイスに通信可能に接続された、第3の処理デバイスをさらに備え、前記第3の処理デバイスが、前記複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュを高電力状態に変化させるための条件を検出することを含む、動作を実行するように構成され、
前記第1の処理デバイスが、前記第3の処理デバイスによる、前記少なくとも1つのプロセッサキャッシュを高電力状態に変化させるための前記条件の検出と、前記複数のプロセッサキャッシュが低電力状態であるとの決定とに応答して、前記第1の分割スヌープディレクトリを有効化することをさらに含む、動作を実行するように構成される、請求項10に記載のコンピューティングデバイス。
【請求項１７】
低電力状態が、「OFF」状態および「RET」(保持)状態のうちの1つを含み、
高電力状態が、「ON」状態を含む、請求項16に記載のコンピューティングデバイス。
【請求項１８】
前記第1の処理デバイスおよび前記第3の処理デバイスが、同じ処理デバイスである、請求項16に記載のコンピューティングデバイス。
【請求項１９】
前記コンピューティングデバイスが、
複数のプロセッサキャッシュを含む、N個の電力領域と、
少なくとも1つのプロセッサキャッシュを含む、M個の電力領域と
をさらに備え、
前記第1の処理デバイスが、
N個の電力領域のためのN個の分割スヌープディレクトリと、M個の電力領域のためのM個の分割スヌープディレクトリとを有効化することであって、NおよびMが1よりも大きい整数である、有効化すること、
前記N個の複数のプロセッサキャッシュのいずれかがすべて低電力状態であるか否かを決定すること、および
そのための前記複数のプロセッサキャッシュのすべてが低電力状態である、前記N個の分割スヌープディレクトリのいずれかを無効化すること
をさらに含む、動作を実行するように構成される、請求項10に記載のコンピューティングデバイス。
【請求項２０】
複数の分割スヌープディレクトリを実装するように構成されたコンピューティングデバイスであって、
第1の電力領域のための第1の分割スヌープディレクトリと、第2の電力領域のための第2の分割スヌープディレクトリとを有効化するための手段であって、前記第1の電力領域が、複数のプロセッサキャッシュを含み、前記第2の電力領域が、少なくとも1つのプロセッサキャッシュを含む、手段と、
前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定するための手段と、
前記複数のプロセッサキャッシュのすべてが低電力状態であるとの決定に応答して、前記第1の分割スヌープディレクトリを無効化するための手段と
を備える、コンピューティングデバイス。
【請求項２１】
前記複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための条件を検出するための手段と、
前記少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための前記条件の検出に応答して、前記第1の分割スヌープディレクトリを低電力状態に変化させるための要求を送るための手段と
をさらに備える、請求項20に記載のコンピューティングデバイス。
【請求項２２】
前記コンピューティングデバイスが、前記第1の分割スヌープディレクトリを低電力状態に変化させるための前記要求を受信するための手段をさらに備え、
前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定するための手段が、前記第1の分割スヌープディレクトリを低電力状態に変化させるための前記要求の受信に応答して、前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定するための手段を備える、請求項21に記載のコンピューティングデバイス。
【請求項２３】
前記コンピューティングデバイスが、前記複数の共有キャッシュのうちの少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための条件を受信するための手段をさらに備え、
前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定するための手段が、前記少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための前記条件の検出に応答して、前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定するための手段を備える、請求項20に記載のコンピューティングデバイス。
【請求項２４】
前記複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための条件を受信するための手段が、前記第1の電力領域から、前記少なくとも1つのプロセッサキャッシュの電力状態を示す信号を受信するための手段を備える、請求項23に記載のコンピューティングデバイス。
【請求項２５】
前記複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュが高電力状態であるとの決定に応答して、前記第1の分割スヌープディレクトリを有効化されたままにするための手段をさらに備える、請求項20に記載のコンピューティングデバイス。
【請求項２６】
前記複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュを高電力状態に変化させるための条件を検出するための手段と、
前記少なくとも1つのプロセッサキャッシュを高電力状態に変化させるための前記条件の検出と、前記複数のプロセッサキャッシュが低電力状態であるとの決定とに応答して、前記第1の分割スヌープディレクトリを有効化するための手段と
をさらに備える、請求項25に記載のコンピューティングデバイス。
【請求項２７】
低電力状態が、「OFF」状態および「RET」(保持)状態のうちの1つを含み、
高電力状態が、「ON」状態を含む、請求項26に記載のコンピューティングデバイス。
【請求項２８】
N個の電力領域のためのN個の分割スヌープディレクトリと、M個の電力領域のためのM個の分割スヌープディレクトリとを有効化するための手段であって、NおよびMが1よりも大きい整数であり、前記N個の電力領域が、N個の複数のプロセッサキャッシュを含み、前記M個の電力領域が、少なくとも1つのプロセッサキャッシュを含む、手段と、
前記N個の複数のプロセッサキャッシュのいずれかがすべて低電力状態であるか否かを決定するための手段と、
そのための前記複数のプロセッサキャッシュのすべてが低電力状態である、前記N個の分割スヌープディレクトリのいずれかを無効化するための手段と
をさらに備える、請求項20に記載のコンピューティングデバイス。
【請求項２９】
コンピューティングデバイスのプロセッサに動作を実行させるように構成されたプロセッサ実行可能命令を記憶した非一時的プロセッサ可読記憶媒体であって、前記動作が、
第1の電力領域のための第1の分割スヌープディレクトリと、第2の電力領域のための第2の分割スヌープディレクトリとを有効化することであって、前記第1の電力領域が、複数のプロセッサキャッシュを含み、前記第2の電力領域が、少なくとも1つのプロセッサキャッシュを含む、有効化すること、
前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定すること、および
前記複数のプロセッサキャッシュのすべてが低電力状態であるとの決定に応答して、前記第1の分割スヌープディレクトリを無効化すること
を含む、非一時的プロセッサ可読記憶媒体。
【請求項３０】
前記記憶されたプロセッサ実行可能命令が、前記プロセッサに、
前記複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための条件を検出すること、
前記少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための前記条件の検出に応答して、前記第1の分割スヌープディレクトリを低電力状態に変化させるための要求を送ること、および
前記第1の分割スヌープディレクトリを低電力状態に変化させるための前記要求を受信すること
をさらに含む、動作を実行させるように構成され、
前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定することが、前記第1の分割スヌープディレクトリを低電力状態に変化させるための前記要求の受信に応答して、前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定することを含む、請求項29に記載の非一時的プロセッサ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェア制御分割スヌープディレクトリを使用するコヒーレント相互接続電力低減に関する。
【背景技術】
【０００２】
スヌープディレクトリは、コヒーレントマルチ中央処理ユニット(CPU)クラスタシステムの性能を高めるために役立つ。スヌープディレクトリは、利用可能なCPUスヌープ帯域幅または周波数とは無関係のスヌープミス帯域幅を増大させ、スヌープされたCPUにおける性能劣化を低減し、メモリへの構造的なレイテンシを低減し、スヌープミスのための電力消費を低減することができる。しかしながら、上記の利益を達成するために、既存のスヌープディレクトリアーキテクチャは、大量のメモリを使用する、高い動的エネルギー消費を有する、かつ/または不十分な電力スケーラビリティを有するという、競合する欠点の間で妥協しなければならない。これらの欠点は、部分的には、スヌープディレクトリをポピュレートし、メモリロケーションのCPU使用を示す、タグの結果である。これらのタグは、特により低い技術ノードにおいて、著しい電力を消費する、高速スタティックランダムアクセスメモリ(SRAM)マクロを必要とする。
【発明の概要】
【課題を解決するための手段】
【０００３】
様々な開示する態様は、コンピューティングデバイス上で複数の分割スヌープディレクトリを実装するための装置および方法を含み得る。様々な実施形態は、第1の電力領域のための第1の分割スヌープディレクトリと、第2の電力領域のための第2の分割スヌープディレクトリとを有効化することを含み得、第1の電力領域が、複数のプロセッサキャッシュを含み得、第2の電力領域が、少なくとも1つのプロセッサキャッシュを含み得る。いくつかの実施形態は、複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定すること、および、複数のプロセッサキャッシュのすべてが低電力状態であるとの決定に応答して、第1の分割スヌープディレクトリを無効化することをさらに含み得る。
【０００４】
いくつかの実施形態は、複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための条件を検出すること、および、少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための条件の検出に応答して、第1の分割スヌープディレクトリを低電力状態に変化させるための要求を送ることをさらに含み得る。
【０００５】
いくつかの実施形態は、第1の分割スヌープディレクトリを低電力状態に変化させるための要求を受信することをさらに含み得、複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定することが、第1の分割スヌープディレクトリを低電力状態に変化させるための要求の受信に応答して、複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定することを含み得る。
【０００６】
いくつかの実施形態は、複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための条件を受信することをさらに含み得、複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定することが、少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための条件の検出に応答して、複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定することを含み得る。
【０００７】
いくつかの実施形態では、複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための条件を受信することが、第1の電力領域から、複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュの電力状態を示す信号を受信することを含み得る。
【０００８】
いくつかの実施形態は、複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュが高電力状態であるとの決定に応答して、第1の分割スヌープディレクトリを有効化されたままにすることをさらに含み得る。
【０００９】
いくつかの実施形態は、複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュを高電力状態に変化させるための条件を検出すること、および、少なくとも1つのプロセッサキャッシュを高電力状態に変化させるための条件の検出と、複数のプロセッサキャッシュが低電力状態であるとの決定とに応答して、第1の分割スヌープディレクトリを有効化することをさらに含み得る。
【００１０】
いくつかの実施形態では、低電力状態が、「OFF」状態および「RET」(保持)状態のうちの1つを含み得、高電力状態が、「ON」状態を含み得る。
【００１１】
いくつかの実施形態は、N個の電力領域のためのN個の分割スヌープディレクトリと、M個の電力領域のためのM個の分割スヌープディレクトリとを有効化することをさらに含み得、NおよびMが1よりも大きい整数であり得、N個の電力領域が、N個の複数のプロセッサキャッシュを含み得、M個の電力領域が、少なくとも1つのプロセッサキャッシュを含み得る。いくつかの実施形態は、N個の複数のプロセッサキャッシュのいずれかがすべて低電力状態であるか否かを決定すること、および、そのための複数のプロセッサキャッシュのすべてが低電力状態である、N個の分割スヌープディレクトリのいずれかを無効化することをさらに含み得る。
【００１２】
様々な実施形態は、複数の分割スヌープディレクトリを実装するように構成されたコンピューティングデバイスを含み得る。コンピューティングデバイスは、複数のプロセッサキャッシュを含む、第1の電力領域と、少なくとも1つのプロセッサキャッシュを含む、第2の電力領域と、第1の電力領域のための第1の分割スヌープディレクトリと、第2の電力領域のための第2の分割スヌープディレクトリとを有する、コヒーレント相互接続と、第1の電力領域に通信可能に接続され、コヒーレント相互接続に通信可能に接続された、第1の処理デバイスとを含み得る。第1の処理デバイスは、上記で要約した実施形態方法の動作を実行するように構成され得る。
【００１３】
様々な実施形態は、複数の分割スヌープディレクトリを実装するように構成されたコンピューティングデバイスであって、上記で要約した実施形態方法の機能を実行するための手段を有する、コンピューティングデバイスを含み得る。
【００１４】
様々な実施形態は、上記で要約した実施形態方法の動作をコンピューティングデバイスのプロセッサに実行させるように構成されたプロセッサ実行可能命令を記憶した非一時的プロセッサ可読記憶媒体を含み得る。
【００１５】
本明細書に組み込まれ、本明細書の一部を構成する添付の図面は、様々な態様のうちの例示的な態様を示し、上記の一般的な説明および下記の発明を実施するための形態とともに、特許請求の範囲の特徴について説明するのに役立つ。
【図面の簡単な説明】
【００１６】
【図１】一態様を実装するのに好適なコンピューティングデバイスを示す構成要素ブロック図である。
【図２】一態様を実装するのに好適な例示的なマルチコアプロセッサを示す構成要素ブロック図である。
【図３】一態様を実装するのに好適な、複数の電力領域のための分割スヌープディレクトリシステムの一例を示すブロック図である。
【図４】一態様を実装するのに好適な、複数の電力領域のための分割スヌープディレクトリシステムの一例を示すブロック図である。
【図５】一態様を実装するのに好適な、マルチコアプロセッサ状態シグナリングを用いる複数の電力領域のための分割スヌープディレクトリシステムの一例を示すブロック図である。
【図６】一態様を実装するのに好適な、電力領域のための例示的な電力状態テーブルを示すテーブルである。
【図７】一態様による複数の電力領域のための分割スヌープディレクトリを実装するための方法を示すプロセスフロー図である。
【図８】一態様による複数の電力領域のための分割スヌープディレクトリ電源投入および有効化を実施するための方法を示すプロセスフロー図である。
【図９】一態様による複数の電力領域のための分割スヌープディレクトリ電源投入を実施するための方法を示すプロセスフロー図である。
【図１０】一態様による複数の電力領域のための分割スヌープディレクトリ有効化を実施するための方法を示すプロセスフロー図である。
【図１１】一態様による複数の電力領域のための分割スヌープディレクトリ無効化を実施するための方法を示すプロセスフロー図である。
【図１２】一態様による複数の電力領域のための分割スヌープディレクトリ無効化を実施するための方法を示すプロセスフロー図である。
【図１３】一態様によるマルチコアプロセッサ状態シグナリングを用いて、複数の電力領域のための分割スヌープディレクトリ電源投入および有効化を実施するための方法を示すプロセスフロー図である。
【図１４】一態様によるマルチコアプロセッサ状態シグナリングを用いて、複数の電力領域のための分割スヌープディレクトリ無効化を実施するための方法を示すプロセスフロー図である。
【図１５】一態様による複数の電力領域のための分割スヌープディレクトリを実装するための方法を示すプロセスフロー図である。
【図１６】様々な態様とともに使用するのに好適な例示的なモバイルコンピューティングデバイスを示す構成要素ブロック図である。
【図１７】様々な態様とともに使用するのに好適な例示的なモバイルコンピューティングデバイスを示す構成要素ブロック図である。
【図１８】様々な態様とともに使用するのに好適な例示的なサーバを示す構成要素ブロック図である。
【発明を実施するための形態】
【００１７】
添付の図面を参照しながら、様々な態様について詳細に説明する。可能な場合はいつでも、同じまたは同様の部分を指すために、図面全体にわたって同じ参照番号が使用される。特定の例および実装形態に対してなされる参照は、説明が目的であり、特許請求の範囲を限定することを意図していない。
【００１８】
様々な態様は、中央処理ユニット(CPU)など、複数のプロセッサを有する電力領域のための分割スヌープディレクトリアーキテクチャを使用する、スヌープディレクトリの電力制御を実施するための方法、ならびにそのような方法を実施するシステムおよびデバイスを含み得る。複数のプロセッサは、マルチコアプロセッサであり得る。様々な態様の装置および方法は、分割スヌープディレクトリアーキテクチャを有する様々なスヌープディレクトリのための、電力領域電力状態を監視し、分割スヌープディレクトリ電力状態を制御するための、分割スヌープディレクトリ電力制御ハードウェアを含み得る。
【００１９】
「コンピューティングデバイス」および「モバイルコンピューティングデバイス」という用語は、セルラー電話、スマートフォン、パーソナルまたはモバイルマルチメディアプレーヤ、携帯情報端末(PDA)、ラップトップコンピュータ、タブレットコンピュータ、コンバーチブルラップトップ/タブレット(2-in-1コンピュータ)、スマートブック、ウルトラブック、ネットブロック、パームトップコンピュータ、ワイヤレス電子メール受信機、マルチメディアインターネット対応セルラー電話、モバイルゲームコンソール、ワイヤレスゲームコントローラ、ならびに、メモリおよびプログラマブルプロセッサを含む同様のパーソナル電子デバイスのうちのいずれか1つまたはすべてを指すために本明細書において互換的に使用される。「コンピューティングデバイス」という用語はさらに、パーソナルコンピュータを含む据置型コンピューティングデバイス、デスクトップコンピュータ、オールインワンコンピュータ、ワークステーション、スーパーコンピュータ、メインフレームコンピュータ、組込み型コンピュータ、サーバ、ホームシアターコンピュータ、およびゲームコンソールを指す場合がある。
【００２０】
現実的なモバイルデバイス/スマートフォン使用事例は、高性能マルチコアCPUが、典型的な1日における時間の10%未満にアクティブであり得ることを示している。高性能マルチコアCPUはまた、最大のキャッシュを有することもあり、それによって、共通タグまたは統計的タグ手法など、最も普及しているスヌープディレクトリアーキテクチャの一部が、実際の使用事例において極めて電力非効率的になる。これらのスヌープディレクトリアーキテクチャは、変動する性能レベルのマルチコアプロセッサの組合せを含む、複数のマルチコアプロセッサにサービスし得る。任意の時間に、スヌープディレクトリによってサービスされるマルチコアプロセッサのうちの1つまたは複数が非アクティブであり得るが、同じスヌープディレクトリによってサービスされるマルチコアプロセッサのうちの少なくとも1つがアクティブであり得る。サービスされるマルチコアプロセッサのうちのいずれかがアクティブである間、サービスするスヌープディレクトリは、電源切断されたマルチコアプロセッサのためのエネルギーを節約するために、電源切断されないことがあり、その理由は、スヌープディレクトリが、アクティブなマルチコアプロセッサにサービスすることが可能でないことがあるからである。したがって、複数のマルチコアプロセッサにサービスするスヌープディレクトリアーキテクチャは、電力スケーリングが困難であり得る。重複タグ手法など、個々のマルチコアプロセッサにサービスするスヌープディレクトリアーキテクチャは、より容易に電力スケーラブルであり得、その理由は、各スヌープディレクトリが、サービスされるマルチコアプロセッサとともに電源切断され得るからである。しかしながら、マルチコアプロセッサとスヌープディレクトリとの間の1対1の関係は、極めてメモリおよび電力集中的であり得る。
【００２１】
分割スヌープディレクトリアーキテクチャは、本明細書では分割スヌープディレクトリと呼ばれる、複数のスヌープディレクトリを組み合わせ得る。各分割スヌープディレクトリは、マルチコアプロセッサのうちの1つまたは複数-しかし、総数よりも少ない-にサービスするために割り振られ得る。マルチコアプロセッサは、電力消費の一般的なレベルおよび時間を含む、電力消費の一般的な特性に基づいて、電力領域に分割され得る。一例では、標準のマルチコアCPUよりも頻繁に電源切断される高性能マルチコアCPUは、その高性能マルチコアCPUのみに、または複数の高性能マルチコアCPUに割り振られた第1の分割スヌープディレクトリによってサービスされ得る。同じ例では、複数の標準のマルチコアCPUは、第2の分割スヌープディレクトリによってサービスされ得る。複数のマルチコアプロセッサをもつ第1の電力領域にサービスする分割スヌープディレクトリは、共通タグまたは統計的タグ手法を使用し得るが、ただ1つのマルチコアプロセッサを有する第2の電力領域にサービスする分割スヌープディレクトリは、重複タグ、共通タグ、または統計的タグ手法を使用し得る。一例では、コンピューティングデバイスの各マルチコアプロセッサまたはマルチコアプロセッサのグループは、共通タグ手法を使用して、それ自体の割り振られた分割スヌープディレクトリによってサービスされた、それ自体の電力領域であり得る。
【００２２】
分割スヌープディレクトリは、マルチコアプロセッサ電力状態に基づいて、電力をスケーリングするための能力を有効化し得る。いくつかの態様では、1つの分割スヌープディレクトリは、標準の性能のマルチコアCPUのように、1つまたは複数の電力効率的なマルチコアプロセッサを有する電力効率的な電力領域のために使用され得、1つの分割スヌープディレクトリは、高性能マルチコアCPUのように、1つまたは複数の性能マルチコアプロセッサを有する性能電力領域のために使用され得る。包含的L2キャッシュでは、単一の分割スヌープディレクトリが使用され得る。排他的L2キャッシュでは、重複タグオプションと共通タグオプションの両方が利用可能であり得る。いくつかの態様では、共通タグ手法は、分割スヌープディレクトリが、特にマルチコアプロセッサの包含的L2キャッシュのための、分割スヌープディレクトリの簡単なサイズ決定を提供するために、および、重複タグ手法と比較して、低減された数のSRAMマクロを提供するために使用され得る。
【００２３】
分割スヌープディレクトリ電力状態は、ハードウェアによって電力領域電力状態に結び付けられ、電力領域電力状態がソフトウェアにとって透過的にされ得る。電力領域電力状態は、電力領域のマルチコアプロセッサのすべての電力状態を含み得る。電力領域が低電力状態であるとき、電力領域のマルチコアプロセッサのすべてもまた、低電力状態であり得る。
【００２４】
様々なマルチコアプロセッサアーキテクチャは、電力状態を異なるように管理する。たとえば、第1のマルチコアプロセッサアーキテクチャは、その電力状態のいかなる外的な指示も与えないことがあり、第2のマルチコアプロセッサアーキテクチャは、その電力状態を示す信号を与え得る。第1のマルチコアプロセッサアーキテクチャでは、異なるタイプの第1のマルチコアプロセッサアーキテクチャが、あるタイプの第1のマルチコアプロセッサアーキテクチャの指定された第1のマルチコアプロセッサが低電力状態であり得るか否かを検出するように、ハードウェア実装電力領域低電力モニタが構成され得る。電力領域低電力モニタは、電力ドロー、温度、マルチコアプロセッサがその電力状態を示していないときのマルチコアプロセッサ電力制御ユニット、および/または、指定された第1のマルチコアプロセッサの入出力アクティビティを監視して、第1のマルチコアプロセッサの電力状態を決定し得る。電力領域が低電力状態であるとの決定に応答して、電力領域低電力モニタは、電力領域の割り振られた分割スヌープディレクトリを電源切断するように、分割スヌープディレクトリ電力コントローラにシグナリングし得る。同様に、電力領域低電力モニタは、第1のマルチコアプロセッサがアクティブ状態に遷移する(すなわち、電力領域において変化がある)ときを検出し、それに応答して、電力領域の割り振られた分割スヌープディレクトリをアクティブ化するように、分割スヌープディレクトリ電力コントローラにシグナリングし得る。
【００２５】
別の例として、第2のマルチコアプロセッサアーキテクチャでは、異なるタイプの第2のマルチコアプロセッサアーキテクチャが、指定された第2のマルチコアプロセッサが低電力状態であるか否かを示す、その第2のマルチコアプロセッサからの信号を受信するように、分割スヌープディレクトリ電力コントローラが構成され得る。低電力状態であるか否かを示す、第2のマルチコアプロセッサからの信号に基づいて、分割スヌープディレクトリ電力コントローラは、電力領域が低電力状態であるか否かを決定し、電力領域が低電力状態であるとの決定に応答して、第2のマルチコアプロセッサの割り振られた分割スヌープディレクトリを電源切断し得る。同様に、分割スヌープディレクトリ電力コントローラは、指定された第2のマルチコアプロセッサからの信号を受信し、それらの信号から、アクティブ状態であるか否かを決定し、それに応答して、電力領域の割り振られた分割スヌープディレクトリをアクティブ化し得る。
【００２６】
図1は、様々な態様とともに使用するのに好適なコンピューティングデバイス10を含むシステムを示す。コンピューティングデバイス10は、プロセッサ14と、メモリ16と、通信インターフェース18と、ストレージメモリインターフェース20とを伴う、システムオンチップ(SoC)12を含み得る。コンピューティングデバイス10は、ワイヤードまたはワイヤレスモデムなどの通信構成要素22と、ストレージメモリ24と、ワイヤレス通信リンクを確立するためのアンテナ26とをさらに含み得る。プロセッサ14は、様々な処理デバイスのいずれか、たとえば、いくつかのプロセッサコアを含んでよい。
【００２７】
「システムオンチップ」(SoC)という用語は、通常、限定はしないが、処理デバイス、メモリ、および通信インターフェースを含む相互接続された電子回路のセットを指すために本明細書において使用される。処理デバイスは、汎用プロセッサ、中央処理ユニット(CPU)、デジタル信号プロセッサ(DSP)、グラフィクス処理ユニット(GPU)、加速処理ユニット(APU)、補助プロセッサ、シングルコアプロセッサ、およびマルチコアプロセッサなど、様々な異なるタイプのプロセッサ14およびプロセッサコアを含み得る。処理デバイスはさらに、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、他のプログラマブル論理デバイス、個別ゲート論理、トランジスタ論理、性能監視ハードウェア、ウォッチドッグハードウェア、および時間基準などの、他のハードウェアおよびハードウェアの組合せを具現化し得る。集積回路は、集積回路の構成要素がシリコンなどの単体の半導体材料上に存在するように構成され得る。
【００２８】
SoC12は、1つまたは複数のプロセッサ14を含み得る。コンピューティングデバイス10は、2つ以上のSoC12を含み、それによって、プロセッサ14およびプロセッサコアの数を増やすことができる。コンピューティングデバイス10はまた、SoC12に関連付けられていないプロセッサ14を含み得る。個々のプロセッサ14は、図2を参照して以下で説明するようなマルチコアプロセッサであり得る。プロセッサ14は各々、コンピューティングデバイス10の他のプロセッサ14と同じであっても異なっていてもよい特定の目的のために構成され得る。同じまたは異なる構成のプロセッサ14およびプロセッサコアのうちの1つまたは複数は、一緒にグループ化され得る。プロセッサ14またはプロセッサコアのグループは、マルチプロセッサクラスタと呼ばれ得る。
【００２９】
SoC12のメモリ16は、プロセッサ14によるアクセスのためにデータおよびプロセッサ実行可能コードを記憶するために構成された、揮発性または不揮発性のメモリであり得る。コンピューティングデバイス10および/またはSoC12は、様々な目的のために構成された1つまたは複数のメモリ16を含み得る。1つまたは複数のメモリ16は、ランダムアクセスメモリ(RAM)もしくはメインメモリ、またはキャッシュメモリなど、揮発性メモリを含んでもよい。これらのメモリ16は、データセンサまたはサブシステムから受信された限られた量のデータ、不揮発性メモリに対して要求され、様々なファクタに基づいて将来アクセスされることを予期して不揮発性メモリからメモリ16にロードされるデータおよび/またはプロセッサ実行可能コード命令、ならびに/あるいは、プロセッサ14によって生成され、不揮発性メモリには記憶されずに将来迅速にアクセスできるように一時的に記憶される中間処理データおよび/またはプロセッサ実行可能コード命令を一時的に保持するように構成され得る。
【００３０】
メモリ16は、プロセッサ14のうちの1つまたは複数によるアクセスのために、別のメモリ16またはストレージメモリ24などの、別のメモリデバイスからメモリ16にロードされるデータおよびプロセッサ実行可能コードを、少なくとも一時的に記憶するように構成され得る。メモリ16にロードされたデータまたはプロセッサ実行可能コードは、プロセッサ14による機能の実行に応答してロードされ得る。機能の実行に応答してデータまたはプロセッサ実行可能コードをメモリ16にロードすることは、要求されたデータまたはプロセッサ実行可能コードがメモリ16の中にないことが原因で不成功またはミスであるメモリ16へのメモリアクセス要求から生じ得る。ミスに応答して、要求されたデータまたはプロセッサ実行可能コードを他のメモリ16またはストレージメモリ24からメモリデバイス16にロードするために、別のメモリ16またはストレージメモリ24へのメモリアクセス要求が行われ得る。機能の実行に応答してデータまたはプロセッサ実行可能コードをメモリ16にロードすることは、別のメモリ16またはストレージメモリ24へのメモリアクセス要求から生じることがあり、データまたはプロセッサ実行可能コードは、後のアクセスのためにメモリ16にロードされ得る。
【００３１】
ストレージメモリインターフェース20およびストレージメモリ24は、コンピューティングデバイス10が不揮発性記憶媒体上にデータとプロセッサ実行可能コードとを記憶することが可能になるように、調和して動作し得る。ストレージメモリ24は、ストレージメモリ24がプロセッサ14のうちの1つまたは複数によるアクセスのためのデータまたはプロセッサ実行可能コードを記憶し得る、メモリ16の態様とほとんど同じように構成され得る。不揮発性であるストレージメモリ24は、コンピューティングデバイス10の電源が切断された後に情報を保持し得る。電源が再び投入され、コンピューティングデバイス10が再起動すると、ストレージメモリ24上に記憶された情報がコンピューティングデバイス10にとって利用可能になり得る。ストレージメモリインターフェース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をもつ、カスタムハードウェアアクセラレータであり得る。参照しやすいように、「ハードウェアアクセラレータ」、「カスタムハードウェアアクセラレータ」、「マルチコアプロセッサ」、「プロセッサ」、および「プロセッサコア」という用語は、本明細書で互換的に使用されることがある。
【００３５】
異種のマルチコアプロセッサは、複数の異種のプロセッサコアを含み得る。マルチコアプロセッサ14のプロセッサコア200、201、202、203が異なる目的のために構成され、かつ/または異なる性能特性を有し得るという点で、プロセッサコア200、201、202、203は異種であり得る。そのような異種プロセッサコアの異種性は、異なる命令セットアーキテクチャ、パイプライン、動作周波数などを含み得る。そのような異種のプロセッサコアの例には、より低速で低電力のプロセッサコアがより強力で電力を大量に消費するプロセッサコアと結合され得る「big.LITTLE」アーキテクチャとして知られているものが含まれ得る。同様の態様では、SoC(たとえば、図1のSoC12)は、任意の数の同種または異種マルチコアプロセッサ14を含み得る。様々な態様では、プロセッサコア200、201、202、203のうちのすべてが異種のプロセッサコアである必要があるとは限らず、その理由は、異種のマルチコアプロセッサが、少なくとも1つの異種のプロセッサコアを含むプロセッサコア200、201、202、203の任意の組合せを含み得るからである。
【００３６】
マルチコアプロセッサ14のプロセッサコア200、201、202、203の各々は、指定されたプロセッサコア200、201、202、203による読取りおよび/または書込みアクセスに専用であり得る、プライベートキャッシュ210、212、214、216を指定され得る。プライベートキャッシュ210、212、214、216は、データおよび/または命令を記憶し、記憶されたデータおよび/または命令を、プロセッサコア200、201、202、203による実行において使用するために、プライベートキャッシュ210、212、214、216がその専用にされるプロセッサコア200、201、202、203にとって利用可能にし得る。プライベートキャッシュ210、212、214、216は、図1のメモリ16を参照しながら本明細書で説明したような揮発性メモリを含み得る。
【００３７】
マルチコアプロセッサ14は、プロセッサコア200、201、202、203による読取りおよび/または書込みアクセスのために構成され得る、共有キャッシュ230をさらに含み得る。プライベートキャッシュ210、212、214、216は、データおよび/または命令を記憶し、記憶されたデータおよび/または命令を、プロセッサコア200、201、202、203による実行において使用するために、プロセッサコア200、201、202、203にとって利用可能にし得る。共有キャッシュ230はまた、マルチコアプロセッサ14に入力された、かつ/またはマルチコアプロセッサ14から出力された、データおよび/または命令のためのバッファとしても機能し得る。共有キャッシュ230は、図1のメモリ16を参照しながら本明細書で説明したような揮発性メモリを含み得る。
【００３８】
図2に示す例では、マルチコアプロセッサ14は、4つのプロセッサコア200、201、202、203(すなわち、プロセッサコア0、プロセッサコア1、プロセッサコア2、およびプロセッサコア3)を含む。この例では、各プロセッサコア200、201、202、203は、それぞれのプライベートキャッシュ210、212、214、216(すなわち、プロセッサコア0およびプライベートキャッシュ0、プロセッサコア1およびプライベートキャッシュ1、プロセッサコア2およびプライベートキャッシュ2、ならびにプロセッサコア3およびプライベートキャッシュ3)を指定される。説明を簡単にするために、本明細書の例では、図2に示す4つのプロセッサコア200、201、202、203、および4つのプライベートキャッシュ210、212、214、216を参照する場合がある。しかしながら、図2に示し、本明細書で説明する4つのプロセッサコア200、201、202、203、および4つのプライベートキャッシュ210、212、214、216は、単に一例として提供され、決して様々な態様を4つの指定されたプライベートキャッシュをもつ4コアプロセッサシステムに限定するものではない。コンピューティングデバイス10、SoC12、またはマルチコアプロセッサ14は、図示し、本明細書で説明する4つのプロセッサコア200、201、202、203、およびプライベートキャッシュ210、212、214、216よりも少数または多数を個々にまたは組合せで含み得る。
【００３９】
図3〜図5は、マルチコアプロセッサ状態シグナリングありおよびなしの、複数の電力領域のための分割スヌープディレクトリシステムの非限定的な例を示す。特に図3〜図5のものを参照しながら、およびそれらに関して本明細書で示し、説明する例は、非限定的である。分割スヌープディレクトリシステムは、任意の数のプロセッサ、プロセッサコア、プライベートキャッシュ、共有キャッシュ、電力領域、分割スヌープディレクトリ、プロセッサキャッシュ電力コントローラ、および分割スヌープディレクトリ電力コントローラを含み得る。したがって、図3〜図5に示すプロセッサ、プロセッサコア、キャッシュ、電力領域、分割スヌープディレクトリ、共有キャッシュコントローラ、および分割スヌープディレクトリ電力コントローラの数は、例示のためにすぎない。参照しやすいように、および明快のために、マルチコアプロセッサという用語は、マルチコアプロセッサ、シングルコアプロセッサ、および/またはプロセッサコアを指すために本明細書で使用される。さらに、様々な態様方法の説明における、1つまたは2つの電力領域、分割スヌープディレクトリ、共有キャッシュなどへの言及は、例示のためにすぎず、その理由は、そのような方法が、任意の数N個の電力領域、分割スヌープディレクトリ、共有キャッシュなどに拡張され得るからである。
【００４０】
図3は、複数の電力領域のための分割スヌープディレクトリシステムの例示的な態様を示す。分割スヌープディレクトリシステムを実装するように構成されたコンピューティングデバイス(たとえば、図1におけるコンピューティングデバイス10)は、少なくとも2つであるが、任意の整数「N」個までのマルチコアプロセッサ、たとえば、プロセッサ1 14aとプロセッサN 14bとを含み得る。各マルチコアプロセッサ14a、14bは、任意の数のプロセッサコア(たとえば、図2におけるプロセッサコア200、201、202、203)を含み得、たとえば、マルチコアプロセッサ14aは、プロセッサコア1 300aとプロセッサコアM 300bとを含む、任意の整数「M」個までのプロセッサコアを含み得る。同様に、マルチコアプロセッサ14bは、プロセッサコア1 300cとプロセッサコアP 300dとを含む、任意の整数「P」個までのプロセッサコアを含み得る。本明細書で説明するように、マルチコアプロセッサ14a、14bの各々は、互いに対して、および/またはそれらのそれぞれのプロセッサコア300a、300b、300c、300dの間で同種および/または異種であり得る。
【００４１】
各プロセッサコア300a、300b、300c、300dは、関連付けられたプロセッサコア300a、300b、300c、300dによる使用のために指定されたプライベートキャッシュ(たとえば、図2におけるプライベートキャッシュ210、212、214、216)に関連付けられ得る。たとえば、プライベートキャッシュ302aは、プロセッサコア300aに関連付けられ、プロセッサコア300aによる使用のために指定され得る。同様に、プライベートキャッシュ302bは、プロセッサコア300bに関連付けられ、指定され得、プライベートキャッシュ302cは、プロセッサコア300cに関連付けられ、指定され得、プライベートキャッシュ302dは、プロセッサコア300dに関連付けられ、指定され得る。
【００４２】
各マルチコアプロセッサ14a、14bはまた、プロセッサコア300a、300b、300c、300dを含む、マルチコアプロセッサ14a、14bによる読取りおよび/または書込みアクセスのために構成された、共有キャッシュ(たとえば、図2における共有キャッシュ230)を含み得る。図3に示した例では、マルチコアプロセッサ14aは共有キャッシュ304aを含み得、マルチコアプロセッサ14bは共有キャッシュ304bを含み得る。様々な態様では、共有キャッシュ304a、304bは、そのそれぞれのマルチコアプロセッサ14a、14b内のみで書込み可能であり得る。様々な態様では、共有キャッシュ304a、304bは、スヌーピングを使用して、別のマルチコアプロセッサ14a、14bによって読取り可能であり得る。
【００４３】
コヒーレント相互接続308は、マルチコアプロセッサ14a、14b、任意の数の入出力(I/O)エージェント306a、306b、および任意の数のメインメモリまたはランダムアクセスメモリ構成要素312(たとえば、図1におけるメモリ16)に通信可能に接続され得る。コヒーレント相互接続308は、様々な接続された構成要素の間のデータの送信を可能にし、制御するように構成され得る。I/Oエージェント306a、306bは、マルチコアプロセッサ14a、14bおよび/またはランダムアクセスメモリ構成要素312をデータのための宛先として、入力データをコヒーレント相互接続308に通信し得る。I/Oエージェント306a、306bはまた、コヒーレント相互接続308を通して、マルチコアプロセッサ14a、14bおよび/またはランダムアクセスメモリ構成要素312からデータを受信し得る。ランダムアクセスメモリ構成要素312は、マルチコアプロセッサ14a、14bおよび/またはI/Oエージェント306a、306bのためのデータおよび/または命令を記憶および/または提供するように構成され得る。ランダムアクセスメモリ構成要素312は、マルチコアプロセッサ14a、14b、I/Oエージェント306a、306b、および/または記憶デバイス(たとえば、図1におけるストレージメモリ24)の間のデータおよび/または命令のためのバッファとして構成され得る。
【００４４】
コヒーレント相互接続308はまた、分割スヌープディレクトリ310a、310bを表すデータを記憶し、利用可能にするように構成された、ランダムアクセスメモリ構成要素(たとえば、図1におけるメモリ16、およびスタティックランダムアクセスメモリ(SRAM))を含み得る。本明細書でさらに説明するように、分割スヌープディレクトリ310a、310bは、特定の電力領域と相関させられ得る。各分割スヌープディレクトリ310a、310bは、関連付けられた電力領域のそれぞれのマルチコアプロセッサ14a、14bのプライベートキャッシュ302a、302b、302c、302dおよび/または共有キャッシュ304a、304bのメモリロケーションと対応する、いくつかのタグを含み得る。各タグは、あるデータがプライベートキャッシュ302a、302b、302c、302dおよび/または共有キャッシュ304a、304bの対応するメモリロケーションに位置するか否かを特定する情報に関連付けられ得る。プライベートキャッシュ302a、302b、302c、302dおよび/または共有キャッシュ304a、304bは、参照しやすいように、および説明の明快のために、本明細書ではプロセッサキャッシュと呼ばれることがある。プロセッサキャッシュという用語の使用は、本明細書で説明する態様を、必ずしもプライベートキャッシュ302a、302b、302c、302dおよび/または共有キャッシュ304a、304bのすべてを含むように限定するものではない。
【００４５】
分割スヌープディレクトリ310a、310bは、プロセッサキャッシュ302a、302b、302c、302d、304a、304bに直接的にクエリを行う必要なしに、プロセスの実行のためにシークされたデータが、そのプロセッサキャッシュ302a、302b、302c、302d、304a、304b上でマルチコアプロセッサ14a、14bのためにローカルで記憶されているか否かを決定するために、マルチコアプロセッサ14a、14bおよび/またはI/Oエージェント306a、306bによってクエリされ得る。データが、プロセッサキャッシュ302a、302b、302c、302d、304a、304b上に記憶されていないとき、分割スヌープディレクトリ310a、310b、またはプロセッサキャッシュ302a、302b、302c、302d、304a、304bのいずれかへのクエリは、「ミス」として知られている。分割スヌープディレクトリ310a、310bの実装がない場合、他のマルチコアプロセッサ14a、14bの各々に対する、発行側のマルチコアプロセッサ14a、14bによるスヌープトランザクションは、クエリのデータを取り出すことを必要とされる。「ミス」の発生に応答して、ランダムアクセスメモリ構成要素312に対する外部のトランザクションは、クエリのデータを取り出すことを必要とされる。分割スヌープディレクトリ310a、310bの実装がある場合、他のマルチコアプロセッサ14a、14bの各々に対するスヌープトランザクションは、必要でなくてよい。むしろ、スヌープトランザクションは、分割スヌープディレクトリ310a、310bに向けられ得る。分割スヌープディレクトリ310a、310bにおける「ミス」の発生に応答して、ランダムアクセスメモリ構成要素312に対する外部のトランザクションは、クエリのデータを取り出すように実施され得る。「ヒット」としても知られる、クエリのためのデータに関連付けられたプロセッサキャッシュ302a、302b、302c、302d、304a、304bにおけるロケーションのための分割スヌープディレクトリ310a、310bにおけるタグの発見に応答して、「ヒット」する分割スヌープディレクトリ310a、310bに関連付けられたすべてのマルチコアプロセッサ14a、14bに対するスヌープトランザクションが実施され得る。ランダムアクセスメモリ構成要素312に対する外部のトランザクションも、(アクセスタイプ、およびスヌープされたプロセッサキャッシュ挙動に応じて)実施され得る。
【００４６】
したがって、分割スヌープディレクトリ310a、310bがないアーキテクチャは、クエリのデータを取り出すために、マルチコアプロセッサ14a、14b、I/Oエージェント306a、306b、コヒーレント相互接続308、およびランダムアクセスメモリ構成要素312の間で余分のトランザクションを必要とし得る。分割スヌープディレクトリ310a、310bの実装によって、分割スヌープディレクトリ310a、310bに向けられたクエリが、「ミス」のためにランダムアクセスメモリ構成要素312にリダイレクトされることが可能になり得る。これによって、そうでない場合にプロセッサキャッシュ302a、302b、302c、302d、304a、304bにおけるデータをチェックするために必要とされる、コヒーレント相互接続308とマルチコアプロセッサ14a、14bとの間の余分のトランザクションが除去され得る。クエリは、コヒーレント相互接続308とマルチコアプロセッサ14a、14bとの間のトランザクションを実施することなしに、分割スヌープディレクトリ310a、310bのタグが、クエリされたデータがプロセッサキャッシュ302a、302b、302c、302d、304a、304b上でマルチコアプロセッサ14a、14bにローカルで記憶されていることを示すか、記憶されていないことを示すかをチェックするために使用され得る。「ミス」の指示のとき、データは、ランダムアクセスメモリ構成要素312から取り出され得る。
【００４７】
図4は、複数の電力領域のための分割スヌープディレクトリシステムの例示的な態様を示す。図4に示した例は、マルチコアプロセッサ14a、14b、プロセッサコア300a、300b、300c、300d、プライベートキャッシュ302a、302b、302c、302d、共有キャッシュ304a、304b、コヒーレント相互接続308、および分割スヌープディレクトリ310a、310bを含む、図3に示した例の多数の態様を組み込んでいる。図4に示した例は、マルチコアプロセッサ14c、プロセッサコア300e、300f、プライベートキャッシュ302e、302f、および共有キャッシュ304cを含む、上記で説明したものと同様の構成要素をさらに含む。マルチコアプロセッサ14cは、プロセッサコア1 300eとプロセッサコアR 300fとを含む、任意の整数「R」個までのプロセッサコアを含み得る。明快のために、I/Oエージェント306a、306b、およびランダムアクセスメモリ構成要素312は、図4に示した例から省略されている。また、プロセッサキャッシュという用語は、図4における例の追加のプライベートキャッシュ302e、302f、および共有キャッシュ304cを含み得る。
【００４８】
図4に示した例はまた、2つの電力領域400a、400bと、3つのプロセッサキャッシュ電力コントローラ402a、402b、402cと、2つの分割スヌープディレクトリ電力コントローラ404a、404bとを含む。電力領域400a、400bは、少なくとも1つのマルチコアプロセッサ14a、14b、14cのグループであり得、任意の数N個の電力領域を含み得る。各電力領域400a、400bは、複数のプロセッサコア300a、300b、300c、300d、300e、300fと、少なくとも1つの共有キャッシュ304a、304b、304cとを含み得る。電力領域400a、400bはまた、任意の数のプライベートキャッシュ302a、302b、302c、302d、302e、302fを含み得る。電力領域400a、400bの各々は、分割スヌープディレクトリ310a、310bのうちの1つに関連付けられ得る。図4に示した例では、電力領域400aは、分割スヌープディレクトリ310aに関連付けられ得、電力領域400bは、分割スヌープディレクトリ310bに関連付けられ得る。言い換えれば、分割スヌープディレクトリ310aは、プロセッサキャッシュ302a、302b、302e、302f、304a、304cにおけるメモリロケーションに対応するタグを記憶し得、分割スヌープディレクトリ310bは、プロセッサキャッシュ302c、302d、304bにおけるメモリロケーションに対応するタグを記憶し得る。
【００４９】
プロセッサキャッシュ電力コントローラ402a、402b、402cは、電力領域の構成要素が低電力状態および標準状態であるか、またはそれらの間で遷移中であるかを決定するために、電力領域400a、400bの構成要素の条件を検出するように構成され得る。プロセッサキャッシュ電力コントローラ402a、402b、402cは、電力ドロー、温度、マルチコアプロセッサがその電力状態を示していないときのマルチコアプロセッサ電力制御ユニット、割込み、および/または、指定されたマルチコアプロセッサ14a、14b、14cの入出力アクティビティを監視し得る。プロセッサキャッシュ電力コントローラ402a、402b、402cは、同じ分割スヌープディレクトリ310a、310bおよび電力領域400a、400bに関連付けられた、関連付けられた分割スヌープディレクトリ電力コントローラ404a、404bにシグナリングするように構成され得る。プロセッサキャッシュ電力コントローラ402a、402b、402c、および分割スヌープディレクトリ電力コントローラ404a、404bは、1対1の関係、または、多数のプロセッサキャッシュ電力コントローラ402a、402b、402c対1つの分割スヌープディレクトリ電力コントローラ404a、404bにおいて関連付けられ得る。様々な態様では、プロセッサキャッシュ電力コントローラ402a、402b、402cの数は、関連付けられた電力領域400a、400bのプライベートキャッシュ302a、302b、302c、302d、302e、302f、または共有キャッシュ304a、304b、304cの数と同じであり得る。
【００５０】
分割スヌープディレクトリ電力コントローラ404a、404bは、分割スヌープディレクトリ電力コントローラ404a、404bが関連付けられる先の電力領域400a、400bの構成要素の電力状態を追跡するように構成され得る。分割スヌープディレクトリ電力コントローラ404a、404bは、プロセッサキャッシュ電力コントローラ402a、402b、402cから受信された信号に基づいて、電力領域400a、400bの構成要素の電力状態を更新し得る。本明細書でさらに説明するように、分割スヌープディレクトリ電力コントローラ404a、404bは、電力領域400a、400bの構成要素の電力状態に基づいて、関連付けられた分割スヌープディレクトリ310a、310bの電力状態を制御し得る。分割スヌープディレクトリ電力コントローラ404a、404bは、関連付けられた分割スヌープディレクトリ310a、310bの電源投入および有効化、電源切断および無効化、または保持にすることを行い得る。様々な態様では、各分割スヌープディレクトリ電力コントローラ404a、404bは、1つの分割スヌープディレクトリ310a、310bに関連付けられ得る。
【００５１】
図5は、複数の電力領域のための分割スヌープディレクトリシステムの例示的な態様を示す。図5に示した例は、マルチコアプロセッサ14a、14b、14cと、プロセッサコア300a、300b、300c、300d、300e、300fと、プライベートキャッシュ302a、302b、302c、302d、302e、302f、および共有キャッシュ304a、304b、304cを含むプロセッサキャッシュと、コヒーレント相互接続308と、分割スヌープディレクトリ310a、310bと、電力領域400a、400bと、プロセッサキャッシュ電力コントローラ402a、402b、402cと、分割スヌープディレクトリ電力コントローラ404a、404bとを含む、図3および図4に示した例の多数の態様を組み込んでいる。明快のために、I/Oエージェント306a、306b、およびランダムアクセスメモリ構成要素312は、図5に示した例から省略されている。
【００５２】
図5に示した例では、マルチコアプロセッサ14a、14b、14c、プロセッサキャッシュ電力コントローラ402a、402b、402c、および分割スヌープディレクトリ電力コントローラ404a、404bは、図4に示した例とは異なる方法で構成され得る。様々な態様では、各マルチコアプロセッサ14a、14b、14cは、プロセッサの電力状態と、プロセッサの構成要素の電力状態とを、コヒーレント相互接続308に、および分割スヌープディレクトリ電力コントローラ404a、404bにシグナリングするように構成され得る。分割スヌープディレクトリ電力コントローラ404a、404bは、マルチコアプロセッサ14a、14b、14cから受信された電力状態信号を使用して、電力領域400a、400bの構成要素の電力状態を追跡し得る。したがって、プロセッサキャッシュ電力コントローラ402a、402b、402cは、電力領域の構成要素が低電力状態および標準状態であるか、またはそれらの間で遷移中であるかを決定するために、電力領域400a、400bの構成要素の条件を検出するように構成される必要がなくてよい。
【００５３】
様々な態様では、分割スヌープディレクトリ電力コントローラ404a、404bは、プロセッサキャッシュ電力コントローラ402a、402b、402cからの信号を使用するのではなく、分割スヌープディレクトリ電力コントローラ404a、404bが、マルチコアプロセッサ14a、14b、14cから受信された信号に基づいて、電力領域400a、400bの構成要素の電力状態を追跡し、分割スヌープディレクトリ310a、310bの電力状態を制御し得ることを除いて、図4を参照しながら説明したように構成され得る。
【００５４】
図6は、電力領域(たとえば、図4および図5における電力領域400a、400b)のための例示的な電力状態テーブル600を示す。電力状態テーブル600は、電力領域の構成要素の電力状態に従って、関連付けられた分割スヌープディレクトリ(たとえば、図3〜図5における分割スヌープディレクトリ310a、310b)の電力状態を制御するための、分割スヌープディレクトリ電力コントローラ(たとえば、図4および図5における分割スヌープディレクトリ電力コントローラ404a、404b)のための様々なルールを含み得る。図6に示した例は、2つのマルチコアプロセッサ(たとえば、図3〜図5におけるマルチコアプロセッサ14a、14b、14c)のプロセッサキャッシュ(たとえば、図3〜図5におけるプライベートキャッシュ302a、302b、302c、302d、302e、302f、および共有キャッシュ304a、304b、304c)の電力状態のための2つの列を含む。明快および簡潔のために、図6に示した例は、単一の電力領域の2つのマルチコアプロセッサの2つのプロセッサキャッシュ(たとえば、共有キャッシュ)の電力状態のための2つの列を示す。しかしながら、この例は非限定的であり、様々な態様とともに使用するための電力状態テーブルは、任意の数のプロセッサキャッシュ、マルチコアプロセッサ、または電力領域を追跡するために使用される、任意の数の列を含み得る。
【００５５】
様々な態様では、少なくとも1つのプロセッサキャッシュが、「ON」電力状態などの高電力状態にある限り、「ON」プロセッサキャッシュを有する電力領域に関連付けられた、対応する分割スヌープディレクトリもまた、「ON」電力状態に設定され得る。様々な態様では、分割スヌープディレクトリが「OFF」電力状態などの低電力状態に設定されるために、関連付けられた電力領域のプロセッサキャッシュのすべてが「OFF」電力状態であり得る。分割スヌープディレクトリが電力領域の複数のプロセッサキャッシュによって共有されるので、分割スヌープディレクトリは、電力領域の任意の部分にサービス可能であるように電力供給され得る。したがって、分割スヌープディレクトリを電源切断可能であるために、分割スヌープディレクトリが電力領域のいかなる部分にサービスする必要もないように、電力領域のプロセッサキャッシュのすべてが電源切断される必要があり得る。
【００５６】
様々な態様では、電力領域のプロセッサキャッシュが、「OFF」状態を含む低電力状態の様々な組合せであること、およびプロセッサキャッシュのうちの少なくとも1つが「RET」(保持)状態であることの任意の組合せにおいて、電力領域のための分割スヌープディレクトリが「RET」状態に設定され得る。データの保持は(「ON」状態よりも低い電力ではあるが)電力を必要とするので、分割スヌープディレクトリは、「RET」状態の少なくとも1つのプロセッサキャッシュと対応するために「RET」状態にされ得るが、電力領域の他のプロセッサキャッシュは、電源切断される。「ON」状態および「OFF」状態のプロセッサキャッシュの組合せと同様に、少なくとも1つのプロセッサキャッシュが「ON」状態であり、任意の他のプロセッサキャッシュが「RET」および/または「OFF」状態である、任意の組合せでは、分割スヌープディレクトリが「ON」状態に設定され得る。これらの電力状態の組合せの各々では、電力領域の少なくとも1つのプロセッサキャッシュのより高い電力状態が、分割スヌープディレクトリの電力状態を規定し得、「ON」が最高電力状態であり、次いで「RET」および「OFF」が最低電力状態である。分割スヌープディレクトリ電力コントローラは、それらが関連付けられる電力領域の構成要素の電力状態を追跡し、図6に示した例におけるルールなどのルールを適用して、分割スヌープディレクトリの電力状態を制御するように構成され得る。
【００５７】
様々な態様は、図7〜図15に示し、以下で説明する、複数の電力領域および複数の分割スヌープディレクトリについて、1つまたは複数のプロセッサによって実施され得る、方法700、800、900、1000、1100、1200、1300、1400、1500を含む。方法700、800、900、1000、1100、1200、1300、1400、1500は、複数の電力領域(たとえば、図4および図5における電力領域400a、400b)、およびそれらの対応する分割スヌープディレクトリ(たとえば、図4および図5における分割スヌープディレクトリ310a、310b)について、個別に、および/または並列に実施され得る。複数の電力領域は、マルチコアプロセッサ(たとえば、図4および図5におけるマルチコアプロセッサ14a、14b、14c)と、プロセッサコア(たとえば、図4および図5におけるプロセッサコア300a、300b、300c、300d、300e、300f)と、プライベートキャッシュ(たとえば、図4および図5におけるプライベートキャッシュ302a、302b、302c、302d、302e、302f)および/または共有キャッシュ(たとえば、図4および図5における共有キャッシュ304a、304b、304c)を含む、少なくとも1つのプロセッサキャッシュとを含む、構成要素の任意の組合せを各々含み得る。たとえば、第1の電力領域は、複数のプロセッサキャッシュを含み得、第2の電力領域は、少なくとも1つのプロセッサキャッシュを含み得る。本明細書で説明するように、各電力領域は、対応する分割スヌープディレクトリに関連付けられ得る。たとえば、第1の電力領域は、第1の分割スヌープディレクトリに関連付けられ得、第2の電力領域は、第2の分割スヌープディレクトリに関連付けられ得る。明快のために、および参照を簡単にするために、方法700、800、900、1000、1100、1200、1300、1400、1500について、第1の電力領域および第1の分割スヌープディレクトリを参照しながら本明細書で説明する。しかしながら、方法700、800、900、1000、1100、1200、1300、1400、1500は、第2の電力領域および第2の分割スヌープディレクトリ、および/または、任意の数N個の電力領域およびN個の分割スヌープディレクトリについて同様に実施され得、Nは1よりも大きい整数である。さらに、態様方法700、800、900、1000、1100、1200、1300、1400、1500は、個別に、または並列に、N個の電力領域およびN個の分割スヌープディレクトリについて実施され得る。
【００５８】
図7は、一態様による複数の電力領域のための分割スヌープディレクトリを実装するための方法700を示す。方法700は、プロセッサ(たとえば、図1および図2におけるプロセッサ14)において実行するソフトウェアにおけるコンピューティングデバイスにおいて、汎用ハードウェアにおいて、専用ハードウェア(たとえば、図4および図5における分割スヌープディレクトリ電力コントローラ404a、404b、および/またはプロセッサキャッシュ電力コントローラ402a、402b、402c)において、または、他の個々の構成要素を含む分割スヌープディレクトリシステム内のソフトウェアを実行するプロセッサなど、ソフトウェア構成プロセッサおよび専用ハードウェアの組合せにおいて実施され得る。様々な態様において可能にされる代替構成を包含するために、方法700を実施するハードウェアは、本明細書では「処理デバイス」と呼ばれる。
【００５９】
ブロック702で、処理デバイスは、第1の電力領域(たとえば、図4および図5における電力領域400a、400b)における電力状態変化を監視および検出し得る。様々な態様では、第1の電力領域における電力状態変化を監視および検出することは、電力状態変化を直接的に監視および検出すること、または、電力状態を変化させるための条件を監視および検出することを含み得る。様々な態様では、電力状態変化、または電力状態を変化させるための条件は、マルチコアプロセッサ(たとえば、図4および図5におけるマルチコアプロセッサ14a、14b、14c)と、プロセッサコア(たとえば、図4および図5におけるプロセッサコア300a、300b、300c、300d、300e、300f)と、プライベートキャッシュ(たとえば、図4および図5におけるプライベートキャッシュ302a、302b、302c、302d、302e、302f)または共有キャッシュ(たとえば、図4および図5における共有キャッシュ304a、304b、304c)を含む、プロセッサキャッシュとを含む、第1の電力領域の構成要素のいずれかについて検出され得る。検出された電力状態変化は、「ON」状態などの高電力状態、および「OFF」または「RET」状態などのより低い電力状態のうちのいずれかから、同じセットの電力状態のうちの別の電力状態への変化を含み得る。いくつかの態様では、処理デバイスは、N個の電力領域の電力状態を監視し得る。参照を簡単にするために、方法700について、1つの(「第1の」)電力領域の電力状態を監視および検出するプロセッサに関して説明する。しかしながら、第1の電力領域への参照は任意であり、非限定的であり、その理由は、同様の動作が任意の数N個の電力領域について実行され得るからである。
【００６０】
ブロック704で、処理デバイスは、第1の電力領域の電力状態を決定し得る。第1の電力領域の電力状態は、第1の電力領域の構成要素の任意の組合せの電力状態にリンクされ得る。たとえば、第1の電力領域の電力状態は、第1の電力領域のプロセッサキャッシュの電力状態にリンクされ得る。本明細書で説明するように、第1の電力領域のための電力状態は、第1の電力領域の電力状態がリンクされる先の構成要素のうちの任意の1つの最高電力状態であり得る。いくつかの態様では、処理デバイスは、N個の電力領域の電力状態を決定し得る。
【００６１】
決定ブロック706で、処理デバイスは、電力状態変化が、第1の電力領域のための電源投入状態変化であるか否かを決定し得る。電源投入状態変化は、「OFF」または「RET」電力状態を含む低電力状態から、「ON」電力状態を含む高電力状態への変化を含み得る。処理デバイスは、第1の電力領域の状態と、第1の電力領域における電力状態変化とを比較して、第1の電力領域のための状態変化があるか否か、およびその状態変化が何であるかを決定し得る。たとえば、第1の電力領域よりも高い電力状態への、第1の電力領域における電力状態変化は、より高い電力状態への第1の電力領域のための状態変化を生じ得る。別の例では、第1の電力領域よりも低い電力状態への、第1の電力領域における電力状態変化は、第1の電力領域の他の構成要素が電力状態変化の電力状態よりも高い電力状態ではない限り、より低い電力状態への第1の電力領域のための状態変化を生じ得る。別の例では、第1の電力領域のための電力状態と同じである電力状態への、第1の電力領域における電力状態変化は、第1の電力領域のための電力状態変化を生じないことになる。いくつかの態様では、処理デバイスは、N個の電力領域について、決定ブロック706における動作を実行し得る。
【００６２】
電力状態変化が第1の電力領域のための電源投入状態変化であるとの決定に応答して(すなわち、決定ブロック706=「Yes」)、処理デバイスは、ブロック710で、第1の電力領域に対応する第1の分割スヌープディレクトリ(たとえば、図3〜図5における分割スヌープディレクトリ310a、310b)を有効化し得る。いくつかの態様では、処理デバイスは、N個の電力領域について、ブロック710における動作を実行し得る。
【００６３】
電力状態変化が第1の電力領域のための電源投入状態変化ではないとの決定に応答して(すなわち、決定ブロック706=「No」)、処理デバイスは、決定ブロック708で、電力状態変化が第1の電力領域のための電源切断または保持状態変化であるか否かを決定し得る。「OFF」および「RET」電力状態は、低電力状態と呼ばれることがあり、電源切断または保持状態変化を含む電力状態変化は、低電力状態への変化であり得る。いくつかの態様では、処理デバイスは、N個の電力領域について、ブロック708における動作を実行し得る。
【００６４】
電力状態変化が第1の電力領域のための電源切断または保持状態変化であるとの決定に応答して(すなわち、決定ブロック708=「Yes」)、処理デバイスは、ブロック712で、第1の電力領域に対応する第1の分割スヌープディレクトリを無効化し得る。いくつかの態様では、処理デバイスは、N個の電力領域について、ブロック712における動作を実行し得る。
【００６５】
ブロック714で、処理デバイスは、決定ブロック708における、電力状態変化が第1の電力領域のための電源切断または保持状態変化であるか否かに応じて、第1の分割スヌープディレクトリを保持状態にするか、または第1の分割スヌープディレクトリを電源切断し得る。いくつかの態様では、処理デバイスは、N個の電力領域について、ブロック714における動作を実行し得る。
【００６６】
電力状態変化が第1の電力領域のための電源切断または保持状態変化ではないとの決定に応答して(すなわち、決定ブロック708=「No」)、処理デバイスは、ブロック702で、第1の電力領域(または、N個の電力領域)におけるさらなる電力状態変化を監視および検出し続け得る。
【００６７】
図8は、一態様による複数の電力領域のための分割スヌープディレクトリ電源投入および有効化を実施するための方法800を示す。方法800は、任意の数N個の電力領域について実施され得、Nは1よりも大きい整数である。方法800は、プロセッサ(たとえば、図1および図2におけるプロセッサ14)において実行するソフトウェアにおけるコンピューティングデバイスにおいて、汎用ハードウェアにおいて、専用ハードウェア(たとえば、図4および図5における分割スヌープディレクトリ電力コントローラ404a、404b、および/またはプロセッサキャッシュ電力コントローラ402a、402b、402c)において、または、他の個々の構成要素を含む分割スヌープディレクトリシステム内のソフトウェアを実行するプロセッサなど、プロセッサおよび専用ハードウェアの組合せにおいて実施され得る。様々な態様において可能にされる代替構成を包含するために、方法800を実施するハードウェアは、本明細書では「処理デバイス」と呼ばれる。様々な態様では、方法800は、図7を参照しながら説明した方法700の一部として、その拡張において、それとともに、またはそれとは別個に実施され得る。
【００６８】
ブロック802で、処理デバイスは、第1の電力領域(たとえば、図4および図5における電力領域400a、400b)におけるウェイクアップ条件を検出し得る。ウェイクアップ条件は、第1の電力領域を高電力(すなわち、「ON」)状態に変化させるための条件であり得る。ウェイクアップ条件を検出することは、電力ドロー、温度、マルチコアプロセッサがその電力状態を示していないときのマルチコアプロセッサ電力制御ユニットアクティビティおよび/もしくは状態、割込み、ならびに/または、マルチコアプロセッサ(たとえば、図4および図5におけるマルチコアプロセッサ14a、14b、14c)と、プロセッサコア(たとえば、図4および図5におけるプロセッサコア300a、300b、300c、300d、300e、300f)と、プライベートキャッシュ(たとえば、図4および図5におけるプライベートキャッシュ302a、302b、302c、302d、302e、302f)または共有キャッシュ(たとえば、図4および図5における共有キャッシュ304a、304b、304c)を含む、プロセッサキャッシュとのいずれかを含む、第1の電力領域の構成要素の入出力アクティビティを監視することに基づき得る。電力ドロー、温度、および/もしくは入出力アクティビティの監視レベルの増大、マルチコアプロセッサ電力制御ユニットのアクティビティおよび/もしくは状態の検出、ならびに/または割込みの検出は、ウェイクアップイベントが第1の電力領域において発生したことを、処理デバイスに示し得る。いくつかの態様では、処理デバイスは、N個の電力領域について、ブロック802における動作を実行し得る。
【００６９】
ブロック804で、処理デバイスは、第1の電力領域のための第1の分割スヌープディレクトリ(たとえば、図3〜図5における分割スヌープディレクトリ310a、310b)のための電源投入要求を送り得る。第1の電力領域のための第1の分割スヌープディレクトリのための電源投入要求は、方法700の決定ブロック706などにおける、第1の電力領域のための電源投入状態変化の決定後、またはそのような決定にかかわらず、送られ得る。いくつかの態様では、処理デバイスは、N個の電力領域について、ブロック804における動作を実行し得る。
【００７０】
ブロック806で、処理デバイスは、ウェイクアップ条件の検出に応答して、マルチコアプロセッサキャッシュを電源投入し得る。いくつかの態様では、処理デバイスは、N個の電力領域について、ブロック806における動作を実行し得る。
【００７１】
ブロック808で、処理デバイスは、第1の電力領域に関連付けられた第1の分割スヌープディレクトリが有効化されているか否かを決定し得る。いくつかの態様では、処理デバイスは、N個の電力領域およびN個の分割スヌープディレクトリについて、ブロック808における動作を実行し得る。
【００７２】
ブロック810で、処理デバイスは、第1の電力領域に関連付けられた第1の分割スヌープディレクトリのためのタグ初期化をトリガし、第1の分割スヌープディレクトリを有効化することをトリガし得る。いくつかの態様では、処理デバイスは、N個の電力領域およびN個の分割スヌープディレクトリについて、ブロック810における動作を実行し得る。
【００７３】
第1の電力領域に関連付けられた第1の分割スヌープディレクトリが有効化されていないとの決定に応答して(すなわち、決定ブロック808=「No」)、処理デバイスは、ブロック812で、第1の分割スヌープディレクトリのための有効化要求を送り得る。いくつかの態様では、処理デバイスは、N個の電力領域およびN個の分割スヌープディレクトリについて、ブロック812における動作を実行し得る。
【００７４】
ブロック814で、処理デバイスは、第1の分割スヌープディレクトリの有効化の肯定応答を受信し得る。いくつかの態様では、プロセッサは、N個の分割スヌープディレクトリについて、ブロック814で、有効化の肯定応答を受信し得る。
【００７５】
ブロック816で、処理デバイスは、第1の分割スヌープディレクトリのスヌーピングを有効化し得る。いくつかの態様では、処理デバイスは、N個の電力領域およびN個の分割スヌープディレクトリについて、ブロック816における動作を実行し得る。
【００７６】
ブロック818で、処理デバイスは、マルチコアプロセッサキャッシュを有効化し得る。
【００７７】
第1の電力領域に関連付けられた第1の分割スヌープディレクトリが有効化されているとの決定に応答して(すなわち、決定ブロック808=「Yes」)、処理デバイスは、ブロック816で、第1の分割スヌープディレクトリのスヌーピングを有効化し得る。いくつかの態様では、処理デバイスは、N個の電力領域およびN個の分割スヌープディレクトリについて、ブロック816における動作を実行し得る。
【００７８】
図9は、一態様による複数の電力領域のための分割スヌープディレクトリ電源投入を実施するための方法900を示す。方法900は、任意の数N個の電力領域について実施され得、Nは1よりも大きい整数である。方法900は、プロセッサ(たとえば、図1および図2におけるプロセッサ14)において実行するソフトウェアにおけるコンピューティングデバイスにおいて、汎用ハードウェアにおいて、専用ハードウェア(たとえば、図4および図5における分割スヌープディレクトリ電力コントローラ404a、404b、および/またはプロセッサキャッシュ電力コントローラ402a、402b、402c)において、または、他の個々の構成要素を含む分割スヌープディレクトリシステム内のソフトウェアを実行するプロセッサなど、プロセッサおよび専用ハードウェアの組合せにおいて実施され得る。様々な態様において可能にされる代替構成を包含するために、方法900を実施するハードウェアは、本明細書では「処理デバイス」と呼ばれる。様々な態様では、方法900は、図7における方法700、および/または図8を参照しながら説明した方法800の一部として、その拡張において、それとともに、またはそれとは別個に実施され得る。
【００７９】
ブロック902で、処理デバイスは、第1の電力領域(たとえば、図4および図5における電力領域400a、400b)に関連付けられた第1の分割スヌープディレクトリ(たとえば、図3〜図5における分割スヌープディレクトリ310a、310b)のための電源投入要求を受信し得る。電源投入要求は、方法800のブロック804で送られた電源投入要求であり得る。いくつかの態様では、プロセッサは、N個の電力領域およびN個の分割スヌープディレクトリについて、ブロック902における動作を実行し得る。
【００８０】
決定ブロック904で、処理デバイスは、第1の電力領域に関連付けられた第1の分割スヌープディレクトリがすでに電源投入されているか否かを決定し得る。いくつかの態様では、処理デバイスは、N個の電力領域およびN個の分割スヌープディレクトリについて、ブロック904における動作を実行し得る。
【００８１】
第1の分割スヌープディレクトリがまだ電源投入されていないとの決定に応答して(すなわち、決定ブロック904=「No」)、処理デバイスは、ブロック906で、第1の分割スヌープディレクトリを電源投入し得る。いくつかの態様では、処理デバイスは、N個の電力領域およびN個の分割スヌープディレクトリについて、ブロック906における動作を実行し得る。
【００８２】
第1の分割スヌープディレクトリがすでに電源投入されているとの決定に応答して(すなわち、決定ブロック904=「Yes」)、処理デバイスは、ブロック902で、第2の電力領域に関連付けられた第2の分割スヌープディレクトリのための電源投入要求を受信し得る。
【００８３】
図10は、一態様による複数の電力領域のための分割スヌープディレクトリを有効化するための方法1000を示す。方法1000は、任意の数N個の電力領域について実施され得、Nは1よりも大きい整数である。方法1000は、プロセッサ(たとえば、図1および図2におけるプロセッサ14)において実行するソフトウェアにおけるコンピューティングデバイスにおいて、汎用ハードウェアにおいて、専用ハードウェア(たとえば、図4および図5における分割スヌープディレクトリ電力コントローラ404a、404b、および/またはプロセッサキャッシュ電力コントローラ402a、402b、402c)において、または、他の個々の構成要素を含む分割スヌープディレクトリシステム内のソフトウェアを実行するプロセッサなど、プロセッサおよび専用ハードウェアの組合せにおいて実施され得る。様々な態様において可能にされる代替構成を包含するために、方法1000を実施するハードウェアは、本明細書では「処理デバイス」と呼ばれる。様々な態様では、方法1000は、図7を参照しながら説明した方法700、および/または図8を参照しながら説明した方法800の一部として、その拡張において、それとともに、またはそれとは別個に実施され得る。
【００８４】
ブロック1002で、処理デバイスは、第1の電力領域(たとえば、図4および図5における電力領域400a、400b)に関連付けられた第1の分割スヌープディレクトリ(たとえば、図3〜図5における分割スヌープディレクトリ310a、310b)のための有効化要求を受信し得る。有効化要求は、方法800のブロック812で送られた有効化要求であり得る。いくつかの態様では、処理デバイスは、N個の電力領域およびN個の分割スヌープディレクトリについて、ブロック1002における動作を実行し得る。
【００８５】
ブロック1004で、処理デバイスは、第1の分割スヌープディレクトリを有効化し得る。ブロック1006で、処理デバイスは、電力領域分割スヌープディレクトリの有効化の肯定応答を送り得る。肯定応答は、方法800のブロック814で受信された肯定応答であり得る。
【００８６】
図11は、一態様による複数の電力領域のための分割スヌープディレクトリ無効化を実施するための方法1100を示す。方法1100は、任意の数N個の電力領域について実施され得、Nは1よりも大きい整数である。方法1100は、プロセッサ(たとえば、図1および図2におけるプロセッサ14)において実行するソフトウェアにおけるコンピューティングデバイスにおいて、汎用ハードウェアにおいて、専用ハードウェア(たとえば、図4および図5における分割スヌープディレクトリ電力コントローラ404a、404b、および/またはプロセッサキャッシュ電力コントローラ402a、402b、402c)において、または、他の個々の構成要素を含む分割スヌープディレクトリシステム内のソフトウェアを実行するプロセッサなど、プロセッサおよび専用ハードウェアの組合せにおいて実施され得る。様々な態様において可能にされる代替構成を包含するために、方法1100を実施するハードウェアは、本明細書では「処理デバイス」と呼ばれる。様々な態様では、方法1100は、図7における方法700の一部として、その拡張において、それとともに、またはそれとは別個に実施され得る。
【００８７】
ブロック1102で、処理デバイスは、電源切断および保持(すなわち、RET)状態を含む低電力状態への、第1の電力領域(たとえば、図4および図5における電力領域400a、400b)における変化のための条件を検出し得る。電源切断(すなわち、「OFF」)または保持(すなわち、「RET」)条件を検出することは、電力ドロー、温度、マルチコアプロセッサがその電力状態を示していないときのマルチコアプロセッサ電力制御ユニットアクティビティおよび/もしくは状態、ならびに/または、マルチコアプロセッサ(たとえば、図4および図5におけるマルチコアプロセッサ14a、14b、14c)と、プロセッサコア(たとえば、図4および図5におけるプロセッサコア300a、300b、300c、300d、300e、300f)と、プライベートキャッシュ(たとえば、図4および図5におけるプライベートキャッシュ302a、302b、302c、302d、302e、302f)または共有キャッシュ(たとえば、図4および図5における共有キャッシュ304a、304b、304c)を含む、プロセッサキャッシュとのいずれかを含む、第1の電力領域の構成要素の入出力アクティビティを監視することに基づき得る。電力ドロー、温度、マルチコアプロセッサ電力制御ユニットのアクティビティおよび/もしくは状態、ならびに/または入出力アクティビティの監視レベルの減少または停止は、電源切断または保持イベントが第1の電力領域において発生したことを、処理デバイスに示し得る。いくつかの態様では、処理デバイスは、N個の電力領域について、ブロック1102における動作を実行し得る。
【００８８】
オプションのブロック1104で、電源切断イベントでは、処理デバイスは、電源切断イベントによって影響を受ける第1の電力領域のプロセッサキャッシュをフラッシュし得る。プロセッサキャッシュフラッシュは、電源切断イベントの時間においてプロセッサキャッシュに記憶されているデータを、別のメモリ(たとえば、図1におけるメモリ16および記憶デバイス24、ならびに図3におけるランダムアクセスメモリ構成要素312)に送信し得る。いくつかの態様では、処理デバイスは、N個の電力領域およびN個の分割スヌープディレクトリについて、ブロック1104における動作を実行し得る。
【００８９】
ブロック1106で、処理デバイスは、低電力状態への変化に関連付けられたプロセッサキャッシュのための第1の電力領域に関連付けられた第1の分割スヌープディレクトリのスヌーピングを無効化し得る。いくつかの態様では、処理デバイスは、N個の電力領域およびN個の分割スヌープディレクトリについて、ブロック1106における動作を実行し得る。
【００９０】
ブロック1108で、処理デバイスは、低電力状態への変化に関連付けられた、第1の電力領域のプロセッサキャッシュを、低電力状態に変化させ得る。様々な実施形態では、プロセッサキャッシュを低電力状態に変化させることは、プロセッサキャッシュを電源切断(すなわち、「OFF」)状態または保持(すなわち、「RET」)状態に変化させることを含み得る。
【００９１】
ブロック1110で、処理デバイスは、第1の電力領域に関連付けられた第1の分割スヌープディレクトリのための無効化通知を送り得る。無効化通知は、ブロック1102における、第1の電力領域を低電力状態に変化させるための条件の検出に応答して、第1の分割スヌープディレクトリを、「OFF」または「RET」状態などの低電力状態に変化させるための要求であり得る。いくつかの態様では、処理デバイスは、N個の電力領域およびN個の分割スヌープディレクトリについて、ブロック1110における動作を実行し得る。
【００９２】
図12は、一態様による複数の電力領域のための分割スヌープディレクトリ無効化を実施するための方法1200を示す。方法1200は、任意の数N個の電力領域について実施され得、Nは1よりも大きい整数である。方法1200は、プロセッサ(たとえば、図1および図2におけるプロセッサ14)において実行するソフトウェアにおけるコンピューティングデバイスにおいて、汎用ハードウェアにおいて、専用ハードウェア(たとえば、図4および図5における分割スヌープディレクトリ電力コントローラ404a、404b、および/またはプロセッサキャッシュ電力コントローラ402a、402b、402c)において、または、他の個々の構成要素を含む分割スヌープディレクトリシステム内のソフトウェアを実行するプロセッサなど、プロセッサおよび専用ハードウェアの組合せにおいて実施され得る。様々な態様において可能にされる代替構成を包含するために、方法1200を実施するハードウェアは、本明細書では「処理デバイス」と呼ばれる。様々な態様では、方法1200は、図7を参照しながら説明した方法700、および/または図11を参照しながら説明した方法1100の一部として、その拡張において、それとともに、またはそれとは別個に実施され得る。
【００９３】
ブロック1202で、処理デバイスは、第1の電力領域(たとえば、図4および図5における電力領域400a、400b)に関連付けられた第1の分割スヌープディレクトリ(たとえば、図3〜図5における分割スヌープディレクトリ310a、310b)のための無効化通知を受信し得る。無効化通知は、方法1100のブロック1110で送られた無効化通知であり得る。無効化通知は、ブロック1102における、第1の電力領域を低電力状態に変化させるための条件の検出に応答して、第1の分割スヌープディレクトリを、「OFF」または「RET」状態などの低電力状態に変化させるための要求であり得る。いくつかの態様では、処理デバイスは、N個の電力領域およびN個の分割スヌープディレクトリについて、ブロック1202における動作を実行し得る。
【００９４】
決定ブロック1204で、処理デバイスは、第1の電力領域の最後に電力供給されたプロセッサキャッシュ(たとえば、図4および図5におけるプライベートキャッシュ302a、302b、302c、302d、302e、302f、または共有キャッシュ304a、304b、304c)を電源切断すること、または最後に電力供給されたプロセッサキャッシュを保持にすることのいずれかによって、最後に電力供給されたプロセッサキャッシュを低電力状態に変化させることによって、無効化通知がトリガされるか否かを決定し得る。言い換えれば、プロセッサは、方法1100のブロック1108で、プロセッサキャッシュを低電力状態に変化させることが、第1の電力領域のプロセッサキャッシュのすべてが「OFF」または「RET」電力状態であり、いずれも「ON」電力状態ではない結果となるか否かを決定し得る。いくつかの態様では、処理デバイスは、N個の電力領域について、決定ブロック1204における動作を実行し得る。
【００９５】
最後に電力供給されたプロセッサキャッシュを低電力状態に変化させることによって、無効化通知がトリガされるとの決定に応答して(すなわち、決定ブロック1204=「Yes」)、処理デバイスは、ブロック1206で、第1の電力領域に関連付けられた第1の分割スヌープディレクトリを無効化し得る。いくつかの態様では、処理デバイスは、N個の電力領域およびN個の分割スヌープディレクトリについて、ブロック1206における動作を実行し得る。
【００９６】
ブロック1208で、処理デバイスは、第1の電力領域に関連付けられた第1の分割スヌープディレクトリを電源切断するか、または保持にし得る。いくつかの態様では、処理デバイスは、N個の電力領域およびN個の分割スヌープディレクトリについて、ブロック1208における動作を実行し得る。
【００９７】
最後に電力供給されていないプロセッサキャッシュを低電力状態に変化させることによって、無効化通知がトリガされるとの決定に応答して(すなわち、決定ブロック1204=「No」)、処理デバイスは、ブロック1210で、第1の分割スヌープディレクトリを有効化されたままにし得る。いくつかの態様では、処理デバイスは、N個の電力領域およびN個の分割スヌープディレクトリについて、ブロック1210における動作を実行し得る。
【００９８】
本明細書で説明した方法700、800、900、1000、1100、1200では、信号、要求、および肯定応答の送信(すなわち、送ること、および受信すること)は、電力領域(たとえば、図4および図5における電力領域400a、400b)に関連付けられた、分割スヌープディレクトリ電力コントローラ(たとえば、図4および図5における分割スヌープディレクトリ電力コントローラ404a、404b)と、プロセッサキャッシュ電力コントローラ(たとえば、図4および図5におけるプロセッサキャッシュ電力コントローラ402a、402b、402c)との間で発生し得る。
【００９９】
図13は、一態様によるマルチコアプロセッサ状態シグナリングを用いて、複数の電力領域のための分割スヌープディレクトリ電源投入および有効化を実施するための方法1300を示す。方法1300は、任意の数N個の電力領域について実施され得、Nは1よりも大きい整数である。方法1300は、プロセッサ(たとえば、図1および図2におけるプロセッサ14)において実行するソフトウェアにおけるコンピューティングデバイスにおいて、汎用ハードウェアにおいて、専用ハードウェア(たとえば、図4および図5における分割スヌープディレクトリ電力コントローラ404a、404b、および/またはプロセッサキャッシュ電力コントローラ402a、402b、402c)において、または、他の個々の構成要素を含む分割スヌープディレクトリシステム内のソフトウェアを実行するプロセッサなど、プロセッサおよび専用ハードウェアの組合せにおいて実施され得る。様々な態様において可能にされる代替構成を包含するために、方法1300を実施するハードウェアは、本明細書では「処理デバイス」と呼ばれる。様々な態様では、方法1300は、図7を参照しながら説明した方法700の一部として、その拡張において、それとともに、またはそれとは別個に実施され得る。
【０１００】
ブロック1302で、処理デバイスは、第1の電力領域(たとえば、図4および図5における電力領域400a、400b)におけるウェイクアップ条件を受信し得る。ウェイクアップ条件は、第1の電力領域を高電力、「ON」状態に変化させるための条件であり得る。ウェイクアップ条件を受信することは、電力ドロー、温度、割込み、および/または、マルチコアプロセッサ(たとえば、図4および図5におけるマルチコアプロセッサ14a、14b、14c)と、プロセッサコア(たとえば、図4および図5におけるプロセッサコア300a、300b、300c、300d、300e、300f)と、プライベートキャッシュ(たとえば、図4および図5におけるプライベートキャッシュ302a、302b、302c、302d、302e、302f)または共有キャッシュ(たとえば、図4および図5における共有キャッシュ304a、304b、304c)を含む、プロセッサキャッシュとのいずれかを含む、第1の電力領域の構成要素の入出力アクティビティを監視することに基づき得る。電力ドロー、温度、および/または入出力アクティビティの監視レベルの増大は、ウェイクアップイベントが第1の電力領域において発生したことを、処理デバイスに示し得る。いくつかの態様では、処理デバイスは、N個の電力領域について、ブロック1302における動作を実行し得る。
【０１０１】
決定ブロック1304で、処理デバイスは、第1の電力領域のための第1の分割スヌープディレクトリ(たとえば、図3〜図5における分割スヌープディレクトリ310a、310b)がすでに電源投入されているか否かを決定し得る。いくつかの態様では、処理デバイスは、N個の電力領域およびN個の分割スヌープディレクトリについて、決定ブロック1304における動作を実行し得る。
【０１０２】
第1の電力領域に関連付けられた第1の分割スヌープディレクトリがまだ電源投入されていないとの決定に応答して(すなわち、決定ブロック1304=「No」)、処理デバイスは、ブロック1314で、第1の分割スヌープディレクトリを電源投入し得る。いくつかの態様では、処理デバイスは、N個の電力領域およびN個の分割スヌープディレクトリについて、ブロック1314における動作を実行し得る。
【０１０３】
第1の電力領域に関連付けられた第1の分割スヌープディレクトリがすでに電源投入されているとの決定に応答して(すなわち、決定ブロック1304=「Yes」)、処理デバイスは、決定ブロック1306で、第1の分割スヌープディレクトリが有効化されているか否かを決定し得る。いくつかの態様では、処理デバイスは、N個の電力領域およびN個の分割スヌープディレクトリについて、決定ブロック1306における動作を実行し得る。
【０１０４】
第1の分割スヌープディレクトリが有効化されていないとの決定に応答して(すなわち、決定ブロック1306=「No」)、またはブロック1314で、第1の分割スヌープディレクトリを電源投入した後、処理デバイスは、ブロック1308で、第1の電力領域に関連付けられた第1の分割スヌープディレクトリのためのタグ初期化をトリガし、第1の電力領域に関連付けられた第1の分割スヌープディレクトリを有効化することをトリガし得る。いくつかの態様では、処理デバイスは、N個の電力領域およびN個の分割スヌープディレクトリについて、ブロック1308における動作を実行し得る。
【０１０５】
ブロック1310で、処理デバイスは、第1の電力領域に関連付けられた第1の分割スヌープディレクトリを有効化し得る。いくつかの態様では、処理デバイスは、N個の電力領域およびN個の分割スヌープディレクトリについて、ブロック1310における動作を実行し得る。
【０１０６】
第1の電力領域に関連付けられた第1の分割スヌープディレクトリが有効化されているとの決定に応答して(すなわち、決定ブロック1306=「Yes」)、またはブロック1310で、第1の分割スヌープディレクトリを有効化した後、処理デバイスは、ブロック1312で、第1の分割スヌープディレクトリの有効化の肯定応答を送り得る。いくつかの態様では、処理デバイスは、N個の電力領域およびN個の分割スヌープディレクトリについて、ブロック1312における動作を実行し得る。
【０１０７】
図14は、一態様によるマルチコアプロセッサ状態シグナリングを用いて、複数の電力領域のための分割スヌープディレクトリ無効化を実施するための方法1400を示す。方法1400は、任意の数N個の電力領域について実施され得、Nは1よりも大きい整数である。方法1400は、プロセッサ(たとえば、図1および図2におけるプロセッサ14)において実行するソフトウェアにおけるコンピューティングデバイスにおいて、汎用ハードウェアにおいて、専用ハードウェア(たとえば、図4および図5における分割スヌープディレクトリ電力コントローラ404a、404b、および/またはプロセッサキャッシュ電力コントローラ402a、402b、402c)において、または、他の個々の構成要素を含む分割スヌープディレクトリシステム内のソフトウェアを実行するプロセッサなど、プロセッサおよび専用ハードウェアの組合せにおいて実施され得る。様々な態様において可能にされる代替構成を包含するために、方法1400を実施するハードウェアは、本明細書では「処理デバイス」と呼ばれる。様々な態様では、方法1400は、図7を参照しながら説明した方法700の一部として、その拡張において、それとともに、またはそれとは別個に実施され得る。
【０１０８】
ブロック1402で、処理デバイスは、第1の電力領域(たとえば、図4および図5における電力領域400a、400b)を、電源切断および保持状態を含む低電力状態に変化させるための条件を受信し得る。電源切断、「OFF」、または保持(すなわち、「RET」)条件を受信することは、電力状態、電力ドロー、温度、および/または、マルチコアプロセッサ(たとえば、図4および図5におけるマルチコアプロセッサ14a、14b、14c)と、プロセッサコア(たとえば、図4および図5におけるプロセッサコア300a、300b、300c、300d、300e、300f)と、プライベートキャッシュ(たとえば、図4および図5におけるプライベートキャッシュ302a、302b、302c、302d、302e、302f)または共有キャッシュ(たとえば、図4および図5における共有キャッシュ304a、304b、304c)を含む、プロセッサキャッシュとのいずれかを含む、第1の電力領域の構成要素の入出力アクティビティの信号を監視または受信することに基づき得る。電力ドロー、温度、および/または入出力アクティビティの監視レベルの減少または停止は、電源切断または保持イベントが第1の電力領域において発生したことを、処理デバイスに示し得る。いくつかの態様では、処理デバイスは、N個の電力領域について、ブロック1402における動作を実行し得る。
【０１０９】
決定ブロック1404で、処理デバイスは、低電力状態に変化させるための条件が、第1の電力領域の最後に電力供給されたプロセッサキャッシュのためのものであるか否かを決定し得る。言い換えれば、プロセッサは、プロセッサキャッシュを電源切断するかまたは保持にするかのいずれかによって、低電力状態に変化させることが、第1の電力領域のプロセッサキャッシュのすべてが「OFF」または「RET」電力状態であり、いずれも「ON」電力状態ではない結果となるか否かを決定し得る。いくつかの態様では、処理デバイスは、N個の電力領域について、ブロック1404における動作を実行し得る。
【０１１０】
低電力状態に変化させるための条件が、最後に電力供給されたプロセッサキャッシュのためのものではないとの決定に応答して(すなわち、決定ブロック1404=「No」)、処理デバイスは、ブロック1410で、第1の分割スヌープディレクトリを有効化されたままにし得る。いくつかの態様では、処理デバイスは、N個の電力領域およびN個の分割スヌープディレクトリについて、ブロック1410における動作を実行し得る。
【０１１１】
低電力状態に変化させるための条件が、最後に電力供給されたプロセッサキャッシュのためのものであるとの決定に応答して(すなわち、決定ブロック1404=「Yes」)、処理デバイスは、ブロック1406で、第1の電力領域に関連付けられた第1の分割スヌープディレクトリを無効化し得る。いくつかの態様では、処理デバイスは、N個の電力領域およびN個の分割スヌープディレクトリについて、ブロック1406における動作を実行し得る。
【０１１２】
ブロック1408で、処理デバイスは、第1の電力領域に関連付けられた第1の分割スヌープディレクトリを電源切断するか、または保持にし得る。いくつかの態様では、処理デバイスは、N個の電力領域およびN個の分割スヌープディレクトリについて、ブロック1408における動作を実行し得る。
【０１１３】
本明細書で説明した方法700、1300、1400では、信号、要求、および肯定応答の送信(すなわち、送ること、および受信すること)は、分割スヌープディレクトリ電力コントローラ(たとえば、図4および図5における分割スヌープディレクトリ電力コントローラ404a、404b)と、電力領域(たとえば、図4および図5における電力領域400a、400b)との間で発生し得る。
【０１１４】
図15は、一態様による複数の電力領域のための分割スヌープディレクトリを実装するための方法1500を示す。方法1500は、任意の数N個の電力領域について実施され得、Nは1よりも大きい整数である。方法1500は、プロセッサ(たとえば、図1および図2におけるプロセッサ14)において実行するソフトウェアにおけるコンピューティングデバイスにおいて、汎用ハードウェアにおいて、専用ハードウェア(たとえば、図4および図5における分割スヌープディレクトリ電力コントローラ404a、404b、および/またはプロセッサキャッシュ電力コントローラ402a、402b、402c)において、または、他の個々の構成要素を含む分割スヌープディレクトリシステム内のソフトウェアを実行するプロセッサなど、プロセッサおよび専用ハードウェアの組合せにおいて実施され得る。様々な態様において可能にされる代替構成を包含するために、方法1500を実施するハードウェアは、本明細書では「処理デバイス」と呼ばれる。
【０１１５】
ブロック1502で、処理デバイスは、1つの電力領域(たとえば、図4および図5における電力領域400a、400b)に各々対応する、複数の分割スヌープディレクトリ(たとえば、図3〜図5における分割スヌープディレクトリ310a、310b)を初期化し得る。様々な態様では、処理デバイスは、第1の電力領域のための第1の分割スヌープディレクトリと、第2の電力領域のための第2の分割スヌープディレクトリとを初期化し得る。第1の電力領域は、第1の複数のプロセッサキャッシュ(たとえば、図4および図5におけるプライベートキャッシュ302a、302b、302c、302d、302e、302f、および/または共有キャッシュ304a、304b、304c)を含み得、第2の電力領域は、少なくとも1つのプロセッサキャッシュを含む。いくつかの態様では、処理デバイスは、N個(すなわち、第1、第2、第3、第4など)の電力領域、およびN個(すなわち、第1、第2、第3、第4など)の分割スヌープディレクトリについて、ブロック1502における動作を実行し得る。
【０１１６】
ブロック1504で、処理デバイスは、各電力領域および対応する分割スヌープディレクトリについて、個別に、および/または並列に、図7〜図14を参照しながら説明した方法700、800、900、1000、1100、1200、1300、1400のうちの1つまたは複数を実施し得る。これは、第1の電力領域および対応する第1の分割スヌープディレクトリと、第2の電力領域および対応する第2の分割スヌープディレクトリとを含み得る。いくつかの態様では、処理デバイスは、N個の電力領域およびN個の分割スヌープディレクトリについて、ブロック1504における動作を実行し得る。
【０１１７】
(限定はしないが、図1〜図15を参照しながら上記で説明した態様を含む)様々な態様は、モバイルコンピューティングデバイスを含む多種多様なコンピューティングシステムにおいて実装されてよく、様々な態様とともに使用するのに好適なモバイルコンピューティングデバイスの一例を図16に示す。モバイルコンピューティングデバイス1600は、タッチスクリーンコントローラ1604と内部メモリ1606とに結合されたプロセッサ1602を含み得る。プロセッサ1602は、汎用または特定の処理タスクに指定された1つまたは複数のマルチコア集積回路であり得る。内部メモリ1606は、揮発性メモリまたは不揮発性メモリであってよく、また、セキュアメモリおよび/もしくは暗号化メモリまたは非セキュアメモリおよび/もしくは非暗号化メモリ、あるいはそれらの任意の組合せであってもよい。活用されてもよいメモリタイプの例には、限定はしないが、DDR、LPDDR、GDDR、WIDEIO、RAM、SRAM、DRAM、P-RAM、R-RAM、M-RAM、STT-RAM、および埋め込みDRAMが含まれる。タッチスクリーンコントローラ1604およびプロセッサ1602は、抵抗感知タッチスクリーン、容量感知タッチスクリーン、赤外線感知タッチスクリーンなどのタッチスクリーンパネル1612に結合されてもよい。追加として、コンピューティングデバイス1600のディスプレイは、タッチスクリーン機能を有する必要がない。
【０１１８】
モバイルコンピューティングデバイス1600は、互いに結合されたおよび/またはプロセッサ1602に結合された、通信を送受信するための1つまたは複数の無線信号トランシーバ1608(たとえば、Peanut、Bluetooth(登録商標)、Zigbee、Wi-Fi、RF無線)と、アンテナ1610とを有し得る。トランシーバ1608およびアンテナ1610は、様々なワイヤレス送信プロトコルスタックおよびインターフェースを実装するために、上述の回路とともに使用され得る。モバイルコンピューティングデバイス1600は、セルラーネットワークを経由した通信を可能にするとともにプロセッサに結合されているセルラーネットワークワイヤレスモデムチップ1616を含み得る。
【０１１９】
モバイルコンピューティングデバイス1600は、プロセッサ1602に結合された周辺デバイス接続インターフェース1618を含み得る。周辺デバイス接続インターフェース1618は、1つのタイプの接続を受け入れるように単独で構成されてよく、またはユニバーサルシリアルバス(USB)、FireWire、Thunderbolt、もしくはPCIeなどの、一般的もしくはプロプライエタリな様々なタイプの物理接続および通信接続を受け入れるように構成されてもよい。周辺デバイス接続インターフェース1618はまた、同様に構成された周辺デバイス接続ポート(図示せず)に結合され得る。
【０１２０】
モバイルコンピューティングデバイス1600はまた、オーディオ出力を提供するためのスピーカー1614を含み得る。モバイルコンピューティングデバイス1600はまた、本明細書で説明する構成要素の全部または一部を収容するための、プラスチック、金属、または材料の組合せから構成されたハウジング1620を含み得る。モバイルコンピューティングデバイス1600は、使い捨てバッテリーまたは充電式バッテリーなどの、プロセッサ1602に結合された電源1622を含み得る。充電式バッテリーはまた、モバイルコンピューティングデバイス1600の外部のソースから充電電流を受けるために、周辺デバイス接続ポートに結合され得る。モバイルコンピューティングデバイス1600はまた、ユーザ入力を受け取るための物理ボタン1624を含み得る。モバイルコンピューティングデバイス1600はまた、モバイルコンピューティングデバイス1600をオンオフするための電源ボタン1626を含み得る。
【０１２１】
(限定はしないが、図1〜図15を参照しながら上記で説明した態様を含む)様々な態様は、ラップトップコンピュータ1700を含む多種多様なコンピューティングシステムにおいて実装されてよく、ラップトップコンピュータ1700の一例を図17に示す。多くのラップトップコンピュータは、コンピュータのポインティングデバイスとして働くタッチパッドのタッチ面1717を含み、したがって、タッチスクリーンディスプレイを装備した上述のコンピューティングデバイス上で実装されるものと同様のドラッグジェスチャー、スクロールジェスチャー、およびフリックジェスチャーを受信し得る。ラップトップコンピュータ1700は通常、揮発性メモリ1712と、フラッシュメモリのディスクドライブ1713などの大容量不揮発性メモリとに結合されたプロセッサ1711を含む。加えて、コンピュータ1700は、プロセッサ1711に結合されたワイヤレスデータリンクおよび/またはセルラー電話トランシーバ1716に接続され得る、電磁放射を送受信するための1つまたは複数のアンテナ1708を有し得る。コンピュータ1700はまた、プロセッサ1711に結合されたフロッピー(登録商標)ディスクドライブ1714およびコンパクトディスク(CD)ドライブ1715を含み得る。ノートブック構成では、コンピュータハウジングは、すべてがプロセッサ1711に結合されたタッチパッド1717、キーボード1718、およびディスプレイ1719を含む。コンピューティングデバイスの他の構成は、よく知られているように、(たとえば、USB入力を介して)プロセッサに結合されたコンピュータマウスまたはトラックボールを含み得、それらはまた、様々な態様とともに使用され得る。
【０１２２】
(限定はしないが、図1〜図15を参照しながら上記で説明した態様を含む)様々な態様はまた、様々な市販のサーバのうちのいずれかなど、固定コンピューティングシステムにおいて実装され得る。例示的なサーバ1800を図18に示す。そのようなサーバ1800は、通常、揮発性メモリ1802およびディスクドライブ1804などの大容量不揮発性メモリに結合された1つまたは複数のマルチコアプロセッサアセンブリ1801を含む。図18に示すように、マルチコアプロセッサアセンブリ1801は、それらをアセンブリのラックに挿入することによって、サーバ1800に追加され得る。サーバ1800はまた、プロセッサ1801に結合されたフロッピー(登録商標)ディスクドライブ、コンパクトディスク(CD)またはデジタル多用途ディスク(DVD)ディスクドライブ1806を含み得る。サーバ1800はまた、他のブロードキャストシステムコンピュータおよびサーバに結合されたローカルエリアネットワーク、インターネット、公衆交換電話網、ならびに/またはセルラーデータネットワーク(たとえば、CDMA、TDMA、GSM(登録商標)、PCS、3G、4G、LTE、または任意の他のタイプのセルラーデータネットワーク)など、ネットワーク1805とのネットワークインターフェース接続を確立するための、マルチコアプロセッサアセンブリ1801に結合されたネットワークアクセスポート1803を含み得る。
【０１２３】
様々な態様の動作を遂行するためにプログラマブルプロセッサ上で実行されるコンピュータプログラムコードまたは「プログラムコード」は、C、C++、C#、Smalltalk、Java(登録商標)、JavaScript(登録商標)、Visual Basic、構造化照会言語(たとえば、Transact-SQL)、Perlなどの高水準プログラミング言語で、または様々な他のプログラミング言語で書かれることがある。本出願で使用する、コンピュータ可読記憶媒体上に記憶されるプログラムコードまたはプログラムは、そのフォーマットがプロセッサによって理解可能である(オブジェクトコードなどの)機械言語コードを指す場合がある。
【０１２４】
上記の方法説明およびプロセスフロー図は、単に例示的な例として提供され、様々な態様の動作が提示された順序で実行されなければならないことを要求または暗示するものではない。当業者によって諒解されるように、上記の態様における動作の順序は、任意の順序で実行され得る。「その後」、「次いで」、「次に」などの単語は、動作の順序を限定するものではなく、これらの単語は、方法の説明を通して読者を導くために使用されるにすぎない。さらに、たとえば、冠詞「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)、SoC
14  プロセッサ、マルチコアプロセッサ
14a  プロセッサ1、マルチコアプロセッサ
14b  プロセッサN、マルチコアプロセッサ
14c  マルチコアプロセッサ
16  メモリ、メモリデバイス
18  通信インターフェース
20  ストレージメモリインターフェース
22  通信構成要素
24  ストレージメモリ、記憶デバイス
26、1610、1708  アンテナ
200、201、202、203  プロセッサコア
210、212、214、216  プライベートキャッシュ
230  共有キャッシュ
300a  プロセッサコア1、プロセッサコア
300b  プロセッサコアM、プロセッサコア
300c  プロセッサコア1、プロセッサコア
300d  プロセッサコアP、プロセッサコア
300e  プロセッサコア、プロセッサコア1
300f  プロセッサコア、プロセッサコアR
302a、302b、302c、302d、302e、302f  プライベートキャッシュ、プロセッサキャッシュ
304a、304b、304c  共有キャッシュ、プロセッサキャッシュ
306a、306b  入出力(I/O)エージェント、I/Oエージェント
308  コヒーレント相互接続
310a、310b  分割スヌープディレクトリ
312  メインメモリまたはランダムアクセスメモリ構成要素、ランダムアクセスメモリ構成要素
400a、400b  電力領域
402a、402b、402c  プロセッサキャッシュ電力コントローラ
404a、404b  分割スヌープディレクトリ電力コントローラ
600  電力状態テーブル
1600  モバイルコンピューティングデバイス、コンピューティングデバイス
1602、1711  プロセッサ
1604  タッチスクリーンコントローラ
1606  内部メモリ
1608  無線信号トランシーバ、トランシーバ
1612  タッチスクリーンパネル
1614  スピーカー
1616  セルラーネットワークワイヤレスモデムチップ
1618  周辺デバイス接続インターフェース
1620  ハウジング
1622  電源
1624  物理ボタン
1626  電源ボタン
1700  ラップトップコンピュータ、コンピュータ
1712、1802  揮発性メモリ
1713、1804  ディスクドライブ
1715  コンパクトディスク(CD)ドライブ
1716  ワイヤレスデータリンクおよび/またはセルラー電話トランシーバ
1717  タッチパッドのタッチ面、タッチパッド
1718  キーボード
1719  ディスプレイ
1800  サーバ
1801  マルチコアプロセッサアセンブリ、プロセッサ
1803  ネットワークアクセスポート
1805  ネットワーク
【図１】
2019534501.tif 000003
【図２】
2019534501.tif 000004
【図３】
2019534501.tif 000005
【図４】
2019534501.tif 000006
【図５】
2019534501.tif 000007
【図６】
2019534501.tif 000008
【図７】
2019534501.tif 000009
【図８】
2019534501.tif 000010
【図９】
2019534501.tif 000011
【図１０】
2019534501.tif 000012
【図１１】
2019534501.tif 000013
【図１２】
2019534501.tif 000014
【図１３】
2019534501.tif 000015
【図１４】
2019534501.tif 000016
【図１５】
2019534501.tif 000017
【図１６】
2019534501.tif 000018
【図１７】
2019534501.tif 000019
【図１８】
2019534501.tif 000020
【手続補正書】
【提出日】平成31年3月11日(2019.3.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピューティングデバイス上で複数の分割スヌープディレクトリを実装する方法であって、
第1の電力領域のための第1の分割スヌープディレクトリと、第2の電力領域のための第2の分割スヌープディレクトリとを有効化するステップであって、前記第1の電力領域が、複数のプロセッサキャッシュを含み、前記第2の電力領域が、少なくとも1つのプロセッサキャッシュを含む、ステップと、
前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定するステップと、
前記複数のプロセッサキャッシュのすべてが低電力状態であるとの決定に応答して、前記第1の分割スヌープディレクトリを無効化するステップと
を含む方法。
【請求項２】
前記複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための条件を検出するステップと、
前記少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための前記条件の検出に応答して、前記第1の分割スヌープディレクトリを低電力状態に変化させるための要求を送るステップと
をさらに含む、請求項1に記載の方法。
【請求項３】
前記第1の分割スヌープディレクトリを低電力状態に変化させるための前記要求を受信するステップをさらに含み、
前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定するステップが、前記第1の分割スヌープディレクトリを低電力状態に変化させるための前記要求の受信に応答して、前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定するステップを含む、請求項2に記載の方法。
【請求項４】
前記複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための条件を受信するステップをさらに含み、
前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定するステップが、前記少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための前記条件の検出に応答して、前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定するステップを含む、請求項1に記載の方法。
【請求項５】
前記複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための条件を受信するステップが、前記第1の電力領域から、前記複数のプロセッサキャッシュのうちの前記少なくとも1つのプロセッサキャッシュの電力状態を示す信号を受信するステップを含む、請求項4に記載の方法。
【請求項６】
前記複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュが高電力状態であるとの決定に応答して、前記第1の分割スヌープディレクトリを有効化されたままにするステップをさらに含む、請求項1に記載の方法。
【請求項７】
前記複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュを高電力状態に変化させるための条件を検出するステップと、
前記少なくとも1つのプロセッサキャッシュを高電力状態に変化させるための前記条件の検出と、前記複数のプロセッサキャッシュが低電力状態であるとの決定とに応答して、前記第1の分割スヌープディレクトリを有効化するステップと
をさらに含む、請求項1に記載の方法。
【請求項８】
低電力状態が、「OFF」状態および「RET」(保持)状態のうちの1つを含み、
高電力状態が、「ON」状態を含む、請求項7に記載の方法。
【請求項９】
N個の電力領域のためのN個の分割スヌープディレクトリと、M個の電力領域のためのM個の分割スヌープディレクトリとを有効化するステップであって、NおよびMが1よりも大きい整数であり、前記N個の電力領域が、N個の複数のプロセッサキャッシュを含み、前記M個の電力領域が、少なくとも1つのプロセッサキャッシュを含む、ステップと、
前記N個の複数のプロセッサキャッシュのいずれかがすべて低電力状態であるか否かを決定するステップと、
そのための前記複数のプロセッサキャッシュのすべてが低電力状態である、前記N個の分割スヌープディレクトリのいずれかを無効化するステップと
をさらに含む、請求項1に記載の方法。
【請求項１０】
複数の分割スヌープディレクトリを実装するように構成されたコンピューティングデバイスであって、
複数のプロセッサキャッシュを含む、第1の電力領域と、
少なくとも1つのプロセッサキャッシュを含む、第2の電力領域と、
前記第1の電力領域のための第1の分割スヌープディレクトリと、前記第2の電力領域のための第2の分割スヌープディレクトリとを有する、コヒーレント相互接続と、
前記第1の電力領域に通信可能に接続され、前記コヒーレント相互接続に通信可能に接続された、第1の処理デバイスと、
前記第2の電力領域に通信可能に接続され、前記コヒーレント相互接続に通信可能に接続された、第2の処理デバイスと
を備え、
前記第1の処理デバイスが、
前記第1の分割スヌープディレクトリを有効化すること、
前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定すること、および
前記複数のプロセッサキャッシュのすべてが低電力状態であるとの決定に応答して、前記第1の分割スヌープディレクトリを無効化すること
を含む動作を実行するように構成される、コンピューティングデバイス。
【請求項１１】
前記コンピューティングデバイスが、前記第1の電力領域に通信可能に接続され、前記第1の処理デバイスに通信可能に接続された、第3の処理デバイスをさらに備え、前記第3の処理デバイスが、
前記複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための条件を検出すること、および
前記少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための前記条件の検出に応答して、前記第1の分割スヌープディレクトリを低電力状態に変化させるための要求を、前記第1の処理デバイスに送ること
を含む動作を実行するように構成される、請求項10に記載のコンピューティングデバイス。
【請求項１２】
前記第1の処理デバイスが、前記第1の分割スヌープディレクトリを低電力状態に変化させるための前記要求を受信することをさらに含む、動作を実行するように構成され、
前記第1の処理デバイスが、前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定することが、前記第1の分割スヌープディレクトリを低電力状態に変化させるための前記要求の受信に応答して、前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定することを含むように、動作を実行するように構成される、請求項11に記載のコンピューティングデバイス。
【請求項１３】
前記第1の処理デバイスが、前記複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための条件を受信することをさらに含む、動作を実行するように構成され、
前記第1の処理デバイスが、前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定することが、前記少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための前記条件の検出に応答して、前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定することを含むように、動作を実行するように構成される、請求項10に記載のコンピューティングデバイス。
【請求項１４】
前記第1の処理デバイスが、前記複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための条件を受信することが、前記第1の電力領域から、前記複数のプロセッサキャッシュのうちの前記少なくとも1つのプロセッサキャッシュの電力状態を示す信号を受信することを含むように、動作を実行するように構成される、請求項13に記載のコンピューティングデバイス。
【請求項１５】
前記第1の処理デバイスが、前記複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュが高電力状態であるとの決定に応答して、前記第1の分割スヌープディレクトリを有効化されたままにすることをさらに含む、動作を実行するように構成される、請求項10に記載のコンピューティングデバイス。
【請求項１６】
前記コンピューティングデバイスが、前記第1の電力領域に通信可能に接続され、前記第1の処理デバイスに通信可能に接続された、第3の処理デバイスをさらに備え、前記第3の処理デバイスが、前記複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュを高電力状態に変化させるための条件を検出することを含む、動作を実行するように構成され、
前記第1の処理デバイスが、前記第3の処理デバイスによる、前記少なくとも1つのプロセッサキャッシュを高電力状態に変化させるための前記条件の検出と、前記複数のプロセッサキャッシュが低電力状態であるとの決定とに応答して、前記第1の分割スヌープディレクトリを有効化することをさらに含む、動作を実行するように構成される、請求項10に記載のコンピューティングデバイス。
【請求項１７】
低電力状態が、「OFF」状態および「RET」(保持)状態のうちの1つを含み、
高電力状態が、「ON」状態を含む、請求項16に記載のコンピューティングデバイス。
【請求項１８】
前記第1の処理デバイスおよび前記第3の処理デバイスが、同じ処理デバイスである、請求項16に記載のコンピューティングデバイス。
【請求項１９】
前記コンピューティングデバイスが、
N個の複数のプロセッサキャッシュを含む、N個の電力領域と、
少なくとも1つのプロセッサキャッシュを含む、M個の電力領域と
をさらに備え、
前記第1の処理デバイスが、
前記N個の電力領域のためのN個の分割スヌープディレクトリと、前記M個の電力領域のためのM個の分割スヌープディレクトリとを有効化することであって、NおよびMが1よりも大きい整数である、有効化すること、
前記N個の複数のプロセッサキャッシュのいずれかがすべて低電力状態であるか否かを決定すること、および
そのための前記複数のプロセッサキャッシュのすべてが低電力状態である、前記N個の分割スヌープディレクトリのいずれかを無効化すること
をさらに含む、動作を実行するように構成される、請求項10に記載のコンピューティングデバイス。
【請求項２０】
複数の分割スヌープディレクトリを実装するように構成されたコンピューティングデバイスであって、
第1の電力領域のための第1の分割スヌープディレクトリと、第2の電力領域のための第2の分割スヌープディレクトリとを有効化するための手段であって、前記第1の電力領域が、複数のプロセッサキャッシュを含み、前記第2の電力領域が、少なくとも1つのプロセッサキャッシュを含む、手段と、
前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定するための手段と、
前記複数のプロセッサキャッシュのすべてが低電力状態であるとの決定に応答して、前記第1の分割スヌープディレクトリを無効化するための手段と
を備える、コンピューティングデバイス。
【請求項２１】
前記複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための条件を検出するための手段と、
前記少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための前記条件の検出に応答して、前記第1の分割スヌープディレクトリを低電力状態に変化させるための要求を送るための手段と
をさらに備える、請求項20に記載のコンピューティングデバイス。
【請求項２２】
前記コンピューティングデバイスが、前記第1の分割スヌープディレクトリを低電力状態に変化させるための前記要求を受信するための手段をさらに備え、
前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定するための手段が、前記第1の分割スヌープディレクトリを低電力状態に変化させるための前記要求の受信に応答して、前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定するための手段を備える、請求項21に記載のコンピューティングデバイス。
【請求項２３】
前記コンピューティングデバイスが、前記複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための条件を受信するための手段をさらに備え、
前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定するための手段が、前記少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための前記条件の検出に応答して、前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定するための手段を備える、請求項20に記載のコンピューティングデバイス。
【請求項２４】
前記複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための条件を受信するための手段が、前記第1の電力領域から、前記少なくとも1つのプロセッサキャッシュの電力状態を示す信号を受信するための手段を備える、請求項23に記載のコンピューティングデバイス。
【請求項２５】
前記複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュが高電力状態であるとの決定に応答して、前記第1の分割スヌープディレクトリを有効化されたままにするための手段をさらに備える、請求項20に記載のコンピューティングデバイス。
【請求項２６】
前記複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュを高電力状態に変化させるための条件を検出するための手段と、
前記少なくとも1つのプロセッサキャッシュを高電力状態に変化させるための前記条件の検出と、前記複数のプロセッサキャッシュが低電力状態であるとの決定とに応答して、前記第1の分割スヌープディレクトリを有効化するための手段と
をさらに備える、請求項25に記載のコンピューティングデバイス。
【請求項２７】
低電力状態が、「OFF」状態および「RET」(保持)状態のうちの1つを含み、
高電力状態が、「ON」状態を含む、請求項26に記載のコンピューティングデバイス。
【請求項２８】
N個の電力領域のためのN個の分割スヌープディレクトリと、M個の電力領域のためのM個の分割スヌープディレクトリとを有効化するための手段であって、NおよびMが1よりも大きい整数であり、前記N個の電力領域が、N個の複数のプロセッサキャッシュを含み、前記M個の電力領域が、少なくとも1つのプロセッサキャッシュを含む、手段と、
前記N個の複数のプロセッサキャッシュのいずれかがすべて低電力状態であるか否かを決定するための手段と、
そのための前記複数のプロセッサキャッシュのすべてが低電力状態である、前記N個の分割スヌープディレクトリのいずれかを無効化するための手段と
をさらに備える、請求項20に記載のコンピューティングデバイス。
【請求項２９】
コンピューティングデバイスのプロセッサに動作を実行させるように構成されたプロセッサ実行可能命令を記憶した非一時的プロセッサ可読記憶媒体であって、前記動作が、
第1の電力領域のための第1の分割スヌープディレクトリと、第2の電力領域のための第2の分割スヌープディレクトリとを有効化することであって、前記第1の電力領域が、複数のプロセッサキャッシュを含み、前記第2の電力領域が、少なくとも1つのプロセッサキャッシュを含む、有効化すること、
前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定すること、および
前記複数のプロセッサキャッシュのすべてが低電力状態であるとの決定に応答して、前記第1の分割スヌープディレクトリを無効化すること
を含む、非一時的プロセッサ可読記憶媒体。
【請求項３０】
前記記憶されたプロセッサ実行可能命令が、前記プロセッサに、
前記複数のプロセッサキャッシュのうちの少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための条件を検出すること、
前記少なくとも1つのプロセッサキャッシュを低電力状態に変化させるための前記条件の検出に応答して、前記第1の分割スヌープディレクトリを低電力状態に変化させるための要求を送ること、および
前記第1の分割スヌープディレクトリを低電力状態に変化させるための前記要求を受信すること
をさらに含む、動作を実行させるように構成され、
前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定することが、前記第1の分割スヌープディレクトリを低電力状態に変化させるための前記要求の受信に応答して、前記複数のプロセッサキャッシュのすべてが低電力状態であるか否かを決定することを含む、請求項29に記載の非一時的プロセッサ可読記憶媒体。
【国際調査報告】
2019534501.tif 000021
2019534501.tif 000022
2019534501.tif 000023