JP2023507292A - ゼロ値メモリ圧縮 - Google Patents
ゼロ値メモリ圧縮 Download PDFInfo
- Publication number
- JP2023507292A JP2023507292A JP2022535063A JP2022535063A JP2023507292A JP 2023507292 A JP2023507292 A JP 2023507292A JP 2022535063 A JP2022535063 A JP 2022535063A JP 2022535063 A JP2022535063 A JP 2022535063A JP 2023507292 A JP2023507292 A JP 2023507292A
- Authority
- JP
- Japan
- Prior art keywords
- cache directory
- directory entry
- management device
- data
- coherency management
- 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.)
- Pending
Links
- 238000007906 compression Methods 0.000 title description 2
- 230000006835 compression Effects 0.000 title description 2
- 230000001427 coherent effect Effects 0.000 claims description 42
- 238000000034 method Methods 0.000 claims description 42
- 239000000523 sample Substances 0.000 claims description 17
- 230000004044 response Effects 0.000 claims description 13
- 230000001052 transient effect Effects 0.000 claims description 10
- 238000007726 management method Methods 0.000 description 62
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 5
- 238000013144 data compression Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 239000003795 chemical substances by application Substances 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000000098 azimuthal photoelectron diffraction Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
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)
Abstract
コヒーレンシ管理デバイスは、メインメモリのアドレスからデータを読み取る又はそれにデータを書き込む要求を受信する。書き込み時に、データにゼロデータが含まれている場合に、メモリアドレスに対応するエントリが存在しない場合にはキャッシュディレクトリに生成され、無効な状態に設定され、データにゼロデータが含まれていることを示す。ゼロデータは、メインメモリ又はキャッシュに書き込まれない。読み取り時に、キャッシュディレクトリは、メモリアドレスに対応するエントリについてチェックされる。エントリがキャッシュディレクトリに存在し、無効であり、メモリアドレスに対応するデータにゼロデータが含まれているという指標を含む場合、コヒーレンシ管理デバイスは、メインメモリ又はキャッシュからデータをフェッチせずに、要求に応じてゼロデータを返す。
【選択図】図6
【選択図】図6
Description
(関連出願の相互参照)
本願は、2019年12月20日に出願された米国特許出願第16/723,780号の利益を主張するものであり、その内容は参照により本明細書に組み込まれる。
本願は、2019年12月20日に出願された米国特許出願第16/723,780号の利益を主張するものであり、その内容は参照により本明細書に組み込まれる。
コンピュータシステムのメインメモリは、通常、ダイナミックランダムアクセスメモリ(DRAM)デバイス等の比較的安価で高密度のメモリデバイスを含む。しかし、このようなデバイスのアクセス時間は、通常、比較的長い。したがって、コンピュータシステムは、通常、性能を改善するために少なくとも1つのキャッシュメモリを含む。キャッシュメモリは、通常、プロセッサの比較的近くに配置されている比較的高速なメモリデバイスである。マルチプロセッサコンピュータシステムでは、各プロセッサ(又はプロセッサコア)は、通常、それ自体の専用のレベル1(L1)のキャッシュを有し、場合によっては、他のキャッシュ(例えば、レベル2(L2)、レベル3(L3))を他のプロセッサ又はプロセッサコアと共有する。
各ノード(例えば、プロセッサ、コア、又は、コア複合体)が専用のキャッシュを有するマルチノードコンピュータシステムでは、異なるノードによって使用されているデータのコヒーレンシを維持するための技術が実装されている。例えば、プロセッサが特定のメモリアドレスでメインメモリに格納されているデータにアクセスしようとする場合、最初に、そのメモリアドレスに対応するデータが別のキャッシュに格納されて変更されているかどうかを判定しなければならない。一部のそのようなアプローチは、システムによって現在使用されているキャッシュラインを追跡するために使用されるキャッシュディレクトリを含む。場合によっては、キャッシュディレクトリは、コンピュータシステムによって要求されるメモリ要求及びプローブ要求の数を減らすことによって、メモリ帯域幅を改善する。キャッシュディレクトリは、通常、(「ガードバンド(guard band)」によって)、例えば、アプリケーションの実行時に特定のデータセットのローカルな「ホットスポット(hot-spotting)」を処理するには、サイズ過大になる。したがって、アプリケーションは、通常、予備の未使用エントリをキャッシュディレクトリに残す。
いくつかのアプリケーションでは、プロセッサは、ゼロデータ(すなわち、ゼロのみを含むデータ)をメインメモリに書き込む。このようなアプリケーションには、メモリの消去(例えば、別の目的で使用するためにメモリをクリアする)や、高度なデータの希薄性(sparsity)を特徴とするデータセット(例えば、機械学習データ)の保存が含まれる場合がある。
添付の図面と併せて例として与えられる以下の説明から、より詳細な理解を得ることができる。
いくつかの実装形態において、コヒーレンシ管理デバイスを提供する。コヒーレンシ管理デバイスは、メインメモリのアドレスに格納されているデータを読み取る要求を受信する回路を含む。コヒーレンシ管理デバイスは、キャッシュディレクトリがアドレスに対応するキャッシュディレクトリエントリを含むかどうかを判定する回路も含む。コヒーレンシ管理デバイスは、キャッシュディレクトリがアドレスに対応するキャッシュディレクトリエントリを含む場合に、キャッシュディレクトリエントリが無効であるかどうかを判定する回路も含む。また、コヒーレンシ管理デバイスは、キャッシュディレクトリエントリが無効である場合に、メモリアドレスに対応するデータがゼロデータを含むという指標をキャッシュディレクトリエントリが含むかどうかを判定する回路を含む。コヒーレンシ管理デバイスは、キャッシュディレクトリエントリが指標を含む場合に、要求に応じてゼロデータを返す回路も含む。
コヒーレンシ管理デバイスのいくつかの実装形態では、指標は、キャッシュディレクトリエントリのビットを含む。一部の実装形態では、指標は、キャッシュディレクトリエントリの状態フィールドの予備状態を含む。一部の実装形態では、指標は、キャッシュディレクトリエントリの状態フィールドに少なくとも1つのビットを含む。一部の実装形態では、指標は、キャッシュディレクトリエントリの共有ベクトルフィールドのビットを含む。一部の実装形態では、コヒーレンシ管理デバイスは、キャッシュディレクトリエントリが無効であり、指標を含む場合に、メインメモリを読み取らずに、要求に応じてゼロデータを返す。いくつかの実装形態では、コヒーレンシ管理デバイスは、コヒーレントスレーブデバイス、プローブフィルタデバイス、及び/又は、スヌープフィルタデバイスを含む。一部の実装形態では、コヒーレンシ管理デバイスは、コヒーレントマスターデバイスから要求を受信する。一部の実装形態では、要求は、非一時的な読み取り動作を含む。
いくつかの実装形態は、コンピュータシステムにおけるキャッシュコヒーレンスを管理するために、コヒーレンシ管理デバイスに実施される方法を提供する。方法は、メインメモリのアドレスに格納されたデータを読み取る要求を受信し、キャッシュディレクトリがアドレスに対応するキャッシュディレクトリエントリを含むかどうかを判定することを含む。また、方法は、キャッシュディレクトリがアドレスに対応するキャッシュディレクトリエントリを含む場合、キャッシュディレクトリエントリが無効であるかどうかを判定することを含む。また、方法は、キャッシュエントリが無効である場合に、メモリアドレスに対応するデータがゼロデータを含むという指標をキャッシュディレクトリエントリが含むかどうかを判定することを含む。キャッシュディレクトリエントリが指標を含む場合、この方法は、要求に応じてゼロデータを返すことも含む。
方法のいくつかの実装形態では、指標は、キャッシュディレクトリエントリのビットを含む。一部の実装形態では、指標には、キャッシュディレクトリエントリの状態フィールドに予備状態を含む。一部の実装形態では、指標は、キャッシュディレクトリエントリの状態フィールドの少なくとも1つのビットを含む。一部の実装形態では、指標は、キャッシュディレクトリエントリの共有ベクトルフィールドのビットを含む。一部の実装形態では、キャッシュディレクトリエントリが無効であり、指標を含む場合に、コヒーレンシ管理デバイスは、要求に対応するシステムにキャッシュエントリを割り当てない。一部の実装形態では、キャッシュディレクトリエントリが無効であり、指標を含む場合に、コヒーレンシ管理デバイスは、メインメモリを読み取ることなく、要求に応じてゼロデータを返す。いくつかの実装形態では、コヒーレンシ管理デバイスは、コヒーレントスレーブデバイス、プローブフィルタデバイス、及び/又は、スヌープフィルタデバイスを含む。一部の実装形態では、コヒーレンシ管理デバイスは、コヒーレントマスターデバイスから要求を受信する。一部の実装形態では、要求は、非一時的な読み取り動作を含む。
いくつかの実装形態は、コヒーレンシ管理デバイスを提供する。コヒーレンシ管理デバイスは、メインメモリのアドレスに格納されているデータを書き込む要求を受信する回路を含む。コヒーレンシ管理デバイスは、データにゼロデータが含まれるかどうかを判定する回路も含む。コヒーレンシ管理デバイスは、キャッシュディレクトリがアドレスに対応するキャッシュディレクトリエントリを含むかどうかを判定する回路も含む。また、コヒーレンシ管理デバイスは、データにゼロデータが含まれており、キャッシュディレクトリがキャッシュディレクトリエントリを含む場合に、キャッシュディレクトリエントリの状態を無効として設定し、キャッシュディレクトリエントリにおいて、メモリアドレスに対応するデータがゼロデータを含むという指標を設定する回路を含む。コヒーレンシ管理デバイスは、キャッシュディレクトリがキャッシュディレクトリエントリを含まない場合に、キャッシュディレクトリエントリを生成し、キャッシュディレクトリエントリの状態を無効に設定し、キャッシュディレクトリエントリにおいて、メモリアドレスに対応するデータがゼロデータを含むという指標を設定する回路も含む。
いくつかの実装形態では、コヒーレンシ管理デバイスによる、データがゼロデータを含むかどうかの判定は、コヒーレンシ管理デバイスによる、データがゼロのみを含むかどうかの判定を含む。いくつかの実装形態では、コヒーレンシ管理デバイスによるデータがゼロデータを含むかどうかの判定は、コヒーレンシ管理デバイスによる、要求が、アドレスへのゼロの書き込みを命令するオペコードを含む命令を含むかどうかを判定することを含む。一部の実装形態では、指標は、キャッシュディレクトリエントリの状態フィールドの少なくとも1つのビットを含む。一部の実装形態では、指標は、キャッシュディレクトリエントリの共有ベクトルフィールドのビットを含む。一部の実装形態では、コヒーレンシ管理デバイスは、データにゼロデータが含まれている場合に、メインメモリに書き込むことなく、要求に応じて指標を設定する。いくつかの実装形態では、コヒーレンシ管理デバイスは、コヒーレントスレーブデバイス、プローブフィルタデバイス、及び/又は、スヌープフィルタデバイスを含む。一部の実装形態では、コヒーレンシ管理デバイスは、コヒーレントマスターデバイスから要求を受信する。一部の実装形態では、要求は、非一時的な書き込み動作を含む。
いくつかの実装形態は、コンピュータシステムにおけるキャッシュコヒーレンスを管理するために、コヒーレンシ管理デバイスによって実施される方法を提供する。方法は、メインメモリのアドレスへデータを書き込む要求を受信し、データにゼロデータが含まれているかどうかを判定し、キャッシュディレクトリがアドレスに対応するキャッシュディレクトリエントリを含むかどうかを判定することを含む。また、方法は、データにゼロデータが含まれており、キャッシュディレクトリがキャッシュディレクトリエントリを含む場合に、キャッシュディレクトリエントリの状態を無効として設定することと、キャッシュディレクトリエントリにおいて、メモリアドレスに対応するデータがゼロデータを含むという指標を設定することと、を含む。方法は、キャッシュディレクトリがキャッシュディレクトリエントリを含まない場合に、キャッシュディレクトリエントリを生成することと、キャッシュディレクトリエントリの状態を無効に設定し、キャッシュディレクトリエントリにおいて、メモリアドレスに対応するデータがゼロデータを含むという指標を設定することと、も含む。
方法のいくつかの実装形態では、コヒーレンシ管理デバイスによる、データがゼロデータを含むかどうかの判定は、コヒーレンシ管理デバイスによる、データがゼロのみを含むかどうかの判定を含む。いくつかの実装形態では、コヒーレンシ管理デバイスによるデータがゼロデータを含むかどうかの判定は、コヒーレンシ管理デバイスによる、要求が、アドレスへのゼロの書き込みを命令するオペコードを含む命令を含むかどうかを判定することを含む。一部の実装形態では、指標は、キャッシュディレクトリエントリの状態フィールドの少なくとも1つのビットを含む。一部の実装形態では、指標は、キャッシュディレクトリエントリの共有ベクトルフィールドのビットを含む。一部の実装形態では、コヒーレンシ管理デバイスは、データがゼロデータを含む場合に、メインメモリに書き込むことなく、要求に応じて指標を設定する。いくつかの実装形態では、コヒーレンシ管理デバイスは、コヒーレントスレーブデバイス、プローブフィルタデバイス、及び/又は、スヌープフィルタデバイスを含む。一部の実装形態では、コヒーレンシ管理デバイスは、コヒーレントマスターデバイスから要求を受信する。一部の実装形態では、要求は、非一時的な書き込み動作を含む。
図1は、本開示の1つ以上の特徴を実装することができる例示的なデバイス100のブロック図である。デバイス100は、例えば、コンピュータ、ゲーミングデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話、又は、タブレットコンピュータを含んでもよい。デバイス100は、プロセッサ102と、メモリ104と、記憶装置106と、1つ以上の入力デバイス108と、1つ以上の出力デバイス110と、を含む。また、デバイス100は、オプションで、入力ドライバ112及び出力ドライバ114を含み得る。デバイス100は、図1に示されていない追加の構成要素を含むことができることを理解されたい。
様々な代替例では、プロセッサ102は、中央処理装置(CPU)、グラフィックスプロセシングユニット(GPU)、同一のダイ上に位置するCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアはCPU又はGPUであってもよい。様々な代替例では、メモリ104は、プロセッサ102と同一のダイに位置し、又は、プロセッサ102とは別に位置する。メモリ104は、揮発性又は不揮発性のメモリ(例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM、キャッシュ)を含む。
記憶装置106は、固定記憶装置又は着脱可能記憶装置(例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク、フラッシュドライブ)を含む。入力デバイス108は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、バイオメトリックススキャナ、又は、ネットワーク接続部(例えば、無線IEEE802信号の送信及び/若しくは受信のための無線ローカルエリアネットワークカード)を含むが、これらに限定されない。出力デバイス110は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上のライト、アンテナ、又は、ネットワーク接続部(例えば、無線IEEE802信号の送信及び/若しくは受信のための無線ローカルエリアネットワークカード)を含むが、これらに限定されない。
入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、プロセッサ102が入力デバイス108から入力を受信することを可能にする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に出力を送信することを可能にする。入力ドライバ112及び出力ドライバ114がオプションの構成要素であることと、入力ドライバ112及び出力ドライバ114が存在しない場合には、デバイス100が同様に動作することと、に留意されたい。出力ドライバ116は、表示デバイス118に結合されたアクセラレーテッド処理デバイス(APD)116を含む。APDは、プロセッサ102から計算コマンド及びグラフィックスレンダリングコマンドを受け入れ、それらの計算コマンド及びグラフィックスレンダリングコマンドを処理し、表示のために表示デバイス118にピクセル出力を供給する。以下にさらに詳細に説明するように、APD116は、単一命令複数データ(SIMD)パラダイムに従って計算を実行する1つ以上の並列処理ユニットを含む。次のように、本明細書では、様々な機能がAPD116によって又はAPD116と協働して実行されるものとして説明しているが、様々な代替形態では、このAPD116によって実行されると説明している機能が、ホストプロセッサ(例えば、プロセッサ102)によって駆動されない、表示デバイス118にグラフィックス出力を供給する同様の性能を有する他のコンピューティングデバイスによって、追加的又は代替的に実行される。例えば、SIMDパラダイムに従って処理タスクを実行する任意の処理システムが、本明細書で説明する機能を実行し得ることが企図されている。代替例として、SIMDパラダイムに従って処理タスクを行わないコンピューティングシステが本明細書で説明する機能を行うことが想到される。
図2は、APD116上の処理タスクの実行に関連するさらなる詳細を説明するデバイス100のブロック図である。プロセッサ102は、システムメモリ104において、プロセッサ102による実行のための1つ以上の制御論理モジュールを維持する。制御論理モジュールは、オペレーティングシステム120と、カーネルモードドライバ122と、アプリケーション126と、を含む。これらの制御論理モジュールは、プロセッサ102及びAPD116の動作の様々な機能を制御する。例えば、オペレーティングシステム120は、ハードウェアと直接的に通信し、プロセッサ102で実行中の他のソフトウェアにハードウェアへのインターフェイスを提供する。カーネルモードドライバ122は、例えば、プロセッサ102上で実行されるソフトウェア(例えば、アプリケーション126)にアプリケーションプログラミングインターフェイス(API)を提供することによってAPD116の動作を制御し、APD116の様々な機能にアクセスする。また、カーネルモードドライバ122は、APD116の処理コンポーネント(以下により詳細に説明するSIMDユニット138等)による実行のためにプログラムをコンパイルするジャストインタイムコンパイラを含む。
APD116は、例えばグラフィックス処理及び非グラフィックス処理等の選択された機能のためのコマンド及びプログラムを実行し、これが並列処理に適する場合がある。APD116は、例えばピクセル動作、幾何学計算等のグラフィックスパイプライン動作を実行するために、及び、プロセッサ102から受け取ったコマンドに基づいて表示デバイス118に画像をレンダリングするために使用できる。また、APD116は、プロセッサ102から受信したコマンドに基づいて、ビデオに関連する動作、物理シミュレーション、計算流体力学又は他のタスク等のように、グラフィックス動作に直接関連しない計算処理動作も実行する。
APD116は、SIMDパラダイムに従って並列に、プロセッサ102の要求に応じて動作を実行する1つ以上のSIMDユニット138を含む計算ユニット132を含む。SIMDパラダイムは、複数の処理要素が単一のプログラム制御フローユニット及びプログラムカウンタを共有し、ひいては、同じプログラムを実行するが、異なるデータでそのプログラムを実行することが可能なパラダイムである。一例では、各SIMDユニット138は16個のレーンを含み、各レーンはSIMDユニット138内の他のレーンと同時に同じ命令を実行するが、異なるデータでその命令を実行することができる。全てのレーンが所定の命令を実行する必要があるとは限らない場合には、予測を使用してレーンをオフにすることができる。予測は、分岐する制御フローを有するプログラムを実行するために使用することもできる。より具体的には、制御フローが個々のレーンによって実行される計算に基づく条件付き分岐又は他の命令を有するプログラムの場合、現在実行されていない制御フローパスに対応するレーンの予測、及び、異なる制御フローパスの直列実行は任意の制御フローを可能にする。
計算ユニット132での実行の基本単位はワークアイテム(work-item)である。各ワークアイテムは、特定のレーンにおいて並列に実行されるプログラムの単一のインスタンス化を表す。ワークアイテムは、単一のSIMD処理ユニット138上で「ウェーブフロント(wavefront)」として同時に実行され得る。1つ以上のウェーブフロントが「ワークグループ」に含まれ、ワークグループは、同一のプログラムを実行するよう指定されたワークアイテムの集合を含む。ワークグループは、ワークグループを構成するウェーブフロントの各々を実行することによって実行できる。代替例では、ウェーブフロントは、単一のSIMDユニット138で直列に、又は、異なるSIMDユニット138上で部分的若しくは完全に並列に実行される。ウェーブフロントは、単一のSIMDユニット138で同時に実行できるワークアイテムの最大の集合体と考えることができる。したがって、プロセッサ102から受信したコマンドが、プログラムが単一のSIMDユニット138上で同時に実行できない程度に特定のプログラムが並列処理されることを示す場合、そのプログラムは、2つ以上のSIMDユニット138上で並列処理されるウェーブフロント、又は、同一のSIMDユニット138上で直列処理される(又は、必要に応じて、並列処理及び直列処理の両方が行われる)ウェーブフロントに分割される。スケジューラ136は、異なる計算ユニット132及びSIMDユニット138上で様々なウェーブフロントをスケジュールすることに関連する動作を実行する。
計算ユニット132によって許容される並列性は、画素値計算、頂点変換及び他のグラフィックス動作等のグラフィックス関連動作に適切である。したがっていくつかの例において、プロセッサ102からグラフィックスプロセッシングコマンドを受け取るグラフィックスパイプライン134は、並列に実行するために計算タスクを計算ユニット132に提供する。
また、計算ユニット132は、グラフィックスに関係しない、又は、グラフィックスパイプライン134の「通常の」動作の一部として実行されない計算タスク(例えば、グラフィックスパイプライン134の動作に対して実行される処理を補足するために実行されるカスタム動作)を実行するために使用される。プロセッサ102上で実行しているアプリケーション126又は他のソフトウェアは、実行のためにAPD116に、そのような計算タスクを定義したプログラムを送信する。
図3は、例示的なコンピューティングシステム300の部分を示すブロック図である。いくつかの例では、コンピューティングシステム300は、図1及び図2に関して示される及び説明されるように、デバイス100の一部又は全部を使用して実装される。コンピューティングシステム300は、1つ以上のコア複合体310A~310Nと、入力/出力(I/O)インターフェイス320と、相互接続330と、メモリコントローラ340と、ネットワークインターフェイス350と、を含む。他の例では、コンピューティングシステム300は、さらなる構成要素や異なる構成要素を含み、及び/又は、異なる方法で構成される。
いくつかの実装形態では、コア複合体310A~310Nの各々は、少なくとも1つの処理デバイスを含む。この例では、コア複合体310A~310Nの少なくとも1つは、CPU等の1つ以上の汎用処理デバイスを含む。「コア複合体」は、いくつかの場合に「処理ノード」とも呼ばれることに留意されたい。いくつかの実装形態では、そのようなプロセッサは、図1に関して示され、説明されるように、プロセッサ102を使用して実装される。この例では、コア複合体310A~310Nの少なくとも1つは、1つ以上のデータ並列プロセッサを含む。データ並列プロセッサの例として、GPU、デジタルシグナルプロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)等が挙げられる。一部の実装形態では、このようなプロセッサは、図1に関して示され、説明されているように、APD116を使用して実装される。
いくつかの実装形態では、コア複合体310A~310N内のプロセッサコアは、1つ以上のレベルのキャッシュを備えたキャッシュサブシステムを含む。いくつかの実装形態では、各コア複合体310A~310Nは、複数のプロセッサコア間で共有されるキャッシュ(例えば、レベル3(L3)のキャッシュ)を含む。
メモリコントローラ340は、例えば、相互接続330を介して、コア複合体310A~310Nによってアクセス可能な少なくとも1つのメモリコントローラを含む。メモリコントローラ340は、任意の適切なタイプのメモリコントローラのうち1つ以上を含む。各メモリコントローラは、任意の数及びタイプのメモリデバイス(図示省略)に結合され(又は他の方法で通信して)、アクセスを制御する。いくつかの実装形態では、そのようなメモリデバイスは、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、NANDフラッシュメモリ、NORフラッシュメモリ、強誘電体ランダムアクセスメモリ(FeRAM)、及び/又は、他の任意の適切なメモリデバイスを含む。相互接続330は、バス、データファブリック等のように、図3に示すデバイス間の通信に適した任意のコンピュータ通信媒体を含む。
I/Oインターフェイス320は、1つ以上のI/Oインターフェイス(例えば、ペリフェラルコンポーネントインターコネクト(PCI)バス、PCIエクステンデッド(PCI-X)、PCIE(PCI Express)バス、ギガビットイーサネット(登録商標)(GBE)バス、ユニバーサルシリアルバス(USB))を含む。いくつかの実装形態では、I/Oインターフェイス320は、図1に関して示され、説明されるように、入力ドライバ112及び/又は出力ドライバ114を使用して実装される。様々なタイプの周辺機器をI/Oインターフェイス320に結合することができる。そのような周辺機器には、ディスプレイ、キーボード、マウス、プリンタ、スキャナ、ジョイスティック又は他のタイプのゲームコントローラ、メディア記録デバイス、外部ストレージデバイス、ネットワークインターフェイスカード等が含まれる(ただし、これらに限定されない)。いくつかの実装形態では、そのような周辺デバイスは、図1に関して示され、説明されるように、入力デバイス108及び/又は出力デバイス118を使用して実装される。
図4は、例示的なマルチプロセッサコンピューティングシステム400の部分を示すブロック図である。システム400は、1つ以上のコア複合体410A~410Nと、コア複合体410A~410Nと相互接続430を介して(例えば、他の構成要素を介して)通信する1つ以上のメモリコントローラ440A~440Nと、を含む。いくつかの例では、コア複合体410A~410Nは、コヒーレントマスター415A~415Nを介して相互接続430に結合され、メモリコントローラ440A~440Nは、コヒーレントスレーブ445A~445Nを介して相互接続430に結合される。相互接続430は、バス、データファブリック等のように、図4に示すデバイス間の通信に適した任意のコンピュータ通信媒体を含む。プロセッサシステム400は、例としてコア複合体に関連して説明されているが、他の実装形態では、処理ノードは、単一のプロセッサ、コア複合体に実装されていないプロセッサコア又は他の適切な処理ノードを含むことに留意されたい。
コア複合体410A~410Nは、それぞれ1つ以上のプロセッサコア412A~412Nを含む。一部の実装形態では、処理デバイスがコア複合体に編成されていないことに留意されたい。場合によっては、そのようなプロセッサは、コア複合体ではなく、そのようなもの(例えば、処理デバイス)と呼ばれる。各コア複合体410A~410Nには、対応するキャッシュサブシステム414A~414Nも含まれている。各キャッシュサブシステム414A~414Nは、任意の適切な数のキャッシュレベルと、コア複合体410A~410Nのキャッシングをサポートするために使用可能な任意の適切なキャッシュ階層構造を含む。
各コア複合体410A~410Nは、対応するコヒーレントマスター415A~415Nと通信する。いくつかの実装形態では、コヒーレントマスターは、相互接続(例えば、相互接続430)を流れるトラフィックを処理し、接続されたCPU又はコア複合体のコヒーレンシを管理するエージェントである。一部の実装形態では、コヒーレンシを管理するために、コヒーレントマスターは、コヒーレンシ関連のメッセージとプローブを受信及び処理し、コヒーレンシ関連の要求とプローブを生成及び送信する。
各コア複合体410A~410Nは、対応するコヒーレントマスター415A~415Nを経て、相互接続430を介して、1つ以上のコヒーレントスレーブ445A~445Nと通信する。コヒーレントスレーブは、メモリコントローラ(例えば、コヒーレントスレーブに接続されたメモリコントローラ)のコヒーレンシを管理するエージェントデバイスである。一部の実装形態では、コヒーレンシを管理するために、コヒーレントスレーブは、対応するメモリコントローラを対象とする要求とプローブを受信して処理する。
コア複合体410Aは、図4の例では、コヒーレントマスター415A及び相互接続430を介してコヒーレントスレーブ445Aと通信する。コヒーレントスレーブ(CS)445Aは、メモリコントローラ(MC)440Aと通信し、メモリデバイス(例えば、メインメモリDRAMデバイス)を制御する。
コヒーレントスレーブ445A~445Nの各々は、各々のキャッシュディレクトリ(CD)450A~450Nと通信する(又はそれを含む)。場合によっては、キャッシュディレクトリは「プローブフィルタ」とも呼ばれる。キャッシュディレクトリ450Aは、例えば、システム400のキャッシュライン(例えば、キャッシュサブシステム414A~414N)にキャッシュされる、メモリコントローラ440Aを介してアクセス可能なメモリアドレス又はメモリの領域のエントリを含む。いくつかの実装形態では、各コア複合体410A~410Nは、対応するコヒーレントマスター415A~415N及び対応するコヒーレントスレーブ445A~445Nを介して、任意の適切な数のメモリコントローラ440A~440Nと通信する。
プローブは、コヒーレンシポイント(例えば、コヒーレントスレーブ)からコンピュータシステム内の1つ以上のキャッシュに渡されるメッセージを含み、キャッシュがデータのブロックのコピーを有するかどうかを示す応答を要求し、いくつかの実装形態では、キャッシュがデータのブロックを配置するキャッシュの状態を示す。いくつかの実装形態では、コヒーレントスレーブが対応するメモリコントローラを対象とするメモリ要求を受信した場合(例えば、コヒーレントスレーブがコヒーレンシを管理するメモリコントローラによって制御されるメモリのアドレス又はアドレスの領域に格納されたデータに対するメモリ要求)、コヒーレントスレーブは、対応するキャッシュディレクトリへのルックアップ(タグベースのルックアップ等)を実行して、要求がキャッシュサブシステムの少なくとも1つのキャッシュラインにキャッシュされたメモリアドレス又は領域を対象にしているかどうかを判定する。
いくつかの実装形態では、キャッシュディレクトリは、領域が複数のキャッシュラインを含むキャッシュ領域を追跡する。追跡される領域のサイズは、実施形態ごとに異なり得る。本明細書では、「領域」を「ページ」と呼ぶこともできることに留意されたい。いくつかのそのような実装形態では、コヒーレントスレーブがキャッシュ要求を受信すると、コヒーレントスレーブは、要求の対象となる領域を判定し、キャッシュディレクトリでこの領域のルックアップを実行する。ルックアップの結果がヒットの場合、コヒーレントスレーブは、ヒットエントリで識別されたCPU(複数可)にプローブを送信する。コヒーレントスレーブによって生成されるプローブのタイプは、ヒットエントリによって指定されたコヒーレンシ状態による。ラインベースのトラッキングを使用して本明細書で説明する例は、領域ベースのトラッキングを使用して実装することもできることに留意されたい。
いくつかの実装形態では、相互接続430は、説明を容易にするために図4に示されていない他の構成要素に接続され、及び/又は、他の構成要素と通信する。例えば、いくつかの実装形態では、相互接続430は、1つ以上のI/Oインターフェイス及び/又は1つ以上のI/Oデバイス(例えば、図3に関して示され、説明されるように、I/Oインターフェイス320及びネットワークインターフェイス350に対応する)への接続を含む。
図5は、図4に関して示され、説明されたキャッシュディレクトリ450Aの例示的な実装形態を示すブロック図である。キャッシュディレクトリ450Aは、制御ユニット500及びアレイ510を含む。アレイ510は、メモリアドレス又は領域の状態を保存するために、任意の適切な数のディレクトリエントリ520を含む。ディレクトリエントリ520の数は、適切なレベルのスラッシュを達成するようにサイズ設定され、したがって、通常、他の目的、例えば本明細書で説明するようなゼロトラッキングのために、日和見的に(すなわち、利用可能である場合)使用可能な(例えば、無効な状態で)、利用可能ないくつかの予備のディレクトリエントリ520が存在する。
いくつかの実装形態では、ディレクトリエントリ520の各々は、状態フィールド550と、共有ベクトルフィールド540と、タグフィールド530と、を含む。いくつかの実装形態では、ディレクトリエントリ520は、他のフィールド、異なるフィールドを含み、及び/又は、別のフィールドに適切な様式で配置される。タグフィールド530は、メモリアドレスのビットのサブセットを指定する複数のアドレスビットを含む。いくつかの実装形態では、タグフィールド530は、メモリアドレスの全てのビットを含む。このような場合、フィールドは、アドレスフィールドと呼ばれ得る。タグフィールド530のビットは、ディレクトリエントリにマップするメモリ位置又はメモリ内のメモリ位置のグループを識別する。この例では、タグフィールド530は、図4に関して示されて説明されている、メモリコントローラ440Aによって制御されるメモリ(例えば、DRAM)のメモリ位置のアドレスビットのサブセットを示す。
共有ベクトル540は、存在する場合には、システム内の何れのキャッシュが、ディレクトリエントリ520にマッピングされるキャッシュラインのコピーを有するかを示す複数のビットを含む。この例では、共有ベクトル540は、存在する場合には、何れのキャッシュサブシステム414A~414Nが、ディレクトリエントリ520に対応するキャッシュラインのキャッシュされたコピーを有するかを示す。状態フィールド550は、ディレクトリエントリ520の状態を指定する1つ以上の状態ビットを含む。いくつかの実装形態では、状態フィールド550は、特定の状態におけるものとしてのその特定のディレクトリエントリ520を表示し得る。様々な状態を示すための適切なビット数が設けられている。例えば、3つの状態が状態フィールド550によって表される場合、いくつかの実装形態では2ビットが使用される。この構成は、状態フィールド550に追加の未使用ビット値を与えることに留意されたい。同様に、6つの状態が状態フィールド550によって表される場合、いくつかの実装形態では3ビットが使用される。この構成は、状態フィールド550に追加の2つの未使用ビット値を与えることに留意されたい。
図6は、書き込み動作中の、本明細書で説明するコヒーレントスレーブ又は他の適切なコヒーレンス管理デバイス等のコヒーレンス管理デバイスによるゼロデータ圧縮のための例示的な方法600を示すフローチャートである。
ステップ610において、コヒーレンス管理デバイスは、メインメモリのアドレスにデータを書き込むための要求を受信し、その要求がゼロデータを書き込むことであるかどうかを判定する。一部の実装形態では、要求は、非一時的な書き込み動作を含む。非一時的な書き込み動作は、キャッシュ構造をバイパスするが、コヒーレンス管理デバイスで監視できる。一部の実装形態では、コヒーレンス管理デバイスは、要求のペイロードに基づいて、要求がゼロデータを書き込むことであるかどうか(例えば、ペイロードに含まれるデータが全てゼロであるかどうか)を判定する。他の実装形態では、例えば、全てのペイロード、又は、所定のパターンを有するペイロード等のように、他の種類のデータを、この方法で圧縮のために検出することができることに留意されたい。一部の実装形態では、コヒーレンス管理デバイスは、要求のオペコードに基づいて、要求がゼロデータを書き込むことかどうか(例えば、オペコードがゼロデータを書き込む特定のタイプの書き込み命令を示しているか)を判定する。
要求がゼロデータ以外のデータを書き込むことであるという条件620において、コヒーレンス管理デバイスは、ステップ630の典型的な動作(例えば、キャッシュディレクトリルックアップ、キャッシュ無効化、及び、メモリへの書き込みを適宜実行する)に基づいて、データの書き込みを処理する。そうではなく、要求がゼロデータを書き込むことである場合、コヒーレンス管理デバイスは、関連するキャッシュディレクトリのエントリがメモリアドレスに対応するエントリを含むかどうかを判定する。一部の実装形態では、コヒーレンス管理デバイスは、メモリアドレス又はメモリアドレスの一部を含むキャッシュディレクトリエントリのタグフィールドとメモリアドレスを比較する(又は、比較を行うキャッシュディレクトリに要求を伝える)ことによって、この判定を行う。
キャッシュディレクトリがアドレスに対応するエントリを含むという条件640において、キャッシュディレクトリエントリの状態は、データのキャッシュされたコピー(例えば、キャッシュサブシステム414A~414Nにおいて)が有効でないことを示すために無効として設定され、ステップ660において、ゼロ指標がキャッシュディレクトリエントリに設定される。いくつかの実装形態では、無効及びゼロデータの両方を示すために、予備状態がキャッシュディレクトリエントリに設定される。キャッシュディレクトリがアドレスに対応するエントリを含まないという条件640において、また、予備、未使用又は無効なエントリがキャッシュディレクトリに利用可能である場合、ステップ650で、キャッシュディレクトリは、ステップ660でキャッシュディレクトリエントリの状態が無効として設定されたキャッシュディレクトリエントリにゼロの指標(表示)を設定する(又は、両方を示すために予備状態を設定する)前に、アドレスに対応するエントリを生成(作成)する。予備、未使用又は無効なエントリがキャッシュディレクトリで使用できない場合、コヒーレンス管理デバイスは、ステップ630において、典型的な動作に基づいてデータの書き込みを処理する(例えば、キャッシュディレクトリルックアップ、キャッシュ無効化、及び、必要に応じてメモリへの書き込みを実行する)。
ステップ660の動作は、任意の適切な順序で実行されるか、又は、同時若しくは並列に実行される。いくつかの実装形態では、ゼロデータの指標は、キャッシュディレクトリエントリ内のビットである。このようにゼロデータの指標に使用されるビットは、「ゼロ検出」又は「ZD」ビットと呼ばれ得る。一部の実装形態では、ZDビットは、キャッシュディレクトリエントリの共有ベクトルの再利用ビットである。例えば、無効なエントリは、キャッシュされたメインメモリのアドレスに対応するデータの有効なコピーを、キャッシュサブシステム414A~414Nの何れも有していないということを暗示する。したがって、共有ベクトルは、何れのキャッシュに有効なコピーが含まれているかを示す必要がなく、ゼロデータを示す等の他の指標のために再利用できる。
一部の実装形態では、ゼロの指標は、キャッシュディレクトリエントリの状態フィールドに設定された予備状態である。例えば、状態フィールドが3つの状態(例えば、キャッシュ、無効、排他的)を表すための2ビットを含む場合、2ビットを、バイナリエンコーディングを使用して4つの状態を表すために使用することができるので、予備状態が存在する。したがって、予備状態を、ゼロ検出又はZD状態として割り当てることができる。このような実装形態では、ZD状態が無効な状態として機能し、メインメモリ内のアドレスに対応するデータがゼロデータであることをも示す。
いくつかの実装形態では、ゼロデータは、メインメモリに書き込まれないか、又は、この時点でメインメモリに書き込まれない。これは、場合によっては、メモリ帯域幅を節約するという利点を有し得る。一部の実装形態では、対応する読み取り動作がキャッシュディレクトリエントリの指標(例えば、ZDビット又はZD状態)に基づいてゼロデータを返すため、対応するキャッシュディレクトリにゼロデータ指標が設定された場合に、データをメインメモリに書き込む必要がない。対応するキャッシュディレクトリエントリにゼロデータの指標が設定された場合にメインメモリにゼロデータを書き込まない一部の実装形態は、キャッシュディレクトリエントリがエビクトされた場合にゼロデータをメインメモリに書き込むロジックを含む。
同様に、いくつかの実装形態では、ゼロデータはキャッシュされない(例えば、キャッシュサブシステム414A~414Nの何れにも割り当てられない)。このような実装形態では、キャッシュエントリが無効に設定されている及び/又はZD状態に設定されているため、ゼロデータは、何れかのキャッシュ又はメインメモリからデータをフェッチする必要無く返されるため、ゼロデータがキャッシュされない。これは、読み取り要求に応じてデータを返す前に、読み取り要求でデータをフェッチするためにキャッシュへのプローブ要求を必要としないことによって、バス帯域幅を節約するという利点を有し得る。
図7は、読み取り動作中のコヒーレントスレーブ又は他の適切なコヒーレンス管理デバイス等のコヒーレンス管理デバイスによるゼロデータ圧縮のための例示的な方法700を示すフローチャートである。
ステップ710において、コヒーレンス管理デバイスは、メインメモリ内のアドレスからデータを読み取る要求を受信し、コヒーレンス管理デバイスは、関連付けられているキャッシュディレクトリのエントリがメモリアドレスに対応するエントリを含むかどうかを判定する。一部の実装形態では、コヒーレンス管理デバイスは、メモリアドレス又はメモリアドレスの一部を含むキャッシュディレクトリエントリのタグフィールドとメモリアドレスを比較する(又は、比較を行うキャッシュディレクトリに要求を伝える)ことで、この判定を行う。一部の実装形態では、要求は、非一時的な読み取り動作を含む。非一時的な読み取り動作は、キャッシュ構造をバイパスするが、コヒーレンス管理デバイスで監視できる。
キャッシュディレクトリがアドレスに対応するエントリを含まないという条件720において、コヒーレンス管理デバイスは、ステップ730において、典型的な動作に基づいてデータの読み取りを処理する(例えば、キャッシュディレクトリルックアップを実行し、キャッシュ又はメインメモリから必要に応じて読み取る)。そうではなく、キャッシュディレクトリがアドレスに対応するエントリを含むという条件720において、コヒーレンス管理デバイスは、エントリが無効であるかどうかを判定する(例えば、無効な状態又はZD状態を示す状態フィールドを有する)。
キャッシュエントリが無効ではないという条件740において、コヒーレンス管理デバイスは、ステップ730において、典型的な動作に基づいてデータの読み取りを処理する。そうではなく、キャッシュエントリが無効であるという条件740において、コヒーレンス管理デバイスは、ディレクトリエントリが、メインメモリ内のアドレスから読み取られたデータがゼロデータを含む(例えば、ZDビット又はZD状態を含む)という指標を含むかどうかを判定する。
キャッシュエントリが、読み取られるデータがゼロデータを含むという指標を含まないという条件750において、コヒーレンス管理デバイスは、ステップ730において、典型的な動作に基づいてデータの読み取りを処理する。そうではなく、キャッシュエントリが、メインメモリ内のアドレスから読み取られたデータがゼロデータを含むという指標を含むという条件750において、コヒーレンス管理デバイスは、データを読み取る要求に応じてゼロデータを返す(ステップ760)。
いくつかの実装形態では、ゼロデータは、メインメモリ又はキャッシュから読み取られず、むしろ、コヒーレンス管理デバイス(例えば、コヒーレントスレーブ)は、キャッシュディレクトリエントリ(例えば、ZDビット又はZD状態)の指標に基づいて、読み取り要求に応じてゼロデータを返す。これは、場合によっては、メモリ帯域幅を節約するという利点を有し得る。
同様に、いくつかの実装形態では、ゼロデータがキャッシュされない(例えば、キャッシュサブシステム414A~414Nの何れにも割り当てられない)。このような実装形態では、キャッシュエントリが無効に設定されている及び/又はZD状態に設定されているため、ゼロデータは、何れかのキャッシュ又はメインメモリからデータをフェッチする必要無しに、コヒーレンシ管理デバイス(コヒーレントスレーブ等)により返されるため、ゼロデータがキャッシュされない。これは、読み取り要求に応じてデータを返す前に、データをフェッチするためにキャッシュへのプローブ要求を必要としないことによって、バス帯域幅を節約するという利点を有し得る。
本明細書の開示に基づいて、多くの変形形態が可能であることを理解されたい。特徴及び要素が特定の組み合わせで上述されたが、各特徴又は要素は、他の特徴及び要素無しに単独で、又は、他の特徴及び要素を有する若しく有しない様々な組み合わせで使用することができる。
図に示す及び/又は本明細書で説明する様々な機能ユニット(限定するものではないが、プロセッサ102、入力ドライバ112、入力デバイス108、出力ドライバ114、出力デバイス110、アクセラレーテッド処理デバイス116、スケジューラ136、グラフィックス処理パイプライン134、計算ユニット132、及び、SIMDユニット138を含む)は、汎用コンピュータ、プロセッサ若しくはプロセッサコアとして、又は、プログラム、ソフトウェア若しくはファームウェアとして実装され、非一時的なコンピュータ可読記憶媒体又は別の媒体に記憶され、汎用コンピュータ、プロセッサ又はプロセッサコアによって実行可能であり得る。提供される方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実施することができる。適切なプロセッサは、例として、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタルシグナルプロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアに関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、他のタイプの集積回路(IC)、及び/又は、状態機械を含む。このようなプロセッサは、ハードウェア記述言語(HDL)命令の結果や、(コンピュータ可読媒体に格納することができる命令のような)ネットリストを含む他の中間のデータを処理した結果を用いて製造プロセスを構成することによって製造することができる。このような処理の結果は、本開示の特徴を実装するプロセッサを製造する半導体製造プロセスにおいて使用されるマスクワークであってもよい。
本明細書に提供される方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア又はファームウェアで実施することができる。非一時的なコンピュータ可読記憶媒体の例は、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバルディスク等の磁気媒体、光磁気媒体、並びに、CD-ROMディスク及びデジタル多用途ディスク(DVD)等の光学媒体を含む。
Claims (25)
- コヒーレンシ管理デバイスであって、
メインメモリのアドレスに格納されたデータを読み取る要求を受信するように構成された回路と、
キャッシュディレクトリが前記アドレスに対応するキャッシュディレクトリエントリを含むかどうかを判定するよう構成された回路と、
前記キャッシュディレクトリが前記アドレスに対応する前記キャッシュディレクトリエントリを含む場合に、前記キャッシュディレクトリエントリが無効であるかどうかを判定するように構成された回路と、
前記キャッシュディレクトリエントリが無効である場合に、前記キャッシュディレクトリエントリが、前記メモリアドレスに対応するデータがゼロデータを含むという指標を含むかどうかを判定するように構成された回路と、
前記キャッシュディレクトリエントリが前記指標を含む場合に、前記要求に応じてゼロデータを返すように構成された回路と、を備える、
コヒーレンシ管理デバイス。 - 前記指標は、前記キャッシュディレクトリエントリのビット、前記キャッシュディレクトリエントリの状態フィールドの予備状態、前記キャッシュディレクトリエントリの状態フィールドのビット、及び/又は、前記キャッシュディレクトリエントリの共有ベクトルフィールドのビットを含む、
請求項1のコヒーレンシ管理デバイス。 - 前記コヒーレンシ管理デバイスは、前記キャッシュディレクトリエントリが無効であり、前記指標を含む場合に、前記メインメモリを読み取ることなく、前記要求に応じて前記ゼロデータを返すように構成されている、
請求項1のコヒーレンシ管理デバイス。 - 前記コヒーレンシ管理デバイスは、コヒーレントスレーブデバイス、プローブフィルタデバイス、及び/又は、スヌープフィルタデバイスを備える、
請求項1のコヒーレンシ管理デバイス。 - 前記コヒーレンシ管理デバイスは、コヒーレントマスターデバイスから前記要求を受信する、
請求項1のコヒーレンシ管理デバイス。 - 前記要求は、非一時的な読み取り動作を含む、
請求項1のコヒーレンシ管理デバイス。 - コンピュータシステムにおいてキャッシュコヒーレンスを管理するための方法であって、
コヒーレンシ管理デバイスが、メインメモリのアドレスに格納されたデータを読み取る要求を受信することと、
前記コヒーレンシ管理デバイスが、キャッシュディレクトリが前記アドレスに対応するキャッシュディレクトリエントリを含むかどうかを判定することと、
前記キャッシュディレクトリが前記アドレスに対応する前記キャッシュディレクトリエントリを含む場合に、前記キャッシュディレクトリエントリが無効であるかどうかを判定することと、
前記キャッシュエントリが無効である場合に、前記キャッシュディレクトリエントリが、前記メモリアドレスに対応するデータがゼロデータを含むという指標を含むかどうかを判定することと、
前記キャッシュディレクトリエントリが前記指標を含む場合に、前記要求に応じてゼロデータを返すことと、を含む、
方法。 - 前記指標は、前記キャッシュディレクトリエントリのビット、前記キャッシュディレクトリエントリの状態フィールドの予備状態、前記キャッシュディレクトリエントリの状態フィールドのビット、及び/又は、前記キャッシュディレクトリエントリの共有ベクトルフィールドのビットを含む、
請求項7の方法。 - 前記コヒーレンシ管理デバイスは、前記キャッシュディレクトリエントリが無効であり、前記指標を含む場合に、前記メインメモリを読み取ることなく、前記要求に応じて前記ゼロデータを返す、
請求項7の方法。 - 前記コヒーレンシ管理デバイスは、コヒーレントマスターデバイスから前記要求を受信する、
請求項7の方法。 - 前記要求は、非一時的な読み取り動作を含む、
請求項7の方法。 - コヒーレンシ管理デバイスであって、
メインメモリのアドレスにデータを書き込む要求を受信するように構成された回路と、
前記データがゼロデータを含むかどうかを判定するように構成された回路と、
キャッシュディレクトリが前記アドレスに対応するキャッシュディレクトリエントリを含むかどうかを判定するように構成された回路と、
前記データがゼロデータを含み、前記キャッシュディレクトリが前記キャッシュディレクトリエントリを含む場合に、前記キャッシュディレクトリエントリの状態を無効に設定し、前記メモリアドレスに対応するデータがゼロデータを含むという指標を前記キャッシュディレクトリエントリに設定するように構成された回路と、
前記キャッシュディレクトリが前記キャッシュディレクトリエントリを含まない場合に、前記キャッシュディレクトリエントリを生成し、前記キャッシュディレクトリエントリの状態を無効に設定し、前記メモリアドレスに対応するデータがゼロデータを含むという指標を前記キャッシュディレクトリエントリに設定するように構成された回路と、を備える、
コヒーレンシ管理デバイス。 - 前記コヒーレンシ管理デバイスが、前記データがゼロデータを含むかどうかを判定することは、前記コヒーレンシ管理デバイスが、前記データがゼロのみを含むかどうかを判定すること、及び/又は、前記コヒーレンシ管理デバイスが、前記アドレスへのゼロの書き込みを命令するオペコードを含む命令を前記要求が含むかどうかを判定することを含む、
請求項12のコヒーレンシ管理デバイス。 - 前記指標は、前記キャッシュディレクトリエントリの状態フィールドの少なくとも1つのビット、前記キャッシュディレクトリエントリの状態フィールドの予備状態、前記キャッシュディレクトリエントリの状態フィールドのビット、及び/又は、前記キャッシュディレクトリエントリの共有ベクトルフィールドのビットを含む、
請求項12のコヒーレンシ管理デバイス。 - 前記コヒーレンシ管理デバイスは、前記データがゼロデータを含む場合に、前記メインメモリに書き込むことなく、前記要求に応じて前記指標を設定するように構成されている、
請求項12のコヒーレンシ管理デバイス。 - 前記コヒーレンシ管理デバイスは、コヒーレントスレーブデバイス、プローブフィルタデバイス、及び/又は、スヌープフィルタデバイスを含む、
請求項12のコヒーレンシ管理デバイス。 - 前記コヒーレンシ管理デバイスは、コヒーレントマスターデバイスから前記要求を受信する、
請求項12のコヒーレンシ管理デバイス。 - 前記要求は、非一時的な書き込み動作を含む、
請求項12のコヒーレンシ管理デバイス。 - コンピュータシステムにおいてキャッシュコヒーレンスを管理するための方法であって、
コヒーレンシ管理デバイスが、メインメモリのアドレスにデータを書き込む要求を受信することと、
前記コヒーレンシ管理デバイスが、前記データがゼロデータを含むかどうかを判定することと、
前記コヒーレンシ管理デバイスが、キャッシュディレクトリが前記アドレスに対応するキャッシュディレクトリエントリを含むかどうかを判定することと、
前記データがゼロデータを含み、前記キャッシュディレクトリが前記キャッシュディレクトリエントリを含む場合に、前記キャッシュディレクトリエントリの状態を無効に設定し、前記メモリアドレスに対応するデータがゼロデータを含むという指標を前記キャッシュディレクトリエントリに設定することと、
前記キャッシュディレクトリが前記キャッシュディレクトリエントリを含まない場合に、前記キャッシュディレクトリエントリを生成し、前記キャッシュディレクトリエントリの状態を無効に設定し、前記メモリアドレスに対応するデータがゼロデータを含むという指標を前記キャッシュディレクトリエントリに設定することと、を含む、
方法。 - 前記コヒーレンシ管理デバイスが、前記データがゼロデータを含むかどうかを判定することは、前記コヒーレンシ管理デバイスが、前記データがゼロのみを含むかどうかを判定すること、及び/又は、前記コヒーレンシ管理デバイスが、前記アドレスへのゼロの書き込みを命令するオペコードを含む命令を前記要求が含むかどうかを判定することを含む、
請求項19の方法。 - 前記指標は、前記キャッシュディレクトリエントリの状態フィールドの少なくとも1つのビット、前記キャッシュディレクトリエントリの状態フィールドの予備状態、前記キャッシュディレクトリエントリの状態フィールドのビット、及び/又は、前記キャッシュディレクトリエントリの共有ベクトルフィールドのビットを含む、
請求項19の方法。 - 前記コヒーレンシ管理デバイスは、前記データがゼロデータを含む場合に、前記メインメモリに書き込むことなく、前記要求に応じて前記指標を設定する、
請求項19の方法。 - 前記コヒーレンシ管理デバイスは、コヒーレントスレーブデバイス、プローブフィルタデバイス、及び/又は、スヌープフィルタデバイスを含む、
請求項19の方法。 - 前記コヒーレンシ管理デバイスは、コヒーレントマスターデバイスから前記要求を受信する、
請求項19の方法。 - 前記要求は、非一時的な書き込み動作を含む、
請求項19の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/723,780 US20210191865A1 (en) | 2019-12-20 | 2019-12-20 | Zero value memory compression |
US16/723,780 | 2019-12-20 | ||
PCT/US2020/061360 WO2021126461A1 (en) | 2019-12-20 | 2020-11-19 | Zero value memory compression |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023507292A true JP2023507292A (ja) | 2023-02-22 |
Family
ID=76438464
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022535063A Pending JP2023507292A (ja) | 2019-12-20 | 2020-11-19 | ゼロ値メモリ圧縮 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20210191865A1 (ja) |
EP (1) | EP4078383A4 (ja) |
JP (1) | JP2023507292A (ja) |
KR (1) | KR20220113505A (ja) |
CN (1) | CN114846452A (ja) |
WO (1) | WO2021126461A1 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230099256A1 (en) * | 2021-09-29 | 2023-03-30 | Advanced Micro Devices, Inc. | Storing an indication of a specific data pattern in spare directory entries |
US20230195632A1 (en) * | 2021-12-20 | 2023-06-22 | Advanced Micro Devices, Inc. | Probe filter directory management |
US11934310B2 (en) * | 2022-01-21 | 2024-03-19 | Centaur Technology, Inc. | Zero bits in L3 tags |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6973543B1 (en) * | 2001-07-12 | 2005-12-06 | Advanced Micro Devices, Inc. | Partial directory cache for reducing probe traffic in multiprocessor systems |
US7366847B2 (en) * | 2006-02-06 | 2008-04-29 | Azul Systems, Inc. | Distributed cache coherence at scalable requestor filter pipes that accumulate invalidation acknowledgements from other requestor filter pipes using ordering messages from central snoop tag |
WO2010052799A1 (ja) * | 2008-11-10 | 2010-05-14 | 富士通株式会社 | 情報処理装置及びメモリ制御装置 |
US8874855B2 (en) * | 2009-12-28 | 2014-10-28 | Empire Technology Development Llc | Directory-based coherence caching |
US9418016B2 (en) * | 2010-12-21 | 2016-08-16 | Intel Corporation | Method and apparatus for optimizing the usage of cache memories |
WO2014018038A1 (en) * | 2012-07-26 | 2014-01-30 | Empire Technology Development Llc | Energy conservation in a multicore chip |
KR101638064B1 (ko) * | 2013-02-11 | 2016-07-08 | 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 | 캐시 제거 통지를 디렉토리로 수집 |
US9563251B2 (en) * | 2013-12-28 | 2017-02-07 | Intel Corporation | Representing a cache line bit pattern via meta signaling |
JP2016048502A (ja) * | 2014-08-28 | 2016-04-07 | 富士通株式会社 | 情報処理装置及びメモリアクセス処理方法 |
US9934146B2 (en) * | 2014-09-26 | 2018-04-03 | Intel Corporation | Hardware apparatuses and methods to control cache line coherency |
US9684603B2 (en) * | 2015-01-22 | 2017-06-20 | Empire Technology Development Llc | Memory initialization using cache state |
US20180004659A1 (en) * | 2016-07-01 | 2018-01-04 | Intel Corporation | Cribbing cache implementing highly compressible data indication |
US10282296B2 (en) * | 2016-12-12 | 2019-05-07 | Intel Corporation | Zeroing a cache line |
KR102157354B1 (ko) * | 2017-11-20 | 2020-09-17 | 삼성전자 주식회사 | 효율적으로 압축된 캐시 라인의 저장 및 처리를 위한 시스템 및 방법 |
US10956070B2 (en) * | 2018-12-11 | 2021-03-23 | International Business Machines Corporation | Zeroing a memory block without processor caching |
-
2019
- 2019-12-20 US US16/723,780 patent/US20210191865A1/en active Pending
-
2020
- 2020-11-19 WO PCT/US2020/061360 patent/WO2021126461A1/en unknown
- 2020-11-19 JP JP2022535063A patent/JP2023507292A/ja active Pending
- 2020-11-19 CN CN202080088610.5A patent/CN114846452A/zh active Pending
- 2020-11-19 EP EP20904192.0A patent/EP4078383A4/en active Pending
- 2020-11-19 KR KR1020227024154A patent/KR20220113505A/ko active Search and Examination
Also Published As
Publication number | Publication date |
---|---|
EP4078383A4 (en) | 2024-01-17 |
CN114846452A (zh) | 2022-08-02 |
WO2021126461A1 (en) | 2021-06-24 |
EP4078383A1 (en) | 2022-10-26 |
US20210191865A1 (en) | 2021-06-24 |
KR20220113505A (ko) | 2022-08-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6707605B2 (ja) | 異なるキャッシュ・コヒーレンス・ドメインの間の情報共有技法 | |
US11030126B2 (en) | Techniques for managing access to hardware accelerator memory | |
US9971700B2 (en) | Cache with address space mapping to slice subsets | |
JP2023507292A (ja) | ゼロ値メモリ圧縮 | |
US10467138B2 (en) | Caching policies for processing units on multiple sockets | |
US20070038814A1 (en) | Systems and methods for selectively inclusive cache | |
US11526449B2 (en) | Limited propagation of unnecessary memory updates | |
US11226819B2 (en) | Selective prefetching in multithreaded processing units | |
US20220197506A1 (en) | Data placement with packet metadata | |
US10387314B2 (en) | Reducing cache coherence directory bandwidth by aggregating victimization requests | |
JP2018163571A (ja) | プロセッサ | |
US11561906B2 (en) | Rinsing cache lines from a common memory page to memory | |
US20140281234A1 (en) | Serving memory requests in cache coherent heterogeneous systems | |
US20230101038A1 (en) | Deterministic mixed latency cache | |
US11210248B2 (en) | System direct memory access engine offload | |
US20230205609A1 (en) | Scatter-gather atomic optimization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20231113 |