CN110537194A - 被配置用于层和操作防护和依赖性管理的功率高效的深度神经网络模块 - Google Patents
被配置用于层和操作防护和依赖性管理的功率高效的深度神经网络模块 Download PDFInfo
- Publication number
- CN110537194A CN110537194A CN201880025488.XA CN201880025488A CN110537194A CN 110537194 A CN110537194 A CN 110537194A CN 201880025488 A CN201880025488 A CN 201880025488A CN 110537194 A CN110537194 A CN 110537194A
- Authority
- CN
- China
- Prior art keywords
- descriptor
- layer
- layer descriptor
- neural network
- list
- 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.)
- Granted
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 74
- 238000004891 communication Methods 0.000 claims description 27
- 230000004044 response Effects 0.000 claims description 24
- 238000000034 method Methods 0.000 claims description 20
- 238000012545 processing Methods 0.000 abstract description 36
- 230000004888 barrier function Effects 0.000 abstract description 2
- 238000011144 upstream manufacturing Methods 0.000 abstract description 2
- 210000002569 neuron Anatomy 0.000 description 46
- 238000005516 engineering process Methods 0.000 description 19
- 239000000872 buffer Substances 0.000 description 18
- 230000006870 function Effects 0.000 description 16
- 238000007689 inspection Methods 0.000 description 14
- 230000004913 activation Effects 0.000 description 13
- 230000006399 behavior Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 230000033001 locomotion Effects 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000009466 transformation Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000000712 assembly Effects 0.000 description 3
- 238000000429 assembly Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 230000005611 electricity Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 239000000654 additive Substances 0.000 description 2
- 230000000996 additive effect Effects 0.000 description 2
- 210000004556 brain Anatomy 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 210000004218 nerve net Anatomy 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 210000003127 knee Anatomy 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 210000005036 nerve Anatomy 0.000 description 1
- 210000000653 nervous system Anatomy 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000035699 permeability Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000000344 soap Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- 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/3206—Monitoring of events, devices or parameters that trigger a change in power modality
-
- 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
- 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/325—Power saving in peripheral device
- G06F1/3275—Power saving in memory, e.g. RAM, cache
-
- 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/3287—Power saving characterised by the action undertaken by switching off individual functional units in the computer system
-
- 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/0207—Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- 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
-
- 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1689—Synchronisation and timing concerns
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
-
- 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/15—Correlation function computation including computation of convolution operations
-
- 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or 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/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/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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
-
- 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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the 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/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/5033—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 data affinity
-
- 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/5061—Partitioning or combining of resources
-
- 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/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- 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/0464—Convolutional networks [CNN, ConvNet]
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/049—Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
-
- 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/0495—Quantised networks; Sparse networks; Compressed 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
-
- 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
- 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
- G06N3/065—Analogue means
-
- 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
-
- 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/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3059—Digital compression and data reduction techniques where the original information is represented by a subset or similar information, e.g. lossy compression
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3066—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction by means of a mask or a bit-map
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3088—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6005—Decoder aspects
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6011—Encoder aspects
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6058—Saving memory space in the encoder or decoder
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/70—Type of the data to be coded, other than image and sound
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
- H04L45/04—Interdomain routing, e.g. hierarchical routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/485—Resource constraint
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- 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/60—Details of cache memory
- G06F2212/6026—Prefetching based on access pattern detection, e.g. stride based prefetch
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- 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/466—Transaction processing
- G06F9/467—Transactional 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/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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/46—Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/50—Routing or path finding of packets in data switching networks using label swapping, e.g. multi-protocol label switch [MPLS]
-
- 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
-
- 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
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
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)
- Mathematical Physics (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Neurology (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Human Computer Interaction (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Advance Control (AREA)
- Memory System (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Image Processing (AREA)
- Power Sources (AREA)
- Bus Control (AREA)
- Complex Calculations (AREA)
- Multi Processors (AREA)
- Image Input (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
一种深度神经网络(DNN)处理器被配置为执行层描述符列表中的层描述符。描述符定义用于由DNN处理器执行DNN的前向传递的指令。层描述符也可以用于管理通过DNN模块的描述符流。例如,层描述符可以定义对其他描述符的依赖性。定义依赖性的描述符将不执行,直到它们所依赖的描述符已经完成。层描述符也可以定义“防护”或“屏障”功能,该功能可以用于阻止对上游层描述符的处理,直到所有下游层描述符的处理完成。防护位保证了在处理具有要声明的防护的层描述符之前,DNN处理流水线中没有其他层描述符。
Description
背景技术
在诸如人脑的生物神经系统中,在信息处理和通信模式之后,对深度神经网络(“DNN”)进行松散建模。DNN可以用来解决复杂的分类问题,诸如但不限于对象检测、语义标记和特征提取。结果,DNN形成了很多人工智能(“AI”)应用的基础,诸如计算机视觉、语音识别和机器翻译。在很多领域,DNN都可以达到或甚至超过人类的准确性。
DNN的高级性能源于它们在对大数据集使用统计学习以获取输入空间的有效表示之后,从输入数据中提取高级特征的能力。但是,DNN的优越性能是以高计算复杂度为代价的。诸如图形处理单元(“GPU”)的高性能通用处理器通常用于提供很多DNN应用所需要的高水平计算性能。
尽管诸如GPU的通用处理器可以为实现DNN提供高水平的计算性能,但是这些类型的处理器通常不适合在低功耗至关重要的计算设备中长时间执行DNN操作。例如,诸如GPU的通用处理器可能不适合在电池供电的便携式设备(诸如智能手机或替代/虚拟现实(AR/VR)设备)中执行长时间运行的DNN任务,其中需要降低功耗以延长电池寿命。
在执行诸如人体移动的检测的连续DNN任务时,降低功耗在诸如以太网供电(“POE”)安全相机的非电池供电的设备中也很重要。在该特定示例中,POE交换机只能提供有限的电量,并且减少诸如安全相机的POE设备的功耗允许使用提供更少电量的POE交换机。
与通用处理器相比,已经开发出可以在降低功耗的同时提供高性能DNN处理的专用集成电路(“ASIC”)。尽管该领域取得了进步,但仍然需要提高执行DNN处理的ASIC的性能,并且降低执行DNN处理的ASIC的功耗,尤其是在低功耗至关重要的计算设备中。
关于这些和其他技术挑战,提出了本文中进行的公开内容。
发明内容
公开了一种神经网络模块或处理器,其可以以减少DNN计算执行期间的等待时间的方式,来执行层描述符列表中的层描述符(本文中可以称为“描述符”)。所公开的神经网络模块还可以实现用于管理通过DNN模块的描述符流的功能。通过所公开的技术的实现,可以优化通过DNN模块的描述符流,从而使得DNN模块能够更快地完成其处理。更快地完成处理可以使得DNN模块能够更早地关闭,从而节省了功率。还可以通过所公开的主题的实现来实现本文中未具体提及的其他技术益处。
为了实现上面简要提及的技术益处以及潜在的其他益处,公开了一种DNN模块,该DNN模块能够取回和执行层描述符列表中包含的描述符以实现DNN。层描述符列表(本文中可以称为“描述符列表”)由诸如编译器的软件预编译,并且包括用于由DNN模块执行神经网络的前向传递的指令。
描述符列表中的描述符也可以用来配置DNN模块的操作的各方面,包括用于实现神经网络的DNN模块中的神经元的配置。在一个实施例中,描述符列表存储在用作用于DNN模块的主机的计算设备的主存储器中,并且由DNN模块加载以进行即时执行。
描述符列表可以包括几种类型的DNN层描述符(本文中可以称为“描述符”):存储器到存储器移动(“M2M”)描述符;操作描述符;主机通信描述符;配置描述符;分支描述符;以及同步描述符。这些描述符类型中的每个的配置和操作将在下面详细描述。
如上所述,所公开的DNN模块还可以被配置用于层和操作防护和依赖性管理。特别地,上述层描述符可以用于管理通过DNN模块的描述符流。例如,层描述符可以定义对其他描述符的依赖性。每个描述符可以包括在整个处理流水线中随描述符一起携带的唯一标识(“ID”)标签。当描述符完成处理之后,指示针对描述符类型的最近完成的描述符的描述符ID放置在寄存器中。每种描述符类型可以具有用于跟踪与完成的层描述符相关联的ID的单独的寄存器。
如果层描述符指定对另一层描述符的依赖性,则DNN模块将最后完成的描述符的层ID与当前描述符所依赖的描述符的ID进行比较。如果最后完成的描述符ID高于当前描述符所依赖的描述符的ID,则当前描述符可以开始处理,因为依赖性已经满足。但是,如果最后完成的描述符的ID低于当前描述符所依赖的描述符的ID,则当前描述符将暂缓,直到其依赖性满足。
层描述符还可以定义“防护”或“屏障”功能,该功能用于防止对上游层描述符的处理,直到所有下游层描述符的处理完成。例如,在一个实施例中,M2M描述符可以通过防护位来指定不对其进行处理,直到它之前的所有描述符完成并且接收到它们的完成存储的写入响应。防护位保证了在处理具有要声明的防护的层描述符之前,DNN处理流水线中没有其他层描述符。
如将在下面更详细描述的,M2M描述符与操作描述符分开地被缓存,并且可以在明确地设置依赖性的情况下尽快被执行。结果,可以减少通常在获取数据以供DNN模块中的神经元进行处理时所使得的等待时间,因此,神经元可以比其他方式更快地完成其处理。然后,DNN模块可以比其他方式更早地断电,从而节省了功率。
如下面也将更详细描述的,所公开的技术可以使得能够优化通过DNN模块的描述符流,从而使得DNN模块能够更快地完成其处理,从而节省功率。还可以通过所公开的技术的实现来实现本文中未具体确定的其他技术益处。
应当理解,上述主题可以被实现为计算机控制的装置、计算机实现的方法、计算设备或诸如计算机可读介质的制品。通过阅读以下“具体实施方式”并且查看相关附图,这些和各种其他特征将变得很清楚。
提供本“发明内容”以便以简化的形式介绍下面在“具体实施方式”中进一步描述的所公开的技术的一些方面。本“发明内容”既不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。此外,所要求保护的主题不限于能够解决在本公开的任何部分中指出的任何或所有缺点的实现。
附图说明
图1是示出根据一个实施例的可以实现本文中公开的技术的DNN模块的配置和操作的各方面的计算架构图;
图2是示出根据一个实施例的用于创建和执行层描述符列表的说明性环境的各方面的计算系统图;
图3是示出根据一个实施例的图2所示的层描述符列表的附加方面的数据结构图;
图4A是示出根据一个实施例的操作描述符的配置的各方面的数据结构图;
图4B是示出根据一个实施例的M2M描述符的配置的各方面的数据结构图;
图5是示出根据一个实施例的关于能够执行层描述符列表中的描述符的DNN模块的配置的细节的计算架构图;
图6是示出根据本文中公开的一个实施例的例程的流程图,该例程示出了用于执行层描述符列表中的描述符的DNN模块的操作的各方面;
图7是示出根据一个实施例的DNN模块的配置和操作的附加细节的计算架构图,DNN模块被配置用于执行层描述符列表中的描述符,并且提供层和操作防护和依赖性管理;
图8是示出根据一个实施例的用于执行防护操作的DNN模块的操作的各方面的数据结构图;
图9A至图9C是示出根据一个实施例的用于执行操作依赖性的DNN模块的操作的各方面的数据结构图;
图10是示出根据本文中公开的一个实施例的例程的流程图,该例程示出了用于提供层和操作防护和依赖性管理的DNN模块的操作的各方面;
图11是示出根据一个实施例的可以用作本文中提出的用于DNN模块的应用主机的计算设备的说明性计算机硬件和软件架构的计算机架构图;以及
图12是示出根据本文中呈现的各种实施例的可以在其中实现所公开的技术的各方面的分布式计算环境的网络图。
具体实施方式
以下详细描述涉及一种神经网络模块,其可以执行层描述符列表中的描述符以有效地执行DNN计算。如上所述,DNN模块还可以实现用于管理通过DNN模块的描述符流的功能。通过所公开的技术的实现,可以优化通过DNN模块的描述符流,从而使得DNN模块能够更快地完成其处理。更快地完成处理可以使得DNN模块能够更早地关闭,从而节省了功率。还可以通过所公开的主题的实现来实现本文中未具体提及的其他技术益处。
虽然本文中描述的主题是在硬件DNN模块的一般上下文中介绍的,但本领域技术人员将认识到,可以结合其他类型的计算系统和模块来执行其他实现。本领域技术人员还将认识到,本文中描述的主题可以与其他计算机系统配置一起实践,包括手持式设备、多处理器系统、基于微处理器的或可编程的消费电子产品、嵌入在设备(诸如可穿戴计算设备、汽车、家庭自动化等)中的计算或处理系统、小型计算机、大型计算机等。
在下面的详细描述中,参考构成其一部分的附图,并且通过说明的方式示出了具体的配置或示例。现在参考附图,其中贯穿几个附图,相同的数字表示相同的元素,将描述可以执行层描述符列表中的描述符以有效执行DNN计算的神经网络模块的各个方面。
图1是示出根据一个实施例的实现本文中公开的技术的DNN模块105的配置和操作的各方面的计算架构图。在一些实施例中,本文中公开的DNN模块105被配置为解决分类问题(和相关问题),诸如但不限于对象检测、语义标记和特征提取。
为了提供该功能,DNN模块105可以实现仅召回神经网络,并且以编程方式支持多种网络结构。由DNN模块105实现的网络的训练可以在服务器场、数据中心或其他合适的计算环境中脱机执行。训练DNN的结果是被称为“权重”或“内核”的一组参数。这些参数表示可以应用于输入的转换函数,其结果是分类或语义标记输出。
本文中公开的DNN模块105可以被认为是超标量处理器。DNN模块105可以将一个或多个指令分派给多个执行单元(称为神经元105F)。执行单元可以是“同时分派同时完成”,其中每个执行单元与每个其他执行单元同步。DNN模块105可以被分类为单指令流多数据流(“SIMD”)架构。
DNN模块105包括多个神经元105F(例如,二的幂)。神经元105F是人工神经网络中用于对大脑中的生物神经元进行建模的基本单元。神经元105F的模型可以包括输入矢量的内积,其中权重矢量被添加到偏置,并且应用了非线性。由本文中描述的DNN模块105中的神经元105F执行的处理被紧密地映射到人造神经元。
DNN模块105中的每个神经元105F能够执行加权总和、最大合并、旁路和潜在的其他类型的操作。神经元105F在每个时钟周期处理输入和权重数据。就内核内的进度而言,每个神经元105F与所有其他神经元105F同步,以最小化DNN模块105内的内核数据流。
每个神经元105F可以包含乘法器、加法器、比较器和多个累加器(图1中未示出)。通过具有多个累加器,神经元105F可以一次为多个不同的活动内核保持上下文。每个累加器能够从BaSRAM 150(如下所述)的读取来加载。累加器可以将其自身与来自其他神经元105F的其他累加器的内容求和。
DNN模块105接受平面数据作为输入,诸如图像数据。然而,DNN模块105的输入不限于图像数据。而是,DNN模块105可以对以统一平面格式呈现给DNN模块105的任何输入数据进行操作。在一个特定实施例中,DNN模块105可以接受多平面一字节或两字节数据帧作为输入。
每个输入帧可以与一组NxKxHxW个内核进行卷积,其中N是内核数,K是每个内核的通道数,H是高度,W是宽度。在跨输入数据的重叠间隔上执行卷积,其中间隔由X和Y方向上的跨度定义。这些函数由神经元105F执行,并且由DNN模块105和软件可见控制寄存器进行管理。
DNN模块105支持三种主要的数据类型:权重;输入数据/特征图;以及激活数据。在大多数情况下,输入数据/特征图和激活数据是针对同一数据的两个名称,区别在于,在涉及层的输出时,使用术语激活数据。当涉及层的输入时,使用术语输入数据/特征图。
DNN模块105中的神经元105F计算其输入的加权总和,并且使加权总和通过“激活函数”或“传递函数”。传递函数通常具有S形形状,但也可以采用以下形式:分段线性函数、阶跃函数或另一种函数。激活函数允许神经元105F在分类边界为非线性的情况下训练到更大的一组输入和期望输出。
DNN模块105对与神经网络的层相对应的层描述符列表进行操作。DNN模块105可以将层描述符列表视为指令。这些描述符可以从存储器中预先提取到DNN模块105中并且按顺序执行。描述符列表用作DNN模块105的一组指令。可以在DNN模块105外部的设备上执行软件工具和/或编译器,以创建在DNN模块105上执行的描述符列表。
通常,可以有两个主要类别的描述符:M2M描述符;以及操作描述符。M2M描述符可以用于将数据往返于主存储器与本地缓冲器(即,下述行缓冲器125)之间来回移动以供操作描述符消费。M2M描述符遵循与操作描述符不同的执行流水线。用于M2M描述符的目标流水线可以是内部DMA引擎105B或配置寄存器105G,而用于操作描述符的目标流水线可以是神经元105F。
操作描述符包括定义神经元105F应当对位于本地静态随机存取存储器(“SRAM”)存储器中的数据结构执行的特定操作的数据。操作描述符按顺序处理,并且能够执行很多不同的层操作,本文中描述其中的至少一些操作。关于M2M描述符、操作描述符和几种其他类型的描述符以及用于执行描述符的机制的附加细节将在下面关于图2-6提供。
如图1所示,DNN模块105具有带有唯一的L1和L2缓冲器结构的存储器子系统。图1所示的L1和L2缓冲器是专门为神经网络处理而设计的。作为示例,L2缓冲器150可以通过以选择的频率(例如,每秒十六吉比特(16GBps))操作的高速专用接口来保持选择的存储容量(例如,一兆字节(1MB))。L1缓冲器125可以保持可以在内核数据与激活数据之间分配的选择的存储容量(例如,八千字节(8KB))。L1缓冲器125在本文中可以称为“行缓冲器125”,并且L2缓冲器150在本文中可以称为BaSRAM 150。
在一些实施例中,计算数据(即,输入数据、权重和激活数据)存储在BaSRAM 150行主序中。可以将计算数据组织为两个行缓冲器,其中一个行缓冲器包含输入数据(本文中可以称为“输入缓冲器”),另一行缓冲器(本文中可以称为“权重缓冲器”)包含内核权重。行缓冲器由加载/存储单元105C从BaSRAM 150填充。数据在每个行缓冲器中累积,直到达到预定容量。然后,在一些实施例中,将行缓冲器数据复制到阴影缓冲器,并且呈现给神经元105F。
DNN模块105还可以包括其他组件,包括但不限于寄存器接口105G、预取单元105A、保存/恢复单元105E、层控制器105D和寄存器接口105G。在一些实施例中,DNN模块105可以包括附加或备选组件。
在一些配置中,DNN模块105与其他外部计算组件相结合操作。例如,在一些实施例中,DNN模块105连接到片上主机应用处理器系统(“主机SoC”)130。DNN模块105可以例如通过PCIe接口连接到主机SoC 130。适当的PCIe组件(诸如PCIe端点135)可以用于启用这些连接。
在一些实施例中,主机SoC 130用作用于DNN模块105的应用处理器。主操作系统、应用和辅助传感器处理由主机SoC 130执行。主机SoC 130还可以连接到向DNN模块105提供输入数据(诸如图像数据)的输入数据源102(诸如外部相机)。
DDR DRAM 155还可以连接到主机SoC 130,DDR DRAM 155可以用作主系统存储器。该存储器通过存储器控制器145在高带宽结构120(例如,PCIe总线)上从主机SoC 130可访问。高带宽结构120提供双向直接存储器访问(“DMA”)小型消息传递事务和较大DMA事务。桥接器115和低带宽结构110可以将DNN模块105连接到主机SoC 130以用于子模块配置和其他功能。
DNN模块105可以包括被配置为将数据移入和移出主存储器155的DMA引擎105B。在一些实施例中,DMA引擎105B具有两个通道。一个通道专用于获取操作描述符,而另一通道专用于M2M操作。DMA描述符可以嵌入在M2M描述符中。在这种情况下,描述符是用于移动存储器的内容的DMA描述符,请勿与本文中描述的操作描述符混淆。
为了卸载本地BaSRAM存储器150,并且为了为输入数据和权重数据提供更多空间,激活输出可以可选地直接流传输到DDR存储器155。当将数据流传输到DDR存储器155时,DNN模块105将累积足以用于高带宽结构120上的突发事务的数据,并且将缓冲足以最小化神经元105F上的背压的事务。下面将提供关于DNN模块105的操作的附加细节。
图2是示出根据一个实施例的用于创建和执行层描述符列表202的说明性环境的各方面的计算系统图。如以上简要描述的,DNN模块105可以取回和执行层描述符列表202中包含的层描述符204以实现DNN。
层描述符列表202由诸如在开发计算设备208上执行的编译器206等软件预编译,并且对应于神经网络的层。层描述符列表202可以在开发计算设备208上或在另一环境中创建,并且被部署到托管DNN模块105的设备210(在本文中可以称为“主机210”)。DNN模块105将层描述符204视为指令,并且可以执行层描述符204以执行神经网络的前向传递。
在一个实施例中,层描述符列表202存储在主机210的主存储器中,并且由DNN模块加载以用于即时执行。描述符204可以按顺序从主机210的存储器预取到DNN模块105中并且执行。
层描述符列表204可以包括几种类型的DNN层描述符204:M2M描述符204B;操作描述符204C;主机通信描述符204D;配置描述符204A;分支描述符204E(在图3中示出并且在下面描述);以及同步描述符204F。这些描述符类型中的每个在下面描述。在其他实施例中,可以使用其他类型的层描述符。
M2M描述符204B可以用于将数据往返于主机计算设备210的主存储器与本地缓冲器(即,下面描述的行缓冲器125)以供操作描述符204消耗,如下所述。在一个实施例中,DNN模块105中的DMA引擎(图1中未示出)利用M2M描述符204B来执行DMA操作。
M2M描述符204B包括指定定义去往和来自任何存储器地址的多维跨度DMA操作的参数的字段。例如而非限制,可以执行M2M描述符以将要由DNN模块105中的神经元105F操作的输入数据和权重数据从主机计算设备210的存储器传输到DNN模块105中的存储器,诸如高速缓存存储器。M2M描述符204B包括定义这种存储器传输的参数的数据。关于这些参数中的至少一些的细节将在下面关于图4B提供。
操作描述符204C指定DNN模块105中的神经元105F应当对由M2M描述符获取的数据执行的操作。例如,操作描述符204C可以定义要由神经元105F执行的算术运算,诸如但不限于加法组合、标量乘法和加法、卷积、解卷积、最大池化或完全连接层。
操作描述符204C还可以指定要由神经元105F使用的激活函数(诸如但不限于ReLU激活函数和基于查找表的激活函数)、以及要由神经元105F在执行这些操作时使用的数学精度。
操作描述符204C还可以包括用于配置DNN模块105的硬件的操作的各方面的微代码。操作描述符204C可以包括其他字段,这些字段包含定义用于实现DNN的神经元105F的配置的各方面的数据,其中的一些在下面参考图4A描述。
配置描述符204A启用DNN模块105的配置状态的修改。例如,可以执行配置描述符204A,以配置DNN模块105如何执行舍入操作、功率管理或启用和禁用神经元。
主机通信描述符204D使得DNN模块105能够中断主机计算设备210,以提供状态消息和/或其他类型的数据。例如,DNN模块105可以执行主机通信描述符204D,以向主机计算设备210提供关于DNN的层的状态或完成的数据。
通过指示神经元105F暂停其处理直到神经网络的其他神经元105F完成其处理,可以利用同步描述符204F同步DNN模块105中多个神经元105F的执行。在其他实施例中,可以定义和执行其他类型的描述符。
在一个实施例中,编译器206向每个描述符204分配唯一的标识ID标签212(可以称为“ID 212”)。ID标签212是编译器206基于描述符在层描述符列表202中的位置而分配给每个描述符204的单调递增数字。
在图2所示的示例中,例如,配置描述符204A将具有列表202中的描述符204的最低ID标签212A。针对描述符204D的ID标签212G将具有列表202中的描述符204的最高标签ID212G。
如将在下面关于4A和4B详细描述的,在一些实施例中,标签ID 212存储在描述符204内。如还将在下面更详细描述的,标签ID 212可以用于执行依赖性并且执行防护操作。
图3是示出根据一个实施例的图2所示的层描述符列表202的其他方面的数据结构图。特别地,图3示出了包括分支描述符204E的层描述符列表202A的各方面。当指定条件满足时,分支描述符204E使得执行能够在描述符204或层描述符列表202之间分支。
在图3所示的示例中,例如,已经定义了分支描述符204E,分支描述符204E在被执行时,将基于指定条件的评估来将执行分支到层描述符列表202B的头部或层描述符列表202C的头部。在其他实施例中,可以以其他方式执行对描述符204的执行的分支。
图4A是示出根据一个实施例的用于操作描述符204C的配置的各方面的数据结构图。如图4A所示,操作描述符204C可以包括字段402A-402I,字段402A-402I存储定义特定操作的数据,DNN模块105中的神经元105F应当对通过M2M描述符204B的执行而获取的数据执行该特定操作。在一个实施例中,操作描述符204C是对该信息进行编码的128字节宽的数据结构。在其他实施例中,操作描述符204C可以以其他方式实现。
在一个实施例中,操作描述符204C包括字段402A,字段402A存储定义要由神经元105F执行的操作类型的数据,诸如但不限于加法组合、标量乘法和加法、卷积、解卷积、最大池化或完全连接层。操作描述符204C还可以包括字段402B,字段402B存储指定要由神经元105F在指定处理操作期间使用的激活函数的数据,诸如但不限于ReLU激活函数和基于查找表的激活函数。操作描述符204C还可以包括字段402G,字段402G指定要由神经元105F在执行操作时利用的数学精度。
操作描述符204C还可以包括字段402C,字段402C存储指示神经元105F在其处理完成时暂停的数据。操作描述符204C还可以包括字段402D,字段402D存储数据,该数据将使得DNN模块105阻止对描述符204的进一步处理直到在其之前的所有描述符204(即,具有较低ID标签)已完成其处理并且已从其完成存储接收到写入响应(该过程在本文中称为“防护”)。这可以用来确保在描述符处理流水线中没有剩余其他描述符204。在一个实施例中,用于操作描述符204的ID标签212存储在字段402R中。下面关于图7、8和10提供关于防护操作的执行的附加细节。
操作描述符204C还可以包括字段402E,字段402E嵌入用于配置DNN模块105的硬件的操作的各方面的微代码。例如而非限制,字段402E中的微代码可以由DNN模块105提取并且被执行,以配置实现神经元105F的硬件。作为特定示例,微代码可以被执行,以配置如何执行卷积操作、配置迭代器、和/或配置神经元105F的操作的其他方面。
操作描述符204C还可以包括字段402F,字段402F存储定义对另一描述符204的完成执行的依赖性的数据。具有依赖性集合表示描述符将不被执行,直到在字段402F中标识的描述符已经完成其操作。字段402F可以被设置为零以指示描述符204不具有依赖性,并且因此应当对该描述符204禁用依赖性检查。
为了启用依赖性检查,DNN模块105可以保持存储最近完成的描述符204的ID标签212的寄存器。可以保持用于标识最近完成的M2M描述符204B和最近完成的操作描述符204C的单独的寄存器。DNN模块105将释放依赖性并且基于这些寄存器中存储的值来执行防护。下面关于图7、9A-9C和10提供关于依赖性管理的附加细节。
应当理解,由于M2M描述符204B是按顺序执行的,因此不必设置两个M2M描述符204B之间的依赖性。因此,M2M描述符204B的执行可以取决于操作描述符204C的执行的完成,并且操作描述符204C的执行可以取决于M2M描述符204B的执行的完成。在某些情况下,操作描述符204B的执行也可以取决于另一操作描述符204B的完成。
M2M描述符204B和操作描述符204C还可以取决于以上标识的其他描述符类型的完成执行。例如,在图2所示的示例中,M2M描述符204B的执行可以取决于配置描述符204A的完成执行。类似地,主机通信描述符204D的执行可以取决于第二操作描述符204C的完成执行。在本文中公开的实施例中,以上标识的不同类型的描述符204可以彼此依赖。
操作描述符204C还可以包括字段402H和402I,字段402H和402I存储定义到操作的输入数据和由操作生成的输出数据(本文中可以称为“斑点”)的各方面的数据。这些字段可以包括例如标识以下各项的数据:用于输入和输出数据的存储器地址、输入和输出数据的尺寸、输入和输出数据的精度、特征计数、输入数据的高度和宽度、通道数、输出数据的高度和宽度、填充配置和跨步配置。在其他实施例中,可以在操作描述符204C中指定输入和输出数据的其他方面。
应当理解,字段402A-402I仅是说明性的。在其他实施例中,操作描述符204C可以包括附加或备选字段,其存储定义要由神经元105F执行以实现DNN的操作的其他方面的数据。
图4B是示出根据一个实施例的M2M描述符204B的配置的各方面的数据结构图。如上所述,M2M描述符204B包括指定定义往返于任何存储器地址的多维跨度DMA操作的参数的字段。在一个实施例中,M2M描述符204B是编码该信息的128字节宽的数据结构。在其他实施例中,M2M描述符204B可以以其他方式实现。
在一个实施例中,M2M描述符204B包括指示描述符是M2M描述符204B的字段402A。M2M描述符204B还可以包括存储诸如以上针对M2M描述符204B描述的ID标签212的字段402R。M2M描述符204B还可以包括也以上述方式指定对另一描述符204的完成执行的依赖性的字段402F。类似地,M2M描述符204B可以包含字段402D,字段402D存储数据,该数据将使得DNN模块105阻止对描述符204B的进一步处理、直到在其之前的所有描述符204完成其处理并且从其完成存储接收到写入响应(即,上述防护操作)。下面将关于图7-10提供关于这些防护和依赖性管理操作的附加细节。
M2M描述符204B还可以包括指定用户定义的传输ID的字段402J。通过在该字段中存储唯一编号并且监测DNN模块105的操作状态寄存器中的相应字段,软件可以标识当前正在执行的传输。
M2M描述符204B还可以包括指定要传输的数据的各方面的字段402K-402P。例如而非限制,这些字段可以分别存储标识源跨度(即,DMA传输的连续行的第一字节之间的字节数)、目的地跨度、X和Y维度上的操作大小、源存储器地址和目的地存储器地址。在其他实施例中,M2M描述符204B可以包括存储定义M2M操作的其他方面的数据的附加或备选字段。
图5是示出根据一个实施例的关于被配置为执行层描述符列表202中的描述符204的DNN模块105的配置的细节的计算架构图。在该实施例中,DNN模块105包括执行用于取回和路由层描述符列表202中的描述符204的操作的描述符列表控制器(“DLC”)500。
如图5所示,主机CPU 502(即,主机计算设备210中的CPU)向DLC 500提供标识要执行的层描述符列表202的数据。在一个实施例中,该数据存储在描述符队列504中。描述符获取单元506又从描述符队列504中取回数据,并且指示DMA引擎105B取回所标识的层描述符列表202。DMA引擎105B从主机计算机210的DRAM155中取回层描述符列表202,并且将层描述符列表202存储在由DLC 500提供的高速缓存508中。
在一些实施例中,依赖性/防护检查单元510从高速缓存508中取回描述符204,并且执行上述防护和依赖性检查。关于这些处理操作的细节将在下面关于图7-10提供。在依赖性/防护检查单元510处理之后,层描述符列表202中的描述符204被提供给路由引擎512。
路由引擎512将不同类型的描述符路由到不同的流水线。例如,在图5所示的示例中,路由引擎512已经将M2M描述符204B路由到DMA引擎105B。如上所述,DMA引擎105B可以利用M2M描述符204B的内容,将要由DNN模块105中的神经元105F进行操作的输入数据和权重数据从主机计算设备210的存储器传输到DNN模块105中的存储器,诸如高速缓存。
在图5所示的示例中,路由引擎512还已经将操作描述符204C路由到操作控制器514以执行。操作控制器514将利用操作描述符204C来配置神经元105F。一旦被配置,神经元105F可以处理通过M2M描述符204B的执行而取回到的数据。可以针对诸如上面描述的附加描述符204、和附加层描述符列表202重复该过程。以下关于图7更详细地讨论关于由DLC500实现的处理流水线的附加细节。
还如图5所示,路由引擎512可以利用配置描述符204A来设置定义DNN模块105的配置的配置寄存器516的状态。还如图5所示,主机CPU 502还可以独立地访问配置寄存器516,以设置或取回DNN模块105的配置状态。例如,主机CPU 502可以以使得DNN模块105在DNN处理完成之后断电的方式设置配置寄存器516。在其他实施例中,主机CPU 502可以利用配置寄存器516来设置DNN模块105的配置状态的其他方面。寄存器516可以在包含DNN模块105的功率岛外部,以便在DNN模块105断电时允许主机210访问寄存器516。
如上所述,并且下面关于图7进一步讨论,DLC 500与操作描述符204C分开地缓冲M2M描述符204B。以这种方式,在明确设置依赖性的情况下,可以尽快执行M2M描述符204B。结果,可以减少通常在获取数据以供DNN模块105中的神经元105F处理时所引起的等待时间,因此,神经元105F可以比其他情况下更快地完成其处理。然后,DNN模块105可以比其他方式更早地断电,从而节省功率。还可以通过所公开的技术的实现来实现本文中未具体确定的其他技术益处。
图6是示出根据本文中公开的一个实施例的例程600的流程图,该例程600示出了用于执行层描述符列表202中的描述符204的参考图1-5描述的DNN模块105的操作的各方面。应当理解,本文中关于图6和其他图描述的逻辑操作可以实现为(1)在计算设备上运行的一系列计算机实现的动作或程序模块,和/或(2)诸如DNN模块105的计算设备内的互连的机器逻辑电路或电路模块。
本文中公开的技术的特定实现是取决于计算设备的性能和其他要求的选择问题。因此,本文中描述的逻辑操作被不同地称为状态、操作、结构设备、动作或模块。这些状态、操作、结构设备、动作和模块可以用硬件、软件、固件、专用数字逻辑及其任何组合来实现。应当理解,可以执行比附图中示出和本文中描述的更多或更少的操作。这些操作也可以以与本文中描述的顺序不同的顺序执行。
例程600开始于操作602,在操作602,DLC 500从主机CPU 502接收描述在主机DRAM155中的描述符列表202的位置的数据。该数据放置在描述符队列504中。然后,例程600从操作602前进到操作604,在操作604,描述符获取单元506指示DMA引擎105B从主机DRAM 155中取回层描述符列表202。DMA引擎105B又取回层描述符列表202,并且将列表202存储在高速缓存508中。然后,例程600从操作604前进到操作606。
在操作606,从高速缓存508中取回描述符列表202中的第一描述符204。然后,例程600前进到操作608,在操作608,依赖性/防护检查单元510确定描述符204是否指示防护或依赖性。如果是,则例程600从操作608前进到操作610,在操作610,依赖性/防护检查单元510确定是否满足指定的防护或依赖性条件。如果是,则例程600从操作612分支到操作614。如果在操作608,依赖性/防护检查单元510确定描述符204未指示防护或依赖性,则例程600从操作608前进到操作614。下面关于图7-10提供关于用于执行依赖性和防护检查的处理操作的细节。
在操作614,路由引擎512确定当前描述符204是否是分支描述符204E。如果是,则例程600从操作614前进到操作616,在操作616,确定是否满足由分支描述符204E指定的条件。如果是,则例程600从操作616前进到操作618,在操作618,描述符204的执行分支到由分支描述符204E标识的描述符204。例程600然后从操作618回到操作608,在操作608,可以处理下一描述符204。
如果在操作614,路由引擎512确定当前描述符204不是分支描述符204E,则例程600从操作614前进到操作620。在操作620,路由引擎512确定当前描述符是否204是M2M描述符204B。如果是,则例程600从操作614前进到操作622,在操作622,路由引擎512将当前描述符204B路由到DMA引擎105B,以便执行指定的M2M操作。如果当前描述符204不是M2M描述符204B,则例程600从操作620前进到操作624。
在操作624,路由引擎512确定当前描述符204是否是操作描述符204C。如果是,则例程600从操作624前进到操作626,在操作626,路由引擎512将当前描述符204C路由到操作控制器514,以便配置神经元105F并且执行由操作描述符204C指定的处理操作。如果当前描述符204不是操作描述符204C,则例程600从操作624前进到操作628。
在操作628,路由引擎512确定当前描述符204是否是主机通信描述符204D。如果是,则例程600从操作628前进到操作630,在操作630,主机210可以被中断以便将数据从DNN模块104传输到主机210。如果当前描述符204不是主机通信描述符204D,则例程600从操作628前进到操作632。
在操作632,路由引擎512确定当前描述符204是否是同步描述符。如果是,则例程600从操作632前进到操作634,在操作634,操作控制器514以上述方式同步神经元105F。如果当前描述符204不是同步描述符,则例程600从操作632前进到操作636,在操作636,可以执行其他描述符类型。然后,例程600从操作636前进到操作638。
在操作638,DLC 500确定在描述符列表202中是否存在要执行的附加描述符204。如果否,则例程600从操作638前进到操作642,在操作642,例程600结束。如果还有待处理的附加描述符204,则例程600从操作638前进到操作640,在操作640,取回描述符列表202中的下一描述符204。然后,例程600返回到操作608,在操作608,可以以上述方式处理描述符204。
图7是示出根据一个实施例的被配置用于执行层描述符列表202中的描述符204、并且提供层和操作防护和依赖性管理的DNN模块105的配置和操作的附加细节的计算架构图。如图7所示并且在上面简要描述,路由引擎512可以将不同类型的描述符路由到不同的流水线702。
在图7所示的示例配置中,DLC 500实现三个流水线:M2M流水线702A;操作流水线702B;和配置流水线702C,每个将在下面进行描述。流水线702独立地操作,因此,例如,如果没有具体定义依赖性,则在流水线702B执行操作描述符204C的同时,流水线702A可以执行下一M2M描述符204B。如下所述,如果在流水线702种的一个流水线的描述符204中标识出未满足的依赖性,则其他流水线702可以继续执行描述符204。
路由引擎512将M2M描述符204B路由到M2M流水线702A。如图7所示,M2M流水线702A包括依赖性检查单元704A和先进先出(“FIFO”)存储器706A。依赖性检查单元704A确定M2M描述符204B是否指定依赖性(即,字段402F标识M2M描述符204的执行所依赖的另一描述符204)、或者指示在执行M2M描述符204B之前要执行防护操作(即,字段402D指示将要诸如通过被设置为逻辑“1”来执行防护操作)。
如上所述,可以通过确定存储在DNN模块105的硬件寄存器中的最近完成的层描述符204的ID标签212是否小于其所依赖的层描述符204的ID标签212来执行依赖性检查。如果最近完成的层描述符204的ID标签212不小于其所依赖的描述符的ID标签212,则将执行当前描述符204。
如果最近完成的层描述符204的ID标签212小于当前描述符所依赖的描述符的ID标签212,则当前描述符204的执行将被暂缓。当前描述符204的执行将被暂缓,直到最近完成的层描述符204的ID标签212等于当前描述符204所依赖的描述符204的ID标签212。
应当理解,必须检查依赖性的所有组合。例如,必须确定M2M描述符是否依赖于另一M2M描述符,M2M描述符是否依赖于操作描述符204C,操作描述符204C是否依赖于另一操作描述符204C,以及操作描述符204C是否依赖于M2M描述符204B。另外,还应当理解,某些依赖性情况仍然允许描述符204流过流水线702。例如,如果描述符204由于对另一描述符204的依赖性而被暂缓,并且在暂缓的描述符之后存在没有依赖性的M2M描述符204B,则M2M描述符204B可以在暂缓的描述符204周围移动并且执行。
将进一步认识到,描述符204的执行可以取决于读取操作或写入操作。例如,如果流水线702中的当前描述符204将写入由另一描述符204当前正在从其读取的存储器位置,则当前描述符必须等待直到读取操作完成。类似地,如果当前描述符204将从由另一描述符204当前正在写入的位置读取,则当前描述符204必须等待直到写入操作完成。
可以通过确定层描述符列表202中ID标签212小于当前层描述符204A的标签ID212的所有层描述符204是否已经完成执行来执行防护检查操作。这可以通过将当前描述符204的标签ID 212与最近完成的层描述符204的标签ID 212进行比较来实现。如果层描述符列表202中ID标签212小于第一层描述符204A的ID标签212的所有层描述符204已经完成执行,则将执行当前层描述符204。如果层描述符列表202中ID标签212小于第一层描述符204A的ID标签212的所有层描述符204尚未完成执行,则将不执行当前层描述符204。
一旦解决了M2M流水线702A中的M2M描述符204B中的任何防护或依赖性,就可以将当前的M2M描述符204B通过FIFO存储器706A路由到DMA引擎105B,以便以上述方式进行处理。以这种方式,防护操作保证了在处理具有要声明的防护的描述符204之前,流水线702中不存在其他描述符204。
路由引擎512还将操作描述符204C路由到操作流水线702B。依赖性检查单元704B然后可以以上述方式评估由当前操作描述符204C指定的任何防护或依赖性。一旦解决了操作流水线702B中的操作描述符204C中的任何防护或依赖性,就可以将当前操作描述符204C通过FIFO存储器706B路由到DMA引擎105B,以便以上述方式进行处理。
路由引擎512还将配置描述符204A路由到配置流水线702C。依赖性检查单元704C然后可以以上述方式评估由当前配置描述符204A指定的任何防护或依赖性。一旦解决了由当前配置描述符204A指定的防护或依赖性,就可以如上所述将当前配置描述符204A通过FIFO存储器706C路由到配置寄存器516。
图8是示出根据一个实施例的用于执行防护操作的DNN模块105的操作的各方面的数据结构图。在图8所示的示例中,层描述符列表202A包括操作描述符204C、M2M描述符204B、操作描述符204C'、M2M描述符204B'和分支描述符204E。硬件寄存器802A用于存储最近完成的M2M描述符204B的ID标签212,并且硬件寄存器802B用于存储最近完成的操作描述符204C的ID标签212。如上所述,可以保持单独的寄存器802以存储每种描述符类型的最近完成的描述符204的ID标签212。
在图8所示的示例中,首先执行操作描述符204C,并且在完成时使得寄存器802B中的值被设置为11(即,操作描述符204C的ID标签212的值)。然后,执行M2M描述符204B,并且在完成时使得寄存器802A中的值被设置为12。操作描述符204C和M2M描述符204B可以并行执行,因为这些描述符尚未设置依赖性。
然后,执行操作描述符204C',并且当完成操作时,寄存器802B的值被设置为13。然后,开始M2M描述符204B'的执行。因为M2M描述符204B'没有指定任何依赖性,所以分支描述符204E的执行可以由流水线204C并行执行。分支描述符204E指示如果指定条件满足,则将进行到描述符列表202B的头部的分支。如果指定条件不满足,则将进行到层描述符列表202C的头部的分支。
描述符列表202B中的第一描述符204是配置描述符204A。描述符204A指示要执行防护操作。类似地,描述符列表202C中的第一描述符204是配置描述符204A'。该描述符204A'还指示要执行防护操作。因此,当描述符列表202B和描述符列表202C的执行开始时,将执行防护操作。
如上所述,防护操作要求在可以执行当前描述符204之前,描述符列表202中ID标签212低于当前描述符204的所有描述符204都已经完成。在图8所示的示例中,这表示,ID标签212小于16(即,描述符204A的ID标签212)的描述符204必须在描述符204A的执行可以开始之前已经完成。通过检查寄存器802A和802B,DLC 500可以确定最近完成的描述符204是操作描述符204C',其ID标签212为13。因此,配置描述符204A(或配置204A')的执行将被暂缓,直到M2M描述符204B'完成并且寄存器802A中的值设置为14。
图9A-9C是示出根据一个实施例的用于执行操作依赖性的DNN模块105的操作的各方面的数据结构图。如在图8所示的示例中,图9A-9C所示的说明性层描述符列表202A包括操作描述符204C、M2M描述符204B、操作描述符204C'、M2M描述符204B'和分支描述符204E。硬件寄存器802A用于存储最近完成的M2M描述符204B的ID标签212,并且硬件寄存器802B用于存储最近完成的操作描述符204C的ID标签212。
在该示例中,操作描述符204C的执行首先开始。因为操作描述符204C尚未设置任何依赖性,所以可以开始M2M描述符204B的执行。然而,在该示例中,M2M描述符204B指定对操作描述符204C的依赖性。因此,如图9B所示,M2M描述符204B的执行将被暂缓,直到操作描述符204C完成并且寄存器802B的值设置为11。
如图9B所示,操作描述符204C'具有对M2M描述符204B的依赖性。因此,操作描述符204C'的执行将被暂缓,直到M2M描述符204B完成并且寄存器802A的值设置为11。一旦发生这种情况,操作描述符204C'将执行,并且在完成时将使得寄存器802B中的值被设置为13。M2M描述符204B'也将开始执行。
如图9C所示,分支描述符204E也具有依赖性集合,在这种情况下,是对M2M描述符204B'的依赖性集合。因此,分支描述符204E将被暂缓,直到M2M描述符204B'完成并且寄存器802A的值设置为14。一旦发生,执行可以分支到描述符204A或204A',这取决于对指定条件的评估结果。应当理解,图8和9A-9C所示的示例仅是说明性的,并且出于讨论目的已经被简化。
图10是示出根据本文中公开的一个实施例的例程1000的流程图,该例程1000示出了用于提供层和操作防护和依赖性管理的DNN模块105的操作的各方面。例程1000开始于操作1002,在操作1002,DLC 500确定是否要执行依赖性或防护。如果要执行依赖性,则例程1000从操作1002前进到操作1004。
在操作1004,DLC 500确定最近完成的层描述符204的ID标签212是否小于指定依赖性的描述符204的标签ID 212。如果最近完成的层描述符204的ID标签212小于指定依赖性的描述符204的标签ID 212,则表示依赖性尚未解决。因此,例程1000从操作1006前进到操作1008,在操作1008,指定依赖性的描述符204的执行被暂缓。然后,例程1000从操作1008前进到操作1012。在操作1012,处理前进到以上关于图6描述的例程600的操作612。
如果最近完成的层描述符204的ID标签212不小于指定依赖性的描述符204的标签ID 212,则表示依赖性已经解决。因此,例程1000从操作1006前进到操作1010,在操作1010,开始指定依赖性的描述符204的执行。然后,例程1000从操作1010前进到操作1012。在操作1012,处理前进到以上关于图6描述的例程600的操作612。
在操作1002,如果DLC 500确定要执行防护,则例程1000从操作1002前进到操作1014。在操作1014,DLC 500确定层描述符列表202中ID标签212小于当前层描述符204的ID标签212的所有层描述符204的执行是否已经完成。如果具有较低ID标签212的所有描述符204的执行尚未完成,则例程1000从操作1016前进到操作1020,在操作1020,当前层描述符204的执行被暂缓。例程1000然后从操作1020前进到操作1012。在操作1012,处理前进到以上关于图6描述的例程600的操作612。
如果ID标签212小于当前描述符204的所有描述符204的执行已经完成,则例程1000从操作1016前进到操作1018,在操作1018,可以开始当前描述符204的执行。然后,例程1000从操作1018前进到操作1012。在操作1012,处理前进到以上关于图6描述的例程600的操作612。
图11是示出可以用作本文中提出的针对DNN模块105的应用主机的计算设备的说明性计算机硬件和软件架构的计算机架构图。特别地,图11所示的架构可以用于实现服务器计算机、移动电话、电子阅读器、智能电话、台式计算机、AR/VR设备、平板计算机、膝上型计算机、或适合于与DNN模块105一起使用的另一种类型的计算设备。
图11所示的计算机1100包括中央处理单元1102(“CPU”)、系统存储器1104(包括随机存取存储器1106(“RAM”)和只读存储器(“ROM”)1108)、以及将存储器1104耦合到CPU1102的系统总线1110。基本输入/输出系统(“BIOS”或“固件”)可以存储在ROM 1108中,基本输入/输出系统包含用于帮助诸如在启动过程中在计算机1100内的各个元件之间传输信息的基本例程。计算机1100还包括用于存储操作系统1122、应用程序和其他类型的程序的大容量存储设备1112。大容量存储设备1112还可以被配置为存储其他类型的程序和数据。
大容量存储设备1112通过连接到总线1110的大容量存储控制器(未示出)连接到CPU 1102。大容量存储设备1112及其关联的计算机可读介质为计算机1100提供非易失性存储。尽管本文中包含的计算机可读介质的描述是指大容量存储设备,诸如硬盘、CD-ROM驱动器、DVD-ROM驱动器或USB存储密钥,但是本领域技术人员应当理解,计算机可读介质可以是计算机1100可以访问的任何可用的计算机存储介质或通信介质。
通信介质包括诸如载波或其他传输机制等调制数据信号中的计算机可读指令、数据结构、程序模块或其他数据,并且包括任何传递介质。术语“调制数据信号”是指具有以能够将信息编码在信号中的方式来改变或设置其一个或多个特性的信号。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接等有线介质、以及诸如声学、射频、红外和其他无线介质等无线介质。以上任何内容的组合也应当被包括在计算机可读介质的范围内。
作为示例而非限制,计算机存储介质可以包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。例如,计算机存储介质包括但不限于RAM、ROM、EPROM、EEPROM、闪存或其他固态存储技术、CD-ROM、数字多功能磁盘(“DVD”)、HD-DVD、BLU-RAY或其他光学存储器、磁带盒、磁带、磁盘存储器或其他磁性存储设备、或者可以用于存储期望信息并且可以由计算机1100访问的任何其他介质。出于权利要求的目的,短语“计算机存储介质”及其变体不包括波或信号本身或通信介质。
根据各种配置,计算机1100可以使用通过诸如网络1120等网络到远程计算机的逻辑连接来在联网环境中操作。计算机1100可以通过连接到总线1110的网络接口单元1116连接到网络1120。应当理解,网络接口单元1116也可以用于连接到其他类型的网络和远程计算机系统。计算机1100还可以包括用于接收和处理来自很多其他设备(包括键盘、鼠标、触摸输入、电子笔(图11中未示出)或物理传感器,诸如视频相机)的输入的输入/输出控制器1118。类似地,输入/输出控制器1118可以向显示屏或其他类型的输出设备(在图11中也未示出)提供输出。
应当理解,本文中描述的软件组件在被加载到CPU 1102中并且被执行时,可以将CPU 1102和整个计算机1100从通用计算设备转换为被定制为促进本文中介绍的功能的专用计算设备。CPU 1102可以由可以个体或共同地呈现任何数目的状态的任何数目的晶体管或其他分立电路元件构成。更具体地,响应于本文中公开的软件模块中包含的可执行指令,CPU 1102可以作为有限状态机操作。这些计算机可执行指令可以通过指定CPU 1102如何在状态之间转换来对CPU 1102进行转换,从而对构成CPU 1102的晶体管或其他分立硬件元件进行转换。
对本文中提出的软件模块进行编码还可以变换本文中提出的计算机可读介质的物理结构。在本说明书的不同实现中,物理结构的特定变换取决于各种因素。这样的因素的示例包括但不限于用于实现计算机可读介质的技术、计算机可读介质的特征是主要存储还是辅助存储等。例如,如果计算机可读介质被实现为基于半导体的存储器,则可以通过变换半导体存储器的物理状态来将本文中公开的软件编码在计算机可读介质上。例如,该软件可以变换构成半导体存储器的晶体管、电容器或其他分立电路元件的状态。该软件还可以转换这些组件的物理状态,以便在其上存储数据。
作为另一示例,本文中公开的计算机可读介质可以使用磁性或光学技术来实现。在这样的实现中,当软件被编码在其中时,本文中提出的软件可以变换磁性或光学介质的物理状态。这些变换可以包括改变给定磁性介质内的特定位置的磁性特性。这些变换还可以包括改变给定光学介质内的特定位置的物理特征或特性,以改变这些位置的光学特性。在不背离本说明书的范围和精神的情况下,物理介质的其他变换是可能的,其中提供前述示例仅是为了促进该讨论。
鉴于以上所述,应当理解,在计算机1100中发生了很多类型的物理变换以便存储和执行本文中提出的软件组件。还应当理解,图11中针对计算机1100示出的架构或类似架构可以用于实现其他类型的计算设备,包括手持计算机、视频游戏设备、嵌入式计算机系统、移动设备(诸如智能手机、平板电脑和AR/VR设备)、以及本领域技术人员已知的其他类型的计算设备。还可以想到,计算机1100可以并非包括图11所示的所有组件,可以包括图11中未明确示出的其他组件,或者可以使用与图11所示的架构完全不同的架构。
图12是示出根据本文中呈现的各种实施例的可以在其中实现所公开的技术的各方面的分布式网络计算环境1200的网络图。如图12所示,一个或多个服务器计算机1200A可以经由通信网络1120(其可以是固定有线或无线LAN、WAN、内联网、外联网、对等网络、虚拟专用网络、因特网、蓝牙通信网络、专有低压通信网络或其他通信网络)与多个客户端计算设备(诸如但不限于平板电脑1200B、游戏机1200C、智能手表1200D、电话1200E(诸如智能电话)、个人计算机1200F和AR/VR设备1200G)互连。
例如,在通信网络1120是因特网的网络环境中,服务器计算机1200A可以是专用服务器计算机,该专用服务器计算机可操作以经由多种已知协议中的任何一种来处理与客户端计算设备1200B-1200G的数据以及与客户端计算设备1200B-1200G传送数据,诸如超文本传输协议(“HTTP”)、文件传输协议(“FTP”)或简单对象访问协议(“SOAP”)。另外,网络计算环境1200可以利用各种数据安全协议,诸如安全套接字层(“SSL”)或相当好的隐私(“PGP”)。每个客户端计算设备1200B-1200G可以配备有操作系统,该操作系统可操作以支持一个或多个计算应用或终端会话,诸如网络浏览器(图12中未示出)或其他图形用户界面(图12中未示出)或移动桌面环境(图12中未显示),以获取对服务器计算机1200A的访问。
服务器计算机1200A可以通信地耦合到其他计算环境(图12中未示出),并且接收有关参与用户的交互/资源网络的数据。在说明性操作中,用户(图12中未示出)可以与在客户端计算设备1200B-1200G上运行的计算应用交互以获取期望数据和/或执行其他计算应用。
数据和/或计算应用可以存储在一个或多个服务器1200A上,并且通过示例性通信网络1120通过客户端计算设备1200B-1200G传送到合作用户。参与用户(图12中未示出)可以请求访问全部或部分容纳在服务器计算机11800A上的特定数据和应用。这些数据可以在客户端计算设备1200B-1200G与服务器计算机1200A之间传送以进行处理和存储。
服务器计算机1200A可以托管用于数据、应用的生成、认证、加密和通信的计算应用、过程和小程序,并且可以与其他服务器计算环境(图12中未示出)、第三方服务供应商(图12中未示出)、网络附加存储(“NAS”)和存储区域网络(“SAN”)协作以实现应用/数据交易。
应当理解,图11所示的计算架构和图12所示的分布式网络计算环境为了便于讨论而被简化。还应当理解,计算架构和分布式计算网络可以包括和利用本文中未具体描述的更多的计算组件、设备、软件程序、网络设备和其他组件。
本文中提出的公开内容还涵盖以下条款中阐述的主题:
条款1.一种神经网络处理器,包括:存储器设备,存储包括针对神经网络的第一层描述符的层描述符列表,所述第一层描述符指定针对所述第一层描述符的执行所依赖的第二层描述符的标识符(ID);硬件寄存器,存储最近完成的层描述符的ID;以及控制器,被配置为:确定存储在所述硬件寄存器中的最近完成的层描述符的ID是否小于所述第二层描述符的ID,响应于确定所述最近完成的层描述符的ID不小于所述第二层描述符的ID,使得所述神经网络处理器执行所述第一层描述符,以及响应于确定所述最近完成的层描述符的ID小于所述第二层描述符的ID,使得所述神经网络处理器暂缓所述第一层描述符的执行。
条款2.根据条款1所述的神经网络处理器,其中所述第一层描述符的执行被暂缓,直到存储在所述硬件寄存器中的最近完成的层描述符的ID等于所述第二层描述符的ID。
条款3.根据条款1-2中任一项所述的神经网络处理器,其中所述神经网络处理器还被配置为执行所述层描述符列表中的层描述符,并且将所述最近完成的层描述符的ID存储在所述硬件寄存器中。
条款4.根据条款1-3中任一项所述的神经网络处理器,标识符以单调递增顺序被分配给所述层描述符列表中的层描述符。
条款5.根据条款1-4中任一项所述的神经网络处理器,其中所述第一层描述符包括以下各项中的一项:存储器到存储器移动(M2M)描述符、操作描述符、主机通信描述符、配置描述符、分支描述符或同步描述符。
条款6.根据条款1-5中任一项所述的神经网络处理器,其中所述第二层描述符包括以下各项中的一项:存储器到存储器移动(M2M)描述符、操作描述符、主机通信描述符、配置描述符、分支描述符或同步描述符。
条款7.根据条款1-6中任一项所述的神经网络处理器,其中所述层描述符列表包括指定防护操作的第三层描述符,并且其中所述控制器还被配置为:至少部分地基于所述最近完成的层描述符的ID来确定所述层描述符列表中具有ID小于所述第三层描述符的ID的所有层描述符是否已经完成执行,响应于确定所述层描述符列表中ID小于所述第三层描述符的ID的所有层描述符已经完成执行,使得所述神经网络处理器执行所述第三层描述符,以及响应于确定所述层描述符列表中具有ID小于所述第三层描述符的ID的所有层描述符尚未完成执行,使得所述神经网络处理器暂缓所述第三层描述符的执行。
条款8:一种神经网络处理器,包括:存储器设备,存储包括针对神经网络的第一层描述符的层描述符列表;硬件寄存器,存储最近完成的层描述符的标识符(ID);以及控制器,被配置为:至少部分地基于所述最近完成的层描述符的ID来确定所述层描述符列表中具有ID小于所述第一层描述符的ID的所有层描述符是否已经完成执行,响应于确定所述层描述符列表中具有ID小于所述第一层描述符的ID的所有层描述符已经完成执行,使得所述神经网络处理器执行所述第一层描述符,以及响应于确定所述层描述符列表中具有ID小于所述第一层描述符的ID的所有层描述符尚未完成执行,使得所述神经网络处理器暂缓所述第一层描述符的执行。
条款9.根据条款8所述的神经网络处理器,其中所述第一层描述符的执行被暂缓,直到所述描述符列表中具有ID小于所述第一层描述符的ID的所有层描述符已经完成执行。
条款10:根据条款8-9中任一项所述的神经网络处理器,其中所述神经网络处理器还被配置为执行所述层描述符列表中的层描述符,并且将所述最近完成的层描述符的ID存储在所述硬件寄存器中。
条款11.根据条款8-10中任一项所述的神经网络处理器,其中标识符以单调递增顺序被分配给所述层描述符列表中的层描述符。
条款12.根据条款8-11中任一项所述的神经网络处理器,其中所述第一层描述符包括以下各项中的一项:存储器到存储器移动(M2M)描述符、操作描述符、主机通信描述符、配置描述符、分支描述符或同步描述符。
条款13.根据条款8-12中任一项所述的神经网络处理器,其中所述层描述符列表中的描述符包括以下各项中的一项或多项:存储器到存储器移动(M2M)描述符、操作描述符、主机通信描述符、配置描述符、分支描述符或同步描述符。
条款14.根据条款8-13中任一项所述的神经网络处理器,其中所述层描述符列表还包括第二层描述符,所述第二层描述符指定针对所述第二层描述符的执行所依赖的第三层描述符的标识符ID,并且其中所述控制器还被配置为:确定存储在所述硬件寄存器中的最近完成的层描述符的ID是否小于所述第三层描述符的ID,响应于确定所述最近完成的层描述符的ID不小于所述第三层描述符的ID,使得所述神经网络处理器执行所述第二层描述符,以及响应于确定所述最近完成的层描述符的ID小于所述第三层描述符的ID,使得所述神经网络处理器暂缓所述第二层描述符的执行。
条款15:一种计算机实现的方法,包括:通过神经网络模块访问包括针对神经网络的第一层描述符的层描述符列表,所述第一层描述符指定所述第一层描述符的执行所依赖的第二层描述符的标识符(ID);确定最近完成的层描述符的标识符(ID)是否小于所述第二层描述符的ID;响应于确定所述最近完成的层描述符的ID不小于所述第二层描述符的ID,通过所述神经网络模块执行所述第一层描述符;以及响应于确定所述最近完成的层描述符的ID小于所述第二层描述符的ID,通过所述神经网络模块暂缓所述第一层描述符的执行。
条款16.根据条款15所述的计算机实现的方法,其中所述第一层描述符的执行被暂缓,直到所述最近完成的层描述符的ID等于所述第二层描述符的ID。
条款17.根据条款15-16中任一项所述的计算机实现的方法,还包括:执行所述层描述符列表中的层描述符;以及
将所述最近完成的层描述符的ID存储在所述神经网络模块的硬件寄存器中。
条款18:根据条款15-17中任一项所述的计算机实现的方法,其中标识符以单调递增顺序被分配给所述层描述符列表中的层描述符。
条款19.根据条款15-18中任一项所述的计算机实现的方法,其中所述第一层描述符和所述第二层描述符包括以下各项中的一项:存储器到存储器移动(M2M)描述符、操作描述符、主机通信描述符、配置描述符、分支描述符或同步描述符。
条款20.根据条款15-19中任一项所述的计算机实现的方法,其中所述层描述符列表包括指定防护操作的第三层描述符,并且其中计算机实现的方法还包括:至少部分地基于所述最近完成的层描述符的ID,确定所述层描述符列表中具有ID小于所述第三层描述符的ID的所有层描述符是否已经完成执行;响应于确定所述层描述符列表中具有ID小于所述第三层描述符的ID的所有层描述符已经完成执行,通过所述神经网络处理器执行所述第三层描述符;以及响应于确定所述层描述符列表中具有ID小于所述第三层描述符的ID的所有层描述符尚未完成执行,暂缓通过所述神经网络处理器对所述第三层描述符的执行。
基于前述内容,应当理解,本文中已经公开了被配置用于层和操作防护和依赖性管理的神经网络模块。尽管已经以计算机结构特征、方法和转换动作、特定的计算机器和计算机可读介质专用的语言描述了本文中介绍的主题,但是应当理解,所附权利要求书中提出的主题不必限于本文中描述的特定功能、动作或介质。相反,特定特征、动作和介质被公开作为实现所要求保护的主题的示例形式。
上述主题仅以示例的方式提供,并且不应当被解释为是限制性的。可以在不遵循示出和描述的示例配置和应用的情况下,并且在不脱离在所附权利要求中阐述的本公开的范围的情况下,对本文中描述的主题进行各种修改和改变。
Claims (15)
1.一种神经网络处理器,包括:
存储器设备,存储包括针对神经网络的第一层描述符的层描述符列表,所述第一层描述符指定针对所述第一层描述符的执行所依赖的第二层描述符的标识符(ID);
硬件寄存器,存储最近完成的层描述符的ID;以及
控制器,被配置为:
确定被存储在所述硬件寄存器中的所述最近完成的层描述符的所述ID是否小于所述第二层描述符的ID,
响应于确定所述最近完成的层描述符的所述ID不小于所述第二层描述符的所述ID,使得所述神经网络处理器执行所述第一层描述符,以及
响应于确定所述最近完成的层描述符的所述ID小于所述第二层描述符的所述ID,使得所述神经网络处理器暂缓所述第一层描述符的执行。
2.根据权利要求1所述的神经网络处理器,其中所述第一层描述符的执行被暂缓,直到被存储在所述硬件寄存器中的所述最近完成的层描述符的所述ID等于所述第二层描述符的所述ID。
3.根据权利要求1所述的神经网络处理器,其中所述神经网络处理器还被配置为执行所述层描述符列表中的层描述符,并且将所述最近完成的层描述符的所述ID存储在所述硬件寄存器中。
4.根据权利要求1所述的神经网络处理器,其中标识符以单调递增顺序被分配给所述层描述符列表中的所述层描述符。
5.根据权利要求1所述的神经网络处理器,其中所述第一层描述符或所述第二层描述符包括以下各项中的一项:存储器到存储器移动(M2M)描述符、操作描述符、主机通信描述符、配置描述符、分支描述符、或者同步描述符。
6.根据权利要求1所述的神经网络处理器,其中所述层描述符列表包括指定防护操作的第三层描述符,并且其中所述控制器还被配置为:
至少部分地基于所述最近完成的层描述符的所述ID,确定所述层描述符列表中具有ID小于所述第三层描述符的ID的所有层描述符是否已经完成执行,
响应于确定所述层描述符列表中ID小于所述第三层描述符的所述ID的所有层描述符已经完成执行,使得所述神经网络处理器执行所述第三层描述符,以及
响应于确定所述层描述符列表中具有ID小于所述第三层描述符的所述ID的所有层描述符尚未完成执行,使得所述神经网络处理器暂缓所述第三层描述符的执行。
7.一种神经网络处理器,包括:
存储器设备,存储包括针对神经网络的第一层描述符的层描述符列表;
硬件寄存器,存储最近完成的层描述符的标识符(ID);以及
控制器,被配置为:
至少部分地基于所述最近完成的层描述符的所述ID,确定所述层描述符列表中具有ID小于所述第一层描述符的所述ID的所有层描述符是否已经完成执行,
响应于确定所述层描述符列表中具有ID小于所述第一层描述符的所述ID的所有层描述符已经完成执行,使得所述神经网络处理器执行所述第一层描述符,以及
响应于确定所述层描述符列表中具有ID小于所述第一层描述符的所述ID的所有层描述符尚未完成执行,使得所述神经网络处理器暂缓所述第一层描述符的执行。
8.根据权利要求7所述的神经网络处理器,其中所述第一层描述符的执行被暂缓,直到所述描述符列表中具有ID小于所述第一层描述符的所述ID的所有层描述符已经完成执行。
9.根据权利要求7所述的神经网络处理器,其中所述神经网络处理器还被配置为执行所述层描述符列表中的层描述符,并且将所述最近完成的层描述符的所述ID存储在所述硬件寄存器中。
10.根据权利要求7所述的神经网络处理器,其中标识符以单调递增顺序被分配给所述层描述符列表中的所述层描述符。
11.根据权利要求7所述的神经网络处理器,其中所述第一层描述符包括以下各项中的一项:存储器到存储器移动(M2M)描述符、操作描述符、主机通信描述符、配置描述符、分支描述符、或者同步描述符。
12.一种计算机实现的方法,包括:
通过神经网络模块访问包括针对神经网络的第一层描述符的层描述符列表,所述第一层描述符指定针对所述第一层描述符的执行所依赖的第二层描述符的标识符(ID);
确定最近完成的层描述符的标识符(ID)是否小于所述第二层描述符的ID;
响应于确定所述最近完成的层描述符的所述ID不小于所述第二层描述符的所述ID,通过所述神经网络模块执行所述第一层描述符;以及
响应于确定所述最近完成的层描述符的所述ID小于所述第二层描述符的所述ID,暂缓通过所述神经网络模块对所述第一层描述符的执行。
13.根据权利要求12所述的计算机实现的方法,其中所述第一层描述符的执行被暂缓,直到所述最近完成的层描述符的所述ID等于所述第二层描述符的所述ID。
14.根据权利要求12所述的计算机实现的方法,还包括:
执行所述层描述符列表中的层描述符;以及
将所述最近完成的层描述符的所述ID存储在所述神经网络模块的硬件寄存器中。
15.根据权利要求12所述的计算机实现的方法,其中所述第一层描述符和所述第二层描述符包括以下各项中的一项:存储器到存储器移动(M2M)描述符、操作描述符、主机通信描述符、配置描述符、分支描述符、或者同步描述符。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762486432P | 2017-04-17 | 2017-04-17 | |
US62/486,432 | 2017-04-17 | ||
US15/950,550 | 2018-04-11 | ||
US15/950,550 US11100390B2 (en) | 2017-04-17 | 2018-04-11 | Power-efficient deep neural network module configured for layer and operation fencing and dependency management |
PCT/US2018/027674 WO2018194939A1 (en) | 2017-04-17 | 2018-04-13 | Power-efficient deep neural network module configured for layer and operation fencing and dependency management |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110537194A true CN110537194A (zh) | 2019-12-03 |
CN110537194B CN110537194B (zh) | 2023-07-07 |
Family
ID=63790158
Family Applications (17)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880025417.XA Active CN110520846B (zh) | 2017-04-17 | 2018-04-06 | 对数据分区的动态排序 |
CN201880025244.1A Active CN110520856B (zh) | 2017-04-17 | 2018-04-06 | 处理不邻近存储器作为邻近存储器以提高神经网络的性能 |
CN201880025415.0A Active CN110546628B (zh) | 2017-04-17 | 2018-04-06 | 用有向线缓冲器最小化存储器读取提高神经网络环境性能 |
CN201880025504.5A Active CN110520857B (zh) | 2017-04-17 | 2018-04-06 | 使用虚拟化数据迭代器对神经网络进行数据处理性能增强 |
CN201880024892.5A Active CN110506260B (zh) | 2017-04-17 | 2018-04-06 | 用于神经网络环境中的增强数据处理的方法、系统和介质 |
CN202310874704.0A Pending CN116909985A (zh) | 2017-04-17 | 2018-04-06 | 对数据分区的动态排序 |
CN201880025503.0A Active CN110520853B (zh) | 2017-04-17 | 2018-04-06 | 直接存储器访问的队列管理 |
CN202310865940.6A Pending CN116909984A (zh) | 2017-04-17 | 2018-04-06 | 使用虚拟化数据迭代器对神经网络进行数据处理性能增强 |
CN201880025227.8A Active CN110520870B (zh) | 2017-04-17 | 2018-04-06 | 用于具有动态向量长度和码本大小的高吞吐量向量去量化的灵活硬件 |
CN201880025488.XA Active CN110537194B (zh) | 2017-04-17 | 2018-04-13 | 被配置用于层和操作防护和依赖性管理的功率高效的深度神经网络处理器及方法 |
CN201880025480.3A Active CN110546611B (zh) | 2017-04-17 | 2018-04-16 | 通过跳过处理操作来减少神经网络处理器中的功耗 |
CN202410312381.0A Pending CN118153639A (zh) | 2017-04-17 | 2018-04-16 | 用于增强数据处理的系统、方法及神经网络处理器 |
CN201880025508.3A Active CN110582785B (zh) | 2017-04-17 | 2018-04-16 | 配置用于执行层描述符列表的具有功率效率的深度神经网络模块 |
CN201880025426.9A Active CN110678843B (zh) | 2017-04-17 | 2018-04-16 | 在深度神经网络模块中动态划分工作负载以降低功率消耗 |
CN201880025420.1A Active CN110520909B (zh) | 2017-04-17 | 2018-04-16 | 使用激活数据的压缩和解压缩来减少存储器带宽利用率的神经网络处理器 |
CN201880025130.7A Active CN110546654B (zh) | 2017-04-17 | 2018-04-16 | 通过构造接口的带宽控制来增强dnn模块的处理性能 |
CN201880025126.0A Active CN110546610B (zh) | 2017-04-17 | 2018-04-16 | 通过数据共享和分配增强人工智能/机器硬件的处理性能 |
Family Applications Before (9)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880025417.XA Active CN110520846B (zh) | 2017-04-17 | 2018-04-06 | 对数据分区的动态排序 |
CN201880025244.1A Active CN110520856B (zh) | 2017-04-17 | 2018-04-06 | 处理不邻近存储器作为邻近存储器以提高神经网络的性能 |
CN201880025415.0A Active CN110546628B (zh) | 2017-04-17 | 2018-04-06 | 用有向线缓冲器最小化存储器读取提高神经网络环境性能 |
CN201880025504.5A Active CN110520857B (zh) | 2017-04-17 | 2018-04-06 | 使用虚拟化数据迭代器对神经网络进行数据处理性能增强 |
CN201880024892.5A Active CN110506260B (zh) | 2017-04-17 | 2018-04-06 | 用于神经网络环境中的增强数据处理的方法、系统和介质 |
CN202310874704.0A Pending CN116909985A (zh) | 2017-04-17 | 2018-04-06 | 对数据分区的动态排序 |
CN201880025503.0A Active CN110520853B (zh) | 2017-04-17 | 2018-04-06 | 直接存储器访问的队列管理 |
CN202310865940.6A Pending CN116909984A (zh) | 2017-04-17 | 2018-04-06 | 使用虚拟化数据迭代器对神经网络进行数据处理性能增强 |
CN201880025227.8A Active CN110520870B (zh) | 2017-04-17 | 2018-04-06 | 用于具有动态向量长度和码本大小的高吞吐量向量去量化的灵活硬件 |
Family Applications After (7)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880025480.3A Active CN110546611B (zh) | 2017-04-17 | 2018-04-16 | 通过跳过处理操作来减少神经网络处理器中的功耗 |
CN202410312381.0A Pending CN118153639A (zh) | 2017-04-17 | 2018-04-16 | 用于增强数据处理的系统、方法及神经网络处理器 |
CN201880025508.3A Active CN110582785B (zh) | 2017-04-17 | 2018-04-16 | 配置用于执行层描述符列表的具有功率效率的深度神经网络模块 |
CN201880025426.9A Active CN110678843B (zh) | 2017-04-17 | 2018-04-16 | 在深度神经网络模块中动态划分工作负载以降低功率消耗 |
CN201880025420.1A Active CN110520909B (zh) | 2017-04-17 | 2018-04-16 | 使用激活数据的压缩和解压缩来减少存储器带宽利用率的神经网络处理器 |
CN201880025130.7A Active CN110546654B (zh) | 2017-04-17 | 2018-04-16 | 通过构造接口的带宽控制来增强dnn模块的处理性能 |
CN201880025126.0A Active CN110546610B (zh) | 2017-04-17 | 2018-04-16 | 通过数据共享和分配增强人工智能/机器硬件的处理性能 |
Country Status (19)
Country | Link |
---|---|
US (20) | US10795836B2 (zh) |
EP (14) | EP3612945B1 (zh) |
JP (1) | JP7004741B2 (zh) |
KR (2) | KR102596644B1 (zh) |
CN (17) | CN110520846B (zh) |
AU (1) | AU2018256212B2 (zh) |
BR (1) | BR112019021541A2 (zh) |
CA (1) | CA3056660A1 (zh) |
CL (1) | CL2019002864A1 (zh) |
CO (1) | CO2019011014A2 (zh) |
IL (1) | IL269888B (zh) |
MX (2) | MX2019012388A (zh) |
MY (1) | MY201868A (zh) |
NZ (1) | NZ756870A (zh) |
PH (1) | PH12019550191A1 (zh) |
RU (1) | RU2767447C2 (zh) |
SG (1) | SG11201909175XA (zh) |
WO (15) | WO2018194851A1 (zh) |
ZA (1) | ZA201905874B (zh) |
Families Citing this family (108)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8515052B2 (en) | 2007-12-17 | 2013-08-20 | Wai Wu | Parallel signal processing system and method |
US10635969B2 (en) | 2016-10-14 | 2020-04-28 | International Business Machines Corporation | Core utilization optimization by dividing computational blocks across cores |
US10248906B2 (en) * | 2016-12-28 | 2019-04-02 | Intel Corporation | Neuromorphic circuits for storing and generating connectivity information |
US10795836B2 (en) | 2017-04-17 | 2020-10-06 | Microsoft Technology Licensing, Llc | Data processing performance enhancement for neural networks using a virtualized data iterator |
US11164071B2 (en) * | 2017-04-18 | 2021-11-02 | Samsung Electronics Co., Ltd. | Method and apparatus for reducing computational complexity of convolutional neural networks |
EP3657399A1 (en) * | 2017-05-23 | 2020-05-27 | Shanghai Cambricon Information Technology Co., Ltd | Weight pruning and quantization method for a neural network and accelerating device therefor |
CN110502330A (zh) * | 2018-05-16 | 2019-11-26 | 上海寒武纪信息科技有限公司 | 处理器及处理方法 |
US11514355B2 (en) * | 2017-06-28 | 2022-11-29 | General Electric Company | Flat representation of machine learning model |
JP7074777B2 (ja) * | 2017-11-20 | 2022-05-24 | シャンハイ カンブリコン インフォメーション テクノロジー カンパニー リミテッド | タスク並列処理方法、装置、システム、記憶媒体およびコンピュータ機器 |
EP3489865B1 (en) * | 2017-11-22 | 2021-01-06 | Commissariat à l'énergie atomique et aux énergies alternatives | A stdp-based learning method for a network having dual accumulator neurons |
US10747844B2 (en) * | 2017-12-12 | 2020-08-18 | Tesla, Inc. | Systems and methods for converting a matrix input to a vectorized input for a matrix processor |
US11995448B1 (en) * | 2018-02-08 | 2024-05-28 | Marvell Asia Pte Ltd | Method and apparatus for performing machine learning operations in parallel on machine learning hardware |
KR20190097930A (ko) * | 2018-02-13 | 2019-08-21 | 삼성전자주식회사 | 채널 별 메모리 용량을 조절하는 메모리 장치 및 이를 포함하는 메모리 시스템 |
US10948966B1 (en) * | 2018-03-07 | 2021-03-16 | Facebook, Inc. | Systems and methods for optimizing power usage for systems within quality-of-service constraints |
US11126362B2 (en) * | 2018-03-14 | 2021-09-21 | International Business Machines Corporation | Migrating storage data |
WO2019200545A1 (zh) * | 2018-04-17 | 2019-10-24 | 深圳鲲云信息科技有限公司 | 网络模型的运行方法及相关产品 |
US10404276B1 (en) * | 2018-04-27 | 2019-09-03 | Nicira, Inc. | Stable variable-length order-preserving encoding scheme |
US20190340490A1 (en) * | 2018-05-04 | 2019-11-07 | Apple Inc. | Systems and methods for assigning tasks in a neural network processor |
US11016801B1 (en) | 2018-05-22 | 2021-05-25 | Marvell Asia Pte, Ltd. | Architecture to support color scheme-based synchronization for machine learning |
US10997510B1 (en) | 2018-05-22 | 2021-05-04 | Marvell Asia Pte, Ltd. | Architecture to support tanh and sigmoid operations for inference acceleration in machine learning |
US10360654B1 (en) * | 2018-05-25 | 2019-07-23 | Intel Corporation | Software scoreboard information and synchronization |
US10657087B2 (en) * | 2018-05-31 | 2020-05-19 | Toshiba Memory Corporation | Method of out of order processing of scatter gather lists |
US11561833B1 (en) * | 2018-06-28 | 2023-01-24 | Amazon Technologies, Inc. | Allocation and placement of resources for network computation |
EP3821346A1 (en) * | 2018-08-09 | 2021-05-19 | Huawei Technologies Co., Ltd. | Device and method for compacting compressed and uncompressed data blocks |
US12020146B2 (en) | 2018-08-23 | 2024-06-25 | Samsung Electronics Co., Ltd. | Electronic device and operating method thereof of processing neural network model by using plurality of processors |
EP3640810A4 (en) * | 2018-08-28 | 2021-05-05 | Cambricon Technologies Corporation Limited | DATA PRE-PROCESSING PROCESS AND APPARATUS, COMPUTER DEVICE AND STORAGE MEDIA |
KR20200034499A (ko) * | 2018-09-21 | 2020-03-31 | 삼성전자주식회사 | 메모리 장치와 통신하는 데이터 처리 장치 및 방법 |
US11295205B2 (en) * | 2018-09-28 | 2022-04-05 | Qualcomm Incorporated | Neural processing unit (NPU) direct memory access (NDMA) memory bandwidth optimization |
CN109359732B (zh) | 2018-09-30 | 2020-06-09 | 阿里巴巴集团控股有限公司 | 一种芯片及基于其的数据处理方法 |
US20200117981A1 (en) * | 2018-10-11 | 2020-04-16 | International Business Machines Corporation | Data representation for dynamic precision in neural network cores |
KR20200053886A (ko) * | 2018-11-09 | 2020-05-19 | 삼성전자주식회사 | 뉴럴 프로세싱 유닛, 뉴럴 프로세싱 시스템, 및 어플리케이션 시스템 |
CN109669774B (zh) * | 2018-11-14 | 2020-12-08 | 新华三技术有限公司成都分公司 | 硬件资源的量化方法、编排方法、装置及网络设备 |
US11663001B2 (en) * | 2018-11-19 | 2023-05-30 | Advanced Micro Devices, Inc. | Family of lossy sparse load SIMD instructions |
KR102107077B1 (ko) * | 2018-11-20 | 2020-05-06 | 주식회사 아나패스 | 컨볼루션 신경망 추론에서 컨볼루션 연산을 수행하기 위한 라인 단위 메모리 관리 방법 및 그 추론 장치 |
US10990525B2 (en) * | 2018-12-12 | 2021-04-27 | Mipsology SAS | Caching data in artificial neural network computations |
US11342933B2 (en) * | 2018-12-14 | 2022-05-24 | Advanced Micro Devices, Inc. | Lossy significance compression with lossy restoration |
CN109657788A (zh) * | 2018-12-18 | 2019-04-19 | 北京中科寒武纪科技有限公司 | 数据处理方法、装置及相关产品 |
CN109740735B (zh) * | 2018-12-29 | 2020-12-29 | 百度在线网络技术(北京)有限公司 | 多神经网络输出方法及装置、服务器、计算机可读介质 |
CN109922007B (zh) * | 2019-01-15 | 2022-04-01 | 西安仙农电子科技有限公司 | 一种基于卷积神经网络的负载均衡方法 |
CN111488114B (zh) * | 2019-01-28 | 2021-12-21 | 北京灵汐科技有限公司 | 一种可重构的处理器架构及计算设备 |
US11521014B2 (en) | 2019-02-04 | 2022-12-06 | International Business Machines Corporation | L2-nonexpansive neural networks |
US11625554B2 (en) | 2019-02-04 | 2023-04-11 | International Business Machines Corporation | L2-nonexpansive neural networks |
US11687783B2 (en) * | 2019-02-04 | 2023-06-27 | International Business Machines Corporation | L2-nonexpansive neural networks |
US11036545B2 (en) * | 2019-03-15 | 2021-06-15 | Intel Corporation | Graphics systems and methods for accelerating synchronization using fine grain dependency check and scheduling optimizations based on available shared memory space |
CN111767078A (zh) * | 2019-04-02 | 2020-10-13 | 上海寒武纪信息科技有限公司 | 数据运行方法、装置和相关产品 |
CN111782577B (zh) * | 2019-04-04 | 2023-03-24 | 安徽寒武纪信息科技有限公司 | 数据处理装置及方法以及相关产品 |
CN109992225B (zh) * | 2019-04-04 | 2022-02-22 | 中科寒武纪科技股份有限公司 | 数据输出方法及相关装置 |
KR20200119164A (ko) * | 2019-04-09 | 2020-10-19 | 한국전자통신연구원 | 정보 처리 장치 및 그것에 포함된 신경망 연산 장치의 동작 방법 |
US10504005B1 (en) * | 2019-05-10 | 2019-12-10 | Capital One Services, Llc | Techniques to embed a data object into a multidimensional frame |
KR20200129957A (ko) * | 2019-05-10 | 2020-11-18 | 삼성전자주식회사 | 피처맵 데이터에 대한 압축을 수행하는 뉴럴 네트워크 프로세서 및 이를 포함하는 컴퓨팅 시스템 |
US11204745B2 (en) * | 2019-05-23 | 2021-12-21 | Xilinx, Inc. | Dataflow graph programming environment for a heterogenous processing system |
US11175898B2 (en) * | 2019-05-31 | 2021-11-16 | Apple Inc. | Compiling code for a machine learning model for execution on a specialized processor |
KR20200139909A (ko) | 2019-06-05 | 2020-12-15 | 삼성전자주식회사 | 전자 장치 및 그의 연산 수행 방법 |
CN114008636A (zh) * | 2019-06-18 | 2022-02-01 | 高通股份有限公司 | 优化机器学习模型性能 |
US11403097B2 (en) * | 2019-06-26 | 2022-08-02 | Intel Corporation | Systems and methods to skip inconsequential matrix operations |
US11461622B2 (en) * | 2019-06-28 | 2022-10-04 | Amazon Technologies, Inc. | Dynamic code loading for multiple executions on a sequential processor |
US11630770B2 (en) * | 2019-07-11 | 2023-04-18 | Meta Platforms Technologies, Llc | Systems and methods for reading and writing sparse data in a neural network accelerator |
US20210081806A1 (en) * | 2019-09-13 | 2021-03-18 | Latent AI, Inc. | Using a runtime engine to facilitate dynamic adaptation of deep neural networks for efficient processing |
US10915811B1 (en) | 2019-09-18 | 2021-02-09 | International Business Machines Corporation | Intercalation cells for multi-task learning |
US11475283B2 (en) * | 2019-10-24 | 2022-10-18 | Apple Inc. | Multi dimensional convolution in neural network processor |
KR20210053384A (ko) | 2019-11-01 | 2021-05-12 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
US11513799B2 (en) | 2019-11-04 | 2022-11-29 | Apple Inc. | Chained buffers in neural network processor |
KR20210065605A (ko) * | 2019-11-27 | 2021-06-04 | 한국전자통신연구원 | 선인출 정보를 이용한 메모리 제어 방법 및 장치 |
CN111091184B (zh) * | 2019-12-19 | 2022-03-22 | 浪潮(北京)电子信息产业有限公司 | 一种深度神经网络的量化方法、装置、电子设备及介质 |
CN111162792A (zh) * | 2019-12-19 | 2020-05-15 | 深圳市航天泰瑞捷电子有限公司 | 一种电力负荷数据的压缩方法及装置 |
US11620516B2 (en) * | 2019-12-23 | 2023-04-04 | Arm Limited | Specializing neural networks for heterogeneous systems |
CN111126589B (zh) * | 2019-12-31 | 2022-05-20 | 昆仑芯(北京)科技有限公司 | 神经网络数据处理装置、方法和电子设备 |
CN111178490B (zh) | 2019-12-31 | 2021-08-24 | 北京百度网讯科技有限公司 | 数据输出方法、获取方法、装置和电子设备 |
KR102399197B1 (ko) | 2020-01-17 | 2022-05-18 | 경희대학교 산학협력단 | 이상치 인지 근사적 코딩을 수행하는 전자 장치 그리고 그것의 동작 방법 |
US11023400B1 (en) | 2020-01-20 | 2021-06-01 | International Business Machines Corporation | High performance DMA transfers in host bus adapters |
US20210224191A1 (en) * | 2020-01-22 | 2021-07-22 | Alibaba Group Holding Limited | Compression and decompression module in a cache controller for reducing off-chip data traffic |
KR102498066B1 (ko) * | 2020-02-20 | 2023-02-10 | 한국과학기술원 | 딥러닝 강화학습 가속기 |
KR20210108749A (ko) | 2020-02-26 | 2021-09-03 | 삼성전자주식회사 | 가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템 |
CN111431539B (zh) * | 2020-03-04 | 2023-12-08 | 嘉楠明芯(北京)科技有限公司 | 一种神经网络数据的压缩方法、装置及计算机可读存储介质 |
CN111290979B (zh) * | 2020-03-23 | 2021-08-17 | 优刻得科技股份有限公司 | 数据传输方法、装置及系统 |
CN111522643B (zh) * | 2020-04-22 | 2024-06-25 | 杭州迪普科技股份有限公司 | 基于fpga的多队列调度方法、装置、计算机设备及存储介质 |
CN113592082A (zh) * | 2020-04-30 | 2021-11-02 | 意法半导体股份有限公司 | 用于从人工神经网络分配中间数据的设备和方法 |
KR20210136476A (ko) * | 2020-05-07 | 2021-11-17 | 삼성전자주식회사 | 쿼드 트리 방법의 파라미터들을 이용하여 압축하는 장치 및 방법 |
US12015526B2 (en) * | 2020-05-26 | 2024-06-18 | Synopsys, Inc. | Mixed-precision neural networks |
GB202008299D0 (en) * | 2020-06-02 | 2020-07-15 | Imagination Tech Ltd | Manipulation of data in a memory |
US20230267309A1 (en) * | 2020-06-18 | 2023-08-24 | Interdigital Vc Holdings France, Sas | Systems and methods for encoding/decoding a deep neural network |
CN111723053A (zh) * | 2020-06-24 | 2020-09-29 | 北京航天数据股份有限公司 | 一种数据的压缩方法及装置、解压方法及装置 |
US11275701B2 (en) * | 2020-06-24 | 2022-03-15 | Qualcomm Incorporated | Secure timer synchronization between function block and external SOC |
US20220004399A1 (en) * | 2020-07-03 | 2022-01-06 | Mediatek Inc. | Dynamic loading neural network inference at dram/on-bus sram/serial flash for power optimization |
CN111884658A (zh) * | 2020-07-09 | 2020-11-03 | 上海兆芯集成电路有限公司 | 数据解压缩方法、数据压缩方法及卷积运算装置 |
US11720404B2 (en) * | 2020-07-16 | 2023-08-08 | Samsung Electronics Co., Ltd. | Systems and methods for arbitrating access to a shared resource |
JPWO2022014500A1 (zh) * | 2020-07-17 | 2022-01-20 | ||
CN111858058A (zh) * | 2020-07-24 | 2020-10-30 | 成都成信高科信息技术有限公司 | 基于并行计算的sgd负载均衡方法、装置及存储介质 |
FR3113158B1 (fr) * | 2020-08-03 | 2024-04-05 | Commissariat Energie Atomique | Architecture de calcul systolique pour la mise en œuvre de réseaux de neurones artificiels traitant plusieurs types de convolutions |
JP6835285B1 (ja) * | 2020-09-15 | 2021-02-24 | 富士電機株式会社 | データ圧縮方法、データ圧縮装置、データ圧縮プログラム、データ伸長方法、データ伸長装置およびデータ伸長プログラム |
US11470004B2 (en) * | 2020-09-22 | 2022-10-11 | Advanced Micro Devices, Inc. | Graded throttling for network-on-chip traffic |
JP2022094508A (ja) | 2020-12-15 | 2022-06-27 | 富士通株式会社 | 演算処理装置、演算処理方法および演算処理プログラム |
TWI745227B (zh) * | 2021-02-01 | 2021-11-01 | 國立陽明交通大學 | 用於進行原始服務端與外地服務端之間的第三方認證的通訊系統及方法 |
KR102298766B1 (ko) * | 2021-02-15 | 2021-09-07 | 주식회사 딥이티 | 타겟 디바이스에 대한 딥러닝 모델 변환 장치 및 방법 |
US11256987B1 (en) * | 2021-06-02 | 2022-02-22 | SambaNova Systems, Inc. | Memory efficient dropout, with reordering of dropout mask elements |
JP2023018365A (ja) | 2021-07-27 | 2023-02-08 | 富士通株式会社 | 情報処理プログラム、情報処理方法及び情報処理装置 |
US20230079975A1 (en) * | 2021-09-10 | 2023-03-16 | Arm Limited | Power management for system-on-chip |
CN118176728A (zh) * | 2021-11-01 | 2024-06-11 | Lg 电子株式会社 | 特征编码/解码方法和装置以及存储比特流的记录介质 |
EP4191476A1 (en) * | 2021-12-01 | 2023-06-07 | Nokia Technologies Oy | Machine learning accelerator |
US11816364B2 (en) * | 2022-01-13 | 2023-11-14 | Microsoft Technology Licensing, Llc | Performance evaluation of an application based on detecting degradation caused by other computing processes |
CN114466082B (zh) * | 2022-01-29 | 2024-01-09 | 上海阵量智能科技有限公司 | 数据压缩、数据解压方法、系统及人工智能ai芯片 |
US11720252B1 (en) * | 2022-03-04 | 2023-08-08 | Microsoft Technology Licensing, Llc | Method and apparatus for compressing and decompressing sparse data sets |
US20230350678A1 (en) * | 2022-04-28 | 2023-11-02 | Qualcomm Incorporated | Instruction Set Architecture for Neural Network Quantization and Packing |
WO2023250093A1 (en) * | 2022-06-22 | 2023-12-28 | Brainchip, Inc. | Method and system for implementing temporal convolution in spatiotemporal neural networks |
KR20240002346A (ko) * | 2022-06-29 | 2024-01-05 | 삼성전자주식회사 | Ai 부호화/복호화를 이용하여 영상을 처리하는 전자 장치 및 그 제어 방법 |
KR20240007495A (ko) * | 2022-07-08 | 2024-01-16 | 리벨리온 주식회사 | 뉴럴 코어, 이를 포함하는 뉴럴 프로세싱 장치 및 뉴럴 프로세싱 장치의 데이터 로드 방법 |
CN115309349B (zh) * | 2022-10-12 | 2023-01-20 | 深圳鲲云信息科技有限公司 | 深度学习的稀疏数据存储方法、计算机设备和存储介质 |
US11983128B1 (en) * | 2022-12-16 | 2024-05-14 | Amazon Technologies, Inc. | Multidimensional and multiblock tensorized direct memory access descriptors |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030065631A1 (en) * | 2001-10-03 | 2003-04-03 | Mcbride Chad B. | Pipelined hardware implementation of a neural network circuit |
US20060050693A1 (en) * | 2004-09-03 | 2006-03-09 | James Bury | Building data packets for an advanced switching fabric |
CN102609222A (zh) * | 2012-02-13 | 2012-07-25 | 山东华芯半导体有限公司 | 基于命令描述符的闪存控制方法 |
US20160335119A1 (en) * | 2015-05-12 | 2016-11-17 | minds.ai inc | Batch-based neural network system |
WO2016210030A1 (en) * | 2015-06-26 | 2016-12-29 | Microsoft Technology Licensing, Llc | Determination of target location for transfer of processor control |
Family Cites Families (189)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4298954A (en) | 1979-04-30 | 1981-11-03 | International Business Machines Corporation | Alternating data buffers when one buffer is empty and another buffer is variably full of data |
JPH0642237B2 (ja) | 1983-12-28 | 1994-06-01 | 株式会社日立製作所 | 並列処理装置 |
US5056015A (en) * | 1988-03-23 | 1991-10-08 | Du Pont Pixel Systems Limited | Architectures for serial or parallel loading of writable control store |
EP0340901A3 (en) * | 1988-03-23 | 1992-12-30 | Du Pont Pixel Systems Limited | Access system for dual port memory |
EP0334624A3 (en) * | 1988-03-23 | 1993-03-31 | Du Pont Pixel Systems Limited | Microcoded computer system |
JP2703010B2 (ja) | 1988-12-23 | 1998-01-26 | 株式会社日立製作所 | ニユーラルネツト信号処理プロセツサ |
US5369773A (en) | 1991-04-26 | 1994-11-29 | Adaptive Solutions, Inc. | Neural network using virtual-zero |
US5357597A (en) * | 1991-06-24 | 1994-10-18 | International Business Machines Corporation | Convolutional expert neural system (ConExNS) |
US5487153A (en) | 1991-08-30 | 1996-01-23 | Adaptive Solutions, Inc. | Neural network sequencer and interface apparatus |
WO1993014459A1 (en) | 1992-01-17 | 1993-07-22 | Caelum Research Corporation | Modular parallel processing system |
JPH06195322A (ja) | 1992-10-29 | 1994-07-15 | Hitachi Ltd | 汎用型ニューロコンピュータとして用いられる情報処理装置 |
JP2938711B2 (ja) | 1993-05-10 | 1999-08-25 | 松下電器産業株式会社 | 並列計算機 |
US5859990A (en) | 1995-12-29 | 1999-01-12 | Intel Corporation | System for transferring data segments from a first storage device to a second storage device using an alignment stage including even and odd temporary devices |
US5933654A (en) | 1996-09-24 | 1999-08-03 | Allen-Bradley Company, Llc | Dynamic buffer fracturing by a DMA controller |
US6006325A (en) * | 1996-12-19 | 1999-12-21 | Institute For The Development Of Emerging Architectures, L.L.C. | Method and apparatus for instruction and data serialization in a computer processor |
US6547364B2 (en) * | 1997-07-12 | 2003-04-15 | Silverbrook Research Pty Ltd | Printing cartridge with an integrated circuit device |
KR100258355B1 (ko) * | 1997-12-26 | 2000-06-01 | 김영환 | 8 비트 병렬 셀 단위 인터리버 |
US6307867B1 (en) | 1998-05-14 | 2001-10-23 | Telefonaktiebolaget Lm Ericsson (Publ) | Data transmission over a communications link with variable transmission rates |
US6654761B2 (en) * | 1998-07-29 | 2003-11-25 | Inxight Software, Inc. | Controlling which part of data defining a node-link structure is in memory |
JP2000059227A (ja) | 1998-08-07 | 2000-02-25 | Matsushita Electric Ind Co Ltd | 符号化/復号化装置、及び符号化/復号化方法 |
JP2000261416A (ja) * | 1999-03-09 | 2000-09-22 | Nec Eng Ltd | 二重化データ転送回路 |
US6785239B1 (en) | 1999-06-01 | 2004-08-31 | Cisco Technology, Inc. | Reducing delays in a communication network using a re-fragmentation pipeline |
JP2001188767A (ja) | 1999-12-28 | 2001-07-10 | Fuji Xerox Co Ltd | ニューラルネットワーク演算装置及びニューラルネットワークの演算方法 |
US6424737B1 (en) | 2000-01-24 | 2002-07-23 | Sony Corporation | Method and apparatus of compressing images using localized radon transforms |
US6988154B2 (en) * | 2000-03-10 | 2006-01-17 | Arc International | Memory interface and method of interfacing between functional entities |
GB2382899B (en) | 2000-12-29 | 2003-12-17 | Zarlink Semiconductor Ltd | A data queue system |
JP2002259939A (ja) * | 2001-03-05 | 2002-09-13 | Kitakiyuushiyuu Techno Center:Kk | 連想メモリーベースコンピュータ |
US6990079B2 (en) | 2001-06-08 | 2006-01-24 | International Business Machines Corporation | Optimizing fragment sizes in frame relay networks |
US7012893B2 (en) | 2001-06-12 | 2006-03-14 | Smartpackets, Inc. | Adaptive control of data packet size in networks |
US7106968B2 (en) | 2001-07-06 | 2006-09-12 | Optix Networks Inc. | Combined SONET/SDH and OTN architecture |
US6954744B2 (en) * | 2001-08-29 | 2005-10-11 | Honeywell International, Inc. | Combinatorial approach for supervised neural network learning |
US6961719B1 (en) * | 2002-01-07 | 2005-11-01 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Hybrid neural network and support vector machine method for optimization |
US7245627B2 (en) | 2002-04-23 | 2007-07-17 | Mellanox Technologies Ltd. | Sharing a network interface card among multiple hosts |
US7539608B1 (en) | 2002-05-10 | 2009-05-26 | Oracle International Corporation | Techniques for determining effects on system performance of a memory management parameter |
US7020207B1 (en) * | 2002-12-02 | 2006-03-28 | Hitachi, Ltd. | Video error concealment mechanism for block based video decompression |
US7444637B2 (en) | 2003-02-18 | 2008-10-28 | Microsoft Corporation | Systems and methods for scheduling coprocessor resources in a computing system |
US7137021B2 (en) * | 2003-05-15 | 2006-11-14 | International Business Machines Corporation | Power saving in FPU with gated power based on opcodes and data |
GB0313986D0 (en) * | 2003-06-17 | 2003-07-23 | Zarlink Semiconductor Inc | Data memory extension for use in double buffered TDM switches |
US20050125797A1 (en) * | 2003-12-09 | 2005-06-09 | International Business Machines Corporation | Resource management for a system-on-chip (SoC) |
WO2005057400A1 (ja) | 2003-12-09 | 2005-06-23 | Matsushita Electric Industrial Co., Ltd. | 電子装置、その制御方法、ホスト装置及びその制御方法 |
US7480640B1 (en) * | 2003-12-16 | 2009-01-20 | Quantum Leap Research, Inc. | Automated method and system for generating models from data |
US7376853B2 (en) | 2004-03-15 | 2008-05-20 | Canon Kabushiki Kaisha | Network apparatus, method for controlling the same, and program for the same |
US7284075B2 (en) | 2004-03-23 | 2007-10-16 | Intel Corporation | Inbound packet placement in host memory |
US7644239B2 (en) * | 2004-05-03 | 2010-01-05 | Microsoft Corporation | Non-volatile memory cache performance improvement |
US9143393B1 (en) * | 2004-05-25 | 2015-09-22 | Red Lambda, Inc. | System, method and apparatus for classifying digital data |
US20050289253A1 (en) * | 2004-06-24 | 2005-12-29 | Edirisooriya Samantha J | Apparatus and method for a multi-function direct memory access core |
US7363397B2 (en) | 2004-08-26 | 2008-04-22 | International Business Machines Corporation | System and method for DMA controller with multi-dimensional line-walking functionality |
US20060100997A1 (en) * | 2004-10-27 | 2006-05-11 | Wall Gary C | Data caching |
US8190796B2 (en) * | 2004-11-02 | 2012-05-29 | Standard Microsystems Corporation | Hardware supported peripheral component memory alignment method |
CN1790918A (zh) | 2004-12-17 | 2006-06-21 | 中国科学院半导体研究所 | 基于虚拟信源和神经网络的无损数据压缩方法 |
US20060143401A1 (en) * | 2004-12-27 | 2006-06-29 | Jacob Doweck | Method and apparatus for prefetching based on cache fill buffer hits |
EP1701249A1 (en) * | 2005-03-11 | 2006-09-13 | Interuniversitair Microelektronica Centrum Vzw | Ultra low power ASIP (Application-Domain specific Instruction-set Processor) microcomputer |
US7793040B2 (en) * | 2005-06-01 | 2010-09-07 | Microsoft Corporation | Content addressable memory architecture |
US7747070B2 (en) * | 2005-08-31 | 2010-06-29 | Microsoft Corporation | Training convolutional neural networks on graphics processing units |
CN101401100B (zh) * | 2006-03-14 | 2012-10-10 | 国际商业机器公司 | 通过确定输入数据中的模式进行数据挖掘 |
WO2007115199A2 (en) * | 2006-03-31 | 2007-10-11 | Qualcomm Incorporated | Memory management for high speed media access control |
US9542642B2 (en) | 2006-04-06 | 2017-01-10 | Samuel F. Wood | Packet data neural network system and method |
US7764710B1 (en) * | 2006-04-25 | 2010-07-27 | Altera Corporation | Method and apparatus for processing communication protocol frame input |
US7620784B2 (en) * | 2006-06-09 | 2009-11-17 | Microsoft Corporation | High speed nonvolatile memory device using parallel writing among a plurality of interfaces |
US8718065B2 (en) | 2006-08-15 | 2014-05-06 | Broadcom Corporation | Transmission using multiple physical interface |
US7496707B2 (en) | 2006-08-22 | 2009-02-24 | International Business Machines Corporation | Dynamically scalable queues for performance driven PCI express memory traffic |
US20080091868A1 (en) * | 2006-10-17 | 2008-04-17 | Shay Mizrachi | Method and System for Delayed Completion Coalescing |
US8249171B2 (en) | 2006-11-10 | 2012-08-21 | Texas Instruments Incorporated | MPEG-2 transport stream packet synchronizer |
US20080168013A1 (en) * | 2006-12-05 | 2008-07-10 | Paul Cadaret | Scalable pattern recognition system |
WO2008070813A2 (en) * | 2006-12-06 | 2008-06-12 | Fusion Multisystems, Inc. (Dba Fusion-Io) | Apparatus, system, and method for a front-end, distributed raid |
US8103606B2 (en) | 2006-12-08 | 2012-01-24 | Medhat Moussa | Architecture, system and method for artificial neural network implementation |
CN101221541B (zh) * | 2007-01-09 | 2011-04-20 | 张立军 | 用于soc的可编程通信控制器 |
US7620749B2 (en) * | 2007-01-10 | 2009-11-17 | International Business Machines Corporation | Descriptor prefetch mechanism for high latency and out of order DMA device |
US8190834B2 (en) | 2007-06-15 | 2012-05-29 | Emc Corporation | Process for contiguously streaming data from a content addressed storage system |
JP5184824B2 (ja) * | 2007-06-15 | 2013-04-17 | キヤノン株式会社 | 演算処理装置及び方法 |
US7822951B2 (en) | 2007-08-01 | 2010-10-26 | Advanced Micro Devices, Inc. | System and method of load-store forwarding |
US8200992B2 (en) * | 2007-09-24 | 2012-06-12 | Cognitive Electronics, Inc. | Parallel processing computer systems with reduced power consumption and methods for providing the same |
CN101183873B (zh) | 2007-12-11 | 2011-09-28 | 广州中珩电子科技有限公司 | 一种基于bp神经网络的嵌入式系统数据压缩解压缩方法 |
US8244953B1 (en) | 2007-12-18 | 2012-08-14 | Emc Corporation | System and method for faster data retrieval from tape media |
US8244721B2 (en) * | 2008-02-13 | 2012-08-14 | Microsoft Corporation | Using related users data to enhance web search |
US7730244B1 (en) * | 2008-03-27 | 2010-06-01 | Xilinx, Inc. | Translation of commands in an interconnection of an embedded processor block core in an integrated circuit |
US8201166B2 (en) * | 2008-04-30 | 2012-06-12 | Hewlett-Packard Development Company, L.P. | Virtualization platform configured with virtual connect control |
GB0811057D0 (en) | 2008-06-17 | 2008-07-23 | Univ Ulster | Artificial neural network architecture |
US8566515B2 (en) * | 2009-01-12 | 2013-10-22 | Maxim Integrated Products, Inc. | Memory subsystem |
US20100180100A1 (en) | 2009-01-13 | 2010-07-15 | Mavrix Technology, Inc. | Matrix microprocessor and method of operation |
US8392687B2 (en) * | 2009-01-21 | 2013-03-05 | Micron Technology, Inc. | Solid state memory formatting |
JP5458629B2 (ja) * | 2009-03-31 | 2014-04-02 | ブラザー工業株式会社 | ノード装置、ノード処理プログラム及び検索方法 |
US20100257174A1 (en) | 2009-04-02 | 2010-10-07 | Matthew Dino Minuti | Method for data compression utilizing pattern-analysis and matching means such as neural networks |
US20100281192A1 (en) | 2009-04-30 | 2010-11-04 | Novafora, Inc. | Apparatus and method for transferring data within a data processing system |
EP2259214B1 (en) | 2009-06-04 | 2013-02-27 | Honda Research Institute Europe GmbH | Implementing a neural associative memory based on non-linear learning of discrete synapses |
KR101370314B1 (ko) * | 2009-06-26 | 2014-03-05 | 인텔 코포레이션 | 언바운디드 트랜잭션 메모리 (utm) 시스템의 최적화 |
US8442927B2 (en) | 2009-07-30 | 2013-05-14 | Nec Laboratories America, Inc. | Dynamically configurable, multi-ported co-processor for convolutional neural networks |
US8316194B2 (en) * | 2009-12-15 | 2012-11-20 | Intel Corporation | Mechanisms to accelerate transactions using buffered stores |
US20110153877A1 (en) * | 2009-12-23 | 2011-06-23 | King Steven R | Method and apparatus to exchange data via an intermediary translation and queue manager |
WO2011085934A1 (en) * | 2010-01-18 | 2011-07-21 | Xelerated Ab | A packet buffer comprising a data section and a data description section |
US8713260B2 (en) | 2010-04-02 | 2014-04-29 | Intel Corporation | Adaptive block pre-fetching method and system |
US8549506B2 (en) * | 2010-04-27 | 2013-10-01 | Microsoft Corporation | Resumable methods |
US8965819B2 (en) * | 2010-08-16 | 2015-02-24 | Oracle International Corporation | System and method for effective caching using neural networks |
US8701099B2 (en) * | 2010-11-02 | 2014-04-15 | International Business Machines Corporation | Accelerating generic loop iterators using speculative execution |
US9300321B2 (en) * | 2010-11-05 | 2016-03-29 | University of Maribor | Light detection and ranging (LiDAR)data compression and decompression methods and apparatus |
US8515882B2 (en) | 2010-11-18 | 2013-08-20 | International Business Machines Corporation | Efficient storage of individuals for optimization simulation |
CN102480337B (zh) | 2010-11-30 | 2016-04-13 | 国际商业机器公司 | 无线电软件系统以及用于其的解码装置和方法 |
US8966413B2 (en) * | 2011-02-17 | 2015-02-24 | The Board Of Trustees Of The Leland Stanford Junior University | System and method for a chip generator |
US8892488B2 (en) * | 2011-06-01 | 2014-11-18 | Nec Laboratories America, Inc. | Document classification with weighted supervised n-gram embedding |
US9288251B2 (en) * | 2011-06-10 | 2016-03-15 | Citrix Systems, Inc. | Adaptive bitrate management on progressive download with indexed media files |
CN102332162A (zh) | 2011-09-19 | 2012-01-25 | 西安百利信息科技有限公司 | 基于人工神经网络的医学图像兴趣区自动识别和分级压缩方法 |
US9015092B2 (en) * | 2012-06-04 | 2015-04-21 | Brain Corporation | Dynamically reconfigurable stochastic learning apparatus and methods |
US9326075B2 (en) | 2011-10-07 | 2016-04-26 | Cochlear Limited | Flexible protocol for an implanted prosthesis |
US9235799B2 (en) * | 2011-11-26 | 2016-01-12 | Microsoft Technology Licensing, Llc | Discriminative pretraining of deep neural networks |
CN102523452B (zh) | 2011-12-29 | 2014-12-17 | 西安空间无线电技术研究所 | 图像转换压缩传输方法 |
US9128925B2 (en) * | 2012-04-24 | 2015-09-08 | Freescale Semiconductor, Inc. | System and method for direct memory access buffer utilization by setting DMA controller with plurality of arbitration weights associated with different DMA engines |
KR101619686B1 (ko) * | 2012-04-25 | 2016-05-10 | 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 | 네트워크 기반 컴퓨팅을 위한 워크로드 예측 |
US9703500B2 (en) * | 2012-04-25 | 2017-07-11 | International Business Machines Corporation | Reducing power consumption by migration of data within a tiered storage system |
US9015096B2 (en) * | 2012-05-30 | 2015-04-21 | Qualcomm Incorporated | Continuous time spiking neural network event-based simulation that schedules co-pending events using an indexable list of nodes |
US9432489B2 (en) * | 2012-06-05 | 2016-08-30 | Intel Corporation | Systems and methods for processing encoded data streams |
US9159020B2 (en) * | 2012-09-14 | 2015-10-13 | International Business Machines Corporation | Multiplexing physical neurons to optimize power and area |
US20160013773A1 (en) * | 2012-11-06 | 2016-01-14 | Pavel Dourbal | Method and apparatus for fast digital filtering and signal processing |
US9449257B2 (en) * | 2012-12-04 | 2016-09-20 | Institute Of Semiconductors, Chinese Academy Of Sciences | Dynamically reconstructable multistage parallel single instruction multiple data array processing system |
WO2014105011A1 (en) | 2012-12-26 | 2014-07-03 | Intel Corporation | Coalescing adjacent gather/scatter operations |
CN105264779B (zh) * | 2013-01-22 | 2019-06-07 | 阿尔特拉公司 | 使用simd指令的数据压缩和解压 |
US10909137B2 (en) | 2014-10-06 | 2021-02-02 | Fisher-Rosemount Systems, Inc. | Streaming data for analytics in process control systems |
CN104050200B (zh) | 2013-03-15 | 2017-12-08 | 伊姆西公司 | 用于数据拷贝的方法和装置 |
US9760346B2 (en) * | 2013-05-31 | 2017-09-12 | Microsoft Technology Licensing, Llc | Deeply parallel source code compilation |
WO2014204331A1 (en) | 2013-06-17 | 2014-12-24 | Llc "Topcon Positioning Systems" | Nand flash memory interface controller with gnss receiver firmware booting capability |
US20150081696A1 (en) * | 2013-09-19 | 2015-03-19 | Marketwire L.P. | Systems and Methods for Actively Composing Content for Use in Continuous Social Communication |
US9280465B2 (en) * | 2013-10-08 | 2016-03-08 | Globalfoundries Inc. | Techniques for moving checkpoint-based high-availability log and data directly from a producer cache to a consumer cache |
US20150286873A1 (en) * | 2014-04-03 | 2015-10-08 | Bruce L. Davis | Smartphone-based methods and systems |
US9286171B2 (en) * | 2013-12-12 | 2016-03-15 | International Business Machines Corporation | Priming failover of stateful offload adapters |
KR101865261B1 (ko) * | 2013-12-23 | 2018-06-07 | 인텔 코포레이션 | 입력 출력 데이터 정렬 |
GB2521828A (en) | 2013-12-23 | 2015-07-08 | Sony Corp | Data encoding and decoding |
US9851771B2 (en) | 2013-12-28 | 2017-12-26 | Intel Corporation | Dynamic power measurement and estimation to improve memory subsystem power performance |
US10097372B2 (en) * | 2014-01-09 | 2018-10-09 | Ciena Corporation | Method for resource optimized network virtualization overlay transport in virtualized data center environments |
EP2896428B1 (fr) * | 2014-01-16 | 2016-11-09 | Sorin CRM SAS | Ensemble de réseau de neurones pour l'évaluation et l'adaptation d'une thérapie antitachycardique par un défibrillateur implantable |
US10339447B2 (en) * | 2014-01-23 | 2019-07-02 | Qualcomm Incorporated | Configuring sparse neuronal networks |
US9563369B2 (en) * | 2014-04-14 | 2017-02-07 | Microsoft Technology Licensing, Llc | Fine-grained bandwidth provisioning in a memory controller |
WO2015159242A1 (en) * | 2014-04-15 | 2015-10-22 | Saffron Technology Inc. | Methods, systems and computer program products for neuromorphic graph compression using associative memories |
US9219499B2 (en) | 2014-05-16 | 2015-12-22 | Robert Bosch Gmbh | Run time compression method for a vehicle communication bus |
US9892125B1 (en) * | 2014-05-23 | 2018-02-13 | MapD Technologies, Inc. | Method for logging update queries |
US9959142B2 (en) * | 2014-06-17 | 2018-05-01 | Mediatek Inc. | Dynamic task scheduling method for dispatching sub-tasks to computing devices of heterogeneous computing system and related computer readable medium |
EP3192012A4 (en) * | 2014-09-12 | 2018-01-17 | Microsoft Technology Licensing, LLC | Learning student dnn via output distribution |
US9990307B1 (en) | 2014-10-29 | 2018-06-05 | Netronome Systems, Inc. | Split packet transmission DMA engine |
EP3035204B1 (en) | 2014-12-19 | 2018-08-15 | Intel Corporation | Storage device and method for performing convolution operations |
EP3035249B1 (en) | 2014-12-19 | 2019-11-27 | Intel Corporation | Method and apparatus for distributed and cooperative computation in artificial neural networks |
US10223635B2 (en) | 2015-01-22 | 2019-03-05 | Qualcomm Incorporated | Model compression and fine-tuning |
CN104573064B (zh) * | 2015-01-23 | 2017-12-08 | 四川中科腾信科技有限公司 | 一种大数据环境下的数据处理方法 |
US10234930B2 (en) * | 2015-02-13 | 2019-03-19 | Intel Corporation | Performing power management in a multicore processor |
CA2923600A1 (en) * | 2015-03-12 | 2016-09-12 | Staples, Inc. | Review sentiment analysis |
US10262190B2 (en) * | 2015-03-26 | 2019-04-16 | Beijing Kuangshi Technology Co., Ltd. | Method, system, and computer program product for recognizing face |
US9378044B1 (en) * | 2015-03-28 | 2016-06-28 | Vmware, Inc. | Method and system that anticipates deleterious virtual-machine state changes within a virtualization layer |
US9928144B2 (en) * | 2015-03-30 | 2018-03-27 | Commvault Systems, Inc. | Storage management of data using an open-archive architecture, including streamlined access to primary data originally stored on network-attached storage and archived to secondary storage |
FR3035243B1 (fr) * | 2015-04-20 | 2018-06-29 | Commissariat A L'energie Atomique Et Aux Energies Alternatives | Placement d'une tache de calcul sur un processeur fonctionnellement asymetrique |
US9965824B2 (en) * | 2015-04-23 | 2018-05-08 | Google Llc | Architecture for high performance, power efficient, programmable image processing |
US20160328644A1 (en) | 2015-05-08 | 2016-11-10 | Qualcomm Incorporated | Adaptive selection of artificial neural networks |
US10083395B2 (en) * | 2015-05-21 | 2018-09-25 | Google Llc | Batch processing in a neural network processor |
CN106203619B (zh) * | 2015-05-29 | 2022-09-13 | 三星电子株式会社 | 数据优化的神经网络遍历 |
US9595002B2 (en) * | 2015-05-29 | 2017-03-14 | Sas Institute Inc. | Normalizing electronic communications using a vector having a repeating substring as input for a neural network |
US20160350653A1 (en) * | 2015-06-01 | 2016-12-01 | Salesforce.Com, Inc. | Dynamic Memory Network |
US20160358069A1 (en) * | 2015-06-03 | 2016-12-08 | Samsung Electronics Co., Ltd. | Neural network suppression |
CN106250981B (zh) * | 2015-06-10 | 2022-04-01 | 三星电子株式会社 | 减少存储器访问和网络内带宽消耗的脉冲神经网络 |
US10275001B2 (en) | 2015-06-26 | 2019-04-30 | Intel Corporation | Thermal throttling of electronic devices |
US20160379109A1 (en) * | 2015-06-29 | 2016-12-29 | Microsoft Technology Licensing, Llc | Convolutional neural networks on hardware accelerators |
US11244225B2 (en) | 2015-07-10 | 2022-02-08 | Samsung Electronics Co., Ltd. | Neural network processor configurable using macro instructions |
CN108140131B (zh) | 2015-10-04 | 2021-09-14 | 艾腾怀斯股份有限公司 | 用于将卷积网络应用于空间数据的系统和方法 |
CN106447037B (zh) * | 2015-10-08 | 2019-02-12 | 上海兆芯集成电路有限公司 | 具有多个可选择输出的神经网络单元 |
US11029949B2 (en) * | 2015-10-08 | 2021-06-08 | Shanghai Zhaoxin Semiconductor Co., Ltd. | Neural network unit |
US10471594B2 (en) * | 2015-12-01 | 2019-11-12 | Kindred Systems Inc. | Systems, devices, and methods for the distribution and collection of multimodal data associated with robots |
CN105488563A (zh) * | 2015-12-16 | 2016-04-13 | 重庆大学 | 面向深度学习的稀疏自适应神经网络、算法及实现装置 |
US10007519B2 (en) * | 2015-12-22 | 2018-06-26 | Intel IP Corporation | Instructions and logic for vector bit field compression and expansion |
US11232085B2 (en) * | 2016-01-07 | 2022-01-25 | Amazon Technologies, Inc. | Outlier detection for streaming data |
CN107563497B (zh) * | 2016-01-20 | 2021-03-19 | 中科寒武纪科技股份有限公司 | 用于稀疏人工神经网络的计算装置和运算方法 |
US10565207B2 (en) * | 2016-04-12 | 2020-02-18 | Hsilin Huang | Method, system and program product for mask-based compression of a sparse matrix |
CN106203624B (zh) * | 2016-06-23 | 2019-06-21 | 上海交通大学 | 基于深度神经网络的矢量量化系统及方法 |
CN106204468B (zh) * | 2016-06-27 | 2019-04-26 | 深圳市未来媒体技术研究院 | 一种基于ReLU卷积神经网络的图像去噪方法 |
US10528864B2 (en) * | 2016-08-11 | 2020-01-07 | Nvidia Corporation | Sparse convolutional neural network accelerator |
WO2018058452A1 (zh) * | 2016-09-29 | 2018-04-05 | 北京中科寒武纪科技有限公司 | 一种执行人工神经网络运算的装置和方法 |
US10296292B2 (en) * | 2016-10-20 | 2019-05-21 | Advanced Micro Devices, Inc. | Dynamic variable precision computation |
CN106530200B (zh) | 2016-10-23 | 2020-01-07 | 深圳大学 | 一种基于深度学习模型的隐写图像检测方法及系统 |
CN106529670B (zh) * | 2016-10-27 | 2019-01-25 | 中国科学院计算技术研究所 | 一种基于权重压缩的神经网络处理器、设计方法、芯片 |
US9959498B1 (en) | 2016-10-27 | 2018-05-01 | Google Llc | Neural network instruction set architecture |
US10067710B2 (en) * | 2016-11-23 | 2018-09-04 | Advanced Micro Devices, Inc. | Detecting buffer overflows in general-purpose GPU applications |
US20180164866A1 (en) * | 2016-12-13 | 2018-06-14 | Qualcomm Incorporated | Low-power architecture for sparse neural network |
US10037490B2 (en) * | 2016-12-13 | 2018-07-31 | Google Llc | Performing average pooling in hardware |
US10169296B2 (en) * | 2016-12-30 | 2019-01-01 | Intel Corporation | Distributed matrix multiplication for neural networks |
US20180189229A1 (en) | 2017-01-04 | 2018-07-05 | Stmicroelectronics S.R.L. | Deep convolutional network heterogeneous architecture |
US10096134B2 (en) * | 2017-02-01 | 2018-10-09 | Nvidia Corporation | Data compaction and memory bandwidth reduction for sparse neural networks |
US10333549B1 (en) * | 2017-03-08 | 2019-06-25 | iDensify LLC | System and components for encoding integers |
US10909447B2 (en) | 2017-03-09 | 2021-02-02 | Google Llc | Transposing neural network matrices in hardware |
US10795836B2 (en) | 2017-04-17 | 2020-10-06 | Microsoft Technology Licensing, Llc | Data processing performance enhancement for neural networks using a virtualized data iterator |
US10671349B2 (en) * | 2017-07-24 | 2020-06-02 | Tesla, Inc. | Accelerated mathematical engine |
US20190081637A1 (en) * | 2017-09-08 | 2019-03-14 | Nvidia Corporation | Data inspection for compression/decompression configuration and data type determination |
KR20190066473A (ko) * | 2017-12-05 | 2019-06-13 | 삼성전자주식회사 | 뉴럴 네트워크에서 컨볼루션 연산을 처리하는 방법 및 장치 |
US12014505B2 (en) * | 2019-01-31 | 2024-06-18 | Samsung Electronics Co., Ltd. | Method and apparatus with convolution neural network processing using shared operand |
US11671111B2 (en) * | 2019-04-17 | 2023-06-06 | Samsung Electronics Co., Ltd. | Hardware channel-parallel data compression/decompression |
CN112465129B (zh) * | 2019-09-09 | 2024-01-09 | 上海登临科技有限公司 | 片内异构人工智能处理器 |
-
2017
- 2017-09-01 US US15/694,663 patent/US10795836B2/en active Active
- 2017-09-12 US US15/702,311 patent/US10540584B2/en active Active
- 2017-09-28 US US15/719,351 patent/US11256976B2/en active Active
- 2017-10-17 US US15/786,514 patent/US20180300602A1/en not_active Abandoned
- 2017-11-15 US US15/813,952 patent/US11182667B2/en active Active
- 2017-12-01 US US15/829,832 patent/US10963403B2/en active Active
-
2018
- 2018-01-26 US US15/881,519 patent/US11010315B2/en active Active
- 2018-04-06 CN CN201880025417.XA patent/CN110520846B/zh active Active
- 2018-04-06 CN CN201880025244.1A patent/CN110520856B/zh active Active
- 2018-04-06 WO PCT/US2018/026358 patent/WO2018194851A1/en unknown
- 2018-04-06 WO PCT/US2018/026355 patent/WO2018194848A1/en unknown
- 2018-04-06 WO PCT/US2018/026352 patent/WO2018194845A1/en unknown
- 2018-04-06 EP EP18720860.8A patent/EP3612945B1/en active Active
- 2018-04-06 CN CN201880025415.0A patent/CN110546628B/zh active Active
- 2018-04-06 EP EP18720862.4A patent/EP3612947B1/en active Active
- 2018-04-06 CN CN201880025504.5A patent/CN110520857B/zh active Active
- 2018-04-06 EP EP18720861.6A patent/EP3612946B1/en active Active
- 2018-04-06 WO PCT/US2018/026357 patent/WO2018194850A1/en unknown
- 2018-04-06 CN CN201880024892.5A patent/CN110506260B/zh active Active
- 2018-04-06 WO PCT/US2018/026353 patent/WO2018194846A1/en unknown
- 2018-04-06 WO PCT/US2018/026356 patent/WO2018194849A1/en unknown
- 2018-04-06 EP EP18725024.6A patent/EP3612937A1/en not_active Withdrawn
- 2018-04-06 EP EP18724637.6A patent/EP3612948A1/en not_active Ceased
- 2018-04-06 CN CN202310874704.0A patent/CN116909985A/zh active Pending
- 2018-04-06 CN CN201880025503.0A patent/CN110520853B/zh active Active
- 2018-04-06 WO PCT/US2018/026354 patent/WO2018194847A1/en unknown
- 2018-04-06 CN CN202310865940.6A patent/CN116909984A/zh active Pending
- 2018-04-06 EP EP18720863.2A patent/EP3612989B1/en active Active
- 2018-04-06 CN CN201880025227.8A patent/CN110520870B/zh active Active
- 2018-04-06 EP EP18720710.5A patent/EP3612942B1/en active Active
- 2018-04-11 US US15/950,550 patent/US11100390B2/en active Active
- 2018-04-11 US US15/950,644 patent/US10628345B2/en active Active
- 2018-04-11 US US15/951,106 patent/US11100391B2/en active Active
- 2018-04-12 US US15/951,690 patent/US11205118B2/en active Active
- 2018-04-13 US US15/953,195 patent/US11341399B2/en active Active
- 2018-04-13 EP EP18721658.5A patent/EP3612990B1/en active Active
- 2018-04-13 US US15/953,330 patent/US11476869B2/en active Active
- 2018-04-13 US US15/953,388 patent/US11405051B2/en active Active
- 2018-04-13 US US15/953,356 patent/US11528033B2/en active Active
- 2018-04-13 WO PCT/US2018/027674 patent/WO2018194939A1/en unknown
- 2018-04-13 CN CN201880025488.XA patent/CN110537194B/zh active Active
- 2018-04-13 WO PCT/US2018/027680 patent/WO2018194940A1/en active Application Filing
- 2018-04-16 CN CN201880025480.3A patent/CN110546611B/zh active Active
- 2018-04-16 SG SG11201909175X patent/SG11201909175XA/en unknown
- 2018-04-16 CN CN202410312381.0A patent/CN118153639A/zh active Pending
- 2018-04-16 CN CN201880025508.3A patent/CN110582785B/zh active Active
- 2018-04-16 JP JP2019555659A patent/JP7004741B2/ja active Active
- 2018-04-16 CN CN201880025426.9A patent/CN110678843B/zh active Active
- 2018-04-16 WO PCT/US2018/027835 patent/WO2018194994A2/en unknown
- 2018-04-16 WO PCT/US2018/027828 patent/WO2018194988A1/en unknown
- 2018-04-16 MY MYPI2019006051A patent/MY201868A/en unknown
- 2018-04-16 CN CN201880025420.1A patent/CN110520909B/zh active Active
- 2018-04-16 CA CA3056660A patent/CA3056660A1/en active Pending
- 2018-04-16 BR BR112019021541-7A patent/BR112019021541A2/pt unknown
- 2018-04-16 EP EP18723123.8A patent/EP3612936B1/en active Active
- 2018-04-16 EP EP18722340.9A patent/EP3612934A1/en active Pending
- 2018-04-16 CN CN201880025130.7A patent/CN110546654B/zh active Active
- 2018-04-16 CN CN201880025126.0A patent/CN110546610B/zh active Active
- 2018-04-16 EP EP18724644.2A patent/EP3612988A2/en not_active Withdrawn
- 2018-04-16 EP EP18721932.4A patent/EP3613026B1/en active Active
- 2018-04-16 WO PCT/US2018/027840 patent/WO2018194998A1/en unknown
- 2018-04-16 EP EP18722339.1A patent/EP3612933A1/en active Pending
- 2018-04-16 NZ NZ756870A patent/NZ756870A/en unknown
- 2018-04-16 MX MX2019012388A patent/MX2019012388A/es unknown
- 2018-04-16 EP EP18721665.0A patent/EP3612991B1/en active Active
- 2018-04-16 WO PCT/US2018/027837 patent/WO2018194996A1/en unknown
- 2018-04-16 WO PCT/US2018/027834 patent/WO2018194993A1/en unknown
- 2018-04-16 WO PCT/US2018/027836 patent/WO2018194995A1/en unknown
- 2018-04-16 KR KR1020197033456A patent/KR102596644B1/ko active IP Right Grant
- 2018-04-16 AU AU2018256212A patent/AU2018256212B2/en active Active
- 2018-04-16 KR KR1020237037000A patent/KR102663557B1/ko active IP Right Grant
- 2018-04-16 RU RU2019136750A patent/RU2767447C2/ru active
-
2019
- 2019-09-05 ZA ZA2019/05874A patent/ZA201905874B/en unknown
- 2019-09-14 PH PH12019550191A patent/PH12019550191A1/en unknown
- 2019-10-04 CO CONC2019/0011014A patent/CO2019011014A2/es unknown
- 2019-10-07 CL CL2019002864A patent/CL2019002864A1/es unknown
- 2019-10-07 IL IL269888A patent/IL269888B/en unknown
- 2019-10-16 MX MX2023008178A patent/MX2023008178A/es unknown
-
2020
- 2020-04-08 US US16/843,800 patent/US11176448B2/en active Active
- 2020-07-29 US US16/942,728 patent/US11030131B2/en active Active
-
2021
- 2021-04-15 US US17/232,074 patent/US11750212B2/en active Active
-
2022
- 2022-01-25 US US17/583,499 patent/US11722147B2/en active Active
- 2022-11-11 US US18/054,851 patent/US11909422B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030065631A1 (en) * | 2001-10-03 | 2003-04-03 | Mcbride Chad B. | Pipelined hardware implementation of a neural network circuit |
US20060050693A1 (en) * | 2004-09-03 | 2006-03-09 | James Bury | Building data packets for an advanced switching fabric |
CN102609222A (zh) * | 2012-02-13 | 2012-07-25 | 山东华芯半导体有限公司 | 基于命令描述符的闪存控制方法 |
US20160335119A1 (en) * | 2015-05-12 | 2016-11-17 | minds.ai inc | Batch-based neural network system |
WO2016210030A1 (en) * | 2015-06-26 | 2016-12-29 | Microsoft Technology Licensing, Llc | Determination of target location for transfer of processor control |
Non-Patent Citations (2)
Title |
---|
LIU, SL;ET AL: "Cambricon: An Instruction Set Architecture for Neural Networks", 2016 ACM/IEEE 43RD ANNUAL INTERNATIONAL SYMPOSIUM ON COMPUTER ARCHITECTURE * |
沙子岩: "基于神经网络的处理器分支预测技术研究", 信息科技 * |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110537194A (zh) | 被配置用于层和操作防护和依赖性管理的功率高效的深度神经网络模块 | |
US11615284B2 (en) | Efficient transferring of human experiences to robots and other autonomous machines | |
Cavigelli et al. | Origami: A convolutional network accelerator | |
CN109388595A (zh) | 高带宽存储器系统以及逻辑管芯 | |
CN104951358B (zh) | 基于优先级的上下文抢占 | |
CN114303156A (zh) | 使用一个或更多个神经网络的视频预测 | |
US20190188141A1 (en) | General purpose input/output data capture and neural cache system for autonomous machines | |
CN104346224B (zh) | 使用组页面错误描述符来处理上下文切换和进程终止 | |
US10282804B2 (en) | Facilitating configuration of computing engines based on runtime workload measurements at computing devices | |
CN110326021A (zh) | 用于图形处理器上的加速计算的执行单元共享混合技术 | |
CN113781617B (zh) | 使用一个或更多个神经网络生成环境 | |
CN112419326B (zh) | 图像分割数据处理方法、装置、设备及存储介质 | |
CN107992366A (zh) | 对多个目标对象进行检测和跟踪的方法、系统和电子设备 | |
CN113642696A (zh) | 使用一个或更多个神经网络进行精彩片段确定 | |
CN113192639A (zh) | 信息预测模型的训练方法、装置、设备及存储介质 | |
CN115661336A (zh) | 一种三维重建方法及相关装置 | |
CN112364102A (zh) | 一种基于区块链的大数据交易方法、装置、介质及设备 | |
CN114554279A (zh) | 基于远程分析的触发器响应剪辑提取 | |
Wei et al. | FPGA‐based embedded motion estimation sensor | |
Malik et al. | Comparison of three smart camera architectures for real-time machine vision system | |
Burke | Runtime methods for energy-efficient, image processing using significance driven learning. | |
Amiel et al. | Real Time Region of Interest Determination and Implementation with Integral Image | |
CN116362301A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |