(구성)
상술한 바와 같은 목적을 달성하기 위한 본 발명의 일 특징에 따른 데이터 압축기에서 데이터 압축하는 방법은 다음과 같다. 먼저, 데이터 압축기는 연속된 n(n은 양의 정수) 개의 데이터들을 받아들이고 상기 데이터들 중 인접한 2 개의 데이터들 각각의 차를 계산한다. 상기 차들이 모두 기준값보다 작을 때, 상기 데이터 압축기는 상기 차들에 근거해서 델타 데이터를 생성하고, 상기 연속된 n 개의 데이터에 연이은 n 개의 데이터들을 받아들인 후 상기 차 계산 단계로 리턴한다. 상기 차들 중 적어도 하나가 상기 기준값보다 작지 않고 그리고 상기 델타 데이터가 적어도 하나 생성되었을 때, 상기 데이터 압축기는 상기 차들에 근거해서 압축되었음을 나타내는 커맨드, 상기 델타 데이터의 개수 그리고 상기 델타 데이터(들)를(을) 출력한다.
이 실시예에 있어서, 상기 델타 데이터를 생성하는 방법은, 상기 인접한 2 개의 데이터들 각각의 상기 차를 대응하는 델타값으로 변환하고, 상기 델타값들을 직렬로 연결해서 상기 델타 데이터를 생성한다.
본 발명의 다른 특징에 따른 데이터 압축기의 데이터 압축 방법은 다음과 같다. 먼저 상기 데이터 압축기는 현재 데이터를 받아들인다. 다음 상기 데이터 압축기는 상기 현재 데이터를 이전 데이터로 치환한다. 상기 데이터 압축기는 상기 이전 데이터에 연이은 새로운 현재 데이터를 받아들인다. 상기 데이터 압축기는 상기 이전 데이터와 상기 현재 데이터의 차를 계산하고 저장한다. 상기 데이터 압축기는 상기 이전 데이터와 상기 현재 데이터의 차가 0보다 크고 기준값보다 작을 때, 제 1 카운터의 값을 증가시키고, 상기 제 1 카운터의 값이 k(k는 양의 정수)보다 작을 때 상기 치환 단계로 리턴하고, 그리고 상기 제 1 카운터의 값이 k일 때, 상기 차들에 근거해서 델타 데이터를 생성한다. 상기 이전 데이터와 상기 현재 데이터의 차가 0이거나 또는 기준값보다 크며 그리고 상기 델타 데이터가 적어도 한개 생성되었을 때, 상기 데이터 압축기는 커맨드, 상기 델타 데이터(들)의 개수 그리고 상기 델타 데이터(들)를(을) 출력한다.
본 발명의 다른 특징에 따른 데이터 복원기의 데이터 복원 동작은 다음과 같다. 먼저 데이터 복원기는 커맨드를 받아들인다. 상기 커맨드가 상기 차들에 근거한 압축을 나타내는 커맨드일 때, 상기 데이터 복원기는 압축된 데이터의 개수, 제 1 데이터 그리고 제 2 데이터를 받아들인 후, 상기 제 1 및 제 2 데이터들로부터 원래의 n 개의 데이터를 복원하며, 카운터의 값을 증가시킨다. 상기 동작들은 상기 압축된 데이터의 개수와 상기 카운터의 값이 일치할 때까지 반복적으로 수행된다.
(실시예)
본 발명의 데이터 압축 방법은, 연속된 n(n은 양의 정수) 개의 데이터들 중 인접한 2 개의 데이터들의 차들이 모두 기준값보다 작을 때 상기 차들에 근거해서 델타 데이터를 생성한다. 이와 같은 본 발명의 압축 방법은 종래의 RLC 압축 방법 또는 변형(modified)-RLC 압축 방법에 비해 압축 효율이 높다
이하 첨부된 도면들을 참조하여 본 발명의 바람직한 실시예를 설명한다.
도 1은 본 발명의 바람직한 실시예에 따른 데이터 압축/복원 시스템의 구성을 보여주는 블록도이다. 도 1을 참조하면, 데이터 압축/복원 시스템(2)은 데이터 압축기(10), 어드레스 발생기(20), 버퍼(30), 그리고 데이터 복원기(40)를 포함한다. 데이터 압축기(10)는 데이터 프로세싱 시스템(data processing system : 1)으로부터 제공되는 데이터(Di)를 받아들여서 본 발명의 델타-RLC 압축 프로세스 또는일반적인 변형(modified)-RLC 압축 프로세스를 수행한다. 데이터 압축기(10)가 압축 동작을 수행하는 동안 생성되는 중간 데이터는 버퍼(30)에 저장되며, 압축 동작이 완료되면 커맨드(CMD)와 압축된 데이터(RLC_DATA)는 데이터 프로세싱 시스템(1)으로 전달된다. 상기 데이터 압축기(10)는 후술될 압축 동작에서 필요한 레지스터들(11-15)과 카운터들(16-19)을 포함한다. 어드레스 발생기(20)는 데이터 압축기(10)로부터의 제어 신호(CTRL)에 응답해서 데이터 압축기(10)로부터 출력되는 데이터가 저장될 버퍼(30)의 위치를 나타내는 인덱스 어드레스(INDEX)를 발생한다. 도 1에 도시된 데이터 압축/복원 시스템(2)의 구체적인 압축/복원 동작은 이하 상세히 설명된다.
본 발명의 바람직한 실시예에서 데이터 압축/복원 시스템(2)은 연속된 4 개의 데이터들 D1, D2, D3 및 D4를 델타-RLC 압축 기법을 이용하여 다음 수학식 1과 같이 압축한다.
(D1, D2, D3, D4)
=(First Data : Concatenation{Delta(D1, D2), Delta(D2, D3), Delta(D3, D4)})
=(First Data : Delta Data)
표 2는 두 번째 데이터(D2)와 첫 번째 데이터(D1)의 차의 절대값 및 두 번째 데이터(D2)와 첫 번째 데이터(D1)의 차에 각각 대응하는 델타값을 보여주고 있다. 그리고 다음 표 3은 세 번째 데이터(D3)와 두 번째 데이터(D2)의 차의 절대값(또는 네 번째 데이터(D4)와 세 번째 데이터(D3)의 차의 절대값) 또는 세 번째 데이터(D3)와 두 번째 데이터(D2)의 차(또는 네 번째 데이터(D4)와 세 번째 데이터(D3)의 차)에 대응하는 델타값을 보여주고 있다.
본 발명의 실시예에서는, 인접한 두 데이터의 차를 이용하는 대신에 인접한 두 데이터의 차의 절대값을 이용하여 델타값을 계싼한다. 발명의 바람직 한 실시예에 따른 데이터 압축/복원 시스템(2)의 동작을 용이하게 설명하기 위해서 앞서 나열된 데이터 열 1 내지 4를 압축하는 과정을 예로써 설명한다.
데이터 열 1의 연속된 4 개의 데이터들(0x00, 0x01, 0x02, 0x03)에서 인접한 두 개의 데이터의 차는 모두 '1'이다. 이 때, 첫 번째 데이터 '0x00'와 두 번째 데이터 '0x01'의 델타값Delta(D1, D2)은 '00'이고, 두 번째 데이터 '0x01'과 세 번째 데이터 '0x02'의 델타값 Delta(D2, D3)은 '000'이고 그리고 세 번째 데이터 '0x02'와 네 번째 데이터 '0x03'의 델타값은 '000'이다. 첫 번째 데이터부터 네 번째 데이터 사이의 인접한 2 개의 데이터들의 델타값들 '00', '000' 그리고 '000'을 직렬로 연결하면 이진수 '0000 0000'이 된다. 이를 16 비트로 표현하면 '0x00'가 된다.
정리하면 다음 수학식 2와 같다.
(0x00, 0x01, 0x02, 0x03)
= (0x00:Concatenation{0b00, 0b000, 0b000})
= (0x00:0x00)
수학식 2의 결과에서 앞의 '0x00'은 델타-RLC 압축이 수행된 첫 번째 데이터(D1)이고, 뒤의 '0x00'은 델타값들 '00', '000' 및 '000'을 직렬로 연결한 델타 데이터이다.
또다른 예로, 데이터 열 2의 연속된 4 개의 데이터들(0x20, 0x22, 0x28, 0x25)을 델타-RLC 압축하면 다음 수학식 3과 같다.
(0x20, 0x22, 0x28, 0x25)
= (0x00:Concatenation{b01, 0b101, 0b010})
= (0x00:0x6A)
연속된 4 개의 데이터들 D1, D2, D3 및 D4을 압축할 때, 두 번째 데이터(D2)와 첫 번째 데이터(D1)의 차에 따른 델타값을 2 진수 2비트로 표시할 수 있어야 하므로 첫 번째 데이터(D1)와 두 번째 데이터(D2)의 차는 4보다 작거나 같아야 한다. 한편, 세 번째 데이터(D3)와 두 번째 데이터(D2)의 차에 따른 델타값 그리고 네 번째 데이터(D4)와 세 번째 데이터(D3)의 차에 따른 델타값을 2진수 3비트로 표시할 수 있어야 하므로 세 번째 데이터(D3)와 두 번째 데이터(D2)의 차에 따른 델타값 그리고 네 번째 데이터(D4)와 세 번째 데이터(D3)의 차는 각각 8보다 작아야 한다. 이에 대한 설명은 추후 설명된다.
계속해서 첨부된 도면 도 2a 내지 도 2d를 참조하여 도 1에 도시된 데이터 압축/복원 시스템(2)의 구체적인 동작을 설명한다.
도 2a 내지 도 2d는 도 1에 도시된 데이터 압축/복원 시스템(2)에서 본 발명의 바람직한 실시예에 따른 델타-RLC 방식이 수행되는 제어 수순을 보여주는 플로우차트들이다.
먼저, 도 2a를 참조하면, 단계 S100에서 데이터 압축기(10)는 데이터 프로세싱 시스템(1)으로부터 데이터(Di)를 받아들이고, 이를 레지스터(11)에 저장한다. 레지스터(11)에 저장된 데이터(Di)는 후술될 델타-RLC 동작에서 압축이 시작되는 첫 번째 데이터이다.
다음 단계 S101에서 데이터 압축기(10)는 레지스터(11)에 저장된 데이터(Di)를 이전 데이터(Di-1)로 간주하고, 그리고 데이터 프로세싱 시스템(1)으로부터 다음 데이터(Di)를 받아들여서 레지스터(12)에 저장한다. 레지스터(12)에 저장된 데이터는 현재 데이터가 된다. 단계 S102에서 데이터 압축기(10)는 레지스터(11)에 저장된 이전 데이터(Di-1)와 레지스터(12)에 저장된 현재 데이터(Di)의 차를 계산한다.
단계 S103에서 데이터 압축기(10)는 이전 데이터(Di-1)와 현재 데이터(Di)가 일치하는 지를 판별한다. 판별 결과, 이전 데이터(Di-1)와 현재 데이터(D)가 일치하면 그 제어는 단계 S104로 진행해서 일치 데이터 압축 프로세스를 수행하고, 이전 데이터(Di-1)와 현재 데이터(Di)가 일치하지 않으면 그 제어는 단계 S105로 진행한다.
단계 S105는 이전 및 현재 데이터(Di-1, Di)의 차의 절대값이 기준값(REF1 또는 REF2)보다 작거나 같은 지를 판별해서 본 발명의 델타-RLC로 압축 가능한 지를 판별한다. 만일 이전 및 현재 데이터(Di-1, Di)의 차가 기준 값(REF1 또는 REF2)보다 작거나 같으면 데이터 압축기(10)는 이전 및 현재 데이터(Di-1, Di)를 본 발명의 델타-RLC로 압축 가능한 것으로 판별해서 그 제어는 단계 S106으로 진행한다. 만일 이전 및 현재 데이터(Di-1, Di)의 차가 기준 값(REF1 또는 REF2)보다 크면 데이터 압축기(10)는 이전 및 현재 데이터(Di-1, Di)를 본 발명의 델타-RLC로 압축 불가능한 것으로 판별해서 그 제어는 단계 S107로 진행한다. 단계 S107에서 데이터 압축기(10)는 불일치 데이터 압축 프로세스를 수행한다.
연속된 4 개의 데이터들 D1, D2, D3 및 D4을 압축할 때, 두 번째 데이터(D2)와 첫 번째 데이터(D1)의 차에 따른 델타값을 2 진수 2비트로 표시할 수 있어야 하므로 두 번째 데이터(D2)와 첫 번째 데이터(D1)의 차는 4보다 작아야 한다. 그러므로, 단계 S105에서 기준값은 4(=REF1)이어야 한다. 한편, 세 번째 데이터(D3)와 두 번째 데이터(D2)의 차에 따른 델타값 그리고 네 번째 데이터(D4)와 세 번째 데이터(D3)의 차에 따른 델타값을 2진수 3비트로 표시할 수 있어야 하므로 세 번째 데이터(D3)와 두 번째 데이터(D2)의 차에 따른 델타값 그리고 네 번째 데이터(D4)와 세 번째 데이터(D3)의 차는 8보다 작아야 한다. 그러므로, 단계 S105에서 기준값은 8(=REF2)이어야 한다.
이하, 단계 S104의 일치 데이터 압축 프로세스, 단계 S106의 델타-RLC 압축 프로세스, 그리고 단계 S107의 불일치 데이터 압축 프로세스에 대한 상세한 설명이 계속된다.
다시 도 1을 참조하면, EQCNT 카운터(16)는 데이터 프로세싱 시스템(1)으로부터의 현재 데이터(Di)와 이전에 입력된 데이터들이 연속적으로 일치하는 개수를 카운트한다. NEQCNT 카운터(17)는 데이터 프로세싱 시스템(1)으로부터 입력된 데이터(Di)와 이전에 입력된 데이터들이 연속적으로 불일치하는 개수를 카운트한다. RLCCNT 카운터(18)는 델타-RLC 압축 프로세스(S106)가 수행되는 개수를 카운트하되, 카운트 값이 4가 되면 클리어(clear)된다. 그리고 GCNT 카운터(19)는 RLCCNT 카운터(18)가 4가 되는 개수를 카운트한다. 이와 같은 카운터들(16-19)의 기본 동작을 참조하여 델타-RLC 압축 프로세스, 일치 데이터 압축 프로세스 그리고 불일치 데이터 압축 프로세스를 각각 설명한다.
먼저, 도 2b는 도 1에 도시된 데이터 압축/복원 시스템(2)에서 델타-RLC 압축 프로세스(S106)를 수행하는 수순을 보여주는 플로우차트이다. 델타-RLC 압축 프로세스(S106)에 대한 이해를 돕기 위해, 앞서 예를 든 데이터 열 1 "0x00, 0x01, 0x02, 0x03, 0x04, …, 0xfc, 0xfd, 0xfe, 0xff"이 데이터 압축/복원 시스템(2)으로 입력되는 경우를 설명한다. 단계 S103 및 S105에서, 이전 데이터(Di-1=D1=0x00)와 현재 데이터(Di=D2=0x01)는 일치하지 않고, 이전 데이터(Di-1=D1=0x00)와 현재 데이터(Di=D2=0x01)의 차(0b01)는 기준값(REF1=4=0b100)보다 작으므로 델타-RLC 압축 프로세스(S106)가 수행된다.
도 2b를 참조하면, 단계 S111에서 데이터 압축기(10)는 EQCNT 카운터(16)의 값이 1보다 크거나 같은 지를 판별한다. 만일 EQCNT 카운터(16)의 값이 '1'보다 크거나 같으면 제어는 단계 S112로 진행한다. 단계 S112에서 데이터 압축기(10)는 EQCNT 카운터(16)의 값에 대응하는 커맨드를 출력하고, 이전 데이터(Di-1)를 일치 데이터로서 출력한다. 만일 EQCNT 카운터(16)의 값이 1보다 작으면 그 제어는 단계 S113으로 진행한다. 단계 S112의 상세한 동작은 추후 설명된다.
단계 S113에서 데이터 압축기(10)는 NEQCNT 카운터(17)의 값이 1보다 크거나 같은 지를 판별한다. 만일 NEQCNT 카운터(17)의 값이 '1'보다 크거나 같으면 그 제어는 단계 S114로 진행한다. 단계 S114에서 데이터 압축기(10)는 NEQCNT 카운터(17)의 값에 대응하는 커맨드를 출력한다. 단계 S115에서 데이터압축기(10)는 NEQCNT 카운터(17)의 값에 대응하는 개수의 불일치 데이터를 출력한다. 단계 S114 및 S115의 상세한 동작은 추후 설명된다.
단계 S116에서 데이터 압축기(10)는 이전 데이터(Di-1=D1=0x00)와 현재 데이터(Di=D2=0x01)의 차(0b01)에 따른 델타값(0b00)을 레지스터(15)에 저장한다. 단계 S117에서 데이터 압축기(10)는 RLCCNT 카운터(18)의 값을 1만큼 증가시킨다.
단계 S118에서 데이터 압축기(10)는 RLCCNT 카운터(18)의 값이 3인 지를 판별한다. 판별 결과, RLCCNT 카운터(18)의 값이 3이면 그 제어는 단계 S119로 진행하고, RLCCNT 카운터(18)의 값이 3이 아니면 그 제어는 도 2A에 도시된 단계 S101로 진행해서 새로운 데이터(Di)를 받아들인다. RLCCNT 카운터(18)의 값은 1이므로 그 제어는 단계 S101로 진행한다.
다시 도 2a를 참조하면, 단계 S101에서 데이터 압축기(10)는 레지스터(12)에 저장된 데이터(D2)를 이전 데이터(Di-1)로 간주하고, 데이터 프로세싱 시스템(1)으로부터 새로운 데이터(Di=D3)를 받아들여서 레지스터(13)에 저장한다. 레지스터(12)에 저장된 이전 데이터(Di-1=D2=0x01)와 레지스터(13)에 저장된 현재 데이터(Di=D3=0x03)의 차(0b010)는 기준값(REF2=8=0b1000)보다 작으므로 다시 델타-RLC 압축 프로세스(S104)가 수행된다.
도 2b를 참조하면, EQCNT 카운터(16)와 NEQCNT 카운터(17)의 값은 여전히 모두 0이므로 그 제어는 단계 S116으로 진행한다. 단계 S116에서 이전 데이터(D2=0x01)와 현재 데이터(D3=0x02)의 차(0b001)에 따른 델타값(0b000)은 레지스터(15)에 저장된다. 단계 S118에서 데이터 압축기(10)는 RLCCNT 카운터(18)의값을 1만큼 증가시킨다. 따라서, RLCCNT 카운터(18)의 값은 2가 된다. RLCCNT 카운터(18)의 값이 3이 아니므로 그 제어는 도 2a의 단계 S101로 진행한다.
다시 도 2a를 참조하면, 단계 S101에서 데이터 압축기(10)는 레지스터(13)에 저장된 데이터(D3)를 이전 데이터(Di-1)로 간주하고, 데이터 프로세싱 시스템(1)으로부터 새로운 데이터(Di=D4)를 받아들여서 레지스터(14)에 저장한다. 레지스터(13)에 저장된 이전 데이터(Di-1=D3=0x02)와 레지스터(14)에 저장된 현재 데이터(Di=D4=0x03)의 차(0b001)는 기준값(REF2=0b1000)보다 작으므로 델타-RLC 압축 프로세스(S104)가 수행한다.
도 2b를 참조하면, EQCNT 카운터(16)와 NEQCNT 카운터(17)의 값은 여전히 모두 0이므로 그 제어는 단계 S116로 진행한다. 단계 S116에서 이전 데이터(D3=0x02)와 현재 데이터(D4=0x03)의 차(0b001)에 따른 델타값(0b000)은 레지스터(15)에 저장된다. 단계 S117에서 데이터 압축기(10)는 RLCCNT 카운터(18)의 값을 1만큼 증가시킨다. RLCCNT 카운터(18)의 값은 3이 된다.
단계 S118에서 RLCCNT 카운터(18)의 값이 3인 것으로 판별됨에 따라 그 제어는 단계 S119으로 진행한다. 단계 S119에서 데이터 압축기(10)는 RLCCNT 카운터(18)의 값을 0으로 클리어시킨다. 단계 S120에서 데이터 압축기(10)는 GCNT 카운터(19)의 값을 1만큼 증가시킨다.
단계 S121에서 데이터 압축기(10)는 레지스터(11)에 저장된 첫 번째 데이터(D1=0x00)를 버퍼(30)에 저장하고, 레지스터(15)에 저장된 델타값들(0b00, 0b000, 0b000)을 직렬로 연결해서 델타 데이터(D_DATA=0b00000000=0x00)를 생성하고 이를 버퍼(30)에 저장한다. 데이터 압축기(10)는 버퍼(30)에 저장될 데이터를 출력할 때마다 제어 신호(CTRL)를 출력하고, 어드레스 발생기(20)는 데이터 압축기(10)로부터의 제어 신호(CTRL)에 응답해서 버퍼(30)의 소정 위치를 가리키는 인덱스 어드레스(INDEX)를 출력한다. 예컨대, 인덱스 어드레스(INDEX)는 순차적으로 증가한다. 따라서, 버퍼(30)에는 압축 시작 데이터(D1=0x00)와 델타 데이터(D_DATA=0x00)가 저장된다.
단계 S122에서 데이터 압축기(10)는 현재 수신된 데이터(Di)가 마지막 데이터인 지를 판별한다. 판별 결과, 현재 수신된 데이터(Di)가 마지막 데이터이면 그 제어는 단계 S123으로 진행하고, 현재 수신된 데이터(Di)가 마지막 데이터가 아니면 그 제어는 도 2a에 도시된 단계 S100으로 리턴한다.
단계 S123에서 데이터 압축기(10)는 델타-RLC 압축을 나타내는 커맨드(CMD=7f)와 GCNT 카운터(19)의 값 그리고 버퍼(30)에 저장된 델타 데이터(D_DATA)를 독출해서 데이터 프로세싱 시스템(1)으로 전송한다.
상술한 바와 같은 방법으로 데이터 열 1을 압축하면, 버퍼(30)에는 압축 시작 데이터와 델타 데이터 쌍이 모두 64 개 저장된다. 즉, GCNT 카운터(19)의 카운트 값은 64이다. 데이터 압축기(10)는 마지막 데이터(0xff)까지 압축을 수행한 후 버퍼(30)에 저장된 압축 시작 데이터와 델타 데이 쌍들 독출해서 데이터 프로세싱 시스템(1)으로 전송한다. 이 때, 데이터 압축기(10)는 델타-RLC 압축되었음을 나타내는 커맨드(CMD=7f)를 먼저 데이터 프로세싱 시스템(1)으로 전송하고, 그 후 압축 시작 데이터와 델타 데이터 쌍들을 압축된 데이터(RLC_DATA)로서 데이터 프로세싱 시스템(1)으로 전송한다. 데이터 열 1에 대한 델타-RLC 압축 결과는 다음 수학식 4와 같다.
상술한 바와 같은 방법으로 데이터 압축/복원 시스템(2)이 데이터 열 2를 압축했을 때 그 결과는 다음과 같다.
(0x7f:0x40:0x20, 0x6A, …, 0x23, 0x59)
다음 표 4는 본 발명의 바람직한 실시예에 따른 데이터 압축/복원 시스템(2)으로부터 출력되는 커맨드들(CMDs)과 커맨드들 각각의 의미를 정리해서 보여주고 있다.
계속해서, 도 2a에 도시된 단계 S103에서 이전 데이터(Di-1)와 현재 데이터(Di)가 일치할 때 수행되는 일치 데이터 압축 프로세스(단계 S104)는 다음과 같다. 도 2c는 인접한 두 데이터(Di-1, Di)가 일치할 때 수행되는 일치 데이터 압축 프로세스를 보여주는 플로우차트이다.
단계 S131에서 데이터 압축기(10)는 NEQCNT 카운터(17)의 값이 1보다 크거나 같은 지를 판별한다. 만일 NEQCNT 카운터(17)의 값이 1보다 크거나 같은면 그 제어는 단계 S132로 진행한다. 단계 S132에서 데이터 압축기(10)는 NEQCNT카운터(17)의 값에 대응하는 커맨드를 출력하고, 버퍼(30)에 저장된 NEQCNT 카운터(17)의 값에 대응하는 개수의 불일치 데이터를 출력한다. 단계 S132의 구체적인 동작은 추후 설명된다.
단계 S133에서 데이터 압축기(10)는 GCNT 카운터(19)의 값이 1보다 크거나 같은 지를 판별한다. 만일 GCNT 카운터(19)의 값이 1보다 크거나 같으면 그 제어는 단계 S134로 진행하고, GCNT 카운터(19)의 값이 1보다 작으면 그제어는 단계 S135로 진행한다.
GCNT 카운터(19)는 앞서 설명한 바와 같이 연속된 4 개의 데이터가 본 발명의 델타-RLC 압축 프로세서에 의해 압축되었을 때 1씩 증가되는 카운터이다. 예를 들어, 데이터 0x00, 0x01, 0x02, 0x03, 0x03, …이 데이터 압축기(10)로 순차적으로 입력될 때, 4 개의 데이터 0x00, 0x01, 0x02, 0x03은 델타-RLC 압축 프로세스(S106)에 의해 압축되고 압축된 결과(0x00:0x00)는 버퍼(30)에 저장되며 이 때 GCNT 카운터(19)의 값은 1이 된다. 계속해서, 이전 데이터(Di-1)가 0x03이고 현재 데이터(Di)가 0x03일 때 일치 데이터 압축 프로세스(S104)가 수행된다. 이 때, 단계 S133에서 GCNT 카운터(19)의 값이 1이므로 그 제어는 단계 S134로 진행한다. 단계 S134에서 데이터 압축기(10)는 델타-RLC 압축 커맨드(7f), GCNT 카운터(19)의 값(즉, 1) 그리고 델타 데이터(0x00:0x00)를 데이터 프로세싱 시스템(1)으로 전송하고, 그 제어는 단계 S135로 진행한다.
단계 S135에서, 데이터 압축기(10)는 RLCCNT 카운터(18)의 값이 1보다 크거나 같은 지를 판별한다. 만일 RLCCNT 카운터(18)의 값이 1보다 크거나 같으면 그 제어는 단계 S136으로 진행하고, RLCCNT 카운터(18)의 값이 1보다 작으면 그 제어는 단계 S140으로 진행한다.
RLCCNT 카운터(18)는 앞서 설명한 바와 같이 이전 데이터(Di-1)와 현재 데이터(Di)의 차가 기준값보다 작아서 델타-RLC 압축 프로세스(S104)가 수행될 때 1씩 증가되는 카운터이다. 그러므로, RLCCNT 카운터(18)의 값이 1보다 크거나 같다는 것은 현재 수신된 데이터(Di) 이전에 수신된 데이터(Di-1)가 델타-RLC 압축 프로세스(S104)에 의해 압축 동작이 수행되되고 있던 중임을 나타낸다. 예를 들어, 연속된 4 개의 데이터(0x00, 0x02, 0x02, 0x02)가 순차적으로 입력될 때 첫 번째 데이터(0x00)와 두 번째 데이터(0x02)는 일치하지 않고, 첫 번째 데이터(0x00)와 두 번째 데이터(0x02)의 차(0b10)는 기준값(0b11)보다 작으므로 델타-RLC 압축 프로세스가 수행되어서 RLCCNT 카운터(18)의 값은 '1'로 된다. 그러나, 두 번째 데이터(0x02)와 세 번째 데이터(0x2f)는 동일하므로 도 2c에 도시된 일치 데이터 압축 프로세스(S104)가 수행된다. 이 때, RLCCNT 카운터(18)의 값은 '1'이므로 그 제어는 단계 S136으로 진행한다.
단계 S136에서 데이터 압축기(10)는 RLCCNT 카운터(18)의 값을 NEQCNT 카운터(17)로 치환한다. 단계 S137에서 데이터 압축기(10)는 NEQCNT 카운터(17)의 값에 대응하는 커맨드를 전송한다. 앞의 예에서 RLCCNT 카운터(18)의 값은 1이므로 커맨드는 00이 된다.
단계 S138에서 데이터 압축기(10)는 NEQCNT 카운터(17)의 값이 1인 지를 판별한다. 판별 결과, NEQCNT 카운터(17)의 값이 1이면 그 제어는 단계 S139로 진행해서 레지스터(11)에 저장된 데이터(D1)를 데이터 프로세싱 시스템(1)으로 전송한다. 판별 결과, NEQCNT 카운터(17)의 값이 1이 아니면 그 제어는 단계 S140으로 진행한다. 앞의 예에서 NEQCNT 카운터(17)의 값은 1이므로, 레지스터(11)에 저장된 데이터(0x00)가 데이터 프로세싱 시스템(1)으로 전송된다.
단계 S140에서 데이터 압축기(10)는 NEQCNT 카운터(17)의 값이 2인지를 판별한다. 판별 결과, NEQCNT 카운터(17)의 값이 2이면 그 제어는 단계 S141로 진행해서 레지스터들(11 및 12)에 저장된 데이터(D1 및 D2)를 데이터 프로세싱 시스템으로 전송한다. 판별 결과, NEQCNT 카운터(17)의 값이 2가 아니면 그 제어는 단계 S142로 진행한다.
단계 S142에서 데이터 압축기(10)는 EQCNT 카운터(16)의 값을 1만큼 증가시킨다.
단계 S143에서 데이터 압축기(10)는 EQCNT 카운터(16)의 값이 127이거나 또는 데이터 프로세싱 시스템(1)으로부터 전송된 현재 데이터(Di)가 마지막 데이터이면 단계 S144로 진행하고, EQCNT 카운터(16)의 값이 127이 아니고 그리고 현재 데이터(Di)가 마지막 데이터가 아니면 그 제어는 도 2a에 도시된 단계 S101로 진행한다.
단계 S144에서 데이터 압축기(10)는 EQCNT 카운터(16)의 값에 대응하는 커맨드 및 현재 데이터(Di)를 일치 데이터로서 출력한다. 단계 S145에서 데이터 압축기(10)는 EQCNT 카운터(16)의 값을 클리어한다.
단계 S146에서 데이터 압축기(10)는 현재 데이터(Di)가 마지막 데이터인 지를 판별한다. 판별 결과, 현재 데이터(Di)가 마지막 데이터이면 제어를 종료하고, 현재 데이터(Di)가 마지막 데이터가 아니면 도 2a에 도시된 단계 S101로 진행한다.
예를 들어, 상기 데이터 열 3과 같이 동일한 데이터(0x0a)가 256개 반복적으로 데이터 압축기(10)로 입력될 때, 데이터 압축기(10)는 EQCNT 카운터(16)의 값이 127일 때 (0x7e:0x0a)를 출력하고, EQCNT 카운터(16)의 값이 다시 127일 때 (0x7e:0x0a)를 출력하고, 나머지 2 개의 데이터에 대한 압축 데이터(0x01:0x0a)를 출력한다.
0x0a, 0x0a, 0x0a, 0x0a, 0x0a, …, 0x0a, 0x0a, 0x0a, 0x0a
=(0x7e:0x00),(0x7e:0x00),(0x01,0x0a)
계속해서, 도 2a에 도시된 단계 S105에서 이전 데이터(Di-1)와 현재 데이터(Di)의 차가 기준값(REF1 또는 REF2)보다 클 때 수행되는 불일치 데이터 압축 프로세스는 다음과 같다. 도 2d는 인접한 두 데이터(Di-1, Di)의 차가 기준값(REF)보다 클 때 수행되는 일치 데이터 압축 프로세스를 보여주는 플로우차트이다.
단계 S151에서 데이터 압축기(10)는 EQCNT 카운터(16)의 값이 1보다 크거나 같은 지를 판별한다. 만일 EQCNT 카운터(16)의 값이 1보다 크거나 같은면 그 제어는 단계 S152로 진행한다. 단계 S152에서 데이터 압축기(10)는 EQCNT 카운터(16)의 값에 대응하는 커맨드를 출력하고, 이전 데이터(Di-1)를 일치 데이터로서 출력한다.
단계 S153에서 데이터 압축기(10)는 GCNT 카운터(19)의 값이 1보다 크거나 같은 지를 판별한다. 만일 GCNT 카운터(19)의 값이 1보다 크거나 같으면 그 제어는 단계 S154로 진행하고, GCNT 카운터(19)의 값이 1보다 작으면 그 제어는 단계 S155로 진행한다.
GCNT 카운터(19)는 앞서 설명한 바와 같이 연속된 4 개의 데이터가 본 발명의 델타-RLC 압축 프로세서에 의해 압축되었을 때 1씩 증가되는 카운터이다. 예를 들어, 데이터 0x00, 0x01, 0x02, 0x03, 0x5d, …이 데이터 압축기(10)로 순차적으로 입력될 때, 4 개의 데이터 0x00, 0x01, 0x02, 0x03은 델타-RLC 압축 프로세스(S106)에 의해 압축되고 압축된 결과(0x00:0x00)는 버퍼(30)에 저장되며 이 때 GCNT 카운터(19)의 값은 1이 된다. 이전 데이터(Di-1)가 0x03일 때 현재 데이터(Di)가 0x5d이면 불일치 데이터 압축 프로세스(S107)가 수행된다. 여기서, GCNT 카운터(19)의 값이 1이므로 그 제어는 단계 S154로 진행한다. 단계 S154에서 데이터 압축기(10)는 델타-RLC 압축 커맨드(7f), GCNT 카운터(19)의 값(즉, 1) 그리고 델타 데이터(0x00:0x00)를 데이터 프로세싱 시스템(1)으로 전송하고, 그 제어는 단계 S155로 진행한다.
단계 S155에서, 데이터 압축기(10)는 RLCCNT 카운터(18)의 값이 1보다 크거나 같은 지를 판별한다. 만일 RLCCNT 카운터(18)의 값이 1보다 크거나 같으면 그 제어는 단계 S156으로 진행하고, RLCCNT 카운터(18)의 값이 1보다 작으면 그 제어는 단계 S161으로 진행한다.
RLCCNT 카운터(18) 앞서 설명한 바와 같이 이전 데이터(Di-1)와 현재데이터(Di)의 차가 기준값보다 작아서 델타-RLC 압축 프로세스(S104)가 수행될 때 1씩 증가되는 카운터이다. 그러므로, RLCCNT 카운터(18)의 값이 1보다 크거나 같다는 것은 현재 수신된 데이터(Di) 이전에 수신된 데이터(Di-1)가 델타-RLC 압축 프로세스(S104)에 의해 압축 동작이 수행되었음을 나타낸다. 예를 들어, 연속된 4 개의 데이터(0x00, 0x02, 0x3c, 0x69)가 순차적으로 입력될 때 첫 번째 데이터(0x00)와 두 번째 데이터(0x02)는 일치하지 않고, 첫 번째 데이터(0x00)와 두 번째 데이터(0x02)의 차(0b10)는 기준값(0b11)보다 작으므로 델타-RLC 압축 프로세스가 수행되어서 RLCCNT 카운터(18)의 값은 '1'로 된다. 그러나, 두 번째 데이터(0x02)와 세 번째 데이터(0x2f)의 차(0b111010)는 기준값(0b111)보다 크므로 도 2d에 도시된 불일치 데이터 압축 프로세스(S107)가 수행된다. 단계 S155의 판별 결과, RLCCNT 카운터(18)의 값은 '1'이므로 그 제어는 단계 S156으로 진행한다.
단계 S156에서 데이터 압축기(10)는 RLCCNT 카운터(18)의 값을 NEQCNT 카운터(17)으로 치환한다. 단계 S157에서 데이터 압축기(10)는 NEQCNT 카운터(17)의 값이 1인 지를 판별한다. 판별 결과, NEQCNT 카운터(17)의 값이 1이면 그 제어는 단계 S138로 진행해서 레지스터들(11, 12)에 저장된 데이터(D1)를 버퍼(30)에 저장한다. 앞의 예에서 NEQCNT 카운터(17)의 값은 1이므로, 레지스터들(11, 12)에 저장된 데이터(0x00, 0x02)를 버퍼(30)에 저장한다. 단계 S157의 판별 결과, NEQCNT 카운터(17)의 값이 1이 아니면 그 제어는 단계 S159로 진행한다.
단계 S159에서 데이터 압축기(10)는 NEQCNT 카운터(17)의 값이 2인 지를 판별한다. 판별 결과, NEQCNT 카운터(17)의 값이 2이면 그 제어는 단계 S160으로 진행해서 레지스터들(11, 12 및 13)에 저장된 데이터(D1, D2 및 D3)를 데이터 프로세싱 시스템으로 전송한다. 판별 결과, NEQCNT 카운터(17)의 값이 2가 아니면 그 제어는 단계 S161로 진행한다.
단계 S161에서 데이터 압축기(10)는 NEQCNT 카운터(17)의 값을 1만큼 증가시킨다. 단계 S162에서 데이터 압축기(10)는 현재 데이터(Di)를 버퍼(30)에 저장한다.
단계 S163에서 데이터 압축기(10)는 NEQCNT 카운터(17)의 값이 128이거나 또는 데이터 프로세싱 시스템(1)으로부터 전송된 현재 데이터(Di)가 마지막 데이터이면 단계 S164로 진행하고, NEQCNT 카운터(17)의 값이 128이 아니고 그리고 현재 데이터(Di)가 마지막 데이터가 아니면 그 제어는 도 2a에 도시된 단계 S101로 진행한다.
단계 S164에서 데이터 압축기(10)는 NEQCNT 카운터(17)의 값에 대응하는 커맨드 및 현재 데이터(Di)를 일치 데이터로서 출력한다. 단계 S164에서 데이터 압축기(10)는 NEQCNT 카운터(17)의 값을 클리어한다.
단계 S166에서 데이터 압축기(10)는 현재 데이터(Di)가 마지막 데이터인 지를 판별한다. 판별 결과, 현재 데이터(Di)가 마지막 데이터이면 제어를 종료하고, 현재 데이터(Di)가 마지막 데이터가 아니면 도 2a에 도시된 단계 S101로 진행한다.
상술한 바와 같은 방법에 의하면, 예를 들어, 상기 데이터 열 4와 같은 256 개의 데이터에서 인접한 두 데이터의 차가 기준값보다 클 때, 다음과 같은 압축 데이터(RLC_DATA)를 데이터 프로세싱 시스템(1)으로 전송한다.
0x05, 0x11, 0x3f, 0x2e, 0x91, …, 0x0a, 0xab, 0x7f, 0x19
=(0x80:0x05, 0x11, 0x3f, …), (0x80:…, 0xab, 0x7f, 0x19)
상기 일치 데이터 압축 프로세스(S104) 및 불일치 데이터 압축 프로세스(S107)는 종래의 변형-RLC 압축 프로세스와 동일하다. 다만, 종래의 변형-RLC 압축 프로세스에서는 최대 128 개의 동일한 데이터를 하나의 커맨드로 묶을 수 있었으나, 본 발명에서는 델타-RLC 압축 커맨드를 위해 최대 127 개의 동일한 데이터를 하나의 커맨드로 묶을 수 있다는 점이 다르다.
계속해서, 도 1 및 도 3a 내지 도 3d를 참조하여, 본 발명의 데이터 압축/복원 시스템(2)의 데이터 복원 동작이 설명된다.
도 3a 내지 도 3d는 도 1에 도시된 데이터 압축/복원 시스템(2)의 데이터 복원 동작을 보여주는 플로우차트들이다.
먼저, 도 3a를 참조하면, 단계 S200에서 데이터 복원기(40)는 데이터 프로세싱 시스템(1)으로부터의 커맨드(CMD)를 받아들인다. 데이터 복원기(40)는 데이터 프로세싱 시스템(1)으로부터 수신된 커맨드(CMD)가 델타-RLC 압축 커맨드(즉, 0x7f)인 지를 판별한다. 판별 결과, 데이터 프로세싱 시스템(1)으로부터 수신된 커맨드(CMD)가 델타-RLC 압축 커맨드(즉, 0x7f)이면 그 제어는 단계 S202로 진행해서 델타-RLC 복원 프로세스를 수행한다. 만일 데이터 프로세싱 시스템(1)으로부터 수신된 커맨드(CMD)가 델타-RLC 압축 커맨드(즉, 0x7f)가 아니면 그 제어는 단계 S203으로 진행한다.
단계 S203에서 데이터 복원기(40)는 데이터 프로세싱 시스템(1)으로부터 수신된 커맨드(CMD)가 일치 데이터 압축 커맨드(즉, 0x01, 0x02, 0x03, …, 0x7d 또는 0x7e)인 지를 판별한다. 판별 결과, 데이터 프로세싱 시스템(1)으로부터 수신된 커맨드(CMD)가 일치 데이터 압축 커맨드이면 그 제어는 단계 S204로 진행해서 일치 데이터 복원 프로세스를 수행한다. 만일 데이터 프로세싱 시스템(1)으로부터 수신된 커맨드(CMD)가 일치 데이터 압축 커맨드가 아니면 그 제어는 단계 S205로 진행한다.
단계 S205에서 데이터 복원기(40)는 수신된 커맨드(CMD)가 불일치 데이터 압축 커맨드(즉, x00, 0x80, 0x81, …, 0xfe 또는 0xff)인 지를 판별한다. 판별 결과, 데이터 프로세싱 시스템(1)으로부터 수신된 커맨드(CMD)가 불일치 데이터 압축 커맨드이면 그 제어는 단계 S206으로 진행해서 일치 데이터 복원 프로세스를 수행한다. 만일 데이터 프로세싱 시스템(1)으로부터 수신된 커맨드(CMD)가 불일치 데이터 압축 커맨드가 아니면 그 제어는 종료된다.
도 3b는 도 3a에 도시된 델타-RLC 압축 프로세스를 구체적으로 보여주는 플로우차트이다.
단계 S211에서 데이터 복원기(40)는 데이터 라인(RLC_DATA)을 통해 데이터 프로세싱 시스템(1)으로부터 GCNT 값을 받아들인다. 단계 S212에서 데이터 복원기(40)는 데이터 라인(RLC_DATA)을 통해 데이터 프로세싱 시스템(1)으로부터 첫 번째 데이터와 델타 테이터를 받아들인다. 단계 S213에서 데이터 복원기(40)는 수신된 첫 번째 데이터와 델타 데이터에 근거해서 4개의 원래 데이터(original data)를 복원하고, 복원된 데이터(Di, i=1, 2, 3 및 4)를 데이터 프로세싱시스템(1)으로 전송한다. 단계 S215에서 데이터 복원기(40)는 내부에 구비된 카운터(41)의 값을 1만큼 증가시킨다.
단계 S216에서 데이터 복원기(40)는 데이터 프로세싱 시스템(1)으로부터 수신된 GCNT 값과 카운터(41)의 카운트 값이 일치하는 지를 판별한다. 판별 결과, 데이터 프로세싱 시스템(1)으로부터 수신된 GCNT 값과 카운터(41)의 카운트 값이 일치하면 그 제어는 단계 S215로 진행하고, 일치하지 않으면 그 제어는 단계 S212로 진행해서 상술한 동작들을 반복적으로 수행한다.
예를 들어, 데이터 프로세싱 시스템(1)으로부터 출력된 데이터 열 1의 델타-RLC 압축된 데이터들(0x7f:0x40:0x00, 0x00, 0x00, 0x00, …,0x00, 0x00)이 데이터 복원기(40)로 입력될 때, 데이터 복원기(40)는 카운터(41)의 값이 0x40이 될 때까지 상술한 동작들을 반복적으로 수행한다. 상기 단계 S213의 데이터 복원 동작은 앞서 설명한 데이터 압축 동작으로부터 용이하게 유추될 수 있다.
예를 들어, 압축 시작 데이터가 0x00이고, 델타 데이터가 0x00일 때, 먼저 델타 데이터로부터 델타값들(Delta(D1, D2)=0b00, Delta(D2, D3)=0b000, Delta(D3, D4)=0b000)을 구한다. 그리고 나서 압축 시작 데이터와 델타값들로부터 원래의 데이터를 복원한다. 압축 시작 데이터가 0x00이므로, 4 개의 원래 데이터(Di, i=1, 2, 3 및 4)는 0x00, 0x01, 0x02 및 0x03이다. 복원된 원래 데이터(Di, i=1, 2, 3 및 4)는 데이터 프로세싱 시스템(1)으로 전송된다.
단계 S216에서 데이터 복원기(40)는 데이터 프로세싱 시스템(1)으로부터 수신된 데이터가 마지막 데이터인 지를 판별한다. 판별 결과, 데이터 프로세싱 시스템(1)으로부터 수신된 데이터가 마지막 데이터가 아니면 그 제어는 도 3a에 도시된 단계 S200으로 리턴하고, 마지막 데이터이면 그 제어는 종료된다.
도 3c는 도 3a에 도시된 일치 데이터 복원 프로세스의 구체적인 수순을 보여주는 플로우차트이다.
단계 S221에서 데이터 복원기(40)는 데이터 프로세싱 시스템(1)으로부터 일치 데이터를 수신한다. 단계 S222에서 데이터 복원기(40)는 데이터 프로세싱 시스템(1)으로부터 수신된 일치 데이터를 복원 데이터(Di)로서 데이터 프로세싱 시스템(1)으로 전송한다. 단계 S223에서 데이터 복원기(40)는 내부 카운터(41)의 값을 1만큼 증가시킨다. 단계 S224에서 데이터 복원기(40)는 카운터(41)의 값이 수신된 커맨드가 나타내는 일치 데이터 개수와 일치하는 지를 판별한다. 판별 결과, 카운터(41)의 값이 수신된 커맨드가 나타내는 일치 데이터 개수와 일치하면 그 제어는 단계S225로 진행하고, 일치하지 않으면 그 제어는 단계 S222로 리턴한다.
앞서 설명한 바와 같이, N 개의 동일한 데이터들은 (N 개의 데이터 일치에 대응하는 커맨드:일치 데이터) 형식으로 압축되므로, 원래 데이터로 복원하기 위해서는 일치 데이터를 N 번 데이터 프로세싱 시스템(1)으로 전송해야만 한다. 예를 들어, 상기 데이터 열 3을 압축하면 (0x7e:0x00),(0x7e:0x00),(0x01,0x0a)이다. 커맨드 0x7e는 연속된 127 개의 데이터가 동일함을 나타내므로 일치 데이터 0x00는 127번 데이터 프로세싱 시스템(1)으로 전송되어야 한다. 그러므로, 카운터(41)의 값이 127이 될 때까지 단계 S222부터 단계 S224까지 반복적으로 수행된다.
단계 S225는 현재 입력된 데이터가 마지막 데이터인 지를 판별한다. 판별결과, 현재 입력된 데이터가 마지막 데이터가 아니면 그 제어는 도 3a에 도시된 단계 S200으로 리턴하고, 마지막 데이터이면 그 제어는 종료된다.
도 3d는 도 3a에 도시된 불일치 데이터 복원 프로세스의 구체적인 수순을 보여주는 플로우차트이다.
단계 S231에서 데이터 복원기(40)는 데이터 프로세싱 시스템(1)으로부터 불일치 데이터를 수신한다. 단계 S232에서 데이터 복원기(40)는 데이터 프로세싱 시스템(1)으로부터 수신된 불일치 데이터를 복원 데이터(Di)로서 출력한다. 단계 S233에서 데이터 복원기(40)는 카운터(41)의 값을 1만큼 증가시킨다. 단계 S234에서 데이터 복원기(40)는 카운터(41)의 값이 수신된 커맨드가 나타내는 불일치 데이터 개수와 일치하는 지를 판별한다. 판별 결과, 카운터(41)의 값이 수신된 커맨드가 나타내는 불일치 데이터 개수와 일치하면 그 제어는 단계 S235로 진행하고, 일치하지 않으면 그 제어는 단계 S231로 리턴한다.
앞서 설명한 바와 같이, N 개의 연속된 서로 다른 데이터들은 (N 개의 데이터 불일치에 대응하는 커맨드:불일치 데이터1, 불일치 데이터2, …, 불일치 데이터N) 형식으로 압축되므로, 원래 데이터로 복원하기 위해서는 데이터 프로세싱 시스템(1)으로부터 수신된 데이터를 복원된 데이터(Di)로서 데이터 프로세싱 시스템(1)으로 제공해야 한다. 예를 들어, 상기 데이터 열 4를 압축하면 0x80:0x05, 0x11, 0x3f, …), (0x80:…, 0xab, 0x7f, 0x19)이다. 커맨드 0x80은 연속된 128 개의 데이터가 다름을 나타내므로 데이터 프로세싱 시스템으로부터 순차적으로 입력되는 데이터 0x05, 0x11, 0x3f, …는 그대로 복원된 데이터(Di)로서 출력된다.따라서, 일치 데이터 복원 프로세스와 달리 불일치 데이터 복원 프로세스에서는 불일치 데이터를 수신하는 동작을 매번 수행해야만 한다.
결론적으로, 본 발명의 데이터 압축/복원 시스템(2)에 의하면, 연속된 일련의 데이터들이 일치하거나 또는 연속될 일련의 데이터들의 변화가 커서 본 발명의 델타-RLC 압축 프로세스로 압축 불가능한 경우에는 종래의 변형-RLC와 비슷한 압축 효율을 얻게 된다. 그러나, 인접한 데이터들의 변화가 작은 경우 본 발명의 델타-RLC 압축 프로세스는 RLC 압축 뿐만 아니라 델타-RLC 압축에 비해 뛰어난 압축 효율을 얻을 수 있다.
예를 들어, 4 개의 데이터 D1, D2, D3 및 D4가 0x00, 0x01, 0x02, 0x03일 때, 종래의 RLC 방식으로 변환된 데이터는 (0x00:0x00),(0x00, 0x01), (0x00, 0x02), (0x00, 0x03)이고, 종래의 변형-RLC 방식으로 변환된 데이터는 (0xfe:0x00, 0x01, 0x02, 0x03)으로 원래의 데이터보다 모두 크기가 증가함을 알 수 있다. 그러나, 본 발명의 델타-RLC 방식으로 압축하면, (0x00:0x03:0x00)으로 감소된다. 본 발명의 델타-RLC 방식은 인접한 두 데이터의 변화가 작은 데이터 열의 크기가 커질수록 압축 효율이 높게 나타난다. 예컨대, 앞서 예를 든 256 바이트의 데이터 열 1을 본 발명의 델타-RLC 방식으로 압축하면 압축된 데이터는 1+1+(1+1)*64=130 바이트로 되므로 변형 RLC의 258 바이트에 비해 매우 우수한 압축 효율을 얻을 수 있음을 알 수 있다.
한편, 이 실시예에서는 연속된 4 개의 데이터를 델타-RLC 방식에 의해 (시작 데이터:델타 데이터) 형식으로 압축하는 방법을 도시하고 설명하였으나, 압축되는데이터의 개수는 다양하게 변경될 수 있다. 예를 들어, 연속된 5 개의 데이터 D1, D2, D3, D4 및 D5를 델타-RLC 방식으로 압축하고자 하는 경우에 델타값들(Delta(D1, D2), Delta(D2, D3), Delta(D3, D4) 및 Delta(D4, D5))은 모두 이진수 2비트로 표현된다. 그러므로, 앞서 설명한 도 2a의 단계 S105에서 기준값(REF)은 0b11로 된다. 인접한 데이터들의 변화가 작을 때에는 하나의 델타 데이터로 압축되는 데이터의 개수를 증가시키는 것이 압축 효율을 높일 수 있는 방법이 될 수 있다.