KR20160103945A - Ssd 상의 기록-시-복사를 위한 시스템 및 방법 - Google Patents

Ssd 상의 기록-시-복사를 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20160103945A
KR20160103945A KR1020160022000A KR20160022000A KR20160103945A KR 20160103945 A KR20160103945 A KR 20160103945A KR 1020160022000 A KR1020160022000 A KR 1020160022000A KR 20160022000 A KR20160022000 A KR 20160022000A KR 20160103945 A KR20160103945 A KR 20160103945A
Authority
KR
South Korea
Prior art keywords
entry
master
index
clone
data structure
Prior art date
Application number
KR1020160022000A
Other languages
English (en)
Other versions
KR101813786B1 (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 KR20160103945A publication Critical patent/KR20160103945A/ko
Application granted granted Critical
Publication of KR101813786B1 publication Critical patent/KR101813786B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/76Masking faults in memories by using spares or by reconfiguring using address translation or modifications
    • G11C29/765Masking faults in memories by using spares or by reconfiguring using address translation or modifications in solid state disks
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0261Garbage collection, i.e. reclamation of unreferenced memory using reference counting
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • 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/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Abstract

SSD 내에서 향상된 기록 중 복사(copy on write) 기능을 위한 기술이 개시된다. 일부 실시예에서, 이 기술은, 장치의 메모리에서 간접 데이터 구조를 제공하는 것을 포함하는, SSD 내에서 향상된 기록 중 복사 기능을 제공하기 위한 방법으로서 실현될 수 있다. 이 데이터 구조는 클론된(cloned) 데이터를 위한 마스터 엔트리를 포함할 수 있고, 마스터 엔트리는 클론된 데이터를 위한 클론 엔트리와 하나 이상의 인덱스로의 참조(reference)를 포함하고, 클론된 엔트리는 마스터 인덱스로의 참조, 다음 인덱스로의 참조, 및 데이터 구조의 끝을 표시하는 값 중 적어도 하나를 포함한다. 이 기술은 컴퓨터 프로세서를 사용해서, 상기 참조들 중 하나 이상을 사용해, 클론된 데이터의 하나 이상의 복사본들을 트래버스(traverse)하는 것을 포함할 수 있다.

Description

SSD 상에서의 기록 중 복사를 위한 시스템 및 방법{SYSTEM AND METHOD FOR COPY ON WRITE ON AN SSD}
비휘발성 메모리 익스프레스(NVMe) 사양은 솔리드-스테이트 디바이스(SSD), 및 주변 부품 상호연결 익스프레스(PCIe) 버스를 통해 결합되는 다른 타겟 디바이스에 액세스하기 위한 사양이다. NVMe SSD PCIe 호스트 인터페이스는 SAS 독립 디스크들의 리던던트 어레이(RAID) 어댑터에 의해 지원되는 논리 볼륨과 유사한 네임스페이스(Namespace)의 개념을 정의한다. SSD 내의 기록-시-복사 기능은 네임스페이스를 사용하여 실시될 수 있다. 네임스페이스는 SSD의 간접지정(indirection) 시스템에서 추적되는 글로벌 논리 블록 주소(LBA) 공간 상의 추상(abstraction)으로서 통상적으로 실시된다.
LBA 메타데이터는 하나의 호스트 LBA만을 나타내고, 이는 레퍼런스 카운트를 포함하지 않는다. 메타데이터 내에 레퍼런스 카운트를 포함시키거나 추가하는 것은 새로운 메타데이터를 갖는 데이터를 재기록하는 추가 기록을 초래할 것이며, 이는 좋지 않은 해결방안이다. LBA 메타데이터 내의 이와 같은 레퍼런스 카운트 없이는, 추가 클론 복사가 존재하는지 판단하기 위한 메커니즘이 없다(예컨대, 추가 LBA들은 동일한 데이터를 가리킨다). 그러므로, SSD 상의 데이터의 다수의 클론 복사를 관리하는 것은 가비지 수집과 관련하여 까다로운 문제에 직면하게 된다. 예컨대, 호스트가 복사 동작 후에 '소스' LBA를 수정할 때, 이는 가비지 수집 문제를 일으킬 수 있다. 소스 복사는 효과적으로는 하나 이상의 추가 호스트 LBA에 데이터를 복제하기 위해 복사 동작을 수행하기 전에 기록된 '원본' 복사(master copy)일 수 있다. 이러한 마스터 LBA가 수정될 때, 비복사-인지 가비지 수집 알고리즘은 다음 기회에 물리적 데이터를 해방시킬 수 있는데, 이는 더 많은 호스트 LBA들이 이러한 데이터를 가리킨다는 것을 나타내기 위해 이러한 데이터의 메타데이터를 효율적으로 수정하는 방법이 존재하지 않기 때문이다.
SSD 내의 개선된 기록-시-복사 기능을 위한 기술을 개시한다. 일부 구현예들에서, 기술은, PCIe 디바이스의 메모리에서, 간접지정 데이터 구조를 제공하는 단계를 포함하는, SSD 내의 개선된 기록-시-복사 기능을 제공하기 위한 방법으로 실현될 수 있다. 데이터 구조는 클로닝된 데이터의 진본(original) 또는 소스 복사를 위한 마스터 엔트리, 및 클로닝된 데이터를 위한 클론 엔트리를 포함할 수 있되, 마스터 엔트리는 마스터 인덱스에 대한 레퍼런스 및 다음 인덱스에 대한 레퍼런스를 가지며, 클론 엔트리는 마스터 인덱스에 대한 레퍼런스 및 다음 인덱스에 대한 레퍼런스를 가진다. 기술은, 컴퓨터 프로세서를 사용하여, 레퍼런스들 중 하나 이상을 이용하여 클로닝된 데이터의 하나 이상의 복사를 트래버싱하는(traversing) 단계를 포함할 수 있다.
본 예시적인 구현예의 추가 양태에 따르면, 호스트 디바이스는: 기업 서버, 데이터베이스 서버, 워크스테이션, 및 컴퓨터 중 적어도 하나를 포함할 수 있다.
본 예시적인 구현예의 추가 양태에 따르면, 간접지정 데이터 구조는 복수의 물리 주소를 포함할 수 있다.
본 예시적인 구현예의 다른 양태에 따르면, 간접지정 데이터 구조는 환형 연결 리스트의 일부일 수 있고, 클로닝된 데이터를 위한 마스터 엔트리는 마스터 인덱스에 대한 레퍼런스 및 다음 인덱스에 대한 레퍼런스를 포함한다.
본 예시적인 구현예의 또 다른 양태에 따르면, 간접지정 데이터 구조는 환형 연결 리스트의 일부일 수 있고, 클로닝된 데이터를 위한 클론 엔트리는 마스터 인덱스에 대한 레퍼런스 및 다음 인덱스에 대한 레퍼런스를 포함한다.
본 예시적인 구현예의 추가 양태에 따르면, 간접지정 데이터 구조는 단일단(single-ended) 연결 리스트의 일부일 수 있고, 인덱스 내의 엔트리는 인덱스가 마스터 인덱스라는 지표를 제공한다.
본 예시적인 구현예의 다른 양태에 따르면, 레퍼런스들은 논리 블록 주소지정(addressing)을 위한 플랫 간접지정 테이블 내의 엔트리들을 포함할 수 있다.
본 예시적인 구현예의 또 다른 양태에 따르면, 레퍼런스들은 논리 블록 주소지정을 위해 트리 데이터 구조 내의 엔트리들을 포함할 수 있다.
본 예시적인 구현예의 추가 양태에 따르면, 개선된 기록-시-복사 기능은 개선된 네임스페이스 복사 기능을 포함할 수 있다.
본 예시적인 구현예의 다른 양태에 따르면, 기술은 하나 이상의 패킹된 논리 블록이 클로닝되는 것을 나타내기 위해 하나 이상의 패킹된 논리 블록을 위한 지시계를 설정하는 단계를 포함할 수 있다.
본 예시적인 구현예의 또 다른 양태에 따르면, 마스터 엔트리의 마스터 인덱스는 마스터 엔트리를 가리킬 수 있다.
본 예시적인 구현예의 추가 양태에 따르면, 클론 엔트리의 마스터 인덱스는 마스터 엔트리를 가리킬 수 있다.
본 예시적인 구현예의 다른 양태에 따르면, 데이터 구조 내의 최종 클론 엔트리의 다음 인덱스는 마스터 엔트리를 가리킬 수 있다.
본 예시적인 구현예의 또 다른 양태에 따르면, 기술은 클로닝된 데이터를 위한 클론 엔트리가 유일한 클론 엔트리라고 판단하는 단계를 포함할 수 있고, 상기 판단 단계는 클론 엔트리의 다음 인덱스가 클론 엔트리의 마스터 인덱스에 부합된다고 판단하는 단계, 마스터 엔트리의 다음 인덱스가 클론 엔트리를 가리킨다고 판단하는 단계, 클론 엔트리의 다음 인덱스를 패킹된 논리 블록을 나타내는 간접지정 엔트리로 설정하고, 마스터 인덱스 엔트리를 패킹된 논리 블록을 나타내는 간접지정 엔트리로 설정함으로써, 클로닝된 데이터의 클론 엔트리를 언클로닝하는 단계, 및 마스터 엔트리의 다음 인덱스를 진본 마스터 엔트리의 제1 패킹된 논리 블록을 나타내는 제1 간접지정 엔트리로 설정하고, 마스터 엔트리의 마스터 인덱스를 진본 마스터 엔트리의 제2 패킹된 논리 블록을 나타내는 제2 간접지정 엔트리로 설정함으로써, 클로닝된 데이터의 마스터 엔트리를 언클로닝하는 단계를 포함한다.
본 예시적인 구현예의 추가 양태에 따르면, 기술은 클로닝된 데이터를 위한 클론 엔트리가 복수의 클론 엔트리 중 하나라고 판단하는 단계를 포함할 수 있고, 상기 판단 단계는 클론 엔트리의 다음 인덱스가 클론 엔트리의 마스터 인덱스에 부합되지 않는다는 것 및 마스터 엔트리의 다음 인덱스가 클론 엔트리를 가리키지 않는다는 것 중 적어도 하나를 판단하는 단계, 및 클론 엔트리의 다음 인덱스에 의해 나타낸 엔트리를 가리키도록 이전 엔트리의 다음 인덱스를 설정함으로써, 클로닝된 데이터의 클론 엔트리를 언클로닝하는 단계를 포함한다.
본 예시적인 구현예의 다른 양태에 따르면, 기술은 가비지 수집 과정 중에 엔트리를 검토하는 단계, 엔트리가 클로닝 지시계를 포함한다고 판단하는 단계, 및 엔트리가 클로닝 지시계를 포함한다는 판단에 기초하여, 가비지 수집 과정의 엔트리가 삭제되지 않을 유효 엔트리라고 판단하는 단계를 포함할 수 있다.
다른 구현예들에서, 기술은 컴퓨터 상에서 실행 가능한 일련의 명령으로 이루어진 컴퓨터 프로그램 제품으로 실현될 수 있다. 컴퓨터 프로그램 제품은 SSD 내의 개선된 기록-시-복사 기능을 제공하기 위한 과정을 수행할 수 있다. 컴퓨터 프로그램은, 디바이스의 메모리에서, 간접지정 데이터 구조를 제공하는 단계로, 간접지정 데이터 구조는 클로닝된 데이터를 위한 마스터 엔트리 및 클로닝된 데이터를 위한 클론 엔트리를 포함하되, 마스터 엔트리는 하나 이상의 인덱스에 대한 레퍼런스를 가지며, 클론 엔트리는 마스터 인덱스에 대한 레퍼런스, 다음 인덱스에 대한 레퍼런스, 및 데이터 구조의 끝을 나타내는 값 중 적어도 하나를 가지는 것인 단계, 및 컴퓨터 프로세서를 사용하여, 레퍼런스들 중 하나 이상을 이용하여 클로닝된 데이터의 하나 이상의 복사를 트래버싱하는 단계를 실시할 수 있다.
또 다른 구현예들에서, 기술은 SSD 내의 개선된 기록-시-복사 기능을 제공하기 위한 시스템으로 실현될 수 있다. 시스템은 메모리에 저장되는 저장 명령을 포함하는 제1 디바이스를 포함할 수 있다. 명령은, 제1 디바이스의 메모리에서, 간접지정 데이터 구조를 제공하는 명령으로, 상기 간접지정 데이터 구조는 클로닝된 데이터를 위한 마스터 엔트리 및 클로닝된 데이터를 위한 클론 엔트리를 포함하되, 마스터 엔트리는 하나 이상의 인덱스에 대한 레퍼런스를 가지며, 클론 엔트리는 마스터 인덱스에 대한 레퍼런스, 다음 인덱스에 대한 레퍼런스, 및 데이터 구조의 끝을 나타내는 값 중 적어도 하나를 가지는 것인 명령, 및 컴퓨터 프로세서를 사용하여, 레퍼런스들 중 하나 이상을 이용하여 클로닝된 데이터의 하나 이상의 복사를 트래버싱하는 명령을 포함할 수 있다.
본 예시적인 구현예의 추가 양태에 따르면, 간접지정 데이터 구조는 복수의 물리 주소를 포함할 수 있다.
본 예시적인 구현예의 다른 양태에 따르면, 간접지정 데이터 구조는 환형 연결 리스트의 일부일 수 있고, 클로닝된 데이터를 위한 마스터 엔트리는 마스터 인덱스에 대한 레퍼런스 및 다음 인덱스에 대한 레퍼런스를 포함한다.
본 예시적인 구현예의 또 다른 양태에 따르면, 간접지정 데이터 구조는 환형 연결 리스트의 일부일 수 있고, 클로닝된 데이터를 위한 클론 엔트리는 마스터 인덱스에 대한 레퍼런스 및 다음 인덱스에 대한 레퍼런스를 포함한다.
본 예시적인 구현예의 추가 양태에 따르면, 간접지정 데이터 구조는 단일단 연결 리스트의 일부일 수 있고, 인덱스 내의 엔트리는 인덱스가 마스터 인덱스라는 지표를 제공한다.
본 예시적인 구현예의 다른 양태에 따르면, 레퍼런스들은 논리 블록 주소지정을 위해 플랫 간접지정 테이블 내의 엔트리들을 포함할 수 있다.
본 예시적인 구현예의 또 다른 양태에 따르면, 제1 디바이스는 주변 부품 상호연결 익스프레스(PCIe) 디바이스를 포함할 수 있다.
본 예시적인 구현예의 추가 양태에 따르면, 기술은 하나 이상의 패킹된 논리 블록이 클로닝되는 것을 나타내기 위해 하나 이상의 패킹된 논리 블록을 위한 지시계를 설정하는 명령을 더 포함할 수 있다.
본 예시적인 구현예의 다른 양태에 따르면, 마스터 엔트리의 마스터 인덱스 및 클론 엔트리의 마스터 인덱스는 마스터 엔트리를 가리킬 수 있고, 데이터 구조 내의 최종 클론 엔트리의 다음 인덱스는 마스터 엔트리를 가리킨다.
본 예시적인 구현예의 추가 양태에 따르면, 타겟 디바이스(예컨대, PCIe 디바이스)는: 그래픽 처리 장치, 오디오/비디오 캡처 카드, 하드 디스크, 호스트 버스 어댑터, 및 비휘발성 메모리 익스프레스(NVMe) 컨트롤러 중 적어도 하나를 포함할 수 있다. 일부 구현예들에 따르면, 타겟 디바이스는 NVMe 호환 디바이스일 수 있다.
본 개시는 이제 첨부 도면에 도시된 바와 같이 예시적인 구현예들을 참조하여 보다 상세히 설명될 것이다. 본 개시가 예시적인 구현예들을 참조하여 기술되지만, 본 개시는 이에 제한되지 않는다는 것을 이해해야 한다. 본원의 교시에 접근할 수 있는 당업자들은 본원에 설명된 바와 같이 본 개시의 범주 내에 있는 추가 실시예, 수정, 및 구현예뿐만 아니라 기타 사용 분야를 인지할 것이며, 이와 관련하여 본 개시는 상당히 유용할 수 있다.
본 개시의 보다 완전한 이해를 돕기 위해, 이제 유사 구성요소가 유사 도면부호로 참조되는 첨부 도면을 참조한다. 이들 도면은 본 개시를 제한하는 것으로 해석되지 않아야 하며, 단지 예시의 목적이다.
도 1은 본 개시의 구현예에 따른 호스트 디바이스와 통신하는 복수의 PCIe 디바이스를 나타낸 예시적인 블록도를 도시한다.
도 2는 본 개시의 구현예에 따른 언클로닝된 패킹된 논리 블록들을 나타낸 데이터 구조를 도시한다.
도 3은 본 개시의 구현예에 따른 마스터 및 클론 간접지정 데이터 구조 엔트리들을 나타낸 표를 도시한다.
도 4는 본 개시의 구현예에 따른 SSD 내의 개선된 기록-시-복사 기능을 위한 예시적인 모듈을 도시한다.
도 5는 본 개시의 구현예에 따른 SSD 내의 개선된 기록-시-복사 기능을 나타낸 흐름도를 도시한다.
도 6a는 본 개시의 구현예에 따른 마스터 C-청크 데이터 구조 엔트리 포맷의 데이터 구조를 도시한다.
도 6b는 본 개시의 구현예에 따른 클론 C-청크 데이터 구조 엔트리 포맷의 데이터 구조를 도시한다.
본 개시는 개선된 기록-시-복사 기능에 관한 것이다. 일부 구현예들에서, 이러한 기록-시-복사 기능은 네임스페이스 복사를 포함할 수 있다. NVMe SSD PCIe 호스트 인터페이스는 SAS 독립 디스크들의 리던던트 어레이(RAID) 어댑터에 의해 지원되는 논리 볼륨과 유사한 네임스페이스의 개념을 정의한다. 네임스페이스는 가상 머신(VM) 전용일 수 있다. SSD 내부에서, 네임스페이스들은 서로 논리적으로 격리될 수 있고, 다른 네임스페이스들에 영향을 미치지 않으면서 확실히 삭제되며 용도변경될(repurposed) 수 있다.
네임스페이스 내의 LBA와 더불어, 호스트에 의해 발행되는 매체 액세스 커맨드 내에 네임스페이스 식별자를 포함시킬 수 있다. 네임스페이스와 LBA의 조합을 SSD의 내부에 사용되는 글로벌 LBA로 해석하기 위해, SSD는 데이터 구조(예컨대, 테이블 룩업, 트리, 해시맵, 비트맵 등)를 사용할 수 있다. 일부 구현예들에 따르면, LBA에 대한 참조는 이러한 글로벌 LBA를 지칭할 수 있다.
본 개시의 구현예들은 SSD 상의 데이터 복제를 방지하는 효율적인 '네임스페이스 복사' 기능을 실시하기 위한 시스템 및 방법을 기술한다. 이는 SSD 내에 초래되는 기록 확대를 감소시킴으로써, 더 높은 성능을 제공하는 한편 SSD의 수명을 연장시킨다.
네임스페이스 복사는 '기록-시-복사' 기능의 형태이다. 복사 기능에서, 매체 상의 단일 복사를 가리키는 포인터를 발생시킨다. 매체 상의 새로운 복사를 발생시키며 기록 시에 업데이트한다. 네임스페이스 복사 기능은 SSD 상의 '기록-시-복사'의 효율적인 실시를 필요로 한다. 본 개시의 구현예들은 네임스페이스 복사에 적용될 수 있다. 본 개시의 구현예들은 또한 SSD를 위한 다른 '기록-시-복사' 실시에 적용될 수 있다. 예컨대, "스냅샷" 복사가 네임스페이스의 시점(point-in-time) 이미지를 생성하는 데에 사용될 수 있고, 본 구현예의 실시는 스냅샷 복사를 추적하는 데에 사용될 수 있다.
본 개시의 구현예들은 동일한 물리적 위치를 가리키는 다수의 엔트리를 포함하기 위해 SSD 간접지정 시스템(예컨대, 플랫 LBA 테이블) 또는 방법을 제공한다. 이와 같은 실시는 다수의 레퍼런스가 존재할 때 효율적인 가비지 수집을 가능하게 할 수 있다. (예컨대, NAND 플래시 데이터에 대한) 다수의 포인터를 처리하는 것 또는 다수의 레퍼런스를 추적하는 것은 가비지 수집을 개선할 수 있다. 데이터를 위한 호스트 LBA를 포함하는 비휘발성 저장 장치(예컨대, NAND 플래시 메모리, NOR 플래시 메모리 등) 상의 메타데이터를 사용하여 가비지 수집을 수행할 수 있다. 가비지 수집 알고리즘은 데이터 구조가 여전히 물리적 위치를 가리키는지 확인하기 위해 간접지정 데이터 구조(예컨대, 테이블, 트리, 해시맵, 비트맵 등)에서 LBA를 검색함으로써 어떤 호스트 섹터가 여전히 유효한지 판단할 수 있다. 데이터 구조가 여전히 물리적 위치를 가리키지 않는 경우, 알고리즘은 블록을 해방시킨다.
본원에 설명되는 하나 이상의 구현예는 단일 플래그를 이용한 복제된 간접지정 엔트리의 효율적인 표시, 및 하나 이상의 복제된 호스트 LBA를 추적하는 대안적인 간접지정 엔트리 포맷을 제공한다. 하나 이상의 구현예는 동일한 물리 주소를 가리키는 다수의 논리 블록 주소를 추적하기 위해 플랫 간접지정 룩업 데이터 구조를 사용할 수 있다. 다른 구현예들은 복제된 LBA를 추적하기 위해 해시맵, 트리, 또는 합성(composition)-기반 시스템을 사용하여 실시될 수 있다.
SSD 내의 개선된 기록-시-복사 기능 기술을 이하에 보다 상세히 논의한다.
이제 도면을 참조하면, 도 1은 본 개시의 구현예에 따른 호스트 디바이스와 통신하는 복수의 PCIe 디바이스를 도시한 예시적인 블록도이다. 호스트 시스템(102), 호스트 CPU(104), 및 PCI 익스프레스 루트 콤플렉스(106)와 같은 하나 이상의 컴퓨팅 기술에서 기록-시-복사 기능 개선을 실시할 수 있다. PCI 익스프레스 스위치(108)는 PCI 익스프레스 루트 콤플렉스(106)를 통해 호스트 시스템(102)에 타겟들(110, 116, 122)과 같은 복수의 타겟(예컨대, NVMe 기반 타겟과 같은 PCIe 디바이스)를 통신 가능하게 결합할 수 있다.
타겟(110)은 NVMe 컨트롤러(112) 및 비휘발성 저장 장치(114)를 포함할 수 있다. 타겟(116)은 NVMe 컨트롤러(118) 및 비휘발성 저장 장치(120)를 포함할 수 있다. 타겟(122)은 NVMe 컨트롤러(124) 및 비휘발성 저장 장치(126)를 포함할 수 있다.
시스템 메모리(128)는 메모리 인터페이스를 통해 호스트 시스템(102)에 액세스 가능한 메모리 기반 리소스들을 포함할 수 있다(예컨대, 더블 데이터 레이트 타입3 동기식 동적 랜덤 액세스 메모리(DDR3 SDRAM)). 시스템 메모리(128)는 솔리드-스테이트 메모리(예컨대, 플래시 메모리, 또는 솔리드 스테이트 디바이스(SDD)), 광학 메모리, 및 자기 메모리와 같은 그러나 이에 제한되지 않는 임의의 적절한 형태를 취할 수 있다. 시스템 메모리(128)는 휘발성 또는 비휘발성 메모리일 수 있다. 시스템 메모리(128)는 하나 이상의 데이터 구조를 포함할 수 있다.
일부 구현예들에 따르면, 직렬 고급 기술 결합(SATA), 고급 기술 결합(ATA), 소형 컴퓨터 시스템 인터페이스(SCSI), PCI-확장(PCI-X), 섬유 채널, 직렬 연결 SCSI(SAS), 보안 디지털(SD), 내장형 멀티미디어 카드(EMMC), 및 범용 플래시 저장 장치(UFS)를 포함하지만 이에 제한되지 않는 하나 이상의 부분을 위해, PCIe 외의 인터페이스 표준을 사용할 수 있다.
호스트 시스템(102)은 기업 서버, 데이터베이스 호스트, 워크스테이션, 개인용 컴퓨터, 이동 전화, 게임 디바이스, 개인 휴대 단말기(PDA), 이메일/문자 메시지 디바이스, 디지털 카메라, 디지털 미디어(예컨대, MP3) 플레이어, GPS 네비게이션 디바이스, 및 TV 시스템과 같은 그러나 이에 제한되지 않는 임의의 적절한 형태를 취할 수 있다.
호스트 시스템(102) 및 타겟 디바이스는 도면을 단순화하기 위해 도 1에 도시되지 않은 추가 부품을 포함할 수 있다. 또한, 일부 구현예들에서, 도시된 부품들 전부가 존재하는 것은 아니다. 게다가, 다양한 컨트롤러들, 블록들, 및 인터페이스들이 임의의 적절한 방식으로 실시될 수 있다. 예컨대, 컨트롤러는 예를 들어 마이크로프로세서 또는 프로세서 및 (마이크로)프로세서에 의해 실행 가능한 컴퓨터-판독 가능 프로그램 코드(예컨대, 소프트웨어 또는 펌웨어)를 저장하는 컴퓨터-판독 가능 매체, 로직 게이트, 스위치, 주문형 집적 회로(ASIC), 프로그램 가능 로직 컨트롤러, 및 내장형 마이크로컨트롤러 중 하나 이상의 형태를 취할 수 있다.
도 2를 참조하면, 본 개시의 구현예에 따른 언클로닝된 패킹된 논리 블록들을 나타낸 데이터 구조가 도시되어 있다. 본 구현예에서는, 8개의 4 킬로바이트의 패킹된 논리 블록 엔트리를 예시한다. 이러한 언클로닝된 패킹된 논리 블록들(PLB)은 논리 블록 주소들(LBA)을 물리 주소로 매핑할 수 있다. 도시된 바와 같이, LBA 0-7은 물리 주소 블록 0에 매핑될 수 있고, LBA 7-15는 물리 주소 블록 1에 매핑될 수 있고, LBA 16-23은 물리 주소 블록 2에 매핑될 수 있고, LBA 24-31은 물리 주소 블록 3에 매핑될 수 있고, LBA 32-39는 물리 주소 블록 4에 매핑될 수 있고, LBA 40-47은 물리 주소 블록 5에 매핑될 수 있고, LBA 48-55는 물리 주소 블록 6에 매핑될 수 있고, LBA 56-63은 물리 주소 블록 7에 매핑될 수 있다.
도 3은 본 개시의 구현예에 따른 마스터 및 클론 간접지정 데이터 구조 엔트리들을 나타낸 표를 도시한다. 도 3을 참조하여 설명되는 바와 같이, 일부 구현예들에서, 기록-시-복사 개선은 플랫 간접지정 시스템에서 실시될 수 있다. PLB는 룩업 데이터 구조(예컨대, 플랫 간접지정 룩업 테이블) 내의 "패킹된 논리 블록"일 수 있다. 클로닝 동작에 관련되는 8개의 연속 8-PLB-정렬 PLB들의 세트를 "C-청크"로 지칭할 수 있다. 매체 상의 데이터가 C-청크에 적합한 PLB 태그를 갖는 C-청크(즉, 진본 복사)를 "마스터 C-청크"로 지칭할 수 있다. C-청크 내의 모든 PLB들을 위한 간접지정 데이터 구조 엔트리들은 단일 "C-엔트리"를 형성하도록 함께 분류될 수 있다. 데이터가 매체 상에 존재하는 C-청크에 대응하는 C-엔트리를 마스터 C-엔트리로 지칭할 수 있다. 마스터 LBA 범위의 복사인 LBA 범위를 기술하는 C-엔트리를 클론 C-엔트리로 지칭할 수 있다. 하나 이상의 SSD는 4 KB의 고객 데이터 플러스 메타데이터를 추적하기 위해 PLB를 정의할 수 있다(예컨대, 8 x 512 B 섹터). 이하에 논의되는 구현예들에서, PLB는 단순히 테이블 내의 엔트리일 수 있다. 기록-시-복사를 용이하게 하기 위해, 간접지정 데이터 구조 엔트리를 (예컨대, 1 비트만큼) 연장할 수 있다. 여분의 비트는 "클론 추적" 비트일 수 있되, 이는, 이러한 PLB가 원본 역할을 하는 다른 PLB들이 있거나 또는 이것이 다른 PLB를 원본으로 갖는 클론이라는 것을 나타내기 위해, 1로 설정될 수 있다. 클론 추적 비트 세트를 갖는 간접지정 데이터 구조 엔트리의 나머지 비트는 (예컨대, 비트 세트를 갖지 않는 엔트리처럼) NAND 메모리 주소를 포함하지 않을 수도 있고 포함할 수도 있다. '클론 추적 = 1'을 위한 대안적인 데이터 구조는 통상의 PLB 엔트리보다 더 거친 입도로 추적되며, 마스터 엔트리에 대한 포인터 및 클론 엔트리들의 연결 리스트를 생성하는 필드들을 포함한다. 언클로닝된 간접지정 엔트리보다 더 큰(예컨대, 2배) 청크를 기술하기 위해 단일 C-엔트리를 사용함으로써, 이러한 추가 필드들을 위한 공간을 획득할 수 있다. 클로닝된 데이터는 개별 호스트 LBA들이 아닌 큰 파티션들 또는 파일 세트들을 수반하는 경향이 있기 때문에, 이러한 타협(trade-off)은 합리적이다.
개별 호스트 LBA들의 물리 주소들은 일부 LBA들에 추가 룩업이 요구되도록 분배된다. 이는 각각의 마스터 및 클론 엔트리 내에 마스터 및 클론 포인터들을 포함시키기 위한 공간을 만들 수 있다. 그러나, 물리 주소를 페치하기 위한 DRAM 액세스 횟수는 현저히 증가하지 않는다. 도 3에 도시된 바와 같이, 마스터 C-엔트리는 모든 물리 주소 8-15에 매핑되는 LBA들을 포함할 수 있지만, 물리 주소 8-11, 14, 및 15에 대한 실제 매핑만을 포함한다(물리 주소 12 및 13에 대한 매핑은 클론 C-엔트리로부터 획득될 수 있다). 도 3의 클론 C-엔트리에 도시된 바와 같이, 매핑은 물리 주소 8-13에 대응하는 LAB들에 대해 제공될 수 있다. 마스터 C-엔트리에서 매핑되지 않은 2개의 물리 블록(물리 주소 12 및 13)은 마스터 인덱스 및 다음 인덱스를 위한 공간을 제공한다. 클론 C-엔트리에서 매핑되지 않은 2개의 물리 블록(물리 주소 14 및 15)은 마스터 인덱스 및 다음 인덱스를 위한 공간을 제공한다. 마스터 C-엔트리 내의 마스터 인덱스는 항상 자신을 가리킨다. 클론 C-엔트리 내의 마스터 인덱스는 항상 마스터 C-엔트리를 가리킨다. 마스터 C-엔트리의 다음 인덱스는 체인 내의 제1 클론 C-엔트리를 가리킨다. 2개 이상의 클론 C-엔트리가 있는 경우, 클론 C-엔트리의 다음 인덱스는 다음 클론 C-엔트리를 가리킨다. 단 하나의 클론 C-엔트리만 있거나 또는 이것이 최종 클론 C-엔트리인 경우, 다음 인덱스는 다시 마스터 C-인덱스를 가리킬 수 있다(또는 예컨대 널(null) 포인터와 같은 리스트의 끝을 나타내는 특정 값을 가리킬 수 있다). 이는 마스터 C-엔트리 및 하나 이상의 클론 C-엔트리의 트래버싱을 허용할 수 있다.
플랫 간접지정 데이터 구조를 이용한 구현예들에서, 물리적 위치 블록(PLB)은 단일 룩업 테이블 내의 물리 NAND 메모리 주소를 포함하는 개별 엔트리를 지칭한다. 통상의 PLB 입도는 단일 데이터 구조 엔트리에 4 KB를 부여한다(예컨대, 8 x 512 B 섹터). 일례로, 8개의 PLB의 클론 청크 크기를 고려한다 - 클로닝된 범위에 대한 완전 랜덤 단일 섹터 액세스에 요구되는 DRAM 액세스의 평균 횟수는 1.25이다. 이러한 횟수는 더 큰 클론 청크 크기에 대해 더 낮을 수 있되, 더 적은 입상 클론 바운더리, 및 PLB 청크를 '언클로닝'하기 위해 요구되는 더 많은 NAND 액세스라는 타협이 있다.
호스트 판독 PLB 룩업이 클론 엔트리를 가리키는 경우, SSD는 1) 물리 주소, 및 2) 데이터를 기록할 때 사용된 LBA를 필요로 한다. 물리 주소는 마스터 및 클론 엔트리들 사이에 분배되어, 선택적으로, 타겟 LBA가 제2 DRAM 판독을 요구할 가능성을 감소시키기 위해 복제 데이터로 모든 가용 PLB 엔트리들을 채운다. #2에 대해, 마스터 LBA는 각각의 클론 엔트리 내의 마스터 포인터에 기초하여 계산될 수 있되 - 이는 설계에 의해 추가 DRAM 액세스를 요구하지 않고, 이러한 마스터 포인터는 (다음 클론 포인터와 더불어) 진본 PLB 룩업으로부터 캐시될 수 있다.
일부 구현예들에서, 기존 간접지정 데이터에 추가 정보를 삽입하기 위해, PLB 크기의 소정의 배수인 입도로만 클로닝을 추적할 수 있다. 일부 구현예들에서, 주어진 LBA에 대응하는 C-청크의 인덱스의 효율적인 산정을 가능하게 하기 위해, 입도를 PLB 크기의 2제곱 배수로 선정할 수 있다. 일례로, 승수는 8일 수 있지만, 더 큰 클로닝 입도를 사용할 수 있다. 클로닝은 (전체 네임스페이스와 같이) 한번에 큰 범위의 LBA를 클로닝하는 것을 수반할 수 있고, 따라서 더 큰 입도를 사용하는 페널티가 아주 작을 수 있다.
일부 구현예들에서, 간접지정 데이터 구조에는, 동일한 데이터를 가리키는 하나 이상의 C-청크의 환형 연결 리스트가 내장되어 있을 수 있다. 다른 구현예들에서, 다른 형태의 연결 리스트(예컨대, 단일단 연결 리스트)를 사용할 수 있다. C-청크의 데이터를 기술하는 물리 주소들은 C-청크 리스트를 위한 간접지정 엔트리들 사이에 확산될 수 있다.
데이터가 C-청크에 적합한 PLB 태그를 가진 상태로 매체 상에 물리적으로 존재하는 C-청크(즉, 진본 복사)를 "마스터 C-청크"로 지칭할 수 있다. 매체 상에 복사를 저장함 없이 동일한 데이터를 현재 가리키는 다른 C-청크를 "클론 C-청크"로 지칭할 수 있다.
C-청크 내의 모든 PLB들을 위한 간접지정 데이터 구조 엔트리들은 함께 단일 "C-엔트리"를 형성하도록 분류된다. 마스터 C-청크에 대해, C-엔트리는 도 6a에 도시된 포맷일 수 있다. 도시된 바와 같이, 마스터 C-청크는 물리 주소 0-3(범위 내의 처음 4개의 물리 주소), 이어서 물리 주소 6 및 7을 포함할 수 있다. 누락된 2개의 물리 주소는 클론 C-엔트리에서 매핑될 수 있고, 2개의 여분의 슬롯은 마스터 인덱스 및 다음 인덱스를 제공하는 데에 사용될 수 있다. 도시된 바와 같이, "클론 추적" 지시계를 1로 설정할 수 있다. 이는 C-엔트리가 무시되어야 하는 가비지 수집 과정을 나타낼 수 있다.
클론 C-청크에 대해, C-엔트리는 도 6b에 도시된 포맷일 수 있다. 도시된 바와 같이, 물리 주소 0-5는 매핑될 수 있고, 물리 주소 6 및 7은 누락될 수 있다. 누락된 2개의 물리 주소는 마스터 C-엔트리에서 매핑될 수 있고, 2개의 여분의 슬롯은 마스터 인덱스 및 다음 인덱스를 제공하는 데에 사용될 수 있다. 도시된 바와 같이, "클론 추적" 지시계를 1로 설정할 수 있다. 이는 C-엔트리가 무시되어야 하는 가비지 수집 과정을 나타낼 수 있다.
하나 이상의 구현예에서, NAND 주소i는 마스터 C-청크의 i번째 PLB를 위한 NAND 주소일 수 있다(i = 0은 첫 번째 PLB를 나타냄). 마스터 인덱스는 (8개의 PLB 엔트리의 공간을 소비하기 때문에 8로 나누어지는) 마스터 C-엔트리의 간접지정 데이터 구조 인덱스일 수 있다. 다음 인덱스는 (8개의 PLB 엔트리의 공간을 소비하기 때문에 8로 나누어지는) 동일한 데이터를 가리키는 다음 클론 C-엔트리를 위한 간접지정 데이터 구조 인덱스일 수 있다. 나타낼 더 이상의 클론 C-엔트리가 존재하지 않는 경우, 이러한 다음 인덱스는 다시 마스터 C-엔트리를 가리킬 수 있다. 일부 구현예들에서, 이러한 다음 인덱스는 리스트의 끝을 나타내는 값을 가리킬 수 있다(예컨대, 널 포인터).
일부 구현예들에서, C-청크가 마스터 엔트리인지 판단하기 위해 하나 이상의 테스트를 사용할 수 있다. 예컨대, C-엔트리의 마스터 인덱스가 C-엔트리 자체를 가리키는 경우 및 오직 그럴 경우에만 C-청크가 마스터일 수 있다.
마스터 인덱스들 및 다음 인덱스들을 통한 마스터 C-엔트리 및 클론 C-엔트리 사이의 관계는 하나 이상의 하기 동작이 효율적으로 수행되는 것을 허용할 수 있다.
8개의 연속 8-PLB-정렬 PLB들의 세트를 클로닝하기 위해, 하나 이상의 방법을 사용할 수 있다. 예컨대, 하나 이상의 구현예에서, PLB들의 세트를 클로닝하는 것은 다음을 포함할 수 있다:
1. 마스터 및 클론 C-엔트리들을 생성할 때 진본 복사의 PLB들이 가리키는 8개의 NAND 주소를 판독한다;
2. 8개의 진본 PLB의 간접지정 엔트리들 대신에 마스터 C-엔트리를 생성한다. 다음 인덱스는 새로운 클론 C-엔트리를 가리킬 수 있다; 및
3. 이제 클론 역할을 할 8개의 PLB의 간접지정 엔트리들 대신에 클론 C-엔트리를 생성한다. 다음 인덱스는 새로운 마스터 C-엔트리를 가리킬 수 있다.
C-청크를 새로운 C-청크로 클로닝하기 위해, 하나 이상의 방법을 사용할 수 있다. 예컨대, 하나 이상의 구현예에서, C-청크를 새로운 C-청크로 클로닝하는 것은 다음을 포함할 수 있다:
1. 소스 C-청크가 마스터인 경우, 소스 C-엔트리의 다음 인덱스를 따라서, 클론 C-엔트리를 발견하고 이를 새로운 C-엔트리의 위치에 복사한다. 소스 C-청크가 마스터가 아닌 경우, 소스 C-엔트리를 새로운 C-엔트리의 위치에 복사한다;
2. 새로운 C-엔트리의 다음 인덱스를 마스터 C-엔트리의 현재의 다음 인덱스로 업데이트한다;
3. 새로운 C-엔트리를 가리키도록 마스터 C-엔트리의 다음 인덱스를 업데이트한다.
간접지정 엔트리가 클론 추적 비트 세트를 갖는 PLB 상의 판독 룩업을 이행하기 위해, 하나 이상의 방법을 사용할 수 있다. 예컨대, 하나 이상의 구현예에서, 간접지정 비트 세트를 갖는 PLB 상의 판독 룩업을 수행하는 것은 다음을 포함할 수 있다:
1. 이러한 PLB의 간접지정 엔트리를 포함하는 C-엔트리를 조사한다. 이러한 C-엔트리가 마스터 C-엔트리인지 판단한다. 판단에 기초하여, 원하는 마스터 PLB를 위한 NAND 주소가 이러한 C-엔트리에 저장되어 있는지 추가로 판단한다.
2. NAND 주소가 판독되는 제1 C-엔트리에 저장되어 있는 경우, 이러한 NAND 주소 및 마스터 인덱스를 복귀시킬 수 있다. 마스터 인덱스는, 임의의 추가 간접지정 룩업을 수행함 없이, 데이터가 어떤 PLB 번호를 태그로 가질 것인지 판단하는 데에 사용될 수 있다.
3. NAND 주소가 판독되는 제1 C-엔트리에 저장되어 있지 않고, 판독되는 제1 C-엔트리가 마스터 C-엔트리인 경우, 다음 인덱스를 따라서, 요구되는 NAND 주소를 포함하는 클론 C-엔트리를 발견할 수 있다. 이러한 NAND 주소 및 마스터 인덱스를 복귀시킬 수 있다.
4. NAND 주소가 판독되는 C-엔트리에 저장되어 있지 않고, 이것이 클론 C-엔트리인 경우, 마스터 인덱스를 따라서, 요구되는 NAND 주소를 포함하는 마스터 C-엔트리를 발견할 수 있다. 이러한 NAND 주소 및 마스터 인덱스를 복귀시킬 수 있다.
클론 C-청크를 "언클로닝"하기 위해, 하나 이상의 기술을 사용할 수 있다. 예컨대, 일부 구현예들에서, 기술은 다음을 포함할 수 있다:
1. 단 하나의 클론만이 있는지 판단한다. 예컨대, 타겟의 C-엔트리의 다음 인덱스가 그 마스터 인덱스에 부합되고, 마스터 C-엔트리의 다음 인덱스가 타겟 C-엔트리를 가리키는 경우, 단 하나의 클론만이 있다. 마스터 및 클론 모두를 위한 C-엔트리들을 조사하고, 마스터 C-엔트리에 이러한 PLB들을 위한 "정상" 간접지정 엔트리들을 겹쳐 쓴다.
2. 타겟의 C-엔트리의 다음 인덱스가 그 마스터 인덱스에 부합되지 않거나, 마스터 C-엔트리의 다음 인덱스가 타겟 C-엔트리를 가리키지 않는 경우, 다른 클론들이 있다. 환형 리스트로부터 이러한 C-엔트리를 제거한다.
3. 어떤 경우든, 마스터 C-청크를 위한 데이터를 판독하고, 이를 클론 C-청크에 복사하고, 새로운 복사의 NAND 주소들을 나타내는 정상 간접지정 엔트리들을 클론 C-엔트리들에 겹쳐 쓴다.
마스터 C-청크를 "언클로닝"하기 위해, 하나 이상의 기술을 사용할 수 있다. 예컨대, 일부 구현예들에서, 기술은 다음을 포함할 수 있다:
1. 마스터 C-엔트리 및 제1 클론 C-엔트리를 판독한다; 및
2. 마스터 C-청크를 위한 저장 매체로부터 데이터를 판독하고, 이를 새로운 저장 매체 위치에 기록하며 호스트 LBA 메타데이터를 대응하는 클론 C-청크와 관련시킴으로써, 이를 제1 클론 C-청크의 PLB에 복사한다;
3. 제1 클론이 유일한 클론인 경우(즉, 이것의 다음 인덱스가 다시 마스터를 가리키는 경우), 막 생성된 복사를 위해 NAND 주소들을 가리키는 정상 간접지정 엔트리들을 제1 클론 C-엔트리에 겹쳐 쓴다. 진본 마스터 C-청크의 PLB를 가리키는 정상 간접지정 엔트리들을 마스터 C-엔트리에 겹쳐 쓴다.
4. 제1 클론이 유일한 클론이 아닌 경우, 환형 연결 리스트로부터 마스터를 제거한다. 막 생성된 복사를 위해 새로운 마스터 C-엔트리를 제1 클론 C-엔트리에 겹쳐 쓴다. 막 생성된 복사를 위해 새로운 클론 C-엔트리를 다른 클론 C-엔트리들에 겹쳐 쓴다. 이는 예전 마스터 C-엔트리의 제1 클론 C-엔트리가 자신과 나머지 클론 C-엔트리들을 위한 새로운 마스터 C-엔트리가 되도록 조장할 수 있다.
간접지정 업데이트가 클론 추적 비트 세트를 갖는 타겟 PLB에 요구될 때, 기술은 자동으로 다음을 포함할 수 있다:
1. PLB의 C-청크를 언클로닝한다; 및
2. 정상적으로 간접지정 업데이트를 수행한다.
가비지 수집 알고리즘이 간접지정 시스템에서 PLB가 클론 추적 비트로 표시되는 임의의 물리적 데이터에 대해 데이터를 폐기하지 않도록, 가비지 수집을 실시할 수 있다. 즉, 가비지 수집 알고리즘은 클론 추적 비트로 표시된 모든 PLB들을, 삭제가 아닌 재배치를 요구하는 "유효" 데이터인 것으로 간주할 수 있다.
하나 이상의 구현예에서, 시스템 내에 존재하는 C-청크들을 추적하기 위해, 작은 카운팅 블룸 필터가 SRAM에 저장될 수 있다. 기록 시에, PLB가 C-청크의 일부일 가능성이 없다고 블룸 필터가 나타낼 수 있는 경우, 현재 데이터 구조 엔트리를 먼저 판독함 없이, 간접지정 시스템의 직접 업데이트를 안전하게 수행할 수 있다. 클론들은 큰 순차 범위를 갖는 경향이 있기 때문에, 블룸 필터를 위해 사용되는 해시 함수는 랜덤 함수가 아니라 대략 다음과 같다: f(C-엔트리 인덱스) = C-엔트리 인덱스 / 필터 크기.
도 4는 본 개시의 구현예에 따른 SSD 내의 개선된 기록-시-복사 기능을 위한 예시적인 모듈을 도시한다. 도 4에 도시된 바와 같이, 기록-시-복사 모듈(410)은 간접지정 생성 모듈(412), 간접지정 관리 모듈(414), 및 에러 처리 모듈(416)을 포함할 수 있다.
간접지정 생성 모듈(412)은 기록-시-복사의 복사를 추적하기 위한 하나 이상의 데이터 구조를 생성할 수 있다. PLB는 단순히 테이블 내의 엔트리일 수 있다. 기록-시-복사를 용이하게 하기 위해, 간접지정 데이터 구조 엔트리를 (예컨대, 1 비트만큼) 연장할 수 있다. 여분의 비트는 "클론 추적" 비트일 수 있되, 이는, 이러한 PLB가 원본 역할을 하는 다른 PLB들이 있거나 또는 이것이 다른 PLB를 원본으로 갖는 클론이라는 것을 나타내기 위해, 1로 설정될 수 있다. 클론 추적 비트 세트를 갖는 간접지정 데이터 구조 엔트리의 나머지 비트는 (예컨대, 비트 세트를 갖지 않는 엔트리처럼) NAND 주소를 포함하지 않을 수도 있고 포함할 수도 있다. '클론 추적 = 1'을 위한 대안적인 데이터 구조는 마스터 엔트리에 대한 포인터 및 클론 엔트리들의 연결 리스트를 생성하는 필드들을 포함할 수 있다. 언클로닝된 간접지정 엔트리보다 더 큰(예컨대, 2배) LBA의 청크를 기술하기 위해 단일 엔트리를 사용함으로써, 이러한 추가 필드들을 위한 공간을 획득한다.
간접지정 관리 모듈(414)은 간접지정 데이터 구조를 사용하여 하나 이상의 동작을 수행할 수 있다. 간접지정 관리 모듈(414)은 데이터의 클로닝, 클로닝된 데이터의 판독, 데이터의 언클로닝을 용이하게 하며, 도 3을 참조하여 상기에 논의된 바와 같이 방법들 중 하나 이상을 사용하여 안전하며 효율적인 가비지 수집을 용이하게 할 수 있다.
에러 처리 모듈(416)은 클로닝된 데이터의 관리와 연관되는 하나 이상의 에러를 포착, 기입, 보고, 및/또는 처리할 수 있다.
도 5는 본 개시의 구현예에 따른 SSD 내의 개선된 기록-시-복사 기능을 나타낸 흐름도를 도시한다. 그러나, 과정(500)은 예시적인 것에 불과하다. 예컨대, 단계를 추가하거나, 변경하거나, 제거하거나, 재배치함으로써 과정(500)을 바꿀 수 있다. 단계(502)에서, 과정을 시작할 수 있다.
단계(504)에서, 마스터 C-엔트리를 생성할 수 있다. 데이터가 C-청크에 적합한 PLB 태그를 가진 상태로 매체 상에 물리적으로 존재하는 C-청크(즉, 진본 복사)를 "마스터 C-청크"로 지칭할 수 있다. 매체 상에 복사를 저장함 없이 동일한 데이터를 현재 가리키는 다른 C-청크를 "클론 C-청크"로 지칭할 수 있다.
C-청크 내의 모든 PLB들을 위한 간접지정 데이터 구조 엔트리들은 단일 "C-엔트리"를 형성하도록 함께 분류된다. 마스터 C-청크에 대해, C-엔트리는 도 6a에 도시된 포맷일 수 있다.
단계(506)에서, 클론 C-엔트리를 생성할 수 있다. 클론 C-청크에 대해, C-엔트리는 도 6b에 도시된 포맷일 수 있다.
하나 이상의 구현예에서, NAND 주소i는 마스터 C-청크의 i번째 PLB를 위한 NAND 주소일 수 있다(i = 0은 첫 번째 PLB를 나타냄).
단계(508)에서, 마스터 인덱스를 나타내도록 블록을 배정할 수 있다. 마스터 인덱스는 (8개의 PLB 엔트리의 공간을 소비하기 때문에 8로 나누어지는) 마스터 C-엔트리의 간접지정 데이터 구조 인덱스일 수 있다. 마스터 C-엔트리 및 클론 C-엔트리 모두의 마스터 인덱스들이 마스터 C-엔트리를 가리킬 수 있다.
단계(510)에서, 다음 인덱스를 나타내도록 블록을 배정할 수 있다. 다음 인덱스는 (8개의 PLB 엔트리의 공간을 소비하기 때문에 8로 나누어지는) 동일한 데이터를 가리키는 다음 클론 C-엔트리의 간접지정 데이터 구조 인덱스일 수 있다. 나타낼 더 이상의 클론 C-엔트리가 존재하지 않는 경우, 이러한 다음 인덱스는 다시 마스터 C-인덱스를 가리킬 수 있다.
일부 구현예들에서, C-청크가 마스터 엔트리인지 판단하기 위해 하나 이상의 테스트를 사용할 수 있다. 예컨대, C-엔트리의 마스터 인덱스가 C-엔트리 자체를 가리키는 경우 및 오직 그럴 경우에만 C-청크가 마스터일 수 있다.
단계(512)에서, 방법(500)을 종료할 수 있다.
다른 구현예들이 본 발명의 범주 및 정신 내에 있다. 예컨대, 소프트웨어, 하드웨어, 펌웨어, 하드와이어링, 또는 이들 중 임의의 조합을 사용하여, 상기에 설명된 기능을 실시할 수 있다. 명령에 따라 동작하는 하나 이상의 컴퓨터 프로세서가 상기에 설명된 바와 같이 본 개시에 따른 SSD 내의 개선된 기록-시-복사 기능과 연관되는 기능을 실시할 수 있다. 그렇다면, 이와 같은 명령은 하나 이상의 비일시적인 프로세서 판독 가능 저장 매체(예컨대, 자기 디스크 또는 다른 저장 매체) 상에 저장될 수 있다는 것이 본 개시의 범주 내에 있다. 또한, 기능을 실시하는 모듈들은 기능의 일부가 상이한 물리적 위치에서 실시되도록 분배되는 것을 비롯하여, 다양한 장소에 물리적으로 위치할 수 있다.
본 개시의 범주는 본원에 설명된 특정 구현예들에 의해 제한되지 않아야 한다. 실제로, 본원에 설명된 것 외에도, 본 개시의 다른 다양한 구현예들 및 수정들이 전술한 설명 및 첨부 도면으로부터 당업자들에게 명백해질 것이다. 그러므로, 이와 같은 다른 구현예들 및 수정들은 본 개시의 범주에 속하도록 의도된 것이다. 게다가, 본 개시가 특정 목적을 위해 특정 환경에서 특정 실시의 맥락으로 본원에 설명되었지만, 당업자들은 그 유용성이 이에 제한되지 않으며, 본 개시가 다수의 목적을 위해 다수의 환경에서 유익하게 실시될 수 있다는 것을 인지할 것이다. 따라서, 이하에 설명되는 청구범위는 본원에 설명된 바와 같이 본 개시의 완전한 범위 및 정신의 관점에서 해석되어야 한다.

Claims (25)

  1. SSD 내의 개선된 기록-시-복사 기능을 제공하기 위한 방법에 있어서,
    디바이스의 메모리에서, 간접지정 데이터 구조를 제공하는 단계로, 상기 간접지정 데이터 구조는 클로닝된 데이터를 위한 마스터 엔트리 및 클로닝된 데이터를 위한 클론 엔트리를 포함하되, 상기 마스터 엔트리는 하나 이상의 인덱스에 대한 레퍼런스를 가지며, 상기 클론 엔트리는 마스터 인덱스에 대한 레퍼런스, 다음 인덱스에 대한 레퍼런스, 및 데이터 구조의 끝을 나타내는 값 중 적어도 하나를 가지는 것인 단계; 및
    컴퓨터 프로세서를 사용하여, 상기 레퍼런스들 중 하나 이상을 이용하여 상기 클로닝된 데이터의 하나 이상의 복사를 트래버싱하는 단계를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 간접지정 데이터 구조는 복수의 물리 주소를 포함하는, 방법.
  3. 제1항에 있어서,
    상기 간접지정 데이터 구조는 환형 연결 리스트의 일부이며, 클로닝된 데이터를 위한 상기 마스터 엔트리는 마스터 인덱스에 대한 레퍼런스 및 다음 인덱스에 대한 레퍼런스를 포함하는, 방법.
  4. 제1항에 있어서,
    상기 간접지정 데이터 구조는 환형 연결 리스트의 일부이며, 상기 클로닝된 데이터를 위한 상기 클론 엔트리는 마스터 인덱스에 대한 레퍼런스 및 다음 인덱스에 대한 레퍼런스를 포함하는, 방법.
  5. 제1항에 있어서,
    상기 간접지정 데이터 구조는 단일단 연결 리스트의 일부이며, 인덱스 내의 엔트리는 상기 인덱스가 마스터 인덱스라는 지표를 제공하는, 방법.
  6. 제1항에 있어서,
    상기 레퍼런스들은 논리 블록 주소지정을 위해 플랫 간접지정 테이블 내의 엔트리들을 포함하는, 방법.
  7. 제1항에 있어서,
    상기 레퍼런스들은 논리 블록 주소지정을 위해 트리 데이터 구조 내의 엔트리들을 포함하는, 방법.
  8. 제1항에 있어서,
    상기 개선된 기록-시-복사 기능은 개선된 네임스페이스 복사 기능을 포함하는, 방법.
  9. 제1항에 있어서,
    하나 이상의 패킹된 논리 블록이 클로닝되는 것을 나타내기 위해 상기 하나 이상의 패킹된 논리 블록을 위한 지시계를 설정하는 단계를 더 포함하는, 방법.
  10. 제1항에 있어서,
    상기 마스터 엔트리의 마스터 인덱스는 상기 마스터 엔트리를 가리키는, 방법.
  11. 제3항에 있어서,
    상기 클론 엔트리의 상기 마스터 인덱스는 상기 마스터 엔트리를 가리키는, 방법.
  12. 제4항에 있어서,
    데이터 구조 내의 최종 클론 엔트리의 다음 인덱스는 상기 마스터 엔트리를 가리키는, 방법.
  13. 제4항에 있어서,
    상기 클로닝된 데이터를 위한 상기 클론 엔트리가 유일한 클론 엔트리라고 판단하는 단계를 더 포함하고,
    상기 판단 단계는:
    상기 클론 엔트리의 다음 인덱스가 상기 클론 엔트리의 마스터 인덱스에 부합된다고 판단하는 단계;
    상기 마스터 엔트리의 다음 인덱스가 상기 클론 엔트리를 가리킨다고 판단하는 단계;
    상기 클론 엔트리의 상기 다음 인덱스를 패킹된 논리 블록을 나타내는 간접지정 엔트리로 설정하고, 상기 마스터 인덱스 엔트리를 패킹된 논리 블록을 나타내는 간접지정 엔트리로 설정함으로써, 상기 클로닝된 데이터의 상기 클론 엔트리를 언클로닝하는 단계; 및
    상기 마스터 엔트리의 상기 다음 인덱스를 진본 마스터 엔트리의 제1 패킹된 논리 블록을 나타내는 제1 간접지정 엔트리로 설정하고, 상기 마스터 엔트리의 상기 마스터 인덱스를 진본 마스터 엔트리의 제2 패킹된 논리 블록을 나타내는 제2 간접지정 엔트리로 설정함으로써, 상기 클로닝된 데이터의 상기 마스터 엔트리를 언클로닝하는 단계를 포함하는, 방법.
  14. 제4항에 있어서,
    상기 클로닝된 데이터를 위한 상기 클론 엔트리가 복수의 클론 엔트리 중 하나라고 판단하는 단계를 더 포함하고,
    상기 판단 단계는:
    상기 클론 엔트리의 다음 인덱스가 상기 클론 엔트리의 마스터 인덱스에 부합되지 않는다는 것; 및 상기 마스터 엔트리의 다음 인덱스가 상기 클론 엔트리를 가리키지 않는다는 것 중 적어도 하나를 판단하는 단계; 및
    상기 클론 엔트리의 상기 다음 인덱스에 의해 나타낸 엔트리를 가리키도록 이전 엔트리의 다음 인덱스를 설정함으로써, 상기 클로닝된 데이터의 상기 클론 엔트리를 언클로닝하는 단계를 포함하는, 방법.
  15. 제1항에 있어서,
    가비지 수집 과정 중에 엔트리를 검토하는 단계;
    상기 엔트리가 클로닝 지시계를 포함한다고 판단하는 단계; 및
    상기 엔트리가 상기 클로닝 지시계를 포함한다는 판단에 기초하여, 상기 가비지 수집 과정의 상기 엔트리가 삭제되지 않을 유효 엔트리라고 판단하는 단계를 더 포함하는, 방법.
  16. 컴퓨터 상에서 실행 가능한 일련의 명령으로 이루어진 컴퓨터 프로그램 제품에 있어서,
    상기 컴퓨터 프로그램 제품은 SSD 내의 개선된 기록-시-복사 기능을 제공하기 위한 과정을 수행하고;
    상기 컴퓨터 프로그램은:
    디바이스의 메모리에서, 간접지정 데이터 구조를 제공하는 단계로, 상기 간접지정 데이터 구조는 클로닝된 데이터를 위한 마스터 엔트리 및 클로닝된 데이터를 위한 클론 엔트리를 포함하되, 상기 마스터 엔트리는 하나 이상의 인덱스에 대한 레퍼런스를 가지며, 상기 클론 엔트리는 마스터 인덱스에 대한 레퍼런스, 다음 인덱스에 대한 레퍼런스, 및 데이터 구조의 끝을 나타내는 값 중 적어도 하나를 가지는 것인 단계; 및
    컴퓨터 프로세서를 사용하여, 상기 레퍼런스들 중 하나 이상을 이용하여 상기 클로닝된 데이터의 하나 이상의 복사를 트래버싱하는 단계를 실시하는, 컴퓨터 프로그램 제품.
  17. SSD 내의 개선된 기록-시-복사 기능을 제공하기 위한 시스템에 있어서,
    메모리에 저장되는 저장 명령을 포함하는 제1 디바이스를 포함하고,
    상기 명령은:
    상기 제1 디바이스의 메모리에서, 간접지정 데이터 구조를 제공하는 명령으로, 상기 간접지정 데이터 구조는 클로닝된 데이터를 위한 마스터 엔트리 및 클로닝된 데이터를 위한 클론 엔트리를 포함하되, 상기 마스터 엔트리는 하나 이상의 인덱스에 대한 레퍼런스를 가지며, 상기 클론 엔트리는 마스터 인덱스에 대한 레퍼런스, 다음 인덱스에 대한 레퍼런스, 및 데이터 구조의 끝을 나타내는 값 중 적어도 하나를 가지는 것인 명령; 및
    컴퓨터 프로세서를 사용하여, 상기 레퍼런스들 중 하나 이상을 이용하여 상기 클로닝된 데이터의 하나 이상의 복사를 트래버싱하는 명령을 포함하는, 시스템.
  18. 제17항에 있어서,
    상기 간접지정 데이터 구조는 복수의 물리 주소를 포함하는, 시스템.
  19. 제17항에 있어서,
    상기 간접지정 데이터 구조는 환형 연결 리스트의 일부이며, 클로닝된 데이터를 위한 상기 마스터 엔트리는 마스터 인덱스에 대한 레퍼런스 및 다음 인덱스에 대한 레퍼런스를 포함하는, 시스템.
  20. 제17항에 있어서,
    상기 간접지정 데이터 구조는 환형 연결 리스트의 일부이며, 상기 클로닝된 데이터를 위한 상기 클론 엔트리는 상기 마스터 인덱스에 대한 레퍼런스 및 다음 인덱스에 대한 레퍼런스를 포함하는, 시스템.
  21. 제17항에 있어서,
    상기 간접지정 데이터 구조는 단일단 연결 리스트의 일부이며, 인덱스 내의 엔트리는 상기 인덱스가 마스터 인덱스라는 지표를 제공하는, 시스템.
  22. 제17항에 있어서,
    상기 레퍼런스들은 논리 블록 주소지정을 위해 플랫 간접지정 테이블 내의 엔트리들을 포함하는, 시스템.
  23. 제17항에 있어서,
    상기 제1 디바이스는 주변 부품 상호연결 익스프레스(PCIe) 디바이스를 포함하는, 시스템.
  24. 제17항에 있어서,
    하나 이상의 패킹된 논리 블록이 클로닝되는 것을 나타내기 위해 상기 하나 이상의 패킹된 논리 블록을 위한 지시계를 설정하는 명령을 더 포함하는, 시스템.
  25. 제20항에 있어서,
    상기 마스터 엔트리의 상기 마스터 인덱스 및 상기 클론 엔트리의 상기 마스터 인덱스는 상기 마스터 엔트리를 가리키고, 데이터 구조 내의 최종 클론 엔트리의 다음 인덱스는 상기 마스터 엔트리를 가리키는, 시스템.
KR1020160022000A 2015-02-25 2016-02-24 Ssd 상의 기록-시-복사를 위한 시스템 및 방법 KR101813786B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/630,863 US9880755B2 (en) 2015-02-25 2015-02-25 System and method for copy on write on an SSD
US14/630,863 2015-02-25

Publications (2)

Publication Number Publication Date
KR20160103945A true KR20160103945A (ko) 2016-09-02
KR101813786B1 KR101813786B1 (ko) 2018-01-02

Family

ID=55590636

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160022000A KR101813786B1 (ko) 2015-02-25 2016-02-24 Ssd 상의 기록-시-복사를 위한 시스템 및 방법

Country Status (7)

Country Link
US (3) US9880755B2 (ko)
JP (1) JP6218869B2 (ko)
KR (1) KR101813786B1 (ko)
CN (1) CN105912475A (ko)
DE (1) DE102016001591A1 (ko)
FR (1) FR3033061B1 (ko)
GB (1) GB2537012B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022197833A1 (en) * 2021-03-16 2022-09-22 Peng Li On-ssd-copy techniques using copy-on-write

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9880755B2 (en) * 2015-02-25 2018-01-30 Western Digital Technologies, Inc. System and method for copy on write on an SSD
US10606803B2 (en) * 2016-06-28 2020-03-31 Netapp, Inc. Data cloning in memory-based file systems
US10031689B2 (en) * 2016-09-15 2018-07-24 Western Digital Technologies, Inc. Stream management for storage devices
KR102631351B1 (ko) * 2016-10-07 2024-01-31 삼성전자주식회사 피어-투 피어 통신을 수행할 수 있는 저장 장치와 이를 포함하는 데이터 저장 시스템
JP6783645B2 (ja) 2016-12-21 2020-11-11 キオクシア株式会社 メモリシステムおよび制御方法
US10268620B2 (en) * 2016-12-23 2019-04-23 Ati Technologies Ulc Apparatus for connecting non-volatile memory locally to a GPU through a local switch
US10585749B2 (en) * 2017-08-10 2020-03-10 Samsung Electronics Co., Ltd. System and method for distributed erasure coding
US11061585B1 (en) 2017-10-19 2021-07-13 EMC IP Holding Company, LLC Integration of NVMe device with DRAM cache system and method
US10521137B1 (en) * 2017-10-31 2019-12-31 EMC IP Holding Company LLC Storage device array integration of dual-port NVMe device with DRAM cache and hostside portion of software stack system and method
CN109902033B (zh) * 2019-02-13 2023-03-14 山东华芯半导体有限公司 应用于NVMe SSD控制器的namespace的LBA分配方法和映射方法
JP7395388B2 (ja) 2020-03-06 2023-12-11 キオクシア株式会社 メモリシステム及びその制御方法
US11640371B2 (en) 2020-03-12 2023-05-02 Western Digital Technologies, Inc. Snapshot management in partitioned storage
CN112817533A (zh) * 2021-01-29 2021-05-18 深圳忆联信息系统有限公司 Ssd管理方法、装置计算机设备及存储介质

Family Cites Families (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4742450A (en) 1986-01-16 1988-05-03 International Business Machines Corporation Method to share copy on write segment for mapped files
US5481694A (en) * 1991-09-26 1996-01-02 Hewlett-Packard Company High performance multiple-unit electronic data storage system with checkpoint logs for rapid failure recovery
US5574905A (en) * 1994-05-26 1996-11-12 International Business Machines Corporation Method and apparatus for multimedia editing and data recovery
US5815649A (en) * 1995-10-20 1998-09-29 Stratus Computer, Inc. Distributed fault tolerant digital data storage subsystem for fault tolerant computer system
US6219770B1 (en) 1998-03-23 2001-04-17 Compaq Computer Corporation Method and apparatus for managing copy on write operations in a virtual memory
FI991336A (fi) * 1999-06-10 2000-12-11 Nokia Networks Oy Menetelmä levyvarmennetun tietokannan elvyttämiseksi
US6751583B1 (en) * 1999-10-29 2004-06-15 Vast Systems Technology Corporation Hardware and software co-simulation including simulating a target processor using binary translation
US6779095B2 (en) * 2000-06-19 2004-08-17 Storage Technology Corporation Apparatus and method for instant copy of data using pointers to new and original data in a data location
US6976021B2 (en) * 2001-07-19 2005-12-13 Riverstone Networks, Inc. Method, system, and computer program product for managing a re-usable resource with linked list groups
US6748504B2 (en) * 2002-02-15 2004-06-08 International Business Machines Corporation Deferred copy-on-write of a snapshot
US7249352B2 (en) * 2002-08-22 2007-07-24 International Business Machines Corporation Apparatus and method for removing elements from a linked list
US7529897B1 (en) * 2003-12-31 2009-05-05 Vmware, Inc. Generating and using checkpoints in a virtual computer system
US20070093124A1 (en) 2005-10-20 2007-04-26 Lsi Logic Corporation Methods and structure for SAS expander optimization of SAS wide ports
US7774316B2 (en) * 2005-11-30 2010-08-10 Oracle International Corp. Filesystem snapshot enhancement to improve system performance
US7499961B2 (en) * 2006-01-12 2009-03-03 Sun Microsystems, Inc. Method and apparatus for limiting the size and facilitating maintenance of remembered sets in a space incremental garbage collector
US7673185B2 (en) 2006-06-08 2010-03-02 Dot Hill Systems Corporation Adaptive SAS PHY configuration
WO2008121873A1 (en) * 2007-03-29 2008-10-09 Vmware, Inc. Synchronization and customization of a clone computer
US8706976B2 (en) * 2007-08-30 2014-04-22 Commvault Systems, Inc. Parallel access virtual tape library and drives
US8195912B2 (en) * 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
US7912995B1 (en) 2007-12-20 2011-03-22 Emc Corporation Managing SAS topology
US7941692B2 (en) 2007-12-31 2011-05-10 Intel Corporation NAND power fail recovery
US8190835B1 (en) 2007-12-31 2012-05-29 Emc Corporation Global de-duplication in shared architectures
US7953778B2 (en) * 2008-05-20 2011-05-31 International Business Machines Corporation Efficient support of consistent cyclic search with read-copy update and parallel updates
US20120311243A1 (en) * 2008-05-30 2012-12-06 Ite Tech. Inc. Method for increasing reliability of data accessing for a multi-level cell type non-volatile memory
JP5108667B2 (ja) * 2008-07-23 2012-12-26 株式会社日立製作所 リモートコピーシステム、及びリモートサイトの省電力化方法
JP5156518B2 (ja) * 2008-07-23 2013-03-06 株式会社日立製作所 記憶制御装置及び方法
US8200922B2 (en) 2008-12-17 2012-06-12 Netapp, Inc. Storage system snapshot assisted by SSD technology
JP2012531674A (ja) 2009-06-26 2012-12-10 シンプリヴィティ・コーポレーション ノンユニフォームアクセスメモリにおけるスケーラブルなインデックス付け
US20110161298A1 (en) 2009-12-29 2011-06-30 Grobman Steven L System and method for opportunistic re-imaging using cannibalistic storage techniques on sparse storage devices
US8447943B2 (en) 2010-02-24 2013-05-21 Hitachi, Ltd. Reduction of I/O latency for writable copy-on-write snapshot function
US9104546B2 (en) * 2010-05-24 2015-08-11 Silicon Motion Inc. Method for performing block management using dynamic threshold, and associated memory device and controller thereof
US8621143B2 (en) 2011-04-15 2013-12-31 Oracle International Corporation Elastic data techniques for managing cache storage using RAM and flash-based memory
US8868869B2 (en) * 2011-08-08 2014-10-21 International Business Machines Corporation Enhanced copy-on-write operation for solid state drives
US8930307B2 (en) 2011-09-30 2015-01-06 Pure Storage, Inc. Method for removing duplicate data from a storage array
US8527544B1 (en) * 2011-08-11 2013-09-03 Pure Storage Inc. Garbage collection in a storage system
WO2013038442A1 (en) 2011-09-13 2013-03-21 Hitachi, Ltd. Storage system comprising flash memory, and storage control method
JP5776474B2 (ja) * 2011-09-29 2015-09-09 富士通株式会社 ストレージ装置、ストレージ制御装置およびコピー先データアクセス方法
US8935499B2 (en) * 2011-10-17 2015-01-13 International Business Machines Corporation Interface for management of data movement in a thin provisioned storage system
WO2013093957A1 (en) * 2011-12-19 2013-06-27 Hitachi, Ltd. Computer system and reclamation control method
US9229853B2 (en) 2011-12-20 2016-01-05 Intel Corporation Method and system for data de-duplication
US9152570B2 (en) 2012-02-27 2015-10-06 Vmware, Inc. System and method for supporting finer-grained copy-on-write page sizes
US8843666B2 (en) 2012-03-02 2014-09-23 Lsi Corporation Method for optimizing wide port power management in a SAS topology
US8850145B1 (en) * 2012-03-30 2014-09-30 Emc Corporation Managing consistency groups in storage systems
CN103544077B (zh) * 2012-07-17 2016-12-07 华为技术有限公司 数据处理方法及装置、共享存储设备
US8959374B2 (en) 2012-07-31 2015-02-17 Hewlett-Packard Development Company, L.P. Power management for devices in a data storage fabric
US8924751B2 (en) 2012-07-31 2014-12-30 Hewlett-Packard Development Company, L.P. SAS power management
US8862810B2 (en) 2012-09-27 2014-10-14 Arkologic Limited Solid state device write operation management system
US9646039B2 (en) * 2013-01-10 2017-05-09 Pure Storage, Inc. Snapshots in a storage system
JP6109967B2 (ja) 2013-02-21 2017-04-05 ヒタチ データ システムズ エンジニアリング ユーケー リミテッドHitachi Data Systems Engineering Uk Limited データストレージシステムにおけるクローンオブジェクトのオブジェクトレベルでの複製
US20150006814A1 (en) 2013-06-28 2015-01-01 Western Digital Technologies, Inc. Dynamic raid controller power management
US9588882B2 (en) * 2013-12-02 2017-03-07 Intel Corporation Non-volatile memory sector rotation
US9170746B2 (en) 2014-01-07 2015-10-27 Netapp, Inc. Clustered raid assimilation management
US9880755B2 (en) * 2015-02-25 2018-01-30 Western Digital Technologies, Inc. System and method for copy on write on an SSD

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022197833A1 (en) * 2021-03-16 2022-09-22 Peng Li On-ssd-copy techniques using copy-on-write

Also Published As

Publication number Publication date
KR101813786B1 (ko) 2018-01-02
GB2537012B (en) 2019-07-03
US20160246521A1 (en) 2016-08-25
FR3033061A1 (ko) 2016-08-26
GB201601965D0 (en) 2016-03-16
JP2016157441A (ja) 2016-09-01
DE102016001591A1 (de) 2016-08-25
CN105912475A (zh) 2016-08-31
US20200150883A1 (en) 2020-05-14
US9880755B2 (en) 2018-01-30
US10540106B2 (en) 2020-01-21
FR3033061B1 (fr) 2021-03-05
US11226747B2 (en) 2022-01-18
GB2537012A (en) 2016-10-05
US20180150249A1 (en) 2018-05-31
JP6218869B2 (ja) 2017-10-25

Similar Documents

Publication Publication Date Title
KR101813786B1 (ko) Ssd 상의 기록-시-복사를 위한 시스템 및 방법
US10649910B2 (en) Persistent memory for key-value storage
US9519575B2 (en) Conditional iteration for a non-volatile device
US9146877B2 (en) Storage system capable of managing a plurality of snapshot families and method of snapshot family based read
US9311015B2 (en) Storage system capable of managing a plurality of snapshot families and method of operating thereof
US9817581B2 (en) Maintaining versions of data in solid state memory
CN106354745B (zh) 用于提供计算机装置的接口的方法和计算机装置
US9342256B2 (en) Epoch based storage management for a storage device
US10108356B1 (en) Determining data to store in retention storage
US11782632B2 (en) Selective erasure of data in a SSD
KR101870521B1 (ko) 스토리지 저널링을 개선하는 방법 및 시스템
US9122582B2 (en) File system for maintaining data versions in solid state memory
US10956071B2 (en) Container key value store for data storage devices
US20140207997A1 (en) Pregroomer for storage array
US20150186259A1 (en) Method and apparatus for storing data in non-volatile memory
US10296250B2 (en) Method and apparatus for improving performance of sequential logging in a storage device
US10120583B2 (en) Performance penalty avoidance for solid state drive
US10817624B2 (en) Memory system and storage device capable of permanently deleting data stored in a non-volatile memory
US20230075437A1 (en) Techniques for zoned namespace (zns) storage using multiple zones
CN118051179A (zh) 用于使用多个分区的分区命名空间存储的技术

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