JP5607603B2 - キャッシュ管理のための方法、装置、およびコンピュータ・プログラム - Google Patents

キャッシュ管理のための方法、装置、およびコンピュータ・プログラム Download PDF

Info

Publication number
JP5607603B2
JP5607603B2 JP2011259551A JP2011259551A JP5607603B2 JP 5607603 B2 JP5607603 B2 JP 5607603B2 JP 2011259551 A JP2011259551 A JP 2011259551A JP 2011259551 A JP2011259551 A JP 2011259551A JP 5607603 B2 JP5607603 B2 JP 5607603B2
Authority
JP
Japan
Prior art keywords
cache
cache line
new
line
controller
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2011259551A
Other languages
English (en)
Other versions
JP2012128846A5 (ja
JP2012128846A (ja
Inventor
ジェイソン・アラン・コックス
プラヴィン・ジー・カランディカ
エリック・フランシス・ロビンソン
マーク・ジェイムズ・ウォルスキ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2012128846A publication Critical patent/JP2012128846A/ja
Publication of JP2012128846A5 publication Critical patent/JP2012128846A5/ja
Application granted granted Critical
Publication of JP5607603B2 publication Critical patent/JP5607603B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明の分野はデータ処理であり、更に具体的には、キャッシュ管理のための方法、装置、および製品である。
マルチプロセッサ・システムにおいては、様々な理由で、隣接した処理コアに設けられた記憶エリア(キャッシュ)内にキャッシュ・ラインを挿入する。時として、これは、隣接キャッシュから容量不足のために排除されたデータを保持するために用いられる。挿入の別の理由は、コプロセッサが、特定のデータを有するあるキャッシュ・ラインをプロセッサのキャッシュ内に置くことを選択することで、プロセッサがそのキャッシュ・ラインを見つけるためにメモリまで検索に行くことなく容易にデータにアクセスできるようにすることである。新しいキャッシュ・ラインをキャッシュに挿入する要求の受信に応答して、キャッシュのためのキャッシュ・コントローラは、挿入を拒否するかまたは承認するかを決定することができる。
キャッシュ管理のための方法、装置、およびコンピュータ・プログラムを開示する。
実施形態は、キャッシュ・コントローラによって、新しいキャッシュ・ラインをキャッシュに挿入する要求を受信することと、キャッシュ・コントローラによって、新しいキャッシュ・ラインが強制注入に関連付けられているか否かを判定することと、新しいキャッシュ・ラインが強制注入に関連付けられているという判定に応答して、キャッシュ・コントローラによって、新しいキャッシュ・ラインのキャッシュへの挿入を承認することと、新しいキャッシュ・ラインが強制注入に関連付けられていないという判定に応答して、キャッシュ・コントローラによって、新しいキャッシュ・ラインのアドレスと既定アドレス範囲との比較に基づいて、新しいキャッシュ・ラインの挿入を承認するか否かを判定することと、を含む。
本発明の前述およびその他の目的、特徴、および利点は、添付図面に図示されたような、以下に述べる本発明の例示的な実施形態の更に詳細な説明から明らかとなろう。図面において、同様の参照番号は概して本発明の例示的な実施形態の同様の部分を表す。
本発明の実施形態に従った、キャッシュ管理を実施するコンピュータの一例の機能ブロック図を示す。 本発明の実施形態に従った、キャッシュ管理のための方法の一例を示すフローチャートを図示する。 本発明の実施形態に従った、キャッシュ管理のための方法の別の例を示すフローチャートを図示する。 本発明の実施形態に従った、キャッシュ管理のための方法の別の例を示すフローチャートを図示する。
本発明の実施形態に従った、マルチプロセッシング・コンピュータにおけるキャッシュ管理のための例示的な方法、装置、およびコンピュータ・プログラムについて、図1から始まる添付図面を参照して説明する。図1は、本発明の実施形態に従った、キャッシュ管理を実施するコンピュータ(100)の一例の機能ブロック図を示す。
図1の例示的なコンピュータ(100)は、いくつかのコンピュータ・プロセッサ(102)を含む。各プロセッサ(102)は、コンピュータ・コア(104)を含み、これはメモリ動作のためにメモリ管理ユニット(「MMU」)(106)を介して共有キャッシュ・レベルおよびメイン・メモリ(114)に結合されている。図1の例において、第1のプロセッサ・セット(193)は第1の共有キャッシュ・レベル(108)に結合され、第2のプロセッサ・セット(194)は第2の共有キャッシュ・レベル(109)に結合されている。第1の共有キャッシュ・レベル(108)は、キャッシュ・ディレクトリ(112)、キャッシュ・コントローラ(110)、およびL2キャッシュ(181)を含む。第2の共有キャッシュ・レベル(109)は、第1の共有キャッシュ・レベル(108)の以下のコンポーネントを含む。すなわち、キャッシュ・ディレクトリ、キャッシュ・コントローラ、およびL2キャッシュである。第2のプロセッサ・セット(194)は、第2の共有キャッシュ・レベル(109)から第1の共有キャッシュ・レベル(108)内へのキャッシュ・ラインの挿入を要求することができる。この場合、第2の共有キャッシュ・レベル(109)のキャッシュ・コントローラ(図示せず)は、この要求を第1の共有キャッシュ・レベル(108)のキャッシュ・コントローラ(110)に送信することができる。キャッシュ・コントローラ(110)は、挿入の要求を承認するかまたは拒否するかを決定することができる。図1の第1の共有キャッシュ・レベル(108)および第2の共有キャッシュ・レベル(109)は、バス・マネージャ(191)によって制御されるバス(166)を介して要求およびデータを送信することができる。
図1のプロセッサ(102)の各々はL1メモリを含む。L1は、比較的小さく高速のキャッシュであり、同一チップ上でプロセッサ自体の内部に作られている。MMU(106)は、アドレス変換論理、変換ルックアサイド・バッファ、オンプロセッサ・キャッシュL1のための制御装置等を含む。
メイン・メモリ(114)は、コンピュータ(100)上でデータ処理するためのプログラム・データおよびプログラム命令の主要なランダム・アクセス記憶装置である。メイン・メモリ(114)の特徴は、メモリ待ち時間、すなわちメイン・メモリに対する読み取りまたは書き込みといったメモリ・アクセスに必要な時間である。メイン・メモリ(114)は、プロセッサ(102)間で共有される物理アドレス空間のシングル・エクステントを実現する。
キャッシュL1およびL2(181)は、メモリ・アクセス待ち時間を短縮するためにプロセッサ(102)によって用いられる専用のメモリ・セグメントである。各キャッシュは、メイン・メモリよりも小型かつ高速であり、頻繁に用いられるメイン・メモリ位置からのデータのコピーを記憶する。プロセッサが、メイン・メモリ内のある位置に対する読み出しまたは書き込みを必要とする場合、そのデータのコピーすなわち「キャッシュ・ライン」がキャッシュ内に存在するか否かを最初にチェックする。存在する場合、プロセッサは直ちにキャッシュに対する読み取りまたは書き込みを行う。これは、メイン・メモリに対する読み取りまたは書き込みよりも著しく高速である。ほとんどのメモリ・アクセスがキャッシュされたメモリ位置である限り、メモリ・アクセスの平均待ち時間はメイン・メモリの待ち時間よりもキャッシュ待ち時間に近くなる。前述したように、メイン・メモリはあらゆるキャッシュよりも著しく低速であり、キャッシュ・ミスはメモリ・アクセス待ち時間において大きな損害を引き起こす。
キャッシュ・メモリは、「キャッシュ・ライン」と称するデータ・ブロックに構成されている。異なる設計の各キャッシュ・ラインは、8から512バイト以上のサイズ範囲に及ぶことがある。典型的な1キャッシュ・ラインのサイズは、1から16バイトの範囲であるCPU命令によって要求される通常のアクセスのサイズよりも大きい。現在の32ビットおよび64ビット・アーキテクチャによって典型的に処理される最大のアドレスおよびデータは、長さ128ビットすなわち16バイトである。各キャッシュ・ラインを特徴付けるのは、キャッシュ・ラインの内容がメイン・メモリに記憶される開始アドレスの最上位ビットから成る「タグ」である。
図1の例では、プロセッサ(102)は、L1キャッシュおよびL2キャッシュ(181)によって表す2つのレベルを有するマルチレベル・キャッシュを利用する。マルチレベル・キャッシュは、キャッシュ待ち時間とヒット・レートとの間のトレードオフに対処する。キャッシュが大型化するとヒット・レートは向上するが待ち時間が長くなる。このトレードオフに対処するため、多くのコンピュータは多レベルのキャッシュを用いて、小さい高速キャッシュをもっと大きい低速キャッシュによって補強する。概して、マルチレベル・キャッシュが動作する際は、最小のレベル1(L1)キャッシュを最初にチェックし、これがヒットすればプロセッサは高速で進行する。小さい方のキャッシュがミスした場合は次に大きいキャッシュ(L2)をチェックする等とし、その後でメイン・メモリをチェックする。図1の例示的なコンピュータは2つのキャッシュ・レベルを実施するが、これは単に説明の便宜のためであって、限定ではない。多くのコンピュータは、3または4キャッシュ・レベルのような更に多いキャッシュ・レベルを実施する。いくつかのプロセッサでは3レベルのオンチップ・キャッシュを実施する。例えば、Alpha 21164(TM)は96KBのオンダイL3キャッシュを有し、IBM POWER4(TM)は256MBのL3キャッシュ・オフチップを有し、いくつかのプロセッサ間で共有する。
キャッシュ・コントローラ(110)は、キャッシュ内のキャッシュ・ラインに関する情報のレポジトリであるキャッシュ・ディレクトリ(112)を含む。ディレクトリは、コンピュータ内の全キャッシュにおける各キャッシュ・ラインごとに、キャッシュ・ラインのアイデンティティすなわちキャッシュ・ラインの「タグ」、キャッシュ・ラインの状態すなわち「変更済み」、「共有」、「無効」等、および、低レベル共有キャッシュのキャッシュ・ラインのコピーがもっと高いキャッシュ・レベルに記憶されているか否かを各プロセッサごとに特定するビット・ベクトルを記録する。MMU(106)およびキャッシュ・コントローラ(110)は、コンピュータ・ノード上の全てのキャッシュ動作について、キャッシュ・ディレクトリ(112)内の情報を調べて更新する。キャッシュ・コントローラ(110)は、L2キャッシュ(181)に直接接続されているがL1キャッシュには直接接続されておらず、L1キャッシュのキャッシュ・ラインに関する情報をキャッシュ・ディレクトリ(112)から取得する。
キャッシュ・コントローラ(110)は、キャッシュ・メモリを管理する論理回路であり、プロセッサ(102)、キャッシュ・メモリ(L1、L2)、およびメイン・メモリ(114)間のインタフェースを提供する。ここではキャッシュ・コントローラ(110)をプロセッサ(102)の外部に図示するが、最近のコンピュータ上のキャッシュ・コントローラはプロセッサまたはMMUに直接組み込まれていることが多い。実際、この例においてMMU(106)はL1キャッシュのためのキャッシュ制御論理を含む。
図1の例において、キャッシュ・コントローラ(110)は、本発明に従ってキャッシュ管理を実施するように構成されている。図1のキャッシュ・コントローラ(110)は、新しいキャッシュ・ラインをキャッシュ(181)に挿入するための要求を受信し、新しいキャッシュ・ラインが強制注入に関連付けられているか否かを判定し、新しいキャッシュ・ラインが強制注入に関連付けられているという判定に応答して、新しいキャッシュ・ラインのキャッシュ(181)への挿入を承認し、新しいキャッシュ・ラインが強制注入に関連付けられていないという判定に応答して、新しいキャッシュ・ラインのアドレスと既定アドレス範囲との比較に基づいて新しいキャッシュ・ラインの挿入を承認するか否かを判定するように構成されている。新しいキャッシュ・ラインの挿入を承認するかまたは拒否するかの決定を、新しいキャッシュ・ラインのアドレスと既定アドレス範囲との比較に基づいて行うことによって、キャッシュ・コントローラ(110)は、新しいキャッシュ・ラインのアドレスの優先度に基づいて挿入決定を行うことができる。挿入決定プロセスに優先度の検討を組み込むことによって、キャッシュ利用の最適化におけるキャッシュ・コントローラ(110)の有効性を向上させることができる。
更に説明すると、図2は、本発明の実施形態に従った、キャッシュ管理のための例示的な方法を示すフローチャートを図示する。図2の方法は、キャッシュ・コントローラ(110)が、新しいキャッシュ・ライン(222)をキャッシュ(181)に挿入するための要求(220)を受信すること(202)を含む。新しいキャッシュ・ライン(222)をキャッシュ(181)に挿入するための要求(220)を受信すること(202)は、バス(166)を介して第2のプロセッサ・セット(194)からプロセッサ(102)のいずれか1つからの要求(220)を受信することによって実施可能である。
また、図2の方法は、キャッシュ・コントローラ(110)が、新しいキャッシュ・ライン(222)が強制注入に関連付けられているか否かを判定すること(204)を含む。新しいキャッシュ・ライン(222)が強制注入に関連付けられているか否かを判定すること(204)は、要求(220)を調べて、新しいキャッシュ・ライン(222)が強制注入に関連付けられていることを要求(220)が示すか否かを判定することによって実施可能である。強制注入は、新しいキャッシュ・ライン(222)に関連付けられたアドレス(224)とは無関係に、キャッシュ・コントローラ(110)が新しいキャッシュ・ライン(222)を承認しなければならないことを示すものである。
図2の方法は、新しいキャッシュ・ライン(222)が強制注入に関連付けられているという判定に応答して、キャッシュ・コントローラ(110)が、新しいキャッシュ・ライン(222)のキャッシュ(181)への挿入を承認すること(206)含む。新しいキャッシュ・ライン(222)が強制注入に関連付けられているという判定に応答して新しいキャッシュ・ライン(222)のキャッシュ(181)への挿入を承認すること(206)は、キャッシュ・コントローラ(110)から、第2のプロセッサ・セット(194)に関連付けられた第2の共有キャッシュ・レベル(109)内の別のキャッシュ・コントローラ(図示せず)に、要求(220)の承認を送信することによって実施可能である。
また、図2の方法は、新しいキャッシュ・ライン(222)が強制注入に関連付けられていないという判定に応答して、キャッシュ・コントローラ(110)が、新しいキャッシュ・ライン(222)のアドレス(224)と既定アドレス範囲(226)との比較に基づいて新しいキャッシュ・ライン(222)の挿入を承認するか否かを判定すること(208)を含む。新しいキャッシュ・ライン(222)のアドレス(204)は、メイン・メモリ(114)の実メモリ・アドレスに基づくものとすることができる。新しいキャッシュ・ライン(222)が強制注入に関連付けられていないという判定に応答して、新しいキャッシュ・ライン(222)のアドレス(224)と既定アドレス範囲(226)との比較に基づいて新しいキャッシュ・ライン(222)の挿入を承認するか否かを判定すること(208)は、1つ以上の既定アドレス範囲(226)を確立し、この既定アドレス範囲(226)をディレクトリ(112)、キャッシュ・ライン、キャッシュ・コントローラ(110)等に記憶し、既定アドレス範囲(226)の最上位アドレスおよび最下位アドレスを識別し、新しいキャッシュ・ライン(222)のアドレス(224)が最上位アドレスを超えるかまたは最下位アドレス未満であるかを判定することによって、実施可能である。どのアドレス範囲を所定アドレス範囲内とするべきかという判定は、ディレクトリ・ルックアップまたは設計上の検討事項(例えばキャッシュ(181)内のラッチ・サイズ対犠牲選択決定のための時間)等のファクターに基づくものとすることができる。
更に説明すると、図3は、本発明の実施形態に従ったキャッシュ管理のための更に別の例示的な方法を示すフローチャートを図示する。図3の方法は、図2の方法の以下の要素を含む。すなわち、キャッシュ・コントローラ(110)が、新しいキャッシュ・ライン(222)をキャッシュ(181)に挿入するための要求(220)を受信すること(202)、キャッシュ・コントローラ(110)が、新しいキャッシュ・ライン(222)が強制注入に関連付けられているか否かを判定すること(204)、新しいキャッシュ・ライン(222)が強制注入に関連付けられているという判定に応答して、キャッシュ・コントローラ(110)が、新しいキャッシュ・ライン(222)のキャッシュ(181)への挿入を承認すること(206)、および、新しいキャッシュ・ライン(222)が強制注入に関連付けられていないという判定に応答して、キャッシュ・コントローラ(110)が、新しいキャッシュ・ライン(222)のアドレス(224)と既定アドレス範囲(226)との比較に基づいて新しいキャッシュ・ライン(222)の挿入を承認するか否かを判定すること(208)である。
図2の方法と異なる図3の要素を図3に点線で示す。更に具体的には、それらの要素は、キャッシュ・コントローラ(110)が、無効キャッシュ・ラインが利用可能であるか否かを判定すること(302)、無効キャッシュ・ラインが利用可能でないという判定に応答して、キャッシュ・コントローラ(110)が、新しいキャッシュ・ライン(222)のアドレス(224)が第1のクラスのアドレス範囲内にあるか否かを判定すること(304)、新しいキャッシュ・ライン(222)のアドレス(224)が第1のクラスのアドレス範囲内にないという判定に応答して、キャッシュ・コントローラ(110)が、少なくとも1つの可能な犠牲キャッシュ・ラインが第1のクラスのアドレス範囲外にあるか否かを判定すること(306)、少なくとも1つの可能な犠牲キャッシュ・ラインが第1のクラスのアドレス範囲外にないという判定に応答して、キャッシュ・コントローラ(110)が、新しいキャッシュ・ライン(222)のキャッシュ(181)への挿入を拒否すること(330)を含む。
図3の方法において、キャッシュ・コントローラ(110)が、新しいキャッシュ・ライン(222)のアドレス(224)と既定アドレス範囲(226)との比較に基づいて新しいキャッシュ・ライン(222)の挿入を承認するか否かを判定すること(208)は、キャッシュ・コントローラ(110)によって、無効キャッシュ・ラインが利用可能であるか否かを判定すること(302)を含む。無効キャッシュ・ラインが利用可能であるか否かを判定すること(302)は、キャッシュ(181)内の特定のキャッシュ・ラインが期限切れであるかまたは無効化されているか否かを判定し、あらゆる無効化キャッシュ・ラインを識別することによって実施可能である。特定のキャッシュ・ラインは、もはや用いられていないか、または古くなったかもしくは破損した場合に、期限切れであるまたは無効化されているとすることができる。
図3の方法において、キャッシュ・コントローラ(110)が、新しいキャッシュ・ライン(222)のアドレス(224)と既定アドレス範囲(226)との比較に基づいて新しいキャッシュ・ライン(222)の挿入を承認するか否かを判定すること(208)は、無効キャッシュ・ラインが利用可能であるという判定に応答して、キャッシュ・コントローラ(110)が新しいキャッシュ・ライン(222)のキャッシュ(181)への挿入を承認すること(206)を含む。無効キャッシュ・ラインが利用可能であるという判定に応答して新しいキャッシュ・ライン(222)のキャッシュ(181)への挿入を承認すること(206)は、キャッシュ・コントローラ(110)から、第2のプロセッサ・セット(194)に関連付けられた第2の共有キャッシュ・レベル(109)内の別のキャッシュ・コントローラ(図示せず)に、要求(220)の承認を送信することによって、実施可能である。
図3の方法において、キャッシュ・コントローラ(110)が、新しいキャッシュ・ライン(222)のアドレス(224)と既定アドレス範囲(226)との比較に基づいて新しいキャッシュ・ライン(222)の挿入を承認するか否かを判定すること(208)は、無効キャッシュ・ラインが利用可能でないという判定に応答して、キャッシュ・コントローラ(110)が、新しいキャッシュ・ライン(222)のアドレス(224)が第1のクラスのアドレス範囲内にあるか否かを判定すること(304)を含む。新しいキャッシュ・ライン(222)のアドレス(224)が第1のクラスのアドレス範囲内にあるか否かの判定(304)は、第1のクラスのアドレス範囲に割り当てるアドレス範囲を示すユーザ・プログラマブル・エントリを受信し、第1のクラスのアドレス範囲にアドレス範囲を割り当て、新しいキャッシュ・ライン(222)のアドレス(224)と、第1のクラスのアドレス範囲を含む最上位アドレスおよび最下位アドレスとを比較することによって実施可能である。この場合、第1のクラスのアドレス範囲は、どのアドレス範囲で挿入を許可するかを示すように選択することができる。
キャッシュ・ラインを割り当てる特定のクラスは、特定のキャッシュ・ラインのアドレスに加えて他の考察事項に基づくようにすることができる。例えば、特定のキャッシュ・ラインをある共有キャッシュ・レベルから別の共有キャッシュ・レベルに移動させることに応じて、キャッシュ・ラインのアドレスを変更することなく、特定のキャッシュ・ラインを割り当てるクラスを変更することができる。
図3の方法において、キャッシュ・コントローラ(110)が、新しいキャッシュ・ライン(222)のアドレス(224)と既定アドレス範囲(226)との比較に基づいて新しいキャッシュ・ライン(222)の挿入を承認するか否かを判定すること(208)は、新しいキャッシュ・ライン(222)のアドレス(224)が第1のクラスのアドレス範囲内にあるという判定に応答して、キャッシュ・コントローラ(110)が、新しいキャッシュ・ライン(222)のキャッシュ(181)への挿入を承認すること(206)を含む。新しいキャッシュ・ライン(222)のアドレス(224)が第1のクラスのアドレス範囲内にあるという判定に応答して、新しいキャッシュ・ライン(222)のキャッシュ(181)への挿入を承認すること(206)は、キャッシュ・コントローラ(110)から、第2のプロセッサ・セット(194)に関連付けられた第2の共有キャッシュ・レベル(109)内の別のキャッシュ・コントローラ(図示せず)に、要求(220)の承認を送信することによって、実施可能である。
図3の方法において、キャッシュ・コントローラ(110)が、新しいキャッシュ・ライン(222)のアドレス(224)と既定アドレス範囲(226)との比較に基づいて新しいキャッシュ・ライン(222)の挿入を承認するか否かを判定すること(208)は、新しいキャッシュ・ライン(222)のアドレス(224)が第1のクラスのアドレス範囲内にないという判定に応答して、キャッシュ・コントローラ(110)が、少なくとも1つの可能な犠牲キャッシュ・ラインが第1のクラスのアドレス範囲外にあるか否かを判定すること(306)を含む。新しいキャッシュ・ライン(222)のアドレス(224)が第1のクラスのアドレス範囲内にないという判定に応答して、少なくとも1つの可能な犠牲キャッシュ・ラインが第1のクラスのアドレス範囲外にあるか否かを判定すること(306)は、第1のクラスのアドレス範囲に割り当てるアドレス範囲を示すユーザ・プログラマブル・エントリを受信し、第1のクラスのアドレス範囲にアドレス範囲を割り当て、キャッシュ(181)内のキャッシュ・ラインのアドレスと、第1のクラスのアドレス範囲を含む最上位アドレスおよび最上位アドレスとを比較し、どのキャッシュ・ラインが第1のクラスのアドレス範囲外のアドレスを有するかを識別し、識別されたキャッシュ・ラインを可能な犠牲キャッシュ・ラインとして標示することによって実施可能である。この場合、犠牲キャッシュ・ラインは、新しいキャッシュ・ラインによって置換される可能性があるキャッシュ・ラインである。
図3の方法において、キャッシュ・コントローラ(110)が、新しいキャッシュ・ライン(222)のアドレス(224)と既定アドレス範囲(226)との比較に基づいて新しいキャッシュ・ライン(222)の挿入を承認するか否かを判定すること(208)は、少なくとも1つの可能な犠牲キャッシュ・ラインが第1のクラスのアドレス範囲外にあるという判定に応答して、キャッシュ・コントローラ(110)が新しいキャッシュ・ライン(222)の挿入を承認すること(206)を含む。少なくとも1つの可能な犠牲キャッシュ・ラインが第1のクラスのアドレス範囲外にあるという判定に応答して、キャッシュ・コントローラ(110)が新しいキャッシュ・ライン(222)の挿入を承認すること(206)は、キャッシュ・コントローラ(110)から、第2のプロセッサ・セット(194)に関連付けられた第2の共有キャッシュ・レベル(109)内の別のキャッシュ・コントローラ(図示せず)に、要求(220)の承認を送信することによって実施可能である。
図3の方法において、キャッシュ・コントローラ(110)が、新しいキャッシュ・ライン(222)のアドレス(224)と既定アドレス範囲(226)との比較に基づいて新しいキャッシュ・ライン(222)の挿入を承認するか否かを判定すること(208)は、少なくとも1つの可能な犠牲キャッシュ・ラインが第1のクラスのアドレス範囲外にないという判定に応答して、キャッシュ・コントローラ(110)が新しいキャッシュ・ライン(222)のキャッシュ(181)への挿入を拒否すること(330)を含む。少なくとも1つの可能な犠牲キャッシュ・ラインが第1のクラスのアドレス範囲外にないという判定に応答して、キャッシュ・コントローラ(110)が新しいキャッシュ・ライン(222)のキャッシュ(181)への挿入を拒否すること(330)は、キャッシュ・コントローラ(110)から、第2のプロセッサ・セット(194)に関連付けられた第2の共有キャッシュ・レベル(109)内の別のキャッシュ・コントローラ(図示せず)に、要求(220)の拒否を送信することによって実施可能である。キャッシュ・コントローラ(110)が要求(220)を拒否した場合、新しいキャッシュ・ライン(222)はキャッシュ(181)に挿入されない。この場合、キャッシュ(181)内のキャッシュ・ラインは全て、新しいキャッシュ・ライン(222)よりも高い優先度を有する。
更に説明すると、図4は、本発明の実施形態に従ったキャッシュ管理のための更に別の例示的な方法を示すフローチャートを図示する。図4の方法は、図2の方法の以下の要素を含む。すなわち、新しいキャッシュ・ライン(222)が強制注入に関連付けられているという判定に応答して、キャッシュ・コントローラ(110)が、新しいキャッシュ・ライン(222)のキャッシュ(181)への挿入を承認すること(206)である。
図2の方法と異なる図4の要素を図4に点線で示す。更に具体的には、それらの要素は、キャッシュ・コントローラ(110)が、無効キャッシュ・ラインが利用可能であるか否かを判定すること(402)、無効キャッシュ・ラインが利用可能であるという判定に応答して、キャッシュ・コントローラ(110)が、無効キャッシュ・ラインを犠牲キャッシュ・ライン(350)として選択すること(404)、無効キャッシュ・ラインが利用可能であるという判定に応答して、キャッシュ・コントローラ(110)が、キャッシュ(181)内で、犠牲キャッシュ・ライン(350)を新しいキャッシュ・ライン(222)によって置換すること(406)、無効キャッシュ・ラインが利用可能でないという判定に応答して、キャッシュ・コントローラ(110)が、キャッシュ(181)が第2のクラスの犠牲キャッシュ・ラインを含むか否かを判定すること(408)、キャッシュが第2のクラスの犠牲キャッシュ・ラインを含むという判定に応答して、キャッシュ・コントローラ(110)が、第2のクラスの犠牲キャッシュ・ラインを犠牲キャッシュ・ライン(350)として選択すること(410)、キャッシュが第2のクラスの犠牲キャッシュ・ラインを含むという判定に応答して、キャッシュ・コントローラ(110)が、キャッシュ(181)内で、犠牲キャッシュ・ライン(350)を新しいキャッシュ・ライン(222)によって置換すること(412)、キャッシュが第2のクラスの犠牲キャッシュ・ラインを含まないという判定に応答して、キャッシュ・コントローラ(110)が、第1のクラスの犠牲キャッシュ・ラインを犠牲キャッシュ・ライン(350)として選択すること(414)、キャッシュが第2のクラスの犠牲キャッシュ・ラインを含まないという判定に応答して、キャッシュ・コントローラ(110)が、キャッシュ(181)内で、犠牲キャッシュ・ライン(350)を新しいキャッシュ・ライン(222)によって置換すること(416)を含む。
図4の方法において、新しいキャッシュ・ライン(222)をキャッシュ(181)に挿入することの承認(206)は、キャッシュ・コントローラ(110)によって、無効キャッシュ・ラインが利用可能であるか否かを判定すること(402)を含む。無効キャッシュ・ラインが利用可能であるか否かの判定(402)は、キャッシュ(181)内の特定のキャッシュ・ラインが期限切れであるかまたは無効化されているか否かを判定し、あらゆる無効化キャッシュ・ラインを識別することによって実施可能である。
図4の方法において、新しいキャッシュ・ライン(222)をキャッシュ(181)に挿入することの承認(206)は、無効キャッシュ・ラインが利用可能であるという判定に応答して、キャッシュ・コントローラ(110)が、無効キャッシュ・ラインを犠牲キャッシュ・ライン(350)として選択すること(404)を含む。無効キャッシュ・ラインが利用可能であるという判定に応答して、無効キャッシュ・ラインを犠牲キャッシュ・ライン(350)として選択すること(404)は、無効キャッシュ・ラインの少なくとも1つを犠牲キャッシュ・ラインとして識別し、犠牲キャッシュ・ラインとしての無効キャッシュ・ラインの識別をキャッシュ・コントローラ(110)に記憶することによって実施可能である。
図4の方法において、新しいキャッシュ・ライン(222)をキャッシュ(181)に挿入することの承認(206)は、無効キャッシュ・ラインが利用可能であるという判定に応答して、キャッシュ・コントローラ(110)が、キャッシュ(181)内で、犠牲キャッシュ・ライン(350)を新しいキャッシュ・ライン(222)によって置換すること(406)を含む。無効キャッシュ・ラインが利用可能であるという判定に応答して、キャッシュ(181)内で犠牲キャッシュ・ライン(350)を新しいキャッシュ・ライン(222)によって置換すること(406)は、犠牲キャッシュ・ライン(350)がどのキャッシュ物理位置を占有しているかを判定し、犠牲キャッシュ・ライン(350)が占有するキャッシュ物理地位に新しいキャッシュ・ライン(222)を記憶するためのコマンドをキャッシュ・コントローラ(110)からキャッシュ(181)に送信することによって、実施可能である。
図4の方法において、新しいキャッシュ・ライン(222)をキャッシュ(181)に挿入することの承認(206)は、無効キャッシュ・ラインが利用可能でないという判定に応答して、キャッシュ・コントローラ(110)が、キャッシュ(181)が第2のクラスの犠牲キャッシュ・ラインを含むか否かを判定すること(408)を含む。無効キャッシュ・ラインが利用可能でないという判定に応答して、キャッシュ(181)が第2のクラスの犠牲キャッシュ・ラインを含むか否かを判定すること(408)は、どのアドレス範囲を第2のクラスのアドレス範囲に関連付けるかを示す入力をユーザから受信し、そのアドレス範囲を第2のクラスのアドレス範囲に関連付け、キャッシュ(181)内のキャッシュ・ラインのいずれかが、第2のクラスのアドレス範囲に割り当てられたアドレス内のアドレスを含むか否かを判定することによって、実施可能である。この場合、第2のクラスの犠牲キャッシュ・ラインは、第2のクラスのアドレス範囲内にあるアドレスを有する。第2のクラスのアドレス範囲は、第1のクラスのアドレス範囲に関連付けられたアドレス範囲よりも優先度の低いアドレス範囲とすることができる。この場合、図4の方法では、第1のクラスの犠牲の前に第2のクラスの犠牲を置換することが試みられる。
図4の方法において、新しいキャッシュ・ライン(222)をキャッシュ(181)に挿入することの承認(206)は、キャッシュが第2のクラスの犠牲キャッシュ・ラインを含むという判定に応答して、キャッシュ・コントローラ(110)が、第2のクラスの犠牲キャッシュ・ラインを犠牲キャッシュ・ライン(350)として選択すること(410)を含む。キャッシュが第2のクラスの犠牲キャッシュ・ラインを含むという判定に応答して、第2のクラスの犠牲キャッシュ・ラインを犠牲キャッシュ・ライン(350)として選択すること(410)は、第2のクラスの犠牲キャッシュ・ラインの少なくとも1つを犠牲キャッシュ・ラインとして識別し、犠牲キャッシュ・ラインとしての選択した第2のクラスの犠牲キャッシュ・ラインの識別をキャッシュ・コントローラ(110)に記憶することによって実施可能である。
図4の方法において、新しいキャッシュ・ライン(222)をキャッシュ(181)に挿入することの承認(206)は、キャッシュが第2のクラスの犠牲キャッシュ・ラインを含むという判定に応答して、キャッシュ・コントローラ(110)が、キャッシュ(181)内で、犠牲キャッシュ・ライン(350)を新しいキャッシュ・ライン(222)によって置換すること(412)を含む。キャッシュ(181)が第2のクラスの犠牲キャッシュ・ラインを含むという判定に応答して、キャッシュ(181)内で、犠牲キャッシュ・ライン(350)を新しいキャッシュ・ライン(222)によって置換すること(412)は、犠牲キャッシュ・ライン(350)がどのキャッシュ物理位置を占有しているかを判定し、犠牲キャッシュ・ライン(350)が占有するキャッシュ物理地位に新しいキャッシュ・ライン(222)を記憶するためのコマンドをキャッシュ・コントローラ(110)からキャッシュ(181)に送信することによって、実施可能である。
図4の方法において、新しいキャッシュ・ライン(222)をキャッシュ(181)に挿入することの承認(206)は、キャッシュが第2のクラスの犠牲キャッシュ・ラインを含まないという判定に応答して、キャッシュ・コントローラ(110)が、第1のクラスの犠牲キャッシュ・ラインを犠牲キャッシュ・ライン(350)として選択すること(414)を含む。キャッシュが第2のクラスの犠牲キャッシュ・ラインを含まないという判定に応答して、第1のクラスの犠牲キャッシュ・ラインを犠牲キャッシュ・ライン(350)として選択すること(414)は、第1のクラスの犠牲キャッシュ・ラインの少なくとも1つを犠牲キャッシュ・ラインとして識別し、犠牲キャッシュ・ラインとしての選択した第1のクラスの犠牲キャッシュ・ラインの識別をキャッシュ・コントローラ(110)に記憶することによって実施可能である。
図4の方法において、新しいキャッシュ・ライン(222)をキャッシュ(181)に挿入することの承認(206)は、キャッシュが第2のクラスの犠牲キャッシュ・ラインを含まないという判定に応答して、キャッシュ・コントローラ(110)が、キャッシュ(181)内で、犠牲キャッシュ・ライン(350)を新しいキャッシュ・ライン(222)によって置換すること(416)を含む。キャッシュが第2のクラスの犠牲キャッシュ・ラインを含まないという判定に応答して、キャッシュ(181)内で、犠牲キャッシュ・ライン(350)を新しいキャッシュ・ライン(222)によって置換すること(416)は、犠牲キャッシュ・ライン(350)がどのキャッシュ物理位置を占有しているかを判定し、犠牲キャッシュ・ライン(350)が占有するキャッシュ物理地位に新しいキャッシュ・ライン(222)を記憶するためのコマンドをキャッシュ・コントローラ(110)からキャッシュ(181)に送信することによって、実施可能である。
本発明の例示的な実施形態について、主として、キャッシュ管理のための完全に機能できるコンピュータ・システムの文脈において説明している。しかしながら、いずれかの適切なデータ処理システムと共に用いるためのコンピュータ読み取り可能記憶媒体上に配置されたコンピュータ・プログラムにおいて本発明を具現化することが可能であることは、当業者には認められよう。かかるコンピュータ読み取り可能記憶媒体は、磁気媒体、光媒体、または他の適切な媒体を含む機械読み取り可能情報のためのいずれかの記憶媒体とすることができる。かかる媒体の例には、ハード・ドライブまたはディスケットにおける磁気ディスク、光ドライブのコンパクト・ディスク、磁気テープ、および当業者に想起される他のものが含まれる。適切なプログラミング手段を有するいかなるコンピュータ・システムでも、コンピュータ・プログラムにおいて具現化されたような本発明の方法のステップを実行可能であることは、当業者には速やかに認められよう。また、本明細書に記載された例示的な実施形態のいくつかは、コンピュータ・ハードウェア上にインストールされて実行するソフトウェアに合わせたものであるが、ファームウェアとしてまたはハードウェアとして実施された代替的な実施形態が充分に本発明の範囲内であることは、当業者には認められよう。
当業者には認められるであろうが、本発明の態様は、システム、方法、またはコンピュータ・プログラムとして具現化することができる。従って、本発明の態様は、全体的にハードウェアの実施形態、全体的にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)、または、ソフトウェアおよびハードウェアの態様を組み合わせた実施形態という形態を取ることができ、それらは全て本明細書において、「回路」、「モジュール」、または「システム」と一般的に称することができる。更に、本発明の態様は、具現化されたコンピュータ読み取り可能プログラム・コードを有する1つ以上のコンピュータ読み取り可能媒体において具現化されるコンピュータ・プログラムの形態を取ることも可能である。
1つ以上のコンピュータ読み取り可能媒体のあらゆる組み合わせを利用することができる。コンピュータ読み取り可能媒体は、コンピュータ読み取り可能信号媒体またはコンピュータ読み取り可能記憶媒体とすることができる。コンピュータ読み取り可能記憶媒体は例えば、限定ではないが、電子、磁気、光、電磁、赤外線、または半導体のシステム、装置、デバイス、または前述のもののいずれかの適切な組み合わせとすることができる。コンピュータ読み取り可能記憶媒体の更に具体的な例(非網羅的な列挙)は、以下を含む。すなわち、1本以上のワイヤを含む電気的接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ(CD−ROM)、光記憶デバイス、磁気記憶デバイス、または前述のもののいずれかの適切な組み合わせである。この文書の文脈において、コンピュータ読み取り可能記憶媒体は、命令実行システム、装置、またはデバイスによってまたはそれと接続して用いるためにプログラムを含有または記憶することが可能ないずれかのタンジブルな媒体とすることができる。
コンピュータ読み取り可能信号媒体は、例えばベースバンドにおいてまたは搬送波の一部として、具現化されたコンピュータ読み取り可能プログラム・コードを有する伝播データ信号を含むことができる。かかる伝播信号は様々な形態のいずれかを取ることができ、それらは限定ではないが、電磁、光、またはそれらのいずれかの適切な組み合わせを含む。コンピュータ読み取り可能信号媒体は、コンピュータ読み取り可能記憶媒体でないが、命令実行システム、装置、またはデバイスによってまたはそれと接続して用いるためにプログラムを伝達、伝播、または転送することが可能ないずれかのコンピュータ読み取り可能媒体とすることができる。
コンピュータ読み取り可能媒体上で具現化されるプログラム・コードは、限定ではないが、無線、有線、光ファイバ・ケーブル、RF等、または前述のもののいずれかの適切な組み合わせを含むいずれかの適切な媒体を用いて伝送することができる。
本発明の態様の動作を実行するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++等のオブジェクト指向プログラミング言語、および、「C」プログラミング言語または同様のプログラミング言語等の従来の手順プログラミング言語を含む1つ以上のプログラミング言語のいずれかの組み合わせにおいて記述することができる。プログラム・コードは、全体的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロンのソフトウェア・パッケージとして、部分的にユーザのコンピュータ上でおよび部分的に遠隔コンピュータ上で、または全体的に遠隔コンピュータもしくはサーバ上で、実行することができる。後者の場合、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含むいずれかのタイプのネットワークを介してユーザのコンピュータに接続することができ、または、接続は、(例えばインターネット・サービス・プロバイダを用いてインターネットを介して)外部コンピュータに対して行うことができる。
本発明の実施形態に従った方法、装置(システム)、およびコンピュータ・プログラムのフローチャート図またはブロック図あるいはその両方を参照して、本発明の態様について記載している。フローチャート図またはブロック図あるいはその両方の各ブロックならびにフローチャート図またはブロック図あるいはその両方におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実施可能であることは理解されよう。これらのコンピュータ・プログラム命令は、汎用コンピュータ、特殊目的コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されて機械を生成することができ、これによって、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能/行為を実施するための手段を生成するようになっている。
また、これらのコンピュータ・プログラム命令はコンピュータ読み取り可能媒体に記憶することができ、これによって、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスに特定の方法で機能するように指示することができ、これにより、コンピュータ読み取り可能媒体に記憶された命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能/行為を実施する命令を含む製造品を生成するようになっている。
また、コンピュータ・プログラム命令を、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードして、そのコンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させてコンピュータ実施プロセスを生成することができ、これによって、コンピュータまたは他のプログラマブル装置上で実行する命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能/行為を実施するためのプロセスを提供するようになっている。
上述した図面におけるフローチャートおよびブロック図は、本発明の様々な実施形態に従ったシステム、方法、およびコンピュータ・プログラムの可能な実施のアーキテクチャ、機能性、および動作を示す。この点で、フローチャートまたはブロック図における各ブロックは、規定された論理機能(複数の機能)を実施するための1つ以上の実行可能命令を含むコードのモジュール、セグメント、または一部を表すことができる。また、いくつかの代替的な実施において、ブロックに明記した機能は、図面に明記した順序どおりでなく発生する場合があることに留意すべきである。例えば、関与する機能性に応じて、連続して示した2つのブロックは実際には実質的に同時に実行されることがあり、またはブロックは時に逆の順序で実行される場合がある。また、ブロック図またはフローチャートあるいはその両方の各ブロック、およびブロック図またはフローチャートあるいはその両方におけるブロックの組み合わせは、規定された機能もしくは行為を実行する特殊目的ハードウェア・ベースのシステム、または特殊目的ハードウェアおよびコンピュータ命令の組み合わせによって実施可能であることに留意すべきである。
キャッシュ制御動作のための要求は、新しいキャッシュ・ラインをキャッシュに挿入することを含む。キャッシュ制御動作は、キャッシュに関わるいずれの数の動作も含むことができ、新しいキャッシュ・ラインをキャッシュに挿入することには限定されないことは、当業者には認められよう。前述の記載から、本発明の真の精神から逸脱することなくその様々な実施形態において変形および変更を実行可能であることは理解されよう。本明細書における記載は例示の目的のためだけのものであり、限定の意味で解釈されるべきではない。本発明の範囲は、以下の特許請求の範囲の文言によってのみ限定される。
110 マルチプロセッシング・コンピュータ
102 プロセッサ
104 コア
106 MMU
108 第1の共有キャッシュ・レベル
109 第2の共有キャッシュ・レベル
110 キャッシュ・コントローラ
112 キャッシュ・ディレクトリ
114 メイン・メモリ
181 L2キャッシュ
193 第1のプロセッサ・セット
194 第2のプロセッサ・セット

Claims (8)

  1. キャッシュ管理の方法であって、
    新しいキャッシュ・ラインをキャッシュに挿入する為に、第1のキャッシュ・コントローラによって、キャッシュ制御動作のための要求を受信するステップであって、前記キャッシュは前記第1のキャッシュ・コントローラによって第1のプロセッサに接続されており、前記要求が第2のキャッシュ・コントローラを介して第2のプロセッサから受信される、前記受信するステップと、
    前記第1のキャッシュ・コントローラによって、前記要求が強制キャッシュ注入を表すか否かを判定するステップと、
    前記要求が強制キャッシュ注入を表すという判定に応答して、前記第1のキャッシュ・コントローラによって、前記新しいキャッシュ・ラインの前記キャッシュへの挿入を承認するステップと、
    前記要求が強制キャッシュ注入を表していないという判定に応答して、前記第1のキャッシュ・コントローラによって、前記新しいキャッシュ・ラインのアドレスと既定アドレス範囲との比較に基づいて、前記新しいキャッシュ・ラインの前記挿入を承認するか否かを判定するステップ
    を含む、前記方法。
  2. 前記新しいキャッシュ・ラインのアドレスと前記既定アドレス範囲との比較に基づいて、前記新しいキャッシュ・ラインの前記キャッシュへの前記挿入を承認するか否かを判定するステップが、
    前記第1のキャッシュ・コントローラによって、無効キャッシュ・ラインが利用可能であるか否かを判定するステップと、
    前記無効キャッシュ・ラインが利用可能であるという判定に応答して、前記第1のキャッシュ・コントローラによって、前記新しいキャッシュ・ラインの前記キャッシュへの前記挿入を承認するステップ
    を含む、請求項1に記載の方法。
  3. 前記新しいキャッシュ・ラインのアドレスと前記既定アドレス範囲との比較に基づいて、前記新しいキャッシュ・ラインの前記キャッシュへの前記挿入を承認するか否かを判定するステップが、
    前記無効キャッシュ・ラインが利用可能でないという判定に応答して、前記第1のキャッシュ・コントローラによって、前記新しいキャッシュ・ラインの前記アドレスが第1のクラスのアドレス範囲内にあるか否かを判定するステップと、
    前記新しいキャッシュ・ラインの前記アドレスが前記第1のクラスのアドレス範囲内にあるという判定に応答して、前記第1のキャッシュ・コントローラによって、前記新しいキャッシュ・ラインの前記キャッシュへの前記挿入を承認するステップ
    を更に含む、請求項に記載の方法。
  4. 前記新しいキャッシュ・ラインのアドレスと前記既定アドレス範囲との比較に基づいて、前記新しいキャッシュ・ラインの前記キャッシュへの前記挿入を承認するか否かを判定するステップが、
    前記新しいキャッシュ・ラインの前記アドレスが前記第1のクラスのアドレス範囲内にないという判定に応答して、前記第1のキャッシュ・コントローラによって、少なくとも1つの可能な犠牲キャッシュ・ラインが前記第1のクラスのアドレス範囲外にあるか否かを判定するステップと、
    前記少なくとも1つの可能な犠牲キャッシュ・ラインが前記第1のクラスのアドレス範囲外にあるという判定に応答して、前記第1のキャッシュ・コントローラによって、前記新しいキャッシュ・ラインの前記挿入を承認するステップと、
    前記少なくとも1つの可能な犠牲キャッシュ・ラインが前記第1のクラスのアドレス範囲外にないという判定に応答して、前記第1のキャッシュ・コントローラによって、前記新しいキャッシュ・ラインの前記キャッシュへの前記挿入を拒否するステップ
    を更に含む、請求項に記載の方法。
  5. 前記新しいキャッシュ・ラインの前記キャッシュへの前記挿入を承認するステップが、
    前記第1のキャッシュ・コントローラによって、無効キャッシュ・ラインが利用可能であるか否かを判定するステップと、
    前記無効キャッシュ・ラインが利用可能であるという判定に応答して、前記第1のキャッシュ・コントローラによって、前記無効キャッシュ・ラインを犠牲キャッシュ・ラインとして選択し、前記キャッシュ内で、前記第1のキャッシュ・コントローラによって、前記犠牲キャッシュ・ラインを前記新しいキャッシュ・ラインによって置換するステップ
    を含む、請求項1に記載の方法。
  6. 前記新しいキャッシュ・ラインの前記キャッシュへの前記挿入を承認するステップが、
    無効キャッシュ・ラインが利用可能でないという判定に応答して、前記第1のキャッシュ・コントローラによって、前記キャッシュが第2のクラスの犠牲キャッシュ・ラインを含むか否かを判定するステップであって、前記第2のクラスの犠牲キャッシュ・ラインが第2のクラスのアドレス範囲内にあるアドレスを有する、前記判定するステップと、
    前記キャッシュが第2のクラスの犠牲キャッシュ・ラインを含むという判定に応答して、前記第1のキャッシュ・コントローラによって、前記第2のクラスの犠牲キャッシュ・ラインを前記犠牲キャッシュ・ラインとして選択し、前記キャッシュ内で、前記第1のキャッシュ・コントローラによって、前記犠牲キャッシュ・ラインを前記新しいキャッシュ・ラインによって置換するステップと、
    前記キャッシュが第2のクラスの犠牲キャッシュ・ラインを含まないという判定に応答して、前記第1のキャッシュ・コントローラによって、第1のクラスの犠牲キャッシュ・ラインを前記犠牲キャッシュ・ラインとして選択し、前記キャッシュ内で、前記第1のキャッシュ・コントローラによって、前記犠牲キャッシュ・ラインを前記新しいキャッシュ・ラインによって置換するステップと
    を更に含む、請求項5に記載の方法。
  7. キャッシュ管理のための、キャッシュ・メモリを制御するキャッシュ・コントローラを含む装置であって、第1のキャッシュ・コントローラが、請求項1〜6のいずれか一項に記載の方法の各ステップを実行することによって機能するように構成されている、前記装置。
  8. コンピュータ・プログラムであって、コンピュータに、請求項1〜6のいずれか一項に記載の方法の各ステップを実行させる前記コンピュータ・プログラム。
JP2011259551A 2010-12-16 2011-11-28 キャッシュ管理のための方法、装置、およびコンピュータ・プログラム Expired - Fee Related JP5607603B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/969,644 US8656106B2 (en) 2010-12-16 2010-12-16 Managing unforced injections of cache lines into a cache utilizing predetermined address ranges
US12/969644 2010-12-16

Publications (3)

Publication Number Publication Date
JP2012128846A JP2012128846A (ja) 2012-07-05
JP2012128846A5 JP2012128846A5 (ja) 2014-08-07
JP5607603B2 true JP5607603B2 (ja) 2014-10-15

Family

ID=46235974

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011259551A Expired - Fee Related JP5607603B2 (ja) 2010-12-16 2011-11-28 キャッシュ管理のための方法、装置、およびコンピュータ・プログラム

Country Status (2)

Country Link
US (1) US8656106B2 (ja)
JP (1) JP5607603B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10303605B2 (en) 2016-07-20 2019-05-28 Intel Corporation Increasing invalid to modified protocol occurrences in a computing system
US10133669B2 (en) 2016-11-15 2018-11-20 Intel Corporation Sequential data writes to increase invalid to modified protocol occurrences in a computing system
CN106909518B (zh) * 2017-01-24 2020-06-26 朗坤智慧科技股份有限公司 一种实时数据缓存机制
US10705590B2 (en) * 2017-11-28 2020-07-07 Google Llc Power-conserving cache memory usage
US10909046B2 (en) 2018-06-15 2021-02-02 Micron Technology, Inc. Memory access determination

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5956744A (en) * 1995-09-08 1999-09-21 Texas Instruments Incorporated Memory configuration cache with multilevel hierarchy least recently used cache entry replacement
US7069390B2 (en) 2003-09-04 2006-06-27 International Business Machines Corporation Implementation of a pseudo-LRU algorithm in a partitioned cache
US8127088B2 (en) * 2005-01-27 2012-02-28 Hewlett-Packard Development Company, L.P. Intelligent cache management
US20100011165A1 (en) 2008-07-11 2010-01-14 Telefonaktiebolaget Lm Ericsson (Publ) Cache management systems and methods

Also Published As

Publication number Publication date
US20120159086A1 (en) 2012-06-21
JP2012128846A (ja) 2012-07-05
US8656106B2 (en) 2014-02-18

Similar Documents

Publication Publication Date Title
US20180300258A1 (en) Access rank aware cache replacement policy
JP5623370B2 (ja) キャッシュ・メモリに対する直接アクセスのための装置および方法
US20080086599A1 (en) Method to retain critical data in a cache in order to increase application performance
US20110072218A1 (en) Prefetch promotion mechanism to reduce cache pollution
US8762651B2 (en) Maintaining cache coherence in a multi-node, symmetric multiprocessing computer
US10719448B2 (en) Cache devices with configurable access policies and control methods thereof
CN111263934B (zh) 至少具有三个缓存级别的缓存层级的混合低级缓存包含策略
US9645931B2 (en) Filtering snoop traffic in a multiprocessor computing system
JP2008513907A (ja) 統合キャッシュにおける望ましくない置換動作を低減するための先行犠牲選択のための方法及び装置
JP5607603B2 (ja) キャッシュ管理のための方法、装置、およびコンピュータ・プログラム
US8364904B2 (en) Horizontal cache persistence in a multi-compute node, symmetric multiprocessing computer
US20110320720A1 (en) Cache Line Replacement In A Symmetric Multiprocessing Computer
JPWO2010035425A1 (ja) キャッシュメモリ、その制御方法及びメモリシステム
US20150143045A1 (en) Cache control apparatus and method
US20110314228A1 (en) Maintaining Cache Coherence In A Multi-Node, Symmetric Multiprocessing Computer
US12026099B2 (en) System and method for storing cache location information for cache entry transfer
US7844777B2 (en) Cache for a host controller to store command header information
CN105095104B (zh) 数据缓存处理方法及装置
CN110716887B (zh) 一种支持写暗示的硬件高速缓存数据装入方法
KR100505695B1 (ko) 동적으로 할당 또는 해제되는 버퍼를 가지는 캐쉬 메모리장치, 이를 구비한 디지털 데이터 처리 시스템 및 그 방법
JPWO2005050454A1 (ja) キャッシュメモリおよびその制御方法
KR102465851B1 (ko) 캐시 엔트리에서 메모리 액세스 요청의 펜던시를 식별하기 위한 시스템 및 방법
US20130173862A1 (en) Method for cleaning cache of processor and associated processor
US9075732B2 (en) Data caching method
JP2006285727A (ja) キャッシュメモリ装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140528

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140609

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140609

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20140609

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20140609

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140609

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20140707

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140718

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140724

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140724

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140813

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140813

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20140813

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140828

R150 Certificate of patent or registration of utility model

Ref document number: 5607603

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees