KR101494051B1 - 불휘발성 메모리 시스템들을 위한 위브 시퀀스 카운터 - Google Patents

불휘발성 메모리 시스템들을 위한 위브 시퀀스 카운터 Download PDF

Info

Publication number
KR101494051B1
KR101494051B1 KR20120102880A KR20120102880A KR101494051B1 KR 101494051 B1 KR101494051 B1 KR 101494051B1 KR 20120102880 A KR20120102880 A KR 20120102880A KR 20120102880 A KR20120102880 A KR 20120102880A KR 101494051 B1 KR101494051 B1 KR 101494051B1
Authority
KR
South Korea
Prior art keywords
page
nvm
wsc
value
data
Prior art date
Application number
KR20120102880A
Other languages
English (en)
Other versions
KR20130030241A (ko
Inventor
다니엘 제이. 포스트
니르 야콥 와크라트
바딤 크멜니트스키
Original Assignee
애플 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 애플 인크. filed Critical 애플 인크.
Publication of KR20130030241A publication Critical patent/KR20130030241A/ko
Application granted granted Critical
Publication of KR101494051B1 publication Critical patent/KR101494051B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into 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/7202Allocation control and policies
    • 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/7207Details relating to flash memory management management of metadata or control data
    • 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/7211Wear leveling

Abstract

불휘발성 메모리("NVM") 시스템들을 위한 위브 시퀀스 카운터("WSC")를 제공하기 위한 시스템들 및 방법들이 개시된다. WSC는 NVM의 각각의 페이지가 프로그래밍되는 시퀀스를 식별할 수 있다. "위브" 양태는 복수의 블록들이 한번에 프로그래밍을 위해 오픈될 수 있어, 이들 블록들의 페이지들이 "위빙된" 방식으로 프로그래밍될 수 있게 한다는 사실을 가리킬 수 있다. 호스트 위브 시퀀스 카운터("HWSC")를 제공하기 위한 시스템들 및 방법들도 개시된다. 새로운 데이터가 처음에 NVM에 프로그래밍될 때마다, 이 데이터는 특정 HWSC와 연관될 수 있다. (예를 들어, 웨어 레벨링 목적들 등을 위해) 데이터가 새로운 페이지에 이동되더라도, 데이터와 연관된 HWSC는 변하지 않을 수 있다. WSC 및 HWSC는 예를 들어, 롤백을 수행함에 있어서, 논리적-대-물리적 맵핑들을 구축함에 있어서, 정적-대-동적 페이지 상태들을 결정함에 있어서, 및 유지보수 동작들(예를 들어, 웨어 레벨링)을 수행함에 있어서, 도울 수 있다.

Description

불휘발성 메모리 시스템들을 위한 위브 시퀀스 카운터{WEAVE SEQUENCE COUNTER FOR NON-VOLATILE MEMORY SYSTEMS}
NAND 플래시 메모리와, 다른 타입의 불휘발성 메모리들("NVMs")이 대용량 저장을 위해 흔히 이용된다. 예를 들어, 포터블 미디어 플레이어들과 같은 소비자 전자제품들은 종종 음악, 비디오들, 및 다른 미디어를 저장하기 위해 플래시 메모리를 포함한다.
NVM은 복수의 수퍼 블록들을 포함할 수 있고, 각각의 수퍼 블록은 몇개의 블록들로 조직될 수 있다. 유사하게, NVM의 각각의 블록은 몇개의 페이지들로 조직될 수 있다. 그러나, NVM의 내용에 관한 일부 정보 또는 통계는 블록 레벨 "입상도(granularity)"에서 제공될 수 있다. 다시 말해, 이러한 정보는, 그 블록 내의 개별 페이지들에 관한 특정 정보를 제공하지 않고, 오직 블록 전체에 관해 이용가능할 수 있다.
이 블록 레벨 입상도는 데이터 일관성(data coherency)을 유지하는 방식으로 블록들 내의 데이터를 위빙(weave)하는 NVM 시스템의 능력을 제한한다. 데이터 일관성 없이, 롤백(rollback), 웨어 레벨링(wear leveling), 쓰레기 수집(garbage collection)과 같은 특정 NVM 동작들이 실행가능하지 않을 수 있다. 따라서, 필요한 것은, 일관성 있는 방식으로 블록들 내의 데이터를 위빙하는 능력이다.
불휘발성 메모리("NVM") 시스템들을 위한 위브 시퀀스 카운터(weave sequence counter; "WSC")를 제공하기 위한 시스템들 및 방법들이 개시된다. WSC는 NVM의 각각의 페이지가 프로그래밍되는 시퀀스를 식별할 수 있다. "위브" 양태는 2개 이상의 블록들이 동시에 프로그래밍을 위해 오픈될 수 있어, 이들 블록들의 페이지들이 "위빙된(woven)" 방식으로 프로그래밍될 수 있게 한다는 사실을 가리킬 수 있다. WSC는 예를 들어, 롤백 동작들을 수행함에 있어서 및 논리적-대-물리적 테이블 맵핑(logical-to-physical table mapping)을 재구축함에 있어서, NVM 시스템을 도울 수 있다.
호스트 위브 시퀀스 카운터(host weave sequence counter; "HWSC")를 제공하기 위한 시스템들 및 방법들도 개시된다. (예를 들어, 웨어 레벨링 목적 등을 위해 이동 또는 재기입되기보다는) 데이터가 처음에 NVM의 페이지에 프로그래밍될 때마다, 그 페이지는 HWSC를 할당받을 수 있다. 데이터가 새로운 페이지에 이동될 때마다 갱신될 수 있는 WSC와 달리, 데이터의 특정 세트에 할당된 HWSC는 변하지 않을 수 있다. 따라서, 데이터가 웨어 레벨링, 쓰레기 수집, 등을 위해 새로운 페이지에 이동되더라도, 그 데이터와 연관된 HWSC는 동일하게 남아 있을 수 있다. HWSC는 예를 들어, 페이지들의 정적-대-동적 상태를 결정함에 있어서 및 웨어 레벨링 및 쓰레기 수집 동작들을 수행함에 있어서, NVM 시스템을 도울 수 있다.
본 발명의 상기 및 다른 양태들 및 이점들은 첨부 도면들과 결합하여 취해진, 다음의 상세한 설명을 고려하면 더욱 명백하게 될 것이고, 첨부 도면에서 동일한 참조 문자들은 전체에 걸쳐서 동일한 부분들을 가리킨다.
도 1 및 2는 본 발명의 다양한 실시예들에 따라 구성되는 전자 디바이스들의 블록도들이다.
도 3은 본 발명의 다양한 실시예들에 따라 위빙되는 NVM의 블록들의 기능도이다.
도 4는 본 발명의 다양한 실시예들에 따른 롤백 동작 중에 NVM의 블록들의 기능도이다.
도 5는 본 발명의 다양한 실시예들에 따른 위브 시퀀스 카운터들을 이용하는 롤백 동작의 흐름도이다.
도 6은 본 발명의 다양한 실시예들에 따른 NVM의 페이지들의 정적-대-동적 결정의 흐름도이다.
도 7은 본 발명의 다양한 실시예들에 따른 웨어 레벨링의 기능도이다.
도 8은 본 발명의 다양한 실시예들에 따른 웨어 레벨링 절차의 흐름도이다.
불휘발성 메모리("NVM") 시스템들을 위한 위브 시퀀스 카운터("WSC")를 제공하기 위한 시스템들 및 방법들이 개시된다. WSC는 NVM의 각각의 페이지가 프로그래밍되는 시퀀스를 식별할 수 있다. "위브(weave)" 양태는 2개 이상의 블록들이 동시에 프로그래밍을 위해 오픈될 수 있어, 이들 블록들의 페이지들이 "위빙된(woven)" 방식으로 프로그래밍될 수 있게 한다는 사실을 가리킬 수 있다.
언클린 셧다운(unclean shutdown)의 이벤트 또는 다른 시스템 재부트 이벤트에서, NVM 시스템은 NVM의 하나 이상의 논리적-대-물리적 맵핑 테이블들을 재구축할 필요가 있을 수 있다. 또한, 이 맵핑 테이블은 유효(예를 들어, 손상되지 않은) 데이터만을 포함할 수 있다. 재구축 프로세스 동안, 무효 데이터를 갖는 손상 페이지를 배치시, NVM 시스템은 그 손상 페이지의 특정 WSC 값을 결정하기 위해 NVM의 블록들의 페이지들의 WSC 값들을 검사할 수 있다. 그 다음에 NVM 시스템은, 그것이 파일 시스템 및 데이터베이스 저널링 기대(file system and database journaling expectations)에 대하여 일관성이 없기 때문에 손상 페이지의 WSC 값보다 큰 WSC 값을 갖는 임의의 페이지가 채택될 수 없다는 것을 결정할 수 있다. 그 다음에 NVM 시스템은 임의의 이러한 무효 페이지들을 무시하고 손상 페이지의 WSC 값보다 작은 WSC 값들을 갖는 페이지들만을 이용하여 논리적-대-물리적 맵핑 테이블을 구축함으로써 안전한 상태로 시스템을 "롤백"할 수 있다.
논리적-대-물리적 맵핑 테이블들이 재구축될 때, 시간 순서 일관성(time-order coherency)이 유지된다. 일부 경우들에서, 맵핑 테이블은 WSC 값들의 오름차순으로 페이지들을 순차적으로 검사함으로써 재구축될 수 있다. 2개의 페이지들이 각각, 그것들이 동일한 논리적 어드레스에 맵핑됨을 표시하는 경우에, 더 높은 WSC 값을 포함하는 페이지에 우선순위가 주어질 수 있고 다른 페이지에 우선할 수 있다. 다시 말해, 더 높은 WSC 값을 갖는 페이지는 더 나중의 시점에서 그의 논리적 어드레스로 프로그램되었기 때문에, 이 페이지는 올바른 논리적-대-물리적 맵핑을 포함하고 따라서 맵핑 테이블에 이용되어야 함이 결정될 수 있다. 유사하게, 더 작은 WSC 값을 포함하는 페이지는 에러가 있는, 구식의 논리적-대-물리적 맵핑을 포함하는 것으로 결정될 수 있고, 따라서 맵핑 테이블을 구축하는 데 이용되어서는 안 된다.
호스트 위브 시퀀스 카운터("HWSC")를 제공하기 위한 시스템들 및 방법들도 개시된다. (예를 들어, 웨어 레벨링 목적 등을 위해 이동 또는 재기입되기보다는) 데이터가 처음에 NVM의 페이지에 기입될 때마다, 그 페이지는 HWSC를 할당받을 수 있다. HWSC는 현재의 WSC와 동일한 값으로서 설정될 수 있다. 오래된 데이터가 새로운 페이지에 이동될 때마다 갱신될 수 있는 WSC와 달리, 데이터의 특정 세트에 할당된 HWSC는 변하지 않을 수 있다. 예시적인 시나리오로서, 논리적 블록 어드레스(logical block address; "LBA") X와 연관된 새로운 데이터가 페이지 A에 저장된다고 가정한다. 현재의 WSC는 23이고, 따라서 페이지 A는 WSC = 23 및 HWSC = 23을 할당받는다. 현재의 WSC 값이 이제 82인 더 나중의 시점에, LBA X와 연관된 데이터는 페이지 B로 이동된다(예를 들어, 데이터는 웨어 레벨링, 쓰레기 수집, 등을 위해 이동된다). 페이지 B는 새로운 WSC = 82를 할당받고 오래된 HWSC = 23을 유지한다.
일부 실시예들에서, HWSC는 페이지들의 정적-대-동적 상태를 결정함에 있어서 NVM 시스템을 도울 수 있다. 특히, HWSC는 페이지 내에 저장된 데이터가 얼마나 오래되었는지에 관한 일반적인 아이디어를 제공할 수 있다. 데이터가 더 오래될 때, 그것은 그것이 원래 프로그래밍된 이후에 이동되지 않았기 때문에 이러한 데이터가 정적인 것으로 고려될 수 있을 가능성이 많을 수 있다. 따라서, 데이터의 일반적인 나이는 그 데이터를 저장하는 페이지와 연관된 HWSC 값과 현재의 WSC 값 사이의 차이를 계산함으로써 결정될 수 있다. 이 차이가 임계값보다 크면, 그 페이지에 저장된 데이터는 데이터가 프로그래밍될 블록 또는 수퍼 블록을 선택하는 것과 관련하여 정적인 것으로 고려될 수 있다. 차이가 임계값보다 작으면, 페이지 내에 저장된 데이터는 예를 들어, 데이터가 프로그래밍될 블록 또는 수퍼 블록을 선택하는 것과 관련하여 동적인 것으로 고려될 수 있다.
일부 실시예들에서, HWSC에 의해 제공되는 정적-대-동적 결정은 웨어 레벨링 및 쓰레기 수집과 같은 유지보수 동작들을 수행함에 있어서 NVM 시스템을 도울 수 있다. NVM의 수명을 연장하기 위해서, NVM의 블록들 전부에 대해 유사한 웨어(wear)를 가지는 것이 바람직하다. 정적 페이지들은 일반적으로 빈번하게 기입 및 재기입되지 않기 때문에, 정적인 것으로 결정된 페이지들은 높은 사이클 블록(high-cycle block)(예를 들어, 이미 비교적 큰 횟수 소거되고 프로그래밍된 블록)에 함께 저장될 수 있다. 이것은 블록이 미래에 소거 및 재프로그래밍될 가능성을 줄임으로써 높은 사이클 블록에서의 추가 웨어를 줄이는 것을 도울 수 있다. 유사하게, 동적인 것으로 결정된 페이지들은 낮은 사이클 블록(low-cycle block)(예를 들어, 오직 비교적 작은 횟수 소거되고 프로그래밍된 블록)에 함께 저장될 수 있다.
도 1은 전자 디바이스(100)의 블록도를 예시한다. 일부 실시예들에서, 전자 디바이스(100)는 포터블 미디어 플레이어, 셀룰러 전화기, 포켓 사이즈 퍼스널 컴퓨터, 퍼스널 디지털 어시스턴스(personal digital assistance; "PDA"), 데스크톱 컴퓨터, 랩톱 컴퓨터, 및 임의의 다른 적절한 타입의 전자 디바이스일 수 있거나, 이것을 포함할 수 있다.
전자 디바이스(100)는 시스템 온 칩(system-on-a-chip; "SoC")(110) 및 불휘발성 메모리(non-volatile memory; "NVM")(120)를 포함할 수 있다. 불휘발성 메모리(120)는 부동 게이트 또는 전하 트랩핑 기술에 기초한 NAND 플래시 메모리, NOR 플래시 메모리, EPROM(erasable programmable read only memory), EEPROM(electrically erasable programmable read only memory), FRAM(Ferroelectric RAM), MRAM(magnetoresistive RAM), 또는 그의 임의의 조합을 포함할 수 있다.
NVM(120)은 "블록들"로 조직될 수 있고, 이것은 가장 작은 소거 가능 단위일 수 있고, 프로그래밍 또는 판독될 수 있는 가장 작은 단위일 수 있는 "페이지들"로 더 조직될 수 있다. 일부 실시예들에서, NVM(120)은 복수의 집적 회로들을 포함할 수 있고, 각각의 집적 회로는 복수의 블록들을 가질 수 있다. 대응하는 집적 회로들로부터의 메모리 위치들(예를 들어, 블록들 또는 블록들의 페이지들)은 "수퍼 블록들"을 형성할 수 있다. NVM(120)의 각각의 메모리 위치(예를 들어, 페이지 또는 블록)는 물리적 어드레스(예를 들어, 물리적 페이지 어드레스 또는 물리적 블록 어드레스)를 이용하여 참조될 수 있다. (예를 들어, NVM(120)에 저장된 정보의 에러 검출 및/또는 정정을 제공하기 위한) ECC 데이터와 같은 메타데이터, 위브 시퀀스 카운터 값들, 및 호스트 위브 시퀀스 카운터들이 NVM(120)의 각각의 페이지에 포함될 수 있다.
시스템 온 칩(110)은 SoC 제어 회로(112), 메모리(114), 및 NVM 인터페이스(118)를 포함할 수 있다. SoC 제어 회로(112)는 SoC(110) 및 SoC(110) 또는 전자 디바이스(100)의 다른 컴포넌트들의 일반적인 동작들 및 기능들을 제어할 수 있다. 예를 들어, 애플리케이션 또는 오퍼레이팅 시스템의 사용자 입력들 및/또는 명령어들에 응답하여, SoC 제어 회로(112)는 NVM(120)으로부터 데이터를 획득하거나 NVM(120)에 데이터를 저장하기 위해 NVM 인터페이스(118)에 대해 판독 또는 기입 요구들을 발행할 수 있다. 명확함을 위해, 데이터는 사용자 또는 사용자 애플리케이션과 직접 연관되지 않을 수 있지만, SoC 제어 회로(112)가 저장 또는 검색을 위해 요구할 수 있는 데이터는 "사용자 데이터"라고 할 수 있다. 오히려, 사용자 데이터는 SoC 제어 회로(112)에 의해 (예를 들어, 애플리케이션 또는 오퍼레이팅 시스템을 통해) 발생 또는 획득된 디지털 정보의 임의의 적절한 시퀀스일 수 있다.
SoC 제어 회로(112)는 하드웨어, 소프트웨어, 및 펌웨어의 임의의 조합과, 전자 디바이스(100)의 기능을 구동하는 동작을 하는 임의의 컴포넌트들, 회로, 또는 로직을 포함할 수 있다. 예를 들어, SoC 제어 회로(112)는 NVM(120) 또는 메모리(114)에 저장된 소프트웨어/펌웨어의 제어하에서 동작하는 하나 이상의 프로세서를 포함할 수 있다.
메모리(114)는 RAM(random access memory)(예를 들어, SRAM(static RAM), DRAM(dynamic random access memory), SDRAM(synchronous dynamic random access memory), DDR(double-data-rate) RAM), 캐시 메모리, ROM(read-only memory), 또는 그의 임의의 조합과 같은, 임의의 적절한 타입의 휘발성 메모리를 포함할 수 있다. 메모리(114)는 불휘발성 메모리(120)로 프로그래밍하거나 그로부터 판독하기 위한 사용자 데이터를 임시로 저장할 수 있는 데이터 소스를 포함할 수 있다. 일부 실시예들에서, 메모리(114)는 SoC 제어 회로(112)의 부분으로서 구현되는 임의의 프로세서들을 위한 메인 메모리로서 작용할 수 있다.
NVM 인터페이스(118)는 SoC 제어 회로(112)와 NVM(120) 사이의 인터페이스 또는 드라이버로서 작용하도록 구성되는 하드웨어, 소프트웨어, 및/또는 펌웨어의 임의의 적절한 조합을 포함할 수 있다. NVM 인터페이스(118)에 포함된 임의의 소프트웨어 모듈들에 대해, 대응하는 프로그램 코드가 NVM(120) 또는 메모리(114)에 저장될 수 있다.
NVM 인터페이스(118)는 SoC 제어 회로(112)가 NVM(120)에 액세스하고 NVM(120)의 메모리 위치들(예를 들어, 페이지들, 블록들, 수퍼 블록들, 집적 회로들) 및 그 안에 저장된 데이터(예를 들어, 사용자 데이터)를 관리할 수 있게 하는 다양한 기능을 수행할 수 있다. 예를 들어, NVM 인터페이스(118)는 SoC 제어 회로(112)로부터 판독 또는 기입 요구들을 해석하고, 웨어 레벨링을 수행하고, 쓰레기 수집을 수행하고, NVM(120)의 버스 프로토콜과 호환가능한 판독 및 프로그램 명령어들을 발생하고, 위브 시퀀스 카운터 값들을 페이지들에 할당하고, 호스트 위브 시퀀스 카운터 값들을 페이지들에 할당할 수 있다.
NVM 인터페이스(118) 및 SoC 제어 회로(112)는 별개의 모듈들로서 도시되지만, 이것은 본 발명의 실시예들의 설명을 단순하게 하기 위한 것일 뿐이다. 이들 모듈들은 하드웨어 컴포넌트들, 소프트웨어 컴포넌트들, 또는 둘다를 공유할 수 있다는 것을 이해해야 한다. 예를 들어, SoC 제어 회로(112)는 NVM 인터페이스(118)에 대한 소프트웨어 기반 메모리 드라이버를 실행할 수 있다.
일부 실시예들에서, 전자 디바이스(100)는 NVM(120) 및 NVM 인터페이스(118)의 일부 또는 전부를 포함하는, 플래시 메모리 드라이브 또는 SD 카드와 같은, 타겟 디바이스를 포함할 수 있다. 이들 실시예들에서, SoC(110) 또는 SoC 제어 회로(112)는 타겟 디바이스를 위한 호스트 컨트롤러로서 작용할 수 있다. 예를 들어, 호스트 컨트롤러로서, SoC(110)는 타겟 디바이스에 대하여 판독 및 기입 요구들을 발행할 수 있다.
도 2는 다양한 실시예에 따른 전자 디바이스(100)(도 1)의 펌웨어, 소프트웨어, 및/또는 하드웨어 컴포넌트들의 일부를 더 상세하게 도시할 수 있는, 전자 디바이스(200)의 블록도를 도시한다. 전자 디바이스(200)는 도 1과 관련하여 위에서 설명한 특징들 및 기능들 중 임의의 것을 가질 수 있고, 반대의 경우도 마찬가지이다. 도시된 바와 같이, 점선은 층들의 경계를 정한다. 어느 컴포넌트들이 경계 선 내에 있는지의 도시는 단지 예시이고, 하나 이상의 컴포넌트들이 상이한 층과 제휴(affiliated)될 수 있다는 것을 이해한다.
전자 디바이스(200)는 파일 시스템(210), NVM 드라이버(212), NVM 버스 컨트롤러(216), 및 NVM(220)을 포함할 수 있다. 일부 실시예들에서, 파일 시스템(210) 및 NVM 드라이버(212)는 소프트웨어 또는 펌웨어 모듈들일 수 있고, NVM 버스 컨트롤러(216) 및 NVM(220)은 하드웨어 모듈들일 수 있다. 따라서, 이들 실시예들에서, NVM 드라이버(212)는 NVM 인터페이스(218)의 소프트웨어 또는 펌웨어 양태를 표현할 수 있고, NVM 버스 컨트롤러(216)는 NVM 인터페이스(218)의 하드웨어 양태를 표현할 수 있다.
파일 시스템(210)은 FAT(File Allocation Table) 파일 시스템 또는 HFS+(Hierarchical File System Plus)와 같은 임의의 적절한 타입의 파일 시스템을 포함할 수 있고, 전자 디바이스(200)의 오퍼레이팅 시스템의 부분(예를 들어, 도 1의 SoC 제어 회로(112)의 부분)일 수 있다. 일부 실시예들에서, 파일 시스템(210)은 페이지들의 논리적-대-물리적 맵핑을 제공하는 플래시 파일 시스템을 포함할 수 있다. 이들 실시예들에서, 파일 시스템(210)은 아래 논의된 NVM 드라이버(212)의 기능들의 일부 또는 전부를 수행할 수 있고, 따라서 파일 시스템(210) 및 NVM 드라이버(212)는 별개의 모듈들일 수도 그렇지 않을 수도 있다.
파일 시스템(210)은 애플리케이션 및 오퍼레이팅 시스템을 위한 파일 및 폴더 구조들을 관리할 수 있다. 파일 시스템(210)은 전자 디바이스(200)에서 실행되는 애플리케이션 또는 오퍼레이팅 시스템의 제어하에서 동작할 수 있고, 애플리케이션 또는 오퍼레이팅 시스템이 정보를 NVM(220)으로부터 판독하거나 NVM(220)에 저장하도록 요구할 때 NVM 드라이버(212)에 기입 및 판독 요구들을 제공할 수 있다. 각각의 판독 또는 기입 요구와 함께, 파일 시스템(210)은 페이지 오프셋을 갖는 논리적 블록 어드레스 또는 논리적 페이지 어드레스와 같이, 사용자 데이터가 판독 또는 기입되어야 하는 곳을 표시하기 위해 논리적 어드레스를 제공할 수 있다.
파일 시스템(210)은 NVM(220)과 직접 호환가능하지 않은 NVM 드라이버(212)에 판독 및 기입 요구들을 제공할 수 있다. 예를 들어, 논리적 어드레스들은 하드 드라이브 기반의 시스템들의 통상적인 규약들 또는 프로토콜들을 이용할 수 있다. 하드 드라이브 기반 시스템은, 플래시 메모리와 달리, 처음에 블록 소거를 수행하지 않고 메모리 위치를 겹쳐 쓰기 할 수 있다. 또한, 하드 드라이브들은 디바이스의 수명을 증가시키기 위해 웨어 레벨링을 필요로 하지 않을 수 있다. 따라서, NVM 인터페이스(218)는 파일 시스템 요구들을 핸들링하고 NVM(220)에 적절한 방식으로 다른 관리 기능들을 수행하기 위해 메모리 특정, 벤더 특정, 또는 둘다인 임의의 기능들을 수행할 수 있다.
NVM 드라이버(212)는 번역 층(214)을 포함할 수 있다. 일부 실시예들에서, 번역 층(214)은 플래시 번역 층(flash translation layer; "FTL")이거나 그것을 포함할 수 있다. 기입 요구시, 번역 층(214)은 제공된 논리적 어드레스를 NVM(220) 상의 자유로운, 소거된 물리적 위치에 맵핑할 수 있다. 판독 요구시, 번역 층(214)은 요구된 데이터가 저장되는 물리적 어드레스를 결정하기 위해 제공된 논리적 어드레스를 이용할 수 있다. 각각의 NVM은 NVM의 사이즈 또는 벤더에 따라 상이한 레이아웃을 가질 수 있기 때문에, 이 맵핑 동작은 메모리 및/또는 벤더 특정일 수 있다.
논리적-대-물리적 어드레스 맵핑에 부가하여, 번역 층(214)은 쓰레기 수집(garbage collection; "GC") 및 웨어 레벨링과 같은, 플래시 번역 층들에 통상적일 수 있는 임의의 다른 적절한 기능들을 수행할 수 있다.
일부 실시예들에서, NVM 드라이버(212)는 NVM 액세스 요구들(예를 들어, 프로그램, 판독, 및 소거 요구들)을 완료하기 위해 NVM 버스 컨트롤러(216)와 인터페이스할 수 있다. 버스 컨트롤러(216)는 NVM(220)에 대한 하드웨어 인터페이스로서 작용할 수 있고, NVM(220)의 버스 프로토콜, 데이터 레이트, 및 다른 사양들을 이용하여 NVM(220)과 통신할 수 있다.
NVM 인터페이스(218)는 때때로 본원에서 "메타데이터"라고 하는, 메모리 관리 데이터에 기초하여 NVM(220)을 관리할 수 있다. 메타데이터는 NVM 드라이버(212)에 의해 발생될 수 있거나, NVM 드라이버(212)의 제어하에서 동작하는 모듈에 의해 발생될 수 있다. 예를 들어, 메타데이터는 논리적 및 물리적 어드레스들 사이의 맵핑, 나쁜 블록 관리, 웨어 레벨링, 데이터 에러들을 검출 또는 정정하기 위해 이용되는 ECC 데이터, 페이지들에 할당된 위브 시퀀스 카운터 값들, 페이지들에 할당된 호스트 위브 시퀀스 카운터 값들, 또는 그의 임의의 조합을 관리하는 데 이용되는 임의의 정보를 포함할 수 있다. 메타데이터는 논리적 어드레스와 같은, 사용자 데이터와 함께 파일 시스템(210)에 의해 제공되는 데이터를 포함할 수 있다. 따라서, 일반적으로, "메타데이터"는 불휘발성 메모리의 동작 및 메모리 위치들을 관리하기 위해 일반적으로 이용되는 사용자 데이터에 관한 임의의 정보를 가리킬 수 있다.
NVM 인터페이스(218)는 NVM(220)에 메타데이터를 저장하도록 구성될 수 있다. 일부 실시예들에서, NVM 인터페이스(218)는 사용자 데이터가 저장되는 동일한 메모리 위치(예를 들어, 페이지)에 사용자 데이터와 연관된 메타데이터를 저장할 수 있다. 예를 들어, NVM 인터페이스(218)는 NVM(220)의 하나 이상의 메모리 위치들에 사용자 데이터, 연관된 논리적 어드레스, ECC 데이터, 위브 시퀀스 카운터 값, 및 사용자 데이터를 위한 호스트 위브 시퀀스 카운터 값을 저장할 수 있다. NVM 인터페이스(218)는 또한 동일한 메모리 위치에 사용자 데이터에 관한 다른 타입의 메타데이터를 저장할 수 있다.
NVM 인터페이스(218)는 논리적 어드레스를 저장할 수 있어, NVM(220)의 파워업시 또는 NVM(220)의 동작 중에, 전자 디바이스(200)가 그 위치에 어떤 데이터가 상주하는지를 결정할 수 있다. 특히, 파일 시스템(210)은 그의 물리적 어드레스가 아닌 그의 논리적 어드레스에 따라 사용자 데이터를 참조할 수 있기 때문에, NVM 인터페이스(218)는 그것들의 연관을 유지하기 위해 사용자 데이터와 논리적 어드레스를 함께 저장할 수 있다. 이렇게 하면, NVM(220)에 논리적-대-물리적 맵핑을 유지하는 별개의 테이블이 구식이 되더라도, NVM 인터페이스(218)는 여전히 예를 들어 전자 디바이스(200)의 파워업 또는 재부트에서 적절한 맵핑을 결정할 수 있다.
논리적-대-물리적 어드레스 맵핑에 부가하여, 번역 층(214)은 쓰레기 수집 및 웨어 레벨링과 같은, 플래시 번역 층들에 통상적일 수 있는 다른 기능들 중 임의의 것을 수행할 수 있다. 예를 들어, 번역 층(214)은 NVM(220)의 블록들 전부에 대해 유사한 웨어를 제공하도록 웨어 레벨링을 수행할 수 있다.
앞서 언급한 바와 같이, NVM(220)의 블록들은 일반적으로 전체 블록이 한번에 소거될 수 있고, 각각의 블록의 개별 페이지들은 한번에 하나의 페이지가 프로그래밍될 수 있다. 예를 들어, 새로운 데이터가 처음에 NVM(220)에 저장될 때(예를 들어, 새로운 노래 파일이 먼저 포터블 미디어 플레이어 디바이스에 저장될 때) 또는 오래된 데이터가 상이한 페이지에 이동될 때(예를 들어, 이전에 저장된 데이터가 웨어 레벨링, 쓰레기 수집, 또는 다른 유지보수 동작들을 위해 이동될 때) NVM(220)의 페이지가 데이터로 프로그래밍될 수 있다. 따라서, 본원에 이용된 바와 같이, "새로운 데이터"라는 용어는 처음으로 NVM에 처음에 프로그래밍되는 데이터를 가리킬 수 있고, "오래된 데이터"라는 용어는 NVM에 이전에 프로그래밍되었고 NVM의 한 영역으로부터 다른 영역으로 이동되는(예를 들어, 재프로그래밍되는) 데이터를 가리킬 수 있다. 데이터가 NVM(220)의 페이지에 저장될 때마다(예를 들어, 이 데이터가 오래된 것이든 새로운 것이든) 그 페이지는 순차적으로 증분되는 위브 시퀀스 카운터("WSC") 값과 연관될 수 있다.
각각의 페이지는 그의 연관된 WSC 값을 저장하는 메타데이터 필드를 포함할 수 있다. 다른 페이지가 데이터로 프로그래밍될 때마다, WSC는 증분될 수 있고, 새로 증분된 WSC 값은 그 페이지의 메타데이터에 저장될 수 있다. 이러한 식으로, WSC는 NVM(220)의 각각의 페이지가 프로그래밍된 상대적인 순서를 식별하는 카운터 번호를 표현할 수 있다. 예시로서, 페이지 A는 현재의 WSC 값이 2와 같을 때 데이터로 프로그래밍된다고 가정한다. WSC = 2는 따라서 페이지 A의 메타데이터에 저장되고, 현재의 WSC 값이 3으로 증분된다. 페이지 B는 다음으로 데이터로 프로그래밍되고, 따라서 WSC = 3가 페이지 B의 메타데이터에 저장된다. WSC의 저장 및/또는 제어는 예를 들어, NVM 인터페이스(예를 들어, 도 1의 NVM 인터페이스(118)) 또는 적절한 제어 회로(예를 들어, 도 1의 SoC 제어 회로(112))에 의해서와 같이 NVM 시스템의 임의의 적절한 컴포넌트에 의해 수행될 수 있다.
위브 시퀀스 카운터의 "위브" 양태는 NVM(220)의 2개 이상의 블록들은 동시에 프로그래밍을 위해 오픈될 수 있어, 이들 블록들의 페이지들이 "위빙된" 방식으로 프로그래밍될 수 있게 한다는 사실을 가리킬 수 있다. 예를 들어, 도 3은 2개의 블록들이 동시에 프로그래밍을 위해 오픈되는 NVM 시스템(300)의 기능도를 도시한다. 도 3에 의해 예시된 바와 같이, 블록 0의 페이지들 0 및 1이 먼저 프로그래밍되고, 따라서 각각 WSC = 0 및 WSC = 1이 할당된다. 블록 1의 페이지 0이 다음으로 프로그래밍되고, 따라서 WSC = 2가 할당된다. 블록 0의 페이지 2가 다음으로 프로그래밍되고, 따라서 WSC = 3이 할당되고, 등등과 같이 된다. 따라서, 도 3에 의해 예시된 바와 같이, 블록들 0 및 1의 페이지들은 위빙된 방식으로 프로그래밍되고, WSC 값들은 이들 페이지들이 프로그래밍된 순서를 표시할 수 있다. 도 3은 2개의 블록들이 동시에 프로그래밍을 위해 오픈되는 경우를 도시하지만, 이 기술분야의 통상의 기술자는 임의의 수의 2개 이상의 블록들이 동시에 프로그래밍을 위해 오픈되고 이러한 식으로 위빙될 수 있다는 것을 알 수 있다.
일부 실시예들에서, WSC는 특정 수의 기입 사이클 후에 롤오버할 수 있다. 예를 들어, WSC는 100,000,000 기입 사이클 후에 WSC = 0으로 리셋할 수 있다. 롤오버가 존재하는 경우, 다양한 알고리즘들은 큰 갭들을 검출하고 작은 값 카운터는 사실상 NVM에 존재할 수 있는 더 큰 카운터 값들보다 큼을 추론할 수 있다. 일부 실시예들에서, WSC 카운터는 그것이 NVM의 정격 수명(rated lifecycle) 중에 롤오버하지 않기에 충분히 큰 사이즈로 설정될 수 있다. 또한, WSC는 기입되는 데이터에 대해 공정(impartial)할 수 있다. 예를 들어, 그 페이지가 새로운 데이터로 기입되는지 오래된 데이터로 기입되는지에 상관없이, WSC는 계속해서 증분하고, 그의 현재의 값을 현재 프로그래밍되고 있는 페이지의 메타데이터에 할당할 수 있다.
일부 실시예들에서, WSC는 다양한 NVM 동작들의 수행에서 도울 수 있다. 예를 들어, WSC는 NVM 시스템의 롤백 중에 이용될 수 있다. NVM의 언클린 셧다운 후에, NVM 시스템(예를 들어, 도 1의 NVM 인터페이스(118) 또는 도 2의 NVM 인터페이스(218)와 같은 NVM 시스템의 하나 이상의 컴포넌트들)은 파일 시스템(예를 들어, 도 2의 파일 시스템(210))에 의해 이용된 논리적 어드레스들과 NVM(예를 들어, 도 2의 NVM(220))의 물리적 어드레스들 사이의 논리적-대-물리적 맵핑 테이블의 재구축을 시도할 수 있다. 그러나, 언클린 셧다운은 데이터의 다양한 페이지들이 무효로 되는 결과를 가져올 수 있다. 일반적으로, 하나의 페이지가 무효로 될 때, 그것은 파일 시스템 및 데이터베이스 저널링 기대들과 관련하여 일관성이 없을 수 있기 때문에 후속하여 프로그래밍되는 임의의 페이지들도 무효라는 것이 가정된다. NVM 시스템은 바람직하게는 이러한 손상이 일어나기 전에 존재하는 유효 데이터만을 이용하여 논리적-대-물리적 맵핑 테이블을 재구축해야 한다. 다시 말해, NVM 시스템은 데이터가 여전히 에러가 없는 안정된 시점으로 시스템을 "롤백"해야 한다.
WSC는 NVM 시스템을 적절하게 롤백하는 방법을 결정함에 있어서 도울 수 있다. 특히, 프로그래밍된 페이지들의 위빙된 성질로 인해, 손상된 페이지로 직렬 방식으로 단일 블록을 단지 롤백하는 것이 불충분할 수 있다. 오히려, 몇몇 블록들이 시스템을 에러 없는 상태로 적절하게 리턴하기 위해서 동시에 롤백될 필요가 있을 수 있다. WSC는 이들 위빙된 블록들 각각을 롤백하는 방법을 결정하는 것을 도울 수 있다. 예를 들어, 도 4는 페이지들이 언클린 셧다운으로부터 손상되게 된 NVM 시스템(400)의 기능도를 도시한다. 도 4는 오직 NVM 시스템(400)의 2개의 블록을 도시하지만, 이 기술분야의 통상의 기술자는 이 예시는 임의의 적절한 수의 2개 이상의 블록을 포함하는 것으로 추론될 수 있다는 것을 알 수 있다.
도 4에서 WSC 값들에 의해 표시된 바와 같이, 블록들 0 및 1의 페이지들은 위빙된 방식으로 프로그래밍되었다. 그러나, NVM 시스템(400)의 언클린 셧다운으로 인해, 블록 0의 페이지 3은 손상되게 되었고 이제 무효 또는 올바르지 않다(예를 들어, "X" 기호로 표시된 바와 같음). NVM 시스템(400)(예를 들어, 도 1의 NVM 인터페이스(118) 또는 도 2의 NVM 인터페이스(218)와 같은 NVM 시스템(400)의 하나 이상의 컴포넌트들)은 예를 들어, NVM 시스템(400)의 논리적-대-물리적 맵핑 테이블의 재구축 동안 블록 0을 검사할 때 그러한 손상 페이지를 발견할 수 있다. 블록 0 내에서, 페이지들 0-2는 페이지 3 전에 배치되고, 따라서 NVM 시스템(400)은 페이지들 0-2가 에러가 없을 것 같다고 결정할 수 있다(예를 들어, 그것들은 손상이 일어나기 전에 배치되기 때문). 유사하게, NVM 시스템(400)은 그것이 손상 페이지 3 후에 배치되기 때문에 블록 0의 페이지 4가 손상된 것 같다고 결정할 수 있다(예를 들어, 손상 페이지 후에 프로그래밍된 임의의 페이지들이 또한 일반적으로 손상될 수 있기 때문). 그러나, 다른 블록들(예를 들어, 블록 1)의 어느 페이지들이 에러가 없고, 어느 페이지들이 손상되는지를 결정하기 위해서, NVM 시스템(400)은 NVM의 페이지들의 WSC 값들을 검사하는 것에 의지할 수 있다.
예를 들어, NVM 시스템(400)은 그것들이 WSC = 1, 2, 및 5와 연관되는지를 결정하기 위해 블록 0의 페이지들(예를 들어, 그것들이 손상 페이지 3 전에 배치되기 때문에 일관성이 있는 것 같은 페이지들 0-2)의 메타데이터를 검사할 수 있다. NVM 시스템(400)은 그 다음에 페이지들 0-2이 WSC = 3, 4, 및 6과 연관되는지를 결정하기 위해 블록 1의 페이지들의 메타데이터를 검사할 수 있다. 모든 이들 페이지들은 WSC 값들에서 임의의 갭들 없이 일어나기 때문에(예를 들어, WSC 값들이 시퀀스에 임의의 갭들 없이 0에서 6으로 가기 때문에), NVM 시스템(400)은 모든 이들 페이지들이 일관성이 있는 것 같다고 결정할 수 있다. 그러나, 위브 시퀀스 카운터에서 검출가능한 다음 값은 블록 0의 페이지 8과 연관된, WSC = 8이다. WSC = 7이 검출되지 않아서 위브 시퀀스 카운터에 갭이 생기기 때문에, NVM 시스템(400)은 WSC = 7이 블록 0의 손상 페이지 3과 연관된 WSC 값임을 결정할 수 있다. NVM 시스템(400)은 그 다음에 7보다 큰 WSC 값과 연관된 NVM의 임의의 페이지들이 손상된 것 같다고 결정할 수 있다. 다시 말해, (WSC = 8과 연관된) 블록 0의 페이지 4 및 (WSC = 9 및 10과 연관된) 블록 1의 페이지들 3-4는 손상된 것 같다.
이러한 식으로, 위브 시퀀스 카운터에 갭을 배치함으로써, NVM 시스템은 언클린 셧다운으로부터의 손상이 시작된 것 같은 손상 페이지를 식별할 수 있다. NVM 시스템은 그 다음에 손상 페이지의 WSC 값보다 큰 WSC 값과 연관된 임의의 페이지를 무시함으로써 시스템을 롤백할 수 있다. 예를 들어, 이들 페이지들은 NVM 시스템의 논리적-대-물리적 맵핑 테이블의 재구축 중에 무시될 수 있다. 도 5는 이러한 식으로 NVM 시스템을 롤백하는 것을 예시하는 프로세스(500)를 도시한다. 프로세스(500)는 예를 들어, NVM 인터페이스(예를 들어, 도 1의 NVM 인터페이스(118)) 또는 적절한 제어 회로(예를 들어, 도 1의 SoC 제어 회로(112))에 의해서와 같이 NVM 시스템의 임의의 적절한 컴포넌트에 의해 수행될 수 있다.
프로세스(500)는 단계(502)에서 시작할 수 있다. 단계(504)에서, NVM 시스템은 NVM의 페이지를 검사할 수 있다. 단계(506)에서, NVM 시스템은 그 다음에 단계(504)에서 검사된 페이지가 유효한지 여부를 결정할 수 있다. 페이지가 유효하다(예를 들어, 페이지가 에러가 없다)는 것에 응답하여, 프로세스(500)는 단계(508)에서 NVM의 다음 페이지로 진행할 수 있다. NVM의 특정 레이아웃에 따라, 이 다음 페이지는 예를 들어, 동일한 블록 내의 페이지 또는 상이한 블록 내의 페이지일 수 있다. 그 다음에 프로세스(500)는 손상 페이지가 식별될 때까지 NVM 시스템의 페이지들을 체크하기 위해 계속해서 단계들(504, 506, 및 508)을 통해 루프로 될 수 있다.
무효 페이지가 단계(506)에서 발견될 때, 프로세스(500)는 단계(510)로 진행할 수 있다. NVM 시스템은 그 다음에 WSC 시퀀스 내의 갭을 결정하기 위해 NVM 내의 페이지들의 메타데이터를 판독할 수 있다. 이 WSC 갭 값은 따라서 단계(506)에서 식별된 무효 페이지의 WSC 값에 대응할 수 있다. 단계(508)에서, 프로세스(500)는 그 다음에 이 WSC 갭 값보다 큰 WSC 값과 연관된 임의의 페이지들을 무시함으로써 NVM 시스템을 롤백할 수 있다. 예를 들어, 이러한 페이지들은 NVM 시스템의 논리적-대-물리적 맵핑 테이블의 재구축 중에 일관성 없는 것으로 고려되어 무시될 수 있다. 프로세스(500)는 그 다음에 단계(514)에서 종료할 수 있다.
논리적-대-물리적 맵핑 테이블들이 재부트 동작 중에 재구축될 때, 시간 순서 일관성이 유지된다. 일부 경우들에서, 맵핑 테이블은 WSC 값들의 오름차순으로 페이지들을 순차적으로 검사함으로써 재구축될 수 있다. 일반적으로, 페이지들은 그것들의 메타데이터 내에 저장된 그것들의 연관된 논리적 어드레스를 포함한다. 논리적-대-물리적 맵핑 테이블은 따라서 그러한 메타데이터를 검사함으로써 재구축될 수 있다. 그러나, 때때로 페이지는 올바르지 않은 논리적 어드레스와 페이지를 연관시키는 에러 있거나 구식의 메타데이터를 포함할 수 있다. 예시로서, LBA X와 연관된 데이터는 페이지 A로 프로그래밍될 수 있다. 더 나중의 시점에서, LBA X와 연관된 새로운 데이터는 상이한 블록 또는 수퍼 블록에 배치될 수 있는, 페이지 B에 프로그래밍될 수 있다. 그러나, 페이지 A의 메타데이터는 결코 이 변경된 논리적 어드레싱을 반영하도록 갱신되지 않고, 따라서 페이지 A의 메타데이터는 구식이고, 그것이 여전히 LBA X와 연관되어 있음을 잘못 표시한다.
따라서, 2개의 페이지가 동일한 논리적 어드레스와 연관되면, 더 높은 WSC 값을 갖는 페이지는 가장 최신의 사용자 데이터 및 올바른 논리적 어드레스 맵핑을 갖는 페이지인 것으로 가정될 수 있다. 따라서, 페이지들의 WSC 값들을 검사함으로써, 특정 LBA의 가장 최근의 버전이 복구(recover)될 수 있다.
논리적-대-물리적 맵핑 테이블들은 NVM의 하나 이상의 페이지들의 재생에서 WSC 시퀀스를 따름으로써 시간 순차적 순서로 재구축될 수 있다. 예시적인 시나리오로서, WSC = 1과 연관된 페이지는 그것이 LBA X와 연관되어 있음을 표시할 수 있다. 논리적-대-물리적 맵핑 테이블은 이 정보를 포함하도록 갱신될 수 있다. 그러나, WSC = 12와 연관된 페이지에 도달되면, NVM 시스템은 이 페이지의 메타데이터가 또한 그것이 LBA X와 연관되어 있음을 표시함을 식별할 수 있다. NVM 시스템은 더 나중의 시점에 이 페이지가 기입되었고 따라서 더욱 최신의 논리적 어드레스 맵핑을 갖는다고 가정할 수 있다. 따라서, WSC = 12를 갖는 페이지는 이전 페이지를 겹쳐 쓰고, 논리적-대-물리적 맵핑 테이블은 WSC = 12를 갖는 페이지가 LBA X와 연관되어 있음을 표시하도록 갱신될 수 있다. 이것은 특히 복수의 기입 스트림들(예를 들어, 동적 및 정적 기입 스트림들)을 갖는 시스템들을 위한 일관성 있는 시간선들을 유지하는 데 중요할 수 있다.
메타데이터에 WSC 값을 저장하는 것에 부가하여, 호스트 위브 시퀀스 카운터("HWSC") 값도 NVM의 각각의 페이지의 메타데이터에 저장될 수 있다. WSC 값들에 유사하게, HWSC 값들은 순차적일 수 있다. 그러나, 아래 더 상세하게 설명되는 바와 같이, HWSC는 반드시 증분하지 않을 수 있다. (예를 들어, 웨어 레벨링 목적 등을 위해 이동 또는 재프로그래밍되기 보다는) 새로운 데이터가 처음에 NVM의 페이지에 프로그래밍될 때마다, 그 페이지는 HWSC 값을 할당받을 수 있다. 오래된 데이터가 새로운 페이지로 이동될 때마다 변할 수 있는 WSC 값과 달리, 데이터의 특정 세트에 할당된 HWSC 값은 결코 변하지 않을 수 있다. 그 대신, 데이터의 특정 세트는 NVM 내의 그의 수명 중에 걸쳐서 동일한 HWSC 값을 유지할 수 있다. 다시 말해, HWSC 값들은 순차적이기 때문에, 그것들은 그 파일이 처음에 NVM에 저장되었을 때와 관련하여 파일의 일반적인 "나이"를 표시할 수 있다. 예를 들어, HWSC는 노래 파일이 포터블 미디어 플레이어 내로 처음에 다운로드되었을 때를 표시할 수 있다.
페이지에 할당하기 위한 특정 HWSC 값은 페이지의 HWSC 값과 현재의 WSC 값을 동일시함으로써 결정될 수 있다. 예시적인 시나리오로서, 새로운 노래 파일 A가 페이지 X에 저장되어 있다고 가정한다. 현재의 WSC는 23이고, 따라서 페이지 X는 WSC = 23 및 HWSC = 23을 할당받는다. 웨어 레벨링 프로세스 후에, WSC는 이제 50과 같다. 이때에, 다른 새로운 노래 파일 B가 페이지 Y에 저장되어 있고, 따라서 페이지 Y는 WSC = 50 및 HWSC = 50을 할당받는다(따라서, 반드시 증분적이지는 않지만, 새로운 데이터에 할당된 HWSC 값들은 순차적일 수 있다). 현재의 WSC 값이 이제 82인 더 나중의 시점에, 노래 파일 A와 연관된 데이터는 페이지 Z로 이동된다(예를 들어, 데이터는 웨어 레벨링, 쓰레기 수집 등을 위해 이동된다). 페이지 Z는 새로운 WSC = 82를 할당받고 오래된 HWSC = 23을 유지한다. 따라서, 노래 파일 A와 연관된 데이터는 NVM 내에 재프로그램되었지만, 시스템은 여전히 노래 파일 A가 그것이 더 낮은 HWSC 값을 갖기 때문에 노래 파일 B보다 "더 오래된" 것이라고 결정할 수 있다. 다시 말해, HWSC는 예를 들어, 파일 또는 다른 데이터가 처음에 NVM에 프로그래밍될 때의 상대적 "타임스탬프"를 의미할 수 있다.
일부 실시예들에서, HWSC는 페이지들의 정적-대-동적 상태를 결정함에 있어서 NVM 시스템을 도울 수 있다. 본원에 이용된 바와 같이, "동적 데이터"라는 용어는 비교적 빈번하게 갱신되거나 소거 및 재프로그래밍되는 데이터를 가리킬 수 있다. 예시로서, 동적 데이터는 일기 예보 프로그램과 연관된 데이터를 포함할 수 있다 - 이러한 데이터는 현재의 날씨 상태들을 반영하기 위해 빈번하게 갱신될 수 있다. 다른 한편, 본원에 이용된 바와 같이, "정적 데이터"라는 용어는 비교적 긴 기간 동안 일정하게 변하지 않고 유지하는 데이터를 가리킬 수 있다. 예시로서, 정적 데이터는 포터블 미디어 플레이어 디바이스에 저장되는 노래 파일(예를 들어, .mp3 파일)을 포함할 수 있다. 이러한 데이터는 일반적으로 NVM 내의 그의 수명에 걸쳐서 변하지 않고 유지할 수 있다. 유사하게, "동적 페이지" 및 "정적 페이지"라는 용어들은 각각 동적 및 정적 데이터를 저장하는 NVM의 페이지들을 가리킬 수 있다.
특히, 전술한 바와 같이, HWSC는 페이지 내에 저장된 데이터가 얼마나 오래되었는지에 관한 일반적인 아이디어를 제공할 수 있다. 데이터가 더 오래된 경우, 그러한 데이터는 정적일 가능성이 더 많을 수 있다(예를 들어, 동적 데이터는 일반적으로 그것이 소거되기 전에 비교적 짧은 기간 동안에만 존재하므로, 결코 "오래된" 나이에 도달하지 않기 때문). 아래 더 상세히 설명되는 바와 같이, 이러한 정적-대-동적 결정들은 웨어 레벨링 및 쓰레기 수집과 같은, 다양한 NVM 시스템 동작들을 수행함에 있어서 유용할 수 있다.
페이지 내에 저장된 데이터의 일반적인 나이를 결정하기 위해서, 그 페이지의 현재의 WSC 값과 HWSC 값 사이의 차이가 계산될 수 있다. 이 차이가 미리 결정된 임계값보다 크면, 그 페이지에 저장된 데이터는 정적인 것으로 고려될 수 있다. 차이가 임계값보다 작으면, 그 데이터의 상태는 예를 들어, 동적 데이터; 최근에 저장된 새로운 데이터; 또는 알려지지 않은 데이터인 것으로 고려될 수 있다(예를 들어, 이것이 동적 데이터 또는 단지 최근에 저장된 새로운 정적 데이터인지가 알려지지 않을 수 있기 때문).
HWSC 값들을 이용하는 것에 부가하여 또는 그 대신에, 다양한 다른 기법들을 이용하여 데이터의 정적-대-동적 상태를 결정할 수 있다. 예를 들어, 데이터의 특정 세트의 "파일 사이즈"가 검사될 수 있다. 일부 경우들에서, 이것은 특정 파일을 저장하기 위해 얼마나 많은 페이지들이 이용되는지를 결정하는 것을 수반할 수 있다. 파일 사이즈가 클수록, 파일이 정적일 가능성이 높다. 예를 들어, NVM 시스템은 10 페이지들보다 큰(예를 들어, 또는 임의의 다른 미리 결정된 파일 사이즈보다 큰) 사이즈를 갖는 임의의 파일이 정적임을 결정할 수 있다. 다른 예로서, NVM 시스템은 파일을 NVM에 프로그래밍하는 데 이용된 시간을 결정할 수 있다. 파일을 프로그래밍하는 데 이용된 시간의 양이 클수록, 이러한 파일은 정적일 가능성이 높다(예를 들어, 더 큰 파일들은 프로그래밍하기 위해 더 큰 양의 시간이 걸릴 수 있기 때문). 또 다른 예로서, 파일의 프로그래밍 동안 NVM 시스템의 거동(behavior)을 결정하기 위해 다양한 시스템 휴리스틱이 모니터링될 수 있다. 이 경우, NVM 시스템이 파일을 프로그래밍하는 데 비교적 큰 양의 시간 및 노력을 투자할 때, 이러한 파일이 정적일 가능성이 높다(예를 들어, 더 큰 파일들은 프로그래밍하기 위해 더 많은 시간 및 노력을 요구할 수 있기 때문).
도 6은 NVM 시스템의 페이지의 정적-대-동적 상태를 결정하기 위한 프로세스(600)를 도시한다. 프로세스(600)는 단계(602)에서 시작할 수 있다. 단계(604)에서 임계값이 결정될 수 있다. 예를 들어, 임계값은 NVM 시스템 내에 이전에 저장된 미리 결정된 값일 수 있다. 단계(606)에서, 관심 페이지와 연관된 HWSC 값이 결정될 수 있다. 예를 들어, HWSC 값은 관심 페이지의 메타데이터로부터 판독될 수 있다. 단계(608)에서, WSC의 현재의 값이 결정될 수 있다. 그 다음에, HWSC 값과 현재의 WSC 값 사이의 차이가 단계(610)에서 계산될 수 있다.
단계(612)에서, 차이는 그 다음에 단계(604)에서 결정된 임계값과 비교될 수 있다. 차이가 임계값보다 큰 것에 응답하여, 프로세스(600)는 단계(614)로 진행할 수 있고, 관심 페이지는 정적 페이지로서 식별될 수 있다. 다시 말해, 관심 페이지의 "나이(age)"가 충분히 오래되었기 때문에, 아마도 이 페이지는 정적 페이지인 것으로 고려될 수 있다.
그러나, 단계(612)에서 차이가 임계값보다 크지 않은 것에 응답하여, 프로세스(600)는 그 대신에 단계(616)로 진행할 수 있다. 단계(616)에서, 몇몇 결론들 중 하나가 결과로서 생길 수 있다. 예를 들어, 관심 페이지의 비교적 젊은 나이로 인해, 프로세스(600)는 이 페이지가 동적 페이지라고 결정할 수 있다. 다른 예로서, 프로세스(600)는 관심 페이지가 단지 최근에 저장된 새로운 데이터(예를 들어, 동적 데이터일 수도 아닐 수도 있음)를 포함한다고 결정할 수 있다. 또 다른 예로서, 프로세스(600)는 이 페이지의 상태를 "알려지지 않은(unknown)" 것으로 고려할 수 있다. 다시 말해, 관심 페이지가 동적 페이지인지 단지 최근에 저장된 정적 페이지인지가 알려지지 않을 수 있다.
일부 실시예들에서, 단계(614) 또는 단계(616)로 진행하기보다는, 프로세스(600)는 그 대신에 단계(612)에서 차이를 임계값과 비교한 후에 옵션의 단계들(618, 620, 622, 및 624)로 진행할 수 있다. 이 경우, HWSC의 검사에서 오직 정적-대-동적 결정에 기초하기보다는, 프로세스(600)는 정적-대-동적 결정을 하기 위해서 단계들(618, 620, 622, 및/또는 624)에서의 계산들 중 하나 이상을 공동으로 이용할 수 있다.
예를 들어, 단계(618)에서, 관심 페이지와 연관된 전체 파일의 사이즈가 결정될 수 있다. 일부 경우들에서, 이 단계는 전체 파일을 저장하는 데 이용된 페이지들의 번호를 식별하는 것을 수반할 수 있다. 위에서 언급한 바와 같이, 큰 파일 사이즈는 파일이 정적임을 표시할 수 있다. 다른 예로서, 단계(620)에서, 관심 페이지와 연관된 전체 파일을 기입하는 데 요구되는 시간이 결정될 수 있다. 단계(618)와 유사하게, 더 긴 기입 시간은 파일이 정적임을 표시할 수 있다. 또 다른 예로서, 단계(622)에서, 전체 파일과 관련된 다양한 시스템 휴리스틱(예를 들어, 전체 파일을 기입하는 데 이용된 시간 및 노력)이 식별될 수 있다. 그 다음에 단계(624)에서, 정적-대-동적 결정이 단계들(612, 618, 620, 및 622) 중 하나 이상에서 결정된 정보에 기초하여 행해질 수 있다.
일부 실시예들에서, 도 6의 프로세스(600)에 의해 예시된 것과 같은, 정적-대-동적 결정은 웨어 레벨링 및 쓰레기 수집과 같은 유지보수 동작들을 수행함에 있어서 NVM 시스템을 도울 수 있다. 웨어 레벨링 동안, 사용자 데이터는 NVM의 모든 블록들의 균일한 웨어를 시도 및 유지하기 위해서 NVM에서 이동될 수 있다. 예를 들어, 정적 데이터는 높은 사이클 블록(예를 들어, 이미 비교적 큰 횟수 소거되고 프로그래밍된 블록)으로 이동될 수 있고, 동적 데이터는 낮은 사이클 블록(예를 들어, 오직 비교적 작은 횟수 소거되고 프로그래밍된 블록)으로 이동될 수 있다. 통상적으로, 웨어 레벨링은 NVM 시스템이 비지(busy) 상태가 아니어서 웨어 레벨링 동작의 부가적인 프로세싱 요건들에 의해 악영향을 받지 않을 수 있을 때와 같이, 특정 간격으로 수행될 수 있다. 시스템은 유효 데이터를 프로그래밍된 블록들로부터 하나 이상의 소거된 블록들로 이동함으로써 메모리를 자유롭게 하기 위해 쓰레기 수집 프로세스를 이용할 수 있다. 통상적으로, 쓰레기 수집 프로세스는 이용가능한 메모리가 낮을 때 또는 메모리 공간을 자유롭게 할 필요가 있는 임의의 다른 시간에 트리거될 수 있다.
HWSC 값들은 페이지별로(on a page-per-page basis) 정적-대-동적 상태들을 결정하는 데 이용될 수 있기 때문에, HWSC는 또한 유지보수 동작들(예를 들어, 웨어 레벨링 및 쓰레기 수집)이 페이지별로 데이터를 검사 및 분리할 수 있게 할 수 있다. 이것은 오직 블록별(block-per-block) 또는 수퍼블록별로 데이터를 분리 또는 검사하는 다른 시스템들에 비해 이득들을 제공할 수 있다. 예시로서, 도 7은 데이터가 웨어 레벨링 동작을 위해(예를 들어, 또는 쓰레기 수집 또는 임의의 다른 적절한 동작을 위해) 페이지별로 분리되는 예시적인 NVM 시스템(700)을 도시한다.
도 7에 의해 도시된 바와 같이, NVM 시스템(700)은 페이지들 0-5를 갖는 블록(710)을 포함할 수 있다. NVM 시스템(700)은 또한 적어도 하나의 높은 사이클 블록(720) 및 적어도 하나의 낮은 사이클 블록(730)을 포함할 수 있다. 예를 들어, 높은 사이클 블록(720)은 비교적 큰 수의 기입/소거 사이클들을 이전에 거친 블록일 수 있고, 낮은 사이클 블록(730)은 비교적 작은 수의 기입/소거 사이클들을 거친 블록일 수 있다.
적절한 정적-대-동적 결정 프로세스(예를 들어, 도 6의 프로세스(600))에 기초하여, 블록(710)의 각각의 페이지가 개별적으로 검사될 수 있다. 정적 페이지들로서 식별된 페이지들은 높은 사이클 블록(720)으로 재프로그래밍될 수 있고, 동적 페이지들로서 식별된 페이지들은 낮은 사이클 블록(730)으로 재프로그래밍될 수 있다. 예를 들어, 도 7은 페이지들 0, 1, 및 3이 정적 페이지들로서 식별되어서 높은 사이클 블록(720)에 재기입되는 것을 예시한다. 유사하게, 도 7은 페이지들 2, 4, 및 5가 동적 페이지들로서 식별되어서 낮은 사이클 블록(730)에 재기입되는 것을 예시한다. 페이지별로 데이터를 분리하는, 이와 같은 시스템들은, 단지 블록별로(on a block-per-block basis) 데이터를 분리하는 시스템들에 비해 개선된 정확성 및 이득들을 제공할 수 있다.
도 8은 페이지별로 데이터를 분리하기 위한 프로세스(800)를 도시한다. 예를 들어, 프로세스(800)는 웨어 레벨링 동작 중에, 쓰레기 수집 동작 중에, 또는 NVM 시스템의 임의의 다른 적절한 동작 중에 데이터를 분리하기 위해 이용될 수 있다.
프로세스(800)는 단계(802)에서 시작할 수 있다. 단계(804)에서, NVM 시스템의 페이지는 그의 정적-대-동적 상태를 결정하기 위해 검사될 수 있다. 예를 들어, 페이지의 HWSC 값이 검사될 수 있거나, 페이지와 연관된 파일의 사이즈가 검사될 수 있거나, 페이지와 연관된 파일을 기입하는 데 걸리는 시간의 양이 검사될 수 있거나, 페이지와 관련된 임의의 적절한 시스템 휴리스틱이 검사될 수 있거나, 또는 위의 것의 임의의 조합이 검사될 수 있다. 단계(806)에서, 프로세스(800)는 단계(804)에서 획득된 정보에 기초하여 페이지가 정적인지를 결정할 수 있다. 예를 들어, HWSC 값과 현재의 WSC 값 사이의 차이가 임계값과 비교될 수 있다. 이 차이가 임계값보다 크면, 페이지는 정적 페이지로서 식별될 수 있다.
단계(806)에서 페이지가 정적으로 식별된 것에 응답하여, 프로세스(800)는 단계(808)로 진행할 수 있다. 단계(808)에서, 페이지는 높은 사이클 블록으로 이동(예를 들어, 프로그래밍)될 수 있다. 프로세스(800)는 그 다음에 810에서 NVM 시스템의 다음 페이지로 진행할 수 있다. 그 다음에 단계들(804, 806, 808, 및 810)은 정적 페이지들을 배치하고 그것들을 적절한 높은 사이클 블록으로 이동하기 위해 계속해서 루프로 될 수 있다.
일부 실시예들에서, 프로세스(800)는 단계(806)에서 페이지가 정적으로서 식별되지 않은 것에 응답하여 옵션의 단계(812)로 진행할 수 있다. 이 경우, 페이지는 낮은 사이클 블록으로 이동될 수 있다. 예를 들어, 옵션의 단계(812)는 페이지가 동적 페이지로서 식별된(예를 들어, 또는 페이지가 동적 페이지이기 위한 가능성 있는 후보인) 시나리오들에서 일어날 수 있다. 옵션의 단계(812)는 예를 들어, 데이터의 정적-대-동적 상태가 알려지지 않은 경우들에서 제외될 수 있다. 예시로서, 이것은 HWSC와 WSC 사이의 차이가 임계값 아래에 있을 때 일어날 수 있고, 이것은 데이터가 동적 또는 단지 최근에 저장된 새로운 정적 데이터인지가 알려지지 않는다.
도 5, 6, 및 8의 프로세스들(500, 600, 및 800)은 시스템(예를 들어, 도 1의 전자 디바이스(100) 또는 도 2의 전자 디바이스(200))에서 하나 이상의 컴포넌트들에 의해 실행될 수 있다는 것을 이해해야 한다. 예를 들어, 프로세스들의 단계들 중 적어도 일부는 NVM 인터페이스(예를 들어, 도 1의 NVM 인터페이스(118) 또는 도 2의 NVM 인터페이스(218))에 의해 수행될 수 있다. 이 기술분야의 통상의 기술자들은 단계들 중 하나 이상은 제어 회로(예를 들어, 도 1의 SoC 제어 회로(112))에 의해 수행될 수 있다는 것을 알 것이다.
또한, 도 5, 6, 및 8의 프로세스들(500, 600, 및 800)은 단지 예시임을 이해해야 한다. 본 발명의 범위에서 벗어나지 않고, 단계들 중 임의의 것은 제거, 수정, 또는 결합될 수 있고, 임의의 부가적인 단계들이 추가될 수 있다.
본 발명의 설명된 실시예들은 제한이 아니라 예시의 목적으로 제공된다.
100, 200: 전자 디바이스
110: 시스템 온 칩("SoC")
120, 220: 불휘발성 메모리("NVM")
112: SoC 제어 회로
114: 메모리
118: NVM 인터페이스
210: 파일 시스템
212: NVM 드라이버
216: NVM 버스 컨트롤러
218: NVM 인터페이스
220: NVM

Claims (20)

  1. 불휘발성 메모리(non-volatile memory; "NVM")의 페이지들의 프로그래밍을 위빙(weaving)하기 위한 방법으로서,
    위브 시퀀스 카운터(weave sequence counter; "WSC")의 현재 값을 식별하는 단계 - 상기 WSC는 상기 NVM의 각각의 페이지가 프로그래밍되는 시퀀스를 식별함 - ;
    사용자 데이터의 제1 세트로 상기 NVM의 제1 블록의 제1 페이지를 프로그래밍하는 단계;
    상기 WSC의 상기 현재 값과 상기 제1 페이지를 연관시키는 단계;
    상기 제1 페이지의 상기 프로그래밍에 응답하여 상기 WSC를 증분된 WSC 값으로 순차적으로 증분하는 단계;
    데이터의 상기 제1 세트가 상기 NVM에 처음에 저장되어 있는 새로운 데이터인지를 결정하는 단계; 및
    상기 결정하는 단계에 응답하여, 상기 제1 페이지를 호스트 위브 시퀀스 카운터(host weave sequence counter; "HWSC") 값과 연관시키는 단계
    를 포함하고,
    상기 HWSC 값은 상기 WSC의 상기 현재 값과 같은 프로그래밍의 위빙 방법.
  2. 제1항에 있어서,
    사용자 데이터의 제2 세트로 상기 NVM의 제2 블록의 제2 페이지를 프로그래밍하는 단계; 및
    상기 증분된 WSC 값과 상기 제2 페이지를 연관시키는 단계
    를 더 포함하는, 프로그래밍의 위빙 방법.
  3. 제1항 또는 제2항에 있어서, 상기 연관시키는 단계는, 상기 WSC의 상기 현재 값을 상기 제1 페이지의 메타데이터로 프로그래밍하는 단계를 포함하는, 프로그래밍의 위빙 방법.
  4. 삭제
  5. 제1항에 있어서, 상기 제1 페이지를 상기 HWSC 값과 연관시키는 단계는, 상기 HWSC 값을 상기 제1 페이지의 메타데이터로 프로그래밍하는 단계를 포함하는, 프로그래밍의 위빙 방법.
  6. 제1항 또는 제2항에 있어서,
    데이터의 상기 제1 세트가 상기 NVM의 상이한 페이지로부터 상기 제1 페이지로 이동되어 있는 오래된 데이터인지를 결정하는 단계; 및
    상기 결정하는 단계에 응답하여, 상기 제1 페이지를 호스트 위브 시퀀스 카운터("HWSC") 값과 연관시키는 단계
    를 더 포함하고, 상기 HWSC 값은 상기 상이한 페이지의 HWSC 값과 같은, 프로그래밍의 위빙 방법.
  7. 제1항 또는 제2항에 있어서, 상기 WSC를 순차적으로 증분하는 단계는, 상기 WSC가 상기 NVM의 수명에 걸쳐서 계속해서 증분하도록, 상기 WSC의 상기 현재 값을 롤오버(rollover) 없이 증분하는 단계를 포함하는, 프로그래밍의 위빙 방법.
  8. 제1항 또는 제2항에 있어서, 상기 WSC를 순차적으로 증분하는 단계는, 상기 WSC의 값이 미리 결정된 수의 기입 사이클 후에 0으로 롤오버하도록, 상기 WSC의 상기 현재 값을 롤오버에 의해 증분하는 단계를 포함하는, 프로그래밍의 위빙 방법.
  9. 불휘발성 메모리("NVM") 시스템을 웨어 레벨링(wear leveling)하기 위한 방법으로서,
    현재의 위브 시퀀스 카운터("WSC") 값을 식별하는 단계 - 상기 WSC 값은 상기 NVM의 페이지들이 프로그래밍되는 순서를 표시함 - ;
    상기 NVM의 특정 페이지에 대한 호스트 위브 시퀀스 카운터("HWSC") 값을 식별하는 단계 - 상기 HWSC 값은 상기 특정 페이지의 데이터가 처음에 상기 NVM 내에 저장되었을 때를 표시함 - ;
    상기 현재의 WSC 값과 상기 HWSC 값 사이의 값의 차이를 계산하는 단계; 및
    상기 계산된 차이에 적어도 부분적으로 기초하여, 상기 특정 페이지가 높은 사이클 블록(high-cycle block)으로 이동하는 데 적절한 정적 페이지임을 결정하는 단계
    를 포함하는, 웨어 레벨링 방법.
  10. 제9항에 있어서, 상기 결정하는 단계는,
    상기 계산된 차이를 미리 결정된 임계값과 비교하는 단계;
    상기 차이가 상기 임계값보다 큼을 결정하는 단계; 및
    상기 차이가 상기 임계값보다 큼을 결정하는 것에 응답하여 상기 특정 페이지를 정적 페이지로서 식별하는 단계
    를 포함하는, 웨어 레벨링 방법.
  11. 제9항 또는 제10항에 있어서,
    상기 NVM의 다음 페이지로 진행하여, 현재의 WSC 값의 식별, HWSC의 식별, 계산, 및 상기 다음 페이지에 대한 결정을 반복하는 단계를 더 포함하는, 웨어 레벨링 방법.
  12. 제9항 또는 제10항에 있어서,
    상기 특정 페이지의 데이터를 상기 높은 사이클 블록의 새로운 페이지로 이동하는 단계; 및
    상기 특정 페이지의 상기 HWSC 값을 상기 새로운 페이지와 연관시키는 단계
    를 더 포함하는, 웨어 레벨링 방법.
  13. 제9항 또는 제10항에 있어서,
    상기 특정 페이지의 데이터를 상기 높은 사이클 블록의 새로운 페이지로 이동하는 단계; 및
    상기 현재의 WSC 값을 상기 새로운 페이지의 WSC 값과 연관시키는 단계
    를 더 포함하는, 웨어 레벨링 방법.
  14. 제9항 또는 제10항에 있어서, 상기 특정 페이지가 정적 페이지라는 결정은, 또한 상기 특정 페이지와 연관된 파일의 사이즈; 상기 특정 페이지와 연관된 상기 파일을 기입하는 데 걸린 시간의 양; 및 상기 특정 페이지와 연관된 상기 파일과 관련된 시스템 휴리스틱(systems heuristics) 중 적어도 하나에 기초하는, 웨어 레벨링 방법.
  15. 제9항 또는 제10항에 있어서, 정적 페이지는 정적 데이터를 포함하는 페이지를 포함하는, 웨어 레벨링 방법.
  16. 불휘발성 메모리("NVM")에 액세스하기 위한 메모리 인터페이스로서,
    제어 회로를 포함하고, 상기 제어 회로는,
    데이터의 특정 세트가 상기 NVM에 프로그래밍될 것인지를 식별하고;
    위브 시퀀스 카운터("WSC")의 현재 값을 결정하고 - 상기 WSC는 페이지들이 상기 NVM 내에 프로그래밍되는 순서를 표시함 - ;
    데이터의 상기 특정 세트가 상기 NVM의 특정 페이지 내로 프로그래밍되도록 지시하고;
    상기 WSC의 상기 현재 값이 상기 특정 페이지의 메타데이터에 저장되도록 지시하고;
    상기 NVM의 페이지로 데이터가 프로그래밍된 후에 상기 WSC의 상기 현재 값을 다음 값으로 순차적으로 증분하고;
    호스트 위브 시퀀스 카운터("HWSC")가 상기 특정 페이지의 메타데이터에 저장되도록 지시하고;
    데이터의 상기 특정 세트가 상기 NVM 내에 처음에 프로그래밍된 새로운 데이터인 것에 응답하여 상기 WSC의 상기 현재 값과 같이 상기 HWSC의 값을 설정하고;
    데이터의 상기 특정 세트가 상이한 페이지로부터 이동된 오래된 데이터인 것에 응답하여 상기 상이한 페이지와 연관된 이전 HWSC 값과 같이 상기 HWSC의 값을 설정하도록 동작하는, 메모리 인터페이스.
  17. 제16항에 있어서, 상기 제어 회로는, 또한,
    상기 NVM의 각각의 페이지의 WSC 값들을 따르는 시간 순차적 순서로 상기 NVM의 각각의 페이지를 검사함으로써 상기 NVM의 논리적-대-물리적 맵핑 테이블(logical-to-physical mapping table)을 재구축하도록 동작하는, 메모리 인터페이스.
  18. 제16항 또는 제17항에 있어서, 상기 제어 회로는, 또한,
    일관성 없는 데이터를 포함하는 상기 NVM의 손상 페이지를 식별하고;
    상기 손상 페이지와 연관된 WSC 값을 결정하고;
    상기 손상 페이지와 연관된 상기 WSC 값보다 큰 WSC 값과 연관된 임의의 페이지를 무시함으로써,
    상기 NVM에 대한 롤백(rollback) 동작을 수행하도록 동작하는, 메모리 인터페이스.
  19. 제18항에 있어서, 상기 임의의 페이지를 무시하는 것은,
    상기 NVM의 논리적-대-물리적 맵핑 테이블의 재구축 동안 상기 임의의 페이지를 무시하는 것을 포함하는, 메모리 인터페이스.
  20. 삭제
KR20120102880A 2011-09-16 2012-09-17 불휘발성 메모리 시스템들을 위한 위브 시퀀스 카운터 KR101494051B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/234,984 US9477590B2 (en) 2011-09-16 2011-09-16 Weave sequence counter for non-volatile memory systems
US13/234,984 2011-09-16

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020120137917A Division KR101892302B1 (ko) 2011-09-16 2012-11-30 불휘발성 메모리 시스템들을 위한 위브 시퀀스 카운터

Publications (2)

Publication Number Publication Date
KR20130030241A KR20130030241A (ko) 2013-03-26
KR101494051B1 true KR101494051B1 (ko) 2015-02-16

Family

ID=47002645

Family Applications (2)

Application Number Title Priority Date Filing Date
KR20120102880A KR101494051B1 (ko) 2011-09-16 2012-09-17 불휘발성 메모리 시스템들을 위한 위브 시퀀스 카운터
KR1020120137917A KR101892302B1 (ko) 2011-09-16 2012-11-30 불휘발성 메모리 시스템들을 위한 위브 시퀀스 카운터

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020120137917A KR101892302B1 (ko) 2011-09-16 2012-11-30 불휘발성 메모리 시스템들을 위한 위브 시퀀스 카운터

Country Status (7)

Country Link
US (1) US9477590B2 (ko)
EP (1) EP2570929B1 (ko)
JP (1) JP5696118B2 (ko)
KR (2) KR101494051B1 (ko)
CN (1) CN102999431B (ko)
TW (2) TWI564715B (ko)
WO (1) WO2013040537A1 (ko)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110035540A1 (en) * 2009-08-10 2011-02-10 Adtron, Inc. Flash blade system architecture and method
US8909851B2 (en) 2011-02-08 2014-12-09 SMART Storage Systems, Inc. Storage control system with change logging mechanism and method of operation thereof
US20120203993A1 (en) * 2011-02-08 2012-08-09 SMART Storage Systems, Inc. Memory system with tiered queuing and method of operation thereof
US8935466B2 (en) 2011-03-28 2015-01-13 SMART Storage Systems, Inc. Data storage system with non-volatile memory and method of operation thereof
US9098399B2 (en) 2011-08-31 2015-08-04 SMART Storage Systems, Inc. Electronic system with storage management mechanism and method of operation thereof
US9021231B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Storage control system with write amplification control mechanism and method of operation thereof
US9021319B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Non-volatile memory management system with load leveling and method of operation thereof
US9063844B2 (en) 2011-09-02 2015-06-23 SMART Storage Systems, Inc. Non-volatile memory management system with time measure mechanism and method of operation thereof
US9239781B2 (en) 2012-02-07 2016-01-19 SMART Storage Systems, Inc. Storage control system with erase block mechanism and method of operation thereof
US9298252B2 (en) 2012-04-17 2016-03-29 SMART Storage Systems, Inc. Storage control system with power down mechanism and method of operation thereof
US8949689B2 (en) 2012-06-11 2015-02-03 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US10430391B2 (en) * 2012-09-28 2019-10-01 Oracle International Corporation Techniques for activity tracking, data classification, and in database archiving
US9671962B2 (en) 2012-11-30 2017-06-06 Sandisk Technologies Llc Storage control system with data management mechanism of parity and method of operation thereof
US9123445B2 (en) 2013-01-22 2015-09-01 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9214965B2 (en) 2013-02-20 2015-12-15 Sandisk Enterprise Ip Llc Method and system for improving data integrity in non-volatile storage
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
US9183137B2 (en) 2013-02-27 2015-11-10 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9470720B2 (en) 2013-03-08 2016-10-18 Sandisk Technologies Llc Test system with localized heating and method of manufacture thereof
US9043780B2 (en) 2013-03-27 2015-05-26 SMART Storage Systems, Inc. Electronic system with system modification control mechanism and method of operation thereof
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
US9170941B2 (en) 2013-04-05 2015-10-27 Sandisk Enterprises IP LLC Data hardening in a storage system
US9543025B2 (en) 2013-04-11 2017-01-10 Sandisk Technologies Llc Storage control system with power-off time estimation mechanism and method of operation thereof
US10546648B2 (en) 2013-04-12 2020-01-28 Sandisk Technologies Llc Storage control system with data management mechanism and method of operation thereof
US10417123B1 (en) 2013-05-16 2019-09-17 Western Digital Technologies, Inc. Systems and methods for improving garbage collection and wear leveling performance in data storage systems
US9898056B2 (en) 2013-06-19 2018-02-20 Sandisk Technologies Llc Electronic assembly with thermal channel and method of manufacture thereof
US9313874B2 (en) 2013-06-19 2016-04-12 SMART Storage Systems, Inc. Electronic system with heat extraction and method of manufacture thereof
US9244519B1 (en) 2013-06-25 2016-01-26 Smart Storage Systems. Inc. Storage system with data transfer rate adjustment for power throttling
US9367353B1 (en) 2013-06-25 2016-06-14 Sandisk Technologies Inc. Storage control system with power throttling mechanism and method of operation thereof
US9146850B2 (en) 2013-08-01 2015-09-29 SMART Storage Systems, Inc. Data storage system with dynamic read threshold mechanism and method of operation thereof
US9361222B2 (en) 2013-08-07 2016-06-07 SMART Storage Systems, Inc. Electronic system with storage drive life estimation mechanism and method of operation thereof
US9448946B2 (en) 2013-08-07 2016-09-20 Sandisk Technologies Llc Data storage system with stale data mechanism and method of operation thereof
US9431113B2 (en) 2013-08-07 2016-08-30 Sandisk Technologies Llc Data storage system with dynamic erase block grouping mechanism and method of operation thereof
US9152555B2 (en) 2013-11-15 2015-10-06 Sandisk Enterprise IP LLC. Data management with modular erase in a data storage system
KR102168169B1 (ko) 2014-01-07 2020-10-20 삼성전자주식회사 비휘발성 메모리 시스템의 메모리 맵핑 방법 및 이를 제공하는 시스템
FR3020712B1 (fr) * 2014-04-30 2017-09-01 Proton World Int Nv Compteur bidirectionnel en memoire flash
KR102287760B1 (ko) 2014-10-29 2021-08-09 삼성전자주식회사 메모리 시스템 및 상기 메모리 시스템의 동작 방법
KR102252378B1 (ko) 2014-10-29 2021-05-14 삼성전자주식회사 메모리 장치, 메모리 시스템, 상기 메모리 장치의 동작 방법 및 상기 메모리 시스템의 동작 방법
KR102263046B1 (ko) 2014-10-29 2021-06-09 삼성전자주식회사 메모리 장치, 메모리 시스템, 상기 메모리 장치의 동작 방법 및 상기 메모리 시스템의 동작 방법
KR102553170B1 (ko) 2016-06-08 2023-07-10 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR20180019419A (ko) 2016-08-16 2018-02-26 삼성전자주식회사 메모리 컨트롤러, 메모리 시스템 및 그 동작방법
US10949113B2 (en) * 2018-01-10 2021-03-16 SK Hynix Inc. Retention aware block mapping in flash-based solid state drives
KR102626048B1 (ko) * 2018-03-21 2024-01-18 에스케이하이닉스 주식회사 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법
US11275512B2 (en) * 2018-05-08 2022-03-15 Micron Technology, Inc. Asynchronous power loss impacted data structure
US11379410B2 (en) 2019-09-13 2022-07-05 Oracle International Corporation Automated information lifecycle management of indexes
US11620234B2 (en) 2020-06-29 2023-04-04 Western Digital Technologies, Inc. Operation-deterministic write operations for data recovery and integrity checks
KR20220072242A (ko) * 2020-11-25 2022-06-02 삼성전자주식회사 비휘발성 메모리 장치의 데이터 기입 방법 및 이를 수행하는 비휘발성 메모리 장치

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007056106A2 (en) 2005-11-03 2007-05-18 Intel Corporation Recovering from a non-volatile memory failure

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07182246A (ja) 1993-11-25 1995-07-21 Sanyo Electric Co Ltd 不揮発性メモリの制御装置及び制御方法
EP0769171A1 (en) * 1995-05-05 1997-04-23 Silicon Graphics, Inc. Page migration in a non-uniform memory access (numa) system
US6000006A (en) * 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
US6282700B1 (en) 1998-05-21 2001-08-28 Hewlett Packard Company Mechanism for maintaining revisions of objects in flash memory
US7966462B2 (en) 1999-08-04 2011-06-21 Super Talent Electronics, Inc. Multi-channel flash module with plane-interleaved sequential ECC writes and background recycling to restricted-write flash chips
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
US7631138B2 (en) 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics
US7120051B2 (en) 2004-12-14 2006-10-10 Sandisk Corporation Pipelined programming of non-volatile memories using early data
FR2899716A1 (fr) 2006-04-07 2007-10-12 St Microelectronics Sa Procede de securisation de blocs de donnees dans une memoire programmable electriquement
JP2008033801A (ja) * 2006-07-31 2008-02-14 Victor Co Of Japan Ltd メモリデータ管理装置
US7689762B2 (en) * 2007-05-03 2010-03-30 Atmel Corporation Storage device wear leveling
JP5164506B2 (ja) * 2007-10-02 2013-03-21 三菱電機株式会社 フラッシュメモリ管理装置及びフラッシュメモリ管理方法及びプログラム
US20100318719A1 (en) 2009-06-12 2010-12-16 Micron Technology, Inc. Methods, memory controllers and devices for wear leveling a memory
US8566506B2 (en) 2009-08-07 2013-10-22 Intel Corporation Tracking a lifetime of write operations to a non-volatile memory storage
US8281065B2 (en) 2009-09-01 2012-10-02 Apple Inc. Systems and methods for determining the status of memory locations in a non-volatile memory
US8296496B2 (en) 2009-09-17 2012-10-23 Hewlett-Packard Development Company, L.P. Main memory with non-volatile memory and DRAM

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007056106A2 (en) 2005-11-03 2007-05-18 Intel Corporation Recovering from a non-volatile memory failure

Also Published As

Publication number Publication date
US9477590B2 (en) 2016-10-25
EP2570929A3 (en) 2014-05-14
KR20130030241A (ko) 2013-03-26
TW201329709A (zh) 2013-07-16
EP2570929A2 (en) 2013-03-20
TW201329711A (zh) 2013-07-16
EP2570929B1 (en) 2015-05-27
US20130073788A1 (en) 2013-03-21
TWI604305B (zh) 2017-11-01
KR101892302B1 (ko) 2018-08-27
WO2013040537A1 (en) 2013-03-21
JP5696118B2 (ja) 2015-04-08
CN102999431A (zh) 2013-03-27
TWI564715B (zh) 2017-01-01
CN102999431B (zh) 2015-07-15
JP2013065309A (ja) 2013-04-11
KR20130030244A (ko) 2013-03-26

Similar Documents

Publication Publication Date Title
KR101494051B1 (ko) 불휘발성 메모리 시스템들을 위한 위브 시퀀스 카운터
TWI554877B (zh) 處理用於具有非揮發性記憶體之一系統之不正常關機
TWI448890B (zh) 記憶體系統、用於判定電子器件中之動態資料的方法及用於在非揮發性記憶體中執行記憶體垃圾收集之方法
US8949512B2 (en) Trim token journaling
US9235502B2 (en) Systems and methods for configuring non-volatile memory
US20150301938A1 (en) Lba bitmap usage
US9239785B2 (en) Stochastic block allocation for improved wear leveling
US20110238629A1 (en) Uncorrectable error handling schemes for non-volatile memories

Legal Events

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

Payment date: 20180118

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190116

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20200115

Year of fee payment: 6