JP6730434B2 - ハイブリッドキャッシュ - Google Patents

ハイブリッドキャッシュ Download PDF

Info

Publication number
JP6730434B2
JP6730434B2 JP2018531516A JP2018531516A JP6730434B2 JP 6730434 B2 JP6730434 B2 JP 6730434B2 JP 2018531516 A JP2018531516 A JP 2018531516A JP 2018531516 A JP2018531516 A JP 2018531516A JP 6730434 B2 JP6730434 B2 JP 6730434B2
Authority
JP
Japan
Prior art keywords
cache
logical
logical cache
processor
core
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
JP2018531516A
Other languages
English (en)
Other versions
JP2019502996A (ja
JP2019502996A5 (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 JP2019502996A publication Critical patent/JP2019502996A/ja
Publication of JP2019502996A5 publication Critical patent/JP2019502996A5/ja
Application granted granted Critical
Publication of JP6730434B2 publication Critical patent/JP6730434B2/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/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/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/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/084Multiuser, multiprocessor or multiprocessing cache systems with a shared 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/604Details relating to cache allocation

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つ以上のキャッシュを有する処理サブシステムを含む。キャッシュは、一般に、処理サブシステム内又はその近傍に配置された比較的小型の高速アクセスメモリ回路であり、コンピューティングデバイス内のより高いレベルのメモリ階層(すなわち、他のより大きなキャッシュ及び/又はメモリ)から読み出されたデータを記憶し、記憶されたデータに対するより高速なアクセスを可能にするために使用することができる。
一般に、コンピュータシステムのメインメモリは、ページレベルの粒度でメモリ構成を有する。通常、ページは4キロバイト(KB)のページであるが、特定の実施態様に対して他のサイズのページを定義することもできる。キャッシュメモリの構成は、一般に、キャッシュラインレベルの粒度である。キャッシュラインは、連続するメモリ位置に記憶された複数のバイトのセットであり、コヒーレンシ用のユニットとして扱われる。本明細書で使用する場合、「キャッシュライン」及び「キャッシュブロック」という用語は、同じ意味で用いられる。キャッシュラインのバイト数は、設計上の選択によって異なり、任意のサイズであってもよい。
最新のプロセッサには、マルチレベルのキャッシュ階層が使用されることが多い。例えば、マルチコアプロセッサの場合、各コアは、データ及び/又は命令を記憶するためのレベル1(L1)キャッシュを含むことができる。マルチレベルのキャッシュ階層は、通常、コア毎に、専用レベル2(L2)キャッシュと、複数のコアで共有されるより大きなレベル3(L3)キャッシュと、を含む。プロセッサは、異なるデータ処理量及び異なるデータアクセスパターンを有する多くの異なるタイプのアプリケーションを実行することができる。アプリケーションの中には、大量のデータを処理するものもあれば、データの同じ部分を徐々に変更することによって、少量のデータで動作するものもある。しかしながら、従来のマルチレベルのキャッシュ階層を使用すると、いくつかのアプリケーションでは、最適効率より悪い状態でプロセッサによって実行される結果となる場合がある。
ハイブリッドキャッシュを実装するシステム、装置及び方法が考察される。
各種実施形態において、マルチコアプロセッサは、マルチレベルのキャッシュ階層を含むことができる。プロセッサは、キャッシュ階層の第1レベル及び第2レベルを、各コアが使用するために論理的に分割される単一のキャッシュに効果的に組み合わせるキャッシュ構成を有することができる。各種実施形態において、キャッシュは、レベル2(L2)及びレベル3(L3)のキャッシュに論理的に分割され、各コアには所定の論理L2及びL3キャッシュが割り当てられる。各種実施形態において、キャッシュ階層の第1レベル及び第2レベルのサイズは、静的に設定されてもよいし、動的に調整されてもよい。
例えば、論理キャッシュのサイズは、製造時に固定されてもよい。他の実施形態では、論理キャッシュのサイズは、現在の動作条件に基づいて動的に調整されてもよい。例えば、プロセッサは、より小さいL2キャッシュを犠牲にして、より大きなL3キャッシュから利益を得る第1アプリケーションを実行することができる。プロセッサは、第1アプリケーションを実行する場合に、L2キャッシュのサイズを減らし、L3キャッシュのサイズを増加させることができる。その後、プロセッサは、第1アプリケーションの実行から第2アプリケーションの実行に切り替えることができ、プロセッサは、第2アプリケーションが、より小さいL3キャッシュを犠牲にして、より大きなL2キャッシュから利益を得るという指示を決定又は受信することができる。これにより、プロセッサは、L3キャッシュのサイズを減らし、L2キャッシュのサイズを増加させることができる。
更なる実施形態において、プロセッサは、キャッシュ階層の異なるレベルに関連する様々なパラメータを監視することができる。この実施形態において、プロセッサは、監視されたパラメータに基づいて、キャッシュ階層の2つ以上のレベルのサイズを動的に調整することができる。これらのパラメータは、第1キャッシュのキャッシュヒット率と、第2キャッシュのキャッシュヒット率と、別々のプロセッサコアに対応する異なる第1キャッシュ間のキャッシュラインのマイグレーション率と、を含むことができる。各種実施形態において、プロセッサは、1つ以上のパラメータを1つ以上の閾値と比較することができる。プロセッサは、比較結果に基づいて、第1キャッシュ(例えば、L2キャッシュ)のサイズを減らし、第2キャッシュ(例えば、L3キャッシュ)のサイズを増加させることができ、第1キャッシュのサイズを増加させて、第2キャッシュのサイズを減らすことができ、又は、第1キャッシュ及び第2キャッシュの現在のサイズを維持することができる。
これらの特徴及び利点、並びに、他の特徴及び利点は、本明細書に提示される以下の詳細な説明を参照することによって、当業者に明らかになるであろう。
方法及びメカニズムの上記及び更なる利点は、添付の図面と併せて以下の説明を参照することによって、より良く理解することができる。
コンピューティングシステムの一実施形態のブロック図である。 論理キャッシュの一実施形態のブロック図である。 コントロールユニットの一実施形態のブロック図である。 プロセッサの一実施形態のブロック図である。 プロセッサの別の実施形態のブロック図である。 3つの異なる時点における論理キャッシュの一実施形態のブロック図である。 複数のキャッシュラインのタグビットを示す図である。 キャッシュサイズを動的に調整する方法の一実施形態を示す一般化されたフロー図である。 キャッシュサイズを動的に調整する方法の別の実施形態を示す一般化されたフロー図である。 キャッシュサイズをいつ調整するかを決定する方法の一実施形態を示す一般化されたフロー図である。 キャッシュサイズをいつ調整するかを決定する方法の別の実施形態を示す一般化されたフロー図である。 キャッシュ階層のマイグレーション率を監視する方法の一実施形態を示す一般化されたフロー図である。 隣接するキャッシュレベル間で異なる容量割り当てを利用する方法の一実施形態を示す一般化されたフロー図である。 フィルデータ(fill data)を転送する方法の一実施形態を示す一般化されたフロー図である。 論理キャッシュの一部を再割り当てする方法の一実施形態を示す一般化されたフロー図である。
以下の説明では、本明細書に提示される方法及びメカニズムの完全な理解を提供するために、多数の特定の詳細が示されている。しかしながら、当業者であれば、これらの具体的な詳細無しに各種実施形態を実施可能であると認識すべきである。場合によっては、本明細書に記載されている方法を不明瞭にするのを避けるために、周知の構造、コンポーネント、信号、コンピュータプログラム命令及び技術が詳細に示されていない。説明を簡潔且つ明瞭にするために、図示されている要素は、必ずしも一定の縮尺で描かれていないことを理解されたい。例えば、いくつかの要素の寸法は、他の要素に対して誇張されていてもよい。
図1を参照すると、コンピューティングシステム100の一実施形態を示すブロック図が示されている。システム100は、プロセッサ105と、メモリ130と、を含むことができる。システム100は、図を不明瞭にするのを避けるために図1に示されていない他のコンポーネント(例えば、ディスプレイ、入出力(I/O)インタフェース、ネットワークインタフェース)を含むことができる。実施形態に応じて、システム100は、モバイルデバイス(例えば、スマートフォン、タブレット)、コンピュータ、テレビ、エンタテイメントデバイス、サーバ等を含む様々なタイプのコンピューティングシステムの何れかであってもよい。プロセッサ105は、命令を実行し、計算動作を実行するための任意のタイプのプロセッサ(例えば、グラフィックス処理ユニット(GPU)、中央処理ユニット(CPU)、高速処理ユニット(APU))を表す。
一実施形態において、プロセッサ105は、図1に示すように4つのコア110A〜110D及びキャッシュ115A〜115Dを有するマルチコアプロセッサであってもよい。他の実施形態において、プロセッサ105は、他の数のコアを含むことができる。各種実施形態において、各キャッシュ115A〜115Dは、以下に詳細に説明するように、複数の論理キャッシュに分割された単一の物理キャッシュであってもよい。各コア110A〜110Dは、命令及び/又はデータを記憶するレベル1(L1)キャッシュ(図示省略)を含むことができる。また、各コア110A〜110Dは、対応する物理キャッシュ115A〜115Dを包み、及び/又は、それに接続されてもよい。キャッシュ115A〜115Dの各々は、キャッシュされたデータ及び命令を記憶するために使用されるメモリ回路を含むことができる。例えば、キャッシュ115A〜115Dは、1つ以上のスタティックランダムアクセスメモリ(SRAM)、埋め込みダイナミックランダムアクセスメモリ(eDRAM)、DRAM、ダブルデータレート同期型DRAM(DDR SDRAM)及び/又は他のタイプのメモリ回路を含むことができる。
一実施形態において、各キャッシュ115A〜115Dは、キャッシュ部のサイズを変更することの可能なプロセッサ105を用いて、共用レベル3(L3)キャッシュの構成可能なスライス(又は部分)と論理的に組み合わされた構成可能なレベル2(L2)キャッシュを含むことができる。プロセッサ105は、特定のキャッシュ115A〜115DのL2部分のサイズを所定量だけ減らす場合、特定のキャッシュ115A〜115DのL3部分のサイズを当該所定量だけ増加させることができる。又は、プロセッサ105は、特定のキャッシュ115A〜115DのL2部分のサイズを所定量だけ増加させる場合、特定のキャッシュ115A〜115DのL3部分のサイズを当該所定量だけ減らすことができる。言い換えれば、各キャッシュ115A〜115Dは、L2キャッシュとL3スライスとの間で分割される固定記憶容量を有する。したがって、所定のキャッシュ115A〜115DのL2キャッシュのサイズに対する如何なる変更は、所定のキャッシュ115A〜115DのL3スライスのサイズに対して逆の変化を引き起こす。
L2及びL3キャッシュのサイズを動的に変更する例が図1に関連して示され、説明されているが、これは非限定的な例を意味しており、プロセッサは、キャッシュ階層の2つ以上の隣接レベルのサイズを動的に変更可能であることを理解されたい。同様に、本開示を通じて、L2及びL3キャッシュ部分のサイズを動的に変更する例が説明される場合、これらの技術は、キャッシュ階層の他のレベルで利用可能であることを理解されたい。いくつかの実施形態では、本明細書において記載されている技術を使用して、3レベル以上のキャッシュ階層のサイズを動的に調整することができる。
一実施形態において、プロセッサ105は、各キャッシュ115A〜115DのL2及びL3部分のサイズを動的に変更することができる。したがって、本実施形態において、L2及びL3キャッシュの記憶容量を実行時に変更することができる。一実施形態において、L2及びL3キャッシュの構成を、ソフトウェア(例えば、オペレーティングシステム、ハイパーバイザ、アプリケーション)によって変更することができる。別の実施形態では、ハードウェアコントローラ(例えば、コントロールユニット120)は、システム性能メトリック(例えば、L2及びL3キャッシュのヒット率)を監視し、L2及びL3の割り当てサイズを動的に変更して、いくつかの目的を最適化する(例えば、パフォーマンスを最大にする)ことができる。さらに別の実施形態では、L2及びL3キャッシュの構成を、ソフトウェア及びハードウェアの組み合せによって設定することができる。
各種実施形態において、プロセッサ105は、1つ以上の条件を検出したことに応じて、各キャッシュ115A〜115DのL2及びL3部分のサイズを動的に変更することができる。1つ以上の条件は、L2及びL3キャッシュに関連して監視されたパラメータ、及び/又は、プロセッサ105によって実行されるアプリケーションの変更に依存し得る。プロセッサ105は、L2及びL3キャッシュのヒット率、異なるコアの異なるL2キャッシュ間のキャッシュラインのマイグレーション率、及び/又は、L2及びL3キャッシュに関連する他のパラメータを監視するように構成されてもよい。プロセッサ105は、これらのパラメータを1つ以上の閾値と比較して、キャッシュ115A〜115DのL2及びL3部分間で記憶容量を動的に再割り当てするか否かを決定することができる。
別の実施形態では、プロセッサ105は、実行されているアプリケーションを監視し、実行されているアプリケーション毎に、L2及びL3キャッシュサイズの最適な割り当てを決定することができる。いくつかの場合には、プロセッサ105は、キャッシュサイズをどのように配分することによってアプリケーションがより効率的に動作することができるかを決定するために、アプリケーションに関連する動作履歴データを維持することができる。他の場合には、各アプリケーションは、アプリケーションの好適又は最適なキャッシュサイズを示す所定の設定を有することができる。例えば、第1アプリケーションは、第1アプリケーションが、比較的小さなL2キャッシュ及び比較的大きなL3キャッシュから利益を得ることを示す設定を含むことができる。したがって、プロセッサ105は、第1アプリケーションを実行する場合、各コアのL2キャッシュのサイズを減らし、L3スライスのサイズを増加させることができる。プロセッサは、その後の時点で、比較的大きなL2キャッシュ及び比較的小さなL3キャッシュから利益を得ることを示す設定を含む第2アプリケーションを実行することができる。したがって、プロセッサは、第2アプリケーションを実行することに応じて、各コアのL2キャッシュを増加させ、L3スライスのサイズを減らすことができる。
別の実施形態では、キャッシュ115A〜115DのL2及びL3キャッシュのサイズは、プロセッサ105の製造又は製造プロセスの一部として静的に調整されてもよい。本実施形態において、L2及びL3キャッシュ構成は、製造時に設定されてもよい。これにより、同じシリコン設計を様々な異なる構成として展開することが可能になる。本実施形態において、1つのシステムオンチップ(SoC)を複数の在庫保管ユニット(SKU)と共に利用することができる。例えば、構成ヒューズを用いて、キャッシュ115A〜115DのL2及びL3キャッシュの所望の構成を設定することができる。あるいは、キャッシュ115A〜115DのL2及びL3キャッシュのサイズは、システムの起動中にキャッシュサイズを設定するブートアップ中にBIOSが読み取る読出し専用メモリ(ROM)の構成ビットに記憶されてもよい。
一実施形態において、コントロールユニット120は、各キャッシュ115A〜115Dが可変サイズのL2キャッシュにどれだけ割り当てられているか、及び、各キャッシュ115A〜115Dが可変サイズのL3スライスにどれだけ割り当てられているかを決定するように構成されてもよい。コントロールユニット120及びメモリコントローラ125は、同じバスを介してキャッシュ115A〜115Dに接続されているように示されているが、これは単に例示を容易にするためのものであり、コントロールユニット120及びメモリコントローラ125をキャッシュ115A〜115Dに接続するために異なる物理コネクションが利用可能であることを理解されたい。
メモリ130は、コンピューティングシステム100の「メインメモリ」を形成するメモリ回路を備える。メモリ130は、プロセッサ105のコア110A〜110Dによって使用される命令及びデータを記憶するために用いられてもよい。メモリ130は、任意の数、容量及びタイプのメモリデバイスを表す。様々なタイプのメモリ130(ランダムアクセスメモリ(RAM)、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、高速CMOS、高密度DRAM、eDRAM、3Dスタックメモリ(例えば、スタックDRAM)、インターポーザベースの集積メモリ、マルチチップモジュール(MCM)、マザーボード上のオフチップDRAM、不揮発性RAM(NVRAM)、光磁気記憶媒体、読出し専用メモリ(ROM)、同期型DRAM(SDRAM)、ダブルデータレートSDRAM(DDR SDRAM)、相変化メモリ、スピン移行トルク磁気RAM(spin-transfer torque magnetic RAM)、メモリスタ、拡張データ出力(EDO)RAM、ラムバスRAM、ラムバスDRAM、消去可能プログラマブルメモリ(EEPROM)、ソリッドステートメモリ、ハードディスクドライブ、光記憶媒体等を含む)をシステム100に利用することができる。
図2を参照すると、キャッシュ200の一実施形態のブロック図が示されている。一実施形態において、(図1の)各キャッシュ115A〜115Dは、キャッシュ200のコンポーネントを含むことができる。他の実施形態において、論理キャッシュの他のタイプ及び/又は構造を利用することができる。図2に示すように、キャッシュ200は、関連するキャッシュコントローラ215及びキャッシュメモリアレイ210を有する。一実施形態において、キャッシュメモリアレイ210は、セットアソシエティブキャッシュとして構成されてもよい。キャッシュメモリアレイ210は、「M」個のセットを含むことができ、「M」は実施形態毎に異なる。各セットは、「N」個のウェイを含むことができ、「N」は実施形態毎に異なる。ここで、「M」及び「N」は正の整数である。
一実施形態において、各セットの「X」個のウェイをキャッシュ200のL2部分に割り当て、各セットの「N−X」個のウェイをキャッシュ200のL3部分に割り当てることができる。したがって、L2部分のルックアップが実行される場合、キャッシュコントローラ215は、ターゲットアドレスに対して対応するセットの「X」個のウェイのみルックインしてもよい。ルックアップがミスである場合、L3キャッシュの「N−X」個のウェイのルックアップが実行されてもよい。所定のコアに対するL3キャッシュのルックアップは、アドレスインターリーブ方式、及び、メモリ要求によってターゲットとされるアドレスに応じて、同じ論理キャッシュ又は異なる論理キャッシュの何れかに対して実行されてもよい。
キャッシュコントローラ215は、キャッシュ200の動作を制御するための様々な機能を実行することができる。例えば、キャッシュコントローラ215は、キャッシュラインを記憶、無効化及び/又は追い出し、キャッシュラインのルックアップを実行し、コヒーレンシ動作を処理し、キャッシュラインに対するキャッシュ200からの要求に応じることができる。キャッシュコントローラ215は、キャッシュ200のL2及びL3部分間の容量を再割り当てするように構成されてもよい。例えば、一実施形態において、キャッシュコントローラ215は、キャッシュ200がL2及びL3部分にどのように分割されるかを示す更新情報を受信するコントロールユニット(例えば、図1のコントロールユニット120)に接続されてもよい。キャッシュコントローラ215は、コントロールユニットから更新情報を受信したことに応じて、キャッシュ200のL2及びL3部分のサイズを動的に再調整するように構成されてもよい。
図3を参照すると、コントロールユニット300の一実施形態が示されている。一実施形態において、図1のコントロールユニット120は、コントロールユニット300のコンポーネントを含むことができる。コントロールユニット300は、少なくとも再マッピングユニット305及びテーブル310を含むことができる。再マッピングユニット305は、論理キャッシュがL2及びL3部分間でサイズ変更された後に、論理キャッシュ(例えば、図2のキャッシュ200)のデータを再マッピングするように構成されてもよい。ウェイ又は他の部分が論理キャッシュのL2からL3部分に、又は、論理キャッシュのL3からL2部分に再割り当てされると、ウェイに記憶されたデータをもはや正しい位置にマッピングすることができなくなる可能性がある。したがって、再マッピングユニット305は、L2及びL3構成が変更された後にデータを再マッピング及びマイグレーションするように構成されてもよい。あるいは、コントロールユニット300は、データをマイグレーションする代わりに、L2及びL3構成が変更された後にデータを無効化してもよい。
コントロールユニット300は、プロセッサ、アプリケーション及びキャッシュに関連する様々なパラメータを監視するように構成されてもよい。一実施形態において、コントロールユニット300は、パラメータ値を1つ以上のテーブル310に記憶することができる。テーブル310は、ホストプロセッサの動作条件に関連するデータを記憶するために利用され得る任意の数及びタイプの構造を表す。例えば、一実施形態において、コントロールユニット300は、ホストプロセッサによって実行されている複数のアプリケーションに対して好適なL2及びL3キャッシュサイズをテーブル310Aに記憶することができる。あるいは、いくつかの実施形態では、コントロールユニット300は、テーブル310Aを利用する代わりに、実行されている現在のアプリケーションについての設定をソフトウェアから読み出し又は受信することができる。コントロールユニット300は、この設定を利用して、L2及びL3キャッシュ間の容量の現在の割り付けを調整又は維持するかを決定することができる。
テーブル310Aは、ホストプロセッサによって実行されている所定のアプリケーションの好適なL2及びL3キャッシュサイズを決定するために、コントロールユニット300によって利用されるテーブルの例である。任意の数のアプリケーションに対する任意の数の設定をテーブル310Aに記憶することができる。テーブル310Aに示すように、第1アプリケーションは、128KBの好適なL2キャッシュサイズと、コア毎の論理キャッシュのための896KBの好適なL3スライスサイズと、を有することができ、第2アプリケーションは、384KBの好適なL2キャッシュサイズと、コア毎の論理キャッシュのための640KBの好適なL3スライスサイズと、を有することができ、第3アプリケーションは、256KBの好適なL2キャッシュサイズと、コア毎の論理キャッシュのための768KBの好適なL3スライスサイズと、を有することができ、以下同様である。ここでの説明のために、L2及びL3部分のコア毎の論理キャッシュサイズの合計が1MBであると仮定してもよい。コア毎の論理キャッシュサイズの記憶容量は、実施形態に従って変更されてもよい。
テーブル310Bは、各コアの論理キャッシュ毎にL2及びL3キャッシュサイズをいつ調整するかを決定するために、コントロールユニット300によって利用されるテーブルの別の例である。テーブル310Bは、1つ以上の閾値との比較に利用され得るL2及びL3キャッシュに関連するパラメータの現在の値を含むことができる。一実施形態において、ソフトウェア及び/又は他の制御ロジックは、テーブル310Bに記憶された閾値をプログラムするように構成されてもよい。別の実施形態では、テーブル310Bに記憶される閾値は、予め定められていてもよい。コントロールユニット300は、L2及びL3キャッシュ部分のサイズを動的に変更するのをサポートするために、又は、サイズ変更後にデータを再配置するために利用され得る他のテーブル(例えば、再マッピングテーブル)を含み得ることに留意されたい。
図4を参照すると、プロセッサ400の一実施形態が示されている。プロセッサ400は、コア405A〜405D及びキャッシュ410A〜410Dを含むことができる。他の実施形態において、プロセッサ405は、他の数のコア及び対応するキャッシュを含むことができる。各キャッシュ410A〜410Dは、L2キャッシュ及びL3スライスを含み、L2キャッシュ及びL3スライスのサイズは調整可能である。各キャッシュ410A〜410Dの合計サイズは、L2部分のサイズの増加がL3部分のサイズの減少によって相殺されるように、固定されてもよい。所定のキャッシュ410A〜410DのL2及びL3部分間のサイズミックスは、現在の動作条件及び/又はプロセッサ400によって実行されている現在のアプリケーションに対してプロセッサ性能が最適化されるように調整されてもよい。
図4に示すキャッシュ410A〜410Dのリソースの割り当ては、キャッシュ410A〜410DのL2及びL3部分間でスペースをどのように割り当てることができるかという一例を示している。図4に示すように、キャッシュ410Aの2つのウェイがL2キャッシュに割り当てられており、キャッシュ410Aの4つのウェイがL3キャッシュに割り当てられている。ここでの説明のために、キャッシュ410Aには6つのウェイが存在すると仮定することができ、L2キャッシュに割り当てられるキャッシュ410Aの容量が256キロバイト(KB)であり、L3キャッシュに割り当てられるキャッシュ410Aの容量が512KBであると仮定することもできる。キャッシュ410Aについて示されたL2及びL3部分の割り当ては、キャッシュ410B〜410Dに使用されてもよい。しかしながら、L2及びL3部分に対する容量の割り当てがキャッシュ410A〜410Dの各々で同一である必要はないことを理解されたい。
L3キャッシュ415は、コア405A〜405D間の共有キャッシュであってもよく、4つのL3スライスの全てが一緒に追加された場合、L3キャッシュ415に割り当てられた容量の合計は2メガバイト(MB)である。プロセッサ400は、所定のコア405A〜405Dに対する要求が、所定のコア405A〜405Dに対応するキャッシュ410A〜410Dとは異なるキャッシュ410A〜410DのL3スライスにマッピングされるように、アドレスインターリーブを利用することができる。例えば、コア405Aによって生成されたメモリ要求のアドレスは、キャッシュ410A、キャッシュ410B、キャッシュ410C及びキャッシュ410DのL3部分にマッピングされてもよい。他のコアは、同様のアドレスインターリーブ方式を用いて、キャッシュ410A〜410Dの全てにマッピングすることもできる。
キャッシュ410A〜410Dが、L2キャッシュに割り当てられたウェイの第1部分と、L3キャッシュに割り当てられたウェイの第2部分と、を有し得ることが図4に示されているが、これは、キャッシュを分割するためのスキームの単なる一例であることを理解されたい。他の実施形態において、キャッシュ410A〜410Dは、L2及びL3部分間で他の次元の部分(例えば、セット、バンク)に分割されてもよい。例えば、別の実施形態では、キャッシュ410A〜410D毎に、第1の数のセットをL2キャッシュに割り当て、第2の数のセットをL3キャッシュに割り当てることができる。
図5を参照すると、プロセッサ500の別の実施形態のブロック図が示されている。プロセッサ500は、コア505A〜505D及びキャッシュ510A〜510Dを含むことができる。他の実施形態において、プロセッサ505は、他の数のコアを含むことができる。各キャッシュ510A〜510DはL2部分及びL3部分を含み、L2部分及びL3部分のサイズは調整可能である。プロセッサ500は、各キャッシュ510A〜510DのL2及びL3部分を動的に調整するように構成されてもよい。
キャッシュ実装の一例が図5に示されている。キャッシュ510A〜510D毎に、3つのウェイがL2キャッシュに割り当てられており、3つのウェイがL3スライスに割り当てられている。一実施形態において、プロセッサ500は、L2キャッシュ及びL3キャッシュのサイズが調整された後のある時点でのプロセッサ400を表してもよい。本実施形態において、L3スライスは、各キャッシュ510A〜510Dの4つのウェイから各キャッシュ510A〜510Dの3つのウェイに減らされている。プロセッサ500は、1つ以上の条件を検出したことに応じて、L3キャッシュ515及びL2キャッシュのサイズを調整することができる。キャッシュサイズを調整するための条件の例は、図8〜13に関連して以下にさらに詳述される。
図5に示す実施形態では、各ウェイは、キャッシュ510A〜510D毎に128KBのデータに対応すると仮定することができる。したがって、キャッシュ510A〜510Dの各L2キャッシュは384KBの容量を含み、キャッシュ510A〜510Dの各L3スライスは384KBの容量を含む。共用L3キャッシュ515の容量の合計は、本実施形態では1.5MBである。他の実施形態では、キャッシュ510A〜510D毎に異なる数のウェイ、及び/又は、ウェイ毎に他の容量を有することができる。
一実施形態において、コア505Aは、そのL2キャッシュのキャッシュライン「X」のコピーをキャッシュすることができる。コア505Cは、キャッシュライン「X」のコピーを各L2キャッシュにキャッシュすることができる。しかしながら、ここでの説明のために、コア505Bは、キャッシュライン「X」のコピーをL2キャッシュに有しないと仮定することができる。キャッシュスライス510BのL2スライスのキャッシュミスの際に、コア505Bは、L3アドレスインターリーブがキャッシュライン「X」をコア505DのL3スライスにマッピングすると仮定して、要求をコア505Dに送信することができる。したがって、コア505DのL3スライスのキャッシュライン「X」を見つけるためにルックアップが実行され、コア505Bに提供される。
図6を参照すると、3つの異なる時点でのキャッシュ600の一実施形態のブロック図が示されている。キャッシュ600Aは、図6の上部に示されており、L2キャッシュ605Aと、L3スライス610Aと、を含む。L3スライス610Aは、他のコアに対応する他のキャッシュ(図示省略)のL3スライスを含むより大きなL3キャッシュの一部であってもよい。キャッシュ600Aは、動作条件の変更に応じて、L2キャッシュ605A及びL3スライス610Aのサイズを動的に調整するように構成されてもよい。キャッシュ600Aに示すように、L2キャッシュ605Aはウェイ0〜ウェイ2を含み、L3スライス610Aはウェイ3〜ウェイ7を含む。他の実施形態において、キャッシュ600Aは、他の数のウェイを含むことができる。キャッシュ600Aは、「N」個のセットを含むこともでき、「N」は、実施形態によって異なり得る正の整数である。キャッシュライン625は、キャッシュ600Aのセット0のウェイ3に記憶されており、キャッシュライン630は、キャッシュ600Aのセット1のウェイ3に記憶されており、キャッシュライン635は、キャッシュ600AのセットNのウェイ3に記憶されているものと示されている。キャッシュ600Aは、図を不明瞭にするのを避けるために図示されていない他のキャッシュラインを記憶可能であることに留意されたい。
ここでの説明のために、キャッシュ600Aの容量は、1つ以上の条件を検出することに応じて、ソフトウェアからコマンドを受信することに応じて、及び/又は、他のイベントに応じて、L2及びL3部分間で動的に再割り当てされると仮定することができる。図6の中央のキャッシュ600Bは、L2及びL3部分のサイズが変更された後の時点でのキャッシュ600Aを表すことを意図している。キャッシュ600Bに示すように、ウェイ3は、L3スライス610BからL2キャッシュ605Bに再割り当てされている。キャッシュライン625,630,635は、ウェイ3の同じ物理位置に留まることができるが、L3スライス610BではなくL2キャッシュ605Bに記憶されている。しかしながら、キャッシュライン625,630,635は、L2キャッシュ605Bのルックアップが実行された場合にキャッシュコントローラ(図示省略)がこれらのキャッシュラインを見つけるのを防ぐL2キャッシュ605Bのこれらの位置にマッピングしなくてもよい。
したがって、キャッシュコントローラは、L2キャッシュ605B及びL3スライス610Bの動的なサイズ変更に応じて、サイズ変更によって影響を受けたキャッシュラインを、それらのアドレスの適切なビットに基づいて、それらが実際にマッピングされる位置に再マッピング及びマイグレーションするように構成されてもよい。図6の下部のキャッシュ600C(L2キャッシュ605C及びL3スライス610Cを含む)は、キャッシュライン625,630,635が、L2マッピングに対応するそれらのアドレスビットに基づいて適切な位置に再マッピングされた後の時点でのキャッシュ600Bを表すことを意図している。ここでの説明のために、キャッシュライン625は、L2キャッシュ605Cのセット1のウェイ1に再マッピング及びマイグレーションされており、キャッシュライン630は、L2キャッシュ605CのセットN−1のウェイ0に再マッピング及びマイグレーションされており、キャッシュライン635は、L2キャッシュ605Cのセット0のウェイ0に再マッピング及びマイグレーションされている、と仮定することができる。あるいは、キャッシュライン625,630,635を再マッピング及びマイグレーションするのではなく、これらのキャッシュラインを無効化することができる。これらのキャッシュラインが将来再度要求された場合にはキャッシュミスが発生し、キャッシュラインは、アドレスビット及びL2マッピングに基づいて適切な位置でL2キャッシュに挿入される。
これらの再マッピングは、影響を受けたキャッシュラインのタグビット及びキャッシュマッピング方式に応じて変化する再マッピングスキームの一例を説明することを単に意図している。キャッシュ600の構成は、キャッシュの可能な構成の1つを示すことを意図していることを理解されたい。他の実施形態においては、他の数のセット、ウェイ及び/又は他のキャッシュ次元を用いて、他の構造のキャッシュを実装することができる。
図7を参照すると、複数のキャッシュラインのアドレスビットを示す図が示されている。サンプルのキャッシュラインアドレス700が図7の上部に示されており、サンプルのキャッシュライン700は、実施形態に応じて任意の数のビットを含む。アドレス700のビットの第1部分715は、L3キャッシュの所定のスライス(例えば、図6のL3スライス610A)を選択するために使用され、アドレス700のビットの第2部分720は、L2キャッシュ(例えば、図6のL2キャッシュ605A)の所定のセットを選択するために使用され、アドレス700のビットの第3部分725は、L3スライス(例えば、L3スライス610A)の所定のセットを選択するためのL3タグビットとして使用され得る。L3スライスインデックスビット715が2ビットを含み、L2セットインデックスビット720及びL3セットインデックスビット725が3ビットを含むことが示されているが、これは一実施形態の単なる例であり、他の実施形態では他の数のL3スライスインデックスビットと、L2及びL3セットインデックスビットと、を有してもよい。各種実施形態において、L2インデックスビットと、L3スライスビットと、L3インデックスビットとは、互いに別のものであってもよい。あるいは、各種実施形態では、L2インデックスと、L3スライスと、L3インデックスと、のうち1つ以上のビットが重複してもよい。
キャッシュライン625,630,635のアドレスビットは、図7の下部に示されている。ここでの説明のために、キャッシュライン625,630,635のL3スライスインデックスビット「00」は、キャッシュ600Aに示すように、キャッシュライン625,630,635の各々をL3スライス610Aにマッピングするために使用されると仮定することができる。ここでの説明のために、キャッシュライン625,630,635のL3セットインデックスビットは、キャッシュ600Aに示すように、キャッシュライン625,630,635の各々をL3スライス610Aの正しいセットにマッピングするために使用されると仮定することもできる。したがって、キャッシュライン625のアドレスのL3セットインデックス部分は、キャッシュライン625をL3スライス610Aのセット0にマッピングする「000」であり、キャッシュライン630のアドレスのL3セットインデックス部分は、キャッシュライン630をL3スライス610Aのセット1にマッピングする「001」であり、キャッシュライン635のアドレスのL3セットインデックス部分は、キャッシュライン635をL3スライス610AのセットN−1にマッピングする「111」である。この特定の実施形態では、「N」が8に等しいと仮定することができる。そして、ウェイ3がL3スライス610AからL2キャッシュ605Bに再割り当てされると、キャッシュライン625,630,635のアドレスのL2セットインデックス部分を使用して、キャッシュライン625,630,635の各々を、キャッシュ600Cで示すように、L2キャッシュ605Cの正しいセットに再マッピング及びマイグレーションすることができる。したがって、キャッシュライン625のアドレスのL2セットインデックス部分は、キャッシュライン625をL2キャッシュ605Cセット1にマッピングする「001」であり、キャッシュライン630のアドレスのL2セットインデックス部分は、キャッシュライン630をL2キャッシュ605CのセットN−1にマッピングする「111」であり、キャッシュライン635のアドレスのL2セットインデックス部分は、キャッシュライン635をL2キャッシュ605Cのセット0にマッピングする「000」である。
図7に示すキャッシュスライス及びセットマッピングを決定するために使用される特定のアドレスビットの例は、実施可能な形態の1つに過ぎないことを理解されたい。他の実施形態では、他のアドレスビットを使用して、対応するキャッシュのL2キャッシュ及びL3スライス内の位置へのキャッシュラインのマッピングを決定することができる。
図8を参照すると、論理キャッシュサイズを動的に調整する方法800の一実施形態が示されている。説明のために、本実施形態におけるステップは順番に示されている。後述する方法の各種実施形態では、説明した1つ以上の要素が、並行して、図示された順序と異なる順序で実行されてもよく、完全に省略されてもよいことに留意されたい。必要に応じて、他の追加の要素を実行することもできる。本明細書で説明する各種システム又はプロセッサの何れかは、方法800を実施するように構成されてもよい。
プロセッサは、第1論理キャッシュ及び第2論理キャッシュに関連する1つ以上のパラメータを監視することができる(ブロック805)。一実施形態において、単一のキャッシュを第1論理キャッシュ及び第2論理キャッシュに論理的に分割することができる。ここで、第1論理キャッシュはL2キャッシュを表し、第2論理キャッシュはL3キャッシュを表す。他の実施形態において、第1及び第2論理キャッシュは、プロセッサのキャッシュ階層の他のレベルを表すことができる。1つ以上のパラメータは、第1論理キャッシュ及び/又は第2論理キャッシュのキャッシュヒット率、第1論理キャッシュ及び/又は第2論理キャッシュのキャッシュミス率、異なる第1論理キャッシュ間及び/又は他のパラメータ間のキャッシュラインのマイグレーション率を含むことができる。
次に、プロセッサは、1つ以上のパラメータを1つ以上の閾値と比較することができる(ブロック810)。例えば、各種実施形態では、プロセッサは、第1論理キャッシュのキャッシュヒット率を第1閾値と比較し、第2論理キャッシュのキャッシュヒット率を第2閾値と比較し、第1論理キャッシュのヒット率と第2論理キャッシュのヒット率との差を第3閾値と比較し、マイグレーション率を第4閾値と比較し、及び/又は、他の比較を実行することができる。キャッシュヒット率又はキャッシュラインマイグレーション率が算出される時間は、実施形態に応じて変化し得る。いくつかの実施形態では、重要度の順に比較をランク付けしてもよく、その結果、所定の閾値における最高ランクの比較結果を超える場合には、他の全ての比較に優先する。別の実施形態では、1つの比較の結果が別の比較の結果を相殺するように、比較が等しく扱われてもよい。全般に、実施形態では、1つ以上の比較の1つ以上を個別に又は組み合わせて(例えば、第1及び第2の比較の各々が第1及び第2の所定の閾値を超える場合等)考慮する任意の機能を利用することができる。
次に、プロセッサは、第1及び第2論理キャッシュのサイズを調整すべきであると比較が示すかどうかを判別することができる(条件つきブロック815)。例えば、比較は、プロセッサ性能の改善を達成するために、第1論理キャッシュのサイズを減らし、第2論理キャッシュのサイズを増加させることを示すことができる。あるいは、比較は、プロセッサ性能の改善を達成するために、第1論理キャッシュのサイズを増加させ、第2論理キャッシュのサイズを減らすことを示してもよい。
第1及び第2論理キャッシュのサイズを調整すべきことを比較が示す場合(条件つきブロック815:「はい」)、プロセッサは、第1及び第2論理キャッシュのサイズを動的に調整することができる(ブロック820)。第1及び第2論理キャッシュのサイズを調整すべきことを比較が示さない場合(条件つきブロック815:「いいえ」)、プロセッサは、第1及び第2論理キャッシュの現在のサイズを維持することができる(ブロック825)。ブロック820,825の後、方法800は終了してもよい。方法800は、定期的な間隔で実行されてもよいことに留意されたい。以下の図9〜12は、特定のパラメータが監視され、1つ以上の閾値と比較される実施形態の更なる詳細を提供する。
図9を参照すると、キャッシュサイズを動的に調整する方法900の別の実施形態が示されている。説明のために、本実施形態におけるステップは、順番に示されている。後述する方法の各種実施形態では、説明した1つ以上の要素が、並行して、図示された順序と異なる順序で実行されてもよく、完全に省略されてもよいことに留意されたい。必要に応じて、他の追加の要素を実行することもできる。本明細書で説明する各種システム又はプロセッサの何れかは、方法900を実施するように構成されてもよい。
プロセッサは、第1キャッシュのキャッシュヒット率を監視することができる(ブロック905)。あるいは、ブロック905において、プロセッサは、第1キャッシュのキャッシュミス率(1−キャッシュヒット率に等しい)を監視することができる。一実施形態において、プロセッサは、実施形態毎に変化する数のコアを有するマルチコアプロセッサであってもよい。各種実施形態において、単一のキャッシュは、第1(論理)キャッシュ及び第2(論理)キャッシュに論理的に分割される。一実施形態において、第1キャッシュはL2キャッシュであってもよく、第2キャッシュはL3キャッシュであってもよい。次に、プロセッサは、第1キャッシュのヒット率を閾値と比較してもよい(ブロック910)。一実施形態において、閾値はプログラム可能であってもよい。
第1キャッシュのヒット率が閾値より大きい場合(条件つきブロック915:「はい」)、プロセッサは、第1キャッシュのサイズを増加させ、第2キャッシュのサイズを減らすことができる(ブロック920)。第1キャッシュのヒット率が閾値より低い場合(条件つきブロック915:「いいえ」)、プロセッサは、第1キャッシュ及び第2キャッシュの現在のサイズを維持することができる(ブロック925)。ブロック920,925の後、方法900は終了してもよい。一実施形態において、方法900は、定期的な間隔で繰り返され、キャッシュサイズが第1キャッシュのヒット率に基づいて調整されるべきかどうかを決定することができる。方法900は、1つ以上の他の方法(例えば、図10〜12の方法1000,1100,1200)と並行してプロセッサによって実行されてもよいことに留意されたい。全般に、実施形態は、1つ以上の比較を個別に又は組み合わせて(例えば、第1及び第2の比較の各々が第1及び第2の所定の閾値を超える場合等)考慮する任意の機能を利用することができる。
図10を参照すると、キャッシュサイズをいつ調整するかを決定する方法1000の一実施形態が示されている。説明のために、本実施形態におけるステップは、順番に示されている。後述する方法の各種実施形態では、説明した1つ以上の要素、並行して、図示された順序とは異なる順序で実行されてもよく、完全に省略されてもよいことに留意されたい。必要に応じて、他の追加の要素を実行することもできる。本明細書で説明される各種システム又はプロセッサの何れかは、方法1000を実施するように構成されてもよい。
プロセッサは、第1キャッシュ及び第2キャッシュのヒット率を監視することができる(ブロック1005)。ここでの説明のために、第1(論理)キャッシュは、単一の物理キャッシュ内の第2(論理)キャッシュと接続されていると仮定することができる。一実施形態において、第1キャッシュはL2キャッシュであってもよく、第2キャッシュはL3キャッシュであってもよい。他の実施形態において、第1及び第2キャッシュは、マルチレベルキャッシュ階層の他のキャッシュレベルであってもよい。次に、プロセッサは、第1キャッシュのヒット率と第2キャッシュのヒット率との間の差を第1及び第2閾値と比較することができる(ブロック1010)。一実施形態において、第1及び第2閾値は、プログラム可能であってもよい。
第1キャッシュの(FC)ヒット率が、第1閾値による第2キャッシュの(SC)ヒット率よりも大きい場合(条件つきブロック1015:「はい」)、プロセッサは、第1キャッシュのサイズを増加させ、第2キャッシュのサイズを減らすことができる(ブロック1020)。第1キャッシュのヒット率が、第1閾値による第2キャッシュのヒット率よりも大きくない場合(条件つきブロック1015:「いいえ」)、プロセッサは、第2キャッシュのヒット率が、第2閾値による第1キャッシュのヒット率よりも大きいかどうかを決定することができる(条件つきブロック1025)。第2キャッシュのヒット率が、第2閾値による第1キャッシュのヒット率よりも大きい場合(条件つきブロック1025:「はい」)、プロセッサは、第2キャッシュのサイズを増加させ、第1キャッシュのサイズを減らすことができる(ブロック1030)。第2キャッシュのヒット率が、第2閾値による第1キャッシュのヒット率よりも大きくない場合(条件つきブロック1025:「いいえ」)、プロセッサは、第1キャッシュ及び第2キャッシュの現在のサイズを維持することができる(ブロック1035)。ブロック1020,1030,1035の後、方法1000は終了してもよい。一実施形態において、方法1000は、定期的に繰り返され、キャッシュサイズが第1及び第2キャッシュのヒット率の差に基づいて調整されるべきかどうかを決定してもよい。
図11を参照すると、キャッシュサイズをいつ調整するかについて決定する方法1100の別の実施形態が示されている。説明のために、本実施形態におけるステップは、順番に示されている。後述する方法の各種実施形態では、説明した1つ以上の要素は、並行して、図示された順序とは異なる順序で実行されてもよく、完全に省略されてもよいことに留意されたい。必要に応じて、他の追加の要素を実行することができる。本明細書で説明される各種システム又はプロセッサの何れかは、方法1100を実施するように構成されてもよい。
プロセッサは、第1キャッシュ及び第2キャッシュのヒット率を監視することができる(ブロック1105)。ここでの説明のために、単一の物理キャッシュが第1及び第2キャッシュに論理的に分割されると仮定することができる。一実施形態において、第1キャッシュはL2キャッシュであってもよく、第2キャッシュはL3キャッシュであってもよい。他の実施形態において、第1及び第2キャッシュは、マルチレベルキャッシュ階層の他のキャッシュレベルであってもよい。次に、プロセッサは、第1キャッシュのヒット率を第1閾値と比較することができる(ブロック1110)。
第1キャッシュのヒット率が第1閾値よりも低い場合(条件つきブロック1115:「はい」)、プロセッサは、第2キャッシュのヒット率を第2閾値と比較することができる(ブロック1120)。一実施形態において、第1及び第2閾値は、プログラム可能であってもよい。第1キャッシュのヒット率が第1閾値よりも大きい場合(条件つきブロック1115:「いいえ」)、プロセッサは、第1及び第2キャッシュの現在のサイズを維持することができる(ブロック1125)。いくつかの実施形態では、プロセッサは、第1キャッシュのヒット率を複数の閾値と比較してもよく、第1閾値は比較的低い閾値である。プロセッサは、いくつかのシナリオでは、第1キャッシュのヒット率を比較的高い閾値と比較することができ、第1キャッシュのヒット率が比較的高い閾値を超えたことに応じて第1キャッシュのサイズを増加させ、第2キャッシュのサイズを減らすことができる。このような実施形態は、図9の方法900に関して説明されている。
第2キャッシュのヒット率が第2閾値よりも低い場合(条件つきブロック1130:「はい」)、プロセッサは、第2キャッシュのサイズを増加させ、第1キャッシュのサイズを減らすことができる(ブロック1135)。第1及び第2キャッシュのヒット率の各々が対応する閾値未満である場合、第2キャッシュに含まれるよりも多くのデータにプロセッサがアクセスしていることを示しているので、プロセッサは、第2キャッシュのサイズを増加させ、第1キャッシュのサイズを減らすことによって、性能を高めることができる。第2キャッシュのヒット率が第2閾値よりも大きい場合(条件つきブロック1130:「いいえ」)、プロセッサは、第1及び第2キャッシュの現在のサイズを維持することができる(ブロック1125)。ブロック1125,1135の後、方法1100は終了してもよい。
図12を参照すると、キャッシュ階層のマイグレーション率を監視する方法1200の一実施形態が示されている。説明のために、本実施形態におけるステップは、順番に示されている。後述する方法の各種実施形態では、説明した1つ以上の要素が、並行して、図示されたものとは異なる順序で実行されてもよいし、完全に省略されてもよいことに留意されたい。必要に応じて、他の追加の要素を実行することもできる。本明細書で説明されている各種システム又はプロセッサの何れかは、方法1200を実施するように構成されてもよい。
マルチレベルキャッシュ階層を有するマルチコアプロセッサは、マルチレベルキャッシュ階層の所定のレベルのキャッシュ間のマイグレーション率を監視することができる(ブロック1205)。一実施形態において、所定のレベルは、キャッシュ階層のL2レベルであってもよい。次に、プロセッサは、マイグレーション率を閾値と比較することができる(ブロック1210)。一実施形態において、閾値は、プログラム可能であってもよい。マイグレーション率が閾値よりも大きい場合(条件つきブロック1215:「はい」)、プロセッサは、所定のレベルのキャッシュのサイズを減らし、キャッシュ階層内で次に高いレベルのキャッシュのサイズを増加させることができる(ブロック1220)。一実施形態において、次に高いレベルは、キャッシュ階層のL3レベルであってもよい。マイグレーション率が閾値よりも低い場合(条件つきブロック1215:「いいえ」)、プロセッサは、所定のレベル及び次に高いレベルの現在のキャッシュサイズを維持することができる(ブロック1225)。ブロック1220,1225の後、方法1200は終了してもよい。
図13を参照すると、隣接するキャッシュレベル間で異なる容量の割り当てを利用する方法1300の一実施形態が示されている。説明のために、本実施形態におけるステップは、順番に示されている。後述する方法の各種実施形態では、説明した1つ以上の要素が、並行して、図示されたものとは異なる順序で実行されてもよいし、完全に省略されてもよいことに留意されたい。必要に応じて、他の追加の要素が実行されてもよい。本明細書に記載されている各種システム又はプロセッサの何れかは、方法1300を実施するように構成されてもよい。
マルチレベルキャッシュ階層を有するプロセッサは、第1アプリケーションを実行することができる(ブロック1305)。マルチレベルキャッシュ階層は、第1論理キャッシュ(又は第1キャッシュ)及び第2論理キャッシュ(又は第2キャッシュ)の一部を含む物理キャッシュを含んでもよい。一実施形態において、第1キャッシュはL2キャッシュであってもよく、第2キャッシュはL3キャッシュであってもよい。プロセッサは、第1アプリケーションを実行している間に、物理キャッシュの第1キャッシュと第2キャッシュとの間で第1容量割り当てを利用することができる(ブロック1310)。一実施形態において、第1容量割り当ては、第1キャッシュに割り当てられる第1容量と、第2キャッシュに割り当てられる第2容量と、を含むことができ、第1アプリケーションの好適な割り当てであってもよい。第1容量及び第2容量の組み合わせ(又は合計)は、第3容量に等しくてもよく、第3容量は、所定の物理キャッシュに対して固定であってもよい。
次に、プロセッサは、第2アプリケーションを実行するための切り替えを検出することができる(ブロック1315)。プロセッサは、第2アプリケーションを実行するための切り替えを検出したことに応じて、第2アプリケーションを実行している間に、物理キャッシュの第1キャッシュと第2キャッシュとの間で第2容量割り当てを利用することができる(ブロック1320)。ここでの説明のために、第2容量割り当ては、第2アプリケーションの好適な割り当てであると仮定することができる。第2容量割り当ては、第1容量割り当てとは異なり、第1キャッシュに割り当てられる第4容量と、第2キャッシュに割り当てられる第5容量と、を含む。言い換えれば、第4容量は第1容量と異なり、第5容量は第2容量と異なる。また、第4容量及び第5容量の組み合わせは、第3容量に等しくてもよい。ブロック1320の後、方法1300は終了してもよい。なお、場合によっては、プロセッサが異なるアプリケーションの実行を切り替える場合に、異なるアプリケーションは第1及び第2キャッシュに対して同一の好適な容量割り当てを有することがあることに留意されたい。したがって、プロセッサは、異なるアプリケーションが同一の好適な容量割り当てを共有する場合、異なるアプリケーションを実行する間に切り替えるときに容量割り当てを変更しなくてもよい。
図14を参照すると、フィルデータを転送するための方法1400の一実施形態が示されている。説明のために、本実施形態におけるステップは、順番に示されている。後述する方法の各種実施形態では、説明した1つ以上の要素が、並行して、図示された順序とは異なる順序で実行されてもよいし、完全に省略されてもよいことに留意されたい。必要に応じて、他の追加の要素を実行することもできる。本明細書で説明されている各種システム又はプロセッサの何れかは、方法1400を実施するように構成されてもよい。
プロセッサは、第1メモリアドレスをターゲットとする第1要求を第2キャッシュの第1部分からメモリに送信することができる(ブロック1405)。一実施形態において、プロセッサは、第2キャッシュの第1部分ではミスになっている第1要求に応じて、第1要求をメモリに送信することができる。各種実施形態において、第1キャッシュは論理L2キャッシュであってもよく、第2キャッシュは論理L3キャッシュであってもよい。他の実施形態において、第1及び第2キャッシュは、マルチレベルキャッシュ階層の他の論理レベルにあってもよい。
次に、キャッシュコントローラは、第1要求に対応する第1フィルデータをメモリから受信する前に、第1要求をメモリに送信した後に第2キャッシュの第1部分を第1キャッシュに再割り当てすることができる(ブロック1410)。次いで、キャッシュコントローラは、第1フィルデータをメモリから受信することができる(ブロック1415)。キャッシュコントローラは、第1メモリアドレスが第2キャッシュの第2部分に再マッピングされたと判別することができる(ブロック1420)。ここでの説明のために、第2キャッシュの第1部分を第1キャッシュに再割り当てすることによって、第1メモリアドレスが第2キャッシュの第2部分に再マッピングされたと仮定することができる。キャッシュコントローラは、第1メモリアドレスが第2キャッシュの第2部分に再マッピングされたと判別したことに応じて、第1フィルデータを第2キャッシュの第2部分に転送することができる(ブロック1425)。別の実施形態では、キャッシュコントローラは、第1フィルデータを第2キャッシュの第2部分に転送するのではなく、第1フィルデータをドロップ(drop)してもよい。ブロック1425の後、方法1400は終了してもよい。
図15を参照すると、物理キャッシュの一部を再割り当てする方法1500の一実施形態が示されている。説明のために、本実施形態におけるステップは、順番に示されている。後述する方法の各種実施形態では、説明した1つ以上の要素が、並行して、図示される順序とは異なる順序で実行されてもよいし、完全に省略されてもよいことに留意されたい。必要に応じて、他の追加の要素が実行されてもよい。本明細書で説明されている各種システム又はプロセッサの何れかは、方法1500を実施するように構成されてもよい。
プロセッサは、所定の時点で、物理キャッシュの第1部分を第1論理キャッシュの一部として利用することができる(ブロック1505)。一実施形態において、物理キャッシュは、第1論理キャッシュ及び第2論理キャッシュを含み、第1論理キャッシュはL2キャッシュであってもよく、第2論理キャッシュはL3キャッシュ(又はL3キャッシュのスライス)であってもよい。実施形態に応じて、第1部分は、物理キャッシュの第1ウェイ、第1セット、第1バンク又は別の部分であってもよい。プロセッサは、イベント又は1つ以上の条件の検出に応じて、物理キャッシュの第1部分を第2論理キャッシュに動的に再割り当てすることができる(ブロック1510)。実施形態に応じて、イベントは、第1アプリケーションから第2アプリケーションへ切り替えること、キャッシュヒット率が閾値を上回るか下回ったことを検出したこと、キャッシュヒット率の差が閾値を上回ると検出したこと、及び/又は、1つ以上の他の条件であってもよい。
次に、プロセッサは、物理キャッシュの第1部分を第2論理キャッシュの一部として利用することができる(ブロック1515)。例えば、プロセッサは、ブロック1515において、第2論理キャッシュによって受信されたキャッシュラインを物理キャッシュの第1部分に記憶することができる。ブロック1515の後、方法1500は終了してもよい。プロセッサは、プロセッサの長い動作期間に亘って何回も第1及び第2論理キャッシュ間の容量を動的に再割り当てすることができ、物理キャッシュの第1部分が第1及び第2論理キャッシュ間を複数回行き来することができるということに留意されたい。
各種実施形態において、ソフトウェアアプリケーションのプログラム命令を用いて、上述した方法及び/又はメカニズムを実装することができる。プログラム命令は、ハイレベルプログラミング言語(例えばC言語)におけるハードウェアの挙動を記述することができる。あるいは、Verilog等のハードウェア設計言語(HDL)を使用することができる。プログラム命令は、非一時的なコンピュータ可読記憶媒体に記憶されてもよい。数多くのタイプの記憶媒体が利用可能である。記憶媒体は、プログラムの実行のためにプログラム命令及び付随するデータをコンピューティングシステムに提供するために、使用中にコンピューティングシステムによってアクセス可能であってもよい。コンピューティングシステムは、少なくとも、1つ以上のメモリと、プログラム命令を実行するように構成された1つ以上のプロセッサと、を含むことができる。
上記の実施形態は実装の非限定的な例に過ぎないことを強調しておく。上記の開示が完全に理解されれば、当業者には数多くの変形及び修正が明らかになるであろう。以下の特許請求の範囲は、かかる変形及び修正の全てを包含するものと解釈されることを意図している。

Claims (19)

  1. 第1コアに接続された第1物理キャッシュと、
    第2コアに接続された第2物理キャッシュと、
    コントロールユニットと、を備え、
    前記コントロールユニットは、
    前記第1物理キャッシュを第1論理キャッシュと第2論理キャッシュの第1部分とに分割することと、
    前記第2物理キャッシュを第3論理キャッシュと前記第2論理キャッシュの第2部分とに分割することであって、前記第1論理キャッシュ及び前記第3論理キャッシュはキャッシュ階層の第1レベルを表し、前記第2論理キャッシュは前記キャッシュ階層の第2レベルを表し、前記第1論理キャッシュ及び前記第2論理キャッシュの各々は高いレベルのメモリから取得されたデータを記憶するように構成されている、ことと、
    前記第2論理キャッシュの前記第1部分の第1ウェイを前記第1論理キャッシュに再割り当てすることと、
    前記第2論理キャッシュの前記第1ウェイに記憶した第1キャッシュラインを識別することと、
    前記第1ウェイを前記第2論理キャッシュから前記第1論理キャッシュに再割り当てすることに応じて、前記第1キャッシュラインを無効化することと、
    を行うように構成されている、
    プロセッサ。
  2. 前記第1論理キャッシュは前記第1コアの専用キャッシュであり、
    前記第3論理キャッシュは前記第2コアの専用キャッシュであり、
    前記第2論理キャッシュは前記第1コア及び前記第2コアの両方によって共有されている、請求項1に記載のプロセッサ。
  3. 前記コントロールユニットは、
    アドレスを含む要求を受信したことに応じて、前記第1論理キャッシュにおいてルックアップを実行することと、
    前記第1論理キャッシュにおいて前記要求がミスしたと判別した場合に、
    前記アドレスが前記第2論理キャッシュの前記第1部分を選択することを判別したことに応じて、前記第2論理キャッシュの前記第1部分においてルックアップを実行することと、
    前記アドレスが前記第2論理キャッシュの前記第2部分を選択することを判別したことに応じて、前記第2論理キャッシュの前記第2部分においてルックアップを実行することと、
    を行うように構成されている、請求項1に記載のプロセッサ。
  4. 前記プロセッサは、1つ以上のキャッシュのキャッシュヒット率及び前記第1論理キャッシュと前記第3論理キャッシュとの間のキャッシュデータのマイグレーション率のうち1つ以上に応じて、前記第1論理キャッシュ、前記第2論理キャッシュ及び前記第3論理キャッシュのうち1つ以上のサイズを変更するように構成されている、請求項1に記載のプロセッサ。
  5. 前記プロセッサは、
    第1メモリアドレスにおいてミスを検出したことに応じて、前記第2論理キャッシュ内の元の位置をターゲットとする第1要求を送信することと、
    前記第1要求をメモリに送信した後であって第1フィルデータをメモリから受信する前に、前記元の位置を前記第2論理キャッシュから前記第1論理キャッシュに再割り当てすることであって、前記第1フィルデータは前記第1要求に対応している、ことと、
    前記第1フィルデータをメモリから受信することと、
    前記第1メモリアドレスが前記第2論理キャッシュの前記元の位置とは異なる前記第2論理キャッシュ内の新たな位置に再マッピングされたことを判別することと、
    前記第1フィルデータを前記第2論理キャッシュの前記新たな位置に記憶することと、
    を行うように構成されている、請求項1に記載のプロセッサ。
  6. 前記プロセッサは、第1アプリケーションの実行から第2アプリケーションの実行への切り替えに応じて、前記第1論理キャッシュの記憶容量を減らし、前記第2論理キャッシュの記憶容量を増加させるように構成されている、請求項1に記載のプロセッサ。
  7. 第1コアに接続された第1物理キャッシュを第1論理キャッシュと第2論理キャッシュの第1部分とに分割することと、
    第2コアに接続された第2物理キャッシュを第3論理キャッシュと前記第2論理キャッシュの第2部分とに分割することであって、前記第1論理キャッシュ及び前記第3論理キャッシュはキャッシュ階層の第1レベルを表し、前記第2論理キャッシュは前記キャッシュ階層の第2レベルを表し、前記第1論理キャッシュ及び前記第2論理キャッシュの各々は高いレベルのメモリから取得されたデータを記憶するように構成されている、ことと、
    前記第2論理キャッシュの前記第1部分の第1ウェイを前記第1論理キャッシュに再割り当てすることと、
    前記第2論理キャッシュの前記第1ウェイに記憶した第1キャッシュラインを識別することと、
    前記第1ウェイを前記第2論理キャッシュから前記第1論理キャッシュに再割り当てすることに応じて、前記第1キャッシュラインを無効化することと、を含む、
    方法。
  8. 前記第1論理キャッシュは前記第1コアの専用キャッシュであり、
    前記第3論理キャッシュは前記第2コアの専用キャッシュであり、
    前記第2論理キャッシュは前記第1コア及び前記第2コアの両方によって共有されている、請求項7に記載の方法。
  9. アドレスを含む要求を受信したことに応じて、前記第1論理キャッシュにおいてルックアップを実行することと、
    前記第1論理キャッシュにおいて前記要求がミスしたと判別した場合に、
    前記アドレスが前記第2論理キャッシュの前記第1部分を選択することを判別したことに応じて、前記第2論理キャッシュの前記第1部分においてルックアップを実行することと、
    前記アドレスが前記第2論理キャッシュの前記第2部分を選択することを判別したことに応じて、前記第2論理キャッシュの前記第2部分においてルックアップを実行することと、を含む、請求項7に記載の方法。
  10. 1つ以上のキャッシュのキャッシュヒット率及び前記第1論理キャッシュと前記第3論理キャッシュとの間のキャッシュデータのマイグレーション率のうち1つ以上に応じて、前記第1論理キャッシュ、前記第2論理キャッシュ及び前記第3論理キャッシュのうち1つ以上のサイズを変更することを含む、請求項7に記載の方法。
  11. 第1メモリアドレスにおいてミスを検出したことに応じて、前記第2論理キャッシュ内の元の位置をターゲットとする第1要求を送信することと、
    前記第1要求をメモリに送信した後であって第1フィルデータをメモリから受信する前に、前記元の位置を前記第2論理キャッシュから前記第1論理キャッシュに再割り当てすることであって、前記第1フィルデータは前記第1要求に対応している、ことと、
    前記第1フィルデータをメモリから受信することと、
    前記第1メモリアドレスが前記第2論理キャッシュの前記元の位置とは異なる前記第2論理キャッシュ内の新たな位置に再マッピングされたことを判別することと、
    前記第1フィルデータを前記第2論理キャッシュの前記新たな位置に記憶することと、を含む、請求項7に記載の方法。
  12. 第1アプリケーションの実行から第2アプリケーションの実行への切り替えに応じて、前記第1論理キャッシュの記憶容量を減らし、前記第2論理キャッシュの記憶容量を増加させることを含む、請求項7に記載の方法。
  13. メモリと、
    第1コアに接続された第1物理キャッシュと、第2コアに接続された第2物理キャッシュと、コントロールユニットと、を含むプロセッサと、を備え、
    前記コントロールユニットは、
    前記第1物理キャッシュを第1論理キャッシュと第2論理キャッシュの第1部分とに分割することと、
    前記第2物理キャッシュを第3論理キャッシュと前記第2論理キャッシュの第2部分とに分割することであって、前記第1論理キャッシュ及び前記第3論理キャッシュはキャッシュ階層の第1レベルを表し、前記第2論理キャッシュは前記キャッシュ階層の第2レベルを表し、前記第1論理キャッシュ及び前記第2論理キャッシュの各々は高いレベルのメモリから取得されたデータを記憶するように構成されている、ことと、
    前記第2論理キャッシュの前記第1部分の第1ウェイを前記第1論理キャッシュに再割り当てすることと、
    前記第2論理キャッシュの前記第1ウェイに記憶した第1キャッシュラインを識別することと、
    前記第1ウェイを前記第2論理キャッシュから前記第1論理キャッシュに再割り当てすることに応じて、前記第1キャッシュラインを無効化することと、
    を行うように構成されている、
    システム。
  14. 前記第1論理キャッシュは前記第1コアの専用キャッシュであり、
    前記第3論理キャッシュは前記第2コアの専用キャッシュであり、
    前記第2論理キャッシュは前記第1コア及び前記第2コアの両方によって共有されている、請求項13に記載のシステム。
  15. 前記コントロールユニットは、
    アドレスを含む要求を受信したことに応じて、前記第1論理キャッシュにおいてルックアップを実行することと、
    前記第1論理キャッシュにおいて前記要求がミスしたと判別した場合に、
    前記アドレスが前記第2論理キャッシュの前記第1部分を選択することを判別したことに応じて、前記第2論理キャッシュの前記第1部分においてルックアップを実行することと、
    前記アドレスが前記第2論理キャッシュの前記第2部分を選択することを判別したことに応じて、前記第2論理キャッシュの前記第2部分においてルックアップを実行することと、
    を行うように構成されている、請求項13に記載のシステム。
  16. 前記プロセッサは、1つ以上のキャッシュのキャッシュヒット率及び前記第1論理キャッシュと前記第3論理キャッシュとの間のキャッシュデータのマイグレーション率のうち1つ以上に応じて、前記第1論理キャッシュ、前記第2論理キャッシュ及び前記第3論理キャッシュのうち1つ以上のサイズを変更するように構成されている、請求項13に記載のシステム。
  17. 前記プロセッサは、
    第1メモリアドレスにおいてミスを検出したことに応じて、前記第2論理キャッシュ内の元の位置をターゲットとする第1要求を送信することと、
    前記第1要求をメモリに送信した後であって第1フィルデータをメモリから受信する前に、前記元の位置を前記第2論理キャッシュから前記第1論理キャッシュに再割り当てすることであって、前記第1フィルデータは前記第1要求に対応している、ことと、
    前記第1フィルデータをメモリから受信することと、
    前記第1メモリアドレスが前記第2論理キャッシュの前記元の位置とは異なる前記第2論理キャッシュ内の新たな位置に再マッピングされたことを判別することと、
    前記第1フィルデータを前記第2論理キャッシュの前記新たな位置に記憶することと、
    を行うように構成されている、請求項13に記載のシステム。
  18. 前記プロセッサは、第1アプリケーションの実行から第2アプリケーションの実行への切り替えに応じて、前記第1論理キャッシュの記憶容量を減らし、前記第2論理キャッシュの記憶容量を増加させるように構成されている、請求項13に記載のシステム。
  19. 前記アドレスは、
    前記第1論理キャッシュの少なくとも一部を識別する1つ以上のビットと、
    前記第2論理キャッシュの第1部分及び前記第2論理キャッシュの第2部分のうち何れかを識別する1つ以上のビットと、を含む、請求項3に記載のプロセッサ。
JP2018531516A 2015-12-17 2016-09-20 ハイブリッドキャッシュ Active JP6730434B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/973,448 2015-12-17
US14/973,448 US10255190B2 (en) 2015-12-17 2015-12-17 Hybrid cache
PCT/US2016/052722 WO2017105575A1 (en) 2015-12-17 2016-09-20 Hybrid cache

Publications (3)

Publication Number Publication Date
JP2019502996A JP2019502996A (ja) 2019-01-31
JP2019502996A5 JP2019502996A5 (ja) 2019-10-31
JP6730434B2 true JP6730434B2 (ja) 2020-07-29

Family

ID=59057364

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018531516A Active JP6730434B2 (ja) 2015-12-17 2016-09-20 ハイブリッドキャッシュ

Country Status (6)

Country Link
US (1) US10255190B2 (ja)
EP (1) EP3391227A4 (ja)
JP (1) JP6730434B2 (ja)
KR (1) KR102414157B1 (ja)
CN (1) CN108431786B (ja)
WO (1) WO2017105575A1 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2761466B1 (en) * 2011-09-30 2020-08-05 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy
CN106095587B (zh) * 2016-06-24 2019-12-24 北京金山安全软件有限公司 应用程序的缓存扫描方法、装置及电子设备
US11397687B2 (en) * 2017-01-25 2022-07-26 Samsung Electronics Co., Ltd. Flash-integrated high bandwidth memory appliance
US11016665B2 (en) * 2018-01-23 2021-05-25 Seagate Technology Llc Event-based dynamic memory allocation in a data storage device
CN109117291A (zh) * 2018-08-27 2019-01-01 惠州Tcl移动通信有限公司 基于多核处理器的数据调度处理方法、装置和计算机设备
US10740234B2 (en) * 2018-09-04 2020-08-11 International Business Machines Corporation Virtual processor cache reuse
CN112148665B (zh) * 2019-06-28 2024-01-09 深圳市中兴微电子技术有限公司 缓存的分配方法及装置
US11372758B2 (en) * 2020-05-12 2022-06-28 Jackson State University Dynamic reconfigurable multi-level cache for multi-purpose and heterogeneous computing architectures
KR102612947B1 (ko) * 2021-03-31 2023-12-11 광운대학교 산학협력단 통합 l2 캐시-변환 색인 버퍼 메모리의 제어 방법 및 장치
CN113259177B (zh) * 2021-06-17 2021-10-15 国网江苏省电力有限公司信息通信分公司 虚拟网络切片的重构方法和装置
KR102514268B1 (ko) * 2021-07-14 2023-03-24 연세대학교 산학협력단 데이터 마이그레이션 정책 스위칭 방법 및 장치
US11841798B2 (en) * 2021-08-09 2023-12-12 Arm Limited Selective allocation of memory storage elements for operation according to a selected one of multiple cache functions
US11989142B2 (en) 2021-12-10 2024-05-21 Samsung Electronics Co., Ltd. Efficient and concurrent model execution
GB2622841A (en) * 2022-09-29 2024-04-03 Imagination Tech Ltd Distributed system level cache

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6324621B2 (en) * 1998-06-10 2001-11-27 International Business Machines Corporation Data caching with a partially compressed cache
US6792509B2 (en) 2001-04-19 2004-09-14 International Business Machines Corporation Partitioned cache of multiple logical levels with adaptive reconfiguration based on multiple criteria
US20030145170A1 (en) * 2002-01-31 2003-07-31 Kever Wayne D. Dynamically adjusted cache power supply to optimize for cache access or power consumption
US6868485B1 (en) 2002-09-27 2005-03-15 Advanced Micro Devices, Inc. Computer system with integrated directory and processor cache
US20040103251A1 (en) 2002-11-26 2004-05-27 Mitchell Alsup Microprocessor including a first level cache and a second level cache having different cache line sizes
US7643480B2 (en) * 2004-01-22 2010-01-05 Hain-Ching Liu Method and system for reliably and efficiently transporting data over a network
US7257678B2 (en) 2004-10-01 2007-08-14 Advanced Micro Devices, Inc. Dynamic reconfiguration of cache memory
US8037281B2 (en) * 2005-04-07 2011-10-11 Advanced Micro Devices, Inc. Miss-under-miss processing and cache flushing
US20060248287A1 (en) * 2005-04-29 2006-11-02 Ibm Corporation Methods and arrangements for reducing latency and snooping cost in non-uniform cache memory architectures
US7389402B2 (en) 2005-06-07 2008-06-17 Advanced Micro Devices, Inc. Microprocessor including a configurable translation lookaside buffer
US20070143546A1 (en) * 2005-12-21 2007-06-21 Intel Corporation Partitioned shared cache
US20080104323A1 (en) 2006-10-26 2008-05-01 Colglazier Daniel J Method for identifying, tracking, and storing hot cache lines in an smp environment
US8019946B2 (en) * 2008-07-31 2011-09-13 Samsung Electronics Co., Ltd. Method and system for securing instruction caches using cache line locking
US8990506B2 (en) * 2009-12-16 2015-03-24 Intel Corporation Replacing cache lines in a cache memory based at least in part on cache coherency state information
US8412971B2 (en) * 2010-05-11 2013-04-02 Advanced Micro Devices, Inc. Method and apparatus for cache control
US8788783B1 (en) * 2010-06-18 2014-07-22 Disney Enterprises, Inc. Dynamically tuning the size of a cache stored in a shared memory
US20120144123A1 (en) * 2010-12-01 2012-06-07 International Business Machines Corporation Read-ahead processing in networked client-server architecture
US8775737B2 (en) * 2010-12-02 2014-07-08 Microsoft Corporation Efficient cache management
US20120303897A1 (en) * 2011-05-28 2012-11-29 Sakthivel Komarasamy Pullagoundapatti Configurable set associative cache way architecture
WO2013101092A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Data control using last accessor information
GB2509755B (en) * 2013-01-14 2015-07-08 Imagination Tech Ltd Partitioning a shared cache using masks associated with threads to avoiding thrashing
CN105027211B (zh) * 2013-01-31 2018-09-21 慧与发展有限责任合伙企业 自适应粒度行缓冲器高速缓存
US9336144B2 (en) * 2013-07-25 2016-05-10 Globalfoundries Inc. Three-dimensional processing system having multiple caches that can be partitioned, conjoined, and managed according to more than one set of rules and/or configurations
US9251081B2 (en) 2013-08-01 2016-02-02 Advanced Micro Devices, Inc. Management of caches
KR101480143B1 (ko) * 2013-08-02 2015-01-06 전남대학교산학협력단 멀티코어 프로세서의 캐쉬 교체 방법 및 그 방법에 의해 동작하는 멀티코어 프로세서
US9244724B2 (en) * 2013-08-15 2016-01-26 Globalfoundries Inc. Management of transactional memory access requests by a cache memory
WO2015030756A1 (en) 2013-08-29 2015-03-05 Empire Technology Development Llc Cache partitioning in a multicore processor
US9208103B2 (en) * 2013-09-26 2015-12-08 Cavium, Inc. Translation bypass in multi-stage address translation
US20150205724A1 (en) 2014-01-20 2015-07-23 Honeywell International Inc. System and method of cache partitioning for processors with limited cached memory pools
US9710383B1 (en) * 2015-09-29 2017-07-18 EMC IP Holding Company LLC Caching techniques

Also Published As

Publication number Publication date
CN108431786A (zh) 2018-08-21
WO2017105575A1 (en) 2017-06-22
EP3391227A4 (en) 2019-08-28
JP2019502996A (ja) 2019-01-31
US20170177492A1 (en) 2017-06-22
KR20180085752A (ko) 2018-07-27
CN108431786B (zh) 2024-05-03
EP3391227A1 (en) 2018-10-24
KR102414157B1 (ko) 2022-06-28
US10255190B2 (en) 2019-04-09

Similar Documents

Publication Publication Date Title
JP6730434B2 (ja) ハイブリッドキャッシュ
JP6203937B2 (ja) 計算機およびメモリ制御方法
US9098417B2 (en) Partitioning caches for sub-entities in computing devices
US9183157B2 (en) Method for creating virtual machine, a virtual machine monitor, and a virtual machine system
US10282292B2 (en) Cluster-based migration in a multi-level memory hierarchy
US10255191B2 (en) Logical memory address regions
US20100312955A1 (en) Memory system and method of managing the same
EP3462320B1 (en) Dynamic page allocation in memory
US20170083444A1 (en) Configuring fast memory as cache for slow memory
US20180150393A1 (en) Cache memory device and electronic system including the same
US20220114086A1 (en) Techniques to expand system memory via use of available device memory
EP3839747A1 (en) Multi-level memory with improved memory side cache implementation
US11188467B2 (en) Multi-level system memory with near memory capable of storing compressed cache lines
CN115904212A (zh) 数据处理的方法、装置、处理器和混合内存***
WO2014051544A2 (en) Improved performance and energy efficiency while using large pages
US10101934B1 (en) Memory allocation balancing for storage systems
CN115904688A (zh) 内存管理方法、装置、处理器及计算设备
EP3353664A1 (en) Method and apparatus for pinning memory pages in a multi-level system memory
EP3166019B1 (en) Memory devices and methods
EP3506112A1 (en) Multi-level system memory configurations to operate higher priority users out of a faster memory level
KR20180078512A (ko) 반도체 장치
US11687359B2 (en) Hybrid memory management apparatus and method for many-to-one virtualization environment
EP3017374A1 (en) Lookup of a data structure containing a mapping between a virtual address space and a physical address space
KR20230011212A (ko) 활용 인식 메모리 할당을 위한 시스템, 방법 및 장치
JP2022121655A (ja) メモリシステムおよび制御方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190919

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190919

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20190919

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20190925

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191210

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20200310

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200508

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200702

R150 Certificate of patent or registration of utility model

Ref document number: 6730434

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250