JP4478050B2 - Simd型マイクロプロセッサ及びデータ処理方法 - Google Patents

Simd型マイクロプロセッサ及びデータ処理方法 Download PDF

Info

Publication number
JP4478050B2
JP4478050B2 JP2005080548A JP2005080548A JP4478050B2 JP 4478050 B2 JP4478050 B2 JP 4478050B2 JP 2005080548 A JP2005080548 A JP 2005080548A JP 2005080548 A JP2005080548 A JP 2005080548A JP 4478050 B2 JP4478050 B2 JP 4478050B2
Authority
JP
Japan
Prior art keywords
data
register
processor element
arrangement
pixel
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
JP2005080548A
Other languages
English (en)
Other versions
JP2006260479A (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 JP2005080548A priority Critical patent/JP4478050B2/ja
Priority to US11/377,521 priority patent/US20060236075A1/en
Publication of JP2006260479A publication Critical patent/JP2006260479A/ja
Application granted granted Critical
Publication of JP4478050B2 publication Critical patent/JP4478050B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8015One dimensional arrays, e.g. rings, linear arrays, buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Image Processing (AREA)

Description

本発明は、1つの演算命令により複数の画像データ等を並列処理するSIMD(Single Instruction−stream Multiple Data−stream)型マイクロプロセッサ、及び当該SIMD型マイクロプロセッサを利用して行うデータ処理方法に関する。
デジタル複写機などで扱われる画像データは、通常、2次元に配置されたデータの集合体である。例えば、図13(1)に示す人物の画像は、水平方向にX個(Xは自然数)、垂直方向にY個(Yは自然数)のデータの配置により形成されているものとすることができる。図13(2)に示す図は、図13(1)の破線にて囲まれた領域を拡大したものである。図13(2)に示す画像は、格子状に並ぶデータで構成される。このように画像を構成する個々のデータは、画素と呼ばれている。
個々の画素には値が割り当てられ、その値により画素の内容が決まる。ここで例えば、画素の値が“1”のとき黒を、“0”のとき白を表すとすると、図13(2)の画像は、図13(3)のように表される。この例では、画像が黒と白の2色であるから画素も2値で表現できたが、画素に多数の値を割り当てられるようにして中間色を表せるようにすることも可能である。例えば、画素データを4ビットデータにして画素が0000bから1111bまでの16通りのデータを持てるようにすれば、黒と白の間に14段階の中間色を画素に設定することができる。画素データを8ビットデータにすれば画素は256色の表現ができる。
画素データのサイズは、画像の目的や内容によって変化する。例えば、写真など豊かな表現を必要とする画像の画素は多ビットのデータとなり、データサイズを小さくしたい通信関係の画像の画素は少ビットのデータとなる。
ところで、画像処理を実行するマイクロプロセッサはSIMD型を採用することが多い。なぜなら、1つの命令で複数のデータに対して同時に同一の演算処理が実行可能であるSIMD型マイクロプロセッサの特徴が画像処理に適しているからである。SIMD型マイクロプロセッサは、プロセッサエレメント(以下、PEと称する。)と呼ばれる単位で演算器とレジスタを備え、そのPEを複数個有する。これら複数個のPEが同時に演算処理を行うことで、1つの命令で複数のデータに対して同時に同一の演算処理を実行する。画像処理において各PEは、通常1個の画素の画像処理を担当するように設計されている。
ここで例えば、SIMD型マイクロプロセッサがm個のPEで構成され、対象画像データの水平方向のデータ数が(5×m)個であるとすると、図14に示すように、水平方向の画素の1列分がm個単位に分割されてSIMD型マイクロプロセッサに順に送り込まれ、m個単位で画像処理が行われる。図14の例では(5×m)の画素は5つに分割されるため、この1列に対してSIMD型マイクロプロセッサは処理を5回繰り返す。
次に、従来技術のSIMD型マイクロプロセッサの構成例を示す。図16は、従来技術のSIMD型マイクロプロセッサ2の概略の構成図である。SIMD型マイクロプロセッサ2は、概略、グローバルプロセッサ30、プロセッサエレメントグループ72、及び外部インターフェース70から構成される。プロセッサエレメントグループ72は複数のPEの配列体(集合体)であり、後で説明するように各PEの演算器が演算アレイ62に属しており、各PEのレジスタがレジスタファイル60に属している。
従来技術のSIMD型マイクロプロセッサのより詳しい構成例を図15に示す。図15では、プロセッサエレメントグループ72の中央付近にある6個のPE4を中心に示している。図15において、符号4が付される部分が一つのPE(プロセッサエレメント)を示している。個々のPE4に着目して説明を行う。図の各PE4には32個のレジスタ(6、8)が備わるが、図ではそのうち6個が図の上部に示されている。PEのレジスタ群をレジスタファイルと称している。レジスタに読み書きするためのデータバス10は、マルチプレクサ(7to1MUX)12、シフタ(Shift Expand)16を経てPE4の(図中の)下部と接続する。PE4の下部には演算器である16ビットALU18や演算結果を格納するAレジスタ20、Fレジスタ22が備わる。
マルチプレクサ(7to1MUX)12は、あるPEのALU18と隣接するPEのレジスタ(6、8)とのデータ接続を行う。図15の構成例では、一つの16ビットALU18は左右夫々3つまでの隣接PE4のレジスタ(6、8)と接続可能である。シフタ(Shift Expand)16は、レジスタ(6、8)とALU18との間に配置され、データのビットシフトを行う。各PE4のレジスタ(6、8)のうち、外部インターフェース70に接続するレジスタ6(図15では3個)が、外部インターフェース70からバスにより読み取りや書き込みがなされる。
図15の右部には、グローバルプロセッサ30が示されている。グローバルプロセッサ30は、プログラムを読み込み実行する独立のプロセッサであると同時に、各々のPE4に対し動作の指示を出すコントローラである。グローバルプロセッサ30には、G0、G1、G2、G3、SP、PC、LS、LI、LN、Pの各種レジスタ、プログラムを格納するProgram−RAM、及びデータを一時格納するData−RAMが装備されている。
近年、画像処理への性能要求は、主として処理速度の向上と画像の高品質化の二面に向けられている。まず、SIMD型マイクロプロセッサでの画像処理の処理速度の向上を求める場合、プロセッサの動作周波数を向上させるということと、1回の画像処理で処理できる画素数を増加させるということとの2通りのアプローチがある。前者の動作周波数を向上させるということは、常時要求されている課題であり、新たな要求に沿う性能向上を実現するのは容易でない。後者の1回の画像処理で処理できる画素数を増加させるということは、一般的にはPEの個数を増加させるということとなる。しかし、PEの個数を増加させることは、回路の大規模化、動作周波数の低下などの不都合を伴う。
一方、画像の高品質化ということは、画素が多色や多階調になることであり、画素データのサイズが大きくなることに繋がる。例えば、画素データサイズが256階調の8ビットから、65536階調の16ビットになることである。このように画素データサイズが増加すると、結局各PEの演算器を拡大しなければならない。
このようにSIMD型マイクロプロセッサへの要求は、PE個数の増大と、PEでの演算データサイズの拡大との2方向に向けられている。
なお、特許文献1に記載の発明は、浮動小数点内積演算器をSIMD型にすることに関するものである。
特開2001−256199号公報
本発明は、処理速度の向上と画像品質の向上に対応できる画像処理用のSIMD型マイクロプロセッサを提供することを目的とする。
本発明は、上記の目的を達成するためになされたものである。本発明に係る請求項1に記載のSIMD型マイクロプロセッサは、
m個(mは2以上の自然数)のプロセッサエレメントを備え、
各プロセッサエレメントは、データを一時記憶する複数のレジスタと、演算部と、レジスタと演算部との間のデータ転送を行う経路を備えるSIMD型マイクロプロセッサにおいて、
各プロセッサエレメントの演算部は、n個(nは2以上の自然数)の演算回路を含みこれら演算回路によって一度に最大n個のデータ処理を行い、
同一の若しくは複数のライン分の連続データを配置することに関して、
m個のプロセッサエレメントには並びの順序が決められており、各プロセッサエレメントのn個の演算回路には、全プロセッサエレメントで同一の配置の順序が定められており、
連続するデータを同時処理する場合、(m×n)個の演算回路への処理の配置は、上記のプロセッサエレメントの並びの順序よりも、各プロセッサエレメントでの演算回路の配置の順序に優先的に従うものとされていることを特徴とするSIMD型マイクロプロセッサである。
本発明に係る請求項2に記載のSIMD型マイクロプロセッサは、
演算回路が、付属するプロセッサエレメントに備わるレジスタ及び隣接するプロセッサエレメントに備わるレジスタとのデータ転送の経路を有し、
同時処理される連続するデータにおける隣接するデータを上記経路により転送することを特徴とする請求項1に記載のSIMD型マイクロプロセッサである。
本発明に係る請求項3に記載のSIMD型マイクロプロセッサは、
m個(mは2以上の自然数)のプロセッサエレメントを備え、
各プロセッサエレメントは、データを一時記憶する複数のレジスタと、演算部と、レジスタと演算部との間のデータ転送を行う経路を備えるSIMD型マイクロプロセッサにおいて、
各プロセッサエレメントの演算部は、n個(nは2以上の自然数)の演算回路を含みこれら演算回路によって一度に最大n個のデータ処理を行い、
同一の若しくは複数のライン分の連続データを配置することに関して、
m個のプロセッサエレメントには並びの順序が決められており、各プロセッサエレメントのn個の演算回路には配置の順序が定められており、
連続するデータを同時処理する場合、(m×n)個の演算回路への処理の配置は、上記の各プロセッサエレメントでの演算回路の配置の順序よりも、プロセッサエレメントの並びの順序に優先的に従うものとされていることを特徴とするSIMD型マイクロプロセッサである。
本発明に係る請求項4に記載のSIMD型マイクロプロセッサは、
演算回路が、付属するプロセッサエレメントに備わるレジスタ及び隣接するプロセッサエレメントに備わるレジスタとのデータ転送の経路を有し、
更に、プロセッサエレメントの全体配置の両端のうちの少なくとも一方の付近のプロセッサエレメントに付属する演算回路が、プロセッサエレメントの全体配置の両端のうちの他方の付近のプロセッサエレメントに備わるレジスタとのデータ転送の経路を有し、
演算回路は、同時処理される連続するデータにおける隣接するデータを上記経路により転送することを特徴とする請求項3に記載のSIMD型マイクロプロセッサである。
本発明に係る請求項5に記載のSIMD型マイクロプロセッサは、
各プロセッサエレメントにおけるn個の演算回路が、夫々、ビットシフトするシフト装置を備え、
夫々のプロセッサエレメント内で一つの配置の順序が付されている演算回路が備えるシフト装置と、夫々のプロセッサエレメント内で別の配置の順序が付されている演算回路が備えるシフト装置とに対して、別途にシフト量が指定されるように構成されていることを特徴とする請求項3に記載のSIMD型マイクロプロセッサである。
本発明に係る請求項6に記載のデータ処理方法は、
m個(mは2以上の自然数)のプロセッサエレメントを備え、
各プロセッサエレメントが、データを一時記憶する複数のレジスタと、演算部と、レジスタと演算部との間のデータ転送を行う経路を備え、
各プロセッサエレメントの演算部が、n個(nは2以上の自然数)の演算回路を含みこれら演算回路によって一度に最大n個のデータ処理を行うSIMD型マイクロプロセッサを、利用して行うデータ処理方法であって、
同一の若しくは複数のライン分の連続データを配置することに関して、
m個のプロセッサエレメントに並びの順序を決めておき、更に各プロセッサエレメントのn個の演算回路に、全プロセッサエレメントで同一の配置の順序を定めておき、
(m×n)個の演算回路へデータ処理を配置する際、上記のプロセッサエレメントの並びの順序よりも、各プロセッサエレメントでの演算回路の配置の順序に優先的に従って配置して、連続データの同時処理を行うことを特徴とするデータ処理方法である。
本発明に係る請求項7に記載のデータ処理方法は、
演算回路が、付属するプロセッサエレメントに備わるレジスタ及び隣接するプロセッサエレメントに備わるレジスタとのデータ転送の経路を有しており、
上記経路を介して、同時処理される連続するデータにおける隣接するデータを転送することを特徴とする請求項6に記載のデータ処理方法である。
本発明に係る請求項8に記載のデータ処理方法は、
m個(mは2以上の自然数)のプロセッサエレメントを備え、
各プロセッサエレメントが、データを一時記憶する複数のレジスタと、演算部と、レジスタと演算部との間のデータ転送を行う経路を備え、
各プロセッサエレメントの演算部が、n個(nは2以上の自然数)の演算回路を含みこれら演算回路によって一度に最大n個のデータ処理を行うSIMD型マイクロプロセッサを、利用して行うデータ処理方法であって、
同一の若しくは複数のライン分の連続データを配置することに関して、
m個のプロセッサエレメントに並びの順序を決めておき、更に各プロセッサエレメントのn個の演算回路に配置の順序を定めておき、
(m×n)個の演算回路へデータ処理を配置する際、上記の各プロセッサエレメントでの演算回路の配置の順序よりも、プロセッサエレメントの並びの順序に優先的に従って配置して、連続データの同時処理を行うことを特徴とするデータ処理方法である。
本発明に係る請求項9に記載のデータ処理方法は、
演算回路が、付属するプロセッサエレメントに備わるレジスタ及び隣接するプロセッサエレメントに備わるレジスタとのデータ転送の経路を有しており、
更に、プロセッサエレメントの全体配置の両端のうちの少なくとも一方の付近のプロセッサエレメントに付属する演算回路が、プロセッサエレメントの全体配置の両端のうちの他方の付近のプロセッサエレメントに備わるレジスタとのデータ転送の経路を有しており、
上記経路を介して、同時処理される連続するデータにおける隣接するデータを転送することを特徴とする請求項8に記載のデータ処理方法である。
本発明に係る請求項10に記載のデータ処理方法は、
各プロセッサエレメントにおけるn個の演算回路が、夫々、ビットシフトするシフト装置を備え、
夫々のプロセッサエレメント内で一つの配置の順序が付されている演算回路が備えるシフト装置と、夫々のプロセッサエレメント内で別の配置の順序が付されている演算回路が備えるシフト装置とに対して、別途にシフト量を指定することを特徴とする請求項8に記載のデータ処理方法である。
本発明を利用することにより、処理速度の向上と画像品質の向上の両方に対応できるSIMD型マイクロプロセッサを得ることができる。
以下、図面を参照して本発明に係る好適な実施の形態を説明する。
[第1の実施形態]
図1は、本発明の第1の実施形態に係るSIMD型マイクロプロセッサ2の構成図である。第1の実施形態に係るSIMD型マイクロプロセッサも、従来技術のSIMD型マイクロプロセッサ(図16参照)と同様に、概略、グローバルプロセッサ30、プロセッサエレメントグループ72、及び外部インターフェース70から構成される。
図1では、図15と同様にプロセッサエレメントグループ(図16参照)の中央付近にある6個のPE4を中心に示している。図1の右部に示すグローバルプロセッサ30には、プログラム格納用のプログラムRAM(Program−RAM)52と演算データ格納用のデータRAM(Data−RAM)54が内蔵されている。さらに、プログラムのアドレスを保持するプログラムカウンタ(PC)42、演算処理のデータ格納のための汎用レジスタであるG0〜G3レジスタ(32、34、36、38)、レジスタ退避・復帰時に退避先データRAMのアドレスを保持しているスタックポインタ(SP)40、サブルーチンコール時にコール元のアドレスを保持するリンクレジスタ(LS)44、同じくIRQ時とNMI時の分岐元アドレスを保持するLIレジスタ46、LNレジスタ48、プロセッサの状態を保持しているプロセッサステータスレジスタ(P)50が内蔵されている。これらのレジスタ、図示していない命令デコーダ、ALU、メモリ制御回路、割り込み制御回路、外部I/O制御回路、及びGP演算制御回路を使用してグローバルプロセッサ命令の実行が行われる。
PE命令実行時には、グローバルプロセッサ30は、命令デコーダ、図示していないレジスタファイル制御回路、及びPE演算制御回路を使用して、レジスタファイル60の制御と演算アレイ62の制御をおこなう。
レジスタファイル60において、PE毎に16ビット・レジスタ(6、8)が複数本内蔵されており、PEの個数分の組でアレイ構成を形成している。それぞれのレジスタ(6、8)は、演算アレイ62に対してポートを備えており、16ビットのリード/ライト兼用のバス(以下、レジスタバスと言う。)10で演算アレイ62からアクセスされる。図では便宜上、各PE4で7本のレジスタ(6、8)を示している。
各PE4の演算部14は、16ビットALU(18、24)、16ビットAレジスタ(20、26)、及びFレジスタ(22、28)を、下位ビット用と上位ビット用として2個ずつ内蔵している。PE命令による演算では、基本的にレジスタファイル60から読み出されたデータをALU(18、24)の一方の入力とし、Aレジスタ(20、26)にあるデータをALU(18、24)のもう一方入力とする。演算結果はAレジスタ(20、26)に格納される。つまり、Aレジスタ(20、26)にあるデータと、レジスタ(6、8)上のデータとの演算が行われることになる。
2個のALU(18、24)は、夫々16ビットの演算が可能である。また上位用ALU24と下位用ALU18とは連動できるように構成されており、上位用ALU24と下位用ALU18とが併せられると32ビットの演算が可能となる。それぞれのALUの動作はグローバルプロセッサ30から制御される。また、上位ALU24と下位ALU18を連動させるために、両ALU間には情報伝達経路が備わる。
レジスタ(6、8)と演算部14との接続部分に16ビット幅の7対1(7to1)のマルチプレクサ(7to1MUX)12が設けられている。各マルチプレクサ(7to1MUX)12は、PEが並ぶ方向(図1における左右の方向)において、左に1つ、2つ及び3つ離れたPE4のレジスタバスと、右に1つ、2つ及び3つ離れたPE4のレジスタバスと、当該PE4のレジスタバスとに接続し、それらレジスタバスに付属するレジスタのデータを演算対象として選択する。選択の制御は、グローバルプロセッサ30により行われる。
7to1MUX12とALU(18、24)の間には、シフタ(Shift Expand)16が設けられている。シフタ(Shift Expand)16は、レジスタ(6、8)から読み出されたデータのビットシフトと拡張とを行う。シフタの制御は、グローバルプロセッサ30により行われる。
レジスタファイル60に含まれる上段3つのレジスタ6は、マイクロプロセッサ外の外部メモリデータ転送装置(図示せず。)から内容の読み出し/書き込みがなされ得るレジスタである。
次に、図1に示す本発明の第1の実施形態に係るSIMD型マイクロプロセッサ2の動作について説明する。
図1のSIMD型マイクロプロセッサ2では、画像データが外部インターフェース70を経て外部から転送されるが、以下では外部メモリデータ転送装置(図示せず。)により、各PE4のレジスタ6に画像データ(画素データ)が既に転送されてあるものとする。
まず、画素データサイズが16ビットである場合を説明する。画素のデータサイズが16ビットであることは、モノクロ画像用のデータとして、若しくはカラー画像用のうちの1色として、現状最高の品質レベルに対応するということができる。なお、カラー画像は通常、原色系3色(RGB方式)若しくは補色系4色(CMYK方式)に係るデータ形態を利用しており、画像処理時には各色のデータに分けて処理される。
レジスタ(6、8)のサイズ、及びレジスタ(6、8)からALU(18、24)への経路の幅は、16ビットであるので、16ビットデータは問題なく転送される。途中のシフタ(Shift Expand)16でデータは32ビットに拡張され、上位16ビットが上位用ALU24へ、下位16ビットが下位用ALU18へ導かれる。このデータを“データX”とする。
演算結果を格納すると共にALU(18、24)へのデータの供給元になっているAレジスタ(20、26)も、上位・下位併せて32ビットのデータをALU(18、24)へ供給する。このデータを“データY”とする。ALU(18、24)は、データXとデータYの入力を受けて演算処理する。このとき上位用ALU24と下位用ALU18は32ビットの一つの演算器として動作する。一般に、或るサイズの演算器として動作する演算器を2個使って倍のサイズの演算を行うには、それら2個の演算器相互間にいくつかの信号伝達が必要とされる。ここでは、上位ALU24と下位ALU18との間に設けられた情報伝達経路を使用する。
上記のデータXとデータYの演算は、32ビットのデータ同士の演算であり演算結果も32ビットとなる。演算結果の上位16ビットは上位用Aレジスタ26へ、下位16ビットは下位用Aレジスタ20へ格納される。そして再びALU(18、24)へのデータ供給元になる。
上記のように、画像処理の過程において処理されるデータサイズは32ビットとなる。最終的に画像処理の結果がレジスタファイル60に戻されるときには、16ビットのデータに整形されて戻される。ここでの整形は、データをビットシフトしてから下位16ビットだけを採用するなどのデータ加工のことである。
画像処理、例えばフィルタ加工などの処理において、隣接する画素のデータを必要とする場合がある。図1に示すSIMD型マイクロプロセッサ2では、レジスタ(6、8)と演算部14との接続部分に、7対1(7to1)のマルチプレクサ(7to1MUX)12が設けられており、PEが並ぶ方向(図1における左右の方向)において、左に1つ、2つ及び3つ隣のPE4のレジスタと、右に1つ、2つ及び3つ隣のPE4のレジスタを選択できるようになっている。ここで、画素の配置順序とPEの配置順序とを一致させておけば、隣接するPEに隣接する画素データが格納されていることになり、各PEの演算部の演算に隣接画素データを反映することができる。
次に、画素データサイズが8ビットである場合を説明する。画素のデータサイズが8ビットであるということは、モノクロ画像用のデータとして、あるいはカラー画像用のうちの1色用のデータとして、現状の一般的要求レベルに対応するということができる。
画素データサイズが8ビットであるとき、図1に示すSIMD型マイクロプロセッサ2では個々のPE4は2個の画素を対象として画像処理を行う。まず、レジスタ(6、8)には、8ビットデータが2個格納される。即ち、レジスタ(6、8)のデータサイズ16ビットのうち、上位8ビットと下位8ビットで別の画素データを格納する。レジスタ(6、8)から演算部14へのレジスタバス10のデータ幅は16ビットであるので、8ビットデータ2個は問題なく演算部14へ転送される。途中のシフタ(Shift Expand)16で2個の8ビットデータは2つに分解され夫々16ビットに拡張され、上位16ビットが上位用ALU24へ、下位16ビットが下位用ALU18へ導かれる。この上位16ビットデータを“データXH”、下位16ビットデータを“データXL”とする。
演算結果を格納すると共にALU(18、24)へのデータの供給元になっているAレジスタ(20、26)も、下位16ビット、上位16ビットのデータをALU18、ALU24へ供給する。この上位データを“データYH”、下位データを“データYL”とする。下位ALU18はデータXLとデータYLの入力を受けて演算処理をする。上位ALU24はデータXHとデータYHの入力を受けて演算処理する。このとき上位ALU24と下位ALU18は、16ビットの演算器として独立に動作する。このとき、上位ALU24と下位ALU18との間に設けられた情報伝達経路は使用されない。
上記のデータXLとデータYLの演算、及びデータXHとデータYHの演算は、16ビットのデータ同士の演算であり、演算結果も夫々16ビットとなる。上位用ALU24の演算結果の16ビットデータは上位用Aレジスタ26へ、下位用ALU18の演算結果の16ビットデータは下位用Aレジスタ20へ、格納される。そして再びALU(18、24)へのデータ供給元になる。
上記のように、画像処理の過程において処理されるデータサイズは16ビットとなる。最終的に画像処理の結果がレジスタファイル60に戻されるときには、8ビット2個のデータに整形されて戻される。ここでの整形は、データをビットシフトしてから下位8ビットだけを採用するなどのデータ加工を行い、シフタ(Shift Expand)16で上位側の格納データ8ビットと下位側の格納データ8ビットとを合成して1個の16ビットデータにすることである。
[第2〜第4の実施形態で利用する画素の配置パターン]
SIMD型マイクロプロセッサにおいて1個のPEで2個の画素を処理する場合、PE内の画素の配置のパターンは、幾つか想定される。以下ではPE内の画素の配置パターンについての説明を行う。画素の配置パターンが異なれば、或るPEの演算部が隣接するPEのレジスタのデータを利用する場合に、そのことを実現するための構成に差異が生じてくる。それらの構成の差異が、後で説明する第2〜第4の実施形態の差異となっている。PE内の画素の配置パターンは、図5、図6、図7、図8及び図9に示される。
図5の右部は、画像データにおける画素の配置図を示し、左部は、SIMD型マイクロプロセッサ上の画素の第1の配置パターンを示す。SIMD型マイクロプロセッサは、m個のPEを有し、1PEにつき2個の画素を演算処理できるものとしている。図5左部では、各PEにおいて上位側として処理される画素と、下位側として処理される画素とを模式的に表している。1PEで2画素の処理がなされるため、このSIMD型マイクロプロセッサは、一度に(2×m)個の画素を扱える。図5右部の画像データ上に並ぶ画素データのうち、同一ライン上の連続する(2×m)個の画素をSIMD型マイクロプロセッサ上に転送し演算処理する。画像データ上に並ぶ画素に対して、左から右方向に順に1、2、3・・・と番号を付すと、1〜(2×m)までの画素が一度に画像処理をなされる画素として、SIMD型マイクロプロセッサ上に転送される。
図5のSIMD型マイクロプロセッサ上では、1番目のPEの下位側に画素1、1番目のPEの上位側に画素2、2番目のPEの下位側に画素3、2番目のPEの上位側に画素4、3番目のPEの下位側に画素5、3番目のPEの上位側に画素6、・・・、m番目のPEの下位側に画素(2×m−1)、m番目のPEの上位側に画素(2×m)という順序で、各画素データが配置される。後続の画像処理では、続きの画素である画素(2×m+1)から同様に転送される。
次に、図6の右部は、画像データにおける画素の配置図を示し、左部は、SIMD型マイクロプロセッサ上の画素の第2の配置パターンを示す。SIMD型マイクロプロセッサは、m個のPEを有し、1PEにつき2個の画素を演算処理できるものとしている。図6左部では、各PEにおいて上位側として処理される画素と、下位側として処理される画素とを模式的に表している。1PEで2画素の処理がなされるため、このSIMD型マイクロプロセッサは、一度に(2×m)個の画素を扱える。図6右部の画像データ上に並ぶ画素データのうち、同一ライン上の連続する(2×m)個の画素をSIMD型マイクロプロセッサ上に転送し演算処理する。画像データ上に並ぶ画素に対して、左から右方向に順に1、2、3・・・と番号を付すと、1〜(2×m)までの画素が一度に画像処理をなされる画素として、SIMD型マイクロプロセッサ上に転送される。
図6のSIMD型マイクロプロセッサ上では、1番目のPEの下位側に画素1、2番目のPEの下位側に画素2、3番目のPEの下位側に画素3、・・・、m番目のPEの下位側に画素m、1番目のPEの上位側に画素(m+1)、2番目のPEの上位側に画素(m+2)、3番目のPEの上位側に画素(m+3)、・・・・、最後のPEの上位側に画素(2×m)という順序で、画素データが配置される。後続の画像処理では、続きの画素である画素(2×m+1)から同様に転送される。
次に、図7の右部は、画像データにおける画素の配置図を示し、左部は、SIMD型マイクロプロセッサ上の画素の第3の配置パターンを示す。SIMD型マイクロプロセッサは、m個のPEを有し、1PEにつき2個の画素を演算処理できるものとしている。図7左部では、各PEにおいて上位側として処理される画素と、下位側として処理される画素とを模式的に表している。1PEで2画素の処理がなされるため、このSIMD型マイクロプロセッサは、一度に(2×m)個の画素を扱える。図7右部の画像データ上に並ぶ画素のうち、同一ライン上の(2×m)個の画素をSIMD型マイクロプロセッサ上に転送し演算処理する。但し、図7に示される第3の配置パターンは、画像データ上の2組の連続するm個の画素がSIMD型マイクロプロセッサに転送されて形成される。つまり、予め画像データ上に並ぶ画素が画像群A、画像群Bに分けられる(図7右部参照)。画像群A上に並ぶ画素に対して、左から右方向に順に1、2、3、・・・と番号を付し、画像群B上に並ぶ画素に対して、画像群Bの頭から右方向に順に1、2、3・・・と番号を付すものとすると、画素群A、画素群Bの夫々の1〜mまでの画素が、一度に画像処理をなされる画素として、SIMD型マイクロプロセッサ上に転送される。図7左部の画素群Bからの画素には、識別のための黒三角形を付している。
図7のSIMD型マイクロプロセッサ上では、画素群Aの画素が各PEの下位側、画素群Bの画素が各PEの上位側に配置される。夫々、1番目のPEに画素1、2番目のPEに画素2、3番目のPEに画素3、・・・、m番目のPEに画素m、という順序で、画素データが配置される。後続の画像処理では、続きの画素である画素(m+1)からそれぞれ同様に転送される。
次に、図8の右部は、画像データにおける画素の配置図を示し、左部は、SIMD型マイクロプロセッサ上の画素の第4の配置パターンを示す。SIMD型マイクロプロセッサは、m個のPEを有し、1PEにつき2個の画素を演算処理できるものとしている。図8左部では、各PEにおいて上位側として処理される画素と、下位側として処理される画素とを模式的に表している。1PEで2画素の処理がなされるため、このSIMD型マイクロプロセッサは、1回に(2×m)個の画素を扱える。ここで、図8右部の画像データからは、画像データ上に並ぶ画素のうち、m個の画素群が2組、合計(2×m)個の画素データがSIMD型マイクロプロセッサ上に転送され演算処理される。このとき画素群の一方は、同一ライン上の連続する画素群Cであり、もう一方は、画素群Cと異なるライン上の連続する画素群Dである。画像群C上に並ぶ画素に対して、左から右方向に順に1、2、3、・・・と番号を付し、画像群D上に並ぶ画素に対して、左から右方向に順に1、2、3、・・・と番号を付すものとすると、画素群C、画素群Dの夫々の1〜mまでの画素が、一度に画像処理をなされる画素として、SIMD型マイクロプロセッサ上に転送される。図8左部の画素群Dからの画素には、識別のために黒三角形を付している。
図8のSIMD型マイクロプロセッサ上では、画素群Cの画素が各PEの下位側、画素群Dの画素が各PEの上位側に配置される。夫々、1番目のPEに画素1、2番目のPEに画素2、3番目のPEに画素3、・・・、m番目のPEに画素m、という順序で、画素データが配置される。後続の画像処理では、続きの画素である画素(m+1)からそれぞれ同様に転送される。画素群Cと画素群Dとは、隣接するラインでなくてもよい。
次に、図9の右部は、画像データにおける画素の配置図を示し、左部は、SIMD型マイクロプロセッサ上の画素の第5の配置パターンを示す。SIMD型マイクロプロセッサは、m個のPEを有し、1PEにつき2個の画素を演算処理できるものとしている。図9左部では、各PEにおいて上位側として処理される画素と、下位側として処理される画素とを模式的に表している。1PEで2画素の処理がなされるため、このSIMD型マイクロプロセッサは、1回に(2×m)個の画素を扱える。ここで、SIMD型マイクロプロセッサへの転送の対象は、2個の別の画像データ(画像データE、画像データF)から構成される。画像データEと画像データFの夫々に並ぶ画素のうち、同一ライン上の連続するm個の画素がSIMD型マイクロプロセッサ上に転送され演算処理される。このとき画像データE側の画素群を画素群Eとし、画像データF側の画素群を画素群Fとする。
画像群E上に並ぶ画素に対して、左から右方向に順に1、2、3、・・・と番号を付し、画像群F上に並ぶ画素に対して、左から右方向に順に1、2、3、・・・と番号を付すものとすると、画素群E、画素群Fの夫々の1〜mまでの画素が、一度に画像処理をなされる画素として、SIMD型マイクロプロセッサ上に転送される。図9左部の画素群Fからの画素には、識別のために黒三角形を付している。
図9のSIMD型マイクロプロセッサ上では、画素群Eの画素が各PEの下位側、画素群Fの画素が各PEの上位側に配置される。夫々、1番目のPEに画素1、2番目のPEに画素2、3番目のPEに画素3、・・・、m番目のPEに画素m、という順序で、画素データが配置される。後続の画像処理では、続きの画素である画素(m+1)からそれぞれ同様に転送される。
[第2の実施形態]
図2は、本発明の第2の実施形態に係るSIMD型マイクロプロセッサ2の構成図である。第2の実施形態に係るSIMD型マイクロプロセッサ2は、図5に示される画素の第1の配置パターンに対するデータ処理、特に一つのPEの演算部が隣接するPEのレジスタのデータを利用するデータ処理を実現する構成を備える。なお、第2の実施形態に係るSIMD型マイクロプロセッサ2は、概略、第1の実施形態に係るSIMD型マイクロプロセッサ2と同様の構成を有するため、同一の部位には同一の符号を付して説明を省略し、両者の差異を中心に説明する。
図2では、図1と同様にプロセッサエレメントグループ(図16参照)の中央付近にある6個のPE4を中心に示している。
図2に示されるレジスタファイル60において、PE毎に16ビット・レジスタ(6、8)が複数本内蔵されており、PEの個数分の組でアレイ構成を形成している。それぞれのレジスタ(6、8)は、演算アレイ62に対してポートを備えており、8ビットのリード/ライト兼用の2組のレジスタバス(10a、10b)で演算アレイ62からアクセスされる。2組の8ビットのレジスタバス(10a、10b)は、レジスタの16ビットのうちの下位8ビットと接続する下位レジスタバス10aと、レジスタの16ビットのうちの上位8ビットと接続する上位レジスタバス10bである。図2では、下位レジスタバス10aは実線で、上位レジスタバス10bは破線で示している。図では便宜上、各PE4で7本のレジスタ(6、8)を示している。
演算アレイ62内のデータ経路は、下位側の演算に関係するものを実線で示し、上位側の演算に関係するものを破線で示している。
レジスタ(6、8)と演算部14との接続部分に2個の7対1(7to1)のマルチプレクサ(7to1MUX)(12a、12b)が設けられている。2個の7to1MUX(12a、10b)は8ビット幅の選択回路であり、複数の下位レジスタバス10aに接続する下位マルチプレクサ12aと、複数の上位レジスタバス10bに接続する上位マルチプレクサ12bである。
下位マルチプレクサ12aは、PE4が並ぶ方向(図2における左右の方向)において、左に1つ、2つ及び3つ離れたPE4の下位レジスタバス10aと、右に1つ、2つ及び3つ離れたPE4の下位レジスタバス10aと、当該PE4の下位レジスタバス10aに接続し、それらから一つを選択する。上位マルチプレクサ12bは、PE4が並ぶ方向において、左に1つ、2つ及び3つ離れたPE4の上位レジスタバス10bと、右に1つ、2つ及び3つ離れたPE4の上位レジスタバス10bと、当該PE4の上位レジスタバス10bに接続し、それらから一つを選択する。選択の制御は、それぞれグローバルプロセッサ30により行われる。
7to1MUX(12a、12b)とALU(18、24)の間には、スイッチ64が設けられており、上位と下位の経路を入れ替える機能を備える。この入れ替える機能とは、下位マルチプレクサ12aと下位側ALU18が接続され、上位マルチプレクサ12bと上位側ALU24が接続されている原則的な状態から、下位マルチプレクサ12aと上位側ALU24が接続され、上位マルチプレクサ12bと下位側ALU18が接続されている交差的な状態にする機能(及び、交差的な状態から原則的な状態に戻す機能)である。スイッチ64の制御、すなわち入れ替えるのか否かの制御は、グローバルプロセッサ30により行われる。
更に、スイッチ64とALU(18、24)の間には、シフタ(Shift Expand)16が設けられている。シフタ(Shift Expand)16は、レジスタ(6,8)から読み出されたデータのビットシフトと拡張を行う。シフタの制御は、グローバルプロセッサ30により行われる。
レジスタファイル60に示される上段3つのレジスタ6は、マイクロプロセッサ外の外部メモリデータ転送装置(図示せず。)から内容の読み出し/書き込みがなされ得るレジスタである。
次に、図2に示す本発明の第2の実施形態に係るSIMD型マイクロプロセッサ2の動作について説明する。
図2のSIMD型マイクロプロセッサ2では、画像データが外部インターフェース70を経て外部から転送されるが、以下では外部メモリデータ転送装置(図示せず。)により、各PE4のレジスタ6に画像データ(画素データ)が既に転送されてあるものとする。
まず、対象画素データサイズが16ビットである場合を説明する。これは、図5に示す画素の第1の配置パターンを利用する場合とは異なり、1PEで1画素の処理を行う場合である。第2の実施形態に係るSIMD型マイクロプロセッサ2において、1PEで1画素の処理を行うことが可能であることを説明する。
レジスタ(6、8)のサイズ、及びレジスタ(6、8)からALU(18、24)への経路の幅は、上位・下位合わせて16ビットなので、16ビットデータを問題なく転送できる。途中のシフタ(Shift Expand)16でデータは32ビットに拡張され、上位16ビットが上位用ALU24へ、下位16ビットが下位用ALU18へ導かれる。このデータを“データX”とする。このとき、7to1MUX(12a、12b)が、必ず上位側と下位側とが同じ動作を行い、且つスイッチ64も入れ替えを行わないように、グローバルプロセッサ30が制御する。
演算結果を格納すると共にALU(18、24)へのデータの供給元になっているAレジスタ(20、26)も、上位・下位併せて32ビットのデータをALU(18、24)へ供給する。このデータを“データY”とする。ALU(18、24)は、データXとデータYの入力を受けて演算処理する。このとき上位用ALU24と下位用ALU18は32ビットの一つの演算器として動作する。一般に、或るサイズの演算器として動作する演算器を2個使って倍のサイズの演算を行うには、それら2個の演算器相互間にいくつかの信号伝達が必要とされる。ここでは、上位ALU24と下位ALU18との間に設けられた情報伝達経路を使用する。
上記のデータXとデータYの演算は、32ビットのデータ同士の演算であり演算結果も32ビットとなる。演算結果の上位16ビットは上位用Aレジスタ26へ、下位16ビットは下位用Aレジスタ20へ格納される。そして再びALU(18、24)へのデータ供給元へとなっていく。
上記のように、画像処理の過程において処理されるデータサイズは32ビットとなる。最終的に画像処理の結果がレジスタファイル60に戻されるときには、16ビットのデータに整形されて戻される。ここでの整形は、データをビットシフトしてから下位16ビットだけを採用するなどのデータ加工のことである。
画像処理、例えばフィルタ加工などの処理において、隣接する画素のデータを必要とする場合がある。図2に示すSIMD型マイクロプロセッサ2では、レジスタ(6、8)と演算部14との接続部分に7対1(7to1)のマルチプレクサ(7to1MUX)(12a、12b)が設けられており、PEが並ぶ方向(図2における左右方向)において、左に1つ、2つ及び3つ隣のPE4のレジスタと、右に1つ、2つ及び3つ隣のPE4のレジスタを選択できるようになっている。ここで、画素の配置順序とPEの配置順序とを一致させておけば、隣接するPEに隣接する画素データが格納されていることになり、各PE4の演算部14での演算に隣接画素データを反映することができる。このとき、下位側MUX12aと上位側12bとが必ず同じ動作を行い、スイッチ64も入れ替えを行わないように、グローバルプロセッサ30が制御する。
次に、画素データサイズが8ビットである場合を説明する。これは、図5に示す画素の第1の配置パターンを利用する場合、即ち、1PEで2画素の処理を行う場合である。
画素データサイズが8ビットであるとき、図2に示すSIMD型マイクロプロセッサ2では個々のPE4は2個の画素を対象として画像処理を行う。まず、レジスタ(6、8)には、8ビットデータが2個格納される。即ち、レジスタ(6,8)のデータサイズ16ビットのうち、上位8ビットと下位8ビットで別の画素データを格納する。レジスタ(6、8)から演算部14へのデータ転送では、上位8ビットが上位レジスタバス10bを経由し、下位8ビットが下位レジスタバス10aを経由する。
レジスタ(6、8)のデータは、上位用MUX12b若しくは下位用MUX12aと、スイッチ64とを経て、演算アレイ62に導かれる。
途中のシフタ(Shift Expand)16で、上位8ビットデータ及び下位8ビットデータは、夫々16ビットに拡張され、上位16ビットが上位用ALU24へ、下位16ビットが下位用ALU18へ導かれる。この上位データを“データXH”、下位データを“データXL”とする。
演算結果を格納すると共にALU(18、24)へのデータの供給元になっているAレジスタ(20、26)も、下位16ビット、上位16ビットのデータをALU18、ALU24へ供給する。この上位データを“データYH”、下位データを“データYL”とする。下位ALU18はデータXLとデータYLの入力を受けて演算処理する。上位ALU24はデータXHとデータYHの入力を受けて演算処理する。このとき上位ALU24と下位ALU18は、16ビットの演算器として独立に動作する。このとき、上位ALU24と下位ALU18との間に設けられた情報伝達経路は使用されない。
上記のデータXLとデータYLの演算、及びデータXHとデータYHの演算は、16ビットのデータ同士の演算であり、演算結果も夫々16ビットとなる。上位用ALU24の演算結果の16ビットデータは上位用Aレジスタ26へ、下位用ALU18の演算結果の16ビットデータは下位用Aレジスタ20へ格納される。そしてふたたびALU(18、24)へのデータ供給元になる。
上記のように、画像処理の過程において処理されるデータサイズは16ビットとなる。最終的に画像処理の結果がレジスタファイル60に戻されるときには、8ビット2個のデータに整形されて戻される。ここでの整形は、データをビットシフトしてから下位8ビットだけを採用するなどのデータ加工を行い、シフタ(Shift Expand)16で上位側の格納データ8ビットと下位側の格納データ8ビットとを合成して1個の16ビットデータにすることである。
次に、図5に示す画素の第1の配置パターンが用いられている第2の実施形態のSIMD型マイクロプロセッサ2において、隣接画素を参照する処理手順の概要を説明する。
まず、各PE4の下位ALU18で下位画素の演算を行う場合について説明する。
画像データ上で1画素分右に位置する画素を参照するという場合、この画素が格納されるのは、当該PE4のレジスタの上位8ビットである。このときは当該PE4の上位側MUX12bで当該レジスタバス10bを選択し、スイッチ64を上位・下位の入れ替え有り状態に設定すれば、データ参照が実現する。
画像データ上で2画素分右に位置する画素を参照するという場合、この画素が格納されるのは、右に1つ隣のPE4のレジスタの下位8ビットである。このときは当該PE4の下位側MUX12aで右に1つ隣のレジスタバス10aを選択し、スイッチ64を上位・下位の入れ替え無し状態に設定すれば、データ参照が実現する。
画像データ上で3画素分右に位置する画素を参照するという場合、この画素が格納されるのは、右に1つ隣のPE4のレジスタの上位8ビットである。このときは当該PE4の上位側MUX12bで右に1つ隣のレジスタバス10bを選択し、スイッチ64を上位・下位の入れ替え有り状態に設定すれば、データ参照が実現する。
画像データ上で1画素分左に位置する画素を参照するという場合、この画素が格納されるのは、左に1つ隣のPE4のレジスタの上位8ビットである。このときは当該PE4の上位側MUX12bで左に1つ隣のレジスタバス10bを選択し、スイッチ64を上位・下位の入れ替え有り状態に設定すれば、データ参照が実現する。
画像データ上で2画素分左に位置する画素を参照するという場合、この画素が格納されるのは、左に1つ隣のPE4のレジスタの下位8ビットである。このときは当該PE4の下位側MUX12aで左に1つ隣のレジスタバス10aを選択し、スイッチ64を上位・下位の入れ替え無し状態に設定すれば、データ参照が実現する。
画像データ上で3画素分左に位置する画素を参照するという場合、この画素が格納されるのは、左に2つ隣のPE4のレジスタの上位8ビットである。このときは当該PE4の上位側MUX12bで左に2つ隣のレジスタバス10bを選択し、スイッチ64を上位・下位の入れ替え有り状態に設定すれば、データ参照が実現する。
次に、各PE4の上位ALU24で上位画素の演算を行う場合について説明する。
画像データ上で1画素分右に位置する画素を参照するという場合、この画素が格納されるのは、右に1つ隣のPE4のレジスタの下位8ビットである。このときは当該PE4の下位側MUX12aで右に1つ隣のレジスタバス10aを選択し、スイッチ64を上位・下位の入れ替え有り状態に設定すれば、データ参照が実現する。
画像データ上で2画素分右に位置する画素を参照するという場合、この画素が格納されるのは、右に1つ隣のPE4のレジスタの上位8ビットである。このときは当該PE4の上位側MUX12bで右に1つ隣のレジスタバス10bを選択し、スイッチ64を上位・下位の入れ替えなし状態に設定すれば、データ参照が実現する。
画像データ上で3画素分右に位置する画素を参照するという場合、この画素が格納されるのは、右に2つ隣のPE4のレジスタの下位8ビットである。このときは当該PE4の下位側MUX12aで右に2つ隣のレジスタバス10aを選択し、スイッチ64を上位・下位の入れ替え有り状態に設定すれば、データ参照が実現する。
画像データ上で1画素分左に位置する画素を参照するという場合、この画素が格納されるのは、当該PE4のレジスタの下位8ビットである。このときは当該PE4の下位側MUX12aで当該レジスタバス10aを選択し、スイッチ64を上位・下位の入れ替え有り状態に設定すれば、データ参照が実現する。
画像データ上で2画素分左に位置する画素を参照するという場合、この画素が格納されるのは、左に1つ隣のPE4のレジスタの上位8ビットである。このときは当該PE4の上位側MUX12bで左に1つ隣のレジスタバス10bを選択し、スイッチ64を上位・下位の入れ替え無し状態に設定すれば、データ参照が実現する。
画像データ上で3画素分左に位置する画素を参照するという場合、この画素が格納されるのは、左に1つ隣のPE4のレジスタの下位8ビットである。このときは当該PE4の下位側MUX12aで左に1つ隣のレジスタバス10aを選択し、スイッチ64を上位・下位の入れ替え有り状態に設定すれば、データ参照が実現する。
このように、スイッチ64の動作と、上位側画素からデータ参照及び下位側画素からのデータ参照は呼応する。従って、データ参照においてグローバルプロセッサ30はすべてのPE4を一律に制御できる。すべてのPE4の下位MUX12a、すべてのPE4の上位MUX12bは、グローバルプロセッサ30により一律制御される。
[第3の実施形態]
図3は、本発明の第3の実施形態に係るSIMD型マイクロプロセッサ2の構成図である。第3の実施形態に係るSIMD型マイクロプロセッサ2は、図6に示される画素の第2の配置パターンに対するデータ処理、特に一つのPEの演算部が隣接するPEのレジスタのデータを利用するデータ処理を実現する構成を備える。なお、第3の実施形態に係るSIMD型マイクロプロセッサ2は、概略、第2の実施形態に係るSIMD型マイクロプロセッサ2と同様の構成を有するため、同一の部位には同一の符号を付して説明を省略し、両者の差異を中心に説明する。
図3に示されるレジスタファイル60において、PE毎に16ビット・レジスタ(6、8)が複数本内蔵されており、PEの個数分の組でアレイ構成を形成している。それぞれのレジスタ(6、8)は、演算アレイ62に対してポートを備えており、8ビットのリード/ライト兼用の2組のレジスタバス(10a、10b)で演算アレイ62からアクセスされる。2組の8ビットのレジスタバス(10a、10b)は、レジスタの16ビットのうちの下位8ビットと接続する下位レジスタバス10aと、レジスタの16ビットのうちの上位8ビットと接続する上位レジスタバス10bである。図3では、下位レジスタバス10aは実線で、上位レジスタバス10bは破線で示している。図では便宜上、各PE4で7本のレジスタ(6、8)を示している。
図3では、図1及び図2とは異なり、プロセッサエレメントグループ(図16参照)の両端の3個ずつのPE4を中心に示している。ここで、PEの個数がm個であるとして、左端のPEをPE[1]とし、以降右方向にPE[2]、PE[3]、・・・と識別子を付すと、右端のPEは、右からPE[m]、PE[m−1]、PE[m−2]・・・となる。従って図3では、左からPE1、PE2、PE3が図示され、中間を省略して、PE[m−2]、PE[m−1]、PE[m]が図示されている。
演算アレイ62内のデータ経路は、下位側の演算に関係するものを実線で示し、上位側の演算に関係するものを破線で示している。
レジスタ(6、8)と演算部14との接続部分に2個の7対1(7to1)のマルチプレクサ(7to1MUX)(12a、12b)が設けられている。2個の7to1MUX(12a、12b)は8ビット幅の選択回路であり、複数の下位レジスタバス10aに接続する下位マルチプレクサ12aと、複数の上位レジスタバス10bに接続する上位マルチプレクサ12bである。
下位マルチプレクサ12aは、PE4が並ぶ方向(図3における左右の方向)において、左に1つ、2つ及び3つ離れたPE4の下位レジスタバス10aと、右に1つ、2つ及び3つ離れたPE4の下位レジスタバス10aと、当該PE4の下位レジスタバス10aに接続し、それらから一つを選択する。上位マルチプレクサ12bは、PE4が並ぶ方向において、左に1つ、2つ及び3つ離れたPE4の上位レジスタバス10bと、右に1つ、2つ及び3つ離れたPE4の上位レジスタバス10bと、当該PE4の上位レジスタバス10bに接続し、それらから一つを選択する。選択の制御は、それぞれグローバルプロセッサ30により行われる。
プロセッサエレメントグループ72内のPE4の配列の左端付近に位置するPEの演算部14から更に左のPEのレジスタ6、8を参照する場合、若しくは、右端付近に位置するPEの演算部14から更に右のPEのレジスタ6、8を参照する場合、対象のPEが存在しないことがある。このような場合、通常、仮の参照値が読み出されるように設定されている。仮の参照値とは、全ビットが“0”であるデータや、全ビットが“1”であるデータなどである。
図3に示されるPE4の配列において、左側のPE[1]の下位側マルチプレクサ12aが当該PEの左方のPEのレジスタ(6、8)を参照しようとする場合、当該PE[1]より左にPEが存在しないので、固定値VGが参照値として割り当てられるようになっている。
同様に、PE[2]の下位側マルチプレクサ12aが2つ以上の左方のPEのレジスタを参照しようとする場合、又は、PE[3]の下位側マルチプレクサ12aが3つ以上の左方のPEのレジスタを参照しようとする場合、該当するPEが存在しないため、固定値VGが参照値として割り当てられる。
図3にて示されるPE4の配列において、左側のPE[1]の上位側マルチプレクサ12bが当該PEの左方のPEのレジスタ(6、8)を参照しようとする場合、当該PE[1]より左にPEが存在しないが、右端のPE、即ち、PE[m]の下位側のレジスタバス10aが、1つ左隣のPEのレジスタバスとして接続される。同様に、PE[m−1]の下位側のレジスタバス10aが、2つ左隣のPEのレジスタバスとして接続され、PE[m−2]の下位側のレジスタバス10aが、3つ左隣のPEのレジスタバスとして接続される。
上記のPE[1]と同様に、PE[2]の上位側マルチプレクサ12bは、PE[1]の上位側のレジスタバス10bを1つ左隣とし、PE[m]の下位側のレジスタバス10aを2つ左隣とし、PE[m−1]の下位側のレジスタバス10aを3つ左隣のPEとして、接続する。PE[3]は、PE[2]の上位側のレジスタバス10bを1つ左隣とし、PE[1]の上位側のレジスタバス10bを2つ左隣とし、PE[m]の下位側のレジスタバス10aを3つ左隣のPEとして、接続する。
図3にて示されるPE4の配列において、右側のPE[m]の上位側マルチプレクサ12bが当該PEの右方のPEのレジスタ(6、8)を参照しようとする場合、当該PE[m]より右にPEが存在しないので、固定値VGが参照値として割り当てられるようになっている。
同様に、PE[m−1]の上位側マルチプレクサ12bが2つ以上の右方のPEのレジスタを参照しようとする場合、又は、PE[m−2]の上位側マルチプレクサ12bが3つ以上の右方のPEのレジスタを参照しようとする場合、該当するPEが存在しないため、固定値VGが参照値として割り当てられる。
図3にて示されるPE4の配列において、右側のPE[m]の下位側マルチプレクサ12aが当該PEの右方のPEのレジスタ(6、8)を参照しようとする場合、当該PE[m]より右にPEが存在しないが、左端のPE、即ち、PE[1]の上位側のレジスタバス10bが、1つ右隣のPEのレジスタバスとして接続される。同様に、PE[2]の上位側のレジスタバス10bが、2つ右隣のPEのレジスタバスとして接続され、PE[m−2]の下位側のレジスタバス10aが、3つ左隣のPEのレジスタバスとして接続される。
上記のPE[m]と同様に、PE[m−1]の下位側マルチプレクサ12aは、PE[m]の下位側のレジスタバス10aを1つ左隣とし、PE[1]の上位側のレジスタバス10bを2つ右隣とし、PE[2]の上位側のレジスタバス10bを3つ右隣として、接続する。PE[m−1]は、PE[m−1]の下位側のレジスタバス10aを1つ右隣とし、PE[m]の下位側のレジスタバス10aを2つ右隣とし、PE[1]の上位側のレジスタバス10aを3つ右隣として、接続する。
更に、7to1MUX(12a、12b)とALU(18、24)の間には、シフタ(Shift Expand)16が設けられている。シフタ(Shift Expand)16は、レジスタ(6、8)から読み出されたデータのビットシフトと拡張を行う。シフタの制御は、グローバルプロセッサ30により行われる。
レジスタファイル30に示される上段3つのレジスタ6は、マイクロプロセッサ外の外部メモリデータ転送装置(図示せず。)から内容の読み出し/書き込みがなされ得るレジスタである。
次に、図3に示す本発明の第3の実施形態に係るSIMD型マイクロプロセッサ2の動作について説明する。
図3のSIMD型マイクロプロセッサ2では、画像データが外部インターフェース70を経て外部から転送されるが、以下では外部メモリデータ転送装置(図示せず。)により、各PE4のレジスタ6に画像データ(画素データ)が既に転送されてあるものとする。
まず、対象画素データサイズが16ビットである場合を説明する。これは、図6に示す画素の第2の配置パターンを利用する場合とは異なり、1PEで1画素の処理を行う場合である。第3の実施形態に係るSIMD型マイクロプロセッサ2において、1PEで1画素の処理を行うことが可能であることを説明する。
レジスタ(6、8)のサイズ、及びレジスタ(6、8)からALU(18、24)への経路の幅は、上位・下位合わせて16ビットなので、16ビットデータを問題なく転送できる。途中のシフタ(Shift Expand)16でデータは32ビットに拡張され、上位16ビットが上位用ALU24へ、下位16ビットが下位用ALU18へ導かれる。このデータを“データX”とする。このとき、7to1MUX(12a、12b)が、必ず上位側と下位側とが同じ動作を行うように、グローバルプロセッサ30が制御する。
演算結果を格納すると共にALU(18、24)へのデータの供給元になっているAレジスタ(20、26)も、上位・下位併せて32ビットのデータをALU(18、24)へ供給する。このデータを“データY”とする。ALU(18、24)は、データXとデータYの入力を受けて演算処理する。このとき上位用ALU24と下位用ALU18は32ビットの一つの演算器として動作する。一般に、或るサイズの演算器として動作する演算器を2個使って倍のサイズの演算を行うには、それら2個の演算器相互間にいくつかの信号伝達が必要とされる。ここでは、上位ALU24と下位ALU18との間に設けられた情報伝達経路が使用される。
上記のデータXとデータYの演算は、32ビットのデータ同士の演算であり演算結果も32ビットとなる。演算結果の上位16ビットは上位用Aレジスタ26へ、下位16ビットは下位用Aレジスタ20へ格納される。そして再びALU(18、24)へのデータ供給元へとなっていく。
上記のように、画像処理の過程において処理されるデータサイズは32ビットとなる。最終的に画像処理の結果がレジスタファイル60に戻されるときには、16ビットのデータに整形されて戻される。ここでの整形は、データをビットシフトしてから下位16ビットだけを採用するなどの加工のことである。
画像処理、例えばフィルタ加工などの処理において、隣接する画素のデータを必要とする場合がある。図3に示すSIMD型マイクロプロセッサ2では、レジスタ(6、8)と演算部14との接続部分に7対1(7to1)のマルチプレクサ(7to1MUX)(12a、12b)が設けられており、PEが並ぶ方向(図2における左右方向)において、左に1つ、2つ及び3つ隣のPE4のレジスタと、右に1つ、2つ及び3つ隣のPE4のレジスタを選択できるようになっている。ここで、画素の配置順序とPEの配置順序とを一致させておけば、隣接するPEに隣接する画素データが格納されていることになり、各PE4の演算部14での演算に隣接画素データを反映することができる。このとき、下位側MUX12aと上位側MUX12bと必ず同じ動作を行うように、グローバルプロセッサ30が制御する。
次に、画素データサイズが8ビットである場合を説明する。これは、図6に示す画素の第2の配置パターンを利用する場合、即ち、1PEで2画素の処理を行う場合である。
画素データサイズが8ビットであるとき、図3に示すSIMD型マイクロプロセッサ2では個々のPE4は2個の画素を対象として画像処理を行う。まず、レジスタ(6、8)には、8ビットデータが2個格納される。即ち、レジスタ(6、8)のデータサイズ16ビットのうち、上位8ビットと下位8ビットで別の画素データを格納する。レジスタ(6、8)から演算部14へのデータ転送では、上位8ビットが上位レジスタバス10bを経由し、下位8ビットが下位レジスタバス10aを経由する。
レジスタ(6、8)のデータは、上位用MUX12b若しくは下位用MUX12aを経て、演算アレイ62に導かれる。
途中のシフタ(Shift Expand)16で、上位8ビットデータ及び下位8ビットデータは、夫々16ビットに拡張され、上位16ビットが上位用ALU24へ、下位16ビットが下位用ALU18へ導かれる。この上位データを“データXH”、下位データを“データXL”とする。
演算結果を格納すると共にALU(18、24)へのデータの供給元になっているAレジスタ(20、26)も、上位16ビット、下位16ビットのデータをALU18、ALU24へ供給する。この上位データを“データYH”、下位データを“データYL”とする。下位ALU18はデータXLとデータYLの入力を受けて演算処理する。上位ALU24はデータXHとデータYHの入力を受けて演算処理する。このとき上位ALU24と下位ALU18は、16ビットの演算器として独立に動作する。このとき、上位ALU24と下位ALU18との間に設けられた情報伝達経路は使用されない。
上記のデータXLとデータYLの演算、及びデータXHとデータYHの演算は、16ビットのデータ同士の演算であり、演算結果も夫々16ビットとなる。上位用ALU24の演算結果の16ビットデータは上位用Aレジスタ26へ、下位用ALU18の演算結果の16ビットデータは下位用Aレジスタ20へ格納される。そしてふたたびALU(18、24)へのデータ供給元になる。
上記のように、画像処理の過程において処理されるデータサイズは16ビットとなる。最終的に画像処理の結果がレジスタファイル60に戻されるときには、8ビット2個のデータに整形されて戻される。ここでの整形は、データをビットシフトしてから下位8ビットだけを採用するなどのデータ加工を行い、シフタ(Shift Expand)16で上位側の格納データ8ビットと下位側の格納データ8ビットとを合成して1個の16ビットデータとすることである。
次に、図6に示す画素の第2の配置パターンが用いられている第3の実施形態のSIMD型マイクロプロセッサ2において、隣接画素を参照する処理手順の概要を説明する。上記の1PEで1画素の演算を行う場合と同じく、1つ〜3つ離れた画素の参照のためのレジスタ(6、8)と演算部14の間の経路が、PE配列の両端部で確立されることを個別に説明する。すなわち、図6に示す画素の第2の配列パターンにおいて、画素1〜画素mと画素(m+1)〜画素(2×m)の夫々に関して、隣接画素の参照処理が連続的に確立されることを説明する。
まず、画素(m+1)、画素(m+2)、画素(m+3)を、画素mの演算処理のために参照できる。即ち、画素mはPE[m]の下位側ALU18で処理されるが、PE[m]の下位マルチプレクサ12aは、1つ右隣画素の参照のためにPE[1]の上位レジスタバス12bに、2つ右隣画素の参照のためにPE[2]の上位レジスタバス12bに、3つ右隣画素の参照のためにPE[3]の上位レジスタバス12bに、接続している。従って、画素(m+1)、画素(m+2)、画素(m+3)を参照できる。
次に、画素(m+1)、画素(m+2)を、画素(m−1)の演算処理のために参照できる。即ち、画素(m−1)はPE[m−1]の下位側ALU18で処理されるが、PE[m−1]の下位マルチプレクサ12aは、2つ右隣画素の参照のためにPE[1]の上位レジスタバス12bに、3つ右隣画素の参照のためにPE[2]の上位レジスタバス12bに、接続している。従って、画素(m+1)、画素(m+2)を参照できる。
次に、画素(m+1)を、画素(m−2)の演算処理のために参照できる。即ち、画素(m−2)はPE[m−2]の下位側ALU18で処理されるが、PE[m−2]の下位マルチプレクサ12aは、3つ右隣画素の参照のためにPE[1]の上位レジスタバス12bに、接続している。従って、画素(m+1)を参照できる。
次に、画素m、画素(m−1)、画素(m−2)を、画素(m+1)の演算処理のために参照できる。即ち、画素(m+1)はPE[1]の上位側ALU24で処理されるが、PE[1]の上位マルチプレクサ12bは、1つ左隣画素の参照のためにPE[m]の下位レジスタバス12aに、2つ左隣画素の参照のためにPE[m−1]の下位レジスタバス12aに、3つ左隣画素の参照のためにPE[m−2]の下位レジスタバス12aに、接続している。従って、画素m、画素(m−1)、画素(m−2)を参照できる。
次に、画素m、画素(m−1)を、画素(m+2)の演算処理のために参照できる。即ち、画素(m+2)はPE[2]の上位側ALU24で処理されるが、PE[2]の上位マルチプレクサ12bは、2つ左隣画素の参照のためにPE[m]の下位レジスタバス12aに、3つ左隣画素の参照のためにPE[m−1]の下位レジスタバス12aに、接続している。従って、画素m、画素(m−1)を参照できる。
次に、画素mを、画素(m+2)の演算処理のために参照できる。即ち、画素(m+2)はPE[2]の上位側ALU24で処理されるが、PE[2]の上位マルチプレクサ12bは、3つ左隣画素の参照のためにPE[m]の下位レジスタバス12aに、接続している。従って、画素mを参照できる。
[第4の実施形態]
図4は、本発明の第4の実施形態に係るSIMD型マイクロプロセッサ2の構成図である。第4の実施形態に係るSIMD型マイクロプロセッサ2は、図7に示される画素の第3の配置パターン、図8に示される画素の第4の配置パターン及び図9に示される画素の第5の配置パターンに対するデータ処理、特に一つのPEの演算部が隣接するPEのレジスタのデータを利用するデータ処理を実現する構成を備える。なお、第4の実施形態に係るSIMD型マイクロプロセッサ2は、概略、第2の実施形態に係るSIMD型マイクロプロセッサ2と同様の構成を有するため、同一の部位には同一の符号を付して説明を省略し、両者の差異を中心に説明する。
図4に示されるレジスタファイル60において、PE毎に16ビット・レジスタ(6、8)が複数本内蔵されており、PEの個数分の組でアレイ構成を形成している。それぞれのレジスタ(6、8)は、演算アレイ62に対してポートを備えており、8ビットのリード/ライト兼用の2組のレジスタバス(10a、10b)で演算アレイ62からアクセスされる。2組の8ビットのレジスタバス(10a、10b)は、レジスタの16ビットのうちの下位8ビットと接続する下位レジスタバス10aと、レジスタの16ビットのうちの上位8ビットと接続する上位レジスタバス10bである。図4では、下位レジスタバス10aは実線で、上位レジスタバス10bは破線で示している。図では便宜上、各PE4で7本のレジスタ(6、8)を示している。
演算アレイ62内のデータ経路は、下位側の演算に関係するものを実線で示し、上位側の演算に関係するものを破線で示している。
レジスタ(6、8)と演算部14との接続部分に2個の7対1(7to1)のマルチプレクサ(7to1MUX)(12a、12b)が設けられている。2個の7to1MUX(12a、12b)は8ビットの幅の選択回路で、複数の下位レジスタバス10aに接続する下位マルチプレクサ12aと、複数の上位レジスタバス10bに接続する上位マルチプレクサ12bである。
下位マルチプレクサ12aは、PE4が並ぶ方向(図3における左右の方向)において、左に1つ、2つ及び3つ離れたPE4の下位レジスタバス10aと、右に1つ、2つ及び3つ離れたPE4の下位レジスタバス10aと、当該PE4の下位レジスタバス10aに接続し、それらから一つを選択する。上位マルチプレクサ12bは、PE4が並ぶ方向において、左に1つ、2つ及び3つ離れたPE4の上位レジスタバス10bと、右に1つ、2つ及び3つ離れたPE4の上位レジスタバス10bと、当該PE4の上位レジスタバス10bに接続し、それらから一つを選択する。選択の制御は、それぞれグローバルプロセッサ30により行われる。
7to1MUX(12a、12b)とALU(18、24)の間には、2個のシフタ(Shift Expand)(16a、16b)が設けられている。2個のシフタは、下位用シフタ16aと上位用シフタ16bであり、レジスタ(6、8)から読み出されたデータのビットシフトと拡張を行う。シフタの制御は、グローバルプロセッサ30により個別に行われる。この2個のシフタ(16a、16b)は、相互間で信号を交換しつつ1個のシフタとしてビットシフトと拡張を行えるようにも構成されている。
レジスタファイル60に示される上段3つのレジスタ6は、マイクロプロセッサ外の外部メモリデータ転送装置(図示せず。)から内容の読み出し/書き込みがなされ得るレジスタである。
次に、図4に示す本発明の第4の実施形態に係るSIMD型マイクロプロセッサ2の動作について説明する。
図4のSIMD型マイクロプロセッサ2では、画像データが外部インターフェース70を経て外部から転送されるが、以下では外部メモリデータ転送装置(図示せず。)により、各PE4のレジスタ6に画像データ(画素データ)が既に転送されてあるものとする。
まず、対象画素のデータサイズが16ビットの場合を説明する。これは、図7、図8及び図9に示す画素の配置パターンを利用する場合とは異なり、1PEで1画素の処理を行う場合である。第4の実施形態に係るSIMD型マイクロプロセッサ2において、1PEで1画素の処理が可能であることを説明する。
レジスタ(6、8)のサイズ、及びレジスタ(6、8)からALU(18、24)への経路の幅は、上位・下位合わせて16ビットなので、16ビットデータを問題なく転送できる。途中の上位用・下位用のシフタ(16b、16a)は、連動してデータを32ビットに拡張する。拡張されたデータのうち、上位16ビットが上位用ALU24へ、下位16ビットが下位用ALU18へ導かれる。このデータを“データX”とする。このとき、7to1MUX(12a、12b)が、必ず上位側と下位側とが同じ動作を行うように、グローバルプロセッサ30が制御する。
演算結果を格納すると共にALU(18、24)へのデータの供給元になっているAレジスタ(20,26)も、上位・下位併せて32ビットのデータをALU(18、24)へ供給する。このデータを“データY”とする。ALU(18、24)は、データXとデータYの入力を受けて演算処理する。このとき上位用ALU24と下位用ALU18は32ビットの一つの演算器として動作する。一般に、或るサイズの演算器として動作する演算器を2個使って倍のサイズの演算を行うには、それら2個の演算器相互間にいくつかの信号伝達が必要とされる。ここでは、上位ALU24と下位ALU18との間に設けられた情報伝達経路を使用する。
上記のデータXとデータYの演算は、32ビットのデータ同士の演算であり演算結果も32ビットとなる。演算結果の上位16ビットは上位用Aレジスタ26へ、下位16ビットは下位用Aレジスタ20へ格納される。そして再びALU(18、24)へのデータ供給元へとなっていく。
上記のように、画像処理の過程において処理されるデータサイズは32ビットとなる。最終的に画像処理の結果がレジスタファイル60に戻されるときには、16ビットのデータに整形されて戻される。ここでの整形は、データをビットシフトしてから下位16ビットだけを採用するなどのデータ加工のことである。
画像処理、例えばフィルタ加工などの処理において、隣接する画素のデータを必要とする場合がある。図4に示すSIMD型マイクロプロセッサ2では、レジスタ(6、8)と演算部14との接続部分に7対1(7to1)のマルチプレクサ(7to1MUX)(12a、12b)が設けられており、PEが並ぶ方向(図4における左右方向)において、左に1つ、2つ及び3つ隣のPE4のレジスタと、右に1つ、2つ及び3つ隣のPE4のレジスタを選択できるようになっている。ここで、画素の配置順序とPEの配置順序とを一致させておけば、隣接するPEに隣接する画素データが格納されていることになり、各PE4の演算部14での演算に隣接画素データを反映することができる。このとき、下位側MUX12aと上位側MUX12bとが、必ず同じ動作を行うように、グローバルプロセッサ30が制御する。
次に、画素データサイズが8ビットの場合を説明する。これは、図7、図8又は図9に示す画素の配置パターン(第3の配置パターン、第4の配置パターン、又は第5の配置パターン)を利用する場合、即ち、1PEで2画素の処理を行う場合である。1PE2画素の処理が可能であることを説明する。
画素データサイズが8ビットであるとき、図4に示すSIMD型マイクロプロセッサ2では個々のPE4は2個の画素を対象として画像処理を行う。まず、レジスタ(6、8)には、8ビットのデータが2個格納される。即ち、レジスタ(6、8)のデータサイズ16ビットのうち、上位8ビットと下位8ビットで別の画素データが格納される。レジスタ(6、8)から演算部14へデータ転送では、上位8ビットが上位レジスタバス10bを経由し、下位8ビットが下位レジスタバス10aを経由する。
レジスタ(6、8)のデータは、上位用MUX12b若しくは下位用MUX12aを経て、演算アレイ62に導かれる。
途中の上位用・下位用のシフタ(16b、16a)で、上位8ビットデータ及び下位8ビットデータは、夫々16ビットに拡張され、上位16ビットが上位用ALU24へ、下位16ビットが下位用ALU18へ導かれる。この上位データを“データXH”、下位データを“データXL”とする。
下位レジスタバス10a上のデータから“データXL”を生成する下位用シフタ16aの動作と、上位レジスタバス10b上のデータから“データXH”を生成する上位用シフタ16bの動作は、夫々独立してグローバルプロセッサ30から制御される。例えば、1ビットのビットシフトを行って下位レジスタバス10a上のデータを2倍してデータXLを生成し、2ビットのビットシフトを行って上位レジスタバス10b上のデータの値を4倍してデータXHを生成する、というような動作の制御が可能である。
演算結果を格納すると共にALU(18、24)へのデータの供給元になっているAレジスタ(20、26)も、下位16ビット、上位16ビットのデータをALU18、ALU24へ供給する。この上位データを“データYH”、下位データを“データYL”とする。下位ALU18はデータXLとデータYLの入力を受けて演算処理する。上位ALU24はデータXHとデータYHの入力を受けて演算処理する。このとき上位ALU24と下位ALU18は、16ビットの演算器として独立に動作する。このとき、上位ALU24と下位ALU18の間に設けられた情報伝達経路は使用されない。
上記のデータXLとデータYLの演算、及びデータXHとデータYHの演算は、16ビットのデータ同士の演算であり、演算結果も夫々16ビットとなる。上位用ALU24の演算結果の16ビットデータは上位用Aレジスタ26へ、下位用ALU18の演算結果の16ビットデータは下位用Aレジスタ20へ格納される。そしてふたたびALU(18、24)へのデータ供給元になる。
上記のように、画像処理の過程において処理されるデータサイズは16ビットとなる。最終的に画像処理の結果がレジスタファイル60に戻されるときには、8ビット2個のデータに整形されて戻される。ここでの整形は、データをビットシフトしてから下位8ビットだけを採用するなどのデータ加工を行い、2個のシフタ(16a、16b)で上位側の格納データ8ビットと下位の格納データ8ビットを合成して1個の16ビットデータとすることである。
[その他の実施形態]
以上の実施形態の説明では、1PEで2個の処理を実施できる形態を示してきたが、本発明を利用すれば1PEで3個以上の数の画素を処理するSIMD型マイクロプロセッサを作成することも可能である。
[第2〜第4の実施形態の有効性について]
SIMD型マイクロプロセッサにおいて、図5、図6、図7、図8及び図9に示すような画素の配置パターンを利用して、1個のPEで2個の画素を処理するようにすれば、まず処理能力が2倍になる。
更に、図5に示す画素の第1の配置パターンを利用して図2に示す第2の実施形態に係るSIMD型マイクロプロセッサで1個のPEで2個の画素を処理する場合、若しくは、図6に示す画素の第2の配置パターンを利用して図3に示す第3の実施形態に係るSIMD型マイクロプロセッサで1個のPEで2個の画素を処理する場合、次のような有効性がある。
PE配列の両端付近のPEが、隣接するPEが存在しない方向へのデータ参照をした場合、正しくないデータで演算がされることになる。そのため、両端から数個の画素データは正しくない内容となり、結局これら数個の画素データは無効画素として放棄されることになる。図10及び図11の例により説明する。図10では、画像データの水平方向の画素数を480とし、SIMD型マイクロプロセッサで1回に処理できる画素数を96としている。両端に無効画素が発生しない処理であれば、5回の処理を繰り返すことで全体の処理が完了する。次に図11にて、両端に無効画素の発生する場合を示す。両端からそれぞれ16画素が無効画素となるとすると、正しい結果となる有効画素部分は64画素であり、結局480画素全体を処理するのに8回の繰り返しが必要とされる。
ここで、処理能力が2倍になり、且つ処理対象となる画素が同一ライン上の連続する画素である場合(即ち、図5又は図6の配置パターンが利用される場合)、1回の処理では96画素の2倍の192画素が処理され得ることになる(図12参照)。両端からそれぞれ16画素(無効画素)を除くと、有効画素は160画素となる。そうすると図12に示すように、480画素である全体の処理を完了させるのには、3回の繰り返しでよいことになる。従ってこの場合、処理能力は2倍以上に向上すると言える。
また、図8に示す画素の第4の配置パターンを利用する第4の実施形態に係るSIMD型マイクロセッサでは、同一画像データの2ライン同時処理が可能になる。画像処理においては、通常すべてのラインで同様のデータ処理を繰り返す。但し、フィルタ処理などでは、ラインの上下で係数が異なり、ビットシフト量による倍率の制御をライン毎に切り替える場合があるが、本実施形態では、ライン毎の制御の切り替えを可能としている。
また、図9に示す画素の第5の配置パターンを利用する第4の実施形態に係るSIMD型マイクロセッサでは、複数の同じサイズの画像データを並行処理することが可能である。通常、カラー画像処理ではRGB方式やCYMK方式などの方式が利用され、3色〜4色の色ごとに画像データが作られる。従って、一つの画像に対して、同じサイズの画像データが3〜4個生成されることになる。このような画像処理では、各色のデータに対して、色毎の係数を設定することがあるが、本実施形態では、色毎の制御の切り替えを可能としている。
本発明の第1の実施形態に係るSIMD型マイクロプロセッサの構成図である。 本発明の第2の実施形態に係るSIMD型マイクロプロセッサの構成図である。 本発明の第3の実施形態に係るSIMD型マイクロプロセッサの構成図である。 本発明の第4の実施形態に係るSIMD型マイクロプロセッサの構成図である。 右部は画像データにおける画素の配置図であり、左部はSIMD型マイクロプロセッサ上の画素の第1の配置パターンである。 右部は画像データにおける画素の配置図であり、左部はSIMD型マイクロプロセッサ上の画素の第2の配置パターンである。 右部は画像データにおける画素の配置図であり、左部はSIMD型マイクロプロセッサ上の画素の第3の配置パターンである。 右部は画像データにおける画素の配置図であり、左部はSIMD型マイクロプロセッサ上の画素の第4の配置パターンである。 右部は画像データにおける画素の配置図であり、左部はSIMD型マイクロプロセッサ上の画素の第5の配置パターンである。 画像データの水平方向の画素数を480とし、SIMD型マイクロプロセッサで1回に処理できる画素数を96とした場合に、両端に無効画素が発生しない処理であれば、5回の処理を繰り返すことで全体の処理が完了することを示す概念図である。 画像データの水平方向の画素数を480とし、SIMD型マイクロプロセッサで1回に処理できる画素数を96とした場合に、両端からそれぞれ16画素が無効画素となるとすると、全体を処理するのに8回の繰り返しが必要とされることを示す概念図である。 画像データの水平方向の画素数を480とし、SIMD型マイクロプロセッサで1回に処理できる画素数が192である場合に、両端からそれぞれ16画素が無効画素となっても、3回の処理を繰り返すことで全体の処理が完了することを示す概念図である。 人物の画像の例(図13(1))、人物の画像の例の一部の拡大図(図13(2))、及び画素データの例(図13(3))である。 画像データの構成例である。 従来技術のSIMD型マイクロプロセッサの詳しい構成例である。 従来技術のSIMD型マイクロプロセッサの構成例である。
符号の説明
2・・・SIMD型マイクロプロセッサ、4・・・プロセッサエレメント(PE)、10、10a、10b・・・・レジスタバス、12、12a、12b・・・7to1MUX(7対1マルチプレクサ)、14・・・演算部、16、16a、16b・・・シフタ、18、24・・・ALU(演算器)、20、26・・・Aレジスタ、30・・・グローバルプロセッサ、64・・・スイッチ。

Claims (10)

  1. m個(mは2以上の自然数)のプロセッサエレメントを備え、
    各プロセッサエレメントは、データを一時記憶する複数のレジスタと、演算部と、レジスタと演算部との間のデータ転送を行う経路を備えるSIMD型マイクロプロセッサにおいて、
    各プロセッサエレメントの演算部は、n個(nは2以上の自然数)の演算回路を含みこれら演算回路によって一度に最大n個のデータ処理を行い、
    同一の若しくは複数のライン分の連続データを配置することに関して、
    m個のプロセッサエレメントには並びの順序が決められており、各プロセッサエレメントのn個の演算回路には、全プロセッサエレメントで同一の配置の順序が定められており、
    連続するデータを同時処理する場合、(m×n)個の演算回路への処理の配置は、上記のプロセッサエレメントの並びの順序よりも、各プロセッサエレメントでの演算回路の配置の順序に優先的に従うものとされていることを特徴とするSIMD型マイクロプロセッサ。
  2. 演算回路が、付属するプロセッサエレメントに備わるレジスタ及び隣接するプロセッサエレメントに備わるレジスタとのデータ転送の経路を有し、
    同時処理される連続するデータにおける隣接するデータを上記経路により転送することを特徴とする請求項1に記載のSIMD型マイクロプロセッサ。
  3. m個(mは2以上の自然数)のプロセッサエレメントを備え、
    各プロセッサエレメントは、データを一時記憶する複数のレジスタと、演算部と、レジスタと演算部との間のデータ転送を行う経路を備えるSIMD型マイクロプロセッサにおいて、
    各プロセッサエレメントの演算部は、n個(nは2以上の自然数)の演算回路を含みこれら演算回路によって一度に最大n個のデータ処理を行い、
    同一の若しくは複数のライン分の連続データを配置することに関して、
    m個のプロセッサエレメントには並びの順序が決められており、各プロセッサエレメントのn個の演算回路には配置の順序が定められており、
    連続するデータを同時処理する場合、(m×n)個の演算回路への処理の配置は、上記の各プロセッサエレメントでの演算回路の配置の順序よりも、プロセッサエレメントの並びの順序に優先的に従うものとされていることを特徴とするSIMD型マイクロプロセッサ。
  4. 演算回路が、付属するプロセッサエレメントに備わるレジスタ及び隣接するプロセッサエレメントに備わるレジスタとのデータ転送の経路を有し、
    更に、プロセッサエレメントの全体配置の両端のうちの少なくとも一方の付近のプロセッサエレメントに付属する演算回路が、プロセッサエレメントの全体配置の両端のうちの他方の付近のプロセッサエレメントに備わるレジスタとのデータ転送の経路を有し、
    演算回路は、同時処理される連続するデータにおける隣接するデータを上記経路により転送することを特徴とする請求項3に記載のSIMD型マイクロプロセッサ。
  5. 各プロセッサエレメントにおけるn個の演算回路が、夫々、ビットシフトするシフト装置を備え、
    夫々のプロセッサエレメント内で一つの配置の順序が付されている演算回路が備えるシフト装置と、夫々のプロセッサエレメント内で別の配置の順序が付されている演算回路が備えるシフト装置とに対して、別途にシフト量が指定されるように構成されていることを特徴とする請求項3に記載のSIMD型マイクロプロセッサ。
  6. m個(mは2以上の自然数)のプロセッサエレメントを備え、
    各プロセッサエレメントが、データを一時記憶する複数のレジスタと、演算部と、レジスタと演算部との間のデータ転送を行う経路を備え、
    各プロセッサエレメントの演算部が、n個(nは2以上の自然数)の演算回路を含みこれら演算回路によって一度に最大n個のデータ処理を行うSIMD型マイクロプロセッサを、利用して行うデータ処理方法であって、
    同一の若しくは複数のライン分の連続データを配置することに関して、
    m個のプロセッサエレメントに並びの順序を決めておき、更に各プロセッサエレメントのn個の演算回路に、全プロセッサエレメントで同一の配置の順序を定めておき、
    (m×n)個の演算回路へデータ処理を配置する際、上記のプロセッサエレメントの並びの順序よりも、各プロセッサエレメントでの演算回路の配置の順序に優先的に従って配置して、連続データの同時処理を行うことを特徴とするデータ処理方法。
  7. 演算回路が、付属するプロセッサエレメントに備わるレジスタ及び隣接するプロセッサエレメントに備わるレジスタとのデータ転送の経路を有しており、
    上記経路を介して、同時処理される連続するデータにおける隣接するデータを転送することを特徴とする請求項6に記載のデータ処理方法。
  8. m個(mは2以上の自然数)のプロセッサエレメントを備え、
    各プロセッサエレメントが、データを一時記憶する複数のレジスタと、演算部と、レジスタと演算部との間のデータ転送を行う経路を備え、
    各プロセッサエレメントの演算部が、n個(nは2以上の自然数)の演算回路を含みこれら演算回路によって一度に最大n個のデータ処理を行うSIMD型マイクロプロセッサを、利用して行うデータ処理方法であって、
    同一の若しくは複数のライン分の連続データを配置することに関して、
    m個のプロセッサエレメントに並びの順序を決めておき、更に各プロセッサエレメントのn個の演算回路に配置の順序を定めておき、
    (m×n)個の演算回路へデータ処理を配置する際、上記の各プロセッサエレメントでの演算回路の配置の順序よりも、プロセッサエレメントの並びの順序に優先的に従って配置して、連続データの同時処理を行うことを特徴とするデータ処理方法。
  9. 演算回路が、付属するプロセッサエレメントに備わるレジスタ及び隣接するプロセッサエレメントに備わるレジスタとのデータ転送の経路を有しており、
    更に、プロセッサエレメントの全体配置の両端のうちの少なくとも一方の付近のプロセッサエレメントに付属する演算回路が、プロセッサエレメントの全体配置の両端のうちの他方の付近のプロセッサエレメントに備わるレジスタとのデータ転送の経路を有しており、
    上記経路を介して、同時処理される連続するデータにおける隣接するデータを転送することを特徴とする請求項8に記載のデータ処理方法。
  10. 各プロセッサエレメントにおけるn個の演算回路が、夫々、ビットシフトするシフト装置を備え、
    夫々のプロセッサエレメント内で一つの配置の順序が付されている演算回路が備えるシフト装置と、夫々のプロセッサエレメント内で別の配置の順序が付されている演算回路が備えるシフト装置とに対して、別途にシフト量を指定することを特徴とする請求項8に記載のデータ処理方法。
JP2005080548A 2005-03-18 2005-03-18 Simd型マイクロプロセッサ及びデータ処理方法 Expired - Fee Related JP4478050B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005080548A JP4478050B2 (ja) 2005-03-18 2005-03-18 Simd型マイクロプロセッサ及びデータ処理方法
US11/377,521 US20060236075A1 (en) 2005-03-18 2006-03-17 SIMD microprocessor and data processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005080548A JP4478050B2 (ja) 2005-03-18 2005-03-18 Simd型マイクロプロセッサ及びデータ処理方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2010030389A Division JP5055393B2 (ja) 2010-02-15 2010-02-15 Simd型マイクロプロセッサ

Publications (2)

Publication Number Publication Date
JP2006260479A JP2006260479A (ja) 2006-09-28
JP4478050B2 true JP4478050B2 (ja) 2010-06-09

Family

ID=37099600

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005080548A Expired - Fee Related JP4478050B2 (ja) 2005-03-18 2005-03-18 Simd型マイクロプロセッサ及びデータ処理方法

Country Status (2)

Country Link
US (1) US20060236075A1 (ja)
JP (1) JP4478050B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8031208B2 (en) * 2005-12-26 2011-10-04 Kabushiki Kaisha Toshiba Drawing apparatus and method for processing plural pixels in parallel
WO2007116560A1 (ja) * 2006-03-30 2007-10-18 Nec Corporation 並列画像処理システムの制御方法および装置
JP4801605B2 (ja) 2007-02-28 2011-10-26 株式会社リコー Simd型マイクロプロセッサ
JP4913685B2 (ja) * 2007-07-04 2012-04-11 株式会社リコー Simd型マイクロプロセッサおよびsimd型マイクロプロセッサの制御方法
JP4690362B2 (ja) * 2007-07-04 2011-06-01 株式会社リコー Simd型マイクロプロセッサおよびsimd型マイクロプロセッサのデータ転送方法
JP5760532B2 (ja) * 2011-03-14 2015-08-12 株式会社リコー プロセッサ装置及びその演算方法
JP2014016894A (ja) * 2012-07-10 2014-01-30 Renesas Electronics Corp 並列演算装置、並列演算装置を備えたデータ処理システム、及び、データ処理プログラム
US9378181B2 (en) * 2012-11-09 2016-06-28 Intel Corporation Scalable computing array
JP6149003B2 (ja) * 2014-05-30 2017-06-14 京セラドキュメントソリューションズ株式会社 Simd型プロセッサー

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4785393A (en) * 1984-07-09 1988-11-15 Advanced Micro Devices, Inc. 32-Bit extended function arithmetic-logic unit on a single chip
US5669010A (en) * 1992-05-18 1997-09-16 Silicon Engines Cascaded two-stage computational SIMD engine having multi-port memory and multiple arithmetic units
JP4317624B2 (ja) * 1999-09-10 2009-08-19 メディア・テック・ユーエスエイ・インコーポレーテッド 画像処理装置
US7191310B2 (en) * 2000-01-19 2007-03-13 Ricoh Company, Ltd. Parallel processor and image processing apparatus adapted for nonlinear processing through selection via processor element numbers
JP3779540B2 (ja) * 2000-11-08 2006-05-31 株式会社ルネサステクノロジ 複数レジスタ指定が可能なsimd演算方式
JP3719509B2 (ja) * 2002-04-01 2005-11-24 株式会社ソニー・コンピュータエンタテインメント シリアル演算パイプライン、演算装置、算術論理演算回路およびシリアル演算パイプラインによる演算方法
JP3985797B2 (ja) * 2004-04-16 2007-10-03 ソニー株式会社 プロセッサ

Also Published As

Publication number Publication date
JP2006260479A (ja) 2006-09-28
US20060236075A1 (en) 2006-10-19

Similar Documents

Publication Publication Date Title
JP4478050B2 (ja) Simd型マイクロプロセッサ及びデータ処理方法
JP2009523292A (ja) 並列処理システムにおけるマルチメディア・データ処理をスケジューリングするための方法及び装置
JP4690362B2 (ja) Simd型マイクロプロセッサおよびsimd型マイクロプロセッサのデータ転送方法
JP3985797B2 (ja) プロセッサ
JP2008047031A (ja) 並列演算装置
JP5055393B2 (ja) Simd型マイクロプロセッサ
JP2007094846A (ja) リコンフィグ可能な画像処理用アドレス生成回路及びそれを有するリコンフィグlsi
JP2814860B2 (ja) 画像拡大縮小装置
JP7154788B2 (ja) 半導体装置
KR20090005312A (ko) 고속 pe 간 데이터 재배치 기능을 갖는 프로세서 어레이 시스템
JP2007073010A (ja) Simd方式プロセッサ、当該simd方式プロセッサを利用する画像処理方法、及び画像処理装置
JP3971543B2 (ja) Simd型プロセッサ
JP4482356B2 (ja) Simdプロセッサを用いた画像処理方法及び画像処理装置
CN108805846B (zh) 二值图像处理优化的方法及其系统
JP4442907B2 (ja) Simd型プロセッサ
JP5369669B2 (ja) Simd型マイクロプロセッサ
JP4933462B2 (ja) 画像処理方法
JP4516495B2 (ja) Simd型マイクロプロセッサにおけるデータ処理方法
JP4442905B2 (ja) 画像データの処理方法
JP3837293B2 (ja) 定数選択機能を有するsimd型マイクロプロセッサ
JPH06309349A (ja) プログラム制御のプロセッサ
JP3861483B2 (ja) ハーフトーン生成装置およびハーフトーン生成方法
JP5760532B2 (ja) プロセッサ装置及びその演算方法
JP3969580B2 (ja) データ処理装置、画像処理装置、画像形成装置、プログラム及び記憶媒体
JP2009175830A (ja) Simd型マイクロプロセッサ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071127

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090827

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090908

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091106

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091215

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100215

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100312

R150 Certificate of patent or registration of utility model

Ref document number: 4478050

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130319

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140319

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees