KR100300789B1 - 적응형 데이터 압축기의 데이터 압축 효율을 개선하는 방법및 장치 - Google Patents

적응형 데이터 압축기의 데이터 압축 효율을 개선하는 방법및 장치 Download PDF

Info

Publication number
KR100300789B1
KR100300789B1 KR1019980033612A KR19980033612A KR100300789B1 KR 100300789 B1 KR100300789 B1 KR 100300789B1 KR 1019980033612 A KR1019980033612 A KR 1019980033612A KR 19980033612 A KR19980033612 A KR 19980033612A KR 100300789 B1 KR100300789 B1 KR 100300789B1
Authority
KR
South Korea
Prior art keywords
data
byte
data byte
counter
uncompressed
Prior art date
Application number
KR1019980033612A
Other languages
English (en)
Other versions
KR19990029322A (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 KR19990029322A publication Critical patent/KR19990029322A/ko
Application granted granted Critical
Publication of KR100300789B1 publication Critical patent/KR100300789B1/ko

Links

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
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • 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/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/46Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

본 발명은 데이터 압축기 유닛에 개선된 데이터 압축 효율(compression efficiency)을 제공하는 방법을 개시한다. 데이터 압축기 유닛으로 비압축(uncompressed) 데이터 스트림을 전송하기 전에, 비압축 데이터 스트림으로부터의 입력 데이터 바이트(incoming data byte)는 먼저 비압축 데이터 스트림으로부터의 선행 데이터 바이트(preceding data byte)와 비교된다. 제 1 카운터 값은 입력 데이터 바이트 및 선행 데이터 바이트 간의 매칭(match)에 응답하여 증가된다. 제 1 카운터 값이 사전설정(preset)된 값에 도달한 후, 제 2 카운터 값은 입력 데이터 바이트 및 선행 데이터 바이트가 후속적으로 매칭되는 것에 응답하여 증가된다. 입력 데이터 바이트의 런(run)이 완료되는 시점에서 제 2 카운터 값은 최종적으로 데이터 압축기 유닛으로 전송되어 런의 일부분을 치환함으로써, 비압축 데이터 스트림 내에서 런이 발생한 후 데이터 압축기 유닛이 신속하게 최적 압축률(optimal compression ratio)을 회복할 수 있도록 한다.

Description

적응형 데이터 압축기의 데이터 압축 효율을 개선하는 방법 및 장치
본 발명은 일반적으로 데이터를 압축하는 방법 및 장치에 관한 것으로, 특히 적응형 데이터 압축을 수행하는 방법 및 장치에 관한 것이다. 본 발명은 보다 구체적으로 적응형 데이터 압축기의 데이터 압축 효율을 개선하는 방법 및 장치에 관한 것이다.
데이터를 압축하기 위해 압축 알고리즘에 제공되는 데이터의 형태는 상당히 다양하다. 따라서, 대부분의 압축 알고리즘은 그 속성에 있어서 광범위한 데이터 형태에 걸쳐서 양호한 압축 성능을 얻도록 적합하게 만들어진다. 고전적인 Lempel-Ziv 1(LZ_1) 및 Lempel-Ziv 2(LZ_2) 압축 알고리즘 양자는 이러한 개념을 신뢰할 만한 정도까지 구현하고 있다.
LZ_1의 경우에 있어서, 처리될 각 바이트는 초기에는 비어 있는 상태의 히스토리-버퍼(history-buffer)로 이동된다. 이 히스토리-버퍼는 바이트-폭 단위의 시프트 레지스터(byte-wide shift register)의 역할을 하는 것으로 간주될 수 있으며, 일단 히스토리-버퍼가 완전히 채워지면, 새롭게 입력되는 각 데이터 바이트는 히스토리-버퍼의 가장 오래된 데이터(oldest data)를 교체한다. 히스토리-버퍼 내의 현재 내용은, 이전에 발생하여 현재 히스토리-버퍼 내에 남아 있는 입력 데이터 바이트의 임의의 스트링 또는 시퀀스(strings or sequence)와 매칭되는지를 식별하기 위해 입력 데이터와 비교된다. 그 후 입력 데이터 시퀀스는 보다 압축(compact)된 형태로 인코딩되어 히스토리-버퍼 내에서 매칭되는 스트링(matching string)의 시작점 및 매칭되는 스트링의 길이를 제공하고, 또한 LZ_1 압축 알고리즘의 기초를 형성한다. LZ_1 압축해제기는 LZ_1 압축기 내의 히스토리-버퍼에 대해 동일한 데이터 히스토리를 갖는 히스토리-버퍼를 보유하고, 또한 참조 데이터(reference)를 디코딩하는 경우 LZ_1 압축해제기의 출력으로 상기 스트링을 단순히 복사하기만 하면 된다.
LZ_2의 경우에 있어서, 데이터 시퀀스(data sequence)의 사전(dictionary)이 유지되고, 이러한 사전 엔트리들에 대한 참조들은 LZ_2 압축 알고리즘의 기초를 구성한다. 입력 데이터가 사전 엔트리들 중의 하나와 매칭(matching)되는 경우 소정 길이를 인코딩할 필요가 없는데, 그 이유는 해당 길이가 사전 내에도 보유되어 있기 때문이다. 따라서, LZ_2 압축 알고리즘에 따라 압축된 출력 데이터는 통상 사전 엔트리들을 나타내는 번호들의 시퀀스만으로 구성된다. 적응형 LZ_2의 구현에서는 입력 데이터에 기초한 새로운 사전 엔트리들이 연속적으로 추가된다. LZ_2의 경우에는 사전이 꽉 차게 되면 상이한 관리 전략이 사용되지만, LZ_2 압축기 및 LZ_2 압축해제기 양자는 LZ_1의 경우와 마찬가지로 동일한 구조로 시작하고 동일한 구조를 유지한다.
통상적으로 압축될 데이터 스트림은 흔히 일반적으로 "런(runs)"으로 알려진 동일한 문자의 시퀀스를 포함하는 것으로 알려져 있다. 예를 들어, 실행가능 코드(executable code)는 흔히 "0" 문자로 이루어진 유효 런들(significant runs)을 포함한다. 또한 코드 컴파일러는 흔히 널 데이터(null data)를 생성하여 어레이 또는 변수(arrays or variables)를 기지(known)의 상태로 초기화시킨다. 또한, 데이터베이스 소프트웨어는 흔히 데이터 필드를 모두 블랭크 또는 영(0)으로 할당한다. 또한, 이진 비트맵 이미지 데이터(binary bitmap image data)는 흔히 대량의 "공백(whitespace)"을 포함하는데, 이러한 공백은 통상적으로 "0" 문자로 이루어지며 전체가 블랭크인 8개의 픽셀(pixels)을 나타낸다. 대안적으로, 특히 픽셀 당 1 바이트를 사용하여 인코딩되는 농도(gray scale) 또는 칼라 이미지 데이터는 또한 동일한 데이터 바이트로 이루어진 긴 길이의 런들(long runs)을 포함할 수 있다.
이러한 종류의 런들은 데이터 압축기 내에서 불필요하고 비생산적인 적응을 해주어야 하는 문제를 유발할 수 있다. 또한, LZ_1 내의 히스토리-버퍼 또는 LZ_2 내의 사전이 런으로부터의 동일한 데이터 바이트로 인해 쉽게 오버플로우될 수 있기 때문에, 런이 발생한 후 데이터 압축기가 최적 압축률을 회복하는 데에는 약간의 시간이 걸린다. 따라서, 런이 발생한 후에 데이터 압축기가 보다 신속하게 최적 압축 효율을 회복할 수 있도록 데이터 압축기에 양호한 데이터 압축 효율을 달성하는 방법 및 장치가 제공되는 것이 바람직하다.
본 발명의 목적은 데이터 압축을 개선하는 방법 및 장치를 제공하는 것이다.
본 발명의 다른 목적은 적응형 데이터 압축을 실행하는 개선된 방법 및 장치를 제공하는 것이다.
본 발명의 또 다른 목적은 적응형 데이터 압축기의 데이터 압축률을 개선하는 방법 및 장치를 제공하는 것이다.
본 발명의 방법에 따르면, 비압축(uncompressed) 데이터 스트림은 데이터 압축기 유닛으로 전송된다. 그러나 비압축 데이터 스트림을 데이터 압축기 유닛으로 전송하기 전에, 비압축 데이터 스트림으로부터의 입력 데이터 바이트(incoming data byte)는 먼저 비압축 데이터 스트림으로부터의 선행(preceding) 데이터 바이트와 비교된다. 제 1 카운터 값은 입력 데이터 바이트 및 선행 데이터 바이트 간의 매칭(match)에 응답하여 증가된다. 제 1 카운터 값이 사전설정(preset)된 값에 도달한 후 제 2 카운터 값은 입력 데이터 바이트 및 선행 데이터 바이트가 후속적으로 매칭되는 것에 응답하여 증가된다. 입력 데이터 바이트의 런이 완료되는 시점에서 제 2 카운터 값은 최종적으로 데이터 압축기 유닛으로 전송되어 런의 일부분을 치환함으로써 비압축 데이터 스트림 내에서 런이 발생한 후 데이터 압축기 유닛은 최적 압축률(optimal compression ratio)을 신속하게 회복할 수 있도록 한다.
본 발명의 상기 모든 목적, 특징, 및 장점은 첨부된 상세한 설명에서 명백히 이해될 수 있다.
본 발명의 바람직한 사용예, 다른 목적, 및 장점은 첨부된 실시예의 상세한 설명 및 도면을 참조하면 잘 이해될 수 있다.
도 1a는 본 발명의 바람직한 실시예와 일체로 사용될 수 있는 데이터 압축기 유닛의 블록도.
도 1b는 본 발명의 바람직한 실시예와 일체로 사용될 수 있는 데이터 압축해제기(decompressor) 유닛의 블록도.
도 2는 본 발명의 바람직한 실시예에 따른 데이터 압축기 유닛에 대해 개선된 압축 효율을 제공하는 데이터 사전-압축기(pre-compressor) 유닛의 블록도.
도 3은 본 발명의 바람직한 실시예에 따른 데이터 압축기의 데이터 압축 효율을 개선하기 위한 방법의 상태도.
도 4는 본 발명의 바람직한 실시예에 따른 데이터 사후-압축기(post- compressor)의 데이터 압축 효율을 개선하기 위한 방법의 상태도.
<도면의 주요부분에 대한 부호의 설명>
10 : 데이터 압축기 유닛
13 : 데이터 소스
20 : 사전-압축기 유닛(pre-compressor unit)
21 : 멀티플렉서
22, 23 : 레지스터
24 : 비교기
25, 26 : 카운터
본 발명은 Lempel-Ziv 1, Lempel-Ziv 2 등과 같은 여러 형태의 적응형 데이터 압축 알고리즘에 따라 구현될 수 있다. 본 발명이 하드웨어 또는 소프트웨어의 형태로 구현될 수 있다는 점을 본 기술분야의 당업자는 이해할 것이다.
도 1a를 참조하면, 본 발명의 바람직한 실시예가 일체로 사용될 수 있는 데이터 압축기 유닛의 블록도가 도시되어 있다. 도시된 바와 같이, 압축기 유닛 (10)은 제어기 (11), 및 랜덤-액세스 메모리(RAM) 또는 내용 주소화 기억 장치(content-addressable memory: CAM) (12)에 접속된다. 어떠한 형태의 적응형 압축 알고리즘도 압축기 유닛 (10) 내에 구현될 수 있다. 적응형 압축 알고리즘의 예는 본 기술분야의 당업자들에게 잘 알려진 Lempel-Ziv 1 및 Lempel-Ziv 2와 같은 고전적 알고리즘, 또는 "QIC Development Standard QIC-154,"라는 제목으로 Quarter-Inch Cartridge Drive Standards, Inc.사의 Revision A, 10 Mar. 94에 기술되어 있으며 그 내용이 본 명세서에서 참조되어 본 발명의 일부를 이루는 적응형 무손실 데이터 압축(Adaptive Lossless Data Compression: ALDC)과 같은 보다 최신의 알고리즘을 포함한다. Lempel-Ziv 1에 사용되는 히스토리-버퍼 또는 Lempel-Ziv 2에 사용되는 사전과 같은 선택된 압축 알고리즘과 관련된 모든 데이터 구조는 RAM/CAM (12) 내에 유지된다. 이에 따라, RAM/CAM (12)의 최적 크기는 압축기 유닛 (10) 내에서 사용되는 압축 알고리즘의 형태에 좌우된다. 동작 중에, 압축기 유닛 (10)은 먼저 비압축 데이터 스트림을 데이터 소스(data source) (13)으로부터 수신한다. 데이터-인코딩 후, 압축된 데이터 스트림은 데이터 싱크(data sink) (14)로 전송된다.
도 1b를 참조하면, 본 발명의 바람직한 실시예가 일체로 사용될 수 있는 데이터 압축해제기(decompressor) 유닛의 블록도가 도시되어 있다. 도시된 바와 같이, 압축해제기 유닛 (15)는 제어기 (16) 및 RAM (17)에 접속된다. RAM (12)와 마찬가지로, 압축해제기 유닛 (15)에 사용되는 데이터 구조는 모두 RAM (17) 내에 유지되고 RAM (17)의 크기는 압축기 유닛 (10) 내에서 사용되는 압축 알고리즘의 형태에 좌우된다. 동작 중에, 압축해제기 유닛 (15)는 먼저 압축 데이터 스트림을 데이터 소스 (19)로부터 수신한다. 데이터-디코딩 후, 비압축 데이터 스트림은 압축해제기 유닛 (15)로부터 데이터 싱크 (18)로 전송된다.
도 2를 참조하면, 본 발명의 바람직한 실시예에 따른 도 1a의 압축기 유닛 (10)에 개선된 압축 효율을 제공하기 위한 데이터 사전-압축기(data pre-compressor)의 블록도가 도시되어 있다. 사전-압축기 유닛 (20)은 데이터 소스 (13) 및 압축기 유닛 (10) 사이에 접속되는 것이 바람직하다. 도시된 바와 같이, 사전-압축기 유닛 (20)은 제 1 레지스터 (22), 제 2 레지스터 (23), 비교기 (24), 제 1 카운터 (25), 제 2 카운터 (26), 및 멀티플렉서 (21)을 포함한다.
동작 중에, 비압축 데이터 스트림으로부터의 각 입력 데이터 바이트는 먼저 제 1 레지스터 (22) 내에 저장된다. 이러한 입력 데이터 바이트는 비압축 데이터 스트림으로부터 다른 입력 데이터 바이트가 도착하면 제 2 레지스터 (23)으로 전송된다. 따라서 제 2 레지스터 (23)은 비압축 데이터 스트림으로부터의 이전(즉, 바로 직전의) 데이터 바이트의 값을 보유한다. 그 다음에 비교기 (24)를 사용하여 제 1 레지스터 (22) 내에 저장되어 있는 입력 데이터 바이트는 제 2 레지스터 (23) 내에 저장되어 있는 이전 데이터 바이트와 비교된다. 제 1 카운터 (25)는 초기에 영(zero)으로 리셋되지만, 제 1 카운터 (25)는 비교기 (24)에 의해 표시되는, 제 1 레지스터 (22)에 저장된 데이터 바이트 및 제 2 레지스터 (23)에 저장된 데이터 바이트 간의 매칭이 존재할 때마다 증가된다. 그렇지 않고, 제 1 레지스터 (22) 내에 저장된 데이터 바이트 및 제 2 레지스터 (23) 내에 저장된 데이터 바이트 간에 불일치(mismatch)가 존재하는 경우 제 1 카운터 (25)는 다시 리셋된다. 또한, 제 1 레지스터 (22) 내에 저장된 데이터 바이트(즉, 입력 데이터 바이트) 및 제 2 레지스터 (23) 내에 저장된 데이터 바이트 간에 불일치가 존재하는 경우, 비압축 데이터 스트림으로부터의 입력 데이터 바이트는 멀티플렉서 (21)을 통하여 압축기 유닛 (10)으로 전송된다.
제 1 카운터에 관련된 사전설정(preset)된 값이 존재하고, 일단 이 사전설정된 값에 도달하면, 비압축 데이터 스트림으로부터의 이전 데이터 바이트와 여전히 매칭되는 비압축 데이터 스트림으로부터의 임의의 추가 입력 데이터 바이트는 폐기(discarded)된다. 이것은 비압축 데이터 스트림 내에서 런 조건(run condition)이 발생하였음을 나타낸다. 이 시점에서, 제 2 카운터 (26)은 입력 데이터 바이트 및 이전 데이터 바이트 간의 임의의 매칭 조건에 해당될 때마다 증가된다. 최종적으로 입력 데이터 바이트 및 이전 데이터 바이트 간에 불일치가 발생하는 경우, 제 2 카운터 (26) 내에 저장된 누산 카운트(accumulated count)는 압축기 유닛 (10)으로 전송되고, 불일치 입력 데이터 바이트가 뒤따른다.
제 1 카운터 (25)에 사용되는 사전설정 값은 상당히 작아야 하고, 4의 런 길이에 대응하는 사전설정 값으로는 3이 대부분의 비압축 데이터 스트림들에 대해 가장 최적인 것으로 알려져 있다. 따라서, 사전설정 값이 4보다 작은 런을 포함하는 비압축 데이터 스트림으로부터의 모든 데이터 바이트는 압축기 유닛 (10)에서 사용되는 압축기 알고리즘에 따라 추가로 처리하기 위해 단순히 압축기 유닛 (10)으로 전송된다.
대부분의 적응형 압축 알고리즘이 문자에 기초하고 있으므로, 카운터 (25) 및 (26)은 통상적으로 8 비트 길이의 문자와 동일한 크기인 것이 바람직하다. 런이 사전설정 값과 완전히 동일한 길이를 갖는 경우, 카운트 값 "0"이 압축기 유닛 (10)으로 전송된다. 런이 사전설정 값보다 1 바이트 더 긴 경우, 카운트 값 "1"이 압축기 유닛 (10)으로 전송되며, 나머지도 이와 같다. 8-비트 문자가 사용되는 경우, 최상위 값(highest value)은 카운트 연속 문자(count continuation character)로서 사용된다.
도 3을 참조하면, 본 발명의 바람직한 실시예에 따른 데이터 사전-압축기의 데이터 압축 효율을 개선하는 방법의 상태도가 도시되어 있다. 상태 (00)에서 시작하여, 사용가능_플래그(Available_Flag), 제 1_카운터, 제 2_카운터가 영(zero)으로 리셋된 후, 상태 (01)로 진행한다. 상태 (01)에서, 사전-압축기는 입력 데이터_바이트 요구(input Data_Byte request)를 기다린다. 상태 (02)에서, 사용가능_플래그가 "0"으로 설정되어 있는지의 여부가 결정된다; 결정 결과가 "예"인 경우 상태 (04)로 진행하고, "아니오"인 경우 상태 (03)으로 진행한다.
상태 (03)에서, 이전에 저장된 새로운 데이터_바이트는 압축기로 전송된다. 상태 (04)에서, 데이터_바이트는 데이터 소스로부터 인출(fetch)된 후, 상태 (05)로 진행한다. 상태 (05)에서, 제 1_카운터가 사전설정_한계(Preset_Limit)에 도달했는지의 여부가 결정된다; 결정 결과가 "예"인 경우 상태 (08)로 진행하고, "아니오"인 경우 상태 (07)로 진행한다.
상태 (06)에서, 새로운 데이터_바이트가 이전_바이트(Previous_Byte)와 동일한지의 여부가 결정된다; 결정 결과가 "예"인 경우 상태 (08)로 진행하고, "아니오"인 경우 상태 (07)로 진행한다.
상태 (07)에서, 제 1_카운터가 "0"으로 리셋된 후 상태 (09)로 진행한다. 상태 (08)에서, 제 1_카운터가 1만큼 증가된 후 상태 (09)로 진행한다. 상태 (10)에서, 새로운 데이터_바이트가 압축기로 전송된 후 상태 (01)로 진행한다.
상태 (10)에서, 새로운 데이터_바이트가 이전_바이트와 동일한지의 여부가 결정된다; 결정 결과가 "예"인 경우 상태 (13)으로 진행하고, "아니오"인 경우 상태 (11)로 진행한다. 상태 (12)에서, 사용가능_플래그가 "1"로 설정된 후 상태 (01)로 진행한다.
상태 (13)에서, 제 2_카운터가 1만큼 증가된 후 상태 (14)로 진행한다. 상태 (14)에서, 제 2_카운터가 최대값에 도달했는지의 여부가 결정된다; 결정 결과가 "예"인 경우 상태 (15)로 진행하고, "아니오"인 경우 상태 (04)로 진행한다.
상태 (15)에서, 제 2_카운터 값이 압축기로 전송된 후 상태 (16)으로 진행한다. 상태 (16)에서, 제 2_카운터 값이 "1"로 리셋된 후 상태 (01)로 진행한다.
도 4를 참조하면, 본 발명의 바람직한 실시예에 따른 데이터 사후-압축기(data post-compressor)에 대응하는 하이-레벨 상태도가 도시되어 있다. 상태 (00)에서 시작하여, 확장_플래그(Extension_Flag), 제 1_카운터, 제 2_카운터가 영(zero)으로 리셋된 후, 상태 (01)로 진행한다.
상태 (01)에서, 압축해제기로부터 새로운 데이터_바이트의 출력을 기다린다. 상태 (02)에서, 확장_플래그가 "0"으로 설정되었는지의 여부가 결정된다; 결정 결과가 "예"인 경우 상태 (13)으로 진행하고, "아니오"인 경우 상태 (03)으로 진행한다.
상태 (03)에서, 새로운 데이터_바이트 값은 제 2_카운터로 로드된다. 상태 (04)에서, 제 2_카운터가 최대값에 도달했는지의 여부가 결정된다; 결정 결과가 "예"인 경우 상태 (09)로 진행하고, "아니오"인 경우 상태 (05)로 진행한다.
상태 (05)에서, 확장_플래그가 "0"으로 리셋된 후 상태 (06)으로 진행한다. 상태 (06)에서, 제 2_카운터 값이 "0"인지의 여부가 결정된다; 결정 결과가 "예"인 경우 상태 (00)으로 진행하고, "아니오"인 경우 상태 (07)로 진행한다. 상태 (08)에서, 이전 데이터_바이트가 출력으로 전송된 후 상태 (08)로 진행한다. 상태 (08)에서, 제 2_카운터가 1만큼 감소된 후 상태 (06)으로 진행한다.
상태 (09)에서, 확장_플래그가 "1"로 설정된 후 상태 (10)으로 진행한다. 상태 (10)에서, 이전 데이터_바이트가 출력으로 전송된 후 상태 (11)로 진행한다. 상태 (11)에서, 제 2_카운터가 1만큼 감소된 후 상태 (12)로 진행한다. 상태 (12)에서, 제 2_카운터 값이 "1"보다 큰지의 여부가 결정된다; 결정 결과가 "예"인 경우 상태 (10)으로 진행하고, "아니오"인 경우 상태 (01)로 진행한다.
상태 (13)에서, 제 1_카운터가 사전설정_한계에 도달했는지의 여부가 결정된다; 결정 결과가 "예"인 경우 상태 (03)으로 진행하고, "아니오"인 경우 상태 (14)로 진행한다.
상태 (14)에서, 새로운 데이터_바이트 값이 출력으로 전송된 후, 상태 (15)로 진행한다. 상태 (15)에서, 새로운 데이터_바이트가 이전_바이트와 동일한지의 여부가 결정된다; 결정 결과가 "예"인 경우 상태 (17)로 진행하고, "아니오"인 경우 상태 (16)으로 진행한다. 상태 (16)에서, 제 1_카운터 값이 "0"으로 리셋된 후 상태 (01)로 진행한다. 상태 (17)에서, 제 1_카운터가 1만큼 증가된 후 상태 (01)로 진행한다.
표 1은 본 발명의 바람직한 실시예에 따른 입력 데이터 스트림에 기초하는 사전-압축기 유닛 (20)으로부터의 결과를 나타내는 예이다. 이 예에 있어서, 사전설정 값은 "3"으로 설정되고 8-비트 심볼(1 바이트)이 사용된다.
표 1
입력 데이터 스트림 압축기로의 입력
C3 02 02 02 A7 C3 02 02 02 A7
96 FF FF FF FF A2 96 FF FF FF FF 00 A2
31 30 30 30 30 30 39 31 30 30 30 30 01 39
0A 40 . . (9 런) . . 40 C3 0A 40 40 40 40 05 C3
64 00 . . (258 런) . . 00 32 64 00 00 00 00 FE 32
9B 00 . . (259 런) . . 00 8D 9B 00 00 00 00 FF 00 8D
20 40 . . (260 런) . . 40 20 20 40 40 40 40 FF 01 20
상기한 바와 마찬가지로, 본 발명은 압축기 유닛에 개선된 데이터 압축 효율을 제공하는 방법 및 장치를 제공한다. 전체 개시 내용을 통하여 압축기 유닛이 예시 목적으로 사용되었지만, 상기 기술된 사전-압축기는 또한 대응하는 사후-압축해제기를 사용하여야 한다는 점을 본 기술분야의 당업자는 이해할 것이다. 이러한 사후-압축해제기는 도 1b의 압축해제기 유닛 (15) 및 데이터 싱크 (18) 사이에 접속되는 것이 바람직하다.
사후-압축해제기는 사전-압축기의 역동작(inverse operation)을 수행한다. 압축해제기로부터의 각 데이터 바이트 출력은 이전 데이터 바이트와 비교되고, 카운터는 증가되거나 또는 리셋된다. 카운터가 사전설정된 값에 도달하는 경우, 다음 데이터 바이트(next data byte)는 얼마나 많은 수의 최종 값 출력의 추가 복사가 연속적인 런을 구성하는지를 나타내는 카운트로서의 역할을 하고, 더 이상의 압축 데이터 바이트를 디코딩하기 전에 복사되어야 한다.
사전-압축기 및 사후-압축해제기 양자에 있어서, 최대 카운트 심볼 값은 이 최대값 카운트가 동일한 규칙에 따라 처리되어야 하는 다음 심볼에서 연속되는 경우를 제외하고는 최대값을 갖는 카운트를 나타내기 위해 사용된다. 이러한 방식으로 카운트 연속 문자를 사용하면 사전설정 임계값과 완전히 동일한 길이로 이루어진 런에 대해 1개의 심볼을 사용할 수 없도록 한 상태에서 임의의 길이로 이루어진 런이 인코딩되도록 한다.
하드웨어에 대하여, 본 발명은 단지 이전 데이터 심볼을 보유하는 추가 레지스터(extra register), 비교기, 및 카운터와 적은 양의 제어 논리를 필요로 한다. 사실상 내용 주소화 기억 장치(CAM)에 기초한 압축기에 있어서, 레지스터는 하드웨어 내에 이미 존재하지만, 어떠한 경우라도 본 발명을 구현하기 위해 사용되는 추가 실리콘 영역은 무시해도 좋다.
본 발명은 어떠한 종류의 압축 알고리즘에도 적용될 수 있으며, 긴 길이의 런을 갖는 데이터에 상당한 압축(8-비트 심볼에 대하여 250 : 1을 초과함)을 제공할 수 있다는 것이 명백하다. 범용 적응형 압축 알고리즘의 경우에 있어서, 입력 데이터 스트림이 압축 알고리즘을 적합하도록 하는데 사용되어야 하는지의 여부에 관계없이 상기 본 발명의 압축 알고리즘이 일반적으로 적용되므로, 상기 압축 알고리즘의 종류에 무관하게 적용될 수 있다는 점이 본 발명의 중요한 장점이다. 예를 들어, Lempel-Ziv 1 알고리즘은 긴 길이의 런을 갖는 동일한 데이터에 대하여 단지 약 90 : 1의 최대 압축률을 달성할 수 있을 뿐이다.
본 발명이 바람직한 실시예를 참조하여 기술되었지만, 본 기술분야의 당업자는 본 발명의 정신 및 범위를 벗어남이 없이 형태 및 상세에 있어서 다양한 변경을 가할 수 있다는 것을 이해할 것이다.

Claims (14)

  1. 데이터 압축기 유닛에 개선된 데이터 압축 효율(compression efficiency)을 제공하는 방법에 있어서,
    a) 비압축(uncompressed) 데이터 스트림―여기서 비압축 데이터 스트림은 상 기 데이터 압축기 유닛에 의해 수신됨―으로부터의 입력 데이터 바이트 (incoming data byte) 및 선행 데이터 바이트를 비교하는 단계;
    b) 상기 입력 데이터 바이트 및 상기 선행 데이터 바이트 간의 매칭에 응답 하여 제 1 카운터 값을 증가시키는 단계;
    c) 상기 제 1 카운터 값이 상기 비압축 데이터 스트림 내의 런을 표시하는 사전설정된 값에 도달하는 것에 응답하여 제 2 카운터를 증가시키는 단 계;
    d) 상기 비압축 데이터 스트림 내의 상기 런을 상기 제 2 카운터 값으로 치 환하는 단계; 및
    e) 상기 비압축 데이터 스트림 내에서 상기 런이 발생한 후 상기 데이터 압 축기가 신속하게 최적 압축률(optimal compression ratio)을 회복하도록 상기 비압축 데이터 스트림을 상기 데이터 압축기 유닛으로 전송하는 단 계
    를 포함하는 데이터 압축 방법.
  2. 제 1항에 있어서,
    상기 입력 데이터 바이트 및 상기 선행 데이터 바이트 간의 불일치(mismatch)에 응답하여 상기 제 1 카운터를 리셋시키는 단계를 추가로 포함하는 데이터 압축 방법.
  3. 제 1항에 있어서,
    상기 제 2 카운터 값을 증가시키는 단계가 입력 데이터 바이트 및 선행 데이터 바이트 간의 후속 매칭에 응답하여 제 2 카운터 값을 증가시키는 단계를 추가로 포함하는 데이터 압축 방법.
  4. 제 3항에 있어서,
    상기 입력 데이터 바이트를 폐기(discarding)하는 단계를 추가로 포함하는 데이터 압축 방법.
  5. 제 1항에 있어서,
    상기 런의 완료가 입력 데이터 바이트 및 선행 데이터 바이트 간의 불일치에 의해 표시되는 데이터 압축 방법.
  6. 데이터 압축기 유닛에 개선된 데이터 압축 효율을 제공하는 방법에 있어서,
    a) 비압축 데이터 스트림―여기서 비압축 데이터 스트림은 상기 데이터 압축 기 유닛에 의해 수신됨―으로부터의 입력 데이터 바이트 및 선행 데이터 바이트를 비교함으로써 상기 비압축 데이터 스트림을 사전처리하는 단계;
    b) 상기 비압축 데이터 스트림 내에서 런의 시작을 표시하기 위하여, 상기 입력 데이터 바이트 및 상기 이전 데이터 바이트 간의 매칭에 응답하여 제 1 카운터 값을 증가시키는 단계;
    c) 상기 제 1 카운터 값이 사전설정된 값에 도달한 후 입력 데이터 바이트 및 선행 데이터 바이트 간의 후속 매칭에 응답하여, 상기 비압축 데이터 스트림 내의 상기 런의 잔여 부분(remaining portion)을 표시하기 위하여 제 2 카운터 값을 증가시키는 단계;
    d) 상기 비압축 데이터 스트림 내의 상기 런의 상기 잔여 부분을 상기 제 2 카운터 값으로 치환하는 단계; 및
    e) 상기 비압축 데이터 스트림 내에서 상기 런의 발생에도 불구하고 상기 데 이터 압축기가 신속하게 최적 압축 효율을 회복할 수 있도록 상기 제 2 카운터 값과 함께 내장된(embedded) 비압축 데이터 스트림을 상기 데이 터 압축기 유닛으로 전송하는 단계
    를 포함하는 데이터 압축 방법.
  7. 제 6항에 있어서,
    상기 입력 데이터 바이트 및 상기 선행 데이터 바이트 간의 불일치에 응답하여 상기 제 1 카운터를 리셋시키는 단계를 추가로 포함하는 데이터 압축 방법.
  8. 제 6항에 있어서,
    상기 입력 데이터 바이트를 폐기하는 단계를 추가로 포함하는 데이터 압축 방법.
  9. 제 6항에 있어서,
    상기 런의 완료가 입력 데이터 바이트 및 선행 데이터 바이트 간의 불일치에 의해 표시되는 데이터 압축 방법.
  10. 데이터 압축기 유닛에 개선된 데이터 압축률을 제공하는 사전-압축기(pre-compressor)에 있어서,
    a) 비압축 데이터 스트림―여기서 비압축 데이터 스트림은 상기 데이터 압축 기 유닛에 의해 수신됨―으로부터의 입력 데이터 바이트 및 선행 데이터 바이트를 비교하는 비교기;
    b) 상기 비교기에 접속되며, 상기 입력 데이터 바이트 및 상기 선행 데이터 바이트 간의 매칭된 개수(number of matches)를 카운트하는 제 1 카운 터;
    c) 상기 비교기에 접속되며, 상기 제 1 카운터가 사전설정된 값에 도달한 후 상기 입력 데이터 바이트 및 상기 선행 데이터 바이트 간의 매칭 개수를 카운트하는 제 2 카운터; 및
    d) 상기 비압축 데이터 스트림 내에서 상기 런이 발생한 후 상기 데이터 압 축기가 신속하게 최적 압축률을 회복할 수 있도록 상기 입력 데이터 바 이트의 런이 완료되면 상기 제 2 카운터의 값을 상기 데이터 압축기 유 닛으로 전송하는 전송기
    를 포함하는 사전-압축기.
  11. 제 10항에 있어서,
    상기 입력 데이터 바이트 및 상기 선행 데이터 바이트 간의 불일치에 응답하여 상기 제 1 카운터를 리셋시키는 리셋 수단을 추가로 포함하는 사전-압축기.
  12. 제 10항에 있어서,
    상기 제 2 카운터의 값이 증가하는 동안 상기 입력 데이터 바이트를 폐기하는 수단을 추가로 포함하는 사전-압축기.
  13. 제 10항에 있어서,
    상기 런의 완료가 입력 데이터 바이트 및 선행 데이터 바이트 간의 불일치에 의해 표시되는 사전-압축기.
  14. 제 10항에 있어서,
    상기 비압축 데이터 스트림 내의 상기 런을 상기 제 2 카운터 값으로 치환하는 수단을 추가로 포함하는 사전-압축기.
KR1019980033612A 1997-09-19 1998-08-19 적응형 데이터 압축기의 데이터 압축 효율을 개선하는 방법및 장치 KR100300789B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/934,335 1997-09-19
US8/934,335 1997-09-19
US08/934,335 US5874907A (en) 1997-09-19 1997-09-19 Method and apparatus for providing improved data compression efficiency for an adaptive data compressor

Publications (2)

Publication Number Publication Date
KR19990029322A KR19990029322A (ko) 1999-04-26
KR100300789B1 true KR100300789B1 (ko) 2001-09-22

Family

ID=25465369

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980033612A KR100300789B1 (ko) 1997-09-19 1998-08-19 적응형 데이터 압축기의 데이터 압축 효율을 개선하는 방법및 장치

Country Status (8)

Country Link
US (1) US5874907A (ko)
EP (1) EP0903867B1 (ko)
JP (1) JP3065585B2 (ko)
KR (1) KR100300789B1 (ko)
DE (1) DE69833094T2 (ko)
MY (1) MY115600A (ko)
SG (1) SG66494A1 (ko)
TW (1) TW410505B (ko)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0977152A3 (en) * 1998-07-28 2000-12-27 Xerox Corporation Data compression apparatus using matching string
US6624761B2 (en) * 1998-12-11 2003-09-23 Realtime Data, Llc Content independent data compression method and system
US6601104B1 (en) 1999-03-11 2003-07-29 Realtime Data Llc System and methods for accelerated data storage and retrieval
US6604158B1 (en) * 1999-03-11 2003-08-05 Realtime Data, Llc System and methods for accelerated data storage and retrieval
DE19962971A1 (de) * 1999-12-24 2001-06-28 Bosch Gmbh Robert Verfahren zur Datenübertragung über ein Bussystem
US20010047473A1 (en) 2000-02-03 2001-11-29 Realtime Data, Llc Systems and methods for computer initialization
US20030191876A1 (en) * 2000-02-03 2003-10-09 Fallon James J. Data storewidth accelerator
US7417568B2 (en) * 2000-10-03 2008-08-26 Realtime Data Llc System and method for data feed acceleration and encryption
US8692695B2 (en) 2000-10-03 2014-04-08 Realtime Data, Llc Methods for encoding and decoding data
US9143546B2 (en) * 2000-10-03 2015-09-22 Realtime Data Llc System and method for data feed acceleration and encryption
US7386046B2 (en) 2001-02-13 2008-06-10 Realtime Data Llc Bandwidth sensitive data compression and decompression
EP2284721B1 (en) * 2001-12-10 2013-10-23 SAP Portals Israel Ltd. Apparatus and method for optimized and secured reflection of network services to remote locations
DE10301362B4 (de) * 2003-01-16 2005-06-09 GEMAC-Gesellschaft für Mikroelektronikanwendung Chemnitz mbH Blockdatenkompressionssystem, bestehend aus einer Kompressionseinrichtung und einer Dekompressionseinrichtung, und Verfahren zur schnellen Blockdatenkompression mit Multi-Byte-Suche
US9614772B1 (en) 2003-10-20 2017-04-04 F5 Networks, Inc. System and method for directing network traffic in tunneling applications
US7103685B1 (en) * 2004-01-16 2006-09-05 Xilinx, Inc. Bitstream compression with don't care values
US8024483B1 (en) 2004-10-01 2011-09-20 F5 Networks, Inc. Selective compression for network connections
US7937510B1 (en) 2005-02-01 2011-05-03 Altera Corporation Lempel Ziv compression architecture
US7109895B1 (en) * 2005-02-01 2006-09-19 Altera Corporation High performance Lempel Ziv compression architecture
US7482954B1 (en) 2005-02-25 2009-01-27 Xilinx, Inc. Bitstream compression for a programmable device
US7783781B1 (en) 2005-08-05 2010-08-24 F5 Networks, Inc. Adaptive compression
US8533308B1 (en) 2005-08-12 2013-09-10 F5 Networks, Inc. Network traffic management through protocol-configurable transaction processing
US8275909B1 (en) * 2005-12-07 2012-09-25 F5 Networks, Inc. Adaptive compression
US7882084B1 (en) 2005-12-30 2011-02-01 F5 Networks, Inc. Compression of data transmitted over a network
US7873065B1 (en) 2006-02-01 2011-01-18 F5 Networks, Inc. Selectively enabling network packet concatenation based on metrics
US8565088B1 (en) 2006-02-01 2013-10-22 F5 Networks, Inc. Selectively enabling packet concatenation based on a transaction boundary
US8417833B1 (en) 2006-11-29 2013-04-09 F5 Networks, Inc. Metacodec for optimizing network data compression based on comparison of write and read rates
US9106606B1 (en) 2007-02-05 2015-08-11 F5 Networks, Inc. Method, intermediate device and computer program code for maintaining persistency
US8238677B2 (en) * 2008-03-07 2012-08-07 International Business Machines Corporation Adaptive lossless data compression method for compression of color image data
GR1008346B (el) * 2013-11-04 2014-11-03 Νικολαος Χρηστου Πετρελλης Μεθοδος και συσκευη παρεμβολης για πιστοτερη αναπαρασταση και συμπιεση σηματος
US11158364B2 (en) 2019-05-31 2021-10-26 Micron Technology, Inc. Apparatuses and methods for tracking victim rows
US11158373B2 (en) * 2019-06-11 2021-10-26 Micron Technology, Inc. Apparatuses, systems, and methods for determining extremum numerical values
US11863209B2 (en) * 2021-08-18 2024-01-02 Pixart Imaging Inc. Integrated circuit and method capable of minimizing circuit area of non-volatile memory circuit

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2396479A1 (fr) * 1977-06-30 1979-01-26 Cit Alcatel Installation de transmission de fac-simile a reduction de redondance
US4679094A (en) * 1986-10-14 1987-07-07 The Associated Press Method for compression and transmission of video information
US5016009A (en) * 1989-01-13 1991-05-14 Stac, Inc. Data compression apparatus and method
JPH088642B2 (ja) * 1989-07-27 1996-01-29 富士通株式会社 網点画像データ圧縮装置
CA2077271C (en) * 1991-12-13 1998-07-28 David J. Craft Method and apparatus for compressing data
US5486826A (en) * 1994-05-19 1996-01-23 Ps Venture 1 Llc Method and apparatus for iterative compression of digital data
US5612693A (en) * 1994-12-14 1997-03-18 International Business Machines Corporation Sliding window data compression using a toroidal bit shift register
KR100254402B1 (ko) * 1994-12-19 2000-05-01 전주범 줄-길이 부호화방법 및 줄-길이 부호화기
US5608396A (en) * 1995-02-28 1997-03-04 International Business Machines Corporation Efficient Ziv-Lempel LZI data compression system using variable code fields
US5627534A (en) * 1995-03-23 1997-05-06 International Business Machines Corporation Dual stage compression of bit mapped image data using refined run length and LZ compression

Also Published As

Publication number Publication date
EP0903867A1 (en) 1999-03-24
MY115600A (en) 2003-07-31
JPH11145848A (ja) 1999-05-28
EP0903867B1 (en) 2006-01-04
DE69833094T2 (de) 2006-08-31
US5874907A (en) 1999-02-23
DE69833094D1 (de) 2006-03-30
JP3065585B2 (ja) 2000-07-17
TW410505B (en) 2000-11-01
KR19990029322A (ko) 1999-04-26
SG66494A1 (en) 1999-07-20

Similar Documents

Publication Publication Date Title
KR100300789B1 (ko) 적응형 데이터 압축기의 데이터 압축 효율을 개선하는 방법및 장치
US5389922A (en) Compression using small dictionaries with applications to network packets
US5532694A (en) Data compression apparatus and method using matching string searching and Huffman encoding
US5003307A (en) Data compression apparatus with shift register search means
US8090027B2 (en) Data compression using an arbitrary-sized dictionary
JP3009727B2 (ja) 改良形データ圧縮装置
US5016009A (en) Data compression apparatus and method
US5293379A (en) Packet-based data compression method
US6633242B2 (en) Entropy coding using adaptable prefix codes
EP0846373B1 (en) Method and apparatus for compressing and decompressing image data
US7907069B2 (en) Fast compression method for scientific data
KR100314419B1 (ko) 변형렘펠-지브1을인코딩하기위한방법및장치
US20070150497A1 (en) Block data compression system, comprising a compression device and a decompression device and method for rapid block data compression with multi-byte search
US5877711A (en) Method and apparatus for performing adaptive data compression
US5673042A (en) Method of and an apparatus for compressing/decompressing data
EP0582907A2 (en) Data compression apparatus and method using matching string searching and Huffman encoding
WO1995019662A1 (en) Data compression apparatus and method
JP3839604B2 (ja) データ処理方法
US6668093B2 (en) Method for improving dictionary-based compression by ordering raster data
JP3266419B2 (ja) データ圧縮・伸長方式
JPH07298062A (ja) データ圧縮・復号方式
US6522270B1 (en) Method of coding frequently occurring values
US6583736B1 (en) Bitcode sequence coding of frequently occurring values
JP3143030B2 (ja) データ圧縮方法及びその装置並びにデータ伸長方法及びその装置
GB2360916A (en) Compression encoder which transmits difference between new data word and recent data word where this falls within a threshold

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20110502

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee