JP6209689B2 - モードに応じてウェイの全部又はサブセットに選択的に割り当てるように動的に構成可能であるマルチモード・セット・アソシエイティブ・キャッシュ・メモリ - Google Patents

モードに応じてウェイの全部又はサブセットに選択的に割り当てるように動的に構成可能であるマルチモード・セット・アソシエイティブ・キャッシュ・メモリ Download PDF

Info

Publication number
JP6209689B2
JP6209689B2 JP2016564428A JP2016564428A JP6209689B2 JP 6209689 B2 JP6209689 B2 JP 6209689B2 JP 2016564428 A JP2016564428 A JP 2016564428A JP 2016564428 A JP2016564428 A JP 2016564428A JP 6209689 B2 JP6209689 B2 JP 6209689B2
Authority
JP
Japan
Prior art keywords
cache memory
mode
ways
tag
bits
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
JP2016564428A
Other languages
English (en)
Other versions
JP2017507442A (ja
Inventor
リード,ダグラス,アール
Original Assignee
ヴィア アライアンス セミコンダクター カンパニー リミテッド
ヴィア アライアンス セミコンダクター カンパニー リミテッド
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 ヴィア アライアンス セミコンダクター カンパニー リミテッド, ヴィア アライアンス セミコンダクター カンパニー リミテッド filed Critical ヴィア アライアンス セミコンダクター カンパニー リミテッド
Publication of JP2017507442A publication Critical patent/JP2017507442A/ja
Application granted granted Critical
Publication of JP6209689B2 publication Critical patent/JP6209689B2/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/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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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
    • 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/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate 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/28Using a specific disk cache architecture
    • G06F2212/282Partitioned cache
    • 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/6042Allocation of cache space to multiple users or processors
    • G06F2212/6046Using a specific cache allocation policy other than replacement policy
    • 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

一態様において、本発明は、Jが3よりも大きい整数である2^Jバイトのキャッシュ・ラインを記憶するためのキャッシュ・メモリであって、2^N個のセットの配列であって、セットの各々が、各々がXビットであるタグを保持し、N及びXが両方とも5よりも大きい整数であり、前記配列が2^W個のウェイを有する、前記2^N個のセットの配列と、Qビット・メモリ・アドレスMA[(Q−1):0]を受け取る入力であって、前記アドレスが、タグ部分MA[(Q−1):(Q−X)]と、インデックス部分MA[(Q−X−1):J]とを有し、Qが少なくとも(N+J+X−1)の整数である、前記入力と、前記インデックス部分と前記タグ部分の最下位ビットとを使用して前記配列の1つのセットを選択するセット選択ロジックと、前記タグ部分の前記最下位ビット以外のすべてのビットを前記選択された1つのセット内の各タグの前記最下位ビット以外のすべてのビットと比較して、マッチがあればヒットを表示する比較ロジックと、割り当てロジックであって、マッチがないことを前記比較ロジックが表示したときに、第1のモードで動作しているときには前記選択された1つのセットの前記2^W個のウェイのうちのいずれか1つの中に割り当て、第2のモードで動作しているときには前記選択された1つのセットの前記2^W個のウェイのサブセットのうちの1つの中に割り当て、前記2^W個のウェイの前記サブセットが前記タグ部分の1つ又は複数のビットに基づき制限される、前記割り当てロジックとを備える、キャッシュ・メモリを提供する。
別の態様では、本発明は、Jが3よりも大きい整数である2^Jバイトのキャッシュ・ラインを記憶するためのキャッシュ・メモリを動作させるための方法であって、前記キャッシュ・メモリが、2^N個のセットの配列であって、セットの各々が、各々がXビットであるタグを保持し、N及びXが両方とも5よりも大きい整数であり、前記配列が2^W個のウェイを有する、前記2^N個のセットの配列を有し、当該方法は、Qビット・メモリ・アドレスMA[(Q−1):0]を受け取るステップであって、前記アドレスが、タグ部分MA[(Q−1):(Q−X)]と、インデックス部分MA[(Q−X−1):J]とを有し、Qが少なくとも(N+J+X−1)の整数である、ステップと、前記インデックス部分と前記タグ部分の最下位ビットとを使用して前記配列の1つのセットを選択し、前記タグ部分の前記最下位ビット以外のすべてのビットを前記選択された1つのセット内の各タグの前記最下位ビット以外のすべてのビットと比較して、マッチがあればヒットを表示するステップと、比較する前記ステップが、マッチがないことを表示したときに、第1のモードで動作しているときには前記選択された1つのセットの前記2^W個のウェイのうちのいずれか1つの中に割り当て、第2のモードで動作しているときには前記選択された1つのセットの前記2^W個のウェイのサブセットのうちの1つの中に割り当てるステップであって、前記2^W個のウェイの前記サブセットが前記タグ部分の1つ又は複数のビットに基づき制限される、ステップとを含む、方法を提供する。
さらに別の態様では、本発明は、プロセッサであって、Jが3よりも大きい整数である2^Jバイトのキャッシュ・ラインを記憶するキャッシュ・メモリであって、2^N個のセットの配列であって、セットの各々が、各々がXビットであるタグを保持し、N及びXが両方とも5よりも大きい整数であり、前記配列が2^W個のウェイを有する、前記2^N個のセットの配列と、Qビット・メモリ・アドレスMA[(Q−1):0]を受け取る入力であって、前記アドレスが、タグ部分MA[(Q−1):(Q−X)]と、インデックス部分MA[(Q−X−1):J]とを有し、Qが少なくとも(N+J+X−1)の整数である、前記入力と、前記インデックス部分と前記タグ部分の最下位ビットとを使用して前記配列の1つのセットを選択するセット選択ロジックと、前記タグ部分の前記最下位ビット以外のすべてのビットを前記選択された1つのセット内の各タグの前記最下位ビット以外のすべてのビットと比較して、マッチがあればヒットを表示する比較ロジックと、割り当てロジックであって、マッチがないことを前記比較ロジックが表示したときに、第1のモードで動作しているときには前記選択された1つのセットの前記2^W個のウェイのうちのいずれか1つの中に割り当て、第2のモードで動作しているときには前記選択された1つのセットの前記2^W個のウェイのサブセットのうちの1つの中に割り当て、前記2^W個のウェイの前記サブセットが前記タグ部分の1つ又は複数のビットに基づき制限される、前記割り当てロジックとを備える前記キャッシュ・メモリを具備する、プロセッサを提供する。
キャッシュ・メモリを示すブロック図である。 通常モードで動作するように構成されているときの図1のキャッシュ・メモリを示すブロック図である。 通常モードで動作するように構成されているときの図1のキャッシュ・メモリの動作を示す流れ図である。 ファット・モード(fat mode)で動作するように構成されているときの図1のキャッシュ・メモリを示すブロック図である。 ファット・モードで動作するように構成されているときの図1のキャッシュ・メモリ102の動作を示す流れ図である。 ファット・モードから遷移するように命令されたときの図1のキャッシュ・メモリ102の動作を示す流れ図である。 直接マッピングされたキャッシュとしてスキニー・モード(skinny mode)で動作するように構成されているときの図1のキャッシュ・メモリ102を示すブロック図である。 スキニーDMモードで動作するように構成されているときの図1のキャッシュ・メモリ102の動作を示す流れ図である。 8ウェイ・セット・アソシエイティブ・キャッシュとしてスキニー・モードで動作するように構成されているときの図1のキャッシュ・メモリ102を示すブロック図である。 スキニー8WAYモードで動作するように構成されているときの図1のキャッシュ・メモリ102の動作を示す流れ図である。 図1のキャッシュ・メモリ102の一実施形態をより詳しく示しているブロック図である。 図12と総称される、図11のキャッシュ・メモリ102のバンク・イネーブル・ロジックを示しているブロック図である。 図12と総称される、図11のキャッシュ・メモリ102のバンク・イネーブル・ロジックを示しているブロック図である。 図11のキャッシュ・メモリ102のヒット生成ロジックを示しているブロック図である。 図1のキャッシュ・メモリ102を備えるプロセッサを含むシステムの動作を示す流れ図である。 図1のキャッシュ・メモリ102を含むプロセッサの要素を示しているブロック図である。 図1のキャッシュ・メモリ102を含む図14Bのプロセッサの動作を示している流れ図である。 図1のキャッシュ・メモリ102を備えるプロセッサを含むシステムの動作を示す流れ図である。 キャッシュ・メモリを示すブロック図である。 図16のタグ及び割り当てモードに基づきキャッシュ・メモリ102がその中に割り当てるウェイのサブセットを選択するロジックを示すブロック図である。 図16のキャッシュ・メモリの動作を示している流れ図である。 図16のキャッシュ・メモリを備えるプロセッサを含むシステムの動作を示す流れ図である。 プログラム及びプログラム・フェーズに対するキャッシュ・メモリ・モード構成の生成を示す流れ図である。 メモリ・アクセス・グラフ及びグラフから抽出されたデータの図である。 プログラムのフェーズ解析を示す流れ図である。 プロセッサの構成可能な態様に対する良好な構成を判定する力ずくの方法を示す流れ図である。 プロセッサを示すブロック図である。
広範な特性を有するデータ・セットを処理し、大いに異なる様式でデータにアクセスするプログラムを実行するために現代的なプロセッサが必要である。データ・セットの特性及びアクセス・パターンは、プロセッサのキャッシュ・メモリの有効性に影響を及ぼす。この有効性は、もっぱら、ヒット率に関して測定される。
そのサイズに加えて、キャッシュ・メモリの連想度がその有効性に大きな影響を及ぼし得る。キャッシュ・メモリの連想度は、キャッシュ・ラインがそのメモリ・アドレスに基づき置かれ得るキャッシュの可能な配置、又はエントリを指す。キャッシュ・ラインが置かれる、又は割り当てられ得る、可能な配置の数が多ければ多いほど、キャッシュの連想度は大きくなる。一部のプログラムには、連想度が大きいキャッシュ・メモリが有効であり、一部のプログラムには、連想度が小さいキャッシュ・メモリが有効である。
キャッシュ・メモリがプロセッサの動作時にその連想度を変えて、その通常モードの連想度よりも大きく、及び/又はその通常の連想度よりも小さくするように動的に構成され得る実施形態が説明される。
次に図1を参照すると、キャッシュ・メモリ102を示すブロック図が図示されている。キャッシュ・メモリ102は、一方の入力上でメモリ・アドレス(MA)104を、別の入力上でモード108を受け取る。モード108は、キャッシュ・メモリ102が「通常」モード、「ファット」モード、又は「スキニー」モードで動作するように構成されるかどうかを指定する。これらのモードの各々について、下記でより詳しく説明される。
メモリ・アドレス104は、3つの部分に分解され、各々複数のビット、タグ部分112、インデックス部分114、及びオフセット部分116を有する。オフセット116は、選択されたキャッシュ・ライン内にバイト・オフセットを指定する。タグ112及びインデックス114の利用法が、下記でより詳しく説明される。わかりやすくするため、図1には、サイズが36ビットである例示的なメモリ・アドレス104が示されており、これらの36ビットは、タグ112=MA[35:16]、インデックス114=MA[15:6]、及びオフセット116=MA[5:0]として分解される。しかしながら、キャッシュ・メモリ102の連想度の動的変動性、すなわち、通常モード、ファット・モード、及びスキニー・モードの間の遷移は、異なる数のビットを有し、そのタグ112、インデックス114、及びオフセット116部分における異なる数のビットに分解される、メモリ・アドレス104を受け取るキャッシュ・メモリ上で実行され得る、ということが理解されるべきである。オフセット116におけるビットの数は、キャッシュ・ラインのサイズ(たとえば、64バイト)を指定し、インデックス114は、下記で説明されているように、モード108に応じて、キャッシュ・メモリ102の1つ又は2つのセットを選択する。
キャッシュ・メモリ102は、複数のウェイによる複数のセットとして設計される。わかりやすくするため、2048個のセット及び16個のウェイを有する例示的なキャッシュ・メモリ102が図1に示されている。しかしながら、本明細書で説明されている動的な連想度の変動性は、異なる数のセット及び異なる数のウェイを有するキャッシュ・メモリ上で実行され得る、ということが理解されるべきである。各セット/ウェイの組合せは、キャッシュ・ラインを記憶するキャッシュ・メモリ102内のエントリを識別する。各エントリは、キャッシュ・ラインのデータを記憶するための記憶域、さらにはキャッシュ・ラインのステータス(たとえば、MESI状態)及びキャッシュ・ラインのタグ106を記憶するための記憶域を含む。タグ106は、キャッシュ・ラインが常駐するセット番号との組合せで、キャッシュ・ラインのメモリ・アドレスを指定する。図1の実施形態では、タグ106は、メモリ・アドレス104のタグ112部分のサイズに対応する20ビットである。好ましくは、キャッシュ・メモリ102は、キャッシュ・ライン・データ、タグ106、及び置換情報を記憶するための別個の記憶配列を備える。
下記でより詳しく説明されているように、ファット・モードにおけるルックアップで、インデックス114は、キャッシュ・メモリ102の2つの異なるセットを選択するために使用され、メモリ・アドレス104の完全なタグ112は、ヒットを検出するために2つの選択されたセットの各ウェイの完全なタグ106と比較されるが、通常モード及びスキニー・モードでは、インデックス114及び、タグ112の最下位ビット(LSB)は、キャッシュ・メモリ102の1つのセットを選択するために使用され、メモリ・アドレス104のタグ112のLSB以外のすべてのビットは、ヒットを検出するために、選択された1つのセットの各ウェイのタグ106のLSB以外のすべてのビットと比較される。これは、ファット・モードで動作するように構成されているときに、キャッシュ・メモリ102の実効連想度を倍にし、ウェイの数を半分にする。逆に、スキニー・モードで動作しているときには、キャッシュ・メモリ102は、タグ112の下位ビットのうちの1つ又は複数に基づき、キャッシュ・ラインが割り当てられ得るウェイを全ウェイのサブセットに(たとえば、16から8、4、2、又は1に)制限し、これにより、実効連想度をウェイのサブセットを制限するために使用されるタグ112のビット数である2だけ減らす。ファット・モードから遷移して出るために、本明細書で説明されているように、ライトバック及び無効化動作がいくつかのキャッシュ・ライン上で実行されなければならない。しかしながら、いくつかの符号ストリームに対してファット・モードで動作するメリットは、ライトバック及び無効化動作に関連付けられているペナルティに値し得る。スキニー・モードへの、又はスキニー・モードからの遷移は、ライトバック及び無効化動作を必要としない。
次に図2を参照すると、通常モードで動作するように構成されているときの図1のキャッシュ・メモリ102を示すブロック図が図示されている。より具体的には、モード入力108は、通常モードを表示する値を指定する。図3に関して下記でより詳しく説明されているように、通常モードでは、キャッシュ・メモリ102は、単一のセットを選択し、インデックス114によって選択されたセット内の各ウェイのエントリ・タグ106のLSB以外のすべてのビットをメモリ・アドレス104タグ112のLSB以外のすべてのビットと比較し、ミスがあったときに、選択されたセットのウェイのうちのいずれか1つの中に割り当てる。図2の例では、通常モードにおいて、キャッシュ・メモリ102は、2048セット×16ウェイ・セット・アソシエイティブ・キャッシュとして動作する。
次に図3を参照すると、通常モードで動作するように構成されているときの図1のキャッシュ・メモリ102の動作を示す流れ図が図示されている。流れは、ブロック302から始まる。
ブロック302において、モード108入力が通常モードを表示している間に、キャッシュ・メモリ102は、処理コアからロード要求を受け取る。ロード要求は、メモリ・アドレス104を含む。流れは、ブロック304に進む。
ブロック304において、キャッシュ・メモリ102は、インデックス114と連結されたタグ112のLSBを使用して、図3においてセットJと称される単一のセットを選択するが、これは図1の例では、結果としてMA[16:6]となる。流れは、ブロック306に進む。
ブロック306において、キャッシュ・メモリ102は、選択されたセットJのすべての16個のウェイにおける各エントリについて、LSBを除くメモリ・アドレス104タグ112のすべてのビットを、LSBを除くエントリ・タグ106のすべてのビットと比較する。この比較では、エントリが有効かどうかもチェックする。流れは、判定ブロック308に進む。
判定ブロック308において、キャッシュ・メモリ102は、ブロック306において実行された比較の結果有効マッチが得られたかどうかを判定する。そうであれば、流れはブロック312に進み、そうでなければ、流れはブロック314に進む。
ブロック312において、キャッシュ・メモリ102は、ヒットを表示する。流れは、ブロック312で終了する。
ブロック314において、キャッシュ・メモリ102は、選択されたセットJにおけるエントリを割り当てる。好ましくは、キャッシュ・メモリ102は、最低使用頻度(LRU)又は疑似LRUであったセットJにおけるウェイからのエントリを割り当てるが、ランダム又はラウンドロビンなどの他の置換アルゴリズムも採用され得る。流れは、ブロック314で終了する。
次に図4を参照すると、ファット・モードで動作するように構成されているときの図1のキャッシュ・メモリ102を示すブロック図が図示されている。より具体的には、モード入力108は、ファット・モードを表示する値を指定する。図5に関して下記でより詳しく説明されているように、ファット・モードでは、キャッシュ・メモリ102は、2つのセットを選択し、インデックス114によって選択されたセット内の各ウェイのエントリ・タグ106をメモリ・アドレス104タグ112と比較し、ミスがあったときに、2つの選択されたセットのうちのいずれか1つのセットのウェイのうちのいずれか1つのウェイの中に割り当てる。これは、事実上、キャッシュ・メモリ102のウェイの数を倍にし、セットの数を半分にする。図4の例では、ファット・モードにおいて、キャッシュ・メモリ102は、1024セット×32ウェイ・セット・アソシエイティブ・キャッシュとして動作する。
次に図5を参照すると、ファット・モードで動作するように構成されているときの図1のキャッシュ・メモリ102の動作を示す流れ図が図示されている。流れは、ブロック502から始まる。
ブロック502において、モード108入力がファット・モードを表示している間に、キャッシュ・メモリ102は、処理コアからロード要求を受け取る。ロード要求は、メモリ・アドレス104を含む。流れは、ブロック504に進む。
ブロック504において、キャッシュ・メモリ102は、図5においてセットJ及びセットKと称される2つのセットを選択する。セットJは、タグ112と連結された2進値0を使用して選択され、図1の例では、この結果、2進値0はMA[15:6]と連結される。セットKは、タグ112と連結された2進値1を使用して選択され、図1の例では、この結果、2進値1はMA[15:6]と連結される。流れは、ブロック506に進む。
ブロック506において、キャッシュ・メモリ102は、選択されたセットJ及びKのすべての32ウェイにおける各エントリについて、メモリ・アドレス104タグ112をエントリ・タグ106と比較する。この比較では、エントリが有効かどうかもチェックする。流れは、判定ブロック508に進む。
判定ブロック508において、キャッシュ・メモリ102は、ブロック506において実行された比較の結果有効マッチが得られたかどうかを判定する。そうであれば、流れはブロック512に進み、そうでなければ、流れはブロック514に進む。
ブロック512において、キャッシュ・メモリ102は、ヒットを表示する。流れは、ブロック512で終了する。
ブロック514において、キャッシュ・メモリ102は、セットJ及びセットKのうちの1つを置換セットとなるように選択する。一実施形態において、キャッシュ・メモリ102は、単一のビットに対するメモリ・アドレス104の選択されたビットのハッシュに基づき、置換セットを、ハッシュが2進値0を生じる場合にセットJが選択され、ハッシュが2進値1を生じる場合にセットKが選択されるように選択するが、これは一般的に疑似ランダム方式で置換セットを選択する働きをする。別の実施形態では、キャッシュ・メモリ102は、たとえば、セットのLRUウェイを選択するために記憶されている情報に加えて各セットについて記憶されている置換情報の余分な1つ又は複数のビットを使用して置換セットを選択する。たとえば、1つの余分なビットは、セットJ又はKがLRUであったかどうかを表示し得る。流れは、ブロック516に進む。
ブロック516において、キャッシュ・メモリ102は、置換セットにおけるエントリを割り当てる。好ましくは、キャッシュ・メモリ102は、最低使用頻度(LRU)又は疑似LRU置換スキームに従って置換セットにおけるエントリを割り当てるが、ランダム又はラウンドロビンなどの他の置換アルゴリズムも採用され得る。流れは、ブロック516で終了する。
次に図6を参照すると、ファット・モードから遷移するよう命令されたときの図1のキャッシュ・メモリ102の動作を示す流れ図が図示されている。流れは、ブロック602から始まる。
ブロック602において、キャッシュ・メモリ102は、ファット・モードから遷移するように命令される、すなわち、モード108はファット・モードから通常モード又はスキニー・モードのいずれかに遷移する。流れは、ブロック604に進む。
ブロック604において、キャッシュ・メモリ102は、キャッシュ・メモリ102の各セットを(すなわち、各セット番号について)初めから終わりまで検索し、セット内の各エントリについて、タグ106のLSBをセット番号のMSBと比較する。ミスマッチがある場合、キャッシュ・メモリ102は、エントリを無効化する。しかし、エントリを無効化する前に、ステータスが、キャッシュ・ラインがダーティである、すなわち修正されていることを表示する場合、キャッシュ・メモリ102は、キャッシュ・ラインのデータをメモリに書き戻す。この動作は、キャッシュ・メモリ102のコヒーレンスを維持する働きをする。流れは、ブロック604で終了する。
ファット・モードを稼働させる潜在的不利点は、2セット分のタグが比較されなければならないのでこれが非ファット・モードよりも電力を大きく消費する可能性がある、ということである。しかし、いくつかのシステムでは、追加のキャッシュ有効性に対する電力消費量のトレードオフが、一部のユーザに対して望ましい場合がある。それに加えて、マルチコア・プロセッサでは、すべてに満たない数のコアが稼働している場合、追加のタグ配列アクセス(たとえば、図11の実施形態では、追加のバンクアクセス)は、キャッシュ・メモリ102がキャッシュ・メモリ102にアクセスしているすべてのコアの要求条件を満たすように設計され得るので、耐久性があり得る。
次に図7を参照すると、直接マッピングされたキャッシュとしてスキニー・モードで動作するように構成されているときの図1のキャッシュ・メモリ102を示すブロック図が図示されている。より具体的には、モード入力108は、スキニーDMと称される、スキニー直接マッピング・モードを表示する値を指定する。スキニー・モードでは、キャッシュ・メモリ102は、単一のセットを選択し、通常モードと同様に、インデックス114によって選択されたセットにおける各ウェイのエントリ・タグ106のLSB以外のすべてのビットをメモリ・アドレス104タグ112のLSB以外のすべてのビットと比較するが、スキニーDMモードでは、ミスがあると、キャッシュ・メモリ102は、選択されたセットの1つのウェイの中にのみ割り当てる。この1つのウェイは、メモリ・アドレス104の所定のビットによって指定される。好ましくは、所定のビットは、タグ112の次に最も最下位となるlogN個のビットであり、ここで、Nは、キャッシュ・メモリ102のウェイの数である。別の言い方をすると、所定のビットは、タグ112の、LSBを除いて最下位の、logN個のビットであり、図1の実施形態ではMA[20:17]に対応し、図8に関して下記でより詳しく説明されているとおりである。図7の例では、スキニーDMモードにおいて、キャッシュ・メモリ102は、32768セット直接マッピング・キャッシュとして動作する。
次に図8を参照すると、スキニーDMモードで動作するように構成されているときの図1のキャッシュ・メモリ102の動作を示す流れ図が図示されている。流れは、ブロック802から始まる。
ブロック802において、モード108入力がスキニーDMモードを表示している間に、キャッシュ・メモリ102は、処理コアからロード要求を受け取る。ロード要求は、メモリ・アドレス104を含む。流れは、ブロック804に進む。
ブロック804において、キャッシュ・メモリ102は、インデックス114と連結されたタグ112のLSBを使用して、図8においてセットJと称される単一のセットを選択するが、これは図1の例では、結果としてMA[16:6]となる。流れは、ブロック806に進む。
ブロック806において、キャッシュ・メモリ102は、選択されたセットJのすべての16個のウェイにおける各エントリについて、LSBを除くメモリ・アドレス104タグ112のすべてのビットを、LSBを除くエントリ・タグ106のすべてのビットと比較する。この比較では、エントリが有効かどうかもチェックする。流れは、判定ブロック808に進む。
判定ブロック808において、キャッシュ・メモリ102は、ブロック806において実行された比較の結果有効マッチが得られたかどうかを判定する。そうであれば、流れはブロック812に進み、そうでなければ、流れはブロック814に進む。
ブロック812において、キャッシュ・メモリ102は、ヒットを表示する。流れは、ブロック812で終了する。
ブロック814において、キャッシュ・メモリ102は、選択されたセットJのMA[20:17]によって指定されたウェイにおけるエントリを割り当てる。このようにして、キャッシュ・メモリ102は、スキニーDMモードで構成されるときに直接マッピング・キャッシュとして動作する。流れは、ブロック814で終了する。
上記で述べたように、有利には、スキニー・モードへの、又はスキニー・モードからの遷移は、ライトバック及び無効化動作を必要としない。しかしながら、遷移の後の短い時間に置換ビット値(たとえば、LRU又は疑似LRUビット)に関するわずかなペナルティがあり得ることに留意されたい。たとえば、スキニー・モードから通常モードに遷移するときに、置換ビットは、たとえば、予想される通常モードのLRU値を有し得ない。
次に図9を参照すると、8ウェイ・セット・アソシエイティブ・キャッシュとしてスキニー・モードで動作するように構成されているときの図1のキャッシュ・メモリ102を示すブロック図が図示されている。より具体的には、モード入力108は、スキニー8WAYと称される、スキニー8ウェイ・モードを表示する値を指定する。スキニー8WAYモードでは、キャッシュ・メモリ102は、単一のセットを選択し、通常モードと同様に、インデックス114によって選択されたセットにおける各ウェイのエントリ・タグ106のLSB以外のすべてのビットをメモリ・アドレス104タグ112のLSB以外のすべてのビットと比較するが、スキニー8WAYモードでは、ミスがあると、キャッシュ・メモリ102は、選択されたセットのうちの16個のウェイのサブセットのうちのいずれか1つの中に割り当てる。サブセットはメモリ・アドレス104の所定のビットによって、選択されたセットの8個の奇数番号のウェイか、又は選択されたセットの8個の偶数番号のウェイのいずれかとなるように指定される。一実施形態において、所定のビットは、タグ112の次に最も最下位となるビットである。別の言い方をすると、所定のビットは、タグ112の、LSBを除いて最下位のビットであり、図1の実施形態ではMA[17]に対応し、図10に関して下記でより詳しく説明されているとおりである。他の実施形態では、所定のビットは、他の方法を使用して生成される。たとえば、所定のビットは、タグ112の複数のビットのブール排他的OR(XOR)として生成され得る(好ましくは、セットを選択するために使用されるタグ112のビット、たとえば、MA[16]を除外する)。これは、下記で説明されているように、キャッシュ・ラインが同じセット内に異常に(pathologically)エイリアスを生じている(aliasing)場合に特に有利である。XOR以外の機能も、タグ112の複数のビットを単一のビットに凝縮するために使用され得る。図9の例では、スキニー8WAYモードにおいて、キャッシュ・メモリ102は、4096セット×8ウェイ・セット・アソシエイティブ・キャッシュとして動作する。
次に図10を参照すると、スキニー8WAYモードで動作するように構成されているときの図1のキャッシュ・メモリ102の動作を示す流れ図が図示されている。流れは、ブロック1002から始まる。
ブロック1002において、モード108入力がスキニー8WAYモードを表示している間に、キャッシュ・メモリ102は、処理コアからロード要求を受け取る。ロード要求は、メモリ・アドレス104を含む。流れは、ブロック1004に進む。
ブロック1004において、キャッシュ・メモリ102は、インデックス114と連結されたタグ112のLSBを使用して、図10においてセットJと称される単一のセットを選択するが、これは図1の例では、結果としてMA[16:6]となる。流れは、ブロック1006に進む。
ブロック1006において、キャッシュ・メモリ102は、選択されたセットJのすべての16個のウェイにおける各エントリについて、LSBを除くメモリ・アドレス104タグ112のすべてのビットを、LSBを除くエントリ・タグ106のすべてのビットと比較する。この比較では、エントリが有効かどうかもチェックする。流れは、判定ブロック1008に進む。
判定ブロック1008において、キャッシュ・メモリ102は、ブロック1006において実行された比較の結果有効マッチが得られたかどうかを判定する。そうであれば、流れはブロック1012に進み、そうでなければ、流れは判定ブロック1013に進む。
ブロック1012において、キャッシュ・メモリ102は、ヒットを表示する。流れは、ブロック1012で終了する。
判定ブロック1013において、キャッシュ・メモリ102は、ビットMA[17]を調べる。ビットMA[17]が2進値1である場合、流れはブロック1016に進み、そうでなく、ビットMA[17]が2進値0である場合、流れはブロック1014に進む。図9に関して上記で説明されているように、判定ブロック1013で調べられたビットが、MA[17]と異なる、タグ112のビット(すなわち、タグ112のLSBの次のビット)であるか、又はタグ112の複数のビットの関数として生成される、他の実施形態が企図される。
ブロック1014において、キャッシュ・メモリ102は、選択されたセット内の偶数番号のウェイのいずれかにおけるエントリを割り当てる。好ましくは、キャッシュ・メモリ102は、最低使用頻度(LRU)又は疑似LRU置換スキームに従って、選択された偶数番号のウェイにおけるエントリを割り当てるが、ランダム又はラウンドロビンなどの他の置換アルゴリズムも採用され得る。流れは、ブロック1014で終了する。
ブロック1016において、キャッシュ・メモリ102は、選択されたセット内の奇数番号のウェイのいずれかにおけるエントリを割り当てる。好ましくは、キャッシュ・メモリ102は、最低使用頻度(LRU)又は疑似LRU置換スキームに従って、選択された奇数番号のウェイにおけるエントリを割り当てるが、ランダム又はラウンドロビンなどの他の置換アルゴリズムも採用され得る。流れは、ブロック1016で終了する。
2つのスキニー・モード、すなわち、スキニー直接マッピング・モード及びスキニー8ウェイ・モードの実施形態が説明されているけれども、これらは、スキニー・モードを示すために説明されており、これらの実施形態に限定されない、ということが理解されるべきである。図1の例示的な実施形態に関して、たとえば、MA[18:17]がそれぞれ置換用の4つのウェイの4つのサブセットを選択するために使用されるスキニー4ウェイ・モードも構成され、MA[19:17]がそれぞれ置換用の2つのウェイの8個のサブセットを選択するために使用されるスキニー2ウェイ・モードが構成され得る。他の実施形態では、上記で述べられているように、タグ112の他のビットは、置換用のウェイのサブセットを選択するために使用され、これらのビットは、置換用のウェイのサブセットを選択するために使用されるビットを生成する機能(たとえば、XOR)への入力となり得る。
スキニー・モードは、LRU又は疑似LRU置換ポリシーの非常に良くない使用を行ういくつかの異常な(pathological)プログラムに対して有益な場合がある。たとえば、プログラムが、メモリ内を探索(marching through memory)していて、ロードが要求されるときに頻繁にキャッシュ・メモリ102内でミスをし、プログラムが必要としているまさに次のラインを追い出す(kick out)ような異常なエイリアシング効果(aliasing effect)を有すると仮定する。しかしながら、キャッシュ・メモリ102の実効連想度がスキニー・モードへの遷移によって低減されるときに、問題は回避される。
たとえば、プログラムが、キャッシュ・メモリ102のセット内で下側半分が上側半分内にエイリアスするメモリ内の非常に大きなデータ構造をアクセスしている可能性がある。しかしながら、下側半分及び上側半分は、LRU置換を無効にする異なる使用パターンを有する。スキニー・モード−8WAYを介して、キャッシュ・メモリ102の実効連想度を低減することによって、キャッシュ・メモリ102内でデータ構造の半分は他の半分から効果的に絶縁される。この種類の異常な事例は、プログラムのオフライン解析を使用して判定されることができ、これは図14A〜14Cに関して下記で説明されているような、キャッシュ・メモリ102を再構成するために使用され得る。
別の例について、プログラムは、そのアドレスがタグ112の高位のビットにおける違いを除き同一であるので、キャッシュ・メモリ102の同じセット内にエイリアスする2つのデータ・セットにアクセスしていると仮定する。この場合、データ・セットのうちの一方の置換ポリシーを他方から絶縁することが有利であり得る。これは、2つのデータ・セットの間で異なるタグ112の高位のビットに対応するタグ112のビットを使用して、置換のために選択されるウェイのサブセットを制限するために使用されるビットを生成することによって達成され得る。これは、たとえば、高められたキャッシュ・メモリ102の有効性が達成されるまで異なるタグ112アドレス・ビット選択を繰り返すことによって図15に関して、又はプログラムのオフライン解析を介して図14A〜14Cに関して、下記で説明されている方法を使用して、達成され得る。
次に図11を参照すると、図1のキャッシュ・メモリ102の一実施形態をより詳しく示しているブロック図が図示されている。特に、図11の実施形態は、デュアルポート・バンク・キャッシュ・メモリ102である。キャッシュ・メモリ102は、バンク0 1106−0、バンク1 1106−1、バンク2 1106−2、及びバンク3 1106−3と表される、4つのバンク1106を含む。各バンク1106は、キャッシュ・メモリ102のセットの1/4、すなわち、512個のセットを記憶する容量を有する。図11の実施形態において、バンク0 1106−0は、値が4を法として0である(値 mod 4=0)セットを保持し、バンク1 1106−1は、値が4を法として1であるセットを保持し、バンク2 1106−2は、値が4を法として2であるセットを保持し、バンク3 1106−3は、値が4を法として3であるセットを保持し、図のとおりである。
キャッシュ・メモリ102は、ポートA1104A及びポートB1104Bと表される2つのポート1104も含む。各ポート1104は、各バンク1106に結合される。各ポート1104は、モード108を入力として受け取る。
キャッシュ・メモリ102は、タグ・パイプラインA1102A及びタグ・パイプラインB1102Bと表される2つのタグ・パイプライン1102も含む。タグ・パイプラインA1102Aは、ポートA1104Aを通じてバンク1106にアクセスし、タグ・パイプラインB1102Bは、ポートB1104Bを通じてバンク1106にアクセスする。各タグ・パイプライン1102は、モード108を入力として受け取る。様々なモードにおけるセット選択に対するバンク1106の選択、又は有効化は、図12に関して下記でより詳しく説明されており、様々なモードにおけるキャッシュ・メモリ102によるヒットの生成は、図13に関して下記でより詳しく説明されている。好ましくは、タグ・パイプライン1102は、本明細書の様々な実施形態において説明されているようなセット(又はファット・モードの場合には2つのセット)の選択を実行する選択ロジック(図示せず)と、メモリ・アドレスの指定されたビットを本明細書の様々な実施形態において説明されていような配列に記憶されているタグの指定されたビットと比較する比較ロジック(図示せず)と、本明細書の様々な実施形態において説明されているような配列内に割り当てる割り当てロジック(図示せず)とを含む。それに加えて、好ましくは、タグ・パイプライン1102は、図16〜19の実施形態の割り当てモード入力によって指定されたタグ・ビットに対して機能を実行するロジックを含む。好ましくは、タグ・パイプライン1102は、複数のステージを備え、それらのステージの各々が異なる動作を実行して、本明細書で説明されている様々な実施形態のセット選択、タグ比較、ウェイ割り当て、及びウェイ・サブセット判定を遂行する。
ポートA1104A及びポートB1104Bは、両方とも、それらが両方とも同じバンク1106を選択していない限り、同時にアクティブであり得る。これは、事実上、4つの単一ポート・バンク1106からデュアルポート・キャッシュ・メモリ102を構成する。好ましくは、キャッシュ・メモリ102のアービトレーション・ロジックが、特にキャッシュ・メモリ102がファット・モードに入っているときに、コンフリクトしていないバンク1106にアクセスする2つのタグ・パイプライン1102からアービトレーション要求を選択することを試みる。
次に、図12A及び12Bを参照すると、これらは図12と総称され、図11のキャッシュ・メモリ102のバンク・イネーブル・ロジック1200を示しているブロック図が図示されている。図12Aを参照すると、バンク・イネーブル・ロジック1200は、タグ・パイプラインA1102Aからファット・モード・インジケータ1209及びメモリ・アドレスMA104−Aを受け取るバンク・イネーブル・ロジック1200Aを含み、応答としてポートA1104Aに対するバンク・イネーブル(ENxA、ただし、xはバンク番号である)1212−xAを生成する。ファット・モード・インジケータ1209は、キャッシュ・メモリ120がファット・モードで動作している場合に真であり、そうでなければ偽であり、モード・インジケータ108を受け取るロジック(図示せず)によって生成される。バンク・イネーブル・ロジック1200は、また、タグ・パイプラインB1102Bからファット・モード・インジケータ1209及びメモリ・アドレスMA104−Bを受け取るバンク・イネーブル・ロジック1200Bを含み、応答としてポートB1104Bに対するバンク・イネーブル(ENxB、ただし、xはバンク番号である)1212−xBを生成する。ポートAバンク・イネーブル・ロジック1200Aは、詳細に説明されており、またポートBバンク・イネーブル・ロジック1200Bは、上記で説明されているように、その入力及び出力を除き、同じである。
バンク・イネーブル・ロジック1200Aは、MA[7]104−Aを受け取る第1のインバータ1204−0と、MA[6]104−Aを受け取る第2のインバータ1208−0と、第1のインバータ1204−0の出力及びファット・モード・インジケータ1209を受け取る第1のORゲート1202−0と、第1のORゲート1202−0の出力及び第2のインバータ1208−0の出力を受け取り、ポートA1104Aに対するバンク0 1106−0イネーブルである、EN0A 1212−0Aを生成する第1のANDゲート1206−0を含む。
バンク・イネーブル・ロジック1200Aは、MA[7]104−Aを受け取る第3のインバータ1204−1と、第3のインバータ1204−1の出力及びファット・モード・インジケータ1209を受け取る第2のORゲート1202−1と、第2のORゲート1202−1の出力及びMA[6]104−Aを受け取り、ポートA1104Aに対するバンク1 1106−1イネーブルである、EN1A 1212−1Aを生成する第2のANDゲート1206−1も含む。
バンク・イネーブル・ロジック1200Aは、MA[6]104−Aを受け取る第4のインバータ1208−2と、MA[7]104−A及びファット・モード・インジケータ1209を受け取る第3のORゲート1202−2と、第3のORゲート1202−2の出力及び第4のインバータ1208−2の出力を受け取り、ポートA1104Aに対するバンク2 1106−2イネーブルである、EN2A 1212−2Aを生成する第3のANDゲート1206−2も含む。
バンク・イネーブル・ロジック1200Aは、MA[7]104−A及びファット・モード・インジケータ1209を受け取る第4のORゲート1202−3と、第4のORゲート1202−3の出力及びMA[6]104−Aを受け取り、ポートA1104Aに対するバンク3 1106−3イネーブルである、EN3A 1212−3Aを生成する第4のANDゲート1206−3も含む。
図12Bを参照すると、バンク・イネーブル・ロジック1200は、ポートAバンク・イネーブル・ロジック1200AからEN0A 1212−0Aを、ポートBバンク・イネーブル・ロジック1200BからEN0B 1212−0Bを受け取り、バンク0 1106−0にバンク・イネーブルとして提供される、EN0 1216−0を生成する第1のORゲート1214−0を含む。バンク・イネーブル・ロジック1200は、ポートAバンク・イネーブル・ロジック1200AからEN1A 1212−1Aを、ポートBバンク・イネーブル・ロジック1200BからEN1B 1212−1Bを受け取り、バンク1 1106−1にバンク・イネーブルとして提供される、EN1 1216−1を生成する第2のORゲート1214−1も含む。バンク・イネーブル・ロジック1200は、ポートAバンク・イネーブル・ロジック1200AからEN2A 1212−2Aを、ポートBバンク・イネーブル・ロジック1200BからEN2B 1212−2Bを受け取り、バンク2 1106−2にバンク・イネーブルとして提供される、EN2 1216−2を生成する第3のORゲート1214−2も含む。バンク・イネーブル・ロジック1200は、ポートAバンク・イネーブル・ロジック1200AからEN3A 1212−3Aを、ポートBバンク・イネーブル・ロジック1200BからEN3B 1212−3Bを受け取り、バンク3 1106−3にバンク・イネーブルとして提供される、EN3 1216−3を生成する第4のORゲート1214−3も含む。
次に図13を参照すると、図11のキャッシュ・メモリ102のヒット生成ロジック1300を示しているブロック図が図示されている。図1のキャッシュ・メモリ102のエントリのタグ106を保持する記憶素子が図示されている。図13の実施形態において、記憶素子は、20ビットのタグ106を保持する。エントリの有効インジケータ1302を保持する別の記憶素子が図示されている。タグ106記憶素子は、MA[35:16]104を受け取り、割り当て信号1301が真であるときに、MA[35:16]104値がタグ106に書き込まれ、有効インジケータ1302が更新され、エントリが有効であることを表示する。逆に、割り当て解除信号1303が真であるときに、有効インジケータ1302が更新され、エントリが無効であることを表示する。図13に示されているように、割り当て信号1301及び割り当て解除信号1303は、図13においてセットJ及びウェイ0として表示されている、特定のセット及びウェイに特有である。しかしながら、キャッシュ・メモリ102の各セット及びウェイに対して割り当て信号1301及び割り当て解除信号1303が存在する、ということが理解されるべきである。
ヒット生成ロジック1300は、タグ106及びMA[35:16]104を受け取る比較器1304を含む。比較器1304も、図12のファット・モード・インジケータ1209を受け取る。ファット・モード・インジケータ1209が真であるときに、比較器1304は、たとえば図5のブロック506におけるように、タグ106の20個すべてのビットをMA[35:16]と比較して、マッチが生じているかどうかを表示する出力を生成する。しかしながら、ファット・モード・インジケータ1209が偽であるときに、比較器1304は、たとえばそれぞれ図3、8、及び10のブロック306、806、及び1006におけるように、タグ106の上位19ビットのみをMA[35:17]と比較して出力を生成する。ANDゲート1306は、比較器1304の出力及び有効ビット1302を受け取り、セットJウェイ0に対してヒットが生じたかどうかを表示するセットJウェイ0ヒット信号1308−J0を生成する。図13に示されているように、セットJウェイ0ヒット信号1308−J0は、特定のセット及びウェイに特有であるが、キャッシュ・メモリ102の各セット及びウェイに対してセット・ウェイ・ヒット信号1308が存在する、ということが理解されるべきである。
ヒット生成ロジック1300は、セットJの各ウェイに対するセットJウェイxヒット信号1308−Jxを受け取る第1のORゲート1312−Jも含み、xは、図13において0から15で表されている、ウェイ番号、すなわち、16個の異なるウェイに対する番号である。ORゲート1312−Jは、セットJヒット信号1314−Jを生成する。
ヒット生成ロジック1300は、セットKの16個のウェイの各々に対するセットKウェイxヒット信号1308−Kxを受け取る第2のORゲート1312−Kも含む。セットKは、図5のブロック504により、ファット・モードのときに選択される第2のセット、たとえば、1:MA[15:6]によって選択されたセットである。ORゲート1312−Kは、セットKヒット信号1314−Kを生成する。
ヒット生成ロジック1300は、セットJヒット信号1314−J及びセットKヒット信号1314−Kを受け取り、ファット・モード・ヒット信号1318を生成するORゲート1316も含む。ヒット生成ロジック1300は、たとえばそれぞれ図3、5、8、及び10のブロック312、512、812、及び1012におけるように、セットJヒット信号1314−J及びファット・モード・ヒット信号1318を受け取り、ファット・モード信号1209が偽である場合に前者を選択し、そうでなければ後者を選択し、キャッシュ・メモリ102内でヒットが生じたかどうかを表示するヒット信号1324をその出力に供給するマルチプレクサ1322も含む。
次に図14Aを参照すると、図1のキャッシュ・メモリ102を備えるプロセッサを含むシステムの動作を示す流れ図が図示されている。流れは、ブロック1402から始まる。
ブロック1402において、システムは、新しいプロセス、又はプログラムが実行中であることを検出する。一実施形態において、プロセッサ100上で稼働するシステム・ソフトウェアは新しいプロセスを検出し、たとえば、デバイス・ドライバがオペレーティング・システムのプロセス・テーブルを監視する。システム・ソフトウェアは、図14Bに関して下記で説明されているように、プログラムが異なるフェーズの各々に入っていることを検出するためにプロセッサによって使用され得る情報を、プロセッサに提供することができ、システム・ソフトウェアは、これらのフェーズの各々に対して異なるモードを指定し得る。この命令に応答して、プロセッサは、モード108を更新し、提供されている場合に、フェーズ検出器(図14Bの1414)に初期フェーズ識別子(図14Bの1412)をロードする。一実施形態において、プロセッサそれ自体が、新しいプロセスを検出し、たとえば、プロセッサは、プロセス・コンテキスト識別子(PCID)の変化、たとえば、新しい値がx86命令セット・アーキテクチャCR3レジスタのPCID部分にロードされていることを検出する。一実施形態において、プロセッサは、プログラムの変化ではなく、現在稼働中のプログラムの新しいフェーズへの遷移を検出する。流れは、ブロック1404に進む。
ブロック1404において、キャッシュ・メモリ102は、たとえば、モード・インジケータ108を介して、ブロック1402において検出されたプロセスのオフライン解析に基づきプログラム又はフェーズに対する最良実行モードであるとすでに判定されている新しいモードに遷移させられる。一実施形態において、プロセッサのマイクロコードは、キャッシュ・メモリ102のモード108を変更する。キャッシュ・メモリ102が、ファット・モードから遷移している場合、すべてのメモリ操作は停止され、図6に関して説明されている操作が実行され、次いで、メモリ操作が再開される。一実施形態において、システム・ソフトウェアは、ブロック1402において新しいプロセスが稼働していることを検出したときに新しいモードを提供する。一実施形態において、プロセッサ100は、PCIDの変化又はプログラム・フェーズの遷移を検出したことに応答して、メモリ(たとえば、プロセッサ100のローカル・プライベート・メモリ、又はシステム・メモリ)から新しいモードをフェッチし、好ましくは、プロセッサ100は、PCID又はフェーズ識別子を使用してリストから新しいモードを識別する。モード情報は、オフライン解析によっても判定されるプログラムの異なるフェーズに対する異なるモードを含み得る。流れは、ブロック1404で終了する。
次に図14Bを参照すると、図1のキャッシュ・メモリ102を含むプロセッサの要素を示しているブロック図が図示されている。プロセッサは、稼働中プログラムが新しいフェーズに入っていることを検出するフェーズ検出器1414を含む。フェーズ検出器1414は、図14Aに関して上記で説明されているようなデバイス・ドライバなどによって、それに提供されるフェーズ識別子1412に基づき判定を行う。フェーズ識別子1412は、プログラムの命令の命令ポインタ(又はプログラム・カウンタ)値を含み得る。命令は、サブルーチン呼び出し命令であってよく、その場合、フェーズ識別子1412は、呼び出し命令のターゲット命令の命令ポインタ(又はプログラム・カウンタ)値も含み得る。さらに、フェーズ識別子1412は、呼び出し命令の1つ又は複数のパラメータ値、たとえば、戻りアドレス、レジスタ値、及び/又はスタック値も含み得る。フィンガープリント・ユニットとここでは称されている、フェーズ検出器の一例は、米国特許出願第14/050,687号及び第14/050,757号においてより詳細に説明されており、これらは両方とも2013年10月10日に出願され、これらは両方とも2013年9月20日に出願した米国仮出願第61/880,620号への優先権を主張しており、すべての目的のために、各々の全体が参照により本明細書に組み込まれている。プロセッサは、新しいフェーズが検出されていることをフェーズ検出器1414によって通知され、新しいフェーズの識別子を受け取るモード更新ユニット1416も含む。また、モード更新ユニット1416は、モード情報を、たとえば、図14Aに関して上記で説明されているようなデバイス・ドライバから受け取る。モード更新ユニット1416は、図14Cに関して下記で説明されているように、キャッシュ・メモリ102内のモード108を更新する。一実施形態において、モード更新ユニット1416は、フェーズ検出器1414によって呼び出されるプロセッサのマイクロコードを備える。代替的一実施形態では、モード更新ユニット1416は、新しいフェーズが検出されていることを示すフェーズ検出器1414からのインジケータ、及び新しいフェーズの識別子を受け取る状態機械を備える。フェーズ解析は、下記の図22に関してより詳しく説明される。
次に図14Cを参照すると、図1のキャッシュ・メモリ102を含む図14Bのプロセッサの動作を示している流れ図が図示されている。流れは、ブロック1422から始まる。
ブロック1422において、図14Bのフェーズ検出器1414は、稼働中プログラムが新しいフェーズに入っていることを検出する。新しいフェーズを検出したことに応答して、フェーズ検出器1414は、図14Bのモード更新ユニット1416に通知する。流れは、ブロック1424に進む。
ブロック1424において、モード更新ユニット1416は、モード情報1418(たとえば、図14Aのブロック1404においてデバイス・ドライバから受け取った)の中のフェーズ検出器1414から受け取った新しいフェーズの識別子を探索し、探索で見つかったモードでキャッシュ・メモリ102のモード108を更新する。それに加えて、モード更新ユニット1416は、必要に応じて、新しいフェーズ識別子1412でフェーズ検出器1414を更新する。一実施形態において、次に探索されるフェーズは、現在のフェーズに依存しており、したがって、フェーズ検出器1414にロードされるべきフェーズ識別子1412は、現在のフェーズに応じて異なり得る。流れは、ブロック1426に進む。
ブロック1426において、プロセッサは稼働中のプログラムを実行して、キャッシュ・メモリ102へのメモリ・アクセスを生成し、これに応答して、キャッシュ・メモリ102はブロック1424において実行されるような更新されたモード108に従って動作する。流れは、ブロック1426で終了する。
次に図15を参照すると、図1のキャッシュ・メモリ102を備えるプロセッサを含むシステムの動作を示す流れ図が図示されている。流れは、ブロック1502から始まる。
ブロック1502において、プロセッサは、キャッシュ・メモリ102が現在のモードにおいて無効な実行をしていることを検出する。たとえば、実行カウンタは、キャッシュ・メモリ102に、閾値を超えるミス率が生じていることを表示し得る。流れは、ブロック1504に進む。
ブロック1504において、キャッシュ・メモリ102は、現在のモードと異なる新しいモードに遷移させられる。一実施形態において、プロセッサのマイクロコードは、キャッシュ・メモリ102のモード108を変更する。キャッシュ・メモリ102が、ファット・モードから遷移している場合、すべてのメモリ操作は停止され、図6に関して説明されている操作が実行され、次いで、メモリ操作が再開される。好ましくは、プロセッサ(たとえば、マイクロコード)は、モードに関係なく高いミス率になりやすいプログラム及び/又はデータ・セットの場合などにおいて、モード間のスラッシングを回避するために、このようにして行われるキャッシュ・メモリ102モードへの自動的変更を追跡する。一実施形態において、これらのモード(通常、ファット、異なる可能なスキニー・モードのうちのスキニー)のすべてが、必要に応じて試みられる。他の実施形態では、これらのモードのサブセットが試みられる。たとえば、通常モードとスキニー・モードのうちのいずれかとの間、又は一方のスキニー・モードと他方のスキニー・モードとの間の遷移に関連付けられているライトバック無効化ペナルティはないので、このサブセットは、これらのモードに制限され、ファット・モードを除外し得る。異なるスキニー・モードは、キャッシュ・ラインが割り当てられ得るウェイのサブセットがどのように制限されるかということに関して異なるスキニー・モードを含むだけでなく、たとえば図9などに関して上記で説明されているような、サブセットの制限の基準となるように選択されたタグの1つ又は複数のビット、たとえば、すべてがスキニー8WAYモードにおけるMA[17]、XOR(MA[26]、MA[23]、又はMA[22]を変化させる異なるスキニー・モードをも含む、と理解されるべきである。流れは、ブロック1504で終了する。
次に図16を参照すると、キャッシュ・メモリ1602を示すブロック図が図示されている。キャッシュ・メモリ1602は、図1のキャッシュ・メモリ102に関して多くの点で類似している。図16のキャッシュ・メモリ1602は、有利には、割り当てモード入力1608によって指定された異なる割り当てモードに、動作時に動的に構成され得る。割り当てモード1608は、下記でより詳しく説明されているように、キャッシュ・メモリ1602がその中に割り当てることになるメモリ・アドレス104のインデックスによって選択されたセットのウェイのサブセットを判定するメモリ・アドレス104のタグの1つ又は複数のビットの異なる機能を選択する。
図1の実施形態と同様に、図16の実施形態において、メモリ・アドレス104は、3つの部分、つまり、タグ部分1612、インデックス部分1614、及びオフセット部分1616に分解されるが、その際に、わずかに異なるビットを使用する。わかりやすくするため、図16には、サイズが36ビットである例示的なメモリ・アドレス104が示されており、これらの36ビットは、タグ1612=MA[35:17]、インデックス1614=MA[16:6]、及びオフセット1616=MA[5:0]として分解される。しかしながら、アドレス・タグのビットに基づく動的ウェイ選択の実施形態は、異なる数のビットを有し、そのタグ1612、インデックス1614、及びオフセット1616部分において異なる数のビットに分解される、メモリ・アドレス104を受け取るキャッシュ・メモリ上で実行され得る、ということが理解されるべきである。図1及び16の図示されている例の間の別の相違点は、図16のキャッシュ・メモリ1602のエントリに記憶されているタグ1606が19ビットである点である。
次に図17を参照すると、図16のタグ1612及び割り当てモード1608に基づきキャッシュ・メモリ102がその中に割り当てるウェイのサブセットを選択するロジック1702を示すブロック図が図示されている。ロジック1702は、タグ1612のビット(たとえば、19)を受け取るマルチプレクサ1736を含み、割り当てモード1608に基づきNを1又はそれ以上として図17においてNビット1738と表されているタグ1612ビットのうちの1つ又は複数を選択する。ロジック1702は、割り当てモード1608に基づき複数の機能のうちの1つの機能を選択し、次いで、マルチプレクサ1736によって出力されるNビット1738に対して選択された機能を実行し、キャッシュ・メモリ102の割り当てロジックがその中に割り当てるウェイのサブセット1734を表示するベクトルを生成する組合せロジック1732も含み、これは図18に関して下記で説明されているとおりである。
選択されたタグ1612ビット及び選択されたNビット1738に対して実行される機能の例は下記のとおりである。一例において、サブセットはメモリ・アドレス104の所定のビットによって、選択されたセットの8個の奇数番号のウェイか、又は選択されたセットの8個の偶数番号のウェイのいずれかとなるように指定される。一例では、所定のビットは、タグ1612の最下位ビットである。他の例では、所定のビットは、他の方法を使用して生成される。たとえば、所定のビットは、タグ1612の複数のビットのブール排他的OR(XOR)として生成され得る。これは、上記で説明されているように、キャッシュ・ラインが同じセット内に異常にエイリアスを生じている場合に特に有利であり得る。ブール和、ブール積、ブール否定、又はそれらの様々な並べ替えなど、XOR以外の機能も、タグ112の複数のビットを単一のビットに凝縮するために使用され得る。第2の例では、タグ1612の2つ又はそれ以上のビットが、割り当てモード1608によって指定されたビットの数だけ回転され、その結果、その中にキャッシュ・ラインが割り当てられ得るウェイを全ウェイのサブセットに、たとえば、Nビット1738がそれぞれ2、3、又は4の場合に、16から4に、16から2に、又は16から1に制限する。それに加えて、Nビット1738が2、3、又は4の場合に、Nビット1738のそれぞれは、タグ1612の同じ若しくは異なるビットのブール関数によって別々に生成され得る。特定の実施形態が説明されているけれども、マルチプレクサ1736によって選択されるタグ1612の数及び特定のビットについて他の実施形態も企図され、またウェイのサブセット1734を選択するために、選択されたNビット1738に対して実行される特定の機能1732について他の実施形態も企図される、ということが理解されるべきである。
次に図18を参照すると、図16のキャッシュ・メモリ1602の動作を示す流れ図が図示されている。流れは、ブロック1802から始まる。
ブロック1802において、割り当てモード1608が現在の割り当てモードを表示している間に、キャッシュ・メモリ1602は、処理コアからロード要求を受け取る。ロード要求は、図16のメモリ・アドレス104を含む。流れは、ブロック1804に進む。
ブロック1804において、キャッシュ・メモリ1602は、インデックス1614を使用して、図18においてセットJと称されている、単一のセットを選択する。流れは、ブロック1806に進む。
ブロック1806において、キャッシュ・メモリ1602は、選択されたセットJのすべての16個のウェイにおける各エントリについて、メモリ・アドレス104タグ1612をエントリ・タグ1606と比較する。この比較では、エントリが有効かどうかもチェックする。流れは、判定ブロック1808に進む。
判定ブロック1808において、キャッシュ・メモリ1602は、ブロック1806において実行された比較の結果有効マッチが得られたかどうかを判定する。そうであれば、流れはブロック1812に進み、そうでなければ、流れはブロック1814に進む。
ブロック1812において、キャッシュ・メモリ1602は、ヒットを表示する。流れは、ブロック1812で終了する。
ブロック1814において、図17のロジック1702は、割り当てモード1608によって指定された機能1732及び割り当てモード1608によって指定されたタグ1612の1つ又は複数のビットに基づきブロック1804において選択されたセットのウェイのサブセット1734を判定する。流れは、ブロック1816に進む。
ブロック1816において、キャッシュ・メモリ1602は、ブロック1814において判定されたウェイのサブセット内にある選択されたセットJにおけるいずれか1つのウェイの中に割り当てる。好ましくは、キャッシュ・メモリ1602は、最低使用頻度(LRU)又は疑似LRUであったサブセット内のウェイの中に割り当てるが、ランダム又はラウンドロビンなどの他の置換アルゴリズムも採用され得る。流れは、ブロック1816で終了する。
次に図19を参照すると、図16のキャッシュ・メモリ1602を備えるプロセッサを含むシステムの動作を示す流れ図が図示されている。流れは、ブロック1902から始まる。
ブロック1902において、プロセッサは、現在の割り当てモード1608で動作している間にキャッシュ・メモリ102の有効性(たとえば、1番最近の所定の期間にわたるキャッシュ・メモリ102のヒット率)を監視する。流れは、判定ブロック1904に進む。
判定ブロック1904において、プロセッサは、キャッシュ・メモリ102の有効性が閾値より低いかどうかを判定する。そうであれば、流れはブロック1906に進み、そうでなければ、流れは終了する。好ましくは、閾値は、たとえば、システム・ソフトウェアによってプログラム可能である。
ブロック1906において、プロセッサは、キャッシュ・メモリ102の割り当てモード1608を現在の割り当てモードと異なる新しい割り当てモードに更新する。一実施形態において、プロセッサのマイクロコードは、キャッシュ・メモリ102の割り当てモード1608を更新する。好ましくは、プロセッサ(たとえば、マイクロコード)は、モードに関係なく高いミス率になりやすいプログラム及び/又はデータ・セットの場合などにおいて、割り当てモード間のスラッシングを回避するために、このようにして行われる割り当てモード1608への更新を追跡する。一実施形態において、割り当てモードはすべて、必要に応じて試みられる。他の実施形態では、割り当てモードのサブセットが試みられる。有利には、異なる割り当てモード1608の間の遷移に関連付けられているライトバック無効化ペナルティはない。流れは、ブロック1906からブロック1902に戻る。
キャッシュ・メモリのファット・モード、スキニー・モード、タグ置換ビットの機能による割り当てなどの、本明細書で説明されている様々な様式によるキャッシュ・メモリ・モードの構成は、静的構成、動的構成、又はその両方のいずれかによるものとしてよい。一般的に言えば、静的構成はプレシリコン(pre-silicon)である。すなわち、設計者は、好ましくはプロセッサ設計のソフトウェア・シミュレーションの助けを借りた上で、直観を用いて、良好な構成、すなわち、一般的にプロセッサ、及び特にキャッシュ・メモリの性能を潜在的に改善する構成を判定する。プロセッサの性能を改善することは、プロセッサがプログラムを実行する速度を改善する(たとえば、命令率当たりのクロック数を減らすか、又はクロック速度当たりの命令数を増やす)ことであり、及び/又は電力消費量を低減する。プログラムは、オペレーティング・システム、実行可能プログラム(たとえば、アプリケーション、ユーティリティ、ベンチマーク)、ダイナミック・リンク・ライブラリ、及び同様のものであってよい。ソフトウェア・シミュレーションは、図20から22に関して、たとえば、特にキャッシュ・メモリ・モード構成に関して、下記で説明されているように、プロセッサの性能を改善することが望ましいプログラムの実行のオフライン解析を実行するために採用され得る。好ましくは、設計者は、全体としてプログラムのセットにわたって良好である傾向を有する静的構成を判定する。次いで、設計者は、シリコンに製造される設計に良好な静的構成を取り込む。
対照的に、動的構成を判定する解析は、一般的に言えば、ポストシリコン(post-silicon)で実行される。すなわち、プロセッサが製造された後に、設計者は、異なる種類のオフライン解析を実行して、シリコンに製造された静的構成又はデフォルトの構成と異なる構成でプログラムを実行したときにプロセッサがどのように機能するかを判定する。ポストシリコン試験(post-silicon testing)は、たとえば、図23に関して下記で説明されているように、構成マトリックス(configuration matrix)に対する自動化された性能回帰が実行され、次いで回帰性能データが解析される、より厳密な、たぶんより力ずくの技術を伴い得る。設計者は、たとえば、最大値ではない極大値を回避することを試みるために、ポストシリコン試験への初期シードとして、プログラムの事前設定(population)のためのプレシリコン試験の結果を採用することができる。
試験がプレシリコンであるか、ポストシリコンであるかに関係なく、動的構成試験により、プログラムごとに、さらにはプログラム・フェーズごとであっても、良好な構成が判定される。次いで、システム、たとえば、デバイス・ドライバが、知られているプログラムがプロセッサ上で稼働していることを検出したときに(たとえば、解析が実行されていて、良好な構成が知られているプログラム)、システムは、良好なプログラム特有の構成をプロセッサに提供し、プロセッサは、プロセッサが稼働している間に動的な方式でプログラム特有の構成によってキャッシュ・メモリのモードを更新する。好ましくは、プログラム特有の構成は、プログラムの異なるフェーズに対する異なる構成を含み、プロセッサは、たとえば、図22に関して説明されているように、フェーズ変化を検出し、フェーズ特有の構成に応答して、構成を動的に更新する。
プログラム・フェーズは、与えられた特性のセットに関して、それらの特性の間の一致する挙動によって特徴付けられるコンピュータ・プログラムのサブセットである。たとえば、関連する特性が、分岐予測率及びキャッシュ・ヒット率であると仮定すると、プログラムのフェーズは、分岐予測率及びキャッシュ・ヒット率が一貫しているプログラムのランタイム挙動のサブセットである。たとえば、オフライン解析では、特定のデータ圧縮プログラムが2つのフェーズ、辞書構築フェーズと辞書探索フェーズを有すると判定することができる。辞書構築フェーズは、比較的低い分岐予測率及び比較的高いキャッシュ・ヒット率を有し、これはより大きい文字列のセットに共通の部分文字列のセットを作成することと一致するが、辞書探索フェーズは、比較的高い分岐予測率及び比較的低いキャッシュ・ヒット率を有し、これはキャッシュのサイズよりも大きい辞書内の部分文字列を探索することと一致する。
一実施形態において、オフライン解析は、その名が意味するように、未来を知る「オラクル・キャッシュ」という概念を使用して実行される。限られた量の空間がキャッシュ・メモリ内に与えられたとすると、オラクル・キャッシュは、任意の時点においてキャッシュ内にあるべき最も有用なデータを知る。これは、最高のヒット率を生み出すキャッシュの内容のサイクルごとの又は命令ごとのスナップショットとして概念化され得る。
第一に、プログラム実行に対するオラクル・キャッシュ・スナップショットのシーケンスを生成し、スナップショット内の各キャッシュ・ラインの割り当てを生成したメモリ・アクセスを追跡する。次いで、プログラムのその後の実行インスタンスにおいて、プロセッサは、スナップショットからの情報を使用してキャッシュ・モードを継続的に更新する。
クロック・サイクル又は命令の粒度でキャッシュ・モードを更新するのが実用的でない場合、たとえば、プログラム若しくはフェーズのシーケンスから平均を取ることによって、かなり長い持続時間にわたる、たとえば、プログラム又はプログラム・フェーズ全体にわたる傾向を調べる。
大まかに言って、オラクル・キャッシュの考え方は、メモリ・アクセスのすべてを予め知っているので、メモリ・アクセスのすべてを事前実行することができるという点にある。次いで、プログラムが実行すると、オラクル・キャッシュは、所定の時点においてキャッシュ内にあるキャッシュ・ラインの最良のセットを予測する。たとえば、図21のグラフでは、オラクル・キャッシュは、短い持続時間のキャッシュ・ライン(実線で示されている一番上から2番目のライン)が、その最後のアクセス以降にキャッシュされるべきでないことを予測する。そのような解析を使用することで、キャッシュ・モードに関する観察結果を導く。
次に図20を参照すると、プログラム及びプログラム・フェーズに対するキャッシュ・メモリ・モード構成の生成を示す流れ図が図示されている。流れは、ブロック3402から始まる。
ブロック3402において、設計者は、好ましくは自動化方式で、プログラムを実行し、プログラムによって行われるキャッシュ・メモリ、たとえば、102、1602へのメモリ・アクセスを記録する。好ましくは、キャッシュ・ラインの割り当て、ヒット、及び追い出しが記録される。メモリ・アクセスのメモリ・アドレス及び時間(たとえば、相対的クロック・サイクル)が記録される。流れは、ブロック3404に進む。
ブロック3404において、設計者は、好ましくは自動化方式で、規則正しい時間間隔でブロック3402において記録された情報を解析し、たとえば図22に関して下記で説明されているように、プログラムをいくつかのフェーズに分離する明確な傾向を認識する。たとえば、作業セット・サイズ、平均キャッシュ・ライン寿命、平均ヒット率における明確な傾向が認識され得る。流れは、ブロック3406に進む。
ブロック3406において、設計者は、好ましくは自動化方式で、ブロック3404で実行された解析に基づき異なるプログラム・フェーズに対する構成を作成する。たとえば、構成は、キャッシュ・メモリ・モードであってよい。一実施形態において、構成を判定するための解析は、図21から23に関して下記で説明されているのと類似する解析を含み得る。いくつかのプログラムは明確な傾向を示さない可能性があり、そのためにそれらが区別できるいくつかのフェーズに分解されることに影響を受けやすく、その場合、プログラム全体に対して単一の構成で十分であり得る、ということが理解されるべきである。流れは、ブロック3406で終了する。
次に図21を参照すると、メモリ・アクセス・グラフ及びグラフから抽出されたデータが図示されている。グラフは、ドットで表示される、メモリ・アクセスをプロットしたものであり、そこでは時間は水平軸上に示されている独立変数であり、メモリ・アドレスは、垂直軸上に示されている従属変数である。水平線は、指定されたメモリ・アドレスにおける個別のキャッシュ・ラインに対応する。直線の左縁は、キャッシュ・ラインの割り当てを表し、直線の右縁は、キャッシュ・メモリからのキャッシュ・ラインの追い出しを表す。
グラフの下に、8つの異なる規則正しい時間間隔の各々における、全作業セット・サイズが示されている。時間間隔は、たとえば、図22に関して下記で説明されているように、基本的なブロック転送に相関し、プログラム・フェーズの各々に対するプログラムのフェーズ及び構成を判定するために使用され得る。
それに加えて、平均キャッシュ・ライン寿命など、どれだけ長くキャッシュ・ラインが有用である傾向を有するかに関する観察が行われ得る。平均キャッシュ・ライン寿命は、フェーズにわたるすべてのキャッシュ・ラインの寿命(割り当てから追い出しまで)の総和をキャッシュ・ラインの数で割ったものとして計算される。この情報は、キャッシュ・メモリの動作モードに影響を与えるために使用され得る。
オラクル・キャッシュが、キャッシュされたラインの数をキャッシュ・メモリ内に含まれるセット及びウェイの意図された数に対応するように制約する場合、キャッシュ・モード及び平均寿命の観察の精度は高まり得る。キャッシュ・ライン・ヒットなど他のインジケータも、収集され得る。
次に図22を参照すると、プログラムのフェーズ解析を示す流れ図が図示されている。フェーズ解析は、キャッシュ・メモリ又はプリフェッチャなどの、プロセッサの構成可能な態様の良好な構成を判定するために使用され得るオフライン解析の一形態である。流れは、ブロック3602から始まる。
ブロック3602において、プログラムを実行するときにプロセッサによる性能を改善することが望ましいプログラムが解析され、分解されて状態図を生成する。状態図のノードは、プログラムの基本ブロックである。基本ブロックは、プログラム制御命令(たとえば、分岐、ジャンプ、呼び出し、戻りなど)の間の命令のシーケンスである。状態図の各エッジは、エッジが至るターゲットの基本ブロック及び状態変化情報であり、これは、下記でさらに説明されているように、フェーズ識別子となり得る。フェーズ識別子は、制御転送命令の命令ポインタ(IP)又はプログラム・カウンタ(PC)、制御転送命令のターゲット・アドレス、及び/又は制御転送命令の呼び出しスタックを含み得る。呼び出しスタックは、呼び出しの戻りアドレス及びパラメータを含み得る。プログラム・フェーズは、1つ又は複数の基本ブロックを備えるプログラムの部分である。流れは、ブロック3604に進む。
ブロック3604において、プログラムは機器に備え付けられて、キャッシュ・メモリ構成モードなどのプロセッサの構成可能な態様に関係する特性が解析される。特性の例は、キャッシュ・ヒット率、分岐予測精度、作業セット・サイズ、平均キャッシュ・ライン寿命、及びキャッシュ汚染度(たとえば、プリフェッチされたが、決して使用されていないキャッシュ・ラインの数)を含む。流れは、ブロック3606に進む。
ブロック3606において、プログラムは、たとえばキャッシュ・メモリ及び/又はプリフェッチャの与えられた構成で実行され、プログラムのフェーズは、ブロック3604の解析された特性において定常状態の挙動を観察することによって識別される。たとえば、キャッシュ・ヒット率が、注目する解析された特性であると仮定し、またキャッシュ・ヒット率が97%から40%に変化すると仮定する。キャッシュ・ヒット率の変化は、キャッシュ・メモリ構成が変化の前にプログラムに対して良好であったが、変化後にはプログラムに対して良好でなかったことを表示する傾向を有する。したがって、キャッシュ・ヒット率の変化の前の基本ブロックのシーケンスは、1つのフェーズとして識別され、キャッシュ・ヒット率の変化の後の基本ブロックのシーケンスは、第2のフェーズとして識別され得る。別の例について、作業セット・サイズが、注目する解析された特性であると仮定すると、作業セット・サイズにおける著しく大きいシフトは、フェーズ変化を識別するためのプログラム内の望ましい配置を示すことができる。流れは、ブロック3608に進む。
ブロック3608において、フェーズが識別された後、良好な構成又は構成値が、各フェーズについて判定される。たとえば、図20及び21に関して上記で、又は図23に関して下記で、説明されている方法などの、様々なオフライン解析技術が使用され得る。流れは、ブロック3612に進む。
ブロック3612において、フェーズ識別子は、フェーズ変化に相関する。解析された特性における変化が生じた、上記で説明されている基本ブロック遷移の状態変化情報、又は潜在的フェーズ識別子は、プログラムに対してブロック3608において判定された良好な構成値とともに記録され、したがって、情報は、たとえば、デバイス・ドライバによって、解析されたプログラムが稼働しようとしていることが検出されたときにプロセッサに提供され得る。流れは、ブロック3614に進む。
ブロック3614において、解析されたプログラムに関連付けられている情報を受け取った後、プロセッサは、図14Aから14Cに関して上記で説明されているように、フェーズ検出器1414に図14Bのフェーズ識別子1412をロードする。流れは、ブロック3614で終了する。
次に図23を参照すると、プロセッサの構成可能な態様、たとえば、キャッシュ・メモリ、プリフェッチャに対する良好な構成を判定する力ずくの方法を示す流れ図が図示されている。説明されている方法は、“座標降下(coordinate descent)”最適化アルゴリズムの態様を採用する。流れは、ブロック3702から始まる。
ブロック3702において、各プログラム、又はプログラム・フェーズについて、プロセッサの性能を改善することが望ましいと識別されたプログラムのリストにおいて、この方法は、良好な構成が判定されるか(たとえば、最良の現在の構成−下記参照−が比較的長い時間にわたって変化していない)、又はリソースが尽きてしまう(たとえば、時間及び/又は計算リソース)までブロック3704から3716までを繰り返す。流れは、ブロック3704に進む。
ブロック3704において、現在の最良の構成は、デフォルトの構成、たとえば、キャッシュ・メモリのデフォルト・モードに設定され、これは、一実施形態において、単純に、プロセッサが製造される際の構成である。流れは、ブロック3706に進む。
ブロック3706において、各構成パラメータについて、ブロック3708から3712が実行される。構成パラメータの一例は、単一の構成ビット、たとえば、機能をオン又はオフにするビットである。構成パラメータの別の例は、構成フィールド、たとえば、モード108である。流れは、ブロック3708に進む。
ブロック3708において、ブロック3706の構成パラメータの値の妥当なセットの各値について、ブロック3712から3716を実行する。構成パラメータの値の妥当なセットは、構成パラメータのサイズ、みなされたパラメータの重要度、及び値を繰り返すために必要なリソースの量に依存する。たとえば、単一の構成ビットの場合、両方の値は妥当なセット内にある。たとえば、この方法は、16個又はそれ以下の値を有するあらゆるパラメータについて可能なすべての値を試し得る。しかしながら、比較的大きいフィールド、たとえば、32ビット・フィールドについては、2^32個すべての可能な値を試すことが不可能であり得る。この場合、設計者は、値の妥当なセットを方法に与えることができる。設計者が、値を供給せず、可能性の数が大きい場合、この方法は、パラメータの妥当な数のランダム値でブロック3712から3716を繰り返すことができる。流れは、ブロック3712に進む。
ブロック3712において、プログラム、又はプログラム・フェーズは、現在の最良の構成で実行されるが、ブロック3708ごとにパラメータの次の値で修正され、性能が測定される。流れは、判定ブロック3714に進む。
判定ブロック3714において、この方法はブロック3712において測定された性能を現在の最良の性能と比較し、前者が良好であれば、流れはブロック3716に進み、そうでなければ、流れはブロック3712に戻り、妥当なすべての値が試みられるまで現在のパラメータの次の値を試し、その場合、流れはブロック3708に戻り、すべての構成パラメータが試されるまで次の構成パラメータを繰り返し、その場合、この方法は終了し、プログラム、又はプログラム・フェーズに対する現在の最良の構成をもたらす。
ブロック3716において、この方法は、現在の最良の構成をブロック3712において試された構成で更新する。流れはブロック3712に戻り、妥当なすべての値が試みられるまで現在のパラメータの次の値を試し、その場合、流れはブロック3708に戻り、すべての構成パラメータが試されるまで次の構成パラメータを繰り返し、その場合、この方法は終了し、プログラム、又はプログラム・フェーズに対する現在の最良の構成をもたらす。
図23の方法と類似する方法を使用して見つけた良好な構成は、どのような理由で特定の構成が良好な結果をもたらしたかについて設計者によって理解され得ず、また理解される必要がないことに留意されたい。
次に図24を参照すると、プロセッサ3900を示すブロック図が図示されている。プロセッサ3900は、命令キャッシュ3922を含み、命令キャッシュ3922は命令デコーダ3923に命令を送り、命令デコーダ3923は、命令を復号し、復号された命令を命令ディスパッチャ3924に送り、命令ディスパッチャ3924は、実行のため実行ユニット3926に命令をディスパッチする。好ましくは、プロセッサ3900のマイクロアーキテクチャは、スーパースカラー及びアウト・オブ・オーダー実行であるが、他の実施形態も企図され、命令ディスパッチャ3924は、スーパースカラー・アウト・オブ・オーダー方式で複数の実行ユニット3926への命令のディスパッチをスケジュールするための命令スケジューラも含む。好ましくは、プロセッサ3900は、プロセッサ3900のアーキテクチャ状態を保持するアーキテクチャ・レジスタ(図示せず)、さらには非アーキテクチャ・レジスタ(図示せず)も含む。好ましくは、プロセッサ3900は、レジスタ・リネーミングを実行するために使用されるレジスタ・エイリアス・テーブル(RAT)(図示せず)及びプログラム順序で命令をリタイアさせるために使用されるリオーダー・バッファ(ROB)(図示せず)も含む。好ましくは、命令ディスパッチャは、アーキテクチャ命令を実行ユニット3926によって実行可能なプロセッサ3900のマイクロ命令セット・アーキテクチャのマイクロ命令に翻訳する命令翻訳器(図示せず)を含む。
プロセッサ3900は、メモリ・オペランドを実行ユニット3926に送り、実行ユニット3926からメモリ・オペランドを受け取るメモリ・サブシステム3928も含む。メモリ・サブシステム3928は、好ましくは、1つ又は複数のロード・ユニットと、1つ又は複数のストア・ユニットと、ロード・キューと、ストア・キューと、メモリからのキャッシュ・ラインを要求するためのフィル・キューと、プロセッサ3900が通信しているメモリ・バスのスヌーピングに関係するスヌープ・キューと、テーブルウォーク・エンジンと、他の関係する機能ユニットとを含む。
プロセッサ3900は、メモリ・サブシステム3928と通信するキャッシュ・メモリ102も含む。好ましくは、キャッシュ・メモリ102は、図1(及び図16の1602)に関して説明されているキャッシュ・メモリに類似している。単一のキャッシュ・メモリ102が図示されているけれども、キャッシュ・メモリ102は、レベル1(L1)命令キャッシュ、L1データ・キャッシュ、及びL1キャッシュをバックするユニファイド・レベル2(L2)キャッシュなどの、キャッシュ・メモリの階層を含むより大きいキャッシュ・メモリ・サブシステムのうちの1つであってよい。一実施形態において、キャッシュ・サブシステムは、レベル3(L3)キャッシュも含む。プロセッサ3900は、メモリからデータをキャッシュ・メモリ102内にプリフェッチする1つ又は複数のプリフェッチャも含み得る。一実施形態において、プロセッサ3900は、マルチコア・プロセッサであり、コアの各々は上記で説明されている機能ユニットを有し、その中でキャッシュ・メモリ102はコアによって共有される。
メモリ・サブシステム3928は、図1から23の実施形態において説明されているようなキャッシュ・メモリ102のメモリ・アクセスを行う。メモリ・アクセスは、アクセスされるべきメモリ配置のメモリ・アドレス104を含む。
実施形態は、キャッシュ・メモリの多数のポート及びバンクの特定の構成を用いて説明されているけれども、異なる数のポートがキャッシュ・メモリに含まれる、また異なる数のバンクが含まれる、さらには非バンク構成の、他の実施形態も企図される、ということが理解されるべきである。本開示では、請求項も含めて、2^Nという表記は、2の指数N乗であることを意味する。
本明細書では本発明の様々な実施形態が説明されているけれども、それらは、例として提示されており、限定することを意図していない、ということが理解されるべきである。関連するコンピュータ分野の当業者にとっては、本発明の範囲から逸脱することなく形態及び詳細の様々な変更が行われ得ることは明白であろう。たとえば、ソフトウェアは、たとえば、本明細書で説明されている装置及び方法の機能、加工、モデリング、シミュレーション、記述及び/又は試験を有効にすることができる。これは、一般的なプログラミング言語(たとえば、C、C++)、Verilog HDL、VHDLなどを含むハードウェア記述言語(HDL)、又は他の利用可能なプログラムを使用することで遂行され得る。そのようなソフトウェアは、磁気テープ、半導体、磁気ディスク又は光ディスク(たとえば、CD−ROM、DVD−ROMなど)、ネットワーク、有線、ワイヤレス、又は他の通信媒体などの、知られているコンピュータ使用可能媒体内に配設され得る。本明細書で説明されている装置及び方法の実施形態は、プロセッサ・コアなどの半導体知的財産コアに含まれ(たとえば、HDLで具現化されるか、又は指定される)、集積回路の生産においてハードウェアに変換され得る。それに加えて、本明細書で説明されている装置及び方法は、ハードウェアとソフトウェアとの組合せとして具現化され得る。したがって、本発明は、本明細書で説明されている例示的な実施形態により限定されるのではなく、添付の請求項及びその等価物によってのみ定義されるべきである。特に、本発明は、汎用コンピュータにおいて使用され得るプロセッサ・デバイス内に実装され得る。最後に、当業者であれば、添付の請求項によって定義される本発明の範囲から逸脱することなく、本発明の同じ目的を実行するために、他の構造を設計又は修正する基礎として開示されている概念及び特定の実施形態を容易に使用することができる、ということを理解するであろう。

Claims (20)

  1. Jが3よりも大きい整数である2^Jバイトのキャッシュ・ラインを記憶するためのキャッシュ・メモリであって、
    2^N個のセットの配列であって、セットの各々が、各々がXビットであるタグを保持し、N及びXが両方とも5よりも大きい整数であり、前記配列が2^W個のウェイを有する、前記2^N個のセットの配列と、
    Qビット・メモリ・アドレスMA[(Q−1):0]を受け取る入力であって、前記アドレスが、
    タグ部分MA[(Q−1):(Q−X)]と、
    インデックス部分MA[(Q−X−1):J]とを有し、
    Qが少なくとも(N+J+X−1)の整数である、前記入力と、
    前記インデックス部分と前記タグ部分の最下位ビットとを使用して前記配列の1つのセットを選択するセット選択ロジックと、
    前記タグ部分の前記最下位ビット以外のすべてのビットを前記選択された1つのセット内の各タグの前記最下位ビット以外のすべてのビットと比較して、マッチがあればヒットを表示する比較ロジックと、
    割り当てロジックであって、マッチがないことを前記比較ロジックが表示したときに、
    第1のモードで動作しているときには前記選択された1つのセットの前記2^W個のウェイのうちのいずれか1つの中に割り当て、
    第2のモードで動作しているときには前記選択された1つのセットの前記2^W個のウェイのサブセットのうちの1つの中に割り当て、前記2^W個のウェイの前記サブセットが、前記タグ部分のビットを前記第2のモードによって指定されたビットの数だけ回転させて生成された前記タグ部分の1つ又は複数のビットに基づき制限される、前記割り当てロジックとを備える、キャッシュ・メモリ。
  2. 前記サブセットは、前記2^W個のウェイのうちの単一のウェイに制限され、前記単一のウェイは、MA[(Q−X+W):(Q−X+1)]によって指定される、請求項1に記載のキャッシュ・メモリ。
  3. 前記サブセットは、前記タグ部分の1つ又は複数のビットの関数であるビットが0のときに前記2^W個のウェイのうちの偶数番号のウェイに制限され、前記ビットが1のときに前記2^W個のウェイのうちの奇数番号のウェイに制限される、請求項1に記載のキャッシュ・メモリ。
  4. 前記サブセットは、MA[(Q−X+1)]が0のときに前記2^W個のウェイのうちの偶数番号のウェイに制限され、MA[(Q−X+1)]が1のときに前記2^W個のウェイのうちの奇数番号のウェイに制限される、請求項3に記載のキャッシュ・メモリ。
  5. 前記サブセットは、前記2^W個のウェイのうちの2^Z個のウェイに制限され、前記2^Z個のウェイは、MA[(Q−X+(W−Z)):(Q−X+1)]に基づき、Zは0よりも大きく、Wよりも小さい整数である、請求項1に記載のキャッシュ・メモリ。
  6. 前記サブセットは、前記2^W個のウェイのうちの2^Z個のウェイに制限され、前記2^Z個のウェイは、MA[(Q−X+(W−Z)):(Q−X+1)]に基づき、Zは、0よりも大きい整数である、請求項5に記載のキャッシュ・メモリ。
  7. 第3のモードで動作するときに、
    前記セット選択ロジックは、前記インデックス部分を使用して前記配列の2つのセットを選択し、
    前記比較ロジックは、前記タグ部分を前記選択された2つのセット内の各タグと比較して、マッチがあればヒットを表示し、
    そうでなければ、前記割り当てロジックが、前記2つの選択されたセットのうちの1つのセット内に割り当てる、請求項1に記載のキャッシュ・メモリ。
  8. Jは6であり、Nは11であり、Xは20であり、Wは4であり、Qは36である、請求項1に記載のキャッシュ・メモリ。
  9. 当該キャッシュ・メモリは、当該キャッシュ・メモリを備えるプロセッサ上で新しいプロセスが稼働していることを検出したことに応答して、前記第1のモードから前記第2のモードに遷移させられる、請求項1に記載のキャッシュ・メモリ。
  10. 前記プロセッサが前記新しいプロセスを実行しているときに、当該キャッシュ・メモリが前記第1のモードより前記第2のモードにおいて効果的に実行するという判定が、オフライン解析によって行われる、請求項9に記載のキャッシュ・メモリ。
  11. 当該キャッシュ・メモリは、前記第1のモードに入っている間に当該キャッシュ・メモリに閾値より高いミス率が生じていることを検出したことに応答して、前記第1のモードから前記第2のモードに遷移させられる、請求項1に記載のキャッシュ・メモリ。
  12. Jが3よりも大きい整数である2^Jバイトのキャッシュ・ラインを記憶するためのキャッシュ・メモリを動作させるための方法であって、前記キャッシュ・メモリが、2^N個のセットの配列であって、セットの各々が、各々がXビットであるタグを保持し、N及びXが両方とも5よりも大きい整数であり、前記配列が2^W個のウェイを有する、前記2^N個のセットの配列を有し、当該方法は、
    Qビット・メモリ・アドレスMA[(Q−1):0]を受け取るステップであって、前記アドレスが、
    タグ部分MA[(Q−1):(Q−X)]と、
    インデックス部分MA[(Q−X−1):J]とを有し、
    Qが少なくとも(N+J+X−1)の整数である、ステップと、
    前記インデックス部分と前記タグ部分の最下位ビットとを使用して前記配列の1つのセットを選択し、
    前記タグ部分の前記最下位ビット以外のすべてのビットを前記選択された1つのセット内の各タグの前記最下位ビット以外のすべてのビットと比較して、マッチがあればヒットを表示するステップと、
    比較する前記ステップが、マッチがないことを表示したときに、
    第1のモードで動作しているときには前記選択された1つのセットの前記2^W個のウェイのうちのいずれか1つの中に割り当て、
    第2のモードで動作しているときには前記選択された1つのセットの前記2^W個のウェイのサブセットのうちの1つの中に割り当てるステップであって、前記2^W個のウェイの前記サブセットが、前記タグ部分のビットを前記第2のモードによって指定されたビットの数だけ回転させて生成された前記タグ部分の1つ又は複数のビットに基づき制限される、ステップとを含む、方法。
  13. 前記サブセットは、前記2^W個のウェイのうちの単一のウェイに制限され、前記単一のウェイは、MA[(Q−X+W):(Q−X+1)]によって指定される、請求項12に記載の方法。
  14. 前記サブセットは、前記タグ部分の1つ又は複数のビットの関数であるビットが0のときに前記2^W個のウェイのうちの偶数番号のウェイに制限され、前記ビットが1のときに前記2^W個のウェイのうちの奇数番号のウェイに制限される、請求項12に記載の方法。
  15. 前記サブセットは、前記2^W個のウェイのうちの2^Z個のウェイに制限され、前記2^Z個のウェイは、MA[(Q−X+(W−Z)):(Q−X+1)]に基づき、Zは0よりも大きく、Wよりも小さい整数である、請求項12に記載の方法。
  16. 第3のモードで動作するときに、
    前記インデックス部分を使用して前記配列の2つのセットを選択するステップと、
    前記タグ部分を前記選択された2つのセット内の各タグと比較して、マッチがあればヒットを表示するステップと、
    そうでなければ、前記2つの選択されたセットのうちの1つのセット内に割り当てるステップとを含む、請求項12に記載の方法。
  17. 前記キャッシュ・メモリを備えるプロセッサ上で新しいプロセスが稼働していることを検出したことに応答して、前記第1のモードから前記第2のモードに前記キャッシュ・メモリを遷移させるステップをさらに含む、請求項12に記載の方法。
  18. 前記プロセッサが前記新しいプロセスを実行しているときに、前記キャッシュ・メモリが前記第1のモードより前記第2のモードにおいて効果的に実行するという判定が、オフライン解析によって行われる、請求項17に記載の方法。
  19. 前記第1のモードに入っている間に前記キャッシュ・メモリに閾値より高いミス率が生じていることを検出したことに応答して、前記キャッシュ・メモリを前記第1のモードから前記第2のモードに遷移させるステップをさらに含む、請求項12に記載の方法。
  20. プロセッサであって、
    Jが3よりも大きい整数である2^Jバイトのキャッシュ・ラインを記憶するキャッシュ・メモリであって、
    2^N個のセットの配列であって、セットの各々が、各々がXビットであるタグを保持し、N及びXが両方とも5よりも大きい整数であり、前記配列が2^W個のウェイを有する、前記2^N個のセットの配列と、
    Qビット・メモリ・アドレスMA[(Q−1):0]を受け取る入力であって、前記アドレスが、
    タグ部分MA[(Q−1):(Q−X)]と、
    インデックス部分MA[(Q−X−1):J]とを有し、
    Qが少なくとも(N+J+X−1)の整数である、前記入力と、
    前記インデックス部分と前記タグ部分の最下位ビットとを使用して前記配列の1つのセットを選択するセット選択ロジックと、
    前記タグ部分の前記最下位ビット以外のすべてのビットを前記選択された1つのセット内の各タグの前記最下位ビット以外のすべてのビットと比較して、マッチがあればヒットを表示する比較ロジックと、
    割り当てロジックであって、マッチがないことを前記比較ロジックが表示したときに、
    第1のモードで動作しているときには前記選択された1つのセットの前記2^W個のウェイのうちのいずれか1つの中に割り当て、
    第2のモードで動作しているときには前記選択された1つのセットの前記2^W個のウェイのサブセットのうちの1つの中に割り当て、前記2^W個のウェイの前記サブセットが、前記タグ部分のビットを前記第2のモードによって指定されたビットの数だけ回転させて生成された前記タグ部分の1つ又は複数のビットに基づき制限される、前記割り当てロジックとを備える前記キャッシュ・メモリを具備する、プロセッサ。
JP2016564428A 2014-12-14 2014-12-14 モードに応じてウェイの全部又はサブセットに選択的に割り当てるように動的に構成可能であるマルチモード・セット・アソシエイティブ・キャッシュ・メモリ Active JP6209689B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/IB2014/003176 WO2016097795A1 (en) 2014-12-14 2014-12-14 Multi-mode set associative cache memory dynamically configurable to selectively allocate into all or subset or tis ways depending on mode

Publications (2)

Publication Number Publication Date
JP2017507442A JP2017507442A (ja) 2017-03-16
JP6209689B2 true JP6209689B2 (ja) 2017-10-04

Family

ID=56126003

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016564428A Active JP6209689B2 (ja) 2014-12-14 2014-12-14 モードに応じてウェイの全部又はサブセットに選択的に割り当てるように動的に構成可能であるマルチモード・セット・アソシエイティブ・キャッシュ・メモリ

Country Status (6)

Country Link
US (1) US10719434B2 (ja)
EP (1) EP3055774B1 (ja)
JP (1) JP6209689B2 (ja)
CN (1) CN105701031B (ja)
TW (1) TWI564718B (ja)
WO (1) WO2016097795A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016097812A1 (en) * 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Cache memory budgeted by chunks based on memory access type
KR101820223B1 (ko) 2014-12-14 2018-01-18 비아 얼라이언스 세미컨덕터 씨오., 엘티디. 모드에 따라 선택적으로 하나 또는 복수의 셋트를 선택하도록 동적으로 구성가능한 멀티 모드 셋트 연관 캐시 메모리
EP3055775B1 (en) * 2014-12-14 2019-08-21 VIA Alliance Semiconductor Co., Ltd. Cache replacement policy that considers memory access type
EP3066571B1 (en) 2014-12-14 2018-06-13 VIA Alliance Semiconductor Co., Ltd. Cache memory budgeted by ways on memory access type
US10698827B2 (en) 2014-12-14 2020-06-30 Via Alliance Semiconductor Co., Ltd. Dynamic cache replacement way selection based on address tag bits
WO2016097806A1 (en) * 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Fully associative cache memory budgeted by memory access type
US9811468B2 (en) * 2014-12-14 2017-11-07 Via Alliance Semiconductor Co., Ltd. Set associative cache memory with heterogeneous replacement policy
JP2018005667A (ja) * 2016-07-05 2018-01-11 富士通株式会社 キャッシュ情報出力プログラム、キャッシュ情報出力方法及び情報処理装置
CN108268940B (zh) * 2017-01-04 2022-02-18 意法半导体股份有限公司 用于创建可重新配置的互连框架的工具
US10606755B2 (en) 2017-06-30 2020-03-31 Intel Corporation Method and system for performing data movement operations with read snapshot and in place write update
CN107526688B (zh) * 2017-09-12 2020-05-29 上海兆芯集成电路有限公司 储存装置以及配置方法
US20190303303A1 (en) * 2018-03-29 2019-10-03 Intel Corporation System, method, and apparatus for detecting repetitive data accesses and automatically loading data into local cache to avoid performance inversion and waste of uncore resources
US10846235B2 (en) 2018-04-28 2020-11-24 International Business Machines Corporation Integrated circuit and data processing system supporting attachment of a real address-agnostic accelerator
US11055226B2 (en) 2018-06-29 2021-07-06 Intel Corporation Mitigation of cache-latency based side-channel attacks
CN113032291B (zh) * 2021-03-31 2023-05-26 四川长虹空调有限公司 查找数据与改写数据的方法

Family Cites Families (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2646854B2 (ja) * 1990-12-18 1997-08-27 三菱電機株式会社 マイクロプロセッサ
JP3259969B2 (ja) 1991-07-09 2002-02-25 株式会社東芝 キャッシュメモリ制御装置
JPH0520193A (ja) * 1991-07-15 1993-01-29 Oki Electric Ind Co Ltd キヤツシユ・メモリ装置
US5325504A (en) 1991-08-30 1994-06-28 Compaq Computer Corporation Method and apparatus for incorporating cache line replacement and cache write policy information into tag directories in a cache system
US5367653A (en) * 1991-12-26 1994-11-22 International Business Machines Corporation Reconfigurable multi-way associative cache memory
US5465342A (en) * 1992-12-22 1995-11-07 International Business Machines Corporation Dynamically adaptive set associativity for cache memories
US6223255B1 (en) * 1995-02-03 2001-04-24 Lucent Technologies Microprocessor with an instruction level reconfigurable n-way cache
JPH0962582A (ja) * 1995-08-21 1997-03-07 Toshiba Corp 疑似セットアソシアティブ方式キャッシュメモリ装置
US5809562A (en) 1996-05-20 1998-09-15 Integrated Device Technology, Inc. Cache array select logic allowing cache array size to differ from physical page size
US5974507A (en) * 1997-04-14 1999-10-26 International Business Machines Corporation Optimizing a cache eviction mechanism by selectively introducing different levels of randomness into a replacement algorithm
US6138209A (en) 1997-09-05 2000-10-24 International Business Machines Corporation Data processing system and multi-way set associative cache utilizing class predict data structure and method thereof
US6047358A (en) * 1997-10-31 2000-04-04 Philips Electronics North America Corporation Computer system, cache memory and process for cache entry replacement with selective locking of elements in different ways and groups
US6192458B1 (en) 1998-03-23 2001-02-20 International Business Machines Corporation High performance cache directory addressing scheme for variable cache sizes utilizing associativity
JP2954178B1 (ja) * 1998-06-26 1999-09-27 甲府日本電気株式会社 可変式キャッシュ方式
JP3495266B2 (ja) 1998-11-13 2004-02-09 Necエレクトロニクス株式会社 キャッシュロック装置及びキャッシュロック方法
US6405287B1 (en) 1999-11-17 2002-06-11 Hewlett-Packard Company Cache line replacement using cache status to bias way selection
US6446168B1 (en) * 2000-03-22 2002-09-03 Sun Microsystems, Inc. Method and apparatus for dynamically switching a cache between direct-mapped and 4-way set associativity
US6681295B1 (en) 2000-08-31 2004-01-20 Hewlett-Packard Development Company, L.P. Fast lane prefetching
JP2002236616A (ja) * 2001-02-13 2002-08-23 Fujitsu Ltd キャッシュメモリシステム
US6874056B2 (en) * 2001-10-09 2005-03-29 Agere Systems Inc. Method and apparatus for reducing cache thrashing
JP2003131945A (ja) * 2001-10-25 2003-05-09 Hitachi Ltd キャッシュメモリ装置
US7096323B1 (en) 2002-09-27 2006-08-22 Advanced Micro Devices, Inc. Computer system with processor cache that stores remote cache presence information
JP2004171177A (ja) 2002-11-19 2004-06-17 Renesas Technology Corp キャッシュシステムおよびキャッシュメモリ制御装置
US7406579B2 (en) * 2002-12-17 2008-07-29 International Business Machines Corporation Selectively changeable line width memory
US7191291B2 (en) 2003-01-16 2007-03-13 Ip-First, Llc Microprocessor with variable latency stack cache
JP4036206B2 (ja) * 2004-03-31 2008-01-23 日本電気株式会社 セットアソシアティブキャッシュシステム及びキャッシュメモリの制御方法
US7543113B2 (en) 2004-07-02 2009-06-02 Hewlett-Packard Development Company, L.P. Cache memory system and method capable of adaptively accommodating various memory line sizes
JP4669244B2 (ja) * 2004-07-29 2011-04-13 富士通株式会社 キャッシュメモリ装置およびメモリ制御方法
US7257678B2 (en) 2004-10-01 2007-08-14 Advanced Micro Devices, Inc. Dynamic reconfiguration of cache memory
US8593474B2 (en) * 2005-12-30 2013-11-26 Intel Corporation Method and system for symmetric allocation for a shared L2 mapping cache
JPWO2007096998A1 (ja) 2006-02-24 2009-07-09 富士通株式会社 キャッシュメモリ装置およびキャッシュメモリ制御方法
US7689772B2 (en) * 2006-05-04 2010-03-30 Intel Corporation Power-performance modulation in caches using a smart least recently used scheme
US8046775B2 (en) 2006-08-14 2011-10-25 Marvell World Trade Ltd. Event-based bandwidth allocation mode switching method and apparatus
US20090006756A1 (en) * 2007-06-29 2009-01-01 Donley Greggory D Cache memory having configurable associativity
JP2010026851A (ja) * 2008-07-22 2010-02-04 Panasonic Corp コンパイラによる最適化方法
US8352684B2 (en) 2008-09-23 2013-01-08 International Business Machines Corporation Optimal cache replacement scheme using a training operation
US8661179B2 (en) 2008-10-03 2014-02-25 Agere Systems Llc Cache memory architecture having reduced tag memory size and method of operation thereof
US8549208B2 (en) 2008-12-08 2013-10-01 Teleputers, Llc Cache memory having enhanced performance and security features
JP5435617B2 (ja) * 2009-01-22 2014-03-05 エヌイーシーコンピュータテクノ株式会社 キャッシュメモリ制御回路およびキャッシュメモリ管理方法
US8250332B2 (en) 2009-06-11 2012-08-21 Qualcomm Incorporated Partitioned replacement for cache memory
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
US9582431B2 (en) 2010-03-22 2017-02-28 Seagate Technology Llc Storage address space to NVM address, span, and length mapping/converting
US8677071B2 (en) * 2010-03-26 2014-03-18 Virtualmetrix, Inc. Control of processor cache memory occupancy
US20120096226A1 (en) 2010-10-18 2012-04-19 Thompson Stephen P Two level replacement scheme optimizes for performance, power, and area
CN103597545B (zh) 2011-06-09 2016-10-19 株式会社半导体能源研究所 高速缓冲存储器及其驱动方法
EP2799997B1 (en) 2011-12-26 2020-01-22 Renesas Electronics Corporation Data processing device
US9110830B2 (en) 2012-01-18 2015-08-18 Qualcomm Incorporated Determining cache hit/miss of aliased addresses in virtually-tagged cache(s), and related systems and methods
US9824013B2 (en) 2012-05-08 2017-11-21 Qualcomm Incorporated Per thread cacheline allocation mechanism in shared partitioned caches in multi-threaded processors
US8972665B2 (en) * 2012-06-15 2015-03-03 International Business Machines Corporation Cache set selective power up
US20140047175A1 (en) * 2012-08-09 2014-02-13 International Business Machines Corporation Implementing efficient cache tag lookup in very large cache systems
US9734059B2 (en) * 2012-11-21 2017-08-15 Advanced Micro Devices, Inc. Methods and apparatus for data cache way prediction based on classification as stack data
WO2016009247A1 (en) 2014-07-14 2016-01-21 Via Alliance Semiconductor Co., Ltd. Cache system with primary cache and overflow cache that use different indexing schemes
US9911508B2 (en) 2014-09-18 2018-03-06 Via Alliance Semiconductor Co., Ltd Cache memory diagnostic writeback
KR101820223B1 (ko) 2014-12-14 2018-01-18 비아 얼라이언스 세미컨덕터 씨오., 엘티디. 모드에 따라 선택적으로 하나 또는 복수의 셋트를 선택하도록 동적으로 구성가능한 멀티 모드 셋트 연관 캐시 메모리
US10698827B2 (en) 2014-12-14 2020-06-30 Via Alliance Semiconductor Co., Ltd. Dynamic cache replacement way selection based on address tag bits

Also Published As

Publication number Publication date
WO2016097795A9 (en) 2016-10-13
JP2017507442A (ja) 2017-03-16
CN105701031B (zh) 2019-03-15
TW201636852A (zh) 2016-10-16
CN105701031A (zh) 2016-06-22
US10719434B2 (en) 2020-07-21
US20160357664A1 (en) 2016-12-08
EP3055774A1 (en) 2016-08-17
EP3055774B1 (en) 2019-07-17
WO2016097795A1 (en) 2016-06-23
EP3055774A4 (en) 2017-03-29
TWI564718B (zh) 2017-01-01

Similar Documents

Publication Publication Date Title
JP6207765B2 (ja) モードに応じてセットの1つ又は複数を選択的に選択するように動的に構成可能であるマルチモード・セット・アソシエイティブ・キャッシュ・メモリ
JP6218971B2 (ja) アドレス・タグ・ビットに基づく動的キャッシュ置換ウェイ選択
JP6209689B2 (ja) モードに応じてウェイの全部又はサブセットに選択的に割り当てるように動的に構成可能であるマルチモード・セット・アソシエイティブ・キャッシュ・メモリ
Sanchez et al. The ZCache: Decoupling ways and associativity
JP6207766B2 (ja) ヘテロジニアス置換ポリシーを用いるセット・アソシエイティブ・キャッシュ・メモリ
KR101835949B1 (ko) 메모리 접근 타입을 고려한 캐시 치환 정책
US9898411B2 (en) Cache memory budgeted by chunks based on memory access type
KR101817847B1 (ko) 메모리 접근 타입에 기초한 통로에 의해 버짓화된 캐시 메모리
Basu et al. Scavenger: A new last level cache architecture with global block priority
WO2016097806A1 (en) Fully associative cache memory budgeted by memory access type
Manocha et al. Graphfire: Synergizing fetch, insertion, and replacement policies for graph analytics
Krause et al. Avoiding unnecessary caching with history-based preemptive bypassing
Samantaray et al. DISENTANGLING APPROACHES AND BETWEENNESS IN THE ZCACHE

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170321

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170616

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170810

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170911

R150 Certificate of patent or registration of utility model

Ref document number: 6209689

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250