(57)【要約】  不定形なキャッシングを有する方法、チップマルチプロセッサタイル、およびチップマルチプロセッサを開示する。初期プロセッシングコア４０４は、データストレージからデータブロックを取得してよい。初期プロセッシングコア４０４に隣接する初期不定形キャッシュバンク４１０は、初期データブロックコピー４２２を格納してよい。ホームバンクディレクトリ４２４は、初期データブロックコピー４２２を登録してよい。【選択図】図１
2011511989.tif 000002
【特許請求の範囲】
【請求項１】
初期プロセッシングコアでデータストレージからデータブロックを取得する段階と、
前記初期プロセッシングコアに隣接する初期不定形キャッシュバンクに初期データブロックコピーを格納する段階と、
前記初期データブロックコピーをホームバンクディレクトリに格納する段階と
を備える方法。
【請求項２】
後続プロセッシングコアで前記初期不定形キャッシュバンクから前記初期データブロックコピーを取得する段階と、
前記後続プロセッシングコアに隣接する後続不定形キャッシュバンクに後続データブロックコピーを格納する段階と、
前記後続データブロックコピーを前記ホームバンクディレクトリに格納する段階と
をさらに備える請求項１に記載の方法。
【請求項３】
ホーム不定形キャッシュバンクにホームデータブロックコピーを格納する段階をさらに備える請求項２に記載の方法。
【請求項４】
前記初期不定形キャッシュバンクからの早期削除のため前記初期データブロックコピーをバイアスする段階をさらに備える請求項１に記載の方法。
【請求項５】
前記初期不定形キャッシュバンクから前記初期データブロックコピーを削除する段階と、ホーム不定形キャッシュバンクに前記初期データブロックコピーを書き込む段階とをさらに備える請求項１に記載の方法。
【請求項６】
前記ホーム不定形キャッシュバンクからの早期削除のため前記初期データブロックコピーをバイアスする段階をさらに備える請求項５に記載の方法。
【請求項７】
前記ホームバンクディレクトリは、ホーム不定形キャッシュバンクの一部であり、リスティングに利用可能なブロックの数が、前記ホーム不定形キャッシュバンクが有するデータブロックの数よりも多い請求項１に記載の方法。
【請求項８】
データストレージからデータブロックを取得する初期プロセッシングコアと、
ホームバンクディレクトリに登録された初期データブロックコピーを格納する初期不定形キャッシュバンクと
を備え、
前記初期不定形キャッシュバンクは、前記初期プロセッシングコアに隣接する初期チップマルチプロセッサタイル。
【請求項９】
後続プロセッシングコアは、前記初期不定形キャッシュバンクから前記初期データブロックコピーを取得し、前記後続プロセッシングコアに隣接する後続不定形キャッシュバンクは、前記ホームバンクディレクトリに登録された後続データブロックコピーを格納する請求項８に記載の初期チップマルチプロセッサタイル。
【請求項１０】
ホーム不定形キャッシュバンクは、ホームデータブロックコピーを格納する請求項９に記載の初期チップマルチプロセッサタイル。
【請求項１１】
前記初期データブロックコピーは、前記初期不定形キャッシュバンクからの早期削除のためバイアスされる請求項８に記載の初期チップマルチプロセッサタイル。
【請求項１２】
前記初期データブロックコピーは、前記初期不定形キャッシュバンクから削除され、ホーム不定形キャッシュバンクに書き込まれる請求項８に記載の初期チップマルチプロセッサタイル。
【請求項１３】
前記初期データブロックコピーは、前記ホーム不定形キャッシュバンクからの早期削除のためバイアスされる請求項１２に記載の初期チップマルチプロセッサタイル。
【請求項１４】
データストレージからデータブロックを取得する初期プロセッシングコアと、
前記初期プロセッシングコアに隣接し、初期データブロックコピーを格納する初期不定形キャッシュバンクと、
前記初期データブロックコピーを登録するホームバンクディレクトリと
を備えるチップマルチプロセッサ。
【請求項１５】
前記初期不定形キャッシュバンクから前記初期データブロックコピーを取得する後続プロセッシングコアと、
前記後続プロセッシングコアに隣接し、前記ホームバンクディレクトリに登録された後続データブロックコピーを格納する後続不定形キャッシュバンクと
をさらに備える請求項１４に記載のチップマルチプロセッサ。
【請求項１６】
ホームデータブロックコピーを格納するホーム不定形キャッシュバンクをさらに備える請求項１５に記載のチップマルチプロセッサ。
【請求項１７】
前記初期データブロックコピーは、前記初期不定形キャッシュバンクからの早期削除のためバイアスされる請求項１４に記載のチップマルチプロセッサ。
【請求項１８】
前記初期データブロックコピーは、前記初期不定形キャッシュバンクから削除され、ホーム不定形キャッシュバンクに書き込まれる請求項１４に記載のチップマルチプロセッサ。
【請求項１９】
前記初期データブロックコピーは、前記ホーム不定形キャッシュバンクからの早期削除へとバイアスされる請求項１８に記載のチップマルチプロセッサ。
【請求項２０】
前記ホームバンクディレクトリは、ホーム不定形キャッシュバンクの一部であり、リスティングに利用可能なデータブロックの数が、前記ホーム不定形キャッシュバンクが有するデータブロックの数よりも多い請求項１４に記載のチップマルチプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概してチップマルチプロセッサのキャッシング分野に関する。より具体的には、本発明はチップマルチプロセッサの不定形なキャッシュに関する。
【背景技術】
【０００２】
いくつものプロセッサコアを有するチップマルチプロセッサ（ＣＭＰ）システムは、各タイルがプロセッサコア、プライベートキャッシュ（Ｌ１）、第２のプライベートキャッシュまたは共有キャッシュ（Ｌ２）、およびキャッシュされたプライベートコピーのコピーを追跡するディレクトリを有したタイル構造を用いてよい。歴史的に、これらのタイル構造は、２つの型のＬ２編成のうちいずれかを有してよい。
【０００３】
マルチスレッドのワークロードを実行するＣＭＰシステムは、スレッド間で建設的にデータを共有することから、共有Ｌ２キャッシュのアプローチを用いてよい。共有Ｌ２キャッシュのアプローチでは、データが重複しないことで有効なＬ２キャッシュの容量を最大化し得るが、一方でプライベートＬ２キャッシュに比べて平均成功レイテンシー時間が延びる。これらの設計では、Ｌ２キャッシュおよびディレクトリを１つの構造として扱ってよい。
【０００４】
スカラーであって、かつレイテンシーに敏感なワークロードを実行するＣＭＰシステムでは、データの潜在的な複製による有効キャッシュ容量の潜在的な低減を犠牲にした上でレイテンシーを最適化する、プライベートＬ２キャッシュ編成が望ましい場合がある。プライベートＬ２キャッシュは、キャッシュの借用を禁止しつつ、キャッシュの分離を提供し得る。一部のコアにおけるキャッシュ集中型のアプリケーションでは、非アクティブコアまたは小さなデータフットプリントのアプリケーションを実行しているコアからキャッシュを借用することができない場合がある。
【０００５】
一部の汎用ＣＭＰシステムには、３つのレベルのキャッシュがあってよい。Ｌ１キャッシュおよびＬ２キャッシュは、２つのプライベートレベルを形成してよい。全てのコアで第３のＬ３キャッシュを共有してよい。
【図面の簡単な説明】
【０００６】
これらの図面は、本発明の典型的な実施形態のみを示し、本発明の範囲を限定するものではないことを理解した上で、添付の図面を用い、さらなる具体性と詳細をもって本発明を詳述し説明する。図面は以下の通りである。
【０００７】
【図１】ある実施形態による、プライベートおよび共有キャッシュを有するチップマルチプロセッサのブロック図を示す。
【０００８】
【図２】ある実施形態による、不定形なキャッシュ構造を有するチップマルチプロセッサのブロック図を示す。
【０００９】
【図３】ある実施形態による、チップマルチプロセッサタイルのブロック図を示す。
【００１０】
【図４】ある実施形態による、データの割り当てを実行する、不定形なキャッシュ構造を有するチップマルチプロセッサのブロック図を示す。
【００１１】
【図５】ある実施形態による、不定形なキャッシュを有するチップマルチプロセッサにおけるデータブロックコピーの割り当て方法のフローチャート図を示す。
【００１２】
【図６】ある実施形態による、データの移行を実行する、不定形なキャッシュ構造を有するチップマルチプロセッサのブロック図を示す。
【００１３】
【図７】ある実施形態による、不定形なキャッシュを有するチップマルチプロセッサにおけるデータの複製方法のフローチャート図を示す。
【００１４】
【図８】ある実施形態による、コピーの犠牲を実行する、不定形なキャッシュ構造を有するチップマルチプロセッサのブロック図を示す。
【００１５】
【図９】ある実施形態による、不定形なキャッシュを有するチップマルチプロセッサにおけるデータの犠牲方法のフローチャート図を示す。
【００１６】
【図１０】ある実施形態による、不定形なキャッシュバンクとディレクトリ構造とが組み合わされたチップマルチプロセッサのブロック図を示す。
【発明を実施するための形態】
【００１７】
本発明のさらなる特徴および利点を以下に説明する。説明によって自明である部分、または本発明の実施によって明らかとなる部分がある。本発明の特徴および利点は、添付の請求の範囲に具体的に示された機器および組み合わせを手段として具現化および実現され得る。本発明のこれらおよびその他の特徴は、以下の説明および添付の請求の範囲によって、より完全に明らかとなるであろう。また、本発明のこれらおよびその他の特徴は、ここに説明した本発明の実施によって明らかとなり得る。
【００１８】
本発明の様々な実施形態を詳細に以下に説明する。具体的な実施の説明は、例示を目的になされることが理解されるべきである。関連技術の当業者であれば、本発明の趣旨および範囲から解離することなく、その他の構成部材および設定を使用できることは明らかである。
【００１９】
本発明は、方法、装置およびコンピュータ命令のセットなどの様々な実施形態、さらには本発明の基本的な概念に関連したその他の実施形態を備える。方法、チップマルチプロセッサタイル、および不定形なキャッシングを有するチップマルチプロセッサを開示する。初期プロセッシングコアは、データストレージからデータブロックを取得してよい。初期プロセッシングコアに隣接する初期不定形キャッシュバンクは、初期データブロックコピーを格納してよい。ホームバンクディレクトリは、初期データブロックコピーを登録してよい。
【００２０】
チップマルチプロセッサ（ＣＭＰ）は、それぞれが１つ以上のキャッシュを有するいくつかのプロセッサを１つのチップ上に有してよい。これらのキャッシュは、関連したプロセッサのデータを格納する専用のプライベートキャッシュ、または全てのプロセッサが利用可能なデータを格納する共有キャッシュであってよい。図１は、ある実施形態による、プライベートおよび共有キャッシュを有するＣＭＰ１００の簡易なブロック図である。ＣＭＰ１００は、１つ以上のプロセッサコア（ＰＣ）１０２を１つのチップ上に有してよい。ＰＣ１０２は、プロセッサ、コアプロセッサ、固定機能コントローラ、またはその他の種類のプロセッシングコアであってよい。ＰＣ１０２のそれぞれは、付属のコアキャッシュ（Ｃ＄）１０４を有してよい。
【００２１】
ＰＣ１０２はプライベートキャッシュ（Ｐ＄）１０６に接続されてよい。Ｐ＄１０６へのアクセスはローカルＰＣ１０２によるアクセスにのみに制限されていてもよいが、ディレクトリ情報およびプロトコルの動作に基づいて、その他のＰＣ１０２によるスヌーピングを許可してもよい。Ｐ＄１０６のラインは、ローカルＰＣ１０２によってあらゆるアドレスに割り当てられてよい。ＰＣ１０２は、ディレクトリまたはその他のメモリソースへ転送される要求をコヒーレンシプロトコルエンジンへ渡す前にＰ＄１０６にアクセスしてよい。Ｐ＄１０６のラインは、いかなるＰ＄バンク１０６で複製されてもよい。
【００２２】
ＰＣ１０２はさらに、共有キャッシュ１０８に接続されてよい。共有キャッシュ１０８は全てのＰＣ１０２からアクセス可能であってよい。いかなるＰＣ１０２も、共有キャッシュ１０８のラインをアドレスのサブセットに割り当ててよい。ＰＣ１０２は、コヒーレンシプロトコルエンジンを経た後に共有キャッシュ１０８にアクセスしてよく、その他のメモリソースのトラバースが関与してよい。共有キャッシュ１０８は、それぞれのＰＣ１０２について、別個の共有キャッシュバンク（Ｓ＄Ｂ）１１０を有してよい。各データブロックは、全てのＳ＄Ｂ１１０において固有の場所を有してよい。各Ｓ＄Ｂ１１０は、Ｃ＄１０４に格納されたキャッシュデータブロック、Ｐ＄１０６、Ｓ＄Ｂ１１０、または３つのうちのいくつかの組み合わせを追跡するディレクトリ（ＤＩＲ）１１２を有してよい。
【００２３】
「不定形キャッシュ」と呼ばれるシングルキャッシュ構造は、プライベートキャッシュ、共有キャッシュ、またはその両方としていつでも機能してよい。不定形キャッシュは、プライベートキャッシュ設計のレイテンシーに関する利点と、共有キャッシュ設計の容量に関する利点とを同時に提供する。構造はさらに、ランタイム構成がプライベートまたは共有キャッシュバイアスのいずれかを追加することを許容する。シングルキャッシュ設計は、プライベートキャッシュ、共有キャッシュ、またはプライベート部分および共有部分における動的な割り当てを有するハイブリッドキャッシュのいずれかであるかの様に機能してよい。全てのＰＣ１０２は、不定形キャッシュにアクセスしてよい。ローカルＰＣ１０２は、不定形キャッシュのラインをあらゆるアドレスに割り当ててよい。その他のＰＣ１０２は、不定形キャッシュのラインをアドレスのサブセットに割り当ててよい。不定形キャッシュは、ローカルＰＣ１０２の要求に基づいて、いかなる不定形キャッシュバンクにおいてもラインが複製されることを許容してよい。ローカルＰＣ１０２は、コヒーレンシプロトコルエンジンを経る前に不定形キャッシュバンクにアクセスしてよい。その他のＰＣ１０２は、コヒーレンシプロトコルエンジンによって不定形キャッシュバンクにアクセスしてよい。
【００２４】
図２は、ある実施形態による、不定形キャッシュ構造を有するＣＭＰ２００の簡易なブロック図である。Ｃ＄１０４が付属した１つ以上のＰＣ１０２は、不定形キャッシュ２０２に接続されてよい。不定形キャッシュ２０２は、各ＰＣ１０２について別個の不定形キャッシュバンク（Ａ＄Ｂ）２０４へと分割されてよい。各Ａ＄Ｂ２０４は、Ａ＄Ｂ２０４に格納されたキャッシュデータブロックを追跡するディレクトリ（ＤＩＲ）２０６を別個に有してよい。
【００２５】
キャッシュ編成は、タイル構造、均一構造、不均一構造、またはその他のＣＭＰ構造を用いてよい。タイル構造のタイルは、コヒーレントスイッチ、バス、またはその他によって接続されてよい。図３は、ある実施形態のＣＭＰタイル３００のブロック図を示す。ＣＭＰタイル３００は、Ｃ＄１０４を共有する１つ以上のプロセッサコア１０２を有してよい。ＰＣ１０２は、プライベート部分および共有部分に動的にパーティショニングされたＡ＄Ｂ２０４にキャッシュコントローラ３０２を介してアクセスしてよい。ＣＭＰタイル３００は、ダイ上の全てのプライベートキャッシュブロックを追跡するＤＩＲ構成部材２０６を有してよい。キャッシュコントローラ３０２は、タイル３００のプライベートデータを保持する受信したコア要求をローカルＡ＄Ｂ２０４へ送信してよい。キャッシュプロトコルエンジン３０４は、ローカルＡ＄Ｂにおけるミスをホームタイルへオンダイのインタコネクトモジュール３０６を介して送信してよい。オンダイのインタコネクトモジュール３０６を介してアクセス可能なホームタイルのＡ＄バンクが、データのミスを補完してよい。キャッシュプロトコルエンジン３０４は、必要に応じて、ホームタイルのＤＩＲバンク２０６をルックアップし、遠隔のプライベートＡ＄Ｂをスヌーピングしてよい。全ての必要なスヌーピングを解決した後のホームタイルでのミスは、ホームタイルによるオフソケット要求の開始を引き起こす場合がある。純粋にプライベートキャッシュとして機能するように設定されたＡ＄Ｂ２０４は、Ａ＄Ｂ２０４のホームタイルのルックアップを行わず、ディレクトリの流れに従ってよい。純粋に共有キャッシュとして機能するように設定されたＡ＄Ｂ２０４は、Ａ＄Ｂ２０４のルックアップを行わず、ホームタイルへ直接進んでよい。ブロックの割り当て、移行、犠牲、複製、置換、および逆無効化に関するプロトコル動作をキャッシュすることにより、Ａ＄Ｂ２０４の動的なパーティショニングが実現されてよい。
【００２６】
図４は、ある実施形態による、データの割り当てを実行する、不定形キャッシュを有するＣＭＰ４００のブロック図を示す。初期ＣＭＰタイル４０２は、当該データブロックのホームＣＭＰタイル４０４を確認後、データストレージユニットのデータブロックへのアクセスを要求してよい。初期ＣＭＰタイル４０２は、初期プロセッシングコア（ＩＰＣ）４０６、初期コアキャッシュ（ＩＣ＄）４０８、初期不定形キャッシュバンク（ＩＡ＄Ｂ）４１０、および初期ディレクトリ（ＩＤＩＲ）４１２を有してよい。ホームＣＭＰタイル４０４は、ホームプロセッシングコア（ＨＰＣ）４１４、ホームコアキャッシュ（ＨＣ＄）４１６、ホーム不定形キャッシュバンク（ＨＡ＄Ｂ）４１８、およびホームディレクトリ（ＨＤＩＲ）４２０を有してよい。初期ＣＭＰタイル４０２は、ＩＡ＄Ｂ４１０に初期データブロックコピー（ＩＤＢＣ）４２２またはキャッシュブロックを格納してよい。ホームＣＭＰタイル４０４は、ＨＤＩＲ４２０にホームデータブロックレジスタ（ＨＤＢＲ）４２４を登録し、各不定形キャッシュバンクのデータブロックのコピーを追跡してよい。これまでの共有キャッシュ構造では、初期ＣＭＰタイル４０２およびホームＣＭＰタイル４０６の近接性に関わらず、ホームＣＭＰタイル４０４にデータブロックが割り当てられてきた場合がある。
【００２７】
図５は、ある実施形態による、不定形キャッシュを有するＣＭＰ２００におけるデータブロックコピーの割り当て方法５００のフローチャート図を示す。ステップ５０２では、初期ＣＭＰタイル４０２がＨＤＩＲのデータブロック（ＤＢ）を確認してよい。ステップ５０４でＨＡ＄ＢにＤＢが存在する場合には、ステップ５０６で初期ＣＭＰタイル４０２がＨＡ＄ＢからＤＢを取得してよい。ステップ５０４でＨＡ＄ＢにＤＢが存在しない場合には、ステップ５０８で初期ＣＭＰタイル４０２がデータストレージからＤＢを取得してよい。ステップ５１０では、初期ＣＭＰタイル４０２がＩＡ＄Ｂ４１０にＩＤＢＣ４２２を格納してよい。ステップ５１２では、ホームＣＭＰタイル４０４がＨＤＩＲ４２０にＨＤＢＲ４２４を登録してよい。
【００２８】
図６は、ある実施形態による、データ移行を実行する、不定形キャッシュを有するＣＭＰ６００のブロック図を示す。後続ＣＭＰタイル６０２は、ＩＡ＄Ｂ４１０にＩＤＢＣ４２２として格納されたデータブロックを求めてよい。後続ＣＭＰタイル６０２は、後続プロセッシングコア（ＳＰＣ）６０４、後続コアキャッシュ（ＳＣ＄）６０６、後続不定形キャッシュバンク（ＳＡ＄Ｂ）６０８、および後続ディレクトリ（ＳＤＩＲ）６１０を有してよい。後続ＣＭＰタイル６０２は、データブロックを探してデータストレージにアクセスする前にＨＤＩＲ４２０を確認し、チップ上のキャッシュバンクにデータブロックのコピーが既に存在するかを確定してよい。データブロックが存在する場合は、ホームＣＭＰタイル４０４は、ホームデータブロックコピー（ＨＤＢＣ）６１２として、ＩＤＢＣ４２２をＨＡ＄Ｂ４１８へコピーしてよい。後続ＣＭＰタイル６０２は、ＳＡ＄Ｂ６０８において、ＨＤＢＣ６１２から後続データブロックコピー（ＳＤＢＣ）６１４を作成してよい。またこれに代えて、後続ＣＭＰタイル６０２は、ＳＡ＄Ｂ６０８でＩＤＢＣ４２２から後続データブロックコピー（ＳＤＢＣ）６１４を作成した後に、ＨＤＢＣ６１２を作成してよい。後のデータブロックコピーは、ＨＤＢＣ６１２から作成されてよい。この移行スキームは、共有キャッシュの容量に関する利点を提供できる。後の要求者は、遠隔のプライベートキャッシュにおいて、当該データブロックのレイテンシーが軽減されている事を認識する場合がある。移行におけるしきい値は個別に調整できるが、移行は２番目の要求者が存在している場合に発生してよい。初期ＣＭＰタイル４０２および後続ＣＭＰタイル６０２の両方は、有効な複製ポリシーに応じて、不定形キャッシュに加えてコアキャッシュでもデータブロックコピーを保持してよい。
【００２９】
容量に関する利点を提供するべく、共有されたデータブロックコピーは、ＨＡ＄Ｂ４１８へ移行してよい。プライベートキャッシュのそれぞれは、この共有されたデータブロックの複製をキャッシュして、レイテンシーと引き換えに容量を得てよい。不定形キャッシュは、複製に対応してよいが、義務付けられてはいない。不定形キャッシュは適宜複製されてよく、個々のインスタンスとは対照的に置換する複製をバイアスしてよい。
【００３０】
初期ＣＭＰタイル４０２は、ＩＡ＄Ｂ４１０内のＩＤＢＣ４２２の犠牲を監視する初期レジスタ（ＩＲＥＧ）６１６を有してよい。ＩＲＥＧ６１６は、ＭＲＵ（Ｍｏｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）キャッシュブロックからＬＲＵ（Ｌｅａｓｔ  ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）キャッシュブロックへと編成されてよく、最初に削除されるのは、このうちＬＲＵキャッシュブロックである。ＩＤＢＣ４２２は、データストレージまたはＨＡ＄Ｂ４１８からコピーされた後、ＭＲＵとしてＩＲＥＧ６１６にエンターされ、最後に削除されるものとしてバイアスされる。ホームＣＭＰタイル４０４は、ＨＡ＄Ｂ４１８内のＨＤＢＣ６１２の犠牲を監視するホームレジスタ（ＨＲＥＧ）６１８を有してよい。後続ＣＭＰタイル６０２によって利用され得るように、ＩＤＢＣ４２２がＩＡ＄Ｂ４１０からＨＡ＄Ｂ４１８へコピーされた後、ＨＤＢＣ６１２は、ＭＲＵとしてＨＲＥＧ６１８にエンターされ、最後に削除されるものとしてバイアスされる。さらにＩＤＢＣ４２２は、ＩＲＥＧ６１６内でＬＲＵ端の近くへと移動され、早期削除されるものとしてバイアスされてよい。後続ＣＭＰタイル６０２は、ＳＡ＄Ｂ６０８内のＳＤＢＣ６１４の犠牲を監視する後続レジスタ（ＳＲＥＧ）６２０を有してよい。ＳＤＢＣ６１４は、ＨＡ＄Ｂ４１８からコピーされた後、ＳＲＥＧ６２０のＬＲＵ端の近くにエンターされ、早期削除されるものとしてバイアスされてよい。
【００３１】
ＩＲＥＧ６１６を用いて、不定形キャッシュが、プライベートキャッシュまたは共有キャッシュとして動作するのかをＩＲＥＧ６１６内のＩＤＢＣ４２２の配置に基づいて設定してよい。共有キャッシュの設定では、ＩＤＢＣ４２２がＩＲＥＧ６１６内のＬＲＵ位置に配されてよい。さらに、ＨＤＢＣ６１２がＨＲＥＧ６２０内のＭＲＵ位置に配されてよい。プライベートキャッシュの設定では、ＩＤＢＣ４２２がＭＲＵ位置に配されてよい。さらに、ＨＤＢＣ６１２は、ＨＲＥＧ６２０内のＬＲＵ位置に配されるか、または割り当てられないままでよい。
【００３２】
図７は、ある実施形態による、不定形キャッシュを有するＣＭＰ２００におけるデータの複製方法７００のフローチャート図を示す。ステップ７０２では、後続ＣＭＰタイル６０２がＨＤＩＲ４２０内のＨＤＢＲ４２４にアクセスしてよい。ステップ７０４では、ホームＣＭＰタイル４０４がＩＡ＄Ｂ４１０からＩＤＢＣ４２２を取得してよい。ステップ７０６では、ホームＣＭＰタイル４０４がＨＡ＄Ｂ４１８内にＨＤＢＣ６１２を格納してよい。ステップ７０８では、後続ＣＭＰタイル６０２がＳＡ＄Ｂ６０８内にＳＤＢＣ６１４を格納してよい。ステップ７１０では、後続ＣＭＰタイル６０２がＨＤＩＲ４２０内にＳＤＢＣ６１４を格納してよい。ステップ７１２では、初期ＣＭＰタイル４０２がＩＤＢＣ４２２を早期削除のためバイアスしてよい。ステップ７１４では、後続ＣＭＰタイル６０２がＳＤＢＣ６１４を早期削除のためバイアスしてよい。
【００３３】
図８は、ある実施形態による、コピーの犠牲を実行する、不定形キャッシュを有するＣＭＰ８００のブロック図を示す。不定形キャッシュバンクから排他的にクリーンまたはダーティなデータブロックコピーが削除されると、初期ＣＭＰタイル４０２は、クリーンまたはダーティなＩＤＢＣ４２２を削除ホームデータブロックコピー（ＥＨＤＢＣ）８０２としてＨＡ＄Ｂ４１８に書き込んでよい。ＥＨＤＢＣ８０２は、ＨＲＥＧ６２０のＬＲＵ端近くにエンターされ、早期削除されるものとしてバイアスされてよい。プライベートキャッシュ構造または設定を有するＣＭＰタイルがＥＨＤＢ８０２のコピーを要求する場合は、ＥＨＤＢＣ８０２はＬＲＵ位置に留まってよく、新たな要求者は、要求者データブロックコピーをＭＲＵ位置に置いてよい。後続のＣＭＰタイルがホームＣＭＰタイル４０４から要求を行う場合には、ＥＨＤＢＣ８０２はＭＲＵ位置へ移動されてよく、その後の要求者は後のデータブロックコピーをＬＲＵ位置に置いてよい。
【００３４】
これまでの構造では、プライベートキャッシュまたは共有キャッシュがクリーンな犠牲または変更されていないキャッシュブロックを落とし、ダーティな犠牲または変更されたキャッシュをメモリに書き込む場合がある。不定形なキャッシングでは、ＩＤＢＣ４２２をＨＡ＄Ｂ４１８に書き込むことで、キャッシュの借用を生じさせる場合がある。キャッシュの借用は、データ集中型のアプリケーションが他のタイルのキャッシュを用いることを可能にする。
【００３５】
これまでの構造では、プライベートキャッシュデータブロックコピーの追跡が困難であり、ディレクトリの犠牲には、全てのプライベートキャッシュデータブロックコピーが無効化される必要があった。これらのデータブロックへのその後のアクセスには、メモリアクセスが必要な場合がある。不定形キャッシュでは、ディレクトリによる追跡が不要なホームタイルにディレクトリ犠牲を移動させることで、無効化の影響を緩和させることができる。
【００３６】
図９は、ある実施形態による、不定形キャッシュを有するＣＭＰ２００におけるデータ複製方法７００のフローチャート図を示す。ステップ９０２では、初期ＣＭＰタイル４０２がＩＡ＄Ｂ４１０からＩＤＢＣ４２２を削除してよい。ステップ９０４では、初期ＣＭＰタイル４０２がＨＡ＄ｂ４１８にＩＤＢＣ４２２を書き込んでよい。ステップ９０６では、ホームＣＭＰタイル４０４がＥＨＤＢＣ８０２を早期削除のためバイアスしてよい。ステップ９０８でホームＣＭＰタイル４０４が最終的にＥＨＤＢＣ８０２を削除すると、ステップ９１０でホームＣＭＰタイル４０４がデータストレージにＥＨＤＢＣ８０２を書き込んでよい。
【００３７】
不定形キャッシュバンク２０４およびディレクトリ２０６は別個のコンストラクトであってよい。図１０は、不定形キャッシュバンク（Ａ＄Ｂ）１００２とディレクトリ（ＤＩＲ）１００４構造とが組み合わされたＣＭＰ１０００のブロック図を示す。Ａ＄Ｂ１００２は、データブロックコピー（ＤＢＣ）１００６のセットを含んでよい。ＤＩＲ１００４は、ホームバンクデータブロックレジストレーション（ＨＢＤＢＲ）１００８をＤＢＣ１００６に関連付けてよい。さらに、ＤＩＲ１００４は、１つ以上のオルタネートバンクデータブロック登録（ＡＢＤＢＲ）１０１０をＤＢＣ１００６に関連付け、ＤＩＲ１００４がＡ＄Ｂ１００２よりも多くのデータブロックを有する結果を生じさせてよい。
【００３８】
必須ではないが、少なくとも一部において、本発明は、汎用コンピュータなどの電子機器によって実行される、プログラムモジュールなどのコンピュータで実行可能な一般的な命令に照らして説明される。一般的に、プログラムモジュールは、特定のタスクを実行または特定の抽象データ型を実装する、ルーチンプログラム、オブジェクト、コンポーネント、データ構造などを含む。さらに、ＰＣ、携帯デバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な電化製品、ネットワークに接続したＰＣ，ミニコンピュータ、メインフレームコンピュータ、およびこれらの類似品を含む、様々な種類のコンピュータシステム構成を有するネットワークコンピューティング環境において、本発明の他の実施形態を実施可能であることは、当業者にとって当然である。
【００３９】
実施形態は、分散コンピューティング環境においても実施可能である。分散コンピューティング環境では、通信ネットワークを介して有線リンク、無線リンク、またはこれらの組み合わせによってリンクされたローカルおよび遠隔のプロセッシング機器によってタスクが実行される、
【００４０】
本発明の範囲内の実施形態は、格納されたコンピュータで実行可能な命令またはデータ構造を搬送または保有するコンピュータ可読な媒体も含む。このようなコンピュータ可読な媒体は、汎用または特殊用途のコンピュータによってアクセスできる利用可能なあらゆる媒体であってよい。このようなコンピュータ可読な媒体は、これらに限定されないが、例えば、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（登録商標），ＣＤ−ＲＯＭまたはその他の光ディスクストレージ、磁気ディスクストレージまたはその他の磁気ストレージデバイス、もしくは、コンピュータで実行可能な命令またはデータ構造の形式による所望のプログラムコード手段の運搬または格納に使用し得る、その他のあらゆる媒体を含んでよい。ネットワークまたは別の通信接続（有線、無線、またはこれらの組み合わせ）によって情報がコンピュータへ転送または供給される場合、コンピュータは接続をコンピュータ可読な媒体として適切に捉える。従って、このような全ての接続は、コンピュータ可読な媒体と適切に称される。上述の組み合わせもまたコンピュータ可読な媒体の範囲に含まれるべきである。
【００４１】
コンピュータで実行可能な命令は、例えば、汎用コンピュータ、特殊用途コンピュータ、または特殊用途プロセッシングデバイスに特定の機能または機能群を実行させる命令およびデータを含む。また、コンピュータで実行可能な命令は、スタンドアロンまたはネットワーク環境のコンピュータによって実行されるプログラムモジュールも含む。一般的に、プログラムモジュールは、特定のタスクを実行、または特定の抽象データ型を実装する、ルーチンプログラム、オブジェクト、コンポーネント、データ構造などを含む。コンピュータで実行可能な命令、関連付けられたデータ構造、およびプログラムモジュールは、開示した方法の段階を実行するプログラムコード手段の例である。このような実行可能な命令または関連付けられたデータ構造の特定の順序は、このような段階で説明された機能を実装するための対応動作の例である。
【００４２】
以上の説明は具体的な詳細を含むが、請求の範囲を限定するものであると解釈されるべきではない。本発明の説明された実施形態のその他の構成は、本発明の範囲の一部である。例えば、各個人ユーザが本発明の本質を適用し、各ユーザがこのようなシステムを展開し得る。従って、実行し得る数多くのアプリケーションの１つが、ここに説明した機能を必要としない場合でも、個ユーザが本発明の恩恵を利用することができる。つまり、各電子デバイスが内容を様々な方法で処理する場合が複数あり得る。全てのエンドユーザによって使用される１つのシステムである必要はない。従って、本発明は、示された具体的な例によってではなく、添付の請求の範囲およびそれらの法的な等価物によってのみ定義されるべきである。
【図１】
2011511989.tif 000003
【図２】
2011511989.tif 000004
【図３】
2011511989.tif 000005
【図４】
2011511989.tif 000006
【図５】
2011511989.tif 000007
【図６】
2011511989.tif 000008
【図７】
2011511989.tif 000009
【図８】
2011511989.tif 000010
【図９】
2011511989.tif 000011
【図１０】
2011511989.tif 000012
【国際調査報告】
2011511989.tif 000013
2011511989.tif 000014