WO2006123822A1 - 信号処理装置 - Google Patents

信号処理装置 Download PDF

Info

Publication number
WO2006123822A1
WO2006123822A1 PCT/JP2006/310174 JP2006310174W WO2006123822A1 WO 2006123822 A1 WO2006123822 A1 WO 2006123822A1 JP 2006310174 W JP2006310174 W JP 2006310174W WO 2006123822 A1 WO2006123822 A1 WO 2006123822A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
signal processing
input
rectangular image
pixel
Prior art date
Application number
PCT/JP2006/310174
Other languages
English (en)
French (fr)
Inventor
Yuji Yamaguchi
Masatoshi Imai
Toshiharu Noda
Naosuke Asari
Tomoo Mitsunaga
Mitsuharu Ohki
Kazumasa Ito
Hidetoshi Nagano
Sumito Arakawa
Kei Ito
Original Assignee
Sony Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corporation filed Critical Sony Corporation
Priority to JP2007516362A priority Critical patent/JP4893621B2/ja
Priority to US11/572,331 priority patent/US8464025B2/en
Priority to EP06746708.4A priority patent/EP1883045A4/en
Priority to CN2006800005263A priority patent/CN1993709B/zh
Priority to KR1020077001405A priority patent/KR101270925B1/ko
Publication of WO2006123822A1 publication Critical patent/WO2006123822A1/ja

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Definitions

  • the present invention relates to a signal processing device.
  • the present invention relates to a signal processing apparatus particularly suitable for image processing.
  • Japanese Patent Application Laid-Open No. 06-4690 processes and displays moving image or still image imaging information input from an imaging device such as a CCD (Charge Coupled Device) or CMOS (Complementary Metal Oxide Semiconductor).
  • an imaging device such as a CCD (Charge Coupled Device) or CMOS (Complementary Metal Oxide Semiconductor).
  • an image processing apparatus for recording is disclosed.
  • this image processing apparatus shortens the processing time by performing arithmetic processing on pixel data constituting imaging information in parallel.
  • pixel data read / write processing memory access
  • arithmetic processing using the pixel data are performed synchronously based on the same thread.
  • An object of the present invention is to provide a signal processing device that improves access to storage means to improve signal processing capability.
  • a storage unit and an input / output data control unit that controls reading and Z or writing of data to any one of the at least one storage unit.
  • a signal processing unit PU array or PU-SIMD
  • PU array or PU-SIMD that performs predetermined signal processing on the data read by the input / output data processing unit, the input / output data control unit And based on a thread different from the signal processing unit
  • FIG. 1 is an overall configuration diagram of an image processing apparatus according to an embodiment of a signal processing apparatus of the present invention.
  • FIG. 2 is a block diagram of the image processing engine shown in FIG.
  • FIG. 3 is a block diagram of the processor unit (PU) array shown in FIG.
  • FIG. 4 is a block diagram of the PU shown in FIG.
  • FIG. 5 is a diagram for explaining an image area to be allocated to a PU array.
  • FIG. 6 is a diagram for explaining pixel data to which processing is assigned to a plurality of processor elements (PE).
  • FIG. 7 is a first partial view for explaining allocation of a plurality of PEs in filter processing.
  • FIG. 8 is a second partial diagram for explaining the assignment of a plurality of PEs in the filtering process.
  • FIG. 9 is a third partial view for explaining the assignment of a plurality of PEs in the filtering process.
  • FIG. 10 is a fourth partial view for explaining the assignment of a plurality of PEs in the filter processing.
  • FIG. 11 is a block diagram of the PE shown in FIG.
  • FIG. 12 is a first partial view for explaining filter processing performed in a plurality of PEs.
  • FIG. 13 is a second partial view for explaining filter processing performed in a plurality of PEs.
  • FIG. 14 is a first partial view for explaining the operation of the stream register of each PE in the filter processing shown in FIG.
  • FIG. 15 is a second partial view for explaining the operation of the stream register of each PE in the filter processing shown in FIG.
  • FIG. 16 is a third partial diagram for explaining the operation of the stream register of each PE in the filter processing shown in FIG.
  • FIG. 17 is a fourth partial diagram for explaining the operation of the stream register of each PE in the filter processing shown in FIG.
  • FIG. 18 is a fifth partial view for explaining the operation of the stream register of each PE in the filter processing shown in FIG.
  • FIG. 19 is a sixth partial view for explaining the operation of the stream register of each PE in the filter processing shown in FIG.
  • FIG. 20 is a seventh partial view for explaining the operation of the stream register of each PE in the filter processing shown in FIG.
  • FIG. 21 is an eighth partial view for explaining the operation of the stream register of each PE in the filter processing shown in FIG.
  • FIG. 22 is a ninth partial view for explaining the operation of the stream register of each PE in the filter processing shown in FIG.
  • FIG. 23 is a tenth partial view for explaining the operation of the stream register of each PE in the filter processing shown in FIG. 13.
  • FIG. 24 is an eleventh partial view for explaining the operation of the stream register of each PE in the filter processing shown in FIG.
  • FIG. 25 is a diagram for explaining a shared functional unit in a PU.
  • FIG. 26 is a first partial view for explaining a storage area management method by the stream control unit (SCU) shown in FIG. 3 and the like.
  • SCU stream control unit
  • FIG. 27 is a second partial view for explaining a storage area management method by the SCU shown in FIG. 3 and the like.
  • FIG. 28 is a third partial view for explaining the storage area management method by the SCU shown in FIG. 3 and the like.
  • FIG. 29 is a fourth diagram for explaining a storage area management method by the SCU shown in FIG. FIG.
  • FIG. 30 is a fifth partial view for explaining a storage area management method according to SCU: shown in FIG. 3 and the like.
  • FIG. 31 is a sixth partial view for explaining a storage area management method by SCU shown in FIG. 3 and the like.
  • FIG. 32 is a seventh partial view for explaining a storage area management method according to SCU: shown in FIG. 3 and the like.
  • FIG. 33 is an eighth partial view for explaining a storage area management method according to SCU: shown in FIG.
  • FIG. 34 is a diagram for explaining the execution processing of the command “set BR lof4x4 sam” according to SCU: shown in FIG.
  • FIG. 35 is a diagram for explaining the execution process of the command “ set — b xy ” by SCU shown in FIG. 3 and the like.
  • FIG. 36 is a diagram for explaining the actual processing of the command “set BR 8xl # to # bxy” by SCU: shown in FIG. 3 and the like.
  • Figure 37 is SCU shown in FIG. 3 or the like: a view for explaining the execution process by the command r S et BR4567 # lof4x4j.
  • FIG. 38 is a diagram for explaining an execution process of the command “set in #buffistraight” shown in FIG.
  • FIG 39 is a diagram for explaining the execution of the command "se t- in # buffiwith # BR # 2xl " by SCU shown in FIG. 3 or the like.
  • Figure 40 is a diagram for explaining the execution of the command "se t- in # buffiwith # BR # 4xl " by SCU shown in FIG. 3 or the like.
  • FIG. 41 is a diagram for explaining execution processing of the command “ set — BR # 16xl I” by the SCU shown in FIG. 3 and the like.
  • FIG. 42 is a diagram for explaining execution processing of the command “ set —BR # 32xl I” by the SCU shown in FIG. 3 and the like.
  • Fig.43 shows the execution process of the command " set — BR # 64xl I" by SCU shown in Fig.3 etc. It is a figure for doing.
  • FIG. 44 is a diagram for explaining execution processing of the command “set—BR # 64x2” by the SCU shown in FIG. 3 and the like.
  • FIG. 45 is a diagram for explaining execution processing of the command “set—BR # 64x2x2” by the SCU shown in FIG. 3 and the like.
  • FIG. 46 is a diagram for explaining execution processing of the command “set—BR # 64x3” by the SCU shown in FIG. 3 and the like.
  • FIG. 47 is a diagram for explaining execution processing of the command “set—BR # 64x3x3” by the SCU shown in FIG.
  • FIG. 48 is a diagram for explaining execution processing of a command “set—BR # 64x4” by the SCU shown in FIG. 3 and the like.
  • FIG. 49 is a diagram for explaining the execution processing of the command “set—BR # 64x4x4” by the SCU shown in FIG.
  • FIG. 50 is a diagram for explaining execution processing of a command “set—BR # 64x9” by the SCU shown in FIG. 3 and the like.
  • FIG. 51 is a diagram for explaining the execution processing of the command “set—BR # 64x9x3” by the SCU shown in FIG. 3 and the like.
  • FIG. 52 is a diagram for explaining a storage area management method by the SCU shown in FIG. 3 and the like.
  • FIG. 53 is a diagram for explaining a storage area management method by the SCU shown in FIG. 3 and the like.
  • FIG. 54 is a diagram for explaining a storage area management method by the SCU shown in FIG. 3 and the like.
  • FIG. 55 is a diagram for explaining execution processing of a command “set # DR # mask # 64xl” by the SCU shown in FIG. 3 and the like.
  • FIG. 56 is a diagram for explaining execution processing of the command “set # DR # packed # 64xl” by the SCU shown in FIG. 3 and the like.
  • Fig.57 explains the execution process of the command "set # DR # 64xl" by SCU shown in Fig.3 etc.
  • FIG. 5 Fig.57 explains the execution process of the command "set # DR # 64xl" by SCU shown in Fig.3 etc.
  • FIG. 58 is a diagram for explaining execution processing of a command “set # DR # 128xl” by the SCU shown in FIG. 3 and the like.
  • FIG. 59 is a diagram for explaining execution processing of a command “set # DR # 192xl” by the SCU shown in FIG. 3 and the like.
  • FIG. 60 is a diagram for explaining execution processing of a command “set # DR # 256xl” by the SCU shown in FIG. 3 and the like.
  • FIG. 61 is a diagram for explaining the command “exec” executed by the SCU.
  • FIG. 62 is a diagram for explaining the command “Branch” executed by the SCU.
  • FIG. 63 is a diagram for explaining the command “set” executed by the SCU.
  • FIG. 64 is a diagram for explaining the command “addition” executed by the SCU.
  • FIG. 65 is a diagram for explaining special commands and parameters executed by the SCU.
  • FIG. 66 is a diagram for explaining the relationship between the processing of the SCU and the processor unit.
  • FIG. 67 is a diagram for explaining command and data queue processing in the SCU.
  • FIG. 68 is another block diagram of the image processing engine shown in FIG. 2.
  • FIG. 69 is an overall configuration diagram of an image processing engine 102 according to the second embodiment.
  • FIG. 70 is a configuration diagram of PU array 202-0 shown in FIG. 69.
  • FIG. 71 is a block diagram of PEn in the second embodiment.
  • FIG. 72 is a block diagram showing a structure of SCU # 10.
  • FIG. 73 is a partial view for explaining a storage area management method by a stream control unit (SCU: Stream Control Unit) in the second embodiment.
  • SCU stream Control Unit
  • FIG. 74 is a diagram for explaining a function of performing processing related to a multiple rectangular image area set in SCU # 10.
  • FIG. 75 is a diagram showing an example of a method for defining a rectangular image area BR in the rectangular image area WIR in the storage area in the second embodiment.
  • FIG. 76 is a diagram showing an example of a method for defining the rectangular image region DR in the rectangular image region WOR in the storage region in the second embodiment.
  • FIG. 2 is an example of an input / output data control unit of the present invention.
  • the processor unit PU shown in FIG. 3 etc. is an example of the signal processing circuit of the present invention.
  • the PE shown in FIG. 4 etc. is an example of the signal processing element of the present invention.
  • a host processor 101 shown in FIG. 1 is an example of a host processing circuit of the present invention.
  • any recording medium such as a semiconductor memory, a magnetic disk, an optical disk, and a magneto-optical disk can be applied.
  • FIG. 1 is an overall configuration diagram of an image processing apparatus 100 according to an embodiment of a signal processing apparatus of the present invention.
  • the image processing apparatus 100 includes, for example, a host processor (Host CPU) 101, an image processing engine. 102, CODEC engine 103, Memory interface (iZF) 104, Memory system 105, Sensor IZF106, Camera module 107, Storage medium lZF108, Storage medium 109, Built-in display device IZF110, Built-in display device 111, and video IZF112 Have
  • the image processing apparatus 100 is characterized by control of processing threads in the image processing engine 102 by the host processor 101.
  • the host processor 101 is a processor that controls the entire image processing apparatus 100.
  • the host processor 101 operates a real-time operating system (OS), schedules various tasks executed by the image processing apparatus 100, and uses the storage medium 109.
  • OS real-time operating system
  • the image processing engine 102 is a programmable image processor, and executes image processing instructed by the host processor 101 in accordance with an application program executed by the image processing apparatus 100.
  • Image data subject to image processing includes data captured by the camera module 107 input via the sensor IZF106, data stored in the memory system 105 input via the memory IZF104, and storage medium IZF108. There are data stored in the storage medium 109 input via the data, data given from the codec engine 103, and data processed by the codec engine 103.
  • the image processing engine 102 stores its processing result in the memory system 105 via the memory IZF 104, stores it in the storage medium 109 via the storage medium IZF 108, outputs it to the codec engine 103, and outputs it to the built-in display device.
  • the image is displayed on the built-in display device 111 via the IZF 110, or output to an external device via the video IZF 112.
  • the codec engine 103 is a unit that compresses and decompresses images, Z, and audio.
  • MPEG Motion Picture Experts Group
  • MPEG-4 Motion Picture Experts Group
  • H. 264 and other video codecs H. 264 and other video codecs
  • JPEGOoint Photographic Coding Experts Group JPEG2 Realize codecs used mainly for still images such as 000.
  • the memory system 105 is a memory that stores data processed by the host processor 101, the image processing engine 102, and the codec engine 103, and a program PRG executed by the host processor 101, the image processing engine 102, and the codec engine 103. For example, use DRAM.
  • the memory I / F 104 is an interface that connects the memory system 105 and the system bus 113.
  • the camera module 107 is an apparatus including an optical system device such as a lens, an aperture, and a shutter, a CCD image sensor, an image sensor such as a CMOS image sensor, and a control unit that controls them.
  • an optical system device such as a lens, an aperture, and a shutter
  • a CCD image sensor such as a CCD image sensor
  • an image sensor such as a CMOS image sensor
  • a control unit that controls them.
  • the camera module 107 converts the imaging result into a digital signal, and then outputs the digital signal to the image processing engine 102 or the memory system 105 via the sensor IZ F106.
  • the host processor 101 or the image processing engine 102 outputs a control signal to the camera module 107 via the sensor I / F 106.
  • the storage medium 109 is, for example, a non-volatile memory such as a node disk or a flash memory, an optical disk such as a DVD (Digital Versatile Disk), or a tape-type storage medium, and is read and written via the storage medium IZF108.
  • a non-volatile memory such as a node disk or a flash memory
  • an optical disk such as a DVD (Digital Versatile Disk)
  • a tape-type storage medium and is read and written via the storage medium IZF108.
  • the built-in display device 111 displays the result of processing the image captured by the camera module 107 by the image processing engine 102 or the image data stored in the storage medium 109.
  • the built-in display device 111 displays an image corresponding to the image data input via the built-in display device IZF 110.
  • Video IZF112 transfers image data to an external image display device or image recording device. It is an interface for supplying.
  • FIG. 2 is a configuration diagram of the image processing engine 102 shown in FIG.
  • the image processing engine 102 includes a control processor (CPU) 201, a PU (processor unit) array 202—0 to 202-3, and a stream control unit (SCU) 203.
  • CPU control processor
  • PU processor unit
  • SCU stream control unit
  • the SCUs 203-0 to 3 and the PEs in the PU array 202-0 to 202-3 operate on different threads.
  • the control processor 201 is a processor that controls the entire image processing engine 102.
  • the PU arrays 202-0 to 202-3 are programmable arithmetic units, and are configured with a plurality of SIMD type processor array forces as will be described later.
  • SCU203-0 to 203-3 are used when data required by PU array 202-0 to 202-3 is read from memory system 105 via the internal bus, or PU array 202-0 to 2
  • the local memory 204-0 to 204-3 is a working memory of the image processing engine 102, and holds a part of the image data stored in the memory system 105, respectively. — Stores the intermediate results processed in 3, and stores the programs executed in PU array 202— 0 to 2 02-3 and various parameters.
  • the image processing engine 102 operates, for example, the PU arrays 202-0 to 202-3 shown in FIG. 2 with a common thread under the control of the host processor 101.
  • the common thread means, for example, that the process proceeds based on a common program.
  • the SCUs 203-0 to 203-3 are operated by threads different from the PU arrays 202-0 to 2023. [0027] [PU array 202 1 0-202 1 3]
  • FIG. 3 is a configuration diagram of the PU array 202-0 shown in FIG.
  • the PU array 202-0 has four PU-SIMD (Single Instruction Multiple Data) processing circuits # 0 to # 3.
  • PU-SIMD Single Instruction Multiple Data
  • PU—SIMD processing circuits # 0 to # 3 are connected in parallel to SCU (Stream Control Unit) 203-0.
  • the PU—SIMD processing circuit # 0 has a control unit 303-0 and four processor units PU # 00 to # 03.
  • the four processor units PU # 00 to # 03 constitute a SIMD type processor that operates with the same instructions.
  • the four processor units PU # 00 to # 03 are horizontally connected in a one-dimensional manner.
  • processor units PU # 00 to # 03 Connection between processor units PU # 00 to # 03 is limited between adjacent processor units, and I—BUS0 used for data supply from SCU203—0 is shared by four processor units, reducing wiring. And bus control can be simplified. Processor cut? 11 # 00 to # 03 are connected serially, so in image processing that frequently uses adjacent pixel data, the pixel data is output directly to the adjacent processor unit without using SCU203-0. And processing time can be shortened.
  • PU-SIMD processing circuits # 1 to # 3 have the same configuration as PU-SIMD processing circuit # 0.
  • FIG. 4 is a block diagram of the processor unit PU # 00 shown in FIG.
  • the processor unit PU # 00 includes, for example, an input line buffer (In Line Buffer) 401, a plurality of processor elements PE0 to PE15, a shared function unit (Shared Fu notion Unit) 403 shared among the PEs, and an output line buffer 404. Have.
  • In Line Buffer In Line Buffer
  • shared function unit Shared Fu notion Unit
  • the input line buffer 401 shown in FIG. 4 is connected to the input data bus I—BUS0 shown in FIG.
  • the output line buffer 404 is connected to the output data bus O-BUS0 shown in 34!
  • the shared functional units 403 and PEO-15 are connected in parallel between the input line buffer 401 and the output line buffer 404.
  • PEs 0 to 15 have connections between adjacent PEs on the left and right in the figure, and can exchange data between adjacent PEs.
  • each processor unit PU has 16 processor elements PE, and each PU-SIMD processing circuit has 4 processor units PU.
  • Each of the PU arrays 202-0 to 202-3 is composed of PE.
  • the processor units PU have the same connection as the processor elements PE in FIG.
  • the rightmost PE15 in a certain processor unit PU is connected to the leftmost PE0 in the right processing unit.
  • PE15 shown in FIG. 4 of processor unit PU # 01 shown in FIG. 3 is connected to PE0 shown in FIG. 4 of processor unit PU # 02 shown in FIG.
  • the processor elements PE0 to PE15 are configured so as to be able to directly input and output data only between adjacent PEs, so that the wiring structure can be greatly simplified.
  • the number of accesses to the storage area can be reduced by sharing pixel data input / output between adjacent PEs 0-15.
  • Each of the processor elements PE0 to PE15 performs an operation using the data read from the input line buffer 401 and writes the operation result in the output line buffer 404.
  • the SCU 203_0 reads the operation result from the output line buffer 404.
  • the PU array 202-0 can operate the four PU-SIMD processing circuits # 0 to # 3 independently in parallel or in series.
  • the motion control is S CU203 — 0 force Input data bus I— Realized by switching between BUS0-3 and output data bus O— BUS0-3.
  • the control unit 303-0 shown in FIG. 3 has an instruction storage memory (not shown), and sends a control signal obtained by decoding an instruction read from the instruction storage memory to the PU-SI MD # 0. Output to all PEs of.
  • the control unit 303-0 includes a program flow control not-shown register (not shown) and a pointer register for accessing a stream register in the PE described later.
  • the loop register is a register for controlling the number of loops in the program, and can be set by a force set by the control processor 201 or by an instruction at the time of program execution.
  • the register value in the PE can be specified as the source operand.
  • the register value of a predetermined PE among the plurality of PEs for example, the leftmost PE in the figure, for example, PE0 of the processor unit PU # 00 is used.
  • the register value of a specific PE is used as in the case of the force loop register that can specify the register value in the PE as the source operand.
  • Data captured by the image sensor in the camera module 107 is read out for each horizontal scan line via the sensor I / F 106, output to the image processing engine 102, and stored in the memory system 105. . At this time, the image processing engine 102 executes part of the detection processing.
  • the image processing engine 102 When image data for one frame is stored in the memory system 105, the image processing engine 102 efficiently operates the internal PU-SIMD processing circuit in parallel. While reading out the area, the rest of the detection process, various camera signal processes, and various image processes are executed. The processing result of the image processing engine 102 is stored in the memory system 105.
  • the image processing engine 102 also performs resolution conversion.
  • the resolution-converted image data is displayed on the built-in display device 111 via the built-in display device IZF110.
  • the codec engine 103 performs image compression using a plurality of frames of image data processed by the image processing engine 102 stored in the memory system 105.
  • the compressed image data is recorded on the storage medium 109 via the storage medium IZF108.
  • the image processing engine 102 includes a plurality of PU arrays 202-0 to 202-3. Each PU array 202-0 to 202-3 processes a different area in the frame. To do. When configured with four PU arrays 202-0 to 202-3 as in the present embodiment, an area can be allocated to each PU array 202-0 to 202-3, for example, as shown in FIG.
  • Each of the PU arrays 202-0 to 202-3 has a plurality of PU SIMD processing circuits composed of 64 PEs as described above. For example, as shown in FIG.
  • the area assigned to —3 can be further divided into a rectangular image area with a width of 64 pixels, and each pixel can be assigned to one PE.
  • each PE processes its assigned vertical pixel sequence in order.
  • each PE in the PU array 202-0 has a 5 ⁇ 5 pixel centered on the pixel position Pixel in order to filter the pixel data of the pixel position Pixel to be processed. Pixel data at the pixel position is used.
  • Each PE in the PU array 202-0 moves the pixel position to be processed in the order of the arrow shown in FIG. 8 (downward in the figure).
  • the SCU203-0 stores the pixel data at the pixel position for the next line as shown in FIG. Read from local memory 204-0 or memory system 105 and write to input line buffer 401 of processor unit PU in PU array 202 0 shown in Figure 4 Then, as shown in FIG. 10, each PE in the PU array 202-0 performs 5 ⁇ 5 pixel filtering of the pixel data at the next pixel position Pixel—next.
  • PU-SIMD # 0 shown in FIG. 3 has been mainly described, PU-SIMD # 1 to # 3 are the same as PU-SIMD # 0.
  • the PU arrays 202-1 to 202-3 are the same as the PU arrays 202-0.
  • PEO is the same as PEn except that PE inputs and outputs data only with PE1 and PE15 inputs and outputs data only with PE14.
  • FIG. 11 is a block diagram of PEn shown in FIG.
  • PEn includes multiplexers MUX1000 to L005, stream registers SRO, SRI, SR2, various registers such as registers inO and inl, and an arithmetic logic unit ALU.
  • PEn transfers data or control flags from the input line buffer 401 to the stream registers SRO, SRI, SR2, and sends data from the stream registers SRO, SRI, SR2 to a part of the arithmetic logic unit registers. Alternatively, a control flag is captured.
  • the arithmetic logic unit register group is used as a temporary storage destination, and the arithmetic result is written in the output line buffer 404.
  • the input line buffer 401 has data and control flags, and each has 16 bits and 4 bits per PE.
  • the output line buffer 404 has the same data and control flags as the input line buffer 401, with 16 bits and 4 bits per PE, respectively.
  • the data length of the stream registers SRO and SR1 is 16 bits, and the data length of the stream register SR2 is 4 bits.
  • the stream register SR2 power bit is used because the stream register SR2 is mainly used for storing control flags, and the cond level of the arithmetic logic unit register group is used. It is the same as the data length of the register.
  • the stream registers SRO, SRI, SR2 are mainly used to store data required for operations supplied from the SCU203-0 through the input line buffer 4001, and to temporarily save the operation results. Reference by pointer is possible.
  • each pointer has a Start value that indicates the start point of the pointer definition area, an End value that indicates the end point of the pointer definition area, and the current pointer. It has three values of Current value indicating the position.
  • the stream registers SRO, SRI, SR2 configured as described above use, for example, two types of pointers, the first pointer being a write (WRite) pointer, and the second pointer being a read pointer.
  • the stream register can be used as a FIFO (First-In First-Out) by repeatedly writing data and incrementing the write pointer, and repeatedly reading the data of the entry that has been written and incrementing the read pointer. is there.
  • the number of entries in the stream registers SRO, SRI, SR2 is 16.
  • the stream registers SR0 and SR1 are concatenated to create a 32-entry stream register. Since it operates as a 32-entry stream register SRO in the linked mode, only the stream register SRO pointer can be used and the stream register SR1 cannot be referenced! /.
  • Normal mode and linked mode are set by a predetermined method before execution of all instructions, and cannot be changed during sequential execution of instructions.
  • the index before and after the wraparound process to the entries in the stream registers SRO, SRI, and SR2 is set to idx and idxw, respectively.
  • the two wraparound methods are specified by adding them to the stream register reference command.
  • idxw (EN X (l -idx / EN) + idx)% EN;
  • Registers belonging to the arithmetic logic unit register group are registers that can be specified as source operands or destination operands of operations performed in PEO.
  • Registers inO and inl are input registers with a data length of 16 bits and store the contents read by the stream register. Can be specified as the source operand of arithmetic and logic instructions, but cannot be specified as the destination operand! /. Registers temp0 to 3 and temps are temporary save registers with a data length of 16 bits.
  • the register temps is a register used when using the shared functional unit 403, which will be described later, and is used as a working register in the same way as the registers temp0 to 3 except when accessing the shared functional unit 403. it can.
  • These registers are registers that can be specified for both the source and destination operands of arithmetic and logical operation instructions.
  • Acc.HZU is mainly used for cumulative addition instructions, and is a 32-bit cumulative addition register with a combined data length. Can be specified for both source and destination operands of arithmetic and logic instructions. Of the 32 bits, the upper 16 bits are used as register acc.H and the lower 16 bits are used as register ac ⁇ .
  • the register cond is a condition register having a data length of 4 bits, which is mainly used when performing conditional execution. It can be specified as the destination operand of arithmetic logic operation. In that case, any one bit of the operation result, the operation result in the arithmetic logic unit ALU, the carry flag indicating that the carry has been set, or the operation result power Specifies which one of the zero flags indicating ⁇ and which bits of the condition register are reflected.
  • the register penum is a processor number register that stores its own processing element number (0 to 63) and has a data length of 6 bits, and is read-only.
  • the register const is a constant register with a data length of 16 bits to store the constant value, and the number of entries is 64.
  • the constant register is not provided for each processing element, but is provided in the shared function unit 403.
  • PU A single entry common to all PEs in the SIMD processing circuit is specified and used. Power arithmetic Since it can be directly specified as the source operand of a logical operation, it is included in the register group for the arithmetic logic unit.
  • the relevant PE #n can refer to the registers in0, inl, ac H, ac ⁇ of the adjacent PE # n—l, # n + l, not just the registers in the relevant PE #n when performing the operation. is there.
  • PE #n in order to increase the operation efficiency in the arithmetic logic unit ALU, the arithmetic processing in the arithmetic logic unit ALU and the load or store to multiple registers can be executed simultaneously. Yes.
  • Conditional execution of an instruction specifies an arbitrary bit of the register cond that mainly stores the control flag, executes the instruction when the value is 1, and does not execute the instruction when the value is 0. Is the action.
  • Arithmetic logic operations that can be executed by the arithmetic logic unit ALU in PE #n are shown in Table 1 below. The reciprocal is realized using the look-up table function of shared function unit 403, which will be described later.
  • the bit number instruction is an instruction that returns the bit number where 1 appears first, counting from the 16 most significant bits of the source. It is.
  • each PE is in charge of a vertical pixel data string, and writes the result of weighted addition to neighboring pixel data back to the local memory 204 or the memory system 105.
  • weighted addition is applied to 15 pixel data 00 01 02 10 11 12 20 21 22 30 31 32 40 41 42 in the area 801. Pixel data at the positions of 802 and 802 are calculated.
  • PE # n is the PE in charge of the vertical pixel data sequence including the pixel data at the position 802 shown in Fig. 13
  • the vertical 3 pixel data of pixel data 20 21 22 is a stream of PE #n as shown in Fig. 14.
  • Register SRO is held, and pixel data 10 11 12 is stored in the adjacent processor.
  • the subelement PE # (nl) and pixel data 00, 01, 02 are further held in the stream register SR0 of the adjacent processor element PE # (n-2)!
  • the pixel data 30, 31 and 32 are stored in the stream register SR0 of PE # (n + l), and the pixel data 40, 41 and 42 are stored in the stream register SR0 of PE # (n + 2)!
  • each stream register SR0 and SRI is defined as one pointer as a read pointer, one pointer as a write pointer, and the stream register is used as a FIFO. In the figure, the position of the read pointer is schematically shown at the bottom.
  • data can be loaded from both stream registers SRO and SR1 into the register inO.
  • data can be loaded from both stream registers SR0 and SRI into register inl.
  • the stream register SRO, SRI, SR2 can write data from the adjacent PE registers inO, inl, acc.HZL. Can be included.
  • the circuit scale increases, writing from both may be possible.
  • the pixel data at the current value of the read pointer in the stream register SR0 is written into the register inl. That is, in the case of PE #n, pixel data 20 is written into the register inl.
  • the arithmetic logic unit ALU reads the pixel data value written in the register inl as the source operand and multiplies the coefficient.
  • the coefficients necessary for the operation are stored in the register const, which is a constant register.
  • the pixel data stored in the stream register SR1 is sequentially processed.
  • the read pointer is incremented when reading from the stream register SR1.
  • the stream register S R1 cannot be written from the register inO. Therefore, while processing the pixel data stored in the stream register SR1, the pixel data stored in the stream register SRO is passed to the stream register SR1 of the adjacent PE on the left, as shown in FIG. In addition, the pixel data of the stream register SRO is written into the register inl, and the pixel data of the stream register SR1 is written into the register inO. At this time, the read pointers of both stream registers SRO and SR 1 are incremented. The arithmetic logic unit ALU reads the pixel data value written in the register in 0 as a source operand and multiplies the coefficient.
  • the state shown in FIG. 21 is obtained.
  • the stream register SR1 stores the pixel data stored in the stream register SRO of the right adjacent PE.
  • the stream register SR1 writes to the register inl again, the pixel data value written to the register inl and the coefficient are multiplied, and the stream register SR1 held by the PE on the left from the register inl Write to the in parallel.
  • the state shown in FIG. 23 is obtained.
  • the filtering process of the pixel data included in the 5 ⁇ 3 area indicated by 801 in FIG. 13 is completed.
  • the pixel data data of the next line has been written to the input line buffer 401 from the SCU 203-0.
  • the pixel data of the next line is loaded from the input line buffer 401 to the stream register SRO, and the result of the filter processing is written to the output line buffer 404.
  • the SC U203-0 reads the operation result written in the output line buffer 404 and writes it back to the local memory 204 or the memory system 105.
  • data can be efficiently transferred between adjacent PEs using the stream registers SRO and SR1, and the arithmetic logic Data can be supplied to the unit ALU without interruption, and the frequency of reading from the local memory 204-0 is reduced by sharing data between adjacent PEs.
  • the processor unit PU # 00 includes the shared function unit 403.
  • the shared functional unit 403 is used for operations other than the arithmetic instructions that can be executed by the arithmetic logic unit ALU shown in FIG. 11 of PE # 0 to 15 shown in FIG.
  • Processor element PE # 0-15 uses a function call instruction to use shared functional unit 403. At that time, PE # 0 to 15 outputs a request that is designated by adding a function identification number that is predetermined to correspond to an available function, which will be described later, to the command, to shared function unit 403.
  • PE # 0 to 15 sets the necessary data in the register specified as the source operand and executes the function call instruction, the result is returned to the register temps after a predetermined latency.
  • the register specified as the source operand cannot be rewritten until the reference result is written back.
  • the shared functional unit 403 has functions such as a lookup table 1202, an addition computing unit 1203, a maximum / minimum value computing unit 1204, and a vector computing unit 1205.
  • the look-up table 1202 is a function that is shared among a plurality of processor elements (PE) and whose latency is variable depending on the number of entries.
  • the adder 1203 is a function that receives data with a plurality of PE powers, and the latency is variable depending on the number of data.
  • the maximum / minimum value calculator 1204 receives a plurality of PE force data and has a variable latency depending on the number of data.
  • the vector operation unit 1205 is a function whose latency is variable depending on dimensions.
  • the lookup table 1202 can be used not only as a single table of 1024 entries but also by changing the number of entries such as 512 entries and 256 entries.
  • the lookup table 1202 can hold a plurality of types of tables other than just one type.
  • the look-up table 1202 can store the reciprocal table and the log table in different areas of 1024 entries.
  • lookup table 1202 is shared by 16 PEs, when 1024 entries are used as a single table, the number of cycles required for reference is 16.
  • 17 is the latency of the lookup table 1202 with 1024 entries.
  • the number of PEs sharing one table decreases, so the number of cycles required for reference also decreases. For example, in the case of a 256-entry table, it is shared by four PEs, so the number of cycles required for reference is 4, and the latency is 5.
  • the configuration of the lookup table 1202 is set by the shared functional unit 403 before executing the program.
  • the adder 1203 When the adder 1203 inputs data from a plurality of PEs, it outputs the total value of the data to the PE that has output the data after a predetermined latency.
  • the shared functional unit 403 has one addition computing unit 1203 and is shared by 16 PEs, the number of cycles required for computation is 16. In addition to this, 17 is the latency of the adder 1203, which adds up to one cycle of access delay.
  • the shared functional unit 403 has two adder calculators 1203, each of which is shared by eight PEs, the number of cycles required for the calculation is eight. 1 cycle access delay 9 is the latency of the adder 1203.
  • the configuration of the plurality of addition computing units 1203 is set by the shared function unit 403 before executing the program.
  • the maximum / minimum value calculator 1204 When the maximum / minimum value calculator 1204 receives data from a plurality of PEs, the maximum and minimum values of the data are output to the PE that has output the data after a predetermined latency. If the shared functional unit 403 has one maximum / minimum value calculator 1204 and is shared by 16 PEs, the number of cycles required for calculation is 16. The latency of the maximum / minimum value calculator 1204 is 17 with an access delay of one cycle added to this.
  • the shared functional unit 403 has two maximum / minimum value calculators 1204 and each of them is shared by eight PEs, the number of cycles required for the calculation is eight. 9 is the latency of the maximum / minimum value calculator 1204, which includes an access delay of 1 cycle.
  • the configuration of the plurality of maximum / minimum value calculators 1204 is set by the shared function unit 403 before executing the program.
  • the vector operation unit 1205 performs a vector operation with the number of data input by a plurality of PE forces as a dimension, and outputs the result to the PE that has output the data after a predetermined latency.
  • Equation (1) below is a two-dimensional vector operation with two PEs, so the number of cycles required for the operation is three. 3 is the latency of vector operation unit 1205, which accounts for one cycle of access delay.
  • the number of cycles required for the operation is four because it is a four-dimensional vector operation using four PEs in the following equation (2).
  • 5 is the latency of vector computation queue 1205, which accounts for one cycle of access delay.
  • SCU203-1 to 203-3 are the same as SCU203-0.
  • SCU203-0 performs processing of individual processor elements PE constituting the plurality of PU-SIMD (Single Instruction Multiple Data) processing circuits # 0 to # 3. It performs control to input / output data necessary for data efficiently.
  • PU-SIMD Single Instruction Multiple Data
  • the SCU 203-0 stores data necessary for processing in a storage device represented by a semiconductor memory or the like.
  • PU—SIMD processing circuits # 0 to # 3 are SIMD type processors, input / output to all PEs is performed simultaneously in time. Therefore, input / output to / from PU-SIMD # 0 to # 3 by SCU203-0 simultaneously inputs / outputs data for the number of PEs.
  • data input / output simultaneously is referred to as stream data.
  • the PU-SIMD processing circuits # 0 to # 3 mainly process image information, but the image information to be processed is managed by a physical one-dimensional address in a storage device such as a memory. A logical two-dimensional storage area is secured and stored in the processed storage area.
  • the basic unit of the image data is called pixel data.
  • SCU203-0 is located between PU-SIMD processing circuits # 0 to # 3, memory system 105 and oral memory 204-0, and converts multiple pixel data into stream data for input / output have.
  • D SCU203 0 has local memory 2040 or memory system 105 (hereinafter referred to as memory (Also referred to as area), and the data is converted into stream data required by PU—SIMD # 0 to # 3 and output to PU—SIMD # 0 to # 3.
  • memory Also referred to as area
  • SCU203-0 converts the output stream data output by PU-SIMD # 0 to # 3 into a data format required inside the storage area, and writes and transfers it to the storage area.
  • the storage area of SCU203-0 is a semiconductor memory used as a work area, and the storage area is included in SOC (System On Chip) together with SCU203-0, or it is included outside SOC. Can be assumed.
  • SOC System On Chip
  • SCU203-0 When SCU203-0 accesses the above storage area, it can be accessed from SCU203-0 as a one-dimensional physical address.
  • the data in the storage area is expressed in logical two-dimensional coordinates for ease of program development and handling of image information in PU-SIMD processing circuits # 0 to # 3. It is possible to treat the arrayed pixel data as a unit.
  • the number of pixel data in one word data and the pixel data array when viewed in two-dimensional coordinates are variable depending on the type of memory used, and SCU203-0 can handle multiple pixel data arrays. .
  • the storage area of SCU203-0 requires setting for read access to the storage area and data conversion in units of PU-SIMD processing circuits # 0 to # 3 connected to SCU203-0. This can be done by writing the setting from the host processor 101 to a register in the SCU203-0.
  • SCU203-0 sets the following items to perform read access to the storage area.
  • First start address that specifies a plurality of rectangular image areas included in the storage area.
  • First start address force The width of the second plurality of rectangular image areas contained in the starting storage area and specified by two-dimensional logical coordinates.
  • the stream data required by PU—SIMD processing circuits # 0 to # 3 is selectively read out from the data in the third rectangular image area and subjected to processing such as rearrangement and calculation. Specify the method to convert to.
  • SCU203-0 sets the following execution to perform WRite access to the storage area.
  • a fourth start address that, when included in the storage area, specifies multiple rectangular image areas.
  • Stream data output by PU—SIMD processing circuits # 0 to # 3 is selectively read out from the data in the sixth rectangular image area, and processing such as rearrangement and calculation is performed. Specification of the method of writing to the data format inside the 6 rectangular image area.
  • SCU203-0 realizes data transfer between a plurality of storage areas.
  • the host processor 101 which is a controller that can control the SCU203-0, via an interface for communication.
  • Figure 26 shows the case of WRite PU-SIMD processing circuit # 0 to # 3 stream data from multiple rectangular image areas on the storage area, and the multiplexing on the storage area from PU-SIMD processing circuits # 0 to # 3. The operation when stream data is written to a rectangular image area is shown.
  • the SCU 203-0 designates the rectangular image area WR as a work area in the storage area.
  • SCU203 0 uses the rectangular image area WR for each PU SIMD processing circuit # 0 to # 3. Is specified.
  • the SCU 203-0 designates the rectangular image area AR from which the pixel data is read out in the rectangular image area WR.
  • the SCU 203-0 designates the rectangular image area BR in the rectangular image area AR.
  • SCU203-0 is a data conversion command that converts pixel data read from the rectangular image area BR into stream data required by the PU-SIMD processing circuits # 0 to # 3 based on the program input from the host processor 101. Execute (specify) WI # data # op.
  • the SCU 203-0 can program a series of iterative processes designated by the rectangular image areas AR, BR, WI-data-op.
  • the SCU 203-0 designates the rectangular image area CR that is the pixel data writing destination in the rectangular image area WR.
  • the SCU 203-0 designates the rectangular image region DR in the rectangular image region CR.
  • the SCU 203-0 executes a data conversion command WO # data # op from the output stream data of PU—SIMD # 0 to # 3 to the rectangular image area DR.
  • the SCU 203-0 can program a series of repetitive processes in the rectangular image areas CR, DR, and WO-data-op designation.
  • the rectangular image areas AR, BR, CR, and DR can be arranged and moved to arbitrary positions in the rectangular image area WR.
  • the SCU203-0 can specify the rectangular image areas AR, BR, CR, and DR in the rectangular image area WR by two-dimensional logical coordinates.
  • the SCU203-0 can specify the rectangular image area WR with a physical address for the storage area.
  • SCU203-0 converts the logical address to the physical address because the storage area must be accessed when the pixel data in the rectangular image area WR, AR, DR, CR.DR is accessed. Go to access the storage area.
  • FIG. 27 is a diagram for explaining a function of performing processing related to the multiple rectangular image area set in the SCU203-0.
  • each of SCU203 and PU SIMD processing circuits # 0 to # 3 Each of the rectangular image areas WR0 to WR3 in the storage area is allocated.
  • the rectangular image areas WRO to 3 are defined in storage areas such as the memory system 105 and the local memory 204-0.
  • rectangular image areas AR0-7, BR0-7, CRO-3, DRO-3 are defined.
  • the SCU 203-0 shown in FIG. 27 converts the data in the rectangular image area BR into stream data by WI-data-op, and writes it to the output buffer out-buf.
  • the SCU203-0 converts the stream data input from the PU-SIMD processing circuits # 0 to # 3 and stored in the input buffer in # buf by the data conversion command WO # data # op! WRite the rectangular image area DR.
  • the ability to express the number of rectangular image areas and the number of layers specified for multiple designation with specific numbers can be freely combined, and the configuration can be configured according to the need for a wide range of image processing. It is possible to change.
  • the system bus 113 shown in FIG. 1 connects SCU203_0 to other processing modules such as the host processor 101 and the memory system 105, and has the following characteristics.
  • the system bus 113 can adopt a bus standard standardized in LSI and SOC.
  • the bus width of the system bus 113 is 128 bits, and the bus use efficiency can be improved by adopting a configuration capable of continuous data transfer (burst transfer).
  • SCU2 03 For the storage device (for example, memory system 105) on the system bus 113, SCU2 03—0 accesses as bus master.
  • a bus master other than the SCU203-0 on the system bus 113 accesses an internal register of the SCU203-0 and an SCU dedicated storage device (for example, the local memory 204-0).
  • the system bus 113 can be selected regardless of the bus standard as long as the data transfer efficiency and functions are satisfied.
  • the SCU 203-0 can be connected to a dedicated storage device as a dedicated storage area.
  • the dedicated memory can be selected whether the semiconductor memory such as SRAM or DRAM is inside or outside the SOC.
  • the dedicated storage device is connected to a bus having a wider bandwidth than the system bus 113.
  • the dedicated storage device is prepared for the exclusive use of one SCU203-0.
  • the dedicated storage device can be accessed from the bus master on the system bus 113.
  • PU-SIMD processing circuits # 0 to # 3 are bus-connected to the SCU203-0.
  • Stream data input from SCU203-0 to PU-SIMD processing circuits # 0 to # 3 uses a 256-bit unidirectional bus for each PU-SIMD processing circuit, and the transfer efficiency is 256 bits / clock.
  • a 2-wire handshake is used as the data / transfer protocol.
  • An output buffer out-buf is prepared inside SCU203-0.
  • the PU-SIMD processing circuit internal register is identified by specifying an address for PU-SIMD processing circuit # 0 to # 3.
  • Stream data input from PU—SIMD processing circuits # 0 to # 3 to SCU203—0 uses a 256-bit unidirectional bus for each PU—SIMD, and transfer efficiency is 256 bits / clock. A two-wire handshake is used. An input buffer in-buf for input is prepared in SCU203-0.
  • the PU-SIMD processing circuit internal register is identified.
  • SCU203-0 is a two-dimensional logical address force physical address when performing Read or WRite for the pixel corresponding position Pixel specified in the rectangular image area AR, BR, CR, DR in the rectangular image area WR. Address conversion to.
  • an arbitrary pixel corresponding position in the rectangular image region WR is defined as pixel (x, y).
  • x and y are two-dimensional logical addresses.
  • the physical address (adrs) of the pixel corresponding position L— Pixel (x, y) is calculated as follows.
  • the bit position occupied by the pixel corresponding position L—Pixel (x, y) is expressed as Word [a: b]. (However, a and b are the bit range composing pixel within word.)
  • Ww is the width (X direction) of the rectangular image area WR in units of pixel positions.
  • the number of pixels in the X direction in one word data (lword) is pw.
  • ph is the number of pixels in the y direction in one word.
  • n is a value for calculating the bit position in lword.
  • WR # bp is an address indicating the start of the rectangular image area WR within the storage area
  • one pixel is represented by 16 bits, it is possible to adopt other values for the bit length.
  • Int () indicates an integer that does not exceed the value in Katsuko.
  • n (y mod ph) * pw + (x mod pw) (4)
  • FIG. 28 is a diagram for explaining physical logical address conversion by the SCU 203-0.
  • a rectangular image area WR is defined in the physical address space ADRS of the memory system 105 and the local memory 204-0.
  • SCU203-0 uses lword as the access unit by one physical address.
  • WR # bp + is the start address of the rectangular image area WR.
  • ww is the width of the rectangular image area WR, and is a pixel-corresponding position Pixel unit and a multiple of pw.
  • the pixel corresponding position L-Pixel in the address space ADRS can be specified by a two-dimensional logical address.
  • Pw shown in FIG. 28 indicates the number of pixels (number of pixel data) in the X direction in lword.
  • Ph shown in FIG. 28 indicates the number of pixels in the y direction in lword.
  • the storage area is managed with a two-dimensional logical address, so that an arbitrary rectangular image area in the storage area is accessed as in the conventional scan line method. Processing (deadline detection processing) is not required, and programming is simplified.
  • the SCU 203-0 uses the memory system 105, which is a large-scale external storage device connected to the system bus 113, and the local memory 204-0, which is a small dedicated storage device, as storage areas. Can do.
  • the memory system 105 is, for example, a DRAM-CHIP connected to the outside of the SOC including the SCU203-0, and is a memory chip such as a general DDR or RAMBUS.
  • the local memory 204-0 is, for example, SRAM in the SOC including the SCU 203-0 or e DRAM (Embeded-DRAM: On-chip DRAM included in the same SOC as the SCU).
  • DRAM has a hierarchical structure of addresses such as Raw / Column / bank, and continuous data access included in the same Raw is fast. Continuous data access across Raw boundaries and remote Raw The continuous access between them requires a procedure such as page precharge, so it is slow.
  • the SCU 203-0 is a power SRAM using DRAM as the memory system 105 and the local memory 204-0, for example.
  • DRAM dynamic random access memory
  • the rectangular image arrangement of the pixel data in the storage area is arranged in the same page as much as possible when generating stream data. By doing so, it is possible to take measures to reduce the discontinuity of DRAM access as much as possible.
  • This idea can be easily realized by giving the following restrictions to the values of bp and ww in the previous physical logical address translation, for example.
  • the SCU 203-0 can define the rectangular image areas AR and BR as the multiple rectangular image areas in the two-dimensional logical address expression in the rectangular image area WR in the storage area as shown in FIG.
  • ww is the width of the rectangular image area WR in the X-direction rectangular image area.
  • ax and ay indicate the two-dimensional coordinates of the rectangular image area AR in the rectangular image area WR. This is, In the coordinate system with the origin (0,0) at the upper left of the rectangular image area WR, the coordinates of the pixel corresponding position Pixel at the upper left of the rectangular image area AR are shown.
  • aw and ah indicate the width and height of the rectangular image area AR.
  • bw and bh indicate the width and height of the rectangular image area BR.
  • X and y indicate the two-dimensional coordinates of the pixel corresponding position Pixel in the rectangular image area BR. This is a coordinate system with the origin (0,0) at the top left of the rectangular image area BR.
  • the SCU 203-0 can specify the rectangular image region BR so as to deviate from the rectangular image region AR as shown in FIG. 30 by adjusting the values of bx, by and bw, bh.
  • the SCU 203-0 can output stream data to the PU-SIMD processing circuits # 0 to # 3 in various forms.
  • the rectangular image area BR can be set by deviating from the rectangular image area AR.
  • the SCU 203-0 sets the value of the pixel data Pixel corresponding to the deviated area to a preset value (COL).
  • the SCU 203-0 determines the pixel data Pixel (X, y) in the rectangular image area BR using the pixel data AR () in the rectangular image area AR as shown in the following equation (7).
  • SCU203-0 deviates from the rectangular image area AR when BR mode 2 is set. It is possible to set the rectangular image area BR.
  • the SCU 203-0 controls so that when the rectangular image area BR deviates from the rectangular image area AR in the X direction, the departure area is folded inside the rectangular image area AR.
  • SCU203-0 indicates that if the rectangular image area BR deviates from the rectangular image area AR in the X direction and the Y direction, it will not be folded back into the rectangular image area AR. Is (COL).
  • the SCU 203-0 determines the pixel data Pixel (X, y) in the rectangular image area BR using the pixel data AR () in the rectangular image area AR as shown in the following equation (8).
  • SCU203-0 does not guarantee the value of the pixel data Pixel (X, y) in the deviating area.
  • SCU203-0 supports 3 pixels inside the rectangular image area AR when the rectangular image area BR is set in the area corresponding to 2 pixels from the outer circumference of the rectangular image area AR. Clamp operation to set the pixel data Pixel (X, y) corresponding to the pixel in the rectangular image area BR of the position as pixel data Pixel (X, y) corresponding to the two pixels from the outer periphery of the rectangular image area BR I do.
  • Pixel data Pixel (X, y) in the rectangular image area BR is defined by the following equation (9).
  • the SCU 203-0 When the rectangular image area BR is positioned inward by a position corresponding to one pixel from the outer periphery of the rectangular image area AR, the SCU 203-0 performs a clamping operation as shown in FIG.
  • the outer periphery of the rectangular image area is outside the rectangular image area. Pixel data can be appropriately substituted.
  • the SCU203-0 reads out the pixel data Pixel (X, y) in the rectangular image area BR force and converts it into a data stream (by performing input data conversion processing). Input 0 ⁇ # 3.
  • the SCU 203-0 can specify the contents of the conversion for each of PU-SIMDs # 0 to # 3.
  • the SCU203-0 has an output buffer out-buf corresponding to each PU-SIMD # 0 to # 3.
  • the SCU 203-0 includes a register for designating the rectangular image area BR.
  • the SCU203-0 includes an input buffer in-buf corresponding to each PU-SIMD # 0 to # 3.
  • the SCU203-0 reads out the pixel data Pixel (X, y) for the rectangular image area BR force, and after performing data conversion processing such as rearrangement, the output data shown in FIG. Buffer out—write to buf.
  • the SCU 203-0 writes the register value designating the rectangular image area BR to the output buffer out-buf as stream data.
  • the SCU203-0 also reads out the pixel data Pixel (X, y) for the rectangular image area BR force, performs data conversion processing such as rearrangement, and then writes it to the register that designates the rectangular image area BR in the SCU203-0.
  • the SCU203-0 performs data conversion processing on the data read from the input buffer in-buf, and then writes it as stream data to the output buffer out-buf.
  • the SCU203-0 performs, for example, the input data conversion command shown in Table 2 below as the input data conversion process described above, that is, the conversion process to the data stream for writing to PU-SIMD # 0 to # 3. To perform input data conversion processing.
  • the SCU 203-0 inputs and executes an input data conversion command from the host processor 101 shown in FIG.
  • SCU203-0 can specify the dependent parameters shown in Table 3 in each input data conversion command shown in Table 2.
  • the SCU203-0 executes the input data conversion command “set # BR # lof4x4 # same” from the host processor 101, as shown in FIG. 34, one pixel in the rectangular image area BR specified by the dependent parameter Corresponding position force Read out pixel data Pixel and duplicate it to generate pixel data Pixel (0, ... 63). After selecting the bit in the pixel data, it is output through the output buffer out-buf PU — Input to SIMD processing circuits # 0 to # 3.
  • SCU203-0 specifies the rectangular image area BR at the position corresponding to 4x4 pixels by the dependent parameter BRftium.
  • SCU203-0 includes multiplexers MUXl and MUX2 and a logic circuit LOG1 Multiplexer MUX1 determines the dependent parameter yse from the specified rectangular image area BR. 1 reads out pixel data Pixel at a position corresponding to four pixels in the x direction.
  • the multiplexer MUX2 selects one pixel data Pixel from the read four pixel data Pixel 1 in the X direction according to the dependent parameter xsel and outputs it to the logic circuit LOG1.
  • the logic circuit LOG1 writes the 64 pieces of pixel data Pixel, each indicating the selected pixel data Pixel, to the output buffer out-buf according to the dependent parameter wsel.
  • the logic circuit LOG1 uses the dependent parameter wsel to store the 64 pixel data Pixel as it is in the output buffer out—buf, or pack 4 bits from the LSB of each pixel data Pixel and store it in 16 pixel data Pixel Decide what to do.
  • SCU203-0 performs load control for each 4-pixel data Pixel according to the dependent parameter Id [set # bxy]
  • the left end of the rectangular image area BR selected by the dependent parameter XS el, y S el Duplicate the coordinates (bx, by) by 32 to generate 64 pixel data stream data, select the bit inside the pixel data by the dependent parameter wsel, and set it to the output buffer out_buf by the dependent parameter Id .
  • the SCU 203-0 includes registers by0 to 7 that specify a value in the y direction of the rectangular image area BR and registers bx0 to 7 that specify a value in the x direction.
  • the SCU 203-0 has eight multiplexers MUX11.
  • Each of the multiplexers MUX11 selects one of the corresponding register by value and the register xy value by the dependent parameter ysel and outputs the selected value to the multiplexer MUX12.
  • the SCU203-0 includes two multiplexers MUX12.
  • the multiplexer MUX12 selects one of the values input from each of the four multiplexers MUX11 according to the dependent parameter xsel and outputs it to the logic circuit LOG31.
  • the logic circuit LOG31 has the power to write 64 pixel data directly into the output canoffer buf by the dependent parameter wsel! /, Packs 4 bits from the LSB of each pixel data Pixel and stores it in 16 pixel data Pixel Decide what to do.
  • the SCU 203-0 performs load control from the output buffer out-buf to PU-SIMD # 0 to # 3 for each 4-pixel data Pixel according to the dependent parameter Id.
  • the left end coordinates of the rectangular image area BR are output to the PU—SIMD processing circuits # 0 to # 3 in the PU processing of the PU—SIMD processing circuits # 0 to # 3. This is because the coordinates are used for processing.
  • the left end coordinate of the rectangular image area BR is stored as pixel data in the rectangular image area BR.
  • the SCU (Stream Control Unit) 203-0 executes the input data conversion command “set # BR4567 # lof4x4” from the host processor 101, for example, as shown in FIG. 37, the sub-parameters xsel, ysel One pixel data is read from each of the four rectangular image areas BR by MUXl and MUX2, and this is output to the logic circuit LOG51.
  • the logic circuit LOG51 writes the pixel data input from the SCU203-0 to a predetermined bit position of the output buffer out-buf according to the dependent parameter wsel.
  • the logic circuit LOG51 has the power to write 64 pixel data as it is to the output canoffer buf by the dependent parameter wsel! /, Packs 4 bits from the LSB of each pixel data Pixel and stores it in 16 pixel data Pixel Decide what to do.
  • SCU203 0 controls load from output buffer out buf to PU SIMD # 0 to # 3 Is performed with the dependent parameter Id for every 4 pixel data.
  • the memory indirect address is realized by using the coordinates set by “set # BR # 8xl # to #bxyj” as the left end coordinates of the four rectangular image areas BR.
  • Each of the input buffers in—buf (n), (n—1) has a size of 1 (height) ⁇ 64 (width) pixel data.
  • SCU203-0 is equipped with 64 multiplexers MUX1!
  • Each of the 64 multiplexers MUX1 selects one of the two corresponding pixel data of the input buffer in—buf ( ⁇ ), ( ⁇ —1) by the dependent parameter ysel and selects the logic circuit L
  • the logic circuit LOG61 has the power to write 64 pixel data as it is to the output canoffer out-buf according to the dependent parameter wsel! /, Packs 4 bits from the LSB of each pixel data Pixel and stores it in 16 pixel data Pixel Decide what to do.
  • the SCU 203-0 performs load control from the output buffer out-buf to the PU-SIMD processing circuits # 0 to # 3 by the dependent parameter Id for every four pixel data.
  • the input data conversion command “set # in # buffistraight” enables data input / output between PU-SIMD processing circuits # 0 to # 3 shown in FIG.
  • the input data conversion command “setffin # buffistraight” can be used to program (specify) whether PU—SIMD # 0 to # 3 are connected in series or in parallel.
  • SCU203-0 is equipped with 62 multiplexers MUX1!
  • Each of the 62 multiplexers MUX1 selects one of the two corresponding pixel data of the input buffer in—buf ( ⁇ ), ( ⁇ —1) by the dependent parameter ysel and selects the logic circuit L
  • the logic circuit LOG71 uses the dependent parameter wsel to write a total of 64 pixel data of 62 pixel data and 2 pixel data read from the rectangular image area BR selected by the dependent parameter BRftium. Decide whether to pack 4 bits from the LSB of pixel data Pixel into 16 pixel data Pixel.
  • the SCU 203-0 performs load control from the output buffer out-buf to the PU-SIMD processing circuits # 0 to # 3 by the dependent parameter Id for every four pixel data.
  • the SCU203-0 is provided for each PU—SIMD processing circuit # 0 to # 3 as shown in FIG. Select two input buffers in— buf (n) and (n-1) from the four input buffers in— buf.
  • Each of the input buffers in—buf (n), (n—1) has a size of 1 (height) ⁇ 64 (width) pixel data.
  • SCU203-0 is equipped with 60 multiplexers MUX1!
  • Each of the 60 multiplexers MUX1 selects one of the two corresponding pixel data in the input buffer in— buf ( ⁇ ), ( ⁇ — 1) by the dependent parameter ysel and outputs it to the logic circuit L OG81 To do.
  • the logic circuit LOG81 uses the dependent parameter wsel to output a total of 64 pixel data of 60 pixel data and 4 pixel data read out from the rectangular image area BR selected by the dependent parameter BRftium. Decide whether to pack 4 bits from the LSB of pixel data Pixel into 16 pixel data Pixel.
  • SCU203 0 sends the output buffer out buf to PU SIMD processing circuits # 0 to # 3 Load control is performed with the dependent parameter Id for every 4 pixel data.
  • the SCU203-0 executes the input data conversion command “set # BR # 16xl” from the host processor 101, for example, as shown in FIG. 41, the 16-pixel data in the rectangular image area BR selected by the dependent parameter BRftium. Is duplicated four times to generate 64-pixel data stream data, which is written to the output buffer out-buf through a predetermined pixel data selection process.
  • the logic circuit LOG91 inputs 64 pixel data obtained by duplicating the 16 pixel data in the rectangular image area BR selected by the dependent parameter BRftium four times, and outputs the 64 pixel data as it is as an output buffer out- buf Decides whether to pack 4 bits from the LSB of each pixel data Pixel and store it in 16 pixel data Pixel.
  • the SCU 203-0 performs load control from the output buffer out-buf to the PU-SIMD processing circuits # 0 to # 3 by the dependent parameter Id for every four pixel data. Therefore, it is possible to write the data duplicated four times to out # buf every 16 pixels.
  • the SCU203-0 executes the input data conversion command “set # BR # 32xl” from the host processor 101, for example, as shown in FIG. 42, the 32-pixel data in the rectangular image area BR selected by the dependent parameter BRftium. Is duplicated to generate 64-pixel stream data, which is written to the output buffer out-buf through a predetermined pixel data selection process.
  • the logic circuit LOG101 inputs 64 pixel data obtained by duplicating the 32 pixel data in the rectangular image area BR selected by the dependent parameter BRftium, and outputs the 64 pixel data as it is in the output buffer out- Decide whether to write to buf or pack 4 bits from LSB of each pixel data Pixel and store it in 16 pixel data Pixel.
  • the SCU 203-0 performs load control from the output buffer out-buf to the PU-SIMD processing circuits # 0 to # 3 by the dependent parameter Id for every four pixel data. Therefore, it is possible to write the duplicated data to out # buf every 32 pixels.
  • the logic circuit LOG111 inputs 64 pixel data in the rectangular image area BR selected by the dependent parameter BRftium, and writes these 64 pixel data directly to the output buffer out-buf, or 4 bits from the LSB of each pixel data Pixel Packs 16 pixels of data to decide whether to store in Pixel.
  • the SCU 203-0 performs load control from the output buffer out-buf to the PU-SIMD processing circuits # 0 to # 3 by the dependent parameter Id for every four pixel data.
  • the SCU203-0 executes the input data conversion command “set # BR # 64x2” from the host processor 101, for example, as shown in FIG. 44, 128 X 1 in the rectangular image area BR selected by the dependent parameter BRftium. From the pixel data, 64 pixel data is selected by the dependent parameter xsel to generate stream data, which is written to the output buffer out-buf through a predetermined pixel data selection process.
  • Each of the 64 multiplexers MUX2 inputs 2 pixel data adjacent in the X direction in the rectangular image area BR selected by the dependent parameter BR # num, and selects 1 pixel data by the dependent parameter xsel. Output to the logic circuit LOG 121.
  • the logic circuit LOG121 has the ability to write 64 pixel MUX2 input 64 pixel data as it is to the output buffer out—buf, depending on the dependent parameter wsel, packs 4 bits from the LSB of each pixel data Pixel Decide whether to store 16 pixel data in Pixel.
  • the SCU203-0 performs load control from the output buffer out-buf to PU-SIMD # 0 to # 3 with the dependent parameter Id for every 4 pixel data.
  • the SCU203-0 is selected by the dependent parameter BRftium, for example, as shown in FIG. From the 128 x 2 pixel data in the rectangular image area BR, 64 pixel data is selected by the dependent parameter xsel to generate stream data, and this is subjected to a predetermined pixel data selection process and output to the output buffer out-buf Write.
  • Each of the 128 multiplexers MUX1 inputs 2 pixel data adjacent in the y direction in the rectangular image area BR selected by the dependent parameter BR # num, and selects 1 pixel data by the dependent parameter ysel. Output to 64 multiplexers MUX2.
  • the 64 multiplexers MUX2 select one pixel data out of two pixel data adjacent in the X direction according to the dependent parameter xsel, and output the selected pixel data to the logic circuit LOG131.
  • the logic circuit LOG131 has the ability to write 64 pixel MUX2 input 64 pixel data as it is to the output buffer out—buf, depending on the dependent parameter wsel, packs 4 bits from the LSB of each pixel data Pixel Decide whether to store 16 pixel data in Pixel.
  • the SCU 203-0 performs load control from the output buffer out-buf to the PU-SIMD processing circuits # 0 to # 3 by the dependent parameter Id for every four pixel data.
  • the SCU203-0 executes the input data conversion command “set # BR # 64x3” from the host processor 101, for example, as shown in FIG. 46, 192 X 1 in the rectangular image area BR selected by the dependent parameter BRftium. From the pixel data, 64 pixel data is selected by the dependent parameter xsel to generate stream data, which is written to the output buffer out-buf through a predetermined pixel data selection process.
  • Each of the 64 multiplexers MUX3 inputs 3 pixel data adjacent in the X direction in the rectangular image area BR selected by the dependent parameter BR # num, and selects 1 pixel data by the dependent parameter xsel. Output to the logic circuit LOG141.
  • the logic circuit LOG141 has the ability to write 64 pixel MUX3 input 64 pixel data as it is to the output buffer out-buf according to the dependent parameter wsel. Packing 4 bits from the LSB of each pixel data Pixel Decide whether to store 16 pixel data in Pixel.
  • SCU203 0 controls load from output buffer out buf to PU SIMD # 0 to # 3 Is performed with the dependent parameter Id for every 4 pixel data.
  • the SCU203-0 executes the input data conversion command “set # BR # 64x3x 3” from the host processor 101, for example, as shown in FIG. 47, 192 X 3 in the rectangular image area BR selected by the dependent parameter BRftium. From the pixel data, 64 pixel data is selected by the dependent parameter xsel to generate stream data, which is written to the output buffer out-buf through a predetermined pixel data selection process.
  • Each of the 192 multiplexers MUX4 inputs 3 pixel data adjacent in the y direction in the rectangular image area BR selected by the dependent parameter BRftium, selects 1 pixel data by the dependent parameter ysel, Output to 64 multiplexers MUX3.
  • the 64 multiplexers MUX3 select one pixel data out of the three pixel data adjacent to each other in the X direction input from the multiplexer MUX4, and output the selected pixel data to the logic circuit LOG 151.
  • the logic circuit LOG151 has the power to write 64 pixel MUX3 input 64 pixel data as it is to the output buffer out—buf according to the dependent parameter wsel. Packing 4 bits from LSB of each pixel data Pixel! Decide whether to store 16 pixel data in Pixel.
  • the SCU 203-0 performs load control from the output buffer out-buf to the PU-SIMD processing circuits # 0 to # 3 by the dependent parameter Id for every four pixel data.
  • the SCU203-0 executes the input data conversion command “set # BR # 64x4” from the host processor 101, for example, as shown in FIG. 48, 256 X 1 in the rectangular image region BR selected by the dependent parameter BRftium. From the pixel data, 64 pixel data is selected by the dependent parameter xsel to generate stream data, which is written to the output buffer out-buf through a predetermined pixel data selection process.
  • Each of the 64 multiplexers MUX5 inputs 4-pixel data adjacent in the X direction in the rectangular image area BR selected by the dependent parameter BR # num, and selects 1-pixel data by the dependent parameter xsel.
  • the logic circuit LOG 161 has the power to write the 64 pixel MUX5 input 64 pixel data as it is to the output buffer out—buf according to the dependent parameter wsel. Packing 4 bits from the LSB of each pixel data Pixel Decide whether to store 16 pixel data in Pixel.
  • the SCU 203-0 performs load control from the output buffer out-buf to the PU-SIMD processing circuits # 0 to # 3 by the dependent parameter Id for every four pixel data.
  • the SCU203-0 executes the input data conversion command “set # BR # 64x4x 4” from the host processor 101, for example, as shown in FIG. 49, the 256 X 4 in the rectangular image area BR selected by the dependent parameter BRftium. From the pixel data, 64 pixel data is selected by the dependent parameter xsel to generate stream data, which is written to the output buffer out-buf through a predetermined pixel data selection process.
  • Each of the 256 multiplexers MUX6 inputs 4-pixel data adjacent in the y direction in the rectangular image area BR selected by the dependent parameter BR # num, and selects 1-pixel data by the dependent parameter ysel. Output to 64 multiplexers MUX5.
  • the 64 multiplexers MUX5 select one of the four pixel data adjacent in the X direction input from the multiplexer MUX4 according to the dependent parameter xsel and output the selected pixel data to the logic circuit LOG161.
  • the logic circuit LOG161 has the power to write the 64 pixel MUX5 input 64 pixel data to the output buffer out- buf as it is, depending on the dependent parameter wsel. Packing 4 bits from the LSB of each pixel data Pixel Decide whether to store 16 pixel data in Pixel.
  • the SCU 203-0 performs load control from the output buffer out-buf to the PU-SIMD processing circuits # 0 to # 3 by the dependent parameter Id for every four pixel data.
  • the SCU203-0 executes the input data conversion command “set # BR # 64x9” from the host processor 101, for example, as shown in FIG. 50, 576 ⁇ 1 in the rectangular image area BR selected by the dependent parameter BRftium. From the pixel data, depending on the dependent parameter xsel, 64 screens Raw data is selected to generate stream data, which is written in the output buffer out-buf through a predetermined pixel data selection process.
  • Each of the 64 multiplexers MUX7 inputs 9-pixel data adjacent in the X direction in the rectangular image area BR selected by the dependent parameter BR # num, and selects 1-pixel data by the dependent parameter xsel. To the logic circuit LOG 171.
  • the logic circuit LOG171 has the ability to write 64 pixel MUX7 input 64 pixel data as it is to the output buffer out—buf according to the dependent parameter wsel, packs 4 bits from the LSB of each pixel data Pixel Decide whether to store 16 pixel data in Pixel.
  • the SCU 203-0 performs load control from the output buffer out-buf to the PU-SIMD processing circuits # 0 to # 3 by the dependent parameter Id for every four pixel data.
  • the SCU203-0 executes the input data conversion command “set # BR # 64x9x 3” from the host processor 101, for example, as shown in FIG. 51, the 576 X 3 in the rectangular image area BR selected by the dependent parameter BRftium. From the pixel data, 64 pixel data is selected by the dependent parameter xsel to generate stream data, which is written to the output buffer out-buf through a predetermined pixel data selection process.
  • Each of the 576 multiplexers MUX8 inputs 3 pixel data adjacent in the y direction in the rectangular image area BR selected by the dependent parameter BR # num, and selects 1 pixel data by the dependent parameter ysel. Output to 64 multiplexers MUX7.
  • the 64 multiplexers MUX7 select 1 pixel data among the 9 pixel data adjacent in the X direction input from the multiplexer MUX8 by the dependent parameter xsel and output to the logic circuit LOG181.
  • the logic circuit LOG181 has the power to write 64 pixel MUX7 input 64 pixel data as it is to the output buffer out—buf according to the dependent parameter wsel, and packs 4 bits from the LSB of each pixel data Pixel. Decide whether to store 16 pixel data in Pixel.
  • SCU203 0 sends the output buffer out buf to PU SIMD processing circuits # 0 to # 3 Load control is performed with the dependent parameter Id for every 4 pixel data.
  • SCU203-0 can define rectangular image areas CR and DR as multiple rectangular image areas in the rectangular image area WR in the storage area as shown in FIG.
  • ww indicates the X-direction rectangular image area width of the rectangular image area WR.
  • cx and cy indicate the two-dimensional coordinates of the rectangular image area CR in the rectangular image area WR. This is a coordinate system in which the upper left corner of the rectangular image area WR is the origin (0,0) and indicates the upper left coordinates of the rectangular image area CR.
  • cw and ch indicate the width and height of the rectangular image area CR.
  • dx and dy indicate the two-dimensional coordinates of the rectangular image region DR in the rectangular image region CR.
  • the upper left coordinate of the rectangular image area DR is shown in a coordinate system with the upper left corner of the rectangular image area CR as the origin (0,0).
  • dw and dh indicate the width and height of the rectangular image region DR.
  • SCU203-0 can designate the rectangular image region DR so as to deviate from the rectangular image region CR as shown in FIG.
  • the SCU 203-0 can input various types of stream data from the PU-SIMD processing circuits # 0 to # 3.
  • the rectangular image area DR can be set by deviating from the rectangular image area CR.
  • the SCU 203-0 When the rectangular image region DR deviates from the rectangular image region CR, the SCU 203-0 does not write the pixel data value at the pixel corresponding position included in the deviated region into the rectangular image region CR.
  • the pixel data in the rectangular image area DR is defined by the following equation (10) in the rectangular image area CR.
  • R (x + dx, y + dy) pixel (x, y)
  • the rectangular image area DR can be set by deviating from the rectangular image area CR.
  • the SCU203-0 controls the departure area to be folded inside the rectangular image area CR.
  • the pixel data in the rectangular image region DR is not written in the rectangular image region CR.
  • the pixel data in the rectangular image area DR is defined by the following equation (11) in the rectangular image area CR.
  • the stream data output from the PU—SIMD processing circuits # 0 to # 3 is written to the input buffer in—buf.
  • the SCU 203-0 reads data from the input buffer in-buf, performs data conversion processing such as rearrangement, and then writes it to the rectangular image area DR. In addition, the SCU 203-0 reads data from the input buffer in-buf as necessary, performs data conversion processing such as rearrangement according to the mask data DRftnask, and then writes the data in the rectangular image region DR.
  • the SCU203-0 can specify the above conversion processing for each of the PU-SIMD processing circuits # 0 to # 3.
  • the SCU203_0 includes a register for recording the mask data DRftnask.
  • the SCU 203-0 includes an input buffer in_buf corresponding to each of the PU-SIMD processing circuits # 0 to # 3.
  • SCU203-0 is the output data conversion process described above, that is, PU-SIMD processing circuit.
  • the process of writing the stream output by # 0 to # 3 into the rectangular image region DR is performed according to the output data conversion command WO # data # op shown in Table 4 below, for example.
  • the SCU 203-0 inputs and executes an output data conversion command from the host processor 101 shown in FIG.
  • SCU203-0 can specify the subordinate parameters shown in Table 5 in each output data conversion command shown in Table 4.
  • each output buffer out-buf is associated in advance with one processor unit PU shown in FIG.
  • SCU203-0 selects 1 bit from 4 bits constituting each pixel data, and writes it to the mask register MR11 as 64-bit mask data DRftnask.
  • Each bit constituting the mask data DRftnask is used as mask information in pixel data units when the output of the processor unit PU is written in the rectangular image region DR. For example, when the bit of the mask data DRftnask is “1”, it means that the pixel data is written into the rectangular image region DR, and when it is “0”, it means that it is not written! /.
  • SCU203-0 writes 64-bit mask data DRftnask to 1 in 64-bit mask register MR1 selected by the dependent parameter DR # num.
  • SCU203-0 writes “1” in the 64-bit mask data DRftnask to the mask size register MSR11 selected by the dependent parameter DRftium.
  • the value stored in the mask size register MSR11 is any one of 0 to 64. [0142] As shown in FIG. 55, each input buffer in buf (0-15) has a corresponding processor. Knit PU force Input 64 pixel data is written.
  • the bit selector SEL11 selects 4 to 1 bits constituting the 64-pixel data stored in the input buffer in—buf (0-15) by the dependent parameter bsel. There are 4 types of selection, and the same bit is selected for each pixel data.
  • the SCU203-0 stores the data selected by the bit selector SEL11 as the mask data DRftnask in the mask register MR11 selected by the dependent parameter DR # num.
  • the write control circuit WC11 of SCU203-0 is stored in the 64-bit mask register MR11 selected by the dependent parameter DRftium !, and the pixel data stored in the input buffer in- buf according to the mask data DRftnask Is written into the rectangular image area DR selected by the dependent parameter DRftium.
  • the writing control circuit WC 11 writes the pixel data corresponding to the bit indicating “1” of the mask data DRftnask by packing (packing) in order from the smaller X coordinate of the rectangular image region DR.
  • the rectangular image area DR has a width of 64 pixel data and a height of 1 pixel data.
  • the pixel data is packed according to the mask data DRftnask and written to the rectangular image area DR. Pixel data is not always written to the entire DR.
  • the SCU203-0 writes the 64-pixel data read from the input buffer in-buf into the rectangular image region DR selected by the dependent parameter DRftium.
  • the size of the rectangular image region DR is 64 ⁇ 1 pixel data.
  • each of the input buffers in-buf (0-63) shown in FIG. 58 64-pixel data to which the corresponding processor unit PU force is also input is written.
  • the SCU203-0 writes the 64-pixel data read from the input buffer in-buf into the rectangular image region DR selected by the dependent parameter DRftium according to the dependent parameter sel.
  • the size of the rectangular image region DR is 128 XI pixel data.
  • the SCU203-0 writes the 64-pixel data read from the input buffer in-buf into the rectangular image region DR selected by the dependent parameter DRftium according to the dependent parameter sel.
  • the size of the rectangular image region DR is 192 XI pixel data.
  • the SCU203-0 writes the 64-pixel data read from the input buffer in-buf into the rectangular image region DR selected by the dependent parameter DRftium according to the dependent parameter sel.
  • the size of the rectangular image region DR is 256 XI pixel data.
  • SCU203-0 writes the pixel data to the coordinate (pixel corresponding position) in which the x coordinate of the rectangular image region DR is a multiple of four.
  • SCU203-1 to 3 are basically the same as SCU203-0.
  • the SCU203-0 includes four sets of built-in processors, four sets of program memory, and four sets of program counters.
  • the SCU 203-0 stores the program input from the host processor 101 shown in FIG. 1 in the program memory.
  • the built-in processor of the SCU203-0 reads and executes the program from the program memory according to the program counter.
  • the program includes the above-described data conversion command WI # data # op, WO—data—op.
  • the built-in processor is, for example, a RISC processor.
  • the built-in processor instructs the start of processing of the PU-SIMD processing circuits # 0 to # 3.
  • the built-in processor specifies the address and size of the rectangular image area WR / AR / BR / CR / DR, and performs immediate addition of the address and conditional branching.
  • Commands (instructions) executed by the built-in processor include instruction, operatorO, and displacementment.
  • the built-in processor When executing the finish instruction, the built-in processor outputs an interrupt signal to the host processor 101 and ends the execution of the program.
  • the built-in processor executes the command “exec”.
  • the command “exec” includes the data conversion commands WI # data # op, WO # data # op, and WIffdata # op # param, WOffdata # op # param, which are specified by the parameters.
  • the command “exec” is used to specify DMA transfer.
  • the internal processor executes the command “branch”.
  • the command “Branch” includes a static loop process without a condition and a process with a condition.
  • the condition is determined based on the comparison result between the coordinates ax, ay, bx, by, cx, cy, dx, dy of the rectangular image area and the immediate value.
  • the built-in processor executes the command “Set”.
  • the command "Set” specifies coordinates such as rectangular image areas ax, ay, aw, ah, bx, by, bw, bh, and coordinates such as rectangular image areas cx, cy, cw, ch, dx, dy, dw, dh And so forth.
  • the command “Set” specifies bp and ww that define the rectangular image area WR.
  • the command “Set” specifies the transfer source start address, transfer destination start address, and transfer size that define the DMA area.
  • the internal processor executes the command “addZsub”.
  • the command ⁇ addZsub '' is used to add and subtract coordinates of rectangular image areas ax, ay, aw, ah, bx.by, bw, bh, etc., and rectangular image areas cx, cy, cw, ch, dx, dy, dw, dh Addition and subtraction of coordinates such as.
  • command “addZsub” can add a settable value to PU-SIMD processing circuits # 0 to # 3 only at dx.
  • the built-in processor can execute “no operation” for increasing only the program counter as a special instruction, “finish program” for instructing program termination, and the like.
  • WI # data # op # param and WO # data # op # param which are dependent parameters of the data conversion command, are defined as shown in FIG. 65 (B), for example.
  • the dependent parameter is stored in the SCU203-0 memory in association with the data conversion command.
  • the SCU 203-0 causes the PU-SIMD # 0 to # 3 to start processing by executing the command “start PU-SIMD”.
  • SCU203-0 can execute the data conversion command WI # data # op to WR force Converts the read data and outputs it to PU—SIMD processing circuits # 0 to # 3.
  • SCU203-0 can execute PU-SIM by executing the data conversion command WO-data-op.
  • D # Converts the data input from 0 to # 3 and writes it to the rectangular image area WR.
  • the processing (thread) of SCU203-0 is the host processor 1 shown in FIG.
  • PU_SIMD (Single Instruction Multiple Data) processing circuits # 0 to # 3 are operated by individual threads corresponding to each PU—SIMD processing, and the thread is instructed to start by the SCU 203-0 or the host processor 101.
  • the built-in processor issues and executes a command in advance for both reading and writing of the storage area.
  • the built-in processor performs address calculation by executing the data conversion commands WI # data # op and WO # data # op, and stores the addresses in a queue for each read and write.
  • the host processor 101 shown in FIG. 1 executes the program PRG, thereby designating the program to the SCUs 203-0 to 3 shown in FIG.
  • the SCUs 203-0 to 3 are based on four predetermined threads obtained by executing the program specified by the host processor 101! /, Respectively, and the PEs in the PU arrays 202-0 to 202-3, respectively.
  • the memory system 105 or the local memory 20 4_0 to 3 is accessed according to the progress of the process.
  • the PEs shown in Fig. 3 and Fig. 4 in the PU array 202-0 to 202-3 are controlled by the SCU203-0 to 3 or the host processor 101 while using the memory access result by the SCU203-0 to 3 SCU203—runs in a different thread than 0-3.
  • each PU array 202-0 to 202-3 PUs SIMD # 0 to # 3 are selectively connected in parallel or in series by SCU203-0 to 203-3.
  • PU-SIMD # 0 to # 3 as shown in Fig. 4, 16 PEO to 15 are connected serially, and pixel data is input / output as necessary between adjacent PEs.
  • PU-SIMD Single Instruction Multiple Data
  • the unit is operated by a common thread, and the SC U203-0 to 3 are operated by a thread different from the thread.
  • processing for large amounts of pixel data can be specified in advance and can be executed in parallel based on a common thread in a plurality of processor elements (PE) by utilizing the fact that they are mutually independent.
  • PE processor elements
  • the SCU 203-0 to 3 perform access to the storage area for the data related to the processing of the PU array 202-0 to 202-3.
  • the PEs 0 to 202-3 can efficiently perform image processing that does not require access processing to the storage area.
  • pixel data can be input and output to the processor units PU on both sides to which the processor units PU are serially connected as shown in FIG. 3, and in the processor unit PU as shown in FIG. Serially connected PEs can input and output pixel data to both PEs. This significantly reduces the number of memory accesses compared to when each PE accesses memory independently.
  • control processor 201 controls the control of each of the SCUs 203-0 to 3 as shown in FIG.
  • the processors 201-0 to 201-3 may be provided individually.
  • the image processing apparatus 100 of the second embodiment has the same configuration as that of the first embodiment as shown in FIG. 1, but the configuration of the image processing engine 102 is different from that of the first embodiment. Since the configuration of the image processing apparatus 100 other than the image processing engine 102 is the same as that of the first embodiment, the description thereof is omitted here.
  • the image processing engine 102 is a programmable image processor, and executes image processing instructed by the host processor 101 in accordance with an application program executed by the image processing apparatus 100.
  • Image data subject to image processing includes data captured by the camera module 107 input via the sensor IZF106, data stored in the memory system 105 input via the memory IZF104, and storage medium IZF108. There are data stored in the storage medium 109 input via the data, data given from the codec engine 103, and data processed by the codec engine 103.
  • the image processing engine 102 stores its processing result in the memory system 105 via the memory IZF 104, stores it in the storage medium 109 via the storage medium IZF 108, outputs it to the codec engine 103, and outputs it to the built-in display device.
  • the image is displayed on the built-in display device 111 via the IZF 110, or output to an external device via the video IZF 112.
  • FIG. 69 is an overall configuration diagram of the image processing engine 102 according to the second embodiment.
  • the image processing engine 102 includes a control processor (CPU) 201, a PU (processor unit) array 202-0 to 202-3, and a low force memory 204-0 to 204-3.
  • CPU control processor
  • PU processor unit
  • the control processor 201 is a processor that controls the entire image processing engine 102. Settings and activation of each component of the image processing engine 102, and a PU array that is a SIMD (Single Instruction Multiple Data) processor array It is responsible for executing processes that are difficult to parallelize in 202.
  • SIMD Single Instruction Multiple Data
  • the PU arrays 202-0 to 202-3 are programmable arithmetic units, and are composed of a plurality of SIMD type processor arrays as described later. Also, the PU arrays 202-0 to 203-0 of this embodiment are different from the first embodiment in that they have an SCU (Stream Control Unit) inside as will be described later.
  • SCU Stream Control Unit
  • the local memory 204—0 to 204-3 is a working memory of the image processing engine 102, and holds a part of the image data stored in the memory system 105, and each of the PU arrays 202—0 to 202 — Stores the intermediate results processed in 3, and stores the programs executed in PU array 202— 0 to 2 02-3 and various parameters.
  • the image processing engine 102 operates, for example, the PU arrays 202-0 to 202-3 shown in FIG.
  • the common thread means, for example, that the process proceeds based on a common program.
  • FIG. 70 is a configuration diagram of the PU array 202-0 shown in FIG.
  • PU array 202-0 consists of four PU-SIMD (Single Instruction Multiple Data) processing circuits # 0 to # 3 and SCU # 10 connected to each PU-SIMD. Have ⁇ # 13.
  • PU-SIMD Single Instruction Multiple Data
  • the PU—SIMD processing circuit # 0 includes a control unit 303-0 and four processor units PU # 00 to # 03.
  • the four processor units PU # 00 to # 03 constitute a SIMD type processor that operates with the same instructions.
  • the four processor units PU # 00 to # 03 are horizontally connected in a one-dimensional manner.
  • PU-SIMD processing circuits # 1 to # 3 have the same configuration as PU-SIMD processing circuit # 0.
  • the configuration of the processor unit PU # 00 is the same as that described in association with FIG. 4 in the first embodiment, and thus the description thereof is omitted here.
  • Each of the processor elements PE0 to PE15 performs an operation using the data read from the input line buffer 401 and writes the operation result in the output line buffer 404.
  • SCU # 10 reads the operation result from the output line buffer 404.
  • the PU array 202-0 can operate the four PU-SIMD processing circuits # 0 to # 3 independently in parallel or in series. When operating in series, the connection between SCUs is used.
  • the control unit 303-0 shown in FIG. 70 has an instruction storage memory (not shown). A control signal obtained by decoding an instruction read from the instruction storage memory is transferred to the PU-SIMD # 0. Output to all PEs of.
  • the control unit 303-0 includes a program flow control not-shown register (not shown) and a pointer register for accessing a stream register in the PE.
  • the loop register is a register for controlling the number of loops in the program, and can be set by a force set by the control processor 201 or by an instruction at the time of program execution.
  • the register value in the PE can be specified as the source operand.
  • the register value of a predetermined PE among the plurality of PEs for example, the leftmost PE in the figure, for example, PE0 of the processor unit PU # 00 is used.
  • pointer register specify the register value in the PE as the source operand.
  • register value of a specific PE is used. The same applies to the control units 303-1 to 303-3.
  • Data captured by the image sensor in the camera module 107 is read out via the sensor IZF 106 for each horizontal scan line, output to the image processing engine 102, and stored in the memory system 105. At this time, the image processing engine 102 executes part of the detection processing.
  • the image processing engine 102 efficiently operates the internal PU-SIMD processing circuit in parallel. While reading out the area, the rest of the detection process, various camera signal processes, and various image processes are executed.
  • the processing result of the image processing engine 102 is stored in the memory system 105.
  • the image processing engine 102 also performs resolution conversion.
  • the resolution-converted image data is displayed on the built-in display device 111 via the built-in display device IZF110.
  • the codec engine 103 performs image compression using a plurality of frames of image data processed by the image processing engine 102 stored in the memory system 105.
  • the compressed image data is recorded on the storage medium 109 via the storage medium IZF108.
  • the image processing engine 102 includes a plurality of PU arrays 202-0 to 202-3. Each PU array 202-0 to 202-3 processes a different area in the frame. To do.
  • the four PU arrays 202-0 to 202-3 are configured as in the second embodiment, for example, as described in the first embodiment with reference to FIG. — Can allocate space to 3.
  • Each of the PU arrays 202-0 to 202-3 has a plurality of PU SIMD processing circuits composed of 64 PEs as described above.
  • the area allocated to each of the PU arrays 202-0 to 202-3 can be further divided into rectangular image areas having a width of 64 pixels, and each pixel can be allocated to one PE.
  • each PE as described in connection with FIG. 7 in the first embodiment, The assigned vertical pixel sequence is processed in order.
  • each PE in the PU array 202-0 is centered on the pixel position Pixel in order to perform the pixel data filtering process on the pixel position Pixel to be processed.
  • the pixel data of the 5 ⁇ 5 pixel position is used.
  • Each PE in the PU array 202-0 moves the pixel position to be processed in the order of the arrow shown in FIG. 8 (downward in the figure).
  • each PE in the PU array 202-0 performs 5 ⁇ 5 pixel filter processing of the pixel data of the next pixel position Pixel—next, as shown in FIG. 10 of the first embodiment.
  • the PU arrays 202-1 to 202-3 are the same as the PU arrays 202-0.
  • PE0 is the same as PEn except that PE0 performs data input / output only with PE1 and PE15 performs data input / output only with PE14.
  • FIG. 71 is a block diagram of PEn in the second embodiment.
  • PEn includes multiplexers MUX1000 and 1001, various registers such as stream registers SR0 to SR3, and an arithmetic logic unit ALU.
  • the input line buffer 401 is a buffer for receiving input data sent from an SCU (Stream Control Unit). One stage of 16-bit data can be stored per PE.
  • the output line buffer 404 is a buffer for sending the operation result in the PE to the SCU.
  • One stage of 16bit data can be stored per PE.
  • the stream registers SR0 to SR3 are register files with a 16-bit width and 16 entries, and each PE has a total of 4 SRs.
  • the stream registers SR0 to SR3 are mainly used to store the data required for SCU-supplied calculations and to temporarily save the calculation results, and can be referenced by direct addressing.
  • Up to four pointers can be defined for each stream register.
  • Each pointer has the following three values. That is, “St art” that is the start point of the pointer definition area, “End” that is the end point of the pointer definition area, and “Current” that is the current pointer position. However, End ⁇ Start must be satisfied. By making the Start and End of the two pointers the same, using one as the Read pointer and the other as the Write pointer, it can function as a FIFO. Also, Start and End may be changed for each pointer.
  • Pointer references are referenced with the offset of the specified pointer from Current.
  • the offset value is a positive integer in the range of 0 to 15 for reading, and a positive integer in the range of 0 to 3 for writing.
  • an entry in the stream register SR0 to SR3 is designated as an immediate value.
  • An immediate value is a positive integer in the range 0-15.
  • the Start, End, and Current values are initialized to 0, 15, and 0, respectively, after reset. There is also an instruction to initialize the Current value to the Start value.
  • idxaw (idxbw ⁇ Start)?
  • SR0 to SR3 can be used by linking pointer definition areas specified by the same pointer.
  • the pointer 0 is concatenated for the combination of SR0 and SR1
  • the area defined by the Start and End of the SR0 pointer 0 and the area defined by the Star 1 and End of the SR1 pointer 0 are concatenated.
  • the concatenation mode is specified for a pointer, only the pointer on the even side of the stream register pair is valid.
  • the even pointer value exceeds End, the pointer value is automatically changed to the odd pointer area, and the input can be used as if both areas are continuous.
  • Registers SO to S3 are four general-purpose registers, each 16 bits long. When performing an operation that handles 32-bit data, two consecutive registers, namely SO and S1 or S2 and S3, can be specified as operands.
  • Register TEMPS is a temporary save register with a data length of 16 bits.
  • the register TEMPS is a register used when using the shared function unit 403, and can be used as a working register in cases other than accessing the shared function unit 403. These registers can be specified as both the source and destination operands of arithmetic and logic instructions.
  • the register COND is a condition register with a data length of 4 bits, which is mainly used for conditional execution. It can be specified as the destination operand of arithmetic logic operation. In that case, any one bit of the operation result, the operation result in the arithmetic logic unit ALU, the carry flag indicating that the carry has been set, or the operation result power Specifies which one of the zero flags indicating ⁇ and which bits of the condition register are reflected.
  • Register PENUM is a processor number register with a 6-bit data length that stores its own processing element number (0 to 63) and is read-only.
  • the path indicated as! / And Const is a path that passes a constant value when the register CONSTANT is specified as the source operand, and is 16 bits wide.
  • Register CONST ANT consists of multiple registers. The register CONSTANT is held in the SCU rather than in each PE.
  • a PE can refer to the register of an adjacent PE that is not just its own register. That is, PE1 can refer to the registers of PE0 and PE2. However, only general-purpose registers S0 to S3 can be referenced between adjacent PEs.
  • the nose forces indicated as To Left PE and To Right PE are paths that pass the values of general-purpose registers S0 to S3 to the left adjacent PE and right adjacent PE, respectively.
  • the paths described as From Left PE and From Right PE are the paths that receive the selected register values from the left adjacent PE and right adjacent PE, respectively.
  • the PEs of the second embodiment are separate multiplexers for the left adjacent PE and the right adjacent PE. Since a wedge is prepared, general-purpose register references that are different from each other can be made in the same cycle, so that processing can be performed quickly. Note that PE0 and PE15 can only refer to the left or right PE register.
  • PE has three types of arithmetic logic units, and operations using these three arithmetic logic units can be executed simultaneously.
  • the PE transfers the data written to the input line buffer 401 by the load instruction to the stream registers SR0 to SR3.
  • the stream registers SR0 to SR3 can be loaded from the register COND.
  • instructions for moving data from stream registers SR0 to SR3 to register COND are also provided.
  • Writing to the output line buffer 404 is normally performed by directly specifying the destination operand of the operation instruction, but an instruction for moving data from the register COND to the output line buffer 404 may be prepared.
  • the PE of the second embodiment can perform a plurality of operations simultaneously. Since the shared function unit 403 is the same as that described in the first embodiment, the description thereof is omitted.
  • SCU # 11 to # 13 are the same as SCU # 10.
  • SCU # 10 has multiple PU SIMD (Single Instruction Multi pie Data) Processing circuit # 0 is controlled to input and output data efficiently for the processing of the individual processor elements PE constituting it.
  • SIMD Single Instruction Multi pie Data
  • SCU # 11 is for PU—SIMD processing circuit # 1
  • SCU # 12 is for PU—SI MD processing circuit # 2
  • SCU # 13 is for PU—SIMD processing circuit # 3.
  • the data required for the processing of the individual processor elements PE that make up the system is controlled to input and output data efficiently.
  • SCU # 10 stores data necessary for processing in a storage device represented by a semiconductor memory or the like.
  • the PU-SIMD processing circuits # 0 to # 3 mainly process image information.
  • the image information to be processed is managed by a physical one-dimensional address in a storage device such as a memory.
  • a logical two-dimensional storage area is secured and stored in the processed storage area.
  • the basic unit of the image data is called pixel data.
  • SCU # 10 is located between PU—SIMD processing circuit # 0, memory system 105, and local memory 204—0, and has the function of converting multiple pixel data into stream data for input / output. Yes.
  • FIG. 72 is a block diagram showing the structure of SCU # 10.
  • SCU # 10 includes a writing unit # 101, a reading unit # 102, and a control unit # 103.
  • the writing unit # 101 performs writing to the local memory 204-0 or the memory system 105 (hereinafter referred to as a storage area).
  • the reading unit # 102 reads from the storage area.
  • the control unit # 103 is a control device such as a CPU that performs overall control of the SCU # 10, and performs data processing and data supply to the PU SIMD processing circuit # 0. [0200]
  • the rectangular image area defined in the storage area by SCU # 10 will be described below.
  • SCU # 10 designates a rectangular image area WIR as an input work area in the storage area.
  • SCU # 10 designates a rectangular image area BR from which pixel data is read out in the rectangular image area WIR.
  • SCU # 10 is a data conversion command that converts pixel data read out from the rectangular image area BR force into stream data required by PU—SIMD processing circuits # 0 to # 3 based on the program input from host processor 101. Execute (specify) WI # data # op.
  • SCU # 10 can program a series of iterative processes specified by the rectangular image area BR and WI-data-op as described later.
  • SCU # 10 designates a rectangular image area WOR as an output work area in the storage area.
  • SCU # 10 designates the rectangular image area DR to which pixel data is written in the rectangular image area WOR.
  • SCU # 10 executes a data conversion command WO # data # op from the output stream data of PU—SIMD # 0 to the rectangular image region DR.
  • SCU # 10 can program a series of repetitive processes in the rectangular image region DR and WO-data-op designation.
  • the SCU # 10 can be arranged and moved to an arbitrary position in the rectangular image area BR in the rectangular image area WIR and the rectangular image area DR in the rectangular image area WOR.
  • SCU # 10 can specify the rectangular image area BR or DR in the rectangular image area WIR or WOR with two-dimensional logical coordinates.
  • SCU # 10 can specify the rectangular image area WIR or WOR for the storage area by physical address.
  • SCU # 10 Since SCU # 10 requires access to the storage area when the pixel data in the rectangular image areas WIR, WOR, BR, and DR are accessed, the physical address from the logical address The storage area is accessed after conversion to "less".
  • FIG. 74 is a diagram for explaining a function of performing processing related to the multiple rectangular image region set in SCU # 10.
  • SCU # 10 assigns rectangular image areas WIRO and WORO in the storage area to PU-SIMD processing circuit # 0.
  • the rectangular image areas WIRO and WORO are defined in storage areas such as the memory system 105 and the local memory 204-0.
  • the SCU # 10 of this embodiment can define eight types of WIRs WIR0 to WIR7 and eight types of WORs WOR0 to WOR7 in the storage area.
  • rectangular image areas BR0 to BR7 are defined for each of the rectangular image areas WIR0 to WIR7, and DR0 to DR7 forces are respectively defined for WOR0 to WOR7.
  • SCU # 10 shown in Fig. 72 uses the data conversion command WI-data-op to convert the data in the rectangular image area BR into stream data and writes it to the output buffer out-buf. 10 is input from PU-SIMD processing circuit # 0 and stored in the input buffer in # buf by data conversion command WO # data # op, and the stream data is converted to data and written to rectangular image area DR. To do.
  • the rectangular image area BR in the rectangular image area WIR and the DR in the WOR in a hierarchical structure, for example, the rectangular image area in the rectangular image area WIR.
  • the address can be expressed in a format in which the reference coordinates are added to the local coordinates in the rectangular image areas BR and DR, and programming is simplified.
  • the ability to express the number of rectangular image areas and the number of layers specified for multiple designation with specific numbers can be freely combined, and the configuration can be configured according to the need for a wide range of image processing. It is possible to change.
  • a system bus 113 shown in FIG. 1 connects SCU # 10 to other processing modules such as the host processor 101 and the memory system 105, and has the following characteristics.
  • the system bus 113 can adopt a bus standard standardized in LSI and SOC.
  • the bus width of the system bus 113 is 128 bits, and the bus use efficiency can be improved by adopting a configuration capable of continuous data transfer (burst transfer).
  • the SCU # 10 accesses the storage device (for example, the memory system 105) on the system bus 113 as a bus master.
  • a bus master other than SCU # 10 on the system bus 113 accesses the SCU # 10 internal register to the SCU dedicated storage device (for example, local memory 204-0).
  • the system bus 113 can be selected regardless of the bus standard as long as the data transfer efficiency and functions are satisfied.
  • SCU # 10 can be connected to a dedicated storage device as a dedicated storage area.
  • the dedicated storage device can be selected regardless of whether the semiconductor memory such as SRAM or DRAM is inside or outside the SOC.
  • the dedicated storage device is connected to a bus having a wider bandwidth than the system bus 113.
  • the above dedicated storage device is prepared for use by one SCU # 10.
  • the dedicated storage device can be accessed from the bus master on the system bus 113.
  • PU-SIMD processing circuit # 0 is connected to SCU # 10 by a bus.
  • PU—SIMD processing circuit # 1 is connected to SCU # 11
  • PU—SIMD processing circuit # 2 is connected to SCU # 12
  • PU SIMD processing circuit # 3 is connected to SCU # 13.
  • Stream data input from SCU # 10 to PU—SIMD processing circuit # 0 uses a 256-bit unidirectional bus for PU—SIMD processing circuit # 0.
  • the transfer efficiency is 256bit / clock.
  • a 2-wire handshake is used as the data / transfer protocol.
  • An output buffer out_buf is prepared in SCU # 10.
  • the PU—SIMD processing circuit internal register is identified by specifying an address for PU—SIMD processing circuit # 0.
  • Stream data input from PU—SIMD processing circuit # 0 to SCU # 10 uses a 256-bit unidirectional bus of each PU—SI MD, and the transfer efficiency is 256 bits / clock.
  • a 2-wire handshake is adopted as the data transfer protocol.
  • An input buffer in_buf for input is prepared inside SCU # 10.
  • the PU-SIMD processing circuit internal register is identified by specifying the address for PU-SIMD.
  • SCU # 10 is a two-dimensional logical address when performing Read or WRite for the pixel corresponding position Pixel specified in the rectangular image area AR, BR, CR, DR in the rectangular image area WR. Address conversion from to physical address.
  • SCU # 10 uses memory system 105, which is a large-scale external storage device connected to system bus 113, and low-power memory 204-0, which is a small dedicated storage device, as storage areas. be able to.
  • the memory system 105 is, for example, a DRA M-CHIP connected to the outside of the SOC including SCU # 10, and is a general memory chip such as DDR or RAMBUS.
  • the local memory 204-0 is, for example, SRAM inside the SOC including SCU # 10 or eDR AM (Embededede DRAM: On-chip DRAM included in the same SOC as the SCU).
  • DRAM has a hierarchical structure of addresses such as Raw / Column / bank, and continuous data access included in the same Raw is fast. Continuous data access across Raw boundaries and remote Raw The continuous access between them requires a procedure such as page precharge, so it is slow.
  • the SCU # 10 is a power SRAM using DRAM as the memory system 105 or the local memory 204-0, for example.
  • DRAM dynamic random access memory
  • a rectangular image array of pixel data in the storage area is arranged on the same page as much as possible when generating stream data. By doing so, it is possible to take measures to reduce the discontinuity of DRAM access as much as possible.
  • This device can be realized, for example, by the method described in the first embodiment.
  • SCU # 10 can define a rectangular image area BR as a multiple rectangular image area in a two-dimensional logical address representation in the rectangular image area WIR in the storage area as shown in FIG.
  • the WIR is defined as a continuous area that can be physically addressed in the storage area.
  • the specification of the pixel inside the WIR is defined by logical addressing by the SCU.
  • pixel is logically addressed with a fixed size of 16 bits.
  • lpixel can also be expressed in 12bit or 8bit.
  • the difference between the pixel expression in the storage area and the SCU (for example, 8bitZpixel in the storage area)
  • lpixel in SCU is equivalent to 2pixel in storage area).
  • BR can be defined in WIR.
  • BR is defined in logical address space in WIR.
  • BR is accessed by address mapping conversion instead of partial copy of WIR.
  • the rectangular size of the BR area is specified by the following eight types of medium power wi-data-op. That is, either the horizontal direction is 16, 32, 48, or 64 pixels in the vertical lpixel region, or the horizontal direction is lpixel in the vertical direction, or the vertical direction is 16, 32, 48, or 64 pixel region.
  • wirw is the width of the rectangular image area WIR in the X-direction rectangular image area.
  • bw and bh indicate the width and height of the rectangular image area BR.
  • X and y indicate the two-dimensional coordinates of the pixel corresponding position Pixel in the rectangular image area BR. This is a coordinate system with the origin (0,0) at the top left of the rectangular image area BR.
  • SCU # 10 reads pixel data Pixel (bx, by) from the rectangular image area BR, converts it into a data stream (performs input data conversion processing), and inputs it to the PU-SIMD processing circuit # 0 . Since this process is the same as the process described in the first embodiment, a description thereof will be omitted.
  • SCU # 10 can define a rectangular image region DR as a multiple rectangular image region in a two-dimensional logical address representation in the rectangular image region WOR in the storage region.
  • WOR is defined as a continuous area that can be physically addressed in the storage area.
  • specification of pixel inside WOR is defined by logical addressing by SCU.
  • pixel is logically addressed with a fixed size of 16 bits.
  • lpixel can be expressed in 12 bits or 8 bits. It is necessary to pay attention to the difference between the pixel representation in the storage area and the SCU (for example, in the case of 8bitZpixel in the storage area, lpixel in the SCU is equivalent to 2pixel in the storage area).
  • DR can be defined in WOR.
  • DR is defined in logical address space within WOR.
  • DR is accessed by address mapping conversion instead of partial copy of WOR.
  • the force value that can be defined out of WOR is not guaranteed.
  • DR There are 8 types of DR, DR0 to DR7.
  • the rectangular size of the DR area is specified by the following eight types of medium power wo—data—op. That is, the horizontal direction is 16, 32, 48, 64 pixels in the vertical direction [this lpixel area, there is! / ⁇ is the lpixel in the horizontal direction and any of the 16, 32, 48, 64 pixel areas in the vertical direction.
  • the following coordinate values are used as values indicating the relationship.
  • worw indicates the width of the rectangular image area WOR in the X-direction rectangular image area.
  • dx and dy indicate the two-dimensional coordinates of the rectangular image region DR in the rectangular image region WOR.
  • the origin (0,0) at the upper left of the rectangular image area WR the upper left coordinates of the rectangular image area DR are shown.
  • dw and dh indicate the width and height of the rectangular image region DR.
  • the stream data output from PU—SIMD processing circuit # 0 is written to the input buffer in—buf.
  • SCU # 10 reads the data from the input buffer in-buf, performs data conversion processing such as rearrangement, and writes it to the rectangular image area DR.
  • SCU # 10 reads data from the input buffer in-buf as necessary, performs data conversion processing such as rearrangement according to the mask data DRftnask, and then writes it to the rectangular image area DR. Since these processes are the same as the processes performed by the SCU 203-0 in the first embodiment, a description thereof will be omitted.
  • the host processor 101 shown in FIG. 1 executes the program PRG, thereby designating a program in SCU # 10 to # 13 shown in FIG.
  • SCUs # 10 to # 13 are based on four predetermined threads obtained by executing the program specified by the host processor 101! /, Respectively, in the PU arrays 202-0 to 202-3. Access to the memory system 105 or local memory 20 4_0 to 3 is executed in accordance with the progress of PE processing.
  • the PEs in PU array 202—0 to 202—3 use SCU # 10 to # 13 and SCU # 10 to # 13 while using the memory access results by SCU # 10 to # 13 as controlled by SCU203—0 to 3 or host processor 101. Runs in a separate thread.
  • each PU array 202—0 to 202—3 SCU # 10 to # 13 and PU—SIMD # 0 to # 3 are connected and operated.
  • PU-SIMD Single Instructi on Multiple Data
  • PU-SIMD Single Instructi on Multiple Data
  • processing for large amounts of pixel data can be specified in advance and can be executed in parallel based on a common thread in a plurality of processor elements (PE) by utilizing the fact that they are mutually independent. Furthermore, since the PE of the second embodiment can perform a plurality of calculations simultaneously, the processing speed of the entire apparatus is improved.
  • PE processor elements
  • the storage area for the data related to the processing of the PE at the back end of the PE processing can be efficiently accessed.
  • the data related to the processing of the PU arrays 202 0 to 202 3 By performing SCU # 10 to # 13 access to the storage area for the data, the PE in the PU array 20 2 ⁇ 0 to 202 ⁇ 3 does not need to perform access processing to the large storage area. Can be done efficiently.
  • pixel data can be input to and output from the processor units PU on both sides to which the processor unit PU is serially connected. Can be input and output. This significantly reduces the number of memory accesses compared to when each PE accesses memory independently.
  • the SCU is assigned to each PU-SIMD and individually processed, so the load on the SCU is reduced and the time required for image processing is reduced. Is shortened.
  • the image processing apparatus 100 of the second embodiment since the multiple rectangular image areas defined in the storage areas of SCU # 10 to # 13 are only the double of WR and BR (or DR), the processing Is simplified, the load on the entire image processing apparatus 100 is reduced, and the time required for processing is shortened.
  • the present invention can be applied even if various changes and substitutions are made with respect to the components of the above-described embodiment within the technical scope of the present invention or an equivalent range thereof.
  • the present invention can be applied to various types of data processing in addition to the force image processing that exemplifies image processing that handles a large amount of data.
  • the processor element PE when signal processing is distributed using a plurality of processor units PU each having a plurality of processor elements PE, such as PU-SIMD processing circuits, the processor element PE provides data that efficiently corresponds to the memory capacity, or the reverse process is to write the data from each processor element PE to the storage means with consistency. Applicable.

Abstract

記憶手段へのアクセスを伴う処理において処理能力を高めることができる信号処理装置を提供する。ストリーム制御ユニット(SCU)203_0~3は、ホストプロセッサからの制御によるスレッドに従って、外部メモリシステムあるいはローカルメモリ204_0~3にデータのアクセスを行う。プロセッサユニット(PU)アレイ202_0~202_3は、SCU203_0~3のスレッドとは別のスレッドで画像処理を行う。

Description

明 細 書
信号処理装置
技術分野
[0001] 本発明は、信号処理装置に関する。
本発明は、特に、画像処理に好適な、信号処理装置に関する。
背景技術
[0002] たとえば、特開平 06— 4690号公報は、 CCD(Charge Coupled Device)や CMOS (C omplementary Metal Oxide Semiconductor )等の撮像素子から入力した動画あるい は静止画の撮像情報を処理し、表示あるいは記録を行うための画像処理装置を開示 している。
この画像処理装置は、例えば、撮像情報を構成する画素データを並列に演算処理 することで、処理時間の短縮を図っている。
また、この画像処理装置では、メモリに対する画素データの読み出しおよび書き込 み処理 (メモリアクセス)と、画素データを用いた演算処理とを同じスレッドに基づいて 同期して行っている。
発明の開示
発明が解決しょうとする課題
[0003] 画像処理装置の処理能力をさらに向上した ヽと!、う要請がある。
同様な要請は画像処理以外の処理にぉ 、てもある。
[0004] 本発明の目的は、記憶手段へのアクセスを向上させて信号処理能力を向上させる 信号処理装置を提供することにある。
課題を解決するための手段
[0005] 本発明によれば、記憶部と、前記少なくとも 1つの記憶部のうちいずれか所定の 1つ の記憶部へのデータの読み出し及び Zまたは書き込みを制御する入出力データ制 御部(SCU)と、前記入出力データ処理部が読み出したデータに対して所定の信号 処理を行う信号処理部(PUアレイ或いは PU— SIMD)と、を有する信号処理装置で あって、前記入出力データ制御部と、前記信号処理部とは別のスレッドに基づいて 動作する信号処理装置が提供される。
発明の効果
[0006] 本発明によれば、記憶手段へのアクセスを伴う処理において、異なるスレッドを用い ることにより、画像処理能力をさらに高めることができる信号処理装置が提供できた。 図面の簡単な説明
[0007] [図 1]図 1は本発明の信号処理装置の実施形態に係わる画像処理装置の全体構成 図である。
[図 2]図 2は図 1に示す画像処理エンジンの構成図である。
[図 3]図 3は図 2に示すプロセッサユニット(PU)アレイの構成図である。
[図 4]図 4は図 3に示す PUの構成図である。
[図 5]図 5は PUアレイに割り当てる画像領域を説明するための図である。
[図 6]図 6は複数のプロセッサエレメント (PE)に処理を割り当てる画素データを説明 するための図である。
[図 7]図 7はフィルタ処理における複数の PEの割り当てを説明するための第 1部分図 である。
[図 8]図 8はフィルタ処理における複数の PEの割り当てを説明するための第 2分図で ある。
[図 9]図 9はフィルタ処理における複数の PEの割り当てを説明するための第 3部分図 である。
[図 10]図 10はフィルタ処理における複数の PEの割り当てを説明するための第 4部分 図である。
[図 11]図 11は図 4に示す PEの構成図である。
[図 12]図 12は複数の PEにおいて行うフィルタ処理を説明するための第 1部分図であ る。
[図 13]図 13は複数の PEにおいて行うフィルタ処理を説明するための第 2部分図であ る。
[図 14]図 14は図 13に示すフィルタ処理における各 PEのストリームレジスタの動作を 説明するための第 1部分図である。 [図 15]図 15は図 13に示すフィルタ処理における各 PEのストリームレジスタの動作を 説明するための第 2部分図である。
[図 16]図 16は図 13に示すフィルタ処理における各 PEのストリームレジスタの動作を 説明するための第 3部分図である。
[図 17]図 17は図 13に示すフィルタ処理における各 PEのストリームレジスタの動作を 説明するための第 4部分図である。
[図 18]図 18は図 13に示すフィルタ処理における各 PEのストリームレジスタの動作を 説明するための第 5部分図である。
[図 19]図 19は図 13に示すフィルタ処理における各 PEのストリームレジスタの動作を 説明するための第 6部分図である。
[図 20]図 20は図 13に示すフィルタ処理における各 PEのストリームレジスタの動作を 説明するための第 7部分図である。
[図 21]図 21は図 13に示すフィルタ処理における各 PEのストリームレジスタの動作を 説明するための第 8部分図である。
[図 22]図 22は図 13に示すフィルタ処理における各 PEのストリームレジスタの動作を 説明するための第 9部分図である。
[図 23]図 23は図 13に示すフィルタ処理における各 PEのストリームレジスタの動作を 説明するための第 10部分図である。
[図 24]図 24は図 13に示すフィルタ処理における各 PEのストリームレジスタの動作を 説明するための第 11部分図である。
[図 25]図 25は PU内の共有機能ユニットを説明するための図である。
[図 26]図 26は図 3等に示すストリーム制御ユニット(SCU : Stream Control Unit)によ る記憶領域の管理方法を説明するための第 1部分図である。
[図 27]図 27は図 3等に示す SCUによる記憶領域の管理方法を説明するための第 2 部分図である。
[図 28]図 28は図 3等に示す SCUによる記憶領域の管理方法を説明するための第 3 部分図である。
[図 29]図 29は図 3等に示す SCUによる記憶領域の管理方法を説明するための第 4 部分図である。
[図 30]図 30は図 3等に示す SCU :よる記憶領域の管理方法を説明するための第 5 部分図である。
[図 31]図 31は図 3等に示す SCU :よる記憶領域の管理方法を説明するための第 6 部分図である。
[図 32]図 32は図 3等に示す SCU :よる記憶領域の管理方法を説明するための第 7 部分図である。
[図 33]図 33は図 3等に示す SCU :よる記憶領域の管理方法を説明するための第 8 部分図である。
[図 34]図 34は図 3等に示す SCU :よるコマンド「set BR lof4x4 sam」の実行 処理を説明するための図である。
[図 35]図 35は図 3等に示す SCU :よるコマンド「set— bxy」の実行処理を説明する ための図である。
[図 36]図 36は図 3等に示す SCU :よるコマンド「set BR 8xl#to#bxy」の実仃処 理を説明するための図である。
[図 37]図 37は図 3等に示す SCU :よるコマンド rSet BR4567#lof4x4jの実行処理 を説明するための図である。
[図 38]図 38は図 3等に示す SCU :よるコマンド「set in#buffistraight」の実行処理を 説明するための図である。
[図 39]図 39は図 3等に示す SCU よるコマンド「set— in#buffiwith#BR#2xl」の実行 処理を説明するための図である。
[図 40]図 40は図 3等に示す SCU よるコマンド「set— in#buffiwith#BR#4xl」の実行 処理を説明するための図である。
[図 41]図 41は図 3等に示す SCU よるコマンド「set— BR#16xl Iの実行処理を説明 するための図である。
[図 42]図 42は図 3等に示す SCU よるコマンド「set— BR#32xl Iの実行処理を説明 するための図である。
[図 43]図 43は図 3等に示す SCU よるコマンド「set— BR#64xl Iの実行処理を説明 するための図である。
[図 44]図 44は図 3等に示す SCUによるコマンド「set— BR#64x2」の実行処理を説明 するための図である。
[図 45]図 45は図 3等に示す SCUによるコマンド「set— BR#64x2x2」の実行処理を説 明するための図である。
[図 46]図 46は図 3等に示す SCUによるコマンド「set— BR#64x3」の実行処理を説明 するための図である。
[図 47]図 47は図 3等に示す SCUによるコマンド「set— BR#64x3x3」の実行処理を説 明するための図である。
[図 48]図 48は図 3等に示す SCUによるコマンド「set— BR#64x4」の実行処理を説明 するための図である。
[図 49]図 49は図 3等に示す SCUによるコマンド「set— BR#64x4x4」の実行処理を説 明するための図である。
[図 50]図 50は図 3等に示す SCUによるコマンド「set— BR#64x9」の実行処理を説明 するための図である。
[図 51]図 51は図 3等に示す SCUによるコマンド「set— BR#64x9x3」の実行処理を説 明するための図である。
[図 52]図 52は図 3等に示す SCUによる記憶領域の管理方法を説明するための図で ある。
[図 53]図 53は図 3等に示す SCUによる記憶領域の管理方法を説明するための図で ある。
[図 54]図 54は図 3等に示す SCUによる記憶領域の管理方法を説明するための図で ある。
[図 55]図 55は図 3等に示す SCUによるコマンド「set#DR#mask#64xl」の実行処理を 説明するための図である。
[図 56]図 56は図 3等に示す SCUによるコマンド「set#DR#packed#64xl」の実行処理 を説明するための図である。
[図 57]図 57は図 3等に示す SCUによるコマンド「set#DR#64xl」の実行処理を説明す るための図である。
[図 58]図 58は図 3等に示す SCUによるコマンド「set#DR#128xl」の実行処理を説明 するための図である。
[図 59]図 59は図 3等に示す SCUによるコマンド「set#DR#192xl」の実行処理を説明 するための図である。
[図 60]図 60は図 3等に示す SCUによるコマンド「set#DR#256xl」の実行処理を説明 するための図である。
[図 61]図 61は SCUが実行するコマンド「exec」を説明するための図である。
[図 62]図 62は SCUが実行するコマンド「Branch」を説明するための図である。
[図 63]図 63は SCUが実行するコマンド「set」を説明するための図である。
[図 64]図 64は SCUが実行するコマンド「addition」を説明するための図である。
[図 65]図 65は SCUが実行する特殊コマンド、並びにパラメータを説明するための図 である。
[図 66]図 66は SCUと、プロセッサユニットとの処理の関係を説明するための図である
[図 67]図 67は SCUにおけるコマンドおよびデータのキュー処理を説明するための図 である。
[図 68]図 68は図 2に示す画像処理エンジンのその他の構成図である。
[図 69]図 69は、第 2実施形態の画像処理エンジン 102の全体構成図である。
[図 70]図 70は、図 69に示す PUアレイ 202— 0の構成図である。
[図 71]図 71は、第 2実施形態における PEnの構成図である。
[図 72]図 72は、 SCU # 10の構造を示すブロック図である。
[図 73]図 73は、第 2実施形態において、ストリーム制御ユニット(SCU : Stream Contr ol Unit)による記憶領域の管理方法を説明するための部分図である。
[図 74]図 74は、 SCU # 10内部に設定される多重矩形画像領域に関する処理を行う 機能を説明するための図である。
[図 75]図 75は、第 2実施形態における記憶領域内の矩形画像領域 WIR内の矩形画 像領域 BRの規定方法の一例を示す図である。 [図 76]図 76は、第 2実施形態における記憶領域内の矩形画像領域 WOR内の矩形 画像領域 DRの規定方法を一例を示す図である。
符号の説明
[0008] 100· "画像処理装置、 101…ホストプロセッサ、 102…画像処理エンジン、 103· ·· コーデックエンジン、 104· ··メモリ I/F、 105· ··メモリシステム、 106· ··センサ IZF、 1 07· ··カメラモジュール、 108…記録媒体 IZF、 109…記録媒体、 110…内蔵表示装 置 IZF、 111· ··内蔵表示装置、 112· ··ビデオ IZF、 201· ··制御プロセッサ、 202—0 〜3…プロセッサユニット(PU)アレイ、 203— 0〜3"'SCU、 204— 0〜3…ロー力ノレ メモリ、 PU…プロセッサユニット、 401…入力ラインバッファ、 403· ··共有機能ユニット 、 404· ··出力ラインバッファ、 PE…プロセッサエレメント、 SR0〜2…ストリームレジス タ、 ALU…演算論理ユニット
発明を実施するための最良の形態
[0009] <第 1実施形態 >
以下、本発明の信号処理装置の実施の形態について、画像データの処理を例示 して述べる。
先ず、本実施形態の構成要素と、本発明の構成要素との対応関係を説明する。 図 2等に示すストリーム制御ユニット(SCU: Stream Control Unit) 203— 0〜3力本 発明の入出力データ制御部の一例である。
図 3等に示すプロセッサユニット PUが本発明の信号処理回路の一例である。
図 4等に示す PEが本発明の信号処理エレメントの一例である。
図 1に示すホストプロセッサ 101が本発明のホスト処理回路の一例である。 図 1等に示すメモリシステム 105あるいは図 2等に示すローカルメモリ 204— 0〜3が 本発明の記憶部の一例である。
本発明の記録媒体は、半導体メモリ、磁気ディスク、光ディスク、光磁気ディスクなど の任意の記録媒体を適用することができる。
[0010] 図 1は、本発明の信号処理装置の 1実施形態に係わる画像処理装置 100の全体構 成図である。
画像処理装置 100は、例えば、ホストプロセッサ(Host CPU) 101、画像処理ェンジ ン 102、コーデック (CODEC)エンジン 103、メモリインターフェース(iZF) 104、メモリ システム 105、センサ IZF106、カメラモジュール 107、記憶媒体 lZF108、記憶媒 体 109、内蔵表示装置 IZF110、内蔵表示装置 111、並びにビデオ IZF112を有 する。
[0011] 画像処理装置 100は、ホストプロセッサ 101による画像処理エンジン 102内の処理 のスレッドの制御に特徴を有して 、る。
[0012] [ホストプロセッサ 101]
ホストプロセッサ 101は、画像処理装置 100全体を制御するプロセッサであって、例 えば、実時間オペレーティングシステム (OS)を動作させ、画像処理装置 100で実行 される各種タスクのスケジューリング、記憶媒体 109を用いたファイルシステムの実現
、データ入出力制御などを行う。
[0013] [画像処理エンジン 102]
画像処理エンジン 102は、プログラマブルな画像プロセッサであって、画像処理装 置 100で実行されるアプリケーションプログラムに応じてホストプロセッサ 101が指示 する画像処理を実行する。
画像処理の対象となる画像データとしては、センサ IZF106を介して入力される力 メラモジュール 107で撮影されたデータ、メモリ IZF104を介して入力されるメモリシ ステム 105に格納されたデータ、記憶媒体 IZF108を介して入力される記憶媒体 10 9に格納されたデータ、あるいはコーデックエンジン 103から与えられるデータ、コー デックエンジン 103で処理されたデータがある。
画像処理エンジン 102は、自らの処理結果を、メモリ IZF104を介してメモリシステ ム 105に格納し、記憶媒体 IZF108を介して記憶媒体 109に格納し、コーデックェン ジン 103に出力し、内蔵表示装置 IZF110を介して内蔵表示装置 111に表示し、あ るいはビデオ IZF112を介して外部の装置に出力する。
[0014] [コーデックエンジン 103]
コーデックエンジン 103は、画像および Zまたは音声の圧縮伸長を行うユニットであ り、例えば MPEG(Motion Picture Experts Group)— 2, MPEG— 4, H. 264などの 動画像用コーデックや、 JPEGOoint Photographic Coding Experts Group)や JPEG2 000といった主に静止画に用いられるコーデックなどを実現する。
[0015] [メモリシステム 105]
メモリシステム 105は、ホストプロセッサ 101、画像処理エンジン 102、コーデックェ ンジン 103で処理されるデータ、およびホストプロセッサ 101、画像処理エンジン 102 、コーデックエンジン 103で実行されるプログラム PRGを格納するメモリであり、例え ば DRAMを用いる。
メモリ I/F104は、上記メモリシステム 105とシステムバス 113を結ぶインターフエ一 スである。
[0016] [カメラモジュール 107]
カメラモジュール 107は、レンズ、絞り、シャッターなどの光学系装置、 CCDイメージ センサある 、は CMOSイメージセンサなどの撮像素子、それらを制御するコントロー ルユニットを含む装置である。
カメラモジュール 107は、その撮像結果をデジタル信号に変換された後、センサ IZ F106を介して、画像処理エンジン 102、または、メモリシステム 105に出力する。 ホストプロセッサ 101あるいは画像処理エンジン 102は、センサ I/F106を介して、 カメラモジュール 107に対して制御信号を出力する。
[0017] [記録媒体 109]
記憶媒体 109は、例えばノヽードディスク、フラッシュメモリなどの不揮発性メモリ、 D VD(Digital Versatile Disk)などの光ディスク、あるいはテープ型の記憶媒体であって 、記憶媒体 IZF108を介して読み出し書き込みが行われる。
[0018] [内蔵表示装置 111]
内蔵表示装置 111は、カメラモジュール 107で撮像された画像を画像処理ェンジ ン 102で処理した結果、あるいは記憶媒体 109に格納されている画像データを表示 する。
内蔵表示装置 111は、内蔵表示装置 IZF 110を介して入力した画像データに応じ た画像を表示する。
[0019] [ビデオインターフェース 112]
ビデオ IZF112は、外部の画像表示装置や画像記録装置に対して画像データを 供給するためのインターフェースである。
[0020] [画像処理エンジン 102]
図 2は、図 1に示す画像処理エンジン 102の構成図である。
画像処理エンジン 102は、制御プロセッサ(CPU) 201、 PU (プロセッサ'ユニット) アレイ 202— 0〜202— 3、ストリーム制御ユニット(SCU : Stream Control Unit) 203
— 0〜203— 3、並びにローカルメモリ 204— 0〜204— 3を有する。
[0021] 画像処理エンジン 102では、 SCU203— 0〜3と、 PUアレイ 202— 0〜202— 3内 の PEとが異なるスレッドで動作する。
[0022] 制御プロセッサ 201は、画像処理エンジン 102全体を制御するプロセッサであって
、 PUアレイ 202— 0〜202— 3および SCU203— 0〜203— 3に対する設定や起動
、および SIMD(Single Instruction Multiple Data)型プロセッサアレイである PUアレイ
202での並列化が困難な処理の実行を担う。
[0023] PUアレイ 202— 0〜202— 3は、プログラマブルな演算部であって、後述するように 複数の SIMD型プロセッサアレイ力 構成される。
[0024] SCU203— 0〜203— 3は、 PUアレイ 202— 0〜202— 3が必要とするデータを内 部バスを介してメモリシステム 105から読み出す場合、あるいは PUアレイ 202— 0〜2
02— 3が処理した結果を内部バスを介してメモリシステム 105に書き込む場合のデー タ入出力を制御する。
[0025] ローカルメモリ 204— 0〜204— 3は、画像処理エンジン 102のワーキングメモリで あって、メモリシステム 105に格納された画像データの一部の保持、それぞれ PUァレ ィ 202— 0〜202— 3で処理された中間結果の格納、それぞれ PUアレイ 202— 0〜2 02— 3で実行されるプログラムや各種パラメータの格納などを行う。
[0026] 画像処理エンジン 102は、ホストプロセッサ 101の制御により、例えば、図 2に示す PUアレイ 202— 0〜202— 3を共通のスレッドで動作させる。
共通のスレッドとは、例えば、共通のプログラムに基づいて処理を進めることを意味 する。
ホストプロセッサ 101の制御により、 SCU203— 0〜203— 3は、 PUアレイ 202— 0 〜202 3とは別のスレッドで動作させる。 [0027] [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つのプロセッ サユニットで共有することで、配線を少なく出来るとともに、バス制御を簡単にできる。 プロセッサュ-ット?11 # 00〜# 03は、シリアルに接続したことで、隣接画素データ を頻繁に使用する画像処理にお 、て、 SCU203— 0を介さずに画素データを直接 的に、隣接するプロセッサユニットに出力でき、処理時間を短縮できる。
PU— SIMD処理回路 # 1〜 # 3は、 PU— SIMD処理回路 # 0と同様の構成を有 している。
[0028] [プロセッサユニット PU # 00]
図 4は図 3に示すプロセッサユニット PU # 00の構成図である。
プロセッサユニット PU # 00は、例えば、入力ラインバッファ (In Line Buffer)401、複 数個のプロセッサエレメント PE0〜 15、 PE間で共有する共用機能ユニット (Shared Fu notion Unit)403、出力ラインバッファ 404を有する。
[0029] 図 4に示す入力ラインバッファ 401は、図 3に示す入力データバス I— BUS0に接続 されている。 出力ラインバッファ 404は、 34に示す出力データバス O—BUS0に接続されて!、る
[0030] 共有機能ユニット 403および PEO〜15は、入力ラインバッファ 401と出力ラインバッ ファ 404との間に並列に接続されて!ヽる。
PE0〜15は、図中左右に隣接する PE間で接続を有し、隣接する PE間でデータの 受け渡しを行うことができる。
図 3および図 4で示した例では、一つのプロセッサユニット PUあたり 16個のプロセッ サエレメント PEを有し、一つの PU—SIMD処理回路あたり 4個のプロセッサユニット PUを有するので、合計 64個の PEで PUアレイ 202— 0〜202— 3の各々が構成され ている。
[0031] 図 3に示すように、プロセッサユニット PU間は、図 4におけるプロセッサエレメント PE 間と同様の接続を有する。
すなわち、あるプロセッサユニット PUにおける右端の PE15は、その右側のプロセッ シングユニットにおける左端の PE0と接続する。
具体的には、図 3に示すプロセッサユニット PU # 01の図 4に示す PE15は、図 3に 示すプロセッサユニット PU # 02の図 4に示す PE0と接続されて!、る。
[0032] 図 4に示すように、プロセッサエレメント PE0〜15が、隣接する両側の PE間でのみ 直接データ入出力をできるように構成したことで、配線構造を非常に簡単にできる。 また、隣接する PE0〜15間で画素データを入出力して共用することで、記憶領域へ のアクセス回数を低減することができる。
[0033] SCU(Stream Control Unit)203— 0から入力データバス I— BUS0を介してプロセッ サユニット PU # 00に入力したデータは、 PU # 00内の入力ラインバッファ 401に書 き込まれる。
プロセッサエレメント PE0〜15の各々は、入力ラインバッファ 401から読み出したデ ータを用いて演算を行い、その演算結果を出力ラインバッファ 404に書き込む。
SCU203_0は、出力ラインバッファ 404から演算結果を読み出す。
[0034] 図 3に示すように、 PUアレイ 202— 0は、 4つの PU— SIMD処理回路 # 0〜# 3を 独立して並列に動作させることも、直列動作させることもできる。当該動作制御は、 S CU203— 0力 入力データバス I— BUS0〜3および出力データバス O— BUS0〜3 を切り換えることで実現される。
[0035] 図 3に示すコントロールユニット 303— 0は、図示されない命令格納用メモリを有し、 当該命令格納用メモリから読み出した命令をデコードして得た制御信号を、 PU— SI MD # 0内の全ての PEに出力する。
コントロールユニット 303— 0内には、ここには図示されないプログラムフロー制御用 ノレープレジスタや、後述する PE内のストリームレジスタにアクセスするためのポインタ レジスタが含まれる。
ループレジスタは、プログラム中のループ回数を制御するレジスタであり、制御プロ セッサ 201が設定する力、あるいはプログラム実行時に命令により設定することができ る。
命令によりループレジスタを設定する場合に、 PE内のレジスタ値をソースオペランド として指定することができる。その際には複数の PEのうち、予め決められた PE、例え ば図中左端の PE、例えば、プロセッサユニット PU # 00の PE0、のレジスタ値を使用 する。
ポインタレジスタについても、 PE内のレジスタ値をソースオペランドとして指定するこ とができる力 ループレジスタの場合と同様特定の PEのレジスタ値を使用する。 コントロールユニット 303— 1から 303— 3についても同様である。
[0036] カメラモジュール 107を用いて撮像された静止画像を記録する場合を例に取り上げ
、画像処理装置 100における処理手順ならびに処理分配を説明する。
[0037] カメラモジュール 107内の撮像素子で撮影されたデータは、水平スキャンラインごと にセンサ I/F106を介して読み出され、画像処理エンジン 102に出力されると共に、 メモリシステム 105に格納される。この際、画像処理エンジン 102では、検波処理の 一部が実行される。
メモリシステム 105に 1フレーム分の画像データが格納されると、画像処理エンジン 102は、内部の PU—SIMD処理回路を効率よく並列動作させるため、 1フレーム分 の画像データのうち、必要な矩形画像領域を読み出しながら検波処理の残りや各種 カメラ信号処理、ならびに各種画像処理を実行する。 画像処理エンジン 102の処理結果は、メモリシステム 105に格納される。
画像処理エンジン 102は、解像度変換も行う。解像度変換された画像データは、内 蔵表示装置 IZF110を介して内蔵表示装置 111に表示される。
コーデックエンジン 103は、メモリシステム 105に格納されている画像処理エンジン 102により処理された複数フレームの画像データを用いて画像圧縮を行う。圧縮され た画像データは、記憶媒体 IZF108を介して記憶媒体 109に記録される。
[0038] 画像処理エンジン 102は、複数個の PUアレイ 202— 0〜202— 3で構成されるが、 ぞれぞれの PUアレイ 202— 0〜202— 3は、フレーム内の異なる領域を処理する。 本実施形態のように 4つの PUアレイ 202— 0〜202— 3で構成する場合、例えば図 5に示すように各 PUアレイ 202— 0〜202— 3に領域を割り当てることができる。
PUアレイ 202— 0〜202— 3の各々は、前述したように 64個の PEから成る PU SI MD処理回路を複数個有し、例えば図 6に示すように、各 PUアレイ 202— 0〜202 —3に割り当てた領域を、さらに横 64ピクセル幅の矩形画像領域に分割し、各ピクセ ルを 1つの PEに割り当てることができる。
この時、各 PEは、図 7に示すように、自らの割り当てられた縦方向のピクセル列を順 に処理する。
[0039] 例えば、 PUアレイ 202— 0が図 8に示すように、 5 X 5画素のフィルタ処理を行う場 合を考える。
この時、 PUアレイ 202— 0内の各 PEは、図 8に示すように、処理対象の画素位置 P ixelの画素データのフィルタ処理を行うために、画素位置 Pixelを中心とした 5 X 5の 画素位置の画素データを用いる。
PUアレイ 202— 0内の各 PEは、図 8に示す矢印(図中下向き)に順に処理対象の 画素位置を移動させる。
PUアレイ 202— 0内の各 PEが画素位置 Pixelの上記 5 X 5画素のフィルタ処理を 終了すると、 SCU203— 0は、図 9に示すように、次の 1ライン分の画素位置の画素 データをローカルメモリ 204— 0あるいはメモリシステム 105から読み出して図 4に示 す PUアレイ 202 0内のプロセッサユニット PUの入力ラインバッファ 401に書き込む そして、 PUアレイ 202— 0内の各 PEは、図 10に示すように、次の画素位置 Pixel— nextの画素データの 5 X 5画素のフィルタ処理を行う。
[0040] 図 3に示す PU— SIMD # 0を中心に説明したが、 PU— SIMD # 1〜# 3は PU— SIMD # 0と同様である。
PUアレイ 202— 1〜202— 3は、 PUアレイ 202— 0と同様である。
[0041] [プロセッサエレメント PE]
図 4に示す PEn (n = 1〜14)を説明する。
なお、 PEOは PE間では PE1との間でのみデータ入出力を行い、 PE15は PE14と の間でのみデータ入出力を行う点を除いて PEnと同一である。
図 11は、図 4に示す PEnの構成図である。
PEnは、マルチプレクサ MUX1000〜: L005、ストリームレジスタ SRO, SRI, SR2 、レジスタ inO, inlなどの各種レジスタ、演算論理ユニット ALUを有する。
[0042] PEnは、入力ラインバッファ 401からストリームレジスタ SRO, SRI, SR2にデータ、 または、制御フラグが転送され、ストリームレジスタ SRO, SRI, SR2から演算論理ュ ニット用レジスタ群の一部にデータ、または、制御フラグが取り込まれる。
演算論理ユニット ALUでは、演算論理ユニット用レジスタ群を一時格納先として用 いながら演算が行なわれ、演算結果は出力ラインバッファ 404に書き込まれる。これ らの一連の動作は、内容が個別に定められた命令の同時、あるいは、順次実行によ り行われる。
[0043] 入力ラインバッファ 401には、データ用と制御フラグ用があり、それぞれ 1つの PEあ たり 16ビットと 4ビットである。
出力ラインバッファ 404にも、入力ラインバッファ 401と同じぐデータ用と制御フラグ 用があり、それぞれ 1つの PEあたり 16ビットと 4ビットである。
[0044] ストリームレジスタ SRO, SRI, SR2のエントリ数は、それぞれ 16である。
ストリームレジスタ SRO, SR1のデータ長は 16ビットであり、ストリームレジスタ SR2 のデータ長は 4ビットである。
ここで、ストリームレジスタ SR2力 ビットであるのは、ストリームレジスタ SR2が主に 制御フラグの格納に用いられるためであり、演算論理ユニット用レジスタ群の condレ ジスタのデータ長と同じである。
ストリームレジスタ SRO, SRI, SR2は、主に SCU203— 0から入力ラインバッファ 4 01を通して供給される演算に必要なデータの格納や、演算結果の一時待避を行う 際に使用され、直接参照の他にポインタによる参照が可能である。
なお、各ストリームレジスタ SRO, SRI, SR2毎に最大 4つのポインタを定義可能で あり、各ポインタは、ポインタ定義領域の始点を示す Start値、ポインタ定義領域の終 点を示す End値、現在のポインタ位置を示す Current値の 3つの値を有する。
[0045] ポインタの操作については、下記(1)〜(5)に示すようなポインタ操作を実現する命 令がある。
(1)前述の 4つのポインタ中力 選択した 1つのポインタが持つ 3つの値力 選択した 1つの値を即値で書き換える命令。
(2)前述の 4つのポインタ中力も選択した 1つのポインタが持つ 3つの値力も選択した 1つの値を PEO内の一時退避用レジスタ tempO〜3、 tempsの任意の 1つの値で書 き換える命令。ただし、指定した値が反映されるには所定のレイテンシが力かる。
(3)前述の 4つのポインタ中力 選択した 1つのポインタが持つ Current値に正負の即 値を加算して書き換える命令。
(4)前述の 4つのポインタ中力も選択した 1つのポインタが持つ Current値を同じポィ ンタの Start値に書き換える命令。
(5)前述の 4つのポインタ中力も選択した 1つのポインタが持つ 3つの値から選択した 1つの値を読み出し、その値で PU— SIMD内の全 PEにおいて一時退避用レジスタ t emp0〜3、 tempsの任意の 1つを書き換える命令。
[0046] 以上のような構成によるストリームレジスタ SRO, SRI, SR2は、例えば、 2種類のポ インタを用い、第 1のポインタをライト(WRite)ポインタ、第 2のポインタをリード (read)ポ インタとし、データの書き込みとライトポインタのインクリメントを繰り返し、書き込みが 済んだエントリのデータの読み出しとリードポインタのインクリメントを繰り返すことによ り、ストリームレジスタを FIFO(First- In First- Out)として使用可能である。
ストリームレジスタ SRO, SRI, SR2のエントリ数は 16である力 3本あるストリームレ ジスタのうち、ストリームレジスタ SR0と SR1とを連結し、 32エントリのストリームレジス タとして使用することもできる力 連結モード時には、 32エントリのストリームレジスタ S ROとして動作するため、ストリームレジスタ SROのポインタのみ使用可能で、ストリー ムレジスタ SR1は参照できな!/、。
通常モードと連結モードは、すべての命令の実行前に所定の方法により設定し、命 令の順次実行中には変更できな 、。
[0047] ストリームレジスタ SRO, SRI, SR2の参照やポインタ操作を行った際に、 [Start, En d]で定義される領域、または、 [0, EN—1]の領域を超えることがある。ここで、 ENは、ス トリームレジスタ SRO, SRI, SR2のエントリ数 (通常モード時 16、連結モード時 32)と する。この場合には、ポインタの値が存在するエントリになるように以下のような回り込 み処理が行われる。
ストリームレジスタ SRO, SRI, SR2のエントリへの回り込み処理前と後の indexをそ れぞれ idx、 idxwとする。なお、 2種類の回り込み処理の方式は、ストリームレジスタ参 照命令に付加して指定する。
[0048] [Start, End]で定義される領域で回り込み処理する場合
iKidx > End) idxw = Start + (idx— End— 1) % (End - Start + 1);
else if (idxく Start) idxw =End― (Start— idx— 1) % (End— Start + 1);
else idxw = idx;
[0049] [0, EN— 1]の領域で回り込み処理する場合
iKidx≥ EN) idxw = idx % EN;
else if (idx≤ 0) idxw = (EN X (l -idx/EN) + idx) % EN;
else idxw = idx;
[0050] 演算論理ユニット用レジスタ群に属するレジスタは、 PEOにおいて行われる演算の ソースオペランド、あるいは、デスティネーションオペランドに指定可能なレジスタであ る。 |¾ 1 1のレンスタ》10、 inl、 tempO〜d、 temps ^ acc.H/L、 cond、 penum、 const )s それにあたる。
レジスタ inOおよび inl、はデータ長が 16ビットの入力レジスタであり、ストリームレジ スタカ 読み出した内容を格納する。算術論理演算命令のソースオペランドとして指 定できるが、デスティネーションオペランドには指定できな!/、。 レジスタ temp0〜3ならびに tempsはデータ長が 16ビットの一時退避用レジスタであ る。
このうち、レジスタ tempsは、後述する共有機能ユニット 403を利用する際に用いら れるレジスタであり、共有機能ユニット 403へのアクセス以外の場合では、レジスタ te mp0〜3と全く同様にワーキングレジスタとして使用できる。これらのレジスタは、算術 論理演算命令のソースオペランドとデスティネーションオペランドの両方に指定できる レジスタ acc.HZUま主に累積加算命令で用いられ、データ長が合わせて 32ビット の累積加算用レジスタであり、算術論理演算命令のソースオペランドとデスティネー シヨンオペランドの両方に指定できる。 32ビットのうち、上位 16ビットをレジスタ acc.H とし、下位 16ビットをレジスタ ac 丄とし、ソースオペランドとして用いる際に上位か下 位かの指定を行う。
[0051] レジスタ condは、主に条件実行を行う際に用いられるデータ長が 4ビットのコンディ シヨンレジスタである。算術論理演算のデスティネーションオペランドとして指定可能 で、その際には、演算結果のうちの任意の 1ビット、演算論理ユニット ALUにおける 演算の結果、キャリーが立った事を示すキャリーフラグ、あるいは演算結果力^である ことを示すゼロフラグのどれかの選択とコンディションレジスタのどのビットに反映させ るかを指定する。
レジスタ penumは、自身のプロセッシングエレメント番号 (0〜63)が格納されて!、るデ ータ長が 6ビットのプロセッサ番号レジスタであり、読み出し専用である。
レジスタ constは、定数値を格納するデータ長が 16ビットの定数レジスタであり、ェン トリ数は 64である。定数レジスタは、各プロセッシングエレメント毎に持つわけではなく 、共有機能ユニット 403内に持つ。
[0052] PU— SIMD処理回路内の全 PE共通で 1つのエントリを指定して使用する力 算術 論理演算のソースオペランドとして直接指定可能なので、演算論理ユニット用レジス タ群に含めている。
演算論理ユニット用レジスタ群の中には、隣接 PEから参照可能なレジスタも用意さ れて 、る。 PU SIMD処理回路内の n番目の PE # nに注目する。 この場合、当該 PE # nは、演算を行う際、当該 PE # n内のレジスタだけでなぐ隣 接 PE # n—l, # n+ lのレジスタ in0、 inl、 ac H、 ac 丄を参照可能である。
PE # nのレジスタ cond、 acc.H、 acc丄、並びに隣接 PE # n—l, # n+ lのレジスタ i n0、 inl、 ac H、 ac 丄については、その値を PE # nのストリームレジスタ SRO, SRI, SR2に書き戻すことができる。
[0053] PE # nにお 、ては、演算論理ユニット ALUにおける演算効率を高めるために、演 算論理ユニット ALUにおける演算処理と複数のレジスタへのロード、または、ストアが 同時に実行可能となっている。
同時実行可能なオペレーションは下記の A〜Jである。なお、 A〜Iについては、命 令の条件実行が可能である。命令の条件実行とは、主に制御フラグが格納されてい るレジスタ condの任意のビットを指定し、その値が 1の時に命令を実行し、 0の時に命 令を実行しな 、と 、う動作である。
[0054] A:ストリームレジスタ SR0への書き込み
B:ストリームレジスタ SR1への書き込み
C:ストリームレジスタ SR2への書き込み
D:レジスタ inOの書き込み
E:レジスタ in 1への書き込み
F:ストリームレジスタ SR2からレジスタ condへの書き込み
G:共有機能ユニット 403へのファンクション呼び出し
H:出力ラインバッファ 404への書き込み
I:算術論理演算
J:フロー制御命令
[0055] PE # n内の演算論理ユニット ALUで実行可能な算術論理演算を下記表 1に示す 。逆数は後述の共有機能ユニット 403のルックアップテーブル機能を用いて実現する 表 1中、ビット番号命令とは、ソースの 16ビットの最上位ビットから数えて最初に 1が 現れたビット番号を返す命令である。
[0056] [表 1] 于ス亍ィ不一シヨン ソース
命令の種類
オペランド オペランド
16ビット加減算命令 16b 16bit
32ビット加減算命令 32b o bit
¾r A
荣■#。卩 "Π 16または 32bit 16bit
累積加算命令 16または 32bit 16bit
絶対値命令 16bit 16bit
1または 16または
クリア命令
32bit
最大最小値命令 16bit 16bit
二 ¾/與昇 El卩 3 16bit 16bit
コピー命令 16bit 16bit
論理演算命令 16bit 16b
16ビットシフト命令 16bit 16bit
32ビットシフト命令 t 2bit 32b it
比較演算命令 16bit 16bit
ヒット番号命令 16bit 16bit
[0057] 以下、 5x3画素データのフィルタ処理を例に、プロセッサユニット PUおよび PEの動 作例を、図 11に示すストリームレジスタ SRO, SR1に着目して説明する。
図 12に示すように、各 PEは縦の画素データ列を担当し、近傍の画素データに対し て重み付け加算を行った結果をローカルメモリ 204あるいはメモリシステム 105に書き 戻す。
例えば 5x3のフィルタ処理を行う場合、図 13に示すように、 801の領域にある画素 データ 00 01 02 10 11 12 20 21 22 30 31 32 40 41 42の 15個の 画素データに対して重み付け加算を行 、、 802の位置の画素データを算出する。
[0058] 以下、隣接する PE間でどのようにデータの受け渡しが行われるか図を用いて説明 する。以下で用いる図は、データの受け渡しに注目するため模式的に示している。 図 13に示す 802の位置の画素データを含む縦の画素データ列を担当する PEが P E#nだとすると、図 14に示すように、画素データ 20 21 22の縦 3画素データが PE #nのストリームレジスタ SRO保持され、画素データ 10 11 12は隣接するプロセッ サエレメント PE #(n-l)、画素データ 00、 01、 02はさらにその隣のプロセッサエレメント PE #(n- 2)のストリームレジスタ SR0に保持されて!、る。
同様に、画素データ 30、 31、 32は PE #(n+l)、画素データ 40、 41、 42は PE #(n+2 )のストリームレジスタ SR0保持されて!、る。
[0059] 本実施形態では、ストリームレジスタごとに最大 4つのポインタを定義可能である。た だし、 PU— SIMD処理回路 # 0〜# 3内の全 PEに共通であり、コントロールユニット 303— 0内〖こ含まれる。以下の例では、ストリームレジスタ SR0、 SRIそれぞれ一つ のポインタをリードポインタ、一つのポインタをライトポインタとして定義し、ストリームレ ジスタを FIFOとして利用している。図では、リードポインタの位置が最下段になるよう に模式的に示している。
本実施例では、レジスタ inOにはストリームレジスタ SRO, SR1の両方からデータの ロードが可能である。同様にレジスタ inlにもストリームレジスタ SR0、 SRIの両方から データのロードが可能である。一方、ストリームレジスタ SRO, SRI, SR2には、隣接 する PEのレジスタ inO, inl, acc.HZLからのデータを書き込むことができる力 レジ スタ inOはストリームレジスタ SR0、レジスタ inlはストリームレジスタ SRIにのみ書き込 むことができる。しかし、回路規模は増えるが両方から書き込み可能としてもよい。
[0060] 第 1のサイクルでは、図 15に示すように、ストリームレジスタ SR0におけるリードポィ ンタの Current値にある画素データがレジスタ inlに書き込まれる。すなわち、 PE #nの 場合には、画素データ 20がレジスタ inl書き込まれる。演算論理ユニット ALUでは、 レジスタ inlに書き込まれた画素データ値をソースオペランドとして読み出し、係数を 乗算する。演算に必要な係数は、定数レジスタであるレジスタ constに格納されている
[0061] ストリームレジスタ SRO, SRI, SR2にアクセスする場合、ポインタレジスタの Curren t値の位置だけでなく Current置からのオフセットを指定してアクセスすることができる。 第 2のサイクルでは、図 16に示すように、ストリームレジスタ SR0におけるリードポイン タの Current値にオフセット 1を加えた位置にある画素データがレジスタ inlに書き込 まれる。すなわち、 PE #nの場合には、画素データ 21がレジスタ inlに書き込まれる。 演算論理ユニット ALUでは、 inl(l 102)に書き込まれた画素データ値をソースオペラ ンドとして読み出し、係数を乗算する。また、前サイクルでレジスタ inlに格納された画 素データは、右隣りの PEのストリームレジスタ SR1に書き込まれる。
[0062] 以後同様の動作を続けることにより、図 17に示す状態となる。この時点で、自身の ストリームレジスタ SROに格納している縦 3画素データ分の処理が完了する。
さらに次サイクル以降は、図 18に示すように、ストリームレジスタ SR1に格納された 画素データを順次処理していく。この際、ストリームレジスタ SR1からの読み出し時に 、リードポインタをインクリメントする。
以降同様の動作を続けることにより、図 19に示す状態となる。この時点で、もともと 左隣のプロセッサエレメント (PE) 402が持つストリームレジスタ SROに格納されて!ヽ た縦 3画素データ分の処理が完了する。
[0063] 次サイクル以降も同様の動作を繰り返す力 先に述べたように、ストリームレジスタ S R1には、レジスタ inOから書き込むことができない。従って、ストリームレジスタ SR1に 格納された画素データの処理を行いながら、ストリームレジスタ SROに格納された自 身の画素データを左隣の PEが持つストリームレジスタ SR1に渡していくため、図 20 に示すように、ストリームレジスタ SROの画素データをレジスタ inlに、ストリームレジス タ SR1の画素データをレジスタ inOに書き込む。この際、ストリームレジスタ SROと SR 1の両方のリードポインタをインクリメントする。演算論理ユニット ALUでは、レジスタ in 0に書き込まれた画素データ値をソースオペランドとして読み出し、係数を乗算する。
[0064] 以降同様の動作を続けることにより、図 21に示す状態となる。この時点で、二つ左 隣縦 3画素データ分の処理が完了する。また、ストリームレジスタ SR1には、右隣の P Eが持つストリームレジスタ SROに格納されて!、た画素データが格納されて!、る。 以降は、図 22〖こ示すよう〖こ、再びストリームレジスタ SR1からレジスタ inlへの書き 込み、レジスタ inlに書き込まれた画素データ値と係数の乗算、レジスタ inlから左隣 の PEが持つストリームレジスタ SR1への書き込みを並行して行っていく。
以降同様の動作を続けることにより、図 23に示す状態となる。この時点で、図 13の 801で示した 5x3の領域に含まれる画素データのフィルタ処理が完了する。また、こ の時点までに、入力ラインバッファ 401には、 SCU203— 0から次のラインの画素デ ータデータが書き込まれて 、る。 [0065] 最後に、入力ラインバッファ 401からストリームレジスタ SROに次ラインの画素データ をロードするとともに、フィルタ処理の結果を出力ラインバッファ 404に書き込む。 SC U203— 0は、出力ラインバッファ 404に書き込まれた演算結果を読み出し、ローカル メモリ 204あるいはメモリシステム 105に書き戻す。
以上のように、本実施形態によれば、演算論理ユニット ALUの演算処理と並行して 、ストリームレジスタ SRO, SR1を用いた隣接 PE間のデータの受け渡しを効率よく行 うことができ、演算論理ユニット ALUに対して間断なくデータを供給することが可能で あり、かつ隣接 PE間でデータを共用することにより、ローカルメモリ 204— 0からの読 み出し頻度を低減している。
[0066] [共有機能ユニット 403]
図 4を参照して説明したように、プロセッサユニット PU # 00は、共有機能ユニット 40 3を有する。
共有機能ユニット 403は、図 4に示す PE # 0〜15の図 11に示す演算論理ユニット ALUで実行可能な演算命令以外の演算のために用いられる。
プロセッサエレメント PE # 0〜15は、共有機能ユニット 403を利用するために、ファ ンクシヨン呼び出し命令を使用する。その際、 PE # 0〜15は、後述の利用可能な機 能との対応を予め定めた機能識別番号を命令に付加して指定した要求を共有機能 ユニット 403に出力する。
PE # 0〜15は、ソースオペランドに指定するレジスタに必要なデータをセットしてフ アンクシヨン呼び出し命令を実行すると、所定のレイテンシ後に結果がレジスタ temps に返される。なお、ソースオペランドに指定したレジスタは、参照結果が書き戻される まで書き換え不可である。
[0067] 共有機能ユニット 403が利用可能な機能を以下に示す。
共有機能ユニット 403は、例えば、図 25に示すように、ルックアップテーブル 1202 、加算演算器 1203、最大最小値演算器 1204およびべクタ演算ユニット 1205など の機能を有する。
ルックアップテーブル 1202は、複数のプロセッサエレメント(PE)間で共用し、ェン トリ数に依存してレイテンシが可変な機能である。 加算演算器 1203は、複数の PE力ものデータを入力とし、データ数に依存してレイ テンシが可変な機能である。
最大最小値演算器 1204は、複数の PE力 のデータを入力とし、データ数に依存 してレイテンシが可変な機能である。
ベクタ演算ユニット 1205は、次元に依存してレイテンシが可変な機能である。
[0068] 共有機能ユニット 403のルックアップテーブル 1202としての機能を説明する。
ルックアップテーブル 1202は 1024エントリの単一テーブルとしての利用だけでなく 、 512エントリや 256エントリなど、エントリ数を変えて使用することができる。
また、ルックアップテーブル 1202は、 1種類だけではなぐ複数の種類のテーブル を保持することもできる。例えば、ルックアップテーブル 1202は、逆数テーブルと対 数テーブルを 1024エントリ中の異なる領域に格納することができる。
ルックアップテーブル 1202は、 16個の PEで共有しているので、 1024エントリを単 一テーブルとして使用した場合には、参照に要するサイクル数は 16となる。
これに 1サイクルのアクセス遅延を加えた 17が 1024エントリのルックアップテーブル 1202のレイテンシである。
エントリ数を少なくし、同一種類のテーブルを複数個格納した場合には、 1個のテー ブルを共有する PEの数が減る為、参照に要するサイクル数も減少する。例えば、 25 6エントリのテーブルとした場合には、 4個ずつの PEで共有することになる為、参照に 要するサイクル数は 4、レイテンシは 5となる。なお、ルックアップテーブル 1202の構 成は、共有機能ユニット 403がプログラム実行前に設定する。
[0069] 共有機能ユニット 403の加算演算器 1203としての機能について説明する。
加算演算器 1203は、複数個の PEからデータを入力すると、そのデータの合計値 を所定のレイテンシ後にデータを出力した PEに出力する。
共有機能ユニット 403に 1つの加算演算器 1203があり、これを 16個の PEで共有す る場合は、演算に要するサイクル数は 16となる。これに 1サイクルのアクセス遅延をカロ えた 17が加算演算器 1203のレイテンシである。
共有機能ユニット 403に 2つの加算演算器 1203があり、それぞれを 8個の PEで共 有する場合は、演算に要するサイクル数は 8である。これに 1サイクルのアクセス遅延 をカロえた 9が加算演算器 1203のレイテンシである。なお、複数の加算演算器 1203 の構成は、共有機能ユニット 403がプログラム実行前に設定する。
[0070] 共有機能ユニット 403の最大最小値演算器 1204としての機能について説明する。
最大最小値演算器 1204は、複数個の PEからデータを入力すると、それらのデー タの最大値、最小値が所定のレイテンシ後に、データを出力した PEに出力される。 共有機能ユニット 403に 1つの最大最小値演算器 1204があり、これを 16個の PEで 共有する場合は、演算に要するサイクル数は 16となる。これに 1サイクルのアクセス 遅延をカ卩えた 17が最大最小値演算器 1204のレイテンシである。
共有機能ユニット 403に 2つの最大最小値演算器 1204があり、それぞれを 8個の P Eで共有する場合は、演算に要するサイクル数は 8となる。これに 1サイクルのァクセ ス遅延をカ卩えた 9が最大最小値演算器 1204のレイテンシである。なお、複数の最大 最小値演算器 1204の構成は、共有機能ユニット 403がプログラム実行前に設定す る。
[0071] 共有機能ユニット 403のべクタ演算ユニット 1205の機能について説明する。
ベクタ演算ユニット 1205は、複数個の PE力 入力したデータ数を次元とするベクタ 演算を行い、結果が所定のレイテンシ後に、データを出力した PEに出力する。
以下の式(1)は 2個の PEによる 2次元のベクタ演算であるから演算に要するサイク ル数は 3である。これに 1サイクルのアクセス遅延をカ卩えた 3がべクタ演算ユニット 120 5のレイテンシである。
[0072] [数 1]
Figure imgf000027_0001
[0073] 同様に以下の式(2)の 4個の PEによる 4次元のベクタ演算であるから演算に要する サイクル数は 4である。これに 1サイクルのアクセス遅延をカ卩えた 5がべクタ演算ュ-ッ ト 1205のレイテンシである。
[0074] [数 2]
Figure imgf000028_0001
[0075] どちらの場合も係数となる行列の各要素の値は、あら力じめ保持しておく。
[0076] [SCU(Stream Control Unit)203一 0〜203一 3]
以下、 SCU203— 0について説明する。
SCU203— 1〜203— 3は、 SCU203— 0と同じである。
[0077] SCU203— 0は、図 3等に示すように、複数の PU—SIMD (Single Instruction Mult iple Data)処理回路 # 0〜 # 3に対して、それを構成する個々のプロセッサエレメント PEの処理に必要なデータを効率よくデータを入出力するための制御を行う。
SCU203—0は、処理に必要なデータを半導体メモリなどに代表される記憶装置 に収納する。
PU— SIMD処理回路 # 0〜# 3は、 SIMD型プロセッサであるため、すべての PE に対する入出力は時間的に同時に行われる。従って、 SCU203— 0による PU— SI MD # 0〜 # 3に対する入出力は、 PEの個数分の入出力データを同時に入出力す ることになる。以下同時に入出力されるデータを、ストリームデータと呼ぶことにする。
[0078] 一方、 PU— SIMD処理回路 # 0〜 # 3は画像情報の処理を主に行うが、処理対象 である画像情報は、メモリなどの記憶装置において、物理的な 1次元のアドレスで管 理された記憶領域内に、論理的な 2次元記憶領域を確保して記憶されている。その 画像データの基本単位は画素データと呼ばれる。
SCU203— 0は、 PU— SIMD処理回路 # 0〜# 3と、メモリシステム 105および口 一カルメモリ 204— 0との間に位置し、複数の画素データをストリームデータに変換し て入出力を行う機能を持っている。
[0079] SCU203— 0の機能を具体的に示す。
(D 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との間で、 通信を行うためのインターフェースを介して接続する。
[0080] PU— SIMD処理回路 # 0〜 # 3が、ストリームデータを処理する場合、記憶領域上 に矩形画像領域を多重 (階層)指定し、それぞれの矩形画像領域を移動させながら、 データの Read/WRite処理を行うことで効率よく処理を行う。
そのため、 SCU203— 0内部に多重構造の矩形画像領域を定義する。 図 26は、記憶領域上の多重矩形画像領域から、 PU— SIMD処理回路 # 0〜# 3 ヘストリームデータを WRiteする場合及び、 PU— SIMD処理回路 # 0〜 # 3から記 憶領域上の多重矩形画像領域へ、ストリームデータを WRiteする場合の動作を示し ている。
[0081] SCU203— 0が扱う記憶領域内の矩形画像領域の階層構成を、図 26を参照して 説明する。
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指定の 一連の繰り返し処理をプログラム可能である。
[0082] SCU203— 0は、矩形画像領域 WR内に、画素データの書き込み先である矩形画 像領域 CRを指定する。
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、 D Rを、 2次元論理座標で指定が可能である。
SCU203— 0は、記憶領域に対して矩形画像領域 WRを物理アドレスで指定でき る。
SCU203— 0は、矩形画像領域 WR,AR,DR,CR.DR内部の画素データがァクセ スされた場合には、記憶領域へアクセスが必要になるため、論理アドレスから物理ァ ドレスへの変換を行って記憶領域にアクセスする。
[0083] 図 27は、 SCU203—0内部に設定される多重矩形画像領域に関する処理を行う 機能を説明するための図である。
図 27に示すように、 SCU203 Οίま、 PU SIMD処理回路 # 0〜# 3の各々に、 記憶領域内の矩形画像領域 WR0〜3の各々を割り当てる。
矩形画像領域 WRO〜3は、メモリシステム 105やローカルメモリ 204— 0などの記憶 領域内に規定される。
矩形画像領域 WRO〜3の各々に、矩形画像領域 AR0〜7, BR0〜7, CRO〜3, DRO〜3が規定される。
[0084] 図 27〖こ示す SCU203— 0は、 WI— data— opにより、矩形画像領域 BR内のデー タをストリームデータへ変換して、出力バッファ out— bufに WRiteする。
また、 SCU203— 0は、データ変換コマンド WO#data#opにより、 PU— SIMD処理 回路 # 0〜 # 3から入力して入力バッファ in#bufに収納されて!、るストリームデータを データ変換して矩形画像領域 DRに WRiteする。
[0085] 図 26を参照して上述したように、矩形画像領域 WR内に、矩形画像領域 AR, BR, CR, DRを階層構造で規定することで、例えば、矩形画像領域 AR, CR内で矩形画 像領域 BR, DRを相対的に移動させる場合に、基準座標を矩形画像領域 AR, BR, CR, DR内のローカルな座標に加算する形式でのアドレス表現が可能になり、プログ ラミングが簡単になる。
本実施形態では、矩形画像領域の個数や多重指定の階層数などを具体的な数字 で表現している力 その構成や数量は組み合わせ自由であり、幅広い画像処理の必 要性に応じて構成を変えることが可能である。
[0086] SCU203— 0がデータ転送のために行う接続を説明する。
[システムノ ス接続]
図 1に示すシステムバス 113は、 SCU203_0を、ホストプロセッサ 101およびメモリ システム 105などの他の処理モジュールを接続するバスであり、以下の特徴を有する
(1)システムバス 113は、 LSIや SOC内部で標準化されたバス規格を採用すること が可能である。
(2)システムバス 113のバス幅は 128ビットであり、連続データ転送 (バースト転送) が可能な構成とすることで、バス使用効率を向上できる。
(3)システムバス 113上の記憶装置(例えば、メモリシステム 105)に対して、 SCU2 03— 0はバスマスタとしてアクセスする。
(4)システムバス 113上の SCU203—0以外のバスマスタから、 SCU203— 0の内 部レジスタや SCU専用記憶装置(例えば、、ローカルメモリ 204— 0)へのアクセスを 行う。
(5)システムバス 113は、データ転送効率や機能が満足されるのであれば、バス規 格にはこだわらな 、選択が可能である。
[0087] [SCU203— 0の専用記憶領域接続]
SCU203— 0は、専用記憶領域として専用記憶装置を接続することが可能である。 専用記憶装置は SRAMや DRAMなどの半導体メモリが SOC内部外部にのどちら にあろうとも選択可能である。
上記専用記憶装置は、システムバス 113より広帯域なバスに接続される。 上記専用記憶装置は、 1つの SCU203— 0が占有して使用する目的で用意されて いる。
システムバス 113上のバスマスタから、上記専用記憶装置へのアクセスが可能であ る。
[0088] [PU一 SIMD # 0〜# 3接続]
SCU203— 0には、 4つの PU— SIMD処理回路 # 0〜 # 3がバス接続される。 SCU203— 0から PU— SIMD処理回路 # 0〜 # 3へのストリームデータ入力は、 各 PU— SIMD処理回路に 256ビットの単方向バスを使用し、転送効率は 256bit/cl ockである。
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— SI
MDに対してアドレスを指定することで PU—SIMD処理回路内部レジスタを識別す る。
[0089] [SCU203— 0の物理論理アドレス変換]
SCU203—0がアクセスする図 26および図 27を用いて説明した記憶領域内の矩 形画像領域 WR内部の画素対応位置 Pixelは 2次元論理アドレスで表現されている 力、メモリシステム 105およびローカルメモリ 204— 0は物理アドレスで表現されている 。従って、 SCU203— 0は、矩形画像領域 WR内の矩形画像領域 AR, BR, CR, D R内部に指定された画素対応位置 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を構成するビット範囲とす る。)
[0090] 下記式(3)〜(4)にお!/、て、 wwは画素位置単位の矩形画像領域 WRの幅 (X方向) である。
なお、 1ワードデータ(lword)中の X方向 Pixel数を pwとする。
phは、 1 word中の y方向 Pixel数である。
nは、 lword中のビット位置を計算するための値である。
WR#bpは、記憶領域内部での矩形画像領域 WRの開始を示すアドレスである
1つの Pixel= 16ビットで表現しているがビット長としては他の値を採用すること も可能である。
Int ()はカツコ内の値を超えな 、整数を示す。
X mod yは整数 Xを整数 yで割った剰余である。 [0091] [数 3]
adres=WR#bp+int [y/ ph] *ww/ pw+int(x/ pw) · ·· (3)
[0092] [数 4]
n=(y mod ph)*pw+(x mod pw) · · · (4)
[0093] [数 5]
L#pixel(x,y)[15:0]=word[16*(n+l)-l:16*n] …(5)
[0094] 図 28は、 SCU203—0による物理論理アドレス変換を説明するための図である。
図 28に示すように、メモリシステム 105およびローカルメモリ 204— 0の物理的なァ ドレス空間 ADRS内に矩形画像領域 WRが規定される。
SCU203— 0は、 1つの物理アドレスによるアクセス単位を lwordとする。 WR#bp+は、矩形画像領域 WRの開始アドレスである。
wwは、矩形画像領域 WRの幅であり、画素対応位置 Pixel単位かつ pwの倍数であ る。
図 28に示すように、アドレス空間 ADRSの画素対応位置 L— Pixelは、 2次元論理 アドレスによってで指定可能である。
図 28に示す pwは、 lword内の X方向の pixel数(画素データ数)を示す。 図 28に示す phは、 lword内の y方向の pixel数を示す。
lpixelに含まれる情報量を nビットとし、 lwordに含まれる総ビット容量を wordsizeとす ると以下の関係式が成立する。
[0095] [数 6]
wordsize=n*pw*pn · · · ( 6ノ
[0096] 本実施形態では、上述したように記憶領域を 2次元論理アドレスで管理することで、 記憶領域内の任意の矩形画像領域にアクセスする場合に、従来のスキャンライン方 式のようにカウント処理 (デットラインの検出処理)などが不要になり、プログラミングが 簡単になる。
本実施形態では lpixel=16bビットの構成で説明を行って 、る力 lpixelの情報量は 特に限定されず、 8ビットや 32ビットなどでもよ 、。
[0097] [SCU203 0による記憶領域へのアクセス] SCU203— 0は、上述したように、記憶領域として、システムバス 113に接続された 大規模外部記憶装置であるメモリシステム 105と、小規模な専用記憶装置であるロー カルメモリ 204— 0を使用することができる。
メモリシステム 105は、例えば、 SCU203— 0が含まれる SOCの外部に接続される D RAM- CHIPであり、一般的な DDRや RAMBUSなどのメモリ chipなどである。
ローカルメモリ 204— 0は、例えば、 SCU203— 0が含まれる SOC内部の SRAMや e DRAM (Embedede- DRAM:SCUと同じ SOCに含まれる On- chip DRAM)などである。
[0098] 一般的に、 DRAMは、 Raw/Column/bankといったアドレスの階層構造があり、同一 の Rawに含まれる連続データアクセスは高速である力 Raw境界をまたがった連続デ ータアクセスや、遠隔の Raw同士の連続アクセスは、ページプリチャージなどの処置 を必要とするため、低速となるという特徴がある。
本実施形態では、 SCU203— 0は、例えば、メモリシステム 105やローカルメモリ 20 4—0として、 DRAMを使用している力 SRAMであっても問題はない。また、 DRAMを 使用する場合、上記アクセス性能の不連続性を可能な限り避ける目的で、記憶領域 内の画素データの矩形画像配列を、ストリームデータ生成時には可能な限り同一べ ージに配置する工夫をすることで、 DRAMアクセスの不連続性を可能な限り低減する 処置をとることができる。
この工夫は、たとえば先にのベた物理論理アドレス変換における bpと wwの値に、以 下に示すような制約を与えるなどで容易に実現可能である。
[0099] (制約例 1) wwは DRAMの columnの倍数であり、かつ pwの倍数である。
(制約例 2) WR#bpの値は DRAMの Raw単位である。
[0100] [SCU203— 0による多重矩形画像領域定義 (読み出し時) ]
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)とした座標系である。
[0101] [SCU203— 0による矩形画像領域 BRの定義モード]
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)のように決定する。
[0102] [数 7]
iK(x+bx >= aw )|(y+by > ah》 pixel(x,y)=COL
else pixel(x,y)=AR(x+bx,y+by) · ·· (7)
[0103] (矩形画像領域) BRモード 2 :
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)のように決定する。
[0104] [数 8]
i aw、= x+bx) & (y+by <= ah- bh) pixel(x,y =AR(x+bx-aw, y+by+bh)
else if (aw <= X+DX & (ah- bh < y+by) pixel(x,y)=COL
else il ahく y+bx) pixel(x,y)=COL
else pixel(x,y)=AR(x+bx, y+by)
[0105] (矩形画像領域) BRモード 3 :
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;として!/、る。
[0106] [数 9] if ((xp〈2) & (yp〈2)) pixel(x,y)=AR(2,2)
else iK(2<= xpく aw— 2) & (yp < 2) pixel(x,y)=AR(xp,2)
else iK(aw-2 <= xp) & (yp <2) pixel(x,y)=AR(aw-3,2)
else iK(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)
pixel(x,y) = AR(xp,yp)
… )
[0107] 矩形画像領域 BRが、矩形画像領域 ARの外周から 1画素対応位置だけ内側に位 置する場合には、 SCU203— 0は、図 33に示すように、クランプ動作を行う。
本実施形態では、上述したようにクランプ動作 (処理)を行うことで、任意の矩形画 像領域のフィルタ処理などを行う場合に、矩形画像領域の外周にお ヽて当該矩形画 像領域外の画素データを適切に代用することができる。
[0108] [SCU203— 0による PU— SIMDへのデータ入力処理]
SCU203— 0は、矩形画像領域 BR力も画素データ Pixel (X, y)を読み出し、これ をデータストリームへデータに変換して (入力データ変換処理を行って)図 3に示す P U— 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に書き込む。
[0109] SCU203— 0は、上述した入力データ変換処理、すなわち PU— SIMD # 0〜 # 3 に書き込むためのデータストリームへの変換処理として、例えば、下記表 2に示す入 力データ変換コマンドに応じて入力データ変換処理を行う。
SCU203— 0は、図 1に示すホストプロセッサ 101から入力データ変換コマンドを入 力して実行する。
SCU203— 0は、表 2に示す各入力データ変換コマンドにおいて、表 3に示す従属 ノラメータを指定できる。
[0110] [表 2]
入力データ変換 8R領域 幅 BR領域 高 つマ、ノド
bw さ
set— BR— 1 of4x4— same 4 4
set_bxy 4 4
set— BR— 8x1— to— bxy 8 1 set_BR4567_1of4x4 4 4
set.in_.buf ^straight 論 ~JZ cE
疋親个安 i£教个要 set_in_buf_with_BR_2x1 2 1 set一 in— buf— with— BR— 4x1 4 1 set_BR_16x1 16 1 set„BR„32x1 32 1 set— BFL64x1 64 1 set_BR„64x2 128 1 set— BR— 64x2x2 128 2
set_BR_64x3 192 1 set_B _64x3x3 192 3
set^BR^64x4 256 1 set^BR„.64x4x4 256 4
set一 BR— 64x9 576 3
set_BR—64x9x3 576 6
入力データ変換 備考
コマンドの
従厲パラメ一タ
B R^num ο BR番号(0..7)
csel[1:0] BR領域内 pixe!指定、 x方向連続する最大 4ΡίχβΙから 1p elの 選択
BR領域内 pixel指定、 方向最大 16p elから Ipixelの選択 ysei[2:0] 領域内 pixel指定、 y方向最大 8pixelから 1 pixelの選択
sel out— bufに ¾き込まれる o4pixelの形 指定
0の場合:
入力データ変換で生成された 64pixeiはそのまま out_bufへ loadされる
1の場合:
入力データ変換で生成された 64pixel中の個々の 1 pixelの LSB4bitを packして 16pixeけ:!け out— bufへ load
ld[15:0] out— bufの 64pixelを 4pixelごとにわけた load制御
loadの lb で 4pixel同時 loadを制御する
ld[n]:pixe)(4(n-1):4ri-1) (oaclfcf L0<=n< = l6 表 2に示したデータ変換コマンドに基づく入力データ変換処理のそれぞれを説明 する。
[set#BR#lof4x4#same]
SCU203— 0は、例えば、ホストプロセッサ 101から入力データ変換コマンド「set#B R#lof4x4#same」を実行すると、図 34に示すように、その従属パラメータで指定された 矩形画像領域 BR内の 1画素対応位置力 画素データ Pixelを読み出し、それを 64 個複製して画素データ Pixel (0, ...63)を生成し、これを画素データ内部のビット 選択の後に、出力バッファ out— bufを介して PU— SIMD処理回路 #0〜#3に入 力される。
SCU203— 0は、従属パラメータ BRftiumにより、 4x4画素対応位置の矩形画像領 域 BRを特定する。
SCU203— 0は、マルチプレクサ MUXl, MUX2および論理回路 LOG1を有する マルチプレクサ MUX1は、上記特定した矩形画像領域 BRから、従属パラメータ yse 1により、 x方向の 4画素対応位置の画素データ Pixelを読み出す。
そして、マルチプレクサ MUX2は、上記読み出した X方向の 4つの画素データ Pixe 1のなかから、従属パラメータ xselにより、 1つの画素データ Pixelを選択して論理回路 LOG1に出力する。
論理回路 LOG1は、従属パラメータ wselにより、上記選択した 1つの画素データ Pix elを各々が示す 64個の画素データ Pixelを、出力バッファ out— bufに書き込む。 論理回路 LOG1は、従属パラメータ wselにより、 64個の画素データ Pixelをそのまま 出力バッファ out— bufに書き込む力、あるいは各画素データ Pixelの LSBから 4ビッ トをパックして 16個の画素データ Pixelに収納するかを決定する。
SCU203— 0は、従属パラメータ Idにより、 4画素データ Pixel毎に load制御を行う [set#bxy]
SCU203— 0は、例えば、ホストプロセッサ 101から入力データ変換コマンド「set# bxy」を実行すると、図 35に示すように、従属パラメータ XSel,ySelで選択された矩形画 像領域 BRの左端座標 (bx,by)を 32個ずつ複製して 64個の画素データのストリームデ ータを生成し、従属パラメータ wselによる画素データ内部のビット選択の後に、従属 パラメータ Idにより出力バッファ 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制御 を、従属パラメータ Idにより、 4画素データ Pixel毎に行う。
このように、矩形画像領域 BRの左端座標を PU— SIMD処理回路 # 0〜 # 3に出 力するのは、 PU— SIMD処理回路 # 0〜# 3の PEにおいて、フィルタ処理などにお いて、当該座標を処理に用いるためである。
[0114] [set#BR#8xl#to#bxy]
SCU203— 0は、ホストプロセッサ 101から入力データ変換コマンド「set#BR#8xl#t o#bxy」を実行すると、例えば、図 36に示すように、矩形画像領域 BR内に X方向に連 続する 2pixelを座標として扱うため、 BRftiumで選択された矩形画像領域 BR4〜7か ら 8画素データ Pixelを選択し、矩形画像領域 BRの左端座標 (bx,by)に設定する。 このことは、後述する入力データ変換コマンド「WI#data#op=set#BR4567#lof4x4」と 組み合わせて指定することで、メモリ間接アドレスを実現する。
すなわち、この例では、矩形画像領域 BR内に、矩形画像領域 BRの左端座標が、 画素データとして記憶されて 、る。
[0115] [set#BR4567#lof4x4]
SCU(Stream Control Unit)203— 0は、ホストプロセッサ 101から入力データ変換コ マンド「set#BR4567#lof4x4」を実行すると、例えば、図 37に示すように、従属パラメ一 タ xsel,yselにより、マルチプレクサ MUXl, MUX2で 4つの矩开画像領域 BRからそ れぞれ 1画素データを読み出し、これを論理回路 LOG51に出力する。
論理回路 LOG51は、 SCU203— 0から入力した画素データを、従属パラメータ ws elにより、出力バッファ out— bufの所定のビット位置に書き込む。
論理回路 LOG51は、従属パラメータ wselにより、 64画素データをそのまま出カノッ ファ out— bufに書き込む力 ある!/、は各画素データ Pixelの LSBから 4ビットをパック して 16個の画素データ Pixelに収納するかを決定する。
SCU203 0は、出力バッファ out bufから PU SIMD # 0〜# 3への load制御 を、 4画素データ毎に、従属パラメータ Idにより行う。
この例では、上記 4つの矩形画像領域 BRの左端座標として、上記「set#BR#8xl#to #bxyjによって設定されたものを用いることで、上記メモリ間接アドレスを実現する。
[0116] [set#in#buffistraight]
SCU203— 0は、ホストプロセッサ 101から入力データ変換コマンド「setffin#buffistr aight」を実行すると、例えば、図 38に示すように、 PU_SIMD # 0〜 # 3毎に備えら れた 4本の入力バッファ in— bufのなかから、 2本の入力バッファ in— buf (n) , (n—l )を選択する。
入力バッファ in— buf (n) , (n— 1)の各々は、 1 (高さ) X 64 (幅)画素データのサイ ズを有している。
SCU203— 0は、 64個のマルチプレクサ MUX1を備えて!/、る。
64個のマルチプレクサ MUX1の各々は、入力バッファ in— buf (η) , (η— 1)の対 応する 2つの画素データのうち、一つを従属パラメータ yselにより選択して論理回路 L
OG61に出力する。
論理回路 LOG61は、従属パラメータ wselにより、 64画素データをそのまま出カノッ ファ out— bufに書き込む力 ある!/、は各画素データ Pixelの LSBから 4ビットをパック して 16個の画素データ Pixelに収納するかを決定する。
SCU203— 0は、出力バッファ out— bufから PU— SIMD処理回路 # 0〜 # 3への load制御を、 4画素データ毎に、従属パラメータ Idにより行う。
入力データ変換コマンド「set#in#buffistraight」により、図 3に示す PU— SIMD処理 回路 # 0〜# 3間でのデータの入出力が可能になる。また、当該入力データ変換コ マンド「setffin#buffistraight」によって、 PU— SIMD # 0〜 # 3を直列および並列の何 れで接続するかをプログラミング (規定)できる。
[0117] [setffin#buffiwith#BR#2xl]
SCU203— 0は、ホストプロセッサ 101から入力データ変換コマンド「setffin#buffiwit h#BR#2xl」を実行すると、例えば、図 39に示すように、 PU— SIMD # 0〜# 3毎に 備えられた 4本の入力バッファ in— bufのなかから、 2本の入力バッファ in— buf (η) , (η— 1)を選択する。 入力バッファ in— buf (n) , (n— 1)の各々は、 1 (高さ) X 64 (幅)画素データのサイ ズを有している。
SCU203— 0は、 62個のマルチプレクサ MUX1を備えて!/、る。
62個のマルチプレクサ MUX1の各々は、入力バッファ in— buf (η) , (η— 1)の対 応する 2つの画素データのうち、一つを従属パラメータ yselにより選択して論理回路 L
OG71に出力する。
論理回路 LOG71は、従属パラメータ wselにより、 62画素データと、従属パラメータ BRftiumで選択された矩形画像領域 BRから読み出した 2画素データの合計 64画素 データをそのまま出力バッファ out— bufに書き込む力、あるいは各画素データ Pixel の LSBから 4ビットをパックして 16個の画素データ Pixelに収納するかを決定する。
SCU203— 0は、出力バッファ out— bufから PU— SIMD処理回路 # 0〜 # 3への load制御を、 4画素データ毎に、従属パラメータ Idにより行う。
[setffin#buffiwith#BR#4xl]
SCU203— 0は、ホストプロセッサ 101から入力データ変換コマンド「setffin#buffiwit h#BR#4xl」を実行すると、例えば、図 40に示すように、 PU— SIMD処理回路 # 0〜 # 3毎に備えられた 4本の入力バッファ in— bufのなかから、 2本の入力バッファ in— buf (n) , (n - 1)を選択する。
入力バッファ in— buf (n) , (n— 1)の各々は、 1 (高さ) X 64 (幅)画素データのサイ ズを有している。
SCU203— 0は、 60個のマルチプレクサ MUX1を備えて!/、る。
60個のマルチプレクサ MUX1の各々は、入力バッファ in— buf (η) , (η— 1)の対 応する 2つの画素データのうち、一つを従属パラメータ yselにより選択して論理回路 L OG81に出力する。
論理回路 LOG81は、従属パラメータ wselにより、 60画素データと、従属パラメータ BRftiumで選択された矩形画像領域 BRから読み出した 4画素データの合計 64画素 データをそのまま出力バッファ out— bufに書き込む力、あるいは各画素データ Pixel の LSBから 4ビットをパックして 16個の画素データ Pixelに収納するかを決定する。
SCU203 0は、出力バッファ out bufから PU SIMD処理回路 # 0〜# 3への load制御を、 4画素データ毎に、従属パラメータ Idにより行う。
[0119] [set#BR#16xl]
SCU203— 0は、ホストプロセッサ 101から入力データ変換コマンド「set#BR#16xl」 を実行すると、例えば、図 41に示すように、従属パラメータ BRftiumで選択された矩 形画像領域 BR内の 16画素データを 4倍に複製して 64画素データのストリームデー タを生成し、これを所定の画素データ選択処理を経て、出力バッファ out— bufに書 き込む。
論理回路 LOG91は、従属パラメータ BRftiumで選択された矩形画像領域 BR内の 16画素データを 4倍に複製して得られた 64画素データを入力し、これら 64画素デー タをそのまま出力バッファ out— bufに書き込む力、あるいは各画素データ Pixelの L SBから 4ビットをパックして 16個の画素データ Pixelに収納するかを決定する。
SCU203— 0は、出力バッファ out— bufから PU— SIMD処理回路 # 0〜 # 3への load制御を、 4画素データ毎に、従属パラメータ Idにより行う。従って 4倍に複製した データを out#bufに対して 16pixelごとに書き込むことも可能である。
[0120] [set#BR#32xl]
SCU203— 0は、ホストプロセッサ 101から入力データ変換コマンド「set#BR#32xl」 を実行すると、例えば、図 42に示すように、従属パラメータ BRftiumで選択された矩 形画像領域 BR内の 32画素データを 2倍に複製して 64画素データのストリームデー タを生成し、これを所定の画素データ選択処理を経て、出力バッファ out— bufに書 き込む。
論理回路 LOG101は、従属パラメータ BRftiumで選択された矩形画像領域 BR内 の 32画素データを 2倍に複製して得られた 64画素データを入力し、これら 64画素デ ータをそのまま出力バッファ out— bufに書き込む力、あるいは各画素データ Pixelの LSBから 4ビットをパックして 16個の画素データ Pixelに収納するかを決定する。
SCU203— 0は、出力バッファ out— bufから PU— SIMD処理回路 # 0〜 # 3への load制御を、 4画素データ毎に、従属パラメータ Idにより行う。従って 2倍に複製した データを out#bufに対して 32pixelごとに書き込むことも可能である。
[0121] [set#BR#64xl] SCU203— 0は、ホストプロセッサ 101から入力データ変換コマンド「set#BR#64xl」 を実行すると、例えば、図 43に示すように、従属パラメータ BRftiumで選択された矩 形画像領域 BR内の 64画素データのストリームデータを生成し、これを所定の画素デ ータ選択処理を経て、出力バッファ out— bufに書き込む。
論理回路 LOG111は、従属パラメータ BRftiumで選択された矩形画像領域 BR内 の 64画素データを入力し、これら 64画素データをそのまま出力バッファ out— bufに 書き込むか、あるいは各画素データ Pixelの LSBから 4ビットをパックして 16個の画素 データ Pixelに収納するかを決定する。
SCU203— 0は、出力バッファ out— bufから PU— SIMD処理回路 # 0〜 # 3への load制御を、 4画素データ毎に、従属パラメータ Idにより行う。
[0122] [set#BR#64x2]
SCU203— 0は、ホストプロセッサ 101から入力データ変換コマンド「set#BR#64x2」 を実行すると、例えば、図 44に示すように、従属パラメータ BRftiumで選択された矩 形画像領域 BR内の 128 X 1画素データのなかから、従属パラメータ xselにより、 64画 素データを選択してストリームデータを生成し、これを所定の画素データ選択処理を 経て、出力バッファ out— bufに書き込む。
64個のマルチプレクサ MUX2の各々は、従属パラメータ BR#numで選択された矩 形画像領域 BR内の X方向に隣接した 2画素データを入力し、従属パラメータ xselによ り、 1画素データを選択して論理回路 LOG 121に出力する。
論理回路 LOG121は、従属パラメータ wselにより、 64個のマルチプレクサ MUX2 力 入力した 64画素データをそのまま出力バッファ out— bufに書き込む力、ある!/ヽ は各画素データ Pixelの LSBから 4ビットをパックして 16個の画素データ Pixelに収納 するかを決定する。
SCU203— 0は、出力バッファ out— bufから PU— SIMD # 0〜 # 3への load制御 を、 4画素データ毎に、従属パラメータ Idにより行う。
[0123] [set#BR#64x2x2]
SCU203— 0は、ホストプロセッサ 101から入力データ変換コマンド「set#BR#64x2x 2」を実行すると、例えば、図 45に示すように、従属パラメータ BRftiumで選択された 矩形画像領域 BR内の 128 X 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画素データ毎に、従属パラメータ Idにより行う。
[set#BR#64x3]
SCU203— 0は、ホストプロセッサ 101から入力データ変換コマンド「set#BR#64x3」 を実行すると、例えば、図 46に示すように、従属パラメータ BRftiumで選択された矩 形画像領域 BR内の 192 X 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画素データ毎に、従属パラメータ Idにより行う。
[0125] [set#BR#64x3x3]
SCU203— 0は、ホストプロセッサ 101から入力データ変換コマンド「set#BR#64x3x 3」を実行すると、例えば、図 47に示すように、従属パラメータ BRftiumで選択された 矩形画像領域 BR内の 192 X 3画素データのなかから、従属パラメータ xselにより、 64 画素データを選択してストリームデータを生成し、これを所定の画素データ選択処理 を経て、出力バッファ out— bufに書き込む。
192個のマルチプレクサ MUX4の各々は、従属パラメータ BRftiumで選択された矩 形画像領域 BR内の y方向に隣接した 3画素データを入力し、従属パラメータ yselによ り、 1画素データを選択して、 64個のマルチプレクサ MUX3に出力する。
64個のマルチプレクサ MUX3は、マルチプレクサ MUX4から入力した X方向に隣 接する 3つの画素データのうち、 1の画素データを、従属パラメータ xselにより選択し て論理回路 LOG 151に出力する。
論理回路 LOG151は、従属パラメータ wselにより、 64個のマルチプレクサ MUX3 力 入力した 64画素データをそのまま出力バッファ out— bufに書き込む力、ある!/ヽ は各画素データ Pixelの LSBから 4ビットをパックして 16個の画素データ Pixelに収納 するかを決定する。
SCU203— 0は、出力バッファ out— bufから PU— SIMD処理回路 # 0〜 # 3への load制御を、 4画素データ毎に、従属パラメータ Idにより行う。
[0126] [set#BR#64x4]
SCU203— 0は、ホストプロセッサ 101から入力データ変換コマンド「set#BR#64x4」 を実行すると、例えば、図 48に示すように、従属パラメータ BRftiumで選択された矩 形画像領域 BR内の 256 X 1画素データのなかから、従属パラメータ xselにより、 64画 素データを選択してストリームデータを生成し、これを所定の画素データ選択処理を 経て、出力バッファ out— bufに書き込む。
64個のマルチプレクサ MUX5の各々は、従属パラメータ BR#numで選択された矩 形画像領域 BR内の X方向に隣接した 4画素データを入力し、従属パラメータ xselによ り、 1画素データを選択して論理回路 LOG 161に出力する。 論理回路 LOG161は、従属パラメータ wselにより、 64個のマルチプレクサ MUX5 力 入力した 64画素データをそのまま出力バッファ out— bufに書き込む力、ある!/ヽ は各画素データ Pixelの LSBから 4ビットをパックして 16個の画素データ Pixelに収納 するかを決定する。
SCU203— 0は、出力バッファ out— bufから PU— SIMD処理回路 # 0〜 # 3への load制御を、 4画素データ毎に、従属パラメータ Idにより行う。
[0127] [set#BR#64x4x4]
SCU203— 0は、ホストプロセッサ 101から入力データ変換コマンド「set#BR#64x4x 4」を実行すると、例えば、図 49に示すように、従属パラメータ BRftiumで選択された 矩形画像領域 BR内の 256 X 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画素データ毎に、従属パラメータ Idにより行う。
[0128] [set#BR#64x9]
SCU203— 0は、ホストプロセッサ 101から入力データ変換コマンド「set#BR#64x9」 を実行すると、例えば、図 50に示すように、従属パラメータ BRftiumで選択された矩 形画像領域 BR内の 576 X 1画素データのなかから、従属パラメータ xselにより、 64画 素データを選択してストリームデータを生成し、これを所定の画素データ選択処理を 経て、出力バッファ out— bufに書き込む。
64個のマルチプレクサ MUX7の各々は、従属パラメータ BR#numで選択された矩 形画像領域 BR内の X方向に隣接した 9画素データを入力し、従属パラメータ xselによ り、 1画素データを選択して論理回路 LOG 171に出力する。
論理回路 LOG171は、従属パラメータ wselにより、 64個のマルチプレクサ MUX7 力 入力した 64画素データをそのまま出力バッファ out— bufに書き込む力、ある!/ヽ は各画素データ Pixelの LSBから 4ビットをパックして 16個の画素データ Pixelに収納 するかを決定する。
SCU203— 0は、出力バッファ out— bufから PU— SIMD処理回路 # 0〜 # 3への load制御を、 4画素データ毎に、従属パラメータ Idにより行う。
[set#BR#64x9x3]
SCU203— 0は、ホストプロセッサ 101から入力データ変換コマンド「set#BR#64x9x 3」を実行すると、例えば、図 51に示すように、従属パラメータ BRftiumで選択された 矩形画像領域 BR内の 576 X 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画素データ毎に、従属パラメータ Idにより行う。
[0130] [SCU203— 0による多重矩形画像領域定義(書き込み時) ]
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の幅と高さを示す。
[0131] [SCU203— 0による矩形画像領域 DRの定義モード]
SCU203— 0は、 dx,dy及び dw,dhの値を調整することで、図 53〖こ示すよう〖こ、矩形 画像領域 CRを逸脱するように矩形画像領域 DRを指定できる。
これにより、 SCU203— 0は、 PU— SIMD処理回路 # 0〜# 3からの多様な形態 のストリームデータを入力できる。
[0132] 以下、 SCU203— 0による矩形画像領域 DRの指定の形態を示す各種の DRモー ドを説明する。
DRモード 1:
SCU203— 0は、 DRモード 1に設定されている場合に、矩形画像領域 CRから逸 脱して矩形画像領域 DRを設定可能である。
SCU203— 0は、矩形画像領域 DRが矩形画像領域 CRから逸脱した場合に、逸 脱した領域に含まれる画素対応位置の画素データの値を矩形画像領域 CRに書き 込まない。 矩形画像領域 DR内の画素データは、矩形画像領域 CR内では下記式(10)で規 定される。
[0133] [数 10]
iK(x+dx >= cw )|(y+dy > ch》 pixel(x,y)は CRに WRiteされない
else し R(x+dx,y+dy)=pixel(x,y)
…ひ。)
[0134] DRモード 2 :
SCU203— 0は、 DRモード 2に設定されている場合に、矩形画像領域 CRから逸 脱して矩形画像領域 DRを設定可能である。
SCU203— 0は、図 54に示すように、矩形画像領域 DRが X方向に矩形画像領域 CRから逸脱した場合、逸脱領域を矩形画像領域 CR内部に折り返すように制御する また、 SCU203— 0は、図 54に示すように、矩形画像領域 DR力 方向と y方向とに 矩形画像領域 CRから逸脱した場合、矩形画像領域 DR内の画素データを矩形画像 領域 CR内に書き込まな 、。
矩形画像領域 DR内の画素データは、矩形画像領域 CR内において、下記式(11) のように規定される。
[0135] [数 11]
i cw、= χ+αχ) & (y+dy <= ch-dh) し R c+dx— cw,
Figure imgf000054_0001
else if (cw <= x+dx) & (ch— dh < y+dy) pixel(x,y)は CRに WRiteされな!/ヽ else iKch < y+dx) pixel(x,y)は CRに WRiteされない
else CR(x+dx, y+dy)=pixel(x,y)
ー(11)
[0136] [PU— SIMD処理回路 # 0〜 # 3の出力データ変換処理]
PU— SIMD処理回路 # 0〜# 3が出力したストリームデータは、入力バッファ in— bufに書き込まれる。
SCU203— 0は、入力バッファ in— bufからデータを読み出し、並べ替えなどのデ ータ変換処理を施した後に、矩形画像領域 DRに書き込む。 また、 SCU203— 0は、必要に応じて、入力バッファ in— bufからデータを読み出し 、マスクデータ DRftnaskに従った並べ替えなどのデータ変換処理を施した後に、矩 形画像領域 DRに書き込む。
SCU203— 0は、 PU— SIMD処理回路 # 0〜 # 3の各々につ!/、て、上記変換処 理を指定できる。
SCU203_0は、マスクデータ DRftnaskを記録するレジスタを備えている。 SCU203— 0は、 PU— SIMD処理回路 # 0〜 # 3の各々に対応した入力バッファ i n_bufを備えている。
[0137] SCU203— 0は、上述した出力データ変換処理、すなわち PU— SIMD処理回路
# 0〜# 3が出力したストリームを矩形画像領域 DRに書き込む処理を、例えば、下 記表 4に示す出力データ変換コマンド WO#data#opに応じて行う。
SCU203— 0は、図 1に示すホストプロセッサ 101から出力データ変換コマンドを入 力して実行する。
SCU203— 0は、表 4に示す各出力データ変換コマンドにおいて、表 5に示す従属 ノラメータを指定できる。
[0138] [表 4]
Figure imgf000055_0001
[0139] [表 5] 従 a 属パラメータ 意味
D _num DR番号(0..3)
bse i [ 1 : 0] ^ 1^(0..1 5)に1|又納された4*64(3 カゝら641> 選択
D R領域内の pi xelwrite番号、整列、
kip ,2ski p,3ski p指定
[0140] 以下、上記表 4に示した出力データ変換処理のそれぞれを説明する。
[set#DR#mask#64xl]
入力バッファ in— buf(0-15)の各々には、 PU— SIMD # 0〜 # 3から入力された 64 画素データが書き込まれる。なお、 1画素データは、 4ビットで表現されている。
ここで、例えば、各出力バッファ out— bufは、それぞれ図 3に示す一つのプロセッ サユニット PUに予め対応付けられて 、る。
SCU203— 0は、図 55に示すように、各画素データを構成する 4ビットから 1ビットを 選択し、 64ビットのマスクデータ DRftnaskとして、マスクレジスタ MR11に書き込む。 マスクデータ DRftnaskを構成する各ビットは、プロセッサユニット PUの出力を、矩形 画像領域 DRに書き込む場合に、画素データ単位のマスク情報として用いられる。 たとえばマスクデータ DRftnaskのビットが「1」の場合は画素データを矩形画像領域 DRに書き込むことを意味し、「0」の場合には書き込まな!/、ことを意味する。
SCU203— 0力 矩形画像領域 DRに実際に画素データを書き込むのは、後述す る出力データ変換処理コマンドが set#DR#packed=64xlの場合である。
[0141] SCU203— 0は、従属パラメータ DR#numで選択された 64ビット構成のマスクレジス タ MR1に 1に 64ビットのマスクデータ DRftnaskを書き込む。
また、 SCU203— 0は、従属パラメータ DRftiumで選択されたマスクサイズレジスタ MSR11には 64ビットのマスクデータ DRftnaskのなかで「1」となって!/、るビット数を書 き込む。
従って、マスクサイズレジスタ MSR11に記憶される値は、 0〜64のいずれかである [0142] 図 55に示すように入力バッファ in buf(0-15)の各々には、対応するプロセッサュ ニット PU力 入力された 64画素データが書き込まれる。
ビット選択器 SEL11は、入力バッファ in— buf(0-15)に格納されている 64画素デー タを構成する各 4〜1ビットを従属パラメータ bselにより選択する。選択は 4種類であり 各画素データで同じ bitが選択される。
SCU203— 0は、従属パラメータ DR#numで選択したマスクレジスタ MR11に、ビッ ト選択器 SEL11で選択されたデータをマスクデータ DRftnaskとして格納する。
[0143] [set#DR#packed#64xl]
図 56に示す入力バッファ in— buf(0-63)の各々には、対応するプロセッサユニット P U力も入力された 64画素データが書き込まれて 、る。
SCU203— 0の書き込み制御回路 WC11は、従属パラメータ DRftiumで選択され た 64ビット構成のマスクレジスタ MR11に記憶されて!、るマスクデータ DRftnaskに従 い、入力バッファ in— bufに記憶されている画素データを、従属パラメータ DRftiumで 選択された矩形画像領域 DRに書き込む。
このとき、書き込み制御回路 WC 11は、マスクデータ DRftnaskの「1」を示すビットに 対応する画素データを、矩形画像領域 DRの X座標の小さ ヽほうから順に詰め合わせ て (packして)書き込む。
矩形画像領域 DRの幅は、 64画素データで高さは、 1画素データである力 マスク データ DRftnaskに応じて画素データをパック(pack)して矩形画像領域 DRに書き込 むため、矩形画像領域 DR全体に画素データが書き込まれるとは限らない。
[0144] [set#DR#64xl]
図 57に示す入力バッファ in— buf(0-63)の各々には、対応するプロセッサユニット P U力も入力された 64画素データが書き込まれて 、る。
SCU203— 0は、入力バッファ in— bufから読み出した 64画素データを、従属パラ メータ DRftiumで選択された矩形画像領域 DR内に書き込む。
本実施形態では、上記矩形画像領域 DRのサイズは、 64 X 1画素データである。
[0145] [set#DR#128xl]
図 58に示す入力バッファ in— buf(0-63)の各々には、対応するプロセッサユニット P U力も入力された 64画素データが書き込まれて 、る。 SCU203— 0は、従属パラメータ selに従って、入力バッファ in— bufから読み出した 64画素データを、従属パラメータ DRftiumで選択された矩形画像領域 DR内に書き 込む。
本実施形態では、上記矩形画像領域 DRのサイズは、 128 X I画素データである。
SCU203— 0は、従属パラメータ psel=0の場合は矩形画像領域 DRの X座標が 2の 倍数の座標 (画素対応位置)に画素データを書き込む。
SCU203— 0は、従属パラメータ psel=lの場合は、矩形画像領域 DRの x座標が 2 の倍数 + 1の座標に画素データを書き込む。
[0146] [set#DR#192xl]
図 59に示す入力バッファ in— buf(0-63)の各々には、対応するプロセッサユニット P U力も入力された 64画素データが書き込まれて 、る。
SCU203— 0は、従属パラメータ selに従って、入力バッファ in— bufから読み出した 64画素データを、従属パラメータ DRftiumで選択された矩形画像領域 DR内に書き 込む。
本実施形態では、上記矩形画像領域 DRのサイズは、 192 X I画素データである。
SCU203— 0は、従属パラメータ psel=0の場合は矩形画像領域 DRの X座標が 3の 倍数の座標 (画素対応位置)に画素データを書き込む。
SCU203— 0は、従属パラメータ psel=lの場合は、矩形画像領域 DRの x座標が 3 の倍数 +1の座標に画素データを書き込む。
SCU203— 0は、従属パラメータ psel=2の場合は、矩形画像領域 DRの x座標が 3 の倍数 +2の座標に画素データを書き込む。
[0147] [set#DR#256xl]
図 60に示す入力バッファ in— buf(0-63)の各々には、対応するプロセッサユニット P U力も入力された 64画素データが書き込まれて 、る。
SCU203— 0は、従属パラメータ selに従って、入力バッファ in— bufから読み出した 64画素データを、従属パラメータ DRftiumで選択された矩形画像領域 DR内に書き 込む。
本実施形態では、上記矩形画像領域 DRのサイズは、 256 X I画素データである。 SCU203— 0は、従属パラメータ psel=0の場合は矩形画像領域 DRの x座標が 4の 倍数の座標 (画素対応位置)に画素データを書き込む。
SCU203— 0は、従属パラメータ psel=lの場合は、矩形画像領域 DRの x座標が 4 の倍数 +1の座標に画素データを書き込む。
SCU203— 0は、従属パラメータ psel=2の場合は、矩形画像領域 DRの x座標が 4 の倍数 +2の座標に画素データを書き込む。
SCU203— 0は、従属パラメータ psel=3の場合は、矩形画像領域 DRの x座標が 4 の倍数 +3の座標に画素データを書き込む。
[0148] [SCU203— 0の動作シーケンス]
図 2、図 3、図 27に示す SCU203— 0の動作シーケンスについて説明する。
なお、 SCU203— 1〜3は、 SCU203— 0と基本的に同じである。
[0149] SCU203— 0は、 4組の内蔵プロセッサ、 4組のプログラムメモリ、 4組のプログラム カウンタを備えている。
SCU203— 0は、図 1に示すホストプロセッサ 101から入力したプログラムをプログ ラムメモリに格納する。
SCU203— 0の内蔵プロセッサは、プログラムカウンタに従って、上記プログラムメ モリからプログラムを読み出して実行する。当該プログラムには、前述したデータ変換 コマンド WI#data#op, WO— data— opが含まれる。
上記内蔵プロセッサは、例えば、 RISCプロセッサである。
上記内蔵プロセッサは、 PU— SIMD処理回路 # 0〜 # 3の処理開始を指示する。 上記内蔵プロセッサは、矩形画像領域 WR/AR/BR/CR/DRのアドレス、サイズを指 定すると共に、アドレスを即値加算、条件分岐などを行う。
上記内蔵プロセッサが実行するコマンド(命令)は、 instruction,operandO,displacem entからなる。
上記内蔵プロセッサは、 finish命令を実行すると、ホストプロセッサ 101に割り込み信 号を出力してプログラムの実行を終了する。
[0150] SCU203— 0の内蔵プロセッサが実行するコマンド (命令)について説明する。
図 61に示すように、上記内蔵プロセッサは、コマンド「exec」を実行する。 コマンド「exec」は、データ変換コマンド WI#data#op,WO#data#op、並びにそのパラ メ ~~タで teる WIffdata#op#param,WOffdata#op#param 旨疋する。
コマンド「exec」は、 DMA転送を指定するために用いられる。
[0151] 図 62に示すように、上記内蔵プロセッサは、コマンド「branch」を実行する。
コマンド「Branch」には、条件なしの静的ループ処理と、条件付の処理とがある。 当該条件付の処理では、矩形画像領域の座標 ax,ay,bx,by,cx,cy,dx,dyと即値との 比較結果を基に条件を判断する。
[0152] 図 63に示すように、上記内蔵プロセッサは、コマンド「Set」を実行する。
コマンド「Set」は、矩形画像領域 ax,ay,aw,ah,bx,by,bw,bhなど座標指定、矩形画像 領域 cx,cy,cw,ch,dx,dy,dw,dhなどの座標指定などを規定する。
コマンド「Set」は、矩形画像領域 WRを規定する bp,wwを指定する。
コマンド「Set」は、 DMA領域を規定する転送元開始アドレス、転送先開始アドレス、 転送サイズを指定する。
[0153] 図 64に示すように、上記内蔵プロセッサは、コマンド「addZsub」を実行する。
コマンド「addZsub」は、矩形画像領域 ax,ay,aw,ah,bx.by,bw,bhなどの座標の加減 算、並びに矩形画像領域 cx,cy,cw,ch,dx,dy,dw,dhなどの座標の加減算を行う。
また、コマンド「addZsub」は、 dxにおいてのみ、 PU— SIMD処理回路 # 0〜 # 3 力 設定可能な値を加算可能である。
[0154] 図 65 (A)に示すように、上記内蔵プロセッサは、特別な命令としてプログラムカウン タのみ増加させる「no operationや、プログラム終了を指示する「finish progra m」などを実行できる。
[0155] データ変換コマンドの従属パラメータである WI#data#op#param,WO#data#op#para mは、例えば、図 65 (B)に示すように規定される。
当該従属パラメータは、データ変換コマンドと対応付けて、 SCU203— 0のメモリに 格納される。
[0156] 図 66に示すように、 SCU203— 0は、コマンド「start PU— SIMD」を実行するこ とで、 PU— SIMD # 0〜 # 3に処理を開始させる。
SCU203— 0は、データ変換コマンド WI#data#opを実行することで、矩形画像領域 WR力 読み出したデータを変換して PU— SIMD処理回路 # 0〜 # 3に出力する。 SCU203— 0は、データ変換コマンド WO— data— opを実行することで、 PU— SIM
D # 0〜 # 3から入力したデータを変換して矩形画像領域 WRに書き込む。
本実施形態では、 SCU203— 0の処理 (スレッド)は、図 1に示すホストプロセッサ 1
01が開始指示する。
PU_SIMD(Single Instruction Multiple Data)処理回路 # 0〜 # 3は各 PU— SIM D処理に対応した個別のスレッドで動作し、当該スレッドは、 SCU203— 0あるいはホ ストプロセッサ 101によって開始指示される。
[0157] データ変換コマンド WI#data#op, WO— data— opのコマンド、並びに当該コマンドに よって入出力されるデータは、図 67に示すように、 SCU203— 0内のキューに蓄えら れ、順次実行、並びに処理される。
すなわち、内蔵プロセッサは、記憶領域のリード Zライト共に、コマンドを先行発行 して実行する。
そして、内蔵プロセッサは、データ変換コマンド WI#data#op, WO#data#opの実行で アドレス計算を行い、そのアドレスをリードおよびライト別にキューに蓄える。
また、リードおよびライトに伴うデータもキューに蓄える。
[0158] [画像処理装置 100の全体動作例]
図 1に示すホストプロセッサ 101はプログラム PRGを実行し、これにより図 2に示す S CU203— 0〜3にプログラムを指定する。
SCU203— 0〜3は、ホストプロセッサ 101によって指定されたプログラムを実行し て得たそれぞれ 4本ずつの所定のスレッドに基づ!/、て、それぞれ PUアレイ 202— 0 〜202— 3内の PEの処理進行に応じてメモリシステム 105あるいはローカルメモリ 20 4_0〜3に対するアクセスを実行する。
PUアレイ 202— 0〜202— 3内の図 3および図 4に示す PEは、 SCU203— 0〜3あ るいはホストプロセッサ 101の制御に従って、 SCU203—0〜3によるメモリアクセス 結果を利用しながら、 SCU203— 0〜3とは別のスレッドで動作する。
[0159] 各 PUアレイ 202— 0〜202— 3内では、 SCU203— 0〜203— 3によって、 PU— S IMD # 0〜 # 3が並列あるいは直列に選択的に接続されて動作する。 PU— SIMD # 0〜# 3内では、図 4に示すように、 16個の PEO〜15がシリアルに 接続され、隣接する PE間で必要に応じて画素データの入出力が行われる。
[0160] 以上説明したように、本実施の形態の画像処理装置 100によれば、画像処理ェン ジン 102において、 PUアレイ 202— 0〜202— 3内の PU— SIMD(Single Instruction Multiple Data)単位を共通のスレッドで動作させ、当該スレッドとは別のスレッドで SC U203— 0〜3を動作させる。
これにより、膨大な画素データについて、それに対する処理が予め特定でき、且つ 相互に独立であることを利用して、複数のプロセッサエレメント(PE)において共通の スレッドを基に並列的に実行できる。
SCU203— 0〜3のスレッドを、 PUアレイ 202— 0〜202— 3のスレッドとは別にす ることで、 PEの処理のバックエンドで、当該 PEの処理に係わるデータに関する記憶 領域に対してのアクセスを効率的に実現できる。
[0161] 画像処理エンジン 102によれば、 PUアレイ 202— 0〜202— 3の処理に係わるデ ータについての記憶領域へのアクセスを SCU203— 0〜3が行うことで、 PUアレイ 2 02— 0〜202— 3の PEは記憶領域へのアクセス処理を行う必要がなぐ画像処理を 効率的に行うことができる。
[0162] 画像処理エンジン 102によれば、図 3に示すようにプロセッサユニット PUがシリアル 接続された両側のプロセッサユニット PUに画素データを入出力できると共に、図 4に 示すようにプロセッサユニット PU内でシリアル接続された PEが両側の PEに画素デ ータを入出力できる。これにより、各 PEが独立してメモリアクセスする場合に比べて、 メモリアクセス回数を大幅に削減できる。
[0163] 本発明は上述した実施形態には限定されない。
すなわち、本発明の技術的範囲またはその均等の範囲内において、上述した実施 形態の構成要素に関し、様々な変更、並びに代替を行っても本発明は適用される。 例えば、図 2に示す例では、制御プロセッサ 201によって、複数の SCU203— 0〜 3を統括して制御する例を説明した力 図 68に示すように、 SCU203— 0〜3の各々 を制御する制御プロセッサ 201— 0〜201— 3を個別に設けてもよい。
[0164] <第 2実施形態 > 本第 2実施形態の画像処理装置 100は、図 1に示すような第 1実施形態と同様の構 成を有するが、画像処理エンジン 102の構成が第 1実施形態と異なる。画像処理ェ ンジン 102以外の画像処理装置 100の構成は、第 1実施形態と同様であるので、ここ では説明を省略する。
以下、第 2実施形態の画像処理エンジン 102の構成について説明する。
[0165] [画像処理エンジン 102]
第 1実施形態と同様、画像処理エンジン 102は、プログラマブルな画像プロセッサ であって、画像処理装置 100で実行されるアプリケーションプログラムに応じてホスト プロセッサ 101が指示する画像処理を実行する。
画像処理の対象となる画像データとしては、センサ IZF106を介して入力される力 メラモジュール 107で撮影されたデータ、メモリ IZF104を介して入力されるメモリシ ステム 105に格納されたデータ、記憶媒体 IZF108を介して入力される記憶媒体 10 9に格納されたデータ、あるいはコーデックエンジン 103から与えられるデータ、コー デックエンジン 103で処理されたデータがある。
画像処理エンジン 102は、自らの処理結果を、メモリ IZF104を介してメモリシステ ム 105に格納し、記憶媒体 IZF108を介して記憶媒体 109に格納し、コーデックェン ジン 103に出力し、内蔵表示装置 IZF110を介して内蔵表示装置 111に表示し、あ るいはビデオ IZF112を介して外部の装置に出力する。
[0166] 図 69は、第 2実施形態の画像処理エンジン 102の全体構成図である。
図 69に示すように、画像処理エンジン 102は、制御プロセッサ(CPU) 201、 PU ( プロセッサ.ユニット)アレイ 202— 0〜202— 3、並びにロー力ノレメモリ 204— 0〜204 —3を有する。
[0167] 制御プロセッサ 201は、画像処理エンジン 102全体を制御するプロセッサであって 、画像処理エンジン 102の各構成要素に対する設定や起動、および SIMD (Single I nstruction Multiple Data)型プロセッサアレイである PUアレイ 202での並列化が困難 な処理の実行を担う。
[0168] PUアレイ 202— 0〜202— 3は、プログラマブルな演算部であって、後述するように 複数の SIMD型プロセッサアレイから構成される。 また、本実施形態の PUアレイ 202— 0〜203— 0は、後述するように SCU (Stream Control Unit)をその内部に有する点が第 1実施形態と異なる。
[0169] ローカルメモリ 204— 0〜204— 3は、画像処理エンジン 102のワーキングメモリで あって、メモリシステム 105に格納された画像データの一部の保持、それぞれ PUァレ ィ 202— 0〜202— 3で処理された中間結果の格納、それぞれ PUアレイ 202— 0〜2 02— 3で実行されるプログラムや各種パラメータの格納などを行う。
[0170] 画像処理エンジン 102は、ホストプロセッサ 101の制御により、例えば、図 69に示 す PUアレイ 202— 0〜202— 3を共通のスレッドで動作させる。
共通のスレッドとは、例えば、共通のプログラムに基づいて処理を進めることを意味 する。
[0171] [PUアレイ 202一 0〜202一 3]
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 M ultiple Data)処理回路 # 0〜# 3と、それぞれの PU— SIMDに対応して接続された SCU # 10〜 # 13を有する。
[0172] PU— SIMD処理回路 # 0は、コントロールユニット 303— 0と、 4つのプロセッサュ ニット PU # 00〜 # 03を有する。
4つのプロセッサユニット PU # 00〜 # 03は、同一命令で動作する SIMD型プロセッ サを構成する。
4つのプロセッサユニット PU # 00〜 # 03は、一次元状に横接続されて 、る。
プロセッサユニット PU # 00〜 # 03間の接続を隣接するプロセッサユニット間に限 定するとともに、 SCUからのデータ供給に用いる I#BUSを 4つのプロセッサユニットで 共有することで、配線を少なく出来るとともに、バス制御を簡単にできる。
プロセッサュ-ット?11 # 00〜# 03は、シリアルに接続したことで、隣接画素データ を頻繁に使用する画像処理において、ローカルメモリを介さずに画素データを直接 的に、隣接するプロセッサユニットに出力でき、処理時間を短縮できる。 PU— SIMD処理回路 # 1〜 # 3は、 PU— SIMD処理回路 # 0と同様の構成を有 している。
[0173] [プロセッサユニット PU # 00]
プロセッサユニット PU # 00の構成については、第 1実施形態において図 4と関連 付けて行った説明と同様であるため、ここでは説明を省略する。
[0174] SCU(Stream Control Unit) # 10から入力データバス I— BUS0を介してプロセッサ ユニット PU # 00に入力したデータは、 PU # 00内の入力ラインバッファ 401に書き 込まれる。
プロセッサエレメント PE0〜15の各々は、入力ラインバッファ 401から読み出したデ ータを用いて演算を行い、その演算結果を出力ラインバッファ 404に書き込む。
SCU # 10は、出力ラインバッファ 404から演算結果を読み出す。
[0175] 図 70に示すように、 PUアレイ 202— 0は、 4つの PU— SIMD処理回路 # 0〜 # 3 を独立して並列に動作させることも、直列動作させることもできる。直列に動作させる 場合には、 SCU間の接続を利用して接続される。
[0176] 図 70〖こ示すコントロールユニット 303— 0は、図示されない命令格納用メモリを有し 、当該命令格納用メモリから読み出した命令をデコードして得た制御信号を、 PU— SIMD # 0内の全ての PEに出力する。
コントロールユニット 303— 0内には、ここには図示されないプログラムフロー制御用 ノレープレジスタや、 PE内のストリームレジスタにアクセスするためのポインタレジスタ が含まれる。
ループレジスタは、プログラム中のループ回数を制御するレジスタであり、制御プロ セッサ 201が設定する力、あるいはプログラム実行時に命令により設定することができ る。
命令によりループレジスタを設定する場合に、 PE内のレジスタ値をソースオペランド として指定することができる。その際には複数の PEのうち、予め決められた PE、例え ば図中左端の PE、例えば、プロセッサユニット PU # 00の PE0、のレジスタ値を使用 する。
ポインタレジスタについても、 PE内のレジスタ値をソースオペランドとして指定するこ とができる力 ループレジスタの場合と同様特定の PEのレジスタ値を使用する。 コントロールユニット 303— 1から 303— 3についても同様である。
[0177] 以下、カメラモジュール 107を用いて撮像された静止画像を記録する場合を例に取 り上げ、画像処理装置 100における処理手順ならびに処理分配を説明する。
[0178] カメラモジュール 107内の撮像素子で撮影されたデータは、水平スキャンラインごと にセンサ IZF106を介して読み出され、画像処理エンジン 102に出力されると共に、 メモリシステム 105に格納される。この際、画像処理エンジン 102では、検波処理の 一部が実行される。
メモリシステム 105に 1フレーム分の画像データが格納されると、画像処理エンジン 102は、内部の PU—SIMD処理回路を効率よく並列動作させるため、 1フレーム分 の画像データのうち、必要な矩形画像領域を読み出しながら検波処理の残りや各種 カメラ信号処理、ならびに各種画像処理を実行する。
画像処理エンジン 102の処理結果は、メモリシステム 105に格納される。 画像処理エンジン 102は、解像度変換も行う。解像度変換された画像データは、内 蔵表示装置 IZF110を介して内蔵表示装置 111に表示される。
コーデックエンジン 103は、メモリシステム 105に格納されている画像処理エンジン 102により処理された複数フレームの画像データを用いて画像圧縮を行う。圧縮され た画像データは、記憶媒体 IZF108を介して記憶媒体 109に記録される。
[0179] 画像処理エンジン 102は、複数個の PUアレイ 202— 0〜202— 3で構成されるが、 ぞれぞれの PUアレイ 202— 0〜202— 3は、フレーム内の異なる領域を処理する。 本第 2実施形態のように 4つの PUアレイ 202— 0〜202— 3で構成する場合、例え ば第 1実施形態において図 5に関連付けて説明したように、各 PUアレイ 202— 0〜2 02— 3に領域を割り当てることができる。
PUアレイ 202— 0〜202— 3の各々は、前述したように 64個の PEから成る PU SI MD処理回路を複数個有し、例えば第 1実施形態において図 6に関連付けて説明し たように、各 PUアレイ 202— 0〜202— 3に割り当てた領域を、さらに横 64ピクセル 幅の矩形画像領域に分割し、各ピクセルを 1つの PEに割り当てることができる。 この時、各 PEは、第 1実施形態において図 7に関連付けて説明したように、自らの 割り当てられた縦方向のピクセル列を順に処理する。
[0180] 例えば、 PUアレイ 202— 0が第 1実施形態の図 8に示すように、 5 X 5画素のフィル タ処理を行う場合を考える。
この時、 PUアレイ 202— 0内の各 PEは、第 1実施形態の図 8に示すように、処理対 象の画素位置 Pixelの画素データのフィルタ処理を行うために、画素位置 Pixelを中 心とした 5 X 5の画素位置の画素データを用いる。
PUアレイ 202— 0内の各 PEは、図 8に示す矢印(図中下向き)に順に処理対象の 画素位置を移動させる。
PUアレイ 202— 0内の各 PEが画素位置 Pixelの上記 5 X 5画素のフィルタ処理を 終了すると、は、第 1実施形態の図 9に示すように、次の 1ライン分の画素位置の画素 データをローカルメモリ 204— 0あるいはメモリシステム 105から読み出して PUアレイ 202— 0内のプロセッサユニット PUの入力ラインバッファ 401に書き込む。
そして、 PUアレイ 202— 0内の各 PEは、第 1実施形態の図 10に示すように、次の 画素位置 Pixel— nextの画素データの 5 X 5画素のフィルタ処理を行う。
[0181] なお、以上の説明では図 70に示す PU— SIMD # 0を中心に説明した力 PU— S IMD # 1〜 # 3は PU— SIMD # 0と同様である。
PUアレイ 202— 1〜202— 3は、 PUアレイ 202— 0と同様である。
[0182] [プロセッサエレメント PE]
次に、 PEn (n= l〜14)について説明する。
なお、 PE0は PE間では PE1との間でのみデータ入出力を行い、 PE15は PE14と の間でのみデータ入出力を行う点を除いて PEnと同一である。
図 71は、第 2実施形態における PEnの構成図である。
図 71に示すように、 PEnは、マルチプレクサ MUX1000、 1001、ストリームレジス タ SR0〜SR3等の各種レジスタ、演算論理ユニット ALUを有する。
[0183] 入力ラインバッファ 401は、 SCU (Stream Control Unit)から送られる入力データを 受け取るためのバッファである。 1つの PEあたり 16bitのデータを一段分保持すること ができる。
出力ラインバッファ 404は、 PEでの演算結果を SCUへ送るためのバッファである。 1つの PEあたり 16bitのデータを一段分保持することができる。
[0184] ストリームレジスタ SR0〜3は、 16bit幅、エントリ数 16のレジスタファイルであり、各 PEは合計 4本の SRを有する。
ストリームレジスタ SR0〜3は、主に、 SCU力 供給される演算に必要なデータの格 納ゃ、演算結果の一時待避を行うためのレジスタで、直接アドレス指定による参照に よる参照が可能である。各ストリームレジスタごとに最大 4つのポインタを定義できる。 各ポインタは、以下の 3つの値を持つ。すなわち、ポインタ定義領域の始点である「St art」と、ポインタ定義領域の終点である「End」と、現在のポインタ位置である「Current 」である。ただし、 End≥ Startでなければならない。 2つのポインタの Startと Endを同 一にし、一つを Readポインタ、他方を Writeポインタとして使用することにより、 FIFOと して機能させることができる。また、ポインタごとに Startと Endを変えてもよい。
また、同一ストリームレジスタ内の全く独立したポインタについて、 Startと Endで指定 する領域が互いに重複することを禁止はしな 、。
[0185] 以下、ストリームレジスタ SR0〜3に関連する機能について述べる。
1)ストリームレジスタ SR0〜3の参照
ストリームレジスタ SR0〜3に対して書き込みあるいは読み出しを行う際の参照方法 としては、ポインタ参照と直接参照の 2種類がある。
ポインタ参照は、指定したポインタの Currentからのオフセットで参照する。オフセッ ト値は、読み出しの場合には 0〜15の範囲の正の整数、書き込みの場合は 0〜3の 範囲の正の整数である。
直接参照は、ストリームレジスタ SR0〜3内のエントリを即値で指定する。即値は、 0 〜 15の範囲の正の整数である。
[0186] 2)ポインタ操作
以下に示すようなポインタ操作を実現する命令が用意されている。
a)ポインタが持つ値の即値指定
Start, Endの各値を即値により指定する。
b) Current値に対する即値加算
加算する即値は、 8〜7の範囲の整数である。 c)ポインタが持つ値の初期化
Start, End, Currentの各値は、リセット後に、それぞれ、 0、 15、 0に初期化される。 また、 Current値を Start値に初期化する命令も用意されて 、る。
[0187] 3) Wraparound
ストリームレジスタ SR0〜3に対するポインタ参照やポインタ操作を行った際に、く St art,End〉で定義される領域を超えることがある。この場合には、以下のような Wraparou ndが行われる。ここで、ストリームレジスタ SR0〜SR3のエントリへの Wraparound前と 後の indexをそれぞれ idxbw、 idxawとすると、
iaxaw = (idxbw > End)?
Start + (idxbw- End- 1) % (End- Start+1): idxbw
idxaw = (idxbw < Start)?
End - (Start- idxbw- 1) % (End- Start+1): idxbw
である。
[0188] 4)連結モード
4つあるストリームレジスタ SR0〜3のうち、 SR0と SR1あるいは SR2と SR3の糸且み 合わせについて、同一ポインタで指定されるポインタ定義領域どうしを連結して使用 することができる。例えば、 SR0と SR1の組み合わせについて、ポインタ 0を連結した 場合には、 SR0用ポインタ 0の Startと Endで定義される領域と SR1用ポインタ 0の Star tと Endで定義される領域が連結される。あるポインタにつ ヽて連結モードを指定する と、ストリームレジスタペアのうち偶数側のポインタのみ有効となる。偶数側のポインタ 値が Endを超えると、自動的に奇数側のポインタ領域にポインタ値が変更され、あた 力も両領域が連続しているように使用することができる。また、奇数側のポインタ領域 の Endを超えると、自動的に偶数側の Start値に変更される Wraparoud機能も実現する 。この機能により、 2つのストリームレジスタの空き領域を有効利用したり、 16エントリを 超えるポインタ領域を定義したりすることができる。ポインタの動作モードとして連結モ ードが設定された場合には、偶数側のポインタのみ使用できる。連結モードの設定は 、ストリームレジスタ単位ではなぐポインタ単位で設定する。したがって、各ポインタ に対する連結モードの設定は互 、に独立して 、る。 [0189] PEが有する他のレジスタ群について簡単に説明する。
レジスタ SO〜S3は、 4個の汎用レジスタであり、それぞれ 16bit長である。 32bitデ ータを扱う演算を行う場合には、連続する 2つのレジスタ、すなわち SOと S1あるいは S2と S3をレジスタ ·ペアとしてオペランド指定することができる。
レジスタ TEMPSはデータ長が 16ビットの一時退避用レジスタである。
レジスタ TEMPSは、共有機能ュ-ット 403を利用する際に用いられるレジスタであ り、共有機能ユニット 403へのアクセス以外の場合では、ワーキングレジスタとして使 用できる。これらのレジスタは、算術論理演算命令のソースオペランドとデスティネー シヨンオペランドの両方に指定できる。
[0190] レジスタ CONDは、主に条件実行を行う際に用いられるデータ長が 4ビットのコンデ イシヨンレジスタである。算術論理演算のデスティネーションオペランドとして指定可能 で、その際には、演算結果のうちの任意の 1ビット、演算論理ユニット ALUにおける 演算の結果、キャリーが立った事を示すキャリーフラグ、あるいは演算結果力^である ことを示すゼロフラグのどれかの選択とコンディションレジスタのどのビットに反映させ るかを指定する。
レジスタ PENUMは、自身のプロセッシングエレメント番号(0〜63)が格納されて!ヽ るデータ長が 6ビットのプロセッサ番号レジスタであり、読み出し専用である。
図 71にお!/、て Constと記載されたパスは、レジスタ CONSTANTをソースオペラン ドとして指定した場合に定数値を渡すパスであり、 16bit幅である。レジスタ CONST ANTは、複数のレジスタで構成される。レジスタ CONSTANTは、 PE毎に持つわけ ではなぐ SCU内に持たれる。
[0191] PEでは、演算を行う際に、 自身のレジスタだけでなぐ隣接する PEのレジスタを参 照することができる。すなわち、 PE1は PE0と PE2のレジスタを参照できる。ただし、 隣接 PE間で参照できるのは、汎用レジスタ S0〜S3のみである。図 71において、 To Left PE、 To Right PEと記載したノ ス力 それぞれ左隣接 PE、右隣接 PEに汎用レジ スタ S0〜S 3の値を渡すパスである。また、 From Left PE、 From Right PEと記載した パスが、それぞれ左隣接 PE、右隣接 PEカゝら選択されたレジスタの値を受け取るパス である。本第 2実施形態の PEは、左隣接 PE用と右隣接 PE用とに別々のマルチプレ クサを用意して 、るので、左右それぞれ異なる汎用レジスタ参照を同一サイクルで行 うことができるので、処理を早く行うことができる。なお、 PE0及び PE15が参照できる のは、左右いずれかの PEのレジスタのみとなる。
[0192] 次に演算論理ユニット ALUについて説明する。
図 71〖こ示すよう〖こ、 PEは 3種類の演算論理ユニットを持ち、これら 3つの演算論理 ユニットを用いた演算を同時実行可能である。 3種類の演算論理ユニットは、乗算を 行うユニットである Operator Resource Mと、主に加減算や比較演算を行うユニットで ある Operator Resource A/Bと、主に論理演算やシフトを行うユニットである Operator Resource Lである。
[0193] PEでの演算に必要なデータは、 SCUによって入力ラインバッファ 401に書き込ま れる。入力ラインバッファ 401の容量は、 1PEあたり 16bit幅 1段分である。また、 PE で演算された結果は出力ラインバッファ 404に書き込まれる。入力ラインバッファ 401 と同じく、その容量は、 1PEあたり 16bit幅 1段分である。
PEは、ロード命令により入力ラインバッファ 401に書き込まれたデータをストリームレ ジスタ SR0〜SR3に転送する。ストリームレジスタ SR0〜SR3へは、入力ラインバッフ ァの他に、レジスタ CONDからのロードも可能である。逆に、ストリームレジスタ SR0〜 SR3からレジスタ CONDへデータを移動する命令も用意されている。
出力ラインバッファ 404への書き込みは、通常は演算命令のデスティネーションォ ぺランドに直接指定することにより行うが、レジスタ CONDから出力ラインバッファ 40 4へデータを移動する命令も用意されて ヽる。
これらデータ転送は、演算論理ユニット ALUが行う演算と並行して行われる。
すなわち、第 2実施形態の PEでは、同時に複数の演算を行うことができる。 共有機能ユニット 403については、第 1実施形態において行った説明と同様である ため、説明を省略する。
[0194] [SCU (Stream Control Unit) # 10〜 # 13]
以下、 SCU # 10について説明する。
SCU # 11〜# 13は、 SCU # 10と同じである。
[0195] SCU # 10は、図 70等に示すように、複数の PU SIMD (Single Instruction Multi pie Data)処理回路 # 0に対して、それを構成する個々のプロセッサエレメント PEの 処理に必要なデータを効率よくデータを入出力するための制御を行う。
同様に、 SCU # 11は PU— SIMD処理回路 # 1に対して、 SCU # 12は PU— SI MD処理回路 # 2に対して、 SCU # 13は PU— SIMD処理回路 # 3に対して、それ を構成する個々のプロセッサエレメント PEの処理に必要なデータを効率よくデータを 入出力するための制御を行う。
[0196] SCU # 10は、処理に必要なデータを半導体メモリなどに代表される記憶装置に収 納する。
PU— SIMD処理回路 # 0〜# 3は、 SIMD型プロセッサであるため、すべての PE に対する入出力は時間的に同時に行われる。従って、 SCU # 10による PU— SIMD # 0に対する入出力は、 PEの個数分の入出力データを同時に入出力することになる 。以下同時に入出力されるデータを、ストリームデータと呼ぶことにする。
[0197] 一方、 PU— SIMD処理回路 # 0〜 # 3は画像情報の処理を主に行うが、処理対象 である画像情報は、メモリなどの記憶装置において、物理的な 1次元のアドレスで管 理された記憶領域内に、論理的な 2次元記憶領域を確保して記憶されている。その 画像データの基本単位は画素データと呼ばれる。
SCU # 10は、 PU— SIMD処理回路 # 0と、メモリシステム 105およびローカルメモ リ 204— 0との間に位置し、複数の画素データをストリームデータに変換して入出力を 行う機能を持っている。
[0198] 次に、 SCU # 10の構造について説明する。
図 72は、 SCU # 10の構造を示すブロック図である。
図 72に示すように、 SCU # 10は、書き込み部 # 101と、読み込み部 # 102と、制 御部 # 103とからなる。
[0199] 書き込み部 # 101は、ローカルメモリ 204— 0またはメモリシステム 105 (以下記憶 領域)への書き込みを行う。
読み込み部 # 102は、記憶領域からの読み込みを行う。
制御部 # 103は、 SCU # 10の全体的な制御を行う CPU等の制御装置であり、デ ータ処理や PU SIMD処理回路 # 0へのデータ供給を行う。 [0200] 以下、 SCU # 10が記憶領域内に定義する矩形画像領域について説明する。
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指定の一連の 繰り返し処理をプログラム可能である。
[0201] 図 73に示すように、 SCU # 10は、記憶領域中に、出力作業領域として矩形画像 領域 WORを指定する。
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内部の画素データがアクセス された場合には、記憶領域へアクセスが必要になるため、論理アドレスから物理アド レスへの変換を行って記憶領域にアクセスする。
[0202] 図 74は、 SCU # 10内部に設定される多重矩形画像領域に関する処理を行う機能 を説明するための図である。
図 74に示すように、 SCU # 10は、 PU— SIMD処理回路 # 0に、記憶領域内の矩 形画像領域 WIRO及び WOROを割り当てる。
矩形画像領域 WIRO及び WOROは、メモリシステム 105やローカルメモリ 204— 0 などの記憶領域内に規定される。
また、本実施形態の SCU # 10は、記憶領域中に WIR0〜WIR7の 8種類の WIRと 、 WOR0〜WOR7までの 8種類の WORを定義することが可能である。更に、それぞ れの矩形画像領域 WIR0〜WIR7に矩形画像領域 BR0〜: BR7が、 WOR0〜WOR 7に DR0〜DR7力 それぞれ 1つずつ規定される。
[0203] 図 72に示す SCU # 10は、データ変換コマンド WI— data— opにより、矩形画像領 域 BR内のデータをストリームデータへ変換して、出力バッファ out— bufに Writeする また、 SCU # 10は、データ変換コマンド WO#data#opにより、 PU— SIMD処理回 路 # 0から入力して入力バッファ in#bufに収納されて 、るストリームデータをデータ変 換して矩形画像領域 DRに Writeする。
[0204] 図 72を参照して上述したように、矩形画像領域 WIR内に矩形画像領域 BR、 WOR 内に DRを階層構造で規定することで、例えば、矩形画像領域 WIR内で矩形画像領 域 BRを、 WOR内で DRを相対的に移動させる場合に、基準座標を矩形画像領域 B R、 DR内のローカルな座標に加算する形式でのアドレス表現が可能になり、プロダラ ミングが簡単になる。
本実施形態では、矩形画像領域の個数や多重指定の階層数などを具体的な数字 で表現している力 その構成や数量は組み合わせ自由であり、幅広い画像処理の必 要性に応じて構成を変えることが可能である。
すなわち、第 1実施形態の SCU203_0が矩形画像領域内に AR或いは CRを設 定し、さらにその中に BR或いは DRを設定していた力 本第 2実施形態の SCU # 10 によれば、 WRの中に AR及び CRを設定せずに BR及び DRを設定しているので、 S CU # 10の動作は簡略化され、動作速度が速くなる。
[0205] 次に、 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は、データ転送効率や機能が満足されるのであれば、バス規 格にはこだわらな 、選択が可能である。
[0206] [SCU # 10の専用記憶領域接続]
SCU # 10は、専用記憶領域として専用記憶装置を接続することが可能である。 専用記憶装置は SRAMや DRAMなどの半導体メモリが SOC内部と外部のどちら にあろうとも選択可能である。
上記専用記憶装置は、システムバス 113より広帯域なバスに接続される。 上記専用記憶装置は、 1つの SCU # 10が占有して使用する目的で用意されてい る。
システムバス 113上のバスマスタから、上記専用記憶装置へのアクセスが可能であ る。
[0207] [PU_SIMD接続]
SCU # 10には、 PU— SIMD処理回路 # 0がバス接続される。
同様に、 SCU # 11には PU— SIMD処理回路 # 1力 SCU # 12には PU— SIM D処理回路 # 2が、 SCU # 13には PU SIMD処理回路 # 3がバス接続される。 SCU # 10から PU— SIMD処理回路 # 0へのストリームデータ入力は、 PU— SIM D処理回路 # 0に 256ビットの単方向バスを使用する。転送効率は 256bit/clockであ る。
data/転送プロトコルとして 2線式のハンドシェークを採用する。
SCU # 10内部には出力バッファ out_bufを用意する。
SCU # 10から出力を行う場合は、 PU— SIMD処理回路 # 0に対してアドレスを指 定することで PU—SIMD処理回路内部レジスタを識別する。
PU— SIMD処理回路 # 0から SCU # 10へのストリームデータ入力は、各 PU— SI MDの 256ビットの単方向バスを使用し、転送効率は 256bit/clockである。
また、データ転送プロトコルとして 2線式のハンドシェークを採用する。
SCU # 10内部には入力用の入力バッファ in_bufを用意する。
PU— SIMD処理回路 # 0から SCU # 10へ入力を行う場合は、 PU— SIMDに対 してアドレスを指定することで PU—SIMD処理回路内部レジスタを識別する。
[0208] [SCU # 10の物理論理アドレス変換]
SCU # 10がアクセスする図 73および図 74を用いて説明した記憶領域内の矩形画 像領域 WR内部の画素対応位置 Pixelは 2次元論理アドレスで表現されて ヽるが、メ モリシステム 105およびローカルメモリ 204— 0は物理アドレスで表現されている。従 つて、 SCU # 10は、矩形画像領域 WR内の矩形画像領域 AR, BR, CR, DR内部 に指定された画素対応位置 Pixel〖こ対して Readまたは WRiteを行う場合は、 2次元論 理アドレスから物理アドレスへのアドレス変換を行う。
アドレス変換の方法については、第 1実施形態と同様であるためここでは説明を省 略する。
[0209] [SCU # 10による記憶領域へのアクセス]
SCU # 10は、上述したように、記憶領域として、システムバス 113に接続された大 規模外部記憶装置であるメモリシステム 105と、小規模な専用記憶装置であるロー力 ルメモリ 204— 0を使用することができる。
メモリシステム 105は、例えば、 SCU # 10が含まれる SOCの外部に接続される DRA M- CHIPであり、一般的な DDRや RAMBUSなどのメモリ chipなどである。 ローカルメモリ 204— 0は、例えば、 SCU # 10が含まれる SOC内部の SRAMや eDR AM (Embedede- DRAM:SCUと同じ SOCに含まれる On- chip DRAM)などである。
[0210] 一般的に、 DRAMは、 Raw/Column/bankといったアドレスの階層構造があり、同一 の Rawに含まれる連続データアクセスは高速である力 Raw境界をまたがった連続デ ータアクセスや、遠隔の Raw同士の連続アクセスは、ページプリチャージなどの処置 を必要とするため、低速となるという特徴がある。
本実施形態では、 SCU # 10は、例えば、メモリシステム 105やローカルメモリ 204 — 0として、 DRAMを使用している力 SRAMであっても問題はない。また、 DRAMを使 用する場合、上記アクセス性能の不連続性を可能な限り避ける目的で、記憶領域内 の画素データの矩形画像配列を、ストリームデータ生成時には可能な限り同一ぺー ジに配置する工夫をすることで、 DRAMアクセスの不連続性を可能な限り低減する処 置をとることができる。
この工夫は、たとえば第 1実施形態で説明した方法等により実現することができる。
[0211] [SCU # 10による多重矩形画像領域定義 (読み出し時) ]
SCU # 10は、上述したように、記憶領域内の矩形画像領域 WIR内に、図 75に示 すように、 2次元論理アドレス表現で多重矩形画像領域として、矩形画像領域 BRを 規定できる。
WIRは、記憶領域中に物理アドレッシング可能な連続領域として定義される。 また、 WIR内部の pixelの指定は、 SCUによって論理アドレッシングにより定義され る。
ここで pixelは 16bit固定サイズで論理アドレッシングされる。ただし、記憶領域の情 報量削減のために、 lpixelを 12bit或いは 8bitで表現することもでき、この場合は、 記憶領域内部と SCUでの pixel表現の違 、(例えば、記憶領域内では 8bitZpixel の場合、 SCU内部の lpixelが記憶領域内の 2pixelと等価)に留意する必要がある。
[0212] また、 WIR内には BRを定義することができる。
BRは、 WIR内に論理アドレス空間で定義される。
BRは、 WIRの部分コピーではなくアドレスマッピング変換でアクセスする。
BRを定義する際には、 WIRを逸脱して定義することもできるが、逸脱した場合の pi xel値は保障されない。
BRは、 BRO〜: BR7の 8種類存在する。
BR領域は、 BRn (n=0〜7)ごとに矩形の左端座標(図 75における bx、 by)を指定 できる。
BR領域の矩形サイズは、以下の 8種類の中力 wi— data— opによって指定される 。すなわち、水平方向 16、 32、 48、 64pixelで垂直方向に lpixelの領域、あるいは 水平方向に lpixelで垂直方向に 16、 32、 48、 64pixelの領域のいずれかである。
[0213] それぞれの位置関係を示す値として以下の座標値が使われる。
wirwは、矩形画像領域 WIRの X方向矩形画像領域幅である。
bx及び byは、矩形画像領域 WIR内の矩形画像領域 BRの 2次元座標を示す。矩形 画像領域 WIRの左上を原点 (0,0)とした座標系で、矩形画像領域 BRの左上の画素 対応位置 Pixelの座標を示す。
bw及び bhは、矩形画像領域 BRの幅と高さを示す。
X及び yは、矩形画像領域 BR内の画素対応位置 Pixelの 2次元座標を示す。矩形 画像領域 BRの左上を原点 (0,0)とした座標系である。
[0214] [SCU # 10による PU— SIMD # 0へのデータ入力処理]
SCU # 10は、矩形画像領域 BRから画素データ Pixel (bx, by)を読み出し、これ をデータストリームへデータに変換して(入力データ変換処理を行って) PU— SIMD 処理回路 # 0に入力させる。この処理は、第 1実施形態において説明した処理と同様 であるため、説明を省略する。
[0215] [SCU # 10による多重矩形画像領域定義 (書き込み時) ]
SCU # 10は、記憶領域内の矩形画像領域 WOR内に、図 76に示すように、 2次元 論理アドレス表現で多重矩形画像領域として、矩形画像領域 DRを規定できる。
WORは、記憶領域中に物理アドレッシング可能な連続領域として定義される。 また、 WOR内部の pixelの指定は、 SCUによって論理アドレッシングにより定義さ れる。
ここで pixelは 16bit固定サイズで論理アドレッシングされる。ただし、記憶領域の情 報量削減のために、 lpixelを 12bit或いは 8bitで表現することもでき、この場合は、 記憶領域内部と SCUでの pixel表現の違 、(例えば、記憶領域内では 8bitZpixel の場合、 SCU内部の lpixelが記憶領域内の 2pixelと等価)に留意する必要がある。
[0216] また、 WOR内には DRを定義することができる。
DRは、 WOR内に論理アドレス空間で定義される。
DRは、 WORの部分コピーではなくアドレスマッピング変換でアクセスする。 DRを定義する際には、 WORを逸脱して定義することもできる力 逸脱した場合の p ixel値は保障されない。
DRは、 DR0〜DR7の 8種類存在する。
DR領域は、 DRn (n=0〜7)ごとに矩形の左端座標(図 76における dx、 dy)を指 定できる。
DR領域の矩形サイズは、以下の 8種類の中力 wo— data— opによって指定され る。すなわち、水平方向 16、 32、 48、 64pixelで垂直方向【こ lpixelの領域、ある!/ヽ は水平方向に lpixelで垂直方向に 16、 32、 48、 64pixelの領域のいずれかである それぞれの位置関係を示す値として以下の座標値が使われる。
worwは、矩形画像領域 WORの X方向矩形画像領域幅を示す。
dx及び dyは、矩形画像領域 WOR内の矩形画像領域 DRの 2次元座標を示す。矩 形画像領域 WRの左上を原点 (0,0)とした座標系で、矩形画像領域 DRの左上の座標 を示す。
dw及び dhは、矩形画像領域 DRの幅と高さを示す。
[0217] [PU— SIMD処理回路 # 0の出力データ変換処理]
PU— SIMD処理回路 # 0が出力したストリームデータは、入力バッファ in— bufに 書き込まれる。
SCU # 10は、入力バッファ in— bufからデータを読み出し、並べ替えなどのデータ 変換処理を施した後に、矩形画像領域 DRに書き込む。
また、 SCU # 10は、必要に応じて、入力バッファ in— bufからデータを読み出し、 マスクデータ DRftnaskに従った並べ替えなどのデータ変換処理を施した後に、矩形 画像領域 DRに書き込む。 これらの処理に関しては、第 1実施形態において SCU203—0が行う処理と同様で あるため、説明を省略する。
[0218] [画像処理装置 100の全体動作例]
図 1に示すホストプロセッサ 101はプログラム PRGを実行し、これにより図 70に示す SCU # 10〜 # 13にプログラムを指定する。
SCU # 10〜# 13は、ホストプロセッサ 101によって指定されたプログラムを実行し て得たそれぞれ 4本ずつの所定のスレッドに基づ!/、て、それぞれ PUアレイ 202— 0 〜202— 3内の PEの処理進行に応じてメモリシステム 105あるいはローカルメモリ 20 4_0〜3に対するアクセスを実行する。
PUアレイ 202— 0〜202— 3内の PEは、 SCU203— 0〜3あるいはホストプロセッ サ 101の制御に従って、 SCU # 10〜# 13によるメモリアクセス結果を利用しながら 、 SCU # 10〜 # 13とは別のスレッドで動作する。
[0219] 各 PUアレイ 202— 0〜202— 3内では、 SCU # 10〜# 13と PU— SIMD # 0〜# 3とがそれぞれ接続されて動作する。
PU— SIMD # 0〜# 3内では、 16個の PE0〜15がシリアルに接続され、隣接する PE間で必要に応じて画素データの入出力が行われる。
[0220] 以上説明したように、本第 2実施形態の画像処理装置 100によれば、画像処理ェ ンジン 102において、 PUアレイ 202— 0〜202— 3内の PU— SIMD(Single Instructi on Multiple Data)単位を共通のスレッドで動作させ、当該スレッドとは別のスレッドで S CU # 10〜 # 13を動作させる。
これにより、膨大な画素データについて、それに対する処理が予め特定でき、且つ 相互に独立であることを利用して、複数のプロセッサエレメント(PE)において共通の スレッドを基に並列的に実行できる。更に、第 2実施形態の PEでは、同時に複数の 演算を行うことができるため、装置全体の処理速度が向上する。
また、 SCU # 10〜# 13のスレッドを、 PUアレイ 202— 0〜202— 3のスレッドとは 別にすることで、 PEの処理のバックエンドで、当該 PEの処理に係わるデータに関す る記憶領域に対してのアクセスを効率的に実現できる。
[0221] 画像処理エンジン 102によれば、 PUアレイ 202 0〜202 3の処理に係わるデ ータについての記憶領域へのアクセスを SCU # 10〜# 13行うことで、 PUアレイ 20 2— 0〜202— 3の PEは大規模な記憶領域へのアクセス処理を行う必要がなぐ画像 処理を効率的に行うことができる。
[0222] 画像処理エンジン 102によれば、プロセッサユニット PUがシリアル接続された両側 のプロセッサユニット PUに画素データを入出力できると共に、プロセッサユニット PU 内でシリアル接続された PEが両側の PEに画素データを入出力できる。これにより、 各 PEが独立してメモリアクセスする場合に比べて、メモリアクセス回数を大幅に削減 できる。
[0223] 更に、本第 2実施形態の画像処理装置 100によれば、 PU— SIMD毎に SCUを割 り当て個別に処理を行うので、 SCUにかかる負荷が軽減され、画像処理に要する時 間が短縮される。
更に、本第 2実施形態の画像処理装置 100によれば、 SCU # 10〜# 13の記憶領 域内に定義する多重矩形画像領域が WRと BR (或いは DR)の 2重のみであるので、 処理が簡略化され、画像処理装置 100全体にかかる負荷が軽減され、処理に要する 時間が短縮される。
[0224] 本発明は上述した実施形態には限定されない。
すなわち、本発明の技術的範囲またはその均等の範囲内において、上述した実施 形態の構成要素に関し、様々な変更、並びに代替を行っても本発明は適用される。
[0225] 上述した実施形態では、多量のデータを扱う画像処理を例示した力 画像処理以 外に各種のデータ処理についても本発明を適用可能である。
すなわち、本発明は、 PU— SIMD処理回路のように、それぞれ複数のプロセッサ エレメント PEを有する複数のプロセッサユニット PUを用いて信号処理を分散処理す る場合に、各プロセッサユニット PU内の対応する各プロセッサエレメント PEに記憶手 段力もいかに効率よく対応するデータを提供する、あるいは、逆の各プロセッサエレメ ント PEからのデータを整合性を保って記憶手段に書き込むという処理を行う、各種の 信号処理に適用できる。
[0226] 本実施形態で説明した PUアレイ 202— 0〜202— 3、 SCU203— 0〜203— 3、プ 口セッサユニット PU、プロセッサエレメント PEの数は任意である。

Claims

請求の範囲
[1] 記憶部と、
前記少なくとも 1つの記憶部のうちいずれか所定の 1つの記憶部へのデータの読み 出し及び Zまたは書き込みを制御する入出力データ制御部(scu)と、
前記入出力データ処理部が読み出したデータに対して所定の信号処理を行う信号 処理部(PUアレイ或いは PU— SIMD)と、
を有する信号処理装置であって、
前記入出力データ制御部と、前記信号処理部とは別のスレッドに基づ 、て動作す る
信号処理装置。
[2] 前記信号処理部は、 SIMD (Single Instruction Multiple Data)方式の信号処理回 路 (PU)を複数有し、
前記複数の信号処理回路は互いに直列に接続されており、
前記複数の信号処理回路の 1は、前記入出力データ制御部が前記記憶部から読 み出し前記信号処理部に入力したデータを基に前記所定の処理を行うとともに、隣 接する他の信号処理回路との間でデータのやり取りを行う
請求項 1に記載の信号処理装置。
[3] 前記入出力データ制御部は、前記複数の信号処理回路のうち任意の少なくとも 1 つの信号処理回路を、直列或いは並列の!/、ずれか一方で選択的に接続可能である 請求項 2に記載の信号処理装置。
[4] 前記信号処理部を所定数有する信号処理装置であって、
前記信号処理部と同数の前記入出力データ処理部を有する
請求項 2に記載の信号処理装置。
[5] 前記入出力データ制御部は、内蔵メモリを有し、
前記入出力データ制御部は、前記複数の信号処理回路のうち 1の処理回路が他 の処理回路の結果を用いる場合に、前記他の処理回路の処理の結果を前記内蔵メ モリに書き込み、当該内蔵メモリから当該結果を前記処理回路に読み出す
請求項 2に記載の信号処理装置。
[6] 前記複数の信号処理回路は、それぞれ所定の数の信号処理エレメント (PE)を有し 前記所定の数の信号処理エレメントは互 、に直列に接続されており、
前記複数の信号処理エレメントの 1は、前記入出力データ制御部が前記記憶部か ら読み出し前記信号処理部に入力したデータを基に前記所定の処理を行うとともに、 隣接する他の信号処理回路との間でデータのやり取りを行う
請求項 2に記載の信号処理装置。
[7] 前記データは画像データであり、
前記複数の信号処理回路は、画像データを処理する回路であり、
前記入出力データ制御部は、前記記憶部内に階層的に矩形の画像データ記憶領 域を規定し、
前記矩形の画像データ記憶領域内のアドレスを当該矩形の画像データ記憶領域 にローカルな 2次元アドレスで管理し、
前記記憶領域内における前記矩形の画像データ記憶領域の位置を示す基準アド レスと前記 2次元アドレスとを基に、 1次元アドレスを生成し、
前記 1次元アドレスを基に前記記憶部に記憶された画像データにアクセスする 請求項 2に記載の信号処理装置。
[8] 前記データは画像データであり、
前記複数の信号処理回路は、画像データを処理する回路であり、
前記入出力データ制御部は、
前記記憶部から画像データを読み出して前記信号処理部に出力できる形式に変 換し、及び Zまたは前記信号処理部から入力された画像データを前記記憶部に記 憶できる形式に変換する変換部 (制御部)と、
前記記憶手段から読み出され前記変換部が変換した画像データを、前記信号処 理部に出力する前に一時保持する第 1のバッファと、
前記信号処理部から入力され前記変換部が変換した画像データを、前記記憶部 に書き込まれるまで一時保持する第 2のバッファと、
を有する 請求項 1に記載の信号処理装置。
[9] 前記データは画像データであり、
前記複数の信号処理回路は、画像データを処理する回路であり、
前記入出力データ制御部は、前記記憶部から読み出した画像データを構成する複 数の部分画像データを対応する前記複数の信号処理エレメントに出力する
請求項 6に記載の信号処理装置。
[10] 前記入出力データ制御部は、
前記矩形の画像データ記憶領域内のあらかじめ決まられた複数の基準アドレスの 中から選択した基準アドレスを前記複数の処理回路に出力する
請求項 7に記載の信号処理装置。
[11] 前記入出力データ制御部は、
前記記憶部力 前記基準アドレスを読み出し、
当該読み出した基準アドレスを基に、前記矩形の画像データ記憶領域へのァクセ スを管理する
請求項 7に記載の信号処理装置。
[12] 前記入出力データ制御部は、前記複数の信号処理回路の各々に対応して前記第 1及び第 2のバッファをそれぞれ有し、
任意の前記信号処理回路に対応付けられた前記第 2のバッファから当該任意の信 号処理回路が出力したデータを読み出して、他の信号処理回路に対応付けられた 前記第 1のバッファに書き込む
請求項 8に記載の信号処理装置。
前記記憶管理回路は、
前記第 2のバッファ力 読み出したデータを基にマスクデータを生成し、 その後、前記マスクデータを基に、前記第 2のバッファ力 読み出したデータを選択 的に前記記憶手段に書き込む、
請求項 5に記載の信号処理装置。
[13] 前記入出力データ制御部は、前記複数の信号処理回路の前記第 1のスレッドの実 行開始を指示する 請求項 1に記載の信号処理装置。
[14] 前記信号処理エレメントは、
算術演算および Zまたは論理演算を行う演算論理回路と、
当該信号処理エレメントが直列に接続された他の 2つの前記信号処理エレメントと 前記入出力データ制御部とから入力したデータを記憶する第 1レジスタと、
前記第 1レジスタから読み出され、前記他の 2つの信号処理エレメント、前記演算論 理回路および前記入出力データ制御部の何れかに選択的に出力されるデータを記 憶する第 2レジスタと
を有する、
請求項 13に記載の信号処理装置。
[15] 前記第 1のレジスタは、ポインタアクセス型のレジスタである
請求項 14に記載の信号処理装置。
[16] 前記演算論理回路における演算処理と、前記第 1のレジスタおよび前記第 2のレジ スタに対するロードおよびストア処理は並列に実行可能である
請求項 15に記載の信号処理装置。
[17] 複数の前記第 1のレジスタのうち少なくとも一つの前記第 1のレジスタは、前記演算 手段による前記演算処理を制御する制御フラグを設定するためのレジスタである 請求項 16に記載の信号処理装置。
[18] ホスト処理回路と、
pL fe p[5ど、
前記少なくとも 1つの記憶部のうちいずれか所定の 1つの記憶部へのデータの読み 出し及び Zまたは書き込みを制御する入出力データ制御部(scu)と、
前記入出力データ処理部が読み出したデータに対して所定の信号処理を行う信号 処理部(PUアレイ或いは PU— SIMD)と、
を有する信号処理装置であって、
前記信号処理部は、前記ホスト処理回路ある!、は前記入出力データ制御部の制御 により、共通の第 1スレッドに基づいて動作し、
前記入出力データ制御部は、前記ホスト処理回路の制御により、前記第 1スレッドと は別の第 2のスレッドに基づいて動作する 信号処理装置。
PCT/JP2006/310174 2005-05-20 2006-05-22 信号処理装置 WO2006123822A1 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2007516362A JP4893621B2 (ja) 2005-05-20 2006-05-22 信号処理装置
US11/572,331 US8464025B2 (en) 2005-05-20 2006-05-22 Signal processing apparatus with signal control units and processor units operating based on different threads
EP06746708.4A EP1883045A4 (en) 2005-05-20 2006-05-22 SIGNAL PROCESSOR
CN2006800005263A CN1993709B (zh) 2005-05-20 2006-05-22 信号处理设备
KR1020077001405A KR101270925B1 (ko) 2005-05-20 2006-05-22 신호 처리 장치

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2005-148301 2005-05-20
JP2005148301 2005-05-20

Publications (1)

Publication Number Publication Date
WO2006123822A1 true WO2006123822A1 (ja) 2006-11-23

Family

ID=37431382

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2006/310174 WO2006123822A1 (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)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010003151A (ja) * 2008-06-20 2010-01-07 Renesas Technology Corp データ処理装置
JP2010108084A (ja) * 2008-10-28 2010-05-13 Toshiba Corp 画像処理装置
WO2018079331A1 (ja) * 2016-10-31 2018-05-03 ソニーセミコンダクタソリューションズ株式会社 固体撮像装置およびその信号処理方法、並びに電子機器

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US20070242074A1 (en) * 1999-04-09 2007-10-18 Dave Stuttard Parallel data processing apparatus
JP5285828B2 (ja) * 1999-04-09 2013-09-11 ラムバス・インコーポレーテッド 並列データ処理装置
US7526630B2 (en) 1999-04-09 2009-04-28 Clearspeed Technology, Plc Parallel data processing apparatus
US8762691B2 (en) 1999-04-09 2014-06-24 Rambus Inc. Memory access consolidation for SIMD processing elements using transaction identifiers
US7802079B2 (en) 1999-04-09 2010-09-21 Clearspeed Technology Limited Parallel data processing apparatus
US7966475B2 (en) 1999-04-09 2011-06-21 Rambus Inc. Parallel data processing apparatus
US20070294510A1 (en) * 1999-04-09 2007-12-20 Dave Stuttard Parallel data processing apparatus
US20080162875A1 (en) * 1999-04-09 2008-07-03 Dave Stuttard Parallel Data Processing Apparatus
US20080162874A1 (en) * 1999-04-09 2008-07-03 Dave Stuttard Parallel data processing apparatus
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
US8169440B2 (en) 1999-04-09 2012-05-01 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
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
US9928074B2 (en) * 2013-09-06 2018-03-27 Huawei Technologies Co., Ltd. System and method for an asynchronous processor with token-based very long instruction word architecture
US9740487B2 (en) 2013-09-06 2017-08-22 Huawei Technologies Co., Ltd. Method and apparatus for asynchronous processor removal of meta-stability
CN104837006B (zh) * 2014-02-11 2017-11-10 京元电子股份有限公司 半导体元件测试系统及其影像处理加速方法
US9672043B2 (en) 2014-05-12 2017-06-06 International Business Machines Corporation Processing of multiple instruction streams in a parallel slice processor
US9665372B2 (en) 2014-05-12 2017-05-30 International Business Machines Corporation Parallel slice processor with dynamic instruction stream mapping
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
CN109298886A (zh) * 2017-07-25 2019-02-01 合肥君正科技有限公司 Simd指令执行方法、装置及处理器
JP2020004247A (ja) * 2018-06-29 2020-01-09 ソニー株式会社 情報処理装置、情報処理方法およびプログラム

Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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
US5815723A (en) * 1990-11-13 1998-09-29 International Business Machines Corporation Picket autonomy on a SIMD machine
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
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
KR20010031884A (ko) * 1997-11-07 2001-04-16 추후제출 iVLIW PE 대 PE 통신으로 효율적인 동기식MIMD 연산을 위한 방법 및 장치
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
US6606704B1 (en) * 1999-08-31 2003-08-12 Intel Corporation Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode
US6668317B1 (en) * 1999-08-31 2003-12-23 Intel Corporation Microengine for parallel processor architecture
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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 画像処理装置および画像処理方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP1883045A4 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010003151A (ja) * 2008-06-20 2010-01-07 Renesas Technology Corp データ処理装置
JP2010108084A (ja) * 2008-10-28 2010-05-13 Toshiba Corp 画像処理装置
WO2018079331A1 (ja) * 2016-10-31 2018-05-03 ソニーセミコンダクタソリューションズ株式会社 固体撮像装置およびその信号処理方法、並びに電子機器
US11102436B2 (en) 2016-10-31 2021-08-24 Sony Semiconductor Solutions Corporation Solid-state imaging device and signal processing method thereof, and electronic device

Also Published As

Publication number Publication date
CN1993709A (zh) 2007-07-04
JP4893621B2 (ja) 2012-03-07
EP1883045A4 (en) 2016-10-05
US8464025B2 (en) 2013-06-11
US20090006773A1 (en) 2009-01-01
CN1993709B (zh) 2010-12-15
KR101270925B1 (ko) 2013-06-07
KR20080010377A (ko) 2008-01-30
JPWO2006123822A1 (ja) 2008-12-25
EP1883045A1 (en) 2008-01-30

Similar Documents

Publication Publication Date Title
WO2006123822A1 (ja) 信号処理装置
US5812147A (en) Instruction methods for performing data formatting while moving data between memory and a vector register file
TWI525584B (zh) 多執行緒處理單元內之可程式繫結
US6507898B1 (en) Reconfigurable data cache controller
EP0775971A1 (en) Graphics engine for colour 2D graphics
WO2007149979A2 (en) Unified virtual addressed register file
US20110261063A1 (en) System and Method for Managing the Computation of Graphics Shading Operations
US20110249744A1 (en) Method and System for Video Processing Utilizing N Scalar Cores and a Single Vector Core
CN101163240A (zh) 一种滤波装置及其方法
KR102278021B1 (ko) 이미지 프로세서 런타임 효율성을 개선하기 위한 프로그램 코드 변환
JP2015529363A (ja) 相互関係のある二次元データセットを効率的かつ高速に処理するプロセッサ、システム、および方法
US20230325196A1 (en) SIMD Operand Permutation with Selection from among Multiple Registers
EP2382546B1 (en) Memory management process and apparatus for the same
EP4198717A1 (en) Register file virtualization: applications and methods
CN116257208A (zh) 用于矩阵乘法阵列上的可分离卷积过滤器操作的方法和装置
AU739533B2 (en) Graphics processor architecture
JPH07210545A (ja) 並列処理プロセッサ
AU728882B2 (en) Compression
AU760297B2 (en) Memory controller architecture
JP2011103025A (ja) データ入出力装置およびそれを用いたデータ処理装置
AU727990B2 (en) Graphics processing system
CN117785287A (zh) 多线程计算中的私有存储器模式顺序存储器访问
AU717336B2 (en) Graphics processor architecture
AU766467B2 (en) Graphics processing system
JPH05114022A (ja) 信号層処理プロセツサおよび層処理方法

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 7605/DELNP/2006

Country of ref document: IN

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 2007516362

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 2006746708

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 200680000526.3

Country of ref document: CN

Ref document number: 1020077001405

Country of ref document: KR

Ref document number: 11572331

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

NENP Non-entry into the national phase

Ref country code: RU

WWP Wipo information: published in national office

Ref document number: 2006746708

Country of ref document: EP