KR20160003720A - 메모리 시스템에서의 소거 관리 - Google Patents

메모리 시스템에서의 소거 관리 Download PDF

Info

Publication number
KR20160003720A
KR20160003720A KR1020157032963A KR20157032963A KR20160003720A KR 20160003720 A KR20160003720 A KR 20160003720A KR 1020157032963 A KR1020157032963 A KR 1020157032963A KR 20157032963 A KR20157032963 A KR 20157032963A KR 20160003720 A KR20160003720 A KR 20160003720A
Authority
KR
South Korea
Prior art keywords
data
storage cells
area
invalid data
erase
Prior art date
Application number
KR1020157032963A
Other languages
English (en)
Other versions
KR101686376B1 (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 KR20160003720A publication Critical patent/KR20160003720A/ko
Application granted granted Critical
Publication of KR101686376B1 publication Critical patent/KR101686376B1/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • G11C11/5635Erasing circuits
    • 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
    • G11C16/10Programming or data input circuits
    • 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
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • 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
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • 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
    • G11C16/32Timing circuits
    • 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
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • 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
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • 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/7204Capacity control, e.g. partitioning, end-of-life degradation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/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/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling
    • 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
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits

Abstract

컴퓨터 프로세서 하드웨어는 비휘발성 메모리 시스템 내의 저장 셀들의 영역에 저장된 데이터가 유효하지 않은 데이터를 저장하고 있다는 통지를 수신한다. 통지에 응답하여, 컴퓨터 프로세서 하드웨어는 영역을 유효하지 않은 데이터를 저장하는 것으로서 표시한다. 컴퓨터 프로세서 하드웨어는 저장 셀들에 있는 유효하지 않은 데이터를 교체 데이터로 덮어쓰는 것과 연관되는 소거 체류 시간의 크기(즉, 하나 이상의 셀들이 소거된 상태로 설정되는 시간의 양)를 제어한다. 예를 들어, 각자의 저장 셀들을 재프로그램하기 위해, 데이터 관리자는 저장 셀들을 소거하고 이어서 저장 셀들을 교체 데이터로 프로그램해야만 한다. 데이터 관리 로직은 비휘발성 메모리 시스템의 수명을 향상시키기 위해 소거 체류 시간을 임계 시간 값 미만이 되도록 제어할 수 있다.

Description

메모리 시스템에서의 소거 관리{ERASE MANAGEMENT IN MEMORY SYSTEMS}
본 개시 내용의 실시예들은 일반적으로 메모리 시스템에서의 데이터 관리에 관한 것이다.
컴퓨터 시스템들은 데이터를 저장하는 디바이스들을 오랫동안 사용해 왔다. 예를 들어, 종래의 HDD(Hard Disk Drive)는 빠르게 회전하는 디스크들을 사용하여 디지털 정보를 저장하고 검색하기 위해 사용되는 데이터 저장 디바이스이다. 이러한 디스크들은 각자의 데이터를 영속적으로 저장하는 자성 물질(magnetic material)로 코팅되어 있다. 각자의 디스크가 회전할 때, 자기 헤드는 디스크의 표면 상의 자성 물질로부터 데이터를 판독하거나 그에 데이터를 기입한다.
데이터를 저장하는 다른 유형의 종래 기술은 고상 드라이브(solid state-drive)이다. 그의 이름이 암시하듯이, 고상 드라이브는 데이터를 영속적으로 저장하도록 구성되어 있는 하나 이상의 고상 디바이스들 또는 집적 회로들을 포함한다. 고상 드라이브에서는 실제로 움직이는 부분들이 없다. 고상 드라이브 내의 비휘발성 메모리에 저장된 데이터에의 액세스는 전자 회로 인터페이스를 사용하여 수행된다.
회전하는 디스크 드라이브들 대신에 고상 드라이브들이 널리 사용되는 하나의 이유는 속도이다. 예를 들어, 비휘발성 메모리에 있는 데이터에 대한 액세스는 전형적으로 디스크(예컨대, 물리적으로 회전하는 저장 매체)에 저장된 데이터에 대한 액세스보다 훨씬 더 빠르다. 디스크 드라이브 저장소와 달리 비휘발성 메모리를 사용하는 것의 단점은 비용이다. 예를 들어, 메모리에 데이터를 저장하는 비트당 비용은 HDD의 자기 매체 디스크 상에 데이터를 저장하는 비트당 비용보다 상당히 더 높을 수 있다.
메모리 시스템들은 전형적으로 정보의 비트들을 저장하는 많은 저장 셀들을 포함한다. 메모리 시스템 및 각자의 저장 셀들의 적절한 관리가 수명 및 유용성에 중요하다. 많은 저장 요소들의 어떤 관리는 조기 고장을 야기할 수 있다.
비휘발성 메모리 시스템 내의 저장 셀들은 반복하여 사용될 수 있다. 예를 들어, 비휘발성 메모리 디바이스 내의 저장 셀들의 영역이 처음에 한 세트의 데이터를 저장하도록 프로그램될 수 있다. 한 세트의 데이터를 덮어쓰기 위해, 저장 셀들의 영역이 먼저 소거되어야만 한다. 새로운 데이터가 이어서 저장 셀들의 영역에 기입된다.
도 1은 종래 기법들에 따른, 메모리 셀들에 데이터를 저장하는 것의 성능 열화를 나타낸 예시적인 도면.
도 2는 종래 기법들에 따른, RWB 마진 손실(loss of RWB margin)을 나타낸 예시적인 도면.
도 3은 본 명세서에서의 실시예들에 따른, 비휘발성 메모리 시스템을 나타낸 예시적인 도면.
도 4는 본 명세서에서의 실시예들에 따른, 비휘발성 메모리 시스템 내의 저장 셀들의 관리를 나타낸 예시적인 도면.
도 5는 본 명세서에서의 실시예들에 따른, 저장 셀들에 데이터를 저장하는 것의 감소된 성능 열화를 나타낸 예시적인 도면.
도 6은 본 명세서에서의 실시예들에 따른, 저장 셀들에 있는 데이터의 부분 소거를 나타낸 예시적인 도면.
도 7은 본 명세서에서의 실시예들에 따른, 하나 이상의 방법들을 실행하기 위해 사용될 수 있는 컴퓨터 아키텍처를 나타낸 예시적인 도면.
도 8은 본 명세서에서의 실시예들에 따른, 방법을 나타낸 예시적인 플로우차트.
도 9는 본 명세서에서의 실시예들에 따른, 각자의 컴퓨터 시스템에서의 메모리의 사용을 나타낸 예시적인 도면.
하나의 종래 응용에 따르면, 데이터 관리자는 (NAND 메모리 기술과 같은) 비휘발성 메모리의 한 영역 내의 저장 셀들이 현재 유효하지 않은 데이터를 저장하고 있다는 통지를 수신할 수 있다. 통지에 응답하여, 데이터 관리자는 저장 셀들의 영역을 즉각 소거하여 저장 셀들이 차후의 프로그래밍을 위해 이용 가능하도록 만든다. 소거된 저장 셀들의 영역이 이어서 큐(queue)에 놓여진다. 시스템이 데이터를 저장할 부가 자원들을 필요로 할 때, 데이터 관리자는 새로운 데이터를 저장하기 위해 이전에 소거된 영역을 할당한다.
본 명세서에서 논의된 특정 실시예들은 비휘발성 메모리 내의 저장 셀이 소거 상태에 있는 시간 길이가 각자의 저장 셀들이 차후의 데이터를 저장하는 능력에 부정적 영향을 미칠 수 있다는 발견에 적어도 부분적으로 기초하고 있다. 비휘발성 메모리 디바이스 내의 저장 셀들은 비소거형 데이터(non-erase type data)로 차후에 재프로그램되기 전에 소거 상태로 설정되어 있다.
비휘발성 메모리 디바이스 내의 모든 셀은 저장 디바이스의 정상 사용 동안 시간의 경과에 따른 어떤 양의 내인성 전하 손실(intrinsic charge loss) 및 감소된 RWB(read window budget)에 취약하다. 일반적으로, 내인성 전하 손실이란 프로그래밍 펄스 후의 부유 게이트로부터의 전자들의 누설을 말한다. 프로그래밍의 결과로서 포획된 전하는 처음에 비휘발성 메모리 디바이스 셀들의 임계 전압(Vt)이 부유 게이트 전압보다 더 높은 것처럼 보이게 한다. 그렇지만, 프로그래밍 후의 이 전자들의 누설은 전형적으로 임계 전압의 천이를 야기한다. RWB는 조절 임계 상태(adjustment threshold state)들 사이의 에지 마진(edge margin)들의 합을 나타낸다(도 1과 관련하여 더 상세히 논의됨).
비휘발성 메모리 디바이스 내의 셀들이 오랜 기간 동안 소거된 상태에 있을 때, 그 셀들에 차후에 저장되는 데이터에 대해 내인성 전하 손실의 속도가 증가한다. 저장 셀들을 보다 긴 소거 체류 시간(erase dwell time)에 노출시킨 결과로서 그 셀들에 대한 RWB 마진(RWB margin)의 열화 속도도 감소된다.
특정 경우들에서, 비휘발성 메모리 시스템이 (전원 공급 없이 섭씨 35도 초과와 같은) 높은 온도에 오랜 기간 동안 노출될 수 있다. 앞서 언급한 바와 같이, 내인성 전하 손실의 속도 및 RWB 마진의 양의 시간의 경과에 따른 열화는 셀들이 소거된 상태에 있는 시간 길이에 의존할 것이다. 이전에 고온에 노출된 저장 셀들이 오랜 기간 동안 소거된 상태에 있는 경우, 비휘발성 메모리 시스템은 보다 높은 내인성 전하 손실 속도 및 보다 큰 RWB 마진 열화에 취약하다.
본 명세서에서의 하나의 실시예는 비휘발성 메모리 시스템 내의 저장 셀들이 소거된 상태에 있는 시간을 제어하는 것을 포함한다. 예를 들어, 하나의 실시예에서, 데이터 관리자는 비휘발성 메모리 시스템 내의 저장 셀들의 영역에 저장된 데이터가 유효하지 않은 데이터를 저장하고 있다는 통지를 수신한다. 통지에 응답하여, 데이터 관리자는 영역을 유효하지 않은 데이터를 저장하는 것으로서 표시(mark)한다. 데이터 관리자는 저장 셀들에 있는 유효하지 않은 데이터를 교체 데이터(replacement data)로 덮어쓰는 것과 연관되는, 셀이 소거된 상태로 설정되는 시간의 양을 제어한다. 예를 들어, 각자의 저장 셀들을 재프로그램하기 위해, 데이터 관리자는 저장 셀들을 소거하고 이어서 저장 셀들을 교체 데이터로 프로그램한다. 하나의 비제한적인 예시적인 실시예에서, 데이터 관리자는, 저장 셀들의 수명 및 데이터를 저장할 수 있는 그들의 능력을 향상시키기 위해, 셀들이 소거된 상태에 있는 시간을 임계 시간 값 미만이 되도록 제어한다.
그에 따라, 유효하지 않은 데이터를 즉각 소거하고 각자의 새로운 데이터를 저장 셀들에 기입하기 위해 상당한 시간 길이를 기다리는 대신에, 본 명세서에서의 실시예들은 저장 셀들에 있는 유효하지 않은 데이터를 소거하는 동작을 저장 셀들을 교체 데이터로 재프로그램하는 때에 시간상 보다 가깝게 되도록 지연시키는 것을 포함한다. 본 명세서에서 논의된 바와 같이 셀들이 소거된 상태에 있는 시간을 감소시키는 것은 차후에 저장된 교체 데이터에 대한 내인성 전하 손실의 속도 및 RWB 마진의 열화 속도를 감소시킨다. 이와 같이, 본 명세서에서의 실시예들은 각자의 비휘발성 메모리 시스템 내의 저장 셀들과 연관된 성능을 보존시키는 것을 포함한다.
이제, 보다 구체적으로는, 도 1은 종래 기법들에 따른, 메모리 셀들에 데이터를 저장하는 것의 성능 열화를 나타낸 예시적인 도면이다.
그래프(110-1)에 나타낸 바와 같이, 처음에, 비휘발성 메모리 디바이스의 다수의 저장 셀들이 상이한 레벨들 L0, L1, L2, 및 L3으로 프로그램되어 있다. 비제한적인 예로서, 다수의 저장 셀들 각각은 2 비트의 정보를 저장할 수 있는 다중 레벨 NAND 셀 또는 단일 레벨 NAND 셀 저장 요소일 수 있다.
값이 각자의 셀에 기입될 때, 전하가 부유 게이트에 인가된다. 상이한 비트 설정을 셀에 기입하기 위해 상이한 양의 전하가 각자의 셀에 인가된다. 예를 들어, 셀당 2 비트의 다중 레벨 셀 디바이스를 가정하면, 각자의 셀을 11의 비트 값으로 설정하기 위해 제1 양의 전하가 인가되고; 각자의 셀을 10의 비트 값으로 설정하기 위해 제2 양의 전하가 인가되며; 각자의 셀을 01의 비트 값으로 설정하기 위해 제3 양의 전하가 인가되고; 각자의 셀을 00의 비트 값으로 설정하기 위해 제4 양의 전하가 인가된다. (셀의 상태를 판독할 때의) 전압 Vt는 각자의 셀 및 인가된 전하의 설정에 따라 변한다.
범위 R0 내에 있는 셀의 Vt 판독은 셀이 비트 값 11로 설정되어 있다는 것을 나타내고; 범위 R1 내에 있는 셀의 Vt 판독은 셀이 비트 값 10으로 설정되어 있다는 것을 나타내며; 범위 R2 내에 있는 셀의 Vt 판독은 셀이 비트 값 01로 설정되어 있다는 것을 나타내고; 범위 R3 내에 있는 셀의 Vt 판독은 셀이 비트 값 00으로 설정되어 있다는 것을 나타낸다.
셀에 대해 검출되는 Vt(임계 전압) 레벨(프로그래밍 동안 포획된 전하의 양을 나타냄)은 셀의 차후의 판독 시에 각자의 셀이 프로그램되는 대응하는 상태를 나타낸다. 예를 들어, 그래프(110-1)에서의 레벨 L0는 데이터 = 11로 프로그램된 메모리 디바이스 내의 다수의 셀들에 대한 Vt의 분포를 나타내고; 레벨 L1은 데이터 = 10으로 프로그램된 메모리 디바이스 내의 다수의 셀들에 대한 Vt의 분포를 나타내며; 레벨 L2는 데이터 = 01로 프로그램된 메모리 디바이스 내의 다수의 셀들에 대한 Vt의 분포를 나타내고; 레벨 L3은 데이터 = 00으로 프로그램된 메모리 디바이스 내의 다수의 셀들에 대한 Vt의 분포를 나타낸다.
판독될 때, 레벨 L0(예컨대, 데이터 값 11)으로 프로그램된 모든 저장 셀들은 범위 R0 내의 각자의 Vt를 생성하고; 레벨 L1(예컨대, 데이터 값 10)로 프로그램된 모든 저장 셀들은 범위 R1 내의 각자의 Vt를 가지며; 레벨 L2(예컨대, 데이터 값 01)로 프로그램된 모든 저장 셀들은 범위 R2 내의 각자의 Vt를 갖고; 레벨 L3(예컨대, 데이터 값 00)으로 프로그램된 모든 저장 셀들은 범위 R3 내의 각자의 Vt를 가진다. 각각의 전압 Vt는 셀의 상태를 판독하는 각자의 회로에 의해 검출되는 전압 레벨을 나타낸다.
이 예에서, 그래프(110-1)가 프로그래밍 직후에 상이한 논리 레벨들로 설정된 메모리 셀들의 초기 상태의 분포를 나타내는 것으로 가정한다.
이 예에서, 메모리 셀들이, 며칠보다 훨씬 더 많은 것과 같은, 오랜 시간 동안 소거 상태에 이전에 노출된 것으로 추가로 가정한다. 환언하면, 그래프(110-1)에서와 같은 초기 상태로 프로그램되기 전에, 메모리 셀들이 소거되고 상당한 양의 시간 동안 소거 상태에 유지되었다(즉, 모든 저장 셀들이 며칠 동안 레벨 L0의 소거 상태로 설정된 것으로 가정함).
그래프(110-2)는 저장 셀들을 소거 상태에 너무 오랫동안 유지시킨 결과로서 일어나는 저장 성능의 열화를 나타낸 것이다. 처음에, 설정들의 분포들은 그래프(110-1)에 나타낸 바와 같다. 그렇지만, 앞서 논의된 바와 같이, 저장 셀들이 오랜 기간 동안 소거 상태에 있었기 때문에, 설정들이 시간의 경과에 따라 열화된다. 보다 구체적으로는, 오랜 시간 동안 소거 상태에 있은 결과로서 내인성 전하 손실의 속도가 더 크고; RWB 마진의 열화 속도도 역시 더 크다
이 예에서, 내인성 전하 손실로 인해, 시간의 경과에 따라, 레벨들 L0, L1, L2, 및 L3에 프로그램된 셀들에 대한 Vt 분포들의 집계(aggregate)가 그래프(110-1)로부터 그래프(110-2)로 좌측으로 천이한다. 이 예에서, 피크 P1은 그래프(110-1)에서의 레벨 L1에서의 피크 분포를 나타내고; 피크 P1'은 그래프(110-2)에서의 레벨 L1에서의 피크 분포를 나타낸다. 도시된 바와 같이, 피크 P1'은 피크 P1에 대해 천이되어 있다. P1과 P1' 사이의 차이는 천이의 양을 나타낸다.
그에 부가하여, 시간의 경과에 따라, Vt 분포들이 그래프(110-1)에서와 같은 초기 상태로부터 그래프(110-2)에 나타낸 바와 같은 분포들로 확대된다. 예를 들어, 저장 셀들을 프로그램하는 초기 상태에서의 RWB 마진은 그래프(110-1)에서 범위들 E0, E1, E2, E3, E4, 및 E5의 합이다. 레벨들 사이의 충분히 큰 마진들은 각자의 저장 셀이 어느 레벨로 설정되어 있는지를 구별할 수 있도록 보장한다. 언급된 바와 같이, 시간의 경과에 따라, 이 예에서, 저장 셀들이 상당히 오랜 기간 동안 소거 상태에 있었기 때문에, 저장 셀들과 연관된 분포들이 시간의 경과에 따라 열화된다. 즉, 그래프(110-2)에 나타낸 바와 같이, 앞서 논의된 바와 같은 천이에 부가하여, 상이한 레벨들 L0, L1, L2, 및 L3에 대한 Vt 분포들 각각이 확대됨으로써, 저장 셀들에 대한 적절한 설정들을 결정하는 것이 어렵거나 어쩌면 더 이상 가능하지 않은 정도까지 RWB 마진이 줄어든다.
예를 들어, 그래프(110-1)에서 초기에 레벨 L1로 프로그램된 저장 셀이, 그래프(110-2)에 나타낸 바와 같은 분포의 천이 및/또는 확대로 인해, 레벨 L0으로 설정된 것처럼 보일 수 있다. 이와 달리, 그래프(110-1)에서 초기에 레벨 L0으로 프로그램된 저장 셀이, 그래프(110-2)에 나타낸 바와 같은 분포의 천이 및/또는 확대로 인해, 레벨 L1로 설정된 것처럼 보일 수 있고, 이하 마찬가지이다. 그에 따라, 오랜 시간 동안 소거 상태에 있는 것에 의해 야기되는, 그래프(110-2)에 나타낸 바와 같은 저장 성능의 열화는 바람직하지 않다.
도 2는 종래 기법들에 따른, 이론적인 RWB 마진 손실을 나타낸 예시적인 도면이다.
그래프(210)에 나타낸 바와 같이, 라인(220)은 소거된 상태에서 소비된 시간의 결과로서 시간의 경과에 따라 RWB 마진이 열화되는 정도를 나타낸 것이다. 그래프(210)의 x 축은 각자의 저장 셀들에 대한 소거된 상태에서의 시간(단위: 초)을 나타내고; 그래프(210)의 y-축은 RWB 마진 손실[단위: 밀리볼트(mV)]을 나타낸다. 모든 저장 셀들이 소거된 상태에 있는 시간이 증가함에 따라, RWB 마진이 보다 작은 값들로 열화되어, 앞서 언급된 바와 같이 저장된 데이터를 판독하는 것을 더 어렵게 만든다. 각자의 비휘발성 메모리 시스템에서의 각자의 오류 정정 코드 또는 다른 적당한 데이터 정정 메커니즘을 사용하여 다수의 장애 비트(failing bit)들이 정정될 수 없을 정도로 RWB 마진들이 열화될 수 있다. 그에 따라, 소거된 상태에서 과도한 시간이 소비되는 것은 저장된 데이터의 파국적 손실을 야기할 수 있다.
도 3은 본 명세서에서의 실시예들에 따른, 비휘발성 메모리 시스템 내의 메모리 디바이스들의 구성을 나타낸 예시적인 도면이다.
도시된 바와 같이, 예시적인 메모리 시스템(100)은 데이터 관리 로직(140) 및 데이터를 저장하는 메모리 디바이스(110-A), 메모리 디바이스(110-B), 메모리 디바이스(110-C) 등[총칭하여, 메모리 디바이스들(110)이라고 함]과 같은 하나 이상의 메모리 디바이스들을 포함한다. 메모리 시스템(100)은 임의의 적당한 수의 메모리 디바이스들(110)의 스트링(string)을 포함할 수 있다.
메모리 시스템(100)은 다수의 메모리 디바이스들을 포함하는 SSD(Solid State-Drive)와 같은 장치의 일부일 수 있다. 본 명세서에서 논의되는 바와 같이, 데이터를 저장하기 위해 데이터 스트라이핑(data striping)(예컨대, 데이터의 스트링의 부분들이 다수의 디바이스들 각각에 저장됨)의 기법이 사용될 수 있다.
유의할 점은, 메모리 시스템(100) 및/또는 데이터 관리 로직(140)이 본 명세서에서 논의된 적당한 기능들[예컨대, 데이터 액세스, 패리티 정보의 생성, 메모리 복구(더 이상 데이터를 제대로 저장할 수 없는 저장 셀들의 블록들을 리타이어(retire)시키는 것 등), 데이터 정정, 소거된 상태에서 소비되는 시간의 제어 등] 중 임의의 것을 수행하는 하드웨어, 소프트웨어, 펌웨어 등을 포함할 수 있다는 것이다.
유의할 점은, 도 1에 개시된 자원들 각각이 임의의 적당한 유형의 자원일 수 있다는 것이다. 예를 들어, 메모리 디바이스들(110)[예컨대, NAND 플래시, NOR 플래시, 자기 저항 랜덤 액세스 메모리, 강유전성 랜덤 액세스 메모리, 3 차원 교차점 메모리(cross point memory) 등]은 데이터를 저장하는 하나 이상의 저장 평면(storage plane)들(예컨대, 디바이스를 홀수 및 짝수 블록들로 이루어진 2 개의 물리적 평면들로 나누는 2 평면 아키텍처)을 포함할 수 있다.
데이터 관리 로직(140) 및/또는 관련된 구성요소들은 ASIC(Application Specific Integrated Circuit), 명령어들을 실행하는 컴퓨터 프로세서 하드웨어, 펌웨어, 하드웨어, 소프트웨어, 하드웨어와 소프트웨어의 혼성 등과 같은 임의의 적당한 유형의 자원을 통해 실행될 수 있다.
비제한적인 예로서, 메모리 디바이스들(110) 각각은 각자의 데이터를 저장하는 다수의 저장 셀들을 포함할 수 있다. 예를 들어, 메모리 디바이스(110-A)는 블록(120-A1), 블록(120-A2), 블록(120-A3) 등을 포함하고; 메모리 디바이스(110-B)는 블록(120-B1), 블록(120-B2), 블록(120-B3) 등을 포함하며; 메모리 디바이스(110-C)는 블록(120-C1), 블록(120-C2), 블록(120-C3) 등을 포함한다.
각각의 블록은 다수의 페이지들을 포함하고; 블록 내의 각각의 페이지는 각자의 데이터를 저장하는 다수의 저장 셀들을 포함한다. 일례로서, 영역(210-2)은 다수의 메모리 디바이스들(110)에 걸쳐 저장된 비트 정보의 스트링과 같은 페이지(245-X)를 포함한다.
도시된 바와 같이, 메모리 시스템(100)에서의 각각의 영역(또는 대역)은 다수의 메모리 디바이스들(110)로부터의 블록들의 스트라이프(stripe)를 포함할 수 있다. 이 비제한적인 예시적인 실시예에서, 영역(210-1)은 블록(120-A1), 블록(120-B1), 블록(120-C1) 등을 포함하고; 영역(210-2)은 블록(120-A2), 블록(120-B2), 블록(120-C2) 등을 포함하며; 영역(210-3)은 블록(120-A3), 블록(120-B3), 블록(120-C3) 등을 포함하고; 이하 마찬가지이다.
하나의 비제한적인 예시적인 실시예에서, 각각의 블록 내의 메모리 요소들은 다중 레벨 셀이도록 구성되어 있고; 각각의 저장 요소는, 언급한 바와 같이, 다수의 비트들의 데이터를 저장할 수 있다. 언급된 바와 같이, 실시예에 따르면, 각각의 셀은 셀당 비트 모드 설정(bit-per-cell mode setting)[예컨대, 다중 레벨 셀(MLC), 단일 레벨 셀(SLC) 등]에 따라 하나 또는 다수의 비트들의 데이터를 저장할 수 있을 것이다.
그에 따라, 메모리 디바이스들(110) 내의 저장 자원들은 영역(210-1), 영역(210-2), 영역(210-3) 등을 비롯한 다수의 영역들로 분할될 수 있다. 하나의 실시예에서, 영역(210-1)은 제1 대역을 나타내고, 영역(210-2)은 제2 대역을 나타내며, 영역(210-3)은 제3 대역을 나타내고, 이하 마찬가지이다.
임의의 주어진 때에, 영역들(210) 중 하나 이상의 영역들에 저장된 데이터(또는 그의 일부분)는 다수의 이유들로 인해 더 이상 사용되지 못하도록 리타이어될 수 있다. 예를 들어, 메모리 내의 다수의 위치들에 걸쳐 저장되어 있는 관련된 데이터가 성능 이유들로 다른 방식으로(예컨대, 나란히) 보다 양호하게 저장되는 조각 모음 분석(defragmentation analysis)을 수행한 결과로서, 각자의 대역에 있는 데이터가 유효하지 않은 것으로서 리타이어될 수 있고; 사용자가 삭제 동작을 실행하여 데이터가 더 이상 필요하지 않다는 것을 나타낸 결과로서, 각자의 대역에 있는 데이터가 유효하지 않은 것으로서 리타이어될 수 있으며; 기타 등등이 있다.
각자의 영역에 저장된 데이터가 더 이상 유효하지 않다는 통지를 수신할 때, 데이터 관리 로직(140)은 새로 리타이어된 데이터 영역의 ID(identity)를 목록(320)에 저장한다. 이 예시적인 실시예에서, 목록(320)은 영역(210-5), 영역(210-6), ..., 영역(210-2)이 리타이어되었고 모두 유효하지 않은 데이터를 저장하고 있다(예컨대, 데이터가 더 이상 유용하지 않다)는 것을 나타낸다.
목록(320)에 포함시키는 것에 의해 나타낸 바와 같이, 유효하지 않은 데이터를 가지는 각자의 영역들을 즉각 소거하기보다는, 본 명세서에서의 실시예들은 각자의 영역들 내의 저장 셀들을 소거하는 동작을, 그것들이 리타이어되거나 유효하지 않은 데이터인 것으로 라벨링된 후로 지연시키는 것을 포함한다.
이 예에서, 데이터 관리 로직(140)이 메모리 시스템(100)에서의 저장 셀들의 각자의 영역(210-2)에 저장된 데이터가 이제 유효하지 않은 데이터를 저장하고 있다는 통지를 수신하는 것으로 가정한다. 통지를 수신한 것에 응답하여, 데이터 관리 로직(140)은 영역(210-2)을 유효하지 않은 데이터를 저장하는 것으로서 표시한다. 이것은 영역(210-2)의 ID를 목록(320)에 저장하는 것을 포함할 수 있다. 그에 부가하여 또는 대안적으로, 본 명세서에서의 추가의 실시예들은 리타이어된 영역에 저장된 데이터가 더 이상 유효하거나 유용한 데이터가 아니라는 것을 나타내기 위해 그곳에 저장된 데이터의 적어도 일부분을 수정하는 것을 포함할 수 있다.
영역이 유효하지 않은 데이터를 저장하는 것으로서 표시되고 나서 얼마 후에, 데이터 관리 로직(140)은 영역(210) 내의 저장 셀들의 전부 또는 일부분에 교체 데이터를 기입한다. 증대된 저장 성능을 제공하기 위해 그리고 과도한 RWB 및 내인성 전하 손실 열화를 피하기 위해, 데이터 관리 로직(140)은 영역(210-2)의 저장 셀들을 각자의 교체 데이터로 차후에 덮어쓰기 전에 저장 셀들이 소거된 상태로 설정되는 시간의 양을 제어한다.
본 명세서에 기술된 바와 같이, 본 명세서에서의 하나의 실시예는 영역(210-2) 내의 저장 셀들에 있는 유효하지 않은 데이터를 소거하는 동작을 지연시키고 유효하지 않은 데이터를 교체 데이터로 교체하는 것을 포함한다. 예를 들어, 데이터 관리 로직(140)은 저장 셀들이 소거 상태에 있는 시간을 미리 결정된 시간 임계값 미만으로 감소시키기 위해 (저장 셀들에 교체 데이터를 기입하기 전에 필요한) 소거 동작을 지연시킨다. 영역들에 있는 데이터를 덮어쓰는 차후의 경우들에 대해 소거 체류 시간을 미리 결정된 시간 임계값 미만의 값으로 감소시키는 것은 메모리 시스템(100)이 그의 유효 수명 동안 특정 레벨의 성능을 제공하도록 보장한다.
도 4는 본 명세서에서의 실시예들에 따른, 비휘발성 메모리 시스템 내의 저장 셀들의 관리를 나타낸 예시적인 도면이다.
임의의 주어진 때에, 영역들(210) 중 하나 이상이, 기입된 상태(410)로 나타낸 바와 같이, 유효한 데이터를 저장할 수 있다. 환언하면, 기입된 상태(410)는 유효한 데이터를 저장하는 메모리 시스템(100)의 일부분들을 나타낸다.
앞서 논의한 바와 같이, 메모리 시스템(100)에 저장된 특정 데이터 영역들이 결국 유효하지 않게 될 수 있다. 상태(420)는 리타이어되었고 지금은 유효하지 않은 데이터를 저장하고 있는 영역들을 나타낸다. 영역이 리타이어되거나 유효하지 않은 데이터 상태(420)에 놓여 있음을 검출한 것에 응답하여, 데이터 관리 로직(140)은 유효하지 않은 데이터를 포함하는 영역의 ID를 목록(320)에 저장한다. 리타이어된 영역을 표시하거나 태깅(tag)하기 위해 임의의 적당한 방법이 사용될 수 있다.
하나의 실시예에서, 데이터 관리 로직(140)에 의해 수신된 교체 데이터(490)을 저장하기 위해 새로운 영역들이 필요할 때, 데이터 관리 로직(140)은 소거 기능(430)의 실행을 개시한다. 예를 들어, 현재 영역(450)이 영역(210-3)이고 영역(210-4)이 예비된 영역(440)이라고 가정한다. 현재 영역(450)[영역(210-3)]의 프로그래밍을 완료한 후에, 데이터 관리 로직(140)은 영역(210-3)을 기입된 상태(410)로 설정한다. 이하에서 논의되는 바와 같이, 영역(210-3)에 새로운 데이터를 기입할 사용 가능 저장 셀들이 더 이상 없거나 타임아웃이 일어날 수 있기 때문에, 영역(210-3)은 리타이어될 수 있다. 본 명세서에서 설명되는 바와 같이, 특정 시간 창 내에 메모리 영역이 소거되고 이어서 기입될 수 있다. 시간 창의 만료 후에, 영역이 기입된 상태(410)로 리타이어될 수 있고, 이 상태에서 영역은 데이터를 기입하기 위해 더 이상 이용 가능하지 않다. 영역 전체가 유효한 데이터로 기입되지 않았더라도 영역은 리타이어될 수 있다. 그에 따라, 영역의 소거 시간이 시간 창 미만이다. 추가적인 상세들이 이하에서 논의된다. 유의할 점은, 영역(210-4)이 목록(320)으로부터 예비된 영역(440)으로서 할당되었을 때 영역(210-4) 내의 저장 셀들이 소거 기능(430)에 의해 소거 상태로 설정된다는 것이다.
[영역(210-4)이 현재 영역(450)으로 이동되었기 때문에] 예비된 영역(440) 내의 빈 자리(vacancy)를 채우기 위해, 데이터 관리 로직(140)은 목록(320)에서의 다음의 이용 가능 영역[예컨대, 영역(210-5)]에 소거 기능(430)을 적용한다. 소거 기능(430)의 적용은 각자의 영역 내의 거의 모든 저장 셀들을 소거 상태로 소거하는 것을 포함한다. 영역(210-4)을 현재 영역(450)으로서 지정한 후에, 데이터 관리 로직(140)은 (소거된 상태에 있는) 영역(210-5)을 예비된 영역(440)으로서 지정한다.
하나의 실시예에서, 데이터 관리 로직(140)은, 영역(210-4)을 현재 영역(450)으로서 설정할 때 - 그 동안, 임의의 이용 가능한 교체 데이터(490)가 영역(210-4)에 저장됨 -, 타이머(555)를 기동시킨다. 타이머(555)는 영역(210-4)이 얼마 동안 현재 영역(450)으로서 지정되고 새로 수신된 데이터(490)를 저장하기 위해 데이터 관리 로직(140)에 의해 사용되는지를 추적한다.
데이터 관리 로직(140)이 특정 시간 프레임 내에 영역(210-4) 내의 모든 저장 셀들을 프로그램하기에 충분한 양의 교체 데이터(490)를 수신하지 않을 수 있다. 현재 영역(450)이 최근에 소거되었다는 것을 상기한다. 또한, 소거 체류 시간(즉, 각자의 영역 내의 저장 셀들이 유효한 데이터로 기입되기 전에 소거 상태로 설정되는 시간)을 감소시키는 것이 바람직하다는 것을 상기한다. 하나의 실시예에서, 타이머(555)가 시간 임계값[예컨대, 영역(210-4)이 현재 영역(450)으로 설정되고 나서 1.5 일 후]에 도달하는 것을 검출한 것에 응답하여, 그리고 영역(210-4) 내의 모든 저장 셀들이 새로운 교체 데이터(490)로 완전히 기입되었는지 여부에 관계없이, 데이터 관리 로직(140)은 영역(210-4)을 기입된 상태(410)로 리타이어시킨다. 영역(210-4)을 [현재 영역(450)으로서 무기한 놔두는 것과 달리] 기입된 상태(410)로 리타이어시키는 것은 영역(210-4)이 부가 데이터를 기입하는 데 더 이상 이용 가능하지 않다는 것을 의미한다. 이것은 영역(210-4)에 대한 소거 체류 시간을 임계값 미만으로 유지시킨다. 예를 들어, 영역(210-4)은 소거 상태에서 기껏해야 1.5 일(임계 시간 양) 동안 예비된 영역(440)으로서 저장되고; 영역(210-4)은 소거 상태에 기껏해야 1.5 일(임계 시간 양) 동안 현재 영역(450)으로서 저장된다. 이와 같이, 이 예시적인 실시예에서, 영역(210-4)은 최대 3 일 동안 소거된 상태에 있다.
하나의 실시예에서, 현재 영역(450)이 기입된 상태(410)로 리타이어되기 직전에, 소거된 저장 셀들의 일부분이 [영역(210-4)이 현재 영역(450)일 때 이러한 소거된 저장 셀들이 기입되지 않는 경우] 비소거 값들(값 01, 값 10, 또는 값 00 등)로 프로그램된다. 이와 같이, 기입된 상태(410)로 리타이어된 영역들은 (데이터 값 11과 같은) 소거 값들로 전혀 채워지지 않는다. 이것은 영역(210-4) 내의 저장 셀들이 소거된 상태에 유지되는 시간의 양을 제한한다.
(큐와 같은) 목록(320)으로부터의 영역(210-4)을 예비된 영역(440)으로 그리고 현재 영역(450)으로 천이시키는 것에 기초하여, 영역(210-4) 내의 저장 셀들이, 앞서 언급된 바와 같이, 최대 3 일의 소거 체류 시간을 경험한다. 보다 구체적으로는, 영역(210-4)은 기껏해야 1.5 일 동안 예비된 영역(440)에 있고; 영역(210-4)은 기껏해야 1.5 일 동안 현재 영역(450)에 있다. 이와 같이, 영역(210-4) 내의 저장 셀들의 전부 또는 일부분이 3 일의 최대 소거 체류 시간을 경험한다. 유사한 방식으로, 영역들 각각이 3 일의 최대 소거 체류 시간을 경험할 수 있다. 물론, 최대 소거 체류 시간이 3 일일 필요가 없고, 임의의 적당한 값일 수 있다.
또한, 유의할 점은, 데이터 관리 로직(140)이 영역(210-3) 및 영역(210-4)의 각자의 저장 셀들에 데이터(490)를 즉각 저장하도록 구성될 수 있기 때문에 영역들이 최대 양의 시간 동안 소거된 상태에 있지 않을 수 있다는 것이다. 이러한 경우에, 각각의 영역에 대한 소거 체류 시간이 3 일보다 훨씬 더 작을 수 있다. 소거 체류 시간이 1 초 미만 정도일 수 있다.
이와 같이 소거 체류 시간을 제어하는 것은 영역(210-4)(및 다른 영역들)의 저장 셀들에 저장된 교체 데이터(490)와 연관된 내인성 전하 손실의 속도 및 RWB 마진 손실의 속도를 감소시킨다. 언급된 바와 같이, 내인성 전하 손실의 속도 및 RWB 마진 손실의 속도는 영역(210-4) 내의 저장 셀들의 설정들이, 교체 데이터를 저장 셀들에 저장하기 전에, 소거 상태로 설정되는 시간의 양에 의존한다.
언급된 바와 같이, 타임아웃이 일어나기 전에 영역(210-3)[현재 영역(450)으로서 지정되어 있을 때]이 교체 데이터(490)로 채워지는 것이 가능하다. 이러한 경우에, 데이터 관리 로직은 예비된 영역(440)을 새로운 현재 영역(450)으로서 선택하고 천이시킨다. 그렇게 함에 있어서, 데이터 관리 로직(140)은 목록(320)에서와 같은 영역들 각각에 있는 유효하지 않은 데이터를 소거하는 동작을 지연시킨다. 데이터 관리 로직(140)은 메모리 시스템(100)에 교체 데이터(490)를 저장하기 위해 새로운 저장 공간이 필요한지를 모니터링하도록 구성될 수 있다.
목록(320)에 명시된 것과 같은 각자의 리타이어된 영역들에 있는 유효하지 않은 데이터를 즉각 소거하는 것에 대한 대안으로서, 데이터 관리 로직(140)은, 교체 데이터(490)를 저장할 필요가 있을 때 저장 영역들에 있는 유효하지 않은 데이터를 소거하도록 구성될 수 있다. 환언하면, 데이터 관리 로직(140)은, 소거 기능(430)이 저장 셀들을 소거하라는 명령을 수신할 때까지, 저장 셀들의 설정들을 유효하지 않은 데이터를 저장하고 있는 이전에 프로그램된 상태에 유지한다. 앞서 논의한 바와 같이, 데이터 관리 로직(140)으로부터 소거 기능(430)에 의해 수신되는 명령은, [예비된 영역(440)과 같은] 예비 대역이 새로 수신된 데이터를 저장할 [현재 영역(450)과 같은] 현재 대역으로서 재할당된 것을 검출하는 것에 응답하여, 수신될 수 있다. 데이터 관리 로직(140)은 새로 소거된 저장 셀들의 영역을 예비된 영역(440)으로서 지정한다.
유의할 점은, 현재 영역(450) 및 예비된 영역(440)이 임의의 수의 영역들을 포함할 수 있다는 것이다. 예를 들어, 데이터 관리 로직(140)은 언제 그리고 몇 개의 영역들이 교체 데이터(490)를 저장하기 위해 필요하게 될 것인지를 검출할 수 있을 것이다. 이러한 경우에, 데이터 관리 로직(140)은 영역들을 소거하여 예비된 영역들로서 이용 가능하게 만드는 속도를 제어하도록 구성될 수 있다.
예비된 영역(440)에 이용 가능한 적어도 하나의 영역을 가지는 것은 교체 데이터(490)를 메모리 시스템(100)에 저장할 때 데이터 관리 로직(140)이 지연되지 않도록 보장한다. 예를 들어, 예비된 영역(440)을 현재 영역(450)으로 천이시킬 때, 데이터 관리 로직(140)은, 다음 영역이 필요하게 되기 전에 그것이 소거되도록, 새로운 영역을 예비된 영역(440)으로서 소거하는 것을 개시한다. 하나의 실시예에서, 영역의 소거 시간은 3 내지 10 밀리초이다. 영역 또는 대역 내의 저장 셀들의 설정들을 수정하기 위한 프로그램 시간은 약 1 초일 수 있다.
도 5는 본 명세서에서의 실시예들에 따른, 저장 셀들에 데이터를 저장하는 것의 감소된 성능 열화를 나타낸 예시적인 도면이다.
앞서 논의된 바와 같은 도 1과 달리, 도 5는 본 명세서에서의 실시예들에 따른, 셀들이 소거된 상태로 설정되는 시간을 지연시키는 것 및/또는 감소시키는 것의 유용성을 나타내고 있다. 도시된 바와 같이, 저장 셀들은 소거되는 것으로 인해 어떤 양의 열화를 겪을 수 있다. 예를 들어, 저장 셀들이 그래프(510-1)에 나타낸 바와 같은 분포를 가지는 값들로 기입되어 있는 것으로 가정한다. 그래프(510-2)는 어떤 양의 시간 후의 저장 셀들의 상태를 나타내고 있다. 그래프(510-1)에 관련하여 그래프(510-2)에서는 분포들의 좌측으로의 약간의 천이가 있다. 그렇지만, 도시된 바와 같이, 단축된 소거 체류 시간은 저장된 데이터의 열화가, 저장 셀들이 도 1에 나타낸 것과 같은 긴 소거 체류 시간을 경험할 때보다, 훨씬 더 느린 속도로 일어나도록 보장한다.
도 6은 본 명세서에서의 실시예들에 따른, 저장 셀들에 있는 데이터의 부분 소거를 나타낸 예시적인 도면이다.
소거 기능(430)을 통해 소거되기 전에 유효하지 않은 데이터를 소멸(destroy)시키거나 그에의 액세스를 방지하는 것이 바람직한 경우들이 있을 수 있다. 본 명세서에서 논의된 바와 같은 목록(320)에서의 영역들의 큐잉의 결과, 각자의 영역이 상당한 양의 시간 동안 유효하지 않은 데이터를 저장할 수 있다.
영역이 리타이어되어 목록(320)으로 이동된 후에 유효하지 않은 데이터를 소멸시키는 하나의 방식은 영역이 100% 유효하지 않은 데이터를 저장하고 있다는 통지를 수신할 때 유효하지 않은 데이터를 소멸시키기 위해 저장 셀들의 각자의 영역에 있는 데이터를 소거하는 것이다. 데이터를 이용 불가능하게 만들기 위해, 본 명세서에서의 실시예들은 영역을 소거하고 저장 셀들의 영역을 임시 데이터로 프로그램하는 것을 포함할 수 있다. 언급된 바와 같이, 리타이어된 영역의 ID가 상당한 양의 시간 동안 목록(320)에 유지될 수 있다. 하나의 실시예에 따르면, 영역의 ID가 목록(320)에 큐잉되어 있는 동안 유효하지 않은 데이터를 저장하는 대신에, 각자의 영역이 차후에 새로운 데이터(490)로 덮어쓰여지기 전에 임시 데이터를 저장한다. 이 실시예는, 리타이어된 영역 내의 저장 셀들을 임시 데이터로 사전 프로그램하는 추가 동작을 필요로 하기 때문에, 메모리 시스템(100)의 수명에 영향을 미칠 수 있다. 임시 데이터는 차후에 소거되고 교체 데이터(490)로 덮어쓰여진다. 임시 데이터는 그래프(510-1)에 나타낸 데이터와 유사한 분포를 가질 수 있다.
유효하지 않은 데이터를 소멸시키는 다른 방식은 새로 리타이어된 영역의 소위 부분 소거를 수행하는 것이다. 이러한 경우에, 데이터 관리 로직(140)은 영역 내의 저장 셀들의 적어도 일부분을 비소거 상태들(예컨대, 레벨 L0 이외의 상태들)로 프로그램한다.
추가의 예로서, 그래프(610-1)는 영역 내의 저장 셀들과 연관된 예시적인 분포를 나타낸 것이다. 그래프(610-1)가 소멸될 영역에 있는 유효하지 않은 데이터의 설정들을 나타낸다고 가정한다. 하나의 실시예에서, 데이터 관리 로직(140)은 저장 셀들과 연관된 소거 임계값 TEV1을 그래프(610-1)에서의 값 PV2(또는 TEV1 초과의 어떤 다른 적당한 값)와 거의 같도록 증가시킨다. 환언하면, 데이터 관리 로직(140)은, 그래프(610-2)에 나타낸 바와 같이, 소거 임계값을 TEV2로 설정한다.
데이터 관리 로직(140)은 이어서 새로 리타이어된 영역 내의 저장 셀들의 비트 설정들을 증가된 소거 임계값(수정된 소거 임계값 TEV2)에 의해 규정된 범위 내에 있도록 수정한다. 원래의 소거 임계값 TEV1은, 그래프(610-1)에 나타낸 바와 같이, 저장 셀들과 연관된 원래의 설정들을 규정하는 기초로서 사용되었다.
데이터 관리 로직(140)은 영역 내의 저장 셀들의 설정들을 그래프(610-2)에 나타낸 바와 같은 설정들의 분포를 생성하도록 수정한다. 이 새로운 분포는 새로 리타이어된 영역 내의 충분한 수의 저장 셀들을 레벨 L0를 벗어나 있는 비소거 상태들로 설정하는 것을 포함한다. 이 유형의 소거는 유효하지 않은 데이터가 더 이상 없도록 저장 셀들에 있는 유효하지 않은 데이터를 소멸시킨다. 그에 부가하여, 분포가 사실상 소거 상태(예컨대, 레벨 L0) 및 적어도 비소거 상태(레벨 L1, 범위 E1, 범위 E2 등)에 걸쳐 있기 때문에, 저장 셀들의 영역이 이전에 논의된 바와 같이 소거 상태에 오랜 시간 있는 것에 의해 실질적으로 영향을 받지 않는다. 환언하면, 그래프(610-2)에 나타낸 바와 같은 수정된 저장 셀들에서의 설정들의 분포가, 오랜 기간 동안 변하지 않더라도, 저장 셀들에 유해하지 않을 정도로 충분히 다양하다.
유의할 점은, 유효하지 않은 데이터가 더 이상 액세스 가능하지 않도록 각자의 영역 내의 저장 셀들의 전부 또는 일부분이 부분적으로 소거될 수 있다는 것이다.
이상의 실시예들을 바탕으로, 본 명세서에서의 추가의 실시예들은 저장 셀들에 있는 유효하지 않은 데이터를 그러한 데이터의 액세스 및 사용을 방지하도록 수정하라는 명령을 수신하는 것을 포함할 수 있다. 명령을 수신한 것에 응답하여, 데이터 관리 로직(140)은 영역 내의 데이터 셀들의 설정들의 전부가 아닌 일부분(less-than-all portion)을 유효하지 않은 데이터가 오염되거나 소멸되게 되는 비소거 상태로 수정한다. 환언하면, 원래의 데이터가 그의 원래의 상태로부터 수정된다. 그래프(610-1)에서 이전에 레벨 L2 및/또는 레벨 L3으로 설정된 저장 셀들의 일부분 또는 그룹이 그래프(610-2)에서 레벨 L1(비소거 상태) 및/또는 레벨 L0 근방의 Vt 설정들로 변경된다.
보다 구체적인 예로서, 그래프(610-1)로 나타낸 바와 같이 저장 셀들의 영역은 저장 셀 #1 = 11(소거 상태); 저장 셀 #2 = 10(비소거 상태); 저장 셀 #3 = 00(비소거 상태); 저장 셀 #4 = 10(비소거 상태); 저장 셀 #5 = 11(비소거 상태); 저장 셀 #6 = 00(비소거 상태); 저장 셀 #7 = 01(비소거 상태); 저장 셀 #8 = 00(비소거 상태); 기타 등등과 같은 원래의 데이터의 시퀀스를 포함할 수 있다.
영역이 리타이어된 것에 응답하여, 데이터 관리 로직(140)이 데이터를 이용 불가능하게 만들기 위해 앞서 논의된 바와 같은 부분 소거를 통해 상태들을 수정한다고 가정한다. 부분 소거를 적용한 후에, 그래프(610-2)로 나타낸 바와 같이 영역은 저장 셀 #1 = 11(소거 상태); 저장 셀 #2 = 10(비소거 상태); 저장 셀 #3 = 10(비소거 상태); 저장 셀 #4 = 10(비소거 상태); 저장 셀 #5 = 11(소거 상태); 저장 셀 #6 = 10(비소거 상태); 저장 셀 #7 = 10(비소거 상태); 저장 셀 #8 = 11(소거 상태); 기타 등등과 같은 데이터의 시퀀스를 저장하도록 구성된 저장 셀들을 포함할 수 있다.
유의할 점은, 본 명세서에서 논의된 바와 같은 부분 소거의 결과로서, 새로 리타이어된 영역 내의 특정 저장 셀들이 범위 E0, E1, E2, 및 E3 사이와 같은 임계값들로 설정될 수 있다는 것이다.
앞서 논의한 바와 같이, 유효하지 않은 데이터의 영역 내의 제1 그룹의 셀들의 설정들을 제1 비소거 상태(레벨 L2 및/또는 레벨 L3 등)로부터 제2 비소거 상태(레벨 L1 등)로 변경하는 것은 유효하지 않은 데이터를 이용 불가능하게 만든다. 저장 셀들에 있는 데이터의 설정들의 수정은 또한, 저장 셀들이 오랜 기간 동안 그래프(610-2)에 나타낸 바와 같은 상태에 유지되기 때문에, 저장 셀들을 손상시키는 문제를 방지한다. 환언하면, 셀들이, 그래프(610-2)에서의 설정들로 설정될 때, 긴 소거 체류 시간을 겪지 않는다.
결국, 리타이어되고 부분적으로 소거된 저장 셀들의 영역[그 설정들이 그래프(610-2)에서의 설정들로 나타내어져 있음]이 그 다음에 목록(320)에서 예비된 영역(440)으로서 지정된다. 이러한 경우에, 소거 기능(430)은 영역 내의 저장 셀들 모두를 소거 임계값 TEV1에 따라 레벨 L0(소거 상태) 내에 있도록 소거한다. 언급된 바와 같이, 데이터 관리 로직(140)은 이어서 저장 셀들의 각자의 영역이 차후에 현재 영역(450)으로서 지정될 때 저장 셀들의 각자의 영역에 기입한다(프로그램한다). 그렇지만, 유의할 점은, 영역의 저장 셀들에 교체 데이터(490)를 또다시 저장할 때, 데이터 관리 로직(140)이 저장될 교체 데이터에 따라 셀들 각각을 적절한 레벨 L0, L1, L2, 또는 L3 내에 있도록 설정한다는 것이다. 그에 따라, 영역 내의 저장 셀들의 차후의 판독 시에, 저장 셀들은 다수의 상태들 중 하나로 설정될 것이다.
또다시 도 4를 참조하면, 유의할 점은, 예기치 못한 정전 시에 데이터가 복원될 수 있도록 목록(320)이 비휘발성 메모리 디바이스에 저장될 수 있다는 것이다. 그렇지만, 유의할 점은, 특정의 실시예들에서, 각자의 정전 시에 목록(320)이 오염될 수 있다는 것이다. 환언하면, 정전의 결과, 목록(320)이 완전히 손실될 수 있는데, 왜냐하면 목록이 휘발성 메모리에 저장되기 때문이다.
메모리 시스템(100)의 있을 수 있는 정전들을 고려하여, 본 명세서에서의 하나의 실시예는 유효하지 않은 데이터의 하나 이상의 영역들을 각자의 영역이 유효하지 않은 데이터를 포함한다는 것을 나타내도록 표시하는 것을 포함할 수 있다. 예를 들어, 영역이 유효하지 않은 상태(420)로 리타이어된 것을 검출하면, 데이터 관리 로직(140)은 상이한 영역들 내의 미리 결정된 위치에 저장된 데이터를 각자의 영역이 유효하지 않은 데이터를 포함한다는 것을 나타내도록 수정하도록 구성될 수 있다. 정전의 발생 후에, 나중에 전원을 켤 때, 데이터 관리 로직(140)은, 대응하는 영역이 유효한 데이터를 저장하고 있는지 유효하지 않은 데이터를 저장하고 있는지를 결정하기 위해, 각자의 영역 내의 미리 결정된 위치에 있는 데이터의 설정들에 액세스하여 그를 이용하도록 구성될 수 있다. 유효하지 않은 데이터를 저장하고 있는 그 영역들에 대해, 데이터 관리 로직(140)은 영역들의 ID들을 목록(320)에 포함시키고 앞서 논의된 바와 같은 방식으로 동작한다. 유효하지 않은 데이터를 포함하는 목록(320) 내의 이러한 영역들은 논리 주소들을 데이터가 저장되어 있는 메모리 내의 대응하는 물리적 위치에 매핑하는 것을 가능하게 하는 논리-물리 테이블(logical to physical table)을 생성하는 데 사용되지 않는다.
본 명세서에서의 실시예들은 전원을 켠 후에 미리 결정된 위치를 판독하려고 시도할 때 차후의 판독 실패가 일어나도록 보장하기 위해 미리 결정된 위치에 있는 데이터를 수정하는 것을 포함할 수 있다. 하나의 실시예에서, 전원이 복구된 후의 데이터 관리 로직에 의한 차후의 판독 실패는 각자의 영역이 유효하지 않은 데이터를 포함한다는 것을 나타낸다.
앞서 언급한 바와 같이, 본 명세서에의 다른 실시예는 각자의 대역 내의 전부 또는 일부분(마지막 페이지 또는 워드 라인 등)이 부분적으로 소거되는 소위 부분 소거 또는 오염을 수행하는 것(차후의 판독 실패)을 포함할 수 있다. 그래프(610-2)의 부분 소거 상태에서, 메모리 시스템(100)을 포함하는 각자의 컴퓨터 디바이스의 차후의 전원 켜기 시에, 데이터 관리 로직(140)은 부분적으로 소거된 영역 내의 각자의 페이지로부터 판독하려고 시도하도록 구성될 수 있다. 데이터 관리 로직(140)이 미리 결정된 레벨들 L0, L1, L2, 및 L3에 따라 이러한 데이터를 판독하려고 시도할 때, ECC(Error Correction Code) 판독 오류 또는 패리티 오류가 일어날 것이고, 따라서 영역(또는 대역)이 유효하지 않은 데이터를 포함한다는 것을 나타낸다.
정전 이후에 복구하는 또 다른 방법은 메모리 시스템(100)과 연관된 L2P(Logical to Physical) 매핑을 재구성하는 것을 포함할 수 있다. 예를 들어, 영역 내의 블록들 모두는 (유효하지 않은 데이터를 저장하고 있을지라도) 처음에 유효한 데이터를 저장하는 것으로 가정된다. 각자의 대역들 각각에 저장된 데이터는 L2P 매핑에서의 적어도 하나의 LBA(logical block address)가 각자의 영역 내의 위치(블록 등)를 가리키는지를 결정하는 데 사용될 수 있다. L2P 매핑을 생성할 때 논리 블록 주소 포인터가 대역 내의 블록들 중 어느 것도 가리키지 않는 것으로 밝혀지는 경우, 대역(예컨대, 영역)은 유효하지 않은 데이터를 포함하는 것으로 결정된다. 모든 유효하지 않은 데이터를 가지는 임의의 영역들의 ID가 이어서 목록(320)에 포함된다.
다른 추가의 실시예들에 따르면, 데이터 관리 로직(140)은 목록(320)에 있는 영역들의 ID들의 사본을, 현재 영역(450)의 첫 번째 페이지와 같은, 지정된 영역에 저장하도록 구성될 수 있다. 예를 들어, 하나의 실시예에서, 데이터 관리 로직(140)은, 영역을 현재 영역(450)으로서 저장할 때, ID들[목록(320)]을 현재 영역(450)의 미리 결정된 위치(첫 번째 페이지 등)에 저장한다.
ID들을 현재 영역(450)에서 첫 번째 페이지에 저장한 후에, 메모리 시스템(100)이 메모리 디바이스들(110) 모두가 사전 고지 없이 전원 차단되는 정전을 겪는 것으로 가정한다. 예를 들어, 현재 영역(450)이 수신된 데이터를 저장하기 위해 데이터 관리 로직(140)에 의해 사용되는 동안 예기치 않은 정전이 일어날 수 있다. 전원이 복구되고, 차후의 시스템 전원 켜기 시에, 데이터 관리 로직(140)(또는 다른 적당한 자원)이 영역들(210) 중 어느 것이 정전 이전에 데이터 관리 로직(140)에 의해 사용된 마지막 현재 영역(450)으로서 지정되었는지를 식별하도록 구성될 수 있는 것으로 가정한다.
시스템에 다시 전원이 공급된 후에, 마지막 현재 영역(450)을 결정하기 위해 임의의 적당한 방법이 사용될 수 있다. 예를 들어, 하나의 실시예에서, 정전 이전에, 데이터 관리 로직(140)은 목록(320) 내의 ID들을 현재 영역(450)의 지정된 페이지(첫 번째 페이지 등)에 저장한다. 정전이 발생하기 때문에, 데이터 관리 로직(140)은 현재 영역(450)의 마지막 페이지에 기입할 수 없다. 따라서, 현재 영역(450)의 마지막 페이지는 여전히 소거된 상태에 있다. 유의할 점은, 예비된 영역(440) 내의 모든 페이지들이 소거 상태로 설정되어 있다는 것이다. 현재 영역(450)은 이전에 예비된 영역(440)이었고 소거된 상태에 있었다.
정전(power failure), 및 메모리 시스템(100)의 재 전원 공급(repowering) 후에, 데이터 관리 로직(140)은 메모리 시스템(100) 내의 각각의 영역의 마지막 페이지의 상태를 판독한다. 각각의 영역의 마지막 페이지를 판독한 것에 기초하여, 데이터 관리 로직(140)은 2 개의 후보 영역들[마지막 현재 영역(450) 및 마지막 예비된 영역(440)]을 어쩌면 마지막 현재 영역(450)인 것으로 식별한다. 2 개의 후보 영역들은 소거된 데이터의 마지막 페이지를 포함한다. 데이터 관리 로직(140)은 어느 것이 마지막 현재 영역(450)인지를 결정하기 위해 2 개의 후보 영역들의 첫 번째 페이지를 판독한다. 예를 들어, 첫 번째 페이지가 기입되어 있는 2 개의 후보 영역들 중 하나가 마지막 현재 영역(450)이었던 영역이다. 데이터 관리 로직(140)이 목록(320)을 현재 영역(450)의 첫 번째 페이지에 기입한다는 것을 상기한다. 다른 후보 영역[이전의 예비된 영역(440)]은 소거된 데이터의 페이지를 가질 것이다. 이와 같이, 이전의 현재 영역(450)은 기입된 데이터를 첫 번째 페이지에 그리고 소거된 데이터를 마지막 페이지에 포함하는 단지 부분적으로 기입된 대역으로서 식별 가능할 것이다. 예비된 영역(440)은 소거된 데이터의 첫 번째 페이지 및 소거된 데이터의 마지막 페이지를 포함할 것이다. 이러한 경우에, 이용된 영역이 정전 이전에 이전의 예비된 영역(440)이었던 것으로 결정된다.
정전 이전에 현재 영역(450)으로서 지정되었던 특정 대역(또는 영역)을 식별한 후에, 데이터 관리 로직(140)(또는 다른 적당한 자원)은 현재 영역(450)의 대응하는 첫 번째 페이지를 판독하고 그로부터 목록(320)을 재생성하며, 이어서 목록 내의 이러한 영역들[예컨대, 영역들(210-5, 210-6, 210-12 등)]을 L2P 테이블 구성으로부터 제외시킬 것이다. 이와 같이, 목록(320)이 휘발성 메모리에 저장되고 정전 시에 손실될 수 있더라도, 본 명세서에서의 실시예들은 현재 영역(450)에 저장된 데이터에 기초하여 목록(320)을 재생성하는 것을 포함할 수 있다.
도 7은 본 명세서에서의 실시예들에 따른, 본 명세서에서 논의된 바와 같은 동작들 중 임의의 것을 구현하기 위한 컴퓨터 시스템의 예시적인 블록도이다.
컴퓨터 시스템(850)은 데이터 관리 로직(140)과 관련한 동작들 중 임의의 것을 실행하도록 구성될 수 있다.
도시된 바와 같이, 본 예의 컴퓨터 시스템(850)은 디지털 정보가 저장되고 검색될 수 있는 물리적 비일시적 유형의 매체(즉, 임의의 유형의 물리적 하드웨어 저장 매체)와 같은 컴퓨터 판독 가능 저장 매체(812), 프로세서(813)(즉, 하나 이상의 프로세서 디바이스들), I/O 인터페이스(814), 통신 인터페이스(817) 등을 결합시키는 상호연결부(interconnect)(811)를 포함할 수 있다.
도시된 바와 같이, I/O 인터페이스(814)는 메모리 디바이스들(220)에 저장된 데이터에의 컴퓨터 시스템(850) 연결(connectivity)을 제공한다.
컴퓨터 판독 가능 저장 매체(812)는 메모리, 광 저장소, 하드 드라이브, 플로피 디스크 등과 같은 임의의 물리적 또는 유형적 하드웨어 저장 디바이스 또는 디바이스들일 수 있다. 하나의 실시예에서, 컴퓨터 판독 가능 저장 매체(812)(예컨대, 컴퓨터 판독 가능 하드웨어 저장소)는 명령어들 및/또는 데이터를 저장한다.
하나의 실시예에서, 통신 인터페이스(817)는 컴퓨터 시스템(850) 및 각자의 프로세서(813)가 원격 소스들로부터 정보를 검색하고 다른 컴퓨터들과 통신하기 위해 네트워크(190)와 같은 자원을 거쳐 통신할 수 있게 한다. I/O 인터페이스(814)는 프로세서(813)가 메모리 디바이스들(220)과 같은 저장소(repository)로부터 저장된 정보를 검색할 수 있게 한다.
도시된 바와 같이, 컴퓨터 판독 가능 저장 매체(812)는 프로세서(813)에 의해 실행되는 데이터 관리 애플리케이션(140-1)(예컨대, 소프트웨어, 펌웨어 등)으로 인코딩된다. 데이터 관리 애플리케이션(140-1)은 본 명세서에서 논의된 바와 같은 동작들 중 임의의 것을 구현하는 명령어들을 포함하도록 구성될 수 있다.
하나의 실시예의 동작 동안, 프로세서(813)는 컴퓨터 판독 가능 저장 매체(812) 상에 저장된 데이터 관리 애플리케이션(140-1) 내의 명령어들을 기동(launch)시키거나, 가동(run)하거나, 실행하거나, 해석하거나 또는 다른 방식으로 수행하기 위해 상호연결부(811)를 사용하여 컴퓨터 판독 가능 저장 매체(812)에 액세스한다.
데이터 관리 애플리케이션(140-1)의 실행은 프로세서(813)에서 데이터 관리 프로세스(140-2)와 같은 처리 기능을 생성한다. 환언하면, 프로세서(813)와 연관된 데이터 관리 프로세스(140-2)는 컴퓨터 시스템(850)에서의 프로세서(813) 내에서 또는 그 상에서 데이터 관리 애플리케이션(140-1)을 실행하는 하나 이상의 양태들을 나타낸다.
통상의 기술자라면 컴퓨터 시스템(850)이 데이터 관리 애플리케이션(140-1)을 실행하기 위해 하드웨어 자원들, 소프트웨어 자원들 등의 할당 및 사용을 제어하는 운영 체제와 같은, 다른 프로세스들 및/또는 소프트웨어 및 하드웨어 구성요소들을 포함할 수 있다는 것을 잘 알 것이다.
상이한 실시예들에 따르면, 유의할 점은, 컴퓨터 시스템(850)이 모바일 컴퓨터, 개인용 컴퓨터 시스템, 무선 디바이스, 기지국, 전화 디바이스, 데스크톱 컴퓨터, 랩톱, 노트북, 넷북 컴퓨터, 메인프레임 컴퓨터 시스템, 핸드헬드 컴퓨터, 워크스테이션, 네트워크 컴퓨터, 애플리케이션 서버, 저장 디바이스, 카메라, 캠코더, 셋톱박스와 같은 소비자 전자 디바이스, 모바일 디바이스, 비디오 게임 콘솔, 핸드헬드 비디오 게임 디바이스, 스위치, 모뎀, 라우터와 같은 주변 디바이스, 또는 일반적으로 임의의 유형의 컴퓨팅 또는 전자 디바이스(이들로 제한되지 않음)를 비롯한, 다양한 유형의 디바이스들 중 임의의 것일 수 있다는 것이다.
상이한 자원들에 의해 지원되는 기능이 이제부터 도 8에서의 플로우차트를 통해 논의될 것이다. 유의할 점은, 이하의 플로우차트에서의 처리가 임의의 적당한 순서로 실행될 수 있다는 것이다.
도 8은 실시예들에 따른, 예시적인 방법을 나타낸 플로우차트(800)이다. 유의할 점은, 앞서 논의된 개념들과 얼마간 중복된다는 것이다.
처리 블록(810)에서, 데이터 관리 로직(140)은 비휘발성 메모리 시스템 내의 저장 셀들의 영역에 저장된 데이터가 유효하지 않은 데이터를 저장하고 있다는 통지를 수신한다.
처리 블록(820)에서, 통지에 응답하여, 데이터 관리 로직(140)은 영역을 유효하지 않은 데이터를 저장하는 것으로서 표시한다.
처리 블록(830)에서, 데이터 관리 로직(140)은 저장 셀들에 있는 유효하지 않은 데이터를 교체 데이터로 덮어쓰는 것과 연관되는, 저장 셀들이 소거 상태에 있는 시간을 제어한다. 비제한적인 예로서, 데이터 관리 로직(140)은 저장 셀들이 각자의 교체 데이터로 프로그램될 때에 시간상 보다 가깝게 되도록 저장 셀들의 소거를 지연시킨다.
도 9는 본 명세서에서의 실시예들에 따른, 각자의 컴퓨터 시스템에서의 메모리 시스템의 사용을 나타낸 예시적인 도면이다.
도시된 바와 같이, 컴퓨터 시스템(1100)은 호스트 프로세서 자원(1120) 및 메모리 시스템(100)을 포함할 수 있다. 호스트 프로세서 자원(1120)은 하나 이상의 프로세서 디바이스들과 같은 컴퓨터 프로세서 하드웨어일 수 있거나 그를 포함할 수 있다. 비제한적인 예로서, 컴퓨터 시스템(1100)은 데이터를 저장하기 위해 메모리 시스템(100)을 사용하는, 개인용 컴퓨터, 휴대폰, 모바일 디바이스, 카메라 등과 같은, 임의의 적당한 유형의 자원일 수 있다.
하나의 실시예에서, 메모리 시스템(100)은 데이터를 저장하는 데 사용되는 고상 드라이브이다.
호스트 프로세서 자원(1120)은 인터페이스(1011)를 통해 메모리 시스템(100)에 액세스한다. 인터페이스(1011)는 데이터 전송을 가능하게 하는 임의의 적당한 링크일 수 있다. 예를 들어, 인터페이스(1011)는 SCSI(Small Computer System Interface), SAS(Serial Attached SCSI), SATA(Serial Advanced Technology Attachment), USB(Universal Serial Bus), PCIe(Peripheral Component Interconnect Express) 버스 등일 수 있다.
인터페이스(1011)를 통해, 컴퓨터 시스템(1100)의 호스트 프로세서 자원(1120)은 메모리 시스템(100)으로부터 데이터를 검색하고 그에 데이터를 저장할 수 있다.
일례로서, 호스트 프로세서 자원(1120)이 검사 스테이션(checkout station)(1100)을 조작하는 사용자로부터의 입력(105)에 의해 명시된 각자의 기능을 수행하라는 요청을 수신하는 것으로 가정한다. 호스트 프로세서 자원(1120)은 명시된 논리 주소에 있는 데이터의 검색을 위한 요청을 인터페이스(1011)를 거쳐 데이터 관리 로직(140)으로 전송하는 것을 포함할 수 있는 기능을 실행한다. 다른 기능들을 수행하는 것에 부가하여, 데이터 관리 로직(140)은 논리 주소를 메모리 시스템(100) 내의 적절한 물리 주소에 매핑하고 비휘발성 메모리 디바이스들(220)로부터 데이터를 검색하도록 구성될 수 있다. 메모리 시스템(100)으로부터 적절한 데이터를 검색한 후에, 데이터 관리 로직(140)은 검색된 데이터를 호스트 프로세서 자원(1120)으로 전송하여, 데이터에 대한 요청을 충족시킨다.
하나의 비제한적인 예시적인 실시예에서, 호스트 프로세서 자원은, 데이터 관리 로직(140)으로부터 수신된 데이터에 따라, 디스플레이 화면(130) 상에 영상을 디스플레이하는 것을 개시한다.
추가의 예로서, 유의할 점은, 호스트 프로세서 자원(1120)이 사용자로부터의 입력(105)에 의해 명시된 각자의 기능을 수행하라는 요청을 수신할 수 있다는 것이다. 호스트 프로세서 자원(1120)은 기능을 실행하고, 호스트 프로세서 자원(1120)에 의해 명시된 논리 주소에 데이터를 저장하기 위해 데이터 관리 로직(140)과 통신한다. 요청을 수신한 것에 응답하여, 데이터 관리 로직(140)은 논리 주소를 적절한 물리 주소에 매핑하고, 수신된 데이터를 비휘발성 메모리 디바이스들(220)의 대응하는 위치에 저장한다.
앞서 논의한 바와 같이, 데이터 관리 로직(140)은 메모리 시스템(100) 내의 저장 셀들의 프로그래밍과 연관된 소거 체류 시간을 관리하도록 구성될 수 있다. 앞서 논의한 바와 같이, 손상된 데이터를 복구하기 위해 오류 정정 정보가 사용될 수 있기 때문에, 특정 양의 열화는 용인 가능할 수 있다. 그렇지만, 소거 체류 시간을 감소시키는 것은 메모리 시스템(100)의 유효 수명을 상당히 증가시킨다.
개시된 예시적인 실시예들의 상이한 변형들
본 명세서에 논의된 제1 예시적인 실시예는 방법을 포함하고, 본 방법은 비휘발성 메모리 시스템 내의 저장 셀들의 영역에 저장된 데이터가 유효하지 않은 데이터를 저장하고 있다는 통지를 수신한 것에 응답하여, 영역을 유효하지 않은 데이터를 저장하는 것으로서 표시하는 단계; 및 저장 셀들에 있는 유효하지 않은 데이터를 교체 데이터로 차후에 덮어쓰는 것과 연관되는, 저장 셀들의 영역이 소거 상태에 있는 시간을 제어하는 단계를 포함한다. 제1 예시적인 실시예는 이하의 다른 추가의 실시예들을 생성하기 위해 이하의 특징들의 하나 이상의 특징들 중 임의의 것과 함께 구현될 수 있다:
하나의 실시예에서, 시간은 저장 셀들이, 교체 데이터로 차후에 덮어쓰기 전에, 소거된 상태로 설정되는 시간의 양을 나타낸다. 시간을 제어하는 단계는 영역 내의 저장 셀들에 있는 유효하지 않은 데이터를 소거하는 동작을 지연시키고 유효하지 않은 데이터를 교체 데이터로 교체하는 단계를 포함할 수 있고; 지연된 동작은 시간을 미리 결정된 시간 임계값 미만으로 감소시킨다.
본 명세서에서의 추가의 실시예들은 대체로 저장 셀들의 영역을 소거할 때 무렵에 타이머를 기동시키는 단계; 타이머를 모니터링하는 단계; 및 타이머가 임계 시간 값에 도달하기 전에 교체 데이터를 저장하기 위해 소거된 저장 셀들의 영역을 이용하는 단계를 포함할 수 있다.
추가의 실시예들에 따르면, 유효하지 않은 데이터를 소거하는 동작을 지연시키는 단계는 비휘발성 메모리 시스템에 저장 공간이 필요한지를 모니터링하는 단계; 및 비휘발성 메모리 시스템에 교체 데이터를 저장할 필요가 있음을 검출한 것에 응답하여 저장 영역에 있는 유효하지 않은 데이터를 소거하는 단계를 포함할 수 있다.
또 다른 방법 실시예에 따르면, 유효하지 않은 데이터를 소거한 후에, 본 명세서에서의 실시예들은 저장 셀들이 소거된 상태로 설정되는 시간이 미리 결정된 시간 임계값 미만이 되도록 보장하기 위해 영역의 저장 셀들에 교체 데이터를 저장하는 것을 개시하는 단계를 포함한다.
시간을 제어하는 단계는 저장 셀들에 저장된 교체 데이터와 연관된 내인성 전하 손실의 속도를 감소시키는 단계를 추가로 포함할 수 있다. 교체 데이터와 연관된 내인성 전하 손실의 속도는, 교체 데이터를 저장 셀들에 저장하기 전에, 저장 셀들의 설정들이 소거 상태로 설정되는 시간의 양에 의존한다.
다른 추가의 실시예들에서, 유효하지 않은 데이터를 덮어쓰는 것과 연관된 시간을 제어하는 단계는 저장 셀들을 소거하라는 명령을 수신할 때까지 저장 셀들의 설정들을 유효하지 않은 데이터를 저장하는 이전에 프로그램된 상태에 유지시키는 단계 - 명령은 비휘발성 메모리 시스템 내의 예비 대역(reserve band)이 새로 수신된 데이터를 저장할 현재 대역(current band)으로서 재할당되었다는 것을 검출한 것에 응답하여 수신됨 -; 및 소거된 저장 셀들의 영역을 예비 대역인 것으로서 지정하는 단계를 포함할 수 있다.
다른 실시예에 따르면, 내인성 전하 손실을 감소시키기 위해 영역 내의 저장 셀들의 설정들을 제어하는 단계는 저장 셀들에 있는 유효하지 않은 데이터를 수정하라는 명령을 수신하는 단계; 및 명령을 수신한 것에 응답하여, 영역 내의 데이터 셀들의 설정들의 전부가 아닌 일부분을 유효하지 않은 데이터가 오염되게 되는 비소거 상태로 수정하는 단계를 포함할 수 있다.
데이터 셀들의 설정들의 전부가 아닌 일부분을 비소거 상태로 수정하는 단계는 유효하지 않은 데이터를 이용 불가능하게 만들기 위해, 영역 내의 제1 그룹의 셀들의 설정들을 제1 비소거 상태로부터 제2 비소거 상태로 변경하는 단계를 포함할 수 있다.
시간을 제어하는 단계는 소거 체류 시간을 시간 임계값 미만으로 감소시키기 위해, 영역 내의 저장 셀들에 있는 제2 비소거 데이터를 소거하고 제2 비소거 데이터를 교체 데이터로 교체하는 동작을 지연시키는 단계를 추가로 포함할 수 있다.
본 명세서에서의 추가의 방법 실시예들은 유효하지 않은 데이터를 소멸(destroy)시키기 위해 영역의 부분 소거를 수행하는 단계를 포함할 수 있고; 영역 내의 저장 셀들의 적어도 일부분은 비소거 상태들로 설정될 수 있다.
추가의 실시예들에 따르면, 시간을 제어하는 단계는 유효하지 않은 데이터를 소멸시키기 위해 저장 셀들의 영역을 소거하는 단계; 및 임시 데이터를 교체 데이터로 덮어쓰기 전에 저장 셀들의 영역을 임시 데이터로 프로그램하는 단계를 포함할 수 있다.
앞서 논의한 바와 같이, 방법 실시예들은 영역을 유효하지 않은 데이터를 저장하는 것으로서 표시하는 단계를 포함할 수 있다. 영역을 표시하는 단계는 영역이 유효하지 않은 데이터를 포함한다는 것을 나타내기 위해 영역 내의 미리 결정된 위치에 저장된 데이터를 수정하는 단계를 추가로 포함할 수 있다. 방법 실시예들은 영역이 유효하지 않은 데이터를 저장하는 것으로 결정하기 위해 미리 결정된 위치에 있는 데이터의 설정들을 이용하는 단계를 추가로 포함할 수 있다.
본 명세서에 논의된 제2 예시적인 실시예는 장치를 포함하고, 본 장치는 다수의 비휘발성 메모리 디바이스들을 포함하는 비휘발성 메모리 시스템; 및 비휘발성 메모리 시스템 내의 저장 셀들의 영역에 저장된 데이터가 유효하지 않은 데이터를 저장하고 있다는 통지를 수신하고; 통지에 응답하여, 영역을 유효하지 않은 데이터를 저장하는 것으로서 표시하며; 저장 셀들에 있는 유효하지 않은 데이터를 교체 데이터로 차후에 덮어쓰는 것과 연관되는, 영역이 소거로 설정되어 있는 시간의 양을 제어하도록 구성된 처리 로직을 포함한다.
제2 예시적인 실시예는 이하의 다른 추가의 실시예들을 생성하기 위해 이하의 특징들의 하나 이상의 특징들 중 임의의 것과 함께 구현될 수 있다:
하나의 실시예에서, 시간은 저장 셀들이, 교체 데이터로 차후에 덮어쓰기 전에, 소거된 상태로 설정되는 시간의 양을 나타낸다. 처리 로직은 영역 내의 저장 셀들에 있는 유효하지 않은 데이터를 소거하는 동작을 지연시키고 유효하지 않은 데이터를 교체 데이터로 교체하도록 추가로 구성되어 있을 수 있다. 지연된 동작은 시간을 미리 결정된 시간 임계값 미만으로 감소시킨다.
추가의 실시예들에 따르면, 처리 로직은 비휘발성 메모리 시스템에 저장 공간이 필요한지를 모니터링하고; 비휘발성 메모리 시스템에 교체 데이터를 저장할 필요가 있음을 검출한 것에 응답하여 저장 영역에 있는 유효하지 않은 데이터를 소거하도록 추가로 구성되어 있다.
다른 추가의 실시예들에서, 처리 로직은 유효하지 않은 데이터를 소거한 후에, 저장 셀들이 소거된 상태로 설정되는 시간이 미리 결정된 시간 임계값 미만이 되도록 보장하기 위해 영역의 저장 셀들에 교체 데이터를 저장하는 것을 개시하도록 추가로 구성되어 있다.
다른 예시적인 실시예에서, 처리 로직은 저장 셀들에 저장된 교체 데이터와 연관된 내인성 전하 손실의 속도를 감소시키도록 - 내인성 전하 손실의 속도는, 교체 데이터를 저장 셀들에 저장하기 전에, 저장 셀들의 설정들이 소거 상태로 설정되는 시간의 양에 의존함 - 추가로 구성되어 있다.
추가의 실시예에서, 처리 로직은 저장 셀들을 소거하라는 명령을 수신할 때까지 저장 셀들의 설정들을 유효하지 않은 데이터를 저장하는 이전에 프로그램된 상태에 유지시키도록 - 명령은 비휘발성 메모리 시스템 내의 예비 대역이 새로 수신된 데이터를 저장할 현재 대역으로서 재할당되었다는 것을 검출한 것에 응답하여 수신됨 - 추가로 구성되어 있다.
처리 로직은 저장 셀들에 있는 유효하지 않은 데이터를 수정하라는 명령을 수신하고; 명령을 수신한 것에 응답하여, 영역 내의 데이터 셀들의 설정들의 전부가 아닌 일부분을 비소거 상태로 수정하도록 추가로 구성될 수 있다.
추가의 실시예들에 따르면, 처리 로직은 유효하지 않은 데이터를 이용 불가능하게 만들기 위해, 영역 내의 제1 그룹의 셀들의 설정들을 제1 비소거 상태로부터 제2 비소거 상태로 변경하도록 추가로 구성될 수 있다.
다른 추가의 실시예들에 따르면, 처리 로직은 영역 내의 저장 셀들에 있는 제2 비소거 데이터를 소거하고 제2 비소거 데이터를 교체 데이터로 교체하는 동작을 지연시킴으로써 시간을 시간 임계값 미만으로 감소시키도록 추가로 구성될 수 있다.
다른 추가의 실시예들에서, 처리 로직은 유효하지 않은 데이터를 소멸시키기 위해 영역의 부분 소거를 수행하도록 - 영역 내의 저장 셀들의 적어도 일부분은 비소거 상태들로 설정되어 있음 - 추가로 구성될 수 있다.
하나의 실시예에서, 처리 로직은 유효하지 않은 데이터를 소멸시키기 위해 저장 셀들의 영역을 소거하고; 임시 데이터를 교체 데이터로 덮어쓰기 전에 저장 셀들의 영역을 임시 데이터로 프로그램하도록 추가로 구성되어 있다.
컴퓨터 시스템은 장치를 포함하도록 구성될 수 있다. 이러한 컴퓨터 시스템은 처리 로직과 통신하고 대응하는 데이터를 메모리 시스템에 저장하도록 구성된 호스트 컴퓨터 프로세서 하드웨어를 포함하도록 구성될 수 있다.
본 명세서에서 논의된 바와 같은 비휘발성 메모리 시스템은 컴퓨터 시스템이 액세스하는 고상 드라이브일 수 있다.
본 명세서에서 논의된 바와 같은 컴퓨터 시스템은 고상 드라이브에 저장된 대응하는 데이터에 적어도 부분적으로 기초하여 영상을 렌더링하는 디스플레이 화면을 추가로 포함할 수 있다.
본 명세서에서 논의된 바와 같은 제3 예시적인 실시예는 명령어들을 저장하고 있는 컴퓨터 판독 가능 저장 하드웨어(컴퓨터 판독 가능 저장 매체)를 포함하고, 명령어들은, 컴퓨터 프로세서 하드웨어에 의해 수행될 때, 컴퓨터 프로세서 하드웨어로 하여금 하나 이상의 동작들을 수행하게 한다. 이 동작들은 비휘발성 메모리 시스템 내의 저장 셀들의 영역에 저장된 데이터가 유효하지 않은 데이터를 저장하고 있다는 통지를 수신한 것에 응답하여, 영역을 유효하지 않은 데이터를 저장하는 것으로서 표시하는 동작; 및 저장 셀들에 있는 유효하지 않은 데이터를 교체 데이터로 차후에 덮어쓰는 것과 연관되는, 저장 셀들의 영역이 소거 상태에 있는 시간을 제어하는 동작을 포함할 수 있다.
제3 예시적인 실시예는 이하의 다른 추가의 실시예들을 생성하기 위해 이하의 특징들의 하나 이상의 특징들 중 임의의 것과 함께 구현될 수 있다:
다른 컴퓨터 판독 가능 저장 매체 실시예에 따르면, 시간은 저장 셀들이, 교체 데이터로 차후에 덮어쓰기 전에, 소거된 상태로 설정되는 시간의 양을 나타낸다. 시간을 제어하는 것은 영역 내의 저장 셀들에 있는 유효하지 않은 데이터를 소거하는 동작을 지연시키고 유효하지 않은 데이터를 교체 데이터로 교체하는 것 - 지연된 동작은 시간을 미리 결정된 시간 임계값 미만으로 감소시킴 - 을 포함한다.
다른 실시예에 따르면, 컴퓨터 판독 가능 저장 매체는 비휘발성 메모리 시스템에 저장 공간이 필요한지를 모니터링하는 동작; 및 비휘발성 메모리 시스템에 교체 데이터를 저장할 필요가 있음을 검출한 것에 응답하여 저장 영역에 있는 유효하지 않은 데이터를 소거하는 동작을 지원하는 명령어들을 포함한다.
다른 실시예에 따르면, 컴퓨터 판독 가능 저장 매체는 유효하지 않은 데이터를 소거한 후에, 저장 셀들이 소거된 상태로 설정되는 시간이 미리 결정된 시간 임계값 미만이 되도록 보장하기 위해 영역의 저장 셀들에 교체 데이터를 저장하는 것을 개시하는 동작을 지원하는 명령어들을 포함한다.
다른 실시예에 따르면, 컴퓨터 판독 가능 저장 매체는 저장 셀들에 저장된 교체 데이터와 연관된 내인성 전하 손실의 속도를 감소시키는 동작 - 내인성 전하 손실의 속도는 저장 셀들의 설정들이, 교체 데이터를 저장 셀들에 저장하기 전에, 소거 상태로 설정되는 시간의 양에 의존함 - 을 지원하는 명령어들을 포함한다.
다른 실시예에 따르면, 컴퓨터 판독 가능 저장 매체는 저장 셀들을 소거하라는 명령을 수신할 때까지 저장 셀들의 설정들을 유효하지 않은 데이터를 저장하는 이전에 프로그램된 상태에 유지시키는 동작 - 명령은 비휘발성 메모리 시스템 내의 예비 대역이 새로 수신된 데이터를 저장할 현재 대역으로서 재할당되었다는 것을 검출한 것에 응답하여 수신됨 -; 및 소거된 저장 셀들의 영역을 예비 대역으로서 지정하는 동작을 지원하는 명령어들을 포함한다.
다른 실시예에 따르면, 컴퓨터 판독 가능 저장 매체는 저장 셀들에 있는 유효하지 않은 데이터를 수정하라는 명령을 수신하는 동작; 및 명령을 수신한 것에 응답하여, 영역 내의 저장 셀들의 설정들의 전부가 아닌 일부분을 유효하지 않은 데이터가 오염되게 되는 비소거 상태(non-erase state) 내에 있도록 수정하는 동작을 지원하는 명령어들을 포함한다.
다른 실시예에 따르면, 컴퓨터 판독 가능 저장 매체는 유효하지 않은 데이터를 이용 불가능하게 만들기 위해, 영역 내의 제1 그룹의 셀들의 설정들을 제1 비소거 상태로부터 제2 비소거 상태로 변경하는 동작을 지원하는 명령어들을 포함한다.
다른 실시예에 따르면, 컴퓨터 판독 가능 저장 매체는 저장 셀들과 연관된 소거 임계값을 증가시키는 동작; 및 저장 셀들의 설정들을 증가된 소거 임계값에 의해 규정된 범위 내에 있도록 수정하는 동작을 지원하는 명령어들을 포함한다.
다른 실시예에 따르면, 컴퓨터 판독 가능 저장 매체는 유효하지 않은 데이터를 소멸시키기 위해 영역의 부분 소거를 수행하는 동작을 지원하는 명령어들을 포함한다.
다른 실시예에 따르면, 컴퓨터 판독 가능 저장 매체는 유효하지 않은 데이터를 소멸시키기 위해 저장 셀들의 영역을 소거하는 동작; 및 임시 데이터를 교체 데이터로 덮어쓰기 전에 저장 셀들의 영역을 임시 데이터로 프로그램하는 동작을 지원하는 명령어들을 포함한다.
다른 실시예에 따르면, 컴퓨터 판독 가능 저장 매체는 저장 셀들에 저장된 교체 데이터와 연관된 내인성 전하 손실의 속도를 감소시키는 동작을 지원하는 명령어들을 포함한다.
다른 실시예에 따르면, 컴퓨터 판독 가능 저장 매체는 시간을 임계값 미만이 되도록 제어하는 동작을 지원하는 명령어들을 포함한다.
다른 실시예에 따르면, 컴퓨터 판독 가능 저장 매체는 영역이 유효하지 않은 데이터를 포함한다는 것을 나타내기 위해 영역 내의 미리 결정된 위치에 저장된 데이터를 수정하는 동작; 및 영역이 유효하지 않은 데이터를 저장하는 것으로 결정하기 위해 미리 결정된 위치에 있는 데이터의 설정들을 이용하는 동작을 지원하는 명령어들을 포함한다.
본 명세서에 논의된 제4 예시적인 실시예는 시간을 관리하는 시스템을 포함하고, 본 시스템은 비휘발성 메모리 시스템 내의 저장 셀들의 영역에 저장된 데이터가 유효하지 않은 데이터를 저장하고 있다는 통지를 수신하는 수단; 통지에 응답하여 영역을 유효하지 않은 데이터를 저장하는 것으로서 표시하는 수단; 및 저장 셀들에 있는 유효하지 않은 데이터를 교체 데이터로 차후에 덮어쓰는 것과 연관되는, 영역이 소거로 설정되어 있는 시간의 양을 제어하는 수단을 포함한다.
제4 예시적인 실시예는 이하의 다른 추가의 실시예들을 생성하기 위해 이하의 특징들의 하나 이상의 특징들 중 임의의 것과 함께 구현될 수 있다:
하나 이상의 예시적인 실시예들에서, 시간은 저장 셀들이, 저장 셀들을 교체 데이터로 차후에 덮어쓰기 전에, 소거된 상태로 설정되는 시간의 양을 나타낸다. 시간을 제어하는 것은 영역 내의 저장 셀들에 있는 유효하지 않은 데이터를 소거하는 동작을 지연시키고 유효하지 않은 데이터를 교체 데이터로 교체하는 것 - 지연된 동작은 시간을 미리 결정된 시간 임계값 미만으로 감소시킴 - 을 포함한다.
하나 이상의 예시적인 실시예들에서, 본 시스템은 비휘발성 메모리 시스템에 저장 공간이 필요한지를 모니터링하는 수단; 및 비휘발성 메모리 시스템에 교체 데이터를 저장할 필요가 있음을 검출한 것에 응답하여 저장 영역에 있는 유효하지 않은 데이터를 소거하는 수단을 추가로 포함한다.
하나 이상의 예시적인 실시예들에서, 본 시스템은 유효하지 않은 데이터를 소거한 후에, 저장 셀들이 소거된 상태로 설정되는 시간이 미리 결정된 시간 임계값 미만이 되도록 보장하기 위해 영역의 저장 셀들에 교체 데이터를 저장하는 것을 개시하는 수단을 추가로 포함한다.
하나 이상의 예시적인 실시예들에서, 본 시스템은 저장 셀들에 저장된 교체 데이터와 연관된 내인성 전하 손실의 속도를 감소시키는 수단 - 내인성 전하 손실의 속도는 저장 셀들의 설정들이, 교체 데이터를 저장 셀들에 저장하기 전에, 소거 상태로 설정되는 시간의 양에 의존함 - 을 추가로 포함한다.
하나 이상의 예시적인 실시예들에서, 본 시스템은 저장 셀들을 소거하라는 명령을 수신할 때까지 저장 셀들의 설정들을 유효하지 않은 데이터를 저장하는 이전에 프로그램된 상태에 유지시키는 수단 - 명령은 비휘발성 메모리 시스템 내의 예비 대역이 새로 수신된 데이터를 저장할 현재 대역으로서 재할당되었다는 것을 검출한 것에 응답하여 수신됨 -; 및 소거된 저장 셀들의 영역을 예비 대역으로서 지정하는 수단을 추가로 포함한다.
하나 이상의 예시적인 실시예들에서, 본 시스템은 저장 셀들에 있는 유효하지 않은 데이터를 수정하라는 명령을 수신하는 수단; 및 명령을 수신한 것에 응답하여, 영역 내의 저장 셀들의 설정들의 전부가 아닌 일부분을 유효하지 않은 데이터가 오염되게 되는 비소거 상태 내에 있도록 수정하는 수단을 추가로 포함한다.
하나 이상의 예시적인 실시예들에서, 본 시스템은 유효하지 않은 데이터를 이용 불가능하게 만들기 위해, 영역 내의 제1 그룹의 셀들의 설정들을 제1 비소거 상태로부터 제2 비소거 상태로 변경하는 수단을 추가로 포함한다.
하나 이상의 예시적인 실시예들에서, 본 시스템은 저장 셀들과 연관된 소거 임계값을 증가시키는 수단; 및 저장 셀들의 설정들을 증가된 소거 임계값에 의해 규정된 범위 내에 있도록 수정하는 수단을 추가로 포함한다.
하나 이상의 예시적인 실시예들에서, 본 시스템은 유효하지 않은 데이터를 소멸시키기 위해 영역의 부분 소거를 수행하는 수단을 추가로 포함한다.
본 명세서에서 논의된 자원들 중 임의의 것은 본 명세서에 개시된 방법 동작들의 일부 또는 전부를 수행 및/또는 지원하는, 하나 이상의 컴퓨터화된 디바이스들, 컴퓨터 시스템들, 서버들, 기지국들, 무선 통신 장비, 통신 관리 시스템들, 워크스테이션들, 핸드헬드 또는 랩톱 컴퓨터들 등을 포함할 수 있다. 환언하면, 하나 이상의 컴퓨터화된 디바이스들 또는 프로세서들은 상이한 실시예들을 수행하기 위해 본 명세서에 설명된 바와 같이 동작하도록 프로그램되고 그리고/또는 구성될 수 있다.
본 명세서에서의 또 다른 실시예들은 본 명세서에 개시된 바와 같은 동작들을 수행하는, 소프트웨어 프로그램들, 펌웨어, 로직 등을 포함한다. 하나의 이러한 실시예는 소프트웨어 명령어들이 차후의 실행을 위해 인코딩되는 비일시적 컴퓨터 판독 가능 저장 매체(즉, 임의의 컴퓨터 판독 가능 하드웨어 저장 매체)를 포함하는 컴퓨터 프로그램 제품을 포함한다. 명령어들은, 하나 이상의 프로세서들을 가지는 컴퓨터화된 디바이스에서 실행될 때, 프로세서로 하여금 본 명세서에 개시된 동작들을 수행하게 하고 그리고/또는 그렇게 하도록 프로그램한다. 이러한 구성들은, 광 매체(예컨대, CD-ROM), 플로피 디스크, 하드디스크, 메모리 등과 같은 비일시적 컴퓨터 판독 가능 저장 매체, 또는 하나 이상의 ROM, RAM, PROM 등에서의 펌웨어 또는 단축 코드(shortcode)와 같은 다른 매체 상에 구성되거나 인코딩되는 소프트웨어, 펌웨어, 코드, 명령어들, 데이터(예컨대, 데이터 구조들) 등으로서, 또는 ASIC(Application Specific Integrated Circuit)에서의 로직으로서 제공될 수 있다. 소프트웨어 또는 펌웨어 또는 다른 이러한 구성들은 컴퓨터화된 디바이스로 하여금 본 명세서에 설명된 기법들을 수행하게 하기 위해 컴퓨터화된 디바이스 상에 설치될 수 있다.
그에 따라, 본 명세서에서의 실시예들은 본 명세서에서 논의된 바와 같은 동작들을 지원하는 장치, 방법, 시스템, 컴퓨터 프로그램 제품 등에 관한 것이다.
하나의 실시예는 하나 이상의 비휘발성 메모리 디바이스들을 포함하는 메모리 시스템 내의 데이터를 관리하는 명령어들, 로직 등을 저장하고 있는 컴퓨터 판독 가능 저장 매체 및/또는 시스템을 포함한다. 명령어 및/또는 로직은, 각자의 컴퓨터의 적어도 하나의 프로세서 디바이스에 의해 실행될 때, 적어도 하나의 프로세서 디바이스로 하여금 비휘발성 메모리 시스템 내의 저장 셀들의 영역에 저장된 데이터가 유효하지 않은 데이터를 저장하고 있다는 통지를 수신하게 하고; 통지에 응답하여, 영역을 유효하지 않은 데이터를 저장하는 것으로서 표시하게 하며; 저장 셀들에 있는 유효하지 않은 데이터를 교체 데이터로 덮어쓰는 것과 연관된 시간을 제어하게 한다.
유의할 점은, 본 명세서에서 논의된 바와 같은 처리 중 임의의 것이 임의의 적당한 순서로 수행될 수 있다는 것이다.
본 명세서에서 논의된 바와 같은, 장치, 시스템, 방법, 장치, 컴퓨터 판독 가능 저장 매체 상의 명령어들 등이 또한 엄격히 말해서, 프로세서 디바이스 내에서, 운영 체제 내에서, 또는 소프트웨어 애플리케이션 내에서와 같이, 소프트웨어 프로그램, 펌웨어로서, 소프트웨어, 하드웨어 및/또는 펌웨어의 혼성으로서, 또는 하드웨어 단독으로서 구현될 수 있다는 것을 잘 알 것이다.
그에 부가하여, 유의할 점은, 본 명세서에서의 상이한 특징들, 기법들, 구성들 등 각각이 본 개시 내용의 상이한 곳들에서 논의될 수 있지만, 적당한 경우, 개념들 각각이 선택적으로 서로 독립적으로 또는 서로 결합하여 실행될 수 있는 것으로 의도되어 있다는 것이다. 개시된 특징들의 임의의 변형이 가능하다. 그에 따라, 본 명세서에 기술된 바와 같은 하나 이상의 실시예들은 많은 상이한 방식들로 구현되고 고려될 수 있다.
추가로 유의할 점은, 본 명세서에서의 기법들이 하나 이상의 비휘발성 메모리 디바이스를 포함하는 메모리 시스템들에서 사용하기에 아주 적합하다는 것이다. 그렇지만, 유의할 점은, 본 명세서에서의 실시예들이 이러한 응용들에서의 사용으로 제한되지 않는다는 것과 본 명세서에서 논의된 기법들이 다른 응용들에 대해서도 아주 적합하다는 것이다.
상세 사항들이 그의 바람직한 실시예들을 참조하여 상세히 도시되고 기술되어 있지만, 통상의 기술자라면 형태 및 상세에서의 다양한 변경들이 첨부된 청구범위에 의해 한정되는 본 출원의 사상 및 범주를 벗어나지 않고 그 내에서 행해질 수 있다는 것을 잘 알 것이다. 이러한 변형들은 본 출원의 범주에 포함되는 것으로 의도되어 있다. 그에 따라, 본 출원의 실시예들의 이상의 설명이 제한하는 것으로 의도되어 있지 않다. 오히려, 본 명세서에서의 실시예들에 대한 임의의 제한들은 첨부된 청구범위에 제시되어 있다.

Claims (25)

  1. 방법으로서,
    비휘발성 메모리 시스템 내의 저장 셀들의 영역에 저장된 데이터가 유효하지 않은 데이터를 저장하고 있다는 통지를 수신한 것에 응답하여, 상기 영역을 유효하지 않은 데이터를 저장하는 것으로서 표시하는 단계; 및
    상기 저장 셀들에 있는 상기 유효하지 않은 데이터를 교체 데이터(replacement data)로 차후에 덮어쓰는 것과 연관되는, 상기 저장 셀들의 영역이 소거 상태에 있는 시간을 제어하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서, 상기 시간을 제어하는 단계는 상기 영역 내의 상기 저장 셀들에 있는 상기 유효하지 않은 데이터를 소거하는 동작을 지연시키고 상기 유효하지 않은 데이터를 상기 교체 데이터로 교체하는 단계 - 상기 지연된 동작은 상기 시간을 미리 결정된 시간 임계값 미만으로 감소시킴 - 를 포함하는, 방법.
  3. 제2항에 있어서, 상기 유효하지 않은 데이터를 소거하는 동작을 지연시키는 단계는,
    상기 비휘발성 메모리 시스템에 저장 공간이 필요한지를 모니터링하는 단계; 및
    상기 비휘발성 메모리 시스템에 상기 교체 데이터를 저장할 필요가 있음을 검출한 것에 응답하여 상기 저장 영역에 있는 상기 유효하지 않은 데이터를 소거하는 단계를 포함하는, 방법.
  4. 제2항 또는 제3항에 있어서, 상기 유효하지 않은 데이터를 소거한 후에, 상기 저장 셀들이 소거된 상태로 설정되는 상기 시간이 상기 미리 결정된 시간 임계값 미만이 되도록 보장하기 위해 상기 영역의 상기 저장 셀들에 상기 교체 데이터를 저장하는 것을 개시하는 단계를 추가로 포함하는, 방법.
  5. 제2항에 있어서, 상기 시간을 제어하는 단계는,
    상기 저장 셀들에 저장된 상기 교체 데이터와 연관된 내인성 전하 손실(intrinsic charge loss)의 속도를 감소시키는 단계 - 상기 내인성 전하 손실의 속도는, 상기 교체 데이터를 상기 저장 셀들에 저장하기 전에, 상기 저장 셀들의 설정들이 소거 상태로 설정되는 시간에 의존함 - 를 포함하는, 방법.
  6. 제1항 또는 제2항에 있어서, 상기 유효하지 않은 데이터를 덮어쓰는 것과 연관된 상기 시간을 제어하는 단계는,
    상기 저장 셀들을 소거하라는 명령을 수신할 때까지 상기 저장 셀들의 설정들을 상기 유효하지 않은 데이터를 저장하는 이전에 프로그램된 상태에 유지시키는 단계 - 상기 명령은 상기 비휘발성 메모리 시스템 내의 예비 대역(reserve band)이 새로 수신된 데이터를 저장할 현재 대역(current band)으로서 재할당되었다는 것을 검출한 것에 응답하여 수신됨 -; 및
    상기 소거된 저장 셀들의 영역을 상기 예비 대역인 것으로서 지정하는 단계를 포함하는, 방법.
  7. 제1항에 있어서,
    상기 저장 셀들에 있는 상기 유효하지 않은 데이터를 수정하라는 명령을 수신하는 단계; 및
    상기 명령을 수신한 것에 응답하여, 상기 영역 내의 상기 저장 셀들의 설정들의 전부가 아닌 일부분(less-than-all portion)을 상기 유효하지 않은 데이터가 오염되게 되는 비소거 상태(non-erase state) 내에 있도록 수정하는 단계를 추가로 포함하는, 방법.
  8. 제7항에 있어서, 상기 저장 셀들의 설정들의 전부가 아닌 일부분을 상기 비소거 상태로 수정하는 단계는,
    상기 유효하지 않은 데이터를 이용 불가능하게 만들기 위해, 상기 영역 내의 제1 그룹의 셀들의 설정들을 제1 비소거 상태로부터 제2 비소거 상태로 변경하는 단계를 포함하는, 방법.
  9. 제1항, 제7항 및 제8항 중 어느 한 항에 있어서,
    상기 저장 셀들과 연관된 소거 임계값을 증가시키는 단계; 및
    상기 저장 셀들의 설정들을 상기 증가된 소거 임계값에 의해 규정된 범위 내에 있도록 수정하는 단계를 추가로 포함하는, 방법.
  10. 제1항, 제2항, 제7항 및 제8항 중 어느 한 항에 있어서, 상기 유효하지 않은 데이터를 소멸(destroy)시키기 위해 상기 영역의 부분 소거(partial erase)를 수행하는 단계를 추가로 포함하는, 방법.
  11. 제1항에 있어서, 상기 시간을 제어하는 단계는,
    상기 유효하지 않은 데이터를 소멸시키기 위해 상기 저장 셀들의 영역을 소거하는 단계; 및
    임시 데이터를 상기 교체 데이터로 덮어쓰기 전에 상기 저장 셀들의 영역을 상기 임시 데이터로 프로그램하는 단계를 포함하는, 방법.
  12. 제1항 또는 제11항에 있어서, 상기 시간을 제어하는 단계는,
    상기 저장 셀들에 저장된 상기 교체 데이터와 연관된 내인성 전하 손실의 속도를 감소시키는 단계를 포함하는, 방법.
  13. 제1항 또는 제11항에 있어서, 상기 시간을 제어하는 단계는,
    상기 시간을 임계값 미만이 되도록 제어하는 단계를 포함하는, 방법.
  14. 제1항에 있어서, 상기 영역을 표시하는 단계는,
    상기 영역이 유효하지 않은 데이터를 포함한다는 것을 나타내기 위해 상기 영역 내의 미리 결정된 위치에 저장된 데이터를 수정하는 단계를 포함하고,
    상기 방법은,
    상기 영역이 유효하지 않은 데이터를 저장하는 것으로 결정하기 위해 상기 미리 결정된 위치에 있는 상기 데이터의 설정들을 이용하는 단계를 추가로 포함하는, 방법.
  15. 데이터를 저장하는 장치로서,
    다수의 비휘발성 메모리 디바이스들을 포함하는 비휘발성 메모리 시스템; 및
    처리 로직
    을 포함하고, 상기 처리 로직은,
    상기 비휘발성 메모리 시스템 내의 저장 셀들의 영역에 저장된 데이터가 유효하지 않은 데이터를 저장하고 있다는 통지를 수신한 것에 응답하여, 상기 영역을 유효하지 않은 데이터를 저장하는 것으로서 표시하고,
    상기 저장 셀들에 있는 상기 유효하지 않은 데이터를 교체 데이터로 차후에 덮어쓰는 것과 연관되는, 상기 영역이 소거 상태로 설정되는 시간을 제어하도록 구성되는, 장치.
  16. 제15항에 있어서, 상기 처리 로직은 상기 영역 내의 상기 저장 셀들에 있는 상기 유효하지 않은 데이터를 소거하는 동작을 지연시키고 상기 유효하지 않은 데이터를 상기 교체 데이터로 교체하도록 - 상기 지연된 동작은 상기 시간을 미리 결정된 시간 임계값 미만으로 감소시킴 - 추가로 구성되어 있는, 장치.
  17. 제16항에 있어서, 상기 처리 로직은,
    상기 비휘발성 메모리 시스템에 저장 공간이 필요한지를 모니터링하고;
    상기 비휘발성 메모리 시스템에 상기 교체 데이터를 저장할 필요가 있음을 검출한 것에 응답하여 상기 저장 영역에 있는 상기 유효하지 않은 데이터를 소거하도록 추가로 구성되어 있는, 장치.
  18. 제15항 또는 제17항에 있어서, 상기 처리 로직은,
    상기 유효하지 않은 데이터를 소거한 후에, 상기 저장 셀들이 소거된 상태로 설정되는 상기 시간이 상기 미리 결정된 시간 임계값 미만이 되도록 보장하기 위해 상기 영역의 상기 저장 셀들에 상기 교체 데이터를 저장하는 것을 개시하도록 추가로 구성되어 있는, 장치.
  19. 제16항에 있어서, 상기 처리 로직은,
    상기 저장 셀들에 저장된 상기 교체 데이터와 연관된 내인성 전하 손실의 속도를 감소시키도록 - 상기 내인성 전하 손실의 속도는, 상기 교체 데이터를 상기 저장 셀들에 저장하기 전에, 상기 저장 셀들의 설정들이 상기 소거 상태로 설정되는 시간의 양에 의존함 - 추가로 구성되어 있는, 장치.
  20. 제15항 또는 제19항에 있어서, 상기 처리 로직은,
    상기 저장 셀들을 소거하라는 명령을 수신할 때까지 상기 저장 셀들의 설정들을 상기 유효하지 않은 데이터를 저장하는 이전에 프로그램된 상태에 유지시키도록 - 상기 명령은 상기 비휘발성 메모리 시스템 내의 예비 대역이 새로 수신된 데이터를 저장할 현재 대역으로서 재할당되었다는 것을 검출한 것에 응답하여 수신됨 - 추가로 구성되어 있는, 장치.
  21. 제15항, 제16항, 제17항 및 제19항 중 어느 한 항의 장치를 포함하는 컴퓨터 시스템으로서,
    처리 로직과 통신하고, 대응하는 데이터를 메모리 시스템에 저장하도록 구성된 호스트 컴퓨터 프로세서 하드웨어를 추가로 포함하는, 컴퓨터 시스템.
  22. 제15항, 제16항, 제17항 및 제19항 중 어느 한 항의 장치를 포함하는 컴퓨터 시스템으로서,
    비휘발성 메모리 시스템은 상기 컴퓨터 시스템이 액세스하는 고상 드라이브(solid-state drive)인, 컴퓨터 시스템.
  23. 제22항에 있어서, 상기 고상 드라이브에 저장된 대응하는 데이터에 적어도 부분적으로 기초하여 영상을 렌더링하는 디스플레이 화면을 추가로 포함하는, 컴퓨터 시스템.
  24. 명령어들을 저장하고 있는 컴퓨터 판독 가능 저장 하드웨어로서,
    상기 명령어들은, 컴퓨터 프로세서 하드웨어에 의해 수행될 때, 상기 컴퓨터 프로세서 하드웨어로 하여금,
    비휘발성 메모리 시스템 내의 저장 셀들의 영역에 저장된 데이터가 유효하지 않은 데이터를 저장하고 있다는 통지를 수신한 것에 응답하여, 상기 영역을 유효하지 않은 데이터를 저장하는 것으로서 표시하는 동작; 및
    상기 저장 셀들에 있는 상기 유효하지 않은 데이터를 교체 데이터로 차후에 덮어쓰는 것과 연관되는, 상기 저장 셀들의 영역이 소거 상태에 있는 시간을 제어하는 동작을 수행하게 하는, 컴퓨터 판독 가능 저장 하드웨어.
  25. 제24항에 있어서, 상기 시간을 제어하는 동작은,
    상기 영역 내의 상기 저장 셀들에 있는 상기 유효하지 않은 데이터를 소거하는 동작을 지연시키고 상기 유효하지 않은 데이터를 상기 교체 데이터로 교체하는 동작 - 상기 지연된 동작은 상기 시간을 미리 결정된 시간 임계값 미만으로 감소시킴 - 을 포함하는, 컴퓨터 판독 가능 저장 하드웨어.
KR1020157032963A 2013-07-16 2014-07-16 메모리 시스템에서의 소거 관리 KR101686376B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/943,762 US9483397B2 (en) 2013-07-16 2013-07-16 Erase management in memory systems
US13/943,762 2013-07-16
PCT/US2014/046849 WO2015009827A1 (en) 2013-07-16 2014-07-16 Erase management in memory systems

Publications (2)

Publication Number Publication Date
KR20160003720A true KR20160003720A (ko) 2016-01-11
KR101686376B1 KR101686376B1 (ko) 2016-12-13

Family

ID=52344556

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157032963A KR101686376B1 (ko) 2013-07-16 2014-07-16 메모리 시스템에서의 소거 관리

Country Status (8)

Country Link
US (1) US9483397B2 (ko)
EP (2) EP3022740B1 (ko)
JP (1) JP6112595B2 (ko)
KR (1) KR101686376B1 (ko)
CN (2) CN105340020B (ko)
BR (2) BR122018075830B1 (ko)
RU (1) RU2638006C2 (ko)
WO (1) WO2015009827A1 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9390003B2 (en) * 2013-12-09 2016-07-12 International Business Machines Corporation Retirement of physical memory based on dwell time
US9274866B2 (en) * 2013-12-09 2016-03-01 International Business Machines Corporation Programming non-volatile memory using a relaxed dwell time
US10019179B2 (en) * 2015-10-16 2018-07-10 Toshiba Memory Corporation Memory device that writes data into a block based on time passage since erasure of data from the block
JP6765322B2 (ja) * 2017-02-28 2020-10-07 キオクシア株式会社 メモリシステムおよび制御方法
JP6765321B2 (ja) * 2017-02-28 2020-10-07 キオクシア株式会社 メモリシステムおよび制御方法
CN113641630A (zh) * 2017-03-27 2021-11-12 珠海极海半导体有限公司 一种flash存储器
KR102611345B1 (ko) * 2018-07-31 2023-12-08 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US10628076B1 (en) * 2018-10-01 2020-04-21 Micron Technology, Inc. Data erasure in memory sub-systems
CN109920462B (zh) * 2019-03-01 2021-01-22 中国科学院微电子研究所 一种数据写入控制电路和控制方法
JP2020198128A (ja) * 2020-08-31 2020-12-10 キオクシア株式会社 メモリシステム
JP7132291B2 (ja) * 2020-08-31 2022-09-06 キオクシア株式会社 メモリシステムおよび制御方法
US11734193B2 (en) * 2020-12-14 2023-08-22 Micron Technology, Inc. Exclusion regions for host-side memory address translation
CN112908392B (zh) * 2021-02-09 2023-09-15 东芯半导体股份有限公司 控制非易失性存储器参数的控制方法
US11550955B1 (en) * 2021-07-20 2023-01-10 Red Hat, Inc. Automatically anonymizing data in a distributed storage system
CN113835970B (zh) * 2021-10-09 2022-05-10 南阳理工学院 一种计算机存储器优化装置及其优化方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060002197A1 (en) * 2004-06-30 2006-01-05 Rudelic John C Method and apparatus to detect invalid data in a nonvolatile memory following a loss of power
US20110113183A1 (en) * 2009-11-09 2011-05-12 Industrial Technology Research Institute Method for Managing a Non-Violate Memory and Computer Readable Medium Thereof

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2582487B2 (ja) * 1991-07-12 1997-02-19 インターナショナル・ビジネス・マシーンズ・コーポレイション 半導体メモリを用いた外部記憶システム及びその制御方法
US5808937A (en) * 1994-12-16 1998-09-15 National Semiconductor Corporation Self-convergent method for programming FLASH and EEPROM memory cells that moves the threshold voltage from an erased threshold voltage range to one of a plurality of programmed threshold voltage ranges
US5860124A (en) * 1996-09-30 1999-01-12 Intel Corporation Method for performing a continuous over-write of a file in nonvolatile memory
JP2004240660A (ja) * 2003-02-05 2004-08-26 Matsushita Electric Ind Co Ltd 不揮発性メモリ装置の制御方法
US8504798B2 (en) * 2003-12-30 2013-08-06 Sandisk Technologies Inc. Management of non-volatile memory systems having large erase blocks
US7873885B1 (en) * 2004-01-20 2011-01-18 Super Talent Electronics, Inc. SSD test systems and methods
KR100876084B1 (ko) * 2007-02-13 2008-12-26 삼성전자주식회사 플래시 저장 장치로 삭제 정보를 전달할 수 있는 컴퓨팅시스템
US7783845B2 (en) * 2005-11-14 2010-08-24 Sandisk Corporation Structures for the management of erase operations in non-volatile memories
KR100848315B1 (ko) * 2005-12-08 2008-07-24 한국전자통신연구원 이중 저널링을 이용한 데이터 저장 공간 확보 방법
US20080282024A1 (en) * 2007-05-09 2008-11-13 Sudeep Biswas Management of erase operations in storage devices based on flash memories
JP4461170B2 (ja) * 2007-12-28 2010-05-12 株式会社東芝 メモリシステム
JP2009252255A (ja) * 2008-04-01 2009-10-29 Renesas Technology Corp 不揮発性半導体記憶装置
US7979626B2 (en) * 2008-05-13 2011-07-12 Microsoft Corporation Flash recovery employing transaction log
US8040744B2 (en) * 2009-01-05 2011-10-18 Sandisk Technologies Inc. Spare block management of non-volatile memories
US7907449B2 (en) * 2009-04-09 2011-03-15 Sandisk Corporation Two pass erase for non-volatile storage
US8166233B2 (en) * 2009-07-24 2012-04-24 Lsi Corporation Garbage collection for solid state disks
TWI457940B (zh) 2009-05-15 2014-10-21 Macronix Int Co Ltd 區塊為基礎快閃記憶體之位元組存取
RU90233U1 (ru) * 2009-08-31 2009-12-27 Федеральное государственное унитарное предприятие "18 Центральный научно-исследовательский институт" Накопитель с контролем местоположения
EP2302638B1 (fr) * 2009-09-21 2013-04-17 STMicroelectronics (Rousset) SAS Procédé d'écriture et de lecture de données dans une mémoire non volatile, au moyen de métadonnées
US8271719B2 (en) 2009-10-29 2012-09-18 Freescale Semiconductor, Inc. Non-volatile memory controller device and method therefor
US8677203B1 (en) * 2010-01-11 2014-03-18 Apple Inc. Redundant data storage schemes for multi-die memory systems
TWI489466B (zh) 2011-06-15 2015-06-21 Phison Electronics Corp 記憶體抹除方法、記憶體控制器與記憶體儲存裝置
JP4988054B2 (ja) * 2011-08-12 2012-08-01 株式会社東芝 メモリシステム
WO2013030866A1 (en) * 2011-08-29 2013-03-07 Hitachi, Ltd. Semiconductor storage device comprising electrically rewritable nonvolatile semiconductor memory
US9274937B2 (en) * 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060002197A1 (en) * 2004-06-30 2006-01-05 Rudelic John C Method and apparatus to detect invalid data in a nonvolatile memory following a loss of power
US20110113183A1 (en) * 2009-11-09 2011-05-12 Industrial Technology Research Institute Method for Managing a Non-Violate Memory and Computer Readable Medium Thereof

Also Published As

Publication number Publication date
EP3489956A1 (en) 2019-05-29
JP6112595B2 (ja) 2017-04-12
EP3022740A4 (en) 2017-03-08
US9483397B2 (en) 2016-11-01
EP3022740B1 (en) 2019-03-06
WO2015009827A1 (en) 2015-01-22
BR112015031202A2 (pt) 2017-07-25
RU2015154180A (ru) 2017-06-21
KR101686376B1 (ko) 2016-12-13
CN105340020A (zh) 2016-02-17
CN110047546B (zh) 2023-04-04
JP2016525240A (ja) 2016-08-22
RU2638006C2 (ru) 2017-12-08
CN105340020B (zh) 2019-08-20
BR112015031202B1 (pt) 2022-06-14
EP3022740A1 (en) 2016-05-25
US20150026386A1 (en) 2015-01-22
EP3489956B1 (en) 2021-09-08
CN110047546A (zh) 2019-07-23
BR122018075830B1 (pt) 2023-11-07

Similar Documents

Publication Publication Date Title
KR101686376B1 (ko) 메모리 시스템에서의 소거 관리
US9645894B2 (en) Data storage device and flash memory control method
TWI632457B (zh) 用於資料儲存裝置的損耗平均方法
TWI420303B (zh) 基於寫入頻率將資料寫至記憶體不同部份之方法、非暫態電腦可讀媒體與裝置
CN108038026B (zh) 一种基于闪存的数据快速恢复方法与系统
CN111752487B (zh) 一种数据恢复方法、装置及固态硬盘
US9152498B2 (en) Raid storage systems having arrays of solid-state drives and methods of operation
US20150046636A1 (en) Storage device, computer system and methods of operating same
US20100205354A1 (en) Storage device using flash memory
EP3336706A1 (en) Method and storage device for processing stripes in storage device
US9213634B2 (en) Efficient reuse of segments in nonoverwrite storage systems
JP2012203443A (ja) メモリシステムおよびメモリシステムの制御方法
KR20090042035A (ko) 불휘발성 메모리 장치를 이용한 데이터 저장장치, 메모리시스템, 그리고 컴퓨터 시스템
US10254979B1 (en) Relocating or aborting a block of data by a host, based on media policies managed by a storage device
JP5592478B2 (ja) 不揮発性記憶装置及びメモリコントローラ
CN112130749B (zh) 数据储存装置以及非挥发式存储器控制方法
CN112346658A (zh) 在具有高速缓存体系结构的存储设备中提高数据热量跟踪分辨率
JP2014059889A (ja) メモリシステム、不揮発性記憶装置、不揮発性記憶装置の制御方法およびプログラム
US20200081657A1 (en) Data storage device and control method for non-volatile memory

Legal Events

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

Payment date: 20191127

Year of fee payment: 4