KR20140116933A - 복합식 비휘발성 저장 디바이스를 위한 데이터 이송 - Google Patents

복합식 비휘발성 저장 디바이스를 위한 데이터 이송 Download PDF

Info

Publication number
KR20140116933A
KR20140116933A KR1020147022828A KR20147022828A KR20140116933A KR 20140116933 A KR20140116933 A KR 20140116933A KR 1020147022828 A KR1020147022828 A KR 1020147022828A KR 20147022828 A KR20147022828 A KR 20147022828A KR 20140116933 A KR20140116933 A KR 20140116933A
Authority
KR
South Korea
Prior art keywords
storage device
unit
data structure
data
data storage
Prior art date
Application number
KR1020147022828A
Other languages
English (en)
Other versions
KR101599177B1 (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 KR20140116933A publication Critical patent/KR20140116933A/ko
Application granted granted Critical
Publication of KR101599177B1 publication Critical patent/KR101599177B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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/068Hybrid storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/217Hybrid disk, e.g. using both magnetic and solid state storage devices
    • 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
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0656Data buffering arrangements

Abstract

복합식 비휘발성 데이터 저장 디바이스를 관리하기 위한 접근법이 기술된다. 일 실시예에서, 솔리드 스테이트 디바이스와 같은 고속 비휘발성 저장소 및 전통적인 자기 하드 드라이브와 같은 보다 저속의 비휘발성 저장소로 구성된 복합식 저장 디바이스를 관리하기 위한 방법은, SSD 디바이스와 같은 고속 비휘발성 저장 디바이스 내의 한 세트의 유닛들 내의 각각의 유닛에의 최근 액세스의 인스턴스를 저장하는 제1 데이터 구조를 유지하는 단계, 및 또한 HDD와 같은 보다 저속의 저장 디바이스 내의 유닛이 적어도 사전결정된 횟수만큼 액세스되었는지 여부를 나타내는 제2 데이터 구조를 유지하는 단계를 포함할 수 있다. 일 실시예에서, 제2 데이터 구조는 확률론적 해시 테이블일 수 있는데, 이는 요구되는 메모리 오버헤드가 낮지만, 보다 저속의 저장 디바이스 내의 유닛 또는 블록이 최근에 참조되었는지 여부에 대해 항상 정확한 응답을 제공하도록 보장되지는 않는다.

Description

복합식 비휘발성 저장 디바이스를 위한 데이터 이송{DATA MIGRATION FOR COMPOSITE NON-VOLATILE STORAGE DEVICE}
상호 참조
본 출원은 2012년 2월 16일자로 출원된 미국 가출원 제61/599,927호의 이익을 주장하며, 이 미국 가출원은 이에 의해 참고로 포함된다. 본 출원은 또한 2012년 2월 16일자로 또한 출원된 공계류 중인 미국 출원 제61/599,930호에 관련되며, 이 미국 출원은 이에 의해 참고로 포함된다.
본 발명은 저속 메모리 디바이스와 고속 메모리 디바이스의 복합체인 복합식 비휘발성 메모리에서의 데이터 저장을 관리하기 위한 방법에 관한 것이다. 복합식 디스크 시스템에서, 크고 저속이며 저렴한 자기 하드 드라이브(magnetic hard drive)가 솔리드 스테이트 드라이브(solid state drive)와 같은 작고 고속이지만 비싼 저장 디바이스와 결합되어 논리 볼륨(logical volume)을 형성할 수 있다. 이는 자기 하드 디스크 드라이브(HDD)의 대용량을 제공하면서 솔리드 스테이트 드라이브(SSD)를 통한 고속 액세스의 이점을 제공할 수 있다. 그러한 복합식 디스크를 관리하기 위한 이전의 기법은 최소 최근 사용(least recently used, LRU) 알고리즘, 또는 클록(CLOCK) 알고리즘, 또는 쑹장(Song Jiang)에 의해 기술된 클록프로(ClockPro) 알고리즘과 같은 알고리즘들을 사용했다. 이들 이전의 기법은 복합식 디스크의 고속 부분과 저속 부분 사이에서의 데이터의 할당을 개선할 수 있지만, 이들 기법은 복합식 디스크의 두 부분 사이에서 데이터를 할당하기 위해 이들 기법에 사용되는 데이터 구조를 구현하기 위해 이들 기법이 대량의 DRAM과 같은 대량의 메인 메모리를 요구한다는 점에서 공간 효율적이지 않은 경향이 있다. 이런 이유로, 복합식 디스크의 둘 이상의 콤포넌트 사이에서 데이터를 할당하거나 이송(migrating)하는 데 사용되는 데이터 구조를 저장하기 위해 그만큼의 메모리를 요구하지 않는 개선된 공간 효율적 기법에 대한 필요성이 존재한다.
일 실시예에서, 솔리드 스테이트 디바이스와 같은 고속 비휘발성 저장 디바이스 및 자기 하드 드라이브와 같은 보다 저속의 비휘발성 저장 디바이스에의 액세스를 관리하기 위한 방법은, SSD 디바이스와 같은 고속 비휘발성 저장 디바이스 내의 한 세트의 유닛(unit)들 내의 각각의 유닛에의 액세스의 최근성(recency)을 나타내는 제1 데이터 구조를 유지하는 단계, 및 또한 HDD 디바이스와 같은 보다 저속의 저장 디바이스 내의 유닛 또는 블록(block)이 최근에 참조되었는지 여부(예컨대, 최근에 1회만 참조된 유닛 또는 블록)를 나타내는 제2 데이터 구조를 유지하는 단계를 포함할 수 있다. 일 실시예에서, 제2 데이터 구조는, 공간 효율적이고 요구되는 메모리 오버헤드(overhead)를 감소시키는 확률론적 해시 테이블일 수 있다. 확률론적 해시 테이블은 보다 저속의 저장 디바이스 내의 유닛 또는 블록이 최근에 참조되었는지 여부에 대해 대체로 정확하지만, 항상 정확한 응답을 제공하도록 보장되지는 않는다.
본 발명의 다른 특징들이 첨부 도면 및 다음의 상세한 설명으로부터 자명할 것이다.
상기의 개요는 본 발명의 모든 태양들을 총망라한 목록을 포함하는 것은 아니다. 본 발명이 상기에 요약된 다양한 태양들, 및 하기의 상세한 설명에 개시된 것들의 모든 적합한 조합들로부터 실시될 수 있는 모든 시스템 및 방법을 포함한다는 것이 고려된다.
본 발명이 첨부 도면의 도면들에 제한이 아닌 예로서 도시되며, 도면에서 유사한 도면 부호는 유사한 요소를 지시한다.
<도 1>
도 1은 본 발명의 실시예에서 채용될 수 있는 데이터 처리 시스템의 예를 도시한 도면.
<도 2>
도 2는 본 발명의 일 실시예에 따른 복합식 비휘발성 메모리의 예를 도시한 도면.
<도 3>
도 3은 클록 알고리즘으로 지칭될 수 있는 알고리즘에 대한 데이터 구조의 예를 도시한 도면.
<도 4>
도 4는 본 발명의 일 실시예에 따라 본 명세서에 기술되는 하나 이상의 방법에서 사용될 수 있는, 고스트 테이블(ghost table)과 같은, 데이터 구조의 예를 도시한 도면.
<도 5>
도 5는 본 발명의 적어도 하나의 실시예에 따른 방법을 도시한 플로우차트.
<도 6>
도 6은 본 발명의 적어도 하나의 실시예에 따른 방법을 도시한 플로우차트.
<도 7>
도 7은 본 발명의 일 실시예에 따른 방법을 도시한 플로우차트.
<도 8>
도 8은 본 발명의 적어도 하나의 실시예에서 사용될 수 있는 블룸 필터 데이터 구조의 예를 도시한 도면.
<도 9>
도 9는 본 발명의 일 실시예에 따른 방법을 도시한 플로우차트.
<도 10>
도 10은 본 발명의 일 실시예에 따른 방법을 도시한 플로우차트.
복합식 비휘발성 데이터 저장 디바이스의 관리를 개선하기 위한 접근법이 기술된다. 본 발명의 다양한 실시예 및 태양이 하기에 논의되는 상세사항을 참조해 기술될 것이며, 첨부 도면은 그 다양한 실시예를 예시할 것이다. 하기의 기술 및 도면은 본 발명을 예시하는 것이며, 본 발명을 제한하는 것으로 해석되어서는 안된다. 많은 구체적인 상세사항이 본 발명의 다양한 실시예의 완벽한 이해를 제공하기 위해 기술된다. 그러나, 소정의 경우, 주지의 또는 종래의 상세사항은 본 발명의 실시예의 간명한 논의를 제공하기 위해 기술되지 않는다.
본 명세서에서의 "하나의 실시예" 또는 "일 실시예"에 대한 언급은, 그 실시예와 관련하여 기술된 특정한 특징, 구조, 또는 특성이 본 발명의 적어도 하나의 실시예에 포함될 수 있음을 의미한다. 본 명세서 내 여러 곳에서의 문구 "하나의 실시예에서"의 출현들은 반드시 모두 동일한 실시예를 언급하는 것은 아니다. 뒤따르는 도면에 도시된 프로세스들은 하드웨어(예컨대, 회로, 전용 로직 등), (비일시적 머신 판독가능 저장 매체 상의 명령어들과 같은) 소프트웨어, 또는 둘 모두의 조합을 포함하는 처리 로직에 의해 수행된다. 프로세스들이 몇 개의 순차적 동작들의 관점에서 하기에 기술되지만, 기술된 동작들 중 일부는 상이한 순서로 수행될 수 있음이 이해되어야 한다. 더욱이, 일부 동작들은 순차적으로보다는 병렬적으로 수행될 수 있다.
도 1은 본 명세서에 기술되는 하나 이상의 실시예에서 채용될 수 있는 데이터 처리 시스템의 한 형태인 컴퓨팅 시스템(10)의 예를 도시한다. 시스템(10)은 데스크톱 컴퓨터 시스템 또는 랩톱 컴퓨터 시스템 또는 스마트폰, 또는 일부 다른 전자 디바이스 또는 소비자 전자 디바이스일 수 있다. 시스템(10)은, 당업계에 공지된 바와 같이, 일 실시예에서 SRAM일 수 있는 선택적 캐시(14)에 연결된 하나 이상의 마이크로프로세서 또는 다른 로직 유닛(12)을 포함할 수 있다. 하나 이상의 마이크로프로세서(12)는 하나 이상의 버스(18)를 통해 시스템의 나머지 부분에 연결되는데, 이 버스는 하나 이상의 마이크로프로세서(12)를 휘발성 RAM(16)일 수 있는 메인 메모리에 연결한다. 일 실시예에서, 휘발성 RAM은 컴퓨터 시스템에 사용되는 종래의 DRAM일 수 있으며, 여기서 DRAM은 버스를 통해 시스템(10) 내 나머지 콤포넌트들에 연결된다. 시스템(10)은 또한 하나 이상의 입력/출력 제어기(20)를 포함할 수 있는데, 이 입력/출력 제어기는 하나 이상의 버스(18)를 통해 하나 이상의 입력/출력 디바이스(22)를 시스템의 나머지 부분에 연결한다. 시스템(10)은 솔리드 스테이트 드라이브의 한 형태인 플래시 메모리와 종래의 자기 하드 드라이브의 조합과 같은 복합식 디스크일 수 있는 비휘발성 메모리(19)를 또한 포함한다.
도 2는 일 실시예에 따른 복합식 디스크의 예를 도시한다. 비휘발성 메모리(19)는 솔리드 스테이트 드라이브(51) 및 자기 하드 드라이브(52)를 포함하며, 이들은 파일 시스템 및 운영 체제에 의해 단일 논리 볼륨 또는 블록 디바이스로서 취급될 수 있고, 하나 이상의 제어기, 예를 들어 솔리드 스테이트 드라이브 제어기를 포함하는 제어기(53), 및 하드 디스크 드라이브 제어기를 포함하는 제어기(54)에 의해 제어된다. 하나 이상의 제어기는 버스(18)를 통해 도 2에 도시된 복합식 드라이브를 시스템(10) 내 나머지 콤포넌트들에 연결한다. 플래시 메모리가 고속 비휘발성 저장 디바이스의 한 형태이고, 다른 고속 저장 디바이스가 종래의 자기 하드 드라이브일 수 있는 보다 저속의 저장 디바이스, 또는 보다 고속의 저장 디바이스보다 저속인 다른 비휘발성 저장 디바이스와 함께 대안적으로 사용될 수 있음이 이해될 것이다. 본 설명에서 SSD 또는 HDD에 대한 언급은 보다 고속의 비휘발성 저장 디바이스 및 보다 저속의 비휘발성 저장 디바이스를 의미하는 것으로 해석될 것이고, 임의의 저장 디바이스 기술로 제한되거나 그에 특정한 것으로 해석되지 않을 것임이 이해될 것이다.
도 3은 본 발명의 일 실시예에 따른 클록 알고리즘과 함께 사용되는 제1 데이터 구조의 예를 도시한다. 클록 알고리즘은 일 실시예에서 종래 기술에서 사용되는 종래의 클록 알고리즘과 유사할 수 있다. 클록 알고리즘은 클록 포인터(clock pointer)(304)를 포함하는 원형 큐(circular queue)일 수 있는 데이터 구조(301)를 사용할 수 있는데, 이 클록 포인터는 클록 알고리즘에 기초해 큐 내의 특정 위치를 가리킨다. 원형 큐 내의 각각의 위치는 플래시 메모리 시스템을 통해 구현되는 솔리드 스테이트 드라이브와 같은 고속 비휘발성 메모리 디바이스 내의 특정 유닛에 대응한다. 어떤 의미에서는, 제1 데이터 구조는 어떤 블록이 프리(free) 상태이고 어떤 블록이 하드 드라이브 상에 할당(프리 상태가 아님)되는지를 나타내는 파일 시스템에 의해 유지되는 블록 할당 비트 맵(block allocation bit map)과 유사하다.
예를 들어, 위치(302)는 SSD 상의 유닛 0에 대응하고, 우측으로의 다음 유닛은 SSD 상의 유닛 1에 대응하고, 위치(303)는 SSD 상의 다른 유닛에 대응한다. 각각의 위치는 SSD 내의 대응하는 저장 유닛의 상태를 나타내는 값을 저장한다. 일 실시예에서, 2-비트 값이 사용될 수 있어서, 0의 값은 SSD 상의 특정 유닛 내의 하나 이상의 블록 또는 다른 콤포넌트가 프리 상태임을 나타낼 수 있는 반면, 소정 위치에서 1의 값은 SSD 상의 특정 유닛이 최근에 참조되지 않았음을 나타낼 수 있고 2의 값은 SSD 내의 그 유닛이 최근에 참조되었음을 나타낼 수 있다. 3의 값은 유닛이 SSD에 고정(pinned)되어 있고 HDD로 디모트(demoted)될 수 없음을 나타낼 수 있다. 대안적으로, 일 실시예에서, 유닛에의 액세스의 특정 수를 추적할 수 있는 3-비트 값이 사용될 수 있다. 이러한 실시예에서, 0 값은 또한 유닛이 프리 상태임을 나타낼 수 있고; 1의 값은 그 유닛이 최근에 참조되지 않았음을 나타낼 수 있고, 7의 최대 값은 그 유닛이 고정되어 있음을 나타낼 수 있다. 다른 값은 유닛이 최근에 참조된 횟수를 나타낼 수 있는데, 예를 들어 6의 값은 5회 최근 참조를 나타낼 것이다.
일 실시예에서, 제1 데이터 구조(301)는 다음과 같이 관리될 수 있다. 알고리즘이 SSD로부터 HDD로 디모트할 후보를 찾을 필요가 있는 경우, 그것은 클록 포인터(304)를 사용할 것이다. 일 실시예에서, 클록 포인터(304)는 그것이 1의 값을 갖는 유닛 - 이는 그 유닛이 최근에 참조되지 않았음을 의미함 - 을 찾을 때까지 시계방향으로 하나의 유닛으로부터 다음 유닛으로 스위프(sweep)할 것이다. 일 실시예에서, 클록 포인터(304)는 반시계방향으로 스위프할 수 있다. 유닛의 값이 최대 값이면, 그 유닛은 SSD에 고정되어 있고 HDD로 디모트될 수 없다. 값이 1 초과이지만 최대 값이 아니라면, 클록 포인터가 다음 유닛으로 이동하기 전에, 값은 1의 최소 값에 이르기까지 1만큼 감소된다. SSD 내의 특정 유닛이 액세스된 때, SSD 상의 그 유닛에 대응하는 위치에서의 카운터는 증가될 것이다. 이 방법을 사용해, SSD 상의 빈번하게 액세스되는 유닛은 SSD 상의 그 유닛에 대응하는 데이터 구조의 유닛에서, 사전설정된 카운트 한도까지, 점점 더 높은 카운트를 획득할 것이다. 그러나, 디모트를 위한 후보가 요구될 때마다 클록 포인터(304)가 유닛마다 스위프함에 따라, 각각의 순차적 유닛(예컨대, 302, 303)에서의 카운트는 클록 포인터(304)가 그 유닛을 지나갈 때마다, 1의 최소 값 - 이는 그 유닛이 최근에 액세스되지 않았음을 나타냄 - 에 이르기까지 감소할 것이다. 다음에 기술될 제2 데이터 구조에 대한 클록 알고리즘의 사용에 관한 추가 상세사항이 도 5, 도 6, 및 도 7과 관련하여 제공된다.
도 4는 1회의 최근 액세스 또는 사전결정된 횟수의 최근 액세스를 초과하는 액세스를 위해, HDD와 같은 보다 저속의 비휘발성 메모리 상의 유닛의 액세스를 기록하는 데 사용되는, 고스트 테이블로 지칭될 수 있는, 제2 데이터 구조의 예를 도시한다. 일 실시예에서, 제2 데이터 구조는 데이터 구조 내의 위치들의 수의 관점에서 SSD 내의 유닛들의 수와 동일한 크기일 수 있거나, 그것은 SSD 내의 유닛들의 수의 크기에 비례할 수 있다. 일 실시예에서, HDD 내의 특정 유닛 번호에 대한 시그너처(signature) 값이 제2 데이터 구조의 각각의 위치에 저장될 수 있다. 유닛은, 일 실시예에서, 파일 시스템의 관점에서 자기 하드 드라이브 상의 논리 블록일 수 있다. 제2 데이터 구조(401)는 3개의 위치(402, 403, 404)뿐만 아니라 다른 위치도 포함하며, 이들 위치 각각은 HDD 내의 유닛 번호의 시그너처를 저장할 수 있다. 위치(404)는 HDD 상의 그 유닛 내의 데이터가 (판독 또는 기록 중 어느 하나를 통해) 최근에 적어도 1회 또는 적어도 사전결정된 횟수만큼 액세스되었음을 나타내는, HDD 내의 유닛 X에 대한 시그너처 값의 예를 도시한다.
도 5는 데이터 구조(301)와 같은 제1 데이터 구조 및 데이터 구조(401)와 같은 제2 데이터 구조를 이용해 SSD와 같은 고속 저장 디바이스와 HDD와 같은 보다 저속의 저장 디바이스 사이에서의 데이터의 이송을 제어하기 위한, 본 발명의 일 실시예에 따른 방법의 예를 도시한다. 도 5의 방법은 동작(501)에서 시작할 수 있으며, 여기서 시스템은 비휘발성 메모리에의 판독 또는 기록 액세스를 위한 요청을 수신할 수 있다. 일 실시예에서, 파일 시스템이 복합식 디스크를 제어하고 복합식 디스크를 단일 논리 볼륨으로서 취급한다. 이어서, 파일 시스템 또는 데이터 처리 시스템 내의 다른 콤포넌트는 도 5에 도시된 방법을 사용해 복합식 디스크의 둘 이상의 부분들 사이에서 데이터를 어떻게 할당할지를 결정하도록 진행한다. 판독 또는 기록 액세스를 위한 요청의 수신에 응답하여, 방법은 동작(503)으로 진행하며, 여기서 그것은 요청된 데이터가 보다 고속의 저장 디바이스 내에 있는지 여부를 판정한다. 그것이 보다 고속의 저장 디바이스 내에 있다면, SSD에 히트(hit)가 있으며, 이 경우에 처리는 동작(505)으로 진행하며, 여기서 SSD 상에서 발견된 유닛에 대한, 데이터 구조(301)와 같은, 원형 큐에서의 카운트는 1만큼 증가된다. 이는 클록 포인터(304)를 이동시킴 없이 행해진다. 이러한 방식으로, 클록 알고리즘은, 제1 데이터 구조를 통해, SSD 내의 유닛에의 액세스의 횟수를 기록한다. 동작(503)이 SSD에 미스(miss)가 있는 것으로 판정하면, 시스템은 동작(507)으로 진행하며, 여기서 그것은 데이터가 확률론적 해시 테이블(probabilistic hash table)의 형태인, 도 4에 도시된 고스트 테이블(401)과 같은, 제2 데이터 구조 내에 있는지 여부를 판정한다. 제2 데이터 구조 내의 데이터를 찾는 것이 도 7에 도시되어 있으며, 이는 하기에 논의된다.
동작(507)이 제2 데이터 구조 내에 유닛이 아직 있지 않은 것으로 판정하면, 그것은 동작(509)으로 진행하며, 여기서 유닛 번호 또는 유닛 번호의 표현이 고스트 테이블(401)일 수 있는 제2 데이터 구조에 추가된다. 동작(509)에 관한 추가 정보가 후술될 도 6과 관련하여 제공된다. 동작(507)에서, 요청된 데이터를 포함하는 유닛이 제2 데이터 구조 내에 이미 있는 것으로 판정되면, 처리는 동작(507)으로부터 동작(511)으로 진행하며, 여기서 고속 저장 디바이스가 풀(full) 상태인지 여부가 판정된다. 그것이 풀 상태가 아니면, 동작(515)이 뒤따른다. 다양한 종래의 알고리즘들이 SDD가 풀 상태가 아닌지 여부를 판정하는 데 사용될 수 있으며, 이들은 클록 알고리즘 또는 제1 데이터 구조(301)의 사용에 의존할 필요가 없다.
동작(515)에서, 액세스되고 있는 HDD의 유닛 내의 데이터가 당업계에 공지된 기술을 사용해 HDD로부터 SDD로 이송된다. 또한, 이송되었거나 이송될 데이터의 그 유닛에 대한 유닛 번호가 고스트 테이블(401)과 같은 제2 데이터 구조로부터 제거된다. 동작(511)에서 시스템이 SSD가 풀 상태인 것으로 판정하면, 동작(513)은 동작(515)으로 진행한다. 파일 시스템이 동작(515)에서의 데이터의 이송에 응답하여 다양한 데이터의 위치를 나타내는 종래의 데이터 구조를 여전히 유지할 것임이 이해될 것이다. 동작(513)에서, 시스템은, 일 실시예에서, 클록 알고리즘을 사용해 SSD 상에 공간을 생성한다. 이 경우에, 클록 알고리즘은 클록 포인터(304)를 사용해 클록 포인터의 현재 위치에서 시작해 최근에 참조되지 않은 - 일 실시예에서, 이는 원형 큐 내의 소정 위치에 저장된 1의 값에 의해 나타내어짐 - SSD 내의 유닛을 나타내는 위치로 원형 큐를 통해 순차적으로 이동한다. 클록 포인터(304)가 원형 큐를 통해 순환 방식으로 이동됨에 따라, 각각의 위치에서의 값이 1만큼 감소된다. 클록 포인터(304)가 큐를 통해 이동하여 각각의 위치에서의 값을 감소시킴에 따라, 궁극적으로 유닛들 중 하나는 그것이 이용가능한 유닛임을 나타내는 값을 수신할 것이다. 일단 클록 알고리즘이 SSD 내의 다음의 이용가능한 유닛 위치를 결정하면, 동작(513)에 뒤따를 수 있는 동작(515)에서, SSD의 그 유닛 내의 데이터가 HDD로 플러시(flush)될 수 있고 HDD 상의 액세스된 데이터가 HDD로부터 SSD 내의 그 위치 또는 유닛으로 이송될 수 있다. 제2 데이터 구조로부터의 유닛 번호의 제거가 도 7과 관련하여 추가로 기술된다.
도 6은 데이터를 제2 데이터 구조 내로 추가하기 위한 방법의 예를 도시하며, 여기서 X는 하드 드라이브 상의 하나 이상의 논리 블록과 같은 HDD 내의 유닛 번호를 나타낼 수 있다. 도 6 및 도 7의 방법이 도 4에 도시된 데이터 구조(401)일 수 있는 확률론적 해시 테이블의 생성을 허용함이 이해될 수 있다. 확률론적 해시 테이블은, 해시(hash) 및 시그너처가 제2 데이터 구조에 저장되는 값을 생성하는 데 사용된다는 사실, 및 해시 및 시그너처가 또한 그 데이터 구조 내의 위치를 지정하는 데 사용된다는 사실로 인해, HDD 상의 유닛의 액세스의 횟수에 대해 항상 정확하지는 않을 수 있다. 해시가 사용될 때, 해시 함수 내로의 하나 초과의 입력이 동일한 해시 값을 리턴시키는 것이 가능하다. 이는 상이한 유닛과 동일한 시그너처를 공유하는 유닛이 적절한 유닛 대신에 SSD에 프로모트(promote)될 수 있음을 의미한다. 그러나, 그 발생 가능성은 적다. 따라서, 해시 테이블이 HDD 상의 유닛이 수신한 액세스의 횟수에 대해 항상 정확하지는 않을 수 있지만, 데이터 구조는 대체로 정확하며, 그것이 소비되는 메모리의 양에 비해 대량의 정보를 저장할 수 있다는 점에서 공간 효율적이다.
도 6에 도시된 방법은 도 5의 동작(509)에서 구현될 수 있다. 동작(601)에서, 시스템은 판독 요청 또는 기록 요청 중 어느 하나에 의해 액세스되고 있는 HDD 내의 유닛 번호에 대한 한 세트의 해시 값들을 계산한다. 한 세트의 해시 값들은 한 세트의 상이한 해시 함수들로부터 도출될 수 있다. 예를 들어, 일 실시예에서, 3개의 상이한 해시 함수들 h1, h2, 및 h3이 사용될 수 있지만, 1개 이상의 임의의 수의 해시 함수가 사용될 수 있다. 또한, 동작(601)은 S(X)로서 나타내어질 수 있는 X의 시그너처를 계산하며, 여기서 S는 X의 값의 시그너처를 나타낸다. 시그너처는 암호 알고리즘으로부터 또는 다른 알고리즘으로부터 도출될 수 있는데, 이는 주어진 입력에 대해 비교적 고유한 값을 생성하려고 하지만 X의 각각의 가능한 값에 대한 고유한 값을 생성하도록 보장되지는 않는다. 전반적인 고유성의 이러한 결여는 해시 테이블의 확률론적 특성에 기여한다. 값이 동작(601)에서 계산된 후에, 시스템은 동작(603)으로 진행하며, 여기서 그것은 해시 값들에 의해 지정되는 위치들 중 임의의 것이 제2 데이터 구조에서 비어 있는지(empty) 여부를 판정한다. 다시 말해, 해시 값들에 의해 지정되는 그들 위치 각각은, 일 실시예에서, 그들이 비어 있는지 여부를 판정하기 위해 고스트 테이블에서 검사된다. 그들 중 임의의 하나가 비어 있다면, 동작(605)이 뒤따르며, 여기서 HDD의 유닛 번호의 S(X)와 같은 시그너처가 해시 값들 중 하나에 의해 지정되는 그 비어 있는 위치들 중 하나에 저장된다. 반면에, 동작(603)이 그들 위치 중 어느 것도 비어 있지 않은 것으로 판정하면, 동작(607)이 수행되며, 여기서 제2 데이터 구조 내의 랜덤 위치(random location)가 동작(607)에서 랜덤하게 선택되고, 동작(609)에서 시그너처가 그 선택된 랜덤 위치에 저장된다. 랜덤 위치의 사용은 그 위치에 저장된 이전의 시그너처의 오버라이팅(overwriting)을 야기할 수 있다.
도 7은 데이터 구조로부터 데이터를 발견하거나 제거하는 것 중 어느 하나를 위한 방법의 예를 도시한다. 도 7의 방법이 발견에 사용되는 경우, 동작(707)은 수행되지 않는다. 발견을 위한 도 7에 도시된 방법은 도 5의 동작(507)에서 수행될 수 있다. 도 7에 도시된 방법이 고스트 테이블로부터 데이터를 제거하는 데 사용되는 경우, 동작(707)이 수행되고, 이 방법은 도 5에 도시된 동작(515)의 일부로서 사용된다. 도 7의 방법은 동작(701)에서 시작할 수 있으며, 여기서 한 세트의 해시 값들이 X에 대해 계산된다. 이 한 세트의 해시 값들은 동작(601)에서 이전에 사용된 동일 세트의 해시 함수들에 의한 동일 세트의 해시 값들에 대응해야 한다. 유사하게, 시그너처가 X의 값에 대해 계산되는데, 이는 동작(601)에서 계산된 시그너처와 유사한 시그너처이다. 이어서, 동작(703)에서, 시스템은 동작(701)에서 계산된 해시 값들의 세트에 의해 지정되는, 고스트 테이블의 위치들 내의 시그너처 값을 찾는다. 시그너처가 동작(705)에서 발견되면, 도 7에 도시된 바와 같이 동작(707)에서 유닛 번호의 시그너처가 제2 데이터 구조로부터 제거된다. 일 실시예에서, 데이터 구조의 크기는 데이터 구조의 성능 및 이용가능한 메모리의 양에 기초하여 두 배로 늘거나 절반으로 줄어들 수 있다.
본 발명의 대안적인 실시예는 고스트 테이블로서 구현될 수 있는 확률론적 해시 테이블보다는 블룸 필터를 채용할 수 있다. 블룸 필터의 예가 도 8에 도시된다. 블룸 필터는 제2 저장 디바이스 상의 유닛이 아마도 최근에 액세스되었는지 여부를 테스트하는 데 사용될 수 있는 확률론적 데이터 구조이다. 블룸 필터는 확률론적인데, 그 이유는 유닛이 실제로는 있지 않은 때 그것이 데이터 구조 내에 있는 것으로 판정됨을 의미하는 허위 양성(false positive) 결과가 리턴되는 것이 가능하기 때문이다. 그러나, 허위 음성(false negative)은 가능하지 않고, 그래서 제2 데이터 구조의 쿼리는 유닛이 아마도 최근에 액세스되었다는 결과 또는 유닛이 분명히 최근에 액세스되지 않았다는 결과를 리턴할 것이다. 블룸 필터는 SSD의 각각의 유닛 또는 SSD의 비례수(proportional number)의 유닛들에 대응하는 다수의 위치를 가질 수 있다. 각각의 위치는 일 실시예에서 HDD 상의 특정 유닛의 액세스의 횟수의 상황(status)을 나타내는 1 또는 0 중 어느 하나를 저장한다. HDD의 유닛 번호의 해시 값은 블룸 필터 내의 특정 위치에 액세스하기 위한 어드레스로서 사용된다. 도 8에 도시된 바와 같이, 블룸 필터(801)는 위치(802, 803, 804)를 포함한다. 위치(803)는 그 위치를 지정하는 X의 해시 함수 h1에 의해 지정된다. 값 1이 위치(803)에 설정되었고 2개의 다른 어드레스, 즉 X의 h2 및 X의 h3에 의해 지정되는 2개의 다른 위치에 또한 설정되었다. 도 8에 도시된 블룸 필터는 동작(507)에서 고스트 테이블을 블룸 필터로 대체함으로써 그리고 동작(509)에서 고스트 테이블을 블룸 필터로 대체함으로써 도 5의 방법에서 사용될 수 있다. 그러나, 블룸 필터가 고스트 테이블 대신에 사용되는 경우 유닛 번호는 동작(515)에서 블룸 필터로부터 제거되지 않는데, 그 이유는 블룸 필터로부터 유닛을 제거하고 블룸 필터가 허위 음성 결과를 발생시키지 않을 것임을 보장하는 것이 가능하지 않기 때문이다. 따라서, 일 실시예에서, 제2 데이터 구조 내의 블룸 필터가 채워짐에 따라, 추가의 블룸 필터가 원형 큐에 추가될 수 있다.
도 9는 HDD 내의 유닛을 블룸 필터에 추가하기 위한 방법의 예를 도시한다. 도 9에 도시된 동작은 블룸 필터가 고스트 테이블 대신에 사용되는 경우에 동작(509)에서 수행된다. 일 실시예에서, 블룸 필터들의 원형 큐가 사용될 수 있어서 그 원형 큐에 유지되는 다수의 블룸 필터들이 존재하며, 여기서 도 9로부터 자명할 바와 같이 최신의 블룸 필터는 값을 저장하는 데 사용되고 보다 오래된 블룸 필터들은 원형 큐를 통해 순환한다. 동작(509)이 시작할 때, 도 5의 블룸 필터 구현의 경우에, 동작(901)은 최신의 블룸 필터가 풀 상태인지 여부를 판정한다. 일 실시예에서, 블룸 필터에 대해 추가가 이루어진 횟수를 추적하는 데 카운터가 사용되며, 필터는 그것이 어떤 사전결정된 임계치를 초과한 후에 풀 상태인 것으로 간주된다. 블룸 필터가 풀 상태가 아니면, 동작(905)이 뒤따르며, 여기서 HDD 상의 현재 액세스된 유닛을 나타내는 데이터가, 한 세트의 해시 값들에서 지정된 각각의 위치를 사전결정된 값, 예컨대 1로 설정함으로써 최신의 블룸 필터에 추가된다. 일 실시예에서, 한 세트의 해시 값들이 동작(1001)에서와 같이 계산되고, 그 해시 값들 각각은 블룸 필터 내의 특정 위치 또는 어드레스를 지정하며, 1의 값이 한 세트의 해시 값들에서 지정되는 그 어드레스들 또는 위치들 각각에 기록된다.
도 10은 HDD 내의 특정 유닛 번호가 제2 데이터 구조 - 이 경우에 블룸 필터임 - 내에 있는지 여부를 알아내기 위한 방법을 도시한다. 도 10은 도 5의 방법이 고스트 테이블 대신에 블룸 필터를 사용하는 경우 동작(507)의 일부로서 수행될 수 있다. 동작(1001)에서, 시스템은 HDD 내의 유닛 번호에 대한 한 세트의 해시 값들을 계산한다. 일 실시예에서, 3개의 상이한 해시 함수가 3개의 해시 값을 계산하는 데 사용될 수 있다. 이어서, 동작(1003)에서, 시스템은 한 세트의 해시 값들에 의해 지정되는 각각의 위치에서의 비트가 큐 내의 블룸 필터들 중 적어도 하나에서 사전결정된 값, 예컨대 1의 값으로 설정되었는지 여부를 검사한다. 동작(1005)에서, 한 세트의 해시 값들 내의 해시 값들에 의해 지정되는 위치들 각각에서 모든 비트들이 1로 설정되었는지 여부가 판정된다. 큐 내의 각각의 블룸 필터 내의 위치들 중 적어도 하나가 설정되지 않은 경우, 시스템은 유닛이 발견되지 않았다는 결론을 내리고 동작(1007)으로 진행하며, 이는 도 5에서 동작(509)이 뒤따르게 한다. 반면에 시스템이 한 세트의 해시 값들에 의해 결정된 적절한 위치들에서 모든 비트들이 설정되었다고 판정하면, 처리는 동작(1009)으로 진행하며, 이는 도 5에서 동작(511)이 뒤따르게 한다. 도 4의 고스트 테이블에서와 같이, 본 발명의 실시예는 필요에 따라 제2 데이터 구조의 크기를 증가시키거나 감소시킬 수 있다. 원형 큐 내의 블룸 필터들이 채워짐에 따라, 추가의 블룸 필터가 원형 큐에 추가될 수 있다. 블룸 필터들의 원형 큐의 크기가 정의된 값을 초과한 후에, 가장 오래된 블룸 필터가 목록으로부터 제거될 수 있다.
상기의 명세서에서, 본 발명은 그의 특정 실시예를 참조하여 기술되었다. 그러나, 본 발명의 보다 넓은 사상 및 범주로부터 벗어남이 없이 그 특정 실시예에 대해 다양한 수정 및 변경이 이루어질 수 있음이 명백할 것이다. 따라서, 명세서 및 도면은 제한적인 의미보다는 예시적인 의미에서 고려되어야 한다.

Claims (23)

  1. 멀티-디바이스 복합식 데이터 저장 시스템에의 액세스를 관리하기 위한 방법으로서,
    제1 데이터 저장 디바이스 상의 한 세트의 유닛(unit)들 내의 각각의 유닛에의 액세스의 최근성(recency)을 나타내는 제1 데이터 구조를 관리하는 단계; 및
    제2 데이터 저장 디바이스 상의 유닛이 적어도 하나의 최근 참조를 수신했는지 여부를 확률론적으로 나타내는 제2 데이터 구조를 관리하는 단계 - 상기 제2 데이터 구조는 확률론적 해시 테이블(probabilistic hash table), 또는 카운팅 블룸 필터(counting Bloom filter), 또는 다른 공간 효율적인 확률론적 데이터 구조임 - 를 포함하는, 방법.
  2. 제1항에 있어서, 상기 제1 데이터 구조를 관리하는 단계는,
    상기 복합식 데이터 저장 시스템의 블록(block)에 액세스하라는 요청을 수신하는 단계;
    상기 제1 데이터 저장 디바이스로부터 상기 블록에 액세스하는 단계; 및
    상기 블록이 상기 제1 데이터 저장 디바이스로부터 최근에 액세스되었음을 나타내도록 상기 제1 데이터 구조를 업데이트하는 단계를 포함하는, 방법.
  3. 제1항에 있어서, 상기 제2 데이터 구조를 관리하는 단계는,
    상기 데이터 저장 시스템의 블록에 액세스하라는 요청을 수신하는 단계;
    상기 제2 데이터 구조에, 상기 데이터 저장 시스템의 상기 블록을 포함하는 상기 제2 데이터 저장 디바이스 상의 유닛 식별자(unit identifier)를 나타내는 데이터를 추가하는 단계; 및
    상기 유닛을 상기 제1 데이터 저장 디바이스로 이송(migrating)하는 단계를 포함하는, 방법.
  4. 제3항에 있어서, 상기 제2 데이터 구조에 상기 제2 데이터 저장 디바이스 상의 유닛 식별자를 나타내는 데이터를 추가하는 단계는,
    상기 데이터 저장 시스템의 상기 유닛 식별자의 해시(hash)를 계산하는 단계;
    상기 유닛에 대한 시그너처(signature)를 계산하는 단계; 및
    상기 제2 데이터 구조 상의 인덱스(index) 내에 상기 유닛에 대한 상기 시그너처를 저장하는 단계 - 상기 인덱스는 상기 유닛의 상기 해시에 의해 정의됨 - 를 포함하는, 방법.
  5. 제3항에 있어서, 상기 제2 데이터 저장 디바이스 상의 상기 유닛을 상기 제2 데이터 저장 디바이스로부터 상기 제1 데이터 저장 디바이스로 이송하는 단계는,
    상기 제2 데이터 저장 디바이스 상의 유닛의 상기 시그너처에 대해 상기 제2 데이터 구조를 검색하는 단계 - 상기 유닛은 상기 데이터 저장 시스템의 상기 블록을 포함함 -;
    상기 유닛을 상기 제2 저장 디바이스로부터 상기 제1 저장 디바이스로 이동시키는 단계; 및
    상기 제2 데이터 구조로부터 상기 유닛의 상기 시그너처를 제거하는 단계를 포함하는, 방법.
  6. 제5항에 있어서, 상기 유닛을 상기 제2 저장 디바이스로부터 상기 제1 저장 디바이스로 이동시키는 단계는 다수의 데이터 블록들을 단일 유닛으로서 이동시키는 단계를 포함하는, 방법.
  7. 복합식 데이터 저장 디바이스에의 액세스를 관리하기 위한 시스템으로서,
    한 세트의 유닛들에 데이터를 저장하는 제1 데이터 저장 디바이스;
    상기 제1 데이터 저장 디바이스 상의 상기 한 세트의 유닛들 내의 각각의 유닛에의 액세스의 최근성을 나타내는 제1 데이터 구조;
    상기 제1 데이터 저장 디바이스에 연결되고, 한 세트의 유닛들에 데이터를 저장하는 제2 데이터 저장 디바이스; 및
    상기 제2 데이터 저장 디바이스 상의 상기 한 세트의 유닛들 내의 유닛이 적어도 하나의 최근 액세스를 수신했는지 여부를 확률론적으로 나타내는 제2 데이터 구조 - 상기 제2 데이터 구조는 확률론적 해시 테이블임 - 를 포함하는, 시스템.
  8. 제7항에 있어서, 상기 제1 데이터 저장 디바이스는 솔리드 스테이트 드라이브(solid-state drive)인, 시스템.
  9. 제7항에 있어서, 상기 제2 데이터 저장 디바이스는 자기 하드 디스크 드라이브(magnetic hard disk drive)인, 시스템.
  10. 제7항에 있어서, 상기 제2 데이터 구조는 상기 제1 저장 디바이스 상의 상기 유닛들 각각에 대응하는 요소(element)를 포함하는, 시스템.
  11. 제7항에 있어서, 상기 제2 데이터 구조는 상기 제1 저장 디바이스 상의 상기 유닛들의 비율(proportion)에 대응하는 다수의 요소들을 포함하는, 시스템.
  12. 제7항에 있어서, 상기 제2 저장 디바이스 상의 유닛에 대한 시그너처가 상기 제2 데이터 구조에 저장되는, 시스템.
  13. 제7항에 있어서, 상기 제1 데이터 구조는 클록 알고리즘(clock algorithm)의 사용에 의해 유지되는 원형 큐(circular queue)인, 시스템.
  14. 제13항에 있어서, 상기 제1 데이터 구조는 상기 제1 데이터 저장 디바이스 상의 각각의 유닛에 대한 요소를 포함하는, 시스템.
  15. 제14항에 있어서, 상기 제1 데이터 구조의 요소는 상기 제1 데이터 저장 디바이스 상의 유닛이 프리(free) 상태임을 나타내는, 시스템.
  16. 제15항에 있어서, 상기 제1 데이터 구조는 상기 제1 데이터 저장 디바이스 상의 특정 유닛에의 최근 액세스들의 카운트(count)를 나타내는 값을 저장하는, 시스템.
  17. 머신에 의해 실행될 때, 머신으로 하여금 멀티-디바이스 복합식 데이터 저장 시스템에의 액세스를 관리하기 위한 동작들을 수행하게 하는 명령어들이 저장된 비일시적 머신 판독가능 저장 매체로서, 상기 동작들은,
    제1 데이터 저장 디바이스 상의 한 세트의 유닛들 내의 유닛이 액세스되는지를 나타내는 제1 데이터 구조를 초기화하는 것 - 상기 제1 데이터 구조는 클록 알고리즘을 통해 관리됨 -;
    제2 데이터 저장 디바이스 상의 유닛이 적어도 하나의 최근 액세스를 수신했음을 확률론적으로 나타내는 제2 데이터 구조를 초기화하는 것 - 상기 제2 데이터 구조는 확률론적 해시 테이블임 -;
    상기 복합식 데이터 저장 시스템의 논리 블록에 액세스하라는 요청을 수신하는 것;
    상기 논리 블록이 상기 제1 데이터 저장 디바이스 상에 포함되면, 상기 제1 저장 디바이스 상의 유닛으로부터 상기 논리 블록에 액세스하고, 상기 복합식 데이터 저장 시스템의 블록이 상기 제1 데이터 저장 디바이스 상의 유닛으로부터 최근에 액세스되었음을 나타내도록 상기 제1 데이터 구조를 업데이트하는 것;
    상기 논리 블록이 상기 제1 데이터 저장 디바이스 상의 유닛에서 발견되지 않으면, 상기 논리 블록에 대해 상기 제2 데이터 구조를 검색하는 것;
    상기 논리 블록이 상기 제2 데이터 구조에서 발견되지 않으면, 상기 논리 블록을 상기 제2 데이터 구조에 추가하는 것;
    상기 논리 블록이 상기 제2 데이터 구조에서 발견되면, 유닛을 상기 제2 데이터 저장 디바이스로부터 상기 제1 데이터 저장 디바이스로 이송하는 것; 및
    상기 제2 데이터 구조로부터 상기 논리 블록을 제거하는 것을 포함하는, 머신 판독가능 저장 매체.
  18. 제17항에 있어서,
    다수의 시그너처들이 일정 기간 내에 발견되지 않은 후에 상기 제2 데이터 구조의 크기를 절반으로 줄이는 것; 및
    다수의 시그너처들이 일정 기간 내에 발견된 후에 상기 제2 데이터 구조의 크기를 두 배로 늘리는 것을 추가로 포함하는, 머신 판독가능 저장 매체.
  19. 제18항에 있어서,
    상기 제2 데이터 저장 디바이스 상의 요청된 유닛의 어드레스에 대한 한 세트의 해시 값들을 계산하는 것;
    상기 제2 데이터 저장 디바이스 상의 상기 요청된 유닛의 상기 어드레스에 대한 시그너처를 계산하는 것; 및
    계산된 상기 한 세트의 해시 값들로부터의 해시 값을 인덱스로서 사용함으로써 상기 요청된 유닛의 상기 어드레스의 상기 시그너처를 상기 제2 데이터 구조에 저장하는 것을 추가로 포함하는, 머신 판독가능 저장 매체.
  20. 제19항에 있어서, 한 세트의 해시 값들을 계산하는 것은 복수의 해시 함수들을 사용하는, 머신 판독가능 저장 매체.
  21. 제19항에 있어서, 상기 요청된 유닛의 상기 어드레스의 상기 시그너처를 상기 제2 데이터 구조에 저장하는 것은,
    각각의 해시 함수에 대해, 그 해시 함수에 의해 계산된 상기 해시 값에 의해 어드레싱되는 상기 제2 데이터 구조의 인덱스를 검색하는 것;
    상기 요청된 유닛의 상기 어드레스의 상기 시그너처를 상기 해시 값에 의해 인덱싱되는 비어 있는 위치(empty location)에 저장하는 것; 및
    상기 한 세트의 해시 값들 내의 어떠한 해시 값도 비어 있는 위치를 인덱싱하지 않으면, 상기 요청된 유닛의 상기 어드레스의 상기 시그너처를 상기 제2 데이터 구조 내의 랜덤 위치(random location)에 저장하는 것을 포함하는, 머신 판독가능 저장 매체.
  22. 실행될 때, 데이터 처리 시스템으로 하여금 제1항의 방법을 수행하게 하는 명령어들을 갖는, 비일시적 머신 판독가능 저장 매체.
  23. 실행될 때, 데이터 처리 시스템으로 하여금 제4항의 방법을 수행하게 하는 명령어들을 갖는, 비일시적 머신 판독가능 저장 매체.
KR1020147022828A 2012-02-16 2013-02-07 복합식 비휘발성 저장 디바이스를 위한 데이터 이송 KR101599177B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201261599930P 2012-02-16 2012-02-16
US201261599927P 2012-02-16 2012-02-16
US61/599,927 2012-02-16
US61/599,930 2012-02-16
US13/605,916 US20130219116A1 (en) 2012-02-16 2012-09-06 Data migration for composite non-volatile storage device
US13/605,916 2012-09-06
PCT/US2013/025224 WO2013122818A1 (en) 2012-02-16 2013-02-07 Data migration for composite non-volatile storage device

Publications (2)

Publication Number Publication Date
KR20140116933A true KR20140116933A (ko) 2014-10-06
KR101599177B1 KR101599177B1 (ko) 2016-03-02

Family

ID=48983237

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020147022828A KR101599177B1 (ko) 2012-02-16 2013-02-07 복합식 비휘발성 저장 디바이스를 위한 데이터 이송
KR1020147022659A KR101620773B1 (ko) 2012-02-16 2013-02-11 복합식 비휘발성 저장 디바이스를 위한 데이터 이송

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020147022659A KR101620773B1 (ko) 2012-02-16 2013-02-11 복합식 비휘발성 저장 디바이스를 위한 데이터 이송

Country Status (8)

Country Link
US (2) US9710397B2 (ko)
EP (2) EP2798501B1 (ko)
JP (2) JP5943095B2 (ko)
KR (2) KR101599177B1 (ko)
CN (2) CN104115134B (ko)
AU (2) AU2013221868B2 (ko)
TW (2) TWI524348B (ko)
WO (2) WO2013122818A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101675694B1 (ko) * 2015-09-11 2016-11-23 성균관대학교산학협력단 블록 인기도에 기반한 ssd의 블록 교체방법
KR101704936B1 (ko) * 2015-12-07 2017-02-09 성균관대학교산학협력단 블록의 우선성에 기반한 ssd의 블록 교체방법 및 이를 적용하는 하이브리드 저장 시스템

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8700578B1 (en) * 2012-09-27 2014-04-15 Emc Corporation System and method for determining physical storage space of a deduplicated storage system
US10073851B2 (en) 2013-01-08 2018-09-11 Apple Inc. Fast new file creation cache
WO2014132136A2 (en) * 2013-02-27 2014-09-04 Marvell World Trade Ltd. Efficient longest prefix matching techniques for network devices
US9805188B2 (en) 2013-11-12 2017-10-31 RunSafe Security, Inc. Control flow integrity system and method
CN105701018B (zh) * 2014-11-24 2019-01-11 阿里巴巴集团控股有限公司 一种用于流计算的数据处理方法与设备
JP2016207033A (ja) * 2015-04-24 2016-12-08 株式会社東芝 情報記憶システムおよび情報記憶装置
US10263784B2 (en) 2015-09-09 2019-04-16 Amazon Technologies, Inc. Signature verification for data set components using probabilistic data structures
WO2017044867A1 (en) * 2015-09-09 2017-03-16 Amazon Technologies, Inc. Deletion of elements from a bloom filter
US10262160B2 (en) 2015-09-09 2019-04-16 Amazon Technologies, Inc. Verification of data set components using digitally signed probabilistic data structures
US10942844B2 (en) 2016-06-10 2021-03-09 Apple Inc. Reserved memory in memory management system
US10019456B2 (en) * 2016-06-29 2018-07-10 Microsoft Technology Licensing, Llc Recovering free space in nonvolatile storage with a computer storage system supporting shared objects
US10275541B2 (en) * 2016-08-05 2019-04-30 Micron Technology, Inc. Proactive corrective actions in memory based on a probabilistic data structure
US10228860B2 (en) * 2016-11-14 2019-03-12 Open Drives LLC Storage optimization based I/O pattern modeling
US11010300B2 (en) 2017-05-04 2021-05-18 Hewlett Packard Enterprise Development Lp Optimized record lookups
US10811096B2 (en) * 2017-05-19 2020-10-20 Aspiring Sky Co. Limited Multi-block non-volatile memories with single unified interface
CN107678892B (zh) * 2017-11-07 2021-05-04 黄淮学院 基于跳跃恢复链的连续数据保护方法
US11093140B2 (en) 2018-01-19 2021-08-17 Micron Technology, Inc. Performance allocation among users for accessing non-volatile memory devices
US11243703B2 (en) 2018-04-27 2022-02-08 Hewlett Packard Enterprise Development Lp Expandable index with pages to store object records
US10628063B2 (en) 2018-08-24 2020-04-21 Advanced Micro Devices, Inc. Implementing scalable memory allocation using identifiers that return a succinct pointer representation

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060248391A1 (en) * 2005-05-02 2006-11-02 Glover Jeffrey C State machine-based command line debugger
US7908236B2 (en) * 2006-07-20 2011-03-15 International Business Machines Corporation Using multiple data structures to manage data in cache
US8010747B2 (en) * 2005-11-30 2011-08-30 Red Hat, Inc. Method for tracking of non-resident pages

Family Cites Families (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4132989A (en) 1977-10-18 1979-01-02 Nasa Azimuth correlator for real-time synthetic aperture radar image processing
US4292634A (en) 1978-12-15 1981-09-29 Nasa Real-time multiple-look synthetic aperture radar processor for spacecraft applications
US5059318A (en) 1990-05-14 1991-10-22 Benesi Steve C Fluid seal for a traveling sheet filter press
US5680640A (en) 1995-09-01 1997-10-21 Emc Corporation System for migrating data by selecting a first or second transfer means based on the status of a data element map initialized to a predetermined state
GB2318478B (en) 1996-10-21 2001-01-17 Northern Telecom Ltd Network model for alarm correlation
GB2318479B (en) 1996-10-21 2001-04-04 Northern Telecom Ltd Problem model for alarm correlation
US6266771B1 (en) * 1997-02-10 2001-07-24 The Regents Of The University Of California Probabilistic signature scheme
CA2312444A1 (en) * 2000-06-20 2001-12-20 Ibm Canada Limited-Ibm Canada Limitee Memory management of data buffers incorporating hierarchical victim selection
US6631017B2 (en) 2000-10-12 2003-10-07 Jed Khoury Matched amplification and switch joint transform correlator
US6804763B1 (en) 2000-10-17 2004-10-12 Igt High performance battery backed ram interface
US6920533B2 (en) 2001-06-27 2005-07-19 Intel Corporation System boot time reduction method
US20030056058A1 (en) 2001-09-17 2003-03-20 Alistair Veitch Logical volume data migration
US6978259B1 (en) 2001-10-23 2005-12-20 Hewlett-Packard Development Company, L.P. Automated system adaptation technique particularly for data storage systems
US7093004B2 (en) 2002-02-04 2006-08-15 Datasynapse, Inc. Using execution statistics to select tasks for redundant assignment in a distributed computing platform
US6918020B2 (en) 2002-08-30 2005-07-12 Intel Corporation Cache management
JP2004102374A (ja) 2002-09-05 2004-04-02 Hitachi Ltd データ移行装置を有する情報処理システム
EP1505506A1 (en) * 2003-08-05 2005-02-09 Sap Ag A method of data caching
US7103740B1 (en) 2003-12-31 2006-09-05 Veritas Operating Corporation Backup mechanism for a multi-class file system
US20110145489A1 (en) * 2004-04-05 2011-06-16 Super Talent Electronics, Inc. Hybrid storage device
US20110179219A1 (en) 2004-04-05 2011-07-21 Super Talent Electronics, Inc. Hybrid storage device
US20060069876A1 (en) * 2004-09-30 2006-03-30 Sorav Bansal Method and system of clock with adaptive cache replacement and temporal filtering
US7548908B2 (en) * 2005-06-24 2009-06-16 Yahoo! Inc. Dynamic bloom filter for caching query results
US7548928B1 (en) * 2005-08-05 2009-06-16 Google Inc. Data compression of large scale data stored in sparse tables
JP2007072813A (ja) 2005-09-07 2007-03-22 Hitachi Ltd ストレージシステム、ファイル移動方法、及びコンピュータプログラム
WO2007031696A1 (en) 2005-09-13 2007-03-22 Arm Limited Cache miss detection in a data processing apparatus
US7730058B2 (en) * 2005-10-05 2010-06-01 Microsoft Corporation Searching for information utilizing a probabilistic detector
US20070168398A1 (en) 2005-12-16 2007-07-19 Powerfile, Inc. Permanent Storage Appliance
KR100772863B1 (ko) * 2006-01-13 2007-11-02 삼성전자주식회사 요구 페이징 기법을 적용한 시스템에서 페이지 교체 수행시간을 단축시키는 방법 및 장치
US7500050B2 (en) * 2006-03-20 2009-03-03 International Business Machines Corporation Wise ordering for writes—combining spatial and temporal locality in write caches for multi-rank storage
US7555575B2 (en) 2006-07-27 2009-06-30 Hitachi, Ltd. Method and apparatus for migrating data between storage volumes of different data pattern
US7937428B2 (en) * 2006-12-21 2011-05-03 International Business Machines Corporation System and method for generating and using a dynamic bloom filter
US8032529B2 (en) * 2007-04-12 2011-10-04 Cisco Technology, Inc. Enhanced bloom filters
US8745523B2 (en) 2007-06-08 2014-06-03 Apple Inc. Deletion in electronic backups
US7930547B2 (en) * 2007-06-15 2011-04-19 Alcatel-Lucent Usa Inc. High accuracy bloom filter using partitioned hashing
KR101347285B1 (ko) * 2007-09-28 2014-01-07 삼성전자주식회사 하드디스크 드라이브의 선반입 방법, 이에 적합한 기록매체 그리고 이에 적합한 장치
US7788220B1 (en) 2007-12-31 2010-08-31 Emc Corporation Storage of data with composite hashes in backup systems
US8407398B2 (en) * 2008-10-01 2013-03-26 Lenovo (Singapore) Pte. Ltd. Cache mapping for solid state drives
US8301650B1 (en) * 2008-12-19 2012-10-30 Google, Inc. Bloom filter compaction
KR101517767B1 (ko) * 2009-01-07 2015-05-06 시게이트 테크놀로지 엘엘씨 하이브리드 저장 장치 및 그의 자원 공유 방법
JP5025670B2 (ja) * 2009-01-28 2012-09-12 株式会社東芝 情報処理装置およびデータ記憶装置
US8719486B2 (en) * 2009-06-24 2014-05-06 Micron Technology, Inc. Pinning content in nonvolatile memory
US8612666B2 (en) 2009-06-30 2013-12-17 Intel Corporation Method and system for managing a NAND flash memory by paging segments of a logical to physical address map to a non-volatile memory
US8140537B2 (en) 2009-07-21 2012-03-20 International Business Machines Corporation Block level tagging with file level information
US9291712B2 (en) 2009-09-10 2016-03-22 Nextnav, Llc Cell organization and transmission schemes in a wide area positioning system (WAPS)
WO2011044154A1 (en) 2009-10-05 2011-04-14 Marvell Semiconductor, Inc. Data caching in non-volatile memory
JP5984118B2 (ja) * 2009-12-04 2016-09-06 マーベル ワールド トレード リミテッド 格納デバイスの仮想化
US8438334B2 (en) * 2009-12-22 2013-05-07 International Business Machines Corporation Hybrid storage subsystem with mixed placement of file contents
US20110191522A1 (en) * 2010-02-02 2011-08-04 Condict Michael N Managing Metadata and Page Replacement in a Persistent Cache in Flash Memory
WO2011104741A1 (en) 2010-02-23 2011-09-01 Hitachi, Ltd. Management system for storage system and method for managing storage system
US8732133B2 (en) 2010-03-16 2014-05-20 Commvault Systems, Inc. Extensible data deduplication system and method
US8868487B2 (en) 2010-04-12 2014-10-21 Sandisk Enterprise Ip Llc Event processing in a flash memory-based object store
US8935487B2 (en) 2010-05-05 2015-01-13 Microsoft Corporation Fast and low-RAM-footprint indexing for data deduplication
US20110276744A1 (en) * 2010-05-05 2011-11-10 Microsoft Corporation Flash memory cache including for use with persistent key-value store
US8380949B2 (en) 2010-05-20 2013-02-19 International Business Machines Corporation Managing write operations to an extent of tracks migrated between storage devices
US9401967B2 (en) 2010-06-09 2016-07-26 Brocade Communications Systems, Inc. Inline wire speed deduplication system
US8954669B2 (en) * 2010-07-07 2015-02-10 Nexenta System, Inc Method and system for heterogeneous data volume
US8478934B2 (en) * 2010-07-19 2013-07-02 Lsi Corporation Managing extended RAID caches using counting bloom filters
TWI467581B (zh) * 2010-09-07 2015-01-01 Phison Electronics Corp 複合式儲存裝置及其複合式儲存媒體控制器與定址方法
US8677004B2 (en) 2010-09-10 2014-03-18 International Business Machines Corporation Migration of logical partitions between two devices
US9244779B2 (en) 2010-09-30 2016-01-26 Commvault Systems, Inc. Data recovery operations, such as recovery from modified network data management protocol data
US8583611B2 (en) 2010-10-22 2013-11-12 Hitachi, Ltd. File server for migration of file and method for migrating file
US9032146B2 (en) 2010-11-30 2015-05-12 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Dynamic use of raid levels responsive to workload requirements
US8862845B2 (en) 2010-12-06 2014-10-14 Xiotech Corporation Application profiling in a data storage array
US8583966B2 (en) 2011-04-29 2013-11-12 Lsi Corporation Methods and structure for debugging DDR memory of a storage controller
US9417794B2 (en) * 2011-07-26 2016-08-16 Apple Inc. Including performance-related hints in requests to composite memory
US8788788B2 (en) 2011-08-11 2014-07-22 Pure Storage, Inc. Logical sector mapping in a flash storage array
US8914381B2 (en) 2012-02-16 2014-12-16 Apple Inc. Correlation filter
US9081503B2 (en) 2012-02-16 2015-07-14 Apple Inc. Methods and systems for maintaining a storage volume with holes and filling holes

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060248391A1 (en) * 2005-05-02 2006-11-02 Glover Jeffrey C State machine-based command line debugger
US8010747B2 (en) * 2005-11-30 2011-08-30 Red Hat, Inc. Method for tracking of non-resident pages
US7908236B2 (en) * 2006-07-20 2011-03-15 International Business Machines Corporation Using multiple data structures to manage data in cache

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Wenisch, Thomas F., et al. "Practical off-chip meta-data for temporal memory streaming." High Performance Computer Architecture, 2009. HPCA 2009. IEEE 15th International Symposium on. IEEE, 2009.* *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101675694B1 (ko) * 2015-09-11 2016-11-23 성균관대학교산학협력단 블록 인기도에 기반한 ssd의 블록 교체방법
KR101704936B1 (ko) * 2015-12-07 2017-02-09 성균관대학교산학협력단 블록의 우선성에 기반한 ssd의 블록 교체방법 및 이를 적용하는 하이브리드 저장 시스템

Also Published As

Publication number Publication date
CN104115133A (zh) 2014-10-22
KR20140111346A (ko) 2014-09-18
WO2013122818A1 (en) 2013-08-22
CN104115133B (zh) 2017-08-08
CN104115134A (zh) 2014-10-22
US20130219116A1 (en) 2013-08-22
AU2013221855A1 (en) 2014-08-21
JP2015512098A (ja) 2015-04-23
JP2015508924A (ja) 2015-03-23
EP2798502A1 (en) 2014-11-05
AU2013221855B2 (en) 2016-03-17
CN104115134B (zh) 2018-02-13
US20130219117A1 (en) 2013-08-22
TW201346932A (zh) 2013-11-16
KR101599177B1 (ko) 2016-03-02
KR101620773B1 (ko) 2016-05-12
TWI524348B (zh) 2016-03-01
AU2013221868A1 (en) 2014-08-21
EP2798502B1 (en) 2020-04-08
JP5943096B2 (ja) 2016-06-29
JP5943095B2 (ja) 2016-06-29
WO2013122881A1 (en) 2013-08-22
EP2798501A1 (en) 2014-11-05
EP2798501B1 (en) 2020-12-30
TW201335937A (zh) 2013-09-01
AU2013221868B2 (en) 2016-03-31
US9710397B2 (en) 2017-07-18

Similar Documents

Publication Publication Date Title
KR101599177B1 (ko) 복합식 비휘발성 저장 디바이스를 위한 데이터 이송
JP6764359B2 (ja) 重複除去dramメモリモジュール及びそのメモリ重複除去方法
US20140372675A1 (en) Information processing apparatus, control circuit, and control method
CN105607867B (zh) 主-从重复删除储存系统及其方法和计算机可读储存介质
CA2978927C (en) Data check method and storage system
CN111309258B (zh) 一种b+树的存取方法、装置和计算机可读存储介质
US20140372673A1 (en) Information processing apparatus, control circuit, and control method
US20140223072A1 (en) Tiered Caching Using Single Level Cell and Multi-Level Cell Flash Technology
JP2017084338A (ja) フラッシュメモリのフラッシングを改善する方法およびシステム
WO2013075306A1 (zh) 数据访问方法和装置
CN109165321B (zh) 一种基于非易失内存的一致性哈希表构建方法和系统
TW202009716A (zh) 記憶體系統及刪除重複記憶體系統
US9699254B2 (en) Computer system, cache management method, and computer
CN109002400B (zh) 一种内容感知型计算机缓存管理系统及方法
US9699263B1 (en) Automatic read and write acceleration of data accessed by virtual machines
CN108804571B (zh) 一种数据存储方法、装置以及设备
CN113296686A (zh) 数据处理方法、装置、设备及存储介质
US9710514B1 (en) Systems and methods for efficient storage access using metadata
US11853577B2 (en) Tree structure node compaction prioritization

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190129

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20200129

Year of fee payment: 5