(57)【特許請求の範囲】
【請求項１】
それぞれにＮ個（Ｎは２以上の整数）の論理ベクトルデータレジスタがマッピングされた複数の物理ベクトルデータレジスタと、
第１〜第Ｎオペランドを入力して演算を行うベクトル演算器であって、複数のスロットで動作可能なベクトル演算器と、
発行する命令毎に該命令を実行する前記ベクトル演算器のスロットを決定する発行手段であって、同一物理ベクトルデータレジスタ内のＮ個の論理ベクトルデータレジスタのデータを第１〜第Ｎオペランドとする先行命令を発行した後、前記先行命令とは異なる物理ベクトルデータレジスタ内のＮ個の論理ベクトルデータレジスタのデータを第１〜第Ｎオペランドとする後続命令を発行する発行手段と、
受信したデータを前記ベクトル演算器のスロット毎に整列させる整列手段であって、第１〜第Ｎオペランドの各オペランドに対応する演算器データ結合手段を備え、受信したオペランドを対応する前記演算器データ結合手段に一時的に保存し、前記先行命令の演算に使用する第１〜第Ｎオペランドの全てが揃った時点で前記ベクトル演算器に前記先行命令の演算に使用する第１〜第Ｎオペランドを出力する動作と、前記後続命令の演算に使用する第１〜第Ｎオペランドの全てが揃った時点で前記ベクトル演算器に前記後続命令の演算に使用する第１〜第Ｎオペランドを出力する動作とを１クロック毎に切り替える整列手段と、
前記複数の物理ベクトルデータレジスタ毎に設けられ、対応する物理ベクトルデータレジスタから読み出された、前記命令の何れかのオペランドに対応するデータを、前記発行手段で決定されたスロットで使用されるデータとして転送する転送手段であって、対応する物理ベクトルデータレジスタ内の論理ベクトルデータレジスタの先頭から順番に１データずつオペランドを読み出して当該オペランドに対応する前記演算器データ結合手段に向けて送信する動作を１クロック毎に論理ベクトルデータレジスタを順番に切替えて行う転送手段とを備え、
前記転送手段は、対応する物理ベクトルデータレジスタから読み出されたデータを複数の分解データに分解して順次前記整列手段に転送し、
前記整列手段は、前記転送手段から送られていた分解データを結合して元のデータを復元し、
更に、前記ベクトル演算器から出力される演算結果を、複数の分解演算結果に分解して順次演算結果の格納先となる物理ベクトルデータレジスタに対して転送する演算器データ分解手段と、
前記複数の物理ベクトルデータレジスタ毎に設けられ、対応する物理ベクトルデータレジスタに対して前記演算器データ分解手段から転送されてきた分解演算結果を結合して元の演算結果を復元し、前記物理ベクトルデータレジスタに書き込むレジスタデータ結合手段とを備え、
前記ベクトル演算器が複数設けられると共に、該複数のベクトル演算器毎に前記演算器データ分解手段および前記整列手段が設けられ、
更に、異なるベクトル演算器の同じスロットにおいて実行され、且つ同じ物理ベクトルデータレジスタへの書き込みを行う先行命令および後続命令が存在する場合、前記後続命令を実行するベクトル演算器の演算結果の転送を遅延させると判定するデータ遅延管理手段と、
前記複数の演算器データ分解手段毎に設けられ、前記データ遅延管理手段によって対応するベクトル演算器の演算結果の転送を遅延させると判定された場合、対応する演算器データ分解手段から転送される分解演算データを遅延させる演算器データ遅延手段とを備えたことを特徴とするベクトル演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の論理ベクトルデータレジスタがマッピングされた物理ベクトルデータレジスタからベクトル演算器に対してデータを供給してベクトル演算を行わせるベクトル演算装置に関し、特に、命令のオペランドによって指定された複数の操作対象が、同一物理ベクトルデータレジスタ上の複数の論理ベクトルデータレジスタに格納されている場合でも、ポート競合を見かけ上回避し、演算効率を高いものにすることができるベクトル演算装置に関する。
【背景技術】
【０００２】
複数の論理ベクトルデータレジスタがマッピングされた物理ベクトルデータレジスタからベクトル演算器に対してデータを供給してベクトル演算を行わせるベクトル演算装置は従来から知られている（例えば、特許文献１参照）。
【０００３】
図１６を参照して従来のこの種のベクトル演算装置について説明する。図１６を参照すると、ベクトル演算装置は、発行手段８と、複数のレジスタ手段６−１〜６−ｎと、複数の演算手段７−１〜７−ｍと、レジスタ手段６−１〜６−ｎと演算手段７−１〜７−ｍとを接続するクロスバ手段４と、制御手段５とを備えている。発行手段８と制御手段５とは制御パス１３により接続され、制御手段５とレジスタ手段６−１〜６−ｎ、演算手段７−１〜７−ｍ、クロスバ手段４とはそれぞれ制御パス５４−１〜５４−ｎ、５５−１〜５５−ｍ、５６により接続されている。また、クロスバ手段４とレジスタ手段６−１〜６−ｎ、演算手段７−１〜７−ｍとはそれぞれデータパス６３−１〜６３−ｎ、７２−１〜７２−ｍにより接続されている。
【０００４】
発行手段８は、各種レジスタおよび演算リソースを管理し、命令発行を行う命令制御手段１１を備えている。
【０００５】
レジスタ手段６−１は、ベクトルデータレジスタ手段２１を備えている。他のレジスタ手段も同様の構成を有している。図２を参照すると、ベクトルデータレジスタ手段２１は、複数の要素（要素数ｋ）で構成される論理ベクトルデータレジスタを複数個（ＶＲ０〜ＶＲｉ）持ち、演算の対象となるベクトルデータを保持するベクトルデータレジスタ（以下、ＶＤＲ）２１１と、ＶＤＲ２１１へ書き込むデータを一時的に保持するライトデータレジスタ（以下、ＷＤレジスタ）２１２と、ＶＤＲ２１１へのライト時に格納位置の情報を持つライトポインタレジスタ（以下、ＷＰレジスタ）２１３と、ＶＤＲ２１１からのリード時に読み出し位置の情報を持つリードポインタレジスタ（以下、ＲＰレジスタ）２１４と、ＶＤＲ２１１からの読み出しデータを一時的に保持するリードデータレジスタ（以下、ＲＤレジスタ）２１５とから構成されている。また、データパス２１６、２１７は、データパス６３−１を介してクロスバ手段４と接続されている。
【０００６】
ＶＤＲ２１１は、演算の対象となる一連の順序づけられたベクトルデータを格納し、命令で指定された数の要素をポインタで指定された位置（以下、エントリ）から１マシンサイクルに１要素ずつ読み出し、また、演算結果をポインタで指定されたエントリに順に格納する。ＶＤＲ２１１は、複数（ｉ個）の論理ベクトルデータレジスタ番号がマッピングされる。ＶＤＲ２１１のエントリは、論理ベクトルデータレジスタ番号と、その論理レジスタ番号の要素番号で指定される。
【０００７】
演算手段７−１は、ベクトル演算手段３１を備えている。他の演算手段も同様の構成を有している。図５を参照すると、ベクトル演算手段３１は、複数（ｐ個）の入力データを入力オペランドとし、各入力オペランドを第１オペランド〜第ｐオペランド（以下、それぞれ、１ｓｔＯＰ〜ｐｔｈＯＰ）としている。そして、このｐ個の入力データに関しベクトル演算が可能でパイプライン構成を持つベクトル演算器３３１と、ベクトル演算器３１１へのｐ個の入力データそれぞれ１ｓｔＯＰ〜ｐｔｈＯＰとして一時的に保持するレジスタ３１２−１〜３１２−ｐと、ベクトル演算手段３１１の演算結果を一時的に保持するレジスタ３１４とを備えている。なお、データパス３１３−１〜３１３−ｐ、３１５は、データパス７２−１を介してクロスバ手段４と接続される。
【０００８】
制御手段５は、レジスタ手段６−１〜６−ｎを制御するレジスタ制御手段５１と、演算手段７−１〜７−ｍを制御する演算器制御手段５２と、クロスバ手段４を制御するクロスバ制御手段５３とを備えている。
【０００９】
次に、図１６に示したベクトル演算装置の動作を説明する。なお、以下の説明では、レジスタ手段６−１〜６−ｎの台数を２台（ｎ＝２）、演算手段７−１〜７−ｍの台数を１台（ｍ＝１）とする。また、ＶＤＲ２１１には、２個の論理ベクトルデータレジスタ（ＶＲ）がマッピングされ、ＶＲは要素数が４（ｋ＝４）であるとする。また、レジスタ手段６−１には論理ベクトルデータレジスタＶ０、Ｖ１が、レジスタ手段６−２には論理ベクトルデータレジスタＶ２、Ｖ３がマッピングされるものとする。また、最大ベクトル長を４とする。更に、ベクトル演算器３１１は、入力オペランド数が２（１ｓｔＯＰ，２ｎｄＯＰ）で、ステージ数が２（演算ステージ０、演算ステージ１）とする。
【００１０】
先ず、図１７を参照し、ベクトル長（ＶＬ）＝４（論理ベクトルデータレジスタの全ての要素を対象にする）でＶＲ０とＶＲ１の要素を演算し、演算結果をＶＲ０に書き込む命令が発行手段８から発行された場合の動作について説明する。
【００１１】
時刻Ｔ０では、次の処理を行う。
・発行手段８内の命令制御手段１１が上記命令を発行する。
・制御手段５内のレジスタ制御手段５１が、レジスタ手段６−１、６−２に対して上記命令で指定されたＶＲからの読み出し指示を送り、レジスタ手段６−１に対して上記命令で指定されたＶＲへの書き込み指示を送る。
・制御手段５内の演算器制御手段５２が、演算手段７−１に対して演算指示を送る。
【００１２】
時刻Ｔ１では、次の処理を行う。
・レジスタ手段６−１のベクトルデータレジスタ手段２１において、ＲＰレジスタ２１４にＶＲ０の要素０（単にＶＲ０要素０と記す場合もある）を読み出すためのポインタ０をセットする。以降、時刻Ｔ２〜Ｔ８にて、ＲＰレジスタ２１４には、４、１、５、２、６、３、７がセットされ、ＶＤＲ２１１にマッピングされているＶＲ０、ＶＲ１から交互に要素０〜３が順次読み出される（ＶＲ１要素０、ＶＲ０要素１、ＶＲ１要素１、ＶＲ０要素２、ＶＲ１要素２、ＶＲ０要素３、ＶＲ１要素３の順で読み出される）。
【００１３】
時刻Ｔ２では、次の処理を行う。
・レジスタ手段６−１のＲＤレジスタ２１５に、ＶＲ０要素０をセットする。以降、時刻Ｔ３〜Ｔ９にて、ＲＤレジスタ２１５に、ＶＲ１要素０〜ＶＲ１要素３をセットする。図１７では、ＶＲ０からの要素を（Ａ）、ＶＲ１からの要素を（Ｂ）と表記している。
【００１４】
時刻Ｔ３では、次の処理を行う。
・ベクトル演算手段３１において、レジスタ３１２−１に、レジスタ手段６−１のＲＤレジスタ２１５のデータ（ＶＲ０の要素０：Ａ）を、データパス６３−１、クロスバ手段４、データパス７２−１、データパス３１３−１を経由して、１ｓｔＯＰとしてセットする。２ｎｄＯＰを待ち合わせる為に１Ｔホールドする。以降、時刻Ｔ５、Ｔ７、Ｔ９にて、レジスタ３１２−１にＶＲ０の要素１〜３をセットし、それぞれ１Ｔホールドする。
【００１５】
時刻Ｔ４では、次の処理を行う。
・ベクトル演算手段３１において、レジスタ３１２−２に、レジスタ手段６−１のＲＤレジスタ２１５のデータ（ＶＲ１の要素０：Ｂ）を、データパス６３−１、クロスバ手段４、データパス７２−１、データパス３１３−２を経由して、２ｎｄＯＰとしてセットする。以降、時刻Ｔ６、Ｔ８、Ｔ１０にて、レジスタ３１２−２にＶＲ１の要素１〜３をセットする。
【００１６】
時刻Ｔ５では、次の処理を行う。
・ベクトル演算器３１１の演算パイプライン０に、ＶＲ０、ＶＲ１それぞれの要素０のデータ（ＡＢ）が入力される。以降、時刻Ｔ７、Ｔ９、Ｔ１１において、ベクトル演算器３１１の演算パイプライン０に、ＶＲ０、ＶＲ１それぞれの要素１、２、３のデータ（ＡＢ）が入力される。
【００１７】
時刻Ｔ６では、次の処理を行う。
・ベクトル演算器３１１の演算パイプライン１に、演算パイプライン０のデータが入力される。以降、時刻Ｔ８、Ｔ１０、Ｔ１２において、演算パイプライン１に、演算パイプライン０のデータが入力される。
【００１８】
時刻Ｔ７では、次の処理を行う。
・レジスタ３１４にＶＲ０とＶＲ１の要素０についての演算結果（Ｒ）がセットされる。この演算結果は、ＶＲ０要素０に書き込まれる。以降、時刻Ｔ９、Ｔ１１、Ｔ１３にて、ＶＲ０要素１〜３へ書き込むデータがレジスタ３１４にセットされる。
【００１９】
時刻Ｔ８では、次の処理を行う。
・レジスタ手段６−１のベクトルデータレジスタ手段２１のＷＤレジスタ２１２に、データパス３１５、データパス７２−１、クロスバ手段４、データパス６３−１を介して、ＶＲ０とＶＲ１の要素０の演算結果（Ｒ）をセットする。ＷＰレジスタ２１３に、ＶＲ０要素０のポインタ０をセットする。以降、時刻Ｔ１０、Ｔ１２、Ｔ１４において、ＷＤレジスタ２１２にＶＲ０とＶＲ１の要素１、２、３の演算結果（Ｒ）がセットされる。
【００２０】
時刻Ｔ９では、次の処理を行う。
・ＶＤＲ２１１のＷＰレジスタ２１３によって指定されている要素に、ＶＲ０とＶＲ１の要素０の演算結果（Ｒ）がセットされる。以降、時刻Ｔ１１、Ｔ１３、Ｔ１５において、ＶＲ０とＶＲ１の要素１、２、３の演算結果がＶＤＲ２１１に格納される。
【００２１】
図１７において、ベクトル演算器３１１は、２Ｔ毎に有効な入力データを受け取り、演算を行う事になり、使用率は５０％となる。１ｓｔＯＰが格納されるレジスタ３１２−１に着目すると、ベクトル演算器３１１に１ｓｔＯＰと２ｎｄＯＰを同時に入力するためのホールド制御により、２Ｔの間、同じデータが存在し、ベクトル演算器３１１へのデータ供給のネックとなる。従って、ベクトル演算器の使用率を上げることが不可能となり、これ以上の性能向上は出来ない。
【００２２】
次に、図１８を参照して発行手段８から、ＶＬ＝４でＶＲ０とＶＲ１の要素を演算し、演算結果をＶＲ０へ書き込む命令（以降命令０）と、ＶＬ＝４でＶＲ２とＶＲ３の要素を演算し、演算結果をＶＲ２に書き込む命令が発行された場合の動作を説明する。なお、命令０は時刻Ｔ０で、命令１は時刻Ｔ８で発行するものとする。
【００２３】
命令０の処理については、図１７と同様である。命令１の処理については、命令０の８Ｔ遅れで同様である。ただし、ＶＲ０をＶＲ２に、ＶＲ１をＶＲ３に、レジスタ手段６−１をレジスタ手段６−２に、（Ａ）を（Ｃ）に、（Ｂ）を（Ｄ）に、（ＡＢ）を（ＣＤ）に、（Ｒ）を（Ｓ）にそれぞれ読み替える。
【００２４】
図１８においても、図１７と同様にベクトル演算器３１１の使用率は５０％以上に上げることが不可能であり、これ以上の性能向上はできない。
【００２５】
【特許文献１】特開昭５８−１４９５５５号公報
【発明の開示】
【発明が解決しようとする課題】
【００２６】
図１６に示したベクトル演算装置は、図１７や図１８に示すように、ベクトル演算器３１１に１ｓｔＯＰと２ｎｄＯＰを同時に入力するためのホールド制御により、１ｓｔＯＰを格納するレジスタ３１２−１に２Ｔの間同じデータが保持されることになるため、ベクトル演算器３１１に演算効率を５０％以上にすることができないという問題がある。
【００２７】
〔本発明の目的〕
そこで、本発明の目的は、命令のオペランドによって指定された複数の操作対象が、同一物理ベクトルデータレジスタ上の複数の論理ベクトルデータレジスタに格納されている場合でも、演算効率を高いものにすることができるベクトル演算装置を提供することにある。
【課題を解決するための手段】
【００２８】
本発明にかかる第１のベクトル演算装置は、
複数のオペランドデータを入力とし且つ複数のスロットで動作可能なベクトル演算器と、
発行する命令毎に該命令を実行する前記ベクトル演算器のスロットを決定する発行手段と、
それぞれに複数の論理ベクトルデータレジスタがマッピングされた複数の物理ベクトルデータレジスタと、
該複数の物理ベクトルデータレジスタ毎に設けられた転送手段であって、対応する物理ベクトルデータレジスタから読み出された、前記命令の何れかのオペランドに対応するデータを、前記発行手段で決定されたスロットで使用されるデータとして転送する転送手段と、
前記転送手段から転送されたきたデータを前記ベクトル演算器のスロット毎に整列させる整列手段とを備え、
前記ベクトル演算器が、各スロットにおいて前記整列手段で整列されたデータを使用してベクトル演算を行うことを特徴とする。
【発明の効果】
【００２９】
本発明によれば、命令のオペランドによって指定された複数の操作対象が、同一物理ベクトルデータレジスタ上の複数の論理ベクトルデータレジスタに格納されている場合でも、ポート競合を見かけ上回避し、演算効率を高いものにすることができる。
【発明を実施するための最良の形態】
【００３０】
次に、本発明を実施するための最良の形態について図面を参照して詳細に説明する。
【００３１】
〔本発明の第１の実施の形態〕
図１を参照すると、本発明にかかるベクトル演算装置の第１の実施の形態は、発行手段１と、複数のレジスタ手段２−１〜２−ｎと、複数の演算手段３−１〜３−ｍと、レジスタ手段２−１〜２−ｎと演算手段３−１〜３−ｍとを接続するクロスバ手段４と、制御手段５とから構成される。発行手段１と制御手段５とは制御パス１３により接続され、制御手段５とレジスタ手段２−１〜２−ｎ、演算手段３−１〜３−ｍ、クロスバ手段４はそれぞれ制御パス５４−１〜５４−ｎ、５５−１〜５５−ｍ，５６により接続される。また、レジスタ手段２−１〜２−ｎとクロスバ手段４はデータパス２４−１〜２４−ｎにより接続され、演算手段３−１〜３−ｍとクロスバ手段４はデータパス３４−１〜３４−ｍにより接続される。
【００３２】
発行手段１は、命令制御手段１１と、時分割制御手段１２とを備えている。
【００３３】
命令制御手段１１は、各種レジスタ及び演算リソースを管理し、命令発行を行う。
【００３４】
時分割制御手段１２は、１つの演算器を時分割し、複数の演算で使用するためのタイミング制御を行う。より具体的には、時分割制御手段１２は、演算手段３−１〜３−ｍ毎に演算器スロットを備え、後述のベクトル演算器３１１を複数に時分割して使用するためのタイミング制御を行う。ここでは、ｊ個に時分割されるものとし、演算器スロットは、クロック毎に、０〜ｊを繰り返す。ｊ個に時分割する事は、ベクトル演算器３１１は、クロック毎に、異なるｊ個の命令による演算を処理する事を意味する。演算器スロット０で発行された命令は、ベクトル演算器３１１のスロット０のタイミングで演算を行い、他のスロットでは演算しない（ベクトル演算器３１１を使用しない）。同様に、演算器スロットｊで発行された命令は、ベクトル演算器３１１のスロットｊのタイミングを使用して演算を行う。
【００３５】
レジスタ手段２−１は、ベクトルデータを保持するベクトルデータレジスタを有し、ベクトルデータレジスタに対する読み出し、書き込みを行うベクトルデータレジスタ手段２１と、ベクトルデータレジスタ手段２１からの読み出しデータを一時的に保持し、複数の分解データに分解するレジスタデータ分解手段２２と、複数の分解データに分解されたベクトルデータレジスタ手段２１への書き込みデータを一時的に保持し、その分解データを結合して分解前の状態に戻すレジスタデータ結合手段２３とから構成される。なお、他のレジスタ手段も同様の構成を有している。
【００３６】
ベクトルデータレジスタ手段２１は、背景技術の項で説明した図２に示す構成を有する。但し、データパス２１６がレジスタデータ結合手段２３に接続され、データパス２１７がレジスタデータ分解手段２２に接続される点が、背景技術の項で説明した内容と相違している。
【００３７】
レジスタデータ分解手段２２は、図３に示すように、ベクトルデータレジスタ手段２１からのデータを受け取るデータパス２２１と、データパス２２１からのデータを一時的に保持するレジスタ２２２−１〜２２２−ｐ（ｐは後述のベクトル演算手段３１の入力オペランド数に対応する）と、レジスタ２２２−１〜２２２−ｐに保持されているデータの、上位側半分のビット、もしくは、下位側半分のビットを選択し、元のデータ幅の半分となるようデータを分割するセレクタ２２３−１〜２２３−ｐ（ここでは２分割とするが、分割数はこれに限られない）と、セレクタ２２３−１〜２２３−ｐのデータをデータパス２４−１へ出力するデータパス２２４とで構成される。
【００３８】
データパス２２４は、セレクタ２２３−１〜２２３−ｐからのデータを、それぞれ独立して転送する事が可能である。データパス２２４は、データパス２４−１と接続され、レジスタ手段２−１からクロスバ手段４へのデータ転送を行う。
【００３９】
レジスタデータ結合手段２３は、図４に示すように、データパス２４−１からデータを受け取るデータパス２３１と、演算器スロット数（ｊ個）に対応し、データパス２３１から受け取ったデータを一時的に保持するレジスタ２３２−１〜２３２−ｊと、レジスタ２３２−１〜２３２−ｊからデータを受け取り一時的に保持するレジスタ２３３−１〜２３３−ｊと、セレクタ２３４と、セレクタ２３４からベクトルデータレジスタ手段２１にデータを転送するデータパス２３５とを備えている。ここで、レジスタ２３２−１、２３３−１に格納されているデータは、それぞれ下位側、上位側のビットとして１つに結合され、セレクタ２３４に供給される。他のレジスタ２３２−２〜２３２−ｊ、２３３−２〜２３３−ｊに格納されているデータも、それぞれ下位側、上位側のビットとして１つに結合され、セレクタ２３４に供給される。セレクタ２３４は、結合されたｊ個のデータの内の１つを選択する。データパス２３１は、レジスタ２３２−１〜２３２−ｊへのデータをそれぞれ独立して転送可能である。また、データパス２３１は、データバス２４−１と接続され、クロスバ手段４からレジスタ手段２−１へのデータ転送を行う。
【００４０】
演算手段３−１は、ベクトル演算が可能なベクトル演算器を有し、ベクトル演算器に対して複数のオペランドデータの供給、演算結果の受け取りを行うベクトル演算手段３１と、ベクトル演算手段３１の入力となる複数のオペランドに対応して設けられ、複数に分解された分解データを一時的に保持し、その分解データを結合して元の状態に戻しベクトル演算手段３１のオペランドデータとする演算器データ結合手段３２−１〜３２−ｐと、ベクトル演算手段３１からのデータ（演算結果）を一時的に保持し、データを複数に分解する演算器データ分解手段３３と、演算手段３−１とクロスバ手段４とを接続するデータパス３４−１とから構成されている。なお、他の演算手段も同様の構成を有している。
【００４１】
ベクトル演算手段３１は、背景技術の項で説明した図５に示す構成を有する。但し、データパス３１３−１〜３１３−ｐが演算器データ結合手段３２−１〜３２−ｐと接続され、データパス３１５が演算器データ分解手段３３と接続されている点が、背景技術の項で説明した内容と相違している。
【００４２】
演算器データ結合手段３２−１は、図６に示すように、データパス３４−１からのデータを受け取るデータパス３２１と、演算器スロット数（ｊ個）に対応し、データパス３２１から受け取ったデータを一時的に保持するレジスタ３２２−１〜３２２−ｊと、レジスタ３２２−１〜３２２−ｊからデータを受け取り、一時的に保持するレジスタ３２３−１〜３２３−ｊと、レジスタ３２２−１〜３２２−ｊ、３２３−１〜３２３−ｊに保持されているデータをそれぞれ下位側、上位側のビットとして１つに結合したデータを保持するレジスタ３２４−１〜３２４−ｊと、レジスタ３２４−１〜３２４−ｊのどれか１つを選択するセレクタ３２５と、セレクタ３２５からベクトル演算手段３１へデータを出力するデータパス３２６とから構成される。データパス３２１は、レジスタ３２２−１〜３２２−ｊへのデータを、それぞれ独立して転送する事が可能である。また、データパス３２１は、データパス３４−１と接続され、クロスバ手段４から演算手段３−１へのデータ転送を行う。また、データパス３２６は、演算器データ結合手段３２−１からベクトル演算手段３１へのデータ転送を行う。なお、他の演算器データ結合手段３２−２〜３２−ｊも演算器データ結合手段３２−１と同様の構成を有する。但し、演算器データ結合手段３２−２〜３２−ｊのデータパス３２６は、それぞれベクトル演算手段３１内のデータパス３１３−２〜３１３−ｐと接続される。
【００４３】
演算器データ分解手段３３は、図７に示すように、ベクトル演算手段３１からのデータを受け取るデータパス３３１と、演算器スロット数（ｊ個）に対応し、データパス３３１からのデータを一時的に保持するレジスタ３３２−１〜３３２−ｊと、レジスタ３３２−１〜３３２−ｊに保持されているデータの、上位側半分のビット、もしくは、下位側半分のビットを選択し、元のデータ幅の半分となるようデータを分割する、セレクタ３３３−１〜３３３−ｊ（ここでは２分割とするが、分割数はこれに限られるものではない）と、セレクタ３３３−１〜３３３−ｊのデータをデータパス３４−１へ出力するデータパス３３４とで構成される。データパス３３４は、セレクタ３３３−１〜３３３−ｊからのデータを、それぞれ独立して転送する事が可能である。また、データパス３３４は、データパス３４−１と接続され、演算手段３−１からクロスバ手段４へのデータ転送を行う。
【００４４】
制御手段５は、レジスタ手段２−１〜２−ｎを制御するレジスタ制御手段５１と、演算手段３−１〜３−ｍを制御する演算器制御手段５２と、クロスバ手段４を制御するクロスバ制御手段５３とから構成されている。
【００４５】
データパス２４−１〜２４−ｎは、レジスタ手段２−１〜２−ｎからクロスバ手段４へのデータ転送と、クロスバ手段４からレジスタ手段２−１〜２−ｎへのデータ転送を、それぞれ独立して行うことができる。また、データパス３４−１〜３４−ｍは、演算手段３−１〜３−ｍからクロスバ手段４へのデータ転送と、クロスバ手段４から演算手段３−１〜３−ｍへのデータ転送を、それぞれ独立して行うことができる。
【００４６】
〔第１の実施の形態の動作の説明〕
次に、本実施の形態の動作について詳細に説明する。なお、以下の説明では、レジスタ手段２−１〜２−ｎの台数を２台（ｎ＝２）、演算手段３−１〜３−ｍの台数を１台（ｍ＝１）とする。また、ＶＤＲ２１１には、２個の論理ベクトルデータレジスタ（ＶＲ）がマッピングされ、ＶＲは要素数が４（ｋ＝４）であるとする。また、レジスタ手段２−１には論理ベクトルデータレジスタＶ０、Ｖ１が、レジスタ手段２−２には論理ベクトルデータレジスタＶ２、Ｖ３がマッピングされるものとする（ＶＲの若番かつ、要素番号の若番順にマッピングされる）。また、最大ベクトル長を４とする。更に、ベクトル演算器３１１は、入力オペランド数が２（１ｓｔＯＰ，２ｎｄＯＰ）で、ステージ数が２（演算ステージ０、演算ステージ１）とする。また、このシステムで扱うデータは、８バイトを１ワードとする。更に、演算器スロットを２（ｊ＝２）とし、時分割制御手段１２は、クロック毎に０、１を繰り返す。また。図４、図６、図７において、演算器スロット数に対応してｊ＝２とし、図３においてベクトル演算器３１１の入力オペランド数に対応してｐ＝２とする。
【００４７】
次に、図８を参照して発行手段１からＶＬ＝１（各論理ベクトルデータレジスタの要素０のみの演算）で、ＶＲ０とＶＲ１の要素を演算し、演算結果をＶＲ０へ書き込む場合の動作について説明する。ＶＲ０とＶＲ１は、同一ＶＤＲにマッピングされているため、ＶＲ０要素０、ＶＲ１要素０の順に、指定されたＶＲ番号の要素０を読み出し、演算結果をＶＲ０の要素０に書き込む。レジスタ手段２−１において、ＶＲ０要素０はＶＤＲ２１１のエントリ０、ＶＲ１要素０はＶＤＲ２１１のエントリ４にマッピングされている。
【００４８】
時刻Ｔ０では、次の処理を行う。
・発行手段１が、上記命令を発行する。演算器スロットが０のタイミングで発行された為、この命令は、ベクトル演算器３１１のスロット０を使用する演算とする。
・制御手段５において、発行手段１からの命令を、制御パス１３を経由して受け取る。レジスタ制御手段５１は、レジスタ手段２−１に対して、命令で指定されたＶＲからの読み出し指示および命令で指定されたＶＲへの書き込み指示を、制御パス５４−１を経由して送る。
・演算器制御手段５２は、演算器スロット０を使用する演算指示を、演算手段３−１へ、制御パス５５−１を経由して送る。
【００４９】
時刻Ｔ１では、次の処理を行う。
・ＲＰレジスタ２１４に、ＶＲ０要素０を読み出すためのポインタ０をセットする。
【００５０】
時刻Ｔ２では、次の処理を行う。
・ＲＤレジスタ２１５に、ＶＲ０要素０（Ａと表記、以下、Ａ）をセットする。
・ＲＰレジスタ２１４に、ＶＲ１要素０を読み出す為のポインタ４をセットする。
【００５１】
時刻Ｔ３では、次の処理を行う。
・レジスタ２２２−１に、ＲＤレジスタ２１５からのデータ（ＶＲ０要素０）をセットする。
・ＲＤレジスタ２１５に、ＶＲ１要素０（Ｂと表記、以下、Ｂ）をセットする。
・セレクタ２２３−１は、レジスタ２２２−１の上位４バイトを選択する。
【００５２】
時刻Ｔ４では、次の処理を行う。
・１ｓｔＯＰを扱う演算器データ結合手段３２−１において、セレクタ２２３−１が選択したデータ（ＶＲ０要素０の上位４バイト：Ａ０、以下、Ａ０）を、データパス２２４、データパス２４−１、クロスバ手段４、データパス３４−１、データパス３２１を経由して受け取り、レジスタ３２２−１にセットする。
・レジスタ２２２−２は、ＲＤレジスタ２１５からのデータ（ＶＲ１要素０：Ｂ）をセットする。
・セレクタ２２３−１では、レジスタ２２２−１の下位４バイトを選択する。
・セレクタ２２３−２では、レジスタ２２２−２の上位４バイトを選択する。
【００５３】
時刻Ｔ５では、次の処理を行う。
・１ｓｔＯＰを扱う演算器データ結合手段３２−１において、レジスタ３２３−１に、レジスタ３２２−１のデータ（ＶＲ０要素０の上位４バイト：Ａ０）をセットする。
・レジスタ３２２−１に、セレクタ２２３−１が選択したデータ（ＶＲ０要素０の下位４バイト：Ａ１と表記、以下Ａ１）を、上位４バイトと同様にセットする。
・２ｎｄＯＰを扱う演算器データ結合手段３２−２において、レジスタ３２２−１に、セレクタ２２３−２が選択したデータ（ＶＲ１要素０の上位４バイト：Ｂ０）を、データパス２２４、データパス２４−１、クロスバ手段４、データパス３４−１、データパス３２１を経由して、セットする。セレクタ２２３−２では、レジスタ２２２−２の下位４バイトを選択する。
【００５４】
時刻Ｔ６では、次の処理を行う。
・１ｓｔＯＰを扱う演算器データ結合手段３２−１において、レジスタ３２４−１に、レジスタ３２３−１を上位４バイト、レジスタ３２２−１を下位４バイトとした８バイトデータ（Ａ）をセットする。
・２ｎｄＯＰを扱う演算器データ結合手段３２−２において、レジスタ３２３−１に、レジスタ３２２−１のデータ（ＶＲ１要素０の上位４バイト：Ｂ０）をセットする。
・レジスタ３２２−１に、セレクタ２２３−２が選択したデータ（ＶＲ１要素０の下位４バイト：Ｂ１）を、上位４バイトと同様にセットする。
【００５５】
時刻Ｔ７では、次の処理を行う。
・１ｓｔＯＰを扱う演算器データ結合手段３２−１において、レジスタ３２４−１をホールドする。これは、演算対象となる１ｓｔＯＰと２ｎｄＯＰを同時にベクトル演算手段３１５へ送り込む為に、２ｎｄＯＰを待ち合わせる制御である。
・セレクタ３２５は、レジスタ３２４−１を選択する。
・２ｎｄＯＰを扱う演算器データ結合手段３２−２において、レジスタ３２４−１に、レジスタ３２３−１を上位４バイト、レジスタ３２２−１を下位４バイトとした８バイトデータ（Ｂ）をセットする。
・セレクタ３２５は、レジスタ３２４−１を選択する。
【００５６】
時刻Ｔ８では、次の処理を行う。
・ベクトル演算手段３１において、レジスタ３１２−１に、１ｓｔＯＰデータとしてＶＲ０要素０のデータを、演算器データ結合手段３２−１からデータパス３２６、データパス３１３−１を経由してセットする。
・レジスタ３１２−２に、２ｎｄＯＰデータとしてＶＲ１要素０のデータを、演算器データ結合手段３２−２からデータパス３２６、データパス３１３−２を経由してセットする。
【００５７】
時刻Ｔ９では、次の処理を行う。
・演算パイプライン０で、演算が行われる（ＡＢと表記、以下ＡＢ）。
【００５８】
時刻Ｔ１０では、次の処理を行う。
・演算パイプライン１で、演算が行われる（ＡＢ）。
【００５９】
時刻Ｔ１１では、次の処理を行う。
・レジスタ３１４に、ベクトル演算器３１１の演算結果（Ｒと表記、以下、Ｒ）をセットする。
【００６０】
時刻Ｔ１２では、次の処理を行う。
・レジスタ３３２−１に、レジスタ３１４のデータを、データパス３１５、データパス３３１を経由してセットする。
・セレクタ３３３−１は、レジスタ３３２−１の上位４バイトを選択する。
【００６１】
時刻Ｔ１３では、次の処理を行う。
・レジスタ手段２−１のレジスタデータ結合手段２３において、セレクタ３３３−１が選択したデータ（演算結果の上位４バイト：Ｒ０と記載、以下、Ｒ０）を、データパス３３４、クロスバ手段４、データパス２４−１を経由して受け取り、レジスタ２３２−１にセットする。演算の書き込みはＶＲ０であり、ＶＬ＝１の演算であるためＶＤＲのエントリ０への書き込みとなる。
・セレクタ３３３−１は、レジスタ３３２−１の下位４バイトを選択する。
【００６２】
時刻Ｔ１４では、次の処理を行う。
・レジスタ手段２−１のレジスタデータ結合手段２３において、レジスタ２３３−１に、レジスタ２３２−１のデータ（演算結果の上位４バイト：Ｒ０）をセットする。
・セレクタ３３３−１が選択したデータ（演算結果の下位４バイト：Ｒ１と表記、以下、Ｒ１）を、データパス３３４、クロスバ手段４、データパス２４−１を経由して受け取り、レジスタ２３２−１にセットする。
・セレクタ２３４は、レジスタ２３３−１を上位４バイト、レジスタ２３２−１を下位４バイトとしたデータを選択する。
【００６３】
時刻Ｔ１５では、次の処理を行う。
・セレクタ２３４が選択したデータ（Ｒ）を、データパス２３５、データパス２１６を経由してＷＤレジスタ２１２にセットする。
・ＷＰレジスタ２１３に、ＶＤＲ２１１への書き込みポインタ０（ＶＲ０要素０を指す）をセットする。
【００６４】
時刻Ｔ１６では、次の処理を行う。
・ＶＤＲ２１１に、ＷＤレジスタ２１２のデータ（Ｒ）を、ＷＰレジスタ２１３で指定されたエントリに格納する。
【００６５】
」
以上で、ＶＬ＝１（各ＶＲの要素０のみの演算）で、ＶＲ０とＶＲ１の要素を演算し、演算結果をＶＲ０へ書き込む命令の処理が完了する。
【００６６】
次に、図９を参照して発行手段１がＶＬ＝４でＶＲ０とＶＲ１の要素を演算し、演算結果をＶＲ０へ書き込む命令を発行した場合の動作を説明する。ＶＲ０とＶＲ１は、同一ＶＤＲにマッピングされているため、ＶＲ０要素０、ＶＲ１要素０、ＶＲ０要素１、ＶＲ１要素１の順に、ＶＲ０要素３、ＶＲ１要素３まで、指定された４個の要素数を読み出す。レジスタ手段２−１において、ＶＲ０要素０〜３は、ＶＤＲ２１１のエントリ０〜３、ＶＲ１要素０〜３は、ＶＤＲ２１１のエントリ４〜７にマッピングされている。演算結果は、ＶＲ０の要素０〜３に書き込む。
【００６７】
時刻Ｔ０では、次の処理を行う。
・発行手段１が、上記命令（以下、命令０）を発行する。前述したＶＬ＝１の場合と同様に、演算器スロットが０のタイミングで発行された為、ベクトル演算器３１１のスロット０を使用する演算となる。
・制御手段５において、レジスタ制御手段５１、演算器制御手段５２は、ＶＬ＝１の場合と同様の動作を行う。
【００６８】
時刻Ｔ１では、次の処理を行う。
・前述したＶＬ＝１の場合と同様に、ＲＰレジスタ２１４にＶＲ０要素０を読み出す為のポインタ０をセットする。以降、ＶＲ０要素０の処理は、ＶＬ＝１の場合と同様である。
【００６９】
時刻Ｔ２では、次の処理を行う。
・前述したＶＬ＝１の場合と同様に、ＲＰレジスタ２１４に、ＶＲ１要素０を読み出す為のポインタ４をセットする。以降、ＶＲ１要素０の処理は、ＶＬ＝１の場合と同様である。ＶＲ０要素０と、ＶＲ１要素１の演算、演算結果の書き込みは、ＶＬ＝１の場合と同様である。
【００７０】
ＶＲ０要素１〜３、ＶＲ１要素１〜３の処理は、次のように行う。
【００７１】
時刻Ｔ３では、次の処理を行う。
・ＲＰレジスタ２１４に、ＶＲ０要素１を読み出す為のポインタ１をセットする。以降、ＶＲ０要素１の処理は、ＶＲ０要素０の処理に対し、２Ｔ遅れで同様に行われる。
【００７２】
時刻Ｔ４では、次の処理を行う。
・ＲＰレジスタ２１４に、ＶＲ１要素１を読み出す為のポインタ５をセットする。以降、ＶＲ１要素１の処理は、ＶＲ１要素０の処理に対し、２Ｔ遅れで同様に行われる。
【００７３】
時刻Ｔ５では、次の処理を行う。
・ＲＰレジスタ２１４に、ＶＲ０要素２を読み出す為のポインタ２をセットする。以降、ＶＲ０要素２の処理は、ＶＲ０要素０の処理に対し、４Ｔ遅れで同様に行われる。
【００７４】
時刻Ｔ６では、次の処理を行う。
・ＲＰレジスタ２１４に、ＶＲ１要素２を読み出す為のポインタ６をセットする。以降、ＶＲ１要素２の処理は、ＶＲ１要素０の処理に対し、４Ｔ遅れで同様に行われる。
【００７５】
時刻Ｔ７では、次の処理を行う。
・ＲＰレジスタ２１４に、ＶＲ０要素３を読み出す為のポインタ３をセットする。以降、ＶＲ０要素３の処理は、ＶＲ０要素０の処理に対し、６Ｔ遅れで同様に行われる。
【００７６】
時刻Ｔ８では、次の処理を行う。
・ＲＰレジスタ２１４に、ＶＲ１要素３を読み出す為のポインタ７をセットする。以降、ＶＲ１要素３の処理は、ＶＲ１要素０の処理に対し、６Ｔ遅れで同様に行われる。
【００７７】
以上の説明から分かるように、時刻Ｔ１〜Ｔ８において、レジスタ手段２−１のＲＰレジスタ２１４の動きは、０、４、１、５、２、６、３、７となり、ＶＲ０、ＶＲ１を交互に、要素０〜３の順に読み出す。従って、ベクトル演算手段３１において、レジスタ３１２−１、３１２−２には、ＶＲ０、ＶＲ１からの要素０〜３が、それぞれＴ８、Ｔ１０、Ｔ１２、Ｔ１４と２時刻毎に、セットされる。また、ベクトル演算器３１１において、パイプラインの演算ステージ０へのデータ供給は、Ｔ９、Ｔ１１、Ｔ１３、Ｔ１５と２時刻毎に行われる。これは、ベクトル演算器３１１のパイプラインへ、２時刻毎に有効な入力データが供給されないタイミングが存在し、使用効率が５０％である事を意味する。また、レジスタ手段２−１において、ＷＤレジスタ２１２へは、演算結果がＴ１５、Ｔ１７、Ｔ１９、Ｔ２１にセットされる。ＶＤＲ２１１へは、それぞれＴ１６、Ｔ１８、Ｔ２０、Ｔ２２でＶＲ０要素０〜３として書き込まれる。
【００７８】
次に、図１０を参照して発行手段１が、ＶＬ＝１でＶＲ０とＶＲ１の要素を演算し、ＶＲ０へ書き込む命令（以降、命令０）と、ＶＬ＝１でＶＲ２とＶＲ３の要素を演算し、ＶＲ１へ書き込む命令（以降、命令１）とを発行した場合の動作を説明する。なお、命令０を発行した次時刻で、命令１を発行するものとする。また、ＶＲ２とＶＲ３の各要素は、それぞれレジスタ手段２−２のＶＤＲ２１１のエントリ０〜３、４〜７にマッピングされている。
【００７９】
命令０に関しては、前述の図８と同様である。命令０は、ベクトル演算器３１１のスロット０を使用する命令となる。
【００８０】
時刻Ｔ１では、次の処理を行う。
・発行手段１が、命令１を発行する。命令１は、演算器スロットが１のタイミングで発行された為、ベクトル演算器３１１のスロット１を使用する演算となる。命令１は、命令０の動作説明の、レジスタ手段２−１をレジスタ手段２−２、ＶＲ０、ＶＲ１をそれぞれＶＲ２、ＶＲ３に読み替え、命令０の１時刻後のタイミングでの動作となる。命令１に関し、図１０において、時刻Ｔ５以降、演算手段３−１にデータを受け取るタイミングからの説明を行う。
【００８１】
時刻Ｔ５では、次の処理を行う。
・１ｓｔＯＰを扱う演算器データ結合手段３２−１において、レジスタ手段２−２内のセレクタ２２３−１が選択したデータ（ＶＲ２要素０の上位４バイト：Ｃ０と表記、以下、Ｃ０）を、データパス２２４、データパス２４−２、クロスバ手段４、データパス３４−１、データパス３２１を経由して受け取り、レジスタ３２２−２にセットする。
【００８２】
時刻Ｔ６では、次の処理を行う。
・１ｓｔＯＰを扱う演算器データ結合手段３２−１において、レジスタ３２２−２のデータ（ＶＲ２要素０の上位４バイト：Ｃ０）をレジスタ３２３−２にセットする。レジスタ３２２−２に、レジスタ手段２−２内のセレクタ２２３−１が選択したデータ（ＶＲ２要素０の下位４バイト：Ｃ１と表記、以下、Ｃ１）を、上位４バイトと同様にセットする。
・２ｎｄＯＰを扱う演算器データ結合手段３２−２において、レジスタ手段２−２内のセレクタ２２３−２が選択したデータ（ＶＲ３要素０の上位４バイト：Ｄ０と表記、以下、Ｄ０）を、データパス２２４、データパス２４−２、クロスバ手段４、データパス３４−１、データパス３２１を経由して受け取り、レジスタ３２２−２にセットする。
【００８３】
時刻Ｔ７では、次の処理を行う。
・１ｓｔＯＰを扱う演算器データ結合手段３２−１において、レジスタ３２４−２に、レジスタ３２３−２を上位４バイト、レジスタ３２２−２を下位４バイトとした８バイトデータ（Ｃ）をセットする。
・２ｎｄＯＰを扱う演算器データ結合手段３２−２において、レジスタ３２３−２に、レジスタ３２２−２のデータ（ＶＲ３要素０の上位４バイト：Ｄ０）をセットする。
・レジスタ３２２−２に、レジスタ手段２−２内のセレクタ２２３−２が選択したデータ（ＶＲ３要素０の下位４バイト：Ｄ１と表記、以下、Ｄ１）を、上位４バイトと同様にセットする。
【００８４】
時刻Ｔ８では、次の処理を行う。
・１ｓｔＯＰを扱う演算器データ結合手段３２−１において、レジスタ３２４−２をホールドする。これは、演算対象となる１ｓｔＯＰと２ｎｄＯＰを同時にベクトル演算手段３１５へ送り込む為に、２ｎｄＯＰを待ち合わせる制御である。セレクタ３２５は、レジスタ３２４−２を選択する。
・２ｎｄＯＰを扱う演算器データ結合手段３２−２において、レジスタ３２４−２に、レジスタ３２３−２を上位４バイト、レジスタ３２２−２を下位４バイトとした８バイトデータ（Ｄ）をセットする。セレクタ３２５は、レジスタ３２４−２を選択する。
【００８５】
時刻Ｔ９では、次の処理を行う。
・ベクトル演算手段３１において、レジスタ３１２−１に、１ｓｔＯＰデータとしてＶＲ２要素０のデータ（Ｃ）を、演算器データ結合手段３２−１からデータパス３２６、データパス３１３−１を経由してセットする。
・レジスタ３１２−２に、２ｎｄＯＰデータとしてＶＲ３要素１のデータ（Ｄ）を、演算器データ結合手段３２−２からデータパス３２６、データパス３１３−２を経由してセットする。
【００８６】
時刻Ｔ１０では、次の処理を行う。
・演算パイプライン０で、演算が行われる（ＣＤと表記、以下ＣＤ）。
【００８７】
時刻Ｔ１１では、次の処理を行う。
・演算パイプライン１で、演算が行われる（ＣＤ）。
【００８８】
時刻Ｔ１２では、次の処理を行う。
・レジスタ３１４に、ベクトル演算器３１１の演算結果（Ｓと表記、以下、Ｓ）をセットする。
【００８９】
時刻Ｔ１３では、次の処理を行う。
・レジスタ３３２−２に、レジスタ３１４のデータ（Ｓ）を、データパス３１５、データパス３３１を経由して、セットする。
・セレクタ３３３−２は、レジスタ３３２−２の上位４バイトを選択する。
【００９０】
時刻Ｔ１４では、次の処理を行う。
・レジスタ手段２−１のレジスタデータ結合手段２３において、セレクタ３３３−２が選択したデータ（演算結果の上位４バイト：Ｓ０と表記、以下、Ｓ０）を、データパス３３４、クロスバ手段４、データパス２４−１を経由して受け取り、レジスタ２３２−２にセットする。演算の書き込みはＶＲ１であり、ＶＬ＝１の演算であるためＶＤＲのエントリ４への書き込みとなる。
・セレクタ３３３−２は、レジスタ３３２−２の下位４バイトを選択する。
【００９１】
時刻Ｔ１５では、次の処理を行う。
・レジスタ手段２−１のレジスタデータ結合手段２３において、レジスタ２３３−２に、レジスタ２３２−２のデータ（演算結果の上位４バイト：Ｓ０）をセットする。
・セレクタ３３３−２が選択したデータ（演算結果の下位４バイト：Ｓ１と表記、以下、Ｓ１）を、データパス３３４、クロスバ手段４、データパス２４−１を経由して受け取り、レジスタ２３２−２にセットする。
・セレクタ２３４は、レジスタ２３３−２を上位４バイト、レジスタ２３２−２を下位４バイトとしたデータを選択する。
【００９２】
時刻Ｔ１６では、次の処理を行う。
・ＷＤレジスタ２１２は、セレクタ２３４が選択したデータ（Ｓ）を、データパス２３５、データパス２１６を経由して受け取り、セットする。
・ＷＰレジスタ２１３に、ＶＤＲ２１１への書き込みポインタ４（ＶＲ１要素０を指す）をセットする。
【００９３】
時刻Ｔ１７では、次の処理を行う。
・ＷＤレジスタ２１２のデータ（Ｓ）を、ＶＤＲ２１１のＷＰレジスタ２１３で指定されたエントリに格納する。
【００９４】
以上で、ＶＬ＝１（各ＶＲの要素０のみの演算）で、ＶＲ０とＶＲ１の要素を演算し、演算結果をＶＲ０へ書き込む命令の処理が完了する。以上の説明から分かるように、ベクトル演算器３１１におけるパイプラインの演算ステージ０へのデータ供給は、命令０に関しては時刻Ｔ９で、命令１に関しては時刻Ｔ１０で行われる。これは、ベクトル演算器３１１のパイプラインへ連続して有効な入力データが供給され、使用効率が１００％である事を意味する。また、レジスタ手段２−１において、ＷＤレジスタ２１２へのデータセットは、命令０に関しては時刻Ｔ１５で、命令１に関しては時刻Ｔ１６に行われる。ＶＤＲ２１１への書き込みは、それぞれ時刻Ｔ１６、Ｔ１７で行われる。
【００９５】
次に、図１１を参照して、発行手段１がＶＬ＝４でＶＲ０とＶＲ１の要素を演算し、演算結果をＶＲ０へ書き込む命令（以降、命令０）と、ＶＬ＝４でＶＲ２とＶＲ３の要素を演算し、演算結果をＶＲ１へ書き込む命令（以降、命令１）を発行した場合の動作を説明する。なお、命令０を発行した次時刻で、命令１を発行するものとする。
【００９６】
命令０要素０〜３に関しては、前述の図９と同様である。命令１要素０に関しては、前述の図１０と同様である。命令０は、ベクトル演算器３１１のスロット０を使用する命令となる。命令１は、ベクトル演算器３１１のスロット１を使用する命令となる。
【００９７】
命令１のＶＲ２、ＶＲ３の要素１〜３の処理は、次のように行う。時刻Ｔ７以降、演算手段３−１にデータを受け取るタイミングからの説明を行う。ＶＲ２、ＶＲ３の要素１は、要素０よりも２Ｔ遅れで、同様の動作を行う。ＶＲ２、ＶＲ３の要素２は、要素０よりも４Ｔ遅れで、同様の動作を行う。ＶＲ２、ＶＲ３の要素３は、要素０よりも６Ｔ遅れで、同様の動作を行う。
【００９８】
従って、ベクトル演算手段３１において、レジスタ３１２−１、３１２−２には、命令０のＶＲ０、ＶＲ１からの要素０〜３が、それぞれ時刻Ｔ８、Ｔ１０、Ｔ１２、Ｔ１４と２時刻毎にセットされ、命令１のＶＲ２、ＶＲ３からの要素０〜３が、それぞれ時刻Ｔ９、Ｔ１１、Ｔ１３、Ｔ１５と２時刻毎にセットされる。これは、ベクトル演算器３１１のパイプラインへ、命令０のＶＲ０とＶＲ１の要素と、命令１のＶＲ２とＶＲ３の要素が入力データとして交互に、かつ、連続して供給され、使用率が１００％である事を意味する。ベクトル演算器３１１の演算結果を格納するレジスタ３１４に着目すると、ＶＬ＝４の２命令を演算する時間が８Ｔとなる。
【００９９】
また、レジスタ手段２−１において、ＷＤレジスタ２１２へは、命令０の演算結果が時刻Ｔ１５、Ｔ１７、Ｔ１９、Ｔ２１でセットされ、命令１の演算結果が時刻１６、Ｔ１８、Ｔ２０、Ｔ２２でセットされる。ＶＤＲ２１１へは、それぞれ時刻Ｔ１６、Ｔ１８、Ｔ２０、Ｔ２２でＶＲ０要素０〜３として、時刻Ｔ１７、Ｔ１９、Ｔ２１、Ｔ２３でＶＲ１要素０〜３として書き込まれる。これは、ＶＤＲ２１１へ、命令０と命令１の演算結果が、交互に、かつ、連続して書き込みが行われる事を意味する。
【０１００】
〔第１の実施の形態の効果〕
本実施の形態によれば、命令のオペランドによって指定された複数の操作対象が、同一物理ベクトルデータレジスタ上の複数の論理ベクトルデータレジスタに格納されている場合でも、演算効率を高いものにすることができる。その理由は、複数のオペランドデータを入力とし且つ複数のスロットで動作可能なベクトル演算器３１１と、発行する命令毎にその命令を実行するベクトル演算器のスロットを決定する発行手段１と、それぞれに複数の論理ベクトルデータレジスタがマッピングされた複数のＶＤＲ２１１（物理ベクトルデータレジスタ）と、複数のＶＤＲ毎に設けられたレジスタデータ分解手段２２（転送手段）であって、対応するＶＤＲから読み出された、上記命令の何れかのオペランドに対応するデータを、発行手段１で決定されたスロットで使用されるデータとして転送するレジスタデータ分解手段２２と、レジスタデータ分解手段２２から転送されてきたデータをベクトル演算器のスロット毎に整列させる演算器データ結合手段３２−１〜３２−ｐ（整列手段）とを備え、ベクトル演算器３１１が、各スロットにおいて演算器データ結合手段３２−１〜３２−ｐ（整列手段）で整列されたデータを使用してベクトル演算を行うようにしているからである。
【０１０１】
また、本実施の形態によれば、レジスタ手段２−１〜２−ｎと演算手段３−１〜３−ｍとの間のクロスバ手段４の設計において、遅延設計のマージンを確保でき、高周波数設計が可能となるという効果を得ることもできる。その理由は、レジスタ手段２−１〜２−ｎと演算手段３−１〜３−ｍとの間のデータパスにおいて、分割したデータを転送することにより、扱うデータ幅が減少（本実施の形態では、８バイト→４バイト）した為、制御信号で駆動するビット数が減り、制御信号が有効になるまでの時間が短くなるからである。
【０１０２】
〔本発明の第２の実施の形態〕
次に、本発明にかかるベクトル演算装置の第２の実施の形態について詳細に説明する。
【０１０３】
図１２を参照すると、本発明にかかるベクトル演算装置の第２の実施の形態は、発行手段１にデータ遅延管理手段１４が追加されている点、演算手段３−１〜３−ｍに演算器データ遅延手段３４が追加されている点、および制御手段５に遅延制御手段５４が追加されている点が、図１に示した第１の実施の形態と相違している。
【０１０４】
データ遅延管理手段１４は、レジスタ手段２−１〜２−ｎへの書き込みタイミングを管理し、異なるベクトル演算器３１１間で、同じ演算器スロット番号を使用した命令による、同一レジスタ手段への書き込みの有無を監視する。後続命令の演算結果のＶＤＲへの書き込みタイミングを遅らせるか否かの指示（以下、遅延指示）を、命令毎に命令発行と同時に制御パス１３を経由して制御手段５へ送る。
【０１０５】
遅延制御手段５４は、データ遅延管理手段１４からの指示に従い、演算結果を持ち回るか否かの指示（以下、持ち回り指示）を、制御パス５５−１〜５５−ｍを経由して該当する演算手段内の演算器データ遅延手段３４へ送る。
【０１０６】
演算器データ遅延手段３４は、遅延制御手段５４からの持ち回り指示により、演算器データ分解手段３３の出力データを持ち回るか、もしくは持ち回らずに出力する。
【０１０７】
図１３は、演算器データ遅延手段３４の構成例を示すブロック図である。演算器データ分割手段３３は、第一の実施例の形態と同様の構成である。
【０１０８】
演算器データ分解手段３３内にあるセレクタ３３３−１〜３３３−ｊからのデータを、データパス３３４を経由して受け取るレジスタ３４１−１〜３４１−ｊと、レジスタ３４１−１〜３４１−ｊ毎に設けられ、レジスタ３４１−１〜３４１−ｊもしくはデータパス３３４のどちらかを選択するセレクタ３４２−１〜３４２−ｊと、セレクタ３４２−１〜３４２−ｊの選択したデータを出力するデータパス３４３とで構成される。
【０１０９】
セレクタ３４２−１〜３４２−ｊは、遅延制御手段５４からの持ち回り指示が有る場合、レジスタ３４１−１〜３４１−ｊをそれぞれ選択し、遅延制御手段５４からの持ち回り指示が無い場合、データパス３３４（セレクタ３３３−１〜３３３−ｊの選択したデータ）をそれぞれ選択する。
【０１１０】
本実施の形態では、演算器データ分解手段３３のデータパス３３４は、演算器データ遅延手段３４に接続され、演算器データ遅延手段３４のデータパス３４３は、データパス３４−１に接続される。データパス３４３は、セレクタ３４２−１〜３４２−ｊからのデータを、それぞれ独立して転送する事が可能である。また、データパス３４３は、データパス３４−１と接続され、演算手段３−１からクロスバ手段４へのデータ転送を行う。
【０１１１】
〔第２の実施の形態の動作の説明〕
次に、本実施の形態の動作について詳細に説明する。なお、以下の説明では、レジスタ手段２−１〜２−ｎの台数を２台（ｎ＝２）、演算手段３−１〜３−ｍの台数を２台（ｍ＝２）とする。また、ＶＤＲ２１１には、２個の論理ベクトルデータレジスタ（ＶＲ）がマッピングされ、ＶＲは要素数が４（ｋ＝４）であるとする。また、レジスタ手段６−１には論理ベクトルデータレジスタＶ０、Ｖ１が、レジスタ手段６−２には論理ベクトルデータレジスタＶ２、Ｖ３がマッピングされるものとする。
【０１１２】
先ず、図１４を参照し、発行手段１がＶＬ＝１でＶＲ０とＶＲ１の要素を演算し、演算結果をＶＲ０へ書き込む命令（以下命令０）を発行した場合の動作を説明する。ここでは、先行する命令と命令０が、異なる演算手段の同一演算器スロット０を使用するタイミングで命令発行され、かつ、先行命令のＶＤＲ２１１への書き込みと命令０のＶＤＲ２１１への書き込みが競合するものとする。データ遅延管理手段１４において、この競合を検出し、命令０に対してＶＤＲへの書き込みタイミングを遅らせる場合について、命令０に関する動作を説明する。なお、競合が無い場合は、図８と同様である。
【０１１３】
時刻Ｔ０では、次の処理を行う。
・発行手段１が、命令０を発行する。演算器スロットが０のタイミングで発行された為、この命令は、ベクトル演算器３１１のスロット０を使用する演算となる。２つある演算手段３−１、３−２のうち、演算手段３−１側で演算されるものとし、命令０に演算手段３−１で演算する指示を付加する。
・データ遅延管理手段１４において、命令０に関し、演算結果をＶＤＲに書き戻すタイミングを遅らせる指示（以下、遅延指示）を出す。
・制御手段５において、発行手段１からの命令０と遅延指示を、制御パス１３を経由して受け取る。
・遅延制御手段５４において、遅延指示を受け取り、演算手段３−１へ演算結果を持ち回る指示（以下、持ち回り指示）を出す。
・演算手段３−１において、遅延制御手段５４からの持ち回り指示を、制御パス５５−１を経由して受け取る。
【０１１４】
時刻Ｔ０以降、時刻Ｔ１〜Ｔ１２は、図８と同様である。
【０１１５】
時刻Ｔ１３では、次の処理を行う。
・演算手段３−１の演算器データ遅延手段３４において、レジスタ３４１−１に、セレクタ３３３−１が選択したデータ（演算結果の上位４バイト：Ｒ０）をセットする。
・セレクタ３３３−１は、レジスタ３３２−１の下位４バイトを選択する。
・セレクタ３４２−１は、レジスタ３４１−１を選択する。
【０１１６】
時刻Ｔ１４では、次の処理を行う。
・レジスタ手段２−１のレジスタデータ結合手段２３において、セレクタ３４２−１が選択したデータ（演算結果の上位４バイト：Ｒ０）を、データパス３４３、クロスバ手段４、データパス２４−１を経由して受け取り、レジスタ２３２−１にセットする。
・レジスタ３４１−１に、セレクタ３３３−１が選択したデータ（演算結果の下位４バイト：Ｒ１）をセットする。
・セレクタ３４２−１は、レジスタ３４１−１を選択する。
【０１１７】
時刻Ｔ１５では、次の処理を行う。
・レジスタ手段２−１のレジスタデータ結合手段２３において、レジスタ２３３−１に、レジスタ２３２−１のデータ（演算結果の上位４バイト：Ｒ０）をセットする。
・セレクタ３４２−１が選択したデータ（演算結果の下位４バイト：Ｒ１）を、データパス３４３、クロスバ手段４、データパス２４−１を経由して受け取り、レジスタ２３２−１にセットする。
・セレクタ２３４は、レジスタ２３３−１を上位４バイト、レジスタ２３２−１を下位４バイトとしたデータを選択する。
【０１１８】
時刻Ｔ１６では、図８の時刻Ｔ１５と同様の処理を行う。
【０１１９】
時刻Ｔ１７では、図８の時刻Ｔ１６と同様の処理を行う。
【０１２０】
以上で、ＶＬ＝１（各ＶＲの要素０のみの演算）で、ＶＲ０とＶＲ１の要素を演算し、演算結果をＶＲ０へ書き込む命令の処理が完了する。図８と比較すると、ＶＤＲ２１１への書き込みが１時刻遅くなっている。
【０１２１】
次に、図１５を参照し、発行手段１がＶＬ＝４でＶＲ０とＶＲ１の要素を演算し、演算結果をＶＲ０に書き込む命令（以降命令０）と、ＶＬ＝４でＶＲ２とＶＲ３の要素を演算し、演算結果をＶＲ１へ書き込む命令（以降命令１）を発行した場合の動作を説明する。なお、命令０と命令１は、共に演算器スロットが０で発行され、書き込みタイミングが競合するものとする。データ遅延管理手段１４において、この競合を検出し、後続命令である命令１に対してＶＤＲへの書き込みタイミングを遅らせる制御を行う。
【０１２２】
命令０に関しては、前述の図９と同様の処理が行われる。
【０１２３】
命令１に関しては、以下に説明する。
【０１２４】
時刻Ｔ０では、次の処理が行われる。
・発行手段１が、命令０と命令１を発行する。演算器スロットが０のタイミングで発行された為、命令０、命令１は、ベクトル演算器３１１のスロット０を使用する演算となる。命令０、１には、それぞれ演算手段３−１、３−２において実行する旨の指示が命令制御手段１１で付加される。
・時分割制御手段１２において、命令０を演算手段３−１内ベクトル演算器３１１のスロット０で実行し、命令１を演算手段３−２内ベクトル演算器３１１のスロット０で実行すると判断する。
・データ遅延管理手段１４において、後続命令の命令１に関し、遅延指示を命令に付加する。
・制御手段５において、発行手段１からの命令１と遅延指示を、制御パス１３を経由して受け取る。
・遅延制御手段５４において、遅延指示を受け取り、演算手段３−２へ持ち回り指示を出す。
・演算手段３−２において、遅延制御手段５４からの持ち回り指示を、制御パス５５−２を経由して受け取る。
【０１２５】
以降、時刻Ｔ１〜Ｔ１２は、命令０と同様の処理となる（但し、ＶＲ０、ＶＲ１をＶＲ２、ＶＲ３に、レジスタ手段２−１をレジスタ手段２−２に、演算手段３−１を演算手段３−２と読み替える）。
【０１２６】
時刻Ｔ１３では、図１４の時刻Ｔ１３と同様の動作を行う（但し、演算手段３−１を３−２に、ＲをＳにそれぞれ読み替える）。
【０１２７】
以降、要素０に関しては、図１４と同様である（但し、ＶＲ０をＶＲ２、演算手段３−１を３−２に読み替える）。
【０１２８】
要素１、２、３については、要素０から２時刻、４時刻、６時刻遅れで同様である。
【０１２９】
ＷＤレジスタ２１２へのセットは、命令０に関しては、時刻Ｔ１５、Ｔ１７、Ｔ１９、Ｔ２１となる。命令１に関しては、時刻Ｔ１６、Ｔ１８、Ｔ２０、Ｔ２２となる。
【０１３０】
ＶＤＲ２１１への書き込みは、命令０に関しては、時刻Ｔ１６、Ｔ１８、Ｔ２０、Ｔ２２となる。また、命令１に関しては、時刻Ｔ１７、Ｔ１９、Ｔ２１、Ｔ２３となる。
【０１３１】
以上で、命令０、１の動作が完了する。
【０１３２】
〔第２の実施の形態の効果〕
第１の実施の形態では、命令１が時刻Ｔ０で発行された場合、ＷＤレジスタ２１２へのセットが、Ｔ１５、Ｔ１７、Ｔ１９、Ｔ２１となり、命令０と競合し、不正なデータとなる。このため、命令１をＴ０で発行する事が不可能となる。同様にＴ２、Ｔ４、Ｔ６でも発行する事が不可能となり、命令１は、命令発行に大きな制約を受け、性能低下することになる。しかし、本実施の形態では、命令１の演算結果の転送を遅延させることで、この競合を回避するようにしているので、命令発行タイミングの制約を無くし、性能低下を防ぐことが可能となる。また、第１の実施の形態と同様に、１つのベクトル演算器３１１を２命令で時分割して使用する事が可能である。従って、２つの演算手段３−１、３−２のそれぞれは、第１の実施の形態と同様に２命令を８Ｔで処理することができる。従って、１つの演算手段あたりの命令処理は、２命令を８Ｔで処理する事が可能となる為、演算手段あたりの命令処理性能は、第１の実施の形態、第２の実施の形態ともに同じである。
【産業上の利用可能性】
【０１３３】
本発明は、ベクトル演算を行うスーパーコンピュータ等に適用すると好適である。
【図面の簡単な説明】
【０１３４】
【図１】本発明にかかるベクトル演算装置の第１の実施の形態の構成例を示すブロック図である。
【図２】ベクトルデータレジスタ手段２１の構成例を示すブロック図である。
【図３】レジスタデータ分解手段２２の構成例を示すブロック図である。
【図４】レジスタデータ結合手段２３の構成例を示すブロック図である。
【図５】ベクトル演算手段３１の構成例を示すブロック図である。
【図６】演算器データ結合手段３２−１の構成例を示すブロック図である。
【図７】演算器データ分解手段３３の構成例を示すブロック図である。
【図８】ＶＬ＝１でＶＲ０とＶＲ１の要素を演算する命令が発行された場合の第１の実施の形態における動作を示すタイムチャートである。
【図９】ＶＬ＝４でＶＲ０とＶＲ１の要素を演算する命令が発行された場合の第１の実施の形態における動作を示すタイムチャートである。
【図１０】ＶＬ＝１でＶＲ０とＶＲ１の要素を演算する命令と、ＶＬ＝１でＶＲ２とＶＲ３の要素を演算する命令とが発行された場合の第１の実施の形態における動作を示すタイムチャートである。
【図１１】ＶＬ＝４でＶＲ０とＶＲ１の要素を演算する命令と、ＶＬ＝４でＶＲ２とＶＲ３の要素を演算する命令とが発行された場合の第１の実施の形態における動作を示すタイムチャートである。
【図１２】本発明にかかるベクトル演算装置の第２の実施の形態の構成例を示すブロック図である。
【図１３】演算器データ遅延手段３４の構成例を示すブロック図である。
【図１４】ＶＬ＝１でＶＲ０とＶＲ１の要素を演算する命令が発行された場合の第２の実施の形態の動作を示すタイムチャートである。
【図１５】ＶＬ＝４でＶＲ０とＶＲ１の要素を演算する命令と、ＶＬ＝４でＶＲ２とＶＲ３の要素を演算する命令とが発行された場合の第２の実施の形態における動作を示すタイムチャートである。
【図１６】従来技術を説明するためのブロック図である。
【図１７】ＶＬ＝４でＶＲ０とＶＲ１の要素を演算する命令が発行された場合の従来技術の動作を示すタイムチャートである。
【図１８】ＶＬ＝４でＶＲ０とＶＲ１の要素を演算する命令と、ＶＬ＝４でＶＲ２とＶＲ３の要素を演算する命令とが発行された場合の従来技術の動作を示すタイムチャートである。
【符号の説明】
【０１３５】
１…発行手段
１１…命令制御手段
１２…時分割制御手段
１４…データ遅延管理手段
２−１〜２−ｎ…レジスタ手段
２１…ベクトルデータレジスタ手段
２２…レジスタデータ分解手段
２３…レジスタデータ結合手段
３−１〜３−ｍ…演算手段
３１…ベクトル演算手段
３２−１〜３２−ｐ…演算器データ結合手段
３３…演算器データ分解手段
３４…演算器データ遅延手段
４…クロスバ手段
５…制御手段
５１…レジスタ制御手段
５２…演算器制御手段
５３…クロスバ制御手段
５４…遅延制御手段
【図１】
0004572941.tif 000002
【図２】
0004572941.tif 000003
【図３】
0004572941.tif 000004
【図４】
0004572941.tif 000005
【図５】
0004572941.tif 000006
【図６】
0004572941.tif 000007
【図７】
0004572941.tif 000008
【図８】
0004572941.tif 000009
【図９】
0004572941.tif 000010
【図１０】
0004572941.tif 000011
【図１１】
0004572941.tif 000012
【図１２】
0004572941.tif 000013
【図１３】
0004572941.tif 000014
【図１４】
0004572941.tif 000015
【図１５】
0004572941.tif 000016
【図１６】
0004572941.tif 000017
【図１７】
0004572941.tif 000018
【図１８】
0004572941.tif 000019