KR20240072912A - 비트 플레인 세분성을 갖는 런타임 재구성 가능 압축 포맷 변환 - Google Patents
비트 플레인 세분성을 갖는 런타임 재구성 가능 압축 포맷 변환 Download PDFInfo
- Publication number
- KR20240072912A KR20240072912A KR1020230135902A KR20230135902A KR20240072912A KR 20240072912 A KR20240072912 A KR 20240072912A KR 1020230135902 A KR1020230135902 A KR 1020230135902A KR 20230135902 A KR20230135902 A KR 20230135902A KR 20240072912 A KR20240072912 A KR 20240072912A
- Authority
- KR
- South Korea
- Prior art keywords
- bit plane
- compression
- format
- data
- sparsity
- Prior art date
Links
- 238000007906 compression Methods 0.000 title claims abstract description 104
- 230000006835 compression Effects 0.000 title claims abstract description 104
- 238000006243 chemical reaction Methods 0.000 title claims abstract description 65
- 238000012545 processing Methods 0.000 claims abstract description 47
- 230000015654 memory Effects 0.000 claims abstract description 45
- 238000001514 detection method Methods 0.000 claims description 17
- 238000005265 energy consumption Methods 0.000 claims description 11
- 238000000034 method Methods 0.000 description 21
- 238000013135 deep learning Methods 0.000 description 11
- 230000004913 activation Effects 0.000 description 8
- 238000013144 data compression Methods 0.000 description 7
- 230000006837 decompression Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000005070 sampling Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000013528 artificial neural network Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000001537 neural effect Effects 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6064—Selection of Compressor
- H03M7/6082—Selection strategies
- H03M7/6088—Selection strategies according to the data type
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/781—On-chip cache; Off-chip memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0495—Quantised networks; Sparse networks; Compressed networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3068—Precoding preceding compression, e.g. Burrows-Wheeler transformation
- H03M7/3079—Context modeling
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/42—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6064—Selection of Compressor
- H03M7/6082—Selection strategies
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/46—Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6017—Methods or arrangements to increase the throughput
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
프로세싱 요소에 대한 런타임 비트 플레인 데이터-포맷 옵티마이저는 희소성 탐지기 및 압축 변환기를 포함한다. 희소성 탐지기는 프로세싱 유닛 외부의 메모리에 저장된 제1 비트 플레인 데이터의 제1 희소성 패턴 및 프로세싱 요소 내부의 메모리에 저장된 제2 비트 플레인 데이터의 제2 희소성 패턴에 기반 되는 성능 모델을 사용하여 프로세싱 요소의 런타임 동안 비트 플레인 압축-변환 포맷을 선택한다. 제2 희소성 패턴은 프로세싱 요소의 런타임 구성에 기반 된다. 제1 비트 플레인 데이터는 제1 압축 포맷을 사용하여 저장되고, 제2 데이터는 제2 압축 포맷을 사용하여 저장된다. 압축-변환 변환기는 제1 비트 플레인 데이터의 제1 비트 플레인 압축 포맷을 변환하여, 제2 비트 플레인 데이터의 제2 비트 플레인 압축 포맷이 되도록 한다.
Description
본 명세서에 게시된 주제는 심층 신경망(deep neural network)들과 관계된다. 보다 상세하게는, 본 명세서에 게시된 주제는 심층 신경망을 실행하는 가속기의 오프-칩(off-chip) 데이터 및 온-칩(on-chip) 데이터의 비트 플레인(bit-plane) 형식 내의 압축 포맷(compression-format)을 최적화하는 런타임 압축 변환기(runtime compression converter)와 관계된다.
심층 신경망들(DNNs; deep neural networks)은 NPU(neural processing unit)들에 의해 가속될 수 있다. 성능 병목현상(performance bottleneck)은 제한된 메모리 대역폭으로 인해 발생할 수 있다. 이러한 성능 병목현상을 완화하기 위해, NPU 내부 및 외부에 대해 최적의 포맷(format) 변환을 사용하는 것은 중요할 수 있다. 재구성 가능 압축 포맷 변환은 종래에도 게시되었으나, 그러나, 이 경우에서 사용하도록 선택된 압축 포맷 변환은 DNN의 배포(deployment) 전에 이뤄진다. 미래 워크로드(future workload)들은 예측이 불가하기(unpredictable) 때문에, 런타임 이전에 압축 변환 포맷이 고정되어 있고, 런타임 압축 변환 형식에 대한 결정을 내릴 수 없는 경우, 최적의 압축 형식이 아닌 다른 압축 형식이 사용될 수 있다.
압축/압축 해제와 연관된, 압축비(compression ratio) 및 비용(cost)는 희소성 패턴(sparsity pattern)에 따라 상이할 수 있다. 딥-러닝(deep-learning) 애플리케이션의 희소성 패턴은 시간에 따라 상이할 수 있고, NPU에 의해 실행되는 DL(deep learning) 워크로드들은, DNN 배포 시간 전에 추정되기 어려울 수 있다.
종래의 접근은, 배포 이전의 설계 시점(design time)에 DL 애플리케이션에 대한 데이터 압축 포맷을 결정하는 것이었다. 그러나 DL 애플리케이션 데이터의 희소성 패턴은 시간에 따라 상이할 수 있으며, 압축/압축 해제와 연관된 압축 비, 및 비용은 DL 데이터의 희소성 패턴에 따라 상이할 수 있다. 따라서, 단일 고정 압축 포맷을 사용하는 것은 효율적이지 않을 수 있고, 최적의 데이터 압축 포맷(optimal data compression format)을 결정하고 사용하는, 런타임 결정(runtime decision)이 이득이 될 수 있다.
본 발명은 비트 플레인 세분성을 갖는 런타임 재구성 가능 압축 포맷 변환을 제공함에 그 목적이 있다.
예시적인 실시 예들은, 희소성 탐지 회로 및 압축-변환 회로를 포함할 수 있는, 프로세싱 요소에 대한 데이터 포맷 옵티마이저(data format optimizer)를 제공한다. 상기 희소성 탐지 회로는, 상기 프로세싱 요소 외부의 제1 메모리에 저장되는 제1 비트 플레인 데이터의 제1 희소성 패턴, 및 상기 프로세싱 요소 내부의 제2 메모리에 저장되는 제2 비트 플레인 데이터의 제2 희소성 패턴에 기반 되는 제1 성능 모델의 적어도 일부를 기반으로 상기 프로세싱 요소의 런타임 동안, 제1 비트 플레인 압축-변환 포맷을 선택하도록 구성될 수 있다. 여기서, 상기 제2 희소성 패턴은 상기 프로세싱 요소의 런타임 구성에 기반 될 수 있고, 상기 제1 비트 플레인 데이터는 제1 비트 플레인 압축 포맷을 사용하여 상기 제1 메모리에 저장되고, 제2 압축 포맷을 사용하여, 상기 제2 메모리에 저장되는 제2 비트 플레인 압축 포맷으로 변환될 수 있다. 상기 압축-변환 회로는 상기 제1 비트 플레인 압축-변환 포맷을 기반으로, 상기 제1 비트 플레인 압축 포맷 내의 상기 제1 비트 플레인 데이터를 변환하여 상기 제2 비트 플레인 압축 포맷 내의 상기 제2 비트 플레인 데이터가 되도록 할 수 있다. 일 실시 예에서, 상기 제1 성능 모델은 상기 제1 비트 플레인 데이터를 상기 제2 비트 플레인 데이터로 변환하는 것과 연관된 레이턴시(latency)를 더 포함할 수 있다. 다른 일 실시 예에서, 상기 제1 성능 모델은 상기 제1 비트 플레인 데이터를 상기 제2 비트 플레인 데이터로 변환하는 것과 연관된 에너지 소비량을 더 포함할 수 있다. 여전히 다른 일 실시 예에서, 상기 제1 성능 모델은 상기 제1 비트 플레인 데이터를 상기 제2 비트 플레인 데이터로 변환하는 것과 연관된 에너지 소비량을 더 포함할 수 있다. 아직 다른 실시 예에서, 상기 희소성 탐지 회로는 상기 프로세싱 요소의 런타임 동안, 상기 프로세싱 요소 내의 제3 메모리에 저장된 출력 비트 플레인 데이터의 제3 희소성 패턴에 기반 되는 제2 성능 모델의 적어도 일부를 기반으로 제2 압축-변환 포맷을 선택하도록 더 구성될 수 있고, 상기 압축-변환 회로는 상기 출력 비트 플레인 데이터를, 상기 제1 메모리 내의 스토리지에 대한 상기 제2 압축-변환 포맷에 기반 되는 제3 압축 포맷으로 변환하도록 구성될 수 있다. 일 실시 예에서, 상기 희소성 탐지 회로는 상기 제1 성능 모델이 선택되는 둘 이상의 성능 모델들을 생성하도록 더 구성될 수 있다. 다른 일 실시 예에서, 상기 희소성 탐지 회로는 상기 제1 비트 플레인 데이터의 상기 제1 희소성 패턴을 샘플링하여, 상기 둘 이상의 성능 모델들을 생성할 수 있다. 여전히 다른 실시 예에서, 상기 희소성 탐지 회로는 상기 프로세싱 요소의 희소성 운영 모드(sparsity operational mode)들을 더 기반으로, 상기 둘 이상의 성능 모델들을 생성할 수 있다. 여전히 다른 실시 예에서, 상기 제1 비트 플레인 압축 포맷 및 상기 제2 비트 플레인 압축 포맷의 적어도 하나는, RLE(run length encoding), ZVC(zero value compression), CSC(compressed sparse column) 인코딩, 또는 CSR(compressed sparse row) 인코딩을 포함할 수 있다.
예시적인 실시 예는, 희소성 탐지 회로 및 압축-변환 회로를 포함할 수 있는, 프로세싱 요소에 대한 데이터 포맷 옵티마이저(data format optimizer)를 제공한다. 상기 희소성 탐지 회로는 상기 프로세싱 요소의 런타임 동안, 제1 비트 플레인 압축 포맷 내의 제1 메모리에 저장된 제1 비트 플레인 데이터의 제1 희소성 패턴 및 제2 비트 플레인 압축 포맷 내의 제2 메모리에 저장된 제2 비트 플레인 데이터의 제2 희소성 패턴에 기반 되는 적어도 하나 이상의 성능 모델을 생성하도록 구성될 수 있고, 상기 제1 메모리는 상기 프로세싱 요소의 외부에 위치할 수 있고, 상기 제2 메모리는 상기 프로세싱 요소의 내부에 위치할 수 있고, 상기 하나 이상의 프로세싱 모델들의 중 하나의 선택의 적어도 일부를 기반으로, 제1 비트 플레인 압축-변환 모델을 결정하도록 구성될 수 있다. 상기 압축-변환 회로는 상기 제1 비트 플레인 압축-변환 포맷을 기반으로, 상기 제1 비트 플레인 압축 포맷 내의 상기 제1 비트 플레인 데이터를 상기 제2 비트 플레인 압축 포맷 내의 상기 제2 비트 플레인 데이터로 변환하도록 구성될 수 있다. 일 실시 예에서, 상기 희소성 탐지 회로는 상기 제1 비트 플레인 데이터의 상기 제1 희소성 패턴을 샘플링하여, 상기 하나 이상의 성능 모델들을 생성하도록 구성될 수 있다. 다른 일 실시 예에서, 상기 희소성 탐지 회로는 상기 프로세싱 요소의 희소성 운영 모드들을 더 기반으로 상기 하나 이상의 성능 모델들을 생성하도록 구성될 수 있다. 여전히 다른 실시 예에서, 각 성능 모델은, 상기 제1 비트 플레인 데이터를 상기 제2 비트 플레인 데이터로 변환하는 것과 연관된 레이턴시를 포함할 수 있다. 아직 다른 일 실시 예에서, 적어도 하나의 성능 모델은 상기 제1 비트 플레인 데이터를 상기 제2 비트 플레인 데이터로 변환하는 것과 연관되는 에너지 소비량을 더 포함할 수 있다. 일 실시 예에서, 적어도 하나의 성능 모델은 상기 제1 비트 플레인 데이터를 상기 제2 비트 플레인 데이터로 변환하는 것과 연관되는 에너지 소비량을 더 포함할 수 있다. 다른 일 실시 예에서, 상기 희소성 탐지 회로는, 상기 프로세싱 요소의 상기 런타임 동안 상기 프로세싱 요소 내 제3 메모리에 저장된 출력 비트 플레인 데이터의 제3 희소성 패턴에 기반 되는 제2 성능 모델의 적어도 일부를 기반으로 제2 압축-변환 포맷을 선택하도록 더 구성되고, 상기 압축-변환 회로는 상기 출력 비트 플레인 데이터를, 상기 제1 메모리 내의 스토리지에 대한 상기 제2 압축-변환 포맷에 기반 되는 제3 압축 포맷으로 변환하도록 구성될 수 있다. 여전히 다른 실시 예에서, 상기 제1 비트 플레인 압축 포맷은, RLE(run length encoding), ZVC(zero value compression), CSC(compressed sparse column) 인코딩, 또는 CSR(compressed sparse row) 인코딩을 포함할 수 있다.
본 발명에 따르면 비트 플레인 세분성을 갖는 런타임 재구성 가능 압축 포맷 변환이 제공된다.
후술하는 섹션에서, 본 명세서에 게시된 주제의 양상들은 도면들에 도시된 예시적인 실시 예들을 참조하여 설명될 것이다.
도 1은 본 명세서에 게시된 주제에 따라, 런타임 재구성 가능 비트 플레인 압축 포맷 변환기의 예시적인 실시 예를 도시하는 블록도이다.
도 2는 활성화 분포 또는 가중치 값들이 작은 값 또는 0에 집중되는 경우 압축/압축 해제 동작을 도시한다.
도 3은 데이터 세트(또는 비트 플레인 데이터 세트)의 데이터가 큰 값들에 집중되는 경우 사용될 수 있는 값-반전(value-inversion) 기술을 도시한다.
도 4는 데이터 세트의 데이터가 하나 이상의 값 피크(peak)들을 갖는 경우 사용될 수 있는 값-반전 기술을 도시한다.
도 5는 본 명세서에 게시된 주제에 따른, 런타임 재구성 가능 비트 플레인 압축 포맷 변환기를 포함할 수 있는 전자 장치를 보여준다.
도 1은 본 명세서에 게시된 주제에 따라, 런타임 재구성 가능 비트 플레인 압축 포맷 변환기의 예시적인 실시 예를 도시하는 블록도이다.
도 2는 활성화 분포 또는 가중치 값들이 작은 값 또는 0에 집중되는 경우 압축/압축 해제 동작을 도시한다.
도 3은 데이터 세트(또는 비트 플레인 데이터 세트)의 데이터가 큰 값들에 집중되는 경우 사용될 수 있는 값-반전(value-inversion) 기술을 도시한다.
도 4는 데이터 세트의 데이터가 하나 이상의 값 피크(peak)들을 갖는 경우 사용될 수 있는 값-반전 기술을 도시한다.
도 5는 본 명세서에 게시된 주제에 따른, 런타임 재구성 가능 비트 플레인 압축 포맷 변환기를 포함할 수 있는 전자 장치를 보여준다.
후술하는 상세한 설명에서, 다수의 특정 실시 예들이, 본 발명의 철저한 이해를 제공하기 위해 제공된다. 그러나, 본 발명의 기술 분야에 속한 통상의 기술자에 의해, 게시된 양상들은 이들 특정 세부 사항들 없이 실시될 수 있는 것으로 이해될 것이다. 다른 경우들에서, 잘 알려진 방법들, 절차들, 구성 요소들 및 회로들은, 본 명세서에 게시된 주제(subject matter)를 모호하게 하지 않기 위해 상세하게 설명되지 않았다.
본 명세서에 걸친 “일 실시 예(one embodiment, 또는 an embodiment)”에 참조들에서, 실시 예와 연결로 설명되는 특정한 특징(feature), 구조(structure), 또는 특성(characteristic)이 본 명세서에 게시된 적어도 하나의 실시 예 내에 포함될 수 있는 것을 의미한다. 따라서, 본 명세서에 걸친 다양한 위치에서 “일 실시 예에서(in one embodiment, 또는 in an embodiment, 또는 according to one embodiment)”라는 문구(또는, 유사한 가져오기를 갖는 다른 문구)의 등장(appearance)들이 필수적으로 모두 동일한 실시 예를 참조하는 것은 아닐 수 있다. 게다가, 특정 특징들, 구조들, 또는 특성들은, 하나 이상의 실시 예들에서 임의의 적절한 방식으로 결합될 수 있다. 이러한 점에서, 본 명세서에서 사용된 바와 같이, 용어 “예시적인(exemplary)”은, “예시(example), 사례(instance), 또는 도시(illustration)로 사용되는 것”을 의미한다. “예시적인”으로서 본 명세서에서 설명되는 임의의 실시 예들은, 다른 실시 예들보다 필수적으로 선호되거나, 또는 이점이 있는 것으로 해석되는 것은 아니다. 부가적으로, 특정 특징들, 구조들, 또는 특성들은, 하나 이상의 실시 예들에서 임의의 적절한 방식으로 결합될 수 있다. 또한, 본 명세서의 설명의 맥락(context)에 의하면, 단수형은 대응하는 복수형을 포함할 수 있고, 복수형은 대응하는 단수형을 포함할 수 있다. 유사하게, 하이픈 형태(예를 들어, "two-dimensional", "pre-determined", "pixel-specific" 등)은 때때로 하이픈이 없는 형태(예를 들어, "two dimensional", "pre determined", "pixel specific"등)와 같은 의미로 사용될 수 있고, 대문자 항목(예를 들어, "Counter Clock", "Row Select", "PIXOUT" 등)과 같은 의미로 사용될 수 있다. 이러한 간헐적인 상호 교환 사용은 서로 일치지 않는 것으로 간주되지 않아야 한다.
본 명세서에서 도시되고, 논의되는 (구성 요소 다이어그램들은 포함한) 다양한 특징들은, 단지 도시의 목적을 위한 것이고, 축적에 따라 그려진 것은 아닌 것으로 더 숙지되어야 한다. 예를 들어, 일부 요소들의 축척(dimension)들은 명확성을 위해, 다른 요소들보다 상대적으로 보다 과장될 수 있다. 나아가, 적절하다고 판단되는 경우, 참조 번호들은 도면들 사이에서 반복되어, 대응하거나 및/또는 유사한 요소들을 나타낼 수 있다.
본 명세서에서 사용되는 용어들은 단지 일부 예시적인 실시 예들을 설명하는 목적을 위한 것이고, 청구된 주제를 국한하는 것이 의도되지 않는다. 본 명세서에서 사용된 바와 같이, 문맥상 달리 명시되지 않는 한, 단수형(“a”, “”및 “”는 복수형을 또한 포함하도록 의도된다. 본 명세서에서 용어 “포함한다(comprise 및/또는 comprising)”가 사용되는 경우, 해당 용어는 기재된 특징(feature)들, 정수(integer)들, 단계(step)들, 요소(element)들, 및/또는 구성 요소(component)들의 존재를 특정하고, 그러나, 하나 이상의 다른 특징들, 정수들, 단계들, 요소들, 구성 요소들, 및/또는 그들의 그룹(group)의 존재 또는 부가를 배제하지 않는다. 본 명세서에서 사용되는 용어들 “제1”, “제2” 등은, 앞에 오는 명사(noun)들에 대한 라벨들로 사용되며, 달리 명시적으로 정의되지 않는 한 임의의 (예를 들어, 공간적, 시간적, 논리적 등) 순서를 암시하는 것은 아니다. 게다가, 동일한 참조 번호들은 둘 이상의 도면에 걸쳐 사용되어, 동일하거나 또는 유사한 기능을 가지는 부분(part)들, 구성 요소들, 블록들, 회로들, 유닛들, 또는 모듈들을 참조할 수 있다. 그러나 이러한 사용은 도시의 단순함 및 논의의 용이성을 단지 위한 것이고; 이러한 구성 요소들 또는 유닛들의 구조 또는 아키텍처 세부사항(architectural detail)들이 모든 실시 예들에 걸쳐 동일한 점을 암시하거나, 또는 이러한 공통 참조된 부분들/모듈들이, 본 명세서에 게시된 예시적인 실시 예들의 일부를 구현하는 단일 방법(only way)인 점을 암시하지 않는다.
요소 또는 레이어가, 다른 요소 또는 레이어와 “상에(on)”또는 “연결된(connected to, 또는 coupled to)”으로 언급되는 경우, 다른 요소 또는 레이어와 직접 상에(directly on)”또는 “직접 연결된(directly connected to, 또는 directly coupled to)”로 언급되거나, 또는 개입하는(intervening) 요소 또는 레이어가 존재할 수 있는 것으로 이해될 것이다. 반대로, 요소 또는 레이어가 다른 “직접 상에(directly on)”또는 “직접 연결된(directly connected to, 또는 directly coupled to)”로 언급되는 경우, 개입하는 요소들 또는 레이어들이 존재하지 않는다. 유사한 참조 번호는 유사한 요소들을 참조한다. 본 명세서에 사용된 바와 같이, 용어 “및/또는(and/or)”은 하나 이상의 연관된 배열된 항목들의 임의의 조합 및 모든 조합을 포함한다.
달리 정의되지 않는 한, 본 명세서 사용되는 (기술적 및 과학적 용어들을 포함하는) 모든 용어들은, 본 주제가 속하는 기술 분야의 통상의 기술자에 의해 통상 이해되는 동일한 의미를 갖는다. 사전들에 통상 사용되는 것으로 정의되는 것과 같은 용어들은, 관련 분야의 맥락에서 그들의 의미와 일관되는 의미를 갖는 것으로 해석되어야 할 것이고, 본 명세서에서 달리 표현되어 정의되지 않는 한, 이상적이거나 또는 과도하게 일반적으로 해석되어서는 안 될 것이다.
본 명세서에서 사용된 바와 같이, 용어 “모듈(module)”은, 모듈과의 연결로 본 명세서에서 설명되는 기능을 제공하도록 구성되는, 소프트웨어(software), 펌웨어(firmware), 및/또는 하드웨어(hardware)의 임의의 조합을 언급한다. 예를 들어, 소프트웨어는, 소프트웨어 패키지(software package), 코드(code) 및/또는 명령어 세트(instruction set) 또는 명령어로 실시될 수 있고, 본 명세서에서 설명되는 임의의 실시 예에서 사용되는 용어 “하드웨어(hardware)”는 예를 들어, 어셈블리(assembly), 하드 와이어된 회로(hardwired circuitry), 프로그램 가능 회로(programmable circuitry), 상태 머신 회로(state machine circuitry), 및/또는 프로그램 가능 회로에 의해 실행되는 명령어들을 저장하는 펌웨어를, 단일로 포함할 수 있거나, 또는 임의의 조합으로 포함할 수 있다. 모듈들은 총체적으로 또는 개별적으로, 더 큰 시스템(larger system)의 부분을 형성하는 회로로서 구현될 수 있으며, 예를 들어, IC(integrated circuit), SoC(system on-a-chip), 어셈블리 등이 이에 국한되지 않을 수 있다.
정보 컨텐츠(content) 및 희소성(sparsity)은 예를 들어, 활성화 데이터(activation data)의 소스 값(source value)들의 비트들에 거쳐 균등하게 분산되지 않을 수 있다. 즉, 소스 활성화 값들의 다른 부분들은 상이한 통계적 특성(statistical characteristic)들을 가질 수 있다. 예를 들어, 활성화 값들의 MSB(most significant bit)들은 매우 희소한 경향이 있을 수 있고, 희소성은 비트가 덜 중요해짐(less significant)에 따라, 점진적으로 감소되는 경향이 있을 수 있다. 활성화 값들의 비트들의 LS(least significant) 그룹들은 일반적으로 활성화 값들보다 훨씬 적은 비트들에서 약간 적은 엔트로피(entropy)를 가질 수 있다. 이는, 비트들의 LS(least significant) 레인들 또는 비트 플레인이, 전체 활성화 값들 보다 훨씬 더 높은 밀도의 정보(=엔트로피/비트 너비; =entropy/bit width)를 갖는 것을 의미할 수 있다. 숨겨진 비트-레벨 희소성(hidden bit-level sparsity)은 비트 플레인(bit-plane)을 비트 단위(bit-wise)로 분할(partition)하여 찾아질 수 있고, 다른 압축 기술(compression technique)들은 각각 개별 비트 플레인에 대해 선택되어, 최적의 비트 플레인 폭(best bit-plane width), 및 최적의 순서 기반(best sequence-based) 또는 심볼 기반(symbol-based) 압축 기술(compression technique)의 각 개별 비트 플레인에 사용될 수 있다. 데이터가 더 높은 밀도의 정보를 가질수록 압축이 더 어려운 경향이 있음에도 불구하고, 데이터의 전반적인 압축률(overall compression rate)은 데이터의 비트 플레인에서 찾아질 수 있는 희소성의 큰 증가(significant increase)를 기반으로 향상될 수 있다.
본 명세서에 게시된 주제는, DL 가속기들, 또는 PE(processing element)들을 위한 런타임(runtime)(학습(training) 및/또는 추론(inference)) 비트 플레인 압축 변환 포맷 옵티마이저(bit-plane compression conversion format optimizer)를 제공한다. 일 실시 예에서, 포맷-변환 옵티마이저는, 메모리(예를 들어, DRAM), 및 온-칩(on-chip) NPU 메모리 사이에 위치할 수 있다. 포맷-변환 옵티마이저는 런타임 동안, 탐지된 희소성 패턴 또는 데이터의 탐지된 희소성 특성들을 기반으로 희소(sparse) 데이터를 샘플링(sample)할 수 있고, 포맷-변환 옵티마이저는 레이턴시(latency), 변환 비용(conversion cost), 및 시스템 레벨 에너지 소비량 추정들(system-level energy consumption estimates)을 기반으로, 오프-칩(off-chip) 데이터 및 온-칩 데이터 둘 다의 n개의 다른 비트 플레인들 각각에 대한 최적의 비트 플레인 데이터 압축 포맷들을 결정할 수 있다. 본 명세서에서 사용된 바와 같이, 용어 “변환 비용”은, 압축-포맷 변환 프로세스(process)에 따른 전력(power)/면적(area)/레이턴시를 포함한다. 그래서, 희소성 패턴 탐지기는, 메모리 압축 포맷으로부터 가속기 압축 포맷으로 변환의 프로세스에 따른 레이턴시 및 시스템 레벨 에너지 소모량의 증가를 기반으로, 온-칩 데이터 및 오프-칩 데이터 둘 다에 대한 최적의 데이터 압축 포맷들을 결정할 수 있다. 예를 들어, 포맷-변환 옵티마이저 모듈의 희소성 패턴 탐지기 모듈(또는, 회로)은 런타임 동안, 데이터를 워크로드로부터 샘플링 할 수 있다. 포맷-변환 옵티마이저 모듈의 성능 모델러 모듈(performance modeler module)은, 해석적 성능 모델(analytic performance model)을 사용하여, 다른 비트 플레인 압축 포맷들에 대한 압축 비 및 에너지 소비량을 추정할 수 있고, 오프-가속기 칩(off-accelerator chip) 데이터 및 온-가속기 칩(on-accelerator chip) 데이터 둘 다에 대해 최적의 비트 플레인 압축 포맷들을 결정할 수 있다. 압축 변환 모듈은 포맷-변환 옵티마이저 모듈에 의해 결정된 런타임 비트 플레인 압축 포맷 결정을 적용할 수 있다.
일 실시 예에서, 런타임 재구성 가능 포맷-변환 옵티마이저(runtime reconfigurable format-conversion optimizer)는, (설계 시점에 예상치 못한 희소성 패턴이 발견되는 것을 포함한) 임의의 DL 워크로드들에 대한 희소 데이터 패턴을 탐지할 수 있다. 런타임 재구성 가능 비트 플레인 포맷-변환 옵티마이저는 DL 데이터에 대한 효율적인 압축 포맷들 및 변환들을 결정할 수 있다.
본 명세서에 게시된 주제는, 포맷-변환 옵티마이저를 오프-칩 DRAM 및 온-칩 메모리의 인터페이스에 위치시킴으로써, 런타임(학습 및/또는 추론) 데이터 압축 포맷 최적화를 제공하는데, 여기서, 포맷-변환 옵티마이저는, 희소 DL 데이터를 샘플링하고, 추정된 레이턴시, 변환 비용, 및 시스템 레벨 에너지 소비량을 기반으로, 오프-가속기 및 온-가속기 칩 둘 다에 대한 최적의 비트 플레인 데이터 압축 포맷들을 결정할 수 있다.
일 실시 예에서, 레인 압축(lane compression), 델타 압축(delta compression), 및/또는 0값 압축(zero-value compression)을 포함할 수 있는 비트 플레인 압축은, 유연성(flexibility)을 제공하여 각 개별 레인에 대해 압축 포맷이 변화할 수 있도록 할 수 있다. 최적의 압축 포맷 및 파라미터(parameter)들은, 각 개별 레인에 나타나는 중복(redundancy)의 다른 형태들을 기반으로 선택될 수 있다.
본 명세서에 게시된 주제는 DL 가속기에 대한 런타임 압축-포맷 옵티마이저(runtime compression-format optimizer)를 제공한다. 데이터는 비트-플레인 세분성(bit-plane granularity)을 기반으로 재배치(reorder)되거나, 또는 재구성(reconfigure)될 수 있고, 각 비트 플레인이 각 비트 플레인에 대한 최적의 압축 구성을 얻는 압축 포맷을 위해, 런타임 결정(runtime decision)은 압축 포맷 옵티마이저에 의해 만들어질 수 있다.
일 실시 예에서, 본 명세서에 게시된 주제는 후술할 바와 같이 값 분포(value-distribution)를 탐지할 수 있다. 분산이 0 또는 최솟값(minimum-value) 대신에 최댓값(maximum-value)에 초점이 맞춰진 경우, 본 명세서에 게시된 주제는 선형 변환(예를 들어, )을 사용하여 값을 변환하고, 비트 플레인 및/또는 니블-기반 압축(nibble-based compression)을 적용할 수 있다.
도 1은 본 명세서에 게시된 주제에 따라, 런타임 재구성 가능 비트 플레인 압축 포맷 변환기(100; runtime reconfigurable compression format converter)의 예시적인 일 실시 예의 기능 블록도이다. 비트 플레인 포맷 변환기(100)는 포맷-변환 옵티마이저(101; format-conversion optimizer), 및 압축 변환기 회로(102; compression converter circuit)을 포함할 수 있다. 일 실시 예에서, 포맷-변환 옵티마이저(101) 중 하나 또는 둘 다 및 압축 변환기 회로(102)는 한 모듈 또는 한 회로로 실시될 수 있다.
일 실시 예에서, 포맷-변환 옵티마이저 회로(101)는 오프-칩 메모리(103; off-chip memory) 및 온-칩 메모리(104; on-chip memory)사이의 인터페이스에 위치할 수 있다. 포맷-변환 옵티마이저 회로(101)는, 텐서 블록(tensor block)의 샘플된 부분을 스트리밍(streaming)하여, 다른 비트 플레인들의 0이 아닌 값(nonzero value)의 밀도를 탐지하는 카운터(counter)로서 구성될 수 있다. 포맷-변환 옵티마이저 회로(101)의 희소성 패턴 탐지기 양상은 또한 추가적 기능을 가질 수 있고, 기능은 압축 포맷들을 최적화하는데 유용한 정보인 다른 비트 플레인들의 0이 아닌 값의 발생의 시간적 및 공간적 위치를 체크(checking)하는 것과 같을 수 있다.
일 실시 예에서, 포맷-변환 옵티마이저 회로(101)는, 런타임(학습 또는 추론)동안, 오프-칩 메모리(103) 및 온-칩 메모리(104) 및 온-칩 NPU 메모리(104)로부터 희소 데이터를 샘플링 하도록 구성될 수 있다. 일 실시 예에서, 포맷-변환 옵티마이저 회로(101)는, 데이터를 샘플링 하여, 데이터의 세분성(granularity) 및 타이밍에 기반 되는 비트 플레인 희소성 패턴들을 결정하기 전에 오프-칩 데이터를 압축 해제하여, 오프-칩 데이터의 비트 플레인 희소성 패턴들을 결정할 수 있다. 희소성 패턴의 세분성은 샘플링 사이즈 및 샘플링 빈도(sample frequency)를 조절에 의해 결정될 수 있다. 이러한 조절을 위해, 포맷-변환 옵티마이저 회로(101)는 단순한 알고리즘(예를 들어, 데이터가 높은 희소성을 갖는 경우 샘플링 사이즈를 증가시키거나, 및/또는 인접한 샘플들이 다른 희소성 패턴들을 보이는 경우, 샘플링 빈도 증가)를 사용할 수 있다. 오프-칩 압축 포맷이, 압축 해제된 프로세스에 대해 참조될 수 있는 연관된 메타데이터를 포함할 수 있음에도 불구하고, 오프-칩 데이터의 샘플링은 연관된 메타데이터에 의해 결정되지 않을 수 있으나, 포맷-변환 옵티마이저 회로(101)에 의해 결정될 수 있다.
성능 모델은, 오프-가속기 칩 메모리(103; off-accelerator chip memory), 및 온-가속기 칩 메모리(104; on-accelerator chip memory) 내의 희소 데이터에 대한 다른 비트-플레인 압축 포맷들에 대한 추정된 압축 비를 기반으로 생성될 수 있다. 다양한 온-칩 데이터 비트 플레인 압축 포맷들 및 구조화된 희소성(structured sparsity), 랜덤 희소성(random sparsity), 및 블록 단위 희소성(block-wise sparsity)과 같은 희소성 포맷들은 성능 모델들의 입력으로서 포함될 수 있다. 포맷-변환 옵티마이저 회로(101)는 작은 크기의 메모리를 갖는 마이크로 컨트롤러(microcontroller)를 포함하여, NPU의 데이터 플로우(dataflow)의 해석적 모델링(analytic modeling)을 제공할 수 있는 성능 모델을 구동할 수 있다. 보다 상세하게는, 공간 병렬 처리(spatial parallelism), 실행의 순서(order-of-execution), 온/오프-칩 메모리 스케쥴링(on/off-chip-memory scheduling), 및 멀티-코어(multi-core) 스케쥴링을 포함할 수 있는 NPU 내의 데이터 플로우는, 타입루프 타입 모델링(timeloop-type modeling) 및/또는 다른 데이터 플로우 표현 모델링과 유사한 for-루프 표현에 의해 설명될 수 있다. 성능 모델은 데이터 플로우를 분석할 수 있고, 각 압축-포맷 변환에 대한 대략적인 레이턴시, 활용도(utilization), 요구되는 메모리 대역폭, 요구되는 기능, 공간적 및 시간적 데이터 재활용, 및 전력 효율성을 계산할 수 있다.
포맷-변환 옵티마이저 회로(101)는 최고의 성능, 또는 적어도 개선된 성능을 제공하는 것으로 추정되고, 상대적으로 적은 변환 비용을 갖는 메모리들(103 및 104) 둘 다를 위한 비트 플레인 압축 포맷들을 선택할 수 있다. 선택된 비트 플레인 포맷들의 표시는 압축 변환기 회로(102)으로 출력일 수 있다.
압축 변환기 회로(102)는 메모리 압축 포맷들을 가속기 압축 포맷들로 변환하도록 구성될 수 있다. 부가적으로, 압축 변환기 회로(102)는, 프리픽스-썸(prefix-sum), 메모리 컨트롤러, 병렬 나누기/계수 계산기들(parallel divide/modulus calculators), 및 비교기(comparator)들과 같은 기능들, 및 다른 포맷 특정 모듈 (format specific module)들을 제공할 수 있다. 일 실시 예에서, 압축 변환기 회로(102)는, 기능을 제공하는 명령어들을 저장하고 변환 연산들을 수행하기 위한 연관된 메모리를 갖는, 컨트롤러 또는 마이크로 컨트롤러로서 실시될 수 있다.
압축 변환기 회로(102)는, 다양한 압축 포맷들 간의 변환을 위해서, 포맷-변환 옵티마이저 회로(101)에 의해 생성되는 비트 플레인 압축 변환 포맷에 응답해야 하도록 구성될 수 있다. 일 실시 예에서, 압축 변환기 회로(102)는, RLE(run length encoding), ZVC(zero value compression), CSC(compressed sparse column) 인코딩, 또는 CSR(compressed sparse row) 인코딩과 같지만 이에 국한되지는 않는 비트-플레인 압축 포맷들을 사용할 수 있다.
도 2는 활성화 분포(distribution of activation) 또는 가중치 값(weight value)들이 작은 값 또는 0(zero)에 집중되는 경우, 압축/압축 해제 동작(200)을 도시한다. 그래프(201)는 데이터 세트(또는 비트 플레인 데이터 세트)의 값들의 히스토그램을 도시한다. X축은 데이터의 값들을 가리키고, Y축은 특정 값을 갖는 데이터의 개수(#values)를 가리킨다. 데이터 값들의 이러한 분포는, 효율적으로 202에서 비트 플레인(또는 니블-기반) 압축 기술을 사용하여 압축될 수 있다. 압축 데이터는 다음으로 비트 플레인(또는 니블-기반) 압축 해제 기술을 사용하여 압축 해제되어 데이터를 검색할 수 있다.
데이터 세트의 데이터가 큰 값들에 집중되는 상황에서, 비트 플레인 및/또는 니블-기반 압축은 효율적이지 않을 수 있다. 도 3은 데이터 세트(또는 비트 플레인 데이터 세트)의 데이터가 큰 값들에 집중되는 경우에 사용될 수 있는 값-반전 기술(value-inversion technique)을 도시한다. 301에서 그래프는 데이터 세트의 값을 도시하고, X축은 데이터의 값들을 가리키고, Y축은 특정 값을 갖는 데이터의 개수(#values)를 가리킨다. 값들의 분포는 302에서 탐지될 수 있고, 값 반전 기법은 비트-플레인 또는 니블-기반 압축 기법을 사용함으로써 효율적으로 압축될 값을 정렬하는데 사용할 수 있다. 예시 반전 기술은 선형 변환(예를 들어, )일 수 있고, 데이터 값들은 304에서 도시된 바와 같은 히스토그램을 가질 수 있다. 메타 데이터는 생성되어, 데이터의 값-반전을 기록(record)할 수 있다. 비트 플레인(또는 니블-기반) 압축은 305에서 적용될 수 있다. 데이터가 압축 해제되는 경우, 데이터 값들은 304에서 도시된 것과 같은 306에 도시된 히스토그램을 가질 수 있다. 메타데이터는 다른 반전 기술(예를 들어, )을 307에서 적용하도록 사용되어, 308에서 데이터를 검색할 수 있고, 데이터는 301에서와 같은 히스토그램을 가질 수 있다.
도 4에서 히스토그램(401)과 같이 데이터 세트의 값들의 히스토그램이 하나 이상의 값 피크(value peak)들을 갖는 상황에서, 값들의 범위(range)는 둘 이상의 지역들로 분리될 수 있다. 값들의 분포는 402에서 탐지될 수 있고, 값-반전 기술은 사용되어 값들을 피크(p)로 상승하는 값들의 범위 내에서 배열할 수 있다. 예시 반전 기술은 범위 내의 데이터 값들에 대한 선형 변환(예를 들어, )일 수 있고, 데이터의 값들의 완전한 히스토그램은 404에 도시된 히스토그램과 같이 나타날 수 있다. 메타 데이터는 생성되어, 데이터의 값 반전을 기록할 수 있다. 비트 플레인(또는 니블-반전) 압축은 405에서 적용될 수 있다. 데이터가 압축 해제되는 경우, 데이터 값들은 406에 도시된 것과 같은 히스토그램을 가질 수 있고, 이는 404에 도시된 것과 같을 수 있다. 메타데이터는 다른 반전 기술(예를 들어, )을 407에서 적용하도록 사용되어, 408에서 데이터를 검색할 수 있고, 데이터는 401에서와 동일한 히스토그램을 가질 수 있다.
도 5는 본 명세서에 게시된 주제에 따라, 런타임 재구성 가능 비트 플레인 압축 포맷 변환기를 포함하는 전자 장치(500)를 도시한다. 전자 장치(500) 및 전자 장치(500)의 다양한 시스템 구성 요소들은 하나 이상의 모듈로부터 형성될 수 있다. 전자 장치(500)는, 버스(590; bus)를 통해 상호 간에 연결될 수 있는 컨트롤러(510; 또는 CPU), 입출력 장치(520), 메모리(530), 인터페이스(540), GPU(550; graphics processing unit), 이미지 프로세싱 유닛(560; image processing unit), 신경 프로세싱 유닛(570; neural processing unit), 및 TOF 프로세싱 유닛(580; TOF processing unit)을 포함할 수 있다. 입출력 장치(520)는 키패드(keypad), 키보드, 디스플레이, 터치 스크린 디스플레이, 2D 이미지 센서, 3D 이미지 센서와 같을 수 있지만, 이들에 국한되는 것은 아니다. 일 실시 예에서, 전자 장치(500)는 런타임 재구성 가능 비트 플레인 압축 포맷 변환기(runtime reconfigurable bit-plane compression format converter)를 포함할 수 있다. 런타임 재구성 가능 비트 플레인 압축 포맷 변환기는 신경 프로세싱 유닛(570)의 동작과 연결되는 비트 플레인 데이터 압축 포맷들을 변환할 수 있다. 일 실시 예에서, 2D 이미지 센서 및/또는 3D 이미지 센서는 이미지 프로세싱 회로(560)의 일부분일 수 있다. 다른 실시 예에서, 3D 이미지 센서는 TOF 프로세싱 유닛(580)의 일부분일 수 있다. 예를 들어, 컨트롤러(510)는 적어도 하나의 마이크로프로세서(microprocessor), 적어도 하나의 디지털 신호 프로세서(digital signal processor), 또는 적어도 하나의 마이크로컨트롤러(microcontroller) 등을 포함할 수 있다. 메모리(530)는, 컨트롤러(510)에 의해 사용되는 커맨드 코드(command code)들을 저장하거나, 또는 사용자 데이터(user data)를 저장하도록 구성될 수 있다.
인터페이스(540)는 RF 신호를 사용하여, 예를 들어 무선 통신 네트워크로 데이터를 송신하거나, 또는 무선 통신 네트워크로부터 데이터를 수신하도록 구성되는 무선 인터페이스를 포함할 수 있다. 무선 인터페이스(540)는 예를 들어, 안테나를 포함할 수 있다. 전자 시스템(500)은 통신 시스템의 통신 인터페이스 프로토콜 내에서 사용될 수 있는데, 프로토콜은, CDMA(code division multiple access), GSM(global system for mobile communications), NADC(north American digital communications), E-TDMA(extended time division multiple access), WCDMA(wideband CDMA), CDMA5000, Wi-Fi, 공중 Wi-Fi(Muni Wi-Fi; municipal Wi-Fi), 블루투스(Bluetooth), DECT(digital enhanced cordless telecommunications), 무선 USB(universal serial bus), Flash-OFDM(fast low-latency access with seamless handoff Orthogonal Frequency Division Multiplexing), IEEE 802.20, GPRS(general packet radio service), iBurst, Wibro(wireless broadband), WiMAX, WiMAX-Advanced, UMTS-TDD(universal mobile telecommunication service - time division duplex), HSPA(high speed packet access), EVDO(evolution data optimized), LTE-Advanced(long term evolution - advanced), MMDS(multichannel multipoint distribution service), 5G(generation wireless), 6G, 등과 같을 수 있다.
본 명세서에 설명된 주제 및 동작들의 실시 예들은, 본 명세서에 게시된 구조들 및 그들의 균등물들 또는 그들의 하나 이상의 조합들을 포함하는, 디지털 전자 회로, 또는 컴퓨터 소프트웨어, 펌웨어, 또는 하드웨어 내에서 구현될 수 있다. 본 명세서에 설명된 주제의 실시예들은 하나 이상의 컴퓨터 프로그램(computer program) 즉, 컴퓨터 프로그램 명령어들의 하나 이상의 모듈들로 구현될 수 있다. 컴퓨터 프로그램은 데이터 처리 장치에 의해 실행되거나, 또는 데이터 처리 장치의 동작을 제어하기 위해 컴퓨터 스토리지 매체(computer storage medium)에 인코딩(encoded)될 수 있다. 대체적으로 또는 부가적으로, 프로그램 명령어는, 인공적으로 생성된 전파 신호, 예를 들어, 기계 생성 전기적, 광학적, 또는 전자기적 신호로 인코딩 될 수 있다 이들 신호는 생성되어, 데이터 프로세싱 장치에 의한 실행되도록 적합한 수신기로 전송하기 위해 정보를 인코딩 할 수 있다. 컴퓨터 스토리지 매체는, 컴퓨터 판독가능 스토리지 장치(computer-readable storage device), 컴퓨터 판독 가능 스토리지 기판(computer-readable storage substrate), 랜덤 또는 직렬 액세스(random or serial-access) 메모리 어레이(array) 또는 장치, 또는 그들의 조합일 수 있거나, 또는 이들에 포함될 수 있다. 게다가, 컴퓨터 스토리지 매체는 전파 신호가 아니지만, 인공적으로 생성된 전파 신호 내에 인코딩 된 컴퓨터 프로그램 명령어의 소스(source) 또는 목적지(destination)일 수 있다. 컴퓨터 스토리지 매체는 또한, 하나 이상의 분리된 물리 구성요소들 또는 미디어(예를 들어, 다중의 CD들, 디스크들(disks), 또는 다른 스토리지 장치들)일 수 있거나, 또는 이들 내에 포함될 수 있다. 부가적으로, 본 명세서에 설명된 동작들은 데이터 상에서 수행되는 동작들로 구현될 수 있고, 여기서 데이터는 하나 이상의 컴퓨터 판독가능 스토리지 디바이스들에 저장되거나, 또는 다른 소스(other source)들로부터 수신될 수 있다.
본 명세서가 많은 임의의 구현의 세부 사항들을 포함함에도 불구하고, 세부적인 구현들은, 임의의 청구되는 주제의 범위로 국한하는 것으로 해석이 되서는 안되고, 특정 실시 예들에 특정되는 특징들의 설명으로서 해석되어야 한다. 분리된 실시 예들의 맥락으로 본 명세서에서 설명되는 특정 특징들(certain features)은, 또한 단일 실시 예들의 조합으로 구현될 수 있다. 반대로, 단일 실시 예의 맥락으로 설명된 다수의 특징들은 또한, 분리되어 다중의 실시 예들로 구현되거나, 또는 임의의 적절한 하위 조합으로 구현될 수 있다. 게다가, 특징들이, 특정한 조합으로 동작하는 것으로 설명될 수 있고, 처음에는 그와 같이 청구되었다고 하더라도, 청구된 조합으로부터 하나 이상의 특징들은, 일부 경우들에서, 조합으로부터 제외될 수 있고, 청구된 조합은, 하위 조합 또는 하위 조합의 변형으로 지시될 수 있다.
유사하게, 동작들이 도면 내에서 특정한 순서로 도시되는 경우, 이러한 도시가 요구되는 결과들을 달성하기 위해 그러한 동작이 도시된 특정한 순서 또는 연속적인 순서로 수행되는 것으로 이해되어서는 안 되거나, 또는 도시된 동작들이 모두 수행되는 것을 요구함으로 이해되어서는 안 된다. 특정한 상황들에서, 멀티태스킹(multitasking) 및 병렬 프로세싱(parallel processing)은 이점이 있을 수 있다. 게다가, 상술된 실시 예들 내에서 다양한 시스템 구성 요소들의 분리는, 그러한 분리를 모든 실시 예들에서 요구하는 것으로 이해되어서는 안 된다. 설명된 프로그램 구성 요소들 또는 시스템들이 일반적으로 단일 소프트웨어 상품 또는 함께 결합될 수 있거나, 다중의 소프트웨어 상품들 내에 패키징(packaged) 될 수 있는 것으로 이해되어야 한다.
따라서, 본 발명의 특정한 실시 예들이 본 명세서에서 설명되었다. 다른 실시 예들은 후술할 청구항들의 범위에 내에 있을 수 있다. 일부 경우들에서, 청구항들 내에서 후술될 동작들은 다른 순서로 동작될 수 있고, 요구되는 결과들을 여전히 달성할 수 있다. 부가적으로, 첨부된 도면 내에서 설명된 프로세스(process)들이 요구되는 결과들을 달성하기 위해, 도시된 순서, 또는 연속전인 순서를 필수적으로 요구는 것은 아니다. 부가적으로, 첨부된 도면들 내에서 설명되는 프로세스들이 요구하는 결과들을 달성하기 위해, 도시된 특정한 순서 또는 연속적 순서를 필수적으로 요구하는 것은 아니다. 특정한 구현들에서, 멀티태스킹 및 병렬프로세싱은 이점이 있을 수 있다.
본 발명의 기술 분야의 통상의 기술자에게 인식되는 바와 같이, 본 명세서에 설명된 발명적 관점들은, 넓은 범위의 애플리케이션에 걸쳐 수정 및 변형될 수 있다. 따라서, 청구된 주제의 범위는 임의의 위에서 논의된 특정 예시적인 교시들에 국한되어서는 안 되고, 대신 다음 청구항들에 의해 정의될 수 있다.
Claims (10)
- 프로세싱 요소에 대한 데이터-포맷 옵티마이저에 있어서,
상기 프로세싱 요소 외부의 제1 메모리에 저장되는 제1 비트 플레인 데이터의 제1 희소성 패턴, 및 상기 프로세싱 요소 내부의 제2 메모리에 저장되는 제2 비트 플레인 데이터의 제2 희소성 패턴에 기반 되는 제1 성능 모델의 적어도 일부를 기반으로 상기 프로세싱 요소의 런타임 동안, 제1 비트 플레인 압축-변환 포맷을 선택하도록 구성되고, 상기 제2 희소성 패턴은 상기 프로세싱 요소의 런타임 구성에 기반 되고, 상기 제1 비트 플레인 데이터는 제1 비트 플레인 압축 포맷을 사용하여 상기 제1 메모리에 저장되고, 제2 압축 포맷을 사용하여 상기 제2 메모리에 저장되는 제2 비트 플레인 압축 포맷으로 변환되는 희소성 탐지 회로; 및
상기 제1 비트 플레인 압축-변환 포맷을 기반으로, 상기 제1 비트 플레인 압축 포맷 내의 상기 제1 비트 플레인 데이터를 변환하여, 상기 제2 비트 플레인 압축 포맷 내의 상기 제2 비트 플레인 데이터가 되게 하도록 구성되는 압축-변환 회로를 포함하는 데이터 포맷 옵티마이저. - 제 1 항에 있어서,
상기 제1 성능 모델은 상기 제1 비트 플레인 데이터를 상기 제2 비트 플레인 데이터로 변환하는 것과 연관되는 레이턴시(latency)를 더 포함하는 데이터 포맷 옵티마이저. - 제 2 항에 있어서,
상기 제1 성능 모델은 상기 제1 비트 플레인 데이터를 상기 제2 비트 플레인 데이터로 변환하는 것과 연관되는 에너지 소비량을 더 포함하는 데이터 포맷 옵티마이저. - 제 1 항에 있어서,
상기 제1 성능 모델은 상기 제1 비트 플레인 데이터를 상기 제2 비트 플레인 데이터로 변환하는 것과 연관되는 에너지 소비량을 더 포함하는 데이터 포맷 옵티마이저. - 제 1 항에 있어서,
상기 희소성 탐지 회로는, 상기 프로세싱 요소 내부의 제3 메모리에 저장되는 출력 비트 플레인 데이터의 제3 희소성 패턴에 기반 되는 제2 성능 모델의 적어도 일부를 기반으로 상기 프로세싱 요소의 런타임 동안, 제2 압축-변환 포맷을 선택하도록 더 구성되고,
상기 압축-변환 회로는 상기 출력 비트 플레인 데이터를, 상기 제1 메모리 내의 스토리지(storage)에 대한 상기 제2 압축-변환 포맷에 기반 되는 제3 압축 포맷으로 변환하도록 구성되는 데이터 포맷 옵티마이저. - 제 1 항에 있어서,
상기 희소성 탐지 회로는 상기 제1 성능 모델이 선택되는 둘 이상의 성능 모델들을 생성하도록 더 구성되는 데이터 포맷 옵티마이저. - 제 6 항에 있어서,
상기 희소성 탐지 회로는 상기 제1 비트 플레인 데이터의 상기 제1 희소성 패턴을 샘플링(sample)하여, 상기 둘 이상의 성능 모델들을 생성하도록 구성되는 데이터 포맷 옵티마이저. - 제 7 항에 있어서,
상기 희소성 탐지 회로는 상기 프로세싱 요소의 희소성 동작 모드(operational mode)를 더 기반으로, 상기 둘 이상의 성능 모델들을 생성하도록 구성되는 데이터 포맷 옵티마이저. - 제 1 항에 있어서,
상기 제1 비트 플레인 압축 포맷 및 상기 제2 비트 플레인 압축 포맷의 적어도 하나는 RLE(run length encoding), ZVC(zero value compression), CSC(compressed sparse column) 인코딩, 또는 CSR(compressed sparse row) 인코딩을 포함하는 데이터 포맷 옵티마이저. - 프로세싱 요소에 대한 데이터 포맷 옵티마이저에 있어서,
상기 프로세싱 요소의 런타임 동안, 제1 비트 플레인 압축 포맷 내의 제1 메모리에 저장된 제1 비트 플레인 데이터의 제1 희소성 패턴 및 제2 비트 플레인 압축 포맷 내의 제2 메모리에 저장된 제2 비트 플레인 데이터의 제2 희소성 패턴에 기반 되는 적어도 하나 이상의 성능 모델들을 생성하도록 구성되고, 상기 제1 메모리는 상기 프로세싱 요소의 외부에 위치하고, 상기 제2 메모리는 상기 프로세싱 요소의 내부에 위치하고, 그리고 상기 하나 이상의 성능 모델들 중 하나의 선택의 적어도 일부를 기반으로 제1 비트 플레인 압축-변환 포맷을 결정하도록 구성되는 희소성 탐지 회로; 및
상기 제1 비트 플레인 압축-변환 포맷을 기반으로, 상기 제1 비트 플레인 압축 포맷 내의 상기 제1 비트 플레인 데이터를 상기 제2 비트 플레인 압축 포맷 내의 상기 제2 비트 플레인 데이터로 변환하도록 구성되는 압축-변환 회로를 포함하는 데이터 포맷 옵티마이저.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202263426029P | 2022-11-16 | 2022-11-16 | |
US63/426,029 | 2022-11-16 | ||
US18/096,557 US20240162917A1 (en) | 2022-11-16 | 2023-01-12 | Runtime reconfigurable compression format conversion with bit-plane granularity |
US18/096,557 | 2023-01-12 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20240072912A true KR20240072912A (ko) | 2024-05-24 |
Family
ID=91027551
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020230135902A KR20240072912A (ko) | 2022-11-16 | 2023-10-12 | 비트 플레인 세분성을 갖는 런타임 재구성 가능 압축 포맷 변환 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20240162917A1 (ko) |
KR (1) | KR20240072912A (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118212116A (zh) * | 2024-05-21 | 2024-06-18 | 沐曦科技(北京)有限公司 | 一种数据压缩系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11392829B1 (en) * | 2018-05-02 | 2022-07-19 | Nvidia Corporation | Managing data sparsity for neural networks |
US20210065052A1 (en) * | 2019-08-26 | 2021-03-04 | Nvidia Corporation | Bayesian optimization of sparsity ratios in model compression |
-
2023
- 2023-01-12 US US18/096,557 patent/US20240162917A1/en active Pending
- 2023-10-12 KR KR1020230135902A patent/KR20240072912A/ko unknown
Also Published As
Publication number | Publication date |
---|---|
US20240162917A1 (en) | 2024-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Wang et al. | Design flow of accelerating hybrid extremely low bit-width neural network in embedded FPGA | |
Guo et al. | [DL] A survey of FPGA-based neural network inference accelerators | |
Xia et al. | SparkNoC: An energy-efficiency FPGA-based accelerator using optimized lightweight CNN for edge computing | |
KR20240072912A (ko) | 비트 플레인 세분성을 갖는 런타임 재구성 가능 압축 포맷 변환 | |
US8847798B2 (en) | Systems and methods for data compression and parallel, pipelined decompression | |
Garland et al. | Low complexity multiply-accumulate units for convolutional neural networks with weight-sharing | |
Cavigelli et al. | EBPC: Extended bit-plane compression for deep neural network inference and training accelerators | |
CN102694554A (zh) | 数据压缩设备、其操作方法以及包括该设备的数据处理装置 | |
Mei et al. | A 200mhz 202.4 gflops@ 10.8 w vgg16 accelerator in xilinx vx690t | |
Pastuszak | Hardware architectures for the H. 265/HEVC discrete cosine transform | |
CN107680144A (zh) | 一种WebP文件转换的方法及装置 | |
Piyasena et al. | Reducing dynamic power in streaming CNN hardware accelerators by exploiting computational redundancies | |
Makrani et al. | Compressive sensing on storage data: An effective solution to alleviate i/0 bottleneck in data-intensive workloads | |
Habboush et al. | DE-ZFP: An FPGA implementation of a modified ZFP compression/decompression algorithm | |
Montgomerie-Corcoran et al. | DEF: Differential encoding of featuremaps for low power convolutional neural network accelerators | |
Deepthi et al. | RTL implementation of image compression techniques in WSN | |
KR20240072919A (ko) | 런타임 재구성 가능 압축 포맷 변환 | |
Huang et al. | A low-bit quantized and hls-based neural network fpga accelerator for object detection | |
Zhao et al. | An optimization method of WebP images lossy compression algorithm for FPGAs | |
Hameed et al. | Dynamic Power Reduction in Huffman Design using 130 nm Technology Library | |
Zhao et al. | High-efficiency customized coarse-grained dynamically reconfigurable architecture for JPEG2000 | |
KR20220100030A (ko) | 패턴 기반 캐시 블록 압축 | |
Norollah et al. | 3D-Sorter: 3D design of a Resource-aware Hardware Sorter for Edge Computing Platforms under Area and Energy consumption constraints | |
Choi et al. | Energy efficient and low-cost server architecture for hadoop storage appliance | |
Jiancheng et al. | Block‐Split Array Coding Algorithm for Long‐Stream Data Compression |