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

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

Info

Publication number
WO2007116560A1
WO2007116560A1 PCT/JP2006/324213 JP2006324213W WO2007116560A1 WO 2007116560 A1 WO2007116560 A1 WO 2007116560A1 JP 2006324213 W JP2006324213 W JP 2006324213W WO 2007116560 A1 WO2007116560 A1 WO 2007116560A1
Authority
WO
WIPO (PCT)
Prior art keywords
element processor
instruction
execution
pixels
register
Prior art date
Application number
PCT/JP2006/324213
Other languages
English (en)
French (fr)
Inventor
Takuya Koga
Original Assignee
Nec 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 Nec Corporation filed Critical Nec Corporation
Priority to EP06833968.8A priority Critical patent/EP2000973B1/en
Priority to CN2006800541190A priority patent/CN101416216B/zh
Priority to JP2008509691A priority patent/JP5077579B2/ja
Priority to US12/224,988 priority patent/US8106912B2/en
Publication of WO2007116560A1 publication Critical patent/WO2007116560A1/ja

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results

Definitions

  • the present invention relates to a parallel image processing system, and more particularly to a control method and apparatus for a parallel image processing system having a one-dimensional SIMD (Single Instruction Multiple Data) processor array structure.
  • SIMD Single Instruction Multiple Data
  • Patent Document 1 An example of a conventional parallel image processing system is described in Japanese Patent No. 2839026 (Patent Document 1) and Japanese Patent Application Laid-Open No. 2002-7359 (Patent Document 2).
  • This conventional parallel image processing system is composed of a PE array in which a large number of processor elements (hereinafter referred to as “PE”) are connected in parallel in one dimension and a controller for controlling them.
  • PE processor elements
  • Each PE is also configured with an arithmetic unit (ALU) that performs arithmetic processing, a local memory that stores local pixel values of the processing target image, and a register that holds temporary arithmetic results.
  • ALU arithmetic unit
  • JP 2004-362086 A discloses that the degree of parallelism of PEs is improved in order to improve program efficiency when the system does not have an optimal number of PEs for images to be processed.
  • a SIMD-type parallel processing system with a function that automatically executes PE instructions repeatedly is described.
  • the number of iterations is calculated from the degree of parallelism information instructed by the program and the degree of parallelism of the SIMD computing unit, and the PE instruction is automatically repeated as many times as required according to the number of PEs in the system. Realize execution is doing.
  • Patent Document 1 Japanese Patent No. 2839026 (FIG. 1, paragraph 0008, etc.)
  • Patent Document 2 Japanese Patent Laid-Open No. 2002-7359 (FIG. 1, paragraphs 0014 to 0016, etc.)
  • Patent Document 3 Japanese Patent Application Laid-Open No. 2004-362086 (paragraphs 0011 to 0021, FIG. 1, etc.) Disclosure of Invention
  • the pixels in the memory when processing is performed by assigning a plurality of pixels to each PE in which the number of PEs is smaller than the number of pixels in the width direction of the processing target image. No consideration is given to the deployment of data and the automation of data acquisition across PEs.
  • An object of the present invention is to provide a novel parallel image processing system and a control method thereof that enable automation of processing that requires neighboring pixel values.
  • Another object of the present invention is to achieve the same degree as that of a one-dimensional SIMD parallel image processing system having the same number of PEs as the number of pixels in the width direction of the processing target image even in processing that requires neighboring pixel values.
  • An object of the present invention is to provide an image processing system control method and apparatus capable of executing image processing on an entire image with a program code amount.
  • the present invention is a control method for a parallel image processing system that has a smaller number of element processors than the number of data to be processed, and each element processor processes a plurality of data to be processed. Instructions are automatically executed repeatedly according to the number of data to be processed, and when a given instruction is executed repeatedly, the operation code is replaced according to the data to be processed at each execution during the repetition, and the element processor is replaced by the replaced operation code. It is characterized by controlling.
  • a one-dimensional processor having a smaller number of element processors than the number of pixels in the width direction of the processing target image, and each element processor processing a plurality of pixels.
  • An image processing system control method that automatically repeats an instruction according to the number of pixels assigned to an element processor, and repeatedly executes a pixel value acquisition instruction for an adjacent pixel. Accordingly, the operation code is replaced with a combination of a pixel value transfer instruction from the adjacent element processor and a pixel value acquisition instruction on the own element processor, and the element processor is controlled by the replaced operation code.
  • the register group is divided and used in accordance with the number of pixels allocated to each element processor, the operand is rewritten so as to switch the register group used at the time of repeated execution, and the memory access instruction is repeatedly executed at the time of repeated execution.
  • An offset value corresponding to the number of pixels allocated to the element processor is added to the address.
  • a parallel image processing system automatically repeats an instruction at each address in a program according to the number of pixels assigned to each PE in a controller that controls the PE array according to the program.
  • a single instruction described in the program is automatically and repeatedly executed on a plurality of processing target pixels assigned to each PE, and an opcode is converted.
  • the required processing can be automated, and image processing can be performed on the entire image with the same amount of program code as a one-dimensional SIMD parallel image processing system that has the same number of PEs as the number of pixels in the width direction of the image to be processed.
  • an instruction is automatically and repeatedly executed according to the number of data to be processed assigned to an element processor, and when a predetermined instruction is repeatedly executed, each The opcode is replaced according to the data to be processed at runtime.
  • the element processor is controlled by the code.
  • the iterative execution means included in the controller, the means for converting the operand, and the means for converting the memory address It can be automatically and repeatedly executed only by the program description of the instruction for one pixel, and by converting the operation code, it is possible to automate the processing that requires neighboring pixel values without increasing the amount of program code. Image processing on the entire image can be executed.
  • FIG. 1 is a block diagram showing a functional configuration of a parallel image processing system according to an embodiment of the present invention.
  • the parallel image processing system according to this embodiment includes a PE array 1 that performs each instruction operation in image processing, a controller 2 that controls the operation of PE array 1 by a program, and a program that describes image processing to be executed. And program memory 3 for storing.
  • the PE array 1 has a configuration in which a large number of PEs 10 are arranged and connected in one dimension, and each PE is configured as a SIMD system that executes the same program. However, only three adjacent PEs are shown in Fig. 1 so as not to be complicated!
  • Each PE 10 includes a local memory 11, a calculation unit 12, and a register group 13. It is desirable that the number of PEs 10 included in PE array 1 is 1 / integer of the number of pixels in the width direction of the processing target image. This is because the same number of pixels can be assigned to each PE10. However, the present invention can be applied even when the condition of 1 / integer is not satisfied, and the same effect can be obtained.
  • the controller 2 is a unit that controls the operation sequence of the PE array 1 and includes an instruction fetch / decode unit 21 and an iterative execution unit 22. Iterative execution unit 22 is implemented by controller 2. This unit is used to execute repeatedly according to the number of target pixels assigned to each PE for the instruction to be executed. Operand converter 221, memory address converter 222, opcode converter 223, repeat execution counter 224, an iterative execution designation register 225, and a processing target image height register 226.
  • the repetitive execution counter 224 is a counter CR that is used when the repetitive execution unit 22 repeatedly executes instructions for the number of times designated by the value of the repetitive execution designation register 225.
  • the iterative execution specification register 225 is a register that designates and holds the number of iterations NR when executing the instruction repeatedly.The number of iterations required by the ratio of the number of PEs and the number of pixels in the width direction of the processing target image, i.e., each Specify the number of target pixels assigned to PE.
  • the processing target image height register 226 is a register that stores and holds the number of pixels NH in the height direction of the processing target image, and this value stores the processing target image when the memory access instruction is repeatedly executed. Used to calculate the address offset value.
  • the PE array 1 performs image processing operations by assigning the pixels of the image to be processed to each PE10 and operating the same instructions in parallel on each PE.
  • the PE 10 is an element processor that stores and calculates the assigned pixel values in the processing target image.
  • the PE 10 has a command execution function of a normal processor and performs a command operation according to a control signal from the controller 2.
  • Each PE10 is connected to an adjacent PE10 to exchange data.
  • the local memory 11 is a memory that each PE 10 has individually.
  • the local memory 11 is closely connected to the arithmetic unit 12 and stores the pixel values assigned to each PE in the processing target image. Stores calculation results and the like.
  • Each pixel value assigned to each PE of the processing target image is stored in an address having an offset corresponding to the number of pixels in the height direction of the processing target image.
  • the address offset value at this time that is, the number of pixels in the height direction of the processing target image is Om. For example, if the leftmost pixel value is stored at address A, the pixel values assigned to PE are stored at addresses A, A + Om, A + 2 X Om, and A + 3 X Om, respectively.
  • the arithmetic unit 12 is a unit that executes a read Z write instruction for the register group 13, a read Z write instruction for the local memory 11, an arithmetic operation instruction, a logical operation instruction, and the like. Yes, in the image processing, an operation is performed on the assigned pixel value.
  • the register group 13 is an arithmetic register that the arithmetic unit 12 in each PE 10 individually has, and stores a value that is input during an arithmetic operation and an arithmetic result that is output.
  • Each register is given a register number from R (O) force to R (number of registers-1).
  • R (O) force to R number of registers-1).
  • the number of included registers is divided by the assigned number of pixels. For example, when two pixels are assigned to each PE10, the number of registers in the register group 13 is divided into two parts, the first half and the second half, and four pixels are assigned to each PE10. In this case, the number of registers in register group 13 is divided into four.
  • the controller 2 advances image processing by sequentially reading and interpreting the program stored in the program memory 3 by the instruction fetch / decode unit 21 and controlling the PE array 1.
  • the instruction fetch / decode unit 21 is a core unit of the controller 2 that reads the program from the program memory 3, interprets the opcode and the operand, and controls the PE array 1.
  • the opcode and operand read from the program memory 3 are delivered to the iterative execution unit 22 to make a decision on repetitive execution. If the iterative execution unit 22 determines that iterative execution is to be performed, reading of the subsequent program is stopped until the specified number of iterations are completed.
  • the PE array 1 is controlled by using the opcode and the operand rewritten according to each step of the repeated execution by the repeated execution unit 22.
  • the iterative execution unit 22 determines whether the opcode input from the instruction fetch / decode unit 21 is an instruction to be repeatedly executed. If it is a target instruction, the iterative execution counter 224 is used. NR is repeatedly executed the number of times specified in the repeat execution specification register 225. Also, until the repeated execution is completed, the instruction fetch / decode unit 21 is instructed to stop reading the subsequent instruction from the program memory.
  • the number of times NR specified in the repetitive execution specification register 225 that is, the number of processing target pixels assigned to each PE, and the pixel position in the processing target pixel group that can be calculated by the value CR of the repetitive execution counter 224
  • the memory address conversion unit 222 converts operands, memory addresses, and opcodes.
  • the operand conversion unit 221 is a unit that converts the register number in order to switch the register use portion in the register group 13 according to the processing target pixel position during the repeated execution.
  • the number of registers in register group 13 in PE array 1 is divided by the number of repeated executions NR stored in iteration execution specification register 225, and the number of registers is divided into iteration execution counter 224.
  • the value obtained by multiplying the stored value from 0 to (NR – 1) is calculated as the offset value used for register position switching.
  • FIG. 2 is a block diagram functionally showing the configuration of the operand conversion unit in the parallel image processing system according to the present embodiment.
  • the operand conversion unit 221 determines an offset value to be used for register number conversion using an offset calculation table with the repeated execution designation register value NR and the repeated execution counter value CR as a key.
  • the offset calculation table 221.1 corresponding to the number of iterations specified by the value NR of the iteration execution specification register 225 from 1 (no iteration execution) to 4 times is prepared.
  • Offset calculation table 221.1 in FIG. 2 is described assuming that the number of registers is N. It is determined whether or not the opcode is an instruction subject to operand conversion (221.6), and based on the result, the power to output the input register number as it is and the offset value determined by the offset calculation table 221.1 are added. (221.5) Select whether to output ( 221.7). That is, if the instruction is an instruction subject to offset value operand conversion, the result of adding the input register number and the offset value determined by the offset calculation table 221.1 is output. If the instruction is not the target instruction, the input register number is output. Output as is.
  • the operand conversion unit 221 has a counter value adjustment unit that adjusts the iteration execution counter value CR when referring to the offset calculation table 221.1. This is a unit required when iteratively executing an acquisition command for adjacent pixel values.
  • the adjacent PE holds the required adjacent pixel value according to the value CR of the repeat execution counter 224, and transfers the pixel value from the adjacent PE to its own PE.
  • the register number specified for the input operand may be offset depending on whether the instruction refers to the pixel value on the left or right side, whether the transfer source is the adjacent PE, or the local PE. Necessary.
  • the repetitive execution counter value CR is replaced when referring to the offset calculation table 221.1.
  • it is determined whether or not the opcode force counter value CR needs to be adjusted (221.2). If necessary, the counter value CR is adjusted (221.3), and the adjusted result is selected (221.4). ) Refer to offset calculation table 221.1. If it is not necessary to adjust the counter value CR, select the input counter value CR (221.4) and refer to the offset calculation table 221.1.
  • the memory address conversion unit 222 is a unit for converting an address to be accessed when a memory access instruction is repeatedly executed.
  • the opcode conversion unit 223 executes the PE array 1 when executing the acquisition command of the left and right adjacent pixel values that need to perform different operations depending on the pixel position to be executed in the repeated execution. This is a unit that converts the opcodes executed in. Instruction fetch 'If the opcode input from the decode unit 21 is an acquisition command for the left and right adjacent pixel values, the pixel currently being executed by the values CR and NR in the repeated execution counter 224 and repeated execution designation register 225 The pixel position in the multiple pixels assigned to each PE is calculated, and it is determined whether the neighboring pixel value to be acquired is held in the own PE register and whether it is held in the neighboring PE register. The opecode converted to read the PE register power or transfer the register value from the adjacent PE on the right side is passed to the instruction fetch 'decode unit 21.
  • FIG. 3 is a flowchart showing the overall operation of the parallel image processing system according to this embodiment.
  • Instruction fetch 'The decode unit 21 reads the program code at the address to be executed from the program stored in the program memory 3, and supplies it to the repeated execution unit 22 (step A1).
  • the repetitive execution unit 22 determines whether or not the operation code of the supplied program code is a repetitive execution target instruction (step A2). If it is determined that the instruction is not an instruction subject to repeated execution (NO in step A2), the program code is directly passed to the instruction fetch'decode unit 21, and PE array 1 is controlled to perform instruction processing (step A3, A4).
  • step A2 If it is determined that the opcode is an instruction to be repeatedly executed (YES in step A2), the value CR of the repeat execution counter 224 is initialized to 0 (step A5), the operand conversion unit 221 and the memory address conversion unit Hand over the program code to 222 and opcode converter 223 (steps A6, A7, A8).
  • Instruction fetch 'The decoding unit 21 receives the program code converted by the operand conversion unit 221, the memory address conversion unit 222, and the operation code conversion unit 223 (step A9), and interprets this to control the PE array 1. Then, processing corresponding to each command is performed (step A10).
  • the value CR of the repeat execution counter 224 is incremented by 1 (step All), and compared with the value NR of the repeat execution designation register 225 (step A12). If the value of the repetitive execution counter 2 24 is CR ⁇ the value of the repetitive execution specification register 225 is NR (NO in step A12), the process returns to steps A6, A7, and A8 to perform repetitive execution.
  • Repeat execution counter 224 value CR is repeated When the value in the execution specification register 225 becomes equal to NR (YES in step Al 2), it is assumed that the necessary number of iterations have been completed for one step of the input program code, and the next program code is processed. move on.
  • steps A6, A7, and A8 executed by the operand conversion unit 221, the memory address conversion unit 222, and the operation code conversion unit 223 will be described in detail.
  • FIG. 4 is a flowchart showing the operand conversion operation of the parallel image processing system according to this embodiment.
  • the operand conversion unit 221 determines whether or not the operand that is the input source and output destination included in the program code input from the instruction fetch 'decode unit 21 should be converted according to the operation code and operand position. (Step Bl). If the operand is not subject to conversion (NO in step B1), the input register number is output without conversion.
  • step B2 it is further determined whether the opcode is an instruction to acquire an adjacent pixel value (step B2).
  • the adjacent pixel value acquisition command is repeatedly executed, the adjacent pixel value to be acquired is held by the adjacent PE according to the value CR of the repeat execution counter 224, and from the adjacent PE to the own PE.
  • the pixel value transfer is performed, and the case where the own PE holds the adjacent pixel value to be acquired and the register force is referenced with the register number being offset.
  • step B3 when the operation code is an instruction to acquire an adjacent pixel value (YES in step B2), it is further determined whether the operation code is an instruction to acquire an adjacent pixel value on the left or right side (step B3).
  • the offset calculation table 221.1 is referenced using the value NR of the repeat execution specification register 225 and the value CR of the repeat execution counter 224 adjusted as necessary to determine the operand offset value. (Step B6).
  • the result of adding the offset value to the input register number is output as the operand conversion result (step B7).
  • FIG. 5 is a flowchart showing the memory address conversion operation of the parallel image processing system according to this embodiment.
  • the memory address conversion unit 222 determines whether the input operation code force S memory address conversion target memory read instruction Z memory write instruction or the like (step Cl).
  • step C1 If the input opcode is a command to be converted (YES in step C1), the value of the processing target image height register 226, NH, and the value of the repeat execution counter 224, CR, the value of the memory address offset value (Step C2). Then, a value obtained by adding the calculated offset value to the input memory address is output as a converted memory address (step C3). If the input opcode is not a command to be converted (NO in step C1), the address is output without conversion.
  • FIG. 6 is a flowchart showing the operation code conversion operation of the parallel image processing system according to this embodiment.
  • the operation code conversion unit 223 determines whether or not the operation code input from the instruction fetch 'decoding unit 21 is an acquisition command for left and right adjacent pixel values to be converted (step Dl).
  • the input opcode is an acquisition command for left and right adjacent pixel values (YES in step D1)
  • the following operations are performed depending on whether the opcode is a right adjacent pixel value acquisition command or a left adjacent pixel acquisition command, respectively. Perform (Step D2).
  • the opcode is an instruction to obtain the right adjacent pixel value
  • the repeated execution counter value CR (repeated execution designation register value NR—1)
  • the register of the own PE is referred to.
  • the register-to-register move instruction is output as the converted opcode.
  • the repeated execution counter value CR (repetitive execution specification register value NR-1)
  • the register holding the leftmost pixel of the right adjacent PE is referenced, so the register value of the right adjacent PE that is the input opcode is used.
  • the instruction to be transferred is output as it is (step D3).
  • the opcode is an instruction to acquire the left adjacent pixel value
  • the register of the own PE is referred to, so the register-to-register move instruction within the same PE is used as the converted opcode.
  • the repeat execution counter value CR 0, the register of the left adjacent PE that is the input opcode is output as it is because the register of the left adjacent PE is referred to (step D4).
  • step D 1 If the input opcode is not an acquisition command for left and right adjacent pixel values (NO in step D 1), the operation code is not converted, and the operation code as it is is output to the instruction fetch / decode unit 21.
  • the operation code conversion unit 223 is provided in the iterative execution unit 22, it is necessary when multiple pixels are assigned to one PE in processing that requires the passing of adjacent left and right pixel values.
  • the operations that require different instructions such as the transfer operation between adjacent PEs and the operation using the pixel values held in the own PE, can be described in one batch.
  • the amount of program code can be further reduced, and SIMD with different PE numbers It is easy to realize image processing on a parallel image processing system without changing the program.
  • a parallel image system having a PE array 1 in which 128 PEs, which are half of the number of pixels in the width direction, are processed in a one-dimensional manner for an image to be processed that is 256 pixels wide by 256 pixels high. Shall be used.
  • FIG. 7 is a diagram showing an example of a program for operating the parallel image processing system according to the embodiment of the present invention.
  • a process for obtaining an absolute value of a difference from a pixel value adjacent to the right side for each pixel is shown.
  • the local memory 11 stores the processing target image from address MEM1.
  • the two pixels are stored in addresses having 256 offsets corresponding to the number of pixels in the height direction.
  • the pixel value on the left side is stored from address MEM1 to address (MEM1 + 255), and the pixel value on the right side is address from address (MEM1 + 256) with offset value 256 added.
  • the processing result image is stored after address MEM2.
  • the instruction fetch 'decode unit 21 executes the program code in the first line from the program memory 3
  • LD MEM1, R (O) is read out and delivered to the repetitive execution unit 22 (step Al in FIG. 3).
  • the operation content of the program code on the first line is to read the value stored in the address MEM 1 of the local memory 11 and store it in the register R (O).
  • Iterative execution unit 22 Is an operation code partial force S memory read instruction (LD) of the program code, and is therefore determined to be an instruction to be repeatedly executed, and the repeat execution counter 224 is set to 0 (step A5).
  • the operand conversion unit 221 refers to the values NR and CR of the repeated execution designation register 225 and the repeated execution counter 224, and the offset calculation table 221.1 force also obtains 0 as an offset value.
  • the result of adding this to the input register number 0 is passed to the instruction foot decode unit 21 as a converted register number (step A6).
  • the memory address conversion unit 222 refers to the value CR of the iterative execution counter 224, and does not perform conversion because it is 0, and passes the memory address MEM1 to the instruction fetch / decode unit 21 (step A7).
  • the opcode conversion unit 223 is a memory read command (LD) whose input opcode is a memory read command (LD) and is not a command to acquire the left and right neighboring pixel values that require opcode conversion. Fetch 'Hand over to decode unit 21 (step A8).
  • the instruction fetch / decode unit 21 operates the PE array 1 based on the opcode, memory address, and operand input from the iterative execution unit 22, and stores the contents of the address MEM1 of the oral memory 11 in the register R (O). (Steps A9 and A10).
  • the operand conversion unit 221 refers to the values NR and CR of the iterative execution designation register 225 and the iterative execution counter 224, and obtains 18 as an offset value for the offset calculation table 221.1.
  • the result obtained by adding this to the input register number 0 is passed to the instruction fetch / decode unit 21 as a converted register number (step A6). Since the value CR of the iterative execution counter 224 is 1, the memory address conversion unit 222 delivers the address (MEM1 + 256) obtained by adding the offset 256 to the memory address MEM1 to the instruction fetch 'decoding unit 21 (step A7 ).
  • the opcode converter 223 is used to read the input opcode Since this is a read instruction (LD) and not an instruction to acquire the left and right adjacent pixel values that require opcode conversion, the opcode conversion is not performed and the input opcode is directly passed to the instruction fetch / decode section 21 (step A8).
  • the instruction fetch / decode unit 21 operates the PE array 1 based on the opcode, memory address, and operand input from the iterative execution unit 22, and the contents of the address (MEM1 + 256) in the local memory 11 are stored in the register R ( 18) (Steps A9 and A10).
  • the repetitive execution unit 22 increases the value CR of the repetitive execution counter 224 by 1! And sets it to 2 (step All). After that, the value CR of the repeat execution counter 224 is compared with the value NR specified in the repeat execution specification register 225, and since this is the same value, it is determined that the necessary repeat execution has been completed and the program code in the first line is added. The corresponding process is terminated, and the next command process is started (step A12).
  • the instruction fetch 'decoding unit 21 executes the program code in the second line from the program memory 3.
  • step Al The operation content of the program code on the second line is that the value of register R (O) corresponding to the right pixel is stored in register R (l).
  • register R (O) the value stored in register R (O) of the right adjacent PE is transferred to its own PE and stored in register R (l).
  • two pixels are assigned to one PE. Therefore, the right pixel is not always held by the right adjacent PE.
  • the pixel value is stored in a separate register in the PE.
  • the right pixel value acquisition operation reads the register value in its own PE according to the processing target pixel, or transfers the register R (O) of the right adjacent PE to its own PE. Divided into actions.
  • the iterative execution unit 22 determines that the operation code is a right side adjacent pixel value transfer instruction, and therefore determines that the operation is an iterative execution target instruction and sets the value of the iterative execution counter 224 to 0, and then sets the operand conversion unit 221 and the opcode conversion unit 223 to Operate (Steps A2 and A5).
  • the operand conversion unit 221 performs operand conversion processing for each of the input source register and output destination register specified in the program code (step A6). Since the input opcode is the acquisition command (MVL) for the right adjacent pixel value, the input source register and output destination level Each operand performs a different operand operation. For the input source register, refer to the values NR and CR of the repeat execution specification register 225 and repeat execution counter 224, and obtain an offset value of 18 using the offset calculation table 221.1. 18 that is the result of adding this to the input register number 0 is transferred to the instruction fetch 'decoding unit 21 as the converted input source register number.
  • VML acquisition command
  • the offset execution counter value CR when referencing the offset calculation table is adjusted to 0 and the offset value obtained by performing offset calculation is added to the input register number 1.
  • the result “1” is transferred to the instruction fetch / decode unit 21 as the converted output destination register number.
  • the operation code conversion unit 223 determines that the right adjacent pixel value acquisition instruction (MVL) is an instruction that requires operation code conversion, and the value CR of the repeat execution counter 224 is set to (the value NR of the repeat execution designation register 225). Since it is not equal to —1), it is converted to a register-to-register move instruction within the same PE and delivered to the instruction foot decode unit 21 (step A8). Instruction fetch 'Decode unit 21 operates PE array 1, and the contents of register R (18) are stored in register R (l) (steps A9 and A10).
  • Operand conversion unit 221 has a right-hand side pixel value transfer instruction (MVL) whose opcode is equal to the value CR of repetitive execution counter 224 (value NR—1 of repetitive execution designation register 225). Conversion is performed so that the content of PE register R (O) is transferred. For this reason, the input source register is set to 0, which is an offset value obtained by performing offset calculation by adjusting the iteration execution counter value CR when referring to the offset calculation table 221.1 to 0. The result of addition to the original register number 0 is transferred to the instruction fetch / decode unit 21 as the converted input source register number.
  • VL right-hand side pixel value transfer instruction
  • the same conversion as in the case of the first line is performed, and the value is obtained using the offset calculation table 221.1 by the values NR and CR of the repeated execution specification register 225 and the repeated execution counter 224.
  • "19" which is the result of adding the offset value "18" to the input output destination register number 1, is delivered to the instruction fetch / decode unit 21 as a converted output destination register (step A6).
  • the opcode conversion unit 223 converts the input opcode because the value CR of the repetitive execution counter 224, which is the instruction subject to the opcode conversion, is equal to (the value NR-1 of the repetitive execution specification register 225). Then, it is delivered to the instruction foot / decode unit 21 (step A8).
  • the instruction fetch / decode unit 21 operates the PE array 1, and the contents of the register R (O) of the right PE are stored in the register R (19) (steps A9 and A10).
  • the iterative execution unit 22 increases the value CR of the iterative execution counter 224 by 1! And sets it to 2 (step Al 1). Since this value is the same as the value NR specified in the repeat execution specification register 225, it is determined that the necessary repeat execution has ended, the processing corresponding to the program code on the second line is ended, and the next instruction processing (Step A12)
  • the instruction fetch 'decoding unit 21 reads the program code (ABS R (O), R (l), R (2)) on the third line from the program memory 3 and delivers it to the iterative execution unit 22.
  • the operation content of the program code on the third line is to calculate the absolute value of the difference between register R (O) and register R (l) and store the operation result in register R (2).
  • the iterative execution unit 22 performs the same conversion as in the case of the first row for each of the input source designation and output destination designation operands, and executes the instruction fetch.
  • Decode unit 21 operates PE array 1 as a result of register operation.
  • the absolute value of the difference between R (O) and register R (l) is stored in register R (2), and the absolute value of the difference between register R (18) and register R (19) is stored in register R (20). Move on to instruction processing.
  • the instruction fetch / decode unit 21 reads the program code (ST MEM2, R (2)) on the fourth line and passes it to the iterative execution unit 22.
  • the operation content of the program code on the 4th line is to read the value stored in the register R (2) and write it to the address MEM2 of the local memory 11.
  • the same memory address and operand conversion is performed in the iterative execution unit 22 as in the first row, the instruction fetch 'decode unit 21 operates the PE array 1, and the value of the register R (2) is set to the local memory 11
  • the value of register R (20) is stored at address (MEM2 + 256) in local memory 11 at address MEM2.
  • 1 of the program code read from the program memory 3 Since the PE array control equivalent to two instructions is performed by the iterative execution unit 22 for the instructions, the amount of program code can be reduced.
  • another instruction can be executed by the opcode conversion unit 223 in a partial cycle at the time of execution of the iteration, it is not possible to cope with repeated execution of the same instruction, and even if it is in the process of passing between adjacent pixels automatically It is possible to perform operations by repeated execution and further reduce the amount of program code.
  • the ratio between the number of pixels in the width direction of the processing target image and the number of PEs is 2: 1.
  • the ratio is not limited to 3: 1, 4: 1. Applicable when N: l and the number of pixels in the width direction of the processing target image is larger than the number of PEs in the system.
  • the present invention can be applied to applications such as an image processing device, an image detection device, and an image recognition device that receive video images, sensor images, and the like.
  • FIG. 1 is a block diagram showing a functional configuration of a parallel image processing system according to an embodiment of the present invention.
  • FIG. 2 is a block diagram functionally showing the configuration of an operand converter in the parallel image processing system according to the present embodiment.
  • FIG. 3 is a flowchart showing an overall operation of the parallel image processing system according to the present embodiment.
  • FIG. 4 is a flowchart showing the operand conversion operation of the parallel image processing system according to the present embodiment.
  • FIG. 5 is a flowchart showing a memory address conversion operation of the parallel image processing system according to the present embodiment.
  • FIG. 6 is a flowchart showing an operation code conversion operation of the parallel image processing system according to the present embodiment.
  • FIG. 7 is a diagram showing an example of a program for operating a parallel image processing system according to an embodiment of the present invention.

Landscapes

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

Abstract

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

Description

明 細 書
並列画像処理システムの制御方法および装置
技術分野
[0001] 本発明は並列画像処理システムに係り、特に 1次元 SIMD (Single Instruction Multiple Data)プロセッサアレイ構造からなる並列画像処理システムの制御方法 および装置に関する。
背景技術
[0002] 従来の並列画像処理システムの一例が特許 2839026号公報(特許文献 1)および 特開 2002— 7359号公報 (特許文献 2)に記載されている。この従来の並列画像処 理システムは、多数の演算要素プロセッサ(Processor Element,以下「PE」という 。;)が 1次元並列接続された PEアレイと、それらを制御するコントローラとから構成され てる。各 PEは演算処理を行う演算部 (ALU)、処理対象画像の局所的な画素値を格 納するローカルメモリおよび一時的な演算結果を保持するレジスタ力も構成されてい る。
[0003] このような構成を有する従来の並列画像処理システムは、ローカルメモリに格納され た処理対象画像の特定行に対して何らかの演算を行う場合、ローカルメモリの特定 行に対応するアドレス力 画素値を読み出し、レジスタに格納する。レジスタに格納し た画素値を読み出し、 ALUで演算を行い、演算結果をレジスタに格納する。レジスタ に格納した演算結果をローカルメモリの特定行に格納する。演算において、処理対 象とする画素の周辺に位置する画素値が必要な場合は、 PE間のデータ転送部を用 V、て必要な画素値を収集して演算を行う。
[0004] また、特開 2004— 362086号公報 (特許文献 3)には、システムが処理対象となる 画像に最適な PE数を持たな 、場合のプログラム効率を向上させるため、 PEの並列 度に応じて自動的に PE命令を繰り返し実行する機能を備えた SIMD型並列処理シ ステムが記載されている。この並列処理システムにおいては、プログラムによって指示 される並列度情報と SIMD演算器の並列度情報とから繰り返し実行回数を算出し、 システムの持つ PE数に応じて必要となる回数の PE命令の自動繰り返し実行を実現 している。
[0005] 特許文献 1 :特許 2839026号公報(図 1、段落 0008など)
特許文献 2 :特開 2002— 7359号公報(図 1、段落 0014〜0016など)
特許文献 3 :特開 2004— 362086号公報(段落 0011〜0021、図 1など) 発明の開示
発明が解決しょうとする課題
[0006] し力しながら、上記従来の並列画像処理システムでは、 PE数が処理対象画像の幅 方向画素数より少なぐ各 PEに複数画素を割り当てて処理を行う場合のメモリ上にお ける画素の配置、 PE間にまたがったデータ取得の自動化について何ら考慮されて いない。
[0007] 上記特許文献 3に記載されたシステムでは、同一命令あるいは同一サブルーチン の繰り返し実行を行っている力 このような単純な繰り返し実行では隣接 PEとの通信 を含む処理を自動化することはできな 、。近隣画素値を必要とするような処理を実現 するためには、必要な近隣画素値が同一 PE内あるいは隣接 PE内のいずれに割り当 てられているかに応じた特別な処理の追加が必要となり、プログラムコード量が増大 してしまう。
[0008] 本発明の目的は、近隣画素値を必要とする処理の自動化を可能にする新規な並 列画像処理システムおよびその制御方法を提供することにある。
[0009] 本発明の他の目的は、近隣画素値を必要とするような処理においても、処理対象 画像の幅方向画素数と同一 PE数を持つ 1次元 SIMD並列画像処理システムと同程 度のプログラムコード量で画像全体に対する画像処理を実行できる画像処理システ ムの制御方法および装置を提供することにある。
課題を解決するための手段
[0010] 本発明は、処理対象データ数より少ない個数の要素プロセッサを有し、各要素プロ セッサが複数個の処理対象データを処理する並列画像処理システムの制御方法で あり、要素プロセッサに割り当てた処理対象データ数に応じて命令を自動的に反復 実行し、所定命令を反復実行する際、反復中のそれぞれの実行時に処理するデー タに応じてオペコードを置き換え、置き換えられたオペコードによって要素プロセッサ を制御することを特徴とする。
[0011] 本発明の一実施形態よれば、処理対象画像の幅方向画素数より少ない個数の要 素プロセッサを有し、各要素プロセッサが複数個の画素を処理する 1次元プロセッサ アレイ構造力 なる並列画像処理システムの制御方法であって、要素プロセッサに割 り当てた画素数に応じて命令を自動的に反復実行し、隣接画素の画素値取得命令 を反復実行する際、処理する画素の位置に応じてオペコードを隣接要素プロセッサ からの画素値転送命令と自要素プロセッサ上の画素値取得命令の組み合わせに置 き換え、置き換えられたオペコードによって前記要素プロセッサを制御することを特徴 とする。
[0012] さらに、各要素プロセッサに割り当てた画素数に合わせてレジスタ群を分割して利 用し、反復実行時に利用するレジスタ群を切り替えるようにオペランドを書き換え、メ モリアクセス命令の反復実行時に前記要素プロセッサに割り当てた画素数に合わせ たオフセット値をアドレスに加算する、ことを特徴とする。
[0013] 本発明の一実施例による並列画像処理システムは、プログラムに従って PEアレイを 制御するコントローラ内に、プログラム中の各アドレスの命令を各 PEに割り当てられ た画素数に応じて自動的に反復実行するための手段を有し、さらに、反復実行する 命令中のオペランドを変換する手段と、反復実行する命令中のメモリアクセス時のァ ドレスを変換する手段と、反復実行時に各 PEに割り当てられた複数の画素中の画素 位置に応じてオペコードを変換する手段とを有する。
[0014] このような構成を採用し、プログラムに記述された 1つの命令を各 PEに割り当てられ た複数の処理対象画素に対して自動的に反復実行、オペコード変換することにより、 近隣画素値を必要とする処理の自動化が可能となり、処理対象画像の幅方向画素 数と同一 PE数を持つ 1次元 SIMD並列画像処理システムと同程度のプログラムコー ド量で画像全体に対する画像処理を実行できる。
発明の効果
[0015] 上述したように、本発明によれば、要素プロセッサに割り当てた処理対象データ数 に応じて命令を自動的に反復実行し、所定命令を反復実行する際、反復中のそれ ぞれの実行時に処理するデータに応じてオペコードを置き換え、置き換えられたォ ぺコードによって要素プロセッサを制御する。これによつて、実行対象の画素位置に 応じて異なる動作を行う必要がある周辺画素値の取得命令等において画素位置を 考慮した命令変換を行うことができ、近隣画素値を必要とする処理の自動化を少な V、プログラムコード量で実現することができる。
[0016] また、処理対象画像の幅方向画素数より少ない PE数を持つ 1次元 SIMD画像処 理システムにおいて、コントローラ内に有する反復実行手段、オペランドを変換する 手段およびメモリアドレスを変換する手段により、 1画素に対する命令のプログラム記 述のみで自動的に反復実行することができ、また、オペコードを変換することにより、 近隣画素値を必要とする処理の自動化が可能となりプログラムコード量を増大せせる ことなく画像全体に対する画像処理を実行できる。
発明を実施するための最良の形態
[0017] 以下、本発明の実施形態を図に基づいて詳細に説明する。
[0018] 1.システム構成
図 1は本発明の一実施形態による並列画像処理システムの機能的構成を示すプロ ック図である。本実施形態による並列画像処理システムは、画像処理におけるそれぞ れの命令動作を行う PEアレイ 1と、プログラムにより PEアレイ 1の動作を制御するコン トローラ 2と、実行すべき画像処理を記述したプログラムを格納するプログラムメモリ 3 とを含む。
[0019] PEアレイ 1は多数の PE10が 1次元に配列され接続された構成を有し、各 PEが同 一プログラムを実行する SIMD方式として構成されている。ただし、図 1では煩雑にな らな 、ように隣接する 3つの PEだけが図示されて!、る。
[0020] 各 PE10は、ローカルメモリ 11、演算部 12およびレジスタ群 13を含む。 PEアレイ 1 に含まれる PE10の個数は処理対象画像の幅方向画素数の整数分の 1であることが 望ましい。各 PE10に同一数の画素を割り当てることができるためである。ただし、こ の整数分の 1という条件を満たさない場合でも本発明は適用可能であり、同様の効果 を得ることができる。
[0021] コントローラ 2は PEアレイ 1の動作シーケンスを制御するユニットであり、命令フェツ チ.デコード部 21および反復実行部 22を含む。反復実行部 22はコントローラ 2が実 行する命令に対して各 PEに割り当てられた処理対象画素数に応じて反復実行を行 うためのユニットであり、オペランド変換部 221、メモリアドレス変換部 222、ォペコー ド変換部 223、反復実行カウンタ 224、反復実行指定レジスタ 225、および、処理対 象画像高さレジスタ 226を含む。
[0022] 反復実行カウンタ 224は、反復実行部 22において反復実行指定レジスタ 225の値 で指定された回数の命令反復実行の際に用いるカウンタ CRである。反復実行指定 レジスタ 225は、命令の反復実行を行う際の反復回数 NRを指定し保持するレジスタ であり、 PE数と処理対象画像の幅方向画素数との比によって必要となる反復回数、 すなわち各 PEに割り当てられた処理対象画素数を指定する。処理対象画像高さレ ジスタ 226は、処理対象とする画像の高さ方向の画素数 NHを格納し保持するレジス タであり、この値はメモリアクセス命令の反復実行時に処理対象画像が格納されたァ ドレスのオフセット値算出に用いる。
[0023] 1. 1) PEアレイ
PEアレイ 1は、各 PE10に処理対象画像の画素を割り当て、各 PEで同一の命令を 並列に動作させることにより画像処理動作を行う。 PE10は、処理対象画像中の割り 当てられた画素値を格納、演算する要素プロセッサであり、通常のプロセッサの持つ 命令実行機能を備え、コントローラ 2からの制御信号により命令動作を行う。各 PE10 はデータの受け渡しを行うために隣接する PE10と接続されて 、る。
[0024] ローカルメモリ 11は、各 PE10が個別に持つメモリであり、演算部 12と密接に接続さ れ、処理対象画像中の各 PEに割り当てられた画素値を格納する他、処理途中の演 算結果等を格納する。処理対象画像の各 PEに割り当てられたそれぞれの画素値を 、処理対象画像の高さ方向画素数分のオフセットを持つアドレスにそれぞれ格納す る。この時のアドレスオフセット値、すなわち処理対象画像の高さ方向画素数を Omと する。例えば、 PEに割り当てられた画素値は、左端の画素値をアドレス Aに格納する とした場合、 A、 A+Om、 A+ 2 X Om、 A+ 3 X Omのアドレスにそれぞれ格納され る。
[0025] 演算部 12は、レジスタ群 13の読み出し Z書き込み命令、ローカルメモリ 11に対す る読み出し Z書き込み命令、算術演算命令、論理演算命令等を実行するユニットで あり、画像処理において、割り当てられた画素値に対する演算等を行う。
[0026] レジスタ群 13は、各 PE10中の演算部 12が個別に持つ演算用レジスタであり、演 算動作時に入力となる値、出力される演算結果を格納する。各レジスタには R(O)力 ら R (レジスタ本数— 1)までのレジスタ番号を与える。各 PE10に対して割り当てられ た複数画素を自動的に処理するため、含まれるレジスタ本数を割り当てた画素数で 分割して利用する。例えば、各 PE10に対して 2個の画素を割り当てた場合、レジスタ 群 13の持つレジスタ本数を前半と後半の 2つに分割して利用し、各 PE 10に対して 4 個の画素を割り当てた場合にはレジスタ群 13の持つレジスタ本数を 4分割して利用 する。
[0027] 1. 2)コントローラ
コントローラ 2は、命令フェッチ 'デコード部 21によってプログラムメモリ 3に格納され たプログラムを逐次読み出し、解釈して PEアレイ 1を制御することにより、画像処理を 進める。
[0028] 命令フェッチ ·デコード部 21は、プログラムメモリ 3からプログラムを読み出し、ォペコ ード、オペランドを解釈して PEアレイ 1の制御を行う、コントローラ 2の中核をなすュ- ットである。プログラムメモリ 3から読み出したオペコード、オペランドを反復実行部 22 に引き渡して反復実行の判断を行う。反復実行部 22が反復実行を行うと判断した場 合には、指定回数の反復が完了するまで後続するプログラムの読み出しは停止され る。反復実行部 22によって反復実行の各ステップに応じて書き換えられたオペコード 、オペランドを用いて PEアレイ 1を制御する。
[0029] 反復実行部 22は、命令フェッチ ·デコード部 21より入力されたオペコードが反復実 行対象となる命令であるかを判断し、対象命令であった場合には、反復実行カウンタ 224を用いて反復実行指定レジスタ 225に指定された回数 NRの反復実行を行う。ま た、反復実行が終了するまでの間、命令フェッチ ·デコード部 21に対して後続する命 令のプログラムメモリからの読み出しを停止するよう指示する。反復実行を行う際は、 反復実行指定レジスタ 225に指定された回数 NR、すなわち各 PEに割り当てられた 処理対象画素数と、反復実行カウンタ 224の値 CRによって算出できる処理対象画素 群中の画素位置に応じて、オペランド変換部 221、メモリアドレス変換部 222、ォペコ ード変換部 223によってオペランド、メモリアドレス、オペコードの変換を行う。
[0030] 1. 3)オペランド変換部
オペランド変換部 221は、反復実行時にレジスタ群 13中のレジスタ利用部分を処 理対象画素位置に応じて切り替えるため、レジスタ番号の変換を行うユニットである。 命令フェッチ 'デコード部 21から入力されたオペコードによってオペランドの変換が 必要な命令であるかを判断する。オペランド変換が必要な場合は、 PEアレイ 1中のレ ジスタ群 13の持つレジスタ本数を反復実行指定レジスタ 225に格納された反復実行 回数 NRによって分割し、分割した各レジスタ本数に反復実行カウンタ 224に格納さ れる 0から (NR— 1)までの値を乗算した値をレジスタ位置切り替えに用いるオフセット 値として算出する。
[0031] レジスタ本数が反復実行回数 NRで分割しきれな 、場合には小数点以下を切り捨 てた整数値を用い、これに反復実行カウンタ 224の値 CRを乗算してオフセット値を 算出する。算出したオフセット値を命令フェッチ 'デコード部 21から入力されたオペラ ンド (レジスタ番号)に加算することによりオペランド変換を行い、変換結果のオペラン ドを命令フェッチ ·デコード部へ引き渡す。
[0032] オフセット値を算出する手段としては除算器や乗算器を用いた構成、テーブルを用 V、た構成が考えられる力 ここではテーブルを用いてオフセット値を算出するように構 成したオペランド変換部 221を次に説明する。
[0033] 図 2は本実施形態による並列画像処理システムにおけるオペランド変換部の構成 を機能的に示したブロック図である。オペランド変換部 221は、レジスタ番号の変換 に用いるオフセット値を、反復実行指定レジスタ値 NRと反復実行カウンタ値 CRをキ 一としてオフセット算出テーブルを用いて決定する。ここでは、反復実行指定レジスタ 225の値 NRによって指定される反復実行回数について、 1回 (反復実行を行わない )から 4回までに対応するオフセット算出テーブル 221. 1を用意した。
[0034] 図 2におけるオフセット算出テーブル 221. 1はレジスタ本数が N本であるものとして 記載している。オペコードがオペランド変換対象命令である力否かを判断し(221. 6 )、その結果により、入力レジスタ番号をそのまま出力する力、オフセット算出テープ ル 221. 1により決定されたオフセット値を加算して(221. 5)出力するかを選択する( 221. 7)。すなわち、オフセット値オペランド変換対象命令である場合には、入カレ ジスタ番号とオフセット算出テーブル 221. 1により決定されたオフセット値とを加算し た結果を出力し、対象命令でない場合は入力レジスタ番号をそのまま出力する。
[0035] また、オペランド変換部 221は、オフセット算出テーブル 221. 1を参照する際の反 復実行カウンタ値 CRを調整するカウンタ値調整部を有する。これは、隣接画素値の 取得命令を反復実行する際に必要となるユニットである。隣接画素値の取得命令を 反復実行する際には、反復実行カウンタ 224の値 CRに応じて、必要とする隣接画素 値を隣接 PEが保持して、隣接 PEから自 PEへの画素値転送を行う場合と、必要とす る隣接画素値を自 PEが保持して、レジスタ番号をオフセットしたレジスタからの参照 を行う場合との 2通りの場合が存在する。この時、命令が左右どちら側の画素値を参 照する命令であるか、転送元が隣接 PEである力、自 PEであるかによって、入力オペ ランドに指定されたレジスタ番号をオフセットしてやることが必要となる。
[0036] そこで、図 2に示すように、オフセット算出テーブル 221. 1を参照する際に反復実 行カウンタ値 CRを差し替える。まずオペコード力 カウンタ値 CRの調整が必要力否 かを判断し(221. 2)、必要であればカウンタ値 CRを調整し(221. 3)、調整された 結果を選択して(221. 4)オフセット算出テーブル 221. 1を参照する。カウンタ値 CR の調整が不要であれば、入力したカウンタ値 CRを選択して(221. 4)、オフセット算 出テーブル 221. 1を参照する。
[00371 1. 4)メモリアドレス変換部
メモリアドレス変換部 222は、メモリアクセス命令を反復実行する際にアクセスするァ ドレスを変換するためのユニットである。命令フェッチ 'デコード部 21から入力された オペコードがローカルメモリ 11の読み出し Z書き込み命令であった場合、処理対象 画像高さレジスタ 226の値 NHと反復実行カウンタ 224の値 CRとを乗算して得られる 値を入力アドレスに加算するアドレス変換を行い、命令フェッチ ·デコード部 21へ変 換済みアドレスを引き渡す。
[00381 1. 5)オペコード変換部
オペコード変換部 223は、反復実行に際して実行対象とする画素位置に応じて異 なる動作を行う必要のある左右隣接画素値の取得命令を実行する際に、 PEアレイ 1 で実行するオペコードの変換を行うユニットである。命令フェッチ 'デコード部 21から 入力されたオペコードが左右隣接画素値の取得命令であった場合、反復実行カウン タ 224および反復実行指定レジスタ 225の値 CRおよび NRによって現在実行対象と して 、る画素の各 PEに割り当てられた複数画素中における画素位置を算出し、取得 すべき隣接画素値が自 PEのレジスタに保持されている力、隣接 PEのレジスタに保 持されているかを判断し、自 PEレジスタ力 の読み出し、あるいは右側隣接 PEから のレジスタ値転送となるよう変換したォペコ一ドを命令フェッチ 'デコード部 21へ引き 渡す。
[0039] 2.動作
図 3は本実施形態による並列画像処理システムの全体的動作を示すフローチヤ一 トである。命令フェッチ 'デコード部 21がプログラムメモリ 3に格納されたプログラムか ら実行すべきアドレスのプログラムコードを読み出し、反復実行部 22に供給する (ス テツプ A1)。反復実行部 22は供給されたプログラムコードのオペコードが反復実行 対象命令であるか否かを判断する (ステップ A2)。反復実行対象命令ではな ヽと判 断した場合には(ステップ A2の NO)、プログラムコードをそのまま命令フェッチ'デコ ード部 21に引き渡し、 PEアレイ 1を制御し命令処理を行う(ステップ A3、 A4)。
[0040] オペコードが反復実行対象命令であると判断した場合には (ステップ A2の YES)、 反復実行カウンタ 224の値 CRを 0に初期化し (ステップ A5)、オペランド変換部 221 、メモリアドレス変換部 222およびオペコード変換部 223にプログラムコードを引き渡 す (ステップ A6、 A7、 A8)。
[0041] 命令フェッチ 'デコード部 21は、オペランド変換部 221、メモリアドレス変換部 222 およびオペコード変換部 223によって変換されたプログラムコードを受け取り(ステツ プ A9)、これを解釈して PEアレイ 1を制御し、各命令に応じた処理を行う(ステップ A 10)。
[0042] その後、反復実行カウンタ 224の値 CRを 1だけインクリメントさせ (ステップ Al l)、 反復実行指定レジスタ 225の値 NRと比較を行う(ステップ A12)。反復実行カウンタ 2 24の値 CR<反復実行指定レジスタ 225の値 NRであれば (ステップ A12の NO)、ス テツプ A6、 A7、 A8へ戻って反復実行を行う。反復実行カウンタ 224の値 CRが反復 実行指定レジスタ 225の値 NRと等しくなつた時点で (ステップ Al 2の YES)、入力プ ログラムコードの 1ステップに対して必要な回数の反復実行が終了したものとして、次 のプログラムコードの処理へ進む。
[0043] 以下、オペランド変換部 221、メモリアドレス変換部 222およびオペコード変換部 22 3がそれぞれ実行するステップ A6、 A7および A8につ 、て詳細に説明する。
[0044] 2. 1)オペランド変換
図 4は本実施形態による並列画像処理システムのオペランド変換動作を示すフロ 一チャートである。オペランド変換部 221は、命令フェッチ 'デコード部 21から入力さ れたプログラムコード中に含まれる入力元、出力先となる各オペランドについて、オペ コードとオペランド位置によって変換対象とすべきである力否かを判断する (ステップ Bl)。オペランドが変換対象でない場合には (ステップ B1の NO)、変換を行わず入 力されたレジスタ番号をそのまま出力する。
[0045] オペランドが変換対象である場合には (ステップ B1の YES)、さらにオペコードが隣 接画素値の取得命令であるかを判断する (ステップ B2)。上述したように、隣接画素 値の取得命令を反復実行する際には、反復実行カウンタ 224の値 CRに応じて、取 得するべき隣接画素値を隣接 PEが保持しており隣接 PEから自 PEへの画素値転送 を行う場合と、取得するべき隣接画素値を自 PEが保持しておりレジスタ番号をオフセ ットしたレジスタ力ゝらの参照を行う場合と、の 2通りの場合が存在する。この時、命令が 左右どちら側の画素値を参照する命令である力、転送元が隣接 PEである力 自 PE であるかによって、入力オペランドに指定されたレジスタ番号をオフセットしてやること が必要となるため、オフセット算出テーブルを参照する際に反復実行カウンタ値 CRを 差し替える処理を行う必要がある。そこで、オペコードが隣接画素値の取得命令であ る場合には (ステップ B2の YES)、さらに、オペコードが左右どちら側の隣接画素値 を取得する命令であるかを判断する (ステップ B3)。
[0046] オペコードが右側隣接画素値を取得する命令の場合、(反復実行カウンタ値 CR) < (反復実行指定レジスタ値 NR— 1)であれば自 PEの持つレジスタを参照することと なり、カウンタ値調整は行わない。(反復実行カウンタ値 CR) = (反復実行指定レジス タ値 NR— 1)であれば、右側隣接 PEの持つ左端の画素を保持して 、るレジスタを参 照することとなり、この場合は入力された反復実行カウンタ値 CRを 0に調整 (変換)す る(ステップ B4)。
[0047] オペコードが左側隣接画素値を取得する命令の場合、(反復実行カウンタ値 CR)
>0であれば自 PEの持つレジスタを参照することとなるためカウンタ値調整は行わな い。(反復実行カウンタ値 CR) =0である場合には、左側隣接 PEの持つレジスタを参 照することとなるが、左側隣接 PEが保持している画素のうち右端となるレジスタ値を 参照することとなるため、入力された反復実行カウンタ値 CRを (反復実行指定レジス タ値 NR— 1)に調整 (変換)する (ステップ B5)。
[0048] その後、反復実行指定レジスタ 225の値 NRと、必要に応じて調整された反復実行 カウンタ 224の値 CRとをキーとしてオフセット算出テーブル 221. 1を参照し、オペラ ンドのオフセット値を決定する(ステップ B6)。入力されたレジスタ番号にオフセット値 を加算した結果をオペランド変換結果として出力する (ステップ B7)。
[0049] 2. 2)メモリアドレス変換
図 5は本実施形態による並列画像処理システムのメモリアドレス変換動作を示すフ ローチャートである。メモリアドレス変換部 222は、入力されたオペコード力 Sメモリアド レス変換の対象となるメモリ読み出し命令 Zメモリ書き込み命令等であるかを判断す る(ステップ Cl)。
[0050] 入力オペコードが変換対象命令である場合は (ステップ C1の YES)、処理対象画 像高さレジスタ 226の値 NHに反復実行カウンタ 224の値 CRを乗じた値をメモリアドレ スのオフセット値として算出する (ステップ C2)。そして、入力メモリアドレスに算出した オフセット値を加えた値を変換済みメモリアドレスとして出力する (ステップ C3)。入力 オペコードが変換対象命令でない場合には (ステップ C1の NO)、変換を行わずその ままのアドレスを出力する。
[0051] 2. 3)オペコード変換
図 6は本実施形態による並列画像処理システムのオペコード変換動作を示すフロ 一チャートである。オペコード変換部 223は、命令フェッチ 'デコード部 21から入力さ れたオペコードが変換対象となる左右隣接画素値の取得命令であるかを判断する( ステップ Dl)。 [0052] 入力オペコードが左右隣接画素値の取得命令である場合は (ステップ D1の YES) 、オペコードが右側隣接画素値取得命令である力、左側隣接画素取得命令であるか によってそれぞれ以下の動作を行う(ステップ D2)。
[0053] オペコードが右側隣接画素値を取得する命令の場合、反復実行カウンタ値 CR< ( 反復実行指定レジスタ値 NR— 1)であれば、自 PEの持つレジスタを参照するため、 同一 PE内でのレジスタ間移動命令を変換済みオペコードとして出力する。反復実行 カウンタ値 CR= (反復実行指定レジスタ値 NR— 1)であれば右側隣接 PEの持つ左 端の画素を保持しているレジスタを参照するため、入力オペコードである右側隣接 P Eのレジスタ値を転送する命令をそのまま出力する (ステップ D3)。
[0054] オペコードが左側隣接画素値を取得する命令の場合、反復実行カウンタ値 CR>0 であれば自 PEの持つレジスタを参照するため、同一 PE内でのレジスタ間移動命令 を変換済みオペコードとして出力する。反復実行カウンタ値 CR=0である場合には、 左側隣接 PEの持つレジスタを参照するため、入力オペコードである左側隣接 PEの レジスタ値を転送する命令をそのまま出力する (ステップ D4)。
[0055] 入力オペコードが左右隣接画素値の取得命令でない場合には (ステップ D1の NO )、オペコード変換は行わず、そのままのオペコードを命令フェッチ ·デコード部 21へ 出力する。
[0056] 3.効果
上述したように、本実施形態によれば、プログラムメモリ 3から読み出されたプロダラ ムコードの 1命令に対して命令フェッチ.デコード部 21が解釈'実行を行う際、反復実 行部 22によって複数命令に相当する PEアレイ制御を行う。したがって、各 PEに割り 当てられた複数の画素に対する処理を 1命令で記述でき、プログラムコード量が削減 できる。
[0057] また、反復実行部 22内にオペコード変換部 223を備えることにより、隣接する左右 画素値の受け渡しを必要とするような処理において、 1つの PEに複数画素を割り当 てた際に必要となる、隣接 PE間での転送動作と、自 PE内に保持している画素値を 用いた動作という異なる命令が必要となる動作を 1命令で一括して記述することがで きる。これによつて、さらにプログラムコード量を削減でき、また、 PE数の異なる SIMD 並列画像処理システム上での画像処理をプログラムの変更を行わずに実現すること が容易となる。
実施例
[0058] 次に、本発明の一実施例による並列画像処理システムの動作について説明する。
ここでは、一例として、幅 256画素 X高さ 256画素の処理対象画像に対して、その幅 方向画素数の半分にあたる 128個の PEが 1次元配列された PEアレイ 1を有する並 列画像システムを用いるものとする。
[0059] 図 7は本発明の一実施例による並列画像処理システムを動作させるプログラムの一 例を示す図である。この例では、各画素について右側に隣接する画素値との差の絶 対値を求める処理を示している。本実施例では、各 PEは 36本のレジスタを持つもの とする。 PE数が処理対象画像の幅方向画素数の半数であるので、各 PEには 2画素 ずつの処理を割り当てることとなる。このため、反復実行指定レジスタ 225には、プロ グラムの実行に先立って、 NR= 2を格納し、レジスタ群13を1^(0)〜1^(17)と、 R(18 )〜R (35)との 2群に分割して利用する。
[0060] ローカルメモリ 11には MEM1番地から処理対象画像が格納されている。本実施例 においては各 PEに 2画素ずつを割り当てて処理を行うため、それら 2画素を高さ方向 画素数にあたる 256のオフセットを持つアドレスにそれぞれ格納する。 PEに割り当て られた画像のうち、左側の画素値がアドレス MEM1番地からアドレス(MEM1 + 255 )番地に格納され、右側の画素値はオフセット値 256を加えたアドレス(MEM1 + 25 6)番地からアドレス(MEM1 + 511)番地に格納される。このため、処理対象画像高 さレジスタ 226には処理対象画像の高さ方向画素数である 256を格納しておく。処理 結果画像は MEM2番地以降に格納する。
[0061] 以下に、本発明の並列画像処理システムの動作を図 7に示したプログラムを一例と して、図 3のフローチャートも参照しながら説明する。
[0062] まず、命令フェッチ 'デコード部 21がプログラムメモリ 3から 1行目のプログラムコード
(LD MEM1, R (O) )を読み出し、反復実行部 22に引き渡す(図 3のステップ Al)。 1行目のプログラムコードの動作内容は、ローカルメモリ 11のアドレス MEM 1に格納 されている値を読み出し、レジスタ R(O)に格納するというものである。反復実行部 22 は、プログラムコードのオペコード部分力 Sメモリ読み出し命令 (LD)であるため、反復 実行対象命令と判断して反復実行カウンタ 224を 0に設定する (ステップ A5)。
[0063] 次に、プログラムコードをオペランド変換部 221、メモリアドレス変換部 222、ォペコ ード変換部 223に引き渡す。オペランド変換部 221は、反復実行指定レジスタ 225お よび反復実行カウンタ 224の値 NRおよび CRを参照し、オフセット算出テーブル 221 . 1力もオフセット値として 0を得る。これを入力されたレジスタ番号 0に加算した結果 である 0を、変換済みレジスタ番号として命令フ ツチ ·デコード部 21へ引き渡す (ス テツプ A6)。メモリアドレス変換部 222は、反復実行カウンタ 224の値 CRを参照し、こ れが 0であるため変換を行わず、メモリアドレス MEM1を命令フェッチ 'デコード部 21 へ引き渡す (ステップ A7)。オペコード変換部 223は、入力オペコードがメモリ読み出 し命令 (LD)であり、オペコード変換の必要な左右隣接画素値の取得命令ではな!/、 ため、オペコード変換を行わず、入力オペコードをそのまま命令フェッチ 'デコード部 21へ引き渡す (ステップ A8)。命令フェッチ ·デコード部 21は、反復実行部 22から入 力されたオペコード、メモリアドレス、オペランドに基づいて PEアレイ 1を動作させ、口 一カルメモリ 11のアドレス MEM1の内容がレジスタ R(O)に格納される(ステップ A9、 A10)。
[0064] 続いて、反復実行部 22は、反復実行カウンタ 224の値 CRを 1だけ増カロさせて 1に 設定する (ステップ Al l)。その後、反復実行カウンタ 224の値 CR= 1と反復実行指 定レジスタ 225の値 NR= 2とを比較し、これらは同一値ではないため、必要な回数の 反復実行を終えて 、な 、と判断してオペランド変換部 221、メモリアドレス変換部 22 2、オペコード変換部 223の実行に戻る (ステップ A12)。
[0065] オペランド変換部 221は、反復実行指定レジスタ 225および反復実行カウンタ 224 の値 NRおよび CRを参照し、オフセット算出テーブル 221. 1力もオフセット値として 1 8を得る。これを入力されたレジスタ番号 0に加算した結果である 18を、変換済みレジ スタ番号として命令フェッチ ·デコード部 21へ引き渡す (ステップ A6)。メモリアドレス 変換部 222は、反復実行カウンタ 224の値 CRが 1であるため、メモリアドレス MEM1 に対してオフセット 256をカ卩えたアドレス(MEM1 + 256)を命令フェッチ 'デコード部 21へ引き渡す (ステップ A7)。オペコード変換部 223は、入力オペコード力 Sメモリ読 み出し命令 (LD)であり、オペコード変換の必要な左右隣接画素値の取得命令では ないため、オペコード変換を行わず、入力オペコードをそのまま命令フェッチ'デコー ド部 21へ引き渡す (ステップ A8)。命令フェッチ ·デコード部 21は、反復実行部 22か ら入力されたオペコード、メモリアドレス、オペランドに基づいて PEアレイ 1を動作させ 、ローカルメモリ 11のアドレス(MEM1 + 256)番地の内容がレジスタ R (18)に格納 される(ステップ A9、 A10)。
[0066] 反復実行部 22は、反復実行カウンタ 224の値 CRを 1だけ増力!]させて 2に設定する( ステップ Al l)。その後、反復実行カウンタ 224の値 CRを反復実行指定レジスタ 225 に指定された値 NRと比較し、これが同一値であるため、必要な反復実行が終了した と判断して 1行目のプログラムコードに対応する処理を終了し、次の命令処理に移る( ステップ A12)。
[0067] 次に、命令フェッチ 'デコード部 21がプログラムメモリ 3から 2行目のプログラムコード
(MVL R(O) , R (l) )を読み出し、反復実行部 22に引き渡す (ステップ Al)。 2行目 のプログラムコードの動作内容は、右側画素に対応するレジスタ R (O)の値をレジスタ R (l)に格納するというものである。 1個の PEに対して 1画素を割り当てたシステムで あれば右側隣接 PEのレジスタ R (O)に格納された値を自 PEへ転送し、レジスタ R(l) に格納するという動作となる力 本実施例では 1個の PEに対して 2画素を割り当てて いるため、右側画素は常に右側隣接 PEが保持しているのではなぐ PEに割り当てら れた処理対象画素のうち、左側画素に対する右側画素の値は PE内の別レジスタに 格納されていることとなる。このため、右側画素値の取得動作は、処理対象画素に応 じて自 PE内でのレジスタ値を読み出す、ある 、は右側隣接 PEのレジスタ R(O)を自 PEへ転送するという 2種類の動作に分かれる。反復実行部 22は、オペコードが右側 隣接画素値の転送命令であるため、反復実行対象命令と判断して反復実行カウンタ 224の値を 0に設定した後、オペランド変換部 221、オペコード変換部 223を動作さ せる(ステップ A2、 A5)。
[0068] オペランド変換部 221は、プログラムコードに指定された入力元レジスタ、出力先レ ジスタのそれぞれについてオペランド変換処理を行う(ステップ A6)。入力されたオペ コードが右側隣接画素値の取得命令 (MVL)であるため、入力元レジスタと出力先レ ジスタのそれぞれで異なるオペランド操作を行う。入力元レジスタについては、反復 実行指定レジスタ 225および反復実行カウンタ 224の値 NRおよび CRを参照し、オフ セット算出テーブル 221. 1を用いてオフセット値として 18を得る。これを入力された レジスタ番号 0に加算した結果である 18を、変換済み入力元レジスタ番号として命令 フェッチ 'デコード部 21へ引き渡す。出力先レジスタについては、オフセット算出テー ブルを参照する際の反復実行カウンタ値 CRを 0に調整してオフセット算出を行って 得られるオフセット値である" 0"を、入力されたレジスタ番号 1に加算した結果である" 1"を、変換済み出力先レジスタ番号として命令フェッチ ·デコード部 21へ引き渡す。
[0069] オペコード変換部 223は、右側隣接画素値の取得命令 (MVL)はオペコード変換 の必要な命令であると判断し、反復実行カウンタ 224の値 CRが(反復実行指定レジ スタ 225の値 NR—1)と等しくないため、同一 PE内でのレジスタ間移動命令に変換し 、命令フ ツチ ·デコード部 21に引き渡す (ステップ A8)。命令フェッチ 'デコード部 2 1が PEアレイ 1を動作させ、レジスタ R(18)の内容がレジスタ R(l)に格納される(ステ ップ A9、 A10)。
[0070] 反復実行部 22は、反復実行カウンタ 224の値 CRを 1だけ増力!]させて 1に設定する( ステップ Al l)。その後、反復実行カウンタ 224の値 CR= 1と反復実行指定レジスタ 2 25の値 NR= 2とを比較し、これらは同一値ではないため、必要な反復実行を終えて いないと判断してオペランド変換部 221、オペコード変換部 223の実行に戻る (ステツ プ A12)。
[0071] オペランド変換部 221は、オペコードが右側隣接画素値の転送命令 (MVL)であり 、反復実行カウンタ 224の値 CRが (反復実行指定レジスタ 225の値 NR—1)に等し いため、右側 PEのレジスタ R(O)の内容を転送する動作となるように変換を行う。この ため、入力元レジスタについては、オフセット算出テーブル 221. 1を参照する際の反 復実行カウンタ値 CRを 0に調整してオフセット算出を行って得られるオフセット値で ある 0を、入力された入力元レジスタ番号 0に加算した結果である 0を、変換済み入力 元レジスタ番号として命令フェッチ ·デコード部 21へ引き渡す。出力先レジスタにつ いては 1行目の場合と同様の変換を行い、反復実行指定レジスタ 225および反復実 行カウンタ 224の値 NRおよび CRによりオフセット算出テーブル 221. 1を用いて得た オフセット値" 18"を、入力された出力先レジスタ番号 1に加算した結果である" 19"を 、変換済み出力先レジスタとして命令フェッチ ·デコード部 21へ引き渡す (ステップ A 6)。
[0072] オペコード変換部 223は、入力オペコードはオペコード変換の対象となる命令であ る力 反復実行カウンタ 224の値 CRが (反復実行指定レジスタ 225の値 NR—1)に 等しいため、変換を行わず、命令フ ツチ ·デコード部 21へ引き渡す (ステップ A8)。 命令フェッチ.デコード部 21が PEアレイ 1を動作させ、右側 PEのレジスタ R (O)の内 容がレジスタ R( 19)に格納される(ステップ A9、 A10)。
[0073] 反復実行部 22は、反復実行カウンタ 224の値 CRを 1だけ増力!]させて 2に設定する( ステップ Al 1)。この値は反復実行指定レジスタ 225に指定された値 NRと同一である ため、必要な反復実行が終了したと判断して、 2行目のプログラムコードに対応する 処理を終了し、次の命令処理に移る(ステップ A12)。
[0074] 命令フェッチ 'デコード部 21がプログラムメモリ 3から 3行目のプログラムコード (AB S R(O) , R(l) , R (2) )を読み出し、反復実行部 22に引き渡す。 3行目のプロダラ ムコードの動作内容は、レジスタ R(O)とレジスタ R (l)の差の絶対値を算出し、演算 結果をレジスタ R (2)に格納するというものである。反復実行部 22は、入力元指定、 出力先指定それぞれのオペランドについて 1行目の場合と同様の変換を行って反復 動作し、命令フェッチ.デコード部 21が PEアレイ 1を動作させた結果、レジスタ R (O) とレジスタ R(l)の差の絶対値がレジスタ R (2)に、レジスタ R ( 18)とレジスタ R( 19)の 差の絶対値がレジスタ R (20)に格納され、次の命令処理に移る。
[0075] 命令フェッチ.デコード部 21が 4行目のプログラムコード(ST MEM2, R(2) )を読 み出し、反復実行部 22に引き渡す。 4行目のプログラムコードの動作内容は、レジス タ R(2)に格納されている値を読み出し、ローカルメモリ 11のアドレス MEM2に書き 込むというものである。反復実行部 22で 1行目の場合と同様のメモリアドレス、オペラ ンドの変換が行われ、命令フェッチ 'デコード部 21が PEアレイ 1を動作させ、レジスタ R (2)の値がローカルメモリ 11のアドレス MEM2番地に、レジスタ R (20)の値がロー カルメモリ 11のアドレス(MEM2 + 256)番地に格納される。
[0076] このように、本実施例では、プログラムメモリ 3から読み出されるプログラムコードの 1 命令に対して、反復実行部 22によって 2命令に相当する PEアレイ制御が行われるた め、プログラムコード量を削減することができる。また、オペコード変換部 223により反 復実行時の一部サイクルで別命令を実行することができるため、同一命令の反復実 行では対応できな 、隣接画素との受け渡し処理にぉ ヽても自動的な反復実行による 動作が可能となり、さらにプログラムコード量を削減することができる。
[0077] なお、本実施例では処理対象画像の幅方向画素数と PE数の比が 2: 1となる例で あつたが、この比に限定されるものではなぐ 3 : 1、 4 : 1、 · ··、 N : lと、処理対象画像 の幅方向画素数がシステムの有する PE数より多い場合に適用が可能である。
産業上の利用可能性
[0078] 本発明によれば、ビデオ画像、センサ画像等を入力とする画像処理装置、画像検 查装置、画像認識装置といった用途に適用できる。
図面の簡単な説明
[0079] [図 1]本発明の一実施形態による並列画像処理システムの機能的構成を示すブロッ ク図である。
[図 2]本実施形態による並列画像処理システムにおけるオペランド変換部の構成を機 能的に示したブロック図である。
[図 3]本実施形態による並列画像処理システムの全体的動作を示すフローチャートで ある。
[図 4]本実施形態による並列画像処理システムのオペランド変換動作を示すフローチ ヤートである。
[図 5]本実施形態による並列画像処理システムのメモリアドレス変換動作を示すフロ 一チャートである。
[図 6]本実施形態による並列画像処理システムのオペコード変換動作を示すフロー チャートである。
[図 7]本発明の一実施例による並列画像処理システムを動作させるプログラムの一例 を示す図である。
符号の説明
[0080] 1 PEアレイ コントローラ
プログラムメモリ
PE
ロー力ノレメモリ
演算部
レジスタ
命令フェッチ 'デコード部 反復命令実行部 オペランド変換部 メモリアドレス変換部 オペコード変換部 反復実行カウンタ 反復実行指定レジスタ 処理対象画像高さレジスタ

Claims

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

Priority Applications (4)

Application Number Priority Date Filing Date Title
EP06833968.8A EP2000973B1 (en) 2006-03-30 2006-12-05 Parallel image processing system control method and apparatus
CN2006800541190A CN101416216B (zh) 2006-03-30 2006-12-05 并行图像处理系统控制方法和设备
JP2008509691A JP5077579B2 (ja) 2006-03-30 2006-12-05 並列画像処理システムの制御方法および装置
US12/224,988 US8106912B2 (en) 2006-03-30 2006-12-05 Parallel image processing system control method and apparatus

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2006-092831 2006-03-30
JP2006092831 2006-03-30

Publications (1)

Publication Number Publication Date
WO2007116560A1 true WO2007116560A1 (ja) 2007-10-18

Family

ID=38580862

Family Applications (1)

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

Country Status (6)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010134891A (ja) * 2008-11-05 2010-06-17 Toshiba Corp 画像処理プロセッサ

Families Citing this family (4)

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

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04291659A (ja) * 1991-03-20 1992-10-15 Hitachi Ltd 並列コンピュータシステムおよびその動作方法
JPH05174166A (ja) * 1991-12-24 1993-07-13 Sony Corp Simd型並列演算装置
JP2839026B1 (ja) 1997-06-25 1998-12-16 日本電気株式会社 並列画像処理装置
JP2002007359A (ja) 2000-06-21 2002-01-11 Sony Corp Simd制御並列処理方法および装置
JP2004362086A (ja) 2003-06-03 2004-12-24 Matsushita Electric Ind Co Ltd 情報処理装置および機械語プログラム変換装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6741294B2 (en) * 1997-12-08 2004-05-25 Sony Corporation Digital signal processor and digital signal processing method
AU2362200A (en) * 1998-12-15 2000-07-03 Intensys Corporation Digital camera using programmed parallel computer for image processing functionsand control
US7506136B2 (en) * 1999-04-09 2009-03-17 Clearspeed Technology Plc Parallel data processing apparatus
GB2389689B (en) * 2001-02-14 2005-06-08 Clearspeed Technology Ltd Clock distribution system
JP4143302B2 (ja) * 2002-01-15 2008-09-03 キヤノン株式会社 画像処理装置、画像処理方法、制御プログラム及び記録媒体
JP4136432B2 (ja) * 2002-04-15 2008-08-20 松下電器産業株式会社 図形描画装置
US20050188087A1 (en) * 2002-05-28 2005-08-25 Dai Nippon Printing Co., Ltd. Parallel processing system
WO2005069215A1 (en) * 2004-01-14 2005-07-28 Koninklijke Philips Electronics N.V. Processor architecture
US20050257026A1 (en) * 2004-05-03 2005-11-17 Meeker Woodrow L Bit serial processing element for a SIMD array processor
JP4478050B2 (ja) * 2005-03-18 2010-06-09 株式会社リコー Simd型マイクロプロセッサ及びデータ処理方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04291659A (ja) * 1991-03-20 1992-10-15 Hitachi Ltd 並列コンピュータシステムおよびその動作方法
JPH05174166A (ja) * 1991-12-24 1993-07-13 Sony Corp Simd型並列演算装置
JP2839026B1 (ja) 1997-06-25 1998-12-16 日本電気株式会社 並列画像処理装置
JP2002007359A (ja) 2000-06-21 2002-01-11 Sony Corp Simd制御並列処理方法および装置
JP2004362086A (ja) 2003-06-03 2004-12-24 Matsushita Electric Ind Co Ltd 情報処理装置および機械語プログラム変換装置

Non-Patent Citations (1)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010134891A (ja) * 2008-11-05 2010-06-17 Toshiba Corp 画像処理プロセッサ

Also Published As

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

Similar Documents

Publication Publication Date Title
US10416999B2 (en) Processors, methods, and systems with a configurable spatial accelerator
EP1028382B1 (en) Microcomputer
US8161266B2 (en) Replicating opcode to other lanes and modifying argument register to others in vector portion for parallel operation
WO2008112207A2 (en) Software programmable timing architecture
JP2006313422A (ja) 演算処理装置及びデータ転送処理の実行方法
WO2021249054A1 (zh) 一种数据处理方法及装置、存储介质
US20070016760A1 (en) Central processing unit architecture with enhanced branch prediction
WO2007116560A1 (ja) 並列画像処理システムの制御方法および装置
JP2001290658A (ja) マッピング回路及び方法
JPH07104784B2 (ja) デジタルデータ処理装置
EP3264261B1 (en) Processor and control method of processor
JP2003501773A (ja) 算術論理演算装置およびスタックを備えたデータプロセッサ
US20060200648A1 (en) High-level language processor apparatus and method
JP3614646B2 (ja) マイクロプロセッサ、演算処理実行方法及び記憶媒体
JP2009507292A (ja) 分離したシリアルモジュールを備えるプロセッサアレイ
Brand et al. Orthogonal instruction processing: An alternative to lightweight VLIW processors
JP4444305B2 (ja) 半導体装置
AU2003204212A1 (en) A Processor for Alpha-compositing
Fuertler et al. Novel development tool for software pipeline optimization for VLIW-DSPs used in real-time image processing
Mehendale et al. Low power code generation of multiplication-free linear transforms
Panis Vliw dsp processor for high-end mobile communication applications
Kuo et al. Digital signal processor architectures and programming
JP2002312178A (ja) メモリアクセス最適化方法
JP2004303058A (ja) ベクトルプロセッサおよびそのデータ処理方法

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 06833968

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 12224988

Country of ref document: US

WWE Wipo information: entry into national phase

Ref document number: 2006833968

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2008509691

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 5252/CHENP/2008

Country of ref document: IN

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 200680054119.0

Country of ref document: CN