KR20110089308A - 데이터 레코드들의 압축 및 압축해제를 위한 방법 및 장치 - Google Patents

데이터 레코드들의 압축 및 압축해제를 위한 방법 및 장치 Download PDF

Info

Publication number
KR20110089308A
KR20110089308A KR1020117012027A KR20117012027A KR20110089308A KR 20110089308 A KR20110089308 A KR 20110089308A KR 1020117012027 A KR1020117012027 A KR 1020117012027A KR 20117012027 A KR20117012027 A KR 20117012027A KR 20110089308 A KR20110089308 A KR 20110089308A
Authority
KR
South Korea
Prior art keywords
record
data
data record
nibbles
processor
Prior art date
Application number
KR1020117012027A
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 마이크로 모우션, 인코포레이티드
Priority claimed from PCT/US2008/083363 external-priority patent/WO2009064855A1/en
Publication of KR20110089308A publication Critical patent/KR20110089308A/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/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
    • 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/3002Conversion to or from differential modulation

Landscapes

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

Abstract

본 발명의 실시예에 따라 데이터 압축 방법이 제공된다. 데이터 압축 방법은 제 1 데이터 레코드 및 적어도 제 2 데이터 레코드를 수신하는 단계를 포함한다. 제 1 데이터 레코드는 제 2 데이터 레코드와 비교된다. 제 2 데이터 레코드는 제 1 데이터 레코드와 제 2 데이터 레코드 간의 차로써 압축된다.

Description

데이터 레코드들의 압축 및 압축해제를 위한 방법 및 장치{METHOD AND APPARATUS FOR COMPRESSING AND DECOMPRESSING DATA RECORDS}
본 발명은 데이터 저장 시스템들에 관한 것으로, 보다 특정하게는 데이터 저장 시스템에서 데이터 레코드들을 압축 및 압축해제하기 위한 방법에 관한 것이다.
디지털 프로세싱 시스템들은 흔히 내부 또는 외부 메모리에 입력 데이터(incoming data)를 저장한다. 데이터는 예를 들어 디지털 비트 스트림의 형태일 수 있다. 데이터 저장 비용은 보다 정확한 데이터 측정치들에 대한 요구조건 증가에 따라 증가한다. 따라서, 보다 최근의 날짜에서 데이터를 리브리브(retrieve)하는 능력을 손상시키지 않고 데이터 저장 요구조건들을 감소시킬 수 있는 임의의 기술은 프로세싱 시스템과 연관된 비용들을 실질적으로 감소시킬 수 있다.
데이터 저장 요구조건들을 감소시키는 한가지 방법은 저장 이전에 데이터를 압축하는 것이다. 보편적으로 허용되는 데이터 압축에는 2가지 방법, 즉 손실(lossy) 압축 및 비손실(lossless) 압축이 있다. 손실 압축은, 압축되는 동안 또는 압축해제되는 동안 데이터의 압축 및 압축해제가 일부 정보를 손실할 수 있지만, 일반적으로 이용될 오리지널 레코드에 충분히 근접한 데이터 압축 방법이다. 이러한 방법은 멀티미디어 파일들, 이를 테면 오디오, 비디오 및 정지 영상들의 압축에 가장 흔히 이용되며, 이는 일반적으로 사람의 눈 또는 귀는 오리지널 데이터와 압축해제된 데이터 간의 차를 인지할 수 없기 때문이다. 반대로, 무손실 데이터 압축은 정확한 오리지널 데이터가 압축된 파일로부터 재구조화되게 허용한다. 무손실 압축이 이용될 수 있는 통상적인 예들로는 소스 코드 및 실행가능한 프로그램들이 있다. 어떤 정보가 중요한지 불명료하고 따라서 오리지널 파일에서의 임의의 정보를 폐기하는 것이 권고되지 않는 경우 다른 예들이 존재한다.
통상적으로, 압축에 존재하는 트레이드오프들 중 하나는 데이터를 압축 및 압축해제하는데 요구되는 많은(extreme) CPU 시간에 있다. 따라서, 임의의 압축 루틴에서, 압축량은 이러한 압축을 수행하는데 요구되는 CPU 시간에 의해 옵셋(offset)2되어야 한다.
2개의 연이은(consecutive) 레코드들이 서로 비교될 때 연속적으로(continuous) 또는 반-연속적으로(semi-continuous) 데이터 스트림들을 압축하기 위한 종래기술의 방법들이 존재한다. 통상적으로, 동일하지 않은 레코드의 부분들은 비압축 포맷으로 저장되는 반면, 동일한 레코드들의 부분들은 압축된다. 이러한 방법은 레코드의 큰 퍼센테이지가 반복 데이터를 포함하는 다수의 애플리케이션들에 유용하다. 그러나, 이러한 방식은 높은 퍼센테이지의 데이터가 비압축 상태로 남아있게 하며, 따라서 불필요한 양의 저장 공간이 요구된다. 비압축 데이터의 퍼센테이지는 연이은 레코드들이 연속적으로 변경되는 상황에서, 예를 들어 입력 측정치(measurement)가 제시된 포인트 부근에서 진동할 경우, 극적으로 증가한다. 이러한 예에서, 전체 측정치는 레코드들의 그룹에서 크게 상이하지 않을 수 있다; 그러나, 연이은 레코드들이 연속적으로 변경되면, 요구되는 메모리 양은 크게 감소되지 않는다.
특정 형태들의 데이터는 연이은 레코드들이 단지 소량 변하는 정보를 포함할 수 있다. 예를 들어, 유량계(flow meter)의 송신기로부터 수신된 입력 데이터는 하나의 측정치로부터 다음 측정치에 대해 비교적 소량만이 변경될 수 있다. 따라서, 본 발명은 실질적으로 전체 레코드가 압축되고 압축된 레코드와 제 2 레코드 간의 차로써 저장될 경우 압축 및 압축해제를 위한 방법을 제공한다.
본 발명의 양상에 따라, 데이터 저장 방법은,
제 1 데이터 레코드 및 적어도 제 2 데이터 레코드를 수신하는 단계;
제 1 데이터 레코드와 제 2 데이터 레코드를 비교하는 단계; 및
제 1 데이터 레코드와 제 2 데이터 레코드 간의 차로써 제 2 데이터 레코드를 압축하는 단계를 포함한다.
바람직하게, 데이터 저장 방법은 압축하는 단계 이전에 제 2 데이터 레코드의 최하위 숫자(least significant digit)의 끝수를 버리는(truncating) 단계를 더 포함한다.
바람직하게, 데이터 저장 방법은 제 1 데이터 레코드 또는 적어도 제 2 데이터 레코드의 시작부로부터 데이터 레코드의 마지막부로 포지티브 또는 네거티브 표시 숫자(digit)를 옮기는(moving) 단계를 더 포함한다.
바람직하게, 제 2 데이터 레코드를 압축하는 단계는 헤더 니블(header nibble) 및 하나 이상의 데이터 니블들로 제 2 데이터 레코드를 압축하는 단계를 포함한다.
바람직하게, 헤더 니블은 하기의 데이터 니블들의 수를 표시한다.
바람직하게, 헤더 니블은 제 2 데이터 레코드가 제 1 데이터 레코드보다 큰지, 제 1 데이터 레코드 미만인지, 또는 제 1 데이터 레코드와 같은지를 표시한다.
바람직하게, 하나 이상의 데이터 니블들은 제 1 데이터 레코드와 제 2 데이터 레코드 간의 차(difference)를 포함한다.
바람직하게, 데이터 저장 방법은 제 1 데이터 레코드와 제 2 데이터 레코드 간의 차가 예정된 수의 니블들로 표시될 수 없는 경우 비압축된 제 2 데이터 레코드를 저장하는 단계를 더 포함한다.
바람직하게, 데이터 저장 방법은,
제 1 데이터 레코드를 베이스라인 레코드로서 설정하는 단계; 및
순차적으로 수신된 데이터 레코드들을 베이스라인 레코드와 비교하는 단계를 더 포함한다.
바람직하게, 데이터 저장 방법은 메모리에 압축된 레코드를 기록하는 단계를 더 포함한다.
본 발명의 또 다른 양상에 따라, 프로세싱 시스템은,
메모리; 및
제 1 데이터 레코드 및 제 2 데이터 레코드를 수신하고,
제 1 데이터 레코드를 제 2 데이터 레코드와 비교하고, 그리고
제 1 데이터 레코드와 제 2 데이터 레코드 간의 차로써 메모리에 제 2 데이터 레코드를 압축하도록
구성된 프로세서를 포함한다.
바람직하게, 프로세서는 제 2 데이터 레코드의 최하위 숫자의 끝수를 버리도록 추가로 구성된다.
바람직하게, 프로세서는 제 1 데이터 레코드 또는 제 2 데이터 레코드의 시작부로부터 데이터 레코드의 마지막부로 포지티브 또는 네거티브 표시 숫자를 옮기도록 추가로 구성된다.
바람직하게, 프로세서는 헤더 니블 및 하나 이상의 데이터 니블들로 제 2 데이터 레코드를 표현하도록 추가로 구성된다.
바람직하게, 헤더 니블은 압축된 레코드에서 데이터 니블들의 수를 표시한다.
바람직하게, 헤더 니블은 제 2 데이터 레코드가 제 1 데이터 레코드 보다 큰지, 제 1 데이터 레코드 미만인지, 또는 데이터 레코드와 같은지를 표시한다.
바람직하게, 하나 이상의 데이터 니블들은 제 1 데이터 레코드와 제 2 데이터 레코드 간의 차를 포함한다.
바람직하게, 프로세서는 제 1 데이터 레코드와 제 2 데이터 레코드 간의 차가 예정된 수의 니블들로 표시될 수 없는 경우 비압축된 제 2 데이터 레코드를 저장하도록 추가로 구성된다.
바람직하게, 프로세서는 베이스라인 레코드로서 제 1 데이터 레코드를 설정하고 순차적으로 수신된 데이터 레코드들을 베이스라인 레코드와 비교하도록 추가로 구성된다.
도 1은 본 발명의 실시예에 따른 프로세싱 시스템을 도시한다.
도 2는 본 발명의 실시예에 따른 압축 알고리즘을 도시한다.
도 3은 본 발명의 또 다른 실시예에 따른 압축 알고리즘을 도시한다.
도 1-3 및 하기의 설명은 본 발명의 최상 모드를 구성하고 이용하는 방법을 당업자게 설명하는 특정 예들을 예시한다. 본 발명의 원리들의 설명을 목적으로, 통상적인 일부 양상들은 간략화 또는 생략되었다. 당업자들은 본 발명의 범주내에 있는 이러한 예들로부터의 변형물들을 인식할 것이다. 당업자들은 개시된 특징들이 본 발명의 다수의 변형물들을 형성하는 다양한 방식들로 조합될 수 있다는 것을 인식할 것이다. 결과적으로, 본 발명은 하기 개시되는 특정한 예들로 제한되는 것이 아니라 청구항들 및 이들의 등가물들에 의해서만 제한된다.
도 1은 본 발명의 실시예에 따른 프로세싱 시스템(100)을 도시한다. 프로세싱 시스템(100)은 프로세서(101) 및 메모리(102)를 포함한다. 프로세싱 시스템(100)은 범용성 컴퓨터, 마이크로프로세싱 시스템, 논리 회로, 디지털 신호 프로세서, 또는 다른 범용성 또는 주문형 프로세싱 디바이스를 포함할 수 있다. 프로세싱 시스템(100)은 다수의 프로세싱 디바이스들 사이에 분포될 수 있다. 프로세싱 시스템(100)은 임의의 방식의 통합형(integral) 또는 독립형(independent) 전자 저장 매체, 이를 테면, 메모리(102)를 포함할 수 있다. 버스 루프(103)에 의해 프로세싱 시스템(100)에 송신기(104)가 접속된다. 송신기(104)는 제한되는 것은 아니지만, 흐름 측정 디바이스들 이를 테면 예를 들어 코리올리 유량계들을 포함하는 진동(vibrating) 유량계들을 포함하는 임의의 수의 디바이스들에 접속될 수 있다. 송신기(104)는 정보를 프로세싱 시스템(100)으로 전송하도록 구성될 수 있다. 정보는 예를 들어 흐름 측정치들을 포함할 수 있다. 그러나, 송신기에 의해 전송되는 정보는 송신기의 다른쪽 단부에 접속되는 특정 디바이스(미도시)에 따라 좌우된다는 것을 이해해야 한다. 따라서, 본 발명은 유체 흐름 정보로 구성되는 데이터로 제한되지 말아야 한다.
본 발명의 실시예에 따라, 데이터 프로세서(101)는 송신기(104)로부터 입력 비트들의 데이터를 수신하고 메모리(102)로 데이터를 전송하기 이전에 입력 비트들의 데이터를 압축할 수 있다. 프로세서(101)는 현재의 데이터 레코드와 이전의 데이터 레코드 간의 차에 기초하여 현재의 데이터 레코드를 압축할 수 있다. 이전의 데이터 레코드와 동일한 데이터 레코드의 부분만을 압축하고 이전의 레코드와 상이한 레코드 부분은 압축하지 않는 종래 기술의 방법들과 달리, 본 발명은 실질적으로 모든 데이터 레코드를 압축할 수 있다. 본 발명의 실시예에 따라, 압축된 데이터 레코드는 현재의 레코드와 제 2 레코드 간의 차로써 기록된다. 본 발명의 또 다른 실시예에 따라, 압축된 데이터 레코드는 이전의 레코드와 현재의 레코드 간의 차로써 기록될 수 있다. 본 발명의 또 다른 실시예에 따라, 압축된 데이터 레코드는 현재의 레코드와 베이스라인 레코드 간의 차로써 기록된다.
본 발명의 실시예에 따라, 프로세서(101)에 의해 수신된 데이터는 디지털 비트 스트림을 포함한다. 데이터는 디지털 비트 스트림을 포함하지 않는다는 것을 이해해야 한다. 따라서, 프로세서(101)에 의해 수신된 특정 형태의 데이터가 본 발명의 범주로 제한되지 않는다. 그러나, 디지털 비트 스트림들은 하기에 추가로 개시되는 것처럼, 니블들(4 비트들)과 같은 별개의(distinct) 동질 그룹들로 쉽게 분할될 수 있다.
본 발명의 실시예에 따라, 프로세서(101)는 예를 들어, 십진수 또는 16진수 문자들로서 입력 비트 데이터를 표시할 수 있다. 입력 데이터는 16진수 문자들로 표시되지 않는다는 것을 이해해야 한다; 그러나, 일부 실시예들에서, 십진수 코드 보다는 16진수 코드가 보다 나은 압축을 제공할 수 있다.
본 발명의 실시예에 따라, 프로세서(101)는 메모리(102)에서 압축된 레코드로서 입력 데이터를 기록할 수 있다. 프로세서(101)는 입력 데이터를 스트링(string) 니블들로 압축할 수 있다. 스트링 니블들은 "헤더" 니블들의 시리즈를 포함할 수 있다. 본 발명의 실시예에 따라, 각각의 헤더 니블에는 하나 이상의 데이터 니블들이 후속할 수 있다. 데이터 니블들이 수는 각각의 헤더 니블에 할당되는 특정한 규정(definition)에 따라 변할 수 있다. 그러나, 일 실시예에서, 데이터 니블들의 수는 1에서 8로 변할 수 있다. 본 발명의 실시예에 따라, 데이터 니블들의 수는 연이은 데이터 레코드들이 서로에 대해 변하는 양과 관련될 수 있다. 본 실시예는 데이터를 니블들로 압축하는 것으로 개시되었지만, 함께 그룹화되는 비트들의 특정 수는 변할 수 있고, 따라서 본 발명은 4 비트들의 그룹핑들로 제한되지 않는다는 것이 이해해야 한다. 오히려 임의의 비트들의 수가 함께 그룹화될 수 있다.
본 발명의 실시예에 따라, 하기의 표는 16진수 문자들을 이용하는 헤더 니블들을 표시하는데 이용될 수 있다. 표는 단지 일례로 제공되는 것이며 당업자들은 본 발명의 범주내에 있는 다양한 다른 헤더 규정들을 쉽게 인식할 것이다.
F 8 니블들 후속 비압축
E 7 니블들 후속 값은 새로운 값-이전의 값 표시
D 6 니블들 후속 값은 새로운 값-이전의 값 표시
C 5 니블들 후속 값은 새로운 값-이전의 값 표시
B 4 니블들 후속 값은 새로운 값-이전의 값 표시
A 3 니블들 후속 값은 새로운 값-이전의 값 표시
9 2 니블들 후속 값은 새로운 값-이전의 값 표시
8 1 니블들 후속 값은 새로운 값-이전의 값 표시
7 7 니블들 후속 값은 이전의 값-새로운 값 표시
6 6 니블들 후속 값은 이전의 값-새로운 값 표시
5 5 니블들 후속 값은 이전의 값-새로운 값 표시
4 4 니블들 후속 값은 이전의 값-새로운 값 표시
3 3 니블들 후속 값은 이전의 값-새로운 값 표시
2 2 니블들 후속 값은 이전의 값-새로운 값 표시
1 1 니블들 후속 값은 이전의 값-새로운 값 표시
0x 여기서, 1-15의 값들을 표시하는 "x"는 1-15 값들을 나타내며 이전의 것과 정확히 동일함
x0 값이 허용되지 않음
표 1의 제 1 컬럼은 압축된 레코드에서 헤더 니블의 16진수 값이다. 16진수 값은 메모리(102)에 실제적으로 저장되는 2진 값들을 표시하는 사용자/오퍼레이터에게 제공될 수 있다는 것을 인식해야 한다. 표 1의 제 2 컬럼은 얼마나 많은 데이터 니블들이 특정 헤더 니블에 후속하는지를 나타낸다. 표 1의 제 3 컬럼은 어떤 데이터 니블들이 표시되는지를 나타낸다. 예를 들어, 헤더 니블이 'E'이면, 7 데이터 니블들이 후속하며, 여기서 데이터 니블들은 새로운값-이전의 값을 표시한다. 다른 말로, 현재의 레코드는 이전의 레코드보다 크다. 예를 들어, 레코들이 흐름 측정치들을 포함할 경우, 이는 현재의 측정치가 이전의 측정치 보다 크다는 것을 의미할 수 있다.
압축 알고리즘은 현재의 데이터 레코드와 이전의 비압축 데이터 레코드 간의 차에 기초하여 입력 비트들의 데이터를 압축하기 위해 상기 규정들과 함께 이용될 수 있다. 메모리(102)에 기록되는 압축된 레코드는 비압축 레코드와 이전의 레코드 간의 차를 포함할 수 있다.
도 2는 본 발명의 실시예에 따른 데이터 압축 알고리즘(200)을 도시한다. 알고리즘(200)은 사용자/오퍼레이터에 의해 개시될 수 있으며 혹은 대안적으로 프로세서(101)에 의해 동작되는 다른 프로그램에 의해 개시될 수 있다. 도 2에 도시된 실시예에 따라, 프로세서(101)는 단계(201)에서 입력 데이터를 수신할 수 있다.
단계(202)에서, 프로세서(101)는 현재의 레코드를 제 2 데이터 레코드와 비교할 수 있다. 일부 실시예들에서, 제 2 레코드는 이전의 레코드를 포함한다. 현재의 레코드와 비교되는 이전의 레코드가 없다면, 프로세서(101)는 압축되지 않은 레코드를 저장할 수 있다. 본 발명의 실시예에 따라, 저장된 레코드는 헤더 니블에 후속하는 1 내지 8 데이터 니블들을 포함할 수 있다. 헤더 니블의 값은 데이터 레코드가 얼마나 긴지와 관련될 수 있다. 다른 말로, 헤더 니블의 값은 현재의 레코드와 이전의 레코드 간의 차와 관련될 수 있다. 본 발명의 실시예에 따라, 헤더 니블은 표 1의 값들에 기초될 수 있다. 본 발명의 실시예에 따라, 프로세서(101)는 현재의 레코드를 순차적으로 수신되는 레코드와 비교하기 위해 레코드를 일시적으로 저장할 수 있다. 현재의 레코드는 (하기의) 단계(203)가 완료될 때까지 캐시 메모리에 혹은 유사한 메모리에 압축되지 않고 저장될 수 있다.
프로세서는 제 1 및 제 2 레코드 간의 차가 예정된 수의 니블들에 의해 표시될 수 있는지를 결정할 수 있다. 프로세서(101)가 표 1의 규정들을 구현하는 일 실시예에 따라, 예정된 수의 니블들은 8일 수 있으며, 이는 후속하는 8 데이터 니블들에 대해 가장높은 헤더 니블만이 제공되기 때문이다. 그러나, 다른 헤더 니블 규정들이 구현될 경우, 예정된 수의 데이터 니블들이 변경될 수 있다.
차가 예정된 수의 니블들로 표시될 수 있는 경우, 프로세서(101)는 현재의 레코드가 현재의 레코드와 제 2 레코드 간의 차로써 압축되는 단계(203)로 진행된다. 일부 실시예들에서, 압축은 현재의 레코드와 이전의 레코드 간의 차를 표시한다. 본 발명의 일 실시예에 따라, 프로세서(101)는 헤더 니블에 후속하는 하나 이상의 데이터 니블들을 포함하는 레코드로 현재의 레코드를 압축할 수 있다. 본 발명의 실시예에 따라, 헤더 니블은 후속하는 데이터 니블들의 수를 표시할 수 있다. 본 발명의 또 다른 실시예에 따라, 헤더 니블은 현재의 레코드가 이전의 레코드 보다 큰지, 이전의 레코드 미만인지, 또는 이전의 레코드와 같은지를 표시할 수 있다. 본 발명의 실시예에 따라, 데이터 니블은 현재 압축된 레코드와 이전의 레코드 간의 차를 표시한다. 차가 예정된 수의 니블들에 의해 표시될 수 없는 경우, 프로세서(101)는 압축되는 레코드 보다는 압축되지 않은 레코드를 저장할 수 있다. 압축되지 않은 레코드는 헤더 니블을 포함할 수 있다. 예를 들어, 헤더 니블들이 상기 표 1에서 처럼 규정되면, 8 니블들을 포함하는 압축되지 않은 레코드는 'F'일 것이다.
단계(204)에서, 프로세서(101)는 현재의 레코드가 최종(last) 레코드를 포함하는지를 결정할 수 있다. 레코드가 최종 레코드를 포함하면, 알고리즘(200)은 종료될 수 있다. 또한, 프로세서(101)는 현재의 레코드를 일시적으로 저장하지 않고, 메모리(102)에서 압축된 레코드로서 현재의 레코드를 기록할 수 있다. 이는 현재의 레코드와 비교될 후속 레코드가 없기 때문이다. 보다 많은 입력 데이터 레코드들이 존재할 경우, 알고리즘(200)은 차후 레코드가 현재의 레코드와 비교될 수 있는 단계(202)로 리턴될 수 있다. 정수의 데이터 값들로 구현되는 알고리즘(200)의 예는 본 발명의 실시예에 따라 본 발명의 이해를 돕기 위해 하기에 도시된다. 십진수들 각각이 이진 코드의 니블을 표시하는 하기의 입력 데이터 레코드들의 예를 참조한다.
(1) 12345678
(2) 12345678
(3) 12345678
(4) 12345677
(5) 12345675
(6) 12345676
알고리즘(200)에 따라, 프로세서(101)는 제 1 데이터 레코드를 수신할 수 있고, 제 1 데이터 레코드와 비교될 이전의 레코드가 없기 때문에, 프로세서(101)는 8 니블들이 후속하는 것을 표시하는 헤더 니블과 함께 제 1 데이터 레코드를 저장할 수 있다. 따라서, 압축된 포맷은 F12345678이며, 여기서 'F'는 압축되지 않은 8 니블들이 후속하는 것을 표시하는 헤더 니블이다. 다른말로, 8 데이터 니블들은 오리지널 입력 데이터를 포함한다.
본 발명의 실시예에 따라, 프로세서(101)는 제 1 데이터 레코드와 같은 제 2 데이터 레코드를 수신할 수 있다. 따라서, 프로세서(101)는 또한 제 1 데이터 레코드와 같은 제 3 데이터 레코드를 처리할 수 있다. 프로세서(101)는 제 4 데이터 레코드를 처리할 수 있다. 제 4 데이터 레코드가 제 1 데이터 레코드와 같지 않기 때문에, 제 2 및 제 3 데이터 레코드는 2 니블들로 압축될 수 있고, 하나의 헤더 니블은 레코드가 이전의 레코드와 같다는 것을 표시하며 하나의 데이터 니블은 얼마나 많은 레코드들이 동일한지를 표시한다. 이 경우, 제 2 및 제 3 데이터 레코드들은 제 1 데이터 레코드와 동일하며 따라서, 데이터 니블은 2이다. 따라서, 제 2 및 제 3 데이터 레코드들은 '02'로서 압축될 수 있다.
다음, 프로세서(101)는 제 4 데이터 레코드를 제 3 데이터 레코드와 비교할 수 있다. 이 경우, 차는 1(12345678 - 12345677)이다. 또한, 제 4 데이터 레코드는 제 3 데이터 레코드 미만이다. 차는 예정된 수의 데이터 니블들(이 경우 8) 미만으로 표시될 수 있기 때문에, 프로세서(101)는 레코드를 압축할 수 있다. 이 경우, 제 4 데이터 레코드는 '11'로서 압축될 수 있고, 여기서 헤더 니블은 1이며, 이는 1 니블이 후속한다는 것을 표시하며 데이터 니블의 값은 이전(old) 값 - 새로운(new) 값을 표시한다. 데이터 니블은 1이며 이는 차가 1이기 때문이다.
제 1 데이터 레코드와 제 4 레코드 기록 간에 유사한 비교가 이루어진다; 그러나, 제 5 데이터 레코드는 제 4 데이터 레코드와 2만큼 차이난다. 따라서, 압축된 레코드는 '12'로서 저장된다.
제 6 데이터 레코드는 제 5 데이터 레코드 보다 크다. 따라서, 차는 하나의 니블에 표시될 수 있다. 따라서, 제 6 데이터 레코드는 '81'로서 압축되며, 여기서 '8'은 하나의 데이터 니블이 후속한다는 것을 표시하는 헤더 니블을 포함하며 데이터 니블은 새로운 값 - 이전 값을 표시한다. '1'은 데이터 니블을 포함하며, 제 6과 제 5 데이터 레코드들 간의 차는 1이다.
따라서, 프로세서(101)는
Figure pct00001
의 입력 데이터 스트림을 수신하며 압축된 레코드를
Figure pct00002
로서 메모리(102)에 기록한다. 이는 저장된 니블들에서 23(40-17)의 전체 차를 산출하며 이는 58%의 전체 압축을 산출한다. 앞서 개시된 것처럼 본 발명은 종래 기술에 비해 우수한 압축을 제공하며, 이는 데이터 레코드의 동일 부분만 보다는 실질적으로 모든 데이터 레코드가 압축되기 때문이다. 이는 메모리(102)에 기록된 압축된 레코드가 현재의 레코드와 이전의 레코드 간의 차를 포함하기 때문이다. 따라서, 프로세서(101)는 데이터 레코드의 일부만이 압축되는 종래 기술 보다 훨씬 큰 압축 비율들을 구혼할 수 있다.
상기 설명은 입력 데이터가 정수 값들을 포함하는 것으로 도시되었지만, 본 발명은 부동 값(floating value)들에 동등하게 적용될 수 있다는 것을 이해해야 한다. 하기 예에서는 IEEE-754 싱글의 정확한 부동 포인트 수들(Single Precision Floating Point numbers)이 이용되었지만, IEEE-7554 더블의 정확한 및 다른 표준들의 부동 포인트 데이터가 동등하게 사용될 수 있다는 것을 이해해야 한다. 따라서, 본 발명은 IEEE-754 싱글의 정확한 부동 포인트 수들로 제한되지 않는다. 부동 수들을 포함하는 하기의 입력 데이터를 고려하면, 부동 값은 변환된 16진수 표현으로 이어진다. 다시, 각각의 16진수 문자는 2진 코드의 4 비트들을 표시한다는 것을 인식해야 한다.
(1) 4.0218 4080B296
(2) 3.7209 406E233A
(3) 3.4170 405AB021
(4) 3.1076 4046E2EB
(5) 2.8633 4037404F
(6) 2.7233 402E4A8C
알고리즘(200)에 따라, 상기 예의 제 1 데이터 레코드는 압축되지 않고 유지되며 레코드는 압축되지 않은 8 니블들을 포함한다는 것을 표시하는 'F'의 헤더 니블로 저장된다. 따라서, 실제적으로 제 1 데이터 레코드는 네거티브 압축을 산출하는 추가의 니블(헤더 니블)을 포함한다. 프로세서(101)는 제 2 데이터 레코드를 수신하고 이를 제 1 데이터 레코드와 비교할 수 있다. 비교시, 단계(203)에서 프로세서(101)는 제 2 데이터 레코드와 제 1 데이터 레코드 간의 차가 예정된 수의 니블들(8) 미만으로 저장될 수 있다는 것을 결정할 수 있다. 따라서, 제 2 데이터 레코드는 제 2 데이터 레코드와 제 1 데이터 레코드 간의 차를 'D128F5C'로서 압축 및 저장한다. 이러한 압축된 레코드에서, 'D'는 헤더 니블이며, 이는 표 1에 따라 6 데이터 니블들이 후속하는 것을 표시하며 데이터 니블들은 이전의 값 마이너스 새로운 값을 표시한다. 데이터 니블들 128F5C은 제 1 데이터 레코드와 제 2 데이터 레코드 간의 차를 16진수로 표시한다.
프로세서(101)는 유사한 방식으로 나머지 데이터 레코드들을 압축할 수 있으며, 제 2 데이터 레코드와 제 3 데이터 레코드 간의 차는 16진수로 137319이며 따라서 제 3 데이터 레코드는 D137319로서 압축될 수 있다. 유사하게, 제 3 데이터 레코드와 제 4 데이터 레코드 간의 차는 16진수로 13CD36이며 따라서 제 4 데이터 레코드는 D13CD36로서 압축될 수 있다. 제 4 데이터 레코드와 제 5 데이터 레코드 간의 차는 FA29C이다. 차는 6 보다는 5 니블들로만 표시될 수 있기 때문에, 제 5 데이터 레코드는 CFA29C로서 압축될 수 있으며, 선두부의 'C'는 5 데이터 니블들이 후속하는 것을 표시하며 데이터 니블들은 이전의 값 - 새로운 값을 표시한다. 유사하게, 제 5 데이터 레코드와 제 6 데이터 레코드 간의 차는 8F5C3이며 따라서 제 6 데이터 레코드는 C8F5C3로서 압축될 수 있다.
부동 수들을 표시하는 6 데이터 레코드들의 압축은 약 12.5%의 전체 압축을 산출한다. 연이은 레코드들이 덜 상이하면, 레코드들 간의 차를 표시하는데 요구되는 니블들의 수가 적어 보다 큰 압축이 산출된다는 것이 인식할 수 있다. 송신기(104)가 유체 흐름 측정치들을 전송하는 실시예에 따라, 전체 압축은 측정 빈도(frequency)와 관련될 수 있다. 이는, 측정 빈도가 클수록, 각각의 측정치는 서로 적게 변할 것이기 때문이다. 따라서, 측정들의 횟수는 증가될 수 있지만, 측정치들 간의 차는 압축에서의 전체 증가를 산출하는 소수의(fewer) 니블들에 의해 표시될 수 있다.
앞서 개시된 압축 이외에, 프로세서(101)는 부동 수들에 수행되는 압축을 증가시키기 위해 추가의 단계들을 수행할 수 있다. 이러한 추가의 단계들은 "먼징(munging)"으로 간주될 수 있다. 본 발명의 실시예에 따라, 프로세서(101)는 데이터 레코드에서 최하위 수(least significant number)의 끝수를 버릴 수 있다(truncate). 특정 애플리케이션들에 대해, 최하위 수의 끝수 버림은 실질적으로 데이터의 정확도에 영향을 미치지 않을 수 있다. 이는 특히, 유체 흐름 측정치들, 예를 들어 입력 측정치들이 소비자에 의해 요구되는 것보다 더 정확할 때 사실이다. 전기 및 전자 엔지니어링 표준 협회 표준들의 현재 인스티튜트에 따라, 단일의 싱글의 정확한 부동 수들(single-precision floating numbers)은 8 니블들로 표시되며, 이는 가수부 성분(mantissa component)을 고려할 때, 유효 숫자들(significant figures)에 대해 대략 7 십진수 숫자를 표시한다. 본 발명의 실시예에 따라, 프로세서(101)는 숫자 6으로서 데이터를 표시하며, 따라서 1 니블의 값(worth)의 저장을 위한 요구조건이 사라진다. 따라서, 하나의 숫자 제거는 압축을 증가시킬 수 있다.
또한, 전기 및 전자 엔지니어 표준 협회의 인스티튜트에 의해 개시되는 표준들은 부동 수의 부호(+/-)가 제 1 비트를 표시한다는 것을 제공하며, 0은 포지티브인 수를 의미하며 1은 네거티브인 수를 의미한다. 입력 데이터가 제로 부근에서 맴돌고(hover) 따라서 정규 바이어스에 대한 신호들이 변경될 경우, 2개의 레코드들 간의 절대차가 상대적으로 작더라도, 차는 높은 수의 니블들로 표시된다. 따라서, 본 발명의 실시예에 따라, 부호는 레코드의 시작부로부터 단부로 옮겨진다. 따라서, 입력 데이터가 연속적으로 신호를 변경하더라도, 프로세서(101)에 의해 처리되는 표시된 수는 비교적 약간(little) 변경되고 연이은 레코드들 간의 차는 소수의(fewer) 니블들로 표현될 수 있다. 프로세서(101)에 의해 수행되는 이러한 추가의 단계들은 레코드들 간의 차가 소수의 니블들에 의해 표시될 수 있기 때문에 압축을 상당히 증가시킬 수 있다.
상기 논의는 데이터 압축에 초점을 두었지만, 프로세서(101)는 메모리(102)에 저장된 레코드들을 압축해제할 수도 있다. 압축해제는 압축 알고리즘과 유사한 프로시저들을 따를 수 있다. 메모리(102)에 저장된 레코드들은 다양한 이유들로 액세스될 것이 필요할 수 있고, 따라서, 요구되는 특정 레코드가 변할 수 있다. 모든 레코드들이 요구되는 경우, 프로세서(101)는 레코드들의 시작부에서 간단히 시작되고 순차적으로 각각의 레코드를 액세스할 수 있다.
그러나 일부 상황들에서, 모든 레코드들이 한번에 액세스될 것이 요구되는 것은 아니다. 만약 이러한 경우, 프로세서(101)는 어떤 레코드들이 요구되는지를 먼저 식별함으로써 요구되는 레코드를 액세스할 수 있다. 일단 요구되는 레코드들이 식별되면, 프로세서(101)는 후속하는 데이터 니블들이 압축되지 않았다는 것을 나타내는 헤더 니블을 포함하는 이전에 저장된 레코드를 찾아야 한다. 예를 들어, 표 1이 사용되었다면, 이는 헤더 니블 'F'에 대응한다. 요구되는 레코드를 포함하는 순차적으로 저장된 레코드들 모두가 2개의 연이은 레코드들 간의 차를 나타내기 때문에, 이러한 압축되지 않은 레코드가 요구된다. 그러나, 이전에 압축되지 않은 레코드를 식별하지 않는 경우, 차들은 이용가능한 정보를 제공할 수 없을 것이다. 일단 압축되지 않은 레코드가 리트리브되면, 프로세서(101)는 요구되는 레코드가 리트리브되고 압축해제될 때까지 실질적으로 후속하는 레코드들 모두에 대한 압축해제를 지속할 수 있다.
앞서 개시된 순차적 액세스 루틴은 해당 레코드를 압축해제하기 위해 액세스하는데 요구되는 레코드들의 수가 금지되지 않는 상황들에서 적합할 수 있다는 것을 인식해야 한다. 그러나, 압축해제된 레코드들의 수가 과도한 양의 프로세싱 시간을 요구하는 상황들이 있을 수 있다. 따라서, 본 발명의 실시예에 따라, 프로세서(101)는 압축 알고리즘(300)에 따라 입력 데이터를 압축할 수 있다.
도 3은 본 발명의 실시예에 따라 프로세서(101)에 의해 수행될 수 있는 압축 알고리즘(300)을 도시한다. 압축 알고리즘(300)은 입력 데이터가 상당량(significant amount) 변하지 않는 상황들에서 특히 유용하다. 이는 송신기(104)가 정상 상태 또는 반-정상 상태에 있는 정보를 중계하는 예들에서 사실일 수 있다. 예를 들어, 송신기(104)가 상대적으로 일정한 유량으로 유체가 흐르는 유량계에 결합되면, 입력 유량들은 크게 다르지 않을 수 있다. 따라서, 입력 레코드가 알고리즘(200)에 따라 압축될 수 없게 되기 이전에, 압축될 수 있는 큰 수의 입력 비트 데이터가 있을 수 있다. 알고리즘(200)은 연이은 레코드들 간의 차가 낮은 수의 니블들에 의해 표현될 수 있기 때문에 높은 압축 비율들을 제공할 수 있다. 그러나, 큰 볼륨의 레코드들이 해당 레코드를 액세스하기 위해 압축해제되어야 하는 경우 압축해제 동안 문제가 있을 수 있다. 알고리즘(300)은 데이터의 비트들의 입력 레코드들을 베이스라인 레코드와 비교함으로써 이러한 문제점을 해결한다. 본 발명의 실시예에 따라, 베이스라인 레코드는 예를 들어 제 1의 수신된 레코드를 포함할 수 있다. 그러나, 베이스라인 레코드는 임의의 수신된 레코드일 수 있으며 제 1 수신된 레코드로 제한되지 않는다. 또한, 베이스라인 레코드는 프로세서(101)에 의한 값 설정치일 수 있다. 예를 들어, 베이스라인 레코드는 수신된 레코드들 전체에 대한 평균 값을 포함할 수 있다.
알고리즘(300)은 프로세서(101)가 입력 데이터를 수신하는 단계(301)에서 시작된다. 입력 데이터는 도 2와 관련하여 앞서 개시된 것처럼 데이터 비트들의 형태일 수 있다. 본 발명의 실시예에 따라, 제 1 레코드는 제 1 베이스라인 레코드로서 저장될 수 있다. 제 1 베이스라인 레코드는 제 1 레코드가 알고리즘(200)에 저장되는 방법과 유사한 방식을 저장될 수 있다. 알고리즘(200)에 대한 논의에서 사용되는 입력 레코드들에 대한 예가 고려된다:
(1) 12345678
(2) 12345678
(3) 12345678
(4) 12345677
(5) 12345675
(6) 12345676
제 1 레코드는 F12345678로서 다시 저장될 수 있으며, 여기서 'F'는 압축되지 않은 데이터의 8 니블들이 후속하는 것을 나타낸다.
단계(302)에서, 프로세서(101)는 현재의 레코드를 베이스라인 레코드와 비교할 수 있다. 이는 현재의 레코드를 바로 이전의 레코드와 비교하는 알고리즘(200)과 상반된다.
단계(303)에서, 프로세서(101)는 현재의 레코드와 베이스라인 레코드 간의 차가 예정된 수의 니블들로 표시될 수 있는지를 결정할 수 있다. 그것이 가능하다면, 프로세서(101)는 현재의 레코드가 현재의 레코드와 베이스라인 레코드 간의 차로써 압축되는 단계(304)로 지속된다. 한편, 그 대답이 아니오인 경우, 프로세서(101)는 단계(305)에서 새로운 베이스라인 레코드로서 현재의 레코드를 저장할 수 있다.
단계(306)에서, 프로세서(101)는 이전에 저장된 레코드가 최종 레코드인지를 결정하며, 대답이 예인 경우, 알고리즘(300)은 종료된다. 보다 많은 레코드들이 압축될 경우, 프로세서는 단계(302)로 리턴된다.
상기 6 데이터 레코드들의 예에서, 제 2 및 제 3 레코드들은 알고리즘(200)에 따라 압축됨에 따라 알고리즘(300)에 따른 동일한 방식으로 압축된다, 즉 제 2 및 제 3 레코드들이 '02'로서 압축된다.
알고리즘(200)에 따라, 제 4 레코드는 압축된 레코드 '11'로서 기록된다. 알고리즘(300)에 따라 제 4 레코드는 '11'로서 기록될 수 있으며, 이는 제 1 베이스라인 레코드와 제 4 레코드 간의 차가 여전히 1이고 따라서 1 니블을 사용하여 기록될 수 있기 때문이다.
알고리즘(200)에 따라, 제 1 레코드는 제 4 레코드와 제 5 레코드 간의 차에 기초하여 압축된 레코드 '12'로서 기록된다. 그러나, 알고리즘(300)에 따라, 제 5 레코드는 제 1 베이스라인 레코드와 비교된다. 제 1 레코드와 베이스라인 레코드 간의 차는 3(12345678 - 12345675)이다. 따라서, 제 5 레코드는 압축된 레코드 '13'로서 기록된다.
알고리즘(200)에 따라, 제 6 레코드는 압축된 레코드 '81'로서 기록된다. 그러나, 알고리즘(300)에 따라, 제 6 레코드는 제 1 베이스라인 레코드와 제 6 레코드 간의 차에 기초하여 '12'로서 기록된다.
상기 예에서, 압축 비율은 2개의(both) 알고리즘들)에 대해 동일하다. 상기 경우가 항상 일정하지 않을 수 있다는 것을 인식해야 한다. 입력 데이터가 단일 방향으로 연속적으로 변하면, 예를 들어, 입력 데이터가 상승되면, 알고리즘(300)은 알고리즘(200)처럼 많은 압축을 제공하지 못할 수 있다. 이는 압축된 레코드들이 압축될 레코드와 베이스라인 레코드 간의 차를 표시하기 위해 압축될 레코드와 이전의 레코드 간의 차를 표시하기 위해 요구되는 것 보다 많은 니브들을 요구하기 때문이다.
알고리즘(200)에 대한 알고리즘(300)의 장점은 압축해제 동안 구현된다. 알고리즘(200)에서 처럼 요구되는 레코드와 압축되지 않은 제 1 레코드 사이의 모든 레코드들의 압축해제를 요구하기 보다, 알고리즘(300)은 단지 베이스라인 레코드와 요구되는 레코드의 압축해제만을 요구한다. 다시 앞서 제공된 6 예를 참조로, 제 5 레코드가 압축해제될 것을 요구하면, 프로세서(101)는 알고리즘(200)에 따라 압축해제된 레코드 5개를 얻기 위해, 5 레코드들(1-5)을 압축해제한다. 그러나, 알고리즘(300)에 따라, 제 5 레코드를 액세스하기 위해, 단지 2개의 레코드들, 즉 제 1 베이스라인 레코드 및 제 5 레코드만이 압축해제될 것이 요구된다. 따라서, 특정 레코드들을 액세스하는데 요구되는 프로세싱 시간은 알고리즘(300)에 따라 실질적으로 감소될 수 있다.
본 발명의 실시예에 따라, 베이스라인 레코드가 제 1 수신된 레코드일 필요가 없다는 것을 인식해야 한다. 오히려, 베이스라인 레코드는 임의의 레코드를 포함할 수 있다. 또한, 새로운 베이스라인 레코드는 각각의 시간에 요구되며, 현재의 레코드와 베이스라인 레코드 간의 차는 예정된 수의 니블들로 표시될 수 없다는 것을 인식해야 한다. 따라서, 제시된 수의 데이터 레코드들 내에는 다수의 베이스라인 레코드들이 있을 수 있다. 압축해제 동안 레코드를 액세스할 때, 프로세서(101)는 가장근접한 이전의 베이스라인 레코드를 액세스하는 것만을 요구한다. 바람직하게, 제시된 레코드를 압축해제하는데 요구되는 프로세싱 시간은 감소될 수 있다. 특히, 알고리즘(300)은 사용자/오퍼레이터가 레코드들 모두를 액세스할 필요 없이 특정 레코드들을 액세스하는 것을 원하는 상황들에 유용하다.
앞서 개시된 것처럼 본 발명은 순차적으로 액세스된 데이터 비트들의 레코드들을 압축하기 위한 방법을 제공한다. 본 발명은 현재의 데이터 레코드와 제 2 데이터 레코드 간의 차를 표시하는 메모리에 압축된 레코드를 기록함으로써 종래 기술에 비해 장점을 제공한다. 제 2 데이터 레코드는 바로 이전에 수신된 데이터 레코드를 포함하거나 또는 이전에 수신된 베이스라인 데이터 레코드를 포함할 수 있지만, 반드시 직전의 레코드를 포함하는 것은 아니다. 어느 경우에든, 압축된 레코드는 종래 기술에서 처럼 다른 레코드와 상이한 레코드의 압축되지 않은 부분을 저장하기 보다는 2개의 레코드 간의 차를 포함한다. 바람직하게, 본 발명은 레코드들의 동일한 부분들만이 압축되는 종래 기술에서 구현될 수 있는 것보다 상당히 큰 압축 비율들을 구현할 수 있다.
또한, 본 발명은 데이터를 압축해제하기 위한 효율적 방법을 제공한다. 본 발명의 실시예에 따라, 프로세서(101)는 이전에 저장된 압축되지 않은 레코드를 식별하고 원하는 레코드와 압축되지 않은 레코드 사이에 저장된 레코드들을 압축해제할 수 있다. 또 다른 실시예에 따라, 프로세서(101)는 베이스라인 레코드와 같이 이전에 저장된 압축되지 않은 레코드를 식별하고 베이스라인 레코드에만 기초하는 원하는 레코드를 얻을 수 있다.
상기 실시예들의 상세한 설명부들은 본 발명의 범주 내에서 발명자들에 의해 고려되는 모든 실시예들에 대한 전체적 설명들은 아니다. 실제로, 당업자들은 앞서 개시된 실시예들에 대한 특정 엘리먼트들이 추가의 실시예들을 생성하기 위해 다양하게 조합 또는 삭제될 수 있다는 것을 인식할 것이며, 이러한 추가의 실시예들은 본 발명의 범주 및 지시내용 내에 속한다. 또한, 당업자들은 앞서 개시된 실시예들이 본 발명의 범주 및 지시내용들 내에서 추가의 실시예들을 생성하도록 전체적으로 또는 부분적으로 조합될 수 있다는 것을 인식할 것이다.
따라서, 본 발명의 특정 실시예들 및 예들은 예시를 목적으로 본 발명에 개시되었지만, 관련 기술의 당업자들이 인식하는 것처럼, 본 발명의 범주 내에서 다양한 등가적인 변조들이 가능하다. 본 명세서에서 제공되는 개시내용들은 첨부되는 도면들에 도시되며 앞서 개시된 실시예들 만이 아니라, 다른 저장 시스템들에도 적용될 수 있다. 따라서, 본 발명의 범주는 하기의 청구항들로부터 결정되어야 한다.

Claims (19)

  1. 데이터 저장 방법으로서,
    제 1 데이터 레코드 및 적어도 제 2 데이터 레코드를 수신하는 단계;
    상기 제 1 데이터 레코드와 상기 제 2 데이터 레코드를 비교하는 단계; 및
    상기 제 1 데이터 레코드와 상기 제 2 데이터 레코드 간의 차로써 상기 제 2 데이터 레코드를 압축하는 단계
    를 포함하는, 데이터 저장 방법.
  2. 제 1 항에 있어서,
    상기 압축하는 단계 이전에 상기 제 2 데이터 레코드의 최하위 숫자(least significant digit)의 끝수를 버리는(truncating) 단계를 더 포함하는, 데이터 저장 방법.
  3. 제 1 항에 있어서,
    상기 제 1 데이터 레코드 또는 상기 적어도 제 2 데이터 레코드의 시작부(beginning)에서 상기 데이터 레코드의 마지막부(end)로 포지티브 또는 네거티브를 표시하는 숫자를 옮기는(moving) 단계를 더 포함하는, 데이터 저장 방법.
  4. 제 1 항에 있어서,
    상기 제 2 데이터 레코드를 압축하는 단계는 헤더 니블 및 하나 이상의 데이터 니블들로 상기 제 2 데이터 레코드를 압축하는 단계를 포함하는, 데이터 저장 방법.
  5. 제 4 항에 있어서,
    상기 헤더 니블은 후속하는 데이터 니블들의 수를 표시하는, 데이터 저장 방법.
  6. 제 4 항에 있어서,
    상기 헤더 니블은 상기 제 2 데이터 레코드가 상기 제 1 데이터 레코드보다 큰지, 상기 제 1 데이터 레코드 미만인지, 또는 상기 제 1 데이터 레코드와 같은지를 표시하는, 데이터 저장 방법.
  7. 제 4 항에 있어서,
    상기 하나 이상의 데이터 니블들은 상기 제 1 데이터 레코드와 상기 제 2 데이터 레코드 간의 상기 차를 포함하는, 데이터 저장 방법.
  8. 제 1 항에 있어서,
    상기 제 1 데이터 레코드와 상기 제 2 데이터 레코드 간의 상기 차가 예정된 수의 니블들로 표시될 수 없는 경우, 압축되지 않은 상기 제 2 데이터 레코드를 저장하는 단계를 더 포함하는, 데이터 저장 방법.
  9. 제 1 항에 있어서,
    베이스라인 레코드로서 상기 제 1 데이터 레코드를 설정하는 단계; 및
    순차적으로 수신되는 데이터 레코드들을 상기 베이스라인 레코드와 비교하는 단계
    를 더 포함하는, 데이터 저장 방법.
  10. 제 1 항에 있어서,
    상기 압축된 레코드를 메모리에 기록하는 단계를 더 포함하는, 데이터 저장 방법.
  11. 프로세싱 시스템(100)으로서,
    메모리(102); 및
    프로세서(101)
    를 포함하며, 상기 프로세서는,
    제 1 데이터 레코드 및 적어도 제 2 데이터 레코드를 수신하고;
    상기 제 1 데이터 레코드와 상기 제 2 데이터 레코드를 비교하고; 그리고
    상기 메모리(102)내에서, 상기 제 1 데이터 레코드와 상기 제 2 데이터 레코드 간의 차로써 상기 제 2 데이터 레코드를 압축하도록
    구성되는, 프로세싱 시스템(100).
  12. 제 11 항에 있어서,
    상기 프로세서(101)는 상기 제 2 데이터 레코드의 최하위 숫자(least significant digit)의 끝수를 버도록(to truncate) 추가로 구성되는, 프로세싱 시스템(100).
  13. 제 11 항에 있어서,
    상기 프로세서(101)는 상기 제 1 데이터 레코드 또는 상기 적어도 제 2 데이터 레코드의 시작부(beginning)에서 상기 데이터 레코드의 마지막부(end)로 포지티브 또는 네거티브를 표시하는 숫자를 옮기도록 추가로 구성되는, 프로세싱 시스템(100).
  14. 제 11 항에 있어서,
    상기 프로세서(101)는 헤더 니블 및 하나 이상의 데이터 니블들로 상기 제 2 데이터 레코드를 표시하도록 추가로 구성되는, 프로세싱 시스템(100).
  15. 제 14 항에 있어서,
    상기 헤더 니블은 상기 압축된 레코드에서 데이터 니블들의 수를 표시하는, 프로세싱 시스템(100).
  16. 제 14 항에 있어서,
    상기 헤더 니블은 상기 제 2 데이터 레코드가 상기 제 1 데이터 레코드보다 큰지, 상기 제 1 데이터 레코드 미만인지, 또는 상기 제 1 데이터 레코드와 같은지를 표시하는, 프로세싱 시스템(100).
  17. 제 14 항에 있어서,
    상기 하나 이상의 데이터 니블들은 상기 제 1 데이터 레코드와 상기 제 2 데이터 레코드 간의 상기 차를 포함하는, 프로세싱 시스템(100).
  18. 제 11 항에 있어서,
    상기 프로세서(101)는 상기 제 1 데이터 레코드와 상기 제 2 데이터 레코드 간의 상기 차가 예정된 수의 니블들로 표시될 수 없는 경우, 압축되지 않은 상기 제 2 데이터 레코드를 저장하도록 추가로 구성되는, 프로세싱 시스템(100).
  19. 제 11 항에 있어서,
    상기 프로세서(101)는 베이스라인 레코드로서 상기 제 1 데이터 레코드를 설정하고 순차적으로 수신되는 데이터 레코드들을 상기 베이스라인 레코드와 비교하도록 추가로 구성되는, 프로세싱 시스템(100).
KR1020117012027A 2008-11-13 2008-10-27 데이터 레코드들의 압축 및 압축해제를 위한 방법 및 장치 KR20110089308A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2008/083363 WO2009064855A1 (en) 2007-11-13 2008-11-13 Barrier filter high particulate entry design

Publications (1)

Publication Number Publication Date
KR20110089308A true KR20110089308A (ko) 2011-08-05

Family

ID=44927446

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117012027A KR20110089308A (ko) 2008-11-13 2008-10-27 데이터 레코드들의 압축 및 압축해제를 위한 방법 및 장치

Country Status (1)

Country Link
KR (1) KR20110089308A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150078866A (ko) * 2013-12-31 2015-07-08 에스케이하이닉스 주식회사 데이터 처리 장치 및 데이터 처리 방법
KR20150078865A (ko) * 2013-12-31 2015-07-08 에스케이하이닉스 주식회사 데이터 처리 장치 및 데이터 처리 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150078866A (ko) * 2013-12-31 2015-07-08 에스케이하이닉스 주식회사 데이터 처리 장치 및 데이터 처리 방법
KR20150078865A (ko) * 2013-12-31 2015-07-08 에스케이하이닉스 주식회사 데이터 처리 장치 및 데이터 처리 방법

Similar Documents

Publication Publication Date Title
US20110196849A1 (en) Method and apparatus for compressing and decompressing data records
US5933104A (en) Method and system for compression and decompression using variable-sized offset and length fields
US7365658B2 (en) Method and apparatus for lossless run-length data encoding
US5260693A (en) Method and system for lossless and adaptive data compression and decompression
US5627534A (en) Dual stage compression of bit mapped image data using refined run length and LZ compression
EP0559824B1 (en) Binary data communication system
US6633242B2 (en) Entropy coding using adaptable prefix codes
JP2007037115A (ja) デジタルデータを符号化する方法、データセグメントのストリームを符号化する方法、エンコーダ、データのソースを符号化するためのパラレルエンコーダ、符号化データのソースを復号するためのパラレルデコーダ、コード化データを復号する方法、磁気テープドライブ、およびデータのストリームを符号化する方法
US5640158A (en) Reversible method of encoding data
US7728740B2 (en) Data compression for communication between two or more components in a system
US6225922B1 (en) System and method for compressing data using adaptive field encoding
US6301394B1 (en) Method and apparatus for compressing data
US20050168479A1 (en) Method and apparatus for color quantization of images employing a dynamic color map
KR20110089308A (ko) 데이터 레코드들의 압축 및 압축해제를 위한 방법 및 장치
US8126929B2 (en) Method and apparatus for encoding list of variable length structures to support bi-directional scans
CN115225724B (zh) 使用分区和无关位消除的数据压缩技术
JP2536422B2 (ja) デ―タ圧縮装置及びデ―タ復元装置
US8131091B2 (en) Method and apparatus for compressing text and image
US20020196167A1 (en) NEO method and system for lossless compression and decompression
GB2360915A (en) Run length compression encoding of selected bits of data words
US20030085823A1 (en) Methods for compressing and decompressing data
JPH08251033A (ja) データ処理方法
US10432216B1 (en) Configurable compression circuit
CN111263155B (zh) 一种等分辨率cr图像的压缩方法及系统
KR20020040406A (ko) 유전자 코드에 의한 정보압축 및 저장 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application