JP7264806B2 - キャッシュエントリでメモリアクセス要求のペンデンシを識別するシステム及び方法 - Google Patents

キャッシュエントリでメモリアクセス要求のペンデンシを識別するシステム及び方法 Download PDF

Info

Publication number
JP7264806B2
JP7264806B2 JP2019501927A JP2019501927A JP7264806B2 JP 7264806 B2 JP7264806 B2 JP 7264806B2 JP 2019501927 A JP2019501927 A JP 2019501927A JP 2019501927 A JP2019501927 A JP 2019501927A JP 7264806 B2 JP7264806 B2 JP 7264806B2
Authority
JP
Japan
Prior art keywords
cache
data
memory
entry
processor
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
JP2019501927A
Other languages
English (en)
Other versions
JP2019525327A (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 JP2019525327A publication Critical patent/JP2019525327A/ja
Application granted granted Critical
Publication of JP7264806B2 publication Critical patent/JP7264806B2/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/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
    • 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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/281Single 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/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device
    • 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/608Details relating to cache mapping
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Description

(関連技術の説明)
処理システムは、プロセッサでの命令の実行をサポートするために、通常、実行する命令によってアクセスされるデータを記憶するためのメモリモジュールから構成されたメモリサブシステムを含む。処理効率を促進するために、メモリサブシステムは、実行する命令によってアクセス可能な全てのデータを記憶するために、最上位のメインメモリと、メインメモリに記憶されるデータのサブセットを記憶するための下位レベルの1つ以上のキャッシュと、を有するメモリ階層で構成することができる。処理効率をさらに向上させるために、処理システムは、1つ以上のキャッシュコントローラを介してメインメモリから1つ以上の下位レベルのメモリへデータをフェッチするのを管理するメモリ管理プロトコルを実装することができる。例えば、プロセッサが必要とするデータがメモリ階層のキャッシュに見つからない場合(「キャッシュミス」と呼ばれる)、キャッシュコントローラは、メモリ階層の異なるレベルから(例えば、異なるキャッシュ又はメインメモリから等)データを取り出すメモリアクセス要求を発行する。
プロセッサリソースを浪費する可能性がある、メモリ階層の所定のレベルからの同じデータに対する複数のメモリアクセス要求の発行を防ぐために、キャッシュコントローラは、保留中のメモリアクセス要求の対象であるデータの各ユニットに対応するメモリアドレスをバッファに記憶する。同じデータに対する後続の要求がキャッシュコントローラに提示された場合、キャッシュコントローラは、そのデータがメモリ階層の対応するレベルに存在しいないと判別すると、通常、バッファに問い合わせて、要求されたデータのメモリアドレスがバッファに記憶されているかどうかを判別する。要求されたデータのメインメモリアドレスがメモリバッファに存在し、データに対する要求が既に保留中であることを示す場合、キャッシュコントローラは、データに対する追加の要求を発行しない。しかしながら、メモリバッファは、比較的大量のスペースを必要とし、比較的大量の電力を消費する場合がある。
添付図面を参照することによって、本開示は当業者により良く理解され、その多数の特徴及び利点が明らかになるであろう。異なる図面での同じ参照記号の使用は、類似又は同一のアイテムを示す。
いくつかの実施形態による、メモリアクセス要求に応じてデータを記憶するキャッシュエントリにメモリアクセス要求のペンデンシ(pendency)の指標を記録する処理システムのブロック図である。 いくつかの実施形態による、キャッシュエントリにミスタグを記憶し、メモリアクセス要求のペンデンシを示すためにペンデンシミスバッファにキャッシュエントリタグを記憶する図1の処理システムの一例を示すブロック図である。 いくつかの実施形態による、図1の処理システムが、キャッシュエントリでミスタグを識別したことに基づいて、データに対するメモリアクセス要求のペンデンシを識別したことを受信する図1の処理システムの一例を示すブロック図である。 いくつかの実施形態による、メインメモリからデータをフェッチし、保留ミスバッファからキャッシュエントリタグによって示されるキャッシュエントリにデータを記憶する図1の処理システムの一例を示すブロック図である。 いくつかの実施形態による、図1の保留ミスバッファに記憶されたキャッシュエントリタグの一例を示すブロック図である。 いくつかの実施形態による、図1のプロセッサによって使用されるミスタグの一例を示すブロック図である。 いくつかの実施形態による、キャッシュエントリでメモリアクセス要求のペンデンシを示す方法のフローチャートである。
図1~図7は、メモリアクセス要求に応じてデータを記憶するために割り当てられるキャッシュエントリにおいて、データに対するメモリアクセス要求のペンデンシを示すことによって、メモリ管理効率を改善するための技術を示す。処理システムは、プロセッサと、階層の最上位のメインメモリと、メインメモリに記憶されるデータのサブセットを記憶するためのメモリ階層の下位レベルの1つ以上のキャッシュと、を有するメモリ階層と、を含む。プロセッサは、命令の実行中、プロセッサに最も近いキャッシュに対してデータ要求を発行する。キャッシュコントローラは、キャッシュミスに応じて、データに対するメモリアクセス要求を、より高いレベルのメモリ階層に発行する。さらに、キャッシュコントローラは、メモリアクセス要求に応じてデータを記憶するためのキャッシュのエントリを識別し、メモリアクセス要求が保留中であるという指標を、識別されたキャッシュエントリに記憶する。メモリアクセス要求がメモリ階層の上位レベルで保留中である間にキャッシュコントローラがデータに対する後続のメモリアクセス要求を受信した場合、キャッシュコントローラは、エントリに記憶された指標に基づいて、メモリアクセス要求が保留中であることを識別する。メモリアクセス要求のペンデンシの指標を記憶するために、個別のミスアドレスバッファではなく、データを記憶するキャッシュエントリを使用することによって、プロセッサは、回路面積及び電力の両方を節約することができる。
一例として説明すると、プロセッサの1つのキャッシュ(例えば、レベル3(L3)キャッシュ)は、処理システムのメインメモリの直下のメモリ階層に配置されている。L3キャッシュでのキャッシュミスの対象であるデータがメインメモリからフェッチされている間に、同じデータに対する後続の要求がL3キャッシュに提示される場合がある。プロセッサ性能を向上させなければシステムリソースを消費するであろうデータに対するメモリアクセス要求が保留中である間に、同じデータに対する追加のメモリアクセス要求を生成するのを回避するために、L3キャッシュのキャッシュコントローラは、データがメインメモリからフェッチされている間に、データを記憶するためのキャッシュエントリを直ちに割り当て、データに対するメモリアクセス要求がメインメモリで保留中であることを示す指標をキャッシュエントリに記憶する。いくつかの実施形態では、指標は、フェッチされているデータのメインメモリアドレスと、当該データが保留中のメモリアクセス要求の対象であることを示すステータス情報と、を含むミスタグである。また、キャッシュコントローラは、データ識別子と、割り当てられたキャッシュエントリの位置情報と、を含むキャッシュエントリタグを、例えばバッファ等のサイド構造に記憶する。
データが依然としてメインメモリからフェッチされている間に同じデータに対する後続の要求がL3キャッシュで受信されると、キャッシュコントローラは、キャッシュメモリをチェックして、データが既にキャッシュメモリに記憶されているかどうかを判別し、キャッシュエントリにミスタグ(要求されたデータが既にメモリアクセス要求の対象であることを示す)が記憶されていることを識別する。これに応じて、キャッシュコントローラは、メモリアクセス要求を保留状態にして、キャッシュエントリでのデータの記憶を待つ。
要求されたデータがメインメモリから取り出されると、キャッシュコントローラは、取り出されたデータのデータ識別子についてサイド構造に問い合わせを行い、データ識別子に対応するキャッシュエントリが存在するかどうかを判別する。処理システムは、データに対応するキャッシュエントリを読み取ると、取り出されたデータを、キャッシュエントリタグによって示されたキャッシュエントリに記憶し、データが現在キャッシュに存在することを示すためにステータス情報を有効状態に更新する。また、キャッシュコントローラは、データをターゲットにしている保留中のメモリアクセス要求を満たす。したがって、L3キャッシュは、個別のバッファではなくキャッシュエントリ自体を使用してメモリアクセス要求のペンデンシの指標を記憶し、これにより、電力及び回路面積の両方を節約する。
図1は、いくつかの実施形態による、メモリアクセス要求に応じてデータを記憶するキャッシュエントリにメモリアクセス要求のペンデンシの指標を記憶するように構成された処理システム100の一例を示す図である。このように、処理システム100は、例えば、パーソナルコンピュータ、ワークステーション、スマートフォン等のモバイルデバイス、ビデオゲームコンソール、スマートTV等のいくつかのデバイスのうち何れかのデバイスに使用することができる。本明細書でさらに説明するように、処理システム100は、プロセッサコア110と、1つ以上のレベルのキャッシュメモリ(例えば、キャッシュメモリ140)と、キャッシュコントローラ120と、保留ミスバッファ130と、メインメモリ150と、を含む。
プロセッサコア110は、コンピュータプログラムの形態で構成された命令を実行するための1つ以上の命令パイプラインを含み、これにより、電子デバイスに代わってタスクを実行する。プロセッサコア110は、例えばレジスタの形態で或る程度の量の内蔵メモリを有することができるが、かかるメモリは、通常、記憶容量が限られている。したがって、プロセッサコア110は、命令を実行するために、1つ以上のレベルのキャッシュメモリ(本明細書では、単一レベルのキャッシュメモリ140として表される)と、メインメモリ150と、を含む処理システム100のメモリ階層に対してデータの記憶及び取り出しを行う。具体的には、プロセッサコア110は、命令を実行する過程で、メモリ階層に対してデータを記憶(記憶動作)又はロード(読み出し動作)するために、メモリアクセス要求102と呼ばれる動作を生成する。本明細書でさらに説明するように、1つ以上のレベルのキャッシュメモリ140及びメインメモリ150は、メモリアクセス要求102を満たすために協働する。
キャッシュメモリ140は、プロセッサコア110によるアクセスのためにデータを記憶するメモリモジュールである。少なくとも1つの実施形態では、キャッシュメモリ140は、エントリのセットを含み、各エントリは、キャッシュラインと呼ばれる関連するデータのユニットを記憶する。いくつかの実施形態では、1つ以上のレベルのキャッシュメモリ140の各々は、セットアソシアティブキャッシュであり、各キャッシュは、いくつかのセットに分割されている。各セットは、いくつかのデータ位置(すなわち、ウェイ)を含み、各ウェイは、キャッシュラインを記憶するキャッシュエントリに対応する。各セットは、メモリアドレスのサブセットに関連するキャッシュラインのみを記憶し、セットに関連するサブセットは、インデックスと呼ばれるメモリアドレスの一部に基づいて、対応するキャッシュコントローラによって識別される。セットアソシアティブを使用することによって、1つ以上のレベルのキャッシュメモリ140は、キャッシュミス及びキャッシュヒットの比較的迅速な識別を容易にする。
キャッシュコントローラ120は、プロセッサコア110からデータに対するメモリアクセス要求102を受信し、メモリアクセス要求102の対象となるメモリアドレスに関連するキャッシュラインを1つのキャッシュエントリが記憶しているかどうかを判別するために、キャッシュメモリ140を検索するように構成されたモジュールである。要求されたキャッシュラインがキャッシュメモリ140内で見つかった場合、キャッシュヒットが発生している。キャッシュヒットの場合、キャッシュコントローラ120は、読み出し動作の場合には、要求されたキャッシュラインをキャッシュメモリ140からプロセッサコア110に提供することによってメモリアクセス要求102を満たし、書き込み動作の場合には、書き込みデータをキャッシュエントリに記憶することによってメモリアクセス要求102を満たす。
要求されたキャッシュラインがキャッシュメモリ140内で見つからない場合、キャッシュミスが発生している。キャッシュメモリ140でキャッシュミスが発生した場合、キャッシュコントローラ120は、メモリアクセス要求102をメインメモリ150に提供する。メインメモリ150は、メモリアクセス要求102に応じて、要求102が対象とするメインメモリアドレスでキャッシュラインを取り出し、キャッシュラインをキャッシュメモリ140に提供して、メモリアクセス要求102が満たされる。
いくつかの実施形態では、キャッシュメモリ140は、プロセッサコア110によって要求されるデータの全てを所定の時点で記憶することができず、それによって上述したようにメモリ階層を介してデータを転送する必要があるようなサイズで構成されている。キャッシュミスが発生し、要求されたキャッシュラインがメインメモリ150からフェッチされる必要がある毎に、メインメモリからのキャッシュラインの取り出しは時間を要し、その間に、プロセッサコア110が、同じキャッシュラインに対する1つ以上の追加の要求を受信する場合がある。キャッシュラインに対する未処理のアクセス要求が保留されている間に同じキャッシュラインに対する複数のメモリアクセス要求を生成することから生じる非効率を低減するために、処理システム100は、キャッシュメモリ140で未処理のアクセス要求を追跡する。
例示すると、動作中、プロセッサコア110は、メモリアクセス要求102をキャッシュコントローラ120に送信し、キャッシュコントローラ120は、要求されたキャッシュラインについてキャッシュメモリ140を検索する。要求されたキャッシュラインがキャッシュメモリ140内で見つかった場合、要求されたキャッシュラインがプロセッサコア110に提供される。要求されたキャッシュラインがキャッシュメモリ140内で見つからない場合、キャッシュコントローラ120は、メモリアクセス要求102をメインメモリ150に提供する。
要求されたキャッシュラインが、プロセッサコア110によってメインメモリ150から取り出される(フェッチされる)間、キャッシュコントローラ120は、フェッチされたキャッシュラインにキャッシュエントリを割り当てる。いくつかの実施形態では、キャッシュコントローラ120は、キャッシュラインがメインメモリ150から取り出されるとキャッシュラインが記憶されるキャッシュセット及びウェイに対応するキャッシュエントリを割り当てる。キャッシュコントローラ120は、フェッチされたキャッシュラインのメインメモリアドレスと、キャッシュラインが保留中のキャッシュミスの対象であることを示すステータスビットと、を含むミスタグ147をキャッシュエントリに記憶する。また、キャッシュコントローラ120は、フェッチされたキャッシュラインに割り当てられたキャッシュエントリに関するデータインデックス及び位置情報を含むキャッシュエントリ(CE)タグ165を、保留ミスバッファ130に記憶する。例えば、いくつかの実施形態では、キャッシュコントローラ120は、キャッシュメモリ140において、フェッチされているキャッシュラインに割り当てられたデータインデックス及びキャッシュウェイを含むキャッシュエントリタグ165を、保留ミスバッファ130に記憶する。
保留ミスバッファ130は、未処理のアクセス要求の対象であるキャッシュラインを記憶するためにキャッシュコントローラ120によって割り当てられたキャッシュエントリのデータインデックス及びキャッシュエントリ位置情報を含むキャッシュエントリタグ165を記憶するメモリモジュールである。いくつかの実施形態では、保留ミスバッファ130は、メインメモリ150からフェッチされるキャッシュライン毎に割り当てられたデータインデックス及びキャッシュウェイを含むキャッシュエントリタグを記憶するように構成されている。いくつかの実施形態では、データインデックス及び割り当てられたキャッシュウェイを含む保留ミスバッファ130内の各キャッシュエントリタグは、メインメモリ150からフェッチされるキャッシュラインのフルメインメモリアドレスよりも小さい(つまり、より少ないビットを必要とする)。
キャッシュラインに対する第1メモリアクセス要求102が依然としてメインメモリ150から満たされる過程にある間に、キャッシュコントローラ120が、キャッシュラインに対する後続のメモリアクセス要求104をプロセッサコア110から受信した場合、キャッシュコントローラ120は、後続のメモリアクセス要求104の対象となるメモリアドレスに関連するキャッシュラインを1つのキャッシュエントリが含むかどうかを判別するために、キャッシュメモリ140を検索する。この場合、キャッシュコントローラ120は、キャッシュエントリにおいて、フェッチされているキャッシュラインのメインメモリアドレスと、当該キャッシュラインが保留中のキャッシュミスの対象であることを示すステータスビットと、を識別する。キャッシュコントローラは、ステータスビットの読み取りに基づいて、要求されたキャッシュラインに対する後続のメモリアクセス要求104をメインメモリ150に転送せず、代わりに他のタスクを再開する。
メインメモリ150が、要求の対象となるメインメモリアドレスでキャッシュラインを取り出し、キャッシュラインをキャッシュメモリ140に提供すると、キャッシュコントローラ120は、キャッシュラインのデータインデックスを、保留ミスバッファ130に記憶されたキャッシュエントリタグ165と比較する。キャッシュコントローラは、キャッシュラインのデータインデックスを、記憶されたキャッシュエントリタグと一致させ、キャッシュラインを記憶するために割り当てられたキャッシュメモリ140内のキャッシュエントリをキャッシュエントリタグ165から読み取る。キャッシュコントローラ120は、以前に割り当てられたキャッシュエントリのセット及びウェイにキャッシュラインを記憶し、ステータスビットを、キャッシュラインがキャッシュメモリ140に存在することを示す有効な状態に更新する。
図2は、キャッシュミスに応じてミスタグ247をキャッシュメモリ240内のキャッシュエントリ245に記憶し、キャッシュエントリタグ265を生成して保留ミスバッファ230に記憶するキャッシュコントローラ220の一例を示す図である。キャッシュコントローラ220は、キャッシュラインに対する要求をプロセッサ(図示省略)から受信し、メモリアクセス要求の対象となるメモリアドレスに関連するキャッシュラインを1つのキャッシュエントリが記憶しているかどうかを判別するためにキャッシュメモリ240を検索する。この例では、要求されたキャッシュラインがキャッシュメモリ240に存在しないので、キャッシュコントローラ220は、メモリアクセス要求をメインメモリ(図示省略)に提供する。キャッシュコントローラ220は、メインメモリへのメモリアクセス要求が保留中である間、キャッシュエントリ245を、保留中のメモリアクセス要求の対象であるキャッシュラインに割り当て、キャッシュラインのメインメモリアドレスと、キャッシュラインが保留中のメモリアクセス要求の対象であることを示すステータスビットと、を含むミスタグ247を生成する。キャッシュコントローラ220は、ミスタグ247を、キャッシュメモリ240内の割り当てられたキャッシュエントリ245に記憶する。
また、キャッシュコントローラ220は、保留中のメモリアクセス要求の対象であるキャッシュラインのデータインデックスと、キャッシュラインに割り当てたキャッシュエントリ245と、を含むキャッシュエントリタグ265を生成する。キャッシュコントローラ220は、キャッシュエントリタグ265を保留ミスバッファ230に記憶する。通常、キャッシュエントリは、キャッシュエントリが有効なキャッシュラインで満たされているかどうかを示すステータスビットを有する。この例では、キャッシュエントリ245に記憶されたミスタグ247は、ミスタグ247に記憶されたメインメモリアドレスに関連するデータが、保留中のメモリアクセス要求の対象であること(ミス保留)を示すステータスビットを含む。
図3は、いくつかの実施形態による、保留中のメモリアクセス要求の対象であるキャッシュラインに対する後続の要求304をキャッシュコントローラ320に発行するプロセッサ310の一例を示す図である。キャッシュコントローラ320は、後続の要求304を受信し、要求されたキャッシュラインについてキャッシュメモリ340を検索する。キャッシュコントローラ320は、要求されたキャッシュラインのメインメモリアドレスを、キャッシュエントリ345に記憶されたミスタグ347と一致させる。キャッシュコントローラ320は、ミスタグ347のステータスビット(図示省略)を読み取り、要求されたキャッシュラインが既に保留中のメモリアクセス要求の対象であると判別する。
キャッシュコントローラ320は、要求されたキャッシュラインが既にメインメモリ(図示省略)から取り出されている途中であると判別すると、キャッシュメモリ340の検索の結果を、既にプロセッサ(図示省略)にコピーされたキャッシュヒットとして扱い、要求されたキャッシュラインに対するメインメモリへの追加の要求を生成することなく他のタスクを再開する。キャッシュコントローラ320は、キャッシュメモリ340の検索から、要求されたキャッシュラインが保留ミスの対象であると判別することができるので、要求されたキャッシュラインが保留ミスの対象であるかどうかを判別するために保留ミスバッファ(図示省略)をチェックする必要がなく、これにより電力を節約する。
図4は、メモリアクセス要求402をメインメモリ450に発行し、要求されたデータ460を、データ460がメインメモリ450に記憶されているメインメモリアドレスからコピーし、データ460を、保留ミスバッファ430に記憶されたキャッシュエントリタグ465によって示されたキャッシュメモリ440内のキャッシュエントリ(図示省略)に記憶するキャッシュコントローラ420の一例を示す図である。メインメモリ450は、メモリアクセス要求402に応じて、要求402の対象となるメインメモリアドレスでキャッシュラインを取り出し、データ460をキャッシュコントローラ420に提供する。キャッシュコントローラ420は、データ460のデータインデックスを、保留ミスバッファ430に記憶されたキャッシュエントリタグと比較する。キャッシュコントローラ420は、データ460のデータインデックスをキャッシュエントリタグ465のインデックスと一致させると、キャッシュエントリタグ465からキャッシュエントリを読み取る。キャッシュコントローラ420は、キャッシュエントリタグ465によって示されたキャッシュメモリ440内の位置にデータ460を記憶する。キャッシュコントローラ420は、キャッシュエントリにおけるエントリのステータスビットを、データ460がキャッシュメモリ440に存在することを示す有効な状態に更新する。
図5は、キャッシュエントリタグ565の一例を示す図である。キャッシュエントリタグ565は、メモリアクセス要求の対象であるキャッシュラインのデータインデックス512と、キャッシュラインに割り当てられたキャッシュエントリ(図示省略)のキャッシュウェイ514と、を含む。データインデックス512は、キャッシュラインのメインメモリアドレスのサブセットを含み、フルメインメモリアドレスよりも短い。キャッシュウェイ514は、メモリアクセス要求の対象であるキャッシュラインに割り当てられ、ミスタグ(図示省略)によって一時的に占有されているキャッシュメモリ内のウェイ(図示省略)を含む。キャッシュエントリタグ565は、メモリアクセス要求の対象であるキャッシュラインのフルメインメモリアドレスよりも小さい(より少ない記憶容量を必要とする)。
図6は、ミスタグ647の一例を示す図である。フルアソシアティブキャッシュの場合、ミスタグ647は、メモリアクセス要求の対象であるキャッシュラインのフルメインメモリアドレス616と、メインメモリアドレス616に関連するキャッシュラインが保留ミスの対象であることを示すステータスビット618と、を含む。セットアソシアティブキャッシュの場合、ミスタグ647は、メモリアクセス要求の対象であるキャッシュラインのフルメインメモリアドレスの一部616と、メインメモリアドレス616に関連するキャッシュラインが保留ミスの対象であることを示すステータスビット618と、を含む。
図7は、既に保留中のメモリアクセス要求の対象となっているデータに対する後続のメモリアクセス要求を処理する方法700を示す図である。ブロック702において、キャッシュコントローラは、データに対する要求を受信する。ブロック704において、キャッシュコントローラは、要求されたデータについてキャッシュメモリを検索し、データがキャッシュメモリに存在するのか、又は、要求されたデータについてのミスタグがキャッシュメモリに存在するのかを判別する。
要求されたデータも要求されたデータについてのミスタグもキャッシュメモリに存在しない場合には、ブロック706において、キャッシュコントローラは、要求されたデータをメインメモリからフェッチするために、メモリアクセス要求をメインメモリに送信する。ブロック708において、キャッシュコントローラは、要求されたデータに対してキャッシュエントリを割り当てる。ブロック710において、キャッシュコントローラは、要求されたデータのメインメモリドレスと、データがキャッシュミスの対象であることを示すステータスビットと、を含むミスタグを生成し、ミスタグをキャッシュエントリに記憶する。ブロック712において、キャッシュコントローラは、要求されたデータのインデックスと、割り当てられたキャッシュエントリと、を含むキャッシュエントリタグを生成し、キャッシュエントリタグをミス保留バッファに記憶する。ブロック714において、キャッシュコントローラは、要求されたデータをメインメモリから受信する。ブロック716において、キャッシュコントローラは、要求されたデータのデータインデックスと一致するキャッシュエントリタグについてミス保留バッファに問い合わせを行い、キャッシュエントリタグからキャッシュエントリ情報を読み取る。ブロック718において、キャッシュコントローラは、要求されたデータを、キャッシュエントリタグで指定されたキャッシュエントリにコピーし、キャッシュエントリのステータスビットを有効状態に更新する。
ブロック704に戻り、キャッシュコントローラが、要求されたデータについてキャッシュメモリを検索し、要求されたデータに対応するミスタグをキャッシュメモリが含むか、要求されたデータをキャッシュメモリが含むかの何れかを判別した場合、ブロック720において、キャッシュコントローラは、要求されたデータのキャッシュエントリがミスタグであるのか又は要求されたデータであるのかを判別する。キャッシュエントリが要求されたデータのミスタグを含む場合、ブロック722において、キャッシュコントローラは、ミスタグを、既にプロセッサにコピーされたキャッシュヒットであるかのように扱い、要求されたデータに対するメモリアクセス要求を待つ間他の命令を実行し続ける。ブロック720において、要求されたデータについてのキャッシュエントリが要求されたデータを含むとキャッシュコントローラが判別した場合、ブロック724において、キャッシュコントローラは、要求されたデータをプロセッサにコピーする。
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されると、上記の技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ(RAM)、又は、他の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の記憶媒体、又は、記憶媒体の組み合わせを含むことができる。かかる記憶媒体には、限定されないが、光媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)、キャッシュ)、不揮発性メモリ(例えば、読み出し専用メモリ(ROM)、フラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体は、コンピュータシステム(例えば、システムRAM又はROM)に内蔵されてもよいし、コンピュータシステム(例えば、磁気ハードドライブ)に固定的に取り付けられてもよいし、コンピュータシステム(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)に着脱可能に取り付けられてもよいし、有線又は無線のネットワークを介してコンピュータシステム(例えば、ネットワークアクセス可能なストレージ(NAS))に接続されてもよい。
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。

Claims (11)

  1. プロセッサが、データに対する第1要求(102)のキャッシュ(140)でのキャッシュミスに応じて、前記データを記憶するために前記キャッシュのキャッシュエントリ(245)を割り当てることと、
    前記プロセッサが、前記データが異なるレベルのメモリ(150)から前記キャッシュに取り出されている間に、前記第1要求が前記キャッシュで保留中であるという指標(147)を前記キャッシュエントリに記憶することと、データインデックス及びキャッシュエントリの位置情報を含む識別子(165)をバッファ(130)に記憶することと、
    前記プロセッサが、前記データが前記キャッシュに取り出されている間に、前記キャッシュにおいて前記データに対する第2要求(104)を受信したことに応じて、前記キャッシュエントリの前記指標を読み取ることと、
    前記プロセッサが、前記指標に基づいて、前記第1要求が前記キャッシュで保留中であることを識別したことに応じて、前記データが前記キャッシュに取り出されるまで、前記データに対する第2要求を保留状態にし、前記第2要求を、既に前記プロセッサにコピーされたキャッシュヒットとして扱う(722)ことと、を含む、
    方法。
  2. 前記キャッシュにおいて前記データを受信したことに応じて、前記データを前記キャッシュの前記キャッシュエントリに記憶することをさらに含む、
    請求項の方法。
  3. 前記キャッシュにおいて前記データを受信したことに応じて、前記バッファにアクセスして、前記データを記憶するための前記キャッシュの前記キャッシュエントリを決定することをさらに含む、
    請求項の方法。
  4. 前記キャッシュエントリに有効なデータが記憶されていることを示すために、前記キャッシュエントリの前記指標を更新することをさらに含む、
    請求項の方法。
  5. 前記識別子は、前記キャッシュエントリのセットの指標(512)とウェイ(514)とを含む、
    請求項の方法。
  6. 前記識別子は、前記データに対応するメモリアドレスに基づくタグ値を含む、
    請求項の方法。
  7. プロセッサ(100)であって、
    キャッシュ(140)と、
    キャッシュコントローラ(120)と、を備え、
    前記キャッシュコントローラ(120)は、
    データに対する第1要求(102)の前記キャッシュでのキャッシュミスに応じて、前記データを記憶するために前記キャッシュのキャッシュエントリ(245)を割り当てることと、
    前記データが異なるレベルのメモリ(150)から前記キャッシュに取り出されている間に、前記第1要求が前記キャッシュで保留中であるという指標(147)を前記キャッシュエントリに記憶することと、データインデックス及びキャッシュエントリの位置情報を含む識別子(165)をバッファ(130)に記憶することと、
    前記データが前記キャッシュに取り出されている間に、前記キャッシュにおいて前記データに対する第2要求(104)を受信したことに応じて、前記キャッシュエントリの前記指標を読み取ることと、
    前記指標に基づいて、前記第1要求が前記キャッシュで保留中であることを識別したことに応じて、前記データが前記キャッシュに取り出されるまで、前記データに対する第2要求を保留状態にし、前記第2要求を、既に前記プロセッサにコピーされたキャッシュヒットとして扱う(722)ことと、
    を行うように構成されている、
    プロセッサ(100)。
  8. 前記キャッシュコントローラは、
    前記データを受信したことに応じて、前記データを前記キャッシュの前記キャッシュエントリに記憶することを行うように構成されている、
    請求項のプロセッサ。
  9. 前記キャッシュコントローラは、
    前記データを受信したことに応じて、前記バッファにアクセスして、前記データを記憶するための前記キャッシュの前記キャッシュエントリを決定することを行うように構成されている、
    請求項のプロセッサ。
  10. 前記キャッシュコントローラは、
    前記キャッシュエントリに有効なデータが記憶されていることを示すために、前記指標を更新することを行うように構成されている、
    請求項のプロセッサ。
  11. 前記識別子は、前記キャッシュエントリのセットの指標とウェイとを含む、
    請求項のプロセッサ。
JP2019501927A 2016-07-15 2017-07-13 キャッシュエントリでメモリアクセス要求のペンデンシを識別するシステム及び方法 Active JP7264806B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/211,547 2016-07-15
US15/211,547 US10922230B2 (en) 2016-07-15 2016-07-15 System and method for identifying pendency of a memory access request at a cache entry
PCT/US2017/041935 WO2018013813A1 (en) 2016-07-15 2017-07-13 System and method for identifying pendency of a memory access request at a cache entry

Publications (2)

Publication Number Publication Date
JP2019525327A JP2019525327A (ja) 2019-09-05
JP7264806B2 true JP7264806B2 (ja) 2023-04-25

Family

ID=60941112

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019501927A Active JP7264806B2 (ja) 2016-07-15 2017-07-13 キャッシュエントリでメモリアクセス要求のペンデンシを識別するシステム及び方法

Country Status (6)

Country Link
US (1) US10922230B2 (ja)
EP (1) EP3485381A4 (ja)
JP (1) JP7264806B2 (ja)
KR (1) KR102465851B1 (ja)
CN (1) CN109478163B (ja)
WO (1) WO2018013813A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11403035B2 (en) * 2018-12-19 2022-08-02 Micron Technology, Inc. Memory module including a controller and interfaces for communicating with a host and another memory module
US11568932B2 (en) * 2021-02-22 2023-01-31 Micron Technology, Inc. Read cache for reset read disturb mitigation

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030056066A1 (en) 2001-09-14 2003-03-20 Shailender Chaudhry Method and apparatus for decoupling tag and data accesses in a cache memory
JP2007286990A (ja) 2006-04-19 2007-11-01 Nec Corp キャッシュメモリ装置及びそれに用いるキャッシュメモリ制御方法並びにそのプログラム

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6430654B1 (en) 1998-01-21 2002-08-06 Sun Microsystems, Inc. Apparatus and method for distributed non-blocking multi-level cache
WO2002099652A1 (en) * 2001-06-06 2002-12-12 Sun Microsystems, Inc. Method and apparatus for facilitating flow control during accesses to cache memory
US6912623B2 (en) * 2002-06-04 2005-06-28 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy
US20060015689A1 (en) 2004-07-15 2006-01-19 International Business Machines Corporation Implementation and management of moveable buffers in cache system
US20070067572A1 (en) 2005-09-19 2007-03-22 Via Technologies, Inc. Buffering missed requests in processor caches
US8285926B2 (en) * 2010-05-03 2012-10-09 Oracle America, Inc. Cache access filtering for processors without secondary miss detection
US20140089600A1 (en) 2012-09-27 2014-03-27 Apple Inc. System cache with data pending state
JP2014186579A (ja) * 2013-03-25 2014-10-02 Sony Corp キャッシュメモリ、キャッシュメモリ制御装置、および、そのキャッシュメモリ制御方法
US9304929B2 (en) 2013-10-24 2016-04-05 Mediatek Singapore Pte. Ltd. Storage system having tag storage device with multiple tag entries associated with same data storage line for data recycling and related tag storage device
GB2537357A (en) * 2015-04-09 2016-10-19 Imagination Tech Ltd Cache operation in a multi-threaded processor
GB2538055B (en) * 2015-04-28 2017-04-19 Advanced Risc Mach Ltd Data processing apparatus having a cache
US10331561B1 (en) * 2016-06-29 2019-06-25 Emc Corporation Systems and methods for rebuilding a cache index

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030056066A1 (en) 2001-09-14 2003-03-20 Shailender Chaudhry Method and apparatus for decoupling tag and data accesses in a cache memory
JP2007286990A (ja) 2006-04-19 2007-11-01 Nec Corp キャッシュメモリ装置及びそれに用いるキャッシュメモリ制御方法並びにそのプログラム

Also Published As

Publication number Publication date
CN109478163B (zh) 2024-03-26
EP3485381A4 (en) 2020-03-25
CN109478163A (zh) 2019-03-15
WO2018013813A1 (en) 2018-01-18
KR20190019157A (ko) 2019-02-26
JP2019525327A (ja) 2019-09-05
KR102465851B1 (ko) 2022-11-11
EP3485381A1 (en) 2019-05-22
US20180018264A1 (en) 2018-01-18
US10922230B2 (en) 2021-02-16

Similar Documents

Publication Publication Date Title
CN111344684B (zh) 多层缓存安置机制
US10599578B2 (en) Dynamic cache bypassing
US20210173789A1 (en) System and method for storing cache location information for cache entry transfer
TWI603264B (zh) 準確預測記憶體存取之以區域爲基礎的技術
JP6630449B2 (ja) 他のキャッシュでのエントリの可用性に基づくキャッシュエントリの置換
US8364904B2 (en) Horizontal cache persistence in a multi-compute node, symmetric multiprocessing computer
US8583873B2 (en) Multiport data cache apparatus and method of controlling the same
US20180113815A1 (en) Cache entry replacement based on penalty of memory access
JP7264806B2 (ja) キャッシュエントリでメモリアクセス要求のペンデンシを識別するシステム及び方法
US11288205B2 (en) Access log and address translation log for a processor
US8356141B2 (en) Identifying replacement memory pages from three page record lists
US20140013054A1 (en) Storing data structures in cache
KR101976320B1 (ko) 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법
US20160041916A1 (en) Systems and Methods to Manage Cache Data Storage
JP2019521410A (ja) 別のキャッシュレベルからのヒントに基づくキャッシュエントリエイジの設定

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200710

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210628

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210706

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20211006

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211203

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20220412

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220812

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20220812

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20220822

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20220823

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20221021

C211 Notice of termination of reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C211

Effective date: 20221025

C22 Notice of designation (change) of administrative judge

Free format text: JAPANESE INTERMEDIATE CODE: C22

Effective date: 20221108

C22 Notice of designation (change) of administrative judge

Free format text: JAPANESE INTERMEDIATE CODE: C22

Effective date: 20221213

C23 Notice of termination of proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C23

Effective date: 20230221

C03 Trial/appeal decision taken

Free format text: JAPANESE INTERMEDIATE CODE: C03

Effective date: 20230322

C30A Notification sent

Free format text: JAPANESE INTERMEDIATE CODE: C3012

Effective date: 20230322

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230413

R150 Certificate of patent or registration of utility model

Ref document number: 7264806

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150