(57)【要約】【課題】マスク付き演算を考慮したベクトルレジスタリネーミングを行うこと。【解決手段】本発明のプロセッサは、１つの論理レジスタに１つの物理レジスタが割り当てられたベクトルレジスタと、ベクトルレジスタが保持するデータに対してベクトル演算を行う演算器と、ベクトル演算のソースレジスタに割り当てられた物理レジスタが依存していることを表す依存設定を行う依存設定部と、ベクトル演算のデスティネーションレジスタに割り当てられた物理レジスタに代えて、当該デスティネーションレジスタに新規物理レジスタを割り当てる割り当て設定部と、を備える。そして、依存設定部は、デスティネーションレジスタに新規物理レジスタを割り当てる前に割り当てられていた物理レジスタである変更前物理レジスタが依存していることを表す依存設定を行う。【選択図】図６
2018169838.tif 000002
【特許請求の範囲】
【請求項１】
１つの論理レジスタに１つの物理レジスタが割り当てられたベクトルレジスタと、
前記ベクトルレジスタが保持するデータに対してベクトル演算を行う演算器と、
前記ベクトル演算のソースレジスタに割り当てられた物理レジスタが依存していることを表す依存設定を行う依存設定部と、
前記ベクトル演算のデスティネーションレジスタに割り当てられた物理レジスタに代えて、当該デスティネーションレジスタに新規物理レジスタを割り当てる割り当て設定部と、
を備え、
前記依存設定部は、前記デスティネーションレジスタに前記新規物理レジスタを割り当てる前に割り当てられていた物理レジスタである変更前物理レジスタが依存していることを表す依存設定を行う、
プロセッサ。
【請求項２】
請求項１に記載のプロセッサであって、
前記演算器は、前記デスティネーションレジスタに割り当てられた前記新規物理レジスタに対して、前記ソースレジスタに割り当てられた物理レジスタが保持するデータの演算結果と、前記変更前物理レジスタが保持するデータと、を格納する、
プロセッサ。
【請求項３】
請求項２に記載のプロセッサであって、
前記演算器は、
前記デスティネーションレジスタに割り当てられた前記新規物理レジスタのうち前記ベクトル演算の演算対象として設定された要素に対して、前記ソースレジスタに割り当てられた物理レジスタが保持するデータの演算結果を格納すると共に、
前記新規物理レジスタのうち前記ベクトル演算の演算対象外として設定された要素に対して、前記変更前物理レジスタが保持するデータを格納する、
プロセッサ。
【請求項４】
請求項３に記載のプロセッサであって、
前記ベクトル演算は、演算対象外の要素を指定するマスク演算を含み、
前記演算器は、
前記デスティネーションレジスタに割り当てられた前記新規物理レジスタのうち前記マスク演算が設定されてない演算対象の要素に対して、前記ソースレジスタに割り当てられた物理レジスタが保持するデータの演算結果を格納し、
前記新規物理レジスタのうち前記マスク演算が設定されている演算対象外の要素に対して、前記変更前物理レジスタが保持するデータを格納する、
プロセッサ。
【請求項５】
請求項３又は４に記載のプロセッサであって、
前記ベクトル演算は、演算対象ベクトル長が設定されており、
前記演算器は、
前記デスティネーションレジスタに割り当てられた前記新規物理レジスタのうち前記演算対象ベクトル長以内である演算対象の要素に対して、前記ソースレジスタに割り当てられた物理レジスタが保持するデータの演算結果を格納し、
前記新規物理レジスタのうち前記演算対象ベクトル長を超える演算対象外の要素に対して、前記変更前物理レジスタが保持するデータを格納する、
プロセッサ。
【請求項６】
請求項１乃至５のいずれかに記載のプロセッサであって、
前記演算器は、前記依存設定が行われた、前記ソースレジスタに割り当てられた物理レジスタと、前記変更前物理レジスタと、に対するデータの準備が整った場合に、当該物理レジスタが保持するデータに対するベクトル演算を行う、
プロセッサ。
【請求項７】
請求項６に記載のプロセッサであって、
前記依存設定部は、前記ソースレジスタに割り当てられた物理レジスタと、前記変更前物理レジスタと、に対するデータの準備が整ったか否かを表すフラグを設定し、
前記演算器は、前記フラグに基づいて、前記ソースレジスタに割り当てられた物理レジスタと、前記変更前物理レジスタと、に対するデータの準備が整った場合に、当該物理レジスタが保持するデータに対するベクトル演算を行う、
プロセッサ。
【請求項８】
１つの論理レジスタに１つの物理レジスタが割り当てられたベクトルレジスタと、前記ベクトルレジスタが保持するデータに対してベクトル演算を行う演算器と、を備えたプロセッサを制御する制御装置であって、
前記ベクトル演算のソースレジスタに割り当てられた物理レジスタが依存していることを表す依存設定を行う依存設定部と、
前記ベクトル演算のデスティネーションレジスタに割り当てられた物理レジスタに代えて、当該デスティネーションレジスタに新規物理レジスタを割り当てる割り当て設定部と、
を備え、
前記依存設定部は、前記デスティネーションレジスタに前記新規物理レジスタを割り当てる前に割り当てられていた物理レジスタである変更前物理レジスタが依存していることを表す依存設定を行う、
制御装置。
【請求項９】
１つの論理レジスタに１つの物理レジスタが割り当てられたベクトルレジスタと、前記ベクトルレジスタが保持するデータに対してベクトル演算を行う演算器と、を備えたプロセッサを制御する制御装置に、
前記ベクトル演算のソースレジスタに割り当てられた物理レジスタが依存していることを表す依存設定を行う依存設定部と、
前記ベクトル演算のデスティネーションレジスタに割り当てられた物理レジスタに代えて、当該デスティネーションレジスタに新規物理レジスタを割り当てる割り当て設定部と、
を実現させると共に、
前記依存設定部は、前記デスティネーションレジスタに前記新規物理レジスタを割り当てる前に割り当てられていた物理レジスタである変更前物理レジスタが依存していることを表す依存設定を行う、
ことを実現させるためのプログラム。
【請求項１０】
１つの論理レジスタに１つの物理レジスタが割り当てられたベクトルレジスタと、
前記ベクトルレジスタが保持するデータに対してベクトル演算を行う演算器と、を備えたプロセッサによる情報処理方法であって、
前記ベクトル演算のソースレジスタに割り当てられた物理レジスタが依存していることを表す依存設定処理と、前記ベクトル演算のデスティネーションレジスタに割り当てられた物理レジスタに代えて当該デスティネーションレジスタに新規物理レジスタを割り当てる割り当て設定処理と、を行い、
前記依存設定処理は、前記デスティネーションレジスタに前記新規物理レジスタを割り当てる前に割り当てられていた物理レジスタである変更前物理レジスタが依存していることを表す依存設定を行う、
情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサにかかり、特に、ベクトル演算を行うプロセッサに関する。
【背景技術】
【０００２】
近年、半導体プロセスの微細化によりＬＳＩ（Large-Scale Integrated circuit）に搭載できる論理回路は飛躍的に増加し、ＣＰＵ（Central Processing Unit）の演算性能は向上している。この演算性能の向上は、コア数を増加させるマルチコア化による寄与が大きく、単一コア当たりの性能向上は鈍化しつつある。しかしながら、マルチコア化による性能向上を享受するために必要な並列化が困難なプログラムも多数存在するため、単一コアの性能向上は必須である。
【０００３】
計算機システムにおいてその性能を向上させるためには、単位時間当たりに実行できる命令数を高めることが必要である。特に、持続的な性能（Sustained Performance）の向上のためには、命令発行レート（Instruction Issue Rate）を向上することが必要である。計算機システムにおいて、演算処理は一般にレジスタ間で行われるが、あるレジスタに対する命令を発行した後、同じレジスタが別の命令を実行できるようになるためには一定のマシンサイクルを必要とする。
【０００４】
単一コアの性能向上を行う手法として、以前より命令発行レートを上げ、性能向上させる技術として、レジスタリネーミングが広く知られている。レジスタリネーミングは、プログラムが前提とする個数よりも多くの個数のレジスタを用意しておき、プログラム上では同一のレジスタに対するものである複数の命令があるときに、命令の実行時において、プログラムで規定されているレジスタとは別のレジスタを用いるようにするものである。これにより、先行命令がリードするまで後続命令はライトすることができないといった、Write-After-Read(WAR)依存関係や、先行命令がライトするまで後続命令はライトすることができないといった、Write-after-Write(WAW)依存関係を、解消或いは緩和させることを意図したものである。
【０００５】
一般的に行われているレジスタリネーミングでは、ある演算結果を書き込むレジスタに別名を与え、リソースの依存性を緩和する。たとえば、命令Ａが論理リソースＸに対してデータを読み出している途中で、同一の論理リソースＸに対する書き込みを行う後続命令Ｂに関して、論理リソースＸに対して物理リソースＸ１、Ｘ２をそれぞれ命令Ａ、命令Ｂに割り当てておくことで、命令Ｂの実行によるデータの書きつぶしを防ぐことが可能となる。これは命令Ｂの発行制限の緩和を意味し、命令発行レートの向上が見込める。
【０００６】
しかしながら、レジスタリネーミングをベクトルプロセッサに適用しようとする場合には、ベクトルプロセッサには、命令ごとに何番目の要素まで演算をするかというベクトル長、および、要素ごとに計算の有無を切り替えるマスク機能が設けられており、単純にはレジスタリネーミングを実現できない、という課題がある。
【０００７】
たとえば、上述の命令Ｂにマスクがかかっていた場合、マスク対象の要素には、演算結果の元の値、すなわち命令Ａの実行結果の対応する要素を格納する必要がある。これは、演算がマスクされている以上、あるレジスタに既に書き込まれたデータが、あとに実行される命令で参照される可能性があるからである。
【０００８】
そのため、単純に複数の独立したリソースを命令Ａ、命令Ｂに割り当てるだけで不十分であり、そのリソース間での値の引渡しが必要となり、既存のレジスタリネーミング技術を単純に導入することができなかった。
【０００９】
ここで、ベクトルプロセッサによるレジスタリネーミングの技術として、以下のものがある。
【００１０】
特許文献１では、ベクトル命令で指定するベクトルレジスタ（論理レジスタ）とベクトルプロセッサが実際に有するベクトルレジスタ（物理レジスタ）とを１対１の関係で対応付けるのではなく、論理レジスタより多くの物理レジスタを用意しておき、ハードウェアで動的に論理レジスタ・物理レジスタ間の対応を管理することが提案されている。特許文献１によれば、同じ論理レジスタを複数のベクトル命令で指定したとしても、相異なる物理レジスタを割当てるので、ベクトル命令の実行が待たされることがなくなり、処理の高速化を図ることができる。
【００１１】
特許文献２では、データの要素毎にリネーミングのポインタリストを設ける手法が提案されている。特許文献２のリネーミング手法によれば、物理レジスタをデータの要素毎に自由にマッピングして、リネーミングレジスタのデータ部分の利用効率を向上させることができる。
【００１２】
特許文献３は、マスク付き演算とベクトル長の変化を考慮したベクトルレジスタのリネーミング手法に関するものであり、マスク付き演算の有無とベクトル長の比較結果とが条件を満たした場合には、デスティネーションとなる論理レジスタが一致する後続の命令に対して同一の物理レジスタを割り当てることが提案されている。特許文献３のリネーミング手法によれば、ベクトルレジスタの利用効率を向上させることができる。
【００１３】
特許文献４は、マスク付き演算とベクトル長の変化を考慮したベクトルレジスタのリネーミング手法に関するものであり、１つの論理レジスタに最大２つの物理レジスタを割りあてる手法が提案されている。特許文献４のリネーミング手法によれば、ベクトルレジスタの利用効率を向上させることができる。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開昭６１−２４１８７０号公報
【特許文献２】特開２００６−２６８１６８号公報
【特許文献３】特開２０１０−２０５０４９号公報
【特許文献４】特許第６０２０４２８号
【発明の概要】
【発明が解決しようとする課題】
【００１５】
しかしながら、上述した李ネーミング方法には、次のような課題がある。すなわち、一般的なプロセッサにおいてレジスタのデータ格納領域として採用されているレジスタファイル（ＲＦ：Register File）やＳＲＡＭ（Static Random Access Memory）を使用しつつ、マスク付き演算を考慮したベクトルレジスタリネーミング制御を実現することができないことである。
【００１６】
具体的に、上記特許文献１は、一般的なスカラプロセッサに使用されている技術の延長であり、ベクトルプロセッサに広く採用されているマスク付き演算やベクトル長が考慮されていない。このため、特許文献１の手法をベクトルプロセッサにそのまま適用することができない、という課題がある。
【００１７】
また、特許文献２では、データ部分の利用効率を向上する代わりに、ポインタリストなどのリネーミングレジスタ管理情報のゲート量が増大する。例えば、データ部分が６４ビット、物理レジスタが３２個、要素数２５６で構成された、３オペランド命令のアーキテクチャを仮定する。この場合、データ部分は６４ビット×２５６要素×３２個＝５１２Ｋビット必要であり、リネーミングレジスタ管理情報部分は３２個の物理レジスタを表すために５ビット×２５６要素×３２個×３オペランド＝１２０Ｋビット必要になる。データ部分と管理情報部分とを全てフリップフロップ（ＦＦ：Flip Flop）で構成する場合は、約４：１の割合になる。データ部分はフリップフロップと比較すると、一般的に記憶密度の高いレジスタファイルやＳＲＡＭ（数倍の記憶密度）で構成するため、データ部分と管理情報部分の割合が１：１程度或いはより悪化する可能性がある。そのため、要素数が大きい構成を採用する場合に、レジスタリネーミング管理情報のゲート量が大きな負担になる。
【００１８】
また、特許文献３では、マスク付き演算の有無とベクトル長を比較することで条件を満たした場合に、デスティネーションとなる論理レジスタが一致する後続の命令に対して同一の物理レジスタを割り当てる。特許文献３では、同一の物理レジスタを割り当ててしまうため、プログラムに記述された命令を実行する場合には、プログラムに記述された命令を順に実行する、イン・オーダー（In-Order）実行とする必要がある。プログラムに記述された命令の順序を変更して実行する、アウト・オブ・オーダー（Out-of-Order）実行ができず、イン・オーダーで命令を実行する必要があるため、レジスタのWAR依存関係を解消することができない。
【００１９】
また、特許文献４では、１つの論理レジスタに最大２つの物理レジスタを割りあて、マスク付き演算の有無とベクトル長を比較することで条件を満たした場合に、２つの物理レジスタのどちらか一方に新規の物理レジスタを割り当てる。特許文献４では、特許文献３で不可であったWAR依存関係の解消が可能となったが、１つの論理レジスタに２つの物理レジスタを割りあてるために、制御が複雑となり、また、ゲート量が大きくなるという課題がある。
【００２０】
このため、本発明の目的は、上述した課題である、マスク付き演算を考慮したベクトルレジスタリネーミングを最適化できていない、ということを解決することにある。
【課題を解決するための手段】
【００２１】
本発明の一形態であるプロセッサは、
１つの論理レジスタに１つの物理レジスタが割り当てられたベクトルレジスタと、
前記ベクトルレジスタが保持するデータに対してベクトル演算を行う演算器と、
前記ベクトル演算のソースレジスタに割り当てられた物理レジスタが依存していることを表す依存設定を行う依存設定部と、
前記ベクトル演算のデスティネーションレジスタに割り当てられた物理レジスタに代えて、当該デスティネーションレジスタに新規物理レジスタを割り当てる割り当て設定部と、
を備え、
前記依存設定部は、前記デスティネーションレジスタに前記新規物理レジスタを割り当てる前に割り当てられていた物理レジスタである変更前物理レジスタが依存していることを表す依存設定を行う、
という構成をとる。
【００２２】
本発明の一形態である制御装置は、
１つの論理レジスタに１つの物理レジスタが割り当てられたベクトルレジスタと、前記ベクトルレジスタが保持するデータに対してベクトル演算を行う演算器と、を備えたプロセッサを制御する制御装置であって、
前記ベクトル演算のソースレジスタに割り当てられた物理レジスタが依存していることを表す依存設定を行う依存設定部と、
前記ベクトル演算のデスティネーションレジスタに割り当てられた物理レジスタに代えて、当該デスティネーションレジスタに新規物理レジスタを割り当てる割り当て設定部と、
を備え、
前記依存設定部は、前記デスティネーションレジスタに前記新規物理レジスタを割り当てる前に割り当てられていた物理レジスタである変更前物理レジスタが依存していることを表す依存設定を行う、
という構成をとる。
【００２３】
本発明の一形態であるプログラムは、
１つの論理レジスタに１つの物理レジスタが割り当てられたベクトルレジスタと、前記ベクトルレジスタが保持するデータに対してベクトル演算を行う演算器と、を備えたプロセッサを制御する制御装置に、
前記ベクトル演算のソースレジスタに割り当てられた物理レジスタが依存していることを表す依存設定を行う依存設定部と、
前記ベクトル演算のデスティネーションレジスタに割り当てられた物理レジスタに代えて、当該デスティネーションレジスタに新規物理レジスタを割り当てる割り当て設定部と、
を実現させると共に、
前記依存設定部は、前記デスティネーションレジスタに前記新規物理レジスタを割り当てる前に割り当てられていた物理レジスタである変更前物理レジスタが依存していることを表す依存設定を行う、
ことを実現させる、
という構成をとる。
【００２４】
本発明の一形態である情報処理方法は、
１つの論理レジスタに１つの物理レジスタが割り当てられたベクトルレジスタと、
前記ベクトルレジスタが保持するデータに対してベクトル演算を行う演算器と、を備えたプロセッサによる情報処理方法であって、
前記ベクトル演算のソースレジスタに割り当てられた物理レジスタが依存していることを表す依存設定処理と、前記ベクトル演算のデスティネーションレジスタに割り当てられた物理レジスタに代えて当該デスティネーションレジスタに新規物理レジスタを割り当てる割り当て設定処理と、を行い、
前記依存設定処理は、前記デスティネーションレジスタに前記新規物理レジスタを割り当てる前に割り当てられていた物理レジスタである変更前物理レジスタが依存していることを表す依存設定を行う、
という構成をとる。
【発明の効果】
【００２５】
本発明は、以上のように構成されることにより、マスク付き演算を考慮したベクトルレジスタリネーミングを最適化することができる。
【図面の簡単な説明】
【００２６】
【図１】本発明の実施形態１におけるベクトル計算機の構成を示すブロック図である。
【図２Ａ】マスク演算ありの場合におけるベクトル演算の様子を示す図である。
【図２Ｂ】マスク演算なしの場合におけるベクトル演算の様子を示す図である。
【図３Ａ】論理レジスタ管理テーブルの状態の一例を示す図である。
【図３Ｂ】論理レジスタ管理テーブルの状態の一例を示す図である。
【図４Ａ】物理レジスタ管理テーブルの状態の一例を示す図である。
【図４Ｂ】物理レジスタ管理テーブルの状態の一例を示す図である。
【図４Ｃ】物理レジスタ管理テーブルの状態の一例を示す図である。
【図４Ｄ】物理レジスタ管理テーブルの状態の一例を示す図である。
【図４Ｅ】物理レジスタ管理テーブルの状態の一例を示す図である。
【図５】命令毎の物理レジスタ管理テーブルの状態の一例を示す図である。
【図６】本発明の実施形態２におけるプロセッサの構成を示すブロック図である。
【発明を実施するための形態】
【００２７】
＜実施形態１＞
本発明の第１の実施形態を、図１乃至図５を参照して説明する。図１は、ベクトルプロセッサの構成を説明するための図であり、図２乃至図５は、ベクトルプロセッサの動作を説明するための図である。
【００２８】
［構成］
図１に示すように、本実施形態におけるベクトル計算機は、ベクトルプロセッサ１０と、メインメモリ２０と、を有する。ベクトルプロセッサ１０は、ベクトルロード、ベクトルストア、ベクトル演算といった「ベクトル命令」を処理するプロセッサである。ベクトルプロセッサ１０の主な機能としては、ベクトルロード命令に応答して、ベクトルデータをメインメモリ２０から読み出す。また、ベクトルストア命令に応答して、ベクトルデータをメインメモリ２０に書き込む。また、ベクトル演算命令に応答して、ベクトルデータを用いてベクトル演算を行う。
【００２９】
そして、本実施形態におけるベクトルプロセッサ１０は、命令制御部１００と、演算部２００とを有する。
【００３０】
命令制御部１００は、命令供給部１１０と、命令発行制御部１１１と、レジスタリネーミング制御部１１２と、命令実行制御部１１３と、を有する。演算部２００は、複数のベクトルレジスタからなるベクトルレジスタ群２１０と、リード選択部２１１と、演算器群２１２と、ライト選択部２１３と、を有する。なお、上記命令制御部１００（制御装置）が備える各部１１０，１１１，１１２，１１３は、演算装置がプログラムを実行することで実現される。
【００３１】
上記命令供給部１１０は、ベクトル命令を、信号線を介して命令発行制御部１１１へ発行し、また、ベクトル命令を、信号線を介してレジスタリネーミング制御部１１２へ発行する。
【００３２】
上記レジスタリネーミング制御部１１２（割り当て設定部、依存設定部）は、図３Ａに示すような論理レジスタ管理テーブルと、図４Ａに示すような物理レジスタ管理テーブルと、を有する。そして、レジスタリネーミング制御部１１２は、図３Ａの論理レジスタ管理テーブルに示すように、１つの論理ベクトルレジスタに対し、１つの物理レジスタを割り当てている。これに伴い、レジスタリネーミング制御部１１２は、論理レジスタに対する物理レジスタの割り当ての変更も行う。さらに、レジスタリネーミング制御部１１２は、物理レジスタが依存していることを表す依存設定を行う。なお、これらレジスタリネーミング制御部１１２の処理については後述する。
【００３３】
上記命令発行制御部１１１は、図５に示すような命令毎の物理レジスタ管理テーブルを有する。そして、命令発行制御部１１１は、この命令毎の物理レジスタ管理テーブルを参照して、依存している各物理レジスタに設定され、当該物理レジスタが保持するデータの準備が整ったことを示すレディフラグが全て「１」になった場合に、信号線を介して命令実行制御部１１３へ命令を発行する。
【００３４】
上記命令実行制御部１１３（制御部）は、命令毎の物理レジスタ管理テーブルの情報に従って信号線を介して、演算部２００の制御を行う。
【００３５】
演算部２００では、上記ベクトルレジスタ群２１０からリードされたデータは、信号線を介してリード選択部２１１へ出力される。そして、上記リード選択部２１１は、信号線を介して演算器群２１２へデータを出力する。上記演算器群２１２は、演算結果を、信号線を介してライト選択部２１３へ出力する。上記ライト選択部２１３は演算結果を、信号線を介してベクトルレジスタ群２１０へ出力する。
【００３６】
ここで、本実施形態では、ベクトルレジスタ群２１０は、論理レジスタが８個（Ｖ０〜Ｖ７）、物理レジスタが３２個（ＶＲ０〜ＶＲ３１）、マスクレジスタが１個、で構成されるものとして説明する。なお、各レジスタの要素数は２５６である。
【００３７】
次に、上述したベクトルプロセッサ１０の構成による詳細な機能を説明する。以下では、ベクトル命令を実行可能なプロセッサが、３オペランド形式の命令を実行する場合を例に説明を行う。
【００３８】
例えば、マスク演算ありベクトル加算命令ＶＡＤＤＭ  Ｖ０←Ｖ１＋Ｖ２の場合に、Ｖ０：デスティネーションレジスタ、Ｖ１・Ｖ２：ソースレジスタとする。マスク演算ありベクトル加算命令ＶＡＤＤＭ  Ｖ０←Ｖ１＋Ｖ２、ベクトル長＝ＶＬｎを例にすると、上述した各構成は、以下のように処理を実行する機能を有する。
【００３９】
＜論理レジスタと物理レジスタの管理＞
レジスタリネーミング制御部１１２は、図３Ａに示すように、１つの論理ベクトルレジスタに対し１つの物理レジスタを割り当てる。例えば、論理レジスタＶ０に対して物理レジスタＶＲ０を割り当てたとき、Ｖ０＝（ＶＲ０）と記述することとする。
【００４０】
＜デスティネーションレジスタに対する新規物理レジスタ割り当て＞
レジスタリネーミング制御部１１２は、実行する命令がベクトル加算命令のようにレジスタへのライトを行う命令の場合には、現在のデスティネーションレジスタＶ０に割り当てられている物理レジスタ（ＶＲ０）に対して、新たな物理レジスタ（ＶＲｎ）を割り当てる。つまり、論理レジスタＶｄ＝（ＶＲａ）と割り当てられている場合に、論理レジスタＶｄに、新たな物理レジスタ（ＶＲｎ）を割り当てる。
【００４１】
＜ソースレジスタ依存関係生成＞
レジスタリネーミング制御部１１２は、実行する命令がベクトル加算命令のようにソースレジスタを使用する場合には、ソースレジスタである論理レジスタＶｓ１に物理レジスタＶＲｃが割り当てられているときには、当該割り当てられている物理レジスタＶＲｃに依存関係を生成する。つまり、ソースレジスタに割り当てられた物理レジスタＶＲｃが依存することを表すよう、依存設定を行う。リードするオペランドが２個以上の場合には、それぞれのソースレジスタに割り当てられる物理レジスタに対しても、依存設定を行う。本実施形態では、演算に使用するソースレジスタＶ１に対して物理レジスタＶＲ１を割り当ててＶ１＝（ＶＲ１）と記述し、ＶＲ１に対して依存関係を生成する。また、演算に使用するソースレジスタＶ２＝（ＶＲ２）と割り当てられている物理レジスタをリードする場合に対しても、同様にＶＲ２に対して依存関係を生成する。
【００４２】
そして、上述した物理レジスタに対する依存設定は、後述する図５に示すように、命令毎の物理レジスタ管理テーブルにおいて、ソースレジスタに割り当てられた依存している各物理レジスタに「レディフラグ」を設定する。このレディフラグは、物理レジスタが保持するデータの準備が整ったことを示すフラグで有り、当該データの準備が整うと「１」に設定される。
【００４３】
＜デスティネーションレジスタ依存関係生成＞
レジスタリネーミング制御部１１２は、実行する命令がベクトル加算命令のようにレジスタへのライトを行う命令の場合には、マスク付き演算とベクトル長を考慮するため、特定のケースでデスティネーションレジスタの依存関係生成を行う。依存関係が必要になるケースは、「マスク演算あり命令」の場合と、「マスク演算なし命令、かつ、ＶＬｎ＜最大ベクトル長」の場合である。
【００４４】
ここで、マスク演算ありの場合は、マスク＝０になっているデスティネーションレジスタの非更新要素を保持する必要がある。つまり、元のデスティネーションレジスタからデータコピーを行い、データの整合をとる必要がある。このため、上述したようにデスティネーションレジスタに物理レジスタ（ＶＲａ）が割り当てられている場合に、変更して新たに物理レジスタ（ＶＲｎ）を割り当てた場合には、変更前の物理レジスタ（ＶＲａ）に対して依存関係を生成する。つまり、デスティネーションレジスタに対して変更前に割り当てられていた物理レジスタＶＲａが依存することを表すよう、依存設定を行う。例えば、依存設定は、後述する図５に示すように、命令毎の物理レジスタ管理テーブルにおいて、変更前のレジスタ（ＶＲａ）に「レディフラグ」を設定する。
【００４５】
なお、ＶＬｎ＜最大ベクトル長の場合は、マスク付き演算の有無にかかわらず依存関係生成が必要になる。つまり、ＶＬｎから最大ベクトル長までの間におけるデスティネーションレジスタの非更新要素を保持する必要があるため、元のデスティネーションレジスタからデータコピーを行い、データの整合をとる必要がある。この必要性からも、上述したように、デスティネーションレジスタに対する割り当ての変更前の物理レジスタに、依存関係を生成する。
【００４６】
［動作］
次に、上述したベクトルプロセッサ１０の動作を、主に、図２乃至図５を参照して説明する。なお、本実施例で利用する命令は、３オペランド形式であり、１つのデスティネーションレジスタと２つのソースレジスタを指定可能とする。例えば、マスク演算ありベクトル加算命令ＶＡＤＤＭ  Ｖ０←Ｖ１＋Ｖ２の場合に、Ｖ０：デスティネーションレジスタ、Ｖ１・Ｖ２：ソースレジスタとして、Ｖ１とＶ２を加算してＶ０へ格納するものとする。
【００４７】
ＶＡＤＤＭ命令は、マスク付き演算用のマスクレジスタが指定可能な命令であるが、ベクトルプロセッサが演算する命令には、マスク演算なしのＶＡＤＤ命令も存在し得る。また、ベクトル長（ＶＬ）（演算対象ベクトル長）は、ベクトル命令において１命令で処理する要素数、つまり、演算対象となるベクトル長を設定する値であり、図１には図示していないベクトル長設定レジスタの値を使用する。本実施例では、ベクトル長ＶＬ＝０〜２５６の値をとるものとする。なお、ベクトル長設定レジスタは、命令により自由に値の設定変更が可能である。
【００４８】
図２Ａを用いて、マスク演算ありベクトル加算命令ＶＡＤＤＭ  Ｖ０←Ｖ１＋Ｖ２、ベクトル長＝ＶＬ０、を実行した場合のレジスタの更新について説明する。図２Ａは、ベクトル長を考慮して、マスク演算ありベクトル加算命令ＶＡＤＤＭを実行した場合のベクトルレジスタ更新の一例を示す概念図である。図２Ａに示すように、ＶＬ０以内の要素は演算部分になり、ＶＬ０より大きい要素は非演算部分となる。
【００４９】
そして、演算部分のＶＬ０以内の要素の中で、マスクなしを表すマスク＝１の要素（演算対象の要素）は、Ｖ１＋Ｖ２の加算結果をＶ０に格納する。マスクありを表すマスク＝０の要素（演算対象外の要素）は、演算対象外で非更新要素となり、演算前Ｖ０の値つまり割り当てを変更前の物理レジスタの値を保持することとなる。
【００５０】
本実施例では、マスク演算ありベクトル加算命令ＶＡＤＤＭ  Ｖ０←Ｖ１＋Ｖ２のレジスタリネーミング動作を中心に説明する。なお、マスク演算なしベクトル加算命令ＶＡＤＤ  Ｖ０←Ｖ１＋Ｖ２の動作は、図２Ｂに示すように、マスク演算ありベクトル加算命令ＶＡＤＤＭ  Ｖ０←Ｖ１＋Ｖ２においてマスクが全て１に設定された動作に相当することとなる。つまり、ＶＬ０より大きい要素についてのみ、割り当てを変更前の物理レジスタの値を保持することとなる。
【００５１】
＜１．論理レジスタと物理レジスタの管理＞
まず、命令供給部１１０は、命令を、信号線を介して命令発行制御部１１１へ発行し、信号線を介してレジスタリネーミング制御部１１２へ発行する。
【００５２】
レジスタリネーミング制御部１１２は、図３Ａに示した論理レジスタ管理テーブルと図４Ａに示した物理レジスタ管理テーブルを有する。本実施例では、ベクトルレジスタ群２１０は、論理レジスタが８個（Ｖ０〜Ｖ７）、物理レジスタが３２個（ＶＲ０〜ＶＲ３１）、マスクレジスタ１個、から構成されるとする。
【００５３】
そして、レジスタリネーミング制御部１１２は、図３Ａに示すように、１つの論理ベクトルレジスタに対し、１つの物理レジスタを割り当てる。この場合、ソースレジスタＶ１，Ｖ２にそれぞれ物理レジスタＶＲ１，ＶＲ２が割り当てられており、Ｖ１＝（ＶＲ１）、Ｖ２＝（ＶＲ２）となっている。また、デスティネーションレジスタＶ０に物理レジスタＶＲ０が割り当てられており、Ｖ０＝（ＶＲ０）となっている。
【００５４】
＜２．デスティネーションレジスタに対する新規物理レジスタ割り当て＞
レジスタリネーミング制御部１１２に対して発行され、実行する命令が、ベクトル加算命令のようにレジスタへのライトを行う命令の場合に、新たな物理レジスタの割り当てが必要になる。例えば、論理レジスタＶｄ＝（ＶＲａ）と割り当てられている場合に、これから実行する命令のデスティネーションレジスタＶｄに新たに物理レジスタＶＲｎを割り当てる場合は、Ｖｄ＝（ＶＲｎ）となる。そして、新たに割り当てた物理レジスタＶＲｎに対して、ＶＬｎ部分のみ演算し、結果を格納する。
【００５５】
より具体的に、例えば、ＶＡＤＤＭ  Ｖ０←Ｖ１＋Ｖ２、ＶＬｎ＝２３０の場合について説明する。このとき、デスティネーションレジスタはＶ０になる。図３Ａに示した論理レジスタ管理テーブルを参照し、論理レジスタＶ０＝（ＶＲ０）の情報を得る。次に、図４Ａに示した物理レジスタ管理テーブルを参照し、有効ビット＝０である未使用の物理レジスタＶＲｎを検索し、ＶＲ８が有効ビット＝０になっているのでＶＲｎ＝ＶＲ８を新たに割り当てる。
【００５６】
その後、物理レジスタ管理テーブルの情報を更新する。物理レジスタのＶＲ８の有効ビット＝１にし、ＶＲ８を論理レジスタＶ０として使用するために、論理レジスタとして使用フラグ＝１にし、これまでＶ０に割り当てられていたＶＲ０の論理レジスタとして使用フラグ＝０に変更する。上記操作により、物理レジスタ管理テーブルを図４Ａから図４Ｂの状態に更新する。また、論理レジスタＶ０＝（ＶＲ８）に変更するため、論理レジスタ管理テーブルのＶ０を更新する。上記操作により、論理レジスタ管理テーブルを図３Ａから図３Ｂの状態に更新する。
【００５７】
上記操作により、デスティネーションレジスタＶ０に新規に割り当てられた物理レジスタ（新規物理レジスタ）はＶＲ８となり、この物理レジスタＶＲ８が割り当てられる前にデスティネーションレジスタＶ０に割り当てられていた物理レジスタ（変更前物理レジスタ）はＶＲ０となる。
【００５８】
＜３．ソースレジスタ依存関係生成＞
レジスタリネーミング制御部１１２に対して発行され、実行する命令がベクトル加算命令のようにソースレジスタを使用する場合について説明する。ソースレジスタである論理レジスタＶｓ１＝（ＶＲｃ）と割り当てられている場合に、ＶＲｃに対して依存関係を生成する。リードするオペランドが２個の場合に、ソースレジスタである論理レジスタＶｓ２に対しても同様である。これにより、ソースレジスタに割り当てられた物理レジスタに依存関係を生成する。
【００５９】
例えば、ＶＡＤＤＭ  Ｖ０←Ｖ１＋Ｖ２、ＶＬｎ＝２３０の場合について説明する。このとき、まず、ソースレジスタはＶ１とＶ２になり、図３Ａに示した論理レジスタ管理テーブルを参照して、論理レジスタＶ１＝（ＶＲ１）と論理レジスタＶ２＝（ＶＲ２）の情報を得る。このため、物理レジスタＶＲ１，ＶＲ２に依存関係を生成する。例えば、図５に示すように、命令毎の物理レジスタ管理テーブルにおいて、物理レジスタＶＲ１，ＶＲ２に「レディフラグ」を設定する。レディフラグが設定された物理レジスタＶＲ１，ＶＲ２は、保持するデータの準備が整ったのちに利用されることとなる。
【００６０】
次に、図４Ｂに示した物理レジスタ管理テーブルを参照し、ＶＲ１、ＶＲ２の物理レジスタ参照命令数を＋１する。物理レジスタ参照命令数は、物理レジスタを参照する命令の場合に＋１、物理レジスタを参照する命令が終了した場合に−１する。これにより、物理レジスタを参照している命令が存在するかを判断できる。物理レジスタ参照命令数＝０の場合は、どの命令からも参照されていないことを示す。上記操作により、物理レジスタ管理テーブルを図４Ｂから図４Ｃの状態に更新する。
【００６１】
＜４．デスティネーションレジスタ依存関係生成＞
レジスタリネーミング制御部１１２に対して発行され、実行する命令がベクトル加算命令のようにレジスタへのライトを行う命令の場合に、本実施形態のレジスタリネーミングでは、ベクトル長とマスク付き演算を考慮するため、デスティネーションレジスタの依存関係生成が必要になる。
【００６２】
ここで、マスク演算ありの場合は、マスク＝０になっているデスティネーションレジスタの非更新要素を保持する必要がある。つまり、デスティネーションレジスタに対する割り当てが変更される前の物理レジスタからデータコピーを行い、データの整合をとる必要がある。また、マスク演算なし命令であっても、ＶＬｎ＜最大ベクトル長の場合は、ＶＬｎより大きいデータ部分は、変更される前の物理レジスタからデータのコピーが必要になる。このため、変更前の物理レジスタ（ＶＲａ）に対して依存関係を生成する。
【００６３】
例えば、ＶＡＤＤＭ  Ｖ０←Ｖ１＋Ｖ２、ＶＬｎ＝２３０の場合について説明する。デスティネーションレジスタはＶ０であり、当該Ｖ０に対する割り当ては、上述したように、物理レジスタＶＲ０からＶＲ８に変更されている。このため、変更前の物理レジスタＶＲ０の依存関係を生成する。例えば、図５に示す命令毎の物理レジスタ管理テーブルにおいて、変更前のレジスタ（ＶＲ０）に「レディフラグ」を設定する。レディフラグが設定された物理レジスタＶＲ０は、保持するデータの準備が整ったのちに利用されることとなる。
【００６４】
次に、図４Ｃに示した物理レジスタ管理テーブルを参照し、ＶＲ０の物理レジスタ参照命令数を＋１する。上記操作により、物理レジスタ管理テーブルを図４Ｃから図４Ｄの状態に更新する。
【００６５】
レジスタリネーミング制御部１１２で上記＜１．＞から＜４．＞の処理を行い、レジスタリネーミングの処理が終わると、信号線を介して命令発行制御部１１１に通知する。命令発行制御部１１１は、図５に示した命令毎の物理レジスタ管理テーブルを有しており、通知する情報は、レジスタリネーミング処理により決定した物理レジスタ情報であり、命令毎の物理レジスタ管理テーブルへの入力データとなる。このため、図５の命令毎の物理レジスタ管理テーブルに示すように、依存関係が生成された物理レジスタであるＶＲ１，ＶＲ２，ＶＲ０に対してフラグが設定される。また、この時、マスク＝０およびVLｎより大きい要素に対するコピー命令を生成する。
【００６６】
＜５．命令の実行と終了＞
命令発行制御部１１１は、各命令において、図５に示した命令毎の物理レジスタ管理テーブルを調べ、各命令に設定されている各物理レジスタのレディフラグが全て１になった場合に、信号線を介して命令実行制御部１１３へ命令を発行する。つまり、命令発行制御部１１１は、まず、各物理レジスタの状態を監視し、当該物理レジスタが保持するデータの準備が整ったこと検出した場合に、その物理レジスタに設定されているレディフラグを１にする。そして、該当する命令に設定されている全てのレディフラグが１になると、命令実行制御部１１３へ命令を発行する。
【００６７】
命令実行制御部１１３は、命令毎の物理レジスタ管理テーブルの情報に従って、信号線を介して演算部２００の制御を行う。
【００６８】
そして、演算部２００は、命令実行制御部１１３によって制御されることで、ベクトル演算を実行する。例えば、ＶＡＤＤＭ  Ｖ０←Ｖ１＋Ｖ２、ＶＬｎ＝２３０の場合について説明する。
【００６９】
なお、図５に示すように、命令は、
ＶＡＤＤＭ  ＶＲ８←ＶＲ１＋ＶＲ２、ＶＬｎ＝２３０
及び
ＶＣＯＰＹ  ＶＲ８←ＶＲ０、ＶＬｎ＝２３０
に分解される。
【００７０】
演算部２００は、図５の命令毎の物理レジスタ管理テーブルに従い、ＶＡＤＤＭの命令の実行を行う。具体的には、まず、ソースレジスタＶ１に割り当てられたＶＲ１のデータ、Ｖ２に割り当てられたＶＲ２のデータ、及び、マスクレジスタを、ベクトルレジスタ群２１０からリードし、信号線を介してリード選択部２１１へ出力する。
【００７１】
リード選択部２１１は、信号線を介して演算器群２１２へデータを出力する。演算器は、ＶＬｎ以内のデータかつマスク＝１の場合は、ＶＲ１＋ＶＲ２の加算を行う。そして、演算器群２１２は、演算結果を信号線を介してライト選択部２１３へ出力する。なお、ＶＬｎより大きいデータは、非演算部分となるため何もしない。
【００７２】
ライト選択部２１３は信号線２２３を介して、演算結果をベクトルレジスタ群２１０へ出力する。デスティネーションレジスタ（ライト）はＶＲ８であるため、ＶＲ８へ出力をライトする。これにより、デスティネーションレジスタに割り当てられた新規物理レジスタＶＲ８のうちマスク演算が設定されていない演算対象の要素に対しては、ＶＲ１＋ＶＲ２の演算結果が格納される。つまり、図２Ａにおいては、ＶＬ０以内のマスク＝１の要素に、ＶＲ１＋ＶＲ２の演算結果が格納される。
【００７３】
命令実行制御部１１３は、命令が終了すると信号線を介して命令発行制御部１１１へ通知する。この通知により、命令発行制御部１１１は、図５に示したエントリ番号０の有効ビットを１から０へ変更する。
【００７４】
また、命令実行制御部１１３は、信号線を介してレジスタリネーミング制御部１１２へ通知する。レジスタリネーミング制御部１１２は、ＶＲ１、ＶＲ２の物理レジスタ参照命令数を−１する。ここで、論理レジスタとして使用フラグ＝０かつ物理レジスタ参照命令数＝０の物理レジスタは解放可能となり、有効ビット＝０にする。
【００７５】
また、演算部２００は、図５の命令毎の物理レジスタ管理テーブルより、ＶＣＯＰＹの命令の実行を行う。具体的には、デスティネーションレジスタに対する割り当ての変更前のＶＲ０のデータ、及び、マスクレジスタを、ベクトルレジスタ群２１０からリードし、信号線を介してリード選択部２１１へ出力する。リード選択部２１１は、信号線を介して、演算器群２１２へデータを出力する。
【００７６】
演算器は、ＶＬｎ以上のデータの場合、または、ＶＬｎ以内のデータかつマスク＝０の場合は、ＶＲ０のデータをそのまま出力する。演算器群２１２は、演算結果を信号線を介して、ライト選択部２１３へ出力する。ライト選択部２１３は、信号線を介して、演算結果をベクトルレジスタ群２１０へ出力する。デスティネーションレジスタ（ライト）はＶＲ８であるため、ＶＲ８へ出力をライトする。これにより、デスティネーションレジスタに割り当てられた新規物理レジスタＶＲ８のうちマスク演算が設定されている演算対象外の要素、及び、ＶＬｎ以上の演算対象外の要素に対しては、ＶＲ０のデータが格納される。つまり、図２Ａにおいては、ＶＬ０以内のマスク＝０の要素、及び、ＶＬ０より大きい要素に、ＶＲ０のデータがそのまま格納される。
【００７７】
命令実行制御部１１３は、命令が終了すると、信号線を介して命令発行制御部１１１へ通知する。この通知により、図５に示したエントリ番号０の有効ビットを１から０へ変更する。
【００７８】
また、命令実行制御部１１３は、信号線を介してレジスタリネーミング制御部１１２へ通知する。レジスタリネーミング制御部１１２は、ＶＲ０の物理レジスタ参照命令数を−１する。ここで、論理レジスタとして使用フラグ＝０かつ物理レジスタ参照命令数＝０の物理レジスタは解放可能となり、有効ビット＝０にする。上記操作により、物理レジスタ管理テーブルを図４Ｄから図４Ｅの状態に更新する。
【００７９】
以上のように、図２Ａに示すようなマスク演算ありの命令では、まず、ＶＬ０以内のマスク＝１の要素には、ＶＲ１＋ＶＲ２の演算結果が格納される。そして、ＶＬ０以内のマスク＝０の要素及びＶＬ０より大きい要素には、ＶＲ０のデータがそのまま格納される。
【００８０】
また、図２Ｂに示すようなマスク演算なし命令の場合は、上述したマスク付き演算に関連する操作、つまり、ＶＬ０以内のマスク＝０の要素に対する操作は不要となる。このため、ＶＬ０以内の要素の全てには、ＶＲ１＋ＶＲ２の演算結果が格納され、ＶＬ０より大きい要素には、ＶＲ０のデータがそのまま格納される。
【００８１】
以上のように、本発明によると、ベクトル命令で、マスク付き演算の有無にかかわらず、かつ、ベクトル長が変化しても、レジスタリネーミングを行うことができる。このとき、単純な規則で、レジスタリネーミングにおけるデスティネーションレジスタの割り当てとレジスタ依存関係とを生成でき、制御が容易となる。
【００８２】
また、ベクトル命令のレジスタリネーミングに使用するデータ格納部分に専用の回路が不要であり、一般的なプロセッサで採用されているＲＦやＳＲＡＭを使用できる。また、必要最低限のレジスタ依存関係のみ生成するため、レジスタリネーミングによる不要な命令発行制限が発生しない。さらに、１個の論理レジスタに対して１個の物理レジスタの対応情報だけを制御情報として使用する。これにより、ベクトルレジスタのような１個の論理レジスタの中に複数のデータ要素を持つ場合に、レジスタリネーミング制御部のゲート量を節約できる。
【００８３】
また、上述した実施形態では、ベクトル命令を実行可能なプロセッサが、３オペランド形式の命令を実行する場合を例に説明を行ったが、本発明はこれに限られるものではない。他のオペランド形式の命令を実行する場合にも、本発明は適用できる。例えば、Fused Multiply ADD(FMA)命令で、ＶＦＭＡ  Ｖ０←Ｖ１＋（Ｖ２＊Ｖ３）を行う４オペランド形式でもよい。
【００８４】
また、本実施形態では、ベクトルプロセッサのベクトル命令で説明を行ったが、一般的なプロセッサにおいてマスク付き演算とベクトル長設定レジスタを持つＳＩＭＤ命令に使用するレジスタでも本実施形態と同様にレジスタネーミングが可能である。
【００８５】
また、上述した実施形態では、ベクトルレジスタ群２１０の論理レジスタが８個、物理レジスタが３２個、マスクレジスタが１個から構成される場合を例に説明したが、これらの個数は上記実施形態に限定されるものではない。
【００８６】
＜実施形態２＞
次に、本発明の第２の実施形態を、図６を参照して説明する。図６は、実施形態２におけるプロセッサの構成を示すブロック図である。なお、本実施形態におけるプロセッサは、実施形態１で説明したベクトルプロセッサの構成の概略を示している。
【００８７】
図６に示すプロセッサ３００は、１つの論理レジスタに１つの物理レジスタが割り当てられたベクトルレジスタ３１０と、ベクトルレジスタ３１０が保持するデータに対してベクトル演算を行う演算器３２０と、ベクトル演算のソースレジスタに割り当てられた物理レジスタが依存していることを表す依存設定を行う依存設定部３３０と、ベクトル演算のデスティネーションレジスタに割り当てられた物理レジスタに代えて、当該デスティネーションレジスタに新規物理レジスタを割り当てる割り当て設定部３４０と、を備える。
【００８８】
そして、上記依存設定部３３０は、デスティネーションレジスタに新規物理レジスタを割り当てる前に割り当てられていた物理レジスタである変更前物理レジスタが依存していることを表す依存設定を行う、という構成をとる。
【００８９】
上記構成のプロセッサによると、まず、ベクトル演算のソースレジスタに割り当てられた物理レジスタの依存関係が生成される。また、デスティネーションレジスタに新規物理レジスタを割り当てる前に割り当てられていた物理レジスタである変更前物理レジスタの依存関係が生成される。
【００９０】
これにより、依存関係にある各物理レジスタについては、データの準備が整った後に、ベクトル演算やデータコピーが行われる。このため、マスク付き演算と、ベクトル長の変化を考慮したベクトルプロセッサに適したベクトルレジスタのリネーミングを実現することができる。
【００９１】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明におけるプロセッサ、制御装置、プログラム、情報処理方法の構成の概略を説明する。但し、本発明は、以下の構成に限定されない。
【００９２】
（付記１）
１つの論理レジスタに１つの物理レジスタが割り当てられたベクトルレジスタと、
前記ベクトルレジスタが保持するデータに対してベクトル演算を行う演算器と、
前記ベクトル演算のソースレジスタに割り当てられた物理レジスタが依存していることを表す依存設定を行う依存設定部と、
前記ベクトル演算のデスティネーションレジスタに割り当てられた物理レジスタに代えて、当該デスティネーションレジスタに新規物理レジスタを割り当てる割り当て設定部と、
を備え、
前記依存設定部は、前記デスティネーションレジスタに前記新規物理レジスタを割り当てる前に割り当てられていた物理レジスタである変更前物理レジスタが依存していることを表す依存設定を行う、
プロセッサ。
【００９３】
（付記２）
付記１に記載のプロセッサであって、
前記演算器は、前記デスティネーションレジスタに割り当てられた前記新規物理レジスタに対して、前記ソースレジスタに割り当てられた物理レジスタが保持するデータの演算結果と、前記変更前物理レジスタが保持するデータと、を格納する、
プロセッサ。
【００９４】
（付記３）
付記２に記載のプロセッサであって、
前記演算器は、
前記デスティネーションレジスタに割り当てられた前記新規物理レジスタのうち前記ベクトル演算の演算対象として設定された要素に対して、前記ソースレジスタに割り当てられた物理レジスタが保持するデータの演算結果を格納すると共に、
前記新規物理レジスタのうち前記ベクトル演算の演算対象外として設定された要素に対して、前記変更前物理レジスタが保持するデータを格納する、
プロセッサ。
【００９５】
（付記４）
付記３に記載のプロセッサであって、
前記ベクトル演算は、演算対象外の要素を指定するマスク演算を含み、
前記演算器は、
前記デスティネーションレジスタに割り当てられた前記新規物理レジスタのうち前記マスク演算が設定されてない演算対象の要素に対して、前記ソースレジスタに割り当てられた物理レジスタが保持するデータの演算結果を格納し、
前記新規物理レジスタのうち前記マスク演算が設定されている演算対象外の要素に対して、前記変更前物理レジスタが保持するデータを格納する、
プロセッサ。
【００９６】
（付記５）
付記３又は４に記載のプロセッサであって、
前記ベクトル演算は、演算対象ベクトル長が設定されており、
前記演算器は、
前記デスティネーションレジスタに割り当てられた前記新規物理レジスタのうち前記演算対象ベクトル長以内である演算対象の要素に対して、前記ソースレジスタに割り当てられた物理レジスタが保持するデータの演算結果を格納し、
前記新規物理レジスタのうち前記演算対象ベクトル長を超える演算対象外の要素に対して、前記変更前物理レジスタが保持するデータを格納する、
プロセッサ。
【００９７】
（付記６）
付記１乃至５のいずれかに記載のプロセッサであって、
前記演算器は、前記依存設定が行われた、前記ソースレジスタに割り当てられた物理レジスタと、前記変更前物理レジスタと、に対するデータの準備が整った場合に、当該物理レジスタが保持するデータに対するベクトル演算を行う、
プロセッサ。
【００９８】
（付記７）
付記６に記載のプロセッサであって、
前記依存設定部は、前記ソースレジスタに割り当てられた物理レジスタと、前記変更前物理レジスタと、に対するデータの準備が整ったか否かを表すフラグを設定し、
前記演算器は、前記フラグに基づいて、前記ソースレジスタに割り当てられた物理レジスタと、前記変更前物理レジスタと、に対するデータの準備が整った場合に、当該物理レジスタが保持するデータに対するベクトル演算を行う、
プロセッサ。
【００９９】
（付記８）
１つの論理レジスタに１つの物理レジスタが割り当てられたベクトルレジスタと、前記ベクトルレジスタが保持するデータに対してベクトル演算を行う演算器と、を備えたプロセッサを制御する制御装置であって、
前記ベクトル演算のソースレジスタに割り当てられた物理レジスタが依存していることを表す依存設定を行う依存設定部と、
前記ベクトル演算のデスティネーションレジスタに割り当てられた物理レジスタに代えて、当該デスティネーションレジスタに新規物理レジスタを割り当てる割り当て設定部と、
を備え、
前記依存設定部は、前記デスティネーションレジスタに前記新規物理レジスタを割り当てる前に割り当てられていた物理レジスタである変更前物理レジスタが依存していることを表す依存設定を行う、
制御装置。
【０１００】
（付記８．１）
付記８に記載の制御装置であって、
前記演算器が、前記デスティネーションレジスタに割り当てられた前記新規物理レジスタに対して、前記ソースレジスタに割り当てられた物理レジスタが保持するデータの演算結果と、前記変更前物理レジスタが保持するデータと、を格納するよう制御する制御部を備えた、
制御装置。
【０１０１】
（付記８．２）
付記８．１に記載の制御装置であって、
前記制御部は、前記演算器が、前記デスティネーションレジスタに割り当てられた前記新規物理レジスタのうち前記ベクトル演算の演算対象として設定された要素に対して、前記ソースレジスタに割り当てられた物理レジスタが保持するデータの演算結果を格納すると共に、前記新規物理レジスタのうち前記ベクトル演算の演算対象外として設定された要素に対して、前記変更前物理レジスタが保持するデータを格納するよう制御する、
制御装置。
【０１０２】
（付記８．３）
付記８乃至８．２のいずれかに記載の制御装置であって、
前記制御部は、前記演算器が、前記依存設定が行われた、前記ソースレジスタに割り当てられた物理レジスタと、前記変更前物理レジスタと、に対するデータの準備が整った場合に、当該物理レジスタが保持するデータに対するベクトル演算を行うよう制御する、
制御装置。
【０１０３】
（付記８．４）
付記８．３に記載の制御装置であって、
前記依存設定部は、前記ソースレジスタに割り当てられた物理レジスタと、前記変更前物理レジスタと、に対するデータの準備が整ったか否かを表すフラグを設定し、
前記制御部は、前記演算器が、前記フラグに基づいて、前記ソースレジスタに割り当てられた物理レジスタと、前記変更前物理レジスタと、に対するデータの準備が整った場合に、当該物理レジスタが保持するデータに対するベクトル演算を行うよう制御する、
制御装置。
【０１０４】
（付記９）
１つの論理レジスタに１つの物理レジスタが割り当てられたベクトルレジスタと、前記ベクトルレジスタが保持するデータに対してベクトル演算を行う演算器と、を備えたプロセッサを制御する制御装置に、
前記ベクトル演算のソースレジスタに割り当てられた物理レジスタが依存していることを表す依存設定を行う依存設定部と、
前記ベクトル演算のデスティネーションレジスタに割り当てられた物理レジスタに代えて、当該デスティネーションレジスタに新規物理レジスタを割り当てる割り当て設定部と、
を実現させると共に、
前記依存設定部は、前記デスティネーションレジスタに前記新規物理レジスタを割り当てる前に割り当てられていた物理レジスタである変更前物理レジスタが依存していることを表す依存設定を行う、
ことを実現させるためのプログラム。
【０１０５】
（付記１０）
１つの論理レジスタに１つの物理レジスタが割り当てられたベクトルレジスタと、
前記ベクトルレジスタが保持するデータに対してベクトル演算を行う演算器と、を備えたプロセッサによる情報処理方法であって、
前記ベクトル演算のソースレジスタに割り当てられた物理レジスタが依存していることを表す依存設定処理と、前記ベクトル演算のデスティネーションレジスタに割り当てられた物理レジスタに代えて当該デスティネーションレジスタに新規物理レジスタを割り当てる割り当て設定処理と、を行い、
前記依存設定処理は、前記デスティネーションレジスタに前記新規物理レジスタを割り当てる前に割り当てられていた物理レジスタである変更前物理レジスタが依存していることを表す依存設定を行う、
情報処理方法。
【０１０６】
（付記１１）
付記１０に記載の情報処理方法であって、
前記演算器が、前記デスティネーションレジスタに割り当てられた前記新規物理レジスタに対して、前記ソースレジスタに割り当てられた物理レジスタが保持するデータの演算結果と、前記変更前物理レジスタが保持するデータと、を格納する、
情報処理方法。
【０１０７】
（付記１２）
付記１１に記載の情報処理方法であって、
前記演算器が、
前記デスティネーションレジスタに割り当てられた前記新規物理レジスタのうち前記ベクトル演算の演算対象として設定された要素に対して、前記ソースレジスタに割り当てられた物理レジスタが保持するデータの演算結果を格納すると共に、
前記新規物理レジスタのうち前記ベクトル演算の演算対象外として設定された要素に対して、前記変更前物理レジスタが保持するデータを格納する、
情報処理方法。
【０１０８】
（付記１３）
付記１２に記載の情報処理方法であって、
前記ベクトル演算は、演算対象外の要素を指定するマスク演算を含み、
前記演算器が、
前記デスティネーションレジスタに割り当てられた前記新規物理レジスタのうち前記マスク演算が設定されてない演算対象の要素に対して、前記ソースレジスタに割り当てられた物理レジスタが保持するデータの演算結果を格納し、
前記新規物理レジスタのうち前記マスク演算が設定されている演算対象外の要素に対して、前記変更前物理レジスタが保持するデータを格納する、
情報処理方法。
【０１０９】
（付記１４）
付記１２又は１３に記載の情報処理方法であって、
前記ベクトル演算は、演算対象ベクトル長が設定されており、
前記演算器が、
前記デスティネーションレジスタに割り当てられた前記新規物理レジスタのうち前記演算対象ベクトル長以内である演算対象の要素に対して、前記ソースレジスタに割り当てられた物理レジスタが保持するデータの演算結果を格納し、
前記新規物理レジスタのうち前記演算対象ベクトル長を超える演算対象外の要素に対して、前記変更前物理レジスタが保持するデータを格納する、
情報処理方法。
【０１１０】
（付記１５）
付記１０乃至１４のいずれかに記載の情報処理方法であって、
前記演算器が、前記依存設定が行われた、前記ソースレジスタに割り当てられた物理レジスタと、前記変更前物理レジスタと、に対するデータの準備が整った場合に、当該物理レジスタが保持するデータに対するベクトル演算を行う、
情報処理方法。
【０１１１】
（付記１６）
付記１５に記載の情報処理方法であって、
前記依存設定処理は、前記ソースレジスタに割り当てられた物理レジスタと、前記変更前物理レジスタと、に対するデータの準備が整ったか否かを表すフラグを設定し、
前記演算器が、前記フラグに基づいて、前記ソースレジスタに割り当てられた物理レジスタと、前記変更前物理レジスタと、に対するデータの準備が整った場合に、当該物理レジスタが保持するデータに対するベクトル演算を行う、
情報処理方法。
【０１１２】
なお、上述したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されている。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【０１１３】
以上、上記実施形態等を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることができる。
【符号の説明】
【０１１４】
１０  ベクトルプロセッサ
２０  メインメモリ
１００  命令制御部
１１１  命令発行制御部
１１２  レジスタリネーミング制御部
１１３  命令実行制御部
２００  演算部
２１０  ベクトルレジスタ群
２１１  リード選択部
２１２  演算器群
２１３  ライト選択部
【図１】
2018169838.tif 000003
【図２Ａ】
2018169838.tif 000004
【図２Ｂ】
2018169838.tif 000005
【図３Ａ】
2018169838.tif 000006
【図３Ｂ】
2018169838.tif 000007
【図４Ａ】
2018169838.tif 000008
【図４Ｂ】
2018169838.tif 000009
【図４Ｃ】
2018169838.tif 000010
【図４Ｄ】
2018169838.tif 000011
【図４Ｅ】
2018169838.tif 000012
【図５】
2018169838.tif 000013
【図６】
2018169838.tif 000014