KR19990029626A - 적응형 데이터 압축을 수행하는 방법 및 장치 - Google Patents

적응형 데이터 압축을 수행하는 방법 및 장치 Download PDF

Info

Publication number
KR19990029626A
KR19990029626A KR1019980036943A KR19980036943A KR19990029626A KR 19990029626 A KR19990029626 A KR 19990029626A KR 1019980036943 A KR1019980036943 A KR 1019980036943A KR 19980036943 A KR19980036943 A KR 19980036943A KR 19990029626 A KR19990029626 A KR 19990029626A
Authority
KR
South Korea
Prior art keywords
literal
pointer
data stream
encoding
input data
Prior art date
Application number
KR1019980036943A
Other languages
English (en)
Other versions
KR100353171B1 (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 KR19990029626A publication Critical patent/KR19990029626A/ko
Application granted granted Critical
Publication of KR100353171B1 publication Critical patent/KR100353171B1/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/005Statistical coding, e.g. Huffman, run length coding
    • 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
    • H03M7/3086Compression; 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_COUNT 필드의 인코딩 포맷
코드 뒤에 이어지는 것
0 0 COPY_PTR
10 1 LITERAL_DATA COPY_PTR
11 2 LITERAL_DATA LITERAL_DATA LITERAL_PTR
본 발명의 바람직한 실시예에 따른 인코딩 방식은 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이면, 1을 출력하고, 단계 (3)으로 진행한다. L_CTR 값이 0이면, 0을 출력하고, 단계 (4)로 진행한다. 단계 (3)에서는L_DATA[0]로부터 데이터 바이트를 출력하고; L_CTR이 1보다 크면, L_DATA[1]로부터 데이터 바이트를 출력하고; L_CTR이 2보다 크면, L_DATA[2]로부터 데이터 바이트를 출력하고; 0을 출력하고 단계 (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 (20)

  1. 데이터 압축기 내의 히스토리-버퍼를 사용하여 포인터의 출력 시퀀스를 생성하기 위해 소스 심볼의 입력 데이터 스트림을 인코딩하는 방법에 있어서,
    a) 상기 입력 데이터 스트림의 시작 부분을 상기 데이터 스트림으로부터 적 어도 한 개의 데이터 바이트를 포함하는 LITERAL_POINTER로 인코딩하 는 단계;
    b) 상기 입력 데이터 스트림의 후속 부분을 상기 히스토리-버퍼를 나타내는 카운트 필드 및 변위를 포함하는 COPY_POINTER로 인코딩하는 단 계; 및
    c) 상기 데이터 압축기로부터의 상기 출력 시퀀스가 LITERAL_POINTER 및 COPY_POINTER 사이에서 교호하는 포인터의 스트링을 포함하도록 상기 입력 데이터 스트림으로부터의 연속 데이터 바이트를 LITERAL_ POINTER 및 COPY_POINTER의 순서가 교호하는 방식으로 인코딩하는 단계
    를 포함하는 소스 심볼의 입력 데이터 스트림 인코딩 방법.
  2. 제 1항에 있어서,
    상기 LITERAL_POINTER가 LITERAL_COUNT 필드와 그 뒤에 이어지는 대응되는 개수의 LITERAL_DATA 심볼을 포함하는 소스 심볼의 입력 데이터 스트림 인코딩 방법.
  3. 제 2항에 있어서,
    상기 LITERAL_COUNT가 고정 길이를 갖는 소스 심볼의 입력 데이터 스트림 인코딩 방법.
  4. 제 2항에 있어서,
    상기 LITERAL_COUNT가 2 비트인 소스 심볼의 입력 데이터 스트림 인코딩 방법.
  5. 제 2항에 있어서,
    상기 LITERAL_COUNT가 가변 길이를 갖는 소스 심볼의 입력 데이터 스트림 인코딩 방법.
  6. 제 2항에 있어서,
    상기 LITERAL_COUNT가 1 비트 또는 2 비트인 소스 심볼의 입력 데이터 스트림 인코딩 방법.
  7. 제 1항에 있어서,
    상기 카운트 필드가 가변 길이를 갖는 소스 심볼의 입력 데이터 스트림 인코딩 방법.
  8. 제 7항에 있어서,
    상기 카운트 필드가 2 내지 12 비트인 소스 심볼의 입력 데이터 스트림 인코딩 방법.
  9. 히스토리-버퍼를 사용하여 포인터의 출력 시퀀스를 생성하기 위해 소스 심볼의 입력 데이터 스트림을 인코딩하는 데이터 압축기에 있어서,
    a) 상기 입력 데이터 스트림의 시작 부분을 상기 데이터 스트림으로부터 적 어도 한 개의 데이터 바이트를 포함하는 LITERAL_POINTER로 인코딩하 는 수단;
    b) 상기 입력 데이터 스트림의 후속 부분을 상기 히스토리-버퍼를 나타내는 카운트 필드 및 변위를 포함하는 COPY_POINTER로 인코딩하는 수단; 및
    c) 상기 데이터 압축기로부터의 상기 출력 시퀀스가 LITERAL_POINTER 및 COPY_POINTER 사이에서 교호하는 포인터의 스트링을 포함하도록 상기 입력 데이터 스트림으로부터 연속 데이터 바이트를 LITERAL_POINTER 및 COPY_POINTER의 순서가 교호하는 방식으로 인코딩하는 수단
    을 포함하는 데이터 압축기.
  10. 제 9항에 있어서,
    상기 LITERAL_POINTER가 LITERAL_COUNT 필드와 그 뒤에 이어지는 대응되는 개수의 LITERAL_DATA 심볼을 포함하는 데이터 압축기.
  11. 제 10항에 있어서,
    상기 LITERAL_COUNT가 고정 길이를 갖는 데이터 압축기.
  12. 제 10항에 있어서,
    상기 LITERAL_COUNT가 2 비트인 데이터 압축기.
  13. 제 10항에 있어서,
    상기 LITERAL_COUNT가 가변 길이를 갖는 데이터 압축기.
  14. 제 10항에 있어서,
    상기 LITERAL_COUNT가 1 비트 또는 2 비트인 데이터 압축기.
  15. 제 9항에 있어서,
    상기 카운트 필드가 가변 길이를 갖는 데이터 압축기.
  16. 제 15항에 있어서,
    상기 카운트 필드가 2 내지 12 비트인 데이터 압축기.
  17. 히스토리-버퍼를 사용하여 포인터의 출력 시퀀스를 생성하기 위해 소스 심볼의 입력 데이터 스트림을 인코딩하는 프로그램 소프트웨어 제품에 있어서,
    a) 상기 입력 데이터 스트림의 시작 부분을 상기 데이터 스트림으로부터 적 어도 한 개의 데이터 바이트를 포함하는 LITERAL_POINTER로 인코딩하 는 프로그램 코드 수단;
    b) 상기 입력 데이터 스트림의 후속 부분을 상기 히스토리-버퍼를 나타 내는 카운트 필드 및 변위를 포함하는 COPY_POINTER로 인코딩하는 프 로그램 코드 수단; 및
    c) 상기 데이터 압축기로부터의 상기 출력 시퀀스가 LITERAL_POINTER 및 COPY_POINTER 사이에서 교호하는 포인터의 스트링을 포함하도록 상기 입력 데이터 스트림으로부터 연속 데이터 바이트를 LITERAL_POINTER 및 COPY_POINTER의 순서가 교호하는 방식으로 인코딩하는 프로그램 코드 수단
    을 포함하는 프로그램 소프트웨어 제품.
  18. 제 17항에 있어서,
    상기 LITERAL_POINTER가 LITERAL_COUNT 필드와 그 뒤에 이어지는 대응되는 개수의 LITERAL_DATA 심볼을 포함하는 프로그램 소프트웨어 제품.
  19. 제 18항에 있어서,
    상기 LITERAL_COUNT가 고정 길이를 갖는 프로그램 소프트웨어 제품.
  20. 제 18항에 있어서,
    상기 LITERAL_COUNT가 가변 길이를 갖는 프로그램 소프트웨어 제품.
KR1019980036943A 1997-09-19 1998-09-08 적응형데이터압축을수행하는방법및장치 KR100353171B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/934,234 1997-09-19
US08/934,234 US5877711A (en) 1997-09-19 1997-09-19 Method and apparatus for performing adaptive data compression
US8/934,234 1997-09-19

Publications (2)

Publication Number Publication Date
KR19990029626A true KR19990029626A (ko) 1999-04-26
KR100353171B1 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 (22)

* Cited by examiner, † Cited by third party
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
US6822589B1 (en) 1999-01-29 2004-11-23 Quickshift, Inc. System and method for performing scalable embedded parallel data decompression
US6819271B2 (en) 1999-01-29 2004-11-16 Quickshift, Inc. Parallel compression and decompression system and method having multiple parallel compression and decompression engines
US7538694B2 (en) 1999-01-29 2009-05-26 Mossman Holdings Llc Network device with improved storage density and access speed using compression techniques
US6208273B1 (en) 1999-01-29 2001-03-27 Interactive Silicon, Inc. System and method for performing scalable embedded parallel data compression
US7129860B2 (en) * 1999-01-29 2006-10-31 Quickshift, Inc. System and method for performing scalable embedded parallel data decompression
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
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
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 符号化方法及び符号化装置、復号化方法及び復号化装置、記憶媒体
WO2001029972A1 (en) * 1999-10-19 2001-04-26 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

Family Cites Families (8)

* Cited by examiner, † Cited by third party
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
JP3240495B2 (ja) * 1994-09-14 2001-12-17 エー・アイ・ソフト株式会社 データの可逆符号化方法および装置、並びに、伸長装置
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

Also Published As

Publication number Publication date
EP0903866B1 (en) 2006-05-31
MY114074A (en) 2002-07-31
US5877711A (en) 1999-03-02
DE69834695D1 (de) 2006-07-06
KR100353171B1 (ko) 2002-12-26
TWM252197U (en) 2004-12-01
JPH11196000A (ja) 1999-07-21
JP3141001B2 (ja) 2001-03-05
SG65784A1 (en) 1999-06-22
DE69834695T2 (de) 2007-04-26
EP0903866A1 (en) 1999-03-24

Similar Documents

Publication Publication Date Title
KR100353171B1 (ko) 적응형데이터압축을수행하는방법및장치
US5608396A (en) Efficient Ziv-Lempel LZI data compression system using variable code fields
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
KR100314419B1 (ko) 변형렘펠-지브1을인코딩하기위한방법및장치
US7817069B2 (en) Alternative encoding for LZSS output
US5229768A (en) Adaptive data compression system
US5710562A (en) Method and apparatus for compressing arbitrary data
US5870036A (en) Adaptive multiple dictionary data compression
US7215259B2 (en) Data compression with selective encoding of short matches
US5841376A (en) Data compression and decompression scheme using a search tree in which each entry is stored with an infinite-length character string
US10587285B1 (en) Hardware friendly data compression
JPH07104971A (ja) ネットワークパケットに適用される小型辞書を用いた圧縮方法
JPH0773012A (ja) データ圧縮方法及びシステム
KR19990029322A (ko) 적응형 데이터 압축기의 데이터 압축 효율을 개선하는 방법 및 장치
WO1995019662A1 (en) Data compression apparatus and method
WO1995012248A1 (en) Efficient optimal data recompression method and apparatus
JP2536422B2 (ja) デ―タ圧縮装置及びデ―タ復元装置
JP4191438B2 (ja) データ圧縮方法およびデータ伸長方法、該方法を実施するためのコンピュータプログラム製品と電子システム
JP3266419B2 (ja) データ圧縮・伸長方式
US6819272B2 (en) System, method and computer readable medium for compressing a data sequence for partial decompressing
GB2311704A (en) Compression of arbitrary data using context modelling and entropy coding
JP2003318739A (ja) データシーケンスを圧縮するシステム、方法、およびコンピュータ読み取り可能媒体
US6522270B1 (en) Method of coding frequently occurring values
US6583736B1 (en) Bitcode sequence coding of frequently occurring values
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
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