JP6244916B2 - 演算処理装置,演算処理装置の制御方法及び情報処理装置 - Google Patents

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

Info

Publication number
JP6244916B2
JP6244916B2 JP2014000251A JP2014000251A JP6244916B2 JP 6244916 B2 JP6244916 B2 JP 6244916B2 JP 2014000251 A JP2014000251 A JP 2014000251A JP 2014000251 A JP2014000251 A JP 2014000251A JP 6244916 B2 JP6244916 B2 JP 6244916B2
Authority
JP
Japan
Prior art keywords
transaction
arithmetic processing
processing unit
cache
abort
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
JP2014000251A
Other languages
English (en)
Other versions
JP2015129996A (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 JP2014000251A priority Critical patent/JP6244916B2/ja
Priority to EP14200107.2A priority patent/EP2891984B1/en
Priority to EP16184313.1A priority patent/EP3131018B1/en
Priority to US14/589,023 priority patent/US9535839B2/en
Publication of JP2015129996A publication Critical patent/JP2015129996A/ja
Application granted granted Critical
Publication of JP6244916B2 publication Critical patent/JP6244916B2/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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

Description

本発明は,演算処理装置,演算処理装置の制御方法及び情報処理装置に関する。
CPU(Central Processing Unit)コアを複数有するマルチCPUコア,又はCPUを複数有するマルチCPU(以下CPUと総称する)の環境下における並列処理では,複数のCPUが同じアドレス空間を共有し,同じメモリに対してストア命令(書込)とロード命令(読み出し)を実行する。この場合,複数のCPUがメモリの同じアドレスにアクセスしてデータを書き込むことが発生する。そのため,それらのアクセスを調停する機構として,ロックを用いた排他処理がある。
ロックを用いた排他処理では,複数のCPUがそれぞれのスレッドを実行中に,CPUは,共有メモリへの書込処理の前に,ロックの取得処理を実行し,ロックが取れれば書込処理を実行し,その後ロックを解放する処理を実行する。ロックが取れた状態では他のスレッドによるロック取得は禁止されるので,共有メモリへの書込処理が排他的に行われ,メモリ内のデータのコヒーレンシを維持することができる。
しかし,ロックを用いた排他処理は,プログラマにとって負担になり,バグの温床になっている。そこで,ロックに代えて,排他処理を行うトランザクショナルメモリが提案されている。
トランザクショナルメモリでは,共有メモリに対する一連のアクセスをトランザクションと呼ぶ。トランザクショナルメモリでは,あるCPUによるスレッドが共有メモリにアクセスする際に,他のCPUによるスレッドも共有メモリにアクセスする場合に,アクセスの競合をチェックし,アクセスの競合を検出した場合は,競合した複数のスレッドは実行中のトランザクションをアボートして,トランザクション開始前の状態に復帰し,再度トランザクションの実行を行う。
特表2008−515055号 特表2012−509529号
トランザクショナルメモリをソフトウエアのみで実装するソフトウエアトランザクショナルメモリと,ハードウエアで実装するハードウエアトランザクショナルメモリとが提案されている。ハードウエアトランザクショナルメモリは,プログラマにプログラミングの負担を強いらないという利点があるが,複雑な判定処理が行えない。そのため,特定のCPUによるスレッドのトランザクションのみがアボートを繰り返して,デッドロックに陥る可能性がある。
アボートが繰り返された場合,ソフトウエアによるアボートハンドラに制御が移行し,ロックを用いた処理に切り替えられてしまい,トランザクショナルメモリの性能低下を招く。
そこで,一つの実施の形態の目的は,トランザクショナルメモリの性能低下を抑制した演算処理装置,演算処理装置の制御方法及び情報処理装置を提供することにある。
実施の形態の第1の側面は,メモリへの書込命令を制御する第1の命令制御部と,第1のキャッシュメモリを有する第1のキャッシュユニットとを有する第1の演算処理部と,
前記メモリへの書込命令を制御する第2の命令制御部と,第2のキャッシュメモリを有する第2のキャッシュユニットとを有する第2の演算処理部とを有し,
前記第1の演算処理部が,実行中の第1のトランザクション内での前記第1のキャッシュメモリへの書込要求時に,前記第2の演算処理部に無効化要求を送信し,
前記第2の演算処理部の前記第2のキャッシュユニットは,前記無効化要求に応答して,実行中の第2のトランザクションが前記書込要求先のキャッシュブロックについて競合する場合に,前記無効化要求に含まれる情報に基づいて前記第2のトランザクションをアボートするか否かを判定し,判定結果を前記第1の演算処理部に返信する演算処理装置である。
第1の側面によれば,複数の演算処理部間で所定の判定論理で競合するトランザクション間の調停を行うことができるので,性能低下を抑制することができる。
トランザクションのプログラム例を示す図である。 トランザクションが競合した場合の排他処理の第1の例を示す図である。 トランザクションが競合した場合の排他処理の第2の例を示す図である。 第1の実施の形態における演算処理装置を示す図である。 本実施の形態における排他処理の概略を示す図である。 本実施の形態における排他処理の概略を示す図である。 第2の実施の形態における排他処理を示す図である。 第2の実施の形態におけるCPUコア間のキャッシュコヒーレンストランザクションである無効化要求のフォーマットの例を示す図である。 第2の実施の形態におけるCPUコア内のキャッシュユニットを示す図である。 アボート閾値レジスタ128の構成を示す図である。 キャッシュタグ124の構成を示す図である。 アボート判定回路の構成を示す図である。 アボートハンドラへのジャンプ先を記述したトランザクションのプログラム例である。 第3の実施の形態におけるキャッシュユニット12,14の構成を示す図である。 第3の実施の形態における無効化要求のトランザクションのフォーマットを示す図である。 第3の実施の形態におけるアボート判定回路126を示す図である。 第4の実施の形態におけるアボート判定回路を示す図である。 第5の実施の形態における情報処理装置(コンピュータ)を示す図である。 第5の実施の形態における排他処理のフローチャート図である。 第5の実施の形態におけるキャッシュユニット12,14,18を示す図である。 第5の実施の形態におけるアボート判定回路の回路図である。 第6の実施の形態における情報処理装置を示す図である。
図1は,トランザクションのプログラム例を示す図である。このプログラムでは,アドレス00のTxStart命令と04のTxEnd命令とで,共有メモリに対する一連のアクセスを有するトランザクションを定義している。つまり,TxStart命令とTxEnd命令は,トランザクションの開始と終了をCPUに知らせる命令である。アドレス01は,メモリから0x1番地のデータを読み出して変数%glに代入するload命令,アドレス02は,変数%glに1を加算するadd命令,アドレス03は加算結果をメモリの0x1番地に書き込むstore命令である。したがって,図1は,メモリ内のデータに1を加算して書き込む加算処理のプログラムであって,共通メモリへのストア命令(書込命令)を有するので,排他処理が必要なトランザクションを示すプログラムである。
図1のようなトランザクションをCPUコアが実行する場合,書込命令を実行する時に,他のCPUコアによるトランザクションが,メモリ内の同じアドレスに書込命令を実行しないように排他処理を行うことが必要になる。このように,共通メモリに書込命令を実行する場合に,他の書込命令と競合するか否かをチェックし,競合する場合は,書込命令を排他的に行うように排他処理を実行する。
図2は,トランザクションが競合した場合の排他処理の第1の例を示す図である。この例では,スレッドT#0とT#1とが,共通のメモリへのアクセスを含むトランザクションTR0と,TR1とをそれぞれ実行している。図2において時間軸tは上から下に向いている。各トランザクション内のLはロード命令(メモリの読み出し命令),Sはストア命令(メモリへの書込命令)を示し,例えば図1のようなトランザクションである。そして,スレッドT#0の最初のトランザクションTR0とスレッドT#1の最初のトランザクションTR1とが同じアドレスへの書込命令を実行し競合している。
この場合,図2の排他処理は,競合したトランザクションTR0,TR1を全てアボートする(S1,S2)。アボートされた結果,各トランザクションはリセットされ,トランザクション中に変更されたキャッシュメモリも無効化される。そして,両スレッドT#0とT#1は,任意のタイミングでそれぞれのトランザクションTR0,TR1を再実行する(S3,S4)。
しかし,図2の排他処理では,競合したトランザクション全てがアボートされるため,競合時の性能ペナルティが大きい。また,あるスレッドのトランザクションが繰り返しアボートされてデッドロックに陥る場合がある。
図3は,トランザクションが競合した場合の排他処理の第2の例を示す図である。この例では,5つのスレッドT#0-T#4が,共通のメモリへのアクセスを含むトランザクションTR0-TR4をそれぞれ実行している。第2の例の排他処理は,競合したトランザクションのうちストア命令を先に実行したトランザクションが実行を継続し,それ以外のトランザクションをアボートする。このような先実行主義による排他処理では,あるスレッドのトランザクションがアボートを繰り返し実行できない場合がある。
図3の例では,スレッドT#0のトランザクションTR0とスレッドT#1のトランザクションTR1とが競合し,先にストア命令を実行したトランザクションTR0が実行を継続し,トランザクションTR1がアボートされている(S5)。さらに,スレッドT#1のトランザクションTR1とスレッドT#2のトランザクションTR2とが競合し,先にストア命令を実行したトランザクションTR2が実行を継続し,トランザクションTR1がアボートされている(S6)。さらに,スレッドT#1のトランザクションTR1とスレッドT#4のトランザクションTR4とが競合し,先にストア命令を実行したトランザクションTR4が実行を継続し,トランザクションTR1がアボートされている(S7)。結局,スレッドT#1のトランザクションTR1はアボートを繰り返し,最終的には,ソフトウエアのアボートハンドラにジャンプして,ロック処理に切り替えることになる。
ロック処理では,前述したとおり,スレッドT#1がロックを取得し,他のスレッドのトランザクションを待機状態にさせ,スレッドT#1のトランザクションTR1が排他的にメモリに対してストア命令を実行する。
しかし,ソフトウエアのアボートハンドラを実行すると,他の全てのトランザクションが待機状態にされ,ハードウエアによるトランザクショナルメモリの利点を生かせず大きな性能低下を招く。
図2,3で説明した第1,第2の排他処理の例は,ハードウエアによるトランザクショナルメモリの例であり,必ずしも先行技術ではない。これらの排他処理は,競合したときの排他処理の判定が簡単であるので,ハードウエアによるトランザクショナルメモリとして実現し易い反面,あるスレッドのトランザクションがアボートを繰り返す場合が発生し好ましくない。
[第1の実施の形態]
図4は,第1の実施の形態における演算処理装置を示す図である。演算処理装置10は,例えばCPUチップであり,複数のCPUコアCPU_1〜CPU_3と,メモリコントローラ16と,バス15とを有する。そして,演算処理装置10は,メモリ20にアクセス可能に接続される。
CPUコアCPU_1は,命令実行パイプラインやALU(演算論理ユニット)などを有する命令制御部11と,キャッシュユニット12とを有する。キャッシュユニット12は,例えばキャッシュメモリとその制御を行うキャッシュパイプライン回路などを有する。キャッシュユニット12は,L1キャッシュユニット,L2キャッシュユニットで構成されていてもよい。CPUコアCPU_2も同様に,命令制御部13とキャッシュユニット14とを有する。それ以外のCPUコアCPU_3なども同様に,命令制御部とキャッシュユニットとを有する。
図4に示された演算処理装置10の場合,複数のCPUコアがメモリ20を共有しているので,キャッシュコヒーレンシを保つための構成が必要になる。たとえば,同一のキャッシュブロックを複数のCPUコアのキャッシュユニットが保持していた場合,ストア命令を実行して書込みを行うCPUコアは,他のCPUコアのキャッシュブロックの無効化を要求する。
図5,図6は,本実施の形態における排他処理の概略を示す図である。例えば,CPUコアCPU_1が,図1に示したようなメモリアクセスを伴う第1のトランザクションを実行中に,CPUコアCPU_1の命令制御部11がキャッシュユニット12に書込要求を発行したと仮定して説明する。
まず,CPUコアCPU_1の命令制御部11がキャッシュユニット12に書込要求を発行する(S11)。それに応答して,キャッシュユニット12は,他のCPUコアCPU_2に対して,書込要求に対応するキャッシュブロックを無効化することを要求する無効化要求を送信する(S12)。この無効化要求は,バス15を介して,CPUコアCPU_2内のキャッシュユニット14により受信される。無効化要求には,例えば,発行元CPUコアのID,発行元CPUコアのトランザクションの状態を示す情報,アクセスアドレスなどが含まれている。
CPUコアCPU_2のキャッシュユニット14は,無効化要求についてアボート判定を実行する(S13)。アボート判定では,キャッシュユニット14は,まずCPUコアCPU_2が実行中の第2のトランザクションが,無効化要求に含まれるアクセスアドレスに対応するキャッシュブロックについて競合するか否かを判定する。そして,キャッシュユニット14は,競合する場合に,無効化要求に含まれる情報,例えば発行元CPUコアの状態情報などに基づいて,第2のトランザクションをアボートするか否かを判定する。この判定回路は,後述する例で説明するように,予め決められた判定論理に従って構成される。
CPUコアCPU_2のキャッシュユニット14は,第2のトランザクションをアボートしないと判定した場合は,その判定結果として,第1のトランザクションのアボートを要求するアボート要求ビットを有効にして,無効化要求発行元のCPUコアCPU_1に対して返信する(S14)。一方,キャッシュユニット14は,第2のトランザクションをアボートすると判断した場合は,その判定結果として,上記のアボート要求ビットを無効,つまりアボート不要にして,返信する(S14)。キャッシュユニット14は,第2のトランザクションがキャッシュブロックについて競合しない場合も,判定結果として,アボート要求ビットを無効,つまりアボート不要にして返信する(S14)。
上記の返信に応答して,CPUコアCPU_1のキャッシュユニット12は,判定結果が第2のトランザクションをアボートする判定であり,したがって返信のアボート要求ビットが無効なら,第1のトランザクションの書込要求を実行して,キャッシュブロックのデータを書き換える。判定結果がトランザクションが競合しない場合も同様である。また,返信の判定結果が第2のトランザクションをアボートしない判定であり,したがってアボート要求ビット有効なら,キャッシュユニット12は,命令制御部11に第1のトランザクションをアボートさせると共に,第1のトランザクションで変更されたキャッシュブロックを無効化する(S15)。
一方,CPUコアCPU_2のキャッシュユニット14は,判定結果が第2のトランザクションをアボートしない判定であれば特に何も行わない。判定結果がトランザクションが競合しない場合も同様である。一方,判定結果が第2のトランザクションをアボートする判定であれば,命令制御部15に第2のトランザクションをアボートさせると共に,第2のトランザクションで変更されたキャッシュブロックを無効化する(S16)。
以上のように,第1の実施の形態では,第1のCPUコア内の命令制御部が実行中の第1のトランザクション内のストア命令の実行に伴って書込要求を発行するときに,キャッシュコヒーレンシ維持のために無効化要求を他の第2のCPUコアに送信し,無効化要求を受信した第2のCPUコアが,自らが実行中の第2のトランザクションが書込要求先のキャッシュブロックと競合するか否か判定し,競合する場合は,所定のアボート判定論理に基づいて,実行中の第2のトランザクションをアボートするか否か判定する。つまり,無効化要求を受信した第2のCPUコアが競合する第2のトランザクションを無条件にアボートするのではなく,所定の判定論理に基づいて,例えば,第1,第2のトランザクションの状態を比較してアボート判定する。
そして,その判定結果に基づいて,第1,第2のCPUコアは,アボートすると判定されたトランザクションをアボートし,そのアボートしたトランザクションで変更されたキャッシュブロックを無効化する。トランザクションのアボートは,例えばプログラムカウンタをトランザクションの先頭番地にジャンプさせることで行われる。また,キャッシュブロックの無効化は,例えばアボートされるトランザクション中に読み出しまた書込みが行われたキャッシュブロックのキャッシュタグの有効ビットを無効化することで行われる。
競合するトランザクション間のアボートを判定する論理として,特定のトランザクションのアボートが繰り返されるような状況が発生しないような判定論理を採用することで,図2,3で説明したトランザクショナルメモリの性能劣化を回避することができる。
上記のように,キャッシュコヒーレンシ維持のための無効化要求をトリガにして,無効化要求を受信したCPUコアにトランザクションをアボートするか否かを判定させることで,ハードウエアによるトランザクショナルメモリにおいて,所望の論理で競合するメモリアクセスの調停を行うことができる。
[第2の実施の形態]
図7は,第2の実施の形態における排他処理を示す図である。第2の実施の形態においても,図4,5,6で説明した演算処理装置の構成を有し,排他処理のための無効化要求とアボート判定を行う。そして,第2の実施の形態では,アボート判定論理として,トランザクション内でのアボート回数が多いトランザクションの実行を継続し,少ないトランザクションをアボートするという論理を採用する。つまり,アボート回数が多いトランザクションほど優先して実行できるようにする。
図7を参照して,第2の実施の形態における排他処理を説明する。図7には,図3と同様に,5つのスレッドT#0−T#4がそれぞれのトランザクションを実行する。第2の実施の形態では,各CPUコアは,アボート回数を数えるアボートカウンタをスレッド毎に有する。そして,スレッドのトランザクション中のアボート回数がアボートカウンタでカウントされる。そして,スレッドのトランザクション間でメモリアクセスが競合した場合,それぞれのアボートカウントを比較し,アボートカウントが小さい方のトランザクションをアボートし,アボートカウンタが大きいほうのトランザクションの実行を継続させる。トランザクションが完了した時に,アボートカウンタはリセットされる。
図7の例で説明すると,スレッドT#0のトランザクションTR0とスレッドT#1のトランザクションTR1とが競合し,もしトランザクションTR1がアボートしたとすると(S20),スレッドT#1のアボートカウンタのアボートカウントCNTはCNT=0からCNT=1にカウントアップする。その後,スレッドT#1のトランザクションTR1とスレッドT#3のトランザクションTR3とが競合した場合,スレッドT#3のアボートカウントCNTがCNT=0であるので,トランザクションTR1のストア命令SがトランザクションTR3のストア命令Sより遅いのにもかかわらず,アボートカウントが小さいトランザクションTR3がアボートし,トランザクションTR1が実行を継続する(S21)。このとき,スレッドT#3のアボートカウントCNTはCNT=1にカウントアップする。スレッドT#1は,その後に他のスレッドと競合せずトランザクションを完了したとき,アボートカウントCNTをCNT=0にリセットする。
次に,スレッドT#3のトランザクションTR3が再実行して,スレッドT#4のトランザクションTR4と競合した場合,アボートカウントが小さいトランザクションTR4がアボートし,トランザクションTR3が実行を継続する(S22)。その結果,スレッドT#3のアボートカウントCNTは,トランザクション完了時にCNT=0にリセットされ,スレッドT#4のアボートカウントCNTはCNT=1にカウントアップする。
このように,アボートカウントを比較していずれのトランザクションをアボートするかを判定することで,特定のスレッドのトランザクションが繰り返しアボートされて,ソフトウエアのアボートハンドラが実行され,性能低下を招くことを回避することができる。
次に,第1の実施の形態の排他処理に第2の実施の形態のアボート判定論理を適用した例について説明する。
図8は,第2の実施の形態におけるCPUコア間のキャッシュコヒーレンストランザクションである無効化要求のフォーマットの例を示す図である。無効化要求は64ビットで構成され,8ビットのオペコード,4ビットの発行元CPUコアのID,4ビットの発行元CPUコアのアボートカウント,1ビットのアボート要求ビット(アボート判定結果に対応),3ビットの予約ビット,44ビットのアクセス先のアドレスを有する。
図9は,第2の実施の形態におけるCPUコア内のキャッシュユニットを示す図である。キャッシュユニット12,14は,他のCPUコアからの無効化要求や同じCPUコア内の命令制御部11,13からの要求を受け付けるオーダーポート121と,オーダーポートで受け付けた要求を処理するキャッシュパイプライン122と,要求に対する応答などを受け付けるコンプリートポート123とを有する。
また,キャッシュユニット12,14は,キャッシュブロックに対応するメモリのアドレスを記憶するキャッシュタグ124と,キャッシュしているデータをキャッシュブロック単位で記憶するキャッシュメモリ125とを有する。
そして,第2の実施の形態では,キャッシュユニット12,14は,他のCPUコアからの無効化要求に対して現在実行中のトランザクションが競合しているか否かを判定し,競合している場合にそのトランザクションをアボートするか否かを判定するアボート判定回路126と,実行中のトランザクションのアボート回数をカウントするアボートカウンタ127とを有する。
さらに,キャッシュユニットは,アボート閾値レジスタ128を有する。このアボート閾値レジスタは,後述するとおり,アボート回数がアボート閾値に達するほど大きくなった場合に,例外的にソフトウエアによるアボートハンドラにジャンプできるようにするために設けられている。つまり,キャッシュユニットは,アボート回数でアボートの調停を行っていても例外的にアボート回数が大きくなった場合の例外的な処理を行う。
図10は,アボート閾値レジスタ128の構成を示す図である。アボート閾値レジスタ128は,8ビットのアボート閾値を格納する領域と,1ビットのアボート閾値が有効か否かを示す有効無効ビットを格納する領域とを有する。有効無効ビットが無効の場合は,アボートが発生すると即ソフトウエアアボートハンドラにより処理され,ハードウエアリトライを行わない。有効の場合は,アボート回数がアボート閾値に達するまではハードウエアリトライを行い,達したらソフトウエアアボートハンドラにより処理される。
図11は,キャッシュタグ124の構成を示す図である。キャッシュタグ124は,タグアドレスTAG_ADDRESSと,その有効ビットVと共に,実行中のトランザクション内で読み出し及び書込を実行したことを示す読み出しフラグRと書込フラグWとを有する。図11に示された例では,3行のキャッシュタグは全て有効であり,1行目と3行目のキャッシュタグに対応するキャッシュブロックには読み出しが実行済みであり,2行目のキャッシュタグに対応するキャッシュブロックには書込が実行済みである。
図12は,アボート判定回路の構成を示す図である。図12には,アボート回路の動作を示す論理値表が示されている。アボート判定回路126は,アボートカウンタ127のカウント値CNT_1と,キャッシュパイプライン122から送信される他のCPUコアからの無効化要求のアボートカウント値CNT_2とを比較し,アボートカウンタ127のカウント値CNT_1が小さい場合に出力をHレベルにし,カウント値CNT_1が大きい場合に出力をLレベルにする第1の比較器130を有する。さらに,アボート判定回路126は,キャッシュタグ124内の無効化要求のアクセスアドレスに対するタグアドレスの読み出しフラグRか書込フラグWのいずれかが実行済み(1またはHレベル)でありトランザクションが競合することを検出する論理和ゲート132を有する。そして,アボート判定回路126は,第1の比較器130と論理和ゲート132の出力が共にHレベルの場合に,アボート判定結果AB1を自分の実行中のトランザクションをアボートするアボート実行(Hレベル)にし,第1の比較器130と論理和ゲート132の出力がいずれか一方または両方がLレベルの場合に,アボート判定結果AB1をアボート非実行(Lレベル)にする論理積ゲート133を有する。
また,アボート判定回路126は,アボートカウンタのカウント値CNT_1とアボート閾値レジスタの閾値Vthとが等しいか否か判定する第2の比較器131と,第2の比較器131の出力と論理積ゲート133の出力を入力しアボートハンドラへのジャンプ判定結果AB2を出力する論理積ゲート134とを有する。そして,トランザクションの競合を検出する論理和ゲート132の出力が,競合判定結果CFとして出力される。
上記の構成を有するキャッシュユニットは,他のCPUコアから受信した無効化要求に応答して,キャッシュパイプライン122は,オーダーポート121経由で受信した無効化要求のトランザクションが有するアボートカウント値CNT_2をアボート判定回路126に送信し,アボート判定を実行させる。アボート判定回路126は,キャッシュタグの読み出しフラグRと書込フラグWに基づいて無効化要求を送信したCPUコアが実行中の第1のトランザクションと無効化要求を受信したCPUコアが実行中の第2のトランザクションとが競合するか否かを論理和ゲート132により判定する。つまり,キャッシュパイプライン122は,図8に示した無効化要求のトランザクション内のアドレスが,キャッシュタグ124のアドレスタグと一致するキャッシュブロックのRフラグとWフラグとを読み出し,アボート判定回路126に送信する。RフラグとWフラグは,トランザクション開始時はリセット状態にあるので,RフラグまたはWフラグが「1」にセットされていれば,そのキャッシュブロックは実行中のトランザクション中に変更された,つまりメモリからキャッシュされたことを意味する。したがって,論理和ゲート132の出力の競合判定結果CFがHレベルの場合は,トランザクションが競合していることを意味する。
さらに,アボート判定回路126では,第1の比較器130が,無効化要求のアボートカウント値CNT_2と,アボートカウンタ127のカウント値CNT_1とを比較して,アボートカウンタ127のカウント値CNT_1が,受信したアボートカウント値CNT_2よりも小さければ,Hレベルを出力し,大きければLレベルを出力する。そして,トランザクションが競合している場合(CF=H)は,第1の比較器130がHレベルを出力していれば(CNT_1<CNT_2),論理積ゲート133は,実行中のトランザクションをアボートするというアボート判定結果AB1(Hレベル)を出力し,第1の比較器130がLレベルを出力していれば(CNT_1>CNT_2),実行中のトランザクションをアボートしないというアボート判定結果AB1(Lレベル)を出力する。一方,トランザクションが競合していない場合は(CF=L),アボート判定結果AB1をLレベルにする。そして,アボート判定回路126は,そのアボート判定結果AB1と,競合判定結果CFをキャッシュパイプライン122に返信する。
(1)実行中の第2のトランザクションをアボートすると判定された場合(AB1=H)は,命令制御部13は,実行中のトランザクションをリセットしてトランザクションの開始アドレスにジャンプし,キャッシュパイプライン122は,キャッシュタグ124内のアボートされるトランザクション中に変更されたキャッシュブロックのタグを無効化する。トランザクション中に変更されたキャッシュブロックは,RフラグまたはWフラグが「1」になっていることで検出できる。この場合は,キャッシュパイプライン122は,図8の返信するトランザクション内のアボート要求ビットを,他のCPUコアにアボートを要求しない「0」に設定する。
(2)一方,競合する実行中のトランザクションをアボートせず継続すると判定された場合(CF=H,AB1=L)は,命令制御部11,13は実行中のトランザクションを継続して実行する。この場合は,キャッシュパイプライン122は,図8の返信するトランザクション内のアボート要求ビットを,他のCPUコアにアボートを要求する「1」に設定する。
(3)そして,実行中のトランザクションが競合しないと判定された場合(CF=L)は,命令制御部11,13は共に実行中のトランザクションを継続して実行する。この場合は,キャッシュパイプライン122は,図8の返信するトランザクション内のアボート要求ビットを,他のCPUコアにアボートを要求しない「0」に設定する。つまり,両CPUコアは実行中のトランザクションを継続することになる。
そして,キャッシュパイプライン122は,他のCPUコアに無効化要求に対する返信のトランザクションを,コンプリートポート123を介して返信する。
アボート判定回路126では,第2の比較器131がアボートカウンタのカウント値CNT_1がアボート閾値Vthに達して等しくなるとHレベルを出力する。そして,論理積ゲート133がアボートすると判定した場合(Hレベル)に,論理積ゲート134により,アボートハンドラへのジャンプ判定結果AB2をHレベルにしてジャンプを命令制御部11,13に要求する。カウント値CNT_1がアボート閾値Vthに達してない場合は,アボートハンドラへのジャンプ判定結果AB2はLレベルのままである。
アボートハンドラへのジャンプ判定結果AB2がHレベルの場合は,命令制御部13は,実行中の実行中のトランザクションをアボートして,ソフトウエアによるアボートハンドラにジャンプする。これにより,強制的にロックを取得してトランザクションを実行する。
図13は,アボートハンドラへのジャンプ先を記述したトランザクションのプログラム例である。トランザクションのアドレス00の開始命令TxStartのオペランド欄に,アボートハンドラのジャンプ先アドレスが記述されている。ジャンプ先のアボートハンドラはロックを取得して,アドレス01にリターンし,それ以降のトランザクションの命令が実行される。
なお,第1の比較器130が,アボートカウンタのカウント値CNT_1と無効化要求のアボートカウント値CNT_2とが等しい場合は,出力をHレベルにしてアボートするかLレベルにして非アボートするかのいずれかに設計すればよい。
以上のように,第1の実施の形態によれば,トランザクションのアボート回数をアボートカウンタに記憶しておいて,第1のCPUコアが書込命令を実行するときに自分のアボートカウント値を無効化要求に含めて他のCPUコア,つまり第2のCPUコアに送信し,第2のCPUコアのアボート判定回路が,トランザクションが競合するか否かを判定し,競合する場合に,無効化要求内の第1のトランザクションのアボートカウント値と,アボートカウンタ内の第2のトランザクションのアボートカウント値とを比較して,第1,第2のCPUコアの第1,第2のトランザクションのいずれをアボートすべきかを判定する。このように,無効化要求のトランザクションに,アボートカウント値のようなトランザクションの状態情報を含ませておくことで,無効化要求を受信したCPUコアに,そのトランザクションの状態情報に基づいて,いずれのCPUコアがアボートするかを判定させることができる。
[第3の実施の形態]
第3の実施の形態では,アボート判定回路が,トランザクションの状態情報としてトランザクションの実行時間関連情報を利用し,アボート判定を実行する。トランザクションの実行時間関連情報の例は,トランザクションの実行開始後の実経過時間(μsec)である実行時間,トランザクションの実行開始後のクロックサイクル数,トランザクションの実行開始から実行されたプログラムの命令数である。
第3の実施の形態においても,図4,5,6で説明した演算処理装置の構成と,排他処理のための無効化要求とアボート判定の処理を行う。そして,第3の実施の形態では,アボート判定論理として,競合したトランザクションの実行時間,クロック数,プログラムステップ数などの実行時間関連情報が短いまたは少ないほうのトランザクションをアボートして,長いまたは多いほうのトランザクションの実行を継続するというアボート判定論理を採用する。
図14は,第3の実施の形態におけるキャッシュユニット12,14の構成を示す図である。図14のキャッシュユニットにおける,図9に示したキャッシュユニットと異なる構成は,実行時間関連情報をカウントする実行時間カウンタ129を有することであり,アボート判定回路126が,実行時間カウンタ値に基づいて,アボート判定を行う。他の構成は,図9−11と同じである。
図15は,第3の実施の形態における無効化要求のトランザクションのフォーマットを示す図である。図8のフォーマットと異なる点は,11ビットの実行時間関連情報を有することである。それ以外は,図8のフォーマットと同じである。なお,図15のフォーマットにおいて,アボートカウント値はなくても良い。
図16は,第3の実施の形態におけるアボート判定回路126を示す図である。このアボート判定回路126は,図12のアボート判定回路の第1の比較器130の代わりに,実行時間カウンタの実行時間TIME_1と無効化要求に含められている実行時間TIME_2とを比較する第3の比較器135を有する。それ以外の構成は,図12と同じである。また,論理値表も図12と同様になる。
第3の比較器135は,TIME_1<TIME_2の場合に出力をHレベルにし,トランザクションが競合している場合に(CF=H),論理積ゲート133のアボート判定結果AB1をアボートする(Hレベル)にして,自分のトランザクション,つまり,第2のトランザクションをアボートさせる。
一方,第3の比較器135は,TIME_1>TIME_2の場合に出力をLレベルにし,論理積ゲート133のアボート判定結果AB1を非アボート(Lレベル)にして,相手のトランザクション,つまり,第1のトランザクションをアボートさせる。
さらに,トランザクションが競合しない場合は,競合判定結果CFは非競合(Lレベル)になり,アボート判定結果AB1も非アボート(Lレベル)になる。
第3の実施の形態においても,キャッシュユニット12,14は,アボートカウンタ127と,アボート閾値レジスタ128とを有し,アボート判定回路126は,アボート回数がアボート閾値に達した後更にアボートする場合に,アボートハンドラへのジャンプ判定結果AB2をジャンプ(Hレベル)にする。この点は,第2の実施の形態と同じである。
[第4の実施の形態]
図17は,第4の実施の形態におけるアボート判定回路を示す図である。第4の実施の形態では,第2の実施の形態と同様に,アボート回数を比較して,アボート回数が少ないほうのトランザクションをアボートさせる。但し,第2の実施の形態と異なり,アボート回数が等しい場合に,第3の実施の形態の判定論理である実行時間関連情報を比較して,実行時間関連情報が短いまたは少ないほうをアボートさせる。
図17に示したアボート判定回路126は,アボートカウンタのカウント値CNT_1と無効化要求のカウント値CNT_2とが等しいか否かを判定する第4の比較器136と,論理積ゲート137と,論理和ゲート138とを有する。
アボート判定回路126の動作は次の通りである。アボートカウンタのカウント値CNT_1と無効化要求のカウント値CNT_2とが等しくない場合は,図12と同じ動作になり,カウント値が少ない方をアボートするアボート判定結果AB1を出力する。一方,等しい場合は,図16と同じ動作になり,実行時間が少ない方法をアボートするアボート判定結果AB1を出力する。アボートカウンタのカウント値CNT_1がアボート閾値Vthに達した後にアボートする判定になった場合に,アボートハンドラへのジャンプ判定結果AB2をHレベルにすることは,図12,図16と同じである。
[第5の実施の形態]
図18は,第5の実施の形態における情報処理装置(コンピュータ)を示す図である。第5の実施の形態では,NUMA(Cache Coherent Non Uniform Memory Access)アーキテクチャのコンピュータシステムに適用される。
図18の情報処理装置は,複数の演算処理装置(CPUチップ,以下単にCPUと称する)CPU_1,CPU_2,CPU_3を有し,バス19とネットワークスイッチSW1,SW2を介して接続されている。また,各CPUは,命令制御部11,13,17とキャッシュユニット12,14,18を有する。演算処理装置CPU_1はメモリ20を管理するホームCPUである。メモリ20には,メモリ内のデータをキャッシュしているCPUを管理するディレクトリ領域が設けられている。図18の例では,アドレス0x00fのデータD3がCPU_3のキャッシュユニット18にキャッシュされている。そのため,メモリ20内のディレクトリにはアドレス0x00fに対応してキャッシュしているCPU_3が記憶されている。
このようにCPU_3がアドレス0x00fのデータD3をキャッシュしている状態で,CPU_2の命令制御部13がアドレス0x00fにデータD1を書込むストア命令を実行する場合,CPU_2はメモリを管理しているホームCPU_1を介してCPU_3とキャッシュコヒーレンシを維持するための排他処理を行う。書込命令を実行するCPU_2をローカルCPUと称する。また,メモリのデータをキャッシュしているCPU_3をリモートCPUと称する。
NUMAアーキテクチャのコンピュータシステムでは,書込命令を実行するローカルCPU(CPU_2)が書込要求をホームCPU(CPU_1)に送信し,ホームCPU(CPU_1)がメモリ20内のディレクトリを参照して書込先アドレスのデータをキャッシュ済みのリモートCPU(CPU_3)を検出し,ホームCPU(CPU_1)がリモートCPU(CPU_3)に無効化要求を送信する。一般には,リモートCPU(CPU_3)はトランザクションが競合する場合には実行中のトランザクションをアボートし,キャッシュメモリを無効化し,無効化完了報告をホームCPU(CPU_1)に返信する。ホームCPU(CPU_1)は,無効化完了報告の返信を受信したら,書込要求の書込先アドレスにデータを書込み,ローカルCPU(CPU_2)に書込完了報告を送信する。
上記のように,NUMAのコンピュータシステムでは,複数の演算処理装置CPU_1,CPU_2,CPU3の間でメモリアクセスにかかる時間が均等ではない。そのため,メモリを管理するホームCPU(CPU_1)に近いCPUほど一定時間内に多数のアクセスを実行することができる。ここで,ホームCPUに近いCPUとは,ホームCPU(CPU_1)までの信号伝搬時間が短いCPUという意味であり,図18の例では,リモートCPU(CPU_3)は複数のネットワークスイッチSW1,SW2を介してホームCPU(CPU_1)に接続されているので,ローカルCPU(CPU_2)よりも信号伝搬時間が長く,CPU間距離が長い。
そこで,各CPUのアボート判定回路は,競合するトランザクション間でより平等にアボート判定をするために,競合するトランザクションを実行中のCPUのホームCPUに対する物理的なCPU間距離情報,例えばネットワークスイッチ数や,信号伝搬時間に基づいて,CPU間距離が短いほどアボートし,長いほどアボートせずに優先的にトランザクションを実行する。これにより,ホームCPUへのアクセス頻度が低いCPUに優先的にトランザクションを実行させることができる。
図19は,第5の実施の形態における排他処理のフローチャート図である。上記の情報処理装置において,キャッシュコヒーレンシを維持するための排他処理は次のように行われる。ローカルCPU(CPU_2)の命令制御部13がキャッシュユニット14に書込要求を発行する(S31)。それに応答して,キャッシュユニット14は,ホームCPU(CPU_1)に書込要求を送信する(S32)。この書込要求にはローカルCPU(CPU_2)のIDとアクセス先アドレスなどが含まれている。
ホームCPU(CPU_1)は,メモリ20内のディレクトリを参照して,書込先アドレスのデータが他のCPUで既にキャッシュされているか否かをチェックし,キャッシュ済みの場合に,無効化要求をリモートCPU(CPU_3)に送信する(S33)。この無効化要求には,ホームCPUのCPU-ID(CPU_1)に加えてローカルCPUのCPU-ID(CPU_2)とアクセス先アドレスとアボート要求ビットが含まれている。
リモートCPU(CPU_3)のキャッシュユニット18は,受信した無効化要求について,アボート判定を行う(S34)。このアボート判定では,キャッシュユニット18は,ローカルCPU(CPU_2)とホームCPU(CPU_1)との間の時間的距離,例えば信号伝播時間と,リモートCPU(CPU_3)とホームCPU(CPU_1)との間の時間的距離とを比較して,時間的距離が短い方のトランザクションをアボートし,時間的距離が長い方のトランザクションを継続するように判定する。時間的距離が長いほど,書込要求がホームCPU(CPU_1)受信される頻度が低いので,上記のような判定論理を採用することで,特定のCPUのトランザクションのアボートが繰り返されてソフトウエアによるロック処理にジャンプすることを抑制することができる。
図20は,第5の実施の形態におけるキャッシュユニット12,14,18を示す図である。図20のキャッシュユニットの図9,図14のキャッシュユニットとは異なる構成は,CPU間距離計算ユニット150を有する構成である。このキャッシュユニットでは,キャッシュパイプライン122がオーダーポート121に受信した無効化要求内のローカルCPUのCPU-IDをアボート判定回路126に送信し,CPU間距離計算ユニット150がローカルCPUのCPU-IDに基づいてローカルCPU(CPU_2)とホームCPU(CPU_1)間の時間的距離(CPU間距離)を計算し,アボート判定回路126に出力する。そして,アボート判定回路126は,ローカルCPU(CPU_2)と自分(リモートCPU(CPU_3))のホームCPU(CPU_1)までの時間的距離を比較して,自分の時間的距離が短い場合に自分のトランザクションをアボートするよう判定する。
図21は,第5の実施の形態におけるアボート判定回路の回路図である。このアボート判定回路の図12のアボート判定回路と異なる構成は,第1の比較器130の代わりに,時間的距離(CPU間距離)を比較する第5の比較器151を有することにある。そして,第5の比較器151は,CPU間距離計算ユニットが計算したローカルCPU(CPU_2)のCPU間距離DIS_2より,自分つまりリモートCPU(CPU_3)のCPU間距離DIS_1のほうが短いと(DIS_2>DIS_1),自分のトランザクションをアボートする判定(Hレベル)を出力する。逆に,長いと(DIS_2<DIS_1),アボートしない(非アボート,Lレベル)を出力する。したがって,キャッシュタグの読み出しフラグRまたは書込フラグWが「1」で書込先アドレスのキャッシュブロックが競合する場合(CF=H),第5の比較器151の比較結果に応じて,アボート判定結果AB1が出力される。第5の実施の形態におけるアボート判定回路の判定論理は,図12の論理値表と同様である。
図19に戻り,リモートCPU(CPU_3)のキャッシュユニット18は,アボート判定結果に基づいてアボート要求ビットを設定して,ホームCPU(CPU_1)に返信する(S35)。図6のS14と同様である。ホームCPU(CPU_1)は,アボート判定結果がアボートであり,返信のアボート要求ビットが「0」(アボート非要求)の場合は,書込処理を実行し,逆の判定結果の場合は,書込処理を実行しない(S37)。そして,ホームCPU(CPU_1)は,書込要求に対する処理結果をローカルCPU(CPU_2)に送信する(S38)。これに応答して,ローカルCPU(CPU_2)のキャッシュユニット13は,処理結果が非書込の場合,実行中のトランザクションをアボートしてそのトランザクション中に変更されたキャッシュメモリを無効化する(S39)。
一方,リモートCPU(CPU_3)のキャッシュユニット18は,アボート判定結果に基づいて,何もせずに実行中のトランザクションを継続するか,または,実行中のトランザクションをアボートして,そのトランザクション中に変更されたキャッシュメモリを無効化する(S36)。
図18において,CPU_1, CPU_2, CPU_3は,書込要求を発行するローカルCPUになることもあれば,無効化要求を受信してアボート判定を行うリモートCPUになることもある。したがって,これらのCPUのキャッシュユニット12,14,18は,上記で説明した構成とアボート判定回路を有する。
また,図18のCPU_1, CPU_2, CPU_3が,複数のCPUコアを有し,各CPUコアが命令制御部とキャッシュユニットを有する場合も同様に,上記の第5の実施の形態を適用することができる。
[第6の実施の形態]
図22は,第6の実施の形態における情報処理装置を示す図である。図22の情報処理装置は,複数の演算処理装置(CPUチップ)CPU_1,CPU_2,CPU_3を有するコンピュータである。複数の演算処理装置(CPUチップ)CPU_1,CPU_2,CPU_3は,共通のメモリ20を共有している。したがって,演算処理装置(CPUチップ)CPU_1,CPU_2,CPU_3のキャッシュメモリ間で,キャッシュコヒーレンシを保つ必要がある。そこで,第6の実施の形態においても,各キャッシュユニットが,第2,第3の実施の形態と同様のアボート判定を実行する。
以上のとおり,あるCPU(CPUコアまたはCPUチップ)で書込要求が発生した場合に,他のCPUに書込要求を送信し,他のCPUにトランザクションの競合の有無と,競合している場合に,実行中のトランザクションをアボートするか否かの判定を行わせ,アボートすると判定されたCPUがトランザクションをアボートしそのトランザクションで変更したキャッシュブロックを無効化する。そして,アボート判定では,アボート回数,トランザクションの実行時間関連情報,CPU間距離などに基づいて判定することで,より平等にアボート判定を行うことができる。それにより特定のCPUのトランザクションがアボートを繰り返してソフトエウアによるアボートハンドラの処理が行われることを抑制することができる。上記のように無効化要求を受信したCPUにアボート判定を行わせることで,ハードウエアのトランザクショナルメモリを容易に実現することができる。
以上の実施の形態をまとめると,次の付記のとおりである。
(付記1)
メモリへの書込命令を制御する第1の命令制御部と,第1のキャッシュメモリを有する第1のキャッシュユニットとを有する第1の演算処理部と,
前記メモリへの書込命令を制御する第2の命令制御部と,第2のキャッシュメモリを有する第2のキャッシュユニットとを有する第2の演算処理部とを有し,
前記第1の演算処理部が,実行中の第1のトランザクション内での前記第1のキャッシュメモリへの書込要求時に,前記第2の演算処理部に無効化要求を送信し,
前記第2の演算処理部の前記第2のキャッシュユニットは,前記無効化要求に応答して,実行中の第2のトランザクションが前記書込要求先のキャッシュブロックについて競合する場合に,前記無効化要求に含まれる情報に基づいて前記第2のトランザクションをアボートするか否かを判定し,判定結果を前記第1の演算処理部に返信する演算処理装置。
(付記2)
付記1において,
前記無効化要求に含まれる情報は,前記第1の演算処理部が実行中のトランザクションの状態情報である演算処理装置。
(付記3)
付記1において,
前記無効化要求に含まれる情報は,前記第1のトランザクションの第1のアボート回数を有し,
前記第2のキャッシュユニットは,前記第2のトランザクションの第2のアボート回数が前記第1のアボート回数より少ない場合に,前記第2のトランザクションをアボートする判定結果を前記第1の演算処理部に返信する演算処理装置。
(付記4)
付記1において,
前記無効化要求に含まれる情報は,前記第1のトランザクションの第1の実行時間関連情報を有し,
前記第2のキャッシュユニットは,前記第2のトランザクションの第2の実行時間関連情報が前記第1の実行時間関連情報より短い場合に,前記第2のトランザクションをアボートする判定結果を前記第1の演算処理部に返信する演算処理装置。
(付記5)
付記4において,
前記実行時間関連情報は,トランザクションの実行開始からの経過時間である実行時間,前記実行開始からのクロックサイクル数,実行開始からの実行済み命令数のいずれかである演算処理装置。
(付記6)
付記1において,
前記判定結果が前記第2のトランザクションをアボートする場合は,前記第2の演算処理部は,前記第2のトランザクションをアボートし,前記第2のトランザクションで変更されたキャッシュメモリを無効化し,前記第1の演算処理部は,前記書込要求を実行し,
前記判定結果が前記第2のトランザクションをアボートしない場合は,前記第2の演算処理部は,前記第2のトランザクションの実行を継続し,前記第1の演算処理部は,前記第1のトランザクションをアボートし,前記第1のトランザクションで変更されたキャッシュメモリを無効化する演算処理装置。
(付記7)
付記1において,
実行中の第2のトランザクションが前記書込要求先のキャッシュブロックについて競合しない場合に,前記第2の演算処理部は,前記第2のトランザクションの実行を継続し,前記第1の演算処理部は,前記書込要求を実行する演算処理装置。
(付記8)
メモリへの書込命令を制御する第1の命令制御部と,第1のキャッシュメモリを有する第1のキャッシュユニットとを有する第1の演算処理装置と,
前記メモリへの書込命令を制御する第2の命令制御部と,第2のキャッシュメモリを有する第2のキャッシュユニットとを有する第2の演算処理装置と,
前記メモリへのアクセスを制御する第3の演算処理装置とを有し,
前記第1の演算処理装置が,実行中の第1のトランザクション内での前記第1のキャッシュメモリへの書込要求時に,前記第3の演算処理装置に書込要求を送信し,
前記第3の演算処理装置が,前記第2の演算処理装置に無効化要求を送信し,
前記第2の演算処理装置の前記第2のキャッシュユニットは,前記無効化要求に応答して,実行中の第2のトランザクションが前記書込要求先のキャッシュブロックについて競合する場合に,前記無効化要求に含まれる情報に基づいて前記第2のトランザクションをアボートするか否かを判定し,判定結果を前記第3の演算処理装置に返信する情報処理装置。
(付記9)
付記8において,
前記無効化要求に含まれる情報は,前記第1の演算処理装置の識別情報と,アクセス先メモリアドレスとを有し,
前記第2のキャッシュユニットは,前記第2の演算処理装置と前記第3の演算処理装置との信号伝搬時間が,前記第1の演算処理装置と前記第3の演算処理装置との信号伝搬時間より短い場合に,前記第2のトランザクションをアボートする判定結果を前記第1の演算処理装置に返信する演算処理装置。
(付記10)
トランザクション内のメモリへの書込命令を制御する命令制御部と,
キャッシュメモリを有するキャッシュユニットとを有し,
前記キャッシュユニットは,他の演算処理装置内のキャッシュメモリへの書込要求時に受信した無効化要求に応答して,実行中のトランザクションが前記書込要求先のキャッシュブロックについて競合する場合に,前記無効化要求に基づいて前記実行中のトランザクションをアボートするか否か判定し,判定結果を返信する演算処理装置。
(付記11)
メモリへの書込命令を制御する第1の命令制御部と,第1のキャッシュメモリを有する第1のキャッシュユニットとを有する第1の演算処理装置と,
前記メモリへの書込命令を制御する第2の命令制御部と,第2のキャッシュメモリを有する第2のキャッシュユニットとを有する第2の演算処理装置とを有し,
前記第1の演算処理装置が,実行中の第1のトランザクション内での前記第1のキャッシュメモリへの書込要求時に,前記第2の演算処理装置に無効化要求を送信し,
前記第2の演算処理装置の前記第2のキャッシュユニットは,前記無効化要求に応答して,実行中の第2のトランザクションが前記書込要求先のキャッシュブロックで競合する場合に,前記無効化要求に含まれる情報に基づいて前記第2のトランザクションをアボートするか否かを判定し,判定結果を前記第1の演算処理装置に返信する情報処理装置。
(付記12)
メモリへの書込命令を制御する第1の命令制御部と,第1のキャッシュメモリを有する第1のキャッシュユニットとを有する第1の演算処理部と,
前記メモリへの書込命令を制御する第2の命令制御部と,第2のキャッシュメモリを有する第2のキャッシュユニットとを有する第2の演算処理部とを有する演算処理装置の制御方法であって,
前記第1の演算処理部が,実行中の第1のトランザクション内での前記第1のキャッシュメモリへの書込要求時に,前記第2の演算処理部に無効化要求を送信する工程と,
前記第2の演算処理部の前記第2のキャッシュユニットが,前記無効化要求に応答して,実行中の第2のトランザクションが前記書込要求先のキャッシュブロックについて競合する場合に,前記無効化要求に含まれる情報に基づいて前記第2のトランザクションをアボートするか否かを判定し,判定結果を前記第1の演算処理部に返信する工程とを有する演算処理装置の制御方法。
(付記13)
メモリへの書込命令を制御する第1の命令制御部と,第1のキャッシュメモリを有する第1のキャッシュユニットとを有する第1の演算処理装置と,
前記メモリへの書込命令を制御する第2の命令制御部と,第2のキャッシュメモリを有する第2のキャッシュユニットとを有する第2の演算処理装置と,
前記メモリへのアクセスを制御する第3の演算処理装置とを有する情報処理装置の制御方法であって,
前記第1の演算処理装置が,実行中の第1のトランザクション内での前記第1のキャッシュメモリへの書込要求時に,前記第3の演算処理装置に書込要求を送信する工程と,
前記第3の演算処理装置が,前記第2の演算処理装置に無効化要求を送信する工程と,
前記第2の演算処理装置の前記第2のキャッシュユニットが,前記無効化要求に応答して,実行中の第2のトランザクションが前記書込要求先のキャッシュブロックについて競合する場合に,前記無効化要求に含まれる情報に基づいて前記第2のトランザクションをアボートするか否かを判定し,判定結果を前記第3の演算処理装置に返信する工程とを有する情報処理装置の制御方法。
10:演算処理装置
CPU_1,CPU_2,CPU_3:演算処理部,CPUコア
11,13:命令制御部
12,14:キャッシュユニット
20:メモリ

Claims (10)

  1. メモリへの書込命令を制御する第1の命令制御部と,第1のキャッシュメモリを有する第1のキャッシュユニットとを有する第1の演算処理部と,
    前記メモリへの書込命令を制御する第2の命令制御部と,第2のキャッシュメモリを有する第2のキャッシュユニットとを有する第2の演算処理部とを有し,
    前記第1の演算処理部が,実行中の第1のトランザクション内での前記第1のキャッシュメモリへの書込要求時に,前記第2の演算処理部に無効化要求を送信し,前記無効化要求は書込要求先アドレスと所定の情報を有し,
    前記第2の演算処理部の前記第2のキャッシュユニットは,前記無効化要求に応答して,実行中の第2のトランザクションが前記書込要求先アドレスのキャッシュブロックについて競合するか否かの第1の判定と前記所定の情報に基づいて前記第2のトランザクションをアボートするか否かの第2の判定とを行い前記第1の判定と第2の判定が共に真なら前記第2のトランザクションをアボートすると判定し,いずれかが偽なら前記第2のトランザクションをアボートしないと判定し,判定結果を前記第1の演算処理部に返信する演算処理装置。
  2. 請求項1において,
    前記所定の情報は,前記第1のトランザクションの状態情報である演算処理装置。
  3. 請求項1において,
    前記所定の情報は,前記第1のトランザクションの第1のアボート回数を有し,
    前記第2のキャッシュユニットは,前記第2のトランザクションの第2のアボート回数が前記第1のアボート回数より少ない場合に,前記第2の判定を真と判定する演算処理装置。
  4. 請求項1において,
    前記所定の情報は,前記第1のトランザクションの第1の実行時間関連情報を有し,
    前記第2のキャッシュユニットは,前記第2のトランザクションの第2の実行時間関連情報が前記第1の実行時間関連情報より短い場合に,前記第2の判定を真と判定する演算処理装置。
  5. 請求項1において,
    前記判定結果が前記第2のトランザクションをアボートする場合は,前記第2の演算処理部は,前記第2のトランザクションをアボートし,前記第2のトランザクションで変更されたキャッシュメモリを無効化し,前記第1の演算処理部は,前記書込要求を実行し,
    前記判定結果が前記第2のトランザクションをアボートしない場合は,前記第2の演算処理部は,前記第2のトランザクションの実行を継続し,前記第1の演算処理部は,前記第1のトランザクションをアボートし,前記第1のトランザクションで変更されたキャッシュメモリを無効化する演算処理装置。
  6. メモリへの書込命令を制御する第1の命令制御部と,第1のキャッシュメモリを有する第1のキャッシュユニットとを有する第1の演算処理装置と,
    前記メモリへの書込命令を制御する第2の命令制御部と,第2のキャッシュメモリを有する第2のキャッシュユニットとを有する第2の演算処理装置と,
    前記メモリへのアクセスを行う第3の演算処理装置とを有し,
    前記第1の演算処理装置が,実行中の第1のトランザクション内での前記メモリへの書込要求時に,前記第3の演算処理装置に書込要求を送信し,
    前記第3の演算処理装置が,前記第2の演算処理装置に無効化要求を送信し,
    前記第2の演算処理装置の前記第2のキャッシュユニットは,前記無効化要求に応答して,実行中の第2のトランザクションが前記書込要求の書込要求先のキャッシュブロックについて競合する場合,前記第2の演算処理装置と前記第3の演算処理装置との間の信号伝搬時間が,前記第1の演算処理装置と前記第3の演算処理装置との間の信号伝搬時間より短いか否か基づいて,前記第2のトランザクションをアボートするか否かを判定し,判定結果を前記第3の演算処理装置に返信する情報処理装置。
  7. 請求項において,
    前記無効化要求に含まれる情報は,前記第1の演算処理装置の識別情報と,アクセス先メモリアドレスとを有し,
    前記第2のキャッシュユニットは,前記第2の演算処理装置と前記第3の演算処理装置との間の信号伝搬時間が,前記第1の演算処理装置と前記第3の演算処理装置との間の信号伝搬時間より短い場合に,前記第2のトランザクションをアボートする判定結果を前記第3の演算処理装置に返信する情報処理装置。
  8. トランザクション内のメモリへの書込命令を制御する命令制御部と,
    キャッシュメモリを有するキャッシュユニットとを有し,
    前記キャッシュユニットは,他の演算処理装置が実行中の他のトランザクション内でのキャッシュメモリへの書込要求時に信した書込要求先アドレスと所定の情報を有する無効化要求の受信に応答して,実行中のトランザクションが前記書込要求先アドレスのキャッシュブロックについて競合するか否かの第1の判定と前記所定の情報基づいて前記実行中のトランザクションをアボートするか否かの第2の判定とを行い前記第1の判定と第2の判定が共に真なら前記実行中のトランザクションをアボートすると判定し,いずれかが偽なら前記実行中のトランザクションをアボートしないと判定し,判定結果を前記他の演算処理装置に返信する演算処理装置。
  9. メモリへの書込命令を制御する第1の命令制御部と,第1のキャッシュメモリを有する第1のキャッシュユニットとを有する第1の演算処理装置と,
    前記メモリへの書込命令を制御する第2の命令制御部と,第2のキャッシュメモリを有する第2のキャッシュユニットとを有する第2の演算処理装置とを有し,
    前記第1の演算処理装置が,実行中の第1のトランザクション内での前記第1のキャッシュメモリへの書込要求時に,前記第2の演算処理装置に無効化要求を送信し,前記無効化要求は書込要求先アドレスと所定の情報を有し,
    前記第2の演算処理装置の前記第2のキャッシュユニットは,前記無効化要求に応答して,実行中の第2のトランザクションが前記書込要求先アドレスのキャッシュブロックで競合するか否かの第1の判定と前記所定の情報に基づいて前記第2のトランザクションをアボートするか否かの第2の判定とを行い前記第1の判定と第2の判定が共に真なら前記第2のトランザクションをアボートすると判定し,いずれかが偽なら前記第2のトランザクションをアボートしないと判定し,判定結果を前記第1の演算処理装置に返信する情報処理装置。
  10. メモリへの書込命令を制御する第1の命令制御部と,第1のキャッシュメモリを有する第1のキャッシュユニットとを有する第1の演算処理部と,
    前記メモリへの書込命令を制御する第2の命令制御部と,第2のキャッシュメモリを有する第2のキャッシュユニットとを有する第2の演算処理部とを有する演算処理装置の制御方法であって,
    前記第1の演算処理部が,実行中の第1のトランザクション内での前記第1のキャッシュメモリへの書込要求時に,前記第2の演算処理部に書込要求先アドレスと所定の情報を有する無効化要求を送信する工程と,
    前記第2の演算処理部の前記第2のキャッシュユニットが,前記無効化要求に応答して,実行中の第2のトランザクションが前記書込要求先アドレスのキャッシュブロックについて競合するか否かの第1の判定と前記所定の情報に基づいて前記第2のトランザクションをアボートするか否かの第2の判定とを行い前記第1の判定と第2の判定が共に真なら前記第2のトランザクションをアボートすると判定し,いずれかが偽なら前記第2のトランザクションをアボートしないと判定し,判定結果を前記第1の演算処理部に返信する工程とを有する演算処理装置の制御方法。
JP2014000251A 2014-01-06 2014-01-06 演算処理装置,演算処理装置の制御方法及び情報処理装置 Active JP6244916B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2014000251A JP6244916B2 (ja) 2014-01-06 2014-01-06 演算処理装置,演算処理装置の制御方法及び情報処理装置
EP14200107.2A EP2891984B1 (en) 2014-01-06 2014-12-23 Transaction abort method in a multi-core CPU
EP16184313.1A EP3131018B1 (en) 2014-01-06 2014-12-23 Transaction abort method in a multi-core cpu.
US14/589,023 US9535839B2 (en) 2014-01-06 2015-01-05 Arithmetic processing device, method of controlling arithmetic processing device, and information processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014000251A JP6244916B2 (ja) 2014-01-06 2014-01-06 演算処理装置,演算処理装置の制御方法及び情報処理装置

Publications (2)

Publication Number Publication Date
JP2015129996A JP2015129996A (ja) 2015-07-16
JP6244916B2 true JP6244916B2 (ja) 2017-12-13

Family

ID=52272919

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014000251A Active JP6244916B2 (ja) 2014-01-06 2014-01-06 演算処理装置,演算処理装置の制御方法及び情報処理装置

Country Status (3)

Country Link
US (1) US9535839B2 (ja)
EP (2) EP3131018B1 (ja)
JP (1) JP6244916B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9430273B2 (en) * 2014-02-27 2016-08-30 International Business Machines Corporation Suppressing aborting a transaction beyond a threshold execution duration based on the predicted duration
US10929431B2 (en) * 2015-08-28 2021-02-23 Hewlett Packard Enterprise Development Lp Collision handling during an asynchronous replication
US9898202B2 (en) * 2015-11-30 2018-02-20 Samsung Electronics Co., Ltd. Enhanced multi-streaming though statistical analysis
US10101925B2 (en) * 2015-12-23 2018-10-16 Toshiba Memory Corporation Data invalidation acceleration through approximation of valid data counts
US11157307B2 (en) * 2017-05-24 2021-10-26 International Business Machines Corporation Count and transaction identifier based transaction processing
US10540316B2 (en) 2017-12-28 2020-01-21 Advanced Micro Devices, Inc. Cancel and replay protocol scheme to improve ordered bandwidth
JP7318203B2 (ja) * 2018-12-12 2023-08-01 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1584036A4 (en) * 2003-01-17 2008-06-18 Tacit Networks Inc METHOD AND SYSTEM FOR USING INTERMEDIATE STORAGE IN A DISTRIBUTED FILE SYSTEM
US7856537B2 (en) 2004-09-30 2010-12-21 Intel Corporation Hybrid hardware and software implementation of transactional memory access
JP2006301825A (ja) * 2005-04-19 2006-11-02 Hitachi Ltd アドレス競合時のスタベーション防止方法およびチップセットおよびマルチプロセッサシステム
US8108631B2 (en) * 2008-07-18 2012-01-31 Oracle America, Inc. Transactional memory support for non-coherent shared memory systems using selective write through caches
US8776063B2 (en) * 2008-11-26 2014-07-08 Oracle America, Inc. Method and system for hardware feedback in transactional memory
US9785462B2 (en) 2008-12-30 2017-10-10 Intel Corporation Registering a user-handler in hardware for transactional memory event handling
US8645632B2 (en) * 2009-02-04 2014-02-04 Oracle America, Inc. Speculative writestream transaction
US8316194B2 (en) * 2009-12-15 2012-11-20 Intel Corporation Mechanisms to accelerate transactions using buffered stores
US9015419B2 (en) * 2012-06-15 2015-04-21 International Business Machines Corporation Avoiding aborts due to associativity conflicts in a transactional environment
US8914586B2 (en) * 2012-07-31 2014-12-16 Advanced Micro Devices, Inc. TLB-walk controlled abort policy for hardware transactional memory
US9298626B2 (en) * 2013-09-26 2016-03-29 Globalfoundries Inc. Managing high-conflict cache lines in transactional memory computing environments

Also Published As

Publication number Publication date
EP2891984A3 (en) 2015-11-25
EP2891984A2 (en) 2015-07-08
US20150193346A1 (en) 2015-07-09
EP3131018A1 (en) 2017-02-15
US9535839B2 (en) 2017-01-03
EP3131018B1 (en) 2018-09-26
EP2891984B1 (en) 2017-08-02
JP2015129996A (ja) 2015-07-16

Similar Documents

Publication Publication Date Title
JP6244916B2 (ja) 演算処理装置,演算処理装置の制御方法及び情報処理装置
US6141734A (en) Method and apparatus for optimizing the performance of LDxL and STxC interlock instructions in the context of a write invalidate protocol
US9244725B2 (en) Management of transactional memory access requests by a cache memory
US7958319B2 (en) Hardware acceleration for a software transactional memory system
US7890725B2 (en) Bufferless transactional memory with runahead execution
US9390026B2 (en) Synchronizing access to data in shared memory
US8285937B2 (en) Fused store exclusive/memory barrier operation
US20110219215A1 (en) Atomicity: a multi-pronged approach
US7620954B2 (en) Mechanism for handling load lock/store conditional primitives in directory-based distributed shared memory multiprocessors
US9798577B2 (en) Transactional storage accesses supporting differing priority levels
US9367348B2 (en) Protecting the footprint of memory transactions from victimization
US10169103B2 (en) Managing speculative memory access requests in the presence of transactional storage accesses
US10031697B2 (en) Random-access disjoint concurrent sparse writes to heterogeneous buffers
US20210306414A1 (en) Circuitry and method
JP7281491B2 (ja) トランザクショナル比較及び破棄命令
CN101061462B (zh) 多处理器系统以及其中的排他控制方法
US9606923B2 (en) Information processing device with shared memory, memory order guarantee method using counters fence instructions in relation to cache-oriented requests, and recording medium storing program
KR20210021521A (ko) 트랜잭션 메모리를 지원하는 장치에서의 로드 전용 명령 처리
JP5828324B2 (ja) マルチプロセッサシステム、マルチプロセッサ制御方法、及びプロセッサ
KR102476438B1 (ko) 데이터 액세스의 원자 세트를 제공하는 장치 및 방법
JP6493187B2 (ja) 情報処理装置、演算処理装置および情報処理装置の制御方法
Net et al. 4 Multiprocessor Memory Systems
US20080091879A1 (en) Method and structure for interruting L2 cache live-lock occurrences

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160905

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170428

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170516

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170718

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171030

R150 Certificate of patent or registration of utility model

Ref document number: 6244916

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150