KR20170118594A - 가비지 컬렉션에 대한 유효성 추적 - Google Patents

가비지 컬렉션에 대한 유효성 추적 Download PDF

Info

Publication number
KR20170118594A
KR20170118594A KR1020170026374A KR20170026374A KR20170118594A KR 20170118594 A KR20170118594 A KR 20170118594A KR 1020170026374 A KR1020170026374 A KR 1020170026374A KR 20170026374 A KR20170026374 A KR 20170026374A KR 20170118594 A KR20170118594 A KR 20170118594A
Authority
KR
South Korea
Prior art keywords
block
data
valid
validity
data stored
Prior art date
Application number
KR1020170026374A
Other languages
English (en)
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 KR20170118594A publication Critical patent/KR20170118594A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • 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/7209Validity control, e.g. using flags, time stamps or sequence numbers
    • 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

저장 디바이스는 복수의 블록 세트들로 논리적으로 분리되는 적어도 하나의 메모리 디바이스 및 컨트롤러를 포함할 수 있다. 컨트롤러는 복수의 블록 세트들의 제1 블록 세트 상에서 가비지 수거 동작을 실행하도록 하는 명령을 수신하도록 구성될 수 있다. 컨트롤러는 비휘발성 메모리에 저장된 유효성 테이블에 기초하여 제1 블록 세트의 제1 블록에 저장된 데이터가 유효한지 결정하고, 제1 블록으로부터의 데이터가 복수의 블록 세트들의 제2 블록 세트의 제2 블록에 기록되도록 하고, 제1 블록에 저장된 데이터가 유효하지 않다고 나타내고, 제2 블록에 저장된 데이터가 유효하다고 나타내도록 유효성 테이블을 변형하도록 더 구성될 수 있다.

Description

가비지 수거를 위한 유효성 트래킹{VALIDITY TRACKING FOR GARBAGE COLLECTION}
본 개시는 솔리드 스테이트 드라이브(solid state drive)와 같은 저장 장치에 관한 것이다.
솔리드 스테이트 드라이브(SSD)는 컴퓨터에서 비교적 낮은 지연시간(latency) 및 대용량 저장이 소망되는 어플리케이션에 사용될 수 있다. 일부 예에서, 저장 장치의 컨트롤러는 저장 장치에 의해 저장된 무효 데이터(invalid data)를 재사용할 수 있다. 예를 들면, 메모리의 블록세트(blockset)가 유효 데이터(valid data) 및 무효(예컨대, 스테일(stale)) 데이터를 저장하는 경우, 컨트롤러는, 유효 데이터를 블록세트로부터 판독하고, 전체 블록세트를 소거하고, 동일하거나 상이한 물리적 위치에 있는 저장 장치에 유효 데이터를 다시 기록함으로써, 무효 데이터를 제거할 수 있다.
해당 사항 없음
일부 예에서, 방법은, 저장 장치의 컨트롤러에 의해, 저장 장치의 제1 블록세트에 대한 가비지 컬렉션 동작(garbage collection operation)을 실행하는 명령을 수신하는 단계를 포함하고, 제1 블록세트는 저장 장치의 제1 물리적 블록 어드레스와 연관된 제1 블록을 적어도 포함한다. 상기 방법은, 제1 블록세트에 대한 가비지 컬렉션 동작을 실행하는 명령을 수신하는 것에 응답하여, 컨트롤러에 의해, 그리고 비휘발성 메모리에 저장된 유효성 테이블(validity table)에 기초하여, 제1 블록세트의 제1 블록에 저장된 데이터가 유효한지를 결정하는 단계를 추가로 포함한다. 상기 방법은, 제1 블록세트의 제1 블록에 저장된 데이터가 유효한 것으로 결정하는 것에 응답하여, 컨트롤러에 의해, 제1 블록으로부터의 데이터가 저장 장치의 제2 블록세트의 제2 블록에 기록되게 하는 단계를 추가로 포함한다. 상기 방법은, 제1 블록으로부터의 데이터가 제2 블록에 기록되게 하는 것에 응답하여, 컨트롤러에 의해, 제1 블록에 저장된 데이터가 무효하다고 표시하고 제2 블록에 저장된 데이터가 유효하다고 표시하도록 유효성 테이블을 수정하는 단계를 추가로 포함한다.
일부 예에서, 저장 장치는 복수의 블록세트로 논리적으로 분할된 적어도 하나의 메모리 장치, 및 컨트롤러를 포함한다. 컨트롤러는 복수의 블록세트 중 제1 블록세트에 대한 가비지 컬렉션 동작을 실행하는 명령을 수신하도록 구성되고, 제1 블록세트는 저장 장치의 제1 물리적 블록 어드레스와 연관된 제1 블록을 적어도 포함한다. 제1 블록세트에 대한 가비지 컬렉션 동작을 실행하는 명령을 수신하는 것에 응답하여, 컨트롤러는, 비휘발성 메모리에 저장된 유효성 테이블에 기초하여, 제1 블록세트의 제1 블록에 저장된 데이터가 유효한지를 결정하도록 추가로 구성된다. 제1 블록세트의 제1 블록에 저장된 데이터가 유효한 것으로 결정하는 것에 응답하여, 컨트롤러는 제1 블록으로부터의 데이터가 복수의 블록세트 중 제2 블록세트의 제2 블록에 기록되게 하도록 추가로 구성된다. 제1 블록으로부터의 데이터가 제2 블록에 기록되게 하는 것에 응답하여, 컨트롤러는 제1 블록에 저장된 데이터가 무효하다고 표시하고 제2 블록에 저장된 데이터가 유효하다고 표시하도록 유효성 테이블을 수정하도록 추가로 구성된다.
일부 예에서, 컴퓨터-판독가능 저장 매체는, 실행시에, 저장 장치의 제1 블록세트에 대한 가비지 컬렉션 동작을 실행하는 명령을 수신하도록 저장 장치의 하나 이상의 프로세서를 구성하는 명령어를 포함하고, 제1 블록세트는 저장 장치의 제1 물리적 블록 어드레스와 연관된 제1 블록을 적어도 포함한다. 제1 블록세트에 대한 가비지 컬렉션 동작을 실행하는 명령을 수신하는 것에 응답하여, 명령어는, 비휘발성 메모리에 저장된 유효성 테이블에 기초하여, 제1 블록세트의 제1 블록에 저장된 데이터가 유효한지를 결정하고, 제1 블록세트의 제1 블록에 저장된 데이터가 유효한 것으로 결정하는 것에 응답하여, 제1 블록으로부터의 데이터가 저장 장치의 제2 블록세트의 제2 블록에 기록되게 하고, 제1 블록으로부터의 데이터가 제2 블록에 기록되게 하는 것에 응답하여, 제1 블록에 저장된 데이터가 무효하다고 표시하고 제2 블록에 저장된 데이터가 유효하다고 표시하도록 유효성 테이블을 수정하도록, 저장 장치의 하나 이상의 프로세서를 추가로 구성한다.
일부 예에서, 시스템은 저장 장치의 제1 블록세트에 대한 가비지 컬렉션 동작을 실행하는 명령을 수신하기 위한 수단을 포함하고, 제1 블록세트는 저장 장치의 제1 물리적 블록 어드레스와 연관된 제1 블록을 적어도 포함한다. 상기 시스템은, 비휘발성 메모리에 저장된 유효성 테이블에 기초하여, 제1 블록세트의 제1 블록에 저장된 데이터가 유효한지를 결정하기 위한 수단을 추가로 포함한다. 상기 시스템은, 제1 블록세트의 제1 블록에 저장된 데이터가 유효한 것으로 결정하는 것에 응답하여, 제1 블록으로부터의 데이터가 저장 장치의 제2 블록세트의 제2 블록에 기록되게 하기 위한 수단을 추가로 포함한다. 상기 시스템은, 제1 블록으로부터의 데이터가 제2 블록에 기록되게 하는 것에 응답하여, 제1 블록에 저장된 데이터가 무효하다고 표시하고 제2 블록에 저장된 데이터가 유효하다고 표시하도록 유효성 테이블을 수정하기 위한 수단을 추가로 포함한다.
하나 이상의 예의 상세내용이 첨부 도면 및 이하의 설명에 기재되어 있다. 다른 특징, 목적 및 이점이 설명 및 도면과, 청구범위로부터 명백해질 것이다.
도 1은 호스트 장치에 연결된 저장 장치를 포함하는 예시적인 시스템을 도시하는 개념적이고 개략적인 블록도이다.
도 2는 각각이 다수의 블록을 구비하는 다수의 블록세트를 포함하는 예시적인 메모리 장치(12AA)를 도시하는 개념적인 블록도이다.
도 3은 예시적인 컨트롤러를 도시하는 개념적이고 개략적인 블록도이다.
도 4는 블록의 분포 및 대응하는 유효성 테이블을 도시하는 예시적인 도면이다.
도 5는 블록세트에 대한 가비지 컬렉션 동작을 수행하기 위한 예시적인 기술을 도시하는 흐름도이다.
도 6은 기록 동작을 수행하기 위한 예시적인 기술을 도시하는 흐름도이다.
본 개시는 솔리드 스테이트 드라이브와 같은 저장 장치의 유효성 추적을 위한 기술을 개시한다. 일부 예에서, 유효성 추적 기술은 저장 장치의 가비지 컬렉션 동작 동안에 이용될 수 있다. 예를 들면, 저장 장치(예컨대, NAND 솔리드 스테이트 드라이브)는 다수의 블록세트를 포함할 수 있다. 추가로, 각각의 블록세트는, 각각이 다수의 데이터 섹터를 포함할 수 있는 다수의 블록을 포함할 수 있다. 일부 예에서, 저장 장치의 컨트롤러는 블록에 이전에 저장된 데이터를 소거한 후에만 데이터를 블록에 기록할 수 있다. 더욱이, 그러한 저장 장치는 블록의 전체 블록세트를 소거하는 것만을 허용할 수 있다. 그러한 작은 기록 세분도(granularity) 및 큰 소거 세분도를 수용하기 위해서, 저장 장치는 블록세트를 재사용하는 가비지 컬렉션 프로세스를 사용할 수 있다. 보다 구체적으로는, 블록세트의 유효 블록은 이 유효 블록에 저장된 데이터의 손실을 방지하기 위해 블록세트를 소거하기 전에 다른 블록세트로 이동될 수 있다. 소거되면, 컨트롤러는 블록세트를 사용하여 새로운 데이터를 저장할 수 있다.
일부 가비지 컬렉션 프로세스는 간접 시스템(indirection system)을 사용하여 블록세트의 블록이 유효 데이터를 포함하고 있는지를 추적할 수 있다. 예를 들면, 블록세트에 저장된 데이터는 블록세트를 위한 논리적 블록 어드레스를 열거하는 물리적 매니페스트(physical manifest)를 포함할 수 있다. 간접 시스템은 각각의 논리적 블록 어드레스를 블록을 위한 물리적 블록 어드레스에 매핑하는 논리적-물리적 테이블(logical to physical table)을 포함할 수 있다. 물리적 매니페스트 및 논리적-물리적 테이블을 사용하여, 컨트롤러는 가비지 컬렉션 기술을 구현하고, 블록이 유효 데이터를 포함하고 있는지를 결정할 수 있다. 보다 구체적으로는, 컨트롤러는, 물리적 매니페스트에 표시된 논리적 블록 어드레스가 논리적-물리적 테이블에 의해 특정의 물리적 블록 어드레스에 매핑되는 경우, 특정의 물리적 블록 어드레스에 있는 블록이 유효한 것으로 결정할 수 있다. 그러나 물리적 매니페스트를 사용하는 유효성 추적은 정확한 가비지 컬렉션을 가능하게 하도록 물리적 매니페스트 및 논리적-물리적 테이블 모두를 필요로 할 수 있다. 더욱이, 물리적 매니페스트는 무효한 논리적 블록 어드레스를 제거하지 않고 새로운 논리적 블록 어드레스를 포함하도록 부가될 수 있다. 그래서, 그러한 가비지 컬렉션 프로세스는, 대부분의 입력이 무효일 수 있더라도 컨트롤러가 물리적 매니페스트 내의 각각의 입력을 체크할 수 있으므로, 계산상으로 비효율적일 수 있다. 그러한 복잡성 때문에, 블록이 유효 데이터를 포함하고 있는지를 추적하는데 간접 시스템을 사용하는 저장 장치는 이 저장 장치의 범용 프로세서에 상당한 부담이 될 수 있는 복잡한 펌웨어 제어 알고리즘을 사용할 수 있다.
본 개시의 기술에 따르면, 컨트롤러는 유효성 테이블을 사용하여 블록세트의 블록이 유효 데이터를 포함하고 있는지를 추적하는 가비지 컬렉션 기술을 구현할 수 있다. 예를 들면, 유효성 테이블은 저장 장치의 각 물리적 블록에 의해 저장된 데이터의 유효성을 표시할 수 있다. 예를 들면, 논리 '1'은 대응하는 블록이 유효 데이터를 저장하고 있는 것을 표시할 수 있고, 논리 '0'은 대응하는 블록이 무효 데이터를 저장하고 있는 것을 표시할 수 있다. 일부 예에서, 저장 장치의 컨트롤러는 기록 동작 동안에 유효성 테이블을 갱신할 수 있다. 예를 들면, 논리적 블록 어드레스와 연관된 데이터를 저장 장치에 기록하도록 저장 장치에 명령하는 호스트로부터의 명령을 수신하는 것에 응답하여, 저장 장치는 데이터를 저장 장치의 블록에 저장하고, 유효 데이터(예컨대, 논리 '1')를 표시하기 위해 상기 블록과 대응하는 유효성 테이블 내의 유효 비트를 설정할 수 있다. 그 후에, 논리적 블록 어드레스와 연관된 갱신된 데이터를 호스트 장치로부터 수신하는 것에 응답하여, 저장 장치는 갱신된 데이터를 새로운 블록에 저장하고, 유효 데이터(예컨대, 논리 '1')를 표시하기 위해 새로운 블록과 대응하는 유효성 테이블 내의 유효 비트를 설정하고, 무효 데이터(예컨대, 논리 '0')를 표시하기 위해 이전 블록과 대응하는 유효성 테이블 내의 유효 비트를 클리어(clear)할 수 있다. 그러한 프로세스는 상이한 간접 시스템 및 물리적 매니페스트를 수용할 수 있는데, 이는 데이터 유효성 프로세스가 간접 시스템 및 물리적 매니페스트와 분리되거나 별개일 수 있기 때문이다. 더욱이, 유효성 테이블을 사용한 가비지 컬렉션 프로세스는 저장 장치의 범용 프로세서에 적은 부담이 될 수 있으며, 이는 데이터가 유효한지를 결정하기 위해 간접 테이블, 물리적 매니페스트 또는 이들 모두를 이용하는 보다 복잡한 알고리즘보다는 간단한 비트 검색(lookup)이 사용될 수 있기 때문이다. 일부 예에서, 유효성 테이블을 사용한 가비지 컬렉션 프로세스는 저장 장치의 범용 프로세서에 대한 부담을 훨씬 더 감소시키기 위해 하드웨어로 구현될 수 있다. 예를 들면, 하드웨어 가속기 엔진(hardware accelerator engine)이 소정 범위의 물리적 블록 어드레스(예컨대, 블록세트)를 컨트롤러로부터 수신하는 것에 응답하여, 하드웨어 가속기 엔진은 상기 범위의 물리적 블록 어드레스 내에서의, 유효 데이터를 포함하는 물리적 블록 어드레스를 컨트롤러에 출력할 수 있다.
도 1은 호스트 장치(15)에 연결된 저장 장치(2)를 포함하는 예시적인 시스템(1)을 도시하는 개념적이고 개략적인 블록도이다. 호스트 장치(15)는 저장 장치(2) 내에 포함된 메모리 장치를 이용하여 데이터를 저장하고 검색할 수 있다. 도 1에 도시된 바와 같이, 호스트 장치(15)는 인터페이스(10)를 통해 저장 장치(2)와 통신할 수 있다. 호스트 장치(15)는 예를 들어 컴퓨터 서버, 네트워크 부착 저장장치(network attached storage; NAS) 유닛, 데스크톱 컴퓨터, 노트북(예컨대, 랩톱) 컴퓨터, 태블릿 컴퓨터, 셋톱 박스, "스마트" 폰과 같은 모바일 컴퓨팅 장치, 텔레비전, 카메라, 디스플레이 장치, 디지털 미디어 플레이어, 비디오 게임 콘솔, 비디오 스트리밍 장치 등을 포함하는 임의의 컴퓨팅 장치를 포함할 수 있다.
도 1에 도시된 바와 같이, 저장 장치(2)는 컨트롤러(4), 비휘발성 메모리 어레이(6)(NVMA(6)), 캐시(8) 및 인터페이스(10)를 포함할 수 있다. 일부 예에서, 저장 장치(2)는 명확화를 위해 도 1에 도시되지 않은 추가적인 구성요소를 포함할 수 있다. 예를 들면, 저장 장치(2)는, 예를 들어, 커패시터, 슈퍼 커패시터(super capacitor) 또는 배터리를 포함하는 전력 전달 구성요소; 저장 장치(2)의 구성요소가 기계적으로 부착되고, 저장 장치(2)의 구성요소를 전기적으로 상호연결하는 전기 전도성 트레이스를 포함하는 회로 기판(PB) 등을 포함할 수 있다.
일부 예에서, 저장 장치(2)의 물리적 치수 및 커넥터 구성은 하나 이상의 표준 폼 팩터(form factor)를 따를 수 있다. 일부의 예시적인 표준 폼 팩터는 3.5" 하드디스크 드라이브(HDD), 2.5" HDD, 1.8" HDD, 주변 부품 상호연결(peripheral component interconnect; PCI), 확장 PCI(PCI-extended; PCI-X), PCI 익스프레스(PCI Express; PCIe)(예컨대, PCI x1, x4, x8, x16, PCIe Mini Card, MiniPCI 등)를 포함하지만 이에 한정되지 않는다. 일부 예에서, 저장 장치(2)는 호스트 장치(15)의 마더보드에 직접 결합(예컨대, 직접 납땜)될 수 있다.
인터페이스(10)는 저장 장치(2)를 호스트 장치(15)와 전자적으로 연결할 수 있다. 예를 들면, 인터페이스(10)는 호스트 장치(15)와 데이터를 교환하기 위한 데이터 버스 및 호스트 장치(15)와 명령을 교환하기 위한 제어 버스 중 하나 또는 모두를 포함할 수 있다. 인터페이스(10)는 임의의 적합한 프로토콜에 따라 작동할 수 있다. 예를 들면, 인터페이스(10)는 하기의 프로토콜 중 하나 이상에 따라 작동할 수 있다: 고급 기술 결합(advanced technology attachment; ATA)(예컨대, 직렬-ATA(SATA) 및 병렬-ATA(PATA)), 파이버 채널(Fibre Channel), 소형 컴퓨터 시스템 인터페이스(small computer system interface; SCSI), 직렬 결합 SCSI(serially attached SCSI; SAS), 주변 부품 상호연결(PCI), PCI-익스프레스 및 비휘발성 메모리 익스프레스(Non-Volatile Memory Express; NVMe). 인터페이스(10)의 전기적 연결부(예컨대, 데이터 버스, 제어 버스 또는 이들 모두)는 컨트롤러(4)에 전기적으로 연결되어 호스트 장치(15)와 컨트롤러 사이에 전기적 연결을 제공해서, 호스트 장치(15)와 컨트롤러(4) 사이에서 데이터가 교환되게 할 수 있다. 일부 실시예에서, 인터페이스(10)의 전기적 연결부는 또한 저장 장치(2)가 호스트 장치(15)로부터 전력을 수용하게 할 수도 있다.
저장 장치(2)는 이 저장 장치(2)의 하나 이상의 동작을 관리할 수 있는 컨트롤러(4)를 포함한다. 예를 들면, 컨트롤러(4)는 메모리 장치(12AA-12NN)(집합적으로, "메모리 장치(12)")로부터의 데이터의 판독 및/또는 메모리 장치(12)로의 데이터의 기록을 관리할 수 있다. 일부 예에서, 도 1에는 도시되어 있지 않지만, 저장 장치(2)는 또한 이 저장 장치(2)의 하나 이상의 동작을 추가로 관리할 수 있는 판독 채널, 기록 채널 또는 이들 모두를 포함할 수도 있다. 예들 들면, 판독 채널은, 일 예로서, 메모리 장치(12)로부터의 판독을 관리할 수 있고, 기록 채널은, 일 예로서, 메모리 장치(12)로의 기록을 관리할 수 있다. 일부 예에서, 판독 채널은 메모리 장치(12)의 메모리 셀에 의해 저장된 각각의 비트의 값을 결정하는 것과 같은 본 개시의 기술을 수행할 수 있다.
NVMA(6)는, 각각이 데이터를 저장 및/또는 검색하도록 구성될 수 있는 메모리 장치(12AA-12NN)(집합적으로, "메모리 장치(12)")를 포함할 수 있다. 예를 들면, 메모리 장치(12) 중 하나의 메모리 장치는 데이터를 저장하도록 메모리 장치에 명령하는 컨트롤러(4)로부터의 메시지 및 데이터를 수신할 수 있다. 유사하게, 메모리 장치(12) 중 하나의 메모리 장치는 데이터를 검색하도록 메모리 장치에 명령하는 컨트롤러(4)로부터의 메시지를 수신할 수 있다. 일부 예에서, 각각의 메모리 장치(12)는 다이(die)로서 지칭될 수 있다. 일부 예에서, 단일의 물리적 칩은 복수의 다이(즉, 복수의 메모리 장치(12))를 포함할 수 있다. 일부 예에서, 각각의 메모리 장치(12)는 비교적 대량의 데이터(예컨대, 256MB, 512MB, 1GB, 2GB, 4GB, 8GB, 16GB, 32GB, 64GB, 128GB, 256GB, 512GB, 1TB 등)를 저장하도록 구성될 수 있다.
일부 예에서, 메모리 장치(12)는 임의의 타입의 비휘발성 메모리 장치를 포함할 수 있다. 메모리 장치(12)의 일부 예는 플래시 메모리 장치, 상변화 메모리(phase-change memory; PCM) 장치, 저항 랜덤-액세스 메모리(resistive random-access memory; ReRAM) 장치, 자기저항 랜덤-액세스 메모리(magnetoresistive random-access memory; MRAM) 장치, 강유전체 랜덤-액세스 메모리(ferroelectric random-access memory; F-RAM), 홀로그래픽 메모리 장치, 및 임의의 타입의 비휘발성 메모리 장치를 포함하지만 이에 한정되지 않는다.
플래시 메모리 장치는 NAND 또는 NOR 기반 플래시 메모리 장치를 포함할 수 있으며, 각각의 플래시 메모리 셀을 위한 트랜지스터의 부동 게이트(floating gate) 내에 수용된 전하에 기초하여 데이터를 저장할 수 있다. NAND 플래시 메모리 장치에서, 플래시 메모리 장치는 복수의 블록세트로 분할될 수 있고, 이러한 블록세트 각각은 복수의 블록(예컨대, 페이지)으로 분할될 수 있다. 도 2는, 각각이 블록(18AA-18NN)(집합적으로, "블록(18)")으로 분할되는 블록세트(16A-16N)(집합적으로, "블록세트(16)")를 포함하는 예시적인 메모리 장치(12AA)를 도시하는 개념적인 블록도이다. 특정 메모리 장치(예컨대, 메모리 장치(12AA)) 내의 블록(18)의 각 블록은 복수의 플래시 메모리 셀을 포함할 수 있다. NAND 플래시 메모리 장치에서, 플래시 메모리 셀의 열은 블록(18) 중 하나의 블록을 규정하도록 워드 라인을 사용하여 전기적으로 연결될 수 있다. 각각의 블록(18) 내의 각각의 셀은 각각의 비트 라인에 전기적으로 연결될 수 있다. 컨트롤러(4)는 블록 레벨로 NAND 플래시 메모리 장치에 데이터를 기록하고 그로부터 데이터를 판독하며, 블록세트 레벨로 NAND 플래시 메모리 장치로부터 데이터를 소거할 수 있다.
일부 예에서, 컨트롤러(4)가 메모리 장치(12)의 각 메모리 장치에 별도로 연결되는 것은 실용적이지 않을 수 있다. 이와 같이, 메모리 장치(12)와 컨트롤러(4) 사이의 연결부는 다중화(multiplex)될 수 있다. 일 예로서, 메모리 장치(12)는 채널로 그룹화될 수 있다. 각각의 채널로 그룹화된 메모리 장치(12)는 컨트롤러(4)에 대한 하나 이상의 연결부를 공유할 수 있다. 예를 들면, 제1 채널로 그룹화된 메모리 장치(12)는 공통 I/O 버스 및 공통 제어 버스에 부착될 수 있다. 저장 장치(2)는 채널의 각각의 채널을 위한 공통 I/O 버스 및 공통 제어 버스를 포함할 수 있다.
저장 장치(2)는 또한, 이 저장 장치(2)의 작동을 제어하는데 사용되는 컨트롤러(4)에 의해 사용된 데이터를 저장할 수 있는 캐시(8)를 포함한다. 캐시(8)는 NVMA(6)에 저장된 데이터를 관리하는 간접 시스템을 위해 컨트롤러(4)에 의해 사용된 정보를 저장할 수 있다. 예를 들면, 컨트롤러(4)는, 캐시(8)에 저장된 논리적-물리적 테이블에서, 논리적 블록 어드레스의 세트의 각 논리적 블록 어드레스를 NVMA(6)의 블록에 대한 대응하는 물리적 블록 어드레스와 매핑할 수 있다. 캐시(8)는 간접 시스템을 위한 임의의 적합한 정보를 저장할 수 있고, 예를 들어 캐시(8)는 NVMA(6)의 네임스페이스(namespace)를 식별하는 정보를 저장할 수 있다. 일부 예에서, 간접 시스템에 사용된 정보는 휘발성 메모리에 저장될 수 있다. 예를 들면, 논리적-물리적 테이블은 캐시(8)의 휘발성 메모리에 저장될 수 있다. 일부 예에서, 간접 시스템에 사용된 정보는 비휘발성 메모리에 저장될 수 있다. 예를 들면, 논리적-물리적 테이블은 캐시(8)의 비휘발성 메모리에 저장될 수 있다. 캐시(8)는 예를 들어 랜덤-액세스 메모리(RAM), 동적 랜덤 액세스 메모리(dynamic random access memory; DRAM), 정적 RAM(static RAM; SRAM) 및 동기식 동적 RAM(synchronous dynamic RAM; SDRAM(예컨대, DDR1, DDR2, DDR3, DDR3L, LPDDR3, DDR4)) 등을 포함할 수 있다.
컨트롤러(4)는 저장 장치(2)의 하나 이상의 동작을 관리할 수 있다. 컨트롤러(4)는 인터페이스(10)를 통해 호스트 장치(15)와 통신하고, 메모리 장치(12)에 저장된 데이터를 관리할 수 있다. 예를 들면, 컨트롤러(4)가 호스트 장치(15)로부터 데이터 및 논리적 블록 어드레스를 수신하는 것에 응답하여, 컨트롤러(4)는 NVMA(6)가 데이터를 메모리 장치(12AA)의 물리적 블록 어드레스에 기록하고 물리적 블록 어드레스를 캐시(8)에 저장된 논리적-물리적 테이블 내의 논리적 블록 어드레스에 매핑하게 할 수 있다. 컨트롤러(4)는 마이크로프로세서, 디지털 신호 프로세서(digital signal processor; DSP), 응용 주문형 집적 회로(application specific integrated circuit; ASIC), 필드 프로그래머블 게이트 어레이(field programmable gate array; FPGA), 또는 다른 디지털 논리 회로를 포함할 수 있다.
본 개시의 기술에 따르면, 컨트롤러(4)는 캐시(8)에 유효성 테이블(예컨대, 물리적 유효성 테이블)을 저장할 수 있다. 컨트롤러(4)는 NVMA(6)에 대한 가비지 컬렉션 동작을 수행할 때 유효성 테이블을 이용할 수 있다. 예를 들면, 컨트롤러(4)가 블록세트(예컨대, NVMA(6)의 메모리 장치(12AA)의 블록(16A))에 대한 가비지 컬렉션 동작을 실행하는 명령을 호스트 장치(15)로부터 수신하는 것에 응답하여, 컨트롤러(4)는 간접 시스템을 사용하기보다는 유효성 테이블에 기초하여 블록세트의 각 블록(예컨대, 블록(18AA-18AM))이 유효한지(즉, 유효 데이터를 저장하고 있는지)를 결정할 수 있다. 보다 구체적으로는, 컨트롤러(4)는 캐시(8)에 저장된 유효성 테이블이 비트를 설정하는 제1 블록에 대한 입력을 포함하면 블록세트의 제1 블록이 유효한 것으로 결정할 수 있다. 그 후에, 컨트롤러(4)는 제1 블록으로부터의 데이터가 NVMA(6)의 다른 블록세트의 제2 블록에 기록되게 할 수 있다. 예를 들면, 컨트롤러(4)는 데이터를 제1 블록으로부터 제2 블록으로 이동시키도록 NVMA(6)에 명령할 수 있고, 컨트롤러(4)는 논리적-물리적 테이블에 의해 제1 블록에 이전에 매핑된 논리적 블록 어드레스가 제2 블록에 매핑되도록 캐시(8)에 저장된 논리적-물리적 테이블을 갱신할 수 있다. 다음에, 컨트롤러(4)는 제1 블록에 저장된 데이터가 무효하다고 표시하고 제2 블록에 저장된 데이터가 유효하다고 표시하도록 캐시(8)의 유효성 테이블을 갱신할 수 있다. 예를 들면, 컨트롤러(4)는 제2 블록과 대응하는 유효성 테이블 내의 비트를 설정하고, 제1 블록과 대응하는 유효성 테이블 내의 비트를 클리어할 수 있다. 모든 유효 데이터가 특정 블록세트 내의 각각의 유효 블록으로부터 이동되고, 특정 블록세트와 대응하는 유효성 테이블 내의 각각의 비트가 클리어되면, 컨트롤러(4)는 블록세트를 소거하도록 NVMA(6)에 명령할 수 있다. 이러한 방식으로, 컨트롤러(4)는 블록세트 내의 블록에 의해 저장된 데이터가 유효한지를 결정하기 위해 간접 시스템에서의 순방향 탐색을 필요로 하지 않고 블록세트를 재사용할 수 있다.
일부 예에서, 캐시(8)는, 유효성 테이블이 캐시(8)에의 전력 공급 없이 유지되어 저장 장치(2)의 각 블록의 유효성이 저장 장치(2)의 리셋 후에 결정될 수 있게 하도록, 비휘발성 메모리를 포함할 수 있다. 그러한 비휘발성 메모리는 랜덤 바이트-세분도(random byte-granularity) 판독 및 기록 용량을 갖는 임의의 적합한 매체일 수 있다. 비휘발성 메모리의 예는 예를 들어 상변화 메모리(PCM), 정적 RAM(SRAM), 자기저항 랜덤-액세스 메모리(MRAM) 등을 포함할 수 있다. 일부 예에서, 유효성 테이블은 고속 및/또는 고가의 메모리가 유효성 테이블을 저장하는데 사용될 수 있도록 비교적 소형(예컨대, 32MB)일 수 있다. 예를 들면, 단일 비트를 사용하여 1TB의 저장 장치의 각각의 4KB의 간접 유닛(예컨대, 블록)의 유효성을 표시하기 위해서는 캐시(8)의 32MB만을 사용할 수 있다. 일부 예에서, 캐시(8)는 휘발성 메모리를 포함할 수 있고, 캐시(8)로부터의 데이터는 전력 손실 이벤트 동안에 영구 저장장치로 이동될 수 있다. 예를 들면, 컨트롤러(4)는 전력 손실 이벤트 동안에 유효성 테이블을 캐시(8)의 휘발성 메모리(예컨대, DRAM)로부터 비휘발성 메모리(예컨대, NVMA(6), 캐시(8)의 비휘발성 메모리 등)로 이동시킬 수 있다.
본 개시의 기술에 따르면, 컨트롤러(4)는, 간접 테이블, 물리적 매니페스트, 또는 이들 모두를 이용하는 복잡한 알고리즘 없이, 캐시(8)에 저장된 유효성 테이블을 사용하여 NVMA(6)의 블록세트의 블록이 유효 데이터를 포함하고 있는지를 추적하는 가비지 컬렉션 기술을 구현할 수 있다. 예를 들면, 컨트롤러(4)는 캐시(8)에 저장된 유효성 테이블의 간단한 비트 검색에 의해 NVMA(6)의 각각의 물리적 블록에 의해 저장된 데이터의 유효성을 결정할 수 있다. 추가로, 컨트롤러(4)는 상이한 간접 시스템 및 물리적 매니페스트를 수용할 수 있는데, 이는 데이터 유효성 프로세스가 간접 시스템 및 물리적 매니페스트와 분리되거나 별개일 수 있기 때문이다.
도 3은 예시적인 컨트롤러(4)를 도시하는 개념적이고 개략적인 블록도이다. 도시된 바와 같이, 컨트롤러(4)는 기록 모듈(22), 보전 모듈(maintenance module)(24), 판독 모듈(26), 어드레스 변환 모듈(28) 및 유효성 모듈(30)을 포함할 수 있다. 일부 예에서, 컨트롤러(4)는 선택적으로 가비지 컬렉션 하드웨어 가속기(32)를 포함할 수 있다.
어드레스 변환 모듈(28)은 호스트 장치(15)에 의해 사용된 논리적 블록 어드레스를 NVMA(6)의 물리적 블록 어드레스와 연관시킬 수 있다. 예를 들면, 어드레스 변환 모듈(28)이 판독 또는 기록 명령의 일부로서 논리적 블록 어드레스를 호스트 장치(15)로부터 수신하는 것에 응답하여, 어드레스 변환 모듈(28)은 간접 시스템(예컨대, 캐시(8)에 저장된 가상 또는 논리적-물리적 테이블)을 사용하여 논리적 블록 어드레스와 대응하는 NVMA(6)의 물리적 블록 어드레스를 결정할 수 있다.
판독 모듈(26)은 NVMA(6)로부터 데이터를 검색하는 명령을 호스트 장치(15)로부터 수신할 수 있다. 예를 들면, 판독 모듈(26)이 논리적 블록 어드레스에서 데이터를 판독하는 명령을 호스트 장치(15)로부터 수신하는 것에 응답하여, 판독 모듈(26)은 NVMA(6)로부터 데이터를 검색할 수 있다.
기록 모듈(22)은 NVMA(6)에 데이터를 기록하는 명령을 호스트 장치(15)로부터 수신할 수 있다. 예를 들면, 기록 모듈(22)이 논리적 블록 어드레스에 데이터를 기록하는 명령을 호스트 장치(15)로부터 수신하는 것에 응답하여, 기록 모듈(22)은 물리적 블록 어드레스와 연관된 NVMA(6)의 가용 블록(available block)에 데이터를 기록할 수 있다. 일부 예에서, 기록 모듈(22)은, 예를 들지만 이에 한정되지 않는 호스트 장치(15), 컨트롤러(4)의 다른 모듈(예컨대, 어드레스 변환 모듈(28)) 등으로부터, NVMA(6)의 가용 블록과 연관된 물리적 블록 어드레스를 수신할 수 있다. 일부 예에서, 기록 모듈(22)은 NVMA(6)의 가용 블록과 연관된 물리적 블록 어드레스를 결정할 수 있다.
유효성 모듈(30)은 캐시(8)에 저장된 유효성 테이블을 사용하여 NVMA(6)에 저장된 데이터가 유효한지 무효한지를 결정할 수 있다. 예를 들면, 유효성 모듈(30)은, 캐시(8)에 저장된 유효성 테이블에서, 갱신된 데이터를 포함하는 블록에 대응하는 유효성 값을 설정하고, 캐시(8)에 저장된 유효성 테이블에서, 이전 데이터를 포함하는 블록에 대응하는 유효성 값을 클리어할 수 있다. 그 후에, 유효성 모듈(30)은 유효성 값의 간단한 비트 검색에 의해 블록이 유효 데이터를 포함하고 있는지를 결정할 수 있다. 일부 예에서, 유효성 모듈(30)은 캐시(8)에 저장된 유효성 테이블을 사용하여 블록세트의 각 블록이 유효 데이터를 포함하고 있는지를 결정할 수 있다. 일부 예에서, 유효성 모듈(30)은 블록의 적어도 하나의 데이터 섹터가 유효 데이터를 포함하는 경우에 블록이 유효 데이터를 포함하고 있는 것으로 결정할 수 있다. 이러한 방식으로, 유효성 모듈(30)은 컨트롤러(4)의 프로세서에 대한 계산 부담을 감소시킬 수 있다.
보전 모듈(24)은 블록세트(16)를 재사용하도록 유효 데이터(예컨대, 비 스테일 데이터)를 재배치할 수 있다. 예를 들면, 유효성 모듈(30)이 캐시(8)에 저장된 유효성 테이블을 사용하여 블록세트(16A)의 데이터 세트(18AA 및 18AM)만이 유효 데이터를 포함하고 있는 것으로 결정하는 것에 응답하여, 보전 모듈(24)은 판독 모듈(26) 및 기록 모듈(22)이 블록(18AA 및 18AM)에 저장된 데이터를 재배치하게 하여 블록세트(16A)가 재사용되게 할 수 있다.
컨트롤러(4)가 가비지 컬렉션 하드웨어 가속기(32)를 포함하는 경우에, 가비지 컬렉션 하드웨어 가속기(32)는 컨트롤러(4)에 대한 계산 부담을 감소시키기 위해 컨트롤러(4)의 범용 프로세서 대신에 하나 이상의 가비지 컬렉션 프로세스를 수행할 수 있다. 예를 들면, 가비지 컬렉션 하드웨어 가속기(32)는 캐시(8)에 저장된 유효성 테이블을 사용하여 블록에 저장된 데이터가 유효한지를 결정할 수 있다. 가비지 컬렉션 하드웨어 가속기(32)는 마이크로프로세서, 디지털 신호 프로세서(DSP), 응용 주문형 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA), 또는 다른 디지털 논리 회로를 포함할 수 있다.
일부 예에서, 컨트롤러(4)는 블록세트에 대한 가비지 컬렉션 동작을 실행하는 명령을 수신할 수 있다. 예를 들면, 호스트 장치(15)는 저장 장치(2)의 블록세트(16A)에 대한 가비지 컬렉션 동작을 실행하도록 저장 장치(2)에 명령하는 명령을 저장 장치(2)에 송신할 수 있다. 다른 예로서, 컨트롤러(4)는 블록세트에 대한 가비지 컬렉션 동작을 실행할 때를 결정하는 펌웨어를 실행할 수 있다.
컨트롤러(4)가 가비지 컬렉션 동작을 실행하는 명령을 수신하는 것에 응답하여, 유효성 모듈(30)은 제1 블록세트의 제1 블록에 저장된 데이터가 유효한지를 결정할 수 있다. 일부 예에서, 유효성 모듈(30)은 유효 값을 표시하는 유효성 값에 기초하여 제1 블록에 저장된 데이터가 유효한지를 결정할 수 있다. 예를 들면, 유효성 모듈(30)이 캐시(8)의 유효성 테이블에 의해 블록세트(16A)의 블록(18AA)과 연관된 물리적 위치에 매핑된 유효성 값이 유효 값을 표시하는 것(예컨대, 설정되는 것)으로 결정하는 것에 응답하여, 유효성 모듈(30)은 블록(18AA)에 저장된 데이터가 유효한 것으로 결정할 수 있다.
유효성 모듈(30)이 제1 블록세트의 제1 블록에 저장된 데이터가 유효한 것으로 결정하는 것에 응답하여, 보전 모듈(24)은 제1 블록세트의 제1 블록으로부터의 데이터가 제2 블록세트의 제2 블록에 기록되게 할 수 있다. 예를 들면, 유효성 모듈(30)이 블록(18AA)이 유효 데이터를 포함하고 있는 것으로 결정하는 것에 응답하여, 보전 모듈(24)은 블록세트(16A)의 블록(18AA)에 저장된 데이터를 블록세트(16B)의 블록(18BA)에 재배치할 수 있다. 보다 구체적으로는, 보전 모듈(24)은 판독 모듈(26)이 블록세트(16A)의 블록(18AA)에 저장된 데이터를 판독하게 하고, 기록 모듈(22)이 판독 모듈(26)에 의해 판독된 데이터를 블록세트(16B)의 블록(18BA)에 기록하게 할 수 있다.
보전 모듈(24)이 제1 블록세트의 제1 블록으로부터의 데이터가 제2 블록세트의 제2 블록에 기록되게 하는 것에 응답하여, 유효성 모듈(30)은 제1 블록에 저장된 데이터가 무효하다고 표시하고 제2 블록에 저장된 데이터가 유효하다고 표시하도록 캐시(8)에 저장된 유효성 테이블을 수정할 수 있다. 예를 들면, 유효성 모듈(30)은 블록(18AA)에 저장된 데이터가 무효하다고 표시하고 블록(18BA)에 저장된 데이터가 유효하다고 표시하도록 캐시(8)에 저장된 유효성 테이블을 수정할 수 있다. 보다 구체적으로는, 유효성 모듈(30)은 캐시(8)에 저장된 유효성 테이블에 의해 블록(18AA)과 연관된 물리적 블록 어드레스에 매핑된 유효성 값을 클리어하고, 캐시(8)에 저장된 유효성 테이블에 의해 블록(18BA)과 연관된 물리적 블록 어드레스에 매핑된 유효성 값을 설정할 수 있다.
일부 예에서, 보전 모듈(24)은 또한 논리적 블록 어드레스를 NVMA(6)의 블록과 연관시키도록 논리적-물리적 테이블을 갱신할 수도 있다. 예를 들면, 보전 모듈(24)이 제1 블록세트의 제1 블록으로부터의 데이터가 제2 블록세트의 제2 블록에 기록되게 하는 것에 응답하여, 보전 모듈(24)은 제1 블록(예컨대, 블록(18AA))과 이전에 연관된 논리적 블록 어드레스를 제2 블록(예컨대, 블록(18BA))과 연관시키도록 캐시(8)의 논리적-물리적 테이블을 갱신할 수 있다. 보다 구체적으로는, 보전 모듈(24)은 논리적 블록 어드레스를 제2 블록(예컨대, 블록(18BA))과 연관된 물리적 블록 어드레스에 매핑하도록 캐시(8)의 논리적-물리적 테이블을 갱신할 수 있다. 상기 예가 블록세트 내의 단일 유효 블록을 예시하고 있지만, 상기 기술은, 일부 예에서, 블록세트의 각 블록에 대해 유사하게 반복될 수 있다는 것이 이해되어야 한다. 이러한 방식으로, 컨트롤러(4)는 모든 유효 데이터가 보존되도록 블록세트를 처리할 수 있다.
일부 예에서, 방법은, 저장 장치(2)의 컨트롤러(4)에 의해, 저장 장치(2)의 블록세트(16A)에 대한 가비지 컬렉션 동작을 실행하는 명령을 수신하는 단계를 포함하며, 블록세트(16A)는 저장 장치(2)의 제1 물리적 블록 어드레스와 연관된 블록(18AA)을 적어도 포함한다. 상기 방법은, 컨트롤러(4)에 의해 그리고 캐시(8)에 저장된 유효성 테이블에 기초해서, 제1 블록세트에 대한 가비지 컬렉션 동작을 실행하는 명령을 수신하는 것에 응답하여, 블록세트(16A)의 블록(18AA)에 저장된 데이터가 유효한지를 결정하는 단계를 추가로 포함한다. 상기 방법은, 컨트롤러(4)에 의해, 블록세트(16A)의 블록(18AA)에 저장된 데이터가 유효한 것으로 결정하는 것에 응답하여, 블록(18AA)으로부터의 데이터가 저장 장치(2)의 블록세트(16B)의 블록(18BA)에 기록되게 하는 단계를 추가로 포함한다. 상기 방법은, 컨트롤러(4)에 의해, 블록(18AA)으로부터의 데이터가 블록(18BA)에 기록되게 하는 것에 응답하여, 블록(18AA)에 저장된 데이터가 무효하다고 표시하고 블록(18BA)에 저장된 데이터가 유효하다고 표시하도록 유효성 테이블을 수정하는 단계를 추가로 포함한다.
컨트롤러(4)가 가비지 컬렉션 하드웨어 가속기(32)를 포함하는 경우에, 가비지 컬렉션 하드웨어 가속기(32)는 컨트롤러(4)의 범용 프로세서에 대한 계산 부담을 감소시키기 위해 모듈을 실행하는 컨트롤러(4)의 프로세서 대신에 하나 이상의 가비지 컬렉션 프로세스를 수행할 수 있다. 예를 들면, 가비지 컬렉션 하드웨어 가속기(32)는 제1 블록에 저장된 데이터가 유효한지를 결정할 수 있다. 예를 들면, 가비지 컬렉션 하드웨어 가속기(32)는 캐시(8)의 유효성 테이블에 의해 블록세트(16A)의 블록(18AA)과 연관된 물리적 위치에 매핑된 유효성 값을 검색할 수 있다. 그 후에, 가비지 컬렉션 하드웨어 가속기(32)가 캐시(8)의 유효성 테이블에 의해 블록세트(16A)의 블록(18AA)과 연관된 물리적 위치에 매핑된 유효성 값이 유효 값을 표시하는 것(예컨대, 설정되는 것)으로 결정하는 것에 응답하여, 가비지 컬렉션 하드웨어 가속기(32)는 블록(18AA)에 저장된 데이터가 유효한 것으로 결정할 수 있다. 상기 예가 제1 블록에 저장된 데이터가 유효한지를 결정하는 것을 예시하고 있지만, 상기 기술은, 일부 예에서, 블록세트의 각 블록에 대해 유사하게 반복될 수 있다는 것이 이해되어야 한다.
가비지 컬렉션 하드웨어 가속기(32)는 가비지 컬렉션을 위한 물리적 블록 어드레스의 목록을 컨트롤러(4)에 출력할 수 있다. 예를 들면, 가비지 컬렉션 하드웨어 가속기(32)가 소정 범위의 물리적 블록 어드레스를 컨트롤러(4)로부터 수신하는 것에 응답하여, 가비지 컬렉션 하드웨어 가속기(32)는 상기 범위의 물리적 블록 어드레스 내의 유효한 블록을 컨트롤러(4)에 출력할 수 있다. 보다 구체적으로는, 가비지 컬렉션 하드웨어 가속기(32)는 블록이 캐시(8)에 저장된 물리적 유효성 테이블 내의 논리 '1'과 연관되는 경우 컨트롤러(4)로부터 제공된 상기 범위의 물리적 블록 어드레스 내의 물리적 블록 어드레스를 갖는 블록이 유효한 것으로 결정할 수 있다. 그 후에, 가비지 컬렉션 하드웨어 가속기(32)는 물리적 유효성 테이블 내의 논리 '1'과 연관된 상기 범위의 물리적 블록 어드레스의 모든 물리적 블록 어드레스의 목록을 컨트롤러(4)에 출력할 수 있다. 이러한 방식으로, 가비지 컬렉션 하드웨어 가속기(32)는 컨트롤러(4)의 범용 프로세서에 대한 부담을 감소시킬 수 있다.
일부 예에서, 가비지 컬렉션 하드웨어 가속기(32)는 즉시 기록 데이터(ready-to-write data) 및 대응하는 논리적 블록 어드레스의 목록을 컨트롤러(4)에 제공할 수 있다. 예를 들면, 가비지 컬렉션 하드웨어 가속기(32)는 NVMA(6)가 블록세트의 물리적 매니페스트를 판독하게 할 수 있으며, 가비지 컬렉션 하드웨어 가속기(32)는 물리적 매니페스트를 사용하여 블록세트의 블록과 연관된 논리적 블록 어드레스를 결정할 수 있다. 그 후에, 가비지 컬렉션 하드웨어 가속기(32)는 블록을 다른 물리적 블록 어드레스로 이동시키고 물리적 매니페스트로부터 결정된 논리적 블록 어드레스로 캐시(8)의 논리적-물리적 테이블을 갱신하는 요청을 컨트롤러(4)(예컨대, 보전 모듈(24))에 제공할 수 있다. 이러한 방식으로, 데이터를 재배치하여 블록세트를 재사용하는 것은 가비지 컬렉션 하드웨어 가속기(32)에 의해 실질적으로 자동화될 수 있고, 이에 의해 컨트롤러(4)의 범용 프로세서에 대한 계산 부담을 더욱 감소시킬 수 있다.
도 4는 블록(40)의 분포 및 대응하는 유효성 테이블(42)을 도시하는 예시적인 도면이다. 일부 예에서, 유효성 테이블(42)은 단일 비트인 유효성 값(44)을 포함할 수 있다. 도시된 바와 같이, 유효성 테이블(42)은 클리어 비트(예컨대, 논리 '0')를 블록(50), 블록(51), 블록(55) 및 블록(57)과 연관시킨다. 즉, 블록(50), 블록(51), 블록(55) 및 블록(57)은 무효 데이터(예컨대, 스테일 데이터)를 포함할 수 있다. 스테일 데이터의 예는 데이터의 갱신된 버전이 다른 물리적 블록에 저장되는 경우를 포함할 수 있다. 도시된 바와 같이, 유효성 테이블(42)은 설정 비트(예컨대, 논리 '1')를 블록(52), 블록(53), 블록(54) 및 블록(56)과 연관시킨다. 즉, 블록(52), 블록(53), 블록(54) 및 블록(56)은 유효 데이터를 포함할 수 있다. 이러한 방식으로, 유효성 모듈(30) 및/또는 가비지 컬렉션 하드웨어 가속기(32)는 유효성 테이블(42)의 간단한 비트 검색을 사용하여 NVMA(6)에 저장된 데이터의 유효성을 결정할 수 있다. 상기에 설명된 바와 같이, 일부 예에서, 단일 비트는 각 블록(예컨대, 블록(40))에 대한 유효성 값(예컨대, 유효에 대해 논리 '1', 무효에 대해 논리 '0')을 표시할 수 있어, 유효성 테이블(42)이 비교적 작은 메모리 공간을 이용하게 하여 고속 메모리(예컨대, SRAM)의 사용을 허용할 수 있다. 추가로, 컨트롤러(예컨대, 도 3의 컨트롤러(4))는 상이한 간접 시스템 및 물리적 매니페스트를 수용할 수 있는데, 이는 데이터 유효성 프로세스가 간접 시스템 및 물리적 매니페스트와 연관된 정보(예컨대, 논리적-물리적 테이블)보다는 유효성 테이블(42)을 사용할 수 있기 때문이다. 더욱이, 유효성 테이블(42)을 사용한 가비지 컬렉션 프로세스는 저장 장치(예컨대, 도 1의 저장 장치(2))의 범용 프로세서에 적은 부담이 될 수 있으며, 이는 데이터가 유효한지를 결정하기 위해 간접 테이블, 물리적 매니페스트 또는 이들 모두를 이용하는 보다 복잡한 알고리즘보다는 간단한 비트 검색이 사용될 수 있기 때문이다. 또한, 유효성 테이블(42)을 사용한 가비지 컬렉션 프로세스는 저장 장치(예컨대, 도 1의 저장 장치(2))의 범용 프로세서에 대한 부담을 훨씬 더 감소시키기 위해 하드웨어(예컨대, 가비지 컬렉션 하드웨어 가속기(32))로 구현될 수 있다.
도 5는 블록세트에 대한 가비지 컬렉션 동작을 수행하기 위한 예시적인 기술을 도시하는 흐름도이다. 도 5의 기술은 설명의 용이화를 위해 도 1의 예시적인 시스템(1) 및 도 3의 컨트롤러(4)를 동시에 참조하여 설명될 것이다.
저장 장치(2)는 제1 블록세트에 대한 가비지 컬렉션 동작을 실행하는 명령을 수신할 수 있다(102). 예를 들면, 보전 모듈(24)은 제1 블록세트에 대한 가비지 컬렉션 동작을 실행하는 명령을 호스트 장치(15)로부터 수신할 수 있다. 다른 예로서, 보전 모듈(24)은 제1 블록세트에 대한 가비지 컬렉션 동작을 실행하도록 결정할 수 있다. 그 후에, 유효성 모듈(30)은 유효성 테이블에 의해 제1 블록세트의 제1 블록에 매핑된 유효성 값을 판독할 수 있다(104). 예를 들면, 유효성 모듈(30)은 캐시(8)의 유효성 테이블에 의해 제1 블록세트의 제1 블록과 대응하는 물리적 블록 어드레스와 연관된 비트를 검색할 수 있다. 대안적으로, 가비지 컬렉션 하드웨어 가속기(32)는 유효성 테이블에 의해 제1 블록세트의 제1 블록에 매핑된 유효성 값을 판독할 수 있다.
유효성 값이 블록에 저장된 데이터가 무효하다고 표시하는 것으로 유효성 모듈(30)이 결정하는 경우에(106의 "아니오"로 분기), 프로세스는 다음 비트에 대해 재시작한다(116). 예를 들면, 프로세스는 제1 블록세트의 각 블록에 대해 반복될 수 있다.
한편으로, 유효성 값이 제1 블록에 저장된 데이터가 유효하다고 표시하는 것으로 유효성 모듈(30)이 결정하는 경우에(106의 "예" 분기), 유효성 모듈(30)은 유효 블록의 표시를 기록 모듈(22)에 통신하고, 기록 모듈(22)은 제1 블록으로부터의 데이터를 제2 블록세트의 제2 블록에 기록한다(108). 예를 들면, 기록 모듈(22)은, 보전 모듈(24) 또는 어드레스 변환 모듈(28)로부터, 이용 가능한(데이터를 현재 저장하고 있지 않은) 제2 블록과 연관된 물리적 블록 어드레스를 수신할 수 있다. 그 후에, 판독 모듈(26)은 제1 블록에 저장된 데이터를 검색하고, 기록 모듈(22)은 데이터를 제2 블록에 기록한다.
기록 모듈(22)이 데이터를 제2 블록에 기록하면, 유효성 모듈(30)은 제1 블록에 대한 유효성 값을 논리 '0'으로 클리어한다(110). 예를 들면, 유효성 모듈(30)은 캐시(8)에 저장된 간접 테이블에 의해 제1 블록과 연관되는 제1 물리적 블록 어드레스에, 캐시(8)에 저장된 유효성 테이블에 의해 매핑된 비트를 클리어할 수 있다. 추가로, 유효성 모듈(30)은 제2 블록에 대한 유효성 값을 논리 '1'로 설정한다(112). 예를 들면, 유효성 모듈(30)은 캐시(8)에 저장된 간접 테이블에 의해 제2 블록과 연관되는 제2 물리적 블록 어드레스에, 캐시(8)에 저장된 유효성 테이블에 의해 매핑된 비트를 설정할 수 있다. 일부 예에서, 유효성 모듈(30)은 제1 물리적 블록 어드레스에 매핑된 비트를 클리어하고, 동시에(예컨대, 미세적으로(atomic manner)) 제2 물리적 블록 어드레스에 매핑된 비트를 설정할 수 있다.
기록 모듈(22)이 데이터를 제2 물리적 블록 어드레스에 기록하는 것에 응답하여, 보전 모듈(24)은 또한, 제2 블록에 저장된 데이터가 논리적 블록 어드레스와 연관된 것으로 표시하도록 간접 테이블을 갱신할 수 있다(114). 예를 들면, 보전 모듈(24)은 제1 물리적 블록 어드레스 대신에 제2 블록과 연관된 제2 물리적 블록 어드레스와 논리적 블록 어드레스를 연관시키도록, 캐시(8)에 저장된 간접 테이블에 의해 매핑을 갱신할 수 있다. 일부 예에서, 보전 모듈(24)은 유효성 모듈(30)이 제1 물리적 블록 어드레스에 매핑된 비트를 클리어하고/하거나 제2 물리적 블록 어드레스에 매핑된 비트를 설정함과 동시에(예컨대, 미세적으로) 간접 테이블을 갱신할 수 있다. 보전 모듈(24)이 논리적-물리적 테이블을 갱신하면, 블록세트의 각 유효 블록이 재배치되어 블록세트가 재사용되게 할 때까지 프로세스가 다음 비트에 대해 재시작한다(116).
도 6은 기록 동작을 수행하기 위한 예시적인 기술을 도시하는 흐름도이다. 도 6의 기술은 설명의 용이화를 위해 도 1의 예시적인 시스템(1) 및 도 3의 컨트롤러(4)를 동시에 참조하여 설명될 것이다.
저장 장치(2)는 데이터를 논리적 블록 어드레스에 기록하는 명령을 수신할 수 있다(202). 예를 들면, 기록 모듈(22)은 데이터를 논리적 블록 어드레스에 기록하는 명령을 호스트 장치(15)로부터 수신할 수 있다. 그 후에, 어드레스 변환 모듈(28)은 논리적-물리적 테이블을 사용하여 논리적 블록 어드레스에 대응하는 제1 물리적 블록 어드레스를 결정한다(204). 예를 들면, 어드레스 변환 모듈(28)은 캐시(8)의 논리적-물리적 테이블 내의 논리적 블록 어드레스의 검색에 의해 제1 물리적 블록 어드레스를 결정할 수 있다. 그 후에, 기록 모듈(22)은 제2 물리적 블록 어드레스를 수신한다(206). 예를 들면, 호스트 장치(15)는 가용 물리적 블록 어드레스의 목록을 기록 모듈(22)에 출력할 수 있다. 기록 모듈(22)이 제2 물리적 블록 어드레스를 수신하는 것에 응답하여, 기록 모듈(22)은 제1 블록으로부터의 데이터를 제2 물리적 블록 어드레스에 기록할 수 있다(208).
기록 모듈(22)이 데이터를 제2 물리적 블록 어드레스에 기록하는 것에 응답하여, 유효성 모듈(30)은 제1 물리적 블록 어드레스에 대한 유효성 값을 논리 '0'으로 클리어할 수 있다(210). 예를 들면, 유효성 모듈(30)은 제1 물리적 블록 어드레스와 대응하는 비트를 클리어할 수 있다. 추가로, 유효성 모듈(30)은 제2 물리적 블록 어드레스에 대한 유효성 값을 논리 '1'로 설정할 수 있다(212). 예를 들면, 유효성 모듈(30)은 제2 물리적 블록 어드레스와 대응하는 비트를 설정할 수 있다. 일부 예에서, 유효성 모듈(30)은 제1 물리적 블록 어드레스에 대한 유효성 값을 논리 '0'으로 클리어하고, 동시에(예컨대, 미세적으로) 제2 물리적 블록 어드레스에 대한 유효성 값을 논리 '1'로 설정할 수 있다.
기록 모듈(22)이 데이터를 제2 물리적 블록 어드레스에 기록하는 것에 응답하여, 보전 모듈(24)은 논리적 블록 어드레스를 제2 물리적 블록 어드레스와 연관시키도록 논리적-물리적 테이블을 갱신할 수 있다(214). 예를 들면, 보전 모듈(24)은 논리적 블록 어드레스를 제2 물리적 블록 어드레스와 매핑할 수 있다. 일부 예에서, 보전 모듈(24)은 유효성 모듈(30)이 제1 물리적 블록 어드레스에 대한 유효성 값을 논리 '0'으로 클리어하고/하거나 제2 물리적 블록 어드레스에 대한 유효성 값을 논리 '1'로 설정함과 동시에(예컨대, 미세적으로) 논리적 블록 어드레스를 제2 물리적 블록 어드레스와 연관시키도록 논리적-물리적 테이블을 갱신할 수 있다.
본 개시에서 설명된 기술은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 적어도 부분적으로 구현될 수 있다. 예를 들면, 설명될 기술의 다양한 태양은 하나 이상의 마이크로프로세서, 디지털 신호 프로세서(DSP), 응용 주문형 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA), 또는 임의의 다른 동등한 통합형 또는 개별형 논리 회로뿐만 아니라, 그러한 구성요소의 임의의 조합을 포함하는 하나 이상의 프로세서 내에서 구현될 수 있다. 용어 "프로세서" 또는 "처리 회로"는 일반적으로 단독으로 또는 다른 논리 회로와 조합한 임의의 전술한 논리 회로, 또는 임의의 다른 동등한 회로를 지칭할 수 있다. 하드웨어를 포함하는 제어 유닛은 또한 본 개시의 기술 중 하나 이상을 수행할 수도 있다.
그러한 하드웨어, 소프트웨어 및 펌웨어는 본 개시에서 설명된 다양한 기술을 지원하도록 동일한 장치 내에서 또는 별도의 장치 내에서 구현될 수 있다. 또한, 임의의 설명된 유닛, 모듈 또는 구성요소는 함께 구현되거나, 별개이지만 상호 운용되는 논리 장치로서 별도로 구현될 수 있다. 모듈 또는 유닛으로서의 상이한 특징부의 묘사는 상이한 기능적 측면을 강조하도록 의도되고, 그러한 모듈 또는 유닛이 별개의 하드웨어, 펌웨어 또는 소프트웨어 구성요소에 의해 실현되어야 한다는 것을 반드시 시사하는 것은 아니다. 오히려, 하나 이상의 모듈 또는 유닛과 연관된 기능은 별개의 하드웨어, 펌웨어 또는 소프트웨어 구성요소에 의해 수행되거나, 공통 또는 별개의 하드웨어, 펌웨어 또는 소프트웨어 구성요소 내에 통합될 수 있다.
본 개시에서 설명된 기술은 또한, 명령이 인코딩된 컴퓨터-판독가능 저장 매체를 포함하는 제조 물품으로 구현되거나 인코딩될 수도 있다. 인코딩된 컴퓨터-판독가능 저장 매체를 포함하는 제조 물품에 내장되거나 인코딩된 명령어는, 컴퓨터-판독가능 저장 매체에 포함되거나 인코딩된 명령어가 하나 이상의 프로세서에 의해 실행되는 경우와 같이, 하나 이상의 프로그램가능 프로세서 또는 다른 프로세서가 본원에 개시된 기술 중 하나 이상을 구현하게 할 수 있다. 컴퓨터-판독가능 저장 매체는 랜덤 액세스 메모리(random access memory; RAM), 읽기 전용 메모리(read only memory; ROM), 프로그램가능 읽기 전용 메모리(programmable read only memory; PROM), 소거 가능한 프로그램가능 읽기 전용 메모리(erasable programmable read only memory; EPROM), 전기적으로 소거 가능한 프로그램가능 읽기 전용 메모리(electronically erasable programmable read only memory; EEPROM), 플래시 메모리, 하드디스크, 콤팩트디스크 ROM(CD-ROM), 플로피 디스크, 카세트, 자기 매체, 광학 매체, 또는 다른 컴퓨터 판독가능 매체를 포함할 수 있다. 일부 예에서, 제조 물품은 하나 이상의 컴퓨터-판독가능 저장 매체를 포함할 수 있다.
일부 예에서, 컴퓨터-판독가능 저장 매체는 비일시적 매체(non-transitory medium)를 포함할 수 있다. 용어 "비일시적"은 저장 매체가 반송파 또는 전송 신호로 구현되지 않는 것을 나타낼 수 있다. 특정 예에서, 비일시적 저장 매체는 (예컨대, RAM 또는 캐시에) 시간 경과에 따라 변할 수 있는 데이터를 저장할 수 있다.
다양한 예가 설명되었다. 이러한 예 및 다른 예는 하기의 청구범위의 범위 내에 있다.

Claims (20)

  1. 저장 장치의 컨트롤러에 의해, 상기 저장 장치의 제1 물리적 블록 어드레스와 연관된 제1 블록을 적어도 포함하는 상기 저장 장치의 제1 블록세트에 대한 가비지 컬렉션 동작을 실행하는 명령을 수신하는 단계, 및
    상기 제1 블록세트에 대한 가비지 컬렉션 동작을 실행하는 명령을 수신하는 것에 응답하여:
    상기 컨트롤러에 의해, 그리고 비휘발성 메모리에 저장된 유효성
    테이블에 기초하여, 상기 제1 블록세트의 제1 블록에 저장된 데이터가 유효한지를 결정하는 단계;
    상기 제1 블록세트의 제1 블록에 저장된 데이터가 유효한 것으로
    결정하는 것에 응답하여, 상기 컨트롤러에 의해, 상기 제1 블록으로부 터의 데이터가 상기 저장 장치의 제2 블록세트의 제2 블록에 기록되게 하는 단계; 및
    상기 제1 블록으로부터의 데이터가 상기 제2 블록에 기록되게 하는
    것에 응답하여, 상기 컨트롤러에 의해, 상기 제1 블록에 저장된
    데이터가 무효하다고 표시하고 상기 제2 블록에 저장된 데이터가
    유효하다고 표시하도록 상기 유효성 테이블을 수정하는 단계를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 컨트롤러는 하드웨어 가속기 엔진을 포함하며,
    상기 제1 블록에 저장된 데이터가 유효한지를 결정하는 단계는, 상기 하드웨어 가속기 엔진에 의해, 상기 제1 블록에 저장된 데이터가 유효한지를 결정하는 단계를 포함하는, 방법.
  3. 제2항에 있어서,
    상기 제1 블록에 저장된 데이터가 유효한 것으로 결정하는 것에 응답하여, 상기 하드웨어 가속기 엔진에 의해, 상기 제1 블록과 연관된 제1 물리적 블록 어드레스를 출력하는 단계를 추가로 포함하고,
    상기 제1 블록과 연관된 제1 물리적 블록 어드레스를 출력하는 것에 응답하여, 데이터를 기록하는 것이 추가로 이루어지는, 방법.
  4. 제2항에 있어서,
    상기 제1 블록에 저장된 데이터가 유효한 것으로 결정하는 것에 응답하여, 상기 하드웨어 가속기 엔진에 의해, 상기 제1 블록에 있는 데이터를 판독하게 하는 단계; 및
    상기 하드웨어 가속기 엔진에 의해, 그리고 상기 제1 블록으로부터 판독된 데이터에 기초하여, 상기 제1 블록과 연관된 논리적 블록 어드레스를 출력하는 단계를 추가로 포함하는, 방법.
  5. 제4항에 있어서,
    상기 제1 블록과 연관된 논리적 블록 어드레스를 출력하는 것 및 상기 제1 블록으로부터의 데이터가 상기 제2 블록에 기록되게 하는 것에 응답하여, 상기 컨트롤러에 의해, 상기 논리적 블록 어드레스와 연관된 데이터가 상기 제2 블록에 저장되어 있다고 표시하도록 간접 테이블을 갱신하는 단계를 추가로 포함하는, 방법.
  6. 제1항에 있어서,
    상기 제1 블록세트의 제1 블록에 저장된 데이터가 유효한지를 결정하는 단계는,
    상기 유효성 테이블에 의해 상기 제1 블록과 연관된 제1 물리적
    위치에 매핑된 유효성 값을, 상기 컨트롤러에 의해, 결정하는 단계;

    상기 컨트롤러에 의해, 유효 값을 표시하는 유효성 값에 기초하여
    상기 제1 블록에 저장된 데이터가 유효한 것으로 결정하는 단계를 포함하는, 방법.
  7. 제1항에 있어서,
    상기 제1 블록세트에 대한 가비지 컬렉션 동작을 실행하는 명령을 수신하는 것에 응답하여, 상기 컨트롤러에 의해, 그리고 상기 비휘발성 메모리에 저장된 유효성 테이블에 기초하여, 상기 제1 블록세트의 각 블록에 저장된 데이터가 유효한지를 결정하는 단계를 포함하는, 방법.
  8. 복수의 블록세트로 논리적으로 분할된 적어도 하나의 메모리 장치; 및
    컨트롤러를 포함하는 저장 장치로서, 상기 컨트롤러는,
    상기 저장 장치의 제1 물리적 블록 어드레스와 연관된 제1 블록을 적어도 포함하는 상기 복수의 블록세트 중 제1 블록세트에 대한 가비지 컬렉션 동작을 실행하는 명령을 수신하며,
    상기 제1 블록세트에 대한 가비지 컬렉션 동작을 실행하는 명령을 수신하는 것에 응답하여:
    비휘발성 메모리에 저장된 유효성 테이블에 기초하여, 상기 제1 블록 세트의 제1 블록에 저장된 데이터가 유효한지를 결정하고;
    상기 제1 블록세트의 제1 블록에 저장된 데이터가 유효한 것으로
    결정하는 것에 응답하여, 상기 제1 블록으로부터의 데이터가 상기
    복수의 블록세트 중 제2 블록세트의 제2 블록에 기록되게 하고;
    상기 제1 블록으로부터의 데이터가 상기 제2 블록에 기록되게 하는
    것에 응답하여, 상기 제1 블록에 저장된 데이터가 무효하다고
    표시하고 상기 제2 블록에 저장된 데이터가 유효하다고 표시하도록
    상기 유효성 테이블을 수정하도록 구성되는, 저장 장치.
  9. 제8항에 있어서,
    상기 컨트롤러는 하드웨어 가속기 엔진을 포함하며,
    상기 하드웨어 가속기 엔진은 상기 제1 블록에 저장된 데이터가 유효한지를 결정하도록 구성되는, 저장 장치.
  10. 제9항에 있어서,
    상기 하드웨어 가속기 엔진은,
    상기 제1 블록에 저장된 데이터가 유효한 것으로 결정하는 것에 응답하여, 상기 제1 블록과 연관된 제1 물리적 블록 어드레스를 출력하도록 추가로 구성되고,
    상기 제1 블록과 연관된 제1 물리적 블록 어드레스를 출력하는 것에 응답하여, 데이터를 기록하는 것이 추가로 이루어지는, 저장 장치.
  11. 제10항에 있어서,
    상기 하드웨어 가속기 엔진은,
    상기 제1 블록에 저장된 데이터가 유효한 것으로 결정하는 것에 응답하여, 상기 제1 블록에 있는 데이터를 판독하게 하고;
    상기 제1 블록으로부터 판독된 데이터에 기초하여, 상기 제1 블록과 연관된 논리적 블록 어드레스를 출력하도록 추가로 구성되는, 저장 장치.
  12. 제11항에 있어서,
    상기 컨트롤러는,
    상기 제1 블록과 연관된 논리적 블록 어드레스를 출력하는 것 및 상기 제1 블록으로부터의 데이터가 상기 제2 블록에 기록되게 하는 것에 응답하여, 상기 논리적 블록 어드레스와 연관된 데이터가 상기 제2 블록에 저장되어 있다고 표시하도록 간접 테이블을 갱신하도록 추가로 구성되는, 저장 장치.
  13. 제8항에 있어서,
    상기 컨트롤러는,
    상기 유효성 테이블에 의해 상기 제1 블록과 연관된 제1 물리적 위치에 매핑된 유효성 값을 결정하고;
    유효 값을 표시하는 유효성 값에 기초하여 상기 제1 블록에 저장된 데이터가 유효한 것으로 결정하도록 추가로 구성되는, 저장 장치.
  14. 제13항에 있어서,
    상기 유효성 값은 단일 비트인, 저장 장치.
  15. 실행시에,
    저장 장치의 제1 물리적 블록 어드레스와 연관된 제1 블록을 적어도 포함하는 상기 저장 장치의 제1 블록세트에 대한 가비지 컬렉션 동작을 실행하는 명령을 수신하며,
    상기 제1 블록세트에 대한 가비지 컬렉션 동작을 실행하는 명령을 수신하는 것에 응답하여:
    비휘발성 메모리에 저장된 유효성 테이블에 기초하여, 상기 제1 블록 세트의 제1 블록에 저장된 데이터가 유효한지를 결정하고;
    상기 제1 블록세트의 제1 블록에 저장된 데이터가 유효한 것으로
    결정하는 것에 응답하여, 상기 제1 블록으로부터의 데이터가 상기
    저장 장치의 제2 블록세트의 제2 블록에 기록되게 하고;
    상기 제1 블록으로부터의 데이터가 상기 제2 블록에 기록되게 하는
    것에 응답하여, 상기 제1 블록에 저장된 데이터가 무효하다고
    표시하고 상기 제2 블록에 저장된 데이터가 유효하다고 표시하도록
    상기 유효성 테이블을 수정하도록,
    저장 장치의 하나 이상의 프로세서를 구성하는 명령어를 포함하는, 컴퓨터-판독가능 저장 매체.
  16. 제15항에 있어서,
    실행시에,
    상기 유효성 테이블에 의해 상기 제1 블록과 연관된 제1 물리적 위치에 매핑된 유효성 값을 결정하고;
    유효 값을 표시하는 유효성 값에 기초하여 상기 제1 블록에 저장된 데이터가 유효한 것으로 결정하도록,
    저장 장치의 하나 이상의 프로세서를 구성하는 명령어를 추가로 포함하는, 컴퓨터-판독가능 저장 매체.
  17. 제15항에 있어서,
    상기 유효성 값은 단일 비트인, 컴퓨터-판독가능 저장 매체.
  18. 저장 장치의 제1 물리적 블록 어드레스와 연관된 제1 블록을 적어도 포함하는 상기 저장 장치의 제1 블록세트에 대한 가비지 컬렉션 동작을 실행하는 명령을 수신하기 위한 수단;
    비휘발성 메모리에 저장된 유효성 테이블에 기초하여, 상기 제1 블록세트의 제1 블록에 저장된 데이터가 유효한지를 결정하기 위한 수단;
    상기 제1 블록세트의 제1 블록에 저장된 데이터가 유효한 것으로 결정하는 것에 응답하여, 상기 제1 블록으로부터의 데이터가 상기 저장 장치의 제2 블록세트의 제2 블록에 기록되게 하기 위한 수단; 및
    상기 제1 블록으로부터의 데이터가 상기 제2 블록에 기록되게 하는 것에 응답하여, 상기 제1 블록에 저장된 데이터가 무효하다고 표시하고 상기 제2 블록에 저장된 데이터가 유효하다고 표시하도록 상기 유효성 테이블을 수정하기 위한 수단을 포함하는, 시스템.
  19. 제18항에 있어서,
    상기 제1 블록에 저장된 데이터가 유효한 것으로 결정하는 것에 응답하여, 상기 제1 블록과 연관된 제1 물리적 블록 어드레스를 출력하기 위한 수단을 추가로 포함하며,
    상기 제1 블록과 연관된 제1 물리적 블록 어드레스를 출력하는 것에 응답하여, 데이터를 기록하는 것이 추가로 이루어지는, 시스템.
  20. 제18항에 있어서,
    상기 제1 블록에 저장된 데이터가 유효한 것으로 결정하는 것에 응답하여, 상기 제1 블록에 있는 데이터를 판독하기 위한 수단; 및
    상기 제1 블록으로부터 판독된 데이터에 기초하여, 상기 제1 블록과 연관된 논리적 블록 어드레스를 출력하기 위한 수단을 추가로 포함하는, 시스템.
KR1020170026374A 2016-04-15 2017-02-28 가비지 컬렉션에 대한 유효성 추적 KR20170118594A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/130,448 2016-04-15
US15/130,448 US20170300249A1 (en) 2016-04-15 2016-04-15 Validity tracking for garbage collection

Publications (1)

Publication Number Publication Date
KR20170118594A true KR20170118594A (ko) 2017-10-25

Family

ID=59980698

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170026374A KR20170118594A (ko) 2016-04-15 2017-02-28 가비지 컬렉션에 대한 유효성 추적

Country Status (4)

Country Link
US (1) US20170300249A1 (ko)
KR (1) KR20170118594A (ko)
CN (1) CN107301016B (ko)
DE (1) DE102017104158A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170133250A (ko) * 2016-05-25 2017-12-05 삼성전자주식회사 듀얼 프로그램 동작을 사용하는 불휘발성 메모리 장치, 그것을 포함하는 메모리 시스템 및 그들의 동작 방법
KR102062045B1 (ko) * 2018-07-05 2020-01-03 아주대학교산학협력단 비휘발성 메모리 장치의 가비지 컬렉션 방법

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8327185B1 (en) 2012-03-23 2012-12-04 DSSD, Inc. Method and system for multi-dimensional raid
US10175896B2 (en) 2016-06-29 2019-01-08 Western Digital Technologies, Inc. Incremental snapshot based technique on paged translation systems
US11216361B2 (en) 2016-06-29 2022-01-04 Western Digital Technologies, Inc. Translation lookup and garbage collection optimizations on storage system with paged translation table
US10229048B2 (en) 2016-06-29 2019-03-12 Western Digital Technologies, Inc. Unified paging scheme for dense and sparse translation tables on flash storage systems
US10353813B2 (en) 2016-06-29 2019-07-16 Western Digital Technologies, Inc. Checkpoint based technique for bootstrapping forward map under constrained memory for flash devices
US10235287B2 (en) 2016-06-29 2019-03-19 Western Digital Technologies, Inc. Efficient management of paged translation maps in memory and flash
US10684795B2 (en) * 2016-07-25 2020-06-16 Toshiba Memory Corporation Storage device and storage control method
US10614019B2 (en) 2017-04-28 2020-04-07 EMC IP Holding Company LLC Method and system for fast ordered writes with target collaboration
US10289491B1 (en) 2017-04-28 2019-05-14 EMC IP Holding Company LLC Method and system for implementing multi-dimensional raid in an extensible storage array to optimize performance
US10339062B2 (en) 2017-04-28 2019-07-02 EMC IP Holding Company LLC Method and system for writing data to and read data from persistent storage
US10466930B2 (en) 2017-04-28 2019-11-05 EMC IP Holding Company LLC Method and system for fast ordered writes with atomic multicast
US10795828B2 (en) 2018-08-10 2020-10-06 Micron Technology, Inc. Data validity tracking in a non-volatile memory
KR20200073604A (ko) * 2018-12-14 2020-06-24 에스케이하이닉스 주식회사 컨트롤러 및 그 동작 방법
US10970222B2 (en) * 2019-02-28 2021-04-06 Micron Technology, Inc. Eviction of a cache line based on a modification of a sector of the cache line
TWI724550B (zh) * 2019-09-19 2021-04-11 慧榮科技股份有限公司 資料儲存裝置以及非揮發式記憶體控制方法
CN112650691A (zh) * 2019-10-10 2021-04-13 戴尔产品有限公司 基于改变频率的分层数据存储和垃圾回收系统
CN113467697A (zh) * 2020-03-30 2021-10-01 瑞昱半导体股份有限公司 存储器控制器与数据处理方法
US11630592B2 (en) * 2020-11-12 2023-04-18 Western Digital Technologies, Inc. Data storage device database management architecture
WO2022120527A1 (en) * 2020-12-07 2022-06-16 Micron Technology, Inc. Techniques for accessing managed nand
US11467763B2 (en) * 2021-01-20 2022-10-11 Micron Technology, Inc. Valid data aware media reliability scanning for memory sub-blocks
WO2022193231A1 (en) * 2021-03-18 2022-09-22 Micron Technology, Inc. Dynamic memory management operation

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008070814A2 (en) * 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for a scalable, composite, reconfigurable backplane
US9026716B2 (en) * 2010-05-12 2015-05-05 Western Digital Technologies, Inc. System and method for managing garbage collection in solid-state memory
KR101934517B1 (ko) * 2012-08-31 2019-01-03 삼성전자주식회사 메모리 컨트롤러, 이의 동작 방법, 및 상기 메모리 컨트롤러를 포함하는 시스템
KR102072829B1 (ko) * 2013-06-14 2020-02-03 삼성전자주식회사 저장 장치 및 그것을 포함하는 데이터 저장 시스템의 글로벌 가비지 컬렉션 방법
CN104298605A (zh) * 2013-07-17 2015-01-21 光宝科技股份有限公司 固态储存装置中用于垃圾搜集动作的区块分组方法
KR102088403B1 (ko) * 2013-08-08 2020-03-13 삼성전자 주식회사 저장장치, 이를 포함하는 컴퓨터 시스템 및 이의 동작 방법
TWI585770B (zh) * 2015-08-11 2017-06-01 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170133250A (ko) * 2016-05-25 2017-12-05 삼성전자주식회사 듀얼 프로그램 동작을 사용하는 불휘발성 메모리 장치, 그것을 포함하는 메모리 시스템 및 그들의 동작 방법
US11314441B2 (en) 2016-05-25 2022-04-26 Samsung Electronics Co., Ltd. Block cleanup: page reclamation process to reduce garbage collection overhead in dual-programmable NAND flash devices
KR102062045B1 (ko) * 2018-07-05 2020-01-03 아주대학교산학협력단 비휘발성 메모리 장치의 가비지 컬렉션 방법

Also Published As

Publication number Publication date
DE102017104158A1 (de) 2017-10-19
CN107301016B (zh) 2020-10-09
US20170300249A1 (en) 2017-10-19
CN107301016A (zh) 2017-10-27

Similar Documents

Publication Publication Date Title
CN107301016B (zh) 用于垃圾收集的有效性跟踪
CN107632939B (zh) 用于存储装置的映射表
CN106445724B (zh) 与受保护数据分开存储奇偶校验数据
US9927999B1 (en) Trim management in solid state drives
KR101933763B1 (ko) 연판정 디코딩을 위한 물리적 페이지 어드레스들을 상관시키는 것
US10275310B2 (en) Updating exclusive-or parity data
US10379747B2 (en) Automated latency monitoring
US20160342412A1 (en) Managing wear of system areas of storage devices
US10459803B2 (en) Method for management tables recovery
US9582192B2 (en) Geometry aware block reclamation
US20180074701A1 (en) Incremental background media scan
US10031689B2 (en) Stream management for storage devices
US20180024751A1 (en) Metadata management on a storage device
US11733920B2 (en) NVMe simple copy command support using dummy virtual function
US9836215B2 (en) Real time protocol generation
KR20220130526A (ko) 메모리 시스템 및 그 동작 방법
CN113391760A (zh) 分区存储中的快照管理
US20240078184A1 (en) Transparent Host Memory Buffer
US11853554B2 (en) Aligned and unaligned data deallocation
US20230297277A1 (en) Combining Operations During Reset
US20230315285A1 (en) Storage Optimization Of CAT Table During Background Operations
WO2024072499A1 (en) Finding and releasing trapped memory in ulayer
WO2023244350A1 (en) Flash translation layer mapping for large capacity data storage devices
KR20240006932A (ko) 메모리 컨트롤러 및 이를 포함하는 저장 장치

Legal Events

Date Code Title Description
A201 Request for examination