KR20230026938A - 수명 자각 지속 스토리지 - Google Patents
수명 자각 지속 스토리지 Download PDFInfo
- Publication number
- KR20230026938A KR20230026938A KR1020220079790A KR20220079790A KR20230026938A KR 20230026938 A KR20230026938 A KR 20230026938A KR 1020220079790 A KR1020220079790 A KR 1020220079790A KR 20220079790 A KR20220079790 A KR 20220079790A KR 20230026938 A KR20230026938 A KR 20230026938A
- Authority
- KR
- South Korea
- Prior art keywords
- key
- value
- block
- lifetime
- persistent storage
- Prior art date
Links
- 230000002085 persistent effect Effects 0.000 title claims abstract description 57
- 238000012986 modification Methods 0.000 claims abstract description 46
- 230000004048 modification Effects 0.000 claims abstract description 45
- 238000000034 method Methods 0.000 claims abstract description 31
- 238000012545 processing Methods 0.000 claims description 26
- 210000000352 storage cell Anatomy 0.000 claims description 14
- 230000003321 amplification Effects 0.000 abstract description 8
- 238000003199 nucleic acid amplification method Methods 0.000 abstract description 8
- 210000004027 cell Anatomy 0.000 description 26
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000013403 standard screening design Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 4
- 230000004720 fertilization Effects 0.000 description 4
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000005259 measurement Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000035558 fertility Effects 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 150000003071 polychlorinated biphenyls Chemical class 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000003442 weekly effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7204—Capacity control, e.g. partitioning, end-of-life degradation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7207—Details relating to flash memory management management of metadata or control data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7209—Validity control, e.g. using flags, time stamps or sequence numbers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
수명-자각 지속 키-값 스토리지를 위한 시스템 및 방법이 제공된다.일부 실시 예들에서, 방법은 제1 키에 대한 제1 수정 명령어를 수신하는 단계; 지속 스토리지 장치를 위한 장치 쓰기 카운터를 증가시키는 단계; 상기 장치 쓰기 카운터의 현재 값에 기반하여, 상기 지속 스토리지 장치로부터 상기 제1 키를 위한 제1 블록을 선택하는 단계; 그리고 상기 제1 키 및 연관된 제1 값을 상기 제1 블록에 저장하는 단계를 포함한다.
Description
본 기재에 따른 실시 예들의 하나 또는 그보다 많은 측면들은 키-값 스토리지에 관한 것으로, 더 상세하게는 수명-자각 지속 키-값 스토리지를 위한 시스템 및 방법에 관한 것이다.
지속(persistent) 스토리지 시스템(솔리드 스테이트 드라이브와 같은) 연관된 분야에서, 데이터는 예를 들어 기입될 데이터의 사이즈에 기반하여 대상 블록들을 선택하고 그리고 파편화를 줄이기 위해 시도할 수 있는 피팅 알고리즘(fitting algorithm)에 기반하여 가용 블록들에 기입될 수 있다. 이러한 알고리즘은 짧은 예측 수명을 갖는 데이터 (예를 들어, 상대적으로 짧은 시간 구간 내에 데이터가 수정되려 하고 그리고 블록에서 무효화되는)가 상대적으로 긴 예측 수명을 갖는 데이터와 동일 블록에 기입되는 것을 유발할 수 있다. 가비지 컬렉션 동작은 장수명 데이터가 수정되기 전에 장수명 데이터를 삭제하고 이동시킬 수 있으므로, 이는 상대적으로 큰 쓰기 증폭 인자(WAF)(write amplification factor)를 유발할 수 있다.
따라서, 데이터를 지속 스토리지에 저장하기 위한 향상된 시스템 및 방법을 위한 요구가 존재한다.
통상적인 데이터 피팅 알고리즘은 단수명 데이터와 장수명 데이터가 하나의 블록에 혼합되는 것을 유발할 수 있다. 이러한 혼합은 높은 쓰기 증폭 인자를 유발할 수 있다. 본 기재는 유사한 수명을 갖는 데이터를 동일 블록에 할당하기 위한 시스템 및 방법을 제공할 것이다.
일부 실시 예들에서, 키-값(KV) 지속 스토리지 시스템(예를 들어, KV 솔리드 스테이트 드라이브(SSD))는 추정된 키-값 수명, 예를 들어 각 KV가 만료되기 전에, 즉 그것의 수정 또는 삭제를 위한 명령어가 수신되기 전에, 얼마나 오래 저장되어 있을 것으로 예측되는지에 따른, 키-값 쌍들(KV들)을 저장한다. 각 KV는 유사한 추정된 키-값 수명들을 갖는 다른 KV들과 함께 블록에 저장된다. 결과적으로, 임의의 블록 내의 KV들은 거의 동시에 만료될 것으로 추정되며, 가비지 컬렉션(만료되지 않은 KV들을 재위치시키는 것을 포함할)은 블록 내에 저장된 데이터의 작은 일부만을 재위치시키는 것을 수반할 것이고, 따라서 쓰기 증폭 인자는 상대적으로 작을 것이다.
임의의 KV의 추정된 키-값 수명은 SSD에서 수행되는 매 쓰기에서 증가되는 장치 쓰기 카운터에 기반할 수 있다. 장치 쓰기 카운터의 값은 각 KV에 대한 수정 히스토리에 기록될 수 있고, 그리고 각 KV에 대한 추정된 키-값 수명은 수정 히스토리에 기반할 수 있다. 예를 들어, 장치 쓰기 카운터의 상대적으로 적은 증가들을 포함하는 간격들에서 히스토리적으로 수정되었던 KV는 상대적으로 짧은 수명을 갖고, 그리고 장치 쓰기 카운터의 상대적으로 많은 증가들을 포함하는 간격들에서 히스토리적으로 수정되었던 KV는 상대적으로 긴 수명을 갖는다.
본 기재의 실시 예에 따르면, 방법이 제공된다. 방법은 제1 키에 대한 제1 수정 명령어를 수신하는 단계; 지속 스토리지 장치를 위한 장치 쓰기 카운터를 증가시키는 단계; 상기 장치 쓰기 카운터의 현재 값에 기반하여, 상기 지속 스토리지 장치로부터 상기 제1 키를 위한 제1 블록을 선택하는 단계; 그리고 상기 제1 키 및 연관된 제1 값을 상기 제1 블록에 저장하는 단계를 포함한다.
일부 실시 예들에서, 상기 장치 쓰기 카운터는 상기 지속 스토리지 장치에서 수행되는 각 쓰기 동작에 대해 증가되도록 구성된다.
일부 실시 예들에서, 상기 방법은 상기 제1 키에 대한 수정 히스토리를 업데이트하는 단계를 더 포함하고, 상기 수정 히스토리는 상기 장치 쓰기 카운터의 상기 현재 값 및 이전에 실행된 수정 명령어 동안 상기 장치 쓰기 카운터의 값에 기반한다.
일부 실시 예들에서, 상기 제1 블록을 선택하는 단계는 상기 제1 키에 대한 추정된 키-값 수명의 측정에 기반하여 상기 제1 블록을 선택하는 단계를 포함한다.
일부 실시 예들에서, 상기 방법은 상기 제1 키의 상기 수정 히스토리에 기반하여 상기 추정된 키-값 수명의 측정을 계산하는 단계를 더 포함한다.
일부 실시 예들에서, 상기 방법은 상기 추정된 키-값 수명의 측정을 수신하는 단계를 더 포함한다.
일부 실시 예들에서, 상기 방법은 제2 키에 대한 제2 수정 명령어를 수신하고, 그리고 상기 제2 키에 대한 추정된 키-값 수명에 기반하여 제2 블록을 선택하는 단계를 더 포함한다.
일부 실시 예들에서, 상기 제1 블록은 제1 타입의 스토리지 셀들을 포함하고, 그리고 상기 제2 블록은 상기 제1 타입과 다른 제2 타입의 스토리지 셀들을 포함한다.
일부 실시 예들에서, 상기 제2 키의 상기 추정된 키-값 수명은 상기 제1 키의 상기 추정된 키-값 수명보다 크고, 그리고 상기 제1 타입의 스토리지 셀들은 상기 제2 타입의 스토리지 셀들보다 더 큰 수명을 갖는다.
일부 실시 예들에서, 상기 제1 블록은 제1 타입의 스토리지 셀들을 포함하고, 그리고 상기 제2 블록은 상기 제1 타입과 다른 제2 타입의 스토리지 셀들을 포함한다.
본 기재의 실시 예에 따르면, 시스템이 제공된다. 시스템은 프로세싱 회로; 그리고 지속 스토리지 매체를 포함하고, 상기 프로세싱 회로는 제1 키에 대한 제1 수정 명령어를 수신하고, 상기 지속 스토리지 장치를 위한 장치 쓰기 카운터를 증가시키고, 상기 장치 쓰기 카운터의 현재 값에 기반하여, 상기 지속 스토리지 장치로부터 상기 제1 키를 위한 제1 블록을 선택하고, 그리고 상기 제1 키 및 연관된 제1 값을 상기 제1 블록에 저장하도록 구성된다.
일부 실시 예들에서, 상기 장치 쓰기 카운터는 상기 지속 스토리지 장치에서 수행되는 각 쓰기 동작에 대해 증가되도록 구성된다.
일부 실시 예들에서, 상기 프로세싱 회로는 상기 제1 키에 대한 수정 히스토리를 업데이트하도록 더 구성되고, 상기 수정 히스토리는 상기 장치 쓰기 카운터의 상기 현재 값 및 이전에 실행된 수정 명령어 동안 상기 장치 쓰기 카운터의 값에 기반한다.
일부 실시 예들에서, 상기 제1 블록을 선택하는 것은, 상기 제1 키에 대한 추정된 키-값 수명의 측정에 기반하여 상기 제1 블록을 선택하는 것을 포함한다.
일부 실시 예들에서, 상기 프로세싱 회로는 상기 제1 키의 상기 수정 히스토리에 기반하여 상기 추정된 키-값 수명의 측정을 계산하도록 더 구성된다.
일부 실시 예들에서, 상기 프로세싱 회로는 상기 추정된 키-값 수명의 측정을 수신하도록 더 구성된다.
일부 실시 예들에서, 상기 프로세싱 회로는 제2 키에 대한 제2 수정 명령어를 수신하고, 그리고 상기 제2 키에 대한 추정된 키-값 수명에 기반하여 제2 블록을 선택하도록 더 구성된다.
일부 실시 예들에서, 상기 제1 블록은 제1 타입의 스토리지 셀들을 포함하고, 그리고 상기 제2 블록은 상기 제1 타입과 다른 제2 타입의 스토리지 셀들을 포함한다.
일부 실시 예들에서, 상기 제2 키의 상기 추정된 키-값 수명은 상기 제1 키의 상기 추정된 키-값 수명보다 크고, 그리고 상기 제1 타입의 스토리지 셀들은 상기 제2 타입의 스토리지 셀들보다 더 큰 수명을 갖는다.
본 기재의 실시 예에 따르면, 시스템이 제공된다. 시스템은 프로세싱을 위한 수단들; 그리고 지속 스토리지 매체를 포함하고, 상기 프로세싱을 위한 수단들은 제1 키에 대한 제1 수정 명령어를 수신하고, 상기 지속 스토리지 장치를 위한 장치 쓰기 카운터를 증가시키고, 상기 장치 쓰기 카운터의 현재 값에 기반하여, 상기 지속 스토리지 장치로부터 상기 제1 키를 위한 제1 블록을 선택하고, 그리고 상기 제1 키 및 연관된 제1 값을 상기 제1 블록에 저장하도록 구성된다.
본 기재에 따르면, 데이터는 그들의 히스토리적 수명에 기반하여 블록들에 저장된다. 따라서, 유사한 수명을 갖는 데이터가 동일한 블록에 저장되어, 쓰기 증폭 인자가 감소된다.
본 기재의 이러한 그리고 다른 측면들 및 장점들이 상세한 설명, 청구항들, 그리고 첨부된 도면들을 참조하여 더 인식되고 그리고 이해될 것이다.
도 1은 본 기재의 실시 예에 따른 데이터 레이아웃 다이어그램이다.
도 2는 본 기재의 실시 예에 따른 키-값 쌍을 저장 또는 수정하기 위한 방법의 흐름도이다.
도 3a는 본 기재의 실시 예에 따른 키-값 쌍을 삭제하기 위한 방법의 흐름도이다.
도 3b는 본 기재의 실시 예에 따른 가비지 컬렉션을 수행하기 위한 방법의 순서도이다.
도 4는 본 기재의 실시 예에 따른 호스트 및 스토리지 장치의 블록도이다.
도 5는 명령어를 처리하는 방법의 흐름도이다.
도 1은 본 기재의 실시 예에 따른 데이터 레이아웃 다이어그램이다.
도 2는 본 기재의 실시 예에 따른 키-값 쌍을 저장 또는 수정하기 위한 방법의 흐름도이다.
도 3a는 본 기재의 실시 예에 따른 키-값 쌍을 삭제하기 위한 방법의 흐름도이다.
도 3b는 본 기재의 실시 예에 따른 가비지 컬렉션을 수행하기 위한 방법의 순서도이다.
도 4는 본 기재의 실시 예에 따른 호스트 및 스토리지 장치의 블록도이다.
도 5는 명령어를 처리하는 방법의 흐름도이다.
첨부의 도면들과 연계되어 아래에서 제공되는 상세한 설명은 본 기재에 따라 제공되는 수명-자각 키-값 지속 스토리지(lifecycle-aware persistent key-value storage)를 위한 시스템 및 방법의 예시적인 실시 예들의 설명으로 의도되며, 본 기재가 구성되거나 활용될 수 있는 유일한 형태를 나타내는 것을 의도하지 않는다. 설명은 기재된 실시 예들과 연계되어 본 기재의 특색들을 제공한다. 그러나 본 기재의 범위 내에 포함되는 것으로 의도되는 다른 실시 예들에 의해, 동일한 또는 등가적인 기능들 및 구조들이 달성될 수 있음이 이해될 것이다. 여기에서 언급되는 바와 같이, 유사한 요소 번호들은 유사한 요소들 또는 특색들을 가리키는 것을 의도한다.
키-값(KV)(key-value) 스토리지(예를 들어, 솔리드 스테이트 드라이브(SSD) KV 스토리지)는 널리 사용되지만(예를 들어, 고성능 컴퓨팅(HPC)(high-performance computing)에서), 응용들이 매체를 사용할 수 있는 방법에서 제한적일 수 있다. KV 스토리지는 매체의 자유 공간 관리를 장치 자체로 오프로드(offload)할 수 있지만, 응용들이 장치 내의 데이터 배치 정책들의 완전한 제어 하에 있게 하지 않을 수 있다. HPC 스토리지에 영향을 주는 이슈들 중 하나는 서로 다른 데이터 세트들이 서로 다른 수명들을 갖고, 위에서 언급된 바와 같이, 이는 증가된 쓰기 증폭 인자들을 유발할 수 있다. 이 문제는 실질적으로 덜 비싸지만 매우 낮은 수명을 갖는 쿼드-레벨 셀 또는 쿼드-레벨 셀(QLC) NAND와 같은 고집적 NAND 매체의 사용에 의해 완화될 수 있다.
일부 실시 예들에서, 유사한 수명들을 갖는 데이터를 포함하는 블록의 소거(가비지 컬렉션을 위해)는 해당 블록 내의 모든 또는 거의 모든 데이터가 만료될 때까지 지연될 수 있으므로, 각 SSD 블록에 유사한 수명들을 갖는 데이터를 함께 모으는 것은 장치 가비지 컬렉션(GC)의 요구를 크게 감소시킬 수 있고, 또한 WAF를 줄일 수 있다. 또한, 유사한 수명들을 갖는 데이터 세트들을 함께 모으는 것의 추가된 유연성을 갖는 로그-스트럭처(log structured) 방식으로 KV 저장소들에 데이터 세트들을 저장하는 것을 가능하게 하는 것은 응용들이 더 밀집된 SSD들의 잠재성을 달성하게 하여 유용할 수 있다.
일부 실시 예들에서, 응용은 더 밀집된(저수명) 매체의 효과적인 사용을 위해 수정될 수 있지만, 이러한 수정들은 대상이 얼마자 자주 수정되는지를 명백히 추적하는 것을 잠재적으로 수반하고 그리고 대상의 수명의 측정으로써 MTBM(Mean-Time-Between-Modifications)을 사용하므로 복잡하고 힘들다. 또한, 응용에 의한 유사한 수명들을 갖는 대상들의 추적 및 콜라케이팅(collocating)은 CPU 및 메모리 자원들을 소비할 수 있고, 이 해법(solution)의 전개의 총 비용(TCD)(Total Cost of Deployment)을 증가시킬 수 있다.
SSD들과 같은 몇몇 지속 스토리지 장치들은 서로 다른 타입들, 그리고 서로 다른 밀도 또는 수명 특성들을 갖는 셀들을 포함할 수 있다. 예를 들어, NAND 플래시 셀은 싱글 레벨 셀(SLC)(셀 당 하나의 비트를 저장하는), 더블-레벨 셀(DLC)(셀 당 두 개의 비트들을 저장하는), 트리플-레벨 셀(TLC)(셀 당 세 개의 비트들을 저장하는), 또는 쿼드-레벨 셀(QLC)(셀 당 네 개의 비트들을 저장하는)일 수 있다. 더 많은 비트들을 저장할 수 있는 셀들은 더 적은 비트들을 저장할 수 있는 셀들보다 더 낮은 수명, 더 낮은 비트 당 비용, 그리고 더 높은 밀도를 가질 수 있다. 여기에서 사용되는 바와 같이, 셀의 '수명'은 셀의 신뢰도가 수용할 수 없는 수준으로 열화하기 전에 셀에 의해 수행될 수 있는 쓰기 또는 소거 사이클들의 수의 측정일 수 있다. 쓰기 또는 소거 사이클들에 의한 신뢰성의 소실은 '마모(wear)'로 참조될 수 있다.
도 1을 참조하면, 일부 실시 예들에서, KV 지속 스토리지 시스템(예를 들어, 적절히 구성되고 그리고 프로그램된 KV SSD)은 SSD 블록들('블록'은 독립적으로 소거될 수 있는 가장 작은 단위)을 수명 티어들(105)(lifecycle tiers)에 할당할 수 있다. 유사한 수명들(또는 '예상되는 키-값 수명들')을 갖는 모든 키-값 쌍들(KV)(110)은 동일한 티어에 배치될 수 있고, 그리고 장치 해시맵(115)은 KV가 저장된 주소들의 목록을 포함할 수 있다. 예를 들어, KV 지속 스토리지 시스템은 세 개의 티어들, 즉 (i) 시간마다 변경되는 티어(제1티어), (ii) 날마다 변경되는 티어(제2티어), 그리고 주마다 변경되는 티어(제3티어)를 유지할 수 있다. 시간 상 어느 때에건, KV 지속 스토리지 시스템은 하나의 블록을 세 개의 티어들의 각각에 할당할 수 있다. SSD 내의 가용 블록들의 나머지는 어느 티어에도 할당되지 않으며 자유 풀(free pool)을 형성할 수 있다. 이와 같이, 각 할당된 블록은 유사한 수명들을 갖는 KV를 저장할 수 있다. 이는 위에서 언급된 바와 같이 쓰기 증폭 인자를 줄이는 것을 도울 수 있다. 또한, 지속 스토리지 장치가 서로 다른 타입들의 플래시 메모리 셀들을 포함하면, 저-수명 셀들로 구성된 블록들의 셀들이 너무 빠르게 마모되지 않도록, 저-수명 셀로 구성된 블록들을 장-수명 KV를 저장하는데 사용되는 티어들에 할당하는 것이 유리할 수 있다.
블록의 수명 티어에 할당되면, 블록 내의 페이지들의 일부(예를 들어, 저장된 키 당 하나의 페이지)는 키들의 카피들(copies)을 만드는 목적으로 예약되거나 보존될 수 있다. 이러한 페이지들은 키가 만료되는 때에 사용될 수 있다. 만료에 따라, 키는 만료되었음을 가리키도록 설정된 지정 비트와 함께 예약 페이지로 카피될 수 있고, 그리고 플래시 변환 계층의 논리-대-물리 테이블은 키에 대응하는 논리 어드레스가 키의 새로운 물리 위치와 연관되도록 업데이트될 수 있다. 이러한 방식으로, 키에 대응하는 해시 맵을 저장하는 링크드 리스트(linked list)는 온전하게 유지될 수 있다(키를 전체적으로 삭제하는 것은 링크드 리스트 내에 단절(break)을 만들 수 있다). 다른 유사한 실시 예들에서, 만료된 키들의 카피들을 위한 페이지들을 보존하는 대신, 블록 내의 각 키의 상태를 저장하기 위한(즉, 키가 만료되었는지 아닌지) 별도의 데이터 구조가 사용될 수 있다.
KV 지속 스토리지 시스템은 또한 대상의 매 수정 명령(예를 들어, 입력(Put) 명령)에서 증가되는 장치 쓰기 카운터(120)(DWC)로 참조될 수 있는 지속 카운터를 유지할 수 있다. 여기에서 사용되는 바와 같이, '수정 명령'은 KV를 처음으로 기입하거나, 키와 연관된 값을 변경하거나, 또는 KV를 삭제하는 명령(KV의 Put() 또는 KV의 Delete와 같은)이다. 수정 명령이 이미 저장된 KV에 대해 수신되면, KV는 '만료된' 것으로 언급될 수 있다. 새로운 대상을 저장할 때, 또는 'KV'(키 및 대응하는 값으로 구성된)를 처음으로 KV 지속 스토리지 시스템에 저장할 때, KB 지속 스토리지 시스템은 키와 함께 현재 장치 쓰기 카운터 및 입력(Put) 카운트(키에 대해 수신된 입력(Put) 명령들의 수의 카운트)를 저장할 수 있다. 이 정보(장치 쓰기 카운터 및 입력(Put) 카운트의 값을 포함하는), 그리고 후속 수정 명령들이 수신될 때 저장될 수 있는 유사한 정보는 키에 대한 '수정 히스토리' 또는 키에 대한 '히스토그램', '히스토그램 데이터', 또는 '히스토그램 정보'로 참조될 수 있다.
예를 들어, KV가 KV 지속 스토리지 시스템에 처음으로 기입될 때, 수정 히스토리는 KV가 기입되었을 때의 장치 쓰기 카운터의 값, 그리고 입력(Put) 카운터에 대한 1의 값을 포함할 수 있다. 값(V)이 복수회 수정되었으면, 수정 히스토리는 예를 들어 과거 100,000 장치 쓰기 카운터 카운트들에서 시작하고 현재에 종료하는 제1 구간 동안 키에 대해 수신된 수정 명령들의 추정일 수 있는 (i) 최근 수정률, 그리고 (a) KV에 대한 첫 번째 입력(Put)에서 시작하고 과거 100,000 장치 쓰기 카운터 카운트들에서 종료하는 제2 구간 동안 키에 대해 수신된 수정 명령들의 수 그리고 (b) 제2 구간 동안의 총 장치 쓰기 카운터 카운트들의 비율의 추정(또는 추정에 비례하는)일 수 있는 (ii) 초기 수정률을 포함할 수 있는 2-구간 비율 히스토리와 같은 추가적인 정보로 보충될 수 있다.
위에서 언급된 바와 같이, KV 지속 스토리지 시스템은 추정된 KV의 키-값 수명에 기반하여 수명 티어에 각 KV를 저장할 수 있다. 여기에서 사용되는 바와 같이, KV의 '추정된 키-값 수명'은 KV가 수정되어야 함을 요청하는(예를 들어, 값이 수정되어야 함을 요청하거나 KV가 삭제되어야 함을 요청하는) 명령이 수신되기 전에, KV 지속 스토리지 시스템에 KV가 저장될 것으로 추정되는 구간의 길이의 추정이다. 추정된 키-값 수명은 실제 시간으로(예를 들어, 분들로, 시간들로, 날들로, 연들로) 또는 다른 단위들, 예를 들어 장치 쓰기 카운터의 증분들로 측정될 수 있다. 추정된 키-값 수명은 위에서 기술된 초기 수정률 및 최근 수정률과 같은 추정된 키-값 수명의 하나 또는 그보다 많은 측정들에 기반할 수 있다. 여기에서 사용되는 바와 같이, '추정된 키 수명의 측정'은 추정된 키-값 수명의 표지를 제공하는 임의의 함수일 수 있다(예를 들어, 추정된 키 수명의 측정은 (i) 수정들 사이의 평균 시간(추정된 키-값 수명에 거의 비례할 수 있는)일 수 있고, 또는 (ii) 수정률(추정된 키-값 수명에 거의 반비례할 수 있는)일 수 있다.
KV가 충분한 수정 히스토리를 가지면, KV 지속 스토리지 시스템은 수정 히스토리에 기반하여 KC의 추정된 키-값 수명의 측정을 계산할 수 있다. KV 지속 스토리지 시스템은 문턱들의 세트에 기반하여 티어를 선택할 수 있다. 예를 들어, KV 지속 스토리지 시스템이 2-구간 비율 히스토리를 유지하면, 제1문턱보다 큰 최근 수정률을 갖는 KV에 대해 제1티어가 선택될 수 있고, 제1문턱보다 작고 그리고 제2문턱보다 큰 최근 수정률을 갖는 KV에대해 제2티어가 선택될 수 있고, 그리고 제2문턱보다 작은 최근 수정률을 갖는 KV에 대해 제3티어가 선택될 수 있다(제2문턱은 제1문턱보다 작다). 일부 실시 예들에서, 수정 히스토리의 상이한 함수, 예를 들어 최근 수정률 대신 초기 수정률의 1/3과 최근 수정률의 2/3의 합과 같은 것이 문턱들과 비교될 수 있는 가중된 수정률(weighted modification rate)이 사용될 수 있다. 장치 쓰기 카운터에 기반한(예를 들어, 실제 시간에 기반하는 대신) 추정된 키-값 수명의 측정의 사용은 실제 시간이 의미 있지 않고 시스템이 계속해서 적절히 동작하는 환경들에서 장점을 가질 수 있다. 예를 들어, SSD가 셧 다운 되거나, 서비스가 중단되거나, 또는 그렇지 않으면 시간 구간 동안 비활성이면, 그리고 추정된 키-값 수명의 측정이 실제 시간에 기반하여, 비활성화의 구간은 KV가 더 긴 수명을 갖는 것으로 부적절하게 나타나는 것을 유발할 수 있다. 실제 시간 대신 장치 쓰기 카운터의 사용은 이 문제를 회피할 수 있다.
일부 실시 예들에서, KV 지속 스토리지 시스템은 KV가 처음으로 기입될 때에 추정된 키-값 수명의 의미 있는 측정을 계산하기에 충분한 수정 히스토리를 결여할 수 있다. 이런 상황에서, KV는 '초기 스토리지 티어'와 같은 선택된 티어에 기입될 수 있고, 그리고 (i) 추가적인 수정 명령들이 KV에 대해 수신될 때까지(예를 들어, KV에 대해 적어도 둘보다 많은 수정 명령들이 수신될 때까지), 또는 (ii) KV에 대한 수정 명령이 수신되지 않고 충분한 장치 쓰기 카운터 증가들이 발생하여, KV가 가장 긴 수명 티어에 포함되기에 충분히 큰 추정된 키-값 수명을 가짐을 결정할 때까지, 그 티어에 남겨질 수 있다. 추정된 키-값 수명의 의미 있는 측정을 계산할 수 있도록 충분한 추가적인 수정 명령들이 KV에 대해 수신되면, KV는 추정된 키-값 수명의 측정에 대응하는 티어로 옮겨질 수 있다. 초기 스토리지 티어는 가장 긴 수명 셀들로 구성될 수 있고(예를 들어, SLC 셀들)(KV가 단-수명 KV로 판별되면 셀들에 대해 유발되는 마모가 수용 가능할 수 있도록), 또는 예를 들어 SSD에 저-수명 셀들(예를 들어, QLC 셀들)이 풍부하면, 초기 스토리지 티어는 이러한 저-수명 셀들로 구성될 수 있다.
일부 실시 예들에서, 응용(예를 들어, KV 지속 스토리지 시스템을 이용하는 호스트에서 실행중인 응용)은 KV 지속 스토리지 시스템으로 KV를 기입하거나 수정하는 명령어와 함께 추정된 키-값 수명의 측정을 전송할 수 있다. 이러한 실시 예에서, KV 지속 스토리지 시스템이 새로운 KV를 기입하는 명령어를 수신할 때, KV 지속 스토리지 시스템은 KV에 대한 중대한 수정 히스토리를 누적하기를 기다리지 않고, 새로운 KV를 즉시 적절한 티어에 저장할 수 있다. 중대한 수정 히스토리가 이미 누적된(예를 들어, 적어도 2 내지 100 사이의 문턱값의 수정 명령어들이 수신된) KV에 대해, KV 지속 스토리지 시스템은 수정 히스토리로부터 도출된 추정된 키-값 수명의 측정과 함께 또는 그 대신, 추정된 키-값 수명의 측정(응용으로부터 수신된)을 사용할 수 있다.
KV 지속 스토리지 시스템에 저장된 KV가 업데이트될 때, 이전에 저장된 수정 히스토리는 키와 함께 읽혀지고, 그리고 새로운 수정 명령어를 설명하도록 수정될 수 있다. 예를 들어, 수정 히스토리가 2-구간 비율 히스토리를 포함하면, 초기 수정률은 제1 구간 및 제2 구간 사이의 경계 내의 변경에 기반하여 업데이트될 수 있고, 그리고 최근 수정률은 (i) 제1 구간 및 제2 구간 사이의 경계 내의 변경 그리고 (ii) 새로이 수신된 수정 명령어에 기반하여 업데이트될 수 있다.
다른 예로서, KV가 이전에 저장된 때의 장치 쓰기 카운터 값 및 현재 장치 카운터 값 사이의 차이는 KV의 순간(instantaneous) 수명의 측정으로 취해질 수 있다. KV의 순간 수명은 KV의 평균 수명을 도출하기 위해 KV의 이전 수정들에 대한 히스토리(historical) 정보와 병합될 수 있다. 이렇게 추론된 KV의 평균 수명에 기반하여, 업데이트된 KV는 KV의 추정된 키-값 수명에 가장 가깝게 부합하는 수명 티어로부터의 페이지들에 할당될 수 있다. 수명 티어가 할당된 SSD 블록을 이미 갖고 그리고 해당 블록이 자유 공간을 가지면, 해당 블록으로부터의 페이지들이 사용될 수 있다. 수명 티어가 그것에 할당된 블록을 갖지 않으면, 새로운 SSD 블록이 해당 티어의 전용으로 되고, 그리고 가득 찰 때까지 해당 티어를 위한 모든 페이지 할당들을 위해 사용될 수 있다.
위에서 언급된 바와 같이, 일부 실시 예들에서, KV 지속 스토리지 시스템은 KV 수명들을 추론하고 그리고 유사한 수명들을 갖는 대상들을 포함하는 블록의 페이지들에 대한 KV들의 저장을 최적화하는 기능을 가질 수 있다. 또한, 할당들은 블록이 새로운 명령어들이 수신되는 순서로 채워질 수 있는 의미에서, 로그-스트럭처(log-structured) 패턴을 따를 수 있다.
일부 실시 예들에서, KV 지속 스토리지 시스템은 SSD 내에 전체적으로 포함될 수 있다. 다른 실시 예들에서, KV 지속 스토리지 시스템의 일부는 SSD의 외부에 구현될 수 있다. 예를 들어, RAID(Redundant Array of Independent Disks) 컨트롤러 및 복수의 SSD들을 포함하는 RAID 시스템에서, RAID 컨트롤러는 키-값 레이어를 구현하고, 그리고 SSD들은 블록 SSD들일 수 있다. 다른 실시 예에서, 하나 또는 그보다 많은 SSD들은 키-값 레이어를 구현하는 호스트와 연결될 수 있다. 이러한 실시 예들의 어느 것에서든, 키-값 레이어는 여기에 기재된 방법들에 따른 장치 쓰기 카운터 및 추정된 키-값 수명들에 따른 KV들의 티어드(tiered) 스토리지를 구현할 수 있다.
여기에 기재된 방법들의 몇몇 측면들이 도 2, 도 3a 및 도 3b에 기재된다. 도 2에서, 205에서 입력(Put) 명령어가 수신되고, 그리고 210에서 장치 쓰기 카운터(DWC)가 증가된다. 215에서 판단되는 바와 같이, 현재 입력(Put)이 키에 대한 첫 번째 입력(Put)이면, 220에서, 장치 쓰기 카운터 및 입력(Put) 카운트(이 경우, 1)가 키와 함께 저장된다. 215에서 판단되는 바와 같이, 현재 입력(Put)이 키에 대한 첫 번째 입력(Put)이 아니면, 225에서, 수정 히스토리에 기반하여 수명 티어가 선택되고, 그리고 프로세스는 220으로 진행한다. 220 단계의 완료 후에, 230에서 판단되는 바와 같이, KV에 대한 티어가 선택되었으면(예를 들어, KV 지속 스토리지 시스템에 의해 추정된 키-값 수명의 측정에 기반하여 행해진 선택의 결과로서 또는 KV 스토리지 시스템에 의해 수신된(예를 들어, 응용으로부터) 알림(indication)의 결과로서), 235에서, KV 페이지들(예를 들어, 키, 히스토그램 정보 및 값)은 선택된 수명 티어에 저장된다. 그렇지 않으면, 그들은 임의의 수명 티어(예를 들어, 추정된 키-값 수명의 측정이 추산되는 동안 KV들의 임시 저장에 사용되도록 비리 선택된 티어)에 저장된다.
일부 실시 예들에서, KV 삭제들을 처리할 때, 삭제된 KV를 포함하는 페이지들은 삭제들을 위해 즉시 대기열에 서지 않는다. 대신, 해당 블록에서 소거된 페이지들의 수를 반영하도록 블록 당 카운터가 업데이트 된다. 블록 내의 문턱수의 페이지들(유사한 수명들을 갖는)이 소거를 위해 마크될 때, 전체 블록이 소거되고 그리고 여전히 살아있는 KV들이 동일 티어의 소스 블록으로 할당된 새로운 블록으로 카피된다. 이 프로세스는 도 3a 및 도 3b에 도시된다. 도 3a를 참조하면, 삭제(Delete) 명령어가 수신될 때, 305에서, 영향을 받는 KV 페이지들은 310에서 삭제를 위해 마크되고, 그리고 영향을 받는 블록 내의 삭제 카운터는 삭제되는 페이지들의 수로 업데이트 된다. 이후에, 320에서 시작하는 도 3b에 도시된 바와 같이, 가비지 컬렉션이 수행된다. 325에서 판단되는 바와 같이, 블록이 삭제될 문턱수의 페이지들로 누적되면(페이지들의 문턱수는, 예를 들어 페이지들의 90% 또는 페이지들의 70% 및 95% 사이의 부분일 수 있음), 330에서, 블록 내의 나머지 살아있는 KV 페이지들은 동일한 수명 티어 내의 다른 블록들로 카피되고, 그리고 335 에서 블록은 소거된다. 325에서 판단되는 바와 같이, 블록이 삭제될 문턱수의 페이지들로 누적되지 않으면, 아무런 행동도 하지 않는다. 일부 실시 예들에서, 페이지들이 유사한 수명들을 가질 것으로 예측되므로, 문턱수의 페이지들(가비지 컬렉션을 트리거하는 것에 도달하는 것)은 SSD의 용량을 수용할 수 없을 정도로 줄이지 않으면서 블록 내의 페이지들의 상대적으로 높은 비율일 수 있다. 일부 실시 예들에서, 쓰기 증폭 인자는, 예를 들어 5보다 작을 수 있다(또는 1.1 및 10.0의 사이).
도 4는 호스트(405) 및 스토리지 장치(410)(KV 스토리지 장치일 수 있는, 예를 들어 KV SSD)의 블록도이다. 스토리지 장치(410)는 2.5", 1.8", MO-297, MO-300, M.2, EDSFF(Enterprise and Data Center SSD Form Factor)를 포함하지만 이들로 한정되지 않는, 지속 스토리지 장치들에 적합한 복수의 폼 팩터들 중 임의의 하나인 폼 팩터를 가질 수 있고, 그리고 PCI(Peripheral Component Interconnect), PCIe (PCI express), 이더넷, SCSI(Small Computer System Interface), SATA(Serial AT Attachment), SAS(Serial Attached SCSI)를 포함하지만 이들로 한정되지 않는, 호스트(405)와 연결될 수 있는 , 지속 스토리지 장치들에 적합한 복수의 인터페이스들 중 임의의 하나일 수 있는 전기적 인터페이스를 가질 수 있다. 호스트(405) 및 스토리지 장치(410)의 각각은 프로세싱 회로(415)(아래에서 더 상세히 논의되는)를 포함할 수 있다. 스토리지 장치(410)는 또한 지속 스토리지 매체(420)(예를 들어, NAND 플래시)를 포함할 수 있다. 스토리지 장치(410)의 프로세싱 회로(410)는 여기에 기재된 방법들의 일부 또는 전부를 수행할 수 있다(그리고 포함하는 프로세싱 회로(415)를 이용하여 스토리지 장치(410)가 수행할 수 있다).
도 5의 흐름도는 방법의 예를 보여주며, 505에서 제1 키에 대한 제1 수정 명령어를 수신하는 것, 510에서 지속 스토리지 장치에 대한 장치 쓰기 카운트를 증가시키는 것, 515에서 장치 쓰기 카운터의 현재 값에 기반하여 스토리지 장치의 복수의 블록들 중에서 제1 키에 대한 제1 블록을 선택하는 것, 520에서 제1 블록에 제1 키 및 연관된 제1 값을 저장하는 것을 포함한다.
여기에서 사용되는 바와 같이, '~의 일부'는 어떤 것의 '적어도 일부'를 의미하며, 어떤 것의 전부보다 적은 것 또는 전부를 의미할 수 있다. 이와 같이, '어떤 것의 일부'는 특별한 사례로서 전체의 것을 포함할 수 있다. 즉, 전체의 것은 어떤 것의 일부의 예이다. 여기에서 사용되는 바와 같이, 제2 수량이 제1 수량 X의 'Y의 이내'일 때, 이는 제2 수량이 적어도 X-Y이고, 그리고 제2 수량은 많아야 X+Y임을 의미한다. 여기에서 사용되는 바와 같이, 제2 수가 제1 수의 'Y% 이내'일 때, 이는 제2 수가 제1 수의 적어도 (1-Y/100)배이고, 그리고 제2 수는 많아야 제1 수의 (1+Y/100)임을 의미한다. 여기에서 사용되는 바와 같이, '또는'의 용어는 '그리고/또는'으로 해석되어야 하고, 예를 들어 'A 또는 B'는 'A 또는 B' 또는 'A 및 B'의 어느 하나를 의미한다. 여기에서 사용되는 바와 같이, '어레이'의 용어는 어떻게 저장되었는지에 관계없이(예를 들어, 연속적인 메모리 위치들 또는 링크드 리스트로 저장되는지) 수들의 정렬된 세트를 참조한다.
본 기재의 배경 기술 섹션 내에 제공되는 배경 기술은 맥락을 설정하기 위해서만 포함되며, 배경기술 섹션의 내용은 선행 기술로 취급되지 않는다. 기술된 구성 요소들(예를 들어, 여기에 포함된 임의의 시스템 다이어그램들)의 임의의 조합 또는 구성 요소들의 임의의 것은 여기에 포함된 임의의 흐름도의 동작들의 하나 또는 그보다 많은 것들을 수행하는데 사용될 수 있다. 또한, (i) 동작들은 예시적인 동작들이고, 그리고 명시적으로 다뤄지지 않은 다양한 추가적인 단계들을 포함할 수 있고, 그리고 (ii) 동작들의 시간적 순서는 가변될 수 있다.
'프로세싱 회로' 및 '프로세싱을 위한 수단들'의 용어들의 각각은 데이터 또는 디지털 신호들을 처리하도록 채용된 하드웨어, 펌웨어, 그리고 소프트웨어의 임의의 조합을 의미하기 위해 여기에서 사용된다. 프로세싱 회로 하드웨어는, 예를 들어 ASIC(application specific integrated circuits), 범용 또는 특수 목적 CPU(central processing units), 디지털 신호 프로세서(DSP), 그래픽 프로세싱 유닛(GPU), 그리고 FPGA(field programmable gate arrays)와 같은 프로그램 가능한 로직 장치들을 포함할 수 있다. 프로세싱 회로에서, 여기에서 사용되는 바와 같이, 각 기능은 해당 기능을 수행하도록 구성된(즉, 하드-와이어드(hard-wired)) 하드웨어 또는 CPU와 같은 비일시적인 스토리지 매체에 저장된 명령어들을 실행하도록 구성된 보다 범용적인 하드웨어에 의해 수행될 수 있다. 프로세싱 회로는 단일 인쇄 회로 기판(PCB) 또는 여러 개의 서로 연결된 PCB들에 분산되어 구현될 수 있다. 프로세싱 회로는 다른 프로세싱 회로들을 포함할 수 있다. 예를 들어, 프로세싱 회로는 PCB 상에서 서로 연결된 FPGA 및 CPU의 두 개의 프로세싱 회로들을 포함할 수 있다.
여기에서 사용되는 바와 같이, 방법(예를 들어, 조정) 또는 제1 수량(예를 들어, 제1 변수)이 제1 수량(예를 들어, 제2 변수)에 '기반한다'고 참조될 때, 이는 제2 수량이 방법의 입력이거나 제1 수량에 영향을 줌을 의미할 수 있다. 예를 들어, 제2 수량은 제1 수량일 계산하는 함수에 대한 입력(예를 들어, 유일한 입력 또는 몇몇 입력들 중 하나)일 수 있고, 또는 제1 수량은 제2 수량과 동등할 수 있고, 또는 제1 수량은 제2 수량과 동일(예를 들어, 메모리 내의 동일 위치 또는 위치들에 저장)할 수 있다.
여기에서 '제1', '제2', '제3' 등의 용어들이 다양한 요소들, 구성 요소들, 영역들, 레이어들, 그리고/또는 섹션들을 기술하는데 사용될 수 있지만, 이러한 요소들, 구성 요소들, 영역들, 레이어들, 그리고/또는 섹션들은 이러한 용어들에 의해 한정되지 않아야 함이 이해될 것이다. 이러한 용어들은 하나의 요소, 구성 요소, 영역, 레이어 또는 섹션을 다른 하나의 요소, 구성 요소, 영역, 레이어 또는 섹션과 구별하기 위해서만 사용된다. 따라서, 여기에서 논의되는 제1 요소, 구성 요소, 영역, 레이어 또는 섹션은 본 기재의 사상 및 범위로부터 멀어지지 않으면서 제 요소, 구성 요소, 영역, 레이어 또는 섹션으로 명명될 수 있다.
여기에서 사용되는 용어들은 특정한 실시 예들만을 기술하는 목적을 위한 것이며, 본 기재의 시술 사상의 한정을 의도하지 않는다. 여기에서 사용되는 바와 같이, '실질적으로, '약', 그리고 유사한 용어들은 근사치의 용어들로 사용되며, 정도의 용어들로 사용되지 않고, 그리고 이 분야에 통상의 기술의 사람들에 의해 이해될 수 있는 측정 또는 계산 값들 내의 자명한 편차를 포함하는 것을 의도한다.
여기에서 사용되는 바와 같이, 문맥에서 다르게 명확히 지칭되지 않으면, 단수 형태들은 복수 형태들 또한 포함함을 의도한다. 이 명세서에서 사용될 때, '포함한다' 그리고/또는 '포함하는'의 용어들은 언급된 특색들, 정수들, 단계들, 동작들, 요소들, 그리고/또는 구성 요소들의 존재를 명시하지만, 하나 또는 그보다 많은 특색들, 정수들, 단계들, 동작들, 구성 요소들, 그리고/또는 그들의 그룹들의 존재 또는 추가를 배제하지 않는다. 여기에서 사용되는 바와 같이, '그리고/또는'의 용어는 연관되어 나열된 항목들의 하나 또는 그보다 많은 것들의 임의의 그리고 모든 조합들을 포함한다. 나열된 요소들에 선행하는 '~의 적어도 하나'와 같은 설명들은 요소들의 전체 목록을 수식하며, 목록의 개별 요소들을 수식하지 않는다. 또한, 본 기재의 실시 예들을 설명할 때에 '할 수 있다'의 사용은 본 기재의 '하나 또는 그보다 많은 실시 예들'을 참조할 수 있다. 또한, '모범적인'의 용어는 예시 또는 사례를 참조함을 의도한다. 여기에서 사용되는 바와 같이, '사용한다', '사용하는', 그리고 '사용된'의 용어들은 각각 '활용한다', '활용하는', 그리고 '활용된'의 동의어들로 여겨질 수 있다.
요소 또는 계층이 다른 요소 또는 계층의 '위에', '연결된', '결합된', 또는 '인접한' 것으로 참조될 때, 그것은 다른 요소 또는 계층의 의 직접 위에, 연결된, 결합된 또는 인접할 수 있고, 또는 아하 또는 그보다 많은 끼어드는 요소들 또는 레이어들이 존재할 수 있다. 반대로, 요소 또는 계층이 다른 요소 또는 계층의 '직접 위에', '직접 연결된', '직접 결합된', 또는 '바로 인접한' 것으로 참조될 때 끼어는 요소들 또는 계층들은 존재하지 않는다.
여기에 인용된 임의의 숫자 범위는 인용된 범위 내에 포함된 동일한 숫자 정확도의 모든 서브-범위들을 포함함을 의도한다. 예를 들어, '1.0 내지 10.0' 또는 '1.0 및 10.0 사이'의 범위는 인용된 1.0의 최소값 및 인용된 10.0의 최대값 사이의(포함하는) 모든 서브 범위들을 포함함을 의도하며, 즉 2.4 내지 7.6과 같이, 1.0와 같거나 그보다 큰 최소값 및 10.0와 같거나 그보다 작은 최대값을 가질 수 있다. 마찬가지로, '10의 35% 이내'로 설명된 범위는 인용된 6.5의 최소값(즉, (1-35/100) 곱하기 10) 및 인용된 13.5의 최대값(즉, (1+35/100) 곱하기 10) 사이의(그리고 포함하는) 모든 서브 범위들을 포함함을 의도하며, 즉 7.4 내지 10.6과 같이, 6.5와 같거나 그보다 큰 최소값 및 135와 같거나 그보다 작은 최대값을 가진다. 여기에 인용된 임의의 최대 수 제한은 그것에 포함된 모든 더 낮은 수 제한들을 포함함을 의도하며, 이 명세서에서 인용된 임의의 최소 수 제한은 그것에 포함된 모든 더 높은 수 제한들을 포함함을 의도한다.
수명-자각 지속 키-값 스토리지를 위한 시스템 및 방법의 모범적인 실시 예들이 여기에서 명확히 설명되고 기술되었지만, 많은 수정들 및 변경들이 이 분야에 숙련된 자들에게 명백할 것이다. 따라서, 본 기재의 원리들에 따라 구성된 수명-자각 지속 키-값 스토리지를 위한 시스템 및 방법이 여기에 명확히 기술된 것과 다르게 실시될 수 있음이 이해될 것이다. 본 기재는 또한 다음의 청구항들 및 그것들과 동등한 것들에서 정의된다.
105: 수명 티어들
110: 키-값 쌍들
115: 장치 해시맵
120: 지속 카운터
110: 키-값 쌍들
115: 장치 해시맵
120: 지속 카운터
Claims (10)
- 방법에 있어서:
제1 키에 대한 제1 수정 명령어를 수신하는 단계;
지속 스토리지 장치를 위한 장치 쓰기 카운터를 증가시키는 단계;
상기 장치 쓰기 카운터의 현재 값에 기반하여, 상기 지속 스토리지 장치로부터 상기 제1 키를 위한 제1 블록을 선택하는 단계; 그리고
상기 제1 키 및 연관된 제1 값을 상기 제1 블록에 저장하는 단계를 포함하는 방법. - 제1항에 있어서,
상기 장치 쓰기 카운터는 상기 지속 스토리지 장치에서 수행되는 각 쓰기 동작에 대해 증가되도록 구성되는 방법. - 제1항에 있어서,
상기 제1 키에 대한 수정 히스토리를 업데이트하는 단계를 더 포함하고,
상기 수정 히스토리는 상기 장치 쓰기 카운터의 상기 현재 값 및 이전에 실행된 수정 명령어 동안 상기 장치 쓰기 카운터의 값에 기반하는 방법. - 제3항에 있어서,
상기 제1 블록을 선택하는 단계는:
상기 제1 키에 대한 추정된 키-값 수명의 측정에 기반하여 상기 제1 블록을 선택하는 단계를 포함하는 방법. - 제4항에 있어서,
상기 제1 키의 상기 수정 히스토리에 기반하여 상기 추정된 키-값 수명의 측정을 계산하는 단계를 더 포함하는 방법. - 제4항에 있어서,
상기 추정된 키-값 수명의 측정을 수신하는 단계를 더 포함하는 방법. - 제1항에 있어서,
제2 키에 대한 제2 수정 명령어를 수신하고, 그리고 상기 제2 키에 대한 추정된 키-값 수명에 기반하여 제2 블록을 선택하는 단계를 더 포함하는 방법. - 제7항에 있어서,
상기 제1 블록은 제1 타입의 스토리지 셀들을 포함하고, 그리고 상기 제2 블록은 상기 제1 타입과 다른 제2 타입의 스토리지 셀들을 포함하는 방법. - 제8항에 있어서,
상기 제2 키의 상기 추정된 키-값 수명은 상기 제1 키의 상기 추정된 키-값 수명보다 크고, 그리고
상기 제1 타입의 스토리지 셀들은 상기 제2 타입의 스토리지 셀들보다 더 큰 수명을 갖는 방법. - 시스템에 있어서:
프로세싱 회로; 그리고
지속 스토리지 매체를 포함하고,
상기 프로세싱 회로는:
제1 키에 대한 제1 수정 명령어를 수신하고,
상기 지속 스토리지 장치를 위한 장치 쓰기 카운터를 증가시키고,
상기 장치 쓰기 카운터의 현재 값에 기반하여, 상기 지속 스토리지 장치로부터 상기 제1 키를 위한 제1 블록을 선택하고, 그리고
상기 제1 키 및 연관된 제1 값을 상기 제1 블록에 저장하도록 구성되는 시스템.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163234582P | 2021-08-18 | 2021-08-18 | |
US63/234,582 | 2021-08-18 | ||
US17/513,365 | 2021-10-28 | ||
US17/513,365 US20230054002A1 (en) | 2021-08-18 | 2021-10-28 | Lifecycle-aware persistent storage |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20230026938A true KR20230026938A (ko) | 2023-02-27 |
Family
ID=82656296
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020220079790A KR20230026938A (ko) | 2021-08-18 | 2022-06-29 | 수명 자각 지속 스토리지 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230054002A1 (ko) |
EP (1) | EP4137952A1 (ko) |
KR (1) | KR20230026938A (ko) |
CN (1) | CN115933964A (ko) |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102289919B1 (ko) * | 2014-04-15 | 2021-08-12 | 삼성전자주식회사 | 스토리지 컨트롤러, 스토리지 장치, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법 |
US10509770B2 (en) * | 2015-07-13 | 2019-12-17 | Samsung Electronics Co., Ltd. | Heuristic interface for enabling a computer device to utilize data property-based data placement inside a nonvolatile memory device |
US10168917B2 (en) * | 2016-04-05 | 2019-01-01 | International Business Machines Corporation | Hotness based data storage for facilitating garbage collection |
US10783186B2 (en) * | 2017-08-31 | 2020-09-22 | Micron Technology, Inc. | Heterogenous key-value sets in tree database |
US10878859B2 (en) * | 2017-12-20 | 2020-12-29 | Micron Technology, Inc. | Utilizing write stream attributes in storage write commands |
US10715499B2 (en) * | 2017-12-27 | 2020-07-14 | Toshiba Memory Corporation | System and method for accessing and managing key-value data over networks |
US11392544B2 (en) * | 2018-02-06 | 2022-07-19 | Samsung Electronics Co., Ltd. | System and method for leveraging key-value storage to efficiently store data and metadata in a distributed file system |
US11347799B2 (en) * | 2019-08-02 | 2022-05-31 | EMC IP Holding Company LLC | Space accounting for data storage usage |
US11347403B2 (en) * | 2019-09-04 | 2022-05-31 | Seagate Technolagy LLC | Extending the life of a solid state drive by using MLC flash blocks in SLC mode |
US11200159B2 (en) * | 2019-11-11 | 2021-12-14 | Alibaba Group Holding Limited | System and method for facilitating efficient utilization of NAND flash memory |
-
2021
- 2021-10-28 US US17/513,365 patent/US20230054002A1/en not_active Abandoned
-
2022
- 2022-06-29 KR KR1020220079790A patent/KR20230026938A/ko unknown
- 2022-07-20 EP EP22185958.0A patent/EP4137952A1/en active Pending
- 2022-08-12 CN CN202210967170.1A patent/CN115933964A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
CN115933964A (zh) | 2023-04-07 |
EP4137952A1 (en) | 2023-02-22 |
US20230054002A1 (en) | 2023-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10275162B2 (en) | Methods and systems for managing data migration in solid state non-volatile memory | |
US11355197B2 (en) | Memory system with nonvolatile cache and control method thereof | |
US20230152969A1 (en) | Memory system and method of controlling memory system | |
CN106874217B (zh) | 存储器系统及控制方法 | |
US11157365B2 (en) | Method for processing stripe in storage device and storage device | |
US11429284B2 (en) | Data categorization based on invalidation velocities | |
KR100974954B1 (ko) | 플래시 메모리를 이용한 저장장치에서의 읽기 웨어 레벨링방법 | |
US9158700B2 (en) | Storing cached data in over-provisioned memory in response to power loss | |
KR102275094B1 (ko) | 저장된 데이터를 플래시 메모리에 기초한 저장 매체에 기입하기 위한 방법 및 디바이스 | |
US20140189203A1 (en) | Storage apparatus and storage control method | |
KR101686376B1 (ko) | 메모리 시스템에서의 소거 관리 | |
WO2015145532A1 (ja) | ストレージシステム及びデータ処理方法 | |
US20200012598A1 (en) | Garbage Collection Method for Storage Medium, Storage Medium, and Program Product | |
US10289317B2 (en) | Memory apparatus and methods thereof for write amplification aware wear leveling | |
US10366771B2 (en) | Controller, memory system, and block management method for NAND flash memory using the same | |
WO2013076763A1 (en) | Storage system and control method of storage system | |
Agarwal et al. | A closed-form expression for write amplification in nand flash | |
KR101027112B1 (ko) | 플래시 메모리의 클러스터링 장치 및 그 클러스터링 방법 | |
KR20110035762A (ko) | 예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법 | |
JP2019086974A (ja) | ストレージシステム及びその制御方法 | |
KR20100012263A (ko) | 반도체 스토리지 시스템 및 그 제어 방법 | |
KR20230092733A (ko) | 영구 저장 장치에서의 자동 삭제 | |
US20200104384A1 (en) | Systems and methods for continuous trim commands for memory systems | |
KR20230026938A (ko) | 수명 자각 지속 스토리지 | |
JP6666405B2 (ja) | メモリシステムおよび制御方法 |