KR100702428B1 - 데이터 압축 방법 및 회로 - Google Patents

데이터 압축 방법 및 회로 Download PDF

Info

Publication number
KR100702428B1
KR100702428B1 KR1020047017465A KR20047017465A KR100702428B1 KR 100702428 B1 KR100702428 B1 KR 100702428B1 KR 1020047017465 A KR1020047017465 A KR 1020047017465A KR 20047017465 A KR20047017465 A KR 20047017465A KR 100702428 B1 KR100702428 B1 KR 100702428B1
Authority
KR
South Korea
Prior art keywords
bytes
comparison unit
data string
history buffer
buffer
Prior art date
Application number
KR1020047017465A
Other languages
English (en)
Other versions
KR20040104675A (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 KR20040104675A publication Critical patent/KR20040104675A/ko
Application granted granted Critical
Publication of KR100702428B1 publication Critical patent/KR100702428B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • 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
    • 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

Landscapes

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

Abstract

본 발명은 데이터 문자열을 LZ1 압축하는 방법(300) 및 장치에 관한 것인데, 여기서 다중 입력 심볼은 다음과 같은 단계로 히스토리 버퍼와 병렬로 비교된다: 상기 데이터 문자열의 제1 바이트 시퀀스를 입력 버퍼에 유지하는 단계(140); 상기 데이터 문자열의 제2 바이트 시퀀스를 히스토리 버퍼에 유지하는 단계(110, 120); 상기 입력 버퍼와 상기 히스토리 버퍼에 결합되고, 복수의 비교 유닛(200)의 로우 및 컬럼을 구비하는 매트릭스 비교 수단에서 상기 입력 버퍼에 유지된 바이트를 상기 히스토리 버퍼에 유지된 바이트와 비교하는 단계(170)로서, 상기 히스토리 버퍼의 바이트는 상기 매트릭스 비교 수단 내의 대각선 방향으로 배치된 비교 유닛에 결합되는 것인 비교 단계; 각 로우마다 그 로우의 비교 유닛 및 동일한 컬럼의 이전 비교 유닛에서 최대수의 연속 바이트 일치가 일어난 컬럼을 검출하는 단계(150); 상기 검출 단계(150)에서 검출된 일치 바이트 시퀀스를 토큰으로서 인코딩하는 단계(160).

Description

데이터 압축 방법 및 회로{METHOD AND CIRCUIT FOR DATA COMPRESSION}
본 발명은 데이터 압축에 관한 것으로서, 특히 "LZ1" 데이터 압축에 관한 것이다.
데이터 압축 분야에 있어서 LZ(Lempel-Ziv) 알고리즘은 잘 알려져 있다. 특히, LZ1로 알려진 "히스토리 버퍼" 버전은 코딩된 데이터의 무손실 압축이 요구되는 하드웨어 구현예에 있어서 특히 인기가 있는데, 그 이유는 비교적 많지 않은 버퍼 요건과 예측 가능한 성능으로도 대부분의 기술에 꽤 적합한 것으로 만들기 때문이다.
LZ1 알고리즘은 입력 문자열을 검사하여 파악한 문자의 레코드를 유지한다. 최근의 히스토리에서 이전에 발생한 문자열이 나타나면, 그 문자열을 출력 문자열에서 "토큰"(여태까지 그 문자열이 발생한 위치와 기간을 나타내는 코드)으로 대체한다. 압축기와 압축 해제기 모두 규정 길이의 "히스토리 버퍼"를 이용하는데, 그렇지 않은 경우에는 더 이상의 필요한 정보가 그것들 사이를 통과할 수 없다.
상당한 문자열에서 이전에 파악하지 못한 문자는 "리터럴(literal)"로서 코딩된다. 이것은 필요한 비트수의 확장에 해당하나, 대부분의 타입의 데이터에 있어 서는 토큰 대체(및 그에 따른 압축) 기회가 압축할 수 없는 데이터를 능가하기 때문에, 전체적인 압축이 달성된다. 통상의 압축비는 2:1에서 약 10:1의 범위 내에 있다.
수년에 걸쳐 기본 LZ1 알고리즘을 변형한 것들이 나와, 점차 개선되고 있다.
LZ1 알고리즘은 바이트 단위로 동작하기 때문에, 통상의 하드웨어 구현예에서는 입력 스트림을 압축할 때 한번에 1 바이트만을 고려한다. 각 바이트가 입력될 때, 모든 발생한 바이트에 대해서 (예컨대 콘텐트 어드레서블 메모리(Content-Addressable-Memory : CAM)를 이용하여) "히스토리 버퍼"를 탐색한다. 문자열 대체에 있어서 단일 바이트는 효율적인 후보로서 간주되지 않기 때문에, 발견된 일치들을 토큰 대체가 일어나기 전에 연속적인 일치로 증보해야만 한다.
입력되는 각 후속 바이트도 히스토리 버퍼에서 탐색되는데, 기존의 일치의 다음에 오는 일치만이 보고된다. 최종적으로, (기지의 일치에 인접하는 일치가 더 이상 발견되지 않을 때) 문자열 일치가 종결될 수 있으며, 생존한 "문자열 일치"가 코딩되어 대체된다. 일치가 길면 길수록 비트수가 더 많이 줄어든다.
1 클록 사이클 당 1 바이트를 처리하는 간단한 LZ1 알고리즘의 구현예는 현재의 주문형 반도체(application specific integrated circuit : ASIC) 기술에 있어서 통상의 클록 속도에서 약 100-200 MB/s로 제한된다. 그러나, 이것은 단일 데이터 스트림에 고대역폭을 요구하는 일부 용례(예컨대, 메모리 압축, 광 네트워크, RAID 디스크 어레이)에 있어서는 불충분한 것이다. 성능, 즉 1 초 당 압축될 수 있는 바이트수를 증가시키기 위해서는, "사이클 시간"(바이트를 입력하고 모든 일치 를 발견하는 데에 걸리는 시간)을 줄이거나, 한번에 1 이상의 바이트를 탐색할 수 있도록 CAM을 변경해야 한다. 다중 입력 CAM 설계의 어려움 때문에, 일반적으로는 CAM의 액세스 시간 및 사이클 시간을 줄이는 것에 성능 개선의 초점을 두고 있다. 물론 두가지 개선책이 서로 배타적인 것은 아니며, 사이클 시간을 줄이는 것에 더하여 다중 바이트 CAM을 사용하여 성능 개선을 얻을 수 있다.
1 사이클 당 1 이상의 바이트를 압축하려는 시도가 이전에 미국 특허 제5,771,011호 및 제5,929,791호(후자는 전자의 분할 출원)에 개시되어 있는데, 여기서는 1 사이클 당 2 바이트를 매칭한다. 이들 특허가 그 기술을 2 이상의 바이트로 확장하는 데에 필요한 단계를 나타내는 것이라고 주장하고는 있지만, 그 개시 내용은 그 실시 방법에 있어서는 불완전하고 비현실적이다. 즉, 1 사이클 당 N 바이트를 압축하는 기술에 요구되는 다수의 방정식에 대한 공식은 나타나 있지만, 이들 방정식의 유도 방법은 나타나 있지 않다. 또한, 사용하는 "원형 버퍼"를 어떻게 개조해서 1 사이클 당 다수의 입력 바이트를 처리하도록 했는지에 관해서도 어느 특허에도 나타나 있지 않다.
더 이전에 미국 특허 제5,179,378호에서는 입력 바이트를 히스토리 버퍼와 비교하는 것과는 다른 기술을 이용한다. 미국 특허 제5,179,378호는 상기 종래의 특허에서와 같이 클록 사이클마다 한번에 1 바이트를 입력하고 완전 병렬 비교(그 바이트를 히스토리 버퍼의 전체 내용과 비교)를 채용하기 보다는, 그 비교 단계 대신에 "시스톨릭 어레이(systolic Array)" 파이프라이닝을 이용하고 있다. 그러나, 이 특허의 기술은 1 사이클 당 1 이상의 입력 바이트를 처리하는 처리 속도를 달성 하지 못했을 뿐만 아니라, 심지어는 1 사이클 당 1 바이트를 완전하게 처리할 수 없는 경우도 있다.
따라서, 전술한 문제점을 해결한 데이터 압축 방법 및 장치가 요구된다.
본 발명의 제1 형태에 따라, 데이터 문자열의 제1 바이트 시퀀스를 유지하는 입력 버퍼 수단과; 데이터 문자열의 제2 바이트 시퀀스를 유지하는 히스토리 버퍼 수단과; 상기 입력 버퍼 수단과 상기 히스토리 버퍼 수단에 결합되고, 복수의 비교 유닛의 로우 및 컬럼을 구비하여, 상기 입력 버퍼 수단에 유지된 바이트를 상기 히스토리 버퍼 수단에 유지된 바이트와 비교하는 매트릭스 비교 수단으로서, 상기 히스토리 버퍼 수단의 바이트는 상기 매트릭스 비교 수단 내의 대각선 방향으로 배치된 비교 유닛에 결합되는 것인 매트릭스 비교 수단과; 각 로우마다 그 로우의 비교 유닛 및 동일한 컬럼의 이전 비교 유닛에서 최대수의 연속 바이트 일치가 일어난 컬럼을 검출하는 검출 수단과; 상기 검출 수단이 검출한 일치 바이트 시퀀스를 토큰으로서 인코딩하는 수단을 포함하는 데이터 문자열 LZ1 압축 장치가 제공된다.
본 발명의 제2 형태에 따라, 데이터 문자열의 제1 바이트 시퀀스를 입력 버퍼에 유지하는 단계와; 데이터 문자열의 제2 바이트 시퀀스를 히스토리 버퍼에 유지하는 단계와; 상기 입력 버퍼와 상기 히스토리 버퍼에 결합되고, 복수의 비교 유닛의 로우 및 컬럼을 구비하는 매트릭스 비교 수단에서 상기 입력 버퍼에 유지된 바이트를 상기 히스토리 버퍼에 유지된 바이트와 비교하는 단계로서, 상기 히스토리 버퍼의 바이트는 상기 매트릭스 비교 수단 내의 대각선 방향으로 배치된 비교 유닛에 결합되는 것인 비교 단계와; 각 로우마다 그 로우의 비교 유닛 및 동일한 컬럼의 이전 비교 유닛에서 최대수의 연속 바이트 일치가 일어난 컬럼을 검출하는 단계와; 상기 검출 단계에서 검출된 일치 바이트 시퀀스를 토큰으로서 인코딩하는 단계를 포함하는 데이터 문자열 LZ1 압축 방법이 제공된다.
도 1은 본 발명을 이용한 압축 장치에 이용되는 매트릭스 비교기의 개략적인 블록도이다.
도 2는 도 1의 압축 장치의 비교 유닛을 상세하게 나타낸 개략적인 블록도이다.
도 3은 도 1의 압축 장치의 압축 동작을 나타낸 개략도이다.
도 4는 도 1의 압축 장치에 이용되는 매트릭스 비교기의 비교 유닛의 특정 구현예를 상세하게 나타낸 개략적인 블록도이다.
이제, 첨부한 도면을 참조하여, 단지 예로서, 본 발명을 구체화한 데이터 압축 방법 및 장치에 대해서 설명한다.
다음의 바람직한 실시예는 IBM의 것으로서 "IBMLZ1"로 알려진 변형 LZ1의 환 경 하에서 설명하겠지만, 이 기술은 모든 버전의 LZ1 알고리즘에 적용 가능하다는 것을 알아야 한다. 이 기술은 1 사이클 당 임의수의 바이트로 확장 가능하거나 어떠한 길이의 히스토리 버퍼로도 확장 가능하나, 512 바이트의 히스토리 버퍼를 갖는 1 사이클 당 12 바이트 디자인을 이용하여 설명할 것이다.
이제 도 1을 참조해 보면, 압축 장치(100)는 두 그룹(L1, L2)의 512 바이트 래치(110, 120), 한 그룹의 512 캐리(carry) 래치(130), 12 바이트 입력 버퍼(140), MAX 기능/우선 순위 인코더(MFPE)(150), 토큰 인코더(160), 그리고 비교 유닛(200)이 512X12 의 매트릭스 형태로 배열되어 형성된 매트릭스 비교기(170)를 포함한다(상세한 설명은 후술).
L2 래치(120)는 매트릭스 비교기(170)의 제1 로우에 있는 512개의 비교 유닛과, 매트릭스의 하위 로우마다 우측으로 한 유닛만큼 연속적으로 대각선 방향으로 배치된 비교 유닛에 각각 결합된다(상세한 설명은 후술). L1 래치(110) 및 관련 캐리 래치(130)는 매트릭스 비교기(170)의 최하위 로우에 있는 512개의 비교 유닛에 각각 결합된다. 12 바이트의 입력 버퍼(140)는 매트릭스 비교기(170)의 가장 좌측 컬럼에 있는 12개의 로우의 비교 유닛에 각각 결합된다. MAX 기능/우선 순위 인코더(150) 및 토큰 인코더(160)는 매트릭스 비교기(170)에 있는 12개의 로우의 비교 유닛에 결합된다.
12 입력 바이트를 전체 히스토리 버퍼와 비교하여 일치하는 것이 있는지를 탐색해야 한다. 그러나, 일부 입력 바이트는 그 자체로 "히스토리"의 일부를 구성한다. 12 바이트 입력 버퍼는 모든 바이트가 1 사이클에 입력되어도 각 바이트가 연대순으로 되어 있는 것으로 가정해야 한다. 그러므로, 마치 "가장 오래된" 바이트가 먼저 처리되는 것처럼, 입력 버퍼의 일단은 "가장 최근"의 것으로, 그 타단은 "가장 오래된" 것으로 간주된다. 각 바이트는 입력 버퍼에서 "더 오래된" 것들을 히스토리의 일부로 간주하고 이에 따라서 비교해야 한다. 이때, 입력 버퍼에 유지된 바이트 시퀀스와 히스토리 버퍼에 유지된 바이트 시퀀스는 문자열 내에서 연속적일 수 있다.
입력 바이트를 히스토리 버퍼에 있는 바이트 및 입력 버퍼에 있는 더 오래된 바이트와 비교하는 방법이 도 1에 나타나 있다. 동도면의 좌측에 있는 입력 버퍼(140)를 고려해 볼 때, 종래의 방법(한번에 1 바이트씩)으로 처리한다면, 상위 바이트가 먼저 입력되고 하위 바이트가 나중에 입력된다. 그러나, 본 구현예에 있어서는 모든 바이트가 동시에 입력된다. 알 수 있는 바와 같이, 입력 버퍼의 출력(모두 12 입력 바이트)은 매트릭스 비교기(170)의 각 로우에 있는 모든 비교 유닛(200)의 입력에 접속된다. 각 클록 사이클마다 히스토리 버퍼의 내용(모두 512 바이트)이 아래로 제공되어 입력 버퍼의 제1(가장 오래된) 바이트와 비교된 후, 대각선 방향으로 아래로 가로질러 제공되어 입력 버퍼의 가장 최근의 바이트와 비교된다.
히스토리 버퍼의 모든 바이트를 한번에 이용할 수 있어야 하므로, 종래의 RAM을 히스토리 버퍼로 이용할 수 없다. 본 구현예에 있어서 히스토리 버퍼는 레벨 센서티브 스캔 디자인(level sensitive scan design : LSSD) L1-L2 쌍과 같이 구성된 레지스터로 구성된다. 각 클록 사이클의 끝에서, 12 입력 바이트는 히스토리 버퍼로 이동되고, 히스토리 버퍼의 이전의 내용은 12 바이트씩 (도 1에 도시한 바와 같이 우측으로) 이동되며, 가장 오래된 12 바이트는 폐기된다.
도 1에 자른 사각형으로 표시한 비교 유닛(200)은 이 디자인의 기본 요소이다. 비교 유닛에 대한 확대도를 도 2에 도시하였다. 각 블록의 기능은 두 입력 바이트의 값을 비교하여, 일치하는 바이트의 카운트를 계수하여, 얻은 일치를 제어 로직에 보고하는 것이다.
매트릭스 비교기(170)에 있는 비교 유닛(200)은 그 로우에서의 입력 버퍼 바이트 위치로부터의 바이트값과, 좌측과 상측의 대각선 방향의 유닛으로부터 전달된 히스토리 버퍼 바이트값을 받아 비교하도록 구성된 바이트 비교기(210)를 포함한다. 인크리멘터(220)는 매트릭스의 동일한 컬럼에서의 바로 상측의 유닛으로부터 "카운트 인" 값을 받아 "1"씩 증분시키도록 구성된다. 셀렉터(230)는 증분된 카운트값과 "0" 값을 받고 비교기(210)의 출력에 따라 어느 하나를 선택하도록 구성된다. 비교기(210)가 일치를 지시하면, 셀렉터(230)는 증분된 카운트값을 출력하고, 그렇지 않은 경우에는 "0" 값을 출력한다. 셀렉터의 출력은 "카운트 아웃" 값으로 매트릭스의 동일한 컬럼에서의 바로 하측의 유닛에 전달되고, 또한 매트릭스의 동일한 로우의 MFPE에도 전달된다. 짙은 파선으로 표시한 바와 같이, 셀렉터(210)에 입력된 바이트값은 동일한 로우에서의 바로 우측의 유닛과, 하측과 우측의 대각선 방향의 유닛에 전달된다.
도 2는 비교 유닛(200)이 비교하는 바이트 외에도, 상측의 유닛으로부터 지금까지 본 문자열의 길이를 나타내는 "카운트"와, 입력 버퍼(140)의 동일한 로우의 바이트를 입력으로 받는다. 두 입력 바이트가 일치하면, 비교 유닛은 그 카운트를 증분시켜 새로운 카운트를 그 하측의 유닛에 전달한다. 두 입력 바이트가 일치하지 않으면, 입력 카운트값에 상관없이 출력 카운트는 0으로 설정된다.
이 카운트값은 또한 각 비교 유닛의 우측으로부터 출력되어, 그 로우의 끝에 있는 MAX 기능/우선 순위 인코더(MFPE) 로직(150)에 제공된다. 압축 장치(100)의 12개의 로우마다 이들 MFPE 유닛 중 하나가 있다. MFPE의 기능은 그 로우에서 512개의 비교 유닛(200) 중에서 어떤 비교 유닛이 가장 긴 문자열(즉, 가장 큰 카운트 - MAX 기능)을 보고하였는지를 판정하고 그 로우 내에서의 위치를 인코딩하는 것이다. 가장 큰 카운트가 1 이상의 컬럼에서 나온 경우에는, MFPE는 (임의로) 가장 좌측의 값을 인코딩한다(우선 순위 인코딩 기능). 그러나, 여기서, MFPE가 생성한 값은 반드시 인코딩될 문자열인 것은 아닌데, 그 이유는 그 문자열이 그 로우의 범위를 넘어 계속될 수 있기 때문이다.
로우 12(매트릭스 비교기(170)의 최하위 로우)에 아직도 생존하는 문자열 일치는 다음 사이클까지 계속될 수 있다. 도 1의 하측에 위치한 캐리 래치(130)는 이 로우로부터 생존하는 문자열의 위치를 캐리로서 저장한다(도시하진 않았지만, 그 문자열의 길이 - "카운트" - 가 별도의 단일 레지스터에 저장된다). 캐리는 다음 사이클에서 제1 로우의 비교 유닛에 대한 "입력 카운트"에 제공된다. 여기서, LZ1 알고리즘이 인코딩하여 토큰에 비트수로 부가할 수 있는 문자열의 길이는 한정되어 있다(IBMLZ1의 경우, 271 문자). 최대수에 도달하면 토큰이 방출되고, 문자열을 0부터 시작해야 한다. 토큰 인코더(160)는 종래 기술에서 알려진 바와 같이 동작하므로, 그 구조와 기능에 대해서는 더 이상 상세하게 설명할 필요는 없을 것이다.
(MFPE(150)가 보고한) 각 로우마다 가장 큰 문자열 값과 그 인코딩된 위치는 토큰 인코더(TE)(160)에 제공된다. TE는 각 로우마다 보고된 길이를 검사하여, 이 12 입력 바이트에 있어서 어디의 문자열을 인코딩할 수 있는지를 판정한다. 문자열을 인코딩해야 하는 경우, TE는 토큰의 일부로서 MFPE가 보고한 위치를 문자열의 길이와 함께 이용한다. 여기서, 문자열의 길이는 긴 문자열이 1 이상의 사이클까지 걸쳐 있는 경우에는 12 이상으로 길어질 수도 있다. 이러한 경우에는, 그 카운트를 TE에 저장하여, 그 문자열이 끝날 때 코딩할 준비를 한다.
문자열이 발견되지 않거나(여기서, 단 하나의 바이트의 일치는 인코딩할 가치가 없음), 12 바이트의 일부가 일치하지 않는 경우에는, TE는 리터럴을 출력해야 한다. 이러한 경우에, TE는 입력 버퍼(140)로부터 직접 데이터를 취한다.
도 3은 압축 동작(300)의 속사(snapshot)이다. 이전 문장이 입력으로 사용하고, 편의상 5 입력 바이트 및 27 히스토리 버퍼 바이트만을 도시하였다. (컬럼 310, 320, 330, 340, 350에 있는) 검은 원은 일치 검출 위치를 나타낸다. 현재의 입력 바이트 "ion"에서 유용한 문자열 일치는 컬럼 320에서 볼 수 있다. 로우에서의 컬럼 320의 위치가 인코딩을 위해 전송할 위치이다.
가능한 비교 유닛의 구현예를 도 4에 도시하였다. 비교 유닛(200)(도시한 바와 같이 매트릭스 비교기(170)의 로우 3의 한 유닛)은 전술한 바와 같이 비교할 두 바이트값을 받는 비교기(410)를 포함한다. 3개의 AND 게이트(422, 424, 426)의 각각은 그 2개의 입력 중 하나가 비교기(410)의 출력을 수신하도록 접속되고, 다른 하나의 입력은 동일한 컬럼에서의 바로 상측의 비교 유닛으로부터의 3개의 비트선(3 비트 "입력 카운트" 값을 전달) 중 하나에 접속된다. AND 게이트(422, 424, 426)의 출력은 비교기(410)의 출력과 함께(4 비트 "출력 카운트" 값을 전달), 동일한 컬럼에서의 바로 하측의 비교 유닛에 접속된다. 가장 좌측 3개의 "출력 카운트" 비트선은 3개의 AND 게이트(432, 434, 436)의 입력에 각각 접속된다. AND 게이트(432, 434, 436)의 출력은 AND 게이트(426)의 출력과 함께 4 입력 OR 게이트(440)의 입력에 접속된다.
OR 게이트(440)의 출력은 (매트릭스 비교기(170)의 로우 3에 있는 다른 비교 유닛(200)의 출력과 함께) MFPE(500) 내의 512 입력 우선 순위 인코더(510)의 입력에 접속된다. 또한, AND 게이트(422, 424, 426)의 출력은 (매트릭스 비교기(170)의 로우 3에 있는 다른 비교 유닛(400)의 AND 게이트의 출력과 함께) MFPE(500) 내의 512 입력 OR 게이트(522, 524, 526)의 입력에 각각 접속된다. OR 게이트(522, 524, 526)의 출력은 매트릭스 비교기(170)의 로우 3에 있는 각 비교 유닛(400)의 AND 게이트(432, 434, 436)의 입력에 반전 접속된다.
비교기(410)는 전술한 도 2의 비교 유닛(200) 내의 비교기(210)와 동일하나, 도 4의 비교 유닛(200)에서는 N 비트 벡터에 의해 "카운트"가 유지된다. 이 벡터의 비트들은 1에서 N까지 번호가 매겨지고, 카운트 "n"은 비트 1에서 n까지가 "1"인 것을 나타낸다. 벡터의 다른 비트들은 모두 "0"이다. 따라서, 카운트 0은 모든 비트가 0인 것을 나타낸다. 이것은 이 디자인에서 유용한 카운팅 방법인데, 그 이유는 다음과 같다.
1. 필요한 비트수 N은 단지 로우 번호 만큼만 필요하다(로우 1은 단지 1 비트만, 로우 12는 12 비트만 필요로 한다).
2. 단지 "1"을 채워 우측으로 이동시킴으로써, "카운트"를 쉽게 증분시킬 수 있다.
3. 모든 벡터의 각 비트를 함께 OR 연산함으로써 MAX 기능을 쉽게 구현할 수 있다.
비교 유닛 내의 적은 수의 여분의 로직(AND 게이트(432, 434, 436) 및 OR 게이트(440)의 형태)로, 우선 순위 인코더도 쉽게 만들 수 있다.
도 4의 비교 유닛(400)의 동작은 다음과 같다. 입력 카운트는 4개의 값을 표현할 수 있는 3 비트 벡터로 나타내어진다.
벡터 지시값 지시 일치
000 0
100 1 이 컬럼의 로우 2에서 일치
110 2 이 컬럼의 로우 1, 2에서 일치
111 2 이상 이 컬럼의 로우 1, 2 및 캐리에서 일치
비교기(410)가 이 컬럼의 이 로우(로우 3)에서의 일치를 검출하면, 카운트를 증분시켜, 이 유닛의 하부로부터 4 비트 벡터 "출력 카운트"를 생성한다. 상기 카운트 증분은 효과적으로 입력 벡터를 우측으로 1 비트 이동시키고, 좌측에 "1"을 부가함으로써 달성된다. 일치가 없는 경우에는, AND 게이트(422, 424, 426)가 모두 턴오프되어 "출력 카운트"가 0으로 되어 버린다.
또한 도 4에 도시한 바와 같이, 수정된 버전의 4 비트 카운트는 그 로우의 끝에 있는 MFPE(500) 내의 로직 회로(510, 522, 524, 526)에 출력된다. 이 3개의 512 입력 OR 게이트(522, 524, 526)는 이 로우에서의 최대 카운트를 판정한다(총 1 바이트만을 나타내므로 하위 비트는 이용되지 않음). 이 최대값은 이 최대 카운트에 기여하지 않은 컬럼의 비교 유닛(200) 내의 AND 게이트(432, 434, 436)에 의해서 얻은 카운트보다 작은 모든 카운트를 실격시키는 데에 이용된다. 이 최대 카운트를 보여주는 비교 유닛들은 인코더 입력에의 입후보를 선언하고, 우선 순위 인코더는 그것들의 가장 좌측의 위치를 코딩한다. 최하위 로우의 비교 유닛 내의 OR 게이트(440)의 "win" 출력은 다음 사이클에서 저장될 512 "캐리" 비트를 포함한다.
이제까지 단일 사이클에서 일어나는 모든 동작을 설명하였지만, 이 디자인은 어떤 파이프라이닝 요소를 배제하지 않는다. 중요한 것은 각 로우의 캐리를 1 사이클에서 성공적으로 저장하여 다음 사이클의 계산에 포함시킬 준비를 해야 한다는 점이다.
임계 타이밍 경로(다음 사이클에서 유효한 캐리를 생성)는 이 경우에 12 AND 게이트(12 일치 열로부터), 512 입력 OR 게이트(몇몇 게이트는 직렬), 캐리를 위한 2 이상의 AND 게이트로 구성된다.
따라서, 총 20 게이트 지연이 이 디자인의 최대 동작 주파수를 결정한다. 12 AND 게이트 지연은 이것이 게이트 총수에 부가되더라도 룩-어헤드(look-ahead) 기술을 이용하여 줄일 수 있다.
매트릭스 비교기(170)의 하위 로우에 있는 비교 유닛(200)이 비례해서 더 많은 게이트를 갖게 되고, 게이트의 총수는 1 사이클 당 처리되는 바이트수의 자승으로 증가한다는 것을 알 수 있다.
또한, 전술한 장치 및 방법은 통상적으로 하드웨어, 예컨대 ASIC과 같은 집적 회로(도시 생략)의 형태로 구현된다는 것을 알아야 한다.
결론적으로, 전술한 설명은 게이트 총수 및 타이밍 문제로 제한되지만, 1 사이클 당 임의수의 바이트를 처리할 수 있는 LZ1 압축기를 구성하는 방법을 보여주고 있다는 것을 알아야 한다.
전술한 데이터 압축 기술은 저장 및 통신 용례 등 폭넓은 분야에 이용될 수 있다는 것을 알아야 한다.
전술한 데이터 압축 기술은 1 사이클 당 임의수의 바이트로 확장 가능하거나 어떠한 길이의 히스토리 버퍼로도 확장 가능함으로써, 원하는 대역폭에서의 동작을 제공할 수 있다(전술한 바와 같이 게이트 총수와 타이밍 문제로만 제한됨)는 이점을 가지고 있다는 것을 알아야 한다.
당업자라면 전술한 본 발명의 실시예를 다양하게 변형시킬 수 있다는 것을 알아야 한다.

Claims (22)

  1. 데이터 문자열을 압축하는 회로에 있어서,
    상기 데이터 문자열의 제1 바이트 시퀀스를 유지하는 입력 버퍼와;
    상기 데이터 문자열의 제2 바이트 시퀀스를 유지하는 히스토리 버퍼와;
    상기 입력 버퍼와 상기 히스토리 버퍼에 결합되고, 복수의 비교 유닛의 로우 및 컬럼을 구비하여, 상기 입력 버퍼에 유지된 바이트를 상기 히스토리 버퍼에 유지된 바이트와 비교하는 매트릭스 비교기로서, 상기 히스토리 버퍼의 바이트는 상기 매트릭스 비교기 내의 대각선 방향으로 배치된 비교 유닛에 결합되는 것인 매트릭스 비교기와;
    각 로우마다 그 로우의 비교 유닛 및 동일한 컬럼의 이전 비교 유닛에서 최대수의 연속 바이트 일치가 일어난 컬럼을 검출하는 검출기와;
    상기 검출기에 의하여 검출된 일치 바이트 시퀀스를 토큰으로서 인코딩하는 인코더
    를 포함하는 데이터 문자열 압축 회로.
  2. 제1항에 있어서, 상기 매트릭스 비교기는 각 비교 유닛에서, 상기 비교 유닛 및 동일한 컬럼의 이전 비교 유닛에서 일어난 연속 바이트 일치수의 카운트를 생성하는 카운터를 포함하고,
    상기 검출기는 각 로우마다 최대 카운트가 일어난 컬럼을 검출하도록 작동하는 것인 데이터 문자열 압축 회로.
  3. 제2항에 있어서, 각 비교 유닛은,
    상기 입력 버퍼로부터의 바이트와 상기 히스토리 버퍼로부터의 바이트를 비교하는 비교기와;
    동일한 컬럼의 다른 비교 유닛으로부터 카운트값을 받아 증분시키는 인크리멘터와;
    상기 비교기의 출력을 받아, 그것에 따라 상기 인크리멘터의 출력값 또는 0값을 선택하여, 동일한 컬럼의 다른 비교 유닛에 전달하는 셀렉터를 포함하는 것인 데이터 문자열 압축 회로.
  4. 청구항 4은(는) 설정등록료 납부시 포기되었습니다.
    제2항에 있어서, 각 비교 유닛은,
    상기 입력 버퍼로부터의 바이트와 상기 히스토리 버퍼로부터의 바이트를 비교하는 비교기와;
    동일한 컬럼의 다른 비교 유닛으로부터의 카운트값을 나타내는 다수의 비트를 갖는 값을 받고, 상기 비교기의 출력을 받아, 그것에 따라 상기 값을 0으로 하거나 상기 값을 이동시키고 추가 비트를 부가하여 증분시키는 제1 로직을 포함하는 것인 데이터 문자열 압축 회로.
  5. 청구항 5은(는) 설정등록료 납부시 포기되었습니다.
    제4항에 있어서, 상기 검출기는 상기 값의 비트를 입력으로서 받아 그것에 로직 OR 연산을 행하여 상기 값의 최대값을 생성하는 제2 로직을 포함하는 것인 데이터 문자열 압축 회로.
  6. 청구항 6은(는) 설정등록료 납부시 포기되었습니다.
    제1항에 있어서, 상기 히스토리 버퍼는,
    상기 매트릭스 비교기의 제1 측의 로우에 있는 비교 유닛에 결합되는 제1 레지스터와;
    상기 매트릭스 비교기의 제1 측의 반대측인 제2 측의 로우에 있는 비교 유닛에 결합되는 제2 레지스터를 포함하는 것인 데이터 문자열 압축 회로.
  7. 청구항 7은(는) 설정등록료 납부시 포기되었습니다.
    제6항에 있어서, 상기 제1 및 제2 레지스터는 동일한 레지스터 내에 레벨 센서티브 스캔 디자인(LSSD) 쌍을 포함하는 것인 데이터 문자열 압축 회로.
  8. 청구항 8은(는) 설정등록료 납부시 포기되었습니다.
    제1항에 있어서, 상기 제1 바이트 시퀀스와 상기 제2 바이트 시퀀스는 상기 데이터 문자열 내에서 연속적인 것인 데이터 문자열 압축 회로.
  9. 제1항에 있어서, 상기 입력 버퍼와 상기 히스토리 버퍼의 제1 데이터 구성의 비교를 통하여 얻은 캐리 정보를, 상기 입력 버퍼와 상기 히스토리 버퍼의 제2 데이터 구성의 비교시에 이용하기 위해서, 저장하는 캐리 로직을 더 포함하는 데이터 문자열 압축 회로.
  10. 데이터 문자열을 압축하는 방법에 있어서,
    상기 데이터 문자열의 제1 바이트 시퀀스를 입력 버퍼에 유지하는 단계와;
    상기 데이터 문자열의 제2 바이트 시퀀스를 히스토리 버퍼에 유지하는 단계와;
    상기 입력 버퍼와 상기 히스토리 버퍼에 결합되고, 복수의 비교 유닛의 로우 및 컬럼을 구비하는 매트릭스 비교기에서 상기 입력 버퍼에 유지된 바이트를 상기 히스토리 버퍼에 유지된 바이트와 비교하는 단계로서, 상기 히스토리 버퍼의 바이트는 상기 매트릭스 비교기 내의 대각선 방향으로 배치된 비교 유닛에 결합되는 것인 비교 단계와;
    각 로우마다 그 로우의 비교 유닛 및 동일한 컬럼의 이전 비교 유닛에서 최대수의 연속 바이트 일치가 일어난 컬럼을 검출하는 단계와;
    상기 검출 단계에서 검출된 일치 바이트 시퀀스를 토큰으로서 인코딩하는 단계
    를 포함하는 데이터 문자열 압축 방법.
  11. 제10항에 있어서, 상기 비교 단계는 각 비교 유닛에서 상기 비교 유닛 및 동일한 컬럼의 이전 비교 유닛에서 일어난 연속 바이트 일치수의 카운트를 생성하는 단계를 포함하고,
    상기 검출 단계는 각 로우마다 최대 카운트가 일어난 컬럼을 검출하는 단계를 포함하는 것인 데이터 문자열 압축 방법.
  12. 제11항에 있어서, 상기 비교 단계는, 각 비교 유닛에서,
    상기 입력 버퍼로부터의 바이트와 상기 히스토리 버퍼로부터의 바이트를 비교하는 단계와;
    동일한 컬럼의 다른 비교 유닛으로부터 받은 카운트값을 증분시키는 단계와;
    상기 입력 버퍼로부터의 바이트와 상기 히스토리 버퍼로부터의 바이트를 비교한 결과에 따라, 상기 증분 단계에서 증분된 카운트값이나 0값을 선택하여, 동일한 컬럼의 다른 비교 유닛에 전달하는 단계를 포함하는 것인 데이터 문자열 압축 방법.
  13. 제11항에 있어서, 상기 비교 단계는, 각 비교 유닛에서,
    상기 입력 버퍼로부터의 바이트와 상기 히스토리 버퍼로부터의 바이트를 비교하는 단계와;
    동일한 컬럼의 다른 비교 유닛으로부터의 카운트값을 나타내는 다수의 비트를 갖는 값을 받고, 상기 입력 버퍼로부터의 바이트와 상기 히스토리 버퍼로부터의 바이트를 비교한 결과에 따라, 상기 값을 0으로 하거나 상기 값을 증분시키는 단계를 포함하는 것인 데이터 문자열 압축 방법.
  14. 청구항 14은(는) 설정등록료 납부시 포기되었습니다.
    제13항에 있어서, 상기 검출 단계는 상기 값의 비트를 받아 그것에 로직 OR 연산을 행하여 상기 값의 최대값을 생성하는 단계를 포함하는 것인 데이터 문자열 압축 방법.
  15. 청구항 15은(는) 설정등록료 납부시 포기되었습니다.
    제10항 내지 제14항 중 어느 한 항에 있어서, 상기 히스토리 버퍼는,
    상기 매트릭스 비교기의 제1 측의 로우에 있는 비교 유닛에 결합되는 제1 레지스터와;
    상기 매트릭스 비교기의 제1 측의 반대측인 제2 측의 로우에 있는 비교 유닛에 결합되는 제2 레지스터를 포함하는 것인 데이터 문자열 압축 방법.
  16. 청구항 16은(는) 설정등록료 납부시 포기되었습니다.
    제15항에 있어서, 상기 제1 및 제2 레지스터는 동일한 레지스터 내에 레벨 센서티브 스캔 디자인(LSSD) 쌍을 포함하는 것인 데이터 문자열 압축 방법.
  17. 청구항 17은(는) 설정등록료 납부시 포기되었습니다.
    제10항 내지 제14항 중 어느 한 항에 있어서, 상기 제1 바이트 시퀀스와 상기 제2 바이트 시퀀스는 상기 데이터 문자열 내에서 연속적인 것인 데이터 문자열 압축 방법.
  18. 청구항 18은(는) 설정등록료 납부시 포기되었습니다.
    제10항 내지 제14항 중 어느 한 항에 있어서, 상기 입력 버퍼와 상기 히스토리 버퍼의 제1 데이터 구성의 비교로부터의 캐리 정보를, 상기 입력 버퍼와 상기 히스토리 버퍼의 제2 데이터 구성의 비교시에 이용하기 위해서, 저장하는 단계를 더 포함하는 데이터 문자열 압축 방법.
  19. 청구항 19은(는) 설정등록료 납부시 포기되었습니다.
    청구항 제1항 내지 제9항 중 어느 한 항에 기재한 회로를 포함하는 집적 회로.
  20. 청구항 20은(는) 설정등록료 납부시 포기되었습니다.
    제19항에 있어서, 상기 집적 회로는 주문형 반도체(ASIC)인 것인 집적 회로.
  21. 데이터 문자열을 압축하는 동작을 수행하기 위한 처리 장치에 의하여 실행될 수 있는 컴퓨터로 처리할 수 있는 프로그램을 구현하는 신호 기록 매체로서,
    상기 압축 동작은,
    상기 데이터 문자열의 제1 바이트 시퀀스를 입력 버퍼에 유지하는 단계와;
    상기 데이터 문자열의 제2 바이트 시퀀스를 히스토리 버퍼에 유지하는 단계와;
    상기 입력 버퍼와 상기 히스토리 버퍼에 결합되고, 복수의 비교 유닛의 로우 및 컬럼을 구비하는 매트릭스 비교기에서 상기 입력 버퍼에 유지된 바이트를 상기 히스토리 버퍼에 유지된 바이트와 비교하는 단계로서, 상기 히스토리 버퍼의 바이트는 상기 매트릭스 비교기 내의 대각선 방향으로 배치된 비교 유닛에 결합되는 것인 비교 단계와;
    각 로우마다 그 로우의 비교 유닛 및 동일한 컬럼의 이전 비교 유닛에서 최대수의 연속 바이트 일치가 일어난 컬럼을 검출하는 단계와;
    상기 검출 단계에서 검출된 일치 바이트 시퀀스를 토큰으로서 인코딩하는 단계
    를 포함하는 신호 기록 매체.
  22. 데이터 문자열을 LZ1 압축하는 회로에 있어서,
    상기 데이터 문자열의 제1 바이트 시퀀스를 유지하는 입력 버퍼 수단과;
    상기 데이터 문자열의 제2 바이트 시퀀스를 유지하는 히스토리 버퍼 수단과;
    상기 입력 버퍼 수단과 상기 히스토리 버퍼 수단에 결합되고, 복수의 비교 유닛의 로우 및 컬럼을 구비하여, 상기 입력 버퍼 수단에 유지된 바이트를 상기 히스토리 버퍼 수단에 유지된 바이트와 비교하는 매트릭스 비교 수단으로서, 상기 히스토리 버퍼 수단의 바이트는 상기 매트릭스 비교 수단 내의 대각선 방향으로 배치된 비교 유닛에 결합되는 것인 매트릭스 비교 수단과;
    각 로우마다 그 로우의 비교 유닛 및 동일한 컬럼의 이전 비교 유닛에서 최대수의 연속 바이트 일치가 일어난 컬럼을 검출하는 검출 수단과;
    상기 검출 수단에 의하여 검출된 일치 바이트 시퀀스를 토큰으로서 인코딩하는 수단
    을 포함하는 데이터 문자열 LZ1 압축 회로.
KR1020047017465A 2002-05-09 2003-01-30 데이터 압축 방법 및 회로 KR100702428B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0210604.5 2002-05-09
GBGB0210604.5A GB0210604D0 (en) 2002-05-09 2002-05-09 Method and arrangement for data compression
PCT/GB2003/000384 WO2003096543A1 (en) 2002-05-09 2003-01-30 Method and arrangement for data compression according to the lz77 algorithm

Publications (2)

Publication Number Publication Date
KR20040104675A KR20040104675A (ko) 2004-12-10
KR100702428B1 true KR100702428B1 (ko) 2007-04-04

Family

ID=9936342

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047017465A KR100702428B1 (ko) 2002-05-09 2003-01-30 데이터 압축 방법 및 회로

Country Status (12)

Country Link
US (1) US7233265B2 (ko)
EP (1) EP1506619B1 (ko)
JP (1) JP3989933B2 (ko)
KR (1) KR100702428B1 (ko)
CN (1) CN1309174C (ko)
AT (1) ATE518308T1 (ko)
AU (1) AU2003205839A1 (ko)
CA (1) CA2485566C (ko)
GB (1) GB0210604D0 (ko)
IL (1) IL164722A0 (ko)
PL (1) PL371971A1 (ko)
WO (1) WO2003096543A1 (ko)

Families Citing this family (31)

* 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
GB0315152D0 (en) 2003-06-28 2003-08-06 Ibm Data parsing and tokenizing apparatus,method and program
CA2609863C (en) * 2005-06-03 2014-02-18 The Commonwealth Of Australia Messaging method
US7180433B1 (en) * 2005-09-22 2007-02-20 Tandberg Storage Asa Fast data compression and decompression system and method
EP2541432A1 (en) 2005-10-07 2013-01-02 Altera Corporation Data input and output in systolic array processors
CN100385437C (zh) * 2005-11-10 2008-04-30 浙江中控技术股份有限公司 实时数据压缩方法
KR20090021149A (ko) * 2006-03-24 2009-02-27 더 유니버시티 오브 미시시피 세트 연관 캐시 매핑 기술에 의거한 고속 데이터 압축
US8085171B2 (en) * 2006-03-24 2011-12-27 University Of Mississippi High-speed data compression based on set associative cache mapping techniques
CN102007469A (zh) * 2008-02-18 2011-04-06 阿斯奔收购公司 用以加速空终止字符串操作的方法
US8667046B2 (en) * 2008-02-21 2014-03-04 Ecole Polytechnique Federale De Lausanne/Service Des Relations Industrielles Generalized programmable counter arrays
US8013762B2 (en) * 2009-11-03 2011-09-06 Seagate Technology Llc Evaluating alternative encoding solutions during data compression
US8248279B2 (en) * 2010-10-26 2012-08-21 Hewlett-Packard Development Company, L.P. History buffer apparatus and method for adaptive lossless data compression
US8824569B2 (en) 2011-12-07 2014-09-02 International Business Machines Corporation High bandwidth decompression of variable length encoded data streams
US8918408B2 (en) * 2012-08-24 2014-12-23 Microsoft Corporation Candidate generation for predictive input using input history
US8766827B1 (en) * 2013-03-15 2014-07-01 Intel Corporation Parallel apparatus for high-speed, highly compressed LZ77 tokenization and Huffman encoding for deflate compression
CN104113344B (zh) * 2013-04-16 2017-04-12 晨星半导体股份有限公司 解压缩电路与相关的压缩方法与解压缩方法
US8933824B1 (en) 2013-08-28 2015-01-13 International Business Machines Corporation Hardware decompression of deflate encoded data with multiple blocks
US9374106B2 (en) 2013-08-28 2016-06-21 International Business Machines Corporation Efficient context save/restore during hardware decompression of DEFLATE encoded data
US9800640B2 (en) 2013-10-02 2017-10-24 International Business Machines Corporation Differential encoder with look-ahead synchronization
US9634689B2 (en) * 2014-08-20 2017-04-25 Sunedison Semiconductor Limited (Uen201334164H) Method and system for arranging numeric data for compression
US9524169B2 (en) * 2014-09-24 2016-12-20 Intel Corporation Technologies for efficient LZ77-based data decompression
US9537504B1 (en) * 2015-09-25 2017-01-03 Intel Corporation Heterogeneous compression architecture for optimized compression ratio
US9450606B1 (en) 2015-10-01 2016-09-20 Seagate Technology Llc Data matching for hardware data compression
CN105610447B (zh) * 2015-10-29 2018-06-19 吴均 基于lz77算法的分区编码压缩方法
US9864549B2 (en) 2016-02-29 2018-01-09 Avago Technologies General Ip (Singapore) Pte. Ltd. Systems and methods for high throughput multi-input compression
CN108809320B (zh) * 2017-04-28 2021-05-18 华为技术有限公司 一种基于lz77的数据压缩方法、设备及终端
US11042375B2 (en) 2017-08-01 2021-06-22 Arm Limited Counting elements in data items in a data processing apparatus
US10678506B2 (en) * 2017-08-01 2020-06-09 Arm Limited Matching consecutive values in a data processing apparatus
JP2022121983A (ja) 2021-02-09 2022-08-22 キオクシア株式会社 文字列検索装置及びメモリシステム
CN114956290B (zh) * 2022-07-27 2022-11-01 江苏赛沐思环保科技有限公司 一种基于lz77编码的工业废水的智能处理方法
US20240086392A1 (en) * 2022-09-14 2024-03-14 Sap Se Consistency checks for compressed data

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01148649A (ja) * 1987-12-03 1989-06-12 Anzen Jidosha Kk 車両の制動性能測定方法
JPH05179378A (ja) * 1991-12-27 1993-07-20 Sumitomo Metal Ind Ltd 室温および高温強度に優れたNi基合金

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4965569A (en) * 1987-06-30 1990-10-23 Motorola, Inc. Digitized stored voice paging receiver
US5146221A (en) * 1989-01-13 1992-09-08 Stac, Inc. Data compression apparatus and method
US5179378A (en) * 1991-07-30 1993-01-12 University Of South Florida Method and apparatus for the compression and decompression of data using Lempel-Ziv based techniques
DE69433620T2 (de) * 1994-06-16 2004-08-12 Seiko Epson Corp. Datenkomprimierungsverfahren
US5608396A (en) * 1995-02-28 1997-03-04 International Business Machines Corporation Efficient Ziv-Lempel LZI data compression system using variable code fields
US5771010A (en) * 1995-03-22 1998-06-23 Ibm Corporation Apparatus for compressing data using a Lempel-Ziv-type algorithm
US5805086A (en) * 1995-10-10 1998-09-08 International Business Machines Corporation Method and system for compressing data that facilitates high-speed data decompression
US5771011A (en) * 1996-07-15 1998-06-23 International Business Machines Corporation Match detect logic for multi-byte per cycle hardware data compression
JP3540109B2 (ja) * 1996-12-24 2004-07-07 富士通株式会社 データ圧縮方法及び装置
US5874908A (en) * 1997-09-19 1999-02-23 International Business Machines Corporation Method and apparatus for encoding Lempel-Ziv 1 variants
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
EP1148649A1 (en) 2000-04-17 2001-10-24 I-Data International A/S Method and apparatus for data compression
US6657565B2 (en) * 2002-03-21 2003-12-02 International Business Machines Corporation Method and system for improving lossless compression efficiency
GB0210602D0 (en) 2002-05-09 2002-06-19 Ibm Circuit and method for use in data compression
GB0213687D0 (en) * 2002-06-14 2002-07-24 Ibm Multi-byte lempel-ziv 1 (LZ1) decompression

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01148649A (ja) * 1987-12-03 1989-06-12 Anzen Jidosha Kk 車両の制動性能測定方法
JPH05179378A (ja) * 1991-12-27 1993-07-20 Sumitomo Metal Ind Ltd 室温および高温強度に優れたNi基合金

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
05179378
05771011
1148649

Also Published As

Publication number Publication date
US7233265B2 (en) 2007-06-19
EP1506619A1 (en) 2005-02-16
PL371971A1 (en) 2005-07-11
WO2003096543A1 (en) 2003-11-20
ATE518308T1 (de) 2011-08-15
CA2485566A1 (en) 2003-11-20
CN1552127A (zh) 2004-12-01
JP3989933B2 (ja) 2007-10-10
JP2005525039A (ja) 2005-08-18
EP1506619B1 (en) 2011-07-27
IL164722A0 (en) 2005-12-18
GB0210604D0 (en) 2002-06-19
US20050179569A1 (en) 2005-08-18
KR20040104675A (ko) 2004-12-10
AU2003205839A1 (en) 2003-11-11
CN1309174C (zh) 2007-04-04
CA2485566C (en) 2008-05-13

Similar Documents

Publication Publication Date Title
KR100702428B1 (ko) 데이터 압축 방법 및 회로
US9054729B2 (en) System and method of compression and decompression
US7872598B2 (en) Accelerated decompression
JPH0380727A (ja) データストリームのフレーム同期検出方法及び装置
US5930790A (en) String-match array for substitutional compression
US4185302A (en) Run length encoding of facsimile signals
EP1201036B1 (en) Method and apparatus for reducing the time required for compressing data
US7500103B2 (en) Data parsing and tokenizing apparatus, method and program
US5488366A (en) Segmented variable length decoding apparatus for sequentially decoding single code-word within a fixed number of decoding cycles
KR100702453B1 (ko) 데이터 압축용 회로 및 방법
KR100214593B1 (ko) 캐스케이드 구조를 이용한 런랭스 코드의 코드워드 검출 방법 및 장치
KR100606159B1 (ko) 데이터 디코딩을 위한 감소된 상태 디바이스 및 방법
US9344113B1 (en) Lempel Ziv compression architecture
US6392571B1 (en) String search apparatus and method for data compression
Chen et al. VLSI design for high-speed LZ-based data compression
CN102751994A (zh) 一种基于两个有限群符号的短码长分组码译码器装置
KR101857385B1 (ko) Lz77 무손실 압축 데이터의 오류 체크 방법 및 장치
Kalamani et al. Test Data Compression Using a Hybrid of Bitmask Dictionary and 2 n Pattern Run-length Coding Methods
KR100268832B1 (ko) 효율적 면적의 가변길이 코덱 장치
Salomon et al. Robust VL Codes
KR20210093243A (ko) 연속 제거 리스트 디코더를 위한 하드웨어 복잡성 감소 기술
Nadarajan et al. Analysis of string matching compression algorithms
Xue et al. Efficient VLSI Implementation of a VLC Decoder for Golomb-Rice Code using Alternating Coding
Mohey et al. Design and Implementation of Lempel-Ziv Data Compression using FPGA

Legal Events

Date Code Title Description
A201 Request for examination
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: 20110201

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee