KR20150105323A - 데이터 스토리지 방법 및 시스템 - Google Patents

데이터 스토리지 방법 및 시스템 Download PDF

Info

Publication number
KR20150105323A
KR20150105323A KR1020157017953A KR20157017953A KR20150105323A KR 20150105323 A KR20150105323 A KR 20150105323A KR 1020157017953 A KR1020157017953 A KR 1020157017953A KR 20157017953 A KR20157017953 A KR 20157017953A KR 20150105323 A KR20150105323 A KR 20150105323A
Authority
KR
South Korea
Prior art keywords
data
command
type
memory
physical address
Prior art date
Application number
KR1020157017953A
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 KR20150105323A publication Critical patent/KR20150105323A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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
    • 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

Abstract

반도체 타입의 비휘발성 메모리에 데이터를 저장하는 시스템 및 방법이 기술되며, 데이터의 물리적 저장 어드레스는 파일 시스템과 같은 사용자 애플리케이션에 이용될 수 있고, 사용자에 할당될 수 있는 메모리 시스템의 특징들은 물리적 또는 논리적 기반에 성능, 크기, 중복, 등과 같이 별개로 특징될 수 있다. 메모리 시스템에 대한 읽기 요청은 메모리 시스템에서 논리-물리적 어드레스 룩업을 이용하기보다는 읽기 요청시에 포함된 물리적 어드레스에 액세스함으로써 이용될 수 있다. 가비지 컬렉션 동작은 사용자에 알려진 물리적 어드레스와 데이터의 실제 물리적 위치 간에 관계를 보존하기 위해 가상물리블록 기반으로 수행될 수 있다.

Description

데이터 스토리지 방법 및 시스템{METHOD AND SYSTEM FOR DATA STORAGE}
본 발명은 2013년 1월 8일자로 출원된 발명의 명칭이 "Method and System for Data Storage"인 가출원 No. 61/750,133의 우선권을 주장하며, 상기 문헌은 본 명세서에 참조로 합체되어 있다.
"메모리 시스템" 및 "스토리지 시스템"이라는 용어는 전체적으로 본 명세서에서 서로 바꿔쓸 수 있다. 기존의 용어는 대형 시스템의 온라인 및 니어-라인(near-line) 데이터 중 대부분이 회전 디스크 드라이버라기보다는 FLASH 메모리 어레이 또는 고체상태 디스크(SSD)와 같은 고체상태 디바이스에 저장됨에 따라 변하고 있다. 저장시스템은 주요 디스크 기반이며 데이터 검색 및 쓰기 지연이 디스크 드라이버의 기계적 성능에 의해 지배되도록 고안되었다. 종종 디스크들은 네트워크 연결을 통해 프로세서에 연결되었다. 메모리 시스템은 데이터를 필요로 하는 프로세서에 직접 부착되게 또는 처리 속도에 있어 병목을 거의 일으키지 않을 만큼 충분히 지연이 낮게 고안되었다.
이런 어레이의 경제성과 저장 용량이 디스크 기반 시스템과 직접 경쟁하기 시작하는 한편 FLASH 메모리 어레이의 지연이 디스크의 지연보다 상당히 더 낮을 수 있기 때문에, "메모리 시스템" 및 "스토리지 시스템" 간의 구별이 약간 애매해 졌다. 여기서는 직집 사용 서버에 또는 소정의 네트워크 연결을 통해 연결되는지 간에 고체상태 메모리 시스템을 기술하기 위해 용어들을 이용한다.
SSD라는 용어는 산업표준에 따르는 폼팩터와 인터페이스 프로토콜을 갖는 플러그식 모듈을 의미할 수 있다. 이런 산업표준은 시간에 따라 변하므로, 물리적 또는 전기적 면에서 SSD의 특징이 제조업체에 의해 유사하게 변경되지 않을 것이라 여기서 생각하지 않는다. SSD라는 용어는 또한 이런 디바이스들이 산업표준 또는 저장 기술의 진화단계를 나타낼 수 있기 때문에 메모리 기술, 폼팩터 또는 인터페이스 프로토콜에 무관하게 영구 저장특징을 갖는 임의의 반도체 메모리 시스템을 기술하는데 사용될 수 있다.
가령 논리블록어드레스(LBA)가 사용될 경우 "논리 어드레스"라는 용어는 메모리 시스템에 저장된 데이터를 나타내기 위해 사용자 프로그램, 서버, 파일 시스템 등에 전해지거나 사용되는 어드레스 공간으로 이해해야 한다. 가령, 물리적블록어드레스(PBA)로서 사용될 경우 "물리적 어드레스"라는 용어는 메모리 시스템에 저장된 데이터를 위치시키기 위해 메모리 시스템에 의해 전해지거나 사용되는 어드레스 공간으로 이해해야 한다. LBA 및 PBA라는 용어는 LBA와 PBA에 저장된 정보가 균일하게 이로써 관련되도록 다수의 간접 레벨들을 갖는 프로세스의 종점을 나타낼 수 있다.
비휘발성 스토리지에 영구 스토리지로서 플래시 메모리를 갖는 SSD에서, 사용자에 의해 SSD에 공급되는 것으로 논리블록어드레스(LBA)와 정보가 SSD에 저장되는 물리적블록어드레스(PBA) 간에 관계는 플래시 변환계층(Flash Translation Layer,FTL)에 의해 관리될 수 있다. L2P 테이블과 같은 간접 테이블이 이 관계를 제공하는 SSD에 저장될 수 있으며, 이는 해당기술분야에 공지된 바와 같이 FTL이 가비지 컬렉션과 웨어 레벨링으로서 이러한 오버헤드 기능들을 수행하기 때문에 자동으로 변경될 수 있다. 이와 같이, 물리적 어드레스 공간은 사용자에 노출되지 않는다.
PBA라는 용어는 LBA에 언급된 데이터가 저장된 메모리 시스템에서 물리적 (블록) 어드레스에 대한 두문자로 사용될 수 있다. 대표적으로 LBA를 갖는 데이터의 페이지는 LBA 데이터 크기 및 관련된 메타데이터와 데이터 크기가 동일한 물리적 페이지와 관련 있다. LBA 및 PBA와 관련된 메타데이터는 몇몇 공통속성들을 공유할 수 있으나, 데이터의 논리적 측면 또는 저장 측면들과 관련된 기능들을 이용할 수 있고 따라서 다른 크기와 필드를 가질 수 있다. 데이터의 논리 및 물리적 표현의 메타데이터는 데이터에 액세스를 유효하게 하거나, 데이터의 유효성을 보장하거나 등등을 하기 위해 저장되거나 계산된 몇몇 공통 속성들을 가질 수 있다.
FLASH 메모리 시스템의 동작을 설명하는데 있어 "블록"이라는 용어의 추가적 사용이 있음으로 인해 혼동이 발생할 수 있다. 아키텍쳐적으로, FLASH 메모리 회로는 LBA가 참조하고 "블록"으로 구성된 해당하는 데이터 양을 저장하는 한 크기(가령 2KB)의 복수의 물리적 페이지들로 구성될 수 있다. 블록은, 가령, 256 페이지를 포함할 수 있다. 현재 가용한 NAND FLASH 메모리 회로는 블록의 개별 페이지들이 소거될 수 없는 속성들을 갖는다; 블록의 페이지들 중 어느 하나가 소거될 수 있다면 전체 블록이 소거된다. 더욱이, 각 블록의 페이지들은 단조 순서로 작성되며, 페이지가 스킵되면, 페이지는 전체 블록을 소거하기 전에 연이어 작성될 수 없다. 복수의 페이지들을 포함한 블록이 본 명세서에 기술될 경우, 당업자는 고정된 다수의 페이지들을 포함한 이와 같은 블록과 블록내 특정 페이지를 나타내는 PBA 간에 차이를 알 것이다. 몇몇 상황에서, "물리적 어드레스"라는 용어가 사용되고 이 용어를 블록 또는 PBA라고 한다. 물리적 어드레스의 페이지들을 포함한 블록들은 블록 어드레스 또는 블록 넘버를 갖는 것으로 기술될 수 있고, 이런 어드레스는 사전에 할당되거나 가상화될 수 있다. 몇몇 상황에서, 물리적 어드레스는 가령, 블록 넘버와 블록내 물리적 페이지 어드레스를 포함할 수 있다.
불가피하게, FLASH 메모리 어레이와 같은, 레거시 디스크 기술 및 고체상태 메모리 시스템이라는 용어는 섹터, 페이지, 블록 등의 정의에서 상반된다. 그러므로, 섹터는 대부분 기존의 가상화 접근을 대표하기 때문에 스토리지가 레거시 관점으로부터 시각화될 경우 논리블록어드레스(LBA)를 갖는 반면, 고체상태 메모리의 내부 동작은 블록을 매우 많은 페이지들(가령, 128 LBA)로서 취급할 수 있고, 각 페이지는 크기(가령, 512b)를 갖는 섹터의 개수(가령, 4개)를 포함한다. 메모리 시스템의 펌웨어 또는 소프트웨어가 이들 구성들을 수용할 필요가 있듯이, 당업자는 기술의 현재 상태에서 용어의 의미와 사용을 이해할 것이며 이에 따라 개념을 적용할 것이다.
FLASH 메모리 디바이스는, 가령, 메모리 디바이스의 각 셀에서 1비트, 2비트 또는 3비트 이상의 데이터의 저장을 나타내는 SLC(Single Level Cell), MLC(Multi Level Cell), TLC(Triple Level Cell)를 특징으로 할 수 있다. 속도, 저장용량, 및 디바이스의 내구성이 다른 반면, 본 명세서에서 본원은 이들 타입의 메모리들 중 어느 하나뿐만 아니라 현재 있거나 이 다음에 개발될 수 있는 다른 고체상태 메모리 기술들에도 적용될 수 있다.
디지털 데이터를 저장하는 디바이스 및 방법이 개시되며, 상기 디바이스는 블록으로 구성된 비휘발성 반도체 메모리를 갖는 프로세서를 가지며, 각 블록은 데이터가 저장될 수 있는 복수의 물리적 위치들을 갖는다. 디바이스는 사용자 또는 호스트와 소통하기 위한 데이터 인터페이스와 버퍼 또는 캐시로서 사용되는 휘발성 메모리를 가질 수 있다.
일태양으로, 프로세서는 데이터 인터페이스를 통해 명령 및 데이터를 수신하고 비휘발성 반도체 메모리에서 데이터의 저장을 관리하도록 구성될 수 있다. 사용자로부터 수신된 데이터를 읽기 위한 명령은 읽기 및 쓰기 명령 타입과 관련된 데이터 파라미터들을 결정하기 위해 평가될 수 있다.
읽기 명령을 위해, 상기 명령은 가령 제 1 타입의 읽기 데이터 명령 또는 제 2 타입의 읽기 데이터 명령일 수 있다. 명령은 명령 식별자를 기초로 또는 명령과 관련된 인수(argument)들에 의해 구별될 수 있다.
일태양으로, 읽기 데이터 명령은 상기 명령이 논리 어드레스를 포함하고 물리적 어드레스를 포함하지 않을 경우 제 1 타입이 된다; 읽기 데이터 명령은 상기 명령이 데이터가 메모리에 저장된 적어도 하나의 물리적 어드레스를 포함할 경우 제 2 타입이 된다.
제 1 타입의 읽기 데이터 명령에 응답해, 데이터의 물리적 어드레스는 논리적에서 물리적으로의 관계 테이블(L2P)의 형태일 수 있는 FTL(Flash Translation Layer)과 관련될 수 있는 것으로서 가령 인디렉션 테이블(indriection table)을 이용해 결정된다. 데이터는 비휘발성 메모리에 있는 물리적 어드레스로부터 데이터를 검색되고, 사용자에 반환될 것이다.
제 2 타입의 읽기 데이터 명령에 응답해, 데이터는 비휘발성 메모리에 있는 물리적 어드레스로부터 검색되고, 사용자에 반환될 수 있다. 가령, L2P 테이블은 오고갈 필요가 없을 수 있으나, 가령 가비지 컬렉션을 용이하게 하도록 어드레싱의 인디렉션이 더 있으면, 물리적 가상 테이블이 있을 수 있다. 이 테이블은 또한 L2P 테이블에 의해 사용될 수 있다. 테이블은 일반적으로 액세스 속도에 대해 비휘발성 메모리 디바이스의 버퍼 메모리와 같은 휘발성 메모리에 유지되나, 이들은 대표적으로 셧다운 동안 데이터를 보존하기 위해 체크포인트되거나, 그렇지 않으면 시스템 시작시 재구성된다.
데이터 무결성을 유지하기 위해, 사용자는 읽기 명령과 결부해 메타데이터를 공급할 수 있고, 프로세서는 적어도 수신된 메타데이터의 일부를 비휘발성 메모리로부터 읽어진 데이터와 관련된 메타데이터와 비교한다. 이런 데이터는 명백할 수 있거나 저장된 데이터로부터 도출된 메타데이터일 수 있고, 데이터가 저장된 메모리 시스템의 일부의 속성을 또한 식별할 수 있다. 공급된 메타데이터와 읽기 메타데이터가 일치하면, 읽기 데이터가 사용자에 반환된다. 그렇지 않으면 에러 경우로 처리된다.
또 다른 태양으로, 프로세서는 쓰기 명령이 가령 제 1 또는 제 2 타입인지 판단하기 위해 사용자로부터 쓰기 데이터에 대한 명령을 해석하도록 프로그램된다. 쓰기 명령이 논리 어드레스를 포함하나 데이터가 저장되는 물리적 어드레스를 포함하지 않을 경우, 쓰기 명령은 제 1 타입이고, 쓰기 명령이 데이터가 비휘발성 메모리에 저장되는 적어도 하나의 물리적 어드레스를 포함할 경우, 쓰기 명령은 제 2 타입이다.
제 1 타입의 쓰기 명령에 응답해, 제 1 타입의 쓰기 명령과 관련된 데이터가 저장되는 비휘발성 메모리에 물리적 어드레스가 프로토콜에 따라 결정되고, 상기 물리적 어드레스는 인디렉션 테이블에 있는 논리 어드레스와 연관될 수 있다.
제 2 타입의 쓰기 명령에 응답해, 제 2 타입의 쓰기 명령과 관련된 데이터가 저장되는 비휘발성 메모리에 물리적 어드레스가 프로토콜에 따라 결정되고, 사용자에 대한 응답 메시지에 상기 물리적 어드레스를 포함한다.
제 2 쓰기 명령의 메타데이터의 일부가 제 2 쓰기 명령에 제공된 물리적 위치에 이전에 저장된 메타데이터의 관련된 부분과 비교될 수 있어 상기 명령의 동작에 의해 변경되거나 구식이 된 데이터가 실제로 수정한 데이터임을 입증한다. 메타데이터가 일치하면, 교체된 데이터의 수정한 물리적 위치가 액세스되고 처리가 수행될 수 있다. 그렇지 않으면, 에러 경우가 존재한다.
제 2 타입의 쓰기 명령이 논리 어드레스를 포함하면, 논리 어드레스는 쓰기 명령으로 제공된 데이터의 새 위치에 대해 저장될 메타데이터에 포함될 수 있다. 그러나, 이런 논리 어드레스가 제공되지 않으면, 프로세서에 의해 논리 어드레스가 제공될 수 있고 사용자에게 응답 메시지의 일부로서 반환될 수 있으며 이 논리 어드레스는 새로 저장된 데이터에 대한 메타데이터의 일부로서 저장될 수 있다. 메타데이터는 가령 논리 어드레스, 해당 물리적 어드레스에 저장된 데이터의 해시, 시퀀스 넘버, 또는 시간 값 중 적어도 하나를 포함할 수 있다.
비휘발성 메모리가 저장위치를 내부에 갖는 복수의 블록들로 구성되면, 블록 그룹은 논리 어드레스 범위 또는 물리 어드레스 범위 중 하나와 연관될 수 있어 RAID 타입, 가비지 컬렉션 프로토콜 등과 같은 공통속성들을 공유한다.
메모리의 물리적 또는 논리적 범위를 할당해제하도록 동작할 수 있는 TRIM 명령 타입을 포함한 메모리 디바이스에 의해 다른 타입의 명령들이 수신되고 처리될 수 있다. 이는 오래된 것으로 식별된 저장 위치들을 지정하는 것과 L2P 또는 다른 인디렉션 테이블로부터 엔트리를 제거하는 것을 포함할 수 있다. TRIM 명령은 메모리로부터 데이터를 삭제하도록 동작할 수 있어 파일 시스템이 저장 프로세스의 이런 측면을 관리한다. 이와 같이. TRIM 명령은 기본 논리 블록 어드레스와 범위, 기본 논리 블록 어드레스 및 많은 저장 위치들, 기본 어드레스 및 비트 맵 등을 포함할 수 있다. 물리적 위치 기반 상의 메모리 저장 위치를 노후화시킬 때 동일한 접근이 사용될 수 있다. 이들 상황에서, 데이터는 효과적으로 페기되고 가비지 컬렉션 동작 동안 소거되어 진다. 이 동작은 무효화되는 데이터 위치를 적절히 식별하는가에 의존하기 때문에, 메타데이터의 비교가 적어도 블록 기반으로 수행될 수 있다.
데이터 스토리지를 관리하는 방법은 프로세서, 휘발성 메모리 및 비휘발성 메모리를 갖는, 데이터를 저장하기 위한 비휘발성 메모리 디바이스를 제공하는 단계를 포함한다. 일태양으로, 프로세스는 읽기 데이터 명령이 제 1 타입의 읽기 데이터 명령인지 제 2 타입의 읽기 데이터 명령인지 판단하기 위해 사용자로부터 데이터를 읽기 위해 수신된 명령을 해석하도록 구성된다. 읽기 데이터 명령이 논리 어드레스를 포함하고 물리적 어드레스를 포함하지 않으면, 읽기 데이터 명령은 제 1 타입이고, 읽기 데이터 명령이 데이터가 메모리에 저장되는 물리적 어드레스를 적어도 포함할 경우, 읽기 데이터 명령은 제 2 타입이다.
제 1 타입의 읽기 데이터 명령에 응답해, 데이터의 물리적 어드레스를 결정하고, 비휘발성 메모리에 물리적 어드레스로부터 데이터를 검색하며, 상기 데이터를 사용자에 반환하거나; 제 2 타입의 읽기 데이터 명령에 응답해, 비휘발성 메모리에서 물리적 어드레스로부터 데이터를 검색하고 상기 데이터를 사용자에 반환한다. 논리 어드레스와 물리적 어드레스 간의 관계는 비휘발성 메모리에서 인디렉션 테이블에 유지된다.
일태양으로, 데이터를 검색하는 단계는 검색된 데이터에 대한 메타데이터를 검색하는 단계와, 검색된 데이터의 메타데이터의 적어도 일부를 제 1 또는 제 2 타입의 읽기 명령에서 적어도 메타데이터의 일부와 비교하는 단계를 포함할 수 있다.
일태양으로, 상기 방법은 쓰기 명령이 제 1 타입 또는 제 2 타입인지 판단하기 위해 사용자로부터 데이터를 쓰기 위한 명령을 해석하는 단계를 더 포함할 수 있다. 쓰기 명령은 상기 명령이 논리 어드레스를 포함하고 데이터가 저장되는 물리적 어드레스를 포함하지 않을 경우 제 1 타입이 될 수 있고, 상기 명령이 데이터가 메모리에 저장되는 물리적 어드레스를 적어도 포함할 경우 제 2 타입이 될 수 있다.
제 1 타입의 쓰기 명령에 응답해, 프로세서는 프로토콜에 따라 제 1 타입의 쓰기 명령과 관련된 데이터가 저장되는 비휘발성 메모리에서 물리적 어드레스를 결정하는 단계와 물리적 어드레스를 인디렉션 테이블에서 논리 어드레스와 연관시키는 단계를 수행할 수 있다.
제 2 타입의 쓰기 명령에 응답해, 제 2 타입의 쓰기 명령과 관련된 데이터가 프로토콜에 따라 저장될 수 있는 비휘발성 메모리내 물리적 어드레스를 결정하고, 사용자에 대한 응답 메시지에 그리고 인디렉션 테이블에 상기 물리적 어드레스를 포함하는 단계를 수행할 수 있다.
프로세서는 제 1 또는 제 2 타입의 쓰기 명령과 관련된 데이터를 비휘발성 메모리에 작성하는 단계; 및 제 1 또는 제 2 타입의 쓰기 명령과 관련된 메타데이터를 비휘발성 메모리에 작성하는 단계를 수행한다.
일태양으로, 상기 방법은 제 2 타입의 쓰기 명령의 메타데이터의 일부가 상기 제 2 타입의 쓰기 명령의 물리적 어드레스에 저장된 메타데이터의 일부와 일치하면 제 2 타입의 쓰기 명령에 대해 물리적 어드레스를 판단하는 것을 수행하는 단계를 포함한다. 제 2 타입의 쓰기 명령이 제 1 논리 어드레스를 포함하면, 결정된 물리적 어드레스에 대해 저장된 메타데이터의 일부로서 제 1 논리 어드레스를 이용하거나, 제 2 타입의 쓰기 명령이 제 1 논리 어드레스를 포함하지 않으면, 사용자에 대한 응답 메시지에 결정된 물리적 어드레스와 관련된 제 2 논리 어드레스를 제공하고, 결정된 물리적 어드레스에 저장된 데이터에 대한 메타데이터로서 제 2 논리 어드레스를 저장한다.
일태양으로, 메타데이터는 논리 어드레스, 상기 논리 어드레스에 저장된 데이터의 해시, 시퀀스 넘버, 또는 시간 값 등을 포함할 수 있다.
비휘발성 메모리는 물리적 어드레스들을 갖는 스토리지 위치들로 구성될 수 있고, 스토리지 어드레스 그룹은 메모리 블록을 포함하며, 상기 메모리 블록이 전체적으로 소거되기 전에 한번 작성될 수 있는 특징을 갖는다. 복수의 블록들이 블록 그룹을 형성할 수 있고 상기 블록 그룹은 어드레스 범위마다 다를 수 있는 메모리 동작 특징들을 사용자에 제공하기 위해 논리 어드레스 범위 또는 물리적 어드레스 범위 중 하나와 관련된다.
프로세서, 휘발성 메모리 및 프로세서를 포함한, 메모리 시스템을 제공하는 단계를 포함한 메모리 시스템에서 가비지 컬렉션 방법이 개시되어 있다. 프로세서는 논리 어드레스를 물리적 어드레스와 연관시키는 제 1 인디렉션 테이블을 유지하도록 동작하고, 상기 메모리는 복수의 물리적 어드레스를 갖는 복수의 블록들로 구성되며, 각 물리적 어드레스는 유효, 쓸모 없음, 빈 것 중 하나로 특징된다.
프로토콜에 따라 복수의 블록들 중 한 블록을 선택한다. 읽어들인 블록 내 물리적 어드레스와 유효 데이터의 연관성을 유지하면서 휘발성 메모리내 버퍼에 선택된 블록의 유효 저장위치로부터 데이터를 읽는다. 비휘발성 메모리에 작성된 데이터가 캐시로 임시로 저장되고 블록이 소거된다.
캐시에 있는 데이터가 선택된 블록의 유효 저장위치로부터 읽은 데이터의 상대적 물리적 어드레스가 아닌 할당된 물리적 어드레스이도록, 프로토콜에 따라, 인디렉션 테이블로부터 캐시에 있는 데이터에 대해 물리적 어드레스를 선택하는 단계를 수행한다.
물리적 어드레스에 할당된 버퍼에 있는 데이터 및 캐시에 있는 데이터는 빈 물리적 저장 위치들을 제공하기 위해 소거된 블록의 풀로부터 선택된 블록에 작성된다. 일태양으로, 버퍼에 있는 데이터 및 캐시에 있는 데이터는 블록이 소거된 후 유효 데이터를 보유한 블록에 다시 작성될 수 있다.
물리적 어드레스는 블록 어드레스와 상기 블록내 상대적인 물리저 위치의 조합에 의해 형성될 수 있으므로, 블록 풀로부터 소거된 블록을 선택하는 것은 유효 데이터가 읽어진 블록의 블록 어데르스를 빈 블록의 풀로부터 선택된 블록의 블록 어드레스와 교환함으로써 수행될 수 있다. 이런 식으로, 데이터의 최종 물리적 어드레스가 사용자에 노출될 필요가 없다.
본 발명의 내용에 포함됨
도 1은 개시된 실시예에 따라 동작하도록 구성될 수 있는 사용자 컴퓨터와 소통하는 메모리 시스템의 블록도이다.
도 2는 종래 명령 및 응답들이 다른 목적들에 맞거나 새로운 명령 및 응답들이 동작을 실행하게 사용되는 사용자로부터 명령 및 메모리 시스템으로부터 응답의 예를 도시한 것이다.
도 3a는 (블록들이 복수의 스토리지 위치들로 각각 구성된) 메모리의 논리적 블록과 물리적 블록의 초기 관계를 도시한 것이고, 도 3b는 시간 주기 동안 메모리의 동작 후 관련 테이블의 상태의 일예이다.
도 4는 쓰기 명령 타입을 내보내기 위한 판단은 메모리 시스템에서 데이터 위치의 지식에 관해 사용자가 제공한 정보에 따르는 사용자 컴퓨터에서 사용자 프로세서 또는 디바이스 드라이버의 일예이다.
도 5는 공지의 물리적 어드레스가 논리 어드레스를 찾는데 사용되는 사용자 컴퓨터에 의한 읽기 명령의 일예이다.
도 6은 공급된 논리 어드레스를 이용한 액세스의 검증을 포함해, 물리적 어드레스가 읽기 명령의 인수로서 공급된 메모리에서 읽기 명령을 처리하는 일예이다.
도 7은 쓰기 명령의 인수로서 물리적 어드레스를 포함하지 않을 경우 데이터를 메모리에 쓰는 예이다.
도 8은 명령어는 변경된 데이터가 저장된 물리적 어드레스를 포함하는 메모리에 데이터 쓰기 및 변경된 데이터가 저장된 새 물리적 어드레스를 사용자에게 알려지게 하는 프로세스의 예이다.
도 9는 소거된 블록 풀에서 빈 블록이 선택될 경우 가상 물리적 어드레스에 물리적 블록의 할당을 관리하기 위한 가비지 컬렉션 프로세스의 일부이다.
도 10은 유효 데이터가 오래되거나 비어 있는 위치에 다른 데이터가 끼워지는 블록에서 동일한 상대 물리적 위치에 관리될 수 있는 예에서 가비지 컬렉션 프로세스의 일부이다.
도 11은 블록에서 메모리 위치들의 가비지 컬렉션의 관리의 일부로서 비트맵의 사용의 일예이다.
도면을 참조로 예시적인 실시예들이 더 잘 이해되나, 이들 실시예들은 본질을 제한하도록 되어 있지 않다. 동일한 또는 다른 도면에서 동일한 참조부호는 동일한 기능을 수행한다. 요소들은 두문자로 나타내거나 부호화되거나 또는 둘 다될 수 있으며, 표현 간의 선택은 단지 명확히 하기 위한 것이므로, 부호로 표시된 요소 및 두문자 또는 문자숫자 표시자로 표시된 동일한 요소는 상기를 기초로 구별되지 않아야 한다.
기술된 방법 및 도면에 도시된 장치는 기계실행가능한 명령어, 가령, 소프트웨어 또는 하드웨어 또는 이 둘의 조합으로 구성되거나 실시될 수 있음을 알 것이다. 기계실행가능한 명령어는 상기 명령어에 작동되는 범용 컴퓨터, DSP 또는 어레이 프로세서와 같은 특수용 프로세서 등이 본 명세서에 기술된 기능들을 수행하게 사용될 수 있다. 대안으로, 작동은 기술된 동작을 수행하기 위한 하드와이어 로직 또는 펌웨어 명령어를 가질 수 있는 특수 하드웨어 구성요소들에 의해 또는 프로그램된 컴퓨터 구성요소 및 아날로그 회로를 포함할 수 있는 맞춤식 하드웨어 구성요소 중 임의의 조합에 의해 기술된 동작을 수행할 수도 있다.
상기 방법은 적어도 부분적으로 컴퓨터(또는 기타 전자장치)를 프로그램하여 본 명세서에 개시된 방법을 수행하는데 사용될 수 있는 명령어를 저장한 접촉 기계판독가능한 매체를 포함할 수 있는 컴퓨터 프로그램 제품으로서 제공될 수 있다. 본 명세서의 목적으로, "기계판독가능한 매체"라는 용어는 컴퓨팅 기계 또는 특수용 하드웨어가 실행하기 위한 명령어 또는 데이터의 시퀀스를 저장 또는 인코딩할 수 있고 컴퓨팅 기계 또는 특수용 하드웨어가 본 발명의 방법 또는 기능 중 어느 하나를 수행하게 할 수 있는 임의의 물리적 매체를 포함하는 것으로 해석되어야 한다. 따라서, "기계판독가능한 매체"라는 용어는 고체상태 메모리, 광학 및 자기 디스크, 자기 메모리 및 광학 메모리뿐만 아니라 이런 목적으로 개발될 수 있는 임의의 등가 디바이스를 포함하나 이에 국한되지 않는 것으로 해석되어야 한다.
예컨대, 제한하는 방식이 아니라, 기계판독가능한 매체는 ROM; 모든 타입의 RAM(가령, S-RAM, D-RAM. P-RAM); PROM; EPROM; 자기램; 자기 디스크 저장매체; NAND 또는 NOR로 구성될 수 있는 플래시 메모리; 메모리 레스터(memory resistors); 또는 전기, 광학, 음향 데이터 저장매체 등을 포함할 수 있다. 휘발성 메모리 디바이스가 전원을 갖는 시스템의 일부이고, 전원 또는 배터리가 컴퓨터 프로그램 제품이 휘발성 메모리 디바이스에 저장되거나 사용 디바이스에 의해 사용되는 동안 시간 주기동안 회로에 전력을 공급한다면, DRAM과 같은 휘발성 메모리 디바이스가 컴퓨터 프로그램 제품을 저장하는데 사용될 수 있다.
더욱이, 동작을 하거나 결과 초래하는 것으로서 한가지 형태 또는 다른 형태(가령, 프로그램, 절차, 프로세스, 애플리케이션, 모듈, 알고리즘 또는 로직)의 소프트웨어를 말하는 것이 해당기술분야에 통상적이다. 이런 표현은, 당업자에 잘 알려진 바와 같이, 단지 컴퓨터 또는 등가의 장치로 소프트웨어의 명령어를 실행함으로써 컴퓨터 또는 등가의 장치의 프로세서가 동작을 수행하거나 결과를 발생하는 것을 말하는 편의적인 방식이다.
도 1은 컴퓨팅 시스템(1)용의 대표적인 시스템 구조이다. 호스트 컴퓨터(5)는 프로세서(10) 및 로컬 캐시 메모리(20)를 갖는다. 로컬 캐시 메모리(20)는 DRAM 및 SRAM과 같이 랜덤 액세스 속성과 실질적으로 일정한 시간 응답을 갖는 대표적인 휘발성 메모리이다. 그러나, 로컬 캐시 메모리(20)는 또한 자주 사용되는 데이터에 고속 액세스를 제공하고 중복 데이터, 데이터 압축 등을 저장할 필요성을 줄이기 위해 데이터 중복제거와 같은 다른 기능들을 제공하기 위한 FLASH 메모리 요소를 포함할 수 있다. FLASH 메모리 요소는 PCIe와 같은 고속 인터페이스를 이용해 호스트 컴퓨터(5)의 마더보드에 또는 모듈에 있는 플러그 상에 있을 수 있다.
FLASH 메모리 요소는 종래 회전 미디어 디스크를 모방한 종래 FLASH 디스크에 해당하는 폼팩터, 또는 다른 폼팩터 또는 연결을 가질 수 있다. 호스트 컴퓨터(5)와 FLASH 메모리는 본 명세서에 기술된 개념들로부터 벗어남이 없이 다른 인클로저 또는 동일 인클로저에 있을 수 있다. SSD라는 용어가 사용될 경우, 폼팩터, 인터페이스 프로토콜, 등을 명시하기 위한 의도는 없다. 오히려, 컴퓨터 관련 시스템에 플러그될 수 있거나 매입되는 고체상태(대표적으로 FLASH) 디바이스를 나타내기 위해 현재 사용되는 용어다.
추가 스토리지가 PCIe 패브릭, LAN, WAN, 인터넷과 같은 임의의 다양한 전송 메카니즘(50)에 의해 호스트 컴퓨터(5)에 연결되는 메모리 시스템(100)에 제공될 수 있다. iSCSI, FCoE, TCI/IP 등과 같은 특수 프로토콜이 데이터를 전송하고 스토리지 및 데이터 검색을 관리하는데 사용될 수 있다. 이들은 가령 SAN(Storage Area Network), NAS(Network Attached Storage), 등으로 특징될 수 있다. 그러나, 데이터 및 명령 전송을 위한 특수 메카니즘과 이들 기능들에 대한 특수 프로토콜은 본 명세서에 기술된 시스템 및 방법에 제한인 것으로 되어 있지 않다. 이 점을 강조하기 위해, 호스트 컴퓨터(5)와 메모리 시스템(100) 간에 전송은 범용 클라우드(generic cloud)(50)로 도시되어 있다.
본 명세서에 기술된 명령과 기능들은 종종 범용 포맷으로 주어지며, 당업자는 기존 프로토콜을 사용 또는 변경하기 위한 전반적 설명을 적용하거나 본 명세서에 기술된 방법 및 시스템을 달성하기 위한 새로운 프로토콜을 고안할 수 있다. 예컨대, 여러 타입의 읽기 명령, 쓰기 명령, TRIM 명령들이 있고 이런 명령은 서술용으로 이름을 붙일 필요가 있고 이들 간에 식별을 위해 제 1 타입, 제 2 타입 등과 같이 일반적으로 기술될 수 있다.
메모리 시스템(100)은 하나 이상의 메모리 모듈(150)로 구성될 수 있고, 각 메모리 모듈은 복수의 메모리 회로들(200)로 구성될 수 있다. 메모리 모듈(150)은 메모리 컨트롤러 또는 프로세서(160) 및 휘발성 램(170)을 가질 수 있다. 전송 메카니즘에 및 내부 구성부품들 간에 인터페이스와 같은 메모리 모듈의 기타 세부내용은 당업자가 인식할 것이다. 메모리 시스템은 또한 명령을 메모리 모듈로 배포하는 메모리 컨트롤러 또는 프로세서(140)를 가질 수 있다. 논리-물리적 메모리 위치 관계, 가비지 컬렉션, 웨어 레벨링 및 기타 관련된 데이터와 같은 기능들 및 신호 처리기능들은 특정 시스템 설계 요건에 따라 가령 메모리 컨트롤러(140) 또는 프로세서(160)에 의해 수행될 수 있다.
메모리 회로(200)가 가령 FLASH 메모리인 경우, 이런 메모리의 특징들은 일단 작성된 다음 메모리 블록의 페이지에 다시 기록하기 전에 상기 메모리 블록이 소거되어야만 하는 것이다. 이 특징은 데이터가 소거될 수 있도록 임의의 남은 유효 데이터의 전체 블록을 지우는 것을 포함해 페이지 및 블록의 재할당, 및 조기 마모를 방지하기 위해, 메모리 블록에 마모를 고르게 하도록 작성될 지워진(또는 비어 있는) 블록의 풀로부터 소거된 블록의 선택을 관리하기 위한 FTL(Flash Transtlation Layer) 또는 유사한 구성을 야기한다. 적소에 또는 재할당에 의해 데이터의 주기적 리프레싱과 같은 기타 하우스키핑 기능들도 또한 수행될 수 있다.
종종, 메모리 모듈은 회전 미디어를 갖고 현재 어떤 버전이 사용되는 간에 SCSI(두문자 및 참조부호)와 같은 산업 표준에 따른 하드 디스크 드라이브(HDD)를 모방하도록 되어 있다. 그러므로, READ 및 WRITE와 같은 명령이 표준 포맷으로 또는 독점적 포맷으로 내보내질 수 있고, LUN의 제공을 포함할 수 있다; 그러나, 호스트에 의한 데이터의 어드레싱은 논리 어드레스 공간에서 수행된다. 파일 시스템, 데이터 중복제거 등은 호스트 또는 사용자에 대한 논리 어드레스 공간에서 동작될 수 있다. 명령은 전송 메카니즘을 통해 컴퓨터(1)에서 메모리(100)로 보내지고 사용자 데이터가 저장된 물리적 메모리 위치를 찾기 위해 FTL에 의해 맵핑된다. 사용자 데이터가 검색될 수 있고 사용자 LUN/LBA에 따라 요청 애플리케이션으로 반환될 수 있다.
사용자 측 및 메모리 측 모두에서 어드레스 공간은 어드레싱시 인디렉션(indirection)을 받을 수 있어, 사용자는 메모리 시스템을 LUN(Logical Unit Numbers)으로 구성된 것으로 볼 수 있고, 각 LUN은 별개의 어드레스 공간을 갖고 LUN은 사용자 또는 사용자 애플리케이션에 할당될 수 있다. LUN/LBA는 그런 후 메모리 시스템의 LBA로, 연이어 PBA로 변화될 수 있다. PBA는 데이터가 저장된 물리적 위치를 직간접적으로 지시할 수 있다. 따라서, 논리 공간에서 사용자 측에 그리고 물리적 공간의 메모리 측에 인디렉션이 있을 수 있다. 더욱이, 어드레싱은 특별한 크기의 데이터 페이지, 페이지의 베이스 어드레스, 베이스 어드레스, 및 페이즈의 범위, 베이스 어드레스 및 유사하게 처리되는 페이지의 비트맵을 명시하는 가령 물리적 또는 논리 어드레스일 수 있다.
LUN 이라는 용어는 확장, RAID 타입, 페이지 크기, 파일 포맷 특징 등과 같고, 물리적 메모리에 해당 스토리지 위치들을 갖는 공지의 속성들을 갖도록 사용자에 배분될 수 있는 임의의 논리 메모리 공간을 나타낼 수 있다. 이는 각 사용자가 사용자 애플리케이션에 특화된 스토리지 특징들을 갖는 복수의 사용자들의 공존을 가능하게 할 수 있다. 예컨대, 스토리지 특징들은 비디오와 같은 벌크 데이터, 테이블 데이터 등과 같은 로그구조식 파일의 스토리지를 용이하게 하도록 선택될 수 있다. 각 사용자의 스토리지 요건들 또는 사용자 애플리케이션이 다를 수 있기 때문에 각 LUN의 범위는 다를 수 있다.
가령 가상화될 수 있는 복수의 사용자 애플리케이션들은 애플리케이션들 또는 사용자들 각각에 대해 선택된, 스레드와 유사한, 속성들을 보유하면서 메모리 시스템에 동시에 액세스할 수 있다.
구축될 수 있는 복수의 LUN들 중 한 LUN에 집중하기 위해 하기의 논의를 고려할 수 있다. 복수의 LUN들 중 각 LUN이 메모리 시스템으로 맵핑하게 구성된 것으로 메모리 시스템의 특징들은 메모리의 물리적 자원에 의해 구속되기 때문에 다를 수 있다. 메모리 시스템 내에서, 각각의 LUN은 각 LUN에 할당되는 것으로서 속성들을 달성하기 위해 전체 하드웨어의 서브세트로 환원될 수 있다. 즉, 논리 LUN에 대응하는 메모리 블록의 맵핑은 논리 LUN이 메모리의 물리적 블록들의 그룹에 배타적 엑세스를 가질 수 있고 메모리의 할당된 물리적 블록의 관리는 관련된 논리 LUN 특징 및 요건에 따르도록 메모리 블록의 맵핑이 수행될 수 있다.
가비지 컬렉션 파라미터는 LUN에 특별할 수 있다. 예컨대, 데이터가 논리 시퀀스 순서대로 FLASH에 가장 효율적으로 작성되는 사용 경우가 있을 수 있고, LUN 기반으로 메모리 자원을 할당함으로써, 가비지 컬렉션 동작을 하는데 필요할 수 있는 데드 블록의 퍼센트와 같은 가비지 컬렉션 기준은 각 LUN에 대해 다를 수 있다.
LUN 기반으로 웨어 레벨링이 관리될 수 있으나, 웨어 레벨링 프로세스의 목표가 메모리 회로의 예상 작동수명에 걸쳐 메모리 회로의 블록의 사용을 고르게 하는 것이기 때문에, 메모리 시스템에 대한 글로벌 기반으로 또한 관리될 수 있다. 메모리에 데이터의 작성과 데이터 블록의 소거 빈도는 데이터 타입과 사용자 필요에 따라 변하므로, 블록의 마모율은 사용되는 특정 LUN에 따를 것이다.
일태양으로, 특정 LUN에 의해 빈(소거된) 블록이 필요할 경우, 소거된 블록은 정책에 따라 메모리 컨트롤러에 의해 선택된 공유 풀에 배치될 수 있다. "LUN"이라는 용어는, 메모리측 동작을 설명하는데 사용될 경우, LUN을 할당한 사용자 또는 사용자 애플리케이션의 배타적 사용을 위해 관리되는 개개의 블록, 블록 그룹들로 형성된 RAID 그룹, 파일 시스템 등과 관련될 수 있는 메모리 시스템의 특정 서브세트를 나타내는 것으로 이해될 수 있다. 그러므로, 사용자가 사용자 및 메모리 디바이스 간에 배치된 프로세스에 의해 가상화되고 메모리 컨트롤러 또는 프로세서(140)에 의해 수신된 쓰기 동작의 시간 시퀀스가 복수의 가상화된 사용자들에 의해 개시된 쓰기 동작이 약간 랜덤하게 섞일 수 있더라도, 현재 LUN에 할당된 비휘발성 메모리 블록의 메모리 블록에 쓰기 동작은 각각의 LUN의 메모리 블록들에 대해 개별적으로 순서대로 처리될 수 있다. 이는 사용 애플리케이션에 각각 특별한 복수의 메모리 시스템 특징들의 관리에 기인한다.
웨어 레벨링에 대해, 가령, LUN은 블록의 스토리지 위치의 특정 퍼센트가 오래된 또는 특정 퍼센트가 오래되거나 비어 있는 등일 경우 가비지 컬렉션을 트리거하는 프로세서를 특징으로 할 수 있다. 더욱이, 이 퍼센트는 소거된 블록 풀에 대한 최소 크기를 유지하는 것과 결부해 고려될 수 있다.
또 다른 태양으로, 기준은 블록이 가비지 컬렉션에 대해 선택되기 전에 블록의 저장 위치들 모두가 노후화되어야 하는 것일 수 있다. 본 명세서에 기술된 바와 같이, 사용자는 쓰기동작을 통해 물리적 저장공간내 데이터 위치에 대한 지식을 얻을 수 있고 가령 로그 파일을 관리하기 위해 블록의 데이터를 특별히 재배치시키고 그런 후 가비지 컬렉션에 이용될 수 있도록 전체 블록을 노후화시킬 수 있다.
FLASH 타입 메모리 시스템에서 스토리지의 관리가 더 정교할 수 있고 사용되는 메모리 크기가 증가할 수 있으므로, 적용 다양성은 사용자 필요에 각각 가장 잘 맞출 수 있고 메모리 시스템 능력도 또한 높일 수 있다. 몇몇 상황에서, 메모리 시스템의 FTL 및 L2P 테이블은 데이터 맵핑 및 가비지 컬렉션과 관련한 로컬 동작들을 관리할 수 있은 한편, 다른 경우, 가비지 컬렉션과 관련된 데이터 관리는 본 명세서에 기술된 쓰기 동작을 이용해 관리될 수 있고, 단지 더 낮은 수준의 웨에 레벨링과 블록 소거 및 리프레시 기능들은 가령 메모리 시스템(100)에 의해 자동으로 수행된다.
데이터가 초기에 메모리 시스템(100)에 작성될 경우, 데이터는 호스트 논리 어드레스에 해당하는 FLASH 메모리의 블록의 연속 물리적 어드레스에 작성될 수 있다. 얼마의 시간 후 이전에 작성된 메모리 위치는 변경된 데이터를 해당 논리 어드레스에 작성함으로써 호스트 애플리케이션에 의해 변경될 수 있다. 그러나, FLASH 메모리 위치는 이전에 소적되지 않는 한 작성될 수 없기 때문에, 새 데이터가 다른 기준을 충족하는 이용가능한(빈) 메모리 위치에 작성되며, 그 기준 중 하나는 FLASH 메모리의 블록의 물리적 메모리 위치가 단조 증가하는 페이지 순서대로 작성되는 게 필요하다는 것이다. (페이지는 "슈퍼" 페이지 등으로서 융합된 다양한 크리로 될 수 있다). 저장된 데이터의 무결성에 "쓰기 방해"의 효과를 줄이기 위해 단조 증가하는 페이지 순서대로 데이터를 작성하는 것이 메모리 디바이스 제조업체들에 의해 요구될 수 있다. 마모를 최소화하도록 다른 추가 기준들이 부과될 수 있다. 여하튼, 변경된 데이터는 변경될 데이터와 동일한 장소에 재작성되지 않는다. (이 규칙의 예외는 하나의 페이지가 변경될 경우 페이지의 전체 블록이 재작성되는 경우이다,)
그러므로, 쓰기 명령이 메모리 시스템에 의해 수신되면, 컨트롤러는 가령 FTL 프로세스를 실행하고, 데이터가 작성되는 다음 물리적 어드레스를 선택하며, 이 어드레스를 FTL의 L2P 테이블에 맵핑하고 상기 데이터를 물리적 어드레스에 저장한다. 일반적으로, 데이터는 기존 논리공간관리 프로토콜과 호환성을 위해 섹터(512 바이트) 또는 페이지(2K 바이트 이상)에 그룹화된다. 저장 용량 및 칩 제조업체에 따라 섹터, 페이지 및 블록에 대한 다른 크기들도 사용될 수 있고, 여러 페이지 증분("슈퍼 페이지") 등에 작성되는 시스템들이 있다. 데이터의 스토리지용 물리적 어드레스를 할당하는 프로세스는 웨어 레벨링 기준을 토대로 소거 동작을 스케쥴링 또는 수행하기, 가비지 컬렉션을 이용한 데이터의 재할당, 및 작성될 블록의 선택을 포함할 수 있다. 사용자 쓰기 동작은 L2P 테이블을 변경하고, 논리 어드레싱을 이용한 사용자 읽기 동작은 메모리 시스템(100)의 L2P 테이블에 액세스한다.
일태양으로, 컴퓨터 시스템(1) 및 메모리 시스템(100)을 구비한 컴퓨팅 시스템은 컴퓨터 시스템(1)이 실질적으로 논리 어드레스에서 동작하고 메모리 시스템이 실질적으로 물리적 메모리 공간에 동작하도록 구성될 수 있다. 각 사용자 또는 이용 애플리케이션은 다른 구성, 또는 프로토콜을 이용해 해당하는 할당된 LUN을 관리할 수 있다.
이와 같은 동작을 달성하는데 사용될 수 있는 범용 명령어의 예가 도 2에 도시되어 있다. 2가지 타입의 쓰기 명령은 WRITE(새 데이터; 이하 WRITE1) 및 WRITE(변경된 데이터; 이하 WRITE2)이다.
WRITE1은 사용자에 의해 이전에 작성되지 않거나 (가령, "TRIM" 동작에 의해) 빈 논리 어드레스를 나타낼 수 있다. 본 명세서에서, 요청 엔티티에 할당된 LBA에 대한 L2P 테이블은 메모리 시스템(100)에서 보다는 컴퓨터(5)에서 관리된다. 요청 엔티티에 할당된 LBA의 범위는 컴퓨터(5) 또는 컴퓨터들에 애플리케이션을 실행하는 하나 이상의 사용자들에게 자원의 할당을 허용하도록 LUN, 컨테이너로서 또는 어떤 다른 구성으로 정의될 수 있다.
일예로, 컴퓨터(5)로부터 메모리 시스테(100)으로 쓰기 명령을 보내기 전에, 컴퓨터(5)의 애플리케이션은 메모리 시스템(100)의 PBA에 대한 해당 엔티티가 있는지 판단하도록 체크될 수 있다. LBA가 전에 작성되지 않거나 가령 TRIM 명령에 의해 빈 경우 아무것도 없어야 한다.
WRITE1 명령이 메모리 시스템(100)에 의해 수신되면, 메모리 시스템(100)은 정책에 따라 명령에 PBA를 할당할 수 있고, 데이터는 할당된 PBA에 작성된다. 데이터가 비휘발성 메모리(200)에 있는 할당된 PBA로 보내진 경우, 쓰기 동작의 수신확인이 발생되고 컴퓨터(5)일 수 있는 요청 엔티티로 반환된다. 수신확인은 초기에 컴퓨터(5)에서 요청 애플리케이션 및 데이터가 메모리 시스템(100)에 저장된 물리적 어드레스에 의해 제공된 LUN/LBA 또는 다른 유사한 참조 표시자 모두를 포함한다. 호스트 컴퓨터(5)에 위치된 관련된 L2P 테이블 또는 메모리 시스템(100) 외부에 있을 수 있는 다른 위치가 업데이트될 수 있다. 파일 시스템과 같은 사용자 레벨에서 스토리지를 관리하는 다른 방법들이 사용될 수 있다. 새로 저장된 데이터의 PBA 위치에 해당하는 메모리 시스템(100)에서 비트맵은 유효 상태로 설정된다. 수신확인 LBA, PBA 터플이 복구를 위해 메모리 시스템(100)에 저장될 수 있다. 이는 로그 형태일 수 있다.
당업자는 메타데이터의 일부가 여러 곳에 또는 여러 형태로 자정될 수 있고 명시적 시스템 요건들에 대해 더 충분할 수 있음을 인식할 것이다. 그러나, 하드웨어 고장 또는 메타데이터 테이블의 다른 부주의한 손상에 대한 예방으로서 동작 동안 몇몇 중복 메타데이터와 메타데이터 검증을 이용하기 위해 설계시 고려가 있어야 한다. 추가로, 메타데이터는 다른 프로세스에 의해 가장 효율적으로 사용될 수 있는 시스템내의 한 장소에 위치될 수 있다.
WRITE2 명령은 사용자에 할당된 로컬 어드레스내 데이터가 변경될 경우 사용될 수 있다. 즉 LBA에 해당하는 데이터가 이전에 저장되었고 (가령, TRIM 동작 또는 이전의 WRITE2 명령에 의해) 특별히 무효화되지 않았다는 것이다. WRITE2 명령의 LBA 파라미터는 호스트(5)에서 관련된 물리적 어드레스를 찾는데 사용될 수 있고 데이터와 관련된 PBA는 쓰기 요청에 포함된다. WRITE2 명령은 변경될 데이터가 현재 저장된 PBA의 값을 포함하기 때문에, PBA에서 이 데이터는 쓰기 명령에 응답해 작성된 새로운 또는 변경된 데이터에 의해 지금은 노후화된다. 이는 관련된 블록이 먼저 소거되지 않고도 재작성될 FLASH 메모리에 있는 페이지의 불능의 결과로서 일어난다. WRITE2 명령의 페이로드인 변경된 데이터는 WRITE1 명령에 대해 동일한 방식으로 할당된 새로이 할당된 PBA에 작성될 수 있다. 데이터가 비휘발성 메모리(200)로 전송된 경우, 블록의 PBA의 상태를 나타내는 비트맵은 데이터가 이전에 저장된 PBA의 구(舊) 상태를 반영하도록 변경될 수 있고, 변경된 데이터가 저장된 PBA에 해당하는 블록의 페이지의 비트맵은 유효상태로 설정된다. 수신확인 메시지는 WRITE2 명령의 파라미터로서 그와 같은 것이 포함되었다면 수신된 LBA 및 메모리 시스템(100)에 의해 할당된 것으로 새 PBA를 포함한다. 이 터플은 또한 메모리 시스템 용도로 메모리 모듈(150)에 저장될 수 있다. 컴퓨터(5)에서, 애플리케이션은 이제 변경된 데이터가 지금 저장된 PBA를 저장하도록 업데이트될 수 있다.
또 다른 태양으로, WRITE2 명령의 형태는 데이터를 포함할 수 없다. 오히려, 가령 블록의 범위를 갖는 물리적 어드레스 범위는 물리적 블록마다 데이터를 전송하는데 사용될 수 있다. 구식이 된 물리적 어드레스 범위 내의 데이터는 전송되지 않을 수 있다. 따라서, TRIM 동작은 물리적 블록과 사용 애플리케이션으로 보고된 유효 데이터의 새 물리적 위치에 수행될 수 있다. 위치와 참조 데이터는 부분적으로 물리적 메모리내 테이블에 의해 미러될 수 있거나, 데이터와 함께 메타데이터로서 저장될 수 있다.
광범위하게, WRITE, READ, TRIM 등과 같은 이런 명령은 정의된 응답을 갖고, 다양한 방법들이 파라미터에 대해 사용자 제공 인수에 응답해 수행되게 하도록 파라미터화될 수 있는 API(Application Programming Interface) 또는 ABI(Application Binary Interface)로 간주될 수 있다. 때로 이들 API 또는 ABI는 광범위하게는 POSIX에서 또는 협소하게는 SCSI 등에서와 같이 산업표준에 의해 부호화되는 반면, 다른 예들은 회사공개지침에 따를 수 있다. API의 형태는 함수호출, 명령, 메시지 등일 수 있다. 이와 같이, 본 명세서에 나타낸 특정 포맷은 단지 예이며 특정 실시예들을 제한하는 것으로 인식되지 않아야 한다. 일태양으로, 새로운 또는 변경된 데이터의 스토리지용 PBA에 대한 할당 정책은 데이터가 현재 작겅되고 있는 블록의 다음 최고위 페이지 PBA 및 블록의 다음 페이지로 넘어간 쓰기 포인터에 저장되는 것일 수 있다. 현재 블록이 채워졌을 경우 블록의 풀로부터 다음 블록을 선택하거나, 복수의 부분적으로 채워진 블록들을 관리하거나, 병렬 또는 중복을 늘리기 위해 복수의 메모리 회로들(200)을 가로질러 데이터를 스트립핑하기 위한 정책들이 후술되어 있다.
WRITE1 및 WRITE2 명령의 효과는 컴퓨터(5) 또는 다른 관리방법의 메모리에서 데이터의 물리적 위치에 대한 지식을 유지하는 것이다. 위치 연관성이 또한 메모리 모듈(100)에 저장되면, 이에 따라 백업이 제공된다. 이 백업은 복구동작외의 동안 필요하지 않을 수 있기 때문에, 필요에 따라 처리될 로그 파일로서 메모리 시스템(100)에 유지될 수 있다. 비휘발성 메모리에 백업을 유지하는 것은 메모리 모듈(100)의 휘발성 메모리에 L2P 룩업테이블에 대한 필요성을 없앨 수 있다. 일태양으로, 호스트 컴퓨터(5)가 관련된 비휘발성 캐시 메모리를 가지면, L2P 테이블에 대한 백업은 캐시에 저장될 수 있다. 이런 캐시 메모리는 해당기술분야에 공지된 바와 같이 가령 자주 접근되는 데이터를 저장하기 위해 또는 데이터 중복제거에 사용될 수 있다.
WRITE2 명령은 파라미터로서 변경중인 데이터의 PBA를 가질 수 있다. 이는 베이스 어드레스 및 확장으로 표현될 수 있다. 이 논의를 명확히 하기 위해, 변경중인(구식이 된) 데이터는 PBA1에 저장된 것으로 간주되고, 변경된 데이터(새 데이터)인 데이터가 PBA2에 저장된다. 새 데이터와 구 데이터는 동일하거나 다른 값을 가질 수 있다. WRITE2 동작을 마치기 전에, PBA1에 저장된 메타데이터가 읽어질 수 있고 메타데이터의 측면은 쓰기 명령에 포함된 동일한 메타데이터 값과 비교될 수 있다. 적절한 데이터(PBA1)가 PBA2에 저장되도록 변경되는 중이라면 2개의 메타데이터 값들이 일치된다. 메타데이터의 측면과 WRITE2 명령에 의해 변경중인 데이터의 PBA의 측면 모두가 쓰기 명령에서 지정될 것이므로 이런 검증 체크를 이용하는 것이 또한 공유 메모리 시스템의 보안을 높일 수 있다. 이 용도로 사용되는 메타데이터는 가령 호스트(5)에 있는 데이터의 LBA, 또는 LBA에 계산된 해시, 또는 데이터 그자체일 수 있다. 메타데이터가 데이터 그자체의 해시이면, 해시는 메모리 시스템(100)에서 데이터와 함께 메타데이터로서 저장될 수 없으나, 대안으로, 변경중인 PBA에 저장된 데이터를 기초로 계산될 수 있다. 바르게 동작하는 시스템에서는 미스매치가 발생할 것 같이 않기 때문에 쓰기 및 읽기 동작의 시퀀스가 겹칠 수 있다. 미스매치가 발생하고 변경된 데이터가 이미 새 PBA에 작성되었다면, 데이터는 구식으로 마크될 수 있고 에러 메시지가 생성될 수 있다. 그러나, 미스매치된(부정확한 메타데이터 또는 PBA) 명령 스트림을 전송함으로써 메모리에 대한 어택(attack)이 행해질 수 있는 확률도 고려되어야 하고 변경된 데이터를 메모리로 보내기 전에 메타데이터를 검사하는 것이 바람직할 수 있다.
2가지 타입의 읽기 명령들은 READ(논리 어드레스), 이하 READ1 및 READ(물리적 어드레스), 이하 READ2일 수 있다. 가령, SSD 또는 메모리 시스템(100)에서 L2P 테이블이 FTL에 의해 유지되고 논리-물리 어드레스의 전환이 SSD 또는 메모리 시스템(100)에서 수행되는 현재 통상적인 바로 SSD가 구성될 경우, READ1이 사용될 수 있다. READ1 명령이 호스트(5)에 유지되는 L2P 테이블에 따라 호스트(5)의 디바이스 드라이버 또는 운영 시스템에 의해 해석될 경우, READ1 명령은 호스트 컴퓨터 L2P 테이블에서 논리 및 물리적 어드레스 간의 관계에 대한 지식을 이용해 READ2 명령에 대해 변경될 수 있다.
SSD가 종래적으로 구성될 경우, READ1 명령은 가령 SSD에 관리되는 L2P 테이블을 이용해 SSD에서 해석될 것이고, 호스트 컴퓨터(5)에서 사용자에게 데이터가 반환될 것이다. 그러나, SSD가 READ2 명령을 받도록 구성될 경우, 이 명령이 되게 간주될 수 있다.
READ2 및 WRITE2 명령도 또한 로컬 L2P 데이터 구조를 유지하는 SSD에 사용될 수 있다. 가령 표준 READ1 및 WRITE1 명령을 지원할 수 있는 이런 SSD에서, READ2 및 WRITE2 명령의 사용은 명령의 실행시 지연을 줄일 수 있다. 대표적으로, READ1에 대한 데이터를 반환하기 위해, 대표적인 FTL은 L2P 데이터 구조를 이용해 요청된 LBA를 데이터를 보유한 PBA로 맵핑해야 할 수 있다. SSD에서 L2P 데이터 구조의 이런 사용은 시간이 들고 버스 대역폭을 소모하며 다른 동시 동작에 필요할 수 있는 다이들에 접근하고, 계산 타임라인과 그렇지 않으면 다른 동작에 이용될 수 있는 버스 대역폭 자원을 줄이는 ECC 디코더 자원과 다른 자원 및 컨트롤 로직을 이용해 PBA를 찾도록 플래시 메모리에 하나 이상의 액세스를 포함할 수 있다. READ2 명령에 의해 제공된 PBA를 이용함으로써, 플래시 메모리는 SSD에서 L2P 테이블을 오가지 않고도 사용자 데이터를 반환하도록 읽혀질 수 있다. PBA에 저장된 메타데이터(가령 메타데이터로서 LBA)가 소정 LBA가 더 이상 PBA에 위치되지 않는 것을 나타내면, FTL L2P 룩업이 SSD에서 수행된다. PBA가 가장 최근 버전의 LBA 데이터를 포함하는 것을 확인하기 위해 추가 메타데이터가 전혀 제공되지 않는 상황에서, 로컬 L2P 데이터 구조에서 FTL 룩업은 PBA로부터 데이터를 읽는 것과 나란히 수행될 수 있어, FTL 룩업이 PBA가 LBA 데이터의 현재 카피를 보유하는 것을 확인하자마자 요청된 데이터의 반환을 가능하게 한다.
대부분의 오버헤드 타입의 데이터 재배치(가령, 가비지 컬렉션, 웨어 레벨링)는 SSD에 대한 사용자 쓰기 동작의 빈도에 의해 효과적으로 추진되므로, 읽기 동작에서 재배치된 데이터를 마주칠 확률은 쓰기 데이터의 속도와 대략 비례할 수 있다.
상술한 바와 같이, 요청된 LBA가 READ2 요청시 PBA에 제공되지 않았다고 READ2 명령의 실행 프로세스가 결정하는 경우에, 요청자에게 전송된 명령에 해당하는 응답 메시지는 WRITE1/2 명령과 동일한 방식으로 LBA가 현재 위치해 있는 PBA를 포함할 수 있다. 이로써 사용자 컴퓨터(5)에 보유된 L2P 테이블이 업데이트될 수 있다. 또는, 요청에 의해 표시된 PBA에 LBA 데이터가 더 이상 없는 것을 나타내는 상태 메시지가 반환될 수 있다.
추가로 LBA/PBA 쌍을, 또는 그저 LBA를 인수로 취하고 표시된 LBA의 현재 PBA를 반환하는 VERIFIY 또는 LOCATE와 같은 이런 명령이 사용될 수 있다. 이런 명령은 무결성을 위해 또는 READ2에 주어진 PBA가 유효하지 않음을 나타내는 상태 반환에 응답해 LBA의 위치를 검증하는데 사용될 수 있다. 대안으로, PBA가 유효하지 않다고 제공된 응답은 고정된 데이터 패턴이 반환되는 TRIM 명령의 타입과 동일할 수 있다. 이런 식으로, 무효한 PBA는 읽어지는 것으로부터 보호될 수 있다.
가령, VERIFIY 또는 LOCATE 명령은 하나의 어드레스라기보다는 인수로서 어드레스 범위를 취할 수 있다. 반환 결과는 또한 요청된 어드레스가 연이어 저장되는 범위, 어드레스 리스트, 비트맵일 수 있는 예외 리스트를 갖는 범위, 또는 개개의 어드레스 요청들이 요구되는 표시일 수 있다.
WRITE2 명령에 대해, 사용자 컴퓨터(5)에서 로컬 L2P 맵은 업데이트될 것이다; 그러나, WRITE2 명령이 기본 저장 크기(가령, "페이지")로서 저장된 데이터의 크기보다 더 작은 데이터를 업데이트하는 중이라면 READ2 명령과 동일한 지연 감소가 달성될 수 있다. 예컨대, SSD가 4KB 페이지에 저장된 데이터로서 로컬 L2P 테이블을 보유하고 있다면, 주어진 4KB LBA 내의 어드레스에 512 바이트의 데이터만을 쓰기 위한 WRITE2 명령은 먼저 LBA에 현재 저장된 4KB의 데이터를 읽고, 지정된 512 바이트 범위를 새로 제공된 데이터로 대체한 다음 전체 4KB를 다시 플래시에 기록해야 할 수 있다. WRITE2 명령의 일부로서 PBA를 제공함으로써, L2P 업데이트와 나란히 4K의 읽기 변형이 수행될 수 있다.
READ2 명령은 LBA 또는 메타데이터로서 이전에 저장된 LBA 또는 저장된 데이터의 해시와 같은 몇몇 표현을 가질 수 있다. SSD는 PBA에 의해 가리켜진 물리적 위치로부터 데이터를 검색하기 위해 PBA에 동작하고, LBA 또는 해시에 대해 저장된 메타데이터를 검사하는 것 또는 데이터의 해시를 계산하는 것 등을 포함할 수 있는 임의의 소정의 데이터 유효성에 대해 검사를 하며, 데이터를 호스트(5)와 사용자에게 반환한다. 반환된 데이터는 READ2 명령의 LBA에 의해 식별될 수 있다.
READ2 명령은 LBA 뿐만 아니라 어떤 해시 값, 시퀀스 넘버, 일부가 데이터의 유효 버전이 읽어지고 있음을 확인하는데 사용될 수 있는 임시 또는 기타 메타데이터를 가질 수 있다. 명령에 주어진 PBA에 위치된 데이터의 LBA 또는 다른 메타데이터의 일부가 명령에 주어진 대응하는 예상된 메타데이터와 일치하지 않을 경우, 이는 가령 SSD에 의해 수행된 오버헤드 동작이 요청된 데이터를 재배치했음을 나타낼 수 있다. SSD는 로컬 L2P 테이블을 이용해 LBA의 재배치된 데이터를 위치시킬 수 있다. 대안으로, 요청된 LBA가 READ2 명령에 주어진 PBA에 위치해 있지 않은 경우, SSD는 에러 또는 요청된 데이터가 위치될 수 없는 TRIM-타입 응답을 반환할 수 있다. 플래시 디바이스가 로컬 L2P 테이블을 갖지 않은 경우, 요청된 데이터와 함께 현재 PBA는 사용된 컴퓨터(5)가 L2P 정보를 업데이트할 수 있도록 반환될 수 있다. SSD의 오버헤드 동작을 설명하기 위해 연이어 기술된 바와 같이 배경 동작으로서 호스트 컴퓨터 L2P 테이블을 업데이트하는 것이 수행될 수 있다.
시간 주기 후에, 사용자 데이터 스토리지에 할당된 메모리 시스템의 메모리 블록들 또는 메모리 시스템의 개개의 SSD의 퍼센트가 채워질 수 있거나 거의 채워질 수 있다. FLASH 메모리를 이용한 이과 같은 메모리 시스템들은 일반적으로 오버프로비전(overprovision)된다. 즉, 사용자에 또는 또는 오버헤드 동작의 필요에 대해 이용될 수 있는 것보다 더 많은 물리적 메모리가 있게 된다. 심지어 디스크 시스템은 이따금 섹터 장애의 이유가 되는 소량의 오버프로비저닝을 갖는다. (편의상, 하드 디스크 드라이버(HDD) 및 SSD의 용량은 10진수 형식으로 진술되는 반면, 실제 용량은 2진수이며, 약 7 퍼센트의 오버프로비저닝을 산출한다). FLASH로써, 대량의 오버프로비저닝이 일반적으로 제공된다. 이는 SSD의 성능 속성 및 소매가격에 따라 추가적인 10 퍼센트 이하에서 50 퍼센트 이상에 이를 수 있다.
적어도 사용자 이용가능 공간이 채워진 시간까지, "가비지 컬렉션"이라는 용어의 동작이 수행되므로 변경된 데이터에 대한 공간이 이용될 수 있다. (메모리 관점에서, 데이터가 작성된 페이지가 이전에 결코 사용된 적 없는 페이지 또는 소거된 페이지라는 점에서 PBA에 작성된 임의의 데이터는 새 데이터이다. 데이터 상태의 몇몇 태양들이 데이터와 함께 저장된 메타데이터 또는 L2P 테이블에 표현될 수 있으나, 새 또는 변경된 것으로 데이터의 특징은 전반적으로 사용자 관련된 구성으로 보아야 한다.)
상술한 바와 같이, 데이터가 변경되면, 변경된 데이터가 변경중인 데이터를 보유하는 PBA에 작성될 수 없기 때문에, 추가 저장공간이 요구된다. 가비지 컬렉션 프로세스는 일반적으로 여전히 유효한 블록의 페이지를 식별하기; 페이지가 빈 블록으로 유효 페이지를 옮기기; 및 가비지 컬렉션되는 블록을 소거하기와 같이 생각될 수 있다. 재배치된 페이지들의 위치들은 대개 SSD에 보유된 L2P 테이블을 변경하는 것이 원인이다. 일태양으로, 사용자 컴퓨터(5)가 또한 업데이트될 수 있다.
가비지 컬렉션을 위해 더 이상 사용하지 않는 데이터 특정 퍼센트가 선택된 복수의 블록들 중 한 블록의 선택은 "웨어 레벨링"으로 알려진 프로세스에 의해 결정될 수 있다. 퍼센트는 가령 임계치, 값의 범위, 또는 값과 블록이 소거된 회수의 조합으로 수립될 수 있다. 이 프로세스의 목적은 물리적 블록이 SSD 디바이스의 수명에 걸쳐 소거된 횟수를 고르게 하는 것이다. FLASH 메모리는 블록내 저장된 데이터 또는 데이터 보유시간의 에러율이 허용될 수 없게 되기 전에 유지될 수 있는 개개 블록의 블록소거 싸이클의 횟수가 FLASH 메모리의 타입에 따라 약 1000에서 약 1,000,000으로 제한되는 마모 현상에 의해 특징되므로, 하나의 블록의 반복 소거로 인해 디바이스의 마모가 조기에 발생할 수 있다.
가비지 컬렉션, 웨어 레벨링 및 SSD의 L2P 테이블 업데이트의 활동은 일반적으로 SSD의 플래시 변환계층(FTL)에서 구현되는 것으로 생각된다. 그러나, WRITE2 및 READ2 명령이 이용될 경우, 액티브 L2P 테이블이 호스트 컴퓨터(5)에 위치될 수 있고, 이들 프로세스들은 호스트 컴퓨터(5)와 사용자의 필요성에 대해 자동으로 발생할 수 있기 때문에 가비지 컬렉션과 웨어 레벨링의 결과로서 특정 LBA가 저장된 PBA의 재배치를 추적하기 위해, SSD와 호스트 컴퓨터(5) 간에 정보가 교환될 필요가 있게 된다.
재배치를 추적하기 위해 교환된 정보량은 가령 새 블록 또는 새 어드레스 범위로 옮겨진, 주어진 블록 또는 물리적 어드레스의 주어진 범위에서 LBA를 식별함으로써 경감될 수 있다. 블록 또는 범위에 있는 모든 어드레스들이 옮겨지지 않은 상황은 비트맵, 예외 리스트, 또는 기본 표시자 상에 다른 어노테이션으로 처리될 수 있다. 이는 사용자 컴퓨터(5)에 L2P, 파일관리시스템, 등이 SSD에서 해당 L2P에 대한 변형이 추적될 수 있는 더 작은 크기의 통지를 수신하게 하고 변경을 즉시 처리해야 하기보다는 배경 동작으로서 사용자 컴퓨터에 변경을 수행하게 할 수 있다. 주어진 LBA에 대한 동작을 수행하기 위한 명령이 SSD로 보내져야 할 경우 미처리된 통지가 있다면, 블록 또는 어드레스 범이에 대해 PBA를 검사함으로써 요청된 PBA가 변경되었고 새로 수정된 PBA가 L2P를 이용해 SSD에 전송되었는지 판단될 수 있다.
일태양으로, "인-플레이스(in-place)" 가비지 컬렉션 형태를 이용해 데이터의 재배치를 호스트 컴퓨터(5)에 각각 알릴 필요성이 방지되거나 최소화될 수 있다. 간단한 형태로, 가비지 컬렉션을 위해 메모리 블록이 선택될 수 있다. 유효 데이터 페이지들이 메모리로부터 더 이상 사용하지 않는(변경된, 삭제된 또는 그렇지 않으면 옮겨진) 페이지들이 식별되고 오래된 페이지들의 PBA가 임시 할당 테이블에 저장된 휘발성 메모리(170)에 임시로 판독된다. 블록은 블록내 어드레스들 모두가 현재 비어 있도록 소거될 수 있고, 휘발성 메모리(170)에 임시로 저장된 데이터가 블록에 재작성된다. 프로세스 동안, PBA가 단조 증가 순서로 블록에 작성되어야 할 경우, 임시 할당 테이블은 임시 할당 테이블로부터 (이전에 구 데이터 값이 차지했던) 빈 PBA를 비휘발성 메모리에 작성될 휘발성 메모리에 있는 가비지 컬렉션된 데이터의 큐에 있는 데이터 페이지에 연관시킨다. 따라서, 저장을 기다리는 가비지 컬렉션된 데이터가 이전에 구 데이터를 보유했던 PBA에 저장된다. L2P 테이블은 블록에서 변경된 데이터를 기록하기 위해 업데이트된다. 업데이트된 L2P 테이블에서 기록 횟수는 작성된 모든 데이터가 새 PBA에 할당되는 상황으로부터 줄어든다. 선택된 블록의 단지 일부만 구 데이터로 구성될 수 있기 때문에, 구 데이터를 가비지 컬렉션된 데이터로 교체하는 것과 관련된 L2P 테이블 기록들만이 변경된다.
동일한 블록에 데이터를 반복해서 작성할 경우, 그리고 위치와 관련된 데이터가 바뀌지 않을 경우, 개개의 비트가 반복적으로 작성됨으로 인해 과도한 마모가 발생할 수 있다. 블록의 전체 데이터는 가령 블록의 이전 소거 회수를 기초로 인버티드 비트(inverted-bit) 포맷으로 주기적으로 작성될 수 있다.
빈 블록에 데이터의 작성이 완료되었다면, 이전에 구 데이터가 차지한 페이지 위치들은 이제 변경된 데이터 및 저장을 대기하고 있는 데이터의 캐시에 있었을 수 있는 임의의 새 데이터로 작성된다. 캐시는 휘발성 메모리에 있을 수 있다. 각각의 변경된 데이터 페이지의 PBA는 호스트 컴퓨터(5)로 반환되어 데이터 관리 애플리케이션을 업데이트시킨다. 즉, 서비스 메시지가 가령 블록 베이시스로 보내질 수 있어 사용자 컴퓨터를 업데이트시킨다. 바람직하게는 이전에 구 데이터가 차지한 메모리 위치들 모두가 이 동작 동안 변경된 데이터 또는 새 데이터로 채워질 것이다. 그러나, 비휘발성 메모리(200)로 데이터의 위임은 (전력 손실 동안처럼) 즉시 행해질 필요가 있을 수 있고 어떠한 변경된 데이터도 이용될 수 없는 페이지들은 휘발성 메모리(170)에 있는 모든 데이터가 저장될 수 있도록 플래그로 작성되는 상황들이 있을 수 있다.
PBA에 저장된 데이터가 가비지 컬렉션으로 인해 재배치된 상황이 있고, 데이터의 새 위치는 L2P 테이블에서 아직 업데이트되지 않는다. 데이터가 값이 변하지 않았기 때문에, L2P 테이블이 업데이트될 때까지 가비지 컬렉션된 블록이 소거되지 않는다면, 알려진 위치에서의 데이터와 새 위치에 그러나 아직 참조되지 않은 위치에서의 데이터는 동일하다. 양 위치에서 메타데이터는 수정될 것이고 수정된 데이터는 알려진 위치로부터 반환될 것이다. 개입한 쓰기 동작으로 인해 쓰기 동작의 인수로서 메타데이터에서 변화가 일어날 것이며, 미스매치가 발생할 것이다. 이 미스매치로 인해 가령 수정된 PBA를 식별하기 위해 로컬 SSD L2P 테이블을 이용하게 된다.
"인-플레이스" 가비지 컬렉션 단독으로는 블록이 "액티브" 데이터를 저장할 수 있기 때문에 프로세스의 웨어 레벨링 측면을 만족시킬 수 없다. 이 용어는 "액티브"로서 자주 변경되는 데이터와 "스태틱"으로서 덜 빈번히 변경되는 데이터를 구별하는데 사용된다. 액티브 및 스태틱 데이터 모두는 당업자가 알 수 있는 바와 같이 "유효" 데이터이다. (적어도 활동이 쓰기 동작인 경우) 액티브 데이터를 갖는 블록은 자주 가비지 컬렉션될 필요가 있을 것이며 이에 따라 스태틱 데이터를 갖는 블록보다 더 조기에 마모될 수 있다. SSD는 LBA 또는 관련된 PBA 그룹들이 액티브 또는 스태틱인지 결정할 수 없다; 활동은 호스트(5) 및 사용자 필요에 의해 지배된다.
블록이 적소에 재작성된 경우 마모 완화의 한가지 형태는 블록에 데이터의 컴플리먼트(compliment)를 작성하는 것이다. 데이터의 2개 상태들 중 어느 하나는 가령 블록 소거 카운트에 의해 결정될 수 있다. 적어도 이는 "0"과 "1" 비트들의 실질적으로 같은 넘버를 시간에 걸쳐 페이지에 작성한다.
그러나, 불가피하게, 이런 조치로 인해 블록에 마모가 불균일해질 것이다. 그러므로, 가비지 컬렉션되는 중인 블록에서의 데이터는 "인-플레이스" 가비지 컬렉션 동작의 기설정된 횟수 후에 또 다른 블록으로 재배치될 필요가 있다. 그러나, 호스트 컴퓨터(5)에 이 프로세스를 통보할 필요가 없어질 수 있다. 도 3은 호스트 컴퓨터가 겪는 바와 같이 물리적 메모리 어드레스(PBA)를 업데이트하지 않고도 메모리 블록들의 재배치를 지원하는 데이터 구조를 도시한 것이다. 도 3a는 시스템 초기화에서 데이터 구조의 일예이고, FLASH 메모리 디바이스의 모든 블록들은 미작성된 상태이고 K 블록들은 FLASH 디바이스의 총 N개의 메모리 블록들의 사용자에게 이용될 수 있다. 메모리 칩의 한 면은 N개 메모리 블록들로 구성될 수 있다; 각 블록은 128 페이지들로 구성될 수 있다; 그리고 각 페이지는 2K 바이트로 구성될 수 있다. 동작의 설명을 용이하게 하기 위해 수치 값이 주어지며, 디바이스 아키텍쳐에 따라 다른 값들도 사용될 수 있다. 메모리 기술의 더한 진보로 인해 관련된 값들은 달라질 수 있으며, 여기의 어떠한 것도 본 명세서에 개시된 개념의 범위를 제한하는 것으로 해석되지 않아야 한다.
각 블록은 블록 넘버(BN)를 가질 수 있고 물리적 블록(PB)과 쌍을 이룰 수 있다. PB는 소거 카운트(E)와 공간 카운트(C)를 갖는 것으로 특징될 수 있다. 소거 카운트(E)는 PB가 소거된 횟수이며, 공간 카운트(C)는 마지막 블록 소거 동작에 연이어 더 이상 사용하지 않은 페이지들의 개수이다. 이 간단한 예에서, 블록의 각 페이지가 작성되었고 페이지의 개수(C)가 변경되었으며 또 다른 물리적 어드레스에 재배치된 것으로 가정되었다. 몇몇 블록들을 단지 부분적으로만 작성되게 남겨두도록 메모리 시스템의 동작이 구성되면, 블록에 남아 있는 빈 페이지들의 개수를 나타낼 수 있는 또 다른 파라미터가 또한 유지될 수 있다.
변경된 데이터가 FLASH 메모리에 작성될 경우, 물리적 위치는 정책에 따라 선택된다. 예컨대, 가비지 컬렉션과 웨어 레벨링 기준을 토대로 사용자 할당가능한 메모리의 블록이 선택된다. 이 블록은 블록의 마모 상태와 시스템의 나머지의 상태에 따라 적소에 가비지 컬렉션되거나 재배지될 수 있다. 가비지 컬렉션된 블록이 재배치되면, 빈 블록(결코 작성되지 않았거나 소거된 블록)이 이런 블록들의 풀로부터 선택되고 선택된 블록의 PB 값은 가비지 컬렉션된 블록의 BN과 관련될 수 있다. 선택된 PB는 가장 낮은 소거 카운트(E)를 갖는 PB와 같은 정책에 따를 수 있다. 블록의 2개 표현들 간의 관계는 통합 블록인 128 페이지(256K 바이트)의 증가시 BN과 PB 간에 어드레스 오프세트를 나타낸다. 도 3a는 BN 및 PB 간의 연관성이 초기에 BN=PB 및 BN 값이 단조 증가하는 정수인 일대일 관계인 것을 나타내는 반면, 도 3b는 얼마 후 2개 표현들 간의 연관성이 데이터 구조에 의해 주어지고 일대일 관계의 시간적 전개가 사용자 요건을 만족시키기 위해 호스트 컴퓨터(5)에 의해 그리고, 가령, 가비지 컬렉션과 웨어 레벨링을 달성하기 위해 SSD에 의해 행해진 데이터의 변경에 의해 구동되는 것을 나타낸다.
도 3에 도시된 바와 같 데이터 구조를 이용해 호스트 컴퓨터(5)에 의해 인식되는 바로써 물리적 블록 어드레스(PBA)를 인덱스함으로써, 호스트 컴퓨터에 재배치를 리포팅하지 않고도 데이터의 효율적 재배치가 수행될 수 있다. 인디렉션의 이런 추가적 수준은 재배치된 물리적 블록에서 데이터의 내부 순서를 유지하면서 호스트 PBA를 재배치된 물리적 블록에 연관시킨다.
FLASH 메모리 디바이스는 실질적으로 비휘발성이다. 즉, 이들은 파워오프 파워온 싸이클을 통해 데이터를 보유하며, 파워오프 시간은 길 수 있다. 메모리의 타입, 동작 조건 및 마모 상태에 따라, 이 "긴" 시간은 아마 하루에서 수년의 범위에 이를 수 있다. 데이터 상실을 방지하기 위해, 데이터는 주기적으로 읽어지고, 필요하다면 에러 수정되고, 적소에 또는 재배치될 수 있다. 이 동작은 또 다른 시스템 유지보수(오버헤드) 기능이고 종종 데이터 리프레싱이라 한다. 가비지 컬렉션이 또한 수행될 수 있어 구 페이지들은 새로 변경되거나 리프레시된 데이터를 저장하는데 사용될 수 있다.
휘발성 메모리 블록에 모든 유효 데이터를 읽고, 상기 블록을 소거하고, 새로 변경된 데이터를 포함해 유효 데이터를 구 페이지 어드레스에 재작성함으로써 가비지 컬렉션이 적소에 작동된다. 비휘발성 메모리의 양은 적어도 블록의 크기와 같다. 가비지 컬렉션이 재배치와 더블어 수행되면, 가비지 컬렉션된 블록으로부터 읽어진 유효 데이터는 저장을 기다리는 변경된 데이터와 병합될 수 있고 선택된 빈 블록에 즉시 작성될 수 있다. 비휘발성 메모리 버퍼의 크기는 재배치되는 데이터의 일부를 버퍼하는데 필요한 크기로 절감될 수 있다.
일태양으로, 가비지 컬렉션에 대한 기준을 충족하는 블록들의 개수가 재할당을 위해 큐에 선택 및 위치될 수 있다. 선택된 블록들 각각에 대해, 구 데이터를 갖는 페이지의 어드레스는 새로 변경된 데이터의 PBA로서 재할당을 위해 큐에 식별되고 위치될 수 있다. 그러므로, WRITE2 명령이 수신되었을 경우 바로 할당을 할 수 있는 이런 PBA를 갖는 데이터 구조가 있을 수 있다. 하드웨어와 운영 소프트웨어의 설계로 인해 계류중인 요청들은 전력상실, 무질서한 셧다운 또는 규칙적 셧다운의 경우에도 상실 없이 비휘발성 메모리로 보내질 수 있다면, WRITE2 명령은 지연 없이 해당 PBA로 수신확인될 수 있다.
호스트 컴퓨터(5)에서 L2P 데이터 구조를 앞서 설명하였다. 이런 데이터 구조는 응답 속도를 위해 휘발성 메모리에 보유될 수 있으나, 이는 데이터가 셧다운, 전력상실, 등의 경우에 복구되는 게 필요할 것임을 의미한다. 이렇게 하는 한가지 방식은 호스트 L2P 데이터 구조를 주기적으로 SSD 그자체, 비휘발성 캐시 등일 수 있는 비휘발성 저장매체에 부분적으로 또는 전체적으로 체크포인트되는 것이다. 즉, SSD와 관련된 LBA 범위, 메타데이터 등이 복구를 위해 SSD에 저장될 수 있다. 간략히 하기 위해, 체크포인트된 L2P 테이블은 호스트 컴퓨터에 알려진 기설정된 BN 세트에 할당될 수 있고, 이들 BN은 사용자 데이터 공간 또는 예비 논리 공간에에 있을 수 있다. 즉, 물리적 블록들 중 어느 하나가 체크포인트된 로그에 사용될 수 있다. 대표적으로 블록은 체크포인트된 데이터가 스태틱이므로 데이터로 완전히 작성될 것이다. 체크포인트가 랩라운드(wrap round)하고 블록이 소거될 경우, 이 용도로 다음에 사용될 PB의 선정은 가비지 컬렉션과 웨어 레벨링 정책에 따르를 수 있다. 트랜잭션 로그가 또한 SSD에 유지될 수 있어 필요하다면 체크포인트된 로그가 신속히 복구될 수 있다. 순차적 셧다운으로 인해 전체의 현재 호스트 L2P 테이블이 SSD에 저장될 것이다. 호스트 L2P 테이블은 SSD L2P에 보유되지 않은 정보를 포함할 수 있고, 여기에는 사용자 애플리케이션에 의해 추가 정보가 보유된다. 그러나, SSD L2P 테이블은 호스트 L2P 테이블의 서브세트이다.
일태양으로, 메모리를 관리하는 방법은 호스트 컴퓨터(5)에 설치된 디바이스 드라이버를 이용해 파일 시스템 또는 애플리케이션을 이용한 기타일 수 있는 사용자와 가령 하나 이상의 SSD으로 표현되는 메모리 간에 중재할 수 있다. 디바이스 드라이버인 것으로서 도 4에 도시된 프로세스(600)의 특징은, 가령 기능들이 파일 시스템, 가상 시스템 등의 일부로서 수행되는 애플리케이션을 제외하도록 되어 있지 않다. 시스템의 상위레벨에서, 저장된 데이터의 페이지의 논리 어드레스는 가령 LUN(Logical Unit Number) 및 LUN내 LBA(Logical Block Address)로서 특징될 수 있다. 그러나, 결국, 논리 어드레스는 L2P 테이블에 사용하기 위해 메모리 시스템(100)에 의해 또는 호스트 컴퓨터(5)의 장치 드라이버(600)에 의해 호스트 컴퓨터(5)로 내보내진 LBA 범위 내의 어드레스 값으로 환원될 수 있다.
사용자 명령(610)이 디바이스 드라이버(600)에 의해 수신되면, 명령은 전에 사용될 수 없었던 LBA에 작성하기(WRITE1), 또는 LBA에 변경된 데이터를 작성하기 위한 용도로 관련된 PBA를 갖는 LBA에 작성하기(WRITE2) 위한 것일 수 있다. 또 다른 태양으로, LBA는 과거의 어느 시간에 작성되었고 거기 있던 데이터는 가령 TRIM 명령에 의해 구식이 될 수 있다. 실제로, LBA는 PBA로부터 분리되었고 LBA가 다시 할당되면, 그 상황은 전에 결코 작성되지 않은 LBA와 같게 된다. 그러므로, WRITE1 명령이 적절할 것이다.
따라서, 적절한 쓰기 명령의 선택은 LBA에 해당하는 PBA의 룩업(620)이 성공적인지를 판단함으로써 달성될 수 있다(630). 룩업이 실패하면(630-아니오), 데이터는 LBA에 전에 저장되지 않았고, WRITE1 명령이 구성(690)되고 전송 서브시스템(50)을 통해 SSD로 전송된다(700). 룩업이 성공하면(630-예), 데이터는 이전에 저장되었고 쓰기 동작에 의해 변경되는 중이다. 이는 WRITE2 명령인데, 이는 L2P 테이블로부터 반환된 PBA 및 변경되는 데이터의 검증을 위해 사용되는 임의의 메타데이터를 이용해 구성된다(640). 데이터는 전송 서브시스템(50)을 통해 SSD로 보내진다(650).
여기서, 성공적인 응답 및 이런 응답들과 관련된 반응이 기술되어 있다. 에러 경우들이 예상되며 수용될 필요가 있으나, 본 명세서에서 몇개 만이 예로 기술되어 있다.
WRITE1 명령이 내보내지고 SSD가 데이터 페이로드를 성공적으로 저장하면, 수신확인은 새로 할당된 PBA를 포함한다. 이 수신확인이 수신되고(710) 쓰기에 사용되는 LBA를 참조로 호스트 컴퓨터(5)에 있는 L2P 테이블을 정주(720)시키는데 사용된다. WRITE1 명령이 내보내지고 SSD가 변경된 데이터 값 페이로드를 저장한 경우, SSD(660)로부터 응답은 새 PBA를 포함하고, 이는 L2P 테이블을 업데이트하는데 사용된다(720).
도 5는 SSD로부터 데이터를 읽기 위한 프로세스를 도시한 것이다. 이용 애플리케이션은 논리 블록 어드레스(LBA)를 이용해 데이터를 요청한다(810). 이 접근은 SSD 스토리지의 세부내용으로부터 이용 애플리케이션의 독립성을 유지한다. LBA는 데이터가 호스트 컴퓨터(5)에 있는 L2P 테이블로부터 저장된(820) PBA를 얻는데 사용된다. 해당 PBA가 없다면, 기존의 저장된 데이터(830-아니오)가 없고 이는 에러 조건(890)일 수 있다.
PBA가 요청된 LBA와 관련있다면, READ2 메시지가 구성되고(840) 메모리 시스템 SSD으로 전송된다(850). READ2 명령은 요청된 데이터가 저장되는 PBA를 포함하므로, 데이터가 직접 어드레스될 수 있다. 블록-재위치 가비지 컬렉션이 실행되면, 블록 룩업 인덱스가 데이터 구조로부터 얻어져 물리적 어드레스 전환을 마친다. 데이터가 메모리 시스템에 의해 반환되면(860), 명령이 충족된다.
도 6에 도시된 바와 같이, 메모리 시스템(100)에 의해 READ2 명령이 수신되면(910), 프로세스(900)는 읽기 명령이 가리키는 PBA로부터 데이터의 읽기를 실행한다. 블록 레벨 재배치에 의해 가비지 컬렉션과 웨어 레벨링이 달성되면, PBA는 상술한 바와 같이 데이터 구조로부터 얻은 블록 오프세트 값에 의해 변경될 수 있다. 데이터와 메타데이터가 읽어지고(920) 읽기 명령이 수정된 데이터용임을 보장하기 위해 메타데이터에 대해 체크가 수행될 수 있다(930). 메타데이터는 데이터의 쓰기 시간에 자장된 데이터의 LBA, 데이터 또는 LBA의 해시, 인덱스, 시간 값 등일 수 있다. 요청 애플리케이션이 PBA를 얻기 위해 호스트 컴퓨터(5)에 있는 L2P 테이블에 액세스하도록 허락할 필요가 있기 때문에 보안 조치로서 이 체크를 수행하는 것이 유용할 수 있다. 스퓨리어스 명령은 요청된 LBA에 액세스될 수 없고 메타데이터는 미스매치될 것이다. 액세스 명령이 검증되면, 요청된 데이터는 호스트로 반환된다(940).
도 7에 도시된 바와 같이, 호스트 컴퓨터(5)에 쓰기가 요청되고 이전에 저장된 해당 데이터가 없을 경우, 관련된 데이터 페이로드를 갖는 WIRTE1 명령이 내보내진다. 프로세스(1000)는 메모리 또는 SSD에 명령을 수신(1010)하는 것과 테이블로부터 빈 PBA를 디큐(1020)하는 것을 포함한다. 할당된 PBA는 데이터가 작성될 수 있는 다음 이용가능한 빈 페이지를 가리킨다. 인-플레이스 가비지 컬렉션이 (블록 레벨의 인디렉션이 있거나 없이) 사용되면, 피작성 데이터가 버퍼에 배치(1030)되므로 가비지 컬렉션 동작이 수행되는 중일 경우 블록에 또는 페이지가 빈 다음 블록에 작성되는 데이터 스트림에 삽입될 수 있다. 데이터는 적절한 PBA가 블록에 작성하는 단조적 측면을 보존하기 위해 사용될 경우 블록에 작성되며, 이는 데이터를 작성할 때 저장 공간의 이용가능성에 따라 적절한 가비지 컬렉션 버퍼에 또는 새 블록이나 부분적으로 채워진 블록에 작성될 버퍼에 삽입에 의해 될 수 있다. 각 페이지의 상태를 나타내는 비트맵은 빈 블록 큐에 배치되도록 블록이 소거되었을 경우 비워지게 리셋될 수 있었고 PBA와 관련된 비트는 이제 유효로 설정된다. 블록이 작성되고 PBA가 (데이터 이용가능성의 결여로 인해) 스킵되면, 데이터가 연속으로 PBA에 작성될 수 없기 때문에, 비트는 더 이상 쓸모없는 것으로 설정된다. 즉, 셧다운과 같은 상황에서, 블록 비트맵의 나머지 비트들을 오래된 것으로 설정함으로써 데이터 블록이 효과적으로 채워진다. 이는 신속한 복구를 용이하게 할 수 있다.
고장으로부터 복구를 제공하기 위해, 메모리 시스템(100)에 저장되는 로그 엔트리가 생성된다(1060). 이 로그 엔트리는 L2P 테이블의 업데이트가 호스트 컴퓨터(5)에서 수행되면서 메모리 시스템(100)에 있는 백업 L2P 테이블을 얻데이트하는데 사용될 수 있거나 메모리나 호스트에서 다른 처리 없이 저장될 수 있다. 할당된 PBA 값이 호스트로 반환(1070)되고, 호스트 L2P 테이블은 상술한 바와 같이 업데이트된다. 응답이 호스트에 제공되는 특정 시간은 하드웨어 설계에 따르고 비휘발성 메모리에 안전하게 내보내진 것으로 데이터와 로그 엔트리가 간주되는 경우에 따른다.
도 8에 도시된 바와 같이, 쓰기가 호스트 컴퓨터(5)에 요청되고 데이터가 쌍을 이룬 PBA를 갖는 LBA에 이전에 저장되었을 때 관련된 데이터 페이로드를 갖는 WRITE2 명령이 내보내진다. 명령이 수신되고(1110) 데이터 및 메타데이터가 PBA로부터 읽어진다. READ2 명령의 검증과 유사한 방식으로 명령의 검증이 체크되고, WRITE1 명령의 검증과 유사한 방식으로 데이터가 메모리에 작성되므로, 결과는 저장되는 바와 같이 데이터에 새 PBA의 할당이다. 이는 로그에 저장된 PBA 값이고 명령에 대한 성공 표시로서 호스트 컴퓨터로 반환된다.
데이터가 작성되는 블록의 선택의 일예가 도 9에 도시되어 있다. 각 블록의 상태는 가령 도 3에 도시된 바와 같은 데이터 구조로 유지되므로(1210), 각 블록은 상기 블록이 이전에 소거된 회수와 블록에 있는 유효 페이지 수에 의해 특징될 수 있다. 마지막 소거 이후의 시간도 또한 유지될 수 있다. 블록은 정책에 따라 가비지 컬렉션/웨어 레벨링을 위해 선택된다. 예컨대, 블록은 블록이 소거된 횟수, 마지막 소거 이후 시간, 및 T(1-u)/(uN)과 같은 유효 블록들의 비율의 함수를 이용해 랭킹될 수 있고, 여기서 u는 유효한(u>0) 블록들의 비율이다. 가령, 최상위 랭크의 블록이 다음 블록으로서 선택될 수 있다. 쓰기 명령에 할당을 위해 큐에서 빈 PBA의 충분한 이용가능성을 보장하기 위해 하나 이상의 블록이 선택될 수 있다.
후보 블록이 선택되고 소거되거나(1220), 소거될 블록의 큐에 배치된다. 사용을 위해 블록을 할당하는데 있어 지연이 없도록 블록을 필요로 하기 전에 동작이 수행될 수 있다. 이것이 발생할지 여부는 실제 작업량 하에서 시스템의 동적 성능에 따른다.
선택된 블록 인덱스 값이 결정되고(1230), 현재 새 PBA를 작성하기 위해 사용 중에 있는 빈 블록의 블록 인덱스와 교환된다(1240). 이 동작은 일반적으로 이전에 데이터의 구 페이지를 나타낸 PBA를 차지하도록 갱생 중인 블록으로부터 옮겨지고 있는 데이터와 인터리브된다. 블록 인덱스 테이블은 연이은 읽기가 적절한 물리적 위치로 지향되도록 업데이트된다(1250).
일태양으로, WRITE2 명령은 단계들(1120 및 1130) 중 일부 또는 모두를 생략하기 위해 파라미터화될 수 있다. 예컨대, L2P 테이블은 메모리 시스템(100)에 체크포인트되는 중일 때, 인접한 LBA는 사용되는 블록에 패턴을 쓰거나 할당 방식에 의해 시스템 초기화 동안 인접한 PBA에 이전에 저장되었다. 체크포인팅 프로세스는 페이지 또는 멀티페이지 기반에 변경된 데이터 세트를 작성하는 것으로 간주될 수 있고, LBA/PBA의 인접 블록들에 이전에 저장된 모든 데이터가 변경된다. 대안으로, 종래 프로세스가 잇따를 수 있고 PBA를 변경했던 LBA를 갖는 페이지들만이 L2P 테이블이 체크포인트될 때 작성될 수 있다. 즉, 효과적으로 "읽기전용"인 데이터는 L2P 테이블에서 LBA/PBA 관련에 있어 약간의 변경을 겪을 것이다.
블록은 (있다면) 재배치된 유효 데이터 및 도 10에 도시된 바와 같이 변경된 데이터를 회수 및 저장하기 위해 준비된다. 각 블록에 대해, 상태가 유효, 쓸모없음, 빈 것(및 가능하게는 장애가 페이지 레벨에서 관리될 경우 사용불능 페이지) 중 하나이게, 각 페이지의 상태의 비트맵이 유지될 수 있다. 도 9의 프로세스에 따라 선택된 후 소거를 위해 블록이 준비되는 중이면, 새 데이터가 작성될 수 있는 페이지를 결정하기 위해 블록 비트맵이 스캔된다(1310). 이용가능한 PBA는 쓰기 데이터 버퍼에 있는 데이터에 할당된다(1340). 유효 데이터가 회수 중인 블록으로부터 읽어들임에 따라, 새로 할당된 PBA를 갖는 데이터가 새 블록에 데이터를 작성하기 전에 PBA 시퀀스에 유효 데이터와 함께 점재된다(1350). 이런 식으로, 새 블록의 빈 메모리 위치들 모두가 유효 데이터로 채워진다. 테이블을 관리하는 다른 방법들이 공지되어 있고 당업자에 명백할 것이다.
도 11은 데이터의 각 블록에 대해 비트맵을 관리하기 위한 프로세스(1400)의 일예를 도시한다. 서비스에 놓일 경우, 메모리 시스템(100)은 각 페이지가 비어 있고 소거 카운트(N)가 0이도록 초기화된 비트맵을 갖는다(1410). 데이터가 블록의 페이지에 작성되면, 해당 비트는 유효로 설정된다. 블록이 단조 증가하는 페이지 순서대로 작성된다; 그러나, 블록은 완전히 채워질 필요가 없다(예컨대, 2010년 6월 9일자로 출원된 발명의 명칭이 "Method and System for Persistent Garbage Collection,"인 US 12/796,836를 참조하고, 상기 문헌은 본 명세서에 참조로 합체되 있다). 나중에 블록에 작성하는 것이 재개될 수 있다. 그러나, 설명을 간략히 하기 위해, 블록의 각 페이지는 데이터로 작성된다고 가정한다. 특정 PBA에서 데이터가 작성을 위해 액세스 됐을 경우, 변경된 데이터에 해당하는 데이터가 또 다른 PBA에 저장될 것이므로, 이전에 데이터가 차지한 페이지는 구식이 되고, 상태를 반영하기 위해 비트맵이 업데이트된다(1420). 블록 관리를 위한 선택 프로세스에 값이 사용될 수 있도록 유효 블록 카운트가 업데이트된다.
본 명세서에 기술된 방법은 메모리 시스템(100)을 관리하기 위한 간략한 접근을 나타내므로 메모리 시스템(100)에서 수행된 제한된 양의 인디렉션과 메모리 시스템(100)에 데이터의 크기와 복잡도가 줄어든다. 더욱이, 호스트 컴퓨터(5)에서 L2P 기능의 위치는 상위레벨 파일 시스템 또는 애플리케이션에 기회를 제공해 메모리 시스템(100)에 있는 데이터의 배치에 소정의 컨트롤을 행할 수 있다.
메모리 시스템(100)에 저장 중인 데이터의 관리시 소정 레벨에서, 데이터가 자장될 수 있는 실제 물리적 위치는 소정의 알고리즘 관계를 기초로 한다. 이는 복수의 플래시 메모리 칩들의 동작시 병렬화, 로컬 버스들에 혼잡 방지, RAID와 같은 에러교정기술 등을 더 잘 이용하기 위한 것일 수 있다. 이런 동작을 위해, 파일 관리와 같이 시스템(1)의 상위레벨의 동작 필요성은 메모리 시스템(100)의 설계에 본질적이며 설명된 바와 같이 외부 명령에 의해 변경될 수 없다.
그러나, 메모리 시스템(100)의 몇몇 활동들은 상위레벨의 명령에 의해 지시되므로 데이터의 저장을 가령, 파일 시스템의 개발자의 필요성에 더 잘 맞출 수 있다.
일태양으로, 연속 LBA로 표현된 데이터가 연속 PBA에 저장되는 것이 바람직할 수 있다(PBA는 L2P 테이블에서 LBA와 관련된 물리적 어드레스이다). 확실히 이는 데이터가 작성 중이므로 PBA가 데이터에 순서대로 할당될 수 있기 때문에 새로 초기화된 메모리 시스템(100)에 작성될 경우 발생할 수 있다. 그러나, 얼마 후, 데이터의 개별 페이지들이 변경되었다면, LBA의 인접 블록의 위치는 PBA의 인접 블록으로 더 이상 표현될 수 없다.
다른 명령들이 개입되지 않은 일련의 쓰기 명령들로 LBA의 인접 범위로부터 데이터를 읽고 데이터를 재작성함(기존 값과 동일한 값을 갖는 변경된 데이터를 효과적으로 작성함)으로써, 저장된 데이터의 압축이 수행될 수 있다. PBA의 인접 범위는 소거된 블록 풀로부터 소거된 페이지로 이런 일련의 쓰기를 시작함으로써 얻어질 수 있다. 쓰기 명령은 이 동작을 달성하기 위해 파라미터화될 수 있다. 더욱이, 데이터가 이 재순서화 동안 변경되지 않기 때문에, 데이터 그 자체가 전송 메카니즘(50)을 통해 전송될 필요가 없다. 즉, 일련의 LBA/PBA 쌍들은 메모리 시스템(100)에서 PBA의 인접 범위들로 이동될 수 있고 최종 발생한 LBA/PBA 쌍들은 L2P 테이블을 업데이트 시키기 위해 호스트 컴퓨터(5)로 반환될 수 있다.
데이터가 블록에 저장된 것으로 가정해 파일 시스템 구성이 최적화된다; 즉, 페이지들의 개수가 블록에 있는 페이지들의 개수와 같고, PBA가 동일한 물리적 블록에 있게 되며, 모든 페이지들이 유효해진 블록들이 소거된 블록 풀 또는 파일 시스템으로 반환된 서비스 메시지에서 선택될 수 있다. 이런 쓰기 명령은 가령, 데이터 페이로드가 LBA 범위이고 관련된 PBA의 해당 리스트가 L2P 테이블로부터 결정되는 WRITE3로서 특징될 수 있다. 동작이 성공적으로 완료되면, 수신확인 메시지는 데이터가 재배치된 해당하는 PBA의 새 리스트를 포함할 수 있다.
WRITE3 명령의 유효성은 가령 제 1 LBA/PBA 쌍의 메타데이터와 (LBA 또는 저장된 LBA 또는 데이터의 해시를 가질 수 있었던) 호스트로부터 수신된 메타데이터를 비교함으로써 결정될 수 있다.
또 다른 태양으로, (윈도우와 T13 위원회가 가리킨 바와 같이) TRIM과 같은 기억장소반환(de-allocation) 명령, (SCSI T10 위원회가 기술한 바와 같이) 언맵 또는 장래에 채택될 수 있는 유사한 효과를 갖는 명령이 사용중인 파일 시스템에 의해 더 이상 필요하지 않을 수 있는 이전에 저장된 데이터를 갖는 페이지들을 지정하는데 사용될 수 있다. 그러나, 종래 TRIM 명령이 "힌트"로 간주되고 수신 장치에 의해 작동될 필요가 없는 반면, 본 명세서에 사용된 바와 같이, 이런 명령들은 후술된 동작들을 일으키도록 해석될 수 있다.
사용중인 애플리케이션이 더 이상 참조하지 않는 페이지에 저장된 데이터는 더 이상 가치가 없고 가비지 컬렉션 또는 웨어 레벨링 동작에 의해 블록이 재활용될 경우 재배치없이 소거될 수 있다. 호스트 컴퓨터(5)에서, LBA로의 TRIM 명령은 L2P 테이블에서 해당 PBA를 찾기 위해 사용된다. 버려진 LBA 및 PBA 간의 관계는 메모리 시스템(100)으로 전송될 TRIM 명령을 공식화하는데 사용된다. 이것이 행해지고 있기 때문에, 버려진 PBA가 L2P 테이블로부터 삭제(또는 오래된 것으로 표시)된다. L2P 테이블은 이전에 할당된 PBA를 갖지 않기 때문에, LBA에 데이터가 연속으로 작성되면 WRITE1이 될 것이다. LBA에 대한 읽기 명령으로 본 명세서에서, 단계 890에서, 에러로서 설명되는 결과가 될 것이다. 이 응답은 또한 특정 시스템 설계 및 프로토콜에 따라 고정된 데이터 패턴(모두 "0" 또는 모두 "1")이 될 수 있다. 따라서, 할당된 PBA를 갖지 않는 LBA에 대한 읽기 명령으로 메모리 시스템과 상호작용이 발생하지 않을 수 있다.
TRIM 명령이 메모리 시스템(100)으로 전송되면, 폐기되는 LBA에 해당하는 PBA는 각 블록(1400)에 대한 비트맵을 유지하는데 사용된다. 여기서, 페이지는 오래된 것으로 표시될 수 있고, 더 이상 메모리에서 필요하지 않을 수 있다. 이렇게 함으로써, 사용중인 애플리케이션에 의해 더 이상 필요치 않을 수 있는 데이터를 갖는 페이지들은 데이터를 또 다른 페이지로 재배치할 필요 없이 가지비 컬렉션 또는 웨어 레벨링 동작 동안 폐기될 수 있다. 이는 하우스키핑 동작과 관련된 쓰기 증폭(write amplification)을 줄인다.
논리 어드레스 범위에서 동작하는 T13 "TRIM" 또는 T10 "언맵" 명령과 달리, 본 명세서에 기술된 언맵은 TRIM된 LBA와 관련된 물리적 어드레스 범위에서 동작할 수 있다.
또 다른 태양으로, 2012년 5월 23일자로 출워된 발명의 명칭이 "Memory Management System and Method"인 US 8,200,887에 기술된 바와 같이 소거 숨기기 또는 RAID 중 적어도 하나를 달성하도록 복수의 메모리 회로들(200) 또는 복수의 메모리 모듈들(150)이 동작될 수 있으며, 상기 참조문헌은 공동으로 소유되고 본 명세서에 참조로 합체되어 있다. 다른 복수의 메모리 회로들과 메모리 모듈들이 많은 데이터 버스들, 프로세서들 및 메모리들을 통해 데이터와 명령을 배분하기 위해 동작될 수 있어 시스템의 대역폭을 향상시키고 지연을 줄이며 중복을 제공한다.
일태양으로, 복수의 메모리 회로들(200)은 RAID 구성으로 동작될 수 있다. 간단한 구성으로, 가령 메모리 모듈에서 5개의 메모리 회로들(200)이 있고, 데이터는 4개의 데이터 스트립과 하나의 패리티 데이터 스트립으로서 저장된다.
초기에, 간략히 하기 위해, 에러 처리를 무시할 것이다. 메모리 회로들(200) 각각은 N개의 메모리 블록을 가질 수 있고, 블록 중에 기설정된 비율(k)이 사용자에 할당된다. 각 블록은 M개의 메모리 페이지를 갖는다. 각 메모리 회로에 대해, 도 3에 도시된 바와 같이 블록 할당 테이블이 있을 수 있다. 초기에 블록 할당 테이블 모두는 동일하고 메모리는 모두 빈 블록이거나 소거된 블록이다. 그러므로, N개 페이지를 갖는 메모리 블록의 논리 표현을 메모리 블록의 물리적 위치에 연관시키기 위해 단 하나의 블록 할당 테이블만이 필요로 할 수 있다. 다시, 간략히 하기 위해, 메모리 블록의 논리 표현과 메모리 블록의 물리적 표현은 일대일로 상관된다.
가령, WRITE1 요청을 수반한 메모리 모듈(150)의 컨트롤러(160)에 의해 데이터가 수신되면, 데이터의 일부가 별도의 메모리 회로(200)에 있는 4개의 페이지들 각각에 할당되고 4개의 데이터 페이지들에 대해 계산된 패리티가 계산되고 5번째 페이지에 저장된다. 데이터 및 데이터에 대한 패리티를 저장하기 위한 블록들의 다른 조합은 2개의 데이터 블록과 하나의 패리티 블록으로부터 매우 많은 데이터 블록들과 하나 이상의 패리티 블록들까지 사용될 수 있다. 구성의 선택은 사용자 요건을 달리함으로써 충족될 수 있게 구성될 수 있다. 일반적으로, RAID 프로세스는 메모리 시스템에서 하위레벨 프로세스이므로, 하나의 LBA가 데이터 및 패리티 데이터가 저장된 복수의 PBA로 맵핑될 수 있고, 사용자측 L2P 테이블은 사용자에게 맵핑을 노출시킬 필요가 없다.
각 페이지는 별도의 메모리 회로(200)에 작성될 수 있고, 상술한 시스템 및 방법에 따라, 5개 메모리 회로들(200) 각각에 있는 순차적 메모리 위치가 데이터에 할당된다. 이 예에서, 5개 메모리 회로들 중 메모리 회로들 각각의 첫번째 페이지가 선택된다. 대안으로, 사용자 데이터의 각 페이지는 섹터들로 분할될 수 있고 RAID 그룹의 스트립과 관련된 메모리 블록들 모두에 작성될 수 있다.
다시, 설명을 간략히 하기 위해, WRITE1 명령에 의해 작성 중인 데이터의 논리 블록의 크기는 8KB이고, 메모리 물리적 블록을 구성하는 M개 페이지들 각각의 크기는 2KB인 것으로 가정하자. 그러면, 데이터는 4개 메모리 회로(200) 각각의 첫번째 블록의 첫번째 페이지는 2KB의 데이터로 작성되고 5번째 메모리 회로의 첫번째 블록은 데이터 페이지들에 걸쳐 패리티 데이터 컴퓨터로 작성된다.
실행시, WRITE1 명령은 데이터가 저장되는 "물리적 어드레스"를 반환한다. 이 예에서, 메모리 회로의 제 1 블록에 제 1 물리적 블록 어드레스가 있게 된다. 상기 관계는 메모리 회로들 모두에 대해 동일하므로, 2KB 페이지들 중 첫번째의 어드레스는 모듈로 8KB의 물리적 블록 어드레스로 표현되는 것으로 생각할 수 있다.
쓰기 프로세스는 필요에 따라 연속일 수 있고 호스트 컴퓨터(5)에서 LBA/PBA가 구성될 수 있다. 에러 상태가 없다면, LBA 공간의 첫번째 2KB 증분에 대해 취해진 어떤 동작이 LBA 공간의 2KB 증분의 나머지에 대해 취한 동작과 같기 때문에, LBA를 5개 메모리 회로들(200)에서 5개 페이지들과 연관성은 동일한 테이블로 표현된다. 2KB 패리티 데이터는 사용자에 바로 이용될 수 없으나, 소거 숨기기 및 RAID 목적을 위해 시스템에 사용된다.
당업자는 메모리 회로(200)에서 해당 물리적 위치들이 가비지 컬렉션 프로세스에서 재회수된 공간에 채워지게 작성될 수 있도록 WRITE2 명령이 유사한 프로세스를 가질 것임을 인식할 것이다. 도 3의 테이블과 유사한 테이블은 요구될 수 있는 간단한 인디렉션으로 처리될 것이다.
당업자는 상술한 바와 같이 가비지 컬렉션이 수행될 때, 메모리 회로에 있는 특정 페이지가 오래된 것이거나 그렇지 않으면 이용불능인 것으로 여겨질 때, 메모리 회로 그룹의 다른 데 있는 해당 페이지는 유사하게 처리될 것이다. 이는 제한이 아니다; 그러나, 도 3에서 테이블의 기능은 블록 레벨 인디렉션과 가능하게는 페이지 레벨 인디렉션이 관리될 수 있게 변경될 수 있다.
페이지 또는 블록이 이용될 수 없는 레벨에 대해 쓰기 동작에 장애가 있거나 읽기 에러가 발생하는 경우들이 발생한다. 예컨대, 5개 메모리 회로들의 메모리 회로들 중 한 페이지에 쓰기 동작에 장애가 있다. 그러나, 데이터는 4개의 페이지들에 성공적으로 작성되었다. WIRTE 명령에 대한 응답은 이미 발생될 수 있고 호스트(5)로 전송될 수 있다. 모든 데이터가 성공적으로 작성되었거나 모든 데이터보다 적게 성공적으로 작성되었지만, 패리티 데이터가 성공적으로 작성되었기 때문에 데이터는 복구될 수 있다. 대안으로, 데이터는 여전히 휘발성 메모리(170)나 그 밖에서 캐시될 수 있다.
데이터의 전체 블록은 스페어 또는 그렇지 않으면 빈 블록에 재배치될 수 있고 물리적 블록의 논리 표현은 업데이트될 수 있어 데이터가 재배치된 물리적 어드레스를 동일한 PBA가 이제 가리키게 된다. 이는 LBA/PBA 연관성이 여전히 유효하므로 호스트에 L2P 테이블을 업데이트할 필요가 없는 것을 의미한다. 도 3a, 3b에 도시된 블록 인디렉션 테이블에 의해 재배치가 관리될 수 있다.
메모리 모듈이 이런 식으로 동작될 경우, 소거 숨기기 기술은 쓰기 데이터 블록이 저장 중인 5개 칩들 중 단 하나만 임의의 시간에 쓰기 동작 또는 소거를 수행 중임을 보장함으로써 메모리 모듈 수준에서 사용될 수 있다. 따라서, 가령 동일한 칩 면에 위치된 논리블록어드레스(LBA)에 각각 동시적인 쓰기 또는 소거 동작으로 인해. 읽기 동작이 지연 없이 수행될 수 있다.
이런 접근은 또한 메모리 컨트롤러(130)가 메모리 모듈 레벨에서 RAID 또는 소거 숨기기 구성 중 어느 하나를 달성하도록 복수의 메모리 모듈(150)에 대한 쓰기 동작에서 데이터의 할당을 수행하는데 사용될 수 있는 시스템에서 상위레벨에 이용될 수 있다. 기능의 일부 또는 모두가 메모리 모듈내 동일 또는 유사한 용도로 기능들 중 일부 또는 모두를 수행하는 중일 수 있는 메모리 모듈(150) 위에 겹칠 수 있다.
메모리 컨트롤러(150)의 레벨에서, 가령, 처리 및 버스 로딩을 더 평준화하도록 메모리 모듈들에 대한 데이터를 광범위하게 스트립하게 다른 논리 구성이 사용될 수 있다. 이렇게 하는 시스템 및 방법이 2010년 10월 8일자로 출원된 발명의 명칭이 "Memory System with Multiple Striping" 인 US 122/901,224에 기술되어 있고, 상기 참조문헌은 공동으로 소유되고 본 명세서에 참조로 합체되어 있다. 임의의 레벨에서, 쓰기 동작은 가령 완전한 2KB 페이지들을 형성하도록 조합될 수 있으며, 8KB 페이지를 읽고 오프세트 어드레스에 의해 요청된 데이터를 추출함으로써 8KB 그래뉼리티 미만의 어드레스가 서비스된다. 정확한 데이터가 판독되는 중임을 보장하기 위해 상술한 바와 같이 메타데이터가 사용될 수 있다.
본 명세서에서, 데이터는 종종 테이블에 저장된 것으로 기술된다. 그러나, 이 용어는 데이터가 링크된 리스트들에 저장 또는 관리될 수 있거나 LBA 공간이 산재해 할당될 수 있으므로 시스템 설계에 적절한 또는 다른 데이터 구조들은 LUN(Logical Unit Number) 또는 LBA 등의 조합으로 표현될 수 있기 때문에 비유적인 의미로 이해되어야 한다.
SSD는 자신의 논리-물리적 맵핑을 보유하고 상위레벨 관리가 가비지 컬렉션 중 일부 또는 모두를 수행하기 위해 논리 어드레스 공간을 관리하는 경우, 상위 기능은 특정 물리적 어드레스를 알 필요가 없으나 어떤 논리 어드레스가 동일한 플래시 소거 블록에 있는 지에 대한 기록을 보유할 수 있다. 이는 가령 쓰기 명령에 응답해 블록 어드레스를 반환함으로써 달성될 수 있으나, 쓰기가 구 블록 또는 새 블록에서 마지막 또는 최초 쓰기였을 때를 나타냄으로써 달성될 수 있다.
상위레벨 관리기능은 또한 어드레스가 명령 또는 SSD가 새 블록에 작성을 시작하게 하는 쓰기 명령에 대한 옵션을 가짐으로써 동일한 블록에서 있는 것을 보증하도록 구성될 수 있다.
SSD는 블록을 채울 필요가 있을 수 있는 쓰기 회수를 쿼리하거나 설정하는 명령을 받을 수 있어, 상위레벨 관리기능이 소정의 데이터 구조 또는 알고리즘 파라미터를 매치시키게 한다.
병행해 작성되는 블록들의 개수는 SSD 또는 메모리의 성능 특징들에 영향을 끼칠 뿐만 아니라 그룹의 크기의 어드레스들은 그룹 또는 그룹으로서 이들을 이동시키지 않는 게 필요할 수 있는 관련된 트래킹으로서 이동된다. SSD는 이 파라미터를 설정 또는 쿼리되게 할 수 있다.
병행해 작성되는 블록들의 개수는 SSD의 성능 특징들에 영향을 끼칠 뿐만 아니라 그룹의 크기의 어드레스들은 그룹 또는 그룹으로서 이들을 이동시키지 않는 게 필요할 수 있는 관련된 트래킹으로서 이동된다. SSD는 이 파라미터를 설정 또는 쿼리되게 할 수 있다.
SSD는 하나의 컨트롤러에서 나온 것처럼 모든 인커밍 쓰기를 받아들일 수 있으나, 2 이상의 별개의 상위레벨 관리기능들은 어떤 논리 어드레스가 가비지 컬렉션을 관리하기 위한 용도로 동일한 블록에 있는지 추적하며 SSD를 동시에 이용하게 하도록, SSD는 다수의 블록 풀들, 또는 다수의 쓰기 스트림, 또는 작성될 다른 컨트롤 기능들로부터 다른 플래시 블록에 쓰기를 가능하게 하는 기타 수단들을 동작시킬 수 있다. 다른 컨트롤 기능들을 추적하는 이들 풀/스트림 또는 다른 수단들 각각은 이들 자신의 설정 파라미터들 및 컨트롤을 가질 수 있다. 일태양으로, 다른 블록 풀은 공통 소거 블록 풀을 공유할 수 있다.
또 다른 태양으로, 상술한 아키텍쳐에 대한 명령 인터페이스는 애플리케이션 또는 요망되는 기능에 따라 하나 이상의 레벨들을 수립할 수 있다. 인터페이스는 API(Application Program Interface), SCSI와 같은 산업표준 프로토콜의 실행 또는 변형 또는 적용 등의 형태일 수 있다. 몇몇 실시예에서, 사용은 물리적 메모리 위치 데이터에 액세스를 허락 또는 거부할 수 있다.
본 명세서에 개시된 방법들은 특정 순서대로 형성된 특정 단계들을 참조로 기술되고 도시되었으나, 이들 단계들은 본 발명의 개시로부터 벗어남이 없이 등가의 방법으로부터 조합되거나, 서브-분할되거나, 재순서화될 수 있다. 따라서, 명백히 진술되지 않는 한, 단계들의 순서 및 그룹화는 본 발명의 제한이 아니다.
본 발명의 소정의 태양들, 이점들 및 신규한 특징들이 본 명세서에 기술되었다. 모든 이점들이 특정 실시예를 실시함으로써 달성될 수 있는 것이 아님을 당업자는 이해할 것이다. 특허청구된 발명은 개시되었거나 제안될 수 있었던 다른 이점들을 반드시 달성할 필요 없이 본 명세서에 개시된 바와 같이 한 이점 또는 이점들의 그룹을 달성하거나 최적화하는 식으로 구현되거나 수행될 수 있다.
따라서, 상술한 설명은 제한이라기보다는 예시로 간주되어야 하며, 모든 등가물을 포함한 하기의 특허청구범위는 본 발명의 기술사항과 범위를 정의하도록 되어 있는 것으로 이해된다.

Claims (30)

  1. 프로세서, 휘발성 메모리 및 비휘발성 메모리를 갖는, 데이터를 저장하기 위한 비휘발성 메모리 디바이스를 제공하는 단계; 및
    읽기 데이터 명령이 제 1 타입의 읽기 데이터 명령인지 제 2 타입의 읽기 데이터 명령인지 판단하기 위해 사용자로부터 읽기 데이터 명령을 해석하기 위해 상기 프로세서를 구성하는 단계를 포함하고,
    읽기 데이터 명령이 데이터가 저장되는 비휘발성 메모리에 논리 어드레스를 포함하나 물리적 어드레스를 포함하지 않을 경우, 읽기 데이터 명령은 제 1 타입이고,
    읽기 데이터 명령이 데이터가 메모리에 저장되는 비휘발성 메모리에 읽기 데이터 명령이 적어도 물리적 어드레스를 포함할 경우, 읽기 데이터 명령은 제 2 타입이며,
    제 1 타입의 읽기 데이터 명령에 응답해, 데이터의 물리적 어드레스를 결정하고, 비휘발성 메모리에 물리적 어드레스로부터 데이터를 검색하며, 상기 데이터를 사용자에 반환하거나,
    제 2 타입의 읽기 데이터 명령에 응답해, 비휘발성 메모리에서 물리적 어드레스로부터 데이터를 검색하고 상기 데이터를 사용자에 반환하며,
    논리 어드레스와 물리적 어드레스 간의 관계는 비휘발성 메모리에서 인디렉션 테이블에 유지되는 데이터 스토리지 관리방법.
  2. 제 1 항에 있어서,
    검색된 데이터에 대한 메타데이터를 읽는 단계;
    검색된 데이터에 대한 메타데이터의 적어도 일부를 제 1 타입 또는 제 2 타입의 읽기 명령에서 메타데이터의 적어도 일부와 비교하는 단계; 및
    검색된 데이터의 메타데이터의 일부와 제 1 타입 또는 제 2 타입의 읽기 명령의 메타데이터가 일치하면 사용자에게 검색된 데이터를 반환하거나,
    검색된 데이터의 메타데이터의 일부와 제 1 타입 또는 제 2 타입의 읽기 명령의 메타데이터가 일치하지 않으면 사용자에게 에러 메시지를 반환하는 단계를 더 포함하는 데이터 스토리지 관리방법.
  3. 프로세서, 휘발성 메모리 및 비휘발성 메모리를 갖는, 데이터를 저장하기 위한 비휘발성 메모리 디바이스를 제공하는 단계; 및
    쓰기 명령이 제 1 타입 또는 제 2 타입인지 판단하기 위해 사용자로부터 쓰기 명령을 해석하는 위해 상기 프로세스를 구성하는 단계를 포함하고,
    쓰기 명령이 논리 어드레스를 포함하나 데이터가 저장되는 물리적 어드레스를 포함하지 않을 경우, 쓰기 명령은 제 1 타입이고,
    쓰기 명령이 데이터가 비휘발성 메모리에 저장되는 적어도 하나의 물리적 어드레스를 포함할 경우, 쓰기 명령은 제 2 타입이며,
    제 1 타입의 쓰기 명령에 응답해, 제 1 타입의 쓰기 명령과 관련된 데이터가 프로토콜에 따라 비휘발성 메모리에 저장될 수 있는 비휘발성 메모리에서 물리적 어드레스를 결정하고, 상기 물리적 어드레스를 인디렉션 테이블에서 논리 어드레스와 연관시키며,
    제 2 타입의 쓰기 명령에 응답해, 제 2 타입의 쓰기 명령과 관련된 데이터가 프로토콜에 따라 저장될 수 있는 비휘발성 메모리내 물리적 어드레스를 결정하고, 사용자에 대한 응답 메시지에 상기 물리적 어드레스를 포함하며,
    인디렉션 테이블은 비휘발성 메모리에 유지되는 메모리내 데이터 스토리지 관리방법.
  4. 제 3 항에 있어서,
    제 1 또는 제 2 타입의 쓰기 명령과 관련된 데이터를 비휘발성 메모리에 작성하는 단계; 및
    제 1 또는 제 2 타입의 쓰기 명령과 관련된 메타데이터를 비휘발성 메모리에 작성하는 단계를 더 포함하는 메모리내 데이터 스토리지 관리방법.
  5. 제 3 항에 있어서,
    제 2 타입의 쓰기 명령의 메타데이터를 이용하는 단계; 및
    제 2 타입의 쓰기 명령의 메타데이터의 일부를 상기 제 2 타입의 쓰기 명령에 제공된 비휘발성 메모리내 물리적 어드레스에 저장된 데이터와 관련된 메타데이터의 일부와 비교하는 단계; 및
    제 2 타입의 쓰기 명령의 메타데이터의 일부가 상기 제 2 타입의 쓰기 명령에 의해 지정된 비휘발성 메모리내 물리적 어드레스에 저장된 메타데이터의 일부와 일치하면 제 2 타입의 쓰기 명령에 응답해 물리적 어드레스를 판단하는 단계를 수행하는 단계; 또는
    제 2 타입의 쓰기 명령의 메타데이터의 일부가 상기 제 2 타입의 쓰기 명령에 의해 지정된 물리적 어드레스에 저장된 메타데이터의 일부와 일치하지 않으면 사용자에게 에러 메시지를 반환하는 단계를 수행하는 단계를 더 포함하는 메모리내 데이터 스토리지 관리방법.
  6. 제 3 항에 있어서,
    제 2 타입의 쓰기 명령이 논리 어드레스를 포함하는지 판단하고, 판단된 물리적 어드레스에 저장된 메타데이터의 일부로서 논리 어드레스를 이용하는 단계; 또는
    제 2 타입의 쓰기 명령이 논리 어드레스를 포함하는지 않는다고 판단하고, 응답 메시지에 판단된 물리적 어드레스와 관련된 논리 어드레스를 사용자에 제공하는 단계; 및
    메타데이터로서 제공된 논리 어드레스를 저장하는 단계를 더 포함하는 메모리내 데이터 스토리지 관리방법.
  7. 제 3 항에 있어서,
    메타데이터는 논리 어드레스, 논리 어드레스에 저장된 데이터의 해시, 시퀀스 넘버 또는 시간 값 중 적어도 하나를 포함하는 메모리내 데이터 스토리지 관리방법.
  8. 제 3 항에 있어서,
    비휘발성 메모리는 물리적 어드레스들을 갖는 스토리지 위치들로 구성되고, 스토리지 어드레스 그룹은 비휘발성 메모리의 복수의 메모리 블록들 중 한 메모리 블록을 포함하며, 상기 메모리 블록은 전체적으로 소거되기 전에 한번 작성될 수 있는 특징을 갖는 메모리내 데이터 스토리지 관리방법.
  9. 제 8 항에 있어서,
    블록의 그룹으로부터 복수의 블록들과 상기 블록 그룹은 논리 어드레스 범위 또는 물리적 어드레스 범위 중 하나와 연관되는 메모리내 데이터 스토리지 관리방법.
  10. 프로세서, 휘발성 메모리 및 프로세서를 포함한, 메모리 시스템을 제공하는 단계; 및 논리 어드레스를 물리적 어드레스와 연관시키는 제 1 인디렉션 테이블을 유지하는 단계를 포함하고, 상기 메모리는 복수의 물리적 어드레스를 갖는 복수의 블록들로 구성된 메모리 시스템에서의 가비지 컬렉션 방법으로서,
    각 물리적 어드레스는 유효, 쓸모 없음 또는 빈 것 중 하나이며,
    프로토콜에 따라 복수의 블록들 중 한 블록을 선택하는 단계;
    읽어들인 물리적 어드레스와 유효 데이터의 연관성을 유지하면서 휘발성 메모리내 버퍼에 선택된 블록의 유효 저장위치로부터 데이터를 읽는 단계;
    비휘발성 메모리에 작성된 데이터의 캐시를 유지하는 단계;
    복수의 블록들 중 선택된 블록을 소거하는 단계;
    프로토콜에 따라, 인디렉션 테이블로부터 캐시에 있는 데이터에 대해 물리적 어드레스를 선택하는 단계; 및
    캐시에 있는 버퍼 및 데이터에서 나온 데이터를 빈 물리적 저장 위치들을 제공하기 위해 소거된 블록의 풀로부터 선택된 블록에 작성하는 단계를 포함하는 것을 특징으로 하는 메모리 시스템에서의 가비지 컬렉션 방법.
  11. 제 10 항에 있어서,
    블록을 선택하기 위한 프로토콜이 웨어 레벨링을 위해 제공되는 메모리 시스템에서의 가비지 컬렉션 방법.
  12. 제 11 항에 있어서,
    선택된 블록이 이전에 소거된 회수에 따라 메타데이터를 포함한 데이터가 비트-인버트 포맷으로 각 물리적 어드레스에 작성되는 메모리 시스템에서의 가비지 컬렉션 방법.
  13. 제 12 항에 있어서,
    물리적 어드레스는 페이지를 포함한 범위를 나타내는 메모리 시스템에서의 가비지 컬렉션 방법.
  14. 제 10 항에 있어서,
    소거될 블록을 선택하기 위한 프로토콜은 소거된 블록의 풀의 유지를 위해 제공되는 메모리 시스템에서의 가비지 컬렉션 방법.
  15. 제 10 항에 있어서,
    선택된 블록이 소거되고, 유효 데이터와 상기 데이터를 선택된 블록에 작성하는 단계를 포함하는 메모리 시스템에서의 가비지 컬렉션 방법.
  16. 제 10 항에 있어서,
    빈 물리적 어드레스를 판단하기 위한 프로토콜은 선택된 블록의 유효 데이터의 물리적 어드레스들 간의 관계를 유지하고 캐시에 있는 데이터를 선택된 블록에서 쓸모없는 또는 빈 것으로 이전에 지정된 저장위치와 연관시키는 메모리 시스템에서의 가비지 컬렉션 방법.
  17. 제 10 항에 있어서,
    물리적 어드레스가 각 블록내 블록 어드레스 및 상대적인 물리적 어드레스연관되도록 제 2 인디렉션 테이블을 유지하는 단계; 및
    선택된 블록의 블록 어드레스를 빈 블록들의 풀에서 선택된 블록의 블록 어드레스와 교환하는 단계를 더 포함하는 메모리 시스템에서의 가비지 컬렉션 방법.
  18. 제 17 항에 있어서,
    제 1 인디렉션 테이블과 제 2 인디렉션 테이블이 하나의 테이블로서 유지되는 메모리 시스템에서의 가비지 컬렉션 방법.
  19. 데이터가 저장될 수 있는 복수의 물리적 위치들을 각각이 포함한 블록들로 구성된 비휘발성 반도체 메모리; 및
    관련된 버퍼 메모리를 갖고 데이터 인터페이스 및 비휘발성 반도체 메모리와 소통하는 프로세서를 구비하고,
    프로세서는 데이터 인터페이스를 통해 명령을 수신하고 비휘발성 반도체 메모리에서 데이터의 저장을 관리하도록 구성되며, 읽기 데이터 명령이 제 1 타입의 읽기 데이터 명령인지 제 2 타입의 읽기 데이터 명령인지 판단하기 위해 사용자로부터 읽기 데이터 명령을 해석하도록 구성되고,
    읽기 데이터 명령이 논리 어드레스를 포함하고 물리적 어드레스를 포함하지 않으면 상기 읽기 데이터 명령은 제 1 타입이며,
    데이터가 메모리에 저장된 적어도 하나의 물리적 어드레스를 읽기 데이터 명령이 포함하면 상기 읽기 데이터 명령은 제 2 타입이고,
    제 1 타입의 읽기 데이터 명령에 응답해, 데이터의 물리적 어드레스를 판단하고, 비휘발성 메모리에 있는 물리적 어드레스로부터 데이터를 검색하며 상기 데이터를 사용자에 반환하거나,
    제 2 타입의 읽기 데이터 명령에 응답해, 비휘발성 메모리에 있는 물리적 어드레스로부터 데이터를 검색하고 상기 데이터를 사용자에 반환하며,
    논리 어드레스와 물리적 어드레스 간의 관계가 인디렉션 테이블에 유지되는 데이터 저장장치.
  20. 제 19 항에 있어서,
    검색된 데이터에 대한 메타데이터를 읽고;
    검색된 데이터의 적어도 일부를 제 1 또는 제 2 타입의 읽기 명령에서 메타데이터의 적어도 일부와 비교하며;
    검색된 데이터의 메타데이터의 일부와 제 1 또는 제 2 타입의 읽기 명령의 메타데이터가 일치하면 검색된 데이터를 사용자에게 반환하거나,
    검색된 데이터의 메타데이터의 일부와 제 1 또는 제 2 타입의 읽기 명령의 메타데이터가 일치하지 않으면 에러 메시지를 사용자에게 반환하도록 구성된 프로세서를 더 구비하는 데이터 저장장치.
  21. 제 20 항에 있어서,
    쓰기 데이터 명령이 제 1 또는 제 2 타입인지 판단하기 위해 사용자로부터 쓰기 데이터 명령을 해석하고;
    쓰기 데이터 명령이 논리 어드레스를 포함하고 데이터가 저장되는 물리적 어드레스를 포함하지 않으면 상기 쓰기 데이터 명령은 제 1 타입이며,
    쓰기 데이터 명령이 데이터가 메모리에 저장되는 적어도 하나의 물리적 어드레스를 포함하면 상기 쓰기 데이터 명령은 제 2 타입이고,
    제 1 타입의 쓰기 데이터 명령에 응답해, 프로토콜에 따라 상기 제 1 타입의 쓰기 데이터 명령과 관련된 데이터가 저장되는 비휘발성 반도체 메모리에 물리적 어드레스를 판단하고, 상기 물리적 어드레스를 인디렉션 테이블에서의 논리 어드레스와 연관시키며,
    제 2 타입의 쓰기 데이터 명령에 응답해, 프로토콜에 따라 상기 제 2 타입의 쓰기 데이터 명령과 관련된 데이터가 저장되는 비휘발성 반도체 메모리에 물리적 어드레스를 판단하고, 사용자에 대한 응답 메시지에 상기 물리적 어드레스를 포함하는 데이터 저장장치.
  22. 제 21 항에 있어서,
    제 1 또는 제 2 타입의 명령과 관련된 데이터를 비휘발성 반도체 메모리에 작성하고,
    제 1 또는 제 2 타입의 명령과 관련된 메타데이터를 비휘발성 반도체 메모리 장치에 작성하도록 구성된 프로세서를 더 포함하는 데이터 저장장치.
  23. 제 20 항에 있어서,
    제 2 타입의 쓰기 명령의 메타데이터의 일부를 상기 제 2 타입의 쓰기 데이터 명령에 제공된 물리적 어드레스에 저장된 데이터와 관련된 메타데이터의 일부와 비교하고,
    제 2 타입의 쓰기 명령의 메타데이터의 일부가 상기 제 2 타입의 쓰기 데이터 명령의 물리적 어드레스에 저장된 데이터와 관련된 메타데이터의 일부와 일치하면 제 2 타입의 쓰기 명령에 응답해 물리적 어드레스를 판단하는 단계를 수행하거나,
    제 2 타입의 쓰기 명령의 메타데이터의 일부가 상기 제 2 타입의 쓰기 데이터 명령의 물리적 어드레스에 저장된 데이터와 관련된 메타데이터의 일부와 일치하지 않으면 사용자에게 에러 메시지를 반환하도록 구성된 프로세스를 더 포함하는 데이터 저장장치.
  24. 제 20 항에 있어서,
    제 2 타입의 쓰기 데이터 명령이 제 1 논리 어드레스를 포함한다고 판단하고, 메타데이터의 일부로서 제 1 논리 어드레스를 이용하거나,
    제 2 타입의 쓰기 데이터 명령이 제 1 논리 어드레스를 포함하지 않는다고 판단하고, 사용자에 대한 응답 메시지에 판단된 물리적 어드레스와 관련된 제 2 논리 어드레스를 제공하고,
    제 2 논리 어드레스를 데이터에 대한 메타데이터로 저장하도록 구성된 프로세스를 더 포함하는 데이터 저장장치.
  25. 제 20 항에 있어서,
    메타데이터는 논리 어드레스, 논리 어드레스 중 하나에 저장된 데이터의 해시, 시퀀스 번호 또는 시간 값 중 적어도 하나를 포함하는 데이터 저장장치.
  26. 제 20 항에 있어서,
    비휘발성 반도체 메모리는 물리적 어드레스, 메모리 블록을 포함한 저장 어드레스들의 그룹을 갖고, 메모리 블록이 전체적으로 소거되기 전에 한번 기록될 수 있는 특징을 갖는 것으로 구성되는 데이터 저장장치.
  27. 제 26 항에 있어서,
    복수의 블록들은 블록들의 그룹을 형성하고 블록들의 그룹은 논리 어드레스 범위 또는 물리적 어드레스 범위 중 하나와 연관되는 데이터 저장장치.
  28. 제 20 항에 있어서,
    인디렉션 테이블에서 해당 논리 어드레스로부터 분리되는 적어도 하나의 물리적 어드레스를 식별하는 TRIM 명령을 사용자로부터 수신하고,
    인디렉션 테이블에서 논리 어드레스와 관련된 물리적 어드레스의 상태를 무효로 설정하며,
    논리 어드레스로부터 물리적 어드레스를 분리하도록 구성된 프로세서를 더 포함하는 데이터 저장장치.
  29. 제 28 항에 있어서,
    TRIM 명령은 베이스 논리 블록 어드레스와 범위를 포함하는 데이터 저장장치.
  30. 제 29 항에 있어서,
    TRIM 명령에 포함된 범위의 메타데이터는 물리적 어드레스 상태가 무효로 설정되고 메타데이터가 일치될 경우 상기 물리적 어드레스가 논리 어드레스로부터 분리되는 범위의 적어도 하나의 물리적 어드레스의 메타데이터와 비교되는 데이터 저장장치.
KR1020157017953A 2013-01-08 2014-01-08 데이터 스토리지 방법 및 시스템 KR20150105323A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361750133P 2013-01-08 2013-01-08
US61/750,133 2013-01-08
PCT/US2014/010624 WO2014110095A1 (en) 2013-01-08 2014-01-08 Method and system for data storage

Publications (1)

Publication Number Publication Date
KR20150105323A true KR20150105323A (ko) 2015-09-16

Family

ID=51061905

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157017953A KR20150105323A (ko) 2013-01-08 2014-01-08 데이터 스토리지 방법 및 시스템

Country Status (4)

Country Link
US (1) US9378135B2 (ko)
JP (1) JP2016506585A (ko)
KR (1) KR20150105323A (ko)
WO (1) WO2014110095A1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170081126A (ko) * 2015-12-30 2017-07-11 삼성전자주식회사 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치, 스토리지 장치의 동작 방법, 그리고 스토리지 장치를 액세스하는 액세스 방법
KR20180019051A (ko) * 2016-08-15 2018-02-23 삼성전자주식회사 스마트 스토리지 장치 내에서 데이터 스크러빙을 실행하는 방법
KR20190017630A (ko) * 2017-08-10 2019-02-20 삼성전자주식회사 분산 소거 코딩을 위한 시스템 및 방법
KR20190143502A (ko) * 2015-11-27 2019-12-30 후아웨이 테크놀러지 컴퍼니 리미티드 저장 장치에 의해 데이터를 저장하기 위한 방법 및 저장 장치
KR20220113818A (ko) * 2019-12-30 2022-08-16 어드밴스드 마이크로 디바이시즈, 인코포레이티드 비휘발성 듀얼 인라인 메모리 모듈에 대한 커맨드 리플레이

Families Citing this family (123)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8954654B2 (en) * 2008-06-18 2015-02-10 Super Talent Technology, Corp. Virtual memory device (VMD) application/driver with dual-level interception for data-type splitting, meta-page grouping, and diversion of temp files to ramdisks for enhanced flash endurance
US9256609B2 (en) * 2012-03-08 2016-02-09 Dell Products L.P. Fixed size extents for variable size deduplication segments
US9390055B2 (en) 2012-07-17 2016-07-12 Coho Data, Inc. Systems, methods and devices for integrating end-host and network resources in distributed memory
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US10445229B1 (en) 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
US11249652B1 (en) 2013-01-28 2022-02-15 Radian Memory Systems, Inc. Maintenance of nonvolatile memory on host selected namespaces by a common memory controller
US10120792B1 (en) * 2014-01-29 2018-11-06 Avago Technologies General Ip (Singapore) Pte. Ltd. Programming an embedded flash storage device
US9454551B2 (en) * 2014-03-13 2016-09-27 NXGN Data, Inc. System and method for management of garbage collection operation in a solid state drive
KR102282006B1 (ko) * 2014-08-19 2021-07-28 삼성전자주식회사 컴퓨터 장치 및 저장 장치
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
US9513822B2 (en) 2014-09-26 2016-12-06 Hewlett Packard Enterprise Development Lp Unmap storage space
US9626286B2 (en) * 2014-10-03 2017-04-18 Sandisk Technologies Llc Hardware and firmware paths for performing memory read processes
US9798657B2 (en) * 2014-10-15 2017-10-24 Samsung Electronics Co., Ltd. Data storage device including nonvolatile memory device and operating method thereof
US9852799B2 (en) * 2014-11-19 2017-12-26 Sandisk Technologies Llc Configuration parameter management for non-volatile data storage
US11086775B2 (en) 2014-12-11 2021-08-10 Toshiba Memory Corporation Information processing device, non-transitory computer readable recording medium, and information processing system
US9977734B2 (en) 2014-12-11 2018-05-22 Toshiba Memory Corporation Information processing device, non-transitory computer readable recording medium, and information processing system
US10409526B2 (en) * 2014-12-17 2019-09-10 Violin Systems Llc Adaptive garbage collection
US10282096B1 (en) 2014-12-17 2019-05-07 Western Digital Technologies, Inc. Identification of data with predetermined data pattern
US9760281B2 (en) * 2015-03-27 2017-09-12 Intel Corporation Sequential write stream management
WO2016175028A1 (ja) * 2015-04-28 2016-11-03 日本電気株式会社 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム
US10108344B1 (en) * 2015-05-06 2018-10-23 American Megatrends, Inc. Systems, devices and methods using a solid state device as a caching medium with an SSD filtering or SSD pre-fetch algorithm
JP6398102B2 (ja) * 2015-05-29 2018-10-03 東芝メモリ株式会社 メモリシステム
TWI569275B (zh) * 2015-07-17 2017-02-01 慧榮科技股份有限公司 資料儲存裝置及其資料維護方法
US9880770B2 (en) 2015-09-02 2018-01-30 SK Hynix Inc. Supporting invalidation commands for non-volatile memory
US9569306B1 (en) 2015-12-18 2017-02-14 International Business Machines Corporation Recovery of multi-page failures in non-volatile memory system
US10152527B1 (en) * 2015-12-28 2018-12-11 EMC IP Holding Company LLC Increment resynchronization in hash-based replication
US10229051B2 (en) * 2015-12-30 2019-03-12 Samsung Electronics Co., Ltd. Storage device including nonvolatile memory device and controller, operating method of storage device, and method for accessing storage device
US10216439B2 (en) * 2016-02-02 2019-02-26 International Business Machines Corporation Protecting unallocated data within a storage volume
US11301422B2 (en) * 2016-02-23 2022-04-12 Samsung Electronics Co., Ltd. System and methods for providing fast cacheable access to a key-value device through a filesystem interface
JP6444917B2 (ja) * 2016-03-08 2018-12-26 東芝メモリ株式会社 ストレージシステム、情報処理システムおよび制御方法
US10810132B1 (en) * 2016-03-30 2020-10-20 EMC IP Holding Company, LLC Object based extent mapping for flash memory
US9880743B1 (en) * 2016-03-31 2018-01-30 EMC IP Holding Company LLC Tracking compressed fragments for efficient free space management
US10331352B2 (en) * 2016-06-06 2019-06-25 Toshiba Memory Corporation Dynamic processing of storage command based on internal operations of storage system
US9934151B2 (en) 2016-06-28 2018-04-03 Dell Products, Lp System and method for dynamic optimization for burst and sustained performance in solid state drives
US10289544B2 (en) * 2016-07-19 2019-05-14 Western Digital Technologies, Inc. Mapping tables for storage devices
US9946490B2 (en) * 2016-07-28 2018-04-17 Western Digital Technologies, Inc. Bit-level indirection defragmentation
US20180089088A1 (en) * 2016-09-27 2018-03-29 Intel Corporation Apparatus and method for persisting blocks of data and metadata in a non-volatile memory (nvm) cache
US10528463B2 (en) * 2016-09-28 2020-01-07 Intel Corporation Technologies for combining logical-to-physical address table updates in a single write operation
CN107885456B (zh) * 2016-09-29 2022-09-16 北京忆恒创源科技股份有限公司 减少io命令访问nvm的冲突
US10489289B1 (en) 2016-09-30 2019-11-26 Amazon Technologies, Inc. Physical media aware spacially coupled journaling and trim
US10540102B2 (en) 2016-09-30 2020-01-21 Amazon Technologies, Inc. Physical media aware spacially coupled journaling and replay
US20180095699A1 (en) * 2016-10-01 2018-04-05 National Tsing Hua University Memory system, memory device thereof, and method for writing to and reading from memory device thereof
TWI591533B (zh) * 2016-11-25 2017-07-11 慧榮科技股份有限公司 可用於資料儲存裝置之資料儲存方法與資料回復程序、以及採用這些方法的資料儲存裝置
US10613973B1 (en) * 2016-12-28 2020-04-07 Amazon Technologies, Inc. Garbage collection in solid state drives
US10325108B2 (en) * 2016-12-30 2019-06-18 Intel Corporation Method and apparatus for range based checkpoints in a storage device
US11069418B1 (en) 2016-12-30 2021-07-20 EMC IP Holding Company LLC Method and system for offline program/erase count estimation
US10338983B2 (en) 2016-12-30 2019-07-02 EMC IP Holding Company LLC Method and system for online program/erase count estimation
US10289550B1 (en) 2016-12-30 2019-05-14 EMC IP Holding Company LLC Method and system for dynamic write-back cache sizing in solid state memory storage
JP6765321B2 (ja) * 2017-02-28 2020-10-07 キオクシア株式会社 メモリシステムおよび制御方法
US10235283B2 (en) * 2017-03-14 2019-03-19 International Business Machines Corporation Techniques for supporting in-place updates with a log-structured array controller
US10403366B1 (en) * 2017-04-28 2019-09-03 EMC IP Holding Company LLC Method and system for adapting solid state memory write parameters to satisfy performance goals based on degree of read errors
US10290331B1 (en) 2017-04-28 2019-05-14 EMC IP Holding Company LLC Method and system for modulating read operations to support error correction in solid state memory
US11102294B2 (en) * 2017-06-09 2021-08-24 Samsung Electronics Co., Ltd. System and method for supporting energy and time efficient content distribution and delivery
CN109101185B (zh) * 2017-06-20 2023-08-11 北京忆恒创源科技股份有限公司 固态存储设备及其写命令和读命令处理方法
US10387246B2 (en) * 2017-06-26 2019-08-20 Western Digital Technologies, Inc. Method and system for scanning for erased flash memory pages
CN109213423B (zh) * 2017-06-30 2024-01-26 北京忆恒创源科技股份有限公司 基于地址屏障无锁处理并发io命令
CN109388520B (zh) * 2017-08-08 2022-02-15 深圳大心电子科技有限公司 数据备份方法、数据恢复方法以及存储控制器
KR102435890B1 (ko) 2017-08-17 2022-08-25 삼성전자주식회사 스토리지 장치의 어드레스 맵핑 방법 및 동작 방법
WO2019049129A1 (en) * 2017-09-07 2019-03-14 Kaminario Technologies Ltd. DIRECT READ CONTROL IN A DATA STORAGE SYSTEM
JP2019056981A (ja) 2017-09-19 2019-04-11 東芝メモリ株式会社 メモリシステム
JP6785204B2 (ja) 2017-09-21 2020-11-18 キオクシア株式会社 メモリシステムおよび制御方法
CN109558271B (zh) * 2017-09-26 2023-02-24 深圳大心电子科技有限公司 数据备份方法、数据恢复方法以及存储控制器
US10558393B2 (en) * 2017-10-20 2020-02-11 Qualcomm Incorporated Controller hardware automation for host-aware performance booster
KR20190044968A (ko) * 2017-10-23 2019-05-02 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US10430117B2 (en) 2017-10-23 2019-10-01 Micron Technology, Inc. Host accelerated operations in managed NAND devices
KR102530583B1 (ko) * 2017-10-31 2023-05-09 삼성전자주식회사 저장 장치 및 메모리 시스템
US11474724B2 (en) * 2018-01-25 2022-10-18 Vmware, Inc. System and method for speed up data rebuild in a distributed storage system with local deduplication
US20190042460A1 (en) * 2018-02-07 2019-02-07 Intel Corporation Method and apparatus to accelerate shutdown and startup of a solid-state drive
US10740181B2 (en) 2018-03-06 2020-08-11 Western Digital Technologies, Inc. Failed storage device rebuild method
US10963375B1 (en) * 2018-03-23 2021-03-30 Amazon Technologies, Inc. Managing maintenance operations for a distributed system
US11422726B1 (en) * 2018-05-01 2022-08-23 Amazon Technologies, Inc. Efficient storage device data move operation based on priority of garbage collection command
CN110471788B (zh) * 2018-05-08 2024-03-15 美光科技公司 异步功率损耗影响的数据结构
US10970205B2 (en) 2018-05-31 2021-04-06 Micron Technology, Inc. Logical-to-physical data structures for tracking logical block addresses indicative of a collision
JP6824929B2 (ja) * 2018-06-07 2021-02-03 株式会社日立製作所 記憶制御システム及び記憶制御方法
US10552316B2 (en) 2018-06-29 2020-02-04 Micron Technology, Inc. Controlling NAND operation latency
US11036651B2 (en) 2018-06-29 2021-06-15 Micron Technology, Inc. Host side caching security for flash memory
US10649843B2 (en) 2018-08-03 2020-05-12 Western Digital Technologies, Inc. Storage systems with peer data scrub
US10824526B2 (en) 2018-08-03 2020-11-03 Western Digital Technologies, Inc. Using failed storage device in peer-to-peer storage system to perform storage-centric task
US10901848B2 (en) 2018-08-03 2021-01-26 Western Digital Technologies, Inc. Storage systems with peer data recovery
US10831603B2 (en) 2018-08-03 2020-11-10 Western Digital Technologies, Inc. Rebuild assist using failed storage device
KR20200016076A (ko) * 2018-08-06 2020-02-14 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
JP7337228B2 (ja) 2018-09-19 2023-09-01 キオクシア株式会社 メモリシステムおよび制御方法
KR20200033459A (ko) * 2018-09-20 2020-03-30 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
KR20200037584A (ko) * 2018-10-01 2020-04-09 에스케이하이닉스 주식회사 메모리 시스템, 그것의 동작방법 및 메모리 시스템을 포함하는 데이터베이스 시스템
US10802741B2 (en) * 2018-11-12 2020-10-13 Vmware, Inc. Pre-zeroing blocks in files using automatic file unmap framework
KR20200059936A (ko) * 2018-11-22 2020-05-29 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
TWI702497B (zh) * 2018-12-26 2020-08-21 群聯電子股份有限公司 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元
US11182258B2 (en) 2019-01-04 2021-11-23 Western Digital Technologies, Inc. Data rebuild using dynamic peer work allocation
KR20200100956A (ko) * 2019-02-19 2020-08-27 에스케이하이닉스 주식회사 메모리 시스템의 맵 데이터 관리 방법 및 장치
KR20200123684A (ko) 2019-04-22 2020-10-30 에스케이하이닉스 주식회사 메모리 시스템에서 맵 정보를 전송하는 장치
KR20200137181A (ko) 2019-05-29 2020-12-09 에스케이하이닉스 주식회사 메모리 시스템에서 맵정보를 전송하는 장치
KR20200139433A (ko) 2019-06-04 2020-12-14 에스케이하이닉스 주식회사 컨트롤러의 동작 방법 및 메모리 시스템
KR20210004322A (ko) 2019-07-04 2021-01-13 에스케이하이닉스 주식회사 메모리 시스템에서 맵정보 및 리드카운트를 전송하는 장치 및 방법
KR20210004502A (ko) 2019-07-05 2021-01-13 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
US11422942B2 (en) 2019-04-02 2022-08-23 SK Hynix Inc. Memory system for utilizing a memory included in an external device
KR20210011216A (ko) 2019-07-22 2021-02-01 에스케이하이닉스 주식회사 메모리 시스템의 메타 데이터 관리 방법 및 장치
KR20210014338A (ko) 2019-07-30 2021-02-09 에스케이하이닉스 주식회사 데이터 저장 장치, 데이터 처리 시스템 및 데이터 저장 장치의 동작 방법
KR20210011176A (ko) 2019-07-22 2021-02-01 에스케이하이닉스 주식회사 메모리 시스템의 액세스 동작 방법 및 장치
KR20200132047A (ko) 2019-05-15 2020-11-25 에스케이하이닉스 주식회사 메모리 시스템에서 맵 데이터를 전송하는 방법 및 장치
KR20210011201A (ko) 2019-07-22 2021-02-01 에스케이하이닉스 주식회사 메모리 시스템 및 그의 온도 조절 방법
KR20200119059A (ko) 2019-04-09 2020-10-19 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
KR20200122086A (ko) 2019-04-17 2020-10-27 에스케이하이닉스 주식회사 메모리 시스템에서 맵 세그먼트를 전송하는 방법 및 장치
KR20210001546A (ko) 2019-06-28 2021-01-06 에스케이하이닉스 주식회사 슬립모드에서 메모리 시스템의 내부데이터를 전송하는 장치 및 방법
KR20200139913A (ko) 2019-06-05 2020-12-15 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 메타 정보 저장 장치
TWI725416B (zh) * 2019-04-23 2021-04-21 群聯電子股份有限公司 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置
CN111858389B (zh) * 2019-04-30 2023-07-04 群联电子股份有限公司 数据写入方法、存储器控制电路单元以及存储器存储装置
US11237953B2 (en) * 2019-05-21 2022-02-01 Micron Technology, Inc. Host device physical address encoding
CN112115067A (zh) * 2019-06-21 2020-12-22 慧荣科技股份有限公司 闪存物理资源集合管理装置及方法及计算机可读取存储介质
US11216218B2 (en) * 2019-07-15 2022-01-04 Micron Technology, Inc. Unmap data pattern for coarse mapping memory sub-system
US11474865B2 (en) * 2019-08-23 2022-10-18 Micron Technology, Inc. Allocation schema for a scalable memory area
CN110515560A (zh) * 2019-08-27 2019-11-29 江苏华存电子科技有限公司 一种用于记录仪的有效存储方式
KR20210111527A (ko) 2020-03-03 2021-09-13 에스케이하이닉스 주식회사 메모리 시스템에서 가비지 컬렉션을 수행하는 장치 및 방법
KR20210111993A (ko) 2020-03-04 2021-09-14 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작 방법
US20210349837A1 (en) * 2020-05-07 2021-11-11 Samsung Electronics Co., Ltd. Systems, methods, and devices for near data processing
US11429453B1 (en) * 2020-06-26 2022-08-30 Amazon Technologies, Inc. Replicating and managing aggregated descriptive data for cloud services
KR20220021186A (ko) 2020-08-13 2022-02-22 에스케이하이닉스 주식회사 데이터 처리 시스템 내 데이터를 공유하는 장치 및 방법
CN112000591B (zh) * 2020-08-24 2023-12-05 深圳忆联信息系统有限公司 可指定逻辑区块地址的扫描ssd方法、装置、计算机设备及存储介质
CN112905122B (zh) * 2021-02-20 2024-04-09 炬芯科技股份有限公司 一种存储数据的方法及装置
JP7232281B2 (ja) * 2021-03-29 2023-03-02 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法
CN113254265B (zh) * 2021-05-10 2023-03-14 苏州库瀚信息科技有限公司 基于固态硬盘的快照实现方法、存储系统
US11640375B2 (en) * 2021-06-23 2023-05-02 Vmware, Inc. Avoiding data inconsistency in a file system using 2-level synchronization
CN113722334A (zh) * 2021-09-10 2021-11-30 京东科技控股股份有限公司 数据处理的方法、装置、电子设备及介质
CN115079957B (zh) * 2022-07-20 2023-08-04 阿里巴巴(中国)有限公司 请求处理方法、装置、控制器、设备及存储介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4085478B2 (ja) * 1998-07-28 2008-05-14 ソニー株式会社 記憶媒体及び電子機器システム
US7877542B2 (en) * 2000-01-06 2011-01-25 Super Talent Electronics, Inc. High integration of intelligent non-volatile memory device
JP2008090876A (ja) * 2006-09-29 2008-04-17 Toshiba Corp 不揮発性半導体記憶装置
US8151060B2 (en) * 2006-11-28 2012-04-03 Hitachi, Ltd. Semiconductor memory system having a snapshot function
US7877524B1 (en) * 2007-11-23 2011-01-25 Pmc-Sierra Us, Inc. Logical address direct memory access with multiple concurrent physical ports and internal switching
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US8151032B2 (en) * 2008-06-26 2012-04-03 Microsoft Corporation Direct memory access filter for virtualized operating systems
US8200922B2 (en) 2008-12-17 2012-06-12 Netapp, Inc. Storage system snapshot assisted by SSD technology
US8176295B2 (en) * 2009-04-20 2012-05-08 Imation Corp. Logical-to-physical address translation for a removable data storage device
KR20120132820A (ko) * 2011-05-30 2012-12-10 삼성전자주식회사 스토리지 디바이스, 스토리지 시스템 및 스토리지 디바이스의 가상화 방법
US9043565B2 (en) * 2012-09-07 2015-05-26 Kabushiki Kaisha Toshiba Storage device and method for controlling data invalidation
US9652376B2 (en) * 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190143502A (ko) * 2015-11-27 2019-12-30 후아웨이 테크놀러지 컴퍼니 리미티드 저장 장치에 의해 데이터를 저장하기 위한 방법 및 저장 장치
KR20170081126A (ko) * 2015-12-30 2017-07-11 삼성전자주식회사 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치, 스토리지 장치의 동작 방법, 그리고 스토리지 장치를 액세스하는 액세스 방법
KR20180019051A (ko) * 2016-08-15 2018-02-23 삼성전자주식회사 스마트 스토리지 장치 내에서 데이터 스크러빙을 실행하는 방법
KR20190017630A (ko) * 2017-08-10 2019-02-20 삼성전자주식회사 분산 소거 코딩을 위한 시스템 및 방법
KR20220113818A (ko) * 2019-12-30 2022-08-16 어드밴스드 마이크로 디바이시즈, 인코포레이티드 비휘발성 듀얼 인라인 메모리 모듈에 대한 커맨드 리플레이

Also Published As

Publication number Publication date
JP2016506585A (ja) 2016-03-03
US9378135B2 (en) 2016-06-28
WO2014110095A1 (en) 2014-07-17
US20140195725A1 (en) 2014-07-10

Similar Documents

Publication Publication Date Title
US9378135B2 (en) Method and system for data storage
US11449240B1 (en) Techniques for supporting erasure coding with flash memory controller
US11354234B1 (en) Memory controller for nonvolatile memory with targeted erase from host and write destination selection based on wear
US8447918B2 (en) Garbage collection for failure prediction and repartitioning
US9081690B2 (en) Storage system and management method of control information therein
US9134917B2 (en) Hybrid media storage system architecture
US10884630B2 (en) Storage system
US7831764B2 (en) Storage system having plural flash memory drives and method for controlling data storage
US9158700B2 (en) Storing cached data in over-provisioned memory in response to power loss
US8131969B2 (en) Updating system configuration information
US20140189203A1 (en) Storage apparatus and storage control method
US20170220481A1 (en) Raid Data Migration Through Stripe Swapping
WO2015068233A1 (ja) ストレージシステム
JP6817340B2 (ja) 計算機
US10853257B1 (en) Zero detection within sub-track compression domains
US11315028B2 (en) Method and apparatus for increasing the accuracy of predicting future IO operations on a storage system
CN113722131A (zh) 用于促进存储设备中的快速崩溃恢复的方法和系统
US11144445B1 (en) Use of compression domains that are more granular than storage allocation units
US11893269B2 (en) Apparatus and method for improving read performance in a system
JP7475989B2 (ja) メモリシステムおよび制御方法
EP4303735A1 (en) Systems, methods, and devices for reclaim unit formation and selection in a storage device

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid