KR102107604B1 - Non-volatile memory apparatus and data storage methid of the same - Google Patents

Non-volatile memory apparatus and data storage methid of the same Download PDF

Info

Publication number
KR102107604B1
KR102107604B1 KR1020180034586A KR20180034586A KR102107604B1 KR 102107604 B1 KR102107604 B1 KR 102107604B1 KR 1020180034586 A KR1020180034586 A KR 1020180034586A KR 20180034586 A KR20180034586 A KR 20180034586A KR 102107604 B1 KR102107604 B1 KR 102107604B1
Authority
KR
South Korea
Prior art keywords
block
blocks
memory
cold
free
Prior art date
Application number
KR1020180034586A
Other languages
Korean (ko)
Other versions
KR20190112513A (en
Inventor
이상원
강민지
Original Assignee
성균관대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 성균관대학교 산학협력단 filed Critical 성균관대학교 산학협력단
Priority to KR1020180034586A priority Critical patent/KR102107604B1/en
Priority to PCT/KR2019/002958 priority patent/WO2019190084A1/en
Publication of KR20190112513A publication Critical patent/KR20190112513A/en
Application granted granted Critical
Publication of KR102107604B1 publication Critical patent/KR102107604B1/en

Links

Images

Classifications

    • 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
    • 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
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명은 비휘발성 메모리 장치, 및 비휘발성 메모리의 데이터 관리 방법에 관한 것으로, 비휘발성 메모리 장치는 복수의 페이지로 구성된 메모리 블럭을 복수 개 포함하는 비휘발성 메모리, 및 특정 조건을 만족하는 경우, 타임 스템프(timestamp)를 이용하여 상기 메모리 블럭을 저장 순서가 오래된 메모리 블럭부터 순차적으로 스캔하여 제1 임계값 이하의 유효한 페이지 개수를 가지는 n개의 메모리 블럭을 희생 블럭으로 선택하여 프리 블럭을 생성하고, 상기 희생 블럭에 포함된 유효한 콜드 페이지를 카피백하여 상기 메모리 블럭과 구분되는 상기 콜드 블럭으로 관리하는 컨트롤러를 포함한다. 본 발명에 의하면, 희생 블럭 선택시마다 모든 메모리 블럭을 스캔하지 않고, 일정 조건에 따라 메모리 블럭을 순차적으로 스캔하여 복수의 희생 블럭을 결정하고, 스캔 위치를 나타내는 헤더를 표시하므로 동작 속도를 향상시킬 수 있다.The present invention relates to a nonvolatile memory device and a method for managing data in a nonvolatile memory, wherein the nonvolatile memory device is a nonvolatile memory including a plurality of memory blocks composed of a plurality of pages, and a time when a specific condition is satisfied. The memory block is sequentially scanned from the memory block having the oldest storage order by using a timestamp, and n memory blocks having a valid number of pages below a first threshold are selected as a victim block to generate a free block. And a controller for copying back a valid cold page included in the victim block and managing the cold block to be distinguished from the memory block. According to the present invention, rather than scanning every memory block every time a victim block is selected, memory blocks are sequentially scanned according to a certain condition to determine a plurality of victim blocks, and a header indicating a scan position is displayed to improve operation speed. have.

Description

비휘발성 메모리 장치, 및 비휘발성 메모리의 데이터 관리 방법{NON-VOLATILE MEMORY APPARATUS AND DATA STORAGE METHID OF THE SAME}Nonvolatile memory device, and data management method of nonvolatile memory {NON-VOLATILE MEMORY APPARATUS AND DATA STORAGE METHID OF THE SAME}

본 발명은 비휘발성 메모리의 데이터 관리에 관한 것이다.The present invention relates to data management of non-volatile memory.

최근 컴퓨터 환경에 대한 패러다임이 언제, 어디서나 컴퓨터 시스템을 사용할 수 있도록 하는 유비쿼터시 컴퓨팅(ubiquitous coumpting)으로 전환되고 있다. 이로 인해, 휴대폰, 디지털 카메라, 노트북 컴퓨터 등과 같은 휴대용 전자 장치의 사용이 급증하고 있다. 이와 같은 휴대용 전자 장치는 일반적으로 메모리 장치를 사용하고, 메모리 장치는 휴대용 전자 장치의 주 기억 장치 또는 보조 기억 장치로 사용된다. Recently, the paradigm for the computer environment has been shifted to ubiquitous coumpting, which enables computer systems to be used anytime, anywhere. Due to this, the use of portable electronic devices such as mobile phones, digital cameras, and notebook computers is rapidly increasing. Such a portable electronic device generally uses a memory device, and the memory device is used as a main storage device or an auxiliary storage device of the portable electronic device.

메모리 장치는 기계적인 구동부가 없어서 안정성 및 내구성이 뛰어나며 정보의 액세스 속도가 매우 빠르고 전력 소모가 적다는 장점이 있다. 이러한 장점을 갖는 데이터 저장 장치는 USB(Universal Serial Bus), 다양한 인터페이스를 갖는 메모리 카드, 솔리드 스테이트 드라이브(SSD: Solid State Drive)를 포함한다. The memory device has the advantages of excellent stability and durability because there is no mechanical driving unit, and the information access speed is very fast and power consumption is low. Data storage devices having these advantages include Universal Serial Bus (USB), memory cards with various interfaces, and solid state drives (SSDs).

휴대용 전자 장치에서 음악, 동영상 등과 같은 대용량 파일들이 재생됨에 따라 메모리 장치 역시 큰 저장 용챵을 갖도록 요구된다. 메모리 장치는 큰 저장 용량을 확보하기 위해서 메모리 셀의 집적도가 높은 메모리 장치, 예를 들면, 비휘발성 메모리 장치의 하나의 플래시 메모리 장치를 사용한다. As large files such as music and videos are played in portable electronic devices, memory devices are also required to have large storage capacity. In order to secure a large storage capacity, the memory device uses a memory device having a high density of memory cells, for example, a flash memory device of a nonvolatile memory device.

플래시 메모리 장치는 구조적인 특징으로 인해서 데이터 덮어쓰기(overwrite)를 지원하지 않는다. 즉, 프로그램된 상태의 페이지(데이터가 저장되는 기본 단위로, '메모리 셀'과 동일한 의미로 사용됨)의 데이터를 갱신하는 것이 불가능하다. 따라서, 플래시 메모리에 데이터를 프로그램하기 위해서는 삭제(earase) 동작이 선행되어야 한다. 이를 프로그램 전 삭제 동작(erase-before-program)이라 한다. 즉, 플래시 메모리 장치의 프로그램된 상태의 페이지는 데이터가 프로그램되기 전에, 초기 상태 또는 삭제 상태로 되돌려져야 한다. Flash memory devices do not support data overwrite due to structural features. That is, it is impossible to update the data of the page in the programmed state (the basic unit in which data is stored, used in the same sense as 'memory cell'). Therefore, in order to program data in the flash memory, an erase operation must be preceded. This is called an erase-before-program operation. That is, the page in the programmed state of the flash memory device must be returned to the initial state or the erased state before data is programmed.

그러나, 플래시 메모리 장치의 삭제 동작은 해당 프로그램이 저장된 페이지의 데이터를 삭제한 후 동일한 페이지에 프로그램을 수정하지 않고, 새로운 페이지에 수정된 프로그램을 저장한다. 또한, 페이지로 구성된 메모리 블럭들이 모두 채워진 경우, 메모리 블럭 단위로 데이터를 삭제하여 프리 블럭을 생성한 후, 프리 블럭의 페이지에 데이터를 저장하게 된다.However, the deletion operation of the flash memory device does not modify the program on the same page after deleting the data of the page on which the program is stored, but stores the modified program on the new page. In addition, when all the memory blocks composed of pages are filled, data is deleted in units of memory blocks to generate a free block, and then data is stored in a page of the free block.

각각의 메모리 블럭은 유효한 페이지와 무효한 페이지를 가지고 있으며, 특정 메모리 블럭을 삭제하는 경우, 유효한 페이지의 데이터는 다른 블럭의 페이지로 카피백(copyback)한 후 유효한 페이지를 무효한 페이지로 전환한다. 이러한 방식에 의해, 전체 메모리 블럭이 무효한 페이지로만 구성된 블럭의 데이터를 삭제하고 프리 블럭을 생성하여 새로운 데이터를 저장하게 된다. Each memory block has a valid page and an invalid page. When a specific memory block is deleted, data of a valid page is copied back to a page of another block, and then a valid page is converted to an invalid page. In this way, data of a block composed of only invalid pages of an entire memory block is deleted, and free blocks are generated to store new data.

이러한 프리 블럭의 생성 방법으로, 모든 메모리 블럭을 스캔하여 유효한 페이지 개수가 가장 적은 메모리 블럭을 희생 블럭(victim block)으로 결정하고, 희생 블럭에 포함된 유효한 페이지를 카피백한 후 희생 블럭의 데이터를 삭제하는 가비지 콜렉션(Garbage Collection)을 일반적으로 사용하였다. As a method of generating such a free block, all memory blocks are scanned to determine a memory block having the smallest number of valid pages as a victim block, and after copying back a valid page included in the victim block, the data of the victim block is saved. The garbage collection to be deleted was generally used.

그러나, 이러한 방법은 가비지 콜렉션을 수행할 때마다 모든 메모리 블럭에 대하여 스캔한 후 희생 블럭을 결정해야 하고, 하나의 희생 블럭만을 선택하므로 가비지 콜렉션을 자주 수행해야 한다. 또한, 자주 수정되는 프로그램이 저장된 핫 페이지(hot page)와 수정되지 않고 오래전에 저장된 프로그램인 콜드 페이지(cold page)가 동일한 메모리 블럭에 저장되는 경우, 핫 페이지가 자주 업데이트되어 콜드 페이지가 저장된 메모리 블럭은 다시 희생 블럭으로 결정될 가능성이 높다. 따라서, 핫 페이지와 함께 저장된 콜드 페이지는 여러 번 카피백되야 하고, 이로 인하여 성능을 저하시키는 문제점이 있다.However, in this method, every time a garbage collection is performed, it is necessary to scan every memory block and then determine a victim block, and since only one victim block is selected, garbage collection is frequently performed. Also, if a hot page in which a program that is frequently modified is stored and a cold page that is an unmodified long-term program are stored in the same memory block, the hot page is frequently updated and the memory block in which the cold page is stored Is likely to be determined again as a sacrificial block. Therefore, the cold page stored together with the hot page must be copied back many times, thereby deteriorating performance.

본 발명은 메모리 블럭에 대하여 저장 순서에 따라 순차적으로 스캔하여 임계값 이하의 유효한 페이지를 가지는 복수의 희생 블럭을 프리 블럭으로 생성하고, 희생 블럭에 포함된 유효한 콜드 페이지를 카피백하여 콜드 블럭으로 관리하는 비휘발성 메모리 장치, 및 비휘발성 메모리의 데이터 관리 방법을 제공하는데 그 목적이 있다.According to the present invention, a plurality of victim blocks having valid pages below a threshold value are generated as free blocks by sequentially scanning memory blocks in a storage order, and a valid cold page included in the victim block is copied back and managed as a cold block. An object of the present invention is to provide a nonvolatile memory device and a method for managing data in a nonvolatile memory.

또한, 본 발명은 메모리 블럭에 대한 스캔이 완료된 후에도 데이터 저장 공간이 부족한 경우, 콜드 블럭에 대해 희생 블럭을 선택한즌 과정을 후순위로 수행하는 비휘발성 메모리 장치, 및 비휘발성 메모리의 데이터 관리 방법을 제공하는데 그 목적이 있다.In addition, the present invention provides a nonvolatile memory device that performs a sensation process of selecting a victim block for a cold block as a next priority when the data storage space is insufficient even after the scan for the memory block is completed, and a data management method of the nonvolatile memory There is a purpose.

상기의 목적을 달성하기 위해 본 발명의 일 실시예에 따른 비휘발성 메모리 장치는 복수의 페이지로 구성된 메모리 블럭을 복수 개 포함하는 비휘발성 메모리, 및 특정 조건을 만족하는 경우, 타임 스템프(timestamp)를 이용하여 상기 메모리 블럭을 저장 순서가 오래된 메모리 블럭부터 순차적으로 스캔하여 제1 임계값 이하의 유효한 페이지 개수를 가지는 n개의 메모리 블럭을 희생 블럭으로 선택하여 프리 블럭을 생성하고, 상기 희생 블럭에 포함된 유효한 콜드 페이지를 카피백하여 상기 메모리 블럭과 구분되는 상기 콜드 블럭으로 관리하는 컨트롤러를 포함한다.To achieve the above object, a nonvolatile memory device according to an embodiment of the present invention includes a nonvolatile memory including a plurality of memory blocks composed of a plurality of pages, and a timestamp when a specific condition is satisfied. The memory block is sequentially scanned starting from the memory block having the oldest storage order, and n memory blocks having a valid number of pages equal to or less than a first threshold are selected as a victim block to generate a free block, and included in the victim block. And a controller for copying a valid cold page and managing it as the cold block separated from the memory block.

여기서, 컨트롤러는, 설정에 따라 상기 생성된 프리 블럭을 상기 메모리 블럭, 상기 콜드 블럭, 또는 상기 프리 블럭으로 사용할 수 있다. Here, the controller may use the generated free block as the memory block, the cold block, or the free block according to the setting.

또한, 컨트롤러는 상기 n개의 희생 블럭에 포함된 상기 유효한 콜드 페이지를 프리 블럭에 카피백(copyback)하고, 상기 카피백이 완료된 프리 블럭을 콜드 블럭으로 구분하고, 상기 n개의 희생 블럭에 저장된 데이터를 삭제하여 새로운 프리 블럭을 생성할 수 있다. In addition, the controller copies the valid cold page included in the n victim blocks into a free block, divides the free block from which the copy is completed into a cold block, and deletes data stored in the n victim blocks. To create a new free block.

또한, 컨트롤러는 스캔 위치를 나타내는 헤더를 상기 메모리 블럭에 표시하고, 상기 헤더가 표시된 메모리 블럭부터 다음 스캔을 수행할 수 있다. In addition, the controller may display a header indicating the scan position on the memory block, and perform the next scan from the memory block on which the header is displayed.

또한, 컨트롤러는 상기 프리 블럭을 생성한 후, 다시 특정 조건을 만족하는 경우, 상기 헤더가 표시된 메모리 블럭부터 다시 스캔을 수행하여 상기 제1 임계값 이하의 유효한 페이지 개수를 가지는 새로운 n개의 희생 블럭을 선택할 수 있다. In addition, after generating the pre-block, when the specific condition is satisfied again, the controller performs a scan again from the memory block in which the header is displayed to generate new n victim blocks having a valid number of pages below the first threshold. You can choose.

또한, 컨트롤러는 상기 제1 임계값과 상기 생성할 프리 블럭의 개수를 미리 설정하고, 상기 설정된 제1 임계값과 생성할 프리 블럭의 개수에 따라 상기 희생 블럭의 개수를 결정할 수 있다. Also, the controller may preset the first threshold and the number of free blocks to be generated, and determine the number of the victim blocks according to the set first threshold and the number of free blocks to be generated.

또한, 컨트롤러는 상기 메모리 블럭에 대한 스캔이 완료되면, 상기 콜드 블럭에 대하여 저장 순서에 따라 순차적으로 스캔하여 상기 제1 임계값보다 크게 설정된 제2 임계값 이하의 유효한 페이지 개수를 가지는 k개의 콜드 블럭을 선택하여 희생 블럭으로 결정하고, 상기 k개의 희생 블럭에 포함된 상기 유효한 콜드 페이지를 마지막 콜드 블럭 또는 프리 블럭에 카피백하고, 상기 카피백이 완료된 콜드 블럭 또는 프리 블럭을 콜드 블럭으로 구분하고, 상기 카피백이 완료된 k개의 희생 블럭에 저장된 데이터를 삭제하여 새로운 프리 블럭으로 생성할 수 있다. In addition, when the scan for the memory block is completed, the controller sequentially scans the cold blocks according to a storage order, and has k effective number of pages below a second threshold set larger than the first threshold. Is selected as a sacrificial block, the valid cold page included in the k sacrificial blocks is copied back to the last cold block or free block, and the cold block or free block where the copyback is completed is divided into cold blocks, and the Data stored in k victim blocks whose copyback is completed may be deleted to generate a new free block.

본 발명의 다른 실시예에 따른 비휘발성 메모리 장치는 복수의 페이지로 구성된 메모리 블럭을 복수 개 포함하는 비휘발성 메모리, 및 상기 복수 개의 메모리 블럭으로부터 임계값 이하의 유효한 페이지 개수를 가지는 n개의 메모리 블럭을 선택하여 희생 블럭으로 결정하고, 상기 n개의 희생 블럭에 포함된 상기 유효한 콜드 페이지를 프리 블럭에 카피백(copyback)하고, 상기 카피백이 완료된 프리 블럭을 상기 복수 개의 메모리 블럭과 구분되는 콜드 블럭으로 구분하고, 상기 카피백이 완료된 n개의 희생 블럭에 저장된 데이터를 삭제하여 새로운 프리 블럭을 생성하되, 상기 콜드 블럭은 상기 복수 개의 메모리 블럭에 대한 스캔이 완료될 때까지 스캔 대상에서 제외하는 컨트롤러를 포함한다.A nonvolatile memory device according to another embodiment of the present invention includes a nonvolatile memory including a plurality of memory blocks composed of a plurality of pages, and n memory blocks having a valid number of pages below a threshold value from the plurality of memory blocks. It is selected and determined as a sacrificial block, and the valid cold page included in the n sacrificial blocks is copied back to a free block, and the free block where the copyback is completed is divided into cold blocks that are distinguished from the plurality of memory blocks. Then, data stored in the n victim blocks whose copyback is completed is generated to generate a new free block, but the cold block includes a controller that is excluded from scanning until the scan for the plurality of memory blocks is completed.

본 발명의 또 다른 실시예에 따른 비휘발성 메모리의 데이터 관리 방법은 프리 블럭의 개수가 설정된 개수 이하인 경우, 타임 스템프(timestamp)를 이용하여 메모리 블럭을 저장 순서가 오래된 메모리 블럭부터 순차적으로 스캔하여 제1 임계값 이하의 유효한 페이지 개수를 가지는 n개의 메모리 블럭을 선택하여 희생 블럭으로 결정하는 단계, 상기 n개의 희생 블럭에 포함된 상기 유효한 콜드 페이지를 상기 프리 블럭에 카피백(copyback)하고 상기 카피백이 완료된 프리 블럭을 콜드 블럭으로 구분하는 단계, 및 상기 n개의 희생 블럭에 저장된 데이터를 삭제하여 새로운 프리 블럭으로 생성하는 단계를 포함한다.According to another embodiment of the present invention, when the number of free blocks is less than or equal to a set number, the method for managing data in a nonvolatile memory is sequentially scanned from a memory block having an old storage order using a timestamp. Selecting n memory blocks having a valid number of pages below a threshold value and determining them as victim blocks, copying the valid cold pages included in the n victim blocks into the free blocks and copying the memory blocks And dividing the completed free blocks into cold blocks, and deleting data stored in the n victim blocks to generate new free blocks.

또한, 비휘발성 메모리의 데이터 관리 방법은 상기 n개의 메모리 블럭을 선택하는 단계 이후, 상기 메모리 블럭의 스캔 위치를 나타내는 헤더를 상기 스캔이 완료된 메모리 블럭의 다음 메모리 블럭에 표시하는 단계를 더 포함하여 구성될 수 있다.In addition, the method for managing data in a nonvolatile memory further comprises displaying a header indicating a scan position of the memory block in a memory block after the scan is completed, after selecting the n memory blocks. Can be.

또한, 비휘발성 메모리의 데이터 관리 방법은 상기 각 단계를 모든 메모리 블럭에 대하여 반복적으로 수행한 후, 상기 메모리 블럭에 대한 스캔이 완료되면, 상기 콜드 블럭에 대하여 저장 순서에 따라 순차적으로 스캔하여 상기 제1 임계값보다 큰 제2 임계값 이하의 유효한 페이지 개수를 가지는 k개의 콜드 블럭을 희생 블럭으로 선택하는 단계, 상기 k개의 희생 블럭에 포함된 상기 유효한 페이지를 마지막 콜드 블럭의 빈 페이지 또는 프리 블럭에 카피백하고, 상기 카피백이 완료된 콜드 블럭 또는 프리 블럭을 콜드 블럭으로 구분하는 단계, 및 상기 카피백이 완료된 k개의 희생 블럭에 저장된 데이터를 삭제하여 새로운 프리 블럭으로 생성하는 단계를 더 포함하여 구성될 수 있다.In addition, in the data management method of the nonvolatile memory, after each step is repeatedly performed for all memory blocks, when the scan for the memory blocks is completed, the cold blocks are sequentially scanned according to the storage order to remove the memory. Selecting k cold blocks having a valid number of pages less than or equal to a second threshold value greater than one threshold value as a victim block, and adding the valid pages included in the k victim blocks to empty or free blocks of the last cold block. The method may further include copying, dividing the cold block or free block in which the copyback is completed into a cold block, and deleting data stored in the k victim blocks in which the copyback is completed to generate a new free block. have.

본 발명에 의하면, 메모리 블럭을 스캔하여 희생 블럭이 선택되면, 희생 블럭에 포함된 콜드 페이지를 콜드 블럭으로 카피백하여 관리하므로, 콜드 페이지의 불필요한 카피백 횟수를 줄일 수 있는 효과가 있다.According to the present invention, when a victim block is selected by scanning a memory block, since the cold page included in the victim block is copied and managed as a cold block, there is an effect of reducing the number of unnecessary copybacks of the cold page.

또한, 희생 블럭 선택시마다 모든 메모리 블럭을 스캔하지 않고, 일정 조건에 따라 메모리 블럭을 순차적으로 스캔하여 복수의 희생 블럭을 결정하고, 스캔 위치를 나타내는 헤더를 표시하므로 동작 속도를 향상시킬 수 있다는 효과가 있다.Also, instead of scanning every memory block every time a victim block is selected, memory blocks are sequentially scanned according to a certain condition to determine a plurality of victim blocks, and a header indicating a scan position is displayed to improve the operation speed. have.

도 1은 본 발명의 일 실시예에 따른 비휘발성 메모리 장치의 개략적인 구성도이다.
도 2는 본 발명의 다른 실시예에 따른 비휘발성 메모리 장치의 데이터 관리 방법을 설명하기 위한 흐름도이다.
도 3은 본 발명의 일 실시예에 따른 비휘발성 메모리 장치의 메모리 구조를 설명하기 위한 도면이다.
도 4는 종래의 비휘발성 메모리의 데이터 관리 방법을 설명하기 위한 도면이다.
도 5 내지 도 11은 본 발명의 다른 실시예에 따른 비휘발성 메모리 장치의 데이터 관리 방법을 설명하기 위한 도면이다.
1 is a schematic configuration diagram of a nonvolatile memory device according to an embodiment of the present invention.
2 is a flowchart illustrating a data management method of a nonvolatile memory device according to another embodiment of the present invention.
3 is a diagram for describing a memory structure of a nonvolatile memory device according to an embodiment of the present invention.
4 is a view for explaining a data management method of a conventional nonvolatile memory.
5 to 11 are diagrams for describing a data management method of a nonvolatile memory device according to another embodiment of the present invention.

본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면을 참조하여 상세하게 설명하도록 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.The present invention can be applied to various changes and can have various embodiments, and specific embodiments will be described in detail with reference to the drawings. However, this is not intended to limit the present invention to specific embodiments, and should be understood to include all modifications, equivalents, and substitutes included in the spirit and scope of the present invention. In describing each drawing, similar reference numerals are used for similar components.

제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재 항목들의 조합 또는 복수의 관련된 기재 항목들 중의 어느 항목을 포함한다.Terms such as first, second, A, and B may be used to describe various components, but the components should not be limited by the terms. The terms are used only for the purpose of distinguishing one component from other components. For example, without departing from the scope of the present invention, the first component may be referred to as the second component, and similarly, the second component may also be referred to as the first component. The term and / or includes a combination of a plurality of related description items or any one of a plurality of related description items.

어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급될 때에는 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. When a component is said to be "connected" to or "connected" to another component, it should be understood that other components may be directly connected to or connected to the other component, but may exist in the middle. something to do. On the other hand, when a component is said to be "directly connected" or "directly connected" to another component, it should be understood that no other component exists in the middle.

본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terms used in this application are only used to describe specific embodiments, and are not intended to limit the present invention. Singular expressions include plural expressions unless the context clearly indicates otherwise. In this application, the terms "include" or "have" are intended to indicate the presence of features, numbers, steps, actions, components, parts or combinations thereof described herein, one or more other features. It should be understood that the existence or addition possibilities of fields or numbers, steps, operations, components, parts or combinations thereof are not excluded in advance.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless defined otherwise, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by a person skilled in the art to which the present invention pertains. Terms such as those defined in a commonly used dictionary should be interpreted as having meanings consistent with meanings in the context of related technologies, and should not be interpreted as ideal or excessively formal meanings unless explicitly defined in the present application. Does not.

명세서 및 청구범위 전체에서, 어떤 부분이 어떤 구성 요소를 포함한다고 할때, 이는 특별히 반대되는 기재가 없는 한 다른 구성 요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있다는 것을 의미한다. Throughout the specification and claims, when a part includes a certain component, this means that other components may be further included rather than excluding other components unless specifically stated to the contrary.

이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다. Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings.

도 1은 본 발명의 일 실시예에 따른 비휘발성 메모리 장치의 개략적인 구성도이다.1 is a schematic configuration diagram of a nonvolatile memory device according to an embodiment of the present invention.

도 1을 참조하면, 본 발명의 일 실시예에 따른 비휘발성 메모리 장치(100)는 비휘발성 메모리(110) 및 컨트롤러(120)를 포함하여 구성된다. 또한, 비휘발성 메모리 장치(100)는 상기의 구성 요소 이외에 인터페이스부 등의 다른 구성 요소를 더 포함할 수 있다. Referring to FIG. 1, a nonvolatile memory device 100 according to an embodiment of the present invention includes a nonvolatile memory 110 and a controller 120. Also, the nonvolatile memory device 100 may further include other components such as an interface unit in addition to the above components.

구체적으로, 비휘발성 메모리(110)는 복수의 메모리 블럭(B1 내지 Bn)으로 구성되며, 각 메모리 블럭은 복수의 페이지로 구성될 수 있다. 이때, 페이지는 데이터가 저장되는 최소 단위를 나타내고, 블럭은 설정된 개수의 페이지가 모인 단위를 나타낸다. 데이터의 논리적 주소와 메모리의 물리적 주소의 매칭 관계에 따라, 페이지 또는 블럭 단위로 데이터가 저장될 수 있고, 각 페이지의 개수, 각 페이지에 저장되는 데이터 양은 컨트롤러(120)에 의해 설정될 수 있다. 본 발명은 페이지 단위로 데이터가 저장되는 경우를 나타내며, 설명의 편의를 위하여 하나의 메모리 블럭은 4개의 페이지로 구성된 경우를 예로 들어 설명한다. 실제로, 하나의 블럭은 128개, 256개 등의 페이지로 구성될 수 있다. 또한, 사용 형태에 따라 데이터가 저장된 또는 데이터를 저장할 블럭을 메모리 블럭(Normal Block), 콜드 블럭(Cold Block), 프리 블럭(Free Block), 희생 블럭(Victim Block)으로 구분할 수 있다.Specifically, the nonvolatile memory 110 is composed of a plurality of memory blocks B1 to Bn, and each memory block may be composed of a plurality of pages. At this time, the page represents the minimum unit in which data is stored, and the block represents the unit in which the set number of pages are collected. Depending on the matching relationship between the logical address of data and the physical address of memory, data may be stored in units of pages or blocks, and the number of pages and the amount of data stored in each page may be set by the controller 120. The present invention represents a case in which data is stored in units of pages, and for convenience of description, a case where one memory block is composed of four pages will be described. Actually, one block may be composed of 128 pages, 256 pages, and the like. In addition, depending on the type of use, a block in which data is stored or to store data may be classified into a memory block, a cold block, a free block, and a victim block.

컨트롤러(120)는 특정 조건을 만족하는 경우, 타임 스템프(timestamp)를 이용하여 메모리 블럭(B1 내지 Bn)을 저장 순서가 오래된 메모리 블럭부터 순차적으로 스캔하여 제1 임계값 이하의 유효한 페이지 개수를 가지는 n개의 메모리 블럭을 희생 블럭(Victim Block)으로 선택할 수 있다. 여기서, 특정 조건은 데이터의 저장 공간이 부족한 상태를 의미한다. 예를 들어, 특정 조건은 프리 블럭의 개수가 설정된 개수 이하인 경우가 될 수 있다. 일반적으로 프리 블럭이 1개인 경우 새로운 프리 블럭을 생성할 수 있다. 컨트롤러(120)는 선택된 n개의 희생 블럭에 저장된 데이터를 삭제하여 프리 블럭을 생성할 수 있다.When the controller 120 satisfies a specific condition, the memory blocks B1 to Bn are sequentially scanned from memory blocks having an old storage order using a timestamp to have a valid number of pages below a first threshold. n memory blocks can be selected as a victim block. Here, the specific condition means a state in which the storage space of the data is insufficient. For example, a specific condition may be a case in which the number of free blocks is equal to or less than a set number. In general, when there is one free block, a new free block can be generated. The controller 120 may delete the data stored in the selected n victim blocks to generate a free block.

구체적으로, 컨트롤러(120)는 n개의 메모리 블럭에 포함된 유효한 콜드 페이지를 프리 블럭에 복사하여 저장하는 카피백(copyback)을 수행할 수 있다. 컨트롤러(120)는 카피백이 완료되면, 콜드 페이지가 쓰여진 프리 블럭을 콜드 블럭으로 구분할 수 있다. 또한, 컨트롤러(120)는 n개의 희생 블럭에 저장된 데이터를 삭제하여 새로운 프리 블럭을 생성할 수 있다. 여기서, 콜드 페이지는 현재 쓰기(write) 시점을 기준으로 저장 시점이 오래된 블럭에 포함되고 업데이트가 수행된 지 오래된 유효한 페이지로 정의한다. 콜드 블럭(Cold Block)은 콜드 페이지만 저장하는 블럭으로 메모리 블럭(Normal Block)과 구분한다. Specifically, the controller 120 may perform a copyback that copies and stores a valid cold page included in n memory blocks into a free block. When copyback is completed, the controller 120 may classify a free block in which a cold page is written as a cold block. In addition, the controller 120 may create new free blocks by deleting data stored in n victim blocks. Here, the cold page is defined as a valid page that has been stored in an old block based on the current write time and has been updated since the update was performed. Cold block is a block that stores only cold pages and is distinguished from a memory block.

컨트롤러(120)는 메모리 블럭의 스캔 위치를 나타내는 헤더(Header)를 메모리 블럭(B1 내지 Bn)에 표시하고, 헤더가 표시된 메모리 블럭부터 다음 스캔을 수행할 수 있다. 또한, 컨트롤러(120)는 새로운 프리 블럭(Free Block)에 페이지 단위로 데이터를 쓸 수 있다. 이때, 프리 블럭은 모든 페이지가 사용되지 않은 블럭을 나타낸다. 새로운 프리 블럭에 페이지를 쓴 후, 다시 특정 조건을 만족하는 경우, 헤더가 표시된 메모리 블럭부터 다시 스캔을 수행하여 제1 임계값 이하의 유효한 페이지 개수를 가지는 새로운 n개의 희생 블럭을 선택할 수 있다. 이러한 방법으로, 특정 조건을 만족하는 경우, 즉, 프리 블럭이 필요한 경우, 헤더 위치부터 희생 블럭을 선택하여 프리 블럭을 생성할 수 있다. 컨트롤러(120)는 생성된 프리 블럭을 콜드 페이지를 저장하는 콜드 블럭으로 사용하거나, 메모리 블럭으로 사용하거나, 또는 프리 블럭으로 사용할 수 있다. 컨트롤러(120)는 제1 임계값과 새로운 프리 블럭의 개수를 미리 설정하고, 설정된 제1 임계값과 새로운 프리 블럭의 개수에 따라 희생 블럭의 개수를 결정할 수 있다. 이때, 희생 블럭의 개수는 복수 개로 결정되어야 한다. The controller 120 may display a header indicating the scan position of the memory block in the memory blocks B1 to Bn, and perform the next scan from the memory block in which the header is displayed. In addition, the controller 120 can write data in units of pages in a new free block. At this time, the free block represents a block in which all pages are not used. After writing a page to a new free block, if a specific condition is satisfied again, a new scan is performed from the memory block in which the header is displayed to select new n victim blocks having a valid number of pages below the first threshold. In this way, when a specific condition is satisfied, that is, when a free block is required, a free block may be generated by selecting a victim block from a header position. The controller 120 may use the generated free block as a cold block storing a cold page, a memory block, or a free block. The controller 120 may set the first threshold value and the number of new free blocks in advance, and determine the number of victim blocks according to the set first threshold value and the number of new free blocks. At this time, the number of sacrificial blocks should be determined as a plurality.

컨트롤러(120)는 메모리 블럭(B1 내지 Bn)에 대한 스캔이 완료되면, 콜드 블럭(Cold Block)에 대하여 스캔하여 희생 블럭을 결정할 수 있다. 구체적으로, 컨트롤러(120)는 콜드 블럭(Cold Block)에 대하여 저장 순서에 따라 순차적으로 스캔하여 제1 임계값보다 크게 설정된 제2 임계값 이하의 유효한 페이지 개수를 가지는 k개의 콜드 블럭을 선택하여 희생 블럭으로 결정할 수 있다. 컨트롤러(120)는 k개의 희생 블럭에 포함된 유효한 페이지를 마지막 콜드 블럭 또는 프리 블럭에 카피백하고, 카피백이 완료된 콜드 블럭 또는 프리 블럭을 콜드 블럭으로 구분한다. 컨트롤러(120)는 희생 블럭에 포함된 유효한 페이지를 옮겨쓴 블럭인 콜드 블럭인 경우, 그 상태로 유지하고, 프리 블럭인 경우 콜드 블럭으로 구획을 변경할 수 있다. 또한, 컨트롤러(120)는 카피백이 완료된 k개의 희생 블럭에 저장된 데이터를 삭제하여 새로운 프리 블럭으로 생성할 수 있다. When the scan of the memory blocks B1 to Bn is completed, the controller 120 may scan the cold block to determine the victim block. Specifically, the controller 120 sequentially scans a cold block according to a storage order and selects k cold blocks having a valid number of pages equal to or less than a second threshold set larger than the first threshold, and sacrifices them. You can decide by block. The controller 120 copies back a valid page included in the k victim blocks to the last cold block or free block, and divides the cold block or free block whose copy back is completed into a cold block. The controller 120 may maintain the state in the case of a cold block, which is a block in which a valid page included in the victim block is moved, and change the partition to a cold block in the case of a free block. In addition, the controller 120 may delete data stored in k victim blocks whose copyback is completed and generate new free blocks.

도 2는 본 발명의 다른 실시예에 따른 비휘발성 메모리 장치의 데이터 관리 방법을 설명하기 위한 흐름도이다. 2 is a flowchart illustrating a data management method of a nonvolatile memory device according to another embodiment of the present invention.

도 2를 참조하면, 본 발명의 다른 실시예에 따른 비휘발성 메모리 장치의 데이터 관리 방법은 메모리 블럭의 페이지에 데이터를 쓰고(S1010), 프리 블럭의 개수가 설정된 개수 이하인지 판단한다(S1020). Referring to FIG. 2, in a data management method of a nonvolatile memory device according to another embodiment of the present invention, data is written to a page of a memory block (S1010), and it is determined whether the number of free blocks is equal to or less than a set number (S1020).

판단 결과에 따라, 프리 블럭의 개수가 설정된 개수 이하인 경우(예), 메모리 블럭을 스캔하여 제1 임계값 이하의 유효한 페이지를 갖는 n개의 메모리 블럭을 선택하여 희생 블럭으로 결정한다(S1030).According to the determination result, if the number of free blocks is less than or equal to the set number (Yes), the memory block is scanned and n memory blocks having valid pages below the first threshold are selected and determined as a victim block (S1030).

다음으로, 유효한 페이지(Valid Page)를 프리 블럭에 카피백하고(S1040), 프리 블럭을 콜드 블럭으로 사용한 후(S1050), n개의 희생 블럭에 저장된 데이터를 삭제하여 n개의 희생 블럭을 새로운 프리 블럭으로 생성할 수 있다(S1060).Next, a valid page (Valid Page) is copied back to the free block (S1040), the free block is used as a cold block (S1050), and the data stored in the n victim blocks is deleted to remove the n victim blocks from the new free block. It can be generated (S1060).

또한, 비휘발성 메모리의 데이터 관리 방법은 상기 n개의 메모리 블럭을 선택하는 단계 이후, 상기 메모리 블럭의 스캔 위치를 나타내는 헤더를 상기 스캔이 완료된 메모리 블럭의 다음 메모리 블럭에 표시하는 단계를 더 포함하여 구성될 수 있다.In addition, the method for managing data in a nonvolatile memory further comprises displaying a header indicating a scan position of the memory block in a memory block after the scan is completed, after selecting the n memory blocks. Can be.

또한, 비휘발성 메모리의 데이터 관리 방법은 S1010 내지 S1060 각 단계를 모든 메모리 블럭에 대하여 반복적으로 수행할 수 있다. 이러한 방법으로, 모든 메모리 블럭에 대하여 1회의 스캔을 통해 프리 블럭을 생성하고, 1회의 스캔이 완료된 후 데이터를 저장할 공간이 부족한 경우, 즉, 새로운 프리 블럭의 생성이 필요한 경우에는 콜드 블럭들에 대하여 저장 순서에 따라 순차적으로 스캔하여 제1 임계값보다 큰 제2 임계값 이하의 유효한 페이지 개수를 가지는 k개의 콜드 블럭을 희생 블럭으로 선택할 수 있다. 다음으로, k개의 희생 블럭에 포함된 유효한 페이지를 마지막 콜드 블럭의 빈 페이지 또는 프리 블럭에 카피백하고, 카피백이 완료된 콜드 블럭 또는 프리 블럭을 콜드 블럭으로 구분한다. 또한, 카피백이 완료된 k개의 희생 블럭에 저장된 데이터를 삭제하여 새로운 프리 블럭으로 생성할 수 있다. In addition, in the data management method of the nonvolatile memory, steps S1010 to S1060 may be repeatedly performed for all memory blocks. In this way, a free block is generated through one scan for all memory blocks, and when there is insufficient space to store data after one scan is completed, that is, when a new free block is required, cold blocks are generated. By scanning sequentially according to the storage order, k cold blocks having a valid number of pages below the second threshold value greater than the first threshold value may be selected as a victim block. Next, a valid page included in the k victim blocks is copied back to the free page or free block of the last cold block, and the cold block or free block whose copy back is completed is classified as a cold block. Also, data stored in k victim blocks whose copyback is completed may be deleted to generate a new free block.

따라서, 본 발명에 따르면, 새로운 프리 블럭을 생성하기 위하여 메모리 블럭 전체를 다시 스캔할 필요가 없고, 복수의 프리 블럭을 생성할 수 있다. 또한, 콜드 페이지는 콜드 블럭으로 구분하여 저장하므로, 프리 블럭을 생성하기 위해 콜드 페이지를 반복적으로 카피백하지 않아도 되므로 데이터 관리의 효율성을 높일 수 있다. Therefore, according to the present invention, it is not necessary to scan the entire memory block again to create a new free block, and multiple free blocks can be generated. In addition, since the cold page is divided and stored as a cold block, it is not necessary to repeatedly copy back the cold page to generate a free block, thereby increasing data management efficiency.

이하, 4개의 페이지로 구성된 n개의 메모리 블럭을 포함하는 비휘발성 메모리 장치의 데이터 관리 방법을 구체적으로 설명하도록 한다. Hereinafter, a data management method of a nonvolatile memory device including n memory blocks composed of 4 pages will be described in detail.

도 3은 본 발명의 일 실시예에 따른 비휘발성 메모리 장치의 메모리 구조를 설명하기 위한 도면이다.3 is a diagram for describing a memory structure of a nonvolatile memory device according to an embodiment of the present invention.

도 3을 참조하면, 본 발명의 일 실시예에 따른 비휘발성 메모리 장치의 메모리 구조는 복수 개의 메모리 블럭(B1 내지 B3)으로 구성되고, 각 메모리 블럭은 4개의 페이지(P1 내지 P4)로 구성된 페이지로 구성된다.Referring to FIG. 3, a memory structure of a nonvolatile memory device according to an embodiment of the present invention is composed of a plurality of memory blocks B1 to B3, and each memory block is a page composed of four pages P1 to P4 It consists of.

각 페이지는 유효하지 않은 페이지(Invalid Page), 유효한 페이지(Valid Page), 및 사용되지 않은 페이지(Not Used Page)로 구분될 수 있다. 유효하지 않은 페이지(Invalid Page)는 새로운 페이지로 데이터를 옮긴 페이지, 수정된 프로그램이 저장된 페이지 등을 나타낸다. Each page can be divided into an invalid page, a valid page, and a not used page. An invalid page indicates a page where data is moved to a new page, a page in which a modified program is stored, and the like.

도 4는 종래의 비휘발성 메모리의 데이터 관리 방법을 설명하기 위한 도면이다.4 is a view for explaining a data management method of a conventional nonvolatile memory.

도 4를 참조하면, 종래의 비휘발성 메모리의 데이터 관리 방법은 복수 개의 메모리 블럭(B1 내지 Bn)을 모두 스캔하여 하나의 희생 블럭(VB)만을 선택한다. Referring to FIG. 4, in the conventional method of managing data in a nonvolatile memory, only one victim block VB is selected by scanning all of the plurality of memory blocks B1 to Bn.

다음으로, 선택된 하나의 희생 블럭(VB)에 포함된 유효한 페이지를 현재 쓰는 페이지(New Write)로 카피백하고, 선택된 하나의 희생 블럭(VB)에 저장된 데이터를 모두 삭제하여 프리 블럭(Free Block)으로 생성할 수 있다. 희생 블럭(VB)은 유효한 페이지의 개수가 가장 적은 메모리 블럭을 나타낸다. Next, a valid page included in the selected one victim block VB is copied back to the current write page, and all data stored in the selected one victim block VB is deleted to free blocks. Can be created with The victim block VB represents a memory block having the smallest number of valid pages.

종래의 비휘발성 메모리의 데이터 관리 방법에 따르면, 하나의 희생 블럭(VB)을 프리 블럭으로 변경하므로, 하나의 프리 블럭만이 생성되고, 희생 블럭(VB)에 포함된 유효한 페이지는 데이터가 현재 쓰여진 위치의 페이지에 저장되므로, 최근 수정된 프로그램이 저장된 페이지와 오랫동안 수정되지 않은 희생 블럭에 포함된 콜드 페이지가 하나의 블럭(Bn)에 저장될 수 있다. According to the data management method of the conventional nonvolatile memory, since one victim block VB is changed to a free block, only one free block is generated, and a valid page included in the victim block VB is currently written with data. Since it is stored in the page of the location, a page in which the recently modified program is stored and a cold page included in the victim block that has not been modified for a long time can be stored in one block Bn.

이 경우, 최근 수정된 프로그램이 계속해서 수정되면, 희생 블럭에 포함된 콜드 페이지가 카피백된 메모리 블럭(Bn)은 다시 희생 블럭으로 선택되게 되어, 콜드 페이지가 반복하여 카피백되는 문제가 발생한다.In this case, if the recently modified program is continuously modified, the memory block Bn in which the cold page included in the victim block is copied back is selected as the victim block again, resulting in a problem in which the cold page is repeatedly copied back. .

도 5 내지 도 11은 본 발명의 다른 실시예에 따른 비휘발성 메모리 장치의 데이터 관리 방법을 설명하기 위한 도면이다. 5 to 11 are diagrams for describing a data management method of a nonvolatile memory device according to another embodiment of the present invention.

도 5는 본 발명에 따른 비휘발성 메모리 장치의 데이터 관리 방법에서 메모리 블럭을 저장 시간 순서로 스캔하여 희생 블럭을 선택하는 방법을 설명하기 위한 도면이다. 5 is a diagram for explaining a method of selecting a victim block by scanning a memory block in a storage time order in a data management method of a nonvolatile memory device according to the present invention.

도 5를 참조하면, 컨트롤러는 메모리 블럭의 타임 스템프를 이용하여 저장 순서가 오래된 메모리 블럭부터 순차적으로 희생 블럭(VB)을 스캔할 수 있다. Referring to FIG. 5, the controller may sequentially scan the victim block VB from an old memory block using a time stamp of the memory block.

희생 블럭(VB)은 유효한 페이지 개수가 제1 임계값 이하인 블럭이며, 순차적으로 스캔하면서 n개의 희생 블럭이 선택되면 스캔을 멈추고 헤더(Header)를 다음 블럭 상에 표시할 수 있다. 여기서, 제1 임계값은 2개로 예를 들어 설명하고, 설정에 따라 변경될 수 있다. The victim block VB is a block in which the number of valid pages is equal to or less than the first threshold, and when n victim blocks are selected while sequentially scanning, the scan may be stopped and a header may be displayed on the next block. Here, the first threshold value is described as two examples, and may be changed according to the setting.

컨트롤러는 저장 순서가 가장 오래된 메모리 블럭 BN1의 유효한 페이지 개수를 확인하고 유효한 페이지 개수가 제1 임계값인 "2"보다 크므로 희생 블럭으로 선택하지 않고 다음 메모리 블럭 BN2를 확인한다. 이러한 방법으로, 저장 순서에 따라 스캔하여 유효한 페이지 개수가 "2"보다 적은 메모리 블럭을 희생 블럭(VB)으로 선택한다. The controller checks the number of valid pages of the memory block BN1 having the oldest storage order, and checks the next memory block BN2 without selecting it as a victim block because the number of valid pages is greater than the first threshold value of "2". In this way, a memory block having a valid number of pages less than "2" is selected as a victim block VB by scanning according to the storage order.

따라서, BN2, BN4가 희생 블럭(VB)으로 선택될 수 있다. 컨트롤러는 설정된 희생 블럭의 개수 "n"을 확인하고, 예를 들어, n=2라면, 2개의 희생 블럭(VB)이 선택되면 스캔을 멈추고 다음 메모리 블럭 BN5에 헤더(Header)를 표시할 수 있다. Therefore, BN2 and BN4 can be selected as the sacrificial block VB. The controller checks the set number of victim blocks "n", and for example, if n = 2, when two victim blocks VB are selected, the scan may be stopped and a header may be displayed in the next memory block BN5. .

도 6은 본 발명에 따른 비휘발성 메모리 장치의 데이터 관리 방법에서 선택된 복수 개의 희생 블럭의 데이터를 병합(merge)하는 방법을 설명하기 위한 도면이다. 6 is a view for explaining a method of merging data of a plurality of victim blocks selected in a data management method of a nonvolatile memory device according to the present invention.

도 6을 참조하면, 컨트롤러는 선택된 희생 블럭(VB) BN2, BN4 각각의 유효한 페이지를 프리 블럭(Free Block)으로 카피백하고, 카피백이 완료된 프리 블럭(BF1)을 콜드 블럭(BC2)으로 변경하여 관리할 수 있다. 콜드 블럭은 메모리 블럭(Normal Block)과 구분되어 관리될 수 있다. Referring to FIG. 6, the controller copies a valid page of each of the selected victim blocks (VB) BN2 and BN4 into a free block, and changes the free block (BF1) in which copyback is completed into a cold block (BC2). I can manage it. The cold block can be managed separately from the memory block (Normal Block).

컨트롤러는 희생 블럭(VB) BN2, BN4에 저장된 모든 페이지의 데이터를 삭제하고 프리 블럭으로 생성할 수 있다. 따라서, 두 개의 프리 블럭이 생성될 수 있다. The controller may delete the data of all pages stored in the victim block (VB) BN2, BN4 and generate it as a free block. Thus, two free blocks can be generated.

컨트롤러는 희생 블럭(VB) BN2, BN4에 저장된 유효한 페이지를 카피백한 프리 블럭(BF1)을 콜드 블럭(BC2)으로 정의하고, 메모리 블럭(Normal Block)과 구분하여 별도로 관리할 수 있다. The controller may define a free block (BF1) copying a valid page stored in the victim block (VB) BN2, BN4 as a cold block (BC2), and separately manage the memory block (Normal Block).

도 7은 본 발명에 따른 비휘발성 메모리 장치의 데이터 관리 방법에서 희생 블럭들을 병합한 후 프리 블럭을 생성하고, 병합된 데이터를 관리하는 블럭을 콜드 블럭으로 관리하는 방법을 설명하기 위한 도면이고, 도 8은 본 발명에 따른 비휘발성 메모리 장치의 데이터 관리 방법에서 희생 블럭을 프리 블럭 또는 메모리 블럭으로 변경하는 과정을 설명하기 위한 도면이고, 도 9는 본 발명에 따른 비휘발성 메모리 장치의 데이터 관리 방법에서 새로운 프리 블럭을 메모리 블럭으로 사용하여 데이터를 저장하는 방법을 설명하기 위한 도면이다.7 is a diagram for explaining a method for generating a free block after merging sacrificial blocks in a data management method of a nonvolatile memory device according to the present invention, and managing a block for managing the merged data as a cold block. 8 is a diagram for explaining a process of changing a victim block into a free block or a memory block in the data management method of the nonvolatile memory device according to the present invention, and FIG. 9 is a data management method of the nonvolatile memory device according to the present invention A diagram for explaining a method of storing data using a new free block as a memory block.

도 7 내지 도 9를 참조하면, 컨트롤러는 메모리 블럭(Normal Block)이었던 희생 블럭(VB) BN2, BN4에 저장된 모든 페이지의 데이터를 삭제하고 프리 블럭(BF2, BN(n+1))으로 생성할 수 있다.7 to 9, the controller deletes data of all pages stored in the victim blocks (VB) BN2 and BN4, which were memory blocks (Normal Block), and generates free blocks (BF2, BN (n + 1)). You can.

컨트롤러는 생성된 프리 블럭(BF2, BN(n+1)) 중 하나를 메모리 블럭(BN(n+1))으로 구분하여 새로운 데이터를 저장할 수 있다(New Write). 이때, 생성된 다른 프리 블럭(BF1)은 데이터 병합을 위해 새로운 데이터를 저장하지 않고 보관할 수 있다. The controller may divide one of the generated free blocks (BF2, BN (n + 1)) into a memory block (BN (n + 1)) to store new data (New Write). At this time, other generated free blocks BF1 may be stored without storing new data for data merging.

컨트롤러는 희생 블럭 BN2를 프리 블럭 BF2로, 희생 블럭 BN4를 새로운 메모리 블럭 BN(n+1)로 관리할 수 있다. 컨트롤러는 메모리 블럭(Normal Block), 프리 블럭(Free Block), 콜드 블럭(Cold Block)을 각각 구분하여 관리할 수 있고, 각 블럭의 리스트를 별도로 저장할 수 있다.The controller may manage the victim block BN2 as a free block BF2 and the victim block BN4 as a new memory block BN (n + 1). The controller can separately manage memory blocks (free blocks), free blocks and cold blocks, and store a list of each block separately.

도 10은 본 발명에 따른 비휘발성 메모리 장치의 데이터 관리 방법에서 메모리 블럭에 대한 스캔이 완료된 경우 새로운 희생 블럭을 선택하기 위해 콜드 블럭을 스캔하는 방법을 설명하기 위한 도면이고, 도 11은 본 발명에 따른 비휘발성 메모리 장치의 데이터 관리 방법에서 콜드 블럭 중 선택된 희생 블럭의 데이터를 병합하는 방법을 설명하기 위한 도면이다. 10 is a view for explaining a method of scanning a cold block to select a new victim block when the scan for the memory block is completed in the data management method of the nonvolatile memory device according to the present invention, and FIG. A diagram for explaining a method of merging data of a victim block selected from cold blocks in a data management method of a nonvolatile memory device according to the present invention.

도 10을 참조하면, 컨트롤러는 메모리 블럭의 스캔이 완료되어, 다음으로 콜드 블럭을 스캔하여 희생 블럭을 선택할 수 있다. 이때, 희생 블럭으로 선택되는 기준인 제2 임계값은 제1 임계값보다 크게 설정될 수 있다. 여기서, 제2 임계값이 '3'이고, 병합할 희생 블럭의 개수 k가 '2'인 경우를 예로 들어 설명하도록 한다.Referring to FIG. 10, the controller completes scanning of a memory block, and then scans a cold block to select a victim block. At this time, the second threshold value, which is a criterion selected as the sacrificial block, may be set larger than the first threshold value. Here, a case where the second threshold value is '3' and the number k of the sacrificial blocks to be merged is '2' will be described as an example.

컨트롤러는 타임 스템프를 이용하여 콜드 블럭(BC1 내지 BCn)을 저장 순서가 오래된 순서로 스캔한다. 스캔하는 과정에서, 유효한 페이지가 '3'개 이하인 콜드 블럭(BC1, BC4)을 선택하고, 조건에 만족하는 콜드 블럭의 개수가 '2'를 만족하는 경우 스캔을 중단하고 헤더(Header)를 다음 콜드 블럭 상에 표시할 수 있다. The controller scans the cold blocks (BC1 to BCn) in the order in which the storage order is old using the time stamp. In the process of scanning, if the number of cold blocks (BC1, BC4) whose valid pages are '3' or less is selected, and the number of cold blocks satisfying the condition satisfies '2', the scan is stopped and the header is next. Can be displayed on a cold block.

컨트롤러는 선택된 콜드 블럭(BC1, BC4)을 희생 블럭(VB)으로 결정하고, 희생 블럭(VB)에 포함된 유효한 페이지를 마지막 콜드 블럭(BCn)의 데이터를 쓸 위치로 카피백할 수 있다. 또한, 컨트롤러는 마지막 콜드 블럭(BCn)에 데이터를 옮긴 후 페이지가 부족한 경우, 프리 블럭(BF2)에 나머지 페이지를 카피백할 수 있다. The controller may determine the selected cold blocks BC1 and BC4 as the victim block VB, and copy a valid page included in the victim block VB to a location to write data of the last cold block BCn. In addition, if the page is insufficient after moving data to the last cold block BCn, the controller may copy back the remaining pages to the free block BF2.

컨트롤러는 첫 번째 희생 블럭 BC1의 3개의 유효한 페이지 중 2개를 마지막 콜드 블럭(BCn)에 카피백하고, 나머지 1개를 프리 블럭(BF2)에 카피백한다. 또한, 두 번째 희생 블럭 BC2의 3개의 유효한 페이지를 프리 블럭(BF2)에 이어서 카피백할 수 있다. The controller copies back two of the three valid pages of the first victim block BC1 to the last cold block (BCn) and the other one to the free block (BF2). In addition, three valid pages of the second victim block BC2 can be copied back after the free block BF2.

도 11을 참조하면, 컨트롤러는 카피백이 완료되면 희생 블럭 BC1, BC3의 데이터를 삭제하고 프리 블럭(BF3, BF4)으로 생성할 수 있다. 두 개의 프리 블럭 중 하나는 앞서 설명한 바와 같이, 메모리 블럭으로 사용될 수 있다. Referring to FIG. 11, when copyback is completed, the controller may delete the data of the victim blocks BC1 and BC3 and generate them as free blocks (BF3 and BF4). One of the two free blocks can be used as a memory block, as described above.

따라서, 본 발명에 따르면 콜드 페이지를 별도로 관리할 수 있고, 한 번에 복수 개의 프리 블럭을 생성할 수 있으므로 메모리의 데이터 관리 성능을 향상시키고 수명을 연장할 수 있다. Therefore, according to the present invention, it is possible to separately manage the cold page and generate a plurality of free blocks at a time, thereby improving the data management performance of the memory and extending the life.

이상에서, 본 발명의 실시예를 구성하는 모든 구성 요소들이 하나로 결합되거나 결합되어 동작하는 것으로 설명되었다고 해서, 본 발명이 반드시 이러한 실시예에 한정되는 것은 아니다. 즉, 본 발명의 목적 범위 안에서 라면, 그 모든 구성 요소들이 적어도 하나로 선택적으로 결합하여 동작할 수 있다. 또한, 그 모든 구성 요소들이 각각 하나의 독립적인 하드웨어로 구현될 수 있지만, 각 구성 요소들의 그 일부 또는 전부가 선택적으로 조합되어 하나 또는 복수 개의 하드웨어에서 조합된 일부 또는 전부의 기능을 수행하는 프로그램 모듈을 갖는 컴퓨터 프로그램으로서 구현될 수도 있다. 그 컴퓨터 프로그램을 구성하는 코드들 및 코드 세그먼트들은 본 발명의 기술 분야의 당업자에 의해 용이하게 추론될 수 있을 것이다. 이러한 컴퓨터 프로그램은 컴퓨터가 읽을 수 있는 저장매체(Computer Readable Media)에 저장되어 컴퓨터에 의하여 읽혀지고 실행됨으로써, 본 발명의 실시예를 구현할 수 있다. 컴퓨터 프로그램의 저장매체로는 자기 기록매체, 광 기록매체 등이 포함될 수 있다. In the above, even if all the components constituting the embodiments of the present invention are described as being combined or operated as one, the present invention is not necessarily limited to these embodiments. That is, as long as it is within the scope of the present invention, all of its constituent elements can be selectively combined and operated. In addition, although all of the components may be implemented by one independent hardware, a part or all of the components are selectively combined to perform a part or all of functions combined in one or a plurality of hardware. It may be implemented as a computer program having a. The codes and code segments constituting the computer program may be easily deduced by those skilled in the art of the present invention. Such a computer program is stored in a computer readable storage medium (Computer Readable Media) and read and executed by a computer, thereby realizing an embodiment of the present invention. The storage medium of the computer program may include a magnetic recording medium, an optical recording medium, and the like.

이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 사람이라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.The above description is merely illustrative of the technical idea of the present invention, and those skilled in the art to which the present invention pertains may make various modifications and variations without departing from the essential characteristics of the present invention. Therefore, the embodiments disclosed in the present invention are not intended to limit the technical spirit of the present invention, but to explain, and the scope of the technical spirit of the present invention is not limited by these embodiments. The scope of protection of the present invention should be interpreted by the claims below, and all technical spirits within the scope equivalent thereto should be interpreted as being included in the scope of the present invention.

100: 비휘발성 메모리 장치
110: 비휘발성 메모리 120: 컨트롤러
100: non-volatile memory device
110: non-volatile memory 120: controller

Claims (11)

복수의 페이지로 구성된 메모리 블럭을 복수 개 포함하는 비휘발성 메모리; 및
특정 조건을 만족하는 경우, 타임 스템프(timestamp)를 이용하여 상기 메모리 블럭을 저장 순서가 오래된 메모리 블럭부터 순차적으로 스캔하여 제1 임계값 이하의 유효한 페이지 개수를 가지는 n개의 메모리 블럭을 저장 순서가 오래된 메모리 블럭부터 순차적으로 희생 블럭으로 선택하여 프리 블럭을 생성하고, 상기 희생 블럭에 포함된 유효한 복수개의 콜드 페이지를 한번에 병합해서 상기 프리 블럭에 카피백하고, 상기 카피백이 완료된 프리 블럭을 콜드 블럭으로 구분하고, 선택된 희생 블럭에 저장된 데이터를 삭제하여 새로운 프리 블럭을 생성하고, 상기 메모리 블럭에 대한 스캔이 완료되면, 상기 콜드 블럭에 대하여 저장 순서에 따라 순차적으로 스캔하여 제2 임계값 이하의 유효한 페이지 개수를 가지는 k개의 콜드 블럭을 선택하여 희생 블럭으로 결정하고, 상기 k개의 희생 블럭에 포함된 상기 유효한 콜드 페이지를 마지막 콜드 블럭 또는 프리 블럭에 카피백하고, 상기 카피백이 완료된 콜드 블럭 또는 프리 블럭을 콜드 블럭으로 구분하고, 상기 카피백이 완료된 k개의 희생 블럭에 저장된 데이터를 삭제하여 새로운 프리 블럭으로 생성하는 컨트롤러;를 포함하며,
상기 제2 임계값은 상기 제1 임계값보다 크게 설정되는, 비휘발성 메모리 장치.
A nonvolatile memory including a plurality of memory blocks composed of a plurality of pages; And
When a specific condition is satisfied, the memory block is sequentially scanned from a memory block having an old storage order using a timestamp, and n memory blocks having a valid number of pages below a first threshold are stored in an old order. The memory block is sequentially selected as a sacrificial block to generate a free block, and a plurality of valid cold pages included in the sacrificial block are merged at once to copy back to the free block, and the pre-blocked free block is divided into a cold block. Then, the data stored in the selected victim block is deleted to generate a new free block, and when the scan for the memory block is completed, the number of valid pages below the second threshold is sequentially scanned for the cold block in the order of storage. Sacrifice block by selecting k cold blocks with Is determined, the valid cold page included in the k victim blocks is copied back to the last cold block or free block, the cold block or free block where the copy is completed is divided into cold blocks, and k copies are completed. Includes a controller that deletes the data stored in the victim block and generates a new free block.
The second threshold is set larger than the first threshold, the non-volatile memory device.
제1항에 있어서,
상기 컨트롤러는, 설정에 따라 상기 생성된 프리 블럭을 상기 메모리 블럭, 상기 콜드 블럭, 또는 상기 프리 블럭 중 하나로 사용하는, 비휘발성 메모리 장치.
According to claim 1,
The controller uses the generated free block as one of the memory block, the cold block, or the free block according to a setting.
삭제delete 제1항에 있어서,
상기 컨트롤러는,
스캔 위치를 나타내는 헤더를 상기 메모리 블럭에 표시하고, 상기 헤더가 표시된 메모리 블럭부터 다음 스캔을 수행하는, 비휘발성 메모리 장치.
According to claim 1,
The controller,
A non-volatile memory device that displays a header indicating a scan position on the memory block and performs a next scan from the memory block on which the header is displayed.
제4항에 있어서,
상기 컨트롤러는,
상기 프리 블럭을 생성한 후, 다시 특정 조건을 만족하는 경우, 상기 헤더가 표시된 메모리 블럭부터 다시 스캔을 수행하여 상기 제1 임계값 이하의 유효한 페이지 개수를 가지는 새로운 n개의 희생 블럭을 선택하는, 비휘발성 메모리 장치.
According to claim 4,
The controller,
After generating the free block, when a specific condition is satisfied again, a new n victim block having a valid number of pages below the first threshold value is selected by performing a scan again from the memory block in which the header is displayed. Volatile memory device.
제1항에 있어서,
상기 컨트롤러는,
상기 제1 임계값과 상기 생성할 프리 블럭의 개수를 미리 설정하고,
상기 설정된 제1 임계값과 생성할 프리 블럭의 개수에 따라 상기 희생 블럭의 개수를 결정하는, 비휘발성 메모리 장치.
According to claim 1,
The controller,
The first threshold and the number of free blocks to be generated are set in advance,
The number of the victim blocks is determined according to the set first threshold and the number of free blocks to be generated.
삭제delete 삭제delete 프리 블럭의 개수가 설정된 개수 이하인 경우, 타임 스템프(timestamp)를 이용하여 메모리 블럭을 저장 순서가 오래된 메모리 블럭부터 순차적으로 스캔하여 제1 임계값 이하의 유효한 페이지 개수를 가지는 n개의 메모리 블럭을 저장 순서가 오래된 메모리 블럭부터 순차적으로 선택하여 희생 블럭으로 결정하는 단계;
상기 n개의 희생 블럭에 포함된 유효한 복수개의 콜드 페이지를 한번에 병합해서 상기 프리 블럭에 카피백(copyback)하고 상기 카피백이 완료된 프리 블럭을 콜드 블럭으로 구분하는 단계;
상기 n개의 희생 블럭에 저장된 데이터를 삭제하여 새로운 프리 블럭으로 생성하는 단계;
상기 메모리 블럭에 대한 스캔이 완료되면, 상기 콜드 블럭에 대하여 저장 순서에 따라 순차적으로 스캔하여 상기 제1 임계값보다 큰 제2 임계값 이하의 유효한 페이지 개수를 가지는 k개의 콜드 블럭을 희생 블럭으로 선택하는 단계;
상기 k개의 희생 블럭에 포함된 상기 유효한 페이지를 마지막 콜드 블럭의 빈 페이지 또는 프리 블럭에 카피백하고, 상기 카피백이 완료된 콜드 블럭 또는 프리 블럭을 콜드 블럭으로 구분하는 단계; 및
상기 카피백이 완료된 k개의 희생 블럭에 저장된 데이터를 삭제하여 새로운 프리 블럭으로 생성하는 단계;
를 포함하는 비휘발성 메모리의 데이터 관리 방법.
If the number of free blocks is less than or equal to the set number, the memory block is sequentially scanned from the memory block having the oldest storage order using a timestamp to store n memory blocks having a valid page count below the first threshold. Determining sequentially as a victim block by sequentially selecting from the old memory block;
A step of merging a plurality of valid cold pages included in the n victim blocks at a time and copying them back to the free block and dividing the pre-blocked free block into a cold block;
Deleting data stored in the n victim blocks to generate a new free block;
When the scan for the memory block is completed, the cold blocks are sequentially scanned according to a storage order to select k cold blocks having a valid number of pages below a second threshold greater than the first threshold as a victim block. To do;
Copying the valid page included in the k victim blocks into an empty page or free block of the last cold block, and dividing the cold block or free block in which the copy back is completed into a cold block; And
Deleting data stored in the k victim blocks of which the copyback is completed to generate new free blocks;
Method for managing data in a non-volatile memory comprising a.
제9항에 있어서,
상기 n개의 메모리 블럭을 선택하는 단계 이후,
상기 메모리 블럭의 스캔 위치를 나타내는 헤더를 상기 스캔이 완료된 메모리 블럭의 다음 메모리 블럭에 표시하는 단계;
를 더 포함하여 구성되는, 비휘발성 메모리의 데이터 관리 방법.
The method of claim 9,
After the step of selecting the n memory blocks,
Displaying a header indicating a scan position of the memory block in a memory block after the scan is completed;
The data management method of the non-volatile memory, further comprising a.
삭제delete
KR1020180034586A 2018-03-26 2018-03-26 Non-volatile memory apparatus and data storage methid of the same KR102107604B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020180034586A KR102107604B1 (en) 2018-03-26 2018-03-26 Non-volatile memory apparatus and data storage methid of the same
PCT/KR2019/002958 WO2019190084A1 (en) 2018-03-26 2019-03-14 Non-volatile memory device and method for data management of non-volatile memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180034586A KR102107604B1 (en) 2018-03-26 2018-03-26 Non-volatile memory apparatus and data storage methid of the same

Publications (2)

Publication Number Publication Date
KR20190112513A KR20190112513A (en) 2019-10-07
KR102107604B1 true KR102107604B1 (en) 2020-05-07

Family

ID=68059319

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180034586A KR102107604B1 (en) 2018-03-26 2018-03-26 Non-volatile memory apparatus and data storage methid of the same

Country Status (2)

Country Link
KR (1) KR102107604B1 (en)
WO (1) WO2019190084A1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220129423A (en) 2021-03-16 2022-09-23 안희태 Foldable camping tent
KR20220129159A (en) 2021-03-16 2022-09-23 안희태 Rotation extension type mobile house for camping car

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6772352B1 (en) * 2000-09-29 2004-08-03 Intel Corporation Method and apparatus for reducing the rate of commands being issued if the rate exceeds a threshold which is based upon a temperature curve
KR100849221B1 (en) * 2006-10-19 2008-07-31 삼성전자주식회사 Method for managing non-volatile memory, and memory-based apparatus including the non-volatile memory
KR100987251B1 (en) * 2008-10-10 2010-10-12 한양대학교 산학협력단 Flash memory management method and apparatus for merge operation reduction in a fast algorithm base ftl
KR101153688B1 (en) * 2010-10-15 2012-06-18 성균관대학교산학협력단 Nand flash memory system and method for providing invalidation chance to data pages
KR20130076429A (en) * 2011-12-28 2013-07-08 삼성전자주식회사 Method for managing storage space in memory device and storage device using method thereof
KR20160068108A (en) * 2014-12-04 2016-06-15 에스케이하이닉스 주식회사 Memory system including semiconductor memory device and management method thereof

Also Published As

Publication number Publication date
KR20190112513A (en) 2019-10-07
WO2019190084A1 (en) 2019-10-03

Similar Documents

Publication Publication Date Title
KR100706242B1 (en) Memory system and run level address mapping table forming method thereof
KR101257691B1 (en) Memory controller and data management method
US7516295B2 (en) Method of remapping flash memory
KR101392174B1 (en) Apparatus and method for controlling flash memory storing mapping table of block to erase
KR101447188B1 (en) Method and apparatus for controlling I/O to optimize flash memory
US20130151759A1 (en) Storage device and operating method eliminating duplicate data storage
CN110377599B (en) Key value storage device and operation method thereof
CN101241471A (en) Flash memory system and garbage collection method thereof
CN103294604A (en) Flash memory device and electronic device employing thereof
CN108027764B (en) Memory mapping of convertible leaves
CN103019887A (en) Data backup method and device
JP6823734B2 (en) Solid state disk access
US20100318726A1 (en) Memory system and memory system managing method
JP2014170304A (en) Storage system
KR102107604B1 (en) Non-volatile memory apparatus and data storage methid of the same
JP5183662B2 (en) Memory control device and memory control method
KR20140021793A (en) Database method for b+ tree based on pram
JP2010237907A (en) Storage device and recording method
US8996786B2 (en) Nonvolatile memory system and block management method
EP2381354A2 (en) Data recording device
JP5452735B2 (en) Memory controller and memory access method
KR100878142B1 (en) Method of configuring a modified b-tree index for an efficient operation on flash memory
CN114185849A (en) File operation method, file operation system, electronic device and storage medium
KR100982440B1 (en) System for managing data in single flash memory
JP4468342B2 (en) Data management method

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant