JPWO2007116560A1 - 並列画像処理システムの制御方法および装置 - Google Patents

並列画像処理システムの制御方法および装置 Download PDF

Info

Publication number
JPWO2007116560A1
JPWO2007116560A1 JP2008509691A JP2008509691A JPWO2007116560A1 JP WO2007116560 A1 JPWO2007116560 A1 JP WO2007116560A1 JP 2008509691 A JP2008509691 A JP 2008509691A JP 2008509691 A JP2008509691 A JP 2008509691A JP WO2007116560 A1 JPWO2007116560 A1 JP WO2007116560A1
Authority
JP
Japan
Prior art keywords
element processor
instruction
data
processed
operation code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2008509691A
Other languages
English (en)
Other versions
JP5077579B2 (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 JP2008509691A priority Critical patent/JP5077579B2/ja
Publication of JPWO2007116560A1 publication Critical patent/JPWO2007116560A1/ja
Application granted granted Critical
Publication of JP5077579B2 publication Critical patent/JP5077579B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • 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
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Image Processing (AREA)

Abstract

【課題】処理対象画像の幅方向画素数よりもPE数の少ない1次元SIMD並列画像処理システムにおいて画像全体に対する処理を行う際、必要となるプログラムコード量を削減する。【解決手段】PEアレイ1を制御するコントローラ2内に、命令の反復実行部22を有し、その内部にオペランド変換部221、メモリアドレス変換部222、オペコード変換部223を有する。プログラムメモリ3に格納されたプログラムコードを命令フェッチ・デコード部22が読み出して実行する際、反復実行部22がプログラムコードを判断し、命令に応じてオペランド変換部221、メモリアドレス変換部222、オペコード変換部223による変換を行い、1命令のプログラム記述を各PEに割り当てられた複数の処理対象画素に適応した反復実行を行うことにより、プログラムコード量が削減できる。【選択図】図1

Description

本発明は並列画像処理システムに係り、特に1次元SIMD(Single Instruction Multiple Data)プロセッサアレイ構造からなる並列画像処理システムの制御方法および装置に関する。
従来の並列画像処理システムの一例が特許2839026号公報(特許文献1)および特開2002−7359号公報(特許文献2)に記載されている。この従来の並列画像処理システムは、多数の演算要素プロセッサ(Processor Element、以下「PE」という。)が1次元並列接続されたPEアレイと、それらを制御するコントローラとから構成されてる。各PEは演算処理を行う演算部(ALU)、処理対象画像の局所的な画素値を格納するローカルメモリおよび一時的な演算結果を保持するレジスタから構成されている。
このような構成を有する従来の並列画像処理システムは、ローカルメモリに格納された処理対象画像の特定行に対して何らかの演算を行う場合、ローカルメモリの特定行に対応するアドレスから画素値を読み出し、レジスタに格納する。レジスタに格納した画素値を読み出し、ALUで演算を行い、演算結果をレジスタに格納する。レジスタに格納した演算結果をローカルメモリの特定行に格納する。演算において、処理対象とする画素の周辺に位置する画素値が必要な場合は、PE間のデータ転送部を用いて必要な画素値を収集して演算を行う。
また、特開2004−362086号公報(特許文献3)には、システムが処理対象となる画像に最適なPE数を持たない場合のプログラム効率を向上させるため、PEの並列度に応じて自動的にPE命令を繰り返し実行する機能を備えたSIMD型並列処理システムが記載されている。この並列処理システムにおいては、プログラムによって指示される並列度情報とSIMD演算器の並列度情報とから繰り返し実行回数を算出し、システムの持つPE数に応じて必要となる回数のPE命令の自動繰り返し実行を実現している。
特許2839026号公報(図1、段落0008など) 特開2002−7359号公報(図1、段落0014〜0016など) 特開2004−362086号公報(段落0011〜0021、図1など)
しかしながら、上記従来の並列画像処理システムでは、PE数が処理対象画像の幅方向画素数より少なく、各PEに複数画素を割り当てて処理を行う場合のメモリ上における画素の配置、PE間にまたがったデータ取得の自動化について何ら考慮されていない。
上記特許文献3に記載されたシステムでは、同一命令あるいは同一サブルーチンの繰り返し実行を行っているが、このような単純な繰り返し実行では隣接PEとの通信を含む処理を自動化することはできない。近隣画素値を必要とするような処理を実現するためには、必要な近隣画素値が同一PE内あるいは隣接PE内のいずれに割り当てられているかに応じた特別な処理の追加が必要となり、プログラムコード量が増大してしまう。
本発明の目的は、近隣画素値を必要とする処理の自動化を可能にする新規な並列画像処理システムおよびその制御方法を提供することにある。
本発明の他の目的は、近隣画素値を必要とするような処理においても、処理対象画像の幅方向画素数と同一PE数を持つ1次元SIMD並列画像処理システムと同程度のプログラムコード量で画像全体に対する画像処理を実行できる画像処理システムの制御方法および装置を提供することにある。
本発明は、処理対象データ数より少ない個数の要素プロセッサを有し、各要素プロセッサが複数個の処理対象データを処理する並列画像処理システムの制御方法であり、要素プロセッサに割り当てた処理対象データ数に応じて命令を自動的に反復実行し、所定命令を反復実行する際、反復中のそれぞれの実行時に処理するデータに応じてオペコードを置き換え、置き換えられたオペコードによって要素プロセッサを制御することを特徴とする。
本発明の一実施形態よれば、処理対象画像の幅方向画素数より少ない個数の要素プロセッサを有し、各要素プロセッサが複数個の画素を処理する1次元プロセッサアレイ構造からなる並列画像処理システムの制御方法であって、要素プロセッサに割り当てた画素数に応じて命令を自動的に反復実行し、隣接画素の画素値取得命令を反復実行する際、処理する画素の位置に応じてオペコードを隣接要素プロセッサからの画素値転送命令と自要素プロセッサ上の画素値取得命令の組み合わせに置き換え、置き換えられたオペコードによって前記要素プロセッサを制御することを特徴とする。
さらに、各要素プロセッサに割り当てた画素数に合わせてレジスタ群を分割して利用し、反復実行時に利用するレジスタ群を切り替えるようにオペランドを書き換え、メモリアクセス命令の反復実行時に前記要素プロセッサに割り当てた画素数に合わせたオフセット値をアドレスに加算する、ことを特徴とする。
本発明の一実施例による並列画像処理システムは、プログラムに従ってPEアレイを制御するコントローラ内に、プログラム中の各アドレスの命令を各PEに割り当てられた画素数に応じて自動的に反復実行するための手段を有し、さらに、反復実行する命令中のオペランドを変換する手段と、反復実行する命令中のメモリアクセス時のアドレスを変換する手段と、反復実行時に各PEに割り当てられた複数の画素中の画素位置に応じてオペコードを変換する手段とを有する。
このような構成を採用し、プログラムに記述された1つの命令を各PEに割り当てられた複数の処理対象画素に対して自動的に反復実行、オペコード変換することにより、近隣画素値を必要とする処理の自動化が可能となり、処理対象画像の幅方向画素数と同一PE数を持つ1次元SIMD並列画像処理システムと同程度のプログラムコード量で画像全体に対する画像処理を実行できる。
上述したように、本発明によれば、要素プロセッサに割り当てた処理対象データ数に応じて命令を自動的に反復実行し、所定命令を反復実行する際、反復中のそれぞれの実行時に処理するデータに応じてオペコードを置き換え、置き換えられたオペコードによって要素プロセッサを制御する。これによって、実行対象の画素位置に応じて異なる動作を行う必要がある周辺画素値の取得命令等において画素位置を考慮した命令変換を行うことができ、近隣画素値を必要とする処理の自動化を少ないプログラムコード量で実現することができる。
また、処理対象画像の幅方向画素数より少ないPE数を持つ1次元SIMD画像処理システムにおいて、コントローラ内に有する反復実行手段、オペランドを変換する手段およびメモリアドレスを変換する手段により、1画素に対する命令のプログラム記述のみで自動的に反復実行することができ、また、オペコードを変換することにより、近隣画素値を必要とする処理の自動化が可能となりプログラムコード量を増大せせることなく画像全体に対する画像処理を実行できる。
以下、本発明の実施形態を図に基づいて詳細に説明する。
1.システム構成
図1は本発明の一実施形態による並列画像処理システムの機能的構成を示すブロック図である。本実施形態による並列画像処理システムは、画像処理におけるそれぞれの命令動作を行うPEアレイ1と、プログラムによりPEアレイ1の動作を制御するコントローラ2と、実行すべき画像処理を記述したプログラムを格納するプログラムメモリ3とを含む。
PEアレイ1は多数のPE10が1次元に配列され接続された構成を有し、各PEが同一プログラムを実行するSIMD方式として構成されている。ただし、図1では煩雑にならないように隣接する3つのPEだけが図示されている。
各PE10は、ローカルメモリ11、演算部12およびレジスタ群13を含む。PEアレイ1に含まれるPE10の個数は処理対象画像の幅方向画素数の整数分の1であることが望ましい。各PE10に同一数の画素を割り当てることができるためである。ただし、この整数分の1という条件を満たさない場合でも本発明は適用可能であり、同様の効果を得ることができる。
コントローラ2はPEアレイ1の動作シーケンスを制御するユニットであり、命令フェッチ・デコード部21および反復実行部22を含む。反復実行部22はコントローラ2が実行する命令に対して各PEに割り当てられた処理対象画素数に応じて反復実行を行うためのユニットであり、オペランド変換部221、メモリアドレス変換部222、オペコード変換部223、反復実行カウンタ224、反復実行指定レジスタ225、および、処理対象画像高さレジスタ226を含む。
反復実行カウンタ224は、反復実行部22において反復実行指定レジスタ225の値で指定された回数の命令反復実行の際に用いるカウンタCRである。反復実行指定レジスタ225は、命令の反復実行を行う際の反復回数NRを指定し保持するレジスタであり、PE数と処理対象画像の幅方向画素数との比によって必要となる反復回数、すなわち各PEに割り当てられた処理対象画素数を指定する。処理対象画像高さレジスタ226は、処理対象とする画像の高さ方向の画素数NHを格納し保持するレジスタであり、この値はメモリアクセス命令の反復実行時に処理対象画像が格納されたアドレスのオフセット値算出に用いる。
1.1)PEアレイ
PEアレイ1は、各PE10に処理対象画像の画素を割り当て、各PEで同一の命令を並列に動作させることにより画像処理動作を行う。PE10は、処理対象画像中の割り当てられた画素値を格納、演算する要素プロセッサであり、通常のプロセッサの持つ命令実行機能を備え、コントローラ2からの制御信号により命令動作を行う。各PE10はデータの受け渡しを行うために隣接するPE10と接続されている。
ローカルメモリ11は、各PE10が個別に持つメモリであり、演算部12と密接に接続され、処理対象画像中の各PEに割り当てられた画素値を格納する他、処理途中の演算結果等を格納する。処理対象画像の各PEに割り当てられたそれぞれの画素値を、処理対象画像の高さ方向画素数分のオフセットを持つアドレスにそれぞれ格納する。この時のアドレスオフセット値、すなわち処理対象画像の高さ方向画素数をOmとする。例えば、PEに割り当てられた画素値は、左端の画素値をアドレスAに格納するとした場合、A、A+Om、A+2×Om、A+3×Omのアドレスにそれぞれ格納される。
演算部12は、レジスタ群13の読み出し/書き込み命令、ローカルメモリ11に対する読み出し/書き込み命令、算術演算命令、論理演算命令等を実行するユニットであり、画像処理において、割り当てられた画素値に対する演算等を行う。
レジスタ群13は、各PE10中の演算部12が個別に持つ演算用レジスタであり、演算動作時に入力となる値、出力される演算結果を格納する。各レジスタにはR(0)からR(レジスタ本数−1)までのレジスタ番号を与える。各PE10に対して割り当てられた複数画素を自動的に処理するため、含まれるレジスタ本数を割り当てた画素数で分割して利用する。例えば、各PE10に対して2個の画素を割り当てた場合、レジスタ群13の持つレジスタ本数を前半と後半の2つに分割して利用し、各PE10に対して4個の画素を割り当てた場合にはレジスタ群13の持つレジスタ本数を4分割して利用する。
1.2)コントローラ
コントローラ2は、命令フェッチ・デコード部21によってプログラムメモリ3に格納されたプログラムを逐次読み出し、解釈してPEアレイ1を制御することにより、画像処理を進める。
命令フェッチ・デコード部21は、プログラムメモリ3からプログラムを読み出し、オペコード、オペランドを解釈してPEアレイ1の制御を行う、コントローラ2の中核をなすユニットである。プログラムメモリ3から読み出したオペコード、オペランドを反復実行部22に引き渡して反復実行の判断を行う。反復実行部22が反復実行を行うと判断した場合には、指定回数の反復が完了するまで後続するプログラムの読み出しは停止される。反復実行部22によって反復実行の各ステップに応じて書き換えられたオペコード、オペランドを用いてPEアレイ1を制御する。
反復実行部22は、命令フェッチ・デコード部21より入力されたオペコードが反復実行対象となる命令であるかを判断し、対象命令であった場合には、反復実行カウンタ224を用いて反復実行指定レジスタ225に指定された回数NRの反復実行を行う。また、反復実行が終了するまでの間、命令フェッチ・デコード部21に対して後続する命令のプログラムメモリからの読み出しを停止するよう指示する。反復実行を行う際は、反復実行指定レジスタ225に指定された回数NR、すなわち各PEに割り当てられた処理対象画素数と、反復実行カウンタ224の値CRによって算出できる処理対象画素群中の画素位置に応じて、オペランド変換部221、メモリアドレス変換部222、オペコード変換部223によってオペランド、メモリアドレス、オペコードの変換を行う。
1.3)オペランド変換部
オペランド変換部221は、反復実行時にレジスタ群13中のレジスタ利用部分を処理対象画素位置に応じて切り替えるため、レジスタ番号の変換を行うユニットである。命令フェッチ・デコード部21から入力されたオペコードによってオペランドの変換が必要な命令であるかを判断する。オペランド変換が必要な場合は、PEアレイ1中のレジスタ群13の持つレジスタ本数を反復実行指定レジスタ225に格納された反復実行回数NRによって分割し、分割した各レジスタ本数に反復実行カウンタ224に格納される0から(NR−1)までの値を乗算した値をレジスタ位置切り替えに用いるオフセット値として算出する。
レジスタ本数が反復実行回数NRで分割しきれない場合には小数点以下を切り捨てた整数値を用い、これに反復実行カウンタ224の値CRを乗算してオフセット値を算出する。算出したオフセット値を命令フェッチ・デコード部21から入力されたオペランド(レジスタ番号)に加算することによりオペランド変換を行い、変換結果のオペランドを命令フェッチ・デコード部へ引き渡す。
オフセット値を算出する手段としては除算器や乗算器を用いた構成、テーブルを用いた構成が考えられるが、ここではテーブルを用いてオフセット値を算出するように構成したオペランド変換部221を次に説明する。
図2は本実施形態による並列画像処理システムにおけるオペランド変換部の構成を機能的に示したブロック図である。オペランド変換部221は、レジスタ番号の変換に用いるオフセット値を、反復実行指定レジスタ値NRと反復実行カウンタ値CRをキーとしてオフセット算出テーブルを用いて決定する。ここでは、反復実行指定レジスタ225の値NRによって指定される反復実行回数について、1回(反復実行を行わない)から4回までに対応するオフセット算出テーブル221.1を用意した。
図2におけるオフセット算出テーブル221.1はレジスタ本数がN本であるものとして記載している。オペコードがオペランド変換対象命令であるか否かを判断し(221.6)、その結果により、入力レジスタ番号をそのまま出力するか、オフセット算出テーブル221.1により決定されたオフセット値を加算して(221.5)出力するかを選択する(221.7)。すなわち、オフセット値オペランド変換対象命令である場合には、入力レジスタ番号とオフセット算出テーブル221.1により決定されたオフセット値とを加算した結果を出力し、対象命令でない場合は入力レジスタ番号をそのまま出力する。
また、オペランド変換部221は、オフセット算出テーブル221.1を参照する際の反復実行カウンタ値CRを調整するカウンタ値調整部を有する。これは、隣接画素値の取得命令を反復実行する際に必要となるユニットである。隣接画素値の取得命令を反復実行する際には、反復実行カウンタ224の値CRに応じて、必要とする隣接画素値を隣接PEが保持して、隣接PEから自PEへの画素値転送を行う場合と、必要とする隣接画素値を自PEが保持して、レジスタ番号をオフセットしたレジスタからの参照を行う場合との2通りの場合が存在する。この時、命令が左右どちら側の画素値を参照する命令であるか、転送元が隣接PEであるか、自PEであるかによって、入力オペランドに指定されたレジスタ番号をオフセットしてやることが必要となる。
そこで、図2に示すように、オフセット算出テーブル221.1を参照する際に反復実行カウンタ値CRを差し替える。まずオペコードからカウンタ値CRの調整が必要か否かを判断し(221.2)、必要であればカウンタ値CRを調整し(221.3)、調整された結果を選択して(221.4)オフセット算出テーブル221.1を参照する。カウンタ値CRの調整が不要であれば、入力したカウンタ値CRを選択して(221.4)、オフセット算出テーブル221.1を参照する。
1.4)メモリアドレス変換部
メモリアドレス変換部222は、メモリアクセス命令を反復実行する際にアクセスするアドレスを変換するためのユニットである。命令フェッチ・デコード部21から入力されたオペコードがローカルメモリ11の読み出し/書き込み命令であった場合、処理対象画像高さレジスタ226の値NHと反復実行カウンタ224の値CRとを乗算して得られる値を入力アドレスに加算するアドレス変換を行い、命令フェッチ・デコード部21へ変換済みアドレスを引き渡す。
1.5)オペコード変換部
オペコード変換部223は、反復実行に際して実行対象とする画素位置に応じて異なる動作を行う必要のある左右隣接画素値の取得命令を実行する際に、PEアレイ1で実行するオペコードの変換を行うユニットである。命令フェッチ・デコード部21から入力されたオペコードが左右隣接画素値の取得命令であった場合、反復実行カウンタ224および反復実行指定レジスタ225の値CRおよびNRによって現在実行対象としている画素の各PEに割り当てられた複数画素中における画素位置を算出し、取得すべき隣接画素値が自PEのレジスタに保持されているか、隣接PEのレジスタに保持されているかを判断し、自PEレジスタからの読み出し、あるいは右側隣接PEからのレジスタ値転送となるよう変換したオペコードを命令フェッチ・デコード部21へ引き渡す。
2.動作
図3は本実施形態による並列画像処理システムの全体的動作を示すフローチャートである。命令フェッチ・デコード部21がプログラムメモリ3に格納されたプログラムから実行すべきアドレスのプログラムコードを読み出し、反復実行部22に供給する(ステップA1)。反復実行部22は供給されたプログラムコードのオペコードが反復実行対象命令であるか否かを判断する(ステップA2)。反復実行対象命令ではないと判断した場合には(ステップA2のNO)、プログラムコードをそのまま命令フェッチ・デコード部21に引き渡し、PEアレイ1を制御し命令処理を行う(ステップA3、A4)。
オペコードが反復実行対象命令であると判断した場合には(ステップA2のYES)、反復実行カウンタ224の値CRを0に初期化し(ステップA5)、オペランド変換部221、メモリアドレス変換部222およびオペコード変換部223にプログラムコードを引き渡す(ステップA6、A7、A8)。
命令フェッチ・デコード部21は、オペランド変換部221、メモリアドレス変換部222およびオペコード変換部223によって変換されたプログラムコードを受け取り(ステップA9)、これを解釈してPEアレイ1を制御し、各命令に応じた処理を行う(ステップA10)。
その後、反復実行カウンタ224の値CRを1だけインクリメントさせ(ステップA11)、反復実行指定レジスタ225の値NRと比較を行う(ステップA12)。反復実行カウンタ224の値CR<反復実行指定レジスタ225の値NRであれば(ステップA12のNO)、ステップA6、A7、A8へ戻って反復実行を行う。反復実行カウンタ224の値CRが反復実行指定レジスタ225の値NRと等しくなった時点で(ステップA12のYES)、入力プログラムコードの1ステップに対して必要な回数の反復実行が終了したものとして、次のプログラムコードの処理へ進む。
以下、オペランド変換部221、メモリアドレス変換部222およびオペコード変換部223がそれぞれ実行するステップA6、A7およびA8について詳細に説明する。
2.1)オペランド変換
図4は本実施形態による並列画像処理システムのオペランド変換動作を示すフローチャートである。オペランド変換部221は、命令フェッチ・デコード部21から入力されたプログラムコード中に含まれる入力元、出力先となる各オペランドについて、オペコードとオペランド位置によって変換対象とすべきであるか否かを判断する(ステップB1)。オペランドが変換対象でない場合には(ステップB1のNO)、変換を行わず入力されたレジスタ番号をそのまま出力する。
オペランドが変換対象である場合には(ステップB1のYES)、さらにオペコードが隣接画素値の取得命令であるかを判断する(ステップB2)。上述したように、隣接画素値の取得命令を反復実行する際には、反復実行カウンタ224の値CRに応じて、取得するべき隣接画素値を隣接PEが保持しており隣接PEから自PEへの画素値転送を行う場合と、取得するべき隣接画素値を自PEが保持しておりレジスタ番号をオフセットしたレジスタからの参照を行う場合と、の2通りの場合が存在する。この時、命令が左右どちら側の画素値を参照する命令であるか、転送元が隣接PEであるか、自PEであるかによって、入力オペランドに指定されたレジスタ番号をオフセットしてやることが必要となるため、オフセット算出テーブルを参照する際に反復実行カウンタ値CRを差し替える処理を行う必要がある。そこで、オペコードが隣接画素値の取得命令である場合には(ステップB2のYES)、さらに、オペコードが左右どちら側の隣接画素値を取得する命令であるかを判断する(ステップB3)。
オペコードが右側隣接画素値を取得する命令の場合、(反復実行カウンタ値CR)<(反復実行指定レジスタ値NR−1)であれば自PEの持つレジスタを参照することとなり、カウンタ値調整は行わない。(反復実行カウンタ値CR)=(反復実行指定レジスタ値NR−1)であれば、右側隣接PEの持つ左端の画素を保持しているレジスタを参照することとなり、この場合は入力された反復実行カウンタ値CRを0に調整(変換)する(ステップB4)。
オペコードが左側隣接画素値を取得する命令の場合、(反復実行カウンタ値CR)>0であれば自PEの持つレジスタを参照することとなるためカウンタ値調整は行わない。(反復実行カウンタ値CR)=0である場合には、左側隣接PEの持つレジスタを参照することとなるが、左側隣接PEが保持している画素のうち右端となるレジスタ値を参照することとなるため、入力された反復実行カウンタ値CRを(反復実行指定レジスタ値NR−1)に調整(変換)する(ステップB5)。
その後、反復実行指定レジスタ225の値NRと、必要に応じて調整された反復実行カウンタ224の値CRとをキーとしてオフセット算出テーブル221.1を参照し、オペランドのオフセット値を決定する(ステップB6)。入力されたレジスタ番号にオフセット値を加算した結果をオペランド変換結果として出力する(ステップB7)。
2.2)メモリアドレス変換
図5は本実施形態による並列画像処理システムのメモリアドレス変換動作を示すフローチャートである。メモリアドレス変換部222は、入力されたオペコードがメモリアドレス変換の対象となるメモリ読み出し命令/メモリ書き込み命令等であるかを判断する(ステップC1)。
入力オペコードが変換対象命令である場合は(ステップC1のYES)、処理対象画像高さレジスタ226の値NHに反復実行カウンタ224の値CRを乗じた値をメモリアドレスのオフセット値として算出する(ステップC2)。そして、入力メモリアドレスに算出したオフセット値を加えた値を変換済みメモリアドレスとして出力する(ステップC3)。入力オペコードが変換対象命令でない場合には(ステップC1のNO)、変換を行わずそのままのアドレスを出力する。
2.3)オペコード変換
図6は本実施形態による並列画像処理システムのオペコード変換動作を示すフローチャートである。オペコード変換部223は、命令フェッチ・デコード部21から入力されたオペコードが変換対象となる左右隣接画素値の取得命令であるかを判断する(ステップD1)。
入力オペコードが左右隣接画素値の取得命令である場合は(ステップD1のYES)、オペコードが右側隣接画素値取得命令であるか、左側隣接画素取得命令であるかによってそれぞれ以下の動作を行う(ステップD2)。
オペコードが右側隣接画素値を取得する命令の場合、反復実行カウンタ値CR<(反復実行指定レジスタ値NR−1)であれば、自PEの持つレジスタを参照するため、同一PE内でのレジスタ間移動命令を変換済みオペコードとして出力する。反復実行カウンタ値CR=(反復実行指定レジスタ値NR−1)であれば右側隣接PEの持つ左端の画素を保持しているレジスタを参照するため、入力オペコードである右側隣接PEのレジスタ値を転送する命令をそのまま出力する(ステップD3)。
オペコードが左側隣接画素値を取得する命令の場合、反復実行カウンタ値CR>0であれば自PEの持つレジスタを参照するため、同一PE内でのレジスタ間移動命令を変換済みオペコードとして出力する。反復実行カウンタ値CR=0である場合には、左側隣接PEの持つレジスタを参照するため、入力オペコードである左側隣接PEのレジスタ値を転送する命令をそのまま出力する(ステップD4)。
入力オペコードが左右隣接画素値の取得命令でない場合には(ステップD1のNO)、オペコード変換は行わず、そのままのオペコードを命令フェッチ・デコード部21へ出力する。
3.効果
上述したように、本実施形態によれば、プログラムメモリ3から読み出されたプログラムコードの1命令に対して命令フェッチ・デコード部21が解釈・実行を行う際、反復実行部22によって複数命令に相当するPEアレイ制御を行う。したがって、各PEに割り当てられた複数の画素に対する処理を1命令で記述でき、プログラムコード量が削減できる。
また、反復実行部22内にオペコード変換部223を備えることにより、隣接する左右画素値の受け渡しを必要とするような処理において、1つのPEに複数画素を割り当てた際に必要となる、隣接PE間での転送動作と、自PE内に保持している画素値を用いた動作という異なる命令が必要となる動作を1命令で一括して記述することができる。これによって、さらにプログラムコード量を削減でき、また、PE数の異なるSIMD並列画像処理システム上での画像処理をプログラムの変更を行わずに実現することが容易となる。
次に、本発明の一実施例による並列画像処理システムの動作について説明する。ここでは、一例として、幅256画素×高さ256画素の処理対象画像に対して、その幅方向画素数の半分にあたる128個のPEが1次元配列されたPEアレイ1を有する並列画像システムを用いるものとする。
図7は本発明の一実施例による並列画像処理システムを動作させるプログラムの一例を示す図である。この例では、各画素について右側に隣接する画素値との差の絶対値を求める処理を示している。本実施例では、各PEは36本のレジスタを持つものとする。PE数が処理対象画像の幅方向画素数の半数であるので、各PEには2画素ずつの処理を割り当てることとなる。このため、反復実行指定レジスタ225には、プログラムの実行に先立って、NR=2を格納し、レジスタ群13をR(0)〜R(17)と、R(18)〜R(35)との2群に分割して利用する。
ローカルメモリ11にはMEM1番地から処理対象画像が格納されている。本実施例においては各PEに2画素ずつを割り当てて処理を行うため、それら2画素を高さ方向画素数にあたる256のオフセットを持つアドレスにそれぞれ格納する。PEに割り当てられた画像のうち、左側の画素値がアドレスMEM1番地からアドレス(MEM1+255)番地に格納され、右側の画素値はオフセット値256を加えたアドレス(MEM1+256)番地からアドレス(MEM1+511)番地に格納される。このため、処理対象画像高さレジスタ226には処理対象画像の高さ方向画素数である256を格納しておく。処理結果画像はMEM2番地以降に格納する。
以下に、本発明の並列画像処理システムの動作を図7に示したプログラムを一例として、図3のフローチャートも参照しながら説明する。
まず、命令フェッチ・デコード部21がプログラムメモリ3から1行目のプログラムコード(LD MEM1,R(0))を読み出し、反復実行部22に引き渡す(図3のステップA1)。1行目のプログラムコードの動作内容は、ローカルメモリ11のアドレスMEM1に格納されている値を読み出し、レジスタR(0)に格納するというものである。反復実行部22は、プログラムコードのオペコード部分がメモリ読み出し命令(LD)であるため、反復実行対象命令と判断して反復実行カウンタ224を0に設定する(ステップA5)。
次に、プログラムコードをオペランド変換部221、メモリアドレス変換部222、オペコード変換部223に引き渡す。オペランド変換部221は、反復実行指定レジスタ225および反復実行カウンタ224の値NRおよびCRを参照し、オフセット算出テーブル221.1からオフセット値として0を得る。これを入力されたレジスタ番号0に加算した結果である0を、変換済みレジスタ番号として命令フェッチ・デコード部21へ引き渡す(ステップA6)。メモリアドレス変換部222は、反復実行カウンタ224の値CRを参照し、これが0であるため変換を行わず、メモリアドレスMEM1を命令フェッチ・デコード部21へ引き渡す(ステップA7)。オペコード変換部223は、入力オペコードがメモリ読み出し命令(LD)であり、オペコード変換の必要な左右隣接画素値の取得命令ではないため、オペコード変換を行わず、入力オペコードをそのまま命令フェッチ・デコード部21へ引き渡す(ステップA8)。命令フェッチ・デコード部21は、反復実行部22から入力されたオペコード、メモリアドレス、オペランドに基づいてPEアレイ1を動作させ、ローカルメモリ11のアドレスMEM1の内容がレジスタR(0)に格納される(ステップA9、A10)。
続いて、反復実行部22は、反復実行カウンタ224の値CRを1だけ増加させて1に設定する(ステップA11)。その後、反復実行カウンタ224の値CR=1と反復実行指定レジスタ225の値NR=2とを比較し、これらは同一値ではないため、必要な回数の反復実行を終えていないと判断してオペランド変換部221、メモリアドレス変換部222、オペコード変換部223の実行に戻る(ステップA12)。
オペランド変換部221は、反復実行指定レジスタ225および反復実行カウンタ224の値NRおよびCRを参照し、オフセット算出テーブル221.1からオフセット値として18を得る。これを入力されたレジスタ番号0に加算した結果である18を、変換済みレジスタ番号として命令フェッチ・デコード部21へ引き渡す(ステップA6)。メモリアドレス変換部222は、反復実行カウンタ224の値CRが1であるため、メモリアドレスMEM1に対してオフセット256を加えたアドレス(MEM1+256)を命令フェッチ・デコード部21へ引き渡す(ステップA7)。オペコード変換部223は、入力オペコードがメモリ読み出し命令(LD)であり、オペコード変換の必要な左右隣接画素値の取得命令ではないため、オペコード変換を行わず、入力オペコードをそのまま命令フェッチ・デコード部21へ引き渡す(ステップA8)。命令フェッチ・デコード部21は、反復実行部22から入力されたオペコード、メモリアドレス、オペランドに基づいてPEアレイ1を動作させ、ローカルメモリ11のアドレス(MEM1+256)番地の内容がレジスタR(18)に格納される(ステップA9、A10)。
反復実行部22は、反復実行カウンタ224の値CRを1だけ増加させて2に設定する(ステップA11)。その後、反復実行カウンタ224の値CRを反復実行指定レジスタ225に指定された値NRと比較し、これが同一値であるため、必要な反復実行が終了したと判断して1行目のプログラムコードに対応する処理を終了し、次の命令処理に移る(ステップA12)。
次に、命令フェッチ・デコード部21がプログラムメモリ3から2行目のプログラムコード(MVL R(0),R(1))を読み出し、反復実行部22に引き渡す(ステップA1)。2行目のプログラムコードの動作内容は、右側画素に対応するレジスタR(0)の値をレジスタR(1)に格納するというものである。1個のPEに対して1画素を割り当てたシステムであれば右側隣接PEのレジスタR(0)に格納された値を自PEへ転送し、レジスタR(1)に格納するという動作となるが、本実施例では1個のPEに対して2画素を割り当てているため、右側画素は常に右側隣接PEが保持しているのではなく、PEに割り当てられた処理対象画素のうち、左側画素に対する右側画素の値はPE内の別レジスタに格納されていることとなる。このため、右側画素値の取得動作は、処理対象画素に応じて自PE内でのレジスタ値を読み出す、あるいは右側隣接PEのレジスタR(0)を自PEへ転送するという2種類の動作に分かれる。反復実行部22は、オペコードが右側隣接画素値の転送命令であるため、反復実行対象命令と判断して反復実行カウンタ224の値を0に設定した後、オペランド変換部221、オペコード変換部223を動作させる(ステップA2、A5)。
オペランド変換部221は、プログラムコードに指定された入力元レジスタ、出力先レジスタのそれぞれについてオペランド変換処理を行う(ステップA6)。入力されたオペコードが右側隣接画素値の取得命令(MVL)であるため、入力元レジスタと出力先レジスタのそれぞれで異なるオペランド操作を行う。入力元レジスタについては、反復実行指定レジスタ225および反復実行カウンタ224の値NRおよびCRを参照し、オフセット算出テーブル221.1を用いてオフセット値として18を得る。これを入力されたレジスタ番号0に加算した結果である18を、変換済み入力元レジスタ番号として命令フェッチ・デコード部21へ引き渡す。出力先レジスタについては、オフセット算出テーブルを参照する際の反復実行カウンタ値CRを0に調整してオフセット算出を行って得られるオフセット値である“0”を、入力されたレジスタ番号1に加算した結果である“1”を、変換済み出力先レジスタ番号として命令フェッチ・デコード部21へ引き渡す。
オペコード変換部223は、右側隣接画素値の取得命令(MVL)はオペコード変換の必要な命令であると判断し、反復実行カウンタ224の値CRが(反復実行指定レジスタ225の値NR−1)と等しくないため、同一PE内でのレジスタ間移動命令に変換し、命令フェッチ・デコード部21に引き渡す(ステップA8)。命令フェッチ・デコード部21がPEアレイ1を動作させ、レジスタR(18)の内容がレジスタR(1)に格納される(ステップA9、A10)。
反復実行部22は、反復実行カウンタ224の値CRを1だけ増加させて1に設定する(ステップA11)。その後、反復実行カウンタ224の値CR=1と反復実行指定レジスタ225の値NR=2とを比較し、これらは同一値ではないため、必要な反復実行を終えていないと判断してオペランド変換部221、オペコード変換部223の実行に戻る(ステップA12)。
オペランド変換部221は、オペコードが右側隣接画素値の転送命令(MVL)であり、反復実行カウンタ224の値CRが(反復実行指定レジスタ225の値NR−1)に等しいため、右側PEのレジスタR(0)の内容を転送する動作となるように変換を行う。このため、入力元レジスタについては、オフセット算出テーブル221.1を参照する際の反復実行カウンタ値CRを0に調整してオフセット算出を行って得られるオフセット値で
ある0を、入力された入力元レジスタ番号0に加算した結果である0を、変換済み入力元レジスタ番号として命令フェッチ・デコード部21へ引き渡す。出力先レジスタについては1行目の場合と同様の変換を行い、反復実行指定レジスタ225および反復実行カウンタ224の値NRおよびCRによりオフセット算出テーブル221.1を用いて得たオフセット値“18”を、入力された出力先レジスタ番号1に加算した結果である“19”を、変換済み出力先レジスタとして命令フェッチ・デコード部21へ引き渡す(ステップA6)。
オペコード変換部223は、入力オペコードはオペコード変換の対象となる命令であるが、反復実行カウンタ224の値CRが(反復実行指定レジスタ225の値NR−1)に等しいため、変換を行わず、命令フェッチ・デコード部21へ引き渡す(ステップA8)。命令フェッチ・デコード部21がPEアレイ1を動作させ、右側PEのレジスタR(0)の内容がレジスタR(19)に格納される(ステップA9、A10)。
反復実行部22は、反復実行カウンタ224の値CRを1だけ増加させて2に設定する(ステップA11)。この値は反復実行指定レジスタ225に指定された値NRと同一であるため、必要な反復実行が終了したと判断して、2行目のプログラムコードに対応する処理を終了し、次の命令処理に移る(ステップA12)。
命令フェッチ・デコード部21がプログラムメモリ3から3行目のプログラムコード(ABS R(0),R(1),R(2))を読み出し、反復実行部22に引き渡す。3行目のプログラムコードの動作内容は、レジスタR(0)とレジスタR(1)の差の絶対値を算出し、演算結果をレジスタR(2)に格納するというものである。反復実行部22は、入力元指定、出力先指定それぞれのオペランドについて1行目の場合と同様の変換を行って反復動作し、命令フェッチ・デコード部21がPEアレイ1を動作させた結果、レジスタR(0)とレジスタR(1)の差の絶対値がレジスタR(2)に、レジスタR(18)とレジスタR(19)の差の絶対値がレジスタR(20)に格納され、次の命令処理に移る。
命令フェッチ・デコード部21が4行目のプログラムコード(ST MEM2,R(2))を読み出し、反復実行部22に引き渡す。4行目のプログラムコードの動作内容は、レジスタR(2)に格納されている値を読み出し、ローカルメモリ11のアドレスMEM2に書き込むというものである。反復実行部22で1行目の場合と同様のメモリアドレス、オペランドの変換が行われ、命令フェッチ・デコード部21がPEアレイ1を動作させ、レジスタR(2)の値がローカルメモリ11のアドレスMEM2番地に、レジスタR(20)の値がローカルメモリ11のアドレス(MEM2+256)番地に格納される。
このように、本実施例では、プログラムメモリ3から読み出されるプログラムコードの1命令に対して、反復実行部22によって2命令に相当するPEアレイ制御が行われるため、プログラムコード量を削減することができる。また、オペコード変換部223により反復実行時の一部サイクルで別命令を実行することができるため、同一命令の反復実行では対応できない隣接画素との受け渡し処理においても自動的な反復実行による動作が可能となり、さらにプログラムコード量を削減することができる。
なお、本実施例では処理対象画像の幅方向画素数とPE数の比が2:1となる例であったが、この比に限定されるものではなく、3:1、4:1、…、N:1と、処理対象画像の幅方向画素数がシステムの有するPE数より多い場合に適用が可能である。
本発明によれば、ビデオ画像、センサ画像等を入力とする画像処理装置、画像検査装置、画像認識装置といった用途に適用できる。
本発明の一実施形態による並列画像処理システムの機能的構成を示すブロック図である。 本実施形態による並列画像処理システムにおけるオペランド変換部の構成を機能的に示したブロック図である。 本実施形態による並列画像処理システムの全体的動作を示すフローチャートである。 本実施形態による並列画像処理システムのオペランド変換動作を示すフローチャートである。 本実施形態による並列画像処理システムのメモリアドレス変換動作を示すフローチャートである。 本実施形態による並列画像処理システムのオペコード変換動作を示すフロー チャートである。 本発明の一実施例による並列画像処理システムを動作させるプログラムの一例を示す図である。
符号の説明
1 PEアレイ
2 コントローラ
3 プログラムメモリ
10 PE
11 ローカルメモリ
12 演算部
13 レジスタ
21 命令フェッチ・デコード部
22 反復命令実行部
221 オペランド変換部
222 メモリアドレス変換部
223 オペコード変換部
224 反復実行カウンタ
225 反復実行指定レジスタ
226 処理対象画像高さレジスタ

Claims (11)

  1. 処理対象データ数より少ない個数の要素プロセッサを有し、各要素プロセッサが複数個の処理対象データを処理する並列画像処理システムの制御方法において、
    前記要素プロセッサに割り当てた処理対象データ数に応じて命令を自動的に反復実行し、
    所定命令を反復実行する際、反復中のそれぞれの実行時に処理するデータに応じてオペコードを置き換え、
    前記置き換えられたオペコードによって前記要素プロセッサを制御する、
    ことを特徴とする並列画像処理システムの制御方法。
  2. 前記処理データとして複数の画素を処理する際、
    前記要素プロセッサに割り当てた画素数に応じて命令を自動的に反復実行し、
    隣接画素の画素値取得命令を反復実行する際、処理する画素の位置に応じてオペコードを隣接要素プロセッサからの画素値転送命令と自要素プロセッサ上の画素値取得命令の組み合わせに置き換え、
    前記置き換えられたオペコードによって前記要素プロセッサを制御する、請求項1に記載の並列画像処理システムの制御方法。
  3. 各要素プロセッサに割り当てた画素数に合わせてレジスタ群を分割して利用し、反復実行時に利用するレジスタ群を切り替えるようにオペランドを書き換え、
    メモリアクセス命令の反復実行時に前記要素プロセッサに割り当てた画素数に合わせたオフセット値をアドレスに加算する、
    ことを特徴とする請求項2に記載の並列画像処理システムの制御方法。
  4. 処理対象データ数より少ない個数の要素プロセッサを有し、各要素プロセッサが複数個の処理対象データを処理する並列画像処理システムの制御装置において、
    前記要素プロセッサに割り当てた処理対象データ数に応じて命令を自動的に反復実行する反復実行手段を有し、
    前記反復実行手段は、所定命令を反復実行する際、反復中のそれぞれの実行時に処理するデータに応じてオペコードを置き換えるオペコード変換手段を有し、前記置き換えられたオペコードによって前記要素プロセッサを制御することを特徴とする並列画像処理システムの制御装置。
  5. 前記処理データとして複数の画素を処理する際、
    前記反復実行手段は、前記要素プロセッサに割り当てた画素数に応じて命令を自動的に反復実行し、
    前記反復実行手段は、隣接画素の画素値取得命令を反復実行する際、処理する画素の位置に応じてオペコードを隣接要素プロセッサからの画素値転送命令と自要素プロセッサ上の画素値取得命令の組み合わせに置き換えるオペコード変換手段を有し、前記置き換えられたオペコードによって前記要素プロセッサを制御する、請求項4に記載の並列画像処理システムの制御装置。
  6. 前記要素プロセッサが複数個の画素を処理する1次元プロセッサアレイ構造からなり、
    前記1次元プロセッサアレイ構造は1次元SIMD(Single Instruction Multiple Data)プロセッサアレイ構造である、請求項5に記載の並列画像処理システムの制御装置。
  7. 前記反復実行手段は、
    各要素プロセッサに割り当てた画素数に合わせてレジスタ群を分割して利用し、反復実行時に利用するレジスタ群を切り替えるようにオペランドを書き換えるオペランド変換手段と、
    メモリアクセス命令の反復実行時に前記要素プロセッサに割り当てた画素数に合わせたオフセット値をアドレスに加算するメモリアドレス変換手段と、
    を更に有する、請求項6に記載の並列画像処理システムの制御装置。
  8. 処理対象データ数より少ない個数の要素プロセッサを有し、各要素プロセッサが複数個の処理対象データを処理する並列画像処理システムにおいて、
    前記要素プロセッサに割り当てた処理対象データ数に応じて命令を自動的に反復実行する反復実行手段を有し、
    前記反復実行手段は、所定命令を反復実行する際、反復中のそれぞれの実行時に処理するデータに応じてオペコードを置き換えるオペコード変換手段を有し、前記置き換えられたオペコードによって前記要素プロセッサを制御する、ことを特徴とする並列画像処理システム。
  9. 前記処理データとして複数の画素を処理する際、
    前記反復実行手段は、前記要素プロセッサに割り当てた画素数に応じて命令を自動的に反復実行し、
    前記反復実行手段は、隣接画素の画素値取得命令を反復実行する際、処理する画素の位置に応じてオペコードを隣接要素プロセッサからの画素値転送命令と自要素プロセッサ上の画素値取得命令の組み合わせに置き換えるオペコード変換手段を有し、前記置き換えられたオペコードによって前記要素プロセッサを制御する、請求項8に記載の並列画像処理システム。
  10. 処理対象データ数より少ない個数の要素プロセッサを有し、各要素プロセッサが複数個の処理対象データを処理する並列画像処理システムを構成するコンピュータに、
    前記要素プロセッサに割り当てた処理対象データ数に応じて命令を自動的に反復実行する機能と、
    前記反復実行ステップで所定命令を反復実行する際、反復中のそれぞれの実行時に処理するデータに応じてオペコードを置き換える機能と、
    前記置き換えられたオペコードによって前記要素プロセッサを制御する機能とを実行させることを特徴とするプログラム。
  11. 前記コンピュータに、前記処理データとして複数の画素を処理させる際、
    前記要素プロセッサに割り当てた画素数に応じて命令を自動的に反復実行する機能と、
    前記反復実行ステップで隣接画素の画素値取得命令を反復実行する際、処理する画素の位置に応じてオペコードを隣接要素プロセッサからの画素値転送命令と自要素プロセッサ上の画素値取得命令の組み合わせに置き換える機能と、
    前記置き換えられたオペコードによって前記要素プロセッサを制御する機能とを実行させる、請求項10に記載のプログラム。
JP2008509691A 2006-03-30 2006-12-05 並列画像処理システムの制御方法および装置 Expired - Fee Related JP5077579B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008509691A JP5077579B2 (ja) 2006-03-30 2006-12-05 並列画像処理システムの制御方法および装置

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2006092831 2006-03-30
JP2006092831 2006-03-30
PCT/JP2006/324213 WO2007116560A1 (ja) 2006-03-30 2006-12-05 並列画像処理システムの制御方法および装置
JP2008509691A JP5077579B2 (ja) 2006-03-30 2006-12-05 並列画像処理システムの制御方法および装置

Publications (2)

Publication Number Publication Date
JPWO2007116560A1 true JPWO2007116560A1 (ja) 2009-08-20
JP5077579B2 JP5077579B2 (ja) 2012-11-21

Family

ID=38580862

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008509691A Expired - Fee Related JP5077579B2 (ja) 2006-03-30 2006-12-05 並列画像処理システムの制御方法および装置

Country Status (6)

Country Link
US (1) US8106912B2 (ja)
EP (1) EP2000973B1 (ja)
JP (1) JP5077579B2 (ja)
KR (1) KR20080100380A (ja)
CN (1) CN101416216B (ja)
WO (1) WO2007116560A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2464292A (en) 2008-10-08 2010-04-14 Advanced Risc Mach Ltd SIMD processor circuit for performing iterative SIMD multiply-accumulate operations
JP4901891B2 (ja) * 2008-11-05 2012-03-21 株式会社東芝 画像処理プロセッサ
US10733478B2 (en) * 2016-08-31 2020-08-04 Facebook, Inc. Systems and methods for processing media content that depict objects
CN110728364A (zh) * 2018-07-17 2020-01-24 上海寒武纪信息科技有限公司 一种运算装置和运算方法
US11182160B1 (en) * 2020-11-24 2021-11-23 Nxp Usa, Inc. Generating source and destination addresses for repeated accelerator instruction

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04291659A (ja) 1991-03-20 1992-10-15 Hitachi Ltd 並列コンピュータシステムおよびその動作方法
JP3223549B2 (ja) 1991-12-24 2001-10-29 ソニー株式会社 Simd型並列演算装置
JP2839026B1 (ja) 1997-06-25 1998-12-16 日本電気株式会社 並列画像処理装置
US6741294B2 (en) * 1997-12-08 2004-05-25 Sony Corporation Digital signal processor and digital signal processing method
CN1338090A (zh) * 1998-12-15 2002-02-27 因坦塞斯公司 使用编程的并行计算机实现图像处理功能和控制的数字摄像机
US7506136B2 (en) * 1999-04-09 2009-03-17 Clearspeed Technology Plc Parallel data processing apparatus
JP2002007359A (ja) 2000-06-21 2002-01-11 Sony Corp Simd制御並列処理方法および装置
JP2004524617A (ja) * 2001-02-14 2004-08-12 クリアスピード・テクノロジー・リミテッド クロック分配システム
JP4143302B2 (ja) * 2002-01-15 2008-09-03 キヤノン株式会社 画像処理装置、画像処理方法、制御プログラム及び記録媒体
JP4136432B2 (ja) * 2002-04-15 2008-08-20 松下電器産業株式会社 図形描画装置
AU2003241771A1 (en) * 2002-05-28 2003-12-12 Dai Nippon Printing Co., Ltd. Parallel processing system
JP2004362086A (ja) * 2003-06-03 2004-12-24 Matsushita Electric Ind Co Ltd 情報処理装置および機械語プログラム変換装置
WO2005069215A1 (en) 2004-01-14 2005-07-28 Koninklijke Philips Electronics N.V. Processor architecture
KR20070039490A (ko) * 2004-05-03 2007-04-12 실리콘 옵틱스 인코포레이션 Simd 어레이 프로세서를 위한 비트 직렬 프로세싱 소자
JP4478050B2 (ja) * 2005-03-18 2010-06-09 株式会社リコー Simd型マイクロプロセッサ及びデータ処理方法

Also Published As

Publication number Publication date
EP2000973A2 (en) 2008-12-10
CN101416216B (zh) 2012-11-21
KR20080100380A (ko) 2008-11-17
US20090106528A1 (en) 2009-04-23
WO2007116560A1 (ja) 2007-10-18
CN101416216A (zh) 2009-04-22
EP2000973A4 (en) 2012-01-04
JP5077579B2 (ja) 2012-11-21
US8106912B2 (en) 2012-01-31
EP2000973B1 (en) 2013-05-01
EP2000973A9 (en) 2009-03-04

Similar Documents

Publication Publication Date Title
JP5748935B2 (ja) Simd命令をサポートするプログラマブルデータ処理回路
JP5077579B2 (ja) 並列画像処理システムの制御方法および装置
JP2023051994A (ja) 連鎖タイル演算を実施するためのシステムおよび方法
CN107315717B (zh) 一种用于执行向量四则运算的装置和方法
CN111176608A (zh) 一种用于执行向量比较运算的装置和方法
JPH07104784B2 (ja) デジタルデータ処理装置
JP2003501773A (ja) 算術論理演算装置およびスタックを備えたデータプロセッサ
US10754652B2 (en) Processor and control method of processor for address generating and address displacement
US20180246655A1 (en) Fused shader programs
JP7154788B2 (ja) 半導体装置
KR100309861B1 (ko) 마이크로프로세서, 연산 처리 실행 방법 및 기억 매체
EP1088266B1 (en) Parallel data processing
CN101258480A (zh) 具有分离串行模块的处理器阵列
JP2001216275A (ja) 画像処理装置および画像処理方法
US6405301B1 (en) Parallel data processing
US5473774A (en) Method for conflict detection in parallel processing system
WO2000077622A1 (en) Data processor comprising a register stack
US8395630B2 (en) Format conversion apparatus from band interleave format to band separate format
US10496596B2 (en) Application specific instruction-set processor (ASIP) architecture having separated input and output data ports
JP2009059187A (ja) マイクロプロセッサおよびデータ処理方法
JP2024000852A (ja) プログラマブル信号処理回路及び当該回路用のプログラム
JP3547316B2 (ja) プロセッサ
JP2002318689A (ja) 資源使用サイクルの遅延指定付き命令を実行するvliwプロセッサおよび遅延指定命令の生成方法
Wyland The Universal Micro System: Hardware Performance with Software Convenience
De Sutter et al. On the use of subword parallelism in medical image processing

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091116

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

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

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

Free format text: PAYMENT UNTIL: 20150907

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees