JP6663542B2 - 遅延キャッシュの利用のためのシステム及び方法 - Google Patents

遅延キャッシュの利用のためのシステム及び方法 Download PDF

Info

Publication number
JP6663542B2
JP6663542B2 JP2019533295A JP2019533295A JP6663542B2 JP 6663542 B2 JP6663542 B2 JP 6663542B2 JP 2019533295 A JP2019533295 A JP 2019533295A JP 2019533295 A JP2019533295 A JP 2019533295A JP 6663542 B2 JP6663542 B2 JP 6663542B2
Authority
JP
Japan
Prior art keywords
level cache
low
cache
threshold
level
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.)
Active
Application number
JP2019533295A
Other languages
English (en)
Other versions
JP2019530112A (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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2019530112A publication Critical patent/JP2019530112A/ja
Application granted granted Critical
Publication of JP6663542B2 publication Critical patent/JP6663542B2/ja
Active 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • 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/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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のシステムにおける遅延キャッシング処理の別の例を示す図である。 いくつかの実施形態による、フラッシュテーブルを利用する遅延キャッシング処理に基づくメモリ管理の例示的な方法を示すフロー図である。 いくつかの実施形態による、フラッシュテーブルを使用してキャッシュをフラッシュする例示的な方法を示すフロー図である。
異なる図面における同じ符号の使用は、類似又は同一のアイテムを示す。
図1〜図8は、キャッシュが後に無効にされる場合にキャッシュをフラッシュする際に発生する電力及びサイクルコストを低減するように、キャッシュ有効化後の遅延キャッシング処理を利用したキャッシュ管理の例示的なシステム及び方法を示す図である。例示的な実施形態では、システムは、1つ以上のプロセッサコアと、少なくとも低レベルキャッシュ及び高レベルキャッシュを含むメモリサブシステムと、メモリコントローラと、システムメモリと、を含む。高レベルキャッシュは、1つ以上の関連するプロセッサコアでのアクティビティに応じて有効化される(すなわち、低電力状態から高電力状態に変更される)。システムは、高レベルキャッシュの有効化に応じて、低レベルキャッシュから転送又は削除されたキャッシュラインをカウントする。このような転送又は削除されたキャッシュラインは、本明細書において「低レベルキャッシュビクティム」と呼ばれる。低レベルキャッシュビクティムのカウントが指定された閾値を超えていない間、低レベルキャッシュビクティムは、システムメモリに送られ、例えば高レベルキャッシュには書き込まれない。カウントが閾値に達すると、後続の低レベルキャッシュビクティムは、高レベルキャッシュに記憶されるのを許可される。したがって、高レベルキャッシュへの低レベルキャッシュビクティムのキャッシングは、低レベルキャッシュビクティムの閾値に達するまで遅延される。このように、高レベルキャッシュは、有効化後の長い間、空のままであり、したがって、高レベルキャッシュが有効化直後に無効にされた場合、高レベルキャッシュは、有効なキャッシュラインを検索して高レベルキャッシュからシステムメモリに転送する時間及びエネルギーを費やすことなく、より容易に無効状態に移行される。
代替の実施形態においては、システムは、高レベルキャッシュが有効になると、高レベルキャッシュの有効化後に生じた低レベルキャッシュビクティムをカウントする。カウントが閾値を超えていない間、低レベルキャッシュビクティムは、高レベルキャッシュに記憶され、キャッシュレベルビクティムを記憶する高レベルキャッシュのキャッシュラインアドレス又は他の場所のリスト(このリストは、本明細書において「フラッシュテーブル」と呼ばれる)がシステムに記憶される。オプションで、メモリコントローラは、カウントが閾値を超えたか否かを示すインジケータをさらに記憶する。高レベルキャッシュが無効にされ、カウントが閾値を超えていない場合、システムは、無効化手順を実施する。無効化手順は、フラッシュテーブルにアクセスして、フラッシュテーブルに記憶された特定のキャッシュラインアドレスに関連する高レベルキャッシュのキャッシュラインをフラッシュする。或いは、高レベルキャッシュが無効にされるときにカウントが閾値を超えている場合、メモリは、異なる無効化手順に従って無効にされる。異なる無効化手順は、例えば、有効なビットを追跡することと、キャッシュビクティムの記憶に使用された又はキャッシュビクティムに占有されたウェイ又は他の領域を識別することと、低レベルキャッシュビクティムの記憶に利用された高レベルキャッシュの識別されたウェイをフラッシュすることと、高レベルキャッシュを無効にすることと、に基づく手順である。したがって、短期間の高電力状態の後に低電力状態に移行する前に、有効なキャッシュラインをより容易に識別及び転送することができ、電力状態の移行に関連する時間及び電力消費を低減することができる。
図1は、少なくともいくつかの実施形態による処理システム100を示す図である。図示した例では、処理システム100は、コンピュータ複合体102と、キャッシュ階層104と、メモリコントローラ106と、サウスブリッジ108と、を含む。コンピュータ複合体102は、複数のプロセッサコア(例えば、4つのプロセッサコア111,112,113,114等)を含む。プロセッサコアは、例えば、中央処理装置(CPU)コア、グラフィックス処理装置(GPU)コア、デジタル信号プロセッサ(DSP)コア又はこれらの組み合わせを含む。コンピュータ複合体102のプロセッサコアの数は、4より少なくてもよいし、多くてもよいことを理解されたい。
メモリコントローラ106は、キャッシュ階層104とシステムメモリ116との間のインタフェースとして動作する。したがって、キャッシュ階層104にキャッシュされるデータは、通常、キャッシュラインと呼ばれるデータのブロックとして操作され、システムメモリ116の物理アドレスを用いてアドレス指定されるか、そうでなければメモリ階層内に配置される。キャッシュラインは、キャッシュ階層104からのメモリ要求に応じて、メモリコントローラ106によってシステムメモリ116からアクセスされる。同様に、変更されたデータを含むキャッシュラインがキャッシュ階層104からエビクトされ、これにより、システムメモリ116内で更新する必要がある場合、メモリコントローラ106は、このライトバック処理を管理する。サウスブリッジ108は、キャッシュ階層104と、メモリコントローラ106と、処理システム100の1つ以上の周辺機器118(例えば、ネットワークインタフェース、キーボード、マウス、ディスプレイ及び他の入力/出力デバイス等)と、の間のインタフェースとして動作する。
キャッシュ階層104は、2つ以上のレベルのキャッシュを含む。図示した例では、キャッシュ階層104は、3つのキャッシュレベル(すなわち、レベル1(L1)、レベル2(L2)及びレベル3(L3))を含む。L1の場合、コア複合体102は、小さいプライベートキャッシュを処理コア毎に実装し、これらは、プロセッサコア111〜114のうち対応するコアに関連するL1キャッシュ121,122,123,124として示されている。L2の場合、コア複合体102は、より大きいプライベートキャッシュをプロセッサ毎に実装し、これらは、プロセッサコア111〜114にそれぞれ対応するL2キャッシュ131,132,133,134として示されている。L2キャッシュ131〜134の各々は、対応するプロセッサコアに対してプライベートであるが、キャッシュ階層104は、L2キャッシュ131〜134間のコヒーレンシを維持するように動作する。いくつかの実施形態では、L2キャッシュ131〜134は、例えば、ダイレクトマップキャッシュ又はnウェイセットアソシアティブキャッシュを含む。
L3キャッシングレベルの場合、キャッシュ階層104は、コンピュータ複合体102のプロセッサコアによって共有され、これにより少なくともL2キャッシュ131〜134によって共有されるL3キャッシュ140を実装する。L3キャッシュ140は、L3コントローラ142と、複数のインデックス及び複数の対応するウェイを含むL3データアレイと、を実装しており、各ウェイは、対応するインデックスの対応するキャッシュラインを記憶し、L3タグアレイは、各インデックス/ウェイに関連するタグ情報を記憶する。L3データアレイ及びL3タグアレイは、本明細書ではまとめて示されており、L3データ/タグアレイ144と呼ばれる。以下の目的のために、L3キャッシュ140は、高レベルキャッシュとみなされ、L1キャッシュ121〜124及びL2キャッシュ131〜134は、(L3キャッシュ140と比較して)低レベルキャッシュとみなされる。
以下により詳細に説明するように、例えばL3キャッシュ140等の高レベルキャッシュが、1つ以上の関連するプロセッサコア111〜114でのアクティビティに応じて有効化されると(すなわち、低電力状態から高電力状態に変換されると)、カウンタ110は、L3キャッシュ140の有効化後に1つ以上の低レベルキャッシュからエビクトされたキャッシュライン(すなわち、「低レベルキャッシュビクティム」)のカウントを開始する。例えば、カウントは、L1キャッシュ121〜124又はL2キャッシュ131〜134から除去されたL2キャッシュビクティムのカウント、又は、L1及びL2キャッシュビクティムのカウントを含む。カウンタ110は、例えば、L3キャッシュ140内(例えば、図1に示すように、L3コントローラ142内)、又は、L3キャッシュ140の外部のハードウェア(例えば、メモリコントローラ106)に実装されてもよい。
いくつかの実施形態では、低レベルキャッシュビクティムのカウントが閾値を超えない間、キャッシュ階層104は、低レベルキャッシュビクティムがL3キャッシュ140にキャッシュされるのを抑制し、これにより、各低レベルキャッシュビクティムは、代わりに、例えばL3コントローラ142を用いてシステムメモリ116に転送される。しかしながら、低レベルキャッシュビクティムのカウントがこの閾値以上になると、キャッシュ階層104は、後続の低レベルキャッシュビクティムがL3キャッシュ140にキャッシュされるのを可能にする。したがって、このアプローチにおいては、L3キャッシュ140は、低レベルキャッシュから生じた低レベルキャッシュビクティムの第1閾値数の間、「空」(すなわち、有効なキャッシュラインが無い)のままである。したがって、閾値数の低レベルキャッシュビクティムが低レベルキャッシュからエビクトされる前にL3キャッシュ140が再度無効にされる場合、L3キャッシュ140をフラッシュする必要なしにL3キャッシュ140を無効にすることができる。
説明のために、図2に示す特定の例を参照すると、低レベルキャッシュビクティム250は、L3キャッシュ140の有効化後に、低レベルキャッシュ(例えば、L2キャッシュ131〜134)からエビクトされる。図示するように、L3キャッシュ140は、低レベルキャッシュのセット(例えば、L2キャッシュ131〜134)によって共有されている。したがって、場合によっては、この低レベルキャッシュビクティム250のセットは、共有された高レベルキャッシュに関連する低レベルキャッシュの各々からの累積した低レベルキャッシュビクティムのセットである。或いは、低レベルキャッシュビクティム250のセットは、1つの低レベルキャッシュによって生成され、専用の高レベルキャッシュに提供される。図示するように、L3キャッシュ140の有効化後に、閾値数「N」以下の数の低レベルキャッシュビクティム250の最初のサブセット252は、L3キャッシュ140にキャッシュされることなくシステムメモリ116に送信され、図示するサブセット254の低レベルキャッシュビクティム250等のように、この閾値数Nの後の後続の低レベルキャッシュビクティム250は、L3キャッシュ140にキャッシングされるのを許可される。
関連するプロセッサコアがパワーゲーティング状態である間、高レベルキャッシュ(例えば、L3キャッシュ)が無効にされ、1つ以上の関連するプロセッサコアがアクティブである場合に有効にされるシステムでは、高レベルキャッシュは、キャッシュが空(すなわち、有効なキャッシュラインを含まない)の場合に、より速く無効にされ得る。プロセッサコア及び関連する高レベルキャッシュが頻繁に起動及び停止するシステムでは、本明細書で説明するように、短期間のアクティビティ中に高レベルキャッシュをバイパスすることによって、高レベルキャッシュの無効化に関連する電力消費を低減し、時間を短縮することができる。したがって、図2に示す例では、N個の低レベルキャッシュビクティム250が生じる前にL3キャッシュ140の無効化が行われると、L3キャッシュ140が空であることから、最初にL3キャッシュ140の有効なキャッシュラインをフラッシュする必要なく無効化する準備ができる。これにより、L3キャッシュ140を無効にするときに消費される電力を低減する。
図3は、いくつかの実施形態による、高レベルキャッシュの有効化後に遅延キャッシングを実施する方法300を示す図である。方法300は、ブロック302に示すように、高レベルキャッシュ(例えば、図1のL3キャッシュ140)の有効化によって開始する。一例では、高レベルキャッシュは、関連するプロセッサコア又は関連する低レベルキャッシュでのアクティビティに応じて有効化される。カウンタ110は、高レベルキャッシュの有効化に応じて、ブロック304に示すように、低レベルキャッシュ(例えば、L2キャッシュ131〜134)から生じた低レベルキャッシュビクティムのカウントを開始する。
(ブロック306に示すように)低レベルキャッシュビクティムが低レベルキャッシュから転送されると、L3コントローラ142は、ブロック308に示すように、低レベルキャッシュビクティムが生じる毎に現在のカウントを1つずつインクリメントし(カウント=カウント+1)、次に、ブロック310に示すように、低レベルキャッシュビクティムの現在のカウントを閾値と比較する。現在のカウントが閾値を超えない場合、高レベルキャッシュへのアクセスが許可されないため、低レベルキャッシュビクティムは、ブロック312に示すように、高レベルキャッシュのストレージをバイパスして、システムメモリ又は高レベルキャッシュ以外のキャッシュに送信される。但し、低レベルキャッシュビクティムに関連する現在のカウントが閾値を超えた場合(すなわち、高レベルキャッシュの有効化後に少なくともN個の低レベルキャッシュビクティムが生じた場合)、高レベルキャッシュへのアクセスが許可され、これにより、低レベルキャッシュビクティムは、ブロック314に示すように、高レベルキャッシュに記憶される。例えば、低レベルキャッシュビクティムは、ウェイ有効ビットを用いて有効なキャッシュラインを識別する等の従来のプロトコルを用いて、高レベルキャッシュに書き込まれる。
したがって、方法300で示すように、高レベルキャッシュの起動後に最初のN個(N=閾値)の低レベルビクティムが高レベルキャッシュに記憶されるのを抑制することによって、高レベルキャッシュは、初期の期間又は最初の数の低レベルキャッシュビクティムが生じる間、空のままである。よって、短期間のアクティビティ後に高レベルキャッシュを無効にする場合、高レベルキャッシュが空である可能性が高くなり、これにより、高レベルキャッシュを無効にする前のフラッシュ手順を回避することができる。
いくつかの実施態様では、閾値は、高レベルキャッシュの複数回の有効化に亘る静的な数である。いくつかの実施形態では、この静的な数は、システムの予想される使用に基づいて設定されてもよいし、モデリング又はシミュレーションを通して決定されてもよい。或いは、閾値は、例えば、高レベルキャッシュの使用履歴又は低レベルキャッシュビクティムのカウントに少なくとも部分的に基づいて、動的に決定される。例えば、図4に示すように、方法400は、ブロック402に示すように、L3コントローラ142が高レベルキャッシュの使用を追跡することを含む。或いは、メモリコントローラ106は、高レベルキャッシュの使用を追跡して、方法400の態様を実施する。一例では、L3コントローラ142は、ウェイ有効ビットの履歴を追跡して、高レベルキャッシュの使用履歴を決定する。一例では、有効ビット履歴は、有効ビットの使用を高レベルキャッシュの以前のアクティビティ期間と関連付ける。他の例では、アクティブ期間中に転送された低レベルキャッシュビクティムの数又はカウントが追跡される。例えば、キャッシュビクティムのカウント履歴は、低レベルビクティムカウントを以前のアクティビティ期間と関連付ける。
ブロック404に示すように、L3コントローラ142は、有効ビット履歴又はビクティムカウント履歴等の高レベルキャッシュビクティム履歴を、L3コントローラ142又はメモリコントローラ106のテーブル又は他のデータ構造に記憶する。ブロック406に示すように、L3コントローラ142又はメモリコントローラ106は、キャッシュビクティム履歴に少なくとも部分的に基づいて、閾値を決定する。例えば、閾値は、以前のアクティビティ期間中に低レベルキャッシュから転送された低レベルキャッシュビクティムのカウントに少なくとも部分的に基づいて決定される。他の例では、ウェイ有効ビット又はセクタ有効ビットの数に基づく高レベルキャッシュ使用の履歴を用いて、閾値が決定される。さらなる例では、閾値は、閾値に対する上限制約又は閾値に対する下限制約によってさらに影響を受ける。例えば、閾値が使用履歴に基づいて動的に決定される場合、L3コントローラ142は、閾値が上限制約より大きい数に設定されないようにしたり、閾値が下限制約より小さい数に設定されないようにする。いくつかの実施形態では、閾値を決定することは、パワーダウンするための電力消費又はクロックサイクル数を高レベルキャッシュ使用履歴に関連付けるアルゴリズムに基づいて、閾値を決定することをさらに含む。
このように、閾値は、上限制約及び下限制約によって制約された以前のアクティビティ期間に関連する低レベルキャッシュビクティムのカウント履歴又はウェイ有効ビット若しくはセクタ有効ビットの履歴等の使用履歴データに依存する例えばルックアップテーブル、アルゴリズム、ヒューリスティクス又はヒストグラムを用いて、決定される。このようなルックアップテーブル、アルゴリズム、ヒューリスティクス又はヒストグラムは、例えば、電力消費又はパワーダウンクロックサイクルの数によって情報が与えられる。
システムは、高レベルキャッシュを無効にするために、低レベルキャッシュビクティムが高レベルキャッシュに書き込まれるか否かに応じて、特定の無効化手順を実施することを選択し、又は、低レベルキャッシュビクティムのカウントが閾値を超えたか否かに少なくとも部分的に基づいて、高レベルキャッシュの無効化手順を選択する。例えば、図5に示すように、方法500は、ブロック502に示すように、システム100の高レベルキャッシュの無効化を開始することを含む。このような無効化は、例えば、関連するコアがパワーゲーティング状態に移行することに応じて開始される。
システム100は、ブロック504に示すように、高レベルキャッシュに含まれる有効なキャッシュラインがあるか否かを判別する。高レベルキャッシュが有効なキャッシュラインを含む場合、システムは、キャッシュフラッシュ処理を利用する無効化プロトコルを選択し、これにより、高レベルキャッシュは、ブロック506に示すように、この無効化プロトコルに従ってフラッシュされる。一例では、システムは、高レベルキャッシュのタグアレイ(例えば、L3データ/タグアレイ144)においてウェイ有効ビットを検索して、フラッシュされる高レベルキャッシュのキャッシュラインを識別し、識別されたキャッシュラインビクティムをシステムメモリ116に転送することができる。高レベルキャッシュがフラッシュされると、システム100は、ブロック508に示すように、高レベルキャッシュを低電力状態にする。
ブロック504を再び参照すると、低レベルキャッシュビクティムが高レベルキャッシュに書き込まれていない場合、システム100は、フラッシュ処理を含まない無効化プロトコルを選択することができ、これにより、システム100は、高レベルキャッシュのフラッシュをバイパスし、代わりに、ブロック510に示すように、高レベルキャッシュをフラッシュすることなく直接パワーダウンすることができる。このように、最初のN個の低レベルビクティムを高レベルキャッシュに記憶するのを抑制することによって、システムは、N+1番目の低レベルビクティムを低レベルキャッシュからエビクトする前に高レベルキャッシュを無効化する場合に、時間がかかり電力を消費するフラッシュ手順を定期的にバイパスすることができる。
上記の説明では、高レベルキャッシュの有効化後に閾値数の最初の低レベルビクティムが高レベルキャッシュに記憶されるのを抑制する例示的な実施形態を説明した。しかしながら、図6に例として示されている代替の実施態様では、閾値(N)以下の数の低レベルキャッシュビクティムの最初のセットが、L3キャッシュ140等の高レベルキャッシュに記憶されるのを許可される。L3コントローラ142又はキャッシュ階層104の他のコンポーネントは、最初のセットの対応する低レベルキャッシュビクティムが記憶されるL3キャッシュ140の位置を記憶する1つ以上のフラッシュテーブル670を記憶する。さらに、以下に説明するように、いくつかの実施態様では、低レベルキャッシュビクティムの最初のセットは、高レベルキャッシュのウェイのサブセットに制限され(このウェイのサブセットは、図6のブロック672で示されている)、この最初のセットの後に生じた低レベルキャッシュビクティムは、他のウェイベースの制限を受ける(ブロック674によって表される)ウェイのセット全体のうち何れかに記憶されてもよい。さらに、L3コントローラ142は、高レベルキャッシュに転送された低レベルキャッシュビクティムの数が閾値を超えたか否かを識別する識別子680(例えば、制御ビット又はレジスタ値)を記憶する。以下により詳細に説明するように、フラッシュテーブル670は、無効化手順中に利用され、高レベルキャッシュを無効化するための時間、クロックサイクル又は電力使用量を低減することができる。
図7は、いくつかの実施形態による、高レベルキャッシュの有効化後にフラッシュテーブル670をポピュレートする方法700を示す図である。方法700は、ブロック702に示すように、高レベルキャッシュ(例えば、L3キャッシュ140)を有効化することを含む。上記のように、高レベルキャッシュは、例えば、1つ以上の関連するプロセッサコアでのアクティビティに応じて有効にされる。ブロック704に示すように、カウンタ110は、低レベルキャッシュからエビクトされた低レベルキャッシュビクティムのカウントを開始する。(ブロック706に示すように)低レベルキャッシュビクティムが低レベルキャッシュから転送されると、メモリコントローラ106は、ブロック708に示すように、低レベルキャッシュビクティム毎に現在のカウントを1つずつインクリメントし(カウント=カウント+1)、次に、ブロック710に示すように、低レベルキャッシュビクティムの現在のカウントを閾値と比較する。カウントが閾値を超えていない間、各低レベルビクティムは、ブロック712に示すように、高レベルキャッシュに書き込まれる。オプションで、低レベルキャッシュビクティムは、低レベルキャッシュビクティムの限られたセットが書き込まれる領域を識別するウェイ制約によって制約される高レベルキャッシュ内の位置に書き込まれる。ブロック714に示すように、低レベルキャッシュビクティムの最初のセットが書き込まれる高レベルキャッシュ内の位置も、フラッシュテーブル670に記憶することができる。或いは、低レベルキャッシュビクティムの最初のセットを、フラッシュテーブル670の代わりに記憶された位置に書き込まれる連続セットとして書き込むことができる。
ブロック710を再び参照すると、低レベルキャッシュビクティムのカウントが閾値を超えると、システム100は、ブロック716に示すように、N個の低レベルビクティムの最初のセットを書き込むために使用された位置ベースの制限無しに、後続の低レベルキャッシュビクティムを高レベルキャッシュに書き込む。このような低レベルキャッシュビクティムは、低レベルキャッシュビクティムが書き込まれる高レベルキャッシュ上の位置を決定するために、様々なアルゴリズムとヒューリスティクスとを用いて書き込むことができる。何れの場合も、低レベルキャッシュビクティムの高レベルキャッシュへの書き込みは、高レベルキャッシュのタグアレイのウェイ有効ビットを用いて使用された領域を識別することができる。
代替例では、上記の方法の態様は、L3コントローラ142で実施することができる。さらに、図3の方法300及び図7の方法700は、第1閾値数の低レベルキャッシュビクティムが高レベルキャッシュに書き込まれることなくシステムメモリに送られることと、第2閾値数の低レベルキャッシュビクティムが高レベルキャッシュに記憶され、アドレスがフラッシュテーブルに記憶されることと、を組み合わせることができる。
システム100は、高レベルキャッシュを無効にする場合、無効化の前にフラッシュテーブル670を利用して高レベルキャッシュのフラッシュを加速するか、又は、有効ビットの監視若しくはウェイ有効ビットの追跡等の他のメカニズムを使用するかを、カウントに基づいて決定することができる。例えば、図8に示すように、方法800は、ブロック802に示すように、高レベルキャッシュのパワーダウン手順を開始することを含む。ブロック804に示すように、高レベルキャッシュがアクティブである間に低レベルキャッシュから高レベルキャッシュに転送された低レベルキャッシュビクティムのカウントが、閾値と比較される。この閾値は、図7のブロック706で使用された閾値と同じであることに留意されたい。
カウントが閾値を超えていない場合(すなわち、閾値以下の数の低レベルビクティムが高レベルキャッシュに記憶されている場合)、システム100は、フラッシュテーブル670を用いて高レベルキャッシュをフラッシュすることができる。したがって、システムは、ブロック806に示すように、メモリコントローラ又は他の記憶位置に記憶されているフラッシュテーブル670にアクセスする。図7を参照して上述したように、フラッシュテーブル670は、N個の低レベルビクティムの最初のセットの各々の位置に関する識別子を高レベルキャッシュに記憶する。システム100は、フラッシュテーブル670を利用して、ブロック808に示すように、フラッシュテーブル670で示された位置をフラッシュし、次に、ブロック810に示すように、高レベルキャッシュをパワーダウンすることができる。
ブロック804を再び参照すると、低レベルキャッシュビクティムのカウントが閾値を超えていない場合、システム100は、フラッシュテーブル670を使用するだけでは高レベルキャッシュをフラッシュすることができない。したがって、システム100は、ブロック812に示すように、高レベルキャッシュのタグアレイの各キャッシュラインに関連付する有効ビットを検索して有効なキャッシュラインを識別するか、ウェイ有効ビットにアクセスして、フラッシュされる有効なキャッシュラインを記憶する高レベルキャッシュ内の領域を識別する。識別された有効なキャッシュラインは、ブロック814に示すように、システムメモリ116(又は、より高いキャッシュレベル)にフラッシュされ、高レベルキャッシュは、ブロック818に示すように、無効にされ得る。フラッシュされる有効なキャッシュライン又は高レベルキャッシュの有効キャッシュラインを検索することが、高レベルキャッシュ上の限られた数の物理的位置を識別するフラッシュテーブル670を利用するよりも多くの時間を要すると想定すると、有効ビット又はテーブルウォーキングを利用する無効化手順は、フラッシュテーブル670を利用する手順よりも時間がかかる場合がある。
いくつかの実施形態では、図1〜図8を参照して上述した処理システム等の上述した装置及び技術は、1つ以上の集積回路(IC)デバイス(集積回路パッケージ又はマイクロチップとも呼ばれる)を備えるシステムで実施される。これらのICデバイスの設計及び製造には、通常、電子設計自動化(EDA)及びコンピュータ支援設計(CAD)ソフトウェアツールが使用される。これらの設計ツールは、通常、1つ以上のソフトウェアプログラムとして表される。1つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計又は適合するための処理の少なくとも一部を実行するように1つ以上のICデバイスの回路を表すコードで動作するようにコンピュータシステムを操作する、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含むことができる。設計ツール又は製造ツールを表すソフトウェア命令は、通常、コンピューティングシステムがアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ICデバイスの設計又は製造の1つ以上のフェーズを表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶されてもよいし、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体からアクセスされてもよい。
非一時的なコンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の記憶媒体、又は、記憶媒体の組み合わせを含むことができる。かかる記憶媒体には、限定されないが、光媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)、キャッシュ)、不揮発性メモリ(例えば、読み出し専用メモリ(ROM)、フラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体は、コンピュータシステム(例えば、システムRAM又はROM)に内蔵されてもよいし、コンピュータシステム(例えば、磁気ハードドライブ)に固定的に取り付けられてもよいし、コンピュータシステム(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)に着脱可能に取り付けられてもよいし、有線又は無線のネットワークを介してコンピュータシステム(例えば、ネットワークアクセス可能なストレージ(NAS))に接続されてもよい。
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されると、上記の技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ(RAM)、又は、他の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。

Claims (28)

  1. 処理システムにおけるキャッシュ利用を管理する方法であって、
    高レベルキャッシュを有効化したことに応じて、1つ以上の低レベルキャッシュからエビクトされた低レベルキャッシュビクティムをカウントすることと、
    前記低レベルキャッシュビクティムのカウントが閾値以下の間、前記低レベルキャッシュビクティムを前記高レベルキャッシュに記憶せずに、前記低レベルキャッシュビクティムの各々をメモリに記憶することと、
    前記低レベルキャッシュビクティムのカウントが閾値より大きい場合、前記閾値を超えた後にエビクトされた低レベルキャッシュビクティムの各々を前記高レベルキャッシュに記憶することと、を含む、
    方法。
  2. 前記1つ以上の低レベルキャッシュはレベル2(L2)キャッシュであり、前記高レベルキャッシュはレベル3(L3)キャッシュである、
    請求項1の方法。
  3. 前記閾値は、前記高レベルキャッシュの複数回の有効化に亘って静的である、
    請求項1の方法。
  4. 前記1つ以上の低レベルキャッシュのキャッシュビクティムカウント履歴、前記高レベルキャッシュの有効ビット履歴、前記閾値に対する上限制約、前記閾値に対する下限制約、前記高レベルキャッシュの電力使用量、又は、前記高レベルキャッシュのパワーダウン時間のうち少なくとも1つに少なくとも部分的に基づいて、前記閾値を動的に決定することをさらに含む、
    請求項1の方法。
  5. キャッシュビクティムの数を前記1つ以上の低レベルキャッシュのアクティビティ期間のセットの各期間に関連付けるキャッシュビクティム履歴を記憶することと、
    前記キャッシュビクティム履歴に少なくとも部分的に基づいて前記閾値を決定することと、をさらに含む、
    請求項1の方法。
  6. 前記閾値を決定することは、前記閾値に対する上限制約に少なくとも部分的に基づいて、前記閾値を決定することを含む、
    請求項5の方法。
  7. 有効ビットを用いて、前記高レベルキャッシュの占有領域を追跡することと、
    有効ビットの使用量を前記高レベルキャッシュのアクティビティ期間と関連付ける有効ビット履歴を記憶することと、
    前記有効ビット履歴に少なくとも部分的に基づいて前記閾値を決定することと、をさらに含む、
    請求項1の方法。
  8. 前記閾値を超えた後にエビクトされた低レベルキャッシュビクティムの各々を前記高レベルキャッシュに記憶することは、
    低レベルキャッシュビクティムを記憶する前記高レベルキャッシュの領域を、ウェイ制約に基づいて選択することを含む、
    請求項1の方法。
  9. 前記高レベルキャッシュが無効にされるという指示に応じて、前記低レベルキャッシュビクティムの前記カウントが前記閾値を超えているか否かに少なくとも部分的に基づいて、前記高レベルキャッシュのパワーダウン手順を選択することをさらに含む、
    請求項1の方法。
  10. パワーダウン手順を選択することは、
    前記低レベルキャッシュビクティムの前記カウントが前記閾値を超えていない場合に、前記高レベルキャッシュをフラッシュせずに前記高レベルキャッシュを無効にするパワーダウン手順を選択することを含む、
    請求項9の方法。
  11. パワーダウン手順を選択することは、
    前記低レベルキャッシュビクティムの前記カウントが前記閾値を超えた場合に、前記高レベルキャッシュをフラッシュして前記高レベルキャッシュを無効にするパワーダウン手順を選択することを含む、
    請求項10の方法。
  12. プロセッサコアと、
    前記プロセッサコアによってアクセス可能な1つ以上の低レベルキャッシュと、
    前記プロセッサコア及び前記1つ以上の低レベルキャッシュによってアクセス可能な高レベルキャッシュと、
    前記1つ以上の低レベルキャッシュ及び前記高レベルキャッシュにアクセスするコントローラと、を備え、
    前記コントローラは、
    前記高レベルキャッシュを有効化したことに応じて、前記1つ以上の低レベルキャッシュからエビクトされた低レベルキャッシュビクティムをカウントし、
    前記低レベルキャッシュビクティムのカウントが閾値以下の間、前記低レベルキャッシュビクティムを前記高レベルキャッシュに記憶せずに、前記低レベルキャッシュビクティムの各々をシステムメモリに記憶し、
    前記低レベルキャッシュビクティムのカウントが閾値より大きい場合、前記閾値を超えた後にエビクトされた低レベルキャッシュビクティムの各々を前記高レベルキャッシュに記憶する、
    システム。
  13. 前記閾値は、前記高レベルキャッシュの複数回の有効化に亘って静的である、
    請求項12のシステム。
  14. 前記コントローラは、前記1つ以上の低レベルキャッシュのキャッシュビクティムカウント履歴、前記1つ以上の低レベルキャッシュの有効ビット履歴、前記閾値に対する上限制約、前記閾値に対する下限制約、前記高レベルキャッシュの電力使用量、又は、前記高レベルキャッシュのパワーダウン時間のうち少なくとも1つに少なくとも部分的に基づいて、前記閾値を動的に決定する、
    請求項12のシステム。
  15. 前記コントローラは、
    キャッシュビクティムの数を前記1つ以上の低レベルキャッシュのアクティビティ期間のセットの各期間に関連付けるキャッシュビクティム履歴を記憶し、
    前記キャッシュビクティム履歴に少なくとも部分的に基づいて前記閾値を決定する、
    請求項12のシステム。
  16. 前記コントローラは、
    前記高レベルキャッシュのタグアレイの有効ビットを用いて、前記高レベルキャッシュの占有領域を追跡する、
    請求項12のシステム。
  17. 前記コントローラは、
    前記有効ビットの使用量を前記高レベルキャッシュのアクティビティ期間と関連付ける有効ビット履歴を記憶し、
    前記有効ビット履歴に少なくとも部分的に基づいて前記閾値を決定する、
    請求項16のシステム。
  18. 前記コントローラは、
    前記低レベルキャッシュビクティムの前記カウントが前記閾値を超えていない場合、前記高レベルキャッシュをフラッシュせずに前記高レベルキャッシュをパワーダウンする、
    請求項12のシステム。
  19. 前記コントローラは、
    前記カウントが前記閾値以下の間、低レベルビクティムを記憶する前記高レベルキャッシュの領域をウェイ制約に基づいて選択する、
    請求項12のシステム。
  20. キャッシュ利用を管理する方法であって、
    キャッシュビクティムの数を低レベルキャッシュのアクティビティ期間のセットの各期間に関連付けるキャッシュビクティム履歴を記憶することと、
    高レベルキャッシュに記憶されずにメモリに送信される低レベルキャッシュビクティムの閾値を決定することと、
    前記高レベルキャッシュを有効化したことに応じて、低レベルキャッシュビクティムを、前記高レベルキャッシュを有効化した後に、前記高レベルキャッシュに書き込まずにメモリに閾値まで記憶することと、を含む、
    方法。
  21. 前記低レベルキャッシュビクティムを閾値まで記憶することは、前記低レベルキャッシュビクティムのカウントを判別することを含む、
    請求項20の方法。
  22. 前記低レベルキャッシュビクティムを閾値まで記憶することは、前記低レベルキャッシュビクティムのカウントが閾値以下の間、前記低レベルキャッシュビクティムを前記高レベルキャッシュに記憶せずに、前記低レベルキャッシュビクティムの各々をメモリに記憶することをさらに含む、
    請求項21の方法。
  23. キャッシュ利用を管理する方法であって、
    高レベルキャッシュを有効化したことに応じて、前記高レベルキャッシュに送信された低レベルキャッシュビクティムをカウントすることと、
    前記低レベルキャッシュビクティムのカウントが閾値以下の間、前記低レベルキャッシュビクティムの各々を前記高レベルキャッシュに記憶し、前記低レベルキャッシュビクティムが記憶される前記高レベルキャッシュの位置をフラッシュテーブルに記憶することと、を含む、
    方法。
  24. 前記低レベルキャッシュビクティムのカウントが閾値を超えた場合に、前記低レベルキャッシュビクティムが記憶される前記高レベルキャッシュの位置を前記フラッシュテーブルに記憶せずに、前記低レベルキャッシュの各々を前記高レベルキャッシュに書き込むことをさらに含む、
    請求項23の方法。
  25. キャッシュビクティムの数を1つ以上の低レベルキャッシュのアクティビティ期間のセットの各期間に関連付けるキャッシュビクティム履歴を記憶することと、
    前記キャッシュビクティム履歴に少なくとも部分的に基づいて前記閾値を決定することと、をさらに含む、
    請求項23の方法。
  26. 前記低レベルキャッシュビクティムのカウントが前記閾値を超えない場合に、前記高レベルキャッシュをフラッシュせずに前記高レベルキャッシュを無効化することをさらに含む、
    請求項23の方法。
  27. 有効ビットを用いて、前記高レベルキャッシュの占有領域を追跡することと、
    有効ビットの使用量を前記高レベルキャッシュのアクティビティ期間と関連付ける有効ビット履歴を記憶することと、
    前記有効ビット履歴に少なくとも部分的に基づいて前記閾値を決定することと、をさらに含む、
    請求項23の方法。
  28. 前記閾値を超えた後にエビクトされた低レベルキャッシュビクティムの各々を前記高レベルキャッシュに記憶することは、
    低レベルキャッシュビクティムを記憶する前記高レベルキャッシュの領域を、ウェイ制約に基づいて選択することを含む、
    請求項23の方法。
JP2019533295A 2016-09-06 2017-09-01 遅延キャッシュの利用のためのシステム及び方法 Active JP6663542B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/256,950 2016-09-06
US15/256,950 US9946646B2 (en) 2016-09-06 2016-09-06 Systems and method for delayed cache utilization
PCT/US2017/049921 WO2018048748A1 (en) 2016-09-06 2017-09-01 Systems and method for delayed cache utilization

Publications (2)

Publication Number Publication Date
JP2019530112A JP2019530112A (ja) 2019-10-17
JP6663542B2 true JP6663542B2 (ja) 2020-03-11

Family

ID=61280745

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019533295A Active JP6663542B2 (ja) 2016-09-06 2017-09-01 遅延キャッシュの利用のためのシステム及び方法

Country Status (6)

Country Link
US (2) US9946646B2 (ja)
EP (2) EP3510486B1 (ja)
JP (1) JP6663542B2 (ja)
KR (1) KR102032476B1 (ja)
CN (2) CN109716307B (ja)
WO (1) WO2018048748A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9946646B2 (en) * 2016-09-06 2018-04-17 Advanced Micro Devices, Inc. Systems and method for delayed cache utilization
KR20200085522A (ko) * 2019-01-07 2020-07-15 에스케이하이닉스 주식회사 이종 메모리를 갖는 메인 메모리 장치, 이를 포함하는 컴퓨터 시스템 및 그것의 데이터 관리 방법
US11347649B2 (en) 2019-05-24 2022-05-31 Texas Instruments Incorporated Victim cache with write miss merging
US11223575B2 (en) * 2019-12-23 2022-01-11 Advanced Micro Devices, Inc. Re-purposing byte enables as clock enables for power savings
WO2021126286A1 (en) * 2020-02-14 2021-06-24 Huawei Technologies Co., Ltd. Upward eviction of cache lines
CN112015674B (zh) * 2020-08-27 2023-05-30 平安科技(深圳)有限公司 基于多层级的缓存资源访问方法、装置和计算机设备
US20230094030A1 (en) * 2021-09-30 2023-03-30 Advanced Micro Devices, Inc. Cache resizing based on processor workload
JP2023069644A (ja) * 2021-11-08 2023-05-18 富士通株式会社 半導体装置および半導体装置の制御方法

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990079976A (ko) 1998-04-10 1999-11-05 김영환 빅팀캐쉬의 상태비트에 따른 무효화 순위결정 로직장치
US6574710B1 (en) * 2000-07-31 2003-06-03 Hewlett-Packard Development Company, L.P. Computer cache system with deferred invalidation
US20070094450A1 (en) * 2005-10-26 2007-04-26 International Business Machines Corporation Multi-level cache architecture having a selective victim cache
US7757045B2 (en) * 2006-03-13 2010-07-13 Intel Corporation Synchronizing recency information in an inclusive cache hierarchy
US7596662B2 (en) * 2006-08-31 2009-09-29 Intel Corporation Selective storage of data in levels of a cache memory
US7606976B2 (en) * 2006-10-27 2009-10-20 Advanced Micro Devices, Inc. Dynamically scalable cache architecture
US8171219B2 (en) * 2009-03-31 2012-05-01 Intel Corporation Method and system to perform caching based on file-level heuristics
KR101574207B1 (ko) 2009-10-16 2015-12-14 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 저장 방법
US8935478B2 (en) * 2011-11-01 2015-01-13 International Business Machines Corporation Variable cache line size management
CA2860544A1 (en) * 2012-01-12 2013-07-18 Murata Electronics Oy Accelerator sensor structure and use thereof
US10114750B2 (en) * 2012-01-23 2018-10-30 Qualcomm Incorporated Preventing the displacement of high temporal locality of reference data fill buffers
US20130262780A1 (en) * 2012-03-30 2013-10-03 Srilatha Manne Apparatus and Method for Fast Cache Shutdown
US20130346683A1 (en) * 2012-06-22 2013-12-26 William L. Walker Cache Sector Dirty Bits
US20140108734A1 (en) * 2012-10-17 2014-04-17 Advanced Micro Devices, Inc. Method and apparatus for saving processor architectural state in cache hierarchy
US8935472B2 (en) * 2012-12-21 2015-01-13 Advanced Micro Devices, Inc. Processing device with independently activatable working memory bank and methods
US9251069B2 (en) * 2012-12-21 2016-02-02 Advanced Micro Devices, Inc. Mechanisms to bound the presence of cache blocks with specific properties in caches
US20140181402A1 (en) * 2012-12-21 2014-06-26 Advanced Micro Devices, Inc. Selective cache memory write-back and replacement policies
US9251081B2 (en) * 2013-08-01 2016-02-02 Advanced Micro Devices, Inc. Management of caches
US10140210B2 (en) * 2013-09-24 2018-11-27 Intel Corporation Method and apparatus for cache occupancy determination and instruction scheduling
US10204056B2 (en) * 2014-01-27 2019-02-12 Via Alliance Semiconductor Co., Ltd Dynamic cache enlarging by counting evictions
US9405706B2 (en) 2014-09-25 2016-08-02 Intel Corporation Instruction and logic for adaptive dataset priorities in processor caches
KR20170109133A (ko) * 2016-03-17 2017-09-28 에스케이하이닉스 주식회사 하이브리드 메모리 장치 및 그의 데이터 관리 방법
US9946646B2 (en) * 2016-09-06 2018-04-17 Advanced Micro Devices, Inc. Systems and method for delayed cache utilization

Also Published As

Publication number Publication date
CN109716307A (zh) 2019-05-03
US9946646B2 (en) 2018-04-17
CN109716307B (zh) 2020-09-15
US20180217931A1 (en) 2018-08-02
EP3879407B1 (en) 2023-12-27
EP3879407A1 (en) 2021-09-15
US10289567B2 (en) 2019-05-14
US20180067856A1 (en) 2018-03-08
KR20190040292A (ko) 2019-04-17
EP3510486A4 (en) 2020-04-29
CN112069090A (zh) 2020-12-11
EP3510486A1 (en) 2019-07-17
JP2019530112A (ja) 2019-10-17
EP3510486B1 (en) 2021-05-19
KR102032476B1 (ko) 2019-11-08
WO2018048748A1 (en) 2018-03-15

Similar Documents

Publication Publication Date Title
JP6663542B2 (ja) 遅延キャッシュの利用のためのシステム及び方法
US9223710B2 (en) Read-write partitioning of cache memory
US10430349B2 (en) Scaled set dueling for cache replacement policies
US9075730B2 (en) Mechanisms to bound the presence of cache blocks with specific properties in caches
KR102429404B1 (ko) 상이한 캐시 레벨에서의 캐시라인의 상태를 모니터하기 위한 쉐도우 태그 메모리
US9251081B2 (en) Management of caches
CN111263934B (zh) 至少具有三个缓存级别的缓存层级的混合低级缓存包含策略
KR102423713B1 (ko) 가상 어드레스를 물리적 어드레스로 번역을 수행하기 위해 입력-출력 메모리 관리 유닛내 다수의 메모리 소자들 사용
US9262322B2 (en) Method and apparatus for storing a processor architectural state in cache memory
WO2006034289A1 (en) Method and apparatus for run-ahead victim selection to reduce undesirable replacement behavior in inclusive caches
JP7214727B2 (ja) パワーダウン状態におけるプロセッサコアのキャッシュエントリの保持
US11526449B2 (en) Limited propagation of unnecessary memory updates
CN110036376B (zh) 无分配高速缓存策略
JP5976225B2 (ja) スティッキー抜去エンジンを伴うシステムキャッシュ
CN111480151A (zh) 将高速缓存线从共用存储器页面冲洗到存储器
KR20240136345A (ko) 최종 레벨 캐시로의 l3 캐시 데이터 축출을 위한 데이터를 다시 페치하기

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190627

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190627

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20190627

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20190710

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191008

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200107

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: 20200128

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200214

R150 Certificate of patent or registration of utility model

Ref document number: 6663542

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250