KR102462048B1 - 이중 slc/qlc 프로그래밍 및 리소스 해제 - Google Patents

이중 slc/qlc 프로그래밍 및 리소스 해제 Download PDF

Info

Publication number
KR102462048B1
KR102462048B1 KR1020200070935A KR20200070935A KR102462048B1 KR 102462048 B1 KR102462048 B1 KR 102462048B1 KR 1020200070935 A KR1020200070935 A KR 1020200070935A KR 20200070935 A KR20200070935 A KR 20200070935A KR 102462048 B1 KR102462048 B1 KR 102462048B1
Authority
KR
South Korea
Prior art keywords
buffer
data
memory
release
storage device
Prior art date
Application number
KR1020200070935A
Other languages
English (en)
Other versions
KR20210099493A (ko
Inventor
카린 인바
샤이 베니스티
Original Assignee
웨스턴 디지털 테크놀로지스, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 웨스턴 디지털 테크놀로지스, 인코포레이티드 filed Critical 웨스턴 디지털 테크놀로지스, 인코포레이티드
Publication of KR20210099493A publication Critical patent/KR20210099493A/ko
Application granted granted Critical
Publication of KR102462048B1 publication Critical patent/KR102462048B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/409Read-write [R-W] circuits 
    • G11C11/4093Input/output [I/O] data interface arrangements, e.g. data buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • 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
    • 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/0626Reducing size or complexity of storage systems
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • 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
    • 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/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • 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
    • 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/5642Multilevel memory with buffers, latches, registers at input or output

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 대체적으로 개선된 포기-파인 프로그래밍에 관한 것이다. 먼저 SLC에 기록하고 이어서 SLC로부터 판독된 데이터로 QLC에 포기 기록을 수행하고, 이어서 SLC로부터 재판독된 데이터로 QLC에 파인 기록을 수행하기보다는, 동일한 버퍼를 사용하여 SLC에 대한 초기 기록과 병렬로 QLC에 대한 포기 기록이 수행될 수 있다. 일단 QLC에 대한 포기 기록이 완료되었고, SLC에 대한 기록이 또한 완료되었으면, 데이터 버퍼가 해제될 수 있다. 그러면, SLC에 기록된 데이터는 SLC로부터 판독되고, 처음에 그리고 한 번 리로케이션 버퍼를 통과하고, 이어서 파인 프로그래밍을 사용하여 QLC에 기록된다. 따라서, 데이터는 리로케이션 버퍼를 한 번만 통과하고, 리로케이션 버퍼는 그것을 통한 데이터의 단지 하나의 통과 후에 사용을 위해 확보될 수 있다.

Description

이중 SLC/QLC 프로그래밍 및 리소스 해제{DUAL SLC/QLC PROGRAMMING AND RESOURCE RELEASING}
본 발명의 실시예들은 대체적으로 QLC(quad-level cell)와 같은 MLC(multilevel cell)들에 대한 포기-파인(foggy-fine) 기록을 개선하고, 사용 후 버퍼 리소스들을 적절히 해제(release)하는 것에 관한 것이다.
데이터를 프로그래밍하거나 기록하는 것은 2개의 기록 페이즈들, 즉 포기 및 파인을 필요로 할 수 있다. 포기-파인 프로그래밍에서, 기록될 비트들은 간단히 한 번 기록될 수 없다. 오히려, 데이터는 포기 프로그래밍에 의해 먼저 기록될 필요가 있는데, 여기서 전압 펄스들이 제공되어 현재 상태를 더 해결된 상태, 그러나 완전히 해결되지는 않은 상태로 푸시한다. 완전히 해결된 상태로 데이터를 다시 기록하기 위해 포기 프로그래밍 후에 소정 시점에서 파인 프로그래밍이 수행된다.
포기-파인 프로그래밍을 수행하기 위해, 다수의 메가바이트가 다수회 프로그래밍될 수 있다. 다수의 프로그래밍을 수행하기 위해, 정확한 동일 데이터로 반복 프로그래밍을 수행하도록 다량의 데이터가 별도로 설정될 필요가 있다. 데이터를 저장하는 것은 버퍼 공간을 차지한다. 버퍼 공간은, 데이터가 적어도 두 번, 즉 한 번은 포기 그리고 한 번은 파인 기록될 때까지 해제될 수 없다. 버퍼 공간이 사용 중이기 때문에, 추가 데이터가 버퍼 공간에 배치될 수 없으며, 이는 더 느린 프로세싱 및 불충분한 버퍼 저장소로 이어진다.
해결책은 간단하게, 버퍼 저장 용량을 증가시키는 것이다. 그러나, 추가적인 버퍼 저장 용량을 추가하는 것은 더 큰 용량의 버퍼 저장 디바이스들에 대한 추가적인 자금을 요구한다. 추가적인 버퍼 저장 디바이스들, 또는 더 큰 버퍼 저장 디바이스들은 계속 축소되고 있는 디바이스들 내에서 더 많은 실면적(real estate)을 요구한다.
따라서, 개선된 포기-파인 프로그래밍에 대한 필요성이 당업계에 존재한다.
본 발명은 대체적으로 개선된 포기-파인 프로그래밍에 관한 것이다. 먼저 SLC(single-level cell)에 기록하고 이어서 SLC로부터 판독된 데이터로 MLC에 포기 기록(foggy write)을 수행하고, 이어서 SLC로부터 재판독된 데이터로 MLC에 파인 기록(fine write)을 수행하기보다는, 동일한 버퍼를 사용하여 SLC에 대한 초기 기록과 병렬로 MLC에 대한 포기 기록이 수행될 수 있다. 일단 MLC에 대한 포기 기록이 완료되었고, SLC에 대한 기록이 또한 완료되었으면, 데이터 버퍼가 해제될 수 있다. 그러면, SLC에 기록된 데이터는 SLC로부터 판독되고, 처음에 그리고 한 번 리로케이션(relocation) 버퍼를 통과하고, 이어서 파인 프로그래밍을 사용하여 MLC에 기록된다. 따라서, 데이터는 리로케이션 버퍼를 한 번만 통과하고, 리로케이션 버퍼는 그것을 통한 데이터의 단지 하나의 통과 후에 사용을 위해 확보될 수 있다.
일 실시예에서, 데이터 저장 디바이스는 SLC 메모리 및 MLC 메모리를 포함하는 하나 이상의 메모리 디바이스들; 및 하나 이상의 메모리 디바이스들에 커플링된 제어기를 포함하고, 제어기는, SLC 메모리에 데이터를 기록하도록; 데이터를 MLC 메모리에 포기 기록하도록 - 여기서, 데이터를 MLC 메모리에 포기 기록하는 것은 동일한 버퍼를 사용하여 데이터를 SLC 메모리에 기록하는 것과 병렬로 발생함 -; SLC 메모리로부터 데이터를 판독하도록; 그리고 SLC 메모리로부터 판독된 데이터를 MLC 메모리에 파인 기록하도록 구성된다.
다른 실시예에서, 데이터 저장 디바이스는 하나 이상의 메모리 디바이스들; 및 하나 이상의 메모리 디바이스들에 커플링된 제어기를 포함하고, 제어기는, 버퍼에 대한 제1 버퍼 해제 요청이 수신되었는지 여부를 결정하도록; 버퍼에 대한 제2 버퍼 해제 요청이 수신되었는지 여부를 결정하도록; 그리고 버퍼를 버퍼들의 이용가능한 버퍼 풀(buffer pool)로 해제하도록 구성된다.
다른 실시예에서, 데이터 저장 디바이스는 하나 이상의 메모리 디바이스들; 버퍼가 2개의 해제 요청들을 수신했다고 결정하기 위한 수단; 및 SLC 메모리에 기록하는 것과 병렬로 MLC 메모리에 포기 기록하기 위한 수단을 포함한다.
상기에 언급된 본 개시의 특징들이 상세히 이해될 수 있는 방식으로, 상기에 간략하게 요약된 본 개시의 보다 구체적인 설명이 실시예들을 참조하여 이루어질 수 있으며, 이들 실시예 중 일부가 첨부 도면에 예시되어 있다. 그러나, 첨부 도면은 단지 본 개시의 전형적인 실시예들을 도시하는 것이므로 본 개시의 범주를 제한하는 것으로 간주되지 않아야 한다는 것에 유의해야 하는데, 이는 본 개시가 다른 균등하게 유효한 실시예들을 허용할 수 있기 때문이다.
도 1은 일 실시예에 따른 데이터를 저장하기 위한 시스템의 개략도이다.
도 2a는 일 실시예에 따른 포기-파인 기록 프로세스의 개략도이다.
도 2b는 다른 실시예에 따른 포기-파인 기록 프로세스의 개략도이다.
도 3은 일 실시예에 따른, 추가 사용을 위해 버퍼가 해제될 수 있는지 여부를 결정하는 방법을 예시하는 흐름도이다.
도 4는 다른 실시예에 따른 데이터를 저장하기 위한 시스템의 개략도이다.
도 5는 다른 실시예에 따른, 추가 사용을 위해 버퍼가 해제될 수 있는지 여부를 결정하는 방법을 예시하는 흐름도이다.
도 6은 다른 실시예에 따른 데이터를 저장하기 위한 시스템의 개략도이다.
이해를 촉진하기 위해, 도면들에 공통인 동일한 요소들을 지시하기 위해, 가능한 경우, 동일한 도면 부호들이 사용되었다. 일 실시예에 개시된 요소들이 구체적인 언급 없이도 다른 실시예들에서 유익하게 이용될 수 있다는 것이 고려된다.
하기에서, 본 개시의 실시예들을 참조한다. 그러나, 본 개시는 설명된 특정 실시예들로 제한되지 않는다는 것이 이해되어야 한다. 대신에, 하기의 특징들 및 요소들의 임의의 조합이, 상이한 실시예들과 관련되든지 또는 그렇지 않든지 간에, 본 개시를 구현하고 실시하기 위해 고려된다. 게다가, 본 개시의 실시예가 다른 가능한 해법들에 비해 그리고/또는 종래 기술에 비해 이점을 달성할 수 있지만, 특정 이점이 주어진 실시예에 의해 달성되는지 여부는 본 개시의 제한이 아니다. 따라서, 하기의 태양들, 특징들, 실시예들, 및 이점들은 단지 예시적인 것이며, 청구항(들)에 명시적으로 언급된 경우를 제외하고는 첨부된 청구항들의 요소 또는 제한으로 간주되지 않는다. 마찬가지로, "본 개시"에 대한 언급은 본 명세서에 개시되는 임의의 발명의 주제의 일반화로서 해석되어서는 안되며, 청구항(들)에 명시적으로 언급된 경우를 제외하고는 첨부된 청구항들의 요소 또는 제한인 것으로 간주되어서는 안된다.
본 발명은 대체적으로 개선된 포기-파인 프로그래밍에 관한 것이다. 먼저 SLC에 기록하고 이어서 SLC로부터 판독된 데이터로 MLC에 포기 기록을 수행하고, 이어서 SLC로부터 재판독된 데이터로 MLC에 파인 기록을 수행하기보다는, 동일한 버퍼를 사용하여 SLC에 대한 초기 기록과 병렬로 MLC에 대한 포기 기록이 수행될 수 있다. 일단 MLC에 대한 포기 기록이 완료되었고, SLC에 대한 기록이 또한 완료되었으면, 데이터 버퍼가 해제될 수 있다. 그러면, SLC에 기록된 데이터는 SLC로부터 판독되고, 처음에 그리고 한 번 리로케이션 버퍼를 통과하고, 이어서 파인 프로그래밍을 사용하여 MLC에 기록된다. 따라서, 데이터는 리로케이션 버퍼를 한 번만 통과하고, 리로케이션 버퍼는 그것을 통한 데이터의 단지 하나의 통과 후에 사용을 위해 확보될 수 있다. QLC가 기술되었지만, 본 명세서의 실시예들은 TLC(triple level cell)들 및 QLC들을 포함하는 다중레벨 셀(MLC)들에 적용가능하다는 것이 이해되어야 한다.
도 1은 일 실시예에 따른, 데이터를 저장하기 위한 시스템의 개략도이다. 일 실시예에 따른 데이터를 저장하기 위한 시스템(100)은 호스트 디바이스(102) 및 데이터 저장 디바이스(104)를 포함한다. 호스트 디바이스(102)는 동적 랜덤 액세스 메모리(DRAM)(112)를 포함한다. 호스트 디바이스(102)는 컴퓨터 서버, NAS(network attached storage) 유닛, 데스크톱 컴퓨터, 노트북(즉, 랩톱) 컴퓨터, 태블릿 컴퓨터(즉, "스마트" 패드), 셋톱 박스, 전화 핸드셋(즉, "스마트"폰), 텔레비전, 카메라, 디스플레이 디바이스, 디지털 미디어 플레이어, 비디오 게이밍 콘솔, 비디오 스트리밍 디바이스, 및 자동차 애플리케이션(즉, 길안내, 자율주행)과 같은 광범위한 디바이스를 포함할 수 있다. 소정 실시예들에서, 호스트 디바이스(102)는, 범용 프로세싱 유닛, 전용 하드웨어(예컨대, ASIC(application specific integrated circuit)), FPGA(field programmable gate array)와 같은 설정가능형 하드웨어, 또는 소프트웨어 명령어, 마이크로코드, 또는 펌웨어에 의해 구성되는 임의의 다른 형태의 프로세싱 유닛을 비롯하여, 데이터를 프로세싱할 수 있는 프로세싱 유닛 또는 임의의 형태의 하드웨어를 갖는 임의의 디바이스를 포함한다.
데이터 저장 디바이스(104)는 데이터 저장 디바이스(104)에 포함된 인터페이스(106)를 통해 호스트 디바이스(102)와 통신한다. 데이터 저장 디바이스(104)는 제어기(108), 버퍼(114), 및 하나 이상의 메모리 디바이스들(110)을 포함한다. 데이터 저장 디바이스(104)는 노트북 하드 드라이브 또는 데스크톱 하드 드라이브와 같은 내부 저장 드라이브일 수 있다. 데이터 저장 디바이스(104)는 메모리 카드(예컨대, SD(secure digital) 카드, 마이크로-SD 카드, 또는 MMC(multimedia card)) 또는 USB 디바이스와 같은 핸드헬드 탈착가능 메모리 디바이스와 같은, 그러나 이로 제한되지 않는 탈착가능 대용량 저장 디바이스일 수 있다. 데이터 저장 디바이스(104)는 eSD/eMMC 임베디드 플래시 드라이브와 같이, 호스트 디바이스(102) 내에 임베드되는 임베디드 대용량 저장 디바이스의 형태를 취할 수 있다. 데이터 저장 디바이스(104)는, 또한, 임의의 다른 타입의 내부 저장 디바이스, 탈착가능 저장 디바이스, 임베디드 저장 디바이스, 외부 저장 디바이스, 또는 네트워크 저장 디바이스일 수 있다.
메모리 디바이스(110)는 내부 또는 외부 저장 유닛들일 수 있지만, 이로 제한되지 않는다. 메모리 디바이스(110)는, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 또는 RAM 및 ROM에 대한 다른 형태들과 같이 데이터가 저장될 수 있는 반도체 메모리 칩에 의존한다. RAM은 데이터의 임시 저장을 위해 이용되는 반면, ROM은 데이터를 영구적으로 저장하기 위해 이용된다.
데이터 저장 디바이스(104)는 메모리 디바이스(110)에 기록하거나 그로부터 판독하는 것과 같은 데이터 저장 디바이스(104)의 동작들을 관리하는 제어기(108)를 포함한다. 제어기(108)는 데이터의 전송을 위해 컴퓨터 판독가능 프로그램 코드(예컨대, 소프트웨어 또는 펌웨어) 실행가능 명령어(본 명세서에서 "명령어"로 지칭됨)를 실행시킨다. 명령어는 제어기(108)의 다양한 컴포넌트들, 예컨대 프로세서, 로직 게이트, 스위치, ASIC, 프로그래밍가능 로직 제어기, 임베디드 마이크로제어기, 및 제어기(108)의 기타 컴포넌트에 의해 실행될 수 있다.
데이터 저장 디바이스(104)는 데이터가 하나의 장소로부터 다른 장소로 (즉, 호스트 디바이스(102)로부터 데이터 저장 디바이스(104)로) 이동되고 있는 동안, 데이터를 임시로 저장하는 데 사용되는 물리적 메모리 저장의 영역인 버퍼(114)를 포함한다.
데이터는 호스트 디바이스(102)의 DRAM(112)으로 또는 그로부터 데이터 저장 디바이스(104)로 전송될 수 있다. 하나의 데이터 전송 경로는 호스트 디바이스(102)의 DRAM(112)에서 비롯될 수 있고, 데이터 저장 디바이스(104)의 인터페이스(106)를 통해 제어기(108)로 통신할 수 있다. 데이터는, 이어서, 데이터 저장 디바이스(104)의 버퍼(114)를 통과하여 메모리 디바이스(110)에 저장될 것이다. 데이터가 SLC 메모리에 기록되면, 데이터는 간단히 기록된다. 그러나, 데이터가 QLC 메모리와 같은 MLC에 기록되면, 포기-파인 기록 프로세스가 발생한다. 기록 및 프로그래밍은 본 개시내용 전반에 걸쳐 상호교환가능하게 사용될 수 있음에 유의해야 한다.
도 2a는 종래 기술의 포기-파인 기록 프로세스의 개략도이다. 데이터는 호스트 DRAM(112)에서 비롯되고 데이터 저장 디바이스(104)의 버퍼(114)를 통과한다. 데이터는 단일 레벨 셀(SLC)(202) 상에 기록되고, 이어서 리로케이션 버퍼(204)를 통해 전송되어 쿼드 레벨 셀(QLC)(206) 상에 기록된다. QLC(206) 상에의 초기 기록은 "포기" 기록이다. 데이터는 다시 판독되고 SLC(202)로부터 리로케이션 버퍼(204)로, QLC(206)로 "파인" 기록으로서 전송될 것이다. 동일한 데이터가 NAND 버스를 통해 5회(즉, 버퍼(114)를 통해 1회, 그리고 버퍼(204)를 통해 4회) 통과된다. 버퍼(114)로부터 QLC(206)로의 총 NAND 부하는 5회의 전달들로 이루어진다: SLC(202)에 1회 기록, SLC(202)로부터 1회 판독, QLC(206)에 1회 기록(포기), SLC(202)로부터 1회 판독, 및 QLC(206)에 1회 기록(포기). 포기 및 파인 기록에 대한 총 DRAM 부하는 4회의 전달들이다: SLC(202)로부터 QLC(206)로의 리로케이션(포기) 및 SLC(202)로부터 QLC(206)로의 리로케이션(파인). 리로케이션 버퍼(204)가 이중 데이터 레이트(double data rate, DDR)로 존재하는 경우, 데이터는 2회의 판독들 및 2회의 기록들을 위해 적어도 4회 DDR로 통과한다. 버퍼(114)는 DRAM에 존재할 수 있고, 데이터는 DRAM을 5회 통과한다. NAND 버스 처리량 및 DRAM 버스 처리량으로 인해 성능 병목(performance bottleneck)이 발생할 수 있다.
도 2b는 일 실시예에 따른 포기-파인 기록 프로세스의 개략도이다. 도 2a의 종래 기술의 포기-파인 기록 프로세스의 DRAM 버스 처리량 및 NAND 버스 처리량으로 인한 성능 병목을 해결하기 위해, 도 2b의 개략도는 SLC 프로그래밍 단계와 병렬로 QLC 포기 기록을 실행한다. 프로세스는 동일한 리소스들 및 버퍼들을 활용하는데, 이는 NAND 부하 전달들의 양을 (5에서 4로) 그리고 DRAM 부하 전달들의 양을 (4에서 2로) 감소시킨다.
호스트 DRAM(112)은 버퍼(114)를 통해 데이터를 전달한다. 데이터는 버퍼(114)로부터 판독되고, SLC(202) 및 QLC(206)에 병렬로 기록된다. 버퍼(114)로부터 QLC(206)로의 초기 기록은 포기 단계이다. 데이터는 SLC(202)로부터 판독되고, 리로케이션 버퍼(204)를 통해 QLC(206)로 전달된다. SLC(202)로부터 QLC(206)로의 기록은 파인 단계이다.
일 실시예에서, 버퍼(114) 및 리로케이션 버퍼(204)는 별개의 아이템들이다. 다른 실시예에서, 버퍼(114) 및 리로케이션 버퍼(204)는 동일한 버퍼이다. 어느 경우든, 데이터는 버퍼(14)를 2회 나갈 필요가 있다. 따라서, 버퍼(114)는 데이터가 SLC(202) 및 QLC(206) 둘 모두로 보내질 때까지 추가의 사용을 위해 해제될 수 없다.
도 3은 일 실시예에 따른, 추가 사용을 위해 버퍼가 해제될 수 있는지 여부를 결정하는 방법을 예시하는 흐름도이다. 방법(300)의 하나 이상의 블록들은 데이터 저장 디바이스(104)에 저장된 컴퓨터 판독가능 프로그램 코드(예컨대, 소프트웨어 또는 펌웨어) 실행가능 명령어들을 실행시키는 제어기(108)에 의해 수행될 수 있다. SLC(202) 및 QLC(206)에 대한 동일한 데이터의 이중 프로그래밍의 결과로서 리소스들의 이중-해제를 위해 전용 하드웨어(HW) 지원이 ASIC 제어기(108)에 추가될 것이다. 프로그래밍 펌웨어(FW) 흐름은 SLC(202) 및 QLC-FG(206)에 병렬로 기록을 수행하도록 변경될 것이다. ASIC 제어기(108)는 SLC(202) 및 QLC(206)에 병렬로 데이터를 기록할 때 버퍼 해제 요청(302)을 수신할 것이다. 버퍼(114)는 소정 기준들이 충족되는 경우 해제되어, 메모리 저장 공간을 확보할 것이다. 블록(304)에서, ASIC 제어기(108)는 이중 해제(예컨대, 결합 해제) 특징부가 버퍼(114)에서 인에이블되는지를 결정한다. 특징부가 인에이블되지 않는 경우, 블록(308)에서 버퍼(114)는 이용가능한 버퍼 풀로 해제될 것이다. 특징부가 인에이블되는 경우, ASIC 제어기(108)는 블록(306)에서 동일한 버퍼의 제2 해제 요청이 있는지 여부를 결정할 것이다. 버퍼(114)의 제2 해제 요청이 없는 경우, 블록(310)에서 버퍼(114)는 해제되지 않을 것이다. 버퍼(114)의 제2 해제 요청이 있는 경우, 블록(312)에서 버퍼(114)는 이용가능한 버퍼 풀로 해제될 것이다. SLC(202) 및 QLC(206) 구역들은 상이한 채널들/다이들에서 구현될 수 있고, 다른 것들과는 독립적인 해제 요청을 발행할 수 있다. 리소스들의 이중 해제는 임의의 순서의 버퍼(114) 해제 요청들을 허용한다. 블록(306)에서, 이중 해제 비트맵 레지스터는 관련 버퍼의 해제 상태를 보유하는 '1' 또는 '0'의 값을 레코딩한다. '1'의 값은 블록(302)에서 제1 해제 요청이 버퍼(114)에 발행되었음을 나타내고, '0'의 값은 블록(302)에서 어떠한 해제 요청도 발행되지 않았음을 나타낸다. 블록(314)에서, 이중 해제 비트맵 레지스터에 있는 적절한 비트의 값은 버퍼(114)의 해제 요청을 나타내도록 반전된다. 버퍼(114)는 SLC(202) 및 QLC(206) 둘 모두가 해제 요청을 발행하는 경우 해제될 것이다.
도 4는 다른 실시예에 따른 데이터를 저장하기 위한 시스템의 개략도이다. 일 실시예에 따른 데이터를 저장하기 위한 시스템(400)은 호스트 디바이스(102), 데이터 저장 디바이스(104), 이중 해제기(402)(예컨대, 결합 해제기), 및 리소스 서버(404)를 포함한다. 이중 해제기(402)는 내부 인터커넥트(408), 이중 해제 레지스터(410)(예를 들어, 결합 해제 레지스터), 재해제(re-release) 액세스 매니퓰레이터(412), 및 이중 해제기 비트맵 레지스터(414)(예를 들어, 결합 해제기 비트맵 레지스터)를 포함한다. 내부 인터커넥트(408)는 이중 해제기 레지스터(410), 재해제 액세스 매니퓰레이터(412) 및 이중 해제기 비트맵 레지스터(414)에 대한 액세스를 허용한다. 이중 해제 방법(300)의 기준이 충족되는 경우, 이중 해제기(402)는 리소스 서버(RS)(404)와 통신하여 블록 (406)에서 리소스(즉, 버퍼(114))를 해제한다.
이중 해제기 비트맵 레지스터(414)는 각각의 랜덤 할당된 버퍼에 대해 하나의 비트를 할당한다. 이중 해제기 비트맵 레지스터(414)는 각각의 버퍼의 보유 해제 상태를 결정함으로써 비트의 값을 할당한다. 리소스 해제부(406) 레지스터에서의 새로운 비트의 정의는 2-단자 터널링 랜덤 액세스 메모리(TRAM) 랜덤 할당 결합 해제를 가능하게 할 것이다. 리소스 해제부(406)에 대한 제1 액세스에 오류가 있는 경우, 버퍼는 이중 해제기(404)로부터 해제되지 않을 것이다. 리소스 해제부(406)에 대한 제2 액세스는 이중 해제기(404)로부터 버퍼를 해제할 것이다. 5에서 4로, 동일한 데이터가 NAND 버스를 통과하는 횟수들의 감소는 기록 성능을 잠재적으로 0 내지 10%, 10 내지 20%, 20 내지 30%, 30 내지 40%, 40 내지 50%만큼, 또는 0 내지 50%의 범위(여기서, 25%가 평균임)에서 개선시킬 수 있다. (4 또는 5에서 2 또는 3으로) 2만큼, 재위치된 데이터가 DRAM을 통과하는 횟수들의 감소는 DRAM 처리량을 잠재적으로 0 내지 10%, 10 내지 20%, 20 내지 30%, 30 내지 40%, 40 내지 50%, 50 내지 60%, 60 내지 70%만큼, 또는 0 내지 70%의 범위(여기서 50 내지 66%가 수학적으로 유도됨)에서 개선시킬 수 있다.
도 5는 다른 실시예에 따른, 추가 사용을 위해 버퍼가 해제될 수 있는지 여부를 결정하는 방법을 예시하는 흐름도이다. 방법(500)의 하나 이상의 블록들은 데이터 저장 디바이스(104)에 저장된 컴퓨터 판독가능 프로그램 코드(예컨대, 소프트웨어 또는 펌웨어) 실행가능 명령어들을 실행시키는 제어기(108)에 의해 수행될 수 있다. 명령어들은 인수(argument)에 의해 결정된 0 또는 1로 소정 변수들을 할당하는 로직 방법으로서 진행된다. 블록(502)에서, 데이터는 포기 흐름을 통해 SLC(202) 및 QLC(206)에 기록되고, "FirstFail" 및 "SecondFail"을 0과 동일하게 설정한다. 블록(504)에서, 시간 버퍼(114)는 기록 데이터 및 발행된 SLC(202) 기록 요청 및 QLC(206) 포기 기록 요청을 보유한다. 블록(506)에서 제1 해제 요청이 수신되는 경우, 방법은 블록(512)에서 제2 해제 요청으로 진행한다. 블록(504)에서 프로그램이 제1 해제 요청을 수신하는 것을 실패한 경우, 블록(508)에서의 프로그램 실패는 블록(510)에서 "FirstFail"을 0으로부터 1로 재할당할 것이다. "FirstFail"이 1과 동일한 것은 제1 해제가 발행되지 않았음을 의미한다. 블록(512)에서 프로그램이 제2 해제 요청을 수신하는 것을 실패한 경우, 블록(514)에서의 프로그램 실패는 블록(516)에서 "SecondFail"을 0으로부터 1로 재할당할 것이다. "SecondFail"이 1과 동일한 것은 제2 해제가 발행되지 않았음을 의미한다. "FirstFail" 또는 "SecedFail", 또는 둘 모두가 1이면, 블록(520)에서 시간 버퍼(114)는 해제되지 않을 것이다. "FirstFail" 및 "SecedFail"이 0이면, 블록(522)에서 시간 버퍼(114)는 해제될 것이다.
블록(508)에서 또는 블록(514)에서의 데이터 실패 동안, 데이터 버퍼들은, 버퍼(114)에 있는 정적 랜덤 액세스 메모리(SRAM)에서 또는 호스트 디바이스(112)에 있는 DRAM에서 이용가능할 수 있거나 이용가능하지 않을 수 있다. 데이터 복구는 데이터를 복구하기 위한 데이터 버퍼들의 이용가능성에 의존할 수 있거나, 또는 다른 스킴을 사용할 수 있다(즉, 패리티들로 복구함). 포기 단계 동안에 QLC(206)에 대한 데이터의 기록 동안 프로그램 에러가 있는 경우, 데이터는 SLC(206)로 프로그래밍되고 있거나, 또는 복구를 위해 버퍼(114)에 있는 SRAM에서 또는 호스트 디바이스(112)에 있는 DRAM에서 여전히 이용가능하다.
도 6은 다른 실시예에 따른 데이터를 저장하기 위한 시스템의 개략도이다. 일 실시예에 따른 데이터를 저장하기 위한 시스템(600)은 호스트 컴퓨터 시스템(602) 및 데이터 저장 디바이스(610)를 포함한다. 호스트 컴퓨터 시스템(602)은, 명료함을 위해 도시되지 않았지만 포함될 수 있는, 호스트 컴퓨터 시스템(602)의 병렬 중복 프로토콜(parallel redundancy protocol, PRP)들(604), 데이터 버퍼들(606), 및 기타 컴포넌트들(608)을 이용한다. 호스트 컴퓨터 시스템(602)은, 컴퓨터 서버, NAS 유닛, 데스크톱 컴퓨터, 노트북(즉, 랩톱) 컴퓨터, 태블릿 컴퓨터(즉, "스마트" 패드), 셋톱 박스, 전화 핸드셋(즉, "스마트"폰), 텔레비전, 카메라, 디스플레이 디바이스, 디지털 미디어 플레이어, 비디오 게이밍 콘솔, 비디오 스트리밍 디바이스, 및 자동차 애플리케이션(즉, 길안내, 자율주행)과 같은 광범위한 디바이스를 포함할 수 있다. 소정 실시예들에서, 호스트 컴퓨터 시스템(602)은, 범용 프로세싱 유닛, 전용 하드웨어(예컨대, ASIC), FPGA와 같은 설정가능형 하드웨어, 또는 소프트웨어 명령어, 마이크로코드, 또는 펌웨어에 의해 구성되는 임의의 다른 형태의 프로세싱 유닛을 비롯하여, 데이터를 프로세싱할 수 있는 프로세싱 유닛 또는 임의의 형태의 하드웨어를 갖는 임의의 디바이스를 포함한다.
호스트 컴퓨터 시스템(602)의 기타 컴포넌트들(608)은 DRAM 또는 기타 메인 메모리들과 같은 호스트 메모리 공간에 접속된 중앙 처리 장치(CPU)를 포함할 수 있지만, 이로 제한되지는 않는다. 애플리케이션 프로그램은 호스트 컴퓨터 시스템(602)의 컴포넌트들에 의한 실행을 위해, 메모리 공간과 같은 호스트 컴퓨터 시스템(602)의 기타 컴포넌트(608)에 저장될 수 있다. 호스트 메모리 공간은 커맨드 제공 큐(queue)들 및 커맨드 완료 큐들과 같은 호스트 큐들을 포함할 수 있다. 호스트 메모리 공간은 호스트 데이터 버퍼와 같은 데이터 버퍼들(606)을 포함할 수 있다.
제어기(612)는 인터페이스(630)를 통한, 호스트 컴퓨터 시스템(602)으로부터 데이터 저장 디바이스(610)로의 통신의 유입 및 데이터 저장 디바이스(610)로부터 호스트 컴퓨터 시스템(602)으로의 통신의 유출을 위해 인터페이스(630)를 포함할 수 있다. 인터페이스(630)는 주변 컴포넌트 인터페이스 익스프레스(Peripheral Component Interface Express, PCIe), 매체 액세스 제어(medium access control, MAC), 및 물리 계층(physical layer, PHY) 컴포넌트들을 포함한다. PCIe 링크는 2개의 PCIe를 접속시키는 이용가능한 PHY들의 수에 따라, 1 내지 32개의 레인(lane)들에 대한 것일 수 있다. PCIe 링크는 전형적으로, 데이터 저장 디바이스(610)의 초기화와 같은 종점(end point) 디바이스 초기화 동안 설정된다.
호스트 컴퓨터 시스템(602) 및 제어기(612)의 인터페이스(630)는 PCIe 직렬 통신 프로토콜 또는 다른 적합한 통신 프로토콜들과 같은 통신 프로토콜 하에서 동작한다. 다른 적합한 통신 프로토콜들은 이더넷, SAS(serial attached SCSI), SATA(serial AT attachment), RDMA(remote direct memory access), 예컨대 인피니밴드(Infiniband), iWARP, 또는 RoCE(RDMA over Converged Ethernet)와 관련된 임의의 프로토콜, 및 다른 적합한 직렬 통신 프로토콜들을 포함한다. 데이터 저장 디바이스(610)는 또한, 스위치 또는 브리지를 통해 호스트 컴퓨터 시스템(602)에 접속될 수 있다.
일 실시예에 따른 데이터 저장 디바이스(610)는 제어기(612) 및 메모리 어레이(620)를 포함할 수 있다. 데이터 저장 디바이스(610)는 SLC(622), 삼중 층 셀(TLC)들(624), 및 QLC(626) 상에 데이터를 기록 및 판독하기 위해 메모리 어레이(620)를 이용할 수 있다. 데이터 저장 디바이스(610)의 메모리 어레이(620)는 비휘발성 메모리(non-volatile memory, NVM) 공간으로서 정보의 장기 저장을 위해 구성될 수 있고, 파워 온/오프 사이클들 이후에 정보를 보유한다. NVM(620)은 NAND 플래시 메모리의 하나 이상의 다이들로 이루어질 수 있다. NVM의 다른 예들은 상변화 메모리, ReRAM 메모리, MRAM 메모리, 자기 매체(슁글(shingle) 자기 레코딩을 포함함), 광 디스크, 플로피 디스크, EPROM(electrically programmable read only memory), EEPROM(electrically erasable programmable read only memory), 및 다른 솔리드 스테이트 메모리를 포함한다. 자기 매체 NVM은 데이터 저장 디바이스(610) 내의 하나 이상의 자기 플래터(magnetic platter)일 수 있다. 각각의 플래터는 데이터의 하나 이상의 트랙의 하나 이상의 영역을 포함할 수 있다. NVM(620)은 하나 이상의 타입들의 비휘발성 메모리를 포함할 수 있다.
데이터 저장 디바이스(610)는, NVM(620)에 기록하고 그로부터 판독하는 것과 같은 저장 디바이스(610)의 동작들을 관리하는 제어기(612)를 포함한다. 제어기(612)는 하나 이상의 프로세서들(632)을 포함하는데, 이는 멀티코어 프로세서들일 수 있다. 프로세서(632)는 펌웨어 코드를 통해 데이터 저장 디바이스(610)의 컴포넌트들을 다룬다.
제어기(612)는 NVMe(NVM Express) 프로토콜 하에서 동작할 수 있지만, 다른 프로토콜들이 적용가능하다. NVMe 프로토콜은 PCIe 인터페이스를 통해 링크된 호스트 및 저장 디바이스를 통해 SSD들이 동작하도록 개발된 통신 인터페이스/프로토콜이다. NVMe 프로토콜은 호스트 컴퓨터 시스템(602)에 의해 데이터 저장 디바이스(610)에 저장된 데이터의 액세스를 위한 커맨드 제공 큐 및 커맨드 완료 큐를 제공한다. 데이터 저장 디바이스(610)는 호스트 메모리 공간(608)의 호스트 큐들(608) 중 커맨드 제공 큐로부터 호스트 커맨드들을 페치하거나 판독할 수 있다.
제어기(612)는 데이터의 전송을 위해 컴퓨터 판독가능 프로그램 코드(예컨대, 소프트웨어 또는 펌웨어) 실행가능 명령어(본 명세서에서 "명령어"로 지칭됨)를 실행시킨다. 명령어는 제어기(612)의 다양한 컴포넌트, 예컨대 프로세서(632), 로직 게이트, 스위치, ASIC, 프로그래밍가능 로직 제어기, 임베디드 마이크로제어기, 및 제어기(612)의 기타 컴포넌트에 의해 실행될 수 있다.
명령어는 비일시적 컴퓨터 판독가능 저장 매체에 저장된다. 소정 실시예에서, 명령어들은 데이터 저장 디바이스(610)의 비일시적 컴퓨터 판독가능 저장 매체에, 예컨대 판독 전용 메모리 또는 NVM(620)에 저장된다. 데이터 저장 디바이스(610)에 저장된 명령어들은 호스트 컴퓨터 시스템(602)으로부터의 추가 입력 또는 지시들 없이 실행될 수 있다. 다른 실시예들에서, 명령어들은 호스트 컴퓨터 시스템(602)으로부터 송신된다. 제어기(612)는 본 명세서에 기술되고 도면에 도시되어 있는 다양한 기능들을 수행하기 위한 하드웨어 및 명령어들로 구성된다.
제어기(612)는 또한, 다른 컴포넌트들, 예컨대 플래시 인터페이스 모듈(634), DMA(direct memory access) 모듈(640), 에러 정정 모듈(636), 커맨드 실행기(646), 커맨드 페처(fetcher)(644), 커맨드 프로세서 모듈(648), 제어 경로(642), 및 데이터 전송 스케줄러(638)를 포함한다. 플래시 인터페이스 모듈(634)은 판독 및 기록 동작들을 위해 NVM(620)과 상호작용한다. DMA 모듈(640)은 CPU로부터의 관여없이 호스트 컴퓨터 시스템(602)과 데이터 저장 디바이스(610) 사이의 데이터 전송을 실행한다. 데이터 전송 스케줄러(638)는, 물리적 페이지 영역(physical page region, PRP)들을 페치하기 위해 제어 경로(642)를 활성화시키고, 완료 및 인터럽트들을 포스팅하고, 호스트 컴퓨터 시스템(602)과 데이터 저장 디바이스(610) 사이의 실제 데이터 전송을 위해 DMA들을 활성화시키면서 데이터 전송을 제어한다. 에러 정정 모듈(636)은 메모리 어레이들로부터 페치된 데이터를 정정한다. 커맨드 페처(644)는 플래시 인터페이스 모듈(634) 상에서 실행을 위해 커맨드 실행기(140)에 커맨드들을 페치한다.
판독 커맨드와 캐시 기록 데이터 사이에 충돌이 없음을 보장하기 위해 커맨드 프로세싱 모듈(648)에 전용 로직이 존재한다. 충돌이 검출되는 경우, 충돌이 해결될 때까지 판독 커맨드가 충돌 큐에서 보유된다(예컨대, 캐시 데이터는 SLC에서 프로그래밍됨). 커맨드 프로세싱 모듈(648)은 충돌 테이블(650)을 내부적으로 구현하면서 충돌 로직을 구현하는 것을 담당한다. 충돌 테이블(650)은, 캐싱되고 NAND 내에 저장되지 않는 모든 LBA들을 보유한다.
일 실시예에서, 방법(500)은, 파인과 포기 둘 모두로, SLC(622), TLC(624), 및 QLC(626)에 기록함으로써 호스트 컴퓨터 시스템(602)으로부터 데이터 저장 디바이스(610)로의 데이터의 전송을 용이하게 하도록 구현된다. 도 6에 도시된 시스템의 일 실시예에 따른 방법(500)은 NAND 버스 및 DRAM 전송의 양을 0 내지 10%, 10 내지 20%, 20 내지 30%만큼, 또는 0 내지 30%의 범위(여기서, 25%가 평균임)에서 감소시킴으로써 기록 성능을 개선시킬 수 있다. 전송들의 감소는 데이터 저장 디바이스(610)의 전력 소비를 잠재적으로 감소시킬 수 있다.
본 명세서의 예들이 QLC들에 대해 언급되었지만, 본 명세서에서 논의되는 실시예들은 2개의 레벨 셀들(종종 MLC들로 지칭됨), 삼중 레벨 셀들(TLC들), 쿼드 레벨 셀들(QLC들) 및 4개 초과의 레벨들을 갖는 셀들을 포함하는 임의의 MLC에 적용가능하다는 것이 이해되어야 한다. 본 명세서에서 MLC에 대한 언급은 1보다 큰 임의의 레벨 셀을 의미하는 것으로 이해되며, 이에 따라 이중 레벨, 삼중 레벨, 쿼드 레벨, 및 포기-파인 프로그래밍을 이용하는 차세대들을 포함하는 것으로 이해된다.
일 실시예에서, 데이터 저장 디바이스는 SLC 메모리 및 MLC 메모리를 포함하는 하나 이상의 메모리 디바이스들; 및 하나 이상의 메모리 디바이스들에 커플링된 제어기를 포함하고, 제어기는, SLC 메모리에 데이터를 기록하도록; 데이터를 MLC 메모리에 포기 기록하도록 - 여기서, 데이터를 MLC 메모리에 포기 기록하는 것은 동일한 버퍼를 사용하여 데이터를 SLC 메모리에 기록하는 것과 병렬로 발생함 -; SLC 메모리로부터 데이터를 판독하도록; 그리고 SLC 메모리로부터 판독된 데이터를 MLC 메모리에 파인 기록하도록 구성된다. SLC 메모리로부터 판독된 데이터는 리로케이션 버퍼 저장 디바이스를 통과한다. 데이터는 MLC 메모리에 기록되기 전에 한 번 리로케이션 버퍼를 통과한다. 제어기는 동일한 버퍼를 해제하기 위한 제1 해제 요청을 수신하도록 추가로 구성되고, 여기서 제1 해제 요청은 데이터를 SLC 메모리에 기록하는 것 또는 데이터를 MLC 메모리에 포기 기록하는 것 중 어느 하나가 완료되었음을 나타낸다. 제어기는 동일한 버퍼를 해제하기 위한 제2 해제 요청을 수신하도록 추가로 구성되고, 여기서 제2 해제 요청은 데이터를 SLC 메모리에 기록하는 것 또는 데이터를 MLC 메모리에 포기 기록하는 것 중 어느 하나가 완료되었음을 나타낸다. 제어기는 제1 해제 요청 및 제2 해제 요청 둘 모두를 수신할 시 동일한 버퍼를 해제하도록 추가로 구성된다. 데이터는 SLC 메모리로부터 데이터를 판독한 후에 그리고 데이터를 MLC 메모리에 파인 기록하기 전에 리로케이션 버퍼를 통과한다.
다른 실시예에서, 데이터 저장 디바이스는 하나 이상의 메모리 디바이스들; 및 하나 이상의 메모리 디바이스들에 커플링된 제어기를 포함하고, 제어기는, 버퍼에 대한 제1 버퍼 해제 요청이 수신되었는지 여부를 결정하도록; 버퍼에 대한 제2 버퍼 해제 요청이 수신되었는지 여부를 결정하도록; 그리고 버퍼를 버퍼들의 이용가능한 버퍼 풀로 해제하도록 구성된다. 제어기는 버퍼가 해제될 때까지 버퍼에 데이터를 보유하도록 추가로 구성된다. 제어기는 제1 버퍼 해제 요청 또는 제2 버퍼 해제 요청 중 어느 하나가 수신되지 않은 경우 버퍼를 해제하지 않도록 추가로 구성된다. 제어기는 제1 프로그래밍이 실패한 경우 FirstFail의 값을 0으로부터 1로 증분시키도록 추가로 구성된다. 제어기는 제2 프로그래밍이 실패한 경우 SecondFail의 값을 0으로부터 1로 증분시키도록 구성된다. 제어기는 FirstFail 또는 SecondFail 중 어느 하나가 1과 동일한 경우 버퍼를 해제하지 않도록 추가로 구성된다. 제어기는 제1 버퍼 해제 요청 및 제2 버퍼 해제 요청 둘 모두가 수신된 경우에만 버퍼를 버퍼들의 이용가능한 버퍼 풀로 해제하도록 추가로 구성된다.
다른 실시예에서, 데이터 저장 디바이스는 하나 이상의 메모리 디바이스들; 버퍼가 2개의 해제 요청들을 수신했다고 결정하기 위한 수단; 및 SLC 메모리에 기록하는 것과 병렬로 MLC 메모리에 포기 기록하기 위한 수단을 포함한다. 데이터 저장 디바이스는 제1 해제 요청을 수신하기 위한 수단을 추가로 포함한다. 데이터 저장 디바이스는 제2 해제 요청을 수신하기 위한 수단을 추가로 포함한다. 데이터 저장 디바이스는 버퍼를 해제하기 위한 수단을 추가로 포함하고, 여기서 버퍼를 해제하기 위한 수단은 결정하기 위한 수단으로부터의 피드백에 기초하여 버퍼를 해제하도록 구성된다. 데이터 저장 디바이스는 SLC 메모리로부터 데이터를 판독하고 SLC 메모리로부터 판독된 데이터를 MLC 메모리에 파인 기록하기 위한 수단을 추가로 포함한다. 데이터 저장 디바이스는 버퍼를 이용가능한 버퍼 풀로 해제하기 위한 수단을 추가로 포함한다.
데이터를 버퍼를 통해 추가 시간 동안 전송하지 않고 MLC에 직접 포기 기록을 수행하여 기록함으로써, 데이터가 MLC에 기록되기 위해 SLC를 다수회 통과할 필요가 없기 때문에 데이터 기록이 개선될 수 있다.
전술한 것은 본 개시의 실시예들에 관한 것이지만, 본 개시의 다른 및 추가 실시예들이 본 개시의 기본 범주로부터 벗어남이 없이 고안될 수 있으며, 본 개시의 그 범주는 후속하는 청구범위에 의해 결정된다.

Claims (20)

  1. 데이터 저장 디바이스로서,
    SLC(single-level cell) 메모리 및 MLC(multilevel cell) 메모리를 포함하는 하나 이상의 메모리 디바이스; 및
    상기 하나 이상의 메모리 디바이스에 커플링된 제어기를 포함하고, 상기 제어기는,
    데이터를 상기 SLC 메모리에 기록하도록;
    상기 데이터를 MLC 메모리에 포기(foggy) 기록하도록 - 상기 데이터를 상기 MLC 메모리에 포기 기록하는 것은 동일한 데이터 버퍼를 사용하여 상기 데이터를 상기 SLC 메모리에 기록하는 것과 병렬로 발생함 -;
    상기 SLC 메모리로부터 상기 데이터를 판독하도록; 그리고
    상기 SLC 메모리로부터 판독된 데이터를 상기 MLC 메모리에 파인(fine) 기록하도록 구성되고,
    상기 제어기는 또한,
    동일한 버퍼를 해제(release)하기 위한 제1 해제 요청을 수신하도록 - 상기 제1 해제 요청은 상기 데이터를 상기 SLC 메모리에 기록하는 것 또는 상기 데이터를 상기 MLC 메모리에 포기 기록하는 것 중 어느 하나가 완료되었음을 나타냄 -; 그리고
    상기 동일한 버퍼를 해제하기 위한 제2 해제 요청을 수신하도록 - 상기 제2 해제 요청은 상기 데이터를 상기 SLC 메모리에 기록하는 것 또는 상기 데이터를 상기 MLC 메모리에 포기 기록하는 것 중 어느 하나가 완료되었음을 나타냄 - 구성되는, 데이터 저장 디바이스.
  2. 제1항에 있어서, 상기 SLC 메모리로부터 판독된 데이터는 리로케이션(relocation) 버퍼 저장 디바이스를 통과하는, 데이터 저장 디바이스.
  3. 제2항에 있어서, 상기 데이터는 상기 MLC 메모리에 기록되기 전에 한 번 상기 리로케이션 버퍼를 통과하는, 데이터 저장 디바이스.
  4. 삭제
  5. 삭제
  6. 제1항에 있어서, 상기 제어기는 또한, 상기 제1 해제 요청 및 상기 제2 해제 요청 둘 모두를 수신할 시 상기 동일한 버퍼를 해제하도록 구성되는, 데이터 저장 디바이스.
  7. 제1항에 있어서, 상기 데이터는 SLC 메모리로부터 상기 데이터를 판독한 후에 그리고 상기 데이터를 MLC 메모리에 파인 기록하기 전에 리로케이션 버퍼를 통과하는, 데이터 저장 디바이스.
  8. 데이터 저장 디바이스로서,
    하나 이상의 메모리 디바이스; 및
    상기 하나 이상의 메모리 디바이스에 커플링된 제어기를 포함하고, 상기 제어기는,
    버퍼에 대한 제1 버퍼 해제 요청 - 상기 제1 버퍼 해제 요청은 SLC 메모리로의 데이터의 제1 프로그래밍에 대응함 - 이 수신되었는지 여부를 결정하도록;
    상기 버퍼에 대한 제2 버퍼 해제 요청 - 상기 제2 버퍼 해제 요청은 상기 제1 프로그래밍과 병렬인 MLC 메모리로의 동일한 데이터의 제2 프로그래밍에 대응하고, 상기 제2 버퍼 해제 요청은 상기 제1 버퍼 해제 요청과 독립적으로 발행 및 수신됨 - 이 수신되었는지 여부를 결정하도록; 그리고
    상기 버퍼에 대한 상기 제1 버퍼 해제 요청 및 상기 제2 버퍼 해제 요청이 둘 다 수신되었다고 결정하면 상기 버퍼를 버퍼들의 이용가능한 버퍼 풀(buffer pool)로 해제하도록 구성되는, 데이터 저장 디바이스.
  9. 제8항에 있어서, 상기 제어기는 또한, 상기 버퍼가 해제될 때까지 상기 버퍼에 데이터를 보유하도록 구성되는, 데이터 저장 디바이스.
  10. 제8항에 있어서, 상기 제어기는 또한, 상기 제1 버퍼 해제 요청 또는 상기 제2 버퍼 해제 요청 중 어느 하나가 수신되지 않은 경우 상기 버퍼를 해제하지 않도록 구성되는, 데이터 저장 디바이스.
  11. 제8항에 있어서, 상기 제어기는 상기 제1 프로그래밍이 실패한 경우 FirstFail의 값을 0으로부터 1로 증분시키도록 구성되는, 데이터 저장 디바이스.
  12. 제11항에 있어서, 상기 제어기는 상기 제2 프로그래밍이 실패한 경우 SecondFail의 값을 0으로부터 1로 증분시키도록 구성되는, 데이터 저장 디바이스.
  13. 제12항에 있어서, 상기 제어기는 또한, 상기 FirstFail 또는 상기 SecondFail 중 어느 하나가 1과 동일한 경우 상기 버퍼를 해제하지 않도록 구성되는, 데이터 저장 디바이스.
  14. 제8항에 있어서, 상기 제어기는 또한, 상기 제1 버퍼 해제 요청 및 상기 제2 버퍼 해제 요청 둘 모두가 수신된 경우에만 상기 버퍼를 버퍼들의 상기 이용가능한 버퍼 풀로 해제하도록 구성되는, 데이터 저장 디바이스.
  15. 데이터 저장 디바이스로서,
    단일 레벨 셀(single level cell; SLC) 메모리 및 다중 레벨 셀(multi level cell; MLC) 메모리를 포함하는 하나 이상의 메모리 디바이스;
    버퍼가 2개의 해제 요청들을 수신했다고 결정하기 위한 수단 - 상기 수신된 2개의 해제 요청들 중 제1 해제 요청은 데이터를 SLC 메모리에 프로그램한 것과 대응하고, 상기 수신된 2개의 해제 요청들 중 제2 해제 요청은 동일한 데이터를 MLC 메모리에 프로그램한 것과 대응하고, 상기 제1 해제 요청은 상기 제2 해제 요청과 독립적으로 발행 및 수신됨 - ; 및
    SLC 메모리에 데이터를 기록하는 것과 병렬로 MLC 메모리에 데이터를 포기 기록하기 위한 수단을 포함하는, 데이터 저장 디바이스.
  16. 제15항에 있어서, 상기 제1 해제 요청을 수신하기 위한 수단을 추가로 포함하는, 데이터 저장 디바이스.
  17. 제16항에 있어서, 상기 제2 해제 요청을 수신하기 위한 수단을 추가로 포함하는, 데이터 저장 디바이스.
  18. 제17항에 있어서, 상기 버퍼를 해제하기 위한 수단을 추가로 포함하고, 상기 버퍼를 해제하기 위한 수단은 상기 결정하기 위한 수단으로부터의 피드백에 기초하여 상기 버퍼를 해제하도록 구성되는, 데이터 저장 디바이스.
  19. 제15항에 있어서, SLC 메모리로부터 데이터를 판독하고 상기 SLC 메모리로부터 판독된 데이터를 상기 MLC 메모리에 파인 기록하기 위한 수단을 추가로 포함하는, 데이터 저장 디바이스.
  20. 제15항에 있어서, 버퍼를 이용가능한 버퍼 풀로 해제하기 위한 수단을 추가로 포함하는, 데이터 저장 디바이스.
KR1020200070935A 2020-02-04 2020-06-11 이중 slc/qlc 프로그래밍 및 리소스 해제 KR102462048B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/781,885 2020-02-04
US16/781,885 US11205473B2 (en) 2020-02-04 2020-02-04 Dual SLC/QLC programming and resource releasing

Publications (2)

Publication Number Publication Date
KR20210099493A KR20210099493A (ko) 2021-08-12
KR102462048B1 true KR102462048B1 (ko) 2022-11-01

Family

ID=76853505

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200070935A KR102462048B1 (ko) 2020-02-04 2020-06-11 이중 slc/qlc 프로그래밍 및 리소스 해제

Country Status (4)

Country Link
US (2) US11205473B2 (ko)
KR (1) KR102462048B1 (ko)
CN (1) CN113220215A (ko)
DE (1) DE102020116190A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11783893B2 (en) * 2020-12-23 2023-10-10 Intel Corporation Utilizing NAND buffer for DRAM-less multilevel cell programming
KR20240008482A (ko) 2022-07-12 2024-01-19 김정기 성능/용량 조절 및 최적화 기능을 구비한 메모리 카드

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080316815A1 (en) * 2007-06-25 2008-12-25 Lin Jason T Methods of programming multilevel cell nonvolatile memory
US20150003152A1 (en) * 2013-07-01 2015-01-01 Donghun Kwak Storage device and a write method thereof
US20190278701A1 (en) * 2018-03-07 2019-09-12 Exten Technologies, Inc. Systems and methods for accessing non-volatile memory and write acceleration cache

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5504859A (en) * 1993-11-09 1996-04-02 International Business Machines Corporation Data processor with enhanced error recovery
US6522580B2 (en) * 2001-06-27 2003-02-18 Sandisk Corporation Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states
TW580619B (en) * 2002-04-03 2004-03-21 Via Tech Inc Buffer control device and the management method
US7630252B2 (en) * 2007-06-25 2009-12-08 Sandisk Corporation Systems for programming multilevel cell nonvolatile memory
US8843691B2 (en) 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US9092340B2 (en) 2009-12-18 2015-07-28 Sandisk Technologies Inc. Method and system for achieving die parallelism through block interleaving
US8468294B2 (en) 2009-12-18 2013-06-18 Sandisk Technologies Inc. Non-volatile memory with multi-gear control using on-chip folding of data
US20120167100A1 (en) * 2010-12-23 2012-06-28 Yan Li Manual suspend and resume for non-volatile memory
EP3333853A1 (en) * 2013-03-07 2018-06-13 Charles I. Peddle High speed flash controllers
US9218242B2 (en) * 2013-07-02 2015-12-22 Sandisk Technologies Inc. Write operations for defect management in nonvolatile memory
KR102163872B1 (ko) 2013-08-09 2020-10-13 삼성전자 주식회사 멀티 비트 메모리 장치, 그것의 온칩 버퍼 프로그램 방법 및 멀티 비트 메모리 시스템
US8886877B1 (en) 2014-05-15 2014-11-11 Sandisk Technologies Inc. In-situ block folding for nonvolatile memory
US9400713B2 (en) 2014-10-02 2016-07-26 Sandisk Technologies Llc System and method for pre-encoding of data for direct write to multi-level cell memory
US10223001B2 (en) * 2015-03-12 2019-03-05 Toshiba Memory Corporation Memory system
US9530491B1 (en) * 2015-11-16 2016-12-27 Sandisk Technologies Llc System and method for direct write to MLC memory
KR102398186B1 (ko) * 2017-07-03 2022-05-17 삼성전자주식회사 메모리 컨트롤러의 동작 방법 및 사용자 장치의 동작 방법
CN107632794A (zh) * 2017-10-20 2018-01-26 北京小米移动软件有限公司 读写锁控制方法及装置
JP2019133391A (ja) * 2018-01-31 2019-08-08 東芝メモリ株式会社 メモリシステムおよび制御方法
JP2020035128A (ja) * 2018-08-29 2020-03-05 キオクシア株式会社 メモリシステム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080316815A1 (en) * 2007-06-25 2008-12-25 Lin Jason T Methods of programming multilevel cell nonvolatile memory
US20150003152A1 (en) * 2013-07-01 2015-01-01 Donghun Kwak Storage device and a write method thereof
US20190278701A1 (en) * 2018-03-07 2019-09-12 Exten Technologies, Inc. Systems and methods for accessing non-volatile memory and write acceleration cache

Also Published As

Publication number Publication date
US20210241819A1 (en) 2021-08-05
US11837277B2 (en) 2023-12-05
DE102020116190A1 (de) 2021-08-05
KR20210099493A (ko) 2021-08-12
CN113220215A (zh) 2021-08-06
US11205473B2 (en) 2021-12-21
US20220076735A1 (en) 2022-03-10

Similar Documents

Publication Publication Date Title
US11960725B2 (en) NVMe controller memory manager providing CMB capability
JP6163532B2 (ja) メモリシステムコントローラを含む装置
US10635317B2 (en) Operation method of storage system and host
TWI531965B (zh) 控制器及用以執行背景操作之方法
US11188251B2 (en) Partitioned non-volatile memory express protocol for controller memory buffer
US11081187B2 (en) Erase suspend scheme in a storage device
TWI684860B (zh) 用來進行讀取加速之方法以及資料儲存裝置及其控制器
JP2014515534A (ja) メモリシステムコントローラを含む装置および関連する方法
JP7168287B2 (ja) Nandプログラミングフェイルを処理するための内部コピー
KR20160087224A (ko) 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
KR20140025541A (ko) 메모리 시스템 제어기를 구비하는 장치 및 관련 방법
US11837277B2 (en) Dual slc/qlc programming and resource releasing
US20210318801A1 (en) Zone-append command scheduling based on zone state
US20190354483A1 (en) Controller and memory system including the same
US20220050629A1 (en) Completion management
US10515693B1 (en) Data storage apparatus and operating method thereof
US11431629B2 (en) Data packet management
US10867644B2 (en) Memory system and operating method thereof
US10628322B2 (en) Memory system and operating method thereof
CN113311991A (zh) 具有针对优选用户数据改进的写入性能的数据存储
CN115237824A (zh) 存储器子系统中的高速缓存读取上下文切换

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant