JP6907787B2 - 情報処理装置および情報処理方法 - Google Patents
情報処理装置および情報処理方法 Download PDFInfo
- Publication number
- JP6907787B2 JP6907787B2 JP2017146481A JP2017146481A JP6907787B2 JP 6907787 B2 JP6907787 B2 JP 6907787B2 JP 2017146481 A JP2017146481 A JP 2017146481A JP 2017146481 A JP2017146481 A JP 2017146481A JP 6907787 B2 JP6907787 B2 JP 6907787B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- circuit
- cache
- transfer
- fpga
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
て、前記第2のキャッシュメモリを介して前記送信データを読み出す手段とを備える。
[比較例]
パッケージ(package)510−1、510−2を含む。パッケージ510−1は、CPU
チップ(chip)と、FPGAチップ(chip)と、システムメモリ20−1を有する。パッケージ510−1のCPUチップはCPUコア(core)11−1、ローカルキャッシュ12−1、およびLast Level Cache(LLC)13−1を含む。CPUコア(core)11−1は、単にCPU11−1ともいう。また、パッケージ(package) 510−2は、同様に、CPUチップ(chip)と、FPGAチップ(chip)と、システムメモリ20−2を有する。パッケージ510−2のCPUチップはCPUコア(core)11−2、ローカルキャッシュ12−2、およびLast Level Cache(LLC)13−2を含む。
されている。同様に、パッケージ510−2のFPGAチップは、FPGA演算回路14−2およびFPGAキャッシュ15−2を含む。
ている。
[実施形態1]
、送信回路16からFPGAキャッシュ15−1、15−2、QPI等の伝送路、LLC13、および受信回路17を介してFPGA演算回路14−2に転送される。
タ(address register)164を有している。
4−2に転送される。また、転送フラグ転送サイズ書込回路162は、ONに設定した転送フラグを、システムメモリ20の所定アドレスを介して受信回路17に通知する。ここで、ONの転送フラグは、送信回路16から受信回路17に対する転送開始の通知である。したがって、転送フラグ転送サイズ書込回路162の処理は、第1のキャッシュメモリを介してメモリに送信開始を示す情報を書き込むことの一例であるといえる。また、転送フラグ転送サイズ書込回路162は、第4の演算回路への送信データの送信開始を示す情報を第2の演算部に送信する手段の一例である。
具体的には、空cache管理回路163は、FPGAキャッシュ15−1に問い合わせ(query)を送り、空き領域の存在を確認する。そして、空cache管理回路163は、空き領域
の存在を確認できた場合には、以降、FPGAキャッシュ15−1の空き領域を用いたデータ転送処理を実行する。すなわち、空cache管理回路163は、FPGA演算回路14
−1から引き渡されるデータが転送データであるか否かを判定する。そして、空cache管
理回路163は、転送データをFPGAキャッシュ15−1の空き領域に書き込む。一方、空cache管理回路163は、転送データ以外のデータがFPGAキャッシュ15−1に
書き込まれないようにFPGAキャッシュ15−1へのメモリトランザクションを制御する。空cache管理回路163は、第1のキャッシュメモリに送信データを書き込む手段の
一例である。空cache管理回路163は、送信データを保持するための第1のキャッシュ
メモリ上での空き領域を確認する手段の一例でもある。
ドレスを基にFPGA演算回路14−1から引き渡されるデータが受信回路17に転送される転送データか否かを判定する。ここで、アドレスは、システムメモリ20上に定義されるアドレスである。空cache管理回路163は、FPGA演算回路14−1から引き渡
されるデータのアドレスがシステムメモリ20上に確保された転送領域のアドレスの場合、FPGA演算回路14−1から引き渡されるデータが転送データであると判定する。そして、空cache管理回路163は、転送データをFPGAキャッシュ15−1上の確保さ
れた空き領域に書き込み、保持する。また、空cache管理回路163は、受信回路17に
転送される転送データ以外のデータがFPGAキャッシュ15−1に書き込まれないように制御する。この制御により、空cache管理回路163は、FPGAキャッシュ15−1
に保持された転送データが追い出されるのを抑止する。空cache管理回路163は、送信
データ以外のデータによって第1のキャッシュメモリが使用されることを抑止する手段の一例である。
管理回路163に引き渡される。空cache管理回路163は、アドレスレジスタ164に
保持されたアドレスを基に、FPGA演算回路14−1から引き渡されるデータが受信回路17に転送される転送データか否かを判定する。すなわち、空cache管理回路163は
、FPGA演算回路14−1からデータとともに引き渡されるアドレスが、アドレスレジスタ164に保持されたアドレスと一致するか、一定の範囲にあれば、そのデータが転送データであると判定する。
ッシュ15−1上の空領域を確保させる。そして、送信回路制御回路161は、転送フラグ転送サイズ書込回路162に、システムメモリ20上の所定アドレスに、転送サイズと
転送フラグを書き込ませる。ここで、転送サイズは、FPGA演算回路14−1から付与されるデータ転送量(length)である。そして、送信回路制御回路161は、FPGA演算回路14−1から引き渡されるデータをFPGAキャッシュ15−1上に確保された空領域に、引き渡されたアドレスを基に書き込む。図4では、送信回路制御回路161は、空cache管理回路163を介してFPGAキャッシュ15−1にデータを書き込む。
ータが受信回路17に転送される転送データか否かを判定する。データが転送データか否かは、データとともにFPGA演算回路14−1から引き渡されるアドレスが、システムメモリ20に確保された転送領域のアドレスに該当するか否かにより判定される。そして、FPGA演算回路14−1から引き渡されるデータが受信回路17に転送される転送データである場合には、空cache管理回路163は、FPGA演算回路14−1からのデー
タをFPGAキャッシュ15−1の空き領域に書き込む。転送データの書き込みでは、空cache管理回路163は、キャッシュヒントをModify(M)としてデータを書き込む。
する。キャッシュヒントは、キャッシュメモリに書き込まれるデータの状態を指定する情報である。例えば、キャッシュヒントでModify(M)の指定は、書き込まれたデータが書き
込まれたキャッシュにだけに存在し、主記憶上の値から変更されていることを示す。Modify(M)が指定されたキャッシュ上のデータは、他のFPGA演算回路14あるいはCPU
11がこのデータのキャッシュブロックに相当するシステムメモリ20からのデータの読み出しを許可する前に、システムメモリ20に書き戻される。また、情報処理装置100がImplicit Write Backを実施する場合には、Modify(M)が指定されたキャッシュ上のデータがFPGA演算回路14−1以外のFPGA演算回路14、あるいは、CPU11に転送されると、FPGAキャッシュ15−1のデータはInvalid(I)となる。また、このとき、FPGAキャッシュ15−1のデータは、システムメモリ20に書き戻される。
。キャッシュコントローラ15A−1は、キャッシュヒントがInvalid(I)に設定されたデータをFPGA演算回路14−1内に保存せず、システムメモリ20に書き戻す。すなわち、空cache管理回路163は、転送データ以外は、FPGAキャッシュ15−1に書き
込まれないように制御し、FPGAキャッシュ15−1に保持された転送データが、システムメモリ20に追い出されないようにする。
ッシュコントローラ15A−1を介して実行される。すなわち、空cache管理回路163
は、キャッシュヒント、システムメモリ20上のアドレス、およびデータを含むメモリリクエストをキャッシュコントローラ15A−1に送り、データをFPGAキャッシュ15−1に書き込む。また、空cache管理回路163は、メモリリクエストの1つとして、ク
エリをキャッシュコントローラ15A−1に送り、レスポンス(空き領域の個数)を取得する。
5−1全体の空き領域の個数を取得する。また、FPGAキャッシュ15−1がセットアソシアティブ方式の場合には、空cache管理回路163は、キャッシュコントローラ15
A−1から、アドレスで特定されるセットの空き領域の個数を取得する。なお、FPGAキャッシュ15−1の空き領域となる、データ入替のための単位領域は、キャッシュライン、あるいはキャッシュブロックと呼ばれる。
ャッシュコントローラ15A−2からメモリリクエストに対応するメモリレスポンスを取得する。メモリレスポンスは、受信側のFPGAキャッシュ15−2からのデータとキャッシュヒントを含む。ただし、キャッシュヒントがキャッシュミスを示す場合には、上記メモリリクエストによってデータが取得できなかったことを示す。そこで、キャッシュヒントがキャッシュミスを示す場合には、転送領域ポーリング回路172は、再度キャッシュコントローラ15A−2にメモリリクエストを送り、リトライする。キャッシュヒントがキャッシュミスでない場合には、転送領域ポーリング回路172は、キャッシュコントローラ15A−2からのメモリレスポンス(データとキャッシュヒント)をFPGA演算回路14−2に引き渡す。転送領域ポーリング回路172は第2のキャッシュメモリを介して送信データを読み出す手段の一例である。
0に書き込む。以上の処理により、空cache管理回路163は、転送データをFPGAキ
ャッシュ15−1に書き込むととともに、転送データ以外のデータによるFPGAキャッシュ15−1の使用を抑止する。判定処理回路1632による処理は、第1の演算部および前記第2の演算部からアクセス可能なメモリ上で指定されるアドレスを基に、空き領域の存在が確認された後にキャッシュメモリに書き込まれるデータが送信データか否かを判定し、送信データ以外のデータによって第1のキャッシュメモリが使用されることを抑止することの一例である。
するCPU11から、システムメモリ20上に確保された転送領域の先頭アドレスを受信するのを待つ。送信回路制御回路161は、転送領域の先頭アドレスを受信すると、state 1に移行する。なお、CPU11は、送信回路制御回路161とともに、FPGA演算
回路14−1内のレジスタにも、転送領域の先頭アドレスを引き渡す。FPGA演算回路14−1は、FPGA演算回路14−1に転送する転送データに対して、転送領域のアドレスを指定してメモリリクエストを発行する。
に転送サイズを受信するのを待つ。送信回路制御回路161は、転送サイズを受信すると、state 2に移行する。送信回路制御回路161でのstate 1の処理は、送信データのデータ量を取得することの一例である。
イズを書き込む。転送サイズは、例えば、アプリケーションプログラムを実行するCPU11によってシステムメモリ20から読み出され、受信回路17の転送サイズレジスタ176に書き込まれる。ただし、受信回路17の受信回路制御回路171がシステムメモリの所定アドレスをポーリングして、転送サイズを取得し、転送サイズレジスタ176に書き込んでもよい。送信回路制御回路161は、システムメモリ20の所定アドレスに転送サイズを書き込むと、state 3に移行する。
制御回路161からの指示にしたがってキャッシュコントローラ15A−1にクエリを送り、空き容量を取得する。送信回路制御回路161は、空cache管理回路163により、
空き容量を取得すると、state 4に移行する。送信回路制御回路161でのstate 3の処理は、空き領域の有無を繰り返し確認することの一例である。
きに一度だけ実行されてもよいし、state 3で空き容量が取得される度に繰り返し実行さ
れてもよい。さらに、送信回路制御回路161は、FPGA演算回路14−1から転送サイズ分の転送データを取得する。そして、送信回路制御回路161は、空cache管理回路
163を介して、FPGAキャッシュ15−1の空き容量分の転送データをFPGAキャッシュ15−1に書き込む。このとき、空cache管理回路163は、FPGAキャッシュ
15−1に書き込まれたデータのキャッシュヒントをModified(M)に設定する。FPGA
キャッシュ15−1でModified(M)の状態が設定されたデータは、受信側のFPGAキャ
ッシュ15−2に読み出されるときに、キャッシュコントローラ15A−1によるImplicit Write Backにより処理される。すなわち、Modified(M)のデータは、上記読み出し時にシステムメモリ20の転送領域に書き込まれるととともに、FPGAキャッシュ15−1
の転送領域に対応する領域は、Invalidとなり、空き領域となる。送信回路制御回路16
1でのstate 3に続いて実行されるstate 4の処理は、空き領域があることが確認されたときに、書き込む手段によって前記空き領域の容量分の送信データを書き込む処理の一例である。システムメモリ20への書き込みは、FPGAキャッシュ15−1を介して実施される。したがって、送信回路制御回路161がstate 2でシステムメモリ20の所定アド
レスに転送フラグを書き込むことは、第1のキャッシュメモリを介して前記メモリに前記送信開始を示す情報を書き込むことの一例であるといえる。Implicit Write Backを実行
するキャッシュコントローラ15A−1は、空き領域に書き込まれた送信データが第2のキャッシュメモリを介して読み出す手段によって読み出されるときに、送信データが書き込まれた領域を空き領域に設定するキャッシュ制御手段の一例である。
とstate 4との間を遷移する。
にある転送データがFPGAキャッシュ15−2に引き渡されたときに、キャッシュコントローラ15A−1がImplicit Write Backを実行する。Implicit Write Backでは、キャッシュコントローラ15A−1は、FPGAキャッシュ15−1上の転送データの領域(キャッシュライン、キャッシュブロック)をInvalidとし、転送データをシステムメモリ
20に保存する。
ャッシュ15−1への書き込みが完了すると、state 5へ移行する。送信回路制御回路1
61は、state 5で、システムメモリ20上の所定アドレスの転送サイズおよび転送フラ
グを初期化し、state 1に戻る。以上のstate 1からstate5の状態遷移による送信回路制御回路161の処理は、CPU11の1つのアプリケーションが終了するまで継続する。
ログラムを実行するCPU11から、システムメモリ20上に確保された転送領域の先頭アドレスを受信するのを待つ。受信回路制御回路171は、転送領域の先頭アドレスを受信すると、state 1に移行する。
レジスタ176に書き込まれるのを待つ。ただし、CPU11に代えて、受信回路制御回路171が、例えば、キャッシュコントローラ15A−2およびFPGAキャッシュ15−2を介して、システムメモリ20上の所定アドレスをポーリングし、転送サイズを取得
してもよい。そして、受信回路制御回路171は、取得した転送サイズを転送サイズレジスタ176に書き込めばよい。転送サイズが転送サイズレジスタ176に書き込まれると、受信回路制御回路171は、state 2に移行する。
フラグレジスタ177に書き込まれるのを待つ。ただし、CPU11に代えて、受信回路制御回路171が転送サイズと同様に、システムメモリ20の所定アドレスをポーリングし、ONの転送フラグを取得してもよい。そして、受信回路制御回路171は、取得したONの転送フラグを転送フラグレジスタ177に書き込めばよい。ONの転送フラグが転送フラグレジスタ177に書き込まれると、受信回路制御回路171は、state 3に移行
する。受信回路制御回路171は、第2のキャッシュメモリを介して前記メモリから前記送信開始を示す情報を読み出す手段の一例として、state 2でシステムメモリ20の所定
アドレスをポーリングし、ONの転送フラグを取得する。また、CPU11がstate 2で
システムメモリ20の所定アドレスをポーリングし、ONの転送フラグを取得することは、メモリから前記送信開始を示す情報を読み出し、伝送路を通じて第4の演算回路に引き渡すことの一例である。
側のFPGAキャッシュ15−2を介して転送領域をポーリングする。転送領域ポーリング回路172によるポーリングは、転送領域のデータがFPGAキャッシュ15−2でヒットするまで繰り返される。転送領域のデータがFPGAキャッシュ15−2でヒットすると、受信回路制御回路171は、state 4に移行する。受信回路制御回路171および
転送領域ポーリング回路172によるstate 3の処理は、メモリ上で指定されるアドレス
に基づく第2のキャッシュメモリからのデータの読み出しがキャッシュミスとなった場合に、第2のキャッシュメモリからのデータの読み出しを再度実行することの一例である。
送データをFPGA演算回路14−2に転送する。このとき、受信回路制御回路171は、FPGA演算回路14−2に転送したデータ量を積算する。また、受信回路制御回路171は、FPGA演算回路14−2に転送したデータ量だけ、ポーリングするアドレスを増分する。増分されたアドレスはアドレスレジスタ174に保持すればよい。そして、受信回路制御回路171は、FPGA演算回路14−2に転送したデータ量が転送サイズレジスタ176の転送サイズに達したか否かを判定する。FPGA演算回路14−2に転送したデータ量が転送サイズレジスタ176の転送サイズに達していない場合、受信回路制御回路171は、state 3に戻る。一方、FPGA演算回路14−2に転送したデータ量
が転送サイズレジスタ176の転送サイズに達した場合、受信回路制御回路171は、state 5に移行する。送信回路制御回路161は、state 5で、転送サイズレジスタ176および転送フラグレジスタ177を初期化し、state 1に戻る。
ステムメモリ20に、転送されるデータの最大データサイズに対応する転送領域を確保すする(A1)。そして、CPU11は、図4、図5に例示したQPI等の伝送路を介して、送信回路16のアドレスレジスタ164、FPGA演算回路14−1の所定のレジスタ、および受信回路17のアドレスレジスタ174に、確保した転送領域の先頭アドレスを書き込む。
容量を確保させる(A3)。ここで、空cache管理回路163は、送信回路制御回路16
1からの指示にしたがって、キャッシュコントローラ15A−1からFPGAキャッシュ15−1の空き容量を示す、キャッシュヒントがInvalid(I)の領域の数を取得する。ここで、領域の数は、キャッシュブロック数、あるいは、キャッシュライン数と呼ばれるものである。そして、空cache管理回路163は、以後転送が完了まで他のメモリトランザク
ションにおいては、キャッシュヒントがInvalid(I)でキャッシュコントローラ15A−1に指定されるように制御する。この制御により、空cache管理回路163は、FPGAキ
ャッシュ15−1からのシステムメモリ20への転送データの追い出しの発生を抑止する。
数が保持される。送信回路16は、キャッシュコントローラ15A−1から、これらのカ
ウンタ値を問い合わせて取得することが可能である。送信回路16は、Invalid(I)の数から、FPGAキャッシュ15−1の空き容量(空きキャッシュブロック数、空きキャッシュライン数)を認識する。
。以降、送信回路16は、メモリトランザクションでのキャッシュヒントがInvalid(I)になるように、空cache管理回路163に、キャッシュヒントの出力を制御させる。したが
って、FPGAキャッシュ15−1に書き込まれた2個の転送データは、受信回路17からの読み出しが完了するまで、FPGAキャッシュ15−1からシステムメモリ20に追い出されることなく、維持される。また、このとき、送信回路16は、システムメモリ20の所定領域に、ONの転送フラグを設定する。すると、CPU11は、システムメモリ20の転送フラグを読み出し、受信回路17の転送フラグレジスタ177をONに設定する。
送領域ポーリング回路172により、転送データの読み出しを開始する。すなわち、受信回路17は、受信側のキャッシュコントローラ15A−2を介して、システムメモリ20上に定義された転送領域の先頭アドレスを基にFPGAキャッシュ15−2から読み出しを開始する。
域ポーリング回路172)は、転送領域の先頭アドレス(addr1)をポーリングし、キャ
ッシュヒットの結果として、転送データ(Data1)を取得する。さらに、受信回路17は、
転送領域のアドレスをカウントアップし、アドレス(add2)をポーリングし、キャッシュヒットの結果として、データ(Data2)を取得する。このようにして、FPGAキャッシュ
15−2がFPGAキャッシュ15−1からModified(M)のData1, Data2を取得する。す
ると、FPGAキャッシュ15−1(キャッシュコントローラ15A−1)は、FPGAキャッシュ15−1上の転送データをシステムメモリ20にImplicit Write Backによっ
て書き戻す。FPGAキャッシュ15−1は、この書き戻しとともに、FPGAキャッシュ15−1上の転送データをInvalid(I)とし、空き容量とする。
を繰り返す。
される。さらに、送信側のFPGAキャッシュ15−1では、1つの転送データがModified(M)で例示されているが、Implicit Write Back完了後、Invalid(I)とされ、転送データの領域は空き領域となる。この後、システムメモリ20上の転送サイズおよび転送フラグはクリアされる。また、受信回路17の転送サイズレジスタ176および転送フラグレジスタ177もクリアされ、図10の状態に復帰する。
<実施形態1の効果>
スヌープにより読み出されたときにImplicit Write Backで保存されるだけである。した
がって、データ転送に伴うシステムメモリ20の転送領域へのアクセスは、各アドレスともにImplicit Write Back時の1回に限定される可能性が高い。したがって、比較例のよ
うに、FPGAキャッシュ15−1からFPGAキャッシュ15−2にシステムメモリ20を介してデータ転送する場合と比較して、メモリ帯域の消費は少なくとも約半分まで低減されると期待できる。したがって、実施形態1の情報処理装置100では、システムメモリ20のメモリバスの帯域の消費を抑制して、FPGAキャッシュ15−1からFPGAキャッシュ15−2へのデータ転送が可能となる。
FPGAキャッシュ15−1上でInvalid(I)の状態の領域数(キャッシュブロック数、キャッシュライン数)を基に空き容量を取得する。そして、空cache管理回路163は、F
PGA演算回路14−1からのデータがFPGA演算回路14−2への転送データか否かを、データのシステムメモリ20上のアドレスを基に判定する。空cache管理回路163
は、上記判定により、転送データについては、FPGAキャッシュ15−1の空き容量に書き込む。一方、FPGA演算回路14−1からのデータがFPGA演算回路14−2への転送データ以外である場合のメモリトランザクションについては、送信回路16は、データ転送完了まで、キャッシュヒントをInvalid(I)に制御する。この制御により、送信回路16は、FPGAキャッシュ15−1からシステムメモリ20への転送データの追い出しを抑止する。以上のように、送信回路16は、FPGAキャッシュ15−1の空き領域を活用し、メモリ帯域の消費を抑止して、FPGAキャッシュ15−1からFPGAキャッシュ15−2へデータを転送できる。また、送信回路16は、メモリリクエストのアドレスを基にデータが転送データか否かを正確に判定できる。
てに転送データを書き込むと、Implicit Write Backにより、FPGAキャッシュ15−
1の転送データがクリアされるのを待つ。そして、空cache管理回路163は、転送デー
タがクリアされた後、残りの転送データを空き領域分だけFPGAキャッシュ15−1に書き込む。したがって、空cache管理回路163は、FPGAキャッシュ15−1の空き
領域を用いて、システムメモリ20のメモリ帯域の消費を抑止して、FPGAキャッシュ15−1からFPGAキャッシュ15−2へデータを転送できる。
2によるImplicit Write Backにより、FPGAキャッシュ15−1に保持された転送デ
ータがクリアされるのを待つ。このため、情報処理装置100は、既存のキャッシュコヒーレンシ維持のためのプロトコルを利用し、簡易な制御を実現できる。
ズの設定は、CPU11によって行われる。したがって、実施形態1によれば、CPU11で実行されるアプリケーションプログラムに適合したデータ転送、個々のアプリケーションプログラムに特化したデータ転送を実行できる。
[実施形態2]
送信First IN First Out(FIFO)165と、転送サイズレジスタ166を有している。
空き容量を取得できない点以外は、実施形態1の空cache管理回路163と同様の処理を
実行する。
できない。そこで、cache管理回路163Aおよび受信回路17は、ともに、所定の空き
容量(例えば、N個分の空き領域)が確保されているものとして、処理を実行する。そして、cache管理回路163Aは、FPGA演算回路14−1からのデータ転送要求量を上
記N個分の空き領域の合計容量に区切って、FPGAキャッシュ15−1を介して、受信回路17に転送する。
当するデータ量だけFPGAキャッシュ15−1に書き込む。このとき、仮にFPGAキャッシュ15−1に空き容量がなかった場合には、その時点で例えば、最も古い(アクセスの少ない)データがFPGAキャッシュ15−1から追い出されることになる。以降、空cache管理回路163は、データ転送が完了するまで、さらなるデータがFPGAキャ
ッシュ15−1に書き込まれないようにする。
タを書き込むときには、FPGAキャッシュ15−1からの追い出し、およびシステムメモリ20へのデータの保存が発生する可能性がある。しかし、一旦、所定の空き容量(例
えば、N個分の空き領域)に相当する転送データがFPGAキャッシュ15−1に書き込まれと、書き込まれた転送データの転送が完了するまで、送信回路16は、FPGAキャッシュ15−1へのデータの書き込みを抑止する。そして、送信回路16は、FPGAキャッシュ15−1とFPGAキャッシュ15−2との間でキャッシュコヒーレンシを維持するプロトコルにしたがって、受信側のFPGA演算回路14−2に転送データを引き渡す。
65の転送データを順次FPGAキャッシュ15−1に書き込むことで、実施形態1と同様、システムメモリ20のメモリ帯域の消費を抑制して、転送データを受信回路17に引き渡す。
ションプログラムを実行するCPU11から、システムメモリ20上に確保された転送領域の先頭アドレスを受信するのを待つ。送信回路制御回路161は、転送領域の先頭アドレスを受信すると、アドレスレジスタ164に転送領域を設定する。また、このとき、送信回路制御回路161は、FPGAキャッシュ15−1で想定する空き領域の大きさ(以下規定サイズという)をシステムメモリ20の転送サイズに初期値として設定する。
モリ20の転送サイズは、実施形態1と同様の手順で受信回路17の転送サイズレジスタ176に書き込まれる。そして、送信回路制御回路161は、state 1に移行する。
リリクエストという)とともに転送要求量を受信するのを待つ。送信回路制御回路161は、転送要求量を受信すると、state 2に移行する。送信回路制御回路161は、state 2で、送信FIFO165に、FPGA演算回路14−1からのメモリリクエストによる転送データを格納する。上述のように、送信FIFO165は、上記のように例えばN個分
の領域に相当する規定サイズに分割されている。そして、送信回路制御回路161は、state 3に移行する。
を転送サイズとして、システムメモリ20の所定アドレスに書き込む。ここで、転送対象段とは、送信FIFO165に含まれる複数段の要素のうち、現在転送対象となっている要素をいう。ただし、転送対象段のデータ量が、転送サイズの初期値と一致する場合には、転送サイズの書き込みは不要である。システムメモリ20上に書き込まれた転送サイズは、実施形態1と同様の手順で、受信回路17の転送サイズレジスタ176に書き込まれる。そして、送信回路制御回路161は、state 4に移行する。送信回路制御回路161
は、送信データのデータ量を取得し、データ量の送信データを所定の書き込み量の単位で前記第1のキャッシュメモリを介して第2の演算部に転送する制御手段の一例として、state 3の処理を実行する。送信回路制御回路161は、第1のキャッシュメモリへの書き
込み量をメモリ上で指定することの一例としてstate 3の処理を実行する。
3Aは、以降FPGAキャッシュへの書込を抑止する。さらに、送信回路制御回路161は、送信FIFO165を次の段に進める。また、送信回路制御回路161は、システムメモリ20の所定アドレスの転送フラグをONで書き込む。システムメモリ20上に書き込まれた転送フラグは、実施形態1と同様の手順で、受信回路17の転送フラグレジスタ177に書き込まれる。そして、送信回路制御回路161は、state 5に移行する。送信
回路制御回路161は、書き込む手段によって第1のキャッシュメモリに送信データが書き込まれた後に、第1のキャッシュメモリの使用を抑止することの一例として、state 4 の処理を実行する。また、送信回路制御回路161は、第1のキャッシュメモリに書き込み量の送信データを第1のキャッシュメモリに書き込み、第1のキャッシュメモリの使用を抑止することの一例として、state 4の処理を実行する。
された転送サイズがクリアされるのを待つ。システムメモリ20上の所定アドレスに設定された転送サイズがクリアされると、送信回路制御回路161は、FPGAキャッシュの使用抑止を解除する。さらに、送信回路制御回路161は、送信回路制御回路161は、送信FIFO165が空か否かを判定する。送信FIFO165が空でない場合、送信回路制御回路161は、state 3に戻り、送信FIFO165の次の段から、state 3以下
の処理を繰り返す。送信FIFO165が空の場合、送信回路制御回路161は、state 1に戻り、FPGA演算回路14−1からメモリリクエストを待つ。送信回路制御回路1
61は、送信データが読み出された後に、第1のキャッシュメモリの使用を抑止することを解除することの一例として、state 5の処理を実行する。また、送信回路制御回路16
1は、送信データの第2の演算部での読み出し完了を確認し、読み出し完了が確認できたときに第1のキャッシュメモリの使用を抑止することを解除することの一例として、stat
e 5の処理を実行する。
転送サイズレジスタ176および転送フラグレジスタ177をクリアするとともに、システムメモリ20上の転送サイズレジスタ176をクリアする。
信したときの状態を例示する。この例では、転送領域として、4個分の領域(addr1から4)をシステムメモリ20に確保されている。また、実施形態2では、送信側のアドレスレジスタ164がFPGA演算回路14−1内に設けられ、システムメモリ20上の転送領域の先頭アドレス(addr1)が書き込まれている。また、受信側のアドレスレジスタ174
がFPGA演算回路14−2内に設けられ、システムメモリ20上の転送領域の先頭アドレス(addr1)が書き込まれている。また、図18の例では、FPGAキャッシュ15−1
およびFPGAキャッシュ15−2では、2個の空き領域が存在するものとして、データ転送処理が予定されている。すなわち、データ転送に使用されるFPGAキャッシュ15−1の規定サイズは領域(キャッシュブロック、キャッシュライン)2個分と決められている。state 0では、システムメモリ20上の転送サイズは0であり、転送フラグはOF
Fである。
の領域の転送要求量を通知した処理例である。図19のように、転送サイズの初期値として、2個のFPGAキャッシュ15−1の領域(規定サイズの領域)が想定されている。FPGA演算回路14−1がメモリリクエストによる転送要求量が、規定値を越える場合には、送信回路制御回路161は、転送データを規定値に分割し、送信FIFO165の各段の要素に格納し、複数回に分けてデータ転送を実行する。
図である。システムメモリ20上で、転送フラグがONになると、CPU11がシステムメモリ20からONの転送フラグを読み出し、受信回路17の転送フラグレジスタ177に書き込む。ただし、受信回路制御回路171がシステムメモリ20をポーリングし、ONの転送フラグを読み出してもよい。転送フラグレジスタ177がONになると、転送領域ポーリング回路172がFPGAキャッシュ15−2にアクセスし、アドレスレジスタ174に定義された転送領域の先頭のアドレスを基に転送データを読み出す。
スに設定された転送サイズをクリアした状態を例示する。システムメモリ20上の転送サイズがクリアされると、送信回路制御回路161は、FPGAキャッシュ15−1に書き込まれた転送データ(上記2個分のデータ、data1,data2)の転送完了を認識する。そこ
で、受信回路制御回路171は、残り1個のデータ(data3)のFPGA演算回路14−
2への転送を試みる。そのため、送信回路制御回路161は、state 3へ遷移する。なお
、このとき、転送フラグはONのまま維持される。なお、図23では省略されているが、受信回路17のアドレスレジスタ174は、転送領域の次のアドレスにカウントアップされている。
2では、送信回路制御回路161は、FPGAキャッシュ15−1の空き容量を認識できないからである。したがって、実施形態2の情報処理装置101では、FPGAキャッシュ15−1において、Implicit Write Backにより、転送データの領域がModified(M)からInvalid(I)に変更されなくてもよい。つまり、FPGAキャッシュ15−1において、Implicit Write Backの機能は不要である。
ータ(data3)を転送するため、システムメモリ20の転送サイズを1に設定した状態を
例示する。システムメモリ20の転送サイズは、上記と同様、CPU11または受信回路制御回路171により、受信回路17の転送サイズレジスタ176に0/1で設定される。
6で転送フラグをクリアする処理を例示する。上述のように、受信回路17(転送領域ポーリング回路172)が残りの転送データをFPGAキャッシュ15−2から読み出すと、受信回路制御回路171がシステムメモリ20上の転送サイズをクリアする。すると、送信FIFO165のデータがすべて送信完了となったので、送信回路制御回路161は、システムメモリ20上の転送フラグをクリアする。転送フラグがクリアされると、CPU11または受信回路制御回路171に読み出され、転送フラグレジスタ177がクリアされ、データ転送が完了する。
<実施形態2の効果>
[その他の実施形態]
うFPGA演算回路14の数は、2以上のいかなる数でもよい。
する。転送領域1−>2は、FPGA演算回路14−1からFPGA演算回路14−2へのデータ転送時に使用される。転送領域1−>2は、例えば、先頭の転送データのアドレスがaddr1であり、末尾の転送データのアドレスがaddr4である。また、転送領域1−>2は、転送データの領域の他、転送サイズおよび転送フラグを格納する領域も有する。転送領域2−>1の構成も転送領域1−>2と同様である。
うFPGA演算回路14の数は、2以上のいかなる数でもよい。
13 ローカルキャッシュ
14 FPGA演算回路
15 FPGAキャッシュ
16 送信回路
17 受信回路
20 システムメモリ
161 送信回路制御回路
162 転送フラグ転送サイズ書込回路
163 空cache管理回路
164、174 アドレスレジスタ
171 受信回路制御回路
172 転送領域ポーリング回路
1631 クエリ回路
1632 判定処理回路
Claims (11)
- 第1の演算回路および第2の演算回路を備える第1の演算部と、前記第1の演算部と接続され、かつ第3の演算回路および第4の演算回路を備える第2の演算部と、を有し、
前記第1の演算部は、さらに
前記第2の演算回路において入出力されるデータを前記第2の演算回路以外の回路が有するデータとの整合性を維持する手順にしたがって保持する第1のキャッシュメモリと、
前記第4の演算回路への送信データの送信開始を示す情報を前記第2の演算部に送信する手段と、
前記第1のキャッシュメモリに前記送信データを書き込む手段と、
前記送信データ以外のデータによって前記第1のキャッシュメモリが使用されることを抑止する手段と、を有し、
前記第2の演算部は、さらに、
前記第4の演算回路において入出力されるデータを前記第4の演算回路以外の回路が有するデータとの整合性を維持する手順にしたがって保持する第2のキャッシュメモリと、
前記送信開始を示す情報を受信した場合において、前記第2のキャッシュメモリを介して前記送信データを読み出す手段と、を備えることを特徴とする情報処理装置。 - 前記送信データを保持するための前記第1のキャッシュメモリ上での空き領域を確認する手段をさらに備え、
前記抑止する手段は、前記第1の演算部および前記第2の演算部からアクセス可能なメモリ上で指定されるアドレスを基に、前記空き領域の存在が確認された後に前記第1のキャッシュメモリに書き込まれるデータが前記送信データか否かを判定し、前記送信データ以外のデータによって前記第1のキャッシュメモリが使用されることを抑止する請求項1に記載の情報処理装置。 - 前記送信データのデータ量を取得し、前記確認する手段によって前記空き領域の有無を繰り返し確認し、前記空き領域があることが確認されたときに、前記書き込む手段によって前記空き領域の容量分の送信データを書き込む処理を実行する制御手段をさらに備える
請求項2に記載の情報処理装置。 - 読み出す手段は、前記メモリ上で指定されるアドレスに基づく前記第2のキャッシュメモリからのデータの読み出しがキャッシュミスとなった場合に、前記第2のキャッシュメモリからのデータの読み出しを再度実行する請求項2または3に記載の情報処理装置。
- 前記第1のキャッシュメモリは、前記空き領域に書き込まれた送信データが前記第2のキャッシュメモリを介して前記読み出す手段によって読み出されるときに、前記送信データが書き込まれた領域を空き領域に設定するキャッシュ制御手段をさらに備える請求項3または4に記載の情報処理装置。
- 前記送信開始を示す情報を前記第2の演算部に送信する手段は、前記第1のキャッシュメモリを介して前記メモリに前記送信開始を示す情報を書き込み、
前記第2の演算部は前記第2のキャッシュメモリを介して前記メモリから前記送信開始を示す情報を読み出す手段を備える請求項2から5のいずれか1項に記載の情報処理装置。 - 前記第1の演算部の第1の演算回路および前記第2の演算部の第3の演算回路の両方を前記第1の演算部の第2の演算回路および前記第2の演算部の第4の演算回路の両方に接続する伝送路をさらに有し、
前記送信開始を示す情報を前記第2の演算部に送信する手段は、前記第1のキャッシュメモリを介して前記メモリに前記送信開始を示す情報を書き込み、
前記第1の演算部の第1の演算回路または前記第2の演算部の第3の演算回路は前記メモリから前記送信開始を示す情報を読み出し、前記伝送路を通じて前記第4の演算回路に引き渡す請求項2から5のいずれか1項に記載の情報処理装置。 - 前記抑止する手段は、前記書き込む手段によって前記第1のキャッシュメモリに前記送信データが書き込まれた後に、前記第1のキャッシュメモリの使用を抑止し、前記読み出す手段によって前記送信データが読み出された後に、前記第1のキャッシュメモリの使用を抑止することを解除する請求項1に記載の情報処理装置。
- 前記第1の演算部は、前記送信データのデータ量を取得し、前記データ量の送信データを所定の書き込み量の単位で前記第1のキャッシュメモリを介して前記第2の演算部に転送する制御手段をさらに備える請求項1または8に記載の情報処理装置。
- 前記制御手段は、前記第1のキャッシュメモリへの書き込み量をメモリ上で指定し、前記書き込み量の送信データを前記第1のキャッシュメモリに書き込み、前記第1のキャッシュメモリの使用を抑止し、前記送信データの前記第2の演算部での読み出し完了を確認し、前記読み出し完了が確認できたときに前記第1のキャッシュメモリの使用を抑止することを解除する請求項9に記載の情報処理装置。
- 第1の演算回路および第2の演算回路を備える第1の演算部と、前記第1の演算部と接続され、かつ第3の演算回路および第4の演算回路を備える第2の演算部と、を有する情報処理装置が実行する方法であって、
前記第1の演算部は、
前記第2の演算回路において入出力されるデータを前記第2の演算回路以外の回路が有するデータとの整合性を維持する手順にしたがって保持する第1のキャッシュメモリを有し、
前記第4の演算回路への送信データの送信開始を示す情報を前記第2の演算部に送信し、
前記第1のキャッシュメモリに前記送信データを書き込み、
前記送信データ以外のデータによって前記第1のキャッシュメモリが使用されることを抑止し、
前記第2の演算部は
前記第4の演算回路において入出力されるデータを前記第4の演算回路以外の回路が有するデータとの整合性を維持する手順にしたがって保持する第2のキャッシュメモリを有し、
前記送信開始を示す情報を受信した場合において、前記第2のキャッシュメモリを介して前記送信データを読み出す、ことを特徴とする情報処理方法。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2017146481A JP6907787B2 (ja) | 2017-07-28 | 2017-07-28 | 情報処理装置および情報処理方法 |
| US16/046,018 US10761843B2 (en) | 2017-07-28 | 2018-07-26 | Information processing device and information processing method |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2017146481A JP6907787B2 (ja) | 2017-07-28 | 2017-07-28 | 情報処理装置および情報処理方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2019028662A JP2019028662A (ja) | 2019-02-21 |
| JP6907787B2 true JP6907787B2 (ja) | 2021-07-21 |
Family
ID=65038593
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2017146481A Expired - Fee Related JP6907787B2 (ja) | 2017-07-28 | 2017-07-28 | 情報処理装置および情報処理方法 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US10761843B2 (ja) |
| JP (1) | JP6907787B2 (ja) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11194753B2 (en) * | 2017-09-01 | 2021-12-07 | Intel Corporation | Platform interface layer and protocol for accelerators |
Family Cites Families (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP4409619B2 (ja) * | 2006-02-24 | 2010-02-03 | 富士通株式会社 | 情報処理装置、制御装置および制御方法 |
| JP5625536B2 (ja) * | 2010-06-24 | 2014-11-19 | 富士通株式会社 | キャッシュ装置、及び情報処理装置 |
| US9645866B2 (en) * | 2010-09-20 | 2017-05-09 | Qualcomm Incorporated | Inter-processor communication techniques in a multiple-processor computing platform |
| US8982140B2 (en) * | 2010-09-24 | 2015-03-17 | Nvidia Corporation | Hierarchical memory addressing |
| JP6040840B2 (ja) * | 2013-03-29 | 2016-12-07 | 富士通株式会社 | 演算処理装置、情報処理装置及び情報処理装置の制御方法 |
| WO2017010004A1 (ja) | 2015-07-16 | 2017-01-19 | 株式会社東芝 | メモリコントローラ、情報処理装置および処理装置 |
-
2017
- 2017-07-28 JP JP2017146481A patent/JP6907787B2/ja not_active Expired - Fee Related
-
2018
- 2018-07-26 US US16/046,018 patent/US10761843B2/en active Active
Also Published As
| Publication number | Publication date |
|---|---|
| US10761843B2 (en) | 2020-09-01 |
| US20190034200A1 (en) | 2019-01-31 |
| JP2019028662A (ja) | 2019-02-21 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP4158486B1 (en) | Computer memory expansion device and method of operation | |
| US6571321B2 (en) | Read exclusive for fast, simple invalidate | |
| US8176261B2 (en) | Information processing apparatus and data transfer method | |
| US5878268A (en) | Multiprocessing system configured to store coherency state within multiple subnodes of a processing node | |
| TWI506433B (zh) | 監測過濾機構 | |
| US9208091B2 (en) | Coherent attached processor proxy having hybrid directory | |
| US20030217238A1 (en) | Data pend mechanism | |
| US12197331B2 (en) | Hardware coherence signaling protocol | |
| CN115858420B (zh) | 用于支持多处理器架构的系统缓存架构和芯片 | |
| US11782848B2 (en) | Home agent based cache transfer acceleration scheme | |
| US6493809B1 (en) | Maintaining order of write operations in a multiprocessor for memory consistency | |
| US11409656B2 (en) | Semiconductor device | |
| JPH08249231A (ja) | マルチプロセッサ・システムにおける古いデータの処理システム及び方法 | |
| JP6907787B2 (ja) | 情報処理装置および情報処理方法 | |
| US20130339624A1 (en) | Processor, information processing device, and control method for processor | |
| US9910778B2 (en) | Operation processing apparatus and control method of operation processing apparatus | |
| US7797495B1 (en) | Distributed directory cache | |
| CN116194899A (zh) | 用于高速缓存行逐出的多级高速缓存一致性协议 | |
| US20040128451A1 (en) | Power/performance optimized caches using memory write prevention through write snarfing | |
| US20250390432A1 (en) | Cache coherency management in multi-level coherent system | |
| JP7764605B2 (ja) | キャッシュ、キャッシュ管理方法および電子機器 | |
| CN112955877A (zh) | 修改存储数据的装置和方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200514 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20210331 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210406 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210520 |
|
| 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: 20210601 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20210614 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 6907787 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| LAPS | Cancellation because of no payment of annual fees |