JP2023112584A - ベクトル命令処理方法 - Google Patents
ベクトル命令処理方法 Download PDFInfo
- Publication number
- JP2023112584A JP2023112584A JP2022014467A JP2022014467A JP2023112584A JP 2023112584 A JP2023112584 A JP 2023112584A JP 2022014467 A JP2022014467 A JP 2022014467A JP 2022014467 A JP2022014467 A JP 2022014467A JP 2023112584 A JP2023112584 A JP 2023112584A
- Authority
- JP
- Japan
- Prior art keywords
- vector
- loops
- reservation stations
- instruction processing
- instructions
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims description 32
- 238000000034 method Methods 0.000 claims description 15
- 230000001419 dependent effect Effects 0.000 claims description 12
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 4
- 101710085003 Alpha-tubulin N-acetyltransferase Proteins 0.000 description 2
- 101710085461 Alpha-tubulin N-acetyltransferase 1 Proteins 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000012725 vapour phase polymerization Methods 0.000 description 2
- 101000805729 Homo sapiens V-type proton ATPase 116 kDa subunit a 1 Proteins 0.000 description 1
- 102100037979 V-type proton ATPase 116 kDa subunit a 1 Human genes 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Landscapes
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
【課題】ベクトル命令処理の高速化を図ることができないこと。【解決手段】本発明のベクトル命令処理装置100は、繰り返し実行されるループに含まれるベクトル命令を、当該ループ毎に対応するそれぞれ異なるリザベーションステーション110に書き込む書き込み部101と、各リザベーションステーション110からそれぞれ発行されたベクトル命令を実行するベクトル実行部102と、を備える。【選択図】図10
Description
本発明は、ベクトル命令処理方法、ベクトル命令処理装置、プログラムに関する。
典型的なベクトルプログラムの1ループでは、ループ内でベクトルレジスタをロード(スカラレジスタとの演算も含む)し、ベクトル演算を行い、その結果をメモリに書き戻す動作を行う。例えば、図1に示すようなプログラムでは、ベクトルロード命令を2命令実行して値を読み込み(5行目、11行目)、その2つのベクトルレジスタの値をベクトル加算し(12行目)、最後にその結果をベクトルストア命令で書き込んでいる(13行目)。そして、この動作をループで回している。
図1で示したベクトルプログラムは、もっともシンプルな例であるが、実際には、図2に示すベクトルプログラムのように、複数のベクトルロード命令と、複数のベクトル演算命令を実行し、最後にその結果を書き込む、ということが多い。但し、ここでは説明を容易にするため、11個のベクトル命令で1ループとしているが、より長いベクトルの命令列が1セットになされることがある。なお、図1及び図2のプログラムにおいて、vから始まるオペランドがベクトルレジスタであり、sから始まるオペランドがスカラレジスタであることとする。
このとき、以下の3つの理由により、パイプラインにバブル(隙間)が生じうる。
(1)ベクトルロードのレイテンシが長いため、メモリロードが終わるまで当該データを利用する演算が実行できない。
(2)演算も複数TATを要するため、依存関係のある次の命令が即座に発行できない。
(3)ベクトルレジスタのリードポートの制限により、オペランドリードに時間を要するため即命令を実行できない。
(1)ベクトルロードのレイテンシが長いため、メモリロードが終わるまで当該データを利用する演算が実行できない。
(2)演算も複数TATを要するため、依存関係のある次の命令が即座に発行できない。
(3)ベクトルレジスタのリードポートの制限により、オペランドリードに時間を要するため即命令を実行できない。
具体的に、図2のプログラムで見ると、上記(1)は、20行目、22行目、24行目、26行目のベクトルロード命令が該当する。つまり、ベクトルロード命令では、メモリまでデータを読みに行くことがあるため、数十クロックサイクルの時間を要する場合がある。このとき、当該データを利用するベクトル演算命令も待たされることになる。また、その演算結果を書き込むベクトルストア命令(30行目)も実行できないこととなる。また、上記(2)は、演算TATであり、特に、複数クロックサイクル要する乗算(23行目、29行目)、積和演算(27行目)、除算・剰余算(図2には無し)は、結果がでるまで時間を要するので、その結果を使う後続命令も待たされることになる。また、上記(3)は、リードポート制約であり、3オペランドを必要とする積和演算(27行目)などでは、1クロックサイクルで読み出せないため、その分の遅れが生じる。
そして、上述したような問題、つまり、パイプライン上のバブル(隙間)を埋めるために、リザベーションステーションを用いたアウトオブオーダ発行、という技術がある。かかる技術では、通常、レジスタのリネーミング技術を併用し、レジスタ間の逆依存関係と出力依存関係も解消し、より多くのアウトオブオーダ発行を可能とする。その結果、パイプライン上のバブルを減らすことができる。一例として、図3に示すようなベクトル演算ユニット2では、リネーミングに関してはリネーミング制御回路22で実施し、ベクトルリザベーションステーション23でアウトオブオーダ発行を実現している。なお、関連する技術として、特許文献1に記載のベクトル命令間追い越し判定方法も開示されている。
しかしながら、上述したようなリザベーションステーションの技術を用いたとしても、リザベーションステーションのエントリ数を超える命令発行を行うことができない。特に、上記問題(1)のようにベクトルロード命令のレイテンシも大きく、さらに他の2つの上記問題(2),(3)と合わせて、リザベーションステーションが発行できない命令でフルになることが多々あり、アウトオブオーダ発行できる命令数には限界がある。
ここで、リザベーションステーションのエントリ数を増やすことで、アウトオブオーダ発行可能な命令数が増えるため、上記問題を論理的に緩和することも考えられる。しかしながら、その場合には、多数のエントリからのアウトオブオーダ発行となり、このとき、多数のエントリから発行可能な命令を見つけるために論理回路を要することから、論理回路の遅延に影響が生じることとなる。このため、エントリ数の拡張には物理的な限界がある。
以上のことから、依然として、ベクトル命令処理の高速化を図ることができない、という問題がある。
このため、本発明の目的は、上述した課題を解決することができるベクトル命令処理方法、ベクトル命令処理装置、プログラムを提供することにある。
本発明の一形態であるベクトル命令処理方法は、
繰り返し実行されるループに含まれるベクトル命令を、当該ループ毎に対応するそれぞれ異なるリザベーションステーションに書き込み、
各前記リザベーションステーションからそれぞれ発行された前記ベクトル命令を実行する、
という構成をとる。
繰り返し実行されるループに含まれるベクトル命令を、当該ループ毎に対応するそれぞれ異なるリザベーションステーションに書き込み、
各前記リザベーションステーションからそれぞれ発行された前記ベクトル命令を実行する、
という構成をとる。
また、本発明の一形態であるベクトル命令処理装置は、
繰り返し実行されるループに含まれるベクトル命令を、当該ループ毎に対応するそれぞれ異なるリザベーションステーションに書き込む書き込み部と、
各前記リザベーションステーションからそれぞれ発行された前記ベクトル命令を実行するベクトル実行部と、
を備えた、
という構成をとる。
繰り返し実行されるループに含まれるベクトル命令を、当該ループ毎に対応するそれぞれ異なるリザベーションステーションに書き込む書き込み部と、
各前記リザベーションステーションからそれぞれ発行された前記ベクトル命令を実行するベクトル実行部と、
を備えた、
という構成をとる。
また、本発明の一形態であるベクトル命令処理システムは、
ベクトル命令を含む繰り返し実行されるループ間において前記ベクトル命令が依存関係にない当該ループを複数に分け、それぞれに固有の識別子を付与する変換装置を備えると共に、
複数に分けられた前記ループにそれぞれ付与された前記識別子に基づいて、各前記ループにそれぞれ含まれる前記ベクトル命令を、当該ループ毎に対応するそれぞれ異なるリザベーションステーションに書き込む書き込み部と、各前記リザベーションステーションからそれぞれ発行された前記ベクトル命令を実行するベクトル実行部と、を備えたベクトル命令処理装置を備えた、
という構成をとる。
ベクトル命令を含む繰り返し実行されるループ間において前記ベクトル命令が依存関係にない当該ループを複数に分け、それぞれに固有の識別子を付与する変換装置を備えると共に、
複数に分けられた前記ループにそれぞれ付与された前記識別子に基づいて、各前記ループにそれぞれ含まれる前記ベクトル命令を、当該ループ毎に対応するそれぞれ異なるリザベーションステーションに書き込む書き込み部と、各前記リザベーションステーションからそれぞれ発行された前記ベクトル命令を実行するベクトル実行部と、を備えたベクトル命令処理装置を備えた、
という構成をとる。
また、本発明の一形態であるプログラムは、
プロセッサに、
繰り返し実行されるループに含まれるベクトル命令を、当該ループ毎に対応するそれぞれ異なるリザベーションステーションに書き込み、
各前記リザベーションステーションからそれぞれ発行された前記ベクトル命令を実行する、
処理を実行させる、
という構成をとる。
プロセッサに、
繰り返し実行されるループに含まれるベクトル命令を、当該ループ毎に対応するそれぞれ異なるリザベーションステーションに書き込み、
各前記リザベーションステーションからそれぞれ発行された前記ベクトル命令を実行する、
処理を実行させる、
という構成をとる。
本発明は、以上のように構成されることにより、ベクトル命令処理の高速化を図ることができる。
<実施形態1>
本発明の第1の実施形態を、図4乃至図7を参照して説明する。
本発明の第1の実施形態を、図4乃至図7を参照して説明する。
図4は、本発明におけるベクトル命令処理システムを構成するコンパイラ10によって生成されたベクトルプログラムの一例を示している。このプログラムは、上述した図2が元となっており、かかるプログラムは、ベクトル命令を含む繰り返し実行されるループを構成している。そして、図2に示すプログラムでは、ベクトルレジスタの依存関係は1ループ内に収まっている。すなわち、ループの処理は、次のループに対しての依存関係がなく、ループ内でベクトル処理が独立している。このような場合、各ループの処理を並列化することが可能である。
このため、本実施形態におけるコンパイラ10は、ベクトルプログラム内のループごとにベクトル処理が独立している場合に、図4に示すように、ループを複数に分割し、それぞれにスレッド番号を付与する。具体的に、図4の例では、ループを2つに分割し、1つ目のループにスレッド0番(#0)、2つ目のループにスレッド1番(#1)を付与している。このとき、各ループ内の各ベクトル命令にもスレッド番号(#0,#1)を付与する。但し、スレッド番号は、分割したループを区別して識別可能な固有の識別子であれば、いかなる情報であってもよい。なお、コンパイラ10は、ベクトルプログラムのループを2つに分割することに限らず、4つや8つなど、いかなる数に分割してもよい。また、ここでは、上述したスレッド番号を付与する処理は、コンパイラ10によって実行される場合を例示したが、アセンブラなどのいかなるソフトウェアや変換装置によって実行されてもよい。
ここで、本発明で並列化するのはベクトル演算処理であるため、スカラレジスタの並列化の解決は別に行う必要がある。たとえば、図4に示すプログラムの20行目、24行目、26行目、30行目のスカラレジスタがループごと独立した値を必要とする場合には、それぞれのスレッド毎で別のスカラレジスタを指定する必要がある。図4の例では、それを5行目から8行目で解決している。なお、22行目と28行目のスカラレジスタをループ間で共通と仮定した場合には、ループごとに独立した値を定義する必要はない。
次に、図4に示すようなベクトルプログラムを実行するベクトル命令処理装置の構成を説明する。図5に示すように、ベクトル命令処理装置は、ベクトル演算ユニット2と、当該ベクトル演算ユニット2にベクトル命令を供給するスカラ演算ユニット1と、を備えて構成されている。
スカラ演算ユニット1は、プログラム命令列を最初に処理するユニットである。演算ユニット1は、命令をデコードしてスカラ命令の実行も行うが、デコードした命令がベクトル命令の場合には、その命令をベクトル演算ユニット2に送り、以降の処理を委ねる。
ベクトル演算ユニット2は、ベクトル命令バッファ21と、リネーミング制御回路22と、書き込み制御回路25と、ベクトルリザベーションステーション23A,23Bと、発行調停回路26と、ベクトル実行ユニット24と、を備える。そして、本実施形態では、ベクトルリザベーションステーション23A,23Bは、スレッド#0とスレッド#1とにそれぞれ対応する2つが装備されている。但し、ベクトルリザベーションステーションは、2つであることに限定されず、さらに多く装備されていてもよい。なお、ベクトル演算ユニット2の各構成は、電子回路にて構成されていてもよく、プロセッサがプログラムを実行することで実現されてもよい。以下、各構成について詳述する。
ベクトル命令バッファ21は、スカラ演算ユニット1から受けとった命令を蓄えておくバッファである。
リネーミング制御回路22(リネーミング部)は、スカラ演算ユニット1から命令を受け取ると、ベクトル命令バッファ21と協調し、ベクトルレジスタのリネーミング処理を行う。このとき、リネーミング制御回路22は、異なるスレッド番号が付与された複数の分割されたループ間においてベクトルレジスタのリネーミング処理を行う。
書き込み制御回路25(書き込み部)は、リネーミング制御回路22からの指示でベクトルリザベーションステーション(リザベーションステーション)への命令の書き込みを指示するが、このとき、各ループに付与されたスレッド番号を利用して書き込み先を決める。本実施形態では、書き込み制御回路25は、スレッド番号#0の命令をベクトルリザベーションステーション#0(23A)に書き込み、スレッド番号#1の命令を、ベクトルリザベーションステーション#1(23B)に書き込む。このように、書き込み制御回路25は、ループを複数に分けて、ループ毎に対応するそれぞれ異なるベクトルリザベーションステーション23A,23Bに書き込みこととなる。なお、本実施形態では、2つのベクトルリザベーションステーション23A,23Bを設けている場合を例示しているが、さらに多くのベクトルリザベーションステーションを設けてもよい。
ここで、ベクトルリザベーションステーション#0(23A)、ベクトルリザベーションステーション#1(23B)自体は、複数個設けられていることを除いては、通常のリザベーションステーションと同様である。つまり、ベクトルリザベーションステーション23A,23Bは、アウトオブオーダ発行機能を備え、発行できる状態(リードオペランドがすべてそろった時)にある命令群から古い命令を優先に発行する命令を決定する。発行できる命令が何もないときには発行はできない。なお、ベクトルリザベーションステーション#0とベクトルリザベーションステーション#1とにおいて論理的には同じ番号のベクトルレジスタを参照する命令が存在するが、この段階では、上述したようにリネーミング制御回路22によって既にリネーミング済みのレジスタを参照するため、物理的なレジスタの重複はない。
発行調停回路26(調停部)は、複数のベクトルリザベーションステーション23A,23Bからの発行要求を調停する回路である。2つ以上の発行要求があったときには、ラウンドロビンで調停し、調停されたほうのベクトルリザベーションステーション23A,23Bからの発行を許可する。
ベクトル実行ユニット24(ベクトル実行部)では、発行調停回路26から発行されたベクトル命令を処理する。これは通常のベクトル実行ユニットであり、ベクトルロードストア命令の実行、ベクトル演算命令の実行を行う。
次に、上述したベクトル命令処理装置の動作を、図6のフローチャートを参照して説明する。
ステップS1:スカラ演算ユニットよりベクトル命令発行
スカラ演算ユニット1はベクトル命令をデコードすると、命令をベクトル演算ユニット2に対して発行する。
ステップS2:ベクトル命令バッファに命令格納
ベクトル演算ユニット2は、スカラ演算ユニット1より受理したベクトル命令をベクトル命令バッファ21に格納する。ベクトル命令バッファ21はFIFOである。
ステップS3:制御回路にてレジスタをリネーミング
リネーミング制御回路22は、ベクトル命令バッファ21より先頭の命令を取り出し、レジスタのリネーミングを行う。
ステップS1:スカラ演算ユニットよりベクトル命令発行
スカラ演算ユニット1はベクトル命令をデコードすると、命令をベクトル演算ユニット2に対して発行する。
ステップS2:ベクトル命令バッファに命令格納
ベクトル演算ユニット2は、スカラ演算ユニット1より受理したベクトル命令をベクトル命令バッファ21に格納する。ベクトル命令バッファ21はFIFOである。
ステップS3:制御回路にてレジスタをリネーミング
リネーミング制御回路22は、ベクトル命令バッファ21より先頭の命令を取り出し、レジスタのリネーミングを行う。
ステップS4:スレッド番号に応じてリザベーションステーションに書き込み
ベクトル命令バッファ21から取り出されたリネーミング済みの命令を、書き込み制御回路25でどちらのリザベーションステーション23A,23Bに格納するかを判定する。判定は、コンパイラ10等のソフトウェアがループそれぞれに付与したスレッド番号を使って行う。
ステップS5-1,S5-2:ベクトルリザベーションステーション#0,#1にて発行エントリを検出
各ベクトルリザベーションステーション#0(23A),#1(23B)において、発行可能な命令を検出し、発行可能なベクトル命令がある場合には、発行調停回路26に発行要求を行う。
ステップS6:発行調停回路にて発行エントリを決定
発行調停回路26が、2つの(複数の)ベクトルリザベーションステーション23A,23Bからの発行要求の調停を行う。調停はラウンドロビンとする。
ステップS7実行ユニットにてメモリアクセスかベクトル演算を実行
ベクトル実行ユニット24にて、発行調停回路26から発行されたベクトル命令の実行を行う。ベクトル実行ユニット24では、ベクトルロードストア処理、ベクトル演算処理が行われる。
以上、ステップS1~S7までを、一つ目の命令に着目する形で説明したが、実際は毎クロックサイクルごとに連続して動作することとなり、各ステップが同時にパイプライン動作している。
ベクトル命令バッファ21から取り出されたリネーミング済みの命令を、書き込み制御回路25でどちらのリザベーションステーション23A,23Bに格納するかを判定する。判定は、コンパイラ10等のソフトウェアがループそれぞれに付与したスレッド番号を使って行う。
ステップS5-1,S5-2:ベクトルリザベーションステーション#0,#1にて発行エントリを検出
各ベクトルリザベーションステーション#0(23A),#1(23B)において、発行可能な命令を検出し、発行可能なベクトル命令がある場合には、発行調停回路26に発行要求を行う。
ステップS6:発行調停回路にて発行エントリを決定
発行調停回路26が、2つの(複数の)ベクトルリザベーションステーション23A,23Bからの発行要求の調停を行う。調停はラウンドロビンとする。
ステップS7実行ユニットにてメモリアクセスかベクトル演算を実行
ベクトル実行ユニット24にて、発行調停回路26から発行されたベクトル命令の実行を行う。ベクトル実行ユニット24では、ベクトルロードストア処理、ベクトル演算処理が行われる。
以上、ステップS1~S7までを、一つ目の命令に着目する形で説明したが、実際は毎クロックサイクルごとに連続して動作することとなり、各ステップが同時にパイプライン動作している。
以上のように、本実施形態では、まず、コンパイラ10などのソフトウェアによって、分割したループ毎にスレッド番号#などの固有の識別子を付与している。そして、ベクトル演算ユニット2などのハードウェアに、複数のベクトルリザベーションステーション23A,23Bを設置し、スレッド番号#に応じてループのベクトル命令を各ベクトルリザベーションステーション23A,23Bに振り分けている。これにより、ループ間の並列度を向上させ、ベクトル実行ユニットの充足率をあげることが可能となり、ベクトル演算ループの高速化を図ることができる。
ここで、例えば、一つのリザベーションステーションを32エントリとすると、32エントリのリザベーションステーションが2セットあることになる。すると、一つのリザベーションステーションで64エントリにするよりも検索がしやすく、論理遅延の問題も回避することができる。
そして、各リザベーションステーション23A,23Bから各スレッドにおける最優先の命令が取り出されるので、これにより、これまで回避できなかったリザベーションステーションのつまりを防止することができ、ベクトル実行ユニットへの命令供給量を向上させることが可能となる。
ここで、本発明の応用として、ベクトルレジスタのリードポートずらしをスレッド間で実施することで、リードポートを有効活用し、ベクトル命令のスループットをさらに上げることが考えられる。このことについて図7を参照して説明する。
通常、ベクトル実行ユニット24内において、ベクトル命令によるベクトルレジスタのリードポートは、図7に示すように構成されている。ここでは、ベクトル実行ユニット24が、32個のVPP(VPP0~VPP31)を持っていると仮定する。VPP0(32個の繰り返しなので、他のVPPも同様の構成である)は、ベクトルマスクレジスタ群VM(VM0~VM7)、ベクトルレジスタ群VR(VR0~VR7)、X-BAR(クロスバ)、各種演算器(VFMA、VALU,VRCP,VPPSP)を保持する。ベクトルレジスタ群VRは、通常VPP0のVR0から使われ、次がVPP1のVR0・・・と進み、合計256のベクトルレジスタのリードポートが並んでいる(最大VL長を256と仮定する)。VL長(Vector Length長)が256のときは、これらのポートがすべて使われるが、VL長が半分の128のときには、全VPPのうちVR4~VR7は空いていることになる。
上述したような構成の特徴に本発明を適用する。すなわちVL長が半分の128のときには(正確には半分以下の時には)、スレッド#0のベクトルレジスタはVR0,1,2,3を利用することとし、スレッド#1のベクトルレジスタはVR4,5,6,7を利用することにする。これにより、本来はどちらもVR0,1,2,3のレジスタを使っていたはずの命令のアクセス先が分散されることになる。分散されることによりリードポート競合がなくなり、同時に2つのベクトル命令を発行できるようになり、さらなる性能の向上を図ることができる。
<実施形態2>
次に、本発明の第2の実施形態を、図8乃至図9を参照して説明する。図8は、本実施形態におけるベクトル命令処理装置の構成を示すブロック図であり、図9は、本実施形態におけるベクトル命令処理方法の動作を示すフローチャートである。
次に、本発明の第2の実施形態を、図8乃至図9を参照して説明する。図8は、本実施形態におけるベクトル命令処理装置の構成を示すブロック図であり、図9は、本実施形態におけるベクトル命令処理方法の動作を示すフローチャートである。
図8では、図5と比較して、発行調停回路26Aとベクトル実行ユニット24Aの間に2系統のパスがある点で異なる。発行調停回路26Aは、VL長が128以下だった場合に、どちらか一方のリザベーションステーションからの発行ではなく、両方のリザベーションステーション23A,23Bからの命令発行を行う。ベクトル実行ユニット24Aは、VL長が128以下だった場合にスレッド番号に応じて、レジスタのリードポートを変え、前述のようにVR0~VR3とVR4~VR7のそれぞれを使うこととする。このように分割することで、空きのリードポートを有効に活用できるための2命令同時の処理を可能とする。
図9を用いて、動作の説明をする。ステップS1からS6までは前述の実施例と同様である。ステップS6でどちらかのリザベーションステーション23A,23Bを調停したのちに、当該命令のベクトル長を確認する(ステップSA1)。その結果、VL長が128以下であれば(ステップSA1でYes)、調停されなかった側のベクトル命令も発行し、つまり、両リザベーションステーション23A,23Bからベクトル命令を発光する(ステップSA2-1)。VL長が128を超える場合には(ステップSA1でNo)、同時発行ができないので、前述の実施例と同様に調停側命令のみを発行する(ステップSA2-2)。
以上のように、本発明では、ループに含まれるベクトル命令がループ毎に複数のリザベーションステーションから発行可能となるため、ベクトル命令処理の高速化を図ることができる。
<実施形態3>
次に、本発明の第3の実施形態を、図10乃至図11を参照して説明する。図10は、本実施形態におけるベクトル命令処理装置の構成を示すブロック図であり、図11は、本実施形態におけるベクトル命令処理方法の動作を示すフローチャートである。なお、本実施形態では、実施形態1で説明したベクトル命令処理装置及びベクトル命令処理方法の構成の概略を示している。
次に、本発明の第3の実施形態を、図10乃至図11を参照して説明する。図10は、本実施形態におけるベクトル命令処理装置の構成を示すブロック図であり、図11は、本実施形態におけるベクトル命令処理方法の動作を示すフローチャートである。なお、本実施形態では、実施形態1で説明したベクトル命令処理装置及びベクトル命令処理方法の構成の概略を示している。
図10に示すように、本実施形態におけるベクトル命令処理装置100は、繰り返し実行されるループに含まれるベクトル命令を、ループ毎に対応するそれぞれ異なるリザベーションステーション110に書き込む書き込み部101と、各リザベーションステーション110からそれぞれ発行されたベクトル命令を実行するベクトル実行部102と、を備える。なお、上記書き込み部101と、ベクトル実行部102とは、ベクトル命令処理装置100がプログラムを実行することで実現されてもよい。
そして、上記構成のベクトル命令処理装置100は、図11に示すように、ベクトル命令処理方法として、繰り返し実行されるループに含まれるベクトル命令を、ループ毎に対応するそれぞれ異なるリザベーションステーション110に書き込み(ステップS101)、各リザベーションステーション110からそれぞれ発行されたベクトル命令を実行する(ステップS102)。
以上のように、本発明では、ループに含まれるベクトル命令がループ毎に複数のリザベーションステーションで並列実行されるため、ベクトル命令処理の高速化を図ることができる。
<付記>
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明におけるベクトル命令処理方法、ベクトル命令処理装置、プログラムの構成の概略を説明する。但し、本発明は、以下の構成に限定されない。
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明におけるベクトル命令処理方法、ベクトル命令処理装置、プログラムの構成の概略を説明する。但し、本発明は、以下の構成に限定されない。
(付記1)
繰り返し実行されるループに含まれるベクトル命令を、当該ループ毎に対応するそれぞれ異なるリザベーションステーションに書き込み、
各前記リザベーションステーションからそれぞれ発行された前記ベクトル命令を実行する、
ベクトル命令処理方法。
(付記2)
付記1に記載のベクトル命令処理方法であって、
前記ループ間において前記ベクトル命令が依存関係にない当該ループに含まれるベクトル命令を、当該ループ毎に対応するそれぞれ異なる前記リザベーションステーションに書き込む、
(付記3)
付記1又は2に記載のベクトル命令処理方法であって、
前記ループ間において前記ベクトル命令が依存関係にない当該ループ毎にそれぞれ付与された固有の識別子に基づいて、各前記ループにそれぞれ含まれる前記ベクトル命令を当該ループ毎に対応するそれぞれ異なる前記リザベーションステーションに書き込む、
ベクトル命令処理方法。
(付記4)
付記1乃至3のいずれかに記載のベクトル命令処理方法であって、
前記ループ間において前記ベクトル命令が依存関係にない当該ループを複数に分け、それぞれに固有の識別子を付与し、
複数に分けられた前記ループにそれぞれ付与された前記識別子に基づいて、各前記ループにそれぞれ含まれる前記ベクトル命令を、当該ループ毎に対応するそれぞれ異なる前記リザベーションステーションに書き込む、
ベクトル命令処理方法。
(付記5)
付記1乃至4のいずれかに記載のベクトル命令処理方法であって、
各前記リザベーションステーションからの前記ベクトル命令の発行要求を調停し、調停された前記リザベーションステーションからの前記ベクトル命令の発行を許可する、
ベクトル命令処理方法。
(付記6)
付記1乃至5のいずれかに記載のベクトル命令処理方法であって、
各前記リザベーションステーションに書き込まれる複数の前記ループ内の前記ベクトル命令のリネーミング処理を行い、
リネーミング処理を行った各前記ループ内の前記ベクトル命令をそれぞれ各前記リザベーションステーションに書き込む、
ベクトル命令処理方法。
(付記7)
繰り返し実行されるループに含まれるベクトル命令を、当該ループ毎に対応するそれぞれ異なるリザベーションステーションに書き込む書き込み部と、
各前記リザベーションステーションからそれぞれ発行された前記ベクトル命令を実行するベクトル実行部と、
を備えたベクトル命令処理装置。
(付記7.1)
付記7に記載のベクトル命令処理装置であって、
前記書き込み部は、前記ループ間において前記ベクトル命令が依存関係にない当該ループに含まれるベクトル命令を、当該ループ毎に対応するそれぞれ異なる前記リザベーションステーションに書き込む、
ベクトル命令処理装置。
(付記7.2)
付記7又は7.1に記載のベクトル命令処理装置であって、
前記書き込み部は、前記ループ間において前記ベクトル命令が依存関係にない当該ループ毎にそれぞれ付与された固有の識別子に基づいて、各前記ループにそれぞれ含まれる前記ベクトル命令を当該ループ毎に対応するそれぞれ異なる前記リザベーションステーションに書き込む、
ベクトル命令処理装置。
(付記7.3)
付記7乃至7.2のいずれかに記載のベクトル命令処理装置であって、
各前記リザベーションステーションからの前記ベクトル命令の発行要求を調停し、調停された前記リザベーションステーションからの前記ベクトル命令の発行を許可する調停部を備えた、
ベクトル命令処理装置。
(付記7.4)
付記7乃至7.3のいずれかに記載のベクトル命令処理装置であって、
各前記リザベーションステーションに書き込まれる複数の前記ループ内の前記ベクトル命令のリネーミング処理を行うリネーミング部を備え、
前記書き込み部は、リネーミング処理を行った各前記ループ内の前記ベクトル命令をそれぞれ各前記リザベーションステーションに書き込む、
ベクトル命令処理装置。
(付記8)
ベクトル命令を含む繰り返し実行されるループ間において前記ベクトル命令が依存関係にない当該ループを複数に分け、それぞれに固有の識別子を付与する変換装置を備えると共に、
複数に分けられた前記ループにそれぞれ付与された前記識別子に基づいて、各前記ループにそれぞれ含まれる前記ベクトル命令を、当該ループ毎に対応するそれぞれ異なるリザベーションステーションに書き込む書き込み部と、各前記リザベーションステーションからそれぞれ発行された前記ベクトル命令を実行するベクトル実行部と、を備えたベクトル命令処理装置を備えた、
ベクトル命令処理システム。
(付記9)
プロセッサに、
繰り返し実行されるループに含まれるベクトル命令を、当該ループ毎に対応するそれぞれ異なるリザベーションステーションに書き込み、
各前記リザベーションステーションからそれぞれ発行された前記ベクトル命令を実行する、
処理を実行させるためのプログラム。
繰り返し実行されるループに含まれるベクトル命令を、当該ループ毎に対応するそれぞれ異なるリザベーションステーションに書き込み、
各前記リザベーションステーションからそれぞれ発行された前記ベクトル命令を実行する、
ベクトル命令処理方法。
(付記2)
付記1に記載のベクトル命令処理方法であって、
前記ループ間において前記ベクトル命令が依存関係にない当該ループに含まれるベクトル命令を、当該ループ毎に対応するそれぞれ異なる前記リザベーションステーションに書き込む、
(付記3)
付記1又は2に記載のベクトル命令処理方法であって、
前記ループ間において前記ベクトル命令が依存関係にない当該ループ毎にそれぞれ付与された固有の識別子に基づいて、各前記ループにそれぞれ含まれる前記ベクトル命令を当該ループ毎に対応するそれぞれ異なる前記リザベーションステーションに書き込む、
ベクトル命令処理方法。
(付記4)
付記1乃至3のいずれかに記載のベクトル命令処理方法であって、
前記ループ間において前記ベクトル命令が依存関係にない当該ループを複数に分け、それぞれに固有の識別子を付与し、
複数に分けられた前記ループにそれぞれ付与された前記識別子に基づいて、各前記ループにそれぞれ含まれる前記ベクトル命令を、当該ループ毎に対応するそれぞれ異なる前記リザベーションステーションに書き込む、
ベクトル命令処理方法。
(付記5)
付記1乃至4のいずれかに記載のベクトル命令処理方法であって、
各前記リザベーションステーションからの前記ベクトル命令の発行要求を調停し、調停された前記リザベーションステーションからの前記ベクトル命令の発行を許可する、
ベクトル命令処理方法。
(付記6)
付記1乃至5のいずれかに記載のベクトル命令処理方法であって、
各前記リザベーションステーションに書き込まれる複数の前記ループ内の前記ベクトル命令のリネーミング処理を行い、
リネーミング処理を行った各前記ループ内の前記ベクトル命令をそれぞれ各前記リザベーションステーションに書き込む、
ベクトル命令処理方法。
(付記7)
繰り返し実行されるループに含まれるベクトル命令を、当該ループ毎に対応するそれぞれ異なるリザベーションステーションに書き込む書き込み部と、
各前記リザベーションステーションからそれぞれ発行された前記ベクトル命令を実行するベクトル実行部と、
を備えたベクトル命令処理装置。
(付記7.1)
付記7に記載のベクトル命令処理装置であって、
前記書き込み部は、前記ループ間において前記ベクトル命令が依存関係にない当該ループに含まれるベクトル命令を、当該ループ毎に対応するそれぞれ異なる前記リザベーションステーションに書き込む、
ベクトル命令処理装置。
(付記7.2)
付記7又は7.1に記載のベクトル命令処理装置であって、
前記書き込み部は、前記ループ間において前記ベクトル命令が依存関係にない当該ループ毎にそれぞれ付与された固有の識別子に基づいて、各前記ループにそれぞれ含まれる前記ベクトル命令を当該ループ毎に対応するそれぞれ異なる前記リザベーションステーションに書き込む、
ベクトル命令処理装置。
(付記7.3)
付記7乃至7.2のいずれかに記載のベクトル命令処理装置であって、
各前記リザベーションステーションからの前記ベクトル命令の発行要求を調停し、調停された前記リザベーションステーションからの前記ベクトル命令の発行を許可する調停部を備えた、
ベクトル命令処理装置。
(付記7.4)
付記7乃至7.3のいずれかに記載のベクトル命令処理装置であって、
各前記リザベーションステーションに書き込まれる複数の前記ループ内の前記ベクトル命令のリネーミング処理を行うリネーミング部を備え、
前記書き込み部は、リネーミング処理を行った各前記ループ内の前記ベクトル命令をそれぞれ各前記リザベーションステーションに書き込む、
ベクトル命令処理装置。
(付記8)
ベクトル命令を含む繰り返し実行されるループ間において前記ベクトル命令が依存関係にない当該ループを複数に分け、それぞれに固有の識別子を付与する変換装置を備えると共に、
複数に分けられた前記ループにそれぞれ付与された前記識別子に基づいて、各前記ループにそれぞれ含まれる前記ベクトル命令を、当該ループ毎に対応するそれぞれ異なるリザベーションステーションに書き込む書き込み部と、各前記リザベーションステーションからそれぞれ発行された前記ベクトル命令を実行するベクトル実行部と、を備えたベクトル命令処理装置を備えた、
ベクトル命令処理システム。
(付記9)
プロセッサに、
繰り返し実行されるループに含まれるベクトル命令を、当該ループ毎に対応するそれぞれ異なるリザベーションステーションに書き込み、
各前記リザベーションステーションからそれぞれ発行された前記ベクトル命令を実行する、
処理を実行させるためのプログラム。
なお、上記プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD-ROM(Read Only Memory)、CD-R、CD-R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
以上、上記実施形態等を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることができる。
1 スカラ演算ユニット
2 ベクトル演算ユニット
10 コンパイラ
21 ベクトル命令バッファ
22 リネーミング制御回路
23A,23B ベクトルリザベーションステーション
24 ベクトル実行ユニット
25 書き込み制御回路
26 発行調停回路
2 ベクトル演算ユニット
10 コンパイラ
21 ベクトル命令バッファ
22 リネーミング制御回路
23A,23B ベクトルリザベーションステーション
24 ベクトル実行ユニット
25 書き込み制御回路
26 発行調停回路
Claims (9)
- 繰り返し実行されるループに含まれるベクトル命令を、当該ループ毎に対応するそれぞれ異なるリザベーションステーションに書き込み、
各前記リザベーションステーションからそれぞれ発行された前記ベクトル命令を実行する、
ベクトル命令処理方法。 - 請求項1に記載のベクトル命令処理方法であって、
前記ループ間において前記ベクトル命令が依存関係にない当該ループに含まれるベクトル命令を、当該ループ毎に対応するそれぞれ異なる前記リザベーションステーションに書き込む、
ベクトル命令処理方法。 - 請求項1又は2に記載のベクトル命令処理方法であって、
前記ループ間において前記ベクトル命令が依存関係にない当該ループ毎にそれぞれ付与された固有の識別子に基づいて、各前記ループにそれぞれ含まれる前記ベクトル命令を当該ループ毎に対応するそれぞれ異なる前記リザベーションステーションに書き込む、
ベクトル命令処理方法。 - 請求項1乃至3のいずれかに記載のベクトル命令処理方法であって、
前記ループ間において前記ベクトル命令が依存関係にない当該ループを複数に分け、それぞれに固有の識別子を付与し、
複数に分けられた前記ループにそれぞれ付与された前記識別子に基づいて、各前記ループにそれぞれ含まれる前記ベクトル命令を、当該ループ毎に対応するそれぞれ異なる前記リザベーションステーションに書き込む、
ベクトル命令処理方法。 - 請求項1乃至4のいずれかに記載のベクトル命令処理方法であって、
各前記リザベーションステーションからの前記ベクトル命令の発行要求を調停し、調停された前記リザベーションステーションからの前記ベクトル命令の発行を許可する、
ベクトル命令処理方法。 - 請求項1乃至5のいずれかに記載のベクトル命令処理方法であって、
各前記リザベーションステーションに書き込まれる複数の前記ループ内の前記ベクトル命令のリネーミング処理を行い、
リネーミング処理を行った各前記ループ内の前記ベクトル命令をそれぞれ各前記リザベーションステーションに書き込む、
ベクトル命令処理方法。 - 繰り返し実行されるループに含まれるベクトル命令を、当該ループ毎に対応するそれぞれ異なるリザベーションステーションに書き込む書き込み部と、
各前記リザベーションステーションからそれぞれ発行された前記ベクトル命令を実行するベクトル実行部と、
を備えたベクトル命令処理装置。 - ベクトル命令を含む繰り返し実行されるループ間において前記ベクトル命令が依存関係にない当該ループを複数に分け、それぞれに固有の識別子を付与する変換装置を備えると共に、
複数に分けられた前記ループにそれぞれ付与された前記識別子に基づいて、各前記ループにそれぞれ含まれる前記ベクトル命令を、当該ループ毎に対応するそれぞれ異なるリザベーションステーションに書き込む書き込み部と、各前記リザベーションステーションからそれぞれ発行された前記ベクトル命令を実行するベクトル実行部と、を備えたベクトル命令処理装置を備えた、
ベクトル命令処理システム。 - プロセッサに、
繰り返し実行されるループに含まれるベクトル命令を、当該ループ毎に対応するそれぞれ異なるリザベーションステーションに書き込み、
各前記リザベーションステーションからそれぞれ発行された前記ベクトル命令を実行する、
処理を実行させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022014467A JP2023112584A (ja) | 2022-02-01 | 2022-02-01 | ベクトル命令処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022014467A JP2023112584A (ja) | 2022-02-01 | 2022-02-01 | ベクトル命令処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023112584A true JP2023112584A (ja) | 2023-08-14 |
Family
ID=87562213
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022014467A Pending JP2023112584A (ja) | 2022-02-01 | 2022-02-01 | ベクトル命令処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2023112584A (ja) |
-
2022
- 2022-02-01 JP JP2022014467A patent/JP2023112584A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100478871C (zh) | 从队列处理指令刷新的生存期计数器设计的系统和方法 | |
EP0682789B1 (en) | System and method for register renaming | |
JP3724582B2 (ja) | 命令実行ユニットのためのレジスタ・リネーミング回路 | |
US7793079B2 (en) | Method and system for expanding a conditional instruction into a unconditional instruction and a select instruction | |
US10942745B2 (en) | Fast multi-width instruction issue in parallel slice processor | |
KR20090009959A (ko) | 마이크로프로세서 내에서 다수의 레지스터 유니트들로부터의 대응하는 하프워드 유니트들을 결합하기 위한 방법 및 시스템 | |
KR20090101061A (ko) | 프로세서 및 정보 처리 장치 | |
JP2013206095A (ja) | データ処理装置及びデータ処理装置の制御方法 | |
US11093246B2 (en) | Banked slice-target register file for wide dataflow execution in a microprocessor | |
JP2023112584A (ja) | ベクトル命令処理方法 | |
US11853762B1 (en) | Single instruction multiple data execution with variable size logical registers | |
JP6891596B2 (ja) | プロセッサ | |
JP7383390B2 (ja) | 情報処理ユニット、情報処理装置、情報処理方法及びプログラム | |
KR20080008683A (ko) | 멀티스레딩/비순차 병합 기법에 따라 처리하는 방법 및장치 | |
JP5871298B2 (ja) | 情報処理装置、情報処理方法及び情報処理プログラム | |
JP2015106325A (ja) | ベクトルレジスタリネーミング制御方式、ベクトルプロセッサ、及びベクトルレジスタリネーミング制御方法 | |
JP2019185646A (ja) | 演算処理装置及び演算処理装置の制御方法 | |
US11036510B2 (en) | Processing merging predicated instruction with timing permitting previous value of destination register to be unavailable when the merging predicated instruction is at a given pipeline stage at which a processing result is determined | |
JP5786719B2 (ja) | ベクトルプロセッサ | |
WO2020246598A1 (ja) | 演算装置、演算方法、および演算プログラム | |
US20210072992A1 (en) | Slice-target register file for microprocessor | |
JP6340887B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
JP6307975B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
JP2002318689A (ja) | 資源使用サイクルの遅延指定付き命令を実行するvliwプロセッサおよび遅延指定命令の生成方法 | |
JP2010205088A (ja) | ベクトル処理装置、及びベクトル処理方法 |