JP5463799B2 - Simd型マイクロプロセッサ - Google Patents

Simd型マイクロプロセッサ Download PDF

Info

Publication number
JP5463799B2
JP5463799B2 JP2009198016A JP2009198016A JP5463799B2 JP 5463799 B2 JP5463799 B2 JP 5463799B2 JP 2009198016 A JP2009198016 A JP 2009198016A JP 2009198016 A JP2009198016 A JP 2009198016A JP 5463799 B2 JP5463799 B2 JP 5463799B2
Authority
JP
Japan
Prior art keywords
register
instruction
data
adjacent
flag
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.)
Expired - Fee Related
Application number
JP2009198016A
Other languages
English (en)
Other versions
JP2011048735A (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.)
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 JP2009198016A priority Critical patent/JP5463799B2/ja
Publication of JP2011048735A publication Critical patent/JP2011048735A/ja
Application granted granted Critical
Publication of JP5463799B2 publication Critical patent/JP5463799B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Executing Machine-Instructions (AREA)
  • Image Processing (AREA)

Description

本発明は1つの演算命令により複数のデータ等を並列処理するSIMD(Single Instruction-stream, Multiple Data-stream)型マイクロプロセッサに関する。
近年、デジタル複写機やファクシミリ装置などの画像処理装置において、画素数を増加したり、或いはカラー対応にするなどといった画像の向上が図られている。そして、この画像の向上に伴い、処理すべきデータ数が増加している。ところで、複写機等の画像処理装置におけるデータ処理は、全ての画素に対して同じ演算処理を施すことが多い。そこで、1つの命令で複数のデータに対して同時に同じ演算処理を行うSIMD方式のマイクロプロセッサが用いられるようになっている。
図15に従来の一般的なSIMD型マイクロプロセッサを示す。図15に示したSIMD型マイクロプロセッサ101は、プロセッサエレメント部102と、グローバルプロセッサ103と、外部入出力104と、画像メモリ105と、を備えている。
プロセッサエレメント(以下、PEと呼ぶ)部102は、複数のPEから構成され、各PEはレジスタファイル106と、演算部107と、を備えている。レジスタファイル106では、PE命令で処理されるデータを保持している。PE部102に対する処理命令であるPE命令はSIMDタイプの命令であり、レジスタファイル106に保持されている複数のデータに同時に同じ処理を行う。このレジスタファイル106からのデータの読み出し/書き込みの制御はグローバルプロセッサ103からの制御によって行われる。読み出されたデータは演算部107に送られ、演算部107での演算処理後にレジスタファイル106に書き込まれる。また、レジスタファイル106はプロセッサ外部からのアクセスが可能であり、グローバルプロセッサ103の制御とは別に外部から特定のレジスタの読み出し/書き込みが行われる。演算部107では、PE命令の演算処理が行われる。処理の制御はすべてグローバルプロセッサ103から行われる。
グローバルプロセッサ(以下、GPと呼ぶ)103は、いわゆるSISD(Single Instruction-stream, Single Data-stream)方式のプロセッサであり、プログラムRAMとデータRAMを内蔵し、プログラムを解読し各種制御信号を生成する。この制御信号は内蔵する各種ブロックの制御以外にもレジスタファイル106、演算部107へも供給される。また、GP103内の演算器等に対する命令であるGP命令実行時は内蔵する汎用レジスタ、ALU(算術論理演算器)などを使用して各種演算処理、プログラム制御処理を行う。
外部入出力104は、画像メモリ105から処理する元の画像データを読み出しPE部102のレジスタファイル106に書き込む、あるいはレジスタファイル106から処理後の画像データを読み出し画像メモリ105に書き込む装置である。
画像メモリ105は、処理する元の画像データを記憶、処理後の画像データを記憶する記憶装置である。
上述した構成のSIMD型マイクロプロセッサ101における画像処理において、2値化された画像データがある場合に、0と1の境界を判定して、その結果を記憶させておき、後の処理で使用する場合がある。例えば、ラベリング処理の中の一部がこれに該当する。2値化された画像データが並んでいる場合に、0と1の境界を判定してその結果を格納するまでをSIMD型マイクロプロセッサ101で行う場合の従来手法について以下に説明する。
図16はSIMD型マイクロプロセッサ101のPE部102内の構成の一部を抜粋して示している。レジスタファイル106は、16ビットのレジスタR0〜R15の16本を備えており、算術演算器(ALU)110への経路を持つ。レジスタファイル106からのデータは、PEシフト108により自身のレジスタファイル106からのデータおよび隣接するPEのレジスタファイル106からのデータおよび2つ隣のPEのレジスタファイル106からのデータのうちいずれかから選択される。PEシフト108後のデータは、パイプラインレジスタ109に格納される。次に一旦パイプラインレジスタ109に格納されたデータがALU110で演算され、アキュムレータである結果格納レジスタ(Aレジスタ)111に格納される。さらに、Z1レジスタ112とZ2レジスタ113は、ALU110での演算結果がゼロとなった場合に1を格納するゼロフラグレジスタである。Tレジスタ115は、Z1レジスタ112とZ2レジスタ113との論理演算結果を格納する条件レジスタである。図では省略しているが、Aレジスタ111から、自身のレジスタファイル106および隣接PEのレジスタファイル106および2つ隣のPEのレジスタファイル106のいずれかに書き込むことが可能となっている。
次に、図16に示したような構成になっているSIMD型マイクロプロセッサ101で、例えば図17上段に示す0と1で2値化された画像データがあり、このときの0と1の境界を判定してその結果を格納するまでの動作を説明する。画像データは、各PEのレジスタR0に格納されており、判定結果は条件レジスタであるTレジスタ115に格納するものとする。このような動作は、図18に示す複数のPE命令によって実施される。
まず命令(1)で、各PEが自身のレジスタR0の値を即値0と比較し、そのときALU110での減算結果がゼロとなる場合にZ1レジスタ112に1が格納される。次に命令(2)で、各PEが右隣のPEのレジスタR0の値を即値0と比較し、そのときALU110での減算結果がゼロとなる場合にZ2レジスタ113に1が格納される。最後に命令(3)によって、命令(1)及び命令(2)で求めたZ1レジスタ112とZ2レジスタ113との排他的論理和演算を論理回路114にて行い、その結果をTレジスタ115に格納する。これにより、0と1の境界の判定結果を得ることができた(図17下段)。
図18に示した命令により、3マシンサイクルで、2値化画像データの境界を求めることができる。なお、上述したSIMD型マイクロプロセッサ101では、1マシンサイクルで、比較演算などを実施して、その結果のフラグまでを決定できるものである。その後に、さらなる論理演算を実施して、条件レジスタやフラグレジスタ等を更新するのは別の命令で実行する必要がある。
また、画像処理では、隣接する数画素(3〜5画素)と比較して、その中の最大値を求めて、その値を特徴量とすることがある。次に、隣接する画素と含めて3画素の中の最大値を求める処理をSIMD型マイクロプロセッサ101で行う場合を例に挙げ説明する。
図19は、図16と同様に、SIMD型マイクロプロセッサ101のPE部102内の構成の一部を抜粋して示している。図19では、Z1レジスタ112、Z2レジスタ113、論理回路114、Tレジスタ115に代えて、ALU110の大小比較演算の結果を示す大小比較演算フラグを格納するCレジスタ116が追加されている。
次に、図19に示したような構成になっているSIMD型マイクロプロセッサ101で、例えば図20上段に示す画像データがあり、このうちPE4を対象画像データとして、その両隣の画像データとの3画素中での最大値を求める場合を例に挙げる。画像データは、符号なしの値と考え、各PEのレジスタR0に格納されているとする。そのとき、最大値は図21に示す命令を実施することで求められる。まず命令(1)で、各PEのAレジスタ111にレジスタR0の画像データを格納する。次に命令(2)によって、各PEのAレジスタ111のデータとその左隣(PE番号の小さい方)のレジスタR0のデータと比較する。このとき、「Aレジスタ111のデータ<その左隣のPEのレジスタR0のデータ」が成立するならば、Cレジスタ116に1が格納される。これはALU演算時のボローフラグがCレジスタ116に入力されることと同じである。「Aレジスタ111のデータ<その左隣のPEのレジスタR0のデータ」が成立しないならば、Cレジスタ116に0が格納される。次に命令(3)によって、対象PEのAレジスタ111を、Cレジスタ116が1ならば左隣のPEのレジスタR0のデータで更新し、Cレジスタ116が0ならばAレジスタ111のデータをそのままとする。
次に命令(4)によって、左隣の場合と同様に、各PEのAレジスタ111のデータとその右隣(PE番号の大きい方)のレジスタR0のデータと比較する。このとき、「Aレジスタ111のデータ<その右隣のレジスタR0のデータ」が成立するならば、Cレジスタ116に1が格納される。「Aレジスタ111のデータ<その右隣のレジスタR0のデータ」が成立しないならば、Cレジスタ116に0が格納される。次に命令(5)によって、左隣の場合と同様に、対象PEのAレジスタ111を、Cレジスタ116が1ならば右隣のPEのレジスタR0のデータで更新し、Cレジスタが0ならばAレジスタ111のデータをそのままとする。図21に示した命令により、Aレジスタ111に画像データを設定してから、命令(2)から(5)までの合わせて4マシンサイクルで、3つのデータの最大値を求めている。
また、上述した方法以外に、例えば、特許文献1に記載のSIMD型マイクロプロセッサに提案された構成でも隣接する数画素の最大値を求めることができる。
SIMD型マイクロプロセッサにおける画像処理において、隣接する画素データとの演算を必要とする処理は、上述した処理も含め数多く存在する。そのために、できるだけ高速に大量の画像データを処理する場合には、このような処理をできる限り少ない命令数、即ちできるだけ少ないマシンサイクルで実施できることが求められている。
特許文献1に記載されたSIMD型マイクロプロセッサは、マシンサイクル数を削減することはできるが、選択ビットや補助ビットをプロセッサエレメントに設け、これらを予め設定する必要があり、これらのビットパターンが複数ある場合はその分を設定するサイクル数や格納領域も必要となる。さらに、命令によって選択ビットや補助ビットの値を変更するためには、変更を指示するための制御信号等も設ける必要がある。
本発明はかかる問題を解決することを目的としている。
すなわち、本発明は、隣接する画素データとの演算を必要とする処理を行う際に、簡単な構成で従来よりも少ないマシンサイクルで実行することができるSIMD型マイクロプロセッサを提供することを目的としている。
請求項1に記載された発明は、データ格納手段、演算手段、演算結果格納手段、演算結果フラグが設けられたプロセッサエレメントを複数個備えて構成されるプロセッサエレメント部と、プログラムを解読しプロセッサエレメント部に制御信号を供給するグローバルプロセッサと、を備えたSIMD型マイクロプロセッサにおいて、前記プロセッサエレメントが、条件付き命令を実行する際に、条件として隣接する前記プロセッサエレメントの前記演算結果フラグを参照する参照手段と、前記参照手段において参照した結果、自身の前記演算結果格納手段に格納されている演算データと、隣接する前記プロセッサエレメントの前記演算結果格納手段に格納されている演算データと、を選択して自身の前記演算結果格納手段に格納する選択手段と、前記演算結果フラグとして、現在の命令による演算結果フラグと、一つ前の命令による演算結果フラグと、が設けられ、前記参照手段が、自プロセッサエレメントの前記現在の命令による演算結果フラグと、前記一つ前の命令による演算結果フラグと、隣接する前記プロセッサエレメントの前記現在の命令による演算結果フラグと、前記一つ前の命令による演算結果フラグと、のうち、少なくとも3つ以上の演算結果フラグを参照して、前記選択手段に演算データを選択させる、ことを特徴とするSIMD型マイクロプロセッサである。
請求項に記載された発明は、請求項に記載された発明において、前記参照手段が、自プロセッサエレメントの前記現在の命令による演算結果フラグまたは前記一つ前の命令による演算結果フラグのうちいずれか一方と、隣接する前記プロセッサエレメントの前記現在の命令による演算結果フラグと、前記一つ前の命令による演算結果フラグと、を参照していることを特徴とする。
請求項1に記載の発明によれば、PE部で条件付き命令を実行する際に、条件として隣接するPEの演算結果フラグを参照するための参照手段が設けられているので、隣接する左右の演算結果フラグを参照することが可能となり、隣接するPEの演算結果フラグを何等かの条件として使用するような処理がある場合において、全体の処理のマシンサイクル数を削減することができる。
また、参照手段の参照の結果、自身の演算結果格納手段に格納されている演算データと、隣接するPEの演算結果格納手段に格納されている演算データと、を選択して自身の演算結果格納手段に格納する選択手段が設けられているので、条件付き命令の条件として使用できる、隣接する左右の演算結果フラグを参照して、自PEの演算結果格納手段もしくは、隣接するPEの演算結果格納手段の値を選択して、自PEの演算結果格納手段に格納することができる。
また、参照手段が、自プロセッサエレメントの現在の命令による演算結果フラグと、一つ前の命令による演算結果フラグと、隣接するプロセッサエレメントの現在の命令による演算結果フラグと、一つ前の命令による演算結果フラグと、のうち、少なくとも3つ以上の演算結果フラグを参照して、選択手段を制御しているので、自PEの演算結果格納手段と、隣接または近傍のPEの演算結果格納手段とのうちの最大値を求めるといった複数のPEの演算結果を用いた動作を従来よりも少ないマシンサイクルで行うことができる。
請求項に記載の発明によれば、参照手段が、自プロセッサエレメントの現在の命令による演算結果フラグまたは一つ前の命令による演算結果フラグのうちいずれか一方と、隣接するプロセッサエレメントの現在の命令による演算結果フラグと、一つ前の命令による演算結果フラグと、を参照しているので、自PEの演算結果格納手段と、隣接または近傍のPEの演算結果格納手段とのうちの最大値を求める動作を従来よりも少ないマシンサイクルで行うことができる。
本発明の第1の実施形態にかかるSIMD型マイクロプロセッサのブロック図である。 図1に示したSIMD型マイクロプロセッサのプロセッサエレメント部内の構成の一部を抜粋した構成図である。 画像データ0と1の境界を検出する動作の説明図である。 図1に示したSIMD型マイクロプロセッサで画像データの0と1の境界を判定するプログラムである。 本発明の第2の実施形態にかかるSIMD型マイクロプロセッサのプロセッサエレメント部内の構成の一部を抜粋した構成図である。 最大値を求める画像データとそれらの画像データを比較して得られるフラグを示した説明図である。 図5に示したSIMD型マイクロプロセッサで自身とその両隣の画像データとの3画素中での最大値を求めるプログラムである。 フラグレジスタの組み合わせによる選択されるAレジスタを示した真理値表である。 図5に示しされたプロセッサエレメント部の論理回路の回路図及び真理値表である。 本発明の第3の実施形態にかかるSIMD型マイクロプロセッサのプロセッサエレメント部内の構成の一部を抜粋した構成図である。 最大値を求める画像データとそれらの画像データを比較して得られるフラグを示した説明図である。 図10に示したSIMD型マイクロプロセッサで自身とその両隣の画像データとの3画素中での最大値を求めるプログラムである。 フラグレジスタの組み合わせによる選択されるAレジスタを示した真理値表である。 図10に示しされたプロセッサエレメント部の論理回路の回路図及び真理値表である。 従来のSIMD型マイクロプロセッサのブロック図である。 図15に示したSIMD型マイクロプロセッサのプロセッサエレメント部内の構成の一部を抜粋した構成図である。 画像データ0と1の境界を検出する動作の説明図である。 図15に示したSIMD型マイクロプロセッサで画像データの0と1の境界を判定するプログラムである。 図15に示したSIMD型マイクロプロセッサのプロセッサエレメント部内の構成の一部を抜粋した構成図である。 自身と隣接するPEとから最大値を求める動作の説明図である。 図19に示したSIMD型マイクロプロセッサで自身とその両隣の画像データとの3画素中での最大値を求めるプログラムである。
[第1実施形態]
以下、本発明の第1の実施形態を、図1ないし図4を参照して説明する。図1は、本発明の第1の実施形態にかかるSIMD型マイクロプロセッサのブロック図である。図2は、図1に示したSIMD型マイクロプロセッサのプロセッサエレメント部内の構成の一部を抜粋した構成図である。図3は、画像データ0と1の境界を検出する動作の説明図である。図4は、図1に示したSIMD型マイクロプロセッサで画像データの0と1の境界を判定するプログラムである。
図1に本発明の第1の実施形態にかかるSIMD型マイクロプロセッサ1を示す。図1に示したSIMD型マイクロプロセッサ1は、プロセッサエレメント(PE)部2と、グローバルプロセッサ(GP)3と、外部入出力4と、画像メモリ5と、を備えている。
PE部2は、複数のPEから構成され、各PEはデータ格納手段としてのレジスタファイル6と、演算部7と、を備えている。レジスタファイル6は、PE命令で処理されるデータを保持している。PE部2に対する処理命令であるPE命令はSIMDタイプの命令であり、レジスタファイル6に保持されている複数のデータに同時に同じ処理を行う。このレジスタファイル6からのデータの読み出し/書き込みの制御はGP3からの制御によって行われる。読み出されたデータは演算部7に送られ、演算部7での演算処理後にレジスタファイル6に書き込まれる。また、レジスタファイル6はプロセッサ外部からのアクセスが可能であり、GP3の制御とは別に外部から特定のレジスタの読み出し/書き込みが行われる。演算部7は、PE命令の演算処理が行われる。処理の制御はすべてGP3から行われる。また、演算部7は、各PEの演算部7がアレイ状に構成されている。
GP3は、いわゆるSISD(Single Instruction-stream, Single Data-stream)方式のプロセッサであり、プログラムRAMとデータRAMを内蔵し、プログラムを解読し各種制御信号を生成する。この制御信号を内蔵する各種ブロックの制御以外にもレジスタファイル6、演算部7へも供給される。また、GP3内の演算器等に対する命令であるGP命令実行時は内蔵する汎用レジスタ、ALU(算術論理演算器)などを使用して各種演算処理、プログラム制御処理を行う。
外部入出力4は、画像メモリ5から処理する元の画像データを読み出しPE部2のレジスタファイル6に書き込む、あるいはレジスタファイル6から処理後の画像データを読み出し画像メモリ5に書き込む装置である。
画像メモリ5は、処理する元の画像データを記憶、処理後の画像データを記憶する記憶装置である。
図2はSIMD型マイクロプロセッサ1のPE部2内の構成の一部を抜粋して示している。図2では、PE3、PE4、PE5の3つのPEを抜粋している。また、PE3、PE4、PE5と表示した数字部分はPE番号を示し、本実施形態では、PE4から見て、PE3は左隣に配置、PE5は右隣に配置されているものとする。
レジスタファイル6は、16ビットのレジスタR0〜R15の16本を備えており、後述する演算部7の算術演算器(ALU)10への経路を持つ。
演算部7は、PEシフト8と、パイプラインレジスタ9、演算手段としてのALU10と、演算結果格納手段としての結果格納レジスタ11と、演算結果フラグとしてのZ1レジスタ12と、参照手段としての論理回路13と、Tレジスタ14と、を備えている。
レジスタファイル6からのデータは、PEシフト8により自身のレジスタファイル6からのデータおよび隣接するPEのレジスタファイル6および2つ隣のPEのレジスタファイル6からのデータのうちいずれかから選択される。PEシフト8後のデータは、パイプラインレジスタ9に格納される。次に一旦パイプラインレジスタ9に格納されたデータがALU10で演算され、アキュムレータである結果格納レジスタ(Aレジスタ)11に格納される。Z1レジスタ12は、ALU10での演算結果がゼロとなった場合に1を格納するゼロフラグレジスタである。論理回路13は自PEのZ1レジスタ12の値と隣接するPE(本実施形態では右隣のPE)のZ1レジスタ12の値との論理演算を行う。Tレジスタ14は、論理回路13の結果を格納する条件レジスタである。図では省略しているが、Aレジスタ11から、自身のレジスタファイル6および隣接PEのレジスタファイル6および2つ隣のPEのレジスタファイル6に書き込むことが可能となっている。
次に、従来技術において例に挙げた画像処理を、図1や図2に示した構成で実施した場合を説明する。図3上段に示す画像データは図17と同じデータである。この画像データの0と1の境界を判定してその結果を格納するまでを説明する。画像データは、各PEのレジスタR0に格納されており、判定結果は条件レジスタであるTレジスタ14に格納するものとする。
このような動作は、図4に示す複数のPE命令によって実施される。まず命令(1)で、各PEが自身のレジスタR0の値を即値0と比較し、そのときALU10での減算結果がゼロとなる場合にZ1レジスタ12に1が格納される。そして、命令(2)で、自PEのZ1レジスタ12と右隣のPEのZ1レジスタの排他的論理和を論理回路13で演算し、その結果を自PEのTレジスタ14に格納する。これにより、0と1の境界の判定結果を得ることができた(図3下段)。つまり、本実施形態では命令(2)が条件付き命令に該当し、命令実行時に隣接するPEの演算結果フラグを直接参照している。そして、本実施形態では、2マシンサイクルで画像データの0と1の境界を判定し結果を格納することができる。
なお、本実施形態では図2に示したように右隣のPEのZ1レジスタを参照していたが、左隣を参照してもよい。或いは参照する方向を左右切り替えられるようにしてもよい。
本実施例によれば、PE部2で条件付き命令を実行する際に、条件として隣接するPEのZ1レジスタ12を参照するための論理回路13が設けられているので、隣接する左右のZ1レジスタ12を参照することが可能となり、隣接するPEのZ1レジスタ12を用いて0と1の境界を検出する処理において、従来の3マシンサイクルから2マシンサイクルへ1マシンサイクル削減することができる。
[第2実施形態]
次に、本発明の第2の実施形態を図5ないし図9を参照して説明する。なお、前述した第1の実施形態と同一部分には、同一符号を付して説明を省略する。図5は、本発明の第2の実施形態にかかるSIMD型マイクロプロセッサのプロセッサエレメント部内の構成の一部を抜粋した構成図である。図6は、最大値を求める画像データとそれらの画像データを比較して得られるフラグを示した説明図である。図7は、図5に示したSIMD型マイクロプロセッサで自身とその両隣の画像データとの3画素中での最大値を求めるプログラムである。図8は、フラグレジスタの組み合わせによる選択されるAレジスタを示した真理値表である。図9は、図5に示されたプロセッサエレメント部の論理回路の回路図及び真理値表である。
本実施形態では、第1の実施形態に対して、Z1レジスタ12と、論理回路13と、Tレジスタ14を削除して、選択手段としてのセレクタ15と、現在の命令による演算結果フラグとしてのC1レジスタ16と、一つ前の命令による演算結果フラグとしてのC2レジスタ17と、参照手段としての論理回路18と、が追加されている。なお、Z1レジスタ12と、論理回路13と、Tレジスタ14は削除せずに残しても良い。
本実施形態では、Aレジスタ11の手前にセレクタ15があり、この入力として、自身のALU10の演算結果(自身のAレジスタ11の値)の他に、左右両隣のPEのAレジスタ11の値を選択することが可能となっている。即ち、自プロセッサエレメントの演算結果格納手段に格納されている演算データと、隣接する前記プロセッサエレメントの演算結果格納手段に格納されている演算データと、を選択して自プロセッサエレメントの演算結果格納手段に格納している。
C1レジスタ16は、ALU10での大小比較演算結果を示す大小比較演算結果フラグレジスタである。C2レジスタ17は、一つ前の命令による大小比較演算結果を示す大小比較演算結果フラグレジスタである。論理回路18は、自PEのC2レジスタ17の値と、隣接するPEの(本実施形態では右隣のPE)のC1レジスタ16およびC2レジスタ17の値との論理演算を行う。即ち、自プロセッサエレメントの一つ前の命令による演算結果フラグと、隣接するプロセッサエレメントの現在の命令による演算結果フラグと、一つ前の命令による演算結果フラグと、を参照している。
次に、図5に示したような構成になっているSIMD型マイクロプロセッサ1で、例えば図6上段に示す画像データがあり、このうちPE4を対象画像データとして、その両隣の画像データとの3画素中での最大値を求める場合の動作を説明する。画像データは、符号なしの値と考え、各PEのレジスタR0に格納されているとする。そのとき、最大値は図7に示す命令を実施することで求められる。まず命令(1)で、各PEのAレジスタ11にレジスタR0の画像データを格納する。次に命令(2)で比較演算を実施し、フラグを更新している。この命令によって、各PEのAレジスタ11のデータとその左隣(PE番号の小さい方)のレジスタR0のデータと比較する。このとき、「Aレジスタ11のデータ<その左隣のレジスタR0のデータ」が成立するならば、その結果C1レジスタ16に1が格納される。これはALU演算時のボローフラグがC1レジスタ16に入ることと同じである。「Aレジスタ11のデータ<その左隣のレジスタR0のデータ」が成立しないならば、C1レジスタ16に0が格納される。
次に、命令(3)でも比較演算を実施し、フラグを更新している。この命令によって、各PEのAレジスタ11のデータとその2つ左隣(PE番号の小さい方)のレジスタR0のデータと比較する。このときも命令(2)と同様に、「Aレジスタ11のデータ<その2つ左隣のレジスタR0のデータ」が成立するならば、その結果C1レジスタ16に1が格納される。「Aレジスタ11のデータ<その2つ左隣のレジスタR0のデータ」が成立しないならばC1レジスタ16に0が格納される。同時にC1レジスタ16からC2レジスタ17へ前回命令(演算)のC1レジスタ16の結果をC2レジスタ17に退避する。命令(2)と(3)により、C1レジスタ16とC2レジスタ17には、それぞれ、2つ左隣のレジスタR0のデータとの比較結果フラグと、左隣のレジスタR0のデータとの比較結果フラグが格納された。最後に命令(4)では、対象PEのAレジスタ11を、自PEもしくは、左右のPEの3つの中の最大値であるAレジスタ11のデータで更新する。このとき、最大値は、隣接PEのC1レジスタ16とC2レジスタ17の結果を論理回路18が参照して決定する。この論理の真理値表を図8に、論理回路18の回路図を図9に示す。つまり、本実施形態では命令(4)が条件付き命令に該当し、命令実行時に演算結果フラグを参照している。
図8は上述したようにPE4を対象画像データ(自PE)とした場合の真理値表である。A選択とはAレジスタのうちどれが選択されるかを示している。状態無しとは、その状態がとり得ないことを示している。例えば、C2(PE4)が0、C2(PE5)が0、C1(PE5)が1の組み合わせは、PE3<PE4<PE5かつPE3>PE5であることを示しており、このような状態はとり得ない状態であることが分かる。また、図9の回路において、出力TXは勿論セレクタ15の選択制御信号である。
本実施形態で図6の画像データを図7のプログラムで処理した場合、左隣のPE3のデータが最大値と求まる。そして、Aレジスタ11に画像データを設定してから、命令(2)、命令(3)、命令(4)の合わせて3マシンサイクルで、3つのデータの最大値を求めることが可能となる。
なお、C1レジスタ16とC2レジスタ17は、このようにパイプライン構成に限られることは無く、C2レジスタに一つ前の演算結果によるフラグを格納できれば自由に構成してよい。
本実施形態によれば、右隣のPEのC1レジスタ16の値と、C2レジスタ17の値と、自PEのC2レジスタ17の値と、を参照して、セレクタ15を制御しているので、自PEのAレジスタ11と、隣接PEのAレジスタ11とのうちの最大値を求める動作を従来の4マシンサイクルから3マシンサイクルへ1マシンサイクル削減することができる。
また、上述した実施形態では右隣のPEのC1レジスタおよびC2レジスタ(演算結果フラグ)のみを参照していたが、左隣のPEのC1レジスタおよびC2レジスタを参照してもよい。また、左右のPEのC1レジスタまたはC2レジスタを参照しても実現可能である。例えば、上述した実施形態で命令(2)を左隣のPEのレジスタR0と比較するのではなく右隣のPEのレジスタR0と比較するように変更する。すると、最大値を求める際に必要な演算結果フラグが左隣のPEのC2レジスタと自PEのC2レジスタと右隣のPEのC1レジスタとなる。このようにしても上述した実施形態と同様に最大値を求めることができる。
[第3実施形態]
次に、本発明の第3の実施形態を図10ないし図14を参照して説明する。なお、前述した第1、第2の実施形態と同一部分には、同一符号を付して説明を省略する。図10は、本発明の第3の実施形態にかかるSIMD型マイクロプロセッサのプロセッサエレメント部内の構成の一部を抜粋した構成図である。図11は、最大値を求める画像データとそれらの画像データを比較して得られるフラグを示した説明図である。図12は、図10に示したSIMD型マイクロプロセッサで自身とその両隣の画像データとの3画素中での最大値を求めるプログラムである。図13は、フラグレジスタの組み合わせによる選択されるAレジスタを示した真理値表である。図14は、図10に示されたプロセッサエレメント部の論理回路の回路図及び真理値表である。
本実施形態では、第2の実施形態に対して、参照手段としての論理回路18´に入力される自PE側のレジスタがC2レジスタ17からC1レジスタ16に変更されている点が異なる。即ち、自プロセッサエレメントの現在の命令による演算結果フラグと、隣接するプロセッサエレメントの現在の命令による演算結果フラグと、一つ前の命令による演算結果フラグと、を参照している。
次に、図10に示したような構成になっているSIMD型マイクロプロセッサ1で、例えば図11上段に示す画像データがあり、このうちPE4を対象画像データとして、その両隣の画像データとの3画素中での最大値を求める場合の動作を説明する。画像データは、符号なしの値と考え、各PEのレジスタR0に格納されているとする。そのとき、最大値は図12に示す命令を実施することで求められる。図12の命令列における図7との違いは、命令(2)と命令(3)の命令順が入れ替わったことのみである。まず命令(1)で、各PEのAレジスタ11にレジスタR0の画像データを格納する。次に命令(2)で比較演算を実施し、フラグを更新している。この命令によって、各PEのAレジスタ11のデータとその2つ左隣(PE番号の小さい方)のレジスタR0のデータと比較する。このとき、「Aレジスタ11のデータ<その2つ左隣のレジスタR0のデータ」が成立するならば、その結果C1レジスタ16に1が格納される。これはALU演算時のボローフラグがC1レジスタ16に入ることと同じである。「Aレジスタ11のデータ<その2つ左隣のレジスタR0のデータ」が成立しないならば、C1レジスタ16に0が格納される。
次に、命令(3)でも比較演算を実施し、フラグを更新している。この命令によって、各PEのAレジスタ11のデータとその左隣(PE番号の小さい方)のレジスタR0のデータと比較する。このときも命令(2)と同様に、「Aレジスタ11のデータ<その左隣のレジスタR0のデータ」が成立するならば、その結果C1レジスタ16に1が格納される。「Aレジスタ11のデータ<その左隣のレジスタR0のデータ」が成立しないならばC1レジスタ16に0が格納される。同時にC1レジスタ16からC2レジスタ17へ前回命令(演算)のC1レジスタ16の結果をC2レジスタ17に退避する。命令(2)と(3)により、C1レジスタとC2レジスタには、それぞれ、左隣のレジスタR0のデータとの比較結果フラグと、2つ左隣のレジスタR0のデータとの比較結果フラグが格納された。最後に命令(4)では、対象PEのAレジスタ11を、自PEもしくは、左右のPEの3つの中の最大値であるAレジスタ11のデータで更新する。このとき、最大値は、隣接PEのC1レジスタとC2レジスタの結果を論理回路18´が参照して決定する。この論理の真理値表を図13に、論理回路18の回路図を図14に示す。
本実施形態で図11の画像データを図12のプログラムで処理した場合、左隣のPE3のデータが最大値と求まる。そして、Aレジスタ11に画像データを設定してから、命令(2)、命令(3)、命令(4)の合わせて3マシンサイクルで、3つのデータの最大値を求めることが可能となる。
本実施形態によれば、右隣のPEのC1レジスタ16の値と、C2レジスタ17の値と、自PEのC1レジスタ16の値と、を参照して、セレクタ15を制御しているので、自PEのAレジスタ11と、隣接PEのAレジスタ11とのうちの最大値を求める動作を従来の4マシンサイクルから3マシンサイクルへ1マシンサイクル削減することができる。
また、上述した第2、第3の実施形態では、自PEと近傍のPE(自PEを中心として左右2PE)との5つのデータの中の最大値に関しても、上述した動作を2度繰り返し実行すればよく、6マシンサイクルで可能である。また、最小値を求めたい場合も同様に実施できる。
なお、本発明は上記実施形態に限定されるものではない。即ち、本発明の骨子を逸脱しない範囲で種々変形して実施することができる。
1 SIMD型マイクロプロセッサ
2 プロセッサエレメント部
3 グローバルプロセッサ
6 レジスタファイル(データ格納手段)
7 演算部
10 ALU(演算手段)
11 結果格納レジスタ(演算結果格納手段)
12 Z1レジスタ(演算結果フラグ)
13 論理回路(参照手段)
14 Tレジスタ
15 セレクタ(選択手段)
16 C1レジスタ(演算結果フラグ)
17 C2レジスタ(一つ前の命令による演算結果フラグ)
18 論理回路(参照手段)
18´ 論理回路(参照手段)
特開2002−229962号公報

Claims (2)

  1. データ格納手段、演算手段、演算結果格納手段、演算結果フラグが設けられたプロセッサエレメントを複数個備えて構成されるプロセッサエレメント部と、プログラムを解読しプロセッサエレメント部に制御信号を供給するグローバルプロセッサと、を備えたSIMD型マイクロプロセッサにおいて、
    前記プロセッサエレメントが、
    条件付き命令を実行する際に、条件として隣接する前記プロセッサエレメントの前記演算結果フラグを参照する参照手段と、
    前記参照手段において参照した結果、自身の前記演算結果格納手段に格納されている演算データと、隣接する前記プロセッサエレメントの前記演算結果格納手段に格納されている演算データと、を選択して自身の前記演算結果格納手段に格納する選択手段と、
    前記演算結果フラグとして、現在の命令による演算結果フラグと、一つ前の命令による演算結果フラグと、
    が設けられ
    前記参照手段が、自プロセッサエレメントの前記現在の命令による演算結果フラグと、
    前記一つ前の命令による演算結果フラグと、隣接する前記プロセッサエレメントの前記現在の命令による演算結果フラグと、前記一つ前の命令による演算結果フラグと、のうち、少なくとも3つ以上の演算結果フラグを参照して、前記選択手段に演算データを選択させる、
    ことを特徴とするSIMD型マイクロプロセッサ。
  2. 前記参照手段が、自プロセッサエレメントの前記現在の命令による演算結果フラグまたは前記一つ前の命令による演算結果フラグのうちいずれか一方と、隣接する前記プロセッサエレメントの前記現在の命令による演算結果フラグと、前記一つ前の命令による演算結果フラグと、を参照していることを特徴とする請求項に記載のSIMD型マイクロプロセッサ。
JP2009198016A 2009-08-28 2009-08-28 Simd型マイクロプロセッサ Expired - Fee Related JP5463799B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009198016A JP5463799B2 (ja) 2009-08-28 2009-08-28 Simd型マイクロプロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009198016A JP5463799B2 (ja) 2009-08-28 2009-08-28 Simd型マイクロプロセッサ

Publications (2)

Publication Number Publication Date
JP2011048735A JP2011048735A (ja) 2011-03-10
JP5463799B2 true JP5463799B2 (ja) 2014-04-09

Family

ID=43834957

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009198016A Expired - Fee Related JP5463799B2 (ja) 2009-08-28 2009-08-28 Simd型マイクロプロセッサ

Country Status (1)

Country Link
JP (1) JP5463799B2 (ja)

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08212168A (ja) * 1995-02-03 1996-08-20 Nippon Steel Corp アレイプロセッサ
JP3442225B2 (ja) * 1996-07-11 2003-09-02 株式会社日立製作所 演算処理装置
JP3099290B2 (ja) * 1997-10-03 2000-10-16 啓介 進藤 マルチスレッドプログラムを使用する情報処理装置
JP4020804B2 (ja) * 2002-03-06 2007-12-12 松下電器産業株式会社 データ処理装置
JP4698242B2 (ja) * 2004-02-16 2011-06-08 パナソニック株式会社 並列演算プロセッサ、並列演算プロセッサの動作を制御する制御プログラム及び制御方法、並びに並列演算プロセッサを搭載した画像処理装置
JP2006099719A (ja) * 2004-08-30 2006-04-13 Sanyo Electric Co Ltd 処理装置
JP4277042B2 (ja) * 2005-03-31 2009-06-10 パナソニック株式会社 演算処理装置
JP2008071130A (ja) * 2006-09-14 2008-03-27 Ricoh Co Ltd Simd型マイクロプロセッサ
JP2010033426A (ja) * 2008-07-30 2010-02-12 Ricoh Co Ltd Simd型マイクロプロセッサおよび演算方法

Also Published As

Publication number Publication date
JP2011048735A (ja) 2011-03-10

Similar Documents

Publication Publication Date Title
JP4913685B2 (ja) Simd型マイクロプロセッサおよびsimd型マイクロプロセッサの制御方法
JP2008071130A (ja) Simd型マイクロプロセッサ
EP3622389B1 (en) Circuit to perform dual input value absolute value and sum operation
JP4478050B2 (ja) Simd型マイクロプロセッサ及びデータ処理方法
US9354893B2 (en) Device for offloading instructions and data from primary to secondary data path
KR102000894B1 (ko) 이미지 프로세서용 다기능 실행 레인
JP5463799B2 (ja) Simd型マイクロプロセッサ
JP4868607B2 (ja) Simd型マイクロプロセッサ
US9317474B2 (en) Semiconductor device
JP2010033426A (ja) Simd型マイクロプロセッサおよび演算方法
JP4901891B2 (ja) 画像処理プロセッサ
JP3971543B2 (ja) Simd型プロセッサ
JP4442905B2 (ja) 画像データの処理方法
JP4408113B2 (ja) 信号処理方法
JP4516495B2 (ja) Simd型マイクロプロセッサにおけるデータ処理方法
JP4708387B2 (ja) アドレスデータ生成装置及びメモリアドレッシング方法
JP4442907B2 (ja) Simd型プロセッサ
JP2008071037A (ja) Simd型マイクロプロセッサ
JP3969580B2 (ja) データ処理装置、画像処理装置、画像形成装置、プログラム及び記憶媒体
JP4933462B2 (ja) 画像処理方法
JP5369669B2 (ja) Simd型マイクロプロセッサ
JP3895267B2 (ja) Simdプロセッサ
JP5055393B2 (ja) Simd型マイクロプロセッサ
JP4346039B2 (ja) データ処理装置
JP2009055291A (ja) 動き検出回路

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120612

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130917

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131001

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131202

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140106

LAPS Cancellation because of no payment of annual fees