WO2013145221A1 - パイプライン型プロセッサ - Google Patents

パイプライン型プロセッサ Download PDF

Info

Publication number
WO2013145221A1
WO2013145221A1 PCT/JP2012/058415 JP2012058415W WO2013145221A1 WO 2013145221 A1 WO2013145221 A1 WO 2013145221A1 JP 2012058415 W JP2012058415 W JP 2012058415W WO 2013145221 A1 WO2013145221 A1 WO 2013145221A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
register
pipeline
selector
registers
Prior art date
Application number
PCT/JP2012/058415
Other languages
English (en)
French (fr)
Inventor
隆弘 野津
Original Assignee
富士通株式会社
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 富士通株式会社 filed Critical 富士通株式会社
Priority to PCT/JP2012/058415 priority Critical patent/WO2013145221A1/ja
Publication of WO2013145221A1 publication Critical patent/WO2013145221A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3875Pipelining a single stage, e.g. superpipelining
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator

Definitions

  • the present invention relates to a pipeline processor.
  • MPEG4 and H.264 are the moving image encoding technologies.
  • a technique called motion compensation interframe predictive coding is used to improve coding efficiency.
  • a reference image is specified with decimal precision.
  • H.M In recent video coding standards, in order to further improve the coding efficiency, a reference image is specified with decimal precision.
  • H.M. In the H.264 standard, an image is designated by coordinates with 1/4 pixel accuracy. However, image information exists only in integer precision coordinates. Therefore, when a pixel having coordinates that are not integer precision is obtained, it is necessary to obtain a pixel value having decimal precision by performing interpolation processing from the values of surrounding pixels.
  • H. The H.264 standard specifies that a 6-tap filter is used in order to obtain a pixel at a 1/2 pixel coordinate.
  • a pixel having a coordinate of 1 ⁇ 4 pixel is obtained by averaging the pixels having a coordinate of integer precision and a pixel having a coordinate of 1 ⁇ 4 pixel. .
  • This calculation is executed for the size of the motion compensation block.
  • 11 operations 4 multiplications, 6 additions, 1 division (or right shift)) are required. Since the average value is calculated using the calculated value for the pixel at the 1/4 coordinate, the calculation amount is further increased.
  • the disclosed technique relates to a technique for performing an interpolated image generation process used in a moving image encoding / decoding process on a software basis implemented in a processor, but is not limited thereto, and performs the same kind of data processing. Applicable to the case.
  • SIMD Single Instruction Multiple Multiple Data
  • interpolation of (0, 1/2) coordinates advanced by 1 ⁇ 2 in the y direction is particularly important.
  • the SIMD register is made to correspond to one row, and interpolation of decimal precision coordinates can be obtained in parallel for each pixel in the row.
  • interpolation other than (0, 1/2) coordinates is performed, interpolation of (1/2, 0) coordinates is performed by transposing rows and columns and performing the same calculation as interpolation of (0, 1/2) coordinates. It can be realized by transposing it.
  • the interpolation of the (1/2, 1/2) coordinates is generated by performing the same process by transposing the data after interpolating the (0, 1/2) coordinates.
  • the 1 ⁇ 4 coordinate accuracy interpolation is an average value of the 1 ⁇ 2 accuracy interpolation result and the integer accuracy pixels, and thus can be obtained by ALU calculation and shift calculation.
  • the simplest method for improving the number of parallel operations is to increase the width of the SIMD register. This corresponds to increasing the number of interpolation operations per row of the pixel block.
  • the motion compensation block width in the moving image encoding / decoding process is 16 pixels at most, effective calculation cannot be performed even if the register width is increased. Therefore, it is necessary to increase the number of rows to be calculated at one time.
  • the number of SIMD registers corresponding to the number of rows calculated at a time in the SIMD method is referred to as the number of SIMD registers.
  • a pipeline processor includes a register file that stores data arranged in order, a plurality of arithmetic units provided in parallel, and the plurality of arithmetic units selected by selecting data stored in the register file And a selector for supplying to.
  • Each arithmetic unit executes pipeline processing that uses a predetermined number of consecutive data in order, and a plurality of arithmetic units perform pipeline processing on data that is out of order by one. Run in parallel.
  • Each arithmetic unit has at least one pipeline register and a switch for switching data input to the pipeline register.
  • the switching unit of the arithmetic unit excluding the lowest order of a plurality of arithmetic units is provided between initial data supplied from a register file via a selector and shift data output from a pipeline register of another adjacent arithmetic unit. Switch the data to be output with.
  • the switching unit of the lowest arithmetic unit of the plurality of arithmetic units outputs data output between the initial data supplied from the register file via the selector and the additional shift data supplied via the selector from the register file. Switch.
  • the SIMD pipeline processor can increase the number of SIMD registers to be calculated at one time with a relatively small increase in circuit scale, and improve parallelism.
  • FIG. 1 is a diagram showing a schematic configuration of a moving picture decoding apparatus realized on a software basis using a pipeline processor.
  • FIG. 2 is a diagram illustrating a coordinate position with 1/4 pixel accuracy.
  • FIG. 3 is a diagram illustrating a configuration example of a pipeline processor when performing the above-described interpolation processing.
  • FIG. 4 is a diagram illustrating data stored in the general-purpose register of the register file.
  • FIG. 5 is an explanatory diagram of the interpolation processing of 1/2 precision coordinates in the pipeline processor.
  • FIG. 6 is an explanatory diagram of a half-precision coordinate interpolation process in a pipeline processor.
  • FIG. 7 is an explanatory diagram of half-precision coordinate interpolation processing in the pipeline processor.
  • FIG. 1 is a diagram showing a schematic configuration of a moving picture decoding apparatus realized on a software basis using a pipeline processor.
  • FIG. 2 is a diagram illustrating a coordinate position with 1/4 pixel accuracy.
  • FIG. 3 is a
  • FIG. 8 is an explanatory diagram of the interpolation processing of 1/2 precision coordinates in the pipeline processor.
  • FIG. 9 is an explanatory diagram of the interpolation processing of 1/2 precision coordinates in the pipeline processor.
  • FIG. 10 is an explanatory diagram of half-precision coordinate interpolation processing in a pipeline processor.
  • FIG. 11 is an explanatory diagram of the interpolation processing of 1/2 precision coordinates in the pipeline processor.
  • FIG. 12 is an explanatory diagram of half-precision coordinate interpolation processing in the pipeline processor.
  • FIG. 13 is an explanatory diagram of the interpolation processing of 1/2 precision coordinates in the pipeline processor.
  • FIG. 14 is a diagram for explaining processing when four registers are calculated simultaneously.
  • FIG. 15 is a diagram for explaining processing in the case of simultaneously calculating four registers.
  • FIG. 16 is a diagram illustrating a configuration of a selector when four data are read in parallel from four general-purpose registers of a register file and supplied to four pipeline registers.
  • FIG. 17 is a diagram illustrating a configuration of the pipeline processor according to the embodiment.
  • FIG. 18 is a diagram illustrating the configuration of the selector.
  • FIG. 19 is a diagram showing a configuration of a 28-input 4-output selector provided in the selector.
  • FIG. 20 is a diagram illustrating a detailed configuration of a part excluding the arithmetic operation unit of the four arithmetic units and an operation at the time of calculation.
  • FIG. 21 is a diagram illustrating a detailed configuration of a portion excluding the arithmetic operation unit of the four arithmetic units and an operation at the time of calculation.
  • FIG. 22 is a diagram illustrating a detailed configuration of a portion of the four arithmetic units excluding the arithmetic operator and an operation at the time of calculation.
  • FIG. 1 is a diagram showing a schematic configuration of a moving picture decoding apparatus realized on a software basis using a pipeline processor.
  • a video decoding device is realized on a software basis using a pipeline processor will be described here, the present invention is not limited to this.
  • a pipeline processor according to an embodiment to be described later can be applied when performing the same kind of data processing.
  • the output device 17 includes the entire control device.
  • the encoded data input unit 11 supplies moving image data to be decoded to the decoding device.
  • the bit stream analysis unit 12 analyzes the encoded data and decomposes it into frame information, macroblock information, motion vector information, and frequency domain difference information.
  • An inverse quantization / inverse DCT (inverse cosine transform) unit 13 obtains difference information from the bitstream analysis unit 12, performs inverse quantization and inverse DCT, and performs conversion from the frequency domain to the time / space domain.
  • the processor 14 obtains frame information, macroblock information, and temporal / spatial difference information, performs inter-frame prediction or intra-frame prediction, and adds the difference information to generate a final image.
  • the generated image is sent to the deblocking filter 15.
  • the deblocking filter 15 relaxes distortion at the macroblock boundary of the generated image.
  • the video memory 16 is used not only as a buffer of the output device 17 for storing the generated image, but also for generating a predicted image.
  • the output device 17 is an output unit or a display device for video signal data.
  • the overall control device 18 controls the above-described components and also has a role of supplying instructions to the processor.
  • the processor 14 receives macroblock information from the bitstream analysis unit 12, further acquires a difference image from the inverse quantization / inverse DCT unit 13, and generates a prediction image according to the type of the macroblock.
  • the processor 14 acquires the adjacent pixel of the macro block from the video memory 16 and executes an intra prediction process (intra-screen prediction process).
  • intra prediction process intra-screen prediction process
  • the processor 14 acquires a motion vector from the bitstream analysis unit 12, acquires a reference image to be subjected to motion compensation, and generates a predicted image from the reference image and the motion vector. , Perform weighted prediction.
  • an image generated by adding the difference image to the predicted image is sent to the deblocking filter 15.
  • a part of the “predicted image generation” part executed by the processor 14 that executes a process of acquiring a reference image that is a target of motion compensation is improved.
  • FIG. 2 is a diagram illustrating a coordinate position with 1/4 pixel accuracy.
  • the coordinates for obtaining image data by interpolation are x, y coordinates, x, x + 1/4, x + 1/2, x + 3/4, y, y + 1/4, y + 1/2, y + Since there are 4 ways each of 3/4, there are 16 ways of combination, and among these, x and y are integer precision pixels, so there are 15 ways to obtain image data by interpolation processing.
  • the pixel interpolation method varies depending on the coordinates to be interpolated. Of these 15 interpolations, the most important is (0, 1/2) coordinate interpolation that is advanced by 1/2 in the y direction.
  • the image data is only the image data of the coordinates of the integer pixel accuracy
  • the image data of the coordinates of the 1/4 pixel accuracy is obtained from the image data of the peripheral integer accuracy coordinates of the decimal accuracy coordinates.
  • Image data is calculated.
  • H. In the H.264 standard, it is stipulated that a pixel at a coordinate of 1/2 pixel is obtained by using the following 6-tap filter.
  • P (X, Y + 1/2) (p (x, y-2) + (-5) * p (x, y-1) + 20 * p (x, y) + 20 * p (x, y + 1) + (-5) * p (x, y + 2) + p (x, y + 3) + 16) / 32
  • p (x, y) is the pixel value at the reference coordinate (x, y)
  • x, y are integer precision coordinates
  • P (x, y) is the pixel value after interpolation
  • x and y are integer precision coordinates.
  • image data of six integer precision pixels from (0, -2) to (0, 3) is used.
  • the pixel data at the coordinates of the 1/4 pixel is obtained by obtaining the pixel data at the coordinates of the 1/2 pixel, and then averaging the pixel data with the coordinates of the integer precision to obtain the pixel data of the coordinates of the 1/4 pixel. Seeking. This calculation is executed for the size of the motion compensation block.
  • 11 operations 4 multiplications, 6 additions, 1 division (or right shift)) are required.
  • interpolation of (1/2, 0) coordinates is performed by transposing rows and columns and performing the same calculation as (0, 1/2) coordinates. This can be achieved by transposing it back. Further, the interpolation of (1/2, ⁇ ⁇ 1/2) coordinates is generated by performing the same processing after transposing the data after interpolating the (0, 1/2) coordinates.
  • the quarter precision interpolation is an average value of the half precision interpolation result and the integer precision pixels, and therefore can be obtained by ALU calculation and shift calculation. Therefore, if the (0, 1/2) coordinates can be interpolated, other points can be easily interpolated, but the calculation amount is further increased.
  • FIG. 3 is a diagram illustrating a configuration example of a pipeline processor when performing the above-described interpolation processing.
  • the pipeline processor includes a fetch unit 21, an instruction register 22, an instruction decoder 23, a register file 24, a selector 25, and a register write control unit 26.
  • the pipeline processor includes a pipeline register (P0) 27, a multiplier (M0) 28, an accumulator adder (AC0) 29, an output holding pipeline register (P1) 30, and an arithmetic operator (Alice). (Metic unit) (ALU0) 31.
  • the fetch unit 21 is supplied with the start address and end address of the program from the entire control device 18 of the moving picture decoding apparatus, reads the instruction from the instruction memory within the range, and stores it in the instruction register 22.
  • the instruction decoder 23 analyzes the instruction acquired by the fetch unit 21, determines the operand to be calculated and the calculation mode to be executed, further controls the entire processor, and determines whether to actually start executing the instruction. .
  • the register file 24 has a general-purpose register and an accumulator register.
  • the general-purpose registers are registers that hold values to be operated. Here, there are 24 registers from vr0 to vr23, and each register is formed of a vector register of 16 bits ⁇ 9 elements.
  • the accumulator registers are four registers from vr24 to vr27, and each register is formed by a vector register of 16 bits ⁇ 9 elements.
  • Both general-purpose registers and accumulator registers in the register file 24 can be used as source operands for addition and multiplication operations.
  • the result after multiplication and the accumulator register are used as implicit source operands, and the result is output.
  • the selector 25 reads a value necessary for calculation from the register file 24 and supplies it to the calculator (ALU0, M0, AC0) and the pipeline register P0.
  • the source of the value is an immediate value obtained from the instruction register 22 in addition to the register file 24.
  • scalar data is multiplexed and input to a plurality of computing units.
  • FIG. 5 to FIG. 13 are explanatory diagrams of (x, y + 1/2) coordinate interpolation processing for executing the calculation of the above formula in the pipeline processor.
  • the (x, y + 1/2) coordinate interpolation process will be described below with reference to FIGS.
  • the image data stored in the general purpose registers vr0 to vr5 in FIG. 4 is used.
  • the data in the general register vr0 in the register file 24 is multiplied by 1 and transferred to the accumulating register 41.
  • the accumulating register 41 is any one of Vr24 to vr27 of the register file 24. Therefore, the accumulating register 41 stores vr0 data (value).
  • the value of the general-purpose register is indicated by the register number in FIG.
  • the vr2 data is multiplied by 20 and added to the data vr0 + vr1 * ( ⁇ 5) of the accumulating register 41. Therefore, the accumulating register 41 stores vr0 + vr1 * ( ⁇ 5) + vr2 * 20.
  • the data of vr3 is multiplied by 20 and added to the data vr0 + vr1 * ( ⁇ 5) + vr2 * 20 of the accumulating register 41. Therefore, the accumulating register 41 stores vr0 + vr1 * ( ⁇ 5) + vr2 * 20 + vr3 * 20.
  • the data of vr4 is multiplied by ( ⁇ 5) and added to the data vr0 + vr1 * ( ⁇ 5) + vr2 * 20 + vr3 * 20 of the accumulating register 41. Therefore, the accumulating register 41 stores vr0 + vr1 * ( ⁇ 5) + vr2 * 20 + vr3 * 20 + vr4 * ( ⁇ 5).
  • the data of vr5 is multiplied by 1 and added to the data vr0 + vr1 * ( ⁇ 5) + vr2 * 20 + vr3 * 20 + vr4 * ( ⁇ 5) of the accumulating register 41. Therefore, the accumulating register 41 stores vr0 + vr1 * ( ⁇ 5) + vr2 * 20 + vr3 * 20 + vr4 * ( ⁇ 5) + vr5.
  • the data in the accumulating register 41 is written into the general-purpose register vr0. Therefore, vr0 + vr1 * ( ⁇ 5) + vr2 * 20 + vr3 * 20 + vr4 * ( ⁇ 5) + vr5 is stored in the general-purpose register vr0.
  • the data in general-purpose register vr0 is divided by 32.
  • the division by 32 corresponds to the operation of shifting the data of vr0 to the right by 5 bits. Therefore, (vr0 + vr1 * ( ⁇ 5) + vr2 * 20 + vr3 * 20 + vr4 * ( ⁇ 5) + vr5 + 16) / 32 is stored in the general-purpose register vr0.
  • the simplest method for increasing the number of parallel operations is to increase the width of the SIMD register. This corresponds to increasing the number of interpolation operations per row. Specifically, by enlarging the bit width of each element in FIG. 3, interpolation can be obtained in parallel for each pixel in the row, for example, (0, 1/2), (1, 1 / 2), (2, 1/2), ... are interpolated in parallel.
  • the motion compensation block width in the moving image encoding / decoding process is about 16 pixels at most, effective calculation cannot be performed even if the register width is increased. Therefore, it is necessary to increase the number of rows to be calculated at one time.
  • SIMD register Since one SIMD register corresponds to a row, it is necessary to increase the number of SIMD registers calculated at one time.
  • a pipeline register (P0) 27, a multiplier (M0) 28, an accumulator adder (AC0) 29, an output holding pipeline register (P1) 30, and an arithmetic operator (ALU0) The number of 31 is increased.
  • FIG. 14 and FIG. 15 are diagrams for explaining processing when calculating four registers simultaneously. 14 and 15, it is assumed that the image data of the pixels shown in FIG. 4 is stored in the general-purpose registers vr0 to vr23.
  • the data from the four registers vr0 to vr3 are copied to the four accumulating registers 410-413.
  • the data from the four registers vr1 to vr4 is multiplied by ( ⁇ 5) and added to the data in the accumulating registers 410-413. Thereafter, the same processing as described above is sequentially continued for the data of the four registers.
  • the above SIMD pipeline processor reads out four SIMD registers while shifting each cycle. In order to realize this operation, the selector 25 in FIG. 3 is increased by the number of SIMD registers.
  • FIG. 16 is a diagram showing a configuration of the selector 25 when four data are read in parallel from the four general-purpose registers of the register file 24 and supplied to the four pipeline registers.
  • it is necessary to arrange 28-input 1-output selectors 510-513 for selecting and outputting any one of 28 inputs. Since the 28-input 1-output selectors 510-513 are the same circuits as the selector 25 in FIG. 3, in this case, the selector has a circuit size four times as large. Therefore, the circuit scale of the selector 25 for reading data from the register file becomes enormous.
  • the increase in the scale of the selector is suppressed, and the number of SIMD system registers to be calculated at a time is increased with a relatively small circuit scale.
  • the moving picture decoding apparatus of the embodiment has the schematic configuration shown in FIG.
  • the portion of the “prediction image generation” portion executed by the processor 14 that executes the process of acquiring the reference image that is the target of motion compensation is improved. Therefore, only this part will be described, and the other parts are the same, and the description thereof will be omitted.
  • FIG. 17 is a diagram illustrating a configuration of the pipeline processor according to the embodiment.
  • the pipeline processor according to the embodiment performs the above-described interpolation processing in parallel on four SIMD type registers.
  • the pipeline processor includes a fetch unit 21, an instruction register 22, an instruction decoder 23, a register file / accumulate register 24, a register write control unit 26, and an instruction register P32. These elements are the same as those in FIG. 3, and a description thereof will be omitted.
  • the instruction register P32 indicates the contents of the instruction being executed. Although not shown in FIG. 3, the instruction register P32 is provided in a general processor.
  • the pipeline processor of the embodiment has four sets of pipeline registers, multipliers, accumulator adders, output holding pipeline registers, and arithmetic units, and the selector is different from the pipeline processor of FIG. .
  • a set of pipeline registers, a multiplier, an accumulator adder, an output holding pipeline register, and an arithmetic operator are referred to as an arithmetic unit and given a ranking.
  • an arithmetic unit including a pipeline register (P0_0) 270, a multiplier (M0) 280, an accumulator adder (AC0) 290, an output holding pipeline register (P1_0) 300, and an arithmetic operator (ALU0) 310 Is the top.
  • An arithmetic unit including a pipeline register (P0_3) 273, a multiplier (M3) 283, an accumulator adder (AC3) 293, an output holding pipeline register (P1_3) 303, and an arithmetic operator (ALU3) 313 is provided. It is the lowest.
  • FIG. 18 is a diagram illustrating the configuration of the selector 50.
  • FIG. 19 is a diagram showing a configuration of a 28-input 4-output selector provided in the selector 50.
  • the selector 50 reads a value necessary for the operation from the register file 24 and supplies it to the pipeline register and the arithmetic operation unit of each operation unit.
  • the data supply source is a general-purpose register and an accumulating register in the register file 24, and is obtained from the instruction register 22 when the data is an immediate value.
  • scalar data is multiplexed and input to a plurality of computing units.
  • the selector 50 has two 28-input four-output selectors 52 and 53 and one 28-input one-output selector 54.
  • the 28-input 1-output selector 54 is the same as the 28-input 1-output selector 510-513 shown in FIG. 16, and data is sent from one of the 24 general-purpose registers vr0-vr23 and the four accumulating registers vr24-vr27. Select and read. However, the data supply destination of the 28-input 1-output selector 54 is fixed to the pipeline register (P0_3) 273 of the lowest arithmetic unit.
  • the register file 24 has 28 registers including general-purpose registers vr0 to vr23 and accumulator registers vr24 to vr27. In the embodiment, these registers are divided into seven groups: vr0 to vr3, vr4 to vr7, vr8 to vr11, vr12 to vr15, vr16 to vr19, vr20 to vr23, and vr24 to vr27.
  • the data in the first register of each group is stored in the first arithmetic unit
  • the data in the second register is stored in the second arithmetic unit
  • the data in the third register is stored in the third arithmetic unit
  • the data in the fourth register is stored. Data is supplied in parallel to the fourth arithmetic unit.
  • the first arithmetic unit is the highest and the fourth arithmetic unit is the lowest.
  • the registers of the register file 24 are associated with arithmetic units.
  • the 28-input 4-output selectors 52 and 53 include four 7-input 1-output selectors 550-553 and three 2-input 1-output selectors 560, 561, 570.
  • the 7-input 1-output selector 550 selects any one of the data of the first registers vr0, vr4, vr8, vr12, vr16, vr20, and vr24 of each group.
  • the 2-input 1-output selector 560 selects one of the output of the 7-input 1-output selector 552 and the output of the 7-input 1-output selector 550.
  • the 2-input 1-output selector 561 selects one of the output of the 7-input 1-output selector 551 and the output of the 7-input 1-output selector 553.
  • the 2-input 1-output selector 570 selects one of the output of the 2-input 1-output selector 560 and the output of the 2-input 1-output selector 561.
  • the output of the 2-input 1-output selector 570 is op_0
  • the output of the 2-input 1-output selector 5610 is op_2
  • the 7-input 1-output selector This is an output op_3 of 553.
  • op_0 is data of any one of vr0 to vr27.
  • op_1 is the second or fourth data of each group
  • op_2 is the third data of each group
  • op_3 is the fourth data of each group.
  • two 28-input four-output selectors 52 and 53 for supplying such data are provided.
  • the four outputs SEL_E0_0, SEL_E0_1, SEL_E0_2, and SEL_E0_3 of the 28-input 4-output selector 52 correspond to the outputs op_0, op_1, op_2, and op_3 in FIG.
  • the four outputs SEL_E1_0, SEL_E1_1, SEL_E1_2, and SEL_E1_3 of the 28-input 4-output selector 53 correspond to the outputs op_0, op_1, op_2, and op_3 in FIG.
  • the selector 50 supplies the data of the accumulating registers vr24-vr27 to the pipeline registers 270-273 as outputs SEL_R0, SEL_R1, SEL_R2, SEL_R3 for the accumulating operation after multiplication.
  • the selector 50 cannot supply the data of any register in the register file 24 to any arithmetic unit in parallel.
  • the four SIMD registers cannot be processed in parallel.
  • a parallel operation of the four SIMD registers is enabled by performing a shift operation between the pipeline registers of the four arithmetic units. Yes.
  • the circuit scale can be significantly reduced.
  • Each arithmetic unit has three arithmetic units: an arithmetic unit (ALU), a multiplier (M), and an adder (AC) for an accumulator.
  • Arithmetic calculators (ALU0-ALU3) 310-313 receive the calculation target data output from the selector 50 and send the calculation results to the register file 24.
  • FIGS. 20 to 22 are diagrams showing a detailed configuration of a part excluding the arithmetic operation unit of the four arithmetic units and an operation at the time of calculation.
  • the configuration and operation of the arithmetic unit will be described with reference to FIGS. 20 to 22.
  • Multipliers (M0-M3) 280-283 receive data to be operated from pipeline registers 270-273, and send the multiplication results to the accumulating registers of the register file 24 and the output holding pipeline registers 300-303.
  • Accumulator adders 290-293 obtain the data to be added stored in pipeline registers 270-273 or the data to be added stored in output holding pipeline registers 300-303. The calculation results of 280-283 are added. The addition result is stored in the output holding pipeline registers 300-303.
  • the adders 290-293 include a switch (selector) 650 and an addition operation unit (AC0-AC3, ADD) 660-663.
  • the selector 650 selects one of the data in the accumulator registers vr24-vr27 via the pipeline registers 270-273 and the output data in the output holding pipeline registers 300-303, and outputs the selected data to the addition operation units 660-663.
  • Addition arithmetic units 660-663 add the output data of multipliers 280-283 to the output data of selector 650, and output the result to output holding pipeline registers 300-303. If the addition operation unit 660-663 issues an operation instruction that uses an accumulator register continuously, a structural hazard occurs. Therefore, a path from the output holding pipeline register 300-303 to the adder 290-293 is provided as a forwarding circuit.
  • the pipeline register (P0_0) 270 includes a selector 600, an accumulating data register (P0_0_A) 610, a first register (P0_0_M0) 620, and a second register (P0_0_M1) 630.
  • the accumulating data register (P0_0_A) 610 receives and holds the data of the accumulating register vr24 of the register file 24 via the selector 50.
  • the second register (P0_0_M1) 630 receives and holds the output of the 28-input 4-output selector 53 of the selector 50, that is, the data of any general-purpose register in the register file 24.
  • the selector 600 outputs the output of the 28-input 4-output selector 52 of the selector 50, that is, the data of any one of the general-purpose registers of the register file 24 and the first register (P0_1_M0) 621 of the pipeline register (P0_1) 271 one level lower. Receive output.
  • the selector 600 selects one of the two inputs and outputs it to the first register (P0_0_M0) 620, and the first register (P0_0_M0) 620 holds it.
  • the pipeline register (P0_1) 271 includes a selector 601, an accumulating data register (P0_1_A) 611, a first register (P0_1_M0) 621, and a second register (P0_1_M1) 631.
  • the accumulating data register (P0_1_A) 611 receives and holds the data of the accumulating register vr25 of the register file 24 via the selector 50.
  • the second register (P0_1_M1) 631 receives and holds the output SEL_E1_1 of the 28-input 4-output selector 53 of the selector 50, that is, the data of any of the general registers of the second and fourth groups of the register file 24.
  • the selector 601 receives the output SEL_E0_1 of the 28-input 4-output selector 52 of the selector 50, that is, data of any of the second and fourth group general-purpose registers of the register file 24. Further, the selector 601 receives the output of the first register (P0_2_M0) 622 of the pipeline register (P0_2) 272 one level lower. The selector 601 selects one of the two inputs and outputs it to the first register (P0_1_M0) 621, and the first register (P0_1_M0) 621 holds it.
  • the pipeline register (P0_3) 273 has a selector 603, an accumulating data register 613, a first register 623, and a second register 633, which is the same as the others. The data is different.
  • the selector 603 receives the output SEL_E0_3 of the 28-input 4-output selector 52 of the selector 50, that is, the data of any of the general registers in the fourth group and the output SEL_E2 of the 28-input 1-output selector 54. Different.
  • the pipeline registers 270-273 have a data setting mode and a shift mode.
  • the selectors 600 to 603 are set to select the outputs SEL_E0_0, SEL_E0_1, SEL_E0_2, and SEL_E0_3 of the 28-input 4-output selector 52 of the selector 50.
  • the data in the registers vr0 to vr27 selected by the selector 50 can be set in the accumulated data registers 610-613, the first registers 623-623, and the second registers 630-633.
  • the selector 600-602 is set to receive the output of the first register 621-623 of the pipeline register 271-273 which is one level lower. Further, the selector 603 is set to a state in which the output SEL_E2 of the selector 5028 input 1 output selector 54 is selected. As a result, the first registers 620 to 623 operate as a shift register, and the data input to the first register 623 is sequentially shifted to the upper first register. At this time, the data of the register file 24 selected by the selector 50 can be set in the accumulating data registers 610-613 and the second registers 630-633. As described above, in the shift mode, data in which one register is shifted from the previous calculation can be input to the multiplier.
  • the output holding pipeline registers (P1_0, P1_1, P1_2, P1_3) 300-303 have selectors 680-683 and output pipeline registers (PO_0, PO_1, PO_2, PO_3) 690-693.
  • Selector 680-683 selects one of the operation results from multipliers 280-283 and adders 290-293.
  • the output pipeline register 690-693 outputs the data selected by the selectors 680-683 to the adder 290-293 and writes it to the register file 24 after one cycle has elapsed.
  • the pipeline processor performs fetching of the above-described instruction, decoding of the instruction, and loading of the operation target into each operation unit, and each operation unit executes the operation and stores the operation result.
  • the pipeline processor executes a prediction image generation process in video decoding.
  • the prediction image generation process is performed according to the following flow. (1) Obtain the decimal point coordinates of the motion vector (2) Divide the motion vector coordinates into an integer part and a decimal part according to the decimal point coordinates
  • the SIMD scalar multiplication instruction the SIMD scalar MAC instruction with register shift, the SIMD right shift instruction, and the SIMD scalar addition instruction are used.
  • the operation and data flow in the arithmetic unit will be described with reference to FIGS.
  • the content of the operation is a process for obtaining an interpolation pixel of (0, 1/2) coordinates as in the above-described process. 20 to 23, the data flow at that time is indicated by a bold line.
  • a SIMD scalar multiplication instruction is executed.
  • the source operand is a SIMD register from vr0 to vr3 and an immediate value of 1.
  • the destination specifies the accumulator register.
  • the selector 50 sets appropriate register operands and immediate operands to SEL_E0_0,1,2,3 and SEL_E1_0,1,2,3.
  • SEL_E0_0,1,2,3 is input to the selectors 600-603 of the pipeline registers 270-273.
  • SEL_E0_0, 1, 2, 3 are selected and input to the first registers 620-623.
  • SEL_E1_0,1,2,3 are input to the second registers 630-633 of the pipeline registers 270-273. Since there is a pipeline register, data flow stops there.
  • a SIMD scalar MAC instruction with register shift is executed as shown in FIG.
  • the source operand is vr4 and an immediate value (-5).
  • the destination specifies the accumulator register.
  • the selector sets the appropriate register operand and immediate operand to SEL_E2 and SEL_E1_0,1,2,3.
  • the pipeline shift function works, and the values of vr1, vr2, and vr3 stored in the first cycle are one higher pipeline respectively. Stored in a register. Since there is a pipeline register, data flow stops there.
  • the data stored in the pipeline registers 270-273 in the first cycle moves as follows.
  • Multipliers 280-283 are supplied with the values stored in first registers 620-623 and second registers 630-633 of pipeline registers 270-273. This is vr0, vr1, vr2, vr3 and immediate value 1, respectively. Since the “SIMD scalar multiplication instruction” is stored in the instruction register P32, the multiplication result does not pass through the adders 290-293 but directly into the output pipeline register 690-693 of the output holding pipeline register 300-303. Stored. A path that directly flows from the multipliers 280 to 283 to the output holding pipeline registers 300 to 303 is made when the contents of the instruction register P32 are “SIMD scalar multiplication instructions”.
  • the SIMD scalar MAC instruction with register shift is executed as in the second cycle.
  • the source operand is vr5 and an immediate value (-5).
  • the destination specifies the accumulator register.
  • the selector 50 sets appropriate register operands and immediate operands to SEL_E2 and SEL_E1_0,1,2,3.
  • the pipeline shift function works, and the values of vr2, vr3, and vr4 stored in the second cycle are each one higher. Stored in pipeline register. Since there is a pipeline register, data flow stops there.
  • the data stored in the pipeline registers 270-273 in the second cycle moves as follows.
  • Multipliers 280-283 are supplied with the values stored in first registers 620-623 and second registers 630-633 of pipeline registers 270-273. These are vr1, vr2, vr3, vr4 and immediate value ( ⁇ 5), respectively. Since the “SIMD scalar MAC instruction with register shift” is stored in the instruction register P32, the multiplication result is stored in the output holding pipeline register 300-303 via the adders 290-293. Since the SIMD scalar multiplication instruction is stored in the instruction register P32 in the previous cycle and the destination is the accumulating register, the pipeline register 270-273 stores the latest value of the accumulating register. . Therefore, this value is used for the input of the adders 290-293.
  • FIG. 22 shows a state where data obtained by multiplying vr1 shown in FIG. 6 by ( ⁇ 5) is added to vr0.
  • the processing shown in FIGS. 7 to 13 can also be performed in the same manner as described above.
  • a pipeline register of a plurality of arithmetic units is formed so that one output is connected to the other input, and a register file is stored in the first pipeline register of the chain. Data is supplied from any register. Thereby, the plurality of pipeline registers can be switched to the data setting mode or the shift mode.
  • the data arranged in the register is used while shifting one by one, so first set the initial data in the data setting mode, then switch to the shift mode, and newly use at the beginning of the chain as the cycle progresses Data to be supplied is supplied as additional data.
  • a series of arithmetic processing can be performed by supplying additional data in the shift mode.
  • the data used in each arithmetic unit and the data stored in the register of the register file can be partially associated with each other, limiting the selection range of the selector 50 and reducing the circuit scale of the selector 50. it can.
  • the hardware scale of the selector shown in FIG. 16 and the selector 50 of the embodiment was compared by comparing the number of gates.
  • four selectors of 28 inputs and 1 output of 16 bits wide ⁇ 9 elements are used to specify four registers. Since there are two inputs to the arithmetic unit, eight selectors are required. In this case, the number of gates was 54785.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Image Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

 順番に整列されたデータを格納するレジスタファイルと、並列に設けられた複数の演算ユニットと、レジスタファイルのデータを選択して演算ユニットに供給するセレクタと、を有するパイプライン型プロセッサであって、各演算ユニットは、所定の個数の連続したデータを順番に使用するパイプライン処理を実行し、複数の演算ユニットは、順番が1つずれたデータに対してパイプライン処理を並列に実行し、各演算ユニットは、少なくとも1個のパイプラインレジスタと、パイプラインレジスタの入力データ切替器と、を有し、最下位を除く演算ユニットの前記切替器は、レジスタファイルから供給される初期データと、隣接する他の演算ユニットのパイプラインレジスタが出力するシフトデータと、の間で出力するデータを切り替え、最下位の演算ユニットの切替器は、レジスタファイルから供給される初期データと追加シフトデータとの間で出力するデータを切り替える。

Description

パイプライン型プロセッサ
 本発明は、パイプライン型プロセッサに関する。
 動画像符号化技術にはMPEG4、H.264などの規格が存在する。それらの規格では符号化効率を向上させるために動き補償フレーム間予測符号化と呼ばれる技術が用いられている。
 動き補償フレーム間予測符号化では、異なる時刻の画像間で類似している部分を検索し、その参照、つまり、その画像の時刻と場所(動きベクトル)で符号化している。そのため、直接画像を示す情報を個別に持たずに済み、大幅にデータ量を削減することができる。
 近年の動画像符号化規格では符号化効率をさらに向上させるために、小数精度で参照先の画像を指定している。例えば、H.264規格では1/4画素精度の座標で画像を指定する。ところが、画像の情報は整数精度の座標にしか存在しない。そのため、整数精度でない座標の画素が求められた場合、周辺の画素の値から補間処理して小数精度の画素の値を求める必要がある。H.264規格では1/2画素の座標にある画素を得るために、6タップフィルタを用いることが規定されている。また、1/4画素の座標にある画素は、1/2画素の座標の画素を得たのち、整数精度の座標の画素との平均をとって1/4画素の座標の画素を求めている。この計算を、動き補償ブロックの大きさの分だけ実行する。1/2画素の座標にある1画素の補間を得るのに11回(乗算4回、加算6回、除算(または右シフト)1回)の演算が必要になっている。1/4の座標にある画素は、計算した値を用いて平均値を計算するため、さらに計算量が多くなる。
 このような計算を高速に行うという要求に応えるため、従来は専用の演算回路を実装して補間画素を求めていた。これは実装する回路規模と消費電力が小さくなるためである。ところが、近年は符号化の規格の種類が増えて、様々な規格に対応しようとすると専用の演算回路による実装が難しくなった。そこで、プロセッサを実装してソフトウエアベースで補間処理を行うことへ要求が高まってきた。
 開示の技術は、動画像符号化・復号化処理で用いられる補間画像生成処理を、プロセッサに実装したソフトウエアベースで行う技術に関するが、これに限定されるものではなく、同種のデータ処理を行う場合に適用可能である。
 プロセッサで大量の演算を行うためには並列化技術を駆使する必要がある。画素の補間処理の場合、複数の画素に対して同じ計算を行うため、パイプライン型プロセッサにSIMD(Single Instruction Multiple Data)と呼ばれる並列化技術を適用することが望ましい。
 1/4画素精度の補間で求める座標位置は、16-1=15通りであり、補間方法は座標により異なる。このうち、とくに重要なのがy方向に1/2だけ進んだ(0,1/2)座標の補間である。この補間は、SIMDレジスタを一つの行に対応させ、行内の画素に対してそれぞれ小数精度座標の補間を並列で求めることができる。(0,1/2)座標以外の補間であるが、(1/2,0)座標の補間は、行と列を転置して(0,1/2)座標の補間と同様の計算を行い、転置を戻せば実現できる。また、(1/2,1/2)座標の補間は(0,1/2)座標の補間を行った後、そのデータを転置して同じ処理を行って生成する。なお、1/4座標精度の補間は、1/2精度の補間結果と整数精度の画素との平均値となっているため、ALU演算とシフト演算で求めることができる。
 したがって、(0,1/2)座標の補間を行えば、その他の座標の補間は類似の演算処理で容易に行うことができる。
 SIMD方式を適用して1/4画素精度の補間処理をより高速に行うには、並列演算の数を増やす必要がある。もっとも簡単な並列演算数の向上方法は、SIMD方式のレジスタの幅を増やすことである。これは画素ブロックの1行当たりの補間演算の数を増やすことに相当する。しかしながら、動画像符号化、復号化処理での動き補償ブロックの幅は高々16画素であるため、レジスタの幅を増やしても有効な計算を行うことができない。そのため、一度に計算する行の数を増やす必要がある。行には一つのSIMD方式の演算ユニットおよびレジスタが対応するため、一度に計算する行の数を増やすには、演算ユニット数を増加させ、一度に計算するSIMD方式のレジスタ数を増加させる必要がある。ここでは、SIMD方式で一度に計算する行数に対応するレジスタ数をSIMDレジスタ数と称する。
特開2001-092658号公報
 演算ユニット数を増加させ、一度に計算するSIMD方式のレジスタ数を増加させる場合、レジスタファイルから各演算ユニットにデータを読み出すためのセレクタ回路が巨大になるという問題が生じる。
 実施形態によれば、レジスタファイルから各演算ユニットにデータを読み出すためのセレクタ回路の規模の増加を抑制して、比較的小さな回路規模で、一度に計算するSIMD方式のレジスタ数を増加させたパイプライン型プロセッサが実現される。
 実施形態のパイプライン型プロセッサは、順番に整列されたデータを格納するレジスタファイルと、並列に設けられた複数の演算ユニットと、前記レジスタファイルに格納されたデータを選択して前記複数の演算ユニットに供給するセレクタと、を有する。各演算ユニットは、所定の個数の連続したデータを順番に使用するパイプライン処理を実行し、複数の演算ユニットは、パイプライン処理を、順番が1つずれたデータに対して、パイプライン処理を並列に実行する。各演算ユニットは、少なくとも1個のパイプラインレジスタと、パイプラインレジスタに入力するデータを切り替える切替器と、を有する。複数の演算ユニットの最下位を除く前記演算ユニットの切替器は、レジスタファイルからセレクタを介して供給される初期データと、隣接する他の演算ユニットのパイプラインレジスタが出力するシフトデータと、の間で出力するデータを切り替える。複数の演算ユニットの最下位の演算ユニットの切替器は、レジスタファイルからセレクタを介して供給される初期データと、レジスタファイルからセレクタを介して供給される追加シフトデータと、の間で出力するデータを切り替える。
 実施形態によれば、SIMD方式のパイプライン型プロセッサで、回路規模の比較的小さな増加で、一度に計算するSIMDレジスタ数を増加させ、並列度を向上できる。
図1は、パイプライン型プロセッサを利用してソフトウエアベースで実現した動画像復号化装置の概略構成を示す図である。 図2は、1/4画素精度の座標位置を示す図である。 図3は、上記の補間処理を行う場合のパイプライン型プロセッサの構成例を示す図である。 図4は、レジスタファイルの汎用レジスタに格納されるデータを示す図である。 図5は、パイプライン型プロセッサにおいて、1/2精度座標の補間処理の説明図である。 図6は、パイプライン型プロセッサにおいて、1/2精度座標の補間処理の説明図である。 図7は、パイプライン型プロセッサにおいて、1/2精度座標の補間処理の説明図である。 図8は、パイプライン型プロセッサにおいて、1/2精度座標の補間処理の説明図である。 図9は、パイプライン型プロセッサにおいて、1/2精度座標の補間処理の説明図である。 図10は、パイプライン型プロセッサにおいて、1/2精度座標の補間処理の説明図である。 図11は、パイプライン型プロセッサにおいて、1/2精度座標の補間処理の説明図である。 図12は、パイプライン型プロセッサにおいて、1/2精度座標の補間処理の説明図である。 図13は、パイプライン型プロセッサにおいて、1/2精度座標の補間処理の説明図である。 図14は、4つのレジスタを同時に計算する場合の処理を説明する図である。 図15は、4つのレジスタを同時に計算する場合の処理を説明する図である。 図16は、レジスタファイルの4つの汎用レジスタから4つのデータを並列に読み出して、4つのパイプラインレジスタに供給する場合のセレクタの構成を示す図である。 図17は、実施形態のパイプライン型プロセッサの構成を示す図である。 図18は、セレクタの構成を示す図である。 図19は、セレクタ内に設けられる28入力4出力セレクタの構成を示す図である。 図20は、4つの演算ユニットの算術演算器を除く部分の詳細な構成と、演算時の動作を示す図である。 図21は、4つの演算ユニットの算術演算器を除く部分の詳細な構成と、演算時の動作を示す図である。 図22は、4つの演算ユニットの算術演算器を除く部分の詳細な構成と、演算時の動作を示す図である。
 図1は、パイプライン型プロセッサを利用してソフトウエアベースで実現した動画像復号化装置の概略構成を示す図である。なお、ここでは、パイプライン型プロセッサを利用してソフトウエアベースで動画像復号化装置を実現した例を説明するが、これに限定されるものではない。後述する実施形態のパイプライン型プロセッサは、同種のデータ処理を行う場合に適用可能である。
 図1の動画像復号化装置は、符号化データ入力部11と、ビットストリーム解析部12と、逆量子化・逆DCT部13と、プロセッサ14と、デブロッキングフィルタ15と、ビデオメモリ16と、出力装置17を、全体の制御装置と、を有する。
 符号化データ入力部11は、復号化の対象となる動画データを復号化装置に供給する。ビットストリーム解析部12は、符号化データを解析し、フレーム情報、マクロブロック情報、動きベクトル情報、周波数領域の差分情報に分解する。逆量子化・逆DCT(逆コサイン変換)部13は、ビットストリーム解析部12から差分情報を得て、逆量子化および逆DCTを行い周波数領域から時間・空間領域への変換を行う。プロセッサ14は、フレーム情報、マクロブロック情報、時間・空間領域の差分情報を得て、フレーム間予測もしくはフレーム内予測を行い、差分情報を加えて最終的な画像を生成する。生成した画像はデブロッキングフィルタ15に送る。デブロッキングフィルタ15は、生成した画像のマクロブロック境界での歪みを緩和する。ビデオメモリ16は、生成した画像を蓄える出力装置17のバッファとして用いられるほか、予測画像の生成にも用いられる。出力装置17は、映像信号データの出力部または表示装置などである。全体の制御装置18は、上記の構成要素の制御を行うと共に、プロセッサに命令を供給する役割も持つ。
 次に、動画像復号化装置のプロセッサ14の動作を説明する。
 プロセッサ14は、ビットストリーム解析部12からマクロブロック情報を受け取り、さらに、逆量子化・逆DCT部13から差分画像を取得し、マクロブロックの種類に応じて予測画像を生成する。
 マクロブロックの種別がイントラマクロブロックである場合は、プロセッサ14は、ビデオメモリ16からマクロブロックの隣接画素を取得し、イントラ予測処理(画面内予測処理)を実行する。マクロブロック種別がインターマクロブロックである場合、プロセッサ14は、ビットストリーム解析部12から動きベクトルを取得し、動き補償の対象となる参照画像を取得し、参照画像と動きベクトルから予測画像を生成し、重み付き予測を行う。
 さらに、予測画像に差分画像を加えて生成した画像が、デブロッキング・フィルタ15に送られる。
 後述する実施形態では、プロセッサ14が実行する「予測画像の生成」部分のうちの動き補償の対象となる参照画像の取得する処理を実行する部分を改善する。
 まず、SIMD方式のパイプライン型プロセッサが処理する動画像符号化技術における小数画素座標の補間処理を説明する。
 前述のように、H.264規格では1/4画素精度の座標で画像を指定する。
 図2は、1/4画素精度の座標位置を示す図である。補間で画像データを求める座標はx, y座標で、x, x+1/4, x+1/2, x+3/4、y, y+1/4, y+1/2, y+3/4のそれぞれ4通りあるため、組み合わせで16通りとなり、このうちx, yは、整数精度画素であるため、補間処理で画像データを求めるのは15通りである。
 画素の補間方法は補間を求める座標により異なる。
 この15通りの補間のうち、とくに重要なのがy方向に1/2だけ進んだ(0, 1/2)の座標の補間である。
 図2に示すように、画像データは整数画素精度の座標の画像データのみであるから、1/4画素精度の座標の画像データは、周辺の整数精度の座標の画像データから小数精度の座標の画像データを算出する。H.264規格では、次のような6タップフィルタを用いて、1/2画素の座標にある画素を得ることが規定されている。
 P(X, Y + 1/2) = (p(x, y - 2) + (-5) * p(x, y - 1) + 20 * p(x, y)
                + 20 * p(x, y + 1) + (-5) * p(x, y + 2) + p(x, y + 3) + 16) / 32
 ここで、p(x, y)は参照先の座標(x, y)での画素の値で、x, yは整数精度の座標、P(x, y)は補間後の画素の値で、x, yは整数精度の座標である。
 上記の式のように、(0, 1/2)座標の補間を行うには、(0, -2)から(0, 3)の6つの整数精度画素の画像データを使用する。
 また、1/4画素の座標にある画素データは、1/2画素の座標の画素データを得たのち、整数精度の座標の画素データとの平均をとって1/4画素の座標の画素データを求めている。この計算を動き補償ブロックの大きさの分だけ実行する。1/2画素精度の座標にある1画素の補間を得るのに11回(乗算4回、加算6回、除算(または右シフト)1回)の演算が必要になっている。
 (0, 1/2)座標以外の補間については、 (1/2, 0)座標の補間は、行と列を転置して(0, 1/2)座標の補間と同様の計算を行い、転置を戻せば実現できる。また、(1/2, 1/2)座標の補間は(0, 1/2)座標の補間を行った後、そのデータを転置して同じ処理を行って生成する。1/4精度の補間は1/2精度の補間結果と整数精度の画素との平均値となっているためALU演算とシフト演算で求めることができる。したがって、(0, 1/2)座標の補間ができればその他の点の補間は容易に行うことができるが、さらに計算量が多くなる。
 図3は、上記の補間処理を行う場合のパイプライン型プロセッサの構成例を示す図である。
 パイプライン型プロセッサは、フェッチユニット21と、命令レジスタ22と、命令デコーダ23と、レジスタファイル24と、セレクタ25と、レジスタ書込制御部26と、を有する。パイプライン型プロセッサは、パイプラインレジスタ(P0)27と、乗算器(M0)28と、アキュミュレータ用加算器(AC0)29と、出力保持パイプラインレジスタ(P1)30と、算術演算器(アリスメティックユニット)(ALU0)31と、を有する。
 フェッチユニット21は、動画像復号化装置の全体の制御装置18からプログラムの開始アドレスと終了アドレスを供給され、その範囲内で命令メモリから命令を読み出して命令レジスタ22に格納する。
 命令デコーダ23は、フェッチユニット21が取得した命令を解析し、演算対象のオペランドや実行する演算モードを決定し、さらにプロセッサ全体の制御も行い、実際に命令の実行を開始するか否かも決定する。
 レジスタファイル24は、汎用レジスタと、アキュミュレータレジスタと、を有している。汎用レジスタは、演算の対象となる値を保持するレジスタで、ここでは、vr0からvr23までの24本のレジスタであり、1本当たり16bit×9要素のベクトルレジスタで形成されている。アキュミュレータレジスタはvr24からvr27までの4本のレジスタであり、1本当たり16bit×9要素のベクトルレジスタで形成されている。
 レジスタファイル24の汎用レジスタおよびアキュミュレータレジスタは、共に加算、乗算演算のソースオペランドとして使用できる。乗算後のアキュミュレート演算については、乗算後の結果とアキュミュレータレジスタを暗黙のソースオペランドとして使用し、結果を出力する。
 セレクタ25は、レジスタファイル24から演算に必要な値を読み出して演算器(ALU0、M0、AC0)やパイプラインレジスタP0に供給する。値の供給元はレジスタファイル24のほか、命令レジスタ22から得られる即値がある。ベクトルデータとスカラデータの演算の場合、スカラデータを多重化して複数の演算器に投入させることも行う。
 次に、図3のパイプライン型プロセッサを使用して、(0, 1/2)座標の補間処理を行う場合の動作を説明する。
 図4は、レジスタファイル24の汎用レジスタvr0からvr23に格納されるデータを示す図である。1列の24整数精度の画素データp(x, y-2), p(x, y-1), p(x, y), …, p(x, y+21)が格納される。上記の式のように、(x, y+1/2)座標の補間を行うには、(x, y-2)から(x, y+3)の6つの整数精度画素の画像データを使用する。同様に、(x, y+3/2)座標の補間を行うには、(x, y-1)から(x, y+4)の6つの整数精度画素の画像データを使用するという具合に、汎用レジスタvr0からvr23に格納されたデータを1つずつずれた範囲で使用する。
 図5から図13は、パイプライン型プロセッサにおいて、上記の式の演算を実行する(x, y+1/2)座標の補間処理の説明図である。以下、図5から図13を参照して、(x, y+1/2)座標の補間処理を説明する。この場合、図4の汎用レジスタvr0からvr5に格納された画像データを使用する。
 図5に示すように、サイクル1)では、レジスタファイル24の汎用レジスタvr0のデータに1を乗じてアキュミュレートレジスタ41に転送する。アキュミュレートレジスタ41は、レジスタファイル24のVr24-vr27のいずれかである。したがって、アキュミュレートレジスタ41には、vr0のデータ(値)が格納される。以下、汎用レジスタの値を図4のレジスタ番号で表示する。
 図6に示すように、サイクル2)では、vr1のデータに(-5)を乗じて、アキュミュレートレジスタ41のデータvr0に加える。したがって、アキュミュレートレジスタ41には、vr0+vr1*(-5)が格納される。
 図7に示すように、サイクル3)では、vr2のデータに20を乗じて、アキュミュレートレジスタ41のデータvr0+vr1*(-5)に加える。したがって、アキュミュレートレジスタ41には、vr0+vr1*(-5)+vr2*20が格納される。
 図8に示すように、サイクル4)では、vr3のデータに20を乗じて、アキュミュレートレジスタ41のデータvr0+vr1*(-5)+vr2*20に加える。したがって、アキュミュレートレジスタ41には、vr0+vr1*(-5)+vr2*20+vr3*20が格納される。
 図9に示すように、サイクル5)では、vr4のデータに(-5)を乗じて、アキュミュレートレジスタ41のデータvr0+vr1*(-5)+vr2*20+vr3*20に加える。したがって、アキュミュレートレジスタ41には、vr0+vr1*(-5)+vr2*20+vr3*20+vr4*(-5)が格納される。
 図10に示すように、サイクル6)では、vr5のデータに1を乗じて、アキュミュレートレジスタ41のデータvr0+vr1*(-5)+vr2*20+vr3*20+vr4*(-5)に加える。したがって、アキュミュレートレジスタ41には、vr0+vr1*(-5)+vr2*20+vr3*20+vr4*(-5)+vr5が格納される。図11に示すように、アキュミュレートレジスタ41のデータは、汎用レジスタvr0に書き込まれる。したがって、汎用レジスタvr0には、vr0+vr1*(-5)+vr2*20+vr3*20+vr4*(-5)+vr5が格納される。
 図12に示すように、サイクル7)では、汎用レジスタvr0のデータに16を加える。したがって、汎用レジスタvr0には、vr0+vr1*(-5)+vr2*20+vr3*20+vr4*(-5)+vr5+16が格納される。
 図13に示すように、サイクル8)では、汎用レジスタvr0のデータを32で除算する。32での除算は、vr0のデータを5ビット右シフトする動作に相当する。したがって、汎用レジスタvr0には、(vr0+vr1*(-5)+vr2*20+vr3*20+vr4*(-5)+vr5+16)/32が格納される。
 以上のようにして、 (x, y+1/2)座標の補間が完了し、上記の式にしたがって算出した(x, y+1/2)座標の補間データが得られる。(x, y+3/2)等のデータについても同様の補間処理により算出される。
 より一層の性能向上(高速化)が必要となる場合、SIMD方式による並列演算の数を増やす必要がある。もっとも簡単な並列演算数の増加方法は、SIMD方式のレジスタの幅を増やすことである。これは1行当たりの補間演算の数を増やすことに相当する。具体的には、図3の各要素のビット幅を拡大することにより、行内の画素に対してそれぞれの並列に補間を求めることができ、例えば (0, 1/2)、(1, 1/2)、(2, 1/2)、…の補間を並列に行う。しかしながら、動画像符号化、復号化処理での動き補償ブロックの幅は高々16画素程度であるため、レジスタの幅を増やしても有効な計算を行うことができない。そのため、一度に計算する行の数を増やす必要がある。行には一つのSIMDレジスタが対応するため、一度に計算するSIMDのレジスタの数を増やす必要がある。具体的には、図3において、パイプラインレジスタ(P0)27、乗算器(M0)28、アキュミュレータ用加算器(AC0)29、出力保持パイプラインレジスタ(P1)30および算術演算器(ALU0)31の個数を増加させる。
 図14および図15は、4つのレジスタを同時に計算する場合の処理を説明する図である。図14および図15において、汎用レジスタvr0からvr23には、図4に示した画素の画像データが格納されているとする。
 図14に示すように、初めに、4つのレジスタvr0からvr3までのデータを4つのアキュミュレートレジスタ410-413にコピーする。図15に示すように、次のサイクルで、4つのレジスタvr1からvr4までデータに(-5)を乗じてアキュミュレートレジスタ410-413のデータに加える。以下、上記と同様の処理を、4つのレジスタのデータについて順次続けていく。
 上記のSIMD方式のパイプライン型プロセッサは、1サイクルごとに4つのSIMDレジスタをずらしながら読み出している。この動作を実現するには、図3のセレクタ25をSIMDのレジスタの数分だけ増加させる。
 図16は、レジスタファイル24の4つの汎用レジスタから4つのデータを並列に読み出して、4つのパイプラインレジスタに供給する場合のセレクタ25の構成を示す図である。図16に示すように、28入力からいずれか1つを選択して出力する28入力1出力セレクタ510-513を配置する必要がある。28入力1出力セレクタ510-513は、それぞれ図3のセレクタ25と同じ回路であるので、この場合、セレクタは4倍の回路規模になる。そのため、レジスタファイルからデータを読み出すためのセレクタ25の回路規模が巨大になる。
 以下に説明する実施形態のパイプライン型プロセッサでは、セレクタの規模の増加を抑制して、比較的小さな回路規模で、一度に計算するSIMD方式のレジスタ数を増加させる。
 実施形態の動画像復号化装置は、図1に示した概略構成を有する。実施形態では、プロセッサ14が実行する「予測画像の生成」部分のうちの動き補償の対象となる参照画像の取得する処理を実行する部分を改善する。したがって、この部分についてのみ説明し、他の部分は同じであるので、説明を省略する。
 図17は、実施形態のパイプライン型プロセッサの構成を示す図である。
 実施形態のパイプライン型プロセッサは、上記の補間処理を、4つのSIMD方式のレジスタに対して並列に実行する。
 実施形態のパイプライン型プロセッサは、フェッチユニット21と、命令レジスタ22と、命令デコーダ23と、レジスタファイル・アキュミュレートレジスタ24と、レジスタ書込制御部26と、命令レジスタP32と、を有する。これらの要素は、図3のものと同じであり、説明は省略する。命令レジスタP32は、実行している命令の内容を示し、図3では図示していないが、一般のプロセッサに設けられるものである。
 実施形態のパイプライン型プロセッサは、パイプラインレジスタ、乗算器、アキュミュレータ用加算器、出力保持パイプラインレジスタおよび算術演算器を4組有すること、およびセレクタが、図3のパイプライン型プロセッサと異なる。ここでは、1組のパイプラインレジスタ、乗算器、アキュミュレータ用加算器、出力保持パイプラインレジスタおよび算術演算器を、演算ユニットと称し、順位を付けている。具体的は、パイプラインレジスタ(P0_0)270、乗算器(M0)280、アキュミュレータ用加算器(AC0)290、出力保持パイプラインレジスタ(P1_0)300および算術演算器(ALU0)310を含む演算ユニットが、最上位である。また、パイプラインレジスタ(P0_3)273、乗算器(M3)283、アキュミュレータ用加算器(AC3)293、出力保持パイプラインレジスタ(P1_3)303および算術演算器(ALU3)313を含む演算ユニットが、最下位である。
 図18は、セレクタ50の構成を示す図である。
 また、図19は、セレクタ50内に設けられる28入力4出力セレクタの構成を示す図である。
 セレクタ50は、レジスタファイル24から演算に必要な値を読み出して、各演算ユニットのパイプラインレジスタおよび算術演算器に供給する。データの供給元は、レジスタファイル24内の汎用レジスタおよびアキュミュレートレジスタであり、データが即値の場合は命令レジスタ22から得られる。ベクトルデータとスカラデータの演算の場合、スカラデータを多重化して複数の演算器に投入させることも行う。
 図18に示すように、セレクタ50は、2個の28入力4出力セレクタ52および53と、1個の28入力1出力セレクタ54と、を有する。28入力1出力セレクタ54は、図16に示した28入力1出力セレクタ510-513と同じものであり、24個の汎用レジスタvr0-vr23および4個のアキュミュレートレジスタvr24-vr27の1つからデータを選択して読み出す。ただし、28入力1出力セレクタ54のデータの供給先は、最下位の演算ユニットのパイプラインレジスタ(P0_3)273に固定されている。
 レジスタファイル24は、汎用レジスタvr0からvr23およびアキュミュレータレジスタvr24からvr27の併せて28本のレジスタを有している。実施形態では、これらのレジスタを、vr0からvr3、vr4からvr7、vr8からvr11、vr12からvr15、vr16からvr19、vr20からvr23およびvr24からvr27の7グループに分けている。各グループの1番目のレジスタのデータを1番目の演算ユニットに、2番目のレジスタのデータを2番目の演算ユニットに、3番目のレジスタのデータを3番目の演算ユニットに、4番目のレジスタのデータを4番目の演算ユニットに、並列に供給する。1番目の演算ユニットが最上位であり、4番目の演算ユニットが最下位である。言い換えれば、レジスタファイル24のレジスタは、演算ユニットを関連付けられている。
 図19に示すように、28入力4出力セレクタ52および53は、4個の7入力1出力セレクタ550-553と、3個の2入力1出力セレクタ560、561、570と、を有する。7入力1出力セレクタ550は、上記の各グループの1番目のレジスタvr0、vr4、vr8、vr12、vr16、vr20、vr24のいずれかのデータを選択する。7入力1出力セレクタ551-553についても同様であり、各グループの対応する順番のレジスタのデータを選択する。
 2入力1出力セレクタ560は、7入力1出力セレクタ552の出力と7入力1出力セレクタ550の出力の一方を選択する。2入力1出力セレクタ561は、7入力1出力セレクタ551の出力と7入力1出力セレクタ553の出力の一方を選択する。2入力1出力セレクタ570は、2入力1出力セレクタ560の出力と2入力1出力セレクタ561の出力の一方を選択する。
 図19に示すように、2入力1出力セレクタ570の出力がop_0であり、2入力1出力セレクタ5610の出力がop_2であり、7入力1出力セレクタ552の出力op_2であり、7入力1出力セレクタ553の出力op_3である。詳しい説明は省略するが、図19から明らかなように、op_0はvr0からvr27のいずれかのデータである。また、op_1は上記の各グループの2番目または4番目データであり、op_2は上記の各グループの3番目データであり、op_3は上記の各グループの4番目データである。
 後述するように、4つの演算ユニットは、2つのオペランドを必要とするため、このようなデータ供給を行う2つの28入力4出力セレクタ52および53を設ける。28入力4出力セレクタ52の4つの出力SEL_E0_0, SEL_E0_1, SEL_E0_2, SEL_E0_3は、図19の出力op_0, op_1, op_2, op_3に対応する。28入力4出力セレクタ53の4つの出力SEL_E1_0, SEL_E1_1, SEL_E1_2, SEL_E1_3は、図19の出力op_0, op_1, op_2, op_3に対応する。
 さらに、セレクタ50は、乗算後のアキュミュレート演算の為に、アキュミュレートレジスタvr24-vr27のデータを、出力SEL_R0, SEL_R1, SEL_R2, SEL_R3として、パイプラインレジスタ270-273に供給する。
 以上のように、セレクタ50は、レジスタファイル24の任意のレジスタのデータを、任意の演算ユニットに並列に供給できない。この場合、4つのSIMDのレジスタを並列に処理することができないが、実施形態では、4つの演算ユニットのパイプラインレジスタ間でシフト動作を行うことにより、4つのSIMDレジスタの並列処理を可能にしている。図16の28入力1出力セレクタを4個設けるのに比べて図18および図19に示すように、セレクタの選択先と供給先を制限することにより、回路規模を大幅に小さくできる。
 次に、各演算ユニットについて説明する。各演算ユニットは、算術演算器(ALU)、乗算器(M)、アキュミュレータ用の加算器(AC)の3つ演算器を有している。算術演算器(ALU0-ALU3)310-313は、セレクタ50が出力する演算対象のデータを受け取り、その演算結果をレジスタファイル24に送る。
 図20から図22は、4つの演算ユニットの算術演算器を除く部分の詳細な構成と、演算時の動作を示す図である。以下、図20から図22を参照して、演算ユニットの構成および動作を説明する。
 乗算器(M0-M3)280-283は、パイプラインレジスタ270-273から演算対象のデータを受け取り、乗算結果をレジスタファイル24のアキュミュレートレジスタや出力保持パイプラインレジスタ300-303に送る。
 アキュミュレータ用の加算器290-293は、パイプラインレジスタ270-273に格納されている加算対象のデータもしくは出力保持パイプラインレジスタ300-303に格納されている加算対象のデータを取得し、乗算器280-283の演算結果を加算する。加算結果は、出力保持パイプラインレジスタ300-303に保存される。
 図20に示すように、加算器290-293は、切替器(セレクタ)650と加算演算部(AC0-AC3,ADD)660-663とを有する。セレクタ650は、パイプラインレジスタ270-273を経由したアキュミュレータレジスタvr24-vr27のデータと、出力保持パイプラインレジスタ300-303の出力データの一方を選択して、加算演算部660-663に出力する。加算演算部660-663は、セレクタ650の出力データに、乗算器280-283の出力データを加算して、出力保持パイプラインレジスタ300-303に出力する。加算演算部660-663がアキュミュレートレジスタを使用する演算命令を連続して実行する発行すると、構造ハザードが発生する。そのため、フォワーディング回路として、出力保持パイプラインレジスタ300-303から加算器290-293へのパスを設けている。
 パイプラインレジスタ(P0_0)270は、セレクタ600と、アキュミュレートデータ用レジスタ(P0_0_A)610と、第1レジスタ(P0_0_M0)620と、第2レジスタ(P0_0_M1)630と、を有する。アキュミュレートデータ用レジスタ(P0_0_A)610は、セレクタ50を介して、レジスタファイル24のアキュミュレートレジスタvr24のデータを受けて保持する。第2レジスタ(P0_0_M1)630は、セレクタ50の28入力4出力セレクタ53の出力、すなわちレジスタファイル24のいずれかの汎用レジスタのデータを受けて保持する。セレクタ600は、セレクタ50の28入力4出力セレクタ52の出力、すなわちレジスタファイル24のいずれかの汎用レジスタのデータと、1つ下位のパイプラインレジスタ(P0_1)271の第1レジスタ(P0_1_M0)621の出力を受ける。セレクタ600は、2つの入力の一方を選択して第1レジスタ(P0_0_M0)620に出力し、第1レジスタ(P0_0_M0)620はそれを保持する。
 パイプラインレジスタ(P0_1)271は、セレクタ601と、アキュミュレートデータ用レジスタ(P0_1_A)611と、第1レジスタ(P0_1_M0)621と、第2レジスタ(P0_1_M1)631と、を有する。アキュミュレートデータ用レジスタ(P0_1_A)611は、セレクタ50を介して、レジスタファイル24のアキュミュレートレジスタvr25のデータを受けて保持する。第2レジスタ(P0_1_M1)631は、セレクタ50の28入力4出力セレクタ53の出力SEL_E1_1、すなわちレジスタファイル24の2番目および4番目のグループの汎用レジスタのいずれかのデータを受けて保持する。セレクタ601は、セレクタ50の28入力4出力セレクタ52の出力SEL_E0_1、すなわちレジスタファイル24の2番目および4番目のグループの汎用レジスタのいずれかのデータを受ける。さらに、セレクタ601は、1つ下位のパイプラインレジスタ(P0_2)272の第1レジスタ(P0_2_M0)622の出力を受ける。セレクタ601は、2つの入力の一方を選択して第1レジスタ(P0_1_M0)621に出力し、第1レジスタ(P0_1_M0)621はそれを保持する。
 パイプラインレジスタ(P0_2)272については、図20に示されているので説明を省略し、パイプラインレジスタ(P0_3)273について説明する。パイプラインレジスタ(P0_3)273が、セレクタ603と、アキュミュレートデータ用レジスタ613と、第1レジスタ623と、第2レジスタ633、を有すことは、他と同じであり、入力されるセレクタ50からのデータは異なる。これに加えて、セレクタ603は、セレクタ50の28入力4出力セレクタ52の出力SEL_E0_3、すなわち4番目のグループの汎用レジスタのいずれかのデータと、28入力1出力セレクタ54の出力SEL_E2を受けることが異なる。
 上記の構成により、パイプラインレジスタ270-273は、データ設定モードと、シフトモードと、を有する。データ設定モードでは、セレクタ600-603を、セレクタ50の28入力4出力セレクタ52の出力SEL_E0_0, SEL_E0_1, SEL_E0_2, SEL_E0_3を選択する状態に設定する。これにより、アキュミュレートデータ用レジスタ610-613と、第1レジスタ623-623と、第2レジスタ630-633に、セレクタ50で選択したレジスタvr0からvr27のデータを設定できる。
 シフトモードでは、セレクタ600-602を、1つ下位のパイプラインレジスタ271-273の第1レジスタ621-623の出力を受ける状態に設定する。さらに、セレクタ603を、セレクタ5028入力1出力セレクタ54の出力SEL_E2を選択する状態に設定する。これにより、第1レジスタ620-623は、シフトレジスタとして動作する形態になり、第1レジスタ623に入力されたデータを順次上位の第1レジスタにシフトする状態になる。この時、アキュミュレートデータ用レジスタ610-613および第2レジスタ630-633には、セレクタ50で選択したレジスタファイル24のデータを設定できる。このように、シフトモード時には、直前の演算とは一つレジスタがずれたデータを乗算器に投入することができる。
 出力保持パイプラインレジスタ(P1_0, P1_1, P1_2, P1_3)300-303は、セレクタ680-683と、出力用パイプラインレジスタ(PO_0, PO_1, PO_2, PO_3)690-693と、を有する。セレクタ680-683は、乗算器280-283および加算器290-293からの演算結果の一方を選択する。出力用パイプラインレジスタ690-693は、セレクタ680-683で選択したデータを、加算器290-293に出力すると共に、1サイクル経過後レジスタファイル24に書き込む。
 実施形態のパイプライン型プロセッサは、前述の命令のフェッチ、命令のデコードおよび各演算ユニットへの演算対象のロードを行い、各演算ユニットは、演算の実行および演算結果のストアを行う。
 実施形態のパイプライン型プロセッサは、動画像復号化における予測画像の生成処理を実行する。予測画像の生成処理は次に示すフローに従って行う。
(1)動きベクトルの小数点座標を得る
(2)小数点座標に従って動きベクトルの座標を整数部と小数部に分ける
 図2で説明したように、小数部の座標の取り得る組み合わせは(0, 0)の場合などなど16通り存在する。ここでは、そのうちの(0, 1/2)座標の補間についてその動作を説明する。ただし、後半の16を加算して5ビットシフトする処理は、図3から図13を参照して説明した前述の処理と同様のため省略し、前半のSIMDスカラ乗算、SIMDスカラMAC演算の初めの3ステップについてのみ説明する。
 パイプライン型プロセッサが実装している命令のうち、ここでは、SIMDスカラ乗算命令、レジスタシフト付きSIMDスカラMAC命令、SIMD右シフト命令およびSIMDスカラ加算命令を使用する。
 図20から図23を参照して、演算ユニットにおける動作およびデータの流れについて説明する。動作内容は、前述の処理と同様に、 (0, 1/2)座標の補間画素を求める処理とする。図20から図23において、その時のデータの流れを太線で示している。
 1サイクル目では、SIMDスカラ乗算命令を実行する。ソースオペランドはvr0からvr3までのSIMDレジスタと即値の1とする。デスティネーションはアキュミュレータレジスタを指定する。命令デコーダ23が命令を解析するとセレクタ50が適切なレジスタオペランドと即値オペランドをSEL_E0_0,1,2,3およびSEL_E1_0,1,2,3に設定する。これにより、図20に示すように、パイプラインレジスタ270-273のセレクタ600-603には、SEL_E0_0,1,2,3が入力される。SEL_E0_0,1,2,3は、選択されて第1レジスタ620-623に入力する。また、パイプラインレジスタ270-273の第2レジスタ630-633には、SEL_E1_0,1,2,3が入力される。パイプラインレジスタがあるためそこでデータの流れが止まる。
 2サイクル目では、図21に示すように、レジスタシフト付きSIMDスカラMAC命令を実行する。ソースオペランドはvr4と即値の(-5)とする。デスティネーションはアキュミュレータレジスタを指定する。デコーダが命令を解析するとセレクタが適切なレジスタオペランドと即値オペランドをSEL_E2およびSEL_E1_0,1,2,3に設定する。一方、命令レジスタに「レジスタシフト付きSIMDスカラMAC命令」が格納されているためパイプラインシフトの機能が働き、1サイクル目に格納されたvr1、vr2、vr3の値がそれぞれ一つ上位のパイプラインレジスタに格納される。パイプラインレジスタがあるため、そこでデータの流れが止まる。
 一方、1サイクル目でパイプラインレジスタ270-273に格納されたデータは次のように移動する。乗算器280-283には、パイプラインレジスタ270-273の第1レジスタ620-623および第2レジスタ630-633に格納された値が供給される。これはそれぞれvr0、vr1、vr2、vr3および即値の1である。そして、命令レジスタP32に「SIMDスカラ乗算命令」が格納されているため、乗算結果は加算器290-293を経由せず直接出力保持パイプラインレジスタ300-303の出力用パイプラインレジスタ690-693に格納される。乗算器280-283から出力保持パイプラインレジスタ300-303へ直接流れるパスは命令レジスタP32の内容が「SIMDスカラ乗算命令」であることによってなされる。
 さらに、図22に示すように、3サイクル目では、2サイクル目と同様に、レジスタシフト付きSIMDスカラMAC命令を実行する。ソースオペランドはvr5と即値の(-5)とする。デスティネーションはアキュミュレータレジスタを指定する。命令デコーダ23が命令を解析するとセレクタ50が適切なレジスタオペランドと即値オペランドをSEL_E2およびSEL_E1_0,1,2,3に設定する。一方、命令レジスタ22に「レジスタシフト付きSIMDスカラMAC命令」が格納されているため、パイプラインシフトの機能が働き、2サイクル目に格納されたvr2、vr3、vr4の値がそれぞれ一つ上のパイプラインレジスタに格納される。パイプラインレジスタがあるため、そこでデータの流れが止まる。
 一方、2サイクル目でパイプラインレジスタ270-273に格納されたデータは次のように移動する。乗算器280-283にはパイプラインレジスタ270-273の第1レジスタ620-623および第2レジスタ630-633に格納された値が供給される。これはそれぞれvr1、vr2、vr3、vr4および即値の(-5)である。そして、命令レジスタP32に「レジスタシフト付きSIMDスカラMAC命令」が格納されているため、乗算結果は加算器290-293を経由して出力保持パイプラインレジスタ300-303に格納される。一つ前のサイクルで命令レジスタP32にSIMDスカラ乗算命令が格納されており、デスティネーションがアキュミュレートレジスタであったため、パイプラインレジスタ270-273には最新のアキュミュレートレジスタの値が格納されている。そこで、加算器290-293の入力にはこの値を使用するようにする。
 図22は、図6に示したvr1に(-5)を乗じたデータをvr0に加算する状態を示している。図7から図13に示した処理も、上記と同様に行うことができる。
 以上のようにして、4つのSIMDレジスタに対する処理が4つ並列に行われ、4つの1/2精度座標の補間処理が並列に行われる。これにより、例えば、(0,1/2), (0, 3/2), (0, 5/2), (0, 7/2)の座標の補間値が同時に算出できる。
 以上説明したように、実施形態では、複数の演算ユニットのパイプラインレジスタを、一方の出力がもう一方の入力に接続されるようにチェーンを形成し、チェーンの初めのパイプラインレジスタにはレジスタファイルの任意のレジスタからデータを供給する。これにより、複数のパイプラインレジスタは、データ設定モードまたはシフトモードに切り替えることができる。
 演算では、レジスタに整列されたデータを、一つずつずらしながら使用するので、まずデータ設定モードで初期データを設定した後シフトモードに切り替え、サイクルの進行に応じて、チェーンの初めに、新しく使用するデータを追加データとして供給する。これにより一連の演算処理(パイプライン処理)を、シフトモードで追加データを供給して行える。このような構成では、各演算ユニットで使用するデータとレジスタファイルのレジスタに格納されるデータを、部分的に対応付けることができ、セレクタ50の選択範囲を制限して、セレクタ50の回路規模を低減できる。
 図16に示したセレクタと、実施形態のセレクタ50のハードウエア規模の比較を、ゲート数の比較で行った。図16の例では、4つのレジスタを指定するために16ビット幅×9要素の28入力1出力のセレクタを4つ使用した。演算ユニットの入力は2系統あるため、セレクタは8つ必要になる。この場合のゲート数は、54785であった。
 一方、実施形態では、16ビット幅×9要素の7入力1出力のセレクタを4つ、2入力1出力のセレクタを3つ使用した。また、パイプラインレジスタへの供給の為、28入力1出力のセレクタを1つ使用している。さらに、パイプラインレジスタの入力切り替えの為、2入力1出力のセレクタを3つ使用している。この場合のゲート数は、26644であった。このように、セレクタの回路規模が大幅に低減される。
 以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものである。特に記載された例や条件は発明の範囲を制限することを意図するものではなく、明細書のそのような例の構成は発明の利点および欠点を示すものではない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
 11  符号化データ入力部
 12  ビットストリーム解析部
 13  逆量子化・逆DCT部
 14  プロセッサ
 15  デブロッキングフィルタ
 16  ビデオメモリ
 17  出力装置
 18  全体の制御装置
 21  フェッチユニット
 22  命令レジスタ
 23  命令デコーダ
 24  レジスタファイル
 50  セレクタ
 270-273  パイプラインレジスタ
 280-283  乗算器
 290-293  加算器
 300-303  出力保持パイプラインレジスタ
 310-313  算出演算器

Claims (4)

  1.  順番に整列されたデータを格納するレジスタファイルと、並列に設けられた複数の演算ユニットと、前記レジスタファイルに格納されたデータを選択して前記複数の演算ユニットに供給するセレクタと、を備えるパイプライン型プロセッサであって、
     各演算ユニットは、所定の個数の連続したデータを順番に使用するパイプライン処理を実行し、
     前記複数の演算ユニットは、前記パイプライン処理を、順番が1つずれたデータに対して、前記パイプライン処理を並列に実行し、
     各演算ユニットは、少なくとも1個のパイプラインレジスタと、前記パイプラインレジスタに入力するデータを切り替える切替器と、を備え、
     前記複数の演算ユニットの最下位を除く前記演算ユニットの前記切替器は、前記レジスタファイルから前記セレクタを介して供給される初期データと、隣接する他の前記演算ユニットの前記パイプラインレジスタが出力するシフトデータと、の間で出力するデータを切り替え、
     前記複数の演算ユニットの最下位の前記演算ユニットの前記切替器は、前記レジスタファイルから前記セレクタを介して供給される初期データと、前記レジスタファイルから前記セレクタを介して供給される追加シフトデータと、の間で出力するデータを切り替えることを特徴とするパイプライン型プロセッサ。
  2.  前記複数の演算ユニットの前記パイプラインレジスタに初期データをセットした後、前記切替器を前記シフトデータおよび前記追加シフトデータを選択するように切り替え、前記パイプライン処理を1ステップずつ実行する請求項1記載のパイプライン型プロセッサ。
  3.  前記レジスタファイルは、
     複数の汎用レジスタと、
     複数のアキュミュレートレジスタと、を備え、
     前記セレクタは、前記複数の汎用レジスタおよび前記複数のアキュミュレートレジスタに格納されたデータを選択して前記複数の演算ユニットに供給する請求項1または2記載のパイプライン型プロセッサ。
  4.  前記セレクタは、
     前記複数の演算ユニットの最下位の前記演算ユニットの前記切替器に入力する前記追加データを選択する追加データ選択回路と、
     前記追加データ以外の前記複数の演算ユニットの複数の入力にそれぞれ対応付けられた複数の個別選択回路を備え、
     各個別選択回路は、前記レジスタファイルおよび前記アキュミュレートレジスタの一部のレジスタに格納されたデータの1つを選択して、前記演算ユニットの前記入力に供給し、
     前記追加データ選択回路は、前記レジスタファイルのすべてのレジスタに格納されたデータの1つを選択して、前記演算ユニットの前記入力に供給する請求項3記載のパイプライン型プロセッサ。
PCT/JP2012/058415 2012-03-29 2012-03-29 パイプライン型プロセッサ WO2013145221A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/058415 WO2013145221A1 (ja) 2012-03-29 2012-03-29 パイプライン型プロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/058415 WO2013145221A1 (ja) 2012-03-29 2012-03-29 パイプライン型プロセッサ

Publications (1)

Publication Number Publication Date
WO2013145221A1 true WO2013145221A1 (ja) 2013-10-03

Family

ID=49258585

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2012/058415 WO2013145221A1 (ja) 2012-03-29 2012-03-29 パイプライン型プロセッサ

Country Status (1)

Country Link
WO (1) WO2013145221A1 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000322235A (ja) * 1999-05-07 2000-11-24 Sony Corp 情報処理装置
JP2004013873A (ja) * 2002-06-03 2004-01-15 Sony Corp 画像処理装置
WO2007072644A1 (ja) * 2005-12-19 2007-06-28 Matsushita Electric Industrial Co., Ltd. 2次元フィルタ演算装置及び方法
JP2009087252A (ja) * 2007-10-02 2009-04-23 Canon Inc 画像処理装置、画像処理方法及びプログラム
JP2011204208A (ja) * 2010-03-26 2011-10-13 Fujitsu Ltd マルチコアプロセッサ

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000322235A (ja) * 1999-05-07 2000-11-24 Sony Corp 情報処理装置
JP2004013873A (ja) * 2002-06-03 2004-01-15 Sony Corp 画像処理装置
WO2007072644A1 (ja) * 2005-12-19 2007-06-28 Matsushita Electric Industrial Co., Ltd. 2次元フィルタ演算装置及び方法
JP2009087252A (ja) * 2007-10-02 2009-04-23 Canon Inc 画像処理装置、画像処理方法及びプログラム
JP2011204208A (ja) * 2010-03-26 2011-10-13 Fujitsu Ltd マルチコアプロセッサ

Similar Documents

Publication Publication Date Title
Zhou et al. Implementation of H. 264 decoder on general-purpose processors with media instructions
US8243815B2 (en) Systems and methods of video compression deblocking
US9300958B2 (en) Methods and apparatus for motion search refinement in a SIMD array processor
KR101098736B1 (ko) 병렬 처리를 이용하여 1차 연립 방정식의 해를 구하기 위한 디바이스, 시스템 및 방법
US20080037647A1 (en) Methods and Apparatus For Quarter-Pel Refinement In A SIMD Array Processor
JP2008123479A (ja) Simd及びそれのためのメモリアレイ構造
US11790485B2 (en) Apparatus and method for efficient motion estimation
JP2005267615A (ja) 並列演算プロセッサ
JP2009015637A (ja) 演算ユニット及び画像フィルタリング装置
WO2013145221A1 (ja) パイプライン型プロセッサ
US20120030448A1 (en) Single instruction multiple date (simd) processor having a plurality of processing elements interconnected by a ring bus
JP2009123074A (ja) 画像処理装置
JP2013239120A (ja) 画像処理装置
KR101395143B1 (ko) 영상처리의 정수변환 방법 및 정수변환 장치
KR20090102646A (ko) 에이치 닷 264 표준에 근거한 디코더용 움직임 보상기의 보간 연산기 구조
Yong et al. Acceleration of HEVC transform and inverse transform on ARM NEON platform
CN113630601B (zh) 一种仿射运动估计方法、装置、设备及存储介质
JP5813484B2 (ja) Vliwプロセッサと命令構造と命令実行方法
Tran et al. Performance enhancement of motion estimation using SSE2 technology
Liao et al. A reconfigurable high performance asip engine for image signal processing
KR101742765B1 (ko) 인터폴레이터 및 인터폴레이터 픽셀 생성 방법
Lv et al. An efficient NEON-based quarter-pel interpolation method for HEVC
JP5874461B2 (ja) データ処理方法,データ処理プログラム,及び画像圧縮装置
Lee et al. Design of a motion compensation unit for H. 264 decoder using 2-dimensional circular register files
Jia et al. Implementation and optimization of sub-pixel motion estimation on BWDSP platform

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 12873354

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP