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

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

Info

Publication number
JP7205174B2
JP7205174B2 JP2018211577A JP2018211577A JP7205174B2 JP 7205174 B2 JP7205174 B2 JP 7205174B2 JP 2018211577 A JP2018211577 A JP 2018211577A JP 2018211577 A JP2018211577 A JP 2018211577A JP 7205174 B2 JP7205174 B2 JP 7205174B2
Authority
JP
Japan
Prior art keywords
instruction
unit
instructions
target
loop
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
JP2018211577A
Other languages
English (en)
Other versions
JP2020077333A (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 JP2018211577A priority Critical patent/JP7205174B2/ja
Priority to US16/665,449 priority patent/US11080063B2/en
Publication of JP2020077333A publication Critical patent/JP2020077333A/ja
Application granted granted Critical
Publication of JP7205174B2 publication Critical patent/JP7205174B2/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 or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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/30181Instruction operation extension or modification
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • 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 or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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 or 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • 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 or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions

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、2参照)。また、ループバッファが出力する命令を実行する場合、分岐予測部、命令バッファ部および命令デコード部等の動作を停止する演算処理装置が提案されている(例えば、特許文献3参照)。命令バッファ内の複数の命令がパイプラインで同時に実行可能な場合、パイプラインに出力する制御信号を変換して、複数の命令が実行された場合と同じ処理をパイプラインに実行させる演算処理装置が提案されている(例えば、特許文献4参照)。
特開2015-219823号公報 特開2006-309337号公報 特開2018-5488号公報 特開平10-105399号公報
ループバッファに格納可能な命令の数は、ループバッファのエントリ数以下である。このため、分岐命令の実行に基づいて分岐する分岐先の命令から分岐命令までの命令数がループバッファのエントリ数を超える場合、ループバッファを使用することができない。また、ループバッファに格納可能な命令数を増加するためにループバッファのエントリ数を増加させる場合、ループバッファの規模とループバッファを制御する回路の規模とが増大し、演算処理装置のチップサイズは増大する。
1つの側面では、本発明は、ループバッファ部に実質的に保持可能な命令数を増加することで、命令実行部による命令の実行のスループットを向上することを目的とする。
一つの観点によれば、演算処理装置は、命令をデコードする命令デコード部と、前記命令デコード部がデコードした命令を実行する命令実行部と、前記命令デコード部がデコードした命令の中から、繰り返し実行されるループ処理の対象命令を抽出する命令抽出部と、前記命令抽出部が抽出した対象命令の各々が格納される複数のエントリを有するループバッファ部と、命令の実行に使用する情報を保持するレジスタを含むレジスタファイルと、前記対象命令を前記ループバッファ部の前記複数のエントリの1つに格納するとともに、前記対象命令である複数の連続する命令を1つの対象命令として融合可能な場合であって、前記複数の連続する命令で使用する前記レジスタが競合しない場合、または前記複数の連続する命令で重複して使用する前記レジスタのビット位置が競合しない場合、前記複数の連続する命令を融合して1つの対象命令とし、前記ループバッファ部の前記複数のエントリの1つに格納する命令処理部と、前記命令デコード部が出力する命令または前記ループバッファ部が出力する対象命令のいずれかを選択し、選択した命令を前記命令実行部に出力する命令選択部とを有する。
1つの側面では、本発明は、ループバッファ部に実質的に保持可能な命令数を増加することで、命令実行部による命令の実行のスループットを向上することができる。
一実施形態における演算処理装置の一例を示す図である。 図1の演算処理装置の動作の一例を示す図である。 図1の演算処理装置を含む情報処理システムの一例を示す図である。 別の実施形態における演算処理装置の一例を示す図である。 図4の演算処理装置が実行するプログラムの一例を示す図である。 図4の共有処理部およびループキャッシュ部に格納される情報の一例を示す図である。 図4の共有命令デコード部および共有処理部の動作の一例を示す図である。 図4のコミット制御部の動作の一例を示す図である。 別の実施形態の演算処理装置における共有処理部およびループキャッシュ部に格納される情報の一例を示す図である。
以下、図面を用いて実施形態を説明する。
図1は、一実施形態における演算処理装置の一例を示す。図1に示す演算処理装置100は、命令デコード部1、命令抽出部2、命令処理部4、ループバッファ部5、命令選択部6および命令実行部7を有する。演算処理装置100は、複数の命令を並列にフェッチし、フェッチした複数の命令を並列に実行するスーパースカラ方式のプロセッサでもよく、スカラ方式等の他の方式のプロセッサでもよい。
命令デコード部1は、図示しない1次命令キャッシュ等のメモリからフェッチされた命令をデコードし、デコードした命令(デコード結果)を出力する。命令抽出部2は、命令デコード部1がデコードした命令の中から、繰り返し実行されるループ処理の対象命令を抽出する。例えば、ループ処理の対象命令は、分岐命令の分岐先のアドレスを予測する分岐予測部(図示せず)により予測されてもよい。この場合、命令抽出部2は、分岐予測部の予測にしたがってループ処理の対象命令を抽出する。
命令処理部4は、命令抽出部2が抽出した対象命令をループバッファ部5のエントリ5aの1つに格納する。但し、命令処理部4は、命令抽出部2が抽出した複数の対象命令が1つの命令として実行可能な場合、複数の対象命令を融合して1つの対象命令とし、融合により得られた対象命令をループバッファ部5のエントリ5aの1つに格納する。例えば、融合可能な複数の対象命令は、比較結果に応じてコンディションコードレジスタにコンディションコードを設定する比較命令と、比較命令に続く条件分岐命令である。融合可能な複数の命令は、比較命令と条件分岐命令とに限定されない。例えば、複数の対象命令の融合により得られる1つの対象命令が、命令実行部7内の資源を競合させることなく実行可能な場合、複数の対象命令は融合可能である。
ループバッファ部5は、命令抽出部2が抽出した対象命令または命令処理部4による融合により得られた対象命令が格納される複数のエントリ5aを有する。ループバッファ部5は、ループ処理の対象命令のエントリ5aへの格納が完了した場合、エントリ5aに格納された対象命令を、ループ処理の実行が解除されるまで命令選択部6に順次出力する。ループ処理の実行は、例えば、条件分岐命令による分岐条件の成立によりループ処理が繰り返される場合、分岐条件の不成立により解除される。
命令選択部6は、命令デコード部1が出力する命令またはループバッファ部5が出力する対象命令のいずれかを選択し、選択した命令を命令実行部7に出力する。命令選択部6は、ループバッファ部5への対象命令の格納が完了していない場合、命令デコード部1が出力する命令を選択する。命令選択部6は、ループバッファ部5への対象命令の格納が完了した場合、ループバッファ部5が出力する命令を選択する。例えば、ループバッファ部5への対象命令の格納が完了したか否かは、ループバッファ部5から命令選択部6に通知されてもよく、命令処理部4から命令選択部6に通知されてもよい。
そして、命令実行部7は、命令選択部6を介して受信する命令デコード部1からの命令またはループバッファ部5からの命令を実行し、命令の実行結果を出力する。例えば、命令実行部7は、演算命令を実行する演算器および分岐命令による分岐先を判定する判定部等を有する。
図2は、図1の演算処理装置100の動作の一例を示す。すなわち、図2は、演算処理装置100の制御方法の一例を示す。図2において、白い四角は、ループ処理の対象命令でない通常の命令を示し、網掛けの四角、丸、三角は、ループ処理の対象命令を示す。網掛けの2つの丸は、1つの対象命令に融合可能な対象命令を示し、網掛けの三角は、分岐命令の一種である条件分岐命令を示す。黒丸は、融合された対象命令を示す。なお、1つの対象命令に融合可能な対象命令は、3つ以上でもよい。
三角の条件分岐命令は、直前の四角の命令の実行結果に応じて設定されるコンディションコードの値に基づいて、分岐条件が成立したか否かを判断する。例えば、三角の条件分岐命令は、分岐条件の成立時にループ処理の対象命令群の先頭の命令に分岐する命令である。なお、条件分岐命令は、分岐条件の不成立時にループ処理の対象命令群の先頭の命令に分岐する命令でもよい。
図2では、説明を簡単にするために、演算処理装置100は、フェッチした命令をインオーダで実行するものとする。図2に示す例では、演算処理装置100は、2つの白い四角の命令をフェッチして実行した後、ループ処理の対象の5つの命令を繰り返し実行する。例えば、図示しない分岐予測部等は、連続する複数のアドレスの命令が繰り返しフェッチされることに基づいて、ループ処理が継続することを予測した場合、条件分岐命令のデコードタイミングに合わせてタグ情報LOOP_TAGを2回出力する。命令選択部6は、2回目のタグ情報LOOP_TAGが出力されるまで、命令デコード部1がデコードした命令(デコード結果)を選択し、選択した命令を命令実行部7に出力する。なお、ループ処理が継続することは、命令抽出部2や他の回路により検出されてもよい。
命令抽出部2は、最初のタグ情報LOOP_TAGが出力されてから次のタグ情報LOOP_TAGが出力されるまでに受信する命令をループ処理の対象命令として抽出する。例えば、命令抽出部2は、抽出した対象命令を命令保持部3に格納してもよい。命令保持部3は、命令抽出部2の内部または命令処理部4の内部に設けられてもよい。
命令処理部4は、命令抽出部2が抽出した対象命令をループバッファ部5のエントリ5aの1つに格納する。但し、連続する複数の対象命令で使用する命令実行部7の資源が重複せず、連続する複数の対象命令を1つの命令として実行可能な場合、命令処理部4は、複数の対象命令を融合して1つの対象命令する。そして、命令処理部4は、融合した対象命令をループバッファ部5のエントリ5aの1つに格納する。命令処理部4が複数の対象命令を融合して1つの対象命令にすることで、ループバッファ部5のエントリに保持する対象命令の数を実質的に増加することができる。換言すれば、ループバッファ部5のエントリ5aの使用効率を向上することができる。
なお、命令抽出部2および命令処理部4の動作は、ループバッファ部5に格納される前の対象命令の命令実行部7による動作と並列に実行される。すなわち、命令抽出部2および命令処理部4の動作は、対象命令の命令実行部7による動作のバックグラウンドで実行される。換言すれば、命令抽出部2および命令処理部4は、図1に示すように、ループ処理の対象命令以外の通常命令を命令デコード部1から命令実行部7に転送する経路とは別の経路に設けられる。このため、命令抽出部2および命令処理部4の動作により、演算処理装置100の処理性能が低下することを抑止することができる。
ループバッファ部5は、ループ処理の対象命令が格納された場合、保持した対象命令を繰り返し出力する。命令選択部6は、ループバッファ部5から対象命令が出力される場合、命令デコード部1から出力される命令の選択を抑止し、ループバッファ部5から出力される対象命令を選択する。命令選択部6の動作に示す下向きまたは上向きの矢印は、命令選択部6が命令を選択することを示す。
命令実行部7は、命令選択部6が選択した命令を実行する。この際、命令実行部7は、融合により得られた1つの対象命令を実行することで、2つの対象命令を順次実行する場合に比べて命令の実行のスループットを向上することができる。ループ処理の対象命令は、繰り返し実行される可能性が高いため、命令の実行のスループットの向上の寄与度は高い。また、命令がアウトオブオーダにより実行される場合、命令の実行順を入れ替えるために使用する各種資源の使用効率を向上することができる。例えば、レジスタリネーミングに使用される更新バッファのエントリの使用効率を向上することができ、命令の実行の完了処理を実行するコミット処理に使用されるエントリの使用効率を向上することができる。この結果、命令実行部7による命令の実行のスループットを向上することができる。
図3は、図1の演算処理装置100を含む情報処理システムの一例を示す。例えば、図5に示す情報処理システムは、サーバ1000である。サーバ1000は、複数の演算処理装置100、複数のメインメモリ200およびインターコネクト制御部300を有する。例えば、演算処理装置100は、中央演算処理装置(CPU;Central Processing Unit)であり、インターコネクト制御部300に接続される。各メインメモリ200は、対応する演算処理装置100に接続される。インターコネクト制御部300は、ハードディスク装置または通信装置等の外部装置に接続され、外部装置に対して入出力制御を実行する。
以上、図1から図3に示す実施形態では、ループバッファ部5のエントリ5aに保持する対象命令の数を実質的に増加することができ、ループバッファ部5のエントリ5aの使用効率を向上することができる。このため、繰り返し実行される可能性が高いループ処理の対象命令の実行のスループットを、複数の対象命令を融合しない場合に比べて向上することができる。命令抽出部2および命令処理部4の動作は、対象命令の命令実行部7による実行のバックグラウンドで実行されるため、演算処理装置100の処理性能が低下することを抑止することができる。命令がアウトオブオーダにより実行される場合、命令の実行順を入れ替えるために使用される各種資源の使用効率を向上することができる。この結果、命令実行部7による命令の実行のスループットを向上することができ、演算処理装置100の処理性能を向上することができる。
図4は、別の実施形態における演算処理装置の一例を示す。図1から図3で説明した要素と同一または同様の要素および機能については、詳細な説明は省略される。図4に示す演算処理装置102は、例えば、スーパースカラ方式のプロセッサである。また、演算処理装置102を含む情報処理システムは、図3と同様の構成であり、図3のCPUの符号を102に置き換えることで実現される。
演算処理装置102は、命令フェッチアドレス生成部10、分岐予測部12、1次命令キャッシュ14、2次キャッシュ16、命令バッファ部18、命令デコード部20、共有命令デコード部22、共有処理部24およびループキャッシュ部26を有する。演算処理装置102は、セレクタ部28、レジスタリネーミング部30、リザベーションステーション32(321、322、323、324)、コミット制御部34およびプログラムカウンタ36を有する。演算処理装置102は、オペランドアドレス生成部38、1次データキャッシュ40、演算器42、44、更新バッファ46、48およびレジスタファイル50、52を有する。更新バッファ46およびレジスタファイル50は、固定小数点数のデータを保持し、更新バッファ48およびレジスタファイル52は浮動小数点数のデータを保持する。
命令フェッチアドレス生成部10は、命令をフェッチするアドレスを生成するアドレス生成部の一例である。共有命令デコード部22は、ループ処理の対象命令を抽出する命令抽出部の一例であり、共有処理部24は、複数の対象命令を1つの対象命令に融合する命令処理部の一例である。ループキャッシュ部26は、ループバッファ部の一例であり、セレクタ部28は、命令選択部の一例である。レジスタリネーミング部30、リザベーションステーション32、コミット制御部34、オペランドアドレス生成部38、演算器42、44、更新バッファ46、48およびレジスタファイル50、52は、命令実行部の一例である。
また、レジスタリネーミング部30は、更新バッファ46、48の割り当てを制御する割り当て制御部の一例である。更新バッファ46は、命令の実行中にレジスタファイル50内のレジスタの代わりに使用するエントリを含むバッファ部の一例である。コミット制御部34は、命令デコード部20またはループキャッシュ部26が出力する命令を保持する複数のエントリを含む完了制御部の一例である。
命令フェッチアドレス生成部10は、分岐予測部12からアドレスを受けない場合、内部で順次生成するアドレスに基づいて、1次命令キャッシュ14からの命令のフェッチに使用するアドレスを生成する。また、命令フェッチアドレス生成部10は、分岐予測部12からアドレスを受けた場合、分岐予測部12から受けたアドレスに基づいて、1次命令キャッシュ14からの命令のフェッチに使用するアドレスを生成する。なお、分岐ミスが発生した場合や各種のエラーが発生し、命令の実行をキャンセルするために命令パイプラインをクリアする場合、プログラムカウンタ36の値を使用して命令のフェッチが再開される。
分岐予測部12は、命令フェッチアドレス生成部10が生成したアドレスに基づいて、分岐命令による分岐が実行されるか否かを予測し、分岐を予測した場合、分岐先アドレスを命令フェッチアドレス生成部10に出力する。例えば、分岐予測部12は、所定数の命令が繰り返されるループ処理が続くことを予測した場合、ループ処理の対象アドレスが一巡するまで、ループ処理の対象アドレスを順次出力する。この場合、分岐予測部12は、ループ処理の対象アドレスの最大値(条件分岐命令の格納アドレス)とともにタグ情報LOOP_TAGを出力する。分岐予測部12は、その後、分岐先の対象アドレスを順次出力し、対象アドレスの最大値とともにタグ情報LOOP_TAGを再び出力する。ループ処理の対象命令を含むプログラムの例は、図5で説明される。
1次命令キャッシュ14は、命令フェッチアドレス生成部10から受信するアドレスで示される領域に保持された命令を取り出し、取り出した命令を命令バッファ部18に出力する。なお、タグ情報LOOP_TAGは、対象の条件分岐命令とともに命令バッファ部18に出力される。1次命令キャッシュ14が保持する命令として、演算器42、44を使用して演算を実行する演算命令、メモリアクセス命令または分岐命令等がある。1次命令キャッシュ14は、アドレスに対応する命令を保持していない場合、2次キャッシュ16から命令を取り出すために、2次キャッシュ16にアクセス要求を出力する。2次キャッシュは、命令およびデータを保持する。
2次キャッシュ16は、アクセス要求に基づいて、アドレスに対応して保持している命令を取り出し、取り出した命令を1次命令キャッシュ14に出力する。2次キャッシュ16は、アドレスに対応する命令を保持していない場合、メインメモリ200から命令を取り出すために、メインメモリ200にアクセス要求を出力する。例えば、メインメモリ200は、演算処理装置102を含む半導体チップとは別の半導体チップに含まれる。
命令バッファ部18は、1次命令キャッシュ14から出力される複数の命令を並列に保持し、保持した命令を命令デコード部20に並列に出力する。例えば、命令バッファ部18は、4つの命令を並列に命令デコード部20に出力する。なお、1次命令キャッシュ14から命令バッファ部18に並列に出力される命令の数は、4つより多い。タグ情報LOOP_TAGは、対象の条件分岐命令とともに命令デコード部20に出力される。
命令デコード部20は、命令バッファ部18から出力される複数の命令を並列にデコードする複数のデコードスロットを有する。特に限定されないが、デコードスロットの数は4つである。各デコードスロットは、各命令を実行する演算器42、44等に対応するリザベーションステーション32(321、322、323、324)を決定する。各デコードスロットは、命令の発行先のリザベーションステーション32を示す情報等を命令に付加し、情報を付加した命令をセレクタ部28および共有命令デコード部22に出力する。なお、命令デコード部20は、デコードする命令がタグ情報LOOP_TAGを含む場合、デコード結果とともにタグ情報LOOP_TAGを出力する。
また、命令デコード部20は、演算処理装置102で実行するプログラム中の記述の順番にしたがって命令に命令識別子(IID:Instruction Identification)を割り振り、割り振った命令識別子を、デコードした命令(デコード結果)とともに出力する。命令識別子はコミット制御部34で使用される。なお、命令バッファ部18および命令デコード部20は、プログラム中の記述の順番を入れ替えることなく複数の命令を並列に処理する(インオーダ)。
共有命令デコード部22は、命令デコード部20からタグ情報LOOP_TAGを含む命令を受信した場合、次のタグ情報LOOP_TAGを含む命令を受信するまで、命令がループキャッシュ部26のエントリの1つを共有可能かどうかの判定を実行する。最初のタグ情報LOOP_TAGとともに受信する命令から次のタグ情報LOOP_TAGとともに受信する命令までは、ループ処理の対象命令である。
例えば、共有命令デコード部22は、命令デコード部20によりデコードされた連続する複数の対象命令が、ループキャッシュ部26、レジスタリネーミング部30およびコミット制御部34において1つの対象命令と同等に扱えるかを判定する。そして、共有命令デコード部22は、複数の対象命令を1つの対象命令と同等に扱えるかを示す共有フラグSFLG(図6)とともに、命令デコード部20から受信した対象命令を共有処理部24に格納する。例えば、共有命令デコード部22は、複数の対象命令を並列に共有処理部24に格納する。共有フラグSFLGは、対象命令と他の対象命令とが1つの命令として実行可能かを示す融合情報の一例である。換言すれば、共有フラグSFLGは、対象命令と他の対象命令とを融合させた場合、演算器42、44および更新バッファ46、48等の資源を競合することなく使用できるか否かを示す。
共有処理部24は、共有命令デコード部22により格納された対象命令をループキャッシュ部26の複数のエントリの1つに格納する。また、共有処理部24は、複数の対象命令を1つの命令として実行可能な場合、複数の対象命令を融合して1つの対象命令とし、ループキャッシュ部26の複数のエントリの1つに格納する。これにより、ループキャッシュ部26の1つのエントリを複数の対象命令で共有することができ、ループキャッシュ部26のエントリの使用効率を向上することができる。なお、共有処理部24は、融合可能な複数の対象命令と、融合により得られる1つの対象命令との関係を示す情報を保持し、保持している情報に基づいて、複数の対象命令を融合して1つの対象命令としてもよい。
ループキャッシュ部26は、命令が格納される複数のエントリを有する。ループキャッシュ部26は、ループ処理の対象命令のエントリへの格納が完了したことに基づいて、エントリに保持した対象命令をセレクタ部28に順次出力する。ループキャッシュ部26のエントリに保持される命令は、プログラムの記述順にしたがっている(インオーダ)。
例えば、ループキャッシュ部26は、ループ処理の対象命令のエントリへの格納が完了したことを、共有命令デコード部22または共有処理部24からの通知に基づいて判定する。例えば、共有命令デコード部22は、共有処理部24を介してタグ情報LOOP_TAGをループキャッシュ部26に出力する。そして、ループキャッシュ部26は、タグ情報LOOP_TAGを2回受信したことに基づいて、ループ処理の対象命令がエントリに格納されたことを判定する。
セレクタ部28は、ループキャッシュ部26からの対象命令を受信しない場合、命令デコード部20から出力される命令を選択してレジスタリネーミング部30に出力する。セレクタ部28は、ループキャッシュ部26から対象命令を受信した場合、ループキャッシュ部26から出力される対象命令を選択してレジスタリネーミング部30に出力する。
レジスタリネーミング部30は、アウトオブオーダ実行を可能にするために、命令の実行時に、命令オペランドで指定されるレジスタファイル50(または52)内のレジスタの代わりに使用する更新バッファ46(または48)のエントリを割り当てる。そして、レジスタリネーミング部30は、割り当てた更新バッファ46(または48)のエントリを示す情報とともに、セレクタ部28から転送される命令を、命令を実行するリザベーションステーション32に出力する。なお、セレクタ部28から出力される命令は、命令をどのリザベーションステーション32に出力するかを示す情報を含む。
例えば、命令デコード部20がデコードした命令がメモリアクセス命令(ロード命令またはストア命令)である場合、命令はリザベーションステーション(RSA)321に投入される。命令デコード部20がデコードした命令が固定小数点数の演算命令である場合、命令はリザベーションステーション322(RSE)に投入される。命令デコード部20がデコードした命令が浮動小数点数の演算命令である場合、命令はリザベーションステーション323(RSF)に投入される。命令デコード部20がデコードした命令が分岐命令である場合、命令はリザベーションステーション324(RSBR)に投入される。
また、命令デコード部20は、演算処理装置102で実行するプログラム中の記述の順番にしたがって命令に命令識別子(IID:Instruction Identification)を割り振り、割り振った命令識別子をコミット制御部34に出力する。
リザベーションステーション321は、命令デコード部20から順次受けるメモリアクセス命令を保持し、保持したメモリアクセス命令を実行可能な順にオペランドアドレス生成部38に出力する。以下では、リザベーションステーション321は、RSA(Reservation Station for Address generation)321とも称される。リザベーションステーション322は、命令デコード部20から順次受ける固定小数点数の演算命令を保持し、保持した演算命令を実行可能な順に演算器42に出力する。以下では、リザベーションステーション322は、RSE(Reservation Station for Execution)322とも称される。
リザベーションステーション323は、命令デコード部20から順次受ける浮動小数点数の演算命令を保持し、保持した演算命令を実行可能な順に演算器44に出力する。以下では、リザベーションステーション323は、RSF(Reservation Station for Floating point)323とも称される。リザベーションステーション324は、命令デコード部20から順次受ける分岐命令を、分岐の判断ができるようになるまで保持する。以下では、リザベーションステーション324は、RSBR(Reservation Station for BRanch)324とも称される。リザベーションステーション321、322、323に保持された命令は、それぞれ命令の実行の準備が整ったものから対応するオペランドアドレス生成部38、演算器42、44のいずれかに発行される。そして、演算器42、44に発行された命令は、プログラムに記述された命令の順番と関係なく実行される(アウトオブオーダ)。
コミット制御部34は、レジスタリネーミング部30を介して受信する命令を、プログラムに記述された順番通りに貯めておくキュー構造の保持部と、完了処理を実行する完了処理部とを有する。キュー構造の保持部は、複数のエントリを含む。完了処理部は、保持部に保持された情報と演算器42、44等からの命令実行の完了報告等とに基づいて、命令の完了処理を、プログラムで記述された順に実行する(インオーダ)。
なお、コミット制御部34の保持部に保持される命令は、ループキャッシュ部26を介さずに命令デコード部20から出力される命令、あるいは、ループキャッシュ部26から出力される命令の何れかである。以下では、コミット制御部34は、CSE(Commit Stack Entry)30とも称される。コミット制御部34は、アウトオブオーダにより実行が完了した命令に基づいてインオーダで命令の完了処理を実行する完了制御部の一例である。以下では命令の完了処理は、コミットとも称される。
プログラムカウンタ36は、コミット制御部34からの指示に基づいて、命令の格納先を示すメモリアドレスを更新し、更新したメモリアドレスを命令フェッチアドレス生成部10に出力する。
オペランドアドレス生成部38は、RSA321から投入されるメモリアクセス命令に基づいてアドレスを生成し、生成したアドレスを一次データキャッシュ40に出力する。1次データキャッシュ40は、オペランドアドレス生成部38からのアドレスによりアクセスされ、データを入出力する。なお、図3では、演算処理装置102は、複数のオペランドアドレス生成部38を有するが、オペランドアドレス生成部38の数は単数でもよい。
1次データキャッシュ40は、1次命令キャッシュ14と同様に、アドレスに対応するデータを保持していない場合、2次キャッシュ16からデータを取り出すために、2次キャッシュ16にアクセス要求を出力する。例えば、ロード命令では、1次データキャッシュ40は、取り出したデータを更新バッファ46、48のいずれかに格納する。
演算器42は、固定小数点数用の演算器である。演算処理装置102は、命令デコード部20により並列にデコードされた固定小数点数の演算命令を並列に実行するために、複数の演算器42を有してもよい。演算器42は、演算に使用するデータを更新バッファ46またはレジスタファイル50から取得し、演算結果を更新バッファ46に格納する。
演算器44は、浮動小数点数用の演算器である。例えば、演算処理装置102は、命令デコード部20により並列にデコードされた浮動小数点数の演算命令を並列に実行するために、複数の演算器44を有してもよい。演算器44は、演算に使用するデータを更新バッファ48またはレジスタファイル52から取得し、演算結果を更新バッファ48に格納する。なお、演算器44は、積和演算、整数演算、論理演算等を実行する演算器を含んでもよい。
更新バッファ46は、演算器42で実行する演算に使用するデータを保持する複数のエントリと、エントリとレジスタファイル50内のレジスタとの対応付けを管理する管理部とを有する。更新バッファ48は、演算器44で実行する演算に使用するデータを保持する複数のエントリと、エントリとレジスタファイル52内のレジスタとの対応付けを管理する管理部とを有する。
レジスタファイル50は、演算器42で実行する演算に使用するデータを保持し、演算器42による演算の実行結果を保持する複数のエントリを有する。レジスタファイル52は、演算器44で実行する演算に使用するデータを保持し、演算器44による演算の実行結果を保持する複数のエントリを有する。
例えば、演算処理装置102は、64ビット構成の32個の固定小数点レジスタを含むレジスタファイル50と、512ビット構成の32個の浮動小数点レジスタを含むレジスタファイル52とを有する。なお、レジスタファイル50、52の各レジスタの個数とビット構成は、上記以外でもよい。また、浮動小数点数用のレジスタファイル52のレジスタのビット構成は、可変にされてもよい。
なお、図4に示す演算処理装置102の回路要素は、図示しないフリップフロップにより複数のステージに分割され、演算処理装置102は、パイプライン処理を実行する。例えば、パイプラインのステージとして、デコードステージ、デコードトランスファステージ、プライオリティステージ、プライオリティトランスファステージ、バッファステージ、実行ステージおよびライトバックステージがある。
デコードステージでは、命令デコード部20による命令のデコードが実行される。デコードトランスファステージでは、命令デコード部20によりデコードされた命令がRSE322、RSF323等に発行される。プライオリティステージでは、例えば、RSE322により、演算器42に発行する命令が決定される。
プライオリティトランスファステージでは、例えば、RSE322から演算器42に命令が発行される。バッファステージでは、演算に使用するオペランドが更新バッファ46またはレジスタファイル50等から読み出される。実行ステージでは、演算器42による演算が実行される。ライトバックステージでは、演算器42による演算の結果が更新バッファ46に格納される。
図5は、図4の演算処理装置102が実行するプログラムの一例を示す。説明を分かりやすくするために、図5では、ループ処理の対象命令のみが示される。図5に示す命令は、いわゆるアセンブリ言語形式での記述である。図5に示すプログラムの記述は、特定の命令セットアーキテクチャを示すものではない。レジスタX0、X1、X3、X4、X5は、レジスタファイル50またはレジスタファイル52に含まれる。
1行目の”LOOP”は、8行目の条件分岐命令BNE(Branch Not Equal)の条件分岐が成立した場合の分岐先を示すラベルである。1行目では、レジスタX4、X5が保持するデータを加算し、加算結果をレジスタX3に格納する加算命令ADDが実行される。
2行目では、16ビットの即値#AをレジスタX0に格納するムーブ命令MOVaが実行される。3行目では、レジスタX0が保持するデータを左(上位側)に16ビットシフトした後(LSL16)、16ビットの即値#BをレジスタX0に格納するムーブ命令MOVbが実行される。ムーブ命令MOVbでは、レジスタX0の即値#Bが格納されるビット以外のビット値は維持される。
4行目から6行目にも命令が存在するが、図示および説明は省略される。例えば、4行目から6行目の少なくとも何れかには、演算結果等をレジスタX0またはレジスタX1に格納する命令が記述されてもよい。
7行目では、レジスタX0、X1が保持する値の差を算出し、算出した差に基づいてコンディションコードを設定する比較命令CMPが実行される。8行目では、比較命令CMPの実行により設定されたコンディションコード(この例ではゼロフラグ)が”0”以外の場合にラベルLOOPで示されるアドレスに分岐する条件分岐命令BNEが実行される。例えば、ラベルLOOPの値は、プログラムカウンタPCの値に対する相対値である。
命令が演算命令の場合、命令デコード部20は、アウトオブオーダ実行するためにどの資源(リザベーションステーション32、演算器42、44等)を使用するかを示す情報を出力する。また、命令デコード部20は、何の演算(加算、減算、乗算、除算、論理演算等)を実行するかを示す情報を出力する。さらに、命令デコード部20は、何のデータを演算オペランドに使用するか、あるいは、即値を使用するかを示す情報を出力する。以下では、命令のデコード結果に基づいて、命令デコード部20が命令の実行に使用する資源等を指定するために出力する情報は、命令とも称される。
命令が演算命令の場合、演算処理装置102は、レジスタリネーミングを実行する。レジスタリネーミングでは、演算処理装置102は、更新バッファ46、48のどのエントリに書き込むかを決定する。また、演算処理装置102は、演算に使用するオペランドデータを更新バッファ46のどのエントリから読み出すか、あるいはレジスタファイル50、52から読み出すかを決定する。
さらに、演算処理装置102は、演算の実行の完了に基づいて命令のコミット処理を実行する。例えば、演算処理装置102は、更新バッファ46、48が保持する演算結果をレジスタファイル50、52に書き込む。なお、演算処理装置102は、命令の実行を中断させる例外等が発生した場合、例外処理を実行する。
一方、命令が条件分岐命令の場合、命令デコード部20は、分岐先のアドレスを生成するためのオフセット値を出力し、分岐の成立の条件を示す情報を出力する。条件分岐命令では、レジスタファイル50、52は使用されないため、レジスタリネーミングは実行されない。但し、演算処理装置102は、条件分岐命令の分岐条件を生成する演算命令であって、条件分岐命令の直前に実行される演算命令を認識して分岐処理を制御する回路を、レジスタリネーミングの処理回路とは別に持ち、条件分岐命令の実行時に動作させる。
演算処理装置102は、条件分岐命令の実行の完了に基づく命令のコミット処理では、分岐条件が成立した場合、プログラムカウンタ36を更新して、プログラムカウンタ36が分岐先のアドレスを示すようにする。また、演算処理装置102は、分岐予測をミスした場合、パイプラインをクリアする。
このように、演算命令と条件分岐命令とでは、レジスタリネーミング、命令コミットのそれぞれについて、命令デコード部20が出力する情報が異なり、動作する回路が異なる。このため、演算命令と条件分岐命令とは、命令の種類によっては、並列に実行させることが可能である。また、複数の演算命令においても、演算器42が共有でき、使用するレジスタが重複せず、更新バッファ46のエントリが重複しない場合、並列に実行させることが可能な場合がある。
図5に示すプログラムにおいて、比較命令CMPは、演算器42を使用して実行される。条件分岐命令BNEは、RSBR324がコンディションコードを参照することで実行され、演算器42、更新バッファ46およびレジスタファイル50等の資源は使用しない。したがって、比較命令CMPおよび条件分岐命令BNEは、更新バッファ46等の資源が競合されることがなく、ループキャッシュ部26のエントリの1つに格納した場合にも、コミット制御部34によりコミット処理を正常に実行することができる。また、2行目と3行目のムーブ命令MOVa、MOVbは、1つの32ビットの即値のムーブ命令と等価であるため、ループキャッシュ部26のエントリの1つに格納した場合にも、使用する資源が重複することはなく、コミット処理を正常に実行することができる。
図6は、図4の共有処理部24およびループキャッシュ部26に格納される情報の一例を示す。図6では、命令デコード部20が図5に示すプログラムに含まれる命令(図示していない命令も含む)をデコードするとする。共有命令デコード部22は、命令デコード部20から並列に出力される4つのデコード結果(命令)に基づいて、使用する資源が重複しない複数の命令があるか否かを判定するデコード動作を実行する。使用する資源が重複しない複数の命令は、融合可能な命令である。なお、共有命令デコード部22および共有処理部24は、複数の命令に対する処理を並列に実行する。
共有処理部24は、共有命令デコード部22から出力される対象命令を保持する命令保持部24aを有する。命令保持部24aは、共有フラグSFLGと、デコードされた命令とを格納する領域を含む複数のエントリを有する。なお、命令保持部24aは、共有処理部24の外部に設けられてもよく、その場合、共有命令デコード部22内に設けられてもよい。
ループキャッシュ部26は、基準命令と付随情報とを格納する領域を含む複数のエントリを有する。基準命令の領域には、デコードされた命令または使用する資源が重複しない複数の命令のうちの一部である基準となる命令が格納される。付随情報の領域には、使用する資源が重複しない複数の命令のうちの基準命令に含まれないオペランド等の情報が格納される。すなわち、付随情報の領域には、基準命令を補う情報が格納され、基準命令と付随情報とにより、使用する資源が重複しない複数の命令が表される。
共有命令デコード部22は、命令デコード部20からタグ情報LOOP_TAGを受信した場合、タグ情報LOOP_TAGとともに受信した命令の次の命令を命令保持部24aの1番目のエントリに格納する。そして、共有命令デコード部22は、次のタグ情報LOOP_TAGとともに受信する命令より前に受信する命令を、命令保持部24aの2番目のエントリから順に格納する。
また、共有命令デコード部22は、命令保持部24aに命令を格納する場合、連続する複数の命令で使用する資源が重複しない(すなわち、1つの命令に融合可能)か否かを判断する。共有命令デコード部22は、使用する資源が重複しないと判断した複数の命令のうち最後の命令を除く命令を格納した命令保持部24aのエントリの共有フラグSFLGを”1”に設定する。なお、使用する資源が重複しないことを示す共有フラグSFLGの値は、”1”に限定されない。
例えば、共有命令デコード部22は、使用する資源が重複しない複数の命令の組み合わせを示す共有命令リスト22aを有しており、共有命令リスト22aに含まれる組み合わせの命令を命令デコード部20から受信した場合、使用する資源が重複しないと判断する。共有命令リスト22aは、1つの命令として実行可能な複数の対象命令を示す情報が格納されるリスト部の一例である。共有命令デコード部22は、共有命令リスト22aに保持された情報と、命令デコード部20から受信した複数の連続する命令の情報とを比較することにより、使用する資源が重複するか否かを判定することができる。
例えば、共有命令デコード部22は、2番目のムーブ命令MOVaと3番目のムーブ命令MOVbとを融合した場合、使用する資源が重複しないと判断し、ムーブ命令MOVaを格納した2番目のエントリの共有フラグSFLGを”1”に設定する。また、共有命令デコード部22は、7番目の比較命令CMPと8番目の条件分岐命令BNEとを融合した場合、使用する資源が重複しないと判断し、比較命令CMPを格納した7番目のエントリの共有フラグSFLGを”1”に設定する。
共有処理部24は、タグ情報LOOP_TAGを2回受信したことに基づいて、ループ処理の対象命令が命令保持部24aのエントリに格納されたと判断し、命令保持部24aに保持された命令を共有する処理を実行する。まず、共有処理部24は、命令保持部24aの1番目のエントリの共有フラグSFLGが”0”であるため、1番目のエントリが保持する加算命令ADDをループキャッシュ部26の1番目のエントリの基準命令の領域に格納する。この場合、付随情報の領域には何も格納されない。
次に、共有処理部24は、命令保持部24aの2番目のエントリの共有フラグSFLGが”1”であるため、命令保持部24aの3番目のエントリが保持する情報を参照する。共有処理部24は、3番目のエントリの共有フラグSFLGが”0”であるため、2番目のムーブ命令MOVaと3番目のムーブ命令MOVbとを融合した場合、使用する資源が重複しないと判断する。このように、共有処理部24は、共有フラグSFLGの”1”を検出した場合、次に共有フラグSFLGの”0”を検出する命令までを、融合後の命令で使用する資源が重複しない命令であると判断する。使用する資源が重複するか否かを判定する共有フラグSFLGを格納する領域を命令保持部24aに設けることで、共有処理部24は、1つの命令に融合する命令を容易に識別することができる。
共有処理部24は、使用する資源が重複しないムーブ命令MOVa、MOVbが32ビットの即値のムーブ命令MOVと等価であると判定し、ムーブ命令MOVをループキャッシュ部26の2番目のエントリに格納する。例えば、共有処理部24は、ムーブ命令MOVとオペランドX0とを基準命令の領域に格納し、32ビットの即値#ABを付随情報の領域に格納する。すなわち、2つのムーブ命令MOVa、MOVbを1つの命令として融合し、ループキャッシュ部26のエントリの1つを2つの命令で共有する処理が実行される。
共有処理部24は、命令保持部24aの4番目から6番目のエントリの共有フラグSFLGが”0”であるため、これらエントリに保持された命令を、ループキャッシュ部26の3番目から5番目のエントリに順次格納する。付随情報の領域には何も格納されない。
次に、共有処理部24は、命令保持部24aの7番目のエントリの共有フラグSFLGが”1”であるため、命令保持部24aの8番目のエントリが保持する情報を参照する。共有処理部24は、8番目のエントリの共有フラグSFLGが”0”であるため、7番目の比較命令CMPと8番目の条件分岐命令BNEとを融合した場合、使用する資源が重複しないと判断する。
共有処理部24は、8番目の条件分岐命令BNEをループキャッシュ部26の6番目のエントリの基準命令の領域に格納し、7番目の比較命令CMPのオペランドX0、X1を6番目のエントリの付随情報の領域に格納する。すなわち、比較命令CMPと条件分岐命令BNEとを1つの命令として融合し、ループキャッシュ部26のエントリの1つを2つの命令で共有する処理が実行される。
例えば、共有処理部24は、基準命令の領域に共有フラグSFLGが”0”のエントリに保持された命令を格納し、付随情報の領域に共有フラグSFLGが”1”のエントリに保持された命令のオペランドを格納すればよい。これにより、共有処理部24は、複雑な処理を行うことなく、ループキャッシュ部26への命令の格納処理を実行することができる。
そして、ループ処理の対象命令が、プログラムの記述順に沿って、ループキャッシュ部26のエントリに格納される。図6では、2つのムーブ命令MOVa、MOVbが1つの命令としてループキャッシュ部26の2番目のエントリに格納され、比較命令CMPと条件分岐命令BNEとが1つの命令としてループキャッシュ部26の6番目のエントリに格納される。これにより、ループキャッシュ部26のエントリ数を増加することなく(すなわち、回路規模を増大することなく)、ループキャッシュ部26に実質的に格納可能な命令数を増加することができる。
ループキャッシュ部26は、タグ情報LOOP_TAGを2回受信したことに基づいて、ループ処理の対象命令がエントリに格納されたと判断し、エントリに保持した命令をセレクタ部28に順次出力する動作を開始する。ループキャッシュ部26は、エントリに保持した命令をセレクタ部28に出力している間、ループキャッシュ部26からの命令を選択する指示をセレクタ部28に出力する。
なお、条件分岐命令BNEの条件分岐が成立せず、ループ処理から抜ける場合、ループキャッシュ部26に保持された基準命令および付随情報等は無効化される。このため、分岐予測部12が、新たにループ処理が続くことを予測した場合、新たなループ処理の対象命令がループキャッシュ部26に格納される。
セレクタ部28は、ループキャッシュ部26からの指示に基づいて、命令デコード部20から出力される命令の選択を停止し、ループキャッシュ部26から出力される命令を選択し、選択した命令をレジスタリネーミング部30に出力する。なお、ループキャッシュ部26から出力される命令は、命令の転送先であるリザベーションステーション32を示す情報を含む。
レジスタリネーミング部30は、セレクタ部28から転送される命令に基づいて、命令毎に、命令オペランドで指定されるレジスタ毎に更新バッファ46(または48)のエントリを割り当てる。また、例えば、ループキャッシュ部26の2番目のエントリに保持された基準命令および付随情報は、32ビットの即値のムーブ命令MOVに相当する。RSE322は、セレクタ部28およびレジスタリネーミング部30を介して32ビットの即値のムーブ命令MOVに相当する基準命令および付随情報を受信する。
RSE322は、受信した基準命令および付随情報に基づいて、演算器42に32ビットの即値のムーブ命令MOVを実行させるための情報を出力する。これにより、2つのムーブ命令MOVa、MOVbを1つのムーブ命令MOVとして実行させることができる。RSE322が受信する情報は、レジスタX0に対応して更新バッファ46のどのエントリを使用するかを示す情報を含む。2つのムーブ命令MOVa、MOVbを1つのムーブ命令MOVに融合することで、使用する更新バッファ46のエントリの数を少なくできるため、実質的に使用可能な更新バッファ46のエントリ数を増加することができる。換言すれば、更新バッファ46、48のエントリ数を増やして回路規模を増大することなく、更新バッファ46、48で使用可能なエントリ数を増加することができる。
ループキャッシュ部26の6番目のエントリに保持された基準命令(条件分岐命令BNE)は、セレクタ部28およびレジスタリネーミング部30を介してRSBR324に転送される。また、ループキャッシュ部26の6番目のエントリに保持された付随情報(比較命令CMPのオペランド)は、セレクタ部28およびレジスタリネーミング部30を介してRSE322に転送される。RSE322は、転送された付随情報に基づいて、演算器42に比較命令CMP(コンディションコードを設定機能付きの減算)を実行させるための制御情報を出力する。
演算器42は、比較命令CMPを実行し、実行結果に基づいてコンディションコードを設定する。RSBR324は、コンディションコードを参照し、分岐条件が成立するか否かを判定し、判定結果に基づいてプログラムカウンタ36を更新する。このように、演算処理装置102内の資源を競合させることなく、比較命令CMPと条件分岐命令BNEとを1つの命令として実行させることができる。
なお、ループキャッシュ部26が命令を保持していない場合、命令デコード部20が出力する命令(デコード結果)は、共有命令デコード部22および共有処理部24を通ることなく、セレクタ部28を介してレジスタリネーミング部30に出力される。すなわち、ループキャッシュ部26に格納される命令以外の命令は、共有命令デコード部22および共有処理部24を通ることなく、セレクタ部28を介してレジスタリネーミング部30に出力される。
例えば、最初のタグ情報LOOP_TAGが分岐予測部12から出力された場合、ループ処理の対象命令は、ループキャッシュ部26に格納されていない。このため、ループ処理の対象命令は、通常の命令と同様に、命令デコード部20からセレクタ部28を介してレジスタリネーミング部30に出力され、実行される。そして、ループキャッシュ部26に格納される命令を実行中に、共有命令デコード部22による共有処理部24への命令の格納と、共有処理部24によるループキャッシュ部26への命令の格納とがバックグラウンドで実行される。すなわち、共有命令デコード部22および共有処理部24の追加により、パイプラインに新たなステージが追加されることはなく、演算処理装置102の処理性能が低下することはない。
ループキャッシュ部26への命令の格納後、ループキャッシュ部26に格納された命令(付随情報を含む)がセレクタ部28を介してレジスタリネーミング部30に出力され、実行される。このとき、共有命令デコード部22および共有処理部24は動作を停止している。したがって、演算処理装置102による命令の実行時間に、共有命令デコード部22および共有処理部24の動作時間は含まれないため、演算の実行時間が延びることを抑止することができる。この結果、命令毎に資源の共有が可能か否かを判定する場合に比べて、演算処理装置102のスループットを向上することができる。
これに対して、例えば、命令デコード部20の前に、複数の命令が同時に実行可能か否かを判定するプリデコード部を設ける場合、プリデコード部の処理のためにパイプラインの段数が増加するため、スループットが低下してしまう。
図7は、図4の共有命令デコード部22および共有処理部24の動作の一例を示す。すなわち、図7は、演算処理装置102の制御方法の一例を示す。図7に示す動作は、共有命令デコード部22が、分岐予測部12からのタグ情報LOOP_TAGを、命令デコード部20を介して受信したことに基づいて開始される。
まず、ステップS10において、共有命令デコード部22は、2回目のタグ情報LOOP_TAGを受信するまで、命令デコード部20から出力される命令(デコード結果)を共有処理部24の命令保持部24aに順次格納する。なお、命令の命令保持部24aへの格納は、ステップS16とともに実行されてもよい。
次に、ステップS12において、共有命令デコード部22は、命令デコード部20から出力された命令(デコード結果)をデコードし、融合後に使用する資源が重複しない連続する複数の命令があるか否かを判定する。次に、ステップS14において、共有命令デコード部22は、融合後に使用する資源が重複しない連続する複数の命令がある場合、動作をステップS16に移行する。共有命令デコード部22は、融合後に使用する資源が重複しない連続する複数の命令がない場合、動作をステップS18に移行する。
ステップS16において、共有命令デコード部22は、融合後に使用する資源が重複しないという条件に合致した複数の命令のうち、最後の命令を除く前側(先頭側)の命令を格納した命令保持部24aのエントリに共有フラグSFLGを設定する。この後、動作はステップS18に移行される。ステップS16までの動作により、命令保持部24aのエントリは、例えば、図6に示す状態になる。
ステップS18において、共有処理部24は、命令を保持した命令保持部24aのエントリに共有フラグSFLGが設定されている場合、動作をステップS20に移行し、共有フラグSFLGが設定されていない場合、動作をステップS22に移行する。ステップS20において、共有処理部24は、融合後に使用する資源が重複しない連続する複数の命令を融合してループキャッシュ部26のエントリの1つに格納するために、基準命令と付随情報を生成し、動作をステップS22に移行する。
ステップS22において、共有処理部24は、条件に合致した複数の命令を基準命令および付随情報としてループキャッシュ部26のエントリの1つに格納し、他の命令の各々をループキャッシュ部26のエントリの1つに格納し、動作を終了する。
例えば、ステップS18、S20、S22の動作は、図6に示す命令保持部24aのエントリ毎に実行される。そして、ステップS18、S20、S22の動作を繰り返し実行することにより、ループキャッシュ部26のエントリは、例えば、図6に示す状態になる。この後、ループキャッシュ部26は、エントリに保持された命令(基準命令、または、基準命令と付随情報)をセレクタ部28に順次出力する。
図8は、図4のコミット制御部34の動作の一例を示す。すなわち、図8は、演算処理装置102の制御方法の一例を示す。図8に示す動作は、例えば、所定の周期で繰り返し実行される。
まず、ステップS30において、コミット制御部34は、命令を受信した場合、動作をステップS32に移行し、命令を受信していない場合、動作をステップS38に移行する。ステップS32において、コミット制御部34は、受信した命令をキューに格納し、動作をステップS34に移行する。
ここで、例えば、コミット制御部34は、図6に示した2つのムーブ命令MOVa、MOVbを1つの命令(基準命令と付随情報)として受信し、受信した命令を保持部のエントリの1つに格納する。また、コミット制御部34は、図6に示した比較命令CMPと条件分岐命令BNEとを1つの命令(基準命令と付随情報)として受信し、受信した命令をエントリの1つに格納する。このため、複数の命令が1つの命令としてループキャッシュ部26に格納された場合、コミット制御部34のキューに保持可能な実質的な命令数を増加することができる。換言すれば、コミット制御部34のキューの容量を増やして回路規模を増大することなく、コミット制御部34が保持可能な実質的な命令数を増加することができる。
ステップS34において、コミット制御部34は、受信した命令が付随情報を含む場合、共有処理部24で融合された命令であると判定し、動作をステップS36に移行する。コミット制御部34は、受信した命令が付随情報を含まない場合、動作をステップS38に移行する。
ステップS36において、コミット制御部34は、2つの命令を融合した付随情報を含む命令の実行の完了に基づくコミット処理において、プログラムカウンタ36の更新量を、共有した命令数に応じて変更し、動作をステップS38に移行する。例えば、1つの命令の完了によりプログラムカウンタ36が”4”更新される場合、付随情報を含む命令が2つの命令を共有している場合、プログラムカウンタ36は”8”更新される。付随情報を含む命令が3つの命令を共有した場合、プログラムカウンタ36は、”12”更新される。例えば、プログラムカウンタ36の更新量は、命令識別子に対応させてコミット制御部34の保持部に保持される。
ステップS38において、コミット制御部34は、命令の完了通知を受信した場合、動作をステップS40に移行し、命令の完了通知を受信しない場合、動作を終了する。ステップS40において、コミット制御部34は、命令の実行の完了に基づいて、命令の実行に使用した資源を回収するコミット処理を実行し、動作をステップS42に移行する。ステップS42において、コミット制御部34は、プログラムカウンタ36を更新し、動作を終了する。上述したように、プログラムカウンタ36の更新量は、命令を融合したか否かにより異なり、また、融合した命令数により異なる。
以上、図4から図8に示す実施形態においても、図1から図3に示す実施形態と同様に、ループキャッシュ部26のエントリ数を増加することなく、ループキャッシュ部26に実質的に格納可能な命令数を増加することができる。したがって、繰り返し実行される可能性が高いループ処理の対象命令の実行のスループットを、複数の対象命令を融合しない場合に比べて向上することができる。共有命令デコード部22および共有処理部24の動作を、対象命令の実行のバックグラウンドで実行されるため、演算処理装置102の処理性能が低下することを抑止することができる。
さらに、図4から図8に示す実施形態では、連続する複数の対象命令を1つの対象命令に融合することで、命令の実行に使用する更新バッファ46、48のエントリ数を少なくでき、実質的に使用可能な更新バッファ46のエントリ数を増加することができる。また、複数の対象命令を1つの対象命令に融合することで、コミット制御部34のキューの容量を増やして回路規模を増大することなく、コミット制御部34が保持可能な実質的な命令数を増加することができる。
図9は、別の実施形態の演算処理装置における共有処理部およびループキャッシュ部に格納される情報の一例を示す。図6で説明した要素と同一または同様の要素については、詳細な説明は省略される。図9の動作を実行する共有命令デコード部22および共有処理部24を有する演算処理装置は、共有命令デコード部22および共有処理部24の機能が異なることを除き、図4に示す演算処理装置102と同様の構成と機能とを有する。また、図9の動作を実行する共有命令デコード部22および共有処理部24を有する演算処理装置を含む情報処理システムは、図3と同様の構成である。共有処理部24の構成は、図6に示す共有処理部24と同じであり、ループキャッシュ部26の構成および機能は、図6に示すループキャッシュ部26と同じである。
図9では、共有命令デコード部22は、命令デコード部20から出力されるムーブ命令MOVa、シフト命令SFTおよび加算命令ADDを、プログラムの記述順に命令保持部24aのエントリに格納する。シフト命令SFTは、レジスタX0が保持するデータを16ビット左にシフトする命令である。加算命令ADDは、レジスタX0が保持するデータと16ビットの即値#Bとを加算し、加算結果をレジスタX0に格納する命令である。
共有命令デコード部22は、命令デコード部20からタグ情報LOOP_TAGを受信した場合、タグ情報LOOP_TAGとともに受信した命令の次の命令を命令保持部24aの1番目のエントリに格納する。そして、共有命令デコード部22は、次のタグ情報LOOP_TAGとともに受信する命令より前に受信する命令を、命令保持部24aの2番目のエントリから順に格納する。
共有命令デコード部22は、共有命令リストに基づいて、ムーブ命令MOVa、シフト命令SFTおよび加算命令ADDを融合した場合、使用する資源が重複しないと判断する。そして、共有命令デコード部22は、融合後に使用する資源が重複しないと判断した命令MOVa、SFT、ADDのうち最後の命令ADDを除く命令MOVa、SFTを格納したエントリの共有フラグSFLGを”1”に設定する。共有処理部24の各エントリに格納されるその他の情報は、図6と同様である。
共有処理部24は、図6と同様に、タグ情報LOOP_TAGを2回受信したことに基づいて、ループ処理の対象命令がエントリに格納されたと判断し、命令保持部24aに保持された命令を共有する処理を実行する。以下では、図6で説明した動作と相違する点について説明される。
共有処理部24は、2番目のエントリの共有フラグSFLGが”1”であるため、3番目のエントリが保持する情報を参照する。共有処理部24は、3番目のエントリの共有フラグSFLGが”1”であるため、4番目のエントリが保持する情報を参照する。共有処理部24は、4番目のエントリの共有フラグSFLGが”0”であるため、2番目のムーブ命令MOVa、3番目のシフト命令SFTおよび4番目の加算命令ADDを融合した場合に、使用する資源が重複しないと判断する。
また、共有処理部24は、ムーブ命令MOVa、シフト命令SFTおよび加算命令ADDが32ビットの即値のムーブ命令MOVと等価であると判定する。そして、共有処理部24は、図6と同様に、ループキャッシュ部26において、ムーブ命令MOVとオペランドX0とを2番目のエントリの基準命令の領域に格納し、32ビットの即値#ABを2番目のエントリの付随情報の領域に格納する。すなわち、ムーブ命令MOVa、シフト命令SFTおよび加算命令ADDが1つの命令として融合され、ループキャッシュ部26のエントリの1つを3つの命令で共有する処理が実行される。
この実施形態では、3つの命令が1つの命令として融合されるため、共有処理部24は、7番目の比較命令CMPと8番目の条件分岐命令BNEとに対応する情報を、ループキャッシュ部26の5番目のエントリに格納する。すなわち、図6に比べて、ループキャッシュ部26の使用効率はさらに向上する。
ループキャッシュ部26は、タグ情報LOOP_TAGを2回受信したことに基づいて、ループ処理の対象命令がエントリに格納されたと判断し、エントリに保持した命令を繰り返しセレクタ部28に出力する動作を開始する。ループキャッシュ部26は、エントリに保持した命令を繰り返しセレクタ部28に出力する間、ループキャッシュ部26からの命令を選択する指示をセレクタ部28に出力する。
図6と同様に、ループキャッシュ部26の2番目のエントリに保持された基準命令および付随情報は、32ビットの即値のムーブ命令MOVに相当する。RSE322は、セレクタ部28およびレジスタリネーミング部30を介して32ビットの即値のムーブ命令MOVに相当する基準命令および付随情報を受信する。RSE322は、受信した基準命令および付随情報に基づいて、演算器42に32ビットの即値のムーブ命令MOVを実行させるための情報を出力する。これにより、ムーブ命令MOVa、シフト命令SFTおよび加算命令ADD(3つの命令)を1つのムーブ命令MOVとして実行させることができる。以上、図9に示す実施形態においても、図1から図8に示す実施形態と同様の効果を得ることができる。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
1 命令デコード部
2 命令抽出部
3 命令保持部
4 命令処理部
5 ループバッファ部
5a エントリ
6 命令選択部
7 命令実行部
10 命令フェッチアドレス生成部
12 分岐予測部
14 1次命令キャッシュ
16 2次キャッシュ
18 命令バッファ部
20 命令デコード部
22 共有命令デコード部
22a 共有命令リスト
24 共有処理部
24a 命令保持部
26 ループキャッシュ部
28 セレクタ部
30 レジスタリネーミング部
321、322、323、324 リザベーションステーション
34 コミット制御部
36 プログラムカウンタ
38 オペランドアドレス生成部
40 1次データキャッシュ
42、44 演算器
46、48 更新バッファ
50、52 レジスタファイル
100、102 演算処理装置

Claims (10)

  1. 命令をデコードする命令デコード部と、
    前記命令デコード部がデコードした命令を実行する命令実行部と、
    前記命令デコード部がデコードした命令の中から、繰り返し実行されるループ処理の対象命令を抽出する命令抽出部と、
    前記命令抽出部が抽出した対象命令の各々が格納される複数のエントリを有するループバッファ部と、
    命令の実行に使用する情報を保持するレジスタを含むレジスタファイルと、
    前記対象命令を前記ループバッファ部の前記複数のエントリの1つに格納するとともに、前記対象命令である複数の連続する命令を1つの対象命令として融合可能な場合であって、前記複数の連続する命令で使用する前記レジスタが競合しない場合、または前記複数の連続する命令で重複して使用する前記レジスタのビット位置が競合しない場合、前記複数の連続する命令を融合して前記1つの対象命令とし、前記ループバッファ部の前記複数のエントリの1つに格納する命令処理部と、
    前記命令デコード部が出力する命令または前記ループバッファ部が出力する対象命令のいずれかを選択し、選択した命令を前記命令実行部に出力する命令選択部と、を有することを特徴とする演算処理装置。
  2. 命令の実行中に前記レジスタの代わりに使用するエントリを含むバッファ部と、
    前記命令デコード部が出力する命令毎または前記ループバッファ部が出力する対象命令毎に前記バッファ部の割り当てを制御する割り当て制御部と、を有することを特徴とする請求項1に記載の演算処理装置。
  3. 前記命令デコード部が出力する命令または前記ループバッファ部が出力する対象命令を保持する複数のエントリを含み、アウトオブオーダで実行が完了された命令の完了処理をインオーダで実行する完了制御部を有することを特徴とする請求項1または請求項2に記載の演算処理装置。
  4. 前記命令抽出部および前記命令処理部の動作は、前記ループバッファ部に格納される前の対象命令の前記命令実行部による動作と並列に実行されることを特徴とする請求項1ないし請求項3のいずれか1項に記載の演算処理装置。
  5. 前記演算処理装置は、さらに、対象命令と他の対象命令とを1つの命令として実行可能かを示す融合情報が、前記命令デコード部が出力する対象命令とともに格納される命令保持部を有し、
    前記命令抽出部は、抽出した対象命令を前記命令保持部に格納し、1つの命令として実行可能な複数の対象命令に対応して融合情報を前記命令保持部に格納し、
    前記命令処理部は、前記命令保持部が保持する融合情報に基づいて、複数の対象命令を1つの対象命令に融合し、融合した対象命令を前記ループバッファ部に格納することを特徴とする請求項1ないし請求項4のいずれか1項に記載の演算処理装置。
  6. 前記演算処理装置は、さらに、1つの命令として実行可能な複数の対象命令を示す情報が格納されるリスト部を有し、
    前記命令抽出部は、前記リスト部を参照することで、対象命令を融合情報とともに前記命令保持部に格納するかを決定することを特徴とする請求項5に記載の演算処理装置。
  7. 前記ループバッファ部の各エントリは、複数の対象命令を融合した命令の一部である基準命令を保持する領域と、基準命令を補う付随情報を保持する領域と、を有し、
    前記命令処理部は、1つの命令として実行可能な複数の対象命令を表す基準命令と付随情報とを前記ループバッファ部に格納することを特徴とする請求項1ないし請求項6のいずれか1項に記載の演算処理装置。
  8. 命令をフェッチするアドレスを生成するアドレス生成部と、
    前記アドレス生成部が生成したアドレスに基づいて分岐命令の分岐先のアドレスを予測することで、ループ処理を予測する分岐予測部と、を有し、
    前記命令抽出部は、前記分岐予測部がループ処理を予測したことに基づいて、ループ処理の対象命令を抽出することを特徴とする請求項1ないし請求項7のいずれか1項に記載の演算処理装置。
  9. 前記命令抽出部が、比較結果に応じてコンディションコードを設定する比較命令と、前記比較命令に続く条件分岐命令とを対象命令として抽出した場合、前記命令処理部は、前記比較命令と前記条件分岐命令とを1つの対象命令として融合することを特徴とする請求項1ないし請求項8のいずれか1項に記載の演算処理装置。
  10. 演算処理装置が有する命令デコード部が、命令をデコードし、
    前記演算処理装置が有する命令実行部が、前記命令デコード部がデコードした命令を実行し、
    前記演算処理装置が有する命令抽出部が、前記命令デコード部がデコードした命令の中から、繰り返し実行されるループ処理の対象命令を抽出し、
    前記演算処理装置が有する命令処理部が、前記対象命令を前記演算処理装置が有するループバッファ部の複数のエントリの1つに格納するとともに、前記対象命令である複数の連続する命令を1つの対象命令として融合可能な場合であって、前記複数の連続する命令で使用する、レジスタファイルに含まれる命令の実行に使用する情報を保持するレジスタが競合しない場合、または前記複数の連続する命令で重複して使用する前記レジスタのビット位置が競合しない場合、前記複数の連続する命令を融合して1つの対象命令とし、前記ループバッファ部の前記複数のエントリの1つに格納し、
    前記演算処理装置が有する命令選択部が、前記命令デコード部が出力する命令または前記ループバッファ部が出力する対象命令のいずれかを選択し、選択した命令を前記命令実行部に出力することを特徴とする演算処理装置の制御方法。
JP2018211577A 2018-11-09 2018-11-09 演算処理装置および演算処理装置の制御方法 Active JP7205174B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018211577A JP7205174B2 (ja) 2018-11-09 2018-11-09 演算処理装置および演算処理装置の制御方法
US16/665,449 US11080063B2 (en) 2018-11-09 2019-10-28 Processing device and method of controlling processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018211577A JP7205174B2 (ja) 2018-11-09 2018-11-09 演算処理装置および演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2020077333A JP2020077333A (ja) 2020-05-21
JP7205174B2 true JP7205174B2 (ja) 2023-01-17

Family

ID=70550034

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018211577A Active JP7205174B2 (ja) 2018-11-09 2018-11-09 演算処理装置および演算処理装置の制御方法

Country Status (2)

Country Link
US (1) US11080063B2 (ja)
JP (1) JP7205174B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230205535A1 (en) * 2021-12-23 2023-06-29 Microsoft Technology Licensing, Llc Optimization of captured loops in a processor for optimizing loop replay performance
US20230315454A1 (en) * 2022-03-30 2023-10-05 Advanced Micro Devices, Inc. Fusing no-op (nop) instructions

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130262822A1 (en) 2012-03-28 2013-10-03 International Business Machines Corporation Caching optimized internal instructions in loop buffer
JP2018005488A (ja) 2016-06-30 2018-01-11 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4338661A (en) * 1979-05-21 1982-07-06 Motorola, Inc. Conditional branch unit for microprogrammed data processor
US5617549A (en) * 1992-10-06 1997-04-01 Hewlett-Packard Co System and method for selecting and buffering even and odd instructions for simultaneous execution in a computer
JPH10105399A (ja) * 1996-09-27 1998-04-24 Nec Corp データ処理装置
US6330657B1 (en) * 1999-05-18 2001-12-11 Ip-First, L.L.C. Pairing of micro instructions in the instruction queue
JP2006309337A (ja) 2005-04-26 2006-11-09 Toshiba Corp プロセッサ及びプロセッサの命令バッファ動作方法
US7945767B2 (en) * 2008-09-30 2011-05-17 Faraday Technology Corp. Recovery apparatus for solving branch mis-prediction and method and central processing unit thereof
JP2015219823A (ja) 2014-05-20 2015-12-07 富士通株式会社 プロセッサ
CN104298488B (zh) * 2014-09-29 2018-02-23 上海兆芯集成电路有限公司 循环预测器指导的循环缓冲器

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130262822A1 (en) 2012-03-28 2013-10-03 International Business Machines Corporation Caching optimized internal instructions in loop buffer
JP2018005488A (ja) 2016-06-30 2018-01-11 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
後藤 弘茂,2006年のCPU 第71回 インテルはCISCのアプローチをアーキテクチャに持ち込む,ASCII 2006年5月号,株式会社アスキー,2006年05月01日,第30巻 第5号,第114頁-第119頁

Also Published As

Publication number Publication date
US11080063B2 (en) 2021-08-03
US20200150965A1 (en) 2020-05-14
JP2020077333A (ja) 2020-05-21

Similar Documents

Publication Publication Date Title
US11379229B2 (en) Apparatus and method for adaptable and efficient lane-wise tensor processing
US6161173A (en) Integration of multi-stage execution units with a scheduler for single-stage execution units
TWI654562B (zh) 藉由演算法匹配、停用特徵或限制效能之回溯相容性
JP3547482B2 (ja) 情報処理装置
KR100299691B1 (ko) 확장가능알아이에스씨마이크로프로세서구조
JP3599409B2 (ja) 分岐予測装置
US9569214B2 (en) Execution pipeline data forwarding
US20010021970A1 (en) Data processor
JP2021108102A (ja) 行列演算アクセラレータの命令のための装置、方法、およびシステム
JP5154119B2 (ja) プロセッサ
JP2015191660A (ja) 動的アウトオブオーダプロセッサパイプラインを実装する方法および装置
US20180095752A1 (en) Instruction predecoding
JP3678443B2 (ja) スーパーパイプライン式スーパースカラーマイクロプロセッサ用の書き込みバッファ
US7991980B2 (en) Concurrent execution of instructions in a processing system
US10915328B2 (en) Apparatus and method for a high throughput parallel co-processor and interconnect with low offload latency
US10831505B2 (en) Architecture and method for data parallel single program multiple data (SPMD) execution
US10846092B2 (en) Execution of micro-operations
US11900120B2 (en) Issuing instructions based on resource conflict constraints in microprocessor
JP7205174B2 (ja) 演算処理装置および演算処理装置の制御方法
US20210389979A1 (en) Microprocessor with functional unit having an execution queue with priority scheduling
EP1220091B1 (en) Circuit and method for instruction compression and dispersal in VLIW processors
KR100431975B1 (ko) 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템
EP1220089B1 (en) Method for executing conditional branch instructions in a data processor and corresponding data processor
JP5193624B2 (ja) データプロセッサ
US20100100709A1 (en) Instruction control apparatus and instruction control method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210810

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220518

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220621

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220803

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221212

R150 Certificate of patent or registration of utility model

Ref document number: 7205174

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150