JP6020428B2 - ベクトルレジスタリネーミング制御方式、ベクトルプロセッサ、及びベクトルレジスタリネーミング制御方法 - Google Patents

ベクトルレジスタリネーミング制御方式、ベクトルプロセッサ、及びベクトルレジスタリネーミング制御方法 Download PDF

Info

Publication number
JP6020428B2
JP6020428B2 JP2013248862A JP2013248862A JP6020428B2 JP 6020428 B2 JP6020428 B2 JP 6020428B2 JP 2013248862 A JP2013248862 A JP 2013248862A JP 2013248862 A JP2013248862 A JP 2013248862A JP 6020428 B2 JP6020428 B2 JP 6020428B2
Authority
JP
Japan
Prior art keywords
instruction
register
executed
vector length
vector
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
JP2013248862A
Other languages
English (en)
Other versions
JP2015106325A (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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2013248862A priority Critical patent/JP6020428B2/ja
Publication of JP2015106325A publication Critical patent/JP2015106325A/ja
Application granted granted Critical
Publication of JP6020428B2 publication Critical patent/JP6020428B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Description

本発明は、ベクトルレジスタリネーミング制御方式、ベクトルプロセッサ、及びベクトルレジスタリネーミング制御方法に関し、特に、ベクトルプロセッサに適したベクトルレジスタのリネーミングを可能にして演算スループットを向上させるベクトルレジスタリネーミング制御方式、このようなベクトルレジスタリネーミング方式を採用したベクトルプロセッサ、及びベクトルレジスタリネーミング制御方法に関する。
近年、半導体プロセスの微細化によりLSI(Large-Scale Integrated circuit)に搭載できる論理回路は飛躍的に増加し、CPU(Central Processing Unit)の演算性能は向上している。この演算性能の向上は、コア数を増加させるマルチコア化による寄与が大きく、単一コア当たりの性能向上は鈍化しつつある。しかしながら、マルチコア化による性能向上を享受するために必要な並列化が困難なプログラムも多数存在するため、単一コアの性能向上は必須である。
計算機システムにおいてその性能を向上させるためには、単位時間当たりに実行できる命令数を高めることが必要である。特に、持続的な性能(Sustained Performance)の向上のためには、命令発行レート(Instruction Issue Rate)を向上することが必要である。計算機システムにおいて、演算処理は一般にレジスタ間で行われるが、パイプライン処理を用いている場合に、あるレジスタに対する命令を発行した後、同じレジスタが別の命令を実行できるようになるためには一定のマシンサイクルを必要とする。
単一コアの性能向上を行う手法として、以前より命令発行レートを上げ性能向上させる技術として、レジスタリネーミングが広く知られている。レジスタリネーミングは、プログラムが前提とする個数よりも多くの個数のレジスタを用意しておき、プログラム上では同一のレジスタに対するものである複数の命令があるときに、命令の実行時において、プログラムで規定されているレジスタとは別のレジスタを用いるようにするものである。
これにより、先行命令がリードするまで後続命令はライトすることができないといった、Write-After-Read(WAR)依存関係や、先行命令がライトするまで後続命令はライトすることができないといった、Write-after-Write(WAW)依存関係を解消或いは緩和させることを意図したものである。
一般的に行われているレジスタリネーミングでは、ある演算結果を書き込むレジスタに別名を与え、リソースの依存性を緩和する。たとえば、命令Aが論理リソースXに対してデータを読み出している途中で、同一の論理リソースXに対する書き込みを行う後続命令Bに関して、論理リソースXに対して物理リソースX1、X2をそれぞれ命令A、命令Bに割り当てておくことで、命令Bの実行によるデータの書きつぶしを防ぐことが可能となる。これは命令Bの発行制限の緩和を意味し、命令発行レートの向上が見込める。
しかしながら、レジスタリネーミングをベクトルプロセッサに適用しようとする場合には、ベクトルプロセッサには、要素ごとに計算の有無を切り替えるマスク機能が設けられており、単純にはレジスタリネーミングを実現できない、という課題がある。
たとえば前述の命令Bにマスクがかかっていた場合、マスク対象の要素には、演算結果の元の値、すなわち命令Aの実行結果の対応する要素を格納する必要がある。これは、演算がマスクされている以上、あるレジスタに既に書き込まれたデータが、あとに実行される命令で参照される可能性があるからである。
そのため、単純に複数の独立したリソースを命令A、命令Bに割り当てるだけで不十分であり、そのリソース間での値の引渡しが必要となり、既存のレジスタリネーミング技術を単純に導入することができなかった。
特許文献1では、ベクトル命令で指定するベクトルレジスタ(論理レジスタ)とベクトルプロセッサが実際に有するベクトルレジスタ(物理レジスタ)とを1対1の関係で対応付けるのではなく、論理レジスタより多くの物理レジスタを用意しておき、ハードウェアで動的に論理レジスタ・物理レジスタ間の対応を管理することが提案されている。特許文献1によれば、同じ論理レジスタを複数のベクトル命令で指定したとしても、相異なる物理レジスタを割当てるので、ベクトル命令の実行が待たされることがなくなり、処理の高速化を図ることができる。
特許文献2は、マスク付き演算を考慮したベクトルレジスタのリネーミング手法に関するものであり、相互に組をなす複数のレジスタを持つ専用回路を用いたレジスタリネーミングする手法が提案されている。特許文献2によれば、マスク付き演算に必要な値のコピーを専用回路で行えるようにすることにより、マスク付き演算を実現しつつベクトルレジスタのリネーミングを実現できる。
特許文献3は、マスク付き演算とベクトル長の変化を考慮したベクトルレジスタのリネーミング手法に関するものであり、マスク付き演算の有無とベクトル長の比較結果とが条件を満たした場合には、デスティネーションとなる論理レジスタが一致する後続の命令に対して同一の物理レジスタを割り当てることが提案されている。特許文献3のリネーミング手法によれば、ベクトルレジスタの利用効率を向上させることができる。
特許文献4では、データの要素毎にリネーミングのポインタリストを設ける手法が提案されている。特許文献4のリネーミング手法によれば、物理レジスタをデータの要素毎に自由にマッピングして、リネーミングレジスタのデータ部分の利用効率を向上させることができる。
特開昭61−241870号公報 特開2007−334819号公報 特開2006−268168号公報 特開2010−205049号公報
しかしながら、上述した背景技術のリネーミング手法には、次のような課題がある。
すなわち、一般的なプロセッサにおいてレジスタのデータ格納領域として採用されているレジスタファイル(RF:Register File)やSRAM(Static Random Access Memory)を使用しつつ、マスク付き演算を考慮したベクトルレジスタリネーミング制御を実現することができないことである。
特許文献1は、一般的なスカラプロセッサに使用されている技術の延長であり、ベクトルプロセッサに広く採用されているマスク付き演算やベクトル長が考慮されていない。このため、特許文献1の手法をベクトルプロセッサにそのまま適用することができない、という課題がある。
特許文献2では、相互にセットをなす複数のレジスタを持つ専用回路が必要である。このため、一般的なプロセッサにおいてレジスタのデータ格納領域として採用されているレジスタファイルやSRAMを使用することができない、という課題がある。
特許文献3では、マスク付き演算の有無とベクトル長を比較することで条件を満たした場合に、デスティネーションとなる論理レジスタが一致する後続の命令に対して同一の物理レジスタを割り当てる。特許文献3では、同一の物理レジスタを割り当ててしまうため、プログラムに記述された命令を実行する場合には、プログラムに記述された命令を順に実行する、イン・オーダー(In-Order)実行とする、必要がある。プログラムに記述された命令の順序を変更して実行する、アウト・オブ・オーダー(Out-of-Order)実行ができず、イン・オーダーで命令を実行する必要があるため、レジスタのWAR依存関係を解消することができない。
特許文献4では、データ部分の利用効率を向上する代わりに、ポインタリストなどのリネーミングレジスタ管理情報のゲート量が増大する。例えば、データ部分が64ビット、物理レジスタが32個、要素数256で構成された、3オペランド命令のアーキテクチャを仮定する。この場合、データ部分は64ビット×256要素×32個=512Kビット必要であり、リネーミングレジスタ管理情報部分は32個の物理レジスタを表すために5ビット×256要素×32個×3オペランド=120Kビット必要になる。データ部分と管理情報部分とを全てフリップフロップ(FF:Flip Flop)で構成する場合は、約4:1の割合になる。データ部分はフリップフロップと比較すると一般的に記憶密度の高いレジスタファイルやSRAM(数倍の記憶密度)で構成するため、データ部分と管理情報部分の割合が1:1程度或いはより悪化する可能性がある。そのため、要素数が大きい構成を採用する場合に、レジスタリネーミング管理情報のゲート量が大きな負担になる。
本発明の目的は、マスク付き演算を考慮したベクトルレジスタリネーミングを最適化できていない、という課題を解決できる、マスク付き演算を考慮したベクトルレジスタリネーミング制御方式、及びこれを用いたベクトルプロセッサを提供することにある。
前記目的を達成するため、本発明に係るベクトルレジスタリネーミング制御方式は、ベクトル演算を実行するベクトルプロセッサのベクトルレジスタリネーミング制御方式であって、上記ベクトルレジスタは、1つの論理レジスタに最大2つの物理レジスタが割り当てられるものであり、
上記論理レジスタに対してライトした最後の命令のベクトル長を記憶する手段と、実行する命令のベクトル長と上記論理レジスタに対してライトした最後の命令の上記ベクトル長の大小を比較する手段と、ベクトル長の上記大小比較結果に従って、デスティネーションレジスタに対する上記物理レジスタの新規割り当てと演算幅とを制御する手段と、ベクトル長の上記大小比較結果に従って、ソースレジスタに対する上記物理レジスタと上記論理レジスタとの依存関係を生成する手段と、ベクトル長の上記大小比較結果と上記実行する命令がマスク演算であるか否かに従って、上記デスティネーションレジスタの非更新部分のデータコピーを行うための依存関係を生成する手段とを有する。
本発明に係るベクトルレジスタリネーミング制御方式を用いたベクトルプロセッサは、1つの論理レジスタに最大2つの物理レジスタが割り当てられるベクトルレジスタと、上記ベクトルレジスタが保持する内容について演算を実行する演算器と、上記論理レジスタに対してライトした最後の命令のベクトル長を記憶する手段と、実行する命令のベクトル長と上記論理レジスタに対してライトした最後の命令の上記ベクトル長の大小を比較する手段と、ベクトル長の上記大小比較結果に従って、デスティネーションレジスタに対する上記物理レジスタの新規割り当てと演算幅とを制御する手段と、ベクトル長の上記大小比較結果に従って、ソースレジスタに対する上記物理レジスタと上記論理レジスタとの依存関係を生成する手段と、ベクトル長の上記大小比較結果と上記実行する命令がマスク演算であるか否かに従って、上記デスティネーションレジスタの非更新部分のデータコピーを行うための依存関係を生成する手段とを有する。
本発明に係るベクトルレジスタリネーミング制御方法は、ベクトル演算を実行するベクトルプロセッサのベクトルレジスタリネーミング制御方法であって、上記ベクトルレジスタは、1つの論理レジスタに最大2つの物理レジスタが割り当てられるものであり、
上記論理レジスタに対してライトした最後の命令のベクトル長を記憶し、実行する命令のベクトル長と上記論理レジスタに対してライトした最後の命令の上記ベクトル長の大小を比較し、ベクトル長の上記大小比較結果に従って、デスティネーションレジスタに対する上記物理レジスタの新規割り当てと演算幅とを制御し、ベクトル長の上記大小比較結果に従って、ソースレジスタに対する上記物理レジスタと上記論理レジスタとの依存関係を生成し、ベクトル長の上記大小比較結果と上記実行する命令がマスク演算であるか否かに従って、上記デスティネーションレジスタの非更新部分のデータコピーを行うための依存関係を生成する。
本発明のベクトルレジスタリネーミング制御方式、ベクトルプロセッサ、及びベクトルレジスタリネーミング制御方法によれば、ベクトルレジスタリネーミングを最適化して、命令発行性能を最大化できる。
本発明の第一実施形態によるベクトルプロセッサを用いたベクトル計算機の概略構成を示すブロック図である。本発明の第一実施形態によるベクトルプロセッサのための、ベクトルレジスタリネーミング制御装置を示すブロック図である。 ベクトル長を考慮して、マスク演算ありベクトル加算命令VADDMを実行した場合のベクトルレジスタ更新の一例を示す概念図である。 ベクトル長を考慮して、マスク演算なしベクトル加算命令VADDを実行した場合のベクトルレジスタ更新の一例を示す概念図である。 論理レジスタ管理テーブルの第一状態を示す図である。 論理レジスタ管理テーブルの第二状態を示す図である。 物理レジスタ管理テーブルの第一状態を示す図である。 物理レジスタ管理テーブルの第二状態を示す図である。 物理レジスタ管理テーブルの第三状態を示す図である。 物理レジスタ管理テーブルの第四状態を示す図である。 物理レジスタ管理テーブルの第五状態を示す図である。 マスク演算ありの場合の、ベクトル長の違いによるデスティネーションレジスタの更新の第一例を示す概念図である。 マスク演算ありの場合の、ベクトル長の違いによるデスティネーションレジスタの更新の第二例を示す概念図である。 マスク演算ありの場合の、ベクトル長の違いによるデスティネーションレジスタの更新の第三例を示す概念図である。 マスク演算なしの場合の、ベクトル長の違いによるデスティネーションレジスタの更新の第一例を示す概念図である。 マスク演算なしの場合の、ベクトル長の違いによるデスティネーションレジスタの更新の第二例を示す概念図である。 マスク演算なしの場合の、ベクトル長の違いによるデスティネーションレジスタの更新の第三例を示す概念図である。 ベクトル長の違いによるソースレジスタのデータリードの第一例を示す概念図である。 ベクトル長の違いによるソースレジスタのデータリードの第二例を示す概念図である。 ベクトル長の違いによるソースレジスタのデータリードの第三例を示す概念図である。 命令毎の物理レジスタの管理テーブルの一例を示す図である。
本発明の好ましい実施形態及び実施例について、図面を参照しながら詳細に説明する。
〔第一実施形態〕
図1は、本発明の第一実施形態によるベクトルプロセッサを用いたベクトル計算機の概略構成を示すブロック図である。図3Aは、論理レジスタ管理テーブルの第一状態を示す図である。図4Aは、物理レジスタ管理テーブルの第一状態を示す図である。図8は、命令毎の物理レジスタの管理テーブルの一例を示す図である。
ベクトル計算機1は図1に示すように、ベクトルプロセッサ10と、メインメモリ20とを有する。ベクトルプロセッサ10は、ベクトルロード、ベクトルストア、ベクトル演算といった「ベクトル命令」を処理するプロセッサである。ベクトルロード命令に応答して、ベクトルプロセッサ10は、ベクトルデータをメインメモリ20から読み出す。ベクトルストア命令に応答して、ベクトルプロセッサ10は、ベクトルデータをメインメモリ20に書き込む。ベクトル演算命令に応答して、ベクトルプロセッサ10は、ベクトルデータを用いてベクトル演算を行う。
本実施形態のベクトルプロセッサ10は、命令制御部100と、演算部200とを有する。命令制御部100は、命令供給部110と、命令発行制御部111と、レジスタリネーミング制御部112と、命令実行制御部113とを有する。演算部200は、複数のベクトルレジスタからなるベクトルレジスタ群210と、リード選択部211と、演算器群212と、ライト選択部213とを有する。
命令供給部110は、ベクトル命令を信号線120を介して命令発行制御部111へ発行し、信号線121を介してレジスタリネーミング制御部112へ発行する。レジスタリネーミング制御部112は、図3Aに示すような論理レジスタ管理テーブルと図4Aに示すような物理レジスタ管理テーブルとを有する。命令発行制御部111は、図8に示した命令毎の物理レジスタ管理テーブルにある各物理レジスタのデータ準備が整ったことを示すレディフラグが全て”1”になった場合に、信号線140を介して命令実行制御部113へ命令を発行する。命令実行制御部113は、命令毎の物理レジスタ管理テーブルの情報に従って信号線150を介して、演算部200の制御を行う。
さらに、ベクトルレジスタ群210からリードし信号線220を介して、リード選択部211へ出力する。リード選択部211は、信号線221を介して演算器群212へデータを出力する。演算器群212は演算結果を、信号線222を介してライト選択部213へ出力する。ライト選択部213は演算結果を、信号線223を介してベクトルレジスタ群210へ出力する。
本実施形態では、ベクトルレジスタ群210は、論理レジスタが8個(V0〜V7)で、物理レジスタが32個(VR0〜VR31)で、マスクレジスタが1個で構成されるものとして説明する。各レジスタの要素数は256である。図3Aに示したように、1つの論理ベクトルレジスタに対し最大2つの物理レジスタを割り当てる。さらに、論理レジスタをライトした最後の命令のベクトル長を記憶し管理を行う。
次に、本実施形態によるベクトルレジスタリネーミング制御方式及び制御方法の概要について、説明する。本実施形態では、ベクトル命令を実行可能なプロセッサが、3オペランド形式の命令を実行する場合を例に説明を行う。
例えば、マスク演算ありベクトル加算命令VADDM V0←V1+V2の場合に、V0:デスティネーションレジスタ、V1・V2:ソースレジスタとする。マスク演算ありベクトル加算命令VADDM V0←V1+V2、ベクトル長=VLnを例にした本実施形態のベクトルレジスタリネーミング制御方式は、以下のようになる。
<論理レジスタと物理レジスタの管理>
1つの論理ベクトルレジスタに対し最大2つの物理レジスタを割り当てる。さらに、論理レジスタをライトした最後の命令のベクトル長を記憶し管理を行う。例えば、論理レジスタV0に対して物理レジスタVR0及びVR1を割り当てて、ライトした命令のベクトル長をVL0としたとき、V0=(VR0、VR1、VL0)と記述することとする。ここで、VR0はVL0以内の演算部分、VR1はVL0より大きい非演算部分を示す。
<デスティネーションレジスタに対する新規物理レジスタ割り当て>
ベクトルレジスタへのライト命令が必要な命令では、現在のデスティネーションレジスタV0に割り当てられている物理レジスタ(VR0、VR1、VL0)に対して、新たな物理レジスタVRnを割り当てる。実行する命令のベクトル長VLnとベクトル長VL0の大小比較により、レジスタの割り当てと命令実行時の演算幅が異なる。
VLn=VL0の場合:V0に(VRn、VR1、VLn)を割り当てて、演算幅はVLnで命令を実行する。
VLn>VL0の場合:V0に(VRn、VR1、VLn)を割り当てて、演算幅はVLnで命令を実行する。
VLn<VL0の場合:V0に(VRn、VRn、0)を割り当てて、演算幅は最大ベクトル長で命令を実行する。
<ソースレジスタ依存関係生成>
演算に使用するソースレジスタV1に割り当てられている物理レジスタをリードする場合を説明する。例えば、演算に使用するソースレジスタV1に対して物理レジスタVR2とVR3を割り当てて、リードした命令のベクトル長をVL1としたとき、V1=(VR2、VR3、VL1)と記述することとする。演算に使用するソースレジスタV2に割り当てられている物理レジスタをリードする場合に対しても、以下と同様の規則になる。
VLn=VL1の場合:VR2に対して依存関係を生成する。
VLn>VL1の場合:VR2、VR3に対して依存関係を生成する。
VLn<VL1の場合:VR2に対して依存関係を生成する。
<デスティネーションレジスタ依存関係生成>
本実施形態のレジスタリネーミングではマスク付き演算とベクトル長を考慮するので、特定のケースでデスティネーションレジスタの依存関係生成が必要になる。依存関係が必要になるケースは、マスク演算あり命令と、マスク演算なし命令かつVLn<VL0の場合である。マスク演算ではマスク=0になっているデスティネーションレジスタの非更新要素を保持する必要がある。そのため、元のデスティネーションレジスタからデータコピーを行いデータの整合をとる必要があり、デスティネーションレジスタ(V0)に対する依存関係生成が常に必要になる。VLn<VL0の場合は新規に割り当てた物理レジスタに全てのデータをまとめるために、マスク付き演算の有無にかかわらず依存関係生成が必要になる。マスク付き演算あり・なし両方に対して詳細に場合分けすることで不要な依存関係の生成を防ぎ、最大の命令発行性能が得られる。
VLn=VL0の場合:VR0に対して依存関係を生成する。マスク演算あり命令が対象である。
VLn>VL0の場合:VR0、VR1に対して依存関係を生成する。マスク演算あり命令が対象である。
VLn<VL0の場合:VR0、VR1に対して依存関係を生成する。マスク演算あり命令及びマスク演算なし命令の両方が対象である。
上記説明を行ったベクトルレジスタリネーミングを行うことで、不要な依存関係の生成を防ぎ、命令発行性能を最大化できる。
本発明の実施例の一例として、図1のレジスタリネーミング制御部を有するベクトルプロセッサを用いたベクトル計算機の構成を用いて説明する。また、本実施例で利用する命令は3オペランド形式で、1つのデスティネーションレジスタと2つのソースレジスタを指定可能とする。例えば、マスク演算ありベクトル加算命令VADDM V0←V1+V2の場合に、V0:デスティネーションレジスタ、V1・V2:ソースレジスタとして、V1とV2を加算してV0へ格納するものとする。VADDM命令はマスク付き演算用のマスクレジスタが指定可能な命令であるが、ベクトルプロセッサが演算する命令にはマスク演算なしのVADD命令も存在し得る。ベクトル長(VL)は、ベクトル命令において1命令で処理する要素数を設定する値で、図1には図示していないベクトル長設定レジスタの値を使用する。本実施例では、ベクトル長VL=0〜256の値をとるものとする。ベクトル長設定レジスタは、命令により自由に値の設定変更が可能である。
次に、図2Aを用いて、マスク演算ありベクトル加算命令VADDM V0←V1+V2、ベクトル長=VL0を実行した場合のレジスタの更新について、説明する。図2Aは、ベクトル長を考慮して、マスク演算ありベクトル加算命令VADDMを実行した場合のベクトルレジスタ更新の一例を示す概念図である。VL0以内の要素は演算部分になり、VL0より大きい要素は非演算部分となる。演算部分のVL0以内の要素の中でマスク=1の要素は、V1+V2の加算結果をV0に格納する。マスク=0の要素は、演算対象外で非更新要素となり演算前のV0の値を保持する。非演算部分は、演算前のV0の値を保持する。
次に、図2Bを用いて、マスク演算なしベクトル加算命令VADD V0←V1+V2、ベクトル長=VL0を実行した場合のレジスタの更新について説明する。図2Bは、ベクトル長を考慮して、マスク演算なしベクトル加算命令VADDを実行した場合のベクトルレジスタ更新の一例を示す概念図である。VL0以内の要素は演算部分になり、VL0より大きい要素は非演算部分となる。演算部分はV1+V2の加算結果をV0に格納し、非演算部分は演算前のV0の値を保持する。
本実施例では、マスク演算ありベクトル加算命令VADDM V0←V1+V2のレジスタリネーミング動作を中心に説明する。マスク演算なしベクトル加算命令VADD V0←V1+V2の動作は、マスク演算ありベクトル加算命令VADDM V0←V1+V2においてマスクが全て1に設定された動作に相当になる。
<1.論理レジスタと物理レジスタの管理>
図1の命令供給部110は、命令を信号線120を介して命令発行制御部111へ発行し、信号線121を介してレジスタリネーミング制御部112へ発行する。レジスタリネーミング制御部112は、図3Aに示した論理レジスタ管理テーブルと図4Aに示した物理レジスタ管理テーブルを有する。本実施例では、ベクトルレジスタ群210は論理レジスタが8個(V0〜V7)、物理レジスタが32個(VR0〜VR31)、マスクレジスタ1個から構成されるとする。図3Aに示したように、1つの論理ベクトルレジスタに対し最大2つの物理レジスタを割り当てる。さらに、論理レジスタをライトした最後の命令のベクトル長を記憶し管理を行う。例えば、論理レジスタV0に対して物理レジスタVR0とVR1を割り当て論理レジスタをライトした最後の命令のベクトル長をVL0とすると、V0=(VR0、VR1、VL0)と記述する。ここで、VR0はVL0以内の演算部分、VR1はVL0より大きい非演算部分を表す。
<2.デスティネーションレジスタに対する新規物理レジスタ割り当て>
図5Aは、マスク演算ありの場合の、ベクトル長の違いによるデスティネーションレジスタの更新の第一例を示す概念図である。図5Bは、マスク演算ありの場合の、ベクトル長の違いによるデスティネーションレジスタの更新の第二例を示す概念図である。図5Cは、マスク演算ありの場合の、ベクトル長の違いによるデスティネーションレジスタの更新の第三例を示す概念図である。
図6Aは、マスク演算なしの場合の、ベクトル長の違いによるデスティネーションレジスタの更新の第一例を示す概念図である。図6Bは、マスク演算なしの場合の、ベクトル長の違いによるデスティネーションレジスタの更新の第二例を示す概念図である。図6Cは、マスク演算なしの場合の、ベクトル長の違いによるデスティネーションレジスタの更新の第三例を示す概念図である。
レジスタリネーミング制御部112に発行され、実行する命令がベクトル加算命令のようにレジスタへのライトを行う命令の場合に、新たな物理レジスタの割り当てが必要になる。物理レジスタ割り当ては、実行する命令のベクトル長VLnと論理レジスタ管理テーブルに記憶した論理レジスタをライトした最後の命令のベクトル長VLwの大小比較により動作を決定する。論理レジスタVd=(VRa、VRb、VLw)と割り当てられている場合に、これから実行する命令のデスティネーションレジスタVdに新たに物理レジスタVRnを割り当てる場合は以下の規則になる。
VLn=VLwの場合:Vdに(VRn、VRb、VLn)を割り当てて、演算幅はVLnで命令を実行する。
VLn>VLwの場合:Vdに(VRn、VRb、VLn)を割り当てて、演算幅はVLnで命令を実行する。
VLn<VLwの場合:Vdに(VRn、VRn、0)を割り当てて、演算幅は最大ベクトル長で命令を実行する。
VLn=VLw及びVLn>VLwの場合は、図5Aと図5Bに示したように新たに割り当てた物理レジスタVRnに対してVLn部分のみ演算し結果を格納する。また、非演算部分は更新が不要のため管理テーブルのレジスタ番号VRbを変更しないことにより不要なコピーを削減する。VLn<VLwの場合は、図5Cに示したように新たに割り当てた物理レジスタVRnに全てのデータをまとめるために最大ベクトル長で命令を実行し元データのコピーを行う。VLwは初期設定の0にリセットする。同様に、マスク演算なしの場合は図6A、図6B、図6Cに示した動作になる。
より具体的に、例えば、VADDM V0←V1+V2、VLn=230の場合について説明する。デスティネーションレジスタはV0になる。図3Aに示した論理レジスタ管理テーブルを参照し、論理レジスタV0=(VR0、VR1、128)の情報を得る。次に、図4Aに示した物理レジスタ管理テーブルを参照し、有効ビット=0である未使用の物理レジスタVRnを検索し、VR16が有効ビット=0になっているのでVRn=VR16を割り当てる。この後で、物理レジスタ管理テーブルの情報を更新する。物理レジスタのVR16の有効ビット=1にし、VR16を論理レジスタV0として使用するために論理レジスタとして使用フラグ=1にし、これまでV0に割り当てられていたVR0の論理レジスタとして使用フラグ=0に変更する。上記操作により、物理レジスタ管理テーブルを図4Aから図4Bの状態に更新する。また、論理レジスタV0=(VR16、VR1、230)に変更するため論理レジスタ管理テーブルのV0を更新する。上記操作により、論理レジスタ管理テーブルを図3Aから図3Bの状態に更新する。
<3.ソースレジスタ依存関係生成>
図7Aは、ベクトル長の違いによるソースレジスタのデータリードの第一例を示す概念図である。図7Bは、ベクトル長の違いによるソースレジスタのデータリードの第二例を示す概念図である。図7Cは、ベクトル長の違いによるソースレジスタのデータリードの第三例を示す概念図である。
レジスタリネーミング制御部112に発行され、実行する命令がベクトル加算命令のようにソースレジスタを使用する場合について説明する。実行する命令のベクトル長VLnと論理レジスタ管理テーブルに記憶した論理レジスタをライトした最後の命令のベクトル長VLsの大小比較により動作を決定する。ソースレジスタである論理レジスタVs1=(VRc、VRd、VLs)と割り当てられている場合に、以下の規則でレジスタ依存関係を生成する。リードするオペランドが2個の場合に、ソースレジスタである論理レジスタVs2に対しても同じ規則になる。
VLn=VLsの場合:VRcに対して依存関係を生成する。
VLn>VLsの場合:VRc、VRdに対して依存関係を生成する。
VLn<VLsの場合:VRcに対して依存関係を生成する。
VLn=VLs及びVLn<VLsの場合は、図7Aと図7Cに示したようにVLn以内のデータのみ演算に使用するためVRcのみ依存関係を生成する。VLn>VLsの場合は、図7Bに示したようにVLs以内のデータ及びVLsより大きくVLn以下のデータの両方を演算に使用するためVRc、VRdに対して依存関係を生成する。
例えば、VADDM V0←V1+V2、VLn=230の場合について説明する。ソースレジスタはV1とV2になる。図3Aに示した論理レジスタ管理テーブルを参照し、論理レジスタV1=(VR2、VR3、128)と論理レジスタV2=(VR4、VR5、128)の情報を得る。次に、図4Bに示した物理レジスタ管理テーブルを参照し、VR2、VR3、VR4、VR5の物理レジスタ参照命令数を+1する。物理レジスタ参照命令数は、物理レジスタを参照する命令の場合に+1、物理レジスタを参照する命令が終了した場合に−1する。これにより、物理レジスタを参照している命令が存在するかを判断できる。物理レジスタ参照命令数=0の場合は、どの命令からも参照されていないことを示す。上記操作により、物理レジスタ管理テーブルを図4Bから図4Cの状態に更新する。
<4.デスティネーションレジスタ依存関係生成>
レジスタリネーミング制御部112に発行され、実行する命令がベクトル加算命令のようにレジスタへのライトを行う命令の場合に、本実施例のレジスタリネーミングではベクトル長とマスク付き演算を考慮するため特定のケースでデスティネーションレジスタの依存関係生成が必要になる。
依存関係が必要になるケースは、マスク演算あり命令とマスク演算なし命令でVLn<VLwの場合である。マスク演算あり命令では、デスティネーションレジスタのマスク=0になっている非更新要素のデータを保持する必要がある。そのため、元のデスティネーションレジスタからデータコピーを行いデータの整合をとる必要があり、デスティネーションレジスタに対する依存関係の生成が必要になる。また、マスク演算なし命令でもVLn<VLwの場合は、<2.デスティネーションレジスタに対する新規物理レジスタ割り当て>で述べたように、一つの物理レジスタに全てのデータをまとめるためにVLnより大きいデータ部分は元の物理レジスタからデータのコピーが必要になりレジスタ依存関係を生成する。依存関係の生成は、実行する命令のベクトル長VLnと論理レジスタ管理テーブルに記憶した論理レジスタをライトした最後の命令のベクトル長VLwの大小比較により動作を決定する。デスティネーションレジスタである論理レジスタVd=(VRa、VRb、VLw)と割り当てられている場合に、以下の規則で依存関係を生成する。マスク演算あり・なし両方に対して詳細に場合分けすることで不要な依存関係の生成を防ぎ、最大の命令発行性能が得られる。
VLn=VLwの場合:VRaに対して依存関係を生成する。マスク演算あり命令が対象である。
VLn>VLwの場合:VRa、VRbに対して依存関係を生成する。マスク演算あり命令が対象である。
VLn<VLwの場合:VRa、VRbに対して依存関係を生成する。マスク演算あり命令及びマスク演算なし命令の両方が対象である。
VLn=VLwの場合は、図5Aに示したようにVLn以内のデータかつマスク=0のデータを新たな物理レジスタVRnにコピーする必要があるためVRaのみ依存関係を生成する。VLn>VLwの場合は、図5Bに示したようにVLw以内のデータかつマスク=0のデータ及びVLwより大きくVLn以下のデータかつマスク=0のデータの両方を新たな物理レジスタVRnにコピーする必要がある。そのため、VRa、VRbに対して依存関係を生成する。VLn<VLwの場合は、新たな物理レジスタVRnに全てのデータをまとめるため、図5Cに示したようにVLnより大きくVLw以内のデータかつVLwより大きく最大ベクトル長以下のデータの両方を新たな物理レジスタVRnにコピーする必要がある。そのため、VRa、VRbに対して依存関係を生成する。また、マスク演算ありの場合はVLn以内のデータかつマスク=0のデータも新たな物理レジスタVRnにコピーする必要がある。
例えば、VADDM V0←V1+V2、VLn=230の場合について説明する。デスティネーションレジスタはV0になる。図3Aに示した論理レジスタ管理テーブルを参照し、論理レジスタV0=(VR0、VR1、128)の情報を得る。次に、図4Cに示した物理レジスタ管理テーブルを参照し、VR0、VR1の物理レジスタ参照命令数を+1する。上記操作により、物理レジスタ管理テーブルを図4Cから図4Dの状態に更新する。
レジスタリネーミング制御部112で上記1.〜4.の処理を行いレジスタリネーミングの処理が終わると、信号線130を介して命令発行制御部111に通知する。命令発行制御部111は図8に示した命令毎の物理レジスタ管理テーブルを有しており、通知する情報はレジスタリネーミング処理により決定した物理レジスタ情報であり命令毎の物理レジスタ管理テーブルへの入力データとなる。
<5.命令の実行と終了>
命令発行制御部111は図8に示した命令毎の物理レジスタ管理テーブルにある各物理レジスタのデータ準備が整ったことを示すレディフラグが全て1になった場合に、信号線140を介して命令実行制御部113へ命令を発行する。命令実行制御部113は命令毎の物理レジスタ管理テーブルの情報に従って信号線150を介して、演算部200の制御を行う。
例えば、VADDM V0←V1+V2、VLn=230の場合について説明する。図8の命令毎の物理レジスタ管理テーブルより、ソースレジスタV1に割り当てられたVR2、VR3のデータ及びV2に割り当てられたVR4、VR5のデータ及びデスティネーションレジスタV0のVR0、VR1のデータ及びマスクレジスタをベクトルレジスタ群210からリードし信号線220を介して、リード選択部211へ出力する。リード選択部211は信号線221を介して、演算器群212へデータを出力する。演算器はVLw以内のデータかつマスク=1の場合はVR2+VR4の加算を行い、VLw以内のデータかつマスク=0の場合はVR0のデータをそのまま出力する。また、演算器はVLwより大きくVLn以下のデータかつマスク=1の場合はVR3+VR5の加算を行い、VLwより大きくVLn以下のデータかつマスク=0の場合はVR1のデータをそのまま出力する。演算器群212は演算結果を信号線222を介して、ライト選択部213へ出力する。VLnより大きいデータは、非演算部分となるため何もしない。ライト選択部213は信号線223を介して、演算結果をベクトルレジスタ群210へ出力する。デスティネーションレジスタ(ライト)はVR16のためVR16へライトする。命令実行制御部113は命令が終了すると信号線141を介して、命令発行制御部111へ通知する。この通知により図8に示したエントリ番号0の有効ビットを1から0へ変更する。また、命令実行制御部113は信号線142を介して、レジスタリネーミング制御部112へ通知する。レジスタリネーミング制御部112は、VR0、VR1、VR2、VR3、VR4、VR5の物理レジスタ参照命令数を−1する。ここで、論理レジスタとして使用フラグ=0かつ物理レジスタ参照命令数=0の物理レジスタは解放可能となり有効ビット=0にする。上記操作により、物理レジスタ管理テーブルを図4Dから図4Eの状態に更新する。上記説明ではマスク演算ありの命令について説明したが、マスク演算なし命令の場合はマスク付き演算に関連する操作は不要である。
以上説明したように、本実施形態及び本実施例によれば、以下に記載するような効果が得られる。
(1)ベクトル命令でマスク付き演算の有無にかかわらずかつベクトル長が変化しても、レジスタリネーミングができる。
(2)実行する命令のベクトル長VLnと論理レジスタをライトした最後の命令のベクトル長VLwの大小比較とマスク付き演算の有無という単純な規則で、レジスタリネーミングにおけるデスティネーションレジスタの割り当てとレジスタ依存関係とを生成できる。
(3)上記(2)のベクトル長を比較した結果としてレジスタ間のデータコピーが不要な場合は、論理レジスタと物理レジスタの対応情報のアドレスを変化させないため、レジスタリネーミングを行ってもレジスタ間の不要なコピー動作を削減し省電力化できる。
例えば、プログラムにおいてループ部分の配列に対して演算を実行する場合を考えると、1万回ループする場合に1万=256×39+16で表せるので最大ベクトル長=256で39回命令実行とベクトル長=16で最後或いは最初の1回命令実行の組み合わせになる。そのため、ベクトル長はある程度の回数変化せずに動作するため本機能は非常に有効である。
(4)ベクトル命令のレジスタリネーミングに使用するデータ格納部分に専用の回路が不要で、一般的なプロセッサで採用されているRFやSRAMを使用できる。
(5)必要最低限のレジスタ依存関係のみ生成するため、レジスタリネーミングによる不要な命令発行制限が発生しない。
(6)1個の論理レジスタに対して最大2個の物理レジスタの対応情報だけを制御情報として使用する。これにより、ベクトルレジスタのような1個の論理レジスタの中に複数のデータ要素を持つ場合に、レジスタリネーミング制御部のゲート量を節約できる。例えば、最大ベクトル長nの場合に各データの要素毎に制御情報を持つと、1つの論理レジスタに対してn個の物理レジスタの対応情報が必要となる。この場合と比較すると、本発明の本実施形態では、レジスタの対応情報は1対2で固定なので、最大ベクトル長が2より大きい場合に効率的になる。
上述した実施形態では、ベクトル命令を実行可能なプロセッサが、3オペランド形式の命令を実行する場合を例に説明を行ったが、本発明はこれに限られるものではない。他のオペランド形式の命令を実行する場合にも、本発明は適用できる。例えば、Fused Multiply ADD(FMA)命令でVFMA V0←V1+(V2*V3)を行う4オペランド形式でもよい。
本実施形態ではベクトルプロセッサのベクトル命令で説明を行ったが、一般的なプロセッサにおいてマスク付き演算とベクトル長設定レジスタを持つSIMD命令に使用するレジスタでも本実施形態と同様にレジスタネーミングが可能である。
以上、本発明の好ましい実施形態や実施例を説明したが、本発明はこれに限定されるものではない。特許請求の範囲に記載した発明の範囲内で、種々の変形が可能であり、それらも本発明の範囲に含まれることはいうまでもない。例えば、上述した実施形態では、ベクトルレジスタ群210の論理レジスタが8個、物理レジスタが32個、マスクレジスタが1個から構成される場合を例に説明したが、これらの個数は上記実施形態や上記実施例に限定されるものではない。
デスティネーションレジスタに新たな物理レジスタを割り当てる場合の条件について、上述した実施形態では、VLn<VLwの場合にはVdに(VRn、VRn、0)を割り当てて、演算幅は最大ベクトル長で命令を実行する、ものとして説明した。VLn<VLwの場合のVdに対する物理レジスタの割り当て方法を(VRn、VRn、0)から(VRa、VRn、0)に変更してもよい。この場合、物理レジスタの解放個数が2→1個に削減されるため制御を簡素化できる。
上記の実施形態や実施例の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)ベクトル演算を実行するベクトルプロセッサのベクトルレジスタリネーミング制御方式であって、前記ベクトルレジスタは、1つの論理レジスタに最大2つの物理レジスタが割り当てられるものであり、前記論理レジスタに対してライトした最後の命令のベクトル長を記憶する手段と、実行する命令のベクトル長と前記論理レジスタに対してライトした最後の命令の前記ベクトル長の大小を比較する手段と、ベクトル長の前記大小比較結果に従って、デスティネーションレジスタに対する前記物理レジスタの新規割り当てと演算幅とを制御する手段と、ベクトル長の前記大小比較結果に従って、ソースレジスタに対する前記物理レジスタと前記論理レジスタとの依存関係を生成する手段と、ベクトル長の前記大小比較結果と前記実行する命令がマスク演算であるか否かに従って、前記デスティネーションレジスタの非更新部分のデータコピーを行うための依存関係を生成する手段とを有する、ベクトルレジスタリネーミング制御方式。
(付記2)前記制御する手段は、前記論理レジスタに対してライトした最後の命令の前記ベクトル長と、実行する命令のベクトル長とが等しいとき又は前記論理レジスタに対してライトした最後の命令の前記ベクトル長より、実行する命令のベクトル長が大きいときには、前記デスティネーションレジスタに新たな物理レジスタを割り当てて、前記論理レジスタに対してライトした最後の命令の前記ベクトル長より、実行する命令のベクトル長が小さいときには、前記デスティネーションレジスタに新たな物理レジスタを割り当てる、付記1に記載のベクトルレジスタリネーミング制御方式。
(付記3)前記制御する手段は、前記ソースレジスタに対してライトした最後の命令のベクトル長と、実行する命令のベクトル長とが等しいとき又は前記ソースレジスタに対してライトした最後の命令の前記ベクトル長より、実行する命令のベクトル長が大きいときには、前記デスティネーションレジスタに新たな物理レジスタを割り当てて、前記ソースレジスタに対してライトした最後の命令の前記ベクトル長より、実行する命令のベクトル長が小さいときには、前記デスティネーションレジスタに新たな物理レジスタを割り当てる、付記1に記載のベクトルレジスタリネーミング制御方式。
(付記4)演算に使用するソースレジスタに2つの物理レジスタが割り当てられており、前記物理レジスタをリードする場合には、
前記生成する手段は、前記論理レジスタに対してライトした最後の命令の前記ベクトル長と、実行する命令のベクトル長とが等しいとき又は前記論理レジスタに対してライトした最後の命令の前記ベクトル長より、実行する命令のベクトル長が小さいときには、前記2つの物理レジスタのうちの1つの物理レジスタに対して依存関係を生成し、前記論理レジスタに対してライトした最後の命令の前記ベクトル長より、実行する命令のベクトル長が大きいときには、前記2つの物理レジスタの両方に対して依存関係を生成する、付記1乃至付記3のいずれか一つに記載のベクトルレジスタリネーミング制御方式。
(付記5)前記生成する手段は、マスク演算を含む命令かつ、前記デスティネーションレジスタをリードした最後の命令のベクトル長と、実行する命令のベクトル長が等しいときには、新たに割り当てられた物理レジスタに対して依存関係を生成し、前記デスティネーションレジスタをリードした最後の命令のベクトル長より、実行する命令のベクトル長が小さいときには、新たに割り当てられた物理レジスタに対して依存関係を生成する、付記1乃至付記4のいずれか一つに記載のベクトルレジスタリネーミング制御方式。
(付記6)1つの論理レジスタに最大2つの物理レジスタが割り当てられるベクトルレジスタと、前記ベクトルレジスタが保持する内容について演算を実行する演算器と、前記論理レジスタに対してライトした最後の命令のベクトル長を記憶する手段と、実行する命令のベクトル長と前記論理レジスタに対してライトした最後の命令の前記ベクトル長の大小を比較する手段と、ベクトル長の前記大小比較結果に従って、デスティネーションレジスタに対する前記物理レジスタの新規割り当てと演算幅とを制御する手段と、ベクトル長の前記大小比較結果に従って、ソースレジスタに対する前記物理レジスタと前記論理レジスタとの依存関係を生成する手段と、ベクトル長の前記大小比較結果と前記実行する命令がマスク演算であるか否かに従って、前記デスティネーションレジスタの非更新部分のデータコピーを行うための依存関係を生成する手段とを有する、ベクトル演算を実行するベクトルプロセッサ。
(付記7)前記制御する手段は、前記論理レジスタに対してライトした最後の命令の前記ベクトル長と、実行する命令のベクトル長とが等しいとき又は前記論理レジスタに対してライトした最後の命令の前記ベクトル長より、実行する命令のベクトル長が大きいときには、前記デスティネーションレジスタに新たな物理レジスタを割り当てると共に、前記演算器は、演算幅を前記実行する命令のベクトル長として命令を実行し、
前記制御する手段は、前記論理レジスタに対してライトした最後の命令の前記ベクトル長より、実行する命令のベクトル長が小さいときには、前記デスティネーションレジスタに新たな物理レジスタを割り当てると共に、前記演算器は、演算幅を最大ベクトル長として命令を実行する、付記6に記載のベクトルプロセッサ。
(付記8)前記制御する手段は、前記ソースレジスタに対してライトした最後の命令のベクトル長と、実行する命令のベクトル長とが等しいとき又は前記ソースレジスタに対してライトした最後の命令の前記ベクトル長より、実行する命令のベクトル長が大きいときには、前記デスティネーションレジスタに新たな物理レジスタを割り当てると共に、前記演算器は、演算幅を前記実行する命令のベクトル長として命令を実行し、
前記制御する手段は、前記ソースレジスタに対してライトした最後の命令の前記ベクトル長より、実行する命令のベクトル長が小さいときには、前記デスティネーションレジスタに新たな物理レジスタを割り当てると共に、前記演算器は、演算幅を最大ベクトル長として命令を実行する、付記6に記載のベクトルプロセッサ。
(付記9)演算に使用するソースレジスタに2つの物理レジスタが割り当てられており、前記物理レジスタをリードする場合には、
前記生成する手段は、前記論理レジスタに対してライトした最後の命令の前記ベクトル長と、実行する命令のベクトル長とが等しいとき又は前記論理レジスタに対してライトした最後の命令の前記ベクトル長より、実行する命令のベクトル長が小さいときには、前記2つの物理レジスタのうちの1つの物理レジスタに対して依存関係を生成し、前記論理レジスタに対してライトした最後の命令の前記ベクトル長より、実行する命令のベクトル長が大きいときには、前記2つの物理レジスタの両方に対して依存関係を生成する、付記6乃至付記8のいずれか一つに記載のベクトルプロセッサ。
(付記10)前記生成する手段は、マスク演算を含む命令かつ、前記デスティネーションレジスタをリードした最後の命令のベクトル長と、実行する命令のベクトル長が等しいときには、新たに割り当てられた物理レジスタに対して依存関係を生成し、前記デスティネーションレジスタをリードした最後の命令のベクトル長より、実行する命令のベクトル長が小さいときには、新たに割り当てられた物理レジスタに対して依存関係を生成する、付記6乃至付記9のいずれか一つに記載のベクトルプロセッサ。
(付記11)ベクトル演算を実行するベクトルプロセッサのベクトルレジスタリネーミング制御方法であって、前記ベクトルレジスタは、1つの論理レジスタに最大2つの物理レジスタが割り当てられるものであり、前記論理レジスタに対してライトした最後の命令のベクトル長を記憶し、実行する命令のベクトル長と前記論理レジスタに対してライトした最後の命令の前記ベクトル長の大小を比較し、ベクトル長の前記大小比較結果に従って、デスティネーションレジスタに対する前記物理レジスタの新規割り当てと演算幅とを制御し、ベクトル長の前記大小比較結果に従って、ソースレジスタに対する前記物理レジスタと前記論理レジスタとの依存関係を生成し、ベクトル長の前記大小比較結果と前記実行する命令がマスク演算であるか否かに従って、前記デスティネーションレジスタの非更新部分のデータコピーを行うための依存関係を生成する、ベクトルレジスタリネーミング制御方法。
(付記12)前記論理レジスタに対してライトした最後の命令の前記ベクトル長と、実行する命令のベクトル長とが等しいとき又は前記論理レジスタに対してライトした最後の命令の前記ベクトル長より、実行する命令のベクトル長が大きいときには、前記デスティネーションレジスタに新たな物理レジスタを割り当てて、
前記論理レジスタに対してライトした最後の命令の前記ベクトル長より、実行する命令のベクトル長が小さいときには、前記デスティネーションレジスタに新たな物理レジスタを割り当てる、付記11に記載のベクトルレジスタリネーミング制御方法。
(付記13)前記ソースレジスタに対してライトした最後の命令のベクトル長と、実行する命令のベクトル長とが等しいとき又は前記ソースレジスタに対してライトした最後の命令の前記ベクトル長より、実行する命令のベクトル長が大きいときには、前記デスティネーションレジスタに新たな物理レジスタを割り当てて、
前記ソースレジスタに対してライトした最後の命令の前記ベクトル長より、実行する命令のベクトル長が小さいときには、前記デスティネーションレジスタに新たな物理レジスタを割り当てる、付記11に記載のベクトルレジスタリネーミング制御方法。
(付記14)演算に使用するソースレジスタに2つの物理レジスタが割り当てられており、前記物理レジスタをリードする場合には、
前記論理レジスタに対してライトした最後の命令の前記ベクトル長と、実行する命令のベクトル長とが等しいとき又は前記論理レジスタに対してライトした最後の命令の前記ベクトル長より、実行する命令のベクトル長が小さいときには、前記2つの物理レジスタのうちの1つの物理レジスタに対して依存関係を生成し、前記論理レジスタに対してライトした最後の命令の前記ベクトル長より、実行する命令のベクトル長が大きいときには、前記2つの物理レジスタの両方に対して依存関係を生成する、付記11乃至付記13のいずれか一つに記載のベクトルレジスタリネーミング制御方法。
(付記15)マスク演算を含む命令かつ、前記デスティネーションレジスタをリードした最後の命令のベクトル長と、実行する命令のベクトル長が等しいときには、新たに割り当てられた物理レジスタに対して依存関係を生成し、前記デスティネーションレジスタをリードした最後の命令のベクトル長より、実行する命令のベクトル長が小さいときには、新たに割り当てられた物理レジスタに対して依存関係を生成する、付記11乃至付記14のいずれか一つに記載のベクトルレジスタリネーミング制御方法。
1 ベクトル計算機
10 ベクトルプロセッサ
20 メインメモリ
100 命令制御部
110 命令供給部
111 命令発行制御部
112 レジスタリネーミング制御部
113 命令実行制御部
120、121、130、140、141、142、150、220、221、222、223 信号線
200 演算部
210 ベクトルレジスタ群
211 リード選択部
212 演算器群
213 ライト選択部

Claims (9)

  1. ベクトル演算を実行するベクトルプロセッサのベクトルレジスタリネーミング制御方式であって、前記ベクトルレジスタは、1つの論理レジスタに最大2つの物理レジスタが割り当てられるものであり、
    前記論理レジスタに対するライトを生じさせた最後の命令のベクトル長を記憶する手段と、
    実行する命令のベクトル長と前記論理レジスタに対するライトを生じさせた最後の命令の前記ベクトル長の大小を比較する手段と、
    実行する命令のベクトル長と、実行する命令にとってのデスティネーションレジスタである論理レジスタに対するライトを生じさせた最後の命令のベクトル長との大小比較結果に従って、前記デスティネーションレジスタに対する前記物理レジスタの新規割り当てと演算幅とを制御する手段と、
    実行する命令のベクトル長と、実行する命令にとってのソースレジスタである論理レジスタに対するライトを生じさせた最後の命令のベクトル長との大小比較結果に従って、前記ソースレジスタに対する前記物理レジスタと前記論理レジスタとの依存関係を生成する手段と、
    実行する命令のベクトル長と、実行する命令にとってのデスティネーションレジスタである論理レジスタに対するライトを生じさせた最後の命令のベクトル長との大小比較結果と前記実行する命令がマスク演算であるか否かに従って、前記デスティネーションレジスタの非更新部分のデータコピーを行うための依存関係を生成する手段とを有する、ベクトルレジスタリネーミング制御方式。
  2. 前記制御する手段は、
    実行する命令にとってのデスティネーションレジスタである論理レジスタに対するライトを生じさせた最後の命令の前記ベクトル長と、実行する命令のベクトル長とが等しいとき又は、実行する命令にとってのデスティネーションレジスタである論理レジスタに対するライトを生じさせた最後の命令の前記ベクトル長より、実行する命令のベクトル長が大きいときには、前記デスティネーションレジスタである前記論理レジスタに対して、新たな物理レジスタを割り当てるとともに、当該論理レジスタに割り当てられていた2つの物理レジスタのうち、当該論理レジスタに対するライトを生じさせた最後の命令の前記ベクトル長を超える部分のデータを保持していたほうの物理レジスタを割り当て、
    実行する命令にとってのデスティネーションレジスタである論理レジスタに対するライトを生じさせた最後の命令の前記ベクトル長より、実行する命令のベクトル長が小さいときには、前記デスティネーションレジスタである前記論理レジスタに新たな物理レジスタを割り当てるとともに、それ以外の物理レジスタは割り当てない、請求項1に記載のベクトルレジスタリネーミング制御方式。
  3. 演算に使用するソースレジスタである論理レジスタに2つの物理レジスタが割り当てられており、前記物理レジスタをリードする場合には、
    前記ソースレジスタに対する前記物理レジスタと前記論理レジスタとの依存関係を生成する手段は、
    実行する命令にとってのソースレジスタである論理レジスタに対するライトを生じさせた最後の命令の前記ベクトル長と、実行する命令のベクトル長とが等しいとき、又は、実行する命令にとってのソースレジスタである論理レジスタに対するライトを生じさせた最後の命令の前記ベクトル長より、実行する命令のベクトル長が小さいときには、前記2つの物理レジスタのうちの前記最後の命令のベクトル長に含まれる部分のデータを保持していたほうの物理レジスタに対して依存関係を生成し、
    実行する命令にとってのソースレジスタである論理レジスタに対するライトを生じさせた最後の命令の前記ベクトル長より、実行する命令のベクトル長が大きいときには、前記2つの物理レジスタの両方に対して依存関係を生成する、請求項1又は請求項2に記載のベクトルレジスタリネーミング制御方式。
  4. 前記デスティネーションレジスタの非更新部分のデータコピーを行うための依存関係を生成する手段は、
    実行する命令がマスク演算あり命令であり、かつ、実行する命令にとってのデスティネーションレジスタである論理レジスタに対するライトを生じさせた最後の命令のベクトル長と、実行する命令のベクトル長が等しいときには、実行する命令にとってのデスティネーションレジスタである論理レジスタに割り当てられていた2つの物理レジスタのうち、前記最後の命令のベクトル長に含まれる部分のデータを保持していたほうの物理レジスタに対して依存関係を生成し、
    実行する命令がマスク演算あり命令であり、かつ、実行する命令にとってのデスティネーションレジスタである論理レジスタに対するライトを生じさせた最後の命令のベクトル長よりも、実行する命令のベクトル長が大きいときには、実行する命令にとってのデスティネーションレジスタである論理レジスタに割り当てられていた2つの物理レジスタの両方に対して依存関係を生成し、
    実行する命令がマスク演算あり命令またはマスク演算なし命令のいずれであっても、実行する命令にとってのデスティネーションレジスタである論理レジスタに対するライトを生じさせた最後の命令のベクトル長よりも、実行する命令のベクトル長が小さい場合には、実行する命令にとってのデスティネーションレジスタである論理レジスタに割り当てられていた2つの物理レジスタの両方に対して依存関係を生成する、請求項1乃至請求項3のいずれか一項に記載のベクトルレジスタリネーミング制御方式。
  5. 1つの論理レジスタに最大2つの物理レジスタが割り当てられるベクトルレジスタと、
    前記ベクトルレジスタが保持する内容について演算を実行する演算器と、
    前記論理レジスタに対するライトを生じさせた最後の命令のベクトル長を記憶する手段と、
    実行する命令のベクトル長と前記論理レジスタに対するライトを生じさせた最後の命令の前記ベクトル長の大小を比較する手段と、
    実行する命令のベクトル長と、実行する命令にとってのデスティネーションレジスタである論理レジスタに対するライトを生じさせた最後の命令のベクトル長との大小比較結果に従って、デスティネーションレジスタに対する前記物理レジスタの新規割り当てと演算幅とを制御する手段と、
    実行する命令のベクトル長と、実行する命令にとってのソースレジスタである論理レジスタに対するライトを生じさせた最後の命令のベクトル長との前記大小比較結果に従って、前記ソースレジスタに対する前記物理レジスタと前記論理レジスタとの依存関係を生成する手段と、
    実行する命令のベクトル長と、実行する命令にとってのデスティネーションレジスタである論理レジスタに対するライトを生じさせた最後の命令のベクトル長との大小比較結果と、前記実行する命令がマスク演算であるか否かに従って、前記デスティネーションレジスタの非更新部分のデータコピーを行うための依存関係を生成する手段とを有する、ベクトル演算を実行するベクトルプロセッサ。
  6. 前記制御する手段は、
    実行する命令にとってのデスティネーションレジスタである論理レジスタに対するライトを生じさせた最後の命令の前記ベクトル長と、実行する命令のベクトル長とが等しいとき、又は、実行する命令にとってのデスティネーションレジスタである論理レジスタに対するライトを生じさせた最後の命令の前記ベクトル長より、実行する命令のベクトル長が大きいときには、前記デスティネーションレジスタである前記論理レジスタに対して、新たな物理レジスタを割り当てるとともに、当該論理レジスタに割り当てられていた2つの物理レジスタのうち、当該論理レジスタに対するライトを生じさせた最後の命令の前記ベクトル長を超える部分のデータを保持していたほうの物理レジスタを割り当て、
    実行する命令にとってのデスティネーションレジスタである論理レジスタに対するライトを生じさせた最後の命令の前記ベクトル長より、実行する命令のベクトル長が小さいときには、前記デスティネーションレジスタである前記論理レジスタに新たな物理レジスタを割り当てるとともに、それ以外の物理レジスタは割り当てず、
    前記演算器は、
    実行する命令にとってのデスティネーションレジスタである論理レジスタに対するライトを生じさせた最後の命令の前記ベクトル長と、実行する命令のベクトル長とが等しいとき、又は、実行する命令にとってのデスティネーションレジスタである論理レジスタに対するライトを生じさせた最後の命令の前記ベクトル長より、実行する命令のベクトル長が大きいときには、演算幅を前記実行する命令のベクトル長として命令を実行し、
    実行する命令にとってのデスティネーションレジスタである論理レジスタに対するライトを生じさせた最後の命令の前記ベクトル長より、実行する命令のベクトル長が小さいときには、演算幅を最大ベクトル長として命令を実行する、請求項5に記載のベクトルプロセッサ。
  7. 前記デスティネーションレジスタの非更新部分のデータコピーを行うための依存関係を生成する手段は、
    実行する命令がマスク演算あり命令であり、かつ、実行する命令にとってのデスティネーションレジスタである論理レジスタに対するライトを生じさせた最後の命令のベクトル長と、実行する命令のベクトル長が等しいときには、実行する命令にとってのデスティネーションレジスタである論理レジスタに割り当てられていた2つの物理レジスタのうち、前記最後の命令のベクトル長に含まれる部分のデータを保持していたほうの物理レジスタに対して依存関係を生成し、
    実行する命令がマスク演算あり命令であり、かつ、実行する命令にとってのデスティネーションレジスタである論理レジスタに対するライトを生じさせた最後の命令のベクトル長よりも、実行する命令のベクトル長が大きいときには、実行する命令にとってのデスティネーションレジスタである論理レジスタに割り当てられていた2つの物理レジスタの両方に対して依存関係を生成し、
    実行する命令がマスク演算あり命令またはマスク演算なし命令のいずれであっても、実行する命令にとってのデスティネーションレジスタである論理レジスタに対するライトを生じさせた最後の命令のベクトル長よりも、実行する命令のベクトル長が小さい場合には、実行する命令にとってのデスティネーションレジスタである論理レジスタに割り当てられていた2つの物理レジスタの両方に対して依存関係を生成する、請求項5又は請求項6に記載のベクトルプロセッサ。
  8. 前記デスティネーションレジスタの非更新部分のデータコピーを行うための依存関係を生成する手段は、
    実行する命令がマスク演算あり命令であり、かつ、実行する命令にとってのデスティネーションレジスタである論理レジスタに対するライトを生じさせた最後の命令のベクトル長と、実行する命令のベクトル長が等しいときには、実行する命令にとってのデスティネーションレジスタである論理レジスタに割り当てられていた2つの物理レジスタのうち、前記最後の命令のベクトル長に含まれる部分のデータを保持していたほうの物理レジスタに対して依存関係を生成し、
    実行する命令がマスク演算あり命令であり、かつ、実行する命令にとってのデスティネーションレジスタである論理レジスタに対するライトを生じさせた最後の命令のベクトル長よりも、実行する命令のベクトル長が大きい場合には、実行する命令にとってのデスティネーションレジスタである論理レジスタに割り当てられていた2つの物理レジスタの両方に対して依存関係を生成し、
    実行する命令がマスク演算あり命令またはマスク演算なし命令のいずれであっても、実行する命令にとってのデスティネーションレジスタである論理レジスタに対するライトを生じさせた最後の命令のベクトル長よりも、実行する命令のベクトル長が小さい場合には、実行する命令にとってのデスティネーションレジスタである論理レジスタに割り当てられていた2つの物理レジスタの両方に対して依存関係を生成する、請求項5乃至請求項7のいずれか一項に記載のベクトルプロセッサ。
  9. ベクトル演算を実行するベクトルプロセッサのベクトルレジスタリネーミング制御方法であって、前記ベクトルレジスタは、1つの論理レジスタに最大2つの物理レジスタが割り当てられるものであり、
    前記論理レジスタに対するライトを生じさせた最後の命令のベクトル長を記憶し、
    実行する命令のベクトル長と前記論理レジスタに対するライトを生じさせた最後の命令の前記ベクトル長の大小を比較し、
    実行する命令のベクトル長と、実行する命令にとってのデスティネーションレジスタである論理レジスタに対するライトを生じさせた最後の命令のベクトル長との大小比較結果に従って、前記デスティネーションレジスタに対する前記物理レジスタの新規割り当てと演算幅とを制御し、
    実行する命令のベクトル長と、実行する命令にとってのデスティネーションレジスタである論理レジスタに対するライトを生じさせた最後の命令のベクトル長との大小比較結果と、前記実行する命令がマスク演算であるか否かに従って、前記デスティネーションレジスタの非更新部分のデータコピーを行うための依存関係を生成する、ベクトルレジスタリネーミング制御方法。
JP2013248862A 2013-12-02 2013-12-02 ベクトルレジスタリネーミング制御方式、ベクトルプロセッサ、及びベクトルレジスタリネーミング制御方法 Active JP6020428B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013248862A JP6020428B2 (ja) 2013-12-02 2013-12-02 ベクトルレジスタリネーミング制御方式、ベクトルプロセッサ、及びベクトルレジスタリネーミング制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013248862A JP6020428B2 (ja) 2013-12-02 2013-12-02 ベクトルレジスタリネーミング制御方式、ベクトルプロセッサ、及びベクトルレジスタリネーミング制御方法

Publications (2)

Publication Number Publication Date
JP2015106325A JP2015106325A (ja) 2015-06-08
JP6020428B2 true JP6020428B2 (ja) 2016-11-02

Family

ID=53436370

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013248862A Active JP6020428B2 (ja) 2013-12-02 2013-12-02 ベクトルレジスタリネーミング制御方式、ベクトルプロセッサ、及びベクトルレジスタリネーミング制御方法

Country Status (1)

Country Link
JP (1) JP6020428B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6891596B2 (ja) * 2017-03-30 2021-06-18 日本電気株式会社 プロセッサ
JP6705473B2 (ja) * 2018-06-22 2020-06-03 日本電気株式会社 演算装置及び演算システム

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006268168A (ja) * 2005-03-22 2006-10-05 Nec Computertechno Ltd ベクトル命令管理回路、ベクトル処理装置、ベクトル命令管理方法、ベクトル処理方法、ベクトル命令管理プログラム、および、ベクトル処理プログラム
JP5145659B2 (ja) * 2006-06-19 2013-02-20 日本電気株式会社 ベクトルリネーミング方式およびベクトル型計算機

Also Published As

Publication number Publication date
JP2015106325A (ja) 2015-06-08

Similar Documents

Publication Publication Date Title
CN108376097B (zh) 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段
CN110032395B (zh) 用于提高资源利用率的统一寄存器文件
JP6373425B2 (ja) 複数のビットを左にシフトし、複数の1を複数の下位ビットにプルインするための命令
US10127043B2 (en) Implementing conflict-free instructions for concurrent operation on a processor
US10355975B2 (en) Latency guaranteed network on chip
JP2004158018A (ja) レジスタ・リネーム回路の半導体フロアプランのレイアウト・システム
CN102124443A (zh) 在单指令多数据(simd)数据处理器中提供扩展寻址模式
CN107851013B (zh) 数据处理装置和方法
US10659396B2 (en) Joining data within a reconfigurable fabric
JP6551751B2 (ja) マルチプロセッサ装置
JP6891596B2 (ja) プロセッサ
JP6020428B2 (ja) ベクトルレジスタリネーミング制御方式、ベクトルプロセッサ、及びベクトルレジスタリネーミング制御方法
TWI754310B (zh) 純函數語言神經網路加速器系統及電路
JP5419134B2 (ja) ベクトルプロセッサ及びベクトル命令発行方法
CN111240745A (zh) 交叉执行的增强型标量向量双管线架构
US9477628B2 (en) Collective communications apparatus and method for parallel systems
JP5145659B2 (ja) ベクトルリネーミング方式およびベクトル型計算機
JP4444305B2 (ja) 半導体装置
CN114327635A (zh) 用于处理器的非对称执行端口和分配宽度的可缩放端口绑定的方法、系统和装置
JP7383390B2 (ja) 情報処理ユニット、情報処理装置、情報処理方法及びプログラム
US20190317762A1 (en) Arithmetic processing unit and control method for arithmetic processing unit
JP7078380B2 (ja) 命令制御装置、命令制御方法およびプログラム
JP2006506727A (ja) コピーレジスタファイルを有するvliw
KR102644951B1 (ko) 산술 논리 장치 레지스터 시퀀싱
JP6307975B2 (ja) 演算処理装置及び演算処理装置の制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150417

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160202

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160401

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160919

R150 Certificate of patent or registration of utility model

Ref document number: 6020428

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150