(57)【要約】  低レイテンシのキャッシュ介入メカニズムが、スヌープフィルタを実装して、コンピュータシステムのマルチプロセッサアーキテクチャにおけるキャッシュ「ヒット」のための介入者キャッシュを動的に選択する。介入者の選択は、コンピュータシステムのレイテンシ、トポロジ、周波数、利用、負荷、損耗バランス、および/または電力状態などの変数に基づく。
2016529639.tif 000002
【特許請求の範囲】
【請求項１】
要求されたキャッシュラインを読み取る要求をコンピュータシステム中の要求元プロセッサから取得するステップと、
1つまたは複数の所有プロセッサに関連する1つまたは複数のキャッシュが前記要求されたキャッシュラインを含むと決定するステップと、
前記要求されたキャッシュラインを前記要求元プロセッサに提供すべき所有プロセッサを前記1つまたは複数の所有プロセッサから選択するステップであって、前記所有プロセッサを前記選択するステップは1つまたは複数の変数に基づく、ステップと、
前記要求されたキャッシュラインを前記要求元プロセッサに提供するように、前記選択された所有プロセッサに通知するステップとを含む方法。
【請求項２】
前記1つまたは複数の所有プロセッサに関連するキャッシュラインについてのエントリのディレクトリを維持するステップをさらに含む、請求項1に記載の方法。
【請求項３】
ある所有プロセッサに関連する前記キャッシュを選択するステップは、ある所有プロセッサに関連する変数を、少なくとも1つの他の所有プロセッサに関連する変数と比較するステップを含む、請求項1に記載の方法。
【請求項４】
ある所有プロセッサに関連する前記変数を、前記少なくとも1つの他のプロセッサに関連する前記変数と比較するステップは、等価な変数を比較するステップを含む、請求項3に記載の方法。
【請求項５】
前記1つまたは複数の変数は前記コンピュータシステムについてのトポロジを含む、請求項1に記載の方法。
【請求項６】
前記1つまたは複数の変数は前記コンピュータシステムについての電力状態を含む、請求項1に記載の方法。
【請求項７】
前記1つまたは複数の変数は前記コンピュータシステムについての周波数を含む、請求項1に記載の方法。
【請求項８】
前記1つまたは複数の変数は前記コンピュータシステムについてのレイテンシを含む、請求項1に記載の方法。
【請求項９】
前記1つまたは複数の変数は前記コンピュータシステムについての利用を含む、請求項1に記載の方法。
【請求項１０】
前記1つまたは複数の変数は前記コンピュータシステムについての損耗バランスを含む、請求項1に記載の方法。
【請求項１１】
前記1つまたは複数の変数は前記コンピュータシステムについての負荷を含む、請求項1に記載の方法。
【請求項１２】
複数のプロセッサと関連するキャッシュとを有するコンピュータシステム中でキャッシュ介入を実施するための装置であって、前記関連するキャッシュは1つまたは複数のキャッシュラインを含み、前記装置は、
スヌープモジュールであって、
要求されたキャッシュラインを読み取る要求を要求元プロセッサから取得し、
1つまたは複数の所有プロセッサに関連する1つまたは複数のキャッシュが前記要求されたキャッシュラインを含むと決定するように構成される、スヌープモジュールと、
前記コンピュータシステムに関連する1つまたは複数の変数を追跡するように構成される変数モジュールであって、前記スヌープモジュールはさらに、前記1つまたは複数の変数に基づいて、前記要求されたキャッシュラインを前記要求元プロセッサに提供すべき所有プロセッサを選択するように構成される、変数モジュールと、
前記要求されたキャッシュラインを前記要求元プロセッサに提供するように、前記選択された所有プロセッサにシグナリングするように構成されるシグナリングモジュールとを備える装置。
【請求項１３】
前記1つまたは複数の変数は前記コンピュータシステムについてのトポロジを含む、請求項12に記載の装置。
【請求項１４】
前記複数のプロセッサおよび関連するキャッシュに関連する前記1つまたは複数の変数は、前記コンピュータシステムについての電力状態を含む、請求項12に記載の装置。
【請求項１５】
前記1つまたは複数の変数は前記コンピュータシステムについての周波数を含む、請求項12に記載の装置。
【請求項１６】
前記1つまたは複数の変数は前記コンピュータシステムについてのレイテンシを含む、請求項12に記載の装置。
【請求項１７】
前記1つまたは複数の変数は前記コンピュータシステムについての利用を含む、請求項12に記載の装置。
【請求項１８】
前記1つまたは複数の変数は前記コンピュータシステムについての損耗平衡を含む、請求項12に記載の装置。
【請求項１９】
前記1つまたは複数の変数は前記コンピュータシステムについての負荷を含む、請求項12に記載の装置。
【請求項２０】
データを含む非一時的なコンピュータ可読記憶媒体であって、前記データは、機械によってアクセスされたとき、
要求されたキャッシュラインを読み取る要求をコンピュータシステム中の要求元プロセッサから取得することと、
1つまたは複数の所有プロセッサに関連する1つまたは複数のキャッシュが前記要求されたキャッシュラインを含むと決定することと、
前記要求されたキャッシュラインを前記要求元プロセッサに提供すべき所有プロセッサを前記1つまたは複数の所有プロセッサから選択することであって、前記所有プロセッサを選択することは1つまたは複数の変数に基づく、選択することと、
前記要求されたキャッシュラインを前記要求元プロセッサに提供するように、前記選択された所有プロセッサに通知することと、を含む動作を前記機械に実施させる、非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の態様は、一般にプロセッサに関し、より詳細には、マルチプロセッサにおける直接スヌープ介入に関するものである。
【背景技術】
【０００２】
通常の従来型マルチプロセッサ集積回路(すなわちチップ)は、相互接続バスを使用して相互接続された複数のプロセッサコアを利用する。各プロセッサコアは、1つまたは複数のキャッシュによってサポートされる。各キャッシュはデータファイルを記憶し、これらのデータファイルは通常、システムメモリとキャッシュとの間で、固定サイズのブロックで転送される。データのブロックを「キャッシュライン」と呼ぶ。各キャッシュは、それがキャッシュしたデータファイルに関連するすべてのアドレスのディレクトリを含む。
【０００３】
各プロセッサコアのキャッシュ済みデータは、相互接続バス上の他のすべてのプロセッサコアによって共有することができる。よって、システム中で、データの多くのコピーを有することが可能である。すなわち、オンチップまたはオフチップである場合のあるメインメモリ中に1つのコピーを有し、各プロセッサコアキャッシュ中に1つのコピーを有することが可能である。さらに、各プロセッサコアは、そのキャッシュ中にあるデータを、相互接続バス上の他の任意のプロセッサコアと共有することができる。したがって、共有されているデータとの整合性またはコヒーレンシを維持することが必要とされる。相互接続バスは、コヒーレンシが確実に維持されるようにするために、様々なプロセッサコアおよびキャッシュ間の、すべてのコヒーレンシトラフィックを扱う。
【０００４】
マルチプロセッサ中でコヒーレンシを維持するためのメカニズムの1つは、いわゆる「スヌーピング」を利用するものである。プロセッサコアが特定のキャッシュラインを必要とするとき、プロセッサコアはまず、それ自体のキャッシュを調べる。プロセッサコアがそれ自体のキャッシュ中でキャッシュラインを見つけた場合は、キャッシュ「ヒット」が起こったことになる。しかし、プロセッサコアがそれ自体のキャッシュ中でキャッシュラインを見つけなかった場合は、キャッシュ「ミス」が起こったことになる。キャッシュ「ミス」が起こったときは、他のプロセッサのキャッシュがスヌープされて、要求されたキャッシュラインを他のキャッシュのいずれかが有するかどうかが決定される。要求されたデータが別のプロセッサコアのキャッシュ中に位置する場合、この別のプロセッサコアのキャッシュは、要求元プロセッサコアがメインメモリからのデータにアクセスしなくていいように、キャッシュラインに「介入」して、キャッシュラインを要求元プロセッサコアに提供することができる。
【０００５】
このスヌーピング技法は、相互接続バス上にあるプロセッサコアおよび関連するキャッシュが2つだけの場合に、うまく機能する。たとえば、第1のプロセッサコアがキャッシュラインを要求し、要求されたキャッシュラインを第2のプロセッサコアのキャッシュが含む場合は、第2のプロセッサコアのキャッシュが、要求されたキャッシュラインを第1のプロセッサコアに提供することになる。要求されたキャッシュラインを第2のプロセッサコアのキャッシュが含まない場合は、第1のプロセッサコアのキャッシュは、オフチップのメインメモリからの、要求するキャッシュラインにアクセスすることになる。しかし、ますます多くのプロセッサコアを相互接続バスがサポートし、これらのプロセッサコアのいずれかが、要求されたデータをそのキャッシュ中に有する可能性があるので、要求されたキャッシュラインをどのプロセッサコアのキャッシュが要求元プロセッサコアに提供すべきかを決定するために、より複雑な調停メカニズムが必要である。
【０００６】
相互接続バスによってサポートされるプロセッサコアおよび関連するキャッシュが3つ以上あるときのための調停メカニズムの1つは、スヌープ要求時にデータを提供することに対する責務を示す状態情報を、キャッシュに保存する(すなわち、状態情報を「介入者(intervener)」に保存する)ことを含む。プロセッサコアがキャッシュラインを要求したとき、相互接続バスは、(たとえば、相互接続バス上のすべてのプロセッサキャッシュにスヌープ要求をブロードキャストすることによって)接続されたすべてのキャッシュを「スヌープ」する。相互接続バスによってサポートされる各プロセッサコアは、そのキャッシュラインをチェックし、介入者としてマークされたキャッシュは、要求されたキャッシュラインを要求元プロセッサコアに提供することになる。
【０００７】
より複雑な相互接続バスは、スヌープフィルタを実装する。スヌープフィルタは、相互接続バス上のすべてのプロセッサコアキャッシュによって所有されるキャッシュラインを表すエントリを維持する。相互接続バス上のすべてのプロセッサキャッシュにスヌープ要求をブロードキャストする代わりに、スヌープフィルタは、データのコピーを有する可能性のあるプロセッサキャッシュのみをスヌープするように相互接続バスに指示する。
【０００８】
歴史的に、介入キャッシュを決定するための意思決定プロセスは、固定方式に基づいて実施される。たとえば、介入キャッシュは、キャッシュラインを要求した最後のプロセッサコア、または、キャッシュラインを要求した最初のプロセッサコアに基づいて、決定される。残念ながら、最初のプロセッサコアまたは最後のプロセッサコアは、キャッシュラインの提供元として最適なプロセッサコアではない場合がある。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
よって、相互接続バスを調停するための改善された装置および方法が必要とされている。
【課題を解決するための手段】
【００１０】
本発明の例示的な実装形態は、マルチプロセッサアーキテクチャにおける相互接続モジュールバスにわたる有向スヌープ介入のための、装置、方法、システム、および非一時的な機械可読媒体を対象とする。1つまたは複数の実装形態は、低レイテンシのキャッシュ介入メカニズムを含み、このメカニズムは、スヌープフィルタを実装して、マルチプロセッサアーキテクチャにおけるキャッシュ「ヒット」のための介入者キャッシュを動的に選択する。
【００１１】
このメカニズムは、スヌープモジュールを備える装置を含み、スヌープモジュールは、要求されたキャッシュラインを読み取る要求を要求元プロセッサから取得し、1つまたは複数の所有プロセッサに関連する1つまたは複数のキャッシュが要求されたキャッシュラインを含むと決定するように構成される。本装置はさらに、コンピュータシステムに関連する1つまたは複数の変数を追跡するように構成される変数モジュールを備える。スヌープモジュールはさらに、1つまたは複数の変数に基づいて、要求されたキャッシュラインを要求元プロセッサに提供すべき所有プロセッサを選択するように構成される。本装置はさらに、要求されたキャッシュラインを要求元プロセッサに提供するように、選択された所有プロセッサにシグナリングするように構成される、シグナリングモジュールを備える。
【００１２】
このメカニズムは、要求されたキャッシュラインを読み取る要求をコンピュータシステム中の要求元プロセッサから取得するステップと、1つまたは複数の所有プロセッサに関連する1つまたは複数のキャッシュが要求されたキャッシュラインを含むと決定するステップと、要求されたキャッシュラインを要求元プロセッサに提供すべき所有プロセッサを1つまたは複数の所有プロセッサから選択するステップであって、所有プロセッサを選択するステップが1つまたは複数の変数に基づくステップと、要求されたキャッシュラインを要求元プロセッサに提供するように、選択された所有プロセッサに通知するステップとを含む方法を実施する。非一時的なコンピュータプログラム製品が、本明細書に記載のこの方法および他の方法を実施することができる。
【００１３】
この「発明の概要」は、請求項の範囲または意味を解釈または限定するために使用されることはないという理解により、提出するものである。この「発明の概要」は、特許請求される主題の重要な特徴または必須の特徴を識別するものとはせず、また、特許請求される主題の範囲を決定する際の助けとして使用されるものともしない。
【００１４】
添付の図面は、本明細書に記載の技術の実装形態についての記述に役立つように提示するものであり、実装形態を限定するためではなく例示するために提供するにすぎない。
【図面の簡単な説明】
【００１５】
【図１】1つまたは複数の実装形態による、マルチプロセッサアーキテクチャにおいて相互接続モジュールバスにわたる有向スヌープ介入を実施するのに適した例示的な環境のブロック図である。
【図２】1つまたは複数の実装形態による、キャッシュ「ミス」に応答した有向スヌープ介入を示すブロック図である。
【図３】1つまたは複数の実装形態によるコンピュータシステムを示すブロック図である。
【図４】1つまたは複数の実装形態による、マルチプロセッサアーキテクチャにおいて相互接続モジュールバスにわたる有向スヌープ介入を実施するための方法の例示的な流れ図である。
【発明を実施するための形態】
【００１６】
「発明を実施するための形態」では、添付の図を参照する。図では、参照番号の最も左の数字は、その参照番号が最初に現れる図を識別する。図面全体を通して、同じ機構およびコンポーネントを参照する場合には、同じ番号を使用する。
【００１７】
一般に、本明細書に開示される主題は、マルチプロセッサアーキテクチャにおける低レイテンシのキャッシュ介入メカニズムのための、システム、装置、非一時的なコンピュータ可読媒体、および方法を対象とする。1つまたは複数の実装形態では、相互接続モジュールが、マルチプロセッサアーキテクチャにおけるキャッシュラインの場所を追跡する。
【００１８】
相互接続モジュールによってサポートされるプロセッサが、1つまたは複数の他のプロセッサコアキャッシュ中のキャッシュラインを読み取る要求を発行したとき、相互接続モジュールは、要求されたキャッシュラインをどのキャッシュが含むかまたは所有するかを決定する。相互接続モジュールは、要求されたキャッシュラインを含むプロセッサコアキャッシュに関連する変数を比較する。次いで、相互接続モジュールは、変数の比較によって決定されるように最低レイテンシ、最低電力、最高速度などを表す、要求されたキャッシュラインを含むキャッシュを選択する。選択されたキャッシュは、要求元プロセッサコアに対する介入者(すなわち、要求されたデータを提供すべき)となる。
【００１９】
次いで、相互接続モジュールは、要求されたキャッシュラインを要求元プロセッサに提供するように、選択された介入者キャッシュに通知する。次いで、選択された介入者キャッシュは、要求されたキャッシュラインを要求元プロセッサコアに提供する。このように、要求されたキャッシュラインを提供するためにどのキャッシュが介入するかを決定するための固定方式を有するのではなく、相互接続モジュールは、変化するシステム変数に基づいて介入キャッシュを動的に選択する。
【００２０】
どのキャッシュが介入者になるかを決定するには、最低限1つのシステム変数を考慮すればよいことに留意されたい。2つ以上のシステム変数を考慮する必要はない。
【００２１】
相互接続モジュールによって考慮できるシステム変数の1つは、マルチプロセッサアーキテクチャのトポロジを含むことができる。トポロジ変数は、キャッシュラインがオンチップかどうか、キャッシュラインがオフチップかどうか、キャッシュラインがメインメモリ中にあるかどうか、キャッシュラインが別のマルチプロセッサチップ上にあるかどうか、などを考慮に入れることができる。
【００２２】
相互接続モジュールによって考慮できる別のシステム変数は、プロセッサコアおよび/またはキャッシュの電力状態を含むことができる。たとえば、相互接続モジュールは、コア/キャッシュが動作モードか、または節電モードかを考慮することができる。モードは、「スリープ」モード、「省電力」モード、「アイドル」モードなどを含む場合がある。
【００２３】
相互接続モジュールによって考慮できる別のシステム変数は、プロセッサコアの周波数、および/またはキャッシュの周波数を含むことができる。
【００２４】
相互接続モジュールによって考慮できる別のシステム変数は、異種システムにおけるレイテンシを含むことができる。たとえば、相互接続モジュールは、1つもしくは複数のグラフィックスプロセッシングユニット(GPU)、1つもしくは複数のディジタル信号プロセッサ(DSP)、および/または、32ビットと64ビットの汎用マイクロプロセッサコアの混合など、種々のアーキテクチャを有するプロセッサコアをサポートする場合がある。このシナリオでは、相互接続モジュールは、個々のプロセッサコアの、またはプロセッサコアの組合せの、レイテンシを考慮に入れることができる。
【００２５】
相互接続モジュールによって考慮できる別のシステム変数は、プロセッサコアおよび/またはキャッシュの現在の利用を含むことができる。たとえば、相互接続モジュールは、プロセッサコアおよび/またはキャッシュが命令を処理するのに使用する時間の量を考慮することができる。
【００２６】
相互接続モジュールによって考慮できる別のシステム変数は、要求されたキャッシュラインを提供すべき所有プロセッサコアおよび/またはキャッシュを選択する前の、マイクロプロセッサアーキテクチャにおける相互接続モジュールセグメントの現在の利用を含むことができる。
【００２７】
相互接続モジュールによって考慮できる別のシステム変数は、プロセッサコアおよび/またはキャッシュ要求などの損耗平衡を含むことができる。たとえば、いくつかの半導体技術(たとえば、FinFETなどのマルチゲートデバイス)は、回路の故障率が、どれくらい頻繁に回路が「使用される」か、すなわちオンとオフに切り替えられるかに関係する、という特性を有する。1つまたは複数の実装形態では、相互接続モジュールは、半導体の寿命を最大限にするために作業を「等価なパス」間で均等に分散させようとすることに基づいて、介入者になるべきキャッシュを選択することができる。
【００２８】
当然ながら、相互接続モジュールが考慮できるシステム変数を挙げたこのリストは網羅的なものではなく、はるかに多くのシステム変数を考慮することができる。たとえば、システム変数のリストは、効率ファクタを含むことができる。
【００２９】
例示すると、あるプロセッサコアのキャッシュにそれ自体の動作で重い負荷がかかり、別のプロセッサコアのキャッシュがアイドルである場合、アイドルのプロセッサコアのキャッシュが要求元プロセッサコアからより離れていても、要求されたキャッシュラインを、要求元プロセッサコアからより離れたアイドルのプロセッサコアから取得する方が効率的な場合がある。あるいは、2つの異なるタイプのプロセッサコアがあり、一方のタイプのプロセッサコアが他方のタイプのプロセッサコアよりも本質的に長いレイテンシを含む場合は、この変数もまた相互接続モジュールによって考慮することができる。本明細書の開示を読んだ後には、マルチプロセッサアーキテクチャが最も効率的な介入者選択肢を決定するための、より精巧なまたはより精巧でない低レイテンシのキャッシュ介入メカニズムをどのように設計するかが明らかであろう。
【００３０】
図1に、本明細書に記載の1つまたは複数の実装形態による、アーキテクチャ100の高レベルのブロック図を示す。アーキテクチャ100中では、相互接続バスが、要求されたキャッシュラインを要求元プロセッサコアに提供すべき介入者キャッシュを決定する。図示のアーキテクチャ100は、チップ102を含む。
【００３１】
チップ102は、「サーバ」チップとして描かれているが、そのように限定されない。たとえば、チップ102は、複数のプロセッサコアをサポートできる任意の適切な集積回路とすることができる。
【００３２】
図示のアーキテクチャ100は、システムメモリ104を含む。1つまたは複数の実装形態では、システムメモリ104は、ダイナミックRAM(DRAM)などのランダムアクセスメモリ(RAM)、および/またはその変形を含むことができる。図示のように、システムメモリ104は、チップ102に対して外部またはオフチップに位置する。
【００３３】
図示のアーキテクチャ100は、相互接続モジュール106を含む。1つまたは複数の実装形態では、相互接続モジュール106は、環境100中のコンポーネント間のデータ転送を管理する。
【００３４】
図示の相互接続モジュール106は、プロセッサコア108、110、112、114、116、118、120、122、124、126、128、130、132、134、136、および138など、複数のプロセッサコアをサポートする。各プロセッサコア108、110、112、114、116、118、120、122、124、126、128、130、132、134、136、および138は、1つまたは複数の関連するキャッシュ140、142、144、146、148、150、152、154、156、158、160、162、164、166、168、および170を備える。キャッシュは通常、データファイルのコピーを記憶する小型の高速メモリデバイスであり、データファイルはシステムメモリ104にも記憶される。キャッシュはまた、データファイルを相互と共有することもできる。
【００３５】
図示のアーキテクチャ100は、メモリコントローラ172およびメモリコントローラ174を含む。メモリコントローラ172および174は、システムメモリ104への／からのデータフローを管理する。図示の実装形態では、メモリコントローラ172および174は、チップ102上で統合されている。しかし、メモリコントローラ172および174は、別々のチップであってもよく、または、1つもしくは複数の他のチップに統合されてもよい。
【００３６】
図示の相互接続モジュール106は、スヌープモジュール176を含む。1つまたは複数の実装形態では、スヌープモジュール176は、要求されたキャッシュラインを読み取る要求を要求元プロセッサから取得する。スヌープモジュール176は、1つまたは複数の所有プロセッサに関連する1つまたは複数のキャッシュが、要求されたキャッシュラインを含むかどうか判定する。スヌープモジュール176は、マルチプロセッサアーキテクチャ100におけるキャッシュファイルの場所を追跡して、各キャッシュに記憶されたキャッシュラインを表すエントリを維持することによって、これを達成することができる。スヌープモジュール176は、要求されたキャッシュラインを要求元プロセッサコアに提供すべき所有プロセッサを、1つまたは複数の変数に基づいて選択することができる。
【００３７】
図示の相互接続モジュール106はまた、バスシグナリングモジュール178を含む。1つまたは複数の実装形態では、バスシグナリングモジュール178は、要求されたキャッシュラインを要求元プロセッサに提供するように、選択されたプロセッサコアのキャッシュに通知する、1つまたは複数の信号を含む。すなわち、バスシグナリングモジュール178は、要求されたキャッシュラインを要求元プロセッサコアに提供するように、選択された所有プロセッサコアにシグナリングする。
【００３８】
図示の相互接続モジュール106はまた、システム変数モジュール180を含む。図示のシステム変数モジュール180は、マルチプロセッサアーキテクチャ100を有するコンピュータシステムに関連する1つまたは複数の変数を追跡することができる。システム変数モジュール180は、プロセッサコアおよびそれらのキャッシュに関連する変数を含む。
【００３９】
システム変数は、キャッシュラインがオンチップか、オフチップか(たとえば、システムメモリ中、別のマルチプロセッサチップ上など)等、マルチプロセッサアーキテクチャのトポロジを含むことができる。
【００４０】
システム変数は、プロセッサコアおよび/またはキャッシュの電力状態(たとえば、コア/キャッシュが動作モードか、または節電モードか(たとえば「スリープ」モード、「省電力」モード、「アイドル」モード))を含むことができる。
【００４１】
相互接続モジュールによって考慮できる別のシステム変数は、プロセッサコアの周波数、および/またはキャッシュの周波数を含むことができる。
【００４２】
システム変数はまた、コンピュータシステムが異種システムである場合の、システムレイテンシを含む。たとえば、相互接続モジュールは、1つもしくは複数のグラフィックスプロセッシングユニット(GPU)、1つもしくは複数のディジタル信号プロセッサ(DSP)、および/または、32ビットと64ビットの汎用マイクロプロセッサコアの混合など、種々のアーキテクチャを有するプロセッサコアをサポートする場合がある。このシナリオでは、相互接続モジュールは、個々のプロセッサコアの、またはプロセッサコアの組合せの、レイテンシを考慮に入れることができる。
【００４３】
相互接続モジュールによって考慮できる別のシステム変数は、プロセッサコアおよび/またはキャッシュの現在の利用を含むことができる。
【００４４】
相互接続モジュールによって考慮できる別のシステム変数は、要求されたキャッシュラインを提供すべき所有プロセッサコアおよび/またはキャッシュを選択する前の、マイクロプロセッサアーキテクチャにおける相互接続モジュールセグメントの現在の利用を含むことができる。
【００４５】
相互接続モジュールによって考慮できる別のシステム変数は、プロセッサコアおよび/またはキャッシュ要求などの損耗平衡を含むことができる。たとえば、いくつかの半導体技術(たとえば、FinFETなどのマルチゲートデバイス)は、回路の故障率が、どれくらい頻繁に回路が「使用される」か、すなわちオンとオフに切り替えられるかに関係する、という特性を有する。1つまたは複数の実装形態では、相互接続モジュールは、半導体の寿命を最大限にするために作業を「等価なパス」間で均等に分散させようとすることに基づいて、介入者になるべきキャッシュを選択することができる。
【００４６】
当然ながら、システム変数のこのリストは網羅的なものではなく、システム変数モジュール180は、はるかに多くのシステム変数を含むことができる。
【００４７】
キャッシュ140、142、144、146、148、150、152、154、156、158、160、162、164、166、168、および170の各々は、キャッシュラインを備える。データファイルは通常、システムメモリ104とキャッシュとの間で、固定サイズのブロックで転送される。本明細書において、データのブロックを「キャッシュライン」と呼ぶ。各キャッシュは、それがキャッシュしたキャッシュラインに関連するすべてのアドレスのディレクトリを含む。
【００４８】
キャッシュラインがシステムメモリ104からキャッシュにコピーされたとき、キャッシュエントリが作成される。キャッシュエントリは、コピーされたキャッシュライン、ならびに、要求されたシステムメモリ104の場所(通常は「タグ」と呼ばれる)を含むことになる。プロセッサコアがシステムメモリ104中の場所に対して読取りまたは書込みを行う必要があるとき、プロセッサコアはまず、キャッシュ中の対応するエントリをチェックする。キャッシュは、このアドレスを含む可能性のある、そのキャッシュラインのいずれかにおける要求されたメモリの場所の内容をチェックする。プロセッサコアが、そのキャッシュ中にこのメモリの場所があることを見出した場合は、キャッシュ「ヒット」が起こったことになる。しかし、プロセッサコアが、そのキャッシュ中でこのメモリの場所を見つけなかった場合は、キャッシュ「ミス」が起こったことになる。
【００４９】
図2は、1つまたは複数の実装形態による、キャッシュ「ミス」に応答した有向スヌープ介入を示すブロック図である。本明細書に記載の技術の、1つまたは複数の実装形態によれば、プロセッサコア自体のキャッシュ中で「ミス」が起こった場合、プロセッサコアは、1つまたは複数の他のプロセッサに関連するキャッシュ中のキャッシュラインを読み取る要求を発行する。
【００５０】
説明の目的で、また図2に関して、プロセッサコア134が、システムメモリ104中のキャッシュライン0を読み取る必要があるが、プロセッサコア134のキャッシュ中でこのメモリの場所を見つけない、すなわちキャッシュ「ミス」が起こったと仮定する。プロセッサコア134は、キャッシュライン0を読み取る要求を相互接続モジュール106に発行する。スヌープモジュール176は、キャッシュ152、164、および168が、要求されたキャッシュラインを含むと決定する。これは、それぞれのキャッシュ中の名称“CL0”によって示されている。スヌープモジュール176は、キャッシュ152、164、および168について、システム変数モジュール180に含まれる変数を比較する。次いで、スヌープモジュール176は、最低レイテンシ、最低電力、最高速度などを表す、キャッシュライン0を含むキャッシュを選択する。図示の実装形態によれば、スヌープモジュール176は、名称“CL0:IN”によって示されるように、キャッシュ152を選択する。
【００５１】
次いで、バスシグナリングモジュール178は、プロセッサコア120に、そのキャッシュ152からキャッシュライン0をプロセッサコア134に提供させるよう通知する。1つまたは複数の実装形態では、バスシグナリングモジュール178は、“InterveneIfValid”信号202をアサートして、プロセッサコア120に、そのキャッシュ152からキャッシュライン0をプロセッサコア134に提供させるよう通知する。次いで、キャッシュ152は、バスシグナリングモジュール178からの“InterveneIfValid”信号に応答して、キャッシュライン0をプロセッサコア134に提供する。
【００５２】
図3は、1つまたは複数の実装形態による、有向スヌープ介入をシステム中で利用できるコンピュータシステム300を示すブロック図である。図示のコンピュータシステム300は、サーバチップ102と、システムメモリ104と、相互接続モジュール106とを備え、相互接続モジュール106は、キャッシュ304を有するマルチプロセッサチップ302と、キャッシュ308を有するグラフィックスプロセッシングユニット(GPU)306と、キャッシュ312を有するディジタル信号プロセッサ(DSP)310と、1つまたは複数のキャッシュ316を有する1つまたは複数の32ビット汎用マイクロプロセッサコア(32ビットGPコア)314と、1つまたは複数のキャッシュ320を有する1つまたは複数の64ビット汎用マイクロプロセッサコア(64ビットGPコア)318とに結合される。
【００５３】
1つまたは複数の実装形態では、マルチプロセッサチップ302は、複数のプロセッサコアをサポートできる任意の適切な集積回路であってよい。
【００５４】
1つまたは複数の実装形態では、キャッシュ304、308、312、316、および320の各々は、それがキャッシュしたキャッシュラインに関連するすべてのアドレスのディレクトリを含む。1つまたは複数の実装形態では、GPU306は、表示のために静止画や動画などの画像を処理できる任意の処理ユニットであってよい。1つまたは複数の実装形態では、DSP310は、データに対して数学的操作を実施できる任意の適切な従来型ディジタル信号プロセッサであってよい。1つまたは複数の実装形態では、32ビットGPコア314は、32ビット命令セットアーキテクチャを使用して動作できる任意の適切なマルチプロセッサであってよい。1つまたは複数の実装形態では、64ビットGPコア318は、64ビット命令セットアーキテクチャを使用して動作できる任意の適切なマルチプロセッサであってよい。
【００５５】
図4を参照しながら、コンピュータシステム300の動作について述べる。図4は、1つまたは複数の実装形態による、マルチプロセッサアーキテクチャにおいて相互接続モジュールにわたる有向スヌープ介入を実施するための方法400の例示的な流れ図である。1つまたは複数の実装形態では、非一時的なコンピュータ可読記憶媒体がデータを含むことができ、このデータは、機械によってアクセスされたとき、方法400を構成する動作を機械に実施させる。
【００５６】
ブロック402で、方法400は、要求されたキャッシュラインを読み取る要求を要求元プロセッサから取得する。1つまたは複数の実装形態では、方法400は、要求元プロセッサコアによるキャッシュ「ミス」の後、キャッシュラインを求める要求をプロセッサコアから取得する。説明の目的で、プロセッサコア134(図2に示す)が、キャッシュライン0を読み取る要求を相互接続モジュール106に発行すると仮定する。
【００５７】
ブロック404で、方法400は、どの所有プロセッサキャッシュが要求されたキャッシュラインを含むかを決定する。例に従うと、スヌープモジュール176は、プロセッサコア120、132、および136のそれぞれのキャッシュ152、164、および168が、要求されたキャッシュラインを含むと決定すると仮定する。これは、それぞれのキャッシュ中の名称“CL0”によって示されている。よって、プロセッサコア120、132、および136がキャッシュライン0を所有し、したがってこれらが、要求されたキャッシュライン0を有する「所有」プロセッサコアであると考えられる。
【００５８】
ブロック406で、方法400は、効率的な方式で、1つまたは複数の変数に基づいて、要求されたキャッシュラインを要求元プロセッサコアに提供すべき所有プロセッサコアを選択する。1つまたは複数の実装形態では、相互接続モジュール106は、コンピュータシステム300のトポロジに基づいて、要求されたキャッシュラインを要求元プロセッサコアに提供すべき所有プロセッサコアを選択してもよい。
【００５９】
たとえば、スヌープモジュール176は、システム変数モジュール180と対話して、要求されたキャッシュラインがサーバチップ102上にあるかどうか、要求されたキャッシュラインがキャッシュ304、308、312、316、および320中などオフチップであるかどうか、要求されたキャッシュラインがシステムメモリ104中にあるかどうか、ならびに/または、要求されたキャッシュラインが、マルチプロセッサチップ302のキャッシュ304中など、別のマルチプロセッサチップ上にあるかどうか、を考慮することができる。
【００６０】
一般に、要求されたキャッシュラインが要求元プロセッサコアに到達するのにチップ境界を横断しなければならないときはいつでも、これははるかに遅いプロセスである。相互接続モジュール106は、介入キャッシュになるべきキャッシュを選択するとき、このファクタを考慮に入れることになる。したがって、要求されたキャッシュラインがオンチップ対オフチップであった場合、相互接続モジュール106は、キャッシュラインの最後のコピーがオフチップであるかもしれないとしても、キャッシュラインを提供するためにオンチップの所有プロセッサコアを選択することができる。
【００６１】
1つまたは複数の実装形態では、スヌープモジュール176は、システム変数モジュール180と対話して、要求されたキャッシュラインを提供すべき所有プロセッサコアおよび/またはキャッシュの電力状態を決定することができる。例に従うと、相互接続モジュール106は、キャッシュ152、164、および168、ならびにプロセッサコア120、132、および136について、動作モードまたは節電モードを考慮することができる。たとえば、プロセッサコア136がプロセッサコア132よりも低電力状態にある場合は、プロセッサコア136は、要求されたキャッシュラインを提供するために選択されないものとすることができる。というのは、要求されたキャッシュラインをプロセッサコア136が提供できるようにプロセッサ136をウェイクアップするのに、電力および/または時間がかかるだろうからである。
【００６２】
1つまたは複数の実装形態では、スヌープモジュール176は、システム変数モジュール180と対話して、要求されたキャッシュラインを提供すべき所有プロセッサコアおよび/またはキャッシュの周波数を決定することができる。例に従うと、相互接続モジュール106は、キャッシュ152、164、および168、ならびにプロセッサコア120、132、および136について、周波数を考慮することができる。たとえば、プロセッサコア136がプロセッサコア132よりも高い周波数で動作している場合は、要求されたキャッシュラインをプロセッサコア136から提供する方が効率的であろうし、プロセッサコア132は、要求されたキャッシュラインを提供するために選択されないものとすることができる。というのは、要求されたキャッシュラインをプロセッサ132が提供するのはより時間がかかるだろうからである。
【００６３】
1つまたは複数の実装形態では、スヌープモジュール176は、システム変数モジュール180と対話して、要求されたキャッシュラインを提供すべき所有プロセッサコアおよび/またはキャッシュを選択する前のレイテンシを決定することができる。例に従うと、相互接続モジュール106は、プロセッサコア120、132、および136のレイテンシを考慮することができる。たとえば、プロセッサコア136がプロセッサコア132とは異なるタイプのプロセッサである場合、プロセッサコア132は、プロセッサコア136のレイテンシよりも本質的に長いレイテンシを有することがある。したがって、プロセッサコア132の方が要求元プロセッサコア134に近接しているかもしれないとしても、要求されたキャッシュラインをプロセッサコア136から提供する方が効率的であろうし、プロセッサコア132は、要求されたキャッシュラインを提供するために選択されないものとすることができる。
【００６４】
1つまたは複数の実装形態では、スヌープモジュール176は、システム変数モジュール180と対話して、要求されたキャッシュラインを提供すべき所有プロセッサコアおよび/またはキャッシュを選択する前の負荷を決定することができる。例に従うと、プロセッサコア132のキャッシュ164にそれ自体の動作で重い負荷がかかり、プロセッサコア136のキャッシュ168がアイドルである場合、キャッシュ168の方が要求元プロセッサコア120から離れていても、要求されたキャッシュライン0をキャッシュ168から取得する方が効率的であろう。
【００６５】
1つまたは複数の実装形態では、スヌープモジュール176は、システム変数モジュール180と対話して、要求されたキャッシュラインを提供すべき所有プロセッサコアおよび/またはキャッシュを選択する前の、プロセッサコアおよび/またはキャッシュの現在の利用を決定することができる。すなわち、相互接続モジュール106は、プロセッサコアおよび/またはキャッシュが命令を処理するのに使用する時間の量を考慮することができる。例に従うと、相互接続モジュール106は、プロセッサコア120、132、および136、ならびに/またはキャッシュ152、164、および168の現在の利用が、要求されたキャッシュラインに介入するためのレイテンシに対して有することになる効果を考慮することができる。
【００６６】
1つまたは複数の実装形態では、スヌープモジュール176は、システム変数モジュール180と対話して、要求されたキャッシュラインを提供すべき所有プロセッサコアおよび/またはキャッシュを選択する前の、相互接続モジュール106のセグメントの現在の利用を決定することができる。すなわち、相互接続モジュール106は、プロセッサコア120、132、および136、ならびに/またはキャッシュ152、164、および168の現在の利用が、要求されたキャッシュラインに介入するためのレイテンシに対して有することになる効果を決定することができる。
【００６７】
1つまたは複数の実装形態では、スヌープモジュール176は、システム変数モジュール180と対話して、要求されたキャッシュラインを提供すべき所有プロセッサコアおよび/またはキャッシュを選択する前の損耗バランスを決定することができる。例に従うと、相互接続モジュール106は、プロセッサコア120、132、および136の損耗バランスを考慮することができる。たとえば、プロセッサコア120、132、および/または136がいくつかの半導体技術(たとえば、FinFETなどのマルチゲートデバイス)を利用する場合であって、これらの半導体技術の特性として、回路の故障率が、どれくらい頻繁に回路が「使用される」か、すなわちオンとオフに切り替えられるかに関係する、という特性がある場合、相互接続モジュール106は、半導体の寿命を最大限にするために作業を「等価なパス」間で均等に分散させようとすることに基づいて、介入者になるべきキャッシュを選択することができる。
【００６８】
説明の目的で、プロセッサコア120のキャッシュ152が最低レイテンシ、最低電力、最高速度などを表すので、相互接続モジュール106は、要求されたキャッシュライン0を要求元プロセッサ134に提供すべき介入者として、プロセッサコア120のキャッシュ152を選択したと仮定する。この選択は、キャッシュ152中に描かれた名称“CL0:IN”によって示されている。
【００６９】
ブロック408で、方法400は、選択された所有プロセッサに、要求されたキャッシュラインを要求元プロセッサコアに提供するよう通知する。1つまたは複数の実装形態では、スヌープモジュール176は、バスシグナリングモジュール178と対話し、それにより、キャッシュライン0を要求元プロセッサ134に提供するようにバスシグナリングモジュール178がプロセッサコア120中のキャッシュ152に通知できるようにする。次いで、バスシグナリングモジュール178は、プロセッサコア120に、そのキャッシュ152からキャッシュライン0をプロセッサコア134に提供させるよう通知する。たとえば、バスシグナリングモジュール178は、“InterveneIfValid”信号202をアサートして、プロセッサコア120に、そのキャッシュ152からキャッシュライン0をプロセッサコア134に提供させるよう通知することができる。
【００７０】
ブロック410で、選択された所有プロセッサは、要求されたキャッシュラインを要求元プロセッサに提供する。1つまたは複数の実装形態では、プロセッサコア120のキャッシュ152は、バスシグナリングモジュール178からの“InterveneIfValid”信号202に応答して、キャッシュライン0をプロセッサコア134に提供する。
【００７１】
本開示では、様々な方法のステップおよび決定を逐次的に述べた場合があるが、これらのステップおよび決定のいくつかは、共にもしくは並行して、非同期でもしくは同期して、パイプライン化方式で、または他の方法で、別々の要素によって実施されてもよい。明示的な指示がある場合か、さもなければコンテキストから明確にされる場合、または本質的に必要とされる場合を除き、本記述でステップおよび決定が列挙されるのと同じ順序でステップおよび決定が実施されることは特に必要とされない。しかし、選択される変形においては、ステップおよび決定が前述の順序で実施されることに留意されたい。さらに、例示されるあらゆるステップおよび決定が本発明によるあらゆる実施形態/変形で必要とされるわけではなく、本発明によるいくつかの実施形態/変形では、具体的に例示されていないいくつかのステップおよび決定が望ましいかまたは必要である場合もある。
【００７２】
情報および信号は、様々な異なる技術および技法のいずれかを使用して表される場合があることを、当業者なら理解するであろう。たとえば、上の記述の全体を通して参照される場合のあるデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光場もしくは光学粒子、またはこれらの任意の組合せによって表される場合がある。
【００７３】
さらに、本明細書に開示する実施形態との関連で述べた様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップが、電子ハードウェア、コンピュータソフトウェア、またはこれらの組合せとして実装される場合があることを、当業者なら認識するであろう。この、ハードウェアとソフトウェアの交換可能性をはっきりと示すために、様々な例示的なコンポーネント、ブロック、モジュール、回路、およびステップを、概してそれらの機能の点から上述した。そのような機能がハードウェアとして実装されるかソフトウェアとして実装されるかハードウェアとソフトウェアの組合せとして実装されるかは、特定の応用例と、システム全体に課される設計制約とに依存する。当業者なら、述べた機能を特定の応用例ごとに様々な方式で実装することができるが、そのような実装決定は、本発明の範囲からの逸脱を引き起こすと解釈されるべきではない。
【００７４】
本明細書に開示する実施形態との関連で述べた方法またはアルゴリズムのステップは、ハードウェアにおいて直接に、または、プロセッサによって実行されるソフトウェアモジュールにおいて、またはこの2つの組合せにおいて具体化される場合がある。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、取外し可能ディスク、CD-ROM、または、当技術分野で知られている他の任意の形の記憶媒体の中に存在する場合がある。例示的な記憶媒体は、プロセッサに結合され、したがって、プロセッサは記憶媒体に対して情報を読み書きすることができる。あるいは、記憶媒体は、プロセッサに統合される場合もある。プロセッサおよび記憶媒体は、ASIC中に存在する場合もある。ASICは、アクセス端末中に存在する場合がある。あるいは、プロセッサおよび記憶媒体は、アクセス端末中のディスクリートコンポーネントとして存在する場合もある。
【００７５】
開示する実施形態に関する以上の記述は、どんな当業者でも本発明を作成または使用できるようにするために提供するものである。これらの実施形態に対する様々な修正が当業者にはすぐに明らかであろうし、本明細書に定義される一般原理は、本発明の主旨または範囲を逸脱することなく他の実施形態にも適用することができる。よって、本発明は、本明細書に示される実施形態に限定されるのではなく、本明細書に開示される原理および新規な特徴と整合する最も広い範囲と一致するものとする。
【符号の説明】
【００７６】
100  マルチプロセッサアーキテクチャ
102  サーバチップ
104  システムメモリ
106  相互接続モジュール
108、110、112、114、116、118、120、122、124、126、128、130、132、134、136、138  プロセッサコア
140、142、144、146、148、150、152、154、156、158、160、162、164、166、168、170  キャッシュ
172、174  メモリコントローラ
176  スヌープモジュール
178  バスシグナリングモジュール
180  システム変数モジュール
202  “InterveneIfValid”信号
300  コンピュータシステム
302  マルチプロセッサチップ
304、308、312、316、320  キャッシュ
306  グラフィックスプロセッシングユニット(GPU)
310  ディジタル信号プロセッサ(DSP)
314  32ビット汎用マイクロプロセッサコア(32ビットGPコア)
318  64ビット汎用マイクロプロセッサコア(64ビットGPコア)
【図１】
2016529639.tif 000003
【図２】
2016529639.tif 000004
【図３】
2016529639.tif 000005
【図４】
2016529639.tif 000006
【手続補正書】
【提出日】平成28年3月10日(2016.3.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
要求されたキャッシュラインを読み取る要求をコンピュータシステム中の要求元プロセッサから取得するステップと、
1つまたは複数の所有プロセッサに関連する1つまたは複数のキャッシュが前記要求されたキャッシュラインを含むことを、スヌーププロトコルを使用して決定するステップと、
前記要求されたキャッシュラインを前記要求元プロセッサに提供すべき所有プロセッサを前記1つまたは複数の所有プロセッサから選択するステップであって、前記所有プロセッサを前記選択するステップは、前記コンピュータシステムについてのトポロジと、前記1つまたは複数の所有プロセッサの各々についての電力状態と、前記1つまたは複数の所有プロセッサの各々についての周波数とを含む1つまたは複数の変数に基づく、ステップと、
前記要求されたキャッシュラインを前記要求元プロセッサに提供するように、前記選択された所有プロセッサに通知するステップとを含む方法。
【請求項２】
前記1つまたは複数の所有プロセッサに関連するキャッシュラインについてのエントリのディレクトリを維持するステップをさらに含む、請求項1に記載の方法。
【請求項３】
前記所有プロセッサを選択する前記ステップは、前記選択された所有プロセッサに関連する前記1つまたは複数の変数からの変数を、少なくとも1つの他の所有プロセッサに関連する前記1つまたは複数の変数からの変数と比較するステップを含む、請求項1に記載の方法。
【請求項４】
前記1つまたは複数の変数はさらに、前記1つまたは複数の所有プロセッサの各々についてのレイテンシと、前記1つまたは複数の所有プロセッサの各々の利用と、前記1つまたは複数の所有プロセッサの各々の損耗バランスと、前記1つまたは複数の所有プロセッサの各々についての負荷と、からなるグループから選択される、請求項3に記載の方法。
【請求項５】
複数のプロセッサと関連するキャッシュとを有するコンピュータシステム中でキャッシュ介入を実施するための装置であって、前記関連するキャッシュは1つまたは複数のキャッシュラインを含み、前記装置は、
スヌープモジュールであって、
要求されたキャッシュラインを読み取る要求を要求元プロセッサから取得し、
1つまたは複数の所有プロセッサに関連する1つまたは複数のキャッシュが前記要求されたキャッシュラインを含むと決定するように構成される、スヌープモジュールと、
前記コンピュータシステムについてのトポロジと、前記1つまたは複数の所有プロセッサの各々についての電力状態と、前記1つまたは複数の所有プロセッサの各々についての周波数とを含む1つまたは複数の変数を追跡するように構成される変数モジュールであって、前記スヌープモジュールはさらに、前記1つまたは複数の変数に基づいて、前記要求されたキャッシュラインを前記要求元プロセッサに提供すべき所有プロセッサを選択するように構成される、変数モジュールと、
前記要求されたキャッシュラインを前記要求元プロセッサに提供するように、前記選択された所有プロセッサにシグナリングするように構成されるシグナリングモジュールとを備える装置。
【請求項６】
前記1つまたは複数の変数はさらに、前記1つまたは複数の所有プロセッサの各々についてのレイテンシと、前記1つまたは複数の所有プロセッサの各々の利用と、前記1つまたは複数の所有プロセッサの各々の損耗バランスと、前記1つまたは複数の所有プロセッサの各々についての負荷と、からなるグループから選択される、請求項5に記載の装置。
【請求項７】
データを含む非一時的なコンピュータ可読記憶媒体であって、前記データは、機械によってアクセスされたとき、
要求されたキャッシュラインを読み取る要求をコンピュータシステム中の要求元プロセッサから取得することと、
1つまたは複数の所有プロセッサに関連する1つまたは複数のキャッシュが前記要求されたキャッシュラインを含むことを、スヌーププロトコルを使用して決定することと、
前記要求されたキャッシュラインを前記要求元プロセッサに提供すべき所有プロセッサを前記1つまたは複数の所有プロセッサから選択することであって、前記所有プロセッサを選択することは、前記コンピュータシステムについてのトポロジと、前記1つまたは複数の所有プロセッサの各々についての電力状態と、前記1つまたは複数の所有プロセッサの各々についての周波数とを含む1つまたは複数の変数に基づく、選択することと、
前記要求されたキャッシュラインを前記要求元プロセッサに提供するように、前記選択された所有プロセッサに通知することと、を含む動作を前記機械に実施させる、非一時的なコンピュータ可読記憶媒体。
【請求項８】
前記1つまたは複数の変数はさらに、前記1つまたは複数の所有プロセッサの各々についてのレイテンシと、前記1つまたは複数の所有プロセッサの各々の利用と、前記1つまたは複数の所有プロセッサの各々の損耗バランスと、前記1つまたは複数の所有プロセッサの各々についての負荷と、からなるグループから選択される、請求項7に記載の非一時的なコンピュータ可読記憶媒体。
【国際調査報告】
2016529639.tif 000007
2016529639.tif 000008
2016529639.tif 000009