JP2002297377A - ソート機能を有するsimd型マイクロプロセッサ - Google Patents
ソート機能を有するsimd型マイクロプロセッサInfo
- Publication number
- JP2002297377A JP2002297377A JP2001103145A JP2001103145A JP2002297377A JP 2002297377 A JP2002297377 A JP 2002297377A JP 2001103145 A JP2001103145 A JP 2001103145A JP 2001103145 A JP2001103145 A JP 2001103145A JP 2002297377 A JP2002297377 A JP 2002297377A
- Authority
- JP
- Japan
- Prior art keywords
- data
- register
- general
- specific
- instruction
- 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
- 238000012545 processing Methods 0.000 claims description 52
- 238000000034 method Methods 0.000 claims description 38
- 239000000872 buffer Substances 0.000 claims description 34
- 238000003672 processing method Methods 0.000 claims description 5
- 230000001174 ascending effect Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 18
- WQZGKKKJIJFFOK-VSOAQEOCSA-N L-altropyranose Chemical compound OC[C@@H]1OC(O)[C@H](O)[C@@H](O)[C@H]1O WQZGKKKJIJFFOK-VSOAQEOCSA-N 0.000 description 12
- 238000001914 filtration Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
Classifications
-
- 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
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/22—Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
- G06F7/24—Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general
-
- 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
- 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/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- 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
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/20—Image enhancement or restoration using local operators
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Computational Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Physics (AREA)
- Image Processing (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
Abstract
サエレメントにおいてデータのソート処理を高速に行
う。 【解決手段】 複数のプロセッサエレメントを有するS
IMD型マイクロプロセッサにおいて、各プロセッサエ
レメントの備える特定のレジスタに格納される値と、オ
ペランド指示されたソースレジスタに格納される値と
の、大小比較を行う第1のインストラクションにて、比
較の結果、大きい方のデータを該特定のレジスタに格納
し、小さい方のデータを、ソースレジスタに格納するか
若しくはソースレジスタ以外のオペランド指示されたデ
ィスティネーションレジスタに格納することを特徴とす
る。
Description
gle Instructin−streamMult
iple Data−stream;単一命令多データ
処理)型マイクロプロセッサに関する。
数のデータに対して1つの命令で同時に同一の演算処理
が実行可能である。この構造により、演算は同一である
がデータ量が非常に多い処理(例えば、画像処理)に係
る用途において、頻用される。
常の演算処理では、複数の演算ユニット(Proces
sor Element〔PE〕;プロセッサエレメン
ト)を並べ同一の演算を同時に複数のデータに対して実
行する。このことにより高速な演算処理が可能となって
いる。
は、画質補正のために様々なフィルタ処理がなされる。
通常のフィルタ処理は、画像の主走査方向、あるいは副
走査方向に隣接する画素と対象となる画素との重み付け
演算であるため、SIMD型マイクロプロセッサの同時
演算性の利点が如何なく発揮され得る。通常の重み付け
フィルタは、入力画像データのノイズ成分除去手法とし
ても、用いられることがあるが、このような重み付けフ
ィルタにおいては、輪郭部がぼやける等の欠点がある。
用な手法として、「メディアン・フィルタ」が知られて
いる。輪郭部を保持したままでノイズ成分のみを除去す
ることができるため、画像処理において頻用されるフィ
ルタ(処理)である。
画素を中心として、隣接している画素(例えば注目画素
の左、右、上、下、左上、右上、左下、右下に隣接して
いる8画素)と注目画素とを合わせた複数の画素中か
ら、「メディアン」、すなわちデータの大きい順に並べ
たときにちょうど中心の順位となるデータを求め、その
データを注目画素のデータとして置き換える、という処
理である。
は、図5(1)のように、画素データは主走査方向に各
PEのレジスタ(図ではR2レジスタ)に並べられてい
る。副走査方向に画素を参照しようとするには、いった
ん現ライン画素データを別のレジスタ(図ではR1レジ
スタ)にコピーして、SIMD型マイクロプロセッサの
外部に設置されたFIFOメモリなどのラインバッファ
に格納することによって、ラインディレイを作ってい
る。この操作を複数回繰り返すことによって副走査方向
の画素が複数ライン分参照できる(図ではR1レジスタ
をラインディレイさせてR0レジスタを作ってい
る。)。
Eにおいて、自身の画素を中心にして隣接する画素との
「メディアン」を取る(確定する)処理が必要となる。
例えば、図5(2)において、番号[5]が付されたP
E、即ちPE[5]に着目する。ここで、注目画素を、
自身(PE[5])のR1レジスタに格納されている画
素「E」とする。すると、左上、左、左下の画素のデー
タは1つ前のPE(PE[4])のR0レジスタ(図で
は「A」の画素)、R1(図では「D」の画素)、R2
(図では「G」の画素)に格納され、右上、右、右下の
画素のデータは1つ後のPE(PE[6])のR0レジ
スタ(図では「C」)、R1レジスタ(図では
「F」)、R2(図では「I」)に格納されている。な
お、PEに付される番号、及び(R0、R1、R2など
の)レジスタの種類については、後で説明する。
「D」「E」「F」「G」「H」「I」)のデータをソ
ートしてメディアン(中心値)である5番目に大きい画
素データを求めるためには、従来技術においては、画素
データのソート処理を相当に多数回行なうことが欠かせ
ない。そのような相当量のソート処理を軽減する若しく
は高速化する方策が模索されている。
めの手法はSIMD型マイクロプロセッサに関するもの
だけではない。例えば、特開平6−274617号は、
「3×3」画素でのメディアン・フィルタの処理を取り
上げている。そこでは、ソートする処理を3画素のソー
ト、6画素のマージソート、9画素のマージソートと3
つの段階に分けて処理の高速化を図る手法について、開
示されている。また、特開平5−2645号には、対象
となるデータをビットスライスに分割し、上位ビットか
ら順に“1”の立っているデータの数を計数し、所望の
順位のデータを求める方法について開示されている。い
ずれも、SISD型プロセッサあるいは画像処理専用L
SIにおいては有効であり、メディアン・フィルタ処理
を高速に行うことが可能となっている。
用いる画像処理において、上記発明を適用するのは、以
下に述べるように、困難である。
ると、6画素及び9画素でのマージソートにおいて、S
ISDなど分岐処理が可能であるプロセッサにおいては
全体での処理速度が向上する。しかし、SIMD型マイ
クロプロセッサにおいては各PE毎に分岐処理を行うこ
とができないため、全ての分岐先の演算を実行する必要
が生じかえって処理時間がかかってしまう。
対象となるデータをビットスライスに分割し、上位ビッ
トから順に“1”の立っているデータの数を計数し、所
望の順位のデータを求める方法について、開示されてい
る。このことを利用しようとすると、SIMD型マイク
ロプロセッサにおいては、注目画素の左右の画素データ
が隣接するPEのレジスタにデータが格納されているた
め、ビットスライスにまで分割されたデータを作るには
隣接するPEからデータを引用してくる必要がある。そ
うすると、結果として配線数が増大してしまう。更に、
ビットスライスに対する計数器、加算器を全ビット分ま
で各PEに保有させると、回路規模が非現実的なまでに
増大してしまう。各ビットにまで処理を分割して実行さ
せると、膨大なサイクル数がかかってしまうことにもな
る。
D型マイクロプロセッサにおけるメディアン・フィルタ
処理が開示されている。そこでは、「3×3画素」での
計算方法が示されている。まず、3画素のソート処理を
「列」方向に行い、次にソート後のデータに対して、
「行」方向に3画素のソート処理を行い、最後に対角線
方向にソートを行うというものである。
「3画素のソート処理」に関しては示されていない。こ
の「3画素のソート処理」を高速に行なえない、即ち
「3画素のソート処理」に時間がかかってしまうと、全
体処理時間も比例して増えてしまうことになる。3画素
のデータをソート処理する場合、従来のSIMD型マイ
クロプロセッサでは、以下のような順序で行なってい
る。
が、各PEのR0、R1、R2レジスタに格納されてお
り、ソート処理後のデータは、各PEのR16、R1
7、R18に降順に格納される。「MAX」命令とは、
2つのソースレジスタの値の比較を行い、大きい方のデ
ータを指定したレジスタに書き戻す命令であり、同様に
「MIN」命令とは、小さい方のデータを指定したレジ
スタに書き戻す命令である。
果をR16に格納する。 2.R0とR1とのMIN演算を行い、結果をR17に
格納する。 3.R2とR17とのMIN演算を行い、結果をR18
に格納する。 4.R2とR17とのMAX演算を行い、結果をR17
に格納する。 5.R16とR17とのMAX演算を行い、結果をR1
6に格納する。 6.R16とR17とのMIN演算を行い、結果をR1
7に格納する。
が必要となる。
り、「3×3画素」のメディアン・フィルタ処理を行な
うには、 (1)「列」方向に3画素のデータをソートする(「S
IMD」であるから、3列分、同時実行可能であ
る。)。;6サイクル (2)「行」方向に3画素のデータをソートする。;3
行で10サイクル (3)対角線方向に3画素のデータをソートする。;6
サイクル となり、全体で22サイクルが必要となる。上記(2)
においては、3画素のMAX、MINを求める際に、ソ
ート処理が不要であり2サイクルで求められる。よっ
て、処理時間が3行分のソートに必要な18サイクルよ
りは短く済む。
マイクロプロセッサの各プロセッサエレメントにおい
て、データのソート処理を高速に行ない得ることを目的
としている。
成するために為されたものである。本発明に係る請求項
1に記載のSIMD型マイクロプロセッサは、複数のプ
ロセッサエレメントを有するSIMD型マイクロプロセ
ッサであって、各プロセッサエレメントの備える特定の
レジスタに格納される値と、オペランド指示されたソー
スレジスタに格納される値との、大小比較を行う第1の
インストラクションにて、比較の結果、大きい方のデー
タを該特定のレジスタに格納し、小さい方のデータを、
ソースレジスタに格納するか若しくはソースレジスタ以
外のオペランド指示されたディスティネーションレジス
タに格納することを特徴とする、SIMD型マイクロプ
ロセッサである。
マイクロプロセッサは、複数のプロセッサエレメントを
有するSIMD型マイクロプロセッサであって、各プロ
セッサエレメントの備える特定のレジスタに格納される
値と、オペランド指示されたソースレジスタに格納され
る値との、大小比較を行う第2のインストラクションに
て、比較の結果、小さい方のデータを該特定のレジスタ
に格納し、大きい方のデータを、ソースレジスタに格納
するか若しくはソースレジスタ以外のオペランド指示さ
れたディスティネーションレジスタに格納することを特
徴とする、SIMD型マイクロプロセッサである。
マイクロプロセッサは、複数のプロセッサエレメントを
有するSIMD型マイクロプロセッサであって、各プロ
セッサエレメントの備える特定のレジスタに格納される
値と、オペランド指示されたソースレジスタに格納され
る値との、大小比較を行う第1のインストラクションに
て、比較の結果、大きい方のデータを該特定のレジスタ
に格納し、小さい方のデータを、ソースレジスタに格納
するか若しくはソースレジスタ以外のオペランド指示さ
れたディスティネーションレジスタに格納し、更に、各
プロセッサエレメントの備える特定のレジスタに格納さ
れる値と、オペランド指示されたソースレジスタに格納
される値との、大小比較を行う第2のインストラクショ
ンにて、比較の結果、小さい方のデータを該特定のレジ
スタに格納し、大きい方のデータを、ソースレジスタに
格納するか若しくはソースレジスタ以外のオペランド指
示されたディスティネーションレジスタに格納すること
を特徴とする、SIMD型マイクロプロセッサである。
方法は、請求項3に記載のSIMD型マイクロプロセッ
サを利用し、各プロセッサエレメントにて各プロセッサ
エレメントに備わるn個(nは4以上の自然数)の、第
1の汎用レジスタから第n番目の汎用レジスタを、ソー
トバッファとして使用し、上記ソートバッファにおいて
は、第1番目の汎用レジスタから第n番目の汎用レジス
タへ大きい数値から順に格納し、よって、各プロセッサ
エレメントにて、n個のデータをソート処理する方法で
ある。そのソート処理方法は、(1)1番目の比較対象
データを特定のレジスタにロードする、工程1と、
(2)2番目の比較対象データと特定のレジスタのデー
タとの、第1のインストラクションの演算を行い、第n
番目の汎用レジスタには小さい方のデータを書き戻し、
特定のレジスタには大きい方のデータを残す、工程2
と、(3)3番目の比較対象データと特定のレジスタの
データとの、第2のインストラクションの演算を行い、
第(n−2)番目の汎用レジスタには大きい方のデータ
を書き戻し、特定のレジスタには小さい方のデータを残
し、続いて、第n番目の汎用レジスタのデータと特定の
レジスタのデータとの、第2のインストラクションの演
算を行い、第(n−1)番目の汎用レジスタには大きい
方のデータを書き戻し、特定のレジスタには小さい方の
データを残す、工程3と、(4)4番目の比較対象デー
タと特定のレジスタのデータとの、第1のインストラク
ションの演算を行い、第n番目の汎用レジスタには小さ
い方のデータを書き戻し、特定のレジスタには大きい方
のデータを残し、続いて、第(n−1)番目の汎用レジ
スタのデータと特定レジスタのデータとの、第1のイン
ストラクションの演算を行い、第(n−1)番目の汎用
レジスタに小さい方のデータを書き戻し、特定のレジス
タには大きい方のデータを残し、更に続いて、第(n−
2)番目の汎用レジスタのデータと特定レジスタのデー
タとの、第1のインストラクションの演算を行い、第
(n−2)番目の汎用レジスタに小さい方のデータを書
き戻し、特定のレジスタには大きい方のデータを残す、
工程4と、(5)(2i−1)番目(iは3以上の自然
数)の比較対象データと特定のレジスタのデータとの、
第2のインストラクションの演算を行い、第[n−(2
i−2)]番目の汎用レジスタには大きい方のデータを
書き戻し、特定のレジスタには小さい方のデータを残
し、続いて、第[n−(2i−4)]番目の汎用レジス
タのデータと特定のレジスタのデータとの、第2のイン
ストラクションの演算を行い、第[n−(2i−3)]
番目のレジスタには大きい方のデータを書き戻し、特定
のレジスタには小さい方のデータを残し、この後、同様
にソートバッファにて1つずつ序数の大きい汎用レジス
タに移行しつつ、ソートバッファの汎用レジスタのデー
タと特定のレジスタのデータとの、第2のインストラク
ションの演算を行い、大きい方のデータを1つ序数が小
さい汎用レジスタに書き戻すことを繰り返し、最後に第
n番目の汎用レジスタのデータと特定のレジスタのデー
タとの、第2のインストラクションの演算を行い、第
(n−1)番目の汎用レジスタに大きい方のデータを書
き戻し、特定のレジスタには小さい方のデータを残す、
工程5と、(6)2i番目の比較対象データと特定のレ
ジスタのデータとの、第1のインストラクションの演算
を行い、第n番目の汎用レジスタには小さい方のデータ
を書き戻し、特定のレジスタには大きい方のデータを残
し、続いて、第(n−1)番目の汎用レジスタのデータ
と特定のレジスタのデータとの、第1のインストラクシ
ョンの演算を行い、第(n−1)番目の汎用レジスタに
小さい方のデータを書き戻し、特定のレジスタには大き
い方のデータを残し、この後、同様にソートバッファに
て1つずつ序数の小さい汎用レジスタに移行しつつ、ソ
ートバッファの汎用レジスタのデータと特定のレジスタ
のデータとの、第1のインストラクションの演算を行
い、小さい方のデータを同じ汎用レジスタに書き戻すこ
とを繰り返し、最後に第[n−(2i−2)]番目の汎
用レジスタのデータと特定のレジスタのデータとの、第
1のインストラクションの演算を行い、第[n−(2i
−2)]番目の汎用レジスタに小さい方のデータを書き
戻し、特定のレジスタには大きい方のデータを残す、工
程6と、を含み、工程1、工程2、工程3及び工程4を
実施し、その後、工程5及び工程6を、両工程が一回実
施される毎にiを1ずつインクリメントしながら、比較
対象データがn番目のものになるまで継続し、nが偶数
の場合は、ソートバッファの最大値の端部にてソート処
理を終えて終了し、一方、nが奇数の場合は、ソートバ
ッファの最小値の端部にてソート処理を終えて終了す
る、ソート処理方法である。
方法は、請求項3に記載のSIMD型マイクロプロセッ
サを利用し、各プロセッサエレメントにて各プロセッサ
エレメントに備わるn個(nは4以上の自然数)の、第
1の汎用レジスタから第n番目の汎用レジスタを、ソー
トバッファとして使用し、上記ソートバッファにおいて
は、第1番目の汎用レジスタから第n番目の汎用レジス
タへ大きい数値から順に格納し、よって、各プロセッサ
エレメントにて、n個のデータをソート処理する方法で
ある。そのソート処理方法は、(1)1番目の比較対象
データを特定のレジスタにロードする、工程1と、
(2)2番目の比較対象データと特定のレジスタのデー
タとの、第2のインストラクションの演算を行い、第1
番目の汎用レジスタには大きい方のデータを書き戻し、
特定のレジスタには小さい方のデータを残す、工程2
と、(3)3番目の比較対象データと特定のレジスタの
データとの、第1のインストラクションの演算を行い、
第3番目の汎用レジスタには小さい方のデータを書き戻
し、特定のレジスタには大きい方のデータを残し、続い
て第1番目の汎用レジスタのデータと特定のレジスタの
データとの、第1のインストラクションの演算を行い、
第2番目の汎用レジスタには小さい方のデータを書き戻
し、特定のレジスタには大きい方のデータを残す、工程
3と、(4)4番目の比較対象データと特定のレジスタ
のデータとの、第2のインストラクションの演算を行
い、第1番目の汎用レジスタには大きい方のデータを書
き戻し、特定のレジスタには小さい方のデータを残し、
続いて、第2番目の汎用レジスタのデータと特定のレジ
スタのデータとの、第2のインストラクションの演算を
行い、第2番目の汎用レジスタに大きい方のデータを書
き戻し、特定のレジスタには小さい方のデータを残し、
更に続いて、第3番目の汎用レジスタのデータと特定の
レジスタのデータとの、第2のインストラクションの演
算を行い、第3番目の汎用レジスタに大きい方のデータ
を書き戻し、特定のレジスタには小さい方のデータを残
す、工程4と、(5)(2i−1)番目(iは3以上の
自然数)の比較対象データと特定のレジスタのデータと
の、第1のインストラクションの演算を行い、第(2i
−1)番目のレジスタには小さい方のデータを書き戻
し、特定のレジスタには大きい方のデータを残し、続い
て、第(2i−3)番目の汎用レジスタのデータと特定
のレジスタのデータとの、第1のインストラクションの
演算を行い、第(2i−2)番目のレジスタには小さい
方のデータを書き戻し、特定のレジスタには大きい方の
データを残し、この後、同様にソートバッファにて1ず
つ序数の小さい汎用レジスタに移行しつつ、ソートバッ
ファの汎用レジスタのデータと特定のレジスタのデータ
との、第1のインストラクションの演算を行い、小さい
方のデータを序数が1つ小さい汎用レジスタに書き戻す
ことを繰り返し、最後に第1番目の汎用レジスタのデー
タと特定のレジスタのデータとの第1のインストラクシ
ョンの演算を行い、第2番目の汎用レジスタに小さい方
のデータを書き戻し、特定のレジスタには大きい方のデ
ータを残す、工程5と、(6)2i番目の比較対象デー
タと特定のレジスタのデータとの、第2のインストラク
ションの演算を行い、第1番目の汎用レジスタには大き
い方のデータを書き戻し、特定のレジスタには小さい方
のデータを残し、続いて、第2番目の汎用レジスタのデ
ータと特定のレジスタのデータとの、第2のインストラ
クションの演算を行い、第2番目の汎用レジスタに大き
い方のデータを書き戻し、特定のレジスタには小さい方
のデータを残し、この後、同様にソートバッファにて1
つずつ序数の大きい汎用レジスタに移行しつつ、ソート
バッファの汎用レジスタのデータと特定のレジスタのデ
ータとの、第2のインストラクションの演算を行い、大
きい方のデータを同じ汎用レジスタに書き戻すことを繰
り返し、最後に第(2i−1)番目の汎用レジスタのデ
ータと特定のレジスタのデータとの、第2のインストラ
クションの演算を行い、第(2i−1)番目の汎用レジ
スタに大きい方のデータを書き戻し、特定のレジスタに
は小さい方のデータを残す、工程6と、を含み、工程
1、工程2、工程3及び工程4を実施し、その後、工程
5及び工程6を、両工程が一回実施される毎にiを1ず
つインクリメントしながら、比較対象データがn番目の
ものになるまで継続し、nが偶数の場合は、ソートバッ
ファの最小値の端部にてソート処理を終えて終了し、一
方、nが奇数の場合は、ソートバッファの最大値の端部
にてソート処理を終えて終了する、ソート処理方法であ
る。
係る好適な実施形態を説明する。
プロセッサ2の概略の構成を示すブロック図である。該
SIMD型マイクロプロセッサ2は、概略、グローバル
プロセッサ4、レジスタファイル6、及び演算アレイ8
から構成される。
SD型のプロセッサであり、プログラムRAM10とデ
ータRAM12を内蔵し(図2参照)、プログラムを解
読し各種制御信号を生成する。この制御信号は内蔵する
各種ブロック以外に、レジスタファイル6、演算アレイ
8にも供給される。また、GP(グローバルプロセッ
サ)命令実行時は内蔵する汎用レジスタ、ALU(算術
論理演算器)等を使用して各種演算処理、プログラム制
御処理をおこなう。
を保持している。PE(プロセッサエレメント)3は、
公知のように、SIMD(Single Instru
ction−Stream,Multiple Dat
a−Stream)型プロセッサにおいて個別の演算を
実行する構成単位である。図2のレジスタファイル6及
び演算アレイ8が示すように、図2のSIMD型マイク
ロプロセッサ2では256個のPE3を含んでいる。上
記のPE命令はSIMD型の命令であり、レジスタファ
イル6に保持されている複数のデータに対し、同時に同
じ処理を行なう。このレジスタファイル6からのデータ
の読み出し/書き込みの制御はグローバルプロセッサ4
からの制御によって行なわれる。読み出されたデータは
演算アレイ8に送られ、演算アレイ8での演算処理後に
レジスタファイル6に書き込まれる。
外部からのアクセスが可能であり、グローバルプロセッ
サ4の制御とは別に、外部から特定のレジスタに対し読
み出し/書き込みが行なわれる。
グローバルプロセッサ4から行なわれる。
プロセッサ2の、更に詳細な構成を示すブロック図であ
る。
サ2のプログラム格納用のプログラムRAM10と、演
算データ格納用のデータRAM12が内蔵されている。
さらに、プログラムのアドレスを保持するプログラムカ
ウンタ(PC)14、演算処理のデータ格納のための汎
用レジスタであるG0、G1、G2及びG3レジスタ
(16、18、20、22)、レジスタ退避・復帰時に
退避先データRAMのアドレスを保持しているスタック
ポインタ(SP)24、サブルーチンコール時にコール
元のアドレスを保持するリンクレジスタ(LS)26、
同じくIRQ(Interrupt ReQuest;
割込み要求)時とNMI(Non−Maskable
Interrupt request;禁止不能割込み
要求)時の分岐元アドレスを保持するLIレジスタ28
及びLNレジスタ30、プロセッサの状態を保持してい
るプロセッサステータスレジスタ(P)32が内蔵され
ている。
命令デコーダ、ALU、SCU(シーケンシャルユニッ
ト)、メモリ制御回路、割り込み制御回路、外部I/O
制御回路及びGP演算制御回路とを使用して、GP命令
の実行が行なわれる。
(図示せず。)、レジスタファイル制御回路(図示せ
ず。)、PE演算制御回路(図示せず。)を使用して、
レジスタファイル6の制御と演算アレイ8の制御を行な
う。さらに、データRAM12から複数のPEレジスタ
ファイル6にデータを転送できるように、設定されてい
る。
E単位に8ビットのレジスタ34が32本内蔵されてお
り、256個のPE分の(32本の)組が、アレイ構成
になっている。レジスタ34はPE毎に、R0、R1、
R2、...R31と呼ばれる。それぞれのレジスタ3
4は、演算アレイ8に対して1つの読み出しポートと1
つの書き込みポートを備えており、8ビットのリード/
ライト兼用のバスで演算アレイ8からアクセスされる。
32本のレジスタの内、24本(R0〜R23)はプロ
セッサ外部からアクセス可能であり、外部からはクロッ
ク(CLK)とアドレス(Address)、リード/
ライト制御(RWB)を入力することで、任意のレジス
タ34に対し、読み書きできる。残りの8本(R24〜
R31)のレジスタ34は、PE演算の一時的な演算デ
ータ保存用として使用される。
16ビットAレジスタ38、1つ又は複数のFレジスタ
40を内蔵している。PE命令による演算は、レジスタ
ファイル6から読み出されたデータ若しくはグローバル
プロセッサ4から与えられたデータをALU36の片側
の入力とし、Aレジスタ38の内容をもう片側の入力と
して、通常、行なわれるものである。その演算結果は、
Aレジスタ38に格納される。したがって、R0〜R3
1レジスタ34若しくはグローバルプロセッサ4から与
えられたデータと、Aレジスタ38に格納されるデータ
との、演算が通常行なわれることになる。
続に、7to1(7対1)のマルチプレクサ42が置か
れている。図2に示すように、あるマルチプレクサ42
から見て、左方向の3つのPE3に含まれるR0〜R3
1レジスタ34のデータと、右方向の3つのPE3に含
まれるR0〜R31レジスタ34のデータと、自らが属
するPE3に含まれるR0〜R31レジスタ34のデー
タを、演算対象として選択し得るように設定されてい
る。また、レジスタファイル6の8ビットのデータは、
シフト・拡張回路44により任意のビット分だけ、左シ
フトしてALU36に入力する。
ず。)により、PE3別に演算実行の無効/有効の制御
をしており、特定のPE3だけを演算対象として選択で
きるようになっている。
号が付されている。図2のSIMD型マイクロプロセッ
サ2では、PEの個数が256個であるので、8ビット
のビット列(即ち、00000000b〜111111
11bの256通り。ここで、上記のような末尾の
“b”は2進法表記であることを表す。)が、各PE3
にPE番号データとして与えられる。PE番号は、各P
E3に対し、PEの位置とは無関係に与えられても構わ
ないが、本明細書においては、(左)端から順に付され
ているものとする。また、PE番号が「n」であるPE
を、 ・PE[n] と表すことにする。従って、図2のSIMD型マイクロ
プロセッサ2は、左方から、PE[0]、PE[2]、
PE[3]、・・・PE[254]、PE[255]に
より、構成される。
にて8ビットの入力端子を備えさせその端子をVCC若
しくはGNDに結ぶ組み合わせを変えることにより、作
成している。
1の実施の形態に係るSIMD型マイクロプロセッサ2
のブロック図、特に、1つのPE3部分を拡大したブロ
ック図を示す。
[2]50−2)、 ・演算結果を格納するAレジスタ38、 ・テンポラリレジスタとして利用される2つのFレジス
タ(F1レジスタ40−1、F2レジスタ40−2)、 ・ALU36より出力されるキャリーをラッチするCF
(キャリーフラグ)54、を含んでいる。Aレジスタ3
8とALU36との間には、マルチプレクサ52が挿入
されて設置されており、Aレジスタ38に格納する値と
して、ALU36での演算結果、若しくは2つのALU
ラッチ(ALT[1]50−1、ALT[2]50−
2)の内容の、都合3つから1つのデータが選択される
ことが可能となっている。このマルチプレクサ52の選
択を制御する選択信号として、 ・グローバルプロセッサ4からの制御信号[1]と、 ・ALU36から出力されたキャリーとが入力されてい
る。ここで、ALU36においては、通常の演算命令を
行う場合には、ALU36の演算結果をAレジスタ38
に入力するようにし、(後で説明する)「MAXS」命
令若しくは「MINS」命令を実行する場合には、キャ
リーによってALT[1]とALT[2]のどちらかが
選択されてAレジスタ38に入力するように、上記選択
信号により制御されるのが望ましい。
0−2は、ALT[1]もしくはALT[2]からのデ
ータを転送することができるように構成されている。ど
ちらのデータを入力して保持するかは図示していない
が、グローバルプロセッサ4よりの制御線によって決定
される。Aレジスタ38及び2つのFレジスタ(F1レ
ジスタ40−1、F2レジスタ40−2)は、データバ
ス55にデータを出力するための経路を有している。こ
こで、Aレジスタ38の出力制御は、グローバルプロセ
ッサ4よりの制御信号2によって、2つのFレジスタ
(F1レジスタ40−1、F2レジスタ40−2)の出
力制御は、グローバルプロセッサ4よりの制御信号3、
制御信号4、及びCF54の値によって、制御される。
マイクロプロセッサ2の動作を説明する。
最初、Aレジスタ38の値が、ALT[2]50−2に
入力され、オペランド指示されたソースレジスタの値
が、ALT[1]50−1に入力され、ALU36にて
比較(減算演算)される。比較結果は、「キャリー」と
なってALU36より出力される。演算後、Aレジスタ
38には「キャリー」の値に応じて、ALT[1]50
−1及びALU[2]50−2のうち大きい(即ち、M
AXS命令)値が入力される。
0−1の値が入力され、F2レジスタ40−2にはAL
T[2]50−2の値が入力されるように、グローバル
プロセッサ4より制御される。
転送に関しては、キャリーをラッチしたCF54の値に
応じてF1レジスタ40−1とF2レジスタ40−2の
うちで、どちらがデータバス55にデータを出力するか
が決定される。そのため、小さい(MAXS命令時)値
を転送することが可能となる。
ティネーションレジスタとは別々にオペランド指示され
ていることが想定されている。ソースレジスタとディス
ティネーションとが同一のオペランド(ソースオペラン
ドのみ)で指定されてもよい。この場合はオペランド数
が少なくてすむため命令マッピング上有利である。
す。MINS命令は、ALU36における比較(減算演
算)の順序を、MAXS命令と逆の順序にすることで実
現できる。若しくは、Aレジスタ38の入力を選択する
マルチプレクサ52において、「キャリー」を反転して
入力するようにし、F1レジスタ40−1にALT
[2]50−2の値を入力し、F2レジスタ40−1に
はALT[1]50−1の値を入力するように、グロー
バルプロセッサ4より制御することでも実現できる。か
かる構成によれば、上記MAXS命令実行時と逆に、小
さい方のデータがAレジスタ38に格納され、大きい方
のデータがディスティネーションレジスタに格納され
る。
タが符号無しデータの場合は、上記のように比較結果を
キャリー出力によって判断することが可能である。しか
し、2つの比較対象データが符号付きデータの場合に
は、比較結果は、ネガティブビット(ALU36の減算
結果の最上位ビット)と、オーバフロービットとの、排
他的論理和によって判断される必要がある。
SIMD型マイクロプロセッサ2のブロック図、特に、
1つのPE3部分を拡大したブロック図を示す。
タ、符号付きデータの何れにも対応し得る。ALU36
より出力される各フラグ(C:キャリー、V:オーバフ
ロー、N:ネガティブ)は、Aレジスタ38への入力を
選択するマルチプレクサ52及び、フラグレジスタブロ
ック(PSR)68へと入力されている。マルチプレク
サ52は、比較対象データが符号なしの場合には、キャ
リーによってAレジスタ38に入力するデータを選択
し、符号ありの場合はオーバフロービットとネガティブ
ビットとの排他的論理和によってAレジスタ38に入力
するデータを選択するように構成される。フラグレジス
タブロック(PSR)68では、各フラグのラッチを行
っている。内蔵しているマルチプレクサ68によって、
比較対象データが符号無しデータの場合はCF(キャリ
ーフラグ)を、符号ありの場合はNF(ネガティブフラ
グ)とVF(オーバフローフラグ)との排他的論理和
を、F1レジスタ40−1、F2レジスタ40−2の出
力イネーブル制御信号として出力する。
ず、上記の図3又は図4にて示されるSIMD型マイク
ロプロセッサ2を利用すれば、すでにソート済みのデー
タに対して、引き続き新たなデータが付加更新されてき
た場合に、ソート処理を効率よく行うことができる。
あり、R0、R1、R2、R3、R4の各レジスタにそ
れぞれ格納され(但し、R0≧R1≧R2≧R3≧R4
となっている)、更に、1個の未ソートデータが(付
加)更新されてきた場合の、ソート処理について記述す
る。
ロードする。 2.Aレジスタ38とR4とのデータの比較を行い、大
きい方のデータをAレジスタ38に残す。 3.Aレジスタ38とR3とのデータの比較を行い、大
きい方のデータをAレジスタ38に残し、小さい方のデ
ータをR4に格納する。 4.Aレジスタ38とR2とのデータの比較を行い、大
きい方のデータをAレジスタに残し、小さい方のデータ
をR3レジスタに格納する。 5.Aレジスタ38とR1とのデータの比較を行い、大
きい方のデータをAレジスタに残し、小さい方のデータ
をR2レジスタに格納する。 6.Aレジスタ38とR0とのデータの比較を行い、大
きい方のデータをAレジスタに残し、小さい方のデータ
をR1レジスタに格納する。 7.Aレジスタ38の値をR0レジスタに格納する。
3、R4)の上位側(即ち、値の大きい側)に伝達すべ
きデータが、Aレジスタ38に残り続けるため、上記の
ように連続して処理を続けることが可能となっている。
以上の処理は、ソートバッファの下位順から上位順側に
向かって処理を行っているが、逆に上位側から下位側に
向かって行っても同様であることは自明である。
下では、本発明の第1の実施の形態若しくは第2の実施
の形態に係るSIMD型マイクロプロセッサ2を利用し
て、3個のデータをソートする処理について説明する。
R1、R2レジスタに格納されており、ソート後のデー
タが各PE3のR16、R17、R18レジスタに格納
されるものとする。但し、R16≧R17≧R18とな
っている。
ロードする。 2.Aレジスタ38とR1レジスタの値を比較し、大き
い方のデータをAレジスタ38に残し、小さい方のデー
タをR18レジスタに格納する。 3.Aレジスタ38とR2レジスタの値を比較し、小さ
い方のデータをAレジスタ38に残し、大きい方のデー
タをR16レジスタに格納する。 4.Aレジスタ38とR18レジスタの値を比較し、小
さい方のデータをAレジスタ38に残し、大きい方のデ
ータをR17レジスタに格納する。 5.Aレジスタ38のデータをR18レジスタに格納す
る。
る。
ロードする。 2.Aレジスタ38とR1レジスタの値を比較し、小さ
い方のデータをAレジスタ38に残し、大きい方のデー
タをR16レジスタに格納する。 3.Aレジスタ38とR2レジスタの値を比較し、大き
い方のデータをAレジスタ38に残し、小さい方のデー
タをR18レジスタに格納する。 4.Aレジスタ38とR16のデータを比較し、大きい
方のデータをAレジスタに残し、小さい方のデータをR
17に格納する。 5.Aレジスタ38のデータをR16に格納する。
は、6サイクル必要だったソート処理が、上記のように
5サイクルで行えることがわかる。上記の処理におい
て、「1.Aレジスタ38にR0レジスタの値をロード
する。」という処理は、画像処理においては、必ず、ソ
ートを行う以前に実施されているはずである。よって、
(最後に)Aレジスタ38に格納されている画素データ
を最初のソート対象データとすることによって更に1サ
イクルを削減できることとなる。
て≫以下にて、本発明を用いて、「3×3」の画素領域
でのメディアン・フィルタの処理について、説明する。
目のデータであるから、ソートバッファとして5個のバ
ッファが必要であることがわかる。5個のバッファとし
て、ここでは、 ・R16、R17、R18、R19、R20の各レジス
タを使用することにする。
の行の画素データが格納されており、R1レジスタに中
心の画素データが格納されており、R2レジスタに一番
下の画素データが格納されているとする。SIMD型マ
イクロプロセッサ2においては、PE3は主走査方向に
展開される。また、副走査方向(下向き)の一番下の画
素データ(即ち、R2レジスタのデータ)が現ラインデ
ータとされ、それよりも上の行の画素データに関して
は、FIFOメモリ等を用いるラインバッファにライン
遅延させたデータを持たせることになる。ここではR0
レジスタ、R1レジスタがライン遅延されているデータ
となる(図5)。
38にロードする(現ラインデータであるから既に実施
されていることが多い。)。 2.Aレジスタ38の値と、1つ左のPEのR0レジス
タの値とを比較し、大きい方のデータをAレジスタ38
に残し、小さい方のデータをR20レジスタに格納す
る。 3.Aレジスタ38の値と、同一PE内のR0レジスタ
の値とを比較し、小さい方のデータをAレジスタ38に
残し、大きい方のデータをR18レジスタに格納する。 4.Aレジスタ38の値と、R20レジスタの値とを比
較し、小さい方のデータをAレジスタ38に残し、大き
い方のデータをR19レジスタに格納する。 5.Aレジスタ38の値と、1つ右のPEのR0レジス
タの値とを比較し、大きい方のデータをAレジスタ38
に残し、小さい方のデータをR20レジスタに格納す
る。 6.Aレジスタ38の値と、R19レジスタの値を比較
し、大きい方のデータをAレジスタ38に残し、小さい
方のデータをR19レジスタに格納する。 7.Aレジスタ38の値と、R18レジスタの値を比較
し、大きい方のデータをAレジスタ38に残し、小さい
方のデータをR18レジスタに格納する。 8.Aレジスタ38の値と、1つ左のPEのR1レジス
タの値とを比較し、小さい方のデータをAレジスタ38
に残し、大きい方のデータをR16レジスタに格納す
る。 9.Aレジスタ38の値と、R18レジスタの値を比較
し、小さい方のデータをAレジスタ38に残し、大きい
方のデータをR17レジスタに格納する。 10.Aレジスタ38の値と、R19レジスタの値を比
較し、小さい方のデータをAレジスタ38に残し、大き
い方のデータをR18レジスタに格納する。 11.Aレジスタ38の値と、R20レジスタの値を比
較し、小さい方のデータをAレジスタ38に残し、大き
い方のデータをR19レジスタに格納する。 12.Aレジスタ38の値と、同一のPEのR1レジス
タの値とを比較し、大きい方のデータをAレジスタ38
に残す。 13.Aレジスタ38の値と、R19レジスタの値を比
較し、大きい方のデータをAレジスタレジスタに残し、
小さい方のデータをR20レジスタに格納する。 14.Aレジスタ38の値と、R18レジスタの値を比
較し、大きい方のデータをAレジスタ38に残し、小さ
い方のデータをR19レジスタに格納する。 15.Aレジスタ38の値と、R17レジスタの値を比
較し、大きい方のデータをAレジスタ38に残し、小さ
い方のデータをR18レジスタに格納する。 16.Aレジスタ38の値と、R16レジスタの値を比
較し、大きい方のデータをAレジスタ38に残し、小さ
い方のデータをR17レジスタに格納する。 17.Aレジスタ38の値と、1つ右のPEのR1レジ
スタの値とを比較し、小さい方のデータをAレジスタ3
8に残し、大きい方のデータをR16レジスタに格納す
る。 18.Aレジスタ38の値と、R17レジスタの値を比
較し、小さい方のデータをAレジスタ38に残し、大き
い方のデータをR17レジスタに格納する。 19.Aレジスタ38の値と、R18レジスタの値を比
較し、小さい方のデータをAレジスタ38に残し、大き
い方のデータをR18レジスタに格納する。 20.Aレジスタ38の値と、R19レジスタの値を比
較し、小さい方のデータをAレジスタ38に残し、大き
い方のデータをR19レジスタに格納する。 21.Aレジスタ38の値と、R20レジスタの値を比
較し、大きい方のデータをAレジスタ38に残す。 22.Aレジスタ38の値と、1つ左のPEのR2レジ
スタの値とを比較し、大きい方のデータをAレジスタ3
8に残す。 23.Aレジスタ38の値と、R19レジスタの値を比
較し、大きい方のデータをAレジスタ38に残し、小さ
い方のデータをR20レジスタに格納する。 24.Aレジスタ38の値と、R18レジスタの値を比
較し、大きい方のデータをAレジスタ38に残し、小さ
い方のデータをR19レジスタに格納する。ここで、残
り1画素を除いて「4位」が確定するので、これ以上ソ
ートの必要はない。 25.Aレジスタ38に1つ右のPEのR2レジスタの
データをロードする。 26.Aレジスタ38の値と、R20レジスタの値を比
較して、大きい方のデータをAレジスタ38に残す。 27.Aレジスタ38の値と、R19レジスタの値を比
較して、小さい方のデータを所望のレジスタに格納す
る。
のソート処理の概念図及びフロー図を順に示す。図にお
いて、「空」は、ソートバッファが空であることを、灰
色に塗られた部分はソース指示(3×3の画素群)、デ
ィスティネーション指定(R16〜R20のソートバッ
ファ)されていることを示す。また斜線掛けされている
部分はすでにデータが比較し終わっている(3×3の画
素群)、すでにデータが格納されている(R16〜R2
0のソートバッファ)ことを示している。
7サイクルであり、「1.」の処理を省いても26サイ
クル必要である。よって、特開平11−149554号
に開示される発明よりも、若干処理サイクルは多く必要
となる。但し、特開平11−149554号では、ソー
ト対象となるデータ数が自然数の積で表わされることを
利用している都合上、適用できるデータ数に制限がある
(3×3など)のに対して、本発明では、ソート対象の
データ数に依存せずにソート処理を行えることが利点で
ある。
利用することにより以下のような効果を得ることができ
る。
2の実施の形態のSIMD型マイクロプロセッサ2を利
用すると、2つのデータを比較して、大きい(あるいは
小さい)データを特定のレジスタに残し、且つ、小さい
(あるいは大きい)データをオペランド指示したレジス
タに格納することができる。よって、ソート用のハード
ウェアをSIMD型マイクロプロセッサに実装すること
無しに、未ソートデータをソート済みデータとマージす
る際の処理時間が短縮できる。
処理時間を短縮できるような、処理フローを実現でき
る。
の概略の構成を示すブロック図である。
の更に詳細な構成を示すブロック図である。
マイクロプロセッサのブロック図、特に、1つのプロセ
ッサエレメント部分を拡大したブロック図を示す。
マイクロプロセッサのブロック図、特に、1つのプロセ
ッサエレメント部分を拡大したブロック図を示す。
のメディアン・フィルタのソート処理の、概念図及びフ
ロー図(1)を示す。
のメディアン・フィルタのソート処理の、概念図及びフ
ロー図(2)を示す。
のメディアン・フィルタのソート処理の、概念図及びフ
ロー図(3)を示す。
のメディアン・フィルタのソート処理の、概念図及びフ
ロー図(4)を示す。
セッサエレメント、4グローバルプロセッサ、6・・・
レジスタファイル、8・・・演算アレイ、36・・・1
6ビットALU、38・・・Aレジスタ、40−1・・
・F1レジスタ、40−2・・・F2レジスタ、42・
・・マルチプレクサ、48・・・マルチプレクサ、50
−1・・・ALUラッチ[1]、50−2・・・ALU
ラッチ[2]、52・・・マルチプレクサ、54・・・
キャリーフラグ、68・・・フラグレジスタブロック
(PSR)。
Claims (5)
- 【請求項1】 複数のプロセッサエレメントを有するS
IMD型マイクロプロセッサにおいて、 各プロセッサエレメントの備える特定のレジスタに格納
される値と、オペランド指示されたソースレジスタに格
納される値との、大小比較を行う第1のインストラクシ
ョンにて、 比較の結果、大きい方のデータを該特定のレジスタに格
納し、小さい方のデータを、ソースレジスタに格納する
か若しくはソースレジスタ以外のオペランド指示された
ディスティネーションレジスタに格納することを特徴と
する、SIMD型マイクロプロセッサ。 - 【請求項2】 複数のプロセッサエレメントを有するS
IMD型マイクロプロセッサにおいて、 各プロセッサエレメントの備える特定のレジスタに格納
される値と、オペランド指示されたソースレジスタに格
納される値との、大小比較を行う第2のインストラクシ
ョンにて、 比較の結果、小さい方のデータを該特定のレジスタに格
納し、大きい方のデータを、ソースレジスタに格納する
か若しくはソースレジスタ以外のオペランド指示された
ディスティネーションレジスタに格納することを特徴と
する、SIMD型マイクロプロセッサ。 - 【請求項3】 複数のプロセッサエレメントを有するS
IMD型マイクロプロセッサにおいて、 各プロセッサエレメントの備える特定のレジスタに格納
される値と、オペランド指示されたソースレジスタに格
納される値との、大小比較を行う第1のインストラクシ
ョンにて、 比較の結果、大きい方のデータを該特定のレジスタに格
納し、 小さい方のデータを、ソースレジスタに格納するか若し
くはソースレジスタ以外のオペランド指示されたディス
ティネーションレジスタに格納し、 更に、 各プロセッサエレメントの備える特定のレジスタに格納
される値と、オペランド指示されたソースレジスタに格
納される値との、大小比較を行う第2のインストラクシ
ョンにて、 比較の結果、小さい方のデータを該特定のレジスタに格
納し、大きい方のデータを、ソースレジスタに格納する
か若しくはソースレジスタ以外のオペランド指示された
ディスティネーションレジスタに格納することを特徴と
する、SIMD型マイクロプロセッサ。 - 【請求項4】 請求項3に記載のSIMD型マイクロプ
ロセッサを利用し、各プロセッサエレメントにて各プロ
セッサエレメントに備わるn個(nは4以上の自然数)
の、第1の汎用レジスタから第n番目の汎用レジスタ
を、ソートバッファとして使用し、 上記ソートバッファにおいては、第1番目の汎用レジス
タから第n番目の汎用レジスタへ大きい数値から順に格
納し、よって、各プロセッサエレメントにて、n個のデ
ータをソート処理する方法において、(1)1番目の比
較対象データを特定のレジスタにロードする、工程1
と、(2)2番目の比較対象データと特定のレジスタの
データとの、第1のインストラクションの演算を行い、
第n番目の汎用レジスタには小さい方のデータを書き戻
し、特定のレジスタには大きい方のデータを残す、工程
2と、(3)3番目の比較対象データと特定のレジスタ
のデータとの、第2のインストラクションの演算を行
い、第(n−2)番目の汎用レジスタには大きい方のデ
ータを書き戻し、特定のレジスタには小さい方のデータ
を残し、 続いて、第n番目の汎用レジスタのデータと特定のレジ
スタのデータとの、第2のインストラクションの演算を
行い、第(n−1)番目の汎用レジスタには大きい方の
データを書き戻し、特定のレジスタには小さい方のデー
タを残す、工程3と、(4)4番目の比較対象データと
特定のレジスタのデータとの、第1のインストラクショ
ンの演算を行い、第n番目の汎用レジスタには小さい方
のデータを書き戻し、特定のレジスタには大きい方のデ
ータを残し、続いて、第(n−1)番目の汎用レジスタ
のデータと特定レジスタのデータとの、第1のインスト
ラクションの演算を行い、第(n−1)番目の汎用レジ
スタに小さい方のデータを書き戻し、特定のレジスタに
は大きい方のデータを残し、更に続いて、第(n−2)
番目の汎用レジスタのデータと特定レジスタのデータと
の、第1のインストラクションの演算を行い、第(n−
2)番目の汎用レジスタに小さい方のデータを書き戻
し、特定のレジスタには大きい方のデータを残す、工程
4と、(5)(2i−1)番目(iは3以上の自然数)
の比較対象データと特定のレジスタのデータとの、第2
のインストラクションの演算を行い、第[n−(2i−
2)]番目の汎用レジスタには大きい方のデータを書き
戻し、特定のレジスタには小さい方のデータを残し、 続いて、第[n−(2i−4)]番目の汎用レジスタの
データと特定のレジスタのデータとの、第2のインスト
ラクションの演算を行い、第[n−(2i−3)]番目
のレジスタには大きい方のデータを書き戻し、特定のレ
ジスタには小さい方のデータを残し、この後、同様にソ
ートバッファにて1つずつ序数の大きい汎用レジスタに
移行しつつ、ソートバッファの汎用レジスタのデータと
特定のレジスタのデータとの、第2のインストラクショ
ンの演算を行い、大きい方のデータを1つ序数が小さい
汎用レジスタに書き戻すことを繰り返し、最後に第n番
目の汎用レジスタのデータと特定のレジスタのデータと
の、第2のインストラクションの演算を行い、第(n−
1)番目の汎用レジスタに大きい方のデータを書き戻
し、特定のレジスタには小さい方のデータを残す、工程
5と、(6)2i番目の比較対象データと特定のレジス
タのデータとの、第1のインストラクションの演算を行
い、第n番目の汎用レジスタには小さい方のデータを書
き戻し、特定のレジスタには大きい方のデータを残し、 続いて、第(n−1)番目の汎用レジスタのデータと特
定のレジスタのデータとの、第1のインストラクション
の演算を行い、第(n−1)番目の汎用レジスタに小さ
い方のデータを書き戻し、特定のレジスタには大きい方
のデータを残し、この後、同様にソートバッファにて1
つずつ序数の小さい汎用レジスタに移行しつつ、ソート
バッファの汎用レジスタのデータと特定のレジスタのデ
ータとの、第1のインストラクションの演算を行い、小
さい方のデータを同じ汎用レジスタに書き戻すことを繰
り返し、最後に第[n−(2i−2)]番目の汎用レジ
スタのデータと特定のレジスタのデータとの、第1のイ
ンストラクションの演算を行い、第[n−(2i−
2)]番目の汎用レジスタに小さい方のデータを書き戻
し、特定のレジスタには大きい方のデータを残す、工程
6と、を含み、 工程1、工程2、工程3及び工程4を実施し、その後、
工程5及び工程6を、両工程が一回実施される毎にiを
1ずつインクリメントしながら、比較対象データがn番
目のものになるまで継続し、nが偶数の場合は、ソート
バッファの最大値の端部にてソート処理を終えて終了
し、一方、nが奇数の場合は、ソートバッファの最小値
の端部にてソート処理を終えて終了する、ソート処理方
法。 - 【請求項5】 請求項3に記載のSIMD型マイクロプ
ロセッサを利用し、各プロセッサエレメントにて各プロ
セッサエレメントに備わるn個(nは4以上の自然数)
の、第1の汎用レジスタから第n番目の汎用レジスタ
を、ソートバッファとして使用し、 上記ソートバッファにおいては、第1番目の汎用レジス
タから第n番目の汎用レジスタへ大きい数値から順に格
納し、よって、各プロセッサエレメントにて、n個のデ
ータをソート処理する方法において、(1)1番目の比
較対象データを特定のレジスタにロードする、工程1
と、(2)2番目の比較対象データと特定のレジスタの
データとの、第2のインストラクションの演算を行い、
第1番目の汎用レジスタには大きい方のデータを書き戻
し、特定のレジスタには小さい方のデータを残す、工程
2と、(3)3番目の比較対象データと特定のレジスタ
のデータとの、第1のインストラクションの演算を行
い、第3番目の汎用レジスタには小さい方のデータを書
き戻し、特定のレジスタには大きい方のデータを残し、
続いて第1番目の汎用レジスタのデータと特定のレジス
タのデータとの、第1のインストラクションの演算を行
い、第2番目の汎用レジスタには小さい方のデータを書
き戻し、特定のレジスタには大きい方のデータを残す、
工程3と、(4)4番目の比較対象データと特定のレジ
スタのデータとの、第2のインストラクションの演算を
行い、第1番目の汎用レジスタには大きい方のデータを
書き戻し、特定のレジスタには小さい方のデータを残
し、 続いて、第2番目の汎用レジスタのデータと特定のレジ
スタのデータとの、第2のインストラクションの演算を
行い、第2番目の汎用レジスタに大きい方のデータを書
き戻し、特定のレジスタには小さい方のデータを残し、 更に続いて、第3番目の汎用レジスタのデータと特定の
レジスタのデータとの、第2のインストラクションの演
算を行い、第3番目の汎用レジスタに大きい方のデータ
を書き戻し、特定のレジスタには小さい方のデータを残
す、工程4と、(5)(2i−1)番目(iは3以上の
自然数)の比較対象データと特定のレジスタのデータと
の、第1のインストラクションの演算を行い、第(2i
−1)番目のレジスタには小さい方のデータを書き戻
し、特定のレジスタには大きい方のデータを残し、 続いて、第(2i−3)番目の汎用レジスタのデータと
特定のレジスタのデータとの、第1のインストラクショ
ンの演算を行い、第(2i−2)番目のレジスタには小
さい方のデータを書き戻し、特定のレジスタには大きい
方のデータを残し、この後、同様にソートバッファにて
1ずつ序数の小さい汎用レジスタに移行しつつ、ソート
バッファの汎用レジスタのデータと特定のレジスタのデ
ータとの、第1のインストラクションの演算を行い、小
さい方のデータを序数が1つ小さい汎用レジスタに書き
戻すことを繰り返し、最後に第1番目の汎用レジスタの
データと特定のレジスタのデータとの第1のインストラ
クションの演算を行い、第2番目の汎用レジスタに小さ
い方のデータを書き戻し、特定のレジスタには大きい方
のデータを残す、工程5と、(6)2i番目の比較対象
データと特定のレジスタのデータとの、第2のインスト
ラクションの演算を行い、第1番目の汎用レジスタには
大きい方のデータを書き戻し、特定のレジスタには小さ
い方のデータを残し、続いて、第2番目の汎用レジスタ
のデータと特定のレジスタのデータとの、第2のインス
トラクションの演算を行い、第2番目の汎用レジスタに
大きい方のデータを書き戻し、特定のレジスタには小さ
い方のデータを残し、この後、同様にソートバッファに
て1つずつ序数の大きい汎用レジスタに移行しつつ、ソ
ートバッファの汎用レジスタのデータと特定のレジスタ
のデータとの、第2のインストラクションの演算を行
い、大きい方のデータを同じ汎用レジスタに書き戻すこ
とを繰り返し、最後に第(2i−1)番目の汎用レジス
タのデータと特定のレジスタのデータとの、第2のイン
ストラクションの演算を行い、第(2i−1)番目の汎
用レジスタに大きい方のデータを書き戻し、特定のレジ
スタには小さい方のデータを残す、工程6と、を含み、 工程1、工程2、工程3及び工程4を実施し、その後、
工程5及び工程6を、両工程が一回実施される毎にiを
1ずつインクリメントしながら、比較対象データがn番
目のものになるまで継続し、nが偶数の場合は、ソート
バッファの最小値の端部にてソート処理を終えて終了
し、一方、nが奇数の場合は、ソートバッファの最大値
の端部にてソート処理を終えて終了する、ソート処理方
法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001103145A JP3955741B2 (ja) | 2001-04-02 | 2001-04-02 | ソート機能を有するsimd型マイクロプロセッサ |
US10/113,766 US7500089B2 (en) | 2001-04-02 | 2002-04-01 | SIMD processor with exchange sort instruction operating or plural data elements simultaneously |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001103145A JP3955741B2 (ja) | 2001-04-02 | 2001-04-02 | ソート機能を有するsimd型マイクロプロセッサ |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006294342A Division JP2007102799A (ja) | 2006-10-30 | 2006-10-30 | ソート機能を有するsimd型マイクロプロセッサ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002297377A true JP2002297377A (ja) | 2002-10-11 |
JP3955741B2 JP3955741B2 (ja) | 2007-08-08 |
Family
ID=18956252
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001103145A Expired - Fee Related JP3955741B2 (ja) | 2001-04-02 | 2001-04-02 | ソート機能を有するsimd型マイクロプロセッサ |
Country Status (2)
Country | Link |
---|---|
US (1) | US7500089B2 (ja) |
JP (1) | JP3955741B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010082529A1 (ja) * | 2009-01-13 | 2010-07-22 | 日本電気株式会社 | Simd型並列データ処理装置及びデータソート方法並びにプロセッシングエレメント |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004066141A2 (en) * | 2003-01-15 | 2004-08-05 | Globespanvirata Incorporated | Apparatus and method for determining extreme values |
US7434034B2 (en) * | 2004-09-13 | 2008-10-07 | Ati Technologies Inc. | SIMD processor executing min/max instructions |
US7328330B2 (en) * | 2005-08-16 | 2008-02-05 | International Business Machines Corporation | Queue design supporting dependency checking and issue for SIMD instructions within a general purpose processor |
JP4686435B2 (ja) * | 2006-10-27 | 2011-05-25 | 株式会社東芝 | 演算装置 |
JP5763472B2 (ja) * | 2011-08-10 | 2015-08-12 | ルネサスエレクトロニクス株式会社 | 演算回路及び演算装置 |
US10223111B2 (en) * | 2011-12-22 | 2019-03-05 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset |
US10866807B2 (en) | 2011-12-22 | 2020-12-15 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of integers in numerical order that differ by a constant stride |
US10565283B2 (en) | 2011-12-22 | 2020-02-18 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of consecutive integers in numerical order |
US9651424B2 (en) | 2015-02-26 | 2017-05-16 | Sciaps, Inc. | LIBS analyzer sample presence detection system and method |
US20160283549A1 (en) * | 2015-03-27 | 2016-09-29 | Intel Corporation | Value sorter |
US9939383B2 (en) | 2016-02-05 | 2018-04-10 | Sciaps, Inc. | Analyzer alignment, sample detection, localization, and focusing method and system |
US10379854B2 (en) * | 2016-12-22 | 2019-08-13 | Intel Corporation | Processor instructions for determining two minimum and two maximum values |
US10831503B2 (en) | 2018-11-06 | 2020-11-10 | International Business Machines Corporation | Saving and restoring machine state between multiple executions of an instruction |
US10831478B2 (en) * | 2018-11-06 | 2020-11-10 | International Business Machines Corporation | Sort and merge instruction for a general-purpose processor |
US10831502B2 (en) | 2018-11-06 | 2020-11-10 | International Business Machines Corporation | Migration of partially completed instructions |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62208167A (ja) * | 1986-03-10 | 1987-09-12 | Hitachi Ltd | ベクトル処理装置 |
JPH052645A (ja) | 1991-06-26 | 1993-01-08 | Kawasaki Steel Corp | 順序フイルタリング方法 |
JP3204562B2 (ja) | 1993-03-18 | 2001-09-04 | 富士通株式会社 | メディアンフィルタ処理方法 |
JPH0830577A (ja) | 1994-07-15 | 1996-02-02 | Mitsubishi Electric Corp | Simdプロセッサ |
JPH11149554A (ja) | 1997-08-21 | 1999-06-02 | Motorola Inc | 3x3グリッドのランクに基づくフィルタのSIMD計算 |
-
2001
- 2001-04-02 JP JP2001103145A patent/JP3955741B2/ja not_active Expired - Fee Related
-
2002
- 2002-04-01 US US10/113,766 patent/US7500089B2/en not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010082529A1 (ja) * | 2009-01-13 | 2010-07-22 | 日本電気株式会社 | Simd型並列データ処理装置及びデータソート方法並びにプロセッシングエレメント |
Also Published As
Publication number | Publication date |
---|---|
JP3955741B2 (ja) | 2007-08-08 |
US20020174325A1 (en) | 2002-11-21 |
US7500089B2 (en) | 2009-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3955741B2 (ja) | ソート機能を有するsimd型マイクロプロセッサ | |
EP0539595A1 (en) | Data processor and data processing method | |
JP4913685B2 (ja) | Simd型マイクロプロセッサおよびsimd型マイクロプロセッサの制御方法 | |
US20050257026A1 (en) | Bit serial processing element for a SIMD array processor | |
JPS6053349B2 (ja) | 画像処理プロセツサ | |
JPH07210369A (ja) | 並列加算および平均演算を行うための回路およびその方法 | |
US5274777A (en) | Digital data processor executing a conditional instruction within a single machine cycle | |
JP3458518B2 (ja) | 並列プロセッサ | |
JP4237046B2 (ja) | 画像処理装置 | |
JP2002026721A (ja) | 情報処理装置 | |
JP2007102799A (ja) | ソート機能を有するsimd型マイクロプロセッサ | |
JPH1074141A (ja) | 信号処理装置 | |
EP1936492A1 (en) | SIMD processor with reduction unit | |
JP4482356B2 (ja) | Simdプロセッサを用いた画像処理方法及び画像処理装置 | |
JP3837293B2 (ja) | 定数選択機能を有するsimd型マイクロプロセッサ | |
JP2007108913A (ja) | ピーク値検出を行うsimd型マイクロプロセッサ | |
JP2008071037A (ja) | Simd型マイクロプロセッサ | |
WO2008077803A1 (en) | Simd processor with reduction unit | |
US6792442B1 (en) | Signal processor and product-sum operating device for use therein with rounding function | |
JP2004192405A (ja) | Simd型プロセッサ | |
JP2001357395A (ja) | 画像処理装置およびその方法 | |
JPH08212168A (ja) | アレイプロセッサ | |
JPH04184535A (ja) | 並列演算装置 | |
JPH07146781A (ja) | プロセツサ | |
JP3547316B2 (ja) | プロセッサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060221 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060829 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061030 |
|
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: 20070424 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070507 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110511 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120511 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120511 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130511 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140511 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |