KR20210086936A - 데이터 출력 방법, 획득 방법, 장치 및 전자 기기 - Google Patents

데이터 출력 방법, 획득 방법, 장치 및 전자 기기 Download PDF

Info

Publication number
KR20210086936A
KR20210086936A KR1020200075737A KR20200075737A KR20210086936A KR 20210086936 A KR20210086936 A KR 20210086936A KR 1020200075737 A KR1020200075737 A KR 1020200075737A KR 20200075737 A KR20200075737 A KR 20200075737A KR 20210086936 A KR20210086936 A KR 20210086936A
Authority
KR
South Korea
Prior art keywords
block
data
data sub
sub
compression
Prior art date
Application number
KR1020200075737A
Other languages
English (en)
Other versions
KR102542239B1 (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 KR20210086936A publication Critical patent/KR20210086936A/ko
Application granted granted Critical
Publication of KR102542239B1 publication Critical patent/KR102542239B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/02Comparing digital values
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural 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
    • 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
    • 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
    • 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
    • H03M7/3064Segmenting
    • 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
    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24568Data stream processing; Continuous queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Mathematical Physics (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Databases & Information Systems (AREA)

Abstract

본 출원은 데이터 출력 방법, 획득 방법, 장치 및 전자 기기를 제공하며, 뉴럴 네트워크 기술분야에 관한 것이다. 구체적인 기술방안으로서, 상기 데이터 출력 방법은, 제1 데이터 서브 블록을 판독하고, 상기 제1 데이터 서브 블록을 연속적 데이터 스트림으로 스플라이싱하는 단계 - 상기 제1 데이터 서브 블록은 뉴럴 네트워크 운반 데이터 중의 데이터 서브 블록임 - ; 상기 연속적 데이터 스트림에 대해 압축을 진행하여, 제2 데이터 서브 블록을 얻는 단계; 상기 제1 데이터 서브 블록의 길이 및 상기 제2 데이터 서브 블록의 길이에 의거하여, 상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재하는지 여부를 판단하는 단계; 및 상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재하면, 상기 제2 데이터 서브 블록을 출력하는 단계; 를 포함한다. 본 출원은, 뉴럴 네트워크의 성능을 향상시킬 수 있는 기술적 효과를 갖는다.

Description

데이터 출력 방법, 획득 방법, 장치 및 전자 기기{DATA OUTPUT METHOD, DATA ACQUISITION METHOD, DEVICE, AND ELECTRONIC EQUIPMENT}
본 출원은 컴퓨터 기술 중 뉴럴 네트워크 기술분야에 관한 것으로, 특히 데이터 출력 방법, 획득 방법, 장치 및 전자 기기에 관한 것이다.
현재, 뉴럴 네트워크가 널리 응용되고 있는바, 예를 들어, 콘벌루셔널 딥 뉴럴 네트워크(Convolutional Deep Nueral Networks, CDNN)가 음성 인식, 이미지 인식, 자연어 처리 등과 같은 인터넷 응용에 널리 응용되고 있다. 하지만, 뉴럴 네트워크 계산은 흔히 뉴럴 네트워크 프로세서(Neural Processing Unit, NPU)내에서 완성되고, 뉴럴 네트워크 계산을 수행한 후에 계산 결과를 오프-칩 메모리로 되돌려 운반해야 하는데, 오프-칩 메모리의 대역폭에 한계가 있기 때문에, 많은 실제 서비스 시나리오에서, 온-칩 및 오프-칩 데이터 운반 시간이 실제 계산 시간을 초과하게 되어, 뉴럴 네트워크의 성능이 비교적 낮아지게 된다.
본 출원은 데이터 출력 방법, 획득 방법, 장치 및 전자 기기를 제공하여, 뉴럴 네트워크의 성능이 비교적 낮다는 과제를 해결하고자 한다.
제1 측면에 있어서, 본 출원은 데이터 출력 방법을 제공한다. 상기 방법은,
제1 데이터 서브 블록을 판독하고, 상기 제1 데이터 서브 블록을 연속적 데이터 스트림으로 스플라이싱하는 단계 - 상기 제1 데이터 서브 블록은 뉴럴 네트워크 운반 데이터 중의 데이터 서브 블록임 - ;
상기 연속적 데이터 스트림에 대해 압축을 진행하여, 제2 데이터 서브 블록을 얻는 단계;
상기 제1 데이터 서브 블록의 길이 및 상기 제2 데이터 서브 블록의 길이에 의거하여, 상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재하는지 여부를 판단하는 단계; 및
상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재하면, 상기 제2 데이터 서브 블록을 출력하는 단계; 를 포함한다.
뉴럴 네트워크 운반 데이터의 데이터 서브 블록에 대해 압축을 진행하며, 압축에 게인이 존재할 경우에 압축하여 얻은 데이터를 출력하기 때문에, 데이터 운반의 효율을 향상시킬 수 있고, 나아가 뉴럴 네트워크의 성능을 향상시킨다.
선택적으로, 상기 제1 데이터 서브 블록의 길이 및 상기 제2 데이터 서브 블록의 길이에 의거하여, 상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재하는지 여부를 판단하는 단계는,
상기 제1 데이터 서브 블록의 길이, 목적지 어드레스 및 메모리 버스 비트폭(bit width)에 의거하여, 상기 제1 데이터 서브 블록 전송에 필요한 비트(beat)수를 계산하고, 상기 제2 데이터 서브 블록의 길이, 상기 목적지 어드레스 및 상기 메모리 버스 비트폭에 의거하여, 상기 제2 데이터 서브 블록 전송에 필요한 비트수를 계산하여, 상기 제2 데이터 서브 블록 전송에 필요한 비트수가 상기 제1 데이터 서브 블록 전송에 필요한 비트수보다 작으면, 상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재함을 확정하고, 반대의 경우, 상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재하지 않음을 확정하는 단계; 를 포함하고, 상기 목적지 어드레스는 상기 제1 데이터 서브 블록의 목적지 어드레스이다.
본 실시 형태에서, 상기의 전송에 필요한 비트수에 의해, 압축 게인이 존재하는지 여부를 정확하게 확정할 수 있다.
선택적으로, 상기 방법은,
길이 필드를 저장하는 단계; 를 더 포함하고, 상기 길이 필드는, 상기 제1 데이터 서브 블록의 길이 및 상기 제2 데이터 서브 블록의 길이 중 작은 값을 나타내기 위한 것이고; 상기 길이 필드는, 데이터를 판독할 때 상기 길이 필드에 대응되는 데이터 서브 블록을 판독하기 위한 것이다.
본 실시 형태에서, 길이 필드를 저장하기 때문에, 따라서 데이터를 판독할 때, 데이터 서브 블록이 정확하게 판독될 수 있다.
선택적으로, 상기 방법은,
상기 제2 데이터 서브 블록을 출력하면, 상기 제2 데이터 서브 블록의 플래크 비트를 저장하는 단계; 를 더 포함하고, 상기 저장된 플래크 비트는, 상기 제2 데이터 서브 블록이 압축될 때 압축 게인이 존재하는지 여부를 지시하기 위한 것이다.
플래크 비트를 저장하기 때문에, 따라서 제2 데이터 서브 블록을 판독할 때, 압축 해제를 진행해야 하는지 여부를 정확하게 판단할 수 있어, 압축 해제 오류를 피하고, 데이터 처리 성능을 한층 더 향상시키도록 한다.
선택적으로, 상기 뉴럴 네트워크 운반 데이터는 복수 개의 제1 유형의 데이터 서브 블록을 포함하고, 각각의 제1 유형의 데이터 서브 블록의 크기는 동일하며;
상기 연속적 데이터 스트림에 대해 압축을 진행하여, 제2 데이터 서브 블록을 얻는 단계는,
상기 제1 데이터 서브 블록이 제1 유형의 데이터 서브 블록인지 여부를 판단하여, 상기 제1 데이터 서브 블록이 제1 유형의 데이터 서브 블록이면, 상기 연속적 데이터 스트림에 대해 압축을 진행하여, 제2 데이터 서브 블록을 얻는 단계; 를 포함한다.
본 실시 형태에서, 오직 제1 유형의 데이터 서브 블록에 대해 압축을 진행하는 것을 실현할 수 있는바, 따라서 압축 후의 데이터 서브 블록에 압축 게인이 존재하는 확률을 높여, 데이터 압축 성능을 향상시킬 수 있다.
선택적으로, 상기 뉴럴 네트워크 운반 데이터는 제2 유형의 데이터 서브 블록 및/또는 제3 유형의 데이터 서브 블록을 더 포함하고, 상기 제2 유형의 데이터 서브 블록 및/또는 제3 유형의 데이터 서브 블록은 상기 뉴럴 네트워크 운반 데이터가 상기 복수 개의 제1 유형의 데이터 서브 블록으로 분할된 후 남은 데이터로 구성된 데이터 서브 블록이다.
본 실시 형태에서, 제2 유형의 데이터 서브 블록 및 제3 유형의 데이터 서브 블록에 대해 압축을 진행하지 않는 것을 실현할 수 있는바, 따라서 압축 후의 데이터 서브 블록에 압축 게인이 존재하는 확률을 높여, 데이터 압축 성능을 향상시킬 수 있다.
선택적으로, 상기 방법은,
상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재하지 않으면, 상기 제1 데이터 서브 블록을 출력하는 단계; 를 더 포함한다.
본 실시 형태에서, 상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재하지 않으면, 상기 제1 데이터 서브 블록을 출력하기 때문에, 따라서 게인이 존재하지 하지 않을 경우에 제2 데이터 서브 블록을 출력하여 오히려 초래되는 데이터 운반 효율이 저화되는 문제점을 피할 수 있다.
제2 측면에 있어서, 본 출원은 데이터 획득 방법을 제공한다. 상기 방법은,
제2 데이터 서브 블록의 길이를 판독하는 단계;
제2 데이터 서브 블록을 판독하는 단계;
상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록인지 여부를 판단하는 단계; 및
상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록이면, 상기 제2 데이터 서브 블록에 대해 압축 해제를 진행하고, 상기 압축 해제 후의 데이터를 저장하는 단계; 를 포함한다.
선택적으로, 상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록인지 여부를 판단하는 단계는,
상기 제2 데이터 서브 블록의 길이에 의거하여, 상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록인지 여부를 판단하는 단계; 또는
상기 제2 데이터 서브 블록의 플래크 비트를 판독하고, 상기 플래크 비트에 의거하여 상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록인지 여부를 판단하는 단계 - 상기 플래크 비트는 상기 제2 데이터 서브 블록이 압축될 때 압축 게인이 존재하는지 여부를 지시하기 위한 것임 - ; 를 포함한다.
선택적으로, 상기 제2 데이터 서브 블록의 길이에 의거하여, 상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록인지 여부를 판단하는 단계는,
상기 제2 데이터 서브 블록에 대응되는 오리지널 길이, 저장 어드레스 및 메모리 버스 비트폭에 의거하여 상기 제2 데이터 서브 블록의 오리지널 데이터 전송에 필요한 비트수를 계산하고, 상기 제2 데이터 서브 블록의 길이, 상기 저장 어드레스 및 상기 메모리 버스 비트폭에 의거하여 상기 제2 데이터 서브 블록 전송에 필요한 비트수를 계산하여, 상기 제2 데이터 서브 블록 전송에 필요한 비트수가 상기 제2 데이터 서브 블록의 오리지널 데이터 전송에 필요한 비트수보다 작으면, 상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록임을 확정하고, 반대의 경우, 상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록이 아님을 확정하는 단계; 를 포함하고, 상기 저장 어드레스는 상기 제2 데이터 서브 블록의 저장 어드레스이다.
선택적으로, 상기 제2 데이터 서브 블록은 뉴럴 네트워크 운반 데이터 중의 데이터 서브 블록이고, 상기 뉴럴 네트워크 운반 데이터는 복수 개의 제1 유형의 데이터 서브 블록을 포함하고, 각각의 제1 유형의 데이터 서브 블록의 크기는 동일하며;
상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록인지 여부를 판단하는 단계는,
상기 제2 데이터 서브 블록이 제1 유형의 데이터 서브 블록인지 여부를 판단하여, 상기 제2 데이터 서브 블록이 제1 유형의 데이터 서브 블록이면, 상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록인지 여부를 판단하는 단계; 를 포함한다.
선택적으로, 상기 뉴럴 네트워크 운반 데이터는 제2 유형의 데이터 서브 블록 및/또는 제3 유형의 데이터 서브 블록을 더 포함하고, 상기 제2 유형의 데이터 서브 블록 및/또는 제3 유형의 데이터 서브 블록은 상기 뉴럴 네트워크 운반 데이터가 상기 복수 개의 제1 유형의 데이터 서브 블록으로 분할된 후 남은 데이터로 구성된 데이터 서브 블록이다.
선택적으로, 상기 방법은,
상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록이 아니면, 상기 제2 데이터 서브 블록을 저장하는 단계; 를 더 포함한다.
제3 측면에 있어서, 본 출원은 데이터 출력 장치를 제공한다. 상기 데이터 출력 장치는,
제1 데이터 서브 블록을 판독하고, 상기 제1 데이터 서브 블록을 연속적 데이터 스트림으로 스플라이싱하기 위한 판독 모듈 - 상기 제1 데이터 서브 블록은 뉴럴 네트워크 운반 데이터 중의 데이터 서브 블록임 - ;
상기 연속적 데이터 스트림에 대해 압축을 진행하여, 제2 데이터 서브 블록을 얻기 위한 압축 모듈;
상기 제1 데이터 서브 블록의 길이 및 상기 제2 데이터 서브 블록의 길이에 의거하여, 상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재하는지 여부를 판단하기 위한 판단 모듈; 및
상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재하면, 상기 제2 데이터 서브 블록을 출력하기 위한 제1 출력 모듈; 을 포함한다.
제4 측면에 있어서, 본 출원은 데이터 획득 장치를 제공한다. 상기 장치는,
제2 데이터 서브 블록의 길이를 판독하기 위한 제1 판독 모듈;
제2 데이터 서브 블록을 판독하기 위한 제2 판독 모듈;
상기 제2 데이터 서브 블록의 길이 또는 상기 플래크 비트에 의거하여, 상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록인지 여부를 판단하기 위한 판단 모듈; 및
상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록이면, 상기 제2 데이터 서브 블록에 대해 압축 해제를 진행하고, 상기 압축 해제 후의 데이터를 저장하기 위한 압축 해제 모듈; 을 포함한다.
제5 측면에 있어서, 본 출원은 전자 기기를 제공한다. 상기 전자 기기는,
적어도 하나의 프로세서; 및
상기 적어도 하나의 프로세서와 통신 연결되는 메모리; 를 포함하고,
상기 메모리에 상기 적어도 하나의 프로세서에 의해 실행가능한 명령이 저장되어 있고, 상기 명령은 상기 적어도 하나의 프로세서에 의해 실행되어, 상기 적어도 하나의 프로세서가 본 출원에 따른 데이터 출력 방법를 수행가능하도록 하거나, 또는 상기 적어도 하나의 프로세서가 본 출원에 따른 데이터 획득 방법을 수행가능하도록 한다.
제6 측면에 있어서, 본 출원은 컴퓨터 명령이 저장되어 있는 비-일시적 컴퓨터-판독가능 저장 매체를 제공한다. 상기 컴퓨터 명령은 상기 컴퓨터가 본 출원에 따른 데이터 출력 방법을 수행하도록 하기 위한 것이거나, 또는 상기 컴퓨터 명령은 상기 컴퓨터가 본 출원에 따른 데이터 획득 방법을 수행하도록 하기 위한 것이다.
상기의 출원에서의 일 실시예는 하기와 같은 이점 또는 유익한 효과를 갖는다. 즉,
제1 데이터 서브 블록을 판독하고, 상기 제1 데이터 서브 블록을 연속적 데이터 스트림으로 스플라이싱함에 있어서, 상기 제1 데이터 서브 블록은 뉴럴 네트워크 운반 데이터 중의 데이터 서브 블록이고; 상기 연속적 데이터 스트림에 대해 압축을 진행하여, 제2 데이터 서브 블록을 얻고; 상기 제1 데이터 서브 블록의 길이 및 상기 제2 데이터 서브 블록의 길이에 의거하여, 상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재하는지 여부를 판단하고; 상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재하면, 상기 제2 데이터 서브 블록을 출력함으로써, 뉴럴 네트워크의 성능이 비교적 낮다는 기술적 과제를 극복하고, 나아가 뉴럴 네트워크의 성능을 향상시키는 기술적 효과를 달성한다.
상기의 선택적인 형태들이 갖는 기타 효과들은 아래에서 구체적 실시예를 결부시켜 설명하기로 한다.
도면은 본 방안을 더 양호하게 이해하도록 하기 위한 것으로, 본 출원에 대한 한정을 구성하지 않는다.
도 1은 본 출원에 따른 일 데이터 출력 방법의 플로우차트이다.
도 2는 본 출원에 따른 다른 데이터 출력 방법의 플로우차트이다.
도 3은 본 출원에 따른 일 데이터 서브 블록의 분할 개략도이다.
도 4는 본 출원에 따른 데이터 서브 블록의 데이터 스트림 개략도이다.
도 5는 본 출원에 따른 데이터 서브 블록의 압축 개략도이다.
도 6은 본 출원에 따른 다른 데이터 서브 블록의 분할 개략도이다.
도 7은 본 출원에 따른 일 데이터 획득 방법의 플로우차트이다.
도 8은 본 출원에 따른 다른 데이터 출력 방법의 플로우차트이다.
도 9는 본 출원에 따른 다른 데이터 획득 방법의 플로우차트이다.
도 10은 본 출원에 따른 일 데이터 출력 장치의 구조도이다.
도 11은 본 출원에 따른 다른 데이터 출력 장치의 구조도이다.
도 12는 본 출원에 따른 다른 데이터 출력 장치의 구조도이다.
도 13은 본 출원에 따른 다른 데이터 출력 장치의 구조도이다.
도 14는 본 출원에 따른 일 데이터 획득 장치의 구조도이다.
도 15는 본 출원에 따른 다른 데이터 획득 장치의 구조도이다.
도 16은 본 출원에 따른 전자 기기의 블록도이다.
이하, 도면을 결부시켜 본 출원의 예시적인 실시예를 설명하기로 한다. 그 중, 본 출원의 실시예의 각종 세부가 포함되어 이해를 돕도록 하는데, 이들은 단지 예시적인 것으로 간주되어야 할 것이다. 따라서, 해당 기술분야에서 통상의 기술자들은, 본 출원의 범위와 정신을 일탈하지 않고 여기서 설명되는 실시예들에 대해 각종 변경 및 수정을 실시할 수 있다는 것을 인지해야 할 것이다. 마찬가지로, 명확성 및 간결성을 기하기 위하여, 아래의 설명에서 공지 기능 및 구조에 대한 설명을 생략한다.
도 1을 참조하면, 도 1은 본 출원에 따른 일 데이터 출력 방법의 플로우차트이다. 도 1이 나타내는 바와 같이, 하기 단계들이 포함된다.
단계 S101: 제1 데이터 서브 블록을 판독하고, 상기 제1 데이터 서브 블록를 연속적 데이터 스트림으로 스플라이싱한다. 상기 제1 데이터 서브 블록은 뉴럴 네트워크 운반 데이터 중의 데이터 서브 블록이다.
상기의 뉴럴 네트워크 운반 데이터는, 뉴럴 네트워크 계산을 수행한 후 얻은 데이터일 수 있는바, 예컨대, 가중치 매트릭스 또는 특징 맵(feature map) 등의 데이터일 수 있다. 상기의 데이터 서브 블록은 상기의 운반 데이터를 분할하여 얻은 복수 개의 데이터 서브 블록 중의 데이터 서브 블록일 수 있다.
상기의 제1 데이터 서브 블록의 어드레스 정보는 비연속적 어드레스 정보일 수 있는바, 즉 제1 데이터 서브 블록은 어드레스가 비연속적인 데이터를 포함한다. 상기의 제1 데이터 서브 블록을 판독하고, 상기 제1 데이터 서브 블록을 연속적 데이터 스트림으로 스플라이싱하는 것은, 상기 판독된 제1 데이터 서브 블록에 대해 시프팅 및 스플라이싱 처리를 진행하여, 상기 제1 데이터 서브 블록의 연속적이고 완전한 데이터 스트림을 얻는 것일 수 있다. 예를 들어, 제1 데이터 서브 블록의 어드레스 정보에 의거하여 제1 데이터 서브 블록의 데이터를 스킵하여 판독하고, 판독된 데이터를 연속적이고 완전한 데이터 스트림으로 스플라이싱한다. 여기서, 연속적이고 완전한 데이터 스트림은, 각 데이터 사이는 연속적이며 제1 데이터 서브 블록의 모든 데이터를 포함함을 가리킨다.
상기 제1 데이터 서브 블록을 연속적 데이터 스트림으로 스플라이싱하기 때문에, 따라서 비연속적인 데이터에 대해 압축을 진행하는 것을 지원가능하여, 압축 처리된 데이터 서브 블록의 크기를 증가시키고, 나아가 압축 처리 효율을 향상시킨다.
단계 S102: 상기 연속적 데이터 스트림에 대해 압축을 진행하여, 제2 데이터 서브 블록을 얻는다.
단계 S102에서, 상기 연속적 데이터 스트림에 대해 압축을 진행하는데 이용되는 압축 알고리즘은 제로값 압축, 런-랭스 인코딩, 허프만 인코딩, 골롬 부호화 등의 압축 알고리즘을 포함하나, 이에 한정되지 않는바, 본 출원은 압축 알고리즘을 구체적으로 한정하지 않는다.
상기의 제2 데이터 서브 블록은, 상기의 연속적 데이터 스트림에 대해 압축을 진행하여 얻은 압축 데이터로 이해될 수 있다.
단계 S103: 상기 제1 데이터 서브 블록의 길이 및 상기 제2 데이터 서브 블록의 길이에 의거하여, 상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재하는지 여부를 판단한다.
상기 제1 데이터 서브 블록의 길이 및 상기 제2 데이터 서브 블록의 길이에 의거하여, 상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재하는지 여부를 판단하는 것은, 제2 데이터 서브 블록의 길이가 제1 데이터 서브 블록의 길이보다 작은지 여부를 판단하여, 제2 데이터 서브 블록의 길이가 제1 데이터 서브 블록의 길이보다 작으면, 상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재함을 확정하고, 반대의 경우, 압축 게인이 존재하지 않음을 확정하는 것일 수 있다. 또는,
상기 제1 데이터 서브 블록의 길이, 목적지 어드레스 및 메모리 버스 비트폭에 의거하여, 상기 제1 데이터 서브 블록 전송에 필요한 비트수를 계산하고, 상기 제2 데이터 서브 블록의 길이, 상기 목적지 어드레스 및 상기 메모리 버스 비트폭에 의거하여, 상기 제2 데이터 서브 블록 전송에 필요한 비트수를 계산하여, 상기 제2 데이터 서브 블록 전송에 필요한 비트수가 상기 제1 데이터 서브 블록 전송에 필요한 비트수보다 작으면, 상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재함을 확정하고, 반대의 경우, 상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재하지 않음을 확정하는 것일 수 있으며, 상기 목적지 어드레스는 상기 제1 데이터 서브 블록의 목적지 어드레스일 수 있다.
설명해야 할 것은, 제2 데이터 서브 블록은 제1 데이터 서브 블록에 대해 압축을 진행하여 얻은 것이기 때문에, 따라서 양자의 목적지 어드레스는 관련될 수 있다.
상기의 상기 제1 데이터 서브 블록의 길이, 목적지 어드레스 및 메모리 버스 비트폭에 의거하여, 상기 제1 데이터 서브 블록 전송에 필요한 비트수를 계산하는 것은 하기와 같을 수 있다. 즉, 먼저, 목적지 어드레스 및 메모리 버스 비트폭에 의거하여 제1 데이터 서브 블록의 제1행에서 전송된 데이터 크기를 확정한다. 예를 들어, 제1행의 시작 어드레스가 메모리 버스 비트폭과 정렬되면, 제1행에서 전송되는 데이터 크기는 메모리 버스 비트폭과 같은바, 즉, 제1 비트에서 전송된 데이터 크기는 메모리 버스 비트폭과 같다. 제1행의 시작 어드레스가 메모리 버스 비트폭과 정렬되지 않으면, 제1행에서 전송된 데이터 크기는 제1행의 시작 어드레스와 메모리 버스 비트폭 경계 사이의 데이터 크기와 같은바, 즉, 제1 비트에서 전송된 데이터 크기는 제1행의 시작 어드레스와 메모리 버스 비트폭 경계 사이의 데이터 크기와 같다. 기타 행이 더 있을 경우, 제1행에서 전송된 데이터 크기를 확정한 후, 제1 데이터 서브 블록의 남은 데이터 크기를 메모리 버스 비트폭으로 나눗셈하여, 얻은 몫을 라운드업하여 정수를 취하면, 남은 비트수를 얻을 수 있다. 제2 데이터 서브 블록 전송에 필요한 비트수도 마찬가지인 것으로, 여기서 더이상 설명하지 않기로 한다.
예를 들어, 1024B의 어드레스 정렬 데이터(시작 어드레스가 메모리 버스 비트폭과 정렬)에 대해, 버스 비트폭이 64B일 경우, 버스 상에서의 데이터 전송을 완성하는데 16비트가 필요하고, 압축 후의 데이터 길이가 960B로 되면, 압축 후의 데이터 전송을 완성하는데 15비트만 필요하게 되는데, 이 경우, 당해 기초 블록을 압축하여 게인이 있다고 정의한다. 압축 후의 데이터 길이가 961B로 되면, 압축 후의 데이터는 데이터의 전송을 완성하는데 여전히 16비트가 필요하게 되어, 직접 오리지널 데이터을 전송하는 것에 비해 다름없는바, 이 경우, 당해 기초 블록을 압축하여 게인이 없다고 정의한다.
단계 S104: 상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재하면, 상기 제2 데이터 서브 블록을 출력한다.
상기의 상기 제2 데이터 서브 블록을 출력하는 것은, 제2 데이터 서브 블록에 대해 기입 조작을 수행하는 것일 수 있다. 예를 들어, 제2 데이터 서브 블록을 메모리에 기입하는데, 구체적으로는, 오프-칩 메모리에 기입하는 것일 수 있다.
설명해야 할 것은, 본 출원에 따른 데이터 출력 방법은, 예컨대 뉴럴 네트워크 프로세서(Neural processing Unit, NPU) 또는 하드웨어 가속기와 같은, 뉴럴 네트워크 계산을 위한 칩(또는 프로세서라고 칭함)에 응용될 수 있다.
본 출원에서, 상기의 단계를 통해, 뉴럴 네트워크 운반 데이터의 데이터 서브 블록에 대해 압축을 진행하며, 압축에 게인이 존재할 경우에 압축하여 얻은 데이터를 출력하는 것을 실현할 수 있는바, 따라서 데이터 운반의 효율을 향상시킬 수 있고, 나아가 뉴럴 네트워크의 성능을 향상시킨다.
도 2를 참조하면, 도 2는 본 출원에 따른 다른 데이터 출력 방법의 플로우차트이다. 도 2가 나타내는 바와 같이, 하기 단계들이 포함된다.
단계 S201: 제1 데이터 서브 블록을 판독하고, 상기 제1 데이터 서브 블록를 연속적 데이터 스트림으로 스플라이싱한다. 상기 제1 데이터 서브 블록은 뉴럴 네트워크 운반 데이터 중의 데이터 서브 블록이다.
상기의 제1 데이터 서브 블록을 판독하고, 상기 제1 데이터 서브 블록을 연속적 데이터 스트림으로 스플라이싱하는 것은, 제1 데이터 서브 블록의 어드레스를 재배열하여, 제1 데이터 서브 블록에 의해 스플라이싱하여 연속적 데이터 스트림을 얻는 것일 수 있다. 예를 들어, 도 3이 나타내는 바와 같이, 뉴럴 네트워크 운반 데이터는 데이터 서브 블록 a 내지 u를 포함하며, 이러한 데이터 서브 블록들의 어드레스는 비연속적이다. 단계 201을 통해, 이러한 데이터 서브 블록들의 어드레스를 재배열하여, 도 3의 우측에 나타내는 각 데이터 서브 블록의 연속적 데이터 스트림을 얻는다. 진일보하여, 메모리 각도에서, 도 4가 나타내는 데이터 스트림으로 나타낼 수 있다.
단계 S202: 상기 연속적 데이터 스트림에 대해 압축을 진행하여, 제2 데이터 서브 블록을 얻는다.
본 출원에서, 상이한 연속적 데이터 스트림의 압축 효과는 상이할 수 있다. 예를 들어, 도 5가 나타내는 바와 같이, 도 3에서의 각 데이터 서브 블록의 데이터 스트림을 도 5에서 좌측에 나타내는 데이터 스트림으로 압축할 수 있는데, 도 5 에서 회색 부분은 압축 후의 무효 저장 어드레스(무효 데이터 부분이라고 칭할수도 있음)를 나타낸다. 진일보하여, 도 5에서 우측에 나타내는 바와 같이, 각각의 데이터 서브 블록을 위해 하나의 1B의 길이의 저장 어드레스를 구성하여, 압축 후의 데이터의 길이를 저장하는데 사용할 수도 있다. 구체적으로는, 각각의 제1 유형의 데이터 서브 블록(기초 블록)을 위해 하나의 1B의 길이의 저장 어드레스를 구성하는 것일 수 있다.
선택적으로, 상기 뉴럴 네트워크 운반 데이터는 복수 개의 제1 유형의 데이터 서브 블록을 포함하고, 각각의 제1 유형의 데이터 서브 블록의 크기는 동일하며;
상기 연속적 데이터 스트림에 대해 압축을 진행하여, 제2 데이터 서브 블록을 얻는 단계는,
상기 제1 데이터 서브 블록이 제1 유형의 데이터 서브 블록인지 여부를 판단하여, 상기 제1 데이터 서브 블록이 제1 유형의 데이터 서브 블록이면, 상기 연속적 데이터 스트림에 대해 압축을 진행하여, 제2 데이터 서브 블록을 얻는 단계; 를 포함한다.
상기 제1 데이터 서브 블록이 제1 유형의 데이터 서브 블록인지 여부를 판단하는 것은, 데이터 서브 블록의 구성 정보에 근거하여 확정할 수 있으며, 당해 구성 정보는 각각의 데이터 서브 블록의 유형 정보를 포함할 수 있다. 물론, 어드레스 재배열 정보에 근거하여 판단할 수도 있는바, 본 출원에서는 이에 대해 한정하지 않는다.
선택적으로, 상기 뉴럴 네트워크 운반 데이터는 제2 유형의 데이터 서브 블록 및/또는 제3 유형의 데이터 서브 블록을 더 포함하고, 상기 제2 유형의 데이터 서브 블록 및/또는 제3 유형의 데이터 서브 블록은 상기 뉴럴 네트워크 운반 데이터가 상기 복수 개의 제1 유형의 데이터 서브 블록으로 분할된 후 남은 데이터로 구성된 데이터 서브 블록이다.
상기의 제1 유형의 데이터 서브 블록은 기초 블록이라고 칭할 수 있고, 제2 유형 서브 블록은 정렬 블록이라고 칭할 수 있고, 제3 유형의 데이터 서브 블록은 리맵핑-프리 블록이라고 칭할 수 있다. 그리고, 상기의 제2 유형의 데이터 서브 블록은 상기의 뉴럴 네트워크 운반 데이터의 열수가 제1 유형의 데이터 블록의 열수로 나누어 떨어지지 않는 경우에 남는 데이터 열을 제1 유형의 데이터 서브 블록의 행수로 분할하여 이루어진 데이터 서브 블록일 수 있고, 제3 유형의 데이터 서브 블록은 상기의 뉴럴 네트워크 운반 데이터의 열수가 제1 유형의 데이터 블록의 행수로 나누어 떨어지지 않는 경우에 남는 데이터 행으로 구성된 데이터 서브 블록일 수 있다. 예를 들어, 도 6이 나타내는 바와 같이, 도 6에 나타내는 13*1151의 크기의 매트릭스 데이터를 기초 블록, 정렬 블록 및 리맵핑-프리 블록과 같은 데이터 서브 블록으로 분할할 수 있다. ((0, 0), (11, 1023))은 총 12개의 기초 블록인 a, b, c, d, f, g, h, i, k, l, m, n을 포함하고; ((0, 1024), (11, 1151))은 총 3개의 정렬 블록인 e, j, o을 포함하며, ((12, 0), (12, 1151))의 p는 리맵핑-프리 블록이다.
본 실시 형태에서, 뉴럴 네트워크 운반 데이터를 분할하여, 복수 개의 제1 유형의 데이터 서브 블록이 포함되기 때문에, 따라서 온-칩 캐시가 비교적 작아, 뉴럴 네트워크 운반 데이터의 온-칩 캐시로의 캐시를 완성하지 못하게 되는 문제점을 피할 수 있고; 제1 유형의 데이터 서브 블록은 분할 후의 데이터 서브 블록이기 때문에, 온-칩 캐시에 캐시되어, 상기의 압축 처리를 진행할 수 있는바, 따라서 뉴럴 네트워크 데이터의 처리 성능을 향상시킨다. 그리고, 제2 유형의 데이터 서브 블록 및 제3 유형의 데이터 서브 블록에 대해 분할을 진행하지 않기 때문에, 따라서 제2 유형의 데이터 서브 블록 및 제3 유형의 데이터 서브 블록이 너무 작기 때문에 받게 되는 실제 압축 게인에 한계가 있어 초래되는 불필요한 압축을 피할 수 있다. 한편, 제2 유형의 데이터 서브 블록 및 제3 유형의 데이터 서브 블록의 파인-그레인 랜덤 액세스를 실현하도록 확보할 수 있다.
단계 S203: 상기 제1 데이터 서브 블록의 길이 및 상기 제2 데이터 서브 블록의 길이에 의거하여, 상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재하는지 여부를 판단한다.
단계 S204: 상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재하면, 상기 제2 데이터 서브 블록을 출력한다.
선택적으로, 길이 필드를 저장한다. 상기 길이 필드는, 상기 제1 데이터 서브 블록의 길이 및 상기 제2 데이터 서브 블록의 길이 중 작은 값을 나타내기 위한 것이고; 상기 길이 필드는, 데이터를 판독할 때 상기 길이 필드에 대응되는 데이터 서브 블록을 판독하기 위한 것이다.
예를 들어, 제2 데이터 서브 블록을 출력하면, 상기의 길이 필드는 제2 데이터 서브 블록의 길이를 나타낸다. 또 예를 들어, 제1 데이터 서브 블록을 출력하면, 상기의 길이 필드는 제1 데이터 서브 블록의 길이를 나타낸다.
상기의 길이 필드를 통해, 데이터 서브 블록을 판독할 때, 데이터 서브 블록이 정확하게 판독될 수 있다. 그리고, 상기의 저장은 온-칩 저장일 수 있고, 또는 오프-칩 메모리에 저장되는 것일 수 있다. 진일보하여, 상기의 길이 필드의 저장 위치는 단계 S205를 수행하기 전에 구성해 둔 저장 위치일 수 있다. 구체적으로, 각각의 데이터 서브 블록은 각자의 길이 저장 위치가 대응되어 있을 수 있으며, 바람직하게는, 각각의 제1 유형의 데이터 서브 블록은 각자의 길이 저장 위치가 대응되어 있을 수 있다.
선택적으로, 상기 제2 데이터 서브 블록을 출력하면, 상기 제2 데이터 서브 블록의 플래크 비트를 저장한다. 상기 저장된 플래크 비트는, 상기 제2 데이터 서브 블록이 압축될 때 압축 게인이 존재하는지 여부를 지시하기 위한 것이다.
플래크 비트를 저장하기 때문에, 따라서 제2 데이터 서브 블록을 판독할 때, 압축 해제를 진행해야 하는지 여부를 정확하게 판단할 수 있어, 압축 해제 오류를 피하고, 데이터 처리 성능을 한층 더 향상시키도록 한다.
단계 S205: 상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재하지 않으면, 상기 제1 데이터 서브 블록을 출력한다.
선택적으로, 상기 제1 데이터 서브 블록을 출력하면, 상기 제1 데이터 서브 블록의 플래크 비트를 저장한다. 상기 저장의 플래크 비트는, 상기 제1 데이터 서브 블록이 압축될 때 압축 게인이 존재하는지 여부를 지시하기 위한 것이다.
상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재하지 않을 경우, 직접 제1 데이터 서브 블록을 메모리에 기입할 수 있는바, 예를 들어, 외부 메모리에 기입할 수 있다.
본 실시 형태에서, 상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재하지 않으면, 상기 제1 데이터 서브 블록을 출력하기 때문에, 따라서 게인이 존재하지 하지 않을 경우에 제2 데이터 서브 블록을 출력하여 오히려 초래되는 데이터 운반 효율이 저화되는 문제점을 피할 수 있다.
본 실시예에서, 도 1에 나타내는 실시예를 기반으로 다양한 선택적인 실시 형태를 추가하였으며, 모두 뉴럴 네트워크의 성능을 향상시킬 수 있다.
도 7을 참조하면, 도 7은 본 출원에 따른 일 데이터 획득 방법의 플로우차트이다. 도 7이 나타내는 바와 같이, 하기 단계들이 포함된다.
단계 S701: 제2 데이터 서브 블록의 길이를 판독한다.
단계 S702: 제2 데이터 서브 블록을 판독한다.
단계 S702는 메모리로부터 제2 데이터 서브 블록을 판독할 수 있고, 진일보하여, 오프-칩 메모리로부터 제2 데이터 서브 블록을 판독할 수 있다.
단계 S703: 상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록인지 여부를 판단한다.
상기의 제2 데이터 서브 블록은 도 1 및 도 2에 나타내는 실시예에서의 제2 데이터 서브 블록일 수 있다.
제2 데이터 서브 블록이 압축된 데이터이면, 상기의 제2 데이터 서브 블록에 대응되는 오리지널 길이는 제2 데이터 서브 블록 압축 전의 제1 데이터 서브 블록의 길이일 수 있고; 제2 데이터 서브 블록가 압축된 데이터가 아니면, 상기의 제2 데이터 서브 블록에 대응되는 오리지널 길이는 제2 데이터 서브 블록의 길이, 또는 널일 수 있다. 진일보하여, 상기의 제2 데이터 서브 블록에 대응되는 오리지널 길이는 도 1 및 도 2에 나타내는 실시예에서의 제1 데이터 서브 블록의 길이와 등가일 수 있다.
상기의 압축 게인은 도 1 및 도 2에 나타내는 실시예에서의 상응하는 설명을 참조할 수 있는바, 여기서 더이상 설명하지 않기로 한다.
선택적으로, 상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록인지 여부를 판단하는 단계는,
상기 제2 데이터 서브 블록의 길이에 의거하여, 상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록인지 여부를 판단하는 단계; 또는
상기 제2 데이터 서브 블록의 플래크 비트를 판독하고, 상기 플래크 비트에 의거하여 상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록인지 여부를 판단하는 단계 - 상기 플래크 비트는 상기 제2 데이터 서브 블록이 압축될 때 압축 게인이 존재하는지 여부를 지시하기 위한 것임 - ; 를 포함한다.
진일보하여, 상기 제2 데이터 서브 블록의 길이에 의거하여, 상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록인지 여부를 판단하는 단계는,
상기 제2 데이터 서브 블록에 대응되는 오리지널 길이, 저장 어드레스 및 메모리 버스 비트폭에 의거하여 상기 제2 데이터 서브 블록의 오리지널 데이터 전송에 필요한 비트수를 계산하고, 상기 제2 데이터 서브 블록의 길이, 상기 저장 어드레스 및 상기 메모리 버스 비트폭에 의거하여 상기 제2 데이터 서브 블록 전송에 필요한 비트수를 계산하여, 상기 제2 데이터 서브 블록 전송에 필요한 비트수가 상기 제2 데이터 서브 블록의 오리지널 데이터 전송에 필요한 비트수보다 작으면, 상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록임을 확정하고, 반대의 경우, 상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록이 아님을 확정하는 단계; 를 포함하고, 상기 저장 어드레스는 상기 제2 데이터 서브 블록의 저장 어드레스이다.
본 실시 형태에 관해서는, 도 1에 나타내는 실시예의 상응하는 설명을 참조할 수 있는바, 여기서 더이상 설명하지 않기로 한다.
단계 S704: 상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록이면, 상기 제2 데이터 서브 블록에 대해 압축 해제를 진행하고, 상기 압축 해제 후의 데이터를 저장한다.
상기의 상기 압축 해제 후의 데이터를 저장하는 것은, 압축 해제 후의 데이터를 온-칩 캐시에 저장하는 것일 수 있으며, 구체적으로는, 온-칩 캐시의 사전 설정 위치 또는 예상 위치에 저장할 수 있다.
설명해야 할 것은, 본 출원에 따른 데이터 획득 방법은, 예컨대, NPU 또는 하드웨어 가속기와 같은 뉴럴 네트워크 계산을 위한 칩(또는, 프로세서라고 칭함)에 응용될 수 있다.
본 출원에서, 상기의 단계를 통해, 판독된 데이터가 압축을 거쳤으며 압축 게인이 존재하는 데이터임을 실현할 수 있는바, 따라서 데이터 운반의 효율을 향상시키며, 나아가 뉴럴 네트워크의 성능을 향상시킨다.
선택적으로, 상기 제2 데이터 서브 블록은 뉴럴 네트워크 운반 데이터 중의 데이터 서브 블록이고, 상기 뉴럴 네트워크 운반 데이터는 복수 개의 제1 유형의 데이터 서브 블록을 포함하고, 각각의 제1 유형의 데이터 서브 블록의 크기는 동일하며;
상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록인지 여부를 판단하는 단계는,
상기 제2 데이터 서브 블록이 제1 유형의 데이터 서브 블록인지 여부를 판단하여, 상기 제2 데이터 서브 블록이 제1 유형의 데이터 서브 블록이면, 상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록인지 여부를 판단하는 단계; 를 포함한다.
선택적으로, 상기 뉴럴 네트워크 운반 데이터는 제2 유형의 데이터 서브 블록 및/또는 제3 유형의 데이터 서브 블록을 더 포함하고, 상기 제2 유형의 데이터 서브 블록 및/또는 제3 유형의 데이터 서브 블록은 상기 뉴럴 네트워크 운반 데이터가 상기 복수 개의 제1 유형의 데이터 서브 블록으로 분할된 후 남은 데이터로 구성된 데이터 서브 블록이다.
본 실시 형태에 관해서는, 도 2에 나타내는 실시예의 상응한 설명을 참조할 수 있는바, 여기서 더이상 설명하지 않기로 하며, 동일한 유익한 효과를 달성할 수 있다.
선택적으로, 상기 방법은,
상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록이 아니면, 상기 제2 데이터 서브 블록을 저장하는 단계; 를 더 포함한다.
상기의 상기 제2 데이터 서브 블록을 저장하는 것은, 제2 데이터 서브 블록을 직접 온-칩 캐시의 사전 설정 위치 또는 예상 위치에 저장하는 것일 수 있다.
본 실시 형태에서, 상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록이 아니면, 상기 제2 데이터 서브 블록을 저장하는바, 따라서 이러한 경우에 제2 데이터 서브 블록에 대해 압축 해제를 진행하여 초래되는 압축 해제 오류를 피할 수 있다.
본 출원에서, 상기의 단계를 통해, 판독된 데이터가 압축을 거쳤으며 압축 게인이 존재하는 데이터임을 실현할 수 있는바, 따라서 데이터 운반의 효율을 향상시키며, 나아가 뉴럴 네트워크의 성능을 향상시킨다.
도 8을 참조하면, 도 8은 본 출원에 따른 다른 데이터 출력 방법의 플로우차트이다. 도 8이 나타내는 바와 같이, 하기 단계들이 포함된다.
단계 S801: 압축 후의 기초 블록의 길이를 저장하기 위한 하나의 데이터 공간을 할당한다.
단계 S802: 어드레스 재배열 규칙에 근거하여 데이터를 획득하고, 블록 데이터를 완전한 데이터 스트림으로 편성한다.
단계 S803: 현재 처리된 서브 블록이 소속된 블록 유형을 판단하여, 당해 서브 블록이 기초 블록이면, 단계 S804를 수행하고; 그렇지 않으면, 단계 S808로 점핑한다.
단계 S804: 선택된 압축 알고리즘에 의해, 오리지널 데이터에 대해 압축을 진행하여, 기초 블록이 압축을 거친 후의 데이터 길이를 얻는다.
단계 S805: 오리지널 데이터 길이 및 압축 후의 데이터 길이에 근거하여, 압축에 게인이 있는지 여부를 판단하여, 압축에 게인이 있으면, 단계 S806를 수행하고; 압축에 게인이 없으면, 단계 S808를 수행한다.
단계 S806: 압축 후의 데이터를 선택하여 출력하고, 데이터를 어드레스 재배열 규칙하에 규정된 위치에 격납하고, 계산하여 얻은 압축 후의 데이터 길이를 단계 S801에서 할당된 데이터 위치에 저장한다.
단계 S807: 오리지널 데이터 길이를 단계 S801에서 할당된 데이터 위치에 저장한다.
단계 S808: 압축을 거치지 않은 오리지널 데이터를 어드레스 재배열 규칙하에 규정된 위치에 격납한다.
단계 S809: 현재 서브 블록의 처리를 완성한다.
단계 S8010: 처리되어야 할 서브 블록이 더 있는지 여부를 판단하여, 더 있으면, 단계 S802를 수행하고; 후속적으로 처리되어야 할 서브 블록이 없으면, 플로우가 종료된다.
도 9를 참조하면, 도 9는 본 출원에 따른 다른 데이터 획득 방법의 플로우차트이다. 도 9가 나타내는 바와 같이, 하기 단계들이 포함된다.
단계 S901: 현재 처리된 서브 블록이 소속된 블록 유형을 판단하여, 당해 서브 블록이 기초 블록이면, 단계 S902를 수행하고; 당해 서브 블록이 기초 블록이 아니면, 단계 S907을 수행한다. 당해 단계는, 어드레스 재배열 규칙에 근거하여, 현재 처리된 서브 블록이 소속된 블록 유형을 판단하거나, 또는 데이터 서브 블록의 구성 정보에 근거하여 서브 블록이 소속된 블록 유형을 판단할 수 있다.
단계 S902: 데이터 압축 시 할당된 기초 블록 길이를 저장하는 위치로부터, 압축 해제되어야 할 서브 블록의 데이터 길이를 획득한다.
단계 S903: 오프-칩 메모리로부터 기초 블록 데이터를 판독하고, 판독된 데이터의 길이는 단계 S902에서 획득된다.
단계 S904: 기초 블록의 오리지널 데이터 길이를 단계 S902에서 획득된 데이터 길이와 비교하여, 당해 기초 블록에 압축 게인이 있는지 여부를 판단한다. 게인이 있으면, 당해 기초 블록은 압축을 거친 것으로, 단계 S905를 수행하고; 게인이 없으면, 당해 기초 블록은 압축을 거치지 않은 것으로, 단계 S906을 수행한다.
단계 S905: 데이터를 압축 해제 모듈로 송신하여, 압축 해제 조작을 수행하고, 압축 해제 후의 데이터를 온-칩 캐시의 예상 위치에 저장하고; 그리고, 단계 S908을 수행한다.
단계 S906: 데이터를 직접 온-칩 캐시의 예상 위치에 저장하고; 그리고, 단계 S908을 수행한다.
단계 S907: 오프-칩 메모리로부터 당해 서브 블록 데이터를 판독하고, 데이터를 온-칩 캐시의 예상 위치에 저장하고; 그리고, 단계 S908을 수행한다.
단계 S908: 현재 서브 블록의 처리를 완성한다.
단계 S909: 처리되어야 할 서브 블록이 더 있는지 여부를 판단하여, 더 있으면, 단계 S901을 수행하고; 후속적으로 처리되어야 할 서브 블록이 없으면, 플로우가 종료된다.
도 10을 참조하면, 도 10은 본 출원에 따른 일 데이터 출력 장치 구조도이다. 도 10이 나타내는 바와 같이, 데이터 출력 장치(1000)는,
제1 데이터 서브 블록을 판독하고, 상기 제1 데이터 서브 블록을 연속적 데이터 스트림으로 스플라이싱하기 위한 판독 모듈(1001) - 상기 제1 데이터 서브 블록은 뉴럴 네트워크 운반 데이터 중의 데이터 서브 블록임 - ;
상기 연속적 데이터 스트림에 대해 압축을 진행하여, 제2 데이터 서브 블록을 얻기 위한 압축 모듈(1002);
상기 제1 데이터 서브 블록의 길이 및 상기 제2 데이터 서브 블록의 길이에 의거하여, 상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재하는지 여부를 판단하기 위한 판단 모듈(1003); 및
상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재하면, 상기 제2 데이터 서브 블록을 출력하기 위한 제1 출력 모듈(1004); 을 포함한다.
선택적으로, 판단 모듈(1003)은, 상기 제1 데이터 서브 블록의 길이, 목적지 어드레스 및 메모리 버스 비트폭에 의거하여, 상기 제1 데이터 서브 블록 전송에 필요한 비트수를 계산하고, 상기 제2 데이터 서브 블록의 길이, 상기 목적지 어드레스 및 상기 메모리 버스 비트폭에 의거하여, 상기 제2 데이터 서브 블록 전송에 필요한 비트수를 계산하여, 상기 제2 데이터 서브 블록 전송에 필요한 비트수가 상기 제1 데이터 서브 블록 전송에 필요한 비트수보다 작으면, 상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재함을 확정하고, 반대의 경우, 상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재하지 않음을 확정하기 위한 것이고; 상기 목적지 어드레스는 상기 제1 데이터 서브 블록의 목적지 어드레스이다.
선택적으로, 도 11이 나타내는 바와 같이, 상기 장치는,
길이 필드를 저장하기 위한 제1 저장 모듈(1005); 을 더 포함하고, 상기 길이 필드는, 상기 제1 데이터 서브 블록의 길이 및 상기 제2 데이터 서브 블록의 길이 중 작은 값을 나타내기 위한 것이고; 상기 길이 필드는, 데이터를 판독할 때 상기 길이 필드에 대응되는 데이터 서브 블록을 판독하기 위한 것이다.
선택적으로, 도 12가 나타내는 바와 같이, 상기 장치는,
상기 제2 데이터 서브 블록을 출력하면, 상기 제2 데이터 서브 블록의 플래크 비트를 저장하기 위한 제2 저장 모듈(1006); 을 더 포함하고, 상기 저장된 플래크 비트는, 상기 제2 데이터 서브 블록이 압축될 때 압축 게인이 존재하는지 여부를 지시하기 위한 것이다.
선택적으로, 상기 뉴럴 네트워크 운반 데이터는 복수 개의 제1 유형의 데이터 서브 블록을 포함하고, 각각의 제1 유형의 데이터 서브 블록의 크기는 동일하며;
상기 압축 모듈(1002)은, 상기 제1 데이터 서브 블록이 제1 유형의 데이터 서브 블록인지 여부를 판단하여, 상기 제1 데이터 서브 블록이 제1 유형의 데이터 서브 블록이면, 상기 연속적 데이터 스트림에 대해 압축을 진행하여, 제2 데이터 서브 블록을 얻기 위한 것이다.
선택적으로, 상기 뉴럴 네트워크 운반 데이터는 제2 유형의 데이터 서브 블록 및/또는 제3 유형의 데이터 서브 블록을 더 포함하고, 상기 제2 유형의 데이터 서브 블록 및/또는 제3 유형의 데이터 서브 블록은 상기 뉴럴 네트워크 운반 데이터가 상기 복수 개의 제1 유형의 데이터 서브 블록으로 분할된 후 남은 데이터로 구성된 데이터 서브 블록이다.
선택적으로, 도 13이 나타내는 바와 같이, 상기 장치는,
상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재하지 않으면, 상기 제1 데이터 서브 블록을 출력하기 위한 제2 출력 모듈(1007); 을 더 포함한다.
본 실시예에 따른 장치는 도 1 및 도 3에 나타내는 방법 실시예에서 구현되는 각 과정을 구현가능하며, 동일한 유익한 효과를 달성가능한바, 중복되는 설명을 피하기 위하여, 여기서 더이상 설명하지 않기로 한다.
도 14를 참조하면, 도 14는 본 출원에 따른 일 데이터 획득 장치 구조도이다. 도 14가 나타내는 바와 같이, 데이터 획득 장치(1400)는,
제2 데이터 서브 블록의 길이를 판독하기 위한 제1 판독 모듈(1401);
제2 데이터 서브 블록을 판독하기 위한 제2 판독 모듈(1402);
상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록인지 여부를 판단하기 위한 판단 모듈(1403); 및
상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록이면, 상기 제2 데이터 서브 블록에 대해 압축 해제를 진행하고, 상기 압축 해제 후의 데이터를 저장하기 위한 압축 해제 모듈(1404); 을 포함한다.
선택적으로, 판단 모듈(1403)은, 상기 제2 데이터 서브 블록의 길이에 의거하여, 상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록인지 여부를 판단하기 위한 것이고; 또는
판단 모듈(1403)은, 상기 제2 데이터 서브 블록의 플래크 비트를 판독하고, 상기 플래크 비트에 의거하여 상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록인지 여부를 판단하기 위한 것이고, 상기 플래크 비트는 상기 제2 데이터 서브 블록이 압축될 때 압축 게인이 존재하는지 여부를 지시하기 위한 것이다.
선택적으로, 판단 모듈(1403)은, 상기 제2 데이터 서브 블록에 대응되는 오리지널 길이, 저장 어드레스 및 메모리 버스 비트폭에 의거하여 상기 제2 데이터 서브 블록의 오리지널 데이터 전송에 필요한 비트수를 계산하고, 상기 제2 데이터 서브 블록의 길이, 상기 저장 어드레스 및 상기 메모리 버스 비트폭에 의거하여 상기 제2 데이터 서브 블록 전송에 필요한 비트수를 계산하여, 상기 제2 데이터 서브 블록 전송에 필요한 비트수가 상기 제2 데이터 서브 블록의 오리지널 데이터 전송에 필요한 비트수보다 작으면, 상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록임을 확정하고, 반대의 경우, 상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록이 아님을 확정하기 위한 것이고, 상기 저장 어드레스는 상기 제2 데이터 서브 블록의 저장 어드레스이다.
선택적으로, 상기 제2 데이터 서브 블록은 뉴럴 네트워크 운반 데이터 중의 데이터 서브 블록이고, 각각의 제1 유형의 데이터 서브 블록의 크기는 동일하며;
상기 판단 모듈(1403)은, 상기 제2 데이터 서브 블록이 제1 유형의 데이터 서브 블록인지 여부를 판단하여, 상기 제2 데이터 서브 블록이 제1 유형의 데이터 서브 블록이면, 상기 제2 데이터 서브 블록의 길이 또는 상기 플래크 비트에 의거하여, 상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록인지 여부를 판단하기 위한 것이다.
선택적으로, 상기 뉴럴 네트워크 운반 데이터는 제2 유형의 데이터 서브 블록 및/또는 제3 유형의 데이터 서브 블록을 더 포함하고, 상기 제2 유형의 데이터 서브 블록 및/또는 제3 유형의 데이터 서브 블록은 상기 뉴럴 네트워크 운반 데이터가 상기 복수 개의 제1 유형의 데이터 서브 블록으로 분할된 후 남은 데이터로 구성된 데이터 서브 블록이다.
선택적으로, 도 15가 나타내는 바와 같이, 상기 장치는,
상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록이 아니면, 상기 제2 데이터 서브 블록을 저장하기 위한 저장 모듈(1405); 을 더 포함한다.
본 실시예에 따른 장치는 도 7에 나타내는 방법 실시예에서 구현되는 각 과정을 구현가능하며, 동일한 유익한 효과를 달성가능한바, 중복되는 설명을 피하기 위하여, 여기서 더이상 설명하지 않기로 한다.
본 출원에 따른 실시예에 의하면, 본 출원은 전자 기기 및 판독가능 저장 매체를 더 제공한다.
도 16이 나타내는 바와 같이, 본 출원의 실시예에 따른 데이터 출력 방법 또는 데이터 획득 방법의 전자 기기의 블록도를 나타내고 있다. 전자 기기는, 랩톱 컴퓨터, 데스크톱 컴퓨터, 워크 스테이션, 퍼스널 디지털 어시스턴트, 서버, 블레이드 서버, 메인 프레임 컴퓨터, 및 기타 적합한 컴퓨터와 같은, 각종 형태의 디지털 컴퓨터를 나타내는 것을 의도한다. 전자 기기는 또한, 퍼스널 디지털 프로세싱 기기, 셀룰러폰, 스마트폰, 웨어러블 기기 및 기타 유사한 컴퓨팅 장치와 같은, 각종 형태의 모바일 장치를 나타낼 수 있다. 본 명세서에서 나타내는 컴포넌트에 있어서, 그들의 연결 및 관계, 그리고 그들의 기능은 단지 예시적인 것일 뿐, 본 명세서에서 설명 및/또는 요구되는 본 출원의 구현을 한정하는 것을 의도하지 않는다.
도 16이 나타내는 바와 같이, 당해 전자 기기는, 하나 또는 복수 개의 프로세서(1601), 메모리(1602), 및 고속 인터페이스 및 저속 인터페이스를 포함하는, 각 컴포넌트를 연결하기 위한 인터페이스를 포함한다. 각각의 컴포넌트는 상이한 버스에 의해 서로 연결되며, 공통 마더보드 상에 장착되거나 또는 필요에 따라 기타 방식으로 장착될 수 있다. 프로세서는 전자 기기내에서 수행되는 명령에 대해 처리를 진행할 수 있으며, 상기 명령은, 메모리에 또는 메모리 상에 저장되어, 외부 입력/출력 장치(예컨대, 인터페이스에 커플링된 표시 기기) 상에서 GUI의 그래픽 정보를 표시하는 명령을 포함한다. 기타 실시 형태에 있어서, 필요한 경우, 복수 개의 프로세서 및/또는 복수 개의 버스를 복수 개의 메모리와 함께 사용할 수 있다. 마찬가지로, 복수 개의 전자 기기들을 연결할 수 있는데, 각각의 기기(예컨대, 서버 어레이, 일 그룹의 블레이드 서버, 또는 멀티 프로세서 시스템으로서)는 일부 필요한 오퍼레이션을 제공한다. 도 16에서는 하나의 프로세서(1601)의 경우를 예로 한다.
메모리(1602)는 본 출원에 따른 비-일시적 컴퓨터-판독가능 저장 매체이다. 상기 메모리는 적어도 하나의 프로세서에 의해 실행가능한 명령이 저장되어, 상기 적어도 하나의 프로세서가 본 출원에 따른 데이터 출력 방법 또는 데이터 획득 방법을 수행하도록 한다. 본 출원의 비-일시적 컴퓨터-판독가능 저장 매체는 컴퓨터 명령을 저장하며, 상기 컴퓨터 명령은 컴퓨터가 본 출원에 따른 데이터 출력 방법 또는 데이터 획득 방법을 수행하도록 하기 위한 것이다.
메모리(1602)는 비-일시적 컴퓨터-판독가능 저장 매체로서, 비-일시적 소프트웨어 프로그램, 비-일시적 컴퓨터-실행가능 프로그램 및 본 출원의 실시예에 따른 데이터 출력 방법 또는 데이터 획득 방법에 대응되는 프로그램 명령/모듈(예컨대, 도 10에 나타내는 판독 모듈(1001), 압축 모듈(1002), 판단 모듈(1003) 및 제1 출력 모듈(1004), 또는 도 14에 나타내는 제1 판독 모듈(1401), 제2 판독 모듈(1402), 판단 모듈(1403) 및 압축 해제 모듈(1404))과 같은 모듈을 저장하기 위한 것일 수 있다. 프로세서(1601)는 메모리(1602)에 저장된 비-일시적 소프트웨어 프로그램, 명령 및 모듈을 실행함으로써, 서버의 각종 기능 응용 및 데이터 처리를 수행하는바, 즉 상기의 방법 실시예에서의 데이터 출력 방법 또는 데이터 획득 방법을 구현한다.
메모리(1602)는 저장 프로그램 영역 및 저장 데이터 영역을 포함할 수 있다. 저장 프로그램 영역은 운영 체제, 및 적어도 하나의 기능에 필요한 애플리케이션을 저장할 수 있고; 저장 데이터 영역은 데이터 출력 방법 또는 데이터 획득 방법의 전자 기기의 사용에 근거하여 작성된 데이터 등을 저장할 수 있다. 또한, 메모리(1602)는 고속 랜덤 액세스 메모리를 포함할 수 있으며, 예컨대 적어도 하나의 자기 디스크 메모리 소자, 플래시 메모리 소자, 또는 기타 비-일시적 솔리드 스테이트 메모리 소자와 같은 비-일시적 메모리를 더 포함할 수 있다. 일부 실시예들에 있어서, 메모리(1602)는 옵션으로 프로세서(1601)에 대해 원격 설치된 메모리를 포함하며, 이러한 원격 메모리는 네트워크에 의해 데이터 출력 방법 또는 데이터 획득 방법의 전자 기기에 연결될 수 있다. 상기의 네트워크의 예는, 인터넷, 기업 인트라넷, 로컬 영역 네트워크, 이동 통신 네트워크 및 그 조합을 포함하나, 이에 한정되지 않는다.
데이터 출력 방법 또는 데이터 획득 방법의 전자 기기는, 입력 장치(1603) 및 출력 장치(1604)를 더 포함할 수 있다. 프로세서(1601), 메모리(1602), 입력 장치(1603) 및 출력 장치(1604)는 버스 또는 기타 방식에 의해 연결될 수 있는데, 도 16에서는 버스에 의해 연결되는 경우를 예로 한다.
입력 장치(1603)는 입력된 디지털 또는 문자 부호 정보를 수신하고, 예컨대 터치 스크린, 키패드, 마우스, 트랙패드, 터치패드, 포인팅 스틱, 하나 또는 복수 개의 마우스 버튼, 트랙볼, 조익스틱 등의 입력 장치와 같은, 데이터 출력 방법 또는 데이터 획득 방법의 전자 기기의 사용자 설정 및 기능 제어와 관련된 키 신호 입력을 산생시킬 수 있다. 출력 장치(1604)는 표시 기기, 보조적 조명 장치(예컨대, LED) 및 촉각 피드백 장치(예컨대, 진동 모터) 등을 포함할 수 있다. 상기 표시 기기는 액정 디스플레이(LCD), 발광 다이오드(LED) 디스플레이 및 플라즈마 디스플레이를 포함하나, 이에 한정되지 않는다. 일부 실시 형태들에 있어서, 표시 기기는 터치 스크린일 수 있다.
여기서 설명되는 시스템 및 기술의 각종 실시 형태는 디지털 전자 회로 시스템, 집적 회로시스템, 특정 용도 지향 ASIC(특정 용도 지향 집적 회로), 컴퓨터 하드웨어, 펌웨어, 소프트웨어, 및/또는 그들의 조합에서 구현될 수 있다. 이러한 각종 실시 형태들은 하나 또는 복수 개의 컴퓨터 프로그램에서 실시되는 것을 포함할 수 있다. 상기 하나 또는 복수 개의 컴퓨터 프로그램은 적어도 하나의 프로그래머블 프로세서를 포함하는 프로그래머블 시스템 상에서 수행 및/또는 해석될 수 있다. 상기 프로그래머블 프로세서는 전용 또는 범용 프로그래머블 프로세서일 수 있으며, 저장 시스템, 적어도 하나의 입력 장치, 및 적어도 하나의 출력 장치로부터 데이터 및 명령을 수신하며, 데이터 및 명령을 상기 저장 시스템, 상기 적어도 하나의 입력 장치, 및 상기 적어도 하나의 출력 장치로 전송할 수 있다.
이러한 컴퓨팅 프로그램들(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 또는 코드라고도 칭함)은 프로그래머블 프로세서의 기계 명령을 포함하며, 하이 레벨 프로세스 및/또는 객체 지향 프로그래밍 언어, 및/또는 어셈블리/기계 언어를 이용하여 이러한 컴퓨팅 프로그램들을 실시할 수 있다. 본 명세서에서 사용되는 바와 같이, 용어 '기계-판독가능 매체' 및 '컴퓨터-판독가능 매체'는 기계 명령 및/또는 데이터를 프로그래머블 프로세서에게 제공하기 위한 임의의 컴퓨터 프로그램 제품, 기기, 및/또는 장치(예컨대, 자기 디스크, 광 디스크, 메모리, 프로그래머블 로직 장치(PLD))를 가리키는 것으로, 기계-판독가능 신호로서의 기계 명령을 수신하는 기계-판독가능 매체를 포함한다. 용어 '기계-판독가능 신호'는 기계 명령 및/또는 데이터를 프로그래머블 프로세서에게 제공하기 위한 임의의 신호를 가리킨다.
사용자와의 인터렉션을 제공하기 위하여, 여기서 설명되는 시스템 및 기술은 컴퓨터 상에서 실시될 수 있으며, 상기 컴퓨터는 사용자에게 정보를 표시하기 위한 표시 장치(예컨대, CRT(음극선관) 또는 LCD(액정 디스플레이) 모니터); 및 키보드 및 포인팅 장치(예컨대, 마우스 또는 트랙볼)을 가지며, 사용자는 상기 키보드 및 상기 포인팅 장치에 의해 컴퓨터에게 입력을 제공할 수 있다. 기타 종류의 장치는 또한 사용자의 인터렉션을 제공하는데 사용될 수 있다. 예를 들어, 사용자에게 제공한 피드백은 임의의 형태의 감지 피드백(예컨대, 시각 피드백, 청각 피드백, 또는 촉각 피드백)일 수 있으며; 임의의 형태(음향 입력, 음성 입력 또는 촉각 입력을 포함)로 사용자로부터의 입력을 수신할 수 있다.
여기서 설명되는 시스템 및 기술은, 백 엔드 컴포넌트를 포함하는 컴퓨팅 시스템(예컨대, 데이터 서버로서), 또는 미들웨어 컴포넌트를 포함하는 컴퓨팅 시스템(예컨대, 애플리케이션 서버), 또는 프론트 엔드 컴포넌트를 포함하는 컴퓨팅 시스템(예컨대, 그래픽 사용자 인터페이스 또는 웹 브라우저를 갖는 사용자 컴퓨터, 사용자는 상기 그래픽 사용자 인터페이스 또는 상기 웹 브라우저에 의해 여기서 설명되는 시스템 및 기술의 실시 형태와 인터렉션가능), 또는 이런 백 엔드 컴포넌트, 미들웨어 컴포넌트, 또는 프론트 엔드 컴포넌트의 임의의 조합을 포함하는 컴퓨팅 시스템에서 실시될 수 있다. 임의의 형태 또는 매체의 디지털 데이터 통신(예컨대, 통신 네트워크)에 의해 시스템의 컴포넌트를 서로 연결할 수 있다. 통신 네트워크의 예는, 로컬 영역 네트워크(LAN), 광대역 네트워크(WAN) 및 인터넷을 포함한다.
컴퓨터 시스템은 클라이언트 및 서버를 포함할 수 있다. 클라이언트 및 서버는 통상적으로 서로를 멀리 하며, 통상적으로 통신 네트워크에 의해 인터렉션을 진행한다. 상응하는 컴퓨터 상에서 실행되며 상호간에 클라이언트-서버 관계를 갖는 컴퓨터 프로그램에 의해 클라이언트와 서버의 관계를 산생시킨다.
본 출원의 실시예에 따른 기술방안에 의하면, 본 출원에서, 상기 제1 데이터 블록의 제1 비트를 일부 기입에서 완전 기입으로 조정하기 때문에, 따라서 메모리의 기입 성능을 향상시킨다.
위에서 나타낸 각종 형태의 플로우를 사용하여, 순서 재배정, 단계 추가 또는 삭제를 실시할 수 있음을 이해해야 할 것이다. 예를 들어, 본 출원에 기재된 각 단계는 병행하여 수행될 수도 있고, 순서대로 수행될 수도 있으며, 상이한 차례대로 수행될 수도 있는바, 본 출원에 개시된 기술방안이 소망하는 결과를 달성할 수만 있다면, 본 명세서는 여기서 더이상 한정하지 않는다.
상기의 구체적인 실시 형태는 본 출원의 보호 범위에 대한 한정을 구성하지 않는다. 해당 기술분야에서 통상의 기술자들은, 디자인 요구 및 기타 요소에 따라 각종 수정, 조합, 서브 조합 및 대체를 실시할 수 있음을 이해해야 할 것이다. 본 출원의 정신 및 원칙내에서 진행되는 임의의 수정, 균등 대체 및 개량 등은 모두 본 출원의 보호 범위내에 포함되어야 할 것이다.

Claims (17)

  1. 데이터 출력 방법에 있어서,
    제1 데이터 서브 블록을 판독하고, 상기 제1 데이터 서브 블록을 연속적 데이터 스트림으로 스플라이싱하는 단계 - 상기 제1 데이터 서브 블록은 뉴럴 네트워크 운반 데이터 중의 데이터 서브 블록임 - ;
    상기 연속적 데이터 스트림에 대해 압축을 진행하여, 제2 데이터 서브 블록을 얻는 단계;
    상기 제1 데이터 서브 블록의 길이 및 상기 제2 데이터 서브 블록의 길이에 의거하여, 상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재하는지 여부를 판단하는 단계; 및
    상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재하면, 상기 제2 데이터 서브 블록을 출력하는 단계;
    를 포함하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    상기 제1 데이터 서브 블록의 길이 및 상기 제2 데이터 서브 블록의 길이에 의거하여, 상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재하는지 여부를 판단하는 단계는,
    상기 제1 데이터 서브 블록의 길이, 목적지 어드레스 및 메모리 버스 비트폭(bit width)에 의거하여, 상기 제1 데이터 서브 블록 전송에 필요한 비트(beat)수를 계산하고, 상기 제2 데이터 서브 블록의 길이, 상기 목적지 어드레스 및 상기 메모리 버스 비트폭에 의거하여, 상기 제2 데이터 서브 블록 전송에 필요한 비트수를 계산하여, 상기 제2 데이터 서브 블록 전송에 필요한 비트수가 상기 제1 데이터 서브 블록 전송에 필요한 비트수보다 작으면, 상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재함을 확정하고, 반대의 경우, 상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재하지 않음을 확정하는 단계; 를 포함하고, 상기 목적지 어드레스는 상기 제1 데이터 서브 블록의 목적지 어드레스인 것을 특징으로 하는 방법.
  3. 제1항에 있어서,
    상기 방법은,
    길이 필드를 저장하는 단계; 를 더 포함하고,
    상기 길이 필드는, 상기 제1 데이터 서브 블록의 길이 및 상기 제2 데이터 서브 블록의 길이 중 작은 값을 나타내기 위한 것이고; 상기 길이 필드는, 데이터를 판독할 때 상기 길이 필드에 대응되는 데이터 서브 블록을 판독하기 위한 것인 것을 특징으로 하는 방법.
  4. 제1항에 있어서,
    상기 방법은,
    상기 제2 데이터 서브 블록을 출력하면, 상기 제2 데이터 서브 블록의 플래크 비트를 저장하는 단계; 를 더 포함하고,
    상기 저장된 플래크 비트는, 상기 제2 데이터 서브 블록이 압축될 때 압축 게인이 존재하는지 여부를 지시하기 위한 것인 것을 특징으로 하는 방법.
  5. 제1항에 있어서,
    상기 뉴럴 네트워크 운반 데이터는 복수 개의 제1 유형의 데이터 서브 블록을 포함하고, 각각의 제1 유형의 데이터 서브 블록의 크기는 동일하며;
    상기 연속적 데이터 스트림에 대해 압축을 진행하여, 제2 데이터 서브 블록을 얻는 단계는,
    상기 제1 데이터 서브 블록이 제1 유형의 데이터 서브 블록인지 여부를 판단하여, 상기 제1 데이터 서브 블록이 제1 유형의 데이터 서브 블록이면, 상기 연속적 데이터 스트림에 대해 압축을 진행하여, 제2 데이터 서브 블록을 얻는 단계; 를 포함하는 것을 특징으로 하는 방법.
  6. 제5항에 있어서,
    상기 뉴럴 네트워크 운반 데이터는 제2 유형의 데이터 서브 블록 및 제3 유형의 데이터 서브 블록 중 적어도 하나를 더 포함하고, 상기 제2 유형의 데이터 서브 블록 및 제3 유형의 데이터 서브 블록 중 적어도 하나는 상기 뉴럴 네트워크 운반 데이터가 상기 복수 개의 제1 유형의 데이터 서브 블록으로 분할된 후 남은 데이터로 구성된 데이터 서브 블록인 것을 특징으로 하는 방법.
  7. 제1항에 있어서,
    상기 방법은,
    상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재하지 않으면, 상기 제1 데이터 서브 블록을 출력하는 단계; 를 더 포함하는 것을 특징으로 하는 방법.
  8. 데이터 획득 방법에 있어서,
    제2 데이터 서브 블록의 길이를 판독하는 단계;
    제2 데이터 서브 블록을 판독하는 단계;
    상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록인지 여부를 판단하는 단계; 및
    상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록이면, 상기 제2 데이터 서브 블록에 대해 압축 해제를 진행하고, 상기 압축 해제 후의 데이터를 저장하는 단계;
    를 포함하는 것을 특징으로 하는 방법.
  9. 제8항에 있어서,
    상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록인지 여부를 판단하는 단계는,
    상기 제2 데이터 서브 블록의 길이에 의거하여, 상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록인지 여부를 판단하는 단계; 또는
    상기 제2 데이터 서브 블록의 플래크 비트를 판독하고, 상기 플래크 비트에 의거하여 상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록인지 여부를 판단하는 단계 - 상기 플래크 비트는 상기 제2 데이터 서브 블록이 압축될 때 압축 게인이 존재하는지 여부를 지시하기 위한 것임 - ;
    를 포함하는 것을 특징으로 하는 방법.
  10. 제9항에 있어서,
    상기 제2 데이터 서브 블록의 길이에 의거하여, 상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록인지 여부를 판단하는 단계는,
    상기 제2 데이터 서브 블록에 대응되는 오리지널 길이, 저장 어드레스 및 메모리 버스 비트폭에 의거하여 상기 제2 데이터 서브 블록의 오리지널 데이터 전송에 필요한 비트수를 계산하고, 상기 제2 데이터 서브 블록의 길이, 상기 저장 어드레스 및 상기 메모리 버스 비트폭에 의거하여 상기 제2 데이터 서브 블록 전송에 필요한 비트수를 계산하여, 상기 제2 데이터 서브 블록 전송에 필요한 비트수가 상기 제2 데이터 서브 블록의 오리지널 데이터 전송에 필요한 비트수보다 작으면, 상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록임을 확정하고, 반대의 경우, 상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록이 아님을 확정하는 단계; 를 포함하고, 상기 저장 어드레스는 상기 제2 데이터 서브 블록의 저장 어드레스인 것을 특징으로 하는 방법.
  11. 제8항에 있어서,
    상기 제2 데이터 서브 블록은 뉴럴 네트워크 운반 데이터 중의 데이터 서브 블록이고, 상기 뉴럴 네트워크 운반 데이터는 복수 개의 제1 유형의 데이터 서브 블록을 포함하고, 각각의 제1 유형의 데이터 서브 블록의 크기는 동일하며;
    상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록인지 여부를 판단하는 단계는,
    상기 제2 데이터 서브 블록이 제1 유형의 데이터 서브 블록인지 여부를 판단하여, 상기 제2 데이터 서브 블록이 제1 유형의 데이터 서브 블록이면, 상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록인지 여부를 판단하는 단계; 를 포함하는 것을 특징으로 하는 방법.
  12. 제11항에 있어서,
    상기 뉴럴 네트워크 운반 데이터는 제2 유형의 데이터 서브 블록 및 제3 유형의 데이터 서브 블록 중 적어도 하나를 더 포함하고, 상기 제2 유형의 데이터 서브 블록 및 제3 유형의 데이터 서브 블록 중 적어도 하나는 상기 뉴럴 네트워크 운반 데이터가 상기 복수 개의 제1 유형의 데이터 서브 블록으로 분할된 후 남은 데이터로 구성된 데이터 서브 블록인 것을 특징으로 하는 방법.
  13. 제8항에 있어서,
    상기 방법은,
    상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록이 아니면, 상기 제2 데이터 서브 블록을 저장하는 단계; 를 더 포함하는 것을 특징으로 하는 방법.
  14. 데이터 출력 장치에 있어서,
    제1 데이터 서브 블록을 판독하고, 상기 제1 데이터 서브 블록을 연속적 데이터 스트림으로 스플라이싱하기 위한 판독 모듈 - 상기 제1 데이터 서브 블록은 뉴럴 네트워크 운반 데이터 중의 데이터 서브 블록임 - ;
    상기 연속적 데이터 스트림에 대해 압축을 진행하여, 제2 데이터 서브 블록을 얻기 위한 압축 모듈;
    상기 제1 데이터 서브 블록의 길이 및 상기 제2 데이터 서브 블록의 길이에 의거하여, 상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재하는지 여부를 판단하기 위한 판단 모듈; 및
    상기 연속적 데이터 스트림에 대해 진행한 압축에 게인이 존재하면, 상기 제2 데이터 서브 블록을 출력하기 위한 제1 출력 모듈;
    을 포함하는 것을 특징으로 하는 데이터 출력 장치.
  15. 데이터 획득 장치에 있어서,
    제2 데이터 서브 블록의 길이를 판독하기 위한 제1 판독 모듈;
    제2 데이터 서브 블록을 판독하기 위한 제2 판독 모듈;
    상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록인지 여부를 판단하기 위한 판단 모듈; 및
    상기 제2 데이터 서브 블록이 압축을 거쳤으며 압축 게인이 존재하는 데이터 서브 블록이면, 상기 제2 데이터 서브 블록에 대해 압축 해제를 진행하고, 상기 압축 해제 후의 데이터를 저장하기 위한 압축 해제 모듈;
    을 포함하는 것을 특징으로 하는 데이터 획득 장치.
  16. 전자 기기에 있어서,
    적어도 하나의 프로세서; 및
    상기 적어도 하나의 프로세서와 통신 연결되는 메모리; 를 포함하고
    상기 메모리에 상기 적어도 하나의 프로세서에 의해 실행가능한 명령이 저장되어 있고, 상기 명령은 상기 적어도 하나의 프로세서에 의해 실행되어, 상기 적어도 하나의 프로세서가 제1항 내지 제7항 중 어느 한 항에 따른 방법을 수행가능하도록 하거나, 또는 상기 적어도 하나의 프로세서가 제8항 내지 제13항 중 어느 한 항에 따른 방법을 수행가능하도록 하는 것을 특징으로 하는 전자 기기.
  17. 컴퓨터 명령이 저장되어 있는 비-일시적 컴퓨터-판독가능 저장 매체에 있어서,
    상기 컴퓨터 명령은 상기 컴퓨터가 제1항 내지 제7항 중 어느 한 항에 따른 방법을 수행하도록 하기 위한 것이거나, 또는 상기 컴퓨터 명령은 상기 컴퓨터가 제8항 내지 제13항 중 어느 한 항에 따른 방법을 수행하도록 하기 위한 것인 것을 특징으로 하는 비-일시적 컴퓨터-판독가능 저장 매체.
KR1020200075737A 2019-12-31 2020-06-22 데이터 출력 방법, 획득 방법, 장치 및 전자 기기 KR102542239B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201911420585.1 2019-12-31
CN201911420585.1A CN111178490B (zh) 2019-12-31 2019-12-31 数据输出方法、获取方法、装置和电子设备

Publications (2)

Publication Number Publication Date
KR20210086936A true KR20210086936A (ko) 2021-07-09
KR102542239B1 KR102542239B1 (ko) 2023-06-12

Family

ID=70652472

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200075737A KR102542239B1 (ko) 2019-12-31 2020-06-22 데이터 출력 방법, 획득 방법, 장치 및 전자 기기

Country Status (5)

Country Link
US (1) US11562241B2 (ko)
EP (1) EP3846021B1 (ko)
JP (1) JP7083004B2 (ko)
KR (1) KR102542239B1 (ko)
CN (1) CN111178490B (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11757469B2 (en) * 2021-04-01 2023-09-12 Qualcomm Incorporated Compression technique for deep neural network weights
CN113298712A (zh) * 2021-05-21 2021-08-24 安谋科技(中国)有限公司 图像处理方法、电子设备及其可读介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102891732A (zh) * 2012-09-25 2013-01-23 北京星网锐捷网络技术有限公司 数据发送方法和装置以及数据接收方法和装置
CN105653484A (zh) * 2015-12-31 2016-06-08 厦门市美亚柏科信息股份有限公司 一种数据分块压缩多通道传输方法

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR930003416B1 (ko) 1988-03-29 1993-04-29 주식회사 금성사 폰트의 함축방법
US5363098A (en) * 1993-10-25 1994-11-08 Digital Equipment Corporation Byte aligned data compression
US6624761B2 (en) * 1998-12-11 2003-09-23 Realtime Data, Llc Content independent data compression method and system
US6831575B2 (en) * 2002-11-04 2004-12-14 The Regents Of The University Of California Word aligned bitmap compression method, data structure, and apparatus
KR100959489B1 (ko) * 2003-04-04 2010-05-26 주식회사 케이티 데이터 사전 관리를 통한 데이터 압축 및 복원 방법
US20100223237A1 (en) * 2007-11-05 2010-09-02 University Of Florida Research Foundation, Inc. Lossless data compression and real-time decompression
JP2010287114A (ja) 2009-06-12 2010-12-24 Toshiba Corp データ格納方法及びデータ格納装置
CN101853229B (zh) * 2010-05-17 2012-08-08 华为终端有限公司 数据搬运方法、装置及数据读操作与写操作的方法
CN103023509A (zh) * 2012-11-14 2013-04-03 无锡芯响电子科技有限公司 一种硬件lz77压缩实现系统及其实现方法
CN103138766A (zh) 2013-03-11 2013-06-05 广州从兴电子开发有限公司 数据压缩与解压缩的方法及装置
CN103281156B (zh) 2013-05-02 2017-06-06 华为技术有限公司 一种数据压缩、解压缩方法及装置
CN106506007A (zh) 2015-09-08 2017-03-15 联发科技(新加坡)私人有限公司 一种无损数据压缩和解压缩装置及其方法
CN105207678B (zh) * 2015-09-29 2018-10-26 东南大学 一种改进型lz4压缩算法的硬件实现系统
CN105488534B (zh) 2015-12-04 2018-12-07 中国科学院深圳先进技术研究院 交通场景深度解析方法、装置及系统
US20170228252A1 (en) * 2016-02-10 2017-08-10 Qualcomm Incorporated System and method for multi-tile data transactions in a system on a chip
US10191682B2 (en) 2016-09-08 2019-01-29 Qualcomm Incorporated Providing efficient lossless compression for small data blocks in processor-based systems
JP2018063505A (ja) 2016-10-12 2018-04-19 富士通株式会社 メモリ管理制御装置、メモリ管理制御方法、及びメモリ管理制御プログラム
US10735023B2 (en) 2017-02-24 2020-08-04 Texas Instruments Incorporated Matrix compression accelerator system and method
US10795836B2 (en) * 2017-04-17 2020-10-06 Microsoft Technology Licensing, Llc Data processing performance enhancement for neural networks using a virtualized data iterator
CN108615076B (zh) * 2018-04-08 2020-09-11 瑞芯微电子股份有限公司 一种基于深度学习芯片的数据存储优化方法和装置
CN109582653B (zh) * 2018-11-14 2020-12-08 网易(杭州)网络有限公司 文件的压缩、解压缩方法及设备
CN110049333B (zh) * 2019-04-23 2021-04-27 东南大学 一种jpeg_ls图像压缩输出编码码流拼接系统及方法
CN111126589B (zh) * 2019-12-31 2022-05-20 昆仑芯(北京)科技有限公司 神经网络数据处理装置、方法和电子设备

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102891732A (zh) * 2012-09-25 2013-01-23 北京星网锐捷网络技术有限公司 数据发送方法和装置以及数据接收方法和装置
CN105653484A (zh) * 2015-12-31 2016-06-08 厦门市美亚柏科信息股份有限公司 一种数据分块压缩多通道传输方法

Also Published As

Publication number Publication date
EP3846021B1 (en) 2023-01-18
JP7083004B2 (ja) 2022-06-09
US11562241B2 (en) 2023-01-24
JP2021111320A (ja) 2021-08-02
CN111178490B (zh) 2021-08-24
KR102542239B1 (ko) 2023-06-12
US20210201134A1 (en) 2021-07-01
EP3846021A1 (en) 2021-07-07
CN111178490A (zh) 2020-05-19

Similar Documents

Publication Publication Date Title
US11126353B2 (en) Method and apparatus for data copy
US9647684B2 (en) Memory-based history search
US9590655B2 (en) Scalable high-bandwidth architecture for lossless compression
US11431351B2 (en) Selection of data compression technique based on input characteristics
US10187081B1 (en) Dictionary preload for data compression
KR102542239B1 (ko) 데이터 출력 방법, 획득 방법, 장치 및 전자 기기
KR102152346B1 (ko) 이미지 파일의 블록 간 차이를 통한 압축율 향상 방법 및 시스템
US10396816B2 (en) Pad encoding and decoding
US20140289208A1 (en) Data compression apparatus, data compression method, data decompression apparatus, and data decompression method
CN111242874B (zh) 图像修复的方法、装置、电子设备和存储介质
Funasaka et al. Adaptive loss‐less data compression method optimized for GPU decompression
US9287893B1 (en) ASIC block for high bandwidth LZ77 decompression
US9780806B2 (en) Predicate application through partial compression dictionary match
US20170147624A1 (en) Hardware lzma compressor
US11539955B2 (en) Method and system for improving compression ratio through pixel conversion of image file
US11354038B2 (en) Providing random access to variable-length data
CN114546328A (zh) 用于实现数据排列的方法、设备和介质
CN114546329A (zh) 用于实现数据奇偶重排的方法、设备和介质
CN116827348A (zh) 一种数据编解码方法及装置
WO2023150611A1 (en) Systems and methods for improved entropy coding efficiency
CN103458247A (zh) 一种非定长码高速拼接硬件实现装置

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant