KR20160061412A - 메시지 다이제스트들을 계산하기 위한 시스템 및 방법 - Google Patents

메시지 다이제스트들을 계산하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20160061412A
KR20160061412A KR1020167011022A KR20167011022A KR20160061412A KR 20160061412 A KR20160061412 A KR 20160061412A KR 1020167011022 A KR1020167011022 A KR 1020167011022A KR 20167011022 A KR20167011022 A KR 20167011022A KR 20160061412 A KR20160061412 A KR 20160061412A
Authority
KR
South Korea
Prior art keywords
data
storage device
host
digest
storage
Prior art date
Application number
KR1020167011022A
Other languages
English (en)
Other versions
KR101766240B1 (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 KR20160061412A publication Critical patent/KR20160061412A/ko
Application granted granted Critical
Publication of KR101766240B1 publication Critical patent/KR101766240B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • G06F16/152File search processing using file content signatures, e.g. hash values
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F2003/0697Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers device management, e.g. handlers, drivers, I/O schedulers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/402Encrypted data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

데이터 중복제거 접근방식은, 연결된 호스트를 대신하여, 중복제거 동작들 및 지원에서 사용되는 다이제스트 계산들을 수행하기 위해 SSD들에서 가속화 하드웨어를 레버리징하고, 그에 의해 중복제거(de-dupe) 처리에서 다이제스트 계산의 계산 부담으로부터 호스트를 구제한다. 중복제거 처리는 메시지 다이제스트들(MD) 및/또는 해시 함수들의 계산 및 비교를 통상적으로 수반한다. 이러한 MD 함수들은 암호화 및 인증과 같은 암호 동작들을 위해 또한 종종 이용된다. 종종, SSD들은 SSD들의 보안 특징들과 연관된 MD 함수들을 위한 온보드 하드웨어 가속기들을 포함한다. 그러나, 이 하드웨어 가속기들은 메시지 다이제스트 결과를 계산하며 이 결과를 호스트로 리턴하기 위해 또한 호출될 수 있는데, 이는 외부 하드웨어 가속기와 유사하게, 그러나 다이제스트 계산이 저장을 위해 SSD를 통과하는 데이터 스트림에 대해 수행되기 때문에 데이터를 재지향시키지 않으면서, 호스트로부터 MD 계산의 부담을 효과적으로 오프로딩한다.

Description

메시지 다이제스트들을 계산하기 위한 시스템 및 방법{SYSTEM AND METHOD FOR COMPUTING MESSAGE DIGESTS}
고체 상태 디스크(SSD)는 어떠한 이동 부분들도 포함하지 않는 고성능 저장 디바이스이다. SSD들은 종래의 회전 자기 매체를 갖는 통상적인 하드 디스크 드라이브들(HDD)보다 훨씬 더 빠르고, 데이터 저장을 관리하기 위한 제어기를 통상적으로 포함한다. 제어기는 SSD와 호스트 디바이스 사이의 통신뿐만 아니라 데이터 저장 및 액세스를 포함한 SSD의 동작들을 관리한다. 데이터 중복제거(data de-duplication)는, 임의의 주어진 데이터 세트의 중복들이 식별되고 상호-참조되며, 고유한 데이터 패턴들만이 저장 매체에 기록되고 모든 중복들이 고유한 데이터 세트들, 통상적으로는 블록들에 대한 포인터들로서 캡처되는 메커니즘이다. 데이터 스트림에 중복이 존재하는 경우, 이러한 기법은 시스템이 드라이브에 기록된 데이터의 양을 대폭적으로 감소시키는 것을 허용한다.
본 발명의 상술한 그리고 다른 목적들, 특징들 및 이점들은, 동일한 참조 부호들이 상이한 도면들 전체에 걸쳐 동일한 부분들을 언급하는 첨부 도면들에 예시된 바와 같이, 본 발명의 특정한 실시예들의 다음의 설명으로부터 명백할 것이다. 도면들은 반드시 일정한 비율로 도시되어 있지는 않으며, 대신에 본 발명의 원리들의 예시 시에 강조된다.
도 1a 내지 도 1c는 메시지 다이제스트 계산을 위한 구현 옵션들의 콘텍스트를 도시한다.
도 2는 본 명세서에 개시한 바와 같은 메시지 다이제스트 계산의 흐름도를 도시한다.
도 3은 도 2에서와 같은 메시지 다이제스트 계산을 위한 디바이스의 블록도를 도시한다.
도 4는 메시지 다이제스트를 계산하기 위한 호스트측 인터페이스의 흐름도를 도시한다.
도 5는 메시지 다이제스트를 계산하기 위한 디바이스측 인터페이스의 흐름도를 도시한다.
데이터 중복제거 접근방식은, 연결된 호스트를 대신하여, 중복제거 동작들 및 지원을 수행하기 위해 HDD들 및 SSD들과 같은 대용량 저장 디바이스들에서 가속화 하드웨어를 레버리징(leverage)하고, 그에 의해 중복제거(de-dupe) 처리를 위한 해시 다이제스트 계산들의 계산 부담으로부터 호스트를 구제한다. 중복제거 처리는 메시지 다이제스트들(MD들) 및/또는 해시 함수들의 계산 및 비교를 통상적으로 수반한다. MD 함수들은 데이터에 대한 임의의 변경이 다이제스트 값을 변경하도록 더 작지만 고유한 식별자를 생성하기 위해 오리지널 데이터 항목에 적용되고, 암호화 및 인증과 같은 암호 동작들을 위해 또한 종종 이용된다. 종종, SSD들은 SSD들의 보안 특징들과 연관된 MD 함수들을 위한 온보드 하드웨어 가속기들을 포함한다. 그러나, 이 하드웨어 가속기들은 다이제스트(MD) 결과를 계산하며 이 결과를 호스트로 리턴하기 위해 또한 호출될 수 있는데, 이는 외부 하드웨어 가속기와 유사하게, 그러나 다이제스트 계산이 저장을 위해 SSD를 통과하는 데이터 스트림에 대해 수행되기 때문에 데이터를 재지향시키지 않으면서, 호스트로부터 MD 계산의 부담을 효과적으로 오프로딩한다.
본 명세서에서의 구성들은 메시지 다이제스트 및 해시 동작들이 계산 집약적인 경향이 있다는 관측에 부분적으로 기초하며, 대량의 데이터에 대해 상당한 CPU 사이클들을 요구할 수 있다. 불행하게도, 중복제거 동작들에 대한 종래의 접근방식들은, 이들이 호스트 상에서의 MD 계산들에 대해 추가의 오버헤드를 요구하거나, 또는 데이터를 재지향시키는 고비용의 하드웨어 엔진들의 호출을 요구하여, 추가로 성능을 방해하고 비용을 증가시킨다는 단점을 겪는다. 그러나, 현대의 SSD들에 배치된 온보드 하드웨어 가속기들은 SSD의 고유 보안 동작들에 의해 완전히 이용되지 않을 수 있고, SSD 하드웨어 가속기들의 능력은 MD 계산을 위해 호스트에 의해 호출될 수 있다. 따라서, 본 명세서에 개시된 구성들은, 호스트로부터 메시지 다이제스트 요청들을 수신하고 해시/다이제스트 결과들을 호스트로 리턴하기 위해 SSD에 탑재된 하드웨어 가속기들을 호출함으로써 위에서 설명된 단점들을 실질적으로 극복한다.
개시된 접근방식은, SSD 자체 상에서, 해시 다이제스트 계산의 계산 집약적 동작을 가속화함으로써 데이터 중복제거(데이터 압축 형태)를 가속화하기 위한 방법을 제안한다. SSD 아키텍처 및 설계는 해시 다이제스트 계산들의 흐름-관통형 무상태 속성(flow-through, state-less nature)으로 인해 하드웨어에서 다이제스트 계산을 가속화하기 위한 고유한 기회를 제공한다. 제안된 접근방식에서, 데이터가 SSD를 통하여 흐름에 따라, SSD는 다이제스트들을 계산하고, 이들을 중복제거 다이제스트 매칭을 위해 호스트로 다시 송신하여, 비용 효율적이고 고성능이며 전력 효율적인 중복제거 지원을 제공한다. 풀 디스크 암호화 시스템의 일부로서, SSD는 이용가능한 고유 HW 엔진들, 예를 들어 고급 암호 표준(Advanced Encryption Standard)(AES) 암호화/복호화 및 SHA-256 다이제스트 계산을 이미 갖는다. SSD는 그것을 통하여 데이터가 흐를 때 AES 암호화/복호화와 같은 데이터 변환들을 이미 수행한다. 그러므로, SHA 다이제스트들의 흐름-관통형 계산을 추가하는 것은 그다지 크지 않은 증분 비용만을 초래하는데, 그 이유는 대부분의 설계에서, 다이제스트 계산을 위한 HW 가속화 엔진들이 SSD 제어기에서 이미 이용가능하기 때문이다. 인라인 및 오프라인 다이제스트 계산 방법들을 포함하여, 다이제스트들을 계산하기 위한 2가지 상이한 데이터 경로 구현 구성들이 개시된다. 이들은 개별적으로 또는 서로 결합하여 사용될 수 있다.
본 명세서에 개시된 구성들은 SSD에서 다이제스트들을 계산한다. 이러한 접근방식은 레이턴시들을 완화시키는데, 그 이유는 데이터가 전용 HW 가속화 엔진에 병렬로 공급되기 때문이다. 이러한 접근방식은 또한 전력 효율적인데, 그 이유는 데이터가 시스템 동적 랜덤 액세스 메모리(DRAM)나 전용 가속화 HW 엔진으로 송신되지 않기 때문이며, 이들 모두는 동일한 동작을 완료하기 위해 더 많은 전력을 사용하는 경향이 있다. 이 접근방식은 다이제스트들의 호스트 중앙 처리 유닛(CPU) 계산을 오프로딩하고, 다이제스트 계산이 저장 서브시스템에서 다수의 드라이브들에 걸쳐 분산되는 것을 허용한다.
데이터 중복제거 프로세스는 동일한 콘텐츠를 갖는 데이터의 블록들을 식별하는 것을 수반한다. 전통적으로, 메시지 다이제스트들은 보안 해시 알고리즘들(SHA-256) 또는 다른 다이제스트 계산 알고리즘들을 사용하여 계산된다. 일반적으로, 512B로부터 4096B 또는 그 이상까지 길이가 변할 수 있는 각각의 데이터 블록에 대해 256 비트 또는 32 바이트 이하의 크기의 다이제스트들이 계산된다. 다이제스트들을 비교함으로써, 블록이 다른 블록과 동일한지 여부를 용이하게 결정할 수 있다.
종래의 접근방식들에서, 위에서 논의된 바와 같이, 데이터 중복제거 시스템들은 전적으로 SW 기반일 수 있고, 여기서 다이제스트 계산 및 이전의 다이제스트들과의 비교는 SW에서 행해지며, 이는 호스트 CPU에 부담을 주는 경향이 있다. HW에서 다이제스트 계산 및 다이제스트 비교의 소정 부분을 수행하는 데이터 센터에서의 저장 시스템들에 연결될 수 있는 HW 가속기들이 또한 존재하지만, 이러한 접근방식은 상당한 비용을 통상적으로 추가한다.
SSD 자체 상에서 다이제스트 계산의 제안된 접근방식을 사용하는 시스템의 예시적인 아키텍처가 아래에서 도 1c에 도시되어 있다. 다이제스트 계산은 SSD 제어기 상에 레버리징되기에 특히 매우 적합한 무상태 흐름-관통형 계산이다. SSD 제어기는 데이터가 기록되고 있을 때 이 데이터를 스누핑하고, 그것을 통과하는 각각의 블록에 대해 HW에서 다이제스트들을 계산한다. 계산된 다이제스트들은 커맨드가 완료될 때 호스트로 리턴된다. 이러한 아키텍처가 도 3에 보다 상세하게 도시되어 있다. 또한, 개시된 접근방식을 지원하기 위한 흐름-관통형 다이제스트 계산을 가능하게 하도록 SSD 제어기를 향상시키기 위해 최소 추가 비용이 존재한다.
도 1a 내지 도 1c는 메시지 다이제스트 계산을 위한 구현 옵션들의 콘텍스트를 도시한다. 도 1a 내지 도 1c를 참조하면, 도 1a는 메시지 다이제스트들을 사용하여 중복 검출(중복제거)하는 종래의 접근방식을 도시한다. 도 1a에서, 호스트 시스템(100)은 애플리케이션 실행을 위해 CPU(102) 및 메모리(DRAM)(104)를 갖고, 대용량 저장을 위해 하나 이상의 SSD들(120-1..120-4)(일반적으로 120)을 호출한다. 호스트 시스템(100)은 호스트(100) 상의 소프트웨어에서 중복제거 계산들을 수행하기 위해 중복제거 애플리케이션 또는 유틸리티(110)를 이용하고, 저장을 위한 요청들(108)이 검사되고 비교되어, 중복(통상적으로, 중복 섹터들, 페이지들 또는 블록들)을 식별한다. 도 1a에서, 중복제거 검출은 다이제스트 계산 및 비교를 위해 요구된 자원들로 인해 전체 CPU(102) 성능을 손상시킨다. 또한, 소프트웨어 기반 구현은 일반적으로 하드웨어나 펌웨어 기반 접근방식보다 수행하는데 더 오래 걸린다.
도 1b는 I/O 요청들(108)을 전용 중복제거 하드웨어(130)로 재지향시키기 위해 최적화된 코드(111)로부터 호출가능한 전용 중복제거 하드웨어 주변기기 또는 카드(130)를 갖는 호스트(100)를 도시한다. 전용 하드웨어 접근방식은 효과적이지만, 추가적인 하드웨어 엘리먼트의 비용을 요구하고, 하드웨어(130) 처리를 위해 I/O 요청들(108)의 재지향을 또한 요구한다.
도 1c는 SSD에서의 고유 중복제거 가속기 하드웨어(150-1..150-4)를 도시한다. 도 1c를 참조하면, 종래의 접근방식들과 대조적으로, 본 명세서에 개시된 구성들은 I/O 요청들(108)을 위해 호스트(100)에 의해 이미 이용되는 SSD 상에 배치된 가속화 하드웨어를 이용한다. SSD들은 거기에 저장된 데이터에 대한 보안 및/또는 암호화 동작들을 위해 전문 하드웨어를 종종 이용한다. 호스트 CPU 사이클들을 점유하거나, 고비용의 중복제거 하드웨어(130)로 재지향시키는 것보다는, SSD(140-1..140-4) 상의 온보드 중복제거 가속기 하드웨어(150-1..150-4)가 호출된다. 호스트 중복제거 명령어들(112)은 다이제스트들을 생성하기 위해 가속기 하드웨어(150)를 호출하고, 요청들(154)에 응답하여 중복제거 다이제스트 결과들(152)을 수신한다. 또한, 가속기 하드웨어(150)는 호스트 I/O 요청들을 만족시키기 위해 SSD를 이미 통과한 데이터 스트림(108)에 대해 동작하므로, 중복제거 동작들을 위한 추가의 페치들 및 기록들이 회피된다. 이러한 방식으로, 중복제거 가속기 하드웨어(150)는 중복제거 동작들을 위해 호스트(100)에 의해 호출되는데, 이는 그렇지 않았으면 중복제거 동작들을 위한 데이터의 계산(도 1a) 또는 재지향(도 1b)으로 호스트(100)에 부담을 주었을 것이다.
도 2는 본 명세서에 개시한 바와 같은 메시지 다이제스트 계산의 흐름도를 도시한다. 도 1c 및 도 2를 참조하면, 단계(200)에서, 본 명세서에 개시한 바와 같은 데이터를 저장하는 방법은, 저장 디바이스 상에 저장되도록 호스트(100)로부터 송신된 데이터에 대해 압축 및 보안 기능들을 수행하기 위해 하드웨어 가속기들(150)로 SSD(140)와 같은 저장 디바이스를 증강하는 단계를 포함한다. 예시적인 구성에서, 단계(201)에 도시된 바와 같이, 하드웨어 가속기들(150)은, 저장 디바이스 상에 배치되며 암호화, 복호화 및 보안 해시 계산을 위해 구성된 암호화 엔진들이다. 하드웨어 가속기들(150)이 보안 기반 암호화 및 인증을 지원하도록 SSD들(140) 내로 이미 설계되었기 때문에, 어떠한 추가의 제조 비용들도 중복제거 사용을 위해 초래될 필요는 없다.
단계(202)에 도시된 바와 같이, 호스트(100)는 결과(152)를 계산하기 위해 호스트(100)로부터의 커맨드 또는 요청(154)에 기초하여 하드웨어 가속기들(150)을 호출한다. 단계(203)에 도시된 바와 같이, SSD(140)는 계산된 다이제스트 결과(152)를 호스트(100)로 리턴하는데, 여기서 다이제스트 계산은, 저장 디바이스 상에서의 저장을 위해 호스트(100)로부터 저장 디바이스로 데이터가 전달될 때 이 데이터에 적용되는 무상태 흐름-관통형 계산이다. 예시적인 배열에서, 단계(204)에 개시된 바와 같이, 계산된 결과(152)는 중복제거 동작들을 지원하기 위해 다른 저장된 블록들의 다이제스트들과의 비교를 위한 메시지 다이제스트이다.
도 3은 도 2에서와 같은 메시지 다이제스트 계산을 위한 디바이스의 블록도를 도시한다. 도 1 및 도 3을 참조하면, SSD(140)는, SSD에 고유하고 SSD에서 보안 특징들을 위해 사용되는 하나 이상의 하드웨어 가속기들(150-11, 150-12)(일반적으로 150)을 포함한다. 그러나, 이들 고유한 SSD 기능들에 부가하여, 인라인 다이제스트 계산 가속화 하드웨어(150-11)는 호스트로부터의 기록 스트림(108-1)을 비침습적으로(noninvasively) 판독하는 데이터 스니퍼 또는 스누프 라인(152)에 의해 인라인으로 메시지 다이제스트들을 계산한다. 인라인 비침해적(non-intrusive) 속성은, 위에서 도 1a 및 도 1b에 도시된 바와 같이, 별개의 MD 계산들을 위한 버퍼로의 데이터의 재지향 및/또는 카피로 발생하는 성능 영향을 회피한다. 오프라인 다이제스트 계산 가속화 HW(150-12)는 방대하거나 긴급하지 않은 호스트로부터의 요청들(154)에 대해 오프라인 모드에서 유사한 다이제스트 계산을 수행한다. 이들 모두의 경우에, MD 결과들(152)은 호스트 요청(154)에 응답하여 호스트(100)로 리턴되고, 이는 호스트(100)가 별개의 전용 다이제스트 계산 하드웨어(130)의 호출 및/또는 재지향 없이 SSD(140)의 다이제스트 계산 능력들을 효과적으로 호출하는 것을 허용하는데, 그 이유는 SSD 가속기들(150)이 손쉽게 이용가능한 데이터 스트림(108-1)을 갖고, 통상의 SSD 스루풋에 영향이 미치지 않거나 최소 영향을 미치면서 다이제스트 계산을 수행할 수 있기 때문이다.
SSD(140)에서, SSD 제어기(160)는, 호스트 요청들(154)에 응답하여 제어 신호들(164)을 하드웨어 가속기(150-11)에 송신하기 위한 SSD 제어 로직(162)을 포함한다. 계산된 다이제스트들(156)은 전송 버퍼(170), 통상적으로는 SSD(140)로부터 리트리빙되며(retrieved) 저장되는 데이터를 버퍼링하는 SRAM에 송신된다. 중재자(172)는, 계산된 다이제스트(152)가 호스트(100)로 다시 송신되는 동안, 호스트(100)로부터의 오리지널 저장 요청과 부합하는 저장을 위해, 스누핑된 데이터를 메모리 매체(180-1..180-N)(일반적으로 180), 통상적으로는 NAND 메모리로 지향시킨다.
도 4는 메시지 다이제스트를 계산하기 위한 호스트측 인터페이스의 흐름도를 도시한다. 도 3 및 도 4를 참조하면, 호스트(100)는 다이제스트 계산을 수행하기 위해 SSD(140)를 호출하고, SSD(140)에서의 저장 매체(180) 상에서의 저장을 위해 해싱된 데이터가 SSD를 통과할 때 계산된 해시(다이제스트)에 기초한 결과(152)를 수신한다. 호스트(100)는 저장 매체(180) 상에서의 저장을 위해 저장 디바이스(140)에 데이터의 제1 블록을 송신하고, 단계(401)에 도시된 바와 같이, 저장 디바이스(SSD)(140) 상에서의 저장을 위해 데이터의 제2 블록을 식별한다. 이에 응답하여, 단계(402)에 도시된 바와 같이, 호스트(100)는 저장 디바이스(140)로부터 데이터의 제1 블록에 대응하는 응답(152)으로서 제1 메시지 다이제스트를 수신하고, 수신된 제1 메시지 다이제스트는 저장 매체(180) 상의 저장 동안 데이터에 의해 횡단된 데이터 경로(152)로부터 저장 디바이스(140) 상의 하드웨어 가속기들(150)에 의해 계산된다. 단계(403)에 도시된 바와 같이, 저장 디바이스(140)는, 다이제스트 계산을 위해 데이터의 추가의 송신을 요구하지 않고, 저장 디바이스로 지향되는 데이터를 데이터 경로(152)를 통해 수동으로 스누핑한다.
단계(404)에 도시된 바와 같이, 하드웨어 가속기들(150)은, 데이터의 블록(또는 다른 증분)을 식별하고 이 블록이 저장을 위해 호스트(100)로부터 저장 디바이스(140)까지 데이터 경로(108) 상에서 전달될 때 이 블록에 다이제스트 함수를 적용함으로써, 데이터의 다이제스트를 계산한다. 단계(405)에 도시된 바와 같이, 호스트(100)는 데이터의 제2 블록을 저장 디바이스(140)에 송신한다. 데이터의 제1 블록 및 제2 블록은 연속적일 필요는 없고, 다른 저장 요청들에 의해 분리될 수 있다. 후속 시간에, 단계(406)에 도시된 바와 같이, 호스트(100)는 저장 디바이스(140)로부터 데이터의 제2 블록에 대응하는 제2 메시지 다이제스트를 수신하고, 제2 메시지 다이제스트는 데이터 블록들의 중복을 검출하기 위해 제1 메시지 다이제스트와 비교하기 위한 것이다. 중복 데이터 블록들의 검출(중복제거 처리)은 임의의 적합한 간격으로 발생할 수 있지만, 최적화 및 튜닝 파라미터들은, 예컨대 파일마다, 단위 시간(즉, N분과 같은 고정 간격)마다, 또는 다른 기준들로, 중복들을 포함할 가능성이 있는 이전 블록들의 범위를 좌우할 것이다. 단계(407)에 개시된 바와 같이, 저장 디바이스(140)는 데이터의 다른 블록들과의 비교 및 중복 검출을 위해 계산된 메시지 다이제스트들에 응답하여 호스트(100) 인터페이스로 계산된 결과(152)를 리턴한다.
도 5는 메시지 다이제스트를 계산하기 위한 디바이스측 인터페이스의 흐름도를 도시한다. 도 3 및 도 5를 참조하면, 단계(500)에서, 본 명세서에 개시된 바와 같은 데이터 중복 검출 방법은, 호스트(100)로부터의 커맨드 또는 요청(154)에 기초하고 호스트(100)로부터 저장 디바이스(140) 상의 저장 매체(180)까지 데이터 경로(108-1)를 횡단하는 데이터에 적용되는 메시지 다이제스트 계산을 위해 구성된 온보드 하드웨어 가속기(150)를 호출하는 단계를 포함한다. 예시적인 구성에서, 단계(501)에 도시된 바와 같이, 하드웨어 가속기들(150)은, 저장 디바이스(140) 상에 배치되며 암호화, 복호화 및 보안 해시 계산을 위해 구성된 암호화 엔진들이다. 단계(502)에서, 요청(154)이 온라인 다이제스트 계산을 위한 것인지 또는 오프라인 다이제스트 계산을 위한 것인지에 기초하여 판정이 이루어진다. 온라인 다이제스트 계산이 요청되는 경우에는, 단계(503)에 도시된 바와 같이, 하드웨어 가속기들(140)은, 데이터의 블록을 식별하고 이 블록이 저장 매체(180) 상에서의 저장을 위해 호스트(100)로부터 저장 디바이스(140)까지 데이터 경로(152) 상에서 전달될 때 이 블록에 다이제스트 함수를 적용함으로써, 데이터의 다이제스트를 계산한다. 예시적인 배열에서, 단계(504)에 도시된 바와 같이, 이것은 저장될 데이터의 비침습적 스누핑을 수반하고, 이러한 스누핑은, 데이터가 데이터 경로(108-1) 상에서 호스트로부터 저장 디바이스에서 수신되고, 데이터가 저장에 대해 계속 방해받지 않음에 따라 데이터 라인(152)에 의해 분기되거나 수동으로 "스니핑"될 때 발생한다. 그러므로, 단계(505)에 도시된 바와 같이, 하드웨어 가속기들(140)은 데이터가 호스트(100)로부터 저장 매체(180)로 전달될 때 횡단된 데이터 경로(108-1)로부터 데이터의 메시지 다이제스트를 계산한다. 단계(506)에 개시된 바와 같이, 다이제스트 계산은, 저장 디바이스(140)의 저장 매체(180) 또는 미디어 컴포넌트(media component) 상에서의 저장을 위해 호스트(100)로부터 저장 디바이스(140)로 데이터가 전달될 때 이 데이터에 적용되는 무상태 흐름-관통형 계산이다. 이러한 접근방식은 연관된 레이턴시들을 회피하는데, 그 이유는 데이터가 전용 HW 가속화 엔진에 병렬로 공급되기 때문이다. 이러한 접근방식은 또한 전력 효율적인데, 그 이유는 데이터가 시스템 DRAM이나 전용 외부 가속화 HW 엔진으로 송신되지 않기 때문이며, 이들 모두는 동일한 동작을 완료하기 위해 더 많은 전력을 사용하는 경향이 있다. 이 접근방식은 다이제스트들의 호스트 CPU 계산을 오프로딩하고, 그 계산이 저장 서브시스템에서 다수의 드라이브들(저장 디바이스들(140))에 걸쳐 분산되는 것을 허용한다. 그러므로, 단계(507)에 도시된 바와 같이, 하드웨어 가속기들(150)은 데이터 경로(108-1)로부터 저장 매체(180)로 데이터를 재지향시키지 않고 메시지 다이제스트를 계산하지만, 단순히 데이터를 스누핑하거나 관찰할 뿐이다. 그런 다음, 단계(510)에 도시된 바와 같이, 데이터는 저장 매체(180) 상에 (동시에 또는 임의의 특정 순서로) 기록된다.
하드웨어 가속기들(150)이 단계(502)에서의 체크에 따라 오프라인 계산을 위해 호출되는 경우에는, 오프라인 다이제스트 계산이 발생한다. 인라인 방법에서, 다이제스트들은 수행된 각각의 기록 동작에 대해 SSD를 통해 데이터가 흐를 때 계산된다. 이것은 통상적으로 다이제스트들을 계산하는 가장 효율적인 방법이다. 그러나, 호스트(100)는 요청(154)이 오프라인 방법을 개시하는 SSD 상에 이미 존재하는 다른 블록들에 대한 다이제스트들을 요청할 수 있는데, 이러한 오프라인 방법에서, 데이터는 매체로부터 정적 랜덤 액세스 메모리(SRAM)에 의해 일반적으로 정의된 전송 버퍼 내로 판독되고, 오프라인 엔진(150-12)이 이 데이터에 대해 작동하여 다이제스트들을 계산한다. 다이제스트들이 계산된 이후에, 이들은 다이제스트 매칭을 위해 호스트(100)로 송신된다. 그러므로, 오프라인 다이제스트 계산은, 단계(508)에 도시된 바와 같이, 저장 디바이스(140) 상의 저장 매체(180)에 이전에 기록된 데이터의 블록들을 식별하는 것, 및 단계(509)에 도시된 바와 같이, 식별된 블록들을 오프라인 계산들을 위해 다이제스트 버퍼 내로 리트리빙하는 것을 포함한다. 어느 경우에도, 단계(511)에 도시된 바와 같이, 저장 디바이스(140)는 계산된 메시지 다이제스트를 응답(152)으로서 호스트(100)로 리턴한다.
본 기술분야의 통상의 기술자라면, 본 명세서에서 정의된 프로그램들 및 방법들이 a) ROM 디바이스들과 같은 기록불가능 저장 매체 상에 영구적으로 저장된 정보, b) 플로피 디스크들, 자기 테이프들, CD들, RAM 디바이스들, 및 다른 자기 및 광학 매체와 같은 비일시적인 기록가능 저장 매체 상에 변경가능하게 저장된 정보, 또는 c) 인터넷 또는 전화 모뎀 라인들과 같은 전자 네트워크에서와 같이 통신 매체를 통해 컴퓨터로 전달된 정보를 포함하지만 이에 제한되지 않는 많은 형태들로 사용자 처리 및 렌더링 디바이스에 전달가능하다는 것을 손쉽게 인식하여야 한다. 동작들 및 방법들은 소프트웨어 실행가능 객체에서 또는 명령어들에 응답하는 프로세서에 의한 실행을 위해 인코딩된 명령어들의 세트로서 구현될 수 있다. 대안적으로, 본 명세서에 개시된 동작들 및 방법들은 주문형 집적 회로들(ASIC들), 필드 프로그램가능 게이트 어레이들(FPGA들), 상태 머신들, 제어기들, 또는 다른 하드웨어 컴포넌트들 또는 디바이스들과 같은 하드웨어 컴포넌트들, 또는 하드웨어, 소프트웨어 및 펌웨어 컴포넌트들의 조합을 사용하여 전체적으로 또는 부분적으로 구현될 수 있다.
본 명세서에서 정의된 시스템 및 방법들이 본 발명의 실시예들을 참조하여 구체적으로 도시되고 설명되었지만, 형태 및 상세에서의 다양한 변경들은 첨부 청구항들에 의해 포괄되는 본 발명의 범위로부터 벗어나지 않고 이루어질 수 있다는 것이 본 기술분야의 통상의 기술자에 의해 이해될 것이다.

Claims (22)

  1. 데이터 중복 검출 방법으로서,
    호스트로부터의 커맨드에 기초하고 상기 호스트로부터 저장 디바이스 상의 저장 매체까지 데이터 경로를 횡단하는 데이터에 적용되는 메시지 다이제스트 계산을 위해 구성된 온보드 하드웨어 가속기를 호출하는 단계;
    상기 데이터가 상기 호스트로부터 상기 저장 매체로 전달될 때 상기 횡단된 데이터 경로로부터 상기 데이터의 메시지 다이제스트를 계산하는 단계;
    상기 저장 매체 상에 상기 데이터를 저장하는 단계; 및
    상기 계산된 메시지 다이제스트를 상기 호스트로 리턴하는 단계
    를 포함하는 데이터 중복 검출 방법.
  2. 제1항에 있어서,
    상기 데이터 경로로부터 상기 저장 매체로 상기 데이터를 재지향시키지 않고 상기 메시지 다이제스트를 계산하는 단계를 더 포함하는 데이터 중복 검출 방법.
  3. 제1항 또는 제2항에 있어서,
    저장될 상기 데이터를 비침습적 스누핑(noninvasive snooping)하는 단계를 더 포함하고,
    스누핑은, 상기 데이터가 상기 호스트로부터 상기 저장 디바이스에서 수신될 때 발생하는 데이터 중복 검출 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 메시지 다이제스트 계산은, 상기 저장 디바이스의 미디어 컴포넌트(media component) 상에서의 저장을 위해 상기 호스트로부터 상기 저장 디바이스로 데이터가 전달될 때 상기 데이터에 적용되는 무상태 흐름-관통형 계산(stateless, flow-through computation)인 데이터 중복 검출 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 하드웨어 가속기들에 의해, 데이터의 블록을 식별하고 상기 블록이 저장을 위해 상기 호스트로부터 상기 저장 디바이스까지 데이터 경로 상에서 전달될 때 상기 블록에 다이제스트 함수(digest function)를 적용함으로써, 상기 데이터의 다이제스트를 계산하는 단계를 더 포함하는 데이터 중복 검출 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 하드웨어 가속기들은, 상기 저장 디바이스 상에 배치되며 암호화, 복호화 및 보안 해시 계산을 위해 구성된 암호화 엔진들인 데이터 중복 검출 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 저장 디바이스 상의 상기 저장 매체에 이전에 기록된 데이터의 블록들을 식별하는 단계;
    상기 식별된 블록들을 오프라인 계산들을 위해 다이제스트 버퍼 내로 리트리빙(retrieving)하는 단계;
    상기 버퍼링된 데이터 블록의 다이제스트를 계산하기 위해 상기 하드웨어 가속기들을 호출하는 단계; 및
    상기 계산된 다이제스트를 상기 호스트로 리턴하는 단계
    를 더 포함하는 데이터 중복 검출 방법.
  8. 저장 디바이스로서,
    호스트 디바이스에 대한 인터페이스;
    상기 호스트 디바이스로부터의 커맨드에 기초하고 상기 호스트로부터 상기 저장 디바이스 상의 저장 매체까지 데이터 경로를 횡단하는 데이터에 적용되는 메시지 다이제스트 계산을 위해 구성된 온보드 하드웨어 가속기;
    상기 데이터가 상기 호스트로부터 상기 저장 매체로 전달될 때 상기 횡단된 데이터 경로로부터 상기 데이터의 메시지 다이제스트를 계산하기 위해 상기 하드웨어 가속기에 응답하는 상기 데이터 경로; 및
    상기 데이터를 저장하기 위한 저장 매체
    를 포함하고,
    상기 인터페이스는 상기 계산된 메시지 다이제스트를 상기 호스트로 리턴하도록 또한 구성되는 저장 디바이스.
  9. 제8항에 있어서,
    상기 하드웨어 가속기는, 상기 데이터 경로로부터 상기 저장 매체로 상기 데이터를 재지향시키지 않고 상기 메시지 다이제스트를 계산하도록 구성되는 저장 디바이스.
  10. 제8항 또는 제9항에 있어서,
    상기 하드웨어 가속기는 저장될 상기 데이터를 비침습적 스누핑하도록 구성되고,
    스누핑은, 상기 데이터가 상기 호스트로부터 상기 저장 디바이스에서 수신될 때 발생하는 저장 디바이스.
  11. 제8항 내지 제10항 중 어느 한 항에 있어서,
    상기 하드웨어 가속기는, 상기 저장 디바이스 상에 배치되며 암호화, 복호화 및 보안 해시 계산을 위해 구성된 하나 이상의 암호화 엔진들을 포함하는 저장 디바이스.
  12. 제8항 내지 제11항 중 어느 한 항에 있어서,
    상기 다이제스트 계산은, 상기 저장 디바이스의 미디어 컴포넌트 상에서의 저장을 위해 상기 호스트로부터 상기 저장 디바이스로 데이터가 전달될 때 상기 데이터에 적용되는 무상태 흐름-관통형 계산인 저장 디바이스.
  13. 제8항 내지 제12항 중 어느 한 항에 있어서,
    상기 하드웨어 가속기들은 인라인 및 오프라인 모듈들을 더 포함하고,
    상기 오프라인 모듈들은,
    상기 저장 디바이스 상의 상기 저장 매체에 이전에 기록된 데이터의 블록들을 식별하고,
    상기 식별된 블록들을 오프라인 계산들을 위해 다이제스트 버퍼 내로 리트리빙하고,
    상기 버퍼링된 데이터 블록의 다이제스트를 계산하기 위해 상기 하드웨어 가속기들을 호출하고,
    상기 계산된 다이제스트를 상기 호스트로 리턴하도록
    구성되는 저장 디바이스.
  14. 데이터를 저장하는 방법으로서,
    저장 디바이스 상에 저장되도록 호스트로부터 송신된 데이터에 대해 압축 및 보안 기능들을 수행하기 위해 하드웨어 가속기들로 상기 저장 디바이스를 증강하는 단계;
    결과를 계산하기 위해 상기 호스트로부터의 커맨드에 기초하여 상기 하드웨어 가속기들을 호출하는 단계; 및
    상기 계산된 결과를 상기 호스트로 리턴하는 단계
    를 포함하고,
    상기 계산은, 상기 저장 디바이스 상에서의 저장을 위해 상기 호스트로부터 상기 저장 디바이스로 데이터가 전달될 때 상기 데이터에 적용되는 무상태 흐름-관통형 계산인 방법.
  15. 제14항에 있어서,
    계산된 결과는 메시지 다이제스트인 방법.
  16. 제14항 또는 제15항에 있어서,
    상기 하드웨어 가속기들은, 상기 저장 디바이스 상에 배치되며 암호화, 복호화 및 보안 해시 계산을 위해 구성된 암호화 엔진들인 방법.
  17. 비일시적인 컴퓨터 판독가능 저장 매체 상에 인코딩된 명령어들을 갖는 컴퓨터 프로그램 제품으로서,
    상기 명령어들은, 프로세서에 의해 실행될 때, 데이터 중복 검출 방법을 수행하고,
    상기 데이터 중복 검출 방법은,
    저장 매체 상에서의 저장을 위해 저장 디바이스에 데이터의 제1 블록을 송신하는 단계;
    상기 저장 디바이스 상에서의 저장을 위해 데이터의 제2 블록을 식별하는 단계;
    상기 저장 디바이스로부터 상기 데이터의 제1 블록에 대응하는 제1 메시지 다이제스트를 수신하는 단계 - 상기 수신된 제1 메시지 다이제스트는, 상기 저장 매체 상의 저장 동안 상기 데이터에 의해 횡단된 데이터 경로로부터 상기 저장 디바이스 상의 하드웨어 가속기들에 의해 계산됨 -;
    상기 데이터의 제2 블록을 상기 저장 디바이스에 송신하는 단계; 및
    상기 저장 디바이스로부터 상기 데이터의 제2 블록에 대응하는 제2 메시지 다이제스트를 수신하는 단계 - 상기 제2 메시지 다이제스트는 데이터 블록들의 중복을 검출하기 위해 상기 제1 메시지 다이제스트와 비교하기 위한 것임 -
    를 포함하는 컴퓨터 프로그램 제품.
  18. 제17항에 있어서,
    상기 저장 디바이스는, 다이제스트 계산을 위해 데이터의 추가의 송신을 요구하지 않고 상기 저장 디바이스로 지향되는 상기 데이터를 수동으로 스누핑하는 컴퓨터 프로그램.
  19. 제18항 또는 제19항에 있어서,
    데이터의 다른 블록들과의 비교 및 중복 검출을 위해 계산된 메시지 다이제스트들에 응답하여 호스트 인터페이스로 상기 계산된 결과를 리턴하는 단계를 더 포함하는 컴퓨터 프로그램.
  20. 제17항 내지 제19항 중 어느 한 항에 있어서,
    상기 하드웨어 가속기들에 의해, 데이터의 블록을 식별하고 상기 블록이 저장을 위해 상기 호스트로부터 상기 저장 디바이스까지 데이터 경로 상에서 전달될 때 상기 블록에 다이제스트 함수를 적용함으로써, 상기 데이터의 다이제스트를 계산하는 단계를 더 포함하는 컴퓨터 프로그램.
  21. 컴퓨터 시스템으로서,
    데이터를 저장하기 위한 저장 매체를 갖는 고체 상태 저장 디바이스(SSD);
    상기 저장 디바이스 상의 저장 매체까지 데이터 경로를 횡단하는 데이터에 기초한 메시지 다이제스트 계산을 위해 구성된 상기 SSD 상의 온보드 하드웨어 가속기;
    상기 데이터가 상기 저장 매체로 전달될 때 상기 횡단된 데이터 경로로부터 상기 데이터의 메시지 다이제스트를 계산하기 위해 상기 하드웨어 가속기들에 응답하는 상기 데이터 경로; 및
    메시지 다이제스트 계산을 위한 데이터를 송신하고, 상기 계산된 메시지 다이제스트를 수신하기 위한 호스트 디바이스 - 상기 호스트 디바이스는 상기 데이터를 디스플레이하기 위한 사용자 인터페이스를 가짐 -
    를 포함하는 컴퓨터 시스템.
  22. 컴퓨터 시스템으로서,
    저장 매체 상에서의 저장을 위해 저장 디바이스에 데이터의 제1 블록을 송신하는 수단;
    상기 저장 디바이스 상에서의 저장을 위해 데이터의 제2 블록을 식별하는 수단;
    상기 저장 디바이스로부터 상기 데이터의 제1 블록에 대응하는 제1 메시지 다이제스트를 수신하는 수단 - 상기 수신된 제1 메시지 다이제스트는, 상기 저장 매체 상의 저장 동안 상기 데이터에 의해 횡단된 데이터 경로로부터 상기 저장 디바이스 상의 하드웨어 가속기들에 의해 계산됨 -;
    상기 데이터의 제2 블록을 상기 저장 디바이스에 송신하는 수단; 및
    상기 저장 디바이스로부터 상기 데이터의 제2 블록에 대응하는 제2 메시지 다이제스트를 수신하는 수단 - 상기 제2 메시지 다이제스트는 데이터 블록들의 중복을 검출하기 위해 상기 제1 메시지 다이제스트와 비교하기 위한 것임 -
    을 포함하는 컴퓨터 시스템.
KR1020167011022A 2013-11-27 2014-10-21 메시지 다이제스트들을 계산하기 위한 시스템 및 방법 KR101766240B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/091,598 2013-11-27
US14/091,598 US9619167B2 (en) 2013-11-27 2013-11-27 System and method for computing message digests
PCT/US2014/061533 WO2015080813A1 (en) 2013-11-27 2014-10-21 System and method for computing message digests

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020177021598A Division KR102164223B1 (ko) 2013-11-27 2014-10-21 메시지 다이제스트들을 계산하기 위한 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20160061412A true KR20160061412A (ko) 2016-05-31
KR101766240B1 KR101766240B1 (ko) 2017-08-23

Family

ID=53183670

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020177021598A KR102164223B1 (ko) 2013-11-27 2014-10-21 메시지 다이제스트들을 계산하기 위한 시스템 및 방법
KR1020167011022A KR101766240B1 (ko) 2013-11-27 2014-10-21 메시지 다이제스트들을 계산하기 위한 시스템 및 방법

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020177021598A KR102164223B1 (ko) 2013-11-27 2014-10-21 메시지 다이제스트들을 계산하기 위한 시스템 및 방법

Country Status (6)

Country Link
US (2) US9619167B2 (ko)
EP (1) EP3074881A4 (ko)
KR (2) KR102164223B1 (ko)
CN (1) CN105659222B (ko)
RU (1) RU2643651C2 (ko)
WO (1) WO2015080813A1 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9933838B2 (en) * 2014-09-24 2018-04-03 Seagate Technology Llc Power management in a storage compute device
KR102396435B1 (ko) 2015-08-11 2022-05-11 삼성전자주식회사 불휘발성 메모리 장치, 버퍼 메모리 및 컨트롤러를 포함하는 스토리지 장치를 포함하는 컴퓨팅 장치의 동작 방법
US10359953B2 (en) 2016-12-16 2019-07-23 Western Digital Technologies, Inc. Method and apparatus for offloading data processing to hybrid storage devices
US10353604B2 (en) * 2016-12-27 2019-07-16 Intel Corporation Object transformation in a solid state drive
US11010431B2 (en) 2016-12-30 2021-05-18 Samsung Electronics Co., Ltd. Method and apparatus for supporting machine learning algorithms and data pattern matching in ethernet SSD
US11256431B1 (en) 2017-01-13 2022-02-22 Lightbits Labs Ltd. Storage system having a field programmable gate array
US10581808B2 (en) 2017-03-23 2020-03-03 Microsoft Technology Licensing, Llc Keyed hash contact table
US10496335B2 (en) 2017-06-30 2019-12-03 Intel Corporation Method and apparatus for performing multi-object transformations on a storage device
US10585843B2 (en) 2018-03-05 2020-03-10 Samsung Electronics Co., Ltd. SSD architecture for FPGA based acceleration
US10585819B2 (en) 2018-03-05 2020-03-10 Samsung Electronics Co., Ltd. SSD architecture for FPGA based acceleration
CN110390516B (zh) * 2018-04-20 2023-06-06 伊姆西Ip控股有限责任公司 用于数据处理的方法、装置和计算机存储介质
KR102570581B1 (ko) 2018-06-07 2023-08-24 삼성전자 주식회사 스토리지 장치와 재구성 가능 로직 칩을 포함하는 스토리지 장치 세트 및 이를 포함하는 스토리지 시스템
CN109302341B (zh) * 2018-10-30 2021-02-02 北京达佳互联信息技术有限公司 即时通信方法、装置、电子设备及存储介质
US11112972B2 (en) 2018-12-05 2021-09-07 Samsung Electronics Co., Ltd. System and method for accelerated data processing in SSDs
CN111506268B (zh) * 2020-04-17 2023-07-18 北京百度网讯科技有限公司 代码文件存储方法、装置和电子设备
CN111738703B (zh) * 2020-05-29 2023-06-02 中国科学院计算技术研究所 一种加速安全散列算法的加速器
US12093258B2 (en) 2020-12-14 2024-09-17 Samsung Electronics Co., Ltd. Storage device adapter to accelerate database temporary table processing
US20210157512A1 (en) * 2021-02-02 2021-05-27 Intel Corporation Flexible configuration of storage device with translation language set
KR20230035947A (ko) 2021-09-06 2023-03-14 삼성전자주식회사 저장 장치 및 그의 동작 방법

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU5854796A (en) * 1995-05-10 1996-11-29 3Do Company, The Method and apparatus for managing snoop requests using snoop advisory cells
US7849317B2 (en) 2003-12-15 2010-12-07 Pitney Bowes Inc. Method for mail address block image information encoding, protection and recovery in postal payment applications
AU2005312895B2 (en) * 2004-12-08 2012-02-02 B-Obvious Ltd. Bidirectional data transfer optimization and content control for networks
JP4845674B2 (ja) * 2006-10-26 2011-12-28 キヤノン株式会社 データ処理装置及び方法、通信装置、並びにプログラム
US7941459B1 (en) * 2007-03-29 2011-05-10 Symantec Corporation Selectable use of single-instance store backup methodology in combination with other methods
US7904450B2 (en) 2008-04-25 2011-03-08 Wilson Kelce S Public electronic document dating list
JP5414223B2 (ja) 2008-09-16 2014-02-12 株式会社日立ソリューションズ インターネットバックアップにおける転送データ管理システム
US20100306180A1 (en) * 2009-01-28 2010-12-02 Digitiliti, Inc. File revision management
US20110055471A1 (en) * 2009-08-28 2011-03-03 Jonathan Thatcher Apparatus, system, and method for improved data deduplication
US8250325B2 (en) * 2010-04-01 2012-08-21 Oracle International Corporation Data deduplication dictionary system
JP5316711B2 (ja) 2010-06-10 2013-10-16 日本電気株式会社 ファイル記憶装置、ファイル記憶方法およびプログラム
JP5494817B2 (ja) 2010-10-19 2014-05-21 日本電気株式会社 ストレージシステム、データ管理装置、方法及びプログラム
US9223511B2 (en) * 2011-04-08 2015-12-29 Micron Technology, Inc. Data deduplication
CN104040516B (zh) * 2011-11-17 2017-03-15 英特尔公司 用于数据去重的方法、设备和系统
US9417811B2 (en) * 2012-03-07 2016-08-16 International Business Machines Corporation Efficient inline data de-duplication on a storage system
US9697147B2 (en) * 2012-08-06 2017-07-04 Advanced Micro Devices, Inc. Stacked memory device with metadata management
US9021189B2 (en) * 2013-07-24 2015-04-28 NXGN Data, Inc. System and method for performing efficient processing of data stored in a storage node

Also Published As

Publication number Publication date
RU2643651C2 (ru) 2018-02-02
WO2015080813A1 (en) 2015-06-04
KR20170092713A (ko) 2017-08-11
CN105659222B (zh) 2019-09-17
EP3074881A4 (en) 2017-08-16
US9619167B2 (en) 2017-04-11
CN105659222A (zh) 2016-06-08
EP3074881A1 (en) 2016-10-05
US10120608B2 (en) 2018-11-06
KR101766240B1 (ko) 2017-08-23
US20150149695A1 (en) 2015-05-28
KR102164223B1 (ko) 2020-10-12
RU2016116679A (ru) 2017-11-01
US20170322746A1 (en) 2017-11-09

Similar Documents

Publication Publication Date Title
KR101766240B1 (ko) 메시지 다이제스트들을 계산하기 위한 시스템 및 방법
US9405684B1 (en) System and method for cache management
JP6370838B2 (ja) データ転送に関する単一パスエントロピー検出のための装置及び方法
US5943421A (en) Processor having compression and encryption circuitry
JP6227007B2 (ja) データ圧縮領域へのデータの実時間分類
US8738857B1 (en) System and method for improving cache performance
JP2017011703A (ja) データ転送に関する単一パスエントロピー検出のための装置及び方法
TWI771933B (zh) 借助命令相關過濾器來進行重複資料刪除管理的方法、主裝置以及儲存伺服器
US9747222B1 (en) Dynamic ingestion throttling of data log
US9086972B2 (en) Managing metadata for caching devices during shutdown and restart procedures
US11431480B2 (en) Smart compressor based on adaptive CPU/QAT scheduling method
US10140033B2 (en) Apparatus, system, and method for searching compressed data
US8738858B1 (en) System and method for improving cache performance
US8775775B1 (en) Dynamic prefetch throttling for multi-controller systems
US20230185717A1 (en) System, device and method for accessing device-attached memory
US9645740B2 (en) Self-detecting storage bottleneck while handling sequential I/O operations
US10943032B2 (en) Data encryption and decryption techniques
US12074962B2 (en) Systems, methods, and apparatus for dividing and encrypting data
US20230049329A1 (en) Systems, methods, and apparatus for processing data at a storage device
KR102403063B1 (ko) 모바일 디바이스 및 모바일 디바이스의 메모리 관리 방법
US11379317B2 (en) Uninterrupted file level restore service using siamese engine
US10528529B1 (en) Multi-core journal system and method
US11861166B2 (en) System and method for network interface controller based data deduplication
US9208098B1 (en) System and method for improving cache performance
US11269516B1 (en) Pattern detection system and method

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
A107 Divisional application of patent
GRNT Written decision to grant