JP2019517687A - メモリにおける処理のためのキャッシュコヒーレンス - Google Patents

メモリにおける処理のためのキャッシュコヒーレンス Download PDF

Info

Publication number
JP2019517687A
JP2019517687A JP2018555617A JP2018555617A JP2019517687A JP 2019517687 A JP2019517687 A JP 2019517687A JP 2018555617 A JP2018555617 A JP 2018555617A JP 2018555617 A JP2018555617 A JP 2018555617A JP 2019517687 A JP2019517687 A JP 2019517687A
Authority
JP
Japan
Prior art keywords
memory
processor
cache
coherence
host
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
JP2018555617A
Other languages
English (en)
Other versions
JPWO2017209883A5 (ja
JP7160682B2 (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 JP2019517687A publication Critical patent/JP2019517687A/ja
Publication of JPWO2017209883A5 publication Critical patent/JPWO2017209883A5/ja
Application granted granted Critical
Publication of JP7160682B2 publication Critical patent/JP7160682B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/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/0817Cache consistency protocols using directory methods
    • 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/0817Cache consistency protocols using directory methods
    • G06F12/0822Copy directories
    • 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/1004Compatibility, e.g. with legacy hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc

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

キャッシュコヒーレンスブリッジプロトコルは、ホストプロセッサのキャッシュコヒーレンスプロトコルと、プロセッサインメモリのキャッシュコヒーレンスプロトコルとの間のインタフェースを提供し、これにより、ホストプロセッサ及びプロセッサインメモリのコヒーレンスメカニズムを分離する。キャッシュコヒーレンスブリッジプロトコルは、ホストプロセッサと、異なるベンダによって設計されたプロセッサインメモリデバイスとの間の相互運用性を容易にするために使用され、ホストプロセッサ及びプロセッサインメモリデバイスの両方は、各プロセッサ内のコンピューティングユニット間のコヒーレンス技術を実施してもよい。キャッシュコヒーレンスブリッジプロトコルは、ホストプロセッサ及び/又はプロセッサインメモリのキャッシュコヒーレンスプロトコルによって使用される粒度とは異なるキャッシュコヒーレンス許可の粒度をサポートしてもよい。【選択図】図3

Description

本発明は、処理システムに関し、より詳細には、処理システムにおけるキャッシュコヒーレンスに関する。
一般に、プロセッサインメモリ(すなわち、プロセッシングインメモリ又はニアメモリ処理)技術は、処理要素をメモリ(例えば、ランダムアクセスメモリ)に組み込むことによって、データ集約型アプリケーションのエネルギー効率及び性能を向上させる。異種システムアーキテクチャフレームワーク内にプロセッシングインメモリを組み込み、従来のプログラミングモデルをこれらのシステムプロセッサに拡張するには、キャッシュコヒーレンスが必要となる。高度なプロセッサインメモリ設計では、独自のキャッシュ階層を有する複雑な処理エンジンが組み込まれている。しかしながら、システムは、適切な動作のために、これらのキャッシュとホストプロセッサ(すなわち、メインプロセッサ)のキャッシュとの間のコヒーレンスを維持すべきである。シンプルでキャッシュレスなプロセッサインメモリの設計であっても、ホストキャッシュと、プロセッサインメモリで処理されるデータとの間のコヒーレンスを確保する必要がある。
プロセッサインメモリを含むシステムにおいてデータコヒーレンスを提供するための従来技術では、ハードウェアサポートを含まない場合があり、ホストとプロセッサインメモリとの間のキャッシュコヒーレンスを調整するソフトウェアを必要とすることがある。このようなソリューションは、複雑なプログラミングが必要になる。他の技術では、既存のキャッシュコヒーレンスソリューションを拡張して、任意のプロセッサインメモリ設計を含む。システム内の全てのプロセッサ間の統合を必要とする従来のキャッシュコヒーレンスソリューションをプロセッサインメモリに拡張することは、実用的でない場合がある。これは、このソリューションが、システムがどのくらい多くのメモリデバイス(すなわち、プロセッサインメモリデバイス)を含むかを知るためのホスト上のキャッシュコヒーレンス実装を必要とし、システム設計を、設計の相互運用性及びスケーラビリティを制限する特定のバージョン又はタイプのホストプロセッサに制限するためである。また、キャッシュコヒーレンスプロトコル設計は複雑であるため、かかる設計は、確認及び実証が難しく、結果として、既存の実績のあるホストキャッシュコヒーレンスプロトコルに対する望ましくない変更が生じる。既存のコヒーレンスプロトコルの変更を必要としない他の提案されたプロセッサインメモリキャッシュコヒーレンススキームでは、例えばリード共有(すなわち、ホスト及びプロセッサインメモリの両方におけるリードオンリーデータのキャッシュ)等の一般的に使用されるシナリオが許可されていない。
プロセッサインメモリアーキテクチャに対する他のキャッシュコヒーレンス策は、プロセッサインメモリデバイスのキャッシュを考慮せず、プロセッサインメモリデバイスがデータを変更する際にホストキャッシュがコヒーレントであることを確保するように、ホスト側のキャッシュコヒーレンス技術を拡張することに依存する。このような技術では、プロセッサインメモリデバイスが、ホストと一致するキャッシュラインサイズ及びプロトコルを使用することを必要とする。さらに、これらの策は、メモリ(例えば、ダイナミックランダムアクセスメモリ(DRAM))内の各キャッシュラインと共に、1つ以上の専用のキャッシュコヒーレンス状態ビットの記憶を必要とし得るが、専門のメモリモジュールを必要とし、容易に利用可能なメモリコンポーネントが使用できなくなる場合がある。したがって、プロセッサインメモリデバイスを組み込んだシステムのキャッシュコヒーレンスを実現するための改良された技術が望まれている。
本発明の少なくとも1つの実施形態では、システムは、プロセッサインメモリを含む。プロセッサインメモリは、プロセッサインメモリのメモリに存在するデータブロックのブリッジコヒーレンス状態を記憶するように構成されたシャドウディレクトリストレージを含む。ブリッジコヒーレンス状態は、プロセッサインメモリの外部に記憶されたデータブロックの任意のコピーの状態を示している。プロセッサインメモリは、プロセッサインメモリの第1キャッシュコヒーレンスプロトコルと、ホストプロセッサの第2キャッシュコヒーレンスプロトコルとの間でコヒーレンスメッセージを変換するように構成されたブリッジプロトコル変換ロジックを含む。第2キャッシュコヒーレンスプロトコルは、第1キャッシュコヒーレンスプロトコルと異なっている。プロセッサインメモリは、コヒーレンスメッセージ及びシャドウディレクトリストレージの内容を用いて、プロセッサインメモリのメモリのデータコヒーレンスを維持するように構成されたブリッジプロトコル制御ロジックを含む。プロセッサインメモリは、集積回路ダイのスタックを含んでもよい。プロセッサインメモリのメモリは、集積回路ダイのスタックのうち複数のメモリ集積回路ダイに含まれてもよい。ブリッジプロトコル制御ロジック及びブリッジプロトコル変換ロジックは、集積回路ダイのスタックのうちロジック集積回路ダイに含まれてもよい。第2キャッシュコヒーレンスプロトコルは、第1キャッシュコヒーレンスプロトコルのブロックサイズとは異なるブロックサイズを使用してもよい。プロセッサインメモリは、対応するプロセッサの少なくとも1つのキャッシュを含んでもよい。少なくとも1つのキャッシュは、プロセッサインメモリのコヒーレンスドメイン内にあってもよい。少なくとも1つのキャッシュは、ライトスルーキャッシュであってもよく、データブロックのブリッジコヒーレンス状態は、no−host−copy状態、host−read状態及びhost−written状態のうち何れか1つであってもよい。少なくとも1つのキャッシュは、ライトバックキャッシュであってもよく、データブロックのブリッジコヒーレンス状態は、no−host−copy状態、host−read状態、host−written状態及びprocessor−in−memory−modified状態のうち何れか1つであってもよい。プロセッサインメモリは、プロセッサインメモリのコヒーレンスドメインの外部にあるメモリサイドキャッシュを含んでもよい。ブリッジプロトコル制御ロジックは、データブロックへのメモリアクセスに応じて、メモリサイドキャッシュに記憶されたデータブロックの任意のコピーの状態をチェックするように構成されてもよい。プロセッサインメモリは、対応するプロセッサの少なくとも1つのキャッシュ内に記憶されたデータブロックのプロセッサインメモリコヒーレンス状態を記憶するように構成されたプロセッサインメモリディレクトリを含んでもよい。プロセッサインメモリは、プロセッサインメモリディレクトリの内容を用いて、少なくとも1つのキャッシュに記憶されたデータブロックのデータコヒーレンスを維持するように構成されたプロセッサインメモリ内コヒーレンスコントローラを含んでもよい。システムは、プロセッサインメモリに接続されたホストプロセッサを含んでもよい。ホストプロセッサは、プロセッサインメモリの第1キャッシュコヒーレンスプロトコルと、ホストプロセッサの第2キャッシュコヒーレンスプロトコルとの間でコヒーレンスメッセージを変換するように構成されたホストブリッジ変換ロジックを含んでもよい。ホストプロセッサは、ホストのコヒーレンスドメインの外側であって、プロセッサインメモリのコヒーレンスドメインの外側にあるメモリサイドキャッシュをさらに含んでもよい。シャドウディレクトリストレージは、メモリサイドキャッシュに記憶されたデータブロックの任意のコピーの状態を保存してもよい。ホストプロセッサは、ホストコピーデータブロックのホストコヒーレンス状態を記憶するように構成されたホストディレクトリであって、ホストプロセッサ内に記憶されたホストディレクトリと、ホストディレクトリを用いて、ホストプロセッサに存在するホストコピーデータブロックのデータコヒーレンスを維持するように構成されたホスト内コヒーレンス制御ロジックと、をさらに含んでもよい。
本発明の少なくとも1つの実施形態では、方法は、プロセッサインメモリのメモリに存在するデータブロックのブリッジコヒーレンス状態をシャドウディレクトリに記憶するステップを含む。ブリッジコヒーレンス状態は、プロセッサインメモリの外部に記憶されたデータブロックの任意のコピーの状態を示している。方法は、プロセッサインメモリの第1キャッシュコヒーレンスプロトコルと、ホストプロセッサの第2キャッシュコヒーレンスプロトコルとの間でコヒーレンスメッセージを変換するステップを含む。第2キャッシュコヒーレンスプロトコルは、第1キャッシュコヒーレンスプロトコルと異なっている。方法は、コヒーレンスメッセージ及びシャドウディレクトリストレージの内容を用いて、プロセッサインメモリのメモリのデータコヒーレンスを維持するステップを含む。第2キャッシュコヒーレンスプロトコルは、第1キャッシュコヒーレンスプロトコルのブロックサイズとは異なるブロックサイズを使用してもよい。プロセッサインメモリのメモリのデータコヒーレンスを維持するステップは、データブロックへのアクセスに応じて、データブロックのブリッジコヒーレンス状態を更新するステップを含んでもよい。プロセッサインメモリのメモリのデータコヒーレンスを維持するステップは、プロセッサインメモリのプロセッサの少なくとも1つのキャッシュと、プロセッサインメモリのメモリとのコヒーレンスを維持するステップを含んでもよい。少なくとも1つのキャッシュは、プロセッサインメモリのコヒーレンスドメイン内に存在してもよい。方法は、プロセッサインメモリのメモリのアクセスに応じて、プロセッサインメモリのメモリサイドキャッシュをチェックするステップを含んでもよい。方法は、プロセッサインメモリのコヒーレンスドメインのキャッシュからプロセッサインメモリのメモリサイドキャッシュにライトスルーキャッシュポリシーを実施するステップを含んでもよい。シャドウディレクトリのデータブロックのブリッジコヒーレンス状態は、no−host−copy状態、host−read状態及びhost−written状態のうち何れか1つであってもよい。方法は、プロセッサインメモリのコヒーレンスドメインのキャッシュからプロセッサインメモリのメモリサイドキャッシュにライトバックキャッシュポリシーを実施するステップを含んでもよい。シャドウディレクトリのデータブロックのブリッジコヒーレンス状態は、no−host−copy状態、host−read状態、host−written状態及びprocessor−in−memory−modified状態のうち何れか1つであってもよい。プロセッサインメモリのメモリのデータコヒーレンスを維持するステップは、データブロックへのメモリアクセスに応じてコヒーレンスメッセージを生成するステップを含んでもよい。方法は、対応するプロセッサの少なくとも1つのキャッシュ内に記憶されたデータブロックのプロセッサインメモリコヒーレンス状態を記憶するステップを含んでもよい。方法は、プロセッサインメモリディレクトリの内容を用いて、少なくとも1つのキャッシュに存在するデータブロックのデータコヒーレンスを維持するステップを含んでもよい。方法は、ホストプロセッサ内に記憶されたホストコヒーレンス状態であって、ホストコピーデータブロックのホストコヒーレンス状態を記憶するステップを含んでもよい。方法は、ホストディレクトリを用いて、ホストプロセッサに存在するホストコピーデータブロックのデータコヒーレンスを維持するステップを含んでもよい。
本発明の少なくとも1つの実施形態では、装置はホストプロセッサを含む。ホストプロセッサは、プロセッサインメモリの第1キャッシュコヒーレンスプロトコルと、ホストプロセッサの第2キャッシュコヒーレンスプロトコルとの間でコヒーレンスメッセージを変換するように構成されたホストブリッジ変換ロジックを含む。第2キャッシュコヒーレンスプロトコルは、第1キャッシュコヒーレンスプロトコルと異なっている。ホストプロセッサは、プロセッサインメモリに存在するデータブロックのホストコヒーレンス状態であって、ホストプロセッサ内に記憶されたホストコヒーレンス状態であって、ホストコピーに対応するホストコヒーレンス状態を記憶するように構成されたホストディレクトリを含んでもよい。ホストプロセッサは、ホストディレクトリを用いて、ホストプロセッサに存在するデータブロックのデータコヒーレンスを維持するように構成されたホスト内コヒーレンス制御ロジックを含んでもよい。第2キャッシュコヒーレンスプロトコルは、第1キャッシュコヒーレンスプロトコルのブロックサイズとは異なるブロックサイズを使用してもよい。
本発明は、添付の図面を参照することによってより良く理解され、その多くの目的、特徴及び利点が当業者には明らかであろう。
プロセッサインメモリデバイスを含む例示的な処理システムの機能ブロック図である。 例示的なプロセッサインメモリの機能ブロック図である。 本発明の少なくとも1つの実施形態と一致する、ホストプロセッサとプロセッサインメモリとの間の例示的なキャッシュコヒーレントリンクの機能ブロック図である。 本発明の少なくとも1つの実施形態と一致する、複数のホストと様々なプロセッサインメモリデバイスとの間の例示的なキャッシュコヒーレントリンクの機能ブロック図である。 例示的なプロセッサインメモリキャッシュ構成を含む例示的なプロセッサインメモリの機能ブロック図である。 本発明の少なくとも1つの実施形態と一致する、ホストプロセッサと、第1キャッシュプロトコルを有するプロセッサインメモリとの間の例示的なキャッシュコヒーレンスブリッジプロトコルの状態図である。 本発明の少なくとも1つの実施形態と一致する、ホストプロセッサと、第2キャッシュプロトコルを有するプロセッサインメモリとの間の例示的なキャッシュコヒーレンスブリッジプロトコルの状態図である。
異なる図面における同じ参照記号の使用は、類似又は同一の項目を示している。
キャッシュコヒーレンスブリッジプロトコルは、ホストプロセッサのキャッシュコヒーレンスプロトコルと、プロセッサインメモリのキャッシュコヒーレンスプロトコルとの間のインタフェースを提供することによって、ホストプロセッサ及びプロセッサインメモリのコヒーレンスメカニズムを分離する。キャッシュコヒーレンスブリッジプロトコルでは、既存のホストプロセッサキャッシュコヒーレンスプロトコルに対する変更を制限する必要がある。キャッシュコヒーレンスブリッジプロトコルは、ホストプロセッサと、異なるベンダによって設計されたプロセッサインメモリデバイスとの間の相互運用性を容易にするために使用され、ホストプロセッサ及びプロセッサインメモリデバイスの両方は、各プロセッサ内のコンピューティングユニット間のコヒーレンス技術を実施してもよい。キャッシュコヒーレンスブリッジプロトコルは、ホストプロセッサ及び/又はプロセッサインメモリのキャッシュコヒーレンスプロトコルによって使用される粒度とは異なるキャッシュコヒーレンス許可の粒度をサポートしてもよい。キャッシュコヒーレンスブリッジプロトコルは、データを含むプロセッサインメモリの外部のシステムにキャッシュされた当該データのコピーの集約ビューを示す状態情報を維持するシャドウディレクトリを使用している。対照的に、従来のコヒーレンスプロトコルは、プロセッサ内のデータのローカルコピーの状態を追跡する。
プロセッサインメモリは、1つ以上のメモリダイ内の処理ロジックとして、又は、1つ以上のメモリダイと共にスタックされた別個のロジックダイとして実装されてもよい。図1を参照すると、システム100は、ホスト110と、インターポーザ112上の4つのプロセッサインメモリデバイスと、を含む。プロセッサインメモリ102は、処理ロジック104を含み、処理ロジック104は、複数のメモリダイ106と共にスタックされた別個のダイに含まれてもよい。処理ロジック104は、少なくとも1つの加速処理ユニット(すなわち、中央処理ユニット及びグラフィックス処理ユニットを含む高度処理ユニット)、中央処理ユニット、グラフィックス処理ユニット、又は、他のプロセッサを含むことができ、コプロセッサ又は固定機能処理(fixed-function processing)ハードウェアを含んでもよい。
図2は、例示的な処理ロジック104を示す図である。処理ロジック104は、グラフィックス処理ユニット(例えば、コンピューティングユニットクラスタ206)を含む高度処理ユニットを含み、グラフィックス処理ユニットは、複数のグラフィックス処理ユニットコンピューティングユニット214を含む。高度処理ユニットは、複数の中央処理ユニットコア216を含む中央処理ユニットクラスタ208を含んでもよい。高度処理ユニットは、複数のハードウェアアクセラレータ218を含む固定機能ハードウェア210を含んでもよい。各プロセッサインメモリ102内のコンポーネント(例えば、処理ロジック104の各グラフィックス処理ユニットコンピューティングユニット214及び各中央処理ユニットコア216)は、コンポーネント間のハードウェアキャッシュコヒーレンスを実施してもよい。
図1に戻ると、ホスト110は、複数の処理コアを含むことができ、これらの処理コア間でハードウェアキャッシュコヒーレンスを実施してもよい。ホスト110は、マルチソケット実装インタフェース(例えば、コヒーレントHyperTransport)を介して、複数のホストデバイス間のキャッシュコヒーレンスをサポートしてもよい。従来のキャッシュコヒーレンスポリシーの何れかを拡張してプロセッサインメモリを含むことは、ホスト及びプロセッサインメモリが同じキャッシュコヒーレンスプロトコルを実装することを必要とする。この要件は、異なるベンダが異なる既存のコヒーレンスプロトコルを有しているため、ホストと、異なるベンダからのプロセッサインメモリ設計との間の相互運用性を妨げることにより、プロセッサインメモリ設計のビジネスチャンスを制限する。さらに、それぞれプロセッサインメモリを含み得る多数のメモリを有する高性能システムをサポートするためには、ホスト及びプロセッサインメモリのキャッシュコヒーレンスプロトコルを、コヒーレントノードの可変数(すなわち、プロセッサインメモリデバイスの無いシステムより大きい数であって、従来のシステムより大きい数)にスケーラブルであるように、従来技術のコヒーレンス状態を追跡するオーバーヘッドを大きく増加させる。
キャッシュコヒーレンスブリッジプロトコルは、既存のキャッシュコヒーレンスプロトコル(例えば、ホストキャッシュコヒーレンスプロトコル及びプロセッサインメモリキャッシュコヒーレンスプロトコル)間のインタフェースを提供する。キャッシュコヒーレンスブリッジプロトコルは、任意の数のプロセッサインメモリデバイスのシステム内の任意の特定のキャッシュラインに対して単一の潜在的な共有デバイスを追加することを含むホスト側サポートを使用しており、結果として、オーバーヘッドがごく僅かしか増加せず、システム内のプロセッサインメモリデバイスの数に関係なく、必要とされる追加状態が制限される。キャッシュコヒーレンスブリッジプロトコルは、単一の追加の潜在的な共有部(sharer)によって、ホスト側の全てのコンポーネントのプロセッサインメモリ側表現を含み、結果として、プロセッサインメモリのオーバーヘッドがごく僅かしか増加しないだけでなく、システム内のホストの性質及び数に関係なく、必要とされる追加状態の数を制限する。
キャッシュコヒーレンスブリッジプロトコルは、ブリッジ変換ユニットと、プロセッサインメモリに実装されたブリッジプロトコルコントローラと、を含む。キャッシュコヒーレンスブリッジプロトコルは、プロセッサインメモリに記憶されたシャドウディレクトリを含む。シャドウディレクトリは、キャッシュコヒーレンスを追跡する状態情報を外部の視点(すなわち、プロセッサインメモリ上のキャッシュされたコピーの状態を追跡する代わりに)で記憶する。シャドウディレクトリは、データ要素が存在するプロセッサインメモリの外部にキャッシュされた当該データ要素の全てのコピーの集約ビューを追跡するブリッジコヒーレンス状態を記憶する。シャドウディレクトリは、ホストディレクトリに含まれ得る情報のサブセットを、プロセッサインメモリの視点から記憶する。少なくとも1つの実施形態では、キャッシュコヒーレンスブリッジプロトコルは、従来のキャッシュコヒーレンスプロトコルによって既に生成されたキャッシュコヒーレンスメッセージのサブセットを使用することによって、ホスト上及びプロセッサインメモリ内に実装される可能性のある、以前に開発され検証されたキャッシュコヒーレンスプロトコルに適合するための変更を制限する。
図3を参照すると、キャッシュコヒーレンスブリッジプロトコルの少なくとも1つの実施形態では、ホスト内コヒーレンスコントローラ302は、プロセッサインメモリ102がホストコヒーレンスプロトコルにおける単なる別のノードであるかのように、プロセッサインメモリ102に対するキャッシュコヒーレンスメッセージを生成する。ブリッジ変換ユニット304は、これらのキャッシュコヒーレンスメッセージを、ブリッジプロトコルコヒーレンスメッセージに変換してもよい。プロセッサインメモリ102において、ブリッジ変換ユニット316は、受信したキャッシュコヒーレンスメッセージを、ホストコヒーレンスプロトコル又は中間ブリッジコヒーレンスプロトコルから、ブリッジプロトコル制御ロジック322が使用可能な形式に変換してもよい。反対方向では、ブリッジプロトコル制御ロジック322は、シャドウディレクトリ324の内容に基づいて、ホストのホストコヒーレンスプロトコル又は中間ブリッジコヒーレンスプロトコルに一致したキャッシュコヒーレンスメッセージを生成し、プロセッサインメモリ内コヒーレンスコントローラ320からのメッセージは、ディレクトリ326の内容、及び/又は、プロセッサインメモリ102によって受信若しくは生成されたメモリ要求に基づいてもよい。
ブリッジ変換ユニット316は、ブリッジプロトコル制御ロジック322から受信したキャッシュコヒーレンスメッセージを、ブリッジプロトコルメッセージ又はホストコヒーレンスコントローラプロトコルメッセージに変換する。ホスト110のブリッジ変換ユニット304は、キャッシュコヒーレンスメッセージを、ブリッジプロトコルからホストプロトコルに変換してもよい。個別のロジックとして示されているが、ブリッジ変換ユニット304は、メモリインタフェースコントローラ308と一体となっている部分として実装されてもよく、ブリッジ変換ユニット316は、メモリインタフェースコントローラ314と一体となっている部分として実装されてもよい。キャッシュコヒーレンスブリッジプロトコルの少なくとも1つの実施形態では、中間キャッシュコヒーレンスメッセージが使用されず、ブリッジ変換ユニット304,316は、システムのリセット時又は他のユーザの構成に応じて構成され得る所定のプロトコルフォーマットに基づいて、キャッシュコヒーレンスメッセージを、プロセッサインメモリキャッシュコヒーレンスプロトコルメッセージ又はホストキャッシュコヒーレンスプロトコルメッセージに直接変換する。
ブリッジプロトコル制御ロジック322は、プロセッサインメモリ内コヒーレンスメッセージを監視し、場合によっては、プロセッサインメモリ102の1つ以上のメモリチャネルの、ホスト110によるメモリアクセス(例えば、キャッシュミス)に介入する。ブリッジプロトコル制御ロジック322は、プロセッサインメモリ102上に実装されるので、ブリッジプロトコル制御ロジック322は、追加のオフデバイストラフィックを生成することなく、プロセッサインメモリ102のメモリチャネル内で発生する全てのアクセス(プロセッサインメモリ102内で生成されるアクセス、及び、ホスト110又は他のデバイスによって外部で生成されるアクセス)を可視化する。ブリッジプロトコル制御ロジック322の機能を以下にさらに説明する。
図4を参照すると、キャッシュコヒーレンスブリッジプロトコルを含む例示的なシステムは、複数のプロセッサインメモリデバイスと、ホスト間コヒーレントリンク411によって接続されたホスト410,412と、を含む。プロセッサインメモリ402,406の各々は、キャッシュコヒーレントブリッジプロトコルリンク403及びキャッシュコヒーレントブリッジプロトコルリンク405によって、ホスト410に接続されている。プロセッサインメモリ404,408の各々は、キャッシュコヒーレントブリッジプロトコルリンク407及びキャッシュコヒーレントブリッジプロトコルリンク409によって、ホスト412に接続されている。本明細書で言及するように、特定のメモリアドレスに関して、ホームプロセッサインメモリは、特定のアドレスのデータを記憶するプロセッサインメモリである。本明細書で言及するように、ホームノードは、特定のアドレスについてメモリ内のホームプロセッサインメモリに接続されたホストである。ホストコヒーレンスプロトコルディレクトリは、コヒーレンスディレクトリ目的のホームノードが、データのインメモリコピーを保持するプロセッサインメモリに接続されたノードであるように分散されてもよい。本明細書で言及するように、データブロックは、ホストとプロセッサインメモリとの間のコヒーレンス追跡の粒度である。データブロックは、ホスト内及びホスト間のコヒーレンス追跡の粒度の整数倍である。キャッシュコヒーレンスブリッジプロトコル、ホスト410、ホスト412、プロセッサインメモリ402、プロセッサインメモリ404、プロセッサインメモリ406及びプロセッサインメモリ408を含むシステムの少なくとも1つの実施形態では、ライトアロケートキャッシュコヒーレンスポリシーを実施する(すなわち、ホスト又はプロセッサインメモリは、キャッシュラインの任意の部分を書き込む前に、キャッシュラインをメモリから対応するキャッシュに読み出す)。
図3を参照して上述したように、キャッシュコヒーレンスブリッジプロトコルは、ホスト側サポートを使用し、これは、単一の共有デバイスをホストディレクトリ328に追加することを含んでもよい。ホストディレクトリ328内の単一の共有デバイスを使用して、ホストコヒーレンスプロトコルの観点から、ホームプロセッサインメモリのキャッシュコヒーレンス状態を追跡してもよい。図4を参照すると、例えば、プロセッサインメモリ402がホームプロセッサインメモリであり、ホームノードホスト410のホストコヒーレンスディレクトリで追跡されるキャッシュラインの場合、ホスト410のホストコヒーレンスディレクトリは、プロセッサインメモリ402内のキャッシュラインのキャッシュコヒーレンス状態を追跡する。各プロセッサインメモリのシャドウディレクトリは、システムの他の場所に存在し得る任意のデータブロックのコピーの集約ビューを維持する。少なくとも1つの実施形態では、ホームプロセッサインメモリがプロセッサインメモリ402であるキャッシュブロックの場合、プロセッサインメモリ402のシャドウディレクトリは、ホスト410又はホスト412のキャッシュに存在し得るキャッシュラインの任意のコピーの集約ビューを維持する。
一般に、プロセッサインメモリキャッシュは、ライトスルーキャッシュ又はライトバックキャッシュである。プロセッサインメモリキャッシュがライトスルーキャッシュである場合、ホストによるメモリアクセスに応じてプロセッサインメモリキャッシュをチェックする必要はない。プロセッサインメモリキャッシュがライトバックキャッシュである場合、ホストメモリアクセスを処理する(servicing)ことは、最新のデータについてプロセッサインメモリキャッシュをチェックすることを含む。例えば、図5を参照すると、レベル1のキャッシュは、メモリ相互接続部204のプロセッサ側のコヒーレンスドメインのライトスルーキャッシュであり、レベル2のキャッシュは、メモリ相互接続部204のプロセッサ側のコヒーレンスドメインの外部のメモリへの経路のメモリサイドキャッシュである。ホストによる全てのメモリアクセスは、プロセッサインメモリキャッシュコヒーレンスドメインの外部のメモリサイドキャッシュ(例えば、レベル2のキャッシュ)をチェックする。他の実施形態では、処理ロジック104がキャッシュを含まないので、プロセッサインメモリ内コヒーレンスを実施しない。
図3を参照すると、各プロセッサインメモリ102は、プロセッサインメモリ102のメモリに記憶された各データブロックのブリッジコヒーレンス状態を追跡するブリッジプロトコル制御ロジック322を含む。そのブリッジコヒーレンス状態は、シャドウディレクトリ324に記憶される。ブリッジプロトコル制御ロジック322は、シャドウディレクトリ324の状態遷移を制御し、対応するインジケータを記憶する。図3及び図6を参照すると、少なくとも1つの実施形態では、プロセッサインメモリの各データブロックについて、シャドウディレクトリ324は、no−host−copy(I)状態602、host−read(S)状態604、及び、host−written(M)状態606のブリッジコヒーレンス状態のインジケータを記憶する。状態図は、ライトスルーレベル1のキャッシュと、プロセッサインメモリキャッシュコヒーレンスドメインの外側のメモリサイド(例えば、レベル2)キャッシュと、を有するプロセッサインメモリ102に対応する。ブリッジプロトコル制御ロジック322は、(例えば、プロセッサインメモリ102又はホスト110からの)メモリへの各アクセスに応じて、メモリサイドキャッシュをチェックする。no−host−copy(I)状態602は、ブリッジキャッシュコヒーレンスドメインの何れのホストも、データブロックの任意の部分をキャッシュメモリに記憶していないことを示している。このブリッジコヒーレンス状態は、従来のMSI、MESI、MOESIキャッシュコヒーレンスプロトコルのInvalid状態に類似しており、Mは変更(modified)を表し、Oは所有(owned)を表し、Eは排他(exclusive)を表し、Sは共有(shared)を表し、Iは無効(invalid)を表す。host−read(S)状態604は、ブリッジコヒーレンスドメインの1つ以上のホストがデータブロックの一部を読み出し、それらのキャッシュに未修正のコピーを有し得るが、それを書き込んでいないことを示している。このブリッジコヒーレンス状態は、MSI、MESI、MOESIキャッシュコヒーレンスプロトコルにおける共有状態に類似している。host−written(M)状態606は、ブリッジコヒーレンスドメインの1つ以上のホストがデータブロックの排他的所有権を有し、その一部を書き込んでいる可能性があることを示している(例えば、ホスト側のコアは、MSIキャッシュコヒーレンスプロトコルの変更状態のラインのコピー、MESIキャッシュコヒーレンスプロトコルの変更状態若しくは排他状態のラインのコピー、又は、MOESIキャッシュコヒーレンスプロトコルの変更状態、所有状態若しくは排他状態のラインのコピーを有する)。
プロセッサインメモリ102によるローカルデータ(すなわち、プロセッサインメモリ102がホームプロセッサインメモリであるメモリアドレスに関連付けられたデータ)の読み出し、及び、プロセッサインメモリ102によるローカルデータの書き込みの各々は、P.r及びP.wで示され、ブリッジプロトコル制御ロジック322は、シャドウディレクトリ324の対応するエントリの関連する状態遷移に応答する。ホスト110によるプロセッサインメモリのローカルデータの読み出し、及び、ホスト110によるプロセッサインメモリのローカルデータの書き込みの各々は、H.r及びH.wで示され、ブリッジプロトコル制御ロジック322は、シャドウディレクトリ324の対応するエントリの関連する状態遷移で応答する。遷移の中間状態及びアクションは、明瞭にするために、状態図に示されていない。
ローカルデータブロックへのプロセッサインメモリの読み出し(P.r)アクセスに応じて、データブロックがシャドウディレクトリ324にno−host−copy(I)状態602又はhost−read(S)状態604を有する場合、ブリッジプロトコル制御ロジック322は、プロセッサインメモリの外部でコヒーレンスメッセージを生成せず、現在の状態であるno−host−copy(I)状態602又はhost−read(S)状態604に留まる。データブロックがシャドウディレクトリにhost−written(M)状態606を有する場合、ブリッジプロトコル制御ロジック322は、プロセッサインメモリに取り付けられたホームノードへの読み出しコヒーレンス要求を生成し、コヒーレンス状態をhost−read(S)状態604に遷移させる(704)。そのホストはホームノードでもあるので、その要求が他の読み出し要求であるかのように、ホストのコヒーレンスプロトコルと統合される。プロセッサインメモリは、読み出しを進める前に、コヒーレンス要求が完了し、コヒーレンスの確認応答を受信し、更新データが使用可能になるまで待機する必要がある。
ローカルデータへのプロセッサインメモリの書き込み(P.w)アクセスに応じて、データブロックがシャドウディレクトリ324にno−host−copy(I)状態602を有する場合、ブリッジプロトコル制御ロジック322は、プロセッサインメモリの外側でコヒーレンスメッセージを生成せず、現在の状態であるno−host−copy(I)状態602に留まる。データブロックがシャドウディレクトリ324にhost−read(S)状態604を有する場合、ブリッジプロトコル制御ロジック322は、ホストに対する無効化要求を生成し、完了信号を待った後に、書き込み及びno−host−copy(I)状態602への遷移(702)を進める。データブロックがシャドウディレクトリ324にhost−written(M)状態606を有する場合、ブリッジプロトコル制御ロジック322は、無効化要求を生成し、変更されたデータを待ってから、no−host−copy(I)状態602への状態遷移(707)を開始する。
ホスト又はホストを介してメモリにアクセスする他のコンポーネントで発生し得るホスト側からの読み出し(H.r)アクセスに応じて、データブロックがシャドウディレクトリ324にno−host−copy(I)状態602又はhost−written(M)状態606を有する場合、ブリッジプロトコル制御ロジック322は、状態をhost−read(S)状態604に遷移させる(702又は704)。host−written(M)状態606にある間のホスト側からの追加の読み出し要求は、(host−written(M)状態606に導かれた)ホストキャッシュの変更されたコピーがホスト側キャッシュコヒーレンスプロトコルによって既に降格されているのを示唆していることに留意されたい。データブロックがシャドウディレクトリ324にhost−read(S)状態604を有する場合、ブリッジプロトコル制御ロジック322は、状態を変化させない。
ホスト側からの所有権読み出し(H.w)アクセスに応じて、データブロックがシャドウディレクトリにno−host−copy(I)状態602又はhost−read(S)状態604を有する場合、ブリッジプロトコル制御ロジック322は、状態をhost−written(M)状態606に遷移させる(706又は711)。また、ブリッジプロトコル制御ロジック322は、プロセッサインメモリキャッシュコヒーレンスドメインの何れかのキャッシュ(例えば、レベル1キャッシュ)のデータブロックの何れかのコピーを無効にし、要求されたデータで所有権読み出しアクセスに応答する。データブロックがシャドウディレクトリ324にhost−written(M)状態606を有する場合、ブリッジプロトコル制御ロジック322は、状態を変化させず、要求されたデータで読み出し要求に応答する。
ホームノードは、追加のホストコヒーレンス動作を実行することができる。例えば、MSI、MESI及びMOESIキャッシュコヒーレンスプロトコルにおけるI又はSからE、M又はOへの全ての状態遷移(または、他のプロトコルにおける同等の遷移)に対して、ホームノードは、ホームプロセッサインメモリ(例えば、プロセッサインメモリ102)へのtransition−to−M要求を生成しなければならない。これは、割り当てられていないラインの全てがデフォルトでプロセッサインメモリ上のhost−read(S)状態604であると仮定するようにホストプロトコルを変更することによって、トリガされてもよい。transition−to−M要求は、メモリインタフェースプロトコルがそうすることをサポートする場合、書き込みに先行する読み出し要求(割り当てのための)と関連していてもよい。少なくとも1つの実施形態では、ホームノードは、最後にキャッシュされたコピーがホスト側のキャッシュコヒーレンスドメイン全体から追い出されたことに応じて、プロセッサインメモリへのtransition−to−I要求を生成する。この要求は、ホスト側からの最後の追い出し時にダーティデータからフラッシュすることと併せて生成することができる。この要求の生成は、後述するように、メモリ側ラストレベルキャッシュを有するホストに影響を与える可能性がある。他の実施形態においては、ホストは、このような要求を生成しない。
図5に戻ると、少なくとも1つの実施形態では、プロセッサロジック104は、プロセッサ側(例えば、GPU CU214、CPUコア216及びハードウェアアクセラレータ218のレベル1キャッシュ)のライトバックキャッシュを含む。結果として、各データブロックのブリッジコヒーレンス状態は、追加の状態であるprocessor−in−memory−modified(P)状態を用いて、データブロックの何れかの部分がプロセッサ側キャッシュ内のプロセッサインメモリ102によって変更されたか否かも示す。図7は、シャドウディレクトリ324内のブリッジコヒーレンス状態情報への更新に関するブリッジプロトコル制御ロジック322の変更された状態図である。データブロックがシャドウディレクトリ324にprocessor−in−memory−modified(P)状態608を有する場合、ブリッジプロトコル制御ロジック322は、プロセッサインメモリの外部からの読み出し又は書き込みアクセスに応じて、更新されたデータをプロセッサインメモリキャッシュから提供し、(外部要求が排他又は書き込み許可用である場合に)必要に応じて、ローカルコピーを無効化し、データブロックのブリッジコヒーレンス状態を、遷移710又は遷移717を介して適切に変更する。少なくとも1つの実施形態では、プロセッサインメモリのプロセッササイドキャッシュ内の特定のデータブロックの変更されたコピーがキャッシュから追い出されると(P.e)、特定のデータブロックの状態は、シャドウディレクトリ324のno−host−copy(I)状態602(715)に遷移する。
少なくとも1つの実施形態では、ホームノードは、特定のデータブロックの最後にキャッシュされたコピーがホストサイドキャッシュコヒーレンスドメイン全体から追い出されたことに応じて、transition−to−I要求をホームプロセッサインメモリに生成する。特定のデータブロックがシャドウディレクトリ324にhost−read(S)状態604又はhost−written(M)状態606を有する場合、状態が、シャドウディレクトリ324のno−host−copy(I)状態602に遷移する。この要求は、最後の追い出しの際にダーティデータをフラッシュすることと併せて生成することができる。この要求生成は、メモリ側ラストレベルキャッシュを有するホストに影響を与え得る。このような要求は、キャッシュコヒーレンスブリッジプロトコルではオプションであり(図7には示されていない)、他の実施形態では、ホームノードは、かかる要求を生成しない。
上述したキャッシュコヒーレンスブリッジプロトコルは、コヒーレンス追跡の粒度とは無関係である。キャッシュコヒーレンスブリッジプロトコルは、キャッシュライン粒度を有してもよいし、より粗い粒度(例えば、複数のキャッシュラインを含む領域のコヒーレンス)を有してもよい。したがって、より粗い粒度を有するキャッシュコヒーレンスブリッジプロトコルの実装は、より少ない状態記憶、及び、より小さいシャドウディレクトリしか必要としない。本明細書に記載されたキャッシュコヒーレンスブリッジプロトコルは、可変粒度でも実施可能である。例えば、シャドウディレクトリの一部を使用して、より粗い粒度を有するデータブロックを追跡してもよく、シャドウディレクトリの他の部分を使用して、より細かい粒度を有するデータブロックを追跡してもよい。
キャッシュコヒーレンスブリッジプロトコルの少なくとも1つの実施形態では、ホストコヒーレンスプロトコルのコヒーレンス粒度は、キャッシュコヒーレンスブリッジプロトコルのコヒーレンス粒度及びプロセッサインメモリのコヒーレンス粒度と異なっている。例えば、個々のキャッシュラインよりも粗い粒度(例えば、4KB)でコヒーレンス許可を追跡する領域コヒーレンスは、コヒーレンストラフィック(例えば、ホストとプロセッサインメモリとの間のコヒーレンストラフィック)を大幅に低減する可能性がある。したがって、ブリッジコヒーレンスプロトコルは、既存のホスト側コヒーレンスプロトコルが従来のキャッシュライン粒度(例えば、64B)で動作し続ける間に、粗い粒度(例えば、4KB)で動作することができる。さらに、ホストコヒーレンスプロトコル及びプロセッサインメモリキャッシュコヒーレンスプロトコルの異なるコヒーレンス粒度のキャッシュコヒーレンスブリッジプロトコルのサポートは、異なるベンダからのコンポーネント(例えば、異なるキャッシュラインサイズを有する製品)間の相互運用を容易にする。効率を向上させるために、システム内のより粗いコヒーレンス粒度は、そのシステム内のより細かいコヒーレンス粒度の倍数であり、このことは、従来のシステムが2の累乗数のバイトのコヒーレンス粒度を使用することから、典型的である。
少なくとも1つの実施形態では、ブリッジ変換ユニットは、キャッシュコヒーレンス要求を、粗い粒度のコヒーレンス許可要求(例えば、プロセッサインメモリから4KBの領域要求)からより細かい粒度のコヒーレンス許可要求(例えば、ホストへの64Bのキャッシュライン)に変換する。この変換は、粗い要求のアドレス範囲の全体に及び(例えば、プロセッサインメモリからの単一の4KBの要求に応じて、ホストへの64個の64Bの要求)、受信側の対応するコヒーレンスコントローラに要求を発行する。次に、受信ブリッジ変換ユニットは、要求するブリッジ変換ユニットに完了を通知する前に、そのセット内の全ての要求に対する応答を収集する。
少なくとも1つの実施形態では、送信ブリッジ変換ユニット又は受信ブリッジ変換ユニットは、細かい粒度の許可要求(例えば、ホストからの64Bの要求)から、粗い許可(例えば、プロセッサインメモリの4KBの領域)を追跡するレスポンダ(responder)に変換する。送信ブリッジ変換ユニット又は受信ブリッジ変換ユニットは、その要求を、元の要求のアドレス範囲を含む粗い粒度の領域に変換する。リクエスタ(例えば、ホスト)は、要求した領域よりも大きい領域のコヒーレンス許可を受信したことに気付かず、同じ領域内で追加の要求を引き続き発行する場合があることに留意されたい。非効率を低減するために、送信ブリッジ変換ユニットは、最近受信した領域許可のキャッシュを維持することができる。同じリクエスタからの後続の細かい粒度の要求がこの領域許可キャッシュのエントリと一致する場合、送信ブリッジ変換ユニットは、他のエンティティへの要求を開始することなく完了を通知することができる。
上述したように、細かい粒度でコヒーレンス降格に関するメッセージを生成するシステムでは、性能を強化するためにのみ降格メッセージが用いられることから、送信ブリッジ変換ユニットは、降格メッセージを破棄する場合がある。他の実施形態では、細かい粒度で、送信ブリッジ変換ユニットは、粗い粒度でコヒーレンスを追跡する受信者に降格を伝える前に、連続する粗い粒度の領域が降格されるまで降格メッセージを収集する。送信ブリッジ変換ユニットは、細かい粒度の降格を伝えてもよく、受信ブリッジ変換ユニットが、それらを粗い粒度の領域に集約するのを予期してもよい。粗い粒度の領域の他の部分への降格要求を生成する送信ブリッジ変換ユニットは、粗い粒度の領域全体の降格を強制し、その領域の降格を伝えてもよい。少なくとも1つの実施形態では、送信ブリッジ変換ユニットは、先行するメモリ要求に基づくヒューリスティックスに従って上記の1つ以上のオプションを実行してもよい。
図3に戻ると、シャドウディレクトリ324は、各データブロックのブリッジコヒーレンス状態をプロセッサインメモリ内に記憶するために、個別の記憶構造(例えば、個別のダイのプロセッサインメモリ102におけるSRAM、又は、プロセッサインメモリ102と共にスタックされた分散されたSRAM)を用いて実装されてもよい。この記憶構造は、複数のメモリチャネルに亘って物理的に分散されてもよいし、プロセッサインメモリの各メモリチャネルは、この構造に対する帯域幅制限を緩和し得る個別のテーブルを維持してもよい。
少なくとも1つの実施形態では、シャドウディレクトリ324は、例えばDRAMが十分な追加のビットを含むようにカスタマイズされ、非標準的なアドレッシングのサポートを必要としないような設計において、メモリと統合され、データブロック毎のブリッジコヒーレンス状態を、データブロックを記憶するメモリの同じ行のビットのサブセットに記憶する。少なくとも1つの実施形態では、シャドウディレクトリ324は、データブロックとは別に、ブリッジコヒーレンス状態の記憶専用の各メモリチャネルのメモリ空間のサブセット(例えば、メモリ空間の最上位のアドレス範囲)に配置される。アドレスマッピングは、特定のメモリアドレスのキャッシュコヒーレンス状態が、DRAMページの競合を低減するために、特定のメモリアドレスのデータを含むチャネル以外のチャネルに常駐するように設計されてもよい。アドレス空間が、プロセッサインメモリデバイス間、及び、比較的細かい粒度(すなわち、単一のメモリチャネルの容量よりはるかに小さい粒度)でプロセッサインメモリ内のチャネル間で分散される場合には、そのマッピング技術は、特別なアドレッシングのサポートが殆どなくてもよい。DRAM及び記載されたメモリ空間の代替のセブセットを用いて実装されたシャドウディレクトリは、最近アクセスされたシャドウディレクトリエントリを記憶するためのSRAMキャッシュによって拡張され、シャドウディレクトリ状態にアクセスして変更するために必要なDRAMアクセスを低減することができる。
プロセッサインメモリの観点からは、ホスト側コヒーレンスドメインに含まれていないホストのメモリサイドラストレベルキャッシュが、ホストの一部として見られる。キャッシュコヒーレンスブリッジプロトコルは、上述したシャドウディレクトリ追跡スキームにおいて、デフォルトでホストにキャッシュされたデータブロックの状態を保存する。メモリサイドキャッシュが変更されたデータを含む唯一のものである場合(すなわち、ホストディレクトリによって追跡された他のキャッシュに当該データのコピーが存在しない場合)、ホストキャッシュからの変更されたデータに対する要求を含むプロセッサインメモリからのキャッシュコヒーレンス要求に応じて、キャッシュコヒーレンスブリッジプロトコルは、メモリサイドラストレベルキャッシュを、他のホストキャッシュであるかのように変更してもよい。ホストの観点からは、メモリサイドキャッシュは、キャッシュコヒーレンスブリッジプロトコルからの特別な処理を必要としない。しかしながら、上述したように、ディレクトリ追跡されたホストキャッシュからの追い出しがプロセッサインメモリに通知される場合、これらのメッセージは、ホストメモリサイドキャッシュのデータを適切に考慮する必要がある。メモリサイドキャッシュの状態がこれらのメッセージと一致しない場合、これらのメッセージは、降格をプロセッサインメモリに伝えない。オプションとして、キャッシュコヒーレンスブリッジプロトコルは、メモリサイドラストレベルキャッシュからのデータブロック追い出しに応じて、このようなメッセージを生成する。
このように、キャッシュコヒーレンスブリッジプロトコルについて説明した。本明細書で説明した構造は、プロセッサ上で実行されるソフトウェア(ファームウェアを含む)を用いて、又は、ソフトウェアとハードウェアとの組み合わせによって実装されてもよい。ソフトウェアは、本明細書で説明したように、少なくとも1つの有形の(すなわち、非一時的な)コンピュータ可読媒体内でコード化されてもよい。本明細書で言及されるように、有形のコンピュータ可読媒体は、ディスク、テープ若しくは他の時期記憶媒体、光学記憶媒体、又は、電子記憶媒体を含む。本明細書に記載された発明の説明は例示的なものであり、以下の特許請求の範囲に記載された本発明の範囲を限定するものではない。例えば、本発明は、プロセッサインメモリデバイスがキャッシュを含む実施形態で説明されているが、当業者であれば、本明細書の教示が、キャッシュを含まない単純なプロセッサインメモリデバイスを利用し得るが、ホストキャッシュがプロセッサインメモリアクセスとコヒーレントであることを必要としているのを理解するであろう。本明細書に開示された実施形態の変形及び変更は、添付の特許請求の範囲に記載された本発明の範囲から逸脱することなく、本明細書に記載された発明に基づいてなされてもよい。

Claims (15)

  1. プロセッサインメモリを含むシステムであって、
    前記プロセッサインメモリは、
    前記プロセッサインメモリのメモリに存在するデータブロックのブリッジコヒーレンス状態を記憶するように構成されたシャドウディレクトリストレージであって、前記ブリッジコヒーレンス状態は、前記プロセッサインメモリの外部に記憶された前記データブロックの任意のコピーの状態を示す、シャドウディレクトリストレージと、
    前記プロセッサインメモリの第1キャッシュコヒーレンスプロトコルと、ホストプロセッサの第2キャッシュコヒーレンスプロトコルと、の間のコヒーレンスメッセージを変換するように構成されたブリッジプロトコル変換ロジックであって、前記第2キャッシュコヒーレンスプロトコルは、前記第1キャッシュコヒーレンスプロトコルと異なっている、ブリッジプロトコル変換ロジックと、
    前記コヒーレンスメッセージと、前記シャドウディレクトリストレージの内容とを用いて、前記プロセッサインメモリの前記メモリのデータコヒーレンスを維持するように構成されたブリッジプロトコル制御ロジックと、を備える、
    システム。
  2. 前記第2キャッシュコヒーレンスプロトコルは、前記第1キャッシュコヒーレンスプロトコルのブロックサイズと異なるブロックサイズを使用する、
    請求項1のシステム。
  3. 前記プロセッサインメモリは、
    集積回路ダイのスタックであって、前記プロセッサインメモリの前記メモリが前記集積回路ダイのスタックの複数のメモリ集積回路ダイに含まれ、前記ブリッジプロトコル制御ロジック及び前記ブリッジプロトコル変換ロジックが前記集積回路ダイのスタックの論理集積回路ダイに含まれている、集積回路ダイのスタックと、
    対応するプロセッサの少なくとも1つのキャッシュであって、前記プロセッサインメモリのコヒーレンスドメイン内に存在する、少なくとも1つのキャッシュと、をさらに備える、
    請求項1のシステム。
  4. 前記少なくとも1つのキャッシュは、ライトスルーキャッシュであり、前記データブロックの前記ブリッジコヒーレンス状態は、no−host−copy状態、host−read状態、及び、host−written状態のうち何れか1つである、
    請求項1、2又は3のシステム。
  5. 前記少なくとも1つのキャッシュは、ライトバックキャッシュであり、前記データブロックの前記ブリッジコヒーレンス状態は、no−host−copy状態、host−read状態、host−written状態、及び、processor−in−memory−modified状態のうち何れか1つである、
    請求項1、2又は3のシステム。
  6. 前記プロセッサインメモリは、
    前記プロセッサインメモリのコヒーレンスドメインの外部にあるメモリサイドキャッシュであって、前記ブリッジプロトコル制御ロジックは、前記データブロックへのメモリアクセスに応じて、前記メモリサイドキャッシュに記憶された前記データブロックの任意のコピーの状態をチェックするように構成されている、メモリサイドキャッシュと、
    前記対応するプロセッサの少なくとも1つのキャッシュ内に記憶された前記データブロックのプロセッサインメモリコヒーレンス状態を記憶するように構成されたプロセッサインメモリディレクトリと、
    前記プロセッサインメモリディレクトリの内容を用いて、前記少なくとも1つのキャッシュに記憶された前記データブロックのデータコヒーレンスを維持するように構成されたプロセッサインメモリ内コヒーレンスコントローラと、をさらに備える、
    請求項1、2又は3のシステム。
  7. 前記プロセッサインメモリに接続されたホストプロセッサであって、前記プロセッサインメモリの前記第1キャッシュコヒーレンスプロトコルと、前記ホストプロセッサの前記第2キャッシュコヒーレンスプロトコルとの間でコヒーレンスメッセージを変換するように構成されたホストブリッジ変換ロジックを含む、ホストプロセッサと、
    前記ホストプロセッサのコヒーレンスドメインの外側、且つ、前記プロセッサインメモリのコヒーレンスドメインの外側のメモリサイドキャッシュであって、前記シャドウディレクトリストレージは、前記メモリサイドキャッシュに記憶された前記データブロックの任意のコピーの状態を保存する、メモリサイドキャッシュと、
    前記ホストプロセッサ内に記憶され、ホストコピーデータブロックのホストコヒーレンス状態を記憶するように構成されたホストディレクトリと、
    前記ホストディレクトリを用いて、前記ホストプロセッサに存在する前記ホストコピーデータブロックのデータコヒーレンスを維持するように構成されたホスト内コヒーレンス制御ロジックと、をさらに備える、
    請求項1、2又は3のシステム。
  8. プロセッサインメモリのメモリに存在するデータブロックのブリッジコヒーレンス状態であって、前記プロセッサインメモリの外部に記憶された前記データブロックの任意のコピーの状態を示すブリッジコヒーレンス状態を、シャドウディレクトリに記憶するステップと、
    前記プロセッサインメモリの第1キャッシュコヒーレンスプロトコルと、ホストプロセッサの第2キャッシュコヒーレンスプロトコルとの間でコヒーレンスメッセージを変換するステップであって、前記第2キャッシュコヒーレンスプロトコルは、前記第1キャッシュコヒーレンスプロトコルと異なっている、ステップと、
    前記コヒーレンスメッセージと、前記シャドウディレクトリの内容とを用いて、前記プロセッサインメモリの前記メモリのデータコヒーレンスを維持するステップと、を含む、
    方法。
  9. 前記第2キャッシュコヒーレンスプロトコルは、前記第1キャッシュコヒーレンスプロトコルのブロックサイズと異なるブロックサイズを使用する、
    請求項8の方法。
  10. 前記プロセッサインメモリの前記メモリのデータコヒーレンスを維持するステップは、前記データブロックのアクセスに応じて、前記データブロックのブリッジコヒーレンス状態を更新するステップを含む、
    請求項8又は9の方法。
  11. 前記プロセッサインメモリの前記メモリのデータコヒーレンスを維持するステップは、
    前記プロセッサインメモリのプロセッサの少なくとも1つのキャッシュと、前記プロセッサインメモリの前記メモリとのコヒーレンスを維持するステップであって、前記少なくとも1つのキャッシュは、前記プロセッサインメモリのコヒーレンスドメイン内に存在する、ステップと、を含む、
    請求項8又は9の方法。
  12. 前記プロセッサインメモリの前記メモリのアクセスに応じて、前記プロセッサインメモリのメモリサイドキャッシュをチェックするステップと、
    前記プロセッサインメモリのコヒーレンスドメインのキャッシュから前記プロセッサインメモリの前記メモリサイドキャッシュにライトスルーキャッシュポリシーを実施するステップであって、前記シャドウディレクトリの前記データブロックの前記ブリッジコヒーレンス状態は、no−host−copy状態、host−read状態、及び、host−written状態のうち何れか1つである、ステップと、をさらに含む、
    請求項8又は9の方法。
  13. 前記プロセッサインメモリのコヒーレンスドメインのキャッシュから前記プロセッサインメモリのメモリサイドキャッシュにライトバックキャッシュポリシーを実施するステップであって、前記シャドウディレクトリの前記データブロックの前記ブリッジコヒーレンス状態は、no−host−copy状態、host−read状態、host−written状態、及び、processor−in−memory−modified状態のうち何れか1つである、ステップをさらに含む、
    請求項8又は9の方法。
  14. 前記プロセッサインメモリの前記メモリのデータコヒーレンスを維持するステップは、前記データブロックへのメモリアクセスに応じてコヒーレンスメッセージを生成するステップを含む、
    請求項8又は9の方法。
  15. 対応するプロセッサの少なくとも1つのキャッシュ内に記憶された前記データブロックのプロセッサインメモリコヒーレンス状態を記憶するステップと、
    プロセッサインメモリディレクトリの内容を用いて、前記少なくとも1つのキャッシュに存在する前記データブロックのデータコヒーレンスを維持するステップと、
    前記ホストプロセッサ内に記憶されたホストコヒーレンス状態であって、ホストコピーデータブロックのホストコヒーレンス状態を記憶するステップと、
    ホストディレクトリを用いて、前記ホストプロセッサに存在する前記ホストコピーデータブロックのデータコヒーレンスを維持するステップと、をさらに含む、
    請求項8又は9の方法。
JP2018555617A 2016-05-31 2017-05-02 メモリにおける処理のためのキャッシュコヒーレンス Active JP7160682B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/169,118 US10503641B2 (en) 2016-05-31 2016-05-31 Cache coherence for processing in memory
US15/169,118 2016-05-31
PCT/US2017/030586 WO2017209883A1 (en) 2016-05-31 2017-05-02 Cache coherence for processing in memory

Publications (3)

Publication Number Publication Date
JP2019517687A true JP2019517687A (ja) 2019-06-24
JPWO2017209883A5 JPWO2017209883A5 (ja) 2022-07-15
JP7160682B2 JP7160682B2 (ja) 2022-10-25

Family

ID=60418710

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018555617A Active JP7160682B2 (ja) 2016-05-31 2017-05-02 メモリにおける処理のためのキャッシュコヒーレンス

Country Status (6)

Country Link
US (1) US10503641B2 (ja)
EP (1) EP3465445B1 (ja)
JP (1) JP7160682B2 (ja)
KR (1) KR102442079B1 (ja)
CN (1) CN109154910B (ja)
WO (1) WO2017209883A1 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10866900B2 (en) * 2017-10-17 2020-12-15 Samsung Electronics Co., Ltd. ISA extension for high-bandwidth memory
US10474545B1 (en) 2017-10-31 2019-11-12 EMC IP Holding Company LLC Storage system with distributed input-output sequencing
US10365980B1 (en) * 2017-10-31 2019-07-30 EMC IP Holding Company LLC Storage system with selectable cached and cacheless modes of operation for distributed storage virtualization
KR20190075363A (ko) * 2017-12-21 2019-07-01 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 모듈
US11288195B2 (en) * 2019-03-22 2022-03-29 Arm Limited Data processing
CN110059023B (zh) * 2019-04-04 2020-11-10 创新先进技术有限公司 一种刷新级联缓存的方法、系统及设备
US10922236B2 (en) 2019-04-04 2021-02-16 Advanced New Technologies Co., Ltd. Cascade cache refreshing
US11126537B2 (en) 2019-05-02 2021-09-21 Microsoft Technology Licensing, Llc Coprocessor-based logging for time travel debugging
US11586369B2 (en) 2019-05-29 2023-02-21 Xilinx, Inc. Hybrid hardware-software coherent framework
CN111176582A (zh) * 2019-12-31 2020-05-19 北京百度网讯科技有限公司 矩阵存储方法、矩阵访问方法、装置和电子设备
US11023375B1 (en) * 2020-02-21 2021-06-01 SiFive, Inc. Data cache with hybrid writeback and writethrough
US11467834B2 (en) * 2020-04-01 2022-10-11 Samsung Electronics Co., Ltd. In-memory computing with cache coherent protocol
KR20210154277A (ko) 2020-06-11 2021-12-21 삼성전자주식회사 메모리 모듈 및 그의 동작 방법
US11360906B2 (en) 2020-08-14 2022-06-14 Alibaba Group Holding Limited Inter-device processing system with cache coherency
KR20220032366A (ko) 2020-09-07 2022-03-15 삼성전자주식회사 가변적인 모드 설정을 수행하는 메모리 장치 및 그 동작방법
EP4024222A1 (en) 2021-01-04 2022-07-06 Imec VZW An integrated circuit with 3d partitioning
JP2023007601A (ja) * 2021-07-02 2023-01-19 株式会社日立製作所 ストレージシステム制御方法及びストレージシステム
US11989142B2 (en) 2021-12-10 2024-05-21 Samsung Electronics Co., Ltd. Efficient and concurrent model execution
US20230281128A1 (en) * 2022-03-03 2023-09-07 Samsung Electronics Co., Ltd. Cache-coherent interconnect based near-data-processing accelerator
US11809323B1 (en) * 2022-06-22 2023-11-07 Seagate Technology Llc Maintaining real-time cache coherency during distributed computational functions

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0816474A (ja) * 1994-06-29 1996-01-19 Hitachi Ltd マルチプロセッサシステム
JPH10187633A (ja) * 1996-07-01 1998-07-21 Sun Microsyst Inc 外部装置とメモリ・ブロックを共用できるようにする方法および装置
JP2000250882A (ja) * 1999-02-26 2000-09-14 Internatl Business Mach Corp <Ibm> 不均等メモリ・アクセス・システム内で無効化トランザクションの衝突によって生じるライブロックを避けるための方法およびシステム
US20010034816A1 (en) * 1999-03-31 2001-10-25 Maged M. Michael Complete and concise remote (ccr) directory
US20070022254A1 (en) * 2005-07-21 2007-01-25 Veazey Judson E System for reducing the latency of exclusive read requests in a symmetric multi-processing system
US20140149682A1 (en) * 2012-11-27 2014-05-29 International Business Machines Corporation Programmable coherent proxy for attached processor
US20140181417A1 (en) * 2012-12-23 2014-06-26 Advanced Micro Devices, Inc. Cache coherency using die-stacked memory device with logic die
JP2015503160A (ja) * 2011-11-30 2015-01-29 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated 物理的な行に共に記憶されたタグ及びデータを有するdramキャッシュ
WO2015171914A1 (en) * 2014-05-08 2015-11-12 Micron Technology, Inc. Hybrid memory cube system interconnect directory-based cache coherence methodology

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6751705B1 (en) * 2000-08-25 2004-06-15 Silicon Graphics, Inc. Cache line converter
US6470429B1 (en) * 2000-12-29 2002-10-22 Compaq Information Technologies Group, L.P. System for identifying memory requests as noncacheable or reduce cache coherence directory lookups and bus snoops
US6463510B1 (en) * 2000-12-29 2002-10-08 Compaq Information Technologies Group, L.P. Apparatus for identifying memory requests originating on remote I/O devices as noncacheable
US7177987B2 (en) 2004-01-20 2007-02-13 Hewlett-Packard Development Company, L.P. System and method for responses between different cache coherency protocols
US20050216637A1 (en) * 2004-03-23 2005-09-29 Smith Zachary S Detecting coherency protocol mode in a virtual bus interface
US7167956B1 (en) * 2004-05-03 2007-01-23 Sun Microsystems, Inc. Avoiding inconsistencies between multiple translators in an object-addressed memory hierarchy
US7552236B2 (en) 2005-07-14 2009-06-23 International Business Machines Corporation Routing interrupts in a multi-node system
US7395376B2 (en) 2005-07-19 2008-07-01 International Business Machines Corporation Method, apparatus, and computer program product for a cache coherency protocol state that predicts locations of shared memory blocks
US7748037B2 (en) 2005-09-22 2010-06-29 Intel Corporation Validating a memory type modification attempt
US8539164B2 (en) * 2007-04-30 2013-09-17 Hewlett-Packard Development Company, L.P. Cache coherency within multiprocessor computer system
US7941613B2 (en) 2007-05-31 2011-05-10 Broadcom Corporation Shared memory architecture
US8082400B1 (en) 2008-02-26 2011-12-20 Hewlett-Packard Development Company, L.P. Partitioning a memory pool among plural computing nodes
US8473644B2 (en) * 2009-03-04 2013-06-25 Freescale Semiconductor, Inc. Access management technique with operation translation capability
US8176220B2 (en) 2009-10-01 2012-05-08 Oracle America, Inc. Processor-bus-connected flash storage nodes with caching to support concurrent DMA accesses from multiple processors
US8543770B2 (en) * 2010-05-26 2013-09-24 International Business Machines Corporation Assigning memory to on-chip coherence domains
US20120124297A1 (en) 2010-11-12 2012-05-17 Jaewoong Chung Coherence domain support for multi-tenant environment
DE112011103433B4 (de) * 2010-11-26 2019-10-31 International Business Machines Corporation Verfahren, System und Programm zum Steuern von Cache-Kohärenz
GB2514024B (en) 2012-03-02 2020-04-08 Advanced Risc Mach Ltd Data processing apparatus having first and second protocol domains, and method for the data processing apparatus
US20140018141A1 (en) * 2012-07-11 2014-01-16 Sergey Anikin Method for expanding sales through computer game
US8922243B2 (en) 2012-12-23 2014-12-30 Advanced Micro Devices, Inc. Die-stacked memory device with reconfigurable logic
CN104380269B (zh) * 2012-10-22 2018-01-30 英特尔公司 高性能互连相干协议
US9069674B2 (en) * 2012-11-27 2015-06-30 International Business Machines Corporation Coherent proxy for attached processor
US9251069B2 (en) 2012-12-21 2016-02-02 Advanced Micro Devices, Inc. Mechanisms to bound the presence of cache blocks with specific properties in caches
US9235528B2 (en) 2012-12-21 2016-01-12 Advanced Micro Devices, Inc. Write endurance management techniques in the logic layer of a stacked memory
US9135185B2 (en) 2012-12-23 2015-09-15 Advanced Micro Devices, Inc. Die-stacked memory device providing data translation
US9244629B2 (en) 2013-06-25 2016-01-26 Advanced Micro Devices, Inc. Method and system for asymmetrical processing with managed data affinity
CN106415522B (zh) 2014-05-08 2020-07-21 美光科技公司 存储器内轻量一致性
US9542316B1 (en) * 2015-07-23 2017-01-10 Arteris, Inc. System and method for adaptation of coherence models between agents

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0816474A (ja) * 1994-06-29 1996-01-19 Hitachi Ltd マルチプロセッサシステム
JPH10187633A (ja) * 1996-07-01 1998-07-21 Sun Microsyst Inc 外部装置とメモリ・ブロックを共用できるようにする方法および装置
JP2000250882A (ja) * 1999-02-26 2000-09-14 Internatl Business Mach Corp <Ibm> 不均等メモリ・アクセス・システム内で無効化トランザクションの衝突によって生じるライブロックを避けるための方法およびシステム
US20010034816A1 (en) * 1999-03-31 2001-10-25 Maged M. Michael Complete and concise remote (ccr) directory
US20070022254A1 (en) * 2005-07-21 2007-01-25 Veazey Judson E System for reducing the latency of exclusive read requests in a symmetric multi-processing system
JP2015503160A (ja) * 2011-11-30 2015-01-29 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated 物理的な行に共に記憶されたタグ及びデータを有するdramキャッシュ
US20140149682A1 (en) * 2012-11-27 2014-05-29 International Business Machines Corporation Programmable coherent proxy for attached processor
US20140181417A1 (en) * 2012-12-23 2014-06-26 Advanced Micro Devices, Inc. Cache coherency using die-stacked memory device with logic die
WO2015171914A1 (en) * 2014-05-08 2015-11-12 Micron Technology, Inc. Hybrid memory cube system interconnect directory-based cache coherence methodology
US20150324290A1 (en) * 2014-05-08 2015-11-12 John Leidel Hybrid memory cube system interconnect directory-based cache coherence methodology

Also Published As

Publication number Publication date
US20170344479A1 (en) 2017-11-30
CN109154910A (zh) 2019-01-04
EP3465445A4 (en) 2020-01-22
WO2017209883A1 (en) 2017-12-07
US10503641B2 (en) 2019-12-10
EP3465445B1 (en) 2021-06-23
CN109154910B (zh) 2023-08-08
EP3465445A1 (en) 2019-04-10
KR102442079B1 (ko) 2022-09-08
KR20190003564A (ko) 2019-01-09
JP7160682B2 (ja) 2022-10-25

Similar Documents

Publication Publication Date Title
JP7160682B2 (ja) メモリにおける処理のためのキャッシュコヒーレンス
US11908546B2 (en) In-memory lightweight memory coherence protocol
US11741012B2 (en) Stacked memory device system interconnect directory-based cache coherence methodology
US10402327B2 (en) Network-aware cache coherence protocol enhancement
JP4230998B2 (ja) リモートキャッシュプレゼンス情報を記録するプロセッサキャッシュを備えたコンピュータシステム
US7774551B2 (en) Hierarchical cache coherence directory structure
JP4237142B2 (ja) 統合ディレクトリとプロセッサキャッシュを備えたコンピュータシステム
US7814285B2 (en) Method and apparatus for filtering memory write snoop activity in a distributed shared memory computer
US8271735B2 (en) Cache-coherency protocol with held state
US8397030B2 (en) Efficient region coherence protocol for clustered shared-memory multiprocessor systems
US10055349B2 (en) Cache coherence protocol
JPWO2017209883A5 (ja)
US6857051B2 (en) Method and apparatus for maintaining cache coherence in a computer system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200501

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210303

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210323

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20210618

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20210823

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210913

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220125

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220415

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220627

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20220706

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221013

R150 Certificate of patent or registration of utility model

Ref document number: 7160682

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150