CN109478144B - 一种数据处理装置和方法 - Google Patents
一种数据处理装置和方法 Download PDFInfo
- Publication number
- CN109478144B CN109478144B CN201880001841.0A CN201880001841A CN109478144B CN 109478144 B CN109478144 B CN 109478144B CN 201880001841 A CN201880001841 A CN 201880001841A CN 109478144 B CN109478144 B CN 109478144B
- Authority
- CN
- China
- Prior art keywords
- data
- unit
- task
- processing circuit
- processing circuits
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
- 238000012545 processing Methods 0.000 title claims abstract description 765
- 238000000034 method Methods 0.000 title claims abstract description 116
- 238000003672 processing method Methods 0.000 claims description 25
- 238000012544 monitoring process Methods 0.000 claims description 6
- 230000000977 initiatory effect Effects 0.000 claims 1
- 238000013528 artificial neural network Methods 0.000 description 292
- 239000013598 vector Substances 0.000 description 117
- 238000004364 calculation method Methods 0.000 description 103
- 230000008451 emotion Effects 0.000 description 99
- 230000015654 memory Effects 0.000 description 80
- 230000004913 activation Effects 0.000 description 63
- 238000011176 pooling Methods 0.000 description 60
- 238000007667 floating Methods 0.000 description 59
- 230000006870 function Effects 0.000 description 45
- 210000002569 neuron Anatomy 0.000 description 40
- 238000006243 chemical reaction Methods 0.000 description 39
- 210000004205 output neuron Anatomy 0.000 description 37
- 230000008569 process Effects 0.000 description 36
- 230000035508 accumulation Effects 0.000 description 34
- 238000009825 accumulation Methods 0.000 description 34
- 230000010365 information processing Effects 0.000 description 33
- 238000010586 diagram Methods 0.000 description 31
- 210000002364 input neuron Anatomy 0.000 description 26
- 241001442055 Vipera berus Species 0.000 description 20
- 238000012546 transfer Methods 0.000 description 20
- 238000012937 correction Methods 0.000 description 19
- 210000004027 cell Anatomy 0.000 description 17
- 230000014509 gene expression Effects 0.000 description 17
- 230000005540 biological transmission Effects 0.000 description 15
- 238000007781 pre-processing Methods 0.000 description 15
- 125000004122 cyclic group Chemical group 0.000 description 14
- 238000012549 training Methods 0.000 description 12
- 238000013461 design Methods 0.000 description 8
- 238000005265 energy consumption Methods 0.000 description 8
- 210000000225 synapse Anatomy 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000007619 statistical method Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 5
- 206010041349 Somnolence Diseases 0.000 description 4
- 230000003044 adaptive effect Effects 0.000 description 4
- 230000003139 buffering effect Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 210000005069 ears Anatomy 0.000 description 4
- 239000000284 extract Substances 0.000 description 4
- 238000000605 extraction Methods 0.000 description 4
- 210000001508 eye Anatomy 0.000 description 4
- 210000004709 eyebrow Anatomy 0.000 description 4
- 210000001061 forehead Anatomy 0.000 description 4
- 210000000088 lip Anatomy 0.000 description 4
- 210000003205 muscle Anatomy 0.000 description 4
- 238000010606 normalization Methods 0.000 description 4
- 210000001331 nose Anatomy 0.000 description 4
- 238000004806 packaging method and process Methods 0.000 description 4
- 238000004148 unit process Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 230000011218 segmentation Effects 0.000 description 3
- ORILYTVJVMAKLC-UHFFFAOYSA-N Adamantane Natural products C1C(C2)CC3CC1CC2C3 ORILYTVJVMAKLC-UHFFFAOYSA-N 0.000 description 2
- COYHRQWNJDJCNA-NUJDXYNKSA-N Thr-Thr-Thr Chemical compound C[C@@H](O)[C@H](N)C(=O)N[C@@H]([C@@H](C)O)C(=O)N[C@@H]([C@@H](C)O)C(O)=O COYHRQWNJDJCNA-NUJDXYNKSA-N 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 230000000994 depressogenic effect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000009429 distress Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000000306 recurrent effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000005481 NMR spectroscopy Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013075 data extraction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000001815 facial effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000006698 induction Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 238000010977 unit operation Methods 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3296—Power saving characterised by the action undertaken by lowering the supply or operating voltage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
- G06F11/1451—Management of the data involved in backup or backup restore by selection of backup contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/18—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
- G06F11/186—Passive fault masking when reading multiple copies of the same data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3024—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/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
- G06F11/3062—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 where the monitored property is the power consumption
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2413—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
- G06F18/24133—Distances to prototypes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/011—Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
- G06F3/012—Head tracking input arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/017—Gesture based interaction, e.g. based on a set of recognized hand gestures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/94—Hardware or software architectures specially adapted for image or video understanding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
- G06V40/16—Human faces, e.g. facial parts, sketches or expressions
- G06V40/168—Feature extraction; Face representation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
- G06V40/16—Human faces, e.g. facial parts, sketches or expressions
- G06V40/174—Facial expression recognition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/324—Power saving characterised by the action undertaken by lowering clock frequency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1608—Error detection by comparing the output signals of redundant hardware
- G06F11/1612—Error detection by comparing the output signals of redundant hardware where the redundant component is persistent storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1666—Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
- G06F11/167—Error detection by comparing the memory output
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/81—Threshold
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2203/00—Indexing scheme relating to G06F3/00 - G06F3/048
- G06F2203/01—Indexing scheme relating to G06F3/01
- G06F2203/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/047—Probabilistic or stochastic networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- 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
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Multimedia (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Human Computer Interaction (AREA)
- Oral & Maxillofacial Surgery (AREA)
- Mathematical Analysis (AREA)
- Neurology (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Medical Informatics (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Algebra (AREA)
- Advance Control (AREA)
- Hardware Redundancy (AREA)
Abstract
本公开提供了一种数据处理装置和方法,所述数据处理装置包括:任务配置信息存储单元,用于存储任务的配置信息;任务队列配置单元,用于根据所述任务配置信息存储单元的配置信息对任务队列进行配置。本公开可以根据配置信息对任务队列进行配置。
Description
技术领域
本公开涉及一种数据处理装置和方法。
背景技术
在传统的处理器芯片上,中央处理器输送启动配置指令到专用处理器核的指令存储器中,启动专用处理器核完成任务,直到结束指令被执行后结束整个任务,这种启动任务的方式被称为普通启动。在普通启动模式下存在如下问题:很难动态监测到当前任务的执行状态,对当前的任务很难进行调度。
发明内容
(一)要解决的技术问题
有鉴于此,本公开的主要目的在于提供一种数据处理装置和方法,可以实现任务队列的配置、调度等功能,以解决上述问题。
(二)技术方案
本公开第一方面,提供了一种数据处理装置,包括:任务配置信息存储单元,用于存储任务的配置信息;任务队列配置单元,用于根据所述任务配置信息存储单元的配置信息对任务队列进行配置;外部装置,用于提供配置信息以及执行任务队列;所述外部装置包括一个或多个处理器核;每个所述处理器核包括一个主处理电路和多个从处理电路;所述任务队列配置单元用于将经过配置的任务队列发送至控制单元;所述控制单元用于监测自启动任务队列装置的配置信息,对存储单元的运算指令进行配置,控制运算单元和所述存储单元执行任务队列中的任务,每执行完一个任务向任务配置信息存储单元发送一个第一结束信号;所述任务配置信息存储单元用于每接收到一个第一结束信号后向控制单元发送中断信号;所述控制单元用于处理中断信号并发送第二结束信号给任务配置信息存储单元。
在一些实施例中,所述处理器核包括:树型模块,所述树型模块包括:一个根端口和多个支端口,所述树型模块的根端口连接所述主处理电路,所述树型模块的多个支端口分别连接多个从处理电路中的一个从处理电路;所述树型模块,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令。
在一些实施例中,所述处理器核还包括分支处理电路;所述主处理电路,具体用于将任务队列中的任务分配成多个数据块,将所述多个数据块中的至少一个数据块、权值以及多个运算指令中的至少一个运算指令发送给所述分支处理电路;所述分支处理电路,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令;所述多个从处理电路,用于依据该运算指令对接收到的数据块以及权值执行运算得到中间结果,并将中间结果传输给所述分支处理电路;所述主处理电路,用于将分支处理电路发送的中间结果进行后续处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
在一些实施例中,所述多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,所述主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个基础电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路;所述K个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发;所述主处理电路,用于将一个输入数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述K个从处理电路;所述K个从处理电路,用于转换所述主处理电路与所述多个从处理电路之间的数据;所述多个从处理电路,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述K个从处理电路;所述主处理电路,用于将所述K个从处理电路发送的中间结果进行后续处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
在一些实施例中,所述任务配置信息存储单元包括:多个存储单元,用于根据配置信息将多个任务队列分别存储至各个存储单元。
在一些实施例中,所述配置信息包括任务的开始标志、和/或任务的结束标志、和/或任务的优先级、和/或任务的启动方式。
在一些实施例中,所述多个存储单元包括:第一存储单元,用于存储第一任务队列;第二存储单元,用于存储第二任务队列。
在一些实施例中,所述第一任务队列包括高优先级任务队列,所述第二任务队列包括低优先级任务队列。
在一些实施例中,还包括:外部装置,用于提供配置信息以及执行任务队列。
在一些实施例中,所述外部装置用于将配置信息发送给任务配置信息存储单元。
在一些实施例中,所述任务队列配置单元用于将经过配置的任务队列发送至外部装置;所述外部装置用于执行任务队列中的任务,每执行完一个任务向所述任务配置信息存储单元发送一个第一结束信号;所述任务配置信息存储单元用于每接收到一个第一结束信号向所述外部装置发送中断信号;所述外部装置用于处理中断信号并发送第二结束信号给任务配置信息存储单元。
在一些实施例中,所述任务配置信息存储单元用于接收到第一结束信号后,修改存储的任务配置信息。
在一些实施例中,所述外部装置包括一个或多个处理器核。
在一些实施例中,处理器核包括:控制模块,用于提供配置信息;运算模块,用于执行任务队列。
在一些实施例中,所述控制模块用于将配置信息发送给任务配置信息存储单元。
在一些实施例中,所述运算模块包括控制单元、运算单元和存储单元;所述任务队列配置单元用于将经过配置的任务队列发送至控制单元;所述控制单元用于监测自启动任务队列装置的配置信息,对存储单元的运算指令进行配置,控制运算单元和存储单元执行任务队列中的任务,每执行完一个任务向任务配置信息存储单元发送一个第一结束信号;所述任务配置信息存储单元用于每接收到一个第一结束信号后向控制单元发送中断信号;所述控制单元用于处理中断信号并发送第二结束信号给任务配置信息存储单元。
在一些实施例中,所述运算单元包括一个主处理电路和多个从处理电路。所述运算单元包括:树型模块,所述树型模块包括:一个根端口和多个支端口,所述树型模块的根端口连接所述主处理电路,所述树型模块的多个支端口分别连接多个从处理电路中的一个从处理电路;所述树型模块,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令。
在一些实施例中,所述运算单元包括一个主处理电路、多个从处理电路、和分支处理电路。所述主处理电路,具体用于将任务队列中的任务分配成多个数据块,将所述多个数据块中的至少一个数据块、权值以及多个运算指令中的至少一个运算指令发送给所述分支处理电路;
所述分支处理电路,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令;
所述多个从处理电路,用于依据该运算指令对接收到的数据块以及权值执行运算得到中间结果,并将中间结果传输给所述分支处理电路;
所述主处理电路,用于将分支处理电路发送的中间结果进行后续处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
在一些实施例中,所述运算单元包括一个主处理电路、和多个从处理电路。所述多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,所述主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个基础电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路;
所述K个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发;
所述主处理电路,用于将一个输入数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述K个从处理电路;
所述K个从处理电路,用于转换所述主处理电路与所述多个从处理电路之间的数据;
所述多个从处理电路,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述K个从处理电路;
所述主处理电路,用于将所述K个从处理电路发送的中间结果进行后续处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
在一些实施例中,所述主处理电路,具体用于将多个从处理电路发送的中间结果进行组合排序得到该计算指令的结果;
在一些实施例中,主处理电路,具体用于将多个处理电路的发送的中间结果进行组合排序以及激活处理后得到该计算指令的结果。
在一些实施例中,所述主处理电路包括:转换处理电路、激活处理电路、加法处理电路中的一种或任意组合;
所述转换处理电路,用于对所述数据执行前序处理,具体为:将主处理电路接收的数据或中间结果执行第一数据结构与第二数据结构之间的互换;或将主处理电路接收的数据或中间结果执行第一数据类型与第二数据类型之间的互换;
所述激活处理电路,用于执行所述后续处理,具体为执行主处理电路内数据的激活运算;
所述加法处理电路,用于执行所述后续处理,具体为执行加法运算或累加运算。
在一些实施例中,所述从处理电路包括:乘法处理电路;
所述乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果。
在一些实施例中,所述从处理电路还包括:累加处理电路,所述累加处理电路,用于对该乘积结果执行累加运算得到该中间结果。
在一些实施例中,,所述树型模块为n叉树结构,所述n为大于等于2的整数。
在一些实施例中,所述存储单元包括外部存储模块和指令存储模块;所述控制单元用于对存储单元的运算指令进行配置包括:将所述外部存储模块的指令输入到指令存储模块中。
在一些实施例中,存储单元,用于存储神经网络运算的数据和指令;控制单元,用于控制存储单元和神经网络运算单元执行任务队列中的任务;所述运算单元包括神经网络运算单元,用于根据所述存储单元存储的指令对数据执行神经网络计算。
在一些实施例中,存储单元,用于存储通用运算的数据和指令;控制单元,用于控制存储单元和通用运算单元执行任务队列中的任务;所述运算单元包括通用运算单元,用于根据所述存储单元存储的指令对数据执行通用运算。
在一些实施例中,还包括:数据缓存,用于缓存数据、中间结果和运算结果;指令缓存,用于缓存指令;直接内存存取(direct memory access,DMA),用于存储单元与数据缓存、指令缓存之间的数据接口。
在一些实施例中,所述数据缓存包括:输入神经元缓存,用于缓存输入神经元;权值缓存,用于缓存权值;输出神经元缓存,用于缓存输出神经元。
在一些实施例中,所述神经网络运算单元包括至少一个运算部件,所述运算部件包括至少一个乘法器、和/或至少一个加法器、和/或至少一个激活函数单元、和/或至少一个池化单元。
在一些实施例中,所述多个加法器组成加法树。
在一些实施例中,所述神经网络运算单元包括多个处理单元(processingelement,PE)、和/或一或多个算术逻辑单元(arithmetic Logic Unit,ALU)。
在一些实施例中,所述PE包括一个乘法器、一个加法器、一个比较器和一个寄存器或寄存器组。
在一些实施例中,所述乘法器用于将第一输入数据和第二输入数据相乘得到输出。
本公开还提供了一种芯片,包括上述任一数据处理装置。
本公开还提供了一种芯片封装结构,包括上述芯片。
本公开还提供了一种板卡,包括上述芯片封装结构。
本公开还提供了一种电子装置,包括上述板卡。
本公开第二方面还提供了一种数据处理方法,包括:任务配置信息存储单元存储任务的配置信息;任务队列配置单元根据所述任务配置信息存储单元的配置信息对任务队列进行配置;外部装置提供配置信息以及执行任务队列;所述外部装置包括一个或多个处理器核;每个所述处理器核包括一个主处理电路和多个从处理电路;所述任务队列配置单元用于将经过配置的任务队列发送至控制单元;所述控制单元用于监测自启动任务队列装置的配置信息,对存储单元的运算指令进行配置,控制运算单元和所述存储单元执行任务队列中的任务,每执行完一个任务向任务配置信息存储单元发送一个第一结束信号;所述任务配置信息存储单元用于每接收到一个第一结束信号后向控制单元发送中断信号;所述控制单元用于处理中断信号并发送第二结束信号给任务配置信息存储单元。
在一些实施例中,所述处理器核包括:树型模块,所述树型模块包括:一个根端口和多个支端口,所述树型模块的根端口连接所述主处理电路,所述树型模块的多个支端口分别连接多个从处理电路中的一个从处理电路;所述树型模块,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令。
在一些实施例中,所述处理器核还包括分支处理电路;所述主处理电路,具体用于将任务队列中的任务分配成多个数据块,将所述多个数据块中的至少一个数据块、权值以及多个运算指令中的至少一个运算指令发送给所述分支处理电路;所述分支处理电路,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令;所述多个从处理电路,用于依据该运算指令对接收到的数据块以及权值执行运算得到中间结果,并将中间结果传输给所述分支处理电路;所述主处理电路,用于将分支处理电路发送的中间结果进行后续处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
在一些实施例中,所述多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,所述主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个基础电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路;所述K个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发;所述主处理电路,用于将一个输入数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述K个从处理电路;所述K个从处理电路,用于转换所述主处理电路与所述多个从处理电路之间的数据;所述多个从处理电路,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述K个从处理电路;所述主处理电路,用于将所述K个从处理电路发送的中间结果进行后续处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
在一些实施例中,所述任务配置信息存储单元根据配置信息将多个任务队列分别存储至其各个存储单元。
在一些实施例中,所述配置信息包括任务的开始标志、和/或任务的结束标志、和/或任务的优先级、和/或任务的启动方式。
在一些实施例中,所述存储单元的第一存储单元存储第一任务队列,第二存储单元存储第二任务队列。
在一些实施例中,所述第一任务队列包括高优先级任务队列,所述第二任务队列包括低优先级任务队列。
在一些实施例中,其中,外部装置提供配置信息以及执行任务队列。
在一些实施例中,所述外部装置将配置信息发送给任务配置信息存储单元。
在一些实施例中,所述任务队列配置单元将经过配置的任务队列发送至外部装置;所述外部装置执行任务队列中的任务,每执行完一个任务向所述任务配置信息存储单元发送一个第一结束信号;所述任务配置信息存储单元每接收到一个第一结束信号向外部装置发送中断信号;所述外部装置处理中断信号并发送第二结束信号给任务配置信息存储单元。
在一些实施例中,所述任务配置信息存储单元接收到第一结束信号后修改存储的任务配置信息。
在一些实施例中,所述外部装置包括一个或多个处理器核。
在一些实施例中,处理器核中的控制模块提供配置信息,运算模块执行任务队列。
在一些实施例中,所述控制模块将配置信息发送给任务配置信息存储单元。
在一些实施例中,所述任务队列配置单元将经过配置的任务队列发送至控制单元;所述控制单元监测自启动任务队列装置的配置信息,对存储单元的运算指令进行配置,控制运算单元和存储单元执行任务队列中的任务,每执行完一个任务向任务配置信息存储单元发送一个第一结束信号;所述任务配置信息存储单元每接收到一个第一结束信号后向控制单元发送中断信号;所述控制单元处理中断信号并发送第二结束信号给任务配置信息存储单元。
在一些实施例中,所述运算单元包括一个主处理电路和多个从处理电路。所述运算单元包括:树型模块,所述树型模块包括:一个根端口和多个支端口,所述树型模块的根端口连接所述主处理电路,所述树型模块的多个支端口分别连接多个从处理电路中的一个从处理电路;所述树型模块,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令。
在一些实施例中,所述运算单元包括一个主处理电路、多个从处理电路、和分支处理电路。所述主处理电路,具体用于将任务队列中的任务分配成多个数据块,将所述多个数据块中的至少一个数据块、权值以及多个运算指令中的至少一个运算指令发送给所述分支处理电路;
所述分支处理电路,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令;
所述多个从处理电路,用于依据该运算指令对接收到的数据块以及权值执行运算得到中间结果,并将中间结果传输给所述分支处理电路;
所述主处理电路,用于将分支处理电路发送的中间结果进行后续处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
在一些实施例中,所述运算单元包括一个主处理电路、和多个从处理电路。所述多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,所述主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个基础电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路;
所述K个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发;
所述主处理电路,用于将一个输入数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述K个从处理电路;
所述K个从处理电路,用于转换所述主处理电路与所述多个从处理电路之间的数据;
所述多个从处理电路,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述K个从处理电路;
所述主处理电路,用于将所述K个从处理电路发送的中间结果进行后续处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
在一些实施例中,所述主处理电路,具体用于将多个从处理电路发送的中间结果进行组合排序得到该计算指令的结果;
在一些实施例中,主处理电路,具体用于将多个处理电路的发送的中间结果进行组合排序以及激活处理后得到该计算指令的结果。
在一些实施例中,所述主处理电路包括:转换处理电路、激活处理电路、加法处理电路中的一种或任意组合;
所述转换处理电路,用于对所述数据执行前序处理,具体为:将主处理电路接收的数据或中间结果执行第一数据结构与第二数据结构之间的互换;或将主处理电路接收的数据或中间结果执行第一数据类型与第二数据类型之间的互换;
所述激活处理电路,用于执行所述后续处理,具体为执行主处理电路内数据的激活运算;
所述加法处理电路,用于执行所述后续处理,具体为执行加法运算或累加运算。
在一些实施例中,所述从处理电路包括:乘法处理电路;
所述乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果。
在一些实施例中,所述从处理电路还包括:累加处理电路,所述累加处理电路,用于对该乘积结果执行累加运算得到该中间结果。
在一些实施例中,所述树型模块为n叉树结构,所述n为大于等于2的整数。
在一些实施例中,所述控制单元对存储单元的运算指令进行配置包括:将所述存储单元中的外部存储模块的指令输入到指令存储模块中。
在一些实施例中,存储单元存储神经网络运算的数据和指令;控制单元控制存储单元和神经网络运算单元执行任务队列中的任务;所述运算单元包括神经网络运算单元,根据所述存储单元存储的指令对数据执行神经网络计算。
在一些实施例中,存储单元存储通用运算的数据和指令;控制单元控制存储单元和通用运算单元执行任务队列中的任务;所述运算单元包括通用运算单元,根据所述存储单元存储的指令对数据执行通用运算。
在一些实施例中,数据缓存缓存数据、中间结果和运算结果;指令缓存缓存指令;DMA作为存储单元与数据缓存、指令缓存之间的数据接口。
在一些实施例中,使用输入神经元缓存缓存输入神经元;使用权值缓存缓存权值;使用输出神经元缓存缓存输出神经元。
在一些实施例中,所述神经网络运算包括乘法运算、和/或加法运算、和/或激活运算、和/或池化运算、和/或卷积运算、和/或全连接运算、和/或向量内积运算、和/或非线性运算。
在一些实施例中,所述乘法运算将第一输入数据和第二输入数据相乘得到输出。
从上述技术方案可以看出,本公开第一方面和第二方面具有至少以下有益效果:
(1)外部装置可以随时访问自启动任务队列装置的任务配置信息存储单元来查看当前的任务状态,实现了对当前任务执行状态的有效监控。
(2)外部装置可以随时修改自启动任务队列装置的任务配置信息存储单元,实现了对任务的调度。
需要说明的是,现有技术中,数据冗余技术采用副本冗余或者纠错编码的方式提高数据的安全性和可靠性,但是数据冗余技术带来巨大的存储容量开销和访存功耗开销,针对大规模的数据,这个问题会更加严重。因此如何结合数据的特性进行数据冗余成为一个亟待解决的问题。鉴于现有方案存在的问题,为了克服上述现有技术方案的不足,本发明还提出了一种数据冗余方法及装置。
本公开第三方面,提供了一种数据冗余方法,包括:将数据划分为M个重要等级;提取每一重要等级中的每一数据的重要比特位;以及针对所述重要比特位进行数据冗余处理,其中M为正整数。
在一些实施例中,所述数据冗余处理包括副本冗余处理和/或纠错编码处理。
在一些实施例中,所述纠错编码处理包括循环冗余校验(cyclic redundancycheck,CRC)和/或错误检查和纠正(Error Correcting Code,ECC)。
在一些实施例中,对数据进行纠错编码处理包括:对该数据采用CRC的方式进行冗余存储,当进行读操作时,读取存储循环冗余校验码,并对原始数据进行循环冗余校验码计算,如果两个循环冗余校验码不一致,则按照存储的循环冗余校验码对该数据进行修正,进行写操作时,同时存储该数据的原始数据和循环冗余校验码。
在一些实施例中,对数据进行纠错编码处理包括:对该数据采用错误检查和纠正内存进行冗余存储,在进行读写操作时,错误检查和纠正内存自动进行检错和纠错处理。
在一些实施例中,所述副本冗余处理包括同时备份N份副本,其中N≥2,为正整数。
在一些实施例中,对数据的重要比特位进行副本冗余处理包括:进行读操作时,对于重要比特位同时读取原始数据和备份的N份数据,若出现数据不一致,则取相同的N份数据作为最终读取的数据,同时将第N+1份不一致数据修复,当进行写操作时,对于重要比特位同时写回到N个备份地址,同时保证原始数据中的数据和N个备份数据一致。
在一些实施例中,所述将数据划分为M个重要等级包括根据数据的大小、数据绝对值的大小、数据的类型、数据的读操作频率及数据的写操作频率中的至少一个来进行划分。
在一些实施例中,所述数据包括神经网络参数,按照神经网络参数的绝对值划分M个重要等级,按照由大到小的顺序设定M+1个阈值T0,T1,T2,…及TM,当神经网络参数的绝对值D满足Ti-1>D>Ti时,该数据归为第i个重要等级,其中i=1,2……,M,T0,T1,T2,…及TM均为实数,且T0>T1>T2>…>TM≥0。
在一些实施例中,所述数据包括稀疏神经网络参数,所述稀疏神经网络参数包括非零参数和非零参数位置,所述非零参数位置设置为第1重要等级,非零参数按照参数绝对值划分M-1个重要等级,按照由大到小的顺序设定M个阈值T1,T2,…及TM,当非零参数的绝对值D满足Ti-1>D>Ti时,该数据归为第i个重要等级,其中i=2,3……,M,T1,T2,…及TM均为实数,且T1>T2>…>TM≥0。
在一些实施例中,所述数据包括图计算应用数据,包括顶点数据和边数据,所述顶点数据设置为第1重要等级,边数据按照访问频率划分M-1个重要等级,按照由大到小的顺序设定M个阈值T1,T2,…及TM,当边数据按照访问频率F满足Ti-1>F>Ti时,该数据归为第i个重要等级,其中i=2,3……,M,T1,T2,…及TM-1均为实数,且T1>T2>…>TM≥0。
在一些实施例中,提取每一重要等级中的每一数据的重要比特位包括:所述数据为浮点型参数,设置符号位、指数部分以及底数部分前y位指定为重要比特位,y为正整数;和/或所述数据为定点型参数,设置符号位、数值部分前z位指定为重要比特位,z为正整数。
在一些实施例中,可以对控制单元做冗余存储,对运算单元不做冗余存储。比如,对神经网络指令做冗余存储,对参数不做冗余存储,将神经网络指令设定为第1重要等级,将神经网络的参数设定为第2重要等级。其中神经网络参数包括拓扑结构信息、神经元数据和权值数据。对第1重要等级的数据进行冗余存储,对第2重要等级的数据不进行冗余存储。当对第1重要等级数据进行读操作时,读取原始数据和备份的两份数据,若出现相应数据不一致,则取相同的两份数据作为最终读取的数据,同时将第三份不一致的数据进行修复。当对第1重要等级数据进行写操作时,同时写回到两个备份地址,同时保证原始数据和两个备份数据一致。
在一些实施例中,神经网络处理器包括存储单元、控制单元和运算单元。
存储单元接收外界的输入数据,存储神经网络的神经元、权值和指令,并将指令发送给控制单元,将神经元和权值发送给运算单元。
控制单元,用于接收存储单元发送的指令,经过译码后生成控制信息控制运算单元。
运算单元,用于接收存储单元发送的权值和神经元,完成神经网络训练运算并将输出神经元重新传输给存储单元存储。
神经网络处理器还包括指令冗余处理单元,分别内嵌至存储单元和指令控制单元中,对指令进行数据冗余处理。
在一些实施例中,运算单元包括一个主处理电路和多个从处理电路。具体地,运算单元可以为树型模块,所述树型模块包括:一个根端口和多个支端口,所述树型模块的根端口连接所述主处理电路,所述树型模块的多个支端口分别连接多个从处理电路中的一个从处理电路;所述树型模块,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令。如图11所示,树型模块可以包括多层节点结构,节点为具有转发功能的结构,该节点本身可以不具有计算功能。
在一些实施例中,运算单元可以包括一个主处理电路、多个从处理电路、和分支处理电路。所述主处理电路,具体用于将一个输入神经元分配成多个数据块,将所述多个数据块中的至少一个数据块、权值以及多个运算指令中的至少一个运算指令发送给所述分支处理电路;
所述分支处理电路,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令;
所述多个从处理电路,用于依据该运算指令对接收到的数据块以及权值执行运算得到中间结果,并将中间结果传输给所述分支处理电路;
所述主处理电路,用于将分支处理电路发送的中间结果进行后续处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
在一些实施例中,运算单元可以包括一个主处理电路、和多个从处理电路。所述多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,所述主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个从处理电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路;
所述k个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发;
所述主处理电路,用于将一个输入数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述k个从处理电路;
所述k个从处理电路,用于转换所述主处理电路与所述多个从处理电路之间的数据;
所述多个从处理电路,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述K个从处理电路;
所述主处理电路,用于将所述K个从处理电路发送的中间结果进行后续处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
在一些实施例中,所述主处理电路,具体用于将多个从处理电路发送的中间结果进行组合排序得到该计算指令的结果;
在一些实施例中,主处理电路,具体用于将多个处理电路的发送的中间结果进行组合排序以及激活处理后得到该计算指令的结果。
在一些实施例中,所述主处理电路包括:转换处理电路、激活处理电路、加法处理电路中的一种或任意组合;
所述转换处理电路,用于对所述数据执行前序处理,具体为:将主处理电路接收的数据或中间结果执行第一数据结构与第二数据结构之间的互换;或将主处理电路接收的数据或中间结果执行第一数据类型与第二数据类型之间的互换;
所述激活处理电路,用于执行所述后续处理,具体为执行主处理电路内数据的激活运算;
所述加法处理电路,用于执行所述后续处理,具体为执行加法运算或累加运算。
在一些实施例中,所述从处理电路包括:乘法处理电路;
所述乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果。
在一些实施例中,所述从处理电路还包括:累加处理电路,所述累加处理电路,用于对该乘积结果执行累加运算得到该中间结果。
在一些实施例中,所述树型模块为n叉树结构,所述n为大于等于2的整数。
本公开第四方面,提供一种数据冗余装置,包括:重要等级划分单元,用于将数据划分为M个重要等级;重要比特位提取单元,用于提取每一重要等级中的每一数据的重要比特位;以及数据冗余处理单元,用于针对所述重要比特位进行数据冗余处理,其中M为正整数。
在一些实施例中,所述数据冗余处理包括副本冗余处理和/或纠错编码处理,所述数据冗余处理单元包括:冗余存储单元,用于存储冗余数据;以及读写控制单元,用于读取和/或写入数据。
在一些实施例中,所述纠错编码处理包括循环冗余校验和/或错误检查和纠正。
在一些实施例中,对数据进行纠错编码处理包括:冗余存储单元对该数据采用循环冗余校验的方式进行冗余存储,当读写控制单元进行读操作时,读取存储循环冗余校验码,并对原始数据进行循环冗余校验码计算,如果两个循环冗余校验码不一致,则按照存储的循环冗余校验码对该数据进行修正,当读写控制单元进行写操作时,冗余存储单元同时存储该数据的原始数据和循环冗余校验码。
在一些实施例中,对数据进行纠错编码处理包括:对该数据采用错误检查和纠正内存进行冗余存储,在进行读写操作时,错误检查和纠正内存自动进行检错和纠错处理。
在一些实施例中,所述副本冗余处理包括同时备份N份副本,其中N≥2,为正整数。
在一些实施例中,对数据的重要比特位进行副本冗余处理包括:当读写控制单元进行读操作时,对于重要比特位同时读取原始数据和备份的N份数据,若出现数据不一致,则取相同的N份数据作为最终读取的数据,同时将第N+1份不一致数据修复,当读写控制单元进行写操作时,对于重要比特位同时写回到N个备份地址,同时冗余存储单元保证原始数据中的数据和N个备份数据一致。
在一些实施例中,所述重要等级划分单元将数据划分为M个重要等级包括根据数据的大小、数据绝对值的大小、数据的类型、数据的读操作频率及数据的写操作频率中的至少一个来进行划分。
在一些实施例中,所述数据包括神经网络参数,按照神经网络参数的绝对值划分M个重要等级,按照由大到小的顺序设定M+1个阈值T0,T1,T2,…及TM,当神经网络参数的绝对值D满足Ti-1>D>Ti时,该数据归为第i个重要等级,其中i=1,2……,M,T0,T1,T2,…及TM均为实数,且T0>T1>T2>…>TM≥0。
在一些实施例中,所述数据包括稀疏神经网络参数,所述稀疏神经网络参数包括非零参数和非零参数位置,所述非零参数位置设置为第1重要等级,非零参数按照参数绝对值划分M-1个重要等级,按照由大到小的顺序设定M个阈值T1,T2,…及TM,当非零参数的绝对值D满足Ti-1>D>Ti时,该数据归为第i个重要等级,其中i=2,3……,M,T1,T2,…及TM均为实数,且T1>T2>…>TM≥0。
在一些实施例中,所述数据包括图计算应用数据,包括顶点数据和边数据,所述顶点数据设置为第1重要等级,边数据按照访问频率划分M-1个重要等级,按照由大到小的顺序设定M个阈值T1,T2,…及TM,当边数据按照访问频率F满足Ti-1>F>Ti时,该数据归为第i个重要等级,其中i=2,3……,M,T1,T2,…及TM-1均为实数,且T1>T2>…>TM≥0。
在一些实施例中,所述重要比特位提取单元提取每一重要等级中的每一数据的重要比特位包括:所述数据为浮点型参数,设置符号位、指数部分以及底数部分前y位指定为重要比特位,y为正整数;和/或所述数据为定点型参数,设置符号位、数值部分前z位指定为重要比特位,z为正整数。
在一些实施例中,可以对控制单元做冗余存储,对运算单元不做冗余存储。比如,对神经网络指令做冗余存储,对参数不做冗余存储,将神经网络指令设定为第1重要等级,将神经网络的参数设定为第2重要等级。其中神经网络参数包括拓扑结构信息、神经元数据和权值数据。对第1重要等级的数据进行冗余存储,对第2重要等级的数据不进行冗余存储。当对第1重要等级数据进行读操作时,读取原始数据和备份的两份数据,若出现相应数据不一致,则取相同的两份数据作为最终读取的数据,同时将第三份不一致的数据进行修复。当对第1重要等级数据进行写操作时,同时写回到两个备份地址,同时保证原始数据和两个备份数据一致。
在一些实施例中,神经网络处理器包括存储单元、控制单元和运算单元。
存储单元接收外界的输入数据,存储神经网络的神经元、权值和指令,并将指令发送给控制单元,将神经元和权值发送给运算单元。
控制单元,用于接收存储单元发送的指令,经过译码后生成控制信息控制运算单元。
运算单元,用于接收存储单元发送的权值和神经元,完成神经网络训练运算并将输出神经元重新传输给存储单元存储。
神经网络处理器还包括指令冗余处理单元,分别内嵌至存储单元和指令控制单元中,对指令进行数据冗余处理。
在一些实施例中,可以对控制单元做冗余存储,对运算单元不做冗余存储。比如,对神经网络指令做冗余存储,对参数不做冗余存储,将神经网络指令设定为第1重要等级,将神经网络的参数设定为第2重要等级。其中神经网络参数包括拓扑结构信息、神经元数据和权值数据。对第1重要等级的数据进行冗余存储,对第2重要等级的数据不进行冗余存储。当对第1重要等级数据进行读操作时,读取原始数据和备份的两份数据,若出现相应数据不一致,则取相同的两份数据作为最终读取的数据,同时将第三份不一致的数据进行修复。当对第1重要等级数据进行写操作时,同时写回到两个备份地址,同时保证原始数据和两个备份数据一致。
在一些实施例中,神经网络处理器包括存储单元、控制单元和运算单元。
存储单元接收外界的输入数据,存储神经网络的神经元、权值和指令,并将指令发送给控制单元,将神经元和权值发送给运算单元。
控制单元,用于接收存储单元发送的指令,经过译码后生成控制信息控制运算单元。
运算单元,用于接收存储单元发送的权值和神经元,完成神经网络训练运算并将输出神经元重新传输给存储单元存储。
神经网络处理器还包括指令冗余处理单元,分别内嵌至存储单元和指令控制单元中,对指令进行数据冗余处理。
在一些实施例中,运算单元包括一个主处理电路和多个从处理电路。具体地,运算单元可以为树型模块,所述树型模块包括:一个根端口和多个支端口,所述树型模块的根端口连接所述主处理电路,所述树型模块的多个支端口分别连接多个从处理电路中的一个从处理电路;所述树型模块,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令。如图11所示,树型模块可以包括多层节点结构,节点为具有转发功能的结构,该节点本身可以不具有计算功能。
在一些实施例中,运算单元可以包括一个主处理电路、多个从处理电路、和分支处理电路。所述主处理电路,具体用于将一个输入神经元分配成多个数据块,将所述多个数据块中的至少一个数据块、权值以及多个运算指令中的至少一个运算指令发送给所述分支处理电路;
所述分支处理电路,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令;
所述多个从处理电路,用于依据该运算指令对接收到的数据块以及权值执行运算得到中间结果,并将中间结果传输给所述分支处理电路;
所述主处理电路,用于将分支处理电路发送的中间结果进行后续处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
在一些实施例中,运算单元可以包括一个主处理电路、和多个从处理电路。所述多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,所述主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个从处理电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路;
所述k个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发;
所述主处理电路,用于将一个输入数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述k个从处理电路;
所述k个从处理电路,用于转换所述主处理电路与所述多个从处理电路之间的数据;
所述多个从处理电路,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述K个从处理电路;
所述主处理电路,用于将所述K个从处理电路发送的中间结果进行后续处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
在一些实施例中,所述主处理电路,具体用于将多个从处理电路发送的中间结果进行组合排序得到该计算指令的结果;
在一些实施例中,主处理电路,具体用于将多个处理电路的发送的中间结果进行组合排序以及激活处理后得到该计算指令的结果。
在一些实施例中,所述主处理电路包括:转换处理电路、激活处理电路、加法处理电路中的一种或任意组合;
所述转换处理电路,用于对所述数据执行前序处理,具体为:将主处理电路接收的数据或中间结果执行第一数据结构与第二数据结构之间的互换;或将主处理电路接收的数据或中间结果执行第一数据类型与第二数据类型之间的互换;
所述激活处理电路,用于执行所述后续处理,具体为执行主处理电路内数据的激活运算;
所述加法处理电路,用于执行所述后续处理,具体为执行加法运算或累加运算。
在一些实施例中,所述从处理电路包括:乘法处理电路;
所述乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果。
在一些实施例中,所述从处理电路还包括:累加处理电路,所述累加处理电路,用于对该乘积结果执行累加运算得到该中间结果。
在一些实施例中,所述树型模块为n叉树结构,所述n为大于等于2的整数。
从上述技术方案可以看出,本发明第三方面和第四方面具有至少以下有益效果:
对数据选择性的进行冗余处理,减少存储容量开销和访存功耗开销;
区分数据的重要等级,对不同重要等级的数据进行不同的冗余处理,保证存储数据的安全性和可靠性的同时,减少存储容量占用和访存功耗。
需要说明的是,神经网络(neural network,NN)目前已经获得了非常成功的应用。但是用神经网络处理器处理神经网络应用时会消耗巨大的能耗,包括访存能耗和计算能耗,电路中较大的电流使得神经网络处理器的稳定性和寿命降低,因此如何减少神经网络应用的能耗成为一个亟待解决的问题。动态电压频率调整(dynamic voltage frequencyscaling,DVFS)根据处理器的实时负载需求动态调整处理器的工作频率和工作电压,从而降低芯片功耗。但是传统的DVFS并没有考虑到神经网络的拓扑结构,网络规模,容错能力等特性,对于神经网络应用不能有效降低芯片功耗,因此如何结合神经网络的特性进一步扩大频率和电压调整范围从而进一步降低处理神经网络的功耗成为一个亟待解决的问题。
本公开还提供了一种动态电压频率调整方法及动态电压频率调整协处理器以解决以上所述的至少一项技术问题。
本公开第五方面,提供了提供一种动态电压频率调整方法,包括步骤:
获取时间段T-t~T内处理器负载和神经网络配置信号;
预测下一时间段T~T+t内处理器的频率,T和t均为大于0的实数。
在一些实施例中,还包括步骤,根据预测的所述频率来预测所述下一时间段T~T+t内处理器的电压。
在一些实施例中,预测处理器下一时间段频率中的频率包括:存储单元和/或计算单元的频率。
在一些实施例中,所述预测下一时间段T~T+t内处理器的频率,包括:为计算单元预设m段频率调整范围,共计m+1个频率分割点f0,f1,…,fm,其中f0<f1<…<fm,f0,f1,…,fm是大于0的实数,m是大于0的正整数。
在一些实施例中,预测下一时间段T~T+t内处理器的频率,包括:预设m段神经网络规模,共计m+1个规模分割点n0,n1,…,nm,其中n0<n1<…<nm,n0,n1,…,nm是大于0的正整数,m是大于0的正整数。
在一些实施例中,所述预测下一时间段T~T+t内处理器的频率,包括:根据当前处理层的规模n的范围判断计算单元频率调整范围,若ni-1<n<ni,则计算单元的频率调整范围为fi-1<f<fi。
在一些实施例中,所述预测下一时间段T~T+t内处理器的频率,包括:根据当前处理层的类型,进一步缩小计算单元频率调整范围,将层的类型分为两个类型,计算密集型的层和访存密集型的层,计算密集型的层包括卷积层,访存密集型的层包括全连接层,池化层,激活层;若层的类型为计算密集型的层,则计算单元频率调整范围是(fi-1+fi)/2<f<fi;若层的类型为访存密集型,则计算单元频率调整范围是fi-1/2<f<(fi-1+fi)/2。
在一些实施例中,所述预测下一时间段T~T+t内处理器的频率,包括:根据神经网络当前时间精度,对计算单元频率进行细粒度微调:当神经网络当前精度高于预期精度时,调低计算单元的频率,当神经网络当前精度低于预期精度时,调高计算单元的频率。
在一些实施例中,所述预测下一时间段T~T+t内处理器的频率,包括:
为存储单元预设k段频率调整范围,共计k+1个频率分割点F0,F1,…,Fk,其中F0<F1<…<Fk,F0,F1,…,Fk是大于0的实数,k是大于0的正整数。
在一些实施例中,预测下一时间段T~T+t内处理器的频率时,包括:预设k段神经网络规模,共计k+1个规模分割点N0,N1,…,Nk,其中N0<N1<…<Nk,N0,N1,…,Nk是大于0的正整数,k是大于0的正整数。
在一些实施例中,预测下一时间段T~T+t内处理器的频率时,包括:根据当前处理层的规模N的范围判断存储单元频率调整范围,若
Ni-1<N<Ni,则存储单元的频率调整范围为Fi-1<F<Fi。
在一些实施例中,预测下一时间段T~T+t内处理器的频率时,包括:
根据当前处理层的类型,进一步缩小存储单元频率调整范围,将层的类型分为两个类型,计算密集型的层-卷积层和访存密集型的层-全连接层和/或池化层,计算密集型的层包括卷积层,访存密集型的层包括全连接层,池化层和激活层,若层的类型为计算密集型的层,则存储单元频率调整范围是Fi-1<F<(Fi-1+Fi)/2;若层的类型为访存密集型,则存储单元频率调整范围是(Fi-1+Fi)/2<F<Fi。
在一些实施例中,预测下一时间段T~T+t内处理器的频率时,包括:根据神经网络当前精度,对存储单元频率进行细粒度微调:当神经网络当前精度高于预期精度时,将存储单元的访存频率调低,当神经网络当前精度低于预期精度时,将存储单元的访存频率调高。
在一些实施例中,还包括:当频率由高到低调整时,先降频率,再降电压;当升高频率时,先升电压,再升频率。
在一些实施例中,预测下一时间段T~T+t内处理器的频率之后,所述方法还包括如下步骤:调整芯片的时钟设置以调整处理器的频率。
在一些实施例中,所述方法还包括:调整芯片的电源管理模块从而调整供给处理器的电压。
在一些实施例中,获取所述神经网络配置信号包括:获取所述神经网络处理的当前层类型,当前层规模和神经网络实时精度。
本公开第六方面,提供一种动态电压频率调整协处理器,包括:
信号采集单元,用于采集处理器的工作负载,还用于采集神经网络配置信号;
性能预测单元,用于接收所述神经网络配置信号,根据所述处理器当前负载,预测所述处理器下一时间段的频率和电压。
在一些实施例中,所述性能预测单元,用于预测所述处理器下一时间段的电压和频率中的频率包括:存储单元和/或计算单元的频率。
在一些实施例中,还包括频率调整单元,用于接收所述性能预测单元预测的所述处理器下一时间段的频率信号,调整处理器中存储单元和/或计算单元的频率。
在一些实施例中,还包括:电压调整单元,用于接收所述性能预测单元预测的所述处理器下一时间段的电压信号,调整所述处理器中存储单元和/或计算单元的电压。
在一些实施例中,所述性能预测单元中,在预测下一时间段的计算单元的频率时,包括:为计算单元预设m段频率调整范围,共计m+1个频率分割点f0,f1,…,fm,其中f0<f1<…<fm,f0,f1,…,fm是大于0的正整数,m是大于0的正整数。
在一些实施例中,所述性能预测单元中,在预测下一时间段的计算单元的频率时,包括:预设m段神经网络的规模,共计m+1个规模分割点n0,n1,…,nm,其中n0<n1<…<nm,n0,n1,…,nm是大于0的正整数,m是大于0的正整数。
在一些实施例中,所述性能预测单元中,在预测下一时间段的计算单元的频率时,包括:根据当前处理层的规模n的范围判断计算单元频率调整范围,若ni-1<n<ni,则计算单元的频率调整范围为fi-1<f<fi。
在一些实施例中,所述性能预测单元中,在预测下一时间段的计算单元的频率时,包括:根据当前处理层的类型,进一步缩小计算单元频率调整范围,若层的类型为计算密集型的层,则计算单元频率调整范围是(fi-1+fi)/2<f<fi;若层的类型为访存密集型,则计算单元频率调整范围是
fi-1/2<f<(fi-1+fi)/2。
在一些实施例中,所述性能预测单元中,预测处理下一时间段的计算单元的频率时,包括:根据神经网络当前精度,对计算单元频率进行细粒度微调:当神经网络当前精度高于预期精度时,调低计算单元的频率,当神经网络当前精度低于预期精度时,调高计算单元的频率。
在一些实施例中,所述性能预测单元中,在预测下一时间段的存储单元的频率时,包括:为存储单元预设k段频率调整范围,共计k+1个频率分割点F0,F1,…,Fk,其中F0<F1<…<Fk,F0,F1,…,Fk是大于0的正整数,k是大于0的正整数。
在一些实施例中,所述性能预测单元中,在预测下一时间段的存储单元的频率时,包括:预设k段神经网络的规模,共计k+1个规模分割点N0,N1,…,Nk,其中N0<N1<…<Nk,N0,N1,…,Nk是大于0的正整数,k是大于0的正整数。
在一些实施例中,所述性能预测单元中,在预测下一时间段的存储单元的频率时,包括:根据当前处理层的规模N的范围判断存储单元频率调整范围,若Ni-1<N<Ni,则存储单元的频率调整范围为Fi-1<F<Fi。
在一些实施例中,所述性能预测单元中,在预测下一时间段的存储单元的频率时,包括:根据当前处理层的类型,进一步缩小存储单元频率调整范围,若层的类型为计算密集型的层,则存储单元频率调整范围是Fi-1<F<(Fi-1+Fi)/2;若层的类型为访存密集型,则存储单元频率调整范围是(Fi-1+Fi)/2<F<Fi。
在一些实施例中,所述性能预测单元中,在确定处理下一时间段的存储单元的频率时,包括:根据神经网络当前精度,对存储单元频率进行细粒度微调。
在一些实施例中,信号采集单元中,获取神经网络配置信号包括:获取神经网络处理的当前层类型,当前层规模和神经网络实时精度。
在一些实施例中,所述性能预测单元中包括以下至少一项:先前值法预测单元,采用先前值法预测处理器下一时间段的电压和频率;移动平均负载法预测单元,采用移动平均负载法预测处理器下一时间段的电压和频率;指数加权平均法预测单元,采用指数加权平均法预测处理器下一时间段的电压和频率;
从上述技术方案可以看出,本公开第五方面和第六方面具有至少以下有益效果:
DVFS调节方法采集处理器实时负载和功耗,同时采集神经网络的拓扑结构,神经网络规模,神经网络精度需求,然后采用电压预测和频率预测方法,调整处理器的工作电压和频率,从而合理利用处理器性能、降低处理器功耗。DVFS协处理器中集成了神经网络的DVFS方法,能够充分挖掘神经网络的拓扑结构,网络规模,精度需求等特性,通过信号采集单元实时采集神经网络处理器系统负载信号,神经网络拓扑结构信号,神经网络规模信号和神经网络精度信号,通过性能预测单元预测系统所需要的电压和频率,通过频率调整单元和调整神经网络处理器的工作频率,通过电压调整单元调整神经网络处理器的工作电压,从而合理利用神经网络处理器的性能,有效降低神经网络处理器功耗。
需要说明的是,现有使用通用的图像识别装置来识别人脸图像。图像识别装置包括表情采集单元,表情识别单元。表情采集单元采集用户的表情并形成模拟信号发送给表情识别单元,表情识别单元将模拟信号转换为数字信号,再经过数据处理模块产生输出,最终做出实现预期功能的响应。然而,现有的识别人脸图像的装置及方法,其存在以下缺陷:信号的精度差,对人脸识别不精准,可移植性不够好,功能不具备好的拓展性,设计上通常针对一种或一类特定设备,不能通过机器学习等方法提高识别精度。为了解决或者至少部分缓解上述技术问题,本公开提供一种信息处理装置及方法,实现了对人脸的更精确,快速识别;支持离线运行神经网络,在没有云端服务器协助计算的情况下用户终端/前端离线即可实现人脸识别和相应控制的工作;具有很好的移植性,能够用于各种应用场景和设备,大大节省了设计成本。
本公开第七方面,提供了一种信息处理装置,包括:存储单元,用于接收并存储数据及指令;以及数据处理单元,与所述存储单元连接,用于接收所述存储单元发送的数据及指令,对所述数据中包含的关键特征进行提取和运算处理,并根据运算处理结果生成多维向量。
在一些实施例中,所述关键特征包括人脸的动作、表情及其对应的位置。
在一些实施例中,所述数据包括一个或多个图像,所述数据处理单元根据运算处理结果为每一图像生成一多维向量。
在一些实施例中,所述图像包括静态图片、组成视频的图片或视频;所述静态图片、组成视频的图片或视频包括人脸的一个或者多个部位的图像。
在一些实施例中,所述人脸的一个或者多个部位为人脸面部肌肉,嘴唇,眼部,眉毛,鼻子,额头,耳朵及其组合。
在一些实施例中,所述多维向量为情绪向量,其包括的每个元素表示人脸的一种情绪,该情绪包括愤怒,高兴,痛苦,沮丧,困倦或疑惑。
在一些实施例中,所述情绪向量的每个元素的值为0和1之间的数,数值大小表示这一元素对应的情绪出现的概率;或所述情绪向量的每个元素的值为任意大于等于0的数,数值大小表示这一元素对应的情绪的强度;或所述情绪向量的一元素值为1,其余元素的值为0,这一情绪向量表示最显著的一情绪。
在一些实施例中,所述的信息处理装置,还包括:转换模块,用于将多维向量转换为输出;该输出包括控制指令,数据,标签,或图片。
在一些实施例中,所述控制指令包括鼠标单击/双击拖动、触摸屏的单点/多点/滑动、开关的开/关、快捷键。
在一些实施例中,所述存储单元用于输入n个图像,每个图像对应一个真实情绪向量;n为大于等于1的正整数;所述数据处理单元用于接收所述n个图像,计算出与输入相同格式的输出情绪向量,即预测情绪向量,并根据预测情绪向量与真实情绪向量的对比结果更新所述信息处理装置的参数。
在一些实施例中,所述数据处理单元采用欧式距离或内积的绝对值法对所述预测情绪向量与真实情绪向量进行对比。
在一些实施例中,所述信息处理装置为人工神经网络芯片。
在一些实施例中,所述数据处理单元包括:运算单元,用于根据所述存储单元中存储的指令对所述数据执行相应的运算;所述运算单元为标量计算单元、向量计算单元和/或混合计算单元,包括:乘法器,用于将输入其中的数据相乘得到相乘之后的输出;和/或一个或多个加法器,用于将输入其中的数据相加得到输出数据,所述多个加法器构成加法树,用于进行加法树运算,即将输入其中的数据逐级相加得到输出数据;激活函数单元,用于通过激活函数运算得到激活输出数据,该激活函数包括sigmoid、tanh、relu或softmax;以及池化单元,用于将输入数据(in)通过池化运算得到池化操作之后的输出数据(out),即out=pool(in),其中pool为池化操作,池化操作包括平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。
在一些实施例中,所述存储单元用于存储数据及指令,该数据包括神经元,权值,图像,及向量;所述信息处理装置还包括:预处理单元,用于对原始输入数据,即一个或多个图像,进行预处理,得到符合人工神经网络预设参数和数据格式的图像数据,所述预处理包括:切分、高斯滤波、二值化、正则化及归一化;指令缓存单元,用于缓存指令;权值缓存单元,用于缓存权值数据;输入神经元缓存单元,用于缓存输入到运算单元的输入神经元;输出神经元缓存单元,用于缓存运算单元输出的输出神经元;控制单元,用于从所述指令缓存单元中读取指令,并将其译码成运算单元指令并输入至运算单元;直接内存存取(directmemory access,DMA),用于在所述存储单元、指令缓存单元、权值缓存单元、输入神经元缓存单元和输出神经元缓存单元中进行数据或者指令读写。
在一些实施例中,所述运算单元包括:短位浮点数模块,用于进行正向计算;该短位浮点数模块包括:浮点数据统计模块,用于对所述人工神经网络正向运算所需的各个类型的数据进行统计分析,得到指数位的长度EL;短位浮点数据转换单元,用于根据所述浮点数据统计模块得到的指数位的长度EL来实现长位数浮点数据类型向短位数浮点数据类型的转换;以及短位浮点数据运算模块,用于在所述浮点数据转换单元将所有所述人工神经网络正向运算中所需的输入、权值和/或偏置数据均采用短位数浮点数据类型表示之后,对所述短位数浮点数据进行人工神经网络正向运算。
在一些实施例中,所述浮点数据统计模块还用于对所述人工神经网络正向运算所需的各个类型的数据进行统计分析,得到指数位偏移量offset;所述短位浮点数据转换单元还用于根据所述浮点数据统计模块得到的所述指数位偏移量offset及指数位的长度EL来实现长位数浮点数据类型向短位数浮点数据类型的转换。
在一些实施例中,所述短位浮点数据转换单元包括:运算缓存单元,用于存储所述正向运算的中间结果;数据转换单元,用于将所述运算缓存单元中的数据转换为短位数浮点数据;以及舍入单元,用于对超出短位浮点精度范围的数据进行舍入操作。
在一些实施例中,所述舍入单元包括随机舍入单元、四舍五入单元、向上舍入单元、向下舍入单元以及截断舍入单元。
在一些实施例中,所述随机舍入单元执行如下操作:
式中,y表示随机舍入后的短位浮点数据,x表示随机舍入前的32位浮点数据,ε为当前短位数浮点数据表示格式所能表示的最小正整数,即2offset-(X-1-EL),表示对原数据x直接截得短位数浮点数据所得的数,w.p.表示概率,即随机舍入获得的数据y为的概率为为的概率为
所述四舍五入单元执行如下操作:
式中,y表示四舍五入后的短位浮点数据,x表示四舍五入前的长位浮点数据,ε为当前短位数浮点数据表示格式所能表示的最小正整数,即2offset-(X-1-EL),为ε的整数倍,其值为小于或等于x的最大数;
所述向上舍入单元执行如下操作:
式中,y表示向上舍入后的短位浮点数据,x表示向上舍入前的长位浮点数据,为ε的整数倍,其值为大于或等于x的最小数,ε为当前短位数浮点数据表示格式所能表示的最小正整数,即2offset-(X-1-EL);
所述向下舍入单元执行如下操作:
式中,y表示向上舍入后的短位浮点数据,x表示向上舍入前的长位浮点数据,为ε的整数倍,其值为小于或等于x的最大数,ε为当前短位数浮点数据表示格式所能表示的最小正整数,即2offset-(X-1-EL);
所述截断舍入单元执行如下操作:
y=[x];
式中,y表示截断舍入后的短位浮点数据,x表示截断舍入前的长位浮点数据,[x]表示对原数据x直接截得短位数浮点数据所得的数。
根据本公开的另一个方面,还提供了一种终端,包括所述的信息处理装置,还包括图像采集装置;所述终端包括台式电脑,智能家居,交通工具或便携式电子设备。
根据本公开的另一个方面,还提供了一种云服务器,包括所述的信息处理装置。
本公开第八方面,还提供了一种信息处理方法,包括:存储单元接收并存储数据及指令;以及数据处理单元接收所述存储单元发送的数据及指令,对所述数据中包含的关键特征进行提取和运算处理,并根据运算处理结果生成多维向量。
在一些实施例中,所述关键特征包括人脸的动作、表情及其对应的位置。
在一些实施例中,所述数据包括一个或多个图像,所述数据处理单元根据运算处理结果为每一图像生成一多维向量。
在一些实施例中,所述图像包括静态图片、组成视频的图片或视频;所述静态图片、组成视频的图片或视频包括人脸的一个或者多个部位的图像。
在一些实施例中,所述人脸的一个或者多个部位为人脸面部肌肉,嘴唇,眼部,眉毛,鼻子,额头,耳朵及其组合。
在一些实施例中,所述多维向量为情绪向量,其包括的每个元素表示人脸的一个情绪,该情绪包括愤怒,高兴,痛苦,沮丧,困倦或疑惑。
在一些实施例中,所述情绪向量的每个元素的值为0和1之间的数,该值表示这一元素对应的情绪出现的概率;或所述情绪向量的每个元素的值为任意大于等于0的数,该值表示这一元素对应的情绪的强度;或所述情绪向量的一元素值为1,其余元素的值为0,这一情绪向量表示最显著的一情绪。
在一些实施例中,所述的信息处理方法,还包括:转换模块将所述多维向量转换为输出;该输出包括控制指令,数据,标签,或图片。
在一些实施例中,所述控制指令包括鼠标单击/双击拖动、触摸屏的单点/多点/滑动、开关的开/关、快捷键。
在一些实施例中,将n个图像输入存储单元,每个图像对应一个真实情绪向量;n为大于等于1的正整数;数据处理单元接收存储单元发送的所述n个图像,计算出与输入相同格式的输出情绪向量,即预测情绪向量,并将所述预测情绪向量与真实情绪向量对比,根据对比结果更新所述信息处理方法的参数。
在一些实施例中,所述数据处理单元采用欧式距离或内积的绝对值法对所述预测情绪向量与真实情绪向量进行对比。
在一些实施例中,数据处理单元的运算单元根据所述存储单元中存储的指令对所述数据执行相应的运算:执行乘法运算,将输入神经元和权值数据相乘;执行加法运算,将所述乘法运算结果通过加法树逐级相加,得到加权和,选择性的对加权和加偏置;执行激活函数运算,得到输出神经元,所述激活函数为sigmoid函数、tanh函数、ReLU函数或softmax函数;执行池化运算,out=pool(in),其中pool为池化操作,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。
在一些实施例中,所述的信息处理方法还包括:预处理单元对原始输入数据,即一个或多个图像,进行预处理,得到与芯片所使用的人工神经网络的位于最底层的输入层规模相契合的图像数据,其中,所述预处理包括:切分、高斯滤波、二值化、正则化、归一化;输入数据经预处理单元传入存储单元或直接传入存储单元,指令传入存储单元,其中,所述该数据包括神经元,权值,图像,及向量;DMA接收所述存储单元发送的数据,将其分批传入相应的指令缓存单元,输入神经元缓存单元及权值缓存单元;控制单元从所述指令缓存单元中读取指令并进行译码;运算单元接收译码后的指令并根据指令执行相应的运算;运算单元执行神经网络运算至所有数据运算完毕,得到最终运算结果;该最终运算结果由神经网络最后一层的输出神经元得到,神经网络的最终输出层每个神经元对应所述情绪向量的一个元素;将所述最终运算结果传入输出神经元缓存单元中;输出神经元缓存单元将最终运算结果传入DMA,经DMA返回存储单元。
在一些实施例中,运算单元采用短位浮点数模块进行正向计算。
在一些实施例中,所述运算单元采用短位浮点数模块进行正向计算包括:浮点数据统计模块对所述人工神经网络正向运算所需的各个类型的数据进行统计分析,得到指数位的长度EL;短位浮点数据转换单元根据所述浮点数据统计模块得到的指数位的长度EL来实现长位数浮点数据类型向短位数浮点数据类型的转换;以及短位浮点数据运算模块在所述浮点数据转换单元将所有所述人工神经网络正向运算中所需的输入、权值和/或偏置数据均采用短位数浮点数据类型表示之后,对所述短位数浮点数据进行人工神经网络正向运算。
在一些实施例中,浮点数据统计模块对所述人工神经网络正向运算所需的各个类型的数据进行统计分析,得到指数位偏移量offset;短位浮点数据转换单元根据所述浮点数据统计模块得到的所述指数位偏移量offset及指数位的长度EL实现长位数浮点数据类型向短位数浮点数据类型的转换。
在一些实施例中,所述短位浮点数据转换单元根据所述浮点数据统计模块得到的所述指数位偏移量offset及指数位的长度EL实现长位数浮点数据类型向短位数浮点数据类型的转换的步骤包括:运算缓存单元存储正向运算的中间结果;数据转换单元将运算缓存单元中的数据转换为短位数浮点数据;以及舍入单元完成对超出短位浮点精度范围的数据进行舍入操作。
在一些实施例中,所述舍入单元包括随机舍入单元、四舍五入单元、向上舍入单元、向下舍入单元以及截断舍入单元。
在一些实施例中,所述随机舍入单元执行如下操作:
式中,y表示随机舍入后的短位浮点数据,x表示随机舍入前的32位浮点数据,ε为当前短位数浮点数据表示格式所能表示的最小正整数,即2offset-(X-1-EL),表示对原数据x直接截得短位数浮点数据所得的数,w.p.表示概率,即随机舍入获得的数据y为的概率为为的概率为
所述四舍五入单元执行如下操作:
式中,y表示四舍五入后的短位浮点数据,x表示四舍五入前的长位浮点数据,ε为当前短位数浮点数据表示格式所能表示的最小正整数,即2offset-(X-1-EL),为ε的整数倍,其值为小于或等于x的最大数;
所述向上舍入单元执行如下操作:
式中,y表示向上舍入后的短位浮点数据,x表示向上舍入前的长位浮点数据,为ε的整数倍,其值为大于或等于x的最小数,ε为当前短位数浮点数据表示格式所能表示的最小正整数,即2offset-(X-1-EL);
所述向下舍入单元执行如下操作:
式中,y表示向上舍入后的短位浮点数据,x表示向上舍入前的长位浮点数据,为ε的整数倍,其值为小于或等于x的最大数,ε为当前短位数浮点数据表示格式所能表示的最小正整数,即2offset-(X-1-EL);
所述截断舍入单元执行如下操作:
y=[x];
式中,y表示截断舍入后的短位浮点数据,x表示截断舍入前的长位浮点数据,[x]表示对原数据x直接截得短位数浮点数据所得的数。
从上述技术方案可以看出,本发明第七方面和第八方面至少具有以下有益效果其中之一:(1)本公开信息处理装置,利用数据处理单元对数据中包含的关键特征进行提取和运算处理,并根据运算处理结果生成多维向量,实现了对人脸的精确,快速识别。(2)信息处理装置采用人工神经网络芯片,对人脸的识别更精确,快速。(3)人工神经网络芯片计算能力强大,支持离线运行神经网络,在没有云端服务器协助计算的情况下用户终端/前端离线即可实现人脸识别和相应控制的工作。当芯片联网,获得云端服务器协助计算的时候,芯片计算能力更加强大。(4)通过对神经网络输入层和最终输出层的设计,实现了对人脸情绪的识别。设计允许整个装置功能可拓展,即通过改变输入输出层的结构或定义来配置具体的功能,使得装置和方法具有很好的移植性,能够用于各种应用场景和设备,大大节省了设计成本。(5)芯片的自适应性训练使得芯片具有较高的初始精度,同时积累用户的数据自我学习,会逐渐适应用户的脸部特征,不断提高准确率。(6)人工神经网络芯片中,采用专用的片上缓存(即指令缓存、输入神经元缓存、输出神经元缓存和权值缓存)和专用的人工神经网络运算、访存指令能有效提高运算、访存效率。(7)人工神经网络芯片中,运算单元采用的加法树运算能对多组权值和输入神经元并行处理,有效提高运算效率。(8)采用预处理单元,能使输入数据更适于人工神经网络处理,去除输入数据中的噪声和冗余,提高分类、识别精度等。(9)采用短位浮点数运算单元能够有效减少计算开销,节省运算时间和功耗。
需要说明的是,深度神经网络是目前许多人工智能应用的基础,其在语音识别、图像处理、数据分析、广告推荐系统、汽车自动驾驶等多方面得到了突破性的应用,使得深度神经网络被应用在了生活的各个方面。但是,深度神经网络的运算量巨大,一直制约着其更快速的发展和更广泛的应用。当考虑运用处理器设计来加速深度神经网络的运算时,巨大的运算量,必然会带了很大的能耗开销,同样制约着处理器的进一步的广泛应用。为了解决神经网络算法计算量巨大,运算耗时过长的问题,神经网络的硬件处理器应运而生。由于处理器针对某种配置或者某种目的而进行设计的,从而能够获得较高的加速比、较低的能耗。然后处理器的可扩展性较低,其结构无法随着计算需求的改变而进行改变。为了解决或者至少部分缓解上述技术问题,本公开还提供了一种运算装置及方法,其为可在线配置的神经网络运算装置及方法,能够有效的对神经网络算法进行加速,并且耗能较低;同时可以根据计算需求的不同来进行在线配置,从而提高了处理器的各组成部件的利用率,扩展了处理器的应用范围,具有较高的灵活性和一定的可扩展性。
本公开第九方面,提供了一种运算装置,包括:控制模块;以及运算模块,其包括多个运算单元;其中,所述控制模块,用于发送指令给所述多个运算单元并控制运算单元之间的数据传递。
在一些实施例中,每个所述运算单元用于接收所述指令,并根据指令将待运算数据或中间结果沿一个或多个的方向传递至该运算单元之外的运算单元。
在一些实施例中,所述方向包括向左/右相邻或不相邻的运算单元传递方向、向上/下相邻或不相邻的运算单元传递方向、沿对角线相邻或不相邻的运算单元传递方向。
在一些实施例中,所述沿对角线相邻或不相邻的运算单元传递方向包括左上对角线、左下对角线、右上对角线、右下对角线相邻或不相邻的运算单元传递方向。
在一些实施例中,所述的运算装置还包括:存储模块,其包括数据存储单元和临时缓存,用于将待运算的数据或中间结果存储到同一个区域或分开存储。
在一些实施例中,所述控制模块包括,存储控制单元,用于控制存储模块存储或读取所需的数据;以及,运算控制单元,用于对运算单元内部的运算方式及运算单元间的数据传递进行控制。
在一些实施例中,每个运算单元包括多个输入端口,该多个输入端口包括用于接收存储模块传来的数据的端口以及用于接收所述其他运算单元传来的数据的端口。
在一些实施例中,每个运算单元还包括输出端口,用于将数据传送回存储模块或者传递给指定的运算单元。
在一些实施例中,每个运算单元包括至少一个乘法器、至少一个加法器。
在一些实施例中,每个运算单元还包括至少一个存储器。
在一些实施例中,所述运算模块包括N*N个运算单元和1个ALU,该N*N个运算单元之间数据传递方向为S形,N为正整数。
在一些实施例中,所述N*N个运算单元中的各运算单元用于将接收的神经元数据,并将该神经元数据和本运算单元存储器中对应的突触权值数据进行相乘得到乘积结果;所述N*N个运算单元中的第2至第N*N运算单元还分别用于接收各自前一运算单元传递的运算结果,并将该运算结果与本单元的乘积结果相加;所述ALU用于接收第N*N个运算单元传递的运算结果并进行激活运算。
在一些实施例中,所述运算模块包括N*N个运算单元和N-1个ALU,所述N*N运算单元用于沿不同的方向传递运算数据,N为正整数。
在一些实施例中,所述N*N个运算单元呈N行N列的阵列排布,第1列的运算单元用于接收从所述存储模块传来的待运算数据完成平方操作,并向右和向右对角线相邻的运算单元传递平方值;第1行的运算单元用于接收从存储模块传来的待运算数据完成平方操作,并向右对角相邻的运算单元传递平方值;第N列的运算单元用于接收来自左对角和左向的数据并完成累加;所述ALU用于接收第N*N个运算单元传递的运算结果并进行指数操作。
本公开第十方面,提供了一种运算方法,包括:控制模块发送指令;以及运算模块的多个运算单元接收所述指令,并根据指令进行数据传递。
在一些实施例中,每个所述运算单元接收所述指令,并根据指令将待运算数据或中间结果沿一个或多个的方向传递至该运算单元之外的其他运算单元。
在一些实施例中,所述方向包括向左/右相邻或不相邻的运算单元传递方向、向上/下相邻或不相邻的运算单元传递方向、沿对角线相邻或不相邻的运算单元传递方向。
在一些实施例中,所述沿对角线相邻或不相邻的运算单元传递方向包括左上对角线、左下对角线、右上对角线、右下对角线相邻或不相邻的运算单元传递方向。
在一些实施例中,控制模块的存储控制单元控制存储模块读取待运算的神经元数据等待传递,以及读取突触权值数据并将突触权值数据分别保存到各运算单元中的存储器;控制模块的运算控制单元发出待运算的运算信号给各运算单元,初始化各运算单元。
在一些实施例中,控制模块的存储控制单元发出指令,存储模块将待运算的神经元数据传递给各运算单元;控制模块的运算控制单元发出指令,各个运算单元接收所述神经元数据,并将该神经元数据和本运算单元存储器中对应的突触权值数据进行相乘,得到乘积结果。
在一些实施例中,N*N阵列排布的运算单元中,第1行第1列的运算单元将运算结果向右传递给第1行第2列的运算单元,第1行第2列的运算单元将接收到的运算结果和本单元的运算乘积相加,得到部分和,再向右传递,直至传递至第N行第N列的运算单元,形成S型传递路线,使部分和累加,N为正整数。
在一些实施例中,运算模块中的ALU接收所述累加结果,并进行激活运算,之后将激活运算结果写回存储模块。
在一些实施例中,每个运算单元接收其前一运算单元的运算结果,并将该运算结果和本单元的运算乘积相加,得到部分和,再向后传递。
在一些实施例中,所述多个运算单元按S型路线传递并累加部分和。
在一些实施例中,运算模块的ALU在累加之后接收所述多个运算单元的运算结果,并进行激活运算。
在一些实施例中,将激活运算结果写到存储模块。
在一些实施例中,在计算LRN层时,多个运算单元对输入数据的平方的累加,ALU对累加结果指数操作。
在一些实施例中,运算模块的第1列的运算单元接收从存储模块传来的待运算数据,完成平方操作后向右和右下相邻的运算单元传递平方值;运算模块的第1行的运算单元接收从存储模块传来的待运算数据,完成平方操作后向右下相邻的运算单元传递平方值;运算模块的第N列的运算单元接收来自左上和左侧的数据后,完成累加,N为正整数。
在一些实施例中,运算模块的除第1行、第1列及第N列之外的运算单元接收来自左上相邻的运算单元传来的数据后向右下相邻的运算单元传递,同时将该数据与从左相邻的运算单元传来的数据进行累加,将累加后的和向右侧传递。
在一些实施例中,若所有累加完成,则运算模块的第N列的运算单元则向右将累加结果传递给ALU完成指数操作。
从上述技术方案可以看出,本公开第九方面和第十方面至少具有以下有益效果其中之一:(1)本公开可在线配置的神经网络运算装置及方法,能够有效的对神经网络算法进行加速,并且耗能较低。(2)本公开可在线配置的神经网络运算装置及方法,可以根据计算需求的不同来进行在线配置,从而提高了处理器的各组成部件的利用率,扩展了处理器的应用范围,具有较高的灵活性和一定的可扩展性。
附图说明
图1为本公开数据处理装置的结构示意图。
图2为本公开数据处理方法的流程图。
图3为本公开一实施例数据处理装置的结构示意图。
图4为本公开一实施例任务配置信息存储单元的结构示意图。
图5为本公开一实施例数据处理方法的流程图。
图6和图7为本公开另一实施例数据处理装置的结构示意图。
图8为本公开另一实施例数据处理装置的结构示意图。
图9为本公开一实施例数据处理装置的数据缓存的结构示意图。
图10为本公开另一实施例数据处理方法的流程图。
图11为本公开一实施例提供的神经网络运算单元的结构示意图。
图12为本公开另一实施例提供的神经网络运算单元的结构示意图。
图13为本公开另一实施例提供的神经网络运算单元的结构示意图。
图14为本公开一实施例中数据冗余方法的流程图。
图15为本公开另一实施例数据冗余装置的结构框图。
图16为本公开一实施例神经网络处理器。
图17是本公开一实施例的动态电压频率调整方法流程图。
图18是本公开另一实施例的动态电压频率调整方法流程图。
图19是本公开实施例的动态电压频率调整方法示意框图。
图20是本公开一实施例的动态电压频率调整协处理器原理图。
图21是本公开另一实施例的动态电压频率调整协处理器原理图。
图22为本公开一实施例的信息处理装置的功能模块示意图。
图23为本公开一实施例作为信息处理装置的人工神经网络芯片示意图。
图24为本公开一实施例作为信息处理装置的人工神经网络芯片示意图。
图25为本公开一实施例作为信息处理装置的人工神经网络芯片示意图。
图26为本公开一实施例作为信息处理装置的人工神经网络芯片示意图。
图27为本公开一实施例作为信息处理装置的人工神经网络芯片示意图。
图28为本公开一实施例短位浮点数据转换单元的功能模块示意图。
图29是本公开一实施例的运算装置功能模块示意图。
图30是本公开一实施例的运算装置功能模块示意图。
图31是本公开一实施例的运算装置功能模块示意图。
图32是本公开一实施例的运算装置功能模块示意图。
图33是本公开一实施例的运算模块示意图。
具体实施方式
本公开提供了一种数据处理装置,当有任务信息被配置且输入到其中时,其与外部装置比如处理器核完成交互,自动实现处理器核的任务的执行,以实现自启动。
如图1所示,该数据处理装置包括自启动任务队列装置,如图1所示,自启动任务队列装置包括任务配置信息存储单元和任务队列配置单元,其中,
任务配置信息存储单元用于存储任务的配置信息,配置信息包括但不限于任务的开始标志、结束标志、任务的优先级、任务的启动方式等。
任务队列配置单元用于根据任务配置信息存储单元的配置信息对任务队列进行配置,完成动态地任务配置和对外通信。
自启动任务队列装置用于配合外部装置工作,接收外部装置发来的配置信息,对任务队列进行配置,外部装置根据配置后的任务队列执行各个任务,期间自启动任务队列装置与外部装置交互通信。
参见图2,显示了自启动任务队列装置的工作流程,作为本公开的一种数据处理方法,包括:
步骤S201:外部装置将启动参数发送给自启动任务队列装置。
启动参数存储至自启动任务队列装置的任务配置信息存储单元中,启动参数包括启动信息和启动命令,启动信息可以是上述配置信息。
步骤S202:任务队列配置单元根据启动参数配置任务队列,并将经过配置的任务队列发送至外部装置。
步骤S203:外部装置执行任务队列中的任务,每执行完一个任务向任务配置信息存储单元发送一个第一结束信号。
步骤S204:任务配置信息存储单元每接收到一个第一结束信号向外部装置发送一中断信号,外部装置处理中断信号并发送第二结束信号给任务配置信息存储单元。
针对任务队列中的每一任务执行步骤S203和S204,直到任务队列中的任务全部完成。
其中,任务配置信息存储单元收到第一结束信号后,可以修改其中存储的任务配置信息,以实现对任务的调度。
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
本公开一实施例提供了一种数据处理装置,如图3所示,该数据处理装置还包括处理器核,处理器核作为外部装置与自启动任务队列装置配合工作。
输入自启动任务队列装置的配置信息包括任务的启动模式和优先级等。处理器核执行的任务有多种,根据任务本身的性质和应用场景可以将任务分为不同的任务队列,例如高优先级队列和低优先级队列。任务的启动模式包括自启动和普通启动。
在本实施例中,参见图4,任务配置信息存储单元包括第一存储单元和第二存储单元,根据配置信息分别将任务分配到第一存储单元和第二存储单元,第一存储单元存储高优先级任务队列,第二存储单元存储低优先级任务队列,任务队列中的任务可按照各自的启动模式来完成任务的启动执行。
以上仅是示例性说明,本公开并不以此为限,在其他示例中,也可以不根据优先级而根据任务的其他参数配置任务队列,并且任务队列的数量也不限于两个,也可以是多个,相应地存储单元的也可以是多个。
参见图5,显示了上述实施例的自启动任务队列装置的工作流程,作为本公开另一实施例的数据处理方法,包括:
步骤S501:处理器核将任务队列的配置信息发送给自启动任务队列装置。
步骤S502:任务队列配置单元根据配置信息配置任务队列,并将经过配置的任务队列发送至处理器核。
在该步骤中,第一存储单元将存储的高优先级任务队列发送至处理器核,第二存储单元将存储的低优先级任务队列发送至处理器核。
步骤S503:处理器核执行任务队列中的任务,每执行完一个任务向任务配置信息存储单元发送一个第一结束信号,完成任务队列配置。
步骤S504:任务配置信息存储单元每接收到一个第一结束信号向处理器核发送一中断信号,处理器核处理中断信号并发送第二结束信号给任务配置信息存储单元,任务队列自启动完成。
在本公开中,外部装置还可以是多个,例如多个处理器核,处理器核可以是各种运算模块、控制模块等。
本公开另一实施例的数据处理装置,为了达到简要说明的目的,上述实施例中任何可作相同应用的技术特征叙述皆并于此,无需再重复相同叙述。
参见图6和图7,该数据处理装置的处理器核包括一控制模块和一神经网络运算模块。神经网络运算模块包括控制单元、神经网络运算单元和存储单元。
存储单元,用于存储神经网络运算的数据和指令,其中所述数据包括输入神经元、输出神经元、权值、评分、错误模式判断结果等,所述指令包括神经网络运算中加法、乘法、激活等各种运算指令。
控制单元用于控制存储单元和神经网络运算单元的动作。
神经运算单元,在控制单元的控制下,根据所述存储单元中存储的指令对所述数据执行神经网络计算。
控制模块用于提供任务的配置信息。
控制模块和神经网络运算模块各相当于一个处理器核。控制模块将任务队列的配置信息发送给自启动任务队列装置。自启动队列装置接收到配置信息后,任务队列配置单元根据配置信息配置任务队列,将各个任务队列存储至其各个存储单元,并将各个任务队列发送至神经网络运算模块的控制单元。控制单元会监测自启动任务队列装置的配置,将存储单元的神经网络运算指令配置到正确的位置,即将存储单元中外部存储模块的指令输入到指令存储模块中,如图7所示,控制单元控制神经网络运算单元和存储单元根据配置信息执行各个任务,任务执行的过程需要神经网络运算单元和存储单元协作完成。
控制单元每执行完一个任务向任务配置信息存储单元发送一个第一结束信号,完成任务队列配置。自启动任务队列装置每接收控制单元的一个第一结束信号后修改内部的配置信息,并发送中断信号到控制单元,控制单元处理中断信号后发送第二结束信号到自启动任务队列装置。
通常将存储单元的神经网络运算指令配置到正确位置的操作需要控制单元启动后发送取指指令来完成,即控制单元通常包括取指指令缓存模块,而在本公开中控制单元并不需要发送取指指令,也即控制单元可以去除取指指令缓存模块,装置的结构得以精简,成本降低并节约资源。
在本实施例的数据处理装置中,参见图8,还包括数据缓存、指令缓存和DMA,存储单元经DMA连接指令缓存和数据缓存,指令缓存连接控制单元,数据缓存连接运算单元。
存储单元接收输入数据,将其中的神经网络运算数据和指令通过DMA分别传输至数据缓存和指令缓存。
数据缓存,用于缓存神经网络运算数据。更具体的,如图9所示,数据缓存包括输入神经元缓存,权值缓存、输出神经元缓存,分别用于缓存DMA发送的输入神经元、权值、输出神经元。数据缓存进一步还可以包括评分缓存和错误模式判断结果缓存等,用于缓存评分和错误模式判断结果,并将上述数据发送至运算单元。
指令缓存,用于缓存神经网络运算指令,神经网络运算的加法、乘法、激活等指令经DMA存储至指令缓存。
控制单元,用于从指令缓存中读取神经网络运算指令,并将其译码成运算单元可执行的指令并发送至运算单元。
神经网络运算单元,用于根据可执行指令对神经网络运算数据执行相应的神经网络计算,运算过程中的中间结果以及最终结果可缓存至数据缓存,并经DMA存储至存储单元,作为输出数据输出。
参见图10,显示了上述实施例的自启动任务队列装置的工作流程,作为本公开另一实施例的数据处理方法,包括:
步骤S901:控制模块将任务队列的配置信息发送给自启动任务队列装置。
步骤S902:任务队列配置单元根据配置信息配置任务队列,并将经过配置的任务队列发送至神经网络运算模块。
自启动队列装置接收到配置信息后,任务队列配置单元根据配置信息配置任务队列,将各个任务队列存储至其各个存储单元,并将各个任务队列发送至神经网络运算模块的控制单元。
步骤S903:控制单元监测自启动任务队列装置的配置,控制神经网络运算单元和存储单元根据配置信息执行任务队列中的任务,每执行完一个任务向任务配置信息存储单元发送一个第一结束信号,完成任务队列配置。
步骤S904:自启动任务队列装置每接收到控制单元的一个第一结束信号后发送中断信到控制单元,控制单元处理中断信号后发送第二结束信号到自启动任务队列装置。
步骤S903中的控制单元控制神经网络运算单元和存储单元根据配置信息执行各个任务可以包括:
控制单元根据配置信息从存储单元读取神经网络运算指令,神经网络运算指令经DMA存储至指令缓存;
控制单元从指令缓存中读取神经网络运算指令,并将其译码成运算单元可执行的指令并发送至运算单元;
神经网络运算单元从数据缓存读取神经网络运算数据,根据可执行指令对神经网络运算数据执行相应的神经网络计算,将运算结果存储至数据缓存和/或存储单元。
在本实施例中,神经网络运算包括输入神经元与权值向量相乘、加偏置后激活得到输出神经元。在一个示例中,神经网络运算单元包括一个或多个运算部件,运算部件例如但不仅限于是一个或多个乘法器、一个或多个加法器和一个或多个激活函数单元。
乘法器将输入数据1(in1)和输入数据2(in2)相乘得到输出(out),该过程为:out=in1*in2。
优选的,神经网络运算单元包括多个加法器,多个加法器组成加法树。加法树将输入数据(in1)通过逐级相加得到输出数据(out),其中in1是一个长度为N的向量,N大于1,该过程为:out=in1[1]+in1[2]+...+in1[N];和/或将输入数据(in1)累加之后和输入数据(in2)相加得到输出数据(out),该过程为:out=in1[1]+in1[2]+...+in1[N]+in2,或者将输入数据(in1)和输入数据(in2)相加得到输出数据(out),该过程为:out=in1+in2。
激活函数单元将输入数据(in)通过激活函数(active)运算得到激活输出数据(out),该过程为:out=active(in),激活函数(active)例如但不限于sigmoid、tanh、relu、softmax等。除了做激活操作,激活函数单元还可以实现其他的非线性运算,可将输入数据(in)通过运算(f)得到输出数据(out),该过程为:out=f(in)。运算部件还可以是池化单元,池化单元将输入数据(int)通过池化运算得到池化操作之后的输出数据(out),过程为out=pool(in),其中pool为池化操作,池化操作包括但不限于:平均值池化、最大值池化、中值池化,输入数据in是和输出数据out相关的一个池化核中的数据。
相应地,神经网络运算包括但不仅限于:乘法运算、加法运算和激活函数运算。乘法运算是将所述输入数据1和输入数据2相乘,得到相乘之后的数据;和/或加法运算用于将输入数据1通过加法树逐级相加,或者将输入数据(in1)累加之后和输入数据(in2)相加,或者将输入数据1和输入数据2相加得到输出数据;和/或激活函数运算对输入数据通过激活函数(active)运算得到输出数据;和/或池化运算,out=pool(in),其中pool为池化操作,池化操作包括但不限于:平均值池化、最大值池化、中值池化,输入数据in是和输出数据out相关的一个池化核中的数据。以上几种运算可以自由选择一或多种进行不同顺序的组合,从而实现各种不同功能的运算。
在另一个示例中,神经网络运算单元包括但不仅限于:多个PE和一或多个ALU。每个PE包含一个乘法器、一个加法器、一个比较器和一个寄存器/寄存器组。每个PE能够接受来自各个方向的PE传来的数据,例如接受来自水平方向(如右边)和/或垂直方向(如下面)的PE传来的数据,同时能够向相反的水平方向(如左边)和/或相反的垂直方向(如上面)的PE传递数据;和/或每个PE能够接受来自对角线方向的PE传来的数据,同时能够向相反的水平方向的对角线的PE传递数据。每个ALU可以完成激活操作、乘法、加法等基本运算和其他非线性运算。
相应地,所述神经网络运算单元执行的运算包括PE执行的运算和ALU执行的运算。PE将输入数据1和输入数据2相乘,与寄存器内保存的数据或其他PE中传来的数据进行相加,写回寄存器或写回存储部分中,同时将某个输入数据或者运算结果传递给其他PE中;和/或PE将输入数据1和输入数据2或寄存器内保存的数据进行累加或比较。ALU完成激活运算或非线性运算。
当神经网络运算单元处理卷积、全连接等运算时,对每个PE而言,可以将输入数据1(in1)和输入数据2(in2)相乘得到相乘之后的输出(out1),过程为:out1=in1*in2;将寄存器中的数据取出(data)和相乘的结果(out1)累加,得到结果(out2)out2=out1+data;Out2可以被写回寄存器/寄存器组或写回存储部分。同时,可以将某个输入数据(in1/in2)向水平方向或竖直方向传递。
当神经网络运算单元处理向量内积时,对每个PE而言,可以将输入数据1(in1)和输入数据2(in2)相乘得到相乘之后的输出(out1),过程为:out1=in1*in2;将从其他PE传入来的数据(data)和相乘的结果(out1)累加,得到结果(out2)out2=out1+data;而后可以将运算结果(out2)向水平方向或竖直方向传递。
当神经网络运算单元处理池化运算时,对每个PE而言,还可以跳过乘法部分,直接利用加法器或比较器完成池化运算,out=pool(in),其中pool为池化操作,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据,中间产生的临时数据可以保存在寄存器中。
ALU用于完成激活操作、乘法、加法等基本运算或非线性运算。激活操作即为将输入数据(in)通过激活函数(active)运算得到激活输出数据(out),过程为:out=active(in),激活函数active可以是sigmoid、tanh、relu、softmax等;其他的非线性运算,即可将将输入数据(in)通过运算(f)得到输出数据(out),过程为:out=f(in)。
在一些实施例中,神经网络运算单元可以如图11所示,包括一个主处理电路和多个从处理电路。所述运算单元包括:树型模块,所述树型模块包括:一个根端口和多个支端口,所述树型模块的根端口连接所述主处理电路,所述树型模块的多个支端口分别连接多个从处理电路中的一个从处理电路;所述树型模块,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令。
树型模块可以为n叉树结构,如图11所示的结构是二叉树结构,当然也可以为三叉树结构,该n可以为大于等于2的整数。本申请具体实施方式并不限制上述n的具体取值,上述层数也可以为2,从处理电路可以连接除倒数第二层节点以外的其他层的节点,例如可以连接如图11所示的倒数第一层的节点。
在一些实施例中,神经网络运算单元可以如图12所示,包括一个主处理电路、多个从处理电路、和分支处理电路。所述主处理电路,具体用于将任务队列中的任务分配成多个数据块,将所述多个数据块中的至少一个数据块、权值以及多个运算指令中的至少一个运算指令发送给所述分支处理电路;
所述分支处理电路,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令;
所述多个从处理电路,用于依据该运算指令对接收到的数据块以及权值执行运算得到中间结果,并将中间结果传输给所述分支处理电路;
所述主处理电路,用于将分支处理电路发送的中间结果进行后续处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
在一些实施例中,神经网络运算单元可以如图13所示,包括一个主处理电路、和多个从处理电路。所述多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,所述主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个基础电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路;
所述K个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发;
所述主处理电路,用于将一个输入数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述K个从处理电路;
所述K个从处理电路,用于转换所述主处理电路与所述多个从处理电路之间的数据;
所述多个从处理电路,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述K个从处理电路;
所述主处理电路,用于将所述K个从处理电路发送的中间结果进行后续处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。以上仅是示例性的说明,但本发明并不限于此,上述神经网络运算单元可以用非神经网络运算单元代替,非神经网络运算单元例如是通用运算单元,通用运算具有相应的通用运算指令和数据,其运算过程与神经网络运算类似,通用运算可以是例如标量算数运算、标量逻辑运算等,通用运算单元例如但不仅限于包括一个或多个乘法器、一个或多个加法器,执行例如加法、乘法等基本运算。
在一些实施例中,所述主处理电路,具体用于将多个从处理电路发送的中间结果进行组合排序得到该计算指令的结果;
在一些实施例中,主处理电路,具体用于将多个处理电路的发送的中间结果进行组合排序以及激活处理后得到该计算指令的结果。
在一些实施例中,所述主处理电路包括:转换处理电路、激活处理电路、加法处理电路中的一种或任意组合;
所述转换处理电路,用于对所述数据执行前序处理,具体为:将主处理电路接收的数据或中间结果执行第一数据结构与第二数据结构之间的互换;或将主处理电路接收的数据或中间结果执行第一数据类型与第二数据类型之间的互换;
所述激活处理电路,用于执行所述后续处理,具体为执行主处理电路内数据的激活运算;
所述加法处理电路,用于执行所述后续处理,具体为执行加法运算或累加运算。
在一些实施例中,所述从处理电路包括:乘法处理电路;
所述乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果。
在一些实施例中,所述从处理电路还包括:累加处理电路,所述累加处理电路,用于对该乘积结果执行累加运算得到该中间结果。
在一些实施例中,所述树型模块为n叉树结构,所述n为大于等于2的整数。
本公开另一实施例提供了一种芯片,其包括了上述实施例的数据处理装置。
本公开另一实施例提供了一种芯片封装结构,其包括了上述实施例的芯片。
本公开另一实施例提供了一种板卡,其包括了上述实施例的芯片封装结构。
本公开另一实施例提供了一种电子装置,其包括了上述实施例的板卡。该电子装置包括、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
在本公开中,所有的单元和模块都可以是硬件结构,硬件结构的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管、忆阻器、DNA计算机。
本公开提供了一种数据冗余方法,通过将数据划分为多个重要等级,并针对不同的重要等级的数据进行不同的数据冗余处理,在保证存储数据的安全性和可靠性的基础上,减少存储容量开销和访存功耗开销。
具体的,图14示出了数据冗余方法的流程图,如附图14所示,数据冗余方法包括以下具体步骤:
步骤S101:将数据划分为M个重要等级,M为正整数;
具体地,数据的重要等级可以综合考虑数据的大小,数据绝对值的大小,数据的类型(浮点型、定点型),数据的读操作频率,数据写操作频率等因素进行设置。
步骤S102:提取每一重要等级中的每一数据的重要比特位;
具体地,数据中的比特位分为重要比特位和非重要比特位。若数据共有x个比特位,其中y个比特位是重要比特位,(x-y)个比特位是不重要比特位,其中x,y为正整数,0≤y<x。后续仅对数据的y个重要比特位进行处理,y个重要比特位的位置可以是连续的,也可以是不连续的。
步骤S103:针对所述重要比特位进行数据冗余处理。
具体地,所述数据冗余处理包括副本冗余处理和/或纠错编码处理,可以根据不同的重要性来进行不同的处理,例如可以,当一数据中的所有比特位均为重要比特位时,对该数据的所有比特位进行纠错编码处理,当一数据中的部分比特位为重要比特位时,对该数据的重要比特位进行副本冗余处理。
副本冗余可以在同一块存储介质备份冗余,也可以在不同存储介质备份冗余。数据可以同时备份N份,其中N是大于0的正整数。纠错编码方式包括但不仅限于循环冗余校验(Cyclic Redundancy Check,CRC),错误检查和纠正(Error Correcting Code,ECC)。
以下通过几个实例具体介绍本实施例中的数据冗余方法。
在本公开的一些实施例中:可以对控制单元做冗余存储,对运算单元不做冗余存储。比如,对神经网络指令做冗余存储,对参数不做冗余存储,将神经网络指令设定为第1重要等级,将神经网络的参数设定为第2重要等级。其中神经网络参数包括拓扑结构信息、神经元数据和权值数据。对第1重要等级的数据进行冗余存储,对第2重要等级的数据不进行冗余存储。当对第1重要等级数据进行读操作时,读取原始数据和备份的两份数据,若出现相应数据不一致,则取相同的两份数据作为最终读取的数据,同时将第三份不一致的数据进行修复。当对第1重要等级数据进行写操作时,同时写回到两个备份地址,同时保证原始数据和两个备份数据一致。
如图16所示,神经网络处理器包括:存储单元、控制单元和运算单元。
存储单元接收外界的输入数据,存储神经网络的神经元、权值和指令,并将指令发送给控制单元,将神经元和权值发送给运算单元。
控制单元,用于接收存储单元发送的指令,经过译码后生成控制信息控制运算单元。
运算单元,用于接收存储单元发送的权值和神经元,完成神经网络训练运算并将输出神经元重新传输给存储单元存储。
神经网络处理器还包括指令冗余处理单元,分别内嵌至存储单元和指令控制单元中,对指令进行数据冗余处理。
在本公开的一些实施例中,运算单元的拓扑结构可以如图11所示,运算单元可以包括一个主处理电路和多个从处理电路。图11所示的拓扑结构为树型模块,所述树型模块包括:一个根端口和多个支端口,所述树型模块的根端口连接所述主处理电路,所述树型模块的多个支端口分别连接多个从处理电路中的一个从处理电路;所述树型模块,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令。如图11所示,树型模块可以包括多层节点结构,节点为具有转发功能的结构,该节点本身可以不具有计算功能。
在本公开的一些实施例中,运算单元的拓扑结构可以如图12所示,运算单元可以包括一个主处理电路、多个从处理电路、和分支处理电路。所述主处理电路,具体用于将一个输入神经元分配成多个数据块,将所述多个数据块中的至少一个数据块、权值以及多个运算指令中的至少一个运算指令发送给所述分支处理电路;
所述分支处理电路,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令;
所述多个从处理电路,用于依据该运算指令对接收到的数据块以及权值执行运算得到中间结果,并将中间结果传输给所述分支处理电路;
所述主处理电路,用于将分支处理电路发送的中间结果进行后续处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
在本公开的一些实施例中,运算单元的拓扑结构可以如图13所示,运算单元可以包括一个主处理电路、和多个从处理电路。所述多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,所述主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个从处理电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路;
所述k个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发;
所述主处理电路,用于将一个输入数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述k个从处理电路;
所述k个从处理电路,用于转换所述主处理电路与所述多个从处理电路之间的数据;
所述多个从处理电路,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述K个从处理电路;
所述主处理电路,用于将所述K个从处理电路发送的中间结果进行后续处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。在一些实施例中,所述主处理电路,具体用于将多个从处理电路发送的中间结果进行组合排序得到该计算指令的结果;
在一些实施例中,主处理电路,具体用于将多个处理电路的发送的中间结果进行组合排序以及激活处理后得到该计算指令的结果。
在一些实施例中,所述主处理电路包括:转换处理电路、激活处理电路、加法处理电路中的一种或任意组合;
所述转换处理电路,用于对所述数据执行前序处理,具体为:将主处理电路接收的数据或中间结果执行第一数据结构与第二数据结构之间的互换;或将主处理电路接收的数据或中间结果执行第一数据类型与第二数据类型之间的互换;
所述激活处理电路,用于执行所述后续处理,具体为执行主处理电路内数据的激活运算;
所述加法处理电路,用于执行所述后续处理,具体为执行加法运算或累加运算。
在一些实施例中,所述从处理电路包括:乘法处理电路;
所述乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果。
在一些实施例中,所述从处理电路还包括:累加处理电路,所述累加处理电路,用于对该乘积结果执行累加运算得到该中间结果。
在一些实施例中,所述树型模块为n叉树结构,所述n为大于等于2的整数。
在一些实施例中,对神经网络参数进行数据冗余。
首先将神经网络参数按照参数绝对值大小确定M个重要等级,第1、2……M重要等级,并将参数对应划入各重要等级。
具体地,设定M+1个阈值,按照从大到小排序后的分别记为T0,T1,T2,…及TM。当神经网络参数的绝对值D满足Ti-1>D>Ti时,该数据归为第i个重要等级,其中i=1,2……,M,T0,T1,T2,…及TM均为实数,且T0>T1>T2>…>TM≥0。即神经网络参数的绝对值T0>D>T1时,划入第1重要等级,神经网络参数的绝对值T1>D>T2时,划入第2重要等级,依次类推。
对于第i重要等级参数中浮点型的一参数,共有xi个比特位,设置符号位与指数部分以及底数部分前yi位指定为重要比特位,其中xi,yi均为正整数,且0<yi≤xi。
对于第i重要等级参数中的定点型的参数,共有xi个比特位,设置设符号位和数值部分前zi位是重要比特位,其中xi,zi均为正整数,且0<zi≤xi。
对第i重要等级参数中重要比特位采用数据备份的方式进行数据冗余,并且备份两份,对不重要比特位不进行冗余存储。当对第i重要等级中的参数进行读操作时,对于重要比特位同时读取原始数据和备份的两份数据,若出现相应数据不一致,则取相同的两份数据作为最终读取的数据,同时将第三份不一致的数据进行修复。当对第i重要等级参数进行写操作时,对于重要比特位同时写回到两个备份地址,同时保证原始数据中的数据和两个备份数据一致。
在一些实施例中,对稀疏神经网络参数进行数据冗余。
本实例中稀疏神经网络参数分为两部分,分别是非零参数和非零参数位置。
将非零参数位置设置为第1重要等级,并且将其所有的比特位标记为重要比特性,采用CRC校验码的方式进行冗余存储。当进行读操作时,读取存储CRC校验码并对原始数据进行CRC校验码计算,如果两个CRC校验码不一致,则按照存储的CRC校验码对数据进行修正。进行写操作时,同时存储原始数据和CRC校验码。
将神经网络的非零参数按照参数绝对值大小设置重要等级,从第2重要等级开始依次设置M-1个重要等级。设定M个阈值,按照从大到小排序后的分别记为T1,T2,…及TM。当非零参数的绝对值D满足Ti-1>D>Ti时,该数据归为第i个重要等级,其中i=2,3……,M,T1,T2,…及TM均为实数,且T1>T2>…>TM≥0。即非零参数的绝对值满足T1>D>T2时,划入第2重要等级,非零参数的绝对值满足T2>D>T3时,划入第3重要等级依次类推。
对于第i重要等级参数中浮点型的一参数,共有xi个比特位,设置符号位与指数部分以及底数部分前yi位指定为重要比特位,其中xi,yi均为正整数,且0<yi≤xi。
对于第i重要等级参数中的定点型的参数,共有xi个比特位,设置设符号位和数值部分前zi位是重要比特位,其中xi,zi均为正整数,且0<zi≤xi。
对第i重要等级参数中重要比特位,采用数据备份的方式进行数据冗余,并且备份两份,对不重要比特位不进行冗余存储。当对第i重要等级中的参数进行读操作时,对于重要比特位同时读取原始数据和备份的两份数据,若出现相应数据不一致,则取相同的两份数据作为最终读取的数据,同时将第三份不一致的数据进行修复。当对第i重要等级参数进行写操作时,对于重要比特位同时写回到两个备份地址,同时保证原始数据中的数据和两个备份数据一致。
在一些实施例中,图计算的应用中数据冗余。
本实施中图计算应用中数据分为两部分,包括顶点数据和边数据。
将图计算应用中的顶点数据设置为第1重要等级,并且将所有的数据比特位标记为重要比特性,采用CRC校验码的方式进行冗余存储。当进行读操作时,读取存储CRC校验码并对原始数据进行CRC校验码计算,如果两个CRC校验码不一致,则按照存储的CRC校验码对数据进行修正。进行写操作时,同时存储原始数据和CRC校验码。
将图计算应用中边数据按照边的访问频率设置重要等级,从第2重要等级开始依次设置M-1个重要等级。按照从大到小排序后的分别记为T1,T2,…及TM。当边数据访问频率F满足Ti-1>F>Ti时,该数据归为第i个重要等级,其中i=2,3……,M,T1,T2,…及TM均为实数,且T1>T2>…>TM≥0,即边数据访问频率满足T1>F>T2时,划入第2重要等级,边数据访问频率满足T2>F>T3时,划入第3重要等级依次类推。
对于第i重要等级中浮点型的边数据,共有xi个比特位,设置符号位与指数部分以及底数部分前yi位指定为重要比特位,其中xi,yi均为正整数,且0<yi≤xi。
对于第i重要等级参数中的定点型的边数据,共有xi个比特位,设置设符号位和数值部分前zi位是重要比特位,其中xi,zi均为正整数,且0<zi≤xi。
第i重要等级边数据中重要比特位采用数据备份的方式进行数据冗余,并且备份两份,对不重要比特位不进行冗余存储。当对第i重要等级边数据进行读操作时,对于重要比特位同时读取原始数据和备份的两份数据,若出现数据不一致,则取相同的两份数据作为最终读取的数据,同时将第三份不一致数据修复。当对第i重要等级边数据进行写操作时,对于重要比特位同时写回到两个备份地址,同时保证原始数据中的数据和两个备份数据一致。
在一些实施例中,一种数据冗余装置100,图15示出了数据冗余装置的结构框图,如图15所示,数据冗余装置100包括重要等级划分单元10、重要比特位提取单元20以及数据冗余处理单元30。
其中,重要等级划分单元10用于根据重要性将数据划分为M个重要等级,M为正整数,具体地,数据的重要等级可以综合考虑数据的大小,数据绝对值的大小,数据的类型(浮点型、定点型),数据的读操作频率,数据写操作频率等因素进行设置。
重要比特位提取单元20用于提取每一重要等级中的每一数据的重要比特位。重要比特位提取单元20会识别不同重要等级的数据,并将数据比特位分为重要数据比特位和不重要数据比特位。同时对每一个重要等级的每一数据,提取重要比特位。
数据冗余处理单元30用于针对所述重要比特位进行数据冗余处理。
如图2所示,数据冗余处理单元30包括冗余存储单元31和读写控制单元32。
冗余存储单元31可以对原始数据进行存储,并且对数据中的重要比特位进行数据冗余存储。数据冗余可以是副本备份或者纠错编码。副本可以同时备份N份,其中N是大于0的正整数。纠错编码方式包括但不仅限于CRC校验,ECC校验。冗余存储单元31可以是硬盘,DRAM,SRAM,ECC-DRAM,ECC-SRAM和非易失性内存。
读写控制单元32能够对冗余的数据进行读写操作,保证读写数据的一致性。
本公开还提供了一种针对神经网络的DVFS调节方法,包括采集处理器实时负载和功耗,同时采集神经网络的拓扑结构,神经网络规模,神经网络精度需求,然后采用电压预测和频率预测方法,调整处理器的工作电压和频率,从而合理利用处理器性能、降低处理器功耗。
图17是本公开一实施例的动态电压频率调整方法流程图。图19是本公开实施例的动态电压频率调整方法示意框图。
参见图17和图19所示,本公开实施例提供的动态电压频率调整方法,包括步骤:
S1701:获取当前时间段T-t~T内处理器负载信号和神经网络配置信号;
S1702:根据当前时间段T-t~T内处理器负载和神经网络配置信号,预测处理器下一时间段T~T+t内的电压和频率,其中T和t是大于0的实数。
其中,步骤S1701中,获取当前时间段T-t~T内处理器负载信号为实时获取处理器的工作负载。其中,所述处理器优选的为进行神经网络运算的专用处理器。
在一些实施例中,处理器可以包括存储单元和计算单元,当然也可包括其它功能单元,本公开并不以此为限。处理器工作负载包括存储单元的访存负载和计算单元的计算负载。处理器功耗包括存储单元的访存功耗和计算单元的计算功耗。
在本公开的一些实施例中,计算单元的拓扑结构可以如图11所示,计算单元可以包括一个主处理电路和多个从处理电路。图11所示的拓扑结构为树型模块,所述树型模块包括:一个根端口和多个支端口,所述树型模块的根端口连接所述主处理电路,所述树型模块的多个支端口分别连接多个从处理电路中的一个从处理电路;所述树型模块,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令。如图11所示,树型模块可以包括多层节点结构,节点为具有转发功能的结构,该节点本身可以不具有计算功能。
在本公开的一些实施例中,计算单元的拓扑结构可以如图12所示,计算单元可以包括一个主处理电路、多个从处理电路、和分支处理电路。所述主处理电路,具体用于将一个输入神经元分配成多个数据块,将所述多个数据块中的至少一个数据块、权值以及多个运算指令中的至少一个运算指令发送给所述分支处理电路;
所述分支处理电路,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令;
所述多个从处理电路,用于依据该运算指令对接收到的数据块以及权值执行运算得到中间结果,并将中间结果传输给所述分支处理电路;
所述主处理电路,用于将分支处理电路发送的中间结果进行后续处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
在本公开的一些实施例中,计算单元的拓扑结构可以如图13所示,计算单元可以包括一个主处理电路、和多个从处理电路。所述多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,所述主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个从处理电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路;
所述k个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发;
所述主处理电路,用于将一个输入数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述k个从处理电路;
所述k个从处理电路,用于转换所述主处理电路与所述多个从处理电路之间的数据;
所述多个从处理电路,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述K个从处理电路;
所述主处理电路,用于将所述K个从处理电路发送的中间结果进行后续处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
在一些实施例中,所述主处理电路,具体用于将多个从处理电路发送的中间结果进行组合排序得到该计算指令的结果;
在一些实施例中,主处理电路,具体用于将多个处理电路的发送的中间结果进行组合排序以及激活处理后得到该计算指令的结果。
在一些实施例中,所述主处理电路包括:转换处理电路、激活处理电路、加法处理电路中的一种或任意组合;
所述转换处理电路,用于对所述数据执行前序处理,具体为:将主处理电路接收的数据或中间结果执行第一数据结构与第二数据结构之间的互换;或将主处理电路接收的数据或中间结果执行第一数据类型与第二数据类型之间的互换;
所述激活处理电路,用于执行所述后续处理,具体为执行主处理电路内数据的激活运算;
所述加法处理电路,用于执行所述后续处理,具体为执行加法运算或累加运算。
在一些实施例中,所述从处理电路包括:乘法处理电路;
所述乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果。
在一些实施例中,所述从处理电路还包括:累加处理电路,所述累加处理电路,用于对该乘积结果执行累加运算得到该中间结果。
在一些实施例中,所述树型模块为n叉树结构,所述n为大于等于2的整数。在一些实施例中,神经网络的配置信号包括处理器当前处理的神经网络的层类型,当前层参数的规模,神经网络的实时精度。
步骤S1702中,在一些实施例中预测处理器下一时间段T~T+t的电压和频率中的频率包括:存储单元和/或计算单元的频率。这里的预测可以通过预估、计算、预测、归纳等方式,优选的采用预测方式。
在一些实施例中,当预测计算单元的频率时,包括:为计算单元预设m段频率调整范围,共计m+1个频率分割点f0,f1,…,fm,其中f0<f1<…<fm,f0,f1,…,fm是大于0的正整数,m是大于0的正整数。
在一些实施例中,当预测存储单元的频率时,包括:预设m段神经网络规模,共计m+1个规模分割点n0,n1,…,nm,其中n0<n1<…<nm,n0,n1,…,nm是大于0的正整数,m是大于0的正整数。
在一些实施例中,当预测存储单元的频率时,包括:根据当前处理层的规模n的范围判断计算单元频率调整范围,若ni-1<n<ni,则计算单元的频率调整范围为fi-1<f<fi。
在一些实施例中,当预测存储单元的频率时,包括:根据当前处理层的类型,进一步缩小计算单元频率调整范围,将层的类型分为两个类型,
计算密集型的层包括卷积层,访存密集型的层包括全连接层,池化层,激活层。
若层的类型为计算密集型的层,则计算单元频率调整范围是(fi-1+fi)/2<f<fi;
若层的类型为访存密集型,则计算单元频率调整范围是
fi-1/2<f<(fi-1+fi)/2。
在一些实施例中,当预测存储单元的频率时,包括:根据神经网络当前精度,对计算单元频率f进行细粒度微调
在一些实施例中,当确定存储单元的频率时,包括:当神经网络当前精度高于预期精度时,调低计算单元的频率。当神经网络当前精度低于预期精度时,调高计算单元的频率。
在一些实施例中,当确定存储单元的频率时,包括:为存储单元预设k段频率调整范围,共计k+1个频率分割点F0,F1,…,Fk,其中F0<F1<…<Fk,F0,F1,…,Fk是大于0的正整数,k是大于0的正整数。
预设k段神经网络规模,共计k+1个规模分割点N0,N1,…,Nk,其中N0<N1<…<Nk,N0,N1,…,Nk是大于0的正整数,k是大于0的正整数。
在一些实施例中,当确定存储单元的频率时,包括:根据当前处理层的规模N的范围判断存储单元频率调整范围,若Ni-1<N<Ni,则存储单元的频率调整范围为Fi-1<F<Fi。
在一些实施例中,当预测存储单元的频率时,包括:根据当前处理层的类型,进一步缩小存储单元频率调整范围,若层的类型为计算密集型的层,则存储单元频率调整范围是Fi-1<F<(Fi-1+Fi)/2;若层的类型为访存密集型,则存储单元频率调整范围是(Fi-1+Fi)/2<F<Fi。
在一些实施例中,当预测存储单元的频率时,包括:根据神经网络当前精度,对存储单元频率进行细粒度微调,预测下一时间段存储单元的频率。
在一些实施例中,当确定存储单元的频率时,包括:神经网络当前精度高于预期精度时,将存储单元的访存频率调低。神经网络当前精度底于预期精度时,将存储单元的访存频率调高。
步骤S1702中,预测处理器下一时间段T~T+t的电压和频率还可以包括:采用预测方法预测处理器下一时间段的电压和频率,预测方法包括先前值法,移动平均负载法,指数加权平均法和/或最小均值法。
图18是本公开另一实施例的动态电压频率调整方法流程图。该实施例的调整方法中,步骤S1801-S1802与S1701-S1702相同,不同之处在于还包括步骤S1803和S1804.
其中,预测处理器下一时间段的电压和频率之后还含步骤S1803:根据预测的下一时间段的频率,调整芯片的时钟设置以调整处理器的频率。
其中,预测处理器下一时间段的电压和频率之后还含步骤1804:根据预测的下一时间段的频率,调整芯片的电源管理模块从而调整供给处理器的电压。
图20是本公开实施例的一实施例的动态电压频率调整协处理器原理图。根据本公开实施例的另一方面,提供一种动态电压频率调整协处理器,包括:
信号采集单元,用于采集处理器的工作负载,还用于采集神经网络配置信号;
性能预测单元,用于接收所述神经网络配置信号,根据处理器当前负载和功耗,预测处理器下一时间段的频率和电压。
对于信号采集单元,其可采集与处理器负载和功耗相关的信号以及神经网络配置信号,并将这些信号传递给性能预测单元。信号采集单元能够采集神经网络处理器中计算单元,存储单元的工作负载,同时采集神经网络处理当前层类型,当前层规模和神经网络实时精度,并将这些信号传输给性能预测单元。
对于性能预测单元,其可接收信号采集单元采集到的信号,根据出当前系统的负载情况和神经网络配置信号,预测下一个时间段处理器所需要的性能,输出调整频率和调整电压的信号。
在一些实施例中,所述性能预测单元中,预测处理器下一时间段的电压和频率中的频率包括:存储单元和/或计算单元的频率。
如图5所示,在一些实施例中,动态电压频率调整协处理器还包括:频率调整单元,用于接收性能预测单元确定的处理器下一时间段的频率信号,调整处理器中存储单元和/或计算单元的频率。
如图5所示,在一些实施例中,动态电压频率调整协处理器还包括:电压调整单元,用于接收性能预测单元预测的处理器下一时间段的电压信号,调整处理器中存储单元和/或计算单元的电压。
图5所示,性能预测单元与信号采集单元,电压调整单元和频率调整单元连接。性能预测单元接收处理器当前处理的层类型和当前层规模,粗粒度预测频率范围,然后根据处理器当前负载,功耗和神经网络实时精度细粒度预测处理器电压和频率,最后输出调整频率和调整电压的信号。
在一些实施例中,所述性能预测单元中,在预测处理下一时间段的计算单元的频率时,包括:为计算单元预设m段频率调整范围,共计m+1个频率分割点f0,f1,…,fm,其中f0<f1<…<fm,f0,f1,…,fm是大于0的正整数,m是大于0的正整数。
在一些实施例中,所述性能预测单元中,在预测处理下一时间段的计算单元的频率时,包括:预设m段神经网络的规模,共计m+1个规模分割点n0,n1,…,nm,其中n0<n1<…<nm,n0,n1,…,nm是大于0的正整数,m是大于0的正整数。
在一些实施例中,,所述性能预测单元中,在预测处理下一时间段的计算单元的频率时,包括:根据当前处理层的规模n的范围判断计算单元频率调整范围,若ni-1<n<ni,则计算单元的频率调整范围为fi-1<f<fi。
在一些实施例中,所述性能预测单元中,在预测处理下一时间段的计算单元的频率时,包括:根据当前处理层的类型,进一步缩小计算单元频率调整范围,将层的类型分为两个类型,计算密集型的层-卷积层和访存密集型的层-全连接层和/或池化层,若层的类型为计算密集型的层,则计算单元频率调整范围是(fi-1+fi)/2<f<fi;若层的类型为访存密集型,则计算单元频率调整范围是fi-1/2<f<(fi-1+fi)/2。
在一些实施例中,所述性能预测单元中,在预测处理下一时间段的计算单元的频率时,包括:根据神经网络当前精度,对计算单元频率进行细粒度微调
在一些实施例中,所述性能预测单元中,在预测处理下一时间段的计算单元的频率时,包括:
当神经网络当前精度高于预期精度时,调低计算单元的频率。
当神经网络当前精度低于预期精度时,调高计算单元的频率。
在一些实施例中,所述性能预测单元中,在预测处理下一时间段的存储单元的频率时,包括:为存储单元预设k段频率调整范围,共计k+1个频率分割点F0,F1,…,Fk,其中F0<F1<…<Fk,F0、F1、…、Fk是大于0的正整数,k是大于0的正整数。
在一些实施例中,性能预测单元中,在预测处理下一时间段的存储单元的频率时,包括:预设k段神经网络的规模,共计k+1个规模分割点N0,N1,…,Nk,其中N0<N1<…<Nk,N0、N1、…、Nk是大于0的正整数,k是大于0的正整数。
在一些实施例中,所述性能预测单元中,在预测处理下一时间段的存储单元的频率时,包括:
根据当前处理层的规模N的范围判断存储单元频率调整范围,若
Ni-1<N<Ni,则存储单元的频率调整范围为Fi-1<F<Fi。
在一些实施例中,所述性能预测单元中,在预测处理下一时间段的存储单元的频率时,包括:
根据当前处理层的类型,进一步缩小存储单元频率调整范围,若层的类型为计算密集型的层,则存储单元频率调整范围是Fi-1<F<(Fi-1+Fi)/2;若层的类型为访存密集型,则存储单元频率调整范围是(Fi-1+Fi)/2<F<Fi。
在一些实施例中,所述性能预测单元中,在预测处理下一时间段的存储单元的频率时,包括:
根据处理器当前的利用率,功耗以及神经网络当前精度,对存储单元频率进行细粒度微调
在一些实施例中,信号采集单元中,获取神经网络配置信号包括:获取神经网络处理的当前层类型,当前层规模和神经网络实时精度。
如图21所示,在一些实施例中所述性能预测单元中包括以下至少一项:先前值法预测单元,采用先前值法预测处理器下一时间段的电压和频率;移动平均负载法预测单元,采用移动平均负载法预测处理器下一时间段的电压和频率;指数加权平均法预测单元,采用指数加权平均法预测处理器下一时间段的电压和频率;最小均值法预测单元,采用最小均值法预测处理器下一时间段的电压和频率。
通过本公开针对神经网络的DVFS调节方法和DVFS协处理器,其中,DVFS调节方法采集处理器实时负载和功耗,同时采集神经网络的拓扑结构,神经网络规模,神经网络精度需求,然后采用电压预测和频率预测方法,调整处理器的工作电压和频率,从而合理利用处理器性能、降低处理器功耗。DVFS协处理器中集成了神经网络的DVFS算法,能够充分挖掘神经网络的拓扑结构,网络规模,精度需求等特性,通过信号采集单元实时采集神经网络处理器系统负载信号,神经网络拓扑结构信号,神经网络规模信号和神经网络精度信号,通过性能预测单元预测系统所需要的电压和频率,通过频率调整单元和调整神经网络处理器的工作频率,通过电压调整单元调整神经网络处理器的工作电压,从而合理利用神经网络处理器的性能,有效降低神经网络处理器功耗。
本公开提供了一种信息处理装置。图22为本公开一实施例信息处理装置的功能模块示意图,如图22所示,所述信息处理装置,包括:存储单元以及数据处理单元;其中,所述存储单元用于接收并存储输入数据、指令和输出数据,其中输入数据包括一个或多个图像;所述数据处理单元对输入数据中包含的关键特征进行提取和运算处理,并根据运算处理结果给每个图像生成一个多维向量。
其中,所述关键特征包括图像中人脸的动作、表情、关键点位置等,具体形式为神经网络当中的特征图(feature maps)。所述图像包括静态图片、组成视频的图片、或视频等。该静态图片、组成视频的图片、或视频包括人脸的一个或者多个部位的图像。所述人脸的一个或者多个部位为人脸面部肌肉,嘴唇,眼部,眉毛,鼻子,额头,耳朵以及它们的组合等。
所述向量的每个元素代表人脸的一个情绪,例如愤怒,高兴,痛苦,沮丧,困倦,疑惑。所述存储单元还用于在标注n维向量后输出n维向量,即输出计算得到的n维向量。
在一些实施例中,所述信息处理装置还包括:转换模块,用于将n维向量转换为相应的输出,输出可以是控制指令,数据(0,1输出),标签(开心,沮丧,等等);图片输出。
其中,所述控制指令可以是鼠标单击双击拖动;触摸屏的单点,多点,滑动;开关的开和关;快捷键。
在一些实施例中,所述信息处理装置用于进行自适应性训练,相应的,
存储单元用于输入n个图像,每个图像包括一个标签,每个图像对应一个向量(真实情绪向量);n为大于等于1等正整数;
数据处理单元以这些标定好的数据作为输入,计算出与输入相同格式的输出情绪向量,即预测情绪向量,并与真实情绪向量对比,根据对比结果更新装置的参数。
情绪向量包括n个元素。所述情绪向量的每个元素的取值可以包括以下几种情况:
(1)情绪向量的每个元素的值可以为0和1之间的数(代表某一情绪出现的概率);
(2)情绪向量的每个元素的值也可以是任何大于等于0的数(代表某一情绪的强度);
(3)情绪向量也可以是只有一个元素的值为1,其余元素为的值为0的。这种情况,一个情绪向量就只能代表最显著一种情绪。
具体的,所述预测情绪向量与真实情绪向量对比的方式可以有:求二者欧式距离、内积的绝对值。例如n为3,预测情绪向量为[a1,a2,a3],真实情绪向量为[b1,b2,b3]。二者欧式距离为[(a1-b1)2+(a2-b2)2+(a3-b3)2]1/2。二者内积的绝对值为|a1*b1+a2*b2+a3*b3|。本领域技术人员可以理解的是,此处对比方式并不限于欧式距离及内积的绝对值,也可以采用其他方法。
在本公开的一具体实施例中,如图23所示,所述信息处理装置为人工神经网络芯片。更新装置的参数包括自适应地更新神经网络的参数(权值、偏置等)
其中,人工神经网络芯片的存储单元,用于存储数据和指令,其中所述数据包括输入神经元,输出神经元,权值,图像,向量等等;人工神经网络芯片的数据处理单元包括:运算单元,用于根据所述存储单元中存储的指令对所述数据执行相应的运算;所述运算单元可以为标量计算单元,用于完成标量乘法、标量加法或标量乘加操作;或向量计算单元,用于完成向量乘法、向量加法或向量内积操作;或混合计算单元,用于完成矩阵乘法加法操作、向量内积计算和非线性计算、或卷积计算。所述运算单元执行运算包括神经网络计算。
在一些实施例中,运算单元的结构可以如图11~13所示,具体连接关系参照前面所述,这里不再赘述。
在一个实施例里,计算单元包括但不仅限于:第一部分乘法器;第二部分一个或者多个加法器(更具体的,第二个部分的加法器组成加法树);第三部分为激活函数单元;和/或第四部分向量处理单元。更具体的,向量处理单元可以处理向量运算和/或池化运算。第一部分将输入数据1(in1)和输入数据2(in2)相乘得到相乘之后的输出(out),过程为:out=in1*in2;第二部分将输入数据in1通过加法器相加得到输出数据(out)。更具体的,第二部分为加法树时,将输入数据in1通过加法树逐级相加得到输出数据(out),其中in1是一个长度为N的向量,N大于1,过程为:out=in1[1]+in1[2]+...+in1[N],和/或将输入数据(in1)通过加法数累加之后和输入数据(in2)相加得到输出数据(out),过程为:out=in1[1]+in1[2]+...+in1[N]+in2,或者将输入数据(in1)和输入数据(in2)相加得到输出数据(out),过程为:out=in1+in2;第三部分将输入数据(in)通过激活函数(active)运算得到激活输出数据(out),过程为:out=active(in),激活函数active可以是sigmoid、tanh、relu、softmax等,除了做激活操作,第三部分可以实现其他的非线性函数,可将将输入数据(in)通过运算(f)得到输出数据(out),过程为:out=f(in)。向量处理单元将输入数据(in)通过池化运算得到池化操作之后的输出数据(out),过程为out=pool(in),其中pool为池化操作,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。
所述运算单元执行运算包括第一部分是将所述输入数据1和输入数据2相乘,得到相乘之后的数据;和/或第二部分执行加法运算(更具体的,为加法树运算,用于将输入数据1通过加法树逐级相加),或者将所述输入数据1通过和输入数据2相加得到输出数据;和/或第三部分执行激活函数运算,对输入数据通过激活函数(active)运算得到输出数据;和/或第四部分执行池化运算,out=pool(in),其中pool为池化操作,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。以上几个部分的运算可以自由选择一个多个部分进行不同顺序的组合,从而实现各种不同功能的运算。
在本公开的一具体实施例中,进一步参照图23所示,所述人工神经网络芯片还可以包括:
控制单元,用于从所述指令缓存中读取指令,并将其译码成运算单元指令并输入至运算单元;
指令缓存单元,用于存储指令;
权值缓存单元,用于缓存权值数据;
输入神经元缓存单元,用于缓存输入到运算单元的输入神经元;
输出神经元缓存单元,用于缓存运算单元输出的输出神经元;
DMA用于在所述存储单元、指令缓存、权值缓存、输入神经元缓存和输出神经元缓存中进行数据或者指令读写。
在本公开的一具体实施例中,如图24所示,所述人工神经网络芯片还可以包括:转换单元,与存储单元连接,用于接收第一输出数据(最终输出神经元的数据)并转换成第二输出数据。
由于神经网络对输入图片的格式有要求,例如长、宽、色彩通道等,优选的,在本公开的一具体实施例中,如图25、26所示,人工神经网络芯片还包括:预处理单元,用于对原始输入数据,即一个或多个图像,进行预处理,得到与芯片所使用的人工神经网络的位于最底层的输入层规模相契合的图像数据,以满足神经网络预设参数和数据格式的要求。其中,所述预处理包括:切分、高斯滤波、二值化、正则化、归一化等。
其中,该预处理单元可独立于芯片存在,即一信息处理装置,包括预处理单元和芯片;该预处理单元和芯片如上所述。
在本公开的一具体实施例中,如图27所示,芯片的运算单元可以采用短位浮点数模块进行正向计算,包括浮点数据统计模块、短位浮点数据转换单元和短位浮点数据运算模块。其中
所述浮点数据统计模块用于对所述人工神经网络正向运算所需的各个类型的数据进行统计分析,得到指数位的长度(exponential length,EL);
所述短位浮点数据转换单元用于根据所述浮点数据统计模块得到的指数位的长度EL来实现长位数浮点数据类型向短位数浮点数据类型的转换;
所述短位浮点数据运算模块用于在所述浮点数据转换单元将所有所述人工神经网络正向运算中所需的输入、权值和/或偏置数据均采用短位数浮点数据类型表示之后,对所述短位数浮点数据进行人工神经网络正向运算。
优选的,所述浮点数据统计模块还用于对所述人工神经网络正向运算所需的各个类型的数据进行统计分析,得到指数位偏移量offset;所述短位浮点数据转换单元用于根据所述浮点数据统计模块得到的所述指数位偏移量offset及指数位的长度EL来实现长位数浮点数据类型向短位数浮点数据类型的转换。通过指数位偏移量offset及指数位长度的设定使得尽可能的扩大可表示的数据范围,由此可以包含输入神经元和权值的所有数据。
更具体的,如图28所示,所述短位浮点数据转换单元包括运算缓存单元31、数据转换单元32、舍入单元33。
其中:运算缓存单元用精度较高的数据类型存储正向运算的中间结果,这是由于在正向运算时,加法或者乘法运算可能会导致数据范围扩大;运算结束后,对超出短位数浮点精度范围的数据,进行舍入操作,接着通过数据转换单元32将缓存区的数据转换为短位数浮点数据。
舍入单元33可以完成对超出短位浮点精度范围的数据进行舍入操作,该单元可以为随机舍入单元、四舍五入单元、向上舍入单元、向下舍入单元、截断舍入单元等,通过不同的舍入单元可以实现对超出短位数浮点精度范围数据进行不同的舍入操作。
随机舍入单元执行如下操作:
其中,y表示随机舍入后的短位浮点数据,x表示随机舍入前的32位浮点数据,ε为当前短位数浮点数据表示格式所能表示的最小正整数,即2offset-(X-1-EL),表示对原数据x直接截得短位数浮点数据所得的数(类似于对小数做向下取整操作),w.p.表示概率,即随机舍入获得的数据y为的概率为为的概率为
四舍五入单元执行如下操作:
其中,y表示四舍五入后的短位浮点数据,x表示四舍五入前的长位浮点数据,ε为当前短位数浮点数据表示格式所能表示的最小正整数,即2offset-(X-1-EL),为ε的整数倍,其值为小于或等于x的最大数。
向上舍入单元执行如下操作:
其中,y表示向上舍入后的短位浮点数据,x表示向上舍入前的长位浮点数据,为ε的整数倍,其值为大于或等于x的最小数,ε为当前短位数浮点数据表示格式所能表示的最小正整数,即2offset-(X-1-EL)。
向下舍入单元执行如下操作:
其中,y表示向上舍入后的短位浮点数据,x表示向上舍入前的长位浮点数据,为ε的整数倍,其值为小于或等于x的最大数,ε为当前短位数浮点数据表示格式所能表示的最小正整数,即2offset-(X-1-EL)。
截断舍入单元执行如下操作:
y=[x];
其中,y表示截断舍入后的短位浮点数据,x表示截断舍入前的长位浮点数据,[x]表示对原数据x直接截得短位数浮点数据所得的数。
另外,所述人工神经网络芯片可用于一终端。该终端除包括人工神经网络芯片之外,还可包括图像采集装置,该图像采集装置可以是摄像头,照相机。该终端可为台式电脑,智能家居,交通工具,便携式电子设备。便携式电子设备为摄像头,手机,笔记本,平板电脑,可穿戴设备等。可穿戴设备包括智能手表,智能手环,智能衣服等。所述人工神经网络芯片也可以用于云端(服务器),这样用户的设备上用到的就只是一个APP,设备将采集到的图像上传,通过本公开信息处理装置计算出输出,再通过用户终端做出响应。
另外,本公开还提供了一种信息处理方法,包括:
存储单元接收输入数据;该输入数据包括一个或多个图像;
数据处理单元对输入数据中包含的关键特征进行提取和处理,并根据处理结果给每个图像生成一个多维向量。
其中,所述关键特征包括图像中人脸的动作、表情、关键点位置等,具体形式为神经网络当中的特征图(feature maps,FM)。所述图像包括静态图片、组成视频的图片、或视频等。该静态图片、组成视频的图片、或视频包括人脸的一个或者多个部位的图像。所述人脸的一个或者多个部位为人脸面部肌肉,嘴唇,眼部,眉毛,鼻子,额头,耳朵以及它们的组合等。
所述多维向量的每个元素代表人脸的一种情绪,例如愤怒,高兴,痛苦,沮丧,困倦,疑惑。进一步的,所述信息处理方法还包括:学习标注数据(已有对应多维向量的图像),以及在学习标注数据后输出多维向量并更新数据处理单元的参数。
更进一步的,所述信息处理方法还包括:将多维向量转换为转换相应的输出;输出可以是控制指令,数据(0,1输出),标签(开心,沮丧等);图片输出。
所述控制指令可以是鼠标单击双击拖动;触摸屏的单点,多点,滑动;开关的开和关;快捷键等。
优选的,所述信息处理方法还包括:进行自适应性训练,具体流程如下:
对存储单元输入n个图像,每个图像包括一个标签,每个图像对应一个向量(真实情绪向量);其中,n为大于等于1等正整数。
数据处理单元以这些标定好的数据作为输入,计算出与输入相同格式的输出情绪向量,即预测情绪向量,并与真实情绪向量对比,根据对比结果更新装置的参数。
其中,所述情绪向量包括n个元素。情绪向量的每个元素的取值可以是以下几种情况:
(1)情绪向量的每个元素的值可以为0-1的自然数(代表某一情绪出现的概率);
(2)情绪向量的每个元素的值也可以是任何大于等于0的数(代表某一情绪的强度);例如,预设表情为[高兴,难过,惊恐],一个勉强的笑脸图像对应的向量可以是[0.5,0.2,0]。
(3)情绪向量也可以是只有一个元素的值为1,其余元素为的值为0的。这种情况,一个情绪向量就只能代表最显著一种情绪。例如,预设表情为[高兴,难过,惊恐],一个明显的笑脸图像对应的向量可以是[1,0,0]。
所述预测情绪向量与真实情绪向量对比的方式可以为:求二者欧式距离、内积的绝对值等。例如:n为3,预测情绪向量为[a1,a2,a3],真实情绪向量为[b1,b2,b3];二者欧式距离为[(a1-b1)2+(a2-b2)2+(a3-b3)2]1/2;二者内积的绝对值为|a1*b1+a2*b2+a3*b3|。本领域技术人员可以理解的是,此处对比方式并不限于欧式距离及内积的绝对值,也可以采用其他方法。
优选的,信息处理装置为人工神经网络芯片。情绪向量的每个元素的值可以为0和1之间的数(代表某一情绪出现的概率),由于人的情绪可以是叠加的,所以在这种情绪向量中可以有多个不为0的数,以表达复杂的情绪。
在本公开的一具体实施例中,人工神经网络芯片得到情绪向量的方法包括:神经网络的最终输出层每个神经元对应情绪向量的一个元素,输出的神经元值为0和1之间的数,作为该种情绪的出现概率。计算出上述情绪向量的过程整体如下:
步骤S1,输入数据经预处理单元传入存储单元或直接传入存储单元;
步骤S2,DMA将其分批传入相应的片上缓存(即指令缓存,输入神经元缓存,权值缓存)中;
步骤S3,控制单元从指令缓存中读取指令,将其译码后传入运算单元;
步骤S4,根据指令,运算单元执行相应的运算:在神经网络的各个层中,运算主要分为三步:子步骤S41,将对应的输入神经元和权值相乘;子步骤S42,执行加法树运算,即将子步骤S41的结果通过加法树逐级相加,得到加权和,根据需要对加权和加偏置或不做处理;子步骤S43,对子步骤S42得到的结果执行激活函数运算,得到输出神经元,并将其传入输出神经元缓存中;
步骤S5,重复步骤S2到步骤S4,直到所有数据运算完毕,即得到功能需求的最终结果。其中所述最终结果由神经网络最后一层的输出神经元得到,神经网络的最终输出层每个神经元对应情绪向量的一个元素,输出的神经元值为0和1之间的数,作为该种情绪的出现概率。最终结果从运算单元输出到输出神经元缓存中,然后经DMA返回存储单元。
根据所述功能需求:需要在自适应训练阶段预设情绪向量大小(即表情种类,也是人工神经网络最终输出层的神经元个数)、与训练数据的真实情绪向量的对比形式(欧式距离、内积等)和网络参数更新方式(随机梯度下降、Adam算法等)。
情绪向量也可以只有一个元素的值为1,其余元素为的值为0。这种情况,一个情绪向量就只能代表最显著的一种情绪。
在本公开的一具体实施例中,人工神经网络芯片得到情绪向量的方法包括:神经网络的最终输出层每个神经元对应情绪向量的一个元素,但只有一个神经元输出为1,其余神经元输出为0。计算出上述情绪向量的整体过程为:
步骤S1,输入数据经预处理单元传入存储单元或直接传入存储单元;
步骤S2,DMA(Direct Memory Access,直接内存存取)将其分批传入指令缓存,输入神经元缓存,权值缓存中;
步骤S3,控制单元从指令缓存中读取指令,将其译码后传入运算单元;
步骤S4,根据指令,运算单元执行相应的运算:在神经网络的各个层中,运算主要分为三步:子步骤S41,将对应的输入神经元和权值相乘;子步骤S42,执行加法树运算,即将子步骤S41的结果通过加法树逐级相加,得到加权和,根据需要对加权和加偏置或不做处理;子步骤S43,对子步骤S42得到的结果执行激活函数运算,得到输出神经元,并将其传入输出神经元缓存中。
步骤S5,重复步骤S2到步骤S4,直到所有数据运算完毕,即得到功能需求的最终结果。其中所述最终结果由神经网络最后一层的输出神经元得到,神经网络的最终输出层每个神经元对应情绪向量的一个元素,但只有一个神经元输出为1,其余神经元输出为0。最终结果从运算单元输出到输出神经元缓存中,然后经DMA返回存储单元。
根据所述功能需求:需要在自适应训练阶段预设情绪向量大小(即表情种类,也是人工神经网络最终输出层的神经元个数)、与训练数据的真实情绪向量的对比形式(欧式距离、内积等)和网络参数更新方式(随机梯度下降、Adam算法等);此外该例的训练用到的真实情绪向量与例1不同,应当也是[1,0,0,0…]这样的“指示”向量。
本公开中,各功能单元/模块都是硬件,比如该硬件可以是电路,包括数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器等等。所述计算装置中的计算模块可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如RRAM,DRAM,SRAM,EDRAM,HBM,HMC等等。
另外,本公开神经网络可以是卷积神经网络,还可以是全连接神经网络、RBM神经网络、及循环神经网络(RNN,Recurrent Neural Networks)等。在另外一些实施例中,针对的计算可以是卷积计算之外的其他神经网络中的操作,如全连接等。
以下实施例中提到的方向用语,例如“上”、“下”、“前”、“后”、“左”、“右”等,仅是参考附图的方向。因此,使用的方向用语是用来说明并非用来限制本公开。
本公开一实施例提供了一种可在线配置的神经网络的运算装置,即可在线配置的神经网络硬件处理器。图29为本公开一实施例提供的运算装置功能模块示意图。如图29所示,本公开神经网络的运算装置,包括:控制模块和运算模块。可选的,还包括存储模块。
所述运算模块可包括多个运算单元,每个运算单元包括至少一乘法器、至少一加法器。可选的,所述每个运算单元还包括至少一存储器。所述存储器可包括存储空间和/或临时缓存;所述存储空间例如为SRAM、所述临时缓存例如为寄存器。
其中,所述控制模块,用于发送指令给所述多个运算单元并控制运算单元之间的数据传递。
对于每个运算单元可以通过配置指令以一个或多个的方向传递待运算数据或者中间结果值给另一或多个运算单元,该传递方向包括向左/右相邻或不相邻的运算单元传递、向上/下相邻或不相邻的运算单元传递、沿对角线方向向相邻或不相邻的运算单元传递以及向多个方向的多个相邻或不相邻的运算单元传递。所述沿对角线相邻或不相邻的运算单元传递方向包括左上对角线、左下对角线、右上对角线、右下对角线相邻或不相邻的运算单元传递方向。
每个运算单元具有多个输入端口,该多个输入端口包括:连接存储模块、用于接收存储模块传来的数据的端口,以及连接其他运算单元用于接收运算单元传来的数据的接口。每个运算单元也具有输出端口,用于将数据传送回存储模块或者传递给指定的运算单元。
存储模块包括数据存储单元和/或临时缓存,可以根据需求有一个或者多个数据存储单元和/或临时缓存,即可以将待运算的数据存储到同一个区域,也可以分开存储;中间结果可以存储到同一个区域,也可以分开存储。所述数据存储单元,例如是SRAM;所述临时缓存,例如是寄存器。
可选的,如图30所示,所述控制模块,包括存储控制单元以及运算控制单元。其中,存储控制单元用于控制存储模块存储或读取所需要的数据;运算控制单元是根据待运算的运算种类和运算要求对运算模块进行控制,其中包括对运算单元内部的具体运算方式进行控制和对运算单元间的数据传递进行控制。
本公开还提供了一种运算方法,包括:
控制模块发送指令;以及
运算模块的多个运算单元接收所述指令,并根据指令进行数据传递。
其中,每个所述运算单元接收所述指令,并根据指令将待运算数据或中间结果沿一个或多个的方向传递至该运算单元之外的其他运算单元。
所述方向包括向左/右相邻或不相邻的运算单元传递方向、向上/下相邻或不相邻的运算单元传递方向、沿对角线相邻或不相邻的运算单元传递方向。
所述沿对角线相邻或不相邻的运算单元传递方向包括左上对角线、左下对角线、右上对角线、右下对角线相邻或不相邻的运算单元传递方向。
在本公开的一具体实施例中,所述运算模块包括N*N(N为正整数)个运算单元和1个ALU,能够依次以S形的方向传递数据,如图31所示。可选的,所述ALU为轻量级ALU。每个运算单元包括一个乘法器、一个加法器、一个存储空间和一个临时缓存,运算单元之间传递的是每次运算单元运算得到的中间结果。
本实施例处理器主要运算流程如下,存储控制单元发出读取控制信号给存储模块读取待运算的神经元数据和突触权值数据,分别保存到运算单元中的存储空间,等待传递。而后,运算控制单元发出待运算的运算信号给各个运算单元,初始化运算单元,例如将缓存置零等。而后,存储控制单元发出指令,将待运算的神经元传递给各个运算单元,运算控制单元发出指令,各个运算单元接受神经元数据和自己存储空间中对应的突触权值数据进行相乘。而后左上角的运算单元将运算结果向右传递给第二个运算单元,第二个运算单元将接收到的结果和本单元的运算乘积相加,得到部分和,再向右传递,以此类推,如图31所示按照S型路线传递部分和并不断累加。若累加完毕,则传入ALU中进行激活等运算,而后将结果写到存储模块,否则,暂时将结果保存回存储模块,等待后续的调度并继续运算。这种结构能够在每次运算的时候充分利用神经网络的权值共享的特性,权值数据只需要在最初被载入一次,从而大大减少了访存次数,减少了功耗开销。
在本公开的一具体实施例中,如图32所示,所述运算模块包括N*N(N为正整数)个运算单元和M-1个ALU(M为正整数),可选的M=N,不同的运算单元可以不同的方向传递运算数据,即不要求在同一个运算模块中保持所有运算单元统一的传递方向。每个运算单元包括一乘法器、一加法器、和一临时缓存,运算单元之间传递的是每次运算单元运算得到的中间结果。可选的,所述ALU为轻量级ALU。
在局部响应归一化层(Local Response Normalization,LRN)中,其输出值为当计算LRN层时,可以通过运算单元完成对输入数据的平方的累加,而后通过ALU完成后续的指数操作。这里配置运算单元进行的操作以及数据传递方向为:最左侧一列的运算单元用于接收从存储模块传来的待运算数据,完成平方操作后向右侧和右下侧相邻的运算单元传递平方值;最上一行的运算单元用于接收从存储模块传来的待运算数据,完成平方操作后向右下侧相邻的运算单元传递平方值,最右侧一列的运算单元接收来自左上和左侧的数据后,完成累加,根据指令,如果所有累加完毕,则向右传递给ALU完成后续的指数操作;其他运算单元接收来自左上的运算单元传来的数据后向右下侧的运算单元传递,同时将该数据与从左侧运算单元传来的数据进行累加,将累加后的和向右侧传递。以此类推,直到完成了所有运算。
下面以N=3为例进行具体说明。如图33所示,其中横线上的是传递的具体数据,方框表示每个运算单元中完成的运算结果。该过程中可以流水完成相关操作。利用本公开处理器,能够有效利用片上已被读取出的数据,有效降低了访存次数,节省了功耗开销,降低了数据读取带来的延时,加快了运算速度。
本公开中,各功能单元/模块都是硬件,比如该硬件可以是电路,包括数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器等等。所述计算装置中的计算模块可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。所述存储元件可以是任何适当的磁存储介质或者磁光存储介质,比如RRAM,DRAM,SRAM,EDRAM,HBM,HMC等等。
另外,本公开神经网络可以是卷积神经网络,还可以是全连接神经网络、RBM神经网络、及循环神经网络(recurrent neural networks,RNN)等。在另外一些实施例中,针对的计算可以是卷积计算之外的其他神经网络中的操作,如全连接等。
前面的附图中所描绘的进程或方法可通过包括硬件(例如,电路、专用逻辑等)、固件、软件(例如,被承载在非瞬态计算机可读介质上的软件),或两者的组合的处理逻辑来执行。虽然上文按照某些顺序操作描述了进程或方法,但是,应该理解,所描述的某些操作能以不同顺序来执行。此外,可并行地而非顺序地执行一些操作。
至此,已经结合附图对本公开实施例进行了详细描述。依据以上描述,本领域技术人员应当对本公开有了清楚的认识。
需要说明的是,在附图或说明书正文中,未绘示或描述的实现方式,均为所属技术领域中普通技术人员所知的形式,并未进行详细说明。此外,上述对各元件的定义并不仅限于实施例中提到的各种具体结构、形状,本领域普通技术人员可对其进行简单地更改或替换;本文可提供包含特定值的参数的示范,但这些参数无需确切等于相应的值,而是可在可接受的误差容限或设计约束内近似于相应值上述实施例可基于设计及可靠度的考虑,彼此混合搭配使用或与其他实施例混合搭配使用,即不同实施例中的技术特征可以自由组合形成更多的实施例。
以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (18)
1.一种数据处理装置,其特征在于,包括:自启动任务队列装置和外部装置;所述自启动任务队列装置与所述外部装置相连,所述自启动任务队列装置包括:任务配置信息存储单元和任务队列配置单元;
所述任务配置信息存储单元,用于存储任务的配置信息;
所述任务队列配置单元,用于根据所述任务配置信息存储单元的配置信息对任务队列进行配置;
所述外部装置,用于提供配置信息以及执行任务队列;
所述外部装置包括一个或多个处理器核;
每个所述处理器核包括一个主处理电路和与所述主处理电路相连的多个从处理电路;
所述任务队列配置单元用于将经过配置的任务队列发送至控制单元;所述控制单元用于监测自启动任务队列装置的配置信息,对存储单元的运算指令进行配置,控制运算单元和所述存储单元执行任务队列中的任务,每执行完一个任务向任务配置信息存储单元发送一个第一结束信号;所述任务配置信息存储单元用于每接收到一个第一结束信号后向控制单元发送中断信号;所述控制单元用于处理中断信号并发送第二结束信号给任务配置信息存储单元。
2.如权利要求1所述的数据处理装置,其特征在于,
所述处理器核包括:树型模块,所述树型模块包括:一个根端口和多个支端口,所述树型模块的根端口连接所述主处理电路,所述树型模块的多个支端口分别连接多个从处理电路中的一个从处理电路;所述树型模块,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令。
3.如权利要求1所述的数据处理装置,其特征在于,
所述处理器核还包括分支处理电路;
所述主处理电路,具体用于将任务队列中的任务分配成多个数据块,将所述多个数据块中的至少一个数据块、权值以及多个运算指令中的至少一个运算指令发送给所述分支处理电路;
所述分支处理电路,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令;
所述多个从处理电路,用于依据该运算指令对接收到的数据块以及权值执行运算得到中间结果,并将中间结果传输给所述分支处理电路;
所述主处理电路,用于将分支处理电路发送的中间结果进行后续处理得到该运算指令的结果,将该运算指令的结果发送给所述控制单元。
4.如权利要求1所述的数据处理装置,其特征在于,
所述多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,所述主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个从处理电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路;
所述k个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发;
所述主处理电路,用于将一个输入数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述k个从处理电路;
所述k个从处理电路,用于转换所述主处理电路与所述多个从处理电路之间的数据;
所述多个从处理电路,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述k个从处理电路;
所述主处理电路,用于将所述k个从处理电路发送的中间结果进行后续处理得到该运算指令的结果,将该运算指令的结果发送给所述控制单元。
5.如权利要求1至4任一项所述的数据处理装置,其特征在于,所述任务配置信息存储单元包括:
多个存储单元,用于根据配置信息将多个任务队列分别存储至各个存储单元。
6.如权利要求1至4任一项所述的数据处理装置,其特征在于,所述配置信息包括任务的开始标志、和/或任务的结束标志、和/或任务的优先级、和/或任务的启动方式。
7.如权利要求5所述的数据处理装置,其特征在于,所述多个存储单元包括:
第一存储单元,用于存储第一任务队列;
第二存储单元,用于存储第二任务队列。
8.如权利要求7所述的数据处理装置,其特征在于,所述第一任务队列包括高优先级任务队列,所述第二任务队列包括低优先级任务队列。
9.一种数据处理方法,其特征在于,应用于数据处理装置,所述数据处理装置包括:自启动任务队列装置和外部装置;所述自启动任务队列装置与所述外部装置相连,所述自启动任务队列装置包括:任务配置信息存储单元和任务队列配置单元;所述方法包括:
所述任务配置信息存储单元存储任务的配置信息;
所述任务队列配置单元根据所述任务配置信息存储单元的配置信息对任务队列进行配置;
所述外部装置提供配置信息以及执行任务队列;所述外部装置包括一个或多个处理器核;每个所述处理器核包括一个主处理电路和与所述主处理电路相连的多个从处理电路;所述任务队列配置单元用于将经过配置的任务队列发送至控制单元;所述控制单元用于监测自启动任务队列装置的配置信息,对存储单元的运算指令进行配置,控制运算单元和所述存储单元执行任务队列中的任务,每执行完一个任务向任务配置信息存储单元发送一个第一结束信号;所述任务配置信息存储单元用于每接收到一个第一结束信号后向控制单元发送中断信号;所述控制单元用于处理中断信号并发送第二结束信号给任务配置信息存储单元。
10.如权利要求9所述的数据处理方法,其特征在于,
所述处理器核包括:树型模块,所述树型模块包括:一个根端口和多个支端口,所述树型模块的根端口连接所述主处理电路,所述树型模块的多个支端口分别连接多个从处理电路中的一个从处理电路;所述树型模块,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令。
11.如权利要求9所述的数据处理方法,其特征在于,
所述处理器核还包括分支处理电路;
所述主处理电路,具体用于将任务队列中的任务分配成多个数据块,将所述多个数据块中的至少一个数据块、权值以及多个运算指令中的至少一个运算指令发送给所述分支处理电路;
所述分支处理电路,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令;
所述多个从处理电路,用于依据该运算指令对接收到的数据块以及权值执行运算得到中间结果,并将中间结果传输给所述分支处理电路;
所述主处理电路,用于将分支处理电路发送的中间结果进行后续处理得到该运算指令的结果,将该运算指令的结果发送给所述控制单元。
12.如权利要求9所述的数据处理方法,其特征在于,
所述多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,所述主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个从处理电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路;
所述k个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发;
所述主处理电路,用于将一个输入数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述k个从处理电路;
所述k个从处理电路,用于转换所述主处理电路与所述多个从处理电路之间的数据;
所述多个从处理电路,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述k个从处理电路;
所述主处理电路,用于将所述k个从处理电路发送的中间结果进行后续处理得到该运算指令的结果,将该运算指令的结果发送给所述控制单元。
13.如权利要求9至12任一项所述的数据处理方法,其特征在于,所述任务配置信息存储单元根据配置信息将多个任务队列分别存储至其各个存储单元。
14.如权利要求9或12任一项所述的数据处理方法,其特征在于,所述配置信息包括任务的开始标志、和/或任务的结束标志、和/或任务的优先级、和/或任务的启动方式。
15.如权利要求13所述的数据处理方法,其特征在于,所述存储单元的第一存储单元存储第一任务队列,第二存储单元存储第二任务队列。
16.如权利要求14所述的数据处理方法,其特征在于,所述存储单元的第一存储单元存储第一任务队列,第二存储单元存储第二任务队列。
17.如权利要求15所述的数据处理方法,其特征在于,所述第一任务队列包括高优先级任务队列,所述第二任务队列包括低优先级任务队列。
18.如权利要求16所述的数据处理方法,其特征在于,所述第一任务队列包括高优先级任务队列,所述第二任务队列包括低优先级任务队列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010617408.9A CN111553473B (zh) | 2017-07-05 | 2018-07-05 | 数据冗余方法及执行数据冗余方法的神经网络处理器 |
Applications Claiming Priority (11)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710541899 | 2017-07-05 | ||
CN2017105418991 | 2017-07-05 | ||
CN201710578784.XA CN109254867B (zh) | 2017-07-14 | 2017-07-14 | 数据冗余方法及装置 |
CN201710578784X | 2017-07-14 | ||
CN201710677922.XA CN109376845B (zh) | 2017-08-09 | 2017-08-09 | 动态调整方法及动态调整协处理器 |
CN201710677922X | 2017-08-09 | ||
CN201710793531.4A CN107578014B (zh) | 2017-09-06 | 2017-09-06 | 信息处理装置及方法 |
CN2017107935314 | 2017-09-06 | ||
CN2017109101247 | 2017-09-29 | ||
CN201710910124.7A CN109583577B (zh) | 2017-09-29 | 2017-09-29 | 运算装置及方法 |
PCT/CN2018/094710 WO2019007406A1 (zh) | 2017-07-05 | 2018-07-05 | 一种数据处理装置和方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010617408.9A Division CN111553473B (zh) | 2017-07-05 | 2018-07-05 | 数据冗余方法及执行数据冗余方法的神经网络处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109478144A CN109478144A (zh) | 2019-03-15 |
CN109478144B true CN109478144B (zh) | 2021-12-14 |
Family
ID=64950607
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010617408.9A Active CN111553473B (zh) | 2017-07-05 | 2018-07-05 | 数据冗余方法及执行数据冗余方法的神经网络处理器 |
CN201880001841.0A Active CN109478144B (zh) | 2017-07-05 | 2018-07-05 | 一种数据处理装置和方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010617408.9A Active CN111553473B (zh) | 2017-07-05 | 2018-07-05 | 数据冗余方法及执行数据冗余方法的神经网络处理器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11307864B2 (zh) |
EP (3) | EP3637258A4 (zh) |
CN (2) | CN111553473B (zh) |
WO (1) | WO2019007406A1 (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019007406A1 (zh) * | 2017-07-05 | 2019-01-10 | 上海寒武纪信息科技有限公司 | 一种数据处理装置和方法 |
CN109583577B (zh) * | 2017-09-29 | 2021-04-23 | 上海寒武纪信息科技有限公司 | 运算装置及方法 |
US20190340490A1 (en) * | 2018-05-04 | 2019-11-07 | Apple Inc. | Systems and methods for assigning tasks in a neural network processor |
CN111832739B (zh) * | 2019-04-18 | 2024-01-09 | 中科寒武纪科技股份有限公司 | 一种数据处理方法及相关产品 |
CN110690902B (zh) * | 2019-09-25 | 2022-05-17 | 电子科技大学 | 一种基于随机截断的时间交织adc失配优化方法 |
US11507702B2 (en) * | 2019-11-05 | 2022-11-22 | Apple Inc. | Secure mode switching in neural processor circuit |
KR20210100277A (ko) * | 2020-02-06 | 2021-08-17 | 삼성전자주식회사 | 전력 최적화 스케쥴러의 동작 방법 및 전력 최적화 스케쥴러를 포함하는 컴퓨팅 장치 |
US11734121B2 (en) * | 2020-03-10 | 2023-08-22 | EMC IP Holding Company LLC | Systems and methods to achieve effective streaming of data blocks in data backups |
WO2022040643A1 (en) * | 2020-08-21 | 2022-02-24 | Fu Zhi Sing | Processing unit architectures and techniques for reusable instructions and data |
CN114415817B (zh) * | 2020-10-28 | 2024-05-07 | 北京小米移动软件有限公司 | 显示控制方法、电子设备及存储介质 |
CN112215243A (zh) * | 2020-10-30 | 2021-01-12 | 百度(中国)有限公司 | 图像特征提取方法、装置、设备及存储介质 |
WO2022102721A1 (ja) * | 2020-11-11 | 2022-05-19 | Assest株式会社 | うつ状態判別プログラム |
US20220237439A1 (en) * | 2021-01-22 | 2022-07-28 | Apple Inc. | Branching operation for neural processor circuit |
CN115549854B (zh) * | 2021-06-30 | 2024-07-12 | 上海寒武纪信息科技有限公司 | 循环冗余校验方法、装置、存储介质以及电子设备 |
CN113703962B (zh) * | 2021-07-22 | 2023-08-22 | 北京华胜天成科技股份有限公司 | 云资源分配方法、装置、电子设备及存储介质 |
CN113885772B (zh) * | 2021-10-08 | 2023-04-28 | 北京京航计算通讯研究所 | 一种输入交互设备的等效替代度量方法和系统 |
US11733288B2 (en) * | 2021-12-01 | 2023-08-22 | Infineon Technologies Ag | Circuits and techniques for assessing aging effects in semiconductor circuits |
US11821935B2 (en) | 2021-12-01 | 2023-11-21 | Infineon Technologies Ag | Differential aging monitor circuits and techniques for assessing aging effects in semiconductor circuits |
CN114330691B (zh) * | 2021-12-30 | 2023-08-29 | 北京奕斯伟计算技术股份有限公司 | 用于直接存储器访问装置的数据搬运方法 |
US11726746B1 (en) * | 2022-09-14 | 2023-08-15 | Moffett International Co., Limited | Vector operation acceleration with convolution computation unit |
CN115499104B (zh) * | 2022-10-24 | 2023-02-03 | 上海泰矽微电子有限公司 | 一种芯片die间的通信方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101344815A (zh) * | 2008-08-22 | 2009-01-14 | 华硕电脑股份有限公司 | 调整中央处理器电压与频率的计算机系统 |
CN102282542A (zh) * | 2008-10-14 | 2011-12-14 | 奇托尔·V·斯里尼瓦桑 | 对于多核芯片建立正式验证的并行软件的ticc-范例 |
GB201122271D0 (en) * | 2011-12-23 | 2012-02-01 | Renesas Mobile Corp | Interrupt event management |
CN103052949A (zh) * | 2010-07-16 | 2013-04-17 | 超威半导体公司 | 处理外围设备页错误的机制 |
CN103299270A (zh) * | 2011-04-29 | 2013-09-11 | 北京中天安泰信息科技有限公司 | 运行时指令重组方法及装置 |
CN104272256A (zh) * | 2012-05-24 | 2015-01-07 | 科尼龙硅公司 | 任务处理装置 |
CN104378615A (zh) * | 2013-08-13 | 2015-02-25 | 联发科技股份有限公司 | 数据处理装置以及相关数据处理方法 |
CN105045763A (zh) * | 2015-07-14 | 2015-11-11 | 北京航空航天大学 | 一种基于fpga+多核dsp的pd雷达信号处理系统及其并行实现方法 |
CN106372622A (zh) * | 2016-09-30 | 2017-02-01 | 北京奇虎科技有限公司 | 一种人脸表情分类方法及装置 |
Family Cites Families (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0827085B1 (en) * | 1996-08-20 | 2006-03-29 | Compaq Computer Corporation | Method and apparatus for distributing interrupts in a scalable symmetric multiprocessor system without changing the bus width or bus protocol |
US20020133530A1 (en) * | 2001-03-15 | 2002-09-19 | Maarten Koning | Method for resource control including resource stealing |
JP4845755B2 (ja) * | 2007-01-30 | 2011-12-28 | キヤノン株式会社 | 画像処理装置、画像処理方法、プログラム及び記憶媒体 |
CN101561768A (zh) * | 2008-04-18 | 2009-10-21 | 北京闻言科技有限公司 | 一种通用的调度多个任务的方法 |
EP2129028B1 (en) * | 2008-05-06 | 2012-10-17 | Alcatel Lucent | Recovery of transmission errorrs |
US8656145B2 (en) * | 2008-09-19 | 2014-02-18 | Qualcomm Incorporated | Methods and systems for allocating interrupts in a multithreaded processor |
CN101547144B (zh) * | 2008-12-29 | 2011-11-23 | 华为技术有限公司 | 一种提高数据传输质量的方法和装置 |
JP2010181989A (ja) * | 2009-02-04 | 2010-08-19 | Renesas Electronics Corp | データ処理装置 |
US8255774B2 (en) * | 2009-02-17 | 2012-08-28 | Seagate Technology | Data storage system with non-volatile memory for error correction |
US8423799B2 (en) * | 2009-11-30 | 2013-04-16 | International Business Machines Corporation | Managing accelerators of a computing environment |
CN102314213B (zh) | 2010-07-09 | 2016-03-30 | 精英电脑股份有限公司 | 动态调整工作频率的计算机系统 |
US20120291034A1 (en) * | 2011-05-14 | 2012-11-15 | International Business Machines Corporation | Techniques for executing threads in a computing environment |
US20130074088A1 (en) * | 2011-09-19 | 2013-03-21 | Timothy John Purcell | Scheduling and management of compute tasks with different execution priority levels |
EP2815942B1 (en) * | 2012-02-15 | 2017-11-01 | Toyota Jidosha Kabushiki Kaisha | Control device and control system |
GB2506116B (en) * | 2012-09-19 | 2015-10-21 | Jaguar Land Rover Ltd | Powertrain control system |
US20140089699A1 (en) * | 2012-09-27 | 2014-03-27 | Advanced Micro Devices | Power management system and method for a processor |
US8861270B2 (en) | 2013-03-11 | 2014-10-14 | Microsoft Corporation | Approximate multi-level cell memory operations |
JP6042274B2 (ja) * | 2013-06-28 | 2016-12-14 | 株式会社デンソーアイティーラボラトリ | ニューラルネットワーク最適化方法、ニューラルネットワーク最適化装置及びプログラム |
US10579922B2 (en) * | 2014-04-08 | 2020-03-03 | Microsoft Technology Licensing, Llc | Deep learning using alternating direction method of multipliers |
US9684559B1 (en) * | 2014-04-25 | 2017-06-20 | Altera Corporation | Methods and apparatus for storing error correction information on a memory controller circuit |
GB2529670A (en) * | 2014-08-28 | 2016-03-02 | Ibm | Storage system |
CN104268035A (zh) * | 2014-10-10 | 2015-01-07 | 深圳雷柏科技股份有限公司 | 一种存储数据的恢复方法 |
US9552510B2 (en) * | 2015-03-18 | 2017-01-24 | Adobe Systems Incorporated | Facial expression capture for character animation |
US9600715B2 (en) * | 2015-06-26 | 2017-03-21 | Intel Corporation | Emotion detection system |
CN106991477B (zh) | 2016-01-20 | 2020-08-14 | 中科寒武纪科技股份有限公司 | 一种人工神经网络压缩编码装置和方法 |
CN107704433A (zh) | 2016-01-20 | 2018-02-16 | 南京艾溪信息科技有限公司 | 一种矩阵运算指令及其方法 |
CN106991478B (zh) | 2016-01-20 | 2020-05-08 | 中科寒武纪科技股份有限公司 | 用于执行人工神经网络反向训练的装置和方法 |
CN106201651A (zh) | 2016-06-27 | 2016-12-07 | 鄞州浙江清华长三角研究院创新中心 | 神经形态芯片的模拟器 |
CN106200853A (zh) * | 2016-07-02 | 2016-12-07 | 上海与德通讯技术有限公司 | 一种唤醒电路及唤醒方法 |
CN106485324A (zh) * | 2016-10-09 | 2017-03-08 | 成都快眼科技有限公司 | 一种卷积神经网络优化方法 |
CN106447034B (zh) * | 2016-10-27 | 2019-07-30 | 中国科学院计算技术研究所 | 一种基于数据压缩的神经网络处理器、设计方法、芯片 |
CN106775977B (zh) * | 2016-12-09 | 2020-06-02 | 北京小米移动软件有限公司 | 任务调度方法、装置及系统 |
CN106845631B (zh) * | 2016-12-26 | 2020-05-29 | 上海寒武纪信息科技有限公司 | 一种流执行方法及装置 |
US10733378B2 (en) * | 2017-03-17 | 2020-08-04 | Baydin, Inc. | Analysis of message quality in a networked computer system |
WO2019007406A1 (zh) * | 2017-07-05 | 2019-01-10 | 上海寒武纪信息科技有限公司 | 一种数据处理装置和方法 |
-
2018
- 2018-07-05 WO PCT/CN2018/094710 patent/WO2019007406A1/zh unknown
- 2018-07-05 EP EP18828801.3A patent/EP3637258A4/en active Pending
- 2018-07-05 EP EP19218378.8A patent/EP3660629B1/en active Active
- 2018-07-05 CN CN202010617408.9A patent/CN111553473B/zh active Active
- 2018-07-05 CN CN201880001841.0A patent/CN109478144B/zh active Active
- 2018-07-05 EP EP19217773.1A patent/EP3660739A1/en active Pending
-
2019
- 2019-11-28 US US16/698,992 patent/US11307864B2/en active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101344815A (zh) * | 2008-08-22 | 2009-01-14 | 华硕电脑股份有限公司 | 调整中央处理器电压与频率的计算机系统 |
CN102282542A (zh) * | 2008-10-14 | 2011-12-14 | 奇托尔·V·斯里尼瓦桑 | 对于多核芯片建立正式验证的并行软件的ticc-范例 |
CN103052949A (zh) * | 2010-07-16 | 2013-04-17 | 超威半导体公司 | 处理外围设备页错误的机制 |
CN103299270A (zh) * | 2011-04-29 | 2013-09-11 | 北京中天安泰信息科技有限公司 | 运行时指令重组方法及装置 |
GB201122271D0 (en) * | 2011-12-23 | 2012-02-01 | Renesas Mobile Corp | Interrupt event management |
CN104272256A (zh) * | 2012-05-24 | 2015-01-07 | 科尼龙硅公司 | 任务处理装置 |
CN104378615A (zh) * | 2013-08-13 | 2015-02-25 | 联发科技股份有限公司 | 数据处理装置以及相关数据处理方法 |
CN105045763A (zh) * | 2015-07-14 | 2015-11-11 | 北京航空航天大学 | 一种基于fpga+多核dsp的pd雷达信号处理系统及其并行实现方法 |
CN106372622A (zh) * | 2016-09-30 | 2017-02-01 | 北京奇虎科技有限公司 | 一种人脸表情分类方法及装置 |
Non-Patent Citations (2)
Title |
---|
"Cambricon-X:An accelerator for sparse neural networks";Shijin Zhang;《2016 49th Annual IEEE/ACM International Symposium on Microarchitecture》;20161019;第1-12页 * |
"飞腾1000A处理器网络驱动的实现和优化";周浩;《中国优秀硕士学位论文全文数据库 信息科技辑》;20160315;第I137-152页 * |
Also Published As
Publication number | Publication date |
---|---|
EP3660629B1 (en) | 2023-08-30 |
CN111553473B (zh) | 2023-10-13 |
CN111553473A (zh) | 2020-08-18 |
US11307864B2 (en) | 2022-04-19 |
EP3637258A4 (en) | 2021-03-10 |
WO2019007406A1 (zh) | 2019-01-10 |
EP3637258A1 (en) | 2020-04-15 |
EP3660739A1 (en) | 2020-06-03 |
US20200104167A1 (en) | 2020-04-02 |
CN109478144A (zh) | 2019-03-15 |
EP3660629A1 (en) | 2020-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109478144B (zh) | 一种数据处理装置和方法 | |
US11307865B2 (en) | Data processing apparatus and method | |
KR102434726B1 (ko) | 처리방법 및 장치 | |
CN110163359B (zh) | 一种计算装置及方法 | |
US11593628B2 (en) | Dynamic variable bit width neural processor | |
CN110874627B (zh) | 数据处理方法、数据处理装置及计算机可读介质 | |
US20220343146A1 (en) | Method and system for temporal graph neural network acceleration | |
CN111353598A (zh) | 一种神经网络压缩方法、电子设备及计算机可读介质 | |
Lu et al. | Convolutional autoencoder-based transfer learning for multi-task image inferences | |
US20240095522A1 (en) | Neural network generation device, neural network computing device, edge device, neural network control method, and software generation program | |
US11307866B2 (en) | Data processing apparatus and method | |
US11086634B2 (en) | Data processing apparatus and method | |
CN117709497A (zh) | 对象信息预测方法、装置、计算机设备和存储介质 | |
WO2019076095A1 (zh) | 处理方法及装置 | |
US11615320B1 (en) | Method, product, and apparatus for variable precision weight management for neural networks | |
CN111198714B (zh) | 重训练方法及相关产品 | |
CN111382835A (zh) | 一种神经网络压缩方法、电子设备及计算机可读介质 | |
US20230229902A1 (en) | Key-based comparison in neural engine circuit | |
Furuta et al. | An Efficient Implementation of FPGA-based Object Detection Using Multi-scale Attention | |
US20240232571A1 (en) | Palettization of Kernel Vector in Neural Network Processor | |
US20230004800A1 (en) | Complementary sparsity in processing tensors | |
JP2024026993A (ja) | 情報処理装置、情報処理方法 | |
CN111222632A (zh) | 计算装置、计算方法及相关产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB03 | Change of inventor or designer information | ||
CB03 | Change of inventor or designer information |
Inventor after: Request for anonymity Inventor before: Request for anonymity |
|
GR01 | Patent grant | ||
GR01 | Patent grant |