KR20140119701A - Slc-mlc 마모 균형유지 - Google Patents

Slc-mlc 마모 균형유지 Download PDF

Info

Publication number
KR20140119701A
KR20140119701A KR1020147019648A KR20147019648A KR20140119701A KR 20140119701 A KR20140119701 A KR 20140119701A KR 1020147019648 A KR1020147019648 A KR 1020147019648A KR 20147019648 A KR20147019648 A KR 20147019648A KR 20140119701 A KR20140119701 A KR 20140119701A
Authority
KR
South Korea
Prior art keywords
slc
mlc
modify
aging
aging indicator
Prior art date
Application number
KR1020147019648A
Other languages
English (en)
Inventor
지안 첸
세르게이 아나톨리비츠 고로베츠
스티븐 스프라우즈
Original Assignee
샌디스크 테크놀로지스, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 샌디스크 테크놀로지스, 인코포레이티드 filed Critical 샌디스크 테크놀로지스, 인코포레이티드
Publication of KR20140119701A publication Critical patent/KR20140119701A/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
    • 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
    • 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/7211Wear leveling
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel memory having cells with different number of storage levels

Abstract

플래시 메모리 장치에서 SLC-MLC 마모 균형유지을 위한 방법 및 시스템이 개시된다. 플래시 메모리 장치는 단일 레벨 셀(SLC) 부분(1002) 및 복수-레벨 셀(MLC) 부분(1004)을 포함한다. SLC 부분 및 MLC 부분의 노화는 서로 다를 수 있어, 잠재적으로 한 부분이 다른 것보다 먼저 마모될 수 있다. 이것을 피하기 위해서, 제어기는 SLC 부분 및 MLC 부분, 중 하나 또는 둘 다로부터 노화 표시자를 수신하고, SLC 부분 및/또는 MLC 부분의 동작을 수정할지 여부를 노화 표시자에 기초하여 판정하고, 동작을 수정하기로 판정한 것에 응하여 SLC 부분 또는 MLC 부분 중 적어도 한 부분의 동작을 수정하게 구성된다. 이에 따라, 동작의 수정은 SLC 부분과 MLC 부분 간에 마모의 균형을 유지하여, 그럼으로써 플래시 메모리 장치의 수명을 잠재적으로 연장할 수 있다.

Description

SLC-MLC 마모 균형유지{SLC-MLC WEAR BALANCING}
관련출원에 대한 참조
이 출원은 전체를 참조로 본원에 포함시키는 2011년 12월 29일에 출원된 미국특허 출원번호 13/340,446에 대한 우선권을 주장한다.
이 출원은 일반적으로 메모리 시스템 내 데이터를 관리하는 것에 관한 것이다. 특히, 이 출원은 단일 레벨 셀 메모리와 복수-레벨 셀 메모리 간에 마모의 균형을 유지하는 것에 관한 것이다.
플래시 메모리 장치들과 같은 비휘발성 메모리 시스템들은 소비자 제품들에서 사용하기 위해 널리 채택되었다. 플래시 메모리 장치들은 서로 다른 형태들, 예를 들면, 호스트 장치들 간에 옮겨질 수 있는 휴대 메모리 카드 형태 또는 호스트 장치 내 내장되는 고체상태 디스크(SSD)로서 발견될 수 있다. 데이터를 통상의 플래시 메모리 장치에 기입할 때, 호스트는 전형적으로 메모리 시스템의 논리 어드레스 공간 내에 어드레스들에 데이터를 기입하고 이로부터 데이터를 판독한다.
플래시 메모리 장치는 플로팅-게이트 메모리 셀들의 어레이를 포함한다. 메모리 셀들은 전하의 2 이상의 검출가능한 레벨들을 각 전하 저장 요소 혹은 지역에 저장하고 그럼으로써 1비트 이상의 데이터를 각각에 저장하게 동작될 수 있다. 이 구성을 복수레벨 셀(MLC) 메모리라고 한다. 대안적으로, 메모리 셀들은 단일 비트의 데이터가 각 셀에 저장되게 전하의 2 레벨들을 저장하게 동작될 수 있다. 이것을 전형적으로 바이너리 또는 단일 레벨 셀(SLC) 메모리라고 한다.
메모리 셀들의 SLC 및 MLC 유형들 둘 다는 메모리 장치가 SLC 부분 및 MLC 부분을 포함할 수 있게 메모리 장치에서 사용될 수 있다. 이상적으로, SLC 부분 및 MLC 부분은 동시에 마모될 것이다. 그러나, 때때로, SLC 부분은 MLC 부분과는 다른 시간에 마모된다. 이를 교정하기 위해서, MLC 부분 내 셀들은 SLC 부분의 일부에 재할당될 수 있고, 이것은 SLC 부분 및 MLC 부분의 서로 다른 마모 시간들을 보상할 수 있다. 그러나, MLC 부분의 일부가 되게 SLC 부분 내 셀들을 재할당하는 것은 어려울 수 있다. 이에 따라, SLC 부분 및 MLC 부분의 마모의 균형을 유지하기는 어렵다.
플래시 메모리 장치 내 SLC 부분과 MLC 부분 간에 마모의 균형을 유지하기 위한 방법들 및 시스템들이 본원에 개시된다.
일 측면에 따라, 플래시 저장 장치에서 단일 레벨 셀(SLC) 부분 및 복수-레벨 셀(MLC) 부분의 사용을 관리하기 위한 방법이 개시된다. 방법은 제어기 및 제어기와 통신하며 SLC 부분 및 MLC 부분을 포함하는 메모리를 갖는 플래시 저장 장치에서, 플래시 저장 장치에 대한 노화 표시자에 액세스하는 단계; 노화 표시자에 기초하여, SLC 부분 또는 MLC 부분 중 적어도 한 부분의 동작을 수정할지 여부를 판정하는 단계; 및 SLC 부분 또는 MLC 부분 중 적어도 한 부분의 동작을 수정할지 여부를 판정한 것에 응하여, SLC 부분 또는 MLC 부분 중 적어도 한 부분의 동작을 수정하는 단계를 포함한다. 노화 표시자는 플래시 메모리 장치 내 각각의 부분의 연령, 마모, 신뢰도, 등의 표시를 포함할 수 있다. 시스템 제어기는 각종 파라미터들 및 규칙들을 사용하여 SLC 부분 및 MLC 부분 내 동작들을 제어한다. 노화 표시자(들)에 기초하여, 시스템 제어기는 SLC 부분 및/또는 MLC 부분의 동작들을 제어하는 파라미터들 및/또는 규칙들을 수정하고, 그럼으로써 SLC 부분 및/또는 MLC 부분의 노화를 수정할 수 있다.
제 2 측면에 따라, 저장 장치가 개시된다. 저장 장치는 메모리 및 제어기를 포함한다. 메모리는 SLC 부분 및 MLC 부분을 포함한다. 제어기는 메모리와 통신하며, 플래시 저장 장치에 대한 노화 표시자에 액세스하고, 노화 표시자에 기초하여, SLC 부분 또는 MLC 부분 중 적어도 한 부분의 동작을 수정할지 여부를 판정하고, SLC 부분 또는 MLC 부분 중 적어도 한 부분의 동작을 수정할지 여부를 판정한 것에 응하여, SLC 부분 또는 MLC 부분 중 적어도 한 부분의 동작을 수정하게 구성된다.
다음 도면, 상세한 설명 및 청구항들을 검토하였을 때 다른 특징들 및 이점들이 명백해질 것이다. 또한, 다른 실시예들이 개시되며, 실시예들 각각은 단독으로 혹은 조합하여 함께 사용될 수 있다. 실시예들이 이제 첨부된 도면을 참조하여 기술될 것이다.
도 1은 복수의 다이를 내포하는 복수-뱅크 비휘발성 메모리를 갖는 메모리 시스템에 연결된 호스트를 도시한 것이다.
도 2는 도 1의 복수의 다이 비휘발성 메모리에서 사용하기 위한 예시적 플래시 메모리 시스템 제어기의 예시적 블록도이다.
도 3은 도 1에 도시된 비휘발성 메모리 뱅크들 중 하나로서 적합한 예시적인 한 플래시 메모리 뱅크이다.
도 4는 도 3의 메모리 뱅크에서 사용될 수 있는 메모리 셀 어레이의 대표적 회로도이다.
도 5는 도 3의 메모리 뱅크의 예시적 물리 메모리 구성을 도시한 것이다.
도 6은 도 5의 물리 메모리의 부분의 확대도이다.
도 7은 SLC 부분 및 MLC 부분을 포함하는 물리 메모리 아키텍처의 예를 도시한 것이다.
도 8은 2-층 데이터 저장 시스템에서 SLC 부분과 MLC 부분 간에 데이터 경로를 개요적으로 도시한 것이다.
도 9는 도 8에 도시된 SLC 층을 상세히 도시한 것이다.
도 10은 SLC 부분 및 MLC 부분에 걸쳐 블록들 및 페이지들을 관리하기 위한 시스템 아키텍처를 도시한 것이다.
도 11은 SLC-MLC 마모 균형 유지의 흐름도를 도시한 것이다.
도 12는 SLC-MLC 마모 균형 유지의 또 다른 흐름도를 도시한 것이다.
발명의 측면들을 구현하는데 사용하기에 적합한 플래시 메모리 장치가 도 1 ~ 도 10에 도시되었다. 도 1의 호스트 시스템(100)은 데이터를 메모리 장치(102)에 저장하고 이로부터 인출한다. 메모리 장치는 이를테면 개인용 컴퓨터에 설치되는 고체상태 디스크(SSD) 드라이브 형태로, 호스트에 내장되는 플래시 메모리일 수 있다. 대안적으로, 메모리 장치(102)는 도 1에 도시된 바와 같이 기계적 및 전기적 커넥터의 서로 짝이 맞는 부분들(104, 106)을 통해 호스트에 착탈가능하게 연결된 카드 형태일 수 있다. 내부에 또는 내장된 SSD 드라이브로서 사용하게 구성된 플래시 메모리는 도 1의 개요도와 유사하게 보일 수 있고, 주된 차이는 메모리 장치(102)가 호스트 내부에 위치하는 것이다. SSD 드라이브들은 회전 자기 디스크 드라이브를 대체하는 개별 모듈들의 형태일 수 있다.
도 1의 호스트 시스템(100)은 메모리 장치(102)에 관한 한, 회로와 소프트웨어와의 조합으로 구성된 2개의 주요 부분들을 갖는 것으로서 볼 수 있다. 이들은 애플리케이션 부(108), 그리고 메모리 장치(102)와 인터페이스하는 드라이버 부(110)이다. 예를 들면, PC에서, 애플리케이션 부(108)는 호스트 시스템(100) 상에서 데이터를 관리하기 위한 파일 시스템(114) 뿐만 아니라, 워드 프로세싱, 그래픽스, 제어 또는 그외 인기있는 애플리케이션 소프트웨어를 실행하는 프로세서(112)를 포함할 수 있다. 카메라, 셀룰라 전화 또는 단일의 한 세트의 기능들을 수행하는 데에만 주로 전용되는 그외 다른 호스트 시스템에서, 애플리케이션 부(108)는 사진들을 촬영하여 저장하기 위해 카메라를 동작시키고, 전화를 걸거나 받기 위해 셀룰라 전화를 동작시키는 등을 행하는 소프트웨어를 포함한다.
도 1의 메모리 장치(102)는 플래시 메모리(116)와 같은 비휘발성 메모리, 및 메모리 장치(102)가 데이터를 서로 간에 전달하기 위해 연결된 호스트 시스템(100)과 인터페이스함과 아울러 메모리(116)도 제어하는 시스템 제어기(118)를 포함할 수 있다. 시스템 제어기(118)는 본원에서 기술되는 기능 및 로직(도 11 및 도 12에 기술된 로직과 같은)을 구현하기 위한 마이크로제어기, 프로세서, 또는 그외 다른 유형의 장치를 포함할 수 있다. 시스템 제어기(118)는 이를테면 응용특정의 집적회로(ASIC), 프로그램가능 로직 어레이, 로직 디지털 회로, 혹은 이외 다른 현재 공지된 혹은 나중에 개발될 로직 처리 능력과 같은 단일 집적회로 칩 상에 구현될 수 있다.
시스템 제어기(118)는 데이터 프로그램 및 판독하는 동안 호스트 시스템(100)에 의해 사용되는 데이터의 논리 어드레스들과 플래시 메모리(116)의 물리 어드레스들 간을 전환할 수 있다. 플래시 메모리(116)는 임의의 수의 메모리 다이(120)를 포함할 수 있고, 예시로 간단히 도 1엔 2개의 메모리 다이가 도시되었다. 기능적으로, 시스템 제어기(118)는 호스트 시스템(100)과 인터페이스하는 프론트 엔드(122), 가비지 수거와 같은 내부 메모리 관리 동작들을 위해 메모리(116)의 동작을 관장하기 위한 제어기 펌웨어(124), 및 시스템 제어기(118)와 플래시 메모리(116) 간에 통신 인터페이스를 제공하기 위한 하나 이상의 플래시 인터페이스 모듈들(FIMs)(126)을 포함할 수 있다.
시스템 제어기(118)의 프로세서(206)는 플래시 메모리(116) 내 각각의 뱅크들(120) 각각을 위한 I/O 포트들을 갖는 메모리 인터페이스(204)를 통해 각각의 메모리 뱅크들(120)의 각각과 개별적으로 통신할 수 있는 복수-스레드 프로세서로서 구성될 수 있다. 시스템 제어기(118)는 내부 클럭(218)을 포함할 수 있다. 프로세서(206)는 내부 데이터 버스(202)를 통해 오류정정 부호(ECC) 모듈(214), RAM 버퍼(212), 호스트 인터페이스(216), 및 부트 코드 ROM(210)과 통신한다.
플래시 메모리(116) 내 각 다이(120)는 복수의 플레인들로 구성된 한 어레이의 메모리 셀들을 내포할 수 있다. 도 3은 간단히 하기 위해 이러한 플레인들(310, 312) 중 하나를 도시하였지만 대신 4 혹은 8개의 플레인들과 같은 더 많은 수의 플레인들이 사용될 수도 있다. 대안적으로, 메모리 뱅크의 메모리 셀 어레이는 플레인들로 분할되지 않을 수도 있다. 그러나, 그와 같이 분할되었을 때, 각 플레인은 서로 관계없이 동작할 수 있는 자기 자신의 컬럼 제어 회로들(314, 316)을 갖는다. 회로들(314, 316)은 이들의 각각의 메모리 셀 어레이의 어드레스들을 시스템 버스(302)의 어드레스 부분(306)으로부터 수신하고 이들을 각각의 비트라인들(318, 320) 중 특정한 하나 이상을 어드레스하기 위해 디코딩한다. 워드라인들(322)은 어드레스 버스(19)로 수신된 어드레스들에 응하여 행 제어 회로들(324)을 통해 어드레스된다. 또한, p-웰 전압 제어 회로들(330, 332)과 같이, 소스 전압 제어 회로들(326, 328)이 각각의 플레인들에 연결된다. 뱅크(300)가 단일의 한 어레이의 메모리 셀들을 가진 메모리 칩 형태이라면, 그리고 시스템 내에 2 이상의 이러한 칩들이 존재한다면, 데이터는 시스템 버스(302)의 데이터 부분(304)에 연결되는 각각의 데이터 입력/출력 회로들(334, 336)을 통해 플레인들(310, 312) 내외로 전송된다. 회로들(334, 336)은 각각의 컬럼 제어 회로들(314, 316)을 통해 플레인들에 연결된 라인들(338, 340)을 통해서, 데이터를 메모리 셀들에 프로그램하는 것 및 이들의 각각의 플레인들의 메모리 셀들로부터 데이터를 판독하는 것 둘 다를 제공한다.
시스템 제어기(118) 내 프로세서(206)가 데이터를 프로그램 하고, 데이터를 판독하고 소거하고 각종의 하우스키핑 사안들을 처리하기 위해, 각 뱅크(120) 내 메모리 칩들의 동작을 제어할지라도, 각 메모리 칩은 또한 이러한 기능들을 수행하기 위해 제어기(118)로부터 지령들을 실행하는 몇몇 제어회로를 내포한다. 인터페이스 회로들(342)은 시스템 버스(302)의 제어 및 상황(status) 부분(308)에 연결된다. 제어기(118)로부터의 지령들은 상태머신(344)에 제공되고 이어 상태머신(344)은 이들 지령들을 실행하기 위해 다른 회로들의 특정한 제어를 제공한다. 제어 라인들(346 ~ 354)은 상태머신(344)을 도 3에 도시된 바와 같은 이들 다른 회로들에 연결한다. 상태머신(344)로부터의 상황 정보는 버스 부분(308)을 통해 제어기(118)에 송신을 위해서 라인들(356)을 통해 인터페이스(342)에 통신된다.
NOR와 같은 다른 아키텍처들이 대신 사용될 수 있을지라도, 메모리 셀 어레이들(310, 312)의 NAND 아키텍처가 이하 논의된다. 도 3의 메모리 뱅크(300)의 메모리 셀 어레이(310)의 부분인 도 4의 회로도에 의해 예시적 NAND 어레이가 도시되었다. 많은 수의 전역 비트라인들이 제공되는데, 도 4에는 설명을 간단하게 하기 위해서 4개의 이러한 라인들(402 ~ 408)만이 도시되었다. 다수의 직렬 연결된 메모리 셀 스트링들(410 ~ 424)이 이들 비트라인들 중 하나와 기준 전위 사이에 연결된다. 메모리 셀 스트링(414)을 대표로서 사용하면, 스트링의 양 끝에 선택 트랜지스터들(434, 436)와 직렬로 복수의 전하 저장 메모리 셀들(426 ~ 432)이 연결된다. 스트링의 선택 트랜지스터들이 도통이 되었을 때, 스트링은 이의 비트라인과 기준 전위 사이에 연결된다. 그러면 이 스트링 내에 한 메모리 셀이 한번에 프로그램 또는 판독된다.
도 4의 워드라인들(438 ~ 444)은 메모리 셀들의 다수의 스트링들 각각 내에 한 메모리 셀의 전하 저장 요소에 걸쳐 개별적으로 확장하고, 게이트들(446, 450)은 스트링들의 각 끝에 선택 트랜지스터들의 상태들을 제어한다. 공통 워드 및 제어 게이트 라인들(438 ~ 450)을 공유하는 메모리 셀 스트링들을, 함께 소거되는 메모리 셀들의 블록(452)을 형성하게 한다. 이 한 블록의 셀들은 물리적으로 한번에 소거될 수 있는 최소수의 셀들을 내포한다. 워드라인들(438 ~444) 중 하나를 따라 있는 것들인 한 행의 메모리 셀들은 한번에 프로그램된다. 전형적으로, NAND 어레이의 행들은 규정된 순서로 프로그램되는데, 이 경우엔 그라운드 또는 다른 공통 전위에 연결된 스트링들의 끝에 가장 가까이 있는 워드라인(444)을 따른 행부터 시작한다. 워드라인(442)을 따라 있는 한 행의 메모리 셀들이 다음에 프로그램되고, 등등하여, 블록(452) 전체에 걸쳐 프로그램된다. 워드라인(438)을 따라 있는 행이 마지막으로 프로그램된다.
제 2 블록(454)은 유사하며, 이의 스트링들의 메모리 셀들은 제 1 블록(452) 내 스트링들처럼 동일 전역 비트라인들에 연결되는데, 그러나 다른 한 세트의 워드 및 제어 게이트 라인들을 갖는다. 워드 및 제어 게이트 라인들은 이들의 적합한 동작 전압들까지 행 제어 회로들(324)에 의해 구동된다. 시스템 내에 도 3의 플레인 1 및 플레인 2와 같이 하나 이상의 플레인이 있다면, 이들 사이에 공통의 워드라인들을 한 메모리 아키텍처가 사용한다. 대안적으로 공통 워드라인들을 공유하는 2 이상의 플레인들이 있을 수 있다. 다른 메모리 아키텍처들에서, 개개의 플레인들의 워드라인들은 개별적으로 구동된다.
메모리 셀들은 단일 비트의 데이터가 각 셀에 저장되도록 전하의 두 레벨들을 저장하게 동작될 수 있다. 이것을 전형적으로 바이너리 또는 단일 레벨 셀(SLC) 메모리라고 한다. 대안적으로, 메모리 셀들은 전하의 2 이상의 검출가능한 레벨들을 각 전하 저장 요소 혹은 지역에 저장하고 그럼으로써 1비트 이상의 데이터를 각각에 저장하게 동작될 수 있다. 이 후자를 복수레벨 셀(MLC) 메모리라고 한다. 두 유형들의 메모리 셀들이 메모리에서 사용될 수 있는데, 데이터를 캐시하기 위해 예를 들면 바이너리 플래시 메모리가 사용될 수 있고 장기간 저장을 위해 MLC 메모리가 사용될 수 있다. 메모리 셀들의 전하 저장 요소들은 대부분 공통적으로 도전성 플로팅 게이트들이지만 그러나 대안적으로 비도전성 유전체 전하 트랩 물질일 수도 있다.
도 5는 4개 플레인들(502 ~ 508)의 메모리 셀들을 도시한 복수의 플레인 배열을 개념적으로 도시한 것이다. 이들 플레인들(502 ~ 508)은 단일 다이 상에, 혹은 2개의 다이(각 다이 상에 플레인들 중 2개) 상에, 혹은 4개의 개별적 다이 상에 있을 수 있다. 물론, 이외 다른 수의 플레인들, 이를테면 1, 2, 8, 16 또는 그 이상이 시스템의 각 다이 내에 존재할 수 있다. 플레인들은 사각형들에 의해 도 5에 도시된 다수 블록들의 메모리 셀들, 이를테면 각각의 플레인들(502 ~ 508) 내에 위치된 블록들(510, 512, 514, 516)로 개별적으로 분할된다. 각 플레인 내에 수십 또는 수백 개의 블록들이 있을 수 있다.
위에 언급된 바와 같이, 한 블록의 메모리 셀들은 소거 유닛, 즉 물리적으로 함께 소거될 수 있는 가장 적은 수의 메모리 셀들이다. 그러나, 증가된 병행도(parallelism)를 위해서, 블록들은 더 큰 메타블록 유닛들로 운영된다. 각 플레인으로부터 한 블록은 함께 논리적으로 연결되어 한 메타블록을 형성한다. 한 메타블록(518)을 형성하는 4개의 플레인들(510-516)이 도시되었다. 메타블록 내 모든 셀들은 전형적으로 함께 소거된다. 블록들(522 ~ 528)로 구성된 제 2 메타블록(520)으로 도시된 바와 같이, 메타블록을 형성하기 위해 사용되는 블록들은 이들의 각각의 플레인들 내에 동일 상대적 위치들로 제약될 필요는 없다. 일반적으로 모든 플레인들에 걸쳐 메타블록들을 확장하는 것이 바람직할지라도, 높은 시스템 수행을 위해서, 메모리 장치는 서로 다른 플레인들 내 1, 2 혹은 3개의 블록들 중 어느 것 혹은 전부의 메타블록들을 동적으로 형성하는 능력을 갖고 동작될 수 있다. 이것은 메타블록의 크기가 한 프로그램하는 동작에서 저장에 사용할 수 있는 데이터량에 더 가깝게 일치될 수 있게 한다.
개개의 블록들은 이어 동작 목적들을 위해 도 6에 도시된 바와 같이, 메모리 셀들의 페이지들로 분할된다. 예를 들면, 블록들(510 ~ 516) 각각의 메모리 셀들은 각각 8개의 페이지들(P0 ~ P7)로 분할된다. 대안적으로, 각 블록 내에 32, 64, 혹은 그 이상의 페이지들의 메모리 셀들이 있을 수 있다. 페이지는 한번에 프로그램 또는 판독되는 최소량의 데이터를 내포하는, 한 블록 내에 프로그램 및 판독하는 데이터 유닛이다. 도 3의 NAND 아키텍처에서, 페이지는 블록 내 워드라인을 따라 있는 메모리 셀들로 형성된다. 그러나, 메모리 장치의 동작 병행도를 증가시키기 위해서, 2 이상의 블록들 내에 이러한 페이지들은 메타페이지들로 논리적으로 연결될 수 있다. 4개의 블록들(510 ~ 516) 각각으로부터 하나의 물리 페이지로 형성되는 메타페이지(602)가 도 6에 도시되었다. 예를 들면, 메타페이지(602)는 4개의 블록들 각각 내에 페이지 P2를 포함하는데, 그러나 메타페이지의 페이지들은 반드시 블록들 각각 내에 동일 상대적 위치를 가질 필요는 없다. 다이 내에, 메타페이지는 프로그램하는 최대 한 유닛이다.
도 7은 물리적 메모리 아키텍처의 예를 도시한 것이다. 물리 메모리 아키텍처는 전체를 참조로 본원에 포함시키는 미국가출원번호 61/487,234에 논의되어 있다. 메모리 셀들의 어레이(예를 들면 도 3에 310, 312 참조)는 제 1 부분(710) 및 제 2 부분(720)으로 분할된다. 제 2 부분(720)은 각 셀이 복수의 비트들의 데이터를 저장하는 고밀도 저장소로서 구성되는 메모리 셀들을 갖는다. 제 1 부분(710)은 각 셀이 제 2 부분보다는 적은 수의 비트들을 저장하는 저 밀도 저장소로서 구성되는 메모리 셀들을 갖는다. 예를 들면, 제 1 부분(710) 내 메모리 셀들은 각각 1 비트의 데이터를 저장하기 위해 SLC 메모리로서 구성된다. 일예로서, 제 2 부분(720) 내 메모리 셀들은 각각 2 비트의 데이터를 저장하기 위해 MLC 메모리로서 구성된다. 셀당 1 비트의 데이터를 저장하는 제 1 부분은 D1이라 지칭될 것이며 셀당 2 비트의 데이터를 저장하는 제 2 부분은 D2이라 지칭될 것이다. 제 1 부분(710)은 전형적으로 제 2 부분에 비해 더 빠른 속도, 훨씬 더 넓은 오류 마진 및 더 많은 내구성으로 동작할 것이다. 대안적으로, 제 2 부분(720) 내 메모리 셀들은 2 이상의 비트들(이를테면 3비트) 각각을 저장하기 위해 MLC 메모리로서 구성된다. D1(1-비트) 및 D3(3-비트) 부분들과 같이 2개의 부분들로 분할된 메모리는 전체 개시된 바를 참조로 본원에 포함시키는 2009년 12월 18일에 출원된 미국출원 US 12/642,584(미국출원공개번호 2011-0153912 A1로서 공개된)에 개시되어 있다.
도 8에 관하여 더 상세히 논의되는 바와 같이, SLC 부분 및 MLC 부분은 여러 동작들을 위해 사용될 수 있다. SLC 부분 및 MLC 부분의 사용은 각각의 부분을 노화가 되게 할 수 있다. 부분에 대한 노화는 각각의 부분의 연령, 마모, 신뢰도, 등으로서 특징지워질 수 있다. 한 표시자는 프로그램/소거(P/E) 사이클들이다. 전형적으로, SLC 부분 또는 MLC 부분 내 한 블록은 소거되고 블록의 셀들에 데이터를 기입함으로써 프로그램된다. 블록에 P/E 사이클이 행해질 때마다, 카운터가 증분될 수 있다. 이에 따라 카운터의 수는 블록의 노화의 한 표시자를 제공할 수 있다. 위에 논의된 바와 같이, SLC 부분 및 MLC 부분 각각은 복수의 블록들을 포함할 수 있다. P/E 사이클들은 SLC 부분 및 MLC 부분 내 블록들 각각에 대해 모니터될 수 있다. 대안적으로, P/E 사이클들은 SLC 부분 내 단일 블록 및 MLC 부분 내 단일 블록에 대해 모니터될 수 있다. 마모 평균화에 기인하여, 단일 블록에 대한 P/E 사이클은 각각의 부분 내 다른 블록들에 대한 P/E 사이클과 유사한 것으로 가정될 수 있다. 마모 평준화는 SLC 부분 및/또는 MLC 부분 내 소거들 및 재-기입들이 블록들에 걸쳐 균등하게 분포되도록 데이터를 배열한다. 이렇게 하여, 각각의 부분 내 블록들은 전형적으로 동일(또는 유사한) 수의 P/E 사이클들을 갖는다.
대안적으로, P/E 사이클들은 각 논리적으로 그룹화한 블록들에 대해 모니터될 수 있다(이를테면 위에 논의된, 메타블록들에 대한 P/E 사이클들을 모니터하는 것). 또 다른 대안으로서, SLC 부분 및 MLC 부분 내 일부 또는 모든 블록들에 대한 P/E 사이클들은 평균화될 수 있다. 예를 들면, 각각의 부분 내 블록들 각각에 대한 P/E 사이클들의 평균은 각각의 부분의 노화 표시자를 생성하기 위해 사용될 수 있다.
이외 다른 노화의 표시자들은, 남은 총 블록들의 수(이를테면 실패되지 않은 SLC 부분 내 블록들의 수 혹은 실패되지 않은 MLC 부분 내 블록들의 수); 남은 예비들의 수/실패된 블록들의 수(이를테면 실패된 SLC 부분 내 블록들의 수 혹은 실패된 MLC 부분 내 블록들의 수); ECC 기반의 비트 오류율(BER); 프로그램/소거 시간; CVD, 상태 시프트 레벨을 포함한다. 노화의 표시자들은 단지 예시하기 위한 것이다. 이외 다른 표시자들이 고찰된다.
도 8은 2-층 데이터 저장 시스템에서 SLC 부분과 MLC 부분 간에 데이터 경로를 개요적으로 도시한 것이다. 제 1 층은 인입되는 데이터를 위한 주 입력 버퍼이고, MLC 부분에 비해 더 빠르고/더 높은 내구성/더 높은 비용의 메모리인 NAND 메모리의 SLC 부분에서 동작한다. 제 2 층은 주 데이터 아카이브 저장소이며 더 느리고/더 낮은 내구성/더 낮은 비용의 메모리인 MLC 부분에서 동작한다.
도 8에 표기된 이러한 시스템에서 예시적 동작들은 다음과 같다:
1. SLC 부분에 호스트 데이터 또는 제어 데이터 기입.
2. 폐용 SLC 블록을 부분적으로 재활용하기 위해 SLC 부분 내에 데이터 카피, '콤팩트화'라고도 함.
3. 일반적으로 긴 순차적 기입들을 위해 사용되는 것으로, MLC 부분에 호스트 데이터의 직접적 기입.
4. 데이터가 SLC에서 MLC 부분으로 이동하는 것으로, '폴딩'이라고도 함.
5. MLC 블록 재활용을 위해 MLC 부분 내에 데이터 카피로서, 'MLC 콤팩트화'라고도 함.
동작들은 SLC 부분 및 MLC 부분의 사용에, 이에 따라 각각의 부분의 노화에 영향을 미친다. 이하 더 상세히 논의되는 바와 같이, 이들 동작들 각각은 하나 이상의 파라미터들에 의해 제어될 수 있다. 따라서, 하나 이상의 파라미터들의 수정은 동작을 수정할 수 있고, 이에 따라 SLC 부분 및/또는 MLC 부분의 노화 또는 노화 프로세스의 진행을 수정하고, 그럼으로써 SLC 부분과 MLC 부분 간에 마모 균형을 수정할 수 있다. 열거된 동작들은 단지 예시하기 위한 것이다. 서로 다른 메모리 시스템들은 서로 다른 동작들(이를테면 열거된 동작들 및/또는 서로 다른 동작들의 일부 또는 전부)을 가질 수 있다. 또한, 이외 다른 동작들이 고찰된다.
도 9는 도 8에 도시된 SLC 층을 더 상세히 도시한 것이다. SLC 층의 전형적인 구조는 복수의 블록들로서 일반적으로 한 개의 기입/업데이트 블록 데이터와 블록 재활용 동안 카피되는 데이터를 위한 한 개의 재배치/콤팩트화 블록을(혹은 이들은 조합될 수 있다) 사용한다. 위에 논의된 바와 같이, 하나 이상의 파라미터들은 SLC 부분 및/또는 MLC 부분 내에 각종 동작들에 영향을 줄 수 있다. 한 이러한 동작은 재배치/콤팩트화를 포함하는데, 이것은 다음의 규칙들에 의해 제어될 수 있다:
1. 블록들은 이들의 프로그램되었던 순서에 따라 체인으로 연결된다.
2. 최소로 최근에 프로그램된 블록이 SLC 이동/폴딩 블록으로서 선택되며, 이로부터 데이터는 MLC 기입 블록으로 이동/폴딩될 수 있다.
3. 최소 분량의 유효 데이터를 가진 블록이 SLC 재활용 블록으로서 선택되고, 이로부터 유효 데이터는 체인의 헤드에 연결하는 SLC 재배치 블록에 재배치된다.
4. SLC 이동 블록 또는 SLC 재배치 블록은 데이터 이동/폴딩 또는 블록 재활용 동작의 완료시 SLC 빈 블록 리스트에 추가된다.
이외에도, RAM과 같은 더 많은 유형들의 메모리 또는 제 3 유형의 비휘발성메모리(NVM)이 있다면, 2-층 구조는 사실상 2 이상의 층일 수 있다. 또한, 각 '메모리' 층에, 역시 '층'이라 지칭되는, 상이한 데이터 취급을 가진 복수의 부-시스템들이 있을 수도 있을 것이다.
NAND 메모리에 기반한 시스템들은 일반적으로 다음의 저장 계층을 갖는다. SLC 분할은 바이너리 캐시 및 바이너리 업데이트 블록들을 구현하기 위해 SLC 블록들을 갖는다. 바이너리 캐시는 일부 또는 모든 데이터를 위해 사용된다. 데이터는 1 또는 8개(4KB)의 섹터들의 미세한 입도를 갖고 바이너리 캐시에 저장된다. 전형적으로, 바이너리 캐시는 페이지의 작은 랜덤한 단편화들을 캐시하기 위해 사용된다. 이어 이것은 바이너리 업데이트 블록에 퇴거될 수 있다.
바이너리 업데이트 블록들은 논리 그룹의 유닛들에 대부분의 데이터를 매핑한다. 각 논리 그룹은 SLC 블록에 대응하는 크기를 갖는다. 따라서, 하나의 바이너리 블록은 페이지들이 논리 어드레스의 순차적 순서로 되어 있는 하나의 논리 그룹까지를 저장할 수 있다. 이 층은 클러스터-기반의 시스템들에서 모든 바이너리 블록들은 바이너리 캐시로서 사용되기 때문에 이들 시스템들에서는 존재하지 않는다.
MLC 분할들은 SLC 블록들보다는 더 높은 밀도로 데이터를 저장하기 위한 MLC 블록들을 갖는다. 전형적으로, 데이터는 MLC-블록씩으로 저장된다. 이에 따라, 예를 들면, D1 분할(SLC 내에 1 데이터 비트) 및 D3 분할(MLC 내에 3 데이터 비트들)을 가진 메모리에서, 3 SLC 블록들은 1 MLC 블록에 폴딩(재배치)된다.
바이너리 캐시에서 SLC 업데이트 블록들로 그리고 MLC 블록들로 데이터의 퇴거는 하나 이상의 기준들(이를테면 최소로 최근에 기입되는 것에)에 기초한다. 모든 시스템들에서 문제는 대부분의 데이터(예외는 바이너리 캐시 내에 있는 동안 업데이트되는 데이터이다)가 먼저 SLC 블록들로 가기 때문에 SLC 블록들이 거의 완전히 FIFO 버퍼로서 작동한다는 것이다. 이어서 모든 데이터가 MLC 블록들로 간다. SLC 부분 및 MLC 부분 둘 다에서, 데이터는 패딩(padding)(완전한 어드레싱 유닛을 만들기 위해)에 기인하여, 혹은 블록들을 콤팩트화하여 폐용 공간을 재활용하기 위해, 많은 횟수로 카피될 수 있다. 스트레스 팩터(기입 증폭이라고도 함)는 높으며 SLC 및 MLC 블록 분할들 모두에 적용된다. SLC 내 데이터는 또한 MLC(이중 할당) 내에 할당되는데, 이것은 이중-예산에 기인하여 시스템에서 블록들의 요구되는 수를 증가시킨다.
도 10은 서로 다른 메모리 분할들에 걸쳐(이를테면 바이너리 블록들(1002) 및 MLC 블록들(1004)에 걸쳐) 블록들 및 페이지들을 관리하기 위한 시스템 아키텍처를 도시한 것이다. 메모리 어레이들 내 블록들 및 페이지들은 시스템 제어기(118)(도 1 참조) 내 제어기 펌웨어(124)로서 상주하는 블록 관리 시스템에 의해 관리된다. 호스트 데이터량 및/또는 호스트 데이터의 유형은 호스트 데이터가 SLC 부분에 저장될 것인지 아니면 MLC 부분에 저장될 것인지, 혹은 SLC 부분 내에 어디에 호스트 데이터가 저장될 것인지를 판정할 수 있다. 특히, 데이터량은 호스트 데이터가 바이너리 캐시(적은 량의 호스트 데이터를 위한)에 저장될 것인지, 바이너리 블록들(중간 량의 호스트 데이터에 대해서) 내 업데이트 블록들에 저장될 것인지, 아니면 MLC(대량의 순차적 호스트 데이터에 대해서)에 저장될 것인지를 판정할 수 있다. 또한, 데이터(이를테면 파일 시스템 데이터)의 유형은 이하 논의되는 바와 같이, 호스트 데이터가 바이너리 블록들 내에 어디에 저장되는지를 판정할 수 있다.
바이너리 블록들(1002)은 2개의 층으로 분할될 수 있다. 제 1 층은 처음에는 호스트로부터의 데이터를 저장하고 SLC 부분의 제 2 층에 각 논리 그룹을 재배치하기 전에 메타페이지들을 논리-그룹씩으로 구성하기 위한 것이다. 제 1 층은 상주 바이너리 구역 및 바이너리 캐시인 2개의 구조들을 포함한다. 시스템 제어기(118)는 소정의 량, 이를테면 메타페이지 미만의 작은 단편들의 데이터를 바이너리 캐시(1006)에 보낼 수 있다. 이에 따라, 바이너리 캐시(1006)는 주로 미세한 어드레싱 유닛(섹터)을 가진 짧은 단편들을 위한 저장소이며, 데이터는 SLC 블록들 또는 MLC 블록들로 이동/퇴거될 수 있다. 바이너리 캐시(1006)는 오래된 데이터를 정돈(clean up)하기 위해 주기적으로 콤팩트화될 것이다(1008). 바이너리 캐시(1006)가 다 채워졌을 때, 퇴거를 위해 한 논리 그룹이 선택될 것이다(1010). 바이너리 캐시 퇴거의 내부 하우스키핑 기능은 논리 그룹을 업데이트 블록(1012)에 카피하고 이것을 이하 논의되는 바와 같이 MLC 업데이트 블록(1016)에 폴딩하기 위해 스케쥴링한다. 상주 바이너리 구역(1018)은 짧은 업데이트들로 기지의 빈번하게 업데이트되는 영역들을 위해서, 혹은 빈번한 업데이트들 또는 빠른 기입 수행을 요구하는 다른 논리 지역들, 전형적으로 NTFS, FAT 데이터 또는 이외 다른 파일 시스템 테이블 데이터를 위해 유보된다.
제 2 층은 SLC 업데이트/저장 블록들의 풀(pool)에 논리-그룹씩으로 데이터를 저장한다. 이 풀에의 기입들은 호스트 기입들로부터 혹은 가비지 수거에 기인한 재기입들로부터 온다. 호스트 데이터가 주로 짧은 단편으로 된 것이라면, 이것은 제 1 층에서 제 2 층(414)으로 퇴거되기 전에 먼저 제 1 층에 캐시된다. 호스트 데이터가 덜 단편화(중간 크기)된다면, 이 경우 완전한 논리 그룹을 가질 수 있게 되고, 제 2 층(414)에 곧바로 기입된다.
근본적으로, 제 2 층은, 단편화된 중간 크기 호스트 기입들이 놓여지는 고속 SLC 저장 영역을 제공한다. 따라서, 제 2 층은 고속 SLC 저장 영역 내에 작업중의 한 세트의 사용자 데이터를 유지한다. 이에 따라, 사용자는 SLC 업데이트/저장 블록들의 풀이 채워지고 있음에 따라 고 수행 기입들을 경험할 수 있다. 풀이 모두 채워졌을 때, 시스템 제어기(118)는 자리를 만들기 위해서 일부 논리 그룹들을 MLC 블록들(1004)로 이동시킬 수 있다.
도 11은 SLC-MLC 마모 균형 유지의 흐름도(1100)를 도시한 것이다. 1102에서, 시스템 제어기(118)는 SLC 부분 및/또는 MLC 부분에 대한 하나 이상의 노화 표시자들에 액세스할 수 있다. 노화 표시자들은 플래시 메모리 장치, 이를테면 시스템 제어기(118)(예를 들면, RAM 버퍼(212) 참조)에 연관된 비휘발성 메모리 내에 하나 이상의 장소들에 저장될 수 있다. 위에 논의된 바와 같이, P/E 사이클들; 남은 총 블록들의 수; 남은 예비들의 수/실패된 블록들의 수; ECC 기반의 비트 오류율(BER); 프로그램/소거 시간; CVD, 상태 시프트 레벨을 포함한, 다양한 노화 표시자들이 사용될 수 있다.
1104에서, 시스템 제어기(118)는 하나 이상의 노화 표시자들에 기초하여, SLC 부분 및/또는 MLC 부분의 동작을 수정할지 여부를 판정한다. 표시자들은 SLC 마모 대 MLC 마모의 바람직한 혹은 최적의 관계의 데이터 구조와 비교될 수 있고, 비교에 따라, SLC 부분 및/또는 MLC 부분의 동작을 수정할지 여부를 판정한다.
데이터 구조는 테이블, 그래프, 등을 포함할 수 있다. 일반적으로 말하여, 데이터 구조는 메모리 장치의 동작의 임의의 단계에서 MLC 부분과의 SLC 부분의 마모의 바람직한 균형을 나타낼 수 있다. 예를 들면, 데이터 구조는 SLC 블록들 및 MLC 블록들 모두가 소정의 상태(이를테면 메모리 장치에 대한 수명말기에서 P/E 사이클들의 최대 수)를 달성하도록 마모의 최상의 균형 곡선을 예측할 수 있다. 이에 따라, 메모리 장치는 개선된 내구 레벨을 달성할 수 있다. 데이터 구조는 마찬가지로 플래시 메모리 장치, 이를테면 시스템 제어기(118)(예를 들면, RAM 버퍼(212) 참조)에 연관된 비휘발성 메모리내 하나 이상의 장소들에 저장될 수 있다.
일실시예에서, 데이터 구조는 '마모 균형유지'(이하 더 상세히 논의된다)이 SLC 부분에 대한 마모를 MLC 부분과 균형이 유지되게 시도하도록 하는 데이터를 포함할 수 있다. 예를 들면, SLC 부분과 MLC 부분 간에 마모의 바람직한 비를 나타내는 데이터 구조는 소정의 상수 값일 수 있다. 또 다른 예로서, 데이터 구조가 SLC 마모가 한 축선 상에 있고 MLC 마모가 다른 축선 상에 있는 그래프이라면, 데이터 구조는 직선을 포함할 수 있고, 그럼으로써 메모리 장치의 동작의 모든 기간들 동안에 SLC 부분의 마모를 MLC 부분과 균형을 유지하려고 시도할 수 있다. 대안적 실시예에서, 데이터 구조는 균형이 유지되지 않은 SLC 부분 및 MLC 부분에 대한 마모를 포함할 수 있다. 예를 들면, 데이터 구조는 곡선 또는 구분적 선형 함수를 포함할 수 있는데, 이것은 많은 최적의 마모 구동을 포함할 수 있다. 곡선은 큰 풀의 블록들로 시작하고 작은 풀의 블록들로 끝나는 메모리 장치에 사용할 수 있다. 특히, MLC 예비 블록들의 수는 전형적으로 장치들이 노화됨에 따라 적어지게 되고, 그럼으로써 MLC 부분의 스트레스를 증가시킨다. 따라서, 최적의 곡선은 현재의 SLC 대 MLC 비의 마모의 균형을 유지하기 위해 요구되는 것 이상으로 메모리 장치의 수명의 시작에서 SLC 부분에 과응으로 스트레스를 가하는 것(더 나은 수행도 제공할 수 있는)을 포함할 수 있다. 이에 따라, 메모리 장치의 초기 동작 동안에 MLC 부분은 더 낮은 스트레스에서 동작하며 동작에 대한 가외의 마진을 갖는다. 메모리 장치가 이의 수명말기(EOL)를 향하여 감에 따라, MLC 부분 기입 증폭이 증가할 때, SLC 부분 및 MLC 부분 둘 다에서 마모는 EOL 지점에 가깝게 수렴할 것이다.
위에 논의된 바와 같이, 시스템 제어기(118)는 표시자들을 데이터 구조와 비교한다. 데이터 구조에 표시자들의 비교는 몇가지 형태들 중 하나일 수 있다. 일예로서, 비교에 앞서, 표시자들은 이를테면 SLC 노화 표시자 대 MLC 표시자의 비를 생성하게, 조합될 수도 있다. 그러면, 생성된 비는 데이터 구조와 비교될 수 있다. 특히, 데이터 구조가 소정의 비일 때, 소정의 비로부터 SLC 노화 표시자 대 MLC 노화 표시자의 비의 일탈량을 판정하기 위해 SLC 노화 표시자 대 MLC 노화 표시자의 비는 소정의 비와 비교될 수 있다. 대안적으로, 한 표시자는 데이터 구조에 입력될 수 있는데, 이어 이것은 다른 표시자의 바람직한 값을 출력할 수 있다. 예를 들면, SLC 노화 표시자는 데이터 구조에 입력될 수 있는데, 이어 이것은 바람직한 MLC 노화 표시자를 출력할 수 있다. 바람직한 노화 표시자는 데이터 구조에 입력된 SLC 노화 표시자에 대한 MLC 부분의 이상적인 노화를 나타낸다. 이어, 바람직한 MLC 노화 표시자는 실제 MLC 노화 표시자와 비교되어 둘 간에 차이를 판정할 수 있다. 노화 표시자들에 데이터 구조의 비교들의 예들은 단지 예시를 위한 것이다. 이외 다른 구현들이 고찰된다.
위에 논의된 바와 같이, 시스템 제어기(118)는 비교에 따라 SLC 부분 및/또는 MLC 부분의 동작을 수정할 것을 판정할 수 있다. 시스템 제어기(118)는 SLC 부분에만 영향을 미치는 메모리 장치에 의해 수행되는 동작을 수정할 수도 있고(그리고 이에 따라 SLC 부분의 마모를 수정한다), 혹은 MLC 부분에만 영향을 미치는 메모리 장치에 의해 수행되는 동작을 수정할 수도 있고(그리고 이에 따라 MLC 부분의 마모를 수정한다), 혹은 SLC 부분 및 MLC 부분 둘 다에 영향을 미치는 메모리 장치에 의해 수행되는 동작을 수정할 수도 있다(그리고 이에 따라 SLC 부분 및 MLC 부분 둘 다의 마모를 수정한다). 동작의 수정은 마찬가지로 부분들 중 하나 혹은 둘 다의 수행에 영향을 미칠 수도 있다.
특히, 동작의 수정은 메모리 장치의 수행에 부정적으로 영향을 미칠 수도 있다. 예를 들면, 이하 더 상세히 논의되는 바와 같이, 시스템 제어기는 SLC 부분에서 MLC 부분으로 더 앞서서 데이터를 폴딩하기로 결정하여, 그럼으로써 SLC 부분에서 콤팩트화하는 량을 감소시킬 수도 있는데(그리고 SLC 부분에서 마모를 감소시킬 수 있다), 그러나 수정은 시스템 수행을 감소시킬 수도 있다.
예를 들면, 시스템 제어기(118)는 바람직한 SLC-MLC 마모 균형과 실제 SLC-MLC 마모 균형 간에 판정된 차이에 기초하여 동작을 수정할지 여부를 판정할 수 있다. 소정의 비로부터 SLC 노화 표시자 대 MLC 노화 표시자의 비의 일탈량을 판정하기 위해 SLC 노화 표시자 대 MLC 노화 표시자의 비를 소정의 비와 비교하는 위에 논의된 예에서, 일탈량은 소정의 임계값와 비교될 수 있다. 일탈량이 소정의 임계값보다 크다면, 시스템 제어기(118)는 이하 더 상세히 논의되는 바와 같이 SLC 부분 및/또는 MLC 부분의 동작을 수정할 수 있다. 이에 따라, 수정은 마모 균형이 바람직한 마모 균형에 더 가깝도록 SLC 부분과 MLC 부분 간에 마모 균형을 변경시킬 수 있다. 바람직한 MLC 노화를 실제 MLC 노화 표시자와 비교하여 둘 간에 차이를 판정하는 비교하는 위에 논의된 예에서, 차이는 소정의 량과 비교될 수 있다. 차이가 소정의 량보다 크다면, 시스템 제어기(118)는 SLC 부분 및/또는 MLC 부분의 동작을 수정할 수 있다.
시스템 제어기(118)가 SLC 부분 및/또는 MLC 부분의 동작을 수정하기로 판정한다면, 시스템 제어기(118)는 하나 이상의 파라미터들을 수정할 수 있다. 시스템 제어기(118)는 하나 이상의 파라미터들 중 어느 것을 몇가지 방법들 중 하나로 수정할지를 판정할 수 있다. 일실시예에서, 시스템 제어기(118)는 수정할 하나의 소정의 파라미터(혹은 한 세트의 소정의 파라미터들)를 갖는다. 예를 들면, 제어기 펌웨어(124)는 이 내에 수정할 파라미터(들)을 가질 수도 있다. 대안적 실시예에서, 시스템 제어기는 도 12에 관하여 더 상세히 논의되는 바와 같이, 어느 파라미터(들)을 수정할지를 동적으로 판정할 수 있다. 파라미터들의 값들은 플래시 메모리 장치, 이를테면 시스템 제어기(118)(예를 들면, RAM 버퍼(212) 참조)에 연관된 비휘발성 메모리 내에 하나 이상의 장소들에 저장될 수 있다. 유사하게, 파라미터들의 수정된 값들은 시스템 제어기(118)에 연관된 비휘발성 메모리에 저장될 수 있다. 파라미터들의 수정된 값들은 SLC 부분 및/또는 MLC 부분 내 미래에 동작들을 제어하기 위해 사용될 수도 있다.
1106에서, 시스템 제어기(118)는 SLC 부분 및/또는 MLC 부분에 대해 위에 논의된 동작들에 영향을 미치는 파라미터(들)을 수정할 수 있다. 어느 것이든 이후에, 시스템 제어기(118)는 반복하기 위해 1102로 되돌아 갈 수 있다. 또한, 파라미터들의 수정 후에, 시스템 제어기(118)는 SLC 부분 및 MLC 부분의 동작들을 제어하는 파라미터들에 액세스하고, 부분들의 동작을 파라미터들에 기초하여 제어할 수 있다. 일예로서, 시스템 제어기(118)는 도 3에 관하여 위에 논의된 바와 같이, SLC 부분 및 MLC 부분의 동작들을 구현하기 위해서 메모리 다이(들)(120) 상에 여러 동작들을 제어하는 지령들을 발행할 수 있다. 일예로서, 시스템 제어기(118)는 이를테면 임계값을 증가 또는 감소시키거나 동작을 수행하기 위한 규칙을 변경하는 것과 같은, 동작을 수행하기 위한 임계값 또는 규칙을 수정할 수 있다. 임계값 또는 규칙에 변경의 효과에 따라, 시스템 제어기는 메모리 다이(들)(120) 상에 SLC 부분 및 MLC 부분의 동작에 영향을 미치는 메모리 다이(들)(120)에 서로 다른 지령들을 발행할 수 있다.
임계값을 수정하는 일예는 호스트 데이터를 어디에 기입할지를 판정하기 위한 임계값, 이를테면 상주 바이너리 구역(1018), 바이너리 캐시(1006), 바이너리 블록들 내 업데이트 블록, 및 MLC 블록들 내 업데이트 블록(1016)에 기입할 임계값이다. 특히, 시스템 제어기(118)는 도 10에 도시된 바와 같이, "짧은 기입", "중간 기입" 또는 "긴 순차적 기입"을 정의하는 임계값들을 수정할 수 있다. 이에 따라, 시스템 제어기(118)는 MLC 부분에 긴 순차적 기입들의 직접적 기입으로의 전환을 관리하는 오픈-엔드(open-ended) 기입 및 순차적 바이패스/직접 MLC 기입 임계값들을 수정할 수 있다.
또 다른 예는 MLC 부분 대 SLC 부분 상에 마모에 기초하여 콜드(cold) 데이터 퇴거 임계값을 수정하는 것이다. SLC 부분이 요망되는 것 이상으로 마모되고 있다면, 더 콜드한 데이터가 MLC 부분에 더 빨리 퇴거되어 그럼으로써 SLC 부분 상에 마모를 감소시키고 MLC 부분 상에 마모를 증가시키게 콜드 데이터 퇴거 임계값이 수정될 수 있다. 유사하게, MLC 부분이 요망되는 것 이상으로 마모되고 있다면, SLC 부분 내 유지된 콜드 데이터량이 증가되어 그럼으로써 SLC 부분에의 마모를 증가시키고 MLC 부분에의 마모를 감소시키게 콜드 데이터 퇴거 임계값이 수정될 수 있다.
또 다른 예는 시스템 제어기(118)이 처분하는 블록들의 수인, 바이너리 작업 세트 충만 임계값을 수정하는 것이다. 블록들의 수는 조절될 수 있고, 그럼으로써 각각의 부분의 동작에 영향을 미친한다. 유사하게, 폴딩 동작을 시작하게 하기 위한 임계값 -도 10 참조- 은 SLC 부분 및 MLC 부분의 사용에 영향을 미치게 조절될 수도 있다.
시스템 제어기(118)가 수정할 다른 예들은 핫(hot)/콜드 데이터 소팅(sorting) 및/또는 핫/콜드 데이터와 콤팩트화 스트림들 간에 데이터 흐름을 관리하는 임계값들 및/또는 규칙들; 핫/콜드 데이터 소팅 및/또는 상주 바이너리 구역(1018)에/로부터 데이터 흐름을 관리하기 위한 임계값들 및/또는 규칙들; 바이너리 캐시와 업데이트 블록들 간에 데이터를 분배하는, 바이너리 캐시 기입 임계값; 바이너리 캐시 퇴거 임계값; BC 크기 대 UB/BWS 풀 크기; SLC에 비해 MLC로의 바이너리 캐시 퇴거; 및 아이들 시간 선제 가비지 수거 동작 깊이를 포함한다. 수정하는 예들은 단지 예시하기 위한 것이다. SLC 부분 및/또는 MLC 부분의 동작을 수정하는 다른 방법들이 고찰된다.
도 12는 SLC-MLC 마모 균형유지의 또 다른 흐름도(1200)를 도시한 것이다. 1202에서, 시스템 제어기(118)는 SLC 부분에 대한 노화 표시자 및 MLC 부분에 대한 노화 표시자 둘 다에 액세스한다. 1204에서, 시스템 제어기(118)는 SLC 부분 및/또는 MLC 부분의 동작을 수정할지 여부를 판정하기 위해 SLC 부분 및 MLC 부분에 대한 노화 표시자들 및 SLC 부분과 MLC 부분 간에 이상적인 마모 균형의 데이터 구조를 사용한다. 위에 논의된 바와 같이, 표시자들은 SLC 마모 대 MLC 마모의 바람직한 혹은 최적의 관계의 데이터 구조와 비교될 수 있고, 비교에 따라, SLC 부분 및/또는 MLC 부분의 동작을 수정할지 여부를 판정한다.
1206에서, SLC 부분 및/또는 MLC 부분의 동작을 수정하기로 판정된다면, 시스템 제어기(118)는 수정할 하나 이상의 파라미터들을 선택한다. 위에 논의된 바와 같이, 특정 메모리 장치는 SLC 부분 및/또는 MLC 부분에 대해 수행되는 동작들을 갖는다. 동작들은 파라미터들에 의해 제어될 수 있다. 시스템 제어기(118)는 변경할 하나 이상의 파라미터들을 선택할 수 있다. 수정할 하나 이상의 파라미터들의 선택은 이를테면 SLC 부분 및/또는 MLC 부분의 노화 표시자와는 무관하게, 정적일 수도 있다. 예를 들면, 시스템 제어기(118)가 동작을 수정하기로 판정한 후에, 시스템 제어기(118)는 위에 논의된 바와 같이, 수정할 사전에 프로그램된 하나 이상의 파라미터들에 액세스할 수 있다. 대안적으로, 수정할 하나 이상의 파라미터들의 선택은 동적일 수도 있다. 예를 들면, 수정할 하나 이상의 파라미터들의 선택은 SLC 부분 및/또는 MLC 부분의 노화 표시자에 기초할 수 있다.
1208에서, 시스템 제어기(118)는 선택된 하나 이상의 파라미터들을 어떻게 수정할지를 판정한다. 선택된 하나 이상의 파라미터들 각각은 한 범위의 잠재적 수정들에 연관되어졌을 수 있다. 선택된 파라미터를 어떻게 수정할지의 판정은 하나 이상의 인자들, 이를테면 현재의 SLC-MLC 마모 균형 또는 이상적인 SLC-MLC 마모 균형으로부터 현재의 SLC-MLC 마모 균형의 일탈에 기초할 수 있다. 1210에서, 시스템 제어기(118)는 선택된 파라미터들의 판정된 수정들을 사용하여 SLC 부분 및/또는 MLC 부분의 동작을 수정한다.
따라서, 방법 및 시스템은 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어와의 조합으로 실현될 수 있다. 방법 및 시스템은 적어도 한 전자 장치(도 1에 플래시 메모리 장치(102)에 도시된 것과 같은) 내 중앙집중 방식으로 혹은 서로 다른 요소들이 몇몇의 상호연결된 컴퓨터 시스템들에 걸쳐 분산되는 분산 방식으로 실현될 수 있다. 본원에 기술된 방법들을 수행하게 개조된 임의의 종류의 컴퓨터 시스템 또는 이외 다른 장치가 적합하다. 하드웨어와 소프트웨어와의 전형적인 조합은 로딩되어 실행되었을 때 본원에 기술된 방법들을 수행하게 컴퓨터 시스템을 제어하는 컴퓨터 프로그램을 가진 범용 컴퓨터 시스템일 수 있다. 이러한 프로그램된 컴퓨터는 전용 컴퓨터로서 간주될 수도 있다.
또한, 방법 및 시스템은, 본원에 기술된 동작들을 구현할 수 있게 하는 모든 특징들을 포함하고 컴퓨터 시스템에 로딩되었을 때 이들 동작들을 수행할 수 있는 컴퓨터 프로그램 제품 내에 내장될 수도 있다. 본 맥락에서 컴퓨터 프로그램은 곧바로, 혹은 a) 또 다른 언어, 코드 또는 표기로의 변환, b) 다른 자료 형태로 재생성 중 어느 하나 혹은 둘 다 후에, 정보 처리 능력을 가진 시스템이 특정 기능을 수행하게 하게 의도된 한 세트의 명령들의 임의의 표현, 임의의 언어로, 코드 또는 표기를 의미한다.
위에 개시된 요체는 제약이 아니라 예시로 간주되어야 하며, 첨부된 청구항들은 본 발명의 정신 및 범위 내에 더는 모든 이러한 수정들, 향상들 및 다른 실시예들을 포함하게 의도된다. 이에 따라, 법에 의해 허용되는 최대 범위까지, 본 실시예들의 범위는 다음 청구항들 및 이들의 등가물들의 가장 넓은 허용가능한 해석에 의해 판정되어야 하며, 전술한 상세한 설명에 의해 제약되거나 한정되지 않을 것이다. 여러 실시예들이 기술되었지만, 더 많은 실시예들 및 구현들이 위에 상세한 설명의 범위 내에서 가능함이 당업자들에게 명백할 것이다. 따라서, 실시예들은 첨부된 청구항들 및 이들의 등가물들에 비추어 제약되지 않아야 한다.

Claims (24)

  1. 플래시 저장 장치에서 단일 레벨 셀(SLC) 부분 및 복수-레벨 셀(MLC) 부분의 사용을 관리하기 위한 방법에 있어서, 상기 방법은
    제어기 및 상기 제어기와 통신하며 상기 SLC 부분 및 상기 MLC 부분을 포함하는 메모리를 갖는 상기 플래시 저장 장치에서,
    상기 플래시 저장 장치에 대한 노화 표시자에 액세스하는 단계;
    상기 노화 표시자에 기초하여, 상기 SLC 부분 또는 상기 MLC 부분 중 적어도 한 부분의 동작을 수정할지 여부를 판정하는 단계; 및
    상기 SLC 부분 또는 상기 MLC 부분 중 적어도 한 부분의 동작을 수정할지 여부를 판정한 것에 응하여, 상기 SLC 부분 또는 상기 MLC 부분 중 상기 적어도 한 부분의 상기 동작을 수정하는 단계를 포함하는, 방법.
  2. 제 1 항에 있어서, 상기 플래시 저장 장치에 대한 상기 노화 표시자는 상기 SLC 부분 또는 상기 MLC 부분의 일부 또는 전부에 대한 노화 표시자를 포함하는, 방법.
  3. 제 1 항에 있어서, 상기 플래시 저장 장치에 대한 노화 표시자에 액세스하는 단계는
    상기 SLC 부분의 적어도 일부의 노화를 나타내는 SLC 노화 표시자에 액세스하는 단계; 및
    상기 MLC 부분의 적어도 일부의 노화를 나타내는 MLC 노화 표시자에 액세스하는 단계를 포함하고,
    상기 SLC 부분 또는 상기 MLC 부분 중 적어도 한 부분의 상기 동작을 수정할지 여부를 판정하는 단계는 상기 SLC 노화 표시자 및 상기 MLC 노화 표시자 둘 다에 기초하는, 방법.
  4. 제 1 항에 있어서, 상기 노화 표시자는, 분할(논리 또는 SLC/MLC)당 개별적인 혹은 평균의 P/E 블록 카운트들; 남은 총 블록들의 수; 남은 예비들의 수/실패된 블록들의 수; ECC 기반의 비트 오류율(BER); 프로그램/소거 시간; CVD, 상태 시프트 레벨, 중 하나 이상을 포함하는, 방법.
  5. 제 1 항에 있어서, 상기 노화 표시자에 기초하여, 상기 SLC 부분 또는 상기 MLC 부분 중 적어도 한 부분의 동작을 수정할지 여부는
    바람직한 SLC 마모 대 MLC 마모를 나타내는 데이터 구조에 상기 노화 표시자를 비교하는 단계; 및
    상기 비교에 기초하여 상기 동작을 수정하기로 판정하는 단계를 포함하는, 방법.
  6. 제 5 항에 있어서, 상기 바람직한 SLC 마모 대 MLC 마모를 나타내는 상기 데이터 구조는 상기 SLC 부분 및 상기 MLC 부분이 상기 플래시 저장 장치의 수명말기에서 P/E 사이클들의 최대수에 도달하도록 마모를 나타내는 데이터를 포함하는, 방법.
  7. 제 1 항에 있어서, 상기 SLC 부분 또는 상기 MLC 부분 중 상기 적어도 한 부분의 상기 동작은 파라미터에 기초하며;
    상기 SLC 부분 또는 상기 MLC 부분 중 상기 적어도 한 부분의 상기 동작은 상기 파라미터의 값을 변경하는 단계를 포함하는, 방법.
  8. 제 7 항에 있어서, 상기 파라미터는 상기 SLC 부분에서 상기 MLC 부분으로 콜드(cold) 데이터 퇴거에 대한 임계값을 포함하는, 방법.
  9. 제 7 항에 있어서, 상기 파라미터는 호스트 데이터를 상기 MLC 부분 또는 상기 SLC 부분으로 기입할지 여부를 판정하기 위한 하나 이상의 임계값들을 포함하는, 방법.
  10. 제 1 항에 있어서, 상기 SLC 부분 또는 상기 MLC 부분 중 상기 적어도 한 부분의 상기 동작은 복수의 파라미터들에 기초하며;
    수정할 상기 복수의 파라미터들 중 하나 이상을 판정하는 단계를 더 포함하며;
    상기 SLC 부분 또는 상기 MLC 부분 중 상기 적어도 한 부분의 상기 동작은 상기 판정된 하나 이상의 복수의 파라미터들을 수정하는 단계를 포함하는, 방법.
  11. 제 10 항에 있어서, 상기 플래시 저장 장치에 대한 상기 노화 표시자는 상기 SLC 부분 또는 상기 MLC 부분의 일부 또는 전부에 대한 노화 표시자를 포함하며;
    수정할 상기 복수의 파라미터들 중 상기 하나 이상을 판정하는 단계는 상기 SLC 노화 표시자 및 상기 MLC 노화 표시자에 기초하는, 방법.
  12. 제 10 항에 있어서, 하나 이상의 복수의 파라미터들을 판정하기 위한 하나 이상의 값들을 선택하는 단계를 더 포함하고;
    상기 판정된 하나 이상의 복수의 파라미터들을 수정하는 단계는 상기 판정된 하나 이상의 복수의 파라미터들을 수정하기 위해 상기 선택된 하나 이상의 값들을 사용하는 단계를 포함하는, 방법.
  13. 저장 장치에 있어서,
    단일 레벨 셀(SLC) 부분 및 복수-레벨 셀(MLC) 부분을 포함하는 메모리; 및
    상기 플래시 저장 장치에 대한 노화 표시자에 액세스하고, 상기 노화 표시자에 기초하여, 상기 SLC 부분 또는 상기 MLC 부분 중 적어도 한 부분의 동작을 수정할지 여부를 판정하고, 상기 SLC 부분 또는 상기 MLC 부분 중 적어도 한 부분의 동작을 수정할지 여부를 판정한 것에 응하여, 상기 SLC 부분 또는 상기 MLC 부분 중 상기 적어도 한 부분의 상기 동작을 수정하게 구성된, 상기 메모리와 통신하는 제어기를 포함하는, 저장 장치.
  14. 제 13 항에 있어서, 상기 플래시 저장 장치에 대한 상기 노화 표시자는 상기 SLC 부분 또는 상기 MLC 부분의 일부 또는 전부에 대한 노화 표시자를 포함하는, 저장 장치.
  15. 제 13 항에 있어서, 상기 제어기는
    상기 SLC 부분의 적어도 일부의 노화를 나타내는 SLC 노화 표시자에 액세스하고;
    상기 MLC 부분의 적어도 일부의 노화를 나타내는 MLC 노화 표시자에 액세스하게 구성되고;
    상기 제어기는 상기 SLC 부분 또는 상기 MLC 부분 중 적어도 한 부분의 상기 동작을 수정할지 여부를 상기 SLC 노화 표시자 및 상기 MLC 노화 표시자 둘 다에 기초하여 판정하게 구성된, 저장 장치.
  16. 제 13 항에 있어서, 상기 노화 표시자는, 분할(논리 또는 SLC/MLC)당 개별적인 혹은 평균의 P/E 블록 카운트들; 남은 총 블록들의 수; 남은 예비들의 수/실패된 블록들의 수; ECC 기반의 비트 오류율(BER); 프로그램/소거 시간; CVD, 상태 시프트 레벨, 중 하나 이상을 포함하는, 저장 장치.
  17. 제 13 항에 있어서, 상기 제어기는 상기 노화 표시자에 기초하여, 상기 SLC 부분 또는 상기 MLC 부분 중 적어도 한 부분의 동작을 수정할지 여부를, 바람직한 SLC 마모 대 MLC 마모를 나타내는 데이터 구조에 상기 노화 표시자를 비교하고, 상기 비교에 기초하여 상기 동작을 수정하기로 판정함으로써, 판정하게 구성된, 저장 장치.
  18. 제 17 항에 있어서, 상기 바람직한 SLC 마모 대 MLC 마모를 나타내는 상기 데이터 구조는 상기 SLC 부분 및 상기 MLC 부분이 상기 저장 장치의 수명말기에서 P/E 사이클들의 최대수에 도달하도록 마모를 나타내는 데이터를 포함하는, 저장 장치.
  19. 제 13 항에 있어서, 상기 SLC 부분 또는 상기 MLC 부분 중 상기 적어도 한 부분의 상기 동작은 파라미터에 기초하며;
    상기 SLC 부분 또는 상기 MLC 부분 중 상기 적어도 한 부분의 상기 동작을 상기 파라미터의 값을 변경함으로써 수정하게 구성된, 저장 장치.
  20. 제 19 항에 있어서, 상기 파라미터는 상기 SLC 부분에서 상기 MLC 부분으로 콜드 데이터 퇴거에 대한 임계값을 포함하는, 저장 장치.
  21. 제 19 항에 있어서, 상기 파라미터는 호스트 데이터를 상기 MLC 부분 또는 상기 SLC 부분으로 기입할지 여부를 판정하기 위한 하나 이상의 임계값들을 포함하는, 저장 장치.
  22. 제 13 항에 있어서, 상기 SLC 부분 또는 상기 MLC 부분 중 상기 적어도 한 부분의 상기 동작은 복수의 파라미터들에 기초하며;
    상기 제어기는 수정할 상기 복수의 파라미터들 중 하나 이상을 판정하게 더욱 구성되고;
    상기 제어기는 상기 SLC 부분 또는 상기 MLC 부분 중 상기 적어도 한 부분의 상기 동작을 상기 판정된 하나 이상의 복수의 파라미터들을 수정하게 구성된, 저장 장치.
  23. 제 22 항에 있어서, 상기 플래시 저장 장치에 대한 상기 노화 표시자는 상기 SLC 부분 또는 상기 MLC 부분의 일부 또는 전부에 대한 노화 표시자를 포함하며;
    상기 제어기는 수정할 상기 복수의 파라미터들 중 상기 하나 이상을 상기 SLC 노화 표시자 및 상기 MLC 노화 표시자에 기초하여 판정하게 구성된, 저장 장치.
  24. 제 22 항에 있어서, 상기 제어기는 하나 이상의 복수의 파라미터들을 판정하기 위한 하나 이상의 값들을 선택하게 더욱 구성되고;
    상기 제어기는 상기 판정된 하나 이상의 복수의 파라미터들을 상기 판정된 하나 이상의 복수의 파라미터들을 수정하기 위해 상기 선택된 하나 이상의 값들을 사용하여 수정하게 구성된, 저장 장치.
KR1020147019648A 2011-12-29 2012-12-19 Slc-mlc 마모 균형유지 KR20140119701A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/340,446 2011-12-29
US13/340,446 US9176862B2 (en) 2011-12-29 2011-12-29 SLC-MLC wear balancing
PCT/US2012/070467 WO2013101573A1 (en) 2011-12-29 2012-12-19 Slc-mlc wear balancing

Publications (1)

Publication Number Publication Date
KR20140119701A true KR20140119701A (ko) 2014-10-10

Family

ID=47557512

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147019648A KR20140119701A (ko) 2011-12-29 2012-12-19 Slc-mlc 마모 균형유지

Country Status (6)

Country Link
US (1) US9176862B2 (ko)
JP (1) JP2015503798A (ko)
KR (1) KR20140119701A (ko)
CN (1) CN104126178A (ko)
TW (1) TW201342057A (ko)
WO (1) WO2013101573A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170003779A (ko) * 2015-06-30 2017-01-10 삼성전자주식회사 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치
US9799407B2 (en) 2015-09-02 2017-10-24 Samsung Electronics Co., Ltd. Method for operating storage device managing wear level depending on reuse period
US9837167B2 (en) 2015-08-24 2017-12-05 Samsung Electronics Co., Ltd. Method for operating storage device changing operation condition depending on data reliability
US10127984B2 (en) 2015-08-24 2018-11-13 Samsung Electronics Co., Ltd. Method for operating storage device determining wordlines for writing user data depending on reuse period

Families Citing this family (99)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI486765B (zh) * 2012-06-11 2015-06-01 Phison Electronics Corp 記憶體管理方法、記憶體控制器與記憶體儲存裝置
KR102147359B1 (ko) * 2012-06-29 2020-08-24 삼성전자 주식회사 비휘발성 메모리 장치의 관리 방법 및 비휘발성 메모리 장치
KR101929584B1 (ko) * 2012-06-29 2018-12-17 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
US9734911B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for asynchronous die operations in a non-volatile memory
US9348746B2 (en) 2012-12-31 2016-05-24 Sandisk Technologies Method and system for managing block reclaim operations in a multi-layer memory
US9734050B2 (en) * 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for managing background operations in a multi-layer memory
US9336133B2 (en) 2012-12-31 2016-05-10 Sandisk Technologies Inc. Method and system for managing program cycles including maintenance programming operations in a multi-layer memory
US9465731B2 (en) 2012-12-31 2016-10-11 Sandisk Technologies Llc Multi-layer non-volatile memory system having multiple partitions in a layer
US9223693B2 (en) 2012-12-31 2015-12-29 Sandisk Technologies Inc. Memory system having an unequal number of memory die on different control channels
US20140223086A1 (en) * 2013-02-06 2014-08-07 Curiositate, Inc. Rapid reading from memory devices
US10042750B2 (en) 2013-03-15 2018-08-07 Micron Technology, Inc. Apparatuses and methods for adaptive control of memory using an adaptive memory controller with a memory management hypervisor
US9632926B1 (en) * 2013-05-16 2017-04-25 Western Digital Technologies, Inc. Memory unit assignment and selection for internal memory operations in data storage systems
US9063671B2 (en) * 2013-07-02 2015-06-23 Sandisk Technologies Inc. Write operations with full sequence programming for defect management in nonvolatile memory
CN107423231B (zh) 2013-08-05 2020-11-20 慧荣科技股份有限公司 用来管理一记忆装置的方法以及记忆装置与控制器
TWI523016B (zh) * 2013-08-05 2016-02-21 慧榮科技股份有限公司 用來管理一記憶裝置之方法以及記憶裝置與控制器
CN107741913B (zh) 2013-08-05 2021-09-07 慧荣科技股份有限公司 用来管理一记忆装置的方法、记忆装置与控制器
US20150046664A1 (en) * 2013-08-08 2015-02-12 SMART Storage Systems, Inc. Storage Control System with Settings Adjustment Mechanism and Method of Operation Thereof
KR102140512B1 (ko) * 2013-10-16 2020-08-03 삼성전자주식회사 불휘발성 메모리 장치, 불휘발성 메모리 장치를 포함하는 불휘발성 메모리 시스템 및 불휘발성 메모리 시스템의 동작 방법
US9298608B2 (en) * 2013-10-18 2016-03-29 Sandisk Enterprise Ip Llc Biasing for wear leveling in storage systems
US9558124B2 (en) * 2013-11-08 2017-01-31 Seagate Technology Llc Data storage system with passive partitioning in a secondary memory
US9099185B2 (en) 2013-12-20 2015-08-04 Seagate Technology Llc Using different programming modes to store data to a memory cell
US9811457B2 (en) * 2014-01-16 2017-11-07 Pure Storage, Inc. Data placement based on data retention in a tiered storage device system
US8874835B1 (en) * 2014-01-16 2014-10-28 Pure Storage, Inc. Data placement based on data properties in a tiered storage device system
KR102180595B1 (ko) * 2014-02-06 2020-11-19 삼성전자주식회사 불휘발성 메모리 장치의 동작 방법 및 불휘발성 메모리 시스템
US20150261444A1 (en) * 2014-03-12 2015-09-17 Kabushiki Kaisha Toshiba Memory system and information processing device
KR102289919B1 (ko) * 2014-04-15 2021-08-12 삼성전자주식회사 스토리지 컨트롤러, 스토리지 장치, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US10353598B2 (en) * 2014-10-06 2019-07-16 Sandisk Technologies Llc System and method for refreshing data in a memory device
KR102295208B1 (ko) * 2014-12-19 2021-09-01 삼성전자주식회사 프로그램 영역을 동적으로 할당하는 저장 장치 및 그것의 프로그램 방법
US9418000B2 (en) * 2014-12-22 2016-08-16 Intel Corporation Dynamically compensating for degradation of a non-volatile memory device
US20160225459A1 (en) * 2015-01-30 2016-08-04 Micron Technology, Inc. Apparatuses operable in multiple power modes and methods of operating the same
US10055267B2 (en) * 2015-03-04 2018-08-21 Sandisk Technologies Llc Block management scheme to handle cluster failures in non-volatile memory
US10318375B2 (en) 2015-03-20 2019-06-11 Burlywood, LLC Configurable multi-level error correction in a storage controller
US10008250B2 (en) * 2015-03-27 2018-06-26 Intel Corporation Single level cell write buffering for multiple level cell non-volatile memory
TWI564901B (zh) * 2015-04-30 2017-01-01 群聯電子股份有限公司 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置
US9996299B2 (en) * 2015-06-25 2018-06-12 Western Digital Technologies, Inc Memory health monitoring
US10061516B2 (en) 2015-09-25 2018-08-28 Intel Corporation Methods and apparatus to configure performance of a solid state drive based on host write bandwidth
US10126958B2 (en) * 2015-10-05 2018-11-13 Intel Corporation Write suppression in non-volatile memory
US9778855B2 (en) 2015-10-30 2017-10-03 Sandisk Technologies Llc System and method for precision interleaving of data writes in a non-volatile memory
US10133490B2 (en) 2015-10-30 2018-11-20 Sandisk Technologies Llc System and method for managing extended maintenance scheduling in a non-volatile memory
US10042553B2 (en) 2015-10-30 2018-08-07 Sandisk Technologies Llc Method and system for programming a multi-layer non-volatile memory having a single fold data path
US10120613B2 (en) 2015-10-30 2018-11-06 Sandisk Technologies Llc System and method for rescheduling host and maintenance operations in a non-volatile memory
US9530491B1 (en) * 2015-11-16 2016-12-27 Sandisk Technologies Llc System and method for direct write to MLC memory
TWI582776B (zh) * 2016-01-04 2017-05-11 群聯電子股份有限公司 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置
CN106959818B (zh) * 2016-01-11 2020-03-31 群联电子股份有限公司 数据写入方法、存储器控制电路单元与存储器储存装置
TWI652572B (zh) 2016-03-31 2019-03-01 慧榮科技股份有限公司 資料儲存裝置
US9792995B1 (en) 2016-04-26 2017-10-17 Sandisk Technologies Llc Independent multi-plane read and low latency hybrid read
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
KR102550343B1 (ko) * 2016-07-27 2023-07-03 삼성전자주식회사 솔리드 스테이트 드라이브 장치 및 그것의 동작 방법
US10229000B2 (en) 2016-08-09 2019-03-12 Seagate Llc Erasure codes to prevent lower page corruption in flash memory
US10359933B2 (en) 2016-09-19 2019-07-23 Micron Technology, Inc. Memory devices and electronic systems having a hybrid cache including static and dynamic caches with single and multiple bits per cell, and related methods
US20180165032A1 (en) * 2016-12-14 2018-06-14 Western Digital Technologies, Inc. Read write performance for nand flash for archival application
US9865357B1 (en) * 2016-12-30 2018-01-09 Intel Corporation Performing read operations on a memory device
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US10209914B2 (en) * 2017-01-31 2019-02-19 Sandisk Technologies Llc System and method for dynamic folding or direct write based on block health in a non-volatile memory system
CN106951186B (zh) * 2017-03-07 2020-02-07 合肥兆芯电子有限公司 数据程序化方法、存储器存储装置及存储器控制电路单元
US10380018B2 (en) * 2017-04-04 2019-08-13 Micron Technology, Inc. Garbage collection
US10325668B2 (en) * 2017-04-05 2019-06-18 Micron Technology, Inc. Operation of mixed mode blocks
US10572388B2 (en) 2017-08-30 2020-02-25 Micron Technology, Inc. Managed NVM adaptive cache management
US10545685B2 (en) 2017-08-30 2020-01-28 Micron Technology, Inc. SLC cache management
JP7030463B2 (ja) 2017-09-22 2022-03-07 キオクシア株式会社 メモリシステム
TWI653632B (zh) * 2017-09-29 2019-03-11 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置
US10372342B2 (en) * 2017-10-02 2019-08-06 Western Digital Technologies, Inc. Multi-level cell solid state device and method for transferring data between a host and the multi-level cell solid state device
CN109669620B (zh) * 2017-10-13 2021-11-30 群联电子股份有限公司 存储器管理方法、存储器控制电路单元及存储器储存装置
US10431319B2 (en) * 2017-11-03 2019-10-01 Micron Technology, Inc. Selectable trim settings on a memory device
US10521146B1 (en) 2017-11-09 2019-12-31 Micron Technology, Inc. UFS based idle time garbage collection management
US10795827B2 (en) * 2017-11-17 2020-10-06 Western Digital Technologies, Inc. Adaptive management of intermediate storage
KR102469174B1 (ko) * 2018-01-11 2022-11-23 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10726922B2 (en) 2018-06-05 2020-07-28 Sandisk Technologies Llc Memory device with connected word lines for fast programming
US10636487B2 (en) 2018-06-05 2020-04-28 Sandisk Technologies Llc Memory device with bit lines disconnected from NAND strings for fast programming
US10713158B2 (en) 2018-06-28 2020-07-14 Western Digital Technologies, Inc. Non-volatile storage system with dynamic allocation of applications to memory based on usage monitoring
US11069425B2 (en) * 2018-08-21 2021-07-20 Intel Corporation Multi-level memory repurposing technology to process a request to modify a configuration of a persistent storage media
US10896724B2 (en) 2018-12-18 2021-01-19 Western Digital Technologies, Inc. Non-volatile storage system with reduced program transfers
TWI734063B (zh) * 2019-01-02 2021-07-21 慧榮科技股份有限公司 快閃記憶體控制器、管理快閃記憶體模組的方法及相關的電子裝置
US10817187B2 (en) * 2019-01-24 2020-10-27 Western Digital Technologies, Inc. Balancing the block wearing leveling for optimum SSD endurance
JP2022537520A (ja) * 2019-06-14 2022-08-26 華為技術有限公司 ハードディスク制御方法及び関連デバイス
US11182089B2 (en) 2019-07-01 2021-11-23 International Business Machines.Corporation Adapting memory block pool sizes using hybrid controllers
US11023150B2 (en) 2019-07-01 2021-06-01 International Business Machines Corporation Block mode toggling using hybrid controllers
KR20210016227A (ko) * 2019-08-02 2021-02-15 삼성전자주식회사 빠른 쓰기 및 빠른 읽기를 지원하기 위한 복수의 버퍼 영역들을 포함하는 메모리 장치 및 이를 포함하는 스토리지 장치
KR20210025249A (ko) 2019-08-27 2021-03-09 삼성전자주식회사 메모리 시스템 및 그 동작 방법
US11069417B2 (en) 2019-08-27 2021-07-20 Samsung Electronics Co., Ltd. Memory system and method of operating the same
US11567670B2 (en) 2019-10-25 2023-01-31 Samsung Electronics Co., Ltd. Firmware-based SSD block failure prediction and avoidance scheme
US11037641B1 (en) 2019-12-05 2021-06-15 Sandisk Technologies Llc Temperature and cycling dependent refresh operation for memory cells
US20200125495A1 (en) * 2019-12-19 2020-04-23 Intel Corporation Multi-level memory with improved memory side cache implementation
US11416177B2 (en) * 2020-08-11 2022-08-16 Micron Technology, Inc. Memory sub-system storage mode control
US11500753B2 (en) 2020-09-02 2022-11-15 Samsung Electronics Co., Ltd. Multi-non-volatile memory solid state drive block-level failure prediction with unified device log
KR20220048569A (ko) * 2020-10-13 2022-04-20 에스케이하이닉스 주식회사 메모리 시스템에서 저장 공간을 제어하는 장치 및 방법
KR20220069543A (ko) * 2020-11-20 2022-05-27 삼성전자주식회사 스토리지 장치, 스토리지 컨트롤러 및 이를 포함하는 스토리지 시스템
US11494299B2 (en) 2021-02-18 2022-11-08 Silicon Motion, Inc. Garbage collection operation management with early garbage collection starting point
WO2022193231A1 (en) * 2021-03-18 2022-09-22 Micron Technology, Inc. Dynamic memory management operation
US20220300184A1 (en) * 2021-03-19 2022-09-22 Silicon Motion, Inc. Method of performing wear-leveling operation in flash memory and related controller and storage system
US11456042B1 (en) 2021-04-13 2022-09-27 Sandisk Technologies Llc Multi-level program pulse for programming single level memory cells to reduce damage
CN113220241A (zh) * 2021-05-27 2021-08-06 衢州学院 一种基于跨层设计的混合ssd性能与寿命优化方法
US11798643B1 (en) 2022-03-15 2023-10-24 Western Digital Technologies, Inc. Non-volatile storage system with hybrid SLC wear leveling
CN115185471B (zh) * 2022-09-05 2022-12-23 北京得瑞领新科技有限公司 Nand闪存颗粒及其逻辑单元筛选方法、电子设备

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8078794B2 (en) 2000-01-06 2011-12-13 Super Talent Electronics, Inc. Hybrid SSD using a combination of SLC and MLC flash memory arrays
US8452912B2 (en) * 2007-10-11 2013-05-28 Super Talent Electronics, Inc. Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read
DE602004023209D1 (de) * 2003-07-30 2009-10-29 Sandisk Il Ltd Verfahren und system zur optimierung von zuverlässigkeit und leistungsfähigkeit von programmierdaten in nichtflüchtigen speicherbausteinen
US8321597B2 (en) * 2007-02-22 2012-11-27 Super Talent Electronics, Inc. Flash-memory device with RAID-type controller
KR100857761B1 (ko) 2007-06-14 2008-09-10 삼성전자주식회사 웨어 레벨링을 수행하는 메모리 시스템 및 그것의 쓰기방법
US20090043831A1 (en) * 2007-08-11 2009-02-12 Mcm Portfolio Llc Smart Solid State Drive And Method For Handling Critical Files
US8566504B2 (en) * 2007-09-28 2013-10-22 Sandisk Technologies Inc. Dynamic metablocks
TW200917277A (en) * 2007-10-15 2009-04-16 A Data Technology Co Ltd Adaptive hybrid density memory storage device and control method thereof
US8281061B2 (en) * 2008-03-31 2012-10-02 Micron Technology, Inc. Data conditioning to improve flash memory reliability
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US8195899B2 (en) * 2008-09-26 2012-06-05 Micron Technology, Inc. Memory cell operation
CN101685675B (zh) * 2008-09-26 2014-01-15 美光科技公司 存储器单元操作
KR101548175B1 (ko) * 2008-11-05 2015-08-28 삼성전자주식회사 싱글 레벨 메모리 셀 블락과 멀티 레벨 메모리 셀 블락을 포함하는 불휘발성 메모리 장치의 마모 레벨링 방법
US8244960B2 (en) * 2009-01-05 2012-08-14 Sandisk Technologies Inc. Non-volatile memory and method with write cache partition management methods
US8026544B2 (en) 2009-03-30 2011-09-27 Sandisk Technologies Inc. Fabricating and operating a memory array having a multi-level cell region and a single-level cell region
US9021177B2 (en) * 2010-04-29 2015-04-28 Densbits Technologies Ltd. System and method for allocating and using spare blocks in a flash memory
US20120185638A1 (en) * 2011-01-14 2012-07-19 Daniel Schreiber Method and system for cache endurance management
US8458133B2 (en) * 2011-01-24 2013-06-04 Apple Inc. Coordinating sync points between a non-volatile memory and a file system
US8984032B2 (en) * 2011-12-15 2015-03-17 Sandisk Technologies Inc. Method and system for providing storage device file location information
US8806111B2 (en) * 2011-12-20 2014-08-12 Fusion-Io, Inc. Apparatus, system, and method for backing data of a non-volatile storage device using a backing store

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170003779A (ko) * 2015-06-30 2017-01-10 삼성전자주식회사 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치
US9837167B2 (en) 2015-08-24 2017-12-05 Samsung Electronics Co., Ltd. Method for operating storage device changing operation condition depending on data reliability
US10127984B2 (en) 2015-08-24 2018-11-13 Samsung Electronics Co., Ltd. Method for operating storage device determining wordlines for writing user data depending on reuse period
US9799407B2 (en) 2015-09-02 2017-10-24 Samsung Electronics Co., Ltd. Method for operating storage device managing wear level depending on reuse period

Also Published As

Publication number Publication date
CN104126178A (zh) 2014-10-29
US9176862B2 (en) 2015-11-03
WO2013101573A1 (en) 2013-07-04
TW201342057A (zh) 2013-10-16
US20130173844A1 (en) 2013-07-04
JP2015503798A (ja) 2015-02-02

Similar Documents

Publication Publication Date Title
US9176862B2 (en) SLC-MLC wear balancing
US9898212B1 (en) Method and apparatus for selecting a memory block for writing data, based on a predicted frequency of updating the data
US9092340B2 (en) Method and system for achieving die parallelism through block interleaving
EP2712448B1 (en) Non-volatile memory and method having block management with hot/cold data sorting
EP2565792B1 (en) Block management schemes in hybrid SLC/MLC memory
US8700840B2 (en) Nonvolatile memory with write cache having flush/eviction methods
US8537613B2 (en) Multi-layer memory system
US8094500B2 (en) Non-volatile memory and method with write cache partitioning
US8244960B2 (en) Non-volatile memory and method with write cache partition management methods
KR101619569B1 (ko) 온-칩 폴딩을 위한 데이터 전송
US7818493B2 (en) Adaptive block list management
US20100082917A1 (en) Solid state storage system and method of controlling solid state storage system using a multi-plane method and an interleaving method
EP2374063B1 (en) Non-volatile memory and method with write cache partitioning
KR20140040137A (ko) 활성 slc 및 mlc 메모리 분할들 간에 분포된 작은 논리 그룹들을 가진 비휘발성 메모리 및 방법
KR20120106800A (ko) 데이터의 온-칩 폴딩을 사용한 복수-기어 제어를 가진 비휘발성 메모리
KR20070101261A (ko) 복수-스트림 업데이트 추적을 구비한 비휘발성 메모리 및방법
US9507706B2 (en) Memory system controller including a multi-resolution internal cache

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination