# US 11,307,866 B2 · Data processing apparatus and method

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,307,866 B2
- Document ID: US11307866B2
- Status: Granted
- Kind: B2
- Application number: 16/698,998
- Filed: 2019-11-28
- Published: 2020-05-14
- Granted: 2022-04-19
- Earliest claimed: 2017-09-29
- Assignees: Shanghai Cambricon Information Technology Co., Ltd.
- Applicants: Shanghai Cambricon Information Technology Co., Ltd.
- Inventors: Shaoli Liu; Shengyuan Zhou; Zidong Du
- Web page: https://patentgrep.com/patent/US11307866B2

## CPC

- G06F 1/3225: of memory devices
- G06F 9/3893: {controlled in tandem, e.g. multiplier-accumulator}
- G06F 1/3206: Monitoring of events, devices or parameters that trigger a change in power modality
- G06F 1/3275: {Power saving in memory, e.g. RAM, cache}
- G06F 1/3296: by lowering the supply or operating voltage
- G06F 3/012: {Head tracking input arrangements}
- G06F 3/017: {Gesture based interaction, e.g. based on a set of recognized hand gestures (interaction based on gestures traced on a digitiser G06F3/04883)}
- G06F 9/3004: {to perform operations on memory}
- G06F 9/30047: {Prefetch instructions; cache control instructions}
- G06F 9/3836: {Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution}
- G06F 9/485: {Task life-cycle, e.g. stopping, restarting, resuming execution (G06F9/4881 takes precedence)}
- G06F 9/4881: {Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues}
- G06F 9/505: {considering the load}
- G06F 9/546: {Message passing systems or structures, e.g. queues}
- G06F 11/0751: {Error or fault detection not based on redundancy (power supply failures G06F1/30; network fault management H04L41/06)}
- G06F 11/1004: {to protect a block of data words, e.g. CRC or checksum (G06F11/1076 takes precedence; security arrangements for protecting computers or computer systems against unauthorized activity G06F21/00)}
- G06F 11/1044: {with specific ECC/EDC distribution}
- G06F 11/1048: {using arrangements adapted for a specific error detection or correction feature}
- G06F 11/186: {Passive fault masking when reading multiple copies of the same data}
- G06F 11/3024: {where the computing system component is a central processing unit [CPU]}
- G06F 11/3058: {Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations (thermal management in cooling arrangements of a computing system G06F1/206)}
- G06F 11/3062: {where the monitored property is the power consumption (power management in a computing system G06F1/3203)}
- G06F 12/0875: with dedicated cache, e.g. instruction or stack
- G06F 17/16: Matrix or vector computation {, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization (matrix transposition G06F7/78)}
- G06F 18/24: Classification techniques
- G06N 3/04: Architecture, e.g. interconnection topology
- G06N 3/045: Combinations of networks
- G06N 3/0464: Convolutional networks [CNN, ConvNet]
- G06N 3/048: Activation functions
- G06N 3/0495: Quantised networks; Sparse networks; Compressed networks
- G06N 3/063: using electronic means
- G06N 3/09: Supervised learning
- G06V 10/764: using classification, e.g. of video objects
- G06V 10/82: using neural networks
- G06V 10/94: Hardware or software architectures specially adapted for image or video understanding
- G06V 10/95: {structured as a network, e.g. client-server architectures}
- G06V 40/168: {Feature extraction; Face representation}
- G06V 40/174: {Facial expression recognition}
- G06F 1/324: by lowering clock frequency
- G06F 7/5443: {Sum of products (for applications thereof, see the relevant places, e.g. G06F17/10, H03H17/00)}
- G06F 7/57: Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations {(G06F7/49, G06F7/491 take precedence)}
- G06F 9/3001: {Arithmetic instructions}
- G06F 9/54: Interprogram communication
- G06F 11/1612: {where the redundant component is persistent storage}
- G06F 11/167: {Error detection by comparing the memory output}
- G06F 11/3051: {Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs (verification or detection of system hardware configuration G06F11/2247)}
- G06F 2201/81: Threshold
- G06F 2203/011: Emotion or mood input determined on the basis of sensed human body parameters such as pulse, heart rate or beat, temperature of skin, facial expressions, iris, voice pitch, brain activity patterns
- G06F 2212/452: Instruction code
- G06N 3/044: Recurrent networks, e.g. Hopfield networks
- G06N 3/047: Probabilistic or stochastic networks
- G06N 3/08: Learning methods
- Y02D 10/00: Energy efficient computing, e.g. low power processors, power management or thermal management
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06N: COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06V: IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- Y02D: CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE

## Abstract

The disclosure provides a data processing device and method. The data processing device may include: a task configuration information storage unit and a task queue configuration unit. The task configuration information storage unit is configured to store configuration information of tasks. The task queue configuration unit is configured to configure a task queue according to the configuration information stored in the task configuration information storage unit. According to the disclosure, a task queue may be configured according to the configuration information.

## Claims

### Claim 1

A computation device comprising:
a control module; and
an operation module comprising multiple operation units, wherein
the control module is configured to send an instruction to the multiple operation units and control data transmit between the operation units,
wherein the operation module includes N*N operation units and an ALU, and
wherein the N*N operation units are arranged in an array with N rows and N columns, the operation units in a first column are configured to receive the data to be computed from the storage module, to complete square operations, and to transmit square values to right and right diagonally adjacent operation units, the operation units in a first row are configured to receive the data to be computed from the storage module, to complete square operations, and to transmit square values to the right diagonally adjacent operation units, the operation units in an Nth column are configured to receive data from left diagonal and the left operation units and complete accumulation, and the ALU is configured to receive the computational result transmitted by an (N*N)th operation unit and execute an exponential operation.

### Claim 2 (depends on 1)

The computation device of claim 1, wherein each of the operation units is configured to receive the instruction and transmit data to be computed or an intermediate result to the other operation units except itself in one or more directions according to the instruction.

### Claim 3 (depends on 2)

The computation device of claim 2, wherein the direction included a direction of transmitting to the left/right adjacent or nonadjacent operation units, a direction of transmitting to the upper/lower adjacent or nonadjacent operation units, and a direction of transmitting to diagonally adjacent or nonadjacent operation units.

### Claim 4 (depends on 1)

The computation device of claim 1, further comprising a storage module, wherein the storage module includes a data storage unit and a temporary cache and is configured to store the data to be computed or the intermediate result in the same region or separately, wherein the control module includes: a storage control unit configured to control the storage module to store or read required data, and a computational control unit configured to control computation manners in the operation units and data transmit between the operation units.

### Claim 5 (depends on 1)

The computation device of claim 1, wherein each operation unit includes multiple input ports, and the multiple input ports include a port configured to receive data transmitted by the storage module and a port configured to receive data transmitted by the other operation units, an output port configured to transmit the data back to the storage module or to a specified operation unit, and at least one multiplier and at least one adder.

### Claim 6 (depends on 5)

The computation device of claim 5, wherein each operation unit further includes at least one memory.

### Claim 7 (depends on 6)

The computation device of claim 6, wherein a data transmit direction between the N*N operation units is an S shape and N is a positive integer.

### Claim 8 (depends on 7)

The computation device of claim 7, wherein each operation unit in the N*N operation units is configured to receive neuron data and multiply the neuron data and corresponding synaptic weight data in the memory of the operation unit to obtain a product result, each of the second to (N*N)th operation units in the N*N operation units is further configured to receive an computational result transmitted by a respectively previous operation unit and add the computational result and a product result of itself respectively, and the ALU is configured to receive a computational result transmitted by the (N*N)th operation unit and execute activation computation.

### Claim 9 (depends on 1)

The computation device of claim 1, wherein the operation module includes N*N operation units and N−1 ALUs, and the N*N operation units are configured to transmit computational data in different directions, wherein N is a positive integer.

### Claim 10

A computation method comprising:
sending, by a control module, an instruction; and
receiving, by multiple operation units of an operation module, the instruction, and performing, by the multiple operation units of an operation module, data transmit according to the instruction,
wherein the operation units of the operation module in a first column receive data to be computed from the storage module, complete square operations and transmit square values to one or more right and right lower adjacent operation units, the operation units of the operation module in a first row receive the data to be computed from the storage module, complete square operations and transmit square values to the right lower adjacent operation units, and the operation units of the operation module in an Nth column receive data from one or more left upper and the left operation units, and complete accumulation, wherein N is a positive integer.

### Claim 11 (depends on 10)

The computation method of claim 10, wherein each of the operation units receives the instruction and transmits data to be computed or an intermediate result to the other operation units except itself in one or more directions according to the instruction.

### Claim 12 (depends on 11)

The computation method of claim 11, wherein the direction includes a direction of transmitting to left/right adjacent or nonadjacent operation units, a direction of transmitting to upper/lower adjacent or nonadjacent operation units, and a direction of transmitting to diagonally adjacent or nonadjacent operation units.

### Claim 13 (depends on 12)

The computation method of claim 12, wherein the operation units, except those in a first row, a first column, and an Nth column, of the operation module, after receiving the data from left upper adjacent operation units, transmit the data to right lower adjacent operation units, and accumulate the data and data transmitted by the left adjacent operation units and transmit accumulated data to the right adjacent operation units.

### Claim 14 (depends on 13)

The computation method of claim 13, wherein if all accumulation is completed, the operation units of the operation module in the Nth column transmit an accumulated result rightwards to an ALU to complete an exponential operation.

### Claim 15 (depends on 10)

The computation method of claim 10, wherein a storage control unit of the control module controls the storage module to read neuron data to be computed for transmit, reads synaptic weight data and store the synaptic weight data in a memory of each operation unit, and a computational control unit of the control module sends a computational signal to be computed to each operation unit and initializes each operation unit, and wherein the storage control unit of the control module sends an instruction, and the storage module transmits the neuron data to be computed to each operation unit, and the computational control unit of the control module sends an instruction, and each operation unit receives the neuron data and multiplies the neuron data and the corresponding synaptic weight data in the memory of itself to obtain a product result.

### Claim 16 (depends on 10)

The computation method of claim 10,
wherein in N*N operation units arranged in an array, the operation unit in the first row and the first column transmits a computational result rightwards to the operation unit in the first row and the second column, the operation unit in the first row and the second column adds the received computational result and a computational product of itself to obtain a partial sum and transmits it rightwards until to the operation unit in the Nth row and the Nth column, an S-shaped transmit path is formed, and the partial sum is accumulated, wherein N is a positive integer, wherein an ALU in the operation module receives an accumulated result, executes activation computation, and writes an activation computational result back into the storage module.

### Claim 17 (depends on 10)

The computation method of claim 10,
wherein each operation unit receives the computational result of its previous operation unit, adds the computational result and the computational product of itself to obtain a partial sum, and continues transmitting the partial sum backwards,
wherein the multiple operation units transmit and accumulate the partial sum along the S-shaped path,
wherein the ALU of the operation module, after accumulation, receives the computational results of the multiple operation units and executes activation computation, and
wherein the activation computational result is written into the storage module.

### Claim 18 (depends on 10)

The computation method of claim 10, wherein during computation for a local response normalization (LRN) layer, the multiple operation units accumulate a square of input data, and the ALU executes an exponential operation on an accumulated result.

### Claim 19

An electronic device, comprising:
a computation device that includes:
a control module; and
an operation module comprising multiple operation units, wherein the control module is configured to send an instruction to the multiple operation units and control data transmit between the operation units,
wherein the operation module includes N*N operation units and an ALU, and
wherein the N*N operation units are arranged in an array with N rows and N columns, the operation units in a first column are configured to receive the data to be computed from the storage module, to complete square operations, and to transmit square values to right and right diagonally adjacent operation units, the operation units in a first row are configured to receive the data to be computed from the storage module, to complete square operations, and to transmit square values to the right diagonally adjacent operation units, the operation units in an Nth column are configured to receive data from left diagonal and the left operation units and complete accumulation, and the ALU is configured to receive the computational result transmitted by an (N*N)th operation unit and execute an exponential operation.
