JP5500652B2 - 並列比較選択演算装置、プロセッサ及び並列比較選択演算方法 - Google Patents
並列比較選択演算装置、プロセッサ及び並列比較選択演算方法 Download PDFInfo
- Publication number
- JP5500652B2 JP5500652B2 JP2010548410A JP2010548410A JP5500652B2 JP 5500652 B2 JP5500652 B2 JP 5500652B2 JP 2010548410 A JP2010548410 A JP 2010548410A JP 2010548410 A JP2010548410 A JP 2010548410A JP 5500652 B2 JP5500652 B2 JP 5500652B2
- Authority
- JP
- Japan
- Prior art keywords
- vector
- index
- comparison
- data
- selection
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 57
- 239000013598 vector Substances 0.000 claims description 370
- 238000004364 calculation method Methods 0.000 claims description 9
- 230000008569 process Effects 0.000 description 52
- 230000006870 function Effects 0.000 description 22
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000014509 gene expression Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3828—Multigauge devices, i.e. capable of handling packed numbers without unpacking them
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
そこで、本発明は、インデックスをともなう最大値探索あるいは最小値探索を効率良く実行する並列比較選択演算装置及びその方法を提供することを目的の一つとする。
以下の説明において、ベクトルデータは、複数の要素(データ)の集合である。また、インデックス・ベクトルは、ベクトルデータに含まれる各要素の番号(要素番号)の集合である。ベクトルデータの中の要素(データ)の番号をインデックスと呼ぶことにする。
並列比較選択演算ユニット240は、ベクトルデータとそれに対応するインデックス・ベクトルに関する比較と選択を実行する。並列比較選択演算ユニット240は、入力となるベクトルデータとインデックス・ベクトルをレジスタバンク230から読み込む。並列比較選択演算ユニット240の出力データはベクトルデータとインデックス・ベクトルであり、並列比較選択演算ユニット240はそれらをレジスタバンク230へ書き込む。
図2を参照しながら、第一の実施形態における並列比較選択演算ユニット240を説明する。第一の実施形態の並列比較選択演算ユニット240は、ベクトル比較選択ユニット242と、インデックス・ベクトル選択ユニット243と、で構成される。第一の実施形態における並列比較選択演算ユニット240の入力信号は、命令デコーダ210から入力される制御信号と、レジスタバンク230から入力される四つのデータである。この四つのデータとは、ベクトルデータ1(第一ベクトルデータ)、ベクトルデータ2(第二ベクトルデータ)、インデックス・ベクトル1(第一インデックス・ベクトル)、インデックス・ベクトル2(第二インデックス・ベクトル)、である。第一の実施形態における並列比較選択演算ユニット240の出力信号は、ベクトルデータ3(第三ベクトルデータ)と、インデックス・ベクトル3(第三インデックス・ベクトル)と、である。
一方の結合ユニット(ベクトル結合ユニット)21は、比較選択ユニット30〜33から与えられた選択要素xを複数個結合して、それをベクトルデータ3として出力する。もう一方の結合ユニット(比較結果結合ユニット)20は、複数の比較選択ユニット30〜33から与えられた比較結果cを複数個結合して、それを比較結果ベクトルとして出力する。図3では、一方の結合ユニット20は四つの比較選択ユニット30〜33から与えられた要素x0、x1、x1、x2、x3を結合し、それをベクトルデータ3として出力し、もう一方の結合ユニット21は四つの比較選択ユニット30〜33から与えられた比較結果c0、c1、c2、c3を結合し、それを比較結果ベクトルとして出力している。
まず、(1)において、N(N>0の整数)個のデータをS0、S1、S2、・・・、SN−1とする。次に、(2)において、N個のデータをdnum個のグループに分割する。データのインデックスをdnumで割った余りが等しくなるようにN個のデータを分割する。dnumは任意の正の整数であるが、実装を容易にするためにdnumは2のべき乗であることが望ましい。
step1は探索処理の初期化を行なうステップである。
step2は未処理のデータが残っているかどうかを調べるステップである。
step3はデータを読み込むステップである。
step4はデータのインデックスを更新するステップである。
step5は二つのベクトルを対応する要素ごとに比較し、大きい方かもしくは小さい方の要素を選択するステップである。 要素が選択される際には、その要素に対応するインデックスも選択される。
未処理のデータがなくなるまでstep2からstep5は繰り返される。step2からstep5の繰返しは図8の(2)と(3)に相当する。
最後に実行されるstep6は一つのベクトルの全ての要素の中から最大値あるいは最小値を選択するステップである。最大値あるいは最小値が選択される際には、その値に対応するインデックスも選択される。step6は図8の(4)に相当する。
step1からstep6までのステップによって、複数のデータの中から最大値あるいは最小値とそのインデックスを求める事ができる。
第一の実施形態におけるstep4において、プロセッサ200は、次のdnum個のデータのインデックスをレジスタRbへ格納する。図10では、次のdnum個のデータはs4、s5、s6、s7なので、それらのインデックスは4、5、6、7である。
分割ユニット10、12(図3)は、ベクトルデータ1、ベクトルデータ2を要素毎に分割する。図11では、分割ユニット10は、ベクトルデータ1をs4〜s7の各要素に、分割ユニット11は、ベクトルデータ2をs0〜s3の各要素に分割する。
続いて、複数の比較選択ユニット30〜33(図3)は、各要素について比較選択処理を実施する。複数の比較選択ユニット30〜33内の比較ユニット50(図6A)は、関数compare()でレジスタRaとレジスタRcに格納されたデータを比較する。具体的には複数の比較選択ユニット30〜33内の比較ユニット50は、次の関数を用いて比較する。cmodeは比較選択ユニット30〜33への制御信号を表す。
c0=compare(cmode,s0,s4)
c1=compare(cmode,s1,s5)
c2=compare(cmode,s2,s6)
c3=compare(cmode,s3,s7)
x0=select(c0,s0,s4)
x1=select(c1,s1,s5)
x2=select(c2,s2,s6)
x3=select(c3,s3,s7)
ここで、c0〜c3、x0〜x3は、図3の同じ符号のデータと対応する。
結合ユニット20は、x0〜x3を結合し、ベクトルデータ3を生成する。結合ユニット21は、c0〜c3を結合し、比較結果ベクトルを生成し、インデックス・ベクトル選択ユニット243へ出力する。
分割ユニット12、13(図7)は、インデックス・ベクトル1、インデックス・ベクトル2を要素毎(インデックス毎)に分割する。図11では、分割ユニット12は、ベクトルデータ1をi4〜i7の各要素に、分割ユニット13は、ベクトルデータ2をi0〜i3の各要素に分割する。分割ユニット14は、比較結果ベクトルをc0〜c3の各要素へ分割する。
選択ユニット41〜44(図7)は、ベクトル比較選択ユニット242の選択ユニット40(図6A)と同様にレジスタRbとRdから適切なデータを選択する。具体的には、選択ユニット41〜44は、次の関数を用いて選択する。
z0=select(c0,i0,i4)
z1=select(c1,i1,i5)
z2=select(c2,i2,i6)
z3=select(c3,i3,i7)
ここで、z0〜z3は、図7の同じ符号のデータと対応する。
結合ユニット22は、z0〜z3を結合し、インデックス・ベクトル3を生成する。
第一の実施形態では、ベクトルデータ3とインデックス・ベクトル3をレジスタRcとレジスタRdに格納する。従って、図11に示すように、レジスタRaに読み出したベクトルデータを比較対象データ、レジスタRcに設定されたデータを現在の選択値と呼ぶ。
例えば、MAX.Hという命令は比較式(Ra<Rc)を使って16ビットの値を比較し、大きい方の値を選択する命令である。MAX.H命令の場合のcmodeの値は0である。図6Bによると、cmode=0は比較演算<を意味する。MAX.H命令の場合のdnumの値は4である。dnumは分割後あるいは結合前のデータの数を表す。
step1において、プロセッサ200は、初期選択値のベクトルデータとそれに対応するインデックス・ベクトル(初期インデックス)をそれぞれレジスタRc、Rdへ格納する。
step2において(図13には図示されていない)、プロセッサ200は、未処理のデータが12個残っているので、step3へ移行する。
step3において、プロセッサ200は、比較対象のデータ4個をレジスタRaへ読み込む。
step4において、プロセッサ200は、比較対象のデータ4個のインデックスをレジスタRbへ格納する。
step5において、プロセッサ200は、レジスタRa、Rb、Rc、Rdを使って、1回目のレジスタ間比較選択処理を実行する。1回目のレジスタ間比較選択処理によって選択されたデータとインデックスはレジスタRcとRdへそれぞれ格納される。この1回目のレジスタ間比較選択処理に(1)という番号をつける。
(2)step3:データ読み込み2回目
(3)step4:インデックス更新
(4)step5:レジスタ間比較選択処理2回目
(5)step3:データ読み込み3回目
(6)step4:インデックス更新
(7)step5:レジスタ間比較選択処理3回目
(3)のstep4において、プロセッサ200は、レジスタRbのインデックスを利用して、新たなデータ4個のインデックスを計算し、それをレジスタRbへ格納する。インデックス更新の計算方法は、レジスタRbの各要素へ4を加算する、というものである。
(4)のstep5において、プロセッサ200は、2回目のレジスタ間比較選択処理を実行する。
同様にして、(5)、(6)、(7)が実行される。
step6において、プロセッサ200が最大値あるいは最小値のどちらを探すかは、メモリ100に格納されたプログラムによって決定される。
step6において、プロセッサ200は、レジスタRcに格納された四つの選択値x0"、x1"、x2"、x3"と、レジスタRdに格納された四つのインデックスz0"、z1"、z2"、z3"と、を一つ一つ別々のレジスタへ格納する。
1回目の比較選択処理において、プロセッサ200は、x0"とx1"とを比較し、比較条件を満たす方の値を選択する。 比較条件はstep6のプログラムの中に記述されているものとする。
例えば、比較条件を<とすると、x0"<x1"が真ならばx1"が選択され、そうでないならばx0"が選択される。比較条件としては、<、<=、>、>=、などが利用可能である。
x0"とx1"の比較結果に基づいて、プロセッサ200は、z0"かz1"のどちらかのインデックスを選択する。
例えば、もしx0"<x1"が真ならばz0"が選択され、そうでないならばz1"が選択される。
step6には3回の比較選択処理があるが、どの比較選択処理にも同じ比較条件が使われる。
x2"とx3"の比較結果に基づいて、プロセッサ200は、z2"かz3"のどちらかのインデックスを選択する。
プロセッサ200は、x0'''とx1'''とを比較し、比較条件を満たす方の値を選択する。
x0'''とx1'''の比較結果に基づいて、プロセッサ200は、z0'''かz1'''のどちらかのインデックスを選択する。
3回目の比較選択処理で選択された値とインデックスをx0""とz0""とする。
x0""はstep6においてプロセッサ200がx0"、x1"、x2"、x3"の中から選択した最大値あるいは最小値であり、全てのデータの中の最大値である。そして、z0""はx0""のインデックスである。
また、プロセッサは、本実施形態の並列比較選択演算ユニットを備えることにより、ベクトル間比較選択処理を効率よく実施し、ベクトル関比較選択処理の結果を用いて、最大値あるいは最小値を取得することが可能になる。
一方で、比較結果ベクトルを用いることにより、ベクトルに含まれる要素数が変化した場合に対応しやすいという利点がある。具体的には、ベクトル比較選択ユニット242からインデックス・ベクトル選択ユニット243へ出力する選択信号(比較結果ベクトル)の数を変更する必要がない。ベクトル比較選択ユニット242内の比較選択ユニット数、インデックス・ベクトル選択ユニット243内の選択ユニットの数、並びに関係する信号線等を変更することにより、要素数の変化に対応することが可能となる。
すなわち、分割ユニットや結合ユニットを使うと,ベクトルデータの各要素のデータ幅を可変にすることができる。例えば、16ビットのデータ幅をもつ要素で構成されるベクトルデータを処理したり、8ビットのデータ幅をもつ要素で構成されるベクトルデータを処理したり、ということが可能になる。ただし,ひとつのベクトルデータの中の全ての要素のデータ幅は同じにする必要がある。これに対して、分割ユニットや結合ユニットを使わない場合には,あらかじめ決めたデータ幅の要素で構成されるベクトルデータだけを処理することができる。それ以外のデータ幅の要素で構成されるベクトルデータを処理することはできない。
図15を参照しながら、第二の実施形態における並列比較選択演算ユニット240aを説明する。第二の実施形態では、図1に示すプロセッサ200は、並列比較選択演算ユニット240に替えて図15に示す並列比較選択演算ユニット240aを用いる。本実施形態では、第一の実施形態において用いたインデックス・ベクトル1に替えて、ベクトルデータ1のインデックスに関する情報(第一インデックス情報)を用いる場合を説明する。具体的には、第一インデックス情報として、ベクトルデータ1の最初の要素(0番目の要素)のインデックスを用いる場合を説明する。以下、最初の要素のインデックスを開始インデックス1という。
第二の実施形態における並列比較選択演算ユニット240aの入力信号は、命令デコーダ210からの制御信号と、レジスタバンク230からの四つのデータである。この四つのデータとは、ベクトルデータ1、ベクトルデータ2、開始インデックス1、インデックス・ベクトル2、である。第二の実施形態における並列比較選択演算ユニット240aの出力信号は、ベクトルデータ3と、開始インデックス1である。
第二の実施形態におけるベクトル比較選択ユニット242とインデックス・ベクトル選択ユニット243の構成や動作は第一の実施形態のそれと同じである。
開始インデックス1をidxとすると、インデックス・ベクトル生成ユニット241は、idx+1*s、idx+2*s、idx+3*s、という三つのデータを計算し、idxと合わせて四つのデータを結合ユニット20へ送る。さらに、インデックス・ベクトル生成ユニット241は、制御信号に基づいて、dnumという信号を結合ユニット23へ送る。
第二の実施形態におけるstep1は第一の実施形態におけるstep1と異なる。step1において、プロセッサ200は、レジスタバンク230のレジスタRcへdnum個の初期選択値を、レジスタRdへそれらに対応するdnum個のインデックスを、それぞれ格納する。さらに、レジスタRcへ格納したdnum個の次のデータのインデックスを開始インデックスとしてレジスタRbへ格納する。開始インデックスをレジスタRbへ格納することが第一の実施形態におけるstep1とは異なる。
図18では、dnum個の初期選択はメモリ100に格納されているs0、s1、s2、s3であり、それらのインデックスは0、1、2、3である。そして、次のデータはs4なので、開始インデックスは4である。
図18において、step1が終った直後の状態では、N個のデータのうちdnum個を初期選択値として使用したので、未処理のデータの数はN−dnum個である。データ数Nを16、分割数をdnum、と仮定しているので、N−dnum=16−4=12、となって、未処理データはまだ残っていることになる。
図18では、次のdnum個のデータはs4、s5、s6、s7である。
ベクトル比較選択ユニット242において、複数の比較選択ユニット30〜33(図3)は、各要素について比較選択処理を実施する。複数の比較選択ユニット30〜33内の比較ユニット50(図6A)は、関数compare()でレジスタRaとレジスタRcに格納されたデータを比較する。具体的には複数の比較選択ユニット30〜33内の比較ユニット50は、次の関数を用いて比較する。cmodeは比較選択ユニット30〜33への制御信号を表す。
c0=compare(cmode,s0,s4)
c1=compare(cmode,s1,s5)
c2=compare(cmode,s2,s6)
c3=compare(cmode,s3,s7)
x0=select(c0,s0,s4)
x1=select(c1,s1,s5)
x2=select(c2,s2,s6)
x3=select(c3,s3,s7)
ここで、c0〜c3、x0〜x3は、図3の同じ符号のデータと対応する。
結合ユニット20は、x0〜x3を結合し、ベクトルデータ3を生成する。結合ユニット21は、c0〜c3を結合し、比較結果ベクトルを生成し、インデックス・ベクトル選択ユニット243へ出力する。
z0=select(c0,i0,i4)
z1=select(c1,i1,i4+1)
z2=select(c2,i2,i4+2)
z3=select(c3,i3,i4+3)
ここで、z0〜z3は、図7の同じ符号のデータと対応する。
結合ユニット22は、z0〜z3を結合し、インデックス・ベクトル3を生成する。
なお、関数compare()と関数select()の中身(処理内容)は第一の実施形態と同じである。
step1において、プロセッサ200は、初期選択値のベクトルデータとそれに対応するインデックス・ベクトル(初期インデックス)をそれぞれレジスタRc、Rdへ格納し、1回目の開始インデックスをレジスタRbへ格納する。
step2において(図21には図示されていない)、プロセッサ200は、未処理のデータが12個残っているので、step3へ移行する。
step4とstep5において、プロセッサ200は、レジスタRa、Rb、Rc、Rdを使って、1回目のインデックス更新とレジスタ間比較選択処理を実行する。1回目のインデックス更新によって更新された開始インデックスはレジスタRbに格納される。1回目のレジスタ間比較選択処理によって選択されたデータとインデックスはレジスタRcとRdへそれぞれ格納される。この1回目のインデックス更新とレジスタ間比較選択処理に(1)という番号をつける。
(2)step3:データ読み込み2回目
(3)step4とstep5:インデックス更新とレジスタ間比較選択処理2回目
(4)step3:データ読み込み3回目
(5)step4とstep5:インデックス更新とレジスタ間比較選択処理3回目
(3)のstep4とstep5において、プロセッサ200は、2回目のインデックス更新とレジスタ間比較選択処理を実行する。
同様にして、(4)、(5)が実行される。
step6において、プロセッサ200は、一つのレジスタに格納されたベクトルの全ての要素の中かから最大値あるいは最小値を探し、その値に対応するインデックスをもう一つのレジスタから取り出す。
step6が実行されると、全てのデータの中の最大値あるいは最小値とそのインデックスが求まる。
まず、開始インデックスを用いることにより、インデックス・ベクトルを保持するレジスタの容量を削減することができる。具体的には図1のレジスタバンク230の容量を削減することができる。これは、第一の実施形態では、比較対象データのインデックスとして、要素数のインデックスを保持していたが、第二の実施形態では、開始インデックス一つに削減できるからである。
次に、更新ユニットを備えることにより、処理時間を削減することができる。具体的には、第一の実施形態では、プロセッサ200が命令を実行することによりインデックスの更新(図8のstep4)を実施していた。第二の実施形態では、インデックスの更新を並列比較選択ユニット内の更新インデックスによって実行させる。すなわち、ハードウェアによって実行させる。従ってプロセッサ200が実行する命令の数を削減する。従って、全体の処理時間を削減することができる。
具体的には、複数の要素をレジスタに読み込み比較する。これにより、レジスタからベクトルの複数の要素を読み込むときの効率を向上させることができる。
また、二つの値を比較する比較演算器を複数個備え、二入力の比較演算器を複数個使用してベクトルの各要素を並列して比較し、ベクトルの最大値または最小値を探索する。二入力の比較演算器を複数個使用することは、多入力の比較演算器を使用する場合に比べ、処理遅延を小さくすることができる。また、回路の製造においても、二入力の比較演算器を複数個作ることは、多入力の比較演算器を作ることに比べて容易である。これによりコストを削減することも期待できる。
200 プロセッサ
210 命令デコーダ
220 命令実行ユニット
230 レジスタバンク
240、240a 並列比較選択演算ユニット
241 インデックス・ベクトル生成ユニット
242 ベクトル比較選択ユニット
243 インデックス・ベクトル選択ユニット
244 更新ユニット244
10〜14 分割ユニット
20〜23 結合ユニット
30〜33 比較選択ユニット
40〜44 選択ユニット
50 比較ユニット
Claims (9)
- 複数の要素を含む第一ベクトルデータと、前記第一ベクトルデータと同じ数の要素を含む第二ベクトルデータとを使用して、前記第一ベクトルデータに含まれる要素と、前記第二ベクトルデータに含まれる要素とを、対応する要素ごとに比較し、その比較結果に基づいて、前記第一ベクトルデータと前記第二ベクトルデータの一方の要素を選択し、選択された要素で構成される第三ベクトルデータを生成するベクトル比較選択手段と、
前記第一ベクトルデータに含まれる各要素に対応するインデックスを含む第一インデックス・ベクトルと、前記第二ベクトルデータに含まれる各要素に対応するインデックスを含む第二インデックス・ベクトルと、前記比較結果とを使用して、前記比較結果に基づいて、前記第一インデックス・ベクトルと前記第二インデックス・ベクトルの一方の要素を選択し、選択された要素で構成される第三インデックス・ベクトルを生成するインデックス・ベクトル選択手段と、
前記第一ベクトルデータの最初の要素に対応する開始インデックスに基づいて、前記第一インデックス・ベクトルを生成し、前記インデックス・ベクトル選択手段へ出力するインデックス・ベクトル生成手段と、
前記開始インデックスに基づいて、次の開始インデックスを算出する更新手段と
を備え、
前記インデックス・ベクトル生成手段は、スケールファクタと入力データ数とを含む制御信号を受け取り、前記開始インデックスへ前記スケールファクタの数値の倍数を加算して、前記入力データ数のインデックスを生成し、生成したインデックスを結合して前記第一インデックス・ベクトルを生成する並列比較選択演算装置。 - 前記ベクトル比較選択手段は、
前記第一ベクトルデータに含まれる一つの要素と前記第二ベクトルデータに含まれる一つの要素とを比較し、その比較結果に基づいて、二つの要素の一方を選択する複数の要素比較選択手段を備えること、
を特徴とする請求項1記載の並列比較選択演算装置。 - 前記ベクトル比較選択手段は、前記第一ベクトルデータの要素の数と等しい数の要素比較選択手段を備え、
前記ベクトル比較選択手段は、
前記第一ベクトルデータを複数の要素に分割し、分割した複数の要素を前記複数の要素比較選択手段へ出力する第一ベクトル分割手段と、
前記第二ベクトルデータを複数の要素に分割し、分割した複数の要素を前記複数の要素比較選択手段へ出力する第二ベクトル分割手段と、
前記複数の要素比較選択手段が選択する要素を結合して前記第三ベクトルデータを生成するベクトル結合手段と、をさらに備えること、
を特徴とする請求項2記載の並列比較選択演算装置。 - 前記インデックス・ベクトル選択手段は、
前記第一ベクトルデータに含まれる一つの要素に対応するインデックス、及び前記第二ベクトルデータに含まれる一つの要素に対応するインデックスを使用して、前記要素比較選択手段が生成した比較結果に基づいて、二つのインデックスの一方を選択する複数のインデックス選択手段を備えること、
を特徴とする請求項2または3記載の並列比較選択演算装置。 - 前記インデックス・ベクトル選択手段は、
前記第一インデックス・ベクトルを複数のインデックスに分割し、前記複数のインデックス選択手段へ出力する第一インデックス分割手段と、
前記第二インデックス・ベクトルを複数のインデックスに分割し、前記複数のインデックス選択手段へ出力する第二インデックス分割手段と、
前記複数のインデックス選択手段が選択するインデックスを結合して前記第三インデックス・ベクトルを生成するインデックス結合手段と、をさらに備えること、
を特徴とする請求項4記載の並列比較選択演算装置。 - 前記ベクトル比較選択手段は、前記複数の要素比較選択手段が生成した比較結果を結合し、比較結果ベクトルを生成する比較結果結合手段を備え、
前記インデックス・ベクトル選択手段は、前記比較結果ベクトルに含まれる複数の要素比較結果を前記複数のインデックス選択手段に出力する比較結果分割手段を備えること、
を特徴とする請求項4または5記載の並列比較選択演算装置。 - 請求項1乃至6のいずれか一項に記載の並列比較選択演算装置を備えるプロセッサ。
- 複数の要素を含む第一ベクトルデータと、前記第一ベクトルデータと同じ数の要素を含む第二ベクトルデータと、前記第一ベクトルデータの最初の要素に対応する開始インデックスを含む第一インデックス情報と、前記第二ベクトルデータに含まれる各要素に対応するインデックスで構成された第二インデックス・ベクトルと、スケールファクタと入力データ数とを含む制御信号とを使用して、
前記第一ベクトルデータに含まれる要素と、前記第二ベクトルデータに含まれる要素とを、対応する要素ごとに比較し、
比較結果に基づいて、前記第一ベクトルデータと前記第二ベクトルデータの一方の要素を選択し、
選択された要素で構成される第三ベクトルデータを生成し、
前記比較結果と、前記第一インデックス情報と、前記第二インデックス・ベクトルとに基づいて、前記第三ベクトルデータに含まれる各要素に対応するインデックスを選択し、
選択された複数のインデックスで構成される第三インデックス・ベクトルを生成し、
前記開始インデックスに基づいて、前記開始インデックスへ前記スケールファクタの数値の倍数を加算して、前記入力データ数のインデックスを生成し、前記第一ベクトルデータの各要素に対応するインデックスで構成された第一インデックス・ベクトルを生成し、
前記第三ベクトルデータの各要素に対応するインデックスを、前記比較結果に基づいて、前記第一インデックス・ベクトルと前記第二インデックス・ベクトルから選択すること、
を特徴とする並列比較選択演算方法。 - 前記開始インデックスに基づいて、次の開始インデックスを算出すること、
を特徴とする請求項8記載の並列比較選択演算方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010548410A JP5500652B2 (ja) | 2009-02-02 | 2010-01-25 | 並列比較選択演算装置、プロセッサ及び並列比較選択演算方法 |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009021199 | 2009-02-02 | ||
JP2009021199 | 2009-02-02 | ||
JP2010548410A JP5500652B2 (ja) | 2009-02-02 | 2010-01-25 | 並列比較選択演算装置、プロセッサ及び並列比較選択演算方法 |
PCT/JP2010/000398 WO2010087144A1 (ja) | 2009-02-02 | 2010-01-25 | 並列比較選択演算装置、プロセッサ及び並列比較選択演算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2010087144A1 JPWO2010087144A1 (ja) | 2012-08-02 |
JP5500652B2 true JP5500652B2 (ja) | 2014-05-21 |
Family
ID=42395409
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010548410A Active JP5500652B2 (ja) | 2009-02-02 | 2010-01-25 | 並列比較選択演算装置、プロセッサ及び並列比較選択演算方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20120023308A1 (ja) |
JP (1) | JP5500652B2 (ja) |
WO (1) | WO2010087144A1 (ja) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130332701A1 (en) * | 2011-12-23 | 2013-12-12 | Jayashankar Bharadwaj | Apparatus and method for selecting elements of a vector computation |
US9268566B2 (en) | 2012-03-15 | 2016-02-23 | International Business Machines Corporation | Character data match determination by loading registers at most up to memory block boundary and comparing |
US9710266B2 (en) | 2012-03-15 | 2017-07-18 | International Business Machines Corporation | Instruction to compute the distance to a specified memory boundary |
US9459864B2 (en) | 2012-03-15 | 2016-10-04 | International Business Machines Corporation | Vector string range compare |
US9280347B2 (en) | 2012-03-15 | 2016-03-08 | International Business Machines Corporation | Transforming non-contiguous instruction specifiers to contiguous instruction specifiers |
US9459867B2 (en) | 2012-03-15 | 2016-10-04 | International Business Machines Corporation | Instruction to load data up to a specified memory boundary indicated by the instruction |
US9454366B2 (en) | 2012-03-15 | 2016-09-27 | International Business Machines Corporation | Copying character data having a termination character from one memory location to another |
US9588762B2 (en) | 2012-03-15 | 2017-03-07 | International Business Machines Corporation | Vector find element not equal instruction |
US9715383B2 (en) | 2012-03-15 | 2017-07-25 | International Business Machines Corporation | Vector find element equal instruction |
US9454367B2 (en) | 2012-03-15 | 2016-09-27 | International Business Machines Corporation | Finding the length of a set of character data having a termination character |
US9459868B2 (en) | 2012-03-15 | 2016-10-04 | International Business Machines Corporation | Instruction to load data up to a dynamically determined memory boundary |
US9600279B2 (en) * | 2012-07-26 | 2017-03-21 | Verisilicon Holdings Co., Ltd. | Circuit and method for searching a data array and single-instruction, multiple-data processing unit incorporating the same |
US9804839B2 (en) | 2012-12-28 | 2017-10-31 | Intel Corporation | Instruction for determining histograms |
US9098121B2 (en) * | 2013-01-22 | 2015-08-04 | Freescale Semiconductor, Inc. | Vector comparator system for finding a peak number |
US9684509B2 (en) * | 2013-11-15 | 2017-06-20 | Qualcomm Incorporated | Vector processing engines (VPEs) employing merging circuitry in data flow paths between execution units and vector data memory to provide in-flight merging of output vector data stored to vector data memory, and related vector processing instructions, systems, and methods |
CN109313552A (zh) * | 2016-07-27 | 2019-02-05 | 英特尔公司 | 用于复用向量比较的系统和方法 |
US10564964B2 (en) * | 2016-08-23 | 2020-02-18 | International Business Machines Corporation | Vector cross-compare count and sequence instructions |
US10108581B1 (en) | 2017-04-03 | 2018-10-23 | Google Llc | Vector reduction processor |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61138373A (ja) * | 1984-12-11 | 1986-06-25 | Nec Corp | ベクトル要素間演算方式 |
JPH01309174A (ja) * | 1988-06-07 | 1989-12-13 | Hitachi Ltd | ベクトル処理装置 |
JPH05165874A (ja) * | 1991-12-12 | 1993-07-02 | Hitachi Ltd | ベクトル演算処理装置 |
JPH0877142A (ja) * | 1994-08-31 | 1996-03-22 | Fujitsu Ltd | ベクトルプロセッサ |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0833810B2 (ja) * | 1989-06-19 | 1996-03-29 | 甲府日本電気株式会社 | ベクトルデータ検索装置 |
US8392692B2 (en) * | 2008-08-15 | 2013-03-05 | Lsi Corporation | Determining index values for bits of binary vector by processing masked sub-vector index values |
-
2010
- 2010-01-25 US US13/147,157 patent/US20120023308A1/en not_active Abandoned
- 2010-01-25 WO PCT/JP2010/000398 patent/WO2010087144A1/ja active Application Filing
- 2010-01-25 JP JP2010548410A patent/JP5500652B2/ja active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61138373A (ja) * | 1984-12-11 | 1986-06-25 | Nec Corp | ベクトル要素間演算方式 |
JPH01309174A (ja) * | 1988-06-07 | 1989-12-13 | Hitachi Ltd | ベクトル処理装置 |
JPH05165874A (ja) * | 1991-12-12 | 1993-07-02 | Hitachi Ltd | ベクトル演算処理装置 |
JPH0877142A (ja) * | 1994-08-31 | 1996-03-22 | Fujitsu Ltd | ベクトルプロセッサ |
Non-Patent Citations (1)
Title |
---|
JPN6013028814; 'AltiVec(TM) Technology Programming Environments Manual' [online] , 200604, pp. 6-1〜6-8, 6-61, 6-75, Freescale Semiconductors, Inc. * |
Also Published As
Publication number | Publication date |
---|---|
JPWO2010087144A1 (ja) | 2012-08-02 |
US20120023308A1 (en) | 2012-01-26 |
WO2010087144A1 (ja) | 2010-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5500652B2 (ja) | 並列比較選択演算装置、プロセッサ及び並列比較選択演算方法 | |
JP5834997B2 (ja) | ベクトルプロセッサ、ベクトルプロセッサの処理方法 | |
TWI489384B (zh) | 執行置換運算的處理器與方法及具有該處理器的電腦系統 | |
KR20110055629A (ko) | 단일 명령 다중 데이터(simd)데이터 처리기에서 확장된 어드레싱 모드들의 제공 | |
CN106775592A (zh) | 使用三个标量项的超级乘加(超级madd)指令 | |
US11755320B2 (en) | Compute array of a processor with mixed-precision numerical linear algebra support | |
TWI490781B (zh) | 用於選擇向量運算之元素的裝置及方法 | |
JPH03286332A (ja) | デジタルデータ処理装置 | |
JP7038608B2 (ja) | 半導体装置 | |
US20240004663A1 (en) | Processing device with vector transformation execution | |
JP2018500629A (ja) | 3d座標から3dのz曲線インデックスを計算するための機械レベル命令 | |
US8604946B2 (en) | Data processing device and data processing method | |
KR102591988B1 (ko) | 데이터 처리장치에서의 벡터 인터리빙 | |
JP5862397B2 (ja) | 演算処理装置 | |
JP2020027533A (ja) | 演算処理装置及び演算処理装置の制御方法 | |
CN104025021A (zh) | 用于滑动窗口数据收集的设备和方法 | |
WO2021116832A1 (en) | Three-dimensional lane predication for matrix operations | |
JP5659772B2 (ja) | 演算処理装置 | |
JP6237241B2 (ja) | 処理装置 | |
JP5786719B2 (ja) | ベクトルプロセッサ | |
JP2009059187A (ja) | マイクロプロセッサおよびデータ処理方法 | |
CN107580700B (zh) | 一种生成地址的方法及数据处理设备 | |
JP2013114608A (ja) | Vliwプロセッサと命令構造と命令実行方法 | |
JPH056393A (ja) | 関数演算処理装置およびその演算方法 | |
JP2012190389A (ja) | プロセッサ装置及びその演算方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20121210 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130618 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130805 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20131119 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140116 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20140212 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140306 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5500652 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |