(57)【要約】【課題】  本発明の課題は、プロセッサにより頻繁にアクセスされる下位レベルキャッシュのキャッシュラインを上位レベルキャッシュから排除する可能性を低減させることによりパフォーマンスを向上させるための方法、装置、物及びシステムを提供することである。【解決手段】  本発明は、下位レベルキャッシュの下位レベルキャッシュラインに存在するデータに対するキャッシュアクセスリクエストを受け付けるステップと、前記下位レベルキャッシュに統合される上位レベルキャッシュに前記下位レベルキャッシュラインに関する最新性情報を送信するステップとを有する方法を提供する。【選択図】  図２
2007249971.tif 000002
【特許請求の範囲】
【請求項１】
下位レベルキャッシュの下位レベルキャッシュラインに存在するデータに対するキャッシュアクセスリクエストを受け付けるステップと、
前記下位レベルキャッシュに統合される上位レベルキャッシュに前記下位レベルキャッシュラインに関する最新性情報を送信するステップと、
を有する方法。
【請求項２】
前記最新性情報に基づき、前記下位レベルキャッシュラインに対応する上位レベルキャッシュの上位レベルキャッシュラインに係る経時データを更新するステップをさらに有する、請求項１記載の方法。
【請求項３】
前記経時データに少なくとも部分的に基づき、前記上位レベルキャッシュラインを排除せず、当該キャッシュラインに係るより古い経時データを有する第２の上位レベルキャッシュラインを排除するステップをさらに有する、請求項２記載の方法。
【請求項４】
前記最新性情報を送信するステップは、ゼロ長リードリクエストを前記上位レベルキャッシュに送信するステップを有する、請求項１記載の方法。
【請求項５】
前記ゼロ長リードリクエストに対応する最も最近利用された状態に、前記下位レベルキャッシュラインに対応する上位レベルキャッシュラインを設定するステップをさらに有する、請求項４記載の方法。
【請求項６】
各々が複数のプロセッサコアの１つに係る複数の下位レベルキャッシュからのキャッシュアクセスリクエストに関する最新性情報を前記上位レベルキャッシュに送信するステップをさらに有する、請求項１記載の方法。
【請求項７】
前記複数の下位レベルキャッシュの少なくとも１つに関する最新性情報の送信をスロットリングするステップをさらに有する、請求項６記載の方法。
【請求項８】
前記複数の下位レベルキャッシュの少なくとも１つに係るプロセッサコアに対する帯域幅割当に基づきスロットリングするステップをさらに有する、請求項７記載の方法。
【請求項９】
第１レベルキャッシュと、
前記第１レベルキャッシュに接続される第２レベルキャッシュと、
アクセスリクエストが前記第１レベルキャッシュに存在するデータに対応する場合、前記第２レベルキャッシュにメッセージを送信するメッセージユニットと、
を有する装置。
【請求項１０】
前記メッセージユニットは、ゼロの長さフィールドを有するリードリクエストとして前記メッセージを生成する、請求項９記載の装置。
【請求項１１】
閾値数のメッセージが第１期間に前記メッセージユニットから送信された場合、前記送信をスロットリングするスロットル装置をさらに有する、請求項９記載の装置。
【請求項１２】
前記メッセージユニットは、前記第１レベルキャッシュにかかるコアのトランザクショントラフィックに少なくとも部分的に基づき、前記送信をスロットリングする、請求項１１記載の装置。
【請求項１３】
前記スロットル装置はさらに、前記トランザクショントラフィックがトラフィック閾値を超過しているか判断し、超過している場合、前記送信をスロットリングするロジックを有する、請求項１２記載の装置。
【請求項１４】
前記第２レベルキャッシュは、前記データを含む前記第２レベルキャッシュのキャッシュラインに対する最新性情報を更新する、請求項９記載の装置。
【請求項１５】
前記第２レベルキャッシュは、前記最新性情報に少なくとも部分的に基づき、前記データを有するキャッシュラインを維持し、異なるキャッシュラインを排除する、請求項１４記載の装置。
【請求項１６】
前記第２レベルキャッシュは、前記第１レベルキャッシュより上位のレベルを有する、請求項９記載の装置。
【請求項１７】
マシーンにより実行されると、
ある期間にキャッシュ階層の第１キャッシュから第２キャッシュに送信される同期メッセージの個数を決定するステップと、
前記同期メッセージの個数がメッセージ閾値を超過する場合、前記同期メッセージをスロットリングするステップと、
を有する方法を前記マシーンが実行することを可能にする命令を有するマシーン可読記憶媒体を有する物。
【請求項１８】
前記方法はさらに、前記同期メッセージの個数が前記メッセージ閾値を超過する場合、スロットル指標を設定するステップを有する、請求項１７記載の物。
【請求項１９】
前記方法はさらに、前記期間後に前記スロットル指標をクリアするステップを有する、請求項１８記載の物。
【請求項２０】
前記方法はさらに、保留中のプロセッサトランザクションの個数がウォーターマーク閾値を超過するか判断するステップを有する、請求項１７記載の物。
【請求項２１】
前記方法はさらに、前記保留中のプロセッサトランザクションの個数がウォーターマーク閾値を超過している場合、前記同期メッセージをスロットリングするステップを有する、請求項２０記載の方法。
【請求項２２】
前記方法はさらに、第２プロセッサコアから共有キャッシュメモリに同期メッセージをスロットリングしない間、第１プロセッサコアから前記共有キャッシュメモリに同期メッセージをスロットリングするステップを有する、請求項１７記載の物。
【請求項２３】
第１キャッシュメモリを有する第１プロセッサコアと、
第２キャッシュメモリを有する第２プロセッサコアと、
前記第１プロセッサコアと前記第２プロセッサコアとに接続され、前記第１キャッシュメモリにおいてヒットが生じた場合、前記第１プロセッサコアが同期メッセージを送信する共有キャッシュメモリと、
前記共有キャッシュメモリに接続されるＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）と、
を有するシステム。
【請求項２４】
前記共有キャッシュメモリは、前記第１キャッシュメモリと前記第２キャッシュメモリとに関する統合キャッシュメモリを有する、請求項２３記載のシステム。
【請求項２５】
前記第１プロセッサコアと、前記第２プロセッサコアと、前記共有キャッシュメモリとを有するマルチコアプロセッサをさらに有する、請求項２３記載のシステム。
【請求項２６】
前記第１プロセッサコアはさらに、前記同期メッセージを生成するメッセージユニットを有し、
前記同期メッセージは、ゼロ長リードリクエストを有する、請求項２３記載のシステム。
【請求項２７】
前記メッセージユニットはさらに、前記第１プロセッサコアに保留中のトランザクションのレベルに少なくとも部分的に基づき、同期メッセージの送信をスロットリングするスロットルロジックを有する、請求項２４記載のシステム。
【請求項２８】
前記スロットルロジックは、ある期間に送信される同期メッセージの個数に少なくとも部分的に基づき、同期メッセージの送信をスロットリングする、請求項２７記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサに関し、より詳細には、マルチレベルキャッシュ階層を有するシステムのプロセッサに関する。
【背景技術】
【０００２】
多くのシステムは、データが使用されるプロセッサにより密接に関連してデータを一時的に格納する１以上のキャッシュメモリを有する。このようにして、短縮されたデータ抽出時間がプロセッサにより実現することが可能であり、パフォーマンスを向上させることができる。マルチレベルキャッシュメモリが、システムに存在するかもしれない。これらのキャッシュレベルは、プロセッサ内に設けることが可能ないわゆるレベルゼロ（Ｌ０）キャッシュメモリと、プロセッサ内に設けることがさらに可能ないわゆるレベルワン（Ｌ１）キャッシュメモリとを有するかもしれない。プロセッサ内部又はそれに密接に接続されるさらなるレベルのキャッシュメモリがさらに、各種システムに設けることが可能である。
【０００３】
いくつかのシステムでは、マルチレベルキャッシュメモリが、統合（ｉｎｃｌｕｓｉｖｅ）キャッシュ階層として実現されるかもしれない。統合キャッシュ階層では、キャッシュメモリの１つは（すなわち、下位レベルキャッシュメモリ）、他のキャッシュメモリ（すなわち、上位レベルキャッシュメモリ）に含まれるデータの一部を有する。キャッシュ階層は、それらが相対的に速いアクセススピードを有するより小さなキャッシュが頻繁に使用されるデータを有することを可能にするため、プロセッサのパフォーマンスを向上させるかもしれない。他方、より低速なアクセススピードを有するより小さなキャッシュより大きなキャッシュは、頻繁には使用されないデータ（下位レベルキャッシュのデータのコピーと共に）を格納する。典型的には、このような統合キャッシュ階層の下位レベルキャッシュメモリは、より上位のレベルのキャッシュメモリより小さなものとなる。
【０００４】
統合キャッシュ階層はある共通のデータを有しているため、１つのキャッシュレベルのキャッシュラインの排除（ｅｖｉｃｔｉｏｎ）は、キャッシュコヒーレンシを維持するため、他のレベルのキャッシュ階層における対応するキャッシュラインの排除を引き起こすかもしれない。より詳細には、より上位のレベルのキャッシュにおける排除は、より下位のレベルのキャッシュにおける排除を引き起こすかもしれない。各種排除スキームが、異なるキャッシュメモリにおいて利用可能である。１つの共通した排除スキームは、最も最近利用されていないキャッシュラインが排除に選ばれるＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）スキームとして知られている。従って、各キャッシュラインは、キャッシュにおける他のキャッシュラインに関するそれの経時を示すためのそれに係る最新性情報を有するかもしれない。さらなるキャッシュ処理技術は、キャッシュラインのアクセス可能性及び／又は有効性を示すため、状態データとキャッシュラインとを関連付けることを含む。例えば、状態データは、いわゆるＭＥＳＩ状態として知られている、ｍｏｄｉｆｉｅｄ（Ｍ）、ｅｘｃｌｕｓｉｖｅ（Ｅ）、ｓｈａｒｅｄ（Ｓ）及び／又はｉｎｖａｌｉｄ（Ｉ）の各状態を含むかもしれない。
【０００５】
従来の排除技術を利用して、より上位のレベルのキャッシュのキャッシュラインは、下位レベルキャッシュにおける当該キャッシュラインの対応するコピーがプロセッサにより多くアクセスされていても、古い（すなわち、最も最近利用されていないキャッシュライン）ものであるとして排除されるかもしれない。統合性（ｉｎｃｌｕｓｉｖｉｔｙ）を有する階層では、より上位のレベルのキャッシュラインが排除されると、下位レベルキャッシュの対応するキャッシュラインもまた明示的に無効にされなければならない。このような下位レベルにおいて無効にされたキャッシュラインは、プロセッサにより頻繁にアクセスされるデータを有するかもしれず、不要なキャッシュミスを引き起こすこととなる。これらのキャッシュミスは、メインメモリなどの他のメモリ位置から有効なデータを取得するための大きな遅延を引き起こす。
【０００６】
さらに、統合キャッシュ階層が、マルチコアプロセッサのマルチコアなどの複数のプロセッサの間に共有されているより上位のレベルのキャッシュを有するとき、問題が生じる。このシナリオでは、各コアは上位レベルキャッシュにおいて少なくともいくつかのキャッシュラインを占有するが、すべてのコアが共有されるリソースについて競合する。コアの１つがそれの下位レベルキャッシュ内に適合する小さなワーキングセットを使用するとき、当該コアは、リクエストがそれの下位レベルキャッシュにおいてヒットするため、（あったとして）ほとんど上位レベルキャッシュにリクエストを送信する必要がなくなる。この結果、上位レベルキャッシュにおける当該コアのラインは、当該コアがそれらを使用する頻度に関係なく古いものとなる。キャッシュラインを上位レベルキャッシュに持続的に割り当てる他のコアと上位レベルキャッシュを共有するとき、当該コアのデータが排除され、パフォーマンスの低下を招くこととなる。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上記問題点に鑑み、本発明は、プロセッサにより頻繁にアクセスされる下位レベルキャッシュのキャッシュラインを上位レベルキャッシュから排除する可能性を低減させることによりパフォーマンスを向上させるための方法、装置、物及びシステムを提供することである。
【課題を解決するための手段】
【０００８】
上記課題を解決するため、本発明は、下位レベルキャッシュの下位レベルキャッシュラインに存在するデータに対するキャッシュアクセスリクエストを受け付けるステップと、
前記下位レベルキャッシュに統合される上位レベルキャッシュに前記下位レベルキャッシュラインに関する最新性情報を送信するステップとを有する方法を提供する。
【０００９】
さらに、本発明は、第１レベルキャッシュと、前記第１レベルキャッシュに接続される第２レベルキャッシュと、アクセスリクエストが前記第１レベルキャッシュに存在するデータに対応する場合、前記第２レベルキャッシュにメッセージを送信するメッセージユニットとを有する装置を提供する。
【００１０】
さらに、本発明は、マシーンにより実行されると、ある期間にキャッシュ階層の第１キャッシュから第２キャッシュに送信される同期メッセージの個数を決定するステップと、前記同期メッセージの個数がメッセージ閾値を超過する場合、前記同期メッセージをスロットリングするステップとを有する方法を前記マシーンが実行することを可能にする命令を有するマシーン可読記憶媒体を有する物を提供する。
【００１１】
さらに、本発明は、第１キャッシュメモリを有する第１プロセッサコアと、第２キャッシュメモリを有する第２プロセッサコアと、前記第１プロセッサコアと前記第２プロセッサコアとに接続され、前記第１キャッシュメモリにおいてヒットが生じた場合、前記第１プロセッサコアが同期メッセージを送信する共有キャッシュメモリと、前記共有キャッシュメモリに接続されるＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）とを有するシステムを提供する。
【発明の効果】
【００１２】
本発明によると、プロセッサにより頻繁にアクセスされる下位レベルキャッシュのキャッシュラインを上位レベルキャッシュから排除する可能性を低減させることによりパフォーマンスを向上させるための方法、装置、物及びシステムを提供することができる。
【発明を実施するための最良の形態】
【００１３】
本発明の実施例は、キャッシュ階層の複数レベル間の経時情報（ここではまた、最新性又はＬＲＵ情報と呼ばれる）を同期するのに利用可能である。より詳細には、最新性データを提供する同期メッセージが、統合キャッシュ階層の複数レベル間の最新性データを同期するのに利用可能である。このように、上位レベルキャッシュは、下位レベルキャッシュの対応するキャッシュラインの使用に関する情報によって更新される。この結果、上位レベルキャッシュからの排除は、下位レベルキャッシュに存在するそれのキャッシュラインに対する正しい経時情報を考慮するかもしれない。従って、プロセッサにより頻繁にアクセスされる下位レベルキャッシュのキャッシュラインは、上位レベルキャッシュから排除される可能性は低くなり、これによりパフォーマンスが向上する。すなわち、より最近に使用された下位レベルキャッシュのキャッシュラインが、上位レベルキャッシュの対応するキャッシュラインに維持され、下位レベルキャッシュにおけるキャッシュミスから生じるパフォーマンスペナルティを低減する。
【００１４】
さらに、マルチコアプロセッサ又は他のマルチプロセッサシステムが存在する実施例では、当該ＬＲＵ情報を提供することは、１つのコアが上位レベルキャッシュからの過剰な排除を生じさせることを回避するかもしれない。このように、より少ないキャッシュミスしか有しないコアは、関連するキャッシュラインが排除されることを回避するため（上位レベルキャッシュと下位レベルキャッシュの両方において）、それに関連する下位レベルキャッシュからのＬＲＵ情報を上位レベルキャッシュに送信することが可能である。
【００１５】
本発明の実施例により送信されるＬＲＵ情報は所望されない排除を回避することが可能であるが、バストラフィックの増大を生じさせるかもしれない。従って、いくつかの実施例は、各種システム基準に基づき同期メッセージの送信を抑制するスロットリング機構を有するかもしれない。例えば、このような同期メッセージの特定数のみが所与の時間インターバルに送信されるようにしてもよい。さらに、同期トラフィックは有用な作業の進捗をブロックするかもしれないため、かなりの量の他のトランザクショントラフィックが生じているときは、コアは同期メッセージの送信を回避するかもしれない。
【００１６】
ここで説明されるように、各種ハードウェア、ソフトウェア、ファームウェア及び／又はそれらの組み合わせが、本発明の実施例による方法を実行するのに実現可能である。さらに、ここでは特にマルチコアプロセッサに関して説明されるが、本発明の範囲がこれに限定されず、統合キャッシュ階層を含む他のシステムや、このような階層は備えないが、スヌープフィルタなどの他の統合データ構造を維持する他のシステムにおいて実現されてもよいということが理解されるべきである。
【００１７】
図１を参照するに、本発明の一実施例によるプロセッサのブロック図が示される。図１に示されるように、プロセッサ１０は、複数のプロセッサコア２００〜２０ｎ（コア２０により総称される）を含むマルチコアプロセッサであってもよい。図１に示されるように、各コアは、キャッシュ階層の複数レベルを有するかもしれない。具体的には、図１に示されるように、各コア２０は最下位レベルキャッシュ２５０〜２５ｎ（キャッシュ２５により総称される）を有するかもしれない。一実施例では、キャッシュ２５は、本発明の範囲がこれに限定されるものではないが、Ｌ０キャッシュに対応するものであってもよい。各コア２０はさらに、中間レベルキャッシュ２８０〜２８ｎ（キャッシュ２８により総称される）を有してもよい。中間レベルキャッシュ２８は、いくつかの実施例ではＬ１キャッシュに対応するかもしれない。さらに図１に示されるように、各コア２０はさらに、メッセージユニット２２０〜２２ｎ（メッセージユニット２２として総称される）を有する。以下でさらに説明されるように、メッセージユニット２２は、最新性メッセージを生成及び送信するのに利用可能である。
【００１８】
プロセッサ１０はさらに、下位レベルキャッシュに存在するデータのコピーを含む上位レベルキャッシュであるかもしれないラストレベルキャッシュ（ＬＬＣ）４０を有するかもしれない。図１に示されるように、各コア２０は、ＬＬＣ４０が共有メモリとして機能するように、リンク３００〜３０ｎ（リンク３０として総称される）を介しＬＬＣ４０に接続されるかもしれない。
【００１９】
各実施例では、プロセッサ１０は、統合キャッシュ階層を有するかもしれない。例えば、図１の統合キャッシュ階層では、キャッシュ２５は、キャッシュ２８の内部にデータの一部を有し、さらにキャッシュ２８が、キャッシュ４０にデータの一部を有するかもしれない。ラストレベルキャッシュ４０からのキャッシュラインの排除に応答して、キャッシュコヒーレンシを維持するため、いくつかの実施例では、所与の中間レベルキャッシュ２８と最下位レベルキャッシュ２５の対応するキャッシュラインがまた排除されるかもしれない。
【００２０】
動作中、与えられたコアの実行ユニットからのメモリリクエストはまず（図１に図示せず）、システム内の他の何れかのキャッシュを検索する前に、キャッシュ階層の最下位レベルにアクセスするかもしれない。従って、パフォーマンスを向上させるため、頻繁にアクセスされたデータが可能な最下位キャッシュレベル、すなわち、キャッシュ２５に存在するかもしれない。リクエストされたデータがキャッシュ２５に存在しない場合、キャッシュ２８は次に、当該データがそこにあるか判断するためアクセスされるかもしれない。図１に示される実施例では、各中間レベルキャッシュ２８は、複数のコアの間の共有コアであるＬＬＣ４０にリクエストが発行される前に、各コア２０に対する最終的なルックアップポイントとなる。
【００２１】
各実施例では、明示的なメッセージセットが、それの対応する上位レベルキャッシュの１以上とコアとの間でＬＲＵ情報を通信するのに利用されてもよい。このように、経時又は最新性情報が上位レベルキャッシュにおいて更新されてもよく、頻繁に使用される下位レベルキャッシュラインに係るキャッシュラインの排除を低減することができる。これらの最新性メッセージは、下位レベルキャッシュ内でヒットするトランザクションに対するリードリクエストであるかもしれず、メッセージユニット２２から提供されるかもしれない。各実施例では、これらのリードリクエストは、コアにデータを返すことを要求しない。その代わりに、当該リードリクエストは、対応するキャッシュラインを読み出すことなく、それの最新性情報を更新するため上位レベルキャッシュにより利用される。
【００２２】
図２を参照するに、本発明の一実施例による方法のフロー図が示される。方法１００は、下位レベルキャッシュからリクエストされたデータにアクセスし、下位レベルキャッシュにおけるヒットに応答して、上位レベルキャッシュに最新性情報を提供するのに利用されるかもしれない。一実施例では、方法１００は、プロセッサコアのキャッシュコントローラにおいて実現されてもよい。図２に示されるように、方法１００は、キャッシュからデータをリクエストすることによって開始される（ブロック１０５）。例えば、プロセッサコアは、最下位レベルキャッシュからデータをリクエストするかもしれない。次に、最下位レベルキャッシュにキャッシュヒットがあるか判断される（ブロック１１０）。
【００２３】
キャッシュミスがある場合（すなわち、当該データが最下位レベルキャッシュに存在しない場合）、コントロールはブロック１１５に移行する。そこでは、リクエストされたデータがメモリ階層から取得される（ブロック１１５）。図２に示されるように、方法１００は、当該地点で終了するかもしれず、リクエストされたデータが従来方法によりアクセスされるかもしれない。
【００２４】
図２をさらに参照するに、ブロック１１０においてキャッシュヒットがあると判断される場合、コントロールはブロック１２０に移行する。そこにおいて、リクエストされたデータが要求元に返されるかもしれない（ブロック１２０）。すなわち、要求されたデータを含むキャッシュラインが、最下位レベルキャッシュからプロセッサコアに送信される。次に、メッセージ抑制が起動されるか判断される（ブロック１３０）。以下で詳細に説明されるように、このようなスロットリングは下位レベルキャッシュから上位レベルキャッシュへのメッセージトラフィックを回避するのに起動されるかもしれない。スロットリングが起動されない場合、コントロールはブロック１３０から１４０に移行する。その後、対応するキャッシュライン（ヒットとなった下位レベルキャッシュのキャッシュライン）に対する同期メッセージが、キャッシュ階層の次のレベルに送信されるかもしれない（ブロック１４０）。これらのメッセージは１以上のキャッシュレベルに送信され、キャッシュ階層の何れか所望されるレベルからのものであってもよいということに留意されたい。さらに、同期メッセージに基づき、送信されたこのようなメッセージのカウント（すなわち、メッセージカウント）が更新されてもよい（ブロック１４０）。
【００２５】
図２をさらに参照するに、対応するキャッシュラインの最新性情報が次のレベルのキャッシュにおいて更新されるかもしれない（ブロック１５０）。一例として、次のレベルのキャッシュメモリは、当該キャッシュラインに係るタグを、当該キャッシュラインをＭＲＵ（Ｍｏｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）キャッシュラインとして示すよう更新するようにしてもよい。コントロールはブロック１５０又は１３０からブロック１６０に移行する。そこでは、リクエストはトランザクションキューから割当解除されるかもしれない（ブロック１６０）。すなわち、当該データに対する初期的なプロセッサリクエストが、保留中のコアトランザクションを格納するトランザクションバッファなどのバッファから割当解除されるかもしれない。これにより、方法１００は終了する。図２の実施例を用いて説明されたが、本発明の範囲はこれに限定されるものでなく、下位レベルキャッシュから上位レベルキャッシュにＬＲＵ情報を提供する異なる方法が実現されてもよい。
【００２６】
下位レベルキャッシュから上位レベルキャッシュに最新性情報を提供することによって、下位レベルキャッシュ（又は統合上位レベルキャッシュに存在する）において最も最近使用されたデータが、ＭＲＵキャッシュラインとして上位レベルキャッシュにおいて更新されるかもしれない。このように、当該キャッシュラインは、上位レベルキャッシュ（従って、下位レベルキャッシュにおいても）における排除を回避するかもしれない。
【００２７】
統合キャッシュ階層におけるキャッシュ間で送信される同期メッセージはまたプロセッサの共有リソースに影響を与えるため、このようなメッセージは実際にはパフォーマンスの低下を引き起こすかもしれない。従って、送信される最新性情報がキャッシュ動作に対するかなり肯定的な影響を有していない場合、さらなるキャッシュトラフィックは実際にはパフォーマンスの低下を引き起こす可能性がある。従って、このようなメッセージについて利用可能な最大帯域幅を制限するため、様々な方法により同期メッセージを抑制するようにしてもよい。このように、可能性のある否定的な影響を最小限に抑えながら、このようなメッセージを送信する潜在的なパフォーマンスゲインが最大化されるかもしれない。
【００２８】
各実施例では、スロットリングのための複数の機構が実現可能である。例えば、カウンタベーススロットリング及び占有ベーススロットリングが所与のシステムにおいて実現可能である。一実施例では、１ビットの状態が、同期メッセージが所与の時点に送信可能であるか示すようにするかもしれない。ここではヒントビット（ｈｉｎｔ  ｂｉｔ）と呼ばれる当該ビットは、同期メッセージが送信されることを回避するため、カウンタベーススロットリング及び／又は占有ベーススロットリングによって抑制することができる。一実施例では、第１のスロットリング機構は、同期メッセージに利用可能な帯域幅を効果的に制限するカウンタベースアプローチであってもよい。設定可能なカウンタは、ヒントビットが設定可能な時間インターバルを決定するのに利用可能である。当該カウンタのオーバーフローにより、新たなインターバルがトリガーされるかもしれない。各実施例において、別のカウンタが、所与のインターバルにおいて送信される同期メッセージの個数を追跡するのに利用可能である。ヒントビットは、各インターバルの最初に設定され、同期メッセージの個数が当該インターバルに対して超過するとクリアされる。しかしながら、いくつかの実施例では、１つのメッセージのみがインターバル毎に送信され、これにより、第２のカウンタの必要性が回避されるかもしれない。
【００２９】
第２のスロットリング機構は、キャッシュ階層が他の有用な作業により占有されるとき、メッセージ帯域幅を制限する占有ベースアプローチであってもよい。例えば、キャッシュ階層において保留されるリクエストの個数が、占有ベーススロットリングを実現するか否か判断するのに分析される。一実施例では、保留中のトランザクションを保持するコアの共通のキュー処理構造が解析される。より詳細には、いくつかの実施例では、ある状態のトランザクションのみがキャッシュ階層の他の何れかにおいて現在保留中のリクエストに対応するように、キューの各エントリが分析されてもよい。所与の時間インターバルにおける発行されたエントリの個数が閾値を超過する場合、同期メッセージは次にインターバルまで抑制される。
【００３０】
異なるスロットリングアプローチが、ヒントビットを設定及びクリアするのに実現されるかもしれない。一例では、ヒントビットは第１カウンタがオーバーフローすると設定され、新たなインターバルのスタートを示すこととなる。この時点において、トランザクションキューの発行済みエントリの個数がチェックされ、閾値レベルと比較される。当該キューの占有レベルが閾値未満である場合に限って、ヒントビットは実際に設定されるかもしれない。そうでない場合、当該ビットは抑制され、以降におけるキューの占有に変更に関係なく、次のインターバルの開始まで設定することができない。
【００３１】
図３を参照するに、本発明の一実施例によるメッセージスロットリング方法のフロー図が示される。方法２００は、与えられたコアから最新性メッセージをスロットリングするか否か判断するため実行されるかもしれない。図３に示されるように、方法２００は、メッセージスロットリングを不可にすることによって、すなわち、同期メッセージをイネーブルとすることによって開始されるかもしれない（ブロック２１０）。例えば、プロセッサが起動されると、同期メッセージが送信に対してイネーブルとされるかもしれない。
【００３２】
次に、カウンタがオーバーフローしたか否か判断される（ブロック２２０）。このカウンタは、所定の範囲の数に対して継続的にカウントとされるカウンタであるかもしれない。各実施例において、当該カウンタはキャッシュアクセスなどのイベントやサイクルをカウントするかもしれない。当該カウンタは、オーバーフローが発生するまでそれのカウントを持続的にインクリメントするかもしれない。カウンタがオーバーフローすると、コントロールはブロック２１０に移行する。そこにおいて、メッセージスロットリング（起動されている場合）が不可とされるかもしれない。
【００３３】
図３を参照するに、ブロック２２０においてカウンタがオーバーフローしていないと判断すると、コントロールはブロック２３０に移行し、そこで同期メッセージカウントがメッセージ閾値を超過するか判断される（ブロック２３０）。同期メッセージカウントは、カウンタの所与のサイクルにおいて（すなわち、カウンタがオーバーフローする前に）送信される同期メッセージの個数に対応するかもしれない。メッセージ閾値は可変的なものであってもよく、異なる実施例では、ユーザ制御可能なものであってもよいということに留意されたい。同期メッセージカウントがメッセージ閾値を超過する場合、コントロールはブロック２４０に移行し、そこにおいてメッセージスロットリングがイネーブルとされる。従って、コントロールは、カウンタのカウント値の持続的な判定のためブロック２２０に戻る。
【００３４】
ブロック２３０において、同期メッセージカウントがメッセージ閾値を超過しないと判断されると、コントロールはブロック２５０に移行する。そこでは、コアのトランザクションキューレベルがウォーターマーク又は水準閾値（ｗａｔｅｒｍａｒｋ  ｔｈｒｅｓｈｏｌｄ）を超過しているか判断される（ブロック２５０）。すなわち、コアがそれのすべての保留中のトランザクションに対するエントリを含むそれに関連するトランザクションキューを有しているかもしれない。このようなトランザクションは、スヌープトラフィックや他のバストランザクションなどからメモリリード及びライトを含むかもしれない。このようなエントリが多数存在する場合、これは、メッセージトラフィックに依存するコアにおいて実行される有用な作業の作業量の表示となる。エントリ数がウォーターマーク閾値を超過する場合、上述したように、メッセージスロットリングをイネーブルにするため、コントロールはブロック２４０にわたされる。このように、同期メッセージに係るメッセージトラフィックは回避され、その代わりに、有用な作業が当該同期メッセージによって妨げられることなく進捗する。ブロック２５０において、トランザクションキューレベルがウォーターマーク閾値未満である場合、コントロールは上述したブロック２２０に戻る。図３の実施例を用いて説明したが、本発明の範囲がこれに限定されるものでないということは理解されるであろう。
【００３５】
スロットリング機構を実現する各種方法が、各実施例において実現される。例えば、ハードウェア、ソフトウェア、ファームウェア又はその組み合わせがスロットリングを実行するのに利用可能である。図４を参照するに、本発明の一実施例によるスロットルユニット３００のブロックズが示される。一実施例では、スロットルユニット３００は、図１のメッセージユニット２２などのメッセージ生成ユニット内に構成されてもよい。しかしながら他の実施例では、スロットルユニット３００が他の位置に設けられるかもしれない。スロットルユニット３００は、その出力としてオーバーフロー信号（ＯＦ）を有する第１カウンタ３１０を含むかもしれない。第１カウンタ３１０は、所定の範囲において継続的にカウントし、その後オーバーフローするよう構成される。同期メッセージカウンタ３２０は、コアにより生成される各同期メッセージに対する信号を受信するよう接続される。従って、同期メッセージカウンタ３２０は、メッセージカウントを生成するかもしれない。カウンタ３１０及び３２０の出力は、スロットルロジック３３０に接続されるかもしれない。スロットルロジック３３０は、各種システムパラメータに基づき同期メッセージをスロットリングするか否か判断するため、図３に関して上述されたような方法を実現する。各閾値は、スロットルロジック３３０のレジスタに格納される。例えば、第１レジスタ３３５はメッセージ閾値を格納し、第２レジスタ３４０はウォーターマーク閾値を格納するようにしてもよい。これらの閾値は、同期メッセージをスロットリングするか否かの解析において各種カウントと比較するため、図３に関して上述されたように利用されるかもしれない。
【００３６】
図４にさらに示されるように、スロットルロジック３３０は、キューエントリの個数に対応する信号を受信するよう接続される。この個数は、関連付けされたコアなどのトランザクションキューのレベルに対応するかもしれない。各種閾値及び入力カウントに基づき、スロットルロジック３３０は、同期メッセージをスロットリングするか否か判断するかもしれない。スロットリングが起動されるべき場合、スロットル信号がスロットルロジック３３０から送信されるかもしれない。各実施例では、このようなスロットル信号は、同期メッセージを送信するキャッシュコントローラなどに送信される。図４の実施例を用いて説明したが、本発明の範囲がこれに限定されるものでないということが理解されるべきである。
【００３７】
各実施例を用いて、同期メッセージは下位レベルキャッシュから上位レベルキャッシュに送信される。これらのメッセージに基づき、キャッシュラインに係るタグデータの経時情報が更新される。これらの上位レベルキャッシュにおいて排除が行われると、更新された最新性情報は、上位レベルキャッシュにおいて最近アクセスされていないが、下位レベルキャッシュにおいて最近アクセスされたキャッシュラインの排除を回避するかもしれない。
【００３８】
図５を参照するに、本発明の一実施例による方法のフロー図が示される。図５に示されるように、方法４００は、同期メッセージを生成し、当該メッセージを上位レベルキャッシュに送信し、当該メッセージデータにより上位レベルキャッシュを更新するのに利用可能である。図５を参照するに、方法４００は、下位レベルキャッシュにおいてヒットしたラインに対応するキャッシュラインに対する同期メッセージを受信することによって開始される（ブロック４１０）。この同期メッセージのコンテンツは各実施例において可変的であるが、一実施例では、同期メッセージはゼロ長のリードリクエストであるかもしれない。同期メッセージを受信すると、上位レベルキャッシュは下位レベルキャッシュにアクノリッジメント信号を送り返す（ブロック４２０）。いくつかの実施例では、このアクノリッジメントメッセージは、本発明の範囲がこれに限定されるものではないが、グローバルオブザベーション（ＧＯ）信号であってもよい。
【００３９】
図５をさらに参照するに、ブロック４２０からコントロールがブロック４３０にわたされる。そこにおいて、同期メッセージに対応するキャッシュラインが上位レベルキャッシュに存在するか判断される（ブロック４３０）。典型的には、統合キャッシュメモリ階層では、下位レベルキャッシュに存在するキャッシュラインはまた、下位レベルキャッシュのデータを含む対応する上位レベルキャッシュに存在すべきである。しかしながら、データが上位レベルキャッシュに存在しない場合、コントロールはブロック４３０からブロック４４０にわたされる。そこでは、データがメモリ階層の他の部分からリクエストされるかもしれない（ブロック４４０）。しかしながら、他の実施例では、当該メッセージは省かれ、メッセージ関するさらなるアクションが実行されることはないかもしれない。ブロック４４０から、方法４００は終了するかもしれない。
【００４０】
図５をさらに参照するに、データが上位レベルキャッシュに存在する場合、コントロールはブロック４３０からブロック４５０にわたされる。そこでは、関連するキャッシュラインに対する最新性情報が、上位レベルキャッシュにおいて更新されるかもしれない（ブロック４５０）。例えば、関連するキャッシュラインに対するキャッシュタグが最新性情報によって更新されるかもしれない。この最新性情報は、各実施例において可変的なものであるが、例えば、各トランザクションに対して継続的にインクリメントされるカウント値であってもよい、他の実施例では、タイムスタンプなどの値が利用されてもよく、又は他のＬＲＵ指標が利用されてもよい。このため、上位レベルキャッシュは、下位レベルキャッシュのそれの存続するキャッシュラインの利用に関するより正確な情報によって更新される。
【００４１】
図５をさらに参照するに、通常動作中、キャッシュラインは、新たなキャッシュラインが挿入可能となるように、上位レベルキャッシュから排除される必要があるかもしれない。このため、上位レベルキャッシュは、排除のためのラインを選択するため、排除ルーチンを実行するかもしれない（ブロック４６０）。排除ルーチンは、多数の各種形態をとりうる。一実施例では、ＬＲＵ排除スキームが実現されるかもしれない。このため、上位レベルキャッシュは、何れのキャッシュラインが最も最近利用されていないキャッシュラインであるか判断し、当該ラインを排除用に選択するかもしれない。下位レベルキャッシュの最近利用されたキャッシュラインに対して送信された同期メッセージによって（すなわち、ブロック４１０）、上位レベルキャッシュの対応するキャッシュラインが、それの最新性情報に基づき維持され、上位レベルキャッシュの異なるキャッシュラインが代わりに破棄される（ブロック４７０）。図５の実施例を用いて説明したが、本発明の範囲がこれに限定されるものでなく、同期メッセージを実現し、排除を実行する他の方法が有効であるかもしれない。
【００４２】
本発明の実施例は、上位レベルキャッシュにおける経時情報の精度を向上させるかもしれない。このように、キャッシュは、よりグローバルに正確な情報に基づき、排除に関するより良好な決定を行うかもしれない。各実施例では、同期メッセージは、それが何れのデータのリターンも求めないという点で軽量なメッセージであるかもしれない。このため、各実施例では、下位レベルキャッシュのＭＲＵキャッシュラインがキャッシュミスがなくても上位レベルキャッシュに可視的なものとすることが可能であるという点で、同期メッセージは上位レベルキャッシュが最適なキャッシュ処理を実行するためキャッシュラインの置換を処理することを可能にするかもしれない。
【００４３】
さらに統合上位レベルキャッシュを共有する複数の独立したキャッシュ階層を有するマルチコアシステムでは、コアのうちの上位レベルキャッシュへの非対称的なアクセスパターンが、同期メッセージを送信することによって一様にすることが可能であり、これにより、上位レベルキャッシュのより公平な共有を可能にする。従って、わずかなキャッシュミスを上位レベルキャッシュに送信するコアが、同期メッセージを介した負のパフォーマンスへの影響を回避することが可能となる。さらに、本発明の実施例により同期メッセージをスロットリングすることによって、マルチコアプロセッサのシングルコアが、例えば、コードストリームの実行時など、当該コアがそれのコアキャッシュに対する高いミスレートを被るとき、それの帯域幅を超過することが回避されるかもしれない。
【００４４】
多数の異なるシステムタイプによって、実施例が実現されるかもしれない。図６を参照するに、本発明の実施例によるマルチプロセッサシステムのブロック図が示される。図６に示されるように、マルチプロセッサシステム５００は、ポイント・ツー・ポイントインターコネクトシステムであって、ポイント・ツー・ポイントインターコネクト５５０を介し接続される第１プロセッサ５７０と第２プロセッサ５８０とを有する。しかしながら他の実施例では、マルチプロセッサシステムは、マルチドロップバスや他の同様の実現形態などの他のバスアーキテクチャを有するものであってもよい。図６に示されるように、プロセッサ５７０と５８０のそれぞれは、他のコア及び潜在的には多数の他のコアが存在するかもしれないが、第１及び第２プロセッサコア（すなわち、プロセッサコア５７４ａと５７４ｂ及びプロセッサコア５８４ａと５８４ｂ）を含むマルチコアプロセッサであってもよい。図６の実施例には図示されていないが、第１及び第２プロセッサコアはそれぞれ１以上のキャッシュメモリを有してもよいということが理解されるべきである。さらに図６に示されるように、ラストレベルキャッシュメモリ５７５及び５８５はそれぞれ、プロセッサコア５７４ａと５７４ｂ及び５８４ａと５８４ｂの各ペアに接続されてもよい。このようなアーキテクチャにおけるパフォーマンスを向上させるため、プロセッサ５７０及び６８０の内部のキャッシュコントローラ又は他のコントロールロジックは、本発明の実施例により最新性メッセージを生成、送信及び／又はスロットリングしてもよい。
【００４５】
図６をさらに参照するに、第１プロセッサ５７０はさらに、メモリコントローラハブ（ＭＣＨ）５７２とポイント・ツー・ポイント（Ｐ−Ｐ）インタフェース５８６及び５７８を有する。同様に、第２プロセッサ５８０は、ＭＣＨ５８２とＰ−Ｐインタフェース５８６及び５８８を有する。図６に示されるように、ＭＣＨ５７２と５８２は、上記プロセッサを各自のメモリ、すなわち、各プロセッサにローカルに付属されるメインメモリの一部であるかもしれないメモリ５３２と５３４とに接続される。
【００４６】
第１プロセッサ５７０と第２プロセッサ５８０は、それぞれＰ−Ｐインターコネクト５５２と５５４を介しチップセット５９０に接続される。図６に示されるように、チップセット５９０は、Ｐ−Ｐインタフェース５９４と５９８を有する。さらに、チップセット５９０は、チップセット５９０をハイパフォーマンスグラフィックスエンジン５３８に接続するインタフェース５９２を有する。一実施例では、アドバンスドグラフィックスポート（ＡＧＰ）バス５３９が、グラフィックスエンジン５３８とチップセット５９０とを接続するのに利用可能である。ＡＧＰバス５３９は、カリフォルニア州サンタクララにあるインテルコーポレイションによって１９９８年５月４日に公表されたＡｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ  Ｉｎｔｅｒｆａｃｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ，Ｒｅｖｉｓｉｏｎ  ２．０に準拠するものであってもよい。あるいは、ポイント・ツー・ポイントインターコネクト５３９がこれらのコンポーネントを接続してもよい。
【００４７】
チップセット５９０は、インタフェース５９６を介し第１バス５１６に接続されてもよい。一実施例では、第１バス５１６は、１９９５年６月のＰＣＩ  Ｌｏｃａｌ  Ｂｕｓ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ，Ｐｒｏｄｕｃｔｉｏｎ  Ｖｅｒｓｉｏｎ，Ｒｅｖｉｓｉｏｎ  ２．１によって規定されるようなＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バス、又はＰＣＩ  Ｅｘｐｒｅｓｓバスや他の第３世代入出力（Ｉ／Ｏ）インターコネクトバスなどのバスであってもよい。しかしながら、本発明の範囲はこれに限定されるものでない。
【００４８】
図６に示されるように、各種Ｉ／Ｏ装置５１４が、第１バス５１６と第２バス５２０とを接続するバスブリッジ５１８と共に第１バス５１６に接続されてもよい。一実施例では、第２バス５２０はＬＰＣ（Ｌｏｗ  Ｐｉｎ  Ｃｏｕｎｔ）バスであってもよい。例えば、キーボード／マウス５２２、通信装置５２６及びコード５３０を有するデータストレージユニット５２８などを含む各種装置が、第２バス５２０に接続されてもよい。さらに、音声Ｉ／Ｏ５２４が第２バス５２０に接続されてもよい。
【００４９】
各実施例はコードにより実現可能であり、当該命令を実行するようシステムをプログラムするのに利用可能な命令を格納した記憶媒体に格納されてもよい。記憶媒体は、以下に限定されるものではないが、フロッピー（登録商標）ディスク、光ディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−ＲＷ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  ＲｅＷｒｉｔａｂｌｅ）、光磁気ディスクなどの任意のタイプのディスク、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  ＥＰＲＯＭ）、フラッシュメモリ、磁気又は光カードなどの半導体デバイス、又は電子命令を格納するのに適した他の何れかのタイプのメディアを含む。
【００５０】
本発明が特定の実施例に関して説明されたが、当業者は、多数の改良及び変形を理解するであろう。添付した請求項は、本発明の趣旨及び範囲内に属するそのようなすべての改良及び変形をカバーするものであると意図される。
【図面の簡単な説明】
【００５１】
【図１】図１は、本発明の一実施例によるプロセッサのブロック図である。
【図２】図２は、本発明の一実施例による同期方法のフロー図である。
【図３】図３は、本発明の一実施例によるメッセージスロットリング方法のフロー図である。
【図４】図４は、本発明の一実施例によるスロットルユニットのブロック図である。
【図５】図５は、本発明の一実施例による方法のフロー図である。
【図６】図６は、本発明の一実施例によるマルチプロセッサシステムのブロック図である。
【符号の説明】
【００５２】
１０  プロセッサ
２０  プロセッサコア
２２  メッセージユニット
２５、２８  キャッシュ
３０  リンク
４０  ラストレベルキャッシュ
３００  スロットルユニット
３１０、３２０  カウンタ
３３０  スロットルロジック
３３５、３４０  レジスタ
５００  マルチプロセッサシステム
５５０  ポイント・ツー・ポイントインターコネクト
５７０、５８０  プロセッサ
【図１】
2007249971.tif 000003
【図２】
2007249971.tif 000004
【図３】
2007249971.tif 000005
【図４】
2007249971.tif 000006
【図５】
2007249971.tif 000007
【図６】
2007249971.tif 000008