KR20020075889A - 보다 효율적인 데이터 압축 - Google Patents

보다 효율적인 데이터 압축 Download PDF

Info

Publication number
KR20020075889A
KR20020075889A KR1020027009440A KR20027009440A KR20020075889A KR 20020075889 A KR20020075889 A KR 20020075889A KR 1020027009440 A KR1020027009440 A KR 1020027009440A KR 20027009440 A KR20027009440 A KR 20027009440A KR 20020075889 A KR20020075889 A KR 20020075889A
Authority
KR
South Korea
Prior art keywords
dictionary
match
address
data
output
Prior art date
Application number
KR1020027009440A
Other languages
English (en)
Inventor
사이먼 리차드 존스
조세 루이스 누네즈야네즈
Original Assignee
비티지 인터내셔널 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 비티지 인터내셔널 리미티드 filed Critical 비티지 인터내셔널 리미티드
Publication of KR20020075889A publication Critical patent/KR20020075889A/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/55Compression Theory, e.g. compression of random number, repeated compression
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6005Decoder aspects
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6011Encoder aspects

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

무손실 데이터 압축 시스템은 콘텐트 주소지정 가능 메모리 사전(30), 코더(38) 및 코더(38)이 출력을 받기 위해 연결된 실행 길이 인코딩 수단(39)를 포함하고, 인코딩 수단(39)은 부합이 소정의 사전 위치에서 연속적으로 발생하는 횟수, 즉 동일한 검색 튜플이 사전의 동일 주소(50)에 로딩되는 횟수를 카운팅하기 위해 배열된다. 압축은 개선된다.

Description

보다 효율적인 데이터 압축 {DATA COMPRESSION HAVING MORE EFFECTIVE COMPRESSION}
몇 년동안 손실 데이터 압축 하드웨어(lossy data compression hardware)가 이미지 및 신호 프로세싱에 이용가능했던 반면, 데이터 저장 및 데이터 전송에서 비트 당 대역폭 및 비용에 대한 상업적 압력이 증가한 결과 무손실 데이터 압축이 단지 최근에서야 관심의 대상이 되었고, 또한 데이터 부피를 감소시킴에 의해 전력 소모를 감소시키는 것이 이제 중요하다.
사전 주소(dictionary address)를 참조하여 사전을 검색하고 데이터를 인코딩하는 원리는 공지되어 있고, 상기 원리를 적용한 장치는 사전과 코더/디코더로 구성되어 있다.
EUROMICRO-22의 방법에서, 1996년 IEEE, Kjelso, Gooch, 및 Jones에 의한 "주 메모리 하드웨어 데이터 압축기의 설계 및 성능"은 X-Match 알고리즘이라는 신규한 압축 방법을 설명하고 있고, 상기 X-Match 알고리즘은 데이터의 작은 블록들을 압축하는데에 효율적이고 고속 하드웨어 구현에 적당하다.
X-Match 알고리즘은 이전에 알려진 데이터 사전을 유지하고, 사전의 엔트리(entry)를 이용하여 튜플로서 언급되는 현재 데이터 요소를 매칭하는 것을 시도하며, 부합 위치(match location)를 참조하는 더 짧은 코드로 매칭된 튜플을 대체한다. 알고리즘은 4 바이트 데이터 요소에서의 2 바이트와 같은 부분적인 부합상에서 동작한다. EUROMICRO-25의 방법에서, 1999년, IEEE, Nunez, Feregrino, Bateman 및 Jones에 의한 "X-MatchLITE FPGA 기반 데이터 압축기"는 필드 프로그램가능 게이트 어레이(FPGA) 프로토타입에서 구현되는 X-Match 알고리즘을 설명한다.
본 발명은 데이터의 무손실 압축(the lossless compression of data)에 대한 방법 및 장치에 관한 것이다.
도 1은 Nunez 등에 의해 공개된 압축기 장치의 구조를 도시한다.
도 2는 압축기 하드웨어의 구조를 보여준다.
도 3은 실행 길이 내부 인코더(run length internal encoder)를 도시한다.
도 4는 다양한 크기의 사전을 도시한다.
도 5는 실행 길이 내부 코더/디코더를 상세히 도시한다.
도 6은 압축기/압축해제기 회로를 개략적으로 도시한다.
본 발명의 목적은 공개된 장치에서 가능한 것보다 더 효율적으로 데이터를 압축할 수 있는 무손실 데이터 압축 알고리즘을 제공하는 것이다.
본 발명에 따르면, 콘텐트 주소지정 가능 메모리 사전(content addressable memory dictionary) 및 코더(coder)를 포함하는 무손실 데이터 압축 시스템은 코더의 출력을 받기 위해 연결된 실행 길이 인코딩 수단(run length encoding means)을 특징으로 하고, 상기 인코딩 수단은 소정의 사전 위치(dictionary location)에 연속적으로 발생하는 부합(match)의 횟수를 카운팅하기 위해 배열된다.
또한 본 발명에 따르면,
고정된 길이의 검색 튜플을 사전에 저장된 상기 고정된 길이를 가진 복수 개의 튜플들과 비교하는 단계;
완전 부합(full match)이나 부합들 또는 부분적인 부합(partial match)이나 부합들의 사전에서의 위치를 지시하는 단계;
임의의 복수 개의 부합들 중에서 최선 부합(best match)을 선택하는 단계; 및
상기 부합 위치 및 상기 부합 유형을 인코딩하는 단계를 포함하는 무손실 데이터 압축 방법은,
부가적인 단계인;
각각의 검색 튜플을 차례로 사전의 동일 주소로 로딩하는 단계; 및
동일한 튜플들이 연속적으로 상기 주소에 부합되는 횟수를 카운팅하는 단계를 특징으로 한다.
바람직하게 상기 동일 주소는 사전의 제 1 위치이다.
도 1에 나타난 종래 기술에서, 사전(dictionary)(10)은 콘텐트 주소지정 가능한 메모리(Content Addressable Memory; CAM)를 기초로 하고, 검색 레지스터(search register)(14)에 의해 공급된 데이터(12)를 이용하여 검색된다.사전(10)에서, 각각의 데이터 요소는 정확히 폭이 4바이트이고, 튜플로서 언급된다. 표준 폭을 가진 데이터 요소들과 관련하여, 데이터 혼합과 상관없이, 압축 동안 보장된 입력 데이터율 및 압축해제 동안 보장된 출력 데이터율이 존재한다.
사전은 현재 압축에 대해 이전에 알려진 데이터를 저장하고; 검색 레지스터(14)가 새로운 엔트리(entry)를 공급하고 부합(match)이 사전에서 발견될 때, 데이터는 부합 위치(match location)를 참조하는 더 짧은 코드에 의해 대체된다. CAM은 데이터 요소를 받아들이고 데이터 요소의 출력으로서 상기 요소의 부합 주소(match address)를 제공하는 연관 메모리(associative memory)의 형태이다. CAM 기술을 사용하여 사전(10)의 고속 검색이 가능하게 되는데, 이는 검색이 데이터가 저장된 모든 주소에서 동시에 실행되고 따라서 검색이 모든 저장된 단어에 대해 동시에 실행되기 때문이다.
X-Match 알고리즘에서, 완벽한 매칭이 필수적인 것은 아니다. 4바이트 중에서 2 또는 3 바이트의 부합일 수 있는 부분적인 부합은 또한 부합 위치와 부합 유형 코드(match type code)를 참조하는 코드에 의해 대체되고, 부합되지 않은 바이트 또는 바이트들은 문자적으로 전송되며, 모든 것은 단일 비트가 앞에 붙는다. 부분적인 부합을 이렇게 사용하는 것은 4바이트 매칭의 요구조건과 비교하여 압축률을 개선하나, 여전히 사전의 높은 처리량(throughput)을 유지한다.
부합 유형은 들어오는 튜플의 어떤 바이트들이 사전에서 발견되는지와 어떤 바이트들이 압축된 코드에 문자 그대로의 형태로 연결되어야 하는지를 지시한다. 부합되는 2, 3, 또는 4 바이트들의 서로 다른 조합에 대응하는 11개의 서로 다른부합 유형이 존재한다. 예를 들어, 0000은 모든 바이트들이 부합되었음(완전 부합)을 지시하고, 반면 1000은 바이트 0, 1, 및 2는 부합되었으나 바이트 3은 부합되지 않은 부분적인 부합을 지시하며, 압축되지 않은 문자로서 코드에 부가되어야 한다. 어떠한 부합 유형들은 다른 것들보다 더 빈번하기 때문에, 광범위한 시뮬레이션을 통해 얻은 통계를 기초로 한 정적인 허프만 코드(static Huffman code)가 부합 유형들을 코딩하기 위해 사용된다. 예를 들어, 가장 널리 행해지는 부합 유형은 0000(완전 부합)이고, 이에 대응하는 허프만 코드는 01이다. 반면에, 부분적인 부합 유형 0010(바이트 3, 2 및 0 부합)은 덜 빈번하고 따라서 이에 대응하는 허프만 코드는 10110이다. 이러한 기술은 압축을 개선시킨다.
만약, 예를 들어, 검색 튜플(search tuple)이 CAT라면, 사전은 포지션 2에 단어 SAT를 포함하고, 부분적인 부합은 (부합/실패(miss)) (위치) (부합 유형) (요구되는 문자) 포맷으로 지시될 것이고, 상기 예에서 022S, 이진 코드 0 000010 0010 1010011일 것이며, 즉 대문자 C는 부합되지 않아 시스템의 코딩 파트에 문자 그대로 전송된다.
상기 알고리즘은 의사 코드(pseudo code)로 이하와 같이 주어진다:
Set the dictionary to its initial state;
DO
{read in tuple T from the data stream;
search the dictionary for tuple T;
IF(full of partial hit)
{determine the best match location ML and the match type MT;
output '0';
output Binary code for ML;
output Huffman code for MT;
output any required literal characters of T;}
ELSE
{output '1';
output tuple T;}
IF(full hit)
{move dictionary entries 0 to ML-1 by
one location;}
ELSE
{move all dictionary entries down by
one location;}
copy tuple T to dictionary location 0;}
WHILE(more data is to be compressed);
사전(10)은 Move-To-Front 전략에 따라 배열되고, 즉, 현재 튜플은 사전의 앞부분에 배치되고 다른 튜플들은 공간을 만들기 위해 하나의 위치만큼 아래로 이동된다. 만약 사전이 가득 차게 되면, 최근 최소 사용(Least Recently Used; LRU) 방침을 적용하며, 다시 말하면, 마지막 위치를 점유하는 튜플은 단지 폐기된다.
사전은 공통 데이터(common data)를 사전에 로딩한다.
부합에 대한 코딩 함수가 세 개의 분리된 필드를 코딩하게 위해 요구된다.
즉,
(a) 사전(10)의 부합 위치; 코드들이 고정 길이 log2(DICTIONAry__SIZE)로 되어 있는 균일한 이진 코드가 사용된다.
(b) 부합 유형; 즉, 들어오는 튜플의 어느 바이트들이 사전의 위치와 부합하는가; 정적인 허프만 코드가 사용된다.
(c) 사전 엔트리와 부합하지 않고, 문자 그대로의 형태로 전송되는 임의의 여분의 문자.
도 1을 다시 참조하면, 부합 또는 부분적인 부합 또는 몇 개의 부분적인 부합은 사전(10)에 의하여 부합 결정 로직 회로(16)에 출력되고, 상기 회로는 메인 코더(main coder)(18)를 공급하며, 상기 메인 코더는 출력 어셈블러(20)에 코딩된 신호를 제공하고 상기 출력 어셈블러는 압축된 데이터 출력 신호(22)를 제공한다. 부합 결정 로직(16)과 사전(10) 사이에 연결된 시프트 제어 로직(shift control logic)(24)은 사전에 시프트 신호(shift signals)를 제공한다. 전체 회로가 단 하나의 반도체 칩상에 제공될 수 있다.
이제 도 2에 도시된 본 발명에 따른 압축기를 참조하면, 사전(30)은 CAM 기술을 기초로 하고 검색 레지스터(34)에 의해 검색된 데이터를 공급받는다. 사전은 X-Match 알고리즘에 따라 검색하고, Move To Front 전략 및 최소 최근 사용 대체(Least Recently Used Replacement) 방침에 따라 조직된다.
사전 출력은 메인 코더(38)에 연결된 부합 결정 로직 회로(36)에 연결되고, 상기 메인 코더는 '실행 길이 내부(RLI)' 코더로서 언급될 코더(39)에 신호를 제공하며, 상기 RLI 코더는 출력 어셈블러(40)에 신호를 제공한다. 어셈블러(40)는 압축된 데이터의 출력 스트림(42)를 제공한다.
데이터가 코딩되기 이전에 실행 길이 인코딩(run length encoding)을 데이터에 적용시키는 것은 공지된 반면, 실행 길이 인코더(run length encoder)가 데이터 압축 시스템의 메인 코더와 출력 어셈블러 사이에 위치함은 이전에 제안되지 않았음을 알아야 한다.
도 3은 코더 출력 및 통상적인 코딩 사건과 RLI 코딩 사건 동안 처리되는 사전 적응(adaptation)을 도시한다. 8 단계가 나타나 있는데; 각 단계에 대하여, 최상위 4 개의 사전 주소 0, 1, 2, 3(참조 번호 50, 52, 54, 56)이 좌측에 표시된 주소(58) 및 우측에 표시된 적응 벡터(adaptation vector)(60)로 나타나 있다. 각각의 위치 콘텐트는 정확히 4 바이트 길이임을 알 수 있을 것이다.
사전 주소 3(참조 번호 56)은 예약된 위치(reserved location)이고 RLI 실행(runs)에 대한 신호를 보내기 위해 사용되며; 내부 실행 카운터(internal run counter)(62)는 주소 3에 인접하여 도시되어 있다.
각각의 8 단계에서, 이전의 검색 튜플은 주소 0(참조 번호 50)에 로딩되고,이전에 저장된 데이터는 하나의 포지션 아래로 이동된다. 이것은 8 단계 내내 1로 설정된 위치 0의 오른편 상의 현재 적응 벡터에 의해 지시된다. 만약 완전 부합이 존재하지 않는다면, 마지막 위치의 데이터는 새로운 튜플을 위한 공간을 만들기 위하여 삭제된다.
사전 내에서 아래쪽을 가리키는 화살표, 예를 들어 화살표 A는 각 단계의 적응 벡터(60)의 제어하에서 각 단계의 종료시의 사전의 재배열을 지시한다.
각 단계와 관련하여, 그 단계에 대한 사전(30)의 출력을 지시하는 출력 박스(64)가 존재한다.
단계 1에서, 검색 튜플은 "at_i"이고; 주소 1(참조 번호 2)에서 완전 부합이 발견되며, 박스(64)의 출력이 이것을 지시한다. 박스 "1"의 제 1 엔트리는 부합이 발견되었음을 지시하고; 그 다음 엔트리는 부합 주소를 지시하며; 제 3 엔트리는 부합 유형, 즉 부합이 완전 부합이기 때문에 "0"을 지시한다. 제 4 엔트리는 완전 부합이어서 전송될 문자들이 없기 때문에 공백이다.
사전은 적응 벡터(60)에 따라 업데이트되고; 비트 설정 "1"은 "이전 포지션으로부터 데이터를 로딩할 것"을 지시하고 비트 설정 "0"은 "현재 데이터를 유지할 것"을 지시하며; 따라서 주소 0(참조 번호 50)에서의 엔트리는 검색 튜플 "at_i"에 의해 대체되고 주소 1(참조 번호 52)에서의 엔트리는 "the"에 의해 대체되며; 주소 2(참조 번호 54)에서의 엔트리는 변화하지 않는다.
단계 2에서, 검색 튜플은 "ry__"이고; 부합이 존재하지 않으며, 즉 실패이며; 출력 박스(64)는 부합이 존재하지 않음을 지시하고, 즉 제 1 엔트리가 "0"이고; 주소 및 부합 유형 엔트리는 공백이며, 전송되는 문자들은 "ry__"이다.
적응 벡터(60)는 화살표 A에 의해 지시되는 것처럼 사전을 업데이트 시킨다. 즉, 모든 엔트리들은 하나의 주소 아래로 이동한다.
단계 3에서, 검색 튜플은 "this"이고 부분적인 부합이 주소 2에서 발견되며; 출력 박스(64)는 부합이 존재함을 지시하고, 부합은 주소 2에 존재하고, 부합 유형은 부분적인 부합(즉, 설정은 "3"임.)이며, 전송되는 비부합 부분의 문자들은 "is"이다. 사전은 업데이트된다.
단계 4에서, 검색 튜플은 "at_i"이고, 출력 박스(64)에 지시되는 것처럼 완전 부합이 주소 2에서 발견된다.
단계 5에서, 검색 튜플은 다시 "at_i"이고, 부합은 주소 0에서 발견되며, 이것은 출력 박스(64)에서 표시된다.
동일한 튜플이 반복되었기 때문에, 이전 단계에서 0으로 설정된 상태로 있던 내부 실행 카운터(62)는 이제 1로 설정되고; 가능한 실행이 표시되나, 실행이 아직 확정되지 않았기 때문에 여전히 박스(64)에 통상적인 출력이 제공된다.
단계 6에서, 검색 튜플은 다시 "at_i"이고; 내부 실행 카운터(62)는 2로 증가한다. 이번에는 유효한 실행(valid run)이 지시되고, 출력이 존재하지 않아 출력 박스(64)가 공백이다. 또한 단계 5에 대응하는 출력은 이제 RLI 사건의 일부로서 코딩될 것이므로 RLI 코딩 레지스터로부터 비어 있다.
단계 7에서, 검색 튜플은 한 번 더 "at_i"이고, 내부 실행 카운터는 3으로 증가하며, 출력 박스(64)는 공백으로 남아 있다.
단계 8에서, 검색 튜플은 "at_v"이고; 내부 실행은 종료되었다. 부분적인 부합이 주소 0에서 발견되고; 출력 박스(64)는 부합이 주소 0에서 발견됨을 지시하며, 부합 유형은 부분적인 부합이고, 전송되는 문자는 "v"이다.
내부 실행 카운터(62)의 카운트는 이제 RLI 출력 박스(66)에 나타난 것처럼 전송된다. 부합은 주소 3(참조 번호 56), 즉 내부 실행을 위해 예약된 주소에서 발견되었고, 실행 길이는 3이었으며, 이러한 것은 8 비트 코드로서 전송된다.
비록 상기 장치는 하나의 사전 주소를 잃지만(상기 사전 주소가 RLI 코드를 알리는 신호를 보내기 위해 예약되었기 때문에), 10% 정도의 압축의 개선은 사전 크기의 한 단어 손실을 보상하는 것 이상이다.
내부 실행 길이 인코딩은 단지 완전 부합에서 동작하고 부분적인 부합에서는 동작하지 않음을 알아야 한다. 또한 데이터 4 바이트의 완전 부합이 검출될 수 있음을 알아야 한다. 이것은 단지 0들에만 민감한 실행 길이 인코더가 개시된, 앞서 언급된 Kjelso에 의한 공개에서 개시된 장치와 대조적이고; 0의 실행은 코딩 배열에서 공통적이다. 부가하여, 종래 기술 인코더는 X-Match 인코더의 어플리케이션을 선행하도록 위치하고, 즉, 그것은 X-Match 알고리즘이 적용되는 사전에 데이터가 공급되기 이전에, 들어오는 데이터상에 동작하였다. 본 발명의 장치에서, 실행 길이 인코딩은 사전 코딩에 통합되고 사전 코딩을 선행하지 않는다.
본 발명의 장치는 두 가지 뚜렷한 특징을 갖는데; 제 1 특징은 그것의 콘텐트가 단일 주기에서 검색될 수 있고, 여분의 로직이 종래의 콘텐트 주소지정 가능 메모리에 부가되어 상기 콘텐트 주소지정 가능 메모리가 동일한 연속 입력 시퀀스를 검출할 수 있게 하는 것이며; 이것은 아직 사전 데이터의 저장에 이용되지 않은 사전 주소의 전송에 의해 달성되고; 이러한 것은 앞에서 설명되었다. 제 2 특징은 사전 크기 및 다수의 연속 입력 시퀀스를 지시하는 코드가 사전 안으로 들어오는 새로운 데이터 아이템의 수에 기초하여 동적으로 변화한다는 것이고; 달리 말하자면 사전의 크기가 변화한다는 것이다.
이것은 도 3과 동일한 사전 특징을 나타내는 도 4에 도시되어 있고, 또한 8 개의 사전 위치(50-56 및 51-57)를 나타낸다. 단계 1에서, 모든 사전 위치들은 동일한 데이터 값으로 설정되고, 부가적인 "사전 위치 유효" 로직을 요구하지 않으면서 제 1 위치(50) 아래의 모든 사전 위치가 무효임을 사실상 선언한다. 그 이유는 사전 검색 동안 다수의 완전 부합의 경우에, 최선의 부합 결정 로직은 항상 사전의 최상위에 더 근접한 부합을 선택하여, 최상부 이하의 모든 위치들을 무효로 한다. 예시에서 위치들은 모두 0으로 설정된다.
제 1 단계에서, 코드 단어 북(code word book)은 제 1 위치(50)에 대응하고 RLI 위치에 대응하는 단지 2 개의 값을 갖고, 상기 RLI 위치는 이 단계에서 위치(52)에 있다.
만약, 예를 들어, 사전에 대한 입력 데이터가 모든 값이 0인 데이터 1020 바이트로 구성된다면, 사전은 길이로 성장하지 않고, RLI 코드는 전체 1020 바이트에 대한 255 튜플의 실행을 코딩하기 위해 한 번 활성화될 것이다. 실행은 도 3을 참조하여 설명된 것처럼 RLI 카운터(62)에 의해 카운팅된다.
코더의 출력은: 0111111111(10 비트) 일 것이다.
0=>부합 1 =>사전 위치(단지 두 개의 유효 위치) 11111111=>255 실행 길이.
단계 1에서, 검색 튜플은 at_i이고, 그것은 문자 그대로 출력된다.
단계 2에서, "at_i"는 사전 위치(50)에 저장되고, 검색 튜플은 "ry__"이며; 사전은 이제 3 개의 유효 위치를 갖고, RLI 실행을 알리는 신호를 보내기 위해 예약된 위치는 위치(52)로부터 위치(54)로 이동된다.
단계 3에서, 검색 튜플은 "this"이고 4 개의 유효 위치가 존재한다. 단계 4에서, 검색 튜플은 "at_i"이고 5 개의 유효 위치가 존재하며, 예약된 위치는 이제 위치(51)에 있다.
단계 5, 단계 6, 단계 7, 및 단계 8는 반복되는 튜플의 효과를 표시하고, 사전은 5 유효 위치의 길이로 남아 있으며 예약된 위치는 51인 상태로 남아 있다.
만약, 단계 8 이후에, 새로운 검색 튜플이 제공된다면, 사전은 그것을 저장하기 위해 크기 면에서 성장할 것이다.
RLI&PBC(Phased Binary Coding)의 결합에 의해 가능한 최대 압축 비율은 10/(1020*8)=0.00122(819:1)이다. 물론 이것은 블록의 전체 길이 동안 데이터 바이트가 그 자체를 반복할 때에만 얻을 수 있는 이론적인 최대 한계이나, 내부 실행 길이 코더에 앞부분 성장 사전 모델으로의 이동(move to front growing dictionary model)을 더하여 결합한 이점을 보여준다. 일반적으로 RLI는 사전이 완전이 가득 차지 않는 한 그것의 이점 PBC를 사용할 것이고, 2를 초과한 길이의 실행이 발생한다. 만약 모든 사전 위치들이 유효하다면, PBC 또는 UBC(Uniform Binary Coding)을 사용하는 것은 동일한 결과를 낳는다. 또다른 무프리픽스(prefix-free) 코딩기술이 PBC를 대체하기 위해 사용될 수 있고 동일한 원리가 Rice 코딩 또는 Phased Huffman Coding과 같은 것을 응용하며, 상기 코딩에서 사전의 소수부(fraction)가 처음에 유효하다.
상기 알고리즘이 의사 코드로 이하에 주어진다:
Set the dictionary to its initial state;
Set the next free location counter=2;
Run length count=0;
DO
{
read in tuple T from the data stream;
search the dictionary for tuple T;
IF(full hit at location zero)
{
increment run length count by one;
}
ELSE
{
IF(run length count=1)
{
output "0";
output phased binary code for ML 0;
output Huffman code for MT 0;
}
IF(run length count>1)
{
output "0"
output phased binary code for ML NEXT_FREE_LOCATION-1;
output Binary code for run length;
}
set run length count to 0;
IF(full or partial hit)
{
determine the best match location ML and the match type MT;
output "0"
output phased binary code for ML;
output Huffman code for MT;
output any required literal characters of T;
}
ELSE
{
output "1";
output tuple T;
}
}
IF(full hit)
move dictionary entries 0 to ML-1 by one location
ELSE
{
move all dictionary entries down by one location;
increase next free location counter by one;
}
copy tuple T to dictionary location 0;
}
WHILE(more data is to be compressed);
도 5는 RLI 코더와 RLI 디코더의 동작을 도시한다.
압축 동안, 도 3을 참조하여 설명된 것처럼, 카운터(62)는 위치(0)에서 완전 부합에 의해 활성화되고; 카운터는 0에서 연속 완전 부합이 검색되고 있는 동안 카운팅 가능한 상태로 남아 있다. 실행이 종료할 때, 카운트는 부합을 지시하는 0 및 사전의 마지막 활동 포지션에 대응하는 예약된 포지션에 의해 형성된 RLI 코드의 나머지에 연결된다.
압축해제 동안, 카운터(62)에는 RLI코드로부터 카운트가 로딩되고 그 다음에 0에서 시작하여 로딩된 값에 도달할 때까지 카운팅하기 시작한다. 카운트 값에 도달하지 않는 동안 RLI 디코더의 출력은 위치(0)에서 완전 부합이다.
RLI 코더(39)는 RLI 코딩 레지스터(70)와 RLI 코딩 제어 유닛(72)을 포함하고, 상기 RLI 코딩 제어 유닛은 RLI 카운터(62)(도 3 참조)에 연결된다. 카운터(62)는 8 비트 레지스터이고 압축과 압축해제 양자에 대해 공통적이다. 8 비트 카운터(62)는 RLI 디코더(76)의 RLI 디코딩 제어 유닛(74)에 연결되고, 상기 RLI 디코더(76)는 또한 RLI 디코딩 레지스터(78)를 포함한다.
RLI 코딩 레지스터(70)는 코드가 RLI 코딩 제어 유닛(72)에 액세스하기 전에 코드를 버퍼링하고; 유닛(72)은 RLI 코딩 프로세스를 제어하고 압축이 정상적으로 동작하고 있는지 또는 실행 길이 코딩 사건이 발생하고 있는지에 따라 정확한 코드/코드 길이 쌍을 출력한다.
RLI 코더(39)가 작동하게 될 때, RLI 코딩 레지스터는 이전의 코드로부터 비어 있고, 실행이 발생하는 동안 출력은 동결된다.
RLI 디코더(76)에서, RLI 디코딩 제어 유닛(74)은 RLI 코딩 제어 유닛(72)에 대해 보완적인 함수를 갖고; 유닛(74)은 회로가 정상적으로 동작하고 있는지, 즉 개별 바이트 상에, 또는 실행 길이 디코딩이 발생하고 있는지에 따라 정확한 부합위치/부합 유형을 출력한다.
RLI 디코딩 레지스터(78)는 RLI 코딩 레지스터(70)와 동일한 기능을 갖는다.
8 비트 RLI 카운터(62)는 패턴이 255회를 초과하여 반복하는지에 대한 오버플로우 조건을 검출하기 위한 임의의 특별한 기술을 사용하지 않는다. 카운터는 단순히 0으로 되돌아 오고, 상기 조건은 실행 종료시 RLI 제어 로직(72)에 의해 검출되며, 실행 길이 코드가 출력된다. RLI 코드 사건 이후의 다음 코드는 패턴이 계속하여 반복할 때라도 항상 정상 코드(normal code)이다. 계속된 반복으로, 카운터(62)는 1이라는 카운트를 다시 초과하고 실행 길이 검출 신호는 재활성화된다.
압축해제 동안, 어떤 2 개의 RLI 코드도 연속될 수 없다는 사실은 RLI 카운트를 RLI 디코더(76)로 단지 한 번 로딩하기 위해 사용된다. 이러한 동작 모드는 RLI 제어 유닛을 단순화시킨다.
상세한 코더/디코더 회로는 도 6에 도시되어 있다.
압축되지 않은 데이터(32)가 CAM 사전(30)에 공급되고, 사전 출력, 즉 부합이 발견되는 사전 주소의 지시, 또는 부합되지 않은 바이트나 바이트들에 더한 부분적인 부합의 주소가 우선 순위 로직 회로(priority logic circuit)(80)에 공급되며, 상기 우선 순위 로직 회로는 사전에서 가능한 부합의 서로 다른 유형, 완전 부합, 부분적인 부합 또는 실패 각각에 서로 다른 우선 순위를 할당하고 부합 결정 로직 회로(82)에 그 결과를 공급한다. 회로(82)는 우선 순위 정보를 사용한 압축에 대한 최선으로서 부합들 중 하나를 선택하기 위해 우선 순위 유형을 사용하고 메인 코더(38)에 신호를 공급한다.
메인 코더(38)는 앞서 참조된 종래 기술에서 설명된 것처럼, 일정한 이진 코드(uniform binary code)를 부합 위치에, 정적인 허프만 코드를 부합 유형에 할당하기 위해 동작하고, 임의의 필수적인 바이트를 문자 형태로 연결한다. 압축된 출력이 도 4를 참조하여 설명된 것처럼 RLI 코더(39)에 공급된다. 이러한 신호는 메인 코더에 의해 생산되나 간략화를 위해 다이어그램에 도시하지 않았다. RLI 코더 출력은 비트 어셈블리 로직(bit assembly logic)(40)에 전달되고, 상기 비트 어셈블리 로직은 64 비트를 초과하는 압축된 데이터가 내부 버퍼(미도시)에서 유효할 때마다 새로운 64 비트 압축된 출력을 메모리에 기록한다. 출력은 압축된 코드(42)이다.
우선 순위 로직 회로(80)로부터 나온 출력은 또한 아웃 오브 데이트 적응(out-of-date adaptation; ODA) 로직 회로(84)에 공급되고, 이러한 것은 본 출원과 동일자에 출원되고 같이 출원 계속중인 특허 출원 번호 GB 0001711.1에 기재되어 있다. ODA 회로(84)의 출력은 이동 발생 로직 회로(move generation logic circuit)(44)에 연결되고, 상기 이동 발생 로직 회로는 부합 유형 및 부합 위치에 따라 (도 3에 적용된 적응 벡터처럼) 이동 벡터(move vector)를 발생시킨다. 이동 발생 로직(44)은 또한 ODA 로직 회로(84)에 피드백 신호를 제공한다. (NB 아웃 오브 데이트 적응은 간략화를 위해 도 3에 도시하지 않았다.)
압축해제를 위하여, 압축된 입력(90)은 비트 디스어셈블리 로직 회로(bit disassembly logic circuit)(92)에 공급되고 상기 비트 디스어셈블리 로직 회로는 압축해제 동작 이후에 33 비트 미만이 내부 버퍼(미도시)에 유효하게 남아 있을 때마다 메모리로부터 새로운 64 비트 압축된 벡터를 판독한다. 압축된 벡터는 메인 디코더(94)에 공급되고, 상기 메인 디코더는 부합 위치 및 부합 유형을 임의의 유구되는 문자 그대로의 캐릭터(character)들과 함께 디코딩하고 임의의 가능한 RLI 코드를 검출한다. 디코더(94)는 RLI 디코더(76)에 연결되고 상기 RLI 디코더(76)는 그것의 실행 디코딩된 출력을 ODA 로직 회로(84)에, 또한 튜플 어셈블리 회로(96)에 공급한다.
CAM 사전(30)은 튜플 어셈블리 회로(96)에 공급된 4 바이트 폭(wide) 단어들을 재생성하기 위해 디코딩된 입력 상에서 동작하고; 상기 튜플 어셈블리 회로(96)는 압축해제된 데이터(98)를 공급하고, 압축해제된 데이터는 코드에 존재하는 임의의 문자 그대로의 캐릭터에 더하여 사전(30)으로부터 나온 정보를 사용하여 어셈블링된 튜플들을 포함한다.
본 발명에 따른 실행 길이 내부 코딩의 출원은 압축 개선을 달성하기 위해 알아냈고, 상기 압축 개선은 압축 속도상에는 아무런 영향이 없거나 거의 영향이 없이 10% 정도 된다. 이러한 개선은 32 비트 패턴과 같은, 임의의 반복 패턴의 효율적인 실행 길이 인코딩으로부터 나온 것이다. 가장 공통적인 반복 패턴은 0들의 실행이나, 다른 것들은 텍스트 파일의 공백 문자(space character) 또는 그림의 일정한 배경색과 같은 것이 가능하다. 본 발명의 출원은 비영 문자(non-zero character)들과 같은 것의 효율적인, 무손실 코딩 및 디코딩을 가능하게 한다.
최근 최소 사용 사전 유지 방침은 임의의 반복적인 패턴이 사전(30)의 포지션 0에 위치하도록 한다. 실행 길이 내부 코딩은 포지션 0에 두 번 이상 완전 부합된 임의의 벡터를 검출하고 코딩한다.
상기 장치는 실행 길이 인코더를 압축 시스템의 사전 앞에 위치시킴과 비교하여 압축 이점을 제공하는데 그 이유는 그것이 사전 로직을 사용하기 때문이며, 구조(architecture)의 더 높은 수준의 통합 때문에 복잡성은 최소로 유지된다.
CAM 사전(30)은 15, 31, 또는 63 단어를 가질 수 있고, 하나의 포지션은 RLI사건들을 위해 이전에 예약된다. 사전이 더 클수록 압축은 개선되나 복잡성이 현저히 증가한다.
압축되지 않은 데이터 출력(data-out)(98)은 데이터 입력(data-in)(32)과 동일하다. 아무런 손실이 존재하지 않는다.
본 발명은 데이터의 작은 블록들이 압축되기로 되어 있을 때 응용을 발견하기 쉽다.

Claims (10)

  1. 콘텐트 주소지정 가능 메모리 사전(content addressable memory dictionary)(30) 및 코더(coder)(38)를 포함하는 무손실 데이터 압축 시스템으로서,
    상기 코더(38)의 출력을 받기 위해 연결된 실행 길이 인코딩 수단(run length encoding means)(39)을 포함하고,
    상기 인코딩 수단(39)이 소정의 사전 위치(dictionary location)에 연속적으로 발생하는 부합(match)의 횟수를 카운팅하기 위해 배열된 것을 특징으로 하는 무손실 데이터 압축 시스템.
  2. 제 1항에 있어서,
    상기 사전(30)이 각각의 검색 단계에서 검색 튜플(search tuple)이 상기 사전의 동일한 주소(50)로 로딩되도록 배열된 것을 특징으로 하는 무손실 데이터 압축 시스템.
  3. 제 2항에 있어서,
    상기 실행 길이 인코더 레지스터 수단(39)은 동일한 검색 튜플이 사전(30)의 동일한 주소(50)로 로딩되는 횟수를 카운팅하기 위해 배열된 것을 특징으로 하는 무손실 데이터 압축 시스템.
  4. 제 2항 또는 제 3항에 있어서,
    상기 사전(30)의 부가적인 주소(56)가 검색 튜플이 반복되는 횟수를 지시하기 위하여 예약되는 것을 특징으로 하는 무손실 데이터 압축 시스템.
  5. 제 4항에 있어서,
    상기 부가적인 주소가 상기 사전의 크기에 따라 변화하는 것을 특징으로 하는 무손실 데이터 압축 시스템.
  6. 제 1항 내지 제 5항 중 어느 하나의 항에 있어서,
    상기 사전(30)은 모두 정확히 동일한 길이를 가진 데이터 요소를 유지하도록 배열되고, 각각의 사전 엔트리(entry)는 다수 개의 데이터 요소들을 유지하는 것을 특징으로 하는 무손실 데이터 압축 시스템.
  7. 제 6항에 있어서,
    각각의 사전 엔트리가 4 개의 데이터 요소들을 유지하는 것을 특징으로 하는 무손실 데이터 압축 시스템.
  8. 제 1항 내지 제 7항 중 어느 하나의 항에 있어서,
    연속적인 부합들이 사전 데이터의 저장을 위해 아직 이용되지 않은 사전 주소의 전송에 의해 지시되는 것을 특징으로 하는 무손실 데이터 압축 시스템.
  9. 콘텐트 주소지정 가능 메모리 사전(30) 및 디코더(94)를 포함하는 무손실 데이터 압축해제 시스템으로서,
    디코더(94)의 출력을 받기 위해 연결된 실행 길이 디코더 레지스터 수단(run length decoder register means)(76)을 특징으로 하는 무손실 데이터 압축해제 시스템.
  10. 고정된 길이의 검색 튜플을 사전에 저장된 상기 고정된 길이를 가진 복수 개의 튜플들과 비교하는 단계;
    완전 부합(full match)이나 부합들 또는 부분적인 부합(partial match)이나 부합들의 사전에서의 위치를 지시하는 단계;
    임의의 복수 개의 부합들 중에서 최선 부합(best match)을 선택하는 단계; 및
    상기 부합 위치 및 상기 부합 유형을 인코딩하는 단계를 포함하는 무손실 데이터 압축 방법으로서,
    부가적인 단계인;
    각각의 검색 튜플을 차례로 상기 사전의 동일 주소로 로딩하는 단계; 및
    동일한 튜플들이 연속적으로 상기 주소에 부합되는 횟수를 카운팅하는 단계를 특징으로 하는 무손실 데이터 압축 방법.
KR1020027009440A 2000-01-25 2001-01-22 보다 효율적인 데이터 압축 KR20020075889A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GBGB0001707.9A GB0001707D0 (en) 2000-01-25 2000-01-25 Data compression having more effective compression
GB0001707.9 2000-01-25
PCT/GB2001/000230 WO2001056168A1 (en) 2000-01-25 2001-01-22 Data compression having more effective compression

Publications (1)

Publication Number Publication Date
KR20020075889A true KR20020075889A (ko) 2002-10-07

Family

ID=9884318

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020027009440A KR20020075889A (ko) 2000-01-25 2001-01-22 보다 효율적인 데이터 압축

Country Status (8)

Country Link
US (2) US6667699B2 (ko)
EP (1) EP1252715A1 (ko)
JP (1) JP2003521189A (ko)
KR (1) KR20020075889A (ko)
AU (1) AU2001226952A1 (ko)
CA (1) CA2398062A1 (ko)
GB (1) GB0001707D0 (ko)
WO (1) WO2001056168A1 (ko)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0102572D0 (en) * 2001-02-01 2001-03-21 Btg Int Ltd Apparatus to provide fast data compression
WO2003003584A1 (en) * 2001-06-29 2003-01-09 Netcontinuum, Inc. System and method for data compression using a hybrid coding scheme
US20040022312A1 (en) * 2002-07-31 2004-02-05 Jones Simon R. Lossless data compression
WO2005089397A2 (en) * 2004-03-16 2005-09-29 Advanced Tracking Technologies, Inc. Geographic information data base engine
US20060184832A1 (en) * 2005-02-11 2006-08-17 International Business Machines Corporation Method and apparatus for achieving high cycle/trace compression depth by adding width
US7596729B2 (en) * 2006-06-30 2009-09-29 Micron Technology, Inc. Memory device testing system and method using compressed fail data
WO2009022531A1 (ja) 2007-08-13 2009-02-19 Nec Corporation データ圧縮伸張方法
US8417730B2 (en) * 2008-04-14 2013-04-09 Objectif Lune Inc. Block compression algorithm
US7870160B2 (en) * 2008-04-14 2011-01-11 Objectif Lune Inc. Block compression algorithm
FR2933793B1 (fr) * 2008-07-11 2013-07-05 Canon Kk Procedes de codage et de decodage, par referencement, de valeurs dans un document structure, et systemes associes.
US9438413B2 (en) * 2010-01-08 2016-09-06 Novell, Inc. Generating and merging keys for grouping and differentiating volumes of files
US9298722B2 (en) * 2009-07-16 2016-03-29 Novell, Inc. Optimal sequential (de)compression of digital data
US9292594B2 (en) 2010-03-10 2016-03-22 Novell, Inc. Harvesting relevancy data, including dynamic relevancy agent based on underlying grouped and differentiated files
US8782734B2 (en) * 2010-03-10 2014-07-15 Novell, Inc. Semantic controls on data storage and access
US8832103B2 (en) 2010-04-13 2014-09-09 Novell, Inc. Relevancy filter for new data based on underlying files
US9372887B2 (en) 2010-12-28 2016-06-21 International Business Machines Corporation Compression ratio improvement by lazy match evaluation on the string search CAM
CN103283149B (zh) * 2010-12-28 2016-05-11 国际商业机器公司 用于处理数据元素序列的装置和方法
US9798732B2 (en) 2011-01-06 2017-10-24 Micro Focus Software Inc. Semantic associations in data
US8732660B2 (en) 2011-02-02 2014-05-20 Novell, Inc. User input auto-completion
US8442986B2 (en) 2011-03-07 2013-05-14 Novell, Inc. Ranking importance of symbols in underlying grouped and differentiated files based on content
US9323769B2 (en) 2011-03-23 2016-04-26 Novell, Inc. Positional relationships between groups of files
WO2013180732A1 (en) * 2012-06-01 2013-12-05 Hewlett-Packard Development Company, L.P. Merging data from a source location into a target location
US8947270B2 (en) 2013-06-29 2015-02-03 Intel Corporation Apparatus and method to accelerate compression and decompression operations
CN104124981A (zh) * 2014-06-26 2014-10-29 陕西凯鑫源科技有限公司 用于对车联网大量信息的存储及传输的k复游程编码方法
US9691483B1 (en) * 2016-09-20 2017-06-27 Hewlett Packard Enterprise Development Lp Content addressable memory with banks
US11122095B2 (en) 2019-09-23 2021-09-14 Netapp, Inc. Methods for dictionary-based compression and devices thereof
JP2021145281A (ja) 2020-03-13 2021-09-24 キオクシア株式会社 圧縮装置、伸張装置及び方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5473326A (en) * 1990-12-14 1995-12-05 Ceram Incorporated High speed lossless data compression method and apparatus using side-by-side sliding window dictionary and byte-matching adaptive dictionary
US5389922A (en) * 1993-04-13 1995-02-14 Hewlett-Packard Company Compression using small dictionaries with applications to network packets
US5521597A (en) * 1993-08-02 1996-05-28 Mircosoft Corporation Data compression for network transport
WO1995018996A2 (en) 1993-12-30 1995-07-13 Connectix Corporation Lossless data compression system and method
US5701125A (en) * 1994-06-15 1997-12-23 The United States Of America As Represented By The United States Department Of Energy Method for compression of data using single pass LZSS and run-length encoding
US5889818A (en) 1994-06-24 1999-03-30 Norand Corporation Adaptive display refresh and data compression in a radio frequency environment
US5861827A (en) * 1996-07-24 1999-01-19 Unisys Corporation Data compression and decompression system with immediate dictionary updating interleaved with string search
US6075470A (en) * 1998-02-26 2000-06-13 Research In Motion Limited Block-wise adaptive statistical data compressor
US6169499B1 (en) * 1999-06-19 2001-01-02 Unisys Corporation LZW data compression/decompression apparatus and method with embedded run-length encoding/decoding

Also Published As

Publication number Publication date
JP2003521189A (ja) 2003-07-08
US20030095055A1 (en) 2003-05-22
US6667699B2 (en) 2003-12-23
US20040189494A1 (en) 2004-09-30
AU2001226952A1 (en) 2001-08-07
CA2398062A1 (en) 2001-08-02
GB0001707D0 (en) 2000-03-15
WO2001056168A1 (en) 2001-08-02
US6906645B2 (en) 2005-06-14
EP1252715A1 (en) 2002-10-30

Similar Documents

Publication Publication Date Title
KR20020075889A (ko) 보다 효율적인 데이터 압축
US5406279A (en) General purpose, hash-based technique for single-pass lossless data compression
US5729228A (en) Parallel compression and decompression using a cooperative dictionary
KR100318780B1 (ko) 데이터압축모드간스위칭방법및장치
US5710562A (en) Method and apparatus for compressing arbitrary data
US6195026B1 (en) MMX optimized data packing methodology for zero run length and variable length entropy encoding
KR100331351B1 (ko) 이진입력데이터스트림압축방법
US20040022312A1 (en) Lossless data compression
US5877711A (en) Method and apparatus for performing adaptive data compression
KR100314419B1 (ko) 변형렘펠-지브1을인코딩하기위한방법및장치
US6310563B1 (en) Method and apparatus for enhanced decompressor parsing
JPH10341165A (ja) 少量データへの適応を加速するデータ圧縮方法
US6765509B2 (en) Data compression having improved compression speed
EP0079442B1 (en) Data translation apparatus translating between raw and compression encoded data forms
US5701126A (en) High speed variable length decoder
GB2311704A (en) Compression of arbitrary data using context modelling and entropy coding
US5745603A (en) Two dimensional context model obtained without a line buffer for arithmetic coding
US20040119615A1 (en) Apparatus to provide fast data compression
US6522270B1 (en) Method of coding frequently occurring values
US6583736B1 (en) Bitcode sequence coding of frequently occurring values

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid