JP7004741B2 - メモリ帯域幅利用を低減するために活性化データの圧縮及び復元を使用するニューラルネットワークプロセッサ - Google Patents

メモリ帯域幅利用を低減するために活性化データの圧縮及び復元を使用するニューラルネットワークプロセッサ Download PDF

Info

Publication number
JP7004741B2
JP7004741B2 JP2019555659A JP2019555659A JP7004741B2 JP 7004741 B2 JP7004741 B2 JP 7004741B2 JP 2019555659 A JP2019555659 A JP 2019555659A JP 2019555659 A JP2019555659 A JP 2019555659A JP 7004741 B2 JP7004741 B2 JP 7004741B2
Authority
JP
Japan
Prior art keywords
data
chunk
bytes
uncompressed
zero
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019555659A
Other languages
English (en)
Other versions
JP2020517014A (ja
JP2020517014A5 (ja
Inventor
レオン コーカリー,ジョセフ
エリオット ルンデル,ベンジャミン
マーヴィン ウォール,ラリー
ボーリング マクブライド,チャド
アショク アンバルデカル,アモール
ピーター,ジョージ
ディー セドラ,ケント
ボブロフ,ボリス
Original Assignee
マイクロソフト テクノロジー ライセンシング,エルエルシー
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by マイクロソフト テクノロジー ライセンシング,エルエルシー filed Critical マイクロソフト テクノロジー ライセンシング,エルエルシー
Publication of JP2020517014A publication Critical patent/JP2020517014A/ja
Publication of JP2020517014A5 publication Critical patent/JP2020517014A5/ja
Application granted granted Critical
Publication of JP7004741B2 publication Critical patent/JP7004741B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5016Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/5033Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/049Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0495Quantised networks; Sparse networks; Compressed networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • G06N3/065Analogue means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3059Digital compression and data reduction techniques where the original information is represented by a subset or similar information, e.g. lossy compression
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3066Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction by means of a mask or a bit-map
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3088Compression; 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/46Conversion 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6005Decoder aspects
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6011Encoder aspects
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6058Saving memory space in the encoder or decoder
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/70Type of the data to be coded, other than image and sound
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/04Interdomain routing, e.g. hierarchical routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/50Routing or path finding of packets in data switching networks using label swapping, e.g. multi-protocol label switch [MPLS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/485Resource constraint
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Description

ディープニューラルネットワーク(Deep Neural Network(s))(“DNN”)は、人間の脳などの生体神経系における情報処理及び通信パターンを大まかにモデル化している。DNNは、制限なしに、物体検出、意味的標識付け(semantic labeling)、及び特徴抽出などの複雑な分類問題を解くために利用可能である。結果として、DNNは、コンピュータビジョン、音声認識、及び機械翻訳などの多くの人工知能(Artificial Intelligence)(“AI”)アプリケーションの基礎を形成している。DNNは、それらの分野の多くで人間の精度以上であることができる。
DNNの高い性能は、入力空間の効果的表現を得るために大規模データセットに対する統計学習を使用した後に入力データから高次特徴(high-level features)を抽出するそれらの能力に由来する。しかし、DNNの優れた性能は、高い計算複雑性という代償の上に成り立っている。グラフィクスプロセッシングユニット(Graphics Processing Unit(s))(“GPU”)などの高性能の汎用プロセッサが、多くのDNNアプリケーションによって必要とされる高度な計算性能を提供するために広く利用されている。
GPUのような汎用プロセッサは、DNNを実装するための高度な計算性能を提供することができるが、他方で、そのようなプロセッサは、低電力消費が重要であるコンピュータ装置でDNN動作を長期にわたって実行することにおける使用には、通常は適さない。例えば、GPUなどの汎用プロセッサは、スマートフォン又は代替/仮想現実(Alternate/Virtual Reality)(“AR/VR”)デバイスのような、バッテリ寿命を延ばすために電力消費の削減が求められるバッテリ駆動のポータブルデバイスで長期にわたるDNNタスクを実行することにおける使用には不適切であり得る。
人間の動作の検出などの連続的なDNNタスクを実行しながら電力消費を低減することは、例えば、パワー・オーバー・イーサネット(Power-over-Ethernet)(“POE”)などの非バッテリ駆動デバイスでも重要であり得る。この具体的な例において、POEスイッチは、限られた量の電力しか供給することができず、防犯カメラなどのPOEデバイスの電力消費量を減らすことは、電力供給量が少ないPOEスイッチの使用を可能にする。
高性能のDNN処理を提供しながら同時に、汎用プロセッサと比較して電力消費量を削減することができる特定用途向け集積回路(Application-Specific Integrated Circuit(s))(“ASIC”)が開発されてきた。しかし、この分野の進歩にかかわらず、特に、低電力消費が重要であるコンピュータ装置での使用のために、DNN処理を実行するASICの性能の改善及び電力消費量の削減に対するニーズが依然として存在する。
本明細書でなされた開示が提示されるのは、これら及び他の技術的課題に関してである。
メモリバス帯域幅の利用量を低減するために活性化データを圧縮及び復元することができるDNNモジュール又はプロセッサが、開示される。特に、DNNモジュールは、ニューロン出力とオンボード又はオフボードのメモリとの間のバス帯域幅の利用量を減らすために圧縮を利用することができる。DNNモジュールはまた、オンボード又はオフボードのメモリとニューロン入力との間のメモリバス帯域幅の利用量を減らすために復元を利用することもできる。帯域幅利用量の低減は、より高速な処理を可能にすることができ、その結果、電力量消費量も減らすことができる。本明細書で具体的に述べられない他の技術的利点も、開示されている対象の実施を通じて実現され得る。
先に簡単に述べられた技術的利点を実現するために、1つ以上のニューロン及び圧縮ユニットを含むDNNプロセッサが、開示される。圧縮ユニットは、1つ以上のヒューロンによって生成されるデータの非圧縮チャンクを受け取ることができる。いくつかの実施形態において、データの非圧縮チャンクは、64バイトなどの、一定数のバイトを含む。
データの非圧縮チャンクを圧縮するために、圧縮ユニットは、圧縮された出力チャンクのマスク部分及びデータ部分を生成することができる。圧縮された出力チャンクのマスク部分は、データの非圧縮チャンク内の一定数のバイトに等しいビットの数を含む。例えば、データの非圧縮チャンクが64バイトのデータを含む場合には、マスク部分は64ビット(すなわち、8バイト)を含むことになる。
いくつかの実施形態において、圧縮された出力チャンクのマスク部分内の各ビットは、データの非圧縮チャンク内のバイトに対応する。例えば、マスク部分のビット1は、データの非圧縮チャンク内の第1バイトに対応することができ、マスク部分のビット2は、データの非圧縮チャンク内の第2バイトに対応することができる、など。他の実施形態では、圧縮された出力チャンクのマスク部分内の2つ以上のビットが、データの非圧縮チャンク内のあるバイトに対応する。かような実施形態で、圧縮された出力チャンクのマスク部分内のビットは、非圧縮チャンク内の対応するバイトだけでなくそのおおよその大きさも示すことができる。
マスク部分の個々のビットが非圧縮チャンク内のバイトに対応する場合に、圧縮ユニットは、圧縮された出力チャンクのマスク部分内の各ビットを、データの非圧縮チャンク内の対応するバイトが全てゼロを含むときに(すなわち、“ゼロバイト”)論理偽(false)(本明細書中「論理0」とも呼ばれ得る。)に設定する。圧縮ユニットはまた、データの非圧縮チャンク内の対応するバイトが少なくとも1つの非ゼロビットを含むときに(すなわち、“非ゼロバイト”)、圧縮された出力チャンクのマスク部分内の各ビットを論理真(true)(本明細書中「論理1」とも呼ばれ得る。)に設定する。このようにして、圧縮された出力チャンクのマスク部分は、データの非圧縮チャンクのゼロバイト及び非ゼロバイトの存在及び位置を符号化する。
圧縮ユニットは、データの非圧縮チャンク内の非ゼロバイトの数を決定することによって、圧縮された出力チャンクのデータ部分を生成する。圧縮ユニットは次いで、データの非圧縮チャンク内の非ゼロバイトの数と、圧縮された出力チャンクのデータ部分内で利用可能なバイトの数とに基づき、データの非圧縮チャンクの各非ゼロバイトを格納するために利用可能である圧縮された出力チャンクのデータ部分内のビットの数を決定する。例えば、データの圧縮されたチャンクのデータ部分が24バイト幅(すなわち、192ビット)であり、データの非圧縮チャンク内に47の非ゼロバイトがある場合に、データの非圧縮チャンクから各非ゼロバイトを格納するためには、4ビットがデータ部分内で利用可能である。
いくつかの実施形態において、圧縮ユニットはまた、データの非圧縮チャンクの非ゼロバイトを格納するために利用可能である圧縮された出力チャンクのデータ部分内で、もしあれば、追加ビットの数を決定することもできる。上記の例において、例えば、4つの追加ビットが、非ゼロバイトを格納するために利用可能である(すなわち、192 mod 47=4ビット)。圧縮ユニットは、それらの追加ビットを、データの非圧縮チャンク内の1つ以上の非ゼロバイトを切り捨てる前に、その1つ以上の非ゼロバイトに割り当てることができる。例えば、圧縮ユニットは、それらの追加ビットを、圧縮された出力チャンクのデータ部分内の最初の数バイトに割り当ててもよい。
圧縮ユニットは、次いで、データの非圧縮チャンク内の非ゼロバイトを、各非ゼロバイトを格納するためにデータ部分内で利用可能な決定されたビット数(すなわち、上記の例では、4)まで切り捨てる。一実施形態において、圧縮ユニットは、データ部分内の利用可能なビット数に収まるように非ゼロバイトの最下位ビット(Least Significant Bit(s))(“LBS”)を切り捨てる。他の実施形態では、圧縮ユニットは、非ゼロバイトの最上位ビット(Most Significant Bit(s))(“MSB”)を切り捨てる。圧縮ユニットは、次いで、切り捨てられた非ゼロバイトを、圧縮された出力チャンクのデータ部分に格納する。マスク部分及びデータ部分を含む圧縮された出力チャンクは、次いで、例えば、DNNプロセッサ内のオンボード・メモリ、又はDNNプロセッサのアプリケーションホストのオフボード・メモリへ、出力され得る。
DNNモジュールはまた、上述されたように圧縮されたデータのチャンクを復元することができる復元ユニットを含むこともできる。例えば、復元ユニットは、DNNプロセッサ内のメモリ又はアプリケーションホストのメモリからデータの圧縮されたチャンクを受け取ることができる。復元ユニットは、次いで、圧縮された出力チャンクのマスク部分内の論理真ビットの数に基づき、データの非圧縮チャンク内の非ゼロバイトの数を決定することができる。復元ユニットはまた、圧縮された出力チャンクのマスク部分内の論理真ビットの位置に基づき、データの非圧縮チャンク内の非ゼロバイトの位置を決定することもできる。復元ユニットは、同様にして、データの非圧縮チャンク内のゼロバイトの位置を決定することができる。
復元ユニットはまた、切り捨てられた非ゼロバイトを圧縮された出力チャンクのデータ部分に格納するために圧縮ユニットによって使用されたビットの数を決定することもできる。復元ユニットは、データの非圧縮チャンク内の非ゼロバイトの数と、圧縮された出力チャンクのデータ部分内で利用可能なバイトの数とに基づき、切り捨てられた各非ゼロバイトを格納するために使用されたビットの数を決定することができる。
上記の例では、例えば、データの圧縮されたチャンクのデータ部分が24バイト幅(すなわち、192ビット)であり、データの非圧縮チャンク内に47の非ゼロバイトがある場合に、圧縮ユニットは、データの非圧縮チャンクの切り捨てられた各非ゼロバイトを格納するためにデータ部分において4ビットを利用した。復元ユニットはまた、もしあれば、圧縮ユニットが圧縮された出力チャンクのデータ部分に格納された切り捨てられた非ゼロバイトのうちの1つ以上に割り当てた追加ビットの数を決定することもできる。
論理0である圧縮された出力チャンクのマスク部分内の各ビット位置について、復元ユニットは、ゼロバイトを、復元された出力チャンクの対応する部分に挿入する。論理1であるマスク部分内の各ビット位置について、復元ユニットは、圧縮された出力チャンクのデータ部分内の対応する位置からの切り捨てられた非ゼロバイトを、圧縮された出力チャンクの圧縮中に切り捨てられたビットの数に等しい数のゼロビットとともに、復元された出力チャンクの対応する位置に挿入する。ゼロビットは、どのビットが圧縮中に切り捨てられたかに応じて、切り捨てられた非ゼロバイトのLSB又はMSBに挿入され得る。
いくつかの実施形態において、復元ユニットはまた、復元された出力チャンクに格納された切り捨てられた非ゼロバイトのうちの1つ以上にオフセット(例えば、00000001)を付加する。例えば、オフセットは、圧縮後にゼロバイトになるデータの非圧縮チャンクの非ゼロバイトに加えられ得る。このようにして、非ゼロバイトは、圧縮及び復元される場合にゼロバイトにならない。他の実施形態では、オフセットは、復元された出力チャンク内の全てのバイトに付加され得る。
先に簡単に説明されたように、本明細書で開示される技術の実装は、DNNモジュールにおけるメモリバス帯域幅利用量を低減し、DNNモジュールが処理動作をより速く完了することを可能にし、電力消費量を削減することができる。本明細書で具体的に特定されていない技術的利点も、開示されている技術の実施を通じて実現され得る。
当然ながら、上記の対象は、コンピュータにより制御される装置、コンピュータにより実施される方法、コンピュータ装置として、又はコンピュータ可読媒体などの製品として実施され得る。それら及び様々な他の特徴は、続く詳細な説明を読み、添付の図面を参照することで、明らかになるだろう。
この概要は、開示される技術のいくつかの態様について概要を簡単に紹介するために設けられており、それらの態様は、詳細な説明において更に後述される。この概要は、請求されている対象の重要な特徴又は必須の特徴を特定する意図はなく、この概要が、請求されている対象の適用範囲を制限するために使用されることも意図しない。更には、請求されている対象は、本開示のいずれかの部分で述べられているありとあらゆる欠点を解消する実施に限られない。
一実施形態に従って、本明細書で開示される技術の態様を実装するDNNモジュールの構成及び動作の態様を示すコンピューティングアーキテクチャ図である。 一実施形態に従って、活性化データを圧縮するDNNモジュールの構成及び動作の態様を示すコンピューティングシステムアーキテクチャ図である。 一実施形態に従って、活性化データを圧縮するDNNモジュールの構成及び動作の態様を示すコンピューティングシステムアーキテクチャ図である。 一実施形態に従って、圧縮されていない活性化データのチャンクの例を参照して、活性化データを圧縮するためのDNNモジュールの動作の態様を説明するデータ構造図である。 本明細書で開示される一実施形態に従って、活性化データを圧縮するための開示されているDNNモジュールの動作の態様を説明するルーチンを示すフロー図である。 一実施形態に従って、活性化データを復元するためのDNNモジュールの構成及び動作の態様を示すコンピューティングシステムアーキテクチャ図である。 一実施形態に従って、活性化データを復元するためのDNNモジュールの構成及び動作の態様を示すコンピューティングシステムアーキテクチャ図である。 一実施形態に従って、圧縮された活性化データのチャンクの例を参照して、活性化データを復元するためのDNNモジュールの動作の態様を説明するデータ構造図である。 本明細書で開示される一実施形態に従って、活性化データを復元するための開示されているDNNモジュールの動作の態様を説明するルーチンを示すフロー図である。 一実施形態に従って、本明細書で提示されるDNNモジュールのためのアプリケーションホストとして動作することができるコンピュータ装置のためのコンピュータハードウェア及びソフトウェアアーキテクチャを例示するコンピュータアーキテクチャ図である。 本明細書で提示される様々な実施形態に従って、開示される技術の態様が実装され得る分散コンピューティング環境を説明するネットワーク図である。
続く詳細な説明は、メモリバス帯域幅の利用量を低減するために活性化データを圧縮及び復元することができるDNNモジュールを対象とする。先に簡単に説明されたように、開示される技術の実装は、DNNモジュールにおけるメモリバス帯域幅利用量を低減し、DNNモジュールが処理動作をより速く完了することを可能にし、電力消費量を削減することができる。本明細書で具体的に述べられない他の技術的利点も、開示されている対象の実施を通じて実現され得る。
本明細書中に記載される対象は、ハードウェアDNNモジュールの一般的状況において提示されるが、当業者は、他のタイプのコンピューティングシステム及びモジュールと組み合わせて他の実施が実行され得ると認めるだろう。当業者はまた、本明細書中に記載される対象が、手持ち式デバイス、マルチプロセッサシステム、マイクロプロセッサに基づく又はプログラム可能な家電製品、デバイス(例えば、装用式コンピュータ装置、自動車、ホームオートメーション、など)に埋め込まれたコンピューティング又はプロセッシングシステム、ミニコンピュータ、メインフレームコンピュータ、などを含む他のコンピュータシステム構成により実施され得るであると認めるだろう。
以下で更に詳細に記載されるように、そのニューロンの出力を圧縮するよう構成されるDNNモジュールが、開示される。圧縮された出力は、DNNモジュールのメモリに、又はDNNモジュールのためのアプリケーションホストによって提供されるメモリなどの、DNNモジュールの外にあるメモリに、記憶され得る。DNNモジュールは、前に圧縮されたデータを後に復元し、そして、復元されたデータをニューロンへ供給することができる。
一実施形態によれば、DNNプロセッサ内の圧縮ユニットは、圧縮されていない活性化データの固定長のチャンク(例えば、64バイト)を一定の圧縮比(例えば、2:1)で圧縮する。圧縮ユニットによって生成される圧縮された活性化データは、固定長(例えば、32バイト)を有するデータのチャンクを含むことができ、固定長のマスク部分(例えば、8バイト)と、固定長のデータ部分(例えば、24バイト)とを含む。
一実施形態において、圧縮された出力チャンクのマスク部分のビットは、圧縮されていない入力チャンク内のバイトに対応する。例えば、マスク部分の第1ビットは、圧縮されていない入力チャンク内の第1バイトに対応することができ、マスク部分の第2ビットは、圧縮されていない入力チャンク内の第2バイトに対応することができる、など。圧縮された活性化データのマスク部分内のビットは、圧縮されていない入力チャンク内の対応するバイトがゼロである場合には論理0にセットされ得、圧縮されていない入力チャンク内の対応するバイトが非ゼロである場合には論理1にセットされ得る。
先に簡単に説明されたように、いくつかの実施形態において、圧縮された出力チャンクのマスク部分内の2つ以上のビットが、データの非圧縮チャンク内のあるバイトに対応する。かような実施形態で、圧縮された出力チャンクのマスク部分内のビットは、非圧縮チャンク内の対応するバイトだけでなくそのおおよその大きさも示すことができる。
圧縮された出力チャンクのデータ部分は、圧縮されたデータ部分内の利用可能なビットの数を用いて非圧縮入力チャンクの非ゼロバイトを表すよう、切り捨てられた非圧縮入力チャンクの非ゼロバイトを含む。いくつかの実施形態において、各非ゼロバイトごとの、圧縮された出力チャンクのデータ部分内の利用可能なビットの数は、データ部分内の利用可能なビットの総数(例えば、192ビット)を非圧縮入力チャンク内の非ゼロバイトの数で割ることによって決定される。この計算の結果は、非圧縮入力チャンク内の非ゼロデータの各バイトを表すために利用可能である圧縮された出力チャンクのデータ部分内のビットの数を示す。如何なる残りのビットも、圧縮された出力チャンクのデータ部分において、非ゼロ値のうちのいくつかを表すための追加ビットを提供するために使用され得る。
非圧縮入力チャンク内の各非ゼロバイトを表すための圧縮された出力チャンクのデータ部分内で利用可能なビットの数が決定されると、非圧縮入力チャンク内の非ゼロ値のLSBが、利用可能なビットの数に収まるよう切り捨てられる。他の実施形態では、非ゼロ値のMSBが切り捨てられてもよい。次いで、切り捨てられた非ゼロ値が、圧縮された出力チャンクのデータ部分に格納され得る。このプロセスは、圧縮されていない入力活性化データの各チャンクごとに繰り返され得る。次いで、圧縮された出力チャンクが、後の復元及びニューロンによる使用のためにオン又はオフモジュール・メモリに記憶され得る。
開示されるDNNモジュールはまた、上述されたように圧縮ユニットによって圧縮された活性化値を復元する復元ユニットを含むこともできる。復元ユニットは、マスク部分及びデータ部分を含む圧縮された活性化データのチャンクを受け取る。復元ユニットは、復元された出力チャンクに存在することになる非ゼロバイトの数と、復元された出力チャンク内のそれらの位置とを特定するために、マスク部分のビットを利用することができる。マスクはまた、復元された出力チャンク内のゼロバイトの位置も示す。
いくつかの実施形態において、復元ユニットは、圧縮されたチャンクのデータ部分内の利用可能なビットの総数(例えば、192ビット)を、マスクによって指定されている非圧縮入力チャンク内の非ゼロバイトの数で割ることによって、各非ゼロバイトを表すために圧縮ユニットによって使用されたビットの数を決定する。復元ユニットはまた、圧縮されたチャンクのデータ部分内の非ゼロ値のうちのいくつか(例えば、最初のN個の値)を表す追加ビットを供給するために圧縮ユニットがいずれかの残りのビットを使用したと仮定することもできる。
論理0であるマスク内の各ビット位置について、復元ユニットは、ゼロバイトを、復元された出力チャンク内にその対応する位置で挿入することができる。論理1であるマスク内の各ビット位置について、復元ユニットは、圧縮された入力チャンクのデータ部分内の対応する位置からの切り捨てられた非ゼロバイトを、復元された出力チャンク内の対応する位置に挿入する。復元ユニットはまた、非ゼロ値の、必要に応じてLSB又はMSBにおいて、圧縮中に切り捨てられたそれらのビットを置き換えるようゼロを挿入する。
いくつかの実施形態において、復元ユニットは、非ゼロの非圧縮値が復元されるときにゼロバイトにならないことを確かにするよう、切り捨てられた非ゼロ値にオフセット値を付加する。次いで、復元された出力チャンクが、ニューロンによる使用のためにオン又はオフモジュール・メモリに記憶され得る。DNNモジュール、圧縮ユニット、及び復元ユニットの動作に関する更なる詳細は、以下で与えられる。
続く詳細な説明では、本願の部分を形成し、実例として具体的な構成又は例が示されている添付の図面が、参照される。これより図面を参照すると、図面では、いくつかの図を通して同じ番号が同じ要素を表しており、メモリバス帯域幅の利用量を低減するために活性化データを圧縮及び復元することができるDNNモジュールの態様が記載される。
図1は、一実施形態に従って、本明細書で開示される技術の態様を実装するDNNモジュール105の構成及び動作の態様を示すコンピューティングアーキテクチャ図である。本明細書で開示されるDNNモジュール105は、例えば、制限なしに、物体検出、意味的標識付け、及び特徴抽出などの分類問題(及び関連する問題)を解くよういくつかの実施形態で構成される。
この機能を提供するために、DNNモジュール105は、リコールオンリー(recall-only)ニューラルネットワークを実装し、多種多様なネットワーク構造をプログラムでサポートすることができる。DNNモジュール105によって実装されるネットワークの教育は、サーバーファーム、データセンター、又は他の適切なコンピューティング環境においてオンラインで実行され得る。DNNを教育する結果は、“重み”又は“カーネル”として知られ得るパラメータの組である。それらのパラメータは、入力に適用可能な変換関数を表し、その結果が分類又は意味的に標識付けされた出力である。
本明細書で開示されるDNNモジュール105は、スーパースカラープロセッサと見なされ得る。DNNモジュール105は、ニューロン105Fと呼ばれる複数の実行ユニットへ1つ以上の命令をディパッチすることができる。実行ユニットは、“同時ディスパッチ同時完了”(simultaneous dispatch simultaneous complete)であることができ、各実行ユニットが他の実行ユニットの夫々と同期する。DNNモジュール105は、単一命令ストリーム多重データストリーム(single instruction stream, multiple data stream)(“SIMD”)アーキテクチャとして分類され得る。
DNNモジュール105は、多数のニューロン105F(例えば、2の累乗)を含む。ニューロン105Fは、脳内の生体ニューロンをモデル化するために使用される人工ニューラルネットワーク内の基本単位である。ニューロン105Fのモデルは、活性化関数を作用させて入力ベクトルと重みベクトルとの内積にバイアスを加えたものを含むことができる。本明細書中に記載されるDNNモジュール105内のニューロン105Fによって実行される処理は、人工ニューロンに密接にマッピングされる。
DNNモジュール105内の各ニューロン105Fは、加重加算、最大プーリング(max pooling)、バイパス、及び場合によっては、他のタイプの演算を実行可能である。ニューロン105Fは、クロック周期ごとに入力及び重みデータを処理する。各ニューロン105Fは、DNNモジュール105内のカーネルデータのフローを最小限にするよう、カーネル内の進捗状況に関して、他の全てのニューロン105Fと同期する。
各ニューロン105Fは、乗算器、加算器、比較器、及び多数の積算器(図1に図示せず。)を含むことができる。複数の積算器を有することによって、ニューロン105Fは、一度に複数の異なるアクティブなカーネルのコンテキストを保持することができる。各積算器は、BaSRAM150(後述される。)の読み出しからロード可能である。積算器は、それら自体を、他のニューロン105Fからの他の積算器の内容と加算することができる。
DNNモジュール105は、画像データなどの平面(planar)データを入力として受け入れる。DNNモジュール105への入力は、しかしながら、画像データに限られない。むしろ、DNNモジュール105は、一様平面の形でDNNモジュール105へ与えられる如何なる入力データにも作用することができる。1つの特定の実施形態では、DNNモジュール105は、入力として、多断面(multi-planar)1バイト又は2バイトデータフレームを受け入れることができる。
各入力フレームは、N×K×H×W組のカーネルにより畳み込まれ得る。ここで、Nは、カーネルの数であり、Kは、カーネルごとのチャネルの数であり、Hは高さであり、Wは幅である。畳み込みは、重なり合ったインターバルで入力データに対して実行され、インターバルは、X及びY方向におけるストライドによって定義される。これらの関数は、ニューロン105Fによって実行され、DNNモジュール105及びソフトウェア管理下の制御レジスタによって管理される。
DNNモジュール105は、3つの主なデータタイプ、すなわち、重み、入力データ/特徴マップ、及び活性化データをサポートする。入力データ/特徴マップ及び活性化データは、ほとんどの場合に、レイヤの出力に言及するときに語「活性化データ」が使用されるとの区別により、同じデータについての2つの名称である。レイヤの入力を言及するときには、語「入力データ/特徴マップ」が使用される。
DNNモジュール105内のニューロン105Fは、それらの入力の加重和を計算し、加重和を“活性化関数”又は“伝達関数”に通す。伝達関数は、一般にシグモイド関数を有するが、区分線形関数(piecewise linear function)、ステップ関数、又は他のタイプの関数でも構成され得る。活性化関数は、ニューロン105Fが、分類境界が非線形である入力及び所望の出力のより大きい組を教育することを可能にする。
DNNモジュール105は、ニューラルネットワークのレイヤに対応するレイヤ記述子のリストに作用する。レイヤ記述子のリストは、DNNモジュール105によって命令として教育され得る。それらの記述子は、メモリからDNNモジュール105にプリフェッチされ、順に実行され得る。記述子リストは、DNNモジュール105への命令の組として働く。ソフトウェアツール及び/又はコンパイラが、DNNモジュール105で実行される記述子リストを生成するよう、DNNモジュール105の外部にあるデバイスで実行され得る。
一般に、記述子には2つの主な種類があり、メモリ間移動(memory-to-memory move)(“M2M”)記述子及びオペレーション記述子である。M2M記述子は、オペレーション記述子による消費のためにメインメモリからローカルバッファ(すなわち、後述されるラインバッファ125)へ又はローカルバッファからメインメモリへデータを移動させるために使用され得る。M2M記述子のターゲットパイプラインは、内部DMAエンジン105B又はコンフィグレーションレジスタ105Gであることができ、一方、オペレーション記述子のターゲットパイプラインは、ニューロン105Fであることができる。
オペレーション記述子は、ローカルの静的ランダムアクセスメモリ(“SRAM”)に位置するデータ構造に対してニューロン105Fが実行すべき具体的な動作を指定する。オペレーション記述子は、順に処理され、多種多様なレイヤ動作が可能であり、そのうちの少なくともいくつかが本明細書中に記載されている。
図1に表されているように、DNNモジュール105は、一意のL1及びL2バッファ構造を有するメモリサブシステムを具備する。図1に示されるL1及びL2バッファは、特にニューラルネットワーク処理のために設計される。例として、L2バッファ150は、選択された周波数で動作する高速プライベートインターフェイスとともに、選択された記憶容量を保持することができる。L1バッファ125は、カーネルと活性化データとの間で分けられ得る選択された記憶容量を保持することができる。L1バッファ125は、本明細書で“ラインバッファ125”と呼ばれてもよく、L2バッファ150は、本明細書でBaSRAM150と呼ばれてもよい。
計算データ(すなわち、入力データ、重み及び活性化データ)は、いくつかの実施形態において、行優先(row-major)でBaSRAM150に格納される。計算データは、2つのラインバッファとして体系化され得る。一方のラインバッファは入力データを含み、本明細書で“入力バッファ”と呼ばれてよく、他方のラインバッファは、本明細書で“重みバッファ”と呼ばれてよく、カーネル重みを含む。ラインバッファは、ロード/ストアユニット105CによってBaSRAM150から満たされる。データは、各ラインバッファにおいて、その所定の容量に達するまで蓄積される。ラインバッファデータは、次いで、いくつかの実施形態において、シャドウバッファにコピーされ、ニューロン105Fに渡される。
DNNモジュール105は、プリフェッチユニット105A、セーブ/リストアユニット105E、レイヤコントローラ105D、及びレジスタインターフェイス105Gを含むがこれらに限られない多数の他のコンポーネントを有することもできる。DNNモジュール105は、いくつかの実施形態において、追加又は代替のコンポーネントを含むことができる。
DNNモジュール105は、いくつかの構成において、他の外部コンピューティングコンポーネントと協働して動作する。例えば、DNNモジュール105は、いくつかの実施形態において、ホストアプリケーションプロセッサ・システムオンチップ(system on chip)(“ホストSOC”)130へ接続される。DNNモジュール105は、例えば、PCIeインターフェイスを通じてホストSoC130へ接続され得る。PCIeエンドポイント135などの適切なPCIeコンポーネントが、それらの接続を可能にするために利用され得る。
ホストSoC130は、DNNモジュール105のためのアプリケーションプロセッサとなる。メインオペレーティングシステム、アプリケーション、及び補助センサ処理が、ホストSoC130によって実行される。ホストSoC130はまた、画像データなどの入力データをDNNモジュール105へ供給する外部カメラなどの入力データ源102へも接続され得る。
DDR DRAM155も、ホストSoC130へ接続され得、メインシステムメモリとして使用され得る。このメモリは、メモリコントローラ145を用いて高帯域幅ファブリック120(例えば、PCIeバス)を越えてホストSoC130からアクセス可能である。高帯域幅ファブリック120は、双方向の直接メモリアクセス(“DMA”)スモールメッセージングトランザクション及びより大きいDMAトランザクションを提供する。ブリッジ115及び低帯域幅ファブリック110は、サブモジュール構成及び他の機能のためにDNNモジュール105をホストSoC130へ接続することができる。
DNNモジュール105は、メインメモリ155へ及びそれからデータを移動させるよう構成されるDMAエンジン105Bを含むことができる。DMAエンジン105Bは、いくつかの実施形態において、2つのチャネルを具備する。一方のチャネルは、フェッチ動作記述子に専用であり、一方、他方のチャネルは、M2M動作に専用である。本文脈中の記述子は、メモリの中身を移動させるために使用されるDMA記述子であり、上記のオペレーション記述子と混同されるべきではない。
ローカルBaSRAM150をオフロードするよう、且つ、入力及び重みデータのための更なる空間を提供するよう、活性化出力は、任意に、DDMメモリ155に直接にストリーミングされ得る。データをDDRメモリ155にストリーミングするとき、DNNモジュール105は、高帯域幅ファブリック120上でのバーストトランザクションのために十分なデータを蓄積することになり、且つ、ニューロン105Fに対するバックプレッシャを最小限とするよう十分なトランザクションをバッファすることになる。DNNモジュール105の動作に関する更なる詳細は、以下で与えられる。
図2A及び図2Bは、一実施形態に従って、活性化データを圧縮するDNNモジュール105の構成及び動作の態様を示すコンピューティングシステムアーキテクチャ図である。図2Aに示され且つ先に簡単に記載されたように、DNNモジュール105は、1つ以上のニューロン105Fと、圧縮ユニット200とを含む。圧縮ユニット200は、いくつかの実施形態において、ロード/ストアユニット105Cによって実装されるが、他の実施形態では他の方法で実装されてもよい。
圧縮ユニット200は、ニューロン105Fの1つ以上によって生成される活性化データの非圧縮チャンク202を受け取ることができる。データの非圧縮チャンク202は、いくつかの実施形態において、64バイトなどの一定数のバイトを含む。
圧縮ユニット200は、活性化データの圧縮されたチャンク204を生成するようデータの非圧縮チャンク202を圧縮することができる。活性化データの圧縮されたチャンク204は、次いで、メモリ206に格納され得る。例えば、活性化データの圧縮されたチャンク204は、アプリケーションホストによって提供されるLPDDR4メモリ155に格納されても、あるいは、DNNモジュール105によって提供されるBaSRAM150に格納されてもよい。以下で更に詳細に開示されるように、本明細書で開示される技術は、LPDDR4メモリ155又はBaSRAM150から圧縮又は復元された活性化データを記憶し又は読み出すときにメモリバス利用の利用量を低減するために圧縮及び復元を利用することができる。これらの技術に関する更なる詳細は、図2A~9に関して以下で開示される。
図2に表されているように、圧縮ユニット200は、データの圧縮された出力チャンク204のマスク部分208及びデータ部分21を生成することができる。圧縮された出力チャンク204のマスク部分208は、データの非圧縮チャンク202内の一定数のバイトに等しいビットの数を含む。例えば、データの非圧縮チャンク202が64バイトのデータを含む場合には、圧縮された出力チャンク204のマスク部分208は64ビット(すなわち、8バイト)を含むことになる。
圧縮された出力チャンク204のマスク部分208内の各ビットは、いくつかの実施形態において、データの非圧縮チャンク202内のバイトに対応する。例えば、マスク部分208のビット1は、データの非圧縮チャンク202内の第1バイトに対応することができ、マスク部分208のビット2は、データの非圧縮チャンク202内の第2バイトに対応することができる、など。
圧縮ユニット200は、圧縮された出力チャンク204のマスク部分208内の各ビットを、データの非圧縮チャンク202内の対応するバイトがゼロバイトである場合に論理0にセットする。圧縮ユニット200はまた、圧縮された出力チャンク204のマスク部分208内の各ビットを、データの非圧縮チャンク202内の対応するバイトが非ゼロバイトである場合に論理1にセットする。このようにして、圧縮された出力チャンク204のマスク部分208は、データの非圧縮チャンク202内のゼロバイト及び非ゼロバイトの存在及び位置を符号化する。
圧縮ユニット200は、データの非圧縮チャンク202内の非ゼロバイトの数を決定することによって、圧縮された出力チャンク204のデータ部分210を生成する。次いで、圧縮ユニット200は、データの非圧縮チャンク202内の非ゼロバイトの数と、圧縮された出力チャンク204のデータ部分210で利用可能なバイトの数とに基づき、データの非圧縮チャンク202の各非ゼロバイトを格納するために利用可能である圧縮された出力チャンク204のデータ部分210内のビットの数を決定する。例えば、データの圧縮されたチャンク204のデータ部分210が24バイト幅(すなわち、192ビット)であり、データの非圧縮チャンク202内に47の非ゼロバイトがある場合に、データの非圧縮チャンク202から各非ゼロバイトを格納するためには、4ビットがデータ部分210内で利用可能である。
いくつかの実施形態において、圧縮ユニット200はまた、データの非圧縮チャンク202の非ゼロバイトを格納するために利用可能である圧縮された出力チャンク204のデータ部分210内で、もしあれば、追加ビットの数を決定することもできる。上記の例において、例えば、4つの追加ビットが、非ゼロバイトを格納するために利用可能である(すなわち、192 mod 47=4ビット)。圧縮ユニット200は、それらの追加ビットを、データの非圧縮チャンク202内の1つ以上の非ゼロバイトを切り捨てる前に、その1つ以上の非ゼロバイトに割り当てることができる。例えば、圧縮ユニット200は、それらの追加ビットを、圧縮された出力チャンク204のデータ部分210内の最初のNバイトに割り当ててもよい。
圧縮ユニット200は、次いで、データの非圧縮チャンク202内の非ゼロバイトを、各非ゼロバイトを格納するためにデータ部分210内で利用可能な決定されたビット数(すなわち、上記の例では、4)まで切り捨てる。一実施形態において、圧縮ユニット200は、データ部分210内の利用可能なビット数に収まるように非ゼロバイトのLBSを切り捨てる。他の実施形態では、圧縮ユニット200は、非ゼロバイトのMSBを切り捨てる。圧縮ユニット200は、次いで、切り捨てられた非ゼロバイトを、圧縮された出力チャンク204のデータ部分210に格納する。マスク部分208及びデータ部分210を含む圧縮された出力チャンク204は、次いで、例えば、DNNモジュール105内のオンボード・メモリ、又はDNNモジュール105のアプリケーションホストのオフボード・メモリへ、出力され得る。
先に簡単に述べられたように、圧縮された出力チャンク204のマスク部分208内の2つ以上のビットは、いくつかの実施形態において、データの非圧縮チャンク202内のあるバイトに対応する。かような実施形態で、圧縮された出力チャンク204のマスク部分208内のビットは、非圧縮チャンク202内の対応するバイトだけでなくそのおおよその大きさも示すことができる。例えば、制限なしに、マスク部分208は、データの非圧縮チャンク202内のバイトごとに2ビットを含んでよい。この例では、00は、データの非圧縮チャンク202内の対応する非ゼロバイトのMSBが0であることを示すことができ、01は、MSBが<64であることを示すことができ、10は、MSBが<128であることを示すことができ、11は、MSB>128であることを示すことができる。これらの値は、データの非圧縮チャンク202内のバイトのどのMSBが切り捨てられ得るかを特定するために利用され得る。例えば、特定のバイトのMSBが<64である場合に、上から2つのMSBがデータの損失なしで切り捨てられ得る。
図3は、一実施形態に従って、圧縮されていない活性化データのチャンク202の例を参照して、圧縮されていない活性化データのチャンク202を圧縮するためのDNNモジュール105の動作の態様を説明するデータ構造図である。図3に示される例では、活性化データの非圧縮チャンク202は、64バイト長である。圧縮されていない活性化データのチャンク202のバイト0、1及び63はゼロバイトである。圧縮されていない活性化データのチャンク202のバイト2、3及び62は非ゼロバイトであり、夫々値112、121及び2を格納する。例となる圧縮されていない活性化データのチャンク202のバイト4乃至61は、ゼロ又は非ゼロバイトを格納することができる。
上述されたように、圧縮ユニット200は、活性化データの非圧縮チャンク202内のゼロバイト及び非ゼロバイトの存在及び位置を符号化するマスク部分208を生成することができる。この例では、例えば、マスク部分208のビット0、1及び63が、活性化データの非圧縮チャンク202内の対応する位置にあるゼロバイトの存在を示すよう、論理0にセットされている。同様に、マスク部分208のビット2、3及び62は、活性化データの非圧縮チャンク202のバイト2、3及び62が非ゼロバイトを格納していることを示すよう、論理1にセットされている。
上述されたように、圧縮ユニット200は、データの非圧縮チャンク202内の非ゼロバイトの数を決定することによって、圧縮された出力チャンク204のデータ部分210を生成する。図3に示される例では、例えば、データの非圧縮チャンク202は、47個の非ゼロバイト(図3では、その全てが示されているわけではない。)を含む。圧縮ユニット200は、次いで、データの非圧縮チャンク202内の非ゼロバイトの数と、圧縮された出力チャンク204のデータ部分210で利用可能なバイトの数とに基づき、データの非圧縮チャンク202の各非ゼロバイトを格納するために利用可能である圧縮された出力チャンク204のデータ部分210内のビットの数を決定する。
図3に示される例では、例えば、データの圧縮されたチャンク204のデータ部分210は24バイト幅(すなわち、192ビット)であり、データの非圧縮チャンク202内には47の非ゼロバイトがある。結果として、データの非圧縮チャンク202から各非ゼロバイトを格納するためには、4ビットがデータ部分210内で利用可能である(すなわち、192/47=4余り4)。
やはり上述されたように、圧縮ユニット200はまた、データの非圧縮チャンク202の非ゼロバイトを格納するために利用可能である圧縮された出力チャンク204のデータ部分210内で、もしあれば、追加ビットの数を決定することもできる。図3に示される例では、例えば、4つの追加ビットが、非ゼロバイトを格納するために利用可能である(すなわち、192 mod 47=4ビット)。圧縮ユニット200は、それらの追加ビットを、データの非圧縮チャンク202内の1つ以上の非ゼロバイトを切り捨てる前に、その1つ以上の非ゼロバイトに割り当てることができる。図3に示される例では、追加ビットのうちの1つが、圧縮されていない活性化データのチャンク202の最初の4つの非ゼロバイトの夫々に割り当てられている。結果として、活性化データの非圧縮チャンク202の最初の4バイトは、4ではなく5ビットに切り捨てられる。
圧縮ユニット200は、次いで、データの非圧縮チャンク202内の非ゼロバイトを、各非ゼロバイトを格納するためにデータ部分210内で利用可能な決定されたビット数(すなわち、上記の例では、4ビット。ただし、最初の4つの非ゼロバイトのためには5ビット。)まで切り捨てる。図3に示される例では、一実施形態において、圧縮ユニット200は、利用可能なビット数に収まるように非ゼロバイトのLBSを切り捨てる。他の実施形態では、圧縮ユニット200は、非ゼロバイトのMSBを切り捨てる。
図3に示されるように、活性化データの非圧縮チャンク202の第2のバイトは値113(01110001)を格納する。活性化データの非圧縮チャンク202内の最初の4つの非ゼロ値には5ビットが割り当てられているので、この値の3つのLSBが切り捨てられ、その結果、値01110が、活性化データの圧縮されたチャンク210内の最初の位置に格納される。活性化データの非圧縮チャンク202の第3のバイトは値121(01111001)を格納する。活性化データの非圧縮チャンク202内の最初の4つの非ゼロ値には5ビットが割り当てられているので、この値の3つのLSBが切り捨てられ、その結果、値01111が、活性化データの圧縮されたチャンク210内の第2の位置に格納される。
図3に示される例では、活性化データの非圧縮チャンク202の62番目のバイトは値2(00000010)を格納する。活性化データの非圧縮チャンク202内の5番目から63番目の非ゼロ値には4ビットが割り当てられているので、この値の4つのLSBが切り捨てられ、その結果、値0000が、活性化データの圧縮されたチャンク210内の62番目の位置に格納される。活性化データの圧縮されたチャンク210内の他の非ゼロバイトは、同様にして切り捨てられ、活性化データの圧縮されたチャンク204のデータ部分210に格納され得る。
圧縮されていない活性化データのチャンク202の全ての非ゼロバイトがデータ部分210に格納されると、圧縮ユニット200は、例えば、DNNモジュール105内のオンボード・メモリ又はDNNモジュール105のアプリケーションホストのオフボード・メモリに、マスク部分208及びデータ部分210を含む圧縮された出力チャンク204を格納する。圧縮プロセスに関する更なる詳細は、図4に関して以下で与えられる。
図4は、本明細書で開示される一実施形態に従って、圧縮されていない活性化データのチャンク202を圧縮するためのDNNモジュール105の動作の態様を説明するルーチン400を示すフロー図である。当然ながら、図4及び他の図に関して本明細書中に記載される論理動作は、(1)コンピュータにより実施される動作又はコンピュータ装置で実行されるプログラムモジュールのシーケンスとして、及び/又は(2)コンピュータ装置内の相互接続された機械論理回路又は回路モジュールとして、実装可能である。
本明細書で開示される技術の特定の実施は、コンピュータ装置の性能及び他の要件に依存して選択できる問題である。従って、本明細書中に記載される論理動作は、状態、操作、構造的デバイス、動作、又はモジュールと様々に呼ばれる。これらの状態、操作、構造的デバイス、動作、及びモジュールは、ハードウェア、ソフトウェア、ファームウェア、特別目的のデジタルロジック、及びそれらの任意の組み合わせで実装され得る。当然ながら、図示及び本明細書中に記載されているよりも多くの又は少ない動作が実行されてよい。これらの動作は、本明細書中に記載されているのとは異なる順序で実行されてもよい。
ルーチン400は動作402から開始する。402で、圧縮ユニット200は、活性化データの圧縮されたチャンク210内の非ゼロバイトの数を決定する。ルーチン400は次いで、動作404へ進む。404で、圧縮ユニット200は、活性化データの圧縮されたチャンク210内の非ゼロバイトの数が、活性化データの圧縮されたチャンク204のデータ部分210で利用可能なバイトの数以下であるかどうかを判定する。活性化データの非圧縮チャンク202の非ゼロバイトの数が、活性化データの圧縮されたチャンク204のデータ部分210で利用可能なバイトの数以下である場合には、非ゼロバイトは圧縮される必要がない。従って、この場合に、ルーチン400は動作408へ進む。408で、非ゼロバイトは、切り捨てなしでデータ部分210に格納される。
活性化データの非圧縮チャンク202内の非ゼロバイトの数が、活性化データの圧縮されたチャンク204のデータ部分210で利用可能なバイトの数よりも多い場合には、ルーチン400は動作406から動作412へ進む。動作412で、圧縮ユニット200は、上述されたようにして、活性化データの非圧縮チャンク202の切り捨てられた非ゼロバイトを格納するために利用可能な出力データの圧縮されたチャンク204のデータ部分210のビットの数を決定する。次いで、ルーチン400は動作412から動作414へ進む。
動作414で、圧縮ユニット200は、データの非圧縮チャンク202の非ゼロバイトを格納するために利用可能である圧縮された出力チャンク204のデータ部分210内で、もしあれば、追加ビットの数を決定する。上述されたように、圧縮ユニット200は、それらの追加ビットを、データの非圧縮チャンク202内の非ゼロバイトの1つ以上を切り捨てる前に、その1つ以上の非ゼロバイトに割り当てることができる。これは動作416で行われる。
動作416から、ルーチン400は動作418へ進む。418で、圧縮ユニット200は、活性化データの圧縮されたチャンク204のマスク部分208内のビットを、活性化データの非圧縮チャンク202内の対応するバイトが非ゼロである場合に、論理1にセットする。圧縮ユニット200はまた、活性化データの圧縮されたチャンク204のマスク部分208内のビットを、活性化データの非圧縮チャンク202内の対応するバイトがゼロである場合に、論理0にセットする。
動作418から、ルーチン400は次いで動作420へ進む。420で、圧縮ユニット200は、データの非圧縮チャンク202内の非ゼロバイトのLSB又はMSBを、各非ゼロバイトごとにデータ部分210内で利用可能な決定されたビット数まで切り捨てる。切り捨てられた非ゼロバイトは、次いで、活性化データの圧縮されたチャンク204のデータ部分210に格納される。圧縮ユニット200は次いで、マスク部分208及びデータ部分210を含む圧縮された出力チャンク204を、DNNモジュール105のオンボード・メモリ又はDNNモジュール105のアプリケーションホストのオフボード・メモリに格納する。動作408及び420から、メモリ400は動作410へ進み、終了する。
図5A及び5Bは、一実施形態に従って、圧縮された活性化データを復元するためのDNNモジュール105の構成及び動作の態様を示すコンピューティングシステムアーキテクチャ図である。先に簡単に説明されたように、且つ、図5A及び5Bに示されるように、DNNモジュール105はまた、復元ユニット500も含むことでき、復元ユニット500は、上述されたようにして圧縮された活性化データのチャンク204を復元することができる。
例えば、復元ユニット500は、DNNプロセッサ内のメモリ又はアプリケーションホストのメモリなどのストレージ206から活性化データの圧縮されたチャンク204を受け取ることができる。復元ユニット500は、次いで、圧縮されたチャンク204のマスク部分208内の論理真ビットの数に基づき、データの圧縮されたチャンク204のデータ部分210内の非ゼロバイトの数を決定することができる。復元ユニット500はまた、圧縮された出力チャンク204のマスク部分208内の論理真ビットの位置に基づき、データの復元されたチャンク502内の非ゼロバイトの位置を決定することもできる。復元ユニット500は、同様にして、データの復元されたチャンク502内のゼロバイトの位置を決定することができる。
復元ユニット500はまた、切り捨てられた非ゼロバイトの夫々を圧縮された出力チャンク204のデータ部分210に格納するために圧縮ユニット200によって使用されたビットの数を決定することもできる。復元ユニット500は、データの圧縮されたチャンク204内の非ゼロバイトの数(マスク部分208によって示される。)と、復元された出力チャンク502の目標サイズとに基づき、切り捨てられた各非ゼロバイトを格納するために使用されたビットの数を決定することができる。
上記の例では、例えば、データの圧縮されたチャンク204のデータ部分が24バイト幅(すなわち、192ビット)であり、データの非圧縮チャンク202内に47の非ゼロバイトがある場合に、これは、圧縮ユニット200が、データの非圧縮チャンク202の切り捨てられた各非ゼロバイトを格納するためにデータ部分210において4ビットを利用したことを意味する。復元ユニット500はまた、もしあれば、圧縮ユニット200が圧縮された出力チャンク204のデータ部分210に格納された切り捨てられた非ゼロバイトのうちの1つ以上に割り当てた追加ビットの数を決定することもできる。
論理0である圧縮された出力チャンク204のマスク部分208内の各ビット位置について、復元ユニット500は、ゼロバイトを、復元された出力チャンク502の対応する部分に挿入する。論理1であるマスク部分208内の各ビット位置について、復元ユニット500は、圧縮された出力チャンク204のデータ部分210内の対応する位置からの切り捨てられた非ゼロバイトを、圧縮された出力チャンク204の圧縮中に切り捨てられたビットの数に等しい数のゼロビットとともに、復元された出力チャンク502の対応する位置に挿入する。ゼロビットは、どのビットが圧縮中に切り捨てられたかに応じて、切り捨てられた非ゼロバイトのLSB又はMSBに挿入され得る。
上述されたように、いくつかの実施形態において、復元ユニット500はまた、復元された出力チャンク502に格納された切り捨てられた非ゼロバイトのうちの1つ以上にオフセット(例えば、00000001)を付加する。例えば、オフセットは、圧縮後にゼロバイトになるデータの非圧縮チャンク2-2の非ゼロバイトに加えられ得る。このようにして、非ゼロバイトは、復元時にゼロバイトにならない。
図6は、一実施形態に従って、圧縮された活性化データのチャンクの例を参照して、活性化データを復元するためのDNNモジュール105の動作の態様を説明するデータ構造図である。図6に示される例は、図3に関して上述された例で生成された圧縮された活性化データ204の復元について説明する。図6に示されるように、マスク部分208は、ビット0、1及び63に0を格納し、ビット2、3及び62に1を格納する。データ部分210は、図6に示されるように値01110、01111及び0000を格納する。
復元ユニット500が上記の処理動作を実行する場合に、マスク部分208の最初のビット位置にある論理0は、復元ユニット500に、活性化データの復元されたチャンク502の最初のバイトとしてゼロバイトを格納させることになる。同様に、マスク部分208の第2のビット位置にある論理0は、復元ユニット500に、データの復元されたチャンク502の第2のバイトとしてゼロバイトを格納させることになる。
マスク部分208の第3のビット位置にある論理1は、復元ユニット500に、データ部分210の最初の5ビット(すなわち、01110)を読み出させ且つ3つのLSBを挿入させて、その結果、値01110000(112)が活性化データの復元されたチャンク502の第3のバイトとして格納されることになる。同様に、マスク部分208の第4のビット位置にある論理1は、復元ユニット500に、データ部分210の第2の5ビット(すなわち、01111)を読み出させ且つ3つのLSBを挿入させて、その結果、値01111000(120)が活性化データの復元されたチャンク502の第4のバイトとして格納されることになる。
マスク部分208の62番目のビット位置にある論理1は、復元ユニット500に、データ部分210の最後の4つのビット(すなわち、0000)を読み出させ且つ4つのゼロLSBを挿入させ、その結果、0の値が活性化データの復元されたチャンク504の62番目のバイト部分に格納されることになる。マスク部分208の最後のビット位置にある論理0は、復元ユニット500に、データの復元されたチャンク502の最後のバイトとしてゼロバイトを格納させることになる。
上述されたように、復元ユニット500は、活性化データの復元されたチャンク502内の特定のバイトにオフセット値を加えることができる。例えば、復元ユニット500は、活性化データの非圧縮チャンク202内で非ゼロであったが、活性化データの圧縮されたチャンク204内でゼロバイトに圧縮されたバイトに、00000001などのオフセット値を付加することができる。
図6に示される例では、データ部分210内の最後のバイトは、活性化データの非圧縮チャンク202では非ゼロ(すなわち、2)であったが、活性化データの圧縮されたチャンク204ではゼロになった。従って、復元ユニット500は、このバイトに00000001などのオフセット値を付加し、それによって、活性化データの非圧縮チャンク202内の非ゼロバイトがゼロバイトに圧縮されないことを確かにすることができる。
図7は、本明細書で開示される一実施形態に従って、活性化データを復元するためのDNNモジュール105の動作の態様を説明するルーチン700を示すフロー図である。ルーチン700は動作702から開始し、702で、復元ユニット500は、活性化データの復元されたチャンク502内の非ゼロバイトの数及びそれらの位置を決定するために、活性化データの圧縮されたチャンク204のマスク部分208を利用する。
ルーチン700は、動作702から動作704へ進み、動作704で、復元ユニット500は、活性化データの圧縮されたチャンク内の非ゼロバイトの数が活性化データの復元されたチャンク502のバイトの数以下であるかどうかを判定する。上述されたように、活性化データの圧縮されたチャンク204の非ゼロバイトは、その非ゼロバイトの数が活性化データの復元されたチャンク502のバイトの数以下である場合には、復元される必要がない。従って、この場合に、ルーチン700は動作708へ進み、708で、活性化データの圧縮されたチャンク204内の非ゼロバイトは、変更なしで、活性化データの復元されたチャンク502に格納される。
活性化データの圧縮されたチャンク内の非ゼロバイトの数が活性化データの復元されたチャンク502内のバイトの数よりも多い場合には、ルーチン700は、動作706から動作712へ進む。動作712で、復元ユニット500は、活性化データの非圧縮チャンク202の切り捨てられた各非ゼロバイトを格納するために圧縮ユニット200が使用した出力データの圧縮されたチャンク204のデータ部分210のビットの数を決定する。ルーチン700は次いで、上述されたように動作712から動作714へ進む。
動作714で、復元ユニット500は、もしあれば、データの非圧縮チャンク202の非ゼロバイトを格納するために使用された追加ビットの数を決定する。復元ユニット500は、上述されたように、それらの追加ビットを、データの復元されたチャンク502内の非ゼロバイトのうちの1つ以上に割り当てることができる。
動作716から、ルーチン700は動作718へ進み、動作718で、復元ユニット500は、論理0である圧縮された出力チャンク204のマスク部分208内の各ビット位置について、ゼロバイトを、復元された出力チャンク502の対応する位置に挿入する。論理1である圧縮された出力チャンク204のマスク部分208内の各ビット位置について、復元ユニット500は、圧縮された出力チャンク204の対応する位置からの切り捨てられた非ゼロバイトを、圧縮された出力チャンク204の圧縮中に切り捨てられたビットの数に等しい数のゼロビットとともに、復元された出力チャンク502の対応する位置に挿入する。ゼロビットは、どのビットが圧縮中に切り捨てられたかに応じて、切り捨てられた非ゼロバイトのLSB又はMSBに挿入され得る。これは、動作720で行われる。
いくつかの実施形態において、復元ユニット500はまた、復元された出力チャンク502に格納された切り捨てられた非ゼロバイトのうちの1つ以上にオフセット値を付加することができる。例えば、オフセットは、圧縮後にゼロバイトになるデータの非圧縮チャンク202の非ゼロバイトに加えられ得る。このようにして、非ゼロバイトは、圧縮及び復元される場合にゼロバイトにならない。他の実施形態では、オフセットは、活性化データの復元されたチャンク502内の全てのバイトに付加され得る。
復元ユニット500は次いで、復元された出力チャンク502を、ニューロン105Fによる使用のために、DNNモジュール105のオンボード・メモリ又はDNNモジュール105のアプリケーションホストのオフボード・メモリに格納する。動作708及び720から、ルーチン700は動作710へ進み、終了する。
図8は、本明細書で提示されるDNNモジュール105のためのアプリケーションホストとして動作することができるコンピュータ装置のためのコンピュータハードウェア及びソフトウェアアーキテクチャを例示するコンピュータアーキテクチャ図である。特に、図8に表されているアーキテクチャは、サーバーコンピュータ、携帯電話機、電子書籍リーダー、スマートフォン、デスクトップコンピュータ、AR/VRデバイス、タブレットコンピュータ、ラップトップコンピュータ、又はDNNモジュール105との使用に適した他のタイプのコンピュータ装置を実装するために利用され得る。
図8に表されているコンピュータ800は、中央演算処理装置802(“CPU”)と、ランダムアクセスメモリ(“RAM”)及びリードオンリーメモリ(“ROM”)を含むシステムメモリ804と、メモリ804をCPU802へ結合するシステムバス810とを含む。起動中などのように、コンピュータ800内の要素間で情報を伝送するのを助ける基本ルーチンを含む基本入出力システム(“BIOS”又は“ファームウェア”)が、ROM808に記憶され得る。コンピュータ800は、オペレーティングシステム822、アプリケーションプログラム、及び他のタイプのプログラムを記憶する大容量記憶装置812を更に含む。大容量記憶装置812はまた、他のタイプのプログラム及びデータも記憶するよう構成され得る。
大容量記憶装置812は、バス810へ接続されている大容量記憶コントローラ(図示せず。)を通じてCPU802へ接続されている。大容量記憶装置812及びその関連するコンピュータ可読媒体は、コンピュータ800のための不揮発性記憶を提供する。本明細書で含まれているコンピュータ可読媒体についての記載は、ハードディスク、CD-ROMドライブ、又はUSBストレージキーなどの大容量記憶装置を指すが、当業者には当然ながら、コンピュータ可読媒体は、コンピュータ800によってアクセス可能な如何なる利用可能なコンピュータ記憶媒体又は通信媒体でもあることができる。
通信媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、又は搬送波若しくは他の伝送メカニズムなどの変調データ信号内の他のデータを含み、如何なる配信媒体も含む。語「変調データ信号」は、信号内の情報を符号化するように変更又は設定されたその特徴の1つ以上が変更又は設定されている信号を意味する。例として、制限なしに、通信媒体は、有線ネットワーク又は直接配線接続などの有線媒体と、音響、無線周波数、赤外線及び他の無線媒体等の無線媒体とを含む。上記のうちのいずれかの組み合わせも、コンピュータ可読媒体の範囲内に含まれるべきである。
例として、制限なしに、コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータなどの情報の記憶のための如何なる方法及び技術でも実装される揮発性及び不揮発性のリムーバブル及び非リムーバブル媒体を含むことができる。例えば、コンピュータ記憶媒体は、RAM、ROM、EPROM、EEPROM、フラッシュメモリ若しくは他のソリッドステートメモリ技術、CD-ROM、デジタルバーサタイルディスク(“DVD”)、HD-DVD、BLUE-RAY、若しくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ若しくは他の磁気記憶デバイス、又は所望の情報を記憶するために使用可能であって、コンピュータ800によってアクセス可能であるあらゆる他の媒体を含むが、これらに限られない。特許請求の範囲のために、語句「コンピュータ記憶媒体」及びその変形は、波若しくは信号自体又は通信媒体を含まない。
様々な構成によれば、コンピュータ800は、ネットワーク820などのネットワークを通じた遠隔のコンピュータへの論理接続を使用するネットワーク化された環境で動作することができる。コンピュータ800は、バス810へ接続されたネットワークインターフェイスユニット816を通じてネットワーク820へ接続することができる。当然ながら、ネットワークインターフェイスユニット816は、他のタイプのネットワーク及び遠隔コンピュータシステムへ接続するためにも利用可能である。コンピュータ800はまた、キーボード、マウス、タッチ入力、電子スタイラス(図8に図示せず。)、又はビデオカメラなどの物理センサを含む多数の他のデバイスから入力を受け取って処理する入出力(“I/O”)コントローラ818も含むことができる。同様に、入出力コントローラ818は、表示スクリーン又は他のタイプの出力デバイス(図8に図示せず。)へ出力を供給することができる。
当然ながら、本明細書で記載されるソフトウェアコンポーネントは、CPU802にロードされ実行される場合に、CPU802及びコンピュータ800の全体を、汎用のコンピュータ装置から、本明細書で提示される機能を容易にするようカスタマイズされた特別目的のコンピュータ装置へ変えることができる。CPU802は、個々に又は集合的に任意数の状態を前提とすることができる任意数のトランジスタ又は他のディスクリート回路素子から構成され得る。より具体的には、CPU802は、本明細書で開示されるソフトウェアモジュール内に含まれる実行可能命令に応答して有限状態機械として動作することができる。これらのコンピュータ実行可能命令は、如何にしてCPU802が状態間を遷移するかを特定し、それによってCPU802を構成するトランジスタ又は他のディスクリートハードウェア素子を変化させることによって、CPU802を変化させることができる。
本明細書で提示されるソフトウェアモジュールを符号化することは、本明細書で提示されるコンピュータ可読媒体の物理構造も変えることができる。物理構造の具体的な変形は、本明細書の種々の実施において、様々な因子に依存する。かような因子の例には、コンピュータ可読媒体を実装するために使用される技術、コンピュータ可読媒体が一次又は二次記憶と見なされるかどうか、などがあるが、これらに限られない。例えば、コンピュータ可読媒体が半導体に基づくメモリとして実装される場合には、本明細書で開示されるソフトウェアは、半導体メモリの物理状態を変えることによってコンピュータ可読媒体上で符号化され得る。例えば、ソフトウェアは、半導体メモリを構成するトランジスタ、キャパシタ、又は他のディスクリート回路素子の状態を変えることができる。ソフトウェアはまた、かような構成要素の物理状態を、それにデータを格納するために変えることもできる。
他の例として、本明細書で開示されるコンピュータ可読媒体は、磁気又は光学技術を用いて実装可能である。かような実施において、本明細書で提示されるソフトウェアは、ソフトウェアが磁気又は光学媒体で符号化されるときに、磁気又は光学媒体の物理状態を変えることができる。これらの変形は、所与の磁気媒体内の特定の位置の磁気特性を変更することを含むことができる。これらの変形は、所与の光学媒体内の特定の位置の物理的な特徴又は特性を変更してそれらの位置の光学特性を変えることを含むこともできる。物理媒体の他の変形は、本明細書の適用範囲及び精神から外れることなしに可能であり、上記の例は、本議論を助けるためにのみ与えられている。
上記を鑑みて、当然ながら、本明細書で提示されるソフトウェアコンポーネントを記憶及び実行するために、多数のタイプの物理変形がコンピュータ800において行われる。また、当然ながら、コンピュータ800に関して図8に示されるアーキテクチャ、又は同様のアーキテクチャは、手持ち式コンピュータ、ビデオゲーム機、埋込型コンピュータシステム、スマートフォン、タブレット、及びAR/VR装置などのモバイル機器、並びに当業者に知られている他のタイプのコンピュータ装置を含む他のタイプのコンピュータ装置を実装するために利用可能である。また、コンピュータ800は、図8に示されている全てのコンポーネントを含まなくてもよく、図8に明示的に示されていない他のコンポーネントを含むことができ、あるいは、図8に示されているのとは全く異なるアーキテクチャを利用することができる。
図9は、本明細書で提示される様々な実施形態に従って、開示される技術の態様が実装され得る分散ネットワークコンピューティング環境900帯域幅を説明するネットワーク図である。図9に示されるように、1つ以上のサーバーコンピュータ900Aは、通信ネットワーク820(固定配線若しくは無線LAN、WAN、イントラネット、エクストラネット、ピア・ツー・ピアネットワーク、仮想プライベートネットワーク、インターネット、Bluetooth(登録商標)通信網、固有低電圧通信網、又は他の通信ネットワークのいずれか1つ又は組み合わせであってよい。)を介して、例えば、制限なしに、タブレットコンピュータ900B、ゲーム機900C、スマートウォッチ900D、スマートフォンなどの電話機900E、パーソナルコンピュータ900F、及びAR/VRデバイス900Gなどの多数のクライアントコンピュータ装置と相互接続され得る。
例えば、通信ネットワーク820がインターネットであるネットワーク環境で、サーバーコンピュータ900Aは、ハイパーテキスト転送プロトコル(Hypertext Transfer Protocol)(“HTTP”)、ファイル転送プロトコル(File Transfer Protocol)(“FTP”)、又はシンプル・オブジェクト・アクセス・プロトコル(Simple Object Access Protocol)(“SOAP”)などの多数の既知のプロトコルのいずれかを介して、クライアントコンピュータ装置900B~900Gへのデータ及びそれらからのデータを処理及び通信するよう動作可能な専用サーバーコンピュータであることができる。更に、ネットワーク化されたコンピューティング環境900は、セキュアド・ソケット・レイヤ(Secured Socket Layer)(“SSL”)又はプリティ・グッド・プライバシー(Pretty Good Privacy)(“PGP”)などの様々なデータセキュリティプロトコルを利用することができる。クライアントコンピュータ装置900B~900Gの夫々は、サーバーコンピュータ900Aへのアクセスを得るようにウェブブラウザ(図9に図示せず。)などの1つ以上のコンピューティングアプリケーション若しくは端末セッション、又は他のグラフィカルユーザインターフェイス(図9に図示せず。)、又はモバイルデスクトップ環境(図9に図示せず。)をサポートするよう動作可能なオペレーティングシステムを装備され得る。
サーバーコンピュータ900Aは、他のコンピューティング環境(図9に図示せず。)へ通信上結合され、参加ユーザのインタラクション/リソースネットワークに関するデータを受信することができる。実例となる動作では、ユーザ(図9に図示せず。)は、所望のデータを得るよう及び/又は他のコンピューティングアプリケーションを実行するようクライアントコンピュータ装置900B~900Gで実行されるコンピューティングアプリケーションと相互作用してもよい。
データ及び/又はコンピューティングアプリケーションは、サーバ900A又は複数のサーバ900Aに記憶され、実例となる通信ネットワーク820上でクライアントコンピュータ装置900B~900Gを通じて協調するユーザへ送られ得る。参加ユーザ(図9に図示せず。)は、完全に又は部分的にサーバーコンピュータ900Aに格納された特定のデータ及びアプリケーションへのアクセスを要求してもよい。これらのデータは、処理及び記憶のためにクライアントコンピュータ装置900B~900Gとサーバーコンピュータ900Aとの間で通信されてもよい。
サーバーコンピュータ900Aは、データ及びアプリケーションの生成、認証、暗号化、及び通信のためのコンピューティングアプリケーション、プロセス及びアプレットをホストすることができ、他のサーバーコンピューティング環境(図9に図示せず。)、第三者サービスプロバイダ(図9に図示せず。)、ネットワーク・アタッチト・ストレージ(Network Attached Storage)(“NAS”)及びストレージ・エリア・ネットワーク(Storage Area Network(s))(“SAN”)と協調してアプリケーション/データトランザクションを実現し得る。
当然ながら、図8に示されているコンピューティングアーキテクチャ及び図9に示されている専用ネットワークコンピューティング環境は、議論を簡単にするために簡略化されている。また、当然ながら、コンピューティングアーキテクチャ及び専用コンピューティングネットワークは、本明細書で具体的に記載されていない多くの更なるコンピューティングコンポーネント、デバイス、ソフトウェアプログラム、ネットワーキングデバイス、及び他のコンポーネントを含み、利用することができる。
本明細書で提示される開示は、以下の付記に記載されている対象も包含する。
付記1.ニューラルネットワークプロセッサであって、1つ以上のニューロンと、圧縮ユニットとを有し、前記圧縮ユニットは、
当該ニューラルネットワークプロセッサ内の前記ニューロンの少なくとも1つによって生成されるデータの非圧縮チャンクを受け取り、該データの非圧縮チャンクが一定数のバイトを含み;
圧縮された出力チャンクのマスク部分を生成し、該マスク部分が、前記データの非圧縮チャンク内の前記一定数のバイトに等しいビットの数を含み、前記マスク部分内の各ビットが、前記データの非圧縮チャンク内のバイトに対応し、前記マスク部分内の各ビットが、前記データの非圧縮チャンク内の対応するバイトがゼロである場合に論理0に設定され、前記データの非圧縮チャンク内の対応するバイトが非ゼロである場合に論理1に設定され;
前記データの非圧縮チャンク内の非ゼロバイトの数を決定することと、前記データの非圧縮チャンク内の前記非ゼロバイトの数に基づき、前記データの非圧縮チャンクの切り捨てられた非ゼロバイトを格納するために利用可能な前記圧縮された出力チャンクのデータ部分内のビットの数を決定することと、該決定されたビットの数まで前記データの非圧縮チャンク内の前記非ゼロバイトを切り捨てることと、該切り捨てられた非ゼロバイトを前記圧縮された出力チャンクの前記データ部分に格納することとによって、前記圧縮された出力チャンクの前記データ部分を生成し;
前記マスク部分及び前記データ部分を含む前記圧縮された出力チャンクを出力する
よう構成される、ニューラルネットワークプロセッサ。
付記2.当該ニューラルネットワークプロセッサは、復元ユニットを更に有し、該復元ユニットは、
前記圧縮された出力チャンクを受け取り;
前記圧縮された出力チャンクの前記マスク部分に基づき、前記データの非圧縮チャンク内の非ゼロバイトの数を決定し;
前記圧縮された出力チャンクの前記マスク部分に基づき、前記データの非圧縮チャンク内の前記非ゼロバイトの位置を決定し;
前記圧縮された出力チャンクの前記データ部分に前記切り捨てられた非ゼロバイトを格納するために前記圧縮ユニットによって使用されたビットの数を決定し;
論理0である前記圧縮された出力チャンクの前記マスク部分内の各ビット位置について、ゼロバイトを、復元された出力チャンクの対応する位置に挿入し;
論理1である前記マスク部分内の各ビット位置について、前記圧縮された出力チャンクの前記データ部分内の対応する位置からの前記切り捨てられた非ゼロバイトを、前記復元された出力チャンクの対応する位置に、前記圧縮された出力チャンクの圧縮中に切り捨てられたビットの数に等しい数のゼロビットとともに挿入する
よう構成される、付記1に記載のニューラルネットワークプロセッサ。
付記3.前記圧縮ユニットは更に、
前記データの非圧縮チャンクの切り捨てられた非ゼロバイトを格納するために利用可能な前記圧縮された出力チャンクの前記データ部分内の追加ビットの数を決定し;
前記データの非圧縮チャンク内の前記非ゼロバイトのうちの1つ以上の非ゼロバイトを切り捨てる前に、該1つ以上の非ゼロバイトに前記追加ビットを割り当てる
よう構成される、付記1及び2のいずれかに記載のニューラルネットワークプロセッサ。
付記4.前記復元ユニットは更に、前記圧縮された出力チャンクの前記データ部分内に格納された前記1つ以上の非ゼロバイトに割り当てられている前記追加ビットの数を決定するよう構成される、付記1乃至3のうちいずれかに記載のニューラルネットワークプロセッサ。
付記5.前記復元ユニットは更に、前記復元された出力チャンクに格納された前記切り捨てられた非ゼロバイトのうちの1つ以上の非ゼロバイトにオフセットを加えるよう構成される、付記1乃至4のうちいずれかに記載のニューラルネットワークプロセッサ。
付記6.前記非ゼロバイトの1つ以上の最下位ビット(LSB)が切り捨てられる、付記1乃至5のうちいずれかに記載のニューラルネットワークプロセッサ。
付記7.前記非ゼロバイトの1つ以上の最上位ビット(MSB)が切り捨てられる、付記1乃至6のうちいずれかに記載のニューラルネットワークプロセッサ。
付記8.ニューラルネットワークプロセッサであって、1つ以上のニューロンと、復元ユニットとを有し、前記復元ユニットは、
マスク部分及びデータ部分を含むデータの圧縮されたチャンクを受け取り;
前記マスク部分内のビットに基づき、データの復元されたチャンク内の非ゼロバイトの数を決定し;
前記非ゼロバイトの数に少なくとも部分的に基づき、前記データの圧縮されたチャンクの前記データ部分に切り捨てられた非ゼロバイトを格納するために使用されたビットの数を決定し;
論理0である前記データの圧縮されたチャンクの前記マスク部分内の各ビット位置について、ゼロバイトを、前記データの復元されたチャンクの対応する部分に挿入し;
論理1である前記データの圧縮されたチャンクの前記マスク部分内の各ビット位置について、前記データの圧縮されたチャンクの前記データ部分内の対応する位置からの前記切り捨てられた非ゼロバイトを、前記データの復元されたチャンクの対応する位置に、前記データの圧縮されたチャンクの圧縮中に切り捨てられたビットの数に等しい数のゼロビットとともに挿入する
よう構成される、ニューラルネットワークプロセッサ。
付記9.圧縮ユニットを更に有し、該圧縮ユニットは、
当該ニューラルネットワークプロセッサ内の前記ニューロンの少なくとも1つによって生成されるデータの非圧縮チャンクを受け取り、該データの非圧縮チャンクが一定数のバイトを含み;
前記データの圧縮されたチャンクの前記マスク部分を生成し、該マスク部分が、前記データの非圧縮チャンク内の前記一定数のバイトに等しいビットの数を含み、前記マスク部分内の各ビットが、前記データの非圧縮チャンク内のバイトに対応し、前記マスク部分内の各ビットが、前記データの非圧縮チャンク内の対応するバイトがゼロである場合に論理0を有し、前記データの非圧縮チャンク内の対応するバイトが非ゼロである場合に論理1を有し;
前記データの非圧縮チャンク内の非ゼロバイトの数を決定することと、前記データの非圧縮チャンク内の前記非ゼロバイトの数に基づき、前記データの非圧縮チャンクの切り捨てられた非ゼロバイトを格納するために利用可能な前記データの圧縮されたチャンクの前記データ部分内のビットの数を決定することと、該決定されたビットの数まで前記データの非圧縮チャンク内の前記非ゼロバイトを切り捨てることと、該切り捨てられた非ゼロバイトを前記データの圧縮されたチャンクの前記データ部分に格納することとによって、前記データの圧縮されたチャンクの前記データ部分を生成し;
前記マスク部分及び前記データ部分を含む前記データの圧縮されたチャンクを出力する
よう構成される、付記8に記載のニューラルネットワークプロセッサ。
付記10.前記圧縮ユニットは更に、前記データの非圧縮チャンク内の非ゼロバイトの数が前記データの圧縮されたチャンクの前記データ部分内のバイトの数以下である場合には切り捨てなしで、前記データの非圧縮チャンク内の前記非ゼロバイトを前記データの圧縮されたチャンクの前記データ部分に格納するよう構成される、請求項8及び9のいずれかに記載のニューラルネットワークプロセッサ。
付記11.前記圧縮ユニットは更に、
前記データの非圧縮チャンクの切り捨てられた非ゼロバイトを格納するために利用可能な前記データの圧縮されたチャンクの前記データ部分内の追加ビットの数を決定し;
前記データの非圧縮チャンク内の前記非ゼロバイトのうちの1つ以上の非ゼロバイトを切り捨てる前に、該1つ以上の非ゼロバイトに前記追加ビットを割り当てる
よう構成される、付記8乃至10のうちいずれかに記載のニューラルネットワークプロセッサ。
付記12.前記復元ユニットは更に、前記データの圧縮されたチャンクの前記データ部分内に格納された前記1つ以上の非ゼロバイトに割り当てられている前記追加ビットの数を決定するよう構成される、付記8乃至11のうちいずれかに記載のニューラルネットワークプロセッサ。
付記13.前記非ゼロバイトの1つ以上の最下位ビット(LSB)が、前記データの圧縮されたチャンクの圧縮中に切り捨てられる、付記8乃至12のうちいずれかに記載のニューラルネットワークプロセッサ。
付記14.前記非ゼロバイトの1つ以上の最上位ビット(MSB)が、前記データの圧縮されたチャンクの圧縮中に切り捨てられる、付記8乃至13のうちいずれかに記載のニューラルネットワークプロセッサ。
付記15.コンピュータにより実施される方法であって、
ニューラルネットワークプロセッサの圧縮ユニットで、前記ニューラルネットワークプロセッサ内の少なくとも1つのニューロンによって生成されるデータの非圧縮チャンクを受け取り、該データの非圧縮チャンクが一定数のバイトを含む、ことと、
圧縮された出力チャンクのマスク部分を生成し、該マスク部分が、前記データの非圧縮チャンク内の前記一定数のバイトに等しいビットの数を含み、前記マスク部分内の各ビットが、前記データの非圧縮チャンク内のバイトに対応し、前記マスク部分内の各ビットが、前記データの非圧縮チャンク内の対応するバイトがゼロである場合に論理0を有し、前記データの非圧縮チャンク内の対応するバイトが非ゼロである場合に論理1を有する、ことと、
前記データの非圧縮チャンク内の非ゼロバイトの数を決定すること、前記データの非圧縮チャンク内の前記非ゼロバイトの数に基づき、前記データの非圧縮チャンクの切り捨てられた非ゼロバイトを格納するために利用可能な前記圧縮された出力チャンクのデータ部分内のビットの数を決定することと、該決定されたビットの数まで前記データの非圧縮チャンク内の前記非ゼロバイトを切り捨てることと、該切り捨てられた非ゼロバイトを前記圧縮された出力チャンクの前記データ部分に格納することとによって、前記圧縮された出力チャンクの前記データ部分を生成することと、
前記マスク部分及び前記データ部分を含む前記圧縮された出力チャンクを前記ニューラルネットワークプロセッサのメモリに記憶することと
を有する、方法。
付記16.前記データの非圧縮チャンクの切り捨てられた非ゼロバイトを格納するために利用可能な前記圧縮された出力チャンクの前記データ部分内の追加ビットの数を決定することと、前記データの非圧縮チャンク内の前記非ゼロバイトのうちの1つ以上の非ゼロバイトを切り捨てる前に、該1つ以上の非ゼロバイトに前記追加ビットを割り当てることとを更に有する、付記15に記載のコンピュータにより実施される方法。
付記17.前記データの非圧縮チャンク内の非ゼロバイトの数が前記圧縮された出力チャンクの前記データ部分内のバイトの数以下である場合には切り捨てなしで、前記データの非圧縮チャンク内の前記非ゼロバイトを前記圧縮された出力チャンクの前記データ部分に格納することを更に有する、付記15及び16のうちいずれかに記載のコンピュータにより実施される方法。
付記18.前記ニューラルネットワークプロセッサの復元ユニットで、前記圧縮された出力チャンクを受け取ることと、
前記圧縮された出力チャンクの前記マスク部分に基づき、前記データの非圧縮チャンク内の非ゼロバイトの数を決定することと、
前記圧縮された出力チャンクの前記マスク部分に基づき、前記データの非圧縮チャンク内の前記非ゼロバイトの位置を決定することと、
前記圧縮された出力チャンクの前記データ部分に前記切り捨てられた非ゼロバイトを格納するために前記圧縮ユニットによって使用されたビットの数を決定することと、
論理0である前記圧縮された出力チャンクの前記マスク部分内の各ビット位置について、ゼロバイトを、復元された出力チャンクの対応する位置に挿入することと、
論理1である前記マスク部分内の各ビット位置について、前記圧縮された出力チャンクの前記データ部分内の対応する位置からの前記切り捨てられた非ゼロバイトを、前記復元された出力チャンクの対応する位置に、前記圧縮された出力チャンクの圧縮中に切り捨てられたビットの数に等しい数のゼロビットとともに挿入することと
を更に有する、付記15乃至17のうちいずれかに記載のコンピュータにより実施される方法。
付記19.前記復元された出力チャンクに格納される前記切り捨てられた非ゼロバイトのうちの1つ以上にオフセットを付加することを更に有する、付記15乃至18のうちいずれかに記載のコンピュータにより実施される方法。
付記20.前記オフセットは、前記復元された出力チャンクに格納される前記切り捨てられた非ゼロバイトの1つ以上の最下位ビット(LSB)に加えられる、付記15乃至19のうちいずれかに記載のコンピュータにより実施される方法。
上記に基づき、メモリバス帯域幅の利用量を低減するために活性化データを圧縮及び復元することができるDNNモジュールが本明細書で開示されてきた、ことが認識されるべきである。本明細書で提示される対象は、コンピュータ構造特徴、方法論的及び変形可能な動作、具体的な計算器、並びにコンピュータ可読媒体に特有の言語で記載されてきたが、添付の特許請求の範囲に示されている対象は、必ずしも、本明細書で記載される具体的な特徴、動作、又は媒体に限られないことが理解されるべきである。むしろ、具体的な特徴、動作及び媒体は、請求される対象を実施する形態の例として開示されている。
上記の対象は、実例としてのみ与えられており、限定として解釈されるべきではない。様々な修正及び変更が、図示及び記載されている例となる構成及び適用に従うことなく、且つ、続く特許請求の範囲で示されている本開示の適用範囲から外れることなしに、本明細書で記載されている対象に対して行われ得る。

Claims (15)

  1. ニューラルネットワークプロセッサであって、
    1つ以上のニューロンと、圧縮ユニットとを有し、
    前記圧縮ユニットは、
    当該ニューラルネットワークプロセッサ内の前記ニューロンの少なくとも1つによって生成されるデータの非圧縮チャンクを受け取り、該データの非圧縮チャンクが一定数のバイトを含み、
    圧縮された出力チャンクのマスク部分を生成し、該マスク部分が、前記データの非圧縮チャンク内の前記一定数のバイトに等しいビットの数を含み、前記マスク部分内の各ビットが、前記データの非圧縮チャンク内のバイトに対応し、前記マスク部分内の各ビットが、前記データの非圧縮チャンク内の対応するバイトがゼロである場合に論理0に設定され、前記データの非圧縮チャンク内の対応するバイトが非ゼロである場合に論理1に設定され、
    前記データの非圧縮チャンク内の非ゼロバイトの数を決定することと、前記データの非圧縮チャンク内の前記非ゼロバイトの数に基づき、前記データの非圧縮チャンクの切り捨てられた非ゼロバイトを格納するために利用可能な前記圧縮された出力チャンクのデータ部分内のビットの数を決定することと、該決定されたビットの数まで前記データの非圧縮チャンク内の前記非ゼロバイトを切り捨てることと、該切り捨てられた非ゼロバイトを前記圧縮された出力チャンクの前記データ部分に格納することとによって、前記圧縮された出力チャンクの前記データ部分を生成し、
    前記マスク部分及び前記データ部分を含む前記圧縮された出力チャンクを出力する
    よう構成される、
    ニューラルネットワークプロセッサ。
  2. 当該ニューラルネットワークプロセッサは、復元ユニットを更に有し、
    前記復元ユニットは、
    前記圧縮された出力チャンクを受け取り、
    前記圧縮された出力チャンクの前記マスク部分に基づき、前記データの非圧縮チャンク内の非ゼロバイトの数を決定し、
    前記圧縮された出力チャンクの前記マスク部分に基づき、前記データの非圧縮チャンク内の前記非ゼロバイトの位置を決定し、
    前記圧縮された出力チャンクの前記データ部分に前記切り捨てられた非ゼロバイトを格納するために前記圧縮ユニットによって使用されたビットの数を決定し、
    論理0である前記圧縮された出力チャンクの前記マスク部分内の各ビット位置について、ゼロバイトを、復元された出力チャンクの対応する位置に挿入し、
    論理1である前記マスク部分内の各ビット位置について、前記圧縮された出力チャンクの前記データ部分内の対応する位置からの前記切り捨てられた非ゼロバイトを、前記復元された出力チャンクの対応する位置に、前記圧縮された出力チャンクの圧縮中に切り捨てられたビットの数に等しい数のゼロビットとともに挿入する
    よう構成される、
    請求項1に記載のニューラルネットワークプロセッサ。
  3. 前記圧縮ユニットは更に、
    前記データの非圧縮チャンクの切り捨てられた非ゼロバイトを格納するために利用可能な前記圧縮された出力チャンクの前記データ部分内の追加ビットの数を決定し、
    前記データの非圧縮チャンク内の前記非ゼロバイトのうちの1つ以上の非ゼロバイトを切り捨てる前に、該1つ以上の非ゼロバイトに前記追加ビットを割り当てる
    よう構成される、
    請求項に記載のニューラルネットワークプロセッサ。
  4. 前記復元ユニットは更に、前記圧縮された出力チャンクの前記データ部分内に格納された前記1つ以上の非ゼロバイトに割り当てられている前記追加ビットの数を決定するよう構成される、
    請求項3に記載のニューラルネットワークプロセッサ。
  5. 前記復元ユニットは更に、前記復元された出力チャンクに格納された前記切り捨てられた非ゼロバイトのうちの1つ以上の非ゼロバイトにオフセットを加えるよう構成される、
    請求項2に記載のニューラルネットワークプロセッサ。
  6. 前記非ゼロバイトの1つ以上の最下位ビット(LSB)が切り捨てられる、
    請求項1に記載のニューラルネットワークプロセッサ。
  7. ニューラルネットワークプロセッサであって、
    1つ以上のニューロンと、復元ユニットとを有し、
    前記復元ユニットは、
    マスク部分及びデータ部分を含むデータの圧縮されたチャンクを受け取り、
    前記マスク部分内のビットに基づき、データの復元されたチャンク内の非ゼロバイトの数を決定し、
    前記非ゼロバイトの数に少なくとも部分的に基づき、前記データの圧縮されたチャンクの前記データ部分に切り捨てられた非ゼロバイトを格納するために使用されたビットの数を決定し、
    論理0である前記データの圧縮されたチャンクの前記マスク部分内の各ビット位置について、ゼロバイトを、前記データの復元されたチャンクの対応する部分に挿入し、
    論理1である前記データの圧縮されたチャンクの前記マスク部分内の各ビット位置について、前記データの圧縮されたチャンクの前記データ部分内の対応する位置からの前記切り捨てられた非ゼロバイトを、前記データの復元されたチャンクの対応する位置に、前記データの圧縮されたチャンクの圧縮中に切り捨てられたビットの数に等しい数のゼロビットとともに挿入する
    よう構成される、
    ニューラルネットワークプロセッサ。
  8. 圧縮ユニットを更に有し、
    前記圧縮ユニットは、
    当該ニューラルネットワークプロセッサ内の前記ニューロンの少なくとも1つによって生成されるデータの非圧縮チャンクを受け取り、該データの非圧縮チャンクが一定数のバイトを含み、
    前記データの圧縮されたチャンクの前記マスク部分を生成し、該マスク部分が、前記データの非圧縮チャンク内の前記一定数のバイトに等しいビットの数を含み、前記マスク部分内の各ビットが、前記データの非圧縮チャンク内のバイトに対応し、前記マスク部分内の各ビットが、前記データの非圧縮チャンク内の対応するバイトがゼロである場合に論理0を有し、前記データの非圧縮チャンク内の対応するバイトが非ゼロである場合に論理1を有し、
    前記データの非圧縮チャンク内の非ゼロバイトの数を決定することと、前記データの非圧縮チャンク内の前記非ゼロバイトの数に基づき、前記データの非圧縮チャンクの切り捨てられた非ゼロバイトを格納するために利用可能な前記データの圧縮されたチャンクの前記データ部分内のビットの数を決定することと、該決定されたビットの数まで前記データの非圧縮チャンク内の前記非ゼロバイトを切り捨てることと、該切り捨てられた非ゼロバイトを前記データの圧縮されたチャンクの前記データ部分に格納することとによって、前記データの圧縮されたチャンクの前記データ部分を生成し、
    前記マスク部分及び前記データ部分を含む前記データの圧縮されたチャンクを出力する
    よう構成される、
    請求項7に記載のニューラルネットワークプロセッサ。
  9. 前記圧縮ユニットは更に、前記データの非圧縮チャンク内の非ゼロバイトの数が前記データの圧縮されたチャンクの前記データ部分内のバイトの数以下である場合には切り捨てなしで、前記データの非圧縮チャンク内の前記非ゼロバイトを前記データの圧縮されたチャンクの前記データ部分に格納するよう構成される、
    請求項8に記載のニューラルネットワークプロセッサ。
  10. 前記圧縮ユニットは更に、
    前記データの非圧縮チャンクの切り捨てられた非ゼロバイトを格納するために利用可能な前記データの圧縮されたチャンクの前記データ部分内の追加ビットの数を決定し、
    前記データの非圧縮チャンク内の前記非ゼロバイトのうちの1つ以上の非ゼロバイトを切り捨てる前に、該1つ以上の非ゼロバイトに前記追加ビットを割り当てる
    よう構成される、
    請求項8に記載のニューラルネットワークプロセッサ。
  11. 前記復元ユニットは更に、前記データの圧縮されたチャンクの前記データ部分内に格納された前記1つ以上の非ゼロバイトに割り当てられている前記追加ビットの数を決定するよう構成される、
    請求項10に記載のニューラルネットワークプロセッサ。
  12. ニューラルネットワークプロセッサの圧縮ユニットで、前記ニューラルネットワークプロセッサ内の少なくとも1つのニューロンによって生成されるデータの非圧縮チャンクを受け取り、該データの非圧縮チャンクが一定数のバイトを含む、ことと、
    圧縮された出力チャンクのマスク部分を生成し、該マスク部分が、前記データの非圧縮チャンク内の前記一定数のバイトに等しいビットの数を含み、前記マスク部分内の各ビットが、前記データの非圧縮チャンク内のバイトに対応し、前記マスク部分内の各ビットが、前記データの非圧縮チャンク内の対応するバイトがゼロである場合に論理0を有し、前記データの非圧縮チャンク内の対応するバイトが非ゼロである場合に論理1を有する、ことと、
    前記データの非圧縮チャンク内の非ゼロバイトの数を決定すること、前記データの非圧縮チャンク内の前記非ゼロバイトの数に基づき、前記データの非圧縮チャンクの切り捨てられた非ゼロバイトを格納するために利用可能な前記圧縮された出力チャンクのデータ部分内のビットの数を決定することと、該決定されたビットの数まで前記データの非圧縮チャンク内の前記非ゼロバイトを切り捨てることと、該切り捨てられた非ゼロバイトを前記圧縮された出力チャンクの前記データ部分に格納することとによって、前記圧縮された出力チャンクの前記データ部分を生成することと、
    前記マスク部分及び前記データ部分を含む前記圧縮された出力チャンクを前記ニューラルネットワークプロセッサのメモリに記憶することと
    を有する、コンピュータにより実施される方法。
  13. 前記データの非圧縮チャンクの切り捨てられた非ゼロバイトを格納するために利用可能な前記圧縮された出力チャンクの前記データ部分内の追加ビットの数を決定することと、
    前記データの非圧縮チャンク内の前記非ゼロバイトのうちの1つ以上の非ゼロバイトを切り捨てる前に、該1つ以上の非ゼロバイトに前記追加ビットを割り当てることと
    を更に有する、
    請求項12に記載のコンピュータにより実施される方法。
  14. 前記データの非圧縮チャンク内の非ゼロバイトの数が前記圧縮された出力チャンクの前記データ部分内のバイトの数以下である場合には切り捨てなしで、前記データの非圧縮チャンク内の前記非ゼロバイトを前記圧縮された出力チャンクの前記データ部分に格納することを更に有する、
    請求項12に記載のコンピュータにより実施される方法。
  15. 前記ニューラルネットワークプロセッサの復元ユニットで、前記圧縮された出力チャンクを受け取ることと、
    前記圧縮された出力チャンクの前記マスク部分に基づき、前記データの非圧縮チャンク内の非ゼロバイトの数を決定することと、
    前記圧縮された出力チャンクの前記マスク部分に基づき、前記データの非圧縮チャンク内の前記非ゼロバイトの位置を決定することと、
    前記圧縮された出力チャンクの前記データ部分に前記切り捨てられた非ゼロバイトを格納するために前記圧縮ユニットによって使用されたビットの数を決定することと、
    論理0である前記圧縮された出力チャンクの前記マスク部分内の各ビット位置について、ゼロバイトを、復元された出力チャンクの対応する位置に挿入することと、
    論理1である前記マスク部分内の各ビット位置について、前記圧縮された出力チャンクの前記データ部分内の対応する位置からの前記切り捨てられた非ゼロバイトを、前記復元された出力チャンクの対応する位置に、前記圧縮された出力チャンクの圧縮中に切り捨てられたビットの数に等しい数のゼロビットとともに挿入することと
    を更に有する、
    請求項12に記載のコンピュータにより実施される方法。
JP2019555659A 2017-04-17 2018-04-16 メモリ帯域幅利用を低減するために活性化データの圧縮及び復元を使用するニューラルネットワークプロセッサ Active JP7004741B2 (ja)

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/953,356 2018-04-13
US15/953,356 US11528033B2 (en) 2017-04-17 2018-04-13 Neural network processor using compression and decompression of activation data to reduce memory bandwidth utilization
PCT/US2018/027840 WO2018194998A1 (en) 2017-04-17 2018-04-16 Neural network processor using compression and decompression of activation data to reduce memory bandwidth utilization

Publications (3)

Publication Number Publication Date
JP2020517014A JP2020517014A (ja) 2020-06-11
JP2020517014A5 JP2020517014A5 (ja) 2021-04-22
JP7004741B2 true JP7004741B2 (ja) 2022-01-21

Family

ID=63790158

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019555659A Active JP7004741B2 (ja) 2017-04-17 2018-04-16 メモリ帯域幅利用を低減するために活性化データの圧縮及び復元を使用するニューラルネットワークプロセッサ

Country Status (19)

Country Link
US (20) US10795836B2 (ja)
EP (14) EP3612945A1 (ja)
JP (1) JP7004741B2 (ja)
KR (1) KR102596644B1 (ja)
CN (16) CN110520856B (ja)
AU (1) AU2018256212B2 (ja)
BR (1) BR112019021541A2 (ja)
CA (1) CA3056660A1 (ja)
CL (1) CL2019002864A1 (ja)
CO (1) CO2019011014A2 (ja)
IL (1) IL269888B (ja)
MX (1) MX2019012388A (ja)
MY (1) MY201868A (ja)
NZ (1) NZ756870A (ja)
PH (1) PH12019550191A1 (ja)
RU (1) RU2767447C2 (ja)
SG (1) SG11201909175XA (ja)
WO (15) WO2018194849A1 (ja)
ZA (1) ZA201905874B (ja)

Families Citing this family (103)

* Cited by examiner, † Cited by third party
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
EP3614260A4 (en) * 2017-11-20 2020-10-21 Shanghai Cambricon Information Technology Co., Ltd METHOD, DEVICE AND SYSTEM FOR PARALLEL PROCESSING OF TASKS, STORAGE MEDIUM AND COMPUTER DEVICE
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
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
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
WO2020032816A1 (en) * 2018-08-09 2020-02-13 Huawei Technologies Co., Ltd Device and method for compacting compressed and uncompressed data blocks
KR102519467B1 (ko) * 2018-08-28 2023-04-06 캠브리콘 테크놀로지스 코퍼레이션 리미티드 데이터 전처리 방법, 장치, 컴퓨터 설비 및 저장 매체
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
US11687783B2 (en) * 2019-02-04 2023-06-27 International Business Machines Corporation L2-nonexpansive neural networks
US11625554B2 (en) 2019-02-04 2023-04-11 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 上海寒武纪信息科技有限公司 数据运行方法、装置和相关产品
CN109992225B (zh) * 2019-04-04 2022-02-22 中科寒武纪科技股份有限公司 数据输出方法及相关装置
CN111782577B (zh) * 2019-04-04 2023-03-24 安徽寒武纪信息科技有限公司 数据处理装置及方法以及相关产品
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 삼성전자주식회사 전자 장치 및 그의 연산 수행 방법
EP3987448A1 (en) * 2019-06-18 2022-04-27 Qualcomm Incorporated Optimizing machine learning model performance
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 한국전자통신연구원 선인출 정보를 이용한 메모리 제어 방법 및 장치
CN111162792A (zh) * 2019-12-19 2020-05-15 深圳市航天泰瑞捷电子有限公司 一种电力负荷数据的压缩方法及装置
CN111091184B (zh) * 2019-12-19 2022-03-22 浪潮(北京)电子信息产业有限公司 一种深度神经网络的量化方法、装置、电子设备及介质
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 优刻得科技股份有限公司 数据传输方法、装置及系统
CN111522643A (zh) * 2020-04-22 2020-08-11 杭州迪普科技股份有限公司 基于fpga的多队列调度方法、装置、计算机设备及存储介质
CN113592082A (zh) * 2020-04-30 2021-11-02 意法半导体股份有限公司 用于从人工神经网络分配中间数据的设备和方法
KR20210136476A (ko) * 2020-05-07 2021-11-17 삼성전자주식회사 쿼드 트리 방법의 파라미터들을 이용하여 압축하는 장치 및 방법
US20210377122A1 (en) * 2020-05-26 2021-12-02 Synopsys, Inc. Mixed-precision neural networks
GB202008299D0 (en) 2020-06-02 2020-07-15 Imagination Tech Ltd Manipulation of data in a memory
EP4169165A1 (en) * 2020-06-18 2023-04-26 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
US20230267310A1 (en) * 2020-07-17 2023-08-24 Sony Group Corporation Neural network processing apparatus, information processing apparatus, information processing system, electronic device, neural network processing method, and program
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
WO2023075564A1 (ko) * 2021-11-01 2023-05-04 엘지전자 주식회사 피쳐 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
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 深圳鲲云信息科技有限公司 深度学习的稀疏数据存储方法、计算机设备和存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5369773A (en) 1991-04-26 1994-11-29 Adaptive Solutions, Inc. Neural network using virtual-zero

Family Cites Families (192)

* Cited by examiner, † Cited by third party
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 株式会社日立製作所 並列処理装置
EP0340901A3 (en) * 1988-03-23 1992-12-30 Du Pont Pixel Systems Limited Access system for dual port memory
US5056015A (en) * 1988-03-23 1991-10-08 Du Pont Pixel Systems Limited Architectures for serial or parallel loading of writable control store
EP0334624A3 (en) * 1988-03-23 1993-03-31 Du Pont Pixel Systems Limited Microcoded computer system
JP2703010B2 (ja) 1988-12-23 1998-01-26 株式会社日立製作所 ニユーラルネツト信号処理プロセツサ
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
WO2001069411A2 (en) 2000-03-10 2001-09-20 Arc International Plc Memory interface and method of interfacing between functional entities
GB2382898B (en) 2000-12-29 2005-06-29 Zarlink Semiconductor Ltd A method of managing data
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
US6836767B2 (en) 2001-10-03 2004-12-28 International Business Machines Corporation Pipelined hardware implementation of a neural network circuit
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
CN100437456C (zh) 2003-12-09 2008-11-26 松下电器产业株式会社 电子装置及其控制方法、主机装置及其控制方法
US20050125797A1 (en) * 2003-12-09 2005-06-09 International Business Machines Corporation Resource management for a system-on-chip (SoC)
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
US20060050693A1 (en) * 2004-09-03 2006-03-09 James Bury Building data packets for an advanced switching fabric
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 国际商业机器公司 通过确定输入数据中的模式进行数据挖掘
EP2326049A1 (en) * 2006-03-31 2011-05-25 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
CA2672100A1 (en) * 2006-12-06 2008-06-12 Fusion Multisystems, Inc. Apparatus, system, and method for solid-state storage as cache for high-capacity, non-volatile storage
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
JP5184824B2 (ja) * 2007-06-15 2013-04-17 キヤノン株式会社 演算処理装置及び方法
US8190834B2 (en) 2007-06-15 2012-05-29 Emc Corporation Process for contiguously streaming data from a content addressed storage system
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
CN102971997B (zh) * 2010-01-18 2016-11-09 马维尔国际有限公司 包括数据分段和数据描述分段的分组缓冲器
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 西安空间无线电技术研究所 图像转换压缩传输方法
CN102609222B (zh) * 2012-02-13 2015-03-25 山东华芯半导体有限公司 基于命令描述符的闪存控制方法
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
US9509632B2 (en) * 2012-04-25 2016-11-29 Empire Technology Development Llc Workload prediction for network-based computing
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
WO2014085975A1 (zh) * 2012-12-04 2014-06-12 中国科学院半导体研究所 可动态重构的多级并行单指令多数据阵列处理系统
KR20150064197A (ko) 2012-12-26 2015-06-10 인텔 코포레이션 인접한 수집/분산 연산들의 통합
WO2014116712A1 (en) * 2013-01-22 2014-07-31 Samplify Systems, Inc. Data compression and decompression using simd instructions
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
CN106062730A (zh) * 2013-09-19 2016-10-26 西斯摩斯公司 用于主动构成内容以便在连续社交通信中使用的系统和方法
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
CN105765484B (zh) * 2013-12-23 2019-04-09 英特尔公司 输入输出数据对齐
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
US20150206050A1 (en) * 2014-01-23 2015-07-23 Qualcomm Incorporated Configuring neural network for low spiking rate
US9563369B2 (en) * 2014-04-14 2017-02-07 Microsoft Technology Licensing, Llc Fine-grained bandwidth provisioning in a memory controller
US10635967B2 (en) * 2014-04-15 2020-04-28 Intel Corporation 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
WO2016037350A1 (en) * 2014-09-12 2016-03-17 Microsoft Corporation Learning student dnn via output distribution
US9990307B1 (en) 2014-10-29 2018-06-05 Netronome Systems, Inc. Split packet transmission DMA engine
EP3035249B1 (en) 2014-12-19 2019-11-27 Intel Corporation Method and apparatus for distributed and cooperative computation in artificial neural networks
EP3035204B1 (en) * 2014-12-19 2018-08-15 Intel Corporation Storage device and method for performing convolution operations
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
WO2016149944A1 (zh) * 2015-03-26 2016-09-29 北京旷视科技有限公司 用于识别人脸的方法、系统和计算机程序产品
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
US20160335119A1 (en) 2015-05-12 2016-11-17 minds.ai inc Batch-based neural network system
US10083395B2 (en) * 2015-05-21 2018-09-25 Google Llc Batch processing in a neural network processor
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
CN106203619B (zh) * 2015-05-29 2022-09-13 三星电子株式会社 数据优化的神经网络遍历
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 三星电子株式会社 减少存储器访问和网络内带宽消耗的脉冲神经网络
US20160378491A1 (en) 2015-06-26 2016-12-29 Microsoft Technology Licensing, Llc Determination of target location for transfer of processor control
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
DK3356999T3 (da) 2015-10-04 2020-02-03 Atomwise Inc System til anvendelse af et konvolutionsnetværk til rumlige data
US11029949B2 (en) * 2015-10-08 2021-06-08 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit
CN106485319B (zh) * 2015-10-08 2019-02-12 上海兆芯集成电路有限公司 具有神经处理单元可动态配置以执行多种数据尺寸的神经网络单元
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
CN107578099B (zh) * 2016-01-20 2021-06-11 中科寒武纪科技股份有限公司 计算装置和方法
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
US10417364B2 (en) 2017-01-04 2019-09-17 Stmicroelectronics International N.V. Tool to create a reconfigurable interconnect framework
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 삼성전자주식회사 뉴럴 네트워크에서 컨볼루션 연산을 처리하는 방법 및 장치
US20200250842A1 (en) * 2019-01-31 2020-08-06 Samsung Electronics Co., Ltd. Method and apparatus with convolution neural network processing
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 上海登临科技有限公司 片内异构人工智能处理器

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5369773A (en) 1991-04-26 1994-11-29 Adaptive Solutions, Inc. Neural network using virtual-zero

Also Published As

Publication number Publication date
CN110537194B (zh) 2023-07-07
US20180300603A1 (en) 2018-10-18
CN116909984A (zh) 2023-10-20
WO2018194845A1 (en) 2018-10-25
AU2018256212B2 (en) 2022-08-11
CN110520846B (zh) 2023-07-28
US11100391B2 (en) 2021-08-24
CN110546610B (zh) 2023-02-10
EP3612991B1 (en) 2023-12-13
CN110537194A (zh) 2019-12-03
US20230071352A1 (en) 2023-03-09
US10628345B2 (en) 2020-04-21
WO2018194849A1 (en) 2018-10-25
US11750212B2 (en) 2023-09-05
WO2018194851A1 (en) 2018-10-25
CN110678843A (zh) 2020-01-10
WO2018194988A1 (en) 2018-10-25
CN110546628A (zh) 2019-12-06
US20180300614A1 (en) 2018-10-18
US20220147833A1 (en) 2022-05-12
CN110520856A (zh) 2019-11-29
US10540584B2 (en) 2020-01-21
RU2019136750A3 (ja) 2021-12-22
CN110520853B (zh) 2023-08-15
EP3612936B1 (en) 2023-10-18
US20180300613A1 (en) 2018-10-18
US20180300617A1 (en) 2018-10-18
CN110520909B (zh) 2021-03-19
CN110546611B (zh) 2023-05-02
US11030131B2 (en) 2021-06-08
EP3612990A1 (en) 2020-02-26
EP3612990B1 (en) 2022-04-27
US11256976B2 (en) 2022-02-22
WO2018194846A1 (en) 2018-10-25
KR20230152828A (ko) 2023-11-03
EP3612945A1 (en) 2020-02-26
EP3612991A1 (en) 2020-02-26
CA3056660A1 (en) 2018-10-25
WO2018194996A1 (en) 2018-10-25
US20180300607A1 (en) 2018-10-18
US11341399B2 (en) 2022-05-24
US11176448B2 (en) 2021-11-16
WO2018194848A1 (en) 2018-10-25
CN110678843B (zh) 2023-07-07
US10795836B2 (en) 2020-10-06
EP3612934A1 (en) 2020-02-26
NZ756870A (en) 2023-07-28
MX2019012388A (es) 2020-01-23
EP3612988A2 (en) 2020-02-26
US10963403B2 (en) 2021-03-30
AU2018256212A1 (en) 2019-09-19
CN110546628B (zh) 2023-10-20
CN110546611A (zh) 2019-12-06
US20180300616A1 (en) 2018-10-18
WO2018194993A1 (en) 2018-10-25
BR112019021541A2 (pt) 2020-05-12
PH12019550191A1 (en) 2020-06-29
WO2018194847A1 (en) 2018-10-25
CL2019002864A1 (es) 2020-03-06
EP3612947B1 (en) 2023-09-06
EP3612948A1 (en) 2020-02-26
WO2018194995A1 (en) 2018-10-25
CN110582785B (zh) 2024-02-27
US20180300604A1 (en) 2018-10-18
CN110520856B (zh) 2023-03-31
CN110506260B (zh) 2023-09-22
KR102596644B1 (ko) 2023-10-31
US20180300602A1 (en) 2018-10-18
US20210232904A1 (en) 2021-07-29
CN110546654A (zh) 2019-12-06
WO2018194940A1 (en) 2018-10-25
US11722147B2 (en) 2023-08-08
US11405051B2 (en) 2022-08-02
CN110520846A (zh) 2019-11-29
EP3612942A1 (en) 2020-02-26
MY201868A (en) 2024-03-21
US20180300606A1 (en) 2018-10-18
US20180300605A1 (en) 2018-10-18
EP3613026A1 (en) 2020-02-26
US20180300615A1 (en) 2018-10-18
US20180299943A1 (en) 2018-10-18
JP2020517014A (ja) 2020-06-11
US11100390B2 (en) 2021-08-24
CN110520857B (zh) 2023-07-28
CN110582785A (zh) 2019-12-17
EP3612947A1 (en) 2020-02-26
IL269888B (en) 2022-04-01
CN110546610A (zh) 2019-12-06
CN110520909A (zh) 2019-11-29
EP3613026B1 (en) 2021-05-26
CO2019011014A2 (es) 2019-10-21
CN110520870B (zh) 2023-07-14
US11182667B2 (en) 2021-11-23
CN110546654B (zh) 2024-03-29
EP3612937A1 (en) 2020-02-26
US20200233820A1 (en) 2020-07-23
US20180300634A1 (en) 2018-10-18
WO2018194939A1 (en) 2018-10-25
CN110506260A (zh) 2019-11-26
US11010315B2 (en) 2021-05-18
US11909422B2 (en) 2024-02-20
CN110520857A (zh) 2019-11-29
US20180300633A1 (en) 2018-10-18
EP3612933A1 (en) 2020-02-26
US20200356500A1 (en) 2020-11-12
EP3612946A1 (en) 2020-02-26
CN110520853A (zh) 2019-11-29
CN116909985A (zh) 2023-10-20
US11528033B2 (en) 2022-12-13
EP3612989A1 (en) 2020-02-26
CN110520870A (zh) 2019-11-29
US11205118B2 (en) 2021-12-21
RU2019136750A (ru) 2021-05-18
EP3612946B1 (en) 2023-12-06
WO2018194998A1 (en) 2018-10-25
EP3612942B1 (en) 2021-03-03
EP3612936A1 (en) 2020-02-26
RU2767447C2 (ru) 2022-03-17
WO2018194850A1 (en) 2018-10-25
US20180300601A1 (en) 2018-10-18
ZA201905874B (en) 2020-11-25
WO2018194994A2 (en) 2018-10-25
KR20190141694A (ko) 2019-12-24
SG11201909175XA (en) 2019-11-28
US11476869B2 (en) 2022-10-18

Similar Documents

Publication Publication Date Title
JP7004741B2 (ja) メモリ帯域幅利用を低減するために活性化データの圧縮及び復元を使用するニューラルネットワークプロセッサ
US11487342B2 (en) Reducing power consumption in a neural network environment using data management
US20230196086A1 (en) Increased precision neural processing element
US11507349B2 (en) Neural processing element with single instruction multiple data (SIMD) compute lanes
KR102663557B1 (ko) 메모리 대역폭 활용을 감소시키기 위해 활성화 데이터의 압축 및 압축 해제를 사용하는 신경망 프로세서

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210310

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210310

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20211207

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211208

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220104

R150 Certificate of patent or registration of utility model

Ref document number: 7004741

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150