(57)【要約】【課題】プロセッサから性能パラメータを収集するための改良された方法およびシステムを提供する。【解決手段】本発明はコンピュータ・アーキテクチャに関し、とりわけ、プロセッサの性能を評価することに関する。性能モニタは、プロセッサのＬ２キャッシュ・ネスト内に配置することができる。性能モニタはＬ２キャッシュ・アクセスを監視し、プロセッサ・コアをＬ２キャッシュ・ネストに結合するバスを介して、１つまたは複数のプロセッサ・コアから性能データを受け取ることができる。一実施形態では、バスは、プロセッサ・コアから性能モニタへ性能データを転送するための追加のラインを含むことができる。【選択図】  図１
2010531498.tif 000002
【特許請求の範囲】
【請求項１】
Ｌ２キャッシュ・アクセスに関する性能データを獲得するために、プロセッサのＬ２キャッシュ・ネスト内に位置する性能モニタにより、Ｌ２キャッシュ・アクセスを監視するステップと、
前記性能モニタにより、少なくとも１つのプロセッサ・コアを前記Ｌ２キャッシュ・ネストに結合するバスを介して、前記プロセッサの少なくとも１つのプロセッサ・コアから性能データを受け取るステップと、
前記Ｌ２キャッシュ・アクセスのうちの少なくとも１つと、前記少なくとも１つのプロセッサ・コアから受け取った前記性能データとに基づいて、１つまたは複数の性能パラメータを計算するステップと、
を含む、性能データを収集するための方法。
【請求項２】
前記Ｌ２キャッシュ・ネストを前記少なくとも１つのプロセッサ・コアに結合する前記バスが、前記性能データを前記性能モニタに転送するための第１セットのバス・ラインと、前記Ｌ２キャッシュと前記少なくとも１つのプロセッサ・コアとの間でデータを交換するための第２セットのバス・ラインとを備える、請求項１に記載の方法。
【請求項３】
前記第１セットのバス・ラインが前記第２セットのバス・ラインよりも相対的に細い、請求項２に記載の方法。
【請求項４】
前記バスが前記Ｌ２キャッシュとのデータ交換に使用されていない場合、前記少なくとも１つのプロセッサ・コアが前記バスを介して前記性能データを転送する、前記請求項のいずれか一項に記載の方法。
【請求項５】
前記性能モニタが、前記Ｌ２キャッシュ・ネストおよび前記バス内の性能データを獲得するための１つまたは複数のラッチを備える、前記請求項のいずれか一項に記載の方法。
【請求項６】
前記性能モニタが、前記Ｌ２キャッシュ・アクセスと、前記少なくとも１つのプロセッサ・コアから受け取った前記性能データとに基づいて、前記１つまたは複数の性能パラメータを計算するための制御論理を備える、前記請求項のいずれか一項に記載の方法。
【請求項７】
前記性能モニタが、性能データを格納するための動的ランダム・アクセス・メモリ（ＤＲＡＭ）を備える、前記請求項のいずれか一項に記載の方法。
【請求項８】
前記性能モニタが静的ランダム・アクセス・メモリ（ＳＲＡＭ）を備え、前記ＳＲＡＭは、前記少なくとも１つのプロセッサ・コアから第１の周波数で前記性能データを受け取り、前記性能データを第２の周波数で前記ＤＲＡＭに転送し、前記第１の周波数は前記第２の周波数よりも高い、請求項７に記載の方法。
【請求項９】
Ｌ２キャッシュ・ネスト内のＬ２キャッシュへのアクセスを監視すること、および、前記Ｌ２キャッシュ・アクセスに関する１つまたは複数の性能パラメータを計算すること、ならびに
前記Ｌ２キャッシュ・ネストを少なくとも１つのプロセッサ・コアに結合するバスを介して、前記少なくとも１つのプロセッサ・コアから性能データを受け取ること、
を、実行するように構成された、プロセッサのＬ２キャッシュ・ネスト内に位置する性能モニタ。
【請求項１０】
前記Ｌ２キャッシュ・ネストを前記少なくとも１つのプロセッサ・コアに結合する前記バスが、前記性能データを前記性能モニタに転送するための第１セットのバス・ラインと、前記Ｌ２キャッシュと前記少なくとも１つのプロセッサ・コアとの間でデータを交換するための第２セットのバス・ラインとを備える、請求項９に記載の性能モニタ。
【請求項１１】
前記第１セットのバス・ラインが前記第２セットのバス・ラインよりも相対的に細い、請求項１０に記載の性能モニタ。
【請求項１２】
前記少なくとも１つのプロセッサ・コアが、前記バスが前記Ｌ２キャッシュとのデータ交換に使用されていない場合、前記バスを介して前記性能データを転送するように構成された、請求項９、１０、または１１のいずれか一項に記載の性能モニタ。
【請求項１３】
前記性能モニタが１つまたは複数のラッチを備え、前記１つまたは複数のラッチが、前記Ｌ２キャッシュ・ネストおよび前記バス内の性能データを獲得するように構成された、請求項９から１２のいずれか一項に記載の性能モニタ。
【請求項１４】
前記性能モニタが、前記Ｌ２キャッシュ・アクセスと、前記少なくとも１つのプロセッサ・コアから受け取った前記性能データとに基づいて、前記１つまたは複数の性能パラメータを計算するための制御論理を備える、請求項９から１３のいずれか一項に記載の性能モニタ。
【請求項１５】
前記性能モニタが、性能データを格納するための動的ランダム・アクセス・メモリ（ＤＲＡＭ）を備える、請求項９から１４のいずれか一項に記載の性能モニタ。
【請求項１６】
前記性能モニタが静的ランダム・アクセス・メモリ（ＳＲＡＭ）を備え、前記ＳＲＡＭが、前記少なくとも１つのプロセッサ・コアから第１の周波数で前記性能データを受け取り、前記性能データを第２の周波数で前記ＤＲＡＭに転送するように構成され、前記第１の周波数は前記第２の周波数よりも高い、請求項１５に記載の性能モニタ。
【請求項１７】
少なくとも１つのプロセッサ・コアと、
Ｌ２キャッシュおよび性能モニタを備えるＬ２キャッシュ・ネストと、
前記Ｌ２キャッシュ・ネストを前記少なくとも１つのプロセッサ・コアに結合するバスと、を備え、前記性能モニタが、
Ｌ２キャッシュ・アクセスに関する１つまたは複数の性能パラメータを計算するためにＬ２キャッシュ・アクセスを監視すること、および、
前記Ｌ２キャッシュ・ネストを前記少なくとも１つのプロセッサ・コアに結合する前記バスを介して、前記少なくとも１つのプロセッサ・コアから性能データを受け取ること、
を、実行するように構成される、システム。
【請求項１８】
前記バスが、前記性能データを前記性能モニタに転送するための第１セットのバス・ラインと、前記Ｌ２キャッシュと前記少なくとも１つのプロセッサ・コアとの間でデータを交換するための第２セットのバス・ラインとを備える、請求項１７に記載のシステム。
【請求項１９】
前記第１セットのバス・ラインが前記第２セットのバス・ラインよりも相対的に細い、請求項１８に記載のシステム。
【請求項２０】
前記少なくとも１つのプロセッサ・コアが、前記バスが前記Ｌ２キャッシュとのデータ交換に使用されていない場合、前記バスを介して前記性能データを転送するように構成された、請求項１７、１８、または１９のいずれか一項に記載のシステム。
【請求項２１】
前記性能モニタが、
１つまたは複数のラッチと、
１つまたは複数の性能パラメータを獲得および計算するための制御論理と、
静的ランダム・アクセス・メモリ（ＳＲＡＭ）と、
動的ランダム・アクセス・メモリ（ＤＲＡＭ）と、
を備える、請求項１７から２０のいずれか一項に記載のシステム。
【請求項２２】
前記ＳＲＡＭが、前記少なくとも１つのプロセッサ・コアから第１の周波数で前記性能データを受け取り、前記性能データを第２の周波数で前記ＤＲＡＭに転送するように構成され、前記第１の周波数は前記第２の周波数よりも高い、請求項２１に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータ・アーキテクチャに関し、とりわけ、プロセッサの性能評価に関する。
【背景技術】
【０００２】
現在のコンピュータ・システムは、通常、コンピュータ・システム内での情報処理に使用可能な１つまたは複数のプロセッサを含む、いくつかの集積回路（ＩＣ）を含む。プロセッサによって処理されるデータは、プロセッサによって実行されるコンピュータ命令、ならびにコンピュータ命令を使用してプロセッサによって操作されるデータを含むことができる。コンピュータ命令およびデータは、通常、コンピュータ・システム内のメイン・メモリに格納される。
【０００３】
プロセッサは、通常、一連の小ステップで各命令を実行することによって命令を処理する。場合によっては、プロセッサによって処理される命令の数を増やすため（したがってプロセッサの速度を上げるため）に、プロセッサをパイプライン化する（pipeline）ことができる。パイプライン化とは、プロセッサ内に別々のステージを提供し、各ステージが、命令を実行するために必要な小ステップのうちの１つまたは複数を実行することである。場合によっては、プロセッサ・コアと呼ばれるプロセッサの一部分にパイプラインを（他の回路に加えて）配置することができる。いくつかのプロセッサは複数のプロセッサ・コアを有することができる。
【０００４】
パイプライン化を使用してプロセッサ速度を上げることは可能であるが、コンピュータ・システムの性能は、たとえばコンピュータ・システムのメモリ階層の性質などの、様々な他の要素に依存している場合がある。したがってシステム開発者は、一般に、メモリ内の命令およびデータのアクセスと、プロセッサ内での命令の実行を調査して、性能をより良くするようにシステム設計を最適化することが可能な性能パラメータを収集する。たとえばシステム開発者は、キャッシュ・ミス率（cache miss rate）を調査して、最適なキャッシュ・サイズの決定、関連性の設定などを実行する。
【０００５】
現在のプロセッサは、通常、様々な性能パラメータを計測、テスト、および監視するための、性能監視回路を含む。こうした性能監視回路は、通常、プロセッサ・コア内に集中され、複数の他のプロセッサ・コアとの間に大量の配線がルーティングされるため、チップ・サイズ、コスト、および複雑さが大幅に上昇する。さらに、チップの開発あるいはテストまたはその両方が完了すると、性能監視回路はもはや不要となり、性能回路が占有していたスペースの再獲得は不可能な場合がある。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
したがって、プロセッサから性能パラメータを収集するための改良された方法およびシステムが求められている。
【課題を解決するための手段】
【０００７】
本発明はコンピュータ・アーキテクチャに関し、とりわけ、プロセッサの性能評価に関する。
【０００８】
本発明の一実施形態は、性能データを収集するための方法を提供する。この方法は一般に、Ｌ２キャッシュ・アクセスに関する性能データを獲得するために、プロセッサのＬ２キャッシュ・ネスト内に位置する性能モニタにより、Ｌ２キャッシュ・アクセスを監視するステップを含む。さらにこの方法は、性能モニタにより、少なくとも１つのプロセッサ・コアをＬ２キャッシュ・ネストに結合するバスを介して、プロセッサの少なくとも１つのプロセッサ・コアから性能データを受け取るステップと、Ｌ２キャッシュ・アクセスのうちの少なくとも１つと、少なくとも１つのプロセッサ・コアから受け取った性能データとに基づいて、１つまたは複数の性能パラメータを計算するステップとを含む。
【０００９】
本発明の他の実施形態は、プロセッサのＬ２キャッシュ・ネスト内に位置する性能モニタを提供し、この性能モニタは、Ｌ２キャッシュ・ネスト内のＬ２キャッシュへのアクセスを監視すること、および、Ｌ２キャッシュ・アクセスに関する１つまたは複数の性能パラメータを計算することを、実行するように構成される。さらに性能モニタは、Ｌ２キャッシュ・ネストを少なくとも１つのプロセッサ・コアに結合するバスを介して、少なくとも１つのプロセッサ・コアから性能データを受け取るように構成される。
【００１０】
本発明のさらに他の実施形態は、一般に、少なくとも１つのプロセッサ・コア、Ｌ２キャッシュおよび性能モニタを備えるＬ２キャッシュ・ネスト、ならびにＬ２キャッシュ・ネストを少なくとも１つのプロセッサ・コアに結合するバスを備える、システムを提供する。性能モニタは、一般に、Ｌ２キャッシュ・アクセスに関する１つまたは複数の性能パラメータを計算するためにＬ２キャッシュ・アクセスを監視すること、および、Ｌ２キャッシュ・ネストを少なくとも１つのプロセッサ・コアに結合するバスを介して、少なくとも１つのプロセッサ・コアから性能データを受け取ることを、実行するように構成される。
【００１１】
前述の本発明の特徴、利点、および目的が達成され、詳細に理解できるように、上記で簡単に概説した本発明について、添付の図面に示されたその諸実施形態を参照しながら、より具体的に説明する。
【００１２】
しかしながら、本発明が他の等しく有効な諸実施形態を認めることができるため、添付の図面は、本発明の典型的な実施形態のみを示したものであり、その範囲を限定するものとはみなされないことに留意されたい。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施形態に従った例示的システムを示す図である。
【図２】本発明の実施形態に従ったプロセッサを示す図である。
【図３】本発明の実施形態に従った他のプロセッサを示す図である。
【発明を実施するための形態】
【００１４】
本発明は、コンピュータ・アーキテクチャに関し、とりわけ、プロセッサの性能評価に関する。性能モニタは、プロセッサのＬ２キャッシュ・ネスト内に配置することができる。性能モニタは、Ｌ２キャッシュ・アクセスを監視し、プロセッサ・コアをＬ２キャッシュ・ネストに結合するバスを介して、１つまたは複数のプロセッサ・コアから性能データを受け取ることができる。一実施形態では、バスは、プロセッサ・コアから性能モニタへ性能データを転送するための１つまたは複数の追加のラインを含むことができる。
【００１５】
以下で、本発明の諸実施形態について言及する。しかしながら、本発明は、説明される特定の実施形態に限定されないことを理解されたい。その代わりに、異なる諸実施形態に関するか否かに関わらず、本発明を実装および実施するために、以下の機能および要素の任意の組み合わせが企図される。さらに様々な諸実施形態において、本発明は従来技術よりも優れた多数の利点を提供する。しかしながら、本発明の諸実施形態は、他の可能なソリューションあるいは従来技術またはその両方よりも優れた利点を達成することができるが、所与の実施形態によって特定の利点が達成されるか否かによって、本発明が制限されることはない。したがって、以下の諸々の態様、機能、実施形態、および利点は単なる例示的なものであり、請求項に明示的に示されている場合を除き、添付の特許請求の範囲の諸要素または諸制限とはみなされない。同様に、「本発明」という言い方は、本明細書で開示されたいかなる発明の主題の一般化としても解釈されるべきではなく、請求項に明示的に示されている場合を除き、添付の特許請求の範囲の要素または制限とみなされるべきではない。
【００１６】
以下は、添付の図面に示された本発明の諸実施形態の詳細な説明である。諸実施形態は例示であり、本発明を明確に伝えるように詳細なものである。しかしながら、提供された細部は、諸実施形態の予想される諸変形を制限することを意図するものではなく、逆に、その意図は、添付の特許請求の範囲によって定義された本発明の趣旨および範囲内にあるすべての変更形態、等価形態、および代替形態をカバーすることである。
【００１７】
発明の諸実施形態は、たとえばコンピュータ・システムなどのシステムで使用可能であり、システムに関して以下で説明される。本明細書で使用される場合、システムは、パーソナル・コンピュータ、インターネット機器、デジタル・メディア機器、携帯情報端末（ＰＤＡ）、ポータブル音楽／ビデオ・プレーヤ、およびビデオ・ゲーム操作卓を含む、プロセッサおよびキャッシュ・メモリを含む任意のシステムを含むことができる。キャッシュ・メモリは、キャッシュ・メモリを使用するプロセッサと同じダイ上に配置可能であるが、場合によっては、プロセッサおよびキャッシュ・メモリは、異なるダイ（たとえば、別のモジュール内の別のチップ、または単一モジュール内の別のチップ）上に配置される場合がある。
【００１８】
例示的システム
図１は、本発明の実施形態に従った例示的システム１００を示す。図に示されるように、システム１００は、複数のプロセッサ１１０、Ｌ３キャッシュ／Ｌ４キャッシュ／メモリ１１２（以下、まとめてメモリと呼ぶ）、グラフィクス処理ユニット（ＧＰＵ）１０４、入力／出力（Ｉ／Ｏ）インターフェース１０６、およびストレージ・デバイス１０８の、任意の組み合わせを含むことができる。メモリ１１２は、好ましくは、プロセッサ１１０によって動作される必要なプログラミングおよびデータの構造を保持するだけの十分な大きさのランダム・アクセス・メモリである。メモリ１１２は単一のエンティティとして示されているが、メモリ１１２が実際には複数のモジュールを備えることが可能であること、ならびに、メモリ１１２が、たとえばＬ３キャッシュ、Ｌ４キャッシュ、およびメイン・メモリなどの複数レベルで存在可能であることを、理解されたい。
【００１９】
ストレージ・デバイス１０８は、好ましくは直接アクセス・ストレージ・デバイス（ＤＡＳＤ）である。これは単一ユニットとして示されているが、固定ディスク・ドライブ、フレキシブル・ディスク・ドライブ、テープ・ドライブ、取り外し可能メモリ・カード、または光ストレージなどの、固定あるいは取り外し可能またはその両方の、ストレージ・デバイスの組み合わせとすることが可能である。メモリ１１２およびストレージ１０８は、複数の１次および２次ストレージ・デバイスにまたがる１つの仮想アドレス・スペースの一部とすることができる。
【００２０】
ＩＯインターフェース１０６は、プロセッサ１１０と入力／出力デバイスとの間のインターフェースを提供することができる。例示的な入力デバイスは、たとえば、キーボード、キーパッド、ライトペン、タッチスクリーン、トラックボール、または音声認識ユニット、オーディオ／ビデオ・プレーヤなどを含む。出力デバイスは、たとえば任意の従来型ディスプレイ・スクリーンなどの、ユーザに出力を与えるための任意のデバイスとすることができる。
【００２１】
グラフィクス処理ユニット（ＧＰＵ）１０４は、たとえば、プロセッサ１１０からの２次元および３次元のグラフィクス・データを受け取るように構成することができる。ＧＰＵ  １０６は、グラフィクス・データを操作するために１つまたは複数の計算を実行し、ディスプレイ画面上にイメージをレンダリングすることができる。
【００２２】
１１０は、複数のプロセッサ・コア１１４を含むことができる。プロセッサ・コア１１４は、メモリ１１２から取り出された命令をパイプライン化して実行するように構成することができる。各プロセッサ・コア１１４は、関連付けられたＬ１キャッシュ１１６を有することができる。各Ｌ１キャッシュ１１６は、関連付けられたプロセッサ・コア１１４の最も近くに位置する相対的に小さなメモリ・キャッシュとすることが可能であり、関連付けられたプロセッサ・コア１１４が命令およびデータ（以下、まとめてデータと呼ぶ）に高速アクセスできるように構成することが可能である。
【００２３】
プロセッサ１１０は、少なくとも１つのＬ２キャッシュ１１８も含むことができる。Ｌ２キャッシュ１１８はＬ１キャッシュ１１４よりも相対的に大きいものとすることができる。各Ｌ２キャッシュ１１８は、１つまたは複数のＬ１キャッシュに関連付けることが可能であり、関連付けられた１つまたは複数のＬ１キャッシュにデータを提供するように構成することが可能である。たとえばプロセッサ・コア１１４は、その関連付けられたＬ１キャッシュ内に含まれないデータを要求することができる。したがって、プロセッサ・コア１１４によって要求されたデータをＬ２キャッシュ１１８から取り出し、プロセッサ・コア１１４に関連付けられたＬ１キャッシュ１１６に格納することができる。本発明の一実施形態では、Ｌ１キャッシュ１１６およびＬ２キャッシュ１１８は、ＳＲＡＭベースのデバイスとすることができる。しかしながら当業者であれば、Ｌ１キャッシュ１１６およびＬ２キャッシュ１１８が任意の他のタイプのメモリ、たとえばＤＲＡＭを含むことができることを理解されよう。
【００２４】
Ｌ２キャッシュ１１８内でキャッシュ・ミスが発生した場合、プロセッサ・コア１１４によって要求されたデータは、Ｌ３キャッシュ１１２から取り出すことができる。Ｌ３キャッシュ１１２は、Ｌ１キャッシュ１１６およびＬ２キャッシュ１１８よりも相対的に大きいものとすることができる。図１には単一のＬ３キャッシュ１１２が示されているが、当業者であれば、複数のＬ３キャッシュ１１２も実装可能であることを理解されよう。各Ｌ３キャッシュ１１２は複数のＬ２キャッシュ１１８に関連付けることが可能であり、関連付けられたＬ２キャッシュ１１８とデータを交換するように構成することが可能である。当業者であれば、１つまたは複数の高位レベル・キャッシュ、たとえばＬ４キャッシュも、システム１００に含めることが可能であることも理解されよう。各高位レベル・キャッシュは、次に下位レベルの１つまたは複数のキャッシュに関連付けることができる。
【００２５】
図２は、本発明の実施形態に従った、プロセッサ１１０の例示的詳細図を示すブロック図である。図２に示されるように、プロセッサ１１０は、Ｌ２キャッシュ・ネスト２１０、Ｌ１キャッシュ１１６、プレデコーダ／スケジューラ２２１、およびコア１１４を含むことができる。話を簡単にするために、図２は、プロセッサ１１０の単一のコア１１４を示し、これに関して説明される。一実施形態では、各コア１１４は同一である（たとえば、パイプライン・ステージの同じ配置構成を備えた同一のパイプラインを含む）とすることができる。他の実施形態の場合、コア１１４は異なる（たとえば、パイプライン・ステージの異なる配置構成を備えた異なるパイプラインを含む）とすることができる。
【００２６】
Ｌ２キャッシュ・ネスト２１０は、Ｌ２キャッシュ１１８、Ｌ２キャッシュ・アクセス回路２１１、Ｌ２キャッシュ・ディレクトリ２１２、および性能モニタ２１３を含むことができる。本発明の一実施形態では、Ｌ２キャッシュ（あるいは、Ｌ３あるいはＬ４またはその両方などの、高位レベル・キャッシュ、またはその両方）は、プロセッサ１１０によって使用されている命令およびデータの一部を含むことができる。場合によっては、プロセッサ１１０は、Ｌ２キャッシュ１１８に含まれない命令およびデータを要求することができる。要求された命令およびデータがＬ２キャッシュ１１８に含まれていない場合、要求された命令およびデータを（高位レベル・キャッシュまたはシステム・メモリ１１２のいずれかから）取り出して、Ｌ２キャッシュ内に配置することができる。Ｌ２キャッシュ・ネスト２１０は、複数のプロセッサ・コア１１４間で共有可能である。
【００２７】
一実施形態では、Ｌ２キャッシュ１１８は、現在Ｌ２キャッシュ１１８内にあるコンテンツを追跡するためにＬ２キャッシュ・ディレクトリ２１２を有することができる。データがＬ２キャッシュ１１８に追加された場合、対応するエントリをＬ２キャッシュ・ディレクトリ２１２内に配置することができる。データがＬ２キャッシュ１１８から除去された場合、Ｌ２キャッシュ・ディレクトリ２１２内の対応するエントリを除去することができる。性能モニタ２１３は、プロセッサ１１０に関する性能関連データを監視および収集することができる。性能監視については、以下のセクションでより詳細に考察する。
【００２８】
プロセッサ・コア１１４がＬ２キャッシュ１１８に命令を要求した場合、この命令は、たとえばバス２７０を介してＬ１キャッシュ２２０に転送することができる。図２に示されるように、Ｌ１キャッシュ２２０は、Ｌ１命令キャッシュ（Ｌ１  Ｉキャッシュ）２２２、Ｌ１  Ｉキャッシュ・ディレクトリ２２３、Ｌ１データ・キャッシュ（Ｌ１  Ｄキャッシュ）２２４、およびＬ１  Ｄキャッシュ・ディレクトリ２２５を含むことができる。Ｌ１  Ｉキャッシュ２２２およびＬ１  Ｄキャッシュ２２４は、図１に示されたＬ１キャッシュ１１６の一部とすることができる。
【００２９】
本発明の一実施形態では、Ｉラインと呼ばれるグループ内のＬ２キャッシュ１１８から命令をフェッチすることができる。同様に、Ｄラインと呼ばれるグループ内のＬ２キャッシュ１１８から、バス２７０を介してデータをフェッチすることができる。ＩラインはＩキャッシュ２２２に格納可能であり、ＤラインはＤキャッシュ２２４に格納可能である。ＩラインおよびＤラインは、Ｌ２アクセス回路２１１を使用してＬ２キャッシュ１１８からフェッチすることができる。
【００３０】
本発明の一実施形態では、Ｌ２キャッシュ１１８から取り出されたＩラインは、第１にプレデコーダおよびスケジューラ２２１によって処理可能であり、このＩラインをＩキャッシュ２２２に配置することができる。さらにプロセッサ性能を向上させるために、命令はしばしばプレデコードされ、たとえばＩラインがＬ２（または高位）キャッシュから取り出される。こうしたプレデコーディングは、アドレス生成、分岐予測、およびスケジューリング（命令を発行すべき順序の決定）などの、様々な機能を含むことが可能であり、命令の実行を制御するディスパッチ情報（フラグのセット）として獲得される。いくつかの実施形態では、プレデコーダ（およびスケジューラ）２２１を複数のコア１１４およびＬ１キャッシュ間で共有することができる。
【００３１】
コア１１４は、図２に示されるように発行およびディスパッチ回路２３４から命令を受け取り、この命令を実行することができる。一実施形態では、命令フェッチ回路２３６を使用して、コア１１４に関する命令をフェッチすることができる。たとえば命令フェッチ回路２３６は、コア内で実行されている現在の命令を追跡するプログラム・カウンタを含むことができる。コア内の分岐ユニットを使用して、分岐命令に遭遇した場合にプログラム・カウンタを変更することができる。Ｉライン・バッファ２３２を使用して、Ｌ１  Ｉキャッシュ２２２からフェッチされた命令を格納することができる。発行およびディスパッチ回路２３４を使用して、Ｉライン・バッファ２３２から取り出された命令を、命令グループにグループ化し、次にこのグループをコア１１４に対して並行して発行することができる。場合によっては、発行およびディスパッチ回路は、プレデコーダおよびスケジューラ２２１によって提供された情報を使用して、適切な命令グループを形成することができる。
【００３２】
命令およびディスパッチ回路２３４から命令を受け取ることに加えて、コア１１４は様々な場所からデータを受け取ることができる。たとえば、場合によっては、コア１１４はデータ・レジスタからのデータを必要とする可能性があり、データを取得するためにレジスタ・ファイル２４０にアクセスすることができる。コア１１４がメモリ位置からのデータを必要とする場合、キャッシュ・ロードおよびストア回路２５０を使用して、Ｄキャッシュ２２４からデータをロードすることができる。こうしたロードが実行される場合、必要とされるデータに関する要求をＤキャッシュ２２４に発行することができる。同時に、所望のデータがＤキャッシュ２２４内に位置するかどうかを判別するために、Ｄキャッシュ・ディレクトリ２２５をチェックすることができる。Ｄキャッシュ２２４が所望のデータを含む場合、Ｄキャッシュ・ディレクトリ２２５は、Ｄキャッシュ２２４が所望のデータを含み、Ｄキャッシュ・アクセスがその後の何らかの時点で完了可能である旨を、示すことができる。Ｄキャッシュ２２４が所望のデータを含まない場合、Ｄキャッシュ・ディレクトリ２２５は、Ｄキャッシュ２２４が所望のデータを含まない旨を示すことができる。Ｄキャッシュ・ディレクトリ２２５にはＤキャッシュ２２４よりも迅速にアクセスできるため、Ｄキャッシュ・ディレクトリ２２５にアクセスした後であるが、Ｄキャッシュ・アクセスが完了する以前に、所望のデータに関する要求を（たとえば、Ｌ２アクセス回路２１１を使用して）Ｌ２キャッシュに発行することができる。
【００３３】
場合によっては、データはコア１１４内で変更することができる。変更されたデータは、レジスタ・ファイルに書き込むか、またはメモリに格納することができる。再書き込み回路２３８を使用して、レジスタ・ファイル２４０にデータを再書き込みすることができる。場合によっては、再書き込み回路２３８は、キャッシュ・ロードおよびストア回路２５０を使用して、Ｄキャッシュ２２４にデータを再書き込みすることができる。オプションで、コア１１４はキャッシュ・ロードおよびストア回路２５０に直接アクセスして、ストアを実行することができる。場合によっては、以下で説明するように、再書き込み回路２３８を使用してＩキャッシュ２２２に命令を再書き込みすることもできる。
【００３４】
前述のように、発行およびディスパッチ回路２３４を使用して命令グループを形成し、形成された命令グループをコア１１４に発行することができる。発行およびディスパッチ回路２３４は、Ｉライン内の命令を回転およびマージするための回路も含み、それによって適切な命令グループを形成することができる。発行グループの形成は、以下でより詳細に説明するような、発行グループ内の命令間の依存度、ならびに命令の順序付けから達成可能な最適化などの、いくつかの考慮事項を斟酌することができる。発行グループが形成されると、この発行グループをプロセッサ・コア１１４に対して並行にディスパッチすることができる。場合によっては、命令グループは、コア１１４内の各パイプラインについて１つの命令を含むことができる。オプションで、命令グループは、より少ない命令とすることができる。
【００３５】
性能監視
前述のように、性能モニタ２１３は、図２に示されるようにＬ２キャッシュ・ネスト２１０内に含めることができる。性能モニタ２１３は、カウンタ、制御レジスタ、マルチプレクサなどを含む、イベント検出および制御論理を備えることができる。性能モニタ２１３は、システムの性能を評価するために、命令の実行、プロセッサ・コア１１４間の対話、およびメモリ階層などに関するデータを、収集および分析するように構成することができる。
【００３６】
性能モニタ２１３によって計算される例示的パラメータは、命令あたりのクロック・サイクル（ＣＰＩ）、キャッシュ・ミス率、変換索引バッファ（ＴＬＢ）ミス率、キャッシュ・ヒット回数、キャッシュ・ミス・ペナルティなどを含むことができる。いくつかの実施形態では、性能モニタ２１３は、たとえば特定メモリ位置へのアクセス、または所定の命令の実行などの、所定のイベントの発生を監視することができる。本発明の一実施形態では、性能モニタ２１３は、たとえば、１秒あたりに発生するロード命令の数、または１秒あたりに発生するストア命令の数などの、特定のイベントの発生頻度を決定するように構成することができる。
【００３７】
従来技術のシステムでは、通常、性能モニタはプロセッサ・コアに含まれた。したがって、Ｌ２キャッシュ・ネストからの性能データは、従来技術のシステムでは、バス２７０を介してプロセッサ・コア内の性能モニタに送信された。しかしながら、最も重要な性能統計は、たとえばＬ２キャッシュ・ミス率、ＴＬＢミス率などのＬ２キャッシュ統計を含むことができる。本発明の諸実施形態は、最も重要な性能データが容易に取得できるＬ２キャッシュ・ネスト内に性能モニタ２１３を含めることによって、バス２７０の通信コストを低減させる。
【００３８】
さらに、性能モニタを、プロセッサ・コア１１４ではなくＬ２キャッシュ・ネストに含めることによって、プロセッサ・コアをより小さく、より効率的にすることができる。性能モニタをＬ２キャッシュ・ネストに含めることの他の利点は、性能モニタ２１３がより低いクロック周波数で動作できることである。一実施形態では、動作の周波数は性能モニタ２１３の作業にとって重要でない場合がある。たとえば性能モニタ２１３は、性能パラメータを検出および計算するために、何千ものクロック・サイクルにわたって長いトレースの情報を収集することができる。性能モニタ２１３のトレース情報入手の遅延は許容可能とすることができるため、性能モニタが高速で動作する必要はない可能性がある。性能モニタ２１３をプロセッサ・コア１１４ではなくＬ２キャッシュ・ネストに含めることによって、プロセッサ・コア１１４のリソースおよびスペースをシステムの性能向上に充てることができる。
【００３９】
本発明の一実施形態では、性能データを、プロセッサ・コア１１４からＬ２キャッシュ・ネスト２１０内の性能モニタ２１３に転送することができる。プロセッサ・コア１１４から性能モニタ２１３に転送される性能データの例は、たとえば、プロセッサ・コアのＣＰＩを計算するためのデータを含むことができる。本発明の一実施形態では、性能データは、バス２７０の１つまたは複数のデッド・サイクル中に、バス２７０を介してプロセッサ・コア１１４から性能モニタ２１３に転送することができる。デッド・サイクルとは、プロセッサ・コア１１４とＬ２キャッシュ１１８との間でバス２７０を使用してデータが交換されない、クロック・サイクルとすることができる。言い換えれば、Ｌ２キャッシュ・データをプロセッサ・コア１１４との間で転送するために使用されたものと同じバス２７０を使用して、バス２７０がこうしたＬ２キャッシュ・データの転送に使用されていない場合に、性能データを性能モニタ２１３に送信することができる。
【００４０】
図２には単一のプロセッサ・コア１１４が示されているが、当業者であれば、プロセッサ１１０が複数のプロセッサ・コア１１４を含むことができることを理解されよう。本発明の一実施形態では、性能モニタ２１３は、プロセッサ１１０の複数のプロセッサ・コア１１４のそれぞれから性能データを受け取るように構成することができる。言い換えれば、本発明の諸実施形態は、複数のプロセッサ・コア１１４間で性能モニタ２１３を共有可能とすることができる。性能データはバス２７０を使用して転送可能であるため、性能データを転送するための追加のラインが不要となり、チップの複雑さが低減される。
【００４１】
本発明の一実施形態では、バス２７０は、プロセッサ・コア１１４から性能モニタ２１３へデータを転送するための１つまたは複数の追加のラインを含むことができる。たとえば図３に示されるように、特定の実施形態では、プロセッサ１１０は４つのプロセッサ・コア１１４を含むことができる。バス２７０は、Ｌ２キャッシュ・ネストをプロセッサ・コア１１４に接続することができる。バス２７０の第１のセクションは、プロセッサ・コアとＬ２キャッシュ１１８との間でデータを交換するために使用することができる。バス２７０の第２のセクションは、性能モニタ２１３とプロセッサ・コアとの間でデータを交換するために使用することができる。
【００４２】
たとえば、本発明の特定の実施形態では、バス２７０は１４４バイト幅とすることができる。バス２７０のうち１２８バイト幅セクションを使用して、Ｌ２キャッシュ１１８からプロセッサ・コア１１４へ命令およびデータを転送することができる。バス２７０のうち１６バイト幅セクションを使用して、プロセッサ・コア１１４からＬ２キャッシュ・ネスト２１０に含まれる性能モニタ２１３へ性能データを転送することができる。
【００４３】
たとえば図３を参照すると、Ｌ２キャッシュ・ネスト２１０は、Ｌ２キャッシュ１１８、Ｌ２キャッシュ・ディレクトリ２１２、および、バス２７０を介してコア１１４（４つのコア、コア０〜コア３が示される）に接続された性能モニタ２１３を備えるように示されている。図３に示されるように、バス２７０は、Ｌ２キャッシュ１１８との間でデータを転送するための第１のセクション３１０を含むことができる。バス２７０のこの第１のセクション３１０は、図３に示されるように、各プロセッサ・コア１１４と結合することができる。本発明の一実施形態では、第１のセクション３１０は、バスを介したストアとすることができる。言い換えれば、第１のセクション３１０を介してＬ２キャッシュ１１８に書き込まれたデータは、メモリ内に格納することもできる。
【００４４】
バス２７０は、プロセッサ１１４を性能モニタ２１３に結合するための第２のセクション３２０を含むこともできる。たとえば図３では、セクション３２０は、プロセッサ・コア０〜３のそれぞれを性能モニタ２１３に結合するためのバスＥＢＵＳ０〜ＥＢＵＳ３を含む。プロセッサ・コア１１４のそれぞれからの性能データは、バスＥＢＵＳ０〜ＥＢＵＳ３を介して性能モニタ２１３に送信することができる。
【００４５】
プロセッサ・コア１１４から性能モニタ２１３への性能データの転送のために、第２のセクション３２０が提供可能であるが、この第２のセクション３２０に加えて、第１のセクション３１０の１つまたは複数のラインを性能データの転送用に使用することもできる。たとえば、バス・セクション３１０のデッド・サイクル中に、セクション３２０に加えてバス・セクション３１０の１つまたは複数のラインを性能データの転送用に使用することができる。
【００４６】
本発明の一実施形態では、コア１１４から性能モニタ２１３に性能データを転送するために使用されるバス、たとえば図３のバスＥＢＵＳ０〜ＥＢＵＳ３を、相対的に細いワイヤで形成することができる。バスＥＢＵＳ０〜ＥＢＵＳ３は、スペースを節約するために相対的に細いワイヤで形成することができる。ワイヤが細いほど、プロセッサ・コア１１４から性能モニタ２１３へと性能データを転送する際の遅延は大きくなるが、この遅延は性能モニタの動作にとって重要でない可能性があるため、遅延を許容できる可能性がある。
【００４７】
図３は、本発明の実施形態に従った性能モニタ２１３の例示的諸構成要素も示す。図に示されるように、性能モニタ２１３は、ラッチ／論理３２１、静的ランダム・アクセス・メモリ３２２、および動的ランダム・アクセス・メモリ３２３を含むことができる。ラッチ３２１を使用して、Ｌ２キャッシュ・ネスト２１０あるいはバス２７０またはその両方で発生するデータおよびイベントを獲得することができる。論理３２１を使用して、ラッチ、ＳＲＡＭ  ３２２、あるいはＤＲＡＭ  ３２３またはそれらすべてに格納された獲得したデータを分析して、たとえばキャッシュ・ミス率などの性能パラメータを計算することができる。
【００４８】
本発明の一実施形態では、ＳＲＡＭ  ３２２は、性能データをＤＲＡＭ  ３２３に転送するためのバッファとして働くことができる。本発明の一実施形態では、ＳＲＡＭ  ３２２は非同期バッファとすることができる。たとえば性能データは、第１のクロック周波数、たとえばプロセッサ・コア１１４が動作する周波数で、ＳＲＡＭ  ３２２に格納することができる。性能データは、第２のクロック周波数、たとえば性能モニタ２１３が動作する周波数で、ＳＲＡＭ  ３２２からＤＲＡＭ  ３２３に転送することができる。非同期ＳＲＡＭバッファを提供することによって、性能データをコア周波数でコア１１４から獲得することが可能であり、データの分析を性能モニタ周波数で実行することができる。前述のように、性能モニタ周波数はコア周波数よりも低い可能性がある。
【００４９】
ＤＲＡＭ  ３２３を性能モニタ２１３に含めることの利点の１つは、通常、ＤＲＡＭデバイスの方がＳＲＡＭデバイスよりもかなり高密度であり、必要とするスペースがかなり少ないことである。したがって、性能モニタが使用可能なメモリが大幅に増加する可能性があり、それによって、複数のプロセッサ・コア１１４間で性能モニタを効率的に共有できるようになる。
【００５０】
結論
本発明の諸実施形態は、性能モニタをＬ２キャッシュ・ネストに含めることによって、プロセッサ・コアをより小さくより効率的にすることができる。さらに、最も重要な性能パラメータがＬ２キャッシュ・ネスト内に取得されるため、Ｌ２キャッシュ・ネストおよびプロセッサ・コアを結合するバスを介した通信は大幅に低減される。
【００５１】
前述の内容は本発明の諸実施形態を対象としているが、本発明の他の諸実施形態はその基本的な範囲を逸脱することなく考案可能であり、その範囲は以下の特許請求の範囲によって決定される。
【図１】
2010531498.tif 000003
【図２】
2010531498.tif 000004
【図３】
2010531498.tif 000005
【国際調査報告】
2010531498.tif 000006
2010531498.tif 000007
2010531498.tif 000008