KR20230152828A - 메모리 대역폭 활용을 감소시키기 위해 활성화 데이터의 압축 및 압축 해제를 사용하는 신경망 프로세서 - Google Patents

메모리 대역폭 활용을 감소시키기 위해 활성화 데이터의 압축 및 압축 해제를 사용하는 신경망 프로세서 Download PDF

Info

Publication number
KR20230152828A
KR20230152828A KR1020237037000A KR20237037000A KR20230152828A KR 20230152828 A KR20230152828 A KR 20230152828A KR 1020237037000 A KR1020237037000 A KR 1020237037000A KR 20237037000 A KR20237037000 A KR 20237037000A KR 20230152828 A KR20230152828 A KR 20230152828A
Authority
KR
South Korea
Prior art keywords
data
chunk
zero
bytes
compressed
Prior art date
Application number
KR1020237037000A
Other languages
English (en)
Other versions
KR102663557B1 (ko
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 KR20230152828A publication Critical patent/KR20230152828A/ko
Application granted granted Critical
Publication of KR102663557B1 publication Critical patent/KR102663557B1/ko

Links

Classifications

    • 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
    • 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
    • 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
    • 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
    • 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/1673Details of memory controller using buffers
    • 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
    • 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 or 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 or 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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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/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
    • 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/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
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Computer Hardware Design (AREA)
  • Neurology (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Human Computer Interaction (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Advance Control (AREA)
  • Memory System (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Image Processing (AREA)
  • Power Sources (AREA)
  • Bus Control (AREA)
  • Complex Calculations (AREA)
  • Multi Processors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Image Input (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

심층 신경망(DNN) 모듈은, 메모리 버스 대역폭의 활용을 감소시키기 위해, 신경 생성 활성화 데이터를 압축 및 압축 해제할 수 있다. 압축 유닛은 DNN 모듈 내의 뉴런에 의해 생성되는 데이터의 압축되지 않은 청크를 수신할 수 있다. 압축 유닛은 압축된 출력 청크의 마스크 부분 및 데이터 부분을 생성한다. 마스크 부분은 데이터의 압축되지 않은 청크에서의 제로 및 넌제로 바이트의 존재 및 위치를 인코딩한다. 데이터 부분은 데이터의 압축되지 않은 청크로부터의 잘려진 넌제로 바이트를 저장한다. 압축 해제 유닛은, DNN 프로세서의 메모리 또는 애플리케이션 호스트의 메모리로부터 데이터의 압축된 청크를 수신할 수 있다. 압축 해제 유닛은, 마스크 부분 및 데이터 부분을 사용하여 데이터의 압축된 청크를 압축 해제한다. 이것은 메모리 버스 활용을 감소시킬 수 있고, DNN 모듈이 프로세싱 동작을 더욱 신속하게 완료하는 것을 허용할 수 있고, 전력 소비를 감소시킬 수 있다.

Description

메모리 대역폭 활용을 감소시키기 위해 활성화 데이터의 압축 및 압축 해제를 사용하는 신경망 프로세서{NEURAL NETWORK PROCESSOR USING COMPRESSION AND DECOMPRESSION OF ACTIVATION DATA TO REDUCE MEMORY BANDWIDTH UTILIZATION}
심층 신경망(deep neural network; "DNN")은, 인간 뇌와 같은 생물학적 신경 시스템에서의 정보 프로세싱 및 통신 패턴을 따라 느슨하게 모델링된다. DNN은, 오브젝트 검출, 시맨틱 라벨링(semantic labeling), 및 피쳐 추출과 같은, 그러나 이들로 제한되지는 않는, 복잡한 분류 문제를 해결하기 위해 활용될 수 있다. 결과적으로, DNN은, 컴퓨터 비전, 음성 인식, 및 기계 번역과 같은 많은 인공 지능(artificial intelligence; "AI") 애플리케이션에 대한 기초를 형성한다. DNN은, 이들 도메인 중 많은 것에서 사람의 정확도와 매치하거나 또는 초과할 수 있다.
DNN의 높은 레벨의 성능은, 큰 데이터 세트에 대한 통계적 학습을 사용한 이후 입력 데이터로부터 높은 레벨의 피쳐를 추출하여 입력 공간의 효과적인 표현을 획득하는 그들의 능력으로부터 기인한다. 그러나, DNN의 우수한 성능은 높은 계산 복잡도를 대가로 한다. 그래픽 프로세싱 유닛(graphics processing unit; "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; "ASIC")가 개발되었다. 그러나, 이 분야에서의 발전에도 불구하고, 특히 저전력 소비가 중요한 컴퓨팅 디바이스에서 사용하기 위한, DN 프로세싱을 수행하는 ASIC의 성능을 향상시키고 전력 소비를 감소시킬 지속적인 필요성이 존재한다.
본원에서 이루어지는 개시는 이들 및 다른 기술적 도전 과제와 관련하여 제시된다.
메모리 버스 대역폭의 활용을 감소시키기 위해 활성화 데이터(activation data)를 압축 및 압축 해제할 수 있는 DNN 모듈, 또는 프로세서가 개시된다. 특히, DNN 모듈은, 압축을 활용하여, 뉴런 출력과 온 보드(on-board) 또는 오프 보드(off-board) 메모리 사이의 버스 대역폭의 활용을 감소시킬 수 있다. DNN 모듈은 또한, 압축 해제를 활용하여, 온 보드 또는 오프 보드 메모리와 뉴런 입력 사이의 메모리 버스 대역폭의 활용을 감소시킬 수 있다. 감소된 대역폭 활용은, 더 빠른 프로세싱을 가능하게 할 수 있고, 결과적으로, 전력 소비도 또한 감소시킬 수 있다. 본원에서 구체적으로 언급되지 않는 다른 기술적 이점은, 개시된 주제의 구현예를 통해 또한 실현될 수 있다.
상기에서 간략하게 언급되는 기술적 이점을 실현하기 위해, 하나 이상의 뉴런 및 압축 유닛을 포함하는 DNN 프로세서가 개시된다. 압축 유닛은, 뉴런 중 하나 이상에 의해 생성되는 데이터의 압축되지 않은 청크를 수신할 수 있다. 데이터의 압축되지 않은 청크는, 몇몇 실시형태에서, 64 바이트와 같은 고정된 수의 바이트를 포함한다.
데이터의 압축되지 않은 청크를 압축하기 위해, 압축 유닛은 압축된 출력 청크의 마스크 부분(mask portion) 및 데이터 부분(data portion)을 생성할 수 있다. 압축된 출력 청크의 마스크 부분은, 데이터의 압축되지 않은 청크에서의 고정된 수의 바이트와 동등한 수의 비트를 포함한다. 예를 들면, 데이터의 압축되지 않은 청크가 64 바이트의 데이터를 포함하면, 마스크 부분은 64 비트(즉, 8 바이트)를 포함할 것이다.
압축된 출력 청크의 마스크 부분에서의 각각의 비트는, 몇몇 실시형태에서 데이터의 압축되지 않은 청크의 바이트에 대응한다. 예를 들면, 마스크 부분 중 비트 1은 데이터의 압축되지 않은 청크에서의 첫 번째 바이트에 대응할 수 있고, 마스크 부분의 비트 2는 데이터의 압축되지 않은 청크에서의 두 번째 바이트에 대응할 수 있고, 계속 그런 식이다. 다른 실시형태에서, 압축된 출력 청크의 마스크 부분에서의 두 개 이상의 비트는, 데이터의 압축되지 않은 청크의 바이트에 대응한다. 이들 실시형태에서, 압축된 출력 청크의 마스크 부분에서의 비트는, 압축되지 않은 청크에서의 대응하는 바이트뿐만 아니라 또한 그것의 근사 크기를 나타낼 수 있다.
마스크 부분의 개개의 비트가 압축되지 않은 청크에서의 바이트에 대응하는 경우, 압축 유닛은 압축된 출력 청크의 마스크 부분에서의 각각의 비트를 논리적 거짓(이것은 본원에서 "논리적 0"으로 또한 칭해질 수도 있을 것임)으로 설정하는데, 데이터의 압축되지 않은 청크에서의 대응하는 바이트는 모두 제로(즉, "제로 바이트")를 포함한다. 압축 유닛은 또한, 압축된 출력 청크의 마스크 부분에서의 각각의 비트를 논리적 참(이것은 본원에서 "논리적 1"로 또한 칭해질 수도 있음)으로 설정하는데, 데이터의 압축되지 않은 청크에서의 대응하는 바이트는 적어도 하나의 넌제로(non-zero) 비트(즉, "넌제로 바이트")를 포함한다. 이러한 방식으로, 압축된 출력 청크의 마스크 부분은 데이터의 압축되지 않은 청크에서 제로 및 넌제로 바이트의 존재 및 위치를 인코딩한다.
압축 유닛은 데이터의 압축되지 않은 청크에서 넌제로 바이트의 수를 결정하는 것에 의해 압축된 출력 청크의 데이터 부분을 생성한다. 그 다음, 압축 유닛은, 데이터의 압축되지 않은 청크에서의 넌제로 바이트의 수 및 압축된 출력 청크의 데이터 부분에서 이용 가능한 바이트의 수에 기초하여, 데이터의 압축되지 않은 청크의 각각의 넌제로 바이트를 저장하는데 이용 가능한 압축된 출력 청크의 데이터 부분에서의 비트의 수를 결정한다. 예를 들면, 데이터의 압축된 청크의 데이터 부분이 24 바이트 폭(즉, 192 비트)이고 데이터의 압축되지 않은 청크에 47 넌제로 바이트가 있는 경우, 데이터의 압축되지 않은 청크로부터 각각의 넌제로 바이트를 저장하는데 4 비트가 데이터 부분에서 이용 가능하다.
몇몇 실시형태에서, 압축 유닛은 또한, 데이터의 압축되지 않은 청크의 넌제로 바이트를 저장하는데 이용 가능한 압축된 출력 청크의 데이터 부분에서의 추가 비트의 수를, 만약 있다면, 결정할 수 있다. 상기에서 주어지는 예에서, 예를 들면, 네 개의 추가 비트가 넌제로 바이트를 저장하는데 이용 가능하다(즉, 192 mod 47 = 4 비트). 압축 유닛은, 넌제로 바이트 중 하나 이상을 잘라내기 이전에 이들 추가 비트를, 데이터의 압축되지 않은 청크에서의 넌제로 바이트 중 하나 이상에 할당할 수 있다. 예를 들면, 압축 유닛은 이들 추가 비트를 압축된 출력 청크의 데이터 부분의 처음 몇 바이트에 할당할 수도 있을 것이다.
그 다음, 압축 유닛은, 데이터의 압축되지 않은 청크에서의 넌제로 바이트를, 각각의 넌제로 바이트를 저장하기 위해 데이터 부분에서 이용 가능한 결정된 비트의 수(즉, 상기에서 주어지는 예에서는 4)로 잘라낸다. 압축 유닛은, 하나의 실시형태에서, 데이터 부분에서 이용 가능한 비트 수 이내로 적합되도록 넌제로 바이트의 최하위 비트(least significant bit; "LSB")를 잘라낸다. 다른 실시형태에서, 압축 유닛은 넌제로 바이트의 최상위 비트(most significant bit; "MSB")를 잘라낸다. 그 다음, 압축 유닛은 잘려진 넌제로 바이트를 압축된 출력 청크의 데이터 부분에 저장한다. 그 다음, 마스크 부분 및 데이터 부분을 포함하는 압축된 출력 청크는, 예를 들면, DNN 프로세서의 온 보드 메모리 또는 DNN 프로세서의 애플리케이션 호스트의 오프 보드 메모리로 출력될 수 있다.
DNN 모듈은 또한, 상기에서 설명되는 방식으로 압축된 데이터의 청크를 압축 해제할 수 있는 압축 해제 유닛(decompression unit)을 포함할 수 있다. 예를 들면, 압축 해제 유닛은, DNN 프로세서 내의 메모리 또는 애플리케이션 호스트의 메모리로부터 데이터의 압축된 청크를 수신할 수 있다. 그 다음, 압축 해제 유닛은, 압축된 출력 청크의 마스크 부분에서의 논리적 참 비트의 수에 기초하여 데이터의 압축되지 않은 청크의 데이터 부분에서의 넌제로 바이트의 수를 결정할 수 있다. 압축 해제 유닛은 또한, 압축된 출력 청크의 마스크 부분에서의 논리적 참 비트의 위치에 기초하여, 데이터의 압축되지 않은 청크에서의 넌제로 바이트의 위치를 결정할 수 있다. 압축 해제 유닛은, 데이터의 압축되지 않은 청크에서의 제로 바이트의 위치를 유사한 방식으로 결정할 수 있다.
압축 해제 유닛은 또한, 압축된 출력 청크의 데이터 부분에 잘려진 넌제로 바이트를 저장하기 위해 압축 유닛에 의해 사용되는 비트의 수를 결정할 수 있다. 압축 해제 유닛은, 데이터의 압축된 청크에서의 넌제로 바이트의 수 및 압축되지 않은 출력 청크의 데이터 부분에서 이용 가능한 바이트의 수에 기초하여 각각의 잘려진 넌제로 바이트를 저장하기 위해 사용되는 비트의 수를 결정할 수 있다.
상기에서 주어지는 예에서, 예를 들면, 데이터의 압축된 청크의 데이터 부분이 24 바이트 폭(즉, 192 비트)이고 데이터의 압축되지 않은 청크에 47 넌제로 바이트가 있는 경우, 압축 유닛은, 데이터의 압축되지 않은 청크의 각각의 잘려진 넌제로 바이트를 데이터 부분에 저장하기 위해 4 비트를 활용하였다. 압축 해제 유닛은 또한, 압축된 출력 청크의 데이터 부분에 저장되는 잘려진 넌제로 바이트의 하나 이상에 압축 유닛이 할당한 추가 비트의 수를, 만약 있다면, 결정할 수 있다.
논리 0인 압축된 출력 청크의 마스크 부분에서의 각각의 비트 위치에 대해, 압축 해제 유닛은 압축 해제된 출력 청크의 대응하는 위치로 제로 바이트를 삽입한다. 논리 1인 마스크 부분에서의 각각의 위치에 대해, 압축 해제 유닛은, 압축된 입력 청크의 대응하는 위치로부터의 잘려진 넌제로 바이트를, 압축된 출력 청크의 압축 동안 잘려지는 비트의 수와 동등한 수의 제로 비트와 함께 압축 해제된 출력 청크의 대응하는 위치 안으로 삽입한다. 압축 동안 어떤 비트가 잘려졌는지에 따라 잘려진 넌제로 바이트의 LSB 또는 MSB 안으로 제로 비트가 삽입될 수 있다.
몇몇 실시형태에서, 압축 해제 유닛은 또한, 압축 해제된 출력 청크에 저장되는 잘려진 넌제로 바이트의 하나 이상에 오프셋(예를 들면, 00000001)을 추가한다. 예를 들면, 압축에 이어 제로 바이트가 되는 데이터의 압축되지 않은 청크의 넌제로 바이트에 오프셋이 추가될 수 있다. 이러한 방식으로, 넌제로 바이트는 압축 및 압축 해제시 제로 바이트가 되지 않을 것이다. 다른 실시형태에서, 압축 해제된 출력 청크에서의 모든 바이트에 오프셋이 추가될 수 있다.
상기에서 간략하게 논의되는 바와 같이, 본원에서 개시되는 기술의 구현예는, DNN 모듈에서의 메모리 버스 대역폭 활용을 감소시킬 수 있고, DNN 모듈이 프로세싱 동작을 더욱 신속하게 완료하는 것을 허용할 수 있고, 전력 소비를 감소시킬 수 있다. 본원에서 구체적으로 식별되지 않는 다른 기술적 이점은, 개시된 기술의 구현예를 통해 또한 실현될 수 있다.
상기에서 설명된 주제는, 컴퓨터 제어 장치, 컴퓨터 구현 방법, 컴퓨팅 디바이스, 또는 컴퓨터 판독 가능 매체와 같은 제조 물품으로서 구현될 수 있다는 것이 인식되어야 한다. 이들 및 다양한 다른 피쳐는, 다음의 상세한 설명의 판독 및 관련 도면의 리뷰로부터 명백해질 것이다.
이 개요는 하기의 상세한 설명에서 추가로 설명되는, 개시된 기술의 몇몇 양태의 간단한 설명을 간략화된 형태로 소개하기 위해 제공된다. 이 개요는 청구된 주제의 주요 피쳐 또는 필수 피쳐를 식별하도록 의도되는 것도 아니고, 이 개요가 청구된 주제의 범위를 제한하기 위해 사용되어야 한다는 것을 의도하는 것도 아니다. 더구나, 청구된 주제는 본 개시의 임의의 부분에서 언급되는 임의의 또는 모든 단점을 해결하는 구현예로 제한되지는 않는다.
도 1은, 하나의 실시형태에 따른, 본원에서 개시되는 기술의 양태를 구현하는 DNN 모듈의 구성 및 동작의 양태를 도시하는 컴퓨팅 아키텍쳐 도면이다;
도 2a 및 도 2b는, 하나의 실시형태에 따른, 활성화 데이터를 압축하기 위한 DNN 모듈의 구성 및 동작의 양태를 도시하는 컴퓨팅 시스템 아키텍쳐 도면이다;
도 3은, 하나의 실시형태에 따른, 압축되지 않은 활성화 데이터의 예시적인 청크를 참조하여 활성화 데이터를 압축하기 위한 DNN 모듈의 동작의 양태를 예시하는 데이터 구조도이다;
도 4는, 본원에서 개시되는 하나의 실시형태에 따른, 활성화 데이터를 압축하기 위한 개시된 DNN 모듈의 동작의 양태를 예시하는 루틴을 도시하는 흐름도이다;
도 5a 및 도 5b는, 하나의 실시형태에 따른, 활성화 데이터를 압축 해제하기 위한 DNN 모듈의 구성 및 동작의 양태를 도시하는 컴퓨팅 시스템 아키텍쳐 도면이다;
도 6은, 하나의 실시형태에 따른, 압축된 활성화 데이터의 예시적인 청크를 참조하여 활성화 데이터를 압축 해제하기 위한 DNN 모듈의 동작의 양태를 예시하는 데이터 구조도이다;
도 7은, 본원에서 개시되는 하나의 실시형태에 따른, 활성화 데이터를 압축 해제하기 위한 개시된 DNN 모듈의 동작의 양태를 예시하는 루틴을 도시하는 흐름도이다;
도 8은, 하나의 실시형태에 따른, 본원에서 제시되는 DNN 모듈에 대한 애플리케이션 호스트로서 작용할 수 있는 컴퓨팅 디바이스에 대한 예시적인 컴퓨터 하드웨어 및 소프트웨어 아키텍쳐를 도시하는 컴퓨터 아키텍쳐 도면이다; 그리고
도 9는, 본원에서 제시되는 다양한 실시형태에 따른, 개시된 기술의 양태가 구현될 수 있는 분산 컴퓨팅 환경을 예시하는 네트워크 도면이다.
다음의 상세한 설명은, 메모리 버스 대역폭의 활용을 감소시키기 위해 활성화 데이터를 압축 및 압축 해제할 수 있는 DNN 모듈에 관한 것이다. 상기에서 간략하게 논의되는 바와 같이, 개시된 기술의 구현예는, DNN 모듈에서의 메모리 버스 대역폭 활용을 감소시킬 수 있고, DNN 모듈이 프로세싱 동작을 더욱 신속하게 완료하는 것을 허용할 수 있고, 전력 소비를 감소시킬 수 있다. 본원에서 구체적으로 언급되지 않는 다른 기술적 이점은, 개시된 주제의 구현예를 통해 또한 실현될 수 있다.
본원에서 설명되는 주제는 하드웨어 DNN 모듈의 일반적인 맥락에서 제시되지만, 기술 분야의 숙련된 자는, 다른 구현예가 다른 타입의 컴퓨팅 시스템 및 모듈과 조합하여 수행될 수 있다는 것을 인식할 것이다. 기술 분야의 숙련된 자는 또한, 본원에서 설명되는 주제가, 핸드헬드 디바이스, 멀티프로세서 시스템, 마이크로프로세서 기반의 또는 프로그래머블 소비자 전자장치, 디바이스에 임베딩되는 컴퓨팅 또는 프로세싱 시스템(예컨대, 웨어러블 컴퓨팅 디바이스, 자동차, 홈 오토메이션, 등등), 미니 컴퓨터, 메인프레임 컴퓨터, 및 등등을 비롯한, 다른 컴퓨터 시스템 구성과 함께 실시될 수 있다는 것을 인식할 것이다.
이하에서 더욱 상세히 설명되는 바와 같이, 자신의 뉴런의 출력을 압축하도록 구성되는 DNN 모듈이 개시된다. 압축된 출력은, DNN 모듈 상의 메모리에 또는 DNN 모듈 외부의 메모리, 예컨대 DNN 모듈에 대한 애플리케이션 호스트에 의해 제공되는 메모리에 저장될 수 있다. 나중에, DNN 모듈은, 이전에 압축된 데이터를 압축 해제하고 압축 해제된 데이터를 뉴런에 제공할 수 있다.
하나의 실시형태에 따르면, DNN 프로세서 내의 압축 유닛은, 압축되지 않은 활성화 데이터의 고정된 길이의 청크(예를 들면, 64 바이트)를 고정된 압축 비율(예를 들면, 2: 1)에서 압축한다. 압축 유닛에 의해 생성되는 압축 활성화 데이터는, 고정된 길이의 마스크 부분(예를 들면, 8 바이트) 및 고정된 길이의 데이터 부분(예를 들면, 24 바이트)을 포함하는 고정된 길이(예를 들면, 32 바이트)를 갖는 데이터의 청크를 포함할 수 있다.
압축된 출력 청크의 마스크 부분의 비트는, 하나의 실시형태에서, 압축되지 않은 입력 청크 내에서의 바이트에 대응한다. 예를 들면, 마스크 부분의 제1 비트는 압축되지 않은 입력 청크에서의 첫 번째 바이트에 대응할 수 있고, 마스크 부분의 제2 비트는 압축되지 않은 입력 청크에서의 두 번째 바이트에 대응할 수 있고, 계속 그런 식이다. 압축된 활성화 데이터의 마스크 부분에서의 비트는, 압축되지 않은 입력 청크에서의 대응하는 바이트가 제로인 경우, 논리 0으로 설정될 수 있고, 압축되지 않은 입력 청크에서의 대응하는 바이트가 넌제로인 경우 논리 1로 설정될 수 있다.
상기에서 간략하게 논의되는 바와 같이, 압축된 출력 청크의 마스크 부분에서의 두 개 이상의 비트는, 몇몇 실시형태에서, 데이터의 압축되지 않은 청크에서의 바이트에 대응한다. 이들 실시형태에서, 압축된 출력 청크의 마스크 부분에서의 비트는, 압축되지 않은 청크에서의 대응하는 바이트뿐만 아니라 또한 그것의 근사 크기를 나타낼 수 있다.
압축된 출력 청크의 데이터 부분은, 압축된 데이터 부분에서의 이용 가능한 비트의 수를 사용하여 입력 청크의 넌제로 바이트를 나타내도록 잘려진 압축되지 않은 입력 청크의 넌제로 바이트를 포함한다. 각각의 넌제로 바이트에 대한 압축된 출력 청크의 데이터 부분에서의 이용 가능한 비트의 수는, 몇몇 실시형태에서, 데이터 부분에서의 이용 가능한 비트의 총 수(예를 들면, 192 비트)를, 압축되지 않은 입력 청크에서의 넌제로 바이트의 수로 나누는 것에 의해 결정된다. 이 계산의 결과는, 압축되지 않은 입력 청크에서 넌제로 데이터의 각각의 바이트를 나타내는 데 이용 가능한 압축된 출력 청크의 데이터 부분에서의 비트의 수를 나타낸다. 임의의 나머지 비트는, 압축된 출력 청크의 데이터 부분에서의 넌제로 값 중 일부를 나타내기 위한 추가 비트를 제공하기 위해 사용될 수 있다.
일단 압축되지 않은 입력 청크에서의 각각의 넌제로 바이트를 나타내기 위한 압축된 출력 청크의 데이터 부분에서 이용 가능한 비트의 수가 결정되면, 압축되지 않은 입력 청크에서의 넌제로 값의 LSB은 이용 가능한 비트 수 이내로 적합되도록 잘려진다. 넌제로 값의 MSB는 다른 실시형태에서 잘려질 수도 있을 것이다. 그 다음, 잘려진 넌제로 값은, 압축된 출력 청크의 데이터 부분에 저장될 수 있다. 이 프로세스는, 압축되지 않은 입력 활성화 값의 각각의 청크에 대해 반복될 수 있다. 그 다음, 압축된 출력 청크는, 뉴런에 의한 나중의 압축 해제 및 사용을 위해 모듈 상의 메모리 또는 모듈 밖의 메모리에 저장될 수 있다.
개시된 DNN 모듈은 또한, 상기에서 설명되는 방식으로 압축 유닛에 의해 압축된 활성화 값을 압축 해제하기 위한 압축 해제 유닛을 포함할 수 있다. 압축 해제 유닛은, 마스크 부분 및 데이터 부분을 포함하는 압축된 활성화 데이터의 청크를 수신한다. 압축 해제 유닛은, 마스크 부분의 비트를 활용하여, 압축 해제된 출력 청크에 존재할 넌제로 바이트의 수 및 압축 해제된 출력 청크 내에서의 그들의 위치를 식별할 수 있다. 마스크는 또한, 압축 해제된 출력 청크에서의 제로 바이트의 위치를 나타낸다.
몇몇 실시형태에서, 압축 해제 유닛은, 압축된 청크의 데이터 부분에서의 이용 가능한 비트의 총 수(예를 들면, 192 비트)를, 마스크에 의해 명시되는 바와 같은 압축되지 않은 입력 청크에서의 넌제로 바이트의 수에 의해 나누는 것에 의해, 각각의 넌제로 바이트를 나타내기 위해 압축 유닛에 의해 사용된 비트의 수를 결정한다. 압축 해제 유닛은 또한, 압축 유닛이 압축된 청크의 데이터 부분에서의 넌제로 값 중 일부(예를 들면, 처음 N 개의 값)를 나타내기 위한 추가 비트를 제공하기 위해 임의의 나머지 비트를 사용했다는 것을 가정할 수 있다.
논리 0인 마스크에서의 각각의 비트 위치에 대해, 압축 해제 유닛은, 압축 해제된 출력 청크의 대응하는 위치에서 압축 해제된 출력 청크에 제로 바이트를 삽입할 수 있다. 논리 1인 마스크에서의 각각의 비트 위치에 대해, 압축 해제 유닛은, 압축 해제된 출력 청크에서의 대응하는 위치에서 압축된 입력 청크의 데이터 부분에서의 대응하는 위치로부터 잘려진 넌제로 바이트를 삽입한다. 압축 해제 유닛은 또한 압축 동안 잘려진 비트를 대체하기 위해 넌제로 값의 LSB, 또는 MSB에 적절히 제로를 삽입한다.
몇몇 실시형태에서, 압축 해제 유닛은, 넌제로의 압축 해제된 값이 압축 해제될 때 제로 바이트가 되지 않는 것을 보장하기 위해, 잘려진 넌제로 값에 오프셋 값을 추가한다. 그 다음, 압축 해제된 출력 청크는 뉴런에 의한 사용을 위해 모듈 상의 메모리 또는 모듈 밖의 메모리에 저장될 수 있다. DNN 모듈, 압축 유닛 및 압축 해제 유닛의 동작에 관한 추가적인 세부 사항이 하기에서 제공될 것이다.
다음의 상세한 설명에서, 본원의 일부를 형성하며, 예시 고유의 구성 또는 예를 통해 도시되는 첨부의 도면에 대한 참조가 이루어진다. 이제, 여러 도면 전체에 걸친 동일한 번호가 동일한 엘리먼트를 나타내는 도면을 참조하여, 메모리 버스 대역폭의 활용을 감소시키기 위해 활성화 데이터를 압축 및 압축 해제할 수 있는 DNN 모듈의 양태가 설명될 것이다.
도 1은, 하나의 실시형태에 따른, 본원에서 개시되는 기술을 구현하는 DNN 모듈(105)의 구성 및 동작의 양태를 도시하는 컴퓨팅 아키텍쳐 도면이다. 본원에서 개시되는 DNN 모듈(105)은, 몇몇 실시형태에서, 오브젝트 검출, 시맨틱 라벨링, 및 피쳐 추출과 같은, 그러나 이들로 제한되지는 않는 분류 문제(및 관련 문제)를 해결하도록 구성된다.
이 기능성(functionality)을 제공하기 위해, DNN 모듈(105)은, 리콜 전용 신경망(recall-only neural network)을 구현할 수 있고 다양한 네트워크 구조를 프로그램적으로 지원할 수 있다. DNN 모듈(105)에 의해 구현되는 네트워크에 대한 트레이닝은, 서버 팜, 데이터 센터, 또는 다른 적절한 컴퓨팅 환경에서 오프라인으로 수행될 수 있다. DNN을 트레이닝시키는 결과는, "가중치(weight)" 또는 "커널"로 알려질 수 있는 파라미터의 세트이다. 이들 파라미터는 입력에 적용될 수 있는 변환 함수를 나타내는데, 결과는 분류 또는 의미론적으로 라벨링된 출력이다.
본원에서 개시되는 DNN 모듈(105)은 슈퍼 스칼라 프로세서로 간주될 수 있다. DNN 모듈(105)은 하나 이상의 명령어를 뉴런(105F)으로 칭해지는 다수의 실행 유닛으로 디스패치할 수 있다. 실행 유닛은 "동시 디스패치 동시 완료(simultaneous dispatch simultaneous complete)"일 수 있는데, 여기서 각각의 실행 유닛은 다른 실행 유닛의 각각과 동기화된다. DNN 모듈(105)은 단일의 명령어 스트림, 다수의 데이터 스트림(single instruction stream, multiple data stream; "SIMD") 아키텍쳐로서 분류될 수 있다.
DNN 모듈(105)은 다수의 뉴런(105F)(예를 들면, 2의 거듭 제곱)을 포함한다. 뉴런(105F)은 뇌의 생물학적 뉴런을 모델링하기 위해 사용되는 인공 신경망의 기본 단위이다. 뉴런(105F)의 모델은, 활성화 함수가 적용된, 입력 벡터와 바이어스에 추가되는 가중치 벡터의 내적(inner product)을 포함할 수 있다. 본원에서 설명되는 DNN 모듈(105) 내의 뉴런(105F)에 의해 수행되는 프로세싱은 인공 뉴런에 밀접하게 매핑된다.
DNN 모듈(105) 내의 각각의 뉴런(105F)은, 가중된 합계, 최대 풀링, 우회, 및 잠재적으로 다른 타입의 동작을 수행할 수 있다. 뉴런(105F)은 클록 사이클마다 입력 및 가중치 데이터를 프로세싱한다. 각각의 뉴런(105F)은, DNN 모듈(105) 내에서의 커널 데이터의 흐름을 최소화하기 위해 커널 내에서의 진행의 측면에서 모든 다른 뉴런(105F)에 동기화된다.
각각의 뉴런(105F)은, 승산기, 가산기, 비교기, 및 다수의 누산기를 포함할 수 있다(도 1에서 도시되지 않음). 다수의 누산기를 구비하는 것에 의해, 뉴런(105F)은 한 번에 다수의 상이한 활성 커널에 대한 컨텍스트를 유지할 수 있다. 각각의 누산기는, BaSRAM(150)의 판독으로부터 로딩될 수 있다(하기에서 설명됨). 누산기는 그들 자신을 다른 뉴런(105F)으로부터의 다른 누산기의 내용과 합산할 수 있다.
DNN 모듈(105)은, 이미지 데이터와 같은 평면 데이터를 입력으로서 받아들인다. 그러나, DNN 모듈(105)에 대한 입력은, 이미지 데이터로 제한되지 않는다. 오히려, DNN 모듈(105)은, 균일한 평면 포맷으로 DNN 모듈(105)에 제시되는 임의의 입력 데이터에 대해 동작할 수 있다. 하나의 특정한 실시형태에서, DNN 모듈(105)은 입력으로서 다중 평면 1 바이트 또는 2 바이트 데이터 프레임을 수용할 수 있다.
각각의 입력 프레임은 커널의 N×K×H×W 세트로 컨볼빙될 수 있는데, 여기서 N은 커널 수이고, K는 커널당 채널의 수이고, H는 높이이고, W는 폭이다. 입력 데이터에 걸쳐 중첩하는 간격에 대해 컨볼루션이 수행되는데, 간격은 X 및 Y 방향에서의 보폭에 의해 정의된다. 이들 기능은 뉴런(105F)에 의해 수행되고 DNN 모듈(105) 및 소프트웨어 가시 제어 레지스터(software-visible control register)에 의해 관리된다.
DNN 모듈(105)은 세 가지 주요 데이터 타입을 지원한다: 가중치; 입력 데이터/피쳐 맵; 및 활성화 데이터. 입력 데이터/피쳐 맵 및 활성화 데이터는, 대부분의 경우, 레이어의 출력을 참조할 때 용어 활성화 데이터가 사용된다는 구별을 갖는 동일한 데이터에 대한 두 개의 이름이다. 레이어의 입력을 언급할 때, 용어 입력 데이터/피쳐 맵이 사용된다.
DNN 모듈(105) 내의 뉴런(105F)은 그들의 입력의 가중된 합을 계산하고 가중된 합을 "활성화 함수" 또는 "전달 함수"을 통해 전달한다. 전달 함수는 일반적으로 S자 형상을 가지지만, 그러나, 구분적 선형 함수(piecewise linear function), 단계 함수(step function), 또는 다른 타입의 함수의 형태를 또한 취할 수도 있을 것이다. 활성화 함수는 뉴런(105F)이 입력 및 분류 경계가 비선형적인 소망되는 출력의 더 큰 세트로 트레이닝되는 것을 허용한다.
DNN 모듈(105)은 신경망의 레이어에 대응하는 레이어 디스크립터(layer descriptor)의 목록에 대해 동작한다. 레이어 디스크립터의 목록은 DNN 모듈(105)에 의해 명령어로서 취급될 수 있다. 이들 디스크립터는, 메모리로부터 DNN 모듈(105)로 프리페치되어 순서대로 실행될 수 있다. 디스크립터 목록은 DNN 모듈(105)에 대한 명령어의 세트로서 작용한다. DNN 모듈(105) 상에서 실행되는 디스크립터 목록을 생성하기 위해 소프트웨어 툴 및/또는 컴파일러가 DNN 모듈(105) 외부의 디바이스 상에서 실행될 수 있다.
일반적으로, 두 가지 주요 클래스의 디스크립터가 있을 수 있다: 메모리 대 메모리 이동( memory-to-memory move; "M2M") 디스크립터; 및 동작 디스크립터. M2M 디스크립터는 동작 디스크립터에 의한 소비를 위해 데이터를 메인 메모리로/로부터 로컬 버퍼(즉, 하기에 설명되는 라인 버퍼(125))로/로부터 이동시키기 위해 사용될 수 있다. M2M 디스크립터는, 동작 디스크립터와 상이한 실행 파이프라인을 따른다. M2M 디스크립터에 대한 타겟 파이프라인은, 내부 DMA 엔진(105B) 또는 구성 레지스터(105G)일 수 있고, 반면, 동작 디스크립터에 대한 타겟 파이프라인은 뉴런(105F)일 수 있다.
동작 디스크립터는, 뉴런(105F)이 로컬의 정적 랜덤 액세스 메모리(static random access memory; "SRAM") 메모리에 위치되는 데이터 구조에 대해 수행해야 하는 특정한 동작을 명시한다. 동작 디스크립터는 순서대로 프로세싱되며, 다수의 상이한 레이어 동작이 가능한데, 그 중 적어도 일부는 본원에서 설명된다.
도 1에서 예시되는 바와 같이, DNN 모듈(105)은 고유한 L1 및 L2 버퍼 구조를 갖는 메모리 서브시스템을 구비한다. 도 1에서 도시되는 L1 및 L2 버퍼는 신경망 프로세싱을 위해 특별히 설계된다. 예로서, L2 버퍼(150)는 선택된 주파수에서 동작하는 고속 전용 인터페이스를 사용하여 선택된 저장 용량을 유지할 수 있다. L1 버퍼(125)는 커널과 활성화 데이터 사이에서 분할될 수 있는 선택된 저장 용량을 유지할 수 있다. L1 버퍼(125)는 본원에서 "라인 버퍼(125)"로 지칭될 수도 있을 것이고, L2 버퍼(150)는 본원에서 BaSRAM(150)으로 지칭될 수도 있을 것이다.
몇몇 실시형태에서, 계산 데이터(즉, 입력 데이터, 가중치 및 활성화 데이터)는 BaSRAM(150)에 행 우선으로(row-major) 저장된다. 계산 데이터는 두 개의 라인 버퍼로 편제될(organized) 수 있는데, 하나의 라인 버퍼는 본원에서 "입력 버퍼"로 지칭될 수도 있는 입력 데이터를 포함하고, 본원에서 "가중치 버퍼"로 칭해질 수도 있는 다른 라인 버퍼는 커널 가중치를 포함한다. 라인 버퍼는 로드/저장 유닛(105C)에 의해 BaSRAM(150)으로부터 채워진다. 데이터는, 각각의 라인 버퍼가 자신의 미리 결정된 용량에 도달할 때까지, 각각의 라인 버퍼에 축적된다. 그 다음, 라인 버퍼 데이터는, 몇몇 실시형태에서, 섀도우 버퍼에 복사되고 뉴런(105F)에게 제공된다.
DNN 모듈(105)은 또한, 레지스터 인터페이스(105G), 프리페치 유닛(105A), 저장/복원 유닛(105E), 레이어 컨트롤러(105D), 및 레지스터 인터페이스(105G)를 포함하는, 그러나 이들로 제한되지는 않는 다수의 다른 컴포넌트를 포함할 수 있다. DNN 모듈(105)은, 몇몇 실시형태에서, 추가적인 또는 대안적인 컴포넌트를 포함할 수 있다.
DNN 모듈(105)은, 몇몇 구성에서, 다른 외부 컴퓨팅 컴포넌트와 연계하여 동작한다. 예를 들면, DNN 모듈(105)은, 몇몇 실시형태에서, 호스트 애플리케이션 프로세서 시스템 온 칩(host application processor system on chip)("호스트 SoC")(130)에 연결된다. DNN 모듈(105)은, 예를 들면, PCIe 인터페이스를 통해 호스트 SoC(130)에 연결될 수 있다. PCIe 엔드포인트(135)와 같은 적절한 PCIe 컴포넌트가 활용되어 이들 연결을 가능하게 할 수 있다.
호스트 SoC(130)는 DNN 모듈(105)에 대한 애플리케이션 프로세서로서 역할을 한다. 메인 오퍼레이팅 시스템, 애플리케이션, 및 보조 센서 프로세싱은 호스트 SoC(130)에 의해 수행된다. 호스트 SoC(130)는 또한, 이미지 데이터와 같은 입력 데이터를 DNN 모듈(105)에 제공하는 입력 데이터 소스(102), 예컨대 외부 카메라에 연결될 수 있다.
DDR DRAM(155)은 또한, 메인 시스템 메모리로서 사용될 수 있는 호스트 SoC(130)에 연결될 수 있다. 이 메모리는 메모리 컨트롤러(145)를 통해 고 대역폭 패브릭(120)(예를 들면, PCIe 버스)을 통해 호스트 SoC(130)로부터 액세스 가능하다. 고 대역폭 패브릭(120)은, 양방향 직접 메모리 액세스(direct memory access; "DMA") 작은 메시징 트랜잭션 및 더 큰 DMA 트랜잭션을 제공한다. 브리지(115) 및 저 대역폭 패브릭(110)은 서브 모듈 구성 및 다른 기능을 위해 DNN 모듈(105)을 호스트 SoC(130)에 연결할 수 있다.
DNN 모듈(105)은, 메인 메모리(155)로 그리고 메인 메모리(155)로부터 데이터를 이동시키도록 구성되는 DMA 엔진(105B)을 포함할 수 있다. DMA 엔진(105B)은, 몇몇 실시형태에서, 두 개의 채널을 갖는다. 한 채널은 동작 디스크립터를 페치하는 것에 전용되고 다른 채널은 M2M 동작에 전용된다. DMA 디스크립터는 M2M 디스크립터에 임베딩될 수 있다. 이러한 맥락에서 디스크립터는, 메모리의 콘텐츠를 이동시키기 위해 사용되는 DMA 디스크립터이며, 상기에서 설명되는 동작 디스크립터와 혼동되지 않아야 한다.
로컬의 BaSRAM 메모리(150)를 오프로드하기 위해, 그리고 입력 데이터 및 가중치 데이터를 위한 더 많은 공간을 제공하기 위해, 활성화 출력은 옵션 사항으로(optionally) DDR 메모리(155)로 직접적으로 스트리밍될 수 있다. DDR 메모리(155)로 데이터를 스트리밍할 때, DNN 모듈(105)은 고 대역폭 패브릭(120) 상에서 버스트 트랜잭션을 위한 충분한 데이터를 축적할 것이고, 뉴런(105F)에 대한 백프레셔(backpressure)를 최소화하기에 충분한 트랜잭션을 버퍼링할 것이다. DNN 모듈(105)의 동작에 관한 추가적인 세부 사항은 하기에서 제공될 것이다.
도 2a 및 도 2b는, 하나의 실시형태에 따른, 활성화 데이터를 압축하기 위한 DNN 모듈(105)의 구성 및 동작의 양태를 도시하는 컴퓨팅 시스템 아키텍쳐 도면이다. 도 2a에 도시되고 상기에서 간략히 논의되는 바와 같이, DNN 모듈(105)은 하나 이상의 뉴런(105F) 및 압축 유닛(200)을 포함한다. 압축 유닛(200)은, 몇몇 실시형태에서, 로드/저장 유닛(105C)에 의해 구현되지만, 그러나, 다른 실시형태에서는, 다른 방식으로 구현될 수도 있을 것이다.
압축 유닛(200)은, 뉴런(105F) 중 하나 이상에 의해 생성되는 활성화 데이터의 압축되지 않은 청크(202)를 수신할 수 있다. 데이터의 압축되지 않은 청크(202)는, 몇몇 실시형태에서, 64 바이트와 같은 고정된 수의 바이트를 포함한다.
압축 유닛(200)은 데이터의 압축되지 않은 청크(202)를 압축하여 활성화 데이터의 압축된 청크(204)를 생성할 수 있다. 그 다음, 활성화 데이터의 압축된 청크(204)는 메모리(206)에 저장될 수 있다. 예를 들면, 활성화 데이터의 압축된 청크(204)는 애플리케이션 호스트에 의해 제공되는 LPDDR4 메모리(155)에 저장될 수 있거나 또는 DNN 모듈(105)에 의해 제공되는 BASRAM(150)에 저장될 수 있다. 하기에서 더 상세히 개시되는 바와 같이, 본원에서 개시되는 기술은, LPDDR4 메모리(155) 또는 BASRAM(150)으로부터 압축된 또는 압축 해제된 활성화 데이터를 저장 또는 검색할(retrieving) 때 메모리 버스의 활용을 감소시키기 위해 압축 및 압축 해제를 활용할 수 있다. 이들 기술에 관한 추가적인 세부 사항은 도 2a 내지 도 9와 관련하여 하기에서 논의된다.
도 2b에서 예시되는 바와 같이, 압축 유닛(200)은 데이터의 압축된 출력 청크(204)의 마스크 부분(208) 및 데이터 부분(210)을 생성할 수 있다. 압축된 출력 청크(204)의 마스크 부분(208)은, 데이터의 압축되지 않은 청크(202) 내의 고정된 수의 바이트와 동등한 수의 비트를 포함한다. 예를 들면, 데이터의 압축되지 않은 청크(202)가 64 바이트의 데이터를 포함하면, 압축된 출력 청크(204)의 마스크 부분(208)은 64 비트(즉, 8 바이트)를 포함할 것이다.
압축된 출력 청크(204)의 마스크 부분(208)에서의 각각의 비트는, 몇몇 실시형태에서, 데이터의 압축되지 않은 청크(202)에서의 바이트에 대응한다. 예를 들면, 마스크 부분(208)의 비트 1은 데이터의 압축되지 않은 청크(202)에서의 첫 번째 바이트에 대응할 수 있고, 마스크 부분(208)의 비트 2는 데이터의 압축되지 않은 청크(202)에서의 두 번째 바이트에 대응할 수 있고, 계속 그런 식이다.
압축 유닛(200)은, 압축된 출력 청크(204)의 마스크 부분(208)에서의 각각의 비트를 논리 0으로 설정하는데, 여기서 데이터의 압축되지 않은 청크(202)에서의 대응 바이트는 제로 바이트이다. 압축 유닛(200)은 또한, 압축된 출력 청크(204)의 마스크 부분(208)에서의 각각의 비트를 논리 1로 설정하는데, 여기서 데이터의 압축되지 않은 청크(202)의 대응하는 바이트는 넌제로 바이트이다. 이러한 방식으로, 압축된 출력 청크(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)에서의 추가 비트의 수를, 만약 있다면, 결정할 수 있다. 상기에서 주어지는 예에서, 예를 들면, 네 개의 추가 비트가 넌제로 바이트를 저장하는데 이용 가능하다(즉, 192 mod 47 = 4 비트). 압축 유닛(200)은, 넌제로 바이트 중 하나 이상을 잘라내기 이전에 이들 추가 비트를, 데이터의 압축되지 않은 청크(204)에서의 넌제로 바이트 중 하나 이상에 할당할 수 있다. 예를 들면, 압축 유닛(200)은 이들 추가 비트를 압축된 출력 청크(204)의 데이터 부분(210)의 처음 N 개의 바이트에 할당할 수도 있을 것이다.
그 다음, 압축 유닛(200)은, 데이터의 압축되지 않은 청크(202)에서의 넌제로 바이트를, 각각의 넌제로 바이트를 저장하기 위해 데이터 부분(210)에서 이용 가능한 결정된 비트의 수(즉, 상기에서 주어지는 예에서는 4)로 잘라낸다. 압축 유닛(200)은, 하나의 실시형태에서, 데이터 부분(210)에서 이용 가능한 비트 수 이내로 적합되도록 넌제로 바이트의 최하위 비트("LSB")를 잘라낸다. 다른 실시형태에서, 압축 유닛(200)은 넌제로 바이트의 MSB를 잘라낸다. 그 다음, 압축 유닛(200)은 잘려진 넌제로 바이트를 압축된 출력 청크(204)의 데이터 부분(210)에 저장한다. 그 다음, 마스크 부분(208) 및 데이터 부분(210)을 포함하는 압축된 출력 청크(204)는, 예를 들면, DNN 모듈(105)의 온 보드 메모리 또는 DNN 모듈(105)의 애플리케이션 호스트의 오프 보드 메모리로 출력될 수 있다. 상기에서 설명되는 압축 프로세스에 관한 추가적인 세부 사항은 도 3 및 4와 관련하여 하기에서 제공될 것이다.
상기에서 간략하게 논의되는 바와 같이, 압축된 출력 청크(204)의 마스크 부분(208)에서의 두 개 이상의 비트는, 몇몇 실시형태에서, 데이터의 압축되지 않은 청크(202)에서의 바이트에 대응한다. 이들 실시형태에서, 압축된 출력 청크(204)의 마스크 부분(208)에서의 비트는, 압축되지 않은 청크(202)에서의 대응하는 바이트일 뿐만 아니라 또한 그것의 근사 크기를 나타낼 수 있다. 예를 들면, 그리고 제한 없이, 마스크 부분(208)은 데이터의 압축되지 않은 청크(202)에서 바이트당 2 비트를 포함할 수도 있을 것이다. 이 예에서, 00은, 데이터의 압축되지 않은 청크(202)에서의 대응하는 넌제로 값의 MSB가 제로이다는 것을 나타낼 수 있고, 01은 MSB가 64 미만이다는 것을 나타낼 수 있고, 10은 MSB가 128 미만이다는 것을 나타낼 수 있고, 11은 MSB가 128을 초과한다는 것을 나타낼 수 있다. 이들 값은, 데이터의 압축되지 않은 청크(202)에서의 바이트 중 어떤 MSB가 잘려질 수 있는지를 식별하는데 활용될 수 있다. 예를 들면, 특정한 바이트의 MSB가 64 미만이면, 데이터 손실 없이 상위 두 개의 MSB가 잘려질 수 있다.
도 3은, 하나의 실시형태에 따른, 압축되지 않은 활성화 데이터의 예시적인 청크(202)를 참조하여 압축되지 않은 활성화 데이터의 청크(202)를 압축하기 위한 DNN 모듈(105)의 동작의 양태를 예시하는 데이터 구조도이다. 도 3에서 도시되는 예에서, 활성화 데이터의 압축되지 않은 청크(202)는 64 바이트 길이이다. 압축되지 않은 활성화 데이터의 청크(202)의 바이트 0, 1 및 63은 제로 바이트이다. 압축되지 않은 활성화 데이터의 청크(202)의 바이트 2, 3 및 62는 넌제로 바이트인데, 각각, 값 113, 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)로부터 각각의 넌제로 바이트(즉, 192/47 = 4 나머지 4)를 저장하기 위해 네 개의 비트가 데이터 부분(210)에서 이용 가능하다.
상기에서 또한 논의되는 바와 같이, 압축 유닛(200)은 또한, 데이터의 압축되지 않은 청크(202)의 넌제로 바이트를 저장하는데 이용 가능한 압축된 출력 청크(204)의 데이터 부분(210)에서의 추가 비트의 수를, 만약 있다면, 결정할 수 있다. 도 3에서 도시되는 예에서, 예를 들면, 네 개의 추가 비트가 넌제로 바이트를 저장하는데 이용 가능하다(즉, 192 mod 47 = 4 비트). 압축 유닛(200)은, 넌제로 바이트 중 하나 이상을 잘라내기 이전에 이들 추가 비트를, 데이터의 압축되지 않은 청크(204)에서의 넌제로 바이트 중 하나 이상에 할당할 수 있다. 도 3에서 도시되는 예에서, 네 개의 추가 비트 중 하나가 압축되지 않은 활성화 데이터의 청크(202)에서의 처음 네 개의 넌제로 바이트의 각각에 할당되었다. 결과적으로, 활성화 데이터의 압축되지 않은 청크(202)의 처음 네 개의 바이트는 4가 아닌 5 비트로 잘려질 것이다.
그 다음, 압축 유닛(200)은 데이터의 압축되지 않은 청크(202) 내의 넌제로 바이트를, 각각의 넌제로 바이트를 저장하기 위해 데이터 부분(210)에서 이용 가능한 결정된 비트의 수(즉, 처음 4 개의 넌제로 바이트에 대해 5 비트 상기 주어지는 예에서는 4)로 잘라낸다. 도 3에서 도시되는 예에서, 압축 유닛(200)은, 하나의 실시형태에서, 데이터 부분(210)에서 이용 가능한 비트 수(즉, 이 예에서는 4) 이내로 적합되도록 넌제로 바이트의 LSB를 잘라낸다. 다른 실시형태에서, 압축 유닛(200)은 넌제로 바이트의 MSB를 잘라낸다.
도 3에서 도시되는 바와 같이, 활성화 데이터의 압축되지 않은 청크(202)의 두 번째 바이트는 값 113(01110001)을 저장한다. 활성화 데이터의 압축되지 않은 청크(202)에서 처음 네 개의 넌제로 값에 5 비트가 할당되었기 때문에, 이 값의 세 개의 LSB가 잘려져서 활성화 데이터의 압축된 청크(210)에서의 첫 번째 위치에 값 01110이 저장되는 것으로 나타난다. 활성화 데이터의 압축되지 않은 청크(202)의 세 번째 바이트는 값 121(01111001)을 저장한다. 활성화 데이터의 압축되지 않은 청크(202)에서 처음 네 개의 넌제로 값에 5 비트가 할당되었기 때문에, 이 값의 세 개의 LSB가 잘려져서 활성화 데이터의 압축된 청크(210)의 두 번째 위치에 값 01111이 저장되는 것으로 나타난다.
도 3에서 도시되는 예에서, 활성화 데이터의 압축되지 않은 청크(202)의 62 번째 바이트는 값 2(00000010)를 저장한다. 활성화 데이터의 압축되지 않은 청크(202)에서의 5 번째 내지 63 번째 넌제로 값에 4 비트가 할당되었기 때문에, 이 값의 네 개의 LSB가 잘려져서 활성화 데이터의 압축된 청크(210)의 62 번째 위치에 값 0000이 저장되는 것으로 나타난다. 활성화 데이터의 압축되지 않은 청크(202)에서의 다른 넌제로 바이트는 잘려져서 활성화 데이터의 압축된 청크(204)의 데이터 부분(210)에서 유사한 방식으로 저장될 수 있다.
일단 압축되지 않은 활성화 데이터의 청크(202)의 넌제로 바이트의 모두가 데이터 부분(203)에 저장되면, 압축 유닛(200)은, 마스크 부분(208) 및 데이터 부분(210)을 포함하는 압축된 출력 청크(204)를, 예를 들면, DNN 모듈(105)의 온 보드 메모리 또는 DNN 모듈(105)의 애플리케이션 호스트의 오프 보드 메모리에 저장한다. 압축 프로세스에 관한 추가적인 세부 사항은 도 4와 관련하여 하기에서 제공된다.
도 4는, 본원에서 개시되는 하나의 실시형태에 따른, 압축되지 않은 활성화 데이터의 청크(202)를 압축하기 위한 DNN 모듈(105)의 동작의 양태를 나타내는 루틴(400)을 예시하는 루틴(400)을 도시하는 흐름도이다. 도 4, 및 다른 도면과 관련하여 본원에서 설명되는 논리적 동작은, (1) 컴퓨팅 디바이스 상에서 실행되는 일련의 컴퓨터 구현 행위(act) 또는 프로그램 모듈로서 및/또는 (2) 컴퓨팅 디바이스 내의 인터커넥트된 머신 논리 회로 또는 회로 모듈로서 구현될 수 있다는 것이 인식되어야 한다.
본원에서 개시되는 기술의 특정한 구현예는, 컴퓨팅 디바이스의 성능 및 다른 요건에 의존하는 선택의 문제이다. 따라서, 본원에서 설명되는 논리적 동작은, 상태, 동작, 구조적 디바이스, 행위, 또는 모듈로서 다양하게 지칭된다. 이들 상태, 동작, 구조적 디바이스, 행위 및 모듈은 하드웨어, 소프트웨어, 펌웨어, 특수 목적 디지털 논리, 및 이들의 임의의 조합으로 구현될 수 있다. 도면에 도시되고 본원에서 설명되는 것보다 더 많은 또는 더 적은 동작이 수행될 수 있다는 것이 인식되어야 한다. 이들 동작은 또한, 본원에서 설명되는 것과는 상이한 순서로 수행될 수 있다.
루틴(400)은 동작 402에서 시작하는데, 여기서 압축 유닛(200)은 활성화 데이터의 압축되지 않은 청크(202)에서의 넌제로 바이트의 수를 결정한다. 그 다음, 루틴(400)은 동작 404로 진행하는데, 여기서 압축 유닛(200)은, 활성화 데이터의 압축되지 않은 청크(202)에서의 넌제로 바이트의 수가, 활성화 데이터의 압축된 청크(204)의 데이터 부분(210)에서 이용 가능한 바이트의 수보다 더 작거나 또는 동일한지를 결정한다. 활성화 데이터의 압축되지 않은 청크(202)의 넌제로 바이트는, 넌제로 바이트의 수가 활성화 데이터의 압축된 청크(204)의 데이터 부분(210)에서 이용 가능한 바이트의 수보다 더 작거나 또는 동일한 경우 압축될 필요가 없다. 따라서, 이 경우에 루틴(400)은 동작 408로 진행하는데, 여기서 넌제로 바이트는 잘려짐 없이 데이터 부분(210)에 저장된다.
활성화 데이터의 압축되지 않은 청크(202)에서의 넌제로 바이트의 수가, 활성화 데이터의 압축된 청크(204)의 데이터 부분(210)에서 이용 가능한 바이트의 수보다 더 크면, 루틴(400)은 동작 406로부터 동작 412로 진행한다. 동작 412에서, 압축 유닛(200)은 상기에서 설명되는 방식으로 활성화 데이터의 압축되지 않은 청크(202)의 넌제로 바이트를 저장하기 위해 이용 가능한 출력 데이터의 압축된 청크(204)의 데이터 부분(210)의 비트의 수를 결정한다. 그 다음, 루틴(400)은 동작 412로부터 동작 414로 진행한다.
동작 414에서, 압축 유닛(200)은, 데이터의 압축되지 않은 청크(202)의 넌제로 바이트를 저장하는데 이용 가능한 압축된 출력 청크(204)의 데이터 부분(210)에서 추가적인 비트의 수를, 만약 있다면, 결정한다. 상기에서 논의되는 바와 같이, 압축 유닛(200)은, 넌제로 바이트의 하나 이상을 자르기 이전에, 데이터의 압축되지 않은 청크(204)에서의 넌제로 바이트의 하나 이상에 이들 추가적인 비트를 할당할 수 있다. 이것은 동작 416에서 발생한다.
동작 416으로부터, 루틴(400)은 동작 418로 진행하는데, 여기서 압축 유닛(200)은, 활성화 데이터의 압축된 청크(204)의 마스크 부분(208)에서의 비트를, 활성화의 압축되지 않은 청크(202)에서의 대응하는 바이트가 넌제로인 논리 1로 설정한다. 압축 유닛(200)은 또한, 활성화 데이터의 압축된 청크(204)의 마스크 부분(208)에서의 비트를, 활성화의 압축되지 않은 청크(202)에서의 대응하는 바이트가 제로인 논리 0으로 설정한다.
동작 418로부터, 루틴(400)은, 그 다음, 동작 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)은 또한, 상기에서 설명되는 방식으로 압축된 활성화 데이터의 청크(204)를 압축 해제할 수 있는 압축 해제 유닛(500)을 포함할 수 있다.
예를 들면, 압축 해제 유닛(500)은, DNN 프로세서 내의 메모리 또는 애플리케이션 호스트의 메모리와 같은 스토리지(206)로부터 활성화 데이터의 압축된 청크(204)를 수신할 수 있다. 그 다음, 압축 해제 유닛(500)은, 압축된 청크(204)의 마스크 부분(208)에서의 논리적 참 비트의 수에 기초하여, 데이터의 압축된 청크(204)의 데이터 부분(210)에서의 넌제로 바이트의 수를 결정할 수 있다. 압축 해제 유닛(500)은 또한, 압축된 출력 청크(204)의 마스크 부분(208)에서의 논리적 참 비트의 위치에 기초하여, 데이터의 압축 해제된 청크(502)에서의 넌제로 바이트의 위치를 결정할 수 있다. 압축 해제 유닛(500)은, 유사한 방식으로, 데이터의 압축 해제된 청크(502)에서의 제로 바이트의 위치를 결정할 수 있다.
압축 해제 유닛(500)은 또한, 압축된 출력 청크(204)의 데이터 부분(210)에 잘려진 넌제로 바이트의 각각을 저장하기 위해 압축 유닛(200)에 의해 사용되는 비트의 수를 결정할 수 있다. 압축 해제 유닛(500)은 (마스크 부분(208)에 의해 나타내어지는 바와 같은) 데이터의 압축된 청크(204)에서의 넌제로 바이트의 수 및 압축 해제된 출력 청크(502)의 타겟 사이즈에 기초하여, 각각의 잘려진 넌제로 바이트를 저장하기 위해 사용되는 비트의 수를 결정할 수 있다.
상기에서 주어지는 예에서, 예를 들면, 데이터의 압축된 청크(204)의 데이터 부분이 24 바이트 폭(즉, 192 비트)이고 데이터의 압축되지 않은 청크(202)에 47 넌제로 바이트가 있는 경우, 이것은, 데이터의 압축되지 않은 청크(202)의 각각의 잘려진 넌제로 바이트를 데이터 부분(210)에 저장하기 위해 압축 유닛(200)이 4 비트를 활용하였다는 것을 의미한다. 압축 해제 유닛(500)은 또한, 압축된 출력 청크(204)의 데이터 부분(210)에 저장되는 잘려진 넌제로 바이트의 하나 이상에 압축 유닛(200)이 할당한 추가 비트의 수를, 만약 있다면, 결정할 수 있다.
논리 0인 압축된 출력 청크(204)의 마스크 부분(208)에서의 각각의 비트 위치에 대해, 압축 해제 유닛(500)은 압축 해제된 출력 청크(502)의 대응하는 위치로 제로 바이트를 삽입한다. 논리 1인 마스크 부분(208)에서의 각각의 위치에 대해, 압축 해제 유닛(500)은, 압축된 입력 청크(204)의 대응하는 위치로부터의 잘려진 넌제로 바이트를, 압축된 출력 청크(204)의 압축 동안 잘려지는 비트의 수와 동등한 수의 제로 비트와 함께 압축 해제된 출력 청크(502)의 대응하는 위치 안으로 삽입한다. 압축 동안 어떤 비트가 잘려졌는지에 따라 잘려진 넌제로 바이트의 LSB 또는 MSB 안으로 제로 비트가 삽입될 수 있다.
상기에서 언급되는 바와 같이, 압축 해제 유닛(500)은 또한, 몇몇 실시형태에서, 압축 해제된 출력 청크(502)에 저장되는 잘려진 넌제로 바이트의 하나 이상에 오프셋(예를 들면, 00000001)을 추가한다. 예를 들면, 압축 이후 제로 바이트가 되는 데이터의 압축되지 않은 청크(202)의 넌제로 바이트에 오프셋이 추가될 수 있다. 이러한 방식으로, 넌제로 바이트는 압축 해제시 제로 바이트가 되지 않을 것이다.
도 6은, 하나의 실시형태에 따른, 압축된 활성화 데이터의 예시적인 청크를 참조하여 활성화 데이터를 압축 해제하기 위한 DNN 모듈(105)의 동작의 양태를 예시하는 데이터 구조도이다. 도 6에서 도시되는 예는, 도 3과 관련하여 상기에서 설명되는 예에서 생성되는 압축 활성화 데이터(204)의 압축 해제를 예시한다. 도 6에서 도시되는 바와 같이, 마스크 부분(208)은 비트 0, 1 및 63에 제로를 저장하고, 비트 2, 3 및 62에 1을 저장한다. 데이터 부분(210)은, 도 6에서 도시되는 방식으로 값 01110, 01111, 및 0000을 저장한다.
압축 해제 유닛(500)이 상기에서 설명되는 프로세싱 동작을 수행함에 따라, 마스크 부분(208)의 첫 번째 비트 위치에서의 논리 0은, 압축 해제 유닛(500)으로 하여금 활성화 데이터의 압축 해제된 청크(502)의 첫 번째 바이트로서 제로 바이트를 저장하게 할 것이다. 유사하게, 마스크 부분(208)의 두 번째 비트 위치에서의 논리 0은 압축 해제 유닛(500)으로 하여금 데이터의 압축 해제된 청크(502)의 두 번째 바이트로서 제로 바이트를 저장하게 할 것이다.
마스크 부분(208)의 세 번째 위치에서의 논리 1은, 압축 해제 유닛(500)으로 하여금, 데이터 부분(210)의 처음 5 비트(즉, 01110)를 검색하게 하고 그리고 세 개의 LSB를 삽입하여, 활성화 데이터의 압축 해제된 청크(502)의 세 번째 바이트로서 값 01110000(112)이 저장되는 것으로 나타나게 할 것이다. 유사하게, 마스크 부분(208)의 네 번째 비트 위치에서의 논리 1은, 압축 해제 유닛(500)으로 하여금, 데이터 부분(210)의 두 번째 5 비트(즉, 01111)를 검색하게 하고 그리고 세 개의 LSB를 삽입하여, 활성화 데이터의 압축 해제된 청크(502)의 네 번째 바이트로서 값 01111000(120)이 저장되는 것으로 나타나게 할 것이다.
마스크 부분(208)의 63 번째 비트 위치에서의 논리 1은, 압축 해제 유닛(500)으로 하여금, 데이터 부분(210)의 마지막 4 비트(즉, 0000)를 검색하게 하고 그리고 네 개의 제로 LSB를 삽입하여, 활성화 데이터의 압축 해제된 청크(502)의 63 번째 바이트 위치에서 제로의 값이 저장되는 것으로 나타나게 할 것이다. 마스크 부분(208)의 마지막 비트 위치에서의 논리 0은, 압축 해제 유닛(500)으로 하여금 데이터의 압축 해제된 청크(502)의 마지막 바이트로서 제로 바이트를 저장하게 할 것이다.
상기에서 논의되는 바와 같이, 압축 해제 유닛(500)은 활성화 데이터의 압축 해제된 청크(502)에서의 소정의 바이트에 오프셋 값을 추가할 수 있다. 예를 들면, 압축 해제 유닛(500)은 00000001과 같은 오프셋 값을, 활성화 데이터의 압축되지 않은 청크(202)에서 넌제로였고 활성화 데이터의 압축된 청크(204)에서 제로 바이트로 압축되었던 바이트에 추가할 수 있다.
도 6에서 도시되는 예에서, 데이터 부분(210)에서의 마지막 바이트는, 활성화 데이터의 압축되지 않은 청크(202)에서 넌제로(즉 2)였지만, 그러나 활성화 데이터의 압축된 청크(504) 제로가 되었다. 따라서, 압축 해제 유닛(500)은 이 바이트에 00000001과 같은 오프셋 값을 추가할 수 있고, 그에 의해, 활성화 데이터의 압축되지 않은 청크(202)에서의 넌제로 바이트가 제로 바이트로 압축되지 않을 것을 보장할 수 있다.
도 7은, 본원에서 개시되는 하나의 실시형태에 따른, 활성화 데이터를 압축 해제하기 위한 DNN 모듈(105)의 동작의 양태를 예시하는 루틴(700)을 도시하는 흐름도이다. 루틴(700)은 동작 702)에서 시작하는데, 여기서, 압축 해제 유닛(500)은 활성화 데이터의 압축 해제된 청크(204)의 마스크 부분(208)을 활용하여 넌제로 바이트의 수 및 활성화 데이터의 압축 해제된 청크(502)에서의 그들의 위치를 결정한다.
루틴(700)은, 동작 702로부터 동작 704로 진행하는데, 여기서 압축 해제 유닛(500)은, 활성화 데이터의 압축된 청크(204)에서의 넌제로 바이트의 수가, 활성화 데이터의 압축 해제된 청크(502)의 바이트 수보다 더 작거나 또는 동일한지를 결정한다. 상기에서 논의되는 바와 같이, 활성화 데이터의 압축된 청크(204)의 넌제로 바이트는, 넌제로 바이트의 수가, 활성화 데이터의 압축 해제된 청크(502)의 바이트의 수보다 더 작거나 또는 동일한 경우, 압축 해제될 필요가 없다. 따라서, 이 경우, 루틴(700)은 동작 708로 진행하는데, 여기서 활성화 데이터의 압축된 청크(204)에서의 넌제로 바이트는, 수정 없이, 활성화 데이터의 압축 해제된 청크(502)에 저장된다.
활성화 데이터의 압축된 청크(504)에서의 넌제로 바이트의 수가 활성화 데이터의 압축 해제된 청크(502)에서의 바이트의 수보다 더 큰 경우, 루틴(700)은 동작 706로부터 동작 712로 진행한다. 동작 712에서, 압축 해제 유닛(500)은, 활성화 데이터의 압축되지 않은 청크(202)의 각각의 잘려진 넌제로 바이트를 저장하기 위해 압축 유닛(200)이 사용한 출력 데이터의 압축된 청크(204)의 데이터 부분(210)의 비트의 수를 결정한다. 그 다음, 루틴(700)은 상기에서 설명되는 방식으로 동작 712로부터 동작 714로 진행한다.
동작 714에서, 압축 해제 유닛(500)은, 데이터의 압축되지 않은 청크(202)의 넌제로 바이트를 저장하기 위해 사용되었던 추가 비트의 수를, 만약 있다면, 결정한다. 압축 해제 유닛(500)은, 상기에서 설명되는 방식으로, 데이터의 압축 해제된 청크(502)에서의 넌제로 바이트의 하나 이상에 이들 추가 비트를 할당할 수 있다. 이것은 동작 716에서 발생한다.
동작 716으로부터, 루틴(700)은 동작 718로 진행하는데, 여기서 압축 해제 유닛(500)은, 논리 0인 압축된 출력 청크(204)의 마스크 부분(208)에서의 각각의 비트 위치에 대한 압축 해제된 출력 청크(502)의 대응하는 위치에 제로 바이트를 삽입한다. 논리 1인 압축된 출력 청크(204)의 마스크 부분(208)에서의 각각의 비트 위치에 대해, 압축 해제 유닛(500)은, 압축된 입력 청크(204)의 대응하는 위치로부터의 잘려진 넌제로 바이트를, 압축된 출력 청크(204)의 압축 동안 잘려지는 비트의 수와 동등한 수의 제로 비트와 함께 압축 해제된 출력 청크(502)의 대응하는 위치 안으로 삽입한다. 압축 동안 어떤 비트가 잘려졌는지에 따라 잘려진 넌제로 바이트의 LSB 또는 MSB 안으로 제로 비트가 삽입될 수 있다. 이것은 동작 720에서 발생한다.
압축 해제 유닛(500)은 또한, 몇몇 실시형태에서, 압축 해제된 출력 청크(502)에 저장되는 잘려진 넌제로 바이트의 하나 이상에 오프셋 값을 추가할 수 있다. 예를 들면, 압축 이후 제로 바이트가 되는 데이터의 압축되지 않은 청크(202)의 넌제로 바이트에 오프셋이 추가될 수 있다. 이러한 방식으로, 넌제로 바이트는 압축 및 압축 해제시 제로 바이트가 되지 않을 것이다. 다른 실시형태에서, 활성화 데이터의 압축 해제된 청크(502)에서의 모든 바이트에 오프셋이 추가될 수 있다.
그 다음, 압축 해제 유닛(500)은, 압축 해제된 출력 청크(502)를, 뉴런(105F)에 의한 사용을 위해DNN 모듈(105)의 애플리케이션 호스트의 오프 보드 메모리 또는 DNN 모듈(105)의 온 보드 메모리에 저장한다. 동작 708 및 720으로부터, 루틴(700)은 동작 710으로 진행하는데, 그곳에서 루틴은 종료된다.
도 8은, 하나의 실시형태에 따른, 본원에서 제시되는 DNN 모듈(105)에 대한 애플리케이션 호스트로서 작용할 수 있는 컴퓨팅 디바이스에 대한 예시적인 컴퓨터 하드웨어 및 소프트웨어 아키텍쳐를 도시하는 컴퓨터 아키텍쳐 도면이다. 특히, 도 8에서 예시되는 아키텍쳐는, 서버 컴퓨터, 이동 전화, 전자 리더기, 스마트폰, 데스크탑 컴퓨터, AR/VR 디바이스, 태블릿 컴퓨터, 랩탑 컴퓨터, 또는 DNN 모듈(105)과 함께 사용하기에 적절한 다른 타입의 컴퓨팅 디바이스를 구현하도록 활용될 수 있다.
도 8에서 예시되는 컴퓨터(800)는, 중앙 프로세싱 유닛(802)(central processing unit; "CPU"), 랜덤 액세스 메모리(806)(random-access memory; "RAM") 및 리드 온리 메모리(read-only memory; "ROM")(808)를 포함하는 시스템 메모리(804), 및 메모리(804)를 CPU(802)에 커플링하는 시스템 버스(810)를 포함한다. 예컨대 기동 동안, 컴퓨터(800) 내의 엘리먼트 사이의 정보 전송을 돕는 기본 루틴을 포함하는 기본 입력/출력 시스템(basic input/output system; "BIOS" 또는 "펌웨어")은 ROM(808)에 저장될 수 있다. 컴퓨터(800)는, 오퍼레이팅 시스템(822), 애플리케이션 프로그램, 및 다른 타입의 프로그램을 저장하기 위한 대용량 스토리지 디바이스(812)를 더 포함한다. 대용량 스토리지 디바이스(812)는, 또한 다른 타입의 프로그램 및 데이터를 저장하도록 구성될 수 있다.
대용량 스토리지 디바이스(812)는, 버스(810)에 연결되는 대용량 스토리지 컨트롤러(도시되지 않음)를 통해 CPU(802)에 연결된다. 대용량 스토리지 디바이스(812) 및 그것의 관련된 컴퓨터 판독 가능 매체는, 컴퓨터(800)에 불휘발성 스토리지를 제공한다. 비록 본원에서 포함되는 컴퓨터 판독 가능 매체의 설명이, 하드 디스크, CD-ROM 드라이브, DVD-ROM 드라이브, 또는 USB 스토리지 키(storage key)와 같은 대용량 스토리지 디바이스를 언급하지만, 컴퓨터 판독 가능 매체는, 컴퓨터(800)에 의해 액세스될 수 있는 임의의 이용 가능한 컴퓨터 저장 매체 또는 통신 매체일 수 있다는 것이 기술 분야의 숙련된 자에 의해 인식되어야 한다.
통신 매체는, 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파 또는 다른 전송 메커니즘과 같은 변조된 데이터 신호에서의 다른 데이터를 포함하고 임의의 전달 매체를 포함한다. 용어 "변조된 데이터 신호"는, 신호에 정보를 인코딩하는 방식으로 자신의 특성 중 하나 이상이 변경 또는 설정된 신호를 의미한다. 제한이 아닌 예로서, 통신 매체는, 유선 네트워크 또는 직접 유선 연결과 같은 유선 매체, 및 음향, 무선 주파수, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함한다. 상기의 것 중 임의의 것의 조합이 또한 컴퓨터 판독 가능 매체의 범위 내에 포함되어야 한다.
제한이 아닌 예로서, 컴퓨터 저장 매체는, 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 불휘발성의 착탈식 및 비착탈식 매체를 포함할 수 있다. 예를 들면, 컴퓨터 저장 매체는, RAM, ROM, EPROM, EEPROM, 플래시 메모리 또는 다른 솔리드 스테이트 메모리 기술, CD-ROM, 디지털 다기능 디스크(digital versatile disk; "DVD"), HD-DVD, BLU-RAY, 또는 다른 광학 스토리지, 자기 카세트, 자기 테이프, 자기 디스크 스토리지 또는 다른 자기 스토리지 디바이스, 또는 소망되는 정보를 저장하기 위해 사용될 수 있고 컴퓨터(800)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만, 그러나 이들로 제한되지는 않는다. 청구범위의 목적을 위해, 어구 "컴퓨터 저장 매체" 및 그 변형어는, 파 또는 신호 그 자체 또는 통신 매체를 포함하지 않는다.
다양한 구성에 따르면, 컴퓨터(800)는, 네트워크(820)와 같은 네트워크를 통한 원격 컴퓨터에 대한 논리적 연결을 사용하여 네트워크 환경에서 동작할 수 있다. 컴퓨터(800)는 버스(810)에 연결되는 네트워크 인터페이스 유닛(816)을 통해 네트워크(820)에 연결될 수 있다. 네트워크 인터페이스 유닛(816)은 또한, 다른 타입의 네트워크 및 원격 컴퓨터 시스템에 연결하기 위해 활용될 수 있다는 것이 인식되어야 한다. 컴퓨터(800)는 또한, 키보드, 마우스, 터치 입력, 전자 스타일러스(도 8에서 도시되지 않음), 또는 물리적 센서 예컨대 비디오 카메라를 비롯한, 같은 다수의 다른 디바이스로부터 입력을 수신하고 프로세싱하기 위한 입력/출력 컨트롤러(818)를 포함할 수 있다. 유사하게, 입력/출력 컨트롤러(818)는 디스플레이 스크린 또는 다른 타입의 출력 디바이스(도 8에서 또한 도시되지 않음)에 출력을 제공할 수 있다.
본원에서 설명되는 소프트웨어 컴포넌트는, CPU(802)에 로딩되어 실행될 때, CPU(802) 및 전체 컴퓨터(800)를 범용 컴퓨팅 디바이스로부터, 본원에서 제시되는 기능성을 용이하게 하도록 커스터마이징되는 특수 목적 컴퓨팅 디바이스로 변환할 수 있다는 것이 인식되어야 한다. CPU(802)는, 임의의 수의 상태를 개별적으로 또는 집합적으로 가정할 수 있는, 임의의 수의 트랜지스터 또는 다른 이산 회로 엘리먼트로부터 구성될 수 있다. 더 구체적으로, CPU(802)는 본원에서 개시되는 소프트웨어 모듈 내에 포함되는 실행 가능 명령어에 응답하여 유한 상태 머신으로서 동작할 수 있다. 이들 컴퓨터 실행 가능 명령어는, CPU(802)가 상태 사이에서 어떻게 전이하는지를 명시하는 것에 의해 CPU(802)를 변환할 수 있고, 그에 의해, CPU(802)를 구성하는 트랜지스터 또는 다른 별개의 하드웨어 엘리먼트를 변환할 수 있다.
본원에서 제시되는 소프트웨어 모듈을 인코딩하는 것은, 또한, 본원에서 제시되는 컴퓨터 판독 가능 매체의 물리적 구조를 변환할 수 있다. 물리적 구조의 특정한 변환은, 이 설명의 상이한 구현예에서, 다양한 요인에 의존한다. 그러한 인자의 예는, 컴퓨터 판독 가능 매체를 구현하기 위해 사용되는 기술, 컴퓨터 판독 가능 매체가 주 스토리지로서 특성 묘사되는지 또는 보조 스토리지로서 특성 묘사되는지의 여부, 및 등등을 포함하지만, 그러나 이들로 제한되지는 않는다. 예를 들면, 컴퓨터 판독 가능 매체가 반도체 기반의 메모리로서 구현되는 경우, 본원에서 개시되는 소프트웨어는, 반도체 메모리의 물리적 상태를 변환하는 것에 의해 컴퓨터 판독 가능 매체 상에 인코딩될 수 있다. 예를 들면, 소프트웨어는 트랜지스터, 커패시터, 또는 반도체 메모리를 구성하는 다른 별개의 회로 엘리먼트의 상태를 변환할 수 있다. 소프트웨어는 또한, 데이터를 그러한 컴포넌트 상에 저장하기 위해 그러한 컴포넌트의 물리적 상태를 변환할 수 있다.
다른 예로서, 본원에서 개시되는 컴퓨터 판독 가능 매체는 자기 또는 광학 기술을 사용하여 구현될 수 있다. 그러한 구현예에서, 본원에서 제시되는 소프트웨어는, 자기 또는 광학 매체 내에서 소프트웨어가 인코딩될 때, 자기 또는 광학 매체의 물리적 상태를 변환할 수 있다. 이들 변환은, 주어진 자기 매체 내에서의 특정한 위치의 자기적 특성을 변경하는 것을 포함할 수 있다. 이들 변환은 또한, 주어진 광학 매체 내에서의 특정 위치의 물리적 피쳐 또는 특성을 변경하여, 그들 위치의 광학적 특성을 변경하는 것을 포함할 수 있다. 본 설명의 범위 및 사상을 벗어나지 않으면서 물리적 매체의 다른 변환도 가능한데, 전술한 예는 본 논의를 용이하게 하기 위해서만 제공된다.
상기의 것에 비추어, 본원에서 제시되는 소프트웨어 컴포넌트를 저장하고 실행하기 위해, 많은 타입의 물리적 변환이 컴퓨터(800)에서 발생한다는 것이 인식되어야 한다. 컴퓨터(800)에 대한 도 8에서 도시되는 아키텍쳐, 또는 유사한 아키텍쳐는, 핸드헬드 컴퓨터, 비디오 게임 디바이스, 임베딩형 컴퓨터 시스템(embedded computer system), 모바일 디바이스 예컨대 스마트폰, 태블릿, 및 AR/VR 디바이스, 및 기술 분야의 숙련된 자에게 알려져 있는 다른 타입의 컴퓨팅 디바이스를 비롯한, 다른 타입의 컴퓨팅 디바이스를 구현하도록 활용될 수 있다는 것이 또한 인식되어야 한다. 컴퓨터(800)는 도 8에서 도시되는 모든 컴포넌트를 포함하지 않을 수도 있거나, 도 8에 명시적으로 도시되지 않는 다른 컴포넌트를 포함할 수 있거나, 또는 도 8에서 도시되는 것과 완전히 상이한 아키텍쳐를 활용할 수 있다는 것이 또한 고려된다.
도 9는, 본원에서 제시되는 다양한 실시형태에 따른, 개시된 기술의 양태가 구현될 수 있는 분산 네트워크 컴퓨팅 환경(900)을 예시하는 네트워크 도면이다. 도 9에서 도시되는 바와 같이, 하나 이상의 서버 컴퓨터(900A)는, 통신 네트워크(820)(이것은, 고정된 유선 또는 무선 LAN, WAN, 인트라넷, 엑스트라넷, 피어 투 피어 네트워크(peer-to-peer network), 가상의 사설 네트워크, 인터넷, 블루투스, 통신 네트워크, 독점적(proprietary) 저전압 통신 네트워크, 또는 다른 통신 네트워크 중 어느 하나일 수도 있거나, 또는 이들의 조합일 수도 있음)를 통해, 태블릿 컴퓨터(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)의 각각은, 하나 이상의 컴퓨팅 애플리케이션 또는 단말 세션 예컨대 웹 브라우저(도 9에서 도시되지 않음), 또는 다른 그래픽 유저 인터페이스(도 9에서 도시되지 않음), 또는 모바일 데스크탑 환경(도 9에서 도시되지 않음)을 지원하여 서버 컴퓨터(900A)에 대한 액세스를 획득하도록 동작 가능한 오퍼레이팅 시스템을 구비할 수 있다.
서버 컴퓨터(900A)는 다른 컴퓨팅 환경(도 9에서 도시되지 않음)에 통신 가능하게 커플링될 수 있고 참여하는 유저의 상호 작용/리소스 네트워크에 관한 데이터를 수신할 수 있다. 예시적인 동작에서, 유저(도 9에서 도시되지 않음)는 클라이언트 컴퓨팅 디바이스(900B 내지 900G) 상에서 실행되는 컴퓨팅 애플리케이션과 상호 작용하여, 소망되는 데이터를 획득할 수도 있고 및/또는 다른 컴퓨팅 애플리케이션을 수행할 수도 있다.
데이터 및/또는 컴퓨팅 애플리케이션은, 서버(900A), 또는 서버들(900A) 상에 저장될 수도 있고, 예시적인 통신 네트워크(820)를 통해 클라이언트 컴퓨팅 디바이스(900B 내지 900G)를 통해 협력하는 유저와 통신할 수 있다. 참여하는 유저(도 9에서 도시되지 않음)는 서버 컴퓨터(8800A) 상에서 전체적으로 또는 부분적으로 수용되는 특정한 데이터 및 애플리케이션에 대한 액세스를 요청할 수도 있다. 이들 데이터는 프로세싱 및 저장을 위해 클라이언트 컴퓨팅 디바이스(900B 내지 900G)와 서버 컴퓨터(900A) 사이에서 전달될 수도 있다.
서버 컴퓨터(900A)는, 데이터 및 애플리케이션의 생성, 인증, 암호화 및 통신을 위한 컴퓨팅 애플리케이션, 프로세스 및 애플릿을 호스팅할 수 있고, 다른 서버 컴퓨팅 환경(도 9에서 도시되지 않음), 써드파티 서비스 공급자(도 9에서 도시되지 않음), 네트워크 결합 스토리지(network attached storage; "NAS") 및 스토리지 영역 네트워크(storage area networks; "SAN")와 협력하여 애플리케이션/데이터 트랜잭션을 실현할 수도 있다.
도 8에서 도시되는 컴퓨팅 아키텍쳐 및 도 9에서 도시되는 분산 네트워크 컴퓨팅 환경은 논의의 용이성을 위해 단순화되었다는 것이 인식되어야 한다. 컴퓨팅 아키텍쳐 및 분산 컴퓨팅 네트워크는 더 많은 컴퓨팅 컴포넌트, 디바이스, 소프트웨어 프로그램, 네트워킹 디바이스, 및 본원에서 구체적으로 설명되지 않는 다른 컴포넌트를 포함할 수 있고 활용할 수 있다는 것이 또한 인식되어야 한다.
본원에서 제시되는 개시는 또한, 다음의 조항에서 기술되는 주제를 포괄한다:
조항 1. 신경망 프로세서로서: 하나 이상의 뉴런; 및 압축 유닛을 포함하되, 압축 유닛은, 신경망 프로세서 내의 뉴런 중 적어도 하나에 의해 생성되는 데이터의 압축되지 않은 청크 - 데이터의 압축되지 않은 청크는 고정된 수의 바이트를 포함함 - 를 수신하도록; 압축된 출력 청크의 마스크 부분 - 마스크 부분은 데이터의 압축되지 않은 청크에서의 고정된 수의 바이트와 동등한 수의 비트를 포함하고, 마스크 부분에서의 각각의 비트는 데이터의 압축되지 않은 청크에서의 바이트에 대응하고, 마스크 부분에서의 각각의 비트는, 데이터의 압축되지 않은 청크에서의 대응하는 바이트가 제로인 논리 0으로 설정되고 데이터의 압축되지 않은 청크에서의 대응하는 바이트가 넌제로인 논리 1로 설정됨 - 을 생성하도록; 데이터의 압축되지 않은 청크에서의 넌제로 바이트의 수를 결정하는 것, 데이터의 압축되지 않은 청크에서의 넌제로 바이트의 수에 기초하여, 데이터의 압축되지 않은 청크의 잘려진 넌제로 바이트를 저장하는데 이용 가능한 압축된 출력 청크의 데이터 부분에서의 비트의 수를 결정하는 것, 데이터의 압축되지 않은 청크에서의 넌제로 바이트를, 결정된 비트의 수로 자르는 것, 및 압축된 출력 청크의 데이터 부분에 잘려진 넌제로 바이트를 저장하는 것에 의해, 압축된 출력 청크의 데이터 부분을 생성하도록; 그리고 압축된 출력 청크 - 압축된 출력 청크는 마스크 부분 및 데이터 부분을 포함함 - 를 출력하도록 구성된다.
조항 2. 조항 1의 신경망 프로세서로서, 신경망 프로세서는 압축 해제 유닛을 더 포함하되, 압축 해제 유닛은: 압축된 출력 청크를 수신하도록; 압축된 출력 청크의 마스크 부분에 기초하여 데이터의 압축되지 않은 청크의 데이터 부분에서의 넌제로 바이트의 수를 결정하도록; 압축된 출력 청크의 마스크 부분에 기초하여 데이터의 압축되지 않은 청크에서의 넌제로 바이트의 위치를 결정하도록; 압축된 출력 청크의 데이터 부분에 잘려진 넌제로 바이트를 저장하기 위해 압축 유닛에 의해 사용되는 비트의 수를 결정하도록; 논리 0인 압축된 출력 청크의 마스크 부분에서의 각각의 위치에 대해, 압축 해제된 출력 청크의 대응하는 위치에 제로 바이트를 삽입하도록; 그리고 논리 1인 마스크 부분에서의 각각의 위치에 대해, 압축된 입력 청크의 대응하는 위치로부터의 잘려진 넌제로 바이트를, 압축 해제된 출력 청크의 대응하는 위치 및 압축된 출력 청크의 압축 동안 잘려지는 비트의 수와 동등한 수의 제로 비트에 삽입하도록 구성된다.
조항 3. 조항 1 및 2 중 임의의 것의 신경망 프로세서로서, 압축 유닛은 또한: 데이터의 압축되지 않은 청크의 잘려진 넌제로 바이트를 저장하는데 이용 가능한 압축된 출력 청크의 데이터 부분에서의 추가 비트의 수를 결정하도록; 그리고 넌제로 바이트의 하나 이상을 잘라내기 이전에 데이터의 압축되지 않은 청크의 넌제로 바이트의 하나 이상에 추가 비트를 할당하도록 구성된다.
조항 4. 조항 1 내지 3 중 임의의 것의 신경망 프로세서로서, 압축 해제 유닛은 또한, 압축된 출력 청크의 데이터 부분에 저장되는 넌제로 바이트의 하나 이상에 할당되는 추가 비트의 수를 결정하도록 구성된다.
조항 5. 조항 1 내지 4 중 임의의 것의 신경망 프로세서로서, 압축 해제 유닛은 또한, 압축 해제된 출력 청크에 저장되는 잘려진 넌제로 바이트의 하나 이상에 오프셋을 추가하도록 구성된다.
조항 6. 조항 1 내지 5 중 임의의 것의 신경망 프로세서로서, 넌제로 바이트의 하나 이상의 최하위 비트(LSB)가 잘려진다.
조항 7. 조항 1 내지 6 중 임의의 것의 신경망 프로세서로서, 넌제로 바이트의 하나 이상의 최상위 비트(MSB)가 잘려진다.
조항 8. 신경망 프로세서로서: 하나 이상의 뉴런; 및 압축 해제 유닛을 포함하되, 압축 해제 유닛은, 마스크 부분 및 데이터 부분을 포함하는 데이터의 압축된 청크를 수신하도록; 마스크 부분에서의 비트에 기초하여 데이터의 압축 해제된 청크에서의 넌제로 바이트의 수를 결정하도록; 넌제로 바이트의 수에 적어도 부분적으로 기초하여, 데이터의 압축된 출력 청크의 데이터 부분에 잘려진 넌제로 바이트를 저장하기 위해 사용되는 비트의 수를 결정하도록; 논리 0인 데이터의 압축된 청크의 마스크 부분에서의 각각의 비트 위치에 대해, 데이터의 압축 해제된 청크의 대응하는 위치에 제로 바이트를 삽입하도록; 그리고 논리 1인 데이터의 압축된 청크의 마스크 부분에서의 각각의 위치에 대해, 데이터의 압축된 청크의 데이터 부분에서의 대응하는 위치로부터의 잘려진 넌제로 바이트를, 데이터의 압축 해제된 청크에서의 대응하는 위치 및 데이터의 압축된 청크의 압축 동안 잘려지는 비트의 수와 동등한 수의 제로 비트에 삽입하도록 구성된다.
조항 9. 조항 8의 신경망 프로세서로서, 압축 유닛을 더 포함하되, 압축 유닛은: 신경망 프로세서 내의 뉴런 중 적어도 하나에 의해 생성되는 데이터의 압축되지 않은 청크 - 데이터의 압축되지 않은 청크는 고정된 수의 바이트를 포함함 - 를 수신하도록; 데이터의 압축된 청크의 마스크 부분 - 마스크 부분은 데이터의 압축되지 않은 청크에서의 고정된 수의 바이트와 동등한 수의 비트를 포함하고, 마스크 부분에서의 각각의 비트는 데이터의 압축되지 않은 청크에서의 바이트에 대응하고, 마스크 부분에서의 각각의 비트는, 데이터의 압축되지 않은 청크에서의 대응하는 바이트가 제로인 논리 0을 포함하고 데이터의 압축되지 않은 청크에서의 대응하는 바이트가 넌제로인 논리 1을 포함함 - 을 생성하도록; 데이터의 압축되지 않은 청크에서의 넌제로 바이트의 수를 결정하는 것, 데이터의 압축되지 않은 청크에서의 넌제로 바이트의 수에 기초하여, 데이터의 압축되지 않은 청크의 잘려진 넌제로 바이트를 저장하는데 이용 가능한 데이터의 압축된 청크의 데이터 부분에서의 비트의 수를 결정하는 것, 데이터의 압축되지 않은 청크에서의 넌제로 바이트를, 결정된 비트의 수로 자르는 것, 및 데이터의 압축된 청크의 데이터 부분에 잘려진 넌제로 바이트를 저장하는 것에 의해, 압축된 데이터 청크의 데이터 부분을 생성하도록; 그리고 데이터의 압축된 청크 - 데이터의 압축된 청크는 마스크 부분 및 데이터 부분을 포함함 - 를 출력하도록 구성된다.
조항 10. 조항 8 및 9 중 임의의 것의 신경망 프로세서로서, 압축 유닛은 또한, 데이터의 압축되지 않은 청크에서의 넌제로 바이트의 수가 데이터의 압축된 청크의 데이터 부분에서의 바이트의 수보다 더 작거나 또는 동일한 경우, 잘려짐 없이, 데이터의 압축되지 않은 청크에서의 넌제로 바이트를 데이터의 압축된 청크의 데이터 부분에 저장하도록 구성된다.
조항 11. 조항 8 내지 10 중 임의의 것의 신경망 프로세서로서, 압축 유닛은 또한: 데이터의 압축되지 않은 청크의 잘려진 넌제로 바이트를 저장하는데 이용 가능한 압축된 출력 청크의 데이터 부분에서의 추가 비트의 수를 결정하도록; 그리고 넌제로 바이트의 하나 이상을 잘라내기 이전에 데이터의 압축되지 않은 청크의 넌제로 바이트의 하나 이상에 추가 비트를 할당하도록 구성된다.
조항 12. 조항 8 내지 11 중 임의의 것의 신경망 프로세서로서, 압축 해제 유닛은 또한, 압축된 출력 청크의 데이터 부분에 저장되는 넌제로 바이트의 하나 이상에 할당되는 추가 비트의 수를 결정하도록 구성된다.
조항 13. 조항 8 내지 12 중 임의의 것의 신경망 프로세서로서, 넌제로 바이트의 하나 이상의 최하위 비트(LSB)가 데이터의 압축된 청크의 압축 동안 잘려진다.
조항 14. 제8항 내지 13항 중 임의의 것의 신경망 프로세서로서, 넌제로 바이트의 하나 이상의 최상위 비트(MSB)는 데이터의 압축된 청크의 압축 동안 잘려진다.
조항 15. 컴퓨터 구현 방법으로서: 신경망 프로세서의 압축 유닛에서, 신경망 프로세서 내의 적어도 하나의 뉴런에 의해 생성되는 데이터의 압축되지 않은 청크 - 데이터의 압축되지 않은 청크는 고정된 수의 바이트를 포함함 - 를 수신하는 것; 압축된 출력 청크의 마스크 부분 - 마스크 부분은 데이터의 압축되지 않은 청크에서의 고정된 수의 바이트와 동등한 수의 비트를 포함하고, 마스크 부분에서의 각각의 비트는 데이터의 압축되지 않은 청크에서의 바이트에 대응하고, 마스크 부분에서의 각각의 비트는, 데이터의 압축되지 않은 청크에서의 대응하는 바이트가 제로인 논리 0을 포함하고 데이터의 압축되지 않은 청크에서의 대응하는 바이트가 넌제로인 논리 1을 포함함 - 을 생성하는 것; 데이터의 압축되지 않은 청크에서의 넌제로 바이트의 수를 결정하는 것, 데이터의 압축되지 않은 청크에서의 넌제로 바이트의 수에 기초하여, 데이터의 압축되지 않은 청크의 잘려진 넌제로 바이트를 저장하는데 이용 가능한 압축된 출력 청크의 데이터 부분에서의 비트의 수를 결정하는 것, 데이터의 압축되지 않은 청크에서의 넌제로 바이트를, 결정된 비트의 수로 자르는 것, 및 압축된 출력 청크의 데이터 부분에 잘려진 넌제로 바이트를 저장하는 것에 의해, 압축된 출력 청크의 데이터 부분을 생성하는 것; 및 압축된 출력 청크 - 압축된 출력 청크는 마스크 부분 및 데이터 부분을 포함함 - 를 신경망 프로세서의 메모리에 저장하는 것을 포함한다.
조항 16. 조항 15의 컴퓨터 구현 방법으로서: 데이터의 압축되지 않은 청크의 잘려진 넌제로 바이트를 저장하는데 이용 가능한 압축된 출력 청크의 데이터 부분에서의 추가 비트의 수를 결정하는 것; 및 넌제로 바이트의 하나 이상을 잘라내기 이전에 데이터의 압축되지 않은 청크의 넌제로 바이트의 하나 이상에 추가 비트를 할당하는 것을 더 포함한다.
조항 17. 조항 15 및 16 중 임의의 것의 컴퓨터 구현 방법으로서, 데이터의 압축되지 않은 청크에서의 넌제로 바이트의 수가 데이터의 압축된 청크의 데이터 부분에서의 바이트의 수보다 더 작거나 또는 동일한 경우, 잘려짐 없이, 데이터의 압축되지 않은 청크에서의 넌제로 바이트를 데이터의 압축된 청크의 데이터 부분에 저장하는 것을 더 포함한다.
조항 18. 조항 15 내지 17 중 임의의 것의 컴퓨터 구현 방법으로서: 신경망 프로세서의 압축 해제 유닛에서, 압축된 출력 청크를 수신하는 것; 압축된 출력 청크의 마스크 부분에 기초하여 데이터의 압축되지 않은 청크의 데이터 부분에서의 넌제로 바이트의 수를 결정하는 것; 압축된 출력 청크의 마스크 부분에 기초하여 데이터의 압축되지 않은 청크에서의 넌제로 바이트의 위치를 결정하는 것; 압축된 출력 청크의 데이터 부분에 잘려진 넌제로 바이트를 저장하기 위해 압축 유닛에 의해 사용되는 비트의 수를 결정하는 것; 논리 0인 압축된 출력 청크의 마스크 부분에서의 각각의 비트 위치에 대해, 압축 해제된 출력 청크의 대응하는 위치에 제로 바이트를 삽입하는 것; 및 논리 1인 압축된 출력 청크의 마스크 부분에서의 각각의 위치에 대해, 압축된 출력 청크의 대응하는 위치로부터의 잘려진 넌제로 바이트를, 압축 해제된 출력 청크의 대응하는 위치 및 압축된 출력 청크의 압축 동안 잘려지는 비트의 수와 동등한 수의 제로 비트에 삽입하는 것을 더 포함한다.
조항 19. 조항 15 내지 18 중 임의의 것의 컴퓨터 구현 방법으로서, 압축 해제된 출력 청크에 저장되는 잘려진 넌제로 바이트의 하나 이상에 오프셋을 추가하는 것을 더 포함한다.
조항 20. 조항 15 내지 19 중 임의의 것의 컴퓨터 구현 방법으로서, 오프셋은, 압축 해제된 출력 청크에 저장되는 잘려진 넌제로 바이트의 하나 이상의 최하위 비트(LSB)에 추가된다.
전술한 것에 기초하여, 메모리 버스 대역폭의 활용을 감소시키기 위해 활성화 데이터를 압축 및 압축 해제할 수 있는 DNN 모듈이 본원에서 개시된다는 것이 인식되어야 한다. 비록 본원에서 제시되는 주제가, 컴퓨터 구조적 피쳐, 방법론적 및 변형적 행위, 특정한 컴퓨팅 머신류, 및 컴퓨터 판독 가능 매체에 고유한 언어로 설명되었지만, 첨부된 청구범위에서 기술되는 주제는 본원에서 설명되는 특정한 피쳐, 행위, 또는 매체로 반드시 제한되는 것은 아니다는 것이 이해되어야 한다. 오히려, 특정한 피쳐, 행위 및 매체는, 청구된 주제를 구현하는 예시적인 형태로서 개시된다.
상기에서 설명되는 주제는, 단지 예시를 위해 제공되며, 제한적인 것으로 해석되어서는 안된다. 예시되고 설명되는 예시적인 구성 및 애플리케이션을 따르지 않으면서, 그리고 다음의 청구범위에서 기술되는 본 개시의 범위를 벗어나지 않으면서, 본원에서 설명되는 주제에 대해 다양한 수정 및 변경이 이루어질 수 있다.

Claims (5)

  1. 컴퓨터 구현 방법에 있어서,
    마스크 부분 및 데이터 부분을 포함하는 데이터의 압축된 청크를 수신하는 단계;
    상기 데이터의 압축된 청크의 상기 마스크 부분에서의 비트에 기초하여 데이터의 압축 해제된 청크에서의 넌제로 바이트의 수를 결정하는 단계;
    상기 데이터의 압축 해제된 청크에서의 넌제로 바이트의 수에 적어도 부분적으로 기초하여, 상기 데이터의 압축된 청크의 상기 데이터 부분에 잘려진(truncated) 넌제로 바이트를 저장하기 위해 사용되는 비트의 수를 결정하는 단계;
    논리 0인 상기 데이터의 압축된 청크의 상기 마스크 부분에서의 각각의 비트 위치에 대해, 상기 데이터의 압축 해제된 청크의 대응하는 위치에 제로 바이트를 삽입하는 단계; 및
    논리 1인 상기 데이터의 압축된 청크의 상기 마스크 부분에서의 각각의 위치에 대해, 상기 데이터의 압축된 청크의 상기 데이터 부분에서의 대응하는 위치로부터의 잘려진 넌제로 바이트를, 상기 데이터의 압축 해제된 청크에서의 대응하는 위치 및 상기 데이터의 압축된 청크의 압축 동안 잘려지는 비트의 수와 동등한 수의 제로 비트에 삽입하는 단계
    를 포함하는, 컴퓨터 구현 방법.
  2. 제1항에 있어서,
    상기 데이터의 압축된 청크의 상기 데이터 부분에 저장되는 상기 넌제로 바이트 중 하나 이상의 넌제로 바이트에 할당되는 추가 비트의 수를 결정하는 단계; 및
    상기 결정된 수의 추가 비트를 상기 데이터의 압축 해제된 청크에서의 상기 넌제로 바이트의 하나 이상에 할당하는 단계
    를 더 포함하는, 컴퓨터 구현 방법.
  3. 제1항에 있어서,
    상기 데이터의 압축 해제된 청크에 저장된 상기 잘려진 넌제로 바이트 중 하나 이상의 잘려진 넌제로 바이트에 오프셋을 추가하는 단계를 더 포함하는, 컴퓨터 구현 방법.
  4. 제1항에 있어서,
    상기 넌제로 바이트의 하나 이상의 최하위 비트(least significant bit; LSB)가 잘려지는 것인, 컴퓨터 구현 방법.
  5. 제1항에 있어서,
    상기 넌제로 바이트의 하나 이상의 최상위 비트(most significant bit; MSB)가 잘려지는 것인, 컴퓨터 구현 방법.
KR1020237037000A 2017-04-17 2018-04-16 메모리 대역폭 활용을 감소시키기 위해 활성화 데이터의 압축 및 압축 해제를 사용하는 신경망 프로세서 KR102663557B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201762486432P 2017-04-17 2017-04-17
US62/486,432 2017-04-17
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
US15/953,356 2018-04-13
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
KR1020197033456A KR102596644B1 (ko) 2017-04-17 2018-04-16 메모리 대역폭 활용을 감소시키기 위해 활성화 데이터의 압축 및 압축 해제를 사용하는 신경망 프로세서

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020197033456A Division KR102596644B1 (ko) 2017-04-17 2018-04-16 메모리 대역폭 활용을 감소시키기 위해 활성화 데이터의 압축 및 압축 해제를 사용하는 신경망 프로세서

Publications (2)

Publication Number Publication Date
KR20230152828A true KR20230152828A (ko) 2023-11-03
KR102663557B1 KR102663557B1 (ko) 2024-05-03

Family

ID=63790158

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020237037000A KR102663557B1 (ko) 2017-04-17 2018-04-16 메모리 대역폭 활용을 감소시키기 위해 활성화 데이터의 압축 및 압축 해제를 사용하는 신경망 프로세서
KR1020197033456A KR102596644B1 (ko) 2017-04-17 2018-04-16 메모리 대역폭 활용을 감소시키기 위해 활성화 데이터의 압축 및 압축 해제를 사용하는 신경망 프로세서

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020197033456A KR102596644B1 (ko) 2017-04-17 2018-04-16 메모리 대역폭 활용을 감소시키기 위해 활성화 데이터의 압축 및 압축 해제를 사용하는 신경망 프로세서

Country Status (19)

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

Families Citing this family (107)

* 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
EP3657398A1 (en) * 2017-05-23 2020-05-27 Shanghai Cambricon Information Technology Co., Ltd Weight 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
KR102569086B1 (ko) * 2017-11-20 2023-08-22 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 태스크 병렬 처리 방법, 장치, 시스템, 기억 매체 및 컴퓨터 기기
EP3489865B1 (en) * 2017-11-22 2021-01-06 Commissariat à l'énergie atomique et aux énergies alternatives A stdp-based learning method for a network having dual accumulator neurons
US10747844B2 (en) * 2017-12-12 2020-08-18 Tesla, Inc. Systems and methods for converting a matrix input to a vectorized input for a matrix processor
US11995448B1 (en) * 2018-02-08 2024-05-28 Marvell Asia Pte Ltd Method and apparatus for performing machine learning operations in parallel on machine learning hardware
KR20190097930A (ko) * 2018-02-13 2019-08-21 삼성전자주식회사 채널 별 메모리 용량을 조절하는 메모리 장치 및 이를 포함하는 메모리 시스템
US10948966B1 (en) * 2018-03-07 2021-03-16 Facebook, Inc. Systems and methods for optimizing power usage for systems within quality-of-service constraints
US11126362B2 (en) * 2018-03-14 2021-09-21 International Business Machines Corporation Migrating storage data
CN109313673A (zh) * 2018-04-17 2019-02-05 深圳鲲云信息科技有限公司 网络模型的运行方法及相关产品
US10404276B1 (en) * 2018-04-27 2019-09-03 Nicira, Inc. Stable variable-length order-preserving encoding scheme
US20190340490A1 (en) * 2018-05-04 2019-11-07 Apple Inc. Systems and methods for assigning tasks in a neural network processor
US11016801B1 (en) 2018-05-22 2021-05-25 Marvell Asia Pte, Ltd. Architecture to support color scheme-based synchronization for machine learning
US10997510B1 (en) 2018-05-22 2021-05-04 Marvell Asia Pte, Ltd. Architecture to support tanh and sigmoid operations for inference acceleration in machine learning
US10360654B1 (en) * 2018-05-25 2019-07-23 Intel Corporation Software scoreboard information and synchronization
US10657087B2 (en) * 2018-05-31 2020-05-19 Toshiba Memory Corporation Method of out of order processing of scatter gather lists
US11561833B1 (en) * 2018-06-28 2023-01-24 Amazon Technologies, Inc. Allocation and placement of resources for network computation
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 北京灵汐科技有限公司 一种可重构的处理器架构及计算设备
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
US11521014B2 (en) 2019-02-04 2022-12-06 International Business Machines Corporation L2-nonexpansive neural networks
US11036545B2 (en) * 2019-03-15 2021-06-15 Intel Corporation Graphics systems and methods for accelerating synchronization using fine grain dependency check and scheduling optimizations based on available shared memory space
CN111767078A (zh) * 2019-04-02 2020-10-13 上海寒武纪信息科技有限公司 数据运行方法、装置和相关产品
CN111782577B (zh) * 2019-04-04 2023-03-24 安徽寒武纪信息科技有限公司 数据处理装置及方法以及相关产品
CN109992225B (zh) * 2019-04-04 2022-02-22 中科寒武纪科技股份有限公司 数据输出方法及相关装置
KR20200119164A (ko) * 2019-04-09 2020-10-19 한국전자통신연구원 정보 처리 장치 및 그것에 포함된 신경망 연산 장치의 동작 방법
KR20200129957A (ko) * 2019-05-10 2020-11-18 삼성전자주식회사 피처맵 데이터에 대한 압축을 수행하는 뉴럴 네트워크 프로세서 및 이를 포함하는 컴퓨팅 시스템
US10504005B1 (en) * 2019-05-10 2019-12-10 Capital One Services, Llc Techniques to embed a data object into a multidimensional frame
US11204745B2 (en) * 2019-05-23 2021-12-21 Xilinx, Inc. Dataflow graph programming environment for a heterogenous processing system
US11175898B2 (en) * 2019-05-31 2021-11-16 Apple Inc. Compiling code for a machine learning model for execution on a specialized processor
KR20200139909A (ko) 2019-06-05 2020-12-15 삼성전자주식회사 전자 장치 및 그의 연산 수행 방법
CN114008636A (zh) * 2019-06-18 2022-02-01 高通股份有限公司 优化机器学习模型性能
US11403097B2 (en) 2019-06-26 2022-08-02 Intel Corporation Systems and methods to skip inconsequential matrix operations
US11461622B2 (en) * 2019-06-28 2022-10-04 Amazon Technologies, Inc. Dynamic code loading for multiple executions on a sequential processor
US11630770B2 (en) * 2019-07-11 2023-04-18 Meta Platforms Technologies, Llc Systems and methods for reading and writing sparse data in a neural network accelerator
US20210081806A1 (en) * 2019-09-13 2021-03-18 Latent AI, Inc. Using a runtime engine to facilitate dynamic adaptation of deep neural networks for efficient processing
US10915811B1 (en) 2019-09-18 2021-02-09 International Business Machines Corporation Intercalation cells for multi-task learning
US11475283B2 (en) * 2019-10-24 2022-10-18 Apple Inc. Multi dimensional convolution in neural network processor
KR20210053384A (ko) 2019-11-01 2021-05-12 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US11513799B2 (en) 2019-11-04 2022-11-29 Apple Inc. Chained buffers in neural network processor
KR20210065605A (ko) * 2019-11-27 2021-06-04 한국전자통신연구원 선인출 정보를 이용한 메모리 제어 방법 및 장치
CN111091184B (zh) * 2019-12-19 2022-03-22 浪潮(北京)电子信息产业有限公司 一种深度神经网络的量化方法、装置、电子设备及介质
CN111162792A (zh) * 2019-12-19 2020-05-15 深圳市航天泰瑞捷电子有限公司 一种电力负荷数据的压缩方法及装置
US11620516B2 (en) * 2019-12-23 2023-04-04 Arm Limited Specializing neural networks for heterogeneous systems
CN111178490B (zh) 2019-12-31 2021-08-24 北京百度网讯科技有限公司 数据输出方法、获取方法、装置和电子设备
CN111126589B (zh) * 2019-12-31 2022-05-20 昆仑芯(北京)科技有限公司 神经网络数据处理装置、方法和电子设备
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
US11275701B2 (en) * 2020-06-24 2022-03-15 Qualcomm Incorporated Secure timer synchronization between function block and external SOC
CN111723053A (zh) * 2020-06-24 2020-09-29 北京航天数据股份有限公司 一种数据的压缩方法及装置、解压方法及装置
US20220004399A1 (en) * 2020-07-03 2022-01-06 Mediatek Inc. Dynamic loading neural network inference at dram/on-bus sram/serial flash for power optimization
CN111884658A (zh) * 2020-07-09 2020-11-03 上海兆芯集成电路有限公司 数据解压缩方法、数据压缩方法及卷积运算装置
US11720404B2 (en) * 2020-07-16 2023-08-08 Samsung Electronics Co., Ltd. Systems and methods for arbitrating access to a shared resource
JPWO2022014500A1 (ko) * 2020-07-17 2022-01-20
CN111858058A (zh) * 2020-07-24 2020-10-30 成都成信高科信息技术有限公司 基于并行计算的sgd负载均衡方法、装置及存储介质
FR3113158B1 (fr) * 2020-08-03 2024-04-05 Commissariat Energie Atomique Architecture de calcul systolique pour la mise en œuvre de réseaux de neurones artificiels traitant plusieurs types de convolutions
JP6835285B1 (ja) * 2020-09-15 2021-02-24 富士電機株式会社 データ圧縮方法、データ圧縮装置、データ圧縮プログラム、データ伸長方法、データ伸長装置およびデータ伸長プログラム
US11470004B2 (en) * 2020-09-22 2022-10-11 Advanced Micro Devices, Inc. Graded throttling for network-on-chip traffic
JP2022094508A (ja) 2020-12-15 2022-06-27 富士通株式会社 演算処理装置、演算処理方法および演算処理プログラム
TWI745227B (zh) * 2021-02-01 2021-11-01 國立陽明交通大學 用於進行原始服務端與外地服務端之間的第三方認證的通訊系統及方法
KR102298766B1 (ko) * 2021-02-15 2021-09-07 주식회사 딥이티 타겟 디바이스에 대한 딥러닝 모델 변환 장치 및 방법
US11256987B1 (en) * 2021-06-02 2022-02-22 SambaNova Systems, Inc. Memory efficient dropout, with reordering of dropout mask elements
JP2023018365A (ja) 2021-07-27 2023-02-08 富士通株式会社 情報処理プログラム、情報処理方法及び情報処理装置
US20230079975A1 (en) * 2021-09-10 2023-03-16 Arm Limited Power management for system-on-chip
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 深圳鲲云信息科技有限公司 深度学习的稀疏数据存储方法、计算机设备和存储介质
US11983128B1 (en) * 2022-12-16 2024-05-14 Amazon Technologies, Inc. Multidimensional and multiblock tensorized direct memory access descriptors

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017507519A (ja) * 2013-12-23 2017-03-16 ソニー株式会社 データ符号化及び復号化

Family Cites Families (193)

* 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
EP0334624A3 (en) * 1988-03-23 1993-03-31 Du Pont Pixel Systems Limited Microcoded computer system
US5056015A (en) * 1988-03-23 1991-10-08 Du Pont Pixel Systems Limited Architectures for serial or parallel loading of writable control store
JP2703010B2 (ja) 1988-12-23 1998-01-26 株式会社日立製作所 ニユーラルネツト信号処理プロセツサ
US5369773A (en) 1991-04-26 1994-11-29 Adaptive Solutions, Inc. Neural network using virtual-zero
US5357597A (en) * 1991-06-24 1994-10-18 International Business Machines Corporation Convolutional expert neural system (ConExNS)
US5487153A (en) 1991-08-30 1996-01-23 Adaptive Solutions, Inc. Neural network sequencer and interface apparatus
WO1993014459A1 (en) 1992-01-17 1993-07-22 Caelum Research Corporation Modular parallel processing system
JPH06195322A (ja) 1992-10-29 1994-07-15 Hitachi Ltd 汎用型ニューロコンピュータとして用いられる情報処理装置
JP2938711B2 (ja) 1993-05-10 1999-08-25 松下電器産業株式会社 並列計算機
US5859990A (en) 1995-12-29 1999-01-12 Intel Corporation System for transferring data segments from a first storage device to a second storage device using an alignment stage including even and odd temporary devices
US5933654A (en) 1996-09-24 1999-08-03 Allen-Bradley Company, Llc Dynamic buffer fracturing by a DMA controller
US6006325A (en) * 1996-12-19 1999-12-21 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for instruction and data serialization in a computer processor
US6547364B2 (en) * 1997-07-12 2003-04-15 Silverbrook Research Pty Ltd Printing cartridge with an integrated circuit device
KR100258355B1 (ko) * 1997-12-26 2000-06-01 김영환 8 비트 병렬 셀 단위 인터리버
US6307867B1 (en) 1998-05-14 2001-10-23 Telefonaktiebolaget Lm Ericsson (Publ) Data transmission over a communications link with variable transmission rates
US6654761B2 (en) * 1998-07-29 2003-11-25 Inxight Software, Inc. Controlling which part of data defining a node-link structure is in memory
JP2000059227A (ja) 1998-08-07 2000-02-25 Matsushita Electric Ind Co Ltd 符号化/復号化装置、及び符号化/復号化方法
JP2000261416A (ja) * 1999-03-09 2000-09-22 Nec Eng Ltd 二重化データ転送回路
US6785239B1 (en) 1999-06-01 2004-08-31 Cisco Technology, Inc. Reducing delays in a communication network using a re-fragmentation pipeline
JP2001188767A (ja) 1999-12-28 2001-07-10 Fuji Xerox Co Ltd ニューラルネットワーク演算装置及びニューラルネットワークの演算方法
US6424737B1 (en) 2000-01-24 2002-07-23 Sony Corporation Method and apparatus of compressing images using localized radon transforms
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 国际商业机器公司 通过确定输入数据中的模式进行数据挖掘
RU2419226C2 (ru) * 2006-03-31 2011-05-20 Квэлкомм Инкорпорейтед Управление памятью для высокоскоростного управления доступом к среде
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
CN101689130A (zh) * 2006-12-06 2010-03-31 弗森多系统公司(dba弗森-艾奥) 采用渐进raid存储数据的装置、系统和方法
US8103606B2 (en) 2006-12-08 2012-01-24 Medhat Moussa Architecture, system and method for artificial neural network implementation
CN101221541B (zh) * 2007-01-09 2011-04-20 张立军 用于soc的可编程通信控制器
US7620749B2 (en) * 2007-01-10 2009-11-17 International Business Machines Corporation Descriptor prefetch mechanism for high latency and out of order DMA device
US8190834B2 (en) 2007-06-15 2012-05-29 Emc Corporation Process for contiguously streaming data from a content addressed storage system
JP5184824B2 (ja) * 2007-06-15 2013-04-17 キヤノン株式会社 演算処理装置及び方法
US7822951B2 (en) 2007-08-01 2010-10-26 Advanced Micro Devices, Inc. System and method of load-store forwarding
US8200992B2 (en) * 2007-09-24 2012-06-12 Cognitive Electronics, Inc. Parallel processing computer systems with reduced power consumption and methods for providing the same
CN101183873B (zh) 2007-12-11 2011-09-28 广州中珩电子科技有限公司 一种基于bp神经网络的嵌入式系统数据压缩解压缩方法
US8244953B1 (en) 2007-12-18 2012-08-14 Emc Corporation System and method for faster data retrieval from tape media
US8244721B2 (en) * 2008-02-13 2012-08-14 Microsoft Corporation Using related users data to enhance web search
US7730244B1 (en) * 2008-03-27 2010-06-01 Xilinx, Inc. Translation of commands in an interconnection of an embedded processor block core in an integrated circuit
US8201166B2 (en) * 2008-04-30 2012-06-12 Hewlett-Packard Development Company, L.P. Virtualization platform configured with virtual connect control
GB0811057D0 (en) 2008-06-17 2008-07-23 Univ Ulster Artificial neural network architecture
US8566515B2 (en) * 2009-01-12 2013-10-22 Maxim Integrated Products, Inc. Memory subsystem
US20100180100A1 (en) 2009-01-13 2010-07-15 Mavrix Technology, Inc. Matrix microprocessor and method of operation
US8392687B2 (en) * 2009-01-21 2013-03-05 Micron Technology, Inc. Solid state memory formatting
JP5458629B2 (ja) * 2009-03-31 2014-04-02 ブラザー工業株式会社 ノード装置、ノード処理プログラム及び検索方法
US20100257174A1 (en) 2009-04-02 2010-10-07 Matthew Dino Minuti Method for data compression utilizing pattern-analysis and matching means such as neural networks
US20100281192A1 (en) 2009-04-30 2010-11-04 Novafora, Inc. Apparatus and method for transferring data within a data processing system
EP2259214B1 (en) 2009-06-04 2013-02-27 Honda Research Institute Europe GmbH Implementing a neural associative memory based on non-linear learning of discrete synapses
GB2484416B (en) * 2009-06-26 2015-02-25 Intel Corp Optimizations for an unbounded transactional memory (utm) system
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
WO2012170904A2 (en) * 2011-06-10 2012-12-13 Bytemobile, 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
US9703500B2 (en) * 2012-04-25 2017-07-11 International Business Machines Corporation Reducing power consumption by migration of data within a tiered storage system
US9509632B2 (en) * 2012-04-25 2016-11-29 Empire Technology Development Llc Workload prediction for network-based computing
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 인텔 코포레이션 인접한 수집/분산 연산들의 통합
EP2949047B1 (en) * 2013-01-22 2021-03-31 Altera Corporation 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
EP3047390A1 (en) * 2013-09-19 2016-07-27 Sysomos L.P. Systems and methods for actively composing content for use in continuous social communication
US9280465B2 (en) * 2013-10-08 2016-03-08 Globalfoundries Inc. Techniques for moving checkpoint-based high-availability log and data directly from a producer cache to a consumer cache
US20150286873A1 (en) * 2014-04-03 2015-10-08 Bruce L. Davis Smartphone-based methods and systems
US9286171B2 (en) * 2013-12-12 2016-03-15 International Business Machines Corporation Priming failover of stateful offload adapters
EP3087454A4 (en) * 2013-12-23 2017-08-02 Intel Corporation Input output data alignment
US9851771B2 (en) 2013-12-28 2017-12-26 Intel Corporation Dynamic power measurement and estimation to improve memory subsystem power performance
US10097372B2 (en) * 2014-01-09 2018-10-09 Ciena Corporation Method for resource optimized network virtualization overlay transport in virtualized data center environments
EP2896428B1 (fr) * 2014-01-16 2016-11-09 Sorin CRM SAS Ensemble de réseau de neurones pour l'évaluation et l'adaptation d'une thérapie antitachycardique par un défibrillateur implantable
US10339447B2 (en) * 2014-01-23 2019-07-02 Qualcomm Incorporated Configuring sparse neuronal networks
US9563369B2 (en) * 2014-04-14 2017-02-07 Microsoft Technology Licensing, Llc Fine-grained bandwidth provisioning in a memory controller
EP3132389A1 (en) * 2014-04-15 2017-02-22 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
RU2666631C2 (ru) * 2014-09-12 2018-09-11 МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи Обучение dnn-студента посредством распределения вывода
US9990307B1 (en) 2014-10-29 2018-06-05 Netronome Systems, Inc. Split packet transmission DMA engine
EP3035204B1 (en) 2014-12-19 2018-08-15 Intel Corporation Storage device and method for performing convolution operations
EP3035249B1 (en) 2014-12-19 2019-11-27 Intel Corporation Method and apparatus for distributed and cooperative computation in artificial neural networks
US10223635B2 (en) 2015-01-22 2019-03-05 Qualcomm Incorporated Model compression and fine-tuning
CN104573064B (zh) * 2015-01-23 2017-12-08 四川中科腾信科技有限公司 一种大数据环境下的数据处理方法
US10234930B2 (en) * 2015-02-13 2019-03-19 Intel Corporation Performing power management in a multicore processor
CA2923600A1 (en) * 2015-03-12 2016-09-12 Staples, Inc. Review sentiment analysis
US10262190B2 (en) * 2015-03-26 2019-04-16 Beijing Kuangshi Technology Co., Ltd. Method, system, and computer program product for recognizing face
US9378044B1 (en) * 2015-03-28 2016-06-28 Vmware, Inc. Method and system that anticipates deleterious virtual-machine state changes within a virtualization layer
US9928144B2 (en) * 2015-03-30 2018-03-27 Commvault Systems, Inc. Storage management of data using an open-archive architecture, including streamlined access to primary data originally stored on network-attached storage and archived to secondary storage
FR3035243B1 (fr) * 2015-04-20 2018-06-29 Commissariat A L'energie Atomique Et Aux Energies Alternatives Placement d'une tache de calcul sur un processeur fonctionnellement asymetrique
US9965824B2 (en) * 2015-04-23 2018-05-08 Google Llc Architecture for high performance, power efficient, programmable image processing
US20160328644A1 (en) 2015-05-08 2016-11-10 Qualcomm Incorporated Adaptive selection of artificial neural networks
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
EP3680820B1 (en) 2015-10-04 2021-12-01 Atomwise Inc. Method for applying a convolutional network to spatial data
CN106503796B (zh) * 2015-10-08 2019-02-12 上海兆芯集成电路有限公司 多运算神经网络单元
US11029949B2 (en) * 2015-10-08 2021-06-08 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit
US10471594B2 (en) * 2015-12-01 2019-11-12 Kindred Systems Inc. Systems, devices, and methods for the distribution and collection of multimodal data associated with robots
CN105488563A (zh) * 2015-12-16 2016-04-13 重庆大学 面向深度学习的稀疏自适应神经网络、算法及实现装置
US10007519B2 (en) * 2015-12-22 2018-06-26 Intel IP Corporation Instructions and logic for vector bit field compression and expansion
US11232085B2 (en) * 2016-01-07 2022-01-25 Amazon Technologies, Inc. Outlier detection for streaming data
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
US10037490B2 (en) * 2016-12-13 2018-07-31 Google Llc Performing average pooling in hardware
US20180164866A1 (en) * 2016-12-13 2018-06-14 Qualcomm Incorporated Low-power architecture for sparse neural network
US10169296B2 (en) * 2016-12-30 2019-01-01 Intel Corporation Distributed matrix multiplication for neural networks
US10402527B2 (en) 2017-01-04 2019-09-03 Stmicroelectronics S.R.L. Reconfigurable interconnect
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
JP2017507519A (ja) * 2013-12-23 2017-03-16 ソニー株式会社 データ符号化及び復号化

Also Published As

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

Similar Documents

Publication Publication Date Title
KR102596644B1 (ko) 메모리 대역폭 활용을 감소시키기 위해 활성화 데이터의 압축 및 압축 해제를 사용하는 신경망 프로세서
US11494237B2 (en) Managing workloads of a deep neural network processor
US20230196086A1 (en) Increased precision neural processing element
US11507349B2 (en) Neural processing element with single instruction multiple data (SIMD) compute lanes

Legal Events

Date Code Title Description
A107 Divisional application of patent
E701 Decision to grant or registration of patent right
GRNT Written decision to grant