WO2020004098A1 - 情報処理装置、情報処理方法およびプログラム - Google Patents

情報処理装置、情報処理方法およびプログラム Download PDF

Info

Publication number
WO2020004098A1
WO2020004098A1 PCT/JP2019/023828 JP2019023828W WO2020004098A1 WO 2020004098 A1 WO2020004098 A1 WO 2020004098A1 JP 2019023828 W JP2019023828 W JP 2019023828W WO 2020004098 A1 WO2020004098 A1 WO 2020004098A1
Authority
WO
WIPO (PCT)
Prior art keywords
pointer
data
write
area
target area
Prior art date
Application number
PCT/JP2019/023828
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 US17/250,245 priority Critical patent/US11520505B2/en
Priority to CN201980042150.XA priority patent/CN112368687A/zh
Publication of WO2020004098A1 publication Critical patent/WO2020004098A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only

Definitions

  • the present disclosure relates to an information processing device, an information processing method, and a program.
  • microprocessors in which circuits for performing calculations, circuits for controlling calculations, input / output circuits, and the like are integrated on a single semiconductor chip are used in various devices.
  • a microprocessor or the like performs an operation, an instruction and data used for the operation are read from an external memory, and the operation is executed based on the read instruction and data. The execution result is written from the general-purpose register to the external memory.
  • the required amount of operation varies depending on the operation target of the microprocessor. For example, an enormous number of calculations may be required depending on the processing target. Therefore, various techniques have been developed as techniques for reducing the amount of computation. For example, a technique for reducing the amount of computation when the amount of computation by convolution is enormous is disclosed (for example, see Patent Document 1). Data required for the operation is read from an external memory to a storage area in the microprocessor.
  • a storage control unit that writes data read from a read target region of an external memory having a plurality of dimensions to a storage region having the plurality of dimensions, and a processing unit that performs a process based on the data of the storage region
  • the storage control unit moves the read target area in the external memory in a first dimensional direction, and in the read target area after the movement, data of a leading end area in the first dimensional direction in the read target area, A first overwriting is performed on a trailing end area of the storage area in a direction corresponding to the first dimension direction, and the processing unit performs a first processing based on the data of the storage area after the first overwriting.
  • An information processing apparatus is provided.
  • the read target area is moved in the first dimensional direction, and the data of the leading end area in the first dimensional direction in the read target area after the movement is moved in the first dimensional direction in the storage area.
  • An information processing method comprising: performing a first overwrite of a rear end area in a corresponding direction; and performing a first process based on data of the storage area after the first overwrite.
  • a computer executes a storage control unit that writes data read from a read target area of an external memory having a plurality of dimensions to a storage area having the plurality of dimensions, and a process based on the data of the storage area.
  • a storage unit wherein the storage control unit moves the read target area in the external memory in the first dimensional direction, and moves the read target area in the first dimensional direction in the read target area after the movement.
  • Data performing a first overwrite on a trailing end area of the storage area in a direction corresponding to the first dimension direction, wherein the processing unit performs a first overwrite based on the data of the storage area after the first overwrite.
  • a program for executing the first process and functioning as an information processing device is provided.
  • FIG. 2 illustrates a configuration example of a general microprocessor.
  • FIG. 3 is a diagram illustrating a program example of image processing by a general microprocessor.
  • FIG. 3 is a diagram illustrating a program example of image processing by a general microprocessor.
  • FIG. 3 is a diagram illustrating a program example of image processing by a general microprocessor.
  • FIG. 1 is a diagram illustrating a configuration example of an information processing device according to an embodiment of the present disclosure.
  • FIG. 3 is a diagram for explaining a flow of a process executed by the information processing apparatus according to the embodiment.
  • FIG. 3 is a diagram for explaining a flow of a process executed by the information processing apparatus according to the embodiment.
  • FIG. 1 is a diagram illustrating a configuration example of an information processing device according to an embodiment of the present disclosure.
  • FIG. 3 is a diagram for explaining a flow of a process executed by the information processing apparatus according to the embodiment.
  • FIG. 3 is a diagram for explaining a flow
  • FIG. 3 is a diagram for explaining a flow of a process executed by the information processing apparatus according to the embodiment.
  • FIG. 3 is a diagram for explaining a flow of a process executed by the information processing apparatus according to the embodiment.
  • FIG. 3 is a diagram for explaining a flow of a process executed by the information processing apparatus according to the embodiment.
  • FIG. 4 is a diagram for describing a definition related to Multidimensional ⁇ Ring ⁇ Buffer ⁇ 1. It is a figure showing an example of a movement of Read @ Pointer. It is a figure showing an example of a motion of Write @ Pointer. It is a figure showing an example of a motion of Write @ Pointer.
  • FIG. 4 is a diagram for describing a definition related to Multidimensional ⁇ Ring ⁇ Buffer ⁇ 1. It is a figure showing an example of a movement of Read @ Pointer. It is a figure showing an example of a motion of Write @ Pointer. It is a figure showing an example of a motion of Write @ Pointer.
  • FIG. 4 is a diagram showing an example of correspondence between a read target area of a target range in an external memory and Multidimension ⁇ Ring ⁇ Buffer ⁇ 1 in which data read from a part or all of the read target area is written in a corresponding location.
  • FIG. 4 is a diagram showing an example of correspondence between a read target area of a target range in an external memory and Multidimension ⁇ Ring ⁇ Buffer ⁇ 1 in which data read from a part or all of the read target area is written in a corresponding location.
  • FIG. 4 is a diagram showing an example of correspondence between a read target area of a target range in an external memory and Multidimension ⁇ Ring ⁇ Buffer ⁇ 1 in which data read from a part or all of the read target area is written in a corresponding location.
  • FIG. 4 is a diagram showing an example of correspondence between a read target area of a target range in an external memory and Multidimension ⁇ Ring ⁇ Buffer ⁇ 1 in which data read from a part or all of the read target area is
  • FIG. 4 is a diagram showing an example of correspondence between a read target area of a target range in an external memory and Multidimension ⁇ Ring ⁇ Buffer ⁇ 1 in which data read from a part or all of the read target area is written in a corresponding location.
  • FIG. 4 is a diagram showing an example of correspondence between a read target area of a target range in an external memory and Multidimension ⁇ Ring ⁇ Buffer ⁇ 1 in which data read from a part or all of the read target area is written in a corresponding location.
  • FIG. 4 is a diagram showing an example of correspondence between a read target area of a target range in an external memory and Multidimension ⁇ Ring ⁇ Buffer ⁇ 1 in which data read from a part or all of the read target area is written in a corresponding location.
  • FIG. 4 is a diagram showing an example of correspondence between a read target area of a target range in an external memory and Multidimension ⁇ Ring ⁇ Buffer ⁇ 1 in which data read from a part or all of the read target area is
  • FIG. 4 is a diagram showing an example of correspondence between a read target area of a target range in an external memory and Multidimension ⁇ Ring ⁇ Buffer ⁇ 1 in which data read from a part or all of the read target area is written in a corresponding location.
  • FIG. 4 is a diagram showing an example of correspondence between a read target area of a target range in an external memory and Multidimension ⁇ Ring ⁇ Buffer ⁇ 1 in which data read from a part or all of the read target area is written in a corresponding location.
  • FIG. 4 is a diagram showing an example of correspondence between a read target area of a target range in an external memory and Multidimension ⁇ Ring ⁇ Buffer ⁇ 1 in which data read from a part or all of the read target area is written in a corresponding location.
  • FIG. 4 is a diagram showing an example of correspondence between a read target area of a target range in an external memory and Multidimension ⁇ Ring ⁇ Buffer ⁇ 1 in which data read from a part or all of the read target area is
  • FIG. 4 is a diagram showing an example of correspondence between a read target area of a target range in an external memory and Multidimension ⁇ Ring ⁇ Buffer ⁇ 1 in which data read from a part or all of the read target area is written in a corresponding location.
  • FIG. 4 is a diagram showing an example of correspondence between a read target area of a target range in an external memory and Multidimension ⁇ Ring ⁇ Buffer ⁇ 1 in which data read from a part or all of the read target area is written in a corresponding location.
  • FIG. 4 is a diagram showing an example of correspondence between a read target area of a target range in an external memory and Multidimension ⁇ Ring ⁇ Buffer ⁇ 1 in which data read from a part or all of the read target area is written in a corresponding location.
  • FIG. 4 is a diagram showing an example of correspondence between a read target area of a target range in an external memory and Multidimension ⁇ Ring ⁇ Buffer ⁇ 1 in which data read from a part or all of the read target area is
  • FIG. 4 is a diagram showing an example of correspondence between a read target area of a target range in an external memory and Multidimension ⁇ Ring ⁇ Buffer ⁇ 1 in which data read from a part or all of the read target area is written in a corresponding location.
  • FIG. 4 is a diagram showing an example of correspondence between a read target area of a target range in an external memory and Multidimension ⁇ Ring ⁇ Buffer ⁇ 1 in which data read from a part or all of the read target area is written in a corresponding location.
  • FIG. 4 is a diagram showing an example of correspondence between a read target area of a target range in an external memory and Multidimension ⁇ Ring ⁇ Buffer ⁇ 1 in which data read from a part or all of the read target area is written in a corresponding location.
  • FIG. 4 is a diagram showing an example of correspondence between a read target area of a target range in an external memory and Multidimension ⁇ Ring ⁇ Buffer ⁇ 1 in which data read from a part or all of the read target area is
  • FIG. 4 is a diagram showing an example of correspondence between a read target area of a target range in an external memory and Multidimension ⁇ Ring ⁇ Buffer ⁇ 1 in which data read from a part or all of the read target area is written in a corresponding location.
  • FIG. 3 is a diagram illustrating definitions of various instructions used in a program for realizing the information processing apparatus according to the embodiment.
  • FIG. 3 is a diagram illustrating an example of a program for realizing the information processing device according to the embodiment.
  • FIG. 3 is a diagram illustrating an example of a program for realizing the information processing device according to the embodiment.
  • FIG. 3 is a diagram illustrating an example of a program for realizing the information processing device according to the embodiment.
  • FIG. 4 is a flowchart illustrating an operation example of the information processing apparatus according to the embodiment.
  • 4 is a flowchart illustrating an operation example of the information processing apparatus according to the embodiment.
  • 4 is a flowchart illustrating an operation example of the information processing apparatus according to the embodiment.
  • FIG. 11 is a diagram illustrating an example in which a buffer to which input data is written has three dimensions.
  • microprocessors in which circuits for performing calculations (arithmetic circuits), circuits for controlling calculations (control circuits), and input / output circuits are integrated on a single semiconductor chip are used in various devices. I have. First, a configuration example of a general microprocessor will be described.
  • FIG. 1 is a diagram showing a configuration example of a general microprocessor.
  • a general microprocessor 80 includes a Load / Store @ Unit 810, a General @ Purpose @ Register 830 (general-purpose register), an ALU (Arithmetic @ Logic @ Unit) 840, an Instruction @ Fact @ Unit @ President ⁇ Unit ⁇ President ⁇ PutOnPutrup8. .
  • the Instruction Fetch Unit 850 fetches (fetches) an instruction from the external memory based on the counter value stored in the Program Counter and Pipeline Control 870. When an instruction is fetched, the counter value is updated to the address of the next instruction in the external memory. Then, Instruction ⁇ Decode ⁇ Unit 860 interprets the instruction, and ALU 840 executes the instruction based on the interpretation result.
  • ⁇ ⁇ ⁇ Data is used to execute instructions. Specifically, the General ⁇ Purpose ⁇ Register 830 reads data from an external memory via the Load / Store Unit 810 according to an instruction, and writes the read data to a storage area (memory in the microprocessor 80). The execution result of the instruction is written to the external memory via the Load / Store Unit 810 by the General / Purpose / Register 830.
  • the same data may be repeatedly used for the operation by the microprocessor 80.
  • image processing and DNN Deep Learning Network
  • the same data is often used repeatedly. Even if the same data is used repeatedly, if it is necessary to read the data from the external memory to the storage area in the microprocessor 80 every time the operation is performed, the time required for rereading the already read data from the external memory is considered. And power consumption is wasted.
  • FIGS. 2 to 4 are diagrams showing examples of programs for image processing by a general microprocessor 80.
  • FIG. Referring to FIGS. 2 to 4, the program Notation @ PG0 is shown.
  • programs PG1 to PG3 are shown.
  • the program PG2 is a program following the program PG1
  • the program PG3 is a program following the program PG2.
  • the General Purchase Register 830 reads the input image data and the 3 ⁇ 3 filter coefficient from the external memory to the storage area in the microprocessor 80 via the Load / Store Unit 810. Then, the ALU 840 generates image data (output image data) to which the filter has been applied, based on the input image data and the 3 ⁇ 3 filter coefficients.
  • the General ⁇ Purpose ⁇ Register 830 writes output image data to an external memory via the Load / Store ⁇ Unit 810.
  • the microprocessor when using the same data as data already read from the external memory and stored in the storage area in the microprocessor, reads data again from the external memory. Omitted. That is, in the embodiment of the present disclosure, data already read from the external memory and stored in the storage area in the microprocessor will be reused. As a result, the number of data fetches to the external memory is reduced, so that it is possible to reduce the time and power consumption for rereading already read data from the external memory.
  • a storage area in a microprocessor is used as a ring buffer having multiple dimensions. According to such a configuration, the amount of data that needs to be read from the external memory can be reduced. Therefore, according to this configuration, the number of instructions for reading data from the external memory can be reduced, and the time and power consumption for reading data from the external memory can be effectively reduced.
  • a storage area in a microprocessor according to an embodiment of the present disclosure may be referred to as a “multidimensional ring buffer”. However, the number of dimensions of “multi-dimensional” is not particularly limited, and may be plural.
  • FIG. 5 is a diagram illustrating a configuration example of an information processing device according to an embodiment of the present disclosure.
  • the information processing apparatus 10 includes a Load / Store Unit 110, a General Purpose Register 130 (a storage control unit), an ALU 140 (a processing unit), an Instruction Fetch Unit 150, an Instruction Decode Unit 160, and an instruction decode unit 160. It has a Program Counter & Pipeline Control 170.
  • the General Purpose Register 130 is different from the general General Register 830 (FIG. 1). Further, the information processing apparatus 10 is different from a general microprocessor 80 in that the information processing apparatus 10 includes Multidimensional ⁇ Ring ⁇ Buffer ⁇ 0 to 2 (120 to 122). Therefore, in the following, among the configurations of the information processing apparatus 10 according to the embodiment of the present disclosure, a configuration different from the configuration of the general microprocessor 80 will be mainly described, and the configuration of the general microprocessor 80 will be described. A detailed description of the same configuration is omitted.
  • the number of dimensions of Multidimensional ⁇ Ring ⁇ Buffer ⁇ 0 to 2 may be plural.
  • the number of dimensions of the external memory may be plural.
  • the dimensions of the Multidimension ⁇ Ring ⁇ Buffer ⁇ 0 to 2 (120 to 122) and the external memory are two-dimensional.
  • the data of the read target area of the external memory is image data.
  • the data in the read target area of the external memory is not limited to image data.
  • the General Purchase Register 130 writes data read from the external memory via the Load / Store Unit 110 to Multidimensional Ring Buffers 0 to 1 (120 to 121) as necessary. Then, the ALU 140 performs a process based on the data of Multidimensional ⁇ Ring ⁇ Buffer ⁇ 0 to 1 (120 to 121).
  • the coefficient data read from the external memory is written in the Multidimension Ring Buffer 0 (120), and the image read from the external memory is written in the Multidimension Ring Buffer 1 (121).
  • a case where data is written as input data will be mainly described.
  • the ALU 140 multiplies the input data thus written and the coefficient data for each pixel and calculates the sum of the multiplication result for each pixel.
  • the data written in Multidimensional Ring Buffers 0 to 1 (120 to 121) is not limited to this example. Further, the processing based on the data of Multidimensional ⁇ Ring ⁇ Buffer ⁇ 0 to 1 (120 to 121) is not limited to such an example. Further, the filter size is not limited to 3 ⁇ 3, and the size of image data is not limited.
  • Multidimensional Ring Buffer ⁇ 0 to 2 (120 to 122) are ring buffers.
  • Multidimensional Ring Buffer 1 (121) needs to be at least a ring buffer. That is, Multidimensional Ring Buffer 0 and / or 2 (120, 122) need not be a ring buffer.
  • the information processing device 10 may be an integrated circuit in which an arithmetic circuit, an arithmetic circuit, an input / output circuit, and the like are integrated on one semiconductor chip.
  • the information processing device 10 may be configured by a processing device such as one or a plurality of CPUs (Central Processing Units). The information processing device 10 realizes its function by executing the program read from the recording medium.
  • CPUs Central Processing Units
  • FIGS. 6 to 10 are diagrams for explaining the flow of the processing executed by the information processing device 10.
  • the external memory 20 stores a coefficient data area 25 storing a plurality of coefficients (coefficient data), a target range 21 storing image data, and a command execution result.
  • a write target area 27 to be written exists.
  • FIGS. 6 to 10 show the Multidimensional Ring Buffers 0 to 2 (120 to 122) and the ALU 140.
  • the corresponding positions of Multidimensional ⁇ Ring ⁇ Buffer # 1 (121) do not necessarily represent the same physical position.
  • the upper left position of Multidimensional ⁇ Ring ⁇ Buffer ⁇ 1 (121) does not always physically represent the same position.
  • the General Purpose Register 130 reads the coefficient data stored in the coefficient data area 25 via the Load / Store Unit 110 and writes it to the Multidimension Ring Ring Buffer 0 (120).
  • the General Purpose Register 130 reads the image data in the thick frame of the target range 21 (the read target area 22) via the Load / Store Unit 110 as input data, and writes the image data in the Multidimensional Ring Ring Buffer 1 (121).
  • Multidimension Ring Buffer 1 (121)
  • General Purpose Register 130 reads each coefficient from Multidimension Ring Buffer 0 (120), and reads each of the coefficients in order from the following: Data is sequentially read from each position of Buffer # 1 (121).
  • the ALU 140 multiplies the coefficient read from the Multidimension Ring Buffer 0 (120) by the input data read from the Multidimension Ring Buffer 1 (121) for each corresponding pixel. Then, the ALU 140 calculates the sum of the multiplication results for each pixel. As shown in FIG. 6, the ALU 140 writes the sum of the multiplication results in the bold frame (write target area) of Multidimensional Ring Buffer 2 (122).
  • FIGS. 7 to 10 are based on the state in which the image data in the read target area 22 (FIG. 6) has already been written as input data in the Multidimension Ring Buffer 1 (121). Then, it is assumed that the image data is read from the external memory 20 next.
  • the General Purchase Register 130 only needs to read from the external memory 20 only the data (difference data) that has not been read yet, of the image data in the read target area 22 (FIG. 7). As a result, it is possible to reduce the time and power consumption for the General ⁇ Purpose ⁇ Register 130 to read the image data from the external memory 20.
  • the General ⁇ Purpose ⁇ Register 130 only needs to newly write the read difference data into a corresponding part of Multidimensional ⁇ Ring ⁇ Buffer ⁇ 1 (121).
  • the newly written portion is shown as a hatched portion of Multidimensional ⁇ Ring ⁇ Buffer ⁇ 1 (121).
  • the ALU 140 multiplies the coefficient data read from the Multidimension Ring Buffer 0 (120) by the input data read from the Multidimension Ring Buffer 1 (121) for each corresponding pixel. Then, the ALU 140 calculates the sum of the multiplication results for each pixel. As shown in FIG. 7, the ALU 140 writes the sum of the multiplication results in the bold frame (write target area) of Multidimensional ⁇ Ring ⁇ Buffer ⁇ 2 (122).
  • FIGS. 8 to 10 can be considered in the same manner as the example shown in FIG. In the example shown in FIG. 8, it is assumed that the read target area 22 is shifted one column to the right from the read target area 22 shown in FIG. At this time, the General ⁇ Purpose ⁇ Register 130 only needs to read, from the external memory 20, only data (difference data) that has not been read out of the image data in the read target area 22 (FIG. 8).
  • the General ⁇ Purpose ⁇ Register 130 only needs to newly write the read difference data into a corresponding part of Multidimensional ⁇ Ring ⁇ Buffer ⁇ 1 (121).
  • the newly written portion is shown as a hatched portion of Multidimension ⁇ Ring ⁇ Buffer ⁇ 1 (121).
  • the ALU 140 multiplies the coefficient data read from the Multidimension Ring Buffer 0 (120) by the input data read from the Multidimension Ring Buffer 1 (121) for each corresponding pixel. Then, the ALU 140 calculates the sum of the multiplication results for each pixel. As illustrated in FIG. 8, the ALU 140 writes the sum of the multiplication results in the bold frame (write target area) of Multidimensional Ring Buffer 2 (122).
  • the General ⁇ Purpose ⁇ Register 130 only needs to newly write the read difference data into a corresponding part of Multidimensional ⁇ Ring ⁇ Buffer ⁇ 1 (121).
  • the newly written portion is shown as a hatched portion of Multidimension ⁇ Ring ⁇ Buffer ⁇ 1 (121).
  • the ALU 140 multiplies the coefficient data read from the Multidimension Ring Buffer 0 (120) by the input data read from the Multidimension Ring Buffer 1 (121) for each corresponding pixel. Then, the ALU 140 calculates the sum of the multiplication results for each pixel. As shown in FIG. 9, the ALU 140 writes the sum of the multiplication results in the bold frame (write target area) of Multidimensional ⁇ Ring ⁇ Buffer ⁇ 2 (122).
  • the General ⁇ Purpose ⁇ Register 130 needs to read only the data (difference data) that has not been read yet from the external memory 20 among the image data in the read target area 22 (FIG. 10).
  • the General ⁇ Purpose ⁇ Register 130 only needs to newly write the read difference data into a corresponding part of Multidimensional ⁇ Ring ⁇ Buffer ⁇ 1 (121).
  • the newly written portion is shown as a hatched portion of Multidimensional ⁇ Ring ⁇ Buffer ⁇ 1 (121).
  • the ALU 140 multiplies the coefficient data read from the Multidimension Ring Buffer 0 (120) by the input data read from the Multidimension Ring Buffer 1 (121) for each corresponding pixel. Then, the ALU 140 calculates the sum of the multiplication results for each pixel. As illustrated in FIG. 10, the ALU 140 writes the sum of the multiplication results in a bold frame (write target area) of Multidimensional Ring Buffer 2 (122).
  • the moving direction of the read target area 22 includes a positive direction of the first dimension, a negative direction of the first dimension, a positive direction of the second dimension, and a positive direction of the second dimension in the external memory 20. There are four negative directions.
  • Each movement direction of the read target area 22 is associated with a different movement of Write @ Pointer in advance, and the Write @ Pointer moves in accordance with the movement previously associated with the movement direction of the read target area 22.
  • the movement of Read @ Pointer is the same as any of the movements of Write @ Pointer.
  • the positive direction of the first dimension is the downward direction of the external memory 20
  • the negative direction of the first dimension is the upward direction of the external memory 20
  • the positive direction of the second dimension is the right direction of the external memory 20. It is mainly assumed that the negative direction of the second dimension is the left direction of the external memory 20. However, each of these four directions may be any direction of the external memory 20.
  • the moving directions of the Write Pointer and the Read Pointer are not limited.
  • FIG. 11 is a diagram for explaining the definition related to Multidimensional Ring Buffer 1 (121).
  • the dimension in Multidimensional ⁇ Ring ⁇ Buffer ⁇ 1 (121) corresponding to the first dimension in external memory 20 is expressed as "1D”
  • the second in external memory 20 is represented.
  • the dimension in Multidimension ⁇ Ring ⁇ Buffer # 1 (121) corresponding to the dimension of is represented as "2D”.
  • the dimension corresponding to the first dimension may be expressed as “1D”
  • the dimension corresponding to the second dimension may be expressed as “2D”.
  • ⁇ X1 to X9 ⁇ are addresses (physical addresses) indicating the physical positions of Multidimensional Ring ⁇ Buffer ⁇ 1 (121).
  • X1 is a physical address indicating the upper left position in Multidimension ⁇ Ring ⁇ Buffer ⁇ 1 (121)
  • X9 is a physical address indicating the lower right position in Multidimension ⁇ Ring ⁇ Buffer ⁇ 1 (121).
  • the origin O is a point where the value of each dimension is 0.
  • point A is a point indicated by the sum of vectors having a length corresponding to the number of elements in each dimension.
  • FIG. 12 is a diagram showing an example of the movement of Read @ Pointer.
  • the Read @ Pointer moves in the 2D positive direction by a predetermined width while being fixed in the 1D direction from the initial position, and moves in the 1D positive direction by a predetermined width when the movement in the 2D positive direction completes. .
  • the movement of the predetermined width is a movement to an adjacent position.
  • the predetermined width is not limited.
  • the reading target area 22 also moves by a predetermined width, and it is assumed that the movement of the predetermined width is a movement to an adjacent position, but the predetermined width is not limited. Thereafter, Read @ Pointer repeats the same movement.
  • FIGS. 13 and 14 are diagrams showing examples of the movement of the Write @ Pointer. As described above, the Write @ Pointer moves according to the movement associated in advance with the movement direction of the read target area 22. Therefore, when there are four directions as the movement directions of the read target area 22, there are four kinds of movements in the Write @ Pointer movement.
  • a logical Write Pointer that moves in association with the movement direction of the read target area 22 “the first direction of the first dimension” may be expressed as “Write Pointer (1D +)”.
  • a logical Write Pointer that moves in a direction associated with the movement direction of the read target area 22 “negative direction of the first dimension” may be expressed as “Write Pointer (1D ⁇ )”.
  • a logical Write Pointer that moves in a direction associated with the moving direction of the read target area 22 “the second dimension positive direction” may be expressed as “Write Pointer (2D +)”.
  • a logical Write @ Pointer that moves in association with the movement direction of the read target area 22 "negative direction of the second dimension” may be expressed as "Write @ Pointer (2D-)”.
  • the movement of Write @ Pointer (1D +) will be described with reference to "Write @ Pointer (1D +)" in FIG.
  • the movement of Write @ Pointer (1D +) is the same as the movement of Read @ Pointer. That is, the Write @ Pointer (1D +) moves in the positive direction of 2D by a predetermined width (moves to an adjacent position) while being fixed in the direction of 1D from the initial position, and moves in the positive direction of 2D once. Then, it moves by a predetermined width in the positive direction of 1D (moves to an adjacent position). Thereafter, Write @ Pointer (1D +) repeats the same movement.
  • the initial position of ⁇ Write ⁇ Pointer (1D +) may not be X1 (origin O). Even in such a case, Write @ Pointer (1D +) may set another position as the initial position instead of X1 and perform the same movement. For example, when the initial position is X3, Write @ Pointer (1D +) may move to X6 instead of returning to X3 after moving in the order of X3, X1, and X2. Then, Write @ Pointer (1D +) may move to X9 after moving in the order of X6, X4, and X5 instead of returning to X6. Then, Write @ Pointer (1D +) may move to X9, X7, and X8 in this order, and then move to X3 instead of returning to X9. Thereafter, Write @ Pointer (1D +) may repeat the same movement.
  • Write @ Pointer (2D +) moves by a predetermined width in the positive direction of 1D (moves to an adjacent position) while being fixed in the direction of 2D from the initial position, and once the movement in the positive direction of 1D completes, Move by a predetermined width in the 2D positive direction (move to an adjacent position). Thereafter, Write @ Pointer (2D +) repeats the same movement.
  • the initial position of ⁇ Write ⁇ Pointer (2D +) may not be X1 (origin O). Even in such a case, Write @ Pointer (2D +) may set another position as the initial position instead of X1 and perform the same movement. For example, if the initial position is X4, Write @ Pointer (2D +) may move to X5 instead of returning to X4 after moving in the order of X4, X7, X1. Then, Write @ Pointer (2D +) may move to X6 instead of returning to X5 after moving in the order of X5, X8, and X2. Then, Write @ Pointer (2D +) may move in the order of X6, X9, and X3, and then move to X4 instead of returning to X6. Thereafter, Write @ Pointer (2D +) may repeat the same movement.
  • Write @ Pointer (1D-) moves in the negative direction of 2D by a predetermined width (moves to an adjacent position) while being fixed in the direction of 1D from the initial position, and when the movement in the negative direction of 2D completes, , Move by a predetermined width in the negative direction of 1D (move to an adjacent position). Thereafter, Write @ Pointer (1D-) repeats the same movement.
  • the initial position of ⁇ Write ⁇ Pointer (1D-) may not be X9 (point A). Even in such a case, Write @ Pointer (1D-) may set another position as the initial position instead of X9 and perform the same movement. For example, when the initial position is X7, Write @ Pointer (1D-) may move in the order of X7, X9, and X8, and then move to X4 instead of returning to X7. Then, Write @ Pointer (1D-) may move in the order of X4, X6, and X5, and then move to X1 instead of returning to X4. Then, Write @ Pointer (1D-) may move to X7 instead of returning to X1 after moving in the order of X1, X3, and X2. Thereafter, Write @ Pointer (1D-) may repeat the same movement.
  • Write @ Pointer (2D-) moves in the negative direction of 1D by a predetermined width (moves to an adjacent position) while being fixed in the direction of 2D from the initial position, and when the movement in the negative direction of 1D completes. Move in the negative direction of 2D by a predetermined width (move to an adjacent position). Thereafter, Write @ Pointer (2D-) repeats the same movement.
  • the initial position of ⁇ Write ⁇ Pointer (2D-) may not be X9 (point A). Even in such a case, the Write @ Pointer (2D-) may set another position as the initial position instead of X9 and perform the same movement. For example, if the initial position is X3, the Write @ Pointer (2D-) may move to X2 instead of returning to X3 after moving in the order of X3, X9, and X6. Then, Write @ Pointer (2D-) may move in the order of X2, X8, and X5, and then move to X1 instead of returning to X2. Then, Write @ Pointer (2D-) may move to X3 instead of returning to X1 after moving in the order of X1, X7, and X4. Thereafter, Write @ Pointer (2D-) may repeat the same movement.
  • the moving direction of the reading target area 22 in the first dimension (first dimensional direction) is different from the positive or negative moving direction of the reading target area 22 in the second dimension (second dimensional direction).
  • a physically different Write @ Pointer is used as each Write @ Pointer.
  • Write @ Pointer (WP1) and Write @ Pointer (WP2) are positioned diagonally when the top row (0th row) is below the bottom row (2nd row) in Multidimensional Ring @ Buffer1 (121). If it is assumed that the leftmost column (0th column) is adjacent to the rightmost column (second column), the lower right corner of a 3 ⁇ 3 rectangular area whose upper left corner is the position indicated by Write @ Pointer (WP1) Is indicated by Write @ Pointer (WP2).
  • FIGS. 15 to 30 show a read target area 22 of the target range 21 in the external memory 20, a Multidimensional Ring Buffer 1 (121) in which data read from a part or all of the read target area 22 is written in a corresponding location. It is a figure which shows the example of correspondence.
  • data stored in each position of the target range 21 is represented as M00 to M55.
  • the read target area 22 moves within the target range 21 one after another from the initial position by a predetermined width (moves to an adjacent position), and moves comprehensively within the target range 21.
  • FIG. 15 shows the initial state, and the read target area 22 moves one after another in the order of FIGS.
  • the initial position of the read target area 22 is at the upper left of the target range 21, but the initial position of the read target area 22 is not limited to the upper left of the target range 21.
  • the data read from part or all of the read target area 22 is written to a corresponding part of Multidimensional Ring Buffer 1 (121).
  • a physical address is shown in parentheses as X1 to X9, and below that, data written to each position is shown. ing.
  • WP1 and WP2 are used for writing data.
  • the ⁇ Multidimensional ⁇ Ring ⁇ Buffer ⁇ 1 (121) shows a Write ⁇ Pointer (WP1) and a Write ⁇ Pointer (WP2).
  • WP1 Write ⁇ Pointer
  • WP2 Write ⁇ Pointer
  • the initial positions of Write @ Pointer (WP1) and Write @ Pointer (WP2) are not limited.
  • the General ⁇ Purpose ⁇ Register 130 reads data from the entire read target area 22 set at the initial position via the Load / Store ⁇ Unit 110.
  • the General ⁇ Purpose ⁇ Register 130 writes the data read from the entire read target area 22 to the Multidimensional ⁇ Ring ⁇ Buffer ⁇ 1 (121).
  • data M00 to M22 read from the read target area 22 are written to X1 to X9.
  • the ALU 140 executes a process based on the data written in the Multidimension Ring Buffer 1 (121) in this manner. Specifically, the ALU 140 sequentially reads the data of X1 to X9 from the Multidimension Ring Buffer 1 (121) using Read Pointer, multiplies the data of X1 to X9 by the coefficient data for each pixel, and multiplies each pixel. Calculate the sum of the results. The ALU 140 writes the execution result of the process (the sum of the multiplication results) to the corresponding write target area of Multidimension ⁇ Ring ⁇ Buffer ⁇ 2 (122).
  • the General ⁇ Purpose ⁇ Register 130 moves the read target area 22.
  • the movement direction of the read target area 22 is the “first direction of the first dimension” in the external memory 20. That is, it is assumed that Write @ Pointer (1D +) corresponding to the positive direction of the first dimension is used as Write @ Pointer. Therefore, Write @ Pointer (WP1) corresponding to Write @ Pointer (1D +) is used.
  • the General ⁇ Purpose ⁇ Register 130 moves the read target area 22 (FIG. 15) by a predetermined width in the positive direction 31-1 of the first dimension (moves to an adjacent position).
  • the data M10 to M22 have already been written in Multidimension ⁇ Ring ⁇ Buffer ⁇ 1 (121). Therefore, the General ⁇ Purpose ⁇ Register 130 needs to newly read only the data (data M30 to M32) in the forward end region of the first dimension in the forward direction 31-1 in the read target region 22 (FIG. 16) after the movement.
  • the tip region has a predetermined width in the first dimension positive direction 31-1.
  • the General ⁇ Purpose ⁇ Register 130 sets the Write ⁇ Pointer (WP1) in the rear end area and overwrites the data (data M30 to M32) in the front end area to the position indicated by the Write ⁇ Pointer (WP1).
  • the General ⁇ Purpose ⁇ Register 130 moves the Write ⁇ Pointer (WP1) in the order of X1, X2, and X3 in accordance with the movement of the Write ⁇ Pointer (1D +), and writes the data (data M30 to M32) of the leading end area to the Write ⁇ Pointer (WP1). Overwrite the positions indicated by.
  • the General ⁇ Purpose ⁇ Register 130 moves the Write ⁇ Pointer (WP1) to X4 according to the movement of the Write ⁇ Pointer (1D +).
  • the General Purchase Register 130 moves the Write Pointer (WP2) to the Write Pointer (WP2) so that the Write Pointer (WP2) is located diagonally to the Write Pointer (WP1) in the Multidimensional Ring Buffer 1 (121).
  • the timing at which the General ⁇ Purpose ⁇ Register 130 moves the Write ⁇ Pointer (WP2) is not limited.
  • the General ⁇ Purpose ⁇ Register 130 may move the Write ⁇ Pointer (WP2) in the order of X9, X1, X2, X3 while moving the Write ⁇ Pointer (WP1) in the order of X1, X2, X3, X4. .
  • WP2 Write @ Pointer
  • WP1 write pointer
  • WP2 Write @ Pointer
  • WP2 is also moved every time Write @ Pointer (WP1) moves, much power consumption will be required.
  • the Write Pointer used between the Write Pointer (WP1) and the Write Pointer (WP2) is not switched until the Write Pointer (WP1) reaches X4.
  • the General ⁇ Purpose ⁇ Register 130 does not move the Write ⁇ Pointer (WP1) until the Write ⁇ Pointer (WP1) reaches X3, and the Write ⁇ Pointer (WP2) at the timing when the Write ⁇ Pointer (WP1) moves from X3 to X4. Can be moved from X9 to X3 at once.
  • FIG. 16 there is shown a state in which data in the rear end area (that is, data of X1, X2, X3) is overwritten with data in the front end area (data M30 to M32).
  • the ALU 140 executes a process (first process) based on the data of the Multidimension Ring Buffer 1 (121) after the overwriting. Specifically, the ALU 140 sequentially reads the data of X1 to X9 from the overwritten Multidimension Ring Buffer 1 (121) using the Read Pointer, multiplies the data of X1 to X9 by the coefficient data for each pixel, and Calculate the sum of the multiplication results for each. The ALU 140 writes the execution result of the process (the sum of the multiplication results) to the corresponding write target area of Multidimension ⁇ Ring ⁇ Buffer ⁇ 2 (122).
  • the General ⁇ Purpose ⁇ Register 130 moves the Write ⁇ Pointer (WP1) to X4 by moving the Write ⁇ Pointer (WP1) to the X4 direction (the 1D positive direction corresponding to the positive direction 31-1 of the first dimension). The pointer is moved to move to 32-1). At the same time, the General ⁇ Purpose ⁇ Register 130 moves the read target area 22 (FIG. 16) in the first dimension positive direction 31-1 (moves to an adjacent position).
  • the General ⁇ Purpose ⁇ Register 130 needs to newly read only the data (data M40 to M42) of the leading end area of the first dimension in the forward direction 31-1 in the read target area 22 (FIG. 17) after the movement.
  • the data at the position indicated by the Write @ Pointer (WP1) after the movement (FIG. 17) (that is, the data of X4, X5, X6) is not used for the next processing.
  • the General ⁇ Purpose ⁇ Register 130 is the data (data M40 to M42) of the leading end area in the read target area 22 (FIG. 17) after the movement, and the Write ⁇ Pointer (WP1) ( Overwriting (second overwriting) is performed on the position indicated by FIG. 17).
  • the General ⁇ Purpose ⁇ Register 130 moves the Write ⁇ Pointer (WP1) in the order of X4, X5, and X6 in accordance with the movement of the Write ⁇ Pointer (1D +), and writes the data (data M40 to M42) of the leading end area to the Write ⁇ Pointer (WP1). Overwrite the positions indicated by.
  • the General ⁇ Purpose ⁇ Register 130 moves the Write ⁇ Pointer (WP1) to X7 according to the movement of the Write ⁇ Pointer (1D +).
  • the General Purpose Register 130 moves the Write Pointer (WP2) so that the Write Pointer (WP2) is positioned diagonally to the Write Pointer (WP1) in the Multidimensional Ring Buffer 1 (121).
  • the timing at which the General ⁇ Purpose ⁇ Register 130 moves the Write ⁇ Pointer (WP2) is not limited as described above.
  • the ALU 140 performs a process (second process) based on the data of the Multidimension Ring Buffer 1 (121) after the overwriting.
  • the second processing may be the same processing as the first processing.
  • the ALU 140 writes the execution result of the second processing to the corresponding write target area of Multidimension ⁇ Ring ⁇ Buffer ⁇ 2 (122).
  • the General ⁇ Purpose ⁇ Register 130 may return the Write ⁇ Pointer (WP1) to the rear end area in the direction (the 1D positive direction 32-1) corresponding to the first dimension positive direction 31-1.
  • the General ⁇ Purpose ⁇ Register 130 may move the reading target area 22 in a second dimension direction different from the first dimension direction.
  • the predetermined condition is not limited.
  • the predetermined condition may be a condition that when the read target area 22 is moved in the direction of the first dimension, the read target area 22 comes out of the target range 21 of the external memory 20.
  • the General ⁇ Purpose ⁇ Register 130 is the data of the leading end area in the second dimension of the read target area 22 after the movement, and is located after the direction corresponding to the second dimension of the Multidimension ⁇ Ring ⁇ Buffer ⁇ 1 (121). The end area may be overwritten (third overwrite).
  • General ⁇ Purpose ⁇ Register 130 sets Write ⁇ Pointer (WP1) as the rear end area in the direction corresponding to the direction of the second dimension, and sets the direction of the second dimension in read target area 22 after the movement. (Third overwrite) may be performed by overwriting the position indicated by Write @ Pointer (WP1) with the data of the leading end area of.
  • the ALU 140 performs a process (third process) based on the data of the Multidimensional ⁇ Ring ⁇ Buffer ⁇ 1 (121) after the third overwriting.
  • the third processing may be the same processing as the first processing.
  • the ALU 140 writes the execution result of the third process in the corresponding write target area of Multidimension ⁇ Ring ⁇ Buffer ⁇ 2 (122).
  • the first execution result is as shown in FIG.
  • the result of the second execution is as shown in FIG. Referring to FIG. 18, similarly to the example shown in FIG. 17, the read target area 22, Write @ Pointer (WP1), and Write @ Pointer (WP2) are moved, and the read target area 22 of the read target area 22 after the movement is moved. In the data (data M50 to M52), the position indicated by Write @ Pointer (WP1) is overwritten.
  • the General ⁇ Purpose ⁇ Register 130 moves the Write ⁇ Pointer (WP1) in the order of X7, X8, and X9 in accordance with the movement of the Write ⁇ Pointer (1D +), and writes the data (data M50 to M52) of the leading end area to the Write ⁇ Pointer (Data M50 to M52). WP1) is overwritten in order.
  • General ⁇ Purpose ⁇ Register 130 moves Write ⁇ Pointer (WP1) to X1 according to the movement of Write ⁇ Pointer (1D +).
  • Write @ Pointer (WP2) is moved (to X9) so as to be located diagonally to Write @ Pointer (WP1).
  • the General ⁇ Purpose ⁇ Register 130 sets the moving direction of the read target area 22 in a second dimension direction (positive direction 31-2) different from the first dimension positive direction 31-1. You can change it.
  • the moving direction of the change destination is not limited.
  • General ⁇ Purpose ⁇ Register 130 changes the logical Write Pointer to be used together with the change of the moving direction of the read target area 22.
  • the General ⁇ Purpose ⁇ Register 130 changes the moving direction of the read target area 22 to the second dimension positive direction 31-2, and thus the Write corresponding to the second dimension positive direction 31-2.
  • the logical Write @ Pointer to be used is changed to Pointer (2D +).
  • the General Purpose Register 130 moves the Write Pointer (WP1) in the order of X1, X4, and X7 in accordance with the movement of the Write Pointer (2D +), and writes the data (data M33, M43, and M53) of the leading end area to the Write Pointer (WP1). Overwrite the positions indicated by. Thus, the third overwriting described above is performed. As shown in FIG. 20, the General ⁇ Purpose ⁇ Register 130 moves the Write ⁇ Pointer (WP1) to X2 according to the motion of the Write ⁇ Pointer (2D +). Note that Write @ Pointer (WP2) is moved (to X7) so as to be located diagonally to Write @ Pointer (WP1).
  • the moving direction of the read target area 22 may be the same as the second dimension positive direction 31-2.
  • the General ⁇ Purpose ⁇ Register 130 continues to move the Write ⁇ Pointer (WP1) in the direction (the 2D positive direction 32-2) corresponding to the second dimension positive direction 31-2 and read the external memory 20 into the external memory 20.
  • the target area 22 is moved in the second dimension positive direction 31-2.
  • the General ⁇ Purpose ⁇ Register 130 is the data of the tip area of the second dimension in the forward direction 31-2 of the read target area 22 after the movement, and performs the fourth overwrite on the position indicated by the Write ⁇ Pointer (WP1) after the movement.
  • ALU 140 then executes a process (fourth process) based on the data of Multidimensional ⁇ Ring ⁇ Buffer ⁇ 1 (121) after the fourth overwriting.
  • the fourth processing may be the same processing as the first processing.
  • the ALU 140 writes the execution result of the fourth process to the corresponding write target area of Multidimensional ⁇ Ring ⁇ Buffer ⁇ 2 (122).
  • the General ⁇ Purpose ⁇ Register 130 changes the moving direction of the read target area 22 from the second dimension positive direction 31-2.
  • the General ⁇ Purpose ⁇ Register 130 changes the moving direction of the read target area 22 to a first dimension direction (negative direction 31-3) different from the second dimension positive direction 31-2. are doing.
  • the moving direction of the change destination is not limited.
  • the ⁇ General ⁇ Purpose ⁇ Register 130 changes the moving direction of the read target area 22 and also changes the logical Write ⁇ Pointer to be used.
  • the General ⁇ Purpose ⁇ Register 130 changes the moving direction of the read target area 22 to the first dimension negative direction 31-3, and therefore, the Write corresponding to the first dimension negative direction 31-3.
  • the logical Write Pointer to be used is changed to Pointer (1D-).
  • the physical Write Pointer to be used is also switched to the Write Pointer (WP2) corresponding to the Write Pointer (1D-).
  • the General ⁇ Purpose ⁇ Register 130 moves the Write ⁇ Pointer (WP2) in the order of X7, X9, and X8 in accordance with the movement of the Write ⁇ Pointer (1D-), and writes the data (data M23 to M21) of the leading end area to the Write ⁇ Pointer (WP2). Overwrite in the order shown.
  • the ALU 140 executes a process based on the data of the Multidimensional ⁇ Ring ⁇ Buffer ⁇ 1 (121) after the overwriting, and writes the execution result to the corresponding write target area of the Multidimensional ⁇ Ring ⁇ Buffer ⁇ 2 (122). As shown in FIG.
  • the General ⁇ Purpose ⁇ Register 130 moves the Write ⁇ Pointer (WP2) to X4 according to the movement of the Write ⁇ Pointer (1D-). Note that Write @ Pointer (WP1) is moved (to X8) so as to be located diagonally to Write @ Pointer (WP2).
  • the General ⁇ Purpose ⁇ Register 130 continuously moves the read target area 22 in the negative direction 31-3 of the first dimension. Then, the General Purge Register 130 moves the Write Pointer (WP2) in the order of X4, X6, and X5 in accordance with the movement of the Write Pointer (1D-), and writes the data (data M13 to M11) of the leading end area to the Write Pointer (WP2). ) Is overwritten in order.
  • the ALU 140 executes a process based on the data of the Multidimensional ⁇ Ring ⁇ Buffer ⁇ 1 (121) after the overwriting, and writes the execution result to the corresponding write target area of the Multidimensional ⁇ Ring ⁇ Buffer ⁇ 2 (122).
  • the General ⁇ Purpose ⁇ Register 130 moves the Write ⁇ Pointer (WP2) to X1 according to the movement of the Write ⁇ Pointer (1D-).
  • WP2 Write @ Pointer
  • the General ⁇ Purpose ⁇ Register 130 is such that the Write ⁇ Pointer (WP1) is positioned diagonally to the Write ⁇ Pointer (WP2) in the Multidimensional ⁇ Ring ⁇ Buffer ⁇ 1 (121). (To X5).
  • the General ⁇ Purpose ⁇ Register 130 continuously moves the read target area 22 in the negative direction 31-3 of the first dimension. Then, the General ⁇ Purpose ⁇ Register 130 moves the Write ⁇ Pointer (WP2) in the order of X1, X3, and X2 in accordance with the movement of the Write ⁇ Pointer (1D-), and writes the data (data M03 to M01) of the leading end area to the Write ⁇ Pointer (WP2). ) Is overwritten in order.
  • the ALU 140 executes a process based on the data of the Multidimensional ⁇ Ring ⁇ Buffer ⁇ 1 (121) after the overwriting, and writes the execution result to the corresponding write target area of the Multidimensional ⁇ Ring ⁇ Buffer ⁇ 2 (122).
  • the General ⁇ Purpose ⁇ Register 130 moves the Write ⁇ Pointer (WP2) to X7 according to the movement of the Write ⁇ Pointer (1D-).
  • WP2 Write @ Pointer
  • the General ⁇ Purpose ⁇ Register 130 is such that the Write ⁇ Pointer (WP1) is positioned diagonally to the Write ⁇ Pointer (WP2) in the Multidimensional ⁇ Ring ⁇ Buffer ⁇ 1 (121). (To X2).
  • the General ⁇ Purpose ⁇ Register 130 moves the read target area 22 in the second dimension positive direction 31-2.
  • the logical Write @ Pointer to be used is changed to Write @ Pointer (2D +) corresponding to the positive direction 31-2 of the second dimension.
  • the physical Write Pointer to be used is also switched to the Write Pointer (WP1) corresponding to the Write Pointer (2D +).
  • the General Purpose Register 130 moves the Write Pointer (WP1) in the order of X2, X5, and X8 in accordance with the movement of the Write Pointer (2D +), and writes the data (data M04, M14, and M24) of the leading end area to the Write Pointer (WP1). Overwrite the positions indicated by.
  • the ALU 140 executes a process based on the data of the Multidimensional ⁇ Ring ⁇ Buffer ⁇ 1 (121) after the overwriting, and writes the execution result to the corresponding write target area of the Multidimensional ⁇ Ring ⁇ Buffer ⁇ 2 (122).
  • the General ⁇ Purpose ⁇ Register 130 moves the Write ⁇ Pointer (WP1) to X3 according to the movement of the Write ⁇ Pointer (2D +).
  • Write @ Pointer (WP1) is moved in the direction corresponding to the positive direction 31-2 in the second dimension (positive direction 32-2 in 2D).
  • General ⁇ Purpose ⁇ Register 130 sets Write ⁇ Pointer (WP2) diagonally to Write ⁇ Pointer (WP1) so that Write ⁇ Pointer (WP2) is located diagonally with Write ⁇ Pointer (WP1) in Multidimensional ⁇ Ring ⁇ Buffer ⁇ 1 (121). Move to X8).
  • the General ⁇ Purpose ⁇ Register 130 moves the read target area 22 in the first dimension positive direction 31-1.
  • the logical Write @ Pointer to be used is changed to Write @ Pointer (1D +) corresponding to the positive direction 31-1 of the first dimension.
  • the General ⁇ Purpose ⁇ Register 130 indicates the data (data M32 to M34) of the leading end area by the Write ⁇ Pointer (WP1) while moving the Write ⁇ Pointer (WP1) in the order of X3, X1, and X2 according to the movement of the Write ⁇ Pointer (1D +). Overwrite the position in order.
  • the ALU 140 executes a process based on the data of the Multidimensional ⁇ Ring ⁇ Buffer ⁇ 1 (121) after the overwriting, and writes the execution result to the corresponding write target area of the Multidimensional ⁇ Ring ⁇ Buffer ⁇ 2 (122).
  • the General ⁇ Purpose ⁇ Register 130 moves the Write ⁇ Pointer (WP1) to X6 according to the movement of the Write ⁇ Pointer (2D +).
  • WP1 is moved in the direction (positive direction 32-1 of 1D) corresponding to the positive direction 31-1 of the first dimension.
  • the General ⁇ Purpose ⁇ Register 130 is such that the Write ⁇ Pointer (WP2) is positioned diagonally to the Write ⁇ Pointer (WP1) in the Multidimensional ⁇ Ring ⁇ Buffer ⁇ 1 (121). (To X2).
  • the General ⁇ Purpose ⁇ Register 130 continuously moves the read target area 22 in the first dimension positive direction 31-1.
  • the General ⁇ Purpose ⁇ Register 130 indicates the data (data M42 to M44) of the leading end area by the Write ⁇ Pointer (WP1) while moving the Write ⁇ Pointer (WP1) in the order of X6, X4, and X5 in accordance with the movement of the Write ⁇ Pointer (1D +). Overwrite the position in order.
  • the ALU 140 executes a process based on the data of the Multidimensional ⁇ Ring ⁇ Buffer ⁇ 1 (121) after the overwriting, and writes the execution result to the corresponding write target area of the Multidimensional ⁇ Ring ⁇ Buffer ⁇ 2 (122).
  • the General ⁇ Purpose ⁇ Register 130 moves the Write ⁇ Pointer (WP1) to X9 according to the movement of the Write ⁇ Pointer (1D +).
  • WP1 is moved in the direction (positive direction 32-1 of 1D) corresponding to the positive direction 31-1 of the first dimension.
  • the General ⁇ Purpose ⁇ Register 130 is such that the Write ⁇ Pointer (WP2) is positioned diagonally to the Write ⁇ Pointer (WP1) in the Multidimensional ⁇ Ring ⁇ Buffer ⁇ 1 (121). (To X5).
  • the General ⁇ Purpose ⁇ Register 130 continues to move the reading target area 22 in the first dimension positive direction 31-1.
  • the General ⁇ Purpose ⁇ Register 130 indicates the data (data M52 to M54) of the leading end area by the Write ⁇ Pointer (WP1) while moving the Write ⁇ Pointer (WP1) in the order of X9, X7, X8 in accordance with the movement of the Write ⁇ Pointer (1D +). Overwrite the position in order.
  • the ALU 140 executes a process based on the data of the Multidimensional ⁇ Ring ⁇ Buffer ⁇ 1 (121) after the overwriting, and writes the execution result to the corresponding write target area of the Multidimensional ⁇ Ring ⁇ Buffer ⁇ 2 (122).
  • the General ⁇ Purpose ⁇ Register 130 moves the Write ⁇ Pointer (WP1) to X3 according to the movement of the Write ⁇ Pointer (1D +).
  • WP1 is moved in the direction (positive direction 32-1 of 1D) corresponding to the positive direction 31-1 of the first dimension.
  • the General ⁇ Purpose ⁇ Register 130 is such that the Write ⁇ Pointer (WP2) is positioned diagonally to the Write ⁇ Pointer (WP1) in the Multidimensional ⁇ Ring ⁇ Buffer ⁇ 1 (121). Move to X8).
  • the General ⁇ Purpose ⁇ Register 130 moves the read target area 22 in the second dimension positive direction 31-2.
  • the logical Write @ Pointer to be used is changed to Write @ Pointer (2D +) corresponding to the positive direction 31-2 of the second dimension.
  • the General ⁇ Purpose ⁇ Register 130 moves the read target area 22 in the second dimension positive direction 31-2.
  • the General Purpose Register 130 moves the Write Pointer (WP1) in the order of X3, X6, and X9 in accordance with the movement of the Write Pointer (2D +), and writes the data (data M35, M45, and M55) in the leading end area to the Write Pointer (WP1). Overwrite the positions indicated by.
  • the ALU 140 executes a process based on the data of the Multidimensional ⁇ Ring ⁇ Buffer ⁇ 1 (121) after the overwriting, and writes the execution result to the corresponding write target area of the Multidimensional ⁇ Ring ⁇ Buffer ⁇ 2 (122).
  • the General ⁇ Purpose ⁇ Register 130 moves the Write ⁇ Pointer (WP1) to X1 according to the movement of the Write ⁇ Pointer (2D +).
  • WP1 is moved in the direction corresponding to the positive direction 31-2 in the second dimension (positive direction 32-2 in 2D).
  • the General ⁇ Purpose ⁇ Register 130 is such that the Write ⁇ Pointer (WP2) is positioned diagonally to the Write ⁇ Pointer (WP1) in the Multidimensional ⁇ Ring ⁇ Buffer ⁇ 1 (121). X9).
  • the General ⁇ Purpose ⁇ Register 130 moves the read target area 22 in the first dimension negative direction 31-3.
  • the logical Write @ Pointer to be used is changed to Write @ Pointer (1D-) corresponding to the negative direction 31-3 of the first dimension.
  • the physical Write Pointer to be used is also switched to the Write Pointer (WP2) corresponding to the Write Pointer (1D-).
  • the General ⁇ Purpose ⁇ Register 130 moves the Write ⁇ Pointer (WP2) in the order of X9, X8, and X7 in accordance with the movement of the Write ⁇ Pointer (1D-), and writes the data (data M25 to M23) of the leading end area to the Write ⁇ Pointer (WP2). Overwrite in the order shown.
  • the ALU 140 executes a process based on the data of the Multidimensional ⁇ Ring ⁇ Buffer ⁇ 1 (121) after the overwriting, and writes the execution result to the corresponding write target area of the Multidimensional ⁇ Ring ⁇ Buffer ⁇ 2 (122).
  • the General ⁇ Purpose ⁇ Register 130 moves the Write ⁇ Pointer (WP2) to X6 according to the movement of the Write ⁇ Pointer (1D-).
  • WP2 Write @ Pointer
  • the General ⁇ Purpose ⁇ Register 130 is such that the Write ⁇ Pointer (WP1) is positioned diagonally to the Write ⁇ Pointer (WP2) in the Multidimensional ⁇ Ring ⁇ Buffer ⁇ 1 (121). (To X7).
  • the General ⁇ Purpose ⁇ Register 130 continuously moves the read target area 22 in the first dimension negative direction 31-3.
  • the General Purpose Register 130 moves the Write Pointer (WP2) in the order of X6, X5, and X4 in accordance with the movement of the Write Pointer (1D-), and writes the data (data M15 to M13) in the leading end area to the Write Pointer (WP2). Overwrite in the order shown.
  • the ALU 140 executes a process based on the data of the Multidimensional ⁇ Ring ⁇ Buffer ⁇ 1 (121) after the overwriting, and writes the execution result to the corresponding write target area of the Multidimensional ⁇ Ring ⁇ Buffer ⁇ 2 (122).
  • the General ⁇ Purpose ⁇ Register 130 moves the Write ⁇ Pointer (WP2) to X3 according to the movement of the Write ⁇ Pointer (1D-).
  • WP2 Write @ Pointer
  • the General ⁇ Purpose ⁇ Register 130 is such that the Write ⁇ Pointer (WP1) is positioned diagonally to the Write ⁇ Pointer (WP2) in the Multidimensional ⁇ Ring ⁇ Buffer ⁇ 1 (121). (To X4).
  • the General ⁇ Purpose ⁇ Register 130 continuously moves the read target area 22 in the negative direction 31-3 of the first dimension.
  • the General Purpose Register 130 moves the Write Pointer (WP2) in the order of X3, X2, and X1 in accordance with the movement of the Write Pointer (1D-), and writes the data (data M05 to M03) of the leading end area to the Write Pointer (WP2). Overwrite in the order shown.
  • the ALU 140 executes a process based on the data of the Multidimensional ⁇ Ring ⁇ Buffer ⁇ 1 (121) after the overwriting, and writes the execution result to the corresponding write target area of the Multidimensional ⁇ Ring ⁇ Buffer ⁇ 2 (122).
  • the execution result corresponding to each position of the read target area 22 that has moved inside the target range 21 of the external memory 20 is written to the Multidimensional ⁇ Ring ⁇ Buffer 2 (122).
  • the General Purpose Register 130 writes the data of the Multidimensional Ring Buffer 2 (122) as output data to the write target area 27 of the external memory 20 via the Load / Store Unit 110.
  • the processing by the information processing device 10 is executed.
  • the processing by the information processing device 10 can be executed based on a program.
  • a program for realizing the processing by the information processing apparatus 10 will be described.
  • the program examples described below correspond to the processing examples shown in FIGS. 15 to 30, they are merely examples of programs for implementing the processing by the information processing apparatus 10. Therefore, the program for realizing the processing by the information processing device 10 is not limited to the program example described below.
  • FIG. 31 is a diagram illustrating definitions of various instructions used in a program for implementing the information processing device 10 according to the embodiment of the present disclosure.
  • Various instructions used in the program can be defined like the instruction definition PG10 shown in FIG. 32 to 34 are diagrams each illustrating an example of a program for realizing the information processing device 10 according to the embodiment of the present disclosure.
  • a program for realizing the information processing apparatus 10 according to the embodiment of the present disclosure can be realized as programs PG21 to PG23 shown in FIGS.
  • FIG. 35 is a diagram illustrating annotations of a flowchart illustrating an operation example of the information processing device 10 according to the embodiment of the present disclosure.
  • 36 to 38 are flowcharts illustrating an operation example of the information processing device 10 according to the embodiment of the present disclosure. Note that the operation examples described below also correspond to the processing examples shown in FIGS. 15 to 30, but are merely examples of the operation of the information processing apparatus 10. Therefore, the operation of the information processing apparatus 10 is not limited to the operation example described below. Each variable appearing in FIGS. 36 to 38 is used as shown in FIG.
  • the General ⁇ Purpose ⁇ Register 130 sets the number of dimensions and the size of the buffer BUF0 from which coefficients are read (S11). Then, the General ⁇ Purpose ⁇ Register 130 loads the coefficients from the external memory to the buffer BUF0 via the Load / Store ⁇ Unit 110 (S12).
  • the ⁇ General ⁇ Purpose ⁇ Register 130 sets the number of dimensions and the size of the buffer BUF1 for reading input data (S13).
  • the General ⁇ Purpose ⁇ Register 130 sets the address pointer of the input data (the address in the external memory from which the input data is read) to R0 (S14).
  • the General ⁇ Purpose ⁇ Register 130 loads the input data from the external memory indicated by the address pointer into the buffer BUF1 (S15).
  • the ⁇ General ⁇ Purpose ⁇ Register 130 sets the number of dimensions and the size of the buffer BUF2 for reading output data (S16).
  • the General ⁇ Purpose ⁇ Register 130 sets the address pointer of the output data (the address in the external memory where the output data is written) to R1 (S17).
  • the General ⁇ Purpose ⁇ Register 130 sets 0 (even number column) in the column even / odd determination register R4 (S19).
  • the General ⁇ Purpose ⁇ Register 130 clears R5 to 0 (S22).
  • the ALU 140 multiplies the buffer BUF0 and the buffer BUF1 for each pixel, adds the multiplication result to R5 (S23), and decrements R3 (S24).
  • the ⁇ General ⁇ Purpose ⁇ Register 130 reads difference data from the external memory using the Write ⁇ Pointer (2D +) (S28).
  • the General ⁇ Purpose ⁇ Register 130 sets 1 (odd column) to R4 when R4 is 0 (that is, when the data read column from the external memory is an even column) ("YES" in S29) (S30). Proceed to S32.
  • General ⁇ Purpose ⁇ Register 130 sets R4 to 0 (even column) when R4 is not 0 (that is, when the data read column from the external memory is an odd column) ("NO" in S29) (S31).
  • S32 When the General ⁇ Purpose ⁇ Register 130 proceeds to S32, it decrements R2 (S32) and returns to S21.
  • General ⁇ Purpose ⁇ Register 130 proceeds to S41 (FIG. 38), when R4 is 0 (that is, when the data read column from the external memory is an even column) ("YES" in S41), and Write ⁇ Pointer ( Using (1D +), difference data is read from the external memory (S42), and the process proceeds to S44.
  • R4 that is, when the data read column from the external memory is an even column
  • S42 Write ⁇ Pointer
  • difference data is read from the external memory
  • S44 the General ⁇ Purpose ⁇ Register 130 uses the Write ⁇ Pointer (1D-) from the external memory.
  • the difference data is read (S43), and the process proceeds to S44.
  • the same data may be used repeatedly in calculations.
  • image processing and DNN Deep Learning Network
  • the same data is often used repeatedly. Even if the same data is used repeatedly, if it is necessary to read the data from the external memory to the ring buffer each time the operation is performed, the time and power consumption for rereading the already read data from the external memory are wasted. become.
  • the information processing device 10 according to the embodiment of the present disclosure is suitable for the case where the same data is repeatedly used.
  • the image size is 6 ⁇ 6
  • the size of each of the coefficient data and the input data is 3 ⁇ 3
  • the size of the output data is 4 ⁇ 4.
  • the number of accesses to the external memory is calculated for each of the case where a general microprocessor is used and the case where the information processing apparatus 10 according to the embodiment of the present disclosure is used.
  • Multidimension ⁇ Ring ⁇ Buffer ⁇ 0 to 1 120 to 121 has two dimensions. That is, in the above example, it is mainly assumed that the buffer into which the input data and the coefficient data are written has two dimensions. However, the buffer into which the input data and the coefficient data are written may have a plurality of dimensions.
  • a buffer into which input data and coefficient data are written has three dimensions.
  • FIG. 39 is a diagram illustrating an example in which a buffer to which input data is written has three dimensions. As shown in FIG. 39, the buffer in which the input data is written has N1, N2, and N3 axes.
  • Write @ Pointer (WP1) is expressed as “Write @ Pointer (+)”
  • Write @ Pointer (WP2) is expressed as “Write @ Pointer (-)”.
  • a logical Write Pointer that moves in the positive direction of the Nm axis is expressed as “Write Pointer (NmD +)”
  • a logical Write Pointer that moves in the negative direction of the Nm axis is expressed as “Write Pointer (NmD ⁇ )”.
  • Write Pointer (-) When Write Pointer (-) is used:-When one Write Pointer (-) moves in the N3 axis direction (that is, when Write Pointer N3D- is used), vectors in the N2 axis direction and the N1 axis direction are used. Overwrites the data of the surface including the point A among the surfaces created by the above with the data read from the external memory.
  • the Write Pointer (-) moves by one in the -N1 axis direction (that is, when the Write Pointer N1D- is used)
  • the point A is included in the plane created by the vectors in the N3 axis direction and the N2 axis direction. Overwrite the surface data with the data read from the external memory.
  • the buffer into which the input data and the coefficient data are written has a plurality of dimensions (n dimensions) (n is an integer of 2 or more).
  • n dimensions is an integer of 2 or more.
  • one Read ⁇ Pointer is used, and two Write ⁇ Pointers (Write ⁇ Pointer (+) and Write ⁇ Pointer) are used.
  • Pointer (-)) may be used.
  • the initial position of Write @ Pointer (+) is the origin O and the initial position of Write @ Pointer (-) is point A, as in the case where the buffer has two dimensions. .
  • a storage control unit that writes data read from a read target area of an external memory having a plurality of dimensions to a storage area having the plurality of dimensions
  • a processing unit that performs processing based on the data in the storage area
  • the storage control unit moves the read target area in the external memory in a first dimensional direction, and, based on the data of the leading end area in the first dimensional direction of the read target area after the movement, reads the storage area.
  • a first overwriting of a rear end area in a direction corresponding to the first dimensional direction is performed,
  • the processing unit executes a first process based on the data in the storage area after the first overwriting, Information processing device.
  • the storage control unit moves the read target area in the external memory by a predetermined width in the first dimension direction,
  • the tip region in the first dimensional direction has the predetermined width in the first dimensional direction,
  • a rear end region in a direction corresponding to the first dimensional direction has the predetermined width in a direction corresponding to the first dimensional direction,
  • the information processing device according to (1) (3)
  • the storage control unit sets a first pointer in a rear end area in a direction corresponding to the first dimension direction, and overwrites a position indicated by the first pointer with data of the front end area, thereby Perform a first overwrite,
  • the information processing device according to (2) is performed by a predetermined width in the first dimension direction,
  • the tip region in the first dimensional direction has the predetermined width in the first dimensional direction
  • a rear end region in a direction corresponding to the first dimensional direction has the predetermined width in a direction corresponding to the first dimensional direction,
  • the information processing device (1).
  • the storage control unit sets a first point
  • the storage control unit includes: a pointer movement that moves the first pointer in a direction corresponding to the first dimension direction; and an area movement that moves the read target area in the external memory in the first dimension direction. Performing a second overwrite on the position indicated by the first pointer after the movement with the data of the leading end area in the first dimensional direction in the read target area after the movement, The processing unit executes a second process based on the data in the storage area after the second overwriting, The information processing device according to (3). (5) The storage control unit moves the first pointer by a predetermined width in a direction corresponding to the first dimension direction. The information processing device according to (4).
  • a combination of the pointer movement, the area movement, the second overwriting, and the second processing is executed one or more times, The information processing device according to (4) or (5).
  • the storage control unit may perform the first pointer movement after the combination of the pointer movement, the area movement, the second overwriting, and the second processing is performed once or more times, and then further perform the pointer movement. If the first pointer moves outside the storage area when the pointer is moved, the first pointer is returned to a rear end area in a direction corresponding to the first dimensional direction.
  • the information processing device according to (6).
  • the storage control unit may satisfy a predetermined condition when performing the area movement further.
  • the read target area is moved in a second dimensional direction different from the first dimensional direction
  • the data of the leading end area in the second dimensional direction in the read target area after the movement is: Performing a third overwriting of a trailing end area of the storage area in a direction corresponding to the second dimension direction;
  • the processing unit executes a third process based on the data in the storage area after the third overwriting,
  • the information processing device according to (6) or (7).
  • the predetermined condition is a condition that when the read target area is moved in the first dimension direction, the read target area comes out of a target range of the external memory.
  • the information processing device according to (8).
  • the storage control unit sets a second pointer in a rear end area in a direction corresponding to the second dimensional direction, and sets a second pointer in a position indicated by the second pointer in data of a front end area in the second dimensional direction. Performing the third overwriting by overwriting; The information processing device according to (8) or (9).
  • (11) The storage control unit moves the second pointer in a direction corresponding to the second dimensional direction, and moves the read target area in the external memory in the second dimensional direction.
  • a fourth overwrite is performed on the position indicated by the second pointer after the movement with the data of the tip area in the second dimension direction in the read target area,
  • the processing unit executes a fourth process based on the data in the storage area after the fourth overwriting,
  • the storage control unit writes an execution result of a process based on data in the storage area and an execution result of the first process to a write target area of the external memory.
  • the information processing device according to any one of (1) to (13).
  • the plurality of dimensions is two-dimensional;
  • the data of the read target area is image data.
  • the information processing apparatus according to any one of (1) to (14).
  • the process based on the data in the storage area is a process of multiplying the image data and the coefficient data for each pixel and calculating a sum of a multiplication result for each pixel.
  • An information processing method including: (18) Computer A storage control unit that writes data read from a read target area of an external memory having a plurality of dimensions to a storage area having the plurality of dimensions, A processing unit that performs processing based on the data in the storage area, The storage control unit moves the read target area in the external memory in a first dimensional direction, and, based on the data of the leading end area in the first dimensional direction of the read target area after the movement, reads the storage area. A first overwriting of a rear end area in a direction corresponding to the first dimensional direction is performed, The processing unit executes a first process based on the data in the storage area after the first overwriting, A program for functioning as an information processing device.
  • Information processing device 110 Load / Store Unit 130 General Purpose Register (Storage control unit) 140 ALU (processing unit) 150 Instruction Fetch Unit 160 Instruction Decode Unit 170 Program Counter & Pipeline Control Reference Signs List 20 external memory 21 target range 22 read target area 25 coefficient data area 27 write target area

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Image Processing (AREA)
  • Memory System (AREA)

Abstract

演算に掛かる時間および消費電力を低減させることを可能とする技術が提供されることが望まれる。複数次元を有する外部メモリの読み込み対象領域から読み込んだデータを、前記複数次元を有する記憶領域に書き込む記憶制御部(130)と、前記記憶領域のデータに基づく処理を実行する処理部(140)と、を備え、前記記憶制御部は、前記外部メモリにおいて前記読み込み対象領域を第1の次元方向に移動させ、移動後の前記読み込み対象領域のうち前記第1の次元方向の先端領域のデータで、前記記憶領域のうち前記第1の次元方向に対応する方向の後端領域の第1の上書きを行い、前記処理部は、前記第1の上書き後の前記記憶領域のデータに基づく第1の処理を実行する、情報処理装置(10)が提供される。

Description

情報処理装置、情報処理方法およびプログラム
 本開示は、情報処理装置、情報処理方法およびプログラムに関する。
 近年、演算を行う回路、演算を制御する回路、入出力回路などが1つの半導体チップ上に集積化された集積回路(マイクロプロセッサ)が様々な機器において用いられている。マイクロプロセッサなどが演算を行う場合、外部メモリから命令と演算に使用されるデータとを読み込み、読み込んだ命令とデータとに基づいて演算を実行する。実行結果は、汎用レジスタから外部メモリに書き込まれる。
 マイクロプロセッサによる演算対象によって必要な演算量は様々である。例えば、処理対象によっては膨大な数の演算が必要な場合がある。そこで、演算量を削減する技術として様々な技術が開発されている。例えば、畳み込み演算による演算量が膨大である場合に、その演算量を削減する技術が開示されている(例えば、特許文献1参照)。演算に必要なデータは、外部メモリからマイクロプロセッサ内の記憶領域に読み込まれる。
特開2017-79017号公報
 しかし、外部メモリからマイクロプロセッサ内の記憶領域へのデータの読み込みには、時間および消費電力が掛かる。そこで、演算に掛かる時間および消費電力を低減させることを可能とする技術が提供されることが望まれる。
 本開示によれば、複数次元を有する外部メモリの読み込み対象領域から読み込んだデータを、前記複数次元を有する記憶領域に書き込む記憶制御部と、前記記憶領域のデータに基づく処理を実行する処理部と、を備え、前記記憶制御部は、前記外部メモリにおいて前記読み込み対象領域を第1の次元方向に移動させ、移動後の前記読み込み対象領域のうち前記第1の次元方向の先端領域のデータで、前記記憶領域のうち前記第1の次元方向に対応する方向の後端領域の第1の上書きを行い、前記処理部は、前記第1の上書き後の前記記憶領域のデータに基づく第1の処理を実行する、情報処理装置が提供される。
 本開示によれば、複数次元を有する外部メモリの読み込み対象領域から読み込んだデータを、前記複数次元を有する記憶領域に書き込むことと、前記記憶領域のデータに基づく処理を実行することと、前記外部メモリにおいて前記読み込み対象領域を第1の次元方向に移動させ、移動後の前記読み込み対象領域のうち前記第1の次元方向の先端領域のデータで、前記記憶領域のうち前記第1の次元方向に対応する方向の後端領域の第1の上書きを行うことと、前記第1の上書き後の前記記憶領域のデータに基づく第1の処理を実行することと、を含む、情報処理方法が提供される。
 本開示によれば、コンピュータを、複数次元を有する外部メモリの読み込み対象領域から読み込んだデータを、前記複数次元を有する記憶領域に書き込む記憶制御部と、前記記憶領域のデータに基づく処理を実行する処理部と、を備え、前記記憶制御部は、前記外部メモリにおいて前記読み込み対象領域を第1の次元方向に移動させ、移動後の前記読み込み対象領域のうち前記第1の次元方向の先端領域のデータで、前記記憶領域のうち前記第1の次元方向に対応する方向の後端領域の第1の上書きを行い、前記処理部は、前記第1の上書き後の前記記憶領域のデータに基づく第1の処理を実行する、情報処理装置として機能させるためのプログラムが提供される。
 本開示によれば、演算に掛かる時間および消費電力を低減させることを可能とする技術が提供される。なお、上記の効果は必ずしも限定的なものではなく、上記の効果とともに、または上記の効果に代えて、本明細書に示されたいずれかの効果、または本明細書から把握され得る他の効果が奏されてもよい。
一般的なマイクロプロセッサの構成例を示す図である。 一般的なマイクロプロセッサによる画像処理のプログラム例を示す図である。 一般的なマイクロプロセッサによる画像処理のプログラム例を示す図である。 一般的なマイクロプロセッサによる画像処理のプログラム例を示す図である。 本開示の実施形態に係る情報処理装置の構成例を示す図である。 同実施形態に係る情報処理装置が実行する処理の流れを説明するための図である。 同実施形態に係る情報処理装置が実行する処理の流れを説明するための図である。 同実施形態に係る情報処理装置が実行する処理の流れを説明するための図である。 同実施形態に係る情報処理装置が実行する処理の流れを説明するための図である。 同実施形態に係る情報処理装置が実行する処理の流れを説明するための図である。 Multidimensional Ring Buffer 1に関する定義を説明するための図である。 Read Pointerの動きの例を示す図である。 Write Pointerの動きの例を示す図である。 Write Pointerの動きの例を示す図である。 外部メモリにおける対象範囲の読み込み対象領域と、読み込み対象領域の一部または全部から読み込まれたデータが該当箇所に書き込まれたMultidimensional Ring Buffer 1との対応例を示す図である。 外部メモリにおける対象範囲の読み込み対象領域と、読み込み対象領域の一部または全部から読み込まれたデータが該当箇所に書き込まれたMultidimensional Ring Buffer 1との対応例を示す図である。 外部メモリにおける対象範囲の読み込み対象領域と、読み込み対象領域の一部または全部から読み込まれたデータが該当箇所に書き込まれたMultidimensional Ring Buffer 1との対応例を示す図である。 外部メモリにおける対象範囲の読み込み対象領域と、読み込み対象領域の一部または全部から読み込まれたデータが該当箇所に書き込まれたMultidimensional Ring Buffer 1との対応例を示す図である。 外部メモリにおける対象範囲の読み込み対象領域と、読み込み対象領域の一部または全部から読み込まれたデータが該当箇所に書き込まれたMultidimensional Ring Buffer 1との対応例を示す図である。 外部メモリにおける対象範囲の読み込み対象領域と、読み込み対象領域の一部または全部から読み込まれたデータが該当箇所に書き込まれたMultidimensional Ring Buffer 1との対応例を示す図である。 外部メモリにおける対象範囲の読み込み対象領域と、読み込み対象領域の一部または全部から読み込まれたデータが該当箇所に書き込まれたMultidimensional Ring Buffer 1との対応例を示す図である。 外部メモリにおける対象範囲の読み込み対象領域と、読み込み対象領域の一部または全部から読み込まれたデータが該当箇所に書き込まれたMultidimensional Ring Buffer 1との対応例を示す図である。 外部メモリにおける対象範囲の読み込み対象領域と、読み込み対象領域の一部または全部から読み込まれたデータが該当箇所に書き込まれたMultidimensional Ring Buffer 1との対応例を示す図である。 外部メモリにおける対象範囲の読み込み対象領域と、読み込み対象領域の一部または全部から読み込まれたデータが該当箇所に書き込まれたMultidimensional Ring Buffer 1との対応例を示す図である。 外部メモリにおける対象範囲の読み込み対象領域と、読み込み対象領域の一部または全部から読み込まれたデータが該当箇所に書き込まれたMultidimensional Ring Buffer 1との対応例を示す図である。 外部メモリにおける対象範囲の読み込み対象領域と、読み込み対象領域の一部または全部から読み込まれたデータが該当箇所に書き込まれたMultidimensional Ring Buffer 1との対応例を示す図である。 外部メモリにおける対象範囲の読み込み対象領域と、読み込み対象領域の一部または全部から読み込まれたデータが該当箇所に書き込まれたMultidimensional Ring Buffer 1との対応例を示す図である。 外部メモリにおける対象範囲の読み込み対象領域と、読み込み対象領域の一部または全部から読み込まれたデータが該当箇所に書き込まれたMultidimensional Ring Buffer 1との対応例を示す図である。 外部メモリにおける対象範囲の読み込み対象領域と、読み込み対象領域の一部または全部から読み込まれたデータが該当箇所に書き込まれたMultidimensional Ring Buffer 1との対応例を示す図である。 外部メモリにおける対象範囲の読み込み対象領域と、読み込み対象領域の一部または全部から読み込まれたデータが該当箇所に書き込まれたMultidimensional Ring Buffer 1との対応例を示す図である。 同実施形態に係る情報処理装置を実現するためのプログラムにおいて使用される各種命令の定義を示す図である。 同実施形態に係る情報処理装置を実現するためのプログラムの例を示す図である。 同実施形態に係る情報処理装置を実現するためのプログラムの例を示す図である。 同実施形態に係る情報処理装置を実現するためのプログラムの例を示す図である。 同実施形態に係る情報処理装置の動作例を示すフローチャートの注釈を示す図である。 同実施形態に係る情報処理装置の動作例を示すフローチャートである。 同実施形態に係る情報処理装置の動作例を示すフローチャートである。 同実施形態に係る情報処理装置の動作例を示すフローチャートである。 入力データが書き込まれるバッファが3次元を有する場合の例を示す図である。
 以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
 また、本明細書および図面において、実質的に同一の機能構成を有する複数の構成要素を、同一の符号の後に異なる数字を付して区別する場合もある。ただし、実質的に同一の機能構成を有する複数の構成要素の各々を特に区別する必要がない場合、同一符号のみを付する。
 なお、説明は以下の順序で行うものとする。
 0.背景
 1.本開示の実施形態
  1.1.システム構成例
  1.2.情報処理装置の機能詳細
   1.2.1.処理の流れ
   1.2.2.ポインタの動き
   1.2.3.具体的な処理例
   1.2.4.プログラム例
   1.2.5.動作例
 2.効果
 3.変形例
 <0.背景>
 近年、演算を行う回路(演算回路)、演算を制御する回路(制御回路)、入出力回路などが1つの半導体チップ上に集積化された集積回路(マイクロプロセッサ)が様々な機器において用いられている。まず、一般的なマイクロプロセッサの構成例について説明する。
 図1は、一般的なマイクロプロセッサの構成例を示す図である。図1に示されるように、一般的なマイクロプロセッサ80は、Road/Store Unit810、General Purpose Register830(汎用レジスタ)、ALU(Arithmetic Logic Unit)840、Instruction Fetch Unit850、Instruction Decode Unit860、Program Counter&Pipeline Control870を備える。
 一般的なマイクロプロセッサ80によって演算が行われる場合、Instruction Fetch Unit850は、Program Counter&Pipeline Control870に格納されているカウンタ値に基づいて、外部メモリから命令を取り出す(フェッチする)。命令が取り出されると、カウンタ値が外部メモリにおける次の命令のアドレスに更新される。そして、Instruction Decode Unit860は、命令を解釈し、ALU840は、解釈結果に基づいて命令を実行する。
 命令の実行には、データが使用される。具体的に、General Purpose Register830は、命令に従って、Road/Store Unit810を介して外部メモリからデータを読み込み、読み込んだデータを記憶領域(マイクロプロセッサ80内のメモリ)に書き込む。命令の実行結果は、General Purpose Register830によってRoad/Store Unit810を介して外部メモリに書き込まれる。
 ここで、外部メモリからマイクロプロセッサ80内の記憶領域へのデータの読み込みには、時間および消費電力が掛かる。そこで、本開示の実施形態では、演算に掛かる時間および消費電力を低減させることを可能とする技術について主に説明する。
 より具体的に、マイクロプロセッサ80による演算には、同じデータが繰り返し使用される場合がある。例えば、画像処理、DNN(Deep Learning Network)などにおいては、同じデータが繰り返し使用される場合が多い。繰り返し同じデータが使用される場合であっても、演算のたびに外部メモリからマイクロプロセッサ80内の記憶領域にデータを読み込む必要があるとすると、既に読み込んだデータを外部メモリから再度読み込むための時間および消費電力が無駄になる。
 図2~図4は、一般的なマイクロプロセッサ80による画像処理のプログラム例を示す図である。図2~図4を参照すると、プログラムのNotation PG0が示されている。また、図2~図4を参照すると、プログラムPG1~PG3が示されている。プログラムPG2は、プログラムPG1に続くプログラムであり、プログラムPG3は、プログラムPG2に続くプログラムである。
 プログラムPG1~PG3では、General Purpose Register830は、Road/Store Unit810を介して、外部メモリからマイクロプロセッサ80内の記憶領域に入力画像データと3×3のフィルタ係数とを読み込む。そして、ALU840は、入力画像データと3×3のフィルタ係数とに基づいて、フィルタ適用後の画像データ(出力画像データ)を生成する。General Purpose Register830は、Road/Store Unit810を介して、出力画像データを外部メモリに書き込む。
 しかし、プログラムPG1~PG3では、繰り返し同じ(入力画像データの)画素データが使用される場合であっても、演算のたびに外部メモリからマイクロプロセッサ80内の記憶領域に画素データを読み込んでいる。そのため、プログラムPG1~PG3では、外部メモリから画素データを読み込む命令が多くなっている。したがって、プログラムPG1~PG3では、既に読み込んだ画素データを外部メモリから再度読み込むための時間および消費電力が無駄になっている。
 本開示の実施形態に係るマイクロプロセッサは、既に外部メモリから読み込まれてマイクロプロセッサ内の記憶領域にストアされているデータと同じデータを使用する場合には、外部メモリからの再度のデータの読み込みを省略する。すなわち、本開示の実施形態では、既に外部メモリから読み込まれてマイクロプロセッサ内の記憶領域にストアされているデータを再利用することにする。これによって、外部メモリへのデータフェッチ回数が低減されるため、既に読み込んだデータを外部メモリから再度読み込むための時間および消費電力を低減することが可能である。
 より詳細に、本開示の実施形態では、マイクロプロセッサ内の記憶領域を、複数次元を有するリングバッファとして使用する。かかる構成によれば、外部メモリからの読み込みが必要なデータ量を小さくすることが可能となる。したがって、かかる構成によれば、外部メモリからデータを読み込む命令を少なくし、外部メモリからデータを読み込むための時間および消費電力を効果的に低減することが可能となる。なお、以下では、本開示の実施形態に係るマイクロプロセッサ内の記憶領域を「多次元リングバッファ」と称する場合がある。しかし、「多次元」の次元数は特に限定されず、複数であればよい。
 以上、本開示の実施形態の背景について説明した。
 <1.本開示の実施形態>
 [1.1.システム構成例]
 続いて、本開示の実施形態に係る情報処理装置(例えば、マイクロプロセッサ)の構成例について説明する。図5は、本開示の実施形態に係る情報処理装置の構成例を示す図である。図5に示されたように、本開示の実施形態に係る情報処理装置10は、Road/Store Unit110、General Purpose Register130(記憶制御部)、ALU140(処理部)、Instruction Fetch Unit150、Instruction Decode Unit160、Program Counter&Pipeline Control170を備える。
 これらの構成のうち、General Purpose Register130は、一般的なGeneral Purpose Register830(図1)と異なる。さらに、情報処理装置10は、Multidimensional Ring Buffer 0~2(120~122)を備える点において、一般的なマイクロプロセッサ80と異なる。したがって、以下では、本開示の実施形態に係る情報処理装置10が有する構成のうち、一般的なマイクロプロセッサ80が有する構成と異なる構成について主に説明し、一般的なマイクロプロセッサ80が有する構成と同じ構成についての詳細な説明は省略する。
 なお、上記したように、Multidimensional Ring Buffer 0~2(120~122)の次元数は複数であればよい。そして、外部メモリの次元数も複数であればよい。以下では、説明を簡便にするため、Multidimensional Ring Buffer 0~2(120~122)および外部メモリそれぞれの次元が2次元である場合を主に説明する。そして、外部メモリの読み込み対象領域のデータが、画像データである場合を想定する。しかし、外部メモリの読み込み対象領域のデータは、画像データに限定されない。
 また、General Purpose Register130は、Road/Store Unit110を介して、外部メモリから読み込んだデータを、必要に応じてMultidimensional Ring Buffer 0~1(120~121)に書き込む。そして、ALU140は、Multidimensional Ring Buffer 0~1(120~121)のデータに基づく処理を実行する。
 より詳細に、本開示の実施形態では、Multidimensional Ring Buffer 0(120)には、外部メモリから読み込まれた係数データが書き込まれ、Multidimensional Ring Buffer 1(121)には、外部メモリから読み込まれた画像データが入力データとして書き込まれる場合を主に説明する。そして、本開示の実施形態では、ALU140は、このようにして書き込まれた入力データと係数データとを画素ごとに乗算し、画素ごとの乗算結果の和を算出する場合を主に説明する。
 しかし、Multidimensional Ring Buffer 0~1(120~121)に書き込まれるデータは、かかる例に限定されない。また、Multidimensional Ring Buffer 0~1(120~121)のデータに基づく処理も、かかる例に限定されない。また、フィルタサイズは、3×3に限定されないし、画像データのサイズも限定されない。
 なお、本開示の実施形態では、Multidimensional Ring Buffer 0~2(120~122)のすべてがリングバッファである場合を主に想定する。しかし、Multidimensional Ring Buffer 1(121)だけが少なくともリングバッファであればよい。すなわち、Multidimensional Ring Buffer 0、2(120、122)の両方またはいずれか一方は、リングバッファでなくてもよい。
 また、上記したように、情報処理装置10は、演算回路、演算回路、入出力回路などが1つの半導体チップ上に集積化された集積回路であってよい。例えば、情報処理装置10は、1または複数のCPU(Central Processing Unit;中央演算処理装置)などといった処理装置によって構成されてよい。情報処理装置10は、記録媒体から読み出したプログラムを実行することによって、その機能を実現させる。
 以上、本開示の実施形態に係る情報処理装置10の構成例について説明した。
 [1.2.情報処理装置の機能詳細]
 続いて、情報処理装置10の機能詳細について説明する。
  (1.2.1.処理の流れ)
 まず、情報処理装置10が実行する処理の流れについて説明する。図6~図10は、情報処理装置10が実行する処理の流れを説明するための図である。図6~図10に示されるように、外部メモリ20には、複数の係数(係数データ)が格納されている係数データ領域25、画像データが格納されている対象範囲21、命令の実行結果が書き込まれる書き込み対象領域27が存在している。その他、図6~図10には、Multidimensional Ring Buffer 0~2(120~122)、ALU140が示されている。
 なお、図6~図10に示された例において、Multidimensional Ring Buffer 1(121)の対応する位置が、物理的に同じ位置を表しているとは限らない。例えば、図6に示された例と図7に示された例とにおいて、Multidimensional Ring Buffer 1(121)の左上の位置が、物理的に同じ位置を表しているとは限らない。
 図6に示されたように、General Purpose Register130は、係数データ領域25に格納されている係数データを、Road/Store Unit110を介して読み込み、Multidimensional Ring Buffer 0(120)に書き込む。また、General Purpose Register130は、対象範囲21の太枠内(読み込み対象領域22)の画像データを入力データとしてRoad/Store Unit110を介して読み込み、Multidimensional Ring Buffer 1(121)に書き込む。
 また、図6に示されたように、Multidimensional Ring Buffer 1(121)への入力データの書き込みが終わると、General Purpose Register130は、Multidimensional Ring Buffer 0(120)から各係数を順に読み込むとともに、Multidimensional Ring Buffer 1(121)の各位置から順にデータを読み込む。
 ALU140は、Multidimensional Ring Buffer 0(120)から読み込まれた係数と、Multidimensional Ring Buffer 1(121)から読み込まれた入力データとを、対応する画素ごとに乗算する。そして、ALU140は、画素ごとの乗算結果の和を算出する。図6に示されたように、ALU140は、乗算結果の和を、Multidimensional Ring Buffer 2(122)の太枠内(書き込み対象領域)に書き込む。
 図7~図10では、このようにしてMultidimensional Ring Buffer 1(121)に、読み込み対象領域22(図6)内の画像データが入力データとして既に書き込まれている状態を基準とする。そして、次に画像データが外部メモリ20から読み出される場合を想定する。
 図7に示された例では、読み込み対象領域22が、図6に示された読み込み対象領域22よりも1列左にシフトしている場合を想定する。このとき、General Purpose Register130は、読み込み対象領域22(図7)の画像データのすべてを外部メモリ20から読み込まなくてよい。
 より詳細に、General Purpose Register130は、読み込み対象領域22(図7)の画像データのうち、まだ読み込まれていないデータ(差分データ)だけを外部メモリ20から読み込めばよい。これによって、General Purpose Register130が外部メモリ20から画像データを読み込むための時間および消費電力を低減することが可能である。
 そして、General Purpose Register130は、読み込んだ差分データだけを、新たにMultidimensional Ring Buffer 1(121)の該当箇所に書き込めばよい。図7には、新たに書き込まれた部分が、Multidimensional Ring Buffer 1(121)の網掛け部分として示されている。
 ALU140は、Multidimensional Ring Buffer 0(120)から読み込まれた係数データと、Multidimensional Ring Buffer 1(121)から読み込まれた入力データとを、対応する画素ごとに乗算し直す。そして、ALU140は、画素ごとの乗算結果の和を算出する。図7に示されたように、ALU140は、乗算結果の和を、Multidimensional Ring Buffer 2(122)の太枠内(書き込み対象領域)に書き込む。
 図8~図10に示された例においても、図7に示された例と同様に考えることが可能である。図8に示された例では、読み込み対象領域22が、図6に示された読み込み対象領域22よりも1列右にシフトしている場合を想定する。このとき、General Purpose Register130は、読み込み対象領域22(図8)の画像データのうち、まだ読み込まれていないデータ(差分データ)だけを外部メモリ20から読み込めばよい。
 そして、General Purpose Register130は、読み込んだ差分データだけを、新たにMultidimensional Ring Buffer 1(121)の該当箇所に書き込めばよい。図8には、新たに書き込まれた部分が、Multidimensional Ring Buffer 1(121)の網掛け部分として示されている。
 ALU140は、Multidimensional Ring Buffer 0(120)から読み込まれた係数データと、Multidimensional Ring Buffer 1(121)から読み込まれた入力データとを、対応する画素ごとに乗算し直す。そして、ALU140は、画素ごとの乗算結果の和を算出する。図8に示されたように、ALU140は、乗算結果の和を、Multidimensional Ring Buffer 2(122)の太枠内(書き込み対象領域)に書き込む。
 図9に示された例では、読み込み対象領域22が、図6に示された読み込み対象領域22よりも1列下にシフトしている場合を想定する。このとき、General Purpose Register130は、読み込み対象領域22(図9)の画像データのうち、まだ読み込まれていないデータ(差分データ)だけを外部メモリ20から読み込めばよい。
 そして、General Purpose Register130は、読み込んだ差分データだけを、新たにMultidimensional Ring Buffer 1(121)の該当箇所に書き込めばよい。図9には、新たに書き込まれた部分が、Multidimensional Ring Buffer 1(121)の網掛け部分として示されている。
 ALU140は、Multidimensional Ring Buffer 0(120)から読み込まれた係数データと、Multidimensional Ring Buffer 1(121)から読み込まれた入力データとを、対応する画素ごとに乗算し直す。そして、ALU140は、画素ごとの乗算結果の和を算出する。図9に示されたように、ALU140は、乗算結果の和を、Multidimensional Ring Buffer 2(122)の太枠内(書き込み対象領域)に書き込む。
 図10に示された例では、読み込み対象領域22が、図6に示された読み込み対象領域22よりも1列上にシフトしている場合を想定する。このとき、General Purpose Register130は、読み込み対象領域22(図10)の画像データのうち、まだ読み込まれていないデータ(差分データ)だけを外部メモリ20から読み込めばよい。
 そして、General Purpose Register130は、読み込んだ差分データだけを、新たにMultidimensional Ring Buffer 1(121)の該当箇所に書き込めばよい。図10には、新たに書き込まれた部分が、Multidimensional Ring Buffer 1(121)の網掛け部分として示されている。
 ALU140は、Multidimensional Ring Buffer 0(120)から読み込まれた係数データと、Multidimensional Ring Buffer 1(121)から読み込まれた入力データとを、対応する画素ごとに乗算し直す。そして、ALU140は、画素ごとの乗算結果の和を算出する。図10に示されたように、ALU140は、乗算結果の和を、Multidimensional Ring Buffer 2(122)の太枠内(書き込み対象領域)に書き込む。
 Multidimensional Ring Buffer 2(122)の各位置に命令の実行結果が書き込まれると、General Purpose Register130によって、Multidimensional Ring Buffer 2(122)から実行結果が読み込まれる。そして、General Purpose Register130は、Road/Store Unit110を介して、外部メモリ20の書き込み対象領域27に実行結果を書き込む。
 以上、情報処理装置10が実行する処理の流れについて説明した。
  (1.2.2.ポインタの動き)
 上記のように、外部メモリから読み込まれたデータは、Multidimensional Ring Buffer 1(121)の該当箇所に書き込まれる。そして、乗算時には、Multidimensional Ring Buffer 1(121)からデータが読み込まれる。以下では、Multidimensional Ring Buffer 1(121)へのデータ書き込みを、単に「書き込み」と言い、Multidimensional Ring Buffer 1(121)からのデータ読み込みを、単に「読み込み」と言う場合がある。
 書き込み時には、Write Pointerが示す位置にデータが書き込まれる。一方、読み込み時には、Read Pointerが示す位置からデータが読み込まれる。本開示の実施形態では、読み込み対象領域22の移動方向として複数の移動方向が設けられており、書き込み時には、読み込み対象領域22の移動方向に応じて、Write Pointerの動きが変化する。これによって、読み込み時には、Read Pointerの動きが一定にされ得る。
 より詳細に、読み込み対象領域22の移動方向としては、外部メモリ20における、第1の次元の正方向、第1の次元の負方向、第2の次元の正方向、および、第2の次元の負方向の4方向が存在する。これらの読み込み対象領域22の移動方向それぞれには、Write Pointerの異なる動きがあらかじめ関連付けされており、Write Pointerは、読み込み対象領域22の移動方向にあらかじめ関連付けられた動きに従って移動する。一方、Read Pointerの動きは、Write Pointerの動きのいずれかと同様である。
 以下では、第1の次元の正方向が外部メモリ20の下方向であり、第1の次元の負方向が外部メモリ20の上方向であり、第2の次元の正方向が外部メモリ20の右方向であり、第2の次元の負方向が外部メモリ20の左方向である場合を主に想定する。しかし、これらの4方向それぞれは外部メモリ20のどちらの方向であってもよい。Write PointerおよびRead Pointerの移動方向も限定されない。
 図11は、Multidimensional Ring Buffer 1(121)に関する定義を説明するための図である。図11を参照すると、Multidimensional Ring Buffer 1(121)において、外部メモリ20における第1の次元に対応する、Multidimensional Ring Buffer 1(121)における次元が「1D」と表現され、外部メモリ20における第2の次元に対応する、Multidimensional Ring Buffer 1(121)における次元が「2D」と表現されている。このように、以下では、第1の次元に対応する次元を「1D」と表現し、第2の次元に対応する次元を「2D」と表現する場合がある。
 X1~X9は、Multidimensional Ring Buffer 1(121)の物理的な位置を示すアドレス(物理アドレス)である。例えば、X1は、Multidimensional Ring Buffer 1(121)における左上の位置を示す物理アドレスであり、X9は、Multidimensional Ring Buffer 1(121)における右下の位置を示す物理アドレスである。原点Oは、各次元の値が0の点である。一方、点Aは、各次元における要素数に対応する長さを有するベクトルの和が示す点である。
 図12は、Read Pointerの動きの例を示す図である。Read Pointerは、初期位置から1Dの方向に固定されたまま、2Dの正方向に所定の幅だけ移動し、2Dの正方向への移動が一巡すると、1Dの正方向に所定の幅だけ移動する。以下では、所定の幅の移動が、隣接する位置への移動である場合を想定する。しかし、所定の幅は限定されない。同様に、読み込み対象領域22も、所定の幅ずつ移動し、所定の幅の移動が、隣接する位置への移動である場合を想定するが、当該所定の幅も限定されない。これ以降、Read Pointerは、同様の移動を繰り返していく。
 例えば、初期位置がX1(原点O)である場合、Read Pointerは、X1、X2、X3の順に移動した後、X1に戻る代わりにX4に移動する。そして、Read Pointerは、X4、X5、X6の順に移動した後、X4に戻る代わりにX7に移動する。そして、Read Pointerは、X7、X8、X9(点A)の順に移動した後、X7に戻る代わりにX1(原点O)に移動する。これ以降、Read Pointerは、同様の移動を繰り返していく。
 図13および図14は、Write Pointerの動きの例を示す図である。上記したように、Write Pointerは、読み込み対象領域22の移動方向にあらかじめ関連付けられた動きに従って移動する。したがって、読み込み対象領域22の移動方向として4方向が存在する場合、Write Pointerの動きにも4通りの動きが存在する。
 読み込み対象領域22の移動方向「第1の次元の正方向」に関連付けられた動きをする論理的なWrite Pointerを「Write Pointer(1D+)」と表現する場合がある。同様に、読み込み対象領域22の移動方向「第1の次元の負方向」に関連付けられた動きをする論理的なWrite Pointerを「Write Pointer(1D-)」と表現する場合がある。
 一方、読み込み対象領域22の移動方向「第2の次元の正方向」に関連付けられた動きをする論理的なWrite Pointerを「Write Pointer(2D+)」と表現する場合がある。同様に、読み込み対象領域22の移動方向「第2の次元の負方向」に関連付けられた動きをする論理的なWrite Pointerを「Write Pointer(2D-)」と表現する場合がある。
 まず、図13の「Write Pointer(1D+)」を参照しながら、Write Pointer(1D+)の動きを説明する。Write Pointer(1D+)の動きは、Read Pointerの動きと同様である。すなわち、Write Pointer(1D+)は、初期位置から1Dの方向に固定されたまま、2Dの正方向に所定の幅だけ移動し(隣接する位置に移動し)、2Dの正方向への移動が一巡すると、1Dの正方向に所定の幅だけ移動する(隣接する位置に移動する)。これ以降、Write Pointer(1D+)は、同様の移動を繰り返していく。
 例えば、初期位置がX1(原点O)である場合、Write Pointer(1D+)は、X1、X2、X3の順に移動した後、X1に戻る代わりにX4に移動する。そして、Write Pointer(1D+)は、X4、X5、X6の順に移動した後、X4に戻る代わりにX7に移動する。そして、Write Pointer(1D+)は、X7、X8、X9(点A)の順に移動した後、X7に戻る代わりにX1(原点O)に移動する。これ以降、Write Pointer(1D+)は、同様の移動を繰り返していく。
 Write Pointer(1D+)の初期位置がX1(原点O)でない場合もあり得る。かかる場合であっても、Write Pointer(1D+)は、X1の代わりに他の位置を初期位置に設定し、同様の動きをすればよい。例えば、初期位置がX3である場合、Write Pointer(1D+)は、X3、X1、X2の順に移動した後、X3に戻る代わりにX6に移動すればよい。そして、Write Pointer(1D+)は、X6、X4、X5の順に移動した後、X6に戻る代わりにX9に移動すればよい。そして、Write Pointer(1D+)は、X9、X7、X8の順に移動した後、X9に戻る代わりにX3に移動すればよい。これ以降、Write Pointer(1D+)は、同様の移動を繰り返せばよい。
 続いて、図13の「Write Pointer(2D+)」を参照しながら、Write Pointer(2D+)の動きを説明する。Write Pointer(2D+)は、初期位置から2Dの方向に固定されたまま、1Dの正方向に所定の幅だけ移動し(隣接する位置に移動し)、1Dの正方向への移動が一巡すると、2Dの正方向に所定の幅だけ移動する(隣接する位置に移動する)。これ以降、Write Pointer(2D+)は、同様の移動を繰り返していく。
 例えば、初期位置がX1(原点O)である場合、Write Pointer(2D+)は、X1、X4、X7の順に移動した後、X1に戻る代わりにX2に移動する。そして、Write Pointer(2D+)は、X2、X5、X8の順に移動した後、X2に戻る代わりにX3に移動する。そして、Write Pointer(2D+)は、X3、X6、X9(点A)の順に移動した後、X3に戻る代わりにX1(原点O)に移動する。これ以降、Write Pointer(2D+)は、同様の移動を繰り返していく。
 Write Pointer(2D+)の初期位置がX1(原点O)でない場合もあり得る。かかる場合であっても、Write Pointer(2D+)は、X1の代わりに他の位置を初期位置に設定し、同様の動きをすればよい。例えば、初期位置がX4である場合、Write Pointer(2D+)は、X4、X7、X1の順に移動した後、X4に戻る代わりにX5に移動すればよい。そして、Write Pointer(2D+)は、X5、X8、X2の順に移動した後、X5に戻る代わりにX6に移動すればよい。そして、Write Pointer(2D+)は、X6、X9、X3の順に移動した後、X6に戻る代わりにX4に移動すればよい。これ以降、Write Pointer(2D+)は、同様の移動を繰り返せばよい。
 続いて、図14の「Write Pointer(1D-)」を参照しながら、Write Pointer(1D-)の動きを説明する。Write Pointer(1D-)は、初期位置から1Dの方向に固定されたまま、2Dの負方向に所定の幅だけ移動し(隣接する位置に移動し)、2Dの負方向への移動が一巡すると、1Dの負方向に所定の幅だけ移動する(隣接する位置に移動する)。これ以降、Write Pointer(1D-)は、同様の移動を繰り返していく。
 例えば、初期位置がX9(点A)である場合、Write Pointer(1D-)は、X9、X8、X7の順に移動した後、X9に戻る代わりにX6に移動する。そして、Write Pointer(1D-)は、X6、X5、X4の順に移動した後、X6に戻る代わりにX3に移動する。そして、Write Pointer(1D-)は、X3、X2、X1(原点O)の順に移動した後、X3に戻る代わりにX9(点A)に移動する。これ以降、Write Pointer(1D-)は、同様の移動を繰り返していく。
 Write Pointer(1D-)の初期位置がX9(点A)でない場合もあり得る。かかる場合であっても、Write Pointer(1D-)は、X9の代わりに他の位置を初期位置に設定し、同様の動きをすればよい。例えば、初期位置がX7である場合、Write Pointer(1D-)は、X7、X9、X8の順に移動した後、X7に戻る代わりにX4に移動すればよい。そして、Write Pointer(1D-)は、X4、X6、X5の順に移動した後、X4に戻る代わりにX1に移動すればよい。そして、Write Pointer(1D-)は、X1、X3、X2の順に移動した後、X1に戻る代わりにX7に移動すればよい。これ以降、Write Pointer(1D-)は、同様の移動を繰り返せばよい。
 続いて、図14の「Write Pointer(2D-)」を参照しながら、Write Pointer(2D-)の動きを説明する。Write Pointer(2D-)は、初期位置から2Dの方向に固定されたまま、1Dの負方向に所定の幅だけ移動し(隣接する位置に移動し)、1Dの負方向への移動が一巡すると、2Dの負方向に所定の幅だけ移動する(隣接する位置に移動する)。これ以降、Write Pointer(2D-)は、同様の移動を繰り返していく。
 例えば、初期位置がX9(点A)である場合、Write Pointer(2D-)は、X9、X6、X3の順に移動した後、X9に戻る代わりにX8に移動する。そして、Write Pointer(2D-)は、X8、X5、X2の順に移動した後、X8に戻る代わりにX7に移動する。そして、Write Pointer(2D-)は、X7、X4、X1(原点O)の順に移動した後、X7に戻る代わりにX9(点A)に移動する。これ以降、Write Pointer(2D-)は、同様の移動を繰り返していく。
 Write Pointer(2D-)の初期位置がX9(点A)でない場合もあり得る。かかる場合であっても、Write Pointer(2D-)は、X9の代わりに他の位置を初期位置に設定し、同様の動きをすればよい。例えば、初期位置がX3である場合、Write Pointer(2D-)は、X3、X9、X6の順に移動した後、X3に戻る代わりにX2に移動すればよい。そして、Write Pointer(2D-)は、X2、X8、X5の順に移動した後、X2に戻る代わりにX1に移動すればよい。そして、Write Pointer(2D-)は、X1、X7、X4の順に移動した後、X1に戻る代わりにX3に移動すればよい。これ以降、Write Pointer(2D-)は、同様の移動を繰り返せばよい。
 以上に説明したように、Write Pointerの動きには4通りの動きが存在するため、これらの4通りの動きそれぞれに対して物理的に異なるWrite Pointerが使用されてもよいが、必ずしもこれらの4通りの動きそれぞれに対して物理的に異なるWrite Pointerが使用されなくてよい。本実施形態では、2通りの動きに対して物理的に1つのWrite Pointerが使用される場合を主に想定する(すなわち、4通りの動きに対して物理的に2つのWrite Pointerが使用される場合を想定する)。
 より詳細には、読み込み対象領域22の第1の次元の移動方向(第1の次元方向)と、読み込み対象領域22の第2の次元の移動方向(第2の次元方向)との正負の別が同じ場合、各Write Pointer(第1のポインタおよび第2のポインタ)として物理的に同一のWrite Pointerが使用される場合を主に想定する。一方、読み込み対象領域22の第1の次元の移動方向(第1の次元方向)と、読み込み対象領域22の第2の次元の移動方向(第2の次元方向)との正負の別が異なる場合には、各Write Pointerとして物理的に異なるWrite Pointerが使用される場合を主に想定する。
 すなわち、本開示の実施形態では、図13に示されるように、「Write Pointer(1D+)」と「Write Pointer(2D+)」との間で、物理的に同一のWrite Pointer(WP1)が使用される場合を主に想定する。また、本開示の実施形態では、図14に示されるように、「Write Pointer(1D-)」と「Write Pointer(2D-)」との間で、物理的に同一のWrite Pointer(WP2)が使用される場合を主に想定する。Write Pointer(WP1)とWrite Pointer(WP2)とは物理的に異なっている。
 しかし、Write Pointer(WP1)およびWrite Pointer(WP2)それぞれの動きの対応関係があらかじめ定められていれば、Write Pointer(WP1)およびWrite Pointer(WP2)のいずれか一方のみが使用されてもよい。すなわち、Write Pointer(WP1)およびWrite Pointer(WP2)のうち、いずれか一方のみが使用され、かかる対応関係に基づいて、当該一方のWrite Pointerの位置から他方のWrite Pointerの位置が算出されてもよい。
 以下に説明する例においても、Write Pointer(WP1)とWrite Pointer(WP2)とが、Multidimensional Ring Buffer 1(121)において対角に位置するという相互関係が保たれるように移動される場合を主に想定する。したがって、以下に説明する例においても、Write Pointer(WP1)とWrite Pointer(WP2)のいずれか一方のみが使用されてもよい。
 なお、Write Pointer(WP1)とWrite Pointer(WP2)とが対角に位置するとは、Multidimensional Ring Buffer 1(121)において、最下行(第2行)の下に最上行(第0行)が隣接し、最右列(第2列)の右に最左列(第0列)が隣接するとした場合に、Write Pointer(WP1)が示す位置を左上隅とする3×3の矩形領域の右下隅をWrite Pointer(WP2)が示すことを言う。
 以上、ポインタの動きの例について説明した。
  (1.2.3.具体的な処理例)
 上記したようなポインタの動きとともに情報処理装置10による処理が実行される。続いて、情報処理装置10による具体的な処理例について説明する。図15~図30は、外部メモリ20における対象範囲21の読み込み対象領域22と、読み込み対象領域22の一部または全部から読み込まれたデータが該当箇所に書き込まれたMultidimensional Ring Buffer 1(121)との対応例を示す図である。
 図15~図30を参照すると、対象範囲21の各位置に格納されているデータがM00~M55として表現されている。読み込み対象領域22は、対象範囲21の内部を初期位置から所定の幅ずつ次々に移動していき(隣接する位置に移動していき)、対象範囲21の内部を網羅的に移動する。具体的に、図15が初期状態を示しており、図16、図17、・・・の順に、読み込み対象領域22が次々と移動していく。図15に示された例では、読み込み対象領域22の初期位置が対象範囲21の左上であるが、読み込み対象領域22の初期位置は対象範囲21の左上に限定されない。
 読み込み対象領域22の一部または全部から読み込まれたデータは、Multidimensional Ring Buffer 1(121)の該当箇所に書き込まれる。図15~図30を参照すると、Multidimensional Ring Buffer 1(121)の各位置には、物理アドレスが括弧付きでX1~X9として示されており、その下に各位置に書き込まれたデータが示されている。データの書き込みには、Write Pointer(WP1)およびWrite Pointer(WP2)が用いられる。
 Multidimensional Ring Buffer 1(121)には、Write Pointer(WP1)およびWrite Pointer(WP2)が示されている。初期状態では、Write Pointer(WP1)がX1を示しており、Write Pointer(WP2)がX9を示している。しかし、Write Pointer(WP1)およびWrite Pointer(WP2)それぞれの初期位置も限定されない。
 まず、図15に示されるように、General Purpose Register130は、Road/Store Unit110を介して、初期位置に設定した読み込み対象領域22の全部からデータを読み込む。General Purpose Register130は、読み込み対象領域22の全部から読み込んだデータを、Multidimensional Ring Buffer 1(121)に書き込む。図15を参照すると、読み込み対象領域22から読み込まれたデータM00~M22がX1~X9に書き込まれている。
 ALU140は、このようにしてMultidimensional Ring Buffer 1(121)に書き込まれたデータに基づく処理を実行する。具体的に、ALU140は、Multidimensional Ring Buffer 1(121)から、Read Pointerを用いてX1~X9のデータを順に読み込み、X1~X9のデータと係数データとを画素ごとに乗算し、画素ごとの乗算結果の和を算出する。ALU140は、処理の実行結果(乗算結果の和)を、Multidimensional Ring Buffer 2(122)の該当する書き込み対象領域に書き込む。
 続いて、General Purpose Register130は、読み込み対象領域22を移動させる。最初は、読み込み対象領域22の移動方向が、外部メモリ20における「第1の次元の正方向」である場合を想定する。すなわち、Write Pointerとしては、第1の次元の正方向に対応するWrite Pointer(1D+)が用いられる場合を想定する。したがって、Write Pointer(1D+)に対応するWrite Pointer(WP1)が用いられる。
 図16に示されるように、General Purpose Register130は、読み込み対象領域22(図15)を第1の次元の正方向31-1に所定の幅だけ移動させる(隣接する位置へ移動させる)。ここで、移動後の読み込み対象領域22(図16)のうち、データM10~M22は、既にMultidimensional Ring Buffer 1(121)に書き込まれている。したがって、General Purpose Register130は、移動後の読み込み対象領域22(図16)のうち、第1の次元の正方向31-1の先端領域のデータ(データM30~M32)だけを新たに読み込めばよい。なお、先端領域は、第1の次元の正方向31-1に所定の幅を有している。
 ここで、図15に示された例において、Multidimensional Ring Buffer 1(121)の第1の次元の正方向31-1に対応する方向(1Dの正方向32-1)の後端領域のデータ(すなわち、X1、X2、X3のデータ)は、次の処理に用いられないと考えられる。そこで、図16に示されたように、General Purpose Register130は、先端領域のデータ(データM30~M32)で、後端領域(すなわち、X1、X2、X3)の上書き(第1の上書き)を行う。なお、後端領域は、第1の次元の正方向31-1に対応する方向(1Dの正方向32-1)に所定の幅を有している。
 より具体的に、General Purpose Register130は、Write Pointer(WP1)を後端領域に設定し、先端領域のデータ(データM30~M32)をWrite Pointer(WP1)が示す位置に上書きする。例えば、General Purpose Register130は、Write Pointer(1D+)の動きに従って、Write Pointer(WP1)を、X1、X2、X3の順に移動させながら、先端領域のデータ(データM30~M32)をWrite Pointer(WP1)が示す位置に順に上書きする。
 その後、General Purpose Register130は、Write Pointer(1D+)の動きに従って、Write Pointer(WP1)をX4に移動させる。このとき、General Purpose Register130は、Write Pointer(WP2)がMultidimensional Ring Buffer 1(121)においてWrite Pointer(WP1)と対角に位置するようにWrite Pointer(WP2)を(X3に)移動させる。ここで、General Purpose Register130が、Write Pointer(WP2)を移動させるタイミングは限定されない。
 例えば、General Purpose Register130は、Write Pointer(WP1)を、X1、X2、X3、X4の順に移動させるのに合わせて、Write Pointer(WP2)をX9、X1、X2、X3の順に移動させてもよい。しかし、Write Pointer(WP1)の移動のたびにWrite Pointer(WP2)も移動させるとすると、多くの消費電力が掛かってしまう。また、いずれにしてもWrite Pointer(WP1)がX4に到達するまで、Write Pointer(WP1)とWrite Pointer(WP2)との間で使用されるWrite Pointerの切り替えは行われない。
 したがって、General Purpose Register130は、Write Pointer(WP1)がX3に到達するまではWrite Pointer(WP1)を移動させずに、Write Pointer(WP1)がX3からX4に移動するタイミングで、Write Pointer(WP2)をX9からX3に一気に移動させればよい。図16を参照すると、後端領域のデータ(すなわち、X1、X2、X3のデータ)が、先端領域のデータ(データM30~M32)で上書きされた様子が示されている。
 ALU140は、上書き後のMultidimensional Ring Buffer 1(121)のデータに基づく処理(第1の処理)を実行する。具体的に、ALU140は、上書き後のMultidimensional Ring Buffer 1(121)から、Read Pointerを用いてX1~X9のデータを順に読み込み、X1~X9のデータと係数データとを画素ごとに乗算し、画素ごとの乗算結果の和を算出する。ALU140は、処理の実行結果(乗算結果の和)を、Multidimensional Ring Buffer 2(122)の該当する書き込み対象領域に書き込む。
 図17に示されるように、General Purpose Register130は、Write Pointer(WP1)のX4への移動によって、Write Pointer(WP1)を第1の次元の正方向31-1に対応する方向(1Dの正方向32-1)に移動させるポインタ移動を行う。それとともに、General Purpose Register130は、読み込み対象領域22(図16)を第1の次元の正方向31-1に移動させる(隣接する位置へ移動させる)領域移動を行う。
 ここで、移動後の読み込み対象領域22(図17)のうち、データM20~M32は、既にMultidimensional Ring Buffer 1(121)に書き込まれている。したがって、General Purpose Register130は、移動後の読み込み対象領域22(図17)のうち、第1の次元の正方向31-1の先端領域のデータ(データM40~M42)だけを新たに読み込めばよい。
 そして、図17に示された例において、移動後のWrite Pointer(WP1)(図17)が示す位置のデータ(すなわち、X4、X5、X6のデータ)は、次の処理に用いられないと考えられる。そこで、図17に示されたように、General Purpose Register130は、移動後の読み込み対象領域22(図17)のうち先端領域のデータ(データM40~M42)で、移動後のWrite Pointer(WP1)(図17)が示す位置に上書き(第2の上書き)を行う。
 例えば、General Purpose Register130は、Write Pointer(1D+)の動きに従って、Write Pointer(WP1)を、X4、X5、X6の順に移動させながら、先端領域のデータ(データM40~M42)をWrite Pointer(WP1)が示す位置に順に上書きする。
 その後、General Purpose Register130は、Write Pointer(1D+)の動きに従って、Write Pointer(WP1)をX7に移動させる。
 このとき、General Purpose Register130は、Write Pointer(WP2)がMultidimensional Ring Buffer 1(121)においてWrite Pointer(WP1)と対角に位置するようにWrite Pointer(WP2)を移動させる。ここで、General Purpose Register130が、Write Pointer(WP2)を移動させるタイミングは上記と同様に限定されない。
 ALU140は、上書き後のMultidimensional Ring Buffer 1(121)のデータに基づく処理(第2の処理)を実行する。第2の処理は第1の処理と同様の処理であってよい。ALU140は、第2の処理の実行結果を、Multidimensional Ring Buffer 2(122)の該当する書き込み対象領域に書き込む。
 このようにして、Write Pointer(WP1)の移動(ポインタ移動)と読み込み対象領域22の移動(領域移動)とWrite Pointer(WP1)が示す位置への上書き(第2の上書き)と上書き後のMultidimensional Ring Buffer 1(121)のデータに基づく処理(第2の処理)との組み合わせが実行される。かかる組み合わせは、1回実行されてもよいし、複数回実行されてもよい。
 かかる組み合わせが1または複数回実行された後、さらにWrite Pointer(WP1)の移動(ポインタ移動)を行うに際して、Write Pointer(WP1)を移動させてしまうとWrite Pointer(WP1)がMultidimensional Ring Buffer 1(121)の外側に出てしまう場合が想定される。かかる場合、General Purpose Register130は、Write Pointer(WP1)を、第1の次元の正方向31-1に対応する方向(1Dの正方向32-1)の後端領域に戻せばよい。
 また、かかる組み合わせが1または複数回実行された後、さらに読み込み対象領域22の移動(領域移動)を行うに際して所定の条件が満たされた場合が想定される。かかる場合、General Purpose Register130は、読み込み対象領域22を第1の次元の方向とは異なる第2の次元の方向に移動させればよい。所定の条件は限定されない。例えば、所定の条件は、読み込み対象領域22を第1の次元の方向に移動させると読み込み対象領域22が外部メモリ20の対象範囲21の外側に出てしまうという条件であってよい。
 そして、General Purpose Register130は、移動後の読み込み対象領域22のうち第2の次元の方向の先端領域のデータで、Multidimensional Ring Buffer 1(121)のうち第2の次元の方向に対応する方向の後端領域の上書き(第3の上書き)を行えばよい。
 より具体的には、General Purpose Register130は、Write Pointer(WP1)を第2の次元の方向に対応する方向の後端領域に設定し、移動後の読み込み対象領域22のうち第2の次元の方向の先端領域のデータで、Write Pointer(WP1)が示す位置に上書きすることによって、上書き(第3の上書き)を行えばよい。
 ALU140は、第3の上書き後のMultidimensional Ring Buffer 1(121)のデータに基づく処理(第3の処理)を実行する。第3の処理は、第1の処理と同様の処理であってよい。ALU140は、第3の処理の実行結果を、Multidimensional Ring Buffer 2(122)の該当する書き込み対象領域に書き込む。
 以下では、かかる組み合わせが2回実行される場合を想定する。1回目の実行結果は、図17に示された通りである。また、2回目の実行結果は、図18に示された通りである。図18を参照すると、図17に示された例と同様にして、読み込み対象領域22、Write Pointer(WP1)およびWrite Pointer(WP2)が移動され、移動後の読み込み対象領域22のうち先端領域のデータ(データM50~M52)で、Write Pointer(WP1)が示す位置に上書きが行われている。
 図18に示された例において、さらにWrite Pointer(WP1)を第1の次元の正方向31-1に対応する方向(1Dの正方向32-1)に移動させてしまうとWrite Pointer(WP1)がMultidimensional Ring Buffer 1(121)の外側に出てしまう。そこで、図19に示されるように、General Purpose Register130は、Write Pointer(WP1)を、第1の次元の正方向31-1に対応する方向(1Dの正方向32-1)の後端領域に戻せばよい。
 具体的に、General Purpose Register130は、Write Pointer(1D+)の動きに従って、Write Pointer(WP1)を、X7、X8、X9の順に移動させながら、先端領域のデータ(データM50~M52)をWrite Pointer(WP1)が示す位置に順に上書きする。図19に示されるように、General Purpose Register130は、Write Pointer(1D+)の動きに従って、Write Pointer(WP1)をX1に移動させる。なお、Write Pointer(WP2)は、Write Pointer(WP1)と対角に位置するように(X9に)移動される。
 また、図18に示された例において、さらに読み込み対象領域22を第1の次元の正方向31-1に移動させてしまうと読み込み対象領域22が外部メモリ20の対象範囲21の外側に出てしまう。そこで、図19に示されるように、General Purpose Register130は、読み込み対象領域22の移動方向を第1の次元の正方向31-1とは異なる第2の次元の方向(正方向31-2)に変更すればよい。変更先の移動方向は限定されない。
 そして、General Purpose Register130は、読み込み対象領域22の移動方向の変更とともに、使用する論理的なWrite Pointerも変更する。図19に示された例では、General Purpose Register130は、読み込み対象領域22の移動方向を第2の次元の正方向31-2に変更したため、第2の次元の正方向31-2に対応するWrite Pointer(2D+)に、使用する論理的なWrite Pointerを変更する。
 General Purpose Register130は、Write Pointer(2D+)の動きに従って、Write Pointer(WP1)を、X1、X4、X7の順に移動させながら、先端領域のデータ(データM33、M43、M53)をWrite Pointer(WP1)が示す位置に順に上書きする。これによって、上記した第3の上書きが行われる。図20に示されるように、General Purpose Register130は、Write Pointer(2D+)の動きに従って、Write Pointer(WP1)をX2に移動させる。なお、Write Pointer(WP2)は、Write Pointer(WP1)と対角に位置するように(X7に)移動される。
 読み込み対象領域22の移動方向は、第2の次元の正方向31-2のままでもよい。かかる場合には、General Purpose Register130は、引き続きWrite Pointer(WP1)を第2の次元の正方向31-2に対応する方向(2Dの正方向32-2)に移動させるとともに、外部メモリ20において読み込み対象領域22を第2の次元の正方向31-2に移動させる。General Purpose Register130は、移動後の読み込み対象領域22のうち第2の次元の正方向31-2の先端領域のデータで、移動後のWrite Pointer(WP1)が示す位置に第4の上書きを行う。
 そして、ALU140は、第4の上書き後のMultidimensional Ring Buffer 1(121)のデータに基づく処理(第4の処理)を実行する。第4の処理は、第1の処理と同様の処理であってよい。ALU140は、第4の処理の実行結果を、Multidimensional Ring Buffer 2(122)の該当する書き込み対象領域に書き込む。
 しかし、以下では、General Purpose Register130は、読み込み対象領域22の移動方向を、第2の次元の正方向31-2から変更する場合を想定する。図20に示された例では、General Purpose Register130は、読み込み対象領域22の移動方向を第2の次元の正方向31-2とは異なる第1の次元の方向(負方向31-3)に変更している。変更先の移動方向は限定されない。
 General Purpose Register130は、読み込み対象領域22の移動方向の変更とともに、使用する論理的なWrite Pointerも変更する。図20に示された例では、General Purpose Register130は、読み込み対象領域22の移動方向を第1の次元の負方向31-3に変更したため、第1の次元の負方向31-3に対応するWrite Pointer(1D-)に、使用する論理的なWrite Pointerを変更する。そして、使用される物理的なWrite Pointerも、Write Pointer(1D-)に対応するWrite Pointer(WP2)に切り替えられる。
 General Purpose Register130は、Write Pointer(1D-)の動きに従って、Write Pointer(WP2)を、X7、X9、X8の順に移動させながら、先端領域のデータ(データM23~M21)をWrite Pointer(WP2)が示す位置に順に上書きする。ALU140は、上書き後のMultidimensional Ring Buffer 1(121)のデータに基づく処理を実行し、実行結果をMultidimensional Ring Buffer 2(122)の該当する書き込み対象領域に書き込む。図21に示されるように、General Purpose Register130は、Write Pointer(1D-)の動きに従って、Write Pointer(WP2)をX4に移動させる。なお、Write Pointer(WP1)は、Write Pointer(WP2)と対角に位置するように(X8に)移動される。
 以降は、上記と同様の処理が繰り返し実行される。図21に示されるように、General Purpose Register130は、引き続き読み込み対象領域22を第1の次元の負方向31-3に移動させる。そして、General Purpose Register130は、Write Pointer(1D-)の動きに従って、Write Pointer(WP2)を、X4、X6、X5の順に移動させながら、先端領域のデータ(データM13~M11)をWrite Pointer(WP2)が示す位置に順に上書きする。ALU140は、上書き後のMultidimensional Ring Buffer 1(121)のデータに基づく処理を実行し、実行結果をMultidimensional Ring Buffer 2(122)の該当する書き込み対象領域に書き込む。
 そして、図22に示されるように、General Purpose Register130は、Write Pointer(1D-)の動きに従って、Write Pointer(WP2)をX1に移動させる。これによって、Write Pointer(WP2)が第1の次元の負方向31-3に対応する方向(1Dの負方向32-3)に移動される。このとき、図22に示されるように、General Purpose Register130は、Write Pointer(WP1)がMultidimensional Ring Buffer 1(121)においてWrite Pointer(WP2)と対角に位置するようにWrite Pointer(WP1)を(X5に)移動させる。
 続いて、図22に示されるように、General Purpose Register130は、引き続き読み込み対象領域22を第1の次元の負方向31-3に移動させる。そして、General Purpose Register130は、Write Pointer(1D-)の動きに従って、Write Pointer(WP2)を、X1、X3、X2の順に移動させながら、先端領域のデータ(データM03~M01)をWrite Pointer(WP2)が示す位置に順に上書きする。ALU140は、上書き後のMultidimensional Ring Buffer 1(121)のデータに基づく処理を実行し、実行結果をMultidimensional Ring Buffer 2(122)の該当する書き込み対象領域に書き込む。
 そして、図23に示されるように、General Purpose Register130は、Write Pointer(1D-)の動きに従って、Write Pointer(WP2)をX7に移動させる。これによって、Write Pointer(WP2)が第1の次元の負方向31-3に対応する方向(1Dの負方向32-3)に移動される。このとき、図23に示されるように、General Purpose Register130は、Write Pointer(WP1)がMultidimensional Ring Buffer 1(121)においてWrite Pointer(WP2)と対角に位置するようにWrite Pointer(WP1)を(X2に)移動させる。
 続いて、図23に示されるように、General Purpose Register130は、読み込み対象領域22を第2の次元の正方向31-2に移動させる。使用する論理的なWrite Pointerは、第2の次元の正方向31-2に対応するWrite Pointer(2D+)に変更される。そして、使用される物理的なWrite Pointerも、Write Pointer(2D+)に対応するWrite Pointer(WP1)に切り替えられる。General Purpose Register130は、Write Pointer(2D+)の動きに従って、Write Pointer(WP1)を、X2、X5、X8の順に移動させながら、先端領域のデータ(データM04、M14、M24)をWrite Pointer(WP1)が示す位置に順に上書きする。ALU140は、上書き後のMultidimensional Ring Buffer 1(121)のデータに基づく処理を実行し、実行結果をMultidimensional Ring Buffer 2(122)の該当する書き込み対象領域に書き込む。
 そして、図24に示されるように、General Purpose Register130は、Write Pointer(2D+)の動きに従って、Write Pointer(WP1)をX3に移動させる。これによって、Write Pointer(WP1)が第2の次元の正方向31-2に対応する方向(2Dの正方向32-2)に移動される。このとき、図24に示されるように、General Purpose Register130は、Write Pointer(WP2)がMultidimensional Ring Buffer 1(121)においてWrite Pointer(WP1)と対角に位置するようにWrite Pointer(WP2)を(X8に)移動させる。
 続いて、図24に示されるように、General Purpose Register130は、読み込み対象領域22を第1の次元の正方向31-1に移動させる。使用する論理的なWrite Pointerは、第1の次元の正方向31-1に対応するWrite Pointer(1D+)に変更される。General Purpose Register130は、Write Pointer(1D+)の動きに従って、Write Pointer(WP1)を、X3、X1、X2の順に移動させながら、先端領域のデータ(データM32~M34)をWrite Pointer(WP1)が示す位置に順に上書きする。ALU140は、上書き後のMultidimensional Ring Buffer 1(121)のデータに基づく処理を実行し、実行結果をMultidimensional Ring Buffer 2(122)の該当する書き込み対象領域に書き込む。
 そして、図25に示されるように、General Purpose Register130は、Write Pointer(2D+)の動きに従って、Write Pointer(WP1)をX6に移動させる。これによって、Write Pointer(WP1)が第1の次元の正方向31-1に対応する方向(1Dの正方向32-1)に移動される。このとき、図25に示されるように、General Purpose Register130は、Write Pointer(WP2)がMultidimensional Ring Buffer 1(121)においてWrite Pointer(WP1)と対角に位置するようにWrite Pointer(WP2)を(X2に)移動させる。
 続いて、図25に示されるように、General Purpose Register130は、引き続き読み込み対象領域22を第1の次元の正方向31-1に移動させる。General Purpose Register130は、Write Pointer(1D+)の動きに従って、Write Pointer(WP1)を、X6、X4、X5の順に移動させながら、先端領域のデータ(データM42~M44)をWrite Pointer(WP1)が示す位置に順に上書きする。ALU140は、上書き後のMultidimensional Ring Buffer 1(121)のデータに基づく処理を実行し、実行結果をMultidimensional Ring Buffer 2(122)の該当する書き込み対象領域に書き込む。
 そして、図26に示されるように、General Purpose Register130は、Write Pointer(1D+)の動きに従って、Write Pointer(WP1)をX9に移動させる。これによって、Write Pointer(WP1)が第1の次元の正方向31-1に対応する方向(1Dの正方向32-1)に移動される。このとき、図26に示されるように、General Purpose Register130は、Write Pointer(WP2)がMultidimensional Ring Buffer 1(121)においてWrite Pointer(WP1)と対角に位置するようにWrite Pointer(WP2)を(X5に)移動させる。
 続いて、図26に示されるように、General Purpose Register130は、引き続き読み込み対象領域22を第1の次元の正方向31-1に移動させる。General Purpose Register130は、Write Pointer(1D+)の動きに従って、Write Pointer(WP1)を、X9、X7、X8の順に移動させながら、先端領域のデータ(データM52~M54)をWrite Pointer(WP1)が示す位置に順に上書きする。ALU140は、上書き後のMultidimensional Ring Buffer 1(121)のデータに基づく処理を実行し、実行結果をMultidimensional Ring Buffer 2(122)の該当する書き込み対象領域に書き込む。
 そして、図27に示されるように、General Purpose Register130は、Write Pointer(1D+)の動きに従って、Write Pointer(WP1)をX3に移動させる。これによって、Write Pointer(WP1)が第1の次元の正方向31-1に対応する方向(1Dの正方向32-1)に移動される。このとき、図27に示されるように、General Purpose Register130は、Write Pointer(WP2)がMultidimensional Ring Buffer 1(121)においてWrite Pointer(WP1)と対角に位置するようにWrite Pointer(WP2)を(X8に)移動させる。
 続いて、図27に示されるように、General Purpose Register130は、読み込み対象領域22を第2の次元の正方向31-2に移動させる。使用する論理的なWrite Pointerは、第2の次元の正方向31-2に対応するWrite Pointer(2D+)に変更される。General Purpose Register130は、読み込み対象領域22を第2の次元の正方向31-2に移動させる。General Purpose Register130は、Write Pointer(2D+)の動きに従って、Write Pointer(WP1)を、X3、X6、X9の順に移動させながら、先端領域のデータ(データM35、M45、M55)をWrite Pointer(WP1)が示す位置に順に上書きする。ALU140は、上書き後のMultidimensional Ring Buffer 1(121)のデータに基づく処理を実行し、実行結果をMultidimensional Ring Buffer 2(122)の該当する書き込み対象領域に書き込む。
 そして、図28に示されるように、General Purpose Register130は、Write Pointer(2D+)の動きに従って、Write Pointer(WP1)をX1に移動させる。これによって、Write Pointer(WP1)が第2の次元の正方向31-2に対応する方向(2Dの正方向32-2)に移動される。このとき、図28に示されるように、General Purpose Register130は、Write Pointer(WP2)がMultidimensional Ring Buffer 1(121)においてWrite Pointer(WP1)と対角に位置するようにWrite Pointer(WP2)を(X9に)移動させる。
 続いて、図28に示されるように、General Purpose Register130は、読み込み対象領域22を第1の次元の負方向31-3に移動させる。使用する論理的なWrite Pointerは、第1の次元の負方向31-3に対応するWrite Pointer(1D-)に変更される。そして、使用される物理的なWrite Pointerも、Write Pointer(1D-)に対応するWrite Pointer(WP2)に切り替えられる。General Purpose Register130は、Write Pointer(1D-)の動きに従って、Write Pointer(WP2)を、X9、X8、X7の順に移動させながら、先端領域のデータ(データM25~M23)をWrite Pointer(WP2)が示す位置に順に上書きする。ALU140は、上書き後のMultidimensional Ring Buffer 1(121)のデータに基づく処理を実行し、実行結果をMultidimensional Ring Buffer 2(122)の該当する書き込み対象領域に書き込む。
 そして、図29に示されるように、General Purpose Register130は、Write Pointer(1D-)の動きに従って、Write Pointer(WP2)をX6に移動させる。これによって、Write Pointer(WP2)が第1の次元の負方向31-3に対応する方向(1Dの負方向32-3)に移動される。このとき、図29に示されるように、General Purpose Register130は、Write Pointer(WP1)がMultidimensional Ring Buffer 1(121)においてWrite Pointer(WP2)と対角に位置するようにWrite Pointer(WP1)を(X7に)移動させる。
 続いて、図29に示されるように、General Purpose Register130は、引き続き読み込み対象領域22を第1の次元の負方向31-3に移動させる。General Purpose Register130は、Write Pointer(1D-)の動きに従って、Write Pointer(WP2)を、X6、X5、X4の順に移動させながら、先端領域のデータ(データM15~M13)をWrite Pointer(WP2)が示す位置に順に上書きする。ALU140は、上書き後のMultidimensional Ring Buffer 1(121)のデータに基づく処理を実行し、実行結果をMultidimensional Ring Buffer 2(122)の該当する書き込み対象領域に書き込む。
 そして、図30に示されるように、General Purpose Register130は、Write Pointer(1D-)の動きに従って、Write Pointer(WP2)をX3に移動させる。これによって、Write Pointer(WP2)が第1の次元の負方向31-3に対応する方向(1Dの負方向32-3)に移動される。このとき、図30に示されるように、General Purpose Register130は、Write Pointer(WP1)がMultidimensional Ring Buffer 1(121)においてWrite Pointer(WP2)と対角に位置するようにWrite Pointer(WP1)を(X4に)移動させる。
 続いて、図30に示されるように、General Purpose Register130は、引き続き読み込み対象領域22を第1の次元の負方向31-3に移動させる。General Purpose Register130は、Write Pointer(1D-)の動きに従って、Write Pointer(WP2)を、X3、X2、X1の順に移動させながら、先端領域のデータ(データM05~M03)をWrite Pointer(WP2)が示す位置に順に上書きする。ALU140は、上書き後のMultidimensional Ring Buffer 1(121)のデータに基づく処理を実行し、実行結果をMultidimensional Ring Buffer 2(122)の該当する書き込み対象領域に書き込む。
 以上により、Multidimensional Ring Buffer 2(122)には、外部メモリ20の対象範囲21の内部を移動した読み込み対象領域22の各位置に対応する実行結果が書き込まれる。General Purpose Register130は、Multidimensional Ring Buffer 2(122)のデータを出力データとして、Road/Store Unit110を介して、外部メモリ20の書き込み対象領域27に書き込む。
 以上、情報処理装置10による具体的な処理例について説明した。
  (1.2.4.プログラム例)
 上記したようにして、情報処理装置10による処理が実行される。情報処理装置10による処理は、プログラムに基づいて実行され得る。以下では、情報処理装置10による処理を実現するためのプログラム例について説明する。なお、以下に説明するプログラム例は、図15~図30に示された処理例に対応しているが、情報処理装置10による処理を実現するためのプログラムの一例を示したに過ぎない。したがって、情報処理装置10による処理を実現するためのプログラムは、以下に説明するプログラム例に限定されない。
 図31は、本開示の実施形態に係る情報処理装置10を実現するためのプログラムにおいて使用される各種命令の定義を示す図である。図31に示された命令定義PG10のように、プログラムにおいて使用される各種命令が定義され得る。図32~図34は、本開示の実施形態に係る情報処理装置10を実現するためのプログラムの例を示す図である。本開示の実施形態に係る情報処理装置10を実現するためのプログラムは、図32~図34に示されたプログラムPG21~PG23のように実現され得る。
 以上、情報処理装置10による処理を実現するためのプログラム例について説明した。
  (1.2.5.動作例)
 続いて、情報処理装置10の動作例について説明する。図35は、本開示の実施形態に係る情報処理装置10の動作例を示すフローチャートの注釈を示す図である。図36~図38は、本開示の実施形態に係る情報処理装置10の動作例を示すフローチャートである。なお、以下に説明する動作例も、図15~図30に示された処理例に対応しているが、情報処理装置10の動作の一例を示したに過ぎない。したがって、情報処理装置10の動作は、以下に説明する動作例に限定されない。図36~図38に登場する各変数は、図35に示されたようにして使用される。
 図36に示されるように、General Purpose Register130は、係数を読み込むバッファBUF0の次元数とサイズを設定する(S11)。そして、General Purpose Register130は、Road/Store Unit110を介して係数を外部メモリからバッファBUF0へロードする(S12)。
 General Purpose Register130は、入力データを読み込むバッファBUF1の次元数とサイズを設定する(S13)。General Purpose Register130は、入力データのアドレスポインタ(入力データが読み出される外部メモリにおけるアドレス)をR0にセットする(S14)。General Purpose Register130は、アドレスポインタの示す外部メモリから入力データをバッファBUF1へロードする(S15)。
 General Purpose Register130は、出力データを読み込むバッファBUF2の次元数とサイズを設定する(S16)。General Purpose Register130は、出力データのアドレスポインタ(出力データが書き込まれる外部メモリにおけるアドレス)をR1にセットする(S17)。そして、General Purpose Register130は、R2に(出力データサイズ-1=)15をセットする(S18)。General Purpose Register130は、列の偶奇判断用レジスタR4に0(偶数列)をセットする(S19)。
 続いて、図37に示されるように、General Purpose Register130は、R3にフィルタ係数のサイズ(3×3=9)-1=8をセットする(S21)。General Purpose Register130は、R5を0にクリアする(S22)。ALU140は、バッファBUF0とバッファBUF1とを画素ごとに乗算して乗算結果をR5に加算し(S23)、R3をデクリメントする(S24)。
 General Purpose Register130は、R3が0と等しくない場合には(S25において「NO」)、S23に戻る。一方、General Purpose Register130は、R3が0と等しい場合には(S25において「YES」)、R5をバッファBUF2へ転送する(S26)。General Purpose Register130は、外部メモリからのデータ読み出し列が4度に1度変わるため、R2を4で除した余りを算出する。
 General Purpose Register130は、R2を4で除した余りが0と等しくない場合には(S27において「NO」)、S41(図38)に進む。一方、General Purpose Register130は、R2を4で除した余りが0と等しい場合には(S27において「YES」)、S28に進む。
 General Purpose Register130は、S28に進むと、Write Pointer(2D+)を使用して外部メモリから差分データを読み込む(S28)。General Purpose Register130は、R4が0である場合(すなわち、外部メモリからのデータ読み出し列が偶数列である場合)(S29において「YES」)、R4に1(奇数列)をセットし(S30)、S32に進む。一方、General Purpose Register130は、R4が0でない場合(すなわち、外部メモリからのデータ読み出し列が奇数列である場合)(S29において「NO」)、R4に0(偶数列)をセットし(S31)、S32に進む。General Purpose Register130は、S32に進むと、R2をデクリメントし(S32)、S21に戻る。
 一方、General Purpose Register130は、S41(図38)に進むと、R4が0である場合(すなわち、外部メモリからのデータ読み出し列が偶数列である場合)(S41において「YES」)、Write Pointer(1D+)を使用して外部メモリから差分データを読み込み(S42)、S44に進む。一方、General Purpose Register130は、R4が0でない場合(すなわち、外部メモリからのデータ読み出し列が奇数列である場合)(S41において「NO」)、Write Pointer(1D-)を使用して外部メモリから差分データを読み込み(S43)、S44に進む。
 General Purpose Register130は、S44に進むと、R2をデクリメントする(S44)。そして、General Purpose Register130は、R2が0と等しくない場合には(S45において「NO」)、S21(図37)に戻る。一方、General Purpose Register130は、R2が0と等しい場合には(S45において「YES」)、バッファBUF2からアドレスポインタR1の示す外部メモリへストアして(S46)、動作を終了する。
 以上、情報処理装置10の動作例について説明した。
 <2.効果>
 以上説明したように、本開示の実施形態によれば、既に外部メモリから読み込まれてリングバッファにストアされているデータと同じデータを使用する場合には、外部メモリからの再度のデータの読み込みを省略する。すなわち、本開示の実施形態では、既に外部メモリから読み込まれてリングバッファにストアされているデータを再利用することにする。これによって、外部メモリへのデータフェッチ回数が低減されるため、既に読み込んだデータを外部メモリから再度読み込むための時間および消費電力を低減することが可能である。
 特に、演算に同じデータが繰り返し使用される場合がある。例えば、画像処理、DNN(Deep Learning Network)などにおいては、同じデータが繰り返し使用される場合が多い。繰り返し同じデータが使用される場合であっても、演算のたびに外部メモリからリングバッファにデータを読み込む必要があるとすると、既に読み込んだデータを外部メモリから再度読み込むための時間および消費電力が無駄になる。本開示の実施形態に係る情報処理装置10は、このように同じデータが繰り返し使用される場合に好適である。
 具体的に、上記した例と同様に2次元画像フィルタが使用される場合を想定する。すなわち、画像サイズが6×6であり、係数データおよび入力データそれぞれのサイズが3×3であり、出力データサイズが4×4であるという場合を想定する。かかる場合において、一般的なマイクロプロセッサが使用される場合および本開示の実施形態に係る情報処理装置10が使用される場合それぞれについて外部メモリへのアクセス回数を計算する。
 まず、一般的なマイクロプロセッサが使用される場合、1つあたりの演算結果を得るために、係数のロードが9回必要であり、入力データのロードが9回必要である場合を想定すると、外部メモリからマイクロプロセッサ内の記憶領域へのロード回数は、9+9=18である。そして、出力データサイズが16である場合を想定すると、出力データ全体を得るために必要なロード回数は、18×16=288である。
 一方、本開示の実施形態に係る情報処理装置10が使用される場合を想定すると、1つ目の演算結果を得るために必要なロード回数は、外部メモリからリングバッファへのロード回数は、9+9=18である。しかし、残りの15個の演算結果は、差分のみロードすればよいため、1つあたりの演算結果を得るために必要なロード回数は、入力データのロードが3回である。したがって、出力データ全体を得るために必要なロード回数は、18+15×3=63で済む。
 <3.変形例>
 以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示の技術的範囲はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
 上記した例では、Multidimensional Ring Buffer 0~1(120~121)が2次元を有する場合を主に想定した。すなわち、上記した例では、入力データおよび係数データそれぞれが書き込まれるバッファが2次元を有する場合を主に想定した。しかし、入力データおよび係数データそれぞれが書き込まれるバッファは、複数次元を有すればよい。まず、入力データおよび係数データそれぞれが書き込まれるバッファが3次元を有する場合を想定する。図39は、入力データが書き込まれるバッファが3次元を有する場合の例を示す図である。図39に示されるように、入力データが書き込まれるバッファは、N1軸、N2軸およびN3軸を有している。
 入力データおよび係数データそれぞれが書き込まれるバッファが3次元を有する場合であっても、当該バッファが2次元を有する場合と同様に、Read Pointerが1つ使用され、Write Pointerも2つ(Write Pointer(WP1)およびWrite Pointer(WP2))が使用されればよい。そして、当該バッファが3次元を有する場合であっても、当該バッファが2次元を有する場合と同様に、Write Pointer(WP1)の初期位置が原点Oであり、Write Pointer(WP2)の初期位置が点Aである。
 図39に示されるように、点Aは、各次元の要素の長さをAm(mは次元数)とすると、点A=(A1,A2,A3)とベクトルとして表現され得る。そして、入力データおよび係数データそれぞれが書き込まれるバッファが3次元を有する場合、Write Pointer(WP1)およびWrite Pointer(WP2)それぞれは、以下のようにして使用されればよい。
 なお、Write Pointer(WP1)を「Write Pointer(+)」と表現し、Write Pointer(WP2)を「Write Pointer(-)」と表現する。また、Nm軸の正方向に移動する論理的なWrite Pointerを「Write Pointer(NmD+)」と表現し、Nm軸の負方向に移動する論理的なWrite Pointerを「Write Pointer(NmD-)」と表現する。
 Write Pointer(+)が使用される場合
 ・+N1軸方向にWrite Pointer(+)が1つ移動する場合(すなわち、Write Pointer N1D+が使用される場合)、N2軸方向およびN3軸方向のベクトルによって作られる面のうち原点Oを含む面のデータを、外部メモリから読み込まれたデータで上書きする。
 ・+N2軸方向にWrite Pointer(+)が1つ移動する場合(すなわち、Write Pointer N2D+が使用される場合)、N3軸方向およびN1軸方向のベクトルによって作られる面のうち原点Oを含む面のデータを、外部メモリから読み込まれたデータで上書きする。
 ・+N3軸方向にWrite Pointer(+)が1つ移動する場合(すなわち、Write Pointer N3D+が使用される場合)、N1軸方向およびN2軸方向のベクトルによって作られる面のうち原点Oを含む面のデータを、外部メモリから読み込まれたデータで上書きする。
 Write Pointer(-)が使用される場合
 ・-N3軸方向にWrite Pointer(-)が1つ移動する場合(すなわち、Write Pointer N3D-が使用される場合)、N2軸方向およびN1軸方向のベクトルによって作られる面のうち点Aを含む面のデータを、外部メモリから読み込まれたデータで上書きする。
 ・-N1軸方向にWrite Pointer(-)が1つ移動する場合(すなわち、Write Pointer N1D-が使用される場合)、N3軸方向およびN2軸方向のベクトルによって作られる面のうち点Aを含む面のデータを、外部メモリから読み込まれたデータで上書きする。
 ・-N2軸方向にWrite Pointer(-)が1つ移動する場合(すなわち、Write Pointer N2D-が使用される場合)、N1軸方向およびN3軸方向のベクトルによって作られる面のうち点Aを含む面のデータを、外部メモリから読み込まれたデータで上書きする。
 続いて、入力データおよび係数データそれぞれが書き込まれるバッファが複数次元(n次元)を有する場合を想定する(nは2以上の整数)。入力データおよび係数データそれぞれが書き込まれるバッファがn次元を有する場合、当該バッファが2次元を有する場合と同様に、Read Pointerが1つ使用され、Write Pointerも2つ(Write Pointer(+)およびWrite Pointer(-))が使用されればよい。そして、当該バッファがn次元を有する場合、当該バッファが2次元を有する場合と同様に、Write Pointer(+)の初期位置が原点Oであり、Write Pointer(-)の初期位置が点Aである。
 点Aは、各次元の要素の長さをAm(mは次元数)とすると、点A=(A1,A2,A3,・・・・,An)とベクトルとして表現され得る。そして、入力データおよび係数データそれぞれが書き込まれるバッファがn次元を有する場合、Write Pointer(+)およびWrite Pointer(-)それぞれは、以下のようにして使用されればよい。
 Write Pointer(+)が使用される場合
 ・+Nn軸方向にWrite Pointer(+)が1つ移動する場合(すなわち、Write Pointer NnD+が使用される場合)、N1軸方向、N2軸方向、N3軸方向、・・・、Nn-1軸方向のベクトルによって作られる面のうち原点Oを含む面のデータを、外部メモリから読み込まれたデータで上書きする。
 ・+Nn-1軸方向にWrite Pointer(+)が1つ移動する場合(すなわち、Write Pointer Nn-1D+が使用される場合)、Nn軸方向、N1軸方向、N2軸方向、・・・、Nn-2軸方向のベクトルによって作られる面のうち原点Oを含む面のデータを、外部メモリから読み込まれたデータで上書きする。・・・・・(中略)・・・・・
 ・+N1軸方向にWrite Pointer(+)が1つ移動する場合(すなわち、Write Pointer N1D+が使用される場合)、N2軸方向、N3軸方向、N4軸方向、・・・、Nn軸方向のベクトルによって作られる面のうち原点Oを含む面のデータを、外部メモリから読み込まれたデータで上書きする。
 Write Pointer(-)が使用される場合
 ・-Nn軸方向にWrite Pointer(-)が1つ移動する場合(すなわち、Write Pointer NnD-が使用される場合)、Nn-1軸方向、Nn-2軸方向、Nn-3軸方向、・・・、N1軸方向のベクトルによって作られる面のうち点Aを含む面のデータを、外部メモリから読み込まれたデータで上書きする。・-Nn-1軸方向にWrite Pointer(-)が1つ移動する場合(すなわち、Write Pointer Nn-1D-が使用される場合)、Nn-2軸方向、Nn-3軸方向、Nn-4軸方向、・・・、N1軸方向、Nn軸方向のベクトルによって作られる面のうち点Aを含む面のデータを、外部メモリから読み込まれたデータで上書きする。・・・・・(中略)・・・・・・-N1軸方向にWrite Pointer(-)が1つ移動する場合(すなわち、Write Pointer N1D-が使用される場合)、Nn軸方向、Nn-1軸方向、Nn-2軸方向、・・・・、N3軸方向、N2軸方向のベクトルによって作られる面のうち点Aを含む面のデータを、外部メモリから読み込まれたデータで上書きする。
 また、本明細書に記載された効果は、あくまで説明的または例示的なものであって限定的ではない。つまり、本開示に係る技術は、上記の効果とともに、または上記の効果に代えて、本明細書の記載から当業者には明らかな他の効果を奏し得る。
 なお、以下のような構成も本開示の技術的範囲に属する。
(1)
 複数次元を有する外部メモリの読み込み対象領域から読み込んだデータを、前記複数次元を有する記憶領域に書き込む記憶制御部と、
 前記記憶領域のデータに基づく処理を実行する処理部と、を備え、
 前記記憶制御部は、前記外部メモリにおいて前記読み込み対象領域を第1の次元方向に移動させ、移動後の前記読み込み対象領域のうち前記第1の次元方向の先端領域のデータで、前記記憶領域のうち前記第1の次元方向に対応する方向の後端領域の第1の上書きを行い、
 前記処理部は、前記第1の上書き後の前記記憶領域のデータに基づく第1の処理を実行する、
 情報処理装置。
(2)
 前記記憶制御部は、前記外部メモリにおいて前記読み込み対象領域を前記第1の次元方向に所定の幅だけ移動させ、
 前記第1の次元方向の先端領域は、前記第1の次元方向に前記所定の幅を有し、
 前記第1の次元方向に対応する方向の後端領域は、前記第1の次元方向に対応する方向に前記所定の幅を有する、
 前記(1)に記載の情報処理装置。
(3)
 前記記憶制御部は、第1のポインタを前記第1の次元方向に対応する方向の後端領域に設定し、前記先端領域のデータで前記第1のポインタが示す位置に上書きすることによって、前記第1の上書きを行う、
 前記(2)に記載の情報処理装置。
(4)
 前記記憶制御部は、前記第1のポインタを前記第1の次元方向に対応する方向に移動させるポインタ移動と、前記外部メモリにおいて前記読み込み対象領域を前記第1の次元方向に移動させる領域移動とを行い、移動後の前記読み込み対象領域のうち前記第1の次元方向の先端領域のデータで、移動後の前記第1のポインタが示す位置に第2の上書きを行い、
 前記処理部は、前記第2の上書き後の前記記憶領域のデータに基づく第2の処理を実行する、
 前記(3)に記載の情報処理装置。
(5)
 前記記憶制御部は、前記第1のポインタを前記第1の次元方向に対応する方向に前記所定の幅だけ移動させる、
 前記(4)に記載の情報処理装置。
(6)
 前記ポインタ移動と前記領域移動と前記第2の上書きと前記第2の処理との組み合わせが1または複数回実行される、
 前記(4)または(5)に記載の情報処理装置。
(7)
 前記記憶制御部は、前記ポインタ移動と前記領域移動と前記第2の上書きと前記第2の処理との組み合わせが1または複数回実行された後、さらに前記ポインタ移動を行うに際して、前記第1のポインタを移動させると前記第1のポインタが前記記憶領域の外側に出てしまう場合、前記第1のポインタを前記第1の次元方向に対応する方向の後端領域に戻す、
 前記(6)に記載の情報処理装置。
(8)
 前記記憶制御部は、前記ポインタ移動と前記領域移動と前記第2の上書きと前記第2の処理との組み合わせが1または複数回実行された後、さらに前記領域移動を行うに際して所定の条件が満たされた場合に、前記読み込み対象領域を前記第1の次元方向とは異なる第2の次元方向に移動させ、移動後の前記読み込み対象領域のうち前記第2の次元方向の先端領域のデータで、前記記憶領域のうち前記第2の次元方向に対応する方向の後端領域の第3の上書きを行い、
 前記処理部は、前記第3の上書き後の前記記憶領域のデータに基づく第3の処理を実行する、
 前記(6)または(7)に記載の情報処理装置。
(9)
 前記所定の条件は、前記読み込み対象領域を前記第1の次元方向に移動させると前記読み込み対象領域が前記外部メモリの対象範囲の外側に出てしまうという条件である、
 前記(8)に記載の情報処理装置。
(10)
 前記記憶制御部は、第2のポインタを前記第2の次元方向に対応する方向の後端領域に設定し、前記第2の次元方向の先端領域のデータで前記第2のポインタが示す位置に上書きすることによって、前記第3の上書きを行う、
 前記(8)または(9)に記載の情報処理装置。
(11)
 前記記憶制御部は、前記第2のポインタを前記第2の次元方向に対応する方向に移動させるとともに、前記外部メモリにおいて前記読み込み対象領域を前記第2の次元方向に移動させ、移動後の前記読み込み対象領域のうち前記第2の次元方向の先端領域のデータで、移動後の前記第2のポインタが示す位置に第4の上書きを行い、
 前記処理部は、前記第4の上書き後の前記記憶領域のデータに基づく第4の処理を実行する、
 前記(10)に記載の情報処理装置。
(12)
 前記第1の次元方向と前記第2の次元方向との正負の別が同じ場合には、前記第1のポインタおよび前記第2のポインタとして同一のポインタが使用される、
 前記(10)または(11)に記載の情報処理装置。
(13)
 前記第1の次元方向と前記第2の次元方向との正負の別が異なる場合には、前記第1のポインタおよび前記第2のポインタとして異なるポインタが使用される、
 前記(10)または(11)に記載の情報処理装置。
(14)
 前記記憶制御部は、前記記憶領域のデータに基づく処理の実行結果、および、前記第1の処理の実行結果を前記外部メモリの書き込み対象領域に書き込む、
 前記(1)~(13)のいずれか一項に記載の情報処理装置。
(15)
 前記複数次元は、2次元であり、
 前記読み込み対象領域のデータは、画像データである、
 前記(1)~(14)のいずれか一項に記載の情報処理装置。
(16)
 前記記憶領域のデータに基づく処理は、前記画像データと係数データとを画素ごとに乗算し、画素ごとの乗算結果の和を算出する処理である、
 前記(15)に記載の情報処理装置。
(17)
 複数次元を有する外部メモリの読み込み対象領域から読み込んだデータを、前記複数次元を有する記憶領域に書き込むことと、
 前記記憶領域のデータに基づく処理を実行することと、
 前記外部メモリにおいて前記読み込み対象領域を第1の次元方向に移動させ、移動後の前記読み込み対象領域のうち前記第1の次元方向の先端領域のデータで、前記記憶領域のうち前記第1の次元方向に対応する方向の後端領域の第1の上書きを行うことと、
 前記第1の上書き後の前記記憶領域のデータに基づく第1の処理を実行することと、
 を含む、情報処理方法。
(18)
 コンピュータを、
 複数次元を有する外部メモリの読み込み対象領域から読み込んだデータを、前記複数次元を有する記憶領域に書き込む記憶制御部と、
 前記記憶領域のデータに基づく処理を実行する処理部と、を備え、
 前記記憶制御部は、前記外部メモリにおいて前記読み込み対象領域を第1の次元方向に移動させ、移動後の前記読み込み対象領域のうち前記第1の次元方向の先端領域のデータで、前記記憶領域のうち前記第1の次元方向に対応する方向の後端領域の第1の上書きを行い、
 前記処理部は、前記第1の上書き後の前記記憶領域のデータに基づく第1の処理を実行する、
 情報処理装置として機能させるためのプログラム。
 10  情報処理装置
 110 Road/Store Unit
 130 General Purpose Register(記憶制御部)
 140 ALU(処理部)
 150 Instruction Fetch Unit
 160 Instruction Decode Unit
 170 Program Counter&Pipeline Control
 20  外部メモリ
 21  対象範囲
 22  読み込み対象領域
 25  係数データ領域
 27  書き込み対象領域

Claims (18)

  1.  複数次元を有する外部メモリの読み込み対象領域から読み込んだデータを、前記複数次元を有する記憶領域に書き込む記憶制御部と、
     前記記憶領域のデータに基づく処理を実行する処理部と、を備え、
     前記記憶制御部は、前記外部メモリにおいて前記読み込み対象領域を第1の次元方向に移動させ、移動後の前記読み込み対象領域のうち前記第1の次元方向の先端領域のデータで、前記記憶領域のうち前記第1の次元方向に対応する方向の後端領域の第1の上書きを行い、
     前記処理部は、前記第1の上書き後の前記記憶領域のデータに基づく第1の処理を実行する、
     情報処理装置。
  2.  前記記憶制御部は、前記外部メモリにおいて前記読み込み対象領域を前記第1の次元方向に所定の幅だけ移動させ、
     前記第1の次元方向の先端領域は、前記第1の次元方向に前記所定の幅を有し、
     前記第1の次元方向に対応する方向の後端領域は、前記第1の次元方向に対応する方向に前記所定の幅を有する、
     請求項1に記載の情報処理装置。
  3.  前記記憶制御部は、第1のポインタを前記第1の次元方向に対応する方向の後端領域に設定し、前記先端領域のデータで前記第1のポインタが示す位置に上書きすることによって、前記第1の上書きを行う、
     請求項2に記載の情報処理装置。
  4.  前記記憶制御部は、前記第1のポインタを前記第1の次元方向に対応する方向に移動させるポインタ移動と、前記外部メモリにおいて前記読み込み対象領域を前記第1の次元方向に移動させる領域移動とを行い、移動後の前記読み込み対象領域のうち前記第1の次元方向の先端領域のデータで、移動後の前記第1のポインタが示す位置に第2の上書きを行い、
     前記処理部は、前記第2の上書き後の前記記憶領域のデータに基づく第2の処理を実行する、
     請求項3に記載の情報処理装置。
  5.  前記記憶制御部は、前記第1のポインタを前記第1の次元方向に対応する方向に前記所定の幅だけ移動させる、
     請求項4に記載の情報処理装置。
  6.  前記ポインタ移動と前記領域移動と前記第2の上書きと前記第2の処理との組み合わせが1または複数回実行される、
     請求項4に記載の情報処理装置。
  7.  前記記憶制御部は、前記ポインタ移動と前記領域移動と前記第2の上書きと前記第2の処理との組み合わせが1または複数回実行された後、さらに前記ポインタ移動を行うに際して、前記第1のポインタを移動させると前記第1のポインタが前記記憶領域の外側に出てしまう場合、前記第1のポインタを前記第1の次元方向に対応する方向の後端領域に戻す、
     請求項6に記載の情報処理装置。
  8.  前記記憶制御部は、前記ポインタ移動と前記領域移動と前記第2の上書きと前記第2の処理との組み合わせが1または複数回実行された後、さらに前記領域移動を行うに際して所定の条件が満たされた場合に、前記読み込み対象領域を前記第1の次元方向とは異なる第2の次元方向に移動させ、移動後の前記読み込み対象領域のうち前記第2の次元方向の先端領域のデータで、前記記憶領域のうち前記第2の次元方向に対応する方向の後端領域の第3の上書きを行い、
     前記処理部は、前記第3の上書き後の前記記憶領域のデータに基づく第3の処理を実行する、
     請求項6に記載の情報処理装置。
  9.  前記所定の条件は、前記読み込み対象領域を前記第1の次元方向に移動させると前記読み込み対象領域が前記外部メモリの対象範囲の外側に出てしまうという条件である、
     請求項8に記載の情報処理装置。
  10.  前記記憶制御部は、第2のポインタを前記第2の次元方向に対応する方向の後端領域に設定し、前記第2の次元方向の先端領域のデータで前記第2のポインタが示す位置に上書きすることによって、前記第3の上書きを行う、
     請求項8に記載の情報処理装置。
  11.  前記記憶制御部は、前記第2のポインタを前記第2の次元方向に対応する方向に移動させるとともに、前記外部メモリにおいて前記読み込み対象領域を前記第2の次元方向に移動させ、移動後の前記読み込み対象領域のうち前記第2の次元方向の先端領域のデータで、移動後の前記第2のポインタが示す位置に第4の上書きを行い、
     前記処理部は、前記第4の上書き後の前記記憶領域のデータに基づく第4の処理を実行する、
     請求項10に記載の情報処理装置。
  12.  前記第1の次元方向と前記第2の次元方向との正負の別が同じ場合には、前記第1のポインタおよび前記第2のポインタとして同一のポインタが使用される、
     請求項10に記載の情報処理装置。
  13.  前記第1の次元方向と前記第2の次元方向との正負の別が異なる場合には、前記第1のポインタおよび前記第2のポインタとして異なるポインタが使用される、
     請求項10に記載の情報処理装置。
  14.  前記記憶制御部は、前記記憶領域のデータに基づく処理の実行結果、および、前記第1の処理の実行結果を前記外部メモリの書き込み対象領域に書き込む、
     請求項1に記載の情報処理装置。
  15.  前記複数次元は、2次元であり、
     前記読み込み対象領域のデータは、画像データである、
     請求項1に記載の情報処理装置。
  16.  前記記憶領域のデータに基づく処理は、前記画像データと係数データとを画素ごとに乗算し、画素ごとの乗算結果の和を算出する処理である、
     請求項15に記載の情報処理装置。
  17.  複数次元を有する外部メモリの読み込み対象領域から読み込んだデータを、前記複数次元を有する記憶領域に書き込むことと、
     前記記憶領域のデータに基づく処理を実行することと、
     前記外部メモリにおいて前記読み込み対象領域を第1の次元方向に移動させ、移動後の前記読み込み対象領域のうち前記第1の次元方向の先端領域のデータで、前記記憶領域のうち前記第1の次元方向に対応する方向の後端領域の第1の上書きを行うことと、
     前記第1の上書き後の前記記憶領域のデータに基づく第1の処理を実行することと、
     を含む、情報処理方法。
  18.  コンピュータを、
     複数次元を有する外部メモリの読み込み対象領域から読み込んだデータを、前記複数次元を有する記憶領域に書き込む記憶制御部と、
     前記記憶領域のデータに基づく処理を実行する処理部と、を備え、
     前記記憶制御部は、前記外部メモリにおいて前記読み込み対象領域を第1の次元方向に移動させ、移動後の前記読み込み対象領域のうち前記第1の次元方向の先端領域のデータで、前記記憶領域のうち前記第1の次元方向に対応する方向の後端領域の第1の上書きを行い、
     前記処理部は、前記第1の上書き後の前記記憶領域のデータに基づく第1の処理を実行する、
     情報処理装置として機能させるためのプログラム。
PCT/JP2019/023828 2018-06-29 2019-06-17 情報処理装置、情報処理方法およびプログラム WO2020004098A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US17/250,245 US11520505B2 (en) 2018-06-29 2019-06-17 Information processing apparatus and information processing method
CN201980042150.XA CN112368687A (zh) 2018-06-29 2019-06-17 信息处理设备、信息处理方法和程序

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2018125129A JP2020004247A (ja) 2018-06-29 2018-06-29 情報処理装置、情報処理方法およびプログラム
JP2018-125129 2018-06-29

Publications (1)

Publication Number Publication Date
WO2020004098A1 true WO2020004098A1 (ja) 2020-01-02

Family

ID=68986296

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2019/023828 WO2020004098A1 (ja) 2018-06-29 2019-06-17 情報処理装置、情報処理方法およびプログラム

Country Status (4)

Country Link
US (1) US11520505B2 (ja)
JP (1) JP2020004247A (ja)
CN (1) CN112368687A (ja)
WO (1) WO2020004098A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7402623B2 (ja) * 2019-06-17 2023-12-21 キヤノン株式会社 フィルタ処理装置及びその制御方法
CN114638352B (zh) * 2022-05-18 2023-05-30 成都登临科技有限公司 一种处理器架构、处理器及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11288384A (ja) * 1998-04-01 1999-10-19 Canon Inc データ格納方法及び装置
JP2008146545A (ja) * 2006-12-13 2008-06-26 Sony Corp アドレス生成回路、バッファ回路、情報処理装置および撮像システム
JP2017079017A (ja) * 2015-10-21 2017-04-27 キヤノン株式会社 畳み込み演算装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5461718A (en) * 1992-04-24 1995-10-24 Digital Equipment Corporation System for sequential read of memory stream buffer detecting page mode cycles availability fetching data into a selected FIFO, and sending data without aceessing memory
JP5071977B2 (ja) * 2004-07-14 2012-11-14 クゥアルコム・インコーポレイテッド キャッシュメモリーを管理するシステムと方法
CN1993709B (zh) * 2005-05-20 2010-12-15 索尼株式会社 信号处理设备
CN102077268A (zh) * 2008-09-08 2011-05-25 内德·M·阿多特 数字视频滤波器和图像处理
US8634023B2 (en) * 2009-07-21 2014-01-21 Qualcomm Incorporated System for video frame synchronization using sub-frame memories
US9092429B2 (en) * 2012-10-23 2015-07-28 Analog Devices Global DMA vector buffer
US20140184630A1 (en) * 2012-12-27 2014-07-03 Scott A. Krig Optimizing image memory access
JP6253514B2 (ja) * 2014-05-27 2017-12-27 ルネサスエレクトロニクス株式会社 プロセッサ
GB2543064B (en) * 2015-10-06 2018-08-22 Displaylink Uk Ltd Managing display data
US10664751B2 (en) * 2016-12-01 2020-05-26 Via Alliance Semiconductor Co., Ltd. Processor with memory array operable as either cache memory or neural network unit memory
CN106599989B (zh) * 2015-10-08 2019-04-09 上海兆芯集成电路有限公司 神经网络单元和神经处理单元阵列
US10430706B2 (en) * 2016-12-01 2019-10-01 Via Alliance Semiconductor Co., Ltd. Processor with memory array operable as either last level cache slice or neural network unit memory
CN106940815B (zh) * 2017-02-13 2020-07-28 西安交通大学 一种可编程卷积神经网络协处理器ip核

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11288384A (ja) * 1998-04-01 1999-10-19 Canon Inc データ格納方法及び装置
JP2008146545A (ja) * 2006-12-13 2008-06-26 Sony Corp アドレス生成回路、バッファ回路、情報処理装置および撮像システム
JP2017079017A (ja) * 2015-10-21 2017-04-27 キヤノン株式会社 畳み込み演算装置

Also Published As

Publication number Publication date
JP2020004247A (ja) 2020-01-09
US20210200455A1 (en) 2021-07-01
US11520505B2 (en) 2022-12-06
CN112368687A (zh) 2021-02-12

Similar Documents

Publication Publication Date Title
CN109542515B (zh) 运算装置及方法
KR102486030B1 (ko) 완전연결층 신경망 정방향 연산 실행용 장치와 방법
CN111353589B (zh) 用于执行人工神经网络正向运算的装置和方法
TWI690896B (zh) 影像處理器、由其執行之方法、及非暫態機器可讀儲存媒體
JP5986188B2 (ja) 書込マスクを用いて2つのソースオペランドを単一のデスティネーションに融合するシステム、装置及び方法
US11500811B2 (en) Apparatuses and methods for map reduce
KR20190043643A (ko) 높은 성능, 전력 효율, 프로그램 가능 이미지 처리 프로세싱을 위한 아키텍처
JP4934356B2 (ja) 映像処理エンジンおよびそれを含む映像処理システム
JP5628435B2 (ja) 半導体チップ上に実装されるベクトル論理的縮約動作
US20190065199A1 (en) Saving and restoring non-contiguous blocks of preserved registers
CN113849182A (zh) 用以基于图注意力网络分析和增强软件的系统
WO2020004098A1 (ja) 情報処理装置、情報処理方法およびプログラム
KR20230109791A (ko) 패킹된 데이터 정렬 플러스 계산 명령어, 프로세서,방법, 및 시스템
JP2011141823A (ja) データ処理装置および並列演算装置
US20160070642A1 (en) Memory control and data processing using memory address generation based on differential addresses
JP2011118752A (ja) コンパイル装置
US11256518B2 (en) Datapath circuitry for math operations using SIMD pipelines
US11126439B2 (en) SIMD operand permutation with selection from among multiple registers
JP2000322235A (ja) 情報処理装置
JP2010117806A (ja) 半導体装置、および、半導体装置によるデータ処理方法
US11842200B2 (en) Multi-modal gather operation
JP2010271799A (ja) 並列計算装置
Le-Huu et al. A proposed RISC instruction set architecture for the MAC unit of 32-bit VLIW DSP processor core
JP5437878B2 (ja) 情報処理装置
Stratton et al. Optimizing Halide for Digital Signal Processors

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

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

Country of ref document: EP

Kind code of ref document: A1