JP6179093B2 - 演算処理装置、演算処理方法 - Google Patents
演算処理装置、演算処理方法 Download PDFInfo
- Publication number
- JP6179093B2 JP6179093B2 JP2012264654A JP2012264654A JP6179093B2 JP 6179093 B2 JP6179093 B2 JP 6179093B2 JP 2012264654 A JP2012264654 A JP 2012264654A JP 2012264654 A JP2012264654 A JP 2012264654A JP 6179093 B2 JP6179093 B2 JP 6179093B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- address
- branch
- upper address
- unit
- 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
Links
- 238000012545 processing Methods 0.000 title claims description 56
- 238000003672 processing method Methods 0.000 title claims description 7
- 238000004364 calculation method Methods 0.000 claims description 33
- 238000013519 translation Methods 0.000 claims description 19
- 230000010365 information processing Effects 0.000 description 109
- 238000000034 method Methods 0.000 description 40
- 230000008569 process Effects 0.000 description 21
- 230000000052 comparative effect Effects 0.000 description 17
- 230000015654 memory Effects 0.000 description 17
- 238000006243 chemical reaction Methods 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 210000001072 colon Anatomy 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
岐予測装置に処理させるのは、ハードウェア資源の無駄といえる。
形態の構成は例示であり、本装置は実施形態の構成には限定されない。
<比較例>
図1から図3を参照して、比較例に係る情報処理装置を説明する。比較例に係る情報処理装置は、例えば、64ビットの仮想アドレス空間を有する。ここでは、64ビットのアドレスのうち、上位32ビットを上位アドレスと呼び、下位32ビットを下位アドレスと呼ぶ。
当て、固定的にコード化していた。したがって、例えば、開始位置が変動するユーザのライブラリ領域などは、効率的に分岐予測できていなかった。固定的なコードをどの上位アドレスに割り当てればよいかの判断が困難であるからである。
2:0]を生成する。そして、情報処理装置は、上位アドレスコードH32CODE[2:0]と、下位アドレス[31:0]とを組み合わせて(H32CODE[2:0]+下位アドレス[31:0])、演算結果の分岐先アドレスを生成する。
テージから分岐先算出のステージの間に上位アドレスのコードが更新されたと仮定する。例えば、上位アドレス’0xnnnnnnnn’のコードとして、上位アドレステーブルにコード’000’が登録されたとする。
報処理装置は、分岐先アドレスの不一致を検出することはできない。このように、上位アドレスに対するコードが更新されて分岐予測時の上位アドレスが消去されていると、情報
処理装置は、そもそもコード化された元の上位アドレスを復号化できない。このため、情報処理装置が上位アドレスの不一致を検出するのは困難となってしまう。
本実施形態では、まず、分岐先の上位アドレスが復号化不可能となるケースについて検討する。分岐先の上位アドレスについて検討するために、ここでは、情報処理装置が分岐命令を実行する場合を想定する。
‘x’)を割り当てる。そして、情報処理装置は、分岐先アドレス算出時の上位アドレス情報のコードが ‘x’であり、かつ分岐先の上位アドレスがプログラムカウンタと異なる場合、分岐先アドレスが不一致であると判断する。つまり、分岐先の上位アドレスが上位アドレステーブル未登録であって、かつ、演算器によって算出された分岐先の上位アドレスと分岐元の命令アドレス(プログラムカウンタ値)の上位アドレスとが不一致(4GBを越える分岐発生)であるとき、情報処理装置は、分岐先アドレスが予測分岐先アドレスと不一致であると判定する。
ターンをスレッド間で共有する構成を持つプロセッサの場合、処理が複雑となる。同時マルチスレッディングとは、単一のCPU(Central Processing Unit)で、複数のスレッ
ドを同時並行して実行する技術、処理等をいう。
でコード化する上位アドレスとコードとの対応関係の切り替えを実行すると、上記対応関係の切り替えタイミングが別のスレッド’b’における分岐命令実行中にあたる可能性が
ある。この場合、情報処理装置は、別のスレッド’b’の分岐予測時と分岐先アドレス算
出時とのコード化パターンの一致を保証できない。
であったと想定する。このような場合、情報処理装置は、別スレッド’b’の分岐命令に
対して、分岐先の上位アドレスが上位アドレステーブルに登録されているかどうかにかかわらず 上位アドレスを‘x’に符号化する。ここで、‘x’は、上位アドレステーブルに
登録されていない上位アドレスに対応するコードである。
いて分岐先アドレスの不一致を検出する。分岐先アドレスの不一致が検出されるとスレッド’b’の投機命令実行がキャンセルされ、命令フェッチが再開される。このため、スレ
ッド’b’においても、投機命令実行のキャンセル以降の分岐予測時と分岐先アドレス算
出時とにおいて、コード化する上位アドレスとコードとの対応関係が一致することが保証可能となる。情報処理装置は、スレッド’b’において命令フェッチが再開されたときに
スレッド’a’により更新された上位アドレステーブルによって分岐予測を行う。したが
って、情報処理装置は、プログラム実行中の動的な上位アドレスとコードとの対応関係をスレッド間で共有し、効率的な分岐予測をすることができる。
図4に、一実施例に係る情報処理装置のシステム構成を例示する。図1は、本実施例を適用したプロセッサを含むサーバ等のシステムを例示する。図1の情報処理装置は、複数のプロセッサ(CPU)1−1、1−2と、メモリ3−1、3−2と、外部装置との入出力制御を行うインターコネクト制御部5等を有する。ここで、プロセッサ1−1、1−2等を総称して、単にプロセッサ1と呼ぶ。なお、図1の情報処理装置において、プロセッサ数が1に限定される訳ではない。
制御部22、命令完了制御部18に出力する。
格納された命令コード順に命令完了(COMMIT)処理を行う。例えば、命令完了制御部18はレジスタ17へのレジスタ更新指示、プログラムカウンタ制御部19へのプログラムカウンタの更新指示を出力する。
ビットの組みは、[2:0][31:0]によって例示されている。また、コード化しない64ビットアドレスは、[63:0]によって例示されている。したがって、例えば、分岐予測部20の分岐履歴には、H32CODEと下位アドレス32ビットの組みである[2:
0][31:0]が格納される。
下位32ビットとを合わせて命令実行パイプラインを伝播させる。ここで、命令実行パイプラインは、例えば、命令フェッチ制御部11、命令アドレスバッファ12、分岐リザベーションステーション22A、プログラムカウンタ19A、分岐履歴更新部23、分岐予測部20などを含む。そして、プロセッサ1は、命令アドレスの上位32ビットを用いる構成要素において、伝播したH32CODEをデコードして上位アドレスへの変換を行う。
デコーダ(以下、H32デコーダ8)は、共通の上位アドレステーブルを参照してH32CODEの変換を実行する。上位アドレステーブルとはH32CODEと上位アドレスとの対応関係を記憶
した表であり、エントリごとにH32CODEと32ビットのアドレスとを有している。ここで、
プロセッサ1は、上位アドレステーブルとして、ひとつのテーブルをすべてのH32デコー
ダ8やH32エンコーダ7で共用するもの(構成例1)としてもよい。また、プロセッサ1
は、小規模なテーブルをH32デコーダ8やH32エンコーダ7の各々で持ち、すべてのテーブルの更新タイミングを同期させるもの(構成例2)としてもよい。本実施例では、プロセッサ1は構成例2を採用する。
トのアドレスと入力された上位アドレスとの比較を行う。そして、H32エンコーダ7は一
致したエントリに登録されているコード(H32CODE)をエンコード結果として出力する。H32エンコーダ7は符号化部の一例である。また、上位アドレステーブル71は、対応関係記憶部の一例である。
ーブル71の各エントリにそれぞれ接続されて、上位アドレステーブル71に登録されたコード(H32CODE)を選択して出力する選択回路を有している。選択回路は、例えば、コ
ンパレータ72と、2入力のANDゲート73とを有する。コンパレータ72は、上位アドレステーブル71の対応するエントリに登録された上位アドレスと、H32エンコーダ7
に入力された上位アドレスとを比較する。比較の結果、上位アドレステーブル71の対応するエントリに登録された上位アドレスと、H32エンコーダ7に入力された上位アドレス
とが一致すると、コンパレータ72は、真(オン、’1’)信号をANDゲート73の一方の入力端子に送出する。したがって、コンパレータ72は、上位アドレステーブル71の対応するエントリに登録された上位アドレスを参照信号として用いる。
ターン)が入力される。上述のように、コード(H32CODE)は、32ビットの上位アドレ
スを少数のビット数、この例では、3ビットでコード化するためのコードである。したがって、コンパレータ72から真(オン)信号の入力を受けたANDゲート73は、他方の入力端子から入力される上位アドレステーブル71の対応するエントリに登録されたコード(H32CODE)を出力する。また、コンパレータ72から偽(オフ)信号の入力を受けた
ANDゲート73は遮断となる。したがって、ANDゲート73は他方の入力端子から入力される上位アドレステーブル71の対応するエントリに登録されたコード(H32CODE)
を出力しない。つまり、図10では、概念的にANDゲート73が例示されているが、より具体的には、選択回路は、コンパレータ72によってオン・オフされるスイッチを含むようにすればよい。
ル71に登録されていなかったことを示す信号である。また、複数の入力のORゲート75は、複数のANDゲート73および複数入力のANDゲート74の出力のいずれかをセレクタ76に出力する。
。一方、上位アドレス無効化信号がオンの場合、セレクタ76は、選択回路の処理結果によらず、コード”100”を出力する。
力とし、H32デコーダ8内の上位アドレステーブルに登録された各エントリのコード(H32CODE)と入力されたコード(H32CODE)との比較を行い、一致したエントリに登録されて
いる32ビットの上位アドレスをデコード結果として出力する。
ブル81の各エントリにそれぞれ接続されて、上位アドレステーブル81に登録された上位アドレスを選択して出力する選択回路を有している。H32デコーダ8は、復号化部の一
例である。また、上位アドレステーブル81は、対応関係記憶部の一例である。
、上位アドレステーブル81の対応するエントリに登録されたコード(H32CODE)と、H32デコーダ8に入力されたコード(H32CODE)とが一致すると、コンパレータ82は、真(
オン、’1’)信号をANDゲート83の一方の入力端子に送出する。したがって、コンパレータ82は、上位アドレステーブル81の対応するエントリに登録されたコード(H32CODE)を参照信号として用いる。
れて上位アドレスに変換される。また、コンパレータ82から偽(オフ、’0’)信号の入力を受けたANDゲート83は遮断となる。この場合、ANDゲート83は他方の入力端子から入力される上位アドレステーブル81の対応するエントリに登録された上位アドレスを出力しない。したがって、図11においても、図10と同様、概念的にANDゲート83が例示されているが、より具体的には、選択回路は、コンパレータ82によってオン・オフされるスイッチを含むようにすればよい。
コード(H32CODE)’000’に対するデコード結果として、’0xaaaaaaaa’を出力する
。また、入力されたコード(H32CODE)に一致するエントリがない、あるいは上位アドレ
ス変換無効化信号が’1’であった場合は、H32デコーダ8は、比較結果が不一致であったとし、現在実行処理中の命令アドレスであるプログラムカウンタ19Aの上位アドレスをデコード結果として出力する。
、複数のH32エンコーダ7を区別するため、符号7−1、7−2を用いる。例えば、命令
フェッチ制御部11はH32デコーダ8−1を有しており、前述のように分岐予測部20、
分岐制御部22、プログラムカウンタ制御部19から受け取ったH32CODEおよび前回命令
フェッチに使用したH32CODEから次に命令フェッチに使用するH32CODEを選択し、H32デコ
ーダ8−1により上位アドレスへの変換を行う。命令フェッチ制御部11は変換後のアドレスを、フェッチアドレスの上位アドレスとして命令フェッチを実行する。上位アドレステーブル81に、H32CODEと一致するエントリがなかった場合は、H32デコーダ8−1は、その時点で実行中である命令アドレスを示すプログラムカウンタの上位ビットを出力する。したがって、命令フェッチ制御部11はプログラムカウンタの上位ビットを命令フェッチアドレスの上位アドレスとして命令フェッチを実行する。このように、上位アドレステーブル81にH32CODEと一致するエントリがなかった場合、命令フェッチアドレスが誤っ
ている可能性がある。しかし、実行中の命令アドレスの上位アドレスを命令フェッチアドレスに用いることで、キャッシュの書き潰しを抑制することが可能となる。プログラムの実行においては、特定のアドレスの近傍が繰り返して実行される場合もあるからである。なお、命令フェッチ制御部11において、H32デコーダ8−1がH32CODEを上位アドレスに変換できない場合とは、例えば、分岐予測部20に記憶された分岐履歴のH32CODEが、分
岐予測時点で更新されている場合が想定される。分岐予測部20に記憶された分岐履歴のH32CODEが、分岐予測時点で更新されている場合には、分岐予測が成功する可能性は低く
なるが、情報処理装置は、分岐予測が外れたことを認識可能である。
5から得られる分岐アドレス演算結果の上位アドレスをH32エンコーダ7−1によりH32CODEへ変換する。分岐制御部22は、分岐リザベーションステーション22Aには分岐先アドレスとして、変換後のH32CODEを登録する。また、分岐制御部22は分岐予測時の分岐
先アドレスが正しかったか、演算結果との一致検証を行う。分岐先アドレスの上位アドレスについては検算結果をH32エンコーダ7−1により変換したH32CODEと分岐予測時のH32CODEとの比較により、分岐先アドレスのチェックを行う。さらに、分岐制御部22は上位
アドレス切替判定部22Bを有し、分岐先の上位アドレスが変化するか否かの判定を行う。
録されていない新たな上位アドレスであった場合が想定される。この場合、新たな上位アドレスは、演算器15で算出されている。
上位アドレステーブル71に登録される。ただし、図では、H32デコーダ8の上位アドレ
ステーブル81への登録経路が例示されている。
ッファ(以下、分岐元コードバッファ22B8)、分岐先アドレスの上位32ビットに対応するH32CODEを保持する分岐先アドレスコードバッファ(以下、分岐先コードバッファ
22B9)を有する。ここで、分岐元アドレスとは、例えば、プログラムカウンタ値である。また、分岐先アドレスとは、例えば、演算器15で算出された分岐先アドレスである。
)が記載されている。また、上位アドレス変換無効化信号およびその他の要因による投機実行命令キャンセル要求にも、スレッドの番号(th0)が記載されている。スレッドの番
号(th0)は、当該スレッドを意味する。
ス更新指示信号(th1)は、他のスレッドからの信号を意味する。すなわち、図12は、
SMT方式のプロセッサ1に対応するため、各種レジスタが多重化されている。したがって、SMT方式を採用しない場合には、上位アドレス切替判定部22Bは、分岐先上位アドレスバッファ22B6、PCUバッファ22B7、分岐元コードバッファ22B8、分岐先コードバッファ22B9をスレッドの番号(th0等)で多重化しなくてもよい。また
、SMT方式を採用しない場合には、上位アドレス切替判定部22Bには、上位アドレス変換無効化信号保持回路22B4を設けなくてもよい。
ら分岐元のH32CODEを取得し、演算器15で算出されエンコーダ7−1でエンコードされ
た分岐先アドレスのH32H32CODEを取得する。上位アドレス切替判定部22Bは、分岐元のH32CODEと分岐先のH32CODEをそれぞれ分岐元コードバッファ22B8と分岐先コードバッファ22B9に保持すればよい。そして、上位アドレス切替判定部22Bは、コンパレータ22BAにより、分岐先上位アドレスバッファ22B6が保持する分岐先アドレスの上位32ビットと、PCUバッファ22B7が保持するプログラムカウンタ値の上位32ビットが一致するか否かを判定し、不一致の場合に、真(オン、’1’)をANDゲート22B2およびANDゲート22BDの1つの入力端子に出力する。
定結果をORゲート22B1によってOR演算し、ANDゲート22B2の1つの入力端子に出力する。
(1)分岐先上位アドレスバッファ22B6の分岐先上位アドレスとプログラムカウンタ値の上位32ビットが不一致である;
(2)分岐命令の命令アドレスの上位アドレスのH32CODEと分岐先アドレスの上位アドレ
スのH32CODEの少なくとも1つが'100'である;
(3)分岐命令COMMIT信号が発せられたこと;
を条件に投機実行命令キャンセル信号を生成し、プロセッサ1の各部、例えば、命令フェッチ制御部11,命令キャッシュ24、分岐予測部20、命令完了制御部18、プログラムカウンタ制御部19、分岐制御部22等に出力する。以上の構成によって、分岐命令の分岐先が上位アドレステーブル81(および71)に未登録であって、4GBを越える分岐命令が実行されたことが認識できる。したがって、上位アドレス切替判定部22Bは、
4GBを越える分岐を行う分岐命令について、分岐予測の失敗を認識できる。
上位アドレス切替判定部22Bからの上位アドレス更新指示信号(th1)によってセット
される。上位アドレス変換無効化信号保持回路22B4は、上位アドレス変換無効化指示部の一例である。
ョンステーション22Aから発せられる。
上位アドレス変換無効化信号の負極性論理とのANDで構成する。この構成によって、上位アドレス変換無効化信号が真(オン、‘1’)の場合に、ANDゲート22B5は、偽(オフ、‘0’)となり、上記の分岐先上位アドレスの不一致が検出されても、上位アドレステーブルは更新されない。上位アドレス変換無効化信号が真(オン、‘1’)の場合、H32エンコーダ7は、上位アドレステーブル71と、H32CODEとの比較の結果に拘わらず、'100'を出力する。したがって、すでに上位アドレスが上位アドレステーブル71に登録されているにも拘わらず、ANDゲート22BDは、再度上位アドレスを上位アドレステーブル71に登録するための更新指示信号を発行しようと動作する。そこで、ANDゲート22B5は、上位アドレステーブル更新指示信号が真(オン、‘1’)の場合に、上位アドレステーブル更新指示信号を発行しないように阻止する。
岐先アドレスの上位アドレス32ビットをプログラムカウンタ制御部19へ出力する。
る。そして、プログラムカウンタ制御部19は分岐制御部22から受け取った分岐先アドレスのH32CODEをH32デコーダ8−2によりデコードしてプログラムカウンタ19Aに次の命令アドレスとして上位アドレスの登録を行う。ただし、上位アドレステーブル81に一致するエントリがない場合には、本実施例では、H32CODEは、'100'となっている。こ
の場合に、プログラムカウンタ制御部19は、H32デコーダ8−2の出力ではなく、分岐
先上位アドレスバッファ22B6からの出力をセレクタ19Bで選択して、プログラムカウンタ19Aの更新を行う(図6参照)。プログラムカウンタ制御部19が次に実行する命令の正しい命令アドレスを取得するためである。
説明する。
上位アドレステーブル81のエントリの更新順はいろいろな構成が考えられるが、本実施例の上位アドレス切替判定部22Bは、簡単のため、最も古いエントリを順に書き潰していく構成としている。上位アドレステーブル81の更新では、前述した通り分岐予測時と分岐先アドレスの算出時とで上位アドレステーブルが一致するように実行される。このため、上述のように、本実施例のプロセッサ1は、分岐予測アドレスと、実際に分岐した分岐先との不一致を検出する。そして、不一致を検出した場合、プロセッサ1は、正しいアドレスから再命令フェッチを行うとともに、分岐先の上位アドレスが上位アドレスコー
ドに未登録の値へ変化する場合には上位アドレステーブル81を更新する。以上のような本実施例におけるプロセッサ1のハードウェア構成を基にした上位アドレス更新処理を以下に説明する。
岐先との不一致は、分岐リザベーションステーション22Aのエントリに格納された分岐先と演算結果による分岐先との比較により検出可能である。命令フェッチ制御部11は、分岐先アドレス不一致として分岐命令がCOMMITとなるタイミングで再命令フェッチ要求を行う。なお、再命令フェッチは、投機実行された命令のキャンセル後に行われる命令フェッチである点を除いて、通常の命令フェッチと同様の処理である。また同じタイミングにて、上位アドレス切替判定部22Bは、上位アドレステーブルの更新を実行する。
テーブルにエントリがないことを示す特殊コード’100’であった場合、プロセッサ1は、H32CODEが一致しても上位アドレスが一致しているかは保証できない。すなわち、プ
ロセッサ1は、投機実行している後続の分岐先命令が正しいかの保証をできない。分岐命令の命令アドレス(プログラムカウンタ値)のH32CODEの値が上位アドレステーブルにエ
ントリがないことを示す特殊コード’100’であった場合も同様である。分岐先アドレスのH32CODEの値が‘100’以外であった場合、プロセッサ1は分岐予測が外れない間
は投機実行命令を継続する。そのため、上位アドレスが変化する分岐命令が連続する場合、分岐命令の命令アドレスのH32CODEの値が‘100’であっても分岐命令の命令アドレ
スの上位アドレスがプログラムカウンタ19Aの上位アドレスがと必ずしも一致しない場
合があるからである。
岐命令の分岐先アドレスのH32CODEが'100'であるかの条件の成立を確認する(図12
のORゲート22B1)。そして、プロセッサ1は、さらに分岐先上位アドレスバッファ22B6とプログラムカウンタ19Aとの比較を行い、H32CODE=’100’とのAND
条件をとる。上位アドレステーブルにエントリが存在せず、かつ分岐先アドレスの上位アドレスがプログラムカウンタの上位アドレスと不一致であると、分岐予測時の分岐先の上位アドレスは正しいことが保証されない。このため、上位アドレス切替判定部22Bは、分岐先アドレス不一致として分岐命令がCOMMITとなるタイミングで投機実行命令キャンセル要求を発行し、さらに、上位アドレステーブルの更新を実行する。また、プログラムカウンタ制御部11は、再命令フェッチ要求を命令キャッシュ24に出力する。ここで、上位アドレス切替判定部22Bによって上位アドレステーブルにエントリが存在せず、かつ上位アドレスの不一致を検出したら必ず再命令フェッチとなって後続の投機命令実行はキャンセルされるため、分岐先上位アドレスバッファ22B6はCOMMITする前の分岐命令のうち最も古い分岐命令の分岐先上位アドレスを1命令分保持すれば十分である。なお、図8、図9で例示するように、プロセッサ1がSMT方式の場合には、分岐先上位アドレスバッファ22B6はCOMMITする前の分岐命令のうち最も古い分岐命令の分岐先上位アドレ
スを1命令分スレッドごとに保持すればよい。
ド(th0)の上位アドレステーブルが更新されたことを前提としている。また、図9に、S
MT方式での上位アドレステーブル更新に伴う問題点の解決方法を例示する。図9の処理は、S4Bの処理を除いて、図8と同様である。
いて、参照する上位アドレステーブルが異なっている。このため、分岐予測時と演算後とにおいて、分岐先の上位アドレスが異なっていても、それぞれの上位アドレスに対応するH32CODEが同一となる可能性がある(図8のS7)。
が’1’であったらH32CODEを強制的に’100’に変換する。この変換によって、上位アドレス切替判定部22Bの上位アドレステーブル更新指示信号生成論理は、分岐先アドレスの不一致を検出し、投機実行命令キャンセル要求を発することが可能となる(図12)。したがって、プロセッサ1は、誤った予測による後続の投機実行命令のキャンセルが可能となる(図9のS7−SA)。一旦命令フェッチから処理を再開すれば、そのスレッドについても正しいアドレスでの命令フェッチが保証可能である。
ンセル要求信号により’0’にリセットする1ビットのラッチによって構成することができる。さらに、図11のように、H32デコーダ8は、上位アドレス変換無効化信号が’1’である場合は常に分岐先アドレスの不一致を検出する。このため、上位アドレス変換無効化信号保持回路22B4によって、他スレッドで上位アドレステーブル81、71等が更新された場合の分岐予測部20で予測された分岐先アドレスと、演算器15で演算された分岐先との不一致が検出できない状態を回避できる。
Eのビット数を拡張することで同時期にコード化可能なアドレスのパターンを増やして少
ない変更で効率的な分岐予測性能を維持することが可能である。また、本実施例ではスレッド数を2の場合に絞って記述してあるが、スレッド間で上位アドレステーブルを共有する構成のため、将来的にスレッド数を増やしても制御をほとんど変更することなく同様の構成を実現可能である。ただし、当然、スレッド数が1のプロセッサにも、本実施形態の構成は、適用可能である。その場合には、すでに述べたように、図12の上位アドレス変換無効化信号保持回路22B4は不要となる。
グラムカウンタ値の上位アドレスにデコードすることで、例えば、命令キャッシュ24のエントリの書き潰しを抑制することが可能となる。
本実施形態は、以下の態様(以下、付記という)を含む。各付記は、他の付記の構成と組み合わせてもよい。
(付記1)
命令を取得する取得段階と前記命令を実行する実行段階とを含む命令処理を繰り返す演算処理装置の前記取得段階で命令の記憶元である命令アドレスから命令を取得する取得部と、
命令処理がなされた命令の命令アドレスの上位ビット部分と前記命令アドレスの上位ビット部分を符号化する上位アドレス情報との対応関係を登録する対応関係記憶部と、
命令アドレスに含まれる上位ビット部分を前記対応関係に基づいて上位アドレス情報に符号化する符号化部と、
前記対応関係と上位アドレス情報から上位ビット部分を復元する復号化部と、
を備える演算処理装置。
(付記2)
前記命令処理がなされる命令が分岐命令である場合に、前記分岐命令の分岐先アドレスまたは分岐命令の命令アドレスの少なくとも一方についての対応関係が前記対応関係記憶部に登録されておらず、かつ、前記分岐命令が前記上位アドレスを変更する範囲の分岐先に分岐するときに、前記分岐命令に対する分岐予測をキャンセルするとともに、前記分岐命令の分岐先アドレスについての対応関係が前記対応関係記憶部に登録されておらず、かつ、前記分岐命令が前記上位アドレスを変更する範囲の分岐先に分岐するときには、前記対応関係を更新する切替判定部をさらに備える付記1に記載の演算処理装置。
(付記3)
前記符号化部は、前記対応関係が登録されていない命令アドレスの上位ビット部分に対
しては、未登録を示す符号を生成する付記1または2に記載の演算処理装置。
(付記4)
前記取得部が取得する命令の命令アドレスを指示するプログラムカウンタをさらに備え、
前記復号化部は、前記対応関係が登録されていない上位アドレス情報に対しては、前記プログラムカウンタの指示する命令アドレスから前記上位ビット部分を復号する付記1から3のいずれか1項に記載の演算処理装置。
(付記5)
前記対応関係記憶部は前記対応関係を複数のスレッドの間で共用して記憶し、
第1のスレッドにおいて前記対応関係を更新したときに、第2のスレッドにおいて命令処理を前記取得段階からやり直すまでの間、前記符号化部に対して前記上位アドレスの対応関係が登録されていないときの処理を実行させ、前記復号化部に対して前記上位アドレス情報の対応関係が登録されていないときの処理を実行させる上位アドレス変換無効化指示部をさらに備える付記1から4のいずれ1項に記載の演算処理装置。
(付記6)
命令を取得する取得段階と前記命令を実行する実行段階とを含む命令処理を繰り返す演算処理装置の前記取得段階で命令の記憶元である命令アドレスから命令を取得する取得ステップと、
命令処理がなされた命令の命令アドレスの上位ビット部分と前記命令アドレスの上位ビット部分を符号化する上位アドレス情報との対応関係を対応関係記憶部に登録するステップと、
命令アドレスに含まれる上位ビット部分を前記対応関係に基づいて上位アドレス情報に符号化する符号化ステップと、
前記対応関係と上位アドレス情報から上位ビット部分を復元する復号化ステップと、を実行する演算処理方法。
(付記7)
前記命令処理がなされる命令が分岐命令である場合に、前記分岐命令の分岐先アドレスまたは分岐命令の命令アドレスの少なくとも一方についての対応関係が前記対応関係記憶部に登録されておらず、かつ、前記分岐命令が前記上位アドレスを変更する範囲の分岐先に分岐するときに、前記分岐命令に対する分岐予測をキャンセルするとともに、前記分岐命令の分岐先アドレスについての対応関係が前記対応関係記憶部に登録されておらず、かつ、前記分岐命令が前記上位アドレスを変更する範囲の分岐先に分岐するときには、前記対応関係を更新する切替判定ステップをさらに実行する付記6に記載の演算処理方法。
(付記8)
前記符号化ステップでは、前記対応関係が登録されていない命令アドレスの上位ビット部分に対しては、未登録を示す符号が生成される付記6または7に記載の演算処理方法。(付記9)
前記復号化ステップでは、前記対応関係が登録されていない上位アドレス情報に対しては、プログラムカウンタの指示する命令アドレスから前記上位ビット部分が復号される付記6から8のいずれか1項に記載の演算処理方法。
(付記10)
前記対応関係記憶部は、前記対応関係を複数のスレッドの間で共用して記憶し、
第1のスレッドにおいて前記対応関係を更新したときに、第2のスレッドにおいて命令処理を前記取得段階からやり直すまでの間、前記符号化部に対して前記上位アドレスの対応関係が登録されていないときの処理を実行させ、前記復号化部に対して前記上位アドレス情報の対応関係が登録されていないときの処理を実行させる上位アドレス変換無効化指示ステップをさらに実行する付記6から9のいずれか1項に記載の演算処理方法。
3 メモリ
5 インターコネクト制御部
7 H32エンコーダ
8 H32デコーダ
11 命令フェッチ制御部
12 命令バッファ
13 命令デコーダ
14 命令発行制御部
15 演算器
16 オペランドキャッシュ
17 レジスタ
18 命令完了制御部
19 プログラムカウンタ制御部
20 分岐予測部
21 命令アドレスバッファ
22 分岐制御部
22A 分岐リザベーションステーション
22B 上位アドレス判定部
23 分岐履歴更新部
24 命令キャッシュ
25 二次キャッシュ
71、81 上位アドレステーブル
Claims (5)
- 命令を記憶する記憶部と、
前記記憶部から命令アドレスに基づいて命令を取得する取得部と、
前記取得部が取得する取得対象命令に基づいて演算を実行する演算部と、
前記命令アドレスの上位ビット部分と前記命令アドレスの上位ビット部分を符号化した上位アドレス情報との対応関係を登録する対応関係記憶部と、
前記命令アドレスに含まれる上位ビット部分を前記対応関係に基づいて上位アドレス情報に符号化する符号化部と、
前記対応関係と上位アドレス情報から上位ビット部分を復元する復号化部と、
前記取得対象命令が分岐命令である場合における分岐先アドレスを前記符号化部が符号化した上位アドレス情報と、前記取得対象命令の命令アドレスから前記上位ビット部分を除いた下位ビット部分と、に基づいて予測する分岐予測部と、
前記演算部による実行結果と前記分岐予測部による予測結果とに基づいて分岐命令の実行を制御する分岐制御部と、を備え、
前記分岐制御部は、分岐命令の分岐先アドレスまたは分岐命令の命令アドレスの少なくとも一方についての前記対応関係が、前記対応関係記憶部に登録されておらず、かつ、前記分岐命令が前記取得対象命令の命令アドレスの上位ビット部分を変更する範囲の分岐先アドレスを有する分岐命令であるとき、前記分岐命令に対して予測された分岐先アドレスをキャンセルするとともに、前記分岐命令の分岐先アドレスについての前記対応関係が前記対応関係記憶部に登録されておらず、かつ、前記分岐命令が前記取得対象命令の命令アドレスの上位ビット部分を変更する範囲の分岐先アドレスを有する分岐命令であるとき、前記対応関係を更新する切替判定部を有する演算処理装置。 - 前記符号化部は、前記対応関係が登録されていない命令アドレスの上位ビット部分に対しては、未登録を示す符号を生成する請求項1に記載の演算処理装置。
- 前記取得対象命令の命令アドレスを指示するプログラムカウンタをさらに備え、
前記復号化部は、前記対応関係が登録されていない上位アドレス情報に対しては、前記プログラムカウンタの指示する命令アドレスから前記上位ビット部分を復号する請求項1または2に記載の演算処理装置。 - 前記対応関係記憶部は、前記対応関係を複数のスレッドの間で共用して記憶し、
第1のスレッドにおいて前記対応関係を更新したときに、第2のスレッドにおいて前記取得部による命令の取得をやり直すまでの間、前記符号化部に対して前記命令アドレスの上位ビット部分の対応関係が登録されていないときの処理を実行させ、前記復号化部に対して前記上位アドレス情報の対応関係が登録されていないときの処理を実行させる上位アドレス変換無効化指示部をさらに備える請求項1から3のいずれか1項に記載の演算処理装置。 - 命令を記憶する記憶部から命令アドレスに基づいて命令を取得する取得ステップと、
前記命令アドレスの上位ビット部分と前記命令アドレスの上位ビット部分を符号化した上位アドレス情報との対応関係を対応関係記憶部に登録するステップと、
前記命令アドレスに含まれる上位ビット部分を前記対応関係に基づいて上位アドレス情報に符号化する符号化ステップと、
前記対応関係と上位アドレス情報から上位ビット部分を復元する復号化ステップと、
前記取得ステップにおいて取得される取得対象命令が分岐命令である場合における分岐先アドレスを前記符号化ステップによって符号化された上位アドレス情報と、前記取得対象命令の命令アドレスから前記上位ビット部分を除いた下位ビット部分と、に基づいて予測する分岐予測ステップと、
分岐命令の分岐先アドレスまたは分岐命令の命令アドレスの少なくとも一方についての前記対応関係が、前記対応関係記憶部に登録されておらず、かつ、前記分岐命令が前記取得対象命令の命令アドレスの上位ビット部分を変更する範囲の分岐先アドレスを有する分岐命令であるとき、前記分岐命令に対して予測された分岐先アドレスをキャンセルするとともに、前記分岐命令の分岐先アドレスについての前記対応関係が前記対応関係記憶部に登録されておらず、かつ、前記分岐命令が前記取得対象命令の命令アドレスの上位ビット部分を変更する範囲の分岐先アドレスを有する分岐命令であるとき、前記対応関係を更新するステップと、
を実行する演算処理方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012264654A JP6179093B2 (ja) | 2012-12-03 | 2012-12-03 | 演算処理装置、演算処理方法 |
US14/060,050 US20140156973A1 (en) | 2012-12-03 | 2013-10-22 | Processor and control method of processor |
CN201310532943.4A CN103853528A (zh) | 2012-12-03 | 2013-10-31 | 处理器和处理器的控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012264654A JP6179093B2 (ja) | 2012-12-03 | 2012-12-03 | 演算処理装置、演算処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014109953A JP2014109953A (ja) | 2014-06-12 |
JP6179093B2 true JP6179093B2 (ja) | 2017-08-16 |
Family
ID=50826691
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012264654A Active JP6179093B2 (ja) | 2012-12-03 | 2012-12-03 | 演算処理装置、演算処理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20140156973A1 (ja) |
JP (1) | JP6179093B2 (ja) |
CN (1) | CN103853528A (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6089890B2 (ja) * | 2013-03-29 | 2017-03-08 | 富士通株式会社 | ストレージ制御装置、ストレージ制御装置の制御方法およびストレージ制御装置の制御プログラム |
GB2514618B (en) * | 2013-05-31 | 2020-11-11 | Advanced Risc Mach Ltd | Data processing systems |
US9396044B2 (en) * | 2014-04-25 | 2016-07-19 | Sony Corporation | Memory efficient thread-level speculation |
US10007524B2 (en) * | 2014-11-14 | 2018-06-26 | Cavium, Inc. | Managing history information for branch prediction |
CN107358126B (zh) * | 2017-06-14 | 2020-04-03 | 北京多思安全芯片科技有限公司 | 一种处理器 |
JP7152376B2 (ja) * | 2019-09-27 | 2022-10-12 | 日本電気株式会社 | 分岐予測回路、プロセッサおよび分岐予測方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5574871A (en) * | 1994-01-04 | 1996-11-12 | Intel Corporation | Method and apparatus for implementing a set-associative branch target buffer |
US6122709A (en) * | 1997-12-19 | 2000-09-19 | Sun Microsystems, Inc. | Cache with reduced tag information storage |
JP2001265651A (ja) * | 2000-03-23 | 2001-09-28 | Matsushita Electric Ind Co Ltd | データ処理装置 |
CN1299198C (zh) * | 2001-06-27 | 2007-02-07 | 凌阳科技股份有限公司 | 由可改变的指令格式而提高程序码密集度的微控制器结构 |
US6704362B2 (en) * | 2001-07-06 | 2004-03-09 | Koninklijke Philips Electronics N.V. | Resource scalable decoding |
EP1990714B1 (en) * | 2006-02-28 | 2010-04-07 | Fujitsu Limited | Processing device by predicting branch from compressed address information |
US7954038B2 (en) * | 2006-12-29 | 2011-05-31 | Intel Corporation | Fault detection |
US20090249048A1 (en) * | 2008-03-28 | 2009-10-01 | Sergio Schuler | Branch target buffer addressing in a data processor |
GB2488980B (en) * | 2011-03-07 | 2020-02-19 | Advanced Risc Mach Ltd | Address generation in a data processing apparatus |
US8458447B2 (en) * | 2011-06-17 | 2013-06-04 | Freescale Semiconductor, Inc. | Branch target buffer addressing in a data processor |
-
2012
- 2012-12-03 JP JP2012264654A patent/JP6179093B2/ja active Active
-
2013
- 2013-10-22 US US14/060,050 patent/US20140156973A1/en not_active Abandoned
- 2013-10-31 CN CN201310532943.4A patent/CN103853528A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2014109953A (ja) | 2014-06-12 |
US20140156973A1 (en) | 2014-06-05 |
CN103853528A (zh) | 2014-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6179093B2 (ja) | 演算処理装置、演算処理方法 | |
JP6526609B2 (ja) | プロセッサ | |
JP4287799B2 (ja) | プロセッサシステムおよびスレッド切り替え制御方法 | |
JP4856100B2 (ja) | 非アラインドメモリアクセス予測 | |
JP5043560B2 (ja) | プログラム実行制御装置 | |
US20180004530A1 (en) | Advanced processor architecture | |
US10078518B2 (en) | Intelligent context management | |
CN108196884B (zh) | 利用生成重命名的计算机信息处理器 | |
US8615644B2 (en) | Processor with hardware thread control logic indicating disable status when instructions accessing shared resources are completed for safe shared resource condition | |
US9047079B2 (en) | Indicating disabled thread to other threads when contending instructions complete execution to ensure safe shared resource condition | |
US10853072B2 (en) | Arithmetic processing apparatus and method of controlling arithmetic processing apparatus | |
JP5861354B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
US10289414B2 (en) | Suppressing branch prediction on a repeated execution of an aborted transaction | |
US9928128B2 (en) | In-pipe error scrubbing within a processor core | |
US10996990B2 (en) | Interrupt context switching using dedicated processors | |
US20140025932A1 (en) | Processor, information processing device, and control method of processor | |
US10102003B2 (en) | Intelligent context management | |
US9594564B2 (en) | Arithmetic processing device and control method of arithmetic processing device | |
JP3683439B2 (ja) | 分岐予測を抑止する情報処理装置および方法 | |
US20190163494A1 (en) | Processor and pipelining method | |
US20210318854A1 (en) | Arithmetic processing apparatus | |
US20110083030A1 (en) | Cache memory control device, cache memory device, processor, and controlling method for storage device | |
JP6098429B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
US11620235B1 (en) | Validation of store coherence relative to page translation invalidation | |
US20230195981A1 (en) | Hazard generating for speculative cores in a microprocessor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20150804 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20160531 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160614 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160815 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170117 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170321 |
|
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: 20170620 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170703 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6179093 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |