JP2004334297A - Parallel operation processor and parallel operation processing method - Google Patents
Parallel operation processor and parallel operation processing method Download PDFInfo
- Publication number
- JP2004334297A JP2004334297A JP2003125408A JP2003125408A JP2004334297A JP 2004334297 A JP2004334297 A JP 2004334297A JP 2003125408 A JP2003125408 A JP 2003125408A JP 2003125408 A JP2003125408 A JP 2003125408A JP 2004334297 A JP2004334297 A JP 2004334297A
- Authority
- JP
- Japan
- Prior art keywords
- data
- flag information
- processing
- value
- arithmetic
- 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.)
- Pending
Links
Images
Landscapes
- Multi Processors (AREA)
Abstract
Description
【0001】
【発明の属する技術分野】
本発明は、単一の命令コードに基づいて複数のデータを並列に処理する装置および方法に係り、特に、処理ステップ数の低減およびプログラムの簡素化を図るとともに製造コストを低減するのに好適な並列演算処理装置および並列演算処理方法に関する。
【0002】
【従来の技術】
SIMD(Single Instruction stream Multiple Data stream)型プロセッサは、複数のプロセッシング・エレメント(Processing Element)(以下、PEと略記する。)を備え、演算対象となる複数のデータを同一の命令で並列に処理するプロセッサである。そのため、条件分岐命令のように各PEごとに異なる処理を単一の命令では実行することができない。例えば、条件が真なら第1の値を用いて演算を行い、条件が偽なら第2の値を用いて演算を行うということを各PEごとに独立に行うためには、マスク演算を利用して4つの処理を経なければならない。
【0003】
従来のSIMD型プロセッサの構成を図6を参照しながら説明する。なお、説明の理解を容易にするため、以下、PEが4つの場合の構成を例にとって説明する。実際には、さらに複数のPEを備えているものもある。
図6は、従来のSIMD型プロセッサ200の構成を示すブロック図である。
SIMD型プロセッサ200は、図6に示すように、4つのPE0〜3と、命令コードをデコードして各PE0〜3の動作を制御する制御装置210とで構成されており、データを転送するための信号線であるバス39でD−ROM32a、P−ROM32b、D−RAM34aおよびP−RAM34bと相互にかつデータ授受可能に接続されている。そして、単一の命令コードに基づいて、演算対象となる複数のデータ(以下、演算対象オペランドという。)を読み込み、読み込んだ演算対象オペランドの各データをPE0〜3で並列に処理するようになっている。
【0004】
各PE0〜3は、複数のレジスタと、マスク演算に必要なマスク演算回路とを有し、制御装置210の制御により、D−RAM34aのデータをレジスタに読み込み、レジスタのデータに対してマスク演算その他の演算を行い、演算結果をレジスタに格納するようになっている。
マスク演算回路は、マスクベクトル(後述)を生成するマスクベクトル生成回路と、論理積(AND)演算を行うAND回路と、論理和(OR)演算を行うOR回路とで構成されている。
【0005】
各PE0〜3ごとに異なる処理を実行する場合を図7ないし図13を参照しながら説明する。
図7は、プロセッサを用いて処理させるための演算処理プログラムの例である。
図7の演算処理プログラムの目的は、各々N(=80)個の要素をもつデータA,B,X,Yをもとに、要素を特定する添字「i」ごとに、所定条件の成立の有無に応じて演算対象となるデータを選択し、データZに格納することである。
【0006】
図7の演算処理プログラムのデータと処理は、すべて添字「i」に対して相関をもたない。すなわち、異なる「i」ごとに独立して演算処理を行うことが可能であり、図7の演算処理プログラムは、N回の繰り返しを伴う処理をM個の並列プロセッサを用いることで、NがMの倍数の場合、繰り返しを伴う処理をN/M回に低減させることが可能である(それ以外ではN/M+1回となる。以下、単純化のためNはプロセッサ並列度の倍数と仮定する。)。
【0007】
図8は、図7の演算処理プログラムを4並列、すなわちPEを4個もつSIMDプロセッサ上で処理する際に、その過程を実際のSIMDプロセッサ上での処理に即したかたちで書き直したものである。
まず、図8においては、ループカウンタ「i」による繰り返しは、4個のPEで並列処理されることから、ループカウンタ「i」の増分ステップは、「1」から「4」となり、図7中で「i++」と記述されている部分が「i+=4」と変更される。これは、並列数4のプロセッサを用いることで繰り返しを伴う処理がN/4回に減少することに相当する。
【0008】
ここで、図8中で宣言されている変数「j」に関連した処理はSIMDプロセッサ上では、各々の演算が「j」番目のPEで処理されることを表しており、繰り返しのためのループカウンタではない。また、配列変数「a」、「b]、「x」、[y」、「z」は、PEが取り扱うレジスタに相当する。a[0]、b[0]、x[0]、y[0]、z[0]は、PE0に属するレジスタを表し、a[1]、b[1]、x[1]、y[1]、z[1]は、PE1に属するレジスタを表し、a[2]、b[2]、x[2]、y[2]、z[2]は、PE2に属するレジスタを表し、a[3]、b[3]、x[3]、y[3]、z[3]は、PE3に属するレジスタを表す。
【0009】
ステップS100は、D−RAM34aのデータを各PE0〜3のレジスタに格納するロード処理相当部であり、ステップS102は、所定条件の成立の有無に応じて演算対象となるデータを選択する演算処理相当部であり、ステップS104は、各PE0〜3のレジスタの内容をD−RAM34aに格納するストア処理相当部である。
【0010】
次に、ステップS100のロード処理相当部について詳細に説明する。
ステップS100のロード処理相当部は、ループカウンタ変数「j」によって繰り返し処理が行われるのではなく、実際には「j」番目のPEに処理が割り振られ並列に動作する。すなわち、ステップS200の処理は、「a[j]=A[i+j]」という処理がj=0〜3の4回繰り返して処理が行われるのではなく、「a[0]=A[i+0]」、「a[1]=A[i+1]」、「a[2]=A[i+2]」および「a[3]=A[i+3]」という処理が各PE0〜3で同時並行して実行される。
【0011】
同様に、ステップS202,S204,S206についても各PE0〜3で同時並列処理される。このように、S200,S202,S204,S206のような単一の命令で各PE0〜3が複数のデータを取り扱うのがSIMDプロセッサの基本原理である。
次に、ステップS102の処理の前にステップS400のストア処理相当部について説明する。
【0012】
ステップS400の処理もステップS100のロード処理相当部と同じように、ループカウンタ変数「j」によって繰り返し処理が行われるのではなく、実際には「j」番目のPEに処理が割り振られ並列に動作する。すなわち、「Z[i+j]=z[j]」という処理がj=0〜3の4回繰り返して処理が行われるのではなく、「Z[i+0]=z[0]」、「Z[i+1]=z[1]」、「Z[i+2]=z[2]」および「Z[i+3]=z[3]」という処理が各PE0〜3で同時並行して実行される。
【0013】
戻って、ステップS102の処理について詳細に説明する。
ステップS102の処理内容も各々のデータ間に相関がないため、ステップS100やステップS104と同じように一見するとSIMDプロセッサによる処理が可能なように見受けられるが、ステップS300の処理結果に応じてステップS302を実行しなければならないPEと、ステップS304を実行しなければならないPEが現れるため、そのままでは単一の命令を旨とするSIMDプロセッサでの処理は行えない。
【0014】
この問題を解決するために従来のSIMDプロセッサでは、マスク演算処理と呼ばれる技法を用いて処理をしていた。
ステップS102の処理をマスク演算を用いて記述し直したものを図13に示し、その詳細について説明する。
図9は、PE0〜3でマスクベクトルを生成する場合を示す図である。
【0015】
マスク演算のうち第1の処理では、図9に示すように、各PE0〜3ごとに、条件の成立の有無に応じたマスクベクトルを生成する。マスクベクトルとは、変数x[],y[],z[]のデータ長に応じたビット数を有し、それらすべてのビットが「1」または「0」となるデータである。各PE0〜3では、変数a[j]の値が変数b[j]の値よりも小さいときは、条件が真であるとして、すべてのビットが「1」となるマスクベクトルを生成する。また、変数a[j]の値が変数b[j]の値以上であるときは、条件が偽であるとして、すべてのビットが「0」となるマスクベクトルを生成する。図9の例では、PE0、PE1およびPE3については条件が真となっているので、すべてのビットが「1」となるマスクベクトルが生成されるのに対して、PE2については条件が偽となっているので、すべてのビットが「0」となるマスクベクトルが生成される。
【0016】
図10は、PE0〜3で変数x[j]の値とマスクベクトルとを論理積演算する場合を示す図である。
マスク演算のうち第2の処理では、図10に示すように、各PE0〜3ごとに、条件が真の場合にPE0〜3の各レジスタに代入する値である変数x[j]の値と、第1の処理で生成したマスクベクトルとの論理積をとる。図10の例では、PE0、PE1およびPE3についてはマスクベクトルが「1」となっているので、論理積演算の結果として変数x[j]の値が出力されるのに対して、PE2についてはマスクベクトルが「0」となっているので、論理積演算の結果としてマスクベクトルの値「0」が出力される。
【0017】
図11は、PE0〜3で変数y[j]の値とマスクベクトルの反転値とを論理積演算する場合を示す図である。
マスク演算のうち第3の処理では、図11に示すように、各PE0〜3ごとに、条件が偽の場合にPE0〜3の各レジスタに代入する値である変数y[j]の値と、第1の処理で生成したマスクベクトルの反転値との論理積をとる。図11の例では、PE0、PE1およびPE3についてはマスクベクトルの反転値が「0」となるので、論理積演算の結果としてマスクベクトルの反転値「0」が出力されるのに対して、PE2についてはマスクベクトルの反転値が「1」となるので、論理積演算の結果として変数y[j]の値が出力される。
【0018】
図12は、PE0〜3で第2の処理の演算結果と第3の処理の演算結果とを論理和演算する場合を示す図である。
マスク演算のうち第4の処理では、図12に示すように、各PE0〜3ごとに、第2の処理の演算結果と第3の処理の演算結果との論理和をとる。図12の例では、PE0、PE1およびPE3については、第2の処理の演算結果が変数x[j]の値であり、第3の処理の演算結果がマスクベクトルの反転値「0」であるので、論理和演算の結果として変数x[j]の値が出力されるのに対して、PE2については、第2の処理の演算結果がマスクベクトル「0」であり、第3の処理の演算結果が変数y[j]の値であるので、論理和演算の結果として変数y[j]の値が出力される。
【0019】
したがって、ステップS102のデータ演算処理をマスク演算を用いた処理として書き換えると、図13に示すようになる。
図13は、マスク演算を用いたデータ演算処理を示すプログラムである。
データ演算処理は、ステップS102において実行されると、図13に示すように、まず、配列型の変数t[4]を確保し、ループカウンタ変数jに「0」を設定し、ステップS310に移行するようになっている。
【0020】
ステップS310では、変数a[j]の値が変数b[j]の値よりも小さいときは、すべてのビットが「1」となるマスクベクトルを変数t[j]に設定し、変数a[j]の値が変数b[j]の値以上であるときは、すべてのビットが「0」となるマスクベクトルを変数t[j]に設定し、ステップS312に移行する。なお、図13においては、すべてのビットが「1」となるマスクベクトルを補数表現しているため「−1」と表記している。
【0021】
ステップS312では、変数x[j]の値と変数t[j]の値との論理積をとったものを変数x[j]の新たな値として設定し、ステップS314に移行して、変数y[j]の値と変数t[j]の反転値との論理積をとったものを変数y[j]の新たな値として設定し、ステップS316に移行して、変数x[j]の値と変数y[j]の値との論理和をとったものを変数z[j]の値として設定する。
【0022】
なお、従来のSIMD型プロセッサについては、例えば、非特許文献1に開示されている技術が広く知られている。
【0023】
【非特許文献1】
「インテル(R)アーキテクチャ最適化リファレンスマニュアル」5−22ページ「条件付移動」、http://www.intel.co.jp/jp/developer/download/index.htm、資料番号:730795J−001
【0024】
【発明が解決しようとする課題】
このように、従来のSIMD型プロセッサ200では、各PE0〜3ごとに条件の成立の有無に応じて演算対象となるデータを選択する処理を実行する場合に、マスク演算として4つの処理を経なければならないため、プログラムとしてマスクベクトル生成命令語および論理演算命令語を用意し、さらに、SIMD型プロセッサ200にマスク演算回路を実装する必要がある。したがって、処理ステップ数が大きくなるとともにプログラムが煩雑となり、マスク演算回路の実装にコストを要するという問題があった。
【0025】
そこで、本発明は、このような従来の技術の有する未解決の課題に着目してなされたものであって、処理ステップ数の低減およびプログラムの簡素化を図るとともに製造コストを低減するのに好適な並列演算処理装置および並列演算処理方法を提供することを目的としている。
【0026】
【課題を解決するための手段】
上記目的を達成するために、本発明に係る請求項1記載の並列演算処理装置は、複数の演算器を備え、単一の命令コードに基づいて、前記複数の演算器を並列に動作させて複数のデータを並列に処理する装置であって、前記複数のデータは、前記各演算器に対応したサブセットを含み、前記各演算器は、フラグ情報を記憶するためのフラグ情報記憶手段と、前記フラグ情報記憶手段のフラグ情報に基づいて当該演算器の演算対象となるデータを当該演算器に対応するサブセットのなかから選択するデータ選択手段とを有する。
【0027】
このような構成であれば、各演算器についてのフラグ情報が各フラグ情報記憶手段に記憶され、単一の命令コードが与えられると、各演算器では、データ選択手段により、フラグ情報記憶手段のフラグ情報に基づいてその演算器の演算対象となるデータがその演算器に対応するサブセットのなかから選択される。
これにより、条件の成立の有無を示すフラグ情報を各フラグ情報記憶手段に設定するだけで、各演算器ごとに、条件の成立の有無に応じて演算対象となるデータを単一の命令コードで選択することができる。
【0028】
ここで、フラグ情報は、演算器の演算対象となるデータをサブセットのなかから選択するのに必要な情報であって、例えば、「0」または「1」の2値の状態を取り得る情報であってもよいし、より多値の状態を取り得る情報であってもよい。以下、請求項3記載の並列演算処理方法において同じである。
さらに、本発明に係る請求項2記載の並列演算処理装置は、請求項1記載の並列演算処理装置において、前記データ選択手段は、前記フラグ情報が第1の状態であるときは、前記複数のデータのうち当該演算器に対応する第1の位置のデータを取得し、前記フラグ情報が第2の状態であるときは、前記複数のデータのうち当該演算器に対応する第2の位置のデータを取得するようになっている。
【0029】
このような構成であれば、各演算器では、設定されたフラグ情報が第1の状態であると、データ選択手段により、複数のデータのうちその演算器に対応する第1の位置のデータが取得される。また、設定されたフラグ情報が第2の状態であると、データ選択手段により、複数のデータのうちその演算器に対応する第2の位置のデータが取得される。
【0030】
一方、上記目的を達成するために、本発明に係る請求項3記載の並列演算処理方法は、単一の命令コードに基づいて、複数の演算器を並列に動作させて複数のデータを並列に処理する方法であって、前記複数のデータは、前記各演算器に対応したサブセットを含み、前記各演算器ごとにフラグ情報を記憶するフラグ情報記憶ステップと、前記各演算器ごとに、前記フラグ情報記憶ステップで記憶したフラグ情報のうち当該演算器に対応するものに基づいて、当該演算器の演算対象となるデータを当該演算器に対応するサブセットのなかから選択するデータ選択ステップとを含む。
【0031】
さらに、本発明に係る請求項4記載の並列演算処理方法は、請求項3記載の並列演算処理方法において、前記データ選択ステップは、前記各演算器ごとに、当該演算器に対応するフラグ情報が第1の状態であるときは、前記複数のデータのうち当該演算器に対応する第1の位置のデータを取得し、当該演算器に対応するフラグ情報が第2の状態であるときは、前記複数のデータのうち当該演算器に対応する第2の位置のデータを取得する。
【0032】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照しながら説明する。図1ないし図5は、本発明に係る並列演算処理装置および並列演算処理方法の実施の形態を示す図である。
本実施の形態は、本発明に係る並列演算処理装置および並列演算処理方法を、図1に示すように、条件の成立の有無に応じて演算対象となるデータを選択する処理をSIMD型プロセッサ100に実行させる場合について適用したものである。
【0033】
まず、本発明に係るSIMD型プロセッサ100の構成を図1を参照しながら説明する。なお、発明の理解を容易にするため、以下、PEが4つの場合の構成を例にとって説明する。実際には、さらに複数のPEを備えていてもよい。
図1は、本発明に係るSIMD型プロセッサ100の構成を示すブロック図である。
【0034】
SIMD型プロセッサ100は、図1に示すように、4つのPE0〜3と、命令コードをデコードして各PE0〜3の動作を制御する制御装置110とで構成されており、データを転送するための信号線であるバス39でD−ROM32a、P−ROM32b、D−RAM34aおよびP−RAM34bと相互にかつデータ授受可能に接続されている。そして、単一の命令コードに基づいて、演算対象オペランドを読み込み、読み込んだ演算対象オペランドの各データをPE0〜3で並列に処理するようになっている。
【0035】
次に、PE0の構成を図2を参照しながら詳細に説明する。なお、各PE0〜3は、いずれも同一機能を有して構成されているため、以下、PE0の構成について説明し、PE1〜3の構成については説明を省略する。
図2は、PE0の構成を示すブロック図である。
PE0は、図2に示すように、複数のレジスタ10と、レジスタ10のデータに対して演算を行う演算部12と、フラグビットを記憶するためのフラグビット記憶部14とで構成されている。
【0036】
演算部12は、制御装置110の制御により、D−RAM34aのデータをレジスタ10に読み込み、レジスタ10のデータに対して演算を行い、演算結果をレジスタ10に格納するようになっている。また、フラグビットが「0」であるときは、演算対象オペランドのうちPE0に対応する第1の位置のデータをレジスタ10に読み込み、フラグビットが「1」であるときは、演算対象オペランドのうちPE0に対応する第2の位置のデータをレジスタ10に読み込むようになっている。
【0037】
次に、SIMD型プロセッサ100に実行させるための処理を図3を参照しながら説明する。
図3は、図8の演算処理のうち、ステップS102の部分を本発明によるSIMDプロセッサに実装する際の動作を表したものである。
図8の演算処理のうち、ステップS100,S104については従来のSIMDプロセッサと同じように処理が行われる。
【0038】
図3に表したデータ処理の特徴は、各PE内にプログラム上では、_Bool型(C言語では、ISO/IEC 9899:1999から導入された整数型であり、真偽値のみを表す)に相当するフラグを設け、条件判断の結果を格納することにある。
ここで、図8中で宣言されている変数「j」に関連した処理は従来のSIMDプロセッサに関する説明で用いた意味と同じであり、各々の演算が「j]番目のPEで処理されることを表しており、繰り返しのためのループカウンタではない。プログラム上の変数についても同様で、配列変数「a」、「b」、「x」、「y」、「z」は、PE取り扱うレジスタに相当する。a[0]、b[0]、x[0]、y[0]、z[0]は、PE0に属するレジスタを表し、a[1]、b[1]、x[1]、y[1]、z[1]は、PE1に属するレジスタを表し、a[2]、b[2]、x[2]、y[2]、z[2]は、PE2に属するレジスタを表し、a[3]、b[3]、x[3]、y[3]、z[3]は、PE3に属するレジスタを表す。加えて、「t」は各PEに含まれるフラグを表し、t[0]はPE0に属するフラグ、t[1]はPE1に属するフラグ、t[2]はPE2に属するフラグ、t[3]はPE3に属するフラグを意味する。
【0039】
図3中ステップS302では、各PE0〜3がa[j]とb[j]に相当するレジスタの値を比較し、a[j]の値がb[j]の値より小さい場合にはフラグt[j]に真値「true」を設定し、a[j]の値がb[j]の値以上である場合にはフラグt[j]に偽値「false」を設定するという動作を同時並列に行う。
図4は、ステップS320に対応する本発明のSIMDプロセッサの動作とデータの流れを表したものである。
【0040】
図4中では、演算結果のフラグ値として、t[0]=1、t[1]=1、t[2]=0、t[3]=1となる場合を表している。
次に、図3のステップS322では、各PE0〜3がステップS320で設定されたフラグ値t[j]に応じてt[j]が真値であるときは、x[j]の値を演算結果レジスタz[j]に代入し、t[j]が偽値であるときは、y[j]の値を演算結果レジスタz[j]に代入する動作を同時並列に行う。
【0041】
図5は、ステップS322に対応する本発明のSIMDプロセッサの動作とデータの流れを表したものである。
各PE0〜3では、フラグビットが設定され、単一の命令コードが与えられると、図5に示すように、演算部12により、フラグビットが「1」であるときは、演算対象オペランドのうち変数x[j]の値がレジスタ10に設定される。これに対して、フラグビットが「0」であるときは、演算対象オペランドのうち変数y[j]の値がレジスタ10に設定される。図5の例では、PE0、PE1およびPE3についてはフラグビットが「1」なので、それらPEの各レジスタ10に変数x[j]の値が設定されるのに対して、PE2についてはフラグビットが「0」なので、PE2のレジスタ10に変数y[j]の値が設定される。
【0042】
したがって、従来のSIMD型プロセッサ200と比較した場合、従来のSIMD型プロセッサ200は、図13に示すように、1つのPEにつきステップS310〜S316の4つの処理を要していたのに対して、本発明に係るSIMD型プロセッサ100は、図3に示すように、1つのPEにつきステップS320,S322の2つの処理で足りる。
【0043】
このようにして、本実施の形態では、各PE0〜3は、フラグビットを記憶するためのフラグビット記憶部14と、フラグビット記憶部14のフラグビットに基づいてそのPEの演算対象となるデータを演算対象オペランドのなかから選択する演算部12とを備える。
これにより、条件の成立の有無を示すフラグビットをフラグビット記憶部14に設定するだけで、条件の成立の有無に応じて演算対象となるデータを単一の命令コードで選択することができる。したがって、従来に比して、処理ステップ数を低減することができるとともにプログラムを簡素化することができる。また、SIMD型プロセッサ100にマスク演算回路を実装する必要がないので、従来に比して、製造コストを比較的低減することができる。
【0044】
さらに、本実施の形態では、演算部12は、フラグビットが「0」であるときは、演算対象オペランドのうちPE0に対応する第1の位置のデータをレジスタ10に読み込み、フラグビットが「1」であるときは、演算対象オペランドのうちPE0に対応する第2の位置のデータをレジスタ10に読み込むようになっている。
【0045】
これにより、条件が真なら第1の値を用いて演算を行い、条件が偽なら第2の値を用いて演算を行うという条件分岐処理を単一の命令コードで実現することができる。
上記実施の形態において、PE0〜3は、請求項1ないし4記載の演算器に対応し、フラグビット記憶部14は、請求項1記載のフラグ情報記憶手段に対応し、演算部12は、請求項1または2記載のデータ選択手段に対応している。
【0046】
なお、上記実施の形態においては、4つのPEを設けて構成したが、これに限らず、2つまたは3つのPEを設けて構成することもできるし、5つ以上のPEを設けて構成することもできる。
また、上記実施の形態においては、本発明に係る並列演算処理装置および並列演算処理方法を、図1に示すように、条件の成立の有無に応じて演算対象となるデータを選択する処理をSIMD型プロセッサ100に実行させる場合について適用したが、これに限らず、本発明の主旨を逸脱しない範囲で他の場合にも適用可能である。
【0047】
【発明の効果】
以上説明したように、本発明に係る請求項1または2記載の並列演算処理装置によれば、条件の成立の有無を示すフラグ情報をフラグ情報記憶手段に設定するだけで、条件の成立の有無に応じて演算対象となるデータを単一の命令コードで選択することができる。したがって、従来に比して、処理ステップ数を低減することができるとともにプログラムを簡素化することができるという効果が得られる。また、マスク演算回路を実装する必要がないので、従来に比して、製造コストを比較的低減することができるという効果も得られる。
【0048】
さらに、本発明に係る請求項2記載の並列演算処理装置によれば、条件が真なら第1の値を用いて演算を行い、条件が偽なら第2の値を用いて演算を行うという条件分岐処理を単一の命令コードで実現することができるという効果も得られる。
一方、本発明に係る請求項3または4記載の並列演算処理方法によれば、請求項1の並列演算処理装置と同等の効果が得られる。
【0049】
さらに、本発明に係る請求項4記載の並列演算処理方法によれば、請求項2の並列演算処理装置と同等の効果も得られる。
【図面の簡単な説明】
【図1】本発明に係るSIMD型プロセッサ100の構成を示すブロック図である。
【図2】PE0の構成を示すブロック図である。
【図3】図8の演算処理のうち、ステップS102の部分を本発明によるSIMDプロセッサに実装する際の動作を表したものである。
【図4】ステップS320に対応する本発明のSIMDプロセッサの動作とデータの流れを表したものである。
【図5】ステップS322に対応する本発明のSIMDプロセッサの動作とデータの流れを表したものである。
【図6】従来のSIMD型プロセッサ200の構成を示すブロック図である。
【図7】プロセッサを用いて処理させるための演算処理プログラムの例である。
【図8】図7の演算処理プログラムを4並列、すなわちPEを4個もつSIMDプロセッサ上で処理する際に、その過程を実際のSIMDプロセッサ上での処理に即したかたちで書き直したものである。
【図9】PE0〜3でマスクベクトルを生成する場合を示す図である。
【図10】PE0〜3で変数x[j]の値とマスクベクトルとを論理積演算する場合を示す図である。
【図11】PE0〜3で変数y[j]の値とマスクベクトルの反転値とを論理積演算する場合を示す図である。
【図12】PE0〜3で第2の処理の演算結果と第3の処理の演算結果とを論理和演算する場合を示す図である。
【図13】マスク演算を用いたデータ演算処理を示すプログラムである。
【符号の説明】
10 レジスタ
12 演算部
14 フラグビット記憶部
32a D−ROM
32b P−ROM
34a D−RAM
34b P−RAM
100,200 SIMD型プロセッサ
110,210 制御装置
PE0〜3 プロセッシング・エレメント[0001]
TECHNICAL FIELD OF THE INVENTION
The present invention relates to an apparatus and a method for processing a plurality of data in parallel based on a single instruction code, and is particularly suitable for reducing the number of processing steps, simplifying a program, and reducing manufacturing costs. The present invention relates to a parallel processing device and a parallel processing method.
[0002]
[Prior art]
A SIMD (Single Instruction Stream Multiple Data stream) type processor includes a plurality of processing elements (Processing Elements) (hereinafter abbreviated as PEs) and processes a plurality of data to be operated in parallel with the same instruction. Processor. Therefore, different processing for each PE, such as a conditional branch instruction, cannot be executed by a single instruction. For example, in order to perform the operation using the first value if the condition is true and to perform the operation using the second value if the condition is false independently for each PE, a mask operation is used. Have to go through four processes.
[0003]
The configuration of a conventional SIMD processor will be described with reference to FIG. Note that, in order to facilitate understanding of the description, a configuration in the case of four PEs will be described below as an example. In fact, some have a plurality of PEs.
FIG. 6 is a block diagram showing a configuration of a conventional
As shown in FIG. 6, the
[0004]
Each of the
The mask operation circuit includes a mask vector generation circuit that generates a mask vector (described later), an AND circuit that performs a logical product (AND) operation, and an OR circuit that performs a logical sum (OR) operation.
[0005]
The case where different processing is executed for each of
FIG. 7 is an example of an arithmetic processing program for processing using a processor.
The purpose of the arithmetic processing program in FIG. 7 is to determine whether a predetermined condition is satisfied for each subscript “i” specifying an element based on data A, B, X, and Y each having N (= 80) elements. That is, data to be operated is selected according to the presence or absence, and stored in the data Z.
[0006]
All of the data and processing of the arithmetic processing program in FIG. 7 have no correlation with the subscript “i”. That is, the arithmetic processing can be independently performed for each different “i”, and the arithmetic processing program in FIG. 7 uses M parallel processors to perform the processing that involves N repetitions, so that N becomes M , It is possible to reduce the number of processes involving repetition to N / M times (otherwise, N / M + 1 times. Hereinafter, for simplicity, it is assumed that N is a multiple of the processor parallelism. ).
[0007]
FIG. 8 is a diagram in which, when the arithmetic processing program of FIG. 7 is processed on a four-parallel SIMD processor, that is, on a SIMD processor having four PEs, the process is rewritten according to the processing on the actual SIMD processor. .
First, in FIG. 8, the repetition by the loop counter “i” is performed in parallel by four PEs, so the increment step of the loop counter “i” changes from “1” to “4”. Is changed to "i + = 4" in the portion described as "i ++". This corresponds to the fact that the number of processes involving repetition is reduced to N / 4 times by using a processor having four parallels.
[0008]
Here, the processing related to the variable “j” declared in FIG. 8 indicates that each operation is processed by the “j” -th PE on the SIMD processor. Not a counter. The array variables “a”, “b”, “x”, “y”, and “z” correspond to registers handled by the PE. a [0], b [0], x [0], y [0], z [0] represent registers belonging to PE0, and a [1], b [1], x [1], y [ 1] and z [1] represent registers belonging to PE1, a [2], b [2], x [2], y [2] and z [2] represent registers belonging to PE2, [3], b [3], x [3], y [3] and z [3] represent registers belonging to PE3.
[0009]
Step S100 is a load processing equivalent section that stores the data of the D-
[0010]
Next, a portion corresponding to the loading process in step S100 will be described in detail.
The portion corresponding to the load process in step S100 is not repeatedly executed by the loop counter variable “j”, but is actually assigned to the “j” -th PE and operates in parallel. That is, in the process of step S200, the process of “a [j] = A [i + j]” is not performed by repeating the process j = 0 to 3 four times, but “a [0] = A [i + 0]”. , "A [1] = A [i + 1]", "a [2] = A [i + 2]", and "a [3] = A [i + 3]" are simultaneously executed in parallel by the
[0011]
Similarly, steps S202, S204, and S206 are also simultaneously processed in parallel by the
Next, before the processing in step S102, a part corresponding to the store processing in step S400 will be described.
[0012]
In the process of step S400, similarly to the portion corresponding to the load process of step S100, the process is not repeatedly performed by the loop counter variable "j", but the process is actually allocated to the "j" th PE and operates in parallel. I do. That is, the processing of “Z [i + j] = z [j]” is not repeated four times from j = 0 to 3, and “Z [i + 0] = z [0]” and “Z [i + 1] ] = Z [1], “Z [i + 2] = z [2]”, and “Z [i + 3] = z [3]” are simultaneously executed in each of the
[0013]
Referring back, the processing in step S102 will be described in detail.
Since there is no correlation between the respective data in the processing contents of step S102, it seems that the processing by the SIMD processor can be performed at a glance like steps S100 and S104. However, according to the processing result of step S300, step S302 is performed. And a PE that needs to execute step S304 appearing, so that the SIMD processor that performs a single instruction cannot perform the processing as it is.
[0014]
In order to solve this problem, a conventional SIMD processor performs processing using a technique called mask operation processing.
FIG. 13 shows the processing of step S102 rewritten using a mask operation, and the details thereof will be described.
FIG. 9 is a diagram illustrating a case where a mask vector is generated by
[0015]
In the first processing of the mask operation, as shown in FIG. 9, a mask vector is generated for each of
[0016]
FIG. 10 is a diagram illustrating a case where a logical product operation is performed between the value of the variable x [j] and the mask vector in
In the second processing of the mask operation, as shown in FIG. 10, for each of PE0 to PE3, the value of a variable x [j] which is a value to be assigned to each of the registers of PE0 to PE3 when the condition is true is calculated. , And the logical product with the mask vector generated in the first processing. In the example of FIG. 10, since the mask vector is “1” for PE0, PE1, and PE3, the value of the variable x [j] is output as a result of the AND operation, whereas for PE2, Since the mask vector is “0”, the value “0” of the mask vector is output as a result of the AND operation.
[0017]
FIG. 11 is a diagram illustrating a case where the values of the variable y [j] and the inversion value of the mask vector are subjected to the logical product operation in PE0 to PE3.
In the third processing of the mask operation, as shown in FIG. 11, for each of PE0 to PE3, the value of a variable y [j], which is a value to be assigned to each register of PE0 to PE3 when the condition is false, , And the logical product of the mask vector and the inverted value of the mask vector generated in the first processing. In the example of FIG. 11, the inverted value of the mask vector is “0” for PE0, PE1, and PE3. Therefore, the inverted value “0” of the mask vector is output as a result of the AND operation, whereas the inverted value of PE2 is output. Since the inverted value of the mask vector becomes “1”, the value of the variable y [j] is output as a result of the logical product operation.
[0018]
FIG. 12 is a diagram illustrating a case where the operation result of the second process and the operation result of the third process are ORed by the
In the fourth process of the mask operation, as shown in FIG. 12, the OR of the operation result of the second process and the operation result of the third process is calculated for each of
[0019]
Therefore, if the data operation process of step S102 is rewritten as a process using a mask operation, the result is as shown in FIG.
FIG. 13 is a program showing a data operation process using a mask operation.
When the data calculation process is executed in step S102, as shown in FIG. 13, first, an array type variable t [4] is secured, a loop counter variable j is set to “0”, and the process proceeds to step S310. It is supposed to.
[0020]
In step S310, when the value of the variable a [j] is smaller than the value of the variable b [j], a mask vector in which all bits are “1” is set in the variable t [j], and the variable a [j Is greater than or equal to the value of the variable b [j], a mask vector in which all bits are “0” is set as the variable t [j], and the flow shifts to step S312. In FIG. 13, since the mask vector in which all the bits are "1" is represented by a complement, it is described as "-1".
[0021]
In step S312, a logical product of the value of the variable x [j] and the value of the variable t [j] is set as a new value of the variable x [j]. The logical product of the value of [j] and the inverted value of variable t [j] is set as a new value of variable y [j], and the process proceeds to step S316 to change the value of variable x [j]. And the value of the variable y [j] is set as the value of the variable z [j].
[0022]
As for the conventional SIMD type processor, for example, the technology disclosed in
[0023]
[Non-patent document 1]
"Intel (R) Architecture Optimization Reference Manual", page 5-22, "Conditional Movement", http: // www. intel. co. jp / jp / developer / download / index. htm, document number: 730795J-001
[0024]
[Problems to be solved by the invention]
As described above, in the conventional
[0025]
Therefore, the present invention has been made by focusing on such unresolved problems of the conventional technology, and is suitable for reducing the number of processing steps, simplifying a program, and reducing manufacturing costs. It is an object of the present invention to provide a simple parallel processing device and a parallel processing method.
[0026]
[Means for Solving the Problems]
In order to achieve the above object, a parallel operation processing device according to
[0027]
With such a configuration, the flag information of each arithmetic unit is stored in each flag information storage unit, and when a single instruction code is given, in each arithmetic unit, the data selection unit stores the flag information in the flag information storage unit. Based on the flag information, data to be operated on by the operation unit is selected from a subset corresponding to the operation unit.
Thus, only by setting the flag information indicating whether the condition is satisfied in each flag information storage means, the data to be operated can be expressed by a single instruction code for each arithmetic unit according to whether the condition is satisfied. You can choose.
[0028]
Here, the flag information is information necessary for selecting data to be operated by the operation unit from among the subsets, for example, information that can take a binary state of “0” or “1”. It may be present, or may be information that can assume a multi-value state. Hereinafter, the same applies to the parallel operation processing method according to the third aspect.
Further, in the parallel processing device according to
[0029]
With such a configuration, in each of the arithmetic units, when the set flag information is in the first state, the data at the first position corresponding to the arithmetic unit among the plurality of data is determined by the data selection unit. Is obtained. Further, when the set flag information is in the second state, the data at the second position corresponding to the arithmetic unit out of the plurality of data is acquired by the data selecting means.
[0030]
On the other hand, in order to achieve the above object, a parallel operation processing method according to
[0031]
Further, in the parallel operation processing method according to a fourth aspect of the present invention, in the parallel operation processing method according to the third aspect, the data selecting step includes, for each of the operation units, flag information corresponding to the operation unit. When in the first state, the data at the first position corresponding to the arithmetic unit is obtained from the plurality of data, and when the flag information corresponding to the arithmetic unit is in the second state, The data at the second position corresponding to the computing unit is obtained from the plurality of data.
[0032]
BEST MODE FOR CARRYING OUT THE INVENTION
Hereinafter, embodiments of the present invention will be described with reference to the drawings. FIGS. 1 to 5 are diagrams showing an embodiment of a parallel operation processing device and a parallel operation processing method according to the present invention.
In the present embodiment, a parallel operation processing device and a parallel operation processing method according to the present invention, as shown in FIG. 1, perform processing for selecting data to be operated in accordance with whether or not a condition is satisfied. This is applied to the case where the program is executed.
[0033]
First, the configuration of a
FIG. 1 is a block diagram showing a configuration of a
[0034]
As shown in FIG. 1, the
[0035]
Next, the configuration of PE0 will be described in detail with reference to FIG. Since each of the
FIG. 2 is a block diagram showing the configuration of PE0.
As shown in FIG. 2, PE0 includes a plurality of
[0036]
The
[0037]
Next, processing to be executed by the
FIG. 3 shows an operation when the step S102 in the arithmetic processing of FIG. 8 is implemented in the SIMD processor according to the present invention.
8, steps S100 and S104 are performed in the same manner as the conventional SIMD processor.
[0038]
The feature of the data processing shown in FIG. 3 is equivalent to _Bool type (in C language, it is an integer type introduced from ISO / IEC 9899: 1999 and represents only a Boolean value) in a program in each PE. Is provided and a result of the condition determination is stored.
Here, the processing related to the variable “j” declared in FIG. 8 is the same as the meaning used in the description of the conventional SIMD processor, and each operation is processed by the “j” -th PE. Is not a loop counter for repetition. The same applies to variables on the program, and the array variables “a”, “b”, “x”, “y”, and “z” are stored in the registers handled by the PE. Equivalent to. a [0], b [0], x [0], y [0], z [0] represent registers belonging to PE0, and a [1], b [1], x [1], y [ 1] and z [1] represent registers belonging to PE1, a [2], b [2], x [2], y [2] and z [2] represent registers belonging to PE2, [3], b [3], x [3], y [3] and z [3] represent registers belonging to PE3. In addition, "t" represents a flag included in each PE, t [0] is a flag belonging to PE0, t [1] is a flag belonging to PE1, t [2] is a flag belonging to PE2, and t [3]. Means a flag belonging to PE3.
[0039]
In step S302 in FIG. 3, each of the
FIG. 4 shows the operation and data flow of the SIMD processor of the present invention corresponding to step S320.
[0040]
FIG. 4 illustrates a case where t [0] = 1, t [1] = 1, t [2] = 0, and t [3] = 1 as the flag values of the operation result.
Next, in step S322 in FIG. 3, when each of
[0041]
FIG. 5 shows the operation and data flow of the SIMD processor of the present invention corresponding to step S322.
In each of
[0042]
Therefore, when compared with the
[0043]
As described above, in the present embodiment, each of
Thus, data to be operated can be selected by a single instruction code in accordance with whether the condition is satisfied only by setting the flag bit indicating whether the condition is satisfied in the flag
[0044]
Further, in the present embodiment, when the flag bit is “0”, the
[0045]
This makes it possible to realize, with a single instruction code, a conditional branch process in which the operation is performed using the first value if the condition is true, and the operation is performed using the second value if the condition is false.
In the above embodiment, the
[0046]
In the above embodiment, four PEs are provided. However, the present invention is not limited to this, and two or three PEs may be provided. Alternatively, five or more PEs may be provided. You can also.
Further, in the above-described embodiment, as shown in FIG. 1, the parallel operation processing device and the parallel operation processing method according to the present invention employ a SIMD process for selecting data to be operated in accordance with the presence or absence of a condition. Although the present invention has been applied to the case where the
[0047]
【The invention's effect】
As described above, according to the parallel arithmetic processing device according to
[0048]
Further, according to the parallel processing device of the second aspect of the present invention, if the condition is true, the operation is performed using the first value, and if the condition is false, the operation is performed using the second value. An effect is also obtained that the branch processing can be realized by a single instruction code.
On the other hand, according to the parallel operation processing method of the third or fourth aspect of the present invention, the same effect as that of the parallel operation processing device of the first aspect can be obtained.
[0049]
Further, according to the parallel operation processing method of the fourth aspect of the present invention, the same effect as that of the parallel operation processing device of the second aspect can be obtained.
[Brief description of the drawings]
FIG. 1 is a block diagram showing a configuration of a
FIG. 2 is a block diagram showing a configuration of PE0.
FIG. 3 illustrates an operation when the part of step S102 in the arithmetic processing of FIG. 8 is implemented in the SIMD processor according to the present invention.
FIG. 4 shows the operation and data flow of the SIMD processor of the present invention corresponding to step S320.
FIG. 5 illustrates an operation and a data flow of the SIMD processor of the present invention corresponding to step S322.
FIG. 6 is a block diagram showing a configuration of a conventional
FIG. 7 is an example of an arithmetic processing program for processing using a processor.
FIG. 8 is a diagram in which, when the arithmetic processing program of FIG. 7 is processed on a SIMD processor having four parallels, that is, four PEs, the process is rewritten in a manner suitable for processing on an actual SIMD processor. .
FIG. 9 is a diagram showing a case where a mask vector is generated by PE0 to PE3.
FIG. 10 is a diagram illustrating a case where a logical product operation is performed between a value of a variable x [j] and a mask vector in PE0 to PE3.
FIG. 11 is a diagram illustrating a case where a logical product operation is performed on the values of a variable y [j] and the inverted value of a mask vector in PE0 to PE3.
FIG. 12 is a diagram illustrating a case where the operation result of the second process and the operation result of the third process are ORed in PE0 to PE3.
FIG. 13 is a program showing a data operation process using a mask operation.
[Explanation of symbols]
10 registers
12 Operation part
14 Flag bit storage
32a D-ROM
32b P-ROM
34a D-RAM
34b P-RAM
100,200 SIMD type processor
110, 210 control device
PE0-3 Processing element
Claims (4)
前記複数のデータは、前記各演算器に対応したサブセットを含み、
前記各演算器は、フラグ情報を記憶するためのフラグ情報記憶手段と、前記フラグ情報記憶手段のフラグ情報に基づいて当該演算器の演算対象となるデータを当該演算器に対応するサブセットのなかから選択するデータ選択手段とを有することを特徴とする並列演算処理装置。An apparatus for processing a plurality of data in parallel, comprising a plurality of arithmetic units, based on a single instruction code, operating the plurality of arithmetic units in parallel,
The plurality of data includes a subset corresponding to each of the computing units,
Each of the arithmetic units includes a flag information storage unit for storing flag information, and data to be operated by the arithmetic unit based on the flag information of the flag information storage unit, among subsets corresponding to the arithmetic unit. And a data selecting means for selecting.
前記データ選択手段は、前記フラグ情報が第1の状態であるときは、前記複数のデータのうち当該演算器に対応する第1の位置のデータを取得し、前記フラグ情報が第2の状態であるときは、前記複数のデータのうち当該演算器に対応する第2の位置のデータを取得するようになっていることを特徴とする並列演算処理装置。In claim 1,
When the flag information is in the first state, the data selection unit acquires data at a first position corresponding to the arithmetic unit out of the plurality of data, and when the flag information is in the second state. When there is at least one of the plurality of data, a data at a second position corresponding to the arithmetic unit is obtained.
前記複数のデータは、前記各演算器に対応したサブセットを含み、
前記各演算器ごとにフラグ情報を記憶するフラグ情報記憶ステップと、
前記各演算器ごとに、前記フラグ情報記憶ステップで記憶したフラグ情報のうち当該演算器に対応するものに基づいて、当該演算器の演算対象となるデータを当該演算器に対応するサブセットのなかから選択するデータ選択ステップとを含むことを特徴とする並列演算処理方法。A method of processing a plurality of data in parallel by operating a plurality of arithmetic units in parallel based on a single instruction code,
The plurality of data includes a subset corresponding to each of the computing units,
A flag information storing step of storing flag information for each of the arithmetic units;
For each of the arithmetic units, based on the flag information stored in the flag information storing step corresponding to the arithmetic unit, data to be operated by the arithmetic unit is selected from among subsets corresponding to the arithmetic unit. A data selection step of selecting.
前記データ選択ステップは、前記各演算器ごとに、当該演算器に対応するフラグ情報が第1の状態であるときは、前記複数のデータのうち当該演算器に対応する第1の位置のデータを取得し、当該演算器に対応するフラグ情報が第2の状態であるときは、前記複数のデータのうち当該演算器に対応する第2の位置のデータを取得することを特徴とする並列演算処理方法。In claim 3,
The data selecting step includes, for each of the computing elements, when flag information corresponding to the computing element is in the first state, data of a first position corresponding to the computing element among the plurality of data. Acquiring the flag information corresponding to the arithmetic unit in the second state, acquiring data at a second position corresponding to the arithmetic unit among the plurality of data. Method.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003125408A JP2004334297A (en) | 2003-04-30 | 2003-04-30 | Parallel operation processor and parallel operation processing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003125408A JP2004334297A (en) | 2003-04-30 | 2003-04-30 | Parallel operation processor and parallel operation processing method |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004334297A true JP2004334297A (en) | 2004-11-25 |
Family
ID=33502684
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003125408A Pending JP2004334297A (en) | 2003-04-30 | 2003-04-30 | Parallel operation processor and parallel operation processing method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004334297A (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8086830B2 (en) | 2005-03-31 | 2011-12-27 | Panasonic Corporation | Arithmetic processing apparatus |
KR20180057950A (en) * | 2016-11-23 | 2018-05-31 | 김태형 | Parallel proessing unit and parallel processing appratus |
KR102050828B1 (en) * | 2018-10-26 | 2020-01-08 | 한국과학기술원 | Method for accelerating open virtual switch using parallel computation and open virtual switch using the same |
US10884976B2 (en) | 2018-05-22 | 2021-01-05 | Morumi Co., Ltd. | Parallel processing unit and device for parallel processing |
KR102229554B1 (en) * | 2019-12-20 | 2021-03-18 | 한국과학기술원 | Method and Device for Generating Hash Key |
-
2003
- 2003-04-30 JP JP2003125408A patent/JP2004334297A/en active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8086830B2 (en) | 2005-03-31 | 2011-12-27 | Panasonic Corporation | Arithmetic processing apparatus |
KR20180057950A (en) * | 2016-11-23 | 2018-05-31 | 김태형 | Parallel proessing unit and parallel processing appratus |
KR101971173B1 (en) * | 2016-11-23 | 2019-04-22 | 주식회사 모르미 | Parallel proessing unit and parallel processing appratus |
US10884976B2 (en) | 2018-05-22 | 2021-01-05 | Morumi Co., Ltd. | Parallel processing unit and device for parallel processing |
KR102050828B1 (en) * | 2018-10-26 | 2020-01-08 | 한국과학기술원 | Method for accelerating open virtual switch using parallel computation and open virtual switch using the same |
KR102229554B1 (en) * | 2019-12-20 | 2021-03-18 | 한국과학기술원 | Method and Device for Generating Hash Key |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7127593B2 (en) | Conditional execution with multiple destination stores | |
US9383999B2 (en) | Conditional compare instruction | |
CN100583027C (en) | Apparatus and method for asymmetric dual path processing | |
TWI450192B (en) | Apparatus and method for control processing in processor | |
CN105278921B (en) | For eliminating the instruction set of unjustified memory access during handling the array with unjustified data line | |
JP2020109604A (en) | Load/store instruction | |
CN104011664A (en) | Super multiply ADD (super MADD) instruction with three scalar terms | |
EP1267258A2 (en) | Setting up predicates in a processor with multiple data paths | |
US11003447B2 (en) | Vector arithmetic and logical instructions performing operations on different first and second data element widths from corresponding first and second vector registers | |
TWI564733B (en) | Fast vector dynamic memory conflict detection | |
US6934938B2 (en) | Method of programming linear graphs for streaming vector computation | |
JPH04336378A (en) | Information processor | |
CN110058886A (en) | System and method for calculating the product of the number of nibbles in two block operands | |
US7558816B2 (en) | Methods and apparatus for performing pixel average operations | |
JPH03286332A (en) | Digital data processor | |
JP4686435B2 (en) | Arithmetic unit | |
JP2004511039A (en) | Single instruction multiple data processing | |
EP1735699B1 (en) | Apparatus and method for dual data path processing | |
JP2004334297A (en) | Parallel operation processor and parallel operation processing method | |
JP2020527797A (en) | Vector interleaving in data processing equipment | |
CN113841134A (en) | Processing device with vector transformation execution | |
JP3515337B2 (en) | Program execution device | |
US5542080A (en) | Method for controlling execution of data driven type information processor | |
JP2793357B2 (en) | Parallel processing unit | |
JP2004302647A (en) | Vector processor and address designation method for register |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060512 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060606 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20061128 |