(57)【特許請求の範囲】
【請求項１】
ベクトル計算機におけるベクトルデータ拡散処理装置において、
条件付ベクトル演算における、ベクトルの各要素に対する分岐処理の有効無効を示すベクトルマスクを格納するマスクレジスタと、
前記マスクレジスタのデータを参照して、圧縮されたベクトルの各要素の拡散位置を算出する拡散位置算出部と、
前記拡散位置算出部による前記拡散位置の算出結果を格納する拡散位置格納部とを備え、
前記圧縮されたベクトルの拡散処理の実行前に、予め前記拡散位置算出部により前記拡散位置を算出して前記拡散位置格納部内に格納し、
前記圧縮されたベクトルの拡散処理の実行時に、前記拡散位置格納部内に格納された前記拡散位置を参照し、前記圧縮されたベクトルの各要素を拡散先のベクトルレジスタへ書込むことを特徴とするベクトル拡散処理装置。
【請求項２】
前記拡散位置格納部に格納される前記拡散位置を表すデータとして、
書込先のベクトルレジスタを備えるパイプのパイプ番号と、
前記書込先ベクトルレジスタ内の書込先ポインタを含むことを特徴とする請求項１に記載のベクトル拡散処理装置。
【請求項３】
前記拡散位置格納部に格納される前記拡散位置を基に、前記ベクトルの各要素に対し、パイプ間データ移送を制御するデータ移送制御部を備えることを特徴とする請求項２に記載のベクトル拡散処理装置。
【請求項４】
前記拡散位置格納部に格納される前記拡散位置を基に、前記ベクトルの各要素に対し、書込先である前記ベクトルレジスタ内における書込制御を行う書込制御部を備えることを特徴とする請求項３に記載のベクトル拡散処理装置。
【請求項５】
前記拡散位置を表すデータに前記パイプ番号と、前記書込先ポインタを含み、
前記データ移送制御部は、
前記パイプ番号を参照することにより、前記ベクトルのパイプ間データ移送を制御し、
前記書込制御部は、
前記書込先ポインタを参照することにより、前記書込先ベクトルレジスタ内における書込制御を行うことを特徴とする請求項４に記載のベクトル拡散処理装置。
【請求項６】
前記データ移送制御部と、前記書込制御部は、
互いに独立かつ並行して、拡散処理における個々の制御を実行することを特徴とする請求項５に記載のベクトル拡散処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、並列計算機におけるべクトル拡散処理装置に関し、特にべクトル拡散処理の高速化を実現するべクトル拡散処理装置に関する。
【０００２】
【従来の技術】
従来、べクトル演算処理は、コンピュータの処理を高速化するために用いられる技術であり、特にスーパーコンピュータにおいてほぼ全ての機種に採用されている。
【０００３】
スーパーコンピュータ等の大型計算機においては、行列計算やＦｏｒｔｒａｎのＤＯループのように、各データに対し同一の手順の演算を繰返し行う処理が多くの時間を占めている。べクトル演算処理は、こうした繰返し行う処理を高速化するために、各行列やデータをそれぞれにベクトルとしてまとめて１命令で行列の演算を実行するものであり、行列の各要素毎に１つずつ演算を行う必要がないために高速に処理が可能となる。この高速の処理は、各要素に対する命令を、”命令の呼出”、”命令の解読”、”アドレス計算”等々の部分に分けパイプライン制御により同時に並列に実行することにより行われる。
【０００４】
また、このようにベクトルにまとめられた各データは、途中で各データそれぞれ個別の処理を行う場合が多い。これには、ＦｏｒｔｒａｎのＤＯループ中にＩＦ文等の条件付演算を含む場合等がある。
【０００５】
ベクトルとして各データがまとめられた状態では、こうした条件付演算の処理は複雑になるが、しかし、この演算の処理を行う方法である条件付ベクトル演算の方法には、ベクトルマスクを用いる方式や、圧縮（又は収集）・拡散（又は伸長、拡張）を用いる方式等の多くの様々な方法がある。
【０００６】
ベクトルマスクを用いる条件付ベクトル演算の方法とは、演算対象のベクトルの要素数と同数のビット数を持つ”０”又は”１”のビット列のベクトルをベクトルマスクとして用いるものであり、ＩＦ文等の演算時にはベクトルマスクに、条件が成立する要素に対しては”１”を不成立の要素に対しては”０”を設定し、このベクトルマスクを参照することで演算対象のベクトルの条件の成立する要素のみにＴＨＥＮ文の側の処理結果を格納する処理方法である。このベクトルマスクを構成する各ビットを、マスクビットと言う。
【０００７】
このベクトルマスクを用いる方式では、ＴＨＥＮ文の側の演算処理を実際には全ての要素に対し実行した後で、条件不成立の（マスクビットが”０”の）要素に対しては演算結果の格納処理のみを抑止する方式である。よって、この方式では、条件不成立の要素に対しては無駄な演算を行っており、条件の成立する確立が低い場合には処理に多くの無駄な時間を必要とすることになる。
【０００８】
圧縮・拡散を用いる条件付ベクトル演算の方法とは、図７に示す様に、上述のベクトルマスクを用いて、演算対象のベクトルから条件の成立する要素（ＴＨＥＮ文の側の処理を行う要素）のみを順次抽出して並べることで圧縮された新たなベクトルを作成し、この圧縮されたベクトルに対してＴＨＥＮ文の側の処理を実行し、その結果を再びベクトルマスクを参照して元の形式に戻す（拡散する）処理方法である。
【０００９】
圧縮・拡散を用いる方式では、条件の成立する要素のみに対しＴＨＥＮ文の側の演算処理を実行するため、条件の成立する確立が低い場合や、また疎行列（行列の要素の多くが”０”である行列）の演算に用いる場合に適している。
【００１０】
しかし、上述の圧縮・拡散を用いる条件付ベクトル演算の方法では、通常の演算の他に特別に圧縮と拡散の処理を実行するため、この圧縮・拡散が高速に少ないステップで処理されることが望まれる。
【００１１】
特開平０９−０５４７６９号公報には、拡散処理を高速に行うための技術として、演算結果の格納前にレジスタ内で圧縮されたベクトルを、圧縮前のベクトル長に展開する処理を経由せずに、ベクトルの各要素に対し拡散後のアドレスを指定し直接に演算結果を格納する技術が記載されている。
【００１２】
これは、図７の例で説明すると特開平０９−０５４７６９号公報よりも以前では、圧縮されたベクトルに対し演算を行いベクトル”Ｂ０、Ｂ４、Ｂ６、Ｂ８、・・・”を得た後、この結果を格納してベクトル”Ｂ０、Ａ１、Ａ２、Ａ３、Ｂ４、Ａ５、Ｂ６、Ａ７、Ｂ８、・・・”を得る前に、一旦”Ｂ０、  ０、  ０、０、Ｂ４、  ０、Ｂ６、  ０、Ｂ８、・・・”の圧縮前のベクトル長の形への変換を経由していたが、特開平０９−０５４７６９号公報ではこの変換を経由せずに直接に演算結果を格納するのである。
【００１３】
また、上述の圧縮・拡散を用いる条件付ベクトル演算の方法では、拡散の処理に関し冗長な処理を含んでいる。
【００１４】
この冗長な処理とは、この圧縮されたベクトルの各要素の復元位置であるベクトルマスクのマスクビット有効（つまり、マスクビットが”１”あるもの）の位置を調べるために、要素を拡散させて書込む時にベクトルマスクのマスクビットを有効無効に関わらず全てを読込む処理を行うことである。
【００１５】
ベクトル演算は、高速処理を行うことを目的とするため、処理時間の短縮のために各処理が必要とするステップの数を可能な限り削減を行いシステムを構成するのであり、この冗長な処理を解消することが求められる。
【００１６】
従来の、この冗長な処理を解消するための技術としては、特開平０３−００６６６３号公報に、マスクレジスタにベクトルマスクが格納されベクトルの圧縮が行われた後で、ベクトルの拡散が実行されるよりも前に、つまり圧縮されたベクトルに対する演算処理が実行されている間に同時進行で、予めベクトルマスクから有効なマスクビットの間隔のデータを生成し、これを用いて拡散処理を行う技術がある。
【００１７】
このため拡散処理の実行時には、多くの数のマスクビットを有効無効に関わらず読込む冗長な処理を行う必要がなく、圧縮されたベクトルの要素の読出し毎に、順次この有効なマスクビットの間隔のデータを加算する処理を行うことで書込先の位置を得ている。この技術は、前述の特開平０９−０５４７６９号公報においても用いられている。
【００１８】
【発明が解決しようとする課題】
上述したように従来のベクトル拡散処理装置では、以下に述べるような問題点があった。
【００１９】
特開平０９−０５４７６９号公報に開示された従来のベクトル拡散処理装置では、圧縮されたベクトルの各要素に対し直接に拡散後のアドレスを指定するのみであるという問題点がある。演算結果の格納位置の指定は、高速化のためより詳細に、格納先のパイプの番号や各パイプ内のポインタにより指定することが望まれる。
【００２０】
特開平０３−００６６６３号公報に開示された従来のベクトル拡散処理装置では、個々の圧縮されたベクトルの要素の読出し毎に、順次有効なマスクビットの間隔のデータを加算する処理を行うことで書込先の位置を得るため、各要素の拡散処理毎に加算処理のステップを有するという問題点がある。高速処理のためには、必要とするステップの数は可能な限り少ないことが望まれる。
【００２１】
本発明の第１の目的は、ベクトル計算機の条件付ベクトル演算における拡散処理を、最小のステップでかつ他の処理に負担を与えることなく実現することにより、高速な処理を実現するベクトル拡散処理装置を提供することにある。
【００２２】
本発明の第２の目的は、圧縮されたベクトルの要素の拡散位置への書込処理において、効率的で高速な処理を実現するベクトル拡散処理装置を提供することにある。
【００２３】
【課題を解決するための手段】
上記目的を達成するため本発明のベクトル拡散処理装置は、条件付ベクトル演算における、ベクトルの各要素に対する分岐処理の有効無効を示すベクトルマスクを格納するマスクレジスタと、前記マスクレジスタのデータを参照して、圧縮されたベクトルの各要素の拡散位置を算出する拡散位置算出部と、前記拡散位置算出部による前記拡散位置の算出結果を格納する拡散位置格納部とを備え、前記圧縮されたベクトルの拡散処理の実行前に、予め前記拡散位置算出部により前記拡散位置を算出して前記拡散位置格納部内に格納し、前記圧縮されたベクトルの拡散処理の実行時に、前記拡散位置格納部内に格納された前記拡散位置を参照し、前記圧縮されたベクトルの各要素を拡散先のベクトルレジスタへ書込むことを特徴とする。
【００２４】
請求項２の本発明のベクトル拡散処理装置は、前記拡散位置格納部に格納される前記拡散位置を表すデータとして、書込先のベクトルレジスタを備えるパイプのパイプ番号と、前記書込先ベクトルレジスタ内の書込先ポインタを含むことを特徴とする。
【００２５】
請求項３の本発明のベクトル拡散処理装置は、前記拡散位置格納部に格納される前記拡散位置を基に、前記ベクトルの各要素に対し、パイプ間データ移送を制御するデータ移送制御部を備えることを特徴とする。
【００２６】
請求項４の本発明のベクトル拡散処理装置は、前記拡散位置格納部に格納される前記拡散位置を基に、前記ベクトルの各要素に対し、書込先である前記ベクトルレジスタ内における書込制御を行う書込制御部を備えることを特徴とする。
【００２７】
請求項５の本発明のベクトル拡散処理装置の前記データ移送制御部は、前記パイプ番号を参照することにより、前記ベクトルのパイプ間データ移送を制御し、前記書込制御部は、前記書込先ポインタを参照することにより、前記書込先ベクトルレジスタ内における書込制御を行うことを特徴とする。
【００２８】
請求項６の本発明のベクトル拡散処理装置の前記データ移送制御部と、前記書込制御部は、互いに独立かつ並行して、拡散処理における個々の制御を実行することを特徴とする。
【００２９】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して詳細に説明する。図１は、本発明の一実施の形態によるベクトル拡散処理装置の構成を示すブロック図である。
【００３０】
図１を参照すると、本発明の一実施の形態によるベクトル拡散処理装置は、ベクトルレジスタ１０ａ、１０ｂ、１０ｃ、１０ｄ、２０ａ、２０ｂ、２０ｃ、２０ｄと、ベクトルレジスタ間のデータの移送を行うデータ移送部３０と、ベクトルマスクマスクを格納するマスクレジスタ５０と、マスクレジスタ５０内のベクトルマスクを参照して圧縮されたベクトルの拡散位置を検出する拡散位置算出回路６０と、拡散位置算出回路６０の出力を格納する拡散位置バッファ７０と、データ移送部３０を制御するデータ移送制御回路８０と、拡散データ書込先のベクトルレジスタの書込を制御する書込制御回路９０を備える。
【００３１】
図２は、本発明の一実施の形態のマスクレジスタ５０と拡散位置バッファ７０の構成を示すブロック図である。
【００３２】
図２を参照すると、本発明の一実施の形態のマスクレジスタ５０と拡散位置バッファ７０の構成は、パイプ数がパイプ０〜３迄の４パイプであり、ベクトル拡散処理の実行によりパイプ０〜３のベクトルレジスタ１０ａ、１０ｂ、１０ｃ、１０ｄ内の圧縮されたベクトルデータがマスクレジスタ５０を参照し各要素をマスクビット有効な要素番号位置に配置し圧縮前のベクトルデータの形式に復元する拡散処理を行い、パイプ０〜３のベクトルレジスタ２０ａ、２０ｂ、２０ｃ、２０ｄに書込まれる。
【００３３】
パイプ０はベクトルレジスタ１０ａ、２０ａを有し、パイプ１はベクトルレジスタ１０ｂ、２０ｂを有し、パイプ２はベクトルレジスタ１０ｃ、２０ｃを有し、パイプ３はベクトルレジスタ１０ｄ、２０ｄを有する。
【００３４】
データ移送部３０は、データ移送制御回路８０によるパイプ間移送データの選択の制御により、各パイプが有するベクトルレジスタのパイプ間データ移送を行う。
【００３５】
マスクレジスタ５０は、ベクトルマスクを格納する。ベクトルマスクの要素である各マスクビットをベクトルレジスタの要素と対応させて圧縮・拡散の処理を実行するため、ベクトルレジスタと同数のベクトル要素数を持つ。
【００３６】
拡散位置算出回路６０は、マスクレジスタ５０に処理対象のベクトルマスクの格納後、ベクトル拡散の処理の実行前に、このベクトルマスクを参照してベクトルレジスタ１０ａ、１０ｂ、１０ｃ、１０ｄ内の圧縮されたベクトルの各要素の、書込先のベクトルレジスタ２０ａ、２０ｂ、２０ｃ、２０ｄへの拡散位置を判定する。この拡散位置の判定は、書込先パイプ番号と書込ポインタを求めるものであり、この求められた書込先パイプ番号と書込ポインタは拡散位置バッファ７０に対し書込まれる。
【００３７】
拡散位置バッファ７０は、拡散位置算出回路６０から送信される拡散位置のデータである書込先パイプ番号と書込ポインタを格納し、拡散処理の終了までこれを保持する。
【００３８】
拡散位置バッファ７０は、ベクトル拡散の処理の実行時には拡散位置のデータを毎サイクル出力を行い、書込先パイプ番号をデータ移送制御回路８０に、書込ポインタを書込制御回路９０に送信する。
【００３９】
データ移送制御回路８０は、拡散位置バッファ７０から受信した書込先パイプ番号のデータからデータ移送制御信号を生成し、データ移送部３０におけるパイプ間移送データの選択の制御を行う。
【００４０】
書込制御回路９０は、拡散位置バッファ７０から受信した書込ポインタによりベクトルレジスタへの拡散データ書込ポインタと書込信号を生成し、これを各ベクトルレジスタ２０ａ、２０ｂ、２０ｃ、２０ｄに対し送信し書込制御を実行する。各ベクトルレジスタ２０ａ、２０ｂ、２０ｃ、２０ｄでは、書込制御回路９０からの書込信号の受信により、拡散データ書込ポインタが指定する位置にベクトルの要素を書込む。
【００４１】
なお、本実施の形態の一実施例を示す図１、図２では、パイプ数が４パイプの例を表しているが、本発明は４パイプに限らず任意の複数本のパイプの構成の場合に対し適応されるものである。
【００４２】
次に、本実施の形態の動作について図面を参照し詳細に説明する。図５は、本発明の一実施の形態の拡散位置算出の処理を説明するためのフローチャートであり、図３は、本発明の一実施の形態のベクトルレジスタの構成と、ベクトルマスクの一例とこれに対応し各レジスタに格納されるデータを示すブロック図である。
【００４３】
以下、本実施例の拡散位置算出の処理を図１、図２に示された４パイプ構成時の場合に、図３に示されたベクトルマスクの一例”１０００１０１０１０００・・・”に対する処理を説明する。
【００４４】
図５を参照すると、本実施の形態の拡散位置算出の処理は、予め拡散処理の前に行われるものであり、まず始めに拡散位置算出回路６０は、マスクレジスタ５０のマスクビットを毎サイクル４パイプ分、ワード０から順次読出を実行する（ステップ５０１）。
【００４５】
そして、拡散位置算出回路６０は、読出したマスクビットからマスクビット有効箇所に対応するパイプ番号とベクトルレジスタの書込ポインタ（つまり、圧縮されたベクトルの拡散位置）を算出し（ステップ５０２）、拡散位置バッファ７０にこの格差位置のデータを格納する（ステップ５０３）。
【００４６】
ここで、図３に示されたベクトルマスク”１０００１０１０１０００・・・”は、冒頭の１２個のマスクビットに対して”ワード０・パイプ０”、”ワード１・パイプ０”、”ワード１・パイプ２”、”ワード２・パイプ０”が拡散位置として判定される。
【００４７】
図４は、本発明の一実施の形態の拡散位置バッファのデータ格納の構成を示すブロック図である。
【００４８】
図４を参照すると、拡散位置バッファは、拡散位置算出回路６０が判定した各要素の拡散位置を、書込ポインタ（つまりワード０〜３の番号）とパイプ番号の情報により、”ワード１・パイプ２”のようにして格納する。
【００４９】
また、拡散位置バッファ７０内のこれら各拡散位置の情報の格納位置は、図５に示す様に、ワード０からワード１以降に順に、各ワード内ではパイプ０からパイプ１以降に順次格納する。つまり、ワード０のパイプ３の次はワード１のパイプ０に位置に、順次圧縮ベクトルの各要素の拡散位置を示す情報を、拡散位置バッファ７０に格納していく。
【００５０】
以上の拡散位置算出処理を、ベクトルマスクの全てのマスクビットに対し実行する（ステップ５０４）。
【００５１】
次に、本発明の一実施の形態の拡散処理の動作について、図面を参照して詳細に説明する。図６は、本発明の一実施の形態の拡散処理をの動作を説明するためのフローチャートである。
【００５２】
図６を参照すると、まず圧縮されたベクトルに対する拡散処理が開始されると、拡散位置バッファ７０のワード０から順次毎サイクル４パイプ分の書込先の位置情報であるパイプ番号と書込ポインタの読出が実行され（ステップ６０１）、パイプ番号をデータ移送制御回路８０に、書込ポインタを書込制御回路９０に対し送信する。
【００５３】
同時に、データ移送部３０は、パイプ０〜３の各ベクトルレジスタ１０ａ、１０ｂ、１０ｃ、１０ｄから合計４パイプ分の圧縮されたベクトルデータを読出す（ステップ６０４）。
【００５４】
データ移送制御回路８０は、拡散位置バッファ７０から受信した書込先のパイプを表す位置情報であるパイプ番号を基に、データ移送部３０に対しベクトルデータの各要素のパイプ間移送の移送先の選択等の制御を行うことで、データ移送部３０は、ベクトルレジスタ１０ａ、１０ｂ、１０ｃ、１０ｄから読出した圧縮されたベクトルデータを拡散データとしてパイプ０〜３の拡散データ書込先のベクトルレジスタ２０ａ、２０ｂ、２０ｃ、２０ｄに対し送信する（ステップ６０５）。
【００５５】
書込制御回路９０は、拡散位置バッファ７０から受信した各パイプ内における書込み位置を表す位置情報である書込ポインタを基に、拡散データ書込先のベクトルレジスタ２０ａ、２０ｂ、２０ｃ、２０ｄに対し、書込ポインタ、書込信号を送信することによる書込制御を行う。
【００５６】
拡散データ書込先のベクトルレジスタ２０ａ、２０ｂ、２０ｃ、２０ｄは、書込制御回路９０の書込位置等の制御により、データ移送部３０から受信したベクトルの各要素を格納する（ステップ６０６）。
【００５７】
以上の拡散処理の動作を、１ベクトルマスクにより拡散位置バッファ７０内に格納された全ての位置情報に対し実行すると（ステップ６０７）、四本のパイプによる一組のベクトルの拡散処理が終了する。
【００５８】
以上のように、従来の技術ではマスクビットの有効無効に関わらずベクトルマスクを毎サイクル読出し、かつ、マスクレジスタ５０から直接毎サイクルパイプ数分のマスクビットを読出すことにより、データ移送部３０の制御とベクトルレジスタ２０ａ、２０ｂ、２０ｃ、２０ｄに対する書込ポインタの指定と、書込の制御を行うステップ数の多い処理を行っていたのに対して、本実施の形態によれば、書込処理の前に予め詳細な拡散位置のデータを算出し、かつこのデータを拡散位置バッファ７０内に書込先のパイプ番号と書込ポインタのデータとの組合せによる書込時に参照しやすい形式で格納し、さらに書込処理の実行時にはデータ移送制御回路８０と書込制御回路９０によりそれぞれ書込先のパイプの選択と、書込先のポインタの指定が行われるために少ないステップで高速に拡散処理が可能である。
【００５９】
以上好ましい実施の形態及び実施例をあげて本発明を説明したが、本発明は必ずしも上記実施の形態及び実施例に限定されるものではなく、その技術的思想の範囲内において様々に変形して実施することができる。
【００６０】
【発明の効果】
以上説明したように本発明のベクトル拡散処理装置によれば、以下のような効果が達成される。
【００６１】
第１に、ベクトル拡散の処理前に、圧縮されたベクトルの要素の拡散位置を算出し、かつその位置のデータを書込時に参照しやすい形式によりバッファ内に保存しておくことにより、拡散処理の実行時にはベクトルマスクの読込みや距離データの加算処理等の位置を算出するための処理が不要であり、少ないステップで高速に拡散処理が可能である。
【００６２】
第２に、圧縮されたベクトルの要素の拡散位置への書込処理において必要である２つの処理、つまり各要素に対し書込先のパイプの選択処理と、各パイプ内での書込先のポインタを指定する処理を、それぞれデータ移送制御回路８０と書込制御回路９０により、独立にかつ並行して処理を実行するために高速に拡散処理が可能である。
【図面の簡単な説明】
【図１】本発明の一実施の形態によるベクトル拡散処理装置の構成を示すブロック図である。
【図２】本発明の一実施の形態のマスクレジスタと拡散位置バッファの構成を示すブロック図である。
【図３】本発明の一実施の形態のベクトルレジスタの構成と、ベクトルマスクの一例とこれに対応し各レジスタに格納されるデータを示すブロック図である。
【図４】本発明の一実施の形態の拡散位置バッファのデータ格納の構成を示すブロック図である。
【図５】本発明の一実施の形態の拡散位置算出の処理を説明するためのフローチャートである。
【図６】本発明の一実施の形態の拡散処理の動作を説明するためのフローチャートである。
【図７】本発明の一実施の形態の圧縮・拡散の処理におけるベクトルの各要素への制御を説明するための図である。
【符号の説明】
１０ａ、１０ｂ、１０ｃ、１０ｄ  読出側のベクトルレジスタ
２０ａ、２０ｂ、２０ｃ、２０ｄ  書込側のベクトルレジスタ
３０  データ移送部
５０  マスクレジスタ
６０  拡散位置算出回路
７０  拡散位置バッファ
８０  データ移送制御回路
９０  書込制御回路
【図１】
0003583032.tif 000002
【図２】
0003583032.tif 000003
【図３】
0003583032.tif 000004
【図４】
0003583032.tif 000005
【図５】
0003583032.tif 000006
【図６】
0003583032.tif 000007
【図７】
0003583032.tif 000008