WO2018139265A1 - プロセッサ、情報処理装置及びプロセッサの動作方法 - Google Patents

プロセッサ、情報処理装置及びプロセッサの動作方法 Download PDF

Info

Publication number
WO2018139265A1
WO2018139265A1 PCT/JP2018/000987 JP2018000987W WO2018139265A1 WO 2018139265 A1 WO2018139265 A1 WO 2018139265A1 JP 2018000987 W JP2018000987 W JP 2018000987W WO 2018139265 A1 WO2018139265 A1 WO 2018139265A1
Authority
WO
WIPO (PCT)
Prior art keywords
memory
core
transfer
cores
read
Prior art date
Application number
PCT/JP2018/000987
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 富士通株式会社
Publication of WO2018139265A1 publication Critical patent/WO2018139265A1/ja
Priority to US16/291,686 priority Critical patent/US10769004B2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0837Cache consistency protocols with software control, e.g. non-cacheable data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks

Definitions

  • the present invention relates to a processor, an information processing apparatus, and an operation method of the processor.
  • Deep learning (DL1: Deep Learning) is executed by arithmetic processing of a processor in the information processing apparatus.
  • DL is a general term for algorithms that use deep neural networks (DNNs).
  • DNNs deep neural networks
  • a convolution neural network (CNN) is often used among DNNs.
  • the CNN is widely used as a DNN for determining the characteristics of image data, for example.
  • the CNN that determines the characteristics of the image data receives the image data, performs a convolution operation using a filter, and detects the characteristics of the image data (for example, edge characteristics).
  • the CNN convolution operation is performed by, for example, a processor.
  • Patent Document 1 below discloses inter-processor communication of a multi-core processor.
  • JP 2013-156783 A International Publication No. 2016/075813 International Publication No. 2012/001835 JP-A-8-147178
  • the above convolution calculation is performed by moving the position of the coefficient filter in the image data in the raster scan direction of the image data, and the pixel data of the neighboring matrix centered on the target pixel of the image data and the coefficient (weight) of the coefficient filter.
  • Repeat the product-sum operation includes convolution operations for each of a plurality of image data and a plurality of coefficient filters, and performing in parallel with a plurality of product-sum operation units contributes to a reduction in operation time. In that case, a plurality of cores each having a computing unit read a plurality of image data from the memory, and repeat the product-sum operation by each coefficient filter.
  • each of the plurality of cores reads the same plurality of image data from the memory is one factor that reduces the processing efficiency of the convolution operation.
  • the degree of reduction in the processing efficiency due to the above-described image data reading process increases accordingly.
  • an object of one embodiment is to provide a processor, an information processing apparatus, and a processor operating method that efficiently perform image data reading processing by a core in the processor.
  • One embodiment includes a plurality of computing cores, A plurality of individual memories provided in each of the plurality of arithmetic cores and accessed from the arithmetic cores to which each belongs; A plurality of shared memories provided in each of the plurality of operation cores and accessed from any one of the operation cores to which the operation cores belong and the first adjacent cores adjacent to each other in the first direction; A plurality of memory control circuits provided between each of the plurality of arithmetic cores and the plurality of individual memories, and outputting a read request from the arithmetic cores to the individual memories belonging to the arithmetic core; A read request from each of the arithmetic core and the first adjacent core to which each of the plurality of shared memories belongs is selected and output to the shared memory.
  • a plurality of selectors for selecting a transfer request from any of the memory control circuits belonging to the second adjacent core adjacent in two directions and outputting the same to the shared memory;
  • a control core for controlling the plurality of arithmetic cores, The control core transfers, to each of the plurality of memory control circuits, a transfer source address of the individual memory and the shared memory in which transfer data transferred between the plurality of arithmetic cores is stored, and the transfer data is transferred
  • the transfer destination address of the shared memory is set and the transfer select information is set in the plurality of selectors
  • the read request address of the arithmetic core to which each of the plurality of memory control circuits matches the transfer source address
  • the read control address is read to the transfer destination address via the selector in which the transfer select information is set.
  • Each of the plurality of shared memories is a processor from which read data is read from either the arithmetic core to which the shared memory belongs or the first adjacent core via the selector in which the read select information is set.
  • the image data reading process by the core in the processor can be performed efficiently.
  • FIG. 8 is a sequence chart showing an outline of operations of reading and calculating image data X0 to X3 by four calculation cores of FIG.
  • FIG. 9 is a sequence diagram showing an operation at time T0, T1, T2 of the sequence of FIG.
  • FIG. 11 is a diagram showing data read and read data transfer to two memory banks B # a and B # b of a shared memory SMEM # belonging to four arithmetic cores and an individual memory IMEM #.
  • FIG. 9 is a sequence diagram showing an operation at time T0, T1, T2 of the sequence of FIG.
  • FIG. 11 is a diagram showing data read and read data transfer to two memory banks B # a and B # b of a shared memory SMEM # belonging to four arithmetic cores and an individual memory IMEM #.
  • FIG. 9 is a sequence diagram showing an operation at time T0, T1, T2 of the sequence of FIG.
  • FIG. 11 is a diagram showing data read and read data transfer to two memory banks B # a and B # b of a shared memory SMEM # belonging to four arithmetic cores and an individual memory IMEM #.
  • FIG. 11 is a diagram showing data read and read data transfer to two memory banks B # a and B # b of a shared memory SMEM # belonging to four arithmetic cores and an individual memory IMEM #.
  • FIG. 11 is a diagram showing data read and read data transfer to two memory banks B # a and B # b of a shared memory SMEM # belonging to four arithmetic cores and an individual memory IMEM #. It is a figure which shows operation
  • FIG. 1 is a diagram showing a configuration of an information processing apparatus (deep learning server) in the present embodiment.
  • the server 1 can communicate with the sensing device group 30 and the terminal device 32 via a network.
  • the sensing device group 30, for example, captures an image with an image sensor to generate image data, and transmits the image data to the server 1.
  • the terminal device 32 receives the determination result of the feature of the image data from the server 1 and outputs it.
  • the server 1 includes a CPU (Central processing Unit) 10 that is a general-purpose processor and a GPU (Graphic Processing Unit) 11 that is a graphic processor.
  • the server 1 further includes a main memory 12 such as a DRAM, a network interface 14 such as a NIC (Network Interface Card), a large-capacity auxiliary memory 20 such as a hard disk or an SSD (Solid Storage Device), and a bus connecting them. With BUS.
  • the auxiliary memory 20 stores a deep learning calculation program 22, a deep learning parameter 24, and the like.
  • the auxiliary memory 20 stores an operating system (OS) (not shown), various middleware programs, and the like.
  • OS operating system
  • the processor 10 and the graphic processor 11 develop the above programs and parameters in the main memory 12, and execute the programs based on the parameters.
  • FIG. 2 is a flowchart showing a schematic process of the deep learning calculation program.
  • the DL calculation program is a program that executes, for example, DNN calculation.
  • the processors 10 and 11 execute the DL operation program and execute the processing in the learning mode and the determination mode.
  • a DLN that determines the characteristics of image data will be described as an example of DL.
  • the processors 10 and 11 read the initial values of the operation parameters (filter coefficients (weights) and the like) from the main memory 12 and write them into the high-speed memory SRAM in the processor 11 (S10). Further, the processor reads the image data transmitted from the sensing device group 30 from the main memory 12 and writes it in the high-speed memory SRAM (S11). The processor then converts the format of the image data to generate neighborhood matrix image data (arithmetic processing data) for computing unit input (S12), DNN convolution layer, pooling layer, fully connected layer, softmax layer ( Output layer) processing is performed (S13). This calculation is performed for each of a predetermined number of image data. The calculation result is, for example, that the image data is one of the numbers 0 to 1.
  • the processors 10 and 11 determine whether or not the difference between the calculation result and the teacher data that is the correct data of the image data is equal to or less than a threshold (S14). If the difference is not equal to or less than the threshold (NO in S14), the calculation parameter is set. Based on the difference, the backward calculation of DNN is executed and the calculation parameter is updated (S15). Then, the above steps S11-S13 are repeated with the updated calculation parameters.
  • the difference between the calculation result and the teacher data is, for example, 1000 calculation results calculated with respect to 1000 pieces of image data, and a total value of differences between the 1000 pieces of teacher data.
  • the processors 10 and 11 read the determination target image data from the main memory (S16), convert the format of the image data to generate neighborhood matrix image data for computing unit input (S17), Computation processing is performed on the embedded layer, the pooling layer, the fully connected layer, and the softmax layer (S18). The processors 10 and 11 repeat the above determination processing until the image data to be determined is completed (S19). The determination result is transmitted to the terminal device 32 and output.
  • FIG. 3 is a diagram showing the configuration of the graphic processor (GPU) 11 and the configuration of the core CORE in the GPU.
  • the GPU 11 can access the main memory M_MEM.
  • the GPU includes, for example, eight processor cores CORE, a plurality of high-speed memory SRAMs arranged corresponding to the respective processor cores CORE, an internal bus I_BUS, and a memory controller MC that controls access to the main memory M_MEM. Have.
  • the GPU includes an L1 cache memory in each core CORE, an L2 cache memory shared by the eight cores CORE, and various peripheral resource circuits, which are not shown in FIG.
  • the GPU further includes a direct memory access control circuit DMA that controls data transfer between internal high-speed memory SRAMs, data transfer between the main memory M_MEM and the high-speed memory SRAM, and the like.
  • DMA direct memory access control circuit
  • each processor core CORE like a normal processor core, has an instruction fetch circuit FETCH that acquires instructions from memory, a decoder DEC that decodes the acquired instructions, and a plurality of operations that calculate instructions based on the decoding results And an ALU and its register group REG, and a memory access control circuit MAC for accessing the high-speed memory SRAM.
  • FETCH instruction fetch circuit
  • DEC decoder
  • MAC memory access control circuit
  • the GPU is realized by a semiconductor chip, for example, and is a DL device according to the present embodiment.
  • the GPU reads out the image data from the main memory M_MEM that stores the image data transmitted from the above-described sensing device group, and writes it in the internal high-speed memory SRAM. Then, the arithmetic unit ALU in each core CORE inputs the image data written in the SRAM, executes the arithmetic processing of each layer of the DNN, and generates the output of the DNN.
  • FIG. 4 is a diagram showing an example of CNN.
  • the CNN that performs image data determination processing includes an input layer INPUT_L to which image data IM_D that is input data is input, a plurality of convolution layers CNV_L and a pooling layer PL_L, a total coupling layer C_L, and a softmax layer ( Output layer) OUT_L.
  • the convolution layer CNV_L generates image data F_IM_D having a feature amount by filtering the image data IM_D with the coefficient filter FLT.
  • image data F_IM_D of each feature amount is generated.
  • the pooling layer PL_L selects a representative value (for example, a maximum value) of the node values of the convolution layer.
  • the output layer OUT_L includes, for example, the determination result (0 of the number in the image data). ⁇ 9) is output.
  • the convolution layer CNV_L includes, for example, pixel data of a 3 ⁇ 3 neighborhood matrix of image data IM_D having pixel data of an M ⁇ N two-dimensional pixel matrix, and coefficient data of a 3 ⁇ 3 coefficient filter FLT that is the same as the neighborhood matrix. And multiplying and adding the multiplication results, the pixel data F_IM_D of the pixel of interest at the center of the neighborhood matrix is generated. This filtering process is performed on all the pixels of the image data IM_D while shifting the coefficient filter in the raster scan direction of the image data IM_D. This is a convolution operation.
  • FIG. 5 is a diagram for explaining the convolution operation.
  • FIG. 5 shows, for example, input image data IN_DATA with padding P added around image data of 5 rows and 5 columns, a coefficient filter FLT0 having weights W0 to W8 of 3 rows and 3 columns, and an output image that has been subjected to a convolution operation.
  • Data OUT_DATA is indicated.
  • the convolution operation is a product-sum operation in which a plurality of pixel data in the neighborhood matrix centered on the target pixel and a plurality of coefficients (weights) W0 to W8 of the coefficient filter FLT0 are multiplied and added, and the coefficient filter FLT0 is converted into image data. This operation is repeated while shifting in the raster scan direction.
  • the product-sum operation expression is as follows.
  • Xi ⁇ (Xi * Wi) (1)
  • Xi on the right side is pixel data of the input image IN_DATA
  • Wi is a coefficient
  • Xi on the left side is a product-sum operation value
  • pixel data of the output image OUT_DATA is there.
  • X6 X0 * W0 + X1 * W1 + X2 * W2 + X5 * W3 + X6 * W4 + X7 * W5 + X10 * W6 + X11 * W7 + X12 * W8
  • FIG. 6 is a diagram illustrating an example of the convolution operation of the DL device according to the present embodiment.
  • FIG. 6 shows an input layer INPUT_L and a plurality of convolution layers CNV_L, and a pooling layer between the convolution layers is omitted.
  • the input layer INPUT_L may be the convolution layer CNV_L0.
  • two convolution layers CNV_L1, CNV_L2 are provided.
  • a plurality of pieces of image data X0 to X3 are input or generated in the first input layer INPUT_L or the convolution layer CNV_L0.
  • Each of the image data X0 to X3 in FIG. 6 has pixel data of N rows and M columns, like the image data IM_D in FIG. Accordingly, the pixel data X0-X24 of the image data IM_D in FIG. 4 and the image data X0-X3 in FIG. 6 have the same reference numerals, but are the pixel data in FIG. 4 and the image data in FIG. 6 and subsequent figures. .
  • the second convolution layer CNV_L1 executes the following four convolution operations.
  • a convolution operation is performed on each of the first coefficient filter groups F00-F03 on the four pieces of image data X0-X3 in the first stage, and the image data ⁇ F00 * X0 to ⁇ F03 is obtained by the respective convolution operations.
  • * X3 is generated.
  • the image data ⁇ F00 * X0 to ⁇ F03 * X3 are added to generate the image data XA0 as the calculation result.
  • a convolution operation is performed on each of the four image data X0 to X3 in the first stage by each of the second coefficient filter groups F10 to F13, and the image data ⁇ F10 * X0 to ⁇ F13 is obtained by the respective convolution operations. * X3 is generated. Then, the image data ⁇ F10 * X0 to ⁇ F13 * X3 are added to generate image data XA2 as a result of the calculation.
  • a convolution operation is performed on each of the third coefficient filter groups F20 to F23 on the four pieces of image data X0 to X3 in the first stage, and is generated by each convolution operation. The obtained image data is added to generate image data XA2 as a result of the calculation.
  • convolution operations are performed on four pieces of image data X0 to X3 using four coefficient filter groups.
  • each of the four processor cores CORE0 to CORE3 needs to read four pieces of image data X0 to X3 from the memory.
  • FIG. 7 is a diagram showing a configuration of the graphic processor GPU in the present embodiment.
  • the graphics processor GPU is a deep learning device that executes deep learning operations.
  • the GPU shown in FIG. 7 includes four arithmetic cores CORE0 to CORE3 and a control core C_CORE that controls the arithmetic cores. Further, as in FIG. 3, the direct memory access control circuit DMA, the memory controller MC, And an internal high-speed memory (SRAM) I_MEM and an internal bus I_BUS.
  • DMA direct memory access control circuit
  • MC memory controller
  • I_MEM internal high-speed memory
  • I_BUS internal bus
  • the GPU includes a plurality of individual memories IMEM0 to IMEM3 provided in each of the plurality of operation cores, and the plurality of individual memories are accessed from the operation cores CORE0 to CORE3 to which each belongs.
  • the GPU also includes a plurality of shared memories SMEM0 to SMEM3 provided in each of the plurality of arithmetic cores. The plurality of shared memories are accessed from either the arithmetic core to which each belongs and the first adjacent arithmetic core adjacent in the first direction of the arithmetic core to which it belongs.
  • the shared memory SMEM0 belonging to the arithmetic core CORE0 is accessed from either the arithmetic core CORE0 or the first adjacent core CORE3.
  • the GPU includes a plurality of memory control circuits MAU0 to MAU3 provided between the plurality of arithmetic cores and the plurality of individual memories. Each of the plurality of memory control circuits outputs a read request from the arithmetic core to an individual memory belonging to the arithmetic core.
  • the GPU includes a plurality of selectors SL0 to SL3 provided in each of the plurality of shared memories.
  • Each of the multiple selectors selects a read request from one of the arithmetic core (for example, CORE0) to which each of the multiple shared memories belongs and the above-mentioned first adjacent core (CORE3) and outputs it to the shared memory (SMEM0)
  • the individual memories IMEM0-IMEM3 and the shared memories SMEM0-SMEM3 are both high-speed SRAMs and are accessed from the operation cores CORE0-CORE3. Further, as will be described later, for example, address areas of continuous memory spaces are allocated to the individual memories IMEM0 to IMEM3 and the shared memories SMEM0 to SMEM3. Therefore, each computing core can make an access request by designating an access destination address to any of its own individual memory, its own shared memory, and the shared memory belonging to the second adjacent computing core.
  • the four calculation cores CORE0-CORE3 in the GPU are each in parallel with the four image data X0-X3 and the four calculation cores.
  • a convolution operation is performed with four filters assigned to each.
  • the four operation cores sequentially read the four image data X0 to X3, and repeat the convolution operation with each filter. Therefore, by transferring the image data X0-X3 between adjacent computing cores via a shared memory provided in each computing core, the man-hours for reading the four image data X0-X3 by the four computing cores are reduced.
  • FIG. 8 is a sequence chart showing an outline of operations of reading and calculating image data X0-X3 by the four calculation cores of FIG.
  • the horizontal direction is the time axis TIME, and the individual memories IMEM0-IMEM3 and the shared memory CMEM of each of the four arithmetic cores CORE0-CORE3 are shown in the vertical direction. Then, for each time T0-T4, calculation contents are shown in the calculation cores CORE0-CORE3, and data stored in the individual memory and the shared memory, respectively.
  • Each shared memory CMEM has two memory banks B0a and B0b -It has B3a and B3b.
  • a memory bank is a memory unit that can independently input an access request (read and write) and execute each request.
  • the DMA has transferred the four image data X0-X4 and the four filters in the external main memory M_MEM to the high-speed internal memory I_MEM.
  • the DMA transfers four image data X0-X4 in the internal memory I_MEM and four sets of filters F00-03, F10-13, F20-23, and F30-33 to four individual memories IMEM0-IMEM3.
  • the image data X0 and the first filter F00-03 are stored in the individual memory IMEM0
  • the image data X1 and the second filter F10-13 are stored in the individual memory IMEM1
  • the image data X2 and the third filter F10-13 are stored in the individual memory IMEM2.
  • the filter F20-23 is transferred to the individual memory IMEM3 with the image data X3 and the fourth filter F30-33, respectively.
  • W0-W3 the coefficients of the four filters in each group are denoted by W0-W3.
  • each operation core CORE0-CORE3 receives image data X0-X3 and filters F00-03, F10-13, F20-23, F30- from the individual memories IMEM0-IMEM3 belonging to the respective operation cores. 33 is read and the respective convolution operations ⁇ W0 * X0, ⁇ W1 * X1, ⁇ W2 * X2, and ⁇ W3 * X3 are executed. Further, each arithmetic core writes the respective convolution operation results in the respective individual memories.
  • the shared memory SMEM0 stores image data X3
  • the shared memory SMEM1 stores image data X0
  • the shared memory SMEM2 stores image data X1
  • the shared memory SMEM3 stores image data X2.
  • the operation cores CORE0 to CORE3 read out the respective image data X3 and X0 to X2 from the second memory bank B # b of the shared memories SMEM0 to SMEM3 belonging to the respective operation cores CORE0 to CORE3.
  • the convolution operations ⁇ W3 * X3, ⁇ W0 * X0, ⁇ W1 * X1, and ⁇ W2 * X2 are executed.
  • Each operation core adds and writes the convolution operation result to the operation result at T1 in each individual memory. That is, read modify write is executed.
  • image data X3 and X0-X2 respectively read from the second memory bank B # b of the shared memories SMEM0 to SMEM3 are respectively transferred to the shared memory SMEM1 belonging to the second adjacent arithmetic core by the respective memory control circuits MAU0 to MAU1.
  • image data X2 is stored in the shared memory SMEM0
  • image data X3 is stored in the shared memory SMEM1
  • image data X0 is stored in the shared memory SMEM2
  • image data X1 is stored in the shared memory SMEM3.
  • the respective calculation cores CORE0 to CORE3 read out the respective image data from the shared memories SMEM0 to SMEM3 belonging to the respective calculation cores.
  • the convolution operation is executed, and the operation result is added to the operation result of the previous cycle and stored in the individual memory.
  • each of the image data read from the shared memories SMEM0 to SMEM3 is transferred to the shared memories SMEM1 to SMEM0 and SMEM0 belonging to the second adjacent arithmetic core by the respective memory control circuits MAU0 to MAU1.
  • the first memory bank B # a and the second memory bank B # b of each of the shared memories SMEM0 to SMEM3 are alternately changed for each calculation cycle to the transfer data write destination and the image data read destination. .
  • This change is made by setting transfer select information and read select information to the selector of each shared memory by the control core.
  • the four image data X0-X3, which are the calculation target data required by the four calculation cores, are respectively transferred to the adjacent shared memories in each calculation cycle T1-T4, and the four shared memories are stored. It is circulated in synchronization with the operation cycle.
  • the four image data X0-X1 It is only necessary to perform DMA transfer from the internal memory I_MEM to the four individual memories IMEM0 to IMEM3 only once for the first time. In the subsequent operation cycle, the data is transferred and circulated between the four shared memories. Since the transfer between the shared memories does not involve a bus access to the internal bus, it is efficiently performed and power saving.
  • FIG. 9 is a diagram illustrating a configuration between the arithmetic core in the GPU, the individual memory, and the shared memory.
  • the first adjacent arithmetic core CORE3 in the first direction and the second adjacent arithmetic core CORE1 in the second direction opposite to the first direction are shown with the arithmetic core CORE0 as the center.
  • the individual memory IMEM0, the shared memory SMEM0, the memory control circuit MAU0, and the selector SL0 belonging to the arithmetic core CORE0 will be described.
  • a memory control circuit MAU0 for outputting an access request from the arithmetic core to the individual memory IMEM0 is provided.
  • a selector SL0 is provided between the arithmetic core CORE0 and the shared memory SMEM0 belonging to it.
  • the shared memory SMEM0 has, for example, two memory banks B0a and B0b, and can process access requests independently of each other. Therefore, when one memory bank is the image data read destination, the other memory bank can be the transfer data write destination.
  • the memory control circuit MAU0 arbitrates between the access request from the arithmetic core CORE0 and the access request from the internal bus I_BUS, and arbitrates them, and outputs one request to the individual memory IMEM0.
  • the core-bus arbitration circuit CB_ARB arbitrates so as to give priority to an access request from the internal bus I_BUS, for example. Alternatively, arbitration may be performed to give priority to any access request based on the set value.
  • the control core CORE0 can make an access request to the individual memory IMEM0 belonging to it via the memory control circuit MAU0. Further, the control core CORE0 can make an access request to the shared memory SMEM0 belonging to it via the selector SL0, and can make an access request to the shared memory SEME1 belonging to the second control core CORE1 via the selector SL1. it can.
  • Different logical addresses in the same memory space are allocated to the shared memories SMEM0 to SMEM3 and the individual memories IMEM0 to IMEM3. For example, two memory banks B0a and B0b of the shared memory SMEM0 belonging to a certain control core CORE0 and the individual memory IMEM0 are assigned consecutive addresses. Furthermore, continuous addresses are also assigned to the shared memory and the individual memory belonging to each of the four control cores. Therefore, the control core CORE0 can designate any data in the individual memory IMEM0, the shared memory SMEM0, and the shared memory SMEM1 belonging to the second adjacent arithmetic core CORE1 with unique addresses.
  • the selector SL0 is provided in the shared memory SMEM0.
  • the selector SL0 is set with select information by the control core C_CORE and selects one of the four inputs.
  • access select information (read select information) is set in the selector SL0 from the control core C_CORE. Based on this setting, the selector SL0 selects either the access request from the arithmetic core CORE0 or the access request from the first adjacent arithmetic core CORE3 in the first direction, Output to shared memory SMEM0. The same applies to other selectors.
  • control core CORE0 when access select information for selecting an access request from the control core CORE0 is set in the selectors SL0 and SL1, when the control core CORE0 outputs a control signal of the address ADD and the read / write signal R / W as a memory access , Shared memory SMEM0 and individual memory IMEM0 And a control signal is output to the adjacent shared memory SMEM1 in the second direction.
  • the control core CORE0 can access the data area in any one of the memories designated by the address ADD.
  • the control core CORE0 outputs write data WDT in the case of a write request, and receives read data RDT in the case of a read request.
  • the transfer select from the control core C_CORE is set. Based on this setting, the selector SL0 selects either the transfer request from the memory control circuit MAU0 belonging to the arithmetic core CORE0 or the transfer request from the memory control circuit MAU3 belonging to the first adjacent arithmetic core CORE3, and the shared memory SMEM0. Output to. The same applies to other selectors.
  • the selector SL0 is provided in each of the two memory banks, and performs 1 ⁇ 4 selection on each memory bank.
  • FIG. 10 is a diagram illustrating an operation of transferring read data to the shared memory by the memory control circuit.
  • the memory control circuit MAU0 belonging to the arithmetic core CORE0 has a transfer control circuit TRN_CN.
  • the transfer control circuit TRN_CN reads the read data RDT read from the individual memory IMEM0 and shared memory SMEM0 belonging to the arithmetic core CORE0, and the shared memory SMEM1 belonging to the second adjacent arithmetic core CORE1. Transfer to either shared memory SMEM0 or SMEM1.
  • the transfer control circuit TRN_CN in the memory control circuit detects the read request and reads the read data.
  • RDT_I0 is transferred to one of the two shared memories SMEM0 and SMEM1. That is, the read data is transferred in one of the transfer directions TRN0 and TRN1 indicated by the arrows in FIG.
  • the control core C_CORE sets the read data of which address to the shared memory of which address in the setting register CFG of the transfer control circuit TRN_CN. Further, in the selectors SL0 and SL1, transfer select information corresponding to the transfer destination is set by the control core C_CORE.
  • the transfer control circuit TRN_CN detects the read request and receives the read data RDT_S0. Transfer to the other shared memory SMEM1. That is, the read data is transferred in the direction of transfer TRN2 indicated by the arrow in FIG. This transfer operation is also controlled based on the set value in the setting register CFG.
  • the transfer control circuit TRN_CN detects the read request and obtains the read data RDT_S1. Transfer to one shared memory SMEM0. That is, the read data is transferred in the direction of transfer TRN3 indicated by an arrow in FIG. This transfer operation is also controlled based on the set value in the setting register CFG.
  • FIG. 11 is a diagram for explaining the transfer control circuit TRN_CN and its setting register CFG.
  • FIG. 12 is a flowchart showing the operation of the transfer control circuit.
  • FIG. 12 shows setting values set in the setting register CFG.
  • the transfer range T_RNG indicates a transfer source address of transfer data.
  • the transfer flag T_FLG specifies whether transfer is necessary or not.
  • the transfer offset T_OFST is information on the transfer destination address. When the transfer offset T_OFST is added to the read address RADD, the transfer destination address is calculated. Therefore, by setting the transfer offset T_OFST for the transfer range T_RNG to a predetermined value, it is possible to specify the memory bank of the shared memory as the transfer destination.
  • the control core C_CORE sets respective set values in the setting register CFG of the transfer control circuit TRN_CN and the setting registers C of the selectors SL0 and SL1 via the control bus C_BUS.
  • the transfer range T_RNG, transfer flag T_FLG, and transfer offset T_OFST are set in the setting register CFG.
  • the setting registers of the selectors SL0 and SL1 include, for example, access select information (read select information) indicating which access request of the arithmetic units on both sides is selected, and which of the transfer control circuit TRN_CN of the memory control circuits on both sides Transfer selection information for selecting a transfer request (write request) is set.
  • the selectors SL0 and SL1 each have at least two memory banks, and the selectors SL0 and SL1 can set select information for each of the two memory banks.
  • the transfer control circuit TRN_CN in the memory control circuit MAU monitors the read / write signal R / W of the access request of the arithmetic core.
  • the transfer control circuit TRN_CN detects a read request due to a load instruction (YES in S20), it determines whether or not the transfer flag T_FLG requires transfer, and determines whether or not the read address RADD is an address within the transfer address range T_RNG. Perform S22. If both determinations are YES, the transfer control circuit TRN_CN calculates the transfer destination address TADD by adding the transfer offset T_OFST to the read address RADD, and the read data RDT Is transferred to the transfer destination address TADD as transfer data TDT (S23).
  • the transfer control circuit TRN_CN transfers the transfer address TADD, the write signal WT, and the transfer data TDT to the transfer destination shared memory via the selector SL, and transfers the transfer data TDT to the shared memory. Write.
  • the control core C_CORE In the transfer control circuit of each of the plurality of memory control circuits, (1) Shared memory belonging to the second adjacent core (CORE1) adjacent to the individual memory (IMEM0), the shared memory (SMEM0), and the second direction, in which read data RDT to be transferred between the arithmetic cores is stored (SMEM1) one of the transfer source addresses TR_RNG, (2) Set the transfer destination address information T_OFST of the shared memory (SMEM0) and the shared memory (SMEM1) belonging to the second adjacent core (CORE1), (3) When transfer select information is set for multiple selectors (SL0, SL1) When the address RADD of the read request of each of the plurality of arithmetic cores matches the transfer source address T_RNG, the transfer control circuit of each of the plurality of memory control circuits has a separate memory (IMEM0), shared memory (SMEM0), and the second adjacent core.
  • each of the plurality of shared memories (SMEM0, SMEM1) has a selector (SL0, SL1) set with the read select information.
  • Read data is read from either the arithmetic core (CORE0) or the first adjacent core (CORE3) to which the shared memory belongs.
  • control core C_CORE the control core C_CORE, the four arithmetic cores CORE0-CORE3, The operations of the two memory control circuits MAU0 to MAU3 (transfer control circuit TNS_CN) and the selectors SL0 to SL3 will be described together.
  • FIG. 13 is a sequence diagram showing an operation at time T0, T1, T2 of the sequence of FIG. FIG. 14, FIG. 15 and FIG. 16 show data read and read data transfer to two memory banks B # a and B # b of the shared memory SMEM # belonging to the four arithmetic cores and the individual memory IMEM #.
  • FIG. 14 corresponds to time T1
  • FIG. 15 corresponds to time T2
  • FIG. 16 corresponds to time T3.
  • the control core C_CORE is transferred to the four operation cores CORE0-CORE3, the image data X0-X3 from the internal memory I_MEM, and the four sets of filters F0-F3 to the individual memories IMEM0-IMEM3 that belong to each of them. Instruct to load (S30). In response to this instruction, each of the arithmetic cores CORE0 to CORE3 loads the image data X0 to X3 and the four sets of filters F0 to F3 into individual memories (S31).
  • the control core C_CORE sets data transfer to the memory control circuits MAU0 to MAU3 and selectors SL0 to SL3 belonging to each of the four arithmetic cores (S32).
  • the transfer address range (transfer source address), transfer flag, and transfer offset (transfer destination address information) are set in the setting register CFG of the transfer control circuit (S33).
  • transfer select information is set in the selector.
  • the transfer address range is set to an address in the individual memory, and the transfer select information is set on the memory control circuit (transfer control circuit) side belonging to the second adjacent calculation core of the calculation core to which the selector SL # belongs. .
  • the control core C_CORE instructs the four operation cores CORE0 to CORE3 to start the convolution operation (S34).
  • each of the four arithmetic cores loads (reads) the respective image data X0-X3 and filters F0-F3 from the individual memories belonging to each of them.
  • the transfer control circuit of each memory control circuit detects the read operation, detects that the transfer address range in the setting register CFG matches the read address, and that the transfer flag needs to be transferred, and transfers the transfer destination address TADD.
  • the read data X0-X3 are output to the shared memory (memory bank B # b) of the second adjacent arithmetic core together with the write control signal WT at the transfer destination address TADD. As a result, the read data is transferred to the shared memory (S36).
  • each arithmetic core performs a convolution operation on the read image data X0-X3 and the coefficients W0-W1 of the filters F0-F3 (S37), and stores the operation results in the individual memory belonging to each (S38). Then, each arithmetic core transmits a completion signal END to the control core C_CORE. This completion signal may be notified to the control core at the respective timings when the transfer is completed and when the calculation is completed. When there is a variation in the computation processing time of each computation core, it is not always necessary for each computation core to perform computation processing synchronously.
  • FIG. 14 shows reading of the two memory banks B # a and B # b of the shared memory SMEM # belonging to each arithmetic core, the address of the individual memory IMEM #, the image data X and the filter coefficient W at time T1 ( Solid arrows) and transfer of image data X to adjacent shared memory SMEM # to memory bank B # b (broken arrows) are shown.
  • the start address of the memory bank B0a of the shared memory SMEM0 belonging to the arithmetic core CORE0 is 0x2_0000
  • the start address of the memory bank B0b is 0x2_1000
  • the start address of the individual memory IMEM0 is 0x2_2000
  • the end address is 0x2_6000.
  • each arithmetic core reads the image data X from each individual memory, and at the same time, the transfer control circuit of the memory control circuit transfers the read image data to the memory bank B # b of the shared memory of the second adjacent arithmetic core. Forward.
  • the control core C_CORE makes the same setting as the time T1 in the setting register CFG of the memory control circuit (S42, S43).
  • the transfer offset which is transfer address information, is a value corresponding to the transfer destination being changed to the memory bank B # a of the shared memory.
  • the control core sets read select information and transfer select information in the selector SL # (S42, S43). Thereby, each arithmetic core can read the next image data from the shared memory belonging to itself, and the transfer control circuit can transfer the image data to the shared memory belonging to the second adjacent arithmetic core.
  • each computation core loads the respective image data and filter coefficients (S45), performs a convolution operation (S47), reads the computation results at time T1 in the individual memory, adds the computation results at time T2, Write back to the individual memory again (read modify write operation) (S48).
  • the transfer control circuit of the memory control circuit transfers the image data loaded by the arithmetic core to the shared memory (S48).
  • each operation core transmits a completion notification END to the control core.
  • each arithmetic core reads the image data X from the memory bank B # b of the respective shared memory, and at the same time, the transfer control circuit of the memory control circuit converts the read image data into the second adjacent operation. Transfer to the memory bank B # a of the shared memory of the core.
  • FIG. 16 shows the operation at time T3.
  • Each arithmetic core reads image data X from the memory bank B # a of the shared memory, and at the same time, the transfer control circuit of the memory control circuit reads the image data. 2. Transfer to shared memory B # b of shared memory of adjacent computing core.
  • the operation at time T4 is the same as in FIG.
  • the four image data X0-X3 are transferred between the shared memories belonging to the four arithmetic cores for each arithmetic cycle T1-T4 and circulated.
  • FIG. 17 is a diagram illustrating the operation of the processor according to the second embodiment.
  • the arithmetic core CORE0 reads the coefficient W from the individual memory IMEM0 and the image data X from the memory bank B0a of the shared memory SMEM0, and executes a predetermined process PR such as a convolution operation. Then, the arithmetic core CORE0 transfers the processing result to the memory bank B1a of the shared memory SMEM1 belonging to the adjacent arithmetic core CORE1.
  • the operation core CORE1 reads the coefficient W from the individual memory IMEM1, and the image data X of the operation result of the operation core CORE0 from the memory bank B1a of the shared memory SMEM1, respectively, and executes a predetermined process PR such as a convolution operation. Then, the arithmetic core CORE1 transfers the processing result to the memory bank B2a of the shared memory SMEM2 belonging to the adjacent arithmetic core CORE2.
  • the operation core CORE2 reads the coefficient W from the individual memory IMEM2, and the image data X of the operation result of the operation core CORE1 from the memory bank B2a of the shared memory SMEM2, respectively, and executes a predetermined process PR such as a convolution operation. Then, the arithmetic core CORE2 transfers the processing result to the memory bank B3a of the shared memory SMEM3 belonging to the adjacent arithmetic core CORE3.
  • the operation core CORE3 reads the coefficient W from the individual memory IMEM3 and the image data X of the operation result of the operation core CORE2 from the memory bank B3a of the shared memory SMEM3, and executes a predetermined process PR such as a convolution operation. Then, the arithmetic core CORE3 transfers the processing result to the memory bank B0a of the shared memory SMEM0 belonging to the adjacent arithmetic core CORE0.
  • the four operation cores transfer the operation results between the operation cores, so that the processing for loading the operation results from the internal memory I_MEM can be greatly reduced.
  • each arithmetic core is provided with a shared memory in addition to the individual memory, and when the arithmetic core reads data from the individual memory and the shared memory and performs a predetermined operation, the read data is simultaneously received. Transfer to shared memory belonging to itself or shared memory belonging to adjacent computing core. Then, the adjacent calculation core reads the data transferred to the shared memory and performs a predetermined calculation. Then, access to the shared memory by the arithmetic core and transfer of read data to the shared memory are executed based on the setting of the control value from the control core.
  • data transfer between computing cores can be performed by setting a control value by the control core and issuing a transfer request based on the set value by issuing an address and a read / write signal. You can transfer.
  • (Appendix 1) Multiple computing cores; A plurality of individual memories provided in each of the plurality of arithmetic cores and accessed from the arithmetic cores to which each belongs; A plurality of shared memories provided in each of the plurality of operation cores and accessed from any one of the operation cores to which the operation cores belong and the first adjacent cores adjacent to the operation cores in the first direction; A plurality of memory control circuits provided between each of the plurality of arithmetic cores and the plurality of individual memories, and outputting a read request from the arithmetic cores to the individual memories belonging to the arithmetic core; A read request from each of the arithmetic core and the first adjacent core to which each of the plurality of shared memories belongs is selected and output to the shared memory.
  • a plurality of selectors for selecting a transfer request from any of the memory control circuits belonging to the second adjacent core adjacent in two directions and outputting the same to the shared memory;
  • a control core for controlling the plurality of arithmetic cores, The control core transfers, to each of the plurality of memory control circuits, a transfer source address of the individual memory and the shared memory in which transfer data transferred between the plurality of arithmetic cores is stored, and the transfer data is transferred
  • the transfer destination address of the shared memory is set and the transfer select information is set in the plurality of selectors
  • the read request address of the arithmetic core to which each of the plurality of memory control circuits matches the transfer source address
  • the read control address is read to the transfer destination address via the selector in which the transfer select information is set.
  • Each of the plurality of shared memories is a processor in which read data is read from either the arithmetic core to which the shared memory belongs or the first adjacent core via the selector in which the read select information is set.
  • the transfer source address is a transfer source address of a shared memory belonging to a second adjacent core adjacent to the individual memory and the shared memory in a second direction in which the transfer data is stored,
  • Each of the plurality of shared memories has a first memory bank and a second memory bank;
  • the control core sets the transfer select information for the first memory bank of each of the plurality of selectors and sets the read select information for the second memory bank, The transfer data is transferred, and the read data is read from the second memory bank;
  • the control core sets the transfer select information for the second memory bank and sets the read select information for the first memory bank, the transfer data is transferred to the second memory bank.
  • the processor according to appendix 1, wherein the read data is read from the first memory bank.
  • Each of the plurality of selectors includes a first selector for the first memory bank and a second selector for the second memory bank, and each of the first and second selectors includes the read select information or transfer select.
  • Appendix 7 The processor according to appendix 5, wherein the transfer data stored in each of the plurality of individual memories is transferred to a shared memory belonging to each adjacent core for each operation cycle of the plurality of operation cores.
  • each of the plurality of memory control circuits includes an inter-core bus arbitration circuit that arbitrates an access request from an arithmetic core to which the plurality of memory control circuits belong and an access request from an internal bus and outputs the arbitration request to the individual memory.
  • the transfer source address of any one of the shared memories belonging to it When the transfer source address of any one of the shared memories belonging to it, the transfer destination address information of any of the shared memories belonging to the shared memory and the second adjacent core are set, and transfer select information is set to the plurality of selectors ,
  • each of the plurality of memory control circuits when the address of the read request of each of the plurality of operation cores matches the transfer source address, one of the individual memory, the shared memory, and the shared memory belonging to the second adjacent core Transferring the transfer data read from one of the shared memory and the shared memory belonging to the second adjacent core corresponding to the transfer destination address information;
  • the control core sets read select information in the plurality of selectors,
  • Each of the plurality of shared memories is a processor in which read data is read from either the arithmetic core to which the shared memory belongs or the first adjacent core via the selector in which the read select information is set.
  • a plurality of selectors for selecting a transfer request from any of the memory control circuits belonging to the second adjacent core adjacent in two directions and outputting the same to the shared memory;
  • a control core for controlling the plurality of arithmetic cores, The control core transfers, to each of the plurality of memory control circuits, a transfer source address of the individual memory and the shared memory in which transfer data transferred between the plurality of arithmetic cores is stored, and the transfer data is transferred
  • the transfer destination address of the shared memory is set and the transfer select information is set in the plurality of selectors
  • the read request address of the arithmetic core to which each of the plurality of memory control circuits matches the transfer source address
  • the read control address is read to the transfer destination address via the selector in which the transfer select information is set.
  • Each of the plurality of shared memories is configured to read out read data from either the arithmetic core to which the shared memory belongs or the first adjacent core via the selector in which the read select information is set.
  • a plurality of selectors for selecting a transfer request from any of the memory control circuits belonging to the second adjacent core adjacent in two directions and outputting the same to the shared memory In a method of operating a processor having a control core that controls the plurality of arithmetic cores, The control core transfers, to each of the plurality of memory control circuits, a transfer source address of the individual memory and the shared memory in which transfer data transferred between the plurality of arithmetic cores is stored, and the transfer data is transferred Set the transfer destination address of the shared memory, set the transfer select information in the plurality of selectors, When the read request address of the arithmetic core to which each of the plurality of memory control circuits matches the transfer source address, the read control address is read to the transfer destination address via the selector in which the transfer select information is set.
  • the control core sets read select information for each of the plurality of selectors, A method of operating a processor, wherein each of the plurality of shared memories reads read data from either the arithmetic core to which the shared memory belongs or the first adjacent core via the selector in which the read select information is set.
  • C_CORE Control core CORE0-CORE3: Computing core IMEM0-IMEM3: Individual memory SMEM0-SMEM3: Shared memory B # a, B # b: Memory bank SL0-SL3: Selector MAU0-MAU3: Memory control circuit TR_CN: Transfer control circuit RDT: Read data TDT: Transfer data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Image Processing (AREA)
  • Advance Control (AREA)

Abstract

【課題】 プロセッサ内のコアによる画像データの読み出し処理を効率的に行う。 【解決手段】 複数の演算コアCOREと、演算コアからアクセスされる複数の個別メモリ(IMEM)と、複数の演算コアそれぞれに設けられる複数の共有メモリ(SMEM)と、複数の演算コアと複数の個別メモリのそれぞれの間に設けられる複数のメモリ制御回路(MAU)と、複数の共有 メモリそれぞれに設けられる複数のセレクタ(SL)と、複数の演算コアを制御する制御コア(C_CORE)とを有する。制御コアが、複数のメモリ制御回路それぞれに、複数の演算コア間で転送される転送データが格納される個別メモリ及び共有メモリの転送元アドレスと、転送データが転送される共有メモリの転送先アドレスを設定し、複数のセレクタに転送セレクト情報を設定した場合、複数のメモリ制御回路それぞれが、それぞれが属する演算コア(COER0)のリード要求のアドレスが前記転送元アドレスと一致する場合、前記転送 セレクト情報を設定された前記セレクタを経由して前記転送先アドレスに前記リード要求に対する転送データを転送する。制御コアが、複数のセレクタそれぞれにリードセレクト情報を設定した場合、複数の共有メモリそれぞれは、リードセレクト情報を設定されたセレクタを経由して共有メモリが属する演算コアと第1隣接コアのいずれかからリードデータを読み出される、プロセッサ。

Description

プロセッサ、情報処理装置及びプロセッサの動作方法
 本発明は,プロセッサ、情報処理装置及びプロセッサの動作方法に関する。
 ディープラーニング(以下DL1:Deep Learning)は、情報処理装置内のプロセッサの演
算処理により実行される。DLは、階層の深いニューラルネットワーク(以下DNN:Deep Neural Network)を利用したアルゴリズムの総称である。そして、DNNの中でも良く利用さ
れるのが、コンボリュージョン・ニューラルネットワーク(CNN:Convolution Neural Network)である。CNNは、例えば画像データの特徴を判定するDNNとして広く利用される。
 画像データの特徴を判定するCNNは、画像データを入力しフィルタを利用した畳込み演
算を行い画像データの特徴(例えばエッジの特徴など)を検出する。そして、CNNの畳込
み演算は、例えばプロセッサにより演算される。以下の特許文献1にはマルチコア・プロセッサのプロセッサ間通信について開示がある。
特開2013-156783号公報 国際公開第2016/075813号公報 国際公開第2012/001835号公報 特開平8-147178号公報
 上記の畳込み演算は、係数フィルタの画像データでの位置を画像データのラスタスキャン方向に移動しながら、画像データの注目画素を中心とする近傍マトリクスの画素データと係数フィルタの係数(重み)との積和演算を繰り返す。そして、畳込み演算は、複数の画像データと複数の係数フィルタそれぞれの畳込み演算を含み、複数の積和演算器で並列に行うことが演算時間短縮に寄与する。その場合、それぞれ演算器を有する複数のコアが、複数の画像データをそれぞれメモリから読み出し、それぞれの係数フィルタで積和演算を繰り返す。
 したがって、複数のコアそれぞれが、同じ複数の画像データをメモリから読み出す処理は、畳込み演算の処理効率を下げる一つの要因である。しかも、DNNの演算は非常の多く
の畳込み演算を含むので、上記の画像データの読み出し処理による処理効率の低下の程度はその分大きくなる。
 そこで、一つの実施の形態の目的は,プロセッサ内のコアによる画像データの読み出し処理を効率的に行うプロセッサ、情報処理装置及びプロセッサの動作方法を提供することにある。
 一つの実施の形態は,複数の演算コアと、
 前記複数の演算コアそれぞれに設けられ、それぞれが属する前記演算コアからアクセスされる複数の個別メモリと、
 前記複数の演算コアそれぞれに設けられ、それぞれが属する前記演算コアと前記属する演算コアの第1方向に隣接する第1隣接コアのいずれかからアクセスされる複数の共有メ
モリと、
 前記複数の演算コアと前記複数の個別メモリのそれぞれの間に設けられ、前記演算コアからのリード要求を前記演算コアに属する個別メモリに出力する複数のメモリ制御回路と、
 前記複数の共有メモリそれぞれに設けられ、前記複数の共有メモリそれぞれが属する前記演算コアと前記第1隣接コアのいずれかからのリード要求を選択し前記共有メモリに出
力し、前記メモリ制御回路と第2方向に隣接する第2隣接コアに属するメモリ制御回路のいずれかからの転送要求を選択し前記共有メモリに出力する複数のセレクタと、
 前記複数の演算コアを制御する制御コアとを有し、
 前記制御コアが、前記複数のメモリ制御回路それぞれに、前記複数の演算コア間で転送される転送データが格納される前記個別メモリ及び共有メモリの転送元アドレスと、前記転送データが転送される前記共有メモリの転送先アドレスを設定し、前記複数のセレクタに転送セレクト情報を設定した場合、
 前記複数のメモリ制御回路それぞれが、それぞれが属する演算コアのリード要求のアドレスが前記転送元アドレスと一致する場合、前記転送セレクト情報を設定された前記セレクタを経由して前記転送先アドレスに前記リード要求に対する転送データを転送し、
 前記制御コアが、前記複数のセレクタそれぞれにリードセレクト情報を設定した場合、
 前記複数の共有メモリそれぞれは、前記リードセレクト情報を設定された前記セレクタを経由して前記共有メモリが属する演算コアと前記第1隣接コアのいずれかからリードデータを読み出される、プロセッサである。
 第1の側面によれば,プロセッサ内のコアによる画像データの読み出し処理を効率的に行うことができる。
本実施の形態における情報処理装置(ディープラーニングサーバ)の構成を示す図である。 ディープラーニング演算プログラムの概略的な処理を示すフローチャート図である。 グラフィックプロセッサ(GPU)11の構成とGPU内のコアCOREの構成とを示す図である。 DNNの一例を示す図である。 畳込み演算を説明する図である。 本実施の形態のDL装置の畳込み演算の一例を示す図である。 本実施の形態におけるグラフィックプロセッサGPUの構成を示す図である。 図7の4つの演算コアによる画像データX0-X3の読み出しと演算の動作の概略を示すシーケンスチャートである。 GPU内の演算コアと個別メモリ及び共有メモリとの間の構成を示す図である。 メモリ制御回路によるリードデータの共有メモリへの転送動作を示す図である。 転送制御回路TRN_CNとその設定レジスタCFGを説明する図である。 転送制御回路の動作を示すフローチャート図である。 図8のシーケンスの時間T0,T1,T2での動作を示すシーケンス図である。 4つの演算コアに属する共有メモリSMEM#の2つのメモリバンクB#a,B#bと、個別メモリIMEM#に対するデータ読み出しとリードデータの転送を示す図である。 4つの演算コアに属する共有メモリSMEM#の2つのメモリバンクB#a,B#bと、個別メモリIMEM#に対するデータ読み出しとリードデータの転送を示す図である。 4つの演算コアに属する共有メモリSMEM#の2つのメモリバンクB#a,B#bと、個別メモリIMEM#に対するデータ読み出しとリードデータの転送を示す図である。 第2の実施の形態におけるプロセッサの動作を示す図である
 図1は、本実施の形態における情報処理装置(ディープラーニングサーバ)の構成を示す図である。サーバ1は、ネットワークを介してセンシング装置群30及び端末装置32と通信可能である。センシング装置群30は、例えば撮像素子により画像を撮像して画像データを生成し、画像データをサーバ1に送信する。端末装置32は、画像データの特徴の判定結果をサーバ1から受信して出力する。
 サーバ1は、汎用プロセッサであるCPU(Central processing Unit)10と、グラフィックプロセッサであるGPU(Graphic Processing Unit)11とを有する。サーバ1は、さらに、DRAMなどのメインメモリ12と、NIC(Network Interface Card)などのネットワ
ークインターフェース14と、ハードディスクやSSD(Solid Storage Device)などの大
容量の補助メモリ20と、それらを接続するバスBUSとを有する。
 補助メモリ20は、ディープラーニング演算プログラム22と、ディープラーニングパラメータ24などを記憶する。補助メモリ20は、上記プログラムやパラメータに加えて、図示しないオペレーティングシステム(OS)や、各種ミドルウエアプログラムなども記憶する。プロセッサ10及びグラフィックプロセッサ11は、上記のプログラムやパラメータをメインメモリ12に展開し、パラメータに基づいてプログラムを実行する。
 図2は、ディープラーニング演算プログラムの概略的な処理を示すフローチャート図である。DL演算プログラムは、例えばDNNの演算を実行するプログラムである。プロセッサ
10,11は、DL演算プログラムを実行して、学習モードと判定モードの処理を実行する。DLとして、画像データの特徴を判定するDNNを例にして説明する。
 学習モードでは、プロセッサ10、11は、演算パラメータ(フィルタの係数(重み)等)の初期値をメインメモリ12から読み出し、プロセッサ11内の高速メモリSRAMに書込む(S10)。さらに、プロセッサは、センシング装置群30から送信された画像データ
をメインメモリ12から読み出し高速メモリSRAMに書込む(S11)。そして、プロセッサ
は、画像データをフォーマット変換して演算器入力用の近傍マトリクス画像データ(演算処理データ)を生成し(S12)、DNNの畳込み層、プーリング層、全結合層、ソフトマックス層(出力層)の演算処理を行う(S13)。この演算は、所定数の画像データについてそ
れぞれ行われる。演算結果は例えば画像データが数字0~1のうちいずれかなどである。
 更に、プロセッサ10、11は、演算結果と画像データの正解データである教師データとの差分が閾値以下か否か判定し(S14)、差分が閾値以下でない場合(S14のNO)、演算パラメータを差分に基づいてDNNのバックワード演算を実行し演算パラメータを更新する
(S15)。そして、更新された演算パラメータで、上記の工程S11-S13を繰り返す。ここで演算結果と教師データとの差分は、例えば1000枚の画像データについて演算した1000個の演算結果と、1000個の教師データそれぞれの差分の合計値などである。
 上記の差分が閾値以下になったとき(S14のYES)、演算パラメータが最適値に設定されたと判断して、学習モードを終了する。そして、演算パラメータの最適値によって、その後の判定モードでの演算処理が行われる。
 判定モードでは、プロセッサ10、11は、判定対象の画像データをメインメモリから読み出し(S16)、画像データをフォーマット変換して演算器入力用の近傍マトリクス画
像データを生成し(S17)、DNNの畳込み層、プーリング層、全結合層、ソフトマックス層
の演算処理を行う(S18)。プロセッサ10,11は、上記の判定処理を、判定対象の画
像データが終了するまで繰り返す(S19)。判定結果は、端末装置32に送信され出力さ
れる。
 図3は、グラフィックプロセッサ(GPU)11の構成とGPU内のコアCOREの構成とを示す図である。GPU11は、メインメモリM_MEMにアクセス可能である。GPUは、例えば8個のプロセッサコアCOREと、それぞれのプロセッサコアCOREに対応して配置された複数の高速メモリSRAMと、内部バスI_BUSと、メインメモリM_MEMとのアクセス制御を行うメモリコントローラMCとを有する。GPUは、図3に示されていない、各コアCORE内のL1キャッシュメモ
リと、8つのコアCOREで共用されるL2キャッシュメモリと、種々の周辺リソース回路を有する。さらに、GPUは、内部の高速メモリSRAM間のデータ転送、メインメモリM_MEMと高速メモリSRAM間のデータ転送などを制御するダイレクトメモリアクセス制御回路DMAを有す
る。
 一方、各プロセッサコアCOREは、通常のプロセッサコアと同様に、命令をメモリから取得する命令フェッチ回路FETCHと、取得した命令をデコードするデコーダDECと、デコード結果に基づいて命令を演算する複数の演算器ALU及びそのレジスタ群REGと、高速メモリSRAMにアクセスするメモリアクセス制御回路MACとを有する。
 GPUは、例えば半導体チップで実現され、本実施の形態のDL装置である。GPUは、前述のセンシング装置群から送信された画像データを記憶するメインメモリM_MEMから画像デー
タを読み出して、内部の高速メモリSRAMに書込む。そして、各コアCORE内の演算器ALUは
、SRAMに書き込まれた画像データを入力し、DNNの各層の演算処理を実行し、DNNの出力を生成する。
 図4は、CNNの一例を示す図である。画像データの判定処理を行うCNNは、入力データである画像データIM_Dが入力される入力層INPUT_Lと、複数組のコンボリュージョン層CNV_L及びプーリング層PL_Lと、全結合層C_Lと、ソフトマックス層(出力層)OUT_Lとを有する。
 コンボリュージョン層CNV_Lは、画像データIM_Dを係数フィルタFLTでフィルタリングしてある特徴量を有する画像データF_IM_Dを生成する。複数の係数フィルタFLT_0-3でフィ
ルタリングすると、それぞれの特徴量の画像データF_IM_Dが生成される。プーリング層PL_Lは、例えばコンボリュージョン層のノードの値の代表値(例えば最大値)を選択する。そして、出力層OUT_Lには、前述したように、例えば画像データ内の数字の判定結果(0
~9のいずれか)が出力される。
 コンボリュージョン層CNV_Lは、M×Nの二次元画素マトリクスの画素データを有する画
像データIM_Dの例えば3×3の近傍マトリクスの画素データと、近傍マトリクスと同じ3×3の係数フィルタFLTの係数データとをそれぞれ乗算し乗算結果を加算する積和演算を
行い、近傍マトリクスの中央の注目画素の画素データF_IM_Dを生成する。このフィルタリング処理を、係数フィルタを画像データIM_Dのラスタスキャン方向にずらしながら画像データIM_Dの全ての画素に対して演算を行う。これが畳込み演算である。
 図5は、畳込み演算を説明する図である。図5には、例えば5行5列の画像データの周囲にパディングPを追加した入力画像データIN_DATAと、3行3列の重みW0-W8を有する係
数フィルタFLT0と、畳込み演算された出力画像データOUT_DATAとが示される。畳込み演算は、注目画素を中心とする近傍マトリクスの複数の画素データと係数フィルタFLT0の複数の係数(重み)W0-W8とをそれぞれ乗算し加算する積和演算を、係数フィルタFLT0を画像
データのラスタスキャン方向にずらしながら繰り返す演算である。
 近傍マトリクスの画素データがXi(但しi=0-8)、係数フィルタの係数データがWi(但
しi=0-8)の場合、積和演算式は次のとおりである。
Xi = Σ(Xi * Wi)    (1)
但し、右辺のXiは入力画像IN_DATAの画素データ、Wiは係数であり、Σはi = 0-8 だけ加
算することを示し、左辺のXiは積和演算値であり出力画像OUT_DATAの画素データである。
 即ち、画像データの注目画素がX6の場合は、式(1)により積和演算SoPされた画素デ
ータX6は、次のとおりである。
X6 = X0*W0 + X1*W1 + X2*W2 + X5*W3 + X6*W4 + X7*W5 + X10*W6 + X11*W7 + X12*W8
 [実施の形態]
 図6は、本実施の形態のDL装置の畳込み演算の一例を示す図である。図6は、入力層INPUT_Lと複数のコンボリュージョン層CNV_Lとが示され、コンボリュージョン層の間のプーリング層は省略されている。入力層INPUT_Lはコンボリュージョン層CNV_L0であっても良
い。その後段に、2つのコンボリュージョン層CNV_L1, CNV_L2が設けられている。
 1段目の入力層INPUT_Lまたはコンボリュージョン層CNV_L0には、複数の画像データX0-X3が入力または生成されている。図6の画像データX0-X3それぞれは、図4の画像データIM_Dと同様にN行M列の画素データを有する。したがって、図4の画像データIM_Dの画素
データX0-X24と図6の画像データX0-X3は、同じ引用符号であるが、図4では画素データ
、図6及びそれ以降の図では画像データである。
 2段目のコンボリュージョン層CNV_L1は、以下の4つの畳込み演算を実行する。
(1)1段目の4枚の画像データX0-X3に対して、第1の係数フィルタ群F00-F03それぞれで畳込み演算を実行し、それぞれの畳込み演算により画像データΣF00*X0~ΣF03*X3を生成する。そして、その画像データΣF00*X0~ΣF03*X3を加算して、演算結果の画像データXA0を生成する。
(2)1段目の4枚の画像データX0-X3に対して、第2の係数フィルタ群F10-F13それぞれで畳込み演算を実行し、それぞれの畳込み演算により画像データΣF10*X0~ΣF13*X3を生成する。そして、その画像データΣF10*X0~ΣF13*X3を加算して、演算結果の画像データXA2を生成する。
(3)上記と同様に、1段目の4枚の画像データX0-X3に対して、第3の係数フィルタ群F20-F23それぞれで畳込み演算を実行し、それぞれの畳込み演算で生成された画像データを加算し、演算結果の画像データXA2を生成する。
(4)上記と同様に、1段目の4枚の画像データX0-X3に対して、第4の係数フィルタ群F30-F33それぞれで畳込み演算を実行し、それぞれの畳込み演算された画像データを加算し、演算結果の画像データXA3を生成する。
 上記のコンボリュージョン層の畳込み演算例は、4枚の画像データX0-X3に対し、4つ
の係数フィルタ群でそれぞれ畳込み演算を行う。かかる多くの畳込み演算の効率を上げるためには、上記の(1)~(4)の畳込み演算を4つのプロセッサコアCORE0-CORE3で並
列に処理することが好ましい。その場合、4つのプロセッサコアCORE0-CORE3それぞれは
、4枚の画像データX0-X3をメモリから読み出す必要がある。
 [GPUの構成]
 図7は、本実施の形態におけるグラフィックプロセッサGPUの構成を示す図である。グ
ラフィックプロセッサGPUは、ディープラーニングの演算を実行するディープラーニング
装置である。
 図7に示したGPUは、4つの演算コアCORE0-CORE3と、演算コアを制御する制御コアC_COREとを有し、さらに、図3と同様に、ダイレクトメモリアクセス制御回路DMAと、メモリ
コントローラMCと、内部の高速メモリ(SRAM)I_MEMと、内部バスI_BUSとを有する。
 さらに、GPUは、複数の演算コアそれぞれに設けられた複数の個別メモリIMEM0-IMEM3を有し、複数の個別メモリは、それぞれが属する演算コアCORE0-CORE3からアクセスされる
。また、GPUは、複数の演算コアそれぞれに設けられた複数の共有メモリSMEM0-SMEM3を有する。複数の共有メモリは、それぞれが属する演算コアとその属する演算コアの第1方向に隣接する第1隣接演算コアのいずれかからアクセスされる。例えば、演算コアCORE0に
属する共有メモリSMEM0は、演算コアCORE0と第1隣接コアCORE3のいずれかからアクセスされる。
 そして、GPUは、複数の演算コアと複数の個別メモリのそれぞれの間に設けられた複数
のメモリ制御回路MAU0-MAU3を有する。複数のメモリ制御回路それぞれは、演算コアから
のリード要求を当該演算コアに属する個別メモリに出力する。
 さらに、GPUは、複数の共有メモリそれぞれに設けられた複数のセレクタSL0-SL3を有する。複数のセレクタそれぞれ(例えばSL0)は、複数の共有メモリそれぞれが属する演算
コア(例えばCORE0)と前述の第1隣接コア(CORE3)のいずれかからのリード要求を選択
し共有メモリ(SMEM0)に出力し、メモリ制御回路(MAU0)と第2方向に隣接する第2隣
接コア(CORE1)に属するメモリ制御回路(MAU1)のいずれかからの転送要求を選択し、
共有メモリ(SMEM0)に出力する。
 個別メモリIMEM0-IMEM3と共有メモリSMEM0-SMEM3は、いずれも高速のSRAMであり、演算コアCORE0-CORE3からアクセスされる。また、後述するとおり、個別メモリIMEM0-IMEM3と共有メモリSMEM0-SMEM3は、例えば連続するメモリ空間のアドレス領域が割り当てられる
。したがって、各演算コアは、自分の個別メモリと自分の共有メモリと第2隣接演算コアに属する共有メモリのいずれかに、アクセス先のアドレスを指定してアクセス要求を行うことができる。
 GPUが、図6に示したコンボリュージョン層CNV_L1の畳込み演算を実行する場合、GPU内の4つの演算コアCORE0-CORE3が、並列に、4つの画像データX0-X3それぞれと4つの演算コアそれぞれに割り当てられた4つのフィルタで畳込み演算を実行する。この場合、前述のとおり、4つの演算コアは、4つの画像データX0-X3を順番に読み出して、それぞれの
フィルタで畳込み演算を繰り返す。そこで、各演算コアに設けた共有メモリを介して画像データX0-X3を隣接する演算コア間で転送することで、4つの演算コアによる4つの画像
データX0-X3の読み出し工数を削減する。
 [GPUによる畳込み演算]
 図6の畳込み演算を例にして、図7の4つの演算コアによる画像データX0-X3の読み出
しと演算の動作の概略を説明する。
 図8は、図7の4つの演算コアによる画像データX0-X3の読み出しと演算の動作の概略
を示すシーケンスチャートである。横方向は時間軸TIMEであり、縦方向に4つの演算コアCORE0-CORE3それぞれの個別メモリIMEM0-IMEM3、共有メモリCMEMが示される。そして、各時間T0-T4毎に、演算コアCORE0-CORE3には演算内容、個別メモリと共有メモリにはそれぞれ格納されるデータが示される。共有メモリCMEMはそれぞれ2つのメモリバンクB0a,B0b
-B3a,B3bを有する。メモリバンクとはそれぞれ独立してアクセス要求(リードとライト
)を入力しそれぞれの要求を実行できるメモリ単位である。
 事前に、DMAが外部のメインメモリM_MEM内の4つの画像データX0-X4と4つのフィルタ
が高速の内部メモリI_MEMに転送済みである。そして、時間T0で、DMAが、内部メモリI_MEM内の4つの画像データX0-X4と4組のフィルタF00-03,F10-13,F20-23,F30-33を、4つの
個別メモリIMEM0-IMEM3それぞれに転送する。例えば、個別メモリIMEM0には画像データX0と第1のフィルタF00-03が、個別メモリIMEM1には画像データX1と第2のフィルタF10-13が、個別メモリIMEM2には画像データX2と第3のフィルタF20-23が、個別メモリIMEM3には画像データX3と第4のフィルタF30-33がそれぞれ転送される。以下、各組の4つのフィルタの係数をW0-W3で示す。
 最初の第1の演算サイクルT1では、各演算コアCORE0-CORE3が、それぞれに属する個別
メモリIMEM0-IMEM3からそれぞれの画像データX0-X3とフィルタF00-03,F10-13,F20-23,F30-33を読み出し、それぞれの畳込み演算ΣW0*X0,ΣW1*X1,ΣW2*X2,ΣW3*X3を実行する。さらに、各演算コアは、それぞれの畳込み演算結果を、それぞれの個別メモリに書込む。そして、個別メモリIMEM0-IMEM3からそれぞれ読み出される画像データX0-X3それぞれは、それぞれのメモリ制御回路MAU0-MAU1により、第2隣接演算コアに属する共有メモリSMEM1-SMEM3,SMEM0の第2のメモリバンクB#b(#=0-3)側に転送される。その結果、共有メモリSMEM0には画像データX3が、共有メモリSMEM1には画像データX0が、共有メモリSMEM2には画像
データX1が、共有メモリSMEM3には画像データX2が、それぞれ記憶される。
 第2の演算サイクルT2では、各演算コアCORE0-CORE3が、それぞれに属する共有メモリSMEM0-SMEM3の第2のメモリバンクB#bからそれぞれの画像データX3,X0-X2を読み出し、そ
れぞれのフィルタで畳込み演算ΣW3*X3,ΣW0*X0,ΣW1*X1,ΣW2*X2を実行する。各演算コ
アは、畳込み演算結果をそれぞれの個別メモリ内のT1での演算結果に加算して書き込む。つまりリードモディファイライトを実行する。そして、共有メモリSMEM0-SMEM3の第2の
メモリバンクB#bからそれぞれ読み出される画像データX3,X0-X2それぞれは、それぞれの
メモリ制御回路MAU0-MAU1により、第2隣接演算コアに属する共有メモリSMEM1-SMEM3,SMEM0の第1のメモリバンクB#aに転送される。その結果、共有メモリSMEM0には画像データX2が、共有メモリSMEM1には画像データX3が、共有メモリSMEM2には画像データX0が、共有メモリSMEM3には画像データX1が、それぞれ記憶される。
 第3、第4の演算サイクルT3,T4では、第2の演算サイクルと同様に、各演算コアCORE0-CORE3が、それぞれに属する共有メモリSMEM0-SMEM3からそれぞれの画像データを読み出
し、それぞれのフィルタで畳込み演算を実行し、演算結果を以前サイクルの演算結果に加算して個別メモリに記憶する。そして、共有メモリSMEM0-SMEM3からそれぞれ読み出され
る画像データそれぞれは、それぞれのメモリ制御回路MAU0-MAU1により、第2隣接演算コ
アに属する共有メモリSMEM1-SMEM3,SMEM0に転送される。
 各共有メモリSMEM0-SMEM3の第1のメモリバンクB#a,第2のメモリバンクB#bは、転送データの書込み先と、画像データの読み出し先とに、演算サイクル毎に交互に変更される。この変更は、制御コアによる、各共有メモリのセレクタへの転送セレクト情報とリードセレクト情報の設定により行われる。
 このようにして、4つの演算コアが必要とする演算対象のデータである4つの画像データX0-X3は、各演算サイクルT1-T4で、隣接する共有メモリにそれぞれ転送され、4つの共有メモリを演算サイクルに同期して循環される。この結果、4つの画像データX0-X1は、
それぞれ最初の1回だけ内部メモリI_MEMから4つの個別メモリIMEM0-IMEM3にDMA転送さ
れればよく、その後の演算サイクルでは、4つの共有メモリ間で転送され循環される。この共有メモリ間の転送は、内部バスに対するバスアクセスを伴わないので、効率的に行われ、省電力である。
 [GPUの詳細構成]
 図9は、GPU内の演算コアと個別メモリ及び共有メモリとの間の構成を示す図である。
図中、演算コアCORE0を中心として、第1方向の第1隣接演算コアCORE3と、第1方向とは
逆方向の第2方向の第2隣接演算コアCORE1とが示される。以下、演算コアCORE0に属する個別メモリIMEM0、共有メモリSMEM0、メモリ制御回路MAU0、セレクタSL0、について説明
する。
 演算コアCORE0とそれに属する個別メモリIMEM0との間には、演算コアからのアクセス要求を個別メモリIMEM0に出力するメモリ制御回路MAU0が設けられる。また、演算コアCORE0とそれに属する共有メモリSMEM0との間には、セレクタSL0が設けられる。また、共有メモリSMEM0は、例えば2つのメモリバンクB0a,B0bを有し、それぞれ独立してアクセス要求を処理できる。したがって、一方のメモリバンクが画像データのリード先となるとき、他方のメモリバンクが転送データのライト先となることができる。
 メモリ制御回路MAU0は、演算コアCORE0からのアクセス要求と、内部バスI_BUSからのアクセス要求とが競合する場合、それらの調停を行い、一方の要求を個別メモリIMEM0に出
力するコア・バス間調停回路CB_ARBを有する。このコア・バス間調停回路CB_ARBは、例えば内部バスI_BUSからのアクセス要求を優先するように調停する。または、設定値に基づ
いていずれかのアクセス要求を優先するように調停してもよい。
 制御コアCORE0は、それに属する個別メモリIMEM0にメモリ制御回路MAU0を介してアクセス要求を行うことができる。また、制御コアCORE0は、それに属する共有メモリSMEM0にはセレクタSL0を介してアクセス要求を行うことができ、第2制御コアCORE1に属する共有メモリSEME1にはセレクタSL1を介してアクセス要求を行うことができる。
 共有メモリSMEM0-SMEM3と、個別メモリIMEM0-IMEM3には、同じメモリ空間内の異なる論理アドレスが割り当てられる。例えば、ある制御コアCORE0に属する共有メモリSMEM0の2つのメモリバンクB0a,B0bと個別メモリIMEM0は、連続するアドレスが割り当てられる。さらに、4つの制御コアそれぞれに属する共有メモリと個別メモリも連続するアドレスが割り当てられる。したがって、制御コアCORE0は、それに属する個別メモリIMEM0と共有メモリSMEM0と第2隣接演算コアCORE1に属する共有メモリSMEM1内のいずれかのデータを、そ
れぞれユニークなアドレスで指定することができる。
 さらに、共有メモリSMEM0にはセレクタSL0が設けられる。セレクタSL0は、制御コアC_COREによりセレクト情報を設定され、4つの入力のうち一つを選択する。
 例えば、セレクタSL0には、制御コアC_COREからアクセスセレクト情報(リードセレク
ト情報)が設定される。この設定に基づいて、セレクタSL0は、演算コアCORE0からのアクセス要求と第1方向の第1隣接演算コアCORE3からのアクセス要求のいずれかを選択し、
共有メモリSMEM0に出力する。他のセレクタも同様である。
 したがって、セレクタSL0とSL1に、制御コアCORE0からのアクセス要求を選択するアク
セスセレクト情報が設定された場合、制御コアCORE0がメモリアクセスとしてアドレスADD、リード/ライト信号R/Wの制御信号を出力すると、共有メモリSMEM0と個別メモリIMEM0
と第2方向の隣接する共有メモリSMEM1に制御信号が出力される。その結果、制御コアCORE0は、アドレスADDで指定したいずれかのメモリ内のデータ領域にアクセスすることがで
きる。制御コアCORE0は、ライト要求の場合はライトデータWDTを出力し、リード要求の場合はリードデータRDTを受信する。
 セレクタSL0には、制御コアC_COREから転送セレクトが設定される。この設定に基づい
て、セレクタSL0は、演算コアCORE0に属するメモリ制御回路MAU0からの転送要求と第1隣接演算コアCORE3に属するメモリ制御回路MAU3からの転送要求のいずれかを選択し、共有
メモリSMEM0に出力する。他のセレクタも同様である。
 共有メモリSMEM0が2つのメモリバンクB0a,B0bを有するので、セレクタSL0は、2つの
メモリバンクそれぞれに設けられ、それぞれのメモリバンクに対して1/4セレクトを行う。
 [リードデータの共有メモリへの転送動作]
 図10は、メモリ制御回路によるリードデータの共有メモリへの転送動作を示す図である。 演算コアCORE0に属するメモリ制御回路MAU0は、転送制御回路TRN_CNを有する。転
送制御回路TRN_CNは、演算コアCORE0に属する個別メモリIMEM0と共有メモリSMEM0、及び
第2隣接演算コアCORE1に属する共有メモリSMEM1から読み出されるリードデータRDTを、
共有メモリSMEM0またはSMEM1のいずれか一方に転送する。
 演算コアCORE0が、個別メモリIMEM0にリード要求を発行してリードデータRDT_I0を受信し所定の演算を実行するときに、そのメモリ制御回路内の転送制御回路TRN_CNは、そのリード要求を検出しリードデータRDT_I0を2つの共有メモリSMEM0,SMEM1のいずれかに転送
する。つまり、図10中に矢印で示した転送TRN0,TRN1のいずれかの方向にリードデータ
が転送される。どのアドレスのリードデータをどのアドレスの共有メモリに転送するかは、制御コアC_COREが転送制御回路TRN_CNの設定レジスタCFGに設定する。また、セレクタSL0,SL1には、転送先に応じた転送セレクト情報が制御コアC_COREにより設定される。
 同様に、制御コアCORE0が、共有メモリSMEM0にリード要求を発行してリードデータRDT_S0を受信し所定の演算を実行するときに、転送制御回路TRN_CNは、そのリード要求を検出してリードデータRDT_S0をもう一方の共有メモリSMEM1に転送する。つまり、図10中に
矢印で示した転送TRN2の方向にリードデータが転送される。この転送動作も設定レジスタCFGへの設定値に基づき制御される。
 さらに、制御コアCORE0が、共有メモリSMEM1にリード要求を発行してリードデータRDT_S1を受信し所定の演算を実行するときに、転送制御回路TRN_CNは、そのリード要求を検出してリードデータRDT_S1をもう一方の共有メモリSMEM0に転送する。つまり、図10中に
矢印で示した転送TRN3の方向にリードデータが転送される。この転送動作も設定レジスタCFGへの設定値に基づき制御される。
 [メモリ制御回路の転送制御回路の機能と動作]
 次に、転送制御回路の機能と動作について説明する。
 図11は、転送制御回路TRN_CNとその設定レジスタCFGを説明する図である。図12は
、転送制御回路の動作を示すフローチャート図である。図12には、設定レジスタCFGに
設定される設定値が示される。転送レンジT_RNGは転送データの転送元アドレスを示す。
転送フラグT_FLGは転送要・不要を指定する。転送オフセットT_OFSTは転送先アドレスの
情報であり、リードアドレスRADDに転送オフセットT_OFSTを加算すると、転送先アドレスが算出される。したがって、転送レンジT_RNGに対する転送オフセットT_OFSTを所定値に
設定することで、転送先の共有メモリのメモリバンクを指定できる。
 また、図11に示されるとおり、制御コアC_COREは、制御バスC_BUSを介して、転送制
御回路TRN_CNの設定レジスタCFGと、セレクタSL0,SL1の設定レジスタCに、それぞれの設
定値を設定する。設定レジスタCFGには、上記の転送レンジT_RNG、転送フラグT_FLG、転
送オフセットT_OFSTが設定される。セレクタSL0,SL1の設定レジスタには、例えば、両側
の演算ユニットのいずれのアクセス要求を選択するかを示すアクセスセレクト情報(リードセレクト情報)と、両側のメモリ制御回路の転送制御回路TRN_CNのいずれの転送要求(書き込み要求)を選択するかの転送セレクト情報とが設定される。前述のとおり、セレクタSL0,SL1はそれぞれ少なくとも2つのメモリバンクを有し、セレクタSL0,SL1はそれぞれ2つのメモリバンクに対してセレクト情報を設定可能である。
 図11と図12に示されるとおり、メモリ制御回路MAU内の転送制御回路TRN_CNは、演
算コアのアクセス要求のリード・ライト信号R/Wを監視する。転送制御回路TRN_CNは、ロ
ード命令によるリード要求を検出すると(S20のYES)、転送フラグT_FLGが転送要か否か
の判定S21と、リードアドレスRADDが転送アドレスレンジT_RNG内のアドレスか否かの判定S22を行う。そして、いずれの判定もYESの場合、転送制御回路TRN_CNは、リードアドレスRADDに転送オフセットT_OFSTを加算して転送先アドレスTADDを算出し、リードデータRDT
を転送データTDTとして転送先アドレスTADDに転送する(S23)。
 したがって、図11に示されるとおり、転送制御回路TRN_CNは、転送アドレスTADDと書き込み信号WTと、転送データTDTを、転送先の共有メモリにセレクタSLを経由して転送し
、共有メモリに転送データTDTを書込む。
 [制御コアによる設定とそれに伴う転送動作]
 制御コアによる設定と、それに伴うメモリ制御回路内の転送制御回路の動作についてまとめると、以下のとおりである。以下の説明でも、演算コアCORE0に対応する個別メモリ
及び共有メモリの引用符号をカッコ内に示して説明する。
 第1に、制御コアC_COREが、
複数のメモリ制御回路それぞれの転送制御回路に、
(1)演算コア間で転送されることになるリードデータRDTが格納される、個別メモリ(IMEM0)と共有メモリ(SMEM0)と第2方向に隣接する第2隣接コア(CORE1)に属する共有メモリ(SMEM1)のいずれかの転送元アドレスTR_RNGと、
(2)共有メモリ(SMEM0)と第2隣接コア(CORE1)に属する共有メモリ(SMEM1)のい
ずれかの転送先アドレス情報T_OFSTとを設定し、
(3)複数のセレクタ(SL0,SL1)に転送セレクト情報を設定した場合、
複数のメモリ制御回路それぞれの転送制御回路が、複数の演算コアそれぞれのリード要求のアドレスRADDが転送元アドレスT_RNGと一致する場合、個別メモリ(IMEM0)と共有メモリ(SMEM0)と第2隣接コアに属する共有メモリ(SMEM1)のいずれかから読み出されるリードデータRDTを転送データTDTとして、転送先アドレス情報T_OFSTに対応する、共有メモリ(SMEM0)と第2隣接コアに属する共有メモリ(SMEM1)のいずれかに転送する。
 第2に、制御コアC_COREが、複数のセレクタ(SL0,SL1)にリードセレクト情報を設定
した場合、複数の共有メモリ(SMEM0,SMEM1)それぞれは、リードセレクト情報を設定さ
れたセレクタ(SL0,SL1)を経由して共有メモリが属する演算コア(CORE0)と第1隣接コア(CORE3)のいずれかからリードデータを読み出される。
 [制御コア、演算コア、メモリ制御回路、セレクタを含む全体の動作]
 次に、本実施の形態における、制御コアC_COREと、4つの演算コアCORE0-CORE3と、4
つのメモリ制御回路MAU0-MAU3(転送制御回路TNS_CN)と、セレクタSL0-SL3の動作をま
とめて説明する。
 図13は、図8のシーケンスの時間T0,T1,T2での動作を示すシーケンス図である。また、図14、図15、図16は、4つの演算コアに属する共有メモリSMEM#の2つのメモリ
バンクB#a,B#bと、個別メモリIMEM#に対するデータ読み出しとリードデータの転送を示す
図である。図14が時間T1に、図15が時間T2に、図16が時間T3にそれぞれ対応する。
 [時間T0]
 時間T0にて、制御コアC_COREは、4つの演算コアCORE0-CORE3に、内部メモリI_MEMから画像データX0-X3それぞれと4組のフィルタF0-F3それぞれとを、それぞれに属する個別メモリIMEM0-IMEM3にロードする指示を行う(S30)。この指示に応じて、各演算コアCORE0-CORE3は、画像データX0-X3それぞれと4組のフィルタF0-F3それぞれとを個別メモリにロ
ードする(S31)。
 [時間T1]
 次に、時間T1にて、制御コアC_COREは、4つの演算コアそれぞれに属するメモリ制御回路MAU0-MAU3とセレクタSL0-SL3に、データ転送の設定を行う(S32)。これに応答して、
各メモリ制御回路とセレクタでは、転送制御回路の設定レジスタCFGに前述の転送アドレ
スレンジ(転送元アドレス)、転送フラグ、転送オフセット(転送先アドレス情報)が設定される(S33)。また、セレクタに転送セレクト情報が設定される。時間T1では、転送
アドレスレンジは個別メモリ内のアドレスに設定され、転送セレクト情報は、セレクタSL#が属する演算コアの第2隣接演算コアに属するメモリ制御回路(転送制御回路)側に設
定される。
 そして、制御コアC_COREは、4つの演算コアCORE0-CORE3に畳込み演算の開始を指示す
る(S34)。この開始指示に応答して、4つの演算コアそれぞれは、それぞれに属する個
別メモリからそれぞれの画像データX0-X3とフィルタF0-F3をロード(リード)する。同時に、各メモリ制御回路の転送制御回路は、リード動作を検出し、設定レジスタCFG内の転
送アドレスレンジとリードアドレスが一致し、転送フラグが転送要であることをそれぞれ検出し、転送先アドレスTADDを算出し、リードデータX0-X3それぞれを、転送先アドレスTADDに書込み制御信号WTと共に、第2隣接演算コアの共有メモリ(メモリバンクB#b)に出力する。これにより、リードデータが共有メモリに転送される(S36)。
 さらに、各演算コアは、リードした画像データX0-X3とフィルタF0-F3の係数W0-W1を畳
込み演算し(S37)、演算結果をそれぞれに属する個別メモリにストアする(S38)。そして、各演算コアは、完了信号ENDを制御コアC_COREに送信する。この完了信号は、転送完
了時と演算完了時それぞれのタイミングで制御コアに通知してもよい。各演算コアの演算処理時間にばらつきがある場合、必ずしも各演算コアが演算処理を同期して行う必要がない。
 図14には、各演算コアに属する共有メモリSMEM#の2つのメモリバンクB#a,B#bと、個別メモリIMEM#のアドレスと、時間T1での画像データXとフィルタ係数Wの読み出し(実線
矢印)と、画像データXの隣接する共有メモリSMEM#のメモリバンクB#bへの転送(破線矢
印)とが示される。演算コアCORE0に属する共有メモリSMEM0のメモリバンクB0aの開始ア
ドレスが0x2_0000、メモリバンクB0bの開始アドレスが0x2_1000、個別メモリIMEM0の開始アドレスが0x2_2000、終了アドレスが0x2_6000である。演算コアCORE1-CORE3も同様であ
る。
 そして、各演算コアが、それぞれの個別メモリから画像データXを読み出し、同時にメ
モリ制御回路の転送制御回路が、読み出された画像データを第2隣接演算コアの共有メモリのメモリバンクB#bに転送する。
 [時間T2]
 次に時間T2にて、制御コアC_COREがメモリ制御回路の設定レジスタCFGに時間T1と同様
の設定を行う(S42,S43)。但し、時間T1と異なり転送アドレス情報である転送オフセッ
トは、転送先が共有メモリのメモリバンクB#aに変更されるので、それに対応した値にな
る。また、制御コアがセレクタSL#に、リードセレクト情報と、転送セレクト情報をそれ
ぞれ設定する(S42,S43)。これにより、各演算コアは自分に属する共有メモリから次の
画像データを読み出し可能になり、転送制御回路はその画像データを第2隣接演算コアに属する共有メモリに転送可能になる。
 そして、制御コアが演算の再会を指示すると(S44)。各演算コアはそれぞれの画像デ
ータとフィルタ係数をロードし(S45)、畳込み演算を行い(S47)、個別メモリ内の時間T1での演算結果を読み出して時間T2での演算結果を加算し、再度個別メモリに書き戻す(リードモディファイライト動作)(S48)。また、メモリ制御回路の転送制御回路は、演
算コアがロードする画像データを共有メモリに転送する(S48)。各演算コアは、畳込み
演算が終了し個別メモリに書き戻すと、完了通知ENDを制御コアに送信する。
 図15に示されるとおり、各演算コアが、それぞれの共有メモリのメモリバンクB#bか
ら画像データXを読み出し、同時にメモリ制御回路の転送制御回路が、読み出された画像
データを第2隣接演算コアの共有メモリのメモリバンクB#aに転送する。
 [時間T3,T4]
 時間T3,T4の動作も上記と同様である。図16には、時間T3での動作が示され、各演算
コアが、それぞれの共有メモリのメモリバンクB#aから画像データXを読み出し、同時にメモリ制御回路の転送制御回路が、画像データを第2隣接演算コアの共有メモリのメモリバンクB#bに転送する。時間T4での動作は、図15と同様である。
 図14、図15、図16に示されるとおり、4つの画像データX0-X3は、4つの演算コ
アに属する共有メモリの間を演算サイクルT1-T4毎に転送され、循環される。
 [第2の実施の形態]
 図17は、第2の実施の形態におけるプロセッサの動作を示す図である。図17の動作では、演算コアCORE0が個別メモリIMEM0から係数Wを、共有メモリSMEM0のメモリバンクB0aから画像データXをそれぞれ読み出し、畳込み演算などの所定の処理PRを実行する。そして、演算コアCORE0は、処理結果を隣接する演算コアCORE1に属する共有メモリSMEM1のメ
モリバンクB1aに転送する。
 次に、演算コアCORE1が個別メモリIMEM1から係数Wを、共有メモリSMEM1のメモリバンクB1aから演算コアCORE0の演算結果の画像データXをそれぞれ読み出し、畳込み演算などの
所定の処理PRを実行する。そして、演算コアCORE1は、処理結果を隣接する演算コアCORE2に属する共有メモリSMEM2のメモリバンクB2aに転送する。
 さらに、演算コアCORE2が個別メモリIMEM2から係数Wを、共有メモリSMEM2のメモリバンクB2aから演算コアCORE1の演算結果の画像データXをそれぞれ読み出し、畳込み演算など
の所定の処理PRを実行する。そして、演算コアCORE2は、処理結果を隣接する演算コアCORE3に属する共有メモリSMEM3のメモリバンクB3aに転送する。
 最後に、演算コアCORE3が個別メモリIMEM3から係数Wを、共有メモリSMEM3のメモリバンクB3aから演算コアCORE2の演算結果の画像データXをそれぞれ読み出し、畳込み演算など
の所定の処理PRを実行する。そして、演算コアCORE3は、処理結果を隣接する演算コアCORE0に属する共有メモリSMEM0のメモリバンクB0aに転送する。
 以上の動作により、4つの演算コアは、演算コア間で演算結果を転送しあうので、内部メモリI_MEMから演算結果をロードする処理を大幅に減らすことができる。
 以上のとおり、本実施の形態によれば、各演算コアに個別メモリに加えて共有メモリを設け、演算コアが個別メモリ及び共有メモリからデータを読み出して所定の演算を行うとき、同時にリードデータを自分に属する共有メモリまたは隣接する演算コアに属する共有メモリに転送する。そして、隣接演算コアは、共有メモリに転送されたデータを読み出して所定の演算を行う。そして、上記の演算コアによる共有メモリへのアクセスと、リードデータの共有メモリへの転送が、制御コアからの制御値の設定に基づいて、実行される。
 上記のように、演算コア間のデータ転送を、制御コアによる制御値の設定と、その設定値に基づく転送要求をアドレスとリード・ライト信号の発行により行うことができるので、制御オーバーヘッドが少ないデータ転送を行うことができる。
 以上の実施の形態をまとめると,次の付記のとおりである。
 (付記1)
 複数の演算コアと、
 前記複数の演算コアそれぞれに設けられ、それぞれが属する前記演算コアからアクセスされる複数の個別メモリと、
 前記複数の演算コアそれぞれに設けられ、それぞれが属する前記演算コアと前記属する演算コアの第1方向に隣接する第1隣接コアのいずれかからアクセスされる複数の共有メモリと、
 前記複数の演算コアと前記複数の個別メモリのそれぞれの間に設けられ、前記演算コアからのリード要求を前記演算コアに属する個別メモリに出力する複数のメモリ制御回路と、
 前記複数の共有メモリそれぞれに設けられ、前記複数の共有メモリそれぞれが属する前記演算コアと前記第1隣接コアのいずれかからのリード要求を選択し前記共有メモリに出
力し、前記メモリ制御回路と第2方向に隣接する第2隣接コアに属するメモリ制御回路のいずれかからの転送要求を選択し前記共有メモリに出力する複数のセレクタと、
 前記複数の演算コアを制御する制御コアとを有し、
 前記制御コアが、前記複数のメモリ制御回路それぞれに、前記複数の演算コア間で転送される転送データが格納される前記個別メモリ及び共有メモリの転送元アドレスと、前記転送データが転送される前記共有メモリの転送先アドレスを設定し、前記複数のセレクタに転送セレクト情報を設定した場合、
 前記複数のメモリ制御回路それぞれが、それぞれが属する演算コアのリード要求のアドレスが前記転送元アドレスと一致する場合、前記転送セレクト情報を設定された前記セレクタを経由して前記転送先アドレスに前記リード要求に対する転送データを転送し、
 前記制御コアが、前記複数のセレクタそれぞれにリードセレクト情報を設定した場合、
 前記複数の共有メモリそれぞれは、前記リードセレクト情報を設定された前記セレクタを経由して前記共有メモリが属する演算コアと前記第1隣接コアのいずれかからリードデータを読み出される、プロセッサ。
 (付記2)
 前記転送元アドレスは、前記転送データが格納される、前記個別メモリと前記共有メモリと第2方向に隣接する第2隣接コアに属する共有メモリのいずれかの転送元アドレスであり、
 前記転送先アドレスは、前記共有メモリと前記第2隣接コアに属する共有メモリのいずれかの転送先アドレス情報である、付記1に記載のプロセッサ。
 (付記3)
 前記複数のメモリ制御回路それぞれが、前記複数の演算コアそれぞれのリード要求のア
ドレスが前記転送元アドレスと一致する場合、前記個別メモリと前記共有メモリと前記第2隣接コアに属する共有メモリのいずれかから読み出されるリードデータを前記転送データとして、前記転送先アドレスに対応する、前記共有メモリと前記第2隣接コアに属する共有メモリのいずれかに転送する、付記2に記載のプロセッサ。
 (付記4)
 前記複数の共有メモリそれぞれは、第1メモリバンクと第2メモリバンクを有し、
 前記制御コアが、前記複数のセレクタそれぞれの前記第1メモリバンクに対して前記転送セレクト情報を設定し、前記第2メモリバンクに対して前記リードセレクト情報を設定した場合、前記第1メモリバンクに前記転送データが転送され、前記第2メモリバンクから前記リードデータを読み出され、
 前記制御コアが、前記第2のメモリバンクに対して前記転送セレクト情報を設定し、前記第1メモリバンクに対して前記リードセレクト情報を設定した場合、前記第2メモリバンクに前記転送データが転送され、前記第1メモリバンクから前記リードデータを読み出される、付記1に記載のプロセッサ。
 (付記5)
 前記複数のセレクタそれぞれは、前記第1メモリバンクに対する第1のセレクタと、前記第2メモリバンクに対する第2セレクタとを有し、前記第1、第2セレクタそれぞれに、前記リードセレクト情報または転送セレクト情報が設定される、付記4に記載のプロセッサ。
 (付記6)
 前記制御コアが前記セレクタに前記リードセレクト情報と転送セレクト情報を設定した後、前記演算コアが前記リード要求を発行しリードデータを演算するとともに、前記メモリ制御回路が前記リードデータを前記転送データとして、前記セレクタを介して前記共有メモリに転送し、
 前記演算コアの前記演算の完了後、再度、前記制御コアによる前記セレクタへの新たなリードセレクト情報と転送セレクト情報の設定と、前記演算コアによるリード要求の発行及び演算と、前記メモリ制御回路による前記転送データの転送とが行われる、付記1に記載のプロセッサ。
 (付記7)
 前記複数の演算コアの演算サイクル毎に、前記複数の個別メモリそれぞれに記憶された前記転送データが、それぞれの隣接コアに属する共有メモリに転送される、付記5に記載のプロセッサ。
 (付記8)
 前記複数の演算コアの演算サイクル毎に、前記複数の個別メモリそれぞれに記憶された前記転送データが、それぞれの隣接コアに属する共有メモリに転送されて前記転送データが前記複数の共有メモリ間で循環する、付記5に記載のプロセッサ。
 (付記9)
 前記複数の演算コアそれぞれに属する前記複数の個別メモリに、演算対象データが書き込まれ、
 前記複数の演算コアが、それぞれに属する前記複数の個別メモリから前記演算対象データを読み出してそれぞれの演算を実行するとともに、それぞれに属する前記メモリ制御回路が読み出されるリードデータを前記共有メモリに転送し、
 前記複数の演算コアの演算サイクル毎に、前記転送データが、それぞれの隣接コアに属する共有メモリに転送されて前記転送データが前記複数の共有メモリ間で循環する、付記
5に記載のプロセッサ。
 (付記10)
 前記複数のメモリ制御回路それぞれは、それぞれが属する演算コアからのアクセス要求と、内部バスからのアクセス要求とを調停して前記個別メモリに出力するコアバス間調停回路を有する、付記1に記載のプロセッサ。
 (付記11)
 複数の演算コアと、
 前記複数の演算コアそれぞれに設けられ、それぞれが属する前記演算コアからアクセスされる複数の個別メモリと、
 前記複数の演算コアそれぞれに設けられ、それぞれが属する前記演算コアと前記属する演算コアの第1方向に隣接する第1隣接コアのいずれかからアクセスされる複数の共有メモリと、
 前記複数の演算コアと前記複数の個別メモリのそれぞれの間に設けられ、前記演算コアからのリード要求を前記演算コアに属する個別メモリに出力する複数のメモリ制御回路と、
 前記複数の共有メモリそれぞれに設けられ、前記複数の共有メモリそれぞれが属する前記演算コアと前記第1隣接コアのいずれかからのリード要求を選択し前記共有メモリに出
力し、前記メモリ制御回路と第2方向に隣接する第2隣接コアに属するメモリ制御回路のいずれかからの転送要求を選択し前記共有メモリに出力する複数のセレクタと、
 前記複数の演算コアを制御する制御コアとを有し、
 前記制御コアが、前記複数のメモリ制御回路それぞれに、前記複数の演算コア間で転送される転送データが格納される、前記個別メモリと前記共有メモリと第2方向に隣接する第2隣接コアに属する共有メモリのいずれかの転送元アドレスと、前記共有メモリと前記第2隣接コアに属する共有メモリのいずれかの転送先アドレス情報とを設定し、前記複数のセレクタに転送セレクト情報を設定した場合、
 前記複数のメモリ制御回路それぞれが、前記複数の演算コアそれぞれのリード要求のアドレスが前記転送元アドレスと一致する場合、前記個別メモリと前記共有メモリと前記第2隣接コアに属する共有メモリのいずれかから読み出される前記転送データを、前記転送先アドレス情報に対応する、前記共有メモリと前記第2隣接コアに属する共有メモリのいずれかに転送し、
 前記制御コアが、前記複数のセレクタにリードセレクト情報を設定した場合、
 前記複数の共有メモリそれぞれは、前記リードセレクト情報を設定された前記セレクタを経由して前記共有メモリが属する演算コアと前記第1隣接コアのいずれかからリードデータを読み出される、プロセッサ。
 (付記12)
 メインメモリと、
 前記メインメモリにアクセス可能なプロセッサと、を有し、
 前記プロセッサは、
 複数の演算コアと、
 前記複数の演算コアそれぞれに設けられ、それぞれが属する前記演算コアからアクセスされる複数の個別メモリと、
 前記複数の演算コアそれぞれに設けられ、それぞれが属する前記演算コアと前記属する演算コアの第1方向に隣接する第1隣接コアのいずれかからアクセスされる複数の共有メモリと、
 前記複数の演算コアと前記複数の個別メモリのそれぞれの間に設けられ、前記演算コアからのリード要求を前記演算コアに属する個別メモリに出力する複数のメモリ制御回路と、
 前記複数の共有メモリそれぞれに設けられ、前記複数の共有メモリそれぞれが属する前記演算コアと前記第1隣接コアのいずれかからのリード要求を選択し前記共有メモリに出
力し、前記メモリ制御回路と第2方向に隣接する第2隣接コアに属するメモリ制御回路のいずれかからの転送要求を選択し前記共有メモリに出力する複数のセレクタと、
 前記複数の演算コアを制御する制御コアとを有し、
 前記制御コアが、前記複数のメモリ制御回路それぞれに、前記複数の演算コア間で転送される転送データが格納される前記個別メモリ及び共有メモリの転送元アドレスと、前記転送データが転送される前記共有メモリの転送先アドレスを設定し、前記複数のセレクタに転送セレクト情報を設定した場合、
 前記複数のメモリ制御回路それぞれが、それぞれが属する演算コアのリード要求のアドレスが前記転送元アドレスと一致する場合、前記転送セレクト情報を設定された前記セレクタを経由して前記転送先アドレスに前記リード要求に対する転送データを転送し、
 前記制御コアが、前記複数のセレクタそれぞれにリードセレクト情報を設定した場合、
 前記複数の共有メモリそれぞれは、前記リードセレクト情報を設定された前記セレクタを経由して前記共有メモリが属する演算コアと前記第1隣接コアのいずれかからリードデータを読み出される、情報処理装置。
 (付記13)
 複数の演算コアと、
 前記複数の演算コアそれぞれに設けられ、それぞれが属する前記演算コアからアクセスされる複数の個別メモリと、
 前記複数の演算コアそれぞれに設けられ、それぞれが属する前記演算コアと前記属する演算コアの第1方向に隣接する第1隣接コアのいずれかからアクセスされる複数の共有メモリと、
 前記複数の演算コアと前記複数の個別メモリのそれぞれの間に設けられ、前記演算コアからのリード要求を前記演算コアに属する個別メモリに出力する複数のメモリ制御回路と、
 前記複数の共有メモリそれぞれに設けられ、前記複数の共有メモリそれぞれが属する前記演算コアと前記第1隣接コアのいずれかからのリード要求を選択し前記共有メモリに出
力し、前記メモリ制御回路と第2方向に隣接する第2隣接コアに属するメモリ制御回路のいずれかからの転送要求を選択し前記共有メモリに出力する複数のセレクタと、
 前記複数の演算コアを制御する制御コアとを有するプロセッサの動作方法において、
 前記制御コアが、前記複数のメモリ制御回路それぞれに、前記複数の演算コア間で転送される転送データが格納される前記個別メモリ及び共有メモリの転送元アドレスと、前記転送データが転送される前記共有メモリの転送先アドレスを設定し、前記複数のセレクタに転送セレクト情報を設定し、
 前記複数のメモリ制御回路それぞれが、それぞれが属する演算コアのリード要求のアドレスが前記転送元アドレスと一致する場合、前記転送セレクト情報を設定された前記セレクタを経由して前記転送先アドレスに前記リード要求に対する転送データを転送し、
 前記制御コアが、前記複数のセレクタそれぞれにリードセレクト情報を設定し、
 前記複数の共有メモリそれぞれは、前記リードセレクト情報を設定された前記セレクタを経由して前記共有メモリが属する演算コアと前記第1隣接コアのいずれかからリードデータを読み出される、プロセッサの動作方法。
C_CORE:制御コア
CORE0-CORE3:演算コア
IMEM0-IMEM3:個別メモリ
SMEM0-SMEM3:共有メモリ
B#a,B#b:メモリバンク
SL0-SL3:セレクタ
MAU0-MAU3:メモリ制御回路
TR_CN:転送制御回路
RDT:リードデータ
TDT:転送データ

Claims (13)

  1.  複数の演算コアと、
     前記複数の演算コアそれぞれに設けられ、それぞれが属する前記演算コアからアクセスされる複数の個別メモリと、
     前記複数の演算コアそれぞれに設けられ、それぞれが属する前記演算コアと前記属する演算コアの第1方向に隣接する第1隣接コアのいずれかからアクセスされる複数の共有メモリと、
     前記複数の演算コアと前記複数の個別メモリのそれぞれの間に設けられ、前記演算コアからのリード要求を前記演算コアに属する個別メモリに出力する複数のメモリ制御回路と、
     前記複数の共有メモリそれぞれに設けられ、前記複数の共有メモリそれぞれが属する前記演算コアと前記第1隣接コアのいずれかからのリード要求を選択し前記共有メモリに出
    力し、前記メモリ制御回路と第2方向に隣接する第2隣接コアに属するメモリ制御回路のいずれかからの転送要求を選択し前記共有メモリに出力する複数のセレクタと、
     前記複数の演算コアを制御する制御コアとを有し、
     前記制御コアが、前記複数のメモリ制御回路それぞれに、前記複数の演算コア間で転送される転送データが格納される前記個別メモリ及び共有メモリの転送元アドレスと、前記転送データが転送される前記共有メモリの転送先アドレスを設定し、前記複数のセレクタに転送セレクト情報を設定した場合、
     前記複数のメモリ制御回路それぞれが、それぞれが属する演算コアのリード要求のアドレスが前記転送元アドレスと一致する場合、前記転送セレクト情報を設定された前記セレクタを経由して前記転送先アドレスに前記リード要求に対する転送データを転送し、
     前記制御コアが、前記複数のセレクタそれぞれにリードセレクト情報を設定した場合、
     前記複数の共有メモリそれぞれは、前記リードセレクト情報を設定された前記セレクタを経由して前記共有メモリが属する演算コアと前記第1隣接コアのいずれかからリードデータを読み出される、プロセッサ。
  2.  前記転送元アドレスは、前記転送データが格納される、前記個別メモリと前記共有メモリと第2方向に隣接する第2隣接コアに属する共有メモリのいずれかの転送元アドレスであり、
     前記転送先アドレスは、前記共有メモリと前記第2隣接コアに属する共有メモリのいずれかの転送先アドレス情報である、請求項1に記載のプロセッサ。
  3.  前記複数のメモリ制御回路それぞれが、前記複数の演算コアそれぞれのリード要求のア
    ドレスが前記転送元アドレスと一致する場合、前記個別メモリと前記共有メモリと前記第2隣接コアに属する共有メモリのいずれかから読み出されるリードデータを前記転送データとして、前記転送先アドレスに対応する、前記共有メモリと前記第2隣接コアに属する共有メモリのいずれかに転送する、請求項2に記載のプロセッサ。
  4.  前記複数の共有メモリそれぞれは、第1メモリバンクと第2メモリバンクを有し、
     前記制御コアが、前記複数のセレクタそれぞれの前記第1メモリバンクに対して前記転送セレクト情報を設定し、前記第2メモリバンクに対して前記リードセレクト情報を設定した場合、前記第1メモリバンクに前記転送データが転送され、前記第2メモリバンクから前記リードデータを読み出され、
     前記制御コアが、前記第2のメモリバンクに対して前記転送セレクト情報を設定し、前記第1メモリバンクに対して前記リードセレクト情報を設定した場合、前記第2メモリバンクに前記転送データが転送され、前記第1メモリバンクから前記リードデータを読み出される、請求項1に記載のプロセッサ。
  5.  前記複数のセレクタそれぞれは、前記第1メモリバンクに対する第1のセレクタと、前記第2メモリバンクに対する第2セレクタとを有し、前記第1、第2セレクタそれぞれに、前記リードセレクト情報または転送セレクト情報が設定される、請求項4に記載のプロセッサ。
  6.  前記制御コアが前記セレクタに前記リードセレクト情報と転送セレクト情報を設定した後、前記演算コアが前記リード要求を発行しリードデータを演算するとともに、前記メモリ制御回路が前記リードデータを前記転送データとして、前記セレクタを介して前記共有メモリに転送し、
     前記演算コアの前記演算の完了後、再度、前記制御コアによる前記セレクタへの新たなリードセレクト情報と転送セレクト情報の設定と、前記演算コアによるリード要求の発行及び演算と、前記メモリ制御回路による前記転送データの転送とが行われる、請求項1に記載のプロセッサ。
  7.  前記複数の演算コアの演算サイクル毎に、前記複数の個別メモリそれぞれに記憶された前記転送データが、それぞれの隣接コアに属する共有メモリに転送される、請求項5に記載のプロセッサ。
  8.  前記複数の演算コアの演算サイクル毎に、前記複数の個別メモリそれぞれに記憶された前記転送データが、それぞれの隣接コアに属する共有メモリに転送されて前記転送データが前記複数の共有メモリ間で循環する、請求項5に記載のプロセッサ。
  9.  前記複数の演算コアそれぞれに属する前記複数の個別メモリに、演算対象データが書き込まれ、
     前記複数の演算コアが、それぞれに属する前記複数の個別メモリから前記演算対象データを読み出してそれぞれの演算を実行するとともに、それぞれに属する前記メモリ制御回路が読み出されるリードデータを前記共有メモリに転送し、
     前記複数の演算コアの演算サイクル毎に、前記転送データが、それぞれの隣接コアに属する共有メモリに転送されて前記転送データが前記複数の共有メモリ間で循環する、請求項
    5に記載のプロセッサ。
  10.  前記複数のメモリ制御回路それぞれは、それぞれが属する演算コアからのアクセス要求と、内部バスからのアクセス要求とを調停して前記個別メモリに出力するコアバス間調停回路を有する、請求項1に記載のプロセッサ。
  11.  複数の演算コアと、
     前記複数の演算コアそれぞれに設けられ、それぞれが属する前記演算コアからアクセスされる複数の個別メモリと、
     前記複数の演算コアそれぞれに設けられ、それぞれが属する前記演算コアと前記属する演算コアの第1方向に隣接する第1隣接コアのいずれかからアクセスされる複数の共有メモリと、
     前記複数の演算コアと前記複数の個別メモリのそれぞれの間に設けられ、前記演算コアからのリード要求を前記演算コアに属する個別メモリに出力する複数のメモリ制御回路と、
     前記複数の共有メモリそれぞれに設けられ、前記複数の共有メモリそれぞれが属する前記演算コアと前記第1隣接コアのいずれかからのリード要求を選択し前記共有メモリに出
    力し、前記メモリ制御回路と第2方向に隣接する第2隣接コアに属するメモリ制御回路のいずれかからの転送要求を選択し前記共有メモリに出力する複数のセレクタと、
     前記複数の演算コアを制御する制御コアとを有し、
     前記制御コアが、前記複数のメモリ制御回路それぞれに、前記複数の演算コア間で転送される転送データが格納される、前記個別メモリと前記共有メモリと第2方向に隣接する第2隣接コアに属する共有メモリのいずれかの転送元アドレスと、前記共有メモリと前記第2隣接コアに属する共有メモリのいずれかの転送先アドレス情報とを設定し、前記複数のセレクタに転送セレクト情報を設定した場合、
     前記複数のメモリ制御回路それぞれが、前記複数の演算コアそれぞれのリード要求のアドレスが前記転送元アドレスと一致する場合、前記個別メモリと前記共有メモリと前記第2隣接コアに属する共有メモリのいずれかから読み出される前記転送データを、前記転送先アドレス情報に対応する、前記共有メモリと前記第2隣接コアに属する共有メモリのいずれかに転送し、
     前記制御コアが、前記複数のセレクタにリードセレクト情報を設定した場合、
     前記複数の共有メモリそれぞれは、前記リードセレクト情報を設定された前記セレクタを経由して前記共有メモリが属する演算コアと前記第1隣接コアのいずれかからリードデータを読み出される、プロセッサ。
  12.  メインメモリと、
     前記メインメモリにアクセス可能なプロセッサと、を有し、
     前記プロセッサは、
     複数の演算コアと、
     前記複数の演算コアそれぞれに設けられ、それぞれが属する前記演算コアからアクセスされる複数の個別メモリと、
     前記複数の演算コアそれぞれに設けられ、それぞれが属する前記演算コアと前記属する演算コアの第1方向に隣接する第1隣接コアのいずれかからアクセスされる複数の共有メモリと、
     前記複数の演算コアと前記複数の個別メモリのそれぞれの間に設けられ、前記演算コアからのリード要求を前記演算コアに属する個別メモリに出力する複数のメモリ制御回路と、
     前記複数の共有メモリそれぞれに設けられ、前記複数の共有メモリそれぞれが属する前記演算コアと前記第1隣接コアのいずれかからのリード要求を選択し前記共有メモリに出
    力し、前記メモリ制御回路と第2方向に隣接する第2隣接コアに属するメモリ制御回路のいずれかからの転送要求を選択し前記共有メモリに出力する複数のセレクタと、
     前記複数の演算コアを制御する制御コアとを有し、
     前記制御コアが、前記複数のメモリ制御回路それぞれに、前記複数の演算コア間で転送される転送データが格納される前記個別メモリ及び共有メモリの転送元アドレスと、前記転送データが転送される前記共有メモリの転送先アドレスを設定し、前記複数のセレクタに転送セレクト情報を設定した場合、
     前記複数のメモリ制御回路それぞれが、それぞれが属する演算コアのリード要求のアドレスが前記転送元アドレスと一致する場合、前記転送セレクト情報を設定された前記セレクタを経由して前記転送先アドレスに前記リード要求に対する転送データを転送し、
     前記制御コアが、前記複数のセレクタそれぞれにリードセレクト情報を設定した場合、
     前記複数の共有メモリそれぞれは、前記リードセレクト情報を設定された前記セレクタを経由して前記共有メモリが属する演算コアと前記第1隣接コアのいずれかからリードデータを読み出される、情報処理装置。
  13.  複数の演算コアと、
     前記複数の演算コアそれぞれに設けられ、それぞれが属する前記演算コアからアクセスされる複数の個別メモリと、
     前記複数の演算コアそれぞれに設けられ、それぞれが属する前記演算コアと前記属する演算コアの第1方向に隣接する第1隣接コアのいずれかからアクセスされる複数の共有メモリと、
     前記複数の演算コアと前記複数の個別メモリのそれぞれの間に設けられ、前記演算コアからのリード要求を前記演算コアに属する個別メモリに出力する複数のメモリ制御回路と、
     前記複数の共有メモリそれぞれに設けられ、前記複数の共有メモリそれぞれが属する前記演算コアと前記第1隣接コアのいずれかからのリード要求を選択し前記共有メモリに出
    力し、前記メモリ制御回路と第2方向に隣接する第2隣接コアに属するメモリ制御回路のいずれかからの転送要求を選択し前記共有メモリに出力する複数のセレクタと、
     前記複数の演算コアを制御する制御コアとを有するプロセッサの動作方法において、
     前記制御コアが、前記複数のメモリ制御回路それぞれに、前記複数の演算コア間で転送される転送データが格納される前記個別メモリ及び共有メモリの転送元アドレスと、前記転送データが転送される前記共有メモリの転送先アドレスを設定し、前記複数のセレクタに転送セレクト情報を設定し、
     前記複数のメモリ制御回路それぞれが、それぞれが属する演算コアのリード要求のアドレスが前記転送元アドレスと一致する場合、前記転送セレクト情報を設定された前記セレクタを経由して前記転送先アドレスに前記リード要求に対する転送データを転送し、
     前記制御コアが、前記複数のセレクタそれぞれにリードセレクト情報を設定し、
     前記複数の共有メモリそれぞれは、前記リードセレクト情報を設定された前記セレクタを経由して前記共有メモリが属する演算コアと前記第1隣接コアのいずれかからリードデータを読み出される、プロセッサの動作方法。
PCT/JP2018/000987 2017-01-27 2018-01-16 プロセッサ、情報処理装置及びプロセッサの動作方法 WO2018139265A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US16/291,686 US10769004B2 (en) 2017-01-27 2019-03-04 Processor circuit, information processing apparatus, and operation method of processor circuit

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2017-013397 2017-01-27
JP2017013397A JP6802480B2 (ja) 2017-01-27 2017-01-27 プロセッサ、情報処理装置及びプロセッサの動作方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US16/291,686 Continuation US10769004B2 (en) 2017-01-27 2019-03-04 Processor circuit, information processing apparatus, and operation method of processor circuit

Publications (1)

Publication Number Publication Date
WO2018139265A1 true WO2018139265A1 (ja) 2018-08-02

Family

ID=62978345

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2018/000987 WO2018139265A1 (ja) 2017-01-27 2018-01-16 プロセッサ、情報処理装置及びプロセッサの動作方法

Country Status (3)

Country Link
US (1) US10769004B2 (ja)
JP (1) JP6802480B2 (ja)
WO (1) WO2018139265A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020077449A (ja) * 2018-10-11 2020-05-21 力晶積成電子製造股▲ふん▼有限公司Powerchip Semiconductor Manufacturing Corporation 人工知能動作を実行できるメモリチップおよびその方法

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7174243B2 (ja) * 2018-12-21 2022-11-17 富士通株式会社 情報処理装置、ニューラルネットワークプログラム、ニューラルネットワークの処理方法
KR20220046221A (ko) * 2020-10-07 2022-04-14 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0887475A (ja) * 1994-07-22 1996-04-02 Mitsubishi Electric Corp 情報処理装置および情報処理装置における計算方法
JPH11185033A (ja) * 1997-12-22 1999-07-09 Canon Inc 画像処理方法及び装置
JPH11184841A (ja) * 1997-12-22 1999-07-09 Canon Inc 画像処理方法及び装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08147178A (ja) 1994-11-24 1996-06-07 Hitachi Ltd 共有資源アクセス方法および共有資源アクセス装置
WO2012001835A1 (ja) 2010-07-02 2012-01-05 パナソニック株式会社 マルチプロセッサシステム
JP2012252490A (ja) * 2011-06-02 2012-12-20 Renesas Electronics Corp マルチプロセッサおよびそれを用いた画像処理システム
JP5842206B2 (ja) 2012-01-27 2016-01-13 株式会社トプスシステムズ プロセッサ・コア、およびマルチコア・プロセッサ・システム
WO2016075813A1 (ja) 2014-11-14 2016-05-19 株式会社日立製作所 計算機システム、及びその制御方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0887475A (ja) * 1994-07-22 1996-04-02 Mitsubishi Electric Corp 情報処理装置および情報処理装置における計算方法
JPH11185033A (ja) * 1997-12-22 1999-07-09 Canon Inc 画像処理方法及び装置
JPH11184841A (ja) * 1997-12-22 1999-07-09 Canon Inc 画像処理方法及び装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020077449A (ja) * 2018-10-11 2020-05-21 力晶積成電子製造股▲ふん▼有限公司Powerchip Semiconductor Manufacturing Corporation 人工知能動作を実行できるメモリチップおよびその方法
US11443185B2 (en) 2018-10-11 2022-09-13 Powerchip Semiconductor Manufacturing Corporation Memory chip capable of performing artificial intelligence operation and method thereof

Also Published As

Publication number Publication date
US20190196887A1 (en) 2019-06-27
JP6802480B2 (ja) 2020-12-16
JP2018120548A (ja) 2018-08-02
US10769004B2 (en) 2020-09-08

Similar Documents

Publication Publication Date Title
US20190212982A1 (en) Processor, information processing apparatus and operation method for processor
WO2018139265A1 (ja) プロセッサ、情報処理装置及びプロセッサの動作方法
JPH07253954A (ja) 並列コンピュータ
CN112799599B (zh) 一种数据存储方法、计算核、芯片和电子设备
CN112799726A (zh) 数据处理装置、方法及相关产品
CN112686379A (zh) 集成电路装置、电子设备、板卡和计算方法
CN111125628A (zh) 人工智能处理器处理二维数据矩阵的方法和设备
CN111028136A (zh) 一种人工智能处理器处理二维复数矩阵的方法和设备
CN115221102A (zh) 用于优化片上系统的卷积运算操作的方法和相关产品
CN112084023A (zh) 数据并行处理的方法、电子设备及计算机可读存储介质
TWI779475B (zh) 圖形處理器及其加速方法
TWI749331B (zh) 具有記憶體內運算架構的記憶體及其操作方法
CN111209230B (zh) 数据处理装置、方法及相关产品
CN115867921A (zh) 用于神经网络的块之间的重叠数据的存储器管理
CN114358261A (zh) 融合神经网络的装置、板卡、方法及可读存储介质
CN111125627A (zh) 用于池化多维矩阵的方法及相关产品
CN113792867B (zh) 运算电路、芯片和板卡
CN113469333B (zh) 执行神经网络模型的人工智能处理器、方法及相关产品
US20230376562A1 (en) Integrated circuit apparatus for matrix multiplication operation, computing device, system, and method
CN111209245B (zh) 数据处理装置、方法及相关产品
WO2022135599A1 (zh) 融合分支结构的装置、板卡、方法及可读存储介质
CN111210011B (zh) 数据处理装置及相关产品
CN115599738A (zh) 一种对神经网络模型进行优化的方法及相关产品
CN114358264A (zh) 融合神经网络的装置、板卡、方法及可读存储介质
CN114330679A (zh) 融合神经网络的装置、板卡、方法及可读存储介质

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

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

Country of ref document: EP

Kind code of ref document: A1