JP5445469B2 - Simd型並列データ処理装置及びデータソート方法並びにプロセッシングエレメント - Google Patents

Simd型並列データ処理装置及びデータソート方法並びにプロセッシングエレメント Download PDF

Info

Publication number
JP5445469B2
JP5445469B2 JP2010546611A JP2010546611A JP5445469B2 JP 5445469 B2 JP5445469 B2 JP 5445469B2 JP 2010546611 A JP2010546611 A JP 2010546611A JP 2010546611 A JP2010546611 A JP 2010546611A JP 5445469 B2 JP5445469 B2 JP 5445469B2
Authority
JP
Japan
Prior art keywords
control information
data
sort
processing
processing element
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
Application number
JP2010546611A
Other languages
English (en)
Other versions
JPWO2010082529A1 (ja
Inventor
昭倫 京
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2010546611A priority Critical patent/JP5445469B2/ja
Publication of JPWO2010082529A1 publication Critical patent/JPWO2010082529A1/ja
Application granted granted Critical
Publication of JP5445469B2 publication Critical patent/JP5445469B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/24Sorting, 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3828Multigauge devices, i.e. capable of handling packed numbers without unpacking them

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Image Processing (AREA)
  • Advance Control (AREA)

Description

この発明は、SIMD型並列データ処理装置及びSIMD型並列データ処理装置におけるデータソート方法並びにプロセッシングエレメントに関し、詳しくは、ソート処理を改良したSIMD型並列データ処理装置及びSIMD型並列データ処理装置におけるデータソート方法並びにプロセッシングエレメントに関する。
ビデオ信号等の画像処理においては、従来からSIMD(Single Instruction Multiple Data)型並列計算装置(SIMD型並列プロセッサ)を用いることが知られている。このSIMD型計算装置は、複数のプロセッシングエレメント(Processing Element)PEと制御プロセッサとから概略構成される。その一次元SIMD型並列計算装置の電気的構成をブロック図で示せば図2のようになる。一次元SIMD型並列計算装置の全PEに1つずつ数値データを設定し、それら数値データからなる数値データの集合を昇順又は降順にソートする方法としては、いわゆる「奇偶変換ソート方式」が有効であることが知られている。
この奇偶変換ソート方式をSIMD型並列計算装置に適用して数値データの集合のソートを行う場合に、PE数をnとし、入力数値データ列S={x(0),x(1),…,x(n-1)}とし、x(i)がPE(i)に割り付けられているとすると、先ず、第1ステップでは、各偶数番目のPE(i)がその右隣のPE(i+1)からx(i+1)のコピーを受け取り、そしてもしもx(i)>x(i+1) ならば、PE(i)及びPE(i+1)は保持している数値データx(i)とx(i+1)とを交換する。
次に、第2ステップでは、最左端となっている番号0のPEを除く各偶数番目のPE(i)がその左隣のPE(i-1)からx(i-1)を受け取り、x(i-1)>x(i) ならば、PE(i-1)及びPE(i)は保持している数値データx(i)とx(i-1)とを交換する。
これらの2ステップを逐次に反復実行することにより、最大(n+1)/2回の反復後に、それ以上数値データの交換は起こらず、入力数値データ列Sのソートは完成する。
図4に、奇偶変換ソート方式を適用したSIMD型並列計算装置でのソート例を示す。このソート例は、PE数を7とし、降順の数値データ7、6、5、4、3、2、1を昇順の数値データにソートする例で、そのソートは、上述した2つのステップを合わせたソート動作を1回の反復とみなした場合に、その反復を繰り返すことで昇順の数値データ1、2、3、4、5、6、7を得るようにしている。
非特許文献1には、上述した2つのステップ(1回の反復)を一次元SIMD型並列計算装置において実現する関連技術が記載されている。この関連技術は、各PEが一般的な命令セットでしか処理を実行し得ない場合において、上述の奇偶変換ソート方式をその装置に実装するため、それぞれ異なる形で相隣り合う2つのPEをペア(対)として取り扱った上、そのペア内で互いに異なる動作を行わせる仕組みを採用している。
すなわち、例えば、昇順にソートする場合には、第1ステップでは偶数PEが小さい値を受け取る一方、当該偶数PEとペアとなる右隣のPE(奇数PE)が大きい値を受け取り、そして第2ステップでは上記偶数PEが大きい値を受け取る一方、当該偶数PEとペアとなる左隣のPE(奇数PE)が大きい値を受け取る、というような動作を生じさせ、所定のソートを得ようとするものである。
しかしながら、PEペア内に、上述したような互いに異なる動作(上述の第1ステップの動作Aと第2ステップの動作B)を行わせようとすると、同一の命令ストリームに従って動作する一次元SIMD型並列計算装置の場合には、一般的に、PEを動作不動作に指定するマスクレジスタ(mr)(以下、mr=1が動作を、また、mr=0が不動作を表すとする)を用いて、動作Aを指定する命令コードが制御プロセッサ(CP)から放送されている間は、一方のPEのmrを1とし他方のPEのmrを0とするのに対して、動作Bを指定する命令コードがCPから放送されている間は、一方のPEのmrを0とし他方のPEのmrを1とするように設定する。
すなわち、mrの値をPE毎にその都度変更し、かつ、動作Aと動作Bとに対応する命令コードをそれぞれCPから放送しなければならない。
このことを非特許文献1に記載される関連技術について、具体的に言えば、上述した第1ステップ及び第2ステップの処理を遂行するのに以下に述べる7つのシーケンスを辿ることになる。この7つのシーケンスは次のようになる。
その第1のシーケンス1)は、全PEが右隣PEの数値データを自PEへ転送する、第2のシーケンス2)は、1)での転送で獲得した数値データと自PE上の数値データとの大小比較(引き算)を行う、第3のシーケンス3)は、偶数PEのみを動作させるようにmrを1に設定する、第4のシーケンス4)は、mr=1のPE(偶数PE)は引き算結果のキャリフラグの値が1ならば、2)にて右隣PEから届いた数値データを自PEの数値データに代入する、第5のシーケンス5)は、全PEが「自PEの数値データ」及び「キャリフラグの値とmrとの論理積の値」を右隣PEへ転送する、第6のシーケンス6)は、全PEでmrを反転させて偶数PEを不動作、奇数PEを動作に設定する、第7のシーケンス7)は、動作の設定となった奇数PEは、今度は上記5)により自PEに転送されて来た論理積の値が1ならば、5)にて転送されて来た数値データを自PEの数値データに代入する。
上述した1)〜7)のシーケンスを辿ることにより、ようやく奇偶変換ソート方式における第1ステップの処理が実現する。
これと同様に、奇偶変換ソート方式における第2ステップの処理も実現することができる。そのためには、上述した1)〜7)での「右隣」を「左隣」に、また、3)の「偶数PEのみ」を「最左端PEを除く偶数PEのみ」に読み替えた上で、1)〜7)のシーケンスを辿るように構成する必要がある。
特許文献1には、SIMD型マイクロプロセッサについて関連技術が記載されている。この関連技術は、複数のプロセッサエレメントをSIMD型マイクロプロセッサにおいて、各プロセッサエレメントの特定のレジスタに格納されるデータと、オペランド指示されたソースレジスタに格納されるデータとの大小比較を第1のインストラクションで行い、両データのうちの大きいデータを上記特定のレジスタに格納する一方、小さいデータをソースレジスタに格納するか若しくはソースレジスタ以外のオペランド指示されたディスティネーションレジスタに格納し、更に、各プロセッサエレメントの特定のレジスタに格納されるデータと、オペランド指示されたソースレジスタに格納されるデータとの大小比較を第2のインストラクションで行い、両データのうちの小さいデータを上記特定のレジスタに格納する一方、大きいデータをソースレジスタに格納するか若しくはソースレジスタ以外のオペランド指示されたディスティネーションレジスタに格納し、上記格納のためのソースレジスタ及びディスティネーションレジスタとしてプロセッサエレメントのソートバッファレジスタを用いるように構成し、データのソート処理を高速に行う技術に係るものである。
特開2007−102799号公報
京 昭倫著「128個の4ウェイVLIW型RISCコアを集積した車載向け動画認識LSI」電子情報通信学会研究会報告、集積回路研究会(ICD),2003年5月、Vol.103,No.89,pp.19-24
ところで、上述した非特許文献1では、一次元結合SIMD型並列計算装置において奇偶変換ソート方式を実行するように構成すれば、n個の数値データを最大(n+1)/2回の反復でソートすることはできる。
しかしながら、1回の反復毎に多くの命令実行でそのソートを行えるに過ぎず、処理時間が長く、効率が悪いという技術的課題がある。
また、特許文献1は、複数のプロセッサエレメントをSIMD型マイクロプロセッサにおける各プロセッサエレメント毎でのソート処理を行う仕組みを取り入れており、複数のプロセッサエレメントの中の他のプロセッサエレメントとの関係については何ら触れるところはない。
したがって、ソート処理の効率化において、なお解決すべき問題がある。
この発明は、上述の事情に鑑みてなされたもので、ソート対象データの効率良いソートを達成し得るSIMD型並列データ処理装置及びSIMD型並列データ処理装置におけるデータソート方法並びにプロセッシングエレメントを提供することを目的としている。
上記課題を解決するために、この発明の第1の構成は、ソート対象データのソートを行うSIMD型並列データ処理装置に係り、ソート対象データを記憶する記憶手段を有し、一次元結合された複数のプロセッシングエレメントと、ソート制御情報を供給する制御情報出力手段と、該制御情報出力手段から入力される上記ソート制御情報に基づいて、上記複数のプロセッシングエレメントのうちの所定の1つのプロセッシングエレメントの上記記憶手段の上記ソート対象データと所定の他のプロセッシングエレメントの上記記憶手段の上記ソート対象データとを交換するプロセッシングエレメント毎のデータ交換手段とを備えることを特徴としている。
この発明の第2の構成は、SIMD型並列データ処理装置におけるデータソート方法に係り、制御情報出力手段からソート制御情報の供給を受け、供給される上記ソート制御情報に基づいて、ソート対象データを記憶する記憶手段を有し、一次元結合された複数のプロセッシングエレメントのうちの所定のプロセッシングエレメント間で両プロセッシングエレメントの上記記憶手段のソート対象データを交換することを特徴としている。
この発明の第3の構成は、SIMD型並列データ処理装置に用いるプロセッシングエレメントに係り、ソート制御情報を受信する制御情報入力手段と、該制御情報入力手段から出力される上記ソート制御情報に基づいて、一次元結合された複数のプロセッシングエレメントのうちの所定の上記プロセッシングエレメントの記憶手段に設定されるソート対象データと自己の上記プロセッシングエレメントの上記記憶手段に設定されるソート対象データとを交換するデータ交換手段とを備えることを特徴としている。
この発明によれば、減算交換命令を単純な演算の少ない組み合わせで実現させているので、奇偶変換ソート方式の各ステップを単一マシンサイクルで実装することが可能になる。したがって、ハードウェアコストの増加を僅かに抑えつつ、奇偶変換ソート方式に基づくデータのソート処理を効率良く実現することが可能になる。
図1は、この発明の実施形態1であるSIMD型並列プロセッサの電気的構成の主要部を示すブロック図である。 同SIMD型並列プロセッサの電気的構成全体を示すブロック図である。 同SIMD型並列プロセッサのプロセッシングエレメントで用いる減算論理回路のブロック図である。 同SIMD型並列プロセッサのプロセッシングエレメント数とソート対象データ数が同一である場合の動作説明図である。 この発明の実施形態2であるSIMD型並列プロセッサのプロセッシングエレメント数がソート対象データ数よりも少ない場合の動作説明図である。
この出願は、2009年1月13日に出願された日本出願特願2009−004380を基礎とする優先権を主張し、その開示の全てがここに取り込まれている。
実施形態1
図1は、この発明の実施形態1であるSIMD型並列プロセッサの電気的構成の主要部を示すブロック図、図2は、同SIMD型並列プロセッサの電気的構成全体を示すブロック図、図3は、同SIMD型並列プロセッサのプロセッシングエレメントで用いる減算論理回路のブロック図、図4は、同SIMD型並列プロセッサのプロセッシングエレメント数とソート対象データ数が同一である場合の動作説明図である。
この実施形態のSIMD型並列プロセッサ10は、奇偶変換ソート方式の第1ステップ及び第2ステップの各各を単一のマシンサイクルで実行し得る装置に係り、その主要部は、図1に示すように、複数のプロセッシングエレメントが一次元結合された(双方向にリング状に接続された)複数のプロセッシングエレメント(以下、PEと略記する)11(i=0、1、2、…、Nのうちの1つ)で構成され、さらに、これらのPEからなるPEアレイに命令をPE間結合線30(図2)を介して放送する制御プロセッサ(CP)40(図2)を有し、制御プロセッサ40で実行される命令セット内に以下に説明する減算交換命令をプログラムしてその減算交換命令の実行でPEアレイを制御して所定のソート処理を達成し得るようにしてその全体が構成されている。
その減算交換命令の機能は、概括的に言えば、次の通りである。上述した偶奇変換ソート方式における第1ステップを実行するのに1つの減算交換命令を用いて該命令の実行で生成される交換決定情報(交換決定ビット)xchg=1なら自PEのソート対象データをその右隣のPEのソート対象データで更新すると同時に、該右隣のPEのソート対象データを上記自PEのソート対象データで更新し、次いで、上述した偶奇変換ソート方式における第2ステップを実行するのにもう1つの減算交換命令を用いて該命令の実行で生成される交換決定ビットxchg=1なら自PEのソート対象データをその左隣のPEのソート対象データで更新すると同時に、左隣のPEのソート対象データを自PEのソート対象データで更新するという動作を生じさせることにある。
上記減算交換命令には、後述する動作指定情報I及び動作モードフラグflgが予め埋め込められている。
次に、今説明した動作を行うPE11の各各の構成について説明する。
PE11のいずれも、レジスタ(src)12、セレクタ14及びセレクタ16を有して構成される。以下の説明では、iは偶数番目を表すものとする。
これに加えて、偶数番目のPE11には、さらに、減算論理回路20、動作モードフラグ(flg)レジスタ22及びマスクレジスタ(mr)24が設けられる一方、奇数番目のPE11i−1及びPE11i+1には、さらに、セレクタ18i−1及びセレクタ18i+1が設けられて構成されている。
偶数番目のPE11のセレクタ14及び減算論理回路20のセレクタ203(後述)、並びに奇数番目のPE11i−1及びPE11i+1のセレクタ14i−1、セレクタ14i+1、セレクタ18i−1及びセレクタ18i+1の各選択制御入力に、制御プロセッサ40からPE間結合線30を介して動作指定信号(動作指定ビットともいう)Iが供給される。
偶数番目のPE11のレジスタ12には、セレクタ16の出力が接続されている。セレクタ14には、左隣のPE11i−1の出力(レジスタ12i−1の出力)及び右隣のPE11i+1の出力(レジスタ12i+1の出力)が接続されてそのいずれか一方がそこに入力される動作指定信号Iの値に応じて選択的に出力されるように構成されている。偶数番目のPE11のセレクタ16には、レジスタ12及びセレクタ14の出力が接続され、セレクタ16の選択制御入力に減算論理回路20のから出力される交換決定信号(交換決定ビットともいう)xchgが選択制御信号21として入力され、選択制御信号21の値に応じてレジスタ12又はセレクタ14の数値データが選択されて出力されるように構成されている。
奇数番目のPE11i−1及びPE11i+1のレジスタ12i−1及びレジスタ12i+1には、それぞれ、セレクタ16i−1及びレジスタ16i+1の出力が接続されている。セレクタ14i−1には、左隣のPE11i−2の出力(レジスタ12i−2の出力)及び右隣のPE11の出力(レジスタ12の出力)が接続されてそのいずれか一方がそこに入力される動作指定信号Iの値に応じて選択的に出力されるように構成されている。また、セレクタ14i+1には、左隣のPE11の出力(レジスタ12の出力)及び右隣のPE11i+2の出力(レジスタ12i+2の出力)が接続されてそのいずれか一方がそこに入力される動作指定信号Iの値に応じて選択的に出力されるように構成されている。
また、奇数番目のPE11i−1及びPE11i+1のセレクタ16i−1及びセレクタ16i+1の選択制御入力には、セレクタ18i−1及びセレクタ18i+1から出力される交換決定信号が選択制御信号19i−1及び選択制御信号19i+1として供給される。
ここで、レジスタ12i−1から出力される数値データをsrc-left12Lで表し、レジスタ12i+1から出力される数値データをsrc-right12Rで表すのに用いるが、また、src-left12L及びsrc-right12Rなる表記は、着目しているPEを基準として左側のPEのレジスタの数値データにもsrc-left12Lを、また、右側のPEのレジスタの数値データにもsrc-right12Rを用いることとする。
偶数番目のPE11のセレクタ14及びセレクタ16の選択動作は次の通りである。
セレクタ14は、例えば、動作指定ビットIの値が1ならば、src-right12Rを、また、動作指定ビットIの値が0ならば、src-left12Lを選択して出力する。
セレクタ16は、例えば、選択制御信号21の値が0ならば、セレクタ14の数値データをレジスタ12へ選択して出力してレジスタ12の更新を行い、また、選択制御信号21の値が1ならば、レジスタ12の数値データをレジスタ12へ選択出力する、つまり更新は行わない。
偶数番目のPE11のセレクタ14及びセレクタ16の選択動作について説明したところは、奇数番目のセレクタ14i−1、セレクタ14i+1及びセレクタ16i−1、セレクタ16i+1にも同等に当て嵌まる。
PE11i−1及びPE11i+1のセレクタ18i−1及びセレクタ18i+の選択動作は次の通りである。
セレクタ18i−1及びセレクタ18i+1には、両隣の偶数PEの減算論理回路、すなわち、減算論理回路20i−2及び減算論理回路20i+2の出力に接続され、動作指定ビットIの値に応じて上記2つの減算論理回路20i−2及び20i+2から出力される交換決定ビットxchg-left20L及びxchg-right20Rのいずれか一方を選択して選択制御信号19i−1及び選択制御信号19i+1として出力するように構成されている。セレクタ18i−1及びセレクタ18i+1は、例えば、動作指定ビットIの値が0ならば、xchg-right20Rを、また、動作指定ビットIの値が1ならば、xchg-left20Lを選択して出力する。
セレクタ18i−1及びセレクタ18i+1から選択して出力される信号は、各別に、当該奇数番目のPEに設けられるセレクタ16i−1及びセレクタ16i+1の選択制御入力に選択制御信号19i−1及び選択制御信号19i+1として供給される。
減算論理回路20は、レジスタ12及びセレクタ14からの数値データと、動作指定ビットIと、動作モードフラグ(flg)レジスタ22からの動作モードフラグ(flg)及びマスクレジスタ(mr)24からのマスク値とに基づいて交換決定信号(ビット)xchgを生成する回路であり、図3に示すように、減算回路(SUB)201、反転回路(NOT)202、セレクタ203、排他的論理和回路(XOR)204及び論理積回路(AND)205から構成される。交換決定信号xchgは自PE11のセレクタ16の選択制御入力に供給される選択制御信号21として用いられる。
減算回路201には、レジスタ12及びセレクタ14の出力が接続され、セレクタ203には、減算回路201及び反転回路202の出力が接続されてそのいずれか一方がそこに入力される動作指定ビットIの値に応じて選択的に出力されるように構成されている。例えば、セレクタ203への動作指定ビットIが1のとき、減算回路201からの出力信号(キャリーフラグcf)を選択し、また、動作指定信号Iが0のとき、反転回路202からの出力信号を選択する。排他的論理和回路204には、セレクタ203及び動作モードフラグ(flg)レジスタ22の出力が接続され、論理積回路205には、排他的論理和回路204及びマスクレジスタ(mr)24の出力が接続されている。論理積回路205からの出力信号が、PE11で生成される交換決定信号xchgとなる。
動作モードフラグ(flg)レジスタ22は、動作モードフラグ(flg)を記憶するレジスタであり、動作モードフラグはソートの種別を表すフラグである。動作モードフラグ(flg)は、減算交換命令が制御プロセッサ40で実行されるときにPE間結合線30を介して偶数PEに放送されて動作モードフラグ(flg)レジスタ22にセットされる。
マスクレジスタ(mr)24は、減算交換命令が制御プロセッサ40で実行されるときにPE間結合線30を介して偶数PEに放送される動作指定ビットIの値に応じて設定される。例えば、動作指定信号Iの値が1ならば、偶数PEのマスクレジスタ(mr)24に1が自動的にセットされるのに対して、動作指定信号Iの値が0ならば、最左端のPE110のマスクレジスタ24に0が自動的にセットされ、また、そのほかの偶数PEのマスクレジスタ24には1が自動的にセットされる。マスク値は、PEの動作不動作を指定する情報である。
次に、図1乃至図4を参照して、この実施形態の動作について説明する。
SIMD型並列プロセッサ10は、そのPEの数が7で構成され、SIMD型並列プロセッサ10におけるデータ処理において、これらのPE11(i=0,1,…,6のうちの1つ)のレジスタ(src)12に図4に示すような降順の数値データ7、6、5、4、3、2、1が設定されるものとし、これらの数値データを昇順の数値データにソートする場合について説明する。以下においては、便宜上、PE11乃至PE11をPE0乃至PE6として表すことにする。
そして、上記データ処理を行うプログラムの中で上記ソート処理の第1ステップを行う第1の減算交換命令には、動作指定信号Iの値として1が、また、動作モードフラグflgの値として0が予め設定されている。また、上記ソート処理の第2ステップを行う第2の減算交換命令には、動作指定信号Iの値として0が、また、動作モードフラグflgの値として0が予め設定されている。
なお、この第1ステップでは、その第1の減算交換命令に動作指定信号Iの値として1を予め設定するとしているが、動作指定信号Iの値として0を予め設定しても、同様の結果が得られる。
上記第1の減算交換命令が実行されると、各PEには1の動作指定信号Iが供給され、偶数PEの動作モードフラグレジスタ22には0の動作モードフラグflgが設定される。
そして、動作指定信号Iの値は1であるから、偶数PEのマスクレジスタ(mr)24に1が自動的にセットされる。
上述のステップ1の処理において、PE0のレジスタ12に設定されている数値データは7である一方、動作指定信号の値は1であるから、セレクタ14から出力される数値データは、src-right(=6)となる。したがって、減算論理回路20の減算回路201から1のキャリーフラグcfが出力される。
このステップ1では、動作モードフラグレジスタ22には、既に、0の動作モードフラグflgtが設定されており、セレクタ203は、1の動作指定信号Iにより1のキャリーフラグcfを選択して出力しているから、排他的論理和回路204から1の信号が出力される。また、このステップ1では、マスクレジスタ24には、既に、1のマスク情報mrが設定されているから、論理積回路205から1の交換決定信号xchgを出力する。
減算論理回路20から出力される1の交換決定信号xchgは、PE0では1の選択制御信号21としてPE0のセレクタ16へ供給される。そのセレクタ16はセレクタ14から出力されている数値データ、このステップ1では6を選択して出力する。この数値データ(=6)は、レジスタ12に書き込まれる。
一方、PE0の右隣のPE1では、PE0からの1の交換決定信号xchgがセレクタ18へ入力されるが、このステップ1ではそこに供給される動作指定信号Iの値も1であるから、セレクタ18で選択する交換決定信号xchgは、xchg-rightではなく、xchg-leftを選択するから、PE1での選択制御信号19も1となる。この1の選択制御信号19がセレクタ16に供給される。セレクタ16に入力される2つの数値データは、セレクタ14から出力されるsrc-left(すなわち、レジスタ12に設定されている数値データ7)とレジスタ12の数値データである。セレクタ16は、1の選択制御信号19により、src-left12L、すなわち、数値データ7を選択する。その数値データ7がレジスタ12に書き込まれる。
他方、PE0の左隣となる最右端のPE(この設例ではPE6)では、PE0で生成された1の交換決定信号xchgは、最右端のPE6ではxchg-rightとなるが、PE6の動作指定信号Iの値も1であるから、PE6のセレクタ18ではxchg-rightは選択されず、したがって最右端のPE6のレジスタ12への書き込み値は、PE0から出力される交換決定信号xchgの値によっては影響されない。
このステップ1におけるPE2での動作を説明すると次のようになる。
PE2のレジスタ12に設定されている数値データは5である一方、動作指定信号Iの値は1であるから、セレクタ14から出力される数値データは、PE3から出力されるsrc-right(=4)となる。したがって、減算論理回路20の減算回路201から1のキャリーフラグcfが出力される。
このステップ1では、動作モードフラグレジスタ22には、既に、0の動作モードフラグflgtが設定されており、セレクタ203は、動作指定信号Iが1であることにより、1のキャリーフラグcfを選択して出力しているから、排他的論理和回路204から1の信号が出力される。このステップ1では、マスクレジスタ24には、既に、1のマスク情報mrが設定されているから、論理積回路205から1の交換決定信号xchgを出力する。
減算論理回路20から出力される1の交換決定信号xchgは、PE2では1の選択制御信号21としてPE2のセレクタ16へ供給される。そのセレクタ16は、選択制御信号21が1であることにより、セレクタ14から出力されている数値データ、このステップ1ではPE3のレジスタ12の数値データ(すなわち、src-right12R)4を選択して出力する。この数値データ(=4)は、レジスタ12に書き込まれる。
一方、PE2の右隣のPE3では、このステップ1ではそこに供給される動作指定信号Iの値も1であるから、セレクタ18で選択する交換決定信号xchgは、xchg-rightではなく、xchg-leftを選択するから、PE3での選択制御信号19も1となる。この1の選択制御信号19がセレクタ16に供給される。このとき、セレクタ14は動作指定信号Iが1であることにより、そこに入力されるsrc-left、すなわち、レジスタ12に設定されている数値データ5を選択して出力する。そして、セレクタ16は、選択制御信号19が1であることにより、セレクタ14から出力される数値データ5を選択して出力する。その数値データ5がレジスタ12に書き込まれる。
他方、PE2の左隣のPE1では、PE2で生成された交換決定信号xchgは、PE1ではxchg-rightとなるが、PE1の動作指定信号Iの値も1であるから、PE1のセレクタ18ではxchg-rightは選択されず、したがってPE1のレジスタ12への書き込み値は、PE2から出力される交換決定信号xchgの値によっては影響されない。
そして、PE0及びPE2とこれら左右隣のPEについて説明した動作が、PE4とこの左右隣のPEに対しても、同様にして、ステップ1の処理のためにプログラムされた第1の減算交換命令の実行の中で同時的に生ぜしめられる。したがって、その逐一の説明は省略する。
また、PE6においては、交換決定信号xchgは、PE0及びPE2について説明したところに従うと1になり、したがって、セレクタ16への選択制御信号21は1になるから、セレクタ16でレジスタ12の数値データ、ここでは1が選択されてその数値データがレジスタ12に書き込まれる。レジスタ12の数値データは変更されない。
第1回目の反復におけるステップ1の処理が完了したときの状態を図4に示す。そのソート状態は、図4では、第1回目の反復(1st iteration)の中の第1のステップ(Step1)を示す横欄に示すようになる。すなわち、PE0、PE1、PE2、PE3、PE4、PE5及びPE6に保持される数値データは、それぞれ、6、7、4、5、2、3及び1となる。
上述したステップ1の処理に続いて第1回目の反復におけるステップ2の処理が開始される。このステップ2のための第2の減算交換命令が、上述したプログラムの中で第1の減算交換命令に続いて置かれている。この第2の減算交換命令に設定される動作指定信号Iは0に設定される。動作モードフラグflgの値は、第1の減算交換命令と同様、0に設定される。
ステップ2の処理に入り、第2の減算交換命令が制御プロセッサ40で実行されるときの、PE0のレジスタ12に既に設定されている数値データは6である一方、動作指定信号Iの値は0であるから、セレクタ14から出力される数値データは、最右端のPE(PE6)から出力されるsrc-left(=1)となる。したがって、減算論理回路20の減算回路201から1のキャリーフラグcfが出力される。
第2の減算交換命令でも、動作モードフラグレジスタ22には、既に、0の動作モードフラグflgが設定されており、動作指定信号Iの値は0であるから、セレクタ203は1のキャリーフラグcfを反転して出力する反転回路203の出力信号値0を選択して出力するので、排他的論理和回路204から0の信号(0の排他的論理和)が出力される。
そして、動作指定信号Iの値が0である場合には、偶数PEのうち、最左端のPEであるPE0に限り、マスクレジスタ24には、既に、0のマスク情報mrが設定されているから、キャリーフラグcfと動作モードフラグflgとの排他的論理和の値が1となったとしても、排他的論理和とマスク情報mrとの論理積は必ず0となる。したがって、減算論理回路20が出力する交換決定信号xchgは、常に0となる。
その0の交換決定信号xchgが、選択制御信号21としてPE0のセレクタ16へ供給される。そのセレクタ16はレジスタ(src)12から出力されている数値データ、ここでは6を選択して出力する。この数値データ(=6)がレジスタ12に書き込まれるので、レジスタ12の数値データは変更されない。
一方、PE0の右隣のPE1では、第2のステップではそこに供給される動作指定信号Iの値も0であるから、セレクタ18で選択する交換決定信号xchgは、xchg-leftではなく、xchg-rightを選択するから、PE1での選択制御信号21も1となる。この1の選択制御信号21の生成も、ステップ1で説明したところに準じて行われる。
この1の選択制御信号21がセレクタ16に供給されるから、セレクタ16は、セレクタ14からの数値データを選択して出力する。セレクタ14で選択される数値データは、ステップ1の処理でPE2のレジスタ16に設定された数値データ、ここでは4である。この数値データ4がレジスタ12に書き込まれる。
他方、PE0の左隣となる最右端のPE(この設例ではPE6)では、PE0で生成された0の交換決定信号xchgは、最右端のPE6ではxchg-rightとなり、PE6の動作指定信号Iの値も0であるから、PE6のセレクタ18から0のxchg-rightが選択され、その0の選択制御信号21がセレクタ16へ供給される。このとき、セレクタ14は、src-left、すなわち、レジスタ12の数値データ3を選択して出力する。したがって、最右端のPE6では、セレクタ16でレジスタ12の数値データ、ここでは3が選択されてレジスタ12へ供給されてそこに書き込まれる。
第1回目の反復におけるステップ2の中で生ずるPE2での動作を説明すると次のようになる。
PE2のレジスタ12に設定されている数値データは4である一方、動作指定信号Iの値は0であるから、セレクタ14から出力される数値データは、PE1から出力されるsrc-left(=7)となる。したがって、減算論理回路20の減算回路201から0のキャリーフラグcfが出力される。
このステップ2においても、動作モードフラグレジスタ22には、既に、0の動作モードフラグflgが設定されており、セレクタ203が0のキャリーフラグcfを反転回路202で反転した1の信号を選択して出力しているから、排他的論理和回路204から1の信号が出力される。このステップ2でも、マスクレジスタ24には、既に、1のマスク情報mrが設定されているから、論理積回路205から1の交換決定信号xchgを出力する。
減算論理回路20から出力される1の交換決定信号xchgは、PE2では1の選択制御信号21としてPE2のセレクタ16へ供給される。また、上述したように動作指定信号Iとして0がセレクタ14に供給されているから、セレクタ14は、src-leftの数値データであるPE1のレジスタ12に設定されている数値データ、すなわち、7を選択して出力する。
したがって、セレクタ16はセレクタ14から出力されている数値データ(=7)を選択して出力する。この数値データ(=7)は、レジスタ12に書き込まれる。
一方、PE2の右隣のPE3では、このステップ2ではそこに供給される動作指定信号Iの値も0であるから、セレクタ18で選択する交換決定信号xchgは、xchg-leftではなく、xchg-rightを選択するから、PE3の動作は、PE2から出力される交換決定信号xchgには影響されない。
PE3で用いられる選択制御信号としは、上述のようにして選択されたxchg-right、すなわち、上述のところに準じて処理されて出力される0の交換決定信号が用いられる。このとき、セレクタ14が選択するのは、src-rightである。そして、0の選択制御信号がセレクタ16に供給されるから、セレクタ16から選択出力する数値データは、セレクタ14から出力されるsrc-right、すなわち、レジスタ12に設定されている数値データ2である。この数値データ2がレジスタ12に書き込まれる。
他方、PE2の左隣のPE1では、PE2で生成された交換決定信号xchgは、PE1ではxchg-rightとなるが、PE1の動作指定信号Iの値も0であるから、PE1のセレクタ18では1のxchg-rightが選択されると共に、セレクタ14でもsrc-right、すなわち、PE2のレジスタ12に設定されている数値データ(=4)を選択する。
したがって、PE1のレジスタ12の書き込み値は、数値データ(=4)となり、レジスタ12の数値データは、4に書き換わる。
そして、PE0、PE1、PE2及びPE3について説明した動作が、PE4、PE5及びPE6でも、同様にして、ステップ2の処理のためにプログラムされた第2の減算交換命令の実行の中で同時的に生ぜしめられる。したがって、それらの逐一の説明は省略する。
第1回目の反復の中のステップ2の処理が完了したときの状態を図4に示す。そのソート状態は、図4では、第1回目の反復の中の第2のステップ(Step2)を示す横欄に示すようになる。すなわち、PE0、PE1、PE2、PE3、PE4、PE5及びPE6に保持される数値データは、それぞれ、6、4、7、2、5、1及び3となる。
上述した第1回目の反復の実行により、各PEに初期的に設定保持される数値データの入れ替え(交換)がPE間で行われる。
同様の数値データの入れ替えが、第2回目の反復以降でも行われる。それらの反復により、上述した数値データ例の場合には、図4に示すように、4回の反復で昇順のソート処理が完了する、すなわち、それ以上の数値データの入れ替え動作は発生しないことが判る。
このソート状態、すなわち、全PEのレジスタ(src)の数値データが変化しなくなったことを、制御プロセッサ40が検知して減算交換命令の発行ループから抜け出して実行中のプログラムの次の処理に進むようにすればよい。
なお、上記実施形態では、動作モードフラグ(flg)が0である、すなわち、昇順で数値データをソートする例について説明したが、動作モードフラグ(flg)が1である、すなわち、降順で数値データをソートし得ることは、上記の説明から自明となるところであるので、その逐一の説明は省略する。
前述の減算交換命令の発行ループから抜け出すプログラム処理を以下に説明する。
上述のSIMD型並列プロセッサ10で使用可能な命令セットには、減算交換命令以外に、PE上で第1オペランドが指定するレジスタ値を第2オペランドが指定するレジスタへ転送する命令MVと、PE上で第1オペランドが指定するレジスタ値と第2オペランドが指定するレジスタ値とを減算しその結果を第3オペランドが指定するレジスタに格納すると共に、減算結果が0ならゼロフラグに1を設定する命令SUBと、第1オペランドが指定する種類のPE上の条件フラグの値の全PEに渡る論理和として得られる1ビット情報を制御プロセッサ(CP)上のマスクレジスタに格納する動作を指定する命令STSと、制御プロセッサ上のマスクレジスタの値が1ならば分岐せず0ならば分岐する動作を指定する条件分岐命令BRNMとが存在することを必要とする。
これらの条件に加えて、プログラムの記述の中での“..”なる記述は、その両隣の命令が同一サイクルに動作することを指定することを意味し、/*/*で囲まれた部分や//以降行末までをコメントとする。また、:で終る文字列は、当該文字列の出現位置の番地を示し、分岐命令のオペランドとして同ラベルを指定した場合は、同番地を意味するものとする。
また、src,origは、PE上でデータを格納するレジスタの識別子とし、ソート対象となるPE数に等しい個数のデータが1個ずつ各PEのレジスタ(src)に格納されており、かつ制御プロセッサPC上のマスクレジスタの値は前もって0にセットされているとする。その他、減算交換命令(SUBXCHG命令)に対する第1オペランドとして動作指定信号Iの値を、第2オペランドとしてソート対象データを格納するデータレジスタの識別子srcを指定するものとする。また、この例では、ソート対象データを昇順でソートすることを想定しているので、動作モードフラグ(flg)レジスタに0が設定されているとする。
次に、上記条件に従うプログラムの例を記述する。
AGAIN:
/*番地A+0*/SUBXCHG命令 1,src../*番地A+1*/MV src,orig//step1を実行すると共にsrcの元の値を退避する
/*番地A+2*/SUBXCHG命令 0,src//step2を実行する
/*番地A+3*/SUBXCHG命令 1,src../*番地A+4*/SUB src,orig//step1を実行すると共にsrcの値と元の値とを比較する
/*番地A+5*/SUBXCHG命令 0,src../*番地A+6*/STS %Z//step2を実行すると共に、比較結果のゼロフラグをCPへ送付する
/*番地A+7*/SUBXCHG命令 1,src//step1を実行する
/*番地A+8*/BRNM
AGAIN../*番地A+9*/SUBXCHG命令
0,src//step2を実行すると共に、比較結果のゼロフラグをCPへ送付する
/*番地A+10*/
このプログラムコードの場合、/*番地A+1*/のMV命令により srcの値がレジスタ(orig)にコピーされる。/*番地A+3*/〜/*番地A+9*/のループでは、繰り返し毎にSUBXCHG命令を計6回発行し、ソート処理の反復回数としては3反復を実施している中で、同時に各PE上でSUB命令を発行することでsrc値とorig値とが同一、すなわち、反復を一度実施しても、srcの値に変化が現れなかったかどうかの判定が行われ、かつ、STS命令を用いることで当該判定結果を表す条件フラグZの値の全PEに渡る論理和がCP上のマスクレジスタに格納され、論理和が0、すなわち、srcの値に変化が現れた場合、/*番地A+8*/BRNMの実行に際し分岐が成立し、次サイクルには/*番地A+10*/ではなく/*番地A+0*/へ飛ぶように動作する。
一方、論理和が1、すなわち、srcの値に変化が現れなかった場合は、分岐を行わずに/*番地A+10*/へ進み、ループから抜け出す。
このようにループ終了判定を行う間でも、毎サイクルで減算交換命令を発行することができるため、減算交換命令を繰り返すループを抜けるためのCPによる終了判定処理は、全体の処理サイクル数に最小限の影響のみしか与えないようにすることができる。
このように、この実施形態によれば、減算交換命令を単純な演算の少ない組み合わせで実現させているので、減算交換命令を持たない、例えば、上述の「非特許文献」に記載されているSIMD型並列計算装置において減算交換命令相当の処理を行うのに7程度のマシンサイクルが掛かるのに対して、上記実施形態では奇偶変換ソート方式の各ステップを単一マシンサイクルで実装することが可能になる。したがって、減算交換命令を有するSIMD型並列計算装置では、ハードウェアコストの増加を僅かに抑えつつ、奇偶変換ソート方式に基づくデータのソート処理を効率良く実現することが可能になる。
実施形態2
図5は、この発明の実施形態2であるSIMD型並列プロセッサのプロセッシングエレメント数がソート対象データ数よりも少ない場合の動作説明図である。
この実施形態の構成が、実施形態1のそれと大きく異なる点は、ソート対象となるデータ数がPE数よりも多くてもソート処理全体を高速化し得るようにした点である。
この実施形態のSIMD型並列プロセッサは、その各PEに2つ以上のソート対象データを割り当てた上で、それらソート対象データについてのソート処理を「PE内での」奇偶変換ソート処理と「PE間での」奇偶変換ソート処理とに分け、後者の奇偶変換ソート処理について実施形態1で説明した奇偶変換ソート処理を実施してソート処理全体の高速化を達成するようにして構成される。
例えば、図5の動作説明図では、PE数を7とし、そのPE数の倍に当たる14個の数値データのソートを行う例を示している。図5中の(1)のマークでは同一PE内(PEinternal)でのデータ交換では、従来のPEアレイが有する命令セットを利用して実現する一方、図5中の(2)及び(3)のマークでは、PE間のデータ交換を実施形態1で説明したデータ交換を利用して実現する。なお、図5中の(2)及び(3)のマークで示すデータ交換は、順次的でも、また、同時的で実施してもよい。
上述したデータ交換によれば、PE間のデータ交換を効率良く実現できない従来のSIMD型並列計算装置に比して、奇偶変換方式に基づくソート処理をより高速に行うことができる。
以上、この発明の実施形態を、図面を参照して詳述してきたが、この発明の具体的な構成は、これらの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計の変更等があってもそれらはこの発明に含まれる。
例えば、実施形態1及び実施形態2では、ソート対象データとして、数値データを例にして説明したが、これに限らず、データの順序性を有するその他のデータについてのソートにも、この発明を適用し得る。
また、実施形態1及び実施形態2では、動作指定情報I及び動作モードフラグflgは、減算交換命令に予め埋め込められている例について説明したが、減算交換命令より前に実行される所要の命令の実行時に設定保持しておき、減算交換命令の実行時に保持されている各情報を対応する記憶保持手段、例えば、レジスタにセットしてこの発明のソート処理に用いるようにしてこの発明を実施することも可能である。
また、実施形態1及び実施形態2では、動作指定情報I、動作モードフラグflg及びマスク値mrの値を1又は0とする例について説明したが、その他の所定の値としてもよい。
ここに開示しているSIMD型並列データ処理装置及びSIMD型並列データ処理装置におけるデータソート方法並びにプロセッシングエレメントは、データのソートを必要とする各種のデータ処理装置に利用し得る。
10 SIMD型並列プロセッサ(SIMD型並列データ処理装置)
11〜11 プロセッシングエレメント
14〜14 セレクタ(データ交換手段の一部、第1のデータ選択手段)
16〜16 セレクタ(データ交換手段の残部、第2のデータ選択手段)
20、20、…、20 減算論理回路(制御情報出力手段の一部、第2の制御情報供給手段)
30 PE間結合線(制御情報入力手段、第1の制御情報供給手段)
40 制御プロセッサ(制御情報出力手段の残部)

Claims (27)

  1. ソート対象データを記憶する記憶手段を有し、一次元結合された複数のプロセッシングエレメントと、
    ソート制御情報を供給する制御情報出力手段と、
    該制御情報出力手段から入力される前記ソート制御情報に基づいて、前記複数のプロセッシングエレメントのうちの、所定の1つの前記プロセッシングエレメントの前記記憶手段の前記ソート対象データと所定の他の前記プロセッシングエレメントの前記記憶手段の前記ソート対象データとを交換する前記プロセッシングエレメント毎のデータ交換手段とを備えることを特徴とするSIMD型並列データ処理装置。
  2. ソート対象データを記憶する記憶手段を有し、一次元結合された複数のプロセッシングエレメントと、
    ソート制御情報を供給する制御情報出力手段と、
    該制御情報出力手段から入力される前記ソート制御情報に基づいて、前記複数のプロセッシングエレメントのうちの、ペアとなる一方の前記プロセッシングエレメントの前記記憶手段の前記ソート対象データと前記ペアとなる他方の前記プロセッシングエレメントの前記記憶手段のソート対象データとを交換する前記プロセッシングエレメント毎のデータ交換手段とを備えることを特徴とするSIMD型並列データ処理装置。
  3. 前記制御情報出力手段は、第1のソート制御情報を供給する第1の制御情報出力手段及び第2のソート制御情報を供給する第2の制御情報出力手段を有し、前記データ交換手段は、第1のデータ選択手段及び第2のデータ選択手段を有し、前記第1のデータ選択手段は、前記第1のソート制御情報に基づいて前記ペアとなる前記プロセッシングエレメントの前記記憶手段のうちのいずれか一方の前記ソート対象データを選択して出力する手段であり、前記第2のデータ選択手段は、前記第2のソート制御情報に基づいて前記第1のデータ選択手段及び自己の前記プロセッシングエレメントの前記記憶手段ののうちのいずれか一方の前記ソート対象データを選択して自己の前記プロセッシングエレメントの前記記憶手段に供給する手段であることを特徴とする請求項2記載のSIMD型並列データ処理装置。
  4. 前記第1の制御情報出力手段は、前記複数のプロセッシングエレメントに接続される制御装置で実行される命令に基づいて前記第1のソート制御情報を生成して出力することを特徴とする請求項3記載のSIMD型並列データ処理装置。
  5. 前記複数のプロセッシングエレメントのうちの偶数プロセッシングエレメントの前記第2の制御情報出力手段は、自己の前記プロセッシングエレメントの前記記憶手段から出力される前記ソート対象データと、前記第1のデータ選択手段から出力される前記ソート対象データと、前記第1のソート制御情報と、前記第1のソート制御情報の生成と共に生成される第3のソート制御情報とに基づいて前記第2のソート制御情報を生成して出力することを特徴とする請求項3記載のSIMD型並列データ処理装置。
  6. 前記複数のプロセッシングエレメントのうちの奇数プロセッシングエレメントの前記第2の制御情報出力手段は、該奇数プロセッシングエレメントの両隣の前記プロセッシングエレメントで生成される前記第2のソート制御情報に基づいて第2のソート制御情報を生成して出力することを特徴とする請求項3記載のSIMD型並列データ処理装置。
  7. 前記第1のソート制御情報は、前記複数のプロセッシングエレメントを制御する制御プロセッサで実行される減算交換命令に予め埋め込められている動作指定情報であり、前記第3のソート制御情報は、前記減算交換命令に予め埋め込められている動作モードフラグ及び前記動作指定情報に基づいて設定されるマスク情報であることを特徴とする請求項5記載のSIMD型並列データ処理装置。
  8. 前記第2の制御情報出力手段は、減算論理回路と、動作モードフラグレジスタと、マスクレジスタとからなり、前記減算論理回路は、前記第1のデータ選択手段から出力される前記ソート対象データと、自己の前記プロセッシングエレメントの前記記憶手段の前記ソート対象データと、前記動作指定情報と、前記動作モードフラグレジスタの動作モードフラグと、前記マスクレジスタのマスク情報とに基づいて前記第2のソート制御情報を生成して出力する手段であることを特徴とする請求項7記載のSIMD型並列データ処理装置。
  9. 前記偶数プロセッシングエレメントのうちの、最初の偶数プロセッシングエレメントを除く前記偶数プロセッシングエレメントにおける前記マスク情報は、前記動作指定情報の如何に関係なしに第1の所定の情報として設定されるが、前記動作指定情報が予め決められる情報であるとき前記偶数プロセッシングエレメントのうちの、最初の偶数プロセッシングエレメントにおける前記マスク情報は、前記第1の所定の情報とは異なる情報として設定されることを特徴とする請求項8記載のSIMD型並列データ処理装置。
  10. 制御情報出力手段からソート制御情報の供給を受け、
    供給される前記ソート制御情報に基づいて、ソート対象データを記憶する記憶手段を有し、一次元結合された複数のプロセッシングエレメントのうちの所定のプロセッシングエレメント間で両プロセッシングエレメントの前記記憶手段のソート対象データを交換することを特徴とするSIMD型並列データ処理装置におけるデータソート方法。
  11. 制御情報出力手段からソート制御情報の供給を受け、
    供給される前記ソート制御情報に基づいて、ソート対象データを記憶する記憶手段を有し、一次元結合された複数のプロセッシングエレメントのうちのペアとなる一方のプロセッシングエレメントと前記ペアとなる他方のプロセッシングエレメントとの間で両プロセッシングエレメントの前記記憶手段の前記ソート対象データを交換することを特徴とするSIMD型並列データ処理装置におけるデータソート方法。
  12. 前記制御情報出力手段は、第1及び第2のソート制御情報を出力し、前記第1のソート制御情報に基づいて前記ペアとなる前記プロセッシングエレメントの前記記憶手段ののうちのいずれか一方の前記ソート対象データを選択して出力し、前記第2のソート制御情報に基づいて選択出力された前記一方のソート対象データ及び前記ペアのうちの、自己の前記プロセッシングエレメントの前記記憶手段の前記ソート対象データのいずれか一方を選択して自己の前記プロセッシングエレメントの前記記憶手段に供給することを特徴とする請求項11記載のSIMD型並列データ処理装置におけるデータソート方法。
  13. 前記第1のソート制御情報は、前記複数のプロセッシングエレメントに接続される制御装置で実行される命令に基づいて生成されることを特徴とする請求項11記載のSIMD型並列データ処理装置におけるデータソート方法。
  14. 前記複数のプロセッシングエレメントのうちの偶数プロセッシングエレメントのための前記第2のソート制御情報は、自己の前記プロセッシングエレメントの前記記憶手段から出力される前記ソート対象データと、前記第1のソート制御情報に基づいて出力される前記ソート対象データと、前記第1のソート制御情報と、前記第1のソート制御情報の生成と共に生成される第3のソート制御情報とに基づいて生成されることを特徴とする請求項12記載のSIMD型並列データ処理装置におけるデータソート方法。
  15. 前記複数のプロセッシングエレメントのうちの奇数プロセッシングエレメントのための前記第2のソート制御情報は、該奇数プロセッシングエレメントの両隣の前記プロセッシングエレメントで生成される前記第2のソート制御情報に基づいて生成されることを特徴とする請求項12記載のSIMD型並列データ処理装置におけるデータソート方法。
  16. 前記第1のソート制御情報は、前記複数のプロセッシングエレメントを制御する制御プロセッサで実行される減算交換命令に予め埋め込められている動作指定情報であり、前記第3のソート制御情報は、前記減算交換命令に予め埋め込められている動作モードフラグ及び前記動作指定情報に基づいて設定されるマスク情報であることを特徴とする請求項14記載のSIMD型並列データ処理装置におけるデータソート方法。
  17. 前記第2のソート制御情報は、前記第1のソート制御情報に基づいて出力される前記ソート対象データと、自己の前記プロセッシングエレメントの前記記憶手段の前記ソート対象データと、前記動作指定情報と、動作モードフラグと、マスク情報とに基づいて生成されることを特徴とする請求項16記載のSIMD型並列データ処理装置におけるデータソート方法。
  18. 前記偶数プロセッシングエレメントのうちの最初の偶数プロセッシングエレメントを除く前記偶数プロセッシングエレメントにおける前記マスク情報は、前記動作指定情報の如何に関係なく第1の所定の情報として設定されるが、前記動作指定情報が予め決められる情報であるとき前記偶数プロセッシングエレメントのうちの、最初の偶数プロセッシングエレメントにおける前記マスク情報は、前記第1の所定の情報とは異なる情報として設定されることを特徴とする請求項17記載のSIMD型並列データ処理装置におけるデータソート方法。
  19. ソート制御情報を受信する制御情報入力手段と、
    該制御情報入力手段から出力される前記ソート制御情報に基づいて、一次元結合された複数のプロセッシングエレメントのうちの、所定の前記プロセッシングエレメントの記憶手段に設定されるソート対象データと自己の前記プロセッシングエレメントの前記記憶手段に設定されるソート対象データとを交換するデータ交換手段とを備えることを特徴とするプロセッシングエレメント。
  20. ソート制御情報を受信する制御情報入力手段と、
    該制御情報入力手段から出力される前記ソート制御情報に基づいて、一次元結合された複数のプロセッシングエレメントのうちの、ペアとなる一方の前記プロセッシングエレメントの記憶手段に設定されるソート対象データと前記ペアとなる他方の前記プロセッシングエレメントの前記記憶手段に設定されるソート対象データとを交換するデータ交換手段とを備えることを特徴とするプロセッシングエレメント。
  21. 前記制御情報入力手段は、第1のソート制御情報を供給する第1の制御情報供給手段及び第2のソート制御情報を供給する第2の制御情報供給手段を有し、前記データ交換手段は、第1のデータ選択手段及び第2のデータ選択手段を有し、前記第1のデータ選択手段は、前記第1のソート制御情報に基づいて前記ペアとなる前記プロセッシングエレメントの前記記憶手段のうちの、いずれか一方の前記ソート対象データを選択して出力する手段であり、前記第2のデータ選択手段は、前記第2のソート制御情報に基づいて前記第1のデータ選択手段及び自己の前記プロセッシングエレメントの前記記憶手段のうちのいずれか一方の前記ソート対象データを選択して自己の前記プロセッシングエレメントの前記記憶手段に供給する手段であることを特徴とする請求項20記載のプロセッシングエレメント。
  22. 前記第1の制御情報入力手段は、前記複数のプロセッシングエレメントに接続される制御装置で実行される命令に基づいて生成される前記第1のソート制御情報を受信することを特徴とする請求項20記載のプロセッシングエレメント。
  23. 前記プロセッシングエレメントが、前記複数のプロセッシングエレメントのうちの偶数プロセッシングエレメントであるとき、該偶数プロセッシングエレメントの前記第2の制御情報供給手段は、自己の前記プロセッシングエレメントの前記記憶手段から出力される前記ソート対象データと、前記第1のデータ選択手段から出力される前記ソート対象データと、前記第1のソート制御情報と、前記第1のソート制御情報の生成と共に生成される第3のソート制御情報とに基づいて前記第2のソート制御情報を生成して出力することを特徴とする請求項21記載のプロセッシングエレメント。
  24. 前記プロセッシングエレメントが前記複数のプロセッシングエレメントのうちの、奇数プロセッシングエレメントであるとき、該奇数プロセッシングエレメントの前記第2の制御情報供給手段は、該奇数プロセッシングエレメントの両隣の前記プロセッシングエレメントで生成される前記第2のソート制御情報に基づいて第2のソート制御情報を生成して出力することを特徴とする請求項21記載のプロセッシングエレメント。
  25. 前記第1のソート制御情報は、前記複数のプロセッシングエレメントを制御する制御プロセッサで実行される減算交換命令に予め埋め込められている動作指定情報であり、前記第3のソート制御情報は、前記減算交換命令に予め埋め込められている動作モードフラグ及び前記動作指定情報に基づいて設定されるマスク情報であることを特徴とする請求項23記載のプロセッシングエレメント。
  26. 前記第2の制御情報供給手段は、減算論理回路と、動作モードフラグレジスタと、マスクレジスタとからなり、前記減算論理回路は、前記第1のデータ選択手段から出力される前記ソート対象データと、自己の前記プロセッシングエレメントの前記記憶手段の前記ソート対象データと、前記動作指定情報と、前記動作モードフラグレジスタの動作モードフラグと、前記マスクレジスタのマスク情報とに基づいて前記第2のソート制御情報を生成して出力する手段であることを特徴とする請求項25記載のプロセッシングエレメント。
  27. 前記偶数プロセッシングエレメントのうちの、最初の偶数プロセッシングエレメントを除く前記偶数プロセッシングエレメントにおける前記マスク情報は、前記動作指定情報の如何に関係なしに第1の所定の情報として設定されるが、前記動作指定情報が予め決められる情報であるとき前記偶数プロセッシングエレメントのうちの最初の偶数プロセッシングエレメントにおける前記マスク情報は、前記第1の所定の情報とは異なる情報として設定されることを特徴とする請求項26記載のプロセッシングエレメント。
JP2010546611A 2009-01-13 2010-01-07 Simd型並列データ処理装置及びデータソート方法並びにプロセッシングエレメント Active JP5445469B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010546611A JP5445469B2 (ja) 2009-01-13 2010-01-07 Simd型並列データ処理装置及びデータソート方法並びにプロセッシングエレメント

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2009004380 2009-01-13
JP2009004380 2009-01-13
JP2010546611A JP5445469B2 (ja) 2009-01-13 2010-01-07 Simd型並列データ処理装置及びデータソート方法並びにプロセッシングエレメント
PCT/JP2010/050119 WO2010082529A1 (ja) 2009-01-13 2010-01-07 Simd型並列データ処理装置及びデータソート方法並びにプロセッシングエレメント

Publications (2)

Publication Number Publication Date
JPWO2010082529A1 JPWO2010082529A1 (ja) 2012-07-05
JP5445469B2 true JP5445469B2 (ja) 2014-03-19

Family

ID=42339782

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010546611A Active JP5445469B2 (ja) 2009-01-13 2010-01-07 Simd型並列データ処理装置及びデータソート方法並びにプロセッシングエレメント

Country Status (2)

Country Link
JP (1) JP5445469B2 (ja)
WO (1) WO2010082529A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10372451B2 (en) 2017-05-25 2019-08-06 Samsung Electronics Co., Ltd. Sequence alignment method of vector processor
US10409593B2 (en) 2017-03-31 2019-09-10 Samsung Electronics Co., Ltd. Semiconductor device
US10649771B2 (en) 2017-03-31 2020-05-12 Samsung Electronics Co., Ltd. Semiconductor device

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH056261A (ja) * 1991-04-04 1993-01-14 Mitsubishi Electric Corp データのためのソーテイング装置およびソーテイング方法
JPH10149276A (ja) * 1996-11-21 1998-06-02 Nippon Telegr & Teleph Corp <Ntt> ソート回路およびソート方法
JP2007102799A (ja) * 2006-10-30 2007-04-19 Ricoh Co Ltd ソート機能を有するsimd型マイクロプロセッサ

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05189202A (ja) * 1992-01-10 1993-07-30 Fujitsu Ltd 並列ソート方式
JP3955741B2 (ja) * 2001-04-02 2007-08-08 株式会社リコー ソート機能を有するsimd型マイクロプロセッサ

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH056261A (ja) * 1991-04-04 1993-01-14 Mitsubishi Electric Corp データのためのソーテイング装置およびソーテイング方法
JPH10149276A (ja) * 1996-11-21 1998-06-02 Nippon Telegr & Teleph Corp <Ntt> ソート回路およびソート方法
JP2007102799A (ja) * 2006-10-30 2007-04-19 Ricoh Co Ltd ソート機能を有するsimd型マイクロプロセッサ

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6013058221; 京昭倫、外: '128個の4ウェイVLIW型RISCコアを集積した車載向け動画認識LSI' 電子情報通信学会技術研究報告 Vol.103, No.89, 2003, P.19-24 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10409593B2 (en) 2017-03-31 2019-09-10 Samsung Electronics Co., Ltd. Semiconductor device
US10649771B2 (en) 2017-03-31 2020-05-12 Samsung Electronics Co., Ltd. Semiconductor device
US10990388B2 (en) 2017-03-31 2021-04-27 Samsung Electronics Co., Ltd. Semiconductor device
US11645072B2 (en) 2017-03-31 2023-05-09 Samsung Electronics Co., Ltd. Semiconductor device
US10372451B2 (en) 2017-05-25 2019-08-06 Samsung Electronics Co., Ltd. Sequence alignment method of vector processor
US11068265B2 (en) 2017-05-25 2021-07-20 Samsung Electronics Co., Ltd. Sequence alignment method of vector processor
US11442728B2 (en) 2017-05-25 2022-09-13 Samsung Electronics Co., Ltd. Sequence alignment method of vector processor

Also Published As

Publication number Publication date
WO2010082529A1 (ja) 2010-07-22
JPWO2010082529A1 (ja) 2012-07-05

Similar Documents

Publication Publication Date Title
EP2569694B1 (en) Conditional compare instruction
EP0450658B1 (en) Parallel pipelined instruction processing system for very long instruction word
JP5145809B2 (ja) 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム
US20190303149A1 (en) Sequence alignment method of vector processor
EP3326060B1 (en) Mixed-width simd operations having even-element and odd-element operations using register pair for wide data elements
WO2009131007A1 (ja) Simd型並列計算機システム、simd型並列計算方法及び制御プログラム
EP2352082B1 (en) Data processing device for performing a plurality of calculation processes in parallel
CN107851016B (zh) 向量算术指令
JP5445469B2 (ja) Simd型並列データ処理装置及びデータソート方法並びにプロセッシングエレメント
JP5352780B2 (ja) プロセッサ
US20110055647A1 (en) Processor
JP2009230338A (ja) プロセサおよび情報処理装置
JP6428488B2 (ja) 加減算器及び加減算器の制御方法
JP2009037291A (ja) 半導体装置
JP2793342B2 (ja) 演算処理装置
JP4444305B2 (ja) 半導体装置
JP5889747B2 (ja) 半導体装置
Luk et al. A systolic LRU processor and its top-down development
JP3707729B2 (ja) アドレス生成インターロック検出方法およびシステム
US9250898B2 (en) VLIW processor, instruction structure, and instruction execution method
US20240118891A1 (en) Processor
JP4516495B2 (ja) Simd型マイクロプロセッサにおけるデータ処理方法
JP3895267B2 (ja) Simdプロセッサ
JP3771682B2 (ja) ベクトル処理装置
WO2013137459A1 (ja) データ供給装置及びデータ処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121205

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: 20131126

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131209

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5445469

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150