説明

ベクトルプロセッサ及びベクトル命令発行方法

【課題】レジスタリネーミングを行うベクトルプロセッサにおいて、レジスタ資源の利用効率を向上させること。
【解決手段】リネーミングテーブル管理部は、ベクトル命令で指定される論理ベクトルレジスタに仮想ベクトルレジスタを割り当て、当該論理ベクトルレジスタと割り当てられた仮想ベクトルレジスタとの対応関係を示すリネーミングテーブルを管理する。ポインタリスト管理部は、上記割り当てられた仮想ベクトルレジスタの各要素毎に物理レジスタ上の任意のデータ領域を割り当て、各要素と割り当てられたデータ領域との対応関係を示すポインタリストを管理する。リネーミング部は、ベクトル命令で指定される論理ベクトルレジスタを、リネーミングテーブルで示される仮想ベクトルレジスタに置換する。命令発行部は、リネーミング処理後のベクトル命令で指定される仮想ベクトルレジスタと上記ポインタリストとに基づいて、リネーミング処理後のベクトル命令をベクトル演算部に対して発行する命令発行処理を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、レジスタリネーミングを行うベクトルプロセッサ、及びベクトルプロセッサにおけるベクトル命令発行方法に関する。
【背景技術】
【0002】
計算機システムの性能を向上させるためには、プロセッサによって単位時間当たりに実行される命令数を増やすことが重要である。例えば、プロセッサに対する一連の命令が、第1のレジスタを用いる第1の命令と、同じ第1のレジスタを用いる第2の命令を含んでいる場合を考える。このとき、第1の命令と第2の命令との間に依存関係が無ければ、第1のレジスタと異なる第2のレジスタを用いるように第2の命令を変更することによって、第1の命令と第2の命令を同時並列に実行することが可能となる。このように、命令発行時に、当該命令で指定されるレジスタを別のレジスタに変更することは、「レジスタリネーミング(register renaming)」と呼ばれている。レジスタリネーミングは、命令発行レートを向上させるための技術として有用である(特許文献1、特許文献2、特許文献3、及び特許文献4参照)。
【0003】
また、複数要素からなるベクトルデータに対してベクトル演算を行うベクトルプロセッサ(ベクトル型プロセッサ)が知られている。ベクトルプロセッサは、ベクトル命令に従って、ベクトルレジスタを用いることによってベクトル演算を行う。
【0004】
一般的に、ベクトルプロセッサは「マスク演算機能」を有している(特許文献2、特許文献3、及び特許文献4参照)。マスク演算では、演算結果であるベクトルデータのうち指定された要素がマスクされ、マスクされた要素は書き込み先のベクトルレジスタには書き込まれない。つまり、ベクトルレジスタへの格納可否が、要素単位で指定される。マスク演算を指示する命令は「マスク付ベクトル演算命令」と呼ばれ、マスクされる要素を指定するデータは「マスクデータ」と呼ばれる。マスク付ベクトル演算命令の場合、ベクトルプロセッサは、マスクデータを用いてマスク演算を行う。
【0005】
例えば、ループ中に条件分岐が含まれる処理をベクトル化するためには、このマスク演算が必要である。一方では、第1の条件に適合する要素をマスクせず、第2の条件に適合する要素をマスクするマスクデータが用いられ、第1の条件の場合の演算結果が指定されたベクトルレジスタに書き込まれる。他方では、第2の条件に適合する要素をマスクせず、第1の条件に適合する要素をマスクするマスクデータが用いられ、第2の条件の場合の演算結果が同じベクトルレジスタに書き込まれる。すなわち、条件分岐に応じたマスクデータを反転させることにより、それぞれの条件の場合の演算結果が同一のベクトルレジスタに書き込まれる。
【0006】
このように、マスク付ベクトル演算命令の場合、マスクされた要素に関しては、指定されたベクトルレジスタに既に格納されている値をそのまま保持する必要がある。従って、指定されたベクトルレジスタを無闇に変更することはできない。すなわち、上述のレジスタリネーミングを単純にベクトルプロセッサに適用することはできない。
【0007】
ベクトルプロセッサにおけるレジスタリネーミングに関連する技術として、次のものが知られている。
【0008】
特許文献2に記載されたベクトル命令管理回路は、ベクトルレジスタリネーミング手段を備えている。ベクトルレジスタリネーミング手段は、ベクトル命令で指定される論理ベクトルレジスタを、予め規定されている割り当て表に従って、物理ベクトルレジスタに置換する。その割り当て表において、1つの論理ベクトルレジスタには物理ベクトルレジスタ群が割り当てられ、且つ、異なる論理ベクトルレジスタには異なる物理ベクトルレジスタ群が割り当てられる。同一の論理ベクトルレジスタに対する書き込みを行っている先行ベクトル命令が存在する場合、後続ベクトル命令の論理ベクトルレジスタは、次の方針に従って置換される。後続ベクトル命令のマスクフラグが有効を示しているか、あるいは、後続ベクトル命令のベクトル長が先行ベクトル命令のベクトル長以下の場合、後続ベクトル命令の論理ベクトルレジスタは、先行ベクトル命令に対するものと同じ物理ベクトルレジスタに置換される。一方、後続ベクトル命令のマスクフラグが有効を示しておらず、且つ、後続ベクトル命令のベクトル長が先行ベクトル命令のベクトル長より大きい場合、後続ベクトル命令の論理ベクトルレジスタは、先行ベクトル命令に対するものと異なる物理ベクトルレジスタに置換される。
【0009】
特許文献3に記載された技術によれば、1つの論理ベクトルレジスタに対して、複数のリネーミングレジスタが設けられる。1つの論理ベクトルレジスタと複数のリネーミングレジスタとの間の対応関係は固定されている。1つの論理ベクトルレジスタに対応付けられた複数のリネーミングレジスタは、相互に結合され、1つのセットを構成する。マスク演算に必要な値のコピーは、当該セット内で実現される。
【0010】
特許文献4に記載された情報処理装置は、複数の第1の記憶領域と、第2の記憶領域と、制御部と、を含む。複数の第1の記憶領域は、データを格納するための複数の第1の格納領域を備える。第2の記憶領域は、データを格納するための複数の第2の格納領域を備え、位置指定情報により第2の格納領域が指定される。制御部は、第1の格納領域の指定に用いる第1のデータと、第1のデータにより指定された第1の格納領域に対応する第2のデータとを合成して、上記位置指定情報を生成する。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】特開2004−303026号公報
【特許文献2】特開2006−268168号公報
【特許文献3】特開2007−334819号公報
【特許文献4】特開2008−83947号公報
【発明の概要】
【発明が解決しようとする課題】
【0012】
上述の通り、レジスタリネーミングは、命令発行レートを向上させるための技術として有用である。その一方で、通常のレジスタリネーミングを、マスク付ベクトル演算命令を処理するベクトルプロセッサに単純に適用することはできない。
【0013】
上述の関連技術では、1つの論理ベクトルレジスタは、あらかじめ複数の物理ベクトルレジスタと対応付けられる。そして、論理ベクトルレジスタの置換先をそれら複数の物理ベクトルレジスタの中で適切に調整することにより、マスク付ベクトル演算命令が処理される。あるいは、それら複数の物理ベクトルレジスタ間で値をコピーすることにより、マスク付ベクトル演算命令が処理される。しかしながら、1つの論理ベクトルレジスタと複数の物理ベクトルレジスタとの間の対応関係は固定されている。従って、ある物理ベクトルレジスタが空いていたとしても、その物理ベクトルレジスタを他の論理ベクトルレジスタのために使用することはできない。すなわち、レジスタ資源の利用効率が悪い。
【0014】
本発明の1つの目的は、レジスタリネーミングを行うベクトルプロセッサにおいて、レジスタ資源の利用効率を向上させることができる技術を提供することにある。
【課題を解決するための手段】
【0015】
本発明の第1の観点において、ベクトルプロセッサが提供される。そのベクトルプロセッサは、物理レジスタを有しベクトル演算を行うベクトル演算部と、命令発行制御部と、を備える。命令発行制御部は、リネーミングテーブル管理部と、ポインタリスト管理部と、リネーミング部と、命令発行部と、を備える。リネーミングテーブル管理部は、ベクトル命令で指定される論理ベクトルレジスタに仮想ベクトルレジスタを割り当て、当該論理ベクトルレジスタと割り当てられた仮想ベクトルレジスタとの対応関係を示すリネーミングテーブルを管理する。ポインタリスト管理部は、上記割り当てられた仮想ベクトルレジスタの各要素毎に物理レジスタ上の任意のデータ領域を割り当て、各要素と割り当てられたデータ領域との対応関係を示すポインタリストを管理する。リネーミング部は、ベクトル命令で指定される論理ベクトルレジスタを、リネーミングテーブルで示される仮想ベクトルレジスタに置換する。命令発行部は、リネーミング処理後のベクトル命令で指定される仮想ベクトルレジスタと上記ポインタリストとに基づいて、リネーミング処理後のベクトル命令をベクトル演算部に対して発行する命令発行処理を行う。
【0016】
本発明の第2の観点において、ベクトルプロセッサにおけるベクトル命令発行方法が提供される。ベクトルプロセッサは、物理レジスタを有しベクトル演算を行うベクトル演算部を備える。ベクトル命令発行方法は、(A)ベクトル命令で指定される論理ベクトルレジスタに仮想ベクトルレジスタを割り当て、当該論理ベクトルレジスタと割り当てられた仮想ベクトルレジスタとの対応関係を示すリネーミングテーブルを更新するステップと、(B)割り当てられた仮想ベクトルレジスタの各要素毎に物理レジスタ上の任意のデータ領域を割り当て、各要素と割り当てられたデータ領域との対応関係を示すポインタリストを更新するステップと、(C)ベクトル命令で指定される論理ベクトルレジスタを、リネーミングテーブルで示される仮想ベクトルレジスタに置換するリネーミング処理を行うステップと、(D)リネーミング処理後のベクトル命令で指定される仮想ベクトルレジスタと上記ポインタリストとに基づいて、リネーミング処理後のベクトル命令をベクトル演算部に対して発行するステップと、を含む。
【発明の効果】
【0017】
本発明によれば、レジスタリネーミングを行うベクトルプロセッサにおいて、レジスタ資源の利用効率を向上させることが可能となる。
【図面の簡単な説明】
【0018】
【図1】図1は、本発明の実施の形態に係るベクトル計算機の構成を概略的に示すブロック図である。
【図2】図2は、本発明の実施の形態におけるリネーミングテーブル、ポインタリスト、及び物理レジスタ間の関係を示す概念図である。
【図3】図3は、本発明の実施の形態に係るベクトルプロセッサの命令発行制御部の構成を示すブロック図である。
【図4】図4は、本発明の実施の形態に係るベクトルプロセッサの命令発行制御部による処理を示すフローチャートである。
【図5A】図5Aは、第1の処理例を説明するための状態遷移図である。
【図5B】図5Bは、第1の処理例を説明するための状態遷移図である。
【図5C】図5Cは、第1の処理例を説明するための状態遷移図である。
【図5D】図5Dは、第1の処理例を説明するための状態遷移図である。
【図5E】図5Eは、第1の処理例を説明するための状態遷移図である。
【図5F】図5Fは、第1の処理例を説明するための状態遷移図である。
【図5G】図5Gは、第1の処理例を説明するための状態遷移図である。
【図5H】図5Hは、第1の処理例を説明するための状態遷移図である。
【図5I】図5Iは、第1の処理例を説明するための状態遷移図である。
【図6A】図6Aは、第2の処理例を説明するための状態遷移図である。
【図6B】図6Bは、第2の処理例を説明するための状態遷移図である。
【図6C】図6Cは、第2の処理例を説明するための状態遷移図である。
【図6D】図6Dは、第2の処理例を説明するための状態遷移図である。
【図6E】図6Eは、第2の処理例を説明するための状態遷移図である。
【図6F】図6Fは、第2の処理例を説明するための状態遷移図である。
【図7A】図7Aは、第3の処理例を説明するための状態遷移図である。
【図7B】図7Bは、第3の処理例を説明するための状態遷移図である。
【図8A】図8Aは、第4の処理例を説明するための状態遷移図である。
【図8B】図8Bは、第4の処理例を説明するための状態遷移図である。
【図8C】図8Cは、第4の処理例を説明するための状態遷移図である。
【図8D】図8Dは、第4の処理例を説明するための状態遷移図である。
【図8E】図8Eは、第4の処理例を説明するための状態遷移図である。
【発明を実施するための形態】
【0019】
1.概要
図1は、本実施の形態に係るベクトル計算機1の構成を概略的に示している。ベクトル計算機1は、ベクトルプロセッサ10とメインメモリ20を備えている。ベクトルプロセッサ10は、ベクトルロード、ベクトルストア、ベクトル演算といった「ベクトル命令」を処理するプロセッサである。ベクトルロード命令に応答して、ベクトルプロセッサ10は、ベクトルデータをメインメモリ20から読み出す。ベクトルストア命令に応答して、ベクトルプロセッサ10は、ベクトルデータをメインメモリ20に書き込む。ベクトル演算命令に応答して、ベクトルプロセッサ10は、ベクトルデータを用いてベクトル演算を行う。
【0020】
ベクトルプロセッサ10は、命令発行制御部100とベクトル演算部200とを備えている。命令発行制御部100は、ベクトル命令に関してレジスタリネーミングやスケジューリングを行い、ベクトル演算部200に対するベクトル命令の発行を制御する。
【0021】
ベクトル演算部200は、命令発行制御部100によって発行されるベクトル命令に従って、ベクトルロード、ベクトルストア、ベクトル演算を行う。より詳細には、ベクトル演算部200は、一群の物理レジスタ210及び一群のベクトル演算器220を備えている。ベクトルロード命令に従って、ベクトル演算部200は、メインメモリ20から読み出されたベクトルデータを物理レジスタ210に格納する。ベクトルストア命令に従って、ベクトル演算部200は、物理レジスタ210からベクトルデータを読み出し、そのベクトルデータをメインメモリ20に書き込む。ベクトル演算命令に従って、ベクトル演算部200は、物理レジスタ210からベクトルデータを読み出し、そのベクトルデータをベクトル演算器220に送出し、ベクトル演算器220は、そのベクトルデータを用いてベクトル演算を実行し、ベクトル演算部200は、演算結果であるベクトルデータを物理レジスタ210に書き込む。
【0022】
次に、本実施の形態に係る命令発行制御部100の機能を概略的に説明する。ソフトウェアにより生成されるベクトル命令は、アクセス先の「論理ベクトルレジスタLR」を指定している。論理ベクトルレジスタLRは、ソフトウェアによって指定されるベクトルレジスタである。命令発行制御部100は、ベクトル命令を受け取ると、そのベクトル命令で指定されている論理ベクトルレジスタLRを、「仮想ベクトルレジスタVR」に置換する。すなわち、命令発行制御部100は、受け取ったベクトル命令に対してリネーミング処理を実施する。
【0023】
より詳細には、命令発行制御部100は、図2に示されるような「リネーミングテーブルREN」を有している。リネーミングテーブルRENは、論理ベクトルレジスタLRと仮想ベクトルレジスタVRとの間の対応関係を示すテーブルである。命令発行制御部100は、ベクトル命令において書き込み先として指定されている論理ベクトルレジスタLRに対し、任意の仮想ベクトルレジスタVRを割り当てる(関連付ける)。そして、命令発行制御部100は、その割り当てに応じてリネーミングテーブルRENを更新する。図2の例では、論理ベクトルレジスタLR0〜LR2は、それぞれ、仮想ベクトルレジスタVR0〜VR2に割り当てられている。このようなリネーミングテーブルRENを参照することにより、命令発行制御部100は、ベクトル命令で指定される論理ベクトルレジスタLRを、割り当てられた仮想ベクトルレジスタVRに置換することができる。
【0024】
尚、図2の例では、リネーミングテーブルRENは、論理ベクトルレジスタLRと割り当てられた仮想ベクトルレジスタVRとの対応関係を、「投機レベル」毎に示している。投機レベルとは、投機的実行(speculative execution)の最中に新たな投機的実行が実施される場合の、投機的実行の階層を意味する。投機的実行に関する詳細は後述される。
【0025】
論理ベクトルレジスタLRに仮想ベクトルレジスタVRが割り当てられると、命令発行制御部100は、更に、当該仮想ベクトルレジスタVRを物理レジスタ210に関連付ける。仮想ベクトルレジスタVRと物理レジスタ210との間の関係を示すのが「ポインタリストPNT」である。図2に示されるように、ポインタリストPNTは、仮想ベクトルレジスタVRの各要素毎に「物理アドレス(ポインタ)」を示している。物理アドレスは、物理レジスタ210上のデータ領域(データ格納領域)を指し示している。命令発行制御部100は、論理ベクトルレジスタLRに新たに仮想ベクトルレジスタVRが割り当てられると、当該仮想ベクトルレジスタVRの各要素毎に任意の物理アドレスを割り当て、ポインタリストPNTを更新する。
【0026】
例えば図2において、仮想ベクトルレジスタVR0の要素EL0〜EL3は、それぞれ、物理レジスタ210の物理アドレスAd00、Ad01、Ad02、及びAd07に割り当てられている。ここで、仮想ベクトルレジスタVRのそれぞれの要素の割り当て先は、物理レジスタ210上で必ずしも連続していないことに留意されたい。すなわち、本実施の形態では、物理レジスタ210は、仮想ベクトルレジスタVR単位の境界を持っておらず、全ての物理アドレスに対して同様にアクセスできるレジスタの集合となっている。仮想ベクトルレジスタVRは、要素単位で、物理レジスタ210上の任意のデータ領域に分散的に割り当て可能である。
【0027】
命令発行制御部100は、以上に説明されたリネーミングテーブルREN及びポインタリストPNTを有している。リネーミング処理において、命令発行制御部100は、リネーミングテーブルRENを参照して、ベクトル命令で指定される論理ベクトルレジスタLRを対応する仮想ベクトルレジスタVRに置換する。その仮想ベクトルレジスタVRに割り当てられている物理レジスタ210上の物理アドレスには、ポインタリストPNTに基づいてアクセス可能である。異なるベクトル命令が同一の論理ベクトルレジスタLRを指定している場合であっても、リネーム処理後のベクトル命令間で仮想ベクトルレジスタVRが異なっていれば、それらベクトル命令を同時並列的に実行することが可能である。
【0028】
本実施の形態では、論理ベクトルレジスタLRと物理レジスタ210との間の対応関係は固定されていないことに留意されたい。ある論理ベクトルレジスタLRには仮想ベクトルレジスタVRを介して物理レジスタ210上のデータ領域が割り当てられ、その割り当て先は要素単位で自由に変更可能である。従って、物理レジスタ210を無駄なく効率的に使用することが可能となる。すなわち、レジスタ資源の利用効率が向上する。
【0029】
2.命令発行制御部100
以下、図3及び図4を参照して、本実施の形態に係るベクトルプロセッサ10の命令発行制御部100を更に詳しく説明する。図3は、本実施の形態に係る命令発行制御部100の構成を示すブロック図である。命令発行制御部100は、リネーム前命令バッファ110、リネーミング部120、リネーミングテーブル管理部130、ポインタリスト管理部140、発行待ち命令バッファ150、命令発行部160、及びマスクデータ生成部170を備えている。図4は、本実施の形態に係る命令発行制御部100による処理を示すフローチャートである。
【0030】
ステップS10:
ソフトウェアにより生成されるベクトル命令は、アクセス先の論理ベクトルレジスタLRを指定している。リネーム前命令バッファ110は、そのベクトル命令COMを一旦蓄えておくためのFIFO(First-In First-Out)のバッファである。リネーミング部120は、リネーム前命令バッファ110よりベクトル命令COMを順番に読み出す。
【0031】
ステップS20:
リネーミング部120は、リネーム前命令バッファ110から読み出したベクトル命令COMを解析する。そして、リネーミング部120は、リネーミングテーブル管理部130に対して、仮想ベクトルレジスタVRの“割り当て”及び“通知”を要求する。より詳細には、リネーミング部120は、ベクトル命令COMにおいて書き込み先として指定されている論理ベクトルレジスタLRに任意の仮想ベクトルレジスタVRを割り当てるよう、リネーミングテーブル管理部130に要求する。また、リネーミング部120は、ベクトル命令COM中のそれぞれの論理ベクトルレジスタLRに割り当てられた仮想ベクトルレジスタVRを通知するよう、リネーミングテーブル管理部130に要求する。
【0032】
ステップS30:
リネーミングテーブル管理部130は、リネーミングテーブルREN(図2参照)を有し、リネーミングテーブルRENの管理を行う。具体的には、リネーミングテーブル管理部130は、リネーミング部120から、仮想ベクトルレジスタVRの割り当て要求及び通知要求を受け取る。その割り当て要求に応答して、リネーミングテーブル管理部130は、ベクトル命令COMで指定されている論理ベクトルレジスタLRに仮想ベクトルレジスタVRを割り当て、リネーミングテーブルRENを更新する。
【0033】
ステップS40:
リネーミングテーブルRENにおいて新たな仮想ベクトルレジスタVRが割り当てられた場合、リネーミングテーブル管理部130は、当該仮想ベクトルレジスタVRを物理レジスタ210に関連付けるよう、ポインタリスト管理部140に要求する。つまり、リネーミングテーブル管理部130は、新たな仮想ベクトルレジスタVRに対して物理レジスタ210上でデータ領域を確保するよう、ポインタリスト管理部140に要求する。
【0034】
ステップS50:
ポインタリスト管理部140は、ポインタリストPNT(図2参照)を有し、ポインタリストPNTの管理を行う。具体的には、ポインタリスト管理部140は、リネーミングテーブル管理部130から、仮想ベクトルレジスタVRに対する領域確保要求を受け取る。その領域確保要求に応答して、ポインタリスト管理部140は、仮想ベクトルレジスタVRの各要素毎に物理レジスタ210上の任意のデータ領域(物理アドレス)を割り当て、ポインタリストPNTを更新する。
【0035】
尚、ベクトル命令COMがマスク付ベクトル演算命令の場合、マスクデータ生成部170は、マスクされる要素を指定するマスクデータMSKを生成し、そのマスクデータMSKをポインタリスト管理部140へ送る。ポインタリスト管理部140は、マスクデータMSKを参照しながら、仮想ベクトルレジスタVRの各要素毎に物理レジスタ210上の任意のデータ領域(物理アドレス)を割り当て、ポインタリストPNTを更新する。マスク付ベクトル演算命令の場合の詳細は後述される。
【0036】
ステップS60:
仮想ベクトルレジスタVRへのデータ領域の割り当てが完了すると、ポインタリスト管理部140は、領域確保通知をリネーミングテーブル管理部130へ送信する。
【0037】
ステップS70:
リネーミングテーブル管理部130は、ポインタリスト管理部140から領域確保通知を受け取る。そして、リネーミングテーブル管理部130は、リネーミング部120からの通知要求への応答として、仮想ベクトルレジスタVRをリネーミング部120へ返答する。より詳細には、リネーミングテーブル管理部130は、リネーミングテーブルRENを参照して、ベクトル命令COMで指定された論理ベクトルレジスタLRのそれぞれに割り当てられている仮想ベクトルレジスタVRを、リネーミング部120に通知する。
【0038】
ステップS80:
リネーミング部120は、リネーミングテーブル管理部130より通知された仮想ベクトルレジスタVRを用いて、リネーミング処理を実施する。具体的には、リネーミング部120は、ベクトル命令COM中の論理ベクトルレジスタLRを、それぞれ、通知された仮想ベクトルレジスタVRに置換する。すなわち、リネーミング部120は、ベクトル命令COMで指定されている論理ベクトルレジスタLRを、リネーミングテーブルRENで示されている対応する仮想ベクトルレジスタVRに置換する。リネーミング処理後のベクトル命令COM、すなわち、論理ベクトルレジスタLRが仮想ベクトルレジスタVRに置換されたベクトル命令COMは、以下、「リネーム後ベクトル命令COM’」と参照される。リネーミング部120は、リネーム後ベクトル命令COM’を、発行待ち命令バッファ150へ送出する。
【0039】
ステップS100:
リネーム後ベクトル命令COM’は、発行待ち命令バッファ150に格納され、命令発行部160により発行されるのを待つ。命令発行部160は、スケジューリングを行い、発行待ち命令バッファ150からリネーム後ベクトル命令COM’を読み出す。ここで、命令発行部160は、Out−of−Order型であり、発行待ち命令バッファ150上のリネーム後ベクトル命令COM’を発行できるものから読み出していく。
【0040】
ステップS110:
命令発行部160は、発行待ち命令バッファ150から読み出したリネーム後ベクトル命令COM’の発行処理を行う。そのリネーミング後ベクトル命令COM’では、アクセス先の仮想ベクトルレジスタVRが指定されている。そして、その仮想ベクトルレジスタVRの各要素に割り当てられている物理アドレス(ポインタ)は、ポインタリストPNTにより指定されている。従って、命令発行部160は、仮想ベクトルレジスタVRとポインタリストPNTとに基づいて、リネーム後ベクトル命令COM’をベクトル演算部200に対して発行することができる。具体的には、命令発行処理において、命令発行部160は、ポインタリスト管理部140に対して、仮想ベクトルレジスタVRに対応する物理アドレス(ポインタ)を送出するよう指示する「ポインタ送出指示」を出す。また、命令発行部160は、各種制御情報をベクトル演算部200に送出する。
【0041】
ステップS120:
ポインタリスト管理部140は、命令発行部160からポインタ送出指示を受け取る。そのポインタ送出指示に応答して、ポインタリスト管理部140は、ポインタリストPNTを参照し、リネーム後ベクトル命令COM’中の仮想ベクトルレジスタVRに割り当てられている物理アドレス(ポインタ)を取得する。そして、ポインタリスト管理部140は、取得した物理アドレス(ポインタ)をベクトル演算部200へ送出する。
【0042】
ベクトル演算部200は、命令発行制御部100から受け取るポインタ及び制御情報に基づいて、物理レジスタ210上の指定されたデータ領域にアクセスすることができる。
【0043】
3.具体例
以下、命令発行制御部100による様々な処理例を具体的に説明する。
【0044】
3−1.第1の処理例(基本処理)
図5Aで示される初期状態を考える。初期状態において、論理ベクトルレジスタLR0、LR1は、それぞれ仮想ベクトルレジスタVR0、VR1に割り当てられている。仮想ベクトルレジスタVR0の要素EL0〜EL3は、それぞれ物理アドレスAd00〜Ad03に割り当てられている。仮想ベクトルレジスタVR1の要素EL0〜EL3は、それぞれ物理アドレスAd04〜Ad07に割り当てられている。また、リネーム前命令バッファ110には、図に示される3つのベクトル命令COMが格納されている。尚、本例では投機レベルは「0」のまま変わらないとする。
【0045】
次に、図5Bに示されるように、リネーミング部120は、リネーム前命令バッファ110から最先のベクトル命令COM(LR2←LR0+LR1)を読み出す(ステップS10)。このベクトル命令COMにおいては、ベクトルデータの読み出し元として論理ベクトルレジスタLR0及びLR1が指定されており、演算結果の書き込み先として論理ベクトルレジスタLR2が指定されている。つまり、このベクトル命令COMは、論理ベクトルレジスタLR2への書き込みを指示している。
【0046】
次に、図5Cに示されるように、リネーミング部120は、書き込み先である論理ベクトルレジスタLR2に新たな仮想ベクトルレジスタを割り当てるよう要求する(ステップS20)。リネーミングテーブル管理部130は、論理ベクトルレジスタLR2に対して未使用の仮想ベクトルレジスタVR2を新たに割り当て、リネーミングテーブルRENを更新する(ステップS30)。
【0047】
次に、図5Dに示されるように、リネーミングテーブル管理部130は、新たな仮想ベクトルレジスタVR2に対して物理レジスタ210上のデータ領域を確保するよう、ポインタリスト管理部140に要求する(ステップS40)。ポインタリスト管理部140は、仮想ベクトルレジスタVR2の要素EL0〜EL3のそれぞれに物理アドレスAd08〜Ad11を新たに割り当てて、ポインタリストPNTを更新する(ステップS50)。
【0048】
次に、図5Eに示されるように、ポインタリスト管理部140は、領域確保通知をリネーミングテーブル管理部130へ送信する(ステップS60)。更に、リネーミングテーブル管理部130は、リネーミングテーブルRENを参照して、ベクトル命令COMで指定されている論理ベクトルレジスタLR0〜LR2のそれぞれに割り当てられている仮想ベクトルレジスタVR0〜VR2を、リネーミング部120に通知する(ステップS70)。
【0049】
次に、図5Fに示されるように、リネーミング部120はリネーミング処理を実施する。すなわち、リネーミング部120は、ベクトル命令COM(LR2←LR0+LR1)で指定される論理ベクトルレジスタLR0〜LR2を、それぞれ仮想ベクトルレジスタVR0〜VR2に置換する(ステップS80)。その結果、リネーム後ベクトル命令COM’(VR2←VR0+VR1)が得られる。
【0050】
次に、図5Gに示されるように、リネーム後ベクトル命令COM’(VR2←VR0+VR1)が発行待ち命令バッファ150に格納される。
【0051】
次に、図5Hに示されるように、命令発行部160は、発行待ち命令バッファ150からリネーム後ベクトル命令COM’(VR2←VR0+VR1)を読み出す(ステップS100)。
【0052】
次に、図5Iに示されるように、命令発行部160は、リネーム後ベクトル命令COM’の発行処理を行う(ステップS110)。具体的には、命令発行部160は、ポインタリスト管理部140に対して、リネーム後ベクトル命令COM’中の仮想ベクトルレジスタVR0〜VR2の各々に対応する物理アドレス(ポインタ)を送出するよう指示する。また、命令発行部160は、各種制御情報をベクトル演算部200に送出する。ポインタリスト管理部140は、ポインタリストPNTを参照し、仮想ベクトルレジスタVR0〜VR2の各々に対応する物理アドレス(ポインタ)を、ベクトル演算部200へ送出する(ステップS120)。本例では、仮想ベクトルレジスタVR0に対して物理アドレスAd00〜Ad03が送出され、仮想ベクトルレジスタVR1に対して物理アドレスAd04〜Ad07が送出され、仮想ベクトルレジスタVR2に対して物理アドレスAd08〜Ad11が送出される。
【0053】
3−2.第2の処理例(同時並列処理)
図6Aで示される初期状態を考える。図6Aで示される状態は、既出の図5Gで示された状態と同じである。発行待ち命令バッファ150には、リネーム後ベクトル命令COM’(VR2←VR0+VR1)が格納されている。このリネーム後ベクトル命令COM’は、何らかの原因で発行することができないとする。
【0054】
次に、図6Bに示されるように、リネーミング部120は、リネーム前命令バッファ110から次のベクトル命令COM(LR2←LR0×LR1)を読み出す(ステップS10)。このベクトル命令COM(LR2←LR0×LR1)における書き込み先は、論理ベクトルレジスタLR2であり、先程のベクトル命令COM(LR2←LR0+LR1)の場合と同じであることに留意されたい。すなわち、先程のベクトル命令COM(LR2←LR0+LR1)の実行完了前に、リネーミング部120は、同じ論理ベクトルレジスタLR2への書き込みを指示するベクトル命令COM(LR2←LR0×LR1)を受け取る。
【0055】
次に、図6Cに示されるように、リネーミング部120は、論理ベクトルレジスタLR2に仮想ベクトルレジスタを割り当てるよう要求する(ステップS20)。論理ベクトルレジスタLR2には既に仮想ベクトルレジスタVR2が割り当てられているが、その仮想ベクトルレジスタVR2へアクセスするベクトル命令COM(LR2←LR0+LR1)が発行待ちであり、仮想ベクトルレジスタVR2は使用中となる。この場合、リネーミングテーブル管理部130は、論理ベクトルレジスタLR2に対して未使用の仮想ベクトルレジスタVR3を新たに割り当て、リネーミングテーブルRENを更新する(ステップS30)。すなわち、リネーミングテーブル管理部130は、論理ベクトルレジスタLR2に対する仮想ベクトルレジスタの割り当てを、“VR2”から“VR3”へ変更する。
【0056】
次に、図6Dに示されるように、リネーミングテーブル管理部130は、新たな仮想ベクトルレジスタVR3に対して物理レジスタ210上のデータ領域を確保するよう、ポインタリスト管理部140に要求する(ステップS40)。ポインタリスト管理部140は、仮想ベクトルレジスタVR3の要素EL0〜EL3のそれぞれに物理アドレスAd12〜Ad15を新たに割り当てて、ポインタリストPNTを更新する(ステップS50)。ここで、仮想ベクトルレジスタVR3に割り当てられた物理アドレスAd12〜Ad15(第2データ領域)は、仮想ベクトルレジスタVR2に割り当てられている物理アドレスAd08〜Ad11(第1データ領域)とは異なっていることに留意されたい。
【0057】
次に、図6Eに示されるように、ポインタリスト管理部140は、領域確保通知をリネーミングテーブル管理部130へ送信する(ステップS60)。更に、リネーミングテーブル管理部130は、リネーミングテーブルRENを参照して、ベクトル命令COMで指定されている論理ベクトルレジスタLR0〜LR2のそれぞれに割り当てられている仮想ベクトルレジスタVR0、VR1、VR3を、リネーミング部120に通知する(ステップS70)。リネーミング部120は、ベクトル命令COM(LR2←LR0×LR1)で指定される論理ベクトルレジスタLR0〜LR2を、それぞれ仮想ベクトルレジスタVR0、VR1、VR3に置換する(ステップS80)。その結果、リネーム後ベクトル命令COM’(VR3←VR0×VR1)が得られる。
【0058】
その後、図6Fに示されるように、リネーム後ベクトル命令COM’(VR3←VR0×VR1)の発行処理が同様に行われる。本例では、仮想ベクトルレジスタVR0に対して物理アドレスAd00〜Ad03が送出され、仮想ベクトルレジスタVR1に対して物理アドレスAd04〜Ad07が送出され、仮想ベクトルレジスタVR3に対して物理アドレスAd12〜Ad15が送出される。
【0059】
このように、異なるベクトル命令COMが同一の論理ベクトルレジスタLRを書き込み先として指定している場合であっても、リネーム後ベクトル命令COM’間で仮想ベクトルレジスタVRが異なっていれば、それらリネーム後ベクトル命令COM’を同時並列的に実行することが可能である。
【0060】
3−3.第3の処理例(マスク付ベクトル演算命令)
次に、マスク付ベクトル演算命令の処理方法を説明する。例として、上述の第2の処理例と同じく、リネーミング部120がリネーム前命令バッファ110からベクトル命令COM(LR2←LR0×LR1)を受け取った場合を考える。このベクトル命令COM(LR2←LR0×LR1)は、先行するベクトル命令COM(LR2←LR0+LR1)の場合と同じ論理ベクトルレジスタLR2への書き込みを指示している。このベクトル命令COM(LR2←LR0×LR1)が、マスク付ベクトル演算命令であるとする。
【0061】
図7Aで示されるように、リネーミング部120は、論理ベクトルレジスタLR2に仮想ベクトルレジスタを割り当てるよう要求する(ステップS20)。リネーミングテーブル管理部130は、論理ベクトルレジスタLR2に対して未使用の仮想ベクトルレジスタVR3を新たに割り当て、リネーミングテーブルRENを更新する(ステップS30)。すなわち、リネーミングテーブル管理部130は、論理ベクトルレジスタLR2に対する仮想ベクトルレジスタの割り当てを、“VR2”から“VR3”へ変更する。更に、リネーミングテーブル管理部130は、新たな仮想ベクトルレジスタVR3に対して物理レジスタ210上のデータ領域を確保するよう、ポインタリスト管理部140に要求する(ステップS40)。このとき、リネーミングテーブル管理部130は、論理ベクトルレジスタLR2への仮想ベクトルレジスタの割り当てが“VR2”から“VR3”に変更されたことも通知する。
【0062】
その一方で、マスクデータ生成部170は、ベクトル命令COM(LR2←LR0×LR1)からマスク演算用のマスクデータMSKを生成し、そのマスクデータMSKをポインタリスト管理部140に供給する。マスクデータMSKは、ベクトルレジスタの複数の要素EL0〜EL3のうちマスクされる「マスク要素」とマスクされない「非マスク要素」とを示す。例えば図7Aにおいて、マスクデータMSKは“1010”であり、ビット“0”がマスク要素を表し、ビット“1”が非マスク要素を表す。この場合、要素EL0〜EL3のうち、要素EL0及びEL2は非マスク要素であり、要素EL1及びEL3はマスク要素である。
【0063】
ポインタリスト管理部140は、このようなマスクデータMSKを受け取る。また、ポインタリスト管理部140は、論理ベクトルレジスタLR2に割り当てられていた仮想ベクトルレジスタVR2が新たに仮想ベクトルレジスタVR3に変更されたことも知る。この場合、ポインタリスト管理部140は、図7Bに示されるようにポインタリストPNTを更新する(ステップS50)。
【0064】
詳細には、ポインタリスト管理部140は、新たな仮想ベクトルレジスタVR3のマスク要素EL1及びEL3には、元の仮想ベクトルレジスタVR2のマスク要素EL1及びEL3に既に割り当てられている物理アドレスAd09及びAd11(第1データ領域)を割り当てる。すなわち、ポインタリスト管理部140は、マスク要素EL1及びEL3に関しては、元の仮想ベクトルレジスタVR2に対する割り当て関係をコピーする。その一方、ポインタリスト管理部140は、新たな仮想ベクトルレジスタVR3の非マスク要素EL0及びEL2には、物理アドレスAd12、Ad13を新たに割り当てる。仮想ベクトルレジスタVR3の非マスク要素EL0及びEL2に割り当てられた物理アドレスAd12、Ad13(第2データ領域)は、元の仮想ベクトルレジスタVR2の非マスク要素EL0及びEL2に割り当てられている物理アドレスAd08、Ad10(第1データ領域)とは異なっていることに留意されたい。
【0065】
その後、第2の処理例と同様に、リネーミング部120によってリネーミング処理が行われ、結果として、リネーム後ベクトル命令COM’(VR3←VR0×VR1)が得られる。命令発行部160は、そのリネーム後ベクトル命令COM’(VR3←VR0×VR1)の発行処理を行う。ベクトル演算部200は、発行されたベクトル命令COM’に従って演算を行い、演算結果を指定された物理アドレスに書き込む。但し、マスク要素EL1及びEL3に関する演算結果は、マスクデータMSKによってマスクされ、物理レジスタ210には書き込まれない。
【0066】
このように、マスク付ベクトル演算命令の場合、論理ベクトルレジスタLR2に割り当てられる仮想ベクトルレジスタが“VR2”から“VR3”に変更されるが、マスク要素EL1及びEL3に割り当てられる物理アドレスは元のまま維持される。すなわち、マスク付ベクトル演算命令の書き込み先において、マスク要素EL1及びEL3に既に格納されている値はそのまま保持される。従って、マスク演算が実現される。すなわち、ポインタリストPNT中の既存の割り当て関係を、要素単位で、新たな割り当て関係に適宜コピーすることにより、マスク演算が可能となる。尚、マスクデータ生成の命令は命令発行部160からマスクデータ生成部170に発行され、それによりマスクデータMSKの更新が行われる。
【0067】
3−4.第4の処理例(投機的実行)
投機的実行(speculative execution)とは、プロセッサの高速化手法の1つである。処理が途中で条件分岐しているとき、分岐判定結果が出る前に分岐先が予測され、予測された分岐先の処理が予め実行される。予測が当たっていれば、分岐先の処理の実行結果が直ちに得られるため、処理速度が向上する。予測が外れた場合は、通常通り、分岐先の処理が実行されるだけである。
【0068】
ここで、条件分岐の中に更に別の条件分岐が存在する場合を考える。この場合、投機的実行の最中に、新たな投機的実行が行われる可能性がある。すなわち、投機的実行(投機演算)が階層的に実施される可能性がある。投機的実行(投機演算)の階層は、以下「投機レベル」と参照される。投機レベルは、「0(投機的実行無し)」から順番に、階層が深くなるにつれて1ずつ増加するとする。
【0069】
図2で示されたように、本実施の形態に係るリネーミングテーブルRENは、論理ベクトルレジスタLRと仮想ベクトルレジスタVRとの対応関係を、投機レベル毎に示している。論理ベクトルレジスタLRと仮想ベクトルレジスタVRとの対応関係は、投機レベル毎に管理される。
【0070】
既出の処理例では、投機レベルは「0」のまま変わらない場合が説明された。以下、投機的実行が行われ、投機レベルが変わる場合の処理を説明する。そのために、図8Aで示される状態を考える。図8Aで示される状態は、既出の図5Gあるいは図6Aで示された状態とほぼ同じである。但し、リネーム前命令バッファ110に格納されているベクトル命令の投機レベルは、「0」ではなく「1」に変わっている。
【0071】
図8Bに示されるように、リネーミング部120は、リネーム前命令バッファ110から次のベクトル命令COM(LR2←LR0×LR1;投機レベル=1)を読み出す(ステップS10)。このとき、リネーミング部120は、投機レベルが「0」から「1」に変わったことを認識する。
【0072】
次に、図8Cに示されるように、リネーミング部120は、論理ベクトルレジスタLR2に仮想ベクトルレジスタを割り当てるよう要求する(ステップS20)。また、リネーミング部120は、投機レベルが「0」から「1」に変わったことを示す投機レベル変更通知を、リネーミングテーブル管理部130に送る。その投機レベル変更通知に応答して、リネーミングテーブル管理部130は、新たな投機レベル「1」のためのエントリをリネーミングテーブルREN中に作成する。この時、リネーミングテーブル管理部130は、元の投機レベル「0」における論理ベクトルレジスタLRと仮想ベクトルレジスタVRとの対応関係を、新たな投機レベル「1」における対応関係に設定する(コピーする)。
【0073】
その後、リネーミングテーブル管理部130は、新たな投機レベル「1」における仮想ベクトルレジスタVRの割り当てを実施する(ステップS30)。仮想ベクトルレジスタVRの割り当て方法は、既出の処理例と同様である。例えば、図8Cに示されるように、第2の処理例と同様に、投機レベル「1」における論理ベクトルレジスタLR2に対する仮想ベクトルレジスタの割り当てが、“VR2”から“VR3”へ変更される。このとき、投機レベル「1」のエントリだけが更新され、投機レベル「0」のエントリは元のままであることに留意されたい。
【0074】
その後の処理も、既出の処理例と同様である。例えば、図8Dに示されるように、第2の処理例と同様にポインタリストPNTが更新される(ステップS50)。マスク付ベクトル演算命令の場合は、第3の処理例と同様にポインタリストPNTが更新される。
【0075】
更に、図8Eに示されるように、リネーミングテーブル管理部130は、リネーミングテーブルRENを参照して、論理ベクトルレジスタLR0〜LR2のそれぞれに割り当てられている仮想ベクトルレジスタをリネーミング部120に通知する。この時、リネーミングテーブル管理部130は、投機レベル「1」における割り当て関係を参照して、仮想ベクトルレジスタVR0、VR1、及びVR3を、リネーミング部120に通知する。リネーミング部120は、ベクトル命令COM(LR2←LR0×LR1)で指定される論理ベクトルレジスタLR0〜LR2を、それぞれ仮想ベクトルレジスタVR0、VR1、VR3に置換する(ステップS80)。その結果、リネーム後ベクトル命令COM’(VR3←VR0×VR1)が得られる。
【0076】
あるレベルの投機的実行が成功した場合、リネーミングテーブル管理部130は、当該投機レベルより低いレベルのエントリをリネーミングテーブルRENから削除し、残りのエントリを全体的に上へシフトさせる。あるレベルの投機的実行が失敗に終わった場合、リネーミングテーブル管理部130は、当該投機レベル以上のレベルのエントリをリネーミングテーブルRENから削除する。そして、投機レベルは元に戻る。
【0077】
4.効果
本実施の形態によれば、ベクトル命令COMで指定される論理ベクトルレジスタLRには仮想ベクトルレジスタVRが動的に割り当てられ、その割り当て関係を示すリネーミングテーブルRENが設けられる。更に、仮想ベクトルレジスタVRの各要素毎に、物理レジスタ210上の任意のデータ領域が割り当てられ、その割り当て関係を示すポインタリストPNTが設けられる。
【0078】
リネーミング処理において、ベクトル命令COMで指定される論理ベクトルレジスタLRは、リネーミングテーブルRENに従って仮想ベクトルレジスタVRに置換される。その仮想ベクトルレジスタVRに割り当てられている物理レジスタ210上の各データ領域には、ポインタリストPNTに基づいてアクセス可能である。異なるベクトル命令COMが同一の論理ベクトルレジスタLRを書き込み先として指定している場合であっても、リネーム処理後のベクトル命令COM’間で仮想ベクトルレジスタVRが異なっていれば、それらベクトル命令COM’を同時並列的に実行することが可能である。
【0079】
また、ポインタリストPNT中の既存の割り当て関係を、要素単位で、新たな割り当て関係に適宜コピーすることにより、マスク演算が可能となる。すなわち、マスク付ベクトル演算命令を処理することが可能となる。本実施の形態では、マスク演算を実現するために、物理レジスタ210上で実際のデータをコピーする(書き戻す)必要はない。ポインタリストPNT中で割り当て関係を適宜コピーするだけで、マスク演算が可能となる。
【0080】
更に、リネーミングテーブルRENにおいて、同一の論理ベクトルレジスタLRに対して、投機レベル毎に仮想ベクトルレジスタVRを割り当てることもできる。つまり、同一の論理ベクトルレジスタLRを、回数に制限無くリネームすることができる。その結果、投機的実行を階層的に実施することが可能となる。言い換えれば、継続的な投機的実行が可能となる。
【0081】
以上に説明されたように、本実施の形態では、リネーミングテーブルRENとポインタリストPNTを設けることにより、レジスタリネーミング及びマスク演算を実行可能な好適なベクトルプロセッサ10が実現される。ここで、論理ベクトルレジスタLRと物理レジスタ210との間の対応関係は固定されていないことに留意されたい。ある論理ベクトルレジスタLRには仮想ベクトルレジスタVRを介して物理レジスタ210上のデータ領域が割り当てられ、その割り当て先は要素単位で自由に変更可能である。従って、物理レジスタ210を無駄なく効率的に使用することが可能となる。すなわち、レジスタ資源の利用効率が向上する。
【0082】
また、論理ベクトルレジスタLRと物理レジスタ210との間の対応関係は固定されていないため、設計者は、物理レジスタ210の容量を自由に決定することができる。上述の通り、レジスタ資源の利用効率が向上するため、好適には物理レジスタ210の容量を節約することができる。より少ないレジスタ資源であっても、従来と同等のリネーミング数を実現することができる。
【0083】
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
【符号の説明】
【0084】
1 ベクトル計算機
10 ベクトルプロセッサ
20 メインメモリ
100 命令発行制御部
110 リネーム前命令バッファ
120 リネーミング部
130 リネーミングテーブル管理部
140 ポインタリスト管理部
150 発行待ち命令バッファ
160 命令発行部
170 マスクデータ生成部
200 ベクトル演算部
210 物理レジスタ群
220 ベクトル演算器群
COM ベクトル命令
COM’ リネーム後ベクトル命令
LR 論理ベクトルレジスタ
VR 仮想ベクトルレジスタ
REN リネーミングテーブル
PNT ポインタリスト
MSK マスクデータ

【特許請求の範囲】
【請求項1】
物理レジスタを有しベクトル演算を行うベクトル演算部と、
命令発行制御部と
を備え、
前記命令発行制御部は、
ベクトル命令で指定される論理ベクトルレジスタに仮想ベクトルレジスタを割り当て、前記論理ベクトルレジスタと前記割り当てられた仮想ベクトルレジスタとの対応関係を示すリネーミングテーブルを管理するリネーミングテーブル管理部と、
前記割り当てられた仮想ベクトルレジスタの各要素毎に前記物理レジスタ上の任意のデータ領域を割り当て、前記各要素と前記割り当てられたデータ領域との対応関係を示すポインタリストを管理するポインタリスト管理部と、
前記ベクトル命令で指定される前記論理ベクトルレジスタを、前記リネーミングテーブルで示される前記仮想ベクトルレジスタに置換するリネーミング処理を行うリネーミング部と、
前記リネーミング処理後の前記ベクトル命令で指定される前記仮想ベクトルレジスタと前記ポインタリストとに基づいて、前記リネーミング処理後の前記ベクトル命令を前記ベクトル演算部に対して発行する命令発行処理を行う命令発行部と
を備える
ベクトルプロセッサ。
【請求項2】
請求項1に記載のベクトルプロセッサであって、
前記リネーミング部は、第1論理ベクトルレジスタへの書き込みを指示する第1ベクトル命令を受け取り、
前記リネーミングテーブル管理部は、前記第1論理ベクトルレジスタに第1仮想ベクトルレジスタを割り当てて、前記リネーミングテーブルを更新し、
前記ポインタリスト管理部は、前記第1仮想ベクトルレジスタの各要素毎に前記物理レジスタ上の第1データ領域を割り当てて、前記ポインタリストを更新し、
前記リネーミング部は、前記第1ベクトル命令で指定される前記第1論理ベクトルレジスタを前記第1仮想ベクトルレジスタに置換する
ベクトルプロセッサ。
【請求項3】
請求項2に記載のベクトルプロセッサであって、
前記第1ベクトル命令の実行完了前に、前記リネーミング部が、前記第1ベクトル命令と同じ前記第1論理ベクトルレジスタへの書き込みを指示する第2ベクトル命令を受け取った場合、
前記リネーミングテーブル管理部は、前記第1論理ベクトルレジスタに第2仮想ベクトルレジスタを新たに割り当てて、前記リネーミングテーブルを更新し、
前記ポインタリスト管理部は、前記第2仮想ベクトルレジスタの各要素毎に前記物理レジスタ上の前記第1データ領域と異なる第2データ領域を割り当てて、前記ポインタリストを更新し、
前記リネーミング部は、前記第2ベクトル命令で指定される前記第1論理ベクトルレジスタを前記第2仮想ベクトルレジスタに置換する
ベクトルプロセッサ。
【請求項4】
請求項2に記載のベクトルプロセッサであって、
前記リネーミング部は、前記第1ベクトル命令と同じ前記第1論理ベクトルレジスタへの書き込みを指示する第2ベクトル命令を受け取り、
前記第2ベクトル命令はマスク付ベクトル演算命令であり、
ベクトルレジスタの複数の要素は、マスクされるマスク要素とマスクされない非マスク要素とを含み、
前記リネーミングテーブル管理部は、前記第1論理ベクトルレジスタに第2仮想ベクトルレジスタを新たに割り当てて、前記リネーミングテーブルを更新し、
前記ポインタリスト管理部は、前記マスク要素と前記非マスク要素とを示すマスクデータを受け取り、前記第2仮想ベクトルレジスタの前記マスク要素には前記第1仮想ベクトルレジスタの前記マスク要素に既に割り当てられている前記第1データ領域を割り当て、前記第2仮想ベクトルレジスタの前記非マスク要素には前記物理レジスタ上の前記第1データ領域と異なる第2データ領域を割り当てて、前記ポインタリストを更新し、
前記リネーミング部は、前記第2ベクトル命令で指定される前記第1論理ベクトルレジスタを前記第2仮想ベクトルレジスタに置換する
ベクトルプロセッサ。
【請求項5】
請求項1乃至4のいずれか一項に記載のベクトルプロセッサであって、
前記リネーミングテーブルは、前記論理ベクトルレジスタと前記割り当てられた仮想ベクトルレジスタとの前記対応関係を、投機的実行の階層毎に示し、
投機的実行の階層がある階層から次の階層に変わる場合、前記リネーミングテーブル管理部は、前記ある階層の前記対応関係を前記次の階層の前記対応関係に設定し、その後、前記次の階層における前記仮想ベクトルレジスタの割り当てを実施する
ベクトルプロセッサ。
【請求項6】
ベクトルプロセッサにおけるベクトル命令発行方法であって、
前記ベクトルプロセッサは、物理レジスタを有しベクトル演算を行うベクトル演算部を備え、
前記ベクトル命令発行方法は、
ベクトル命令で指定される論理ベクトルレジスタに仮想ベクトルレジスタを割り当て、前記論理ベクトルレジスタと前記割り当てられた仮想ベクトルレジスタとの対応関係を示すリネーミングテーブルを更新するステップと、
前記割り当てられた仮想ベクトルレジスタの各要素毎に前記物理レジスタ上の任意のデータ領域を割り当て、前記各要素と前記割り当てられたデータ領域との対応関係を示すポインタリストを更新するステップと、
前記ベクトル命令で指定される前記論理ベクトルレジスタを、前記リネーミングテーブルで示される前記仮想ベクトルレジスタに置換するリネーミング処理を行うステップと、
前記リネーミング処理後の前記ベクトル命令で指定される前記仮想ベクトルレジスタと前記ポインタリストとに基づいて、前記リネーミング処理後の前記ベクトル命令を前記ベクトル演算部に対して発行するステップと
を含む
ベクトル命令発行方法。
【請求項7】
請求項6に記載のベクトル命令発行方法であって、
第1論理ベクトルレジスタへの書き込みを指示する第1ベクトル命令が発行される場合、
前記リネーミングテーブルを更新するステップにおいて、前記第1論理ベクトルレジスタに第1仮想ベクトルレジスタが割り当てられ、
前記ポインタリストを更新するステップにおいて、前記第1仮想ベクトルレジスタの各要素毎に前記物理レジスタ上の第1データ領域が割り当てられ、
前記リネーミング処理において、前記第1ベクトル命令で指定される前記第1論理ベクトルレジスタが前記第1仮想ベクトルレジスタに置換される
ベクトル命令発行方法。
【請求項8】
請求項7に記載のベクトル命令発行方法であって、
前記第1ベクトル命令の実行完了前に、前記第1ベクトル命令と同じ前記第1論理ベクトルレジスタへの書き込みを指示する第2ベクトル命令が発行される場合、
前記リネーミングテーブルを更新するステップにおいて、前記第1論理ベクトルレジスタに第2仮想ベクトルレジスタが新たに割り当てられ、
前記ポインタリストを更新するステップにおいて、前記第2仮想ベクトルレジスタの各要素毎に前記物理レジスタ上の前記第1データ領域と異なる第2データ領域が割り当てられ、
前記リネーミング処理において、前記第2ベクトル命令で指定される前記第1論理ベクトルレジスタが前記第2仮想ベクトルレジスタに置換される
ベクトル命令発行方法。
【請求項9】
請求項7に記載のベクトル命令発行方法であって、
前記第1ベクトル命令と同じ前記第1論理ベクトルレジスタへの書き込みを指示する第2ベクトル命令が発行され、且つ、前記第2ベクトル命令がマスク付ベクトル演算命令である場合、
ベクトルレジスタの複数の要素は、マスクされるマスク要素とマスクされない非マスク要素とを含み、
前記リネーミングテーブルを更新するステップにおいて、前記第1論理ベクトルレジスタに第2仮想ベクトルレジスタが新たに割り当てられ、
前記ポインタリストを更新するステップにおいて、前記第2仮想ベクトルレジスタの前記マスク要素には前記第1仮想ベクトルレジスタの前記マスク要素に既に割り当てられている前記第1データ領域が割り当てられ、前記第2仮想ベクトルレジスタの前記非マスク要素には前記物理レジスタ上の前記第1データ領域と異なる第2データ領域が割り当てられ、
前記リネーミング処理において、前記第2ベクトル命令で指定される前記第1論理ベクトルレジスタが前記第2仮想ベクトルレジスタに置換される
ベクトル命令発行方法。
【請求項10】
請求項6乃至9のいずれか一項に記載のベクトル命令発行方法であって、
前記リネーミングテーブルは、前記論理ベクトルレジスタと前記割り当てられた仮想ベクトルレジスタとの前記対応関係を、投機的実行の階層毎に示し、
投機的実行の階層がある階層から次の階層に変わる場合、
前記リネーミングテーブルを更新するステップにおいて、前記ある階層の前記対応関係が前記次の階層の前記対応関係に設定され、その後、前記次の階層における前記仮想ベクトルレジスタの割り当てが実施される
ベクトル命令発行方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5A】
image rotate

【図5B】
image rotate

【図5C】
image rotate

【図5D】
image rotate

【図5E】
image rotate

【図5F】
image rotate

【図5G】
image rotate

【図5H】
image rotate

【図5I】
image rotate

【図6A】
image rotate

【図6B】
image rotate

【図6C】
image rotate

【図6D】
image rotate

【図6E】
image rotate

【図6F】
image rotate

【図7A】
image rotate

【図7B】
image rotate

【図8A】
image rotate

【図8B】
image rotate

【図8C】
image rotate

【図8D】
image rotate

【図8E】
image rotate


【公開番号】特開2010−205049(P2010−205049A)
【公開日】平成22年9月16日(2010.9.16)
【国際特許分類】
【出願番号】特願2009−50813(P2009−50813)
【出願日】平成21年3月4日(2009.3.4)
【出願人】(000168285)エヌイーシーコンピュータテクノ株式会社 (572)
【Fターム(参考)】