데이터 전송의 단일 패스 엔트로피 검출 장치 및 방법 |
|||||||||||||||||
申请号 | KR1020160075507 | 申请日 | 2016-06-17 | 公开(公告)号 | KR1020160150043A | 公开(公告)日 | 2016-12-28 | ||||||||||
申请人 | 에이취지에스티 네덜란드 비.브이.; | 发明人 | 나라심하아슈윈; 싱하이아쉬스; 카람체티비제이; | ||||||||||||||
摘要 | 인라인압축및 중복제거를위한장치및 시스템을제시한다. 본발명의구현예들은메모리유닛, 및메모리유닛에결합되는프로세서를포함한다. 프로세서는데이터스트림으로부터데이터의서브세트를수신하고데이터의서브세트에대응하는참조데이터블록을선택하도록구성되되, 참조데이터블록은메모리유닛에상주하는메모리버퍼에저장된다. 프로세서는또한데이터의서브세트를위해연산되는제1 해시값을참조데이터블록을위해연산되는제2 해시값과비교하되, 제1 해시값및 제2 해시값은별개의해시테이블들에저장되고, 별개의해시테이블들중 하나에서제1 해시값과제2 해시값사이의매치의검출에응하여데이터의서브세트에대응하는헤더데이터를수정함으로써데이터의서브세트의압축표현을생성하도록구성된다. | ||||||||||||||||
权利要求 | 데이터 스트림을 저장하기 위한 메모리 유닛 및 상기 메모리 유닛에 결합되며, 단일 패스에서 압축 동작 및 중복제거 동작을 수행하도록 구성되는 프로세서로, 데이터 스트림으로부터의 데이터의 서브세트를 사용하여 상기 데이터의 서브세트에 대응하는 참조 데이터 블록을 생성하고, 상기 데이터의 서브세트를 위해 연산되는 제1 해시값을 상기 참조 데이터 블록을 위해 연산되는 제2 해시값과 비교하며, 별개의 해시 테이블들 중 하나에서 상기 제1 해시값과 상기 제2 해시값 사이의 매치의 검출에 응하여 상기 데이터의 서브세트에 대응하는 헤더 데이터를 적어도 수정함으로써 상기 데이터의 서브세트의 압축 및 중복제거 표현을 생성하도록 동작 가능한 프로세서를 포함하고, 상기 제1 해시값 및 상기 제2 해시값은 별개의 해시 테이블들에 저장되는, 장치. 제1항에 있어서, 상기 프로세서는 상기 별개의 해시 테이블들을 사용하여 병렬로 상기 제1 해시값과 상기 제2 해시값을 비교하도록 동작 가능한, 장치. 제1항에 있어서, 상기 별개의 해시 테이블들은 참조 해시 테이블 및 압축 해시 테이블을 포함하는, 장치. 제3항에 있어서, 상기 프로세서는 상기 제1 해시값과 상기 제2 해시값 사이의 매치의 검출에 응하여 상기 참조 데이터 블록을 사용하여 상기 압축 표현을 생성하도록 동작 가능하되, 상기 제2 해시값은 상기 참조 해시 테이블에 저장되는, 장치. 제4항에 있어서, 상기 프로세서는 상기 메모리 버퍼에 상기 참조 데이터 블록을 저장 시에 압축해제 절차를 초기화함으로써 연동을 생성하도록 동작 가능한, 장치. 제1항에 있어서, 상기 프로세서는 휴리스틱에 기초하여 후방-참조 인코딩 포맷을 사용하여 상기 헤더 데이터를 수정하도록 동작 가능한, 장치. 제1항에 있어서, 상기 제1 해시값 및 상기 제2 해시값은 동일한 함수를 사용하여 연산되는, 장치. 단일 패스 중에 입력 데이터 스트림에 데이터 감소 동작을 수행하는 컴퓨터-구현 방법에 있어서, 데이터 스트림으로부터 데이터의 서브세트를 수신하는 단계 상기 데이터의 서브세트에 대응하는 참조 데이터 블록을 선택하되, 상기 참조 데이터 블록은 메모리 버퍼에 저장되는 것인 단계 상기 데이터의 서브세트를 위해 연산되는 제1 해시값을 상기 참조 데이터 블록을 위해 연산되는 제2 해시값과 비교하는 단계로, 상기 제1 해시값 및 상기 제2 해시값은 별개의 해시 테이블들에 저장되는 것인 단계 및 상기 별개의 해시 테이블들 중 하나에서 상기 제1 해시값과 상기 제2 해시값 사이의 매치의 검출에 응하여 상기 데이터의 서브세트에 대응하는 헤더 데이터를 적어도 수정함으로써 상기 데이터의 서브세트의 압축 표현을 생성하는 단계를 포함하는, 방법. 제8항에 있어서, 상기 비교 단계는 상기 별개의 해시 테이블들을 사용하여 병렬로 상기 제1 해시값과 상기 제2 해시값을 비교하는 단계를 추가로 포함하는, 방법. 제8항에 있어서, 상기 별개의 해시 테이블들은 참조 해시 테이블 및 압축 해시 테이블을 포함하는, 방법. 제10항에 있어서, 상기 생성 단계는 상기 제1 해시값과 상기 제2 해시값 사이의 매치의 검출에 응하여 상기 참조 데이터 블록을 사용하여 상기 압축 표현을 생성하는 단계로, 상기 제2 해시값은 상기 참조 해시 테이블에 저장되는 것인 단계를 추가로 포함하는, 방법. 제8항에 있어서, 상기 메모리 버퍼에 상기 참조 데이터 블록을 저장 시에 압축해제 절차를 초기화함으로써 연동을 생성하는 단계를 추가로 포함하는, 방법. 제8항에 있어서, 상기 수정 단계는 휴리스틱에 기초하여 후방-참조 인코딩 포맷을 사용하여 상기 헤더 데이터를 수정하는 단계를 추가로 포함하는, 방법. 제8항에 있어서, 상기 제1 해시값 및 상기 제2 해시값은 동일한 함수를 사용하여 연산되는, 방법. 메모리 버퍼를 저장하기 위한 메모리 유닛 및 상기 메모리 유닛에 결합되는 프로세서로, 데이터 스트림으로부터 데이터의 서브세트를 수신하고 데이터 입력 메모리 버퍼에 상기 데이터의 서브세트를 저장하며 상기 데이터의 서브세트를 위한 서명을 연산하고 상기 연산된 서명을 사용하여 참조 데이터 블록을 선택하되, 상기 참조 데이터 블록은 상기 메모리 유닛에 상주하는 메모리 버퍼에 저장되고 상기 데이터의 서브세트를 위해 연산되는 제1 해시값을 상기 참조 블록을 위해 연산되는 제2 해시값과 비교하되, 상기 제1 해시값 및 상기 제2 해시값은 별개의 해시 테이블들에 저장되고 상기 별개의 해시 테이블들 중 하나에서 상기 제1 해시값과 상기 제2 해시값 사이의 매치의 검출에 응하여 상기 데이터의 서브세트에 대응하는 헤더 데이터를 수정함으로써 상기 데이터의 서브세트의 압축 표현을 생성하도록 구성되는 프로세서를 포함하는, 장치. 제15항에 있어서, 상기 프로세서는 상기 별개의 해시 테이블들을 사용하여 병렬로 상기 제1 해시값과 상기 제2 해시값을 비교하도록 동작 가능한, 장치. 제15항에 있어서, 상기 별개의 해시 테이블들은 참조 해시 테이블 및 압축 해시 테이블을 포함하는, 장치. 제17항에 있어서, 상기 프로세서는 상기 제1 해시값과 상기 제2 해시값 사이의 매치의 검출에 응하여 상기 참조 데이터 블록을 사용하여 상기 압축 표현을 생성하도록 동작 가능하되, 상기 제2 해시값은 상기 참조 해시 테이블에 저장되는, 장치. 제18항에 있어서, 상기 프로세서는 상기 메모리 버퍼에 상기 참조 데이터 블록을 저장 시에 압축해제 절차를 초기화함으로써 연동을 생성하도록 동작 가능한, 장치. 제15항에 있어서, 상기 프로세서는 휴리스틱에 기초하여 후방-참조 인코딩 포맷을 사용하여 상기 헤더 데이터를 수정하도록 동작 가능한, 장치. 제15항에 있어서, 상기 제1 해시값 및 상기 제2 해시값은 동일한 함수를 사용하여 연산되는, 장치. |
||||||||||||||||
说明书全文 |
|
압축 헤더 | 의미 |
00 | 문자, 최대 길이 60 바이트 |
01 | 로컬 카피, 3 비트 길이, 11 비트 오프셋 |
10 | 로컬 카피, 6 비트 길이, 12 비트 오프셋 |
11 | 참조 카피, 12 비트 길이, 12 비트 오프셋 |
스캔 및 매치 엔진(109)은 해시 테이블 룩업 절차를 수행하고 해시값 비교를 수행하는 기능을 포함한다. 스캔 및 매치 엔진(109)은 시스템(100)에 의해 현재 저장되는 참조 데이터 블록들에 대해 데이터의 서브세트들을 위한 연산된 해시값들을 비교하기 위한 컴퓨터-구현 룩업 절차를 수행하기 위해 해시 테이블 모듈(111)로부터 신호를 수신하고/수신하거나 전송하는 기능을 포함한다.
스캔 및 매치 엔진(109)은 해시 테이블 모듈(111)에 의해 생성되는 해시 테이블들 내에 연산된 해시값들을 위치지정하고 데이터를 비교하기 위해 해시 테이블 룩업 로직을 사용할 수 있다. 예컨대, 해시 테이블 모듈(111)은 참조 해시 테이블(111-1) 및 압축 해시 테이블(111-2)을 생성하며 비교 동작을 수행할 수 있다. 이로써, 스캔 및 매치 엔진(109)은 참조 블록 버퍼(112-3)와 같은 버퍼 관리 제어기(112)에 의해 생성되는 버퍼에 시스템(100)에 의해 현재 저장되는 참조 데이터 블록들에 대해 바이트들의 서브세트를 위한 연산된 해시값들을 룩업하도록 구성될 수 있다.
이런 방식으로, 스캔 및 매치 엔진(109)은 해시 테이블 모듈(111)에 의해 생성되는 참조 해시 테이블 및 압축 해시 테이블 모두에서 병렬 또는 동시 검색을 수행할 수 있다. 이와 같은 룩업 절차를 수행할 때, 스캔 및 매치 엔진(109)은 또한 해시 테이블 모듈(111)에 의해 사전 식별된 데이터에 대응하는 저장된 참조 데이터 블록 및/또는 압축 해시값들에 대해 시스템(100)에 의해 수신되는 바이트들의 후속 세트를 비교하기 위한 절차를 수행할 수 있다.
예컨대, 도 1d를 참조하면, 참조 블록(118)이 참조 블록 식별 모듈(114)에 의해 식별될 때, 해시 테이블 모듈(111)은, 참조 블록 버퍼에 저장될 때 참조 블록(118)의 일부(예컨대, 참조 블록 데이터 서브세트들(118-1, 118-2, 118-3, 118-4 등)을 위한 값들)에 대응하는 참조 해시 테이블(111-1)에 연산된 해시값 엔트리를 저장한다. 이런 방식으로, 시스템(100)은 참조 블록(118)에 대응하는 참조 데이터의 슁글드 해시 함수값들을 연산하고 저장하기 위해 참조 데이터 버퍼의 필 타임을 사용할 수 있고, 이는 시스템(100)에 의해 수행되는 압축 및 중복제거 절차의 수행을 향상시킨다.
아울러, 도 1d에 도시된 바와 같이, 시스템(100)은 또한 유입 데이터 스트림과 연관된 입력 데이터 블록(120)을 수신할 수 있다. 이로써, 스캔 및 매치 엔진(109)은 수신 데이터 블록(120)과 유사한 데이터의 사전 저장된 시퀀스를 식별하기 위해 조밀한 참조 해시 테이블(111-1) 및 압축 해시 테이블(111-2)을 사용하여 병렬 룩업 절차를 수행하기 위해 해시 테이블 로직(109-3)을 사용할 수 있다. 이런 방식으로, 스캔 및 매치 엔진(109)은 바이트 단위(per-byte)로 참조 블록들 및 데이터의 더 작은 서브세트들(예컨대, 입력 데이터 블록 데이터 서브세트(120-1))을 사용하여 비교를 수행할 수 있다.
스캔 및 매치 엔진(109)이 참조 해시 테이블(111-1) 및/또는 압축 해시 테이블(111-2) 내의 엔트리와 데이터 블록(120)을 위한 연산된 해시값 사이의 매치를 검출하는 경우, 이에 대응하여, 스캔 및 매치 엔진(109)은 본원에 설명된 후방-참조 인코딩 포맷 수정과 같은 수정된 압축 헤더 포맷을 사용하여 참조 블록 버퍼 또는 데이터 입력 버퍼 내의 데이터의 서브세트를 압축해제하기 위해 압축해제 모듈(108)에 신호를 전송할 수 있다. 따라서, 압축해제 출력은 이후 데이터 출력 버퍼(112-2)와 같은 버퍼 관리 제어기(112)에 의해 생성되는 버퍼에 저장될 수 있다.
일 구현예에서, 압축해제 절차의 수행 중에, 압축해제 모듈(108)은 스캔 및 매치 엔진(109)이 참조 해시 테이블(111-1) 및/또는 압축 해시 테이블(111-2)의 매치를 검출할 때 복수의 상이한 시퀀스 중 하나를 선택하도록 구성될 수 있다. 예컨대, 기결정된 휴리스틱에 기초하여, 압축해제 모듈(108)은 문자, 로컬 카피, 및/또는 참조 카피로서 데이터를 압축해제하도록 구성될 수 있다. 이런 방식으로, 압축해제 시에, 시스템(100)은 유사한 참조 데이터 입력 버퍼를 생성할 수 있고, 그에 따라 압축해제 실시예는 입력 데이터 스트림으로부터 또는 참조 블록 버퍼로부터 후방-참조를 해석하도록 수정될 수 있다.
이로써, 압축해제 모듈(108)은 스캔 및 매치 엔진(109)에 의해 사용되는 문자 스캔 로직(109-1) 및/또는 로컬 카피 스캔 로직(109-2)을 처리하도록 구성될 수 있다. 본 발명의 구현예들은 단일 참조 블록의 사용에 제한되지 않는다는 것을 이해할 수 있다. 구현예들은 기존 데이터 경로 및 프레임 구조에 대한 간단한 수정과 함께 다수의 참조 블록을 포괄하도록 확장될 수 있다. 예컨대, 구현예들은 병렬 수행되는 다수의 참조 블록 비교까지 확장될 수 있다. 게다가, 해시 테이블 모듈(111)은 상이한 참조 블록들의 세트의 각각의 참조 블록에 대응하는 다수의 참조 해시 테이블을 생성하도록 구성될 수 있다. 아울러, 다수의 참조 블록은 해시 테이블 모듈(111)에 의해 생성되는 단일 참조 해시 테이블에 저장될 수 있다.
게다가, 시스템(100)은 헛된 노력을 최소화하고 전체 시스템 성능의 손실을 방지하기 위해, 본원에 설명된 바와 같은 데이터 감소 동작의 수행 전에, 조기 온(on)을 검출하며 블록의 압축성을 예측하도록 구성될 수 있다. 예컨대, 압축해제 모듈(108)은 시스템(100)에 의해 수신되는 데이터에 집단화 절차를 수행하는 기능을 포함한다. 이로써, 압축해제 모듈(108)은 압축해제 모듈(108)이 데이터 입력 버퍼(112-1)를 통해 수신되는 유입 데이터를 단일 인스턴스로 연산되거나 처리될 수 있는 "슁글들(shingles)" 또는 데이터 바이트들의 서브세트들로 집단화할 수 있게 하는 데이터 집단화 로직(108-1)을 포함할 수 있다. 이런 방식으로, 해시 테이블 모듈(111)은 데이터 집단화 로직(108-1)을 통해 압축해제 모듈(108)에 의해 선택되는 중복 데이터 슁글들 상에 해시값들을 연산할 수 있다. 아울러, 중복 슁글들에 대해 해시 테이블 모듈(111)에 의해 연산되는 해시값들은 시스템(100)에 상주하는 메모리 및/또는 압축 해시 테이블(111-2)과 같은 데이터 구조 내에서 어디에 슁글 오프셋값들이 저장되는지 표현하는 메모리 주소 위치들로서 사용될 수 있다.
또한, 스캔 및 매치 엔진(109)은 연산된 슁글들을 위치지정하기 위해 해시 테이블 모듈(111)을 사용할 수 있고, 병렬로, 데이터 입력 버퍼(112-1)에 기재될 때 데이터 블록들에 비교 동작을 수행할 수 있다. 예컨대, 압축 해시 테이블(111-2)을 사용하여, 스캔 및 매치 엔진(109)은 유입 데이터세트와 관련된 슁글을 위한 연산된 해시값이 압축 해시 테이블(111-2)에 저장되는 해시값과 동일한 서명을 공유한다고 판단하는 경우 "해시 히트"의 발생을 검출할 수 있다. 이런 방식으로, 스캔 및 매치 엔진(109)은 2개의 슁글이 서명 연산 엔진(113)에 의해 연산되는 동일 또는 유사 서명을 가질 때 해시 히트의 발생을 검출할 수 있다.
게다가, 스캔 및 매치 엔진(109)은 해시 히트 카운터(111-3)와 같은 압축성 카운터를 증가시키기 위해 압축해제 모듈(108)에 신호를 전송하는 기능을 포함한다. 이런 방식으로, 해시 히트 카운터(111-3)는 스캔 및 매치 엔진(109)이 해시 히트의 발생을 검출할 때마다 증가될 수 있다. 해시 히트 카운터(111-3)는 시스템(100)이 시스템(100)에 의해 수신되는 유입 데이터세트 내에 빈번하게 나타나는 해시값을 추적할 수 있게 한다. 따라서, 데이터 입력 버퍼(112-1)로의 데이터 전달의 종료 시에, 시스템(100)은 전체 데이터세트를 위한 연산된 해시들의 세트를 저장할 수 있다.
또한, 시스템(100)은 시스템으로 하여금 어떤 데이터 블록들이 데이터 감소 절차(예컨대, 데이터 중복제거 절차, 참조 블록 식별 절차, 데이터 압축 절차 등)의 수행으로부터 가장 혜택을 얻을 것인지 더 잘 판단할 수 있게 하는 빈번한 해시값 매치 임계점을 저장하도록 구성될 수 있다. 이런 방식으로, 시스템(100)은 기결정된 임계값 및/또는 연산된 압축성 카운트를 사용하여 압축성 특징을 자동으로 해석할 수 있게 하는 방식으로 구성될 수 있다. 예컨대, 시스템(100)에 의한 임의의 데이터 감소 절차의 수행 전에, 이는 먼저 기결정된 임계 카운트를 참조하고, 데이터 감소 동작을 수행, 중단, 및/또는 보류할지 결정할 수 있다.
이런 방식으로, 압축해제 모듈(108)과 같은 시스템(100)의 컴포넌트들은, 임계 카운트가 빈번한 해시값 매치 임계점에 상응하거나 초과할 때, 데이터 감소 동작(예컨대, 데이터 중복제거 절차, 참조 블록 식별 절차, 데이터 압축 절차 등)의 수행을 초기화하도록 시스템(100)의 컴포넌트들에 지시하는 명령 또는 명령들의 세트를 생성할 수 있다. 따라서, 시스템(100)의 컴포넌트들은, 임계 카운트가 빈번한 해시값 매치 임계점에 상응하지 못할 때, 데이터 감소 동작의 수행을 삼가하도록 시스템(100)의 컴포넌트들에 지시하는 명령 또는 명령들의 세트를 생성할 수 있다. 시스템(100)에 의한 이와 같은 판단은 호스트 CPU 주기를 절약할 뿐만 아니라, 데이터가 호스트 드라이버와 같은 다른 드라이버들을 방해하지 않으면서 시스템을 통해 이동할 수 있게 한다.
예컨대, 일 구현예에서, 해시 히트 카운터(111-3)의 값이 기결정된 임계값 미만인 경우, 압축해제 모듈(108)은 현재 분석 하의 데이터 블록들이 낮은 압축성 특징을 보이고, 그로 인해 데이터 스트림의 적어도 일부에 대해 높은 엔트로피 레벨을 나타낸다고 판단할 수 있다. 따라서, 이러한 판단에 응하여, 압축해제 모듈(108)은 임의의 압축해제 동작을 수행하지 않도록 구성될 수 있다. 이런 방식으로, 압축해제 모듈(108)은 압축해제 동작의 수행을 중단하고/중단하거나 보류하는 명령을 전송하도록 구성될 수 있다.
그러나, 해시 히트 카운터(111-3)의 값이 기결정된 임계값 이상인 경우, 압축해제 모듈(108)은 데이터 블록들이 높은 압축성 특징을 보이고, 그로 인해 데이터 스트림의 적어도 일부에 대해 낮은 엔트로피 레벨을 나타낸다고 판단할 수 있다. 따라서, 이러한 판단에 응하여, 압축해제 모듈(108)은 압축해제 동작의 수행을 초기화하는 명령을 전송하도록 구성될 수 있다. 이런 방식으로, 압축해제 모듈(108)은 데이터 입력 버퍼(112-1)에 저장되는 유입 데이터세트와 관련된 바이트들의 주어진 세트에 대해 시스템(100)의 다른 컴포넌트들에 "압축" 또는 "우회 압축" 신호를 발행할지 판단하기 위해 압축성 인자들을 사용한다.
이런 방식으로, 시스템(100)은 주어진 데이터세트의 데이터 블록들 사이의 검출된 유사성의 빈도에 기초하여 데이터 입력 버퍼(112-1)에 저장되는 데이터세트와 관련된 엔트로피를 측정할 수 있다. 일 구현예에 따르면, 스캔 및 매치 엔진(109)은 데이터의 히스토그램 표현을 사용하여 해시 히트의 빈도를 계산할 수 있다. 또한, 해시 히트 카운터(111-3)는 하드웨어 또는 소프트웨어를 통해 구현될 수 있다.
게다가, 시스템(100)은 또한 시스템 부하 및/또는 사용자 선호도에 기초하여 임계값을 동적으로 조정하도록 구성될 수 있다. 이런 방식으로, 압축을 위한 임계점은 전력 및 레이턴시를 댓가로 압축률을 증가시키려는 목적으로 완화될 수 있다. 마찬가지로, 더 낮은 평균 레이턴시를 달성하기 위해, 더 높은 임계값을 사용할 수 있다.
도 2a는 본 발명의 구현예들에 따른 단일 패스 엔트로피 검출을 위한 예시적인 과정의 제1 부분의 흐름도이다.
단계(205)에서, 입력 데이터 스트림이 시스템에 의해 수신되고 데이터 입력 버퍼에 저장된다. 데이터 스트림의 수신 시에, 압축해제 모듈은 데이터 입력 스트림에서 발견되는 데이터의 복수의 서브세트를 집단화하기 위해 데이터 집단화 로직을 사용한다. 서브세트의 크기는 기결정될 수 있고 고정된 크기를 가질 수 있다.
단계(206)에서, 데이터 입력 버퍼에 저장되는 데이터에 대해 지문 연산 엔진에 의해 생성되는 지문 데이터를 사용하여, 서명 연산 엔진은, 단계(205) 중에 저장될 때 데이터 스트림 내의 데이터의 제1 집단화 서브세트를 위한 제1 서명을 연산한다.
단계(207)에서, 해시 테이블 모듈은 데이터의 제1 집단화 서브세트를 위한 제1 해시값을 연산하고, 매치를 검출하기 위해 해시 테이블에 저장되는 해시값에 대해 연산된 해시값을 비교한다.
단계(208)에서, 해시 테이블 모듈은 데이터의 제2 집단화 서브세트를 위한 제2 해시값을 연산하고, 매치를 검출하기 위해 해시 테이블에 저장되는 해시값에 대해 연산된 해시값을 비교한다.
단계(209)에서, 해시 테이블 모듈은 데이터의 n번째 집단화 서브세트를 위한 n번째 해시값을 연산하고, 매치를 검출하기 위해 해시 테이블에 저장되는 해시값에 대해 연산된 해시값을 비교한다.
단계(210)에서, 압축해제 모듈은 해시 테이블 모듈에 의해 검출되는 매치를 모니터링하고, 이에 대응하여, 각각의 검출된 매치에 대해 카운터를 증가시킨다.
도 2b는 본 발명의 구현예들에 따른 단일 패스 엔트로피 검출을 위한 예시적인 과정의 제2 부분의 흐름도이다. 동작(210; 도 2a 참조)의 상세가 도 2b에 약술되어 있다.
단계(211)에서, 압축해제 모듈은 기결정된 빈번한 해시값 매치 임계점에 대한 카운터의 값에 기초하여 입력 데이터 스트림의 일부에 대한 엔트로피 레벨을 판단한다.
단계(212)에서, 압축해제 모듈은 빈번한 해시값 매치 임계점에 상응하거나 초과한 것의 검출 여부에 관한 판단을 수행한다. 압축해제 모듈이 빈번한 해시값 매치 임계점에 상응하거나 초과한 것을 검출하는 경우, 압축해제 모듈은 입력 데이터 스트림의 일부에 대해 높은 엔트로피 레벨을 판단하고, 이에 대응하여, 단계(213)에 상세히 나타낸 바와 같이, 데이터 감소 동작의 수행을 초기화하기 위해 시스템 컴포넌트들에 신호를 전달한다. 압축해제 모듈이 빈번한 해시값 매치 임계점에 상응하지 않는 것을 검출하는 경우, 압축해제 모듈은 입력 데이터 스트림의 일부에 대해 낮은 엔트로피 레벨을 판단하고, 이에 대응하여, 단계(214)에 상세히 나타낸 바와 같이, 데이터 감소 동작의 수행을 중단하기 위해 시스템 컴포넌트들에 신호를 전달한다.
단계(213)에서, 압축해제 모듈은 빈번한 해시값 매치 임계점에 상응하거나 초과한 것을 검출하고, 그에 따라 압축해제 모듈은 입력 데이터 스트림의 일부에 대해 높은 엔트로피 레벨을 판단하고, 이에 대응하여, 데이터 감소 동작의 수행을 초기화하기 위해 시스템 컴포넌트들에 신호를 전달한다.
단계(214)에서, 압축해제 모듈은 빈번한 해시값 매치 임계점에 상응하지 않는 것을 검출하고, 그에 따라 압축해제 모듈은 입력 데이터 스트림의 일부에 대해 낮은 엔트로피 레벨을 판단하고, 이에 대응하여, 데이터 감소 동작의 수행을 중단하기 위해 시스템 컴포넌트들에 신호를 전달한다.
도 3a는 본 발명의 구현예들에 따른 동시 데이터 중복제거 및 압축을 위한 예시적인 과정의 흐름도이다. 동작(213; 도 2b 참조)의 상세가 도 3a에 약술되어 있다.
단계(215)에서, 참조 블록 식별 모듈은 단계(206) 중에 연산되는 서명을 시스템에 의해 현재 저장되는 서명들의 클러스터들과 비교하고, 이에 대응하여, 연산된 서명을 가장 잘 표현하는 참조 블록을 선택한다. 참조 블록 식별 모듈에 의해 선택되는 참조 블록은 시스템에 의한 추가 처리를 위해 참조 블록 버퍼에 저장된다.
단계(216)에서, 참조 블록이 단계(215)에서 저장될 때, 해시 테이블 모듈은 참조 블록에 대응하는 슁글드 해시값을 연산한다.
단계(217)에서, 단계(216) 중에 연산되는 해시값이 해시 테이블 모듈에 의해 생성되는 참조 해시 테이블에 이미 저장된 것이 아니라면, 해시값은 참조 해시 테이블에 저장된다.
단계(218)에서, 적어도 하나의 참조 블록이 참조 블록 버퍼에 저장된다면, 해시 테이블 모듈은 단계들(207, 208, 및/또는 209) 중에 연산되는 해시값에 기초하여 추가 처리를 위해 참조 해시 테이블 및/또는 압축 해시 테이블을 사용하여 해시 테이블 룩업 및/또는 헤더 수정 절차를 수행하기 위해 스캔 및 매치 엔진에 신호를 전송한다.
도 3b는 본 발명의 구현예들에 따른 해시 테이블 룩업 절차를 수행하기 위한 예시적인 과정의 흐름도이다. 동작(218; 도 3a 참조)의 상세가 도 3b에 약술되어 있다.
단계(219)에서, 스캔 및 매치 엔진은 연산된 해시값과 참조 해시 테이블에 독점적으로 저장되는 엔트리 사이의 매치를 검출했는지에 관한 판단을 수행한다. 스캔 및 매치 엔진이 매치가 검출되었다고 판단하는 경우, 단계(220)에 상세히 나타낸 바와 같이, 스캔 및 매치 엔진은 바이트 단위로 매칭된 엔트리와 연관된 참조 블록 버퍼에 저장되는 참조 블록에 대해 해시값과 연관된 데이터의 서브세트를 비교한다. 스캔 및 매치 엔진이 매치가 검출되지 않았다고 판단하는 경우, 단계(221)에 상세히 나타낸 바와 같이, 스캔 및 매치 엔진은 연산된 해시값과 압축 해시 테이블에 독점적으로 저장되는 엔트리 사이의 매치를 검출했는지에 관한 판단을 수행한다.
단계(220)에서, 스캔 및 매치 엔진은 매치가 검출되었다고 판단하였고, 그에 따라 스캔 및 매치 엔진은 바이트 단위로 매칭된 엔트리와 연관된 참조 블록 버퍼에 저장되는 참조 블록에 대해 해시값과 연관된 데이터의 서브세트를 비교하고, 이에 대응하여, "11"과 같은 참조 카피를 위한 수정된 압축 헤더 포맷을 사용하여 참조 블록 버퍼 내의 데이터의 서브세트를 압축해제하기 위해 압축해제 모듈에 신호를 전송한다. 압축해제 출력은 데이터 출력 버퍼에 저장된다.
단계(221)에서, 스캔 및 매치 엔진은 매치가 검출되지 않았다고 판단하였고, 그에 따라 스캔 및 매치 엔진은 연산된 해시값과 압축 해시 테이블에 독점적으로 저장되는 엔트리 사이의 매치를 검출했는지에 관한 판단을 수행한다. 스캔 및 매치 엔진이 매치가 검출되었다고 판단하는 경우, 단계(222)에 상세히 나타낸 바와 같이, 스캔 및 매치 엔진은 바이트 단위로 데이터 입력 버퍼에 현재 저장되는 데이터에 대해 해시값과 연관된 데이터의 서브세트를 비교한다. 스캔 및 매치 엔진이 매치가 검출되지 않았다고 판단하는 경우, 단계(223)에 상세히 나타낸 바와 같이, 스캔 및 매치 엔진은 연산된 해시값과 참조 해시 테이블 및 압축 해시 테이블 모두에 저장되는 엔트리 사이의 매치를 검출했는지에관한 판단을 수행한다.
단계(222)에서, 스캔 및 매치 엔진은 매치가 검출되었다고 판단하였고, 그에 따라 스캔 및 매치 엔진은 바이트 단위로 데이터 입력 버퍼에 현재 저장되는 데이터에 대해 해시값과 연관된 데이터의 서브세트를 비교하고, 이에 대응하여, 적절한 비트 길이 및 오프셋에 기초하여, "01" 또는 "10"과 같은 로컬 카피를 위한 수정된 압축 헤더 포맷을 사용하여 데이터 입력 버퍼 내의 데이터의 서브세트를 압축해제하기 위해 압축해제 모듈에 신호를 전송한다. 압축해제 출력은 데이터 출력 버퍼에 저장된다.
단계(223)에서, 스캔 및 매치 엔진은 매치가 검출되지 않았다고 판단하였고, 그에 따라 스캔 및 매치 엔진은 연산된 해시값과 참조 해시 테이블 및 압축 해시 테이블 모두에 저장되는 엔트리 사이의 매치를 검출했는지에관한 판단을 수행한다. 스캔 및 매치 엔진이 매치가 검출되었다고 판단하는 경우, 스캔 및 매치 엔진은 바이트 단위로 데이터 입력 버퍼에 현재 저장되는 데이터에 대해 해시값과 연관된 데이터의 서브세트를 비교하고, 이에 대응하여, 기결정된 절차에 기초하여 데이터 입력 버퍼 내의 데이터의 서브세트를 압축해제하기 위해 압축해제 모듈에 신호를 전송한다.
단계(224)에서, 스캔 및 매치 엔진은 매치가 검출되었다고 판단하였고, 그에 따라 스캔 및 매치 엔진은 바이트 단위로 데이터 입력 버퍼에 현재 저장되는 데이터에 대해 해시값과 연관된 데이터의 서브세트를 비교하고, 이에 대응하여, 기결정된 절차에 기초하여 데이터 입력 버퍼 내의 데이터의 서브세트를 압축해제하기 위해 압축해제 모듈에 신호를 전송한다. 일 구현예에 따르면, 기결정된 절차는 데이터 스트림과 연관된 데이터의 카피의 길이 및/또는 소정의 다른 지식에 따라 압축해제 절차의 선택을 로컬 매치 또는 참조 매치쪽으로 치우치게 하도록 스캔 및 매치 엔진을 구성하는 것을 포함할 수 있다.
단계(225)에서, 스캔 및 매치 엔진은 매치가 검출되지 않았다고 판단하였고, 그에 따라 연산된 해시값은 해시 테이블 모듈에 의해 생성되는 압축 해시 테이블에 저장된다.
단계(226)에서, 스캔 및 매치 엔진은 "00"과 같은 문자 시퀀스를 위한 수정된 압축 헤더 포맷을 사용하여 데이터 입력 버퍼에 저장되는 데이터의 서브세트를 압축해제하기 위해 압축해제 모듈에 신호를 전송한다. 압축해제 출력은 데이터 출력 버퍼에 저장된다.
소정의 바람직한 구현예들 및 방법들이 본원에 개시되었지만, 본 발명의 정신 및 범주를 벗어남 없이 이와 같은 구현예들 및 방법들의 변경 및 수정이 이루어질 수 있다는 것이 전술한 개시로부터 당업자들에게 명백할 것이다.
일 구현예에 따르면, 본원에 설명된 기법들은 하나 이상의 특수-목적 컴퓨팅 장치에 의해 구현될 수 있다. 특수-목적 컴퓨팅 장치는 기법들을 수행하기 위해 하드-와이어링될 수 있거나, 기법들을 수행하기 위해 지속적으로 프로그램되는 하나 이상의 주문형 집적 회로(ASIC) 또는 필드 프로그램 가능 게이트 어레이(FPGA)와 같은 디지털 전자 장치를 포함할 수 있거나, 펌웨어, 메모리, 다른 저장 장치, 또는 조합의 프로그램 명령에 따라 기법들을 수행하기 위해 프로그램되는 하나 이상의 범용 하드웨어 프로세서를 포함할 수 있다. 이와 같은 특수-목적 컴퓨팅 장치는 기법들을 달성하기 위해 주문형 하드-와이어드 로직, ASIC, 또는 FPGA를 주문형 프로그래밍과 결합할 수도 있다. 특수-목적 컴퓨팅 장치는 데이터베이스 서버, 저장 장치, 데스크탑 컴퓨터 시스템, 휴대용 컴퓨터 시스템, 핸드헬드 장치, 네트워킹 장치, 또는 기법을 구현하기 위해 하드-와이어드 및/또는 프로그램 로직을 포함하는 임의의 다른 장치일 수 있다.
본 발명의 구현예들의 상기 상세한 설명에서, 다수의 특정 상세가 본 발명의 철저한 이해를 제공하기 위해 기술되었다. 그러나, 당업자는 본 발명이 이러한 특정한 상세 없이 실시될 수 있음을 인식할 것이다. 다른 경우에, 주지의 방법들, 절차들, 컴포넌트들, 및 회로들은 본 발명의 구현예들의 양태들을 불필요하게 모호하게 하지 않기 위해 상세히 설명되지 않았다. 명료함을 위해 방법을 번호가 부여된 단계들의 시퀀스로 나타낼 수 있지만, 이러한 번호 부여가 반드시 단계들의 순서를 좌우하는 것은 아니다. 일부 단계들이 생략되거나, 병렬 수행되거나, 시퀀스의 엄격한 순서를 유지해야 한다는 요건 없이 수행될 수 있다는 것을 이해해야 한다. 본 발명의 구현예들을 도시한 도면은 반-도식적이며, 정확한 비율로 나타낸 것이 아니고, 특히 일부 치수들은 발표의 명료함을 위한 것이며, 도면에 과장되어 도시된다. 마찬가지로, 설명의 용이함을 위해 도면의 관점은 일반적으로 유사한 배향을 나타내지만, 도면의 이러한 묘사는 대개 임의적이다.