KR100353171B1 - 적응형데이터압축을수행하는방법및장치 - Google Patents
적응형데이터압축을수행하는방법및장치 Download PDFInfo
- Publication number
- KR100353171B1 KR100353171B1 KR1019980036943A KR19980036943A KR100353171B1 KR 100353171 B1 KR100353171 B1 KR 100353171B1 KR 1019980036943 A KR1019980036943 A KR 1019980036943A KR 19980036943 A KR19980036943 A KR 19980036943A KR 100353171 B1 KR100353171 B1 KR 100353171B1
- Authority
- KR
- South Korea
- Prior art keywords
- literal
- pointer
- data
- count
- copy
- 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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/005—Statistical coding, e.g. Huffman, run length coding
-
- 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
- H03M7/3086—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
본 발명은 포인터의 출력 시퀀스를 생성하기 위하여 소스 심볼의 입력 데이터 스트림을 인코딩하는 방법을 개시한다. 입력 데이터 스트림의 시작 부분은 압축기에 의해 LITERAL_POINTER로 인코드된다. LITERAL_POINTER는 데이터 스트림으로부터 적어도 한 개의 데이터 바이트를 포함하고 있다. 입력 데이터 스트림의 후속 부분은 COPY_POINTER로 인코드된다. COPY_POINTER는 압축기 내에 히스토리-버퍼를 표시하는 카운트와 변위를 포함하고 있다. 입력 데이터 스트림으로부터의 모든 연속 데이터 바이트는 LITERAL_POINTER 및 COPY_POINTER가 교호하는 방식으로 인코드되어, 압축기에 의해 출력된 인코드된 출력 시퀀스가 LITERAL_POINTER 및 COPY_POINTER 사이에서 교호하는 포인터의 스트링을 포함한다.
Description
본 발명은 일반적으로 데이터를 압축하는 방법 및 장치에 관한 것으로, 특히 적응형 데이터 압축을 수행하는 방법 및 장치에 관한 것이다. 구체적으로 본 발명은 변형 Lempel-Ziv 1의 데이터 압축 효율을 개선하기 위한 방법 및 장치에 관한 것이다.
잘 알려진 Lempel-Ziv 코딩 방식은 J. Ziv 및 A. Lempel의 논문 "순차 데이터 압축을 위한 범용 알고리즘"(IEEE Trans. Inform. Theory, vol. IT-23, no. 3, pp.337-343, 1977)에서 처음 제안되었다. Ziv-Lempel 코딩 방식의 변형을 이용한 종래의 구현예는 J. Storer 및 T. Symanski의 논문 "텍스츄얼 치환을 통한 데이터 압축"(J. ACM, vol. 29, no. 4, pp. 928-951, 1982)에서 처음 제안되었으며, 이어서 T. Bell의 논문 "향상된 OPM/L 텍스트 압축"(IEEE Trans. Comm., vol. COM-34, no. 12, 1986)에서 구체화되었는데, T. Bell은 자신의 코딩 방식을 LZSS라고 불렀다.
LZSS 방식에 따르면 Lempel-Ziv 압축기는 LITERAL_POINTER 및 COPY_POINTER라 불리우는 코드 심볼을 임의 혼합 방식으로 출력한다. LITERAL_POINTER는 하나의 단일 내장 데이터 심볼(embedded data symbol)을 포함하며, COPY_POINTER는 SYMBOL_COUNT 및 DISPLACEMENT(또는 OFFSET)라 불리우는 2개 요소를 포함하고 있다.
각 LITERAL_POINTER는 압축 해제기(decompressor)로 단순히 내장 데이터 심볼을 추출함으로써 처리된다. 그 후, 추출된 데이터 심볼은 압축해제기로부터 출력되고, 또한 갱신을 위해 히스토리-버퍼의 현재 위치로 복사된다. COPY_POINTER는 SYMBOL_COUNT 및 DISPLACEMENT 값을 추출하여 디코딩함으로써 처리된다. 그 후, SYMBOL_COUNT 값에 의해 특정되는 몇 개의 심볼이 압축해제기의 히스토리-버퍼로부터 복사된다. 상기 심볼들은 DISPLACEMENT 값에 의해 특정되는 히스토리-버퍼 위치로부터 시작하여 한 번에 한 개씩 순차적으로 복사된다. 각 심볼이 압축해제기의 출력으로 복사될 때, 각 심볼은 또한 LITERAL_POINTER의 경우와 같은 방식으로 갱신을 위해 히스토리-버퍼로 복사된다.
Lempel-Ziv에 의해 제안된 Lempel-Ziv 2로 알려진 사전에 기초한 방식(dictionary-based scheme)과 구별하기 위한 상기와 같은 종류의 대부분의 변형 Lempel-Ziv 1의 구현예에서와 마찬가지로, 짧은 카운트(count) 값이 긴 카운트 값보다 더 자주 나타나기 때문에 LZSS는 가변 길이 SYMBOL_COUNT 코딩 방식을 사용한다. 또한 LZSS는 인코드된 LITERAL_POINTER와 COPY_POINTER를 구별하기 위하여 단일 플래그 비트를 사용한다.
최근 몇 년 동안 적응형 무손실 데이터 압축(Adaptive Lossless Data Compression: ALDC)로 불리우는 적응형 압축 알고리즘이 컴퓨터 및 관련 주변 장치 내에서 범용 데이터 압축용으로 널리 사용되고 있다. 변형 Lempel-Ziv 1의 하나인 ALDC는 논문 "QIC 개발 기준 QIC-154"(Rev. A, 10 Mar 94, Quarter-Inch Cartridge Drive Standards, Inc.)에 상세히 설명되어 있다. 이 논문은 인터넷의 "http://www.qic.org"를 통해서도 얻을 수 있으며, 이 논문의 개시 내용은 본 발명에 참조되어 본 발명의 일부를 이룬다.
ALDC가 예를 들어 랜덤 바이트(random byte)의 입력 데이터 스트림과 같은 압축을 할 수 없는 데이터를 만날 경우, 출력은 대부분 LITERAL_POINTER로 이루어지며, 입력되는 랜덤 데이터 바이트는 히스토리-버퍼에 이미 저장된 기존 데이터 시퀀스의 임의의 광범위한 반복성을 포함할 가능성은 거의 없다. LZSS 코딩 방식에서와 같이 ALDC는 LITERAL_POINTER 및 COPY_POINTER를 서로 구별하기 위하여 양자의 시작부분에 단일 플래그 비트를 사용한다. 각각의 입력되는 8 비트로 된 랜덤 데이터 바이트 값은 ALDC의 경우 8 개의 문자 데이터 비트인 단일 "0" 비트와 그 뒤에 이어지는 LITERAL_POINTER로 인코드되기 때문에, 상기 단일 플래그 비트를 사용하면 ALDC에 대해 약 12.5%가 확장된다. 따라서, ALDC는 히스토리-버퍼에서 발견되는 매칭되지 않는 스트링을 갖는 임의의 데이터에 대해서 8 개의 입력 데이터 비트를 각각 9 개의 데이터 비트로 확장시킨다.
본 발명의 개시 내용은 플래그 비트를 전혀 사용하지 않고 적응형 데이터 압축을 수행하는 개선된 방법 및 장치를 기술하여 상기 LZSS 및 ALDC와 같이 LITERAL_POINTER와 COPY_POINTER를 구별하기 위하여 플래그 비트의 사용을 필요로 하는 장치 및 방법에 비해 더 양호한 압축비가 달성될 수 있다.
본 발명의 목적은 데이터 압축을 개선하는 방법 및 장치를 제공하는 것이다.
본 발명의 다른 목적은 적응형 데이터 압축을 실행하는 개선된 방법 및 장치를 제공하는 것이다.
본 발명의 또 다른 목적은 변형 Lempel-Ziv 1의 압축 효율을 개선하기 위한 개선된 방법 및 장치를 제공하는 것이다.
본 발명의 방법 및 장치에 따르면, 소스 심볼의 입력 데이터 스트림의 시작 부분이 압축기에 의해 LITERAL_POINTER로 인코드된다. LITERAL_POINTER는 데이터 스트림으로부터 적어도 한 개의 데이터 바이트를 포함하고 있다. 입력 데이터 스트림의 후속 부분은 COPY_POINTER로 인코드된다. COPY_POINTER는 압축기 내의 히스토리-버퍼를 나타내는 카운트와 변위(displacement)를 포함한다. 입력 데이터 스트림으로부터 모든 연속 데이터 바이트는 LITERAL_POINTER 및 COPY_POINTER가 교호(alternating) 방식으로 인코드되어, 압축기에 의해 출력되는 인코드된 출력 시퀀스는 LITERAL_POINTER와 COPY_POINTER 사이에서 교호하는 포인터의 스트링을 포함한다. 이에 따라, 종래 기술에서와 같이 LITERAL_POINTER와 COPY_POINTER를 구별하기 위한 플래그 비트의 사용이 필요하지 않다.
본 발명의 상기 모든 목적, 특징, 및 장점은 첨부된 상세한 설명에서 명백히 이해될 수 있다.
도 1a는 본 발명의 바람직한 실시예가 구현될 수 있는 압축기 유닛의 블럭도.
도 1b는 본 발명의 바람직한 실시예가 구현될 수 있는 데이터 압축해제기 유닛의 블록도.
도 2는 본 발명의 바람직한 실시예에 부합하는 고정 길이 LIRERAL_COUNT의 인코딩 방식의 하이-레벨 의사(擬似: pseudo)-코드를 도시한 도면.
도 3은 본 발명의 바람직한 실시예에 부합하는 가변 길이 LIRERAL_COUNT의 인코딩 방식의 하이-레벨 의사-코드를 도시한 도면.
〈도면의 주요 부분에 대한 부호의 설명〉
10, 15 : 압축기 유닛
11, 16 : 제어기
12, 17 : RAM/CAM
13, 19 : 데이터 소스
14, 18 : 데이터 싱크
본 발명은 물론 본 발명의 바람직한 사용 모드, 추가 목적, 및 이에 따른 장점들은 첨부된 도면과 함께 이하 기술될 예시적인 구현예에 대한 상세한 설명을 참조하여 가장 잘 이해될 수 있다.
본 발명은 데이터 압축기와 데이터 압축해제기 내에서 구현될 수 있다. 본 발명 기술분야의 당업자는 본 발명이 하드웨어 또는 소프트웨어 중 어느 하나로 구현될 수 있다는 점을 이해할 수 있다.
1.인코더 및 디코더
도 1a를 참조하면, 본 발명의 바람직한 실시예가 구현될 수 있는 데이터 압축기 유닛의 블록도가 도시되어 있다. 도시된 바와 같이, 압축기 유닛 (10)은 제어기 (11), 및 랜덤-액세스 메모리(RAM) 또는 내용 주소화 기억 장치(content-addressable memory : CAM) (12)에 접속된다. 히스토리-버퍼와 같은 압축 알고리즘과 관련된 모든 데이터 구조는 RAM/CAM내에 보유된다. 이에 따라, RAM/CAM(12)의 최적의 사이즈는 주로 히스토리-버퍼에 의해 결정된다. 동작 중에, 압축기 유닛 (10)은 먼저 비압축 데이터 스트림을 데이터 소스(data source) (13)으로부터 수신한다. 데이터-인코딩 후, 압축된 데이터 스트림은 데이터 싱크(data sink) (14)로 전송된다.
압축기 유닛 (10)은 압축되지 않은 데이터 스트림을 한번에 한 데이터 바이트씩 처리한다. 또한, 처리된 각 데이터 바이트는 히스토리 버퍼 내로 순차적으로 복사되고 히스토리-버퍼가 이미 가득 찬 경우 가장 오래된 데이터 바이트를 교체한다. 따라서, 순차적으로 복사된 가장 최근의 데이터 바이트는 히스토리-버퍼 내에서 항상 이용 가능하다.
압축 프로세스는 히스토리 버퍼 내에 이미 존재하는 데이터 바이트의 임의의 시퀀스 또는 스트링을 식별하기 위해 입력(incoming) 데이터 스트림의 검사를 포함한다. 소정의 동일한 데이터 바이트 스트링이 히스토리-버퍼 내에서 이용 가능한 경우, 이러한 데이터 바이트와 매칭되는 스트링은 히스토리-버퍼 내의 바이트 심볼카운트 및 변위(오프셋)를 포함하는 2-성분 COPY_POINTER로 인코드될 수 있다. 따라서, 상기 동일한 데이터 바이트 스트링이 통상적으로 요구되는 것보다 더 적은 정보 비트로 COPY_POINTER에 의해 인코드될 수 있는 경우, 압축이 달성된다. 그러나, 입력 데이터 바이트 시퀀스가 히스토리-버퍼 내의 임의의 위치에서 매칭되지 않는 경우, 이러한 입력 데이터 바이트 시퀀스는 해당 데이터 바이트 시퀀스를 명백히 표시하는 LITERAL로서 인코드된다.
도 1b를 참조하면, 본 발명의 바람직한 실시예가 구현될 수 있는 데이터 압축해제기(decompressor) 유닛의 블록도가 도시되어 있다. 도시된 바와 같이, 압축해제기 유닛 (15)는 제어기 (16) 및 RAM/CAM (17)에 접속된다. RAM/CAM (12)와 마찬가지로, 압축해제기 유닛 (15)에 사용되는 데이터 구조는 모두 RAM/CAM (17) 내에 유지된다. 동작 중에, 압축해제기 유닛 (15)는 먼저 압축 데이터 스트림을 데이터 소스 (19)로부터 수신한다. 데이터가 디코딩된 후, 비압축 데이터 스트림은 압축해제기 유닛 (15)로부터 데이터 싱크 (18)로 전송된다.
반면에, COPY_POINTER는 처음에 COPY_POINTER의 특정 바이트 카운트 및 변위를 디코딩함으로써 처리된다. 이어서, 이러한 데이터 바이트 값들의 스트링이 압축 해제기 유닛 (15) 내의 히스토리-버퍼로부터 한번에 1 바이트씩 판독된다. 그 다음, 각 데이터 바이트 값은 다음 데이터 바이트 값이 액세스되기 전에 히스토리-버퍼 내로 복사되어 디코드된 데이터 바이트로서 출력된다. 일단 데이터 바이트의 전체 스트링이 상기 방법으로 처리되면, 압축 해제기 (15) 내의 히스토리 버퍼는 압축기 (10) 내의 히스토리 버퍼와 동일한 버퍼가 된다.
2.인코딩 방식
본 발명은 주로 LITERAL 및 COPY_POINTER를 표시하는데 사용되는 인코딩 방식에 있어서 다수의 변형 Lempel-Ziv 1과 차이가 난다. 본 발명의 바람직한 실시예와 부합되는 개선된 코딩 방식이 아래와 같이 기술된다.
(1) 압축기 유닛에서의 인코드된 출력은 항상 LITERAL_POINTER로 시작된다. 그후 COPY_POINTER 및 LITERAL_POINTER 시퀀스가 교호로 이어진다. 예를 들면, <LITERAL_POINTER> <COPY_POINTER> <LITERAL_POINTER> <COPY_POINTER> ... <LITERAL_POINTER> <COPY_POINTER> <LITERAL_POINTER> <COPY_POINTER>와 같은 시퀀스가 될 수 있다.
(2) LITERAL_POINTER는 다음에 표시되는 바와 같이 LITERAL_COUNT 필드와 그 뒤에 이어지는 대응되는 개수만큼의 LITERAL_DATA 심볼(통상 바이트 단위임)을 포함하고 있다.
<LITERAL_POINTER> = [<LITERAL_COUNT> <LITERAL_DATA>]
(3) LITERAL_COUNT 필드는 3개의 허용값 즉 0, 1 및 2를 갖는다. 이들 3개의 값은 LITERAL_COUNT 필드 뒤에 이어지는 LITERAL_DATA 심볼의 개수를 결정한다. LITERAL_COUNT 필드의 인코딩 포맷은 표 1로 주어진다.
(4) LITERAL_COUNT의 값이 0이면 NULL_LITERAL을 표시하고, LITERAL_COUNT 필드 뒤에 이어지는 LITERAL_DATA 심볼이 없다(표 1의 첫째줄)는 것을 표시한다. 이러한 0 값은 2개의 연속적인 COPY_POINTER를 분리하여, 상기 규칙 (1)과 모순되지 않도록 하는데 사용된다.
(5) LITERAL_COUNT의 값이 1이면 하나의 LITERAL_DATA 심볼과 그 뒤에 COPY_POINTER가 이어지는 것을 표시한다(표 1의 둘째줄).
(6) LITERAL_COUNT의 값이 2이면 상기 규칙 (2) 내지 (5)에서 기술된 바와 같이 인코드되어 2개의 LITERAL_DATA 심볼과 그 뒤에 또 다른 하나의 LITERAL_POINTER가 이어지는 것을 표시한다(표 1의 셋째줄).
(7) COPY_POINTER는 SYMBOL_COUNT 및 DISPLACEMENT 필드를 포함하고 있는데, 이들 필드는 ALDC에서와 완전히 동일하게 인코드되며 저장된 동일한 예약 제어 워드(Control Word) 값 및 끝표시(End_Marker) 값을 이용하지만 선행하는 플래그 비트의 오버헤드가 없다.
[표 1]
본 발명의 바람직한 실시예에 따른 인코딩 방식은 LITERAL_POINTER와 COPY_POINTER를 구별하기 위하여 종래 기술인 변형 Lempel-Ziv 1에서와 같이 플래그 비트를 필요로 하지 않는다는 점에 유의하여야 한다. 이러한 본 발명의 특수한 인코딩 방식은 또한 압축기 유닛 내에서 최소한의 버퍼링 (예를 들어, 바이트 단위로 이루어진 2 개의 심볼)을 필요로 한다
상기 기술된 인코딩 방식은 가변 길이 인코딩 방식을 사용하는데,LITERAL_COUNT는 0 내지 2 범위의 값을 제공하는 1 또는 2 비트 중 어느 하나가 될 수 있다. 또한 COPY_POINTER 내의 SYMBOL_COUNT는 그 크기가 2 비트에서 12 비트까지 변하여, 총 286개 범위의 값을 표시할 수 있다. 상기 범위 내에서 모두 12 비트 숫자들로 되어 있는 마지막 16개의 연속적인 코드값은 제어용으로 사용하기 위해 예약(reserve)된다. 따라서, 270개의 길이 코드가 사용가능한데, 이들 코드는 2 내지 271 바이트 길이를 갖는 매칭 스트링의 코딩을 가능하게 해준다. 단일 바이트로 된 매칭 스트링 중 어느 것도 COPY_POINTER로 인코드되지 않는다.
또한 히스토리-버퍼는 동작의 시작 시점에서 소거되어야 한다. 데이터는 항상 제로(0) 주소 위치에서 시작하여 히스토리-버퍼 내에서 증가하는 순서로 저장된다. 상기 위치, 즉 변위 값은 모든 히스토리-버퍼가 가득 차있을 때마다 제로로 리셋되어야 하며, 갱신 위치는 스트링 매칭 동작을 시작하거나 또는 스트링 매칭 동작을 계속하기 위한 용도로 사용되지 않는다.
3.실시예
도 2에 본 발명의 바람직한 실시예와 부합되는 고정 길이 LITERAL_COUNT 인코딩 방식의 하이-레벨 의사(擬似) 코드(pseudo-code)가 예시되어 있다. 본 실시예에서는 예를 들어 2 비트 카운터 L_CTR 및 3개의 8 비트 L_DATA[] 버퍼가 사용된다. LITERAL_DATA 심볼을 처리하기 위해서, L_CTR 값이 3이 되면 "11"을 출력하고, L_DATA[0]로부터 데이터 바이트를 출력하며, L_DATA[1]로부터 데이터 바이트를 출력하고, L_DATA[2]로부터 데이터 바이트를 출력하며, LITERAL_DATA 바이트를 L_DATA[0]에 저장하고 L_CTR을 1로 설정한다. 그러나, L_CTR 값이 3이 아니면,L_CTR에 의해 인덱스된 L_DATA 내에 해당 바이트를 저장하고, L_CTR 값을 1만큼 증가시킨다.
COPY_POINTER를 인코딩하기 위해서는 이전에 저장된 임의의 LITERAL_DATA 바이트가 먼저 인코드된 후 출력되어야 한다. L_CTR 값이 3이면, "11"을 출력하고, 단계 (3)으로 진행한다. L_CTR 값이 2이면, "10"을 출력하고, 단계 (3)으로 진행한다. L_CTR 값이 1이면, "01"을 출력하고, 단계 (3)으로 진행한다. L_CTR 값이 0이면, "00"을 출력하고, 단계 (4)로 진행한다. 단계 (3)에서는L_DATA[0]로부터 데이터 바이트를 출력하고; L_CTR이 1보다 크면, L_DATA[1]로부터 데이터 바이트를 출력하고; L_CTR이 2보다 크면, L_DATA[2]로부터 데이터 바이트를 출력하고; "00"을 출력하고 단계 (4)로 진행한다. 단계 (4)에서는 L_CTR을 0으로 설정한 후, COPY_POINTER를 인코드하고 출력한다.
도 3에는 본 발명의 바람직한 실시예에 따른 가변 길이 LITERAL_COUNT 인코딩 방식의 하이-레벨 의사(擬似) 코드(pseudo-code)가 예시되어 있다. 본 실시예에서는 예를 들어 2 비트 카운터 L_CTR 및 2개의 8 비트 L_DATA[] 버퍼가 사용된다. LITERAL_DATA를 처리하기 위해서, L_CTR 값이 2가 되면 "11"을 출력하고, L_DATA[0]로부터 데이터 바이트를 출력하고, L_DATA[1]로부터 데이터 바이트를 출력하고, LITERAL_DATA를 L_DATA[0]에 저장하고 L_CTR를 1로 설정한다. 그러나, L_CTR 값이 2가 아니면, L_CTR에 의해 인덱스된 L_DATA 내에 데이터 바이트를 저장하고, L_CTR 값을 1만큼 증가시킨다.
COPY_POINTER를 인코딩하기 위해서는 이전에 저장된 임의의 LITERAL_DATA 바이트가 먼저 인코드된 후 출력되어야 한다. L_CTR 값이 2이면, "11"을 출력하고, 단계 (3)으로 진행한다. L_CTR 값이 1이면, "10"을 출력하고, 단계 (3)으로 진행한다. L_CTR 값이 0이면, "0"을 출력하고, 단계 (4)로 진행한다. 단계 (3)에서는 L_DATA[0]으로부터 데이터 바이트를 출력하고; L_CTR 값이 1보다 크면, L_DATA[1]로부터 데이터 바이트를 출력하고; "0"을 출력하고 단계 (4)로 진행한다. 단계 (4)에서는 L_CTR을 0으로 설정한 후, COPY_POINTER를 인코드한 후 출력한다.
상기 기술한 바와 같이, 본 발명은 압축기 유닛 내에서 적응형 데이터 압축을 수행하는 개선된 방법 및 장치를 제공한다. 본 발명의 입력 데이터 스트림으로부터의 데이터 바이트는 LITERAL_POINTER 및 COPY_POINTER의 순서가 교호하는 방식으로 인코드된다. 그 결과 압축 유닛으로부터의 출력 시퀀스는 LITERAL_POINTER로 시작하여 LITERAL_POINTER 및 COPY_POINTER가 교호하는 포인터의 스트링을 포함하고 있다. LITERAL_POINTER는 LITERAL_COUNT 다음에 문자 데이터 바이트 또는 심볼을 전혀 포함하지 않거나 또는 일부를 포함할 수 있다. LITERAL_COUNT의 최대 허용값은 임의 길이를 갖는 LITERAL_DATA 심볼의 긴 시퀀스를 인코드하는데 필요한 수만큼의 LITERAL_POINTER를 반복적으로 연결하는데 사용된다. 또한, LITERAL_POINTER 내에서 LITERAL_COUNT를 인코드하기 위하여 2 비트 고정 길이 또는 1 비트/2 비트 가변 길이 인코딩 방식이 사용될 수 있다.
또한, 본 발명이 하드웨어 압축기에 대해 기술하였지만, 본 발명의 메카니즘이 소프트웨어로 구현되며 다양한 형태의 프로그램 제품으로 공급될 수 있다는 점과 본 발명이 실제로 배포하는데 사용되는 신호 포함 매체(signal bearing media)특정 형태와 관계없이 동일하게 적용된다는 점을 당업자들은 명백히 이해할 수 있을 것이다. 신호 포함 매체의 예는 플로피 디스크 또는 CD 롬과 같은 기록 가능한 형태의 매체, 및 아날로그 또는 디지털 통신 링크와 같은 전송 형태의 매체를 포함하지만 이에 제한되지는 않는다.
본 발명이 바람직한 실시예를 참조하여 기술되었지만, 본 기술분야의 당업자는 본 발명의 정신 및 범위를 벗어남이 없이 형태 및 상세에 있어서 다양한 변경을 가할 수 있다는 것을 이해할 것이다.
본 발명의 변형 Lempel-Ziv 1에서는 종래기술과는 달리 LITERAL_POINTER와 COPY_POINTER를 구별하기 위한 플래그 비트의 사용이 필요하지 않으므로 데이터 압축 효율이 개선된다.
Claims (17)
- 데이터 압축기 내의 히스토리-버퍼를 사용하여 포인터의 출력 시퀀스를 생성하기 위해 소스 심볼의 입력 데이터 스트림을 인코딩하는 방법에 있어서,a) 상기 입력 데이터 스트림의 시작 부분을 상기 데이터 스트림으로부터 적어도 한 개의 데이터 바이트를 포함하는 LITERAL_POINTER로 인코딩하는 단계;b) 상기 입력 데이터 스트림의 후속 부분을 상기 히스토리-버퍼를 나타내는 카운트 필드 및 변위를 포함하는 COPY_POINTER로 인코딩하는 단계; 및c) 상기 데이터 압축기로부터의 상기 출력 시퀀스가 LITERAL_POINTER 및 COPY_POINTER 사이에서 교호하는 포인터의 스트링을 포함하도록 상기 입력 데이터 스트림으로부터의 연속 데이터 바이트를 LITERAL_POINTER 및 COPY_POINTER의 순서가 교호하는 방식으로 인코딩하는 단계를 포함하며,상기 LITERAL_POINTER는 LITERAL_COUNT 필드와 그 뒤에 이어지는 대응되는 개수의 LITERAL_DATA 심볼을 포함하는 인코딩 방법.
- 제1항에 있어서, 상기 LITERAL_COUNT는 고정 길이를 갖는 소스 심볼의 입력 데이터 스트림 인코딩 방법.
- 제1항에 있어서, 상기 LITERAL_COUNT는 2 비트인 소스 심볼의 입력 데이터스트림 인코딩 방법.
- 제1항에 있어서, 상기 LITERAL_COUNT는 가변 길이를 갖는 소스 심볼의 입력 데이터 스트림 인코딩 방법.
- 제1항에 있어서, 상기 LITERAL_COUNT는 1 비트 또는 2 비트인 소스 심볼의 입력 데이터 스트림 인코딩 방법.
- 제1항에 있어서, 상기 카운트 필드가 가변 길이를 갖는 소스 심볼의 입력 데이터 스트림 인코딩 방법.
- 제6항에 있어서, 상기 카운트 필드가 2 내지 12 비트인 소스 심볼의 입력 데이터 스트림 인코딩 방법.
- 히스토리-버퍼를 사용하여 포인터의 출력 시퀀스를 생성하기 위해 소스 심볼의 입력 데이터 스트림을 인코딩하는 데이터 압축기에 있어서,a) 상기 입력 데이터 스트림의 시작 부분을 상기 데이터 스트림으로부터 적어도 한 개의 데이터 바이트를 포함하는 LITERAL_POINTER로 인코딩하는 수단;b) 상기 입력 데이터 스트림의 후속 부분을 상기 히스토리-버퍼를 나타내는카운트 필드 및 변위를 포함하는 COPY_POINTER로 인코딩하는 수단; 및c) 상기 데이터 압축기로부터의 상기 출력 시퀀스가 LITERAL_POINTER 및 COPY_POINTER 사이에서 교호하는 포인터의 스트링을 포함하도록 상기 입력 데이터 스트림으로부터 연속 데이터 바이트를 LITERAL_POINTER 및 COPY_POINTER의 순서가 교호하는 방식으로 인코딩하는 수단을 포함하며,상기 LITERAL_POINTER가 LITERAL_COUNT 필드와 그 뒤에 이어지는 대응되는 개수의 LITERAL_DATA 심볼을 포함하는 데이터 압축기.
- 제8항에 있어서, 상기 LITERAL_COUNT는 고정 길이를 갖는 데이터 압축기.
- 제8항에 있어서, 상기 LITERAL_COUNT는 2 비트인 데이터 압축기.
- 제8항에 있어서, 상기 LITERAL_COUNT는 가변 길이를 갖는 데이터 압축기.
- 제8항에 있어서, 상기 LITERAL_COUNT는 1 비트 또는 2 비트인 데이터 압축기.
- 제8항에 있어서, 상기 카운트 필드가 가변 길이를 갖는 데이터 압축기.
- 제13항에 있어서, 상기 카운트 필드가 2 내지 12 비트인 데이터 압축기.
- 히스토리-버퍼를 사용하여 포인터의 출력 시퀀스를 생성하기 위해 소스 심볼의 입력 데이터 스트림을 인코딩하는 프로그램을 저장하는 컴퓨터 판독 가능한 기록 메체에 있어서, 상기 프로그램은a) 상기 입력 데이터 스트림의 시작 부분을 상기 데이터 스트림으로부터 적어도 한 개의 데이터 바이트를 포함하는 LITERAL_POINTER로 인코딩하는 프로그램 코드 수단;b) 상기 입력 데이터 스트림의 후속 부분을 상기 히스토리-버퍼를 나타내는 카운트 필드 및 변위를 포함하는 COPY_POINTER로 인코딩하는 프로그램 코드 수단; 및c) 상기 데이터 압축기로부터의 상기 출력 시퀀스가 LITERAL_POINTER 및 COPY_POINTER 사이에서 교호하는 포인터의 스트링을 포함하도록 상기 입력 데이터 스트림으로부터 연속 데이터 바이트를 LITERAL_POINTER 및 COPY_POINTER의 순서가 교호하는 방식으로 인코딩하는 프로그램 코드 수단을 포함하는 것이고,상기 LITERAL_POINTER가 LITERAL_COUNT 필드와 그 뒤에 이어지는 대응되는 개수의 LITERAL_DATA 심볼을 포함하는 것인 컴퓨터 판독 가능한 기록 매체.
- 제15항에 있어서, 상기 LITERAL_COUNT는 고정 길이를 갖는 것인 컴퓨터 판독가능한 기록 매체.
- 제15항에 있어서, 상기 LITERAL_COUNT는 가변 길이를 갖는 것인 컴퓨터 판독 가능한 기록 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/934,234 US5877711A (en) | 1997-09-19 | 1997-09-19 | Method and apparatus for performing adaptive data compression |
US08/934,234 | 1997-09-19 | ||
US8/934,234 | 1997-09-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19990029626A KR19990029626A (ko) | 1999-04-26 |
KR100353171B1 true KR100353171B1 (ko) | 2002-12-26 |
Family
ID=25465206
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019980036943A KR100353171B1 (ko) | 1997-09-19 | 1998-09-08 | 적응형데이터압축을수행하는방법및장치 |
Country Status (8)
Country | Link |
---|---|
US (1) | US5877711A (ko) |
EP (1) | EP0903866B1 (ko) |
JP (1) | JP3141001B2 (ko) |
KR (1) | KR100353171B1 (ko) |
DE (1) | DE69834695T2 (ko) |
MY (1) | MY114074A (ko) |
SG (1) | SG65784A1 (ko) |
TW (1) | TWM252197U (ko) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7190284B1 (en) | 1994-11-16 | 2007-03-13 | Dye Thomas A | Selective lossless, lossy, or no compression of data based on address range, data type, and/or requesting agent |
US6879266B1 (en) | 1997-08-08 | 2005-04-12 | Quickshift, Inc. | Memory module including scalable embedded parallel data compression and decompression engines |
US6819271B2 (en) | 1999-01-29 | 2004-11-16 | Quickshift, Inc. | Parallel compression and decompression system and method having multiple parallel compression and decompression engines |
US6885319B2 (en) * | 1999-01-29 | 2005-04-26 | Quickshift, Inc. | System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms |
US7129860B2 (en) * | 1999-01-29 | 2006-10-31 | Quickshift, Inc. | System and method for performing scalable embedded parallel data decompression |
US6208273B1 (en) | 1999-01-29 | 2001-03-27 | Interactive Silicon, Inc. | System and method for performing scalable embedded parallel data compression |
US6822589B1 (en) | 1999-01-29 | 2004-11-23 | Quickshift, Inc. | System and method for performing scalable embedded parallel data decompression |
US6145069A (en) * | 1999-01-29 | 2000-11-07 | Interactive Silicon, Inc. | Parallel decompression and compression system and method for improving storage density and access speed for non-volatile memory and embedded memory devices |
US7538694B2 (en) | 1999-01-29 | 2009-05-26 | Mossman Holdings Llc | Network device with improved storage density and access speed using compression techniques |
US6239727B1 (en) * | 1999-06-10 | 2001-05-29 | Universita' Degli Studi Di Palmero | Data encoding/decoding process |
JP2001053620A (ja) * | 1999-08-13 | 2001-02-23 | Canon Inc | 符号化方法及び符号化装置、復号化方法及び復号化装置、記憶媒体 |
TW487854B (en) * | 1999-10-19 | 2002-05-21 | Pulsar Dna Inc | Data file processing method |
DE10131801B4 (de) * | 2001-06-30 | 2013-03-07 | Robert Bosch Gmbh | Verfahren zur Datenkompression und Navigationssystem |
US6674908B1 (en) | 2002-05-04 | 2004-01-06 | Edward Lasar Aronov | Method of compression of binary data with a random number generator |
US6771193B2 (en) | 2002-08-22 | 2004-08-03 | International Business Machines Corporation | System and methods for embedding additional data in compressed data streams |
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 |
US8238677B2 (en) * | 2008-03-07 | 2012-08-07 | International Business Machines Corporation | Adaptive lossless data compression method for compression of color image data |
US8373584B2 (en) | 2011-05-16 | 2013-02-12 | Hewlett-Packard Development Company, L.P. | Compressing and decompressing data |
US8669889B2 (en) | 2011-07-21 | 2014-03-11 | International Business Machines Corporation | Using variable length code tables to compress an input data stream to a compressed output data stream |
US8400335B2 (en) | 2011-07-21 | 2013-03-19 | International Business Machines Corporation | Using variable length code tables to compress an input data stream to a compressed output data stream |
US8692696B2 (en) | 2012-01-03 | 2014-04-08 | International Business Machines Corporation | Generating a code alphabet of symbols to generate codewords for words used with a program |
US20130279882A1 (en) * | 2012-04-23 | 2013-10-24 | Apple Inc. | Coding of Video and Audio with Initialization Fragments |
JP7475319B2 (ja) | 2021-11-16 | 2024-04-26 | 株式会社日立製作所 | ストレージシステム及びストレージシステムにおけるデータ処理方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0888568A (ja) * | 1994-09-14 | 1996-04-02 | Ee I Sofuto Kk | データの可逆符号化方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5016009A (en) * | 1989-01-13 | 1991-05-14 | Stac, Inc. | Data compression apparatus and method |
CA2077271C (en) * | 1991-12-13 | 1998-07-28 | David J. Craft | Method and apparatus for compressing data |
US5521597A (en) * | 1993-08-02 | 1996-05-28 | Mircosoft Corporation | Data compression for network transport |
US5617517A (en) * | 1994-09-20 | 1997-04-01 | Seiko Epson Corporation | Two-dimensional method and system for compressing bi-level images |
US5612693A (en) * | 1994-12-14 | 1997-03-18 | International Business Machines Corporation | Sliding window data compression using a toroidal bit shift register |
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,234 patent/US5877711A/en not_active Expired - Lifetime
-
1998
- 1998-03-16 TW TW090217797U patent/TWM252197U/zh not_active IP Right Cessation
- 1998-08-13 JP JP10228790A patent/JP3141001B2/ja not_active Expired - Fee Related
- 1998-08-17 MY MYPI98003734A patent/MY114074A/en unknown
- 1998-09-08 KR KR1019980036943A patent/KR100353171B1/ko not_active IP Right Cessation
- 1998-09-14 EP EP98307436A patent/EP0903866B1/en not_active Expired - Lifetime
- 1998-09-14 DE DE69834695T patent/DE69834695T2/de not_active Expired - Lifetime
- 1998-09-18 SG SG1998003724A patent/SG65784A1/en unknown
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0888568A (ja) * | 1994-09-14 | 1996-04-02 | Ee I Sofuto Kk | データの可逆符号化方法 |
Also Published As
Publication number | Publication date |
---|---|
JP3141001B2 (ja) | 2001-03-05 |
TWM252197U (en) | 2004-12-01 |
DE69834695T2 (de) | 2007-04-26 |
US5877711A (en) | 1999-03-02 |
EP0903866B1 (en) | 2006-05-31 |
SG65784A1 (en) | 1999-06-22 |
EP0903866A1 (en) | 1999-03-24 |
MY114074A (en) | 2002-07-31 |
DE69834695D1 (de) | 2006-07-06 |
JPH11196000A (ja) | 1999-07-21 |
KR19990029626A (ko) | 1999-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100353171B1 (ko) | 적응형데이터압축을수행하는방법및장치 | |
US7403136B2 (en) | Block data compression system, comprising a compression device and a decompression device and method for rapid block data compression with multi-byte search | |
US5229768A (en) | Adaptive data compression system | |
US5608396A (en) | Efficient Ziv-Lempel LZI data compression system using variable code fields | |
KR100314419B1 (ko) | 변형렘펠-지브1을인코딩하기위한방법및장치 | |
US5870036A (en) | Adaptive multiple dictionary data compression | |
US7817069B2 (en) | Alternative encoding for LZSS output | |
US10587285B1 (en) | Hardware friendly data compression | |
US7215259B2 (en) | Data compression with selective encoding of short matches | |
CA2299902C (en) | Method and apparatus for data compression using fingerprinting | |
JPH07104971A (ja) | ネットワークパケットに適用される小型辞書を用いた圧縮方法 | |
JPH0869370A (ja) | データ圧縮方法およびシステム | |
US6225922B1 (en) | System and method for compressing data using adaptive field encoding | |
JP2536422B2 (ja) | デ―タ圧縮装置及びデ―タ復元装置 | |
JP3061278B2 (ja) | 可変ビット長コード語のビット長通信方法 | |
JP4191438B2 (ja) | データ圧縮方法およびデータ伸長方法、該方法を実施するためのコンピュータプログラム製品と電子システム | |
JP3266419B2 (ja) | データ圧縮・伸長方式 | |
JP3242795B2 (ja) | データ処理装置及びデータ処理方法 | |
GB2360915A (en) | Run length compression encoding of selected bits of data words | |
US6819272B2 (en) | System, method and computer readable medium for compressing a data sequence for partial decompressing | |
JP2003318739A (ja) | データシーケンスを圧縮するシステム、方法、およびコンピュータ読み取り可能媒体 | |
GB2360916A (en) | Compression encoder which transmits difference between new data word and recent data word where this falls within a threshold | |
GB2360917A (en) | Run length compression encoding of runs of similar data words | |
JPH0511973A (ja) | ユニバーサル符号を用いたデータ圧縮方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20110902 Year of fee payment: 10 |
|
LAPS | Lapse due to unpaid annual fee |