KR20140040137A - 활성 slc 및 mlc 메모리 분할들 간에 분포된 작은 논리 그룹들을 가진 비휘발성 메모리 및 방법 - Google Patents

활성 slc 및 mlc 메모리 분할들 간에 분포된 작은 논리 그룹들을 가진 비휘발성 메모리 및 방법 Download PDF

Info

Publication number
KR20140040137A
KR20140040137A KR1020137031597A KR20137031597A KR20140040137A KR 20140040137 A KR20140040137 A KR 20140040137A KR 1020137031597 A KR1020137031597 A KR 1020137031597A KR 20137031597 A KR20137031597 A KR 20137031597A KR 20140040137 A KR20140040137 A KR 20140040137A
Authority
KR
South Korea
Prior art keywords
memory
logical
data
block
slc
Prior art date
Application number
KR1020137031597A
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
Priority claimed from US13/468,720 external-priority patent/US20120297121A1/en
Application filed by 샌디스크 테크놀로지스, 인코포레이티드 filed Critical 샌디스크 테크놀로지스, 인코포레이티드
Publication of KR20140040137A publication Critical patent/KR20140040137A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/068Hybrid storage device
    • 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
    • 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
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • 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
    • 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

플래시 소거가능한 블록들로 구성된 비휘발성 메모리는 블록들에 기입하기 전에 먼저 논리 그룹들에 스테이지(stage) 함으로써 호스트 기입들로부터의 데이터를 수신한다. 각 논리 그룹은 기정의된 한 세트의 정련된 논리 어드레스들로부터의 데이터를 내포하며 블록보다 작은 고정된 크기를 갖는다. 전체 논리 그룹들은 호스트의 논리 어드레스 공간을 정련된 논리 어드레스들의 비중첩 부-범위들로 분할함으로써 얻어지며, 각 논리 그룹은 적어도 한 페이지의 최소 크기와 블록 내 적어도 2개의 논리 그룹들에 들어맞고 호스트 기입의 전형적인 크기보다 한 자릿수까지 더 큰 최대 크기에 의해 정해진 범위 이내의 소정의 크기를 갖는다. 이에 따라, 캐시 RAM의 크기를 최소화하기 위해 어드레스 공간이 감소되면서 큰 논리 그룹을 동작시킴에 기인한 과도한 가비지 수거가 회피된다.

Description

활성 SLC 및 MLC 메모리 분할들 간에 분포된 작은 논리 그룹들을 가진 비휘발성 메모리 및 방법{NON-VOLATILE MEMORY AND METHOD WITH SMALL LOGICAL GROUPS DISTRIBUTED AMONG ACTIVE SLC AND MLC MEMORY PARTITIONS}
이 출원은 반도체 플래시 메모리와 같은 재프로그램가능 비휘발성 메모리 시스템들의 동작에 관한 것으로, 특히 메모리 분할들의 계층적 층들에 데이터의 효율적 저장에 관한 것이다.
전하를 비휘발성으로 저장할 수 있는, 특히 소형 폼 팩터 카드로서 패키지되는 EEPROM 및 플래시 EEPROM 형태의 고체상태 메모리는 다양한 모바일 및 휴대 장치들, 특히 정보기기 및 소비자 전자제품들에서 선택되는 저장장치가 되었다. 고체상태 메모리이기도 한 RAM(random access momory)과는 달리, 플래시 메모리는 비휘발성이고 전원이 턴 오프 된 뒤라도 자신의 저장된 데이터를 보존한다. 또한, ROM(판독 전용 메모리)와는 달리, 플래시 메모리는 디스크 저장 장치와 유사하게 재기입할 수 있다. 높은 비용에도 불구하고 플래시 메모리는 대량 저장응용들에서 점점 더 사용되고 있다. 더 최근에, 고체상태 디스크들("SSD") 형태의 플래시 메모리는 고정된 위치 설비들에서만이 아니라 휴대 컴퓨터들에 하드디스크들을 대체하기를 시작하고 있다. 하드드라이브들 및 플로피 디스크들과 같은 회전하는 자기 매체에 기초한 종래의 대량 저장장치는 모바일 및 휴대 환경엔 적합하지 않다. 이것은 디스크 드라이브들이 부피가 커지기 쉽고, 기계적 고장이 나기 쉬우며 큰 레이턴시 및 큰 전력요건을 갖기 때문이다. 이들 바람직하지 못한 속성들로 인해서 디스크 기반의 저장장치는 대부분의 모바일 및 휴대 응용들에서 실현되지 못한다. 반면, 내장형이면서도 착탈가능한 카드 또는 SSD 형태인 플래시 메모리는 이의 소형 크기, 저 전력 소비, 고속 및 고 신뢰도 특징으로 인해 모바일 및 휴대 환경에서 이상적으로 적합하다.
플래시 EEPROM은 전기적으로 프로그램가능한 판독전용 메모리(EPROM)는 소거될 수 있고 새로운 데이터가 이들의 메모리 셀들에 기입 또는 "프로그램"되게 할 수 있는 점에서 EEPROM(전기적 소거가능 및 프로그램가능한 판독전용 메모리)과 유사하다. 이들은, 전계효과 트랜지스터 구조에서, 소스영역과 드레인 영역 사이에 있는 반도체 기판 내 채널영역 위에 배치된 플로팅(비접속된) 도전성 게이트를 이용한다. 이때 제어 게이트는 플로팅 게이트 위에 설치된다. 트랜지스터의 임계전압 특징은 플로팅 게이트 상에 보존되는 전하량에 의해 제어된다. 즉, 플로팅 게이트 상에 소정 레벨의 전하에 대해서, 소스영역과 드레인 영역간에 도통이 되게 트랜지스터가 턴 "온"이 되기 전에 제어 게이트에 인가되어야 하는 대응하는 전압(임계)이 있다. 특히, 플래시 EEPROM과 같은 플래시 메모리는 메모리 셀들의 전체 블록들이 동시에 소거될 수 있게 한다.
플로팅 게이트는 일 범위의 전하들을 보존할 수 있고 따라서 임계 전압 윈도우 내의 임의의 임계 전압 레벨로 프로그램될 수 있다. 임계 전압 윈도우의 크기는 장치의 최소 및 최대 임계 레벨들에 의해 그 범위가 정해지는데, 이는 플로팅 게이트에 프로그램될 수 있는 일 범위의 전하들에 대응한다. 임계 윈도우는 일반적으로 메모리 장치의 특징들, 동작조건들 및 이력에 따른다. 윈도우 내의 각각의 서로 구별되고 결정이 가능한 임계전압 레벨의 범위는 원리적으로는 셀의 명확한 메모리 상태를 지정하는데 사용될 수 있다.
현재의 상업적인 제품들은 플래시 EEPROM 어레이의 각 저장 소자를 단일 비트의 데이터 혹은 단일 비트 이상의 데이터를 저장하게 구성한다. 단일-레벨-셀(SLC) 메모리는 단일 기준 레벨이 각 저장 소자의 임계 레벨들의 2개의 범위들 간을 구별하는 바이너리 모드에서 동작함으로써 단일 비트의 데이터를 저장하는 각 셀을 갖는다.
트랜지스터들의 임계 레벨들은 이들의 저장 소자들 상에 저장된 전하 레벨들의 범위들에 대응한다. 메모리 어레이들의 크기를 축소시키는 것 외에도, 경향은 각 저장 소자 트랜지스터에 한 비트 이상의 데이터를 저장함으로써 이러한 메모리 어레이들의 데이터 저장 밀도를 더 증가시키는 것이다. 복수-레벨-셀(MLC) 메모리는 2 이상의 기준 레벨들이 각 저장 소자의 임계 레벨들의 2 이상의 범위들 간을 구별하는 복수레벨 모드에서 동작함으로써 단일 비트 이상의 데이터를 저장하는 각 셀을 갖는다. 예를 들면, 상용 플래시 메모리 제품들은 현재 저장 소자당 4개의 상태들(저장 소자당 2 비트의 데이터) 또는 8개의 상태들(저장 소자당 3 비트의 데이터) 또는 16개의 상태들(저장 소자당 4 비트의 데이터)로 동작한다. 각 저장 소자 메모리 트랜지스터는 실제로 동작될 수 있는 임계 전압들의 어떤 총 범위(윈도우)를 가지며, 이 범위는 이를 위해 정의된 다수의 상태들과 이에 더하여 이들이 서로로부터 명확하게 구별될 수 있게 상태들 간에 마진으로 분할된다. 자명하게, 메모리 셀이 더 많은 비트들을 저장하게 구성될 수록, 이것이 동작해야 하는 오류의 마진은 더 작아지게 된다.
메모리 셀로서 작용하는 트랜지스터는 전형적으로 두 가지 메커니즘들 중 한 메커니즘에 의해 "프로그램된" 상태로 프로그램된다. "핫 전자 주입"에서, 드레인에 인가되는 하이(high) 전압은 기판 채널 영역을 지나는 전자들을 가속시킨다. 이와 동시에, 제어 게이트에 인가되는 하이 전압은 핫 전자들을 얇은 게이트 유전체를 통과해 플로팅 게이트로 가게 한다. "터널링 주입"에서는 하이 전압이 기판에 관하여 제어 게이트에 인가된다. 이렇게 하여, 기판으로부터 개재된 플로팅 게이트로 전자들이 가게 된다. 통상적으로 "프로그램"이라는 용어는 메모리 상태를 변경하기 위해 메모리 셀의 초기에 소거된 전하 저장 유닛에 전자들을 주입함으로써 메모리에 기입하는 것을 기술하기 위해 사용되었지만, 지금은 "기입" 또는 "기록"과 같은 보다 일반적인 용어들과 상호교환적으로 사용되었다.
메모리 장치는 많은 메커니즘들에 의해 소거될 수 있다. EEPROM에 있어서, 메모리 셀은 플로팅 게이트 내 전자들을 얇은 산화막을 통과하여 기판 채널 영역으로 터널링되게 하기 위해서(즉, 파울러-노다임 터널링) 제어 게이트에 관하여 기판에 하이 전압을 인가함으로써 전기적으로 소거될 수 있다. 통상적으로, EEPROM은 한 바이트씩 소거될 수 있다. 플래시 EEPROM에 있어서, 메모리는 한번에 전부 혹은 한번에 하나 이상의 최소 소거가능 블록들이 전기적으로 소거될 수 있는데, 여기서 최소 소거가능 블록은 하나 이상의 섹터들로 구성될 수 있고 각 섹터는 512 바이트 또는 그 이상의 바이트의 데이터를 저장할 수 있다.
메모리 장치는 전형적으로 카드 상에 실장될 수 있는 하나 이상의 메모리 칩들을 포함한다. 각 메모리 칩은 디코더들 및 소거, 기입 및 판독 회로들과 같은 주변 회로들에 의해 지원되는 메모리 셀들의 어레이를 포함한다. 더 정교한 메모리 장치들은 지능형의 고 레벨의 메모리 동작들 및 인터페이싱을 수행하는 제어기가 동반된다. 더 최근에, SSD 형태의 메모리 장치들이 표준 하드드라이브의 폼 팩터로 상업적으로 제공되고 있다.
최근에 사용되는 많은 상업적으로 성공한 비휘발성 고체상태 메모리 장치들이 있다. 이들 메모리 장치들은 플래시 EEPROM일 수도 있고 혹은 서로 다른 유형들의 메모리 셀들을 채용할 수 있다. 플래시 메모리 및 시스템들 및 이들을 제조하는 방법들의 예들이 미국특허 5,070,032, 5,095,344, 5,315,541, 5,343,063, 5,661,053, 5,313,421, 6,222,762에 주어져 있다. 특히, NAND 스트링 구조들을 가진 플래시 메모리 장치가 미국특허 5,570,315, 5,903,495, 6,046,935에 기술되어 있다.
또한, 비휘발성 메모리 장치들은 전하를 저장하기 위한 유전층을 가진 메모리 셀들로부터 제조된다. 앞에서 기술된 도전성 플로팅 게이트 대신, 유전층이 사용된다. 유전 저장소자를 이용하는 이러한 메모리 장치들이, Eitan et al., "NROM: A Novel Localized Trapping, 2-bit Nonvolatile Memory Cell" IEEE Electron Device Letters, vol. 21, no. 11, November 2000, pp. 543-545에 기술되어 있다. ONO 유전층은 소스 확산영역과 드레인 확산영역 사이의 채널을 가로질러 확장하여 있다. 한 데이터 비트용의 전하는 드레인에 인접한 유전층에 모이고 다른 데이터 비트용의 전하는 소스에 인접한 유전층에 모인다. 예를 들면, 미국특허 5,768,192 및 6,011,725는 두 개의 이산화실리콘층들 사이에 개재된 트랩 유전층을 구비한 비휘발성 메모리 셀을 개시하고 있다. 복수 상태 데이터 저장은 유전층 내 공간적으로 분리된 전하 저장 영역들의 바이너리 상태들을 개별적으로 판독함으로써 구현된다.
플래시 메모리 특징들 및 경향들
플래시 메모리는 통상의 디스크 저장장치 또는 RAM과는 상당히 다르게 거동한다. 먼저, 플래시 메모리에 저장된 현존하는 데이터는 단순히 덮어쓰기에 의해서는 업데이트될 수 없다. 각 셀은 이에 새로운 기입이 행해질 수 있기 전에 먼저 소거되어야 한다. 결국, 업데이트는 항시 새로운 자유 위치에 기입된다. 수행을 개선하기 위해서는 페이지씩으로 데이터를 액세스하기 위해 한 그룹의 셀들이 병렬로 동작된다. 업데이트된 페이지를 새로운 위치에 기입되게 함으로써 한 페이지의 데이터가 업데이트될 때, 대체된 페이지는 무효해져 폐용(obsolete)이 되며 저장소를 가비지로 채워넣게 된다. 종국에 일소되어 이것이 점유하고 있는 공간을 비우게 될 것이다.
업데이트들을 관리하고 무효한 것들을 폐기(discard)하는 것은 플래시 메모리의 블록 구조에 의해 복잡해진다. 플래시 메모리를 소거하는 것은 비교적 시간 소모적이며, 소거 수행을 개선하기 위해 메모리는 전체 한 블록의 메모리 셀들이 동시에 함께 소거되는 소거 블록들로 구성된다. 블록은 일반적으로 다수의 페이지들을 내포한다. 데이터가 페이지씩으로 블록에 저장되기 때문에, 종국에 이 데이터의 일부는 폐용이 된다. 이것은 블록이 공간을 차지하는 많은 가비지 데이터를 내포할 것임을 의미한다. 그러나, 블록은 유닛으로서 소거될 수 있을 뿐이며 따라서 가비지 데이터가 블록과 함께 소거될 수 있기 전에, 블록 내 유효 데이터가 먼저 회수(salvage)되어 다른 블록에 카피되어야 한다. 이 동작은 일반적으로 가비지 수거라고 하며 플래시 메모리의 블록 구조의 오버헤드이다. 블록이 클수록, 가비지 수거에 더 많은 시간이 요구된다. 유사하게, 블록 내 데이터가 빈번히 업데이트될수록, 블록은 더 빈번하게 가비지 수거가 될 필요가 있게 될 것이다. 가비지 수거는 바람직하게 기입 동작 동안과 같은 전경(foreground)에서 수행된다. 이것은 자명하게 기입 속도를 저하시킬 것이다.
플래시 메모리의 초기 응용들은 주로 휴대용 호스트들을 위한 음악 및 비디오 파일들과 같은 미디어 파일들을 저장하기 위한 것이었다. 이들 파일들은 블록씩으로 메모리를 채우는 순차적인 논리 어드레스들의 길게 이어진 데이터가 되는 경향이 있다. 이들 데이터는 사실상 보관용이며 그다지 업데이트되지 않는다. 이에 따라, 블록 구조는 이들 유형의 데이터에 잘 작동하며 가비지 수거할 필요성이 거의 없기 때문에 기입 동안 거의 수행 히트(performance hit)가 없다. 데이터의 정연한 순차적인-어드레스 특성은 논리 어드레스 범위가 논리 그룹들로 분할될 수 있게 하며, 한 논리 그룹의 데이터가 블록 내에 잘 들어맞게 될 것이므로 각 논리 그룹은 소거 블록과 정렬된다. 이에 따라, 어드레싱 입도(granularity)는 속해 있는 논리 그룹을 어느 블록이 저장하고 있는지에 의해 주어진 논리 어드레스를 가진 페이지가 찾아질 수 있기 때문에 주로 블록 레벨에 있다. 논리 그룹은 순차적 순서로 자신의 논리 어드레스들로 자체-색인되는 방식으로 블록 내에 저장되기 때문에, 페이지는 신속하게 찾아질 수 있다.
논리 그룹들을 구현하는 블록 관리 시스템은 전형적으로 업데이트들 및 비-순차적 기입들을 페이지 레벨에서 추적함으로써 이들을 처리한다. 이것은 비순차적인 혹은 폐용 데이터를 갖는 논리 그룹들의 수를 제한하는 것을 나타내는 페이지 레벨 추적을 위한 소정 량의 자원을 예산한다. 일반적으로, 업데이트들이 될 때, 정연한 블록들의 일부는 폐용 데이터를 내포할 것이며 이들을 추적 관리하는 것은 자원의 일부를 소비할 것이다. 예산을 넘어설 때, 비순차적인 혹은 폐용 데이터를 가진 선택된 블록은 순차적 순서로 정연한 블록에 다시 반환된다. 이것은 최근의 업데이트로 순차적 순서로 새로운 블록에 재기입함으로써 달성된다. 그러나 재배치는 수행 히트를 일으킬 것이다. 이러한 시스템은, 몇몇 랜덤한 기입들만이 페이지 레벨에서 추적되고 대부분이 이러한 정연한 블록들이 블록 레벨에서 추적되는 것을 유지하는데 도움이 되는 데이터를 호스트가 기입한다면 잘 작용할 것이다. 이에 따라, 블록 경계에 정렬되는 논리 그룹들을 구현함으로써, 어드레스 테이블은 크게 단순화되고 감소된다.
그러나, 논리 그룹들을 구현하는 블록 관리 시스템은 호스트가 대부분이 짧은 비순차적인 데이터를 기입한다면 덜 최적화되기 시작할 것이다. 이러한 유형의 기입 패턴은 개인용 컴퓨터 또는 스마트 모바일 장치로부터 애플리케이션들에선 일반적이다. 플래시 메모리를 사용하는 고체상태 디스크(SSD)는 이의 낮은 파워, 속도 및 강건성에 기인하여 디스크 저장장치를 효과적으로 대체한다. 긴 순차적인 기입들 대신에, 플래시 메모리는 이제 대부분이 짧은 랜덤한 기입들을 처리해야 한다. 처음에는, 수행은 자유 공간이 발견될 수 있는한 데이터가 그에 기입될 수 있기 때문에 악화되지 않을 것이다. 그러나, 계속적인 사용과 빈번한 업데이트들로, 페이지 추적을 위한 소정의 자원은 종국에는 고갈될 것이다. 이 시점에서, 수행은 다음 기입이 블록의 재배치를 동반해야 할 수도 있기 때문에 큰 히트를 취할 수 있다. 블록이 클수록 블록의 재배치를 수행하는 것이 더 오래 걸리게 될 것이다. 또한, 큰 블록 및 짧고 비순차적인 데이터는 블록 내 논리 그룹이 무효한 데이터를 더 빈번히 내포하게 하고 페이지 어드레싱 자원를 더 빠르게 소비하고 따라서 재배치가 더 빈번하게 일어나게 할 것이다.
큰 블록 크기에 있어서의 문제는 블록 크기가 메모리 기술의 각 새로운 세대에 따라 기하학적으로 증가하는 경향이 있기 때문에 단순히 블록 크기를 감소시킴에 의해서는 쉽게 해결될 수 없다. 회로들의 더 높은 집적에 따라 더 많은 메모리 셀들이 동일 다이 내에 설치되고 있다. 컬럼들 및 행들로 측정하여 블록 크기는 기하학적으로 증가한다. 이것은 NAND 형 메모리에 있어서 특히 그러하다. 메모리는 각 스트링이 메모리 셀들의 데이지 체인이고 최소 소거 블록이 한 행의 이러한 NAND 스트링에 의해 형성되어야 하는 NAND 스트링들의 어레이이다. NAND 스트링이 32 셀들을 갖는다면, 블록은 32개 행들의 셀들을 내포할 것이다. NAND 스트링 내 메모리 셀들의 수 또한 각 세대에 따라 증가하며, 따라서 블록 크기는 컬럼 방향 및 행 방향으로 증가한다.
물리적 메모리 구조에 의해 좌우되는 블록 크기는 현 세대에선 4MB만큼 크다. 한편, 개인용 컴퓨터들의 운영 시스템은 전형적으로 논리 섹터들을 512kB의 크기로 할당하고 종종 페이지를 4kB 유닛으로 한 클러스터의 논리 섹터들로서 기입한다. 이에 따라, 블록 및 페이지에 대응하는 논리 그룹의 어드레싱 입도에 있어 큰 오정합이 존재한다. 논리 그룹의 수법에 있어, 블록에 대한 이상적인 상황은 아무 것도 기입되지 않는 것이거나, 유효 데이터의 전체 논리 그룹으로 순차적으로 채워지는 것이다. 어느 경우에서든 단편화는 없으며 가비지 수거 또는 재배치에 대한 필요성이 없다. 큰 블록에 짧은 랜덤한 기입들의 경우에, 블록은 매우 신속하게 비이상적이 되며 종국엔 재배치를 필요로 할 것이다. 이것은 동일한 페이지가 1회 이상 기입되고 이어 다시 카피되어야 할 수도 있기 때문에("기입 증폭")라고도 함) 비효율적인 기입들에 이르게 된다.
짧은 랜덤한 기입들에 적합한 대안적인 종래의 어드레싱 방법은 논리 그룹들을 사용하는 것이 아니라, 블록에 기입되고 있을 때 모든 페이지를 독립적으로 추적하는 것이다. 저장된 데이터를 블록 내 정연한 논리 그룹으로서 유지하는 대신에, 각 페이지는 이것이 어느 블록에 블록 내 어떤 오프셋에 저장되는지에 대해 추적된다. 이에 따라, 이 페이지 어드레싱 수법에서는, 순차적인 논리 어드레스들의 순서로 그룹들 내 데이터를 저장 또는 유지할 부담은 없다. 그러나, 페이지 어드레싱 수법은 논리 그룹 어드레스 수법을 위한 것보다 훨씬 큰 어드레스 테이블을 가질 것이다. 예를 들면, 블록 내에 1000개의 페이지들이 있다면, 페이지 어드레싱 수법을 위한 어드레스 테이블은 근사적으로 2 내지 3 자릿수로 더 커지게 될 것이다.
페이지 어드레싱 수법은 훨씬 더 큰 어드레스 테이블 면에서 페널티를 일으킨다. 실제로, 이것은 메모리 제어기와 작동하기 위해 더 많은 시스템 자원들 및 상대적으로 큰 RAM을 요구할 것이다. 이것은 어드레스 테이블이 일반적으로 플래시 메모리에 유지되지만 더 빠른 액세스를 제공하기 위해 동작 동안 제어기 RAM에 캐시되기 때문이다. 현재 기술은 많아야 2 내지 4 MB의 RAM이 제어기 칩 상에 제조될 수 있게 한다. 이것은 페이지 어드레싱 수법을 사용하는 시스템들엔 불충분하며 추가의 외부 RAM 칩들이 요구될 것이다. 외부 RAM 칩들을 지원하기 위한 추가의 핀아웃들 및 인터페이스 회로들은 비용을 현저하게 증가시킬 것이다.
4kB와 같이 매우 작은 유닛들을 갖는 어드레싱 입도에 있어서의 또 다른 문제는 이것이 판독 및 데이터 카피(업데이트에 기인한) 동안 최대 병행도가 달성될 수 없을 정도로 블록들 간에 흩어지는 단편화된 데이터를 야기한다는 것이다. 또한, 작은 업데이트가 여전히 하나 이상의 블록 전체의 카피를 촉발할 수 있기 때문에 카피량이 증가한다.
이에 따라, 위에 언급된 단점들 및 문제들을 격지않고 큰 블록들에 짧은 랜덤한 기입들로 특징지워지는 데이터 액세스를 효율적으로 다룰 수 있는 비휘발성 메모리를 제공할 필요성이 있다.
작은 논리 그룹들을 사용한 블록 관리
발명의 일측면에 따라, 비휘발성 메모리에는 호스트로부터의 정연된 어드레스 범위가 블록이 복수의 논리 그룹들의 데이터를 저장하는 논리 그룹들로 분할되는 블록 관리 시스템이 제공된다. 각 논리 그룹은 호스트 기입의 크기이지만 적어도 메모리에 의해 지원되는 최대 병행도의 판독 또는 기입 유닛인 페이지 또는 메타페이지의 크기와 적어도 동일한 자릿수 내지는 더 큰 자릿수의 범위를 갖는 크기를 갖는다. 논리 그룹의 크기를 소거 블록의 크기에서 분리되게 하고 호스트 기입들의 크기 및 특성에 더 호환이 되는 크기를 갖게 함으로써, 논리 그룹은 수행에 영향을 미치는 것인 과도한 재기입들을 촉발하지 않으면서도 어드레싱을 단순화하고 한정된 시스템 자원을 절약하는 이익을 제공한다.
이에 따라, 블록의 크기에 정렬되는 논리 그룹 크기 대신에, 이의 크기는 가비지 수거 및 재기입들을 최소화하기 위해 전형적인 호스트 기입의 입도에 정합하게 구성된다. 집적회로의 밀도가 증가함에 따라 각 블록은 하나가 아니라 복수의 논리 블록들의 데이터를 보유할 것이다. 실제로, 호스트 기입들은 논리-그룹씩으로 버퍼되고 스테이지되며 이들은 이어 블록에 기입된다.
바람직한 구현에서, 메모리는 SLC 및 MLC 부분들로 분할되고, 제 1, 제 2 및 제 3 동작 및 기능 층들을 포함한다. 제 및 제 2 층들은 SLC 부분에서 동작한다. 제 3 층은 MLC 부분에서 동작한다. 제 1 층은 처음에는 호스트로부터 기입 데이터를 저장하고 각 논리 그룹을 제 2 또는 제 3 층에 재배치하기 전에 데이터를 논리-그룹씩으로 스테이지하기 위한 것이다. 제 2 층은 논리-그룹 레벨에서 호스트 데이터를 저장하기 위해 SLC 블록들 풀에 활성 저장소를 제공한다. 풀이 충만되었을 때, 최소로 잠재적인 재기입들을 가진 논리 그룹들을, 고밀도로 저장하는 제 3 층으로 퇴거함으로써 더 많은 자리가 만들어진다.
근본적으로, 제 2 층은 단편화되고 중간 크기 호스트 기입들이 놓여지는 고속 SLC 저장 영역을 제공한다. 근본적으로 데이터가 액세스될 수 있기 전에 데이터를 MLC 저장소 내 제 3 층에 전송하기 위한 FIFO로서 작용하는 제 2 층 및 제 1층이 없는 종래의 시스템들과는 달리, 이 제 2 층은 한 세트의 작업 사용자 데이터를 고속 SLC 부분에 유지한다.
이렇게 하여, 활성의 한 세트의 사용자 데이터가 더 빠른 SLC 메모리에 우선적으로 유지되고, SLC 메모리 내에 용량이 고갈되었을 때만 MLC 메모리 내에 저장하기에 더 적합한 선택된 논리 그룹들이 그에 퇴거될 것이다.
더 작은 크기의 논리 그룹들의 구현은 동시에 더 작은 어드레스 테이블이 사용될 수 있게 하면서도 과도한 재기입들을 촉발하지 않는 이익을 갖는다. 이것은 값비싼 외부 RAM에 대한 필요성이 없이 어드레스 테이블이 제어기 칩 상에 집적된 RAM 내 캐시될 충분히 콤팩트한 크기를 갖는 이익을 갖는다.
본 발명의 추가의 특징들 및 잇점들은 동반한 도면들에 관련하여 취해지는 바람직한 실시예들의 다음의 설명으로부터 이해될 것이다.
도 1은 본 발명의 특징들이 실시되는 메모리 장치와 결합한 호스트를 도시한 것이다.
도 2는 병렬로 감지되거나 프로그램되는, 예를 들면 NAND 구성으로 구성되는, 한 페이지의 메모리 셀들을 도시한 것이다.
도 3은 소거가능한 블록들로 구성되는 메모리 어레이의 예를 개요적으로 도시한 것이다.
도 4는 최대 병행도를 위해 복수의 어레이들 및 동작들을 갖는 메모리 칩을 개요적으로 도시한 것이다.
도 5는 더 높은 정도의 병행도를 갖는 메모리 구조를 개요적으로 도시한 것이다.
도 6은 각 셀이 2개의 가능한 상태들 중 하나에 있는 모집단들의 셀들을 갖는 바이너리 메모리를 도시한 것이다.
도 7은 각 셀이 8개의 가능한 상태들 중 한 상태에 있는 모집단의 셀들을 갖는 복수-상태 메모리를 도시한 것이다.
도 8은 발명을 실시하는데 적합한 물리적 메모리 아키텍처의 예를 도시한 것이다.
도 9는 2-층 데이터 저장 시스템에서 SLC 부분과 MLC 부분 간에 데이터 경로를 개요적으로 도시한 것이다.
도 10은 도 9에 도시된 SLC 층을 더 상세히 도시한 것이다.
도 11은 본 발명에 따라 블록 관리 시스템의 메모리 구성에서 페이지를 도시한 것이다.
도 12는 블록 관리 시스템에서 논리 그룹을 도시한 것이다.
도 13a는 복수의 논리 그룹들로부터 데이터를 수용하는 소거 블록을 도시한 것이다.
도 13b는 작은 논리 그룹들에 관하여 비휘발성 메모리에 호스트 기입들을 저장하는 수법을 도시한 흐름도이다.
도 14는 본 발명에 따라 상이한 메모리 분할들에 걸쳐 블록들 및 페이지들을 관리하기 위한 시스템 아키텍처를 도시한 것이다.
도 15는 도 14에 도시된 제 2 층을 더 상세히 도시한 것이다.
도 16은 '핫' 논리 그룹 경우에 대해 논리 그룹들의 '온도' 소팅을 도시한 것이다.
도 17은 '콜드' 논리 그룹 경우에 대한 논리 그룹들의 '온도' 소팅을 도시한 것이다.
도 18은 서로 다른 유형들의 기입들이 이들의 인지된 온도에 따라 상호작용식으로 어떻게 블록 스트림들로 소팅되는가를 도시한 것이다.
도 19는 메모리 저장 및 동작들을 위한 온도 소팅의 수법을 도시한 흐름도이다.
도 20은 논리 그룹 레벨에서 온도 소팅의 수법을 도시한 흐름도이다.
도 21은 블록 레벨에서 온도 소팅의 수법을 도시한 흐름도이다.
메모리 시스템
도 1은 본 발명의 특징들이 구현되는 메모리 장치와 통신하는 호스트를 도시한 것이다. 호스트(80)는 전형적으로 메모리 장치(90)에 저장될 데이터를 보내거나 메모리 장치(90)를 판독함으로써 데이터를 인출한다. 메모리 장치(90)는 제어기(102)에 의해 관리되는 하나 이상의 메모리 칩(100)을 포함한다. 메모리 칩(100)은 각 셀이 1 비트의 데이터를 저장하기 위한 단일-레벨 셀("SLC")로서 구성될 수 있을 뿐만 아니라 복수 비트들의 데이터를 저장하기 위한 복수-레벨 셀("MLC")로서 구성될 수 있는 메모리 셀들의 메모리 어레이(200)를 포함한다. 또한, 메모리 칩은 행 및 컬럼 디코더들, 감지 모듈들, 데이터 래치들 및 I/O 회로들과 같은 주변 회로들(204)을 포함한다. 온-칩 제어 회로(110)는 각 칩의 저-레벨 메모리 동작들을 제어한다. 제어 회로(110)는 메모리 어레이(200) 상에서 메모리 동작들을 수행하기 위해 주변 회로들과 공조하는 온-칩 제어기이다. 제어 회로(110)는 전형적으로 데이터 버스(231)와 제어 및 어드레스 버스(111)를 통해 메모리 동작들의 칩 레벨 제어를 제공하기 위해 상태머신(112)을 포함한다.
많은 구현들에서, 호스트(80)는 메모리 제어기(102)를 통해 메모리 칩(100)과 통신하며 상호작용한다. 제어기(102)는 메모리 칩과 공조하며 고 레벨 메모리 동작들을 제어하고 관리한다. 펌웨어(60)는 제어기(102)의 기능들을 구현하기 위해 코드들을 제공한다. 오류 정정 코드("ECC") 프로세서(62)는 메모리 장치의 동작들 동안 ECC를 처리한다.
예를 들면, 호스트 기입에서, 호스트(10)는 호스트의 운영 시스템의 파일 시스템으로부터 할당된 논리 섹터들에 메모리 어레이(100)에 기입될 데이터를 보낸다. 제어기 내 구현된 메모리 블록 관리 시스템은 섹터들을 스테이지하고 이들을 메모리 어레이의 물리 구조에 매핑하여 저장한다. 바람직한 블록 관리 시스템은 전체 개시된 바를 참조로 본원에 포함시키는 미국특허출원 공개번호 US-2010-0172180-A1에 개시되어 있다.
물리 메모리 아키텍처
판독 및 프로그램 수행을 개선하기 위해서, 어레이 내 복수의 전하 저장 소자들 또는 메모리 트랜지스터들 은 병렬로 판독되거나 프로그램된다. 이에 따라, 한 "페이지"의 메모리 소자들이 함께 판독되거나 프로그램된다. 현존하는 메모리 아키텍처들에서, 행은 전형적으로 몇개의 인터리브된 페이지들을 내포하거나 한 페이지를 구성할 수 있다. 페이지의 모든 메모리 소자들은 함께 판독되거나 프로그램될 것이다.
도 2는 예를 들면 NAND 구성으로 구성되고 병렬로 감지 또는 프로그램되는 한 페이지의 메모리 셀들을 도시한 것이다. 도 2는 근본적으로 도 1의 메모리 어레이(200) 내 한 뱅크의 NAND 스트링들(50)을 도시한 것이다. 페이지(60)와 같은 "페이지"는 병렬로 감지되거나 프로그램될 수 있게 한 한 그룹의 메모리 셀들이다. 이것은 대응하는 한 페이지의 감지 증폭기들(210)에 의해 주변 회로들에 의해 달성된다. 감지된 결과들은 대응하는 한 세트의 데이터 래치들(220)에 래치된다. 각 감지 증폭기는 비트라인(36)을 통해 NAND 스트링(50)과 같은 NAND 스트링에 결합될 수 있다. 예를 들면, 페이지(60)는 행을 따라 있으며 워드라인(WL3)에 공통으로 연결된 페이지의 셀들의 제어 게이트들에 인가되는 감지 전압에 의해 감지된다. 각 컬럼을 따라, 셀(10)과 같은 각 셀은 비트라인(36)을 통해 감지 증폭기에 의해 액세스될 수 있다. 데이터 래치들(220) 내 데이터는 데이터 I/O 버스(231)를 통해 메모리 제어기(102)로부터 안으로 혹은 밖으로 토글된다.
위에 언급된 페이지는 물리 페이지 메모리 셀들 또는 감지 증폭기들이다. 정황에 따라, 각 셀이 복수-비트 데이터를 저장하고 있는 경우에, 각 물리 페이지는 복수의 데이터 페이지들을 갖는다.
NAND 스트링(50)은 두 끝에 각각 소스 단자 및 드레인 단자를 형성하기 위해 소스들 및 드레인들이 데이지-체인으로 연결된 직렬의 메모리 트랜지스터들(10)이다. 한 쌍의 선택 트랜지스터들(S1, S2)은 각각 NAND 스트링의 소스 단자 및 드레인 단자를 통해 외부에 메모리 트랜지스터 체인의 연결을 제어한다. 메모리 어레이에서, 소스 선택 트랜지스터(S1)가 턴 온 되었을 때, 소스 단자는 소스 라인(34)에 결합된다. 유사하게, 드레인 선택 트랜지스터(S2)가 턴 온 되었을 때, NAND 스트링의 드레인 단자는 메모리 어레이의 비트라인(36)에 결합된다. 체인에 각 메모리 트랜지스터(10)는 메모리 셀로서 작용한다. 이것은 의도된 메모리 상태를 나타내기 위해 소정량의 전하를 저장하기 위한 전하 저장 요소(20)를 갖는다. 각 메모리 트랜지스터의 제어 게이트는 판독 및 기입 동작들에 대해 제어할 수 있게 한다. 한 행의 NAND 스트링의 대응하는 메모리 트랜지스터들의 제어 게이트들은 모두 동일 워드라인(이를테면 WL0, WL1,...)에 연결된다. 유사하게, 선택 트랜지스터들(S1, S2)(각각 선택 라인들(SGS, SGD)에 의해 액세스되는) 각각의 제어 게이트는 각각 이의 소스 단자 및 드레인 단자를 통해 NAND 스트링에의 제어 액세스를 제공한다.
소거 블록들
플래시 메모리와 다른 유형의 메모리 간에 한 중요한 차이는 셀이 소거된 상태로부터 프로그램되어야 한다는 것이다. 즉 플로팅 게이트에 먼저 전하가 없어야 한다다. 이어서 프로그래밍은 요망되는 량의 전하를 다시 플로팅 게이트에 더한다. 이것은 더 프로그램된 상태에서 덜 프로그램된 상태로 가기 위해서 플로팅으로부터 전하의 부분을 제거하는 것을 지원하지 않는다. 이것은 업데이트 데이터가 현존의 데이터를 덮어쓸 수 없고 이전의 미기입된 위치에 기입되어야 함을 의미한다.
또한 소거는 플로팅 게이트로부터 모든 전하들을 비우는 것이며 일반적으로 상당히 시간이 걸린다. 이 이유로, 셀별로 혹은 심지어 페이지별로 소거하는 것은 번거롭고 매우 느릴 것이다. 실제로, 메모리 셀들의 어레이는 많은 수의 블록들의 메모리 셀들로 분할된다. 플래시 EEPROM 시스템들에 공통되는 바와 같이, 블록은 소거 유닛이다. 즉, 각 블록은 함께 소거되는 최소 수의 메모리 셀들을 내포한다.
도 3은 소거가능한 블록들로 구성되는 메모리 어레이의 예를 개요적으로 도시한 것이다. 전하 저장 메모리 장치들의 프로그래밍은 이의 전하 저장 요소들에 전하를 더 추가하는 것만이 될 수 있다. 그러므로, 프로그램 동작에 앞서, 메모리 셀의 전하 저장 요소 내 현존하는 전하는 제거(또는 소거)되어야 한다. 전체 어레의 셀들(200), 혹은 어레이의 상당 그룹들의 셀들이 전기적으로 함께 소거될 때(즉, 플래시로) EEPROM와 같은 비휘발성 메모리는 "플래시" EEPROM이라 한다. 일단 소거되면, 한 그룹의 셀들은 이어서 다시 프로그램될 수 있다. 함께 소거될 수 있는 일 그룹의 셀들은 하나 이상의 어드레스가능한 소거 유닛(300)으로 구성될 수 있다. 소거 유닛 또는 블록(300)은 전형적으로, 하나 이상의 페이지가 단일 동작으로 프로그램되거나 판독될 수 있을지라도, 하나 이상의 페이지들의 데이터 -페이지는 프로그래밍 및 판독의 최소 단위- 를 저장한다. 각 페이지는 전형적으로 하나 이상의 섹터들의 데이터를 저장하며, 섹터의 크기는 호스트 시스템에 의해 정의된다. 예는 자기 디스크 드라이브들에 설정된 표준에 따라 한 섹트의 512 바이트의 사용자 데이터와, 이에 더하여 사용자 데이터 및/또는 이것이 저장되는 블록에 관한 몇 바이트의 오버헤드 정보이다.
도 3에 도시된 예에서, 메모리 어레이(200)에 개개의 메모리 셀들은 WL0 ~ WLy와 같은 워드라인들(42) 및 BL0 ~ BLx와 같은 비트라인들(36)에 의해 액세스될 수 있다. 메모리는 소거 블록들 0, 1,... m와 같은 소거 블록들로 구성된다. NAND 스트링(50)이 16 메모리 셀들을 내포한다면(도 2 참조), 어레이 내 제 1 뱅크의 NAND 스트링들은 WLO 내지 WL15와 같은 선택 라인들(44) 및 워드라인들(42)에 의해 액세스될 것이다. 소거 블록 0은 제 1 뱅크의 NAND 스트링들의 모든 메모리 셀들이 함께 소거되게 하도록 구성된다. 메모리 아키텍처에서, 하나 이상의 뱅크의 NAND 스트링들은 함께 소거될 수 있다.
메타페이지 및 메타블록 구성을 사용한 증가된 병행도
도 4는 복수의 어레이들을 가진 메모리 칩 및 최대 병행도를 위한 동작들을 개요적으로 도시한 것이다. 예를 들면, 메모리 칩은 2개의 다이들인 DIE 1 및 DIE 2을 갖게 제조된다. 각 다이는 2개의 메모리 플레인들을 내포한다. 예를 들면, DIE 1은 메모리 플레인 1 및 메모리 플레인 2를 내포하며, DIE 2는 메모리 플레인 3 및 메모리 플레인 4을 내포한다. 각 메모리 플레인은 복수의 블록들을 내포하며, 각 블록은 복수의 페이지들을 내포한다. 예를 들면, 메모리 플레인 1은 블록 1을 포함하고 이는 페이지 P1을 포함한다.
블록 1 ~ 블록 4와 같은 블록들 각각은 도 3에 도시된 블록(300)과 같이 메모리 플레인내 메모리 어레이의 물리적 아키텍처에 의해 고정된 최소 소거 유닛들(MEUs)이다. 유사하게, P1 ~ P4과 같은 페이지들 각각은 병렬로 동작하는 판독/기입 회로들의 수에 의해 고정된 최소 판독/기입 유닛들이다.
프로그래밍 속도 및 소거 속도를 최대화하기 위해서, 병렬로 프로그램될 복수의 MEU들 내 위치된, 정보의 복수의 페이지들, 및 병렬로 소거될 복수의 MEU들에 대해 배열함으로써 가능한한 많이 병행도가 활용된다.
도 5는 더 높은 정도의 병행도를 갖는 메모리 구조를 개요적으로 도시한 것이다. 예를 들면, 페이지들(P1 ~ P4)은 시스템 레벨에선 최소 판독 또는 기입 유닛으로서 동작되는 것인 "메타페이지"로서 함께 연결된다. 유사하게, 블록 1 ~ 블록 4는 시스템 레벨에선 최소 소거 유닛으로서 동작되는 것인 "메타블록"으로서 함께 연결된다. 플래시 메모리의 물리적 어드레스 공간은 한 세트의 메타블록들로서 취급되며, 메타블록은 최소 소거 유닛이다. 이 명세서 내에서, "메타블록", 예를 들면, 300-4 및 "블록"(300)이라는 용어들은 미디어 관리를 위해 시스템 레벨에서 최소 소거 유닛을 정의하기 위해 동의어로 사용되며, "최소 소거 유닛" 또는 MEU이라는 용어는 플래시 메모리의 최소 소거 유닛을 나타내기 위해 사용된다. 유사하게, "메타페이지", 예를 들면, 60-4 및 "페이지"(60)라는 용어들은 페이지가 더 높은 정도의 병행도로 시스템 레벨에서 메타페이지로 구성될 수 있다는 것에서 동의어로 사용된다.
더 높은 정도의 병행도가 메모리 칩 내 복수의 플레인들로부터 메모리 구조들을 모음으로써 달성될 수 있음을 도 4가 도시하고 있지만, 또 다른 실시예에서, 플레인들은 하나 이상의 메모리 칩 간에 분포될 수 있음을 알아야 한다.
메타블록들로 MEU들의 연결 및 재연결은 전체 개시된 바를 참조로 본원에 포함시키는 미국특허공개번호 US-2005-0144516-A1 및 미국특허 7139864에도 개시되어 있다.
바이너리(SLC) 및 복수-상태(MLC) 메모리 셀들의 예
앞에 기술된 바와 같이, 비휘발성 메모리의 예는 각각이 채널 영역과 제어 게이트 사이에 전하 저장층을 갖는 전계-효과 트랜지스터들의 어레이로부터 형성된다. 전하 저장층 또는 유닛은 한 범위의 전하들을 저장할 수 있어, 각각의 전계-효과 트랜지스터에 대해 한 범위의 임계 전압들을 생성한다. 가능한 임계 전압들의 범위는 임계 윈도우에 걸쳐 있다. 임계 윈도우가 임계 전압들의 복수의 부-범위들 또는 구역들로 분할될 때, 각각의 결정가능한 구역은 한 메모리 셀에 대해 서로 다른 메모리 상태들을 나타내기 위해 사용된다. 복수의 메모리 상태들은 하나 이상의 바이너리 비트들에 의해 부호화될 수 있다.
도 6은 각 셀이 2개의 가능한 상태들 중 한 상태에 있는 모집단의 셀들을 갖는 바이너리 메모리를 도시한 것이다. 각 메모리 셀은 단일 구분 레벨에 의해 2개의 서로 분할되는 구역들로 구분되는 임계 윈도우를 갖는다. 도 6(0)에 도시된 바와 같이, 판독 동안, 하위 구역과 상위 구역 사이에 판독 구분 레벨(rV1)은 셀의 임계 레벨이 어느 구역에 놓여있는지를 판정하기 위해 사용된다. 셀은 이의 임계값이 하위 구역에 놓여 있다면 "소거된" 상태에 있으며, 임계값이 상위 구역에 놓여 있다면 "프로그램된" 상태에 있다. 도 6(1)은 메모리가 초기에 이의 모든 셀들이 "소거된" 상태에 있는 것을 도시한 것이다. 도 6(2)는 일부 셀들이 "프로그램된" 상태로 프로그램된 것을 도시한 것이다. 메모리 상태들을 부호화하기 위해 1-비트 또는 바이너리 코드가 사용된다. 예를 들면, 비트 값 "1"은 "소거된" 상태를 나타내며 "0"은 "프로그램된" 상태를 나타낸다. 전형적으로 프로그래밍은 하나 이상의 프로그래밍 전압 펄스의 인가에 의해 수행된다. 각 펄스 후에, 임계값이 검증 구분 레벨(vV1)을 넘어 이동하였는지를 검증하기 위해 셀이 감지된다. 이러한 메모리 셀 분할을 가진 메모리를 "바이너리" 메모리 또는 단일-레벨 셀("SLC") 메모리라고 한다. 바이너리 또는 SLC 메모리는 전체 임계 윈도우가 두 구역들에 의해서만 점유되기 때문에 넒은 오류 마진을 갖고 동작함을 알 것이다.
도 7은 각 셀이 8개의 가능한 상태들 중 한 상태에 있는 모집단의 셀들을 갖는 복수-상태 메모리를 도시한 것이다. 각 메모리 셀은 적어도 7개의 구분 레벨에 의해 8개의 서로 구별되는 구역들로 분할되는 임계 윈도우를 갖는다. 도 7(0)에 도시된 바와 같이, 판독 동안, 판독 구분 레벨들(rV1 내지 rV7)은 셀의 임계 레벨이 어느 구역에 놓여있는지를 판정하기 위해 사용된다. 셀은 이의 임계값이 최하위 구역에 놓여 있다면 "소거된" 상태에 있으며, 임계값이 상위 구역에 놓여 있다면 복수의 "프로그램된" 상태들 중 한 상태에 있다. 도 7(1)은 메모리가 초기에 이의 모든 셀들이 "소거된" 상태에 있는 것을 도시한 것이다. 도 7(2)는 일부 셀들이 "프로그램된" 상태로 프로그램된 것을 도시한 것이다. 하위, 중위, 및 상위 비트를 갖는 3-비트 코드는 8개의 메모리 상태들 각각을 나타내기 위해 사용될 수 있다. 예를 들면, "0", "1", "2", "3", "4", "5", "6" 및 "7" 상태들은 각각 "111", "O11", "001", "101", "100", "000", "010" 및 "111"로 나타낸다. 전형적으로 프로그래밍은 하나 이상의 프로그래밍 전압 펄스들의 인가에 의해 수행된다. 각 펄스 후에, 임계값이 검증 구분 레벨들(vV1 내지 vV7) 중 하나인 기준을 넘어 이동하였는지를 검증하기 위해 셀이 감지된다. 이러한 메모리 셀 분할을 가진 메모리를 "복수-상태" 메모리 또는 복수-레벨 셀("MLC") 메모리라고 한다. 다수의 프로그래밍 방법은 플로팅-게이트간 교란들을 완화시키기 위해 셀들이 이들의 목표 상태들로 프로그램되기 전에 복수의 프로그래밍 패스들(pass)을 채용한다.
유사하게, 4비트 코드를 저장하는 메모리는 16 상태 각각을 나타내는 것인, 하위, 제 1 중위, 제 2 중위, 및 상위 비트들을 가질 것이다. 임계 윈도우는 16개의 서로 구별되는 구역들로 적어도 15 구분 레벨들에 의해 구분될 것이다.
메모리의 유한 임계 윈도우가 더 많은 영역들로 분할됨에 따라, 프로그래밍 및 판독을 위한 분해능은 필연적으로 더 미세해질 것이다. 이에 따라, 복수-상태 또는 MLC 메모리는 필연적으로 분할된 구역들을 덜 가진 메모리에 비해 더 좁은 오류 마진을 갖고 동작한다. 즉, 각 셀에 저장된 비트들의 수에 따라 오류율이 증가한다. 일반적으로, 오류율은 임계 윈도우 내 분할된 구역들의 수에 따라 증가한다.
내구성은 사용 수명을 제한하는 플래시 메모리에 있어서의 또 다른 문제이다. 매 프로그램/소거 사이클링으로, 일부 터널링 전자들은 플로팅 게이트와 채널 영역 사이에 유전체 내에 트랩되어 임계 윈도우의 협소화를 초래한다. 이것은 종국에는 프로그램 및 판독 오류들을 초래할 것이다. MLC 메모리는 오류에 대해 낮은 공차(tolerance)을 갖기 때문에, SLC 메모리에 비해 덜한 내구성을 갖는다.
SLC 부분과 MLC 부분으로 분할된 메모리
도 8은 발명을 실시하는데 적합한 물리적 메모리 아키텍처의 예를 도시한 것이다. 메모리 셀들(200)의 어레이(도 1 참조)는 제 1 부분(410) 및 제 2 부분(420)으로 분할된다. 제 2 부분(420)은 각 셀이 복수의 비트들의 데이터를 저장하는 고밀도 저장소로서 구성되는 메모리 셀들을 갖는다. 제 1 부분(410)은 각 셀이 제 2 부분보다는 적은 수의 비트들을 저장하는 낮은 밀도의 저장소로서 구성되는 메모리 셀들을 갖는다. 예를 들면, 제 1 부분(410) 내 메모리 셀들은 각각 1 비트의 데이터를 저장하기 위해 SLC 메모리로서 구성된다. 제 2 부분(420) 내 메모리 셀들은 각각 2 비트의 데이터를 저장하기 위해 MLC 메모리로서 구성된다. 셀당 1 비트의 데이터를 저장하는 제 1 부분은 D1이라 지칭될 것이며 셀당 2 비트의 데이터를 저장하는 제 2 부분은 D2이라 지칭될 것이다. 앞에 논의에 비추어, 제 1 부분은 제 2 부분에 비해 더 빠른 속도, 훨씬 더 넓은 오류 마진 및 더 많은 내구성으로 동작할 것이다.
D1(1-비트) 및 D3(3-비트) 부분들과 같이 2개의 부분들로 분할된 메모리는 전체 개시된 바를 참조로 본원에 포함시키는 2009년 12월 18일에 출원된 미국출원 US 12/642,584에 개시되어 있다.
도 9는 2-층 데이터 저장 시스템에서 SLC 부분과 MLC 부분 간에 데이터 경로를 개요적으로 도시한 것이다. 제 1 층은 인입되는 데이터를 위한 주 입력 버퍼이고, MLC 부분(420)에 비해 고 빠르고/더 높은 내구성/더 높은 비용의 메모리인 NAND 메모리의 SLC 부분(410)에서 동작한다. 제 2 층은 주 데이터 아카이브 저장소이며 더 느리고/더 낮은 내구성/더 낮은 비용의 메모리인 MLC 부분에서 동작한다.
도 9에 표기된 이러한 시스템에서 주 동작들은 다음과 같다:
1. SLC 부분에 호스트 데이터 또는 제어 데이터 기입.
2. 폐용 SLC 블록을 부분적으로 재활용하기 위해 SLC 부분 내에 데이터 카피로서, '콤팩션'이라고도 함.
3. 일반적으로 긴 순차적 기입들을 위해 사용되는 것으로, MLC 부분에 호스트 데이터의 직접적 기입.
4. 데이터가 SLC에서 MLC 부분으로 이동하는 것으로, '폴딩'이라고도 함.
5. MLC 블록 재활용을 위해 MLC 부분 내에 데이터 카피로서, 'MLC 콤팩션'이라고도 함.
위에 구조는 주로 상이한 어드레싱 수법들 및 어드레스가능한 데이터 유닛 입도의 사용에 관계된 그외 많은 다른 추가의 특징들과 함께 구축될 수 있다.
도 10은 도 9에 도시된 SLC 층을 더 상세히 도시한 것이다. SLC 층(위에 도면 참조)의 전형적인 구조는 복수의 블록들로서 일반적으로 한 개의 기입/업데이트 블록 데이터과 블록 재활용 동안 카피되는 데이터를 위한 한 개의 재배치/콤팩션 블록을(혹은 이들은 조합될 수 있다) 사용한다. 다음 주 규칙들이 일반적으로 적용된다:
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 및 D3 분할들을 가진 메모리에서, 3 SLC 블록들은 1 MLC 블록에 폴딩(재배치)된다.
바이너리 캐시에서 SLC 업데이트 블록들로 그리고 MLC 블록들로 데이터의 퇴거는 최소로 최근에 기입되는 것에 기초한다. 모든 시스템들에서 문제는 대부분의 데이터(예외는 바이너리 캐시 내에 있는 동안 업데이트되는 데이터이다)가 먼저 SLC 블록들로 가기 때문에 이것이 거의 완전히 FIFO 버퍼로서 작동한다는 것이다. 이어서 모든 데이터가 MLC 블록들로 간다. SLC 부분 및 MLC 부분 둘 다에서, 데이터는 패딩(padding)(완전한 어드레싱 유닛을 만들기기 위해)에 기인하여, 혹은 블록들을 콤팩션하여 폐용 공간을 재활용하기 위해 많은 횟수로 카피될 수 있다. 스트레스 팩터(기입 증폭이라고도 함)는 높으며 SLC 및 MLC 블록 분할들 모두에 적용된다. SLC 내 데이터는 또한 MLC(이중 할당) 내에 할당되는데, 이것은 이중-예산에 기인하여 시스템에서 블록들의 요구되는 수를 증가시킨다.
일반적으로 종래 기술의 시스템들에서, 주요 방법은 더 미세한 입도 유닛들을 사용하는 것인데, 이것은 하이-엔드 처리 및 큰 RAM 요건들을 취하는 것으로, 가외의 비용 및 파워 소비를 추가한다.
또한, 4KB와 같이 매우 작은 유닛은 판독 및 데이터 카피(업데이트에 기인한) 동안 최대 병행도가 달성될 수 없을 정도로 블록들 간에 흩어지는 것인, 데이터가 단편화되는 문제를 야기한다. 또한, 작은 업데이트가 전체 블록(들)의 카피를 촉발할 수 있기 때문에 카피량이 증가한다.
활동에 기초하여 메모리 분할들에 걸쳐 선택적으로 분포되는 작은 논리 그룹들을 사용한 블록 관리 시스템
작은 논리 그룹들
발명은 위에 문제들, 특히 기입 증폭을 증가시키는 SLC 블록들의 바람직하지 못한 FIFO 버퍼 거동, 병행도를 감소시키는 것인 데이터의 단편화, 큰 RAM 및 높은 파워를 요구하는 것인 처리의 높은 강도, 비효율적이고 낭비적인 SLC 블록들 내 데이터에 대한 이중의 용량 예산을 해결하는 아키텍처를 갖는다.
발명의 일측면에 따라, 비휘발성 메모리에는 호스트로부터 정연한 논리 어드레스 범위가 논리 그룹들로 분할되고 블록이 다수 논리 그룹들의 데이터를 저장하는 블록 관리 시스템이 제공된다. 각 논리 그룹은 호스트 기입의 크기이지만 적어도 메모리에 의해 지원되는 최대 병행도의 판독 또는 기입 유닛인 페이지 또는 메타페이지의 크기와 적어도 동일한 자릿수 내지는 더 큰 자릿수의 범위를 갖는 크기를 갖는다. 논리 그룹의 크기를 소거 블록의 크기에서 분리되게 하고 호스트 기입들의 크기 및 특성에 더 호환이 되는 크기를 갖게 함으로써, 논리 그룹은 수행에 영향을 미치는 것인 과도한 재기입들을 촉발하지 않으면서도 어드레싱을 단순화하고 한정된 시스템 자원을 절약하는 이익을 제공한다.
더 작은 크기의 논리 그룹들의 구현은 동시에 더 작은 어드레스 테이블이 사용될 수 있게 하면서도 과도한 재기입들을 촉발하지 않는 이익을 갖는다. 이것은 값비싼 외부 RAM에 대한 필요성이 없이 어드레스 테이블이 제어기 칩 상에 집적된 RAM 내 캐시될 충분히 콤팩트한 크기를 갖는 이익을 갖는다.
도 11은 본 발명에 따라 블록 관리 시스템의 메모리 구성에서 페이지를 도시한 것이다. 근본적으로, 호스트는 자신들의 논리 어드레스인 LBA(논리 블록 어드레스)에 의해 확인되는 데이터 유닛들을 기입한다. 메모리는 병렬로 논리 페이지(62)의 데이터로 동작한다. 페이지(62)는 다수의 LBA들을 위한 데이터를 유지할 수 있다. 예를 들면, 각 페이지는 LBA들의 M 유닛들로부터의 데이터를 유지하며, 페이지, 즉 페이지(LP0)는 LBA0 내지 LBAM-1의 데이터로 채워질 수 있다. 메모리 아키텍처에 따라, 페이지는 메모리 플레인에서 대응하는 한 그룹의 판독/기입 회로들에 의해 서비스될 수 있는 적어도 한 그룹의 셀들/데이터이다. 바람직한 실시예에서, 페이지는 최대 병행도를 달성하기 위해 도 5에 관련하여 기술된 바와 같이 메타페이지이다. 예를 들면, 메타페이지는 32kB 내지 64kB의 크기이다. 4kB의 호스트 기입 클러스터에 있어서 메타페이지는 8 내지 16 클러스터들을 유지할 수 있다.
도 12는 블록 관리 시스템에서의 논리 그룹를 도시한 것이다. 어드레싱을 단순화하기 위해서, 각 페이지(62)를 독립적으로 추적하는 대신에, 한 그룹의 페이지들이 한 유닛으로서 추적된다. 근본적으로, 호스트 시스템의 논리 어드레스되는 공간은 논리 그룹들(350)로 분할되고, 각 그룹은 일 범위의 LBA들 또는 논리 페이지 수들에 의해 정의되는 논리 어드레스 공간의 일부분이다. 예를 들면, 논리 그룹(LG0)은 논리 페이지 수들 LP0 내지 LPN-1을 가진 N 논리 페이지들로 구성되고, 다음 논리 그룹 LG1은 논리 페이지 수들 LPN 내지 LP2N-1을 가진 N 논리 페이지들로 구성된다, 등등.
논리 그룹(350)은 순차적 순서로 자신의 논리 페이지 수들로 메모리에 저장되며 따라서 이 내에 페이지들은 자체-색인된다. 이에 따라, 논리 그룹 내 페이지들(62)에 대해 어드레싱하는 것은 페이지 레벨이 아니라 단순히 논리 그룹 레벨에서 추적을 유지함에 의한다. 그러나, 논리 그룹 내 페이지들의 업데이트들에 따라, 무효한 페이지들에 의해 점유된 공간을 재활용하기 위해서는 가비지 수거가 수행될 필요가 있다. 종래 기술의 시스템들에서, 논리 그룹은 소거 블록의 크기에 정렬하는 크기를 갖는다. 이에 따라, 소거 블록에 대한 가비지 수거는 단순히 논리 그룹의 유효 데이터를 회수(salvage)하고 전체 논리 그룹을 새로운 블록에 재기입하는 것이다.
도 13a는 복수의 논리 그룹들로부터 데이터를 수용하는 소거 블록을 도시한 것이다. 종래 기술의 시스템들과는 달리, 논리 그룹(350)의 크기는 소거 블록의 크기로부터 분리되고 소거 블록과 동일한 크기가 아니다. 논리 그룹(350)은 호스트 기입들의 크기 및 특성과 더욱 호환이 되게 하기 위해 축소된다. SLC 부분(410) 내 블록(310)(바람직하게 메타블록이다)은 P개의 논리 그룹들을 위한 데이터를 수용할 수 있다. 예를 들면, SLC 블록은 다음의 논리 그룹들: LG0, LG1, LG2, LG1', 등을 저장하는데 LG1'은 LG1의 업데이트된 버전이다.
논리 그룹들을 사용함으로써, 어드레싱은 덜 심해지며, 메모리 제어기와 작업하기 위해 고가의 오프-칩 RAM을 요구함이 없이 시스템 자원들을 덜 요망한다.
그러나, 소거 블록 크기는 플래시 메모리의 매 세대에 따라 증가하고 있기 때문에, 논리 그룹을 블록에 정렬시키는 종래 기술의 방법은 짧은 랜덤한 호스트 기입들에 최적이 아닌 시스템이 되게 한다. 이러한 유형의 호스트 기입 패턴들은 데스크탑 및 랩탑 컴퓨터들 및 스마트 모바일 장치들 하에 애플리케이션들에선 일반적이다. 빈번한 업데이트들 및 비순차적 기입들로 특징지워지는 이들 데이터 패턴들은 논리 그룹을 순차적 순서로 유지하기 위해 메모리의 더 많은 빈번한 재기입들을 야기하는 경향이 있다. 즉, 종래의 논리 그룹 크기는 다량의 기입 증폭을 야기하여 수행을 저하시키고 메모리를 조기에 마모되게 한다.
메모리는 SLC 부분(410) 및 MLC 부분(420)으로 분할된다. 블록 관리 이에 따라, 각 논리 그룹은 호스트 기입 유닛의 크기이지만 메모리에 의해 지원되는 최대 병행도의 판독 또는 기입 유닛인 적어도 메타페이지의 크기와 적어도 동일한 자릿수 내지는 더 큰 자릿수의 범위까지 축소된다. 이것은 빈번히 업데이트되거나 비순차적이고 과도한 재기입들을 촉발하지 않는 데이터 패턴들에 대해선 최적이 될 것이다. 예를 들면, 논리 그룹은 4 메타페이지들을 가질 수 있다. 메타페이지가 8 내지 16 호스트 클러스터들을 유지한다면, 논리 그룹은 32 내지 64 클러스터들을 유지할 수 있다. 동시에, 논리 그룹 크기는 어드레싱 자원에 대한 요망을 경감시킬 목적으로 절충으로서 합리적으로 증가될 수 있으므로 제어기 칩은 외부 RAM과 동작할 필요가 없다.
도 13b는 작은 논리 그룹들에 관하여 비휘발성 메모리에 호스트 기입들을 저장하는 수법을 도시한 흐름도이다.
단계(500): 유닛으로서 소거할 수 있는 메모리 셀들의 블록들로 비휘발성 메모리를 구성하는 단계로서, 각 블록은 복수의 페이지들을 저장하기 위한 것이며, 각 페이지는 소정 수의 논리 데이터 유닛을 병렬로 액세스하기 위한 것이며, 각 논리 유닛은 호스트에 의해 할당된 논리 어드레스를 갖는다.
단계(510): 호스트의 논리 어드레스 공간을 정연한 논리 어드레스들의 비중첩 부-범위들로 분할함으로써 복수의 논리 그룹들을 정의하는 단계로서, 각 논리 그룹은 적어도 한 페이지의 최소 크기와 블록 내 적어도 2개의 논리 그룹들에 들어맞는 최대 크기에 의해 정해진 범위 이내의 소정의 크기를 갖는다.
단계(520): 개개의 호스트 기입들을 버퍼링하는 단계.
단계(530): 개개의 호스트 기입들을 논리 그룹씩으로 스테이지하는 단계;
단계(540): 임의의 스테이지된 논리 그룹들을 비휘발성 메모리에 저장하는 단계.
단계(550): 종료.
바람직한 구현에서, 메모리는 SLC 부분과 MLC 부분으로 분할되고, 제 1, 제 2 및 제 3 동작 및 기능 층들을 포함한다. 제 1 및 제 2 층들은 SLC 부분에서 동작한다. 제 3 층은 MLC 부분에서 동작한다. 제 1 층은 처음에는 호스트로부터 기입 데이터를 저장하고 각 논리 그룹을 제 2 또는 제 3 층에 재배치하기 전에 데이터를 논리-그룹씩으로 스테이지하기 위한 것이다. 제 2 층은 논리-그룹 레벨에서 호스트 데이터를 저장하기 위해 SLC 블록들 풀에 활성 저장소를 제공한다. 풀이 충만되었을 때, 최소로 잠재적인 재기입들을 가진 논리 그룹들을, 고밀도로 저장하는 제 3 층으로 퇴거함으로써 더 많은 자리가 만들어진다.
이렇게 하여, 활성의 한 세트의 사용자 데이터가 더 빠른 SLC 메모리에 우선적으로 유지되고, SLC 메모리 내에 용량이 고갈되었을 때만 MLC 메모리 내에 저장하기에 더 적합한 선택된 논리 그룹들이 그에 퇴거될 것이다.
도 14는 본 발명에 따라 상이한 메모리 분할들에 걸쳐 블록들 및 페이지들을 관리하기 위한 시스템 아키텍처를 도시한 것이다. 메모리 어레이들 내 블록들 및 페이지들은 메모리 제어기(102)(도 1 참조) 내에 펌웨어(60)로서 거주하는 블록 관리 시스템에 의해 관리된다.
메모리는 SLC 부분(410) 및 MLC 부분(420)으로 분할된다. 블록 관리 시스템은 제 1의 단편화 캐시 층(412), 제 2의 논리 그룹 소팅 층(414) 및 제 3의 콜드 논리 그룹 아카이브 층(422)을 구현한다. 이들은 동작 및 기능 층들이다. 제 1의 2개의 층들(412, 414)은 SLC 부분(410)에서 동작하며, 제 3 층(421)은 MLC 부분(420)에서 동작한다.
제 1의 단편화 캐시 층(412)은 SLC 부분(410)의 바이너리 블록들(310)에 대해 동작하며, 처음에는 호스트로부터 데이터를 저장하고 각 논리 그룹을 MLC 부분(420)에 재배치하기 전에 메타페이지들을 논리-그룹씩으로 스테이지하기 위한 것이다. 스테이지 하는 것는 데이터를 전체 논리 그룹들에 모으기 위한 것이다. 모으기는 호스트 기입의 단편화들로부터 혹은 비휘발성 메모리 내 이미 저장된 현존하는 데이터과 결합하여 패딩함에 의해 될 수도 있을 것이다. SLC 부분(410)은 상주하는 바이너리 구역(402) 및 바이너리 캐시(404)인 2개의 구조들을 포함한다. 바이너리 캐시(404)는 주로 미세한 어드레싱 유닛(섹터)로 짧은 단편화들을 위한 저장소이며, 데이터는 SLC 블록들(310) 또는 MLC 블록들(320)로 이동/퇴거될 수 있다. 상주하는 바이너리 구역(402)은 전형적으로 NTFS 또는 이외 다른 파일 시스템 테이블 데이터만인, 짧은 업데이트들로 기지의 빈번하게 업데이트되는 영역들을 위해 유보된다.
제 2의 논리 그룹 소팅 층(414)은 SLC 업데이트/저장 블록들(310)의 풀에 논리-그룹씩으로 데이터를 저장한다. 이 풀에의 기입들은 호스트 기입들로부터 혹은 가비지 수거에 기인한 재기입들로부터 온다. 호스트 데이터가 주로 짧은 단편화에 대한 것이면, 이것은 제 1 층에서 제 2 층(414)으로 퇴거되기 전에 먼저 제 1 층(412)에 캐시된다. 호스트 데이터가 덜 단편화(중간 크기)된다면, 이 경우 완전한 논리 그룹을 가질 수 있게 되고, 제 2 층(414)에 직접 기입된다.
근본적으로, 제 2 층(414)은 단편화되고 중간 크기 호스트 기입들이 놓여지는 고속 SLC 저장 영역을 제공한다. 제 2 층이 없으며 제 1 층(412)은 근본적으로 데이터가 액세스될 수 있기 전에 데이터를 MLC 부분(420) 내 제 3 층(422)에 수송하기 위한 FIFO로서 작용하는 종래의 시스템들과는 달리, 이 제 2 층(414)은 한 세트의 작업 사용자 데이터를 고속 SLC 부분(410)에 유지한다.
이에 따라, 사용자는 SLC 업데이트/저장 블록들 풀이 채우지고 있을 때 높은 수행 기입들을 경험할 것이다. 풀이 충만되었을 때만 시스템은 자리를 만들기 위해 일부 논리 그룹들을 제 3 층(MLC)으로 이동할 것이다.
핫/콜드 논리 그룹 소팅
플래시 소거가능한 블록들로 구성된 비휘발성 메모리는 각 데이터 유닛에 할당된 온도에 따라 데이터 유닛들을 소팅하는데, 더 높은 온도는 데이터 유닛이 가비지 수거 동작들에 기인한 후속되는 재기입들을 겪을 더 높은 확률을 나타낸다. 데이터 유닛들은 호스트 기입으로부터 혹은 재배치 동작으로부터 온다. 데이터는 SLC 및 MLC과 같은 서로 다른 저장 부분들에 혹은 이들의 온도들에 따라, 서로 다른 동작 스트림들에 저장하기 위해 소팅된다. 일반적으로, 온도 소팅 기술은 MLC 부분들뿐만 아니라 SLC에서 동작할 수 있다. 이것은 재기입들을 최소화하기 위해 유사한 온도의 데이터가 이의 온도에 적합한 방식으로 처리될 수 있게 한다. 데이터 유닛의 예들은 논리 그룹 및 블록을 포함한다.
바람직한 구현에서, 메모리는 SLC 부분과 MLC 부분으로 분할되고, 제 1, 제 2 및 제 3 동작 및 기능 층들을 포함한다. 제 1 및 제 2 층들은 SLC 부분에서 동작한다. 제 3 층은 MLC 부분에서 동작한다. 제 1 층은 처음에는 호스트로부터 기입 데이터를 저장하고 각 논리 그룹을 제 2 또는 제 3 층에 재배치하기 전에 데이터를 논리-그룹씩으로 스테이지하기 위한 것이다. 제 2 층은 논리-그룹 레벨에서 호스트 데이터를 저장하기 위해 SLC 블록들 풀에 활성 저장소를 제공한다. 풀이 충만되었을 때, 최소의 잠재적 재기입들을 가진 논리 그룹들을, 더 높은 밀도로 저장하는 제 3 층으로 퇴거함으로써 더 많은 자리가 만들어진다.
제 2 층 내에 각 논리 그룹은 가비지 수거에 기인한 미래의 재기입들에 대한 이의 가능성에 의해 서열화된다. 가장 콜드한 논리 그룹을 먼저 제 3 층으로 퇴거되게 하여 유한한 범위로부터 온도가 각 논리 그룹에 할당된다. 서열화 기준들은 논리 그룹이 경험하고 있는 업데이트 레이트, 및 논리 그룹이 업데이트들 사이에 있는 시간의 길이를 포함한다. 제 2 메모리 층에서 제 3 메모리 층으로 재배치되는 논리 그룹들은 제 3 메모리 층에서 액세스될 것이다. 제 2 메모리 층에 남아 있는 논리 그룹은 제 2 메모리 층에서 직접 액세스될 것이다.
도 15는 도 14에 도시된 제 2 층을 더 상세히 도시한 것이다. 논리 그룹들을 저장하기 위해 바이너리 블록들(310) 풀이 제공된다. 각 블록(310)이 채워지고 이 내에 논리 그룹들의 일부가 업데이트될 때, 블록은 가비지-수거될 필요가 있게 될 것이다. 블록 내 유효 논리 그룹들은 새로운 블록에 재배치된다. 풀 내에 논리 그룹들은 이의 '온도'에 따라 소팅된다.
제 3 층(422)으로 이동될 논리 그룹은 이의 '온도'에 따라 선택된다. 또한, 제 2 층(414)은 논리 그룹들이 재기입들을 필요로 할 가능성이 얼마나 되는가에 의해 이들을 서열화하고 소팅하기 위한 편의를 제공한다. 논리 그룹은 이것이 빈번히 업데이트되며 논리 그룹이 더 많은 가비지 수거들에 기인하여 더 많은 재기입들을 필요로 할 것이기 때문에 짧은 랜덤한 호스트 기입들로부터 오는 데이터를 내포할 때 '핫'으로 간주된다. 반대로, 논리 그룹은 이것이 거의 업데이트되지 않고 논리 그룹이 거의 또는 전혀 재기입들을 요구하지 않는 비교적 정적인 채로 있게 될 것이기 때문에 긴 순차적인 호스트 기입들인 데이터를 내포할 때 '콜드'로 간주된다. 한 '온도' 서열화 기준은 논리 그룹이 경험하는 업데이트 레이트이다.
이에 따라, 제 2 층(414) 내 SLC 블록 풀이 충만될 때는 언제나, 가장 콜드한 온도를 가진 논리 그룹들은 제 3 층(422) 내 MLC 풀로 우선적으로 퇴거된다.
제 2 층(414)에서 제 3 층(422)으로 재배치된 논리 그룹들은 제 3 층(422)에서 액세스될 것이다. 제 2 층(414)에 남은 논리 그룹들은 제 2 층(414)에서 계속하여 액세스될 것이다.
활성적으로 업데이트되는 논리 그룹과 덜 활성적으로 업데이트되는 논리 그룹의 소팅 및 구별은 제 1 층(412) 및 제 2 층(414)이 SLC 메모리 부분(410)에서 동작하고 제 3 층(422)이 MLC 부분(420)에서 동작할 때 중요하다. SLC 메모리 내 활성 논리 그룹들을 작업 세트로서 유지하고 비활성인 것들만을 MLC 메모리에 이동함으로써, 논리 그룹에의 업데이트들이 있을 때는 언제나 이 논리 그룹에의 재기입들은 MLC 메모리에서 최소화된다. 그러면 이것은 논리 그룹이 겪을 총 재기입들의 수를 최소화한다.
제 3 층(422)은 제 2 층으로부터 퇴거된 가장 콜드한 논리 그룹들을 고밀도로(MLC) 저장한다. 이 프로세스는 SLC 데이터를 MLC 데이터로 '폴딩'한다라고도 한다.
핫 및 콜드 논리 그룹들을 소팅하고 더 '핫'한 논리 그룹들을 제 2 층에 보유하는 것은 더 빠르고 더 내구성있는 SLC 메모리 내 이들 잠재적으로 수행에 영향을 받는 데이터를 사용자들이 액세스할 수 있게 한다.
소팅 수법이 논리 그룹 레벨에서 소팅하는 것에 관하여 기술되었으나, 발명은 이를테면 단편화 레벨에서 소팅하거나 블록 레벨에서 소팅하는 것과 같이, 이외 다른 데이터 유닛들의 레벨에서 소팅하는 것에 똑같이 적용될 수 있음이 이해될 것이다.
종래 기술의 시스템들에 따라, 바이너리 캐시로부터 데이터를 SLC 업데이트 블록들 및 MLC 블록들로의 퇴거는 블록 레벨 상에서 적용되는, 최소로 최근에 기입되는 것에 기초한다. 이것은 이것이 데이터가 얼마나 오래 전에 호스트(블록은 콤팩션에 기인하여 최근에 프로그램될 수 있지만 오래된 콜드 데이터를 내포한다)에 의해 프로그램되었는가의 사실에 관계없이 실제로 최소로 최근에 프로그램되 블록에 기초함을 의미한다.
또한, 퇴거는 논리 그룹 퇴거가 가장 많은 빈 공간을 내어준다면, 개개의 동작의 증가하는 효과에 중점을 두고, 동작 효율 기준들에 흔히 기초한다(특히 바이너리 캐시에서).
위에 모든 경우들에 있어서 문제는 이들이 이를테면 업데이트들의 빈도, 및 심지에 얼마나 오래 전에 데이터가 기입되었는가와 같은 호스트 업데이트 패턴을 고려하지 않는다는 것이다. 결국, 곧 액세스될 것으로 보이는 데이터는 아카이브될 수도 있다.
미국특허 7633799는 LRU, 기입 및 판독 지령들에 의한 히트 레이트와 같은 서로 다른 데이터 액세스 패턴 기준들의 사용들을 개시한다. 그러나, 종래 기술은 선택을 효율적이게 하고 동시에 과도한 처리, RAM 및 제어 업데이트 요건들을 피하게 하는 것과 같은, 데이터 저장 시스템에서 작동하게 하는 구체적인 실질적 방법들을 교시하지 않는다.
본 발명에서 방법은 기입 증폭을 최소화하는 것을 목적으로 한다. 기입 증폭은 시스템 내 다른 곳에서 미래의 기입에 의해 야기된다. 기입 증폭은 물리적 블록에 혼재되는 활성(핫) 및 비활성(콜드) 데이터가 함께 위치함에 의해 야기된다. 블록 내에 핫 및 콜드 데이터가 혼재되었을 때는 언제나, 블록 내 데이터는 종국에는 다른 블록으로 재배치 또는 재기입될 것을 필요로 할 것이다. 블록들이 더 커짐에 따라, 활성 및 비활성 영역들이 함께 위치되게 유지하는 것은 더 어려워진다.
발명은 저장소의 다음 층에 퇴거/아카이브할 최상의 데이터를 검출하는 방식으로 데이터를 소팅하는 일군의 실제적인 방법들을 제공한다. 방법들은 주로 기지의 원리들을을 사용하는데, 특히 이들은 액세스 패턴 및 이력을 분석하는 것에 기초한다. 데이터 소팅을 실제적이게 하는 것에 중점이 두어진다.
주요 방법들은 다음을 포함한다:
1. '온도' 값을 개개의 단편화들에 할당함으로써 어드레스가능한 데이터 유닛들(논리 그룹들)의 상대적 활성도를 서열화한다. 온도 값은 데이터 자신과 함께 혹은 별도의 테이블에, 혹은 어드레싱 엔트리들과 나란히 저장될 수 있다. 온도 값들 자체들은 다음에 기초할 수 있다:
a) 데이터 단편화들/유닛들을 위한 최소로 최근에 기입(호스트에 의해) 기준들;
b) 최근의 히트(액세스, 예를 들면, 판독) 레이트;
c) 데이터 단편화 길이(데이터가 짧을수록, 이것은 곧 히트될 가능성이 더 있다);
d) 데이터 연령의 표시자로서 데이터에 대한 블록 콤팩션 카피들의 수;
e) a) 및 b) 및 c)의 조합, 이것은 최상의 결과들을 내어준다.
2. 온도 값 '감소'를 제공한다. 예를 들면, 시간에 걸쳐 측정되었을 때, 히트 레이트는 하락할 수 있고, 이것은 온도 감소로 전환된다. 이것은 유한한 한 범위의 유용한 온도가 정의될 수 있게 하며, 방법의 사용을 실제적이게 한다. 온도는 다음의 방법들에 의해 감소된다:
a) 온도의 제한된 동적 범위 내에서 동작하는 것으로(예를 들면 3 -비트 온도 경우에, 0 = 매우 콜드, 7 = 매우 핫), 극도의 콜드 경우들에 대해 0 값들을 초과하지 않게 온도를 바이어스하거나, 극도의 핫 경우들에서 7을 초과하지 않게 온도를 포화한다. 즉, 모든 극도의 경우들은 어느 시점 후에, 동일한 값들로서 0 또는 7을 갖는다.
b) 단편화들/유닛들이 값들의 극도의 포화 및 정확성의 상실을 피하게 온도 값들의 값들을 균일화(leveling)한다. 즉, 제한된 동적 범위를 최대 유효성의 영역 내에서 사용한다.
3. 블록-레벨 온도 기준들을 사용하는 것으로, '온도'는 단편화 또는 논리 그룹 레벨 상에서가 아니라 블록 레벨 상에서 추적된다. 두 주요 경우들은 다음을 포함한다:
a) '온도'를 명시적으로 추적한다;
b) 데이터 연령에 의해서 혹은 핫/콜드함의 정도에 의해 블록 리스트 내 블록들을 소팅함으로써 암묵적으로 추적한다.
일실시예에서, 온도 소팅은 논리 그룹 레벨에서 한다. 가장 콜드한 논리 그룹은 먼저 제 2 층에서 제 3 층으로 퇴거될 것이다. 논리 그룹이 퇴거될 기준들은 다음을 포함한다.
1. 시간 스탬프들(TS). 온도는 논리 그룹의 시간 스탬프 값으로서 판정된다. 시간 스탬프는 논리 그룹이 언제 마지막으로 기입되었나를 나타낸다. 마지막으로 기입된 것이 더 길수록, 온도는 더 콜드하다. 실제로, 한정된 TS 범위를 사용할 때, 최대 TS 값을 넘어선 매우 오래된 논리 그룹들은 모두가 동일한 가장 콜드한 온도를 갖는 것으로 간주될 것이다. TS의 잇점은 이것이 액세스 패턴 변화에 대한 가장 빠른 응답을 갖는다는 것이다. 단점은 이전의 이력을 전혀 제공하지 않는다는 것이다.
시간 스탬프를 사용하는 예는 제 2 층의 바이너리 블록 풀 내에 각 논리 그룹에 대해 11-비트 시간 스탬프를 제공하는 것이다. 논리 그룹이 풀에 기입될 때, 한가지 선택지는 0(바이어스=0)의 초기 시간 스탬프 값을 할당하는 것이다. 이것은 기입된 데이터가 긴 순차적인 데이터일 때 적합할 수 있다. 또 다른 선택지는 X(바이어스=X)의 값을 갖는 것이다. 이것은 미지의 유형의 데이터에 대해 적합할 수 있고 X는 시간 스탬프 범위의 중간에 설정될 수 있다. 풀에 논리 그룹의 기입이 있을 때마다, 기입되는 논리 그룹의 시간 스탬프는 초기 값에 설정되고, 풀 내 현존하는 논리 그룹들의 시간 스탬프들은 1만큼 증분된다. 논리 그룹을 위한 시간 스탬프는 콤팩션 동안 변하지 않는다. 이렇게 하여, 시간 스탬프는 풀 내 논리 그룹들 각각이 얼마나 최근에 기입되었는가의 상대적 척도를 제공한다.
2. 기본적인 기입 카운트들. 온도는 논리 그룹의 기입 카운트로서 판정된다. 기입 카운트는 논리 그룹이 얼마나 많은 횟수로 기입되었는가를 혹은 업데이트들의 빈도를 나타낸다. 예를 들면, 논리 그룹의 새로운 업데이트에서, 기입 카운트는 증분된다. 기입 카운트의 잇점은 이것이 이력 정보를 유지한다는 것이다. 단점은 이것이 오래된 핫 논리 그룹들을 '스티키(sticky)'가 되게 할 수 있다는 것이다.
3. 시간 스탬프 및 기입 카운트의 함수로서 온도. X의 초기 온도 값은 논리 그룹이 처음 기입될 때 0과 Max 사이이다. 값은 논리 그룹이 다시 기입된다면 증분되며(기입 카운트에서와 같이), 따라서 방법은 최근에 더 많은 횟수로 기입되는 논리 그룹들에 바이어스를 더한다. 값은 모든 논리 그룹들에 대한 평균값이 1만큼 올라갈 때 감소된다(시간 스탬프의 근사적 MSB로서).
시간 스탬프 및 기입 카운트의 함수로서 3-비트 온도를 할당하는 예는 다음과 같다: 논리 그룹이 기입될 때, 이것은 0과 Max(7) 사이의 X의 온도를 갖는다. 논리 그룹이 다시 기입된다면, 온도는 1만큼 증분된다(기입 카운트에서와 같이). 온도는 다음의 상황 하에서 감소된다:
1. 모든 논리 그룹들에 대한 평균 온도가 1만큼 올라갈 때 -이것은 정점 위에서 포화할 수 있기 때문이다. 이것은 집단을 균일화(level)가 되게 작용한다:
2. 퇴거하기에는 충분한 논리 그룹들 LGT=0이 없을 때:
3. 평균이 임계값(예를 들면 MAX/2) 이상으로 갈 때;
4. 비를 0과 MAX 사이에서 균일화하기 위해서.
논리 그룹이 호스트에 의해 업데이트되고 바이너리 캐시에 혹은 업데이트 블록들(동일 업데이트 블록 내 이전에 기입되 논리 그룹의 완료시) 중 하나에 기입될 때마다, 이에 LGT의 다음 값이 할당된다:
- 순차적 스트림에 기입되는 어떠환 논리 그룹이든 O의 최저의 LGT 값이 할당된다.
- 논리 그룹이 어드레스 도약없이 짧은 기입들에 의한 연이은(back-to-back) 순차적 기입을 제외하고, 활성 바이너리 세트 내에 있다면(마스터 색인에 의해 어드레스되는), LGT 값은 어느 것이든 가장 큰 것으로 1만큼 증분되거나 가장 큰 콜드 LGT=3에 설정된다. LGT 값은 7의 가장 큰 콜드 값을 초과할 수 없다.
- 논리 그룹이 활성 바이너리 세트 내 있지 않다면(마스터 색인에 의해 어드레스되지 않는), 가장 큰 콜드 LGT=3의 초기 LGT 값이 할당된다.
논리 그룹이 재배치 블록들 중 하나에 기입될 때 이에 최저의 콜드=0의 디폴트 LGT 값이 할당된다.
논리 그룹이 바이너리 캐시로부터 재배치 블록들 중 하나로 퇴거될 때, 이에 가장 큰 콜드=3의 LGT 값이 할당된다.
LGT=0을 가진 논리 그룹만이 퇴거되어 MLC 블록에 폴딩될 수 있다. 폴딩될 충분한 논리 그룹들이 없다면, 모든 LGT들은 감소된다.
도 16은 '핫' 논리 그룹 경우에 대해 논리 그룹들의 '온도' 소팅을 도시한 것이다. LG 온도는 업데이트 빈도와 연령과의 조합된 함수이다. 활성 바이너리 작업 세트(ABWS)는 제 2 층 내 SLC 블록들의 풀이다. 이것은 핫 논리 그룹들 및 블록들의 짧은 리스트를 나타내며, LGT(논리 그룹 온도) 값들이 추적되고 있다.
소팅은 논리 그룹들에 대한 LGT(논리 그룹 온도) 값들에 기초하여 행해진다. LGT 값들은 마스터 색인에 의해 현재 어드레스되는 제한된 수의 논리 그룹들에 대해 저장되어, 활성 바이너리 세트를 만든다. 마스터 색인은 제 2 층의 SLC 풀 내 모든 논리 그룹들을 리스트하는 테이블이다. 각 LGT는 크기가 3 비트이고 0(가장 콜드한) 내지 7(가장 핫한)의 범위를 갖는다.
모든 스트림들 내 모든 논리 그룹들이 소팅되나, 활성 바이너리 세트(마스터 색인에 의해 현재 어드레스되는 것들) 내 바이너리 블록들(업데이트 블록들, 재배치 블록들, 또는 폐쇄된 블록들에 저장된)에 기입되는 논리 그룹들만이 주어진 시간에 소팅되고 있고 LGT 값들이 마스터 색인에 저장된다.
GAT(비활성 바이너리 세트 내 바이너리 블록들 및 MLC 블록들)를 통해 어드레스되는 논리 그룹들은 똑같이 '매우 콜드한' 것으로 간주되며 디폴트에 의해 0의 최저 LGT 값을 갖는 것으로 간주된다. GAT는 논리 그룹들과 블록들간에 매핑을 추적 관리하는 룩업 테이블이다.
처음에는, MLC 블록에 거주하는 주어진 논리 그룹이 업데이트된다. 그러므로 이 논리 그룹을 위한 온도는 제로부터 올라간다. 이 논리 그룹이 가까운 미래에 얼마나 활성이 될 것인지는 명확하지 않기 때문에, 이에 LGT=3와 함께 중간 값 온도가 할당된다. 드러나는 바와 같이, 논리 그룹은 또 다른 5 회에 곧 업데이트된다. 각 업데이트 히트에 따라, 온도 LGT는 1만큼 증분되는데, 이것은 LGT=7의 최대 값까지 가져간다. 그후에, 논리 그룹에 대한 더 이상의 업데이트들은 없었고 따라서 LGT는 LGT=7에 그대로 있는다. 이 시점에서, 바이너리 풀은 충만되고 LGT=0을 가진 한 세트의 논리 그룹들이 MLC 층으로 퇴거(폴딩)되는 것으로 드러난다. 한 세트의 논리 그룹들의 이탈은 풀의 평균온도를 상승시켰으며 그러므로 SLC 풀 내 모든 남아있는 논리 그룹들의 온도는 1만큼 감소되고, 따라서 주어진 논리 그룹은 이제 LGT=6을 갖는다. 얼마후에, 주어진 논리 그룹에의 업데이트들이 없이, 또 다른 폴딩이 존재하는데, 이것은 주어진 논리 그룹의 LGT을 5로 감소시킬 것이다. 이 시점에서, 주어진 논리 그룹은 높은 온도를 가지며 SLC 풀 내 계속하여 '거주'할 것이다.
도 17은 '콜드한' 논리 그룹 경우에 대한 논리 그룹들의 '온도' 소팅을 도시한 것이다. 이 경우에, 제 3의 MLC 층 내에 거주하는 논리 그룹은 업데이트되고 제 2의 SLC 층 내 바이너리 풀로 복귀된다. 추가의 업데이트들 없이 바이너리 풀 내에 놓여진 후에, 온도는 LGT=0로 냉각된다. 풀이 충만되고 일부 논리 그룹들을 퇴거할 필요가 있을 때, 주어진 논리 그룹은 제 3의 MLC 층으로 다시 폴딩된다.
또 다른 실시예에서, 소팅은 블록 레벨에서 수행될 수 있다. 이것은 온도를 개별적으로 추적할 풀 내에 너무 많은 논리 그룹들이 있을 경우에 대안적 방법이다. 대신에, 온도는 블록 레벨에서 추적되며 블록내 모든 논리 그룹들은 마치 이들이 동일 온도를 갖는 것처럼 취급된다. 이 경우에 소팅 선택지들은 다음을 포함한다:
1. 동일한 바이너리 블록(명시적 블록 레벨 TS) 내 논리 그룹들에 대해 동일한 시간 스탬프 - 모델링하기 위해
- 각 바이너리 블록은 블록에 대해 기입되는 모든 논리 그룹들에 대해 동일한 TS를 갖는다.
- 블록들에 의해 핫 및 콜드 데이터를 소팅한다.
- TS = 현재 블록 TS. 현재 블록 TS는 각 새로운 데이터 업데이트 블록 폐쇄 후에 증분한다.
- 콤팩션 동안에 TS는 소스 블록들 내 TS들에 기초하여 근사화된다.
- 예를 들면, 시간 스탬프 TS는 8 비트(콤팩트된 TS=제 1 콤팩션 소스의 가장 큰 TS)이며, 혹은 6 비트(콤팩션 블록들에 대한 추적 평균 TS)일 수도 있을 것이다.
- 콜드 데이터를 바이어스할 수 있으나, (TS = 현재 TS - 바이어스), 최하에선 아니며, 선택지들은 바이어스 = 0 혹은 바이어스 = X이다.
2. 핫-콜드 데이터 바이너리 블록 소팅(블록 레벨 TS의 암묵적으로 구현) - 모델링할 필요는 없다.
- 각 바이너리 블록은 새로운 데이터 업데이트 블록들에 대해 시간 할당 순서로 UB 정보에 리스트된다. 블록에 대해 기입되는 모든 논리 그룹들에 대해 동일한 TS에 상응한다.
- 콤팩션 동안, 리스트 내 새로운 블록의 위치는 소스 블록 위치들에 따라 근사적으로 선택된다. 즉, 새로운 블록은 근사적으로 소스 블록과 동일한 온도를 갖는다.
- 콤팩션 동안에 TS는 소스 블록들 내 TS들에 기초하여 근사화된다.
- 리스트의 끝에 블록으로부터 논리 그룹들이 퇴거된다.
- 잇점은 이것이 가외의 기록들, 오버플로, 증분들, 등을 갖지 않는다는 것이다. 단일의 테이블 기록(record)은 없으나 함께 모두를 업데이트하기는 불가능한 복수의 BCI들(바이너리 캐시 색인들)이 있는 바이너리 캐시엔 매우 적합한다. 단점은 블록 기록들을 재-소팅하기 위해 데이터 카피들을 요구한다는 것이다.
위에 기술된 원리들은 비휘발성 또는 혼재될 수 있는 데이터 저장소의 2 이상의 층들을 가진 시스템에 적용한다. 같은 규칙들이 층들 중 하나 내에 특정 유형의 저장소, 예를 들면 바이너리 캐시 부-시스템 혹은 업데이트 블록들에 적용될 수 있다.
이 해결책의 잇점은 시스템 수행에 미치는 영향이 최소화되고 제어기 RAM 공간에 증가가 없다는 것이다.
LGT에 의해 핫/콜드 데이터를 분리하기 위한 블록 스트림들
또 다른 실시예에서, 데이터 유닛들은 이들의 온도들에 따라 각 동작 스트림 내에 블록들이 유사한 온도의 데이터만을 포함하게 서로 다른 블록 스트림들로 소팅된다. 목적은 가능한한 곧 그리고 기회가 될 때마다 핫 데이터를 콜드 데이터로부터 분리하는 것이다. 핫 데이터 및 콜드 데이터는 서로 다른 진부화 및 가비지 수거/재배치 스케쥴들을 갖는다. 예를 들면, 핫 데이터는 더 빠르게 폐용이 되어 더 빈번한 가비지 수거/재기입들을 요구할 것이다. 콜드 데이터가 핫 데이터와 혼재되지 않을 때, 불필요한 재기입들을 초래하지 않을 것이다. 대개, 핫 데이터는 한 블록에서 다른 블록으로 콜드 데이터의 재배치를 촉발함이 없이 자신이 폐용이 될 것이며, 콜드 블록들 내 콜드 데이터는 핫 데이터에 기인한 콤팩션들/재배치들 없이 그자리에 머물러 있을 것이다.
일예는 제 2 층 내 바이너리 블록들 풀에 넣어지는 호스트 기입들이 가능한한 곧 서로 다른 블록 스트림들로 소팅되는 것이다. 또 다른 예는 재배치 동작으로부터 오는 데이터 유닛이다.
도 18은 서로 다른 유형들의 기입들이 이들의 인지된 온도에 따라 상호작용식으로 어떻게 블록 스트림들로 소팅되는가를 도시한 것이다. 소팅은 인입되는 데이터와 함께 제 2 층에 소스에 적용되며, 또한 핫/콜드 블록들을 분리하기 위해 콤팩션에 의해 이동된 데이터에 적용한다.
일반적으로, 메모리 분할 내에는 도시된 바와 같이 서로 다른 소스들에 의해 발생된 서로 다른 유형의 데이터 스트림들이 있을 수 있다. 서로 다른 유형들의 데이터 스트림들 각각에 데이터 기입들은 앞서 기술된 온도에 의해 소팅될 수도 있었을 그의 자신의 업데이트 빈도들 및 무작위성을 갖는다.
바이너리 블록 풀 내에 블록들은 LGT>3을 가진 논리 그룹을 저장하기 위한 '핫' 블록 혹은 LGT=<3을 가진 '콜드' 블록으로서 지정된다. 온도는 기입 패턴을 관찰한 후에 곧바로 판정된다. 예를 들면, 논리 그룹이 처음으로 바이너리 블록 풀에 기입될 때, 이의 온도는 모르며 따라서 LGT=3(전에 3 -비트 예처럼 0과 7 사이)의 중간 온도가 할당된다. 논리 그룹은 냉(cool)한 것으로 지정된 블록에 기입된다. 다음 기입이 논리 그룹의 업데이트이라면, 스트림은 핫한 것으로 간주되며 업데이트된 논리 그룹은 핫 논리 그룹들을 저장하기 위해 다른 바이너리 블록에 기입된다.
한편, 연이은 기입들이 순차적이라면, 스트림은 콜드한 것으로 간주되고 연이은 논리 그룹들은 제 1 기입을 내포하는 콜드 바이너리 블록에 모두가 기입된다.
연이은 기입들이 순차적이며 소정의 기간 동안 경향이 계속된다면, 스트림은 일련의 긴 순차적인 기입들인 것으로 간주되고 직접 혹은 바이너리 블록 풀을 통해 MLC 부분에 폴딩되기 위해 보내진다. 직접적인 경우에, 스트림은 확인되는 즉시 우회 모드에 있는다. 콜드 혹은 심지어 핫 블록에 고립된 순차적인 스트림의 헤드는 종국에는 재배치될 것이다.
위에 기술된 서로 다른 데이터 스트림들은 사용자에 의해 생성될 수 있고, 그러므로 사용자 논리 분할로부터 올 수 있다. 분할 내 기입 스트림들의 일부는 재배치 동작들로부터 생성될 수도 있다.
분할들
일반적으로, 사용자 분할, OS(운영 시스템) 분할 및 '스티키' 바이너리 분할과 같은 서로 다른 논리 분할들이 유지될 수 있고, 각각은 자기 자신에 서로 다른 유형의 데이터 스트림들이 혼재할 수 있고 일부는 소정의 온도를 갖는다. 예를 들면, OS 분할에서, 시스템 데이터는 단편화되고 빠르게 변하는 것으로 알려져, 온도를 판정할 필요성 조차도 없다. 이것엔 단순히 핫 온도가 할당되고 핫 블록들에 저장된다. 바이너리 SLC 부분에 데이터가 머물러 있도록 한 '스티키' 분할에 있어서도 마찬가지이다. 이에 따라 이의 데이터 스트림은 항시 '핫'이며 핫 블록들에 저장된다.
분할에 LBA 데이터에 의해 분리 - 블록이 서로 다른 분할들로부터 오는 데이터를 갖지 않음을 의미한다. 서로 다른 분할들 내 데이터는 서로 다른 애플리케이션들(예를 들면 하나에선 OS 그리고 또 다른 것에선 사용자)에 의해 기입되고 이들 기입들은 자주 인터리브하지 않는 것으로 가정한다. OS가 많은 지령들을 기입할 수 있다면, 사용자는 많이 기입하나 많은 인터리브는 없다. 서로 다른 분할들로부터 서로 다른 블록들로의 기입들을 분리함으로써, OS 기입들에 의해 촉발되는, 예를 들면 사용자 데이터 및 그 반대도 이의 콤팩션/재배치가 감소될 것이다.
블록들 및 논리 그룹들은 분할 경계들 없이 LGT에 의해 소팅된다. 이것은 분할 당 다수의 폐쇄된 블록들을 예산하는 것이 필요하지 않고 블록들은 요구가 있을 때 분배됨을 의미한다. 예를 들면, OS 분할은 활성이고 사용자 분할은 그렇지 않다면, 모든 사용자 분할의 논리 그룹들이 콜드 상태로 소팅되고 MLC 부분에 폴딩될 것이기 때문에 모든 폐쇄된 업데이트 블록들까지가 OS 분할에 할당될 수 있다.
스트림당 복수의 업데이트 블록들에 대한 지원
스트림으로부터 기입들은 복수의 블록들에 저장될 수 있다. 제 1 논리 그룹이 제 1 블록에 부분적으로 기입되고 이어 다른 제 2 논리 그룹의 기입이 이어질 때마다, 제 2 논리 그룹은 후속되는 기입들이 불완전한 데이터를 공급하여 제 1 논리 그룹을 완성할 것이라 기대하고 제 2 블록에 기입된다. 이것은 단편화를 감소시킬 것이다. 소정 수의 업데이트 블록들까지가 이 목적을 위해 동시에 개방될 수 있다. 뿐만 아니라, 불완전한 논리 그룹은 불완전한 데이터를 패딩함으로써 완전해진다.
도 19는 메모리 저장 및 동작들을 위한 온도 소팅의 수법을 도시한 흐름도이다.
단계(600): 비휘발성 메모리를 함께 소거할 수 있는 메모리 셀들의 블록들로 구성하는 단계.
단계(610): 온도를 할당함으로써 각 데이터 유닛을 서열화하는 단계로서, 더 높은 온도는 데이터 유닛이 가비지 수거 동작들에 기인하여 후속되는 재기입들을 겪을 더 높은 확률을 나타낸다.
단계(620): 데이터 유닛의 온도에 따르는 방식으로 데이터 유닛에 동작을 수행하는 단계.
단계(630): 종료.
도 20은 논리 그룹 레벨에서 온도 소팅의 수법을 도시한 흐름도이다.
단계(700): 비휘발성 메모리를 함께 소거할 수 있는 메모리 셀들의 블록도로 구성하는 단계.
단계(710): 비휘발성 메모리를 SLC 부분과 MLC 부분으로 분할하는 단계로서, SLC 부분 내 메모리 셀들 각각은 1 비트의 데이터를 저장하며 MLC 부분 내 메모리 셀들 각각은 1 비트 이상의 데이터를 저장한다.
단계(720): 호스트의 논리 어드레스 공간을 정연한 논리 어드레스들의 비중첩 부-범위들로 분할함으로써 복수의 논리 그룹들을 제공하는 단계로서, 논리 그룹들은 복수의 논리 그룹들이 블록 내에 들어맞는 크기를 갖는다.
단계(730): 논리 그룹씩으로 데이터를 SLC 부분의 각 블록에 저장하는 단계.
단계(740): SLC 부분에 저장된 각 논리 그룹을 온도에 의해 서열화하는 단계로서, 더 높은 온도는 논리 그룹이 가비지 수거 동작들에 기인하여 후속되는 재기입들을 겪을 더 높은 확률을 나타낸다.
단계(750): SLC 부분 내 자리를 비울 요망에 응하여, 가장 콜드한 온도를 가진 논리 그룹을 SLC 부분에서 MLC 부분으로 우선적으로 재배치하는 단계
단계(760): 종료.
도 21은 블록 레벨에서 온도 소팅의 수법을 도시한 흐름도이다.
단계(800): 비휘발성 메모리를 함께 소거할 수 있는 메모리 셀들의 블록들로 구성하는 단계.
단계(810): 비휘발성 메모리를 SLC 부분과 MLC 부분으로 분할하는 단계로서, SLC 부분 내 메모리 셀들 각각은 1 비트의 데이터를 저장하며 MLC 부분 내 메모리 셀들 각각은 1 비트 이상의 데이터를 저장한다.
단계(820): SLC 부분에 저장된 각 논리 그룹 블록을 온도에 의해 서열화하는 단계로서, 더 높은 온도는 블록이 가비지 수거 동작들에 기인하여 후속되는 재기입들을 겪을 더 높은 확률을 나타낸다.
단계(830): SLC 부분 내 자리를 비울 요망에 응하여, 가장 콜드한 온도를 가진 블록 내 데이터를 SLC 부분에서 MLC 부분으로 우선적으로 재배치하는 단계.
단계(840): 종료.
본 발명의 다양한 측면들이 어떤 실시예들에 관하여 기술되었을지라도, 발명은 첨부되 청구항들의 전체 범위 내에서 보호될 자격이 있음이 이해된다.

Claims (20)

  1. 호스트로부터 데이터를 비휘발성 메모리에 저장하는 방법에 있어서,
    함께 소거할 수 있는 메모리 셀 블록들로 상기 비휘발성 메모리를 구성하는 단계로서, 각 블록은 복수의 페이지들을 저장하고, 각 페이지는 소정 수의 논리 유닛의 데이터를 병렬로 액세스하고, 각 논리 유닛은 상기 호스트에 의해 할당된 논리 어드레스를 갖는, 비휘발성 메모리를 구성하는 단계;
    상기 호스트의 논리 어드레스 공간을 정연한 논리 어드레스들의 비중첩 부-범위들로 분할함으로써 복수의 논리 그룹들을 정의하는 단계로서, 각 논리 그룹은 적어도 한 페이지의 최소 크기와 블록 내 적어도 2개의 논리 그룹들에 들어맞는 최대 크기에 의해 정해진 범위 이내의 소정의 크기를 갖는, 복수의 논리 그룹들을 정의하는 단계;
    개개의 호스트 기입들을 버퍼링하는 단계;
    상기 개개의 호스트 기입들을 논리 그룹씩으로 스테이지하는 단계; 및
    임의의 스테이지된 논리 그룹들을 상기 비휘발성 메모리에 저장하는 단계를 포함하는, 방법.
  2. 제 1 항에 있어서, 상기 최대 크기는 호스트 기입의 크기보다 한 자릿수까지 더 큰, 방법.
  3. 제 1 항에 있어서, 페이지는 32 내지 64 킬로바이트 사이의 크기를 갖는, 방법.
  4. 제 1 항에 있어서, 상기 논리 그룹은 1 내지 4 페이지들의 범위에서 선택된 크기를 갖는, 방법.
  5. 제 1 항에 있어서, 상기 비휘발성 메모리를 SLC 부분 및 MLC 부분으로 분할하는 단계를 더 포함하고, 상기 SLC 부분 내 메모리 셀들은 1비트의 데이터를 각각 저장하고 상기 MLC 부분 내 메모리 셀들은 1비트 이상의 데이터를 각각 저장하며;
    상기 버퍼링 및 스테이징하는 단계는 상기 SLC 부분에서 수행되는, 방법.
  6. 제 5 항에 있어서, 상기 SLC 부분에 저장된 데이터를 상기 MLC 부분에 카피하는 단계를 더 포함하는, 방법.
  7. 제 6 항에 있어서, 상기 SLC 부분 내에 블록들의 풀에 활성 저장소를 제공하는 단계를 더 포함하고,
    상기 SLC 부분에 저장되는 데이터를 상기 MLC 부분에 카피하는 단계는 상기 풀이 충만하게 된 것에 응하는, 방법.
  8. 제 5 항에 있어서, 상기 SLC 부분에 제 1 층 및 제 2 층을 제공하는 단계를 더 포함하고, 상기 버퍼링 및 스테이지하는 단계들은 상기 SLC 부분의 상기 제 1 층에서 수행되는, 방법.
  9. 제 8 항에 있어서, 상기 버퍼링 및 스테이지하는 단계는 논리 어드레스에 의해 어드레스될 수 있는 상기 호스트 기입의 데이터의 짧은 단편화(fragment)들을 수반하는, 방법.
  10. 제 8 항에 있어서, 상기 저장하는 단계는 상기 SLC 부분의 상기 제 2 층에서 수행되는, 방법.
  11. 비휘발성 메모리에 있어서,
    함께 소거할 수 있는 메모리 셀 블록들로 구성된 메모리 어레이로서, 각 블록은 복수의 페이지들을 저장하고, 각 페이지는 소정 수의 논리 유닛의 데이터를 병렬로 액세스하고, 각 논리 유닛은 상기 호스트에 의해 할당된 논리 어드레스를 갖는, 메모리 어레이;
    상기 호스트의 논리 어드레스 공간을 정연한 논리 어드레스들의 비중첩 부-범위들로 분할함으로써 복수의 논리 그룹들을 정의한 메모리 구조로서, 각 논리 그룹은 적어도 한 페이지의 최소 크기와 블록 내 적어도 2개의 논리 그룹들에 들어맞는 최대 크기에 의해 정해진 범위 이내의 소정의 크기를 갖는, 메모리 구조;
    개개의 호스트 기입들을 버퍼링하기 위한 버퍼; 및
    상기 개개의 호스트 기입들을 논리 그룹씩으로 스테이지하고, 임의의 스테이지된 논리 그룹들을 상기 비휘발성 메모리에 저장하는 것을 포함하는 동작들을 제어하는 상태머신을 포함하는, 비휘발성 메모리.
  12. 제 11 항에 있어서, 상기 최대 크기는 호스트 기입의 크기보다 한 자릿수까지 더 큰, 비휘발성 메모리.
  13. 제 11 항에 있어서, 페이지는 32 내지 64 킬로바이트 사이의 크기를 갖는, 비휘발성 메모리.
  14. 제 11 항에 있어서, 상기 논리 그룹은 1 내지 4 페이지들의 범위에서 선택된 크기를 갖는, 비휘발성 메모리.
  15. 제 11 항에 있어서, SLC 부분 및 MLC 부분을 갖는 상기 비휘발성 메모리를 더 포함하고, 상기 SLC 부분 내 메모리 셀들은 1비트의 데이터를 각각 저장하고 상기 MLC 부분 내 메모리 셀들은 1비트 이상의 데이터를 각각 저장하며;
    상기 상태머신은 상기 SLC 부분에서 상기 버퍼링 및 스테이징하는 동작들을 제어하는, 비휘발성 메모리.
  16. 제 15 항에 있어서, 상기 상태머신은 상기 SLC 부분에 저장된 데이터를 상기 MLC 부분에 카피하는 것을 제어하는, 비휘발성 메모리.
  17. 제 16 항에 있어서, 상기 SLC 부분 내에 블록들의 풀에 활성 저장소를 더 포함하고,
    상기 상태머신은 상기 SLC 부분에 저장되는 데이터를 상기 풀이 충만하게 된 것에 응하여 상기 MLC 부분에 카피하는 것을 제어하는, 비휘발성 메모리.
  18. 제 15 항에 있어서, 상기 SLC 부분에 제 1 층 및 제 2 층을 더 포함하고, 상기 상태머신은 상기 SLC 부분의 상기 제 1 층에서 상기 버퍼링 및 스테이지하는 동작들을 제어하는, 비휘발성 메모리.
  19. 제 18 항에 있어서, 상기 버퍼링 및 스테이지하는 단계는 논리 어드레스에 의해 어드레스될 수 있는 상기 호스트 기입의 데이터의 짧은 단편화들을 수반하는, 비휘발성 메모리.
  20. 제 18 항에 있어서, 상기 저장하는 단계는 상기 SLC 부분의 상기 제 2 층에서 수행되는, 비휘발성 메모리.
KR1020137031597A 2011-05-17 2012-05-11 활성 slc 및 mlc 메모리 분할들 간에 분포된 작은 논리 그룹들을 가진 비휘발성 메모리 및 방법 KR20140040137A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161487234P 2011-05-17 2011-05-17
US61/487,234 2011-05-17
US13/468,720 US20120297121A1 (en) 2011-05-17 2012-05-10 Non-Volatile Memory and Method with Small Logical Groups Distributed Among Active SLC and MLC Memory Partitions
US13/468,720 2012-05-10
PCT/US2012/037511 WO2012158514A1 (en) 2011-05-17 2012-05-11 Non-volatile memory and method with small logical groups distributed among active slc and mlc memory partitions

Publications (1)

Publication Number Publication Date
KR20140040137A true KR20140040137A (ko) 2014-04-02

Family

ID=47177278

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137031597A KR20140040137A (ko) 2011-05-17 2012-05-11 활성 slc 및 mlc 메모리 분할들 간에 분포된 작은 논리 그룹들을 가진 비휘발성 메모리 및 방법

Country Status (6)

Country Link
EP (1) EP2710475A1 (ko)
JP (1) JP2014513850A (ko)
KR (1) KR20140040137A (ko)
CN (1) CN103688246A (ko)
TW (1) TW201305817A (ko)
WO (1) WO2012158514A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9690698B2 (en) 2014-12-10 2017-06-27 SK Hynix Inc. Controller including map table, memory system including semiconductor memory device, and method of operating the same
US9886381B2 (en) 2015-11-23 2018-02-06 SK Hynix Inc. Memory system and operating method thereof
KR20190127980A (ko) * 2017-04-04 2019-11-13 마이크론 테크놀로지, 인크 가비지 컬렉션
US10558368B2 (en) 2015-12-29 2020-02-11 SK Hynix Inc. Memory system and operating method of the memory system

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8924636B2 (en) * 2012-02-23 2014-12-30 Kabushiki Kaisha Toshiba Management information generating method, logical block constructing method, and semiconductor memory device
US9430376B2 (en) * 2012-12-26 2016-08-30 Western Digital Technologies, Inc. Priority-based garbage collection for data storage systems
EP3176688B1 (en) * 2012-12-31 2022-01-26 SanDisk Technologies LLC Method and system for asynchronous die operations in a non-volatile memory
IN2013CH05362A (ko) 2013-11-21 2015-05-29 Sandisk Technologies Inc
US9542278B2 (en) 2013-12-26 2017-01-10 Silicon Motion, Inc. Data storage device and flash memory control method
KR102292172B1 (ko) 2014-06-23 2021-08-25 삼성전자주식회사 불휘발성 메모리 장치 및 메모리 컨트롤러의 동작 방법
CN105843748B (zh) * 2015-01-15 2019-06-11 华为技术有限公司 一种对内存中内存页的处理方法及装置
US9824092B2 (en) 2015-06-16 2017-11-21 Microsoft Technology Licensing, Llc File storage system including tiers
JP2017027540A (ja) * 2015-07-28 2017-02-02 株式会社東芝 半導体装置及び電子機器
KR101871471B1 (ko) * 2015-11-27 2018-08-02 후아웨이 테크놀러지 컴퍼니 리미티드 저장 장치에 의해 데이터를 저장하기 위한 방법 및 저장 장치
CN105677242B (zh) * 2015-12-31 2018-11-30 杭州华为数字技术有限公司 冷热数据的分离方法和装置
CN105760114B (zh) * 2016-02-05 2020-07-03 浪潮(北京)电子信息产业有限公司 一种并行文件系统资源管理方法、装置和系统
US10185658B2 (en) * 2016-02-23 2019-01-22 Sandisk Technologies Llc Efficient implementation of optimized host-based garbage collection strategies using xcopy and multiple logical stripes
TWI606336B (zh) 2016-04-21 2017-11-21 慧榮科技股份有限公司 儲存裝置及其控制單元、可用於儲存裝置的資料儲存方法
US11126544B2 (en) 2016-12-14 2021-09-21 Via Technologies, Inc. Method and apparatus for efficient garbage collection based on access probability of data
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
US10109361B1 (en) * 2017-06-29 2018-10-23 Intel Corporation Coarse pass and fine pass multi-level NVM programming
CN109634516A (zh) * 2017-10-09 2019-04-16 北京握奇智能科技有限公司 一种芯片存储器的读、写数据方法及系统
US10691358B2 (en) * 2018-06-14 2020-06-23 Silicon Motion, Inc. Memory controller and method capable of using different storing modes to store data units having different data sizes
CN110955384B (zh) * 2018-09-26 2023-04-18 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
US10629280B1 (en) * 2018-10-16 2020-04-21 Micron Technology, Inc. Methods for determining an expected data age of memory cells
WO2020087211A1 (en) * 2018-10-29 2020-05-07 Micron Technology, Inc. Slc cache allocation
CN109582248B (zh) * 2018-12-14 2022-02-22 深圳市硅格半导体有限公司 闪存数据的写入方法、装置及计算机可读存储介质
CN109887534B (zh) * 2018-12-29 2021-01-01 上海百功半导体有限公司 闪存器件及其边界字线配置方法/系统、存储介质/控制器
TWI701552B (zh) * 2019-03-22 2020-08-11 群聯電子股份有限公司 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元
TWI727327B (zh) * 2019-05-29 2021-05-11 群聯電子股份有限公司 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置
CN112051963B (zh) * 2019-06-06 2023-06-13 群联电子股份有限公司 数据写入方法、存储器控制电路单元以及存储器存储装置
US11237732B2 (en) * 2019-08-06 2022-02-01 Intel Corporation Method and apparatus to improve write bandwidth of a block-based multi-level cell nonvolatile memory
DE112019007666T5 (de) * 2019-08-27 2022-06-15 Micron Technology, Inc. Schreibpuffersteuerung in einem verwalteten Speichersystem
CN110618793A (zh) * 2019-09-18 2019-12-27 深圳市硅格半导体有限公司 一种减少gc处理量的闪存数据写入方法、系统及闪存
CN111273865B (zh) * 2020-01-16 2023-07-25 重庆邮电大学 一种基于可变便笺式存储器的任务分配及调度方法
CN112559388B (zh) * 2020-12-14 2022-07-12 杭州宏杉科技股份有限公司 数据缓存方法及装置

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5095344A (en) 1988-06-08 1992-03-10 Eliyahou Harari Highly compact eprom and flash eeprom devices
US5070032A (en) 1989-03-15 1991-12-03 Sundisk Corporation Method of making dense flash eeprom semiconductor memory structures
US5343063A (en) 1990-12-18 1994-08-30 Sundisk Corporation Dense vertical programmable read only memory cell structure and processes for making them
US5313421A (en) 1992-01-14 1994-05-17 Sundisk Corporation EEPROM with split gate source side injection
US6222762B1 (en) 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
US5315541A (en) 1992-07-24 1994-05-24 Sundisk Corporation Segmented column memory array
KR0169267B1 (ko) 1993-09-21 1999-02-01 사토 후미오 불휘발성 반도체 기억장치
US5661053A (en) 1994-05-25 1997-08-26 Sandisk Corporation Method of making dense flash EEPROM cell array and peripheral supporting circuits formed in deposited field oxide with the use of spacers
US5671388A (en) * 1995-05-03 1997-09-23 Intel Corporation Method and apparatus for performing write operations in multi-level cell storage device
US5903495A (en) 1996-03-18 1999-05-11 Kabushiki Kaisha Toshiba Semiconductor device and memory system
US5768192A (en) 1996-07-23 1998-06-16 Saifun Semiconductors, Ltd. Non-volatile semiconductor memory cell utilizing asymmetrical charge trapping
US6768165B1 (en) 1997-08-01 2004-07-27 Saifun Semiconductors Ltd. Two bit non-volatile electrically erasable and programmable semiconductor memory cell utilizing asymmetrical charge trapping
US7953931B2 (en) * 1999-08-04 2011-05-31 Super Talent Electronics, Inc. High endurance non-volatile memory devices
US7188228B1 (en) * 2003-10-01 2007-03-06 Sandisk Corporation Hybrid mapping implementation within a non-volatile memory system
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US20050144516A1 (en) 2003-12-30 2005-06-30 Gonzalez Carlos J. Adaptive deterministic grouping of blocks into multi-block units
US7752382B2 (en) * 2005-09-09 2010-07-06 Sandisk Il Ltd Flash memory storage system and method
US7633799B2 (en) 2007-03-30 2009-12-15 Sandisk Corporation Method combining lower-endurance/performance and higher-endurance/performance information storage to support data processing
TW200841343A (en) * 2007-04-02 2008-10-16 Apacer Technology Inc A data storage device consisting of NAND (Not-AND) flash memory and its data storing method
US20100169540A1 (en) * 2008-12-30 2010-07-01 Sinclair Alan W Method and apparatus for relocating selected data between flash partitions in a memory device
US8244960B2 (en) * 2009-01-05 2012-08-14 Sandisk Technologies Inc. Non-volatile memory and method with write cache partition management methods
US8094500B2 (en) 2009-01-05 2012-01-10 Sandisk Technologies Inc. Non-volatile memory and method with write cache partitioning
TWI385527B (zh) * 2009-02-10 2013-02-11 Phison Electronics Corp Mlc nand型快閃記憶體儲存系統及其控制器與存取方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9690698B2 (en) 2014-12-10 2017-06-27 SK Hynix Inc. Controller including map table, memory system including semiconductor memory device, and method of operating the same
US9886381B2 (en) 2015-11-23 2018-02-06 SK Hynix Inc. Memory system and operating method thereof
US10558368B2 (en) 2015-12-29 2020-02-11 SK Hynix Inc. Memory system and operating method of the memory system
KR20190127980A (ko) * 2017-04-04 2019-11-13 마이크론 테크놀로지, 인크 가비지 컬렉션

Also Published As

Publication number Publication date
EP2710475A1 (en) 2014-03-26
TW201305817A (zh) 2013-02-01
JP2014513850A (ja) 2014-06-05
WO2012158514A1 (en) 2012-11-22
CN103688246A (zh) 2014-03-26

Similar Documents

Publication Publication Date Title
KR101751571B1 (ko) 핫/콜드 데이터 소팅을 사용한 블록 관리를 갖는 비휘발성 메모리 및 방법
KR20140040137A (ko) 활성 slc 및 mlc 메모리 분할들 간에 분포된 작은 논리 그룹들을 가진 비휘발성 메모리 및 방법
US9141528B2 (en) Tracking and handling of super-hot data in non-volatile memory systems
US20120297121A1 (en) Non-Volatile Memory and Method with Small Logical Groups Distributed Among Active SLC and MLC Memory Partitions
CN105874541B (zh) 通过对非易失性存储器的分区内的读取访问的计数来检测存储器上的读取干扰
KR101584048B1 (ko) 비휘발성 메모리에서 예비 블록 관리 방법
US8593866B2 (en) Systems and methods for operating multi-bank nonvolatile memory
US9466383B2 (en) Non-volatile memory and method with adaptive logical groups
US8700840B2 (en) Nonvolatile memory with write cache having flush/eviction methods
US8094500B2 (en) Non-volatile memory and method with write cache partitioning
JP4362534B2 (ja) フラッシュメモリシステムにおけるハウスキーピング操作のスケジューリング
US8760957B2 (en) Non-volatile memory and method having a memory array with a high-speed, short bit-line portion
US8543757B2 (en) Techniques of maintaining logical to physical mapping information in non-volatile memory systems
KR101760144B1 (ko) 비휘발성 메모리 및 기록 캐시를 분할하는 방법
US20100174847A1 (en) Non-Volatile Memory and Method With Write Cache Partition Management Methods
US9342446B2 (en) Non-volatile memory system allowing reverse eviction of data updates to non-volatile binary cache
US8995183B2 (en) Data retention in nonvolatile memory with multiple data storage formats
US20100318720A1 (en) Multi-Bank Non-Volatile Memory System with Satellite File System
US8732391B2 (en) Obsolete block management for data retention in nonvolatile memory

Legal Events

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