JP2018200692A - ベクトルプロセッサの配列ソート方法 - Google Patents
ベクトルプロセッサの配列ソート方法 Download PDFInfo
- Publication number
- JP2018200692A JP2018200692A JP2018099367A JP2018099367A JP2018200692A JP 2018200692 A JP2018200692 A JP 2018200692A JP 2018099367 A JP2018099367 A JP 2018099367A JP 2018099367 A JP2018099367 A JP 2018099367A JP 2018200692 A JP2018200692 A JP 2018200692A
- Authority
- JP
- Japan
- Prior art keywords
- group
- array
- sorting
- elements
- vector processor
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 81
- 238000003491 array Methods 0.000 claims description 11
- 238000003672 processing method Methods 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 12
- 230000001174 ascending effect Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 230000000052 comparative effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000000059 patterning Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8092—Array of vector units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3816—Instruction alignment, e.g. cache line crossing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Complex Calculations (AREA)
- Multi Processors (AREA)
- Advance Control (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
Description
クイックソートのように「O(nlog(n))」の演算複雑度を持つ速いソートは、個別的な要素を操作する方式なので、SIMD(Single Instruction Multiple Data)やSIMT(Single Instruction Multiple Thread)を用いるベクトルプロセッサに適用するには困難がある。
一般に、バイナリツリー構造のマージソートを使用する場合、その複雑度はデータ集合サイズ(N)の「O(Nlog2N)」に比例する。
図1では要素の個数N=8の配列を昇順にソートする方法を例示的に示している。
図1を参照すると、マージソートは配列をまず分割(divide)する。
既存のスカラプロセッサでは、分割することも別に作業が必要であるが、ベクトルプロセッサでは、それぞれの要素がベクトル構造で連結されているので、分割作業を別に必要としないこともある。
よって、N個の要素からなる配列のローディングのみで分割作業は完了でき得る。
これをマージ(merge)段階といい、細分化してマージ段階中の統治(Conquer)段階と命名することができる。
つまり、「8」と「3」の場合は、「3」が「8」よりも小さいので、順序が変わって「38」にソートできる。「2」と「9」の場合は、「2」が「9」よりも小さいので、そのまま「29」にソートされる。
このとき、それぞれの要素をバッファに取り込んで呼び出さなければならないので、N回の呼び出しレベルが達成される。
すなわち、最大N、O(N)の複雑度を持ち得る。
このような結合段階は、マージ段階中の一部であり得る。
このとき、隣り合うサブ配列である「38」と「29」はソートされた「2389」に結合され、「17」と「45」は「1457」と結合され得る。
このとき、「38」と「29」との結合は、「3」と「2」、「9」を比較し、「8」と「9」を比較する3回の比較が必要なので、3回の呼び出しレベルが必要である。
また、「17」と「45」の結合は、「1」と「4」、「5」を比較し、「7」と「4」、「5」を比較しなければならないので、4回の呼び出しレベルが必要である。
つまり、2つの配列同士の比較は、最悪の場合には4の呼び出しレベルが必要なので、全体的に最大8の呼び出しレベルが必要である。
すなわち、複雑度はO(N)になり得る。
但し、配列の配置が異なる場合、最大N回の比較が必要であり、この場合にも、複雑度はO(N)になり得る。
よって、それぞれの段階で最大N回の呼び出しレベルが必要であり、各段階の複雑度はO(N)であると見られる。
よって、最悪の場合、全体的にN×log2(N)回の呼び出しレベルが必要である。
これは、全体的なマージソートの複雑度がO(N×log2(N))の複雑度を持つことを意味し、これは効率の悪い演算であり、より効率の良い演算が課題となっている。
したがって、このような高い複雑度のソート方式よりもさらに低い複雑度のソート方式を使用できれば、演算速度及びメモリなどのリソース使用量を減らして効率の良い演算が可能である。
前記配列と前記コピー配列に対してMin演算及びMax演算を行う(d)段階とを含み、
前記それぞれのグループのうちの隣り合うグループ同士でi番目の要素をソートする段階は、SIMD処理方式で処理する段階を含むことを特徴とする。
図2は本発明の実施形態に係るベクトルプロセッサの配列ソート方法を説明するためのフローチャートであり、図3a〜図3dは本発明の実施形態に係るベクトルプロセッサの配列ソート方法を説明するための図である。
図3a〜図3dでは、16個の要素を有する配列をソートすることを例示的に示す。但し、これに限定されない。
ベクトルデータはソートされていない配列データであり得る。
ソートされていない配列データは、合計N個の要素を有する。
このとき、N=2n、ここで、nは自然数であり得る。但し、これに限定されない。
Nが2nではない場合には、ダミー要素が加わって2nの形式に合わせられ得る。
それぞれのN個の要素は、互いに異なるSIMDレーンで演算できる。
よって、配列のSIMDレーン数はN個以上であり得る。
これは一つの例示に過ぎず、本発明における要素の個数は限定されない。
このとき、入力は、新たにデータを入力するか、予め格納されたメモリからデータをロードすることを含む。
図3aでは、例示的に[1、6、14、3、12、10、15、5、7、2、8、11、16、4、13、9]の配列をソートすることを示す。
具体的には、図3aを参照すると、第1段階(Stage1)で、配列は第(1−1) グループG(1−1)と第(1−2)グループG(1−2)に分離する。
第(1−1)グループG(1−1)及び第(1−2)グループG(1−2)は、配列が半分に分けられて形成される。
よって、第(1−1)グループG(1−1)及び第(1−2)グループG(1−2)はそれぞれN/2、すなわち8つの要素を有する。
分けられた第(1−1)グループG(1−1)及び第(1−2)グループG(1−2)は、それぞれ“0”〜“7”の番号を持つ要素を有する。
追って、それぞれの同じ番号の要素同士で比較ソートを行う。
具体的に、図3aを参照すると、第(1−1)グループG(1−1)と第(1−2)グループG(1−2)とを互いに比較する。
第(1−1)グループG(1−1)と第(1−2)グループG(1−2)との比較はそれぞれの要素の比較であり得る。
すなわち、第(1−1)グループG(1−1)の“0”〜“7”の番号を持つ要素と、第(1−2)グループG(1−2)の“0”〜“7”の番号を持つ要素とを互いに同じ番号同士で比較してソートすることを意味する。
このとき、「1」が「7」よりも小さいので、お互いの位置はそのまま維持される。
一方、第(1−1)グループG(1−1)の“1”番要素である「6」と、第(1−2)グループG(1−2)の“1”番要素である「2」とを比較すると、「6」が「2」よりも大きいので、お互いの位置を入れ替える。つまり、
「2」は第(1−1)グループG(1−1)に属し、「6」は第(1−2)グループG(1−2)に属することになる。
このような方式によって、第1段階(Stage1)で2つのグループを通じた要素ソートの結果、配列は[1、「2」、「8」、3、12、「4」、「13」、5、7、「6」、「14」、11、16、「10」、「15」、9]にソートされる。
これは追って1つの要素が残っているときまでグループを分割し続けるための判断段階である。
もし要素が1つだけ残っている場合、それ以上グループを分割することができないので、グループの分割を終了する。
図3aを参照すると、各グループの要素が8個なので、1つよりも大きい。
よって、グループの分割が終了しない。
具体的には、図3bを参照すると、第(1−1)グループG(1−1)は第(2−1)グループG(2−1)と第(2−2)グループG(2−2)に分割し、第(1−2)グループG(1−2)は第(2−3)グループG(2−3)と第(2−4)グループG(2−4)に分割する。
第(2−1)グループG(2−1)、第(2−2)グループG(2−2)、第(2−3)グループG(2−3)、及び第(2−4)グループG(2−4)は、それぞれ、第(1−1)グループG(1−1)及び第(1−2)グループG(1−2)の要素の個数の半分である4つの要素を有する。
第2段階(Stage2)では、4つのグループの要素ソートを行う。
4つのグループは、それぞれ“0”から“3”までの番号を持つ4つの要素を有する。
具体的には、図3bを参照すると、第(2−1)グループG(2−1)と第(2−2)グループG(2−2)とを互いに比較し、第(2−3)グループG(2−3)と第(2−4)グループG(2−4)を互いに比較する。
すなわち、第(2−1)グループG(2−1)と第(2−2)グループG(2−2)の同じ番号を持つ要素同士を互いに比較し、第(2−3)グループG(2−3)と第(2−4)グループG(2−4)の同じ番号を持つ要素同士を互いに比較する。
このような方式によって、配列は[1、2、8、3、12、4、13、5、7、6、14、「9」、16、10、15、11]にソートされる。
具体的には、図3bを参照すると、1番目のグループ及び最後のグループを除いて第(2−2)グループG(2−2)と第(2−3)グループG(2−3)の要素同士を互いに比較する。
これにより、配列は[1、2、8、3、「7」、4、13、5、「12」、6、14、9、16、10、15、11]にソートされる。
もし比較結果が以前と同一である場合には、現在の段階、すなわち第2段階(Stage2)が終了し、新しい段階、すなわち図3cの第3段階(Stage3)に進行する。
第3段階(Stage3)は、現在のグループが再び分割される段階を意味する。
具体的に、図3bを参照すると、配列は「7」と「12」の部分がソートされて以前と同一ではないので、まだ第3段階(Stage3)に進行せず、第2段階(Stage2)にとどまる。
最大ソート回数とは、各段階ごとに、予め定められたソート回数分だけソートを行い、次の段階に進むように定義された値である。
最大ソート回数は、何番目の段階であるかによって定められ得る。
すなわち、第1段階(Stage1)では1回の最大ソート回数を有し、第2段階(Stage2)では2回の最大ソート回数を有する。
また、第3段階では4回の最大ソート回数を有し、第4段階(Stage4)では6回の最大ソート回数を有することができる。
配列の要素の個数がN=2nなので、第k段階では、各グループは2(nk)個の要素を有し、2k個のグループが形成され得る。
すなわち、図2のステップS800及びステップS900の段階を考察すると、最大ソート回数の範囲内でソートが予め終了することができる。
すなわち、これを複雑度に結び付けて考えてみると、最後の第n段階では、複雑度がO(2×(log2(N)−1))になる。
全体複雑度については後で再び説明する。
再び図2を参照すると、ステップS900で最大ソート回数に到達したので、ステップを戻って、要素の個数が1つより大きいかを判断し(ステップS400)、各グループを二つのサブグループに分割する(ステップS500)。
第(2−3)グループG(2−3)は第(3−5)グループG(3−5)と第(3−6)グループG(3−6)に分割し、第(2−4)グループG(2−4)は第(3−7)グループG(3−7)と第(3−8)グループG(3−8)に分割する。
第(3−1)グループG(3−1)、第(3−2)グループG(3−2)、第(3−3)グループG(3−3)、第(3−4)グループG(3−4)、第(3−5)グループG(3−5)、第(3−6)グループG(3−6)、第(3−7)グループG(3−7)、及び第(3−8)グループG(3−8)は、それぞれ、第(2−1)グループG(2−1)、第(2−2)グループG(2−2)、第(2−3)グループG(2−3)及び第(2−4)グループG(2−4)の要素の個数の半分である2つの要素を有する。
第3段階(Stage3)では、8つのグループの要素ソートを行う。
8つのグループは、それぞれ“0”から“1”までの番号を持つ2つの要素を有する。
具体的には、図3cを参照すると、第(3−1)グループG(3−1)と第(3−2)グループG(3−2)とを互いに比較し、第(3−3)グループG(3−3)と第(3−4)グループG(3−4)とを互いに比較する。
また、第(3−5)グループG(3−5)と第(3−6)グループG(3−6)とを互いに比較し、第(3−7)グループG(3−7)と第(3−8)グループG(3−8)とを互いに比較する。
すなわち、第(3−1)グループG(3−1)と第(3−2)グループG(3−2)の同じ番号を持つ要素同士を互いに比較し、第(3−3)グループG(3−3)と第(3−4)グループG(3−4)の同じ番号を持つ要素同士を互いに比較する。
また、第(3−5)グループG(3−5)と第(3−6)グループG(3−6)の同じ番号を持つ要素同士を互いに比較し、第(3−7)グループG(3−7)と第(3−8)グループG(3−8)の同じ番号を持つ要素同士を互いに比較する。
このような方式によって、配列は[1、2、8、3、「7」、4、13、5、「12」、6、14、9、「15」、10、「16」、11]にソートされる。
具体的には、図3cを参照すると、1番目のグループ及び最後のグループを除いて第(3−2)グループG(3−2)と第(3−3)グループG(3−3)の要素同士を互い比較し、第(3−4)グループG(3−4)と第(3−5)グループG(3−5)の要素同士を互いに比較し、第(3−6)グループG(3−6)と第(3−7)グループG(3−7)の要素同士を互いに比較する。
これにより、配列は[1、2、「7」、3、「8」、4、「12」、5、「13」、6、14、9、「15」、10、「16」、11]にソートされる。
これにより、配列は[1、2、7、3、8、4、12、5、13、6、14、9、15、10、16、11]にソートされる。
上述した説明では、比較結果が以前と同一であるか否かを判断する段階(ステップS800)がステップS600とステップS700の2つの段階をすべて経た後に行われるようにしたが、これに限定されない。
ステップS800段階は、ステップS600段階とステップS700段階との間で行われてもよく、ステップS700段階の直後に行われてもよく、ステップS600段階とステップS700段階が行われた直後ごとに行われてもよい。
ソートされた配列が以前結果と同一なので、第3段階(Stage3)は終了し、第4段階に進行する。
このとき、最大ソート回数には到達していないが、これを判断する必要はない。
具体的に、図3dを参照すると、それぞれのグループはそれぞれ1つの要素に分割される。
つまり、要素1個が自らがグループを成す。よって、合計16個のグループがあり、グループはそれぞれ1つの要素を有する。
具体的に、図3dを参照すると、例えば、「1」と「2」とを比較し、「7」と「3」とを比較する。
このように、順次隣り合う要素同士を互いに比較してソートする。
このような方式によって、配列は[1、2、「3」、「7」、「4」、「8」、「5」、「12」、「6」、「13」、「9」、「14」、「10」、「15」、「11」、「16」]にソートされる。
具体的に、図3dを参照すると、1番目の要素及び最後の要素を除いて、隣接する要素を互いに比較する。
例えば、「2」と「3」とを比較し、「7」と「4」とを比較する。
このような方式によって、配列は[1、2、3、「4」、「7」、「5」、「8」、「6」、「12」、「9」、「13」、「10」、「14」、「11」、「15」、16]にソートされる。
これにより、配列は[1、2、3、4、「5」、「7」、「6」、「8」、「9」、「12」、「10」、「13」、「11」、「14」、15、16]にソートされる。
具体的に、図3dを参照すると、1番目の要素と最後の要素を除いて、隣接する要素を互いに比較する。
たとえば、「2」と「3」とを比較し、「4」と「5」とを比較する。
このような方式によって、配列は[1、2、3、4、5、「6」、「7」、「8」、「9」、「10」、「12」、「11」、「13」、14、15、16]にソートされる。
これにより、配列は[1、2、3、4、5、6、7、8、9、10、「11」、「12」、13、14、15、16]にソートされる。
具体的には、図3dを参照すると、1番目の要素と最後の要素を除いて、隣接する要素を互いに比較する。
たとえば、「2」と「3」とを比較し、「4」と「5」とを比較する。
このような方式により、配列は[1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16]にソートされる。
したがって、第1段階(Stage1)を除いた全体ソート回数は、数列の和によって、2+4+6+…+2×(log2(N)−1)=[2+2×{log2(N)−1}]×{log2(N)−1}/2で表すことができ、第1段階(Stage1)の1番を加えると、1+2+4+6+…+2×(log2(N)−1)=1+[2+2×{log2(N)−1}]×{log2(N)−1}/2≒{log2(N)}2であって、近似が可能である。
したがって、本発明の実施形態に係るベクトルプロセッサの配列ソート方法は、既存のマージソートのO(N×log2(N))の複雑度に比べて一層低いO({log2(N)}2)の複雑度を持つことができる。
ボトムアップ方式の場合にも、従来のマージソートのO(N*log2(N))の複雑度に比べて一層低いO({log2(N)}2)の複雑度を持つことができるので、ソートの効率を高めることができる。
図4は本発明の実施形態に係るベクトルプロセッサの配列ソート方法が実行されるベクトルプロセッサの構造を説明するためのブロック図であり、図5は図4のベクトルプロセッサの構造を説明するためのブロック図であり、図6は本発明の実施形態に係るベクトルプロセッサのデータ移動アーキテクチャの概念を説明するための図である。
プロセッサ200は、算術演算を行うプロセッサである。
本発明の実施形態において、プロセッサ200は、予測(prediction)演算、ベクトルパーミュート(vector permute)演算、ベクトルビット操作(vector bit manipulation)演算、バタフライ(butterfly)演算、ソート(sorting)演算などのベクトル特化コマンドを含むベクトル演算処理に特化したベクトルプロセッサで実現できる。
プロセッサ200は、レジスタ(212、214)を含み、レジスタ(212、214)を用いて算術演算を行う。
本発明の実施形態において、レジスタ(212、214)は、SR(Scalar Register)212及びVR(Vector Register)214のうちの少なくとも一つを含むことができる。
ここで、SR212はプロセッサ200のスカラ演算に使用されるレジスタであり、VR214はプロセッサ200のベクトル演算に使用されるレジスタである。
デコーダ230は、フェッチユニット220から提供されたインストラクションをデコードする。
本発明の実施形態において、インストラクションは、VLIWに応じて3つのスロット(slot)(240a、240b、240c)によって処理される。
例えば、フェッチユニット220からフェッチされたインストラクションが96ビットである場合、デコーダ230は、フェッチされたインストラクションをそれぞれ32ビットからなる3つのインストラクションにデコードし、3つのインストラクションは、それぞれのスロット(240a、240b、240c)によって処理される。
本実施形態では、説明のための一例として、フェッチされたインストラクションが3つのインストラクションにデコードされて3つのスロットによって処理するものを示したが、本発明の範囲はこれに限定されるものではなく、インストラクションは、2つ以上の任意の個数のスロットによって処理できるように実現してもよい。
具体的に、第1スロット240aはSFU242a、VFU244a、及びMV246aを含み、第2スロット240bはSFU242b、VFU244b、及びMV246bを含み、また、第3スロット240cはSFU242c、VFU244c、及びMV246cを含む。
そして、プロセッサ200は、各スロット(240a、240b、240c)に含まれているMV(246a、246b、246c)を用いてお互いのデータを共有することができる。
もちろん、SR212及びVR214に格納された結果は必要に応じてプロセッサ200によって使用できる。
しかし、図5に示した構成は、以下で本発明の様々な実施形態についての説明の便宜のための一例に過ぎなく、本発明の範囲がこれに限定されないのは当該技術分野における通常の技術者にとって自明である。
図6を参照すると、本発明の実施形態に係るベクトルプロセッサのデータ移動アーキテクチャは、メモリ階層105、レジスタファイル110、データ配置レイヤー130、複数のALU160、及びこれらの要素を全体的に制御する制御部170を含む。
ここで、メモリ階層105は、メモリインターフェース(memory interface)を提供する。
先立って図4に関連して説明したメモリ装置、メモリバス100などがメモリ階層105に対応する。
データ配置レイヤー130は、プロセッサ200が処理するさまざまなサイズのデータ(例えば、マトリックス)に対する演算を効率よく行うためのデータパターンを生成する。
上記アーキテクチャは、複数のALU160が共有することが可能なレジスタ(212、214)を用いて精巧なフロー制御及び複雑な算術演算の実行を可能にしながらも、データ配置レイヤー130を用いて、レジスタ(212、214)に格納されたデータをパターン化することにより、入力データの再使用性を向上させることができる。
つまり、図3a〜図3dに示した配列ソート方法は、それぞれのグループごとに、データ依存度なしでソートを同時に行うので、これをVLIWの並列処理で行うことができる。
すなわち、例えば、図3bに示した第(2−1)グループG(2−1)と第(2−2)グループG(2−2)のソート、及び第(2−3)グループG(2−3)と第(2−4)グループG(2−4)のソートは、互いにデータ依存度が全くないので、同時に互いに異なるスロットでこれを処理することができる。
これにより、一層速い速度と一層高い効率で配列のソートを完了することができる。
つまり、段階ごとに最適の演算を行うことができるスロットから作業を引き渡されて行うことができる。
これにより、全体的なソート演算の効率を大幅に高めることができる。
図7は、本発明の実施形態に係るベクトルプロセッサの配列ソート方法に使用されるパーミュテーション回路を説明するための図であり、図8は、本発明の実施形態に係るベクトルプロセッサの配列ソート方法に使用されるMin/Max回路を説明するための図である。
ベクトルレジスタ20は、パーミュテーション回路に入力されるインプットデータ(I1〜I8)を提供し、追ってパーミュテーション回路から出力されるアウトプットデータ(O1〜O8)を格納する。
ベクトルレジスタ20は、図4〜図6のVR214又はレジスタファイル110に該当し得る。
ベクトルレジスタ20は、マルチプレクサ選択信号10も提供する。
これにより、第1〜第8マルチプレクサ(M1〜M8)は、インプットデータ(I1〜I8)を、マルチプレクサ選択信号10によって配置を変えてアウトプットデータ(O1〜O8)として出力する。
つまり、ベクトルデータの個数やマルチプレクサの個数は必要に応じていくらでも変更できる。
インプットデータ(I1〜I8)とアウトプットデータ(O1〜O8)は、ベクトルデータであって、それぞれの要素が別個のSIMDレーンによって処理される。
これにより、ベクトルプロセッサは、スカラプロセスとは異なり、速い演算速度を示すことができる。
第1〜第8マルチプレクサ(M1〜M8)は、インプットデータ(I1〜I8)の8つの要素すべてを入力として受け、これをアウトプットデータ(O1〜O8)として出力する。
図8を参照すると、Min/Max回路は、ベクトルレジスタ20、ベクトルコントロールレジスタ30、及びMin/Max演算器40を含む。
ベクトルレジスタ20は、Min/Max回路に入力されるD1とD2を提供し、追ってMin/Max回路から出力されるD0を格納する。
ベクトルレジスタ20は、図4〜図6のVR214又はレジスタファイル110に該当する。
ベクトルコントロールレジスタ30は、Min/Max演算器のコントロール信号であるコントロールベクトルVcを格納し、これをMin/Max演算器40に提供する。
Min/Max演算器40は複数であり得る。
SIMD処理方式に応じて、D1、D2、及びD0がN個の要素を有するベクトルデータである場合、Min/Max演算器40もN個であり得る。
図では全部で16個のMin/Max演算器40が示したが、これは一つの例示に過ぎず、これに限定されるものではない。
このとき、最大値を出力するか、最小値を出力するかは、コントロールベクトルVcによって定められ得る。
Min/Max演算器40は、減算器41とマルチプレクサ43を含み得る。
減算器41は、D1とD2の要素の入力を受けて両者間の差を出力する。
マルチプレクサ43は、上記両者間の差の符号に応じて、D1とD2の要素のうち、どの値が最大値であるか、どの値が最小値であるかを判断する。
これはD1とD2の要素の差の符号情報を持っているLSB(least significant bit)によって容易に判断することができる。
このとき、コントロールベクトルVcがコントロール信号ctrlとしてマルチプレクサ43に入力され、これに応じて、D1及びD2のいずれかの値が最大値もしくは最小値として出力される。
具体的には、図3a、図7及び図8を参照すると、提供される配列[1、6、14、3、12、10、15、5、7、2、8、11、16、4、13、9]に対して、パーミュテーション回路はコピー配列[7、2、8、11、16、4、13、9、1、6、14、3、12、10、15、5]を出力する。
つまり、インプットデータ(I1〜I8)は上記配列であり、アウトプットデータ(O1〜O8)は上記コピー配列であり得る。
このとき、マルチプレクサ選択信号10は、[0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F]の配列に対して、[8、9、A、B、C、D、E、F、0、1、2、3、4、5、6、7]で表され、これは2つのグループ、すなわち、第(1−1)グループG(1−1)と第(1−2)グループG(1−2)が位置を入れ替えたことを意味する。
Min/Max回路は、配列[1、6、14、3、12、10、15、5、7、2、8、11、16、4、13、9]をD1とし、コピー配列[7、2、8、11、16、4、13、9、1、6、14、3、12、10、15、5]をD2とする。
これにより、Min/Max演算器40は第(1−1)グループG(1−1)と第(1−2)グループG(1−2)の同じ番号の要素同士の比較を行うことができる。
したがって、D0の前半部はmin値が出力され、後半部はmax値が出力される。
すなわち、このようなパーミュテーション演算とMin/Max演算を介して、グループソートの段階を単に2つの段階で簡単に行うことができる。
このようなMin/Max回路とパーミュテーション回路は、単にマルチプレクサと減算器などの共用の演算装置を用いてSIMD演算を行うので、ソートのための専用ハードウェアがなくても公共のベクトルプロセッサを介していくらでも実現できる。
さらに、上述した複雑度の面でも優れるので、非常に効率よくソートを行うことができる。
上述した説明と重複する部分は簡略にするか或いは省略する。
図9は、本発明の実施形態に係るベクトルプロセッサの配列ソート方法を説明するための図である。
SIMDレーンの個数が16個であるとき、32個の要素を有する配列をソートすることを想定する。
まず、32個の要素なので、2つのベクトルデータに分けて入力する。
すなわち、それぞれ16個の要素を有する第1配列S1と第2配列S2に入力或いはロードする。
第1配列S1と第2配列S2は、それぞれ、図3a〜図3dで説明した本発明の実施形態に係る配列ソート方法でそれぞれソートする。
このとき、本発明の実施形態に係るベクトルプロセッサは、互いに異なるスロットでVLIWモードにて第1配列S1及び第2配列S2を並列的にソートする。但し、これに限定されるものではない。
第2配列S2は、それぞれ8つの要素を有する第3グループG3及び第4グループG4と定義する。
次いで、第1グループG1と第3グループG3とを連結する第3配列S3、及び第2グループG2と第4グループG4とを連結する第4配列S4を形成する。
続いて、第3配列S3と第4配列S4を、本発明の実施形態に係る配列ソート方法によってそれぞれソートする。
このとき、本発明の実施形態に係るベクトルプロセッサは、互いに異なるスロットでVLIWモードにて第3配列S3及び第4配列S4を並列的にソートする。但し、これに限定されるものではない。
また、ソートされた後の第4配列S4は、それぞれ8つの要素を有する第7グループG7と第8グループG8を含む。
次いで、第6グループG6と第7グループG7とを連結する第5配列S5を形成する。
続いて、第5配列S5を本発明の実施形態による配列ソート方法でソートする。
これにより、第5グループG5、第5配列S5、及び第8グループG8の順に、合計32個の要素を有するデータがソートされる。
一般なベクトルプロセッサは、min値又はmax値の処理のための関数を支援するが、すべてのSIMDレーンに同じ演算が実行できる。
すなわち、全体レーンに対してmin値及びmax値のうちのいずれか一つのみを見つける形式である。
この場合、同一演算をもう一度さらに行うことでmin値とmax値をすべて見つけることができるので、追加のオーバーヘッドが発生する。
本発明では、SIMDレーンの予測演算(predication−ベクトルプロセッサのSIMDレーンのうち、特定のレーンのみ該当演算を行うこと)のために存在するベクトルコントロールレジスタを活用してmin値とmax値を同時に処理することができる。
以下、図11a〜図11dを参照して、図10のコマンドと図7及び図8の回路を用いて配列をソートすることを説明する。
図11a〜図11dは、本発明の実施形態に係るベクトルプロセッサの配列ソート方法の実現のためのコマンド使用を説明するための例示図である。
図11a〜図11dは、図3a〜図3dのソートにコマンドに対する付加的な表示をした図である。
このとき、v3は図7のマルチプレクサ選択信号10である。
すなわち、2つのグループの位置を互いに入れ替えるパーミュテーション演算のための第1〜第8マルチプレクサ(M1〜M8)の選択信号である。
続いて、「vpmt」コマンドを介してv1のコピー配列を形成する。
次いで、「ld」コマンドを介してvcをロードする。
vcは図8のMin/Max演算器40のコントロールベクトルVcである。
すなわち、Min/Max演算の出力結果、配列の前半部はmin値(0)であり、後半部はmax値(1)であることを意味するベクトルである。
次いで、4つのグループのために、v3を再びロードし(「ld」コマンド)、これをパーミュテーションした結果をv2へ出力する(「vpmt」コマンド)。
続いて、vcをロードし、2つのグループずつmin値とmax値が表示されなければならないので、vcは[0、0、0、0、1、1、1、1、0、0、0、0、1、1、1、1]のようにロードされる。
次に、v0に再びMin/Max演算値を格納する(「vminmax」コマンド)。
このとき、それぞれのld、vpmt、vminmaxなどのコマンドは、互いに異なるスロットによって動作することができる。それぞれのスロットは、レジスタを共有するので、メモリにオーバーヘッドを増加させずに並列処理が可能である。
もしグループのうち1番目のグループと最後のグループが除かれてソートされる場合には、図7のマルチプレクサ選択信号10のためのv3が[0、1、2、3、8、9、A、B、4、5、6、7、C、D、E、F]のようにロードされる。
これは1番目のグループと最後のグループの要素を変えなくて、Min/Max演算において1番目のグループ及び最後のグループの要素が変更されないようにするためである。
20 ベクトルレジスタ
30 ベクトルコントロールレジスタ
40 Min/Max演算器
41 減算器
43 マルチプレクサ
100 メモリバス
105 メモリ階層
110 レジスタファイル
130 データ配置レイヤー
160(160a〜d) ALU
170 制御部
200 プロセッサ
212 (SR)レジスタ
214 (VR)レジスタ
220 フェッチユニット
230 デコーダ
240a、240b、240c (第1〜第3)スロット
242a、242b、242c スカラ機能ユニット(SFU)
244a、244b、244c ベクトル機能ユニット(VFU)
246a、246b、246c 移動ユニット(MV)
300 コントローラ
Claims (20)
- 複数の要素(element)を含むベクトルデータ形式の配列(sequence)をロード(load)する段階と、
前記配列を半分に分割して第1グループを形成し、前記第1グループのi番目(iは自然数)の要素同士をソートする段階と、
第n(nは自然数)グループをそれぞれ半分に分割して第(n+1)グループを形成し、前記第(n+1)グループのうちの隣り合うグループのj番目(jは自然数)の要素同士をソートする段階と、
前記第(n+1)グループが1つの要素のみを含む前まで、前記分割及び要素同士のソートを反復する段階と、
前記第(n+1)グループが1つの要素のみを含むと、前記第(n+1)グループのうちの隣り合うグループの要素同士をソートする段階と、を有し、
前記第1グループのi番目の要素同士をソートする段階は、SIMD(Single Instruction Multiple Data)処理方式で処理する段階を含む、ことを特徴とするベクトルプロセッサの配列ソート方法。 - 前記配列は、N=2n個の要素を含むことを特徴とする請求項1に記載のベクトルプロセッサの配列ソート方法。
- 前記分割及び要素同士のソートを反復する段階は、前記分割が前記第(n+1)グループを22m個に形成する分割である場合、前記要素同士のソートを最大2m回行う段階を含むことを特徴とする請求項2に記載のベクトルプロセッサの配列ソート方法。
- 前記要素同士のソートを2m回行う段階は、全体グループのうちの隣り合うグループの要素同士のソートを行う第1ソートを行う段階と、
前記第1ソートの後に、前記全体グループのうち、1番目のグループと最後のグループを除いて残りのグループにおける隣り合うグループの要素同士のソートを行う第2ソートを行う段階と、
前記第1及び第2ソートを行う段階を、m回繰り返すことを特徴とする請求項3に記載のベクトルプロセッサの配列ソート方法。 - 前記配列をロードする段階は、互いに同じ大きさの第1及び第2配列をロードする段階を含み、
前記第1配列を第1グループと第2グループに分割する段階と、
前記第2配列を第3グループと第4グループに分割する段階と、
前記第1グループと第3グループとを連結した第3配列、及び前記第2グループと前記第4グループとを連結した第4配列を定義する段階と、
前記第3及び第4配列をそれぞれソートする段階と、
前記第3配列を第5グループと第6グループに分割する段階と、
前記第4配列を第7グループと第8グループに分割する段階と、
前記第6グループと第7グループとを連結した第5配列を定義する段階と、
前記第5配列をソートして前記第5グループ、前記第5配列、及び前記第8グループの順にソートを完成する段階と、をさらに有し、
前記第3配列をソートする段階は、前記分割及び要素同士のソートを反復する段階を含むことを特徴とする請求項1に記載のベクトルプロセッサの配列ソート方法。 - 前記ベクトルプロセッサは、それぞれ別途のファンクションユニットを含む複数のスロットを含み、
前記第3及び第4配列をソートする段階は、前記第3及び第4配列を互いに異なるスロットのファンクションユニットを用いてソートする段階を含むことを特徴とする請求項5に記載のベクトルプロセッサの配列ソート方法。 - 前記ベクトルプロセッサは、VLIW(Very Long Instruction Word)インストラクションを行い、
前記VLIWインストラクションは、第1及び第2インストラクションを含み、前記第1及び第2インストラクションは、それぞれ前記第3及び第4配列をソートするインストラクションであり、
前記第3及び第4配列をソートする段階は、前記第1及び第2インストラクションが、前記互いに異なるスロットのファンクションユニットに伝達され、前記互いに異なるスロットのファンクションユニットがそれぞれ前記第3及び第4配列をソートする段階を含むことを特徴とする請求項6に記載のベクトルプロセッサの配列ソート方法。 - 前記第4及び第5配列をソートする段階は、それぞれ、前記(第4又は第5)配列を半分に分割してグループを形成し、前記グループのk番目(kは自然数)の要素同士をソートする段階と、
前記グループをそれぞれ半分に分割して新しいグループを形成し、前記新しいグループのうちの隣り合うグループのl番目(lは自然数)の要素同士をソートする段階と、
前記新しいグループが1つの要素のみ含む前まで、前記分割及び要素同士のソートを反復する段階と、
前記新しいグループが1つの要素のみを含むと、前記新しいグループのうちの隣り合うグループの要素同士をソートする段階を含むことを特徴とする請求項5に記載のベクトルプロセッサの配列ソート方法。 - 前記配列を半分に分割して第1グループを形成し、前記第1グループのi番目の要素同士をソートする段階は、パーミュテーション(permutation)演算を用いて、前記配列と順序が変更されたコピー配列を生成する段階と、
前記配列と前記コピー配列に対してMin演算及びMax演算を行う段階と、を含むことを特徴とする請求項1に記載のベクトルプロセッサの配列ソート方法。 - 前記Min演算及びMax演算は同時に行われることを特徴とする請求項9に記載のベクトルプロセッサの配列ソート方法。
- N個(Nは2n、nは自然数)の要素を含むベクトルデータ形式の配列をロードする(a)段階と、
前記配列を、それぞれ互いに同じN/(2n)個の要素を有するグループにグループ化し、それぞれのグループのうちの隣り合うグループ同士でi番目(iはN/(2n)よりも小さい自然数)の要素をソートする(b)段階と、を有し、
前記(b)段階は、パーミュテーション演算を用いて、前記配列と順序が変わったコピー配列を生成する(c)段階と、
前記配列と前記コピー配列に対してMin演算及びMax演算を行う(d)段階とを含み、
前記それぞれのグループのうちの隣り合うグループ同士でi番目の要素をソートする段階は、SIMD処理方式で処理する段階を含むことを特徴とするベクトルプロセッサの配列ソート方法。 - 前記(c)段階の前記コピー配列は、前記配列における、前記グループのうち互いに要素をソートする隣接グループ同士の位置が互いに変更された配列であることを特徴とする請求項11に記載のベクトルプロセッサの配列ソート方法。
- 前記(d)段階で、前記配列における互いにMin演算及びMax演算を行わない部分は、前記コピー配列及び前記配列で互いに同一の要素を有することを特徴とする請求項12に記載のベクトルプロセッサの配列ソート方法。
- 前記(b)段階は、n=1、2、…、log2Nのときのそれぞれに対して繰り返し行われることを特徴とする請求項11に記載のベクトルプロセッサの配列ソート方法。
- 前記(b)段階は、n=1のときに対しては1回、
n=2、…、log2Nのときに対してはそれぞれ2(n−1)回反復して隣接グループ同士で要素をソートする段階を含むことを特徴とする請求項14に記載のベクトルプロセッサの配列ソート方法。 - 2(n−1)回反復して隣接グループ同士で要素をソートする段階は、全体グループのうち、隣り合うグループの要素同士のソートを行う第1ソート段階と、
前記全体グループのうち、1番目のグループと最後のグループを除いて残りのグループにおける隣り合うグループの要素同士のソートを行う第2ソート段階と、
前記第1ソート段階及び第2ソート段階を最大(n−1)回繰り返す段階と、を含むことを特徴とする請求項15に記載のベクトルプロセッサの配列ソート方法。 - 前記配列は、互いに同じ大きさの前半部と後半部を含み、
前記(d)段階は、コントロールシグナルベクトルによってmin値とmax値を選択するMin演算及びMax演算を使用し、
前記コントロールシグナルベクトルは、前記前半部及び後半部に互いに異なる値を有することを特徴とする請求項11に記載のベクトルプロセッサの配列ソート方法。 - 前記Min演算及びMax演算は、減算器と、
前記減算器の出力、前記コントロールシグナルベクトル、及び前記配列及び前記コピー配列の要素を入力として、前記配列及び前記コピー配列の要素のうちのいずれかを出力するマルチプレクサとを含むMin/Max回路によって演算されることを特徴とする請求項17に記載のベクトルプロセッサの配列ソート方法。 - それぞれ別個の演算ユニットを含む複数のスロットと、前記複数のスロットが互いに共有するレジスタとを含むベクトルプロセッサの配列ソート方法において、
N個(Nは2n、nは自然数)の要素を含むベクトルデータ形式の配列をロードする(a)段階と、
前記配列を、それぞれ互いに同じN/(2n)個の要素を有するグループにグループ化し、それぞれのグループのうちの隣り合うグループ同士でi番目(iは自然数)の要素をソートする(b)段階と、を有し、
前記(b)段階は、前記複数のスロットによって並列処理され、
前記ソートは、SIMD処理方式で処理されることを特徴とするベクトルプロセッサの配列ソート方法。 - 前記(b)段階は、n=1、2、…、log2Nのときのそれぞれに対して繰り返し行われることを特徴とする請求項19に記載のベクトルプロセッサの配列ソート方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2017-0064502 | 2017-05-25 | ||
KR1020170064502A KR102343652B1 (ko) | 2017-05-25 | 2017-05-25 | 벡터 프로세서의 서열 정렬 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2018200692A true JP2018200692A (ja) | 2018-12-20 |
JP7241470B2 JP7241470B2 (ja) | 2023-03-17 |
Family
ID=64401213
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018099367A Active JP7241470B2 (ja) | 2017-05-25 | 2018-05-24 | ベクトルプロセッサの配列ソート方法 |
Country Status (5)
Country | Link |
---|---|
US (3) | US10372451B2 (ja) |
JP (1) | JP7241470B2 (ja) |
KR (1) | KR102343652B1 (ja) |
CN (1) | CN108959179B (ja) |
TW (1) | TWI771373B (ja) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9606803B2 (en) | 2013-07-15 | 2017-03-28 | Texas Instruments Incorporated | Highly integrated scalable, flexible DSP megamodule architecture |
US11106462B2 (en) * | 2019-05-24 | 2021-08-31 | Texas Instruments Incorporated | Method and apparatus for vector sorting |
CN111949241B (zh) * | 2019-05-15 | 2024-04-12 | 瑞昱半导体股份有限公司 | 排序装置 |
JP7263994B2 (ja) * | 2019-09-17 | 2023-04-25 | 富士通株式会社 | 情報処理方法及び最適化プログラム |
US11036506B1 (en) * | 2019-12-11 | 2021-06-15 | Motorola Solutions, Inc. | Memory systems and methods for handling vector data |
CN112861145B (zh) * | 2021-01-06 | 2023-12-12 | 华控清交信息科技(北京)有限公司 | 一种数据处理方法、装置和用于数据处理的装置 |
US11366783B1 (en) | 2021-03-29 | 2022-06-21 | SambaNova Systems, Inc. | Multi-headed multi-buffer for buffering data for processing |
US11204889B1 (en) | 2021-03-29 | 2021-12-21 | SambaNova Systems, Inc. | Tensor partitioning and partition access order |
US11709611B2 (en) | 2021-10-26 | 2023-07-25 | SambaNova Systems, Inc. | Determining and using memory unit partitioning solutions for reconfigurable dataflow computing systems |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05189202A (ja) * | 1992-01-10 | 1993-07-30 | Fujitsu Ltd | 並列ソート方式 |
JP2005527038A (ja) * | 2002-05-24 | 2005-09-08 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | スカラー/ベクトルプロセッサ |
JP2009199439A (ja) * | 2008-02-22 | 2009-09-03 | Nec Corp | マージソート処理方法、マージソート処理装置、及びマージソート処理プログラム |
US20130212354A1 (en) * | 2009-09-20 | 2013-08-15 | Tibet MIMAR | Method for efficient data array sorting in a programmable processor |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6324638B1 (en) * | 1999-03-31 | 2001-11-27 | International Business Machines Corporation | Processor having vector processing capability and method for executing a vector instruction in a processor |
JP2001014139A (ja) | 1999-06-28 | 2001-01-19 | Nec Corp | ワークファイルを使用するマルチスレッドソート処理方式及び処理方法 |
US6557096B1 (en) * | 1999-10-25 | 2003-04-29 | Intel Corporation | Processors with data typer and aligner selectively coupling data bits of data buses to adder and multiplier functional blocks to execute instructions with flexible data types |
US20050188182A1 (en) * | 1999-12-30 | 2005-08-25 | Texas Instruments Incorporated | Microprocessor having a set of byte intermingling instructions |
US6745319B1 (en) | 2000-02-18 | 2004-06-01 | Texas Instruments Incorporated | Microprocessor with instructions for shuffling and dealing data |
US7386842B2 (en) | 2004-06-07 | 2008-06-10 | International Business Machines Corporation | Efficient data reorganization to satisfy data alignment constraints |
US20070011441A1 (en) * | 2005-07-08 | 2007-01-11 | International Business Machines Corporation | Method and system for data-driven runtime alignment operation |
WO2009131497A1 (en) | 2008-04-21 | 2009-10-29 | Telefonaktiebolaget L M Ericsson (Publ) | Method for enabling communication between a user equipment and an ims gateway |
US8417921B2 (en) * | 2008-08-15 | 2013-04-09 | Apple Inc. | Running-min and running-max instructions for processing vectors using a base value from a key element of an input vector |
GB2464292A (en) * | 2008-10-08 | 2010-04-14 | Advanced Risc Mach Ltd | SIMD processor circuit for performing iterative SIMD multiply-accumulate operations |
US9652231B2 (en) * | 2008-10-14 | 2017-05-16 | International Business Machines Corporation | All-to-all permutation of vector elements based on a permutation pattern encoded in mantissa and exponent bits in a floating-point SIMD architecture |
WO2010082529A1 (ja) | 2009-01-13 | 2010-07-22 | 日本電気株式会社 | Simd型並列データ処理装置及びデータソート方法並びにプロセッシングエレメント |
KR101662769B1 (ko) | 2010-03-09 | 2016-10-05 | 삼성전자주식회사 | 고속 정렬 장치 및 방법 |
WO2013089709A1 (en) * | 2011-12-14 | 2013-06-20 | Intel Corporation | System, apparatus and method for generating a loop alignment count or a loop alignment mask |
JP5834997B2 (ja) * | 2012-02-23 | 2015-12-24 | 株式会社ソシオネクスト | ベクトルプロセッサ、ベクトルプロセッサの処理方法 |
US9575753B2 (en) * | 2012-03-15 | 2017-02-21 | International Business Machines Corporation | SIMD compare instruction using permute logic for distributed register files |
EP2831691A4 (en) * | 2012-03-30 | 2015-11-25 | Intel Corp | METHOD AND APPARATUS FOR FUSIONING AND SORTING SMALLER SORTED VECTORS IN LARGER SORTING VECTORS |
US9098265B2 (en) * | 2012-07-11 | 2015-08-04 | Arm Limited | Controlling an order for processing data elements during vector processing |
US9342479B2 (en) * | 2012-08-23 | 2016-05-17 | Qualcomm Incorporated | Systems and methods of data extraction in a vector processor |
US9606961B2 (en) * | 2012-10-30 | 2017-03-28 | Intel Corporation | Instruction and logic to provide vector compress and rotate functionality |
WO2014098845A1 (en) * | 2012-12-19 | 2014-06-26 | Intel Corporation | Vector mask driven clock gating for power efficiency of a processor |
US9405538B2 (en) | 2012-12-28 | 2016-08-02 | Intel Corporation | Functional unit having tree structure to support vector sorting algorithm and other algorithms |
KR20140092135A (ko) | 2013-01-15 | 2014-07-23 | 한국전자통신연구원 | 빅 데이터를 위한 병렬 정렬 방법 및 장치 |
US9632781B2 (en) * | 2013-02-26 | 2017-04-25 | Qualcomm Incorporated | Vector register addressing and functions based on a scalar register data value |
US9477999B2 (en) * | 2013-09-20 | 2016-10-25 | The Board Of Trustees Of The Leland Stanford Junior University | Low power programmable image processor |
KR102122406B1 (ko) | 2013-11-06 | 2020-06-12 | 삼성전자주식회사 | 셔플 명령어 처리 장치 및 방법 |
US9977676B2 (en) * | 2013-11-15 | 2018-05-22 | Qualcomm Incorporated | Vector processing engines (VPEs) employing reordering circuitry in data flow paths between execution units and vector data memory to provide in-flight reordering of output vector data stored to vector data memory, and related vector processor systems and methods |
US9740659B2 (en) * | 2014-03-19 | 2017-08-22 | International Business Machines Corporation | Merging and sorting arrays on an SIMD processor |
KR102310246B1 (ko) | 2014-04-23 | 2021-10-08 | 삼성전자주식회사 | 세컨더리 인덱스 생성 방법 및 세컨더리 인덱스 저장 장치 |
CN106462386B (zh) * | 2014-05-30 | 2019-09-13 | 华为技术有限公司 | 排序分布式输入数据的排序方法和处理系统 |
KR101573618B1 (ko) | 2014-07-04 | 2015-12-01 | 한양대학교 산학협력단 | 메모리 구조에 기반한 외부 퀵 정렬의 방법 및 장치 |
US9910670B2 (en) * | 2014-07-09 | 2018-03-06 | Intel Corporation | Instruction set for eliminating misaligned memory accesses during processing of an array having misaligned data rows |
EP3001306A1 (en) * | 2014-09-25 | 2016-03-30 | Intel Corporation | Bit group interleave processors, methods, systems, and instructions |
JP2016091488A (ja) | 2014-11-11 | 2016-05-23 | アズビル株式会社 | データソート方法およびプログラム |
GB2538119B8 (en) * | 2014-11-21 | 2020-10-14 | Intel Corp | Apparatus and method for efficient graphics processing in virtual execution environment |
US9870339B2 (en) * | 2015-06-26 | 2018-01-16 | Intel Corporation | Hardware processors and methods for tightly-coupled heterogeneous computing |
-
2017
- 2017-05-25 KR KR1020170064502A patent/KR102343652B1/ko active IP Right Grant
- 2017-11-03 US US15/802,844 patent/US10372451B2/en active Active
-
2018
- 2018-02-21 TW TW107105795A patent/TWI771373B/zh active
- 2018-05-16 CN CN201810468470.9A patent/CN108959179B/zh active Active
- 2018-05-24 JP JP2018099367A patent/JP7241470B2/ja active Active
-
2019
- 2019-06-20 US US16/447,035 patent/US11442728B2/en active Active
- 2019-06-20 US US16/447,041 patent/US11068265B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05189202A (ja) * | 1992-01-10 | 1993-07-30 | Fujitsu Ltd | 並列ソート方式 |
JP2005527038A (ja) * | 2002-05-24 | 2005-09-08 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | スカラー/ベクトルプロセッサ |
JP2009199439A (ja) * | 2008-02-22 | 2009-09-03 | Nec Corp | マージソート処理方法、マージソート処理装置、及びマージソート処理プログラム |
US20130212354A1 (en) * | 2009-09-20 | 2013-08-15 | Tibet MIMAR | Method for efficient data array sorting in a programmable processor |
Also Published As
Publication number | Publication date |
---|---|
TWI771373B (zh) | 2022-07-21 |
US20190303149A1 (en) | 2019-10-03 |
JP7241470B2 (ja) | 2023-03-17 |
CN108959179B (zh) | 2023-12-01 |
KR20180129058A (ko) | 2018-12-05 |
US20190303148A1 (en) | 2019-10-03 |
US10372451B2 (en) | 2019-08-06 |
US11068265B2 (en) | 2021-07-20 |
US11442728B2 (en) | 2022-09-13 |
US20180341487A1 (en) | 2018-11-29 |
TW201901412A (zh) | 2019-01-01 |
KR102343652B1 (ko) | 2021-12-24 |
CN108959179A (zh) | 2018-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7241470B2 (ja) | ベクトルプロセッサの配列ソート方法 | |
US9405538B2 (en) | Functional unit having tree structure to support vector sorting algorithm and other algorithms | |
WO2022046570A1 (en) | Vector processor architectures | |
US5704052A (en) | Bit processing unit for performing complex logical operations within a single clock cycle | |
CN112507284A (zh) | 稀疏矩阵乘法在可重构处理器阵列上的实现方法及装置 | |
JP2008047031A (ja) | 並列演算装置 | |
JPWO2005098612A1 (ja) | 重要成分優先計算方式ならびに装置 | |
CN112667291A (zh) | Risc-v指令集移位指令实现电路 | |
JP2518293B2 (ja) | デ−タフロ−プロセツサ | |
KR102295677B1 (ko) | 연속적인 데이터 병렬처리가 가능한 병렬 처리장치 | |
CN110008436B (zh) | 基于数据流架构的快速傅里叶变换方法、系统和存储介质 | |
US5192882A (en) | Synchronization circuit for parallel processing | |
WO2019156060A1 (ja) | 並列ユニオン制御装置、並列ユニオン制御方法、および記憶媒体 | |
US20230129750A1 (en) | Performing a floating-point multiply-add operation in a computer implemented environment | |
US7587582B1 (en) | Method and apparatus for parallel arithmetic operations | |
US20210312325A1 (en) | Mixed-precision neural processing unit (npu) using spatial fusion with load balancing | |
GB2523805A (en) | Data processing apparatus and method for performing vector scan operation | |
US7743231B2 (en) | Fast sparse list walker | |
US5880978A (en) | Method and apparatus for creating an output vector from an input vector | |
KR102358612B1 (ko) | 연속적인 데이터 병렬처리가 가능한 병렬 처리장치 | |
US8510357B1 (en) | Logic structures and methods supporting pipelined multi-operand adders | |
JPS607531A (ja) | 論理シミユレ−シヨン装置 | |
JPH04184535A (ja) | 並列演算装置 | |
JP2024538012A (ja) | コンピュータ実装環境における浮動小数点積和演算の実行 | |
Grushin | Fast minimum and maximum selection |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210510 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20220531 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20220614 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20220914 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20221027 |
|
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: 20230207 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230307 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7241470 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |