JP5446719B2 - 演算処理装置及び演算処理方法 - Google Patents

演算処理装置及び演算処理方法 Download PDF

Info

Publication number
JP5446719B2
JP5446719B2 JP2009243399A JP2009243399A JP5446719B2 JP 5446719 B2 JP5446719 B2 JP 5446719B2 JP 2009243399 A JP2009243399 A JP 2009243399A JP 2009243399 A JP2009243399 A JP 2009243399A JP 5446719 B2 JP5446719 B2 JP 5446719B2
Authority
JP
Japan
Prior art keywords
address
cache
store instruction
vector
vector store
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
Application number
JP2009243399A
Other languages
English (en)
Other versions
JP2011090492A (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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2009243399A priority Critical patent/JP5446719B2/ja
Publication of JP2011090492A publication Critical patent/JP2011090492A/ja
Application granted granted Critical
Publication of JP5446719B2 publication Critical patent/JP5446719B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Description

本発明は、スカラプロセッサとベクトルプロセッサとを含む演算処理装置及びその演算処理方法に関するもので、特に、ベクトルストア命令(VST)実行時における、後続のL1−キャッシュに対するスカラロード命令(LDS)のキャッシュミス検出を高速化するものに係わる。
図7に示すように、スカラプロセッサ101とベクトルプロセッサ102とを含む演算処理装置では、スカラプロセッサ101専用のL1−キャッシュ(一次キャッシュ)103と、スカラプロセッサ101とベクトルプロセッサ102とで共用のL2−キャッシュ(二次キャッシュ)104とを備えている。そして、ベクトルストア命令(VST)が実行されると、ベクトルプロセッサ102内のベクトルレジスタ121の複数のデータは、一度に、L2−キャッシュ104又はメモリ105の指定されたアドレスに格納される。
このような演算処理装置においては、L1−キャッシュ103はスカラプロセッサ101専用であり、L1−キャッシュ103にはベクトルストア命令(VST)のデータは格納されないため、ベクトルストア命令(VST)が実行されたときに、L2−キャッシュ104又はメモリ105のデータは更新されるが、L1−キャッシュ103のデータは更新されないことになり、ベクトルストア命令の実行後に、L1−キャッシュ103のデータと、L2−キャッシュ104又はメモリ105のデータとの一貫性がなくなる可能性がある。このため、スカラプロセッサ101内では、L1−キャッシュ103に残っている更新前の古いデータが使用されてしまう可能性がある。
これを防ぐために、このような演算処理装置には、スヌープ処理回路111が設けられている。スヌープ処理回路111は、スカラプロセッサ101内でベクトルストア命令(VST)がデータを更新するアドレスを計算し、計算したベクトルストア命令(VST)のアドレスと同一アドレスのデータがL1−キャッシュ103に保持されていた場合には、そのデータを無効化することにより、L1−キャッシュ103のデータと、L2−キャッシュ104又はメモリ5とのデータとの一貫性を保つものである(例えば特許文献1、特許文献2)。
つまり、ベクトル長(VL)個のベクトルストア命令(VST)のアドレスは、ベースアドレスをB、ディスタンスをDとしたとき、B、B+D、B+2D、…、B+D×(VL−1)として計算することができる。そこで、スヌープ処理回路111は、このようにして計算されたベクトルストア命令(VST)のアドレスと、L−1キャッシュ103のアドレスとを比較し、計算されたベクトルストア命令(VST)のアドレスと、L−1キャッシュ103のアドレスとが一致したときには、L−1キャッシュは無効化する。これにより、L1−キャッシュ103のデータと、L2−キャッシュ104又はメモリ5とのデータとの一貫性を保つことができる。
特開昭61−184684号公報 特開昭63−65546号公報
しかしながら、このような演算処理装置では、スヌープ処理中にL1−キャッシュ103に対するスカラロード命令(LDS)の実行要求があった場合、スヌープ処理によってスカラロード命令(LDS)がアクセスするアドレスのデータが無効化される可能性があるので、スカラロード命令(LDS)の実行は先行するベクトルストア命令(VST)のスヌープ処理の完了を待つ必要がある。
ベクトルストア命令(VST)は1つの命令で多くのデータを扱うため、スヌープ処理の完了には時間がかかる。さらに、複数のベクトルストア命令(VST)に先行されたスカラロード命令(LDS)は、全ての先行するベクトルストア命令(VST)のスヌープ処理の完了を待つので、その分、スカラロード命令(LDS)の実行が遅れてしまう。その結果、スカラロード命令(LDS)に依存する命令の実行が遅れたり、後続の命令がスカラプロセッサ101内に滞留し効率が低下したりする。
また、特許文献1及び特許文献2には、ベクトルストア命令(VST)をベクトル部に発行すると、ベクトルストアアドレス領域を計算してバッファに記憶し、スカラロード命令(LDS)発行要求があった場合、スカラロード命令(LDS)のアドレスがベクトルストア命令(VST)のアドレス領域内になければ、キャッシュにアクセスし、ベクトルストア命令(VST)のアドレス領域内にあれば、キャッシュミスと判定し主記憶にアクセスするものが記載されている。
このように、特許文献1及び特許文献2に示されるものでは、スカラロード命令(LDS)発行要求時に、アドレスがベクトルストア命令(VST)のアドレス開始からアドレス終了までのアドレス領域を設定している。ところが、ベクトルストア命令(VST)のアドレス領域内にスカラロード命令(LDS)があっても、キャッシュミスが起こらない場合も考えられる。例えば、ベクトルストア命令(VST)のアドレスがB、B+D、B+2D、…、B+D×(VL−1)であるとき、アドレス(B+1)は、ベクトルストア命令(VST)のアドレス領域内にはあるが、このアドレスにはベクトルストア命令(VST)のデータは格納されない。したがって、スカラロード命令(LDS)のアドレスが(B+1)であっても、キャッシュミスにはならない。特許文献1及び特許文献2に示されるものでは、ベクトルストア命令(VST)のアドレス開始からアドレス終了までのアドレス領域を設定しているので、本来、キャッシュヒットするアドレスにもかかわらず、キャッシュミスとして、主記憶にアクセスされる可能性がある。
上述の課題を鑑み、本発明は、スカラプロセッサとベクトルプロセッサとを含む演算処理装置で、ベクトルストア命令(VST)実行時における後続のL1−キャッシュに対するスカラロード命令(LDS)のキャッシュミス検出を高速化できるようにした、演算処理装置及び演算処理方法を提供することを目的とする。
上述の課題を解決するために、本発明は、スカラプロセッサと、ベクトルプロセッサと、スカラプロセッサ専用の一次キャッシュと、スカラプロセッサとベクトルプロセッサとで共用の二次キャッシュ又はメモリとを有する演算処理装置であって、ベクトルストア命令のアドレスを計算し、計算したベクトルストア命令のアドレスと一次キャッシュのアドレスとを比較し、計算したベクトルストア命令のアドレスと一次キャッシュのアドレスとが一致したときには、一次キャッシュを無効にするスヌープ処理手段と、スヌープ処理中に発行されたスカラロード命令のアドレスと、計算したベクトルストア命令のアドレスとを比較し、スカラロード命令のアドレスと計算したベクトルストア命令のアドレスとが一致したら、キャッシュミスが生じると判定するキャッシュミス検出手段とを備えたことを特徴とする。
本発明は、スカラプロセッサと、ベクトルプロセッサと、スカラプロセッサ専用の一次キャッシュと、スカラプロセッサとベクトルプロセッサとで共用の二次キャッシュ又はメモリとを有する演算処理方法であって、ベクトルストア命令のアドレスを計算し、計算したベクトルストア命令のアドレスと一次キャッシュのアドレスとを比較し、計算したベクトルストア命令のアドレスと一次キャッシュのアドレスとが一致したときには、一次キャッシュを無効にするスヌープ処理を行う工程と、スヌープ処理中にスカラロード命令があるかどうかを判定し、スヌープ処理中にスカラロード命令があれば、スカラロード命令のアドレスと、計算したベクトルストア命令のアドレスとを比較し、スカラロード命令のアドレスと計算したベクトルストア命令のアドレスとが一致したら、キャッシュミスが生じると判定する工程とを含むことを特徴とする。
本発明によれば、スヌープ処理中に発行されたスカラロード命令のアドレスと、計算したベクトルストア命令のアドレスとを比較し、スカラロード命令のアドレスと計算したベクトルストア命令のアドレスとが一致したら、キャッシュミスが生じると判定して、L2−キャッシュ又はメモリにデータ転送要求を行っている。これにより、スカラロード命令がキャッシュミスする場合に、スヌープ処理の完了を待つことなく、より早いタイミングでデータ転送要求を発行できる。
本発明の第1の実施形態の演算処理装置の説明に用いるブロック図である。 本発明の第1の実施形態の演算処理装置におけるスヌープ処理回路及びLDSキャッシュミス検出回路の説明に用いるブロック図である。 本発明の第1の実施形態におけるスヌープ処理の動作を示すフローチャートである。 本発明の第1の実施形態におけるスカラロード命令の処理を示すフローチャートである。 本発明の第1の実施形態の動作説明に用いるタイムチャートである。 LDSキャッシュミス検出回路がない場合の動作説明に用いるタイムチャートである。 本発明に関連する演算処理装置の説明に用いるブロック図である。
以下、本発明の実施の形態について図面を参照しながら説明する。図1に示すように、本発明の第1の実施形態の演算処理装置は、スカラプロセッサ1と、ベクトル(又はSIMD(Single Instruction Multiple Data))プロセッサ2と、L1−キャッシュ3と、L2−キャッシュ4と、メモリ5とを含む。
L1−キャッシュ3は、スカラプロセッサ1専用の一次キャッシュである。L2−キャッシュ4は、スカラプロセッサ1とベクトルプロセッサ2とで共用の二次キャッシュである。ベクトルストア命令(VST)が実行されると、ベクトルプロセッサ2内のベクトルレジスタ21の複数のデータは、一度に、L2−キャッシュ4、又は、メモリ5の指定されたアドレスに格納される。また、スカラロード命令(LDS)のデータは、L1−キャッシュ3に格納される。
本発明の第1の実施形態では、スカラプロセッサ1は、スヌープ処理回路11を有していると共に、LDSキャッシュミス検出回路6を備えている。
スヌープ処理回路11は、ベクトルストア命令(VST)のアドレスを計算し、計算したベクトルストア命令(VST)のアドレスと、L−1キャッシュ3に蓄積されているデータのアドレスとを比較し、ベクトルストア命令(VST)のアドレスとL−1キャッシュ3のアドレスとが一致したときには、L−1キャッシュ3を無効化することで、データの一貫性を保つものである。
LDSキャッシュミス検出回路6は、スヌープ処理中にスカラロード命令が発行されたら、ベクトルストア命令(VST)のアドレス計算の結果と、そのスカラロード命令(LDS)のアドレスとを比較し、アドレスが一致した場合には、そのスカラロード命令(LDS)がキャッシュミスを発生させるとし、L2−キャッシュ4又はメモリ5にデータ転送要求を発行するものである。本発明の第1の実施形態では、このようなLDSキャッシュミス検出回路6を設けることにより、スカラロード命令(LDS)がキャッシュミスする場合に、より早いタイミングで、L2−キャッシュ4又はメモリ5にデータ転送要求を発行できる。
図2は、本発明の第1の実施形態におけるスヌープ処理回路11及びLDSキャッシュミス検出回路6の詳細を示すものである。図2に示すように、スヌープ処理回路11は、VST用バッファ51と、アドレス加算器52と、アドレスアレイ53とを有している。
VST用バッファ51は、発行済みのベクトルストア命令(VST)のうちスヌープ処理が完了していないものを保持している。VST用バッファ51はFIFO(First−In First−Out)で、先行するベクトルストア命令(VST)がより先頭側に格納される。この例では、VST用バッファ51は、ベクトルストア命令(VST)を4命令分まで保持できるように4エントリとし、それぞれのベースアドレスBと、ディスタンスDと、ベクトル長VLとを記憶している。
アドレス加算器52は、ベクトルストア命令(VST)のアドレスを計算する。ベクトルストア命令(VST)のアドレスは、ベースアドレスをB、ディスタンスをD、ベクトル長をVLとすると、B、B+D、B+2D、…、B+D×(VL−1)として計算できる。アドレス加算器52は、VST用バッファ51に記憶されているベースアドレスBと、ディスタンスDと、ベクトル長VLとから、上述のようにして、ベクトルストア命令(VST)のアドレスを計算する。この例では、スヌープ処理を8並列とするために、アドレス加算器52は8個の加算器からなる。
アドレスアレイ53は、アドレス加算器52のアドレス計算結果から、ベクトルストア命令(VST)のアドレスと、L1−キャッシュ3に蓄積されているデータのアドレスとを比較し、ベクトルストア命令(VST)のデータのアドレスと、L1−キャッシュ3に蓄積されているデータのアドレスとが一致している場合には、L1−キャッシュ3を無効化して、スヌープ処理を行う。この例では、スヌープ処理を8並列とするために、アドレスアレイ53は8個のアレイからなる。
LDSキャッシュミス検出回路6は、未実行LDS用バッファ61と、アドレス比較器62、63、64、65を有している。未実行LDS用バッファ61は、スヌープ処理中に発行された未実行のスカラロード命令(LDS)のアドレスを記憶する。この例では、未実行LDS用バッファ61は、未実行のスカラロード命令(LDS)のアドレスを4命令分まで保持できるように、4エントリとしている。
アドレス比較器62〜65は、アドレス加算器52で計算したベクトルストア命令(VST)のアドレスと、未実行LDS用バッファ61に保持している未実行のスカラロード命令(LDS)のアドレスとを比較する。この例では、アドレス比較器62、63、64、65は、8つのベクトルストア命令(VST)のアドレスと4命令分のスカラロード命令(LDS)のアドレスを比較するために、合計32個用意されている。
図2において、ベクトルストア命令(VST)がスカラプロセッサ1からベクトルプロセッサ2に発行されると、VST用バッファ51には、発行済みのベクトルストア命令(VST)のうち、スヌープ処理が完了していないベクトルストア命令(VST)のアドレスが格納される。
スヌープ処理中の他のベクトルストア命令(VST)が存在しない場合には、VST用バッファ51に蓄積されているベクトルストア命令(VST)に対して順にスヌープ処理が行われる。スヌープ処理では、VST用バッファ51のアドレスから、アドレス加算器52により、ベクトルストア命令(VST)のアドレスが計算される。そして、アドレスアレイ53で、L1−キャッシュ3にそのアドレスのデータが存在するかどうかがチェックされ、L1−キャッシュ3にそのアドレスのデータが存在する場合には、そのアドレスに対応するL1−キャッシュのエントリが無効化される。このようなスヌープ処理が完了すると、そのベクトルストア命令(VST)に関する情報は、VST用バッファ51から消去される。
スヌープ処理中のベクトルストア命令(VST)が存在している間に、後続のスカラロード命令(LDS)があると、LDSキャッシュミス検出回路6の未実行LDS用バッファ61に、スカラロード命令(LDS)のアドレスが記憶される。そして、アドレス比較器62、63、64、65により、アドレス加算器52により計算されたベクトルストア命令(VST)のアドレスと、未実行LDS用バッファ61内のスカラロード命令(LDS)のアドレスとが比較される。
ここで、アドレス加算器52により計算されたベクトルストア命令(VST)のアドレスと、未実行LDS用バッファ61内のスカラロード命令(LDS)のアドレスとが一致していれば、そのアドレスのデータは、キャッシュミスを起こすと判定できる。そこで、アドレス比較器62、63、64、65によりアドレスの一致が検出された場合には、その時点で、そのスカラロード命令(LDS)に対するデータ転送要求がL2−キャッシュ4(又はメモリ5)に発行される。
図3は、本発明の第1の実施形態におけるスヌープ処理の動作を示すフローチャートである。図3において、ベクトルストア命令(VST)がスカラプロセッサ1からベクトルプロセッサ2に発行されると(ステップA1)、VST用バッファ51は、発行済みのベクトルストア命令(VST)のうち、スヌープ処理が完了していないベクトルストア命令(VST)のベースアドレスBと、ディスタンスDと、ベクトル長VLを格納する(ステップA2)。
次に、スヌープ処理回路11は、VST用バッファ51の先頭に格納されるベクトルストア命令(VST)があるかどうか、つまりスヌープ処理中の他のベクトルストア命令(VST)があるかどうかを判定し(ステップA3)、スヌープ処理中の他のベクトルストア命令(VST)がない場合には、スヌープ処理を開始する(ステップA4)。スヌープ処理中の先行するベクトルストア命令(VST)がある、つまりスヌープ処理中の他のベクトルストア命令(VST)がある場合には、スヌープ処理回路11は、その先行するベクトルストア命令(VST)のスヌープ処理が完了するまで、VST用バッファ51内でベクトルストア命令(VST)を待機させる。
ステップA4でスヌープ処理が開始されると、スヌープ処理回路11は、アドレス加算器52で、VST用バッファ51内のベースアドレスB、ディスタンスD、ベクトル長VLを用い、ベクトルストア命令(VST)のアドレスB、B+D、B+2D、…、B+D×(VL−1)の計算を1サイクルあたり8つずつ計算し、アドレス加算器52で計算した8つのアドレスを用いて、同じく8つあるアドレスアレイ53にそれぞれアクセスし、L1−キャッシュ3にそのアドレスのデータが存在するかチェックし、L1−キャッシュ3にそのアドレスのデータが存在する場合には、そのアドレスに対応するL1−キャッシュのエントリを無効化する。この処理がアドレスB+D×(VL−1)まで繰り返されると、スヌープ処理は完了する。
スヌープ処理回路11は、スヌープ処理が完了したかどうかを判定し(ステップA5)、スヌープ処理が完了すると、そのベクトルストア命令(VST)に関する情報をVST用バッファ51から消去する。このとき、VST用バッファ51内に待機中のベクトルストア命令(VST)があれば、スヌープ処理回路11は、そのベクトルストア命令(VST)に関する情報をVST用バッファ51の先頭側へ移動させ、VST用バッファ51の先頭のベクトルストア命令(VST)のスヌープ処理を開始する(ステップA6)。
図4は、本発明の第1の実施形態におけるスカラロード命令(LDS)の処理を示すフローチャートである。図4において、スカラロード命令(LDS)の実行要求があると(ステップB1)、VST用バッファ51内が空かどうかにより、スヌープ処理中のベクトルストア命令(VST)が存在するかどうかを判定する(ステップB2)。VST用バッファ51が空で、スヌープ処理中のベクトルストア命令(VST)が存在しなければ、L1−キャッシュ4にアクセスし(ステップB3)、L1−キャッシュ4がヒットしたかどうかを判定し(ステップB4)、L1−キャッシュ4がヒットしたら、L1−キャッシュ4からデータを取得し(ステップB5)、L1−キャッシュ4がヒットしなければ、L2−キャッシュにデータ転送要求を行う(ステップB6)。
ステップB2で、VST用バッファ51が空ではなく、VST用バッファ51内にスヌープ処理中のベクトルストア命令(VST)が存在する場合には、LDSキャッシュミス検出回路6は、未実行LDS用バッファ61に、未実行のスカラロード命令(LDS)のアドレスを記憶する(ステップC1)。そして、LDSキャッシュミス検出回路6は、アドレス加算器52から出力されるベクトルストア命令(VST)のアドレス計算結果と、未実行LDS用バッファ61内の未実行のスカラロード命令(LDS)のアドレスとを比較し、その結果が一致するかどうかを判定する(ステップC2)。ベクトルストア命令(VST)のアドレス計算結果と未実行LDS用バッファ61内の未実行のスカラロード命令(LDS)のアドレスとが一致すれば、LDSキャッシュミス検出回路6は、その時点でそのスカラロード命令(LDS)はキャッシュミスを起こすとして、L2−キャッシュ4にデータ転送要求を発行する(ステップC3)。ベクトルストア命令(VST)のアドレス計算結果と未実行LDS用バッファ61内の未実行のスカラロード命令(LDS)のアドレスとが一致しなければ、LDSキャッシュミス検出回路6は、処理をステップB2に戻し、VST用バッファ51内が空でなければ、次のサイクルでも同様に、未実行LDS用バッファ61内のアドレスとアドレス加算器52から出力されるアドレスと比較する(ステップC2)。この処理を繰り返し、VST用バッファ51内の全てのベクトルストア命令(VST)のスヌープ処理が完了するまでアドレスが一致しなければ、L1−キャッシュ3にアクセスをする(ステップB3)。
次に、本発明の第1の実施形態の効果について、タイムチャートを比較しながら説明する。上述のように、本発明の第1の実施形態では、ベクトルストア命令(VST)のスヌープ処理中に、後続の未実行のスカラロード命令(LDS)があると、LDSキャッシュミス検出回路6により、アドレス加算器52から出力されるベクトルストア命令(VST)のアドレス計算結果と、未実行LDS用バッファ61内の未実行のスカラロード命令(LDS)のアドレスとを比較することで、キャッシュミスが起こるかどうかを判定し、キャッシュミスする場合に、より早いタイミングでデータ転送要求を発行できる。図5は、このような本発明の第1の実施形態の処理を示すタイムチャートである。
図5において、今、ベクトルストア命令(VST1)、ベクトルストア命令(VST2)、ベクトルストア命令(VST3)、スカラロード命令(LDS1)、スカラロード命令(LDS2)という順番の命令列があり、ベクトルストア命令がL2−キャッシュ4及びメモリ5に格納するデータの要素数VLが256個であったとする。なお、スカラロード命令(LDS1)のアドレスは、ベクトルストア命令(VST1)、ベクトルストア命令(VST2)、ベクトルストア命令(VST3)の何れのアドレスとも一致しないものとする。スカラロード命令(LDS2)のアドレスは、ベクトルストア命令(VST2)のアドレスと一致するものとする。
ベクトルストア命令(VST1)がスカラプロセッサ1からベクトルプロセッサ2に発行されると、スヌープ処理回路11には、VST用バッファ51にベクトルストア命令(VST1)のベースアドレスB、ディスタンスD、ベクトル長VLが格納される。これと共に、処理D01で示すように、アドレス加算器52により、ベクトルストア命令(VST1)のアドレスが計算され、スヌープ処理が開始される。このベクトルストア命令(VST1)に関するスヌープ処理は、256要素分を8並列で行うため、32サイクル程度必要になる。
ベクトルストア命令(VST2)及びベクトルストア命令(VST3)が発行されると、VST用バッファ51に、ベクトルストア命令(VST2)及びベクトルストア命令(VST3)のベースアドレスB、ディスタンスD、ベクトル長VLが格納されるが、処理D01の期間では、ベクトルストア命令(VST1)のスヌープ処理中であるため、ベクトルストア命令(VST2)及びベクトルストア命令(VST3)のスヌープ処理は、処理D02及び処理D03で示すように、ベクトルストア命令(VST1)のスヌープ処理が完了してから、開始される。ベクトルストア命令(VST2)及びベクトルストア命令(VST3)も、ベクトル長VLが256であるので、それぞれ、32サイクル程度必要であり、ベクトルストア命令(VST1)、ベクトルストア命令(VST2)、ベクトルストア命令(VST3)のスヌープ処理には合わせて96サイクル程度必要になる。
ここで、ベクトルストア命令(VST1)のスヌープ処理を行っている間に、スカラロード命令(LDS1)と、スカラロード命令(LDS2)の実行要求があったとする。このとき、VST用バッファ51内にはスヌープ処理中のベクトルストア命令が存在するので、スカラロード命令(LDS1)とスカラロード命令(LDS2)のアドレスが未実行LDS用バッファ61に格納される。そして、処理D04で示すように、アドレス加算器52で計算されたアドレスと、スカラロード命令(LDS1)のアドレスとが比較され、また、処理D05で示すように、アドレス加算器52で計算されたアドレスと、スカラロード命令(LDS2)のアドレスとが比較される。
ここで、処理D01が行われている間では、アドレス加算器52からはベクトルストア命令(VST1)のアドレスが出力され、処理D02が行われている間では、アドレス加算器52からはベクトルストア命令(VST2)のアドレスが出力され、処理D03が行われている間では、アドレス加算器52からはベクトルストア命令(VST3)のアドレスが出力される。
スカラロード命令(LDS1)のアドレスは、ベクトルストア命令(VST1)、ベクトルストア命令(VST2)、ベクトルストア命令(VST3)の何れのアドレスとも一致しない。このため、処理D01〜D03でスヌープ処理が完了するまで、アドレス加算器52の出力とスカラロード命令(LDS1)のアドレスとが一致することはなく、スヌープ処理が完了すると、処理D08で、L1−キャッシュ3がアクセスされ、この例ではキャッシュにヒットしているため、処理D09で、L1−キャッシュ3からデータが取得される。
一方、スカラロード命令(LDS2)のアドレスは、ベクトルストア命令(VST2)のアドレスと一致しているので、ベクトルストア命令(VST2)のスヌープ処理中の処理D06で、アドレス加算器52の出力とスカラロード命令(LDS2)のアドレスとのアドレスの一致が検出される。処理D06でアドレスの一致が検出されると、キャッシュミスを起こすとして、処理D07で、データ転送要求がL2−キャッシュ4に発行される。
次に、本発明の第1の実施形態のLDSキャッシュミス検出回路6がない場合について説明する。LDSキャッシュミス検出回路6がないときには、ベクトルストア命令(VST)のスヌープ処理中のスカラロード命令(LDS)があった場合には、スヌープ処理を待ってスカラロード命令(LDS)に対する処理を行う必要がある。つまり、LDSキャッシュミス検出回路6がない場合の処理のタイムチャートは、図6に示すようになる。
図6において、ベクトルストア命令(VST1)がスカラプロセッサ1からベクトルプロセッサ2に発行されると、処理D11で示すように、ベクトルストア命令(VST1)のデータのアドレスが計算され、スヌープ処理が開始される。
ベクトルストア命令(VST1)のスヌープ処理が完了してから、処理D12及び処理D13で、ベクトルストア命令(VST2)及びベクトルストア命令(VST3)のスヌープ処理が行われる。
ここで、ベクトルストア命令(VST1)のスヌープ処理を行っている間に、スカラロード命令(LDS1)と、スカラロード命令(LDS2)の実行要求があったとする。このスカラロード命令(LDS1)及びスカラロード命令(LDS2)は、ベクトルストア命令(VST1〜VST3)のスヌープ処理が完了するまで、待機される。
処理D11〜D13で、ベクトルストア命令(VST1〜VST3)のスヌープ処理が完了すると、処理D14で、L1−キャッシュ3がアクセスされ、スカラロード命令LDS1に対する処理が行われる。スカラロード命令LDS1は、L1−キャッシュ3にヒットしているので、処理D15で、L1−キャッシュ3からデータが取得される。
次に、処理D16で、L1−キャッシュ3がアクセスされ、スカラロード命令(LDS2)に対する処理が行われる。スカラロード命令(LDS2)は、キャッシュミスになるので、処理D17で示すように、データ転送要求がL2−キャッシュ4に発行される。
図5と図6とを比較すると、LDSキャッシュミス検出回路6を設けない場合には、スカラロード命令(LDS1)及びスカラロード命令(LDS2)に対する処理(D14〜D17)は、スヌープ処理の完了を待つ必要がある。これに対して、本発明の第1の実施形態では、処理D06及び処理D07で示すように、スカラロード命令(LDS2)がキャッシュミスする場合に、より早いタイミングでデータ転送要求を発行できる。
また、本発明の第1の実施形態では、ベクトルストア命令(VST)のアドレスの開始から終了までのアドレス領域内にスカラロード命令(LDS)があるかどうかではなく、ベクトルストア命令(VST)のアドレスと、スカラロード命令(LDS)のアドレスとを比較している。このため、キャッシュミスにならないにもかかわらず、キャッシュミスと判定されることがなくなり、L2−キャッシュ4やメモリ5への余分なアクセスの発生が防止できる。
本発明は、上述した実施形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
1:スカラプロセッサ
2:ベクトルプロセッサ
3:L1−キャッシュ
4:L2−キャッシュ
5:メモリ
6:キャッシュミス検出回路
8:スヌープ処理を
11:スヌープ処理回路
21:ベクトルレジスタ
51:VST用バッファ
52:アドレス加算器
53:アドレスアレイ
61:未実行LDS用バッファ
62〜65:アドレス比較器

Claims (6)

  1. スカラプロセッサと、ベクトルプロセッサと、前記スカラプロセッサ専用の一次キャッシュと、前記スカラプロセッサと前記ベクトルプロセッサとで共用の二次キャッシュ又はメモリとを有する演算処理装置であって、
    ベクトルストア命令のアドレスを計算し、前記計算したベクトルストア命令のアドレスと前記一次キャッシュのアドレスとを比較し、前記計算したベクトルストア命令のアドレスと前記一次キャッシュのアドレスとが一致したときには、前記一次キャッシュを無効にするスヌープ処理手段と、
    前記スヌープ処理中に発行されたスカラロード命令のアドレスと、前記計算したベクトルストア命令のアドレスとを比較し、前記スカラロード命令のアドレスと前記計算したベクトルストア命令のアドレスとが一致したら、キャッシュミスが生じると判定するキャッシュミス検出手段と
    を備えたことを特徴とする演算処理装置。
  2. 前記キャッシュミス検出手段は、前記キャッシュミスを検知したら、前記二次キャッシュ又は前記メモリにデータ転送要求を発行することを特徴とする請求項1に記載の演算処理装置。
  3. 前記ベクトルストア命令のアドレスは、ベースアドレスをB、ディスタンスをD、ベクトル長をVLとすると、B、B+D、B+2D、…、B+D×(VL−1)として計算することを特徴とする請求項1又は2に記載の演算処理装置。
  4. スカラプロセッサと、ベクトルプロセッサと、前記スカラプロセッサ専用の一次キャッシュと、前記スカラプロセッサと前記ベクトルプロセッサとで共用の二次キャッシュ又はメモリとを有する演算処理方法であって、
    ベクトルストア命令のアドレスを計算し、前記計算したベクトルストア命令のアドレスと前記一次キャッシュのアドレスとを比較し、前記計算したベクトルストア命令のアドレスと前記一次キャッシュのアドレスとが一致したときには、前記一次キャッシュを無効にするスヌープ処理を行う工程と、
    前記スヌープ処理中にスカラロード命令があるかどうかを判定し、前記スヌープ処理中にスカラロード命令があれば、前記スカラロード命令のアドレスと前記計算したベクトルストア命令のアドレスとを比較し、前記スカラロード命令のアドレスと前記計算したベクトルストア命令のアドレスとが一致したら、キャッシュミスが生じると判定する工程と
    を含むことを特徴とする演算処理方法。
  5. 前記キャッシュミスを検知したら、前記二次キャッシュ又は前記メモリにデータ転送要求を発行することを特徴とする請求項4に記載の演算処理方法。
  6. 前記ベクトルストア命令のアドレスは、ベースアドレスをB、ディスタンスをD、ベクトル長をVLとすると、B、B+D、B+2D、…、B+D×(VL−1)として計算することを特徴とする請求項4又は5に記載の演算処理方法。
JP2009243399A 2009-10-22 2009-10-22 演算処理装置及び演算処理方法 Expired - Fee Related JP5446719B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009243399A JP5446719B2 (ja) 2009-10-22 2009-10-22 演算処理装置及び演算処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009243399A JP5446719B2 (ja) 2009-10-22 2009-10-22 演算処理装置及び演算処理方法

Publications (2)

Publication Number Publication Date
JP2011090492A JP2011090492A (ja) 2011-05-06
JP5446719B2 true JP5446719B2 (ja) 2014-03-19

Family

ID=44108690

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009243399A Expired - Fee Related JP5446719B2 (ja) 2009-10-22 2009-10-22 演算処理装置及び演算処理方法

Country Status (1)

Country Link
JP (1) JP5446719B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7218556B2 (ja) * 2018-12-06 2023-02-07 富士通株式会社 演算処理装置および演算処理装置の制御方法

Also Published As

Publication number Publication date
JP2011090492A (ja) 2011-05-06

Similar Documents

Publication Publication Date Title
US5490261A (en) Interlock for controlling processor ownership of pipelined data for a store in cache
US8190820B2 (en) Optimizing concurrent accesses in a directory-based coherency protocol
JP6011194B2 (ja) 演算処理装置及び演算処理装置の制御方法
US7640420B2 (en) Pre-fetch apparatus
US20020129208A1 (en) System for handling coherence protocol races in a scalable shared memory system based on chip multiprocessing
JP2002297379A (ja) ハードウェアプリフェッチシステム
JP2011118743A (ja) ベクトル型計算機及びベクトル型計算機の命令制御方法
WO2009054959A1 (en) Coherent dram prefetcher
US20110004731A1 (en) Cache memory device, cache memory system and processor system
JP2017191503A (ja) 演算処理装置、および演算処理装置の制御方法
TWI275992B (en) A method to reduce memory latencies by performing two levels of speculation
EP1942416B1 (en) Central processing unit, information processor and central processing method
US7519775B2 (en) Enforcing memory-reference ordering requirements at the L2 cache level
EP2339472A2 (en) Arithmetic processing unit, information processing device, and cache memory control method
JP5446719B2 (ja) 演算処理装置及び演算処理方法
JP6252348B2 (ja) 演算処理装置および演算処理装置の制御方法
JP4327237B2 (ja) プリフェッチ制御装置
JP2011081564A (ja) 制御装置、記憶装置、演算処理装置および制御方法
US7797491B2 (en) Facilitating load reordering through cacheline marking
US9201655B2 (en) Method, computer program product, and hardware product for eliminating or reducing operand line crossing penalty
JP4092112B2 (ja) 演算処理装置
CN117472803B (zh) 原子指令执行方法、装置及电子设备
JP5185478B2 (ja) パイプライン処理方法並びにその方法を利用するパイプライン処理装置
JP5828324B2 (ja) マルチプロセッサシステム、マルチプロセッサ制御方法、及びプロセッサ
JP6613874B2 (ja) 情報処理装置、演算処理装置および情報処理装置の制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120910

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131128

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131216

R150 Certificate of patent or registration of utility model

Ref document number: 5446719

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees