WO2020003345A1 - 演算処理装置 - Google Patents
演算処理装置 Download PDFInfo
- Publication number
- WO2020003345A1 WO2020003345A1 PCT/JP2018/023974 JP2018023974W WO2020003345A1 WO 2020003345 A1 WO2020003345 A1 WO 2020003345A1 JP 2018023974 W JP2018023974 W JP 2018023974W WO 2020003345 A1 WO2020003345 A1 WO 2020003345A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- storage memory
- unit
- input
- map data
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Definitions
- the present invention relates to an arithmetic processing device, and more particularly, to a circuit configuration of an arithmetic processing device that performs deep learning using a convolutional neural network.
- CNN convolutional neural network
- the processing layer of the CNN includes a Convolution layer (convolution layer) for performing a Convolution process including a convolution operation process, a non-linear process, and a reduction process (pooling process), and a FullConnect that multiplies all inputs (pixel data) by a coefficient and performs cumulative addition. It is broadly classified into a FullConnect layer (a fully connected layer) that performs processing.
- Image recognition by deep learning using CNN can realize a high recognition rate.
- the data storage buffer and the coefficient storage buffer inevitably have a large capacity, but a large-capacity memory cannot be mounted on an LSI (Large-Scale / Integrated / Circuit).
- the relationship between the FM (Feature Map) size and the number of FMs (the number of FM surfaces) in the (K-1) th layer and the Kth layer may be as follows. In many cases, optimization is difficult when determining the memory size of a circuit.
- FM size [K] 1/4 x FM size [K-1]
- FM number [K] 2 ⁇ FM number [K-1]
- the CNN is generally implemented by software processing using a high-performance PC or a GPU (Graphics Processing Unit).
- a high-performance PC or a GPU (Graphics Processing Unit).
- it is necessary to configure a heavy part of processing by hardware.
- Patent Document 1 An example of such a hardware implementation is described in Patent Document 1.
- Patent Document 1 discloses an arithmetic processing device in which a plurality of arithmetic blocks and a plurality of memories are mounted to improve the efficiency of arithmetic processing.
- arithmetic processing unit each of which has an arithmetic block and a buffer to be paired with it, executes convolution arithmetic processing in parallel via a relay unit, and exchanges cumulative addition data between the arithmetic units, Even if the input network is large, an input to the activation process can be created at once.
- Patent Document 1 has a configuration in which an operation block and a data holding unit form a pair, and can cope with a network exceeding the number of operation blocks by repeatedly performing cumulative addition via a redundant data holding unit.
- specific control particularly in the data holding unit, requires optimization of the buffer and control to cope with the relationship between the number of FMs and the FM size as described above, but this is not considered.
- an object of the present invention is to provide an arithmetic processing device having a memory size that can be applied to deep learning and can be easily mounted on an LSI.
- a first aspect of the present invention is an arithmetic processing device for deep learning that performs a Convolution process and a Full Connect process, and includes a data storage memory composed of three or more SRAMs, and input valid data from input feature amount map data.
- a counter for counting the number and converting the coordinates into coordinates, an SRAM writing control unit for converting the coordinates converted by the counter into an address in the data storage memory and storing the input feature amount map data in the data storage memory;
- a data storage memory management unit having an SRAM read control unit for receiving the input feature amount map data stored in a predetermined manner from the data storage memory in response to an external request; coefficient storage for storing coefficients A memory, and a status of the data storage memory management unit.
- a coefficient storage memory management unit that retrieves a coefficient corresponding to data retrieved from the data storage memory management unit from the coefficient storage memory with reference to a data storage memory; and a data input that acquires the input feature amount map data from a storage external memory.
- An operation unit that obtains map data, obtains the coefficients from the coefficient storage memory, and performs a filtering process, a cumulative addition process, a non-linear operation process, and a pooling process; and connects M parallel data output from the operation unit.
- the counter generates an ID of the input feature amount map data that is input, and the SRAM write control unit Is to virtually divide each of the SRAMs constituting the data storage memory into a plurality of areas, switch the writing area by the ID, and store different input feature amount map data of the same coordinates in the same SRAM.
- the SRAM read control unit switches the address so as to access the area corresponding to the ID of the input feature map data to be extracted, and the arithmetic unit executes a filter operation in N parallel.
- a filter operation unit that performs cumulative addition of all operation results of the filter operation unit;
- a second adder for cumulatively adding the cumulative addition result of the adder in a subsequent stage, a flip-flop for holding the cumulative addition result of the second adder, and a plurality of input feature quantity maps stored in one data storage memory
- an ID of the input feature amount map data is generated, and control is performed such that the coefficient having the same ID as the input feature amount map data input from the SRAM read control unit is obtained from the coefficient storage memory management unit.
- an arithmetic control unit for controlling the second adder to perform cumulative addition of the cumulative addition result of the first adder until all input feature amount map data is obtained.
- the arithmetic unit executes an arithmetic process for each input feature amount map data of the same coordinates, and the SRAM writing control unit executes an input process of the same coordinates every time the arithmetic process of the input feature amount map data of the same coordinates is completed.
- the area in which the feature amount map data has been stored may be opened to store data subsequent to the input feature amount map data.
- the SRAM read control unit reads the input feature map data from the data storage memory so as to execute an arithmetic process of m output feature map data to be output from one input feature map data.
- the data output unit may count the valid data to identify which output feature map data is, generate an address in the output feature map data appropriately, and output the generated address to the external storage memory.
- the SRAM read control unit reads a part of the input feature map data from the data storage memory, and the arithmetic unit reads the partial data of the input feature map data input from the SRAM read control. Performing an arithmetic process to create partial data of the output feature map data, and after processing of the partial data of the input feature map data, processing of the next partial data of the input feature map data; You may proceed to.
- the filter size is large and cannot fit in the data storage memory (IBUF).
- FIG. 1 is a block diagram illustrating a configuration of an arithmetic processing device according to an embodiment of the present invention.
- FIG. 3 is a diagram illustrating a configuration of a calculation unit of the calculation processing device according to the embodiment of the present invention.
- FIG. 2 is a diagram illustrating a configuration of an IBUF (data storage memory) management unit of the arithmetic processing device according to the embodiment of the present invention.
- FIG. 2 is a diagram illustrating a configuration of an IBUF (data storage memory) of the arithmetic processing device according to the embodiment of the present invention.
- FIG. 1 is a block diagram illustrating a configuration of an arithmetic processing device according to an embodiment of the present invention.
- FIG. 3 is a diagram illustrating a configuration of a calculation unit of the calculation processing device according to the embodiment of the present invention.
- FIG. 2 is a diagram illustrating a configuration of an IBUF (data storage memory) management unit of the arithmetic processing device according to the
- FIG. 6 is a diagram illustrating a state in which an iFM (input feature amount map) input to one input channel is divided and stored in an IBUF in the arithmetic processing device according to the embodiment of the present invention.
- FIG. 4 is a diagram illustrating a state in which an iFM divided and stored in an IBUF is processed in the arithmetic processing device according to the embodiment of the present invention.
- FIG. 4 is a diagram illustrating a control flow for writing data to an IBUF in the arithmetic processing device according to the embodiment of the present invention.
- FIG. 4 is a diagram illustrating an example of an iFM data arrangement and coefficients in the arithmetic processing device according to the embodiment of the present invention.
- FIG. 4 is a diagram illustrating a timing chart at the time of a Convolution process in the arithmetic processing device according to the embodiment of the present invention.
- FIG. 4 is a diagram illustrating an example of a control flow of an SRAM read control unit in the arithmetic processing device according to the embodiment of the present invention. It is a figure showing the processing image of CNN in the arithmetic processing unit concerning an embodiment of the present invention.
- FIG. 4 is a diagram illustrating an example of a control flow of an SRAM read control unit in the arithmetic processing device according to the embodiment of the present invention.
- FIG. 4 is a diagram illustrating a timing chart at the time of calculation in the calculation processing device according to the embodiment of the present invention.
- FIG. 4 is a diagram illustrating an output image of a DRAM to which data is written in the arithmetic processing device according to the embodiment of the present invention.
- FIG. 1 is a block diagram illustrating a configuration of an arithmetic processing device according to an embodiment of the present invention.
- the arithmetic processing unit 1 includes a controller 2, a data input unit 3, a coefficient input unit 4, an IBUF (data storage memory) management unit 5, a WBUF (coefficient storage memory) management unit 6, an operation unit 7, An output unit 8 is provided.
- the data input unit 3, the coefficient input unit 4, and the data output unit 8 are connected to a DRAM (external storage memory) 9 via a bus 10.
- the arithmetic processing device 1 generates an output feature map (oFM) from the input feature map (iFM).
- the IBUF management unit 5 includes a memory (data storage memory, IBUF) for storing input feature map (iFM) data, a data storage memory management / control circuit (data storage memory control circuit), a counter 51 described later, An SRAM write control unit 52, N IBUFs (data storage memories) (0 to N-1), and an SRAM read control unit 53 are provided.
- the IBUF is composed of three or more SRAMs.
- the IBUF management unit 5 counts the number of valid data in the input data (iFM data), converts it into coordinates, converts it into an IBUF address (address in IBUF), stores the data in the data storage memory, The iFM data is retrieved from the data storage memory by a predetermined method. When a plurality of FMs are input, the IBUF management unit 5 controls the data of the same coordinates to enter the same IBUF.
- the WBUF management unit 6 includes a memory for storing coefficients (coefficient storage memory, WBUF), and a coefficient storage memory management / control circuit (coefficient storage memory control circuit).
- the WBUF management unit 6 refers to the status of the IBUF management unit 5 and fetches a coefficient corresponding to the data fetched from the IBUF management unit 5 from the coefficient storage memory.
- the DRAM 9 stores iFM data, oFM data, and coefficients.
- the data input unit 3 acquires an input feature amount map (iFM) from the DRAM 9 by a predetermined method, and transfers the input feature amount map (iFM) to the IBUF (data storage memory) management unit 5.
- the data output unit 8 writes output feature amount map (oFM) data to the DRAM 9 by a predetermined method. Specifically, the data output unit 8 connects the M parallel data output from the arithmetic unit 7 and outputs the data to the DRAM 9.
- the coefficient input unit 4 acquires a coefficient from the DRAM 9 by a predetermined method and transfers the coefficient to a WBUF (coefficient storage memory) management unit 6.
- the calculation unit 7 acquires data from the IBUF (data storage memory) management unit 5 and coefficients from the WBUF (coefficient storage memory) management unit 6 and performs data processing such as filtering, cumulative addition, non-linear calculation, and pooling. .
- the controller 2 controls the entire circuit.
- CNN similar processing is performed for a plurality of processing layers.
- the arithmetic processing device 1 When the arithmetic processing device 1 according to the embodiment of the present invention is used, the arithmetic unit 7 performs only one layer of processing with only data and coefficients necessary for one layer of processing, and the data and coefficients are stored in the DRAM 9. Placed one by one. Then, processing for the required number of layers is repeatedly executed.
- the arithmetic processing device 1 outputs a subject estimation result as final output data, and obtains the subject estimation result by processing the final output data using a processor (or a circuit).
- FIG. 2 is a diagram showing a configuration of the arithmetic unit 7 of the arithmetic processing device according to the embodiment of the present invention.
- the number of input channels of the arithmetic unit 7 is N (N is a positive number equal to or greater than 1), that is, the input data (iFM data) is N-dimensional, and N-dimensional input data is processed in parallel (input N parallel).
- the number of output channels of the operation unit 7 is M (M is a positive number equal to or greater than 1), that is, the output data is M-dimensional, and M-dimensional input data is output in parallel (output M parallel).
- M is a positive number equal to or greater than 1
- M-dimensional input data is output in parallel (output M parallel).
- the arithmetic unit 7 has a configuration in which the number of input channels is N and the number of output channels is M, and the degree of parallelism is N ⁇ M. Since the size of the number N of input channels and the number M of output channels can be set (changed) according to the size of CNN, they are appropriately set in consideration of processing performance and circuit scale.
- the operation unit 7 includes an operation control unit 71 that controls each unit in the operation unit.
- the operation unit 7 includes a filter operation unit 72, a first adder 73, a second adder 74, an FF (flip-flop) 75, a non-linear conversion unit 76, and a pooling processing unit 77 for each layer. Prepare. And there are M such layers.
- the arithmetic control unit 71 issues a request to a stage preceding the arithmetic unit 7 so that predetermined data is input to the filter arithmetic unit 72.
- the filter operation unit 72 is configured so that the multiplier and the adder can be simultaneously executed in N parallel at the same time, performs a filtering process on the input data, and outputs the result of the filtering process in N parallel.
- the first adder 73 adds all the results of the filter processing in the filter operation unit 72 which are executed and output in N parallel.
- the second adder 74 accumulatively adds the operation results of the first adder 73 input in a time-division manner.
- the second adder 74 accumulates and adds the operation results of the first adder 73 until all the iFM data has been obtained.
- the FF 75 is provided to hold the result of the cumulative addition.
- the non-linear conversion unit 76 performs a non-linear operation process using an Activate function or the like on the result of the cumulative addition in the second adder 74 and the FF 75. Although the specific implementation is not particularly defined, the non-linear operation process is performed by, for example, broken line approximation.
- the pooling processing unit 77 performs pooling processing such as selecting and outputting the maximum value (Max @ Pooling) from a plurality of data input from the non-linear conversion unit 76 and calculating the average value (Average @ Pooling).
- the non-linear conversion unit 76 and the pooling processing unit 77 can be skipped by the arithmetic control unit 71.
- the calculation control unit 71 controls the above-described processing performed in each unit in the calculation unit 7.
- the size of the number N of input channels and the number M of output channels can be set (changed) in accordance with the size of CNN in the arithmetic unit 7, so that processing performance and circuit scale are taken into consideration. And set it appropriately.
- FIG. 3 is a diagram showing a configuration of an IBUF (data storage memory) management unit 5 of the arithmetic processing device according to the embodiment of the present invention.
- the IBUF management unit 5 includes a counter 51, an SRAM write control unit 52, N IBUFs (data storage memories) (0 to N-1), and an SRAM read control unit 53.
- the iFM data may be input in a time-division manner. Therefore, an ID for identifying which iFM data is input. (Hereinafter referred to as iFMID).
- the iFMID is a representative value determined for the data obtained by the data input unit 3 from the DRAM 9 in units of burst transfer. For example, the iFMID of the first 1 to N planes is set to 0, and the iFMID of the N + 1 to 2N planes is set. Are sequentially changed incrementally, such as 1,.
- the counter 51 generates the ID (iFMID) of the input iFM data, counts the number of valid data in the input data (the number of valid input data) for each iFMID, converts it into coordinates (iFM coordinates), and outputs the coordinates. .
- the SRAM write control unit 52 converts the iFM coordinates output from the counter 51 into an IBUF address (an address in the IBUF), and stores the data (iFM data) in the IBUF. Also, the SRAM write control unit 52 virtually divides each SRAM constituting the IBUF into a plurality of areas, and switches the write area according to the iFMID. The SRAM write control unit 52 controls so that different iFM data of the same coordinates are stored in the same SRAM.
- the SRAM write control unit 52 releases the area storing the iFM data of the same coordinates and stores the data following the iFM data.
- the SRAM read control unit 53 receives a request (req) from the outside and extracts data from the IBUF by a predetermined method. Also, the SRAM read control unit 53 switches the address so as to access the area in the IBUF corresponding to the iFMID to be taken out.
- the operation control unit 71 of the operation unit 7 generates an iFMID to extract a plurality of iFMs stored in one IBUF, and calculates a coefficient of the same iFMID as iFM data input from the SRAM read control unit 53. Control to acquire from WBUF. Further, the arithmetic control unit 71 uses the second adder 74 to cumulatively add the arithmetic results of the first adder 73 until all the iFM data has been obtained.
- FIG. 4 is a diagram showing a configuration of an IBUF (data storage memory) of the arithmetic processing device according to the present embodiment.
- Each IBUF is composed of three or more SRAMs.
- one IBUF (IBUF_i) is composed of four SRAMs, of which three SRAMs (SRAM0 to SRAM2) are used to extract data necessary for a filter operation.
- the remaining one SRAM (SRAM3) is used for writing data obtained from the DRAM.
- the IBUF is composed of four SRAMs, but the number of SRAMs may be any number as long as it is three or more. By setting the number of SRAMs to three or more, for example, even when the read position overlaps (straddles) the SRAM1 and the SRAM2, writing to the SRAM3 can be performed in parallel while data is being sequentially extracted. .
- FIG. 5 is a diagram illustrating a state in which an iFM input to one input channel is divided and stored in the IBUF.
- FIG. 6 is a diagram illustrating a state in which an iFM divided and stored in the IBUF is processed.
- the figure shows an example in which the IBUF is composed of four SRAMs (SRAM1,..., SRAM4). That is, the IBUF is physically divided into four SRAMs.
- Each SRAM (SRAM1,..., SRAM4) is virtually divided into n pieces.
- Each divided area of the SRAM stores data of the same area (coordinate) of the iFM. Specifically, data iFM_0 to iFM_n ⁇ 1 corresponding to the area A of the iFM are stored in the divided area of the SRAM 1.
- iFM_n to iFM_2n-1 corresponding to the area B of the iFM are stored.
- iFM_2n to iFM_3n-1 corresponding to the area C of the iFM are stored.
- iFM_3n to iFM_4n-1 corresponding to the area D of the iFM are stored.
- data of the same coordinate position of iFM is stored in one SRAM. This is because data at the same coordinate position of the iFM is simultaneously extracted, arithmetic processing is performed, and sliding window processing is performed.
- IiFM_0, iFM_1,..., IFM_n ⁇ 1 stored in the SRAM 1 are data at the same coordinate position, are processed at the same timing, and become unnecessary at the same timing.
- the SRAM in which the unnecessary data is stored is sequentially released to store the data following the iFM, iFM_4n on the first surface, iFM_4n + 1 on the second surface,..., IFM_5n-1 on the nth surface.
- the sliding window processing is performed.
- the size of each virtually divided area in one SRAM area will be referred to as “divided area size”.
- the divided area size corresponds to the amount of iFM data that can be stored in each area. Since the used data can be discarded in divided area size units, a sliding window process can be performed in divided area size units, and the used area in the SRAM can be released to input data following the iFM.
- the divided area size (the divided area size in which the data of the first surface is stored) in which the divided area size of the iFM_0 of the SRAM1, the iFM_n of the SRAM2, the iFM_2n of the SRAM3, and the iFM_3n of the SRAM4 is stored.
- Window processing is performed.
- a sliding window process is performed on the divided area size (the divided area size in which the data of the second surface is stored) in which iFM_1 of SRAM1, iFM_n + 1 of SRAM2, iFM_2n + 1 of SRAM3, and iFM_3n + 1 of SRAM4 are stored.
- the divided area size (the divided area size in which the data of the n-th plane is stored) in which iFM_n-1 of SRAM1, iFM_2n-1 of SRAM2, iFM_3n-1 of SRAM3, and iFM_4n-1 of SRAM4 are stored. Sliding window processing is performed.
- a plurality of FMs are processed in a time-division manner in each of the plurality of arithmetic units, so that a large network can be handled.
- FIG. 8 is a diagram showing a control flow for writing data to the IBUF in the arithmetic processing device according to the present embodiment.
- An iFM division loop starts from step S1.
- step S2 it is determined whether or not the IBUF is writable. If the IBUF cannot be written, the process proceeds to step S3, waits, and returns to step S2.
- step S4 If the IBUF is writable, proceed to step S4.
- a divided area size loop starts from step S4, and an iFM number (n) loop starts from step S5.
- step S6 the address is calculated, and in step S7, it is determined whether or not there is a data input. If there is no data input, the process proceeds to step S8, waits, and returns to step S7.
- step S9 If there is data input, the process proceeds to step S9, and data is written to IBUF.
- step S10 it is determined whether or not the processing for the number of iFMs (n) has been performed. If the processing has not been performed, the process returns to step S5; otherwise, the process proceeds to step S11.
- step S11 it is determined whether or not the processing for the size of the divided area has been performed. If the processing has not been performed, the process returns to step S4; otherwise, the process proceeds to step S12.
- step S12 it is determined whether or not the iFM division has been completed. If the division has not been completed, the process returns to step S1, and if completed, the process (the process of writing data to the IBUF) ends.
- Each input channel includes a plurality of iFMs, but it is assumed that two iFMs (iFM1, iFM2) are input. Then, it is assumed that the data arrangement of the iFM and the coefficients of the filter applied thereto are as shown in FIG.
- FIG. 9 is a diagram illustrating an example of iFM data arrangement and coefficients.
- # iFM1 the data arrangement is as shown in FIG. a1, b1,..., p1 indicate data, and 4 ⁇ 4 data are arranged.
- the coefficient of the filter applied to each of 3 ⁇ 3 data (a1, b1, c1, d1, e1, f1, g1, i1, j1, k1) is as shown in FIG. 9B.
- w1, w2,..., w9 indicate respective data coefficients.
- the data arrangement is as shown in FIG. .., p2 indicate data, and 4 ⁇ 4 data are arranged.
- the coefficients of the filter applied to each of the 3 ⁇ 3 data (a2, b2, c2, d2, e2, f2, g2, i2, j2, k2) are as shown in FIG. 9D.
- x1, x2, ..., x9 indicate respective data coefficients.
- the timing chart is as shown in FIG. FIG. 10 is a diagram illustrating a timing chart when the number of iFMs is 2N during the Convolution processing in the arithmetic processing device according to the present embodiment.
- the filter operation result of the 3 ⁇ 3 nine data a1 to k1 and the coefficients w1 to w9 is A
- the filter operation result of the 3 ⁇ 3 nine data a2 to k2 and the coefficients x1 to x9 is B.
- the result of the filter operation is cumulatively added in the time direction in the second adder, and the result is held in the FF.
- the final cumulative addition result in the second adder is ⁇ .
- iFM1 and iFM2 are input in a time-division manner, accumulated and added by the second adder, and the result is held in the FF.
- the result of the second adder is A or A + B
- the output is not output to the non-linear conversion unit because the cumulative addition is still in progress.
- the cumulative addition in the second adder is completed, the cumulative addition result ⁇ is output to the non-linear converter, and the FF returns to the initial value.
- the nonlinear conversion unit performs a nonlinear conversion f ( ⁇ ).
- FIG. 11 is a diagram illustrating an example of a control flow of the SRAM read control unit in the arithmetic processing device according to the present embodiment.
- the oFM_V loop is a loop that processes oFM data in the V direction (horizontal direction).
- the oFM_H loop starts.
- the oFM_H loop is a loop that processes oFM data in the H direction (vertical direction).
- a WBUF access address is generated, and in parallel, an IBUF access address is generated in step S26.
- step S24 data storage determination is performed in step S24. If the data storage determination is OK, the process proceeds to the pulley group in step S29. If the data storage determination is NG, the process waits in step S25 and returns to step S24.
- step S27 After the IBUF access address is generated in step S26, data storage determination is performed in step S27. If the data storage determination is OK, the process proceeds to the pulley group in step S29. If the data storage determination is NG, the process waits in step S28 and returns to step S27.
- step S29 After the pulley group in step S29, the process proceeds to the iFM number loop in step S30 and the filter size loop in step S31, and the processing of the calculation unit is performed in step S32. In step S33, it is determined whether or not each loop can be ended. If not, the process returns to each loop. If all loops have been ended, the control flow ends.
- the determination of ⁇ IBUF data storage is a determination as to whether or not coordinate data of all iFMs necessary for filter processing including pooling processing has been stored in IBUF, and the innermost loop is after determination. Note that the determination method can be variously changed. If the determination is made in units of H size of oFM, an oFM_H loop is also placed after the data storage determination.
- the memory control and memory storage method described in the present embodiment can also be applied to an algorithm for generating output data using a plurality of frames as input.
- the present invention can also be applied to compression processing such as MPEG using inter-frame correlation or noise reduction processing.
- Embodiment 2 In the first embodiment, a circuit for processing one CNN layer and how to expand and process the iFM input thereto into the IBUF have been described.
- the second embodiment particularly corresponds to a case where the number of oFMs (the number of surfaces of the oFM) exceeds the degree M of circuit parallelism.
- FIG. 12 is a diagram showing a processing image of the CNN of the present embodiment.
- CNN is a process of calculating one pixel of oFM from the same coordinate data of all iFMs.
- control is performed such that all oFMs that can be processed with the data stored in the IBUF are created. More specifically, when the number of possible processings for one oFM is executed from the iFM (only a part of which is stored) input to the IBUF, the next oFM is supported without updating the IBUF. Perform processing (coefficients are switched as appropriate).
- the “possible number of processings” it is efficient to set the “possible number of processings” to the size of the divided area as a unit on the IBUF. This is because the data of one surface of iFM in one SRAM constituting the IBUF is the division area size, and if processing is performed in this unit, the data of one SRAM is used when the processing of the number of oFMs to be output is completed. Because it can be opened. Note that the divided area size is the data amount in iFM, and does not always match the data amount in oFM. This is because reduction occurs due to pooling processing.
- oFM is not changed in pixel units. It is more efficient to transfer a certain amount of data to the DRAM. If there is no problem in the buffer size or the transfer efficiency, the switching may be performed in pixel units.
- FIG. 13 is a diagram illustrating an example of a control flow of the SRAM read control unit in the arithmetic processing device according to the present embodiment.
- the “dM counter” corresponds to a loop counter for the size of the divided area.
- the dM counter is set to "0".
- the oFM_V loop starts from step S42, and the oFM_H loop starts from step S43.
- the oFM_V loop is a loop that processes oFM data in the V direction (horizontal direction)
- the oFM_H loop is a loop that processes oFM data in the H direction (vertical direction).
- step S45 data storage determination is performed in step S45. If the data storage determination is OK, the process proceeds to the pulley group in step S50. If the data storage determination is NG, the process waits in step S46 and returns to step S45.
- step S48 data storage determination is performed in step S48. If the data storage determination is OK, the process proceeds to the pulley group in step S50. If the data storage determination is NG, the process waits in step S49 and returns to step S48.
- step S50 After the pulley group in step S50, the process proceeds to the iFM number loop in step S51 and the filter size loop in step S52, and the processing of the calculation unit is performed in step S53. In steps S54 and S55, it is determined whether each loop can be ended. If not completed, the process returns to each loop. If all loops are completed, the process proceeds to step S56.
- step S56 it is determined whether the value of the dM counter is equal to or larger than the size of the divided area. If the value of the dM counter is equal to or larger than the size of the divided area, the process proceeds to step S57, where the dM counter is set to zero. Then, in step S58, the coefficient is sent to the next oFM, and the process proceeds to step S60.
- step S59 If the dM counter is not equal to or larger than the divided area size (if the dM counter is smaller than the divided area size), the process proceeds to step S59, and the value of the dM counter is increased. Then, the process proceeds to step S60.
- step S60 it is determined whether the oFM_V loop and the oFM_H loop may be ended. If the oFM_V loop and the oFM_H loop have not been ended, the process returns to each loop.
- FIG. 14 shows an example of a timing chart when the number of iFMs is 2N and the number of oFMs is 3M in the arithmetic processing device according to the present embodiment. Assuming that the divided area size is 4D, the number of data on the oFM is equal to the number of oFMs ⁇ D because of pooling.
- FIG. 15 is a diagram showing an output image of a DRAM to which data is written. The numbers in the figure indicate the output order.
- the SRAM read control unit in the IBUF management unit extracts data from the IBUF so as to execute the filter processing of the output m oFMs from the same input data. Then, the data output unit counts the valid data, identifies which oFM data is, generates an address appropriately, and outputs the generated address to the DRAM. Thus, the number of oFMs exceeding the output parallelism can be output without rereading the iFM.
- the SRAM read control unit reads a part of the iFM data from the IBUF.
- the calculation unit performs a calculation process on a part of the iFM data input from the SRAM read control unit (processes the read data) to create a part of the oFM data. Then, when the processing is completed, the process proceeds to processing of partial data next to the iFM data.
- directional terms such as "front, back, up, down, right, left, vertical, horizontal, row, column” and the like are used to describe these directions in the device of the present invention. . Therefore, these terms used to describe the specification of the present invention should be interpreted relatively in the device of the present invention.
- the present invention can be widely applied to an arithmetic processing device that performs deep learning using a convolutional neural network. Calculation processing and data updating can be performed seamlessly without the need.
- Reference Signs List 1 arithmetic processing unit 2 controller 3 data input unit 4 coefficient input unit 5 IBUF (data storage memory) management unit 6 WBUF (coefficient storage memory) management unit 7 arithmetic unit 8 data output unit 9 DRAM (external memory for storage) Reference Signs List 10 bus 51 counter 52 SRAM write control unit 53 SRAM read control unit 71 operation control unit 72 filter operation unit 73 first adder 74 second adder 75 FF (flip-flop) 76 Non-linear converter 77 Pooling processor
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Software Systems (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Image Processing (AREA)
- Image Analysis (AREA)
- Complex Calculations (AREA)
Abstract
Convolution処理とFullConnect処理を行うディープラーニング用の演算処理装置のSRAM書き込み制御部は、データ格納メモリを構成するSRAMの各々を仮想的に複数の領域に分割し、IDによって書き込む領域を切り替えるとともに、同じSRAMには同一座標の異なる入力特徴量マップデータが格納されるように制御する。
Description
本発明は、演算処理装置、より詳しくは、畳み込みニューラルネットワークを用いたディープラーニングを行う演算処理装置の回路構成に関する。
従来、複数の処理層が階層的に接続されたニューラルネットワークを用いて演算を実行する演算処理装置がある。特に画像認識を行う演算処理装置では、畳み込みニューラルネットワーク(Convolutional Neural Network、以下CNNという)を用いたディープラーニングが広く行われている。
CNNを用いたディープラーニングによる画像認識では、入力される画像データ(ピクセルデータ)に対して、CNNの複数の処理層における処理が順次施されることにより、画像に含まれる対象物が認識された最終的な演算結果データが得られる。CNNの処理層は、畳み込み演算処理、非線形処理、縮小処理(プーリング処理)等を含むConvolution処理を行うConvolution層(畳み込み層)と、全ての入力(ピクセルデータ)に係数を乗じて累積加算するFullConnect処理を行うFullConnect層(全結合層)とに大きく分類される。
CNNを用いたディープラーニングによる画像認識は、高い認識率を実現できる。しかし、検出する被写体の種類を増やしたり、被写体検出精度を上げるためには、ネットワークを大きくする必要がある。そうするとデータ格納バッファや係数格納バッファが必然的に大容量になるが、LSI(Large-Scale Integrated circuit)にはあまり大容量のメモリを搭載できない。
また、画像認識処理におけるディープラーニングでは、(K-1)層目とK層目におけるFM(Feature Map)サイズとFM数(FMの面数)の関係は次式のような関係になる場合が多く、回路としてメモリサイズを決定する際には最適化が困難である。
FMサイズ[K]=1/4×FMサイズ[K-1]
FM数[K]=2×FM数[K-1]
FM数[K]=2×FM数[K-1]
例えば、CNNのバリエーションの1つであるYolo_v2に対応可能な回路のメモリのサイズを考える場合、FMサイズとFM数の最大値だけで決定しようとすると1GB程度必要となる。実際には、FM数とFMサイズは反比例的関係があるため、計算上は3MB程度あれば十分ではあるが、層別にメモリ管理を緻密に計算して設計しなければならない。
このような問題があることから、CNNは一般的には高性能PCやGPU(Graphics Processing Unit)を用いたソフトウエア処理で実装される。しかし、高速処理を実現するためには処理の重い部分をハードウエアで構成する必要がある。このようなハードウエア実装の例としては、特許文献1に記載がある。
特許文献1は、複数の演算ブロックと複数のメモリを搭載することにより演算処理の効率化を図るようにした演算処理装置を開示している。複数の演算処理ユニットを持ち、それぞれに演算ブロックと、それと対になるバッファがあり、中継部を介して畳み込み演算処理を並列に実行すると共に、演算部間で累積加算データを授受することで、入力のネットワークが大きくても一度に活性化処理への入力を作成できるようになっている。
特許文献1は、演算ブロックとデータ保持部が対をなす構成で、演算ブロック数を超えるネットワークに対しては冗長データ保持部を介して繰り返し累積加算実行する事で対応できるようになっている。しかし、具体的な制御、特にデータ保持部では上述した様なFM数とFMサイズの関係に対応するためのバッファと制御の最適化が必要となるが、それについては考慮されていない。
上述の事情を踏まえ、本発明は、ディープラーニングに適用でき、かつLSIに無理なく搭載できるメモリサイズの演算処理装置を提供することを目的とする。
本発明の第一の態様は、Convolution処理とFullConnect処理を行うディープラーニング用の演算処理装置であって、3個以上のSRAMで構成されたデータ格納メモリと、入力特徴量マップデータから入力有効データ数をカウントして座標に変換するカウンタと、前記カウンタが変換した座標を前記データ格納メモリにおけるアドレスに変換して、前記入力特徴量マップデータを前記データ格納メモリに格納するSRAM書き込み制御部と、外部からのリクエストを受けて、前記データ格納メモリから所定の方法で格納されている前記入力特徴量マップデータを取り出すSRAM読み出し制御部と、を有するデータ格納メモリ管理部と;係数を格納する係数格納メモリを有し、前記データ格納メモリ管理部のステータスを参照して、前記データ格納メモリ管理部から取り出すデータに対応する係数を前記係数格納メモリから取り出す係数格納メモリ管理部と;格納用外部メモリから、前記入力特徴量マップデータを取得するデータ入力部と;前記格納用外部メモリから、前記係数を取得する係数入力部と;入力N並列、出力M並列の構成(N、M≧1の正数)で、前記データ格納メモリから前記入力特徴量マップデータを取得し、前記係数格納メモリから前記係数を取得して、フィルタ処理、累積加算処理、非線形演算処理およびプーリング処理を行う演算部と;前記演算部から出力されるM並列のデータを連結して、出力特徴量マップデータとして前記格納用外部メモリに出力するデータ出力部と;前記データ格納メモリ管理部、前記係数格納メモリ管理部、前記データ入力部、前記データ出力部、および前記演算部を制御するコントローラと;を有し、前記カウンタは、入力された前記入力特徴量マップデータのIDを生成し、前記SRAM書き込み制御部は、前記データ格納メモリを構成する前記SRAMの各々を仮想的に複数の領域に分割し、前記IDによって書き込む領域を切り替えるとともに、同じSRAMには同一座標の異なる入力特徴量マップデータが格納されるように制御し、前記SRAM読み出し制御部は、取り出したい前記入力特徴量マップデータの前記IDに対応する前記領域にアクセスするように前記アドレスを切り替え、前記演算部は、N並列でフィルタ演算を実行するフィルタ演算部と、前記フィルタ演算部の演算結果を全て累積加算する第1加算器と、前記第1加算器の累積加算結果を後段で累積加算する第2加算器と、前記第2加算器の累積加算結果を保持するフリップフロップと、1つのデータ格納メモリに格納されている複数の入力特徴量マップデータを取り出すために、入力特徴量マップデータのIDを生成して、前記SRAM読み出し制御部から入力される入力特徴量マップデータと同じIDの前記係数を前記係数格納メモリ管理部から取得するよう制御し、全ての入力特徴量マップデータを取り終わるまでは、前記第2加算器が前記第1加算器の累積加算結果を累積加算するよう制御する演算制御部と、を有する。
前記演算部は、同一座標の入力特徴量マップデータごとに演算処理を実行し、前記SRAM書き込み制御部は、前記同一座標の入力特徴量マップデータの演算処理が終わるごとに、前記同一座標の入力特徴量マップデータが格納されていた前記領域を開放して、前記入力特徴量マップデータの続きのデータを格納してもよい。
前記SRAM読み出し制御部は、1つの入力特徴量マップデータから、出力するm枚分の出力特徴量マップデータの演算処理を実行するように前記データ格納メモリから前記入力特徴量マップデータを読み出し、前記データ出力部は、有効データをカウントしてどの出力特徴量マップデータであるかを識別し、適切に出力特徴量マップデータにおけるアドレスを生成して、前記格納用外部メモリに出力してもよい。
前記SRAM読み出し制御部は、前記データ格納メモリから前記入力特徴量マップデータの一部データを読み出し、前記演算部は、前記SRAM読み出し制御部から入力された前記入力特徴量マップデータの一部データの演算処理を行い、前記出力特徴量マップデータの一部データを作成し、前記入力特徴量マップデータの前記一部データの処理が終わったら、前記入力特徴量マップデータの次の一部データの処理へと進んでもよい。
本発明の各態様に係る演算処理装置によれば、iFM(入力特徴量マップ)サイズやiFM数(iFMの面数)が大きくてデータ格納メモリ(IBUF)に入りきらないサイズでも、フィルタサイズ分のオーバーラップをせずに演算処理とデータ更新をシームレスに実施することができる。
(実施形態1)
本発明の実施形態について、図面を用いて説明する。図1は、本発明の実施形態に係る演算処理装置の構成を示すブロック図である。
本発明の実施形態について、図面を用いて説明する。図1は、本発明の実施形態に係る演算処理装置の構成を示すブロック図である。
演算処理装置1は、コントローラ2と、データ入力部3と、係数入力部4と、IBUF(データ格納メモリ)管理部5と、WBUF(係数格納メモリ)管理部6と、演算部7と、データ出力部8を備える。データ入力部3と、係数入力部4と、データ出力部8は、バス10を介して、DRAM(格納用外部メモリ)9と接続されている。演算処理装置1は、入力特徴量マップ(iFM)から出力特徴量マップ(oFM)を生成する。
IBUF管理部5は、入力特徴量マップ(iFM)データ格納用のメモリ(データ格納メモリ、IBUF)と、データ格納メモリの管理・制御回路(データ格納メモリ制御回路)と、後述するカウンタ51と、SRAM書き込み制御部52と、N個のIBUF(データ格納メモリ)(0~N-1)と、SRAM読み出し制御部53とを備える。IBUFは、それぞれが3個以上のSRAMから構成される。
IBUF管理部5は、入力データ(iFMデータ)中の有効データ数をカウントして座標に変換し、さらにそれをIBUFアドレス(IBUFにおけるアドレス)に変換し、データをデータ格納メモリに格納するとともに、所定の方法でiFMデータをデータ格納メモリから取り出す。IBUF管理部5は、複数のFMが入力されるときは、同一座標のデータが同じIBUFに入るように制御する。
WBUF管理部6は、係数格納用のメモリ(係数格納メモリ、WBUF)と、係数格納メモリの管理・制御回路(係数格納メモリ制御回路)を有する。WBUF管理部6は、IBUF管理部5のステータスを参照して、IBUF管理部5から取り出すデータに対応する係数を係数格納メモリから取り出す。
DRAM9は、iFMデータ、oFMデータおよび係数を格納する。データ入力部3は、DRAM9から所定の方法で、入力特徴量マップ(iFM)を取得し、IBUF(データ格納メモリ)管理部5に渡す。データ出力部8は、DRAM9に所定の方法で、出力特徴量マップ(oFM)データを書き出す。具体的には、データ出力部8は、演算部7から出力されるM並列のデータを連結してDRAM9に出力する。係数入力部4は、DRAM9から所定の方法で、係数を取得し、WBUF(係数格納メモリ)管理部6に渡す。
演算部7は、IBUF(データ格納メモリ)管理部5からデータ、WBUF(係数格納メモリ)管理部6から係数を取得して、フィルタ処理・累積加算・非線形演算・プーリング処理等のデータ処理を行う。コントローラ2は、回路全体の制御を行う。
CNNでは、複数の処理層において、何層も類似の処理を実施する。本発明の実施形態に係る演算処理装置1を用いる場合、演算部7は、1層分の処理に必要なデータおよび係数だけを有して1層分の処理を行い、データおよび係数はDRAM9に逐一置かれる。そして、必要な層数分の処理が繰り返し実行される。演算処理装置1は最終出力データとして被写体推定結果を出力し、この最終出力データを、プロセッサ(回路でもよい)を用いて処理することにより被写体推定結果を得る。
図2は、本発明の実施形態に係る演算処理装置の演算部7の構成を示す図である。演算部7の入力チャネル数はN(Nは1以上の正数)、すなわち入力データ(iFMデータ)はN次元であり、N次元の入力データが並列して処理される(入力N並列)。
演算部7の出力チャネル数はM(Mは1以上の正数)、すなわち出力データはM次元であり、M次元の入力データが並列して出力される(出力M並列)。図2に示すように、1つの層において、各チャネル(ich_0~ich_N-1)ごとに、iFMデータ(d_0~d_N-1)と係数(k_0~k_N-1)が入力され、1個のデータを出力する。この処理がM層、並行して行われ、M個のデータoch_0~och_M-1が出力される。
このように、演算部7は、入力チャネル数をN、出力チャネル数をMとして、並列度がN×Mとなる構成を取る。入力チャネル数Nおよび出力チャネル数Mの大きさは、CNNの大きさに応じて設定(変更)することができるので、処理性能や回路規模を勘案して適切に設定する。
演算部7は、演算部内各部の制御を行う演算制御部71を備える。また、演算部7は、各層ごとに、フィルタ演算部72と、第1加算器73と、第2加算器74と、FF(フリップフロップ)75と、非線形変換部76と、プーリング処理部77を備える。そして、このような層がM個ある。
演算制御部71が、演算部7の前段に対してリクエストを発行することにより、所定のデータがフィルタ演算部72に入力される。フィルタ演算部72は、内部で乗算器と加算器がN並列で同時に実行できるように構成されており、入力データのフィルタ処理を行い、フィルタ処理の結果をN並列で出力する。
第1加算器73は、N並列で実行され出力されたフィルタ演算部72におけるフィルタ処理の結果を全て加算する。第2加算器74は、時分割で入力される第1加算器73の演算結果を累積加算する。第2加算器74は、全てのiFMデータを取り終わるまでは第1加算器73の演算結果を累積加算する。FF75は、累積加算の結果を保持するために設けられている。非線形変換部76は、第2加算器74およびFF75での累積加算の結果に対して、Activate関数などによる非線形演算処理を行う。具体的な実装は特に規定しないが、例えば折れ線近似により非線形演算処理を行う。
プーリング処理部77は、非線形変換部76から入力された複数のデータの中から最大値を選択出力(Max Pooling)する、平均値を算出(Average Pooling)する、などのプーリング処理を行う。なお、非線形変換部76とプーリング処理部77は、演算制御部71によりスルーさせることができる。
演算制御部71は、演算部7内の各部において行われる上述の処理の制御を行う。このような構成により、演算部7において、入力チャネル数Nおよび出力チャネル数Mの大きさは、CNNの大きさに応じて設定(変更)することができるので、処理性能や回路規模を勘案して適切に設定する。
図3は、本発明の実施形態に係る演算処理装置のIBUF(データ格納メモリ)管理部5の構成を示す図である。IBUF管理部5は、カウンタ51と、SRAM書き込み制御部52と、N個のIBUF(データ格納メモリ)(0~N-1)と、SRAM読み出し制御部53とを備える。
入力されるiFM(入力特徴量マップ)データの数が入力の並列度Nを越える場合、iFMデータが時分割入力されることがあるので、どのiFMデータを入力しているかを識別するためのID(以後、iFMIDという)が必要となる。iFMIDは、データ入力部3がDRAM9からバースト転送の単位で取得したデータに対して1つ定まっている代表値であり、例えば、最初の1~N面のiFMIDを0、N+1~2N面のiFMIDを1、…のように、順次インクリメンタルに変化させる。
カウンタ51は、入力されるiFMデータのID(iFMID)を生成するとともに、iFMID毎に入力データ中の有効データ数(入力有効データ数)をカウントして座標(iFM座標)に変換して出力する。
SRAM書き込み制御部52は、カウンタ51から出力されたiFM座標をIBUFアドレス(IBUFにおけるアドレス)に変換し、データ(iFMデータ)をIBUFに格納する。また、SRAM書き込み制御部52は、IBUFを構成する各SRAMを仮想的に複数の領域に分割し、iFMIDによって書き込む領域を切り変える。また、SRAM書き込み制御部52は、同じSRAMには同一座標の異なるiFMデータが格納されるように制御する。
また、SRAM書き込み制御部52は、同一座標のiFMデータの演算処理が終わるごとに、この同一座標のiFMデータが格納されていた領域を開放して、iFMデータの続きのデータを格納する。
SRAM読み出し制御部53は、外部から要求(req)を受けてIBUFから所定の方法でデータを取り出す。また、SRAM読み出し制御部53は、取り出したいiFMIDに対応するIBUF内の領域にアクセスするように、アドレスを切り替える。
演算部7の演算制御部71は、1個のIBUFに格納されている複数のiFMを取り出すために、iFMIDを生成して、SRAM読み出し制御部53から入力されるiFMデータと同じiFMIDの係数をWBUFから取得するよう制御する。また、演算制御部71は、全てのiFMデータを取り終わるまでは、第2加算器74を用いて、第1加算器73の演算結果を累積加算する。
図4は、本実施形態に係る演算処理装置のIBUF(データ格納メモリ)の構成を示す図である。IBUFはそれぞれが3個以上のSRAMから構成される。図4の例では、1個のIBUF(IBUF_i)は4つのSRAMから構成されており、うち3個のSRAM(SRAM0~SRAM2)を使ってフィルタ演算に必要なデータを取り出す。残りの1個のSRAM(SRAM3)は、DRAMから取得したデータを書き込むために用いる。
演算部7における処理を終えて必要のなくなったデータは、SRAMの1個ごとの単位で順次開放し、IBUF全体としてはサーキュレートバッファとして動作する。なお、本例ではIBUFは4個のSRAMから構成されているが、SRAMの数は3個以上であればいくつであっても構わない。SRAMの数を3個以上にすることで、例えば読み出し位置がSRAM1とSRAM2でオーバーラップする(またがる)場合でも、データを順次取り出している最中にSRAM3への書き込みを並行して行うことができる。
SRAM1の使用が終わったらwrite用に開放しておく。処理実行中にいずれSRAM3への書込みが完了するのでwrite処理はすでに開放されているSRAM1に移る。その間、リード側はSRAM2~SRAM3の領域を使ってフィルタ処理を続ける。このように、使わないエリアを順次開放してデータ更新することでシームレスな処理(スライディングウィンドウ処理)をすることができる。
次に、iFM数(iFMの面数)が回路の入力並列度を超え、1個のIBUFに複数のFMが入力されるケースを説明する。いまiFM数=N×n(N:入力並列度)であったとする。各入力chにはn面のデータが入力されることになる。そこで、IBUF内を入力面数nで分割し、分割されたそれぞれの領域内でスライディングウィンドウ処理を行う。各入力chに入力されたn面のデータを図5に示すように分割してIBUFに格納する。
図5は、1個の入力chに入力されたiFMが分割されてIBUFに格納される様子を示す図である。図6は、分割されてIBUFに格納されたiFMが処理される様子を示す図である。図は、IBUFが4つのSRAM(SRAM1、…、SRAM4)から構成されている例である。すなわち、IBUFは物理的に4つのSRAMに分かれている。
各SRAM(SRAM1、…、SRAM4)は仮想的にn個に分割される。SRAMの各分割領域には、iFMの同じ領域(座標)のデータが格納されるようにする。具体的には、SRAM1の分割領域には、iFMの領域Aに対応するデータiFM_0~iFM_n-1が格納される。SRAM2の分割領域には、iFMの領域Bに対応するiFM_n~iFM_2n-1が格納される。SRAM3の分割領域には、iFMの領域Cに対応するiFM_2n~iFM_3n-1が格納される。SRAM4の分割領域には、iFMの領域Dに対応するiFM_3n~iFM_4n-1が格納される。
すなわち、1個のSRAM内にはiFMの同じ座標位置のデータが格納されるようにする。これは、iFMの同じ座標位置のデータを同時に取り出して演算処理を行い、スライディングウィンドウ処理を行うためである。なお、SRAMの数を3個以上にすることで、iFMの2領域(座標)にまたがるデータの処理(SRAM1およびSRAM2からのデータ読み込み)をしている場合でも、第3のSRAMへの書き込みを並行して行うことができる。
図6の例では、まず、第1面のiFM_0、第2面のiFM_1、…、第n面のiFM_n-1は同じ座標位置(領域A)のデータであり、これらはSRAM1の分割領域に格納される。第1面のiFM_n、第2面のiFM_n+1、…、第n面のiFM_2n-1は同じ座標位置(領域B)のデータであり、これらはSRAM2の分割領域に格納される。第1面のiFM_2n、第2面のiFM_2n+1、…、第n面のiFM_3n-1は同じ座標位置(領域C)のデータであり、これらはSRAM3の分割領域に格納される。第1面のiFM_3n、第2面のiFM_3n+1、…、第n面のiFM_4n-1は同じ座標位置(領域D)のデータであり、これらはSRAM4の分割領域に格納される。
SRAM1に格納されるiFM_0、iFM_1、…、iFM_n-1は同じ座標位置のデータであり、同じタイミングで演算処理され、同じタイミングで不要になる。不要になったデータが格納されたSRAMは順次開放され、iFMの続きのデータである、第1面のiFM_4n、第2面のiFM_4n+1、…、第n面のiFM_5n-1を格納する。このように、スライディングウィンドウ処理が行われる。
1個のSRAMの領域において、仮想的に分割された各領域サイズを「分割領域サイズ」と呼ぶことにする。分割領域サイズは、各領域において格納できるiFMのデータ量に対応する。使用済データは分割領域サイズ単位で捨てることができるので、分割領域サイズ単位でスライディングウィンドウ処理を行い、SRAMの使用済領域を開放してiFMの続きのデータを入力することができる。
具体的には、図6において、SRAM1のiFM_0、SRAM2のiFM_n、SRAM3のiFM_2n、SRAM4のiFM_3nの格納されている分割領域サイズ(第1面のデータが格納されている分割領域サイズ)において、スライディングウィンドウ処理が行われる。同時に、SRAM1のiFM_1、SRAM2のiFM_n+1、SRAM3のiFM_2n+1、SRAM4のiFM_3n+1の格納されている分割領域サイズ(第2面のデータが格納されている分割領域サイズ)において、スライディングウィンドウ処理が行われる。同時に、SRAM1のiFM_n-1、SRAM2のiFM_2n-1、SRAM3のiFM_3n-1、SRAM4のiFM_4n-1の格納されている分割領域サイズ(第n面のデータが格納されている分割領域サイズ)において、スライディングウィンドウ処理が行われる。
このようにして、本発明では、複数の演算部のそれぞれにおいて時分割で複数のFMを処理するようになっており、これにより大きなネットワークに対応することができる。
なお、iFMIDは面毎に0、1、2、…、n-1と増えていくので、iFMIDによってアドレスオフセットを変化させることで図6のようにiFMをIBUFに配置することができる。図7は、n=2の時の、iFMIDによってアドレスオフセットを変化させるイメージを示す図である。なお、n=1の場合はiFMIDを参照する必要が無いのでiFMIDをゼロ固定でよい。
図8は、本実施形態に係る演算処理装置における、IBUFへのデータ書き込み制御フローを示す図である。ステップS1からiFM分割ループが始まる。ステップS2において、IBUFが書き込み可能か否かを判定する。IBUFが書き込み不可能の場合は、ステップS3に進み、待機(wait)し、ステップS2に戻る。
IBUFが書き込み可能の場合は、ステップS4に進む。ステップS4から分割領域サイズループが始まり、ステップS5からiFM数(n)ループが始まる。ステップS6においてアドレス計算を行い、ステップS7において、データ入力があるか否かを判定する。データ入力がない場合は、ステップS8に進み、待機(wait)し、ステップS7に戻る。
データ入力がある場合は、ステップS9に進み、IBUFへデータ書き込みを行う。ステップS10では、iFM数(n)分の処理を行った否かを判定し、行っていない場合はステップS5に戻り、行った場合はステップS11に進む。ステップS11では、分割領域サイズ分の処理を行った否かを判定し、行っていない場合はステップS4に戻り、行った場合はステップS12に進む。ステップS12では、iFM分割が完了したか否かを判定し、完了していない場合はステップS1に戻り、完了した場合は、処理(IBUFへのデータ書き込み処理)を終了する。
次に、上述のようにIBUFに入力されたデータを読み出すときの処理について説明する。各入力chには複数のiFMが入っているが、仮に2面のiFM(iFM1、iFM2)が入力されているとする。そして、iFMのデータ配置と、それに対して施すフィルタの係数が図9のようであったとする。図9は、iFMのデータ配置と係数の一例を示す図である。
iFM1において、データ配置は図9(a)のようになる。a1、b1、…、p1はデータを示し、4×4のデータが配置されている。そのうち、3×3のデータ(a1、b1、c1、d1、e1、f1、g1、i1、j1、k1)の各々に対して施すフィルタの係数は図9(b)のようになる。w1、w2、…、w9は各データ係数を示す。
同様に、iFM2において、データ配置は図9(c)のようになる。a2、b2、…、p2はデータを示し、4×4のデータが配置されている。そのうち、3×3のデータ(a2、b2、c2、d2、e2、f2、g2、i2、j2、k2)の各々に対して施すフィルタの係数は図9(d)のようになる。x1、x2、…、x9は各データ係数を示す。
タイミングチャートは図10に示すようになる。図10は、本実施形態に係る演算処理装置における、Convolution処理時、iFM数=2Nの時のタイミングチャートを示す図である。3×3の9個のデータa1~k1と係数w1~w9のフィルタ演算結果がAであり、3×3の9個のデータa2~k2と係数x1~x9のフィルタ演算結果がBである。フィルタ演算結果は、第2加算器において時間方向で累積加算され、その結果がFFに保持される。第2加算器における最終的な累積加算結果がΣである。
すなわち、iFM1とiFM2が時分割で入力され、第2加算器で累積加算され、その結果がFFに保持される。第2加算器の結果がAやA+Bの時は、まだ累積加算の途中であるので、非線形変換部には出力されない。第2加算器における累積加算が完了すると、その累積加算結果Σが非線形変換部に出力され、FFは初期値に戻る。非線形変換部は非線形変換f(Σ)を行う。
図11は、本実施形態に係る演算処理装置における、SRAM読み出し制御部の制御フローの一例を示す図である。まず、ステップS21において、oFM_Vループが始まる。oFM_Vループは、oFMのデータをV方向(横方向)に処理するループである。そして、ステップS22において、oFM_Hループが始まる。oFM_Hループは、oFMのデータをH方向(縦方向)に処理するループである。ステップS23でWBUFアクセスアドレスを生成し、並列してステップS26でIBUFアクセスアドレスを生成する。
ステップS23でWBUFアクセスアドレスを生成すると、ステップS24でデータ格納判定を行う。データ格納判定がOKの場合は、ステップS29のプーリングループに進む。データ格納判定がNGの場合は、ステップS25で待機(wait)し、ステップS24に戻る。
また、ステップS26でIBUFアクセスアドレスを生成すると、ステップS27でデータ格納判定を行う。データ格納判定がOKの場合は、ステップS29のプーリングループに進む。データ格納判定がNGの場合は、ステップS28で待機(wait)し、ステップS27に戻る。
ステップS29のプーリングループの後は、ステップS30のiFM数ループ、ステップS31のフィルタサイズループと進み、ステップS32において演算部の処理が行われる。ステップS33では各ループを終えてよいかを判定し、終わっていない場合は各ループに戻り、全てのループが終わった場合、制御フローは終了する。
IBUFのデータ格納判定は、プーリング処理も含めてフィルタ処理に必要な全iFMの座標データがIBUFに格納済みであるかの判定であり、最内側ループは判定後となっている。なお、判定方法は種々変更できるものとする。また、oFMのHサイズ単位で判定するのであればoFM_Hループもデータ格納判定後に置く。
なお、本実施形態で説明したメモリ制御およびメモリ格納方法については、複数フレームを入力として出力データを生成するアルゴリズムにも応用できる。例えば、フレーム間相関を利用するMPEG等の圧縮処理やノイズリダクション処理にも適用できる。
(実施形態2)
実施形態1では、1つのCNNの層を処理する回路とそこへ入力するiFMをどのようにIBUFに展開し、処理するかについて説明した。実施形態2では、特に、oFM数(oFMの面数)が回路的な並列度Mを越えるケースに対応する。
実施形態1では、1つのCNNの層を処理する回路とそこへ入力するiFMをどのようにIBUFに展開し、処理するかについて説明した。実施形態2では、特に、oFM数(oFMの面数)が回路的な並列度Mを越えるケースに対応する。
図12は、本実施形態のCNNの処理イメージを示す図である。図12は、oFM数=2Mの例を示し、1つの入力chのみを表示している。oFM数が出力並列度Mを超え、oFM数=M×m(m>1)であるとする。CNNは、全てのiFMの同一座標データからoFMの1画素を計算する処理である。
この時、oFMを1面ずつ作成すると、iFMはIBUF内でスライディングウィンドウ処理されているので、最初の部分のデータが上書きされてIBUF内に存在しなくなる。このため、新しいoFMを作成する処理毎に、DRAMからiFMを読み直さなければならなくなってしまう。
そこで、本実施形態では、IBUFに格納されているデータで処理できるoFMを全て作成してしまうように制御する。具体的には、IBUFに入力されているiFM(一部しか格納されていない)から、1個のoFMについて可能なだけの処理回数を実行したら、IBUFを更新せずに次のoFMに対応する処理を行う(係数は適宜切り替える)。
このときの「可能なだけの処理回数」は、IBUF上で単位としている分割領域サイズに設定すると効率的である。なぜならIBUFを構成する1個のSRAMに入るiFM1面分のデータが分割領域サイズであり、この単位で処理すると、出力したいoFM数分の処理を終えた時点でSRAM1個分のデータが使用済みとなるので開放できるからである。なお、分割領域サイズはiFMにおけるデータ量であって、oFM上のデータ量とは必ずしも一致しない。これは、プーリング処理による縮小が発生するためである。
ピクセル単位でoFMを変えない理由は、ある程度のデータ量をDRAM上に転送する方が、効率がよいためである。バッファのサイズや転送効率に問題がなければ、ピクセル単位で切り替えてもよい。
このように、本実施形態では、スライディングウィンドウ処理を行う前に、入っているデータでできる処理の全てを行う。なお、出力されるデータは、oFMが1個ずつ完成して出力されるのではなく、複数のoFMの一部分が少しずつ出力されて、最終的に複数のoFMが完成して出力される。
図13は、本実施形態に係る演算処理装置における、SRAM読み出し制御部の制御フローの一例を示す図である。「dMカウンタ」は、分割領域サイズ分のループカウンタに相当する。まず、ステップS41で、dMカウンタ=0とする。そして、ステップS42からoFM_Vループが始まり、ステップS43からoFM_Hループが始まる。oFM_Vループは、oFMのデータをV方向(横方向)に処理するループであり、oFM_Hループは、oFMのデータをH方向(縦方向)に処理するループである。
ステップS44でWBUFアクセスアドレスを生成し、並行してステップS47でIBUFアクセスアドレスを生成する。
ステップS44でWBUFアクセスアドレスを生成すると、ステップS45でデータ格納判定を行う。データ格納判定がOKの場合は、ステップS50のプーリングループに進む。データ格納判定がNGの場合は、ステップS46で待機(wait)し、ステップS45に戻る。
また、ステップS47でIBUFアクセスアドレスを生成すると、ステップS48でデータ格納判定を行う。データ格納判定がOKの場合は、ステップS50のプーリングループに進む。データ格納判定がNGの場合は、ステップS49で待機(wait)し、ステップS48に戻る。
ステップS50のプーリングループの後は、ステップS51のiFM数ループ、ステップS52のフィルタサイズループと進み、ステップS53において演算部の処理が行われる。ステップS54およびステップS55では各ループを終えてよいかを判定し、終わっていない場合は各ループに戻り、全てのループが終わった場合は、ステップS56に進む。
ステップS56では、dMカウンタが分割領域サイズ以上か否かを判定する。dMカウンタが分割領域サイズ以上である場合は、ステップS57に進み、dMカウンタ=0とする。そして、ステップS58において、係数を次のoFMへ送り、ステップS60へ進む。
dMカウンタが分割領域サイズ以上でない場合(dMカウンタが分割領域サイズ未満である場合)は、ステップS59に進み、dMカウンタの値を増やす。そして、ステップS60へ進む。
ステップS60では、oFM_VループおよびoFM_Hループを終えてよいかを判定し、終わっていない場合は各ループに戻り、全てのループが終わった場合、制御フローは終了する。
図14は、本実施形態に係る演算処理装置における、iFM数=2N、oFM数=3Mの場合のタイミングチャートの一例を示す。分割領域サイズを4Dとすると、プーリングがあるためoFM上のデータ数はoFM数×D個分となる。
データ出力部ではプーリング後の有効データ数をカウントして、現在どのoFMを受け取っているかを識別できるので、識別結果に従ってDRAM上に適切に展開する。図15は、データが書き出されるDRAMの出力イメージを示す図である。図中の数字は出力順を示す。
このように、本実施形態では、IBUF管理部内のSRAM読み出し制御部が、同じ入力データから、出力するm枚分のoFMのフィルタ処理を実行するようにIBUFからデータを取り出す。そして、データ出力部が、有効データをカウントしてどのoFMデータであるかを識別し、適切にアドレスを生成してDRAMに出力する。これにより、iFMを再読込みすることなく出力並列度を越えるoFM数を出力できる。
すなわち、SRAM読み出し制御部は、IBUFからiFMデータの一部データを読み出す。演算部は、SRAM読み出し制御部から入力されたiFMの一部データの演算処理を行い(読み込んだ所のデータを処理し)、oFMデータの一部データを作成する。そして、終わったら、iFMデータの次の一部データの処理へと進む。
以上、本発明の一実施形態について説明したが、本発明の技術範囲は上記実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲において構成要素の組み合わせを変えたり、各構成要素に種々の変更を加えたり、削除したりすることができる。
本明細書において「前、後ろ、上、下、右、左、縦、横、行、列」などの方向を示す言葉は、本発明の装置におけるこれらの方向を説明するために使用している。従って、本発明の明細書を説明するために使用されたこれらの言葉は、本発明の装置において相対的に解釈されるべきである。
本発明は、畳み込みニューラルネットワークを用いたディープラーニングを行う演算処理装置に広く適用でき、iFMサイズやiFM数が大きくてデータ格納メモリ(IBUF)に入りきらないサイズでも、フィルタサイズ分のオーバーラップをせずに演算処理とデータ更新をシームレスに実施することができる。
1 演算処理装置
2 コントローラ
3 データ入力部
4 係数入力部
5 IBUF(データ格納メモリ)管理部
6 WBUF(係数格納メモリ)管理部
7 演算部
8 データ出力部
9 DRAM(格納用外部メモリ)
10 バス
51 カウンタ
52 SRAM書き込み制御部
53 SRAM読み出し制御部
71 演算制御部
72 フィルタ演算部
73 第1加算器
74 第2加算器
75 FF(フリップフロップ)
76 非線形変換部
77 プーリング処理部
2 コントローラ
3 データ入力部
4 係数入力部
5 IBUF(データ格納メモリ)管理部
6 WBUF(係数格納メモリ)管理部
7 演算部
8 データ出力部
9 DRAM(格納用外部メモリ)
10 バス
51 カウンタ
52 SRAM書き込み制御部
53 SRAM読み出し制御部
71 演算制御部
72 フィルタ演算部
73 第1加算器
74 第2加算器
75 FF(フリップフロップ)
76 非線形変換部
77 プーリング処理部
Claims (4)
- Convolution処理とFullConnect処理を行うディープラーニング用の演算処理装置であって、
3個以上のSRAMで構成されたデータ格納メモリと、
入力特徴量マップデータから入力有効データ数をカウントして座標に変換するカウンタと、
前記カウンタが変換した座標を前記データ格納メモリにおけるアドレスに変換して、前記入力特徴量マップデータを前記データ格納メモリに格納するSRAM書き込み制御部と、
外部からのリクエストを受けて、前記データ格納メモリから所定の方法で格納されている前記入力特徴量マップデータを取り出すSRAM読み出し制御部と、
を有するデータ格納メモリ管理部と;
係数を格納する係数格納メモリを有し、前記データ格納メモリ管理部のステータスを参照して、前記データ格納メモリ管理部から取り出すデータに対応する係数を前記係数格納メモリから取り出す係数格納メモリ管理部と;
格納用外部メモリから、前記入力特徴量マップデータを取得するデータ入力部と;
前記格納用外部メモリから、前記係数を取得する係数入力部と;
入力N並列、出力M並列の構成(N、M≧1の正数)で、前記データ格納メモリから前記入力特徴量マップデータを取得し、前記係数格納メモリから前記係数を取得して、フィルタ処理、累積加算処理、非線形演算処理およびプーリング処理を行う演算部と;
前記演算部から出力されるM並列のデータを連結して、出力特徴量マップデータとして前記格納用外部メモリに出力するデータ出力部と;
前記データ格納メモリ管理部、前記係数格納メモリ管理部、前記データ入力部、前記データ出力部、および前記演算部を制御するコントローラと;
を有し、
前記カウンタは、入力された前記入力特徴量マップデータのIDを生成し、
前記SRAM書き込み制御部は、前記データ格納メモリを構成する前記SRAMの各々を仮想的に複数の領域に分割し、前記IDによって書き込む領域を切り替えるとともに、同じSRAMには同一座標の異なる入力特徴量マップデータが格納されるように制御し、
前記SRAM読み出し制御部は、取り出したい前記入力特徴量マップデータの前記IDに対応する前記領域にアクセスするように前記アドレスを切り替え、
前記演算部は、
N並列でフィルタ演算を実行するフィルタ演算部と、
前記フィルタ演算部の演算結果を全て累積加算する第1加算器と、
前記第1加算器の累積加算結果を後段で累積加算する第2加算器と、
前記第2加算器の累積加算結果を保持するフリップフロップと、
1つのデータ格納メモリに格納されている複数の入力特徴量マップデータを取り出すために、入力特徴量マップデータのIDを生成して、前記SRAM読み出し制御部から入力される入力特徴量マップデータと同じIDの前記係数を前記係数格納メモリ管理部から取得するよう制御し、全ての入力特徴量マップデータを取り終わるまでは、前記第2加算器が前記第1加算器の累積加算結果を累積加算するよう制御する演算制御部と、
を有する演算処理装置。 - 前記演算部は、同一座標の入力特徴量マップデータごとに演算処理を実行し、
前記SRAM書き込み制御部は、前記同一座標の入力特徴量マップデータの演算処理が終わるごとに、前記同一座標の入力特徴量マップデータが格納されていた前記領域を開放して、前記入力特徴量マップデータの続きのデータを格納する
請求項1に記載の演算処理装置。 - 前記SRAM読み出し制御部は、1つの入力特徴量マップデータから、出力するm枚分の出力特徴量マップデータの演算処理を実行するように前記データ格納メモリから前記入力特徴量マップデータを読み出し、
前記データ出力部は、有効データをカウントしてどの出力特徴量マップデータであるかを識別し、適切に出力特徴量マップデータにおけるアドレスを生成して、前記格納用外部メモリに出力する、
請求項1または2に記載の演算処理装置。 - 前記SRAM読み出し制御部は、前記データ格納メモリから前記入力特徴量マップデータの一部データを読み出し、
前記演算部は、前記SRAM読み出し制御部から入力された前記入力特徴量マップデータの一部データの演算処理を行い、前記出力特徴量マップデータの一部データを作成し、
前記入力特徴量マップデータの前記一部データの処理が終わったら、前記入力特徴量マップデータの次の一部データの処理へと進む、
請求項1から3のいずれか1項に記載の演算処理装置。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201880094605.8A CN112334915B (zh) | 2018-06-25 | 运算处理装置 | |
PCT/JP2018/023974 WO2020003345A1 (ja) | 2018-06-25 | 2018-06-25 | 演算処理装置 |
JP2020526727A JP6970827B2 (ja) | 2018-06-25 | 2018-06-25 | 演算処理装置 |
US17/132,575 US12050985B2 (en) | 2018-06-25 | 2020-12-23 | Arithmetic processing device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2018/023974 WO2020003345A1 (ja) | 2018-06-25 | 2018-06-25 | 演算処理装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/132,575 Continuation US12050985B2 (en) | 2018-06-25 | 2020-12-23 | Arithmetic processing device |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2020003345A1 true WO2020003345A1 (ja) | 2020-01-02 |
Family
ID=68986145
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2018/023974 WO2020003345A1 (ja) | 2018-06-25 | 2018-06-25 | 演算処理装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US12050985B2 (ja) |
JP (1) | JP6970827B2 (ja) |
WO (1) | WO2020003345A1 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022141064A (ja) * | 2021-03-15 | 2022-09-29 | オムロン株式会社 | 処理装置、処理方法、およびプログラム |
WO2023112581A1 (ja) * | 2021-12-14 | 2023-06-22 | 富士フイルム株式会社 | 推論装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017151604A (ja) * | 2016-02-23 | 2017-08-31 | 株式会社デンソー | 演算処理装置 |
US20170277658A1 (en) * | 2014-12-19 | 2017-09-28 | Intel Corporation | Method and apparatus for distributed and cooperative computation in artificial neural networks |
JP2018073102A (ja) * | 2016-10-28 | 2018-05-10 | キヤノン株式会社 | 演算回路、その制御方法及びプログラム |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5368687B2 (ja) * | 2007-09-26 | 2013-12-18 | キヤノン株式会社 | 演算処理装置および方法 |
US10275719B2 (en) * | 2015-01-29 | 2019-04-30 | Qualcomm Incorporated | Hyper-parameter selection for deep convolutional networks |
EP3326115A1 (en) * | 2015-07-23 | 2018-05-30 | Mireplica Technology, LLC | Performance enhancement for two-dimensional array processor |
US20170344876A1 (en) * | 2016-05-31 | 2017-11-30 | Samsung Electronics Co., Ltd. | Efficient sparse parallel winograd-based convolution scheme |
AU2016203619A1 (en) * | 2016-05-31 | 2017-12-14 | Canon Kabushiki Kaisha | Layer-based operations scheduling to optimise memory for CNN applications |
WO2018103736A1 (en) * | 2016-12-09 | 2018-06-14 | Beijing Horizon Information Technology Co., Ltd. | Systems and methods for data management |
KR102642853B1 (ko) * | 2017-01-05 | 2024-03-05 | 한국전자통신연구원 | 컨볼루션 회로, 그것을 포함하는 어플리케이션 프로세서 및 그것의 동작 방법 |
US10824938B2 (en) * | 2017-04-24 | 2020-11-03 | Intel Corporation | Specialized fixed function hardware for efficient convolution |
US10776694B2 (en) * | 2017-05-16 | 2020-09-15 | Samsung Electronics Co., Ltd. | Optimized neural network input stride method and apparatus |
CN107273832B (zh) * | 2017-06-06 | 2020-09-22 | 青海省交通科学研究院 | 基于积分通道特征与卷积神经网络的车牌识别方法及系统 |
CN110832596B (zh) * | 2017-10-16 | 2021-03-26 | 因美纳有限公司 | 基于深度学习的深度卷积神经网络训练方法 |
US11119677B2 (en) * | 2017-12-15 | 2021-09-14 | Samsung Electronics Co., Ltd. | HBM based memory lookup engine for deep learning accelerator |
US11449728B2 (en) * | 2018-07-01 | 2022-09-20 | Al Falcon Ltd. | Method of optimization of operating a convolutional neural network and system thereof |
JP7299770B2 (ja) * | 2019-07-01 | 2023-06-28 | キヤノン株式会社 | 演算処理装置及び演算処理方法 |
US11681902B2 (en) * | 2019-09-27 | 2023-06-20 | Amazon Technologies, Inc. | Transposed convolution using systolic array |
-
2018
- 2018-06-25 WO PCT/JP2018/023974 patent/WO2020003345A1/ja active Application Filing
- 2018-06-25 JP JP2020526727A patent/JP6970827B2/ja active Active
-
2020
- 2020-12-23 US US17/132,575 patent/US12050985B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170277658A1 (en) * | 2014-12-19 | 2017-09-28 | Intel Corporation | Method and apparatus for distributed and cooperative computation in artificial neural networks |
JP2017151604A (ja) * | 2016-02-23 | 2017-08-31 | 株式会社デンソー | 演算処理装置 |
JP2018073102A (ja) * | 2016-10-28 | 2018-05-10 | キヤノン株式会社 | 演算回路、その制御方法及びプログラム |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022141064A (ja) * | 2021-03-15 | 2022-09-29 | オムロン株式会社 | 処理装置、処理方法、およびプログラム |
JP7420100B2 (ja) | 2021-03-15 | 2024-01-23 | オムロン株式会社 | 処理装置、処理方法、およびプログラム |
WO2023112581A1 (ja) * | 2021-12-14 | 2023-06-22 | 富士フイルム株式会社 | 推論装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112334915A (zh) | 2021-02-05 |
JP6970827B2 (ja) | 2021-11-24 |
JPWO2020003345A1 (ja) | 2021-04-08 |
US20210117762A1 (en) | 2021-04-22 |
US12050985B2 (en) | 2024-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20180232629A1 (en) | Pooling operation device and method for convolutional neural network | |
WO2019206161A1 (zh) | 池化运算装置 | |
WO2020003345A1 (ja) | 演算処理装置 | |
WO2021232422A1 (zh) | 神经网络的运算装置及其控制方法 | |
WO2021168644A1 (zh) | 数据处理装置、电子设备和数据处理方法 | |
JP2013171296A (ja) | 信号処理装置及び半導体装置 | |
GB2604497A (en) | SIMD operand permutation with selection from among multiple registers | |
JP2021524960A (ja) | 映像ジッターを除去するための方法及び装置 | |
CN112334915B (zh) | 运算处理装置 | |
TWI417810B (zh) | 影像增強方法、影像增強裝置及影像處理電路 | |
JP5675278B2 (ja) | データ処理装置および画像処理装置 | |
US20170277974A1 (en) | Apparatus and Method for Detecting a Feature in an Image | |
JP3832431B2 (ja) | 画像処理装置 | |
US11500632B2 (en) | Processor device for executing SIMD instructions | |
CN112837256B (zh) | 一种用于Harris角点检测的电路系统及检测方法 | |
KR101000036B1 (ko) | 실시간 영상 처리를 위한 서브 샘플링 시스템 | |
JP2017126203A (ja) | 演算処理装置 | |
JP7012168B2 (ja) | 演算処理装置 | |
JP2021067712A (ja) | 情報処理装置、情報処理方法及びプログラム | |
RU168781U1 (ru) | Устройство обработки стереоизображений | |
CN111832713B (zh) | 一种基于行缓冲Linebuffer的并行计算方法及计算设备 | |
JP2020112998A (ja) | 情報処理装置及びメモリ制御方法 | |
JP6161395B2 (ja) | 演算装置 | |
JP4345273B2 (ja) | 動きベクトル検出装置および動きベクトル検出方法 | |
JPH0512437A (ja) | 画像フイルタ方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 18924942 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2020526727 Country of ref document: JP Kind code of ref document: A |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 18924942 Country of ref document: EP Kind code of ref document: A1 |