(57)【要約】処理システム（１００）は、エビクションするために識別されたキャッシュライン（３０４）と同じメモリページ（１４７）を共有するキャッシュライン（３０８，３０９）をキャッシュ（３０２）からリンスする。処理システムのキャッシュコントローラ（１７５）は、キャッシュラインを、エビクションがスケジュールされているものとして識別する。これに応じて、キャッシュコントローラは、同じメモリページに関連する追加の「ダーティビクティム」キャッシュライン（キャッシュで変更され、未だメモリに書き込まれていないキャッシュライン）を識別し、識別されたキャッシュラインの各々をメモリ（１０５）の同じメモリページに書き込む。メモリページに関連するダーティビクティムキャッシュラインの各々をメモリに書き込むことによって、処理システムは、メモリのオーバーヘッドを低減し、処理効率を向上させる。【選択図】図３
2021506028.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
プロセッサによって、キャッシュからエビクションするための第１キャッシュラインを識別することと、
エビクションするための前記第１キャッシュラインを識別したことに応じて、
前記第１キャッシュラインと同じメモリページに関連する第２キャッシュラインを識別することと、
前記第１キャッシュラインと前記第２キャッシュラインとを前記メモリページに書き込むことと、を含む、
方法。
【請求項２】
前記第２キャッシュラインを前記メモリページに書き込むことに応じて、前記キャッシュの前記第２キャッシュラインをクリーン状態に設定することをさらに含む、
請求項１の方法。
【請求項３】
さらに、
前記第２キャッシュラインを前記クリーン状態に設定したことに応じて、前記キャッシュの前記第２キャッシュラインを有効状態に設定することをさらに含む、
請求項２の方法。
【請求項４】
前記第１キャッシュラインを前記メモリページに書き込むことに応じて、前記キャッシュの前記第１キャッシュラインを無効状態に設定することをさらに含む、
請求項３の方法。
【請求項５】
前記キャッシュで前記第２キャッシュラインを受信することと、
前記第２キャッシュラインを受信したことに応じて、及び、前記第１キャッシュライン及び前記第２キャッシュラインが同じメモリページに記憶されていることを識別したことに応じて、前記第１キャッシュラインを記憶する前記キャッシュの第１インデックスに前記第２キャッシュラインを記憶することと、をさらに含む、
請求項１の方法。
【請求項６】
エビクションするための前記第１キャッシュラインを識別したことに応じて、同じメモリページに関連するキャッシュラインの前記第１インデックスを検索することをさらに含む、
請求項５の方法。
【請求項７】
エビクションするための前記第１キャッシュラインを識別したことに応じて、
前記第１キャッシュラインと同じメモリページに関連する第３キャッシュラインを識別することと、
前記第３キャッシュラインを前記メモリページに書き込むことと、をさらに含む、
請求項１の方法。
【請求項８】
方法であって、
キャッシュでエビクションするための第１キャッシュラインを識別したことに応じて、
前記キャッシュで前記第１キャッシュラインと同じ第１メモリページに対応する第１の複数のキャッシュラインを識別することと、
前記第１の複数のキャッシュラインの各々をメモリに書き込むことによって、前記キャッシュから前記第１の複数のキャッシュラインをリンスすることと、を含む、
方法。
【請求項９】
前記リンスすることは、
前記キャッシュで前記第１の複数のキャッシュラインの各々を有効状態に維持することをさらに含む、
請求項８の方法。
【請求項１０】
エビクションするための前記第１キャッシュラインを識別したことに応じて、前記キャッシュで前記第１キャッシュラインを無効状態にすることをさらに含む、
請求項８の方法。
【請求項１１】
前記第１の複数のキャッシュラインを識別することは、
前記第１キャッシュラインが記憶された前記キャッシュのインデックスを識別することと、
前記第１の複数のキャッシュラインの前記インデックスを検索することと、を含む、
請求項８の方法。
【請求項１２】
前記キャッシュでエビクションするための第２キャッシュラインを識別したことに応じて、
前記キャッシュで前記第２キャッシュラインと同じ第２メモリページに対応する第２の複数のキャッシュラインを識別することであって、前記第２メモリページは、前記第１メモリページと異なる、ことと、
前記第２の複数のキャッシュラインを前記メモリに書き込むことによって、前記キャッシュから前記第２の複数のキャッシュラインをリンスすることと、をさらに含む、
請求項８の方法。
【請求項１３】
前記第１の複数のキャッシュライン及び前記第２の複数のキャッシュラインは、前記キャッシュの異なるインデックスに関連付けられる、請求項１２に記載の方法。
【請求項１４】
プロセッサであって、
第１キャッシュライン及び第２キャッシュラインを記憶するように構成されたキャッシュと、
キャッシュコントローラと、を備え、
前記キャッシュコントローラは、
エビクションするための前記第１キャッシュラインを識別することと、
前記第１キャッシュラインと同じメモリページに関連する前記第２キャッシュラインを識別することと、
前記第１キャッシュライン及び前記第２キャッシュラインを前記メモリページに書き込むことと、
を行うように構成されている、
プロセッサ。
【請求項１５】
前記キャッシュコントローラは、前記第２キャッシュラインを前記メモリページに書き込むことに応じて、前記キャッシュの前記第２キャッシュラインをクリーン状態に設定するように構成されている、
請求項１４のプロセッサ。
【請求項１６】
前記キャッシュコントローラは、前記第２キャッシュラインを前記クリーン状態に設定したことに応じて、前記キャッシュの前記第２キャッシュラインを有効状態に維持するように構成されている、
請求項１５のプロセッサ。
【請求項１７】
前記キャッシュコントローラは、前記第１キャッシュラインを前記メモリページに書き込むことに応じて、前記第１キャッシュラインを無効状態に設定するように構成されている、
請求項１６のプロセッサ。
【請求項１８】
前記キャッシュコントローラは、
前記キャッシュで前記第２キャッシュラインを受信することと、
前記第２キャッシュラインを受信することと、前記第１キャッシュライン及び前記第２キャッシュラインが同じメモリページに記憶されていることを識別したことと、に応じて、前記第１キャッシュラインを記憶する前記キャッシュの第１インデックスに前記第２キャッシュラインを記憶することと、
を行うように構成されている、
請求項１４のプロセッサ。
【請求項１９】
前記キャッシュコントローラは、エビクションするための前記第１キャッシュラインを識別したことに応じて、同じメモリページに関連するキャッシュラインの前記第１インデックスを検索するように構成されている、
請求項１８のプロセッサ。
【請求項２０】
前記キャッシュコントローラがエビクションするための前記第１キャッシュラインを識別したことに応じて、
前記キャッシュコントローラは、
前記第１キャッシュラインと同じメモリページに関連する第３キャッシュラインを識別することと、
前記第３キャッシュラインを前記メモリページに書き込むことと、
を行うように構成されている、
請求項１４のプロセッサ。
【発明の詳細な説明】
【背景技術】
【０００１】
処理システムは、多くの場合、メモリ階層を利用して、システムの処理ノードのデータストレージをサポートする。メモリ階層には、ノードの１つ以上のプロセッサコアによるアクセスに利用可能な複数レベルのキャッシュと、プロセッサコアで実行されるプログラム命令によって操作可能な全てのデータを記憶するメインメモリと、が含まれる。処理効率を改善するために、処理システムは、メモリ管理スキームを実装することができ、処理システムは、管理スキームに従って、データをメモリ階層の異なるレベルに移動させる。例えば、いくつかのメモリ管理スキームでは、処理システムは、プロセッサコアによって最近アクセスされたデータを、コアに近いメモリ階層のレベルに移動させ、その結果、将来、比較的高速にデータにアクセスすることができる。さらに、メモリ管理スキームは、新たなデータがそのメモリ階層レベルで受信される場合に、メモリ階層の所定のレベルでデータがどのように置換されるか、及び、データがメモリ階層レベル間でいつどのようにコピーされるかを管理する。しかし、従来のメモリ管理スキームは、これらのデータの置換及び転送動作を非効率に実行する可能性があり、これにより、望ましくない大量のシステムリソースを消費する。
【０００２】
添付の図面を参照することにより、本開示をより良く理解することができ、その多くの特徴及び利点が当業者に明らかになる。異なる図面で同じ符号を使用している場合、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【０００３】
【図１】いくつかの実施形態による、エビクションされたキャッシュラインと同じメモリページを共有するキャッシュラインをキャッシュからリンスする処理システムのブロック図である。
【図２】いくつかの実施形態による、図１の処理システムで使用されるキャッシュ階層のブロック図である。
【図３】いくつかの実施形態による、エビクションされたキャッシュラインと同じメモリページを共有するキャッシュラインをリンスする図１の処理システムの例を示すブロック図である。
【図４】いくつかの実施形態による、エビクションされたキャッシュラインと同じメモリページを共有するキャッシュラインをキャッシュからリンスする方法を示すフロー図である。
【図５】いくつかの実施形態による、キャッシュの同じインデックスで同じメモリページを共有するキャッシュラインを記憶する方法を示すフロー図である。
【発明を実施するための形態】
【０００４】
図１〜図５は、エビクションのために識別されたキャッシュラインと同じメモリページを共有するキャッシュラインをキャッシュからリンスすることによって、処理システムにおけるメモリ管理効率を改善するための技術を示す。処理システムのキャッシュコントローラは、キャッシュラインを、エビクションがスケジュールされているものとして識別する。これに応じて、キャッシュコントローラは、同じメモリページに関連する追加の「ダーティビクティム」キャッシュライン（キャッシュで変更され、未だメモリに書き込まれていないキャッシュライン）を識別し、識別されたキャッシュラインの各々を同じメモリページに書き込む。メモリページに関連するダーティビクティムキャッシュラインの各々をメモリに書き込むことによって、処理システムは、メモリのオーバーヘッドを低減し、処理効率を向上させる。
【０００５】
例示すると、処理効率のベンチマークの１つは「書き込みの局所性（write locality）」である。これは、少なくとも部分的に、処理システムが、同じページに対して、どのくらいの頻度でシーケンシャルな書き込み動作を実行するか、又は、比較的時間の近い書き込み動作を実行するかを示す。特に、書き込み動作用にメモリページを準備すると、システムリソースが消費されるので、書き込みの局所性を高めると、メモリページを準備する回数が減り、そのため、システムリソースの消費が減少する。従来のキャッシュコントローラは、置換ポリシーによってエビクションの対象として選択された場合にのみ、キャッシュラインをメモリに書き込む。これらのキャッシュラインは、最近エビクションされた他のキャッシュラインとは異なるメモリページからのものである傾向がある。本明細書で説明する技術を使用して、キャッシュコントローラは、エビクションされたキャッシュラインと同じメモリページを共有するキャッシュラインをキャッシュからリンスし、これにより、書き込みの局所性を高め、処理効率を向上させる。
【０００６】
図１は、いくつかの実施形態による、処理システム１００のブロック図である。処理システム１００は、一般に、電子デバイスのための命令のセット（例えば、コンピュータプログラム又はアプリケーション）を実行するように構成されている。したがって、処理システムは、デスクトップ又はラップトップコンピュータ、サーバ、タブレット、スマートフォン、ゲームコンソール等のような多様な電子デバイスの何れかに組み込むことができる。命令のセットの実行をサポートするために、処理システム１００は、メモリ１０５、又は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）等の非一時的なコンピュータ可読記憶媒体を使用して実装される他のストレージコンポーネントを含むか、これらへのアクセスを有する。しかし、ＤＲＡＭメモリ（ＤＲＡＭ）１０５は、スタティックランダムアクセスメモリ（ＳＲＡＭ）、不揮発性ＲＡＭ等を含む他のタイプのメモリを使用して実装することができる。また、処理システム１００は、ＤＲＡＭ１０５等のような処理システム１００に実装されたエンティティ間の通信をサポートするためのバス１１０を含む。ＤＲＡＭ１０５は、本明細書でページと呼ばれる論理セグメントのセット（例えば、メモリページ１４７）に分割される。いくつかの実施形態では、各メモリページは、共通のアドレス指定又は他のアクセス回路を共有するため、同じメモリページへの複数のシーケンシャルなアクセスは、異なるメモリページへのシーケンシャルなアクセスよりも少ないリソースしか消費しない。本明細書でさらに説明するように、処理システム１００は、メモリ管理スキームを実施して、同じメモリページへのシーケンシャルなアクセスを促進し、これにより、システムリソースを節約し、処理効率を向上させる。
【０００７】
処理システム１００は、ディスプレイ１２０に表示するための画像をレンダリングするように構成されたグラフィックス処理ユニット（ＧＰＵ）１１５を含む。例えば、ＧＰＵ１１５は、オブジェクトをレンダリングし、ディスプレイ１２０に提供される画素の値を生成し、このディスプレイは、これらの画素の値を使用して、レンダリングされたオブジェクトを表す画像を表示する。ＧＰＵ１１５のいくつかの実施形態は、汎用コンピューティングに使用される。図示した実施形態において、ＧＰＵ１１５は、命令を同時に又並列に実行するように構成された複数の処理要素１１６，１１７，１１８（本明細書において「処理要素１１６〜１１８」と総称する）を実装する。図示した実施形態では、ＧＰＵ１０５は、バス１１０を介してＤＲＡＭ１０５と通信する。しかし、ＧＰＵ１１５のいくつかの実施形態は、直接接続を介して、又は、他のバス、ブリッジ、スイッチ、ルータ等を介して、ＤＲＡＭ１０５と通信する。ＧＰＵ１１５は、ＤＲＡＭ１０５に記憶された命令を実行し、ＧＰＵ１１５は、実行された命令の結果等の情報をＤＲＡＭ１０５に記憶する。例えば、ＤＲＡＭ１０５は、ＧＰＵ１１５によって実行されるプログラムコードからの命令のコピー１２５を記憶することができる。ＧＰＵ１１５は、処理要素１１６〜１１８による実行のために命令ディスパッチするように構成されたディスパッチャ１３０を含む。
【０００８】
また、ＧＰＵ１１５は、処理要素１１６〜１１８による比較的低いレイテンシのアクセスのために、命令又はデータをキャッシュするために使用される１つ以上のレベルのキャッシュを含むキャッシュ階層１３５を実装する。キャッシュ階層１３５は、図２でさらに詳細に説明するように、いくつかの個別のキャッシュ及び対応するキャッシュ位置（キャッシュライン）を含む。また、ＧＰＵ１１５は、以下にさらに説明するように、キャッシュ階層１３５のレベル間のデータの移動、並びに、キャッシュ階層１３５及びＤＲＡＭ１０５の間のデータの移動を制御するためのキャッシュコントローラ１３９を含む。
【０００９】
処理システム１００は、本明細書において「処理要素１４１〜１４３」と総称される複数の処理要素１４１，１４２，１４３を実装する、中央処理装置（ＣＰＵ）１４０を含む。処理要素１４１〜１４３は、命令を同時に又は並列に実行するように構成されている。例えば、処理要素１４１〜１４３は、複数のスレッドを同時に又は並列に実行するように構成されている。ＣＰＵ１４０は、処理要素１４１〜１４３による実行のための命令をディスパッチするように構成されたディスパッチャ１５０を含む。ＣＰＵ１４０は、バス１１０に接続されており、バス１１０を介してＧＰＵ１１５及びＤＲＡＭ１０５と通信する。ＣＰＵ１４０は、ＤＲＡＭ１０５に記憶されたプログラムコード１４５等の命令を実行し、ＣＰＵ１４０は、実行された命令の結果等の情報をＤＲＡＭ１０５に記憶する。
【００１０】
ＣＰＵ１４０は、処理要素１４１〜１４３による比較的低いレイテンシのアクセスのために、命令又はデータをキャッシュするのに使用される１つ以上のレベルのキャッシュを含むキャッシュ階層１５５を実装する。キャッシュ階層１５５が処理要素１４１〜１４３の外部に存在するものとして示されているが、処理要素１４１〜１４３のいくつかの実施形態は、キャッシュ階層１５５に相互接続された対応するキャッシュを組み込んでいる。キャッシュ階層１５５の詳細については、図２を参照して以下により詳細に説明する。
【００１１】
また、ＣＰＵ１４０は、キャッシュ階層１５５に出入りする最初及び後続のキャッシュラインの送受信、キャッシュ階層１５５のレベル間のデータの移動、及び、キャッシュ階層１５５とＤＲＡＭ１０５との間のデータの移動をするためのキャッシュコントローラ１７５を含む。キャッシュコントローラ１７５の動作は、以下により詳細に説明する。キャッシュコントローラ１３９は、キャッシュ階層１３５に関して同様の動作を実行することが理解されよう。
【００１２】
キャッシュコントローラ１７５は、対応するキャッシュのエントリの様々な態様を管理することによって、キャッシュ階層１５５及びＤＲＡＭ１０５のための特定のメモリ管理スキームを実施する。例示すると、命令を実行する過程で、処理要素１４１〜１４３は、キャッシュ階層１５５からデータを取得又は変更するためのメモリアクセス動作と呼ばれる動作を生成する。メモリアクセス動作の例には、データをメモリ位置に書き込むための書き込み動作と、メモリ位置からデータを読み出すための読み出し動作と、が含まれる。各メモリ位置は異なるメモリアドレスに対応し、各メモリアクセス動作は、メモリアクセス動作の対象となるメモリアドレスを含む。キャッシュコントローラ１７５は、処理要素１４１〜１４３からメモリアクセス動作を受信し、読み出し動作の場合には処理要素１４１〜１４３にデータを提供し、書き込み動作の場合にはキャッシュ階層１５５の１つ以上のエントリ（キャッシュラインと呼ばれる）のデータを変更することによって、メモリアクセス動作を実行する。
【００１３】
キャッシュコントローラ１７５は、メモリアクセス動作の実行中に、指定されたメモリ管理スキームに基づいて、キャッシュ階層１５５の異なるレベル間、及び、キャッシュ階層１５５とＤＲＡＭ１０５との間でデータを移動させる。例えば、いくつかの実施形態では、キャッシュコントローラ１７５は、最近アクセスされたデータ（すなわち、メモリアクセス動作によって最近ターゲットにされたデータ）をキャッシュ階層１５５のより高いレベルに移動させ、データがキャッシュ階層１５５において処理要素１４１〜１４３に対して「より近く」にあり、したがって、処理要素１４１〜１４３がより高速にアクセスできるようにすることによって、メモリのアクセス効率を高める。いくつかの実施形態では、キャッシュコントローラ１７５は、処理要素１４１〜１４３によって生成されたメモリアクセス動作において検出されたパターンに少なくとも部分的に基づいて、メモリ階層のレベル間でデータを投機的に転送する。さらに、キャッシュコントローラ１７５は、キャッシュ階層１５５とＤＲＡＭ１０５との間のデータの転送を管理する。例えば、メモリ動作の対象となるデータがキャッシュ階層１５５のキャッシュラインに記憶されていないと判別したことに応じて、キャッシュコントローラ１７５は、メモリ動作の対象となるデータを、ＤＲＡＭ１０５からキャッシュ階層１５５の１つ以上のキャッシュラインに転送する。
【００１４】
さらに、キャッシュコントローラ１７５は、キャッシュ階層１５５の異なるレベル間、及び、キャッシュ階層１５５とＤＲＡＭ１０５との間のデータの一貫性（coherency）を維持するように構成されている。特に、以下にさらに説明するように、キャッシュコントローラは、データがキャッシュ階層１５５のキャッシュラインで変更された場合、変更されたデータが、他の処理要素、プロセッサコア、処理ユニット等によってアクセスされる前に、変更されたデータのメモリアドレスに対応して、変更されたデータがキャッシュ階層１５５の他のキャッシュライン及びＤＲＡＭ１０５のエントリに記憶されるのを確実にする。
【００１５】
キャッシュコントローラ１７５は、キャッシュ階層１５５のレベル間のデータ転送を管理し、データの一貫性を維持するために、キャッシュ階層１５５の各キャッシュラインのコヒーレンシステータス情報を維持する。キャッシュラインのコヒーレンシステータス情報は、キャッシュラインが有効なデータを記憶しているので、異なるメモリアドレスに関連するデータに置換するのが適格ではないこと、又は、無効なデータを記憶しているので、異なるメモリアドレスに関連するデータに置換するのが適格であること、を示す。さらに、有効なステータスを有するキャッシュラインの場合、コヒーレンシステータス情報は、キャッシュラインのデータが変更された状態かどうか、すなわち、１）キャッシュラインのデータがキャッシュラインに記憶されたときに元の状態から変更されたか、２）キャッシュラインで変更されたデータがキャッシュ階層１５５の下位レベル又はＤＲＡＭ１０５にコピーされていないどうか、を示す。いくつかの実施形態では、コヒーレンシステータス情報は、キャッシュラインに記憶されたデータがＣＰＵによって排他的にアクセス可能であるかどうか、他の処理ユニットと共有されているかどうか等の追加のコヒーレンシ態様を示す。
【００１６】
キャッシュコントローラ１７５は、キャッシュ階層１５５のレベル間でデータを転送し、データの一貫性を維持するために、本明細書ではエビクション動作及びリンス動作と呼ばれる少なくとも２つのタイプの動作を実行する。特に、キャッシュコントローラ１７５は、例えば、キャッシュコントローラ１７５によって実施されるメモリ管理スキームに基づいて、受信したデータがキャッシュラインに記憶されるべきであると判別したことに応じて、キャッシュラインから有効なデータをエビクションするためのエビクション動作を実行する。キャッシュラインのエビクション動作を実行するために、キャッシュコントローラ１７５は、キャッシュラインが変更された状態であるかどうかを判別する。そうでない場合、キャッシュコントローラ１７５は、キャッシュラインのステータスを無効な状態に設定する。キャッシュラインが変更された状態にある場合、キャッシュコントローラ１７５は、キャッシュラインの内容を、キャッシュ階層１５５の下位レベル及びＤＲＡＭ１０５のうち１つ以上にコピーする。
【００１７】
キャッシュコントローラ１７５は、キャッシュ階層１５５の異なるレベル間のデータの一貫性を維持するために、リンス動作を実行する。リンス動作を実行するために、キャッシュコントローラ１７５は、キャッシュ階層１５５の所定のレベルで１つ以上のキャッシュラインを有効な状態及び変更された状態として識別し、変更されたキャッシュラインの内容を、キャッシュ階層の１つ以上の下位レベルにコピーする。上述したエビクション動作とは対照的に、キャッシュコントローラ１７５は、識別されたキャッシュラインを有効な状態に維持する。いくつかの実施形態では、キャッシュコントローラ１７５は、リンス動作を、定期的に、又は、ＣＰＵ１４０における１つ以上の特定された条件（例えば、特定の命令の実行、実行されているスレッドの変更等）を識別したことに応じて行う。
【００１８】
いくつかの実施形態では、キャッシュコントローラ１７５は、キャッシュラインをエビクションすることに応じて、エビクションされたキャッシュラインと同じＤＲＡＭ１０５ページに関連するキャッシュラインのリンス動作を実行する。特に、キャッシュコントローラ１７５は、エビクションされるキャッシュラインを識別したことに応じて、エビクションのために識別されたキャッシュラインと同じページのメモリアドレスに割り当てられた、キャッシュ階層１５５と同じレベルの他のキャッシュラインを識別する。次に、キャッシュコントローラは、エビクションされたキャッシュラインと、追加の識別されたキャッシュラインとを、同じメモリページへの複数の書き込み動作を介してＤＲＡＭ１０５に書き込むことによって、プロセッサの効率を向上させる。さらに、いくつかの実施形態では、ＣＰＵ１４０は、リンスされたキャッシュラインの状態をクリーン（すなわち、変更されていない）状態に設定する。
【００１９】
図２は、図１のキャッシュ階層１３５，１５５の何れかに対応するキャッシュ階層２００のブロック図である。キャッシュ階層２００は、「処理要素２０１〜２０４」と本明細書で総称される処理要素２０１，２０２，２０３，２０４の命令又はデータ等の情報をキャッシュする。処理要素２０１〜２０４を使用して、図１に示す処理要素１１６〜１１８，１４１〜１４３のいくつかの実施形態を実行する。
【００２０】
キャッシュ階層２００は、Ｌ１キャッシュ２１１，２１２，２１３，２１４（本明細書において「Ｌ１キャッシュ２１１〜２１４」と総称する）を含む第１レベルと、Ｌ２キャッシュ２１５，２２０を含む第２レベルと、Ｌ３キャッシュ２２５を含む第３レベルと、という３つのキャッシュのレベルを含む。しかし、キャッシュ階層２００のいくつかの実施形態は、より多い又はより少ないレベルのキャッシュを含む。Ｌ１キャッシュ２１１〜２１４は、対応する処理要素２０１〜２０４に相互接続された個別のハードウェア構造として示されているが、Ｌ１キャッシュ２１１〜２１４のいくつかの実施形態では、処理要素２０１〜２０４を実装するハードウェア構造に組み込まれている。各レベルのキャッシュは、複数の個別のキャッシュライン（例えば、キャッシュライン２３０〜２３７）を含む。
【００２１】
Ｌ１キャッシュ２１１〜２１４は、対応する処理要素２０１〜２０４がアクセスするための情報をキャッシュするために使用され、対応する処理要素のプライベートキャッシュである。例えば、Ｌ１キャッシュ２１１は、処理要素２０１の情報をキャッシュするように構成されている。したがって、処理要素２０１は、Ｌ１キャッシュ２１１へのメモリアクセス要求を発行する。メモリアクセス要求がＬ１キャッシュ２１１内でヒットする場合に、要求された情報を返す。メモリアクセス要求がＬ１キャッシュ２１１でミスした（つまり、要求されたデータが存在しない）場合、メモリアクセス要求は、次に低いキャッシュレベル（つまり、Ｌ２キャッシュ２１５）に転送される。
【００２２】
処理要素２０１〜２０４は、サブセット２２７，２２９にグループ化され、サブセット２２７，２２９は、対応するＬ２キャッシュ２１５，２２０に関連付けられている。したがって、Ｌ２キャッシュ２１５，２２０は、サブセット２２７，２２９の処理要素２０１〜２０４の情報をキャッシュするように構成された共有キャッシュである。例えば、Ｌ２キャッシュ２１５は、処理要素２０１，２０２の情報をキャッシュする。上述したように、処理要素２０１，２０２の何れかが、対応するＬ１キャッシュ２１１，２１２でミスするメモリアクセス要求を発行した場合に、メモリアクセス要求がＬ２キャッシュ２１５に転送される。メモリアクセス要求がＬ２キャッシュ２１５でヒットした場合に、要求された情報が、要求する処理要素２０１，２０２に返される。Ｌ２キャッシュ２１５は、メモリアクセス要求がＬ２キャッシュ２１５でミスした場合に、メモリアクセス要求を、次の上位レベルのキャッシュ（例えば、Ｌ３キャッシュ２２５）に転送する。
【００２３】
Ｌ３キャッシュ２２５は、処理要素２０１〜２０４のための共有キャッシュとして構成されている。Ｌ２キャッシュ２１５，２２０でミスした処理要素２０１〜２０４からのメモリアクセス要求が、Ｌ３キャッシュ２２５に転送される。メモリアクセス要求がＬ３キャッシュ２２５内でヒットした場合に、要求された情報が、要求する処理要素２０１〜２０４に返される。メモリアクセス要求がＬ３キャッシュ２２５でミスした場合に、Ｌ３キャッシュ２２５は、メモリアクセス要求をＤＲＡＭ１０５に転送する。また、キャッシュ階層２００は、図１のキャッシュインデックス１７０及びキャッシュコントローラ１７５を含む。
【００２４】
図３は、いくつかの実施形態による、エビクションされたキャッシュラインと同じメモリページを共有するキャッシュラインをリンスする例３００を示すブロック図である。例３００は、キャッシュ階層１５５のレベルに対応しており、複数のキャッシュライン３０４〜３１１を含むキャッシュ３０２を示している。キャッシュライン３０４〜３１１の各々は、ＣＰＵ１４０によってＤＲＡＭ１０５のページに割り当てられている。例えば、キャッシュライン３０４は、ＰＧ１で示される所定のＤＲＡＭページに対応するメモリアドレスに割り当てられたデータを記憶し、キャッシュライン３０５は、ＰＧ２で示される別のＤＲＡＭページに割り当てられたデータを記憶する。
【００２５】
キャッシュコントローラ１７５は、エビクションするためのキャッシュライン３０４を識別したことに応じて、同じメモリページに関連付けられている（すなわち、ＤＲＡＭ  ＰＧ１に関連付けられている）変更状態のキャッシュライン（「ダーティ」キャッシュラインと呼ばれることもある）をキャッシュ３０２から検索する。したがって、例３００では、キャッシュコントローラ１７５は、キャッシュライン３０８，３０９を識別する。次に、キャッシュコントローラ１７５は、キャッシュライン３０４，３０８，３０９の各々をＤＲＡＭ１０５に書き込み、キャッシュライン３０４を無効状態に設定する。また、キャッシュコントローラ１７５は、キャッシュライン３０８，３０９を未変更状態に設定し、各キャッシュライン３０８，３０９を有効状態に維持する。このように、キャッシュコントローラ１７５は、エビクションされたキャッシュライン３０４と同じメモリページに関連付するデータをリンスすることによって、処理システム１００の書き込みの局所性を改善する。
【００２６】
図４は、いくつかの実施形態による、処理システムの書き込みの局所性を改善する方法４００を示すフロー図である。方法４００は、図１の処理システム１００における例示的な実装に関して説明される。方法４００は、ブロック４０２で始まり、キャッシュコントローラ１７５は、例えば、受信データがキャッシュラインに記憶されるように指定されたことに応じて、キャッシュ階層１５５からＤＲＡＭ１０５にエビクションするためのキャッシュラインを識別する。ブロック４０４において、キャッシュコントローラ１７５は、ＤＲＡＭの同じメモリページに関連する変更された（すなわち、ダーティの）キャッシュラインをキャッシュから検索する。ブロック４０６において、キャッシュコントローラ１７５は、ブロック４０２でエビクションするために識別されたキャッシュラインと、ブロック４０４で識別されたダーティキャッシュラインとの両方を、ＤＲＡＭ１０５の対応するメモリページに書き込む。ブロック４０８において、キャッシュコントローラ１７５は、エビクションされたキャッシュラインを無効状態に設定し、キャッシュラインが入力データを記憶する準備ができていることを示す。ブロック４１０において、キャッシュコントローラ１７５は、ブロック４０４で識別されたダーティキャッシュラインを未変更（つまり、クリーン）状態に設定するが、キャッシュラインを有効状態に維持して、キャッシュラインが異なるメモリアドレスに関連するデータを記憶することができないことを示す。
【００２７】
いくつかの実施形態では、キャッシュコントローラ１７５は、同じメモリページに関連するデータを、キャッシュの同じインデックスに関連するキャッシュラインに記憶することによって、メモリの管理をさらに改善することができる。このようにデータを記憶することによって、図４の方法４００によれば、データを迅速且つ効率的に同じメモリページにリンスすることができる。いくつかの実施形態によれば、例示的な方法５００は、キャッシュの同じインデックスに、同じメモリページを共有するキャッシュラインを記憶する。方法５００は、図１の処理システム１００における例示的な実装に関して説明されている。ブロック５０２において、キャッシュコントローラ１７５は、キャッシュ階層１５５のキャッシュに記憶されるデータを受信する。ブロック５０４において、キャッシュコントローラ１７５は、受信データのメモリアドレスについてＤＲＡＭ１０５メモリページを識別する。ブロック５０６において、キャッシュコントローラ１７５は、ブロック５０４で識別されたメモリページに対応するキャッシュのインデックスを識別する。ブロック５０８において、キャッシュコントローラ１７５は、識別されたインデックスのキャッシュラインに受信データを記憶する。
【００２８】
いくつかの実施形態では、上記の装置及び技術は、図１〜図５を参照して上述した処理システム１００等の１つ以上の集積回路（ＩＣ）デバイス（集積回路パッケージ又はマイクロチップとも呼ばれる）を含むシステムに実装される。これらのＩＣデバイスの設計及び製造には、電子設計自動化（ＥＤＡ）及びコンピュータ支援設計（ＣＡＤ）ソフトウェアツールが使用される。これらの設計ツールは、通常、１つ以上のソフトウェアプログラムとして表される。１つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計又は適合するための処理の少なくとも一部を実行するように１つ以上のＩＣデバイスの回路を表すコードで動作するようにコンピュータシステムを操作する、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含むことができる。設計ツール又は製造ツールを表すソフトウェア命令は、通常、コンピューティングシステムがアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ＩＣデバイスの設計又は製造の１つ以上のフェーズを表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶されてもよいし、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体からアクセスされてもよい。
【００２９】
コンピュータ可読記憶媒体は、命令及び／又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。かかる記憶媒体には、限定されないが、光媒体（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、ブルーレイ（登録商標）ディスク）、磁気媒体（例えば、フロッピー（登録商標）ディスク、磁気テープ、磁気ハードドライブ）、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）、キャッシュ）、不揮発性メモリ（例えば、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ）、又は、微小電気機械システム（ＭＥＭＳ）ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体は、コンピュータシステムに内蔵されてもよいし（例えば、システムＲＡＭ又はＲＯＭ）、コンピュータシステムに固定的に取り付けられてもよいし（例えば、磁気ハードドライブ）、コンピュータシステムに着脱可能に取り付けられてもよいし（例えば、光学ディスク又はユニバーサルシリアルバス（ＵＳＢ）ベースのフラッシュメモリ）、有線又は無線のネットワークを介してコンピュータシステムに接続されてもよい（例えば、ネットワークアクセス可能なストレージ（ＮＡＳ））。
【００３０】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行する処理システムの１つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の１つ以上のセットを含む。ソフトウェアは、１つ以上のプロセッサによって実行されると、上記の技術の１つ以上の態様を実行するように１つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ（ＲＡＭ）、又は、他の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【００３１】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、１つ以上のさらなるアクティビティが実行される場合があり、１つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【００３２】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
【図１】
2021506028.tif 000003
【図２】
2021506028.tif 000004
【図３】
2021506028.tif 000005
【図４】
2021506028.tif 000006
【図５】
2021506028.tif 000007
【手続補正書】
【提出日】令和2年8月18日(2020.8.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
方法であって、
プロセッサによって、キャッシュからエビクションするための第１キャッシュラインを識別することと、
エビクションするための前記第１キャッシュラインを識別したことに応じて、
前記第１キャッシュラインと同じメモリページに関連する第２キャッシュラインを識別することと、
前記第１キャッシュラインと前記第２キャッシュラインとを前記メモリページに書き込むことと、を含む、
方法。
【請求項２】
前記第２キャッシュラインを前記メモリページに書き込むことに応じて、前記キャッシュの前記第２キャッシュラインをクリーン状態に設定することをさらに含む、
請求項１の方法。
【請求項３】
さらに、
前記第２キャッシュラインを前記クリーン状態に設定したことに応じて、前記キャッシュの前記第２キャッシュラインを有効状態に設定することをさらに含む、
請求項２の方法。
【請求項４】
前記第１キャッシュラインを前記メモリページに書き込むことに応じて、前記キャッシュの前記第１キャッシュラインを無効状態に設定することをさらに含む、
請求項３の方法。
【請求項５】
前記キャッシュで前記第２キャッシュラインを受信することと、
前記第２キャッシュラインを受信したことに応じて、及び、前記第１キャッシュライン及び前記第２キャッシュラインが同じメモリページに記憶されていることを識別したことに応じて、前記第１キャッシュラインを記憶する前記キャッシュの第１インデックスに前記第２キャッシュラインを記憶することと、をさらに含む、
請求項１の方法。
【請求項６】
エビクションするための前記第１キャッシュラインを識別したことに応じて、同じメモリページに関連するキャッシュラインの前記第１インデックスを検索することをさらに含む、
請求項５の方法。
【請求項７】
エビクションするための前記第１キャッシュラインを識別したことに応じて、
前記第１キャッシュラインと同じメモリページに関連する第３キャッシュラインを識別することと、
前記第３キャッシュラインを前記メモリページに書き込むことと、をさらに含む、
請求項１の方法。
【請求項８】
エビクションするための前記第１キャッシュラインを識別したことに応じて、
前記キャッシュで前記第１キャッシュラインと同じ第１メモリページに対応する第１の複数のキャッシュラインを識別することと、
前記第１の複数のキャッシュラインの各々をメモリに書き込むことによって、前記キャッシュから前記第１の複数のキャッシュラインをリンスすることと、をさらに含む、
請求項１の方法。
【請求項９】
プロセッサであって、
第１キャッシュライン及び第２キャッシュラインを記憶するように構成されたキャッシュと、
キャッシュコントローラと、を備え、
前記キャッシュコントローラは、
エビクションするための前記第１キャッシュラインを識別することと、
前記第１キャッシュラインと同じメモリページに関連する前記第２キャッシュラインを識別することと、
前記第１キャッシュライン及び前記第２キャッシュラインを前記メモリページに書き込むことと、
を行うように構成されている、
プロセッサ。
【請求項１０】
前記キャッシュコントローラは、前記第２キャッシュラインを前記メモリページに書き込むことに応じて、前記キャッシュの前記第２キャッシュラインをクリーン状態に設定するように構成されている、
請求項９のプロセッサ。
【請求項１１】
前記キャッシュコントローラは、前記第２キャッシュラインを前記クリーン状態に設定したことに応じて、前記キャッシュの前記第２キャッシュラインを有効状態に維持するように構成されている、
請求項１０のプロセッサ。
【請求項１２】
前記キャッシュコントローラは、前記第１キャッシュラインを前記メモリページに書き込むことに応じて、前記第１キャッシュラインを無効状態に設定するように構成されている、
請求項１１のプロセッサ。
【請求項１３】
前記キャッシュコントローラは、
前記キャッシュで前記第２キャッシュラインを受信することと、
前記第２キャッシュラインを受信することと、前記第１キャッシュライン及び前記第２キャッシュラインが同じメモリページに記憶されていることを識別したことと、に応じて、前記第１キャッシュラインを記憶する前記キャッシュの第１インデックスに前記第２キャッシュラインを記憶することと、
を行うように構成されている、
請求項９のプロセッサ。
【請求項１４】
前記キャッシュコントローラは、エビクションするための前記第１キャッシュラインを識別したことに応じて、同じメモリページに関連するキャッシュラインの前記第１インデックスを検索するように構成されている、
請求項１３のプロセッサ。
【請求項１５】
前記キャッシュコントローラがエビクションするための前記第１キャッシュラインを識別したことに応じて、
前記キャッシュコントローラは、
前記第１キャッシュラインと同じメモリページに関連する第３キャッシュラインを識別することと、
前記第３キャッシュラインを前記メモリページに書き込むことと、
を行うように構成されている、
請求項９のプロセッサ。
【国際調査報告】
2021506028.tif 000008
2021506028.tif 000009