JP2007102799A - ソート機能を有するsimd型マイクロプロセッサ - Google Patents

ソート機能を有するsimd型マイクロプロセッサ Download PDF

Info

Publication number
JP2007102799A
JP2007102799A JP2006294342A JP2006294342A JP2007102799A JP 2007102799 A JP2007102799 A JP 2007102799A JP 2006294342 A JP2006294342 A JP 2006294342A JP 2006294342 A JP2006294342 A JP 2006294342A JP 2007102799 A JP2007102799 A JP 2007102799A
Authority
JP
Japan
Prior art keywords
register
data
stored
value
type microprocessor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2006294342A
Other languages
English (en)
Inventor
Kazuhiko Iwanaga
和彦 岩永
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.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
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 Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2006294342A priority Critical patent/JP2007102799A/ja
Publication of JP2007102799A publication Critical patent/JP2007102799A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Image Processing (AREA)

Abstract

【課題】SIMD型マイクロプロセッサの各プロセッサエレメントにおいてデータのソート処理を高速に行う。
【解決手段】複数のプロセッサエレメントを有するSIMD型マイクロプロセッサにおいて、各プロセッサエレメントの備える特定のレジスタに格納される値と、オペランド指示されたソースレジスタに格納される値との、大小比較を行う第1のインストラクションにて、比較の結果、大きい方のデータを該特定のレジスタに格納し、小さい方のデータを、ソースレジスタに格納するか若しくはソースレジスタ以外のオペランド指示されたディスティネーションレジスタに格納することを特徴とする。
【選択図】図3

Description

本発明は、SIMD(Single Instructin−stream Multiple Data−stream;単一命令多データ処理)型マイクロプロセッサに関する。
SIMD型マイクロプロセッサでは、複数のデータに対して1つの命令で同時に同一の演算処理が実行可能である。この構造により、演算は同一であるがデータ量が非常に多い処理(例えば、画像処理)に係る用途において、頻用される。
SIMD型マイクロプロセッサにおける通常の演算処理では、複数の演算ユニット(Processor Element〔PE〕;プロセッサエレメント)を並べ同一の演算を同時に複数のデータに対して実行する。このことにより高速な演算処理が可能となっている。
ところで、「画像データ処理」においては、画質補正のために様々なフィルタ処理がなされる。通常のフィルタ処理は、画像の主走査方向、あるいは副走査方向に隣接する画素と対象となる画素との重み付け演算であるため、SIMD型マイクロプロセッサの同時演算性の利点が如何なく発揮され得る。通常の重み付けフィルタは、入力画像データのノイズ成分除去手法としても、用いられることがあるが、このような重み付けフィルタにおいては、輪郭部がぼやける等の欠点がある。
そこで、入力画像データのノイズ除去の有用な手法として、「メディアン・フィルタ」が知られている。輪郭部を保持したままでノイズ成分のみを除去することができるため、画像処理において頻用されるフィルタ(処理)である。
この「メディアン・フィルタ」とは、注目画素を中心として、隣接している画素(例えば注目画素の左、右、上、下、左上、右上、左下、右下に隣接している8画素)と注目画素とを合わせた複数の画素中から、「メディアン」、すなわちデータの大きい順に並べたときにちょうど中心の順位となるデータを求め、そのデータを注目画素のデータとして置き換える、という処理である。
SIMD型マイクロプロセッサにおいては、図5(1)のように、画素データは主走査方向に各PEのレジスタ(図ではR2レジスタ)に並べられている。副走査方向に画素を参照しようとするには、いったん現ライン画素データを別のレジスタ(図ではR1レジスタ)にコピーして、SIMD型マイクロプロセッサの外部に設置されたFIFOメモリなどのラインバッファに格納することによって、ラインディレイを作っている。この操作を複数回繰り返すことによって副走査方向の画素が複数ライン分参照できる(図ではR1レジスタをラインディレイさせてR0レジスタを作っている。)。
メディアン・フィルタ処理では、全てのPEにおいて、自身の画素を中心にして隣接する画素との「メディアン」を取る(確定する)処理が必要となる。例えば、図5(2)において、番号[5]が付されたPE、即ち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などの)レジスタの種類については、後で説明する。
上記のような9画素(「A」「B」「C」「D」「E」「F」「G」「H」「I」)のデータをソートしてメディアン(中心値)である5番目に大きい画素データを求めるためには、従来技術においては、画素データのソート処理を相当に多数回行なうことが欠かせない。そのような相当量のソート処理を軽減する若しくは高速化する方策が模索されている。
メディアン・フィルタ処理を高速化するための手法はSIMD型マイクロプロセッサに関するものだけではない。例えば、特開平6−274617号は、「3×3」画素でのメディアン・フィルタの処理を取り上げている。そこでは、ソートする処理を3画素のソート、6画素のマージソート、9画素のマージソートと3つの段階に分けて処理の高速化を図る手法について、開示されている。また、特開平5−2645号には、対象となるデータをビットスライスに分割し、上位ビットから順に“1”の立っているデータの数を計数し、所望の順位のデータを求める方法について開示されている。いずれも、SISD型プロセッサあるいは画像処理専用LSIにおいては有効であり、メディアン・フィルタ処理を高速に行うことが可能となっている。
しかし、SIMD型マイクロプロセッサを用いる画像処理において、上記発明を適用するのは、以下に述べるように、困難である。
特許文献1の発明を利用すると、6画素及び9画素でのマージソートにおいて、SISDなど分岐処理が可能であるプロセッサにおいては全体での処理速度が向上する。しかし、SIMD型マイクロプロセッサにおいては各PE毎に分岐処理を行うことができないため、全ての分岐先の演算を実行する必要が生じかえって処理時間がかかってしまう。
また、特許文献2においては、対象となるデータをビットスライスに分割し、上位ビットから順に“1”の立っているデータの数を計数し、所望の順位のデータを求める方法について、開示されている。このことを利用しようとすると、SIMD型マイクロプロセッサにおいては、注目画素の左右の画素データが隣接するPEのレジスタにデータが格納されているため、ビットスライスにまで分割されたデータを作るには隣接するPEからデータを引用してくる必要がある。そうすると、結果として配線数が増大してしまう。更に、ビットスライスに対する計数器、加算器を全ビット分まで各PEに保有させると、回路規模が非現実的なまでに増大してしまう。各ビットにまで処理を分割して実行させると、膨大なサイクル数がかかってしまうことにもなる。
特許文献3では、SIMD型マイクロプロセッサにおけるメディアン・フィルタ処理が開示されている。そこでは、「3×3画素」での計算方法が示されている。まず、3画素のソート処理を「列」方向に行い、次にソート後のデータに対して、「行」方向に3画素のソート処理を行い、最後に対角線方向にソートを行うというものである。
上記の開示内容においては、基本となる「3画素のソート処理」に関しては示されていない。この「3画素のソート処理」を高速に行なえない、即ち「3画素のソート処理」に時間がかかってしまうと、全体処理時間も比例して増えてしまうことになる。3画素のデータをソート処理する場合、従来のSIMD型マイクロプロセッサでは、以下のような順序で行なっている。
以下では、比較対象となる3画素のデータが、各PEのR0、R1、R2レジスタに格納されており、ソート処理後のデータは、各PEのR16、R17、R18に降順に格納される。「MAX」命令とは、2つのソースレジスタの値の比較を行い、大きい方のデータを指定したレジスタに書き戻す命令であり、同様に「MIN」命令とは、小さい方のデータを指定したレジスタに書き戻す命令である。
1.R0とR1とのMAX演算を行い、結果をR16に格納する。
2.R0とR1とのMIN演算を行い、結果をR17に格納する。
3.R2とR17とのMIN演算を行い、結果をR18に格納する。
4.R2とR17とのMAX演算を行い、結果をR17に格納する。
5.R16とR17とのMAX演算を行い、結果をR16に格納する。
6.R16とR17とのMIN演算を行い、結果をR17に格納する。
以上のように、6サイクルの処理サイクルが必要となる。
特許文献3の手法により、「3×3画素」のメディアン・フィルタ処理を行なうには、
(1)「列」方向に3画素のデータをソートする(「SIMD」であるから、3列分、同時実行可能である。)。;6サイクル
(2)「行」方向に3画素のデータをソートする。;3行で10サイクル
(3)対角線方向に3画素のデータをソートする。;6サイクル
となり、全体で22サイクルが必要となる。上記(2)においては、3画素のMAX、MINを求める際に、ソート処理が不要であり2サイクルで求められる。よって、処理時間が3行分のソートに必要な18サイクルよりは短く済む。
特開平6−274617号公報 特開平5−2645号公報 特開平11−149554号公報
本発明は、SIMD型マイクロプロセッサの各プロセッサエレメントにおいて、データのソート処理を高速に行ない得ることを目的としている。
本発明に係る請求項1に記載のSIMD型マイクロプロセッサは、
複数のプロセッサエレメントを有するSIMD型マイクロプロセッサであって、
各プロセッサエレメント内にソートバッファレジスタを有し、
各プロセッサエレメントの備える特定のレジスタに格納される値と、オペランド指示されたソースレジスタに格納される値との、大小比較を行う第1のインストラクションにて、
比較の結果、大きい方のデータを該特定のレジスタに格納し、
小さい方のデータを、ソースレジスタに格納するか若しくはソースレジスタ以外のオペランド指示されたディスティネーションレジスタに格納し、
更に、
各プロセッサエレメントの備える特定のレジスタに格納される値と、オペランド指示されたソースレジスタに格納される値との、大小比較を行う第2のインストラクションにて、
比較の結果、小さい方のデータを該特定のレジスタに格納し、
大きい方のデータを、ソースレジスタに格納するか若しくはソースレジスタ以外のオペランド指示されたディスティネーションレジスタに格納し、
上記ソースレジスタ及び上記ディスティネーションレジスタとして上記ソートバッファレジスタが指示され、このことにより各プロセッサエレメント内にてソート処理が行われることを特徴とする
SIMD型マイクロプロセッサである。
以上の説明から明白なように、本発明を利用することにより以下のような効果を得ることができる。
本発明に係る第1の実施の形態若しくは第2の実施の形態のSIMD型マイクロプロセッサ2を利用すると、2つのデータを比較して、大きい(あるいは小さい)データを特定のレジスタに残し、且つ、小さい(あるいは大きい)データをオペランド指示したレジスタに格納することができる。よって、ソート用のハードウェアをSIMD型マイクロプロセッサに実装すること無しに、未ソートデータをソート済みデータとマージする際の処理時間が短縮できる。
更に、未ソートのデータをソートする際に処理時間を短縮できるような、処理フローを実現できる。
以下、図面を参照して、本発明に係る好適な実施形態を説明する。
図1は、本発明に係るSIMD型マイクロプロセッサ2の概略の構成を示すブロック図である。該SIMD型マイクロプロセッサ2は、概略、グローバルプロセッサ4、レジスタファイル6、及び演算アレイ8から構成される。
(1)グローバルプロセッサ4
このグローバルプロセッサ4そのものは、いわゆるSISD型のプロセッサであり、プログラムRAM10とデータRAM12を内蔵し(図2参照)、プログラムを解読し各種制御信号を生成する。この制御信号は内蔵する各種ブロック以外に、レジスタファイル6、演算アレイ8にも供給される。また、GP(グローバルプロセッサ)命令実行時は内蔵する汎用レジスタ、ALU(算術論理演算器)等を使用して各種演算処理、プログラム制御処理をおこなう。
(2)レジスタファイル6
PE(プロセッサエレメント)命令で処理されるデータを保持している。PE(プロセッサエレメント)3は、公知のように、SIMD(Single Instruction−Stream,Multiple Data−Stream)型プロセッサにおいて個別の演算を実行する構成単位である。図2のレジスタファイル6及び演算アレイ8が示すように、図2のSIMD型マイクロプロセッサ2では256個のPE3を含んでいる。上記のPE命令はSIMD型の命令であり、レジスタファイル6に保持されている複数のデータに対し、同時に同じ処理を行なう。このレジスタファイル6からのデータの読み出し/書き込みの制御はグローバルプロセッサ4からの制御によって行なわれる。読み出されたデータは演算アレイ8に送られ、演算アレイ8での演算処理後にレジスタファイル6に書き込まれる。
また、レジスタファイル6はプロセッサ2外部からのアクセスが可能であり、グローバルプロセッサ4の制御とは別に、外部から特定のレジスタに対し読み出し/書き込みが行なわれる。
(3)演算アレイ
PE命令の演算処理が行なわれる。処理の制御はすべてグローバルプロセッサ4から行なわれる。
図2は、本発明に係るSIMD型マイクロプロセッサ2の、更に詳細な構成を示すブロック図である。
グローバルプロセッサ4には、本プロセッサ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命令実行時には、命令デコーダ(図示せず。)、レジスタファイル制御回路(図示せず。)、PE演算制御回路(図示せず。)を使用して、レジスタファイル6の制御と演算アレイ8の制御を行なう。さらに、データRAM12から複数のPEレジスタファイル6にデータを転送できるように、設定されている。
レジスタファイル6においては、1つのPE単位に8ビットのレジスタ34が32本内蔵されており、256個のPE分の(32本の)組が、アレイ構成になっている。レジスタ34はPE毎に、R0、R1、R2、...R31と呼ばれる。それぞれのレジスタ34は、演算アレイ8に対して1つの読み出しポートと1つの書き込みポートを備えており、8ビットのリード/ライト兼用のバスで演算アレイ8からアクセスされる。32本のレジスタの内、24本(R0〜R23)はプロセッサ外部からアクセス可能であり、外部からはクロック(CLK)とアドレス(Address)、リード/ライト制御(RWB)を入力することで、任意のレジスタ34に対し、読み書きできる。残りの8本(R24〜R31)のレジスタ34は、PE演算の一時的な演算データ保存用として使用される。
演算アレイ8は、16ビットALU36と16ビットAレジスタ38、1つ又は複数のFレジスタ40を内蔵している。PE命令による演算は、レジスタファイル6から読み出されたデータ若しくはグローバルプロセッサ4から与えられたデータをALU36の片側の入力とし、Aレジスタ38の内容をもう片側の入力として、通常、行なわれるものである。その演算結果は、Aレジスタ38に格納される。したがって、R0〜R31レジスタ34若しくはグローバルプロセッサ4から与えられたデータと、Aレジスタ38に格納されるデータとの、演算が通常行なわれることになる。
レジスタファイル6と演算アレイ8との接続に、7to1(7対1)のマルチプレクサ42が置かれている。図2に示すように、あるマルチプレクサ42から見て、左方向の3つのPE3に含まれるR0〜R31レジスタ34のデータと、右方向の3つのPE3に含まれるR0〜R31レジスタ34のデータと、自らが属するPE3に含まれるR0〜R31レジスタ34のデータを、演算対象として選択し得るように設定されている。また、レジスタファイル6の8ビットのデータは、シフト・拡張回路44により任意のビット分だけ、左シフトしてALU36に入力する。
さらに、8ビットの条件レジスタ(図示せず。)により、PE3別に演算実行の無効/有効の制御をしており、特定のPE3だけを演算対象として選択できるようになっている。
各PE3には、PE番号と呼ばれる通し番号が付されている。図2のSIMD型マイクロプロセッサ2では、PEの個数が256個であるので、8ビットのビット列(即ち、00000000b〜11111111bの256通り。ここで、上記のような末尾の“b”は2進法表記であることを表す。)が、各PE3にPE番号データとして与えられる。PE番号は、各PE3に対し、PEの位置とは無関係に与えられても構わないが、本明細書においては、(左)端から順に付されているものとする。また、PE番号が「n」であるPEを、
・PE[n]
と表すことにする。従って、図2のSIMD型マイクロプロセッサ2は、左方から、PE[0]、PE[2]、PE[3]、・・・PE[254]、PE[255]により、構成される。
なお、上記のPE番号データは、各PE3にて8ビットの入力端子を備えさせその端子をVCC若しくはGNDに結ぶ組み合わせを変えることにより、作成している。
≪第1の実施の形態≫
図3は、本発明の第1の実施の形態に係るSIMD型マイクロプロセッサ2のブロック図、特に、1つのPE3部分を拡大したブロック図を示す。
各PEの演算部(演算アレイ8)は、
・ALU36、
・2つのALUラッチ(ALT[1]50−1、ALT[2]50−2)、
・演算結果を格納するAレジスタ38、
・テンポラリレジスタとして利用される2つのFレジスタ(F1レジスタ40−1、F2レジスタ40−2)、
・ALU36より出力されるキャリーをラッチするCF(キャリーフラグ)54、
を含んでいる。Aレジスタ38と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に入力するように、上記選択信号により制御されるのが望ましい。
F1レジスタ40−1及びF2レジスタ40−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の値によって、制御される。
上記の第1の実施の形態に係るSIMD型マイクロプロセッサ2の動作を説明する。
先ず、「MAXS」命令時について示す。最初、Aレジスタ38の値が、ALT[2]50−2に入力され、オペランド指示されたソースレジスタの値が、ALT[1]50−1に入力され、ALU36にて比較(減算演算)される。比較結果は、「キャリー」となってALU36より出力される。演算後、Aレジスタ38には「キャリー」の値に応じて、ALT[1]50−1及びALU[2]50−2のうち大きい(即ち、MAXS命令)値が入力される。
F1レジスタ40−1にはALT[1]50−1の値が入力され、F2レジスタ40−2にはALT[2]50−2の値が入力されるように、グローバルプロセッサ4より制御される。
ディスティネーションレジスタへのデータ転送に関しては、キャリーをラッチしたCF54の値に応じてF1レジスタ40−1とF2レジスタ40−2のうちで、どちらがデータバス55にデータを出力するかが決定される。そのため、小さい(MAXS命令時)値を転送することが可能となる。
上記の説明では、ソースレジスタとディスティネーションレジスタとは別々にオペランド指示されていることが想定されている。ソースレジスタとディスティネーションとが同一のオペランド(ソースオペランドのみ)で指定されてもよい。この場合はオペランド数が少なくてすむため命令マッピング上有利である。
続いて、「MINS」命令時について示す。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の実施の形態≫
2つの比較対象データが符号無しデータの場合は、上記のように比較結果をキャリー出力によって判断することが可能である。しかし、2つの比較対象データが符号付きデータの場合には、比較結果は、ネガティブビット(ALU36の減算結果の最上位ビット)と、オーバフロービットとの、排他的論理和によって判断される必要がある。
図4は、本発明の第2の実施の形態に係るSIMD型マイクロプロセッサ2のブロック図、特に、1つのPE3部分を拡大したブロック図を示す。
図4のPEの構成によれば、符号無しデータ、符号付きデータの何れにも対応し得る。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を利用すれば、すでにソート済みのデータに対して、引き続き新たなデータが付加更新されてきた場合に、ソート処理を効率よく行うことができる。
以下において、5個のソート済みデータがあり、R0、R1、R2、R3、R4の各レジスタにそれぞれ格納され(但し、R0≧R1≧R2≧R3≧R4となっている)、更に、1個の未ソートデータが(付加)更新されてきた場合の、ソート処理について記述する。
1.Aレジスタ38に、未ソートデータをロードする。
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レジスタに格納する。
ソートバッファ(R0、R1、R2、R3、R4)の上位側(即ち、値の大きい側)に伝達すべきデータが、Aレジスタ38に残り続けるため、上記のように連続して処理を続けることが可能となっている。以上の処理は、ソートバッファの下位順から上位順側に向かって処理を行っているが、逆に上位側から下位側に向かって行っても同様であることは自明である。
≪3個のデータのソート処理について≫
以下では、本発明の第1の実施の形態若しくは第2の実施の形態に係るSIMD型マイクロプロセッサ2を利用して、3個のデータをソートする処理について説明する。
比較対象となるデータが各PE3のR0、R1、R2レジスタに格納されており、ソート後のデータが各PE3のR16、R17、R18レジスタに格納されるものとする。但し、R16≧R17≧R18となっている。
1.Aレジスタ38にR0レジスタの値をロードする。
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レジスタに格納する。
次の処理でも、上記と同様のソートが行える。
1.Aレジスタ38にR0レジスタの値をロードする。
2.Aレジスタ38とR1レジスタの値を比較し、小さい方のデータをAレジスタ38に残し、大きい方のデータをR16レジスタに格納する。
3.Aレジスタ38とR2レジスタの値を比較し、大きい方のデータをAレジスタ38に残し、小さい方のデータをR18レジスタに格納する。
4.Aレジスタ38とR16のデータを比較し、大きい方のデータをAレジスタに残し、小さい方のデータをR17に格納する。
5.Aレジスタ38のデータをR16に格納する。
従来のSIMD型マイクロプロセッサでは、6サイクル必要だったソート処理が、上記のように5サイクルで行えることがわかる。上記の処理において、
「1.Aレジスタ38にR0レジスタの値をロードする。」
という処理は、画像処理においては、必ず、ソートを行う以前に実施されているはずである。よって、(最後に)Aレジスタ38に格納されている画素データを最初のソート対象データとすることによって更に1サイクルを削減できることとなる。
≪メディアン・フィルタ処理の実施について≫
以下にて、本発明を用いて、「3×3」の画素領域でのメディアン・フィルタの処理について、説明する。
上記の場合、メディアン(中心値)は5番目のデータであるから、ソートバッファとして5個のバッファが必要であることがわかる。5個のバッファとして、ここでは、
・R16、R17、R18、R19、R20
の各レジスタを使用することにする。
また、各PE3のR0レジスタに、一番上の行の画素データが格納されており、R1レジスタに中心の画素データが格納されており、R2レジスタに一番下の画素データが格納されているとする。SIMD型マイクロプロセッサ2においては、PE3は主走査方向に展開される。また、副走査方向(下向き)の一番下の画素データ(即ち、R2レジスタのデータ)が現ラインデータとされ、それよりも上の行の画素データに関しては、FIFOメモリ等を用いるラインバッファにライン遅延させたデータを持たせることになる。ここではR0レジスタ、R1レジスタがライン遅延されているデータとなる(図5)。
1.R2レジスタのデータを、Aレジスタ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レジスタ38に残し、大きい方のデータを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レジスタ38に残す。
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レジスタの値を比較して、小さい方のデータを所望のレジスタに格納する。
図6、図7、図8及び図9において、上記のソート処理の概念図及びフロー図を順に示す。図において、「空」は、ソートバッファが空であることを、灰色に塗られた部分はソース指示(3×3の画素群)、ディスティネーション指定(R16〜R20のソートバッファ)されていることを示す。また斜線掛けされている部分はすでにデータが比較し終わっている(3×3の画素群)、すでにデータが格納されている(R16〜R20のソートバッファ)ことを示している。
上記の処理は、「1.」の処理を含めて27サイクルであり、「1.」の処理を省いても26サイクル必要である。よって、特開平11−149554号に開示される発明よりも、若干処理サイクルは多く必要となる。但し、特開平11−149554号では、ソート対象となるデータ数が自然数の積で表わされることを利用している都合上、適用できるデータ数に制限がある(3×3など)のに対して、本発明では、ソート対象のデータ数に依存せずにソート処理を行えることが利点である。
本発明に係るSIMD型マイクロプロセッサの概略の構成を示すブロック図である。 本発明に係るSIMD型マイクロプロセッサの更に詳細な構成を示すブロック図である。 本発明の第1の実施の形態に係るSIMD型マイクロプロセッサのブロック図、特に、1つのプロセッサエレメント部分を拡大したブロック図を示す。 本発明の第2の実施の形態に係るSIMD型マイクロプロセッサのブロック図、特に、1つのプロセッサエレメント部分を拡大したブロック図を示す。 画素とレジスタの対応を示す概念図である。 本発明を利用する、「3×3」の画素領域でのメディアン・フィルタのソート処理の、概念図及びフロー図(1)を示す。 本発明を利用する、「3×3」の画素領域でのメディアン・フィルタのソート処理の、概念図及びフロー図(2)を示す。 本発明を利用する、「3×3」の画素領域でのメディアン・フィルタのソート処理の、概念図及びフロー図(3)を示す。 本発明を利用する、「3×3」の画素領域でのメディアン・フィルタのソート処理の、概念図及びフロー図(4)を示す。
符号の説明
2・・・SIMD型マイクロプロセッサ、3・・・プロセッサエレメント、4グローバルプロセッサ、6・・・レジスタファイル、8・・・演算アレイ、36・・・16ビットALU、38・・・Aレジスタ、40−1・・・F1レジスタ、40−2・・・F2レジスタ、42・・・マルチプレクサ、48・・・マルチプレクサ、50−1・・・ALUラッチ[1]、50−2・・・ALUラッチ[2]、52・・・マルチプレクサ、54・・・キャリーフラグ、68・・・フラグレジスタブロック(PSR)。

Claims (1)

  1. 複数のプロセッサエレメントを有するSIMD型マイクロプロセッサにおいて、
    各プロセッサエレメント内にソートバッファレジスタを有し、
    各プロセッサエレメントの備える特定のレジスタに格納される値と、オペランド指示されたソースレジスタに格納される値との、大小比較を行う第1のインストラクションにて、
    比較の結果、大きい方のデータを該特定のレジスタに格納し、
    小さい方のデータを、ソースレジスタに格納するか若しくはソースレジスタ以外のオペランド指示されたディスティネーションレジスタに格納し、
    更に、
    各プロセッサエレメントの備える特定のレジスタに格納される値と、オペランド指示されたソースレジスタに格納される値との、大小比較を行う第2のインストラクションにて、
    比較の結果、小さい方のデータを該特定のレジスタに格納し、
    大きい方のデータを、ソースレジスタに格納するか若しくはソースレジスタ以外のオペランド指示されたディスティネーションレジスタに格納し、
    上記ソースレジスタ及び上記ディスティネーションレジスタとして上記ソートバッファレジスタが指示され、このことにより各プロセッサエレメント内にてソート処理が行われることを特徴とするSIMD型マイクロプロセッサ。
JP2006294342A 2006-10-30 2006-10-30 ソート機能を有するsimd型マイクロプロセッサ Pending JP2007102799A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006294342A JP2007102799A (ja) 2006-10-30 2006-10-30 ソート機能を有するsimd型マイクロプロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006294342A JP2007102799A (ja) 2006-10-30 2006-10-30 ソート機能を有するsimd型マイクロプロセッサ

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2001103145A Division JP3955741B2 (ja) 2001-04-02 2001-04-02 ソート機能を有するsimd型マイクロプロセッサ

Publications (1)

Publication Number Publication Date
JP2007102799A true JP2007102799A (ja) 2007-04-19

Family

ID=38029606

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006294342A Pending JP2007102799A (ja) 2006-10-30 2006-10-30 ソート機能を有するsimd型マイクロプロセッサ

Country Status (1)

Country Link
JP (1) JP2007102799A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5445469B2 (ja) * 2009-01-13 2014-03-19 日本電気株式会社 Simd型並列データ処理装置及びデータソート方法並びにプロセッシングエレメント

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5445469B2 (ja) * 2009-01-13 2014-03-19 日本電気株式会社 Simd型並列データ処理装置及びデータソート方法並びにプロセッシングエレメント

Similar Documents

Publication Publication Date Title
JP3955741B2 (ja) ソート機能を有するsimd型マイクロプロセッサ
JP4913685B2 (ja) Simd型マイクロプロセッサおよびsimd型マイクロプロセッサの制御方法
EP0539595A1 (en) Data processor and data processing method
US8069334B2 (en) Parallel histogram generation in SIMD processor by indexing LUTs with vector data element values
JP2008071130A (ja) Simd型マイクロプロセッサ
US20050257026A1 (en) Bit serial processing element for a SIMD array processor
JP2011141823A (ja) データ処理装置および並列演算装置
US7512290B2 (en) Image processing apparatus with SIMD-type microprocessor to perform labeling
US20160232641A1 (en) Method for efficient median filtering
JP2007102799A (ja) ソート機能を有するsimd型マイクロプロセッサ
JP4482356B2 (ja) Simdプロセッサを用いた画像処理方法及び画像処理装置
JP2007073010A (ja) Simd方式プロセッサ、当該simd方式プロセッサを利用する画像処理方法、及び画像処理装置
US9317474B2 (en) Semiconductor device
EP1936492A1 (en) SIMD processor with reduction unit
JP2007108913A (ja) ピーク値検出を行うsimd型マイクロプロセッサ
US9606798B2 (en) VLIW processor, instruction structure, and instruction execution method
JP4868607B2 (ja) Simd型マイクロプロセッサ
JP3837293B2 (ja) 定数選択機能を有するsimd型マイクロプロセッサ
JP2008071037A (ja) Simd型マイクロプロセッサ
JP3969580B2 (ja) データ処理装置、画像処理装置、画像形成装置、プログラム及び記憶媒体
JPH06309349A (ja) プログラム制御のプロセッサ
JP4346039B2 (ja) データ処理装置
JP2001357395A (ja) 画像処理装置およびその方法
JP2004192405A (ja) Simd型プロセッサ
WO2001052060A1 (en) A data processing device with distributed register file

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081125

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090123

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090310

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090511

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20091104