KR100300789B1 - 적응형 데이터 압축기의 데이터 압축 효율을 개선하는 방법및 장치 - Google Patents
적응형 데이터 압축기의 데이터 압축 효율을 개선하는 방법및 장치 Download PDFInfo
- 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
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/46—Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
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)
- 데이터 압축기 유닛에 개선된 데이터 압축 효율(compression efficiency)을 제공하는 방법에 있어서,a) 비압축(uncompressed) 데이터 스트림―여기서 비압축 데이터 스트림은 상 기 데이터 압축기 유닛에 의해 수신됨―으로부터의 입력 데이터 바이트 (incoming data byte) 및 선행 데이터 바이트를 비교하는 단계;b) 상기 입력 데이터 바이트 및 상기 선행 데이터 바이트 간의 매칭에 응답 하여 제 1 카운터 값을 증가시키는 단계;c) 상기 제 1 카운터 값이 상기 비압축 데이터 스트림 내의 런을 표시하는 사전설정된 값에 도달하는 것에 응답하여 제 2 카운터를 증가시키는 단 계;d) 상기 비압축 데이터 스트림 내의 상기 런을 상기 제 2 카운터 값으로 치 환하는 단계; 및e) 상기 비압축 데이터 스트림 내에서 상기 런이 발생한 후 상기 데이터 압 축기가 신속하게 최적 압축률(optimal compression ratio)을 회복하도록 상기 비압축 데이터 스트림을 상기 데이터 압축기 유닛으로 전송하는 단 계를 포함하는 데이터 압축 방법.
- 제 1항에 있어서,상기 입력 데이터 바이트 및 상기 선행 데이터 바이트 간의 불일치(mismatch)에 응답하여 상기 제 1 카운터를 리셋시키는 단계를 추가로 포함하는 데이터 압축 방법.
- 제 1항에 있어서,상기 제 2 카운터 값을 증가시키는 단계가 입력 데이터 바이트 및 선행 데이터 바이트 간의 후속 매칭에 응답하여 제 2 카운터 값을 증가시키는 단계를 추가로 포함하는 데이터 압축 방법.
- 제 3항에 있어서,상기 입력 데이터 바이트를 폐기(discarding)하는 단계를 추가로 포함하는 데이터 압축 방법.
- 제 1항에 있어서,상기 런의 완료가 입력 데이터 바이트 및 선행 데이터 바이트 간의 불일치에 의해 표시되는 데이터 압축 방법.
- 데이터 압축기 유닛에 개선된 데이터 압축 효율을 제공하는 방법에 있어서,a) 비압축 데이터 스트림―여기서 비압축 데이터 스트림은 상기 데이터 압축 기 유닛에 의해 수신됨―으로부터의 입력 데이터 바이트 및 선행 데이터 바이트를 비교함으로써 상기 비압축 데이터 스트림을 사전처리하는 단계;b) 상기 비압축 데이터 스트림 내에서 런의 시작을 표시하기 위하여, 상기 입력 데이터 바이트 및 상기 이전 데이터 바이트 간의 매칭에 응답하여 제 1 카운터 값을 증가시키는 단계;c) 상기 제 1 카운터 값이 사전설정된 값에 도달한 후 입력 데이터 바이트 및 선행 데이터 바이트 간의 후속 매칭에 응답하여, 상기 비압축 데이터 스트림 내의 상기 런의 잔여 부분(remaining portion)을 표시하기 위하여 제 2 카운터 값을 증가시키는 단계;d) 상기 비압축 데이터 스트림 내의 상기 런의 상기 잔여 부분을 상기 제 2 카운터 값으로 치환하는 단계; 및e) 상기 비압축 데이터 스트림 내에서 상기 런의 발생에도 불구하고 상기 데 이터 압축기가 신속하게 최적 압축 효율을 회복할 수 있도록 상기 제 2 카운터 값과 함께 내장된(embedded) 비압축 데이터 스트림을 상기 데이 터 압축기 유닛으로 전송하는 단계를 포함하는 데이터 압축 방법.
- 제 6항에 있어서,상기 입력 데이터 바이트 및 상기 선행 데이터 바이트 간의 불일치에 응답하여 상기 제 1 카운터를 리셋시키는 단계를 추가로 포함하는 데이터 압축 방법.
- 제 6항에 있어서,상기 입력 데이터 바이트를 폐기하는 단계를 추가로 포함하는 데이터 압축 방법.
- 제 6항에 있어서,상기 런의 완료가 입력 데이터 바이트 및 선행 데이터 바이트 간의 불일치에 의해 표시되는 데이터 압축 방법.
- 데이터 압축기 유닛에 개선된 데이터 압축률을 제공하는 사전-압축기(pre-compressor)에 있어서,a) 비압축 데이터 스트림―여기서 비압축 데이터 스트림은 상기 데이터 압축 기 유닛에 의해 수신됨―으로부터의 입력 데이터 바이트 및 선행 데이터 바이트를 비교하는 비교기;b) 상기 비교기에 접속되며, 상기 입력 데이터 바이트 및 상기 선행 데이터 바이트 간의 매칭된 개수(number of matches)를 카운트하는 제 1 카운 터;c) 상기 비교기에 접속되며, 상기 제 1 카운터가 사전설정된 값에 도달한 후 상기 입력 데이터 바이트 및 상기 선행 데이터 바이트 간의 매칭 개수를 카운트하는 제 2 카운터; 및d) 상기 비압축 데이터 스트림 내에서 상기 런이 발생한 후 상기 데이터 압 축기가 신속하게 최적 압축률을 회복할 수 있도록 상기 입력 데이터 바 이트의 런이 완료되면 상기 제 2 카운터의 값을 상기 데이터 압축기 유 닛으로 전송하는 전송기를 포함하는 사전-압축기.
- 제 10항에 있어서,상기 입력 데이터 바이트 및 상기 선행 데이터 바이트 간의 불일치에 응답하여 상기 제 1 카운터를 리셋시키는 리셋 수단을 추가로 포함하는 사전-압축기.
- 제 10항에 있어서,상기 제 2 카운터의 값이 증가하는 동안 상기 입력 데이터 바이트를 폐기하는 수단을 추가로 포함하는 사전-압축기.
- 제 10항에 있어서,상기 런의 완료가 입력 데이터 바이트 및 선행 데이터 바이트 간의 불일치에 의해 표시되는 사전-압축기.
- 제 10항에 있어서,상기 비압축 데이터 스트림 내의 상기 런을 상기 제 2 카운터 값으로 치환하는 수단을 추가로 포함하는 사전-압축기.
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)
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)
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 |
-
1997
- 1997-09-19 US US08/934,335 patent/US5874907A/en not_active Expired - Lifetime
-
1998
- 1998-04-03 TW TW087105113A patent/TW410505B/zh active
- 1998-08-13 JP JP10228812A patent/JP3065585B2/ja not_active Expired - Fee Related
- 1998-08-17 MY MYPI98003736A patent/MY115600A/en unknown
- 1998-08-19 KR KR1019980033612A patent/KR100300789B1/ko not_active IP Right Cessation
- 1998-09-14 DE DE69833094T patent/DE69833094T2/de not_active Expired - Lifetime
- 1998-09-14 EP EP98307420A patent/EP0903867B1/en not_active Expired - Lifetime
- 1998-09-18 SG SG1998003740A patent/SG66494A1/en unknown
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 |