JP5971036B2 - 演算処理装置及び演算処理装置の制御方法 - Google Patents

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

Info

Publication number
JP5971036B2
JP5971036B2 JP2012190441A JP2012190441A JP5971036B2 JP 5971036 B2 JP5971036 B2 JP 5971036B2 JP 2012190441 A JP2012190441 A JP 2012190441A JP 2012190441 A JP2012190441 A JP 2012190441A JP 5971036 B2 JP5971036 B2 JP 5971036B2
Authority
JP
Japan
Prior art keywords
arithmetic processing
request
cache memory
state
target data
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.)
Active
Application number
JP2012190441A
Other languages
English (en)
Other versions
JP2014048829A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012190441A priority Critical patent/JP5971036B2/ja
Priority to US13/912,155 priority patent/US20140068192A1/en
Publication of JP2014048829A publication Critical patent/JP2014048829A/ja
Application granted granted Critical
Publication of JP5971036B2 publication Critical patent/JP5971036B2/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

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)

Description

本発明は、演算処理装置及び演算処理装置の制御方法に関する。
MESI(Modified、Exclusive、Shared、Invalid)ステートを採用したようなクリーンな状態で排他権を移譲できるキャッシュシステムがある。MESI方式における各ステートは、以下の通りである。M(Modified)ステートは、他の要求元は保持しておらず、キャッシュメモリが排他権付でデータを保持していることを示す。このデータは、下位キャッシュメモリ(又はメモリ)と異なるデータである。この状態から任意にストアを行ってデータを変更することができ、データを変更してもMステートのままである。Iステートになるときに下位キャッシュメモリ(又はメモリ)を保持していたデータで更新しなければならない(ライトバック)。
E(Exclusive)ステートは、他の要求元は保持しておらず、キャッシュメモリが排他権付でデータを保持していることを示す。このデータは、下位キャッシュメモリ(又はメモリ)と異なるデータである。この状態から任意にストアを行ってデータを変更することができ、データを変更するとMステートに変わる。S(Shared)ステートは、キャッシュメモリが排他権なしでデータを保持していることを示す。このデータは、下位キャッシュメモリ(又はメモリ)と同じ内容である。要求元が複数である場合、複数の要求元が同時にSステート(共有状態)となることができる。ストアを行うためには排他権を獲得し、Eステートにならなければならない。I(Invalid)ステートは、キャッシュメモリがデータを保持していないことを示す。
このようなキャッシュシステムにおいて、あるデータブロックがL2(Level−2)キャッシュメモリにEステート又はMステートで保持されており、どの要求元にも保持されていないとき、ある要求元からロード要求があった場合には要求元に「Eステートで応答する」、「Sステートで応答する」の2通りの方式がある。以下、演算部及びL1(Level−1)キャッシュメモリをそれぞれ有する複数の演算処理部としてのCPUコアを備え、各コアがL2(Level−2)キャッシュメモリを共有するシステムを例に説明する。要求元が各CPUコアであり、要求先がL2キャッシュメモリである。なお、以降の説明において、下位キャッシュメモリはEステートを保持した状態であるとする。
図16(A)は、最初に上位キャッシュメモリであるコア0(Core-0)のL1キャッシュメモリがロード要求(LD要求)を行い、それに対して下位キャッシュメモリであるL2キャッシュメモリがEステートで応答する例を示している。そして、次に、別の要求元であるコア1(Core-1)のL1キャッシュメモリが同じキャッシュラインにロード要求を発行すると、最初の要求元のコア0との間でSステートで応答するスヌープ(snoop)トランザクションが行われた後、データを共有する。この例では、スヌープトランザクションが発生するため、性能的に不利となる。
図17(A)は、最初に上位キャッシュメモリであるコア0のL1キャッシュメモリがロード要求を行い、それに対して下位キャッシュメモリであるL2キャッシュメモリがSステートで応答する例を示している。この場合には、図16(A)に示した例と異なり、次に別の要求元が同じキャッシュラインにロード要求を発行しても、最初の要求元との間でのスヌープトランザクションが発生せず、すぐにデータを共有することができる。図16(A)に示した例と比較して性能的に有利となる。
図18にフロー図を示すように、図16(A)に示した例では、図18(A)の時刻T101において演算器にデータが供給されるが、図17(A)に示した例では、時刻T101より前の図18(B)の時刻T102において演算器にデータが供給される。なお、図18(A)及び図18(B)において、Core-0 L1-pipeはコア0のL1キャッシュメモリのパイプライン処理を示し、Core-1 L1-pipeはコア1のL1キャッシュメモリのパイプライン処理を示す。また、L2-pipeはL2キャッシュメモリのパイプライン処理を示す。
しかし、図16(B)に示すように、最初にコア0のL1キャッシュメモリがロード要求を行い、それに対してL2キャッシュメモリがEステートで応答する場合には、次にそのコア0が同じキャッシュラインにストア要求(ST要求)を発行すると、コア0はEステートでデータを保持しているので直ちにストア処理を実行することができる。それに対して、図17(B)に示すように、最初にコア0のL1キャッシュメモリがロード要求を行い、それに対してL2キャッシュメモリがSステートで応答する場合には、次にそのコア0が同じキャッシュラインにストア要求を発行すると、コア0自体はデータをSステートで保持しているのでストア要求を発行する必要がある。
このように、それぞれ性能面からのトレードオフが存在するが、「どのコアも所持していない」状態において、あるコアがロード要求した場合には、そのコアのみが使用すると推定して「Eステートで応答する」設計とするのが一般的である。
プロセッサのデータ書き込み時にキャッシュメモリの変更フラグをセットし、プロセッサからのデータ読み出し時にキャッシュメモリの変更フラグのリセットを指示されるキャッシュメモリを有し、その変更フラグをリセットさせる特定の命令を設けたキャッシュメモリの制御方式が提案されている(例えば、特許文献1参照)。
特開平4−48358号公報
どのコアも保持していない状態で、あるコアからロード要求があったときにEステートで応答するとして設計した場合に問題になるのは、以下のようなケースである。複数のコアから何度も参照される場合において、リプレースされ一旦、どのコアも保持していない状態になるケースである。あるコアが保持していればSステートで応答されるために問題は発生しないが、コアでのキャッシュのリプレースが頻繁である場合に次のようなケースが発生する。図19及び図20を参照して説明する。
図19(A)に示すように、最初のコア0からのロード要求に対してEステートで応答し、次に、別のコア1が同じキャッシュラインにロード要求を発行すると、最初のコアとの間でスヌープトランザクションが行われた後、データを共有する。さらに、別のコア2が同じキャッシュラインにロード要求を発行すると、既にコア0とコア1との2個のコア間で共有状態にあるのでコア2に対してもSステートで応答する。このように、最初の1回だけスヌープトランザクションが発生して、それ以降は発生しないケースを想定すると、それほど問題はあらわれなく性能低下も少ない。
また、図19(B)に示すように、最初のコア0からのロード要求に対してEステートで応答し、データが演算に使用された後、同一インデックスの新規要求が発生するとリプレースが行われ、所持状態ではなくなる(Iステートとなる)。このように、どのコアも所持していない状態でコア2がロード要求を発行すると、どのコアも所持していないのでEステートで応答される。このような場合にも、スヌープトランザクションが発生しないので性能低下は発生しない。
それに対して、図20に示すように、最初のコア0からのロード要求に対してEステートで応答し、次に、別のコア1が同じキャッシュラインにロード要求を発行すると、最初のコアとの間でスヌープトランザクションが行われた後、データを共有する。そして、コア2が同じキャッシュラインにロード要求を発行する前に、データブロックを参照してから十分時間が経過したことによりリプレースによる無効化が発生した場合には、コア2に対してEステートで応答することになる。したがって、この状態で別のコア0やコア1から同じキャッシュラインにロード要求が発生すると、再びスヌープトランザクションが発生することになる。したがって、図19(A)及び図19(B)に示した例と比較して性能が低下する。前述のような異なる動作の発生条件はタイミング依存であり、このような些細なタイミングやCPUの動作条件による性能低下は一般的に余り好ましいものではない。
1つの側面では、本発明の目的は、下位キャッシュメモリに対するロード要求に対して適切なステートで要求元に応答し、演算処理装置の処理性能を向上させることにある。
演算処理装置の一態様は、データを保持する第1のキャッシュメモリを備え、演算処理を行うとともに要求を出力する複数の演算処理部と、第2のキャッシュメモリを有する。第2のキャッシュメモリは、複数の演算処理部が備える第1のキャッシュメモリのいずれもが保持しない対象データを要求する要求が、要求を送信した演算処理部以外の演算処理部にも対象データの保持を許容するとともに第1のキャッシュメモリに対象データを保持させるプリフェッチ要求である場合、対象データが非排他的データである旨を表示する非排他情報と対象データとを要求を送信した演算処理部に応答して第1のキャッシュメモリに対象データを保持させるとともにスヌープ処理の発生を抑制する。また、第2のキャッシュメモリは、複数の演算処理部が備える第1のキャッシュメモリのいずれもが保持しない対象データを要求する要求が、要求を送信した演算処理部以外の演算処理部には対象データの保持を許容しないプリフェッチ要求である場合、対象データが排他的データである旨を表示する排他情報と対象データとを要求を送信した演算処理部に応答して第1のキャッシュメモリに対象データを保持させる
発明の一態様においては、下位キャッシュメモリに対するロード要求に対して適切なステートで要求元に応答することができ、処理を削減し演算処理装置の処理性能を向上させることができる。
本発明の実施形態における演算処理装置の構成例を示す図である。 本実施形態におけるタグメモリに保持されるデータの構成例を示す図である。 本実施形態におけるヒット判定部の構成例を示す図である。 本実施形態における応答制御の例を示す図である。 本実施形態における応答制御の例を示す図である。 本実施形態における応答判定部の構成例を示す図である。 本実施形態における応答判定部の動作例を示す図である。 本実施形態における応答判定部の動作例を示す図である。 本実施形態における応答判定部の動作例を示す図である。 本実施形態を適用する処理の一例を示す図である。 本実施形態におけるロード要求LD(S)及びロード要求LD(E)の実装例を示す図である。 本実施形態におけるロード要求LD(S)及びロード要求LD(E)の他の実装例を示す図である。 本実施形態における動作の一例を示す図である。 図11(A)に示す例の動作フローを示す図である。 図20に示す例の動作フローを示す図である。 図20に示す例の動作フローを示す図である。 本実施形態におけるロード要求LD(S)及びロード要求LD(E)の他の実装例を示す図である。 最初の要求元からのロード要求に対してEステートで応答する例を示す図である。 最初の要求元からのロード要求に対してSステートで応答する例を示す図である。 図16(A)及び図17(A)に示す例の動作フローを示す図である。 最初の要求元からのロード要求に対してEステートで応答する例を示す図である。 最初の要求元からのロード要求に対してEステートで応答する例を示す図である。
以下、本発明の実施形態を図面に基づいて説明する。
図1は、本発明の実施形態における演算処理装置の構成例を示す図である。本実施形態における演算処理装置は、演算部及びL1(Level−1)キャッシュメモリ12をそれぞれ有する複数の演算処理部としてのCPU(Central Processing Unit)コア11(11−0〜11−n)と、各コア11で共有されるL2(Level−2)キャッシュメモリ13を有する。L2キャッシュメモリ13は、複数の要求受信部14、プライオリティ制御部15、タグ制御部(パイプライン)16、タグメモリ(TAG−RAM)17、ヒット判定部18、応答判定部19、応答ステート発行部20、応答データ発行部21、スヌープ発行部22、及びデータメモリ(DATA−RAM)23を有する。
要求受信部14(14−0〜14−n)は、各コア11(11−0〜11−n)に対応して設けられ、ロード要求やストア要求等のコア11からの要求を受信する。要求受信部14の各々で受信された要求は、プライオリティ制御部15に送られる。プライオリティ制御部15は、例えばLRU(Least Recently Used)アルゴリズム等に従ってタグ制御部(パイプライン)16に投入する要求を選択して出力する。タグ制御部(パイプライン)16は、タグメモリ17に対してタグ(TAG)の読み出しを指示するとともに、ヒット判定部18での処理によって得られたタグヒット(TAG HIT)情報を受ける。また、タグ制御部(パイプライン)16は、そのタグヒット情報及びプライオリティ制御部15から供給された要求を応答判定部19に出力する。
タグメモリ17には、データメモリ23に保持されているデータに係るタグデータが保持されている。また、タグデータは、各キャッシュメモリのステートに関する情報やどのコア11のL1キャッシュメモリ12がデータを保持しているかを示す情報を含む。タグメモリ17に保持されるデータの構成例を図2に示す。各タグデータは、アドレスタグ101、L2キャッシュメモリのステート情報(L2−STATE)102、L1キャッシュメモリのステート情報(L1−STATE)103、及びL1キャッシュメモリのデータ所持情報(L1−PRESENCE)104を有する。
アドレスタグ101は、データメモリ23に保持されているデータのアドレスに係るタグ情報である。L2キャッシュメモリのステート情報(L2−STATE)102は、L2キャッシュメモリのステートを示す2ビットの情報である。本実施形態では、値“0”(00b)がIステートを示し、値“1”(01b)がSステートを示し、値“2”(10b)がMステートを示し、値“3”(11b)がEステートを示すものとする。
また、L1キャッシュメモリのステート情報(L1−STATE)103は、L1キャッシュメモリのステートに関する情報を示す2ビットの情報である。本実施形態では、値“0”(00b)がどのコアも所持していないこと(I)を示し、値“1”(01b)が1つのコアがSステートで所持していること(S)を示し、値“2”(10b)が2つ以上のコアがSステートで所持していること(SHM)を示し、値“3”(11b)が1つのコアがEステートで所持していること(E)を示すものとする。L1キャッシュメモリのデータ所持情報(L1−PRESENCE)104は、どのコアがデータを所持しているかを示す情報である。本実施形態では、8個のコアに対する8ビットを有し、各ビットを1つのコアに対応させて、そのコアがデータを所持している場合には値を“1”とし、所持していない場合には値を“0”とする。したがって、L1キャッシュメモリのステート情報(L1−STATE)103及びデータ所持情報(L1−PRESENCE)104との組み合わせにより、どのコアがデータを所持しているかを一意に表現することが可能である。
ヒット判定部18は、プライオリティ制御部15から供給された要求に基づくパイプラインアドレスとタグメモリ17から読み出されたタグデータとを比較して、L2キャッシュメモリにパイプラインアドレスに対応するデータがあるか否かのヒット判定を行う。図3は、ヒット判定部18の構成例を示す図である。なお、図3に示す例ではWAY0〜WAY7までの8ウェイ構成の場合を一例として示している。
供給された要求に基づくパイプラインアドレスのL2キャッシュインデックス112に基づいて、タグメモリ17から各ウェイのアドレスタグ101、L2キャッシュメモリのステート情報(L2−STATE)102、L1キャッシュメモリのステート情報(L1−STATE)103及びデータ所持情報(L1−PRESENCE)104が出力される。
各ウェイのL2キャッシュメモリのステート情報(L2−STATE)102が論理和演算回路(OR回路)115により演算され、ステート情報(L2−STATE)102の値が“0”(00b)以外、すなわちIステート以外であれば出力が“1”となる。すなわち、有効なデータを所持しているウェイに対応するOR回路115が値“1”を出力する。また、各ウェイのアドレスタグ101とパイプラインアドレスのL2キャッシュタグ111とがアドレス比較部116により比較され、それらが一致する場合に値“1”を出力する。そして、OR回路115の出力とアドレス比較部116の出力が、論理積演算回路(AND回路)117により演算され、その演算結果がウェイ情報として出力される。すなわち、キャッシュヒットとなったウェイに対応するAND回路117の出力のみが値“1”となる。
OR回路118は、各AND回路117の出力を論理和演算し、その演算結果を信号TAG HITとして出力する。また、AND回路119及びOR回路120によりキャッシュヒットとなったウェイのL2キャッシュメモリのステート情報(L2−STATE)102が選択され、ヒットしたL2キャッシュメモリのステート情報(L2−STATE)として出力される。同様に、AND回路121及びOR回路122によりキャッシュヒットとなったウェイのL1キャッシュメモリのステート情報(L1−STATE)103が選択され、ヒットしたL1キャッシュメモリのステート情報(L1−STATE)として出力される。また、AND回路123及びOR回路124によりキャッシュヒットとなったウェイのL1キャッシュメモリのデータ所持情報(L1−PRESENCE)104が選択され、ヒットしたL1キャッシュメモリのデータ所持情報(L1−PRESENCE)として出力される。
図1に戻り、応答判定部19は、タグ制御部(パイプライン)16から供給されるタグヒット情報及び要求に応じて、スヌープ要求の発行や応答ステートの発行を制御する。応答判定部19は、例えば図4に示すようにロード要求に対してL2キャッシュメモリがヒットした場合には、タグヒット情報に基づいて他のコアのステートを確認する。応答判定部19は、他のコアのステートがEステートである場合、スヌープ応答ステートがSステートであれば要求コアの応答ステートをSステートに更新し、スヌープ応答ステートがMステートであれば要求コアの応答ステートをEステートに更新する。また、応答判定部19は、他のコアのステートがステートである場合、要求コアの応答ステートをSステートに更新する。
また、応答判定部19は、他のコアのステートがIステートである場合、発行されたロード要求がLD(S)であるかLD(E)であるかを確認する。その結果、応答判定部19は、発行されたロード要求が、他のコアに対象データの保持を許容するロード要求であるLD(S)である場合には要求コアの応答ステートをSステートに更新し、他のコアに対象データの保持を許容しないロード要求であるLD(E)である場合には要求コアの応答ステートをEステートに更新する。このように本実施形態では、図5に示すようにコア11からロード要求が発行されたとき、どのコアもデータを所持していない、すなわち各コアのステートがIステートである場合には、ロード要求の種別によって要求コアの応答ステートを更新する。つまり、どのコアもデータを所持していない状態でLD(S)のロード要求が発行された場合には、要求コアの応答ステートをSステートに更新し、LD(E)のロード要求が発行された場合には、要求コアの応答ステートをEステートに更新する。
図6は、応答判定部19の構成例を示す図である。応答判定部19は、タグステートデコード部131、要求コードデコード部132、更新タグステート生成部133、応答ステート生成部134、及びスヌープ要求生成部135を有する。
タグステートデコード部131は、タグ制御部(パイプライン)16から供給されるタグヒット情報のL2キャッシュメモリのステート情報(L2−STATE)、L1キャッシュメモリのステート情報(L1−STATE)及びデータ所持情報(L1−PRESENCE)を受信する。タグステートデコード部131は、それらをデコードし、デコード結果を更新タグステート生成部133、応答ステート生成部134、及びスヌープ要求生成部135に出力する。要求コードデコード部132は、タグ制御部(パイプライン)16から供給される要求に含まれる要求種別コード(REQ−CODE)を受信してデコードし、デコード結果を更新タグステート生成部133、応答ステート生成部134、及びスヌープ要求生成部135に出力する。
更新タグステート生成部133は、タグステートデコード部131及び要求コードデコード部132からのデコード結果に基づいて、図7A及び図7Bに示す動作例に従ってタグ応答の有無を判断し、タグ更新指示とタグ更新後のステートを決めてタグメモリ17にステート更新情報として出力する。また、応答ステート生成部134は、タグステートデコード部131及び要求コードデコード部132からのデコード結果に基づいて、図7A及び図7Cに示す動作例に従ってコア応答の有無を判断し、応答指示と応答ステート(データの有無を含め)を決めて出力する。また、スヌープ要求生成部135は、タグステートデコード部131及び要求コードデコード部132からのデコード結果に基づいて、図7A及び図7Cに示す動作例に従ってデータを所持するコアに対するスヌープ要求の有無を判断し、スヌープ指示とスヌープ要求種を出力する。
応答ステート発行部20は、応答判定部19からの応答指示及び応答ステートに基づき、応答ステートバスを介してコア11に応答ステートを発行する。また、応答データ発行部21は、応答判定部19からの応答指示及び応答ステートに基づき、ヒット判定部18からのウェイ情報に応じてデータメモリ23から出力されたデータを、応答データバスを介してコア11に応答データとして発行する。スヌープ発行部22は、応答判定部19からのスヌープ指示及びスヌープ要求種に基づき、スヌープ要求バスを介してコア11にスヌープ要求を発行する。
なお、L2キャッシュメモリ13でキャッシュミスとなった場合には主記憶又は他CPUへ要求を発行して応答を受信し、L2キャッシュメモリ13へ登録する動作が発生するが、それにかかわる構成要素については省略している。
前述したように、本実施形態ではロード要求において、Sステートでの応答を要求するロード要求LD(S)と、Eステートでの応答を要求するロード要求LD(E)とが用いられる。ロード要求LD(S)及びロード要求LD(E)は、ソフトウェアによる指示によって実現される。例えば、ソフトウェアはそのデータブロックを変更(ストア)するか否かを知っているため、コンパイラ等により変更の可能性が低いロード要求をLD(S)とし、それ以外のロード要求をLD(E)とすることで適切な指示を行うことができる。
以下、ロード要求LD(S)及びロード要求LD(E)の実装例を説明する。以下の説明では、図8に示すプログラムに、本実施形態におけるロード要求LD(S)及びロード要求LD(E)を適用する例を示す。図8に示す処理は、命令P11によりアドレスAのデータブロックをレジスタR0に格納し、命令P12によりアドレスBのデータブロックをレジスタR1に格納する。そして、命令P13によりレジスタR0及びレジスタR1に格納された値を乗算して、結果をレジスタR2に格納し、命令P14によりレジスタR2に格納された値をアドレスCのデータブロックに書き込む処理を繰り返し行うループ処理である。ここで、アドレスAは、各コア(スレッド)から共通に何度も参照されるアドレスであり、アドレスB及びCは同じキャッシュラインのアドレスであって各コア(スレッド)専用に使用されるアドレスであるものとする。なお、各アドレスA、B、Cは、ループ処理を繰り返す度に更新されるものとし、各アドレスA、B、CのデータはL1キャッシュメモリ12では所持してしないが、L2キャッシュメモリ13はEステートで所持しているものとする。
図9は、ロード要求LD(S)及びロード要求LD(E)を新たに定義して実装した例である。命令P21による各コア(スレッド)から共通に何度も参照されるアドレスAに対するロード要求ではLD(S)を用い、ロード後にストアが発生する、命令P22によるアドレスBに対するロード要求ではLD(E)を用いる。なお、命令P23及び命令P24は、前述した命令P13及び命令P14にそれぞれ対応する。このようにすることで、何度も参照されるアドレスAに対するロード要求にはSステートで応答されるので、スヌープ処理やキャッシュステートの排他権移譲処理等の発生を抑制し、演算処理装置の処理性能を向上させることができる。
図10は、ロード要求LD(S)及びロード要求LD(E)を新たに定義して実装した他の例である。図10に示す例は、さらにディスティネーションレジスタを指定せずに要求できるようにしたものである。命令P31による各コア(スレッド)から共通に何度も参照されるアドレスAに対するロード要求では、ディスティネーションレジスタが指定されていないLD(S)を用いる。この命令P31が実行されると、アドレスAのデータブロックがSステートでL1キャッシュメモリ12に保持される。次に、命令P32によりアドレスAに対するロード要求が行われるが、L1キャッシュメモリ12でキャッシュヒットするため、L1キャッシュメモリのステートは更新されず、Sステートのままである。その後、ロード後にストアが発生する、命令P33によるアドレスBに対するロード要求ではLD(E)を用いる。なお、命令P34及び命令P35は、前述した命令P13及び命令P14にそれぞれ対応する。このようにすることで、何度も参照されるアドレスAに対するロード要求にはSステートで応答されるので、スヌープ処理やキャッシュステートの排他権移譲処理等の発生を抑制し、演算処理装置の処理性能を向上させることができる。
なお、前述した説明では、ロード要求LD(S)及びロード要求LD(E)を新たに設ける例を示したが、応答を指定しないロード要求LDに対してはEステートで応答するような構成では、ロード要求LD(S)だけを新たに設けるようにしても良い。
前述のようにストアの可能性が低いロード要求をLD(S)として扱い、Sステートで応答するようにする。これにより、図11(A)に示すようにリプレース後であってもSステートで応答するため、次に別のコアが同じキャッシュラインにロード要求、又はロード要求LD(S)を発行しても、最初のコアとの間でスヌープトランザクションが発生せず、すぐデータを共有することができる。また、ストアの可能性が低いロード要求以外のロード要求をLD(E)として扱い、Eステートで応答するようにする。これにより、図11(B)に示すように次にそのコアが同じキャッシュラインにストア要求を発行すると、そのコアはEステートでデータを保持しているので直ぐにストア処理を実行することができ、性能低下を抑制することができる。
図12は、図11(A)に示した例の動作フローを示す図であり、図13及び図14は、図20に示した例の動作フローを示す図である。なお、図12〜図14において、Core-0 L1-pipeはコア0のL1キャッシュメモリのパイプライン処理を示し、Core-1 L1-pipeはコア1のL1キャッシュメモリのパイプライン処理を示す。また、L2-pipeはL2キャッシュメモリのパイプライン処理を示す。図12に示す動作フローと図13及び図14に示す動作フローとの比較から明らかなように、本実施形態ではスヌープ処理やキャッシュステートの排他権移譲処理が削減され、処理性能が向上する。
図15は、ロード要求LD(S)及びロード要求LD(E)の他の実装例を示す図である。図10に示した実装例における命令P31は、アドレスAのデータブロックをL1キャッシュメモリ12に格納するものであり、これはいわゆるL1キャッシュプリフェッチと同様である。したがって、L1キャッシュプリフェッチ(L1−PF)が命令セットで定義されている場合には、L1−PFによってロード要求LD(S)を表現することができる。ここで、L1−PFは、コアがロード処理又はストア処理を行う前にL2キャッシュメモリのデータをL1キャッシュメモリに格納することで性能向上させるために多用される。
L1−PFには、参照用にのみプリフェッチを要求するL1−PF(S)とストア用にプリフェッチを要求するL1−PF(E)とがある。したがって、L1−PF(S)を本実施形態におけるロード要求LD(S)として使用することができ、あらためてロード要求LD(S)を定義する必要がなく、命令コードの追加変更せずに本実施形態を実現できる。なお、L1−PF(S)をロード要求LD(S)として使用する場合には、応答判定部19の要求コードデコード部132が、L1−PF(S)をロード要求LD(S)として解釈するようにすれば良い。
図15においては、命令P41により各コア(スレッド)から共通に何度も参照されるアドレスAのデータブロックをL1キャッシュメモリ12にプリフェッチする。このとき、L1キャッシュメモリ12は、アドレスAのデータブロックをSステートで保持する。次に、命令P42によりアドレスBのデータブロックをL1キャッシュメモリ12にプリフェッチする。このとき、L1キャッシュメモリ12は、アドレスBのデータブロックをEステートで保持する。なお、命令P42は省略可能である。次に、命令P43によりアドレスAに対するロード要求が行われるが、L1キャッシュメモリ12でキャッシュヒットするため、L1キャッシュメモリのステートは更新されず、Sステートのままである。その後、ロード後にストアが発生する、命令P44によるアドレスBに対するロード要求を発行する。なお、命令P45及び命令P46は、前述した命令P13及び命令P14にそれぞれ対応する。このようにしても、何度も参照されるアドレスAに対するロード要求にはSステートで応答されるので、スヌープ処理やキャッシュステートの排他権移譲処理等の発生を抑制し、演算処理装置の処理性能を向上させることができる。
なお、プリフェッチ要求は、L2キャッシュメモリのレイテンシを隠蔽して性能向上を図るために用いられる。したがって、L2キャッシュメモリのレイテンシを考慮し、命令P41(命令P42を加える場合には命令P42)と命令P43との間隔を数命令分(例えば20命令程度分)あけるようにしても良い。
また、L1−PFを用いて、ロード要求LD(S)及びロード要求LD(E)を表現する場合、ロード要求LD(E)をL1−PF以外のロード要求のみで実現する方法と、L1−PF(E)を加えて実現する方法がある。しかし、L1−PF(E)はストアすることを考慮してEステートでデータ保持することが好ましいため、ロード要求LD(E)をL1−PF以外のロード要求のみで実現するほうが好適である。なお、L1−PFはソフトウェア指定のL1−SW(ソフトウェア)−PFを想定するのが好適だが、ハードウェアがメモリアクセスアドレスのパターンを検出して自動発生させるL1−HW(ハードウェア)−PFであっても適応可能である。
本実施形態によれば、下位のキャッシュメモリに対するロード要求に対してEステートで応答するか、Sステートで応答するかを適切に選択して要求元に応答することで、スヌープ処理やキャッシュステートの排他権移譲処理の発生を抑制し、演算処理装置の処理性能を向上させることができる。なお、前述した本実施形態は、MESI方式のキャッシュシステムに限らず、クリーンな状態で排他権を移譲できるキャッシュシステムに対して適用可能である。例えば、MOESI方式やMOWESI方式等のキャッシュシステムに対しても適用可能である。
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
11 CPUコア
12 L1(Level−1)キャッシュメモリ
13 L2(Level−2)キャッシュメモリ
14 要求受信部
15 プライオリティ制御部
16 タグ制御部(パイプライン)
17 タグメモリ(TAG−RAM)
18 ヒット判定部
19 応答判定部
20 応答ステート発行部
21 応答データ発行部
22 スヌープ発行部22
23 データメモリ(DATA−RAM)

Claims (5)

  1. データを保持する第1のキャッシュメモリを備え、演算処理を行うとともに要求を出力する複数の演算処理部と、
    前記複数の演算処理部のいずれかから受信した、前記複数の演算処理部が備える第1のキャッシュメモリのいずれもが保持しない対象データを要求する要求が、前記要求を送信した演算処理部以外の演算処理部にも前記対象データの保持を許容するとともに前記第1のキャッシュメモリに対象データを保持させるプリフェッチ要求である場合、前記対象データが非排他的データである旨を表示する非排他情報と前記対象データとを前記要求を送信した演算処理部に応答して前記第1のキャッシュメモリに対象データを保持させるとともにスヌープ処理の発生を抑制し、前記要求を送信した演算処理部以外の演算処理部には前記対象データの保持を許容しないプリフェッチ要求である場合、前記対象データが排他的データである旨を表示する排他情報と前記対象データとを前記要求を送信した演算処理部に応答して前記第1のキャッシュメモリに対象データを保持させる第2のキャッシュメモリを有することを特徴とする演算処理装置。
  2. 前記第2のキャッシュメモリは、
    前記対象データの前記第1のキャッシュメモリにおける保持状態を表示する第1の保持状態情報と、前記対象データの前記第2のキャッシュメモリにおける保持状態を表示する第2の保持状態情報とを対象データに対応させて記憶する記憶部を有し、前記記憶部に保持した第1の保持状態情報と第2の保持状態情報とに基づいて、対象データに対応する非排他情報又は排他情報を、前記要求を送信した演算処理部に応答することを特徴とする請求項1記載の演算処理装置。
  3. 前記第2のキャッシュメモリはさらに、
    前記第2のキャッシュメモリでヒットした対象データを要求するプリフェッチ要求をデコードする第1のデコード部と、
    前記第2のキャッシュメモリでヒットした対象データに対応する第1の保持状態情報と第2の保持状態情報をデコードする第2のデコード部と、
    前記第1のデコード部の第1のデコード結果及び前記第2のデコード部の第2のデコード結果に基づいて、前記要求を送信した演算処理部に応答する応答生成部を有することを特徴とする請求項2記載の演算処理装置。
  4. 前記プリフェッチ要求は、ソフトウェアによって指定されるプリフェッチ要求であることを特徴とする請求項1〜3の何れか1項に記載の演算処理装置。
  5. データを保持する第1のキャッシュメモリを備えるとともに演算処理を行う複数の演算処理部と、前記複数の演算処理部に接続される第2のキャッシュメモリとを有する演算処理装置の制御方法において、
    前記複数の演算処理部のいずれかが要求を出力し、
    前記第2のキャッシュメモリが、前記複数の演算処理部のいずれかから受信した、前記複数の演算処理部が備える第1のキャッシュメモリのいずれもが保持しない対象データを要求する要求が、前記要求を送信した演算処理部以外の演算処理部にも前記対象データの保持を許容するとともに前記第1のキャッシュメモリに対象データを保持させるプリフェッチ要求である場合、前記対象データが非排他的データである旨を表示する非排他情報と前記対象データとを前記要求を送信した演算処理部に応答して前記第1のキャッシュメモリに対象データを保持させるとともにスヌープ処理の発生を抑制し、前記要求を送信した演算処理部以外の演算処理部には前記対象データの保持を許容しないプリフェッチ要求である場合、前記対象データが排他的データである旨を表示する排他情報と前記対象データとを前記要求を送信した演算処理部に応答して前記第1のキャッシュメモリに対象データを保持させることを特徴とする演算処理装置の制御方法。
JP2012190441A 2012-08-30 2012-08-30 演算処理装置及び演算処理装置の制御方法 Active JP5971036B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012190441A JP5971036B2 (ja) 2012-08-30 2012-08-30 演算処理装置及び演算処理装置の制御方法
US13/912,155 US20140068192A1 (en) 2012-08-30 2013-06-06 Processor and control method of processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012190441A JP5971036B2 (ja) 2012-08-30 2012-08-30 演算処理装置及び演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2014048829A JP2014048829A (ja) 2014-03-17
JP5971036B2 true JP5971036B2 (ja) 2016-08-17

Family

ID=50189119

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012190441A Active JP5971036B2 (ja) 2012-08-30 2012-08-30 演算処理装置及び演算処理装置の制御方法

Country Status (2)

Country Link
US (1) US20140068192A1 (ja)
JP (1) JP5971036B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170033407A (ko) * 2014-09-25 2017-03-24 인텔 코포레이션 확장된 mesi 프로토콜을 이용하는 멀티 프로세서 시스템의 인터커넥트 트래픽 감소
CN115955551A (zh) * 2022-11-09 2023-04-11 联想(北京)有限公司 一种控制方法及控制装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69628493T2 (de) * 1995-03-31 2004-05-19 Sun Microsystems, Inc., Santa Clara Cache-kohärentes Computersystem, das Entwertungs- und Rückschreiboperationen minimiert
US6052760A (en) * 1997-11-05 2000-04-18 Unisys Corporation Computer system including plural caches and utilizing access history or patterns to determine data ownership for efficient handling of software locks
US6886079B2 (en) * 2001-06-21 2005-04-26 International Business Machines Corporation Dynamic history based mechanism for the granting of exclusive data ownership in a non-uniform memory access (NUMA) computer system
US20060053258A1 (en) * 2004-09-08 2006-03-09 Yen-Cheng Liu Cache filtering using core indicators
JP5568939B2 (ja) * 2009-10-08 2014-08-13 富士通株式会社 演算処理装置及び制御方法
KR101402560B1 (ko) * 2009-12-25 2014-05-30 후지쯔 가부시끼가이샤 연산 처리 장치

Also Published As

Publication number Publication date
US20140068192A1 (en) 2014-03-06
JP2014048829A (ja) 2014-03-17

Similar Documents

Publication Publication Date Title
JP7553478B2 (ja) 書き込みミスエントリのドレインをサポートする犠牲キャッシュ
US10353819B2 (en) Next line prefetchers employing initial high prefetch prediction confidence states for throttling next line prefetches in a processor-based system
US9513904B2 (en) Computer processor employing cache memory with per-byte valid bits
EP2839379B1 (en) A write-only dataless state for maintaining cache coherency
US9218286B2 (en) System cache with partial write valid states
US9390011B2 (en) Zero cycle clock invalidate operation
KR101168544B1 (ko) 원격 아토믹 실행의 적응적 처리 방법, 장치 및 시스템
US9892039B2 (en) Non-temporal write combining using cache resources
US20070005908A1 (en) Method and apparatus to enable I/O agents to perform atomic operations in shared, coherent memory spaces
US10997079B2 (en) Method and arrangement for saving cache power
JP2002297379A (ja) ハードウェアプリフェッチシステム
US9256540B2 (en) Techniques for cache injection in a processor system using a cache injection instruction
US8977821B2 (en) Parallel processing of multiple block coherence operations
JP7096840B2 (ja) 能力メタデータを管理するための装置及び方法
US8429349B2 (en) Techniques for cache injection in a processor system with replacement policy position modification
US6408363B1 (en) Speculative pre-flush of data in an out-of-order execution processor system
KR100876486B1 (ko) 저장 성능 개선
JP5971036B2 (ja) 演算処理装置及び演算処理装置の制御方法
US9336145B2 (en) Techniques for cache injection in a processor system based on a shared state
US9110885B2 (en) Techniques for cache injection in a processor system
US20160179676A1 (en) Cleaning a write-back cache
JP3770091B2 (ja) キャッシュ制御方法及びキャッシュ制御回路
US6766427B1 (en) Method and apparatus for loading data from memory to a cache
WO2012098812A1 (ja) マルチプロセッサシステム、マルチプロセッサ制御方法、及びプロセッサ
CN116804975A (zh) 具有每扇区高速缓存驻留控件的高速缓存存储器

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150512

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160314

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160322

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160519

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160627

R150 Certificate of patent or registration of utility model

Ref document number: 5971036

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150