JP2006155637A - Apparatus for processing signal - Google Patents
Apparatus for processing signal Download PDFInfo
- Publication number
- JP2006155637A JP2006155637A JP2006001390A JP2006001390A JP2006155637A JP 2006155637 A JP2006155637 A JP 2006155637A JP 2006001390 A JP2006001390 A JP 2006001390A JP 2006001390 A JP2006001390 A JP 2006001390A JP 2006155637 A JP2006155637 A JP 2006155637A
- Authority
- JP
- Japan
- Prior art keywords
- data
- processor
- register
- processor element
- memory
- 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
Links
Images
Landscapes
- Image Processing (AREA)
Abstract
Description
この発明は一つの演算命令により複数の画像データ等を並列処理するSIMD(Single Instruction Stream Multiple Data Stream)型プロセッサを用いた信号処理装置に関し、例えばデジタルコピーなどの画像処理に用いて好適な信号処理装置に関するものである。 The present invention relates to a signal processing apparatus using a single instruction stream multiple data stream (SIMD) type processor that processes a plurality of image data and the like in parallel by a single operation instruction, and is suitable for use in image processing such as digital copying. It relates to the device.
近年、デジタル複写機やファクリミリ装置等において、画素数を増加させたり、或いはカラー対応にするなど画像の向上が図られている。そして、この画像の向上に伴い、処理すべきデータ数が増加している。ところで、複写機などにおけるデータ処理は全ての画素に対して同じ演算処理を施すことが多い。そこで、1つの命令で複数のデータに対して同時に同じ演算処理を行うSIMD方式のプロセッサが用いられるようになっている。 In recent years, in digital copying machines, facsimile machines, and the like, improvement of images has been attempted by increasing the number of pixels or making it compatible with color. As the image is improved, the number of data to be processed has increased. By the way, data processing in a copying machine or the like often performs the same arithmetic processing on all pixels. Therefore, a SIMD processor that performs the same arithmetic processing on a plurality of data simultaneously with one instruction is used.
通常、SIMD方式のプロセッサを用いて画像処理を行う場合、主走査方向にプロセッサエレメント(PE)を展開する。このため、フィルター処理などの画像処理を行う場合、注目画素の上下の参照画素が必要になり、前のラインの画素データをラインディレイさせて、ラインメモリに格納しておくことが考えられる。 Normally, when image processing is performed using a SIMD processor, processor elements (PE) are developed in the main scanning direction. For this reason, when performing image processing such as filter processing, reference pixels above and below the target pixel are required, and it is conceivable that pixel data of the previous line is delayed in line and stored in the line memory.
図16に、SIMD方式を用いた画像処理装置の概略ブロック図を示す。図に示すように、この画像処理装置は、画像データが格納される外部画像メモリ(RAM)101、例えば、1024個のプロセッサエレメントからなるプロセッサエレメントブロック103、グローバルプロセッサ104を備える。
FIG. 16 shows a schematic block diagram of an image processing apparatus using the SIMD method. As shown in the figure, the image processing apparatus includes an external image memory (RAM) 101 in which image data is stored, for example, a
各プロセッサエレメント(PE)は、n個の汎用レジスタ(R0〜Rn−1)と演算アレイを有し、汎用レジスタは、通常演算アレイの外部にレジスタファイルとして持つ形を取っている。それぞれのレジスタはシフトレジスタとしてシリアルポートを介して外部とアクセス可能となっている。図において、斜線部が単位プロセッサエレメントになる。 Each processor element (PE) has n general-purpose registers (R0 to Rn-1) and an operation array, and the general-purpose registers are in the form of having a register file outside the normal operation array. Each register is accessible as a shift register to the outside through a serial port. In the figure, the shaded area is a unit processor element.
グローバルプロセッサ104はプログラムメモリ(PRAM)105のアドレス生成手段を有し、PRAM105よりプロセッサエレメントブロック103のプロセッサエレメントに与える命令コードをリードし、演算アレイ及びレジスタファイルの制御を行っている。
The
各PEの汎用レジスタのシリアルポートに接続されるデバイスはシステム構成によって異なるが、2ライン分のラインディレイのみが必要なシステムでは、例えば、R0に2ライン前の画素データ、R1に1ライン前の画素データ、R2に現ライン画素データを配置するとして、R0とR1のシリアルポートにシリアルパラレル変換器102を配置して、外部RAM101に接続するといった構成をとっている。
The device connected to the serial port of the general-purpose register of each PE differs depending on the system configuration. However, in a system that requires only a line delay of two lines, for example, pixel data of two lines before in R0 and one line before in R1 Assuming that the current line pixel data is arranged in the pixel data R2, the serial-
上記のような構成をもち、画像処理装置を実現している例としては、例えばSVP(SERIAL VIDEO PROCESSOR)が知られている。 For example, SVP (SERIAL VIDEO PROCESSOR) is known as an example of the image processing apparatus having the above-described configuration.
従来のSIMD方式のプロセッサは、殆どが主走査方向の画素数以上のプロセッサエレメントを持っているため、外部メモリ(RAM)101に対する制御には難しい処理を必要としない。また、デジタルコピーなど画像処理において拡大、縮小などの変倍機能を実現するためには、別途ASICを外付けするか、特開平08−123683号公報(IPC:G06F 9/38)(特許文献1)に記載されているようなSIMD方式のプロセッサ内部に変倍制御用のフラグを持つといった構成を取ることで実現できる。
しかしながら、画像処理の精度は近年ますます向上しており、主走査方向の画素数は増加する傾向にある。また、従来のSIMD型プロセッサにおいて、プロセッサエレメント数の多いものは1ビットの演算アレイを使用するなど、小規模の回路を用いて回路規模の増大を防止しているのが普通である。 However, the accuracy of image processing has been increasing in recent years, and the number of pixels in the main scanning direction tends to increase. Further, in a conventional SIMD type processor, an increase in the circuit scale is usually prevented by using a small-scale circuit, for example, a processor having a large number of processor elements uses a 1-bit arithmetic array.
デジタルコピーなどにSIMD型プロセッサを応用しようとした場合に、例えば600DPI(Dot Per Inch)の精度でA4のサイズの画像を扱う場合、7000画素以上のプロセッサエレメント数が必要となり、単純にプロセッサエレメント数を増やすのは現実的ではない。そこで、これを解決するために、主走査方向を分割して処理を行うことが考えられるが、ラインメモリとしてデュアルポートメモリ(RAM)が必要になり回路規模が増加するという難点がある。 When an SIMD type processor is applied to digital copying, for example, when an A4 size image is handled with an accuracy of 600 DPI (Dot Per Inch), the number of processor elements of 7000 pixels or more is required. It is not realistic to increase In order to solve this problem, it is conceivable to perform processing by dividing the main scanning direction. However, a dual port memory (RAM) is required as a line memory, which increases the circuit scale.
一方、特開平10−326258号公報(IPC:G06F 15/16)においては、主走査方向の画素を2分割して、全プロセッサエレメント数を半分に分割してパイプライン処理を行うことで処理時間の短縮を可能にしたデータ演算システムが提案されている。しかしながら、この方法では、プロセッサエレメントとアクセス可能なデータメモリのサイズを越えるような画素数の処理を行うことが出来ない。 On the other hand, in Japanese Patent Laid-Open No. 10-326258 (IPC: G06F 15/16), the processing time is obtained by dividing the pixels in the main scanning direction into two and dividing the total number of processor elements in half to perform pipeline processing. There has been proposed a data operation system that can shorten the time. However, with this method, it is not possible to perform processing with the number of pixels exceeding the size of the data memory accessible to the processor element.
さらに、プロセッサエレメントに変倍制御用のフラグを持つ構成では、分割数が増加した場合に処理が複雑になるため、SIMD型プロセッサの外部で変倍処理を実現するほうが望ましい。しかし、別途ASICを用いて変倍機能を実現すると、プロセッサの汎用性を減少させてしまうことになる。 Furthermore, in a configuration in which a processor element has a scaling control flag, the processing becomes complicated when the number of divisions increases, so it is desirable to implement scaling processing outside the SIMD type processor. However, if the scaling function is realized separately using an ASIC, the versatility of the processor is reduced.
そこで、本発明では、シングルポートメモリ(RAM)を用いることで回路規模の増加を抑えながら、同時に変倍機能も内蔵可能な簡単な構成のSIMD型プロセッサを用いた信号処理装置を提供することを目的とする。 Therefore, the present invention provides a signal processing device using a SIMD processor having a simple configuration that can suppress the increase in circuit scale by using a single port memory (RAM) and at the same time incorporate a zoom function. Objective.
この発明は、データを演算処理する演算手段及び当該演算手段で演算処理されるデータを保持するとともに当該演算手段で演算処理されたデータを保持するデータ保持手段を備えるSIMD型プロセッサのプロセッサエレメントと、複数の前記プロセッサエレメントそれぞれに接続されるデータ転送バスと、前記複数のプロセッサエレメントに割り付けられるアドレスに基づき、所定のプロセッサエレメントを指定する指定手段と、この指定手段にアドレスを供給するアドレスバスと、前記複数のプロセッサエレメントが内蔵しているデータ保持手段にプロセッサ外部からアクセスするためのデータ転送用インタフェースと、このデータ転送インタフェースに接続され、前記アドレスバスに供給される前記所定のプロセッサエレメントを指定するためのアドレスを生成するとともに、メモリに格納されたデータを読み出して、プロセッサエレメントへデータの書き込みを行うと共に前記プロセッサエレメントからデータを読み出して、前記メモリにデータの書き込みを行うメモリコントローラと、を備え、前記メモリコントローラは、前記データ転送用インタフェースを介して、各プロセッサエレメントのデータ保持手段から前記メモリにデータ転送する場合に、転送を開始するプロセッサエレメントのアドレスと転送を終了するプロセッサエレメントのアドレスを指定し、所定数のデータを除いて、各プロセッサエレメントから演算済みのデータの読み出しを行うことを特徴とする。 The present invention relates to a processor element of a SIMD type processor comprising a computing means for computing data and data holding means for holding data computed by the computing means and holding data computed by the computing means; A data transfer bus connected to each of the plurality of processor elements; designation means for designating a predetermined processor element based on addresses assigned to the plurality of processor elements; and an address bus for supplying an address to the designation means; A data transfer interface for accessing the data holding means incorporated in the plurality of processor elements from outside the processor, and the predetermined processor element connected to the data transfer interface and supplied to the address bus is designated A memory controller for generating an address for reading data, reading data stored in the memory, writing data to the processor element, reading data from the processor element, and writing data to the memory; The memory controller, when transferring data from the data holding means of each processor element to the memory via the data transfer interface, the address of the processor element that starts the transfer and the address of the processor element that ends the transfer And the calculated data is read from each processor element except for a predetermined number of data.
上記のように構成することで、プロセッサエレメントの数が主走査方向の画素数より少ない場合においても、容易にSIMDプロセッサでの演算が行え、フィルタ処理などの重み付け演算を行う場合に有効な画素のみを転送できる。 With the configuration described above, even when the number of processor elements is smaller than the number of pixels in the main scanning direction, the SIMD processor can easily perform calculations and only effective pixels when performing weighting calculations such as filter processing. Can be transferred.
前記メモリコントローラは、メモリへの書き込み転送と読み込み転送とを時分割で行うように制御するとよい。 The memory controller may control to perform write transfer and read transfer to the memory in a time-sharing manner.
このように構成することで、シングルポートメモリをFIFOもしくはLIFOメモリとして用いることが可能となり、シングルポートメモリを用いながらラインメモリを実現できる。 With this configuration, the single port memory can be used as a FIFO or LIFO memory, and a line memory can be realized using the single port memory.
また、前記メモリコントローラは、データ転送用インタフェースを介して、各プロセッサエレメントのデータ保持手段から前記メモリにデータ転送する場合に、転送を開始するプロセッサエレメントのアドレスと転送を終了するプロセッサエレメントのアドレスを指定するレジスタを備えるように構成すればよい。たとえば、プロセッサエレメントのアドレスカウンタに初期値ロード機能を付加し、プロセッサエレメントのアドレスを基準としたオフセット値の設定ができるように構成すればよい。 In addition, when transferring data from the data holding means of each processor element to the memory via the data transfer interface, the memory controller sets the address of the processor element that starts transfer and the address of the processor element that ends transfer. What is necessary is just to comprise so that the register to designate may be provided. For example, an initial value loading function may be added to the address counter of the processor element so that an offset value can be set based on the address of the processor element.
さらに、前記メモリコントローラは、前記メモリからデータ転送用インタフェースを介して各プロセッサエレメントのデータ保持手段にデータ転送する場合に、転送を終了するプロセッサエレメントのアドレスと、転送終了後にメモリのリードポインタを戻すためのプロセッサエレメントのアドレスを指定するレジスタを備えるように構成することができる。例えば、プロセッサエレメントのアドレスと設定値との比較器を設け、設定値と等しいプロセッサエレメントアドレスのレジスタに転送されたデータが格納されていたメモリのリードポインタをリロードするように構成すればよい。 Further, when the data is transferred from the memory to the data holding means of each processor element via the data transfer interface, the memory controller returns the address of the processor element that ends the transfer and the read pointer of the memory after the transfer ends. It is possible to provide a register for designating the address of the processor element. For example, a comparator between the processor element address and the set value may be provided so as to reload the read pointer of the memory in which the data transferred to the register having the processor element address equal to the set value is stored.
上記のように構成することで、主査方向の画素数よりも少ないプロセッサエレメント数のSIMD型プロセッサを用いた場合に、フィルタ処理などの重み付け演算を行う場合に有効な画素のみを転送できる。 With the configuration described above, when a SIMD processor having a smaller number of processor elements than the number of pixels in the main scanning direction is used, only effective pixels can be transferred when performing weighting operations such as filter processing.
また、前記メモリコントローラは、メモリの任意のアドレス領域の下限値と上限値をレジスタで設定して、その領域をリング状に使用するように構成することができる。例えば、メモリのポインタの下限値、上限値レジスタを設け、それぞれ比較器を持ち、条件が揃った場合にそれぞれのレジスタの値をアドレスバスに出力できるように構成すればよい。 Further, the memory controller can be configured so that a lower limit value and an upper limit value of an arbitrary address area of the memory are set by a register and the area is used in a ring shape. For example, a lower limit value and an upper limit value register for memory pointers may be provided, each having a comparator, and configured so that the value of each register can be output to the address bus when the conditions are met.
上記のように構成することで、複数のステップを持つような画像処理の場合に、処理ステップごとにデータを保管することができる。 With the above configuration, in the case of image processing having a plurality of steps, data can be stored for each processing step.
また、前記データ転送用インタフェースは、偶数のアドレスを持つプロセッサエレメントと奇数のアドレスを持つプロセッサエレメントのデータ保持手段に同時にアクセスすることが可能になるように構成するとよい。たとえば、SIMD型プロセッサのデータ転送ポートを偶数のアドレスを持つプロセッサエレメントと奇数のアドレスを持つプロセッサエレメントのデータ保持手段にアクセスするための2つの独立したポートを持つ構成とし、1サイクルで2プロセッサエレメント分のデータを処理できるように構成すればよい。 The data transfer interface may be configured to be able to simultaneously access data holding means of processor elements having even addresses and processor elements having odd addresses. For example, a data transfer port of a SIMD type processor has a configuration having two independent ports for accessing a data holding means of a processor element having an even address and a processor element having an odd address, and two processor elements in one cycle. What is necessary is just to comprise so that the data of a minute can be processed.
さらに、メモリとの入出力バスのビット幅がプロセッサエレメントとのデータ転送ビット幅よりも広くするとよい。たとえば、メモリとの入出力バッファを4プロセッサエレメント分持つことでメモリのビット幅を4プロセッサエレメント分の幅に構成すればよい。 Furthermore, the bit width of the input / output bus with the memory may be wider than the data transfer bit width with the processor element. For example, the bit width of the memory may be configured to be 4 processor elements wide by having input / output buffers for the memory for 4 processor elements.
上記のように構成することで、全プロセッサエレメントのデータ保持手段へデータ転送する時間を半分にすることができる。また、メモリのアクセスタイムに余裕を持たせることができる。 With the above configuration, the time for transferring data to the data holding means of all the processor elements can be halved. Further, it is possible to provide a margin for memory access time.
また、この発明は、各プロセッサエレメントのデータ保持手段からデータ転送用インタフェースを介してメモリにデータ転送する場合に、このデータ転送と同期を取った外部からのライト制御信号が”0”である場合にデータを書き込み、”1”である場合にデータの書き込みを禁止するように構成することができる。たとえば、同期信号を外部よりシーケンスユニットに入力し、ライト転送を開始するタイミングを制御することで、ライト制御信号とライト転送との同期を取ることができるようにし、またライト制御信号の値によって、プロセッサエレメントのデータ転送ポートからリードされたデータを整形してRAMにライトするためのライトバッファ部の制御を変えることによって、ライト制御信号に応じた転送を行えるように構成すればよい。 Further, according to the present invention, when data is transferred from the data holding means of each processor element to the memory via the data transfer interface, the write control signal from the outside synchronized with the data transfer is “0”. The data can be written in, and when it is “1”, the data writing can be prohibited. For example, by inputting a synchronization signal to the sequence unit from the outside and controlling the timing to start the write transfer, the write control signal and the write transfer can be synchronized, and depending on the value of the write control signal, What is necessary is just to comprise so that transfer according to a write control signal can be performed by changing the control of the write buffer part for shaping the data read from the data transfer port of the processor element and writing it to the RAM.
さらに、前記メモリからデータ転送用インタフェースを介して各プロセッサエレメントのデータ保持手段にデータ転送する場合に、このデータ転送と同期を取った外部からのリード制御信号が”0”である場合には、メモリからデータリードした値をデータ転送用インタフェースに書き込み、”1”の場合には、その転送の前で最後に外部信号が”0”であった場合に転送されたデータと同じ値をデータ転送用インタフェースに書き込むように構成することができる。たとえば、同期信号を外部よりシーケンスユニットに入力し、リード転送を開始するタイミングを制御することで、リード制御信号とリード転送との同期を取ることができるようにし、またリード制御信号の値によって、RAMからリードされたデータを整形してプロセッサエレメントのデータ転送ポートにライトするためのリードバッファ部の制御を変えることによって、リード制御信号に応じた転送を行えるように構成すればよい。 Further, when data is transferred from the memory to the data holding means of each processor element via the data transfer interface, when an external read control signal synchronized with the data transfer is “0”, The value read from the memory is written to the data transfer interface. If it is “1”, the same value as the data transferred when the external signal was “0” last before the transfer is transferred. Can be configured to write to the interface. For example, by inputting a synchronization signal from the outside to the sequence unit and controlling the timing of starting the read transfer, the read control signal and the read transfer can be synchronized, and depending on the value of the read control signal, What is necessary is just to comprise so that transfer according to a read control signal can be performed by changing the control of the read buffer part for shaping the data read from RAM, and writing in the data transfer port of a processor element.
上記のように構成することで、デジタル画像処理における変倍処理をメモリコントローラで実現できるため、SIMD型プロセッサ自体の汎用性と回路規模を保つことができる。 With the configuration described above, the scaling process in the digital image processing can be realized by the memory controller, so that the versatility and circuit scale of the SIMD type processor itself can be maintained.
また、この発明は、前記メモリには画像データが格納され、前記SIMD型プロセッサのプロセッサエレメントの数は主走査方向の画素数よりも少なく構成され、前記メモリコントローラは主走査方向の全画素を2つ以上に分割して処理を行うように、データの書き込み及び読み込みの処理の制御を行うように構成することができる。 Further, according to the present invention, image data is stored in the memory, the number of processor elements of the SIMD type processor is configured to be smaller than the number of pixels in the main scanning direction, and the memory controller sets all the pixels in the main scanning direction to 2 It can be configured to control the processing of writing and reading data so that the processing is divided into two or more.
上記のように構成することで、デジタルコピーなどの主走査方向の画素数が極めて多い画像処理装置を実現する場合に、プロセッサエレメント数を増減するなどのSIMD型プロセッサのアーキテクチャそのものを変更することなく画像処理装置を構築することができる。 By configuring as described above, when realizing an image processing apparatus having a very large number of pixels in the main scanning direction, such as digital copying, without changing the SIMD processor architecture itself, such as increasing or decreasing the number of processor elements. An image processing apparatus can be constructed.
上述したように、この発明によれば、プロセッサエレメントの数が主走査方向の画素数より少ない場合においても、容易にSIMDプロセッサでの演算が行え、フィルタ処理などの重み付け演算を行う場合に有効な画素のみを転送できる。 As described above, according to the present invention, even when the number of processor elements is smaller than the number of pixels in the main scanning direction, the SIMD processor can easily perform calculations and is effective when performing weighting calculations such as filter processing. Only pixels can be transferred.
以下、この発明に係るSIMD型プロセッサ1の実施の形態を図面を参照して説明する。
Embodiments of a
まず、この発明にかかるSIMD型プロセッサの全体構成について、図1に従い説明する。この発明のSIMD型プロセッサ1は、図1に示すように、グローバルプロセッサ2、本実施形態では1024組の後述するプロセッサエレメント3aからなるプロセッサエレメントブロック3、メモリコントローラ5と接続される外部インターフェース4から構成される。メモリコントローラ5はグローバルプロセッサ2の命令に基づき、シングルポートメモリ(RAM)で構成された外部画像メモリ6から演算対象となる画像データをプロセッサ内部の入出力用のレジスタフィル31に与えるとともに、演算処理されたデータをレジスタファイル31から画像メモリ(RAM)6へ転送するものである。
First, the overall configuration of the SIMD type processor according to the present invention will be described with reference to FIG. As shown in FIG. 1, the
グローバルプロセッサ2は、図2に示すように、プロセッサエレメントブロック3、外部インタフェース4及びメモリコントローラ5を制御するためのプログラムが格納されたプログラムRAM21、及びこのプログラムRAM21に基づきグローバルプロセッサ2、プロセッサエレメントブロック3、外部インタフェース4、メモリコントローラ5を制御するシーケンスユニット22を備える。具体的には、このシーケンスユニット22は、グローバルプロセッサ2に備えられている後述する算術論理演算器23(以下、「ALU23」という。)等を制御する。
As shown in FIG. 2, the
また、このシーケンスユニット22は、プロセッサエレメントブロック3を構成するレジスタファイル31、及び演算アレイ36を制御する。この演算アレイ36は、マルチプレクサ32、シフト拡張回路33、算術論理演算器34(以下、「ALU34」という)、及びレジスタ35を備える。なお、このグローバルプロセッサ2は、いわゆるSISD型であり、一つの演算命令に対して一つの演算処理を行うものである。
The
さらに、このシーケンスユニット22は、メモリコントローラ5に対してデータ転送のための動作設定用データ及びコマンド等を送る。メモリコントローラ5は、シーケンスユニット22の動作設定用データ及びコマンドに基づき、プロセッサエレメント3aのアドレス指定のためのアドレス制御信号、プロセッサエレメント3aを構成するレジスタ31bにデータのリード/ライトを指示するためのリード/ライト制御信号、クロック信号を与えるためのクロック制御信号を外部インタフェース4に与える。
Further, the
ここで、リード/ライト制御信号のうちライト制御信号とは、演算処理されるデータをデータバス46a(46b)より取得して、プロセッサエレメント3aのレジスタ31bに保持させるための信号をいう。一方、リード/ライト制御信号のうちリード制御信号とは、プロセッサエレメント3aのレジスタ31bが保持している演算処理されたデータを、データバス46a(46b)へ与えるようにレジスタ31bに指示するための信号をいう。
Here, the write control signal among the read / write control signals refers to a signal for acquiring data to be processed from the
この実施の形態におけるプロセッサエレメントブロック3は、隣り合う2つのプロセッサエレメント3aに偶数番号、奇数番号を割り付けて1組とすると共に、この1組のプロセッサエレメント3aには同一のアドレスを割り付けている。
In the
メモリコントローラ5は、グローバルプロセッサ2からのコマンドを受けて、プロセッサエレメントブロック3を構成するプロセッサエレメント3aのアドレスを指定する信号(以下、「アドレス指定信号」という。)を作成し、外部インターフェース4からアドレスバス41aを介してプロセッサエレメント3aのレジスタコントローラ31aヘ送る。また、メモリコントローラ5は、後述するように、プロセッサエレメント3aを構成するレジスタ31bに対して、データのリード/ライトを指示するための信号(以下、「リード/ライト指示信号」という。)を、リード/ライト信号線45a(45b)を介してプロセッサエレメント3aの後述するレジスタコントローラ31aヘリード/ライト信号が与えられる。偶数用リード/ライト信号線45aは、偶数のプロセッサエレメント3aにリード/ライト信号を与え、奇数用リード/ライト信号線45bは、奇数のプロセッサエレメント3aにリード/ライト信号を与える。
Upon receiving a command from the
また、メモリコントローラ5は、外部インタフェース4からクロック信号線41cを介してプロセッサエレメント3aの後述するレジスタコントローラ31aへクロック信号を与える。
Further, the
さらに、メモリコントローラ5は、上述したように、SIMD型プロセッサ1の外部に設けられた画像メモリ6に格納されているデータを、本実施形態では16ビットのパラレルデータとして、外部インタフェース4に与える。この16ビットのデータは、偶数番号が割り付けられたプロセッサエレメント3aに与えられる8ビットと、奇数番号が割り付けられたプロセッサエレメント3aに与えられる8ビットとから構成されている。それぞれ8ビットデータは偶数用データバス46a及び奇数用データバス46bに与えられる。この8ビットのパラレルデータについては、データに応じて適宜変更しても問題ない。このデータバス46a,46bは、レジスタ31bに保持されている演算処理されたデータが、SIMD型プロセッサ1の外部に設けられた画像メモリ6に送られる時にも使用される。
Further, as described above, the
なお、画像メモリ6は演算処理されるデータを格納するとともに、演算処理されたデータを格納するものであり、これらの画像メモリ6はSIMD型プロセッサ1の内部に設けても問題ない。また、メモリコントローラ5と画像メモリ6との間のデータ転送についても、本実施の形態では、後述するように、32ビットのパラレルデータとして転送されるものとして扱うが、データに応じて適宜変更しても問題ない。なお、メモリコントローラ5が行うその他の動作については後述する。
The
また、グローバルプロセッサ2は、上記シーケンスユニット22からの命令により、算術論理演算を行うALU23、演算データを格納するデータRAM24を備える。さらに、グローバルプロセッサ2は、演算処理されるデータ等を保持するためのレジスタ群25を備える。
In addition, the
このレジスタ群25は、プログラムのアドレスを保持するプログラムカウンタPC、演算処理のデータ格納のための汎用レジスタであるG0〜G3レジスタ、レジスタ待避、復帰時に待避先データRAMのアドレスを保持しているスタックポインタ(SP)、サブルーチンコール時にコール元のアドレスを保持するリンクレジスタ(LS)、同じくIRQ時とNMI時の分岐元アドレスを保持するLI、LNレジスタ、プロセッサの状態を保持しているプロセッサステータスレジスタ(P)を内蔵している。 The register group 25 includes a program counter PC that holds a program address, G0 to G3 registers that are general-purpose registers for storing data for arithmetic processing, and a stack that holds the address of the save destination data RAM at the time of register save and return. Pointer (SP), link register (LS) that holds the address of the caller at the time of a subroutine call, LI and LN registers that hold branch source addresses at the time of IRQ and NMI, and a processor status register that holds the state of the processor (P) is incorporated.
また、レジスタ群25は、プロセッサエレメントブロック3の後述するレジスタ35に接続されており、このレジスタ35との間でシーケンスユニット22の制御によりデータの交換が行われる。
The register group 25 is connected to a later-described
プロセッサエレメントブロック3は、図1及び図2に示すように、レジスタファイル31、マルチプレクサ32、シフト・拡張回路33、算術論理演算器34(以下、「ALU34」という。)、レジスタ35、を一単位とする複数のプロセッサエレメント3aを備える。レジスタファイル31には、1つのプロセッサエレメント3a単位に8ビットのレジスタが32本内蔵されており、本実施形態では1024のプロセッサエレメント分の組がアレイ構成になっている。レジスタファイル31は1つのプロセッサエレメント(PE)3aごとにR0、R1、R2、...R31と呼ばれているレジスタが内蔵されている。それぞれのレジスタファイル31は演算アレイ36に対して1つの読み出しポートと1つの書き込みポートを備えており、8ビットのリード/ライト兼用のバスで演算アレイ36からアクセスされる。32本のレジスタの内、24本はプロセッサ外部からアクセス可能であり、外部からクロックとアドレス、リード/ライト制御を入力することで任意のレジスタを読み書きできる。
As shown in FIGS. 1 and 2, the
レジスタの外部からのアクセスは1つの外部ポートで各プロセッサエレメント3aの1つのレジスタがアクセス可能であり、外部から入力されたアドレスでプロセッサエレメントの番号(0〜1023)を指定する。したがって、レジスタアクセスの外部ポートは全部で24組搭載されている。また、外部からのアクセスされるデータは上述したように、偶数のプロセッサエレメント3aと奇数のプロセッサエレメント3aの1組で16ビットデータとなっており、1回のアクセスで2つのレジスタを同時にアクセスしている。
Access from the outside of the register allows one register of each
本実施形態では、プロセッサエレメント3aの数を1024個として説明するが、これに限定されるものでなく適宜変更して使用してもよい。このプロセッサエレメント3aには、グローバルプロセッサ2のシーケンスユニット22により、外部インタフェース4に近い順に0から1023までのアドレスが割り付けられる。
In the present embodiment, the number of
プロセッサエレメント3aのレジスタファイル31は、レジスタコントローラ31a、2種類のレジスタ31b、31cを備える。本実施形態では、図3に示すように、一単位のプロセッサエレメント3a毎に、レジスタコントローラ31aとレジスタ31bとを24組備え、さらにレジスタ31cを8個備えている。なお、図3では2組のプロセッサエレメント3aにおけるレジスタファイル31の一部を表しており、図3中の1プロセッサエレメントとは1つのプロセッサエレメント3aを表している。ここで、本実施形態では、レジスタ31b、31cを8ビットのものとして扱うが、これに限定されるものでなく適宜変更して使用してもよい。
The
レジスタコントローラ31aは、図3に示すように、外部インタフェース4と、上述したアドレスバス41a、偶数用リード/ライト信号線45a、奇数用リード/ライト信号線45b、クロック信号線41cを介して接続されている。
As shown in FIG. 3, the
外部インタフェース4は、メモリコントローラ5からアドレス制御信号を受けると、アドレス指定信号をアドレスバス41aを介してプロセッサエレメントブロック3ヘ送る。これにより、一組のプロセッサエレメント3a、即ち2つのプロセッサエレメント3aが同時にアドレス指定される。レジスタコントローラ31aは、送られてきたアドレス指定信号をデコードし、デコードしたアドレスと、自己に割り付けられたアドレスとが一致する場合には、メモリコントローラ5からクロック信号41cを介して送られてきたクロック信号に同期して、リード/ライト信号45a或いは45bを介してメモリコントローラ5から送られてきたリード/ライト指示信号を得る。具体的には、偶数番号が割り付けられているレジスタコントローラ31aは、偶数用リード/ライト信号45aを介してメモリコントローラ5から送られてきたリード/ライト指示信号を得る。一方、奇数番号が割り付けられているレジスタコントローラ31aは、奇数用リード/ライト信号45bを介してメモリコントローラ5から送られてきたリード/ライト指示信号を得る。このとき一組を構成するプロセッサエレメント3aのレジスタコントローラ31aへ送られるリード/ライト指示信号はそれぞれ異なるものであってもよい。即ち、偶数番号が割り付けられているレジスタコントローラ31aへ送られる指示信号がリード指示であるとき、奇数番号が割り付けられているレジスタコントローラ31aへ送られる指示信号はライト指示であってもよい。そして、このリード/ライト指示信号はレジスタ31bに与えられる。
When receiving the address control signal from the
レジスタコントローラ31aから双方のプロセッサエレメント3aに対し、ライト指示信号が送られてきた場合には、偶数番号が割り付けられたプロセッサエレメント3aのレジスタ31bは、演算処理されるデータ(8ビット)を偶数用データバス46aより取得して保持する。また、奇数番号が割り付けられたプロセッサエレメント3aのレジスタ31bは、演算処理されるデータ(8ビット)を奇数用データバス46bより取得して保持する。一方、レジスタコントローラ31aから双方のプロセッサエレメント3aに対し、リード指示信号が送られてきた場合には、偶数番号が割り付けられたプロセッサエレメント3aのレジスタ31bは、演算処理されたデータ(8ビット)を偶数用データバス46aへ送る。また、奇数番号が割り付けられたプロセッサエレメント3aのレジスタ31bは、演算処理されたデータ(8ビット)を奇数用データバス46bへ送る。
When a write instruction signal is sent from the
このように、一度のアドレス指定により、偶数番号が割り付けられたプロセッサエレメント3aにデータ転送できるとともに、奇数番号が割り付けられたプロセッサエレメント3aにもデータ転送できる。このため、データの転送回数を少なくすることができ、データ転送を高速にできる。
As described above, data can be transferred to the
レジスタ31bは、後述するALU34でこれから演算される外部から入力されたデータを保持したり、或いはALU34で演算処理されたデータを外部へ出力するために保持するものであり、いわゆる入力レジスタとしても、或いは出力レジスタとしても機能する。また、演算処理されるデータ、或いは演算されたデータを一時的に保持するといった、後述するレジスタ31cとしての機能も有する。なお、本実施形態では、レジスタ31bは8ビットのデータを保持できるものとして扱うが、データに応じて適宜変更しても問題ない。上述したレジスタコントローラ31aからライト指示信号が与えられると、レジスタ31bは演算処理されるデータをデータバス46aまたはデータバス46bより取得して保持する。一方、レジスタコントローラ31aからリード指示信号が送られてくると、レジスタ31bは保持している演算処理されたデータをデータバス46aまたはデータバス46bへ与える。このデータは外部インタフェース4からメモリコントローラ5のライトバッファ部54に与えられ、ライトバッファ部54から画像メモリ6へ格納される。
The
また、レジスタ31bは、本実施形態においては8ビットデータをパラレルで転送するデータバス37を介してマルチプレクサ32に接続されている。ALU34で演算処理されるデータ、或いはALU34で演算処理されたデータは、このデータバス37を介して、レジスタ31bとの間で転送される。この転送は、グローバルプロセッサ2のシーケンスユニット22からの指示によって、グローバルプロセッサ2に接続されたリード信号線26a、ライト信号線26bを介して行われる。具体的には、グローバルプロセッサ2のシーケンスユニット22から、リード信号線26aを介してリード指示信号が送られてくると、レジスタ31bは保持している演算処理されるデータをデータバスへ置く。このデータはALU34へ送られ演算処理される。一方、グローバルプロセッサ2のシーケンスユニット22から、ライト信号線26bを介してライト指示信号が送られてくると、レジスタ31bはデータバス37を介して送られてきたALU34で演算処理されたデータを保持する。
In the present embodiment, the
レジスタ31cは、レジスタ31bより与えられた演算処理されるデータ、或いは演算されたデータがレジスタ31bに与えられる前に、そのデータを一時的に保持するものである。このレジスタ31cは、上述したレジスタ31bと異なり、メモリコントローラ5を介して、画像メモリ6との間においてデータ転送はしない。
The
演算アレイ36は、マルチプレクサ32、シフト/拡張回路33、16ビットALU34及び16ビットのレジスタ35を備えている。このレジスタ35には、16ビットAレジスタ、Fレジスタを内蔵している。
The
プロセッサエレメント3aの命令による演算は、基本的にレジスタファイル31から読み出されたデータをALU34の片側の入力としてもう片側にはレジスタ35のAレジスタの内容を入力として結果をAレジスタに格納する。したがって、Aレジスタとレジスタファイル31のR0〜R31レジスタとの演算が行われることとなる。レジスタファイル31と演算アレイ36との接続に(7to1)のマルチプレクサ32を置いており、プロセッサエレメント方向で左に1、2、3つ離れたデータと右に1、2、3つ離れたデータ、中央のデータを演算対象として選択している。また、レジスタファイル31の8ビットのデータはシフト/拡張回路33により任意ビットの左シフトしてALU34に入力される。さらに、図示していない8ビットの条件レジスタ(T)により、プロセッサエレメント3aごとに演算実行の無効/有効の制御をしており、特定のプロセッサエレメント3aだけを演算対象として選択できるように構成している。
In the calculation by the instruction of the
上記したように、マルチプレクサ32は、自己のプロセッサエレメント3aに備えられた上記データバス37に接続されるとともに、両隣3つのプロセッサエレメント3aに備えられたデータバス37にも接続されている。このマルチプレクサ32は7つのプロセッサエレメント3aから1つを選択し、その選択したプロセッサエレメント3aにおけるレジスタ31b、31cで保持されているデータをALU34へ送る。或いはALU34で演算処理されたデータを、選択したプロセッサエレメント3aにおけるレジスタ31b、31cへ送る。これによって、隣のプロセッサエレメント3aにおけるレジスタ31b、31cで保持されているデータを利用した演算処理が可能になり、SIMD型プロセッサ1の演算処理能力を高めることができる。
As described above, the
シフト/拡張回路33は、マルチプレクサ32から送られてきたデータを所定ビットシフトしてALU34へ送る。或いはALU34から送られてきた演算処理されたデータを所定ビットシフトしてマルチプレクサ32へ送る。
The shift /
ALU34は、シフト/拡張回路33から送られてきたデータと、レジスタ35に保持されているデータとに基づき算術論理演算を行う。なお、本実施形態では、ALU34は16ビットのデータに対応できるものとして扱うが、データに応じて適宜変更しても問題ない。演算処理されたデータは、レジスタ35に保持され、シフト/拡張回路33へ転送されたり、或いはグローバルプロセッサ2の汎用レジスタ25へ転送される。
The
グローバルプロセッサ2からメモリコントローラ5へはI/O用のアドレス、データ、コントロール信号がバスを介して与えられる。グローバルプロセッサ2がメモリコントローラ5のいくつかの動作設定レジスタ(図示せず)へ動作方法等のコマンドを設定している。最後にグローバルプロセッサ2は、メモリコントローラ5のスタートレジスタ(図示せず)にスタートコードを書き込むことで、メモリコントローラ5は自動的に設定に従った動作を行う。このように構成することで、プロセッサの命令制御による演算と同時にレジスタファイル31のデータを入出力させることができる。
An I / O address, data, and control signal are given from the
図4は、この発明に用いられるメモリコントローラ5の構成を示したものである。メモリコントローラ5は、画像メモリ6にデータライトを行うライトバッファ部54と、画像メモリ6からデータリードを行うリードバッファ部55と、プロセッサエレメントのレジスタファイル31への制御を行っているPE制御部52、画像メモリ6への制御を行うRAM制御部53、及びシーケンスユニット(SCU)51より構成されている。
FIG. 4 shows the configuration of the
メモリコントローラ5は、SIMD型プロセッサ1のレジスタファイル31と外部インタフェース4内のデータ転送ポートを介して接続されていて、レジスタファイル31から画像メモリ6へのデータ転送、画像メモリ6からレジスタファイル31へのデータ転送を行っている。このデータ転送ポートは、出力ポートと入力ポートを備える。また、この実施の形態におけるメモリコントローラ5が制御するレジスタは、上述したように、I/O空間にマッピングされており、グローバルプロセッサ2からの指示に従い、アドレス、クロック、及びリード・ライト制御を出力することでリード、ライト可能となっている。
The
ライトバッファ部54にはSIMD方式プロセッサ1の外部インタフェース4の出力ポートが接続され、リードバッファ部55には外部インタフェース4の入力ポートが接続される。データ転送ポートはそれぞれ偶数プロセッサエレメント用と奇数プロセッサエレメント用の入力、出力ポートを独立して有しており、1サイクルで一度に偶数、奇数の1組のプロセッサエレメント分のデータがアクセス可能に構成されている。また、ライトバッファ部54、リードバッファ部55と画像メモリ6間のデータバスは、それぞれ4プロセッサエレメント分のデータ幅で構成されており、1サイクルで一度に4プロセッサエレメント分のデータをアクセスできる。尚、この実施の形態においては、1プロセッサエレメント分のデータは8ビットとしている。また、外部インタフェース4とライトバッファ54部及びリードバッファ部55とのデータバスのビット幅は16ビットで構成される。従って、メモリコントローラ5と画像メモリ6間のビット幅は32ビットで構成される。
An output port of the
この結果、外部インターフェース4の外部インタフェース4のデータ転送ポートとメモリコントローラ5間の転送を2回行う間に、画像メモリ6とメモリコントローラ5間の転送を1回実行すればよいことになる。
As a result, the transfer between the
メモリコントローラ5のライトバッファ部54はSIMD型プロセッサ1の外部インタフェース4より出力された画素データを2回取り込み、4個のプロセッサエレメント分のデータに整形した後、画像メモリ6に転送する動作を行っている。また、リードバッファ部55は、画像メモリ6から読み出した4個のプロセッサエレメント分のデータを2回に分けて、SIMD型プロセッサ1の外部インタフェース4に転送する動作を行っている。
The
図5にプロセッサエレメント(PE)制御部52の実施形態の概略ブロック図を示す。
FIG. 5 shows a schematic block diagram of an embodiment of the processor element (PE)
図5に示すように、PE制御部52はSIMDプロセッサ1の外部インタフェース4にプロセッサエレメント3aのアドレス、クロック、リード/ライト制御信号を出力するものであり、SIMDプロセッサ1における各プロセッサエレメント3aのレジスタファイル31のデータを読み書きすることを可能にしている。
As shown in FIG. 5, the
このPE制御部52は、プロセッサエレメント(PE)アドレスカウンタ521、転送数カウンタ522、523、有効データ数カウンタ524とからなる。PEアドレスカウンタ521はライト転送(プロセッサエレメント34aのレジスタファイル31から画像メモリ6への転送)の場合は、転送開始時に”0”が初期ロードされ、リード転送(画像メモリ6からプロセッサエレメント34aのレジスタファイル31への転送)の場合は、転送開始時に転送開始PEアドレスレジスタ525に格納されている値が初期ロードされるアップカウンタであり、データ転送するプロセッサエレメントのアドレスを生成する。転送数カウンタ522,523は転送するデータ数を初期ロードできるダウンカウンタであり、転送数を管理するのに使用される。転送カウンタ522はライトするデータ数がセットされ、転送カウンタ523にはリードするデータ数がそれぞれ初期ロードされる。
The
有効データ数カウンタ524は、画像メモリ6に格納済みの有効なデータ数を管理するカウンタであり、画像メモリ6からプロセッサエレメント3aのレジスタファイル31にデータ転送する時に、転送数よりも有効データ数の方が多い時にのみ転送が実施されるようになっている。このように構成することで、データの欠落を防止している。
The valid
図6にメモリ(RAM)制御部53の第1の実施形態の概略ブロック図を示す。
FIG. 6 shows a schematic block diagram of the first embodiment of the memory (RAM)
図6に示すように、RAM制御部53は、ライトバッファ部54、リードバッファ部55からの制御線によって制御され、シングルポートメモリで構成される画像メモリ(RAM)6へのクロック、アドレス、リード/ライト制御、バイトセレクトを出力する。
As shown in FIG. 6, the
RAM制御部53は、RAMアドレス加減器531、ライトポインタレジスタ532、リードポインタレジスタ533、マルチプレクサ534とからなる。各ブロックはアドレス設定用バス(以降、ABと略す)を介して接続されている。
The
ライトポインタレジスタ532は次に画像メモリ6にライトすべきポインタを格納しているレジスタであり、リードポインタレジスタ533は同様に次に画像メモリ6からリードすべきポインタを格納しているレジスタである。
The
ライトポインタレジスタ532、リードポインタレジスタ533は、そのポインタへの画像メモリ6のアクセスの後、RAMアドレス加減器531で更新されたポインタがAB535から入力され格納される。RAMアドレス加減器531は、ライトアクセス時にはライトポインタ、リードアクセス時にはリードポインタの値にRAMアクセスサイズに応じた数を、FIFO動作モード時は加算、LIFO動作モード時は減算した値をAB535に出力する。
In the
シーケンスユニット51は、アドレスデコーダ、制御レジスタとからなり、グローバルプロセッサ2からI/O空間にマッピングされた制御レジスタをアクセスすることで、メモリコントローラ5全体の制御を行ったり、グローバルプロセッサ2からメモリコントローラ5の内部状態を監視することが可能になっている。また、ライト転送とリード転送の時分割もこのシーケンスユニット51のブロックで行われる。また、ライトバッファ部54へのクロックとリードバッファ部55へのクロックとの2系統のクロックを生成することによってライト転送とリード転送を同時に行うことを可能にしている。
The
次に、主走査方向の画素数よりもプロセッサエレメント3aの数が少ないSIMD型プロセッサを用いた場合の画素データの転送方法について説明する。図7は主走査方向の画素数よりもプロセッサエレメント3aの数が少ないSIMD方式のプロセッサを用いた場合の画素データの転送方法についての説明図を示している。
Next, a description will be given of a pixel data transfer method in the case of using an SIMD type processor having a smaller number of
主走査方向の画素数よりプロセッサエレメント3aが少ない場合には、主走査方向の画素データを分割して、メモリコントローラ5は、SIMDプロセッサ1のプロセッサエレメント3aのレジスタファイル31に画素データを画像メモリ6より与え、この処理を繰り返し実行している。すなわち、主走査方向の画素数よりもプロセッサエレメント数が少ない場合には、主走査方向の画素データを分割してSIMDプロセッサ1で演算処理を繰り返し実行している。
When the number of
通常、SIMD型プロセッサを用いた画像処理ではフィルター処理などのように、注目画素前後の画素のデータを参照した処理を含む処理を実施するとSIMDの両端のデータに無効なデータが残る。このため、プロセッサエレメント3aのレジスタファイルから画像メモリ6にデータを格納する際には、両端のデータを除いて格納する必要がある。また、画像メモリ6からプロセッサエレメント3aのレジスタファイル31にデータを転送する際には、注目画素前後の参照用の画素データも併せて転送する必要がある。つまり、フィルター処理などの重み付け処理における画素データの転送は以下の順序で行われることになる。ここでは、参照用画素の個数をa個とする。
Usually, in image processing using a SIMD type processor, when processing including processing referring to pixel data before and after a pixel of interest is performed, such as filter processing, invalid data remains in data at both ends of the SIMD. For this reason, when data is stored in the
1.処理前画素データを画像メモリ6からSIMDプロセッサ1のプロセッサエレメント3aの対応するレジスタファイル31へ転送する。
1. The pre-processing pixel data is transferred from the
2.SIMDプロセッサ1による画像処理を行う。このとき、SIMDプロセッサエレメント3aの前後a個のデータは参照画素不在により無効にする。すなわち、図7における斜線部を施した部分が有効画素数になる。
2. Image processing by the
3.処理後画素データをSIMDプロセッサ1から画像メモリ6に転送する。このとき、両端の前後a個分の画素を除いた有効画素が画像メモリ6に転送される。
3. The processed pixel data is transferred from the
図7を参照して、画像メモリ6とSIMDプロセッサ1間の画素データの転送につき説明する。SIMDプロセッサ1のプロセッサエレメント(PE)3aは、n個、すなわち、PE0からPEn−1を備え、これらプロセッサエレメント3a…に画像メモリ6から画素データを送り、画像処理を行った後、これらプロセッサエレメント3a…から画像メモリ6に画素データが転送される。
The transfer of pixel data between the
まず、最初の転送、すなわち、図中1SIMD目の転送では、SIMDプロセッサ1のプロセッサエレメント3a…前後に参照画素a個を併せて転送している。図7に示す例では、RAM制御部53は、まず、リードポインタ533に0を格納し、RAMアクセスサイズに応じた数、この実施の形態においては、32ビット分のデータを画像メモリ6より読み出し、リードバッファ部55へ格納する。そして、アドレス加減器531は、リードポインタの値にRAMアクセスサイズに応じた数を、FIFO動作モード時は加算、LIFO動作モード時は減算した値をAB535に出力し、その値がリードポインタ533に格納される。そして、PE制御部52のPEアドレスカウンタ521により、アドレスが生成され、そのアドレスに基づき、外部インターフェース4から該当するプロセッサエレメント3a…にデータが書き込みされる。転送数カウンタ522は画像データの書き込みの度にRAMサイズに応じた数、この実施の形態では4ずつデクリメントしてゆく。上記の処理はこの転送カウンタ522の値が0になるまで繰り返し実行され、SIMDプロセッサ1のPE0からPEn−1に画像メモリ6からの画素データが転送される。
First, in the first transfer, that is, the 1st SIMD transfer in the figure, a reference pixel a is transferred before and after the
処理後の画素データを画像メモリ6に転送する場合、前後それぞれa個の画素データは無効なので、転送する画素データはPE0からPEn−1までのn画素の内、a〜(n−a−1)までの(n−2×a)画素である。このため、PE制御部52のPEアドレスカウンタ521には、転送開始時に転送開始PEアドレスレジスタ525の値がロードされ、そのアドレスに基づき、該当するプロセッサエレメント3a…からデータが読み出され、外部インタフェース4からライトバッファ部54に画像データが書き込みまれる。転送数カウンタ523には読み出される度にRAMアクセスサイズに応じた数、この実施の形態では4ずつデクリメントされる。ライトバッファ部54に32ビット分のデータが格納されると、画像メモリ6に画像データが転送される。RAM制御部53は、まず、ライトポインタ532にaを格納し、ライトバッファ部54に格納された画像データ、この実施の形態においては、32ビット分のデータを画像メモリ6に転送する。アドレス加減器531は、リードポインタの値にRAMアクセスサイズに応じた数を、FIFO動作モード時は加算、LIFO動作モード時は減算した値をAB535に出力し、その値がライトポインタ532に格納される。このようにして、SIMDプロセッサ1のPEaからPEn−2×aまでの画像データが画像メモリ6に転送される。
When the processed pixel data is transferred to the
続いて、2番目の転送が同様にして行われる。図中2SIMD目の転送では、(n−a)〜(2n−3×a)までの画素を注目画素として処理を行うため、参照画素として(n−2×a)〜(n−a−1)及び、(2n−3×a)〜(2n−2×a−1)の画素データを併せて送っている。データ処理後、(n−a)〜(n−2×a)の(n−3×a)画素が画像メモリ6に格納される。主走査方向のSIMD分割数が多い場合も同様の処理を繰り返すだけである。
Subsequently, the second transfer is performed in the same manner. In the second SIMD transfer in the figure, since the pixels from (n−a) to (2n−3 × a) are processed as the target pixel, (n−2 × a) to (n−a−1) are used as reference pixels. ) And (2n−3 × a) to (2n−2 × a−1) pixel data are sent together. After the data processing, (n−3 × a) pixels (n−a) to (n−2 × a) are stored in the
以上の処理を実現するには、画像メモリ6へのデータライトの場合には、本発明のプロセッサエレメント(PE)制御部52の実施形態において、転送開始PEアドレスレジスタ525に”a”を設定し、転送数カウンタ522に”(n−2×a)を設定すればよい。
In order to realize the above processing, in the case of data write to the
設定数は全てPEアドレスを基準としているため、SIMDごとに設定を変更する必要がない。また、画像メモリ6からのデータリードの場合には、リードポインタ533を転送終了後に戻すという操作が必要である。上記の例では(n−2×a)に戻すことになる。RAM制御部53の打愛1の実施形態においては、転送が終了した後に、リードポインタ533の値をグローバルプロセッサ2から設定する必要がある。
Since all the setting numbers are based on the PE address, there is no need to change the setting for each SIMD. In the case of reading data from the
また、画像メモリ6へのデータライトの場合には、ライトポインタ532の操作を行う必要はない。
In the case of data writing to the
図8は本発明におけるRAM制御部53の第2の実施形態を示す概略ブロック図である。
FIG. 8 is a schematic block diagram showing a second embodiment of the
図8に示すRAM制御部53は、図6に示したRAM制御部53に、さらにリードオフセット生成器536を設けたものである。このRAM制御部53は、リードオフセット生成器536によりメモリ6からSIMDプロセッサ1のプロセッサエレメント3aの各レジスタファイルへのデータ転送の際に、プロセッサエレメント3aへの転送終了後にリードポインタ533の値を戻すことができるように変更している。
The
リードオフセット生成器536は、PE制御部52より入力されたPEアドレスを監視し、PEアドレスが設定された値と等しくなると、その時のリードポインタ533の値を保持し、設定された転送数を送り終えるまで転送を継続する。転送が終了すると、保持しておいた値をリードポインタ533にリロードする。上記図7で示す例では(n−2×a−1)を設定することになる。設定値は全てPEアドレスを基準としているため、RAM制御部53の第1の実施形態のようにSIMDごとに設定を変更する必要がない。
The read offset
図9は本発明におけるRAM制御部53の第3の実施の形態を示す概略ブロック図である。
FIG. 9 is a schematic block diagram showing a third embodiment of the
図9に示すRAM制御部53は、上記処理に加えて、画像メモリ6の特定の領域のみをリング状に使用することを可能にしたものである。
In addition to the above processing, the
このRAM制御部53は、図8に示したRAM制御部にさらに、2つのレジスタ537、538及び比較器539を設けたものである。レジスタ(LADDR)537は画像メモリ6のアドレスの下限値を設定し、レジスタ(UADDR)538は画像メモリ6のアドレスの上限値を設定する。そして、比較器539はそれぞれ現在のポインタ532(533)とLADDR537、UADDR538に設定された値との比較を行う。
The
FIFOモード時に、UADDR538とポインタ532(533)が一致していて、かつアドレス加減器531より出力される値がUADDR538を越える場合に、アドレス加減器531よりAB535への出力をネゲートし、LADDR537よりAB535への出力をアサートする。
In the FIFO mode, when the
LIFOモード時は逆に、LADDR537とポインタ532(533)が一致し、かつアドレス加減器531より出力される値がLADDR537を下回る場合に、アドレス加減器531よりスAB535への出力をネゲートし、UADDR538よりAB535への出力をアサートする。上記のように構成することで、画像メモリ6のメモリ空間の特定空間だけを用いることができるようになる。
Conversely, in the LIFO mode, when the
図10にこの発明の実施の形態にかかるライトバッファ部54及びリードバッファ部55の概略ブロック図を示す。
FIG. 10 is a schematic block diagram of the
この実施の形態におけるライトバッファ部54及びリードバッファ部55は、偶数プロセッサエレメント3a、奇数プロセッサエレメント3aの専用のポートを持っていて、それぞれ1サイクルで2プロセッサエレメント分のデータをアクセス可能に構成され、全プロセッサエレメント数の半分のサイクル数でデータ転送することが可能となっている。
The
ライトバッファ部54は4プロセッサエレメント分のデータがバッファに格納されると、画像メモリ6にライトアクセスを行うように構成されている。
The
外部インタフェース4の転送ポートからライトバッファ部54に与えられる2プロセッサエレメント分のデータは、まずフリップフロップ541,542に格納された後、次段のフリップフロップ543,544に転送される。続いて、与えられる2プロセッサエレメント分はフリップフロップ541,542に格納される。そして、フリップフロップ541〜544に格納された4プロセッサエレメント分のデータがそれぞれラッチ545〜548に格納される。ライトバッファ部54は、4プロセッサエレメント分のデータをラッチ545〜548に格納されると、画像メモリ6にライトアクセスを行う。
Data for two processor elements supplied from the transfer port of the
リードバッファ部55は、画像メモリ6から4プロセッサエレメント分読み出されたデータをバッファとしてのフリップフロップ551〜554に格納する。4プロセッサエレメント分のデータから2プロセッサエレメント分がマルチプレクサ555により選択され、ラッチ556,557に格納される。このラッチ556,557に格納された画像データが外部インタフェース4を介してSIMDプロセッサ1のレジスタファイル31に転送される。
The read
4プロセッサエレメント分のデータの転送が終わると再び画像メモリ6にリードアクセスを行う。画像メモリ6は一度に4プロセッサエレメント分のデータをアクセスできるので、2サイクルで一度のアクセスを実現できればSIMDプロセッサ1とのインタフェースが取れることとなり、画像メモリ6のアクセスタイムの制限を緩和できる。
When the transfer of data for four processor elements is completed, read access to the
図11はデジタルコピーやファクシミリなどでよく行われる変倍処理の内、縮小を実現するための間引きライト動作について図示したものである。 FIG. 11 illustrates a thinning write operation for realizing reduction among the scaling processes often performed in digital copying, facsimile, and the like.
図11ではプロセッサエレメント(0)、プロセッサエレメント(2)などの画素データはそのまま画像メモリ6に格納され、プロセッサエレメント(1)、プロセッサエレメント(3)などの画素データが画像メモリ6に格納されずに間引かれている。
In FIG. 11, the pixel data of the processor element (0), the processor element (2), etc. are stored in the
メモリコントローラ5は偶数側のプロセッサエレメント3aと奇数側のプロセッサエレメント3aのそれぞれのデータを間引くかどうかを決定する外部ライト制御信号を2本有している。また、メモリコントローラ5とライト制御信号との同期を取るために転送を開始するタイミングをメモリコントローラ5に通知する外部端子を有している。転送を開始する外部同期信号はシーケンスユニットに入力されており、同期信号がアサートされるとシーケンスユニット51は転送を開始させる。
The
シーケンスユニット51は、上記ライト制御信号の値を検出して、外部からのライト制御信号が”0”である場合には、そのデータをライトバッファ部54内のバッファに書き込む。また、シーケンスユニット51は、上記ライト制御信号の値を検出して、”1”が立っている場合は、そのデータをライトバッファ部54内のバッファに格納することを抑止する。
The
ライトバッファ部54は転送開始時及び転送終了時の例外を除き、4プロセッサエレメント分のデータが格納されるまで、画像メモリ6への転送要求をRAM制御部53に対して出力しないため、アドレスポインタの更新と画像メモリ6へのクロック、リード・ライト制御、バイトセレクトの出力は4プロセッサエレメント分のデータがライトバッファ部54に格納されるまで行われない。SIMDプロセッサ1のデータ転送ポートからのデータリードはライト制御信号によらず継続する。
Since the
図12は上記変倍処理の内、拡大を実現するための重複リード動作について図示したものである。図12ではプロセッサエレメント(0)、プロセッサエレメント(2)などのレジスタにはリードポインタの位置から順番に画像メモリ6のデータが書き込まれ、プロセッサエレメント(1)、プロセッサエレメント(3)などのレジスタには1つ前のプロセッサエレメントのレジスタに書き込まれた値が重複して書き込まれている。
FIG. 12 illustrates an overlapping read operation for realizing enlargement in the above scaling process. In FIG. 12, the data of the
メモリコントローラ5は偶数側のプロセッサエレメント3aと奇数側のプロセッサエレメント3aのそれぞれのデータを書き込む際に前と同じデータを重複して書き込むかどうかを決定する外部リード制御信号を2本有している。
The
メモリコントローラ5と重複制御信号との同期を取るために転送を開始するタイミングをメモリコントローラ5に通知する外部端子を有している。転送を開始する外部同期信号はシーケンスユニット51に入力されており、同期信号がアサートされるとシーケンスユニット51は転送を開始させる。
In order to synchronize the
シーケンスユニット51は、上記リード制御信号の値を検出して、”1”が立っている場合は、リードバッファ部55のマルチプレクサを制御して、1つ前にPEアドレスを持つプロセッサエレメントのレジスタに転送すべきデータを再度出力できるようにしている。リードバッファ部55は転送開始時と転送終了時の例外を除き、画像メモリ6からリードされた4プロセッサエレメント分のデータが全て不必要になるまで、RAM制御部53に対して画像メモリ6へのリードデータ転送要求を出力しないため、(たとえばリード制御が常に”0”であれば2回のデータ転送ポートへのアクセスがあるまでであり、リード制御信号に1がたっている間はデータが不必要になることはない。)アドレスポインタの更新と画像メモリ6へのクロック、リード・ライト制御、バイトセレクトの出力は4プロセッサエレメント分のデータが全て不必要になるまで行われない。SIMDプロセッサ1の外部インタフェース4へのデータライトはリード制御信号によらず継続する。
The
上記した実施の形態においては、一度のアドレス指定により、SIMDプロセッサ1の偶数番号が割り付けられたプロセッサエレメント3aにデータ転送できるとともに、奇数番号が割り付けられたプロセッサエレメント3aにもデータ転送できるように構成しているが、SIMDプロセッサ1への画像データの転送はこの方式に限られるものではない。たとえば、図13に示すように、SIMDプロセッサ1のプロセッサエレメント3aに、奇数、偶数の区別を付けずに、アドレス指定により順次データを転送するように構成したものにおいても、この発明は適用できる。すなわち、図11に示すように、レジスタコントローラ31aは、外部インタフェース4と、アドレスバス41a、リード/ライト信号45c、クロック信号41cを介して接続されている。このレジスタコントローラ31aは、メモリコントローラ5から外部インタフェース4に与えられ、アドレスバス41aを介してアドレス指定信号が送られてくると、そのアドレス指定信号をデコードする。そして、デコードしたアドレスと、自己のプロセッサエレメント3aに割り付けられたアドレスとが一致する場合には、メモリコントローラ5から外部インタフェース4に与えられ、クロック信号41cからのクロック信号に同期して、リード/ライト信号41bを介してメモリコントローラ5から送られてきたリード/ライト指示信号を得る。このリード/ライト指示信号は、レジスタ31bへ与えられる。
In the above-described embodiment, the data can be transferred to the
SIMD型プロセッサ1の外部に設けられた画像メモリ6に格納されているデータを、この実施形態では8ビットのパラレルデータとして、データバス46cに置く。このデータバス46cは、レジスタ31bに保持されている演算処理されたデータが、SIMD型プロセッサ1の外部に設けられた画像メモリ6に送られる時にも使用される。
In this embodiment, data stored in the
外部インタフェース4から与えられるアドレス、リード/ライト、クロック、データの信号はレジスタファイル31の各レジスタに供給される。そして、各プロセッサエレメント3a…ごとにアドレスをデコードして各プロセッサエレメント3a…を示すアドレスと一致したプロセッサエレメント3aだけがリード/ライトの動作をおこなう。
Address, read / write, clock, and data signals given from the
このように構成されるSIMD型プロセッサ1は、メモリコントローラ5が、画像メモリ6に格納されているデータをプロセッサエレメント3aに送る場合、プロセッサエレメント3aに割り付けられたアドレスを指定することにより、1回のクロック信号が入力されるだけで、その指定したプロセッサエレメント3aにデータが送られる。なお、この例では、偶数、奇数のプロセッサエレメント3aに同時にデータは送られないので、第1の実施の形態に比べると、データ転送に時間はかかるが、回路構成は簡略化できる。
When the
上述した実施形態においては、プロセッサエレメント3aをアドレス指定しているが、プロセッサエレメント3aの指定をアドレス指定する方式ではなく、ポインタ指定する方式、即ちシリアルアクセスメモリ方式においても、この発明は適用できる。この例につき図14に従い説明する。なお、ここでは上述した第1の実施形態と異なる点について説明することとし、同じ点については説明を省略する。また、上述した第1実施形態と同じ構成部分については、同一の符号を付する。
In the above-described embodiment, the
まず、グローバルプロセッサ2からメモリコントローラ5へはI/O用のアドレス、データ、コントロール信号がバスを介して与えられる。グローバルプロセッサ2がメモリコントローラ5のいくつかの動作設定レジスタ(図示せず)へ動作方法等のコマンドを設定している。最後にグローバルプロセッサ2は、メモリコントローラ5のスタートレジスタ(図示せず)にスタートコードを書き込むことで、メモリコントローラ5は自動的に設定に従った動作を行う。メモリコントローラ5は、グローバルプロセッサ2のコマンドに基づき、このリセット信号を生成し、外部インタフェース4からリセット信号47を介してプロセッサエレメントブロック3ヘ送る。これにより、レジスタコントローラ31aは、リセットされる。そして、外部インタフェース4に最も近いレジスタコントローラ31aへメモリコントローラ5から外部インタフェース4、クロック信号41cを介してクロック信号が送られる。このクロック信号に同期して、レジスタコントローラ31a’は、リード/ライト信号45a或いは45bを介してメモリコントローラ5から送られてきたリード/ライト指示信号を得る。このリード/ライト指示信号は、偶数番号が割り付けられたプロセッサエレメント3aのレジスタ31b、及び奇数番号が割り付けられたプロセッサエレメント3aのレジスタ31bにそれぞれ与えられる。このとき一組を構成するプロセッサエレメント3aのレジスタコントローラ31a’へ送られるリード/ライト指示信号は、上記第1実施形態の場合と同様それぞれ異なるものであってもよい。
First, an I / O address, data, and control signal are given from the
これにより、上述した第1実施形態の場合と同様、一度のポインタ指定により、偶数番号が割り付けられたプロセッサエレメント3aにデータ転送できるとともに、奇数番号が割り付けられたプロセッサエレメント3aにもデータ転送できる。
As a result, as in the case of the first embodiment described above, data can be transferred to the
図15に示すものは、上記したこの発明のメモリコントローラ5を含んだ画像処理装置の他の実施形態の構成を示すブロック図である。この図15に示すものは、独立した2つのレジスタファイル3のデータ転送ポートの間にメモリコントローラ5を配置したものである。このような構成のものにおいても、本発明は適用することができる。
FIG. 15 is a block diagram showing the configuration of another embodiment of the image processing apparatus including the
1 SIMD型プロセッサ
2 グローバルプロセッサ
4 外部インタフェース
5 メモリコントローラ
6 画像メモリ
51 シーケンスユニット
52 PE制御部
53 RAM制御部
54 ライトバッファ部
55 リードバッファ部
DESCRIPTION OF
Claims (1)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006001390A JP4408113B2 (en) | 2006-01-06 | 2006-01-06 | Signal processing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006001390A JP4408113B2 (en) | 2006-01-06 | 2006-01-06 | Signal processing method |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP31480699A Division JP3821198B2 (en) | 1999-11-05 | 1999-11-05 | Signal processing device |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2006155637A true JP2006155637A (en) | 2006-06-15 |
JP4408113B2 JP4408113B2 (en) | 2010-02-03 |
Family
ID=36633775
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006001390A Expired - Lifetime JP4408113B2 (en) | 2006-01-06 | 2006-01-06 | Signal processing method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4408113B2 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008158836A (en) * | 2006-12-25 | 2008-07-10 | Fuji Xerox Co Ltd | Image processor |
US8989242B2 (en) | 2011-02-10 | 2015-03-24 | Nec Corporation | Encoding/decoding processor and wireless communication apparatus |
CN112967172A (en) * | 2021-02-26 | 2021-06-15 | 成都商汤科技有限公司 | Data processing device, method, computer equipment and storage medium |
-
2006
- 2006-01-06 JP JP2006001390A patent/JP4408113B2/en not_active Expired - Lifetime
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008158836A (en) * | 2006-12-25 | 2008-07-10 | Fuji Xerox Co Ltd | Image processor |
JP4682975B2 (en) * | 2006-12-25 | 2011-05-11 | 富士ゼロックス株式会社 | Image processing device |
US8989242B2 (en) | 2011-02-10 | 2015-03-24 | Nec Corporation | Encoding/decoding processor and wireless communication apparatus |
CN112967172A (en) * | 2021-02-26 | 2021-06-15 | 成都商汤科技有限公司 | Data processing device, method, computer equipment and storage medium |
Also Published As
Publication number | Publication date |
---|---|
JP4408113B2 (en) | 2010-02-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2003517649A (en) | Data processing system for logically close data sample such as image data in machine vision system | |
JP3971535B2 (en) | SIMD type processor | |
JP2009223758A (en) | Image processing apparatus | |
JP4408113B2 (en) | Signal processing method | |
JP3821198B2 (en) | Signal processing device | |
JP2007206924A (en) | Arithmetic processing system | |
JP4442905B2 (en) | Image data processing method | |
JP4451433B2 (en) | Parallel processor | |
JP4413905B2 (en) | SIMD type processor | |
JP3971543B2 (en) | SIMD type processor | |
US20230409323A1 (en) | Signal processing apparatus and non-transitory computer-readable storage medium | |
JP3971559B2 (en) | Parallel processor and image processing apparatus using the same | |
JP6141062B2 (en) | Data processing apparatus and clock supply method | |
JP5369669B2 (en) | SIMD type microprocessor | |
JP2003216950A (en) | Simd type microprocessor for performing pattern matching or the like | |
JP4294190B2 (en) | Parallel processor and image processing apparatus using the same | |
JP4442907B2 (en) | SIMD type processor | |
JP2004252825A (en) | Simd type microprocessor capable of transferring data even when fault is occurred in pe | |
JP2009104521A (en) | Parallel processor | |
JP4516495B2 (en) | Data processing method in SIMD type microprocessor | |
JP2005148899A (en) | Simd-type processor | |
JP2009175830A (en) | Simd type microprocessor | |
JP2009059187A (en) | Microprocessor and data processing method | |
JP4372371B2 (en) | Thinning device and enlargement device in SIMD type microprocessor | |
JP2008071037A (en) | Simd microprocessor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20061020 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090217 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090224 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090427 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20090731 |
|
RD05 | Notification of revocation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7425 Effective date: 20090909 |
|
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: 20091104 |
|
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: 20091105 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4408113 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121120 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131120 Year of fee payment: 4 |
|
EXPY | Cancellation because of completion of term |