JP7225745B2 - 演算処理装置および演算処理装置の制御方法 - Google Patents

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

Info

Publication number
JP7225745B2
JP7225745B2 JP2018229404A JP2018229404A JP7225745B2 JP 7225745 B2 JP7225745 B2 JP 7225745B2 JP 2018229404 A JP2018229404 A JP 2018229404A JP 2018229404 A JP2018229404 A JP 2018229404A JP 7225745 B2 JP7225745 B2 JP 7225745B2
Authority
JP
Japan
Prior art keywords
instruction
unit
priority
executable
holding
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
JP2018229404A
Other languages
English (en)
Other versions
JP2020091751A (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 JP2018229404A priority Critical patent/JP7225745B2/ja
Priority to US16/701,209 priority patent/US11755329B2/en
Publication of JP2020091751A publication Critical patent/JP2020091751A/ja
Application granted granted Critical
Publication of JP7225745B2 publication Critical patent/JP7225745B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/3838Dependency mechanisms, e.g. register scoreboarding

Description

本発明は、演算処理装置および演算処理装置の制御方法に関する。
演算処理装置の性能は、命令のパイプライン処理、命令のアウトオブオーダ実行、命令の投機的実行、レジスタリネーミング、スーパースカラ方式、マルチスレッド方式等の様々な手法により向上される。命令のアウトオブオーダ実行を行うために、演算処理装置は、リザベーションステーションと呼ばれる命令発行キューを持つ。
また、例外処理が発生した場合の元の状態への復帰処理は、演算処理装置の性能の低下を抑止するために重要である。例えば、例外処理の発生を検出した場合、例外処理を発生させた命令より後続のチェックポイント命令の実行により記憶した情報を用いて、チェックポイント命令を実行した状態に論理レジスタの内容が復元される(例えば、特許文献1参照)。
命令の完了の管理に使用されるコミットスタックエントリを用いた命令の完了処理では、命令の実行の完了が判定されるスレッドの1つがコミットスタックエントリから選択され、完了対象エントリに格納される。完了対象エントリに格納されたスレッドの完了が判定された場合、完了が判定されたスレッドのプログラマブルな資源が更新される(例えば、特許文献2参照)。
特開2009-76083号公報 国際公開第2008/55804号
例えば、命令デコード部がインオーダでデコードした命令を、アウトオブオーダで演算器等に発行するために、演算処理装置はリザベーションステーションを有する。リザベーションステーションは、命令デコード部がデコードした命令をキューに保持し、キューに保持した命令間での依存関係を判定し、依存関係が解決され、実行可能な命令から発行するべき命令を選択し、演算器等に発行する。
例えば、リザベーションステーションにおいて、キューのエントリ数が多いほど、あるいは、命令を発行する発行口が多いほど、命令の選択に用いる論理は増大し、命令選択時間は長くなる。演算レイテンシは最短で1サイクルなので、命令を毎サイクル発行する必要がある。そのため、キューのエントリ数および発行口の数は、命令の選択時間および依存関係の判定時間により制限される。そして、演算処理装置の処理性能は、キューのエントリ数が少ないほど、あるいは発行口の数が少ないほど低下する。
1つの側面では、本発明は、命令の選択に用いる論理を削減することで、演算処理装置の処理性能を向上することを目的とする。
一つの観点によれば、演算処理装置は、命令をデコードする命令デコード部と、前記命令デコード部がデコードした命令を保持する複数のエントリから実行可能な命令を出力する命令実行制御部と、前記命令実行制御部が出力する命令を実行する命令実行部と、を有し、前記命令実行制御部は、前記複数のエントリの各々が保持した命令が実行可能かを示す実行可能情報を保持する実行可能情報保持部と、前記複数のエントリにそれぞれ対応する複数の保持領域を有し、前記複数の保持領域の各々に、他のエントリに保持された命令との相対的な優先度を示す優先情報を保持する優先情報保持部と、前記エントリが保持する命令を前記命令実行部で実行可能かを判定し、判定結果に基づいて実行可能情報を前記実行可能情報保持部に書き込む実行可能情報書き込み部と、前記エントリに格納する命令と前記エントリに格納済みの命令の各々との優先度を判定し、判定結果に基づいて優先情報を前記優先情報保持部に書き込む優先情報書き込み部と、前記複数の保持領域の各々に保持された相対的な優先度を示す優先情報に基づいて、前記実行可能情報保持部に保持された実行可能情報で示される実行可能な命令のうち、優先度が最も高い命令を前記命令実行部に出力する命令として決定する出力決定部と、を有する。
1つの側面では、本発明は、命令の選択に用いる論理を削減することで、演算処理装置の処理性能を向上することができる。
一実施形態における演算処理装置の一例を示す図である。 別の実施形態における演算処理装置の一例を示す図である。 図2のリザベーションステーションとその周囲のブロックの一部を示す図である。 図2のリザベーションステーションの一例を示す図である。 図4のレディフラグ部およびプライオリティ保持部の一例を示す図である。 図4の発行制御部の動作の一例を示す図である。 図4のリザベーションステーションの動作の一例を示す図である。 図4のリザベーションステーションの動作の別の例を示す図である。 図3のリザベーションステーションの動作フローの一例を示す図である。 別の実施形態の演算処理装置におけるリザベーションステーションの一例を示す図である。
以下、図面を用いて実施形態を説明する。
図1は、一実施形態における演算処理装置の一例を示す。図1に示す演算処理装置100は、命令をデコードする命令デコード部1と、命令実行制御部2と、命令実行制御部2が出力する命令を実行する命令実行部3とを有する。命令実行制御部2は、複数のエントリENTに保持した命令のうち実行可能な命令を命令実行部3に出力する。命令実行制御部2は、例えば、リザベーションステーションRSでもよい。命令実行制御部2は、命令保持部4、実行可能情報保持部5、実行可能情報書き込み部6、優先情報保持部7、優先情報書き込み部8および出力決定部9を有する。
命令保持部4は、命令デコード部1がデコードした命令(デコード結果を示す命令データ)を保持する複数のエントリENTを有する。なお、エントリENTの数は、6個に限定されない。以下では、命令デコード部1がデコードにより得たデコード結果を示す命令データは、命令とも称される。
実行可能情報保持部5は、各エントリENTに対応する領域であって、各エントリENTが保持した命令が実行可能かを示す実行可能情報R(Ready)を保持する領域を有する。
実行可能情報書き込み部6は、各エントリENTが保持する命令に基づいて、エントリENTが保持する命令の依存関係を判定する。そして、実行可能情報書き込み部6は、依存関係が解決した命令を保持するエントリENTに対応する実行可能情報保持部5の領域に、命令が命令実行部3に実行可能であることを示す実行可能情報Rを書き込む。ここで、依存関係の解決とは、例えば、先行の命令と後続の命令とのデータ依存性がなくなることである。
図1に示す例では、5番目のエントリENTと2番目のエントリENTに保持された命令は、実行可能情報保持部5に実行可能情報Rが書き込まれているため、依存関係が解決し、命令実行部3で実行可能であることを示す。一方、3番目のエントリENTに保持された命令は、実行可能情報保持部5に実行可能情報Rが書き込まれていないため、依存関係が解決しておらず、命令実行部3で実行可能ではない。
優先情報保持部7は、エントリENT毎に、各エントリENTが保持した命令を他のエントリENTが保持する命令より優先させるかを示す優先情報Pを格納する複数の領域を有する。優先情報保持部7において、優先情報Pを格納する各行が保持する優先情報Pは、他のエントリENTが保持する命令に比べて優先度が高いことを示す。
なお、優先情報保持部7に保持される優先情報Pは、正方行列として表すことができる。斜線で示される対角成分は、自エントリENTを示し、優先情報Pは書き込まれない。例えば、優先情報保持部7には、優先度が相対的に低いことを示す優先情報/Pが優先情報Pの代わりに格納されてもよい。この場合、斜線を境とする対称領域は、優先情報P(または/P)が互いに反転するだけのため、優先情報保持部7は、斜線の右上の三角の領域または斜線の左下の三角の領域だけを有してもよい。
エントリENT5に対応する優先情報保持部7の1行目の優先情報Pは、エントリENT5が保持する命令の優先度より、エントリENT3、2がそれぞれ保持する命令の優先度が高いことを示す。エントリENT2に対応する優先情報保持部7の4行目の優先情報Pは、エントリENT2が保持する命令の優先度より、エントリENT3が保持する命令の優先度が高いことを示す。そして、優先情報保持部7に保持された優先情報Pより、エントリENT3>ENT2>ENT5の順で、優先度が高いことが分かる。
優先情報書き込み部8は、エントリENTに格納する命令とエントリENTに格納済みの命令との優先度に基づき、命令の相対的な優先度を判定し、判定結果に基づいて、優先情報保持部7に優先情報Pを書き込む。なお、優先情報書き込み部8は、命令のデコード順(すなわち、プログラムの実行順)や、予め優先度が他の命令より高く設定された命令等基づいて優先度を決める。この際、優先情報書き込み部8は、各行の優先度と、行間の優先度とに矛盾がないように、優先情報保持部7に優先情報Pを書き込む。これにより、エントリENT5-ENT0の優先度の順序を一意に決めることができる。
出力決定部9は、優先情報保持部7が保持する優先情報Pと実行可能情報保持部5が保持する実行可能情報Rとに基づいて、命令を保持するエントリENTの中から命令を発行するエントリENTを決定する。例えば、出力決定部9は、優先情報保持部7が保持する優先情報Pに基づいて、実行可能情報保持部5が保持する実行可能情報Rに対応して命令保持部4が保持する命令のうち、優先度が最も高い命令の出力を決定し、決定した命令を発行する。図1に示す例では、出力決定部9は、優先度が最も高いエントリENT3が保持する命令が実行可能でないため発行を抑止し、その代わりに、2番目に優先度が高く、かつ、実行可能なエントリENT2が保持する命令を発行する。
以下に、1サイクルで演算の実行が完了する演算命令1、2(演算レイテンシ=”1”)を順に実行する場合の命令パイプラインの例を示す。
(演算命令1) P B X
(演算命令2) u P B X
P(Priority)サイクルは、依存関係が解決した後続の命令のうち、演算実行部に投入する命令を決定するスケジュールと決定した命令を通知するブロードキャストを実行するサイクルである。すなわち、Pサイクルでは、依存関係が解決した命令のいずれかが出力決定部9により選択される。B(Buffer)サイクルは、演算の実行に必要なデータが保持されているレジスタ決定し、レジスタからデータ(ソースオペランド)を読み出すサイクルである。X(Execute)サイクルは、演算を実行し、演算結果を出力するサイクルである。
Pサイクルの1サイクル前に実行される符号uの動作は、後続の命令の依存関係を解決したかを判定する動作を示し、例えば、実行可能情報書き込み部6の動作期間を含む。演算レイテンシ=”1”の命令で、命令パイプラインの動作を隙間なく実行させるためには、後続の演算命令2のBサイクルを、先行の演算命令1のXサイクルに合わせる必要がある。このため、後続の演算命令2の依存性を判定する動作”u”は、先行の演算命令1のPサイクルで実行される。
この例では、演算命令1、2の依存性が解決しているため、演算命令2のPサイクルは、演算命令1のBサイクルと同じサイクルに実行される。すなわち、演算レイテンシが”1”の命令を順次実行する場合、先行の演算命令1のPサイクル中に符号uの動作が実行され、後続の演算命令2の発行の可否が判定される。例えば、後続の演算命令2の発行の可否を1サイクルで判定する処理は、B2B(Back-to-Back)スケジューリングと称され、命令パイプラインの処理では、タイミングが最も厳しい。このため、例えば、演算処理装置100のクロックサイクルは、B2Bスケジューリングに掛かる時間に応じて決定される場合がある。
なお、実行可能情報書き込み部6が実行可能情報Rを出力しないことを決定した場合、符号uの判定動作は、実行可能情報Rの出力が決定されるまでサイクル毎に繰り返される。例えば、演算命令2の依存性が解決せず、演算命令1のBサイクルに演算命令2の符号uの動作が実行され、演算命令2のPサイクルが先行の演算命令1のXサイクルに実行される場合、命令パイプラインにバブルと呼ばれる何もしないサイクルが発生する。符号uの動作が複数サイクルに渡り発生した場合、演算効率が低下する。
以下に、2サイクルで演算の実行が完了する演算命令3、4(演算レイテンシ=”2”)を順に実行する場合の命令パイプラインの例を示す。
(演算命令3) P B X1 X2
(演算命令4) u P B X1 X2
演算レイテンシ=”2”の命令では、後続の演算命令4のBサイクルを、先行の演算命令3のX2サイクルに合わせることで、命令パイプラインを隙間なく実行させることができる。このため、後続の演算命令4の依存性を判定する動作”u”は、先行の演算命令3のBサイクルで実行すればよく、演算レイテンシ=”1”の命令に比べて余裕がある。
例えば、命令パイプラインの設計において、クロック周波数は、各サイクル(各ステージ)のうち最も処理時間の長いサイクルに依存して決定される。実質的に処理時間が最も長いサイクルは、B2Bスケジューリングを実行するPサイクルである。B2Bスケジューリングによる処理時間が規定の時間を超える場合、リザベーションステーションの出力ポート数やエントリ数を減らし、あるいは、調停に参加できるエントリENTを制限することで、回路の論理段数を減らし、処理時間を短縮する必要がある。但し、この場合、リザベーションステーションの処理能力(アウトオブオーダ実行可能な命令数)が低下し、演算処理装置の処理性能が低下してしまう。
また、リザベーションステーションを演算パイプライン毎に設けることで、各リザベーションステーションのエントリ数を削減することができる。これにより、リザベーションステーションにおいて、発行する命令を決定する回路の論理段数を減らし、処理時間を短縮することができる。しかしながら、同種の演算器への命令の割り当てに偏りが発生した場合、演算性能は低下してしまう。また、複数種の演算器(例えば、固定小数点演算器と浮動小数点演算器)のうち、一方の演算器による演算の実行頻度と、他方の演算器による演算の実行頻度とが乖離する場合がある(ワークロードの偏り)。この場合、複数のリザベーションステーションの総エントリ数が目減りして見え、処理性能が劣化してしまう。
図1に示す実施形態では、出力決定部9は、優先情報保持部7が保持する簡易な表形式(行列形式)の優先情報Pに基づいて、発行する命令を決定する。これにより、既存のリザベーションステーション等の命令実行制御部に比べて、発行する命令を決定(選択)する回路の論理段数を削減することができる。論理段数の削減により、例えば、B2Bスケジューリングに使える時間に余裕ができ、演算処理装置の命令パイプラインにおいて、命令実行制御部により発行する命令を決めるステージでの遅延時間を短縮することができる。
例えば、B2Bスケジューリングに使える時間に余裕ができた場合、リザベーションステーションのエントリ数を増加することができ、あるいは、調停に参加できるエントリ数を増加することができる。これにより、アウトオブオーダ実行可能な命令数を増やすことができ、演算処理装置100の処理性能を向上することができる。エントリ数を増やさない場合、演算処理装置100のクロック周波数をさらに高くすることができ、処理性能を向上することができる。
図2は、別の実施形態における演算処理装置の一例を示す。図3に示す演算処理装置102は、命令フェッチ制御部10、命令キャッシュ部12、命令バッファ部14、命令デコード部16、割り当て部18、レジスタ管理部20、コミット制御部22、分岐制御部24およびリザベーションステーション26を有する。また、演算処理装置102は、ターゲットアドレス計算器(BRCH)28、複数のメモリアドレス生成器(AGU)30(30a、30b)およびストアデータ制御部(STD)32を有する。さらに、演算処理装置102は、複数の固定小数点演算器(FXU)34(34a、34b)、複数の浮動小数点演算器(FLU)36(36a、36b)、ロード/ストアキュー38、メモリ40およびレジスタファイル42を有する。以下では、ターゲットアドレス計算器28、メモリアドレス生成器30、ストアデータ制御部32、固定小数点演算器34および浮動小数点演算器36は、演算資源とも称される。
リザベーションステーション26は、命令実行制御部の一例である。ターゲットアドレス計算器28、メモリアドレス生成器30a、30b、ストアデータ制御部32、固定小数点演算器34a、34bおよび浮動小数点演算器36a、36bは、命令実行部の一例である。また、ターゲットアドレス計算器28は、分岐命令実行部の一例であり、メモリアドレス生成器30a、30bは、メモリアクセス命令実行部の一例であり、固定小数点演算器34a、34bおよび浮動小数点演算器36a、36bは、演算命令実行部の一例である。
例えば、演算処理装置102は、スーパースカラ方式のプロセッサであるが、スカラ方式のプロセッサに適用されてもよい。スカラ方式のプロセッサの場合、演算処理装置102は、1つのメモリアドレス生成器30と、1つの固定小数点演算器34と、1つの浮動小数点演算器36とを有してもよい。なお、図2に示す演算処理装置102の構成は、一例であり、複数の発行口を持つリザベーションステーション26を含む演算処理装置であれば、他の構成の演算処理装置でもよい。
命令フェッチ制御部10は、プログラムカウンタPCが生成するアドレスまたは分岐制御部24から受けるアドレスに基づいて、命令をフェッチするためのアドレスを生成し、生成したアドレスを命令キャッシュ部12に出力する。命令フェッチ制御部10は、コミット制御部22から出力される命令の完了を示す情報に基づいてアドレスを更新してもよい。なお、プログラムカウンタPCは、命令フェッチ制御部10の外部に設けられてもよい。
命令キャッシュ部12は、命令フェッチ制御部10から受信するアドレスが示す領域に保持された複数の命令を取り出し、取り出した複数の命令を命令バッファ部14に出力する。例えば、命令キャッシュ部12は、1次命令キャッシュでもよい。命令キャッシュ部12は、アドレスに対応する命令を保持していない場合、図示しない下位のメモリから命令を取り出すために、下位のメモリにアクセス要求を出力し、下位のメモリから命令を取り出す。
命令バッファ部14は、命令キャッシュ部12から出力される複数の命令を、例えば、プログラム順に保持し、保持した命令のうちの複数の命令(例えば、2命令または4命令)をインオーダで命令デコード部16に出力する。命令デコード部16は、命令バッファ部14から出力される複数の命令をそれぞれデコードし、デコードにより得られた命令データを、インオーダで割り当て部18およびレジスタ管理部20に出力する。命令データは、コミット制御部22のコミットバッファに格納されてもよい。命令データは、命令の種別、命令の実行で使用するレジスタ等の情報を含む。以下では、命令デコード部16がデコードにより生成した命令データ(デコード結果)は、単に命令とも称される。
割り当て18は、命令デコード部16から受けた命令を、命令の種別等に応じて命令を実行する演算資源を割り当て、割り当てを示す情報を含む命令をリザベーションステーション26に出力する(ディスパッチ)。レジスタ管理部20は、レジスタファイル42に含まれるレジスタの依存関係が発生することを避けるため、レジスタの割り当てを変更する。レジスタファイル42は、命令に含まれるレジスタ番号で指定可能なレジスタ以外に、割り当ての変更に使用されるレジスタを有してもよい。
コミット制御部22は、リザベーションステーション26に発行された命令を示す情報をインオーダで保持し、演算器等の演算資源からの命令実行の完了報告等に基づいて、プログラムに記述された順(インオーダ)に命令の完了処理を実行する。例えば、コミット制御部22は、命令実行の完了を示す情報を命令フェッチ制御部10およびレジスタ管理部20に出力する。分岐制御部24は、分岐命令の実行時にターゲットアドレス計算器28から受けるアドレスに基づいて、分岐予測を実行し、予測結果を命令フェッチ制御部10に出力する。すなわち、分岐制御部24は、分岐予測機構の機能を有する。
リザベーションステーション26は、ターゲットアドレス計算器28、メモリアドレス生成器30a、30b、ストアデータ制御部32、固定小数点演算器34a、34bおよび浮動小数点演算器36a、36bに共通に設けられる。リザベーションステーション26は、ダイナミックスケジューラまたはイシューキューとも称さる。リザベーションステーション26は、割り当て部18から供給される命令を図示しないキューに保持し、キューに保持した命令の中から、命令間の依存関係が解決された命令を選択する。リザベーションステーション26は、選択した命令を、命令の種別に応じて、演算資源のいずれかに発行する。このために、リザベーションステーション26は、演算資源毎に、命令を発行する発行口27(27a、27b、27c、27d、27e、27f、27g、27h)を有する。スーパースカラ方式では、例えば、リザベーションステーション26は、固定小数点演算命令を固定小数点演算器34a、34bに並列に発行する。固定小数点演算器34a、34bは、命令を並列に実行し、実行結果をレジスタに書き込む。
ターゲットアドレス計算器28は、リザベーションステーション26から受ける分岐命令とレジスタファイル42に保持されたアドレスデータとに基づいて、例えば、分岐先のアドレスを計算し、計算したアドレスを分岐制御部24に出力する。
各メモリアドレス生成器30a、30bは、リザベーションステーション26から出力されるメモリアクセス命令に基づいてアドレスを生成し、生成したアドレスをロード/ストアキュー38に出力する。ストアデータ制御部32は、ストア命令の実行時に、レジスタファイル42から出力されるデータをロード/ストアキュー38に出力する。
各固定小数点演算器34a、34bは、リザベーションステーション26から受ける固定小数点演算命令を実行し、実行結果を、例えば、レジスタファイル42の固定小数点レジスタに書き込む。各浮動小数点演算器36a、36bは、リザベーションステーション26から受ける固定小数点演算命令を実行し、実行結果を、例えば、レジスタファイル42の浮動小数点レジスタに書き込む。以下の説明では、固定小数点演算器34a、34bは、演算器FXU34a、34bとも称され、浮動小数点演算器36a、36bは、演算器FLU36a、36bとも称される。
ロード/ストアキュー38は、メモリアドレス生成器30a、30bから出力されるアドレスを使用してメモリ40にアクセスする機能を有する。また、ロード/ストアキュー38は、メモリ40から読み出されるロードデータを保持するロードキューと、メモリ40に書き込むストアデータを保持するキューとを有する。命令デコード部16がロード命令をデコードした場合、ロード/ストアキュー38は、メモリ40からデータを読み出し、読み出したデータをレジスタファイル42に格納する。命令デコード部16がストア命令をデコードした場合、ロード/ストアキュー38は、レジスタファイル42から出力され、ストアデータ制御部32を介して受信するデータをメモリ40に書き込む。メモリ40は、例えば、データキャッシュである。レジスタファイル42は、複数のレジスタを含み、命令に含まれるソースオペランドに対応するレジスタにソースデータを保持し、命令に含まれるディスティネーションオペランドに対応するレジスタに演算結果を保持する。
図3は、図2のリザベーションステーション26とその周囲のブロックの一部を示す。リザベーションステーション26は、命令デコード部16にデコードされ、割り当て部18により割り当てが決められた命令を、共通のキューに保持する。そして、リザベーションステーション26は、キューに保持した命令のうち、演算器FXU34a、34b、FLU36a、36b毎に依存関係が解決し、実行が可能になった命令を演算器FXU34a、34bまたは演算器FLU36a、36bに発行する。演算器FXU34a、34bは、命令に基づいて、汎用レジスタGPR(General Purpose Register)43に保持されたデータを演算し、演算結果を汎用レジスタGPR43に格納する。演算器FLU36a、36bは、命令に基づいて、浮動小数点レジスタFPR(Floating Point Register)44に保持されたデータを演算し、演算結果を浮動小数点レジスタFPR44に格納する。
演算処理装置102は、演算器FXU、FLU、ターゲットアドレス計算器28、メモリアドレス生成器30およびストアデータ制御部32(以下、演算資源)に共通のリザベーションステーション26を有する。これにより、リザベーションステーション26内で命令データを保持する複数のエントリENTを含むキューを演算資源で共通でき、リザベーションステーション26の規模を増加することなく、演算資源からみたエントリENTの数を増加することができる。リザベーションステーション26のキューを共通化するための回路的な工夫は、図4で説明される。
図4は、図2のリザベーションステーション26の一例を示す。リザベーションステーションは、ウェイクアップ制御部260、選択制御部270、複数のエントリENTを含むキュー280および演算資源に対応してそれぞれ設けられる複数の選択部290を有する。ウェイクアップ制御部260は、レディ書き込み部262を有する。選択制御部270は、プライオリティ書き込み部271、レディフラグ部272、プライオリティ保持部274および発行制御部276を有する。
レディ書き込み部262は、実行可能情報書き込み部の一例であり、レディフラグ部272は、実行可能情報保持部の一例である。プライオリティ書き込み部271は、優先情報書き込み部の一例であり、プライオリティ保持部274は、優先情報保持部の一例である。発行制御部276は、出力決定部の一例である。
命令デコード部16がデコードにより生成した命令データは、キュー280だけではなく、ウェイクアップ制御部260および選択制御部270がそれぞれ有する図示しないキューにも分散して保持される。なお、ウェイクアップ制御部260、選択制御部270およびキュー280が保持する命令データに含まれる情報は、互いに重複してもよい。
ウェイクアップ制御部260は、命令データに含まれるレジスタアドレス(ソースおよびディスティネーション)と、発行制御部276が出力する選択信号SELとに基づいて、当該命令と他の命令との間の依存関係(データハザード)をチェックする。また、ウェイクアップ制御部260は、パイプライン資源の競合関係(構造ハザード)をチェックしてもよい。ウェイクアップ制御部260は、ハザードがない場合またはハザードが解決した場合、選択制御部270に命令を選択させるための情報を出力する。
レディ書き込み部262は、依存関係が解決した場合、命令の発行が可能になったことを示すレディフラグをレディフラグ部272に書き込む指示を選択制御部270に出力する。レディフラグの書き込み指示は、演算資源を示す情報を含んでもよい。レディフラグ(レディ状態R)は、実行可能情報の一例である。
プライオリティ書き込み部271は、例えば、命令が有効であることを示すバリッド情報および命令の順序等を示す情報に基づいて、命令の優先度を判定し、判定結果に基づいて優先情報をプライオリティ保持部274に出力する。例えば、プログラムにおいて先に実行される命令の優先度を、後に実行される命令の優先度より高くしてもよく、予め設定された優先度の高い命令の優先度を高くしてもよい。
選択制御部270は、命令データおよびウェイクアップ制御部260から受ける情報を保持し、保持した情報に基づいて、発行する命令を決定する調停動作を実行する。選択制御部270は、調停動作により決定した命令を選択部290に選択させる選択信号SELを、演算資源毎に出力する。選択信号SELは、命令を発行したことを示す情報としてウェイクアップ制御部260にも供給される。
レディフラグ部272は、演算資源毎にレディフラグを格納するフラグ格納領域(図4の縦方向に並ぶ領域)を有する。各フラグ格納領域の領域数は、キュー280のエントリENTの数と同じである。例えば、レディフラグ部272は、固定小数点演算器34aに実行させる命令に対応して、レディフラグのセット指示を受けたとする。この場合、レディフラグ部272は、固定小数点演算器34aに対応するフラグ格納領域において、対象の命令が格納されたキュー280のエントリENTに対応する領域に、レディフラグを書き込む。
プライオリティ保持部274は、キュー280のエントリENTの各々に対応して、エントリENTに保持された命令間での相対的な優先度を示す優先情報を保持する。このため、プライオリティ保持部274は、エントリENT毎に、他のエントリENTとの間の優先情報を格納する優先度格納行(図5)を有する。換言すれば、プライオリティ保持部274は、優先情報を格納する2次元の領域を有する。通常、命令の優先度は、キュー280のエントリに対応して1次元の優先情報で決めることができるのに対して、この実施形態では、2次元の優先情報を用いることで、後述するように、発行制御部276の論理を軽くすることができる。
発行制御部276は、レディフラグ部272およびプライオリティ保持部274が保持する情報に基づいて、演算資源に発行する命令を、演算資源毎に決定し、発行を決定した命令を保持するキュー280のエントリENTを示す選択信号SELを出力する。選択信号SELは、演算資源毎に独立に生成される。スーパースカラアーキテクチャでは、例えば、浮動小数点演算器36a、36bに対応する2つの選択信号SELが同時に生成されてもよい。
発行制御部276は、例えば、レディフラグ部272に格納されたレディフラグおよびプライオリティ保持部274に保持された優先情報の論理に基づいて、発行する命令を決定する。したがって、発行する命令を決定(選択)するための発行制御部276の論理の一部をプライオリティ保持部274に置き換えることができ、発行制御部276の論理段数を削減することができる。例えば、発行制御部276は、AND-ORロジックにより構築することができるため、発行する命令を決定する他の調停回路に比べて論理を軽くすることができる。また、発行制御部276の論理にダイナミックロジックを用いることで、キュー280のエントリ数を増やした場合にも遅延時間の増加を抑えることができ、B2Bスケジューリングの時間の削減に寄与することができる。
以上より、図1に示す演算処理装置100と同様に、B2Bスケジューリングに使える時間に余裕ができ、キュー280のエントリ数を増加することができる。エントリ数を増加する場合、アウトオブオーダ実行可能な命令数が増えるため、演算処理装置102の処理性能を向上することができる。エントリ数を増やさない場合、演算処理装置102のクロック周波数をさらに高くすることができ、処理性能を向上することができる。
キュー280は、複数の演算資源に共通に設けられ、命令データを保持する所定数のエントリENT(例えば、16個)を有する。すなわち、キュー280に複数の演算資源用の命令を混在させることができる。キュー280の各エントリENTの出力は、演算資源のそれぞれに対応する複数の選択部290の入力に接続される。例えば、演算資源が8個ある場合(28、30a、30b、32、34a、34b、36a、36b)、選択部290は8個設けられ、キュー280の各エントリENTの出力は、8個の選択部290の入力に並列に接続される。各選択部290は、発行制御部276から選択信号SELを受けた場合、選択信号SELが示すキュー280のエントリENTを選択し、エントリENTが保持している命令データを、対応する演算資源に発行する。
図5は、図4のレディフラグ部272およびプライオリティ保持部274の一例を示す。レディフラグ部272は、図4に示すキュー280の16個のエントリENTに対応して、レディフラグをそれぞれ格納する16個の領域を含むフラグ格納領域を、演算資源毎に有する。レディフラグ部272の各フラグ格納領域の構成は、図1に示す実行可能情報保持部5の構成と同様である。
プライオリティ保持部274は、図4に示すキュー280の16個のエントリENTに対応して、他のエントリENTとの間の優先情報を格納する15個の領域を含む優先度格納行(図5の横方向に並ぶ領域の行)を有する。優先度格納行は、複数のエントリENTの各々が保持した命令を他のエントリENTが保持する命令の各々より優先させるかを示す優先情報を保持する保持領域の一例である。
プライオリティ保持部274の構成は、図1に示す優先情報保持部7の構成と同様である。なお、プライオリティ保持部274は、他のエントリENTとの間の優先情報を格納する15個の領域を含む優先度格納列(図5の縦方向に並ぶ領域の列)を有するとも言える。
図6は、図4の発行制御部276の動作の一例を示す。換言すれば、図6は、図4のリザベーションステーション26による命令の発行条件の一例を示す。なお、図6は、演算資源毎の命令の発行条件を示す。
発行制御部276は、キュー280のエントリENTのいずれかに保持された命令である発行対象命令に対応してレディフラグ部272に保持された情報が、発行可能であるREADY状態を示さない場合(Not READY)、次のように動作する。発行制御部276は、プライオリティ保持部274に保持された情報にかかわりなく、発行対象命令を発行させる選択信号SELを出力しない(図6(a)、(b)、(c))。
一方、発行制御部276は、キュー280のエントリENTのいずれかに保持された命令である発行対象命令に対応してレディフラグ部272に保持された情報が、発行可能であるREADY状態を示す場合(READY)、次のように動作する。発行制御部276は、発行対象命令の優先度よりも優先度が高い他の命令の1つでもREADY状態を示す場合、発行対象命令を発行させる選択信号SELを出力しない(図6(d))。発行制御部276は、発行対象命令の優先度よりも優先度が高い他の命令の全てがREADY状態を示さない場合、発行対象命令を発行させる選択信号SELを出力する(図6(e))。また、発行制御部276は、発行対象命令の優先度よりも優先度が高い他の命令が1つもない場合、レディフラグ部272のREADY状態を参照することなく、発行対象命令を発行させる選択信号SELを出力する(図6(f))。
図6に示す命令の発行条件Sは、式(1)により示される。
S:=~(P×R)&R ‥(1)
式(1)の(P×R)の”P”は、他の命令の優先度を示し、(P×R)の”R”は、他の命令のREADY状態を示す。”&”の後の”R”は、発行対象命令のREADY状態を示す。(P×R)は、キュー280において、発行対象命令を保持するエントリENT以外の全てのエントリENTについて判定される。
式(1)において、(P×R)の”P”は、プライオリティ保持部274を参照することで取得され、発行対象命令より優先度が高い場合、”1”であり、発行対象命令より優先度が低い場合、”0”である。式(1)中の2つの”R”は、レディフラグ部272を参照することで取得され、図6のREADYの場合、”1”であり、図6のNot READYの場合、”0”である。式(1)の符号”~”は、論理の反転を示す。
そして、式(1)の論理演算の結果である発行条件Sが”1”を示す場合、発行対象命令が発行され、発行条件Sが”0”を示す場合、発行対象命令は発行されない。発行制御部276は、キュー280において、命令を保持する全てのエントリENT(すなわち、バリッドのエントリENT)について、図6の判定(すなわち、式(1)による判定)を実行する。なお、後述するように、マトリックス状のプライオリティ保持部274を使用することで、キュー280のエントリENTに保持された命令の優先度を一意に決めることができる。このため、命令を保持する全てのエントリENTについて図6の判定を実行する場合にも、例えば、誤った優先順で命令が発行されることを抑止することができる。
図7は、図4のリザベーションステーション26の動作の一例を示す。図7に示すレディフラグ部272は、1つの演算資源に対応するフラグ格納領域を示す。
図7では、キュー280のエントリENT13、ENT12、ENT10、ENT5に命令INS13、INS12、INS10、INS5がそれぞれ保持され、命令INS13、INS6が、発行可能なレディ状態R(図6に示したREADY)である。プライオリティ保持部274に保持された優先情報から、命令INSの発行の優先度は、INS12>INS13>INS5>INS10の順に高い。
プライオリティ保持部274において、エントリENT13の優先度格納行に保持されたエントリENT12の”1”は、命令INS12の優先度が命令INS13の優先度より高いことを示す。エントリENT12の優先度格納行には、”1”が格納されていないため、命令INS12の優先度が最も高いことを示す。エントリENT10の優先度格納行に保持されたエントリENT13、ENT12、ENT5の”1”は、命令INS13、INS12、INS5の優先度が命令INS10の優先度より高いことを示す。すなわち、命令INS10の優先度が最も低いことを示す。エントリENT5の優先度格納行に保持されたエントリENT13、ENT12の”1”は、命令INS13、INS12の優先度が命令INS5の優先度より高いことを示す。エントリENT5の優先度格納行において、エントリENT10に対応する領域には”1”が格納されていないため、命令INS5の優先度は、命令INS10の優先度より高いことが分かる。
図7に示す状態では、発行制御部276は、図6に示す判定条件および式(1)にしたがって、優先度が最も高い命令INS12がレディ状態Rでないことから発行を抑止する。発行制御部276は、優先度が2番目に高い命令INS13がレディ状態Rであるため発行を決定する。
図8は、図4のリザベーションステーション26の動作の別の例を示す。図7と同じ動作については、詳細な説明は省略する。図7と同様に、図8に示すレディフラグ部272は、1つの演算資源に対応するフラグ格納領域を示す。
図8では、図7に示す状態に対して、命令デコード部16がデコードした命令INS8がキュー280のエントリENT8に格納される。レディ書き込み部262は、命令INS8が発行可能であると判定し、エントリENT8に対応する領域にレディ状態Rを書き込む。プライオリティ書き込み部271は、他の命令INS13、INS12、INS10、INS5に対する命令INS8の優先度を決定する。例えば、プライオリティ書き込み部271は、命令INS8の優先度が、命令INS13、INS12の優先度より低く、命令INS10、INS5の優先度より高いことを決定する。
プライオリティ書き込み部271は、決定した優先度にしたがって、エントリENT8の優先度格納行におけるエントリENT13、ENT12の領域に”1”を書き込む。また、プライオリティ書き込み部271は、エントリENT8の優先度格納列におけるエントリENT10、ENT5の領域に、”1”を書き込む。
すなわち、プライオリティ書き込み部271は、キュー280のエントリENTに命令INSが格納される毎に、プライオリティ保持部274において、命令INSに対応する優先度格納行と、命令INSに対応する優先度格納列とが保持する情報を更新する。これにより、プライオリティ保持部274に保持された優先情報から、命令INSの発行の優先度は、INS12>INS13>INS5>INS10から、INS12>INS13>INS8>INS5>INS10に更新される。
図8で説明したように、プライオリティ書き込み部271は、キュー280のエントリENTに命令INSが格納される毎に、命令INSが格納されたエントリENTに対応するプライオリティ保持部274の優先度格納行と優先度格納列とを更新する。これにより、発行制御部276は、式(1)にしたがって、1hot0で発行する命令INSを選択することができる。ここで、1hot0は、エントリENTのいずれかに格納された命令INSが発行されるか、いずれの命令INSも発行されないことを示す。すなわち、マトリックス状のプライオリティ保持部274を用いる場合にも、命令INSの優先順を一意に決定することができ、優先順にしたがって命令INSを選択することができる。
図8に示す状態では、発行制御部276は、図7と同様に、優先度が最も高い命令INS12の発行を抑止し、優先度が2番目に高い命令INS13の発行を決定する。そして、レディ書き込み部262およびプライオリティ書き込み部271の状態が変わらない場合、発行制御部276は、優先度が次に高く、レディ状態Rである命令INS8の発行を決定する。
図9は、図3のリザベーションステーション26の動作フローの一例を示す。すなわち、図9は、演算処理装置102の制御方法の一例を示す。図9に示す動作フローは、命令デコード部16から命令INSが発行される毎に実行される。
ステップS10において、ウェイクアップ制御部260は、発行制御部276が出力する選択信号SELを参照する。次に、ステップS12において、ウェイクアップ制御部260は、命令INSのソースオペランドの依存性をチェックする。次に、ステップS14において、ウェイクアップ制御部260は、依存性が解決した場合、選択制御部270に自命令INSを選択させるための情報を出力し、動作をステップS16に移行し、依存性が解決していない場合、動作をステップS10に戻す。
ステップS16において、選択制御部270は、レディフラグ部272およびプライオリティ書き込み部271に保持された情報に基づいて、発行する自命令INSを選択する調停を実行する。次に、ステップS18において、選択制御部270は、調停結果に基づいて、発行する自命令INSを保持するキュー280のエントリENTに対応する選択信号SELを生成する。選択信号SELは、選択部290とウェイクアップ制御部260とに供給される。
なお、演算レイテンシが”1”の命令INSを順次実行する場合のB2Bスケジューリングは、ステップS16およびステップS18で選択信号SELが生成されてからステップS10、S12、S14の動作を完了するまでを1クロックサイクルで実行する必要がある。このため、演算レイテンシが”1”の命令INSを順次実行する場合のB2Bスケジューリングは、タイミング的に最も厳しい。しかしながら、この実施形態では、発行制御部276の論理を軽くできるため、例えば、B2Bスケジューリングに使える時間に余裕を持たせることができる。このため、演算処理装置の命令パイプラインにおいて、命令実行制御部により発行する命令INSを決めるステージでの遅延時間を短縮することができる。
次に、ステップS20において、選択部290は、自命令INSを発行可能な場合、動作をステップS22に移行し、自命令INSを発行可能でない場合、動作をステップS16に移行する。そして、ステップS22において、リザベーションステーション26は、自命令INSを演算資源に発行し、動作を終了する。
以上、図2から図9に示す実施形態においても、図1から図9に示す実施形態と同様に、B2Bスケジューリングに使える時間に余裕ができた分、リザベーションステーション26のキュー280のエントリ数を増加することができる。あるいは、発行制御部276による調停に参加できるエントリ数を増加することができる。これにより、アウトオブオーダ実行可能な命令数を増やすことができ、演算処理装置102の処理性能を向上することができる。エントリ数を増やさない場合、演算処理装置102のクロック周波数をさらに高くすることができ、処理性能を向上することができる。
さらに、図2から図9に示す実施形態では、図5に示すレディフラグ部272とプライオリティ保持部274とを含むリザベーションステーション26を適用することで、リザベーションステーション26に複数の発行口27を設けることができる。この際、プライオリティ保持部274のサイズを増加することなく、演算資源毎にレディフラグ部272のフラグ格納領域を設ければよい。すなわち、発行制御部276は、プライオリティ保持部274に保持された共通の優先情報に基づいて、演算資源毎に発行する命令INSを決定することができる。したがって、リザベーションステーション26に接続される演算資源の数にかかわらず、発行制御部276の負荷をほぼ同じにすることができる。この結果、リザベーションステーション26に複数の発行口27を設ける場合にも、演算処理装置102の処理性能の低下を抑止することができる。
図4に示したリザベーションステーション26は、演算資源毎のフラグ格納領域(レディフラグ)と、演算資源に共通のプライオリティ保持部274とを有し、発行口27の増加が発行制御部276の動作時間に影響しにくい構成である。このため、発行口27を増加する場合にも、B2Bスケジューリングの時間の増加を最小限にすることができ、キュー280のエントリENTを減らすことなく発行口27を増加することができる。発行口27を増加しない場合には、B2Bスケジューリングの時間に余裕ができるため、余裕時間の論理を使って、キュー280のエントリ数を増加することができる。
キュー280を複数の演算資源に共通にすることができ、同種の演算資源への命令INSの割り当てに偏りが発生する場合や、複数種の演算資源の実行頻度に偏りが発生する場合にも、キュー280のエントリENTを無駄なく使用することができる。換言すれば、演算資源毎にリザベーションステーションを設ける場合に比べて、演算資源から見たエントリENTの数を増やすことができる。この結果、演算処理装置102の処理性能を向上することができる。
図10は、別の実施形態の演算処理装置におけるリザベーションステーションの一例を示す。図10に示すリザベーションステーション26Aを有する演算処理装置は、例えば、スーパースカラアーキテクチャのプロセッサである。リザベーションステーション26Aは、図7と同様のレディフラグ部272およびプライオリティ保持部274と、図7のキュー280に優先フラグPRIが追加されたキュー280Aを有する。図10に示すリザベーションステーション26Aを有する演算処理装置のその他の構成は、図2に示す演算処理装置102と同様である。
キュー280の各エントリENTの優先フラグPRIには、通常の優先度を示す”n”または”n”に比べて優先度が高いことを示す”h”のいずれかが格納される。例えば、優先フラグPRIは、1ビットであり、論理0、論理1の一方と他方とが、”n”と”h”に対応する。命令INSの優先度が”n”であるか”h”であるかは、命令INS毎に予め設定されている。このため、優先フラグPRIに格納する”n”または”h”は、命令デコード部16(図2)により決定される。
図10では、キュー280のエントリENT15、ENT14、ENT13、ENT12、ENT9、ENT6、ENT1、ENT0に、命令INS15、INS14、INS13、INS12、INS9、INS6、INS1、INS0がそれぞれ格納される。命令INS15、INS14、INS13、INS12、INS9、INS6、INS1、INS0の優先度は、それぞれ”n”、”n”、”h”、”h”、”h”、”h”、”n”、”n”である。
例えば、命令デコード部16は、命令INSを2つずつデコードし、デコードした命令INS(デコードにより得た命令データ)を2つずつキュー280に格納する。図10に示す例では、命令デコード部16は、命令(INS15、INS14)、(INS13、INS12)、(INS1、INS0)、(INS9、INS6)を、この順でキュー280に格納する。
プライオリティ書き込み部271(図4)は、命令INSがキューに格納された場合、格納された命令INSに対応する優先度格納行と優先度格納列とに”1”または”0”を格納する。優先度格納行に着目する場合、キュー280に格納された命令INSに対する他の命令INSの優先度は、”1”では高く、”0”では低い。一方、優先度格納列に着目する場合、キュー280に格納された命令INSに対する他の命令INSの優先度は、”1”では低く、”0”では高い。
以下では、命令INS9、INS6がキュー280のエントリENT9、ENT6にそれぞれ格納された場合について説明する。例えば、命令INS6は、プログラムの実行順では命令INS9より前にある。このため、命令INS6の優先度は、命令INS9の優先度より高い。
プライオリティ書き込み部271は、優先度が”h”の命令INS9、INS6に対応する優先度格納行では、優先度が”n”の命令INS15、INS14、INS1、INS0に対応する領域に”0”を強制的に格納する。優先度が同じ”h”である命令INS13、INS12は、プログラムの実行順が前であり、優先度が高い。このため、プライオリティ書き込み部271は、命令INS9、INS6に対応する優先度格納行における命令INS13、INS12に対応する領域に”1”を格納する。
プライオリティ書き込み部271は、命令INS9に対応する優先度格納行における命令INS6に対応する領域に、優先度が高いことを示す”1”を格納する。プライオリティ書き込み部271は、命令INS6に対応する優先度格納行における命令INS9に対応する領域に、優先度が低いことを示す”0”を格納する。
さらに、プライオリティ書き込み部271は、命令INS9、INS6に対応する優先度格納列における命令INS15、INS14、INS1、INS0に対応する領域に、”1”を強制的に格納する。これは、命令INS15、INS14、INS1、INS0の優先度(”n”)が命令INS9、INS6の優先度(”h”)より低いためである。また、プライオリティ書き込み部271は、命令INS9、INS6に対応する優先度格納列において、プログラムの実行順が前である命令INS13、INS12に対応する領域に、”0”を格納する。
このように、プライオリティ書き込み部271は、優先フラグPRIに応じた優先度と、プログラムの順序に応じた優先度とに基づいてプライオリティ保持部274に”1”または”0”を書き込む。これにより、命令INS自体に優先度を設定し、特定の命令INSをリザベーションステーション26Aから優先的に発行する場合にも、リザベーションステーション26Aの回路規模が増加することを抑止することができる。
演算処理装置が実行する命令INSのうち、ある種の命令INSは、リザベーションステーション26Aから優先的に発行した方が、演算処理装置全体の処理性能が向上する場合、命令INS自体に優先度が設定されてもよい。この場合、命令デコード部16(図2)は、デコードした命令INSの優先度を判定し、判定結果に応じた情報(”n”または”h”)を、割り当て部18を介してリザベーションステーション26Aに出力する。
例えば、命令INSに設定される優先度毎にリザベーションステーションを設ける場合、優先度毎にキュー280が設けられるため、回路規模が大きくなる。これに対して、図10では、1つのリザベーションステーション26Aのキュー280により、複数の優先度の命令INSを保持することができる。また、プライオリティ保持部274は、優先度の数にかかわらず1つを設ければよい。これにより、リザベーションステーション26Aの回路規模を削減することができ、演算処理装置のチップサイズを削減することができる。
なお、優先フラグPRIを複数ビットに拡張し、3通り以上の優先度を設定可能にしてもよい。この場合にも、1つのキュー280に3通り以上の優先度を設定することができ、プライオリティ保持部274は、優先度の数にかかわらず1つを設ければよい。
以上、図10に示す実施形態においても、図1から図9に示す実施形態と同様の効果を得ることができる。さらに、図10に示す実施形態では、特定の命令INSの優先度が他の命令INSの優先度と異なる場合にも、1つのリザベーションステーション26Aにより、命令INSの発行制御を実行することができる。この際、キュー280に優先フラグPRIを追加するだけで、図5のプライオリティ保持部274をそのまま流用できる。このため、リザベーションステーション26Aの回路規模の増加を抑制しつつ、優先度が異なる複数種の命令INSの発行制御を実行することができる。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
1 命令デコード部
2 命令実行制御部
3 命令実行部
4 命令保持部
5 実行可能情報保持部
6 実行可能情報書き込み部
7 優先情報保持部
8 優先情報書き込み部
9 出力決定部
10 命令フェッチ制御部
12 命令キャッシュ部
14 命令バッファ部
16 命令デコード部
18 割り当て部
20 レジスタ管理部
22 コミット制御部
24 分岐制御部
26、26A リザベーションステーション
28 ターゲットアドレス計算器(BRCH)
30 メモリアドレス生成器(AGU)
32 ストアデータ制御部(STD)
34 固定小数点演算器(FXU)
36 浮動小数点演算器(FLU)
38 ロード/ストアキュー
40 メモリ
42 レジスタファイル
100、102 演算処理装置
260 ウェイクアップ制御部
262 レディ書き込み部
270 選択制御部
271 プライオリティ書き込み部
272 レディフラグ部
274 プライオリティ保持部
276 発行制御部
280、280A キュー
290 選択部
ENT エントリ
P 優先情報
R 実行可能情報

Claims (8)

  1. 命令をデコードする命令デコード部と、
    前記命令デコード部がデコードした命令を保持する複数のエントリから実行可能な命令を出力する命令実行制御部と、
    前記命令実行制御部が出力する命令を実行する命令実行部と、を有し、
    前記命令実行制御部は、
    前記複数のエントリの各々が保持した命令が実行可能かを示す実行可能情報を保持する実行可能情報保持部と、
    前記複数のエントリにそれぞれ対応する複数の保持領域を有し、前記複数の保持領域の各々に、他のエントリに保持された命令との相対的な優先度を示す優先情報を保持する優先情報保持部と、
    前記エントリが保持する命令を前記命令実行部で実行可能かを判定し、判定結果に基づいて実行可能情報を前記実行可能情報保持部に書き込む実行可能情報書き込み部と、
    前記エントリに格納する命令と前記エントリに格納済みの命令の各々との優先度を判定し、判定結果に基づいて優先情報を前記優先情報保持部に書き込む優先情報書き込み部と、
    前記複数の保持領域の各々に保持された相対的な優先度を示す優先情報に基づいて、前記実行可能情報保持部に保持された実行可能情報で示される実行可能な命令のうち、優先度が最も高い命令を前記命令実行部に出力する命令として決定する出力決定部と、を有することを特徴とする演算処理装置。
  2. 前記優先情報保持部は、前記保持領域の各々を行とする表形式であることを特徴とする請求項1に記載の演算処理装置。
  3. 複数の前記命令実行部を有し、
    前記命令実行制御部は、複数の前記命令実行部に共通に設けられ、
    前記実行可能情報保持部は、前記命令実行部毎に設けられ、
    前記出力決定部は、命令を実行する命令実行部に対応する実行可能情報保持部が保持する実行可能情報と前記優先情報保持部が保持する優先情報とに基づいて、命令を出力するエントリを決定することを特徴とする請求項1または請求項2に記載の演算処理装置。
  4. 複数の前記命令実行部の各々は、演算命令を実行する演算命令実行部、メモリアクセス命令を実行するメモリアクセス命令実行部または分岐命令の実行を制御する分岐命令実行部のいずれかであることを特徴とする請求項3に記載の演算処理装置。
  5. 前記複数のエントリの各々は、命令と命令に設定された優先度を示す情報とを保持する領域を有し、
    前記優先情報書き込み部は、前記エントリに格納する命令に設定された優先度と、前記エントリに格納済みの優先度を示す情報とに基づき、前記優先情報保持部に優先情報を書き込むことを特徴とする請求項1ないし請求項4のいずれか1項に記載の演算処理装置。
  6. 命令をデコードする命令デコード部と、
    前記命令デコード部がデコードした命令を保持する複数のエントリから実行可能な命令を出力する命令実行制御部と、
    前記命令実行制御部が出力する命令を実行する命令実行部と、を有し、
    前記命令実行制御部は、
    前記複数のエントリの各々が保持した命令が実行可能かを示す実行可能情報を保持する実行可能情報保持部と、
    前記複数のエントリの各々が保持した命令を他のエントリが保持する命令の各々より優先させるかを示す優先情報を保持する保持領域を、前記複数のエントリの各々に対応して有する優先情報保持部と、
    前記エントリが保持する命令を前記命令実行部で実行可能かを判定し、判定結果に基づいて実行可能情報を前記実行可能情報保持部に書き込む実行可能情報書き込み部と、
    前記エントリに格納する命令と前記エントリに格納済みの命令の各々との優先度を判定し、判定結果に基づいて優先情報を前記優先情報保持部に書き込む優先情報書き込み部と、
    前記実行可能情報保持部が保持する実行可能情報と前記優先情報保持部が保持する優先情報とに基づいて、命令を出力するエントリを決定する出力決定部と、を有し、
    前記複数のエントリの各々は、命令と命令に設定された優先度を示す情報とを保持する領域を有し、
    前記優先情報書き込み部は、前記エントリに格納する命令に設定された優先度と、前記エントリに格納済みの優先度を示す情報とに基づき、前記優先情報保持部に優先情報を書き込むことを特徴とする演算処理装置。
  7. 前記出力決定部は、前記実行可能情報保持部が保持する実行可能情報に基づいて、実行可能な命令を保持するエントリを検出し、前記優先情報保持部が保持する優先情報に基づいて、検出したエントリが保持する命令のうち、優先度が最も高い命令の出力を決定することを特徴とする請求項1ないし請求項6のいずれか1項に記載の演算処理装置。
  8. 命令をデコードする命令デコード部と、前記命令デコード部がデコードした命令を保持する複数のエントリから実行可能な命令を出力する命令実行制御部と、前記命令実行制御部が出力する命令を実行する命令実行部と、前記複数のエントリにそれぞれ対応する複数の保持領域を有し、前記複数の保持領域の各々に、他のエントリに保持された命令との相対的な優先度を示す優先情報を保持する優先情報保持部と、を有する演算処理装置の制御方法において、
    前記命令実行制御部が有する実行可能情報書き込み部が、前記エントリが保持する命令を前記命令実行部で実行可能かを判定し、判定結果に基づいて実行可能情報を実行可能情報保持部に書き込み、
    前記命令実行制御部が有する優先情報書き込み部が、前記エントリに格納する命令と前記エントリに格納済みの命令の各々との優先度を判定し、判定結果に基づいて、前記複数のエントリの各々が保持した命令を他のエントリが保持する命令の各々より優先させるかを示す優先情報を前記優先情報保持部に書き込み、
    前記命令実行制御部が有する出力決定部が、前記複数の保持領域の各々に保持された相対的な優先度を示す優先情報に基づいて、前記実行可能情報保持部に保持された実行可能情報で示される実行可能な命令のうち、優先度が最も高い命令を前記命令実行部に出力する命令として決定すること、を特徴とする演算処理装置の制御方法。
JP2018229404A 2018-12-06 2018-12-06 演算処理装置および演算処理装置の制御方法 Active JP7225745B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018229404A JP7225745B2 (ja) 2018-12-06 2018-12-06 演算処理装置および演算処理装置の制御方法
US16/701,209 US11755329B2 (en) 2018-12-06 2019-12-03 Arithmetic processing apparatus and method for selecting an executable instruction based on priority information written in response to priority flag comparison

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018229404A JP7225745B2 (ja) 2018-12-06 2018-12-06 演算処理装置および演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2020091751A JP2020091751A (ja) 2020-06-11
JP7225745B2 true JP7225745B2 (ja) 2023-02-21

Family

ID=70970180

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018229404A Active JP7225745B2 (ja) 2018-12-06 2018-12-06 演算処理装置および演算処理装置の制御方法

Country Status (2)

Country Link
US (1) US11755329B2 (ja)
JP (1) JP7225745B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11816061B2 (en) * 2020-12-18 2023-11-14 Red Hat, Inc. Dynamic allocation of arithmetic logic units for vectorized operations
CN113778528B (zh) * 2021-09-13 2023-03-24 北京奕斯伟计算技术股份有限公司 指令发送方法、装置、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008198223A (ja) 1998-11-27 2008-08-28 Matsushita Electric Ind Co Ltd プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体
JP2016224796A (ja) 2015-06-02 2016-12-28 富士通株式会社 演算処理装置および演算処理装置の処理方法
US20170024205A1 (en) 2015-07-24 2017-01-26 Apple Inc. Non-shifting reservation station

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5644742A (en) 1995-02-14 1997-07-01 Hal Computer Systems, Inc. Processor structure and method for a time-out checkpoint
WO1996025705A1 (en) 1995-02-14 1996-08-22 Fujitsu Limited Structure and method for high-performance speculative execution processor providing special features
US6785802B1 (en) * 2000-06-01 2004-08-31 Stmicroelectronics, Inc. Method and apparatus for priority tracking in an out-of-order instruction shelf of a high performance superscalar microprocessor
JP5201140B2 (ja) 2007-06-20 2013-06-05 富士通株式会社 同時マルチスレッドの命令完了制御装置
US8380964B2 (en) * 2009-04-03 2013-02-19 International Business Machines Corporation Processor including age tracking of issue queue instructions
US9983879B2 (en) * 2016-03-03 2018-05-29 International Business Machines Corporation Operation of a multi-slice processor implementing dynamic switching of instruction issuance order
US10120690B1 (en) * 2016-06-13 2018-11-06 Apple Inc. Reservation station early age indicator generation
US10942747B2 (en) * 2017-11-30 2021-03-09 International Business Machines Corporation Head and tail pointer manipulation in a first-in-first-out issue queue

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008198223A (ja) 1998-11-27 2008-08-28 Matsushita Electric Ind Co Ltd プロセッサ、コンパイル装置及びコンパイルプログラムを記録している記録媒体
JP2016224796A (ja) 2015-06-02 2016-12-28 富士通株式会社 演算処理装置および演算処理装置の処理方法
US20170024205A1 (en) 2015-07-24 2017-01-26 Apple Inc. Non-shifting reservation station

Also Published As

Publication number Publication date
US20200183684A1 (en) 2020-06-11
JP2020091751A (ja) 2020-06-11
US11755329B2 (en) 2023-09-12

Similar Documents

Publication Publication Date Title
US11163582B1 (en) Microprocessor with pipeline control for executing of instruction at a preset future time
US6981129B1 (en) Breaking replay dependency loops in a processor using a rescheduled replay queue
JP4610593B2 (ja) デュアルスレッドプロセッサ
JP3927546B2 (ja) 同時マルチスレッド化プロセッサ
US6877086B1 (en) Method and apparatus for rescheduling multiple micro-operations in a processor using a replay queue and a counter
US7734897B2 (en) Allocation of memory access operations to memory access capable pipelines in a superscalar data processing apparatus and method having a plurality of execution threads
US7363625B2 (en) Method for changing a thread priority in a simultaneous multithread processor
JP3919764B2 (ja) 例外条件を解消するために同時マルチスレッド・プロセッサでディスパッチ・フラッシュを使用する方法
KR100745904B1 (ko) 동시적 멀티스레드 프로세서에서 파이프라인 길이를변경하기 위한 방법 및 회로
US8635621B2 (en) Method and apparatus to implement software to hardware thread priority
US11204770B2 (en) Microprocessor having self-resetting register scoreboard
JP6260303B2 (ja) 演算処理装置及び演算処理装置の制御方法
US20150212972A1 (en) Data processing apparatus and method for performing scan operations
US11132199B1 (en) Processor having latency shifter and controlling method using the same
US7194603B2 (en) SMT flush arbitration
US20210311741A1 (en) Processor having read shifter and controlling method using the same
JP7225745B2 (ja) 演算処理装置および演算処理装置の制御方法
JP4985452B2 (ja) ベクトル処理装置
CN114514505A (zh) 退役队列压缩
US11422821B1 (en) Age tracking for independent pipelines
US11593115B2 (en) Processor, device, and method for executing instructions
JP7032647B2 (ja) 演算処理装置及び演算処理装置の制御方法
US11314505B2 (en) Arithmetic processing device
US20230195456A1 (en) System, apparatus and method for throttling fusion of micro-operations in a processor
Rogers Understanding Simultaneous Multithreading on z Systems

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210909

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220728

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220802

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220926

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230123

R150 Certificate of patent or registration of utility model

Ref document number: 7225745

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150