JP4893621B2 - 信号処理装置 - Google Patents
信号処理装置 Download PDFInfo
- Publication number
- JP4893621B2 JP4893621B2 JP2007516362A JP2007516362A JP4893621B2 JP 4893621 B2 JP4893621 B2 JP 4893621B2 JP 2007516362 A JP2007516362 A JP 2007516362A JP 2007516362 A JP2007516362 A JP 2007516362A JP 4893621 B2 JP4893621 B2 JP 4893621B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- signal processing
- scu
- input
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Image Processing (AREA)
- Image Input (AREA)
Description
本発明は、特に、画像処理に好適な、信号処理装置に関する。
この画像処理装置は、例えば、撮像情報を構成する画素データを並列に演算処理することで、処理時間の短縮を図っている。
また、この画像処理装置では、メモリに対する画素データの読み出しおよび書き込み処理(メモリアクセス)と、画素データを用いた演算処理とを同じスレッドに基づいて同期して行っている。
同様な要請は画像処理以外の処理においてもある。
以下、本発明の信号処理装置の実施の形態について、画像データの処理を例示して述べる。
先ず、本実施形態の構成要素と、本発明の構成要素との対応関係を説明する。
図2等に示すストリーム制御ユニット(SCU:Stream Control Unit) 203_0〜3が本発明の入出力データ制御部の一例である。
図3等に示すプロセッサユニットPUが本発明の信号処理回路の一例である。
図4等に示すPEが本発明の信号処理エレメントの一例である。
図1に示すホストプロセッサ101が本発明のホスト処理回路の一例である。
図1等に示すメモリシステム105あるいは図2等に示すローカルメモリ204_0〜3が本発明の記憶部の一例である。
本発明の記録媒体は、半導体メモリ、磁気ディスク、光ディスク、光磁気ディスクなどの任意の記録媒体を適用することができる。
画像処理装置100は、例えば、ホストプロセッサ(Host CPU)101、画像処理エンジン102、コーデック(CODEC)エンジン103、メモリインターフェース(I/F)104、メモリシステム105、センサI/F106、カメラモジュール107、記憶媒体I/F108、記憶媒体109、内蔵表示装置I/F110、内蔵表示装置111、並びにビデオI/F112を有する。
ホストプロセッサ101は、画像処理装置100全体を制御するプロセッサであって、例えば、実時間オペレーティングシステム(OS)を動作させ、画像処理装置100で実行される各種タスクのスケジューリング、記憶媒体109を用いたファイルシステムの実現、データ入出力制御などを行う。
画像処理エンジン102は、プログラマブルな画像プロセッサであって、画像処理装置100で実行されるアプリケーションプログラムに応じてホストプロセッサ101が指示する画像処理を実行する。
画像処理の対象となる画像データとしては、センサI/F106を介して入力されるカメラモジュール107で撮影されたデータ、メモリI/F104を介して入力されるメモリシステム105に格納されたデータ、記憶媒体I/F108を介して入力される記憶媒体109に格納されたデータ、あるいはコーデックエンジン103から与えられるデータ、コーデックエンジン103で処理されたデータがある。
画像処理エンジン102は、自らの処理結果を、メモリI/F104を介してメモリシステム105に格納し、記憶媒体I/F108を介して記憶媒体109に格納し、コーデックエンジン103に出力し、内蔵表示装置I/F110を介して内蔵表示装置111に表示し、あるいはビデオI/F112を介して外部の装置に出力する。
コーデックエンジン103は、画像および/または音声の圧縮伸長を行うユニットであり、例えばMPEG(Motion Picture Experts Group)−2,MPEG−4,H.264などの動画像用コーデックや、JPEG(Joint Photographic Coding Experts Group)やJPEG2000といった主に静止画に用いられるコーデックなどを実現する。
メモリシステム105は、ホストプロセッサ101、画像処理エンジン102、コーデックエンジン103で処理されるデータ、およびホストプロセッサ101、画像処理エンジン102、コーデックエンジン103で実行されるプログラムPRGを格納するメモリであり、例えばDRAMを用いる。
メモリI/F104は、上記メモリシステム105とシステムバス113を結ぶインターフェースである。
カメラモジュール107は、レンズ、絞り、シャッターなどの光学系装置、CCDイメージセンサあるいはCMOSイメージセンサなどの撮像素子、それらを制御するコントロールユニットを含む装置である。
カメラモジュール107は、その撮像結果をデジタル信号に変換された後、センサI/F106を介して、画像処理エンジン102、または、メモリシステム105に出力する。
ホストプロセッサ101あるいは画像処理エンジン102は、センサI/F106を介して、カメラモジュール107に対して制御信号を出力する。
記憶媒体109は、例えばハードディスク、フラッシュメモリなどの不揮発性メモリ、DVD(Digital Versatile Disk)などの光ディスク、あるいはテープ型の記憶媒体であって、記憶媒体I/F108を介して読み出し書き込みが行われる。
内蔵表示装置111は、カメラモジュール107で撮像された画像を画像処理エンジン102で処理した結果、あるいは記憶媒体109に格納されている画像データを表示する。
内蔵表示装置111は、内蔵表示装置I/F110を介して入力した画像データに応じた画像を表示する。
ビデオI/F112は、外部の画像表示装置や画像記録装置に対して画像データを供給するためのインターフェースである。
図2は、図1に示す画像処理エンジン102の構成図である。
画像処理エンジン102は、制御プロセッサ(CPU)201、PU(プロセッサ・ユニット) アレイ202_0〜202_3、ストリーム制御ユニット(SCU:Stream Control Unit) 203_0〜203_3、並びにローカルメモリ204_0〜204_3を有する。
共通のスレッドとは、例えば、共通のプログラムに基づいて処理を進めることを意味する。
ホストプロセッサ101の制御により、SCU203_0〜203_3は、PUアレイ202_0〜202_3とは別のスレッドで動作させる。
PUアレイ202_0について説明する。
PUアレイ202_1〜202_3は、PUアレイ202_0と同様の構成を有している。
図3は、図2に示すPUアレイ202_0の構成図である。
PUアレイ202_0は、4つのPU_SIMD(Single Instruction Multiple Data)処理回路#0〜#3を有する。
PU_SIMD処理回路#0〜#3は、SCU(Stream Control Unit)203_0に対して並列に接続されている。
PU_SIMD処理回路#0は、コントロールユニット303_0と、4つのプロセッサユニットPU#00〜#03を有する。
4つのプロセッサユニットPU#00〜#03は、同一命令で動作するSIMD型プロセッサを構成する。
4つのプロセッサユニットPU#00〜#03は、一次元状に横接続されている。
プロセッサユニットPU#00〜#03間の接続を隣接するプロセッサユニット間に限定するとともに、SCU203_0からのデータ供給に用いるI_BUS0を4つのプロセッサユニットで共有することで、配線を少なく出来るとともに、バス制御を簡単にできる。
プロセッサユニットPU#00〜#03は、シリアルに接続したことで、隣接画素データを頻繁に使用する画像処理において、SCU203_0を介さずに画素データを直接的に、隣接するプロセッサユニットに出力でき、処理時間を短縮できる。
PU_SIMD処理回路#1〜#3は、PU_SIMD処理回路#0と同様の構成を有している。
図4は図3に示すプロセッサユニットPU#00の構成図である。
プロセッサユニットPU#00は、例えば、入力ラインバッファ(In Line Buffer)401、複数個のプロセッサエレメントPE0〜15、PE間で共有する共用機能ユニット(Shared Function Unit)403、出力ラインバッファ404を有する。
出力ラインバッファ404は、34に示す出力データバスO_BUS0に接続されている。
PE0〜15は、図中左右に隣接するPE間で接続を有し、隣接するPE間でデータの受け渡しを行うことができる。
図3および図4で示した例では、一つのプロセッサユニットPUあたり16個のプロセッサエレメントPEを有し、一つのPU_SIMD処理回路あたり4個のプロセッサユニットPUを有するので、合計64個のPEでPUアレイ202_0〜202_3の各々が構成されている。
すなわち、あるプロセッサユニットPUにおける右端のPE15は、その右側のプロセッシングユニットにおける左端のPE0と接続する。
具体的には、図3に示すプロセッサユニットPU#01の図4に示すPE15は、図3に示すプロセッサユニットPU#02の図4に示すPE0と接続されている。
プロセッサエレメントPE0〜15の各々は、入力ラインバッファ401から読み出したデータを用いて演算を行い、その演算結果を出力ラインバッファ404に書き込む。
SCU203_0は、出力ラインバッファ404から演算結果を読み出す。
コントロールユニット303_0内には、ここには図示されないプログラムフロー制御用ループレジスタや、後述するPE内のストリームレジスタにアクセスするためのポインタレジスタが含まれる。
ループレジスタは、プログラム中のループ回数を制御するレジスタであり、制御プロセッサ201が設定するか、あるいはプログラム実行時に命令により設定することができる。
命令によりループレジスタを設定する場合に、PE内のレジスタ値をソースオペランドとして指定することができる。その際には複数のPEのうち、予め決められたPE、例えば図中左端のPE、例えば、プロセッサユニットPU#00のPE0、のレジスタ値を使用する。
ポインタレジスタについても、PE内のレジスタ値をソースオペランドとして指定することができるが、ループレジスタの場合と同様特定のPEのレジスタ値を使用する。
コントロールユニット303_1から303_3についても同様である。
メモリシステム105に1フレーム分の画像データが格納されると、画像処理エンジン102は、内部のPU_SIMD処理回路を効率よく並列動作させるため、1フレーム分の画像データのうち、必要な矩形画像領域を読み出しながら検波処理の残りや各種カメラ信号処理、ならびに各種画像処理を実行する。
画像処理エンジン102の処理結果は、メモリシステム105に格納される。
画像処理エンジン102は、解像度変換も行う。解像度変換された画像データは、内蔵表示装置I/F110を介して内蔵表示装置111に表示される。
コーデックエンジン103は、メモリシステム105に格納されている画像処理エンジン102により処理された複数フレームの画像データを用いて画像圧縮を行う。圧縮された画像データは、記憶媒体I/F108を介して記憶媒体109に記録される。
本実施形態のように4つのPUアレイ202_0〜202_3で構成する場合、例えば図5に示すように各PUアレイ202_0〜202_3に領域を割り当てることができる。
PUアレイ202_0〜202_3の各々は、前述したように64個のPEから成るPU SIMD処理回路を複数個有し、例えば図6に示すように、各PUアレイ202_0〜202_3に割り当てた領域を、さらに横64ピクセル幅の矩形画像領域に分割し、各ピクセルを1つのPEに割り当てることができる。
この時、各PEは、図7に示すように、自らの割り当てられた縦方向のピクセル列を順に処理する。
この時、PUアレイ202_0内の各PEは、図8に示すように、処理対象の画素位置Pixelの画素データのフィルタ処理を行うために、画素位置Pixelを中心とした5×5の画素位置の画素データを用いる。
PUアレイ202_0内の各PEは、図8に示す矢印(図中下向き)に順に処理対象の画素位置を移動させる。
PUアレイ202_0内の各PEが画素位置Pixelの上記5×5画素のフィルタ処理を終了すると、SCU203_0は、図9に示すように、次の1ライン分の画素位置の画素データをローカルメモリ204_0あるいはメモリシステム105から読み出して図4に示すPUアレイ202_0内のプロセッサユニットPUの入力ラインバッファ401に書き込む。
そして、PUアレイ202_0内の各PEは、図10に示すように、次の画素位置Pixel_nextの画素データの5×5画素のフィルタ処理を行う。
PUアレイ202_1〜202_3は、PUアレイ202_0と同様である。
図4に示すPEn(n=1〜14)を説明する。
なお、PE0はPE間ではPE1との間でのみデータ入出力を行い、PE15はPE14との間でのみデータ入出力を行う点を除いてPEnと同一である。
図11は、図4に示すPEnの構成図である。
PEnは、マルチプレクサMUX1000〜1005、ストリームレジスタSR0,SR1,SR2、レジスタin0,in1などの各種レジスタ、演算論理ユニットALUを有する。
演算論理ユニットALUでは、演算論理ユニット用レジスタ群を一時格納先として用いながら演算が行なわれ、演算結果は出力ラインバッファ404に書き込まれる。これらの一連の動作は、内容が個別に定められた命令の同時、あるいは、順次実行により行われる。
出力ラインバッファ404にも、入力ラインバッファ401と同じく、データ用と制御フラグ用があり、それぞれ1つのPEあたり16ビットと4ビットである。
ストリームレジスタSR0,SR1のデータ長は16ビットであり、ストリームレジスタSR2のデータ長は4ビットである。
ここで、ストリームレジスタSR2が4ビットであるのは、ストリームレジスタSR2が主に制御フラグの格納に用いられるためであり、演算論理ユニット用レジスタ群のcondレジスタのデータ長と同じである。
ストリームレジスタSR0,SR1,SR2は、主にSCU203_0から入力ラインバッファ401を通して供給される演算に必要なデータの格納や、演算結果の一時待避を行う際に使用され、直接参照の他にポインタによる参照が可能である。
なお、各ストリームレジスタSR0,SR1,SR2毎に最大4つのポインタを定義可能であり、各ポインタは、ポインタ定義領域の始点を示すStart値、ポインタ定義領域の終点を示すEnd値、現在のポインタ位置を示すCurrent値の3つの値を有する。
(1)前述の4つのポインタ中から選択した1つのポインタが持つ3つの値から選択した1つの値を即値で書き換える命令。
(2)前述の4つのポインタ中から選択した1つのポインタが持つ3つの値から選択した1つの値をPE0内の一時退避用レジスタtemp0〜3、tempsの任意の1つの値で書き換える命令。ただし、指定した値が反映されるには所定のレイテンシがかかる。
(3)前述の4つのポインタ中から選択した1つのポインタが持つCurrent値に正負の即値を加算して書き換える命令。
(4)前述の4つのポインタ中から選択した1つのポインタが持つCurrent値を同じポインタのStart値に書き換える命令。
(5)前述の4つのポインタ中から選択した1つのポインタが持つ3つの値から選択した1つの値を読み出し、その値でPU_SIMD内の全PEにおいて一時退避用レジスタtemp0〜3、tempsの任意の1つを書き換える命令。
ストリームレジスタSR0,SR1,SR2のエントリ数は16であるが、3本あるストリームレジスタのうち、ストリームレジスタSR0とSR1とを連結し、32エントリのストリームレジスタとして使用することもできるが、連結モード時には、32エントリのストリームレジスタSR0として動作するため、ストリームレジスタSR0のポインタのみ使用可能で、ストリームレジスタSR1は参照できない。
通常モードと連結モードは、すべての命令の実行前に所定の方法により設定し、命令の順次実行中には変更できない。
ストリームレジスタSR0,SR1,SR2のエントリへの回り込み処理前と後のindexをそれぞれidx、idxwとする。なお、2種類の回り込み処理の方式は、ストリームレジスタ参照命令に付加して指定する。
if(idx > End) idxw = Start+ (idx−End−1) % (End−Start+1);
else if (idx < Start) idxw =End − (Start−idx−1) % (End−Start+1);
else idxw = idx;
if(idx≧ EN) idxw = idx % EN;
else if (idx≦ 0) idxw = (EN×(1−idx/EN) + idx) % EN;
else idxw = idx;
レジスタin0およびin1、はデータ長が16ビットの入力レジスタであり、ストリームレジスタから読み出した内容を格納する。算術論理演算命令のソースオペランドとして指定できるが、デスティネーションオペランドには指定できない。
レジスタtemp0〜3ならびにtempsはデータ長が16ビットの一時退避用レジスタである。
このうち、レジスタtempsは、後述する共有機能ユニット403を利用する際に用いられるレジスタであり、共有機能ユニット403へのアクセス以外の場合では、レジスタtemp0〜3と全く同様にワーキングレジスタとして使用できる。これらのレジスタは、算術論理演算命令のソースオペランドとデスティネーションオペランドの両方に指定できる。
レジスタacc.H/Lは主に累積加算命令で用いられ、データ長が合わせて32ビットの累積加算用レジスタであり、算術論理演算命令のソースオペランドとデスティネーションオペランドの両方に指定できる。32ビットのうち、上位16ビットをレジスタacc.Hとし、下位16ビットをレジスタacc.Lとし、ソースオペランドとして用いる際に上位か下位かの指定を行う。
レジスタpenumは、自身のプロセッシングエレメント番号(0〜63)が格納されているデータ長が6ビットのプロセッサ番号レジスタであり、読み出し専用である。
レジスタconstは、定数値を格納するデータ長が16ビットの定数レジスタであり、エントリ数は64である。定数レジスタは、各プロセッシングエレメント毎に持つわけではなく、共有機能ユニット403内に持つ。
演算論理ユニット用レジスタ群の中には、隣接PEから参照可能なレジスタも用意されている。PU_SIMD処理回路内のn番目のPE#nに注目する。
この場合、当該PE#nは、演算を行う際、当該PE#n内のレジスタだけでなく、隣接PE#n−1,#n+1のレジスタin0、in1、acc.H、acc.Lを参照可能である。
PE#nのレジスタcond、acc.H、acc.L、並びに隣接PE#n−1,#n+1のレジスタin0、in1、acc.H、acc.Lについては、その値をPE#nのストリームレジスタSR0,SR1,SR2に書き戻すことができる。
同時実行可能なオペレーションは下記のA〜Jである。なお、A〜Iについては、命令の条件実行が可能である。命令の条件実行とは、主に制御フラグが格納されているレジスタcondの任意のビットを指定し、その値が1の時に命令を実行し、0の時に命令を実行しないという動作である。
B:ストリームレジスタSR1への書き込み
C:ストリームレジスタSR2への書き込み
D:レジスタin0の書き込み
E:レジスタin1への書き込み
F:ストリームレジスタSR2からレジスタcondへの書き込み
G:共有機能ユニット403へのファンクション呼び出し
H:出力ラインバッファ404への書き込み
I:算術論理演算
J:フロー制御命令
表1中、ビット番号命令とは、ソースの16ビットの最上位ビットから数えて最初に1が現れたビット番号を返す命令である。
図12に示すように、各PEは縦の画素データ列を担当し、近傍の画素データに対して重み付け加算を行った結果をローカルメモリ204あるいはメモリシステム105に書き戻す。
例えば5x3のフィルタ処理を行う場合、図13に示すように、801の領域にある画素データ00、01、02、10、11、12、20、21、22、30、31、32、40、41、42の15個の画素データに対して重み付け加算を行い、802の位置の画素データを算出する。
図13に示す802の位置の画素データを含む縦の画素データ列を担当するPEがPE#nだとすると、図14に示すように、画素データ20、21、22の縦3画素データがPE#nのストリームレジスタSR0保持され、画素データ10、11、12は隣接するプロセッサエレメントPE #(n-1)、画素データ00、01、02はさらにその隣のプロセッサエレメントPE #(n-2)のストリームレジスタSR0に保持されている。
同様に、画素データ30、31、32はPE #(n+1)、画素データ40、41、42はPE #(n+2)のストリームレジスタSR0保持されている。
本実施例では、レジスタin0にはストリームレジスタSR0,SR1の両方からデータのロードが可能である。同様にレジスタin1にもストリームレジスタSR0、SR1の両方からデータのロードが可能である。一方、ストリームレジスタSR0,SR1,SR2には、隣接するPEのレジスタin0,in1,acc.H/Lからのデータを書き込むことができるが、レジスタin0はストリームレジスタSR0、レジスタin1はストリームレジスタSR1にのみ書き込むことができる。しかし、回路規模は増えるが両方から書き込み可能としてもよい。
さらに次サイクル以降は、図18に示すように、ストリームレジスタSR1に格納された画素データを順次処理していく。この際、ストリームレジスタSR1からの読み出し時に、リードポインタをインクリメントする。
以降同様の動作を続けることにより、図19に示す状態となる。この時点で、もともと左隣のプロセッサエレメント(PE)402が持つストリームレジスタSR0に格納されていた縦3画素データ分の処理が完了する。
以降は、図22に示すように、再びストリームレジスタSR1からレジスタin1への書き込み、レジスタin1に書き込まれた画素データ値と係数の乗算、レジスタin1から左隣のPEが持つストリームレジスタSR1への書き込みを並行して行っていく。
以降同様の動作を続けることにより、図23に示す状態となる。この時点で、図13の801で示した5x3の領域に含まれる画素データのフィルタ処理が完了する。また、この時点までに、入力ラインバッファ401には、SCU203_0から次のラインの画素データデータが書き込まれている。
以上のように、本実施形態によれば、演算論理ユニットALUの演算処理と並行して、ストリームレジスタSR0,SR1を用いた隣接PE間のデータの受け渡しを効率よく行うことができ、演算論理ユニットALUに対して間断なくデータを供給することが可能であり、かつ隣接PE間でデータを共用することにより、ローカルメモリ204_0からの読み出し頻度を低減している。
図4を参照して説明したように、プロセッサユニットPU#00は、共有機能ユニット403を有する。
共有機能ユニット403は、図4に示すPE#0〜15の図11に示す演算論理ユニットALUで実行可能な演算命令以外の演算のために用いられる。
プロセッサエレメントPE#0〜15は、共有機能ユニット403を利用するために、ファンクション呼び出し命令を使用する。その際、PE#0〜15は、後述の利用可能な機能との対応を予め定めた機能識別番号を命令に付加して指定した要求を共有機能ユニット403に出力する。
PE#0〜15は、ソースオペランドに指定するレジスタに必要なデータをセットしてファンクション呼び出し命令を実行すると、所定のレイテンシ後に結果がレジスタtempsに返される。なお、ソースオペランドに指定したレジスタは、参照結果が書き戻されるまで書き換え不可である。
共有機能ユニット403は、例えば、図25に示すように、ルックアップテーブル1202、加算演算器1203、最大最小値演算器1204およびベクタ演算ユニット1205などの機能を有する。
ルックアップテーブル1202は、複数のプロセッサエレメント(PE)間で共用し、エントリ数に依存してレイテンシが可変な機能である。
加算演算器1203は、複数のPEからのデータを入力とし、データ数に依存してレイテンシが可変な機能である。
最大最小値演算器1204は、複数のPEからのデータを入力とし、データ数に依存してレイテンシが可変な機能である。
ベクタ演算ユニット1205は、次元に依存してレイテンシが可変な機能である。
ルックアップテーブル1202は1024エントリの単一テーブルとしての利用だけでなく、512エントリや256エントリなど、エントリ数を変えて使用することができる。
また、ルックアップテーブル1202は、1種類だけではなく、複数の種類のテーブルを保持することもできる。例えば、ルックアップテーブル1202は、逆数テーブルと対数テーブルを1024エントリ中の異なる領域に格納することができる。
ルックアップテーブル1202は、16個のPEで共有しているので、1024エントリを単一テーブルとして使用した場合には、参照に要するサイクル数は16となる。
これに1サイクルのアクセス遅延を加えた17が1024エントリのルックアップテーブル1202のレイテンシである。
エントリ数を少なくし、同一種類のテーブルを複数個格納した場合には、1個のテーブルを共有するPEの数が減る為、参照に要するサイクル数も減少する。例えば、256エントリのテーブルとした場合には、4個ずつのPEで共有することになる為、参照に要するサイクル数は4、レイテンシは5となる。なお、ルックアップテーブル1202の構成は、共有機能ユニット403がプログラム実行前に設定する。
加算演算器1203は、複数個のPEからデータを入力すると、そのデータの合計値を所定のレイテンシ後にデータを出力したPEに出力する。
共有機能ユニット403に1つの加算演算器1203があり、これを16個のPEで共有する場合は、演算に要するサイクル数は16となる。これに1サイクルのアクセス遅延を加えた17が加算演算器1203のレイテンシである。
共有機能ユニット403に2つの加算演算器1203があり、それぞれを8個のPEで共有する場合は、演算に要するサイクル数は8である。これに1サイクルのアクセス遅延を加えた9が加算演算器1203のレイテンシである。なお、複数の加算演算器1203の構成は、共有機能ユニット403がプログラム実行前に設定する。
最大最小値演算器1204は、複数個のPEからデータを入力すると、それらのデータの最大値、最小値が所定のレイテンシ後に、データを出力したPEに出力される。
共有機能ユニット403に1つの最大最小値演算器1204があり、これを16個のPEで共有する場合は、演算に要するサイクル数は16となる。これに1サイクルのアクセス遅延を加えた17が最大最小値演算器1204のレイテンシである。
共有機能ユニット403に2つの最大最小値演算器1204があり、それぞれを8個のPEで共有する場合は、演算に要するサイクル数は8となる。これに1サイクルのアクセス遅延を加えた9が最大最小値演算器1204のレイテンシである。なお、複数の最大最小値演算器1204の構成は、共有機能ユニット403がプログラム実行前に設定する。
ベクタ演算ユニット1205は、複数個のPEから入力したデータ数を次元とするベクタ演算を行い、結果が所定のレイテンシ後に、データを出力したPEに出力する。
以下の式(1)は2個のPEによる2次元のベクタ演算であるから演算に要するサイクル数は3である。これに1サイクルのアクセス遅延を加えた3がベクタ演算ユニット1205のレイテンシである。
以下、SCU203_0について説明する。
SCU203_1〜203_3は、SCU203_0と同じである。
SCU203_0は、処理に必要なデータを半導体メモリなどに代表される記憶装置に収納する。
PU_SIMD処理回路#0〜#3は、SIMD型プロセッサであるため、すべてのPEに対する入出力は時間的に同時に行われる。従って、SCU203_0によるPU_SIMD#0〜#3に対する入出力は、PEの個数分の入出力データを同時に入出力することになる。以下同時に入出力されるデータを、ストリームデータと呼ぶことにする。
SCU203_0は、PU_SIMD処理回路#0〜#3と、メモリシステム105およびローカルメモリ204_0との間に位置し、複数の画素データをストリームデータに変換して入出力を行う機能を持っている。
(1)SCU203_0は、ローカルメモリ204_0またはメモリシステム105(以下、記憶領域とも記す)からデータ群を読み出し、そのデータをPU_SIMD#0〜#3で必要とされるストリームデータに変換し、PU_SIMD#0〜#3に出力する。
(2)SCU203_0は、PU_SIMD#0〜#3が出力する出力ストリームデータを、記憶領域内部で必要とされるデータ形式に変換し、記憶領域へ書き込み転送する。
(3)SCU203_0の記憶領域は、作業領域として使用する半導体メモリであり、記憶領域はSCU203_0と共にSOC(System On Chip) に含まれる場合や、SOCの外部に含まれる場合などのバリエーションが想定できる。
(4)SCU203_0が上記記憶領域をアクセスする場合は、SCU203_0からは1次元の物理アドレスとしてアクセスできる。
(5)SCU203_0内部において、記憶領域上のデータは、PU_SIMD処理回路#0〜#3でのプログラム開発の容易さと画像情報の取り扱いの容易さのため、論理的な2次元座標で配列された画素データを単位として扱うことが可能である。
(6)記憶領域上では、複数の画素データから構成された1ワードデータが、1次元物理アドレスによるアクセス単位となる。
(7)1ワードデータ内の画素データ個数及び2次元座標で見た場合の画素データ配列は、使用するメモリ種類に応じて可変であり、SCU203_0は複数の画素データ配列に対処可能である。
(8)SCU203_0の記憶領域は、SCU203_0に接続されるPU_SIMD処理回路#0〜#3単位に、記憶領域へのreadアクセスとデータ変換を行うための設定を必要とし、その設定をSCU203_0内部のレジスタにホストプロセッサ101から書き込むことで可能となる。
(9)SCU203_0は、記憶領域へのreadアクセスを行うために以下の事項を設定する。
a.記憶領域に含まれる複数の矩形画像領域を指定する第1の開始アドレス。
b.第1の開始アドレスから始まる記憶領域中に含まれ、2次元論理座標で指定される、第2の複数の矩形画像領域の幅高さ。
c.第2の矩形画像領域中に、階層的に含まれる2次元論理座標で指定される第3の矩形画像領域の幅高さ。
d.第3の矩形画像領域内部のデータに対して、選択的にデータを読み出し、並べ替えや演算などの処理を施し、PU_SIMD処理回路#0〜#3が必要とするストリームデータへ変換する方式の指定。
(10)SCU203_0は、記憶領域へのWRiteアクセスを行うために以下の実行を設定する。
e.記憶領域に含まれると複数の矩形画像領域を指定する第4の開始アドレス。
f.第4の開始アドレスから始まる記憶領域中に含まれ、2次元論理座標で指定される、第5の複数の矩形画像領域の幅高さ。
g.第5の矩形画像領域中に、階層的に含まれる2次元論理座標で指定される第6の矩形画像領域の幅高さ。
h.第6の矩形画像領域内部のデータに対して、PU_SIMD処理回路#0〜#3が出力するストリームデータから択的にデータを読み出し、並べ替えや演算などの処理を施し、第6の矩形画像領域内部のデータ形に書き込む方式の指定。
i.SCU203_0は複数の記憶領域間のデータ転送を実現する。
j.SCU203_0を制御可能するコントローラであるホストプロセッサ101との間で、通信を行うためのインターフェースを介して接続する。
そのため、SCU203_0内部に多重構造の矩形画像領域を定義する。
図26は、記憶領域上の多重矩形画像領域から、PU_SIMD処理回路#0〜#3へストリームデータをWRiteする場合及び、PU_SIMD処理回路#0〜#3から記憶領域上の多重矩形画像領域へ、ストリームデータをWRiteする場合の動作を示している。
SCU203_0は、記憶領域中に、作業領域として矩形画像領域WRを指定する。
また、SCU203_0は、矩形画像領域WRを、PU_SIMD処理回路#0〜#3毎に指定する。
SCU203_0は、矩形画像領域WR内に、画素データの読み出し元である矩形画像領域ARを指定する。
SCU203_0は、矩形画像領域AR内に、矩形画像領域BRを指定する。
SCU203_0は、ホストプロセッサ101から入力したプログラムに基づいて、矩形画像領域BRから読み出した画素データを、PU_SIMD処理回路#0〜#3が必要とするストリームデータに変換するデータ変換コマンドWI#data#opを実行(指定)する。
SCU203_0は、後述するように矩形画像領域AR,BR,WI_data_op指定の一連の繰り返し処理をプログラム可能である。
SCU203_0は、矩形画像領域CR内に、矩形画像領域DRを指定する。
SCU203_0は、PU_SIMD#0〜#3の出力ストリームデータから、矩形画像領域DRへのデータ変換コマンドWO#data#opを実行する。
SCU203_0は、後述するように矩形画像領域CR、DR、WO_data_op指定は、一連の繰り返し処理をプログラム可能である。
SCU203_0は、矩形画像領域AR、BR、CR、DRは矩形画像領域WR内の任意の位置への配置と移動可能である。
SCU203_0は、矩形画像領域WR内において、矩形画像領域AR、BR、CR、DRを、2次元論理座標で指定が可能である。
SCU203_0は、記憶領域に対して矩形画像領域WRを物理アドレスで指定できる。
SCU203_0は、矩形画像領域WR,AR,DR,CR.DR内部の画素データがアクセスされた場合には、記憶領域へアクセスが必要になるため、論理アドレスから物理アドレスへの変換を行って記憶領域にアクセスする。
図27に示すように、SCU203_0は、PU_SIMD処理回路#0〜#3の各々に、記憶領域内の矩形画像領域WR0〜3の各々を割り当てる。
矩形画像領域WR0〜3は、メモリシステム105やローカルメモリ204_0などの記憶領域内に規定される。
矩形画像領域WR0〜3の各々に、矩形画像領域AR0〜7,BR0〜7,CR0〜3,DR0〜3が規定される。
また、SCU203_0は、データ変換コマンドWO#data#opにより、PU_SIMD処理回路#0〜#3から入力して入力バッファin#bufに収納されているストリームデータをデータ変換して矩形画像領域DRにWRiteする。
本実施形態では、矩形画像領域の個数や多重指定の階層数などを具体的な数字で表現しているが、その構成や数量は組み合わせ自由であり、幅広い画像処理の必要性に応じて構成を変えることが可能である。
[システムバス接続]
図1に示すシステムバス113は、SCU203_0を、ホストプロセッサ101およびメモリシステム105などの他の処理モジュールを接続するバスであり、以下の特徴を有する。
(1)システムバス113は、LSIやSOC内部で標準化されたバス規格を採用することが可能である。
(2)システムバス113のバス幅は128ビットであり、連続データ転送(バースト転送)が可能な構成とすることで、バス使用効率を向上できる。
(3)システムバス113上の記憶装置(例えば、メモリシステム105)に対して、SCU203_0はバスマスタとしてアクセスする。
(4)システムバス113上のSCU203_0以外のバスマスタから、SCU203_0の内部レジスタやSCU専用記憶装置(例えば、、ローカルメモリ204_0)へのアクセスを行う。
(5)システムバス113は、データ転送効率や機能が満足されるのであれば、バス規格にはこだわらない選択が可能である。
SCU203_0は、専用記憶領域として専用記憶装置を接続することが可能である。
専用記憶装置はSRAMやDRAMなどの半導体メモリがSOC内部外部にのどちらにあろうとも選択可能である。
上記専用記憶装置は、システムバス113より広帯域なバスに接続される。
上記専用記憶装置は、1つのSCU203_0が占有して使用する目的で用意されている。
システムバス113上のバスマスタから、上記専用記憶装置へのアクセスが可能である。
SCU203_0には、4つのPU_SIMD処理回路#0〜#3がバス接続される。
SCU203_0からPU_SIMD処理回路#0〜#3へのストリームデータ入力は、各PU_SIMD処理回路に256ビットの単方向バスを使用し、転送効率は256bit/clockである。
data/転送プロトコルとして2線式のハンドシェークを採用する。
SCU203_0内部には出力バッファout_bufを用意する。
SCU203_0から出力を行う場合は、PU_SIMD処理回路#0〜#3に対してアドレスを指定することでPU_SIMD処理回路内部レジスタを識別する。
PU_SIMD処理回路#0〜#3からSCU203_0へのストリームデータ入力は、各PU_SIMDの256ビットの単方向バスを使用し、転送効率は256bit/clockである。
また、データ転送プロトコルとして2線式のハンドシェークを採用する。
SCU203_0内部には入力用の入力バッファin_bufを用意する。
PU_SIMD処理回路#0〜#3からSCU203_0へ入力を行う場合は、PU_SIMDに対してアドレスを指定することでPU_SIMD処理回路内部レジスタを識別する。
SCU203_0がアクセスする図26および図27を用いて説明した記憶領域内の矩形画像領域WR内部の画素対応位置Pixelは2次元論理アドレスで表現されているが、メモリシステム105およびローカルメモリ204_0は物理アドレスで表現されている。従って、SCU203_0は、矩形画像領域WR内の矩形画像領域AR,BR,CR,DR内部に指定された画素対応位置Pixelに対してReadまたはWRiteを行う場合は、2次元論理アドレスから物理アドレスへのアドレス変換を行う。
ここで、矩形画像領域WR内の任意の画素対応位置をpixel(x,y)とする。ただしx,yは2次元論理アドレスである。
画素対応位置L_Pixel(x、y)の物理アドレス(adrs)は以下の様に計算される。
また、アドレス指定されるwordの中で、画素対応位置L_Pixel(x、y)が占めるビット位置をWord[a:b]と表現する。(ただしa,bはword内でpixelを構成するビット範囲とする。)
なお、1ワードデータ(1word)中のx方向Pixel数をpwとする。
phは、1word中のy方向Pixel数である。
nは、1word中のビット位置を計算するための値である。
WR#bpは、記憶領域内部での矩形画像領域WRの開始を示すアドレスである。
1つのPixel=16ビットで表現しているがビット長としては他の値を採用することも可能である。
Int()はカッコ内の値を超えない整数を示す。
X mod yは整数xを整数yで割った剰余である。
adres=WR#bp+int〔y/ph〕*ww/pw+int(x/pw) …(3)
n=(y mod ph)*pw+(x mod pw) …(4)
L#pixel(x,y)[15:0]=word[16*(n+1)-1:16*n] …(5)
図28に示すように、メモリシステム105およびローカルメモリ204_0の物理的なアドレス空間ADRS内に矩形画像領域WRが規定される。
SCU203_0は、1つの物理アドレスによるアクセス単位を1wordとする。
WR#bp+は、矩形画像領域WRの開始アドレスである。
wwは、矩形画像領域WRの幅であり、画素対応位置Pixel単位かつpwの倍数である。
図28に示すように、アドレス空間ADRSの画素対応位置L_Pixelは、2次元論理アドレスによってで指定可能である。
図28に示すpwは、1word内のx方向のpixel数(画素データ数)を示す。
図28に示すphは、1word内のy方向のpixel数を示す。
1pixelに含まれる情報量をnビットとし、1wordに含まれる総ビット容量をwordsizeとすると以下の関係式が成立する。
wordsize=n*pw*ph …(6)
本実施形態では1pixel=16bビットの構成で説明を行っているが、1pixelの情報量は特に限定されず、8ビットや32ビットなどでもよい。
SCU203_0は、上述したように、記憶領域として、システムバス113に接続された大規模外部記憶装置であるメモリシステム105と、小規模な専用記憶装置であるローカルメモリ204_0を使用することができる。
メモリシステム105は、例えば、SCU203_0が含まれるSOCの外部に接続されるDRAM-CHIPであり、一般的なDDRやRAMBUSなどのメモリchipなどである。
ローカルメモリ204_0は、例えば、SCU203_0が含まれるSOC内部のSRAMやeDRAM (Embedede-DRAM:SCUと同じSOCに含まれるOn-chip DRAM)などである。
本実施形態では、SCU203_0は、例えば、メモリシステム105やローカルメモリ204_0として、DRAMを使用しているが、SRAMであっても問題はない。また、DRAMを使用する場合、上記アクセス性能の不連続性を可能な限り避ける目的で、記憶領域内の画素データの矩形画像配列を、ストリームデータ生成時には可能な限り同一ページに配置する工夫をすることで、DRAMアクセスの不連続性を可能な限り低減する処置をとることができる。
この工夫は、たとえば先にのべた物理論理アドレス変換におけるbpとwwの値に、以下に示すような制約を与えるなどで容易に実現可能である。
(制約例2) WR#bpの値はDRAMのRaw単位である。
SCU203_0は、上述したように、記憶領域内の矩形画像領域WR内に、図29に示すように、2次元論理アドレス表現で多重矩形画像領域として、矩形画像領域AR,BRを規定できる。
それぞれの位置関係を示す値として以下の座標値が使われる。
wwは、矩形画像領域WRのx方向矩形画像領域幅。
ax,ayは、矩形画像領域WR内の矩形画像領域ARの2次元座標を示す。これは、矩形画像領域WRの左上を原点(0,0)とした座標系で、矩形画像領域ARの左上の画素対応位置Pixelの座標を示す。
aw及びahは、矩形画像領域ARの幅と高さを示す。
bx及びbyは、矩形画像領域AR内の矩形画像領域BRの2次元座標を示す。矩形画像領域ARの左上を原点(0,0)とした座標系で、矩形画像領域BRの左上の画素対応位置Pixelの座標を示す。
bw及びbhは、矩形画像領域BRの幅と高さを示す。
x及びyは、矩形画像領域BR内の画素対応位置Pixelの2次元座標を示す。矩形画像領域BRの左上を原点(0,0)とした座標系である。
SCU203_0は、bx,by及びbw,bhの値を調整することで、図30に示すように、矩形画像領域ARを逸脱するように矩形画像領域BRを指定できる。
これにより、SCU203_0は、多様な形態でPU_SIMD処理回路#0〜#3にストリームデータを出力できる。
以下、SCU203_0による矩形画像領域BRの指定の形態を示す各種のBRモードを説明する。
(矩形画像領域)BRモード1:
SCU203_0は、BRモード1に設定されている場合に、矩形画像領域ARから逸脱して矩形画像領域BRを設定可能である。
SCU203_0は、矩形画像領域BRが矩形画像領域ARから逸脱した場合に、逸脱した領域に対応した画素データPixelの値を予め設定された値(COL)にする。
SCU203_0は、矩形画像領域BR内の画素データPixel(x,y)を、矩形画像領域AR内の画素データAR()を用いて下記式(7)のように決定する。
if((x+bx >= aw )|(y+by > ah )) pixel(x,y)=COL
else pixel(x,y)=AR(x+bx,y+by) …(7)
SCU203_0は、BRモード2に設定されている場合に、矩形画像領域ARから逸脱して矩形画像領域BRを設定可能である。
SCU203_0は、図31に示すように、矩形画像領域BRがX方向に矩形画像領域ARから逸脱した場合、逸脱領域を矩形画像領域AR内部に折り返すように制御する。
SCU203_0は、図31に示すように、矩形画像領域BRがX方向とY方向とに矩形画像領域ARから逸脱した場合、矩形画像領域ARには折り返されないこととし、画素データPixelの値を(COL)とする。
SCU203_0は、矩形画像領域BR内の画素データPixel(x,y)を、矩形画像領域AR内の画素データAR()を用いて下記式(8)のように決定する。
if(aw <= x+bx) & (y+by <= ah-bh) pixel(x,y)=AR(x+bx-aw, y+by+bh)
else if (aw <= x+bx) & (ah-bh < y+by) pixel(x,y)=COL
else if(ah < y+bx) pixel(x,y)=COL
else pixel(x,y)=AR(x+bx, y+by)
…(8)
SCU203_0は、BRモード3に設定されている場合に、矩形画像領域ARから逸脱して矩形画像領域BRを設定できない。
SCU203_0は、矩形画像領域ARから逸脱した矩形画像領域BRを指定した場合には、逸脱した領域の画素データPixel(x,y)はその値を保障しない。
SCU203_0は、図32に示すように、矩形画像領域ARの外周から2画素対応位置の領域に、矩形画像領域BRが設定された場合に、矩形画像領域ARの外周から内側3画素対応位置の矩形画像領域BR内の画素対応位置の画素データPixel(x,y)を、矩形画像領域BRの外周から2画素対応位置の画素データPixel(x,y)として設定するクランプ(Clamp)動作を行う。
矩形画像領域BR内の画素データPixel(x,y)は、下記式(9)で規定される。
簡略化のためにxp=x+bx; yp=y+by;としている。
if ((xp < 2) & (yp < 2)) pixel(x,y)=AR(2,2)
else if((2<= xp <aw-2)&(yp < 2) pixel(x,y)=AR(xp,2)
else if((aw-2 <= xp)&(yp <2) pixel(x,y)=AR(aw-3,2)
else if((xp < 2)&( 2 <= yp <ah-2) pixel(x,y)=AR(2,yp)
else if ((aw-2 < xp)&(2 <= yp <ah-2) pixel(x,y)=AR(aw-3,yp)
else if ((xp < 2)&(ah-2 <= yp) pixel(x,y)=AR(2,ah-3)
else if ((2 <= xp <aw-2)&(ah-2 <= yp) pixel(x,y)=AR(xp,ah-3)
else if ((aw-2 <= xp)&(ah-2 <= yp) pixel(x,y)=AR(aw-3,ah-3)
else pixel(x,y) = AR(xp,yp)
…(9)
本実施形態では、上述したようにクランプ動作(処理)を行うことで、任意の矩形画像領域のフィルタ処理などを行う場合に、矩形画像領域の外周において当該矩形画像領域外の画素データを適切に代用することができる。
SCU203_0は、矩形画像領域BRから画素データPixel(x,y)を読み出し、これをデータストリームへデータに変換して(入力データ変換処理を行って)図3に示すPU_SIMD処理回路#0〜#3に入力させる。
ここで、SCU203_0は、PU_SIMD#0〜#3の各々について、上記変換の内容を指定できる。
SCU203_0は、各PU_SIMD#0〜#3に対応した出力バッファout_bufを備えている。
SCU203_0は、矩形画像領域BRを指定するレジスタを備えている。
SCU203_0は、各PU_SIMD#0〜#3に対応した入力バッファin_bufを備えている。
SCU203_0は、矩形画像領域BRから画素データPixel(x,y)を読み出し、並べ替えなどのデータ変換処理を施した後に、ストリームデータとして図27に示す出力バッファout_bufに書き込む。
SCU203_0は、矩形画像領域BRを指定するレジスタ値を、ストリームデータとして出力バッファout_bufに書き込む。
SCU203_0は、矩形画像領域BRから画素データPixel(x,y)を読み出し、並べ替えなどのデータ変換処理を施した後に、SCU203_0内にある矩形画像領域BRを指定するレジスタに書き込む。
SCU203_0は、入力バッファin_bufから読み出したデータを、データ変換処理を施した後に、ストリームデータとして出力バッファout_bufに書き込む。
SCU203_0は、図1に示すホストプロセッサ101から入力データ変換コマンドを入力して実行する。
SCU203_0は、表2に示す各入力データ変換コマンドにおいて、表3に示す従属パラメータを指定できる。
[set#BR#1of4x4#same]
SCU203_0は、例えば、ホストプロセッサ101から入力データ変換コマンド「set#BR#1of4x4#same」を実行すると、図34に示すように、その従属パラメータで指定された矩形画像領域BR内の1画素対応位置から画素データPixelを読み出し、それを64個複製して画素データPixel(0,...63)を生成し、これを画素データ内部のビット選択の後に、出力バッファout_bufを介してPU_SIMD処理回路#0〜#3に入力される。
SCU203_0は、従属パラメータBR#numにより、4x4画素対応位置の矩形画像領域BRを特定する。
SCU203_0は、マルチプレクサMUX1,MUX2および論理回路LOG1を有する。
マルチプレクサMUX1は、上記特定した矩形画像領域BRから、従属パラメータyselにより、x方向の4画素対応位置の画素データPixelを読み出す。
そして、マルチプレクサMUX2は、上記読み出したx方向の4つの画素データPixelのなかから、従属パラメータxselにより、1つの画素データPixelを選択して論理回路LOG1に出力する。
論理回路LOG1は、従属パラメータwselにより、上記選択した1つの画素データPixelを各々が示す64個の画素データPixelを、出力バッファout_bufに書き込む。
論理回路LOG1は、従属パラメータwselにより、64個の画素データPixelをそのまま出力バッファout_bufに書き込むか、あるいは各画素データPixelのLSBから4ビットをパックして16個の画素データPixelに収納するかを決定する。
SCU203_0は、従属パラメータldにより、4画素データPixel毎にload制御を行う。
SCU203_0は、例えば、ホストプロセッサ101から入力データ変換コマンド「set# bxy」を実行すると、図35に示すように、従属パラメータxsel,yselで選択された矩形画像領域BRの左端座標(bx,by)を32個ずつ複製して64個の画素データのストリームデータを生成し、従属パラメータwselによる画素データ内部のビット選択の後に、従属パラメータldにより出力バッファout_bufに設定する。
本実施形態では、矩形画像領域BRとして左端座標が異なる8種類が用意されている。
SCU203_0は、矩形画像領域BRのy方向の値を指定するレジスタby0〜7と、x方向の値を指定するレジスタbx0〜7とを備えている。
SCU203_0は、8個のマルチプレクサMUX11を有する。
マルチプレクサMUX11の各々は、それぞれ対応するレジスタbyの値とレジスタxyの値とのうち一方を、従属パラメータyselにより選択して、マルチプレクサMUX12に出力する。
SCU203_0は、2つのマルチプレクサMUX12を備えている。
マルチプレクサMUX12は、それぞれ4つのマルチプレクサMUX11から入力した値のうち1つを、従属パラメータxselにより選択して論理回路LOG31に出力する。
論理回路LOG31は、従属パラメータwselにより、64画素データをそのまま出力バッファout_bufに書き込むか、あるいは各画素データPixelのLSBから4ビットをパックして16個の画素データPixelに収納するかを決定する。
SCU203_0は、出力バッファout_bufからPU_SIMD#0〜#3へのload制御を、従属パラメータldにより、4画素データPixel毎に行う。
このように、矩形画像領域BRの左端座標をPU_SIMD処理回路#0〜#3に出力するのは、PU_SIMD処理回路#0〜#3のPEにおいて、フィルタ処理などにおいて、当該座標を処理に用いるためである。
SCU203_0は、ホストプロセッサ101から入力データ変換コマンド「set#BR#8x1#to#bxy 」を実行すると、例えば、図36に示すように、矩形画像領域BR内にx方向に連続する2pixelを座標として扱うため、BR#numで選択された矩形画像領域BR4〜7から8画素データPixelを選択し、矩形画像領域BRの左端座標(bx,by)に設定する。
このことは、後述する入力データ変換コマンド「WI#data#op=set#BR4567#1of4x4」と組み合わせて指定することで、メモリ間接アドレスを実現する。
すなわち、この例では、矩形画像領域BR内に、矩形画像領域BRの左端座標が、画素データとして記憶されている。
SCU(Stream Control Unit)203_0は、ホストプロセッサ101から入力データ変換コマンド「set#BR4567#1of4x4」を実行すると、例えば、図37に示すように、従属パラメータxsel,yselにより、マルチプレクサMUX1,MUX2で4つの矩形画像領域BRからそれぞれ1画素データを読み出し、これを論理回路LOG51に出力する。
論理回路LOG51は、SCU203_0から入力した画素データを、従属パラメータwselにより、出力バッファout_bufの所定のビット位置に書き込む。
論理回路LOG51は、従属パラメータwselにより、64画素データをそのまま出力バッファout_bufに書き込むか、あるいは各画素データPixelのLSBから4ビットをパックして16個の画素データPixelに収納するかを決定する。
SCU203_0は、出力バッファout_bufからPU_SIMD#0〜#3へのload制御を、4画素データ毎に、従属パラメータldにより行う。
この例では、上記4つの矩形画像領域BRの左端座標として、上記「set#BR#8x1#to#bxy」によって設定されたものを用いることで、上記メモリ間接アドレスを実現する。
SCU203_0は、ホストプロセッサ101から入力データ変換コマンド「set#in#buf#straight」を実行すると、例えば、図38に示すように、PU_SIMD#0〜#3毎に備えられた4本の入力バッファin_bufのなかから、2本の入力バッファin_buf(n),(n−1)を選択する。
入力バッファin_buf(n),(n−1)の各々は、1(高さ)×64(幅)画素データのサイズを有している。
SCU203_0は、64個のマルチプレクサMUX1を備えている。
64個のマルチプレクサMUX1の各々は、入力バッファin_buf(n),(n−1)の対応する2つの画素データのうち、一つを従属パラメータyselにより選択して論理回路LOG61に出力する。
論理回路LOG61は、従属パラメータwselにより、64画素データをそのまま出力バッファout_bufに書き込むか、あるいは各画素データPixelのLSBから4ビットをパックして16個の画素データPixelに収納するかを決定する。
SCU203_0は、出力バッファout_bufからPU_SIMD処理回路#0〜#3へのload制御を、4画素データ毎に、従属パラメータldにより行う。
入力データ変換コマンド「set#in#buf#straight」により、図3に示すPU_SIMD処理回路#0〜#3間でのデータの入出力が可能になる。また、当該入力データ変換コマンド「set#in#buf#straight」によって、PU_SIMD#0〜#3を直列および並列の何れで接続するかをプログラミング(規定)できる。
SCU203_0は、ホストプロセッサ101から入力データ変換コマンド「set#in#buf#with#BR#2x1」を実行すると、例えば、図39に示すように、PU_SIMD#0〜#3毎に備えられた4本の入力バッファin_bufのなかから、2本の入力バッファin_buf(n),(n−1)を選択する。
入力バッファin_buf(n),(n−1)の各々は、1(高さ)×64(幅)画素データのサイズを有している。
SCU203_0は、62個のマルチプレクサMUX1を備えている。
62個のマルチプレクサMUX1の各々は、入力バッファin_buf(n),(n−1)の対応する2つの画素データのうち、一つを従属パラメータyselにより選択して論理回路LOG71に出力する。
論理回路LOG71は、従属パラメータwselにより、62画素データと、従属パラメータBR#numで選択された矩形画像領域BRから読み出した2画素データの合計64画素データをそのまま出力バッファout_bufに書き込むか、あるいは各画素データPixelのLSBから4ビットをパックして16個の画素データPixelに収納するかを決定する。
SCU203_0は、出力バッファout_bufからPU_SIMD処理回路#0〜#3へのload制御を、4画素データ毎に、従属パラメータldにより行う。
SCU203_0は、ホストプロセッサ101から入力データ変換コマンド「set#in#buf#with#BR#4x1」を実行すると、例えば、図40に示すように、PU_SIMD処理回路#0〜#3毎に備えられた4本の入力バッファin_bufのなかから、2本の入力バッファin_buf(n),(n−1)を選択する。
入力バッファin_buf(n),(n−1)の各々は、1(高さ)×64(幅)画素データのサイズを有している。
SCU203_0は、60個のマルチプレクサMUX1を備えている。
60個のマルチプレクサMUX1の各々は、入力バッファin_buf(n),(n−1)の対応する2つの画素データのうち、一つを従属パラメータyselにより選択して論理回路LOG81に出力する。
論理回路LOG81は、従属パラメータwselにより、60画素データと、従属パラメータBR#numで選択された矩形画像領域BRから読み出した4画素データの合計64画素データをそのまま出力バッファout_bufに書き込むか、あるいは各画素データPixelのLSBから4ビットをパックして16個の画素データPixelに収納するかを決定する。
SCU203_0は、出力バッファout_bufからPU_SIMD処理回路#0〜#3へのload制御を、4画素データ毎に、従属パラメータldにより行う。
SCU203_0は、ホストプロセッサ101から入力データ変換コマンド「set#BR#16x1」を実行すると、例えば、図41に示すように、従属パラメータBR#numで選択された矩形画像領域BR内の16画素データを4倍に複製して64画素データのストリームデータを生成し、これを所定の画素データ選択処理を経て、出力バッファout_bufに書き込む。
論理回路LOG91は、従属パラメータBR#numで選択された矩形画像領域BR内の16画素データを4倍に複製して得られた64画素データを入力し、これら64画素データをそのまま出力バッファout_bufに書き込むか、あるいは各画素データPixelのLSBから4ビットをパックして16個の画素データPixelに収納するかを決定する。
SCU203_0は、出力バッファout_bufからPU_SIMD処理回路#0〜#3へのload制御を、4画素データ毎に、従属パラメータldにより行う。従って4倍に複製したデータをout#bufに対して16pixelごとに書き込むことも可能である。
SCU203_0は、ホストプロセッサ101から入力データ変換コマンド「set#BR#32x1」を実行すると、例えば、図42に示すように、従属パラメータBR#numで選択された矩形画像領域BR内の32画素データを2倍に複製して64画素データのストリームデータを生成し、これを所定の画素データ選択処理を経て、出力バッファout_bufに書き込む。
論理回路LOG101は、従属パラメータBR#numで選択された矩形画像領域BR内の32画素データを2倍に複製して得られた64画素データを入力し、これら64画素データをそのまま出力バッファout_bufに書き込むか、あるいは各画素データPixelのLSBから4ビットをパックして16個の画素データPixelに収納するかを決定する。
SCU203_0は、出力バッファout_bufからPU_SIMD処理回路#0〜#3へのload制御を、4画素データ毎に、従属パラメータldにより行う。従って2倍に複製したデータをout#bufに対して32pixelごとに書き込むことも可能である。
SCU203_0は、ホストプロセッサ101から入力データ変換コマンド「set#BR#64x1」を実行すると、例えば、図43に示すように、従属パラメータBR#numで選択された矩形画像領域BR内の64画素データのストリームデータを生成し、これを所定の画素データ選択処理を経て、出力バッファout_bufに書き込む。
論理回路LOG111は、従属パラメータBR#numで選択された矩形画像領域BR内の64画素データを入力し、これら64画素データをそのまま出力バッファout_bufに書き込むか、あるいは各画素データPixelのLSBから4ビットをパックして16個の画素データPixelに収納するかを決定する。
SCU203_0は、出力バッファout_bufからPU_SIMD処理回路#0〜#3へのload制御を、4画素データ毎に、従属パラメータldにより行う。
SCU203_0は、ホストプロセッサ101から入力データ変換コマンド「set#BR#64x2」を実行すると、例えば、図44に示すように、従属パラメータBR#numで選択された矩形画像領域BR内の128×1画素データのなかから、従属パラメータxselにより、64画素データを選択してストリームデータを生成し、これを所定の画素データ選択処理を経て、出力バッファout_bufに書き込む。
64個のマルチプレクサMUX2の各々は、従属パラメータBR#numで選択された矩形画像領域BR内のx方向に隣接した2画素データを入力し、従属パラメータxselにより、1画素データを選択して論理回路LOG121に出力する。
論理回路LOG121は、従属パラメータwselにより、64個のマルチプレクサMUX2から入力した64画素データをそのまま出力バッファout_bufに書き込むか、あるいは各画素データPixelのLSBから4ビットをパックして16個の画素データPixelに収納するかを決定する。
SCU203_0は、出力バッファout_bufからPU_SIMD#0〜#3へのload制御を、4画素データ毎に、従属パラメータldにより行う。
SCU203_0は、ホストプロセッサ101から入力データ変換コマンド「set#BR#64x2x2」を実行すると、例えば、図45に示すように、従属パラメータBR#numで選択された矩形画像領域BR内の128×2画素データのなかから、従属パラメータxselにより、64画素データを選択してストリームデータを生成し、これを所定の画素データ選択処理を経て、出力バッファout_bufに書き込む。
128個のマルチプレクサMUX1の各々は、従属パラメータBR#numで選択された矩形画像領域BR内のy方向に隣接した2画素データを入力し、従属パラメータyselにより、1画素データを選択して、64個のマルチプレクサMUX2に出力する。
64個のマルチプレクサMUX2は、x方向に隣接する2つの画素データのうち、1の画素データを、従属パラメータxselにより選択して論理回路LOG131に出力する。
論理回路LOG131は、従属パラメータwselにより、64個のマルチプレクサMUX2から入力した64画素データをそのまま出力バッファout_bufに書き込むか、あるいは各画素データPixelのLSBから4ビットをパックして16個の画素データPixelに収納するかを決定する。
SCU203_0は、出力バッファout_bufからPU_SIMD処理回路#0〜#3へのload制御を、4画素データ毎に、従属パラメータldにより行う。
SCU203_0は、ホストプロセッサ101から入力データ変換コマンド「set#BR#64x3」を実行すると、例えば、図46に示すように、従属パラメータBR#numで選択された矩形画像領域BR内の192×1画素データのなかから、従属パラメータxselにより、64画素データを選択してストリームデータを生成し、これを所定の画素データ選択処理を経て、出力バッファout_bufに書き込む。
64個のマルチプレクサMUX3の各々は、従属パラメータBR#numで選択された矩形画像領域BR内のx方向に隣接した3画素データを入力し、従属パラメータxselにより、1画素データを選択して論理回路LOG141に出力する。
論理回路LOG141は、従属パラメータwselにより、64個のマルチプレクサMUX3から入力した64画素データをそのまま出力バッファout_bufに書き込むか、あるいは各画素データPixelのLSBから4ビットをパックして16個の画素データPixelに収納するかを決定する。
SCU203_0は、出力バッファout_bufからPU_SIMD#0〜#3へのload制御を、4画素データ毎に、従属パラメータldにより行う。
SCU203_0は、ホストプロセッサ101から入力データ変換コマンド「set#BR#64x3x3」を実行すると、例えば、図47に示すように、従属パラメータBR#numで選択された矩形画像領域BR内の192×3画素データのなかから、従属パラメータxselにより、64画素データを選択してストリームデータを生成し、これを所定の画素データ選択処理を経て、出力バッファout_bufに書き込む。
192個のマルチプレクサMUX4の各々は、従属パラメータBR#numで選択された矩形画像領域BR内のy方向に隣接した3画素データを入力し、従属パラメータyselにより、1画素データを選択して、64個のマルチプレクサMUX3に出力する。
64個のマルチプレクサMUX3は、マルチプレクサMUX4から入力したx方向に隣接する3つの画素データのうち、1の画素データを、従属パラメータxselにより選択して論理回路LOG151に出力する。
論理回路LOG151は、従属パラメータwselにより、64個のマルチプレクサMUX3から入力した64画素データをそのまま出力バッファout_bufに書き込むか、あるいは各画素データPixelのLSBから4ビットをパックして16個の画素データPixelに収納するかを決定する。
SCU203_0は、出力バッファout_bufからPU_SIMD処理回路#0〜#3へのload制御を、4画素データ毎に、従属パラメータldにより行う。
SCU203_0は、ホストプロセッサ101から入力データ変換コマンド「set#BR#64x4」を実行すると、例えば、図48に示すように、従属パラメータBR#numで選択された矩形画像領域BR内の256×1画素データのなかから、従属パラメータxselにより、64画素データを選択してストリームデータを生成し、これを所定の画素データ選択処理を経て、出力バッファout_bufに書き込む。
64個のマルチプレクサMUX5の各々は、従属パラメータBR#numで選択された矩形画像領域BR内のx方向に隣接した4画素データを入力し、従属パラメータxselにより、1画素データを選択して論理回路LOG161に出力する。
論理回路LOG161は、従属パラメータwselにより、64個のマルチプレクサMUX5から入力した64画素データをそのまま出力バッファout_bufに書き込むか、あるいは各画素データPixelのLSBから4ビットをパックして16個の画素データPixelに収納するかを決定する。
SCU203_0は、出力バッファout_bufからPU_SIMD処理回路#0〜#3へのload制御を、4画素データ毎に、従属パラメータldにより行う。
SCU203_0は、ホストプロセッサ101から入力データ変換コマンド「set#BR#64x4x4」を実行すると、例えば、図49に示すように、従属パラメータBR#numで選択された矩形画像領域BR内の256×4画素データのなかから、従属パラメータxselにより、64画素データを選択してストリームデータを生成し、これを所定の画素データ選択処理を経て、出力バッファout_bufに書き込む。
256個のマルチプレクサMUX6の各々は、従属パラメータBR#numで選択された矩形画像領域BR内のy方向に隣接した4画素データを入力し、従属パラメータyselにより、1画素データを選択して、64個のマルチプレクサMUX5に出力する。
64個のマルチプレクサMUX5は、マルチプレクサMUX4から入力したx方向に隣接する4つの画素データのうち、1の画素データを、従属パラメータxselにより選択して論理回路LOG161に出力する。
論理回路LOG161は、従属パラメータwselにより、64個のマルチプレクサMUX5から入力した64画素データをそのまま出力バッファout_bufに書き込むか、あるいは各画素データPixelのLSBから4ビットをパックして16個の画素データPixelに収納するかを決定する。
SCU203_0は、出力バッファout_bufからPU_SIMD処理回路#0〜#3へのload制御を、4画素データ毎に、従属パラメータldにより行う。
SCU203_0は、ホストプロセッサ101から入力データ変換コマンド「set#BR#64x9」を実行すると、例えば、図50に示すように、従属パラメータBR#numで選択された矩形画像領域BR内の576×1画素データのなかから、従属パラメータxselにより、64画素データを選択してストリームデータを生成し、これを所定の画素データ選択処理を経て、出力バッファout_bufに書き込む。
64個のマルチプレクサMUX7の各々は、従属パラメータBR#numで選択された矩形画像領域BR内のx方向に隣接した9画素データを入力し、従属パラメータxselにより、1画素データを選択して論理回路LOG171に出力する。
論理回路LOG171は、従属パラメータwselにより、64個のマルチプレクサMUX7から入力した64画素データをそのまま出力バッファout_bufに書き込むか、あるいは各画素データPixelのLSBから4ビットをパックして16個の画素データPixelに収納するかを決定する。
SCU203_0は、出力バッファout_bufからPU_SIMD処理回路#0〜#3へのload制御を、4画素データ毎に、従属パラメータldにより行う。
SCU203_0は、ホストプロセッサ101から入力データ変換コマンド「set#BR#64x9x3」を実行すると、例えば、図51に示すように、従属パラメータBR#numで選択された矩形画像領域BR内の576×3画素データのなかから、従属パラメータxselにより、64画素データを選択してストリームデータを生成し、これを所定の画素データ選択処理を経て、出力バッファout_bufに書き込む。
576個のマルチプレクサMUX8の各々は、従属パラメータBR#numで選択された矩形画像領域BR内のy方向に隣接した3画素データを入力し、従属パラメータyselにより、1画素データを選択して、64個のマルチプレクサMUX7に出力する。
64個のマルチプレクサMUX7は、マルチプレクサMUX8から入力したx方向に隣接する9つの画素データのうち、1の画素データを、従属パラメータxselにより選択して論理回路LOG181に出力する。
論理回路LOG181は、従属パラメータwselにより、64個のマルチプレクサMUX7から入力した64画素データをそのまま出力バッファout_bufに書き込むか、あるいは各画素データPixelのLSBから4ビットをパックして16個の画素データPixelに収納するかを決定する。
SCU203_0は、出力バッファout_bufからPU_SIMD処理回路#0〜#3へのload制御を、4画素データ毎に、従属パラメータldにより行う。
SCU203_0は、記憶領域内の矩形画像領域WR内に、図52に示すように、2次元論理アドレス表現で多重矩形画像領域として、矩形画像領域CR,DRを規定できる。
それぞれの位置関係を示す値として以下の座標値が使われる。
wwは、矩形画像領域WRのx方向矩形画像領域幅を示す。
cx,cyは、矩形画像領域WR内の矩形画像領域CRの2次元座標を示す。これは、矩形画像領域WRの左上を原点(0,0)とした座標系で、矩形画像領域CRの左上の座標を示す。
cw及びchは、矩形画像領域CRの幅と高さを示す。
dx及びdyは、矩形画像領域CR内の矩形画像領域DRの2次元座標を示す。矩形画像領域CRの左上を原点(0,0)とした座標系で、矩形画像領域DRの左上の座標を示す。
dw及びdhは、矩形画像領域DRの幅と高さを示す。
SCU203_0は、dx,dy及びdw,dhの値を調整することで、図53に示すように、矩形画像領域CRを逸脱するように矩形画像領域DRを指定できる。
これにより、SCU203_0は、PU_SIMD処理回路#0〜#3からの多様な形態のストリームデータを入力できる。
DRモード1:
SCU203_0は、DRモード1に設定されている場合に、矩形画像領域CRから逸脱して矩形画像領域DRを設定可能である。
SCU203_0は、矩形画像領域DRが矩形画像領域CRから逸脱した場合に、逸脱した領域に含まれる画素対応位置の画素データの値を矩形画像領域CRに書き込まない。
矩形画像領域DR内の画素データは、矩形画像領域CR内では下記式(10)で規定される。
if((x+dx >= cw )|(y+dy > ch )) pixel(x,y)はCRにWRiteされない
else CR(x+dx,y+dy)=pixel(x,y)
…(10)
SCU203_0は、DRモード2に設定されている場合に、矩形画像領域CRから逸脱して矩形画像領域DRを設定可能である。
SCU203_0は、図54に示すように、矩形画像領域DRがx方向に矩形画像領域CRから逸脱した場合、逸脱領域を矩形画像領域CR内部に折り返すように制御する。
また、SCU203_0は、図54に示すように、矩形画像領域DRがx方向とy方向とに矩形画像領域CRから逸脱した場合、矩形画像領域DR内の画素データを矩形画像領域CR内に書き込まない。
矩形画像領域DR内の画素データは、矩形画像領域CR内において、下記式(11)のように規定される。
if(cw <= x+dx) & (y+dy <= ch-dh) CR(x+dx-cw, y+dy+dh)=pixel(x,y)
else if (cw <= x+dx) & (ch-dh < y+dy) pixel(x,y)はCRにWRiteされない
else if(ch < y+dx) pixel(x,y)はCRにWRiteされない
else CR(x+dx, y+dy)=pixel(x,y)
…(11)
PU_SIMD処理回路#0〜#3が出力したストリームデータは、入力バッファin_bufに書き込まれる。
SCU203_0は、入力バッファin_bufからデータを読み出し、並べ替えなどのデータ変換処理を施した後に、矩形画像領域DRに書き込む。
また、SCU203_0は、必要に応じて、入力バッファin_bufからデータを読み出し、マスクデータDR#maskに従った並べ替えなどのデータ変換処理を施した後に、矩形画像領域DRに書き込む。
SCU203_0は、PU_SIMD処理回路#0〜#3の各々について、上記変換処理を指定できる。
SCU203_0は、マスクデータDR#mask を記録するレジスタを備えている。
SCU203_0は、PU_SIMD処理回路#0〜#3の各々に対応した入力バッファin_bufを備えている。
SCU203_0は、図1に示すホストプロセッサ101から出力データ変換コマンドを入力して実行する。
SCU203_0は、表4に示す各出力データ変換コマンドにおいて、表5に示す従属パラメータを指定できる。
[set#DR#mask#64x1]
入力バッファin_buf(0-15)の各々には、PU_SIMD#0〜#3から入力された64画素データが書き込まれる。なお、1画素データは、4ビットで表現されている。
ここで、例えば、各出力バッファout_bufは、それぞれ図3に示す一つのプロセッサユニットPUに予め対応付けられている。
SCU203_0は、図55に示すように、各画素データを構成する4ビットから1ビットを選択し、64ビットのマスクデータDR#maskとして、マスクレジスタMR11に書き込む。
マスクデータDR#maskを構成する各ビットは、プロセッサユニットPUの出力を、矩形画像領域DRに書き込む場合に、画素データ単位のマスク情報として用いられる。
たとえばマスクデータDR#maskのビットが「1」の場合は画素データを矩形画像領域DRに書き込むことを意味し、「0」の場合には書き込まないことを意味する。
SCU203_0が、矩形画像領域DRに実際に画素データを書き込むのは、後述する出力データ変換処理コマンドがset#DR#packed=64x1の場合である。
また、SCU203_0は、従属パラメータDR#numで選択されたマスクサイズレジスタMSR11には64ビットのマスクデータDR#maskのなかで「1」となっているビット数を書き込む。
従って、マスクサイズレジスタMSR11に記憶される値は、0〜64のいずれかである。
ビット選択器SEL11は、入力バッファin_buf(0-15)に格納されている64画素データを構成する各4〜1ビットを従属パラメータbselにより選択する。選択は4種類であり各画素データで同じbitが選択される。
SCU203_0は、従属パラメータDR#numで選択したマスクレジスタMR11に、ビット選択器SEL11で選択されたデータをマスクデータDR#maskとして格納する。
図56に示す入力バッファin_buf(0-63)の各々には、対応するプロセッサユニットPUから入力された64画素データが書き込まれている。
SCU203_0の書き込み制御回路WC11は、従属パラメータDR#numで選択された64ビット構成のマスクレジスタMR11に記憶されているマスクデータDR#maskに従い、入力バッファin_bufに記憶されている画素データを、従属パラメータDR#numで選択された矩形画像領域DRに書き込む。
このとき、書き込み制御回路WC11は、マスクデータDR#maskの「1」を示すビットに対応する画素データを、矩形画像領域DRのx座標の小さいほうから順に詰め合わせて(packして)書き込む。
矩形画像領域DRの幅は、64画素データで高さは、1画素データであるが、マスクデータDR#maskに応じて画素データをパック(pack)して矩形画像領域DRに書き込むため、矩形画像領域DR全体に画素データが書き込まれるとは限らない。
図57に示す入力バッファin_buf(0-63)の各々には、対応するプロセッサユニットPUから入力された64画素データが書き込まれている。
SCU203_0は、入力バッファin_bufから読み出した64画素データを、従属パラメータDR#numで選択された矩形画像領域DR内に書き込む。
本実施形態では、上記矩形画像領域DRのサイズは、64×1画素データである。
図58に示す入力バッファin_buf(0-63)の各々には、対応するプロセッサユニットPUから入力された64画素データが書き込まれている。
SCU203_0は、従属パラメータselに従って、入力バッファin_bufから読み出した64画素データを、従属パラメータDR#numで選択された矩形画像領域DR内に書き込む。
本実施形態では、上記矩形画像領域DRのサイズは、128×1画素データである。
SCU203_0は、従属パラメータpsel=0の場合は矩形画像領域DRのx座標が2の倍数の座標(画素対応位置)に画素データを書き込む。
SCU203_0は、従属パラメータpsel=1の場合は、矩形画像領域DRのx座標が2の倍数+1の座標に画素データを書き込む。
図59に示す入力バッファin_buf(0-63)の各々には、対応するプロセッサユニットPUから入力された64画素データが書き込まれている。
SCU203_0は、従属パラメータselに従って、入力バッファin_bufから読み出した64画素データを、従属パラメータDR#numで選択された矩形画像領域DR内に書き込む。
本実施形態では、上記矩形画像領域DRのサイズは、192×1画素データである。
SCU203_0は、従属パラメータpsel=0の場合は矩形画像領域DRのx座標が3の倍数の座標(画素対応位置)に画素データを書き込む。
SCU203_0は、従属パラメータpsel=1の場合は、矩形画像領域DRのx座標が3の倍数+1の座標に画素データを書き込む。
SCU203_0は、従属パラメータpsel=2の場合は、矩形画像領域DRのx座標が3の倍数+2の座標に画素データを書き込む。
図60に示す入力バッファin_buf(0-63)の各々には、対応するプロセッサユニットPUから入力された64画素データが書き込まれている。
SCU203_0は、従属パラメータselに従って、入力バッファin_bufから読み出した64画素データを、従属パラメータDR#numで選択された矩形画像領域DR内に書き込む。
本実施形態では、上記矩形画像領域DRのサイズは、256×1画素データである。
SCU203_0は、従属パラメータpsel=0の場合は矩形画像領域DRのx座標が4の倍数の座標(画素対応位置)に画素データを書き込む。
SCU203_0は、従属パラメータpsel=1の場合は、矩形画像領域DRのx座標が4の倍数+1の座標に画素データを書き込む。
SCU203_0は、従属パラメータpsel=2の場合は、矩形画像領域DRのx座標が4の倍数+2の座標に画素データを書き込む。
SCU203_0は、従属パラメータpsel=3の場合は、矩形画像領域DRのx座標が4の倍数+3の座標に画素データを書き込む。
図2、図3、図27に示すSCU203_0の動作シーケンスについて説明する。
なお、SCU203_1〜3は、SCU203_0と基本的に同じである。
SCU203_0は、図1に示すホストプロセッサ101から入力したプログラムをプログラムメモリに格納する。
SCU203_0の内蔵プロセッサは、プログラムカウンタに従って、上記プログラムメモリからプログラムを読み出して実行する。当該プログラムには、前述したデータ変換コマンドWI#data#op,WO_data_opが含まれる。
上記内蔵プロセッサは、例えば、RISCプロセッサである。
上記内蔵プロセッサは、PU_SIMD処理回路#0〜#3の処理開始を指示する。
上記内蔵プロセッサは、矩形画像領域WR/AR/BR/CR/DRのアドレス、サイズを指定すると共に、アドレスを即値加算、条件分岐などを行う。
上記内蔵プロセッサが実行するコマンド(命令)は、instruction,operand0,displacementからなる。
上記内蔵プロセッサは、finish命令を実行すると、ホストプロセッサ101に割り込み信号を出力してプログラムの実行を終了する。
図61に示すように、上記内蔵プロセッサは、コマンド「exec」を実行する。
コマンド「exec」は、データ変換コマンドWI#data#op,WO#data#op、並びにそのパラメータであるWI#data#op#param,WO#data#op#paramを指定する。
コマンド「exec」は、DMA転送を指定するために用いられる。
コマンド「Branch」には、条件なしの静的ループ処理と、条件付の処理とがある。
当該条件付の処理では、矩形画像領域の座標ax,ay,bx,by,cx,cy,dx,dyと即値との比較結果を基に条件を判断する。
コマンド「Set」は、矩形画像領域ax,ay,aw,ah,bx,by,bw,bhなど座標指定、矩形画像領域cx,cy,cw,ch,dx,dy,dw,dhなどの座標指定などを規定する。
コマンド「Set」は、矩形画像領域WRを規定するbp,wwを指定する。
コマンド「Set」は、DMA領域を規定する転送元開始アドレス、転送先開始アドレス、転送サイズを指定する。
コマンド「add/sub」は、矩形画像領域ax,ay,aw,ah,bx.by,bw,bhなどの座標の加減算、並びに矩形画像領域cx,cy,cw,ch,dx,dy,dw,dhなどの座標の加減算を行う。
また、コマンド「add/sub」は、dxにおいてのみ、PU_SIMD処理回路#0〜#3から設定可能な値を加算可能である。
当該従属パラメータは、データ変換コマンドと対応付けて、SCU203_0のメモリに格納される。
SCU203_0は、データ変換コマンドWI#data#opを実行することで、矩形画像領域WRから読み出したデータを変換してPU_SIMD処理回路#0〜#3に出力する。
SCU203_0は、データ変換コマンドWO_data_opを実行することで、PU_SIMD#0〜#3から入力したデータを変換して矩形画像領域WRに書き込む。
本実施形態では、SCU203_0の処理(スレッド)は、図1に示すホストプロセッサ101が開始指示する。
PU_SIMD(Single Instruction Multiple Data)処理回路#0〜#3は各PU_SIMD処理に対応した個別のスレッドで動作し、当該スレッドは、SCU203_0あるいはホストプロセッサ101によって開始指示される。
すなわち、内蔵プロセッサは、記憶領域のリード/ライト共に、コマンドを先行発行して実行する。
そして、内蔵プロセッサは、データ変換コマンドWI#data#op, WO#data#opの実行でアドレス計算を行い、そのアドレスをリードおよびライト別にキューに蓄える。
また、リードおよびライトに伴うデータもキューに蓄える。
図1に示すホストプロセッサ101はプログラムPRGを実行し、これにより図2に示すSCU203_0〜3にプログラムを指定する。
SCU203_0〜3は、ホストプロセッサ101によって指定されたプログラムを実行して得たそれぞれ4本ずつの所定のスレッドに基づいて、それぞれPUアレイ202_0〜202_3内のPEの処理進行に応じてメモリシステム105あるいはローカルメモリ204_0〜3に対するアクセスを実行する。
PUアレイ202_0〜202_3内の図3および図4に示すPEは、SCU203_0〜3あるいはホストプロセッサ101の制御に従って、SCU203_0〜3によるメモリアクセス結果を利用しながら、SCU203_0〜3とは別のスレッドで動作する。
PU_SIMD#0〜#3内では、図4に示すように、16個のPE0〜15がシリアルに接続され、隣接するPE間で必要に応じて画素データの入出力が行われる。
これにより、膨大な画素データについて、それに対する処理が予め特定でき、且つ相互に独立であることを利用して、複数のプロセッサエレメント(PE)において共通のスレッドを基に並列的に実行できる。
SCU203_0〜3のスレッドを、PUアレイ202_0〜202_3のスレッドとは別にすることで、PEの処理のバックエンドで、当該PEの処理に係わるデータに関する記憶領域に対してのアクセスを効率的に実現できる。
すなわち、本発明の技術的範囲またはその均等の範囲内において、上述した実施形態の構成要素に関し、様々な変更、並びに代替を行っても本発明は適用される。
例えば、図2に示す例では、制御プロセッサ201によって、複数のSCU203_0〜3を統括して制御する例を説明したが、図68に示すように、SCU203_0〜3の各々を制御する制御プロセッサ201_0〜201_3を個別に設けてもよい。
本第2実施形態の画像処理装置100は、図1に示すような第1実施形態と同様の構成を有するが、画像処理エンジン102の構成が第1実施形態と異なる。画像処理エンジン102以外の画像処理装置100の構成は、第1実施形態と同様であるので、ここでは説明を省略する。
以下、第2実施形態の画像処理エンジン102の構成について説明する。
第1実施形態と同様、画像処理エンジン102は、プログラマブルな画像プロセッサであって、画像処理装置100で実行されるアプリケーションプログラムに応じてホストプロセッサ101が指示する画像処理を実行する。
画像処理の対象となる画像データとしては、センサI/F106を介して入力されるカメラモジュール107で撮影されたデータ、メモリI/F104を介して入力されるメモリシステム105に格納されたデータ、記憶媒体I/F108を介して入力される記憶媒体109に格納されたデータ、あるいはコーデックエンジン103から与えられるデータ、コーデックエンジン103で処理されたデータがある。
画像処理エンジン102は、自らの処理結果を、メモリI/F104を介してメモリシステム105に格納し、記憶媒体I/F108を介して記憶媒体109に格納し、コーデックエンジン103に出力し、内蔵表示装置I/F110を介して内蔵表示装置111に表示し、あるいはビデオI/F112を介して外部の装置に出力する。
図69に示すように、画像処理エンジン102は、制御プロセッサ(CPU)201、PU(プロセッサ・ユニット)アレイ202_0〜202_3、並びにローカルメモリ204_0〜204_3を有する。
また、本実施形態のPUアレイ202_0〜203_0は、後述するようにSCU(Stream Control Unit)をその内部に有する点が第1実施形態と異なる。
共通のスレッドとは、例えば、共通のプログラムに基づいて処理を進めることを意味する。
PUアレイ202_0について説明する。
PUアレイ202_1〜202_3は、PUアレイ202_0と同様の構成を有している。
図70は、図69に示すPUアレイ202_0の構成図である。
図70に示すように、PUアレイ202_0は、4つのPU_SIMD(Single Instruction Multiple Data)処理回路#0〜#3と、それぞれのPU_SIMDに対応して接続されたSCU#10〜#13を有する。
4つのプロセッサユニットPU#00〜#03は、同一命令で動作するSIMD型プロセッサを構成する。
4つのプロセッサユニットPU#00〜#03は、一次元状に横接続されている。
プロセッサユニットPU#00〜#03間の接続を隣接するプロセッサユニット間に限定するとともに、SCUからのデータ供給に用いるI#BUSを4つのプロセッサユニットで共有することで、配線を少なく出来るとともに、バス制御を簡単にできる。
プロセッサユニットPU#00〜#03は、シリアルに接続したことで、隣接画素データを頻繁に使用する画像処理において、ローカルメモリを介さずに画素データを直接的に、隣接するプロセッサユニットに出力でき、処理時間を短縮できる。
PU_SIMD処理回路#1〜#3は、PU_SIMD処理回路#0と同様の構成を有している。
プロセッサユニットPU#00の構成については、第1実施形態において図4と関連付けて行った説明と同様であるため、ここでは説明を省略する。
プロセッサエレメントPE0〜15の各々は、入力ラインバッファ401から読み出したデータを用いて演算を行い、その演算結果を出力ラインバッファ404に書き込む。
SCU#10は、出力ラインバッファ404から演算結果を読み出す。
コントロールユニット303_0内には、ここには図示されないプログラムフロー制御用ループレジスタや、PE内のストリームレジスタにアクセスするためのポインタレジスタが含まれる。
ループレジスタは、プログラム中のループ回数を制御するレジスタであり、制御プロセッサ201が設定するか、あるいはプログラム実行時に命令により設定することができる。
命令によりループレジスタを設定する場合に、PE内のレジスタ値をソースオペランドとして指定することができる。その際には複数のPEのうち、予め決められたPE、例えば図中左端のPE、例えば、プロセッサユニットPU#00のPE0、のレジスタ値を使用する。
ポインタレジスタについても、PE内のレジスタ値をソースオペランドとして指定することができるが、ループレジスタの場合と同様特定のPEのレジスタ値を使用する。
コントロールユニット303_1から303_3についても同様である。
メモリシステム105に1フレーム分の画像データが格納されると、画像処理エンジン102は、内部のPU_SIMD処理回路を効率よく並列動作させるため、1フレーム分の画像データのうち、必要な矩形画像領域を読み出しながら検波処理の残りや各種カメラ信号処理、ならびに各種画像処理を実行する。
画像処理エンジン102の処理結果は、メモリシステム105に格納される。
画像処理エンジン102は、解像度変換も行う。解像度変換された画像データは、内蔵表示装置I/F110を介して内蔵表示装置111に表示される。
コーデックエンジン103は、メモリシステム105に格納されている画像処理エンジン102により処理された複数フレームの画像データを用いて画像圧縮を行う。圧縮された画像データは、記憶媒体I/F108を介して記憶媒体109に記録される。
本第2実施形態のように4つのPUアレイ202_0〜202_3で構成する場合、例えば第1実施形態において図5に関連付けて説明したように、各PUアレイ202_0〜202_3に領域を割り当てることができる。
PUアレイ202_0〜202_3の各々は、前述したように64個のPEから成るPU SIMD処理回路を複数個有し、例えば第1実施形態において図6に関連付けて説明したように、各PUアレイ202_0〜202_3に割り当てた領域を、さらに横64ピクセル幅の矩形画像領域に分割し、各ピクセルを1つのPEに割り当てることができる。
この時、各PEは、第1実施形態において図7に関連付けて説明したように、自らの割り当てられた縦方向のピクセル列を順に処理する。
この時、PUアレイ202_0内の各PEは、第1実施形態の図8に示すように、処理対象の画素位置Pixelの画素データのフィルタ処理を行うために、画素位置Pixelを中心とした5×5の画素位置の画素データを用いる。
PUアレイ202_0内の各PEは、図8に示す矢印(図中下向き)に順に処理対象の画素位置を移動させる。
PUアレイ202_0内の各PEが画素位置Pixelの上記5×5画素のフィルタ処理を終了すると、は、第1実施形態の図9に示すように、次の1ライン分の画素位置の画素データをローカルメモリ204_0あるいはメモリシステム105から読み出してPUアレイ202_0内のプロセッサユニットPUの入力ラインバッファ401に書き込む。
そして、PUアレイ202_0内の各PEは、第1実施形態の図10に示すように、次の画素位置Pixel_nextの画素データの5×5画素のフィルタ処理を行う。
PUアレイ202_1〜202_3は、PUアレイ202_0と同様である。
次に、PEn(n=1〜14)について説明する。
なお、PE0はPE間ではPE1との間でのみデータ入出力を行い、PE15はPE14との間でのみデータ入出力を行う点を除いてPEnと同一である。
図71は、第2実施形態におけるPEnの構成図である。
図71に示すように、PEnは、マルチプレクサMUX1000、1001、ストリームレジスタSR0〜SR3等の各種レジスタ、演算論理ユニットALUを有する。
出力ラインバッファ404は、PEでの演算結果をSCUへ送るためのバッファである。1つのPEあたり16bitのデータを一段分保持することができる。
ストリームレジスタSR0〜3は、主に、SCUから供給される演算に必要なデータの格納や、演算結果の一時待避を行うためのレジスタで、直接アドレス指定による参照による参照が可能である。各ストリームレジスタごとに最大4つのポインタを定義できる。各ポインタは、以下の3つの値を持つ。すなわち、ポインタ定義領域の始点である「Start」と、ポインタ定義領域の終点である「End」と、現在のポインタ位置である「Current」である。ただし、End ≧ Startでなければならない。2つのポインタのStartとEndを同一にし、一つをReadポインタ、他方をWriteポインタとして使用することにより、FIFOとして機能させることができる。また、ポインタごとにStartとEndを変えてもよい。
また、同一ストリームレジスタ内の全く独立したポインタについて、StartとEndで指定する領域が互いに重複することを禁止はしない。
1)ストリームレジスタSR0〜3の参照
ストリームレジスタSR0〜3に対して書き込みあるいは読み出しを行う際の参照方法としては、ポインタ参照と直接参照の2種類がある。
ポインタ参照は、指定したポインタのCurrentからのオフセットで参照する。オフセット値は、読み出しの場合には0〜15の範囲の正の整数、書き込みの場合は0〜3の範囲の正の整数である。
直接参照は、ストリームレジスタSR0〜3内のエントリを即値で指定する。即値は、0〜15の範囲の正の整数である。
以下に示すようなポインタ操作を実現する命令が用意されている。
a)ポインタが持つ値の即値指定
Start、Endの各値を即値により指定する。
b)Current値に対する即値加算
加算する即値は、−8〜7の範囲の整数である。
c)ポインタが持つ値の初期化
Start、End、Currentの各値は、リセット後に、それぞれ、0、15、0に初期化される。また、Current値をStart値に初期化する命令も用意されている。
ストリームレジスタSR0〜3に対するポインタ参照やポインタ操作を行った際に、<Start,End>で定義される領域を超えることがある。この場合には、以下のようなWraparoundが行われる。ここで、ストリームレジスタSR0〜SR3のエントリへのWraparound前と後のindexをそれぞれidxbw、idxawとすると、
idxaw = (idxbw > End)?
Start + (idxbw-End-1) % (End-Start+1) : idxbw
idxaw = (idxbw < Start)?
End - (Start-idxbw-1) % (End-Start+1) : idxbw
である。
4つあるストリームレジスタSR0〜3のうち、SR0とSR1あるいはSR2とSR3の組み合わせについて、同一ポインタで指定されるポインタ定義領域どうしを連結して使用することができる。例えば、SR0とSR1の組み合わせについて、ポインタ0を連結した場合には、SR0用ポインタ0のStartとEndで定義される領域とSR1用ポインタ0のStartとEndで定義される領域が連結される。あるポインタについて連結モードを指定すると、ストリームレジスタペアのうち偶数側のポインタのみ有効となる。偶数側のポインタ値がEndを超えると、自動的に奇数側のポインタ領域にポインタ値が変更され、あたかも両領域が連続しているように使用することができる。また、奇数側のポインタ領域のEndを超えると、自動的に偶数側のStart値に変更されるWraparoud機能も実現する。この機能により、2つのストリームレジスタの空き領域を有効利用したり、16エントリを超えるポインタ領域を定義したりすることができる。ポインタの動作モードとして連結モードが設定された場合には、偶数側のポインタのみ使用できる。連結モードの設定は、ストリームレジスタ単位ではなく、ポインタ単位で設定する。したがって、各ポインタに対する連結モードの設定は互いに独立している。
レジスタS0〜S3は、4個の汎用レジスタであり、それぞれ16bit長である。32bitデータを扱う演算を行う場合には、連続する2つのレジスタ、すなわちS0とS1あるいはS2とS3をレジスタ・ペアとしてオペランド指定することができる。
レジスタTEMPSはデータ長が16ビットの一時退避用レジスタである。
レジスタTEMPSは、共有機能ユニット403を利用する際に用いられるレジスタであり、共有機能ユニット403へのアクセス以外の場合では、ワーキングレジスタとして使用できる。これらのレジスタは、算術論理演算命令のソースオペランドとデスティネーションオペランドの両方に指定できる。
レジスタPENUMは、自身のプロセッシングエレメント番号(0〜63)が格納されているデータ長が6ビットのプロセッサ番号レジスタであり、読み出し専用である。
図71においてConstと記載されたパスは、レジスタCONSTANTをソースオペランドとして指定した場合に定数値を渡すパスであり、16bit幅である。レジスタCONSTANTは、複数のレジスタで構成される。レジスタCONSTANTは、PE毎に持つわけではなく、SCU内に持たれる。
図71に示すように、PEは3種類の演算論理ユニットを持ち、これら3つの演算論理ユニットを用いた演算を同時実行可能である。3種類の演算論理ユニットは、乗算を行うユニットであるOperator Resource Mと、主に加減算や比較演算を行うユニットであるOperator Resource A/Bと、主に論理演算やシフトを行うユニットであるOperator Resource Lである。
PEは、ロード命令により入力ラインバッファ401に書き込まれたデータをストリームレジスタSR0〜SR3に転送する。ストリームレジスタSR0〜SR3へは、入力ラインバッファの他に、レジスタCONDからのロードも可能である。逆に、ストリームレジスタSR0〜SR3からレジスタCONDへデータを移動する命令も用意されている。
出力ラインバッファ404への書き込みは、通常は演算命令のデスティネーションオペランドに直接指定することにより行うが、レジスタCONDから出力ラインバッファ404へデータを移動する命令も用意されている。
これらデータ転送は、演算論理ユニットALUが行う演算と並行して行われる。
すなわち、第2実施形態のPEでは、同時に複数の演算を行うことができる。
共有機能ユニット403については、第1実施形態において行った説明と同様であるため、説明を省略する。
以下、SCU#10について説明する。
SCU#11〜#13は、SCU#10と同じである。
同様に、SCU#11はPU_SIMD処理回路#1に対して、SCU#12はPU_SIMD処理回路#2に対して、SCU#13はPU_SIMD処理回路#3に対して、それを構成する個々のプロセッサエレメントPEの処理に必要なデータを効率よくデータを入出力するための制御を行う。
PU_SIMD処理回路#0〜#3は、SIMD型プロセッサであるため、すべてのPEに対する入出力は時間的に同時に行われる。従って、SCU#10によるPU_SIMD#0に対する入出力は、PEの個数分の入出力データを同時に入出力することになる。以下同時に入出力されるデータを、ストリームデータと呼ぶことにする。
SCU#10は、PU_SIMD処理回路#0と、メモリシステム105およびローカルメモリ204_0との間に位置し、複数の画素データをストリームデータに変換して入出力を行う機能を持っている。
図72は、SCU#10の構造を示すブロック図である。
図72に示すように、SCU#10は、書き込み部#101と、読み込み部#102と、制御部#103とからなる。
読み込み部#102は、記憶領域からの読み込みを行う。
制御部#103は、SCU#10の全体的な制御を行うCPU等の制御装置であり、データ処理やPU_SIMD処理回路#0へのデータ供給を行う。
SCU#10が扱う記憶領域内の矩形画像領域の階層構成を、図73を参照して説明する。
図73に示すように、SCU#10は、記憶領域中に、入力作業領域として矩形画像領域WIRを指定する。
SCU#10は、矩形画像領域WIR内に、画素データの読み出し元である矩形画像領域BRを指定する。
SCU#10は、ホストプロセッサ101から入力したプログラムに基づいて、矩形画像領域BRから読み出した画素データを、PU_SIMD処理回路#0〜#3が必要とするストリームデータに変換するデータ変換コマンドWI#data#opを実行(指定)する。
SCU#10は、後述するように矩形画像領域BR及びWI_data_op指定の一連の繰り返し処理をプログラム可能である。
SCU#10は、矩形画像領域WOR内に、画素データの書き込み先である矩形画像領域DRを指定する。
SCU#10は、PU_SIMD#0の出力ストリームデータから、矩形画像領域DRへのデータ変換コマンドWO#data#opを実行する。
SCU#10は、後述するように矩形画像領域DR、WO_data_op指定は、一連の繰り返し処理をプログラム可能である。
SCU#10は、矩形画像領域BRは矩形画像領域WIR内の、矩形画像領域DRは矩形画像領域WOR内の、任意の位置への配置と移動可能である。
SCU#10は、矩形画像領域WIR或いはWOR内において、矩形画像領域BR或いはDRを、2次元論理座標で指定が可能である。
SCU#10は、記憶領域に対して矩形画像領域WIR或いはWORを物理アドレスで指定できる。
SCU#10は、矩形画像領域WIR、WOR、BR、DR内部の画素データがアクセスされた場合には、記憶領域へアクセスが必要になるため、論理アドレスから物理アドレスへの変換を行って記憶領域にアクセスする。
図74に示すように、SCU#10は、PU_SIMD処理回路#0に、記憶領域内の矩形画像領域WIR0及びWOR0を割り当てる。
矩形画像領域WIR0及びWOR0は、メモリシステム105やローカルメモリ204_0などの記憶領域内に規定される。
また、本実施形態のSCU#10は、記憶領域中にWIR0〜WIR7の8種類のWIRと、WOR0〜WOR7までの8種類のWORを定義することが可能である。更に、それぞれの矩形画像領域WIR0〜WIR7に矩形画像領域BR0〜BR7が、WOR0〜WOR7にDR0〜DR7が、それぞれ1つずつ規定される。
また、SCU#10は、データ変換コマンドWO#data#opにより、PU_SIMD処理回路#0から入力して入力バッファin#bufに収納されているストリームデータをデータ変換して矩形画像領域DRにWriteする。
本実施形態では、矩形画像領域の個数や多重指定の階層数などを具体的な数字で表現しているが、その構成や数量は組み合わせ自由であり、幅広い画像処理の必要性に応じて構成を変えることが可能である。
すなわち、第1実施形態のSCU203_0が矩形画像領域内にAR或いはCRを設定し、さらにその中にBR或いはDRを設定していたが、本第2実施形態のSCU#10によれば、WRの中にAR及びCRを設定せずにBR及びDRを設定しているので、SCU#10の動作は簡略化され、動作速度が速くなる。
[システムバス接続]
図1に示すシステムバス113は、SCU#10を、ホストプロセッサ101およびメモリシステム105などの他の処理モジュールを接続するバスであり、以下の特徴を有する。
(1)システムバス113は、LSIやSOC内部で標準化されたバス規格を採用することが可能である。
(2)システムバス113のバス幅は128ビットであり、連続データ転送(バースト転送)が可能な構成とすることで、バス使用効率を向上できる。
(3)システムバス113上の記憶装置(例えば、メモリシステム105)に対して、SCU#10はバスマスタとしてアクセスする。
(4)システムバス113上のSCU#10以外のバスマスタから、SCU#10の内部レジスタやSCU専用記憶装置(例えば、、ローカルメモリ204_0)へのアクセスを行う。
(5)システムバス113は、データ転送効率や機能が満足されるのであれば、バス規格にはこだわらない選択が可能である。
SCU#10は、専用記憶領域として専用記憶装置を接続することが可能である。
専用記憶装置はSRAMやDRAMなどの半導体メモリがSOC内部と外部のどちらにあろうとも選択可能である。
上記専用記憶装置は、システムバス113より広帯域なバスに接続される。
上記専用記憶装置は、1つのSCU#10が占有して使用する目的で用意されている。
システムバス113上のバスマスタから、上記専用記憶装置へのアクセスが可能である。
SCU#10には、PU_SIMD処理回路#0がバス接続される。
同様に、SCU#11にはPU_SIMD処理回路#1が、SCU#12にはPU_SIMD処理回路#2が、SCU#13にはPU_SIMD処理回路#3がバス接続される。
SCU#10からPU_SIMD処理回路#0へのストリームデータ入力は、PU_SIMD処理回路#0に256ビットの単方向バスを使用する。転送効率は256bit/clockである。
data/転送プロトコルとして2線式のハンドシェークを採用する。
SCU#10内部には出力バッファout_bufを用意する。
SCU#10から出力を行う場合は、PU_SIMD処理回路#0に対してアドレスを指定することでPU_SIMD処理回路内部レジスタを識別する。
PU_SIMD処理回路#0からSCU#10へのストリームデータ入力は、各PU_SIMDの256ビットの単方向バスを使用し、転送効率は256bit/clockである。
また、データ転送プロトコルとして2線式のハンドシェークを採用する。
SCU#10内部には入力用の入力バッファin_bufを用意する。
PU_SIMD処理回路#0からSCU#10へ入力を行う場合は、PU_SIMDに対してアドレスを指定することでPU_SIMD処理回路内部レジスタを識別する。
SCU#10がアクセスする図73および図74を用いて説明した記憶領域内の矩形画像領域WR内部の画素対応位置Pixelは2次元論理アドレスで表現されているが、メモリシステム105およびローカルメモリ204_0は物理アドレスで表現されている。従って、SCU#10は、矩形画像領域WR内の矩形画像領域AR,BR,CR,DR内部に指定された画素対応位置Pixelに対してReadまたはWRiteを行う場合は、2次元論理アドレスから物理アドレスへのアドレス変換を行う。
アドレス変換の方法については、第1実施形態と同様であるためここでは説明を省略する。
SCU#10は、上述したように、記憶領域として、システムバス113に接続された大規模外部記憶装置であるメモリシステム105と、小規模な専用記憶装置であるローカルメモリ204_0を使用することができる。
メモリシステム105は、例えば、SCU#10が含まれるSOCの外部に接続されるDRAM-CHIPであり、一般的なDDRやRAMBUSなどのメモリchipなどである。
ローカルメモリ204_0は、例えば、SCU#10が含まれるSOC内部のSRAMやeDRAM (Embedede-DRAM:SCUと同じSOCに含まれるOn-chip DRAM)などである。
本実施形態では、SCU#10は、例えば、メモリシステム105やローカルメモリ204_0として、DRAMを使用しているが、SRAMであっても問題はない。また、DRAMを使用する場合、上記アクセス性能の不連続性を可能な限り避ける目的で、記憶領域内の画素データの矩形画像配列を、ストリームデータ生成時には可能な限り同一ページに配置する工夫をすることで、DRAMアクセスの不連続性を可能な限り低減する処置をとることができる。
この工夫は、たとえば第1実施形態で説明した方法等により実現することができる。
SCU#10は、上述したように、記憶領域内の矩形画像領域WIR内に、図75に示すように、2次元論理アドレス表現で多重矩形画像領域として、矩形画像領域BRを規定できる。
WIRは、記憶領域中に物理アドレッシング可能な連続領域として定義される。
また、WIR内部のpixelの指定は、SCUによって論理アドレッシングにより定義される。
ここでpixelは16bit固定サイズで論理アドレッシングされる。ただし、記憶領域の情報量削減のために、1pixelを12bit或いは8bitで表現することもでき、この場合は、記憶領域内部とSCUでのpixel表現の違い(例えば、記憶領域内では8bit/pixelの場合、SCU内部の1pixelが記憶領域内の2pixelと等価)に留意する必要がある。
BRは、WIR内に論理アドレス空間で定義される。
BRは、WIRの部分コピーではなくアドレスマッピング変換でアクセスする。
BRを定義する際には、WIRを逸脱して定義することもできるが、逸脱した場合のpixel値は保障されない。
BRは、BR0〜BR7の8種類存在する。
BR領域は、BRn(n=0〜7)ごとに矩形の左端座標(図75におけるbx、by)を指定できる。
BR領域の矩形サイズは、以下の8種類の中からwi_data_opによって指定される。すなわち、水平方向16、32、48、64pixelで垂直方向に1pixelの領域、あるいは水平方向に1pixelで垂直方向に16、32、48、64pixelの領域のいずれかである。
wirwは、矩形画像領域WIRのx方向矩形画像領域幅である。
bx及びbyは、矩形画像領域WIR内の矩形画像領域BRの2次元座標を示す。矩形画像領域WIRの左上を原点(0,0)とした座標系で、矩形画像領域BRの左上の画素対応位置Pixelの座標を示す。
bw及びbhは、矩形画像領域BRの幅と高さを示す。
x及びyは、矩形画像領域BR内の画素対応位置Pixelの2次元座標を示す。矩形画像領域BRの左上を原点(0,0)とした座標系である。
SCU#10は、矩形画像領域BRから画素データPixel(bx,by)を読み出し、これをデータストリームへデータに変換して(入力データ変換処理を行って)PU_SIMD処理回路#0に入力させる。この処理は、第1実施形態において説明した処理と同様であるため、説明を省略する。
SCU#10は、記憶領域内の矩形画像領域WOR内に、図76に示すように、2次元論理アドレス表現で多重矩形画像領域として、矩形画像領域DRを規定できる。
WORは、記憶領域中に物理アドレッシング可能な連続領域として定義される。
また、WOR内部のpixelの指定は、SCUによって論理アドレッシングにより定義される。
ここでpixelは16bit固定サイズで論理アドレッシングされる。ただし、記憶領域の情報量削減のために、1pixelを12bit或いは8bitで表現することもでき、この場合は、記憶領域内部とSCUでのpixel表現の違い(例えば、記憶領域内では8bit/pixelの場合、SCU内部の1pixelが記憶領域内の2pixelと等価)に留意する必要がある。
DRは、WOR内に論理アドレス空間で定義される。
DRは、WORの部分コピーではなくアドレスマッピング変換でアクセスする。
DRを定義する際には、WORを逸脱して定義することもできるが、逸脱した場合のpixel値は保障されない。
DRは、DR0〜DR7の8種類存在する。
DR領域は、DRn(n=0〜7)ごとに矩形の左端座標(図76におけるdx、dy)を指定できる。
DR領域の矩形サイズは、以下の8種類の中からwo_data_opによって指定される。すなわち、水平方向16、32、48、64pixelで垂直方向に1pixelの領域、あるいは水平方向に1pixelで垂直方向に16、32、48、64pixelの領域のいずれかである。
それぞれの位置関係を示す値として以下の座標値が使われる。
worwは、矩形画像領域WORのx方向矩形画像領域幅を示す。
dx及びdyは、矩形画像領域WOR内の矩形画像領域DRの2次元座標を示す。矩形画像領域WRの左上を原点(0,0)とした座標系で、矩形画像領域DRの左上の座標を示す。
dw及びdhは、矩形画像領域DRの幅と高さを示す。
PU_SIMD処理回路#0が出力したストリームデータは、入力バッファin_bufに書き込まれる。
SCU#10は、入力バッファin_bufからデータを読み出し、並べ替えなどのデータ変換処理を施した後に、矩形画像領域DRに書き込む。
また、SCU#10は、必要に応じて、入力バッファin_bufからデータを読み出し、マスクデータDR#maskに従った並べ替えなどのデータ変換処理を施した後に、矩形画像領域DRに書き込む。
これらの処理に関しては、第1実施形態においてSCU203_0が行う処理と同様であるため、説明を省略する。
図1に示すホストプロセッサ101はプログラムPRGを実行し、これにより図70に示すSCU#10〜#13にプログラムを指定する。
SCU#10〜#13は、ホストプロセッサ101によって指定されたプログラムを実行して得たそれぞれ4本ずつの所定のスレッドに基づいて、それぞれPUアレイ202_0〜202_3内のPEの処理進行に応じてメモリシステム105あるいはローカルメモリ204_0〜3に対するアクセスを実行する。
PUアレイ202_0〜202_3内のPEは、SCU203_0〜3あるいはホストプロセッサ101の制御に従って、SCU#10〜#13によるメモリアクセス結果を利用しながら、SCU#10〜#13とは別のスレッドで動作する。
PU_SIMD#0〜#3内では、16個のPE0〜15がシリアルに接続され、隣接するPE間で必要に応じて画素データの入出力が行われる。
これにより、膨大な画素データについて、それに対する処理が予め特定でき、且つ相互に独立であることを利用して、複数のプロセッサエレメント(PE)において共通のスレッドを基に並列的に実行できる。更に、第2実施形態のPEでは、同時に複数の演算を行うことができるため、装置全体の処理速度が向上する。
また、SCU#10〜#13のスレッドを、PUアレイ202_0〜202_3のスレッドとは別にすることで、PEの処理のバックエンドで、当該PEの処理に係わるデータに関する記憶領域に対してのアクセスを効率的に実現できる。
更に、本第2実施形態の画像処理装置100によれば、SCU#10〜#13の記憶領域内に定義する多重矩形画像領域がWRとBR(或いはDR)の2重のみであるので、処理が簡略化され、画像処理装置100全体にかかる負荷が軽減され、処理に要する時間が短縮される。
すなわち、本発明の技術的範囲またはその均等の範囲内において、上述した実施形態の構成要素に関し、様々な変更、並びに代替を行っても本発明は適用される。
すなわち、本発明は、PU_SIMD処理回路のように、それぞれ複数のプロセッサエレメントPEを有する複数のプロセッサユニットPUを用いて信号処理を分散処理する場合に、各プロセッサユニットPU内の対応する各プロセッサエレメントPEに記憶手段からいかに効率よく対応するデータを提供する、あるいは、逆の各プロセッサエレメントPEからのデータを整合性を保って記憶手段に書き込むという処理を行う、各種の信号処理に適用できる。
Claims (18)
- 記憶部と、
前記少なくとも1つの記憶部のうちいずれか所定の1つの記憶部へのデータの読み出し及び/または書き込みを制御する入出力データ制御部(SCU)と、
前記入出力データ処理部が読み出したデータに対して所定の信号処理を行う信号処理部(PUアレイ或いはPU_SIMD)と、
を有する信号処理装置であって、
前記入出力データ制御部と、前記信号処理部とは別のスレッドに基づいて動作する
信号処理装置。 - 前記信号処理部は、SIMD(Single Instruction Multiple Data)方式の信号処理回路(PU)を複数有し、
前記複数の信号処理回路は互いに直列に接続されており、
前記複数の信号処理回路の1は、前記入出力データ制御部が前記記憶部から読み出し前記信号処理部に入力したデータを基に前記所定の処理を行うとともに、隣接する他の信号処理回路との間でデータのやり取りを行う
請求項1に記載の信号処理装置。 - 前記入出力データ制御部は、前記複数の信号処理回路のうち任意の少なくとも1つの信号処理回路を、直列或いは並列のいずれか一方で選択的に接続可能である
請求項2に記載の信号処理装置。 - 前記信号処理部を所定数有する信号処理装置であって、
前記信号処理部と同数の前記入出力データ処理部を有する
請求項2に記載の信号処理装置。 - 前記入出力データ制御部は、内蔵メモリを有し、
前記入出力データ制御部は、前記複数の信号処理回路のうち1の処理回路が他の処理回路の結果を用いる場合に、前記他の処理回路の処理の結果を前記内蔵メモリに書き込み、当該内蔵メモリから当該結果を前記処理回路に読み出す
請求項2に記載の信号処理装置。 - 前記複数の信号処理回路は、それぞれ所定の数の信号処理エレメント(PE)を有し、
前記所定の数の信号処理エレメントは互いに直列に接続されており、
前記複数の信号処理エレメントの1は、前記入出力データ制御部が前記記憶部から読み出し前記信号処理部に入力したデータを基に前記所定の処理を行うとともに、隣接する他の信号処理回路との間でデータのやり取りを行う
請求項2に記載の信号処理装置。 - 前記データは画像データであり、
前記複数の信号処理回路は、画像データを処理する回路であり、
前記入出力データ制御部は、前記記憶部内に階層的に矩形の画像データ記憶領域を規定し、
前記矩形の画像データ記憶領域内のアドレスを当該矩形の画像データ記憶領域にローカルな2次元アドレスで管理し、
前記記憶領域内における前記矩形の画像データ記憶領域の位置を示す基準アドレスと前記2次元アドレスとを基に、1次元アドレスを生成し、
前記1次元アドレスを基に前記記憶部に記憶された画像データにアクセスする
請求項2に記載の信号処理装置。 - 前記データは画像データであり、
前記複数の信号処理回路は、画像データを処理する回路であり、
前記入出力データ制御部は、
前記記憶部から画像データを読み出して前記信号処理部に出力できる形式に変換し、及び/または前記信号処理部から入力された画像データを前記記憶部に記憶できる形式に変換する変換部(制御部)と、
前記記憶手段から読み出され前記変換部が変換した画像データを、前記信号処理部に出力する前に一時保持する第1のバッファと、
前記信号処理部から入力され前記変換部が変換した画像データを、前記記憶部に書き込まれるまで一時保持する第2のバッファと、
を有する
請求項1に記載の信号処理装置。 - 前記データは画像データであり、
前記複数の信号処理回路は、画像データを処理する回路であり、
前記入出力データ制御部は、前記記憶部から読み出した画像データを構成する複数の部分画像データを対応する前記複数の信号処理エレメントに出力する
請求項6に記載の信号処理装置。 - 前記入出力データ制御部は、
前記矩形の画像データ記憶領域内のあらかじめ決められた複数の基準アドレスの中から選択した基準アドレスを前記複数の処理回路に出力する
請求項7に記載の信号処理装置。 - 前記入出力データ制御部は、
前記記憶部から前記基準アドレスを読み出し、
当該読み出した基準アドレスを基に、前記矩形の画像データ記憶領域へのアクセスを管理する
請求項7に記載の信号処理装置。 - 前記入出力データ制御部は、前記複数の信号処理回路の各々に対応して前記第1及び第2のバッファをそれぞれ有し、
任意の前記信号処理回路に対応付けられた前記第2のバッファから当該任意の信号処理回路が出力したデータを読み出して、他の信号処理回路に対応付けられた前記第1のバッファに書き込む
請求項8に記載の信号処理装置。 - 前記入出力データ制御部は、前記複数の信号処理回路における共通の第1のスレッドの実行開始を指示する
請求項1に記載の信号処理装置。 - 前記信号処理エレメントは、
算術演算および/または論理演算を行う演算論理回路と、
当該信号処理エレメントが直列に接続された他の2つの前記信号処理エレメントと前記入出力データ制御部とから入力したデータを記憶する第1のレジスタと、
前記第1のレジスタから読み出され、前記他の2つの信号処理エレメント、前記演算論理回路および前記入出力データ制御部の何れかに選択的に出力されるデータを記憶する第2のレジスタと
を有する、
請求項13に記載の信号処理装置。 - 前記第1のレジスタは、ポインタアクセス型のレジスタである
請求項14に記載の信号処理装置。 - 前記演算論理回路における演算処理と、前記第1のレジスタおよび前記第2のレジスタに対するロードおよびストア処理は並列に実行可能である
請求項15に記載の信号処理装置。 - 複数の前記第1のレジスタのうち少なくとも一つの前記第1のレジスタは、前記演算手段による前記演算処理を制御する制御フラグを設定するためのレジスタである
請求項16に記載の信号処理装置。 - ホスト処理回路と、
記憶部と、
前記少なくとも1つの記憶部のうちいずれか所定の1つの記憶部へのデータの読み出し及び/または書き込みを制御する入出力データ制御部(SCU)と、
前記入出力データ処理部が読み出したデータに対して所定の信号処理を行う信号処理部(PUアレイ或いはPU_SIMD)と、
を有する信号処理装置であって、
前記信号処理部は、前記ホスト処理回路あるいは前記入出力データ制御部の制御により、共通の第1のスレッドに基づいて動作し、
前記入出力データ制御部は、前記ホスト処理回路の制御により、前記第1のスレッドとは別の第2のスレッドに基づいて動作する
信号処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007516362A JP4893621B2 (ja) | 2005-05-20 | 2006-05-22 | 信号処理装置 |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005148301 | 2005-05-20 | ||
JP2005148301 | 2005-05-20 | ||
JP2007516362A JP4893621B2 (ja) | 2005-05-20 | 2006-05-22 | 信号処理装置 |
PCT/JP2006/310174 WO2006123822A1 (ja) | 2005-05-20 | 2006-05-22 | 信号処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2006123822A1 JPWO2006123822A1 (ja) | 2008-12-25 |
JP4893621B2 true JP4893621B2 (ja) | 2012-03-07 |
Family
ID=37431382
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007516362A Expired - Fee Related JP4893621B2 (ja) | 2005-05-20 | 2006-05-22 | 信号処理装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8464025B2 (ja) |
EP (1) | EP1883045A4 (ja) |
JP (1) | JP4893621B2 (ja) |
KR (1) | KR101270925B1 (ja) |
CN (1) | CN1993709B (ja) |
WO (1) | WO2006123822A1 (ja) |
Families Citing this family (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8171263B2 (en) * | 1999-04-09 | 2012-05-01 | Rambus Inc. | Data processing apparatus comprising an array controller for separating an instruction stream processing instructions and data transfer instructions |
US8762691B2 (en) | 1999-04-09 | 2014-06-24 | Rambus Inc. | Memory access consolidation for SIMD processing elements using transaction identifiers |
JP5285828B2 (ja) * | 1999-04-09 | 2013-09-11 | ラムバス・インコーポレーテッド | 並列データ処理装置 |
US7526630B2 (en) | 1999-04-09 | 2009-04-28 | Clearspeed Technology, Plc | Parallel data processing apparatus |
US20070242074A1 (en) * | 1999-04-09 | 2007-10-18 | Dave Stuttard | Parallel data processing apparatus |
US20080162875A1 (en) * | 1999-04-09 | 2008-07-03 | Dave Stuttard | Parallel Data Processing Apparatus |
US8169440B2 (en) | 1999-04-09 | 2012-05-01 | Rambus Inc. | Parallel data processing apparatus |
US7506136B2 (en) * | 1999-04-09 | 2009-03-17 | Clearspeed Technology Plc | Parallel data processing apparatus |
US8174530B2 (en) * | 1999-04-09 | 2012-05-08 | Rambus Inc. | Parallel date processing apparatus |
US7802079B2 (en) | 1999-04-09 | 2010-09-21 | Clearspeed Technology Limited | Parallel data processing apparatus |
US20080162874A1 (en) * | 1999-04-09 | 2008-07-03 | Dave Stuttard | Parallel data processing apparatus |
US20070294510A1 (en) * | 1999-04-09 | 2007-12-20 | Dave Stuttard | Parallel data processing apparatus |
US7966475B2 (en) | 1999-04-09 | 2011-06-21 | Rambus Inc. | Parallel data processing apparatus |
US8643661B1 (en) * | 2006-06-21 | 2014-02-04 | Marvell International Ltd. | Non raster row pixel processing |
US8009172B2 (en) * | 2006-08-03 | 2011-08-30 | Qualcomm Incorporated | Graphics processing unit with shared arithmetic logic unit |
US7952588B2 (en) * | 2006-08-03 | 2011-05-31 | Qualcomm Incorporated | Graphics processing unit with extended vertex cache |
US7787021B2 (en) * | 2006-10-30 | 2010-08-31 | Texas Instruments Incorporated | Programmable architecture for flexible camera image pipe processing |
US7797514B2 (en) * | 2006-11-16 | 2010-09-14 | Texas Instruments Incorporated | Scalable multi-threaded sequencing/synchronizing processor architecture |
JP2010003151A (ja) * | 2008-06-20 | 2010-01-07 | Renesas Technology Corp | データ処理装置 |
JP5100611B2 (ja) * | 2008-10-28 | 2012-12-19 | 株式会社東芝 | 画像処理装置 |
US8797376B2 (en) * | 2010-05-28 | 2014-08-05 | Polycom, Inc. | Videoconferencing system with enhanced telepresence using a single wide aspect ratio camera |
US9552206B2 (en) * | 2010-11-18 | 2017-01-24 | Texas Instruments Incorporated | Integrated circuit with control node circuitry and processing circuitry |
KR101048413B1 (ko) * | 2010-12-30 | 2011-07-11 | 재단법인 광양만권 유아이티연구소 | 통합 에너지 관리 클라이언트용 엠씨유 |
KR20130043322A (ko) * | 2011-10-20 | 2013-04-30 | 삼성전자주식회사 | 디스플레이 컨트롤러 및 이를 포함하는 디스플레이 장치 |
US9501331B2 (en) * | 2012-08-09 | 2016-11-22 | Fujitsu Limited | Satisfiability checking |
WO2015035306A1 (en) * | 2013-09-06 | 2015-03-12 | Huawei Technologies Co., Ltd. | System and method for an asynchronous processor with token-based very long instruction word architecture |
US9606801B2 (en) | 2013-09-06 | 2017-03-28 | Huawei Technologies Co., Ltd. | Method and apparatus for asynchronous processor based on clock delay adjustment |
CN104837006B (zh) * | 2014-02-11 | 2017-11-10 | 京元电子股份有限公司 | 半导体元件测试系统及其影像处理加速方法 |
US9665372B2 (en) | 2014-05-12 | 2017-05-30 | International Business Machines Corporation | Parallel slice processor with dynamic instruction stream mapping |
US9672043B2 (en) | 2014-05-12 | 2017-06-06 | International Business Machines Corporation | Processing of multiple instruction streams in a parallel slice processor |
RU2571575C1 (ru) * | 2014-06-20 | 2015-12-20 | Александр Сергеевич Зубачев | Общественный компьютер |
KR102264161B1 (ko) | 2014-08-21 | 2021-06-11 | 삼성전자주식회사 | 이미지 처리 장치, 이미지 처리 시스템, 이미지 처리 시스템의 동작방법 및 이미지 처리 시스템을 포함하는 시스템 온 칩 |
US9760375B2 (en) | 2014-09-09 | 2017-09-12 | International Business Machines Corporation | Register files for storing data operated on by instructions of multiple widths |
US9720696B2 (en) | 2014-09-30 | 2017-08-01 | International Business Machines Corporation | Independent mapping of threads |
US9977678B2 (en) | 2015-01-12 | 2018-05-22 | International Business Machines Corporation | Reconfigurable parallel execution and load-store slice processor |
US10133581B2 (en) | 2015-01-13 | 2018-11-20 | International Business Machines Corporation | Linkable issue queue parallel execution slice for a processor |
US10133576B2 (en) | 2015-01-13 | 2018-11-20 | International Business Machines Corporation | Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries |
KR102415995B1 (ko) * | 2015-09-30 | 2022-06-30 | 엘지디스플레이 주식회사 | 영상 처리 장치 및 이를 포함하는 표시장치 |
US9983875B2 (en) | 2016-03-04 | 2018-05-29 | International Business Machines Corporation | Operation of a multi-slice processor preventing early dependent instruction wakeup |
US10037211B2 (en) | 2016-03-22 | 2018-07-31 | International Business Machines Corporation | Operation of a multi-slice processor with an expanded merge fetching queue |
US10346174B2 (en) | 2016-03-24 | 2019-07-09 | International Business Machines Corporation | Operation of a multi-slice processor with dynamic canceling of partial loads |
US10761854B2 (en) | 2016-04-19 | 2020-09-01 | International Business Machines Corporation | Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor |
US10037229B2 (en) | 2016-05-11 | 2018-07-31 | International Business Machines Corporation | Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions |
US9934033B2 (en) | 2016-06-13 | 2018-04-03 | International Business Machines Corporation | Operation of a multi-slice processor implementing simultaneous two-target loads and stores |
US10042647B2 (en) | 2016-06-27 | 2018-08-07 | International Business Machines Corporation | Managing a divided load reorder queue |
US10318419B2 (en) | 2016-08-08 | 2019-06-11 | International Business Machines Corporation | Flush avoidance in a load store unit |
JP2018074445A (ja) * | 2016-10-31 | 2018-05-10 | ソニーセミコンダクタソリューションズ株式会社 | 固体撮像装置およびその信号処理方法、並びに電子機器 |
CN109298886A (zh) * | 2017-07-25 | 2019-02-01 | 合肥君正科技有限公司 | Simd指令执行方法、装置及处理器 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06162226A (ja) * | 1992-11-20 | 1994-06-10 | Nec Corp | 並列プロセッサ制御装置 |
JPH10111858A (ja) * | 1996-09-30 | 1998-04-28 | Internatl Business Mach Corp <Ibm> | グラフィクス・パイプラインを並列化する方法及び装置 |
JPH10304184A (ja) * | 1997-05-02 | 1998-11-13 | Fuji Xerox Co Ltd | 画像処理装置および画像処理方法 |
Family Cites Families (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA1311063C (en) * | 1988-12-16 | 1992-12-01 | Tokumichi Murakami | Digital signal processor |
US5280474A (en) * | 1990-01-05 | 1994-01-18 | Maspar Computer Corporation | Scalable processor to processor and processor-to-I/O interconnection network and method for parallel processing arrays |
US5293596A (en) * | 1990-02-21 | 1994-03-08 | Matsushita Electric Industrial Co., Ltd. | Multidimensional address generator and a system for controlling the generator |
US5765011A (en) * | 1990-11-13 | 1998-06-09 | International Business Machines Corporation | Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams |
US5815723A (en) * | 1990-11-13 | 1998-09-29 | International Business Machines Corporation | Picket autonomy on a SIMD machine |
US5243699A (en) * | 1991-12-06 | 1993-09-07 | Maspar Computer Corporation | Input/output system for parallel processing arrays |
US5991866A (en) * | 1992-03-25 | 1999-11-23 | Tm Patents, Lp | Method and system for generating a program to facilitate rearrangement of address bits among addresses in a massively parallel processor system |
JPH0736858A (ja) * | 1993-07-21 | 1995-02-07 | Hitachi Ltd | 信号処理プロセッサ |
US5659780A (en) * | 1994-02-24 | 1997-08-19 | Wu; Chen-Mie | Pipelined SIMD-systolic array processor and methods thereof |
JPH07271764A (ja) * | 1994-03-24 | 1995-10-20 | Internatl Business Mach Corp <Ibm> | 計算機プロセッサ及びシステム |
US5790879A (en) * | 1994-06-15 | 1998-08-04 | Wu; Chen-Mie | Pipelined-systolic single-instruction stream multiple-data stream (SIMD) array processing with broadcasting control, and method of operating same |
JPH0877002A (ja) * | 1994-08-31 | 1996-03-22 | Sony Corp | 並列プロセッサ装置 |
US5606707A (en) * | 1994-09-30 | 1997-02-25 | Martin Marietta Corporation | Real-time image processor |
KR100262453B1 (ko) | 1996-08-19 | 2000-08-01 | 윤종용 | 비디오데이터처리방법및장치 |
US6088788A (en) * | 1996-12-27 | 2000-07-11 | International Business Machines Corporation | Background completion of instruction and associated fetch request in a multithread processor |
US5961628A (en) * | 1997-01-28 | 1999-10-05 | Samsung Electronics Co., Ltd. | Load and store unit for a vector processor |
DE69837791T2 (de) * | 1997-11-07 | 2007-10-18 | Altera Corp., San Jose | VERFAHREN UND GERÄT FÜR EFFIZIENTE, SYNCHRONE MIMD-OPERATIONEN MIT iVLIW PE-ZU-PE KOMMUNIKATIONEN |
US6079008A (en) * | 1998-04-03 | 2000-06-20 | Patton Electronics Co. | Multiple thread multiple data predictive coded parallel processing system and method |
US20080007562A1 (en) * | 1999-04-09 | 2008-01-10 | Dave Stuttard | Parallel data processing apparatus |
JP5285828B2 (ja) * | 1999-04-09 | 2013-09-11 | ラムバス・インコーポレーテッド | 並列データ処理装置 |
US6732126B1 (en) * | 1999-05-07 | 2004-05-04 | Intel Corporation | High performance datapath unit for behavioral data transmission and reception |
US6427196B1 (en) * | 1999-08-31 | 2002-07-30 | Intel Corporation | SRAM controller for parallel processor architecture including address and command queue and arbiter |
US6668317B1 (en) * | 1999-08-31 | 2003-12-23 | Intel Corporation | Microengine for parallel processor architecture |
US6606704B1 (en) * | 1999-08-31 | 2003-08-12 | Intel Corporation | Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode |
US6728419B1 (en) * | 2000-02-17 | 2004-04-27 | Xerox Corporation | Multi-tasking multi-threaded image processing system and method for image capture devices |
US6924807B2 (en) * | 2000-03-23 | 2005-08-02 | Sony Computer Entertainment Inc. | Image processing apparatus and method |
JP3504240B2 (ja) * | 2000-07-24 | 2004-03-08 | 株式会社ソニー・コンピュータエンタテインメント | 画像処理システム、デバイス、方法及びコンピュータプログラム |
US6934336B2 (en) * | 2001-07-26 | 2005-08-23 | Matsushita Electric Industrial Co., Ltd. | Area expansion apparatus, area expansion method, and area expansion program |
JP3892829B2 (ja) * | 2003-06-27 | 2007-03-14 | 株式会社東芝 | 情報処理システムおよびメモリ管理方法 |
GB0323950D0 (en) * | 2003-10-13 | 2003-11-12 | Clearspeed Technology Ltd | Unified simid processor |
US20050251649A1 (en) * | 2004-04-23 | 2005-11-10 | Sony Computer Entertainment Inc. | Methods and apparatus for address map optimization on a multi-scalar extension |
ITTO20040415A1 (it) * | 2004-06-22 | 2004-09-22 | St Microelectronics Srl | Architettura di processore multidimensionale |
GB2417105B (en) * | 2004-08-13 | 2008-04-09 | Clearspeed Technology Plc | Processor memory system |
US7492368B1 (en) * | 2006-01-24 | 2009-02-17 | Nvidia Corporation | Apparatus, system, and method for coalescing parallel memory requests |
US7755631B1 (en) * | 2006-10-24 | 2010-07-13 | Nvidia Corporation | Transposition structures and methods to accommodate parallel processing in a graphics processing unit (“GPU”) |
JP2008287562A (ja) * | 2007-05-18 | 2008-11-27 | Sony Corp | 処理装置及びデバイス制御ユニット |
US8180975B2 (en) * | 2008-02-26 | 2012-05-15 | Microsoft Corporation | Controlling interference in shared memory systems using parallelism-aware batch scheduling |
-
2006
- 2006-05-22 JP JP2007516362A patent/JP4893621B2/ja not_active Expired - Fee Related
- 2006-05-22 KR KR1020077001405A patent/KR101270925B1/ko not_active IP Right Cessation
- 2006-05-22 EP EP06746708.4A patent/EP1883045A4/en not_active Withdrawn
- 2006-05-22 WO PCT/JP2006/310174 patent/WO2006123822A1/ja active Application Filing
- 2006-05-22 US US11/572,331 patent/US8464025B2/en active Active
- 2006-05-22 CN CN2006800005263A patent/CN1993709B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06162226A (ja) * | 1992-11-20 | 1994-06-10 | Nec Corp | 並列プロセッサ制御装置 |
JPH10111858A (ja) * | 1996-09-30 | 1998-04-28 | Internatl Business Mach Corp <Ibm> | グラフィクス・パイプラインを並列化する方法及び装置 |
JPH10304184A (ja) * | 1997-05-02 | 1998-11-13 | Fuji Xerox Co Ltd | 画像処理装置および画像処理方法 |
Also Published As
Publication number | Publication date |
---|---|
EP1883045A1 (en) | 2008-01-30 |
CN1993709B (zh) | 2010-12-15 |
EP1883045A4 (en) | 2016-10-05 |
KR101270925B1 (ko) | 2013-06-07 |
WO2006123822A1 (ja) | 2006-11-23 |
US8464025B2 (en) | 2013-06-11 |
JPWO2006123822A1 (ja) | 2008-12-25 |
US20090006773A1 (en) | 2009-01-01 |
CN1993709A (zh) | 2007-07-04 |
KR20080010377A (ko) | 2008-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4893621B2 (ja) | 信号処理装置 | |
US5812147A (en) | Instruction methods for performing data formatting while moving data between memory and a vector register file | |
US6237079B1 (en) | Coprocessor interface having pending instructions queue and clean-up queue and dynamically allocating memory | |
KR100283161B1 (ko) | 모션 평가 코프로세서 | |
US9984432B2 (en) | Processor, system, and method for efficient, high-throughput processing of two-dimensional, interrelated data sets | |
AU747283B2 (en) | Data processing system for logically adjacent data samples such as image data in a machine vision system | |
US12008377B2 (en) | SIMD operand permutation with selection from among multiple registers | |
US7546425B2 (en) | Data processor with a built-in memory | |
JP3971535B2 (ja) | Simd型プロセッサ | |
Bellas et al. | Real-time fisheye lens distortion correction using automatically generated streaming accelerators | |
EP2382546B1 (en) | Memory management process and apparatus for the same | |
KR19990008388A (ko) | 연산기능을 갖는 반도체메모리 및 그것을 사용한 처리장치 | |
US5999200A (en) | Method and apparatus for automatically controlling the destination of a graphics command in a register file | |
JP5358315B2 (ja) | 並列計算装置 | |
US6489967B1 (en) | Image formation apparatus and image formation method | |
JP2024000852A (ja) | プログラマブル信号処理回路及び当該回路用のプログラム | |
AU760297B2 (en) | Memory controller architecture | |
CN117785287A (zh) | 多线程计算中的私有存储器模式顺序存储器访问 | |
JP4413905B2 (ja) | Simd型プロセッサ | |
JPH04205678A (ja) | 画像情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090512 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110906 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20111031 |
|
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: 20111122 |
|
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: 20111205 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 4893621 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150106 Year of fee payment: 3 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |