JP2022546358A - サービスダーティライン追跡の品質 - Google Patents

サービスダーティライン追跡の品質 Download PDF

Info

Publication number
JP2022546358A
JP2022546358A JP2022512734A JP2022512734A JP2022546358A JP 2022546358 A JP2022546358 A JP 2022546358A JP 2022512734 A JP2022512734 A JP 2022512734A JP 2022512734 A JP2022512734 A JP 2022512734A JP 2022546358 A JP2022546358 A JP 2022546358A
Authority
JP
Japan
Prior art keywords
cache line
counter
write
memory bandwidth
cache
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.)
Granted
Application number
JP2022512734A
Other languages
English (en)
Other versions
JPWO2021046229A5 (ja
JP7357148B2 (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 JP2022546358A publication Critical patent/JP2022546358A/ja
Publication of JPWO2021046229A5 publication Critical patent/JPWO2021046229A5/ja
Application granted granted Critical
Publication of JP7357148B2 publication Critical patent/JP7357148B2/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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing

Landscapes

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

Abstract

Figure 2022546358000001
書き込みメモリ帯域幅の測定値を生成するシステム、装置及び方法が開示されている。制御ユニットは、キャッシュ階層への書き込みを監視する。キャッシュラインへの書き込みが、キャッシュラインがキャッシュ階層に入力されてから最初に修正されるものである場合に、制御ユニットは、書き込みメモリ帯域幅カウンタをインクリメントする。書き込みが、キャッシュ階層に入力してから既に修正されたキャッシュラインに対するものである場合、書き込みメモリ帯域幅カウンタがインクリメントされない。キャッシュラインへの最初の書き込みは、メモリへの書き込みを最終的に引き起こしてからの書き込みメモリ帯域幅のプロキシである。制御ユニットは、書き込みメモリ帯域幅の測定値を生成するために、書き込みメモリ帯域幅カウンタの値を使用する。また、制御ユニットは、スレッドクラス毎に書き込みメモリ帯域幅を計算するために、異なるスレッドクラスについて複数のカウンタを維持することができる。
【選択図】図4

Description

(関連技術の説明)
最近の殆どのコンピューティングデバイスは、コンピューティングデバイス内のメインメモリに加えて、少なくとも1つのレベルのキャッシュメモリ(又は、キャッシュ)を設けている。概して、キャッシュは、様々な操作を実行するために使用されるデータ及び命令の制限された数のコピーを、操作を実行するコンピューティングデバイス内の機能ブロックの近くに記憶するために使用される、小容量で高速なアクセスメモリである。キャッシュは、通常、スタティックランダムアクセスメモリ(SRAM)集積回路又は他のタイプのメモリ回路等のように、より高速なメモリ回路を使用して実装される。プロセッサがメモリに記憶されたデータへのアクセスを要求する場合、プロセッサは、先ず、データのコピーがキャッシュに記憶されているかどうかを判別する。記憶されている場合、プロセッサは、キャッシュにアクセスし、データへのアクセスをより効率的に行うことができる。
一部のキャッシュでは、キャッシュラインに関連するクラス又はスレッドがキャッシュに記憶される。これは、より大量の領域を消費する可能性がある追加の情報がキャッシュに記憶されることにつながる。さらに、スレッドクラスのインジケーションがキャッシュに記憶されるスキームでは、ソフトウェアは、スレッドのクラスを定期的に変更することがある。このような場合、潜在的に大きなレベル3(L3)キャッシュのキャッシュライン内のスレッドクラス情報が古くなる可能性がある。
添付図面と共に以下の説明を参照することによって、本明細書で説明する方法及びメカニズムの利点をより良く理解することができる。
コンピューティングシステムの一実施形態のブロック図である。 プロセッサの一実施形態のブロック図である。 キャッシュ階層の書き込みメモリ帯域幅を計算する一実施形態のブロック図である。 書き込みメモリ帯域幅の測定値を生成する方法の一実施形態を示す一般化されたフローチャートである。 キャッシュへの書き込みを監視する方法の一実施形態を示す一般化されたフローチャートである。 書き込みメモリ帯域幅の測定値を生成する方法の一実施形態を示す一般化されたフローチャートである。 スレッドクラス毎に書き込みメモリ帯域幅を追跡する方法の一実施形態を示す一般化されたフローチャートである。
以下の説明では、本明細書で提示する方法及びメカニズムの十分な理解をもたらすために、多くの特定の詳細が示されている。しかしながら、当業者は、これらの特定の詳細無しに様々な実施形態が実施され得ることを認識すべきである。例えば、本明細書で説明するアプローチを曖昧にするのを避けるために、周知の構造、コンポーネント、信号、コンピュータプログラム命令、及び、技術が詳細に示されていない。説明を簡潔及び明瞭にするために、図面に示す要素が必ずしも縮尺通りに描かれていないことを理解されたい。例えば、いくつかの要素の寸法は、他の要素と比べて誇張され得る。
書き込みメモリ帯域幅を測定する様々なシステム、装置、方法及びコンピュータ可読記憶媒体が本明細書で開示される。一実施形態では、システムは、プロセッサと、キャッシュ階層と、メモリサブシステムと、を含む。キャッシュ階層は、1つ以上のキャッシュレベル及び1つ以上のキャッシュコントローラ(すなわち、制御ユニット)を含む。一実施形態では、所定の制御ユニットは、キャッシュ階層への書き込みを監視する。キャッシュラインへの書き込みが、キャッシュ階層に入力してからキャッシュラインが初めて修正されるものである場合に、制御ユニットは、書き込みメモリ帯域幅カウンタをインクリメント(増分)する。そうでなければ、書き込みが、キャッシュ階層に入力してから既に修正されたキャッシュラインに対するものである場合に、制御ユニットは、書き込みメモリ帯域幅カウンタをインクリメントしない。キャッシュラインへの最初の書き込みは、最終的にメモリへの書き込みを引き起こすので、書き込みメモリ帯域幅のプロキシ(proxy)となる。制御ユニットは、書き込みメモリ帯域幅カウンタの値を使用して、書き込みメモリ帯域幅の測定値を生成する。また、制御ユニットは、スレッドクラス毎の書き込みメモリ帯域幅を計算するために、異なるスレッドクラス毎に複数のカウンタを維持することができる。
図1を参照すると、コンピューティングシステム100の一実施形態のブロック図が示されている。一実施形態では、コンピューティングシステム100は、少なくともプロセッサ105A~105Nと、入力/出力(I/O)インタフェース120と、バス125と、メモリコントローラ(複数可)130A~130Nと、ネットワークインタフェース135と、メモリデバイス(複数可)140A~140Nと、を含む。他の実施形態では、コンピューティングシステム100は、他の構成要素(例えば、ディスプレイコントローラ)を含み、及び/又は、コンピューティングシステム100は、異なるように構成されている。プロセッサ105A~105Nは、システム100に含まれる任意の数のプロセッサを表す。
一実施形態では、プロセッサ105Aは、中央処理装置(CPU)等の汎用プロセッサである。一実施形態では、プロセッサ105Nは、高度に並列なアーキテクチャを有するデータ並列プロセッサである。データ並列プロセッサは、グラフィックプロセシングユニット(GPU)、デジタルシグナルプロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)等を含む。一実施形態では、プロセッサ105Aは、少なくとも実行コア(複数可)110Aと、キャッシュサブシステム115Aと、メモリコントローラ(複数可)130Aと、を含む。同様に、プロセッサ105Nは、少なくとも実行コア(複数可)110Nと、キャッシュサブシステム115Nと、メモリコントローラ(複数可)130Nと、を含む。実行コア(複数可)110A~110Nは、本明細書において実行ユニットと呼ばれることに留意されたい。また、プロセッサ105A~105Nは、図を曖昧にすることを回避するために図示されていない他の構成要素を含み得ることに留意されたい。
システム100では、所定の処理若しくはクラスの処理のために、ソフトウェアへの情報提供のために、サービス品質(QOS)スキームを介した帯域幅強制のために、又は、メモリ帯域幅がどの程度使用されるかに関心のある他のハードウェアのために、メモリ帯域幅を測定することが望まれる場合がある。既存のソリューションは、キャッシュミス要求が、グローバルリクエスタID、又は、要求に付随するクラスの他のインジケーションを有することが多いので、比較的簡単な方法で読み込みメモリ帯域幅を測定する。書き込みがキャッシュエビクションの結果である場合があり、キャッシュラインが属するクラスのインジケーションをキャッシュが記憶しないことがあるので、書き込みメモリ帯域幅を測定することは、あまり簡単ではない。したがって、様々な実施形態では、システム100は、効率的な方法でメモリデバイス140A~140Nへの書き込みメモリ帯域幅を測定するための様々な技術を使用する。
一実施形態では、キャッシュサブシステム115A~115Nは、キャッシュラインが、キャッシュサブシステム115A~115Nに至った後に、実行コア(複数可)110A~110Nの各々によって初めて書き込まれることを監視するための制御ロジックを含む。一実施形態では、制御ロジックは、対応するキャッシュサブシステム115A~115N内の任意のレベルにキャッシュされてからキャッシュラインが初めて修正される場合にはいつでもカウンタをインクリメントする。キャッシュラインが2回目以降に修正される場合、制御ロジックは、カウンタをインクリメントしない。制御ロジックは、カウンタの値に基づいて、書き込みメモリ帯域幅の測定値を生成する。一実施形態では、制御ロジックは、スレッドクラス毎に、キャッシュラインへの最初の書き込みを監視する。この実施形態では、制御ロジックは、書き込みメモリ帯域幅のスレッドクラス毎の測定値を生成する。
メモリコントローラ(複数可)130A~130Nは、任意の数及びタイプのメモリデバイス(複数可)140A~140Nの各々に結合された任意の数及びタイプのメモリコントローラを表す。メモリコントローラ(複数可)130A~130Nは、プロセッサ105A~105Nの各々に位置するように示されているが、これは、単に一実施形態を示すに過ぎない。別の実施形態では、メモリコントローラ(複数可)130A~130Nは、プロセッサ105A~105Nの各々の外部にある。また、キャッシュサブシステム115A~115Nの一部は、実行コア(複数可)110A~110Nの各々に位置してもよく、キャッシュサブシステム115A~115Nの別の部分は、実行コア(複数可)110A~110Nの外部に位置してもよいことに留意されたい。例えば、一実施形態では、レベル1(L1)キャッシュ及びレベル2(L2)キャッシュが実行コア(複数可)110A~110N内に位置し、最終レベルキャッシュ(LLC)が実行コア(複数可)110A~110Nの外部に位置する。
メモリデバイス(複数可)140は、任意の数及びタイプのメモリデバイスを表す。例えば、メモリデバイス(複数可)140のメモリのタイプは、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、NANDフラッシュメモリ、NORフラッシュメモリ、強誘電体ランダムアクセスメモリ(FeRAM)等を含む。I/Oインタフェース120は、任意の数及びタイプのI/Oインタフェース(例えば、ペリフェラルコンポーネントインターコネクト(PCI)バス、PCI-Extended(PCI-X)、PCIE(PCI Express)バス、ギガビットイーサネット(登録商標)(GBE)バス、ユニバーサルシリアルバス(USB))を表す。様々なタイプの周辺デバイス(図示省略)がI/Oインタフェース120に結合される。このような周辺デバイスは、限定されないが、ディスプレイ、ネットワークインタフェースカード、キーボード、マウス、プリンタ、スキャナ、ジョイスティックや他のタイプのゲームコントローラ、メディアレコーディングデバイス、外部記憶装置等を含む。ネットワークインタフェース135は、ネットワークを介してメッセージを送受信するために使用される。
様々な実施形態では、コンピューティングシステム100は、コンピュータ、ラップトップ、モバイルデバイス、ゲームコンソール、サーバ、ストリーミングデバイス、ウェアラブルデバイス、又は、他の様々なタイプのコンピューティングシステム若しくはデバイスである。コンピューティングシステム100の構成要素の数は、実施形態毎に変化することに留意されたい。例えば、各構成要素は、図1に示す数より多くてもよいし、少なくてもよい。また、コンピューティングシステム100が、図1に示されていない他の構成要素を含んでもよいことに留意されたい。さらに、他の実施形態では、コンピューティングシステム100は、図1に示す以外の方法で構成されてもよい。
図2を参照すると、プロセッサ200の一実施形態のブロック図が示されている。一実施形態では、プロセッサ200は、少なくとも実行コア205と、キャッシュサブシステム210と、制御ユニット215と、メモリサブシステム220と、を含む。プロセッサ200は、図を曖昧にすることを回避するために図示されていない他の構成要素を含んでもよいことに留意されたい。コア205は、1つ以上のプログラム及び/又はオペレーティングシステムの命令を実行するための任意の数のプロセッサコアを表す。一実施形態では、プロセッサ200の回路は、プロセッサ105A及び/又はプロセッサ105N(図1)に含まれる。
一実施形態では、コア205は、キャッシュサブシステム210に読み込み要求及び書き込み要求を送信する。制御ユニット215は、キャッシュサブシステム210のキャッシュラインに対して実行された書き込みを監視し、プロセッサ200の異なるスレッドクラスに対してキャッシュラインが最初に書き込まれたことを追跡するカウンタを維持する。キャッシュサブシステム210に運ばれてからキャッシュラインが初めて書き込まれる毎に、制御ユニット215は、キャッシュラインの対応するスレッドクラスのカウンタをインクリメントする。各カウンタは、対応するスレッドキャッシュの書き込みメモリ帯域幅の推定値を生成するために使用される。
図3を参照すると、キャッシュ階層300の書き込みメモリ帯域幅を計算する一実施形態のブロック図が示されている。キャッシュ階層300は、任意の数のキャッシュレベルを含み、レベルの数は、実施形態によって変化する。一実施形態では、キャッシュ階層300は、図2のキャッシュサブシステム210を表す。制御ユニット310は、キャッシュ階層300のキャッシュラインに対して実行される書き込みを監視する。一実施形態では、制御ユニット310は、ホストコンピューティングシステムの個別のスレッドクラス毎に個別のカウンタ325A~325Nを含む。所定のキャッシュラインがキャッシュ階層300に入力されてから当該所定のキャッシュラインに対して初めて書き込みが実行される場合、制御ユニット310は、書き込み操作のスレッドクラスを判別する。一実施形態では、制御ユニット310は、実行ユニットからスレッドクラスのインジケーションを受信する。別の実施形態では、制御ユニット310は、所定のキャッシュラインのアドレスでテーブル330へのルックアップを実行して、アドレスに対応するスレッドクラスを見つける。更なる実施形態では、制御ユニット310は、実行ユニットのロード/ストアユニット(図示省略)にクエリして、書き込み操作のスレッドクラスを判別する。他の実施形態では、制御ユニット310は、書き込み操作のスレッドクラスを判別するための他の技術を使用する。
各カウンタ325A~325Nは、対応するスレッドクラスの書き込みメモリ帯域幅を示す。一実施形態では、所定のカウンタ325A~325Nの値がプログラム可能な閾値よりも大きい場合、所定のカウンタ325A~325Nの値がプログラム可能な閾値を下回るまで、対応するスレッドクラスのメモリトラフィックが減少する。様々な実施形態では、メモリコントローラにおいて書き込み要求をクエリし、対応するスレッドクラスの書き込み要求の優先度を下げる又は他の技術を使用することによって、対応するスレッドクラスのメモリトラフィックが減少する。例えば、対応するスレッドクラスのメモリトラフィックを減少させるための他のメカニズムは、実行コアにおいてそのスレッドクラスからの未処理の許容可能なメモリ要求の数を減少させること、所望のメモリトラフィックレートに到達するレベルまでそれらのスレッドクラスの実行レートを軽減すること等を含む。
図4を参照すると、書き込みメモリ帯域幅の測定値を生成する方法400の一実施形態が示されている。説明のために、この実施形態におけるステップ及び図5~図7のステップを、連続した順序で示す。しかしながら、説明する方法の様々な実施形態では、説明する要素の1つ以上が、同時に実行されてもよいし、図示した順序と異なる順序で実行されてもよいし、完全に省略されてもよいことに留意されたい。必要に応じて他の追加の要素も実行される。本明細書で説明する様々なシステム又は装置の何れかは、方法400を実施するように構成されている。
制御ユニットは、キャッシュ階層に入力してからキャッシュラインが初めて修正される場合にはいつでもカウンタをインクリメントする(ブロック405)。制御ユニットは、カウンタの値に基づいて、書き込みメモリ帯域幅の測定値を生成する(ブロック410)。書き込みメモリ帯域幅の測定値を生成する一例は、方法600(図6)において説明する。書き込みメモリ帯域幅の測定値が所定の閾値よりも大きい場合(条件付きブロック415:「はい」)、制御ユニットは、メモリサブシステムに送信される書き込み操作の数を減少させる(ブロック420)。そうではなく、書き込みメモリ帯域幅の測定値が所定の閾値以下である場合(条件付きブロック415:「いいえ」)、制御ユニットは、メモリサブシステムに送信される書き込み操作を干渉しない(ブロック425)。ブロック420,425の後に、方法400はブロック405に戻る。別の実施形態では、制御ユニットは、ブロック410で生成された書き込みメモリ帯域幅の測定値を読み込みメモリ帯域幅の測定値に追加することによって、総メモリ帯域幅の測定値を生成する。次に、この実施形態では、制御ユニットは、条件付きブロック415において、総メモリ帯域幅が所定の閾値よりも大きいかどうかを判別する。
図5を参照すると、キャッシュへの書き込みを監視する方法500の一実施形態が示されている。所定のキャッシュラインへの書き込み操作が検出される(ブロック505)。書き込み操作を検出したことに応じて、制御ユニットは、所定のキャッシュラインの書き込みが、キャッシュ階層に入力してから所定のキャッシュラインが初めて修正される場合であるかどうかを判別する(ブロック510)。一実施形態では、キャッシュ階層に入力してから所定のキャッシュラインが依然に書き込まれたかどうかを判別するために、所定のキャッシュラインのダーティステータス(dirty status)がチェックされる。
所定のキャッシュラインへの書き込みが、所定のキャッシュラインがキャッシュ階層に入力されてから初めて修正される場合(条件付きブロック515:「はい」)、制御ユニットは、対応するカウンタをインクリメントする(ブロック520)。そうではなく、キャッシュ階層に入力してから所定のキャッシュラインが依然に修正されている場合(条件付きブロック515:「いいえ」分岐)、制御ユニットは、対応するカウンタを変更しないままにする(ブロック525)。ブロック520,525の後に、方法500は終了する。
図6を参照すると、書き込みメモリ帯域幅の測定値を生成する方法600の一実施形態が示されている。制御ユニットは、キャッシュ階層に記憶された未修正のキャッシュラインに対して実行される書き込みを追跡するために、カウンタを維持する(ブロック605)。修正されたキャッシュラインに対して実行される書き込みは、カウンタによって追跡されないことに留意されたい。制御ユニットは、第1の時点においてカウンタ値の第1のスナップショットを取得する(ブロック610)。代わりに、別の実施形態では、制御ユニットは、方法600の開始時にカウンタをリセットし、この場合、カウンタが第1の時点においてゼロの値を有するので、ブロック610がスキップされてもよい。
後に、或る期間が経過した後、制御ユニットは、第2の時点においてカウンタ値の第2のスナップショットを取得する(ブロック615)。第1の時点と第2の時点との間で経過することが許容される時間の長さは、プログラム可能であってもよいし、何等かの所定の時間の長さであってもよい。次に、制御ユニットは、カウンタ値の第2のスナップショットと第1のスナップショットとの間の差を、第1の時点と第2の時点との間で経過したクロックサイクルの数によって除算した値に等しい、書き込みメモリ帯域幅の測定値を生成する(ブロック620)。ブロック620の後に、方法600は終了する。ブロック620において生成された書き込みメモリ帯域幅の測定値が、ソフトウェア及び/又はハードウェアによって様々な方法で使用されてもよいことに留意されたい。また、方法600は、定期的に実行されてもよいことに留意されたい。いくつかのケースでは、制御ユニットは、方法600の各反復の後に、カウンタをリセットする。
図7を参照すると、スレッドクラス毎に書き込みメモリ帯域幅を追跡する方法700の一実施形態が示されている。制御ユニットは、複数の異なるスレッドクラスについて複数のカウンタを維持し、各カウンタは、個別のスレッドクラスについて書き込みメモリ帯域幅を追跡する(ブロック705)。キャッシュラインへの書き込みが検出される毎に、制御ユニットは、この書き込みが、キャッシュラインがキャッシュ階層に入力されてから初めての修正であるかどうかを判別する(ブロック710)。例えば、一実施形態では、対応するダーティビットセットを有していないキャッシュラインへの書き込みは、キャッシュラインの最初の修正と見なされる。
書き込みが、キャッシュラインがキャッシュ階層に入力されてから初めての修正である場合(条件付きブロック715:「はい」)、制御ユニットは、キャッシュラインが何れのスレッドクラスに属するかを判別する(ブロック720)。一実施形態では、制御ユニットは、キャッシュラインへの書き込みを引き起こした命令に対応するロード/ストアユニットエントリからスレッドクラスを取得する。別の実施形態では、制御ユニットは、キャッシュラインへの書き込みを引き起こした命令に対応する再順序付けバッファエントリ(reorder buffer entry)からスレッドクラスを取得する。更なる実施形態では、制御ユニットは、キャッシュラインのアドレスを用いてスレッドクラスのルックアップを実行して、アドレスに対応するスレッドクラスを判別する。書き込みが、キャッシュラインがキャッシュ階層に入力されてから初めての修正ではない場合(条件付きブロック715:「いいえ」)、方法700はブロック710に戻る。キャッシュラインが属するスレッドクラスを判別した後に、制御ユニットは、このスレッドクラスに対応するカウンタをインクリメントする(ブロック725)。ブロック725の後に、方法700はブロック710に戻る。
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、本明細書で説明する方法及び/又はメカニズムを実施する。例えば、汎用プロセッサ又は専用プロセッサによって実行可能なプログラム命令が考えられる。様々な実施形態では、そのようなプログラム命令は、高水準プログラミング言語によって表される。他の実施形態では、プログラム命令は、高水準プログラミング言語からバイナリ形式、中間形式又は他の形式にコンパイルされる。或いは、プログラム命令は、ハードウェアの動作又は設計を記述するように書き込まれる。そのようなプログラム命令は、C言語等の高水準プログラミング言語によって表される。或いは、Verilog等のハードウェア設計言語(HDL)が使用される。様々な実施形態では、プログラム命令は、様々な非一時的なコンピュータ可読記憶媒体の何れかに記憶される。記憶媒体は、プログラム実行のためにプログラム命令をコンピューティングシステムに提供するために、使用中にコンピューティングシステムによってアクセス可能である。一般的に、そのようなコンピューティングシステムは、少なくとも1つ以上のメモリと、プログラム命令を実行するように構成された1つ以上のプロセッサと、を含む。
上述した実施形態は、実施形態の非限定的な例示に過ぎないことを強調しておきたい。上記の開示が十分に理解されれば、多くの変形及び修正が当業者に明らかになる。以下の特許請求の範囲は、このような変形及び修正の全てを包含すると解釈されることが意図されている。

Claims (20)

  1. キャッシュ階層と、
    制御ユニットと、を備え、
    前記制御ユニットは、
    キャッシュラインが前記キャッシュ階層に入力されてから前記キャッシュラインが初めて修正される場合に、カウンタをインクリメントすることと、
    前記カウンタの値に基づいて、書き込みメモリ帯域幅の測定値を生成することと、
    前記書き込みメモリ帯域幅の測定値が所定の閾値を上回ることに応じて、メモリサブシステムに伝達される書き込み操作の数を減少させることと、
    を行うように構成されている、
    プロセッサ。
  2. 前記制御ユニットは、
    第1のキャッシュラインをターゲットとする書き込み操作を検出することと、
    前記第1のキャッシュラインへの前記書き込み操作が、前記第1のキャッシュラインが前記キャッシュ階層に入力されてからの前記第1のキャッシュラインの最初の修正であると判別したことに応じて、前記カウンタをインクリメントすることと、
    を行うように構成されている、
    請求項1のプロセッサ。
  3. 前記制御ユニットは、前記第1のキャッシュラインへの前記書き込み操作が、前記第1のキャッシュラインが前記キャッシュ階層に入力されてからの前記第1のキャッシュラインの最初の修正ではないと判別したことに応じて、前記カウンタを変更せずに維持するように構成されている、
    請求項2のプロセッサ。
  4. 前記制御ユニットは、
    第1の時点において前記カウンタの第1の値を記録することと、
    第2の時点において前記カウンタの第2の値を記録することであって、前記第2の時点は、前記第1の時点の後の時点である、ことと、
    前記第2の値と前記第1の値との間の差を、前記第1の時点と前記第2の時点との間に経過したクロックサイクルの数によって除算した値として、前記書き込みメモリ帯域幅の測定値を計算することと、
    を行うように構成されている、
    請求項1のプロセッサ。
  5. 前記制御ユニットは、
    複数の異なるスレッドクラスについて複数のカウンタを維持することであって、各カウンタは、個別のスレッドクラスについて書き込みメモリ帯域幅を追跡する、ことと、
    所定のキャッシュラインが前記キャッシュ階層に入力されてからの前記所定のキャッシュラインへの最初の書き込みを検出することと、
    前記所定のキャッシュラインが属するスレッドクラスに対応するカウンタをインクリメントすることと、
    を行うように構成されている、
    請求項1のプロセッサ。
  6. 前記制御ロジックは、前記書き込みメモリ帯域幅の測定値を所定の読み込みメモリ帯域幅の測定値に加算して、総メモリ帯域幅を計算するように構成されている、
    請求項1のプロセッサ。
  7. 前記制御ロジックは、前記総メモリ帯域幅を1つ以上の閾値と比較するように構成されている、
    請求項6のプロセッサ。
  8. 制御ユニットが、キャッシュラインがキャッシュ階層に入力されてから前記キャッシュラインが初めて修正される場合に、カウンタをインクリメントすることと、
    前記カウンタの値に基づいて、書き込みメモリ帯域幅の測定値を生成することと、
    前記書き込みメモリ帯域幅の測定値が所定の閾値を上回ることに応じて、メモリサブシステムに伝達される書き込み操作の数を減少させることと、を含む、
    方法。
  9. 第1のキャッシュラインをターゲットとする書き込み操作を検出することと、
    前記第1のキャッシュラインへの前記書き込み操作が、前記第1のキャッシュラインが前記キャッシュ階層に入力されてからの前記第1のキャッシュラインの最初の修正であると判別したことに応じて、前記カウンタをインクリメントすることと、を含む、
    請求項8の方法。
  10. 前記第1のキャッシュラインへの前記書き込み操作が、前記第1のキャッシュラインが前記キャッシュ階層に入力されてからの前記第1のキャッシュラインの最初の修正ではないと判別したことに応じて、前記カウンタを変更せずに維持することを含む、
    請求項9の方法。
  11. 第1の時点において前記カウンタの第1の値を記録することと、
    第2の時点において前記カウンタの第2の値を記録することであって、前記第2の時点は、前記第1の時点の後の時点である、ことと、
    前記第2の値と前記第1の値との間の差を、前記第1の時点と前記第2の時点との間に経過したクロックサイクルの数によって除算した値として、前記書き込みメモリ帯域幅の測定値を計算することと、を含む、
    請求項8の方法。
  12. 複数の異なるスレッドクラスについて複数のカウンタを維持することであって、各カウンタは、個別のスレッドクラスについて書き込みメモリ帯域幅を追跡する、ことと、
    所定のキャッシュラインが前記キャッシュ階層に入力されてからの前記所定のキャッシュラインへの最初の書き込みを検出することと、
    前記所定のキャッシュラインが属するスレッドクラスに対応するカウンタをインクリメントすることと、を含む、
    請求項8の方法。
  13. 前記書き込みメモリ帯域幅の測定値を所定の読み込みメモリ帯域幅の測定値に加算して、総メモリ帯域幅を計算することを含む、
    請求項8の方法。
  14. 前記総メモリ帯域幅を1つ以上の閾値と比較することを含む、
    請求項8の方法。
  15. メモリサブシステムと、
    前記メモリサブシステムに結合されたプロセッサと、を備え、
    前記プロセッサは、
    キャッシュラインが前記キャッシュ階層に入力されてから前記キャッシュラインが初めて修正される場合に、カウンタをインクリメントすることと、
    前記カウンタの値に基づいて、書き込みメモリ帯域幅の測定値を生成することと、
    前記書き込みメモリ帯域幅の測定値が所定の閾値を上回ることに応じて、メモリサブシステムに伝達される書き込み操作の数を減少させることと、
    を行うように構成されている、
    システム。
  16. 前記プロセッサは、
    第1のキャッシュラインをターゲットとする書き込み操作を検出することと、
    前記第1のキャッシュラインへの前記書き込み操作が、前記第1のキャッシュラインが前記キャッシュ階層に入力されてからの前記第1のキャッシュラインの最初の修正であると判別したことに応じて、前記カウンタをインクリメントすることと、
    を行うように構成されている、
    請求項15のシステム。
  17. 前記プロセッサは、前記第1のキャッシュラインへの前記書き込み操作が、前記第1のキャッシュラインが前記キャッシュ階層に入力されてからの前記第1のキャッシュラインの最初の修正ではないと判別したことに応じて、前記カウンタを変更せずに維持するように構成されている、
    請求項16のシステム。
  18. 前記プロセッサは、
    第1の時点において前記カウンタの第1の値を記録することと、
    第2の時点において前記カウンタの第2の値を記録することであって、前記第2の時点は、前記第1の時点の後の時点である、ことと、
    前記第2の値と前記第1の値との間の差を、前記第1の時点と前記第2の時点との間に経過したクロックサイクルの数によって除算した値として、前記書き込みメモリ帯域幅の測定値を計算することと、
    を行うように構成されている、
    請求項15のシステム。
  19. 前記プロセッサは、
    複数の異なるスレッドクラスについて複数のカウンタを維持することであって、各カウンタは、個別のスレッドクラスについて書き込みメモリ帯域幅を追跡する、ことと、
    所定のキャッシュラインが前記キャッシュ階層に入力されてからの前記所定のキャッシュラインへの最初の書き込みを検出することと、
    前記所定のキャッシュラインが属するスレッドクラスに対応するカウンタをインクリメントすることと、
    を行うように構成されている、
    請求項15のシステム。
  20. 前記プロセッサは、前記書き込みメモリ帯域幅の測定値を所定の読み込みメモリ帯域幅の測定値に加算して、総メモリ帯域幅を計算するように構成されている、
    請求項15のシステム。
JP2022512734A 2019-09-05 2020-09-03 サービスダーティライン追跡の品質 Active JP7357148B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/562,128 2019-09-05
US16/562,128 US11106594B2 (en) 2019-09-05 2019-09-05 Quality of service dirty line tracking
PCT/US2020/049215 WO2021046229A1 (en) 2019-09-05 2020-09-03 Quality of service dirty line tracking

Publications (3)

Publication Number Publication Date
JP2022546358A true JP2022546358A (ja) 2022-11-04
JPWO2021046229A5 JPWO2021046229A5 (ja) 2023-08-29
JP7357148B2 JP7357148B2 (ja) 2023-10-05

Family

ID=72561958

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022512734A Active JP7357148B2 (ja) 2019-09-05 2020-09-03 サービスダーティライン追跡の品質

Country Status (6)

Country Link
US (2) US11106594B2 (ja)
EP (1) EP4026008A1 (ja)
JP (1) JP7357148B2 (ja)
KR (1) KR102627410B1 (ja)
CN (1) CN114365101B (ja)
WO (1) WO2021046229A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11106594B2 (en) 2019-09-05 2021-08-31 Advanced Micro Devices, Inc. Quality of service dirty line tracking

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5307477A (en) 1989-12-01 1994-04-26 Mips Computer Systems, Inc. Two-level cache memory system
JPH0844626A (ja) 1994-07-28 1996-02-16 Nec Niigata Ltd キャッシュシステムのフラッシュサイクル制御方法
US6205521B1 (en) 1997-11-03 2001-03-20 Compaq Computer Corporation Inclusion map for accelerated cache flush
EP1182564A3 (en) 2000-08-21 2004-07-28 Texas Instruments France Local memory with indicator bits to support concurrent DMA and CPU access
US7895239B2 (en) * 2002-01-04 2011-02-22 Intel Corporation Queue arrays in network devices
US20060143397A1 (en) 2004-12-29 2006-06-29 O'bleness R F Dirty line hint array for cache flushing
US7330941B2 (en) 2005-03-23 2008-02-12 Qualcomm Incorporated Global modified indicator to reduce power consumption on cache miss
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
US8285940B2 (en) 2008-02-29 2012-10-09 Cadence Design Systems, Inc. Method and apparatus for high speed cache flushing in a non-volatile memory
US8103830B2 (en) 2008-09-30 2012-01-24 Intel Corporation Disabling cache portions during low voltage operations
US20110029735A1 (en) * 2009-07-28 2011-02-03 Ying-Chieh Chiang Method for managing an embedded system to enhance performance thereof, and associated embedded system
US8285936B2 (en) 2009-10-20 2012-10-09 The Regents Of The University Of Michigan Cache memory with power saving state
US8667449B2 (en) 2010-11-17 2014-03-04 Advanced Micro Devices, Inc. Flip-flop library development for high frequency designs built in an ASIC flow
US20130346683A1 (en) 2012-06-22 2013-12-26 William L. Walker Cache Sector Dirty Bits
US9058282B2 (en) * 2012-12-31 2015-06-16 Intel Corporation Dynamic cache write policy
JP6214888B2 (ja) 2013-03-13 2017-10-18 株式会社ダイヘン 変圧器
US9367472B2 (en) * 2013-06-10 2016-06-14 Oracle International Corporation Observation of data in persistent memory
US9251081B2 (en) 2013-08-01 2016-02-02 Advanced Micro Devices, Inc. Management of caches
US10169240B2 (en) * 2016-04-08 2019-01-01 Qualcomm Incorporated Reducing memory access bandwidth based on prediction of memory request size
CA3041597C (en) * 2016-10-31 2020-07-07 Leonardo S.P.A. Certifiable deterministic system software framework for hard real-time safety-critical applications in avionics systems featuring multi-core processors
US10339060B2 (en) * 2016-12-30 2019-07-02 Intel Corporation Optimized caching agent with integrated directory cache
US10162756B2 (en) 2017-01-18 2018-12-25 Intel Corporation Memory-efficient last level cache architecture
US11068314B2 (en) * 2017-03-29 2021-07-20 Juniper Networks, Inc. Micro-level monitoring, visibility and control of shared resources internal to a processor of a host machine for a virtual environment
US10452548B2 (en) * 2017-09-28 2019-10-22 Advanced Micro Devices, Inc. Preemptive cache writeback with transaction support
US11556477B2 (en) * 2018-06-15 2023-01-17 Arteris, Inc. System and method for configurable cache IP with flushable address range
EP3948549B1 (en) * 2019-03-29 2024-05-08 INTEL Corporation Apparatus, method, and system for collecting cold pages
US11106594B2 (en) 2019-09-05 2021-08-31 Advanced Micro Devices, Inc. Quality of service dirty line tracking
US20200401891A1 (en) * 2020-09-04 2020-12-24 Intel Corporation Methods and apparatus for hardware-aware machine learning model training

Also Published As

Publication number Publication date
US20210073137A1 (en) 2021-03-11
KR20220057572A (ko) 2022-05-09
US11106594B2 (en) 2021-08-31
CN114365101B (zh) 2023-10-24
US11669457B2 (en) 2023-06-06
CN114365101A (zh) 2022-04-15
EP4026008A1 (en) 2022-07-13
WO2021046229A1 (en) 2021-03-11
JP7357148B2 (ja) 2023-10-05
KR102627410B1 (ko) 2024-01-23
US20210390057A1 (en) 2021-12-16

Similar Documents

Publication Publication Date Title
KR101379524B1 (ko) 디스플레이 파이프 내에서의 스트리밍 변환
JP7390304B2 (ja) 大規模なキャッシュサイズに適合する領域ベースのディレクトリスキーム
US20210064545A1 (en) Home agent based cache transfer acceleration scheme
JP2023507292A (ja) ゼロ値メモリ圧縮
JP7357148B2 (ja) サービスダーティライン追跡の品質
US10580110B2 (en) Hardware structure to track page reuse
US20220050785A1 (en) System probe aware last level cache insertion bypassing
US20220197506A1 (en) Data placement with packet metadata
US11561895B2 (en) Oldest operation wait time indication input into set-dueling
CN115087961A (zh) 用于相干及非相干存储器请求的仲裁方案
US10540316B2 (en) Cancel and replay protocol scheme to improve ordered bandwidth

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230821

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230821

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20230821

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230925

R150 Certificate of patent or registration of utility model

Ref document number: 7357148

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150