KR101818440B1 - Data compression device, operation method using the same, and data processing apparatus having the same - Google Patents

Data compression device, operation method using the same, and data processing apparatus having the same Download PDF

Info

Publication number
KR101818440B1
KR101818440B1 KR1020170054930A KR20170054930A KR101818440B1 KR 101818440 B1 KR101818440 B1 KR 101818440B1 KR 1020170054930 A KR1020170054930 A KR 1020170054930A KR 20170054930 A KR20170054930 A KR 20170054930A KR 101818440 B1 KR101818440 B1 KR 101818440B1
Authority
KR
South Korea
Prior art keywords
data
input
symbols
input data
frequency
Prior art date
Application number
KR1020170054930A
Other languages
Korean (ko)
Other versions
KR20170051401A (en
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 삼성전자주식회사
Priority to KR1020170054930A priority Critical patent/KR101818440B1/en
Publication of KR20170051401A publication Critical patent/KR20170051401A/en
Application granted granted Critical
Publication of KR101818440B1 publication Critical patent/KR101818440B1/en

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • 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/6064Selection of Compressor
    • H03M7/6082Selection strategies
    • H03M7/6088Selection strategies according to the data type

Abstract

데이터 패턴 분석기와 데이터 압축 관리기를 포함하는 데이터 압축 장치의 동작 방법이 개시된다. 상기 방법은 상기 데이터 패턴 분석기가 입력 버퍼로 전송되는 입력 데이터를 수신하는 단계와, 상기 입력 버퍼를 이용하여 상기 입력 데이터를 버퍼링하는 동안, 상기 데이터 패턴 분석기가 상기 입력 데이터의 패턴을 분석하고 분석 결과를 출력하는 단계 및 상기 분석 결과에 따라, 상기 데이터 압축 관리기가 상기 입력 버퍼에 의하여 버퍼링된 데이터를 바이패스하거나 또는 압축하는 단계를 포함한다.A method of operating a data compression device including a data pattern analyzer and a data compression manager is disclosed. The method comprising: receiving input data transmitted by the data pattern analyzer to an input buffer; and during the buffering of the input data using the input buffer, the data pattern analyzer analyzes the pattern of the input data, And the data compression manager bypasses or compresses the data buffered by the input buffer according to the analysis result.

Description

데이터 압축 장치, 이의 동작 방법, 및 이를 포함하는 데이터 처리 장치 {Data compression device, operation method using the same, and data processing apparatus having the same}Technical Field [0001] The present invention relates to a data compression apparatus, a data compression apparatus, a data compression apparatus,

본 발명의 개념에 따른 실시 예는 데이터 압축 기술에 관한 것으로, 특히 전송되는 데이터의 패턴을 분석하고 분석 결과에 따라 상기 데이터의 압축 여부를 결정할 수 있는 데이터 압축 장치, 이의 동작 방법, 및 이를 포함하는 데이터 처리 장치에 관한 것이다.An embodiment according to the concept of the present invention relates to a data compression technique, and more particularly to a data compression device capable of analyzing a pattern of transmitted data and determining whether to compress the data according to an analysis result, an operation method thereof, And a data processing apparatus.

데이터 압축은 데이터를 더 작은 저장 공간에 효율적으로 저장하기 위한 기술 또는 상기 기술의 실제 적용을 의미한다.Data compression refers to a technique for efficiently storing data in a smaller storage space or an actual application of the technique.

데이터의 압축은 데이터를 더 작은 크기로 변환시키는 인코딩(encoding) 과정과 인코드된 데이터를 원래 데이터로 복원시키는 디코딩(decoding) 과정을 포함한다.Compression of data includes an encoding process to convert the data to a smaller size and a decoding process to restore the encoded data to original data.

본 발명이 이루고자 하는 기술적인 과제는 데이터 압축 시간을 감소시키기 위하여 데이터가 입력 버퍼로 전송되는 도중에 상기 데이터의 패턴을 분석하고 분석 결과에 따라 상기 데이터의 압축 여부를 결정할 수 있는 데이터 압축 방법과 상기 방법을 수행할 수 있는 장치를 제공하는 것이다.According to an aspect of the present invention, there is provided a data compression method for analyzing a pattern of data during transmission of data to an input buffer and determining whether to compress the data according to an analysis result, And to provide a device capable of performing the above-described operations.

본 발명의 실시 예들에 따른 데이터 패턴 분석기와 데이터 압축 관리기를 포함하는 데이터 압축 장치의 동작 방법은 기 데이터 패턴 분석기가 입력 버퍼로 전송되는 입력 데이터를 수신하는 단계와, 상기 입력 버퍼를 이용하여 상기 입력 데이터를 버퍼링하는 동안, 상기 데이터 패턴 분석기가 상기 입력 데이터의 패턴을 분석하고 분석 결과를 출력하는 단계 및 상기 분석 결과에 따라, 상기 데이터 압축 관리기가 상기 입력 버퍼에 의하여 버퍼된 데이터를 바이패스하거나 또는 압축하는 단계를 포함한다.A method of operating a data compression apparatus including a data pattern analyzer and a data compression manager according to embodiments of the present invention includes receiving input data transmitted to an input buffer by a data pattern analyzer, Analyzing a pattern of the input data and outputting an analysis result while the data pattern analyzer is buffering the data; and the data compression manager bypasses the buffered data by the input buffer according to the analysis result, And compressing.

본 발명의 실시 예들에 따른 데이터 압축 장치는 입력 버퍼, 상기 입력 버퍼로 전송되는 입력 데이터를 수신하고, 상기 입력 데이터의 패턴을 분석하여 분석 코드를 출력하기 위한 데이터 패턴 분석기 및 상기 분석 코드에 따라, 상기 입력 버퍼에 의해 버퍼된 데이터를 비휘발성 메모리 장치로 바이패스하거나 또는 상기 버퍼된 데이터를 압축하여 생성된 압축 데이터를 상기 비휘발성 메모리 장치로 전송하는 데이터 압축 관리기를 포함한다.A data compression apparatus according to embodiments of the present invention includes an input buffer, a data pattern analyzer for receiving input data transmitted to the input buffer, analyzing a pattern of the input data and outputting an analysis code, And a data compression manager for bypassing the data buffered by the input buffer to the nonvolatile memory device or for transmitting the compressed data generated by compressing the buffered data to the nonvolatile memory device.

본 발명의 실시 예들에 따른 데이터 처리 장치는 비휘발성 메모리 장치, 바이패스된 입력 데이터 또는 압축 데이터를 상기 비휘발성 메모리 장치로 전송하는 데이터 압축 장치를 포함하며, 상기 데이터 압축 장치는, 입력 버퍼, 상기 입력 버퍼로 전송되는 입력 데이터를 수신하고, 상기 입력 데이터가 상기 입력 버퍼로 전송되는 동안, 상기 입력 데이터의 패턴을 분석하여 분석 코드를 출력하기 위한 데이터 패턴 분석기 및 상기 분석 코드에 따라, 상기 입력 버퍼에 의하여 버퍼된 데이터를 상기 바이패스된 입력 데이터로서 출력하거나 또는 상기 버퍼된 데이터를 압축하여 상기 압축 데이터를 출력하는 데이터 압축 관리기를 포함한다.A data processing apparatus according to embodiments of the present invention includes a nonvolatile memory device, a data compression device for transferring bypassed input data or compressed data to the nonvolatile memory device, the data compression device including an input buffer, A data pattern analyzer for receiving input data transmitted to an input buffer and for analyzing a pattern of the input data and outputting an analysis code while the input data is transmitted to the input buffer, And outputting the buffered data as the bypassed input data or compressing the buffered data to output the compressed data.

본 발명의 실시 예에 따른 데이터 압축 장치와 이의 동작 방법은 데이터가 입력 버퍼로 전송되는 도중에 상기 데이터의 패턴을 분석하고 분석 결과에 따라 상기 데이터의 압축 여부를 결정할 수 있으므로 상기 데이터를 압축하는 시간을 감소시킬 수 있는 효과가 있다.The data compression apparatus and the operation method thereof according to the embodiment of the present invention can analyze the pattern of the data while the data is being transmitted to the input buffer and determine whether to compress the data according to the analysis result. There is an effect that can be reduced.

본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1a는 본 발명의 일 실시예에 따른 데이터 압축 장치의 블록도를 나타낸다.
도 1b는 도 1의 입력 버퍼로부터 출력되는 버퍼된 데이터의 출력 타이밍도를 나타낸다.
도 1c는 도 2에 도시된 버퍼된 데이터 구조를 나타낸다.
도 2는 본 발명의 다른 실시예에 따른 데이터 압축 장치의 블록도를 나타낸다.
도 3은 도 2에 도시된 데이터 패턴 분석기의 동작을 설명하기 위한 테이블이다.
도 4는 본 발명의 또 다른 실시예에 따른 데이터 압축 장치의 블록도를 나타낸다.
도 5는 본 발명의 또 다른 실시예에 따른 데이터 압축 장치의 블록도를 나타낸다.
도 6은 도 1a, 도 2, 도 4, 또는 도 5에 도시된 데이터 압축 장치의 동작을 설명하기 위한 플로우차트이다.
도 7은 도 1a, 도 2, 도 4, 또는 도 5에 도시된 데이터 압축 장치의 동작을 설명하기 위한 플로우차트이다.
도 8은 도 1a, 도 2, 도 4, 또는 도 5에 도시된 데이터 압축 장치의 동작을 설명하기 위한 플로우차트이다.
도 9는 정적 호프만 코딩 규칙을 이용하는 도 5에 도시된 패턴 분석기의 동작을 설명하기 위한 플로우차트이다.
도 10은 동적 호프만 코딩 규칙을 이용하는 도 5에 도시된 패턴 분석기의 동작을 설명하기 위한 플로우차트이다.
도 11은 도 1a, 도 2, 도 4, 또는 도 5에 도시된 데이터 압축 장치를 포함하는 데이터 처리 시스템의 일 실시예를 나타낸다.
도 12는 도 1a, 도 2, 도 4, 또는 도 5에 도시된 데이터 압축 장치를 포함하는 데이터 처리 시스템의 다른 실시예를 나타낸다.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS In order to more fully understand the drawings recited in the detailed description of the present invention, a detailed description of each drawing is provided.
Figure 1a shows a block diagram of a data compression apparatus according to an embodiment of the present invention.
1B shows an output timing diagram of buffered data output from the input buffer of FIG.
Fig. 1C shows the buffered data structure shown in Fig.
2 shows a block diagram of a data compression apparatus according to another embodiment of the present invention.
3 is a table for explaining the operation of the data pattern analyzer shown in FIG.
4 shows a block diagram of a data compression apparatus according to another embodiment of the present invention.
5 shows a block diagram of a data compression apparatus according to another embodiment of the present invention.
FIG. 6 is a flowchart for explaining the operation of the data compression apparatus shown in FIG. 1A, FIG. 2, FIG. 4, or FIG.
FIG. 7 is a flowchart for explaining the operation of the data compression apparatus shown in FIG. 1A, FIG. 2, FIG. 4, or FIG.
FIG. 8 is a flowchart for explaining the operation of the data compression apparatus shown in FIG. 1A, FIG. 2, FIG. 4, or FIG.
Fig. 9 is a flowchart for explaining the operation of the pattern analyzer shown in Fig. 5 using the static Hoffman coding rule.
FIG. 10 is a flowchart for explaining the operation of the pattern analyzer shown in FIG. 5 using the dynamic Hoffman coding rule.
FIG. 11 shows an embodiment of a data processing system including the data compression apparatus shown in FIGS. 1A, 2, 4, or 5.
Fig. 12 shows another embodiment of a data processing system including the data compression apparatus shown in Figs. 1A, 2, 4, or 5.

본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.It is to be understood that the specific structural or functional descriptions of embodiments of the present invention disclosed herein are only for the purpose of illustrating embodiments of the inventive concept, But may be embodied in many different forms and is not limited to the embodiments set forth herein.

본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.Embodiments in accordance with the concepts of the present invention are capable of various modifications and may take various forms, so that the embodiments are illustrated in the drawings and described in detail herein. It should be understood, however, that it is not intended to limit the embodiments according to the concepts of the present invention to the particular forms disclosed, but includes all modifications, equivalents, or alternatives falling within the spirit and scope of the invention.

제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1구성요소는 제2구성요소로 명명될 수 있고, 유사하게 제2구성요소는 제1구성요소로도 명명될 수 있다.The terms first, second, etc. may be used to describe various elements, but the elements should not be limited by the terms. The terms are intended to distinguish one element from another, for example, without departing from the scope of the invention in accordance with the concepts of the present invention, the first element may be termed the second element, The second component may also be referred to as a first component.

어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.It is to be understood that when an element is referred to as being "connected" or "connected" to another element, it may be directly connected or connected to the other element, . On the other hand, when an element is referred to as being "directly connected" or "directly connected" to another element, it should be understood that there are no other elements in between. Other expressions that describe the relationship between components, such as "between" and "between" or "neighboring to" and "directly adjacent to" should be interpreted as well.

본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. The singular expressions include plural expressions unless the context clearly dictates otherwise. In this specification, the terms "comprises ", or" having ", or the like, specify that there is a stated feature, number, step, operation, , Steps, operations, components, parts, or combinations thereof, as a matter of principle.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless otherwise defined, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Terms such as those defined in commonly used dictionaries are to be interpreted as having a meaning consistent with the meaning of the context in the relevant art and, unless explicitly defined herein, are to be interpreted as ideal or overly formal Do not.

이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다.BEST MODE FOR CARRYING OUT THE INVENTION Hereinafter, the present invention will be described in detail with reference to the preferred embodiments of the present invention with reference to the accompanying drawings.

도 1a는 본 발명의 일 실시예에 따른 데이터 압축 장치의 블록도를 나타내고, 도 1b는 도 1의 입력 버퍼로부터 출력되는 버퍼된 데이터의 출력 타이밍도를 나타내고, 도 1c는 도 2에 도시된 버퍼된 데이터 구조를 나타낸다.FIG. 1A is a block diagram of a data compression apparatus according to an embodiment of the present invention. FIG. 1B shows an output timing diagram of buffered data output from the input buffer of FIG. Lt; / RTI >

도 1a부터 도 1c을 참조하면, 데이터 압축 장치(10A)는 데이터 패턴 분석기 (20A), 입력 버퍼(30), 및 데이터 압축 관리기(data compression manager; 40)를 포함한다. 실시 예에 따라, 데이터 압축 장치(10A)는 출력 버퍼(50)를 더 포함할 수 있다. 데이터 압축 장치(10A)는 집적 회로에 구현될 수 있다.Referring to FIGS. 1A to 1C, a data compression apparatus 10A includes a data pattern analyzer 20A, an input buffer 30, and a data compression manager 40. According to the embodiment, the data compression apparatus 10A may further include an output buffer 50. [ The data compression apparatus 10A may be implemented in an integrated circuit.

데이터 패턴 분석기(20A)는 입력 데이터(DATA)의 패턴을 분석할 수 있는 하드웨어 또는 프로세서(processor)로 구현될 수 있다. 또한, 데이터 압축 관리기 (40)는, 데이터 패턴 분석기(20A)로부터 출력된 분석 결과(INF1)에 따라, 입력 버퍼(30)에 의하여 버퍼된 데이터(BDi)를 바이패스(bypass)하거나 또는 압축할 수 있는 하드웨어 또는 프로세서로 구현될 수 있다.The data pattern analyzer 20A may be implemented by a hardware or a processor capable of analyzing a pattern of input data (DATA). The data compression manager 40 also bypasses or compresses the data BDi buffered by the input buffer 30 according to the analysis result INF1 output from the data pattern analyzer 20A Which may be implemented in hardware or a processor.

데이터 패턴 분석기(20A)는 입력 버퍼(30)로 전송되는 입력 데이터(DATA)를 가로채 입력 데이터(DATA)의 패턴을 분석하여 분석 결과, 즉 분석 코드(INF1)를 출력할 수 있다.The data pattern analyzer 20A intercepts the input data DATA sent to the input buffer 30 and analyzes the pattern of the input data DATA to output the analysis result INF1.

예컨대, 데이터 패턴 분석기(20A)에 포함된 헤더 분석기(21)는 입력 데이터 (DATA)의 헤더(HEADER)에 포함된 지시 비트를 분석하고, 분석 결과에 따라 분석 코드(INF1)를 출력할 수 있다. 분석 코드(INF1)는 1-비트 또는 그 이상의 비트로 구현될 수 있다.For example, the header analyzer 21 included in the data pattern analyzer 20A may analyze the instruction bits included in the header HEADER of the input data DATA and output the analysis code INF1 according to the analysis result . The analysis code INF1 may be implemented with one or more bits.

헤더(HEADER)에 포함된 지시 비트는 입력 데이터(DATA)의 바디(DATA1)에 포함된 데이터가 압축되었는지의 여부를 나타내는 비트로서, 1-비트 또는 그 이상의 비트일 수 있다.The indication bit included in the header HEADER indicates whether or not the data included in the body DATA1 of the input data DATA is compressed, and may be 1-bit or more bits.

예컨대, 입력 데이터(DATA)의 바디(DATA1)에 포함된 데이터가 압축 데이터 (compressed data; 예컨대 멀티-미디어 데이터)일 때 헤더(HEADER)에 포함된 지시 비트는 1이고, 입력 데이터(DATA)의 바디(DATA1)에 포함된 데이터가 압축되지 않은 데이터(uncompressed data)일 때 헤더(HEADER)에 포함된 지시 비트는 0일 수 있다.For example, when the data included in the body DATA1 of the input data DATA is compressed data (e.g., multi-media data), the indication bit included in the header HEADER is 1, When the data included in the body (DATA1) is uncompressed data, the indication bit included in the header (HEADER) may be zero.

이때, 데이터 패턴 분석기(20A), 예컨대 헤더 분석기(21)는 헤더(HEADER)에 포함된 지시 비트에 따라 1(예컨대, 지시 비트가 1일 때) 또는 0(예컨대, 지시 비트가 0일 때)을 갖는 분석 코드(INF1)를 출력할 수 있다.At this time, the data pattern analyzer 20A, for example, the header analyzer 21 determines whether or not 1 (for example, when the indication bit is 1) or 0 (when the indication bit is 0, for example) according to the indication bit included in the HEADER, The analysis code INF1 can be output.

입력 버퍼(30)는 데이터 버스를 통하여 입력된 입력 데이터(DATA)를 버퍼링하여 버퍼된 데이터(BDi)를 출력한다. 예컨대, 입력 데이터(DATA)가 a-비트 데이터일 때 버퍼된 데이터(BDi)는 b-비트 데이터일 수 있다. 여기서, a과 b은 자연수로서, a=b 또는 b은 a의 정수 배일 수 있다.The input buffer 30 buffers the input data DATA input through the data bus and outputs the buffered data BDi. For example, when the input data DATA is a-bit data, the buffered data BDi may be b-bit data. Here, a and b are natural numbers, and a = b or b may be an integral multiple of a.

예컨대, 입력 데이터(DATA)가 8-비트 데이터이고 버퍼된 데이터(BDi)가 64-비트 데이터일 때, 데이터 패턴 분석기(20A)는 시간 간격(T) 이내에 8개의 입력 데이터(DATA) 각각에 대한 패턴 분석을 수행할 수 있다. 입력 버퍼(30)는, 8개의 입력 데이터(DATA)가 모두 입력될 마다 활성화되는 인에이블 신호(EN)에 따라, 각 버퍼된 데이터(BDi, i=0, 1, 2, 3, ...)를 출력할 수 있다.For example, when the input data (DATA) is 8-bit data and the buffered data (BDi) is 64-bit data, the data pattern analyzer (20A) Pattern analysis can be performed. The input buffer 30 outputs each buffered data BDi (i = 0, 1, 2, 3, ...) according to an enable signal EN activated every time the eight input data DATA are input. Can be output.

데이터 압축 관리기(40)는 데이터 패턴 분석기(20A)로부터 출력된 분석 코드 (INF1)에 따라 입력 버퍼(30)에 의하여 버퍼된 데이터(BDi)를 외부로 바이패스 (bypass)하거나 또는 버퍼된 데이터(BDi)를 압축하여 생성된 압축 데이터(CDATA)를 상기 외부로 전송할 수 있다.The data compression manager 40 bypasses the buffered data BDi by the input buffer 30 in accordance with the analysis code INF1 output from the data pattern analyzer 20A, BDi) and compressed data (CDATA) generated by the compressed data can be transmitted to the outside.

예컨대, 분석 코드(INF1)가 0일 때, 데이터 압축 관리기(40)는 입력 버퍼 (30)에 의하여 버퍼된 데이터(BDi)를 압축하고 압축 데이터(CDATA)를 출력 버퍼 (50)로 출력한다. 분석 코드(INF1)가 1일 때 데이터 압축 관리기(40)는 입력 버퍼 (30)에 의하여 버퍼된 데이터(BDi)를 출력 버퍼(50)로 바이패스한다.For example, when the analysis code INF1 is 0, the data compression manager 40 compresses the buffered data BDi by the input buffer 30 and outputs the compressed data CDATA to the output buffer 50. [ When the analysis code INF1 is 1, the data compression manager 40 bypasses the buffered data BDi to the output buffer 50 by the input buffer 30.

데이터 압축 관리기(40)는 분석 코드(INF1)를 수신하여 저장하기 위한 메모리(41), 선택기(45)로부터 출력된 버퍼된 데이터(BDi)를 압축하여 압축 데이터 (CDATA)를 생성하기 위한 프로세서(43), 및 메모리(41)에 저장된 분석 코드(INF1)에 따라 입력 버퍼(30)로부터 버퍼된 데이터(BDi)를 외부로 바이패스하거나 또는 프로세서(43)로 전송하기 위한 선택기(45)를 포함한다.The data compression manager 40 includes a memory 41 for receiving and storing the analysis code INF1, a processor (not shown) for compressing the buffered data BDi output from the selector 45 to generate compressed data CDATA And a selector 45 for externally bypassing or transmitting the buffered data BDi from the input buffer 30 to the processor 43 according to the analysis code INF1 stored in the memory 41 do.

예컨대, 도 1c에 도시된 버퍼된 데이터(D0)를 처리하는 프로세서(43)는 각 심벌(A1, A2, 및 A3)을 순차적으로 압축하고, 이전에 압축된 심벌(예컨대, 첫 번째 A1)과 동일한 심벌(예컨대, 네 번째 A1)에 대해서는 압축하지 않고 심벌들(예컨대, 첫 번째 A1과 네 번째 A1) 사이의 연관 관계를 나타내는 연관 정보를 출력할 수 있다. 물론, 프로세서(43)는 모든 심벌들 각각을 압축할 수도 있다.For example, the processor 43, which processes the buffered data D0 shown in FIG. 1C, sequentially compresses each symbol A1, A2, and A3 and sequentially compresses the previously compressed symbol (e.g., the first A1) It may output the association information indicating the association between the symbols (e.g., the first A1 and the fourth A1) without compressing the same symbol (e.g., the fourth A1). Of course, the processor 43 may also compress each of all the symbols.

출력 버퍼(50)는 선택기(45)로부터 출력된 버퍼된 데이터(BDi) 또는 프로세서(43)에 의하여 압축된 압축 데이터(CDATA)를 수신하여 버퍼링할 수 있다.The output buffer 50 may receive and buffer the buffered data BDi output from the selector 45 or the compressed data CDATA compressed by the processor 43. [

도 1a을 참조하여 설명한 바와 같이, 데이터 패턴 분석기(20A)는 입력 데이터(DATA)가 입력 버퍼(30)로 전송되는 도중에(또는, 입력 데이터(DATA)가 입력 버퍼(30)에 의하여 버퍼링되는 도중에) 입력 데이터(DATA)의 패턴(예컨대, 헤더에 포함된 지시 비트)을 분석하고, 분석 결과(INF1)를 데이터 압축 관리기(40)로 전송할 수 있다. 데이터 압축 관리기(40)는 분석 결과(INF1)에 따라 버퍼된 데이터(BDi)를 바이패스할지 또는 압축할지를 결정할 수 있다.1A, the data pattern analyzer 20A determines whether the input data DATA is being transferred to the input buffer 30 (or the input data DATA is being buffered by the input buffer 30) (For example, an instruction bit included in the header) of the input data DATA and transmit the analysis result INF1 to the data compression manager 40. [ The data compression manager 40 can determine whether to buffer or compress the buffered data BDi according to the analysis result INF1.

데이터 압축 관리기(40)는 각 입력 데이터(DATA)의 패턴을 분석하기 위하여 입력 버퍼(30)에 저장된 각 입력 데이터(DATA) 또는 버퍼된 데이터(BDi)를 별도로 리드할 필요가 없으므로 데이터 압축 속도를 개선할 수 있다.The data compression manager 40 does not have to separately read out the input data DATA or the buffered data BDi stored in the input buffer 30 in order to analyze the pattern of each input data DATA, Can be improved.

도 2는 본 발명의 다른 실시예에 따른 데이터 압축 장치의 블록도를 나타낸다.2 shows a block diagram of a data compression apparatus according to another embodiment of the present invention.

도 2를 참조하면, 도 1에 도시된 입력 데이터(DATA)와 달리, 도 2에 도시된 입력 데이터(DATA)는 바디(DATA1)에 포함된 데이터가 압축 데이터인지를 지시하는 지시 비트를 포함하는 헤더를 포함하지 않는다.2, the input data DATA shown in FIG. 2 includes an instruction bit indicating whether data included in the body (DATA1) is compressed data or not Do not include headers.

데이터 압축 장치(10B)는 데이터 패턴 분석기(20B), 입력 버퍼(30), 및 데이터 압축 관리기(40)를 포함한다. 실시 예에 따라, 데이터 압축 장치(10B)는 출력 버퍼(50)를 더 포함할 수 있다.The data compression apparatus 10B includes a data pattern analyzer 20B, an input buffer 30, and a data compression manager 40. [ According to the embodiment, the data compression apparatus 10B may further include an output buffer 50. [

데이터 패턴 분석기(20B)에 포함된 패턴 분석기(23)는 입력 데이터(DATA)가 입력 버퍼(30)로 전송될 때 입력 데이터(DATA)를 가로채 입력 데이터(DATA)의 패턴을 분석하고 분석 결과(INF2)를 출력한다. 이 경우, 패턴 분석기(23)는 도 1c의 버퍼된 데이터(D0)에 포함된 각 입력 데이터에 대한 패턴을 다음 버퍼된 데이터(D1)가 출력되기 전까지 분석할 수 있다.The pattern analyzer 23 included in the data pattern analyzer 20B analyzes the pattern of the input data DATA while intercepting the input data DATA when the input data DATA is transmitted to the input buffer 30, (INF2). In this case, the pattern analyzer 23 can analyze the pattern for each input data contained in the buffered data D0 of FIG. 1C until the next buffered data D1 is output.

패턴 분석기(23)는 입력 데이터(DATA)에 포함된 복수의 심벌들(symbols) 각각의 빈도 수를 계수(count)하고, 최대 빈도 수(또는 최소 빈도 수)와 기준 값을 비교하고, 비교 결과를 분석 결과(INF2)로서 데이터 압축 관리기(40)로 출력한다. 하나의 심벌은 k(k은 자연수, 예컨대 k=8)-비트들을 포함할 수 있다.The pattern analyzer 23 counts the frequency of each of a plurality of symbols included in the input data DATA and compares the maximum frequency number (or the minimum frequency number) with the reference value, To the data compression manager 40 as the analysis result INF2. One symbol may contain k (k is a natural number, e.g., k = 8) - bits.

도 3은 도 2에 도시된 데이터 패턴 분석기의 동작을 설명하기 위한 테이블이다.3 is a table for explaining the operation of the data pattern analyzer shown in FIG.

도 2와 도 3을 참조하면, 패턴 분석기(23)는 입력 데이터(DATA)에 포함된 복수의 심벌들(AA, BB, CC, DD, EE, FF, ...) 각각의 빈도 수(10, 100, 1000, 2, 5, 50, ...)를 카운트하고, 최대 빈도 수(또는 최소 빈도 수)와 기준 값을 비교한다.Referring to FIG. 2 and FIG. 3, the pattern analyzer 23 calculates the number of frequencies (10) of each of a plurality of symbols (AA, BB, CC, DD, EE, , 100, 1000, 2, 5, 50, ...) and compares the maximum frequency (or minimum frequency) with the reference value.

설명의 일 예로서, 상기 최대 빈도 수가 상기 기준 값보다 큰 경우, 즉, 상기 최대 빈도 수에 상응하는 심벌의 반복 회수가 많으므로, 패턴 분석기(23)는 입력 데이터(DATA)에 대한 압축을 지시하는 분석 코드(INF2; 예컨대 0)를 데이터 압축 관리기(40)로 출력한다. 압축을 지시하는 분석 코드(INF2)에 따라, 데이터 압축 관리기(40)는 입력 버퍼(30)에 의하여 버퍼된 데이터(BDi)를 압축하여 압축 데이터 (CDATA)를 비휘발성 메모리 장치, 예컨대 플래시 메모리 장치로 출력하거나 또는 출력 버퍼(50)를 통하여 상기 비휘발성 메모리 장치로 출력할 수 있다.As an example of the description, if the maximum frequency count is larger than the reference value, i.e., the number of repetitions of the symbol corresponding to the maximum frequency count is large, the pattern analyzer 23 instructs the compression of the input data (DATA) (For example, 0) to the data compression managing unit 40. The analysis code INF2 The data compression manager 40 compresses the buffered data BDi by the input buffer 30 and outputs the compressed data CDATA to a nonvolatile memory device such as a flash memory device Or output to the nonvolatile memory device via the output buffer 50.

그러나, 상기 최대 빈도 수가 상기 기준 값보다 작은 경우, 패턴 분석기(23)는 버퍼된 데이터(BDi)에 대한 바이패스를 지시하는 분석 코드(INF2; 예컨대 1)를 데이터 압축 관리기(40)로 출력한다. 바이패스를 지시하는 분석 코드(INF2)에 따라, 데이터 압축 관리기(40)는 버퍼된 데이터(BDi)를 바이패스하여 비휘발성 메모리 장치 또는 출력 버퍼(50)로 전송할 수 있다.However, if the maximum frequency number is smaller than the reference value, the pattern analyzer 23 outputs an analysis code INF2 (e.g., 1) indicating bypass to the buffered data BDi to the data compression manager 40 . According to the analysis code INF2 indicating the bypass, the data compression manager 40 can bypass the buffered data BDi and transfer it to the nonvolatile memory device or the output buffer 50. [

도 4는 본 발명의 또 다른 실시예에 따른 데이터 압축 장치의 블록도를 나타낸다. 도 4에는 헤더 분석기(25)와 예측기(26)를 포함하는 데이터 패턴 분석기 (20C)가 도시되어 있다.4 shows a block diagram of a data compression apparatus according to another embodiment of the present invention. Figure 4 shows a data pattern analyzer 20C including a header analyzer 25 and a predictor 26. [

즉, 데이터 압축 장치(10C)는 데이터 패턴 분석기(20C), 입력 버퍼(30), 및 데이터 압축 관리기(40)를 포함한다. 실시 예에 따라 데이터 압축 장치(10C)는 출력 버퍼(50)를 더 포함할 수 있다.That is, the data compression apparatus 10C includes a data pattern analyzer 20C, an input buffer 30, and a data compression manager 40. [ The data compression apparatus 10C may further include an output buffer 50 according to the embodiment.

헤더 분석기(25)는 입력 데이터(DATA)의 헤더(HEADER)에 포함된 지시 비트에 따라 예측기(26)의 동작을 제어하는 제어 신호와 데이터 압축 관리기(40)의 동작을 제어하는 제1제어 코드를 출력한다.The header analyzer 25 receives a control signal for controlling the operation of the predictor 26 and a first control code for controlling the operation of the data compression manager 40 according to the indication bit included in the header HEADER of the input data DATA. .

예컨대, 바디(DATA1)에 포함된 데이터가 이미 압축된 데이터임을 나타내는 지시 비트(예컨대, 1)에 따라 헤더 분석기(25)는 예측기(26)의 동작을 디스에이블시키기 위한 제어 신호(예컨대, 로우 레벨을 갖는 제어 신호)를 예측기(26)로 출력한다. 이때, 헤더 분석기(25)는 버퍼된 데이터(BDi)를 바이패스시키기 위한 제1제어 코드를 데이터 압축 관리기(40)로 출력할 수 있다.For example, in accordance with an indication bit (e.g., 1) indicating that the data contained in the body DATA1 is already compressed data, the header analyzer 25 generates a control signal for disabling the operation of the predictor 26 To the predictor 26. The predictor 26 outputs the control signal to the predictor 26. [ At this time, the header analyzer 25 may output the first control code for bypassing the buffered data BDi to the data compression manager 40.

그러나, 바디(DATA1)에 포함된 데이터가 압축되지 않은 데이터임을 나타내는 지시 비트(예컨대, 0)에 따라 헤더 분석기(25)는 예측기(26)의 동작을 인에이블시키기 위한 제어 신호(예컨대, 하이 레벨을 갖는 제어 신호)를 예측기(26)로 출력한다.However, according to an indication bit (for example, 0) indicating that the data included in the body DATA1 is uncompressed data, the header analyzer 25 outputs a control signal for enabling the operation of the predictor 26 To the predictor 26. The predictor 26 outputs the control signal to the predictor 26. [

예측기(26)는 활성화된 제어 신호(예컨대, 하이 레벨을 갖는 제어 신호)에 따라 인에이블되고, 도 3에 도시된 바와 같이 입력 데이터(DATA), 즉 바디(DATA1)에 포함된 복수의 심벌들(AA, BB, CC, DD, EE, FF, ...) 각각의 빈도 수(10, 100, 1000, 2, 5, 50, ...)를 계수한다.The predictor 26 is enabled in accordance with an activated control signal (e.g., a control signal having a high level) and is enabled to output the input data DATA, that is, a plurality of symbols The number of frequencies (10, 100, 1000, 2, 5, 50, ...) of each of AA, BB, CC, DD, EE,

예측기(26)는 복수의 심벌들(AA, BB, CC, DD, EE, FF, ...) 각각에 코딩 규칙에 따라 코드워드(1011, 101, 10, 10101, 10001, 110, ...)를 할당하고, 복수의 심벌들(AA, BB, CC, DD, EE, FF, ...) 각각의 빈도 수(10, 100, 1000, 2, 5, 50, ...)와 복수의 심벌들(AA, BB, CC, DD, EE, FF, ...) 각각에 할당된 코드워드 (1011, 101, 10, 10101, 10001, 110, ...)의 비트 수(4, 3, 2, 5, 5, 3, ...)를 이용하여 압축될 데이터의 크기를 예측하고, 예측된 압축 데이터(이하, '예측 데이터'라 한다)의 크기와 기준 데이터의 크기를 비교하고 비교 결과를 출력한다.The predictor 26 generates the codewords 1011, 101, 10, 10101, 10001, 110, ... in accordance with a coding rule on each of a plurality of symbols AA, BB, CC, DD, EE, ), And the number of frequencies (10, 100, 1000, 2, 5, 50, ...) of each of the plurality of symbols (AA, BB, CC, DD, EE, FF, The number of bits (4, 3, 4) of the codewords (1011, 101, 10, 10101, 10001, 110, ...) allocated to each of the symbols (AA, BB, CC, DD, EE, 2, 5, 5, 3, ...) to predict the size of the data to be compressed, compares the size of the predicted compressed data (hereinafter referred to as predicted data) with the size of the reference data, .

즉, 예측기(26)는 실시 예로서 제시된 수학식 1에 따라 예측 데이터(ECDATA)의 크기를 계산할 수 있다.That is, the predictor 26 may calculate the size of the prediction data ECDATA according to Equation (1) presented as an embodiment.

[수학식 1][Equation 1]

Figure 112017041842663-pat00001
Figure 112017041842663-pat00001

n(n은 자연수)은 바디(DATA1)에 포함된 데이터의 심벌의 총 수를 나타내고, fi는 i-번째 심벌의 빈도 수를 나타내고, Bi는 i-번째 심벌에 할당된 코드워드 (codeword)의 비트 수를 나타내다.n (n is a natural number) is the number of total symbols of the data contained in the body (DATA1), f i denotes the number of frequency of the i- th symbol, B i is a code word (codeword assigned to the i- th symbol ). ≪ / RTI >

예컨대, 심벌(AA)의 빈도 수는 10이고, 심벌(AA)에 할당된 코드워드(1011)의 비트 수는 3이고, 심벌(CC)의 빈도 수는 1,000이고, 심벌(CC)에 할당된 코드워드 (10)의 비트 수는 2이다.For example, if the frequency of the symbol AA is 10, the number of bits of the code word 1011 allocated to the symbol AA is 3, the frequency of the symbol CC is 1,000, The number of bits of the code word 10 is two.

입력 데이터(DATA)의 크기가 5Kbyte이고 기준 데이터의 크기가 3Kbyte이고, 수학식 1에 따라 계산된 예측 데이터(ECDATA)의 크기가 3Kbyte보다 클 때, 예측기 (26)는 버퍼된 데이터(BDi)를 바이패스시킬 것을 지시하는 제2제어 코드를 출력한다. 반대로, 수학식 1에 따라 계산된 예측 데이터(ECDATA)의 크기가 3Kbyte보다 작을 때, 예측기(26)는 버퍼된 데이터(BDi)를 압축시킬 것을 지시하는 제2제어 코드를 출력한다. 예컨대, 기준 데이터의 크기는 입력 데이터(DATA)의 크기의 c(c는 소수, 예컨대, 0.6)배일 수 있다.When the size of the input data DATA is 5 Kbytes and the size of the reference data is 3 Kbytes and the size of the predictive data ECDATA calculated according to Equation 1 is larger than 3 Kbyte, the predictor 26 outputs the buffered data BDi And outputs a second control code instructing to bypass. Conversely, when the size of the predictive data (ECDATA) calculated according to Equation (1) is smaller than 3 Kbytes, the predictor 26 outputs a second control code instructing to compress the buffered data BDi. For example, the size of the reference data may be c (c is a prime number, for example, 0.6) times the size of the input data (DATA).

도 4에 도시된 분석 코드(INF3)는 헤더(HEADER)에 포함된 지시 비트에 따라 발생한 제1제어 코드와, 예측 데이터(ECDATA)의 크기와 기준 데이터의 크기의 비교 결과에 따라 발생한 제2제어 코드를 포함한다.The analysis code INF3 shown in FIG. 4 includes a first control code generated in accordance with the instruction bit included in the header HEADER, a second control generated according to the result of comparison between the size of the predicted data ECDATA and the size of the reference data, Code.

도 1부터 도 4를 참조하여 설명한 바와 같이, 데이터 압축 관리기(40)가 버퍼된 데이터(BDi)를 바이패스하는 경우는 다음과 같다.As described with reference to FIGS. 1 to 4, the case where the data compression manager 40 bypasses the buffered data BDi is as follows.

첫째, 바디(DATA1)에 포함된 데이터가 이미 압축된 경우,First, if the data contained in the body (DATA1) has already been compressed,

둘째, 바디(DATA1)에 포함된 데이터가 압축되지 않은 데이터이고 예측 데이터(ECDATA)의 크기가 기준 데이터의 크기보다 큰 경우,Second, when the data included in the body (DATA1) is uncompressed data and the size of the predicted data (ECDATA) is larger than the size of the reference data,

이때 데이터 압축 관리기(40)는 데이터 패턴 분석기(20C)로부터 출력된 분석 코드(INF3)를 분석하고 분석 결과에 따라 버퍼된 데이터(BDi)를 바이패스한다.At this time, the data compression manager 40 analyzes the analysis code INF3 output from the data pattern analyzer 20C and bypasses the buffered data BDi according to the analysis result.

그러나, 바디(DATA1)에 포함된 데이터가 압축되지 않은 데이터이고 예측 데이터(ECDATA)의 크기가 기준 데이터의 크기보다 작은 경우, 데이터 압축 관리기 (40)는 데이터 패턴 분석기(20C)로부터 출력된 분석 코드(INF3)에 따라 버퍼된 데이터(BDi)를 압축하여 압축 데이터(CDATA)를 출력한다.However, if the data included in the body (DATA1) is uncompressed data and the size of the predictive data (ECDATA) is smaller than the size of the reference data, the data compression manager 40 reads the analysis code And compresses the buffered data BDi according to the input data INF3 to output compressed data CDATA.

상술한 바와 같이, 각각의 입력 데이터(DATA)가 입력 버퍼(30)로 전송되는 동안 데이터 패턴 분석기(20C)는 각각의 입력 데이터(DATA)의 패턴을 분석하고 분석 결과(INF3)를 데이터 압축 관리기(40)로 전송한다. 데이터 압축 관리기(40)는 분석 결과(INF3)에 따라 버퍼된 데이터(BDi)를 바이패스하거나 또는 압축할 수 있다.As described above, while each input data (DATA) is transferred to the input buffer 30, the data pattern analyzer 20C analyzes the pattern of each input data (DATA) and outputs the analysis result INF3 to the data compression manager (40). The data compression manager 40 can bypass or compress the buffered data BDi according to the analysis result INF3.

도 5는 본 발명의 또 다른 실시예에 따른 데이터 압축 장치의 블록도를 나타낸다. 도 5에는 패턴 분석기(27)와 예측기(28)를 포함하는 데이터 패턴 분석기 (20D)가 도시되어 있다.5 shows a block diagram of a data compression apparatus according to another embodiment of the present invention. FIG. 5 shows a data pattern analyzer 20D including a pattern analyzer 27 and a predictor 28. FIG.

즉, 데이터 압축 장치(10D)는 데이터 패턴 분석기(20D), 입력 버퍼(30), 및 데이터 압축 관리기(40)를 포함한다. 실시 예에 따라 데이터 압축 장치(10D)는 출력 버퍼(50)를 더 포함할 수 있다.That is, the data compression apparatus 10D includes a data pattern analyzer 20D, an input buffer 30, and a data compression manager 40. [ The data compression apparatus 10D may further include an output buffer 50 according to an embodiment.

패턴 분석기(27)는 입력 데이터(DATA)에 포함된 복수의 심벌들(AA, BB, CC, DD, EE, FF, ...) 각각의 빈도 수(10, 100, 1000, 2, 5, 50, ...)를 계수하고, 복수의 심벌들(AA, BB, CC, DD, EE, FF, ...) 각각에 코딩 규칙에 따라 코드워드 (1011, 101, 10, 10101, 10001, 110, ...)를 할당하고, 복수의 심벌들(AA, BB, CC, DD, EE, FF, ...) 각각의 빈도 수(10, 100, 1000, 2, 5, 50, ...)와 복수의 심벌들(AA, BB, CC, DD, EE, FF, ...) 각각에 할당된 코드워드(1011, 101, 10, 10101, 10001, 110, ...)를 예측기(28)로 전송한다.The pattern analyzer 27 calculates the number of frequencies (10, 100, 1000, 2, 5, ...) of each of a plurality of symbols (AA, BB, CC, DD, EE, ..., and code words 1011, 101, 10, 10101, 10001, ..., 1011, ..., And the number of frequencies (10, 100, 1000, 2, 5, 50, ...) of each of the plurality of symbols (AA, BB, CC, DD, EE, And code words 1011, 101, 10, 10101, 10001, 110, ... allocated to a plurality of symbols AA, BB, CC, DD, EE, FF, 28).

예측기(28)는 복수의 심벌들(AA, BB, CC, DD, EE, FF, ...) 각각의 빈도 수 (10, 100, 1000, 2, 5, 50, ...)와 복수의 심벌들(AA, BB, CC, DD, EE, FF, ...) 각각에 할당된 코드워드(1011, 101, 10, 10101, 10001, 110, ...)의 비트 수(4, 3, 2, 5, 5, 3, ...)를 이용하여 압축될 데이터의 크기를 수학식 1에 따라 예측하고, 예측 데이터(ECDATA)의 크기와 기준 데이터의 크기를 비교하고, 비교 결과에 상응하는 분석 코드(INF4)를 데이터 압축 관리기(40)로 출력한다.The predictor 28 compares the frequency numbers 10, 100, 1000, 2, 5, 50, ... of the plurality of symbols AA, BB, CC, DD, EE, The number of bits (4, 3, 4) of the codewords (1011, 101, 10, 10101, 10001, 110, ...) allocated to each of the symbols (AA, BB, CC, DD, EE, 2, 5, 5, 3, ...) according to Equation (1), compares the size of the predictive data (ECDATA) with the size of the reference data, And outputs the analysis code INF4 to the data compression manager 40. [

예측 데이터(ECDATA)의 크기가 기준 데이터의 크기보다 작은 경우(예컨대, 압축 효율이 좋은 경우), 데이터 압축 관리기(40)는 데이터 패턴 분석기(20C)로부터 출력된 분석 코드(INF3; 예컨대 0)에 따라 버퍼된 데이터(BDi)를 압축하여 생성된 압축 데이터(CDATA)를 출력한다.When the size of the predictive data ECDATA is smaller than the size of the reference data (for example, when the compression efficiency is good), the data compression manager 40 reads the analysis code INF3 (e.g., 0) output from the data pattern analyzer 20C And outputs the compressed data CDATA generated by compressing the buffered data BDi.

그러나, 예측 데이터(ECDATA)의 크기가 기준 데이터의 크기보다 큰 경우(예컨대, 압축 효율이 좋지 않은 경우), 데이터 압축 관리기(40)는 데이터 패턴 분석기(20C)로부터 출력된 분석 코드(INF3; 예컨대 1)에 따라 버퍼된 데이터(BDi)를 바이패스한다.However, when the size of the predictive data ECDATA is larger than the size of the reference data (for example, when the compression efficiency is poor), the data compression manager 40 reads the analysis code INF3 1). ≪ / RTI >

도 6은 도 1a, 도 2, 도 4, 또는 도 5에 도시된 데이터 압축 장치의 동작을 설명하기 위한 플로우차트이다.FIG. 6 is a flowchart for explaining the operation of the data compression apparatus shown in FIG. 1A, FIG. 2, FIG. 4, or FIG.

도 1a 내지 도 6을 참조하면, 데이터 패턴 분석기(20A, 20B, 20C, 또는 20D)는 입력 데이터(DATA)에 헤더가 포함되어 있는지의 여부를 검색한다(S10).Referring to FIGS. 1A to 6, the data pattern analyzer 20A, 20B, 20C, or 20D searches whether the input data DATA includes a header (S10).

입력 데이터(DATA)에 헤더(HEADER)가 존재할 때(S20), 헤더 분석기(21)는 헤더(HEADER)에 포함된 지시 비트가 바디(DATA1)에 포함된 데이터가 압축 데이터임을 나타내는지의 여부를 판단한다(S30).When a header HEADER exists in the input data DATA, the header analyzer 21 determines whether or not the indication bit included in the header HEADER indicates that the data included in the body DATA1 is compressed data (S30).

S30의 판단 결과, 바디(DATA1)에 포함된 데이터가 압축 데이터일 때 헤더 분석기(21)는 상기 데이터가 압축 데이터임을 지시하는 분석 코드(INF1)를 데이터 압축 관리기(40)로 전송한다. 따라서 데이터 압축 관리기(40)는 분석 코드(INF1)에 따라 버퍼된 데이터(BDi)를 출력 버퍼(50)로 바이패스한다(S32). 따라서 데이터 압축 관리기(40)에 의하여 바이패스된 버퍼된 데이터(BDi)는 출력 버퍼(50)를 통하여 비휘발성 메모리 장치에 저장될 수 있다.As a result of the determination in S30, when the data included in the body (DATA1) is compressed data, the header analyzer 21 transmits an analysis code (INF1) indicating that the data is compressed data to the data compression manager 40. Therefore, the data compression manager 40 bypasses the buffered data BDi to the output buffer 50 according to the analysis code INF1 (S32). The buffered data BDi bypassed by the data compression manager 40 may thus be stored in the nonvolatile memory device via the output buffer 50. [

그러나 S30의 판단 결과, 바디(DATA1)에 포함된 데이터가 압축되지 않은 데이터일 때 헤더 분석기(21)는 상기 데이터가 압축되지 않은 데이터임을 지시하는 분석 코드(INF1)를 데이터 압축 관리기(40)로 전송한다. 따라서 데이터 압축 관리기(40)는, 분석 코드(INF1)에 따라, 버퍼된 데이터(BDi)를 압축하여 생성된 압축 데이터(CDATA)를 출력 버퍼(50)로 출력한다(S34). 따라서 데이터 압축 관리기(40)로부터 출력된 압축 데이터(CDATA)는 출력 버퍼(50)를 통하여 비휘발성 메모리 장치에 저장될 수 있다.However, if it is determined in step S30 that the data included in the body (DATA1) is uncompressed data, the header analyzer 21 transmits an analysis code INF1 indicating that the data is uncompressed data to the data compression manager 40 send. Therefore, the data compression manager 40 outputs the compressed data CDATA generated by compressing the buffered data BDi to the output buffer 50 (S34) according to the analysis code INF1. The compressed data CDATA output from the data compression manager 40 can be stored in the nonvolatile memory device via the output buffer 50. [

입력 데이터(DATA)에 헤더(HEADER)가 존재하지 않을 때(S30), 패턴 분석기 (23)는 도 2와 도 3을 참조하여 설명한 바와 같이 입력 데이터(DATA)의 패턴을 검색한다(S40).When no header exists in the input data DATA in step S30, the pattern analyzer 23 searches for a pattern of the input data DATA as described with reference to FIGS. 2 and 3 (S40).

도 7은 도 1a, 도 2, 도 4, 또는 도 5에 도시된 데이터 압축 장치의 동작을 설명하기 위한 플로우차트이다.FIG. 7 is a flowchart for explaining the operation of the data compression apparatus shown in FIG. 1A, FIG. 2, FIG. 4, or FIG.

도 2에 도시된 패턴 분석기(23)는 입력 데이터(DATA)의 패턴을 분석한다 (S42). 즉, 패턴 분석기(23)는 입력 데이터(DATA)에 포함된 복수의 심벌들 각각의 빈도 수를 계수하고, 계수된 빈도 수들 중에서 최대 빈도 수(또는 최소 빈도 수)와 기준 값을 비교한다(S44).The pattern analyzer 23 shown in FIG. 2 analyzes the pattern of the input data (DATA) (S42). That is, the pattern analyzer 23 counts the frequency of each of the plurality of symbols included in the input data (DATA), and compares the maximum frequency (or minimum frequency) among the frequency counts with the reference value (S44 ).

S44의 비교 결과, 상기 최대 빈도 수(또는 최소 빈도 수)가 상기 기준 값보다 클 때, 패턴 분석기(23)는 버퍼된 데이터(BDi)의 압축을 지시하는 분석 코드 (INF2)를 데이터 압축 관리기(40)로 전송한다. 따라서, 데이터 압축 관리기(40)는 버퍼된 데이터(BDi)를 압축하고(S46), 압축 데이터(CDATA)를 출력 버퍼(50)로 전송한다. 출력 버퍼(50)에 저장된 압축 데이터(CDATA)는 비휘발성 메모리 장치에 저장된다.When the maximum frequency number (or the minimum frequency number) is larger than the reference value as a result of the comparison in S44, the pattern analyzer 23 transmits the analysis code INF2 for instructing the compression of the buffered data BDi to the data compression manager 40). Therefore, the data compression manager 40 compresses the buffered data BDi (S46) and transfers the compressed data CDATA to the output buffer 50. [ The compressed data (CDATA) stored in the output buffer 50 is stored in the nonvolatile memory device.

S44의 비교 결과, 상기 최대 빈도 수(또는 최소 빈도 수)가 상기 기준 값보다 작을 때, 패턴 분석기(23)는 버퍼된 데이터(BDi)의 바이패스를 지시하는 분석 코드(INF2)를 데이터 압축 관리기(40)로 전송한다. 따라서, 데이터 압축 관리기 (40)는 버퍼된 데이터(BDi)를 출력 버퍼(50)로 바이패스한다(S48).If the maximum frequency number (or the minimum frequency number) is smaller than the reference value as a result of the comparison in S44, the pattern analyzer 23 transmits the analysis code INF2, which indicates bypass of the buffered data BDi, (40). Accordingly, the data compression manager 40 bypasses the buffered data BDi to the output buffer 50 (S48).

도 8은 도 1a, 도 2, 도 4, 또는 도 5에 도시된 데이터 압축 장치의 동작을 설명하기 위한 플로우차트이다.FIG. 8 is a flowchart for explaining the operation of the data compression apparatus shown in FIG. 1A, FIG. 2, FIG. 4, or FIG.

도 5에 도시된 패턴 분석기(27)는 입력 데이터(DATA)의 패턴을 분석한다 (S42). 즉 패턴 분석기(27)는 입력 데이터(DATA)에 포함된 복수의 심벌들 각각의 빈도 수를 계수하고, 코딩 규칙에 따라 상기 복수의 심벌들 각각에 코드워드를 할당하고, 상기 복수의 심벌들 각각의 빈도 수와 상기 복수의 심벌들 각각에 할당된 코드워드를 예측기(28)로 출력한다.The pattern analyzer 27 shown in FIG. 5 analyzes the pattern of the input data (DATA) (S42). That is, the pattern analyzer 27 counts the frequency of each of a plurality of symbols included in the input data DATA, assigns a code word to each of the plurality of symbols according to a coding rule, And a code word assigned to each of the plurality of symbols to the predictor 28. [

예측기(28)는 패턴 분석기(27)로부터 출력된 상기 복수의 심벌들 각각의 빈도 수와 상기 복수의 심벌들 각각에 할당된 코드워드의 비트 수를 이용하여 수학식 1에 따라 예측 데이터(ECDATA)의 크기를 계산한다(S80).The predictor 28 calculates predictive data ECDATA according to Equation 1 using the frequency of each of the plurality of symbols output from the pattern analyzer 27 and the number of bits of the code word allocated to each of the plurality of symbols, (S80).

예측기(28)는 예측 데이터의 크기와 기준 데이터의 크기를 비교하고(S82), 상기 예측 데이터의 크기와 상기 기준 데이터의 크기보다 클 때, 예측기(28)는 버퍼된 데이터(BDi)의 바이패스를 지시하는 분석 코드(INF4)를 데이터 압축 관리기 (40)로 전송한다. 따라서, 데이터 압축 관리기(40)는 버퍼된 데이터(BDi)를 출력 버퍼(50)로 바이패스한다(S84). 그 후 출력 버퍼(50)에 저장된 버퍼된 데이터(BDi)는 비휘발성 메모리 장치에 저장된다(S88).The predictor 28 compares the size of the prediction data with the size of the reference data S82 and when the size of the prediction data is larger than the size of the reference data, To the data compression manager 40. The data compression manager 40 decodes the analysis code INF4. Thus, the data compression manager 40 bypasses the buffered data BDi to the output buffer 50 (S84). The buffered data BDi stored in the output buffer 50 is then stored in the nonvolatile memory device (S88).

상기 예측 데이터의 크기와 상기 기준 데이터의 크기보다 작을 때, 예측기 (28)는 버퍼된 데이터(BDi)의 압축을 지시하는 분석 코드(INF4)를 데이터 압축 관리기(40)로 전송한다. 따라서, 데이터 압축 관리기(40)는 버퍼된 데이터(BDi)를 압축하고(S86), 압축 데이터(CDATA)를 출력 버퍼(50)로 전송한다. 출력 버퍼(50)에 저장된 압축 데이터(CDATA)는 비휘발성 메모리 장치에 저장된다(S88).The predictor 28 transmits an analysis code INF4 instructing the compression of the buffered data BDi to the data compression manager 40 when the predicted data size is smaller than the size of the reference data. Therefore, the data compression manager 40 compresses the buffered data BDi (S86) and transfers the compressed data CDATA to the output buffer 50. [ The compressed data CDATA stored in the output buffer 50 is stored in the nonvolatile memory device (S88).

패턴 분석기(27)는 입력 데이터(DATA)에 포함된 복수의 심벌들 각각의 빈도 수를 카운트하고 코딩 규칙에 따라 상기 복수의 심벌들 각각에 코드워드를 할당한다.The pattern analyzer 27 counts the frequency of each of a plurality of symbols included in the input data DATA and assigns a code word to each of the plurality of symbols according to a coding rule.

상기 코딩 규칙은 호프만 코딩 규칙(Huffman coding rule), LZW 코딩 규칙 (Lempel Zip Welch rule), 산술 코딩 규칙(Arithmetic coding rule), 또는 RLE(Run Length Encoding)일 수 있다. 또한, 상기 호프만 코딩 규칙은 정적 호프만 코딩 규칙과 동적 호프만 코딩 규칙을 포함한다.The coding rule may be a Huffman coding rule, a Lempel Zip Welch rule, an arithmetic coding rule, or an RLE (Run Length Encoding). In addition, the Hoffman coding rule includes a static Hoffman coding rule and a dynamic Hoffman coding rule.

도 9는 정적 호프만 코딩 규칙을 이용하는 도 5에 도시된 패턴 분석기의 동작을 설명하기 위한 플로우차트이다.Fig. 9 is a flowchart for explaining the operation of the pattern analyzer shown in Fig. 5 using the static Hoffman coding rule.

도 5와 도 9를 참조하면, 패턴 분석기(27)는 입력 데이터(DATA)의 패턴을 검색한다(S40). 즉 패턴 분석기(27)는 입력 데이터(DATA)에 포함된 심벌이 발견될 때마다(S61), 해당 심벌의 빈도 수를 +1증가시킨다(S62).Referring to FIGS. 5 and 9, the pattern analyzer 27 searches for a pattern of input data (DATA) (S40). That is, the pattern analyzer 27 increments the frequency of the symbol by +1 (S62) every time a symbol included in the input data (DATA) is found (S61).

패턴 분석기(27)는 입력 데이터(DATA) 모두에 대하여 심벌 단위로 S40, S61, 및 S62를 수행한다(S63). 패턴 분석기(27)는 입력 데이터(DATA)에 포함된 복수의 심벌들 각각의 빈도 수를 계수하고 코딩 규칙(예컨대, 정적 호프만 코딩 규칙)에 따라 상기 복수의 심벌들 각각에 코드워드를 할당한다(S64).The pattern analyzer 27 performs S40, S61, and S62 on a symbol unit basis for all the input data (DATA) (S63). The pattern analyzer 27 counts the frequency of each of a plurality of symbols included in the input data DATA and assigns a code word to each of the plurality of symbols according to a coding rule (e.g., a static Hoffman coding rule) S64).

도 10은 동적 호프만 코딩 규칙을 이용하는 도 5에 도시된 패턴 분석기의 동작을 설명하기 위한 플로우차트이다.FIG. 10 is a flowchart for explaining the operation of the pattern analyzer shown in FIG. 5 using the dynamic Hoffman coding rule.

도 5와 도 10을 참조하면, 패턴 분석기(27)는 입력 데이터(DATA)의 패턴을 검색한다(S40). 즉 패턴 분석기(27)는 입력 데이터(DATA)에 포함된 심벌이 발견되면(S66), 상기 심벌이 새로운 심벌인지의 여부를 판단하고(67), 상기 심벌이 새로운 심벌이면 상기 심벌을 심벌 리스트에 추가하고(S68), 해당 심벌의 빈도 수를 +1증가시킨다(S69). 그러나 발견된 심벌이 새로운 심벌이 아닐 때(S67), 해당 심벌의 빈도 수를 +1증가시킨다(S69).Referring to FIGS. 5 and 10, the pattern analyzer 27 retrieves a pattern of input data (S40). That is, if a symbol included in the input data DATA is found (S66), the pattern analyzer 27 determines whether or not the symbol is a new symbol (67). If the symbol is a new symbol, (S68), and increases the frequency of the symbol by +1 (S69). However, when the found symbol is not a new symbol (S67), the frequency of the corresponding symbol is increased by +1 (S69).

패턴 분석기(27)는 입력 데이터(DATA) 모두에 대하여 심벌 단위로 S66~69를 수행한다(S70). 패턴 분석기(27)는 입력 데이터(DATA)에 포함된 복수의 심벌들 각각의 빈도 수를 계수하고 코딩 규칙(예컨대, 동적 호프만 코딩 규칙)에 따라 상기 복수의 심벌들 각각에 코드워드를 할당한다(S71).The pattern analyzer 27 performs S66 to S69 on a symbol unit basis for all the input data (DATA) (S70). The pattern analyzer 27 counts the frequency of each of a plurality of symbols included in the input data DATA and assigns a code word to each of the plurality of symbols in accordance with a coding rule (e.g., a dynamic Hoffman coding rule) S71).

도 11은 도 1a, 도 2, 도 4, 또는 도 5에 도시된 데이터 압축 장치를 포함하는 데이터 처리 시스템의 일 실시예를 나타낸다.FIG. 11 shows an embodiment of a data processing system including the data compression apparatus shown in FIGS. 1A, 2, 4, or 5.

데이터 처리 시스템(100)은 SSD(solid state drive)로 구현될 수 있다. 또한, 데이터 처리 시스템(100)은 데이터 패턴 분석기(20A부터 20D를 총괄적으로 '20'으로 나타냄)와 데이터 압축 관리기(40)를 포함하는 모든 데이터 처리 장치를 포함한다.The data processing system 100 may be implemented as a solid state drive (SSD). The data processing system 100 also includes all data processing devices including a data pattern analyzer 20A to 20D (collectively referred to as '20') and a data compression manager 40.

데이터 처리 시스템(100)은 메모리 컨트롤러(90)와 복수의 플래시 메모리 장치들(141)을 포함한다. 메모리 컨트롤러(90)는 데이터 패턴 분석기(20)를 포함하는 호스트 인터페이스(101), 데이터 압축 관리기(40), 메인 프로세서(110), 휘발성 메모리(120), 및 플래시 관리 컨트롤러(Flash Management Controller(FMC); 140)를 포함한다. 각 구성 요소(40, 101, 110, 120, 및 140)는 데이터 버스(100-1)를 통하여 서로 데이터 통신을 수행할 수 있다.The data processing system 100 includes a memory controller 90 and a plurality of flash memory devices 141. The memory controller 90 includes a host interface 101 including a data pattern analyzer 20, a data compression manager 40, a main processor 110, a volatile memory 120, and a flash management controller ) ≪ / RTI > Each of the components 40, 101, 110, 120, and 140 may perform data communication with each other via the data bus 100-1.

호스트 인터페이스(101)는 호스트와 메모리 컨트롤러(90)에서 데이터 통신을 위한 인터페이스 기능을 수행한다.The host interface 101 performs an interface function for data communication in the host and the memory controller 90.

도 11에 도시된 DRAM(dynamic random access memory)으로 구현된 휘발성 메모리(120)는 도 1a, 도 2, 도 4, 또는 도 5에 도시된 입력 버퍼(30)와 출력 버퍼(50)의 기능을 함께 수행할 수 있다.The volatile memory 120 implemented with the dynamic random access memory (DRAM) shown in FIG. 11 has the functions of the input buffer 30 and the output buffer 50 shown in FIG. 1A, FIG. 2, FIG. 4, You can do it together.

호스트로부터 출력된 입력 데이터(DATA)가 제1데이터 경로(PATH1)를 통하여 휘발성 메모리(120)로 전송되는 도중에, 데이터 패턴 분석기(20)는 입력 데이터 (DATA)를 가로채서 입력 데이터(DATA)의 패턴을 분석한다. 입력 데이터(DATA)의 패턴을 분석하는 각 방법은 도 1부터 도 10을 참조하여 설명한 바와 같다.The data pattern analyzer 20 intercepts the input data DATA and outputs the input data DATA to the volatile memory 120 while the input data DATA output from the host is transferred to the volatile memory 120 via the first data path PATH1. Analyze the pattern. The respective methods of analyzing the pattern of the input data (DATA) are as described with reference to FIGS. 1 to 10.

데이터 패턴 분석기(20)는 분석 결과에 따른 분석코드(INF1, INF2, INF3, 또는 INF4)를 데이터 압축 관리기(40)로 전송한다.The data pattern analyzer 20 transmits the analysis codes INF1, INF2, INF3, or INF4 according to the analysis result to the data compression manager 40. [

데이터 압축 관리기(40)는 바이패스를 지시하는 분석코드(INF1, INF2, INF3, 또는 INF4)에 따라 제2데이터 경로(PATH2)를 통하여 휘발성 메모리(120)의 입력 버퍼로부터 리드된 버퍼된 데이터(BDi)를 바이패스하여 휘발성 메모리(120)의 출력 버퍼에 저장한다.The data compression manager 40 reads the buffered data read from the input buffer of the volatile memory 120 via the second data path PATH2 in accordance with the analysis code INF1, INF2, INF3 or INF4 indicating the bypass BDi) to the output buffer of the volatile memory (120).

그러나, 데이터 압축 관리기(40)는 압축을 지시하는 분석코드(INF1, INF2, INF3, 또는 INF4)에 따라 제2데이터 경로(PATH2)를 통하여 휘발성 메모리(120)의 입력 버퍼로부터 리드된 버퍼된 데이터(BDi)를 압축하여 압축 데이터를 휘발성 메모리(120)의 출력 버퍼에 저장한다.However, the data compression manager 40 does not store the buffered data read from the input buffer of the volatile memory 120 via the second data path PATH2 according to the analysis codes INF1, INF2, INF3, (BDi) and stores the compressed data in the output buffer of the volatile memory (120).

휘발성 메모리(120)의 출력 버퍼에 저장된 데이터, 즉 바이패스된 입력 데이터(DATA) 또는 압축 데이터(CDATA)는 제3데이터 경로(PATH3)를 통하여 FMC(140)로 전송되고, FMC(140)로 전송된 바이패스된 입력 데이터(DATA) 또는 압축 데이터 (CDATA)는 FMC(140)의 제어에 따라 복수의 플래시 메모리 장치들(141) 중에서 적어도 하나의 플래시 메모리 장치로 전송된다.The data stored in the output buffer of the volatile memory 120, that is, the bypassed input data DATA or the compressed data CDATA is transferred to the FMC 140 via the third data path PATH3, The transferred bypassed input data (DATA) or compressed data (CDATA) is transferred to at least one of the plurality of flash memory devices 141 under the control of the FMC 140.

도 12는 도 1a, 도 2, 도 4, 또는 도 5에 도시된 데이터 압축 장치를 포함하는 데이터 처리 시스템의 다른 실시예를 나타낸다.Fig. 12 shows another embodiment of a data processing system including the data compression apparatus shown in Figs. 1A, 2, 4, or 5.

도 12를 참조하면, 스마트 카드(smart card) 또는 메모리 카드(memory card)로 구현될 수 있는 데이터 처리 시스템(200)은 카드 인터페이스(210), 메모리 컨트롤러(220), 및 비휘발성 메모리 장치(230)를 포함한다.12, a data processing system 200, which may be implemented as a smart card or a memory card, includes a card interface 210, a memory controller 220, and a non-volatile memory device 230 ).

메모리 컨트롤러(220)는 데이터 압축 장치(10A, 10B, 10C, 또는 10D; 총괄적으로 10으로 표시한다)를 포함한다. 실시 예에 따라 데이터 압축 장치(10)는 메모리 컨트롤러(220)의 외부에 구현될 수도 있다.The memory controller 220 includes a data compression device 10A, 10B, 10C, or 10D (collectively indicated by 10). The data compression apparatus 10 may be implemented outside the memory controller 220 according to an embodiment.

카드 인터페이스(210)는 메모리 컨트롤러(220)와 호스트 사이에서 주고받는 데이터의 교환을 제어하고, 메모리 컨트롤러(220)는 비휘발성 메모리 장치(230)의 동작, 예컨대 프로그램(program) 동작, 리드(read) 동작, 또는 이레이즈(erase) 동작을 제어한다.The card interface 210 controls exchange of data exchanged between the memory controller 220 and the host and the memory controller 220 controls the operation of the nonvolatile memory device 230 such as program operation, ) Operation, or an erase operation.

데이터 압축 장치(10)는 호스트로부터 출력되고 카드 인터페이스(210)를 통하여 입력된 데이터(DATA)가 입력 버퍼(30)로 전송되는 도중에 데이터(DATA)의 패턴을 분석하고 분석 결과에 따라 입력 버퍼(30)에 의하여 버퍼된 데이터(BDi)를 비휘발성 메모리 장치(230)로 바이패스하거나 또는 버퍼된 데이터(BDi)를 압축하여 압축 데이터(CDATA)를 비휘발성 메모리 장치(230)로 전송한다.The data compression apparatus 10 analyzes the pattern of the data DATA during transmission of the data DATA output from the host and input through the card interface 210 to the input buffer 30, Volatile memory device 230 by transferring the buffered data BDi to the nonvolatile memory device 230 or compressing the buffered data BDi to transfer the compressed data CDATA to the nonvolatile memory device 230. [

본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is to be understood that the invention is not limited to the disclosed embodiments, but, on the contrary, is intended to cover various modifications and equivalent arrangements included within the spirit and scope of the appended claims. Accordingly, the true scope of the present invention should be determined by the technical idea of the appended claims.

10A, 10B, 10C, 및 10D: 데이터 압축 장치
20A, 20B, 20C, 및 20D: 데이터 패턴 분석기
30: 입력 버퍼
40: 데이터 압축 관리기
41: 메모리
43: 프로세서
45: 선택기
101: 호스트 장치]
110: 메인 프로세서
120: DRAM
140: 플래시 관리 컨트롤러
210: 카드 인터페이스
220: 메모리 컨트롤러
230: 메모리 장치
10A, 10B, 10C, and 10D: Data compression device
20A, 20B, 20C, and 20D: a data pattern analyzer
30: Input buffer
40: Data compression manager
41: Memory
43: Processor
45: selector
101: host device]
110: main processor
120: DRAM
140: Flash management controller
210: Card interface
220: Memory controller
230: memory device

Claims (19)

데이터 패턴 분석기와 데이터 압축 관리기를 포함하는 데이터 압축 장치의 동작 방법에 있어서,
상기 데이터 패턴 분석기가 입력 버퍼로 전송되는 입력 데이터를 수신하는 단계;
상기 입력 버퍼를 이용하여 상기 입력 데이터를 버퍼링하는 동안, 상기 데이터 패턴 분석기가 상기 입력 데이터의 패턴을 분석하고, 상기 입력 버퍼에 의해 버퍼링된 데이터를 압축할지 여부를 결정하기 위한 분석 결과를 출력하는 단계; 및
상기 데이터 압축 관리기가 상기 분석 결과에 기초하여, 상기 버퍼링된 데이터를 바이패스하거나 또는 상기 버퍼링된 데이터를 압축하는 단계를 포함하는 데이터 압축 장치의 동작 방법.
1. A method of operating a data compression apparatus comprising a data pattern analyzer and a data compression manager,
The data pattern analyzer receiving input data transmitted to an input buffer;
Analyzing the pattern of the input data while the data pattern analyzer is buffering the input data using the input buffer and outputting an analysis result for determining whether to compress the buffered data by the input buffer ; And
And the data compression manager bypasses the buffered data or compresses the buffered data based on the analysis result.
제1항에 있어서, 상기 분석 결과를 출력하는 단계는,
상기 입력 데이터의 헤더에 포함되며, 상기 입력 데이터의 압축 여부를 지시하는 지시 비트를 분석하여 상기 분석 결과를 출력하는 데이터 압축 장치의 동작 방법.
The method of claim 1, wherein the outputting of the analysis result comprises:
And analyzing an instruction bit included in the header of the input data and indicating whether the input data is compressed, and outputting the analysis result.
제1항에 있어서, 상기 분석 결과를 출력하는 단계는,
상기 입력 데이터에 포함된 복수의 심벌들 각각의 빈도 수를 계수하는 단계; 및
최대 빈도 수와 최소 빈도 수 중에서 어느 하나와 기준 값의 비교 결과를 상기 분석 결과로서 출력하는 단계를 포함하는 데이터 압축 장치의 동작 방법.
The method of claim 1, wherein the outputting of the analysis result comprises:
Counting a frequency of each of a plurality of symbols included in the input data; And
And outputting a result of the comparison between any one of the maximum frequency and the minimum frequency and the reference value as the analysis result.
제1항에 있어서, 상기 분석 결과를 출력하는 단계는,
상기 입력 데이터에 포함된 복수의 심벌들 각각의 빈도 수를 계수하고 상기 복수의 심벌들 각각에 코드워드를 할당하는 단계;
상기 복수의 심벌들 각각의 빈도 수와 상기 복수의 심벌들 각각에 할당된 코드워드의 비트 수를 이용하여 예측 데이터의 크기를 계산하는 단계; 및
상기 예측 데이터의 크기와 기준 데이터의 크기의 비교 결과를 상기 분석 결과로서 출력하는 데이터 압축 장치의 동작 방법.
The method of claim 1, wherein the outputting of the analysis result comprises:
Counting a frequency of each of a plurality of symbols included in the input data and assigning a code word to each of the plurality of symbols;
Calculating a size of predictive data using the frequency of each of the plurality of symbols and the number of bits of the code word allocated to each of the plurality of symbols; And
And outputting a result of the comparison between the size of the prediction data and the size of the reference data as the analysis result.
제1항에 있어서, 상기 분석 결과를 출력하는 단계는,
상기 입력 데이터의 헤더에 포함되며, 상기 입력 데이터의 압축 여부를 지시하는 지시 비트를 분석하는 단계;
상기 지시 비트의 분석 결과에 따라, 상기 입력 데이터에 포함된 복수의 심벌들 각각의 빈도 수를 계수하는 단계; 및
최대 빈도 수와 최소 빈도 수 중에서 어느 하나와 기준 값의 비교 결과를 상기 분석 결과로서 출력하는 단계를 포함하는 데이터 압축 장치의 동작 방법.
The method of claim 1, wherein the outputting of the analysis result comprises:
Analyzing an indication bit included in a header of the input data and indicating whether the input data is compressed;
Counting the frequency of each of the plurality of symbols included in the input data according to the analysis result of the indication bit; And
And outputting a result of the comparison between any one of the maximum frequency and the minimum frequency and the reference value as the analysis result.
제1항에 있어서, 상기 버퍼링된 데이터를 바이패스하거나 또는 압축하는 단계는,
상기 분석 결과를 메모리에 저장하는 단계; 및
상기 메모리에 저장된 상기 분석 결과에 따라 상기 버퍼링된 데이터를 바이패스하거나 또는 프로세서를 이용하여 상기 버퍼링된 데이터를 압축하는 단계를 포함하는 데이터 압축 장치의 동작 방법.
2. The method of claim 1, wherein bypassing or compressing the buffered data comprises:
Storing the analysis result in a memory; And
And buffering the buffered data according to the analysis result stored in the memory or compressing the buffered data using a processor.
삭제delete 입력 버퍼;
상기 입력 버퍼로 전송되는 입력 데이터를 수신하고, 상기 입력 데이터의 패턴을 분석하고, 상기 입력 버퍼에 의해 버퍼링된 데이터를 압축할지 여부를 결정하기 위한 분석 코드를 출력하기 위한 데이터 패턴 분석기; 및
상기 분석 코드에 기초하여, 상기 버퍼링된 데이터를 비휘발성 메모리 장치로 바이패스하거나 또는 상기 버퍼링된 데이터를 압축하여 생성된 압축 데이터를 상기 비휘발성 메모리 장치로 전송하는 데이터 압축 관리기를 포함하는 데이터 압축 장치.
An input buffer;
A data pattern analyzer for receiving input data transmitted to the input buffer, analyzing a pattern of the input data, and outputting an analysis code for determining whether to compress data buffered by the input buffer; And
And a data compression manager for bypassing the buffered data to the nonvolatile memory device or transmitting the compressed data generated by compressing the buffered data to the nonvolatile memory device based on the analysis code, .
제8항에 있어서, 상기 데이터 패턴 분석기는,
상기 입력 데이터의 헤더에 포함되며, 상기 입력 데이터의 압축 여부를 나타내는 지시 비트를 분석하여 상기 분석 코드를 출력하는 데이터 압축 장치.
9. The apparatus of claim 8, wherein the data pattern analyzer comprises:
And outputs the analysis code by analyzing an instruction bit included in a header of the input data and indicating whether the input data is compressed.
제8항에 있어서, 상기 데이터 패턴 분석기는,
상기 입력 데이터에 포함된 복수의 심벌들 각각의 빈도 수를 계수하고, 최대 빈도 수와 최소 빈도 수 중에서 어느 하나와 기준 값의 비교 결과를 상기 분석 코드로서 출력하는 데이터 압축 장치.
9. The apparatus of claim 8, wherein the data pattern analyzer comprises:
Wherein the number of frequencies of each of the plurality of symbols included in the input data is counted and the comparison result of any one of the maximum frequency and the minimum frequency is compared with the reference value as the analysis code.
제8항에 있어서, 상기 데이터 패턴 분석기는,
상기 입력 데이터에 포함된 복수의 심벌들 각각의 빈도 수를 계수하고, 상기 복수의 심벌들 각각에 코드워드를 할당하고, 상기 복수의 심벌들 각각의 빈도 수와 상기 복수의 심벌들 각각에 할당된 코드워드의 비트 수를 이용하여 예측된 데이터의 크기와 기준 데이터의 크기의 비교 결과를 상기 분석 코드로서 출력하는 데이터 압축 장치.
9. The apparatus of claim 8, wherein the data pattern analyzer comprises:
A frequency of each of a plurality of symbols included in the input data is counted, a code word is allocated to each of the plurality of symbols, and a frequency of each of the plurality of symbols and a frequency allocated to each of the plurality of symbols And outputs the comparison result of the size of the predicted data and the size of the reference data as the analysis code using the number of bits of the code word.
제8항에 있어서, 상기 데이터 패턴 분석기는,
상기 입력 데이터의 헤더에 포함된 상기 입력 데이터의 압축 여부를 나타내는 지시 비트에 따라 제어 신호를 출력하는 헤더 분석기; 및
활성화된 상기 제어 신호에 따라 인에이블되고, 상기 입력 데이터에 포함된 복수의 심벌들 각각의 빈도 수를 계수하고 상기 복수의 심벌들 각각에 코드워드를 할당하고, 상기 복수의 심벌들 각각의 빈도 수와 상기 복수의 심벌들 각각에 할당된 코드워드의 비트 수를 이용하여 예측된 데이터의 크기와 기준 데이터의 크기의 비교 결과를 상기 분석 코드로서 출력하는 예측기를 포함하는 데이터 압축 장치.
9. The apparatus of claim 8, wherein the data pattern analyzer comprises:
A header analyzer for outputting a control signal according to an indication bit indicating whether or not the input data included in the header of the input data is compressed; And
Wherein the control unit is enabled in response to the activated control signal, counts the frequency of each of a plurality of symbols included in the input data, assigns a code word to each of the plurality of symbols, And a predictor for outputting the comparison result of the size of the predicted data and the size of the reference data as the analysis code using the number of bits of the code word allocated to each of the plurality of symbols.
제8항에 있어서, 상기 데이터 패턴 분석기는,
상기 입력 데이터에 포함된 복수의 심벌들 각각의 빈도 수를 계수하고 상기 복수의 심벌들 각각에 코드워드를 할당하는 패턴 분석기; 및
상기 패턴 분석기로부터 출력된 상기 복수의 심벌들 각각의 빈도 수와 상기 복수의 심벌들 각각에 할당된 코드워드를 수신하고, 상기 복수의 심벌들 각각의 빈도 수와 상기 복수의 심벌들 각각에 할당된 코드워드의 비트 수를 이용하여 예측된 데이터의 크기와 기준 데이터의 크기의 비교 결과를 상기 분석 코드로서 출력하는 예측기를 포함하는 데이터 압축 장치.
9. The apparatus of claim 8, wherein the data pattern analyzer comprises:
A pattern analyzer for counting the frequency of each of a plurality of symbols included in the input data and assigning a code word to each of the plurality of symbols; And
A pattern analyzer for receiving a frequency number of each of the plurality of symbols and a code word allocated to each of the plurality of symbols, and for calculating a frequency of each of the plurality of symbols, And a predictor for outputting a result of the comparison between the size of the predicted data and the size of the reference data using the number of bits of the code word as the analysis code.
제8항에 있어서, 상기 데이터 압축 관리기는,
상기 분석 코드를 저장하기 위한 메모리;
상기 버퍼링된 데이터를 압축하여 상기 압축 데이터를 출력하는 프로세서; 및
상기 메모리에 저장된 상기 분석 코드에 따라, 상기 버퍼링된 데이터를 상기 비휘발성 메모리 장치로 바이패스하거나 또는 상기 프로세서로 전송하기 위한 선택기를 포함하는 데이터 압축 장치.
9. The data compression method according to claim 8,
A memory for storing the analysis code;
A processor for compressing the buffered data and outputting the compressed data; And
And a selector for bypassing or transferring the buffered data to the non-volatile memory device according to the analysis code stored in the memory.
비휘발성 메모리 장치;
바이패스된 입력 데이터 또는 압축 데이터를 상기 비휘발성 메모리 장치로 전송하는 데이터 압축 장치를 포함하며,
상기 데이터 압축 장치는,
입력 버퍼;
상기 입력 버퍼로 전송되는 입력 데이터를 수신하고, 상기 입력 데이터가 상기 입력 버퍼로 전송되는 동안, 상기 입력 데이터의 패턴을 분석하고, 상기 입력 버퍼에 의해 버퍼링된 데이터를 압축할지 여부를 결정하기 위한 분석 코드를 출력하기 위한 데이터 패턴 분석기; 및
상기 분석 코드에 기초하여, 상기 버퍼링된 데이터를 상기 바이패스된 입력 데이터로서 출력하거나 또는 상기 버퍼링된 데이터를 압축하여 상기 압축 데이터를 출력하는 데이터 압축 관리기를 포함하는 데이터 처리 장치.
A nonvolatile memory device;
And a data compression device for transferring the bypassed input data or compressed data to the nonvolatile memory device,
Wherein the data compression device comprises:
An input buffer;
An analysis for analyzing a pattern of the input data while the input data is being transmitted to the input buffer and for determining whether to compress the data buffered by the input buffer, A data pattern analyzer for outputting a code; And
And a data compression manager for outputting the buffered data as the bypassed input data or compressing the buffered data and outputting the compressed data based on the analysis code.
제15항에 있어서, 상기 데이터 패턴 분석기는,
상기 입력 데이터의 헤더에 포함되며, 상기 입력 데이터의 압축 여부를 나타내는 지시 비트를 분석하여 상기 분석 코드를 출력하는 데이터 처리 장치.
16. The apparatus of claim 15, wherein the data pattern analyzer comprises:
And outputs the analysis code by analyzing an indication bit included in a header of the input data and indicating whether or not the input data is compressed.
제15항에 있어서, 상기 데이터 패턴 분석기는,
상기 입력 데이터에 포함된 복수의 심벌들 각각의 빈도 수를 계수하고, 최대 빈도 수와 최소 빈도 수 중에서 어느 하나와 기준 값의 비교 결과를 상기 분석 코드로서 출력하는 데이터 처리 장치.
16. The apparatus of claim 15, wherein the data pattern analyzer comprises:
Wherein the number of frequencies of each of the plurality of symbols included in the input data is counted and the comparison result of any one of the maximum frequency and the minimum frequency is compared with the reference value as the analysis code.
제15항에 있어서, 상기 데이터 패턴 분석기는,
상기 입력 데이터에 포함된 복수의 심벌들 각각의 빈도 수를 계수하고, 상기 복수의 심벌들 각각에 코드워드를 할당하고, 상기 복수의 심벌들 각각의 빈도 수와 상기 복수의 심벌들 각각에 할당된 코드워드의 비트 수를 이용하여 예측된 데이터의 크기와 기준 데이터의 크기의 비교 결과를 상기 분석 코드로서 출력하는 데이터 처리 장치.
16. The apparatus of claim 15, wherein the data pattern analyzer comprises:
A frequency of each of a plurality of symbols included in the input data is counted, a code word is allocated to each of the plurality of symbols, and a frequency of each of the plurality of symbols and a frequency allocated to each of the plurality of symbols And outputs the result of comparison between the size of the predicted data and the size of the reference data using the number of bits of the code word as the analysis code.
제15항에 있어서, 상기 데이터 압축 관리기는,
상기 분석 코드를 저장하기 위한 메모리;
상기 버퍼링된 데이터를 압축하여 상기 압축 데이터를 출력하는 프로세서; 및
상기 메모리에 저장된 상기 분석 코드에 따라, 상기 입력 버퍼로부터 출력된 상기 입력 데이터를 상기 바이패스된 입력 데이터로서 출력하거나 또는 상기 프로세서로 전송하기 위한 선택기를 포함하는 데이터 처리 장치.
16. The data compression apparatus of claim 15,
A memory for storing the analysis code;
A processor for compressing the buffered data and outputting the compressed data; And
And a selector for outputting the input data output from the input buffer as the bypassed input data or transmitting the input data to the processor according to the analysis code stored in the memory.
KR1020170054930A 2017-04-28 2017-04-28 Data compression device, operation method using the same, and data processing apparatus having the same KR101818440B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170054930A KR101818440B1 (en) 2017-04-28 2017-04-28 Data compression device, operation method using the same, and data processing apparatus having the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170054930A KR101818440B1 (en) 2017-04-28 2017-04-28 Data compression device, operation method using the same, and data processing apparatus having the same

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR20110005575A Division KR20120084180A (en) 2011-01-19 2011-01-19 Data compression device, operation method using the same, and data processing apparatus having the same

Publications (2)

Publication Number Publication Date
KR20170051401A KR20170051401A (en) 2017-05-11
KR101818440B1 true KR101818440B1 (en) 2018-03-02

Family

ID=58742050

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170054930A KR101818440B1 (en) 2017-04-28 2017-04-28 Data compression device, operation method using the same, and data processing apparatus having the same

Country Status (1)

Country Link
KR (1) KR101818440B1 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010098744A (en) * 2008-10-20 2010-04-30 Toshiba Corp Image processing apparatus and image processing method

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010098744A (en) * 2008-10-20 2010-04-30 Toshiba Corp Image processing apparatus and image processing method

Also Published As

Publication number Publication date
KR20170051401A (en) 2017-05-11

Similar Documents

Publication Publication Date Title
JP5881416B2 (en) Data compression apparatus and data processing apparatus including data compression apparatus
CN107925418B (en) Method, apparatus and system for hybrid data compression and decompression
EP1832000B1 (en) Device and data method for selective compression and decompression and data format for compressed data
US8144037B2 (en) Blocking for combinatorial coding/decoding for electrical computers and digital data processing systems
KR20080023191A (en) Device and method for accessing binary data in fusion memory
US8125364B2 (en) Data compression/decompression method
US20090016453A1 (en) Combinatorial coding/decoding for electrical computers and digital data processing systems
CN112514264A (en) Data compression method, data decompression method, related device, electronic equipment and system
US10891082B2 (en) Methods for accelerating compression and apparatuses using the same
US10817460B2 (en) RDMA data sending and receiving methods, electronic device, and readable storage medium
EP3195481B1 (en) Adaptive rate compression hash processing device
CN115115720A (en) Image decoding and encoding method, device and equipment
US11960986B2 (en) Neural network accelerator and operating method thereof
CN107251438B (en) Data compression apparatus and method, data decompression apparatus and method, and recording medium
US10565182B2 (en) Hardware LZMA compressor
US10103747B1 (en) Lossless binary compression in a memory constrained environment
KR101818440B1 (en) Data compression device, operation method using the same, and data processing apparatus having the same
US8452902B2 (en) Methods for transmitting buffer size information
AU2016201253A1 (en) Information processing apparatus, and data management method
KR20180067956A (en) Apparatus and method for data compression
US11275505B2 (en) Storage system
GB2321375A (en) Data encoding and decoding
CN110247666B (en) System and method for hardware parallel compression
US20220322136A1 (en) Compatible packet separation for communication networks
JP5826390B2 (en) Transfer method and graph processing system

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant