KR20140075396A - Nonvolatile memory device and method for managing data thereof - Google Patents
Nonvolatile memory device and method for managing data thereof Download PDFInfo
- Publication number
- KR20140075396A KR20140075396A KR1020120143691A KR20120143691A KR20140075396A KR 20140075396 A KR20140075396 A KR 20140075396A KR 1020120143691 A KR1020120143691 A KR 1020120143691A KR 20120143691 A KR20120143691 A KR 20120143691A KR 20140075396 A KR20140075396 A KR 20140075396A
- Authority
- KR
- South Korea
- Prior art keywords
- page
- read
- block
- logical
- count
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3436—Arrangements for verifying correct programming or erasure
- G11C16/3454—Arrangements for verifying correct programming or for detecting overprogrammed cells
- G11C16/3459—Circuits or methods to verify correct programming of nonvolatile memory cells
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Abstract
Description
본 발명은 반도체 장치에 관한 것으로서, 더욱 상세하게는 불휘발성 메모리 장치 및 그것의 데이터 관리 방법에 관한 것이다.The present invention relates to a semiconductor device, and more particularly, to a nonvolatile memory device and a data management method thereof.
반도체 메모리 장치(Semiconductor Memory Device)는 크게 휘발성 메모리 장치(Volatile Memory Device)와 불휘발성 메모리 장치(Non-volatile Memory Device)로 구분된다. 휘발성 메모리 장치는 읽고 쓰는 속도가 빠르지만 외부 전원 공급이 끊기면 저장된 내용이 사라져 버리는 단점이 있다. 반면에 불휘발성 메모리 장치는 외부 전원 공급이 중단되더라도 그 내용을 보존한다. 그러므로 불휘발성 메모리 장치는 전원이 공급되었는지의 여부에 관계없이 보존되어야 할 내용을 기억시키는 데 쓰인다. 특히, 불휘발성 메모리 중에서 플래시 메모리(Flash memory)는 기존의 EEPROM에 비해 집적도가 높아, 대용량 보조 기억 장치로의 응용에 매우 유리하다. Semiconductor memory devices are divided into volatile memory devices and non-volatile memory devices. Volatile memory devices have a fast read / write speed, but their contents are lost when the external power supply is interrupted. On the other hand, the nonvolatile memory device preserves its contents even if the external power supply is interrupted. Therefore, a nonvolatile memory device is used to store contents that should be preserved regardless of whether power is supplied or not. Particularly, among nonvolatile memories, flash memory has a higher degree of integration than conventional EEPROMs, and thus is very advantageous for application as a large capacity auxiliary memory device.
한편, 플래시 메모리의 메모리 블록은 읽기 동작이 반복적으로 수행됨에 따라 데이터 신뢰성이 떨어진다. 예를 들어, 100K회 읽기를 수행한 메모리 블록은 10K회 읽기를 수행한 메모리 블록보다 저장된 데이터에 오류가 발생할 가능성이 높다. 이처럼, 읽기 동작의 반복에 따른 데이터 신뢰성 저하(또는, 읽기 디스터번스)를 방지하기 위해, 플래시 메모리는 읽기 동작이 일정 횟수 이상 수행된 메모리 블록에 대해서 소거 동작을 수행하여, 메모리 블록의 읽기 상태를 초기화한다. 이와 같은 동작을 읽기 마이그레이션(Read Migration, 이하 RM)이라 한다.On the other hand, the memory block of the flash memory is degraded in data reliability as the read operation is repeatedly performed. For example, a memory block that has been read 100K times is more likely to have errors in stored data than a memory block that has been read 10K times. In order to prevent degradation of data reliability (or read disturbance) due to repetition of the read operation, the flash memory performs an erase operation on the memory block in which the read operation has been performed more than a predetermined number of times, thereby initializing the read state of the memory block do. Such an operation is referred to as read migration (RM).
그러나, RM을 위해 잦은 소거 동작이 수행되는 경우, 소거 동작에는 많은 시간이 걸리므로 플래시 메모리의 동작 속도가 저하될 수 있다. 또한, 잦은 소거 동작은 프로그램/소거 사이클(P/E cycle)을 증가시키므로, 플래시 메모리의 수명을 단축시킬 수 있다. 따라서, RM의 수행을 최소화한 플래시 메모리 장치가 요구된다.However, when the erase operation is frequently performed for the RM, the erase operation takes a long time, so that the operation speed of the flash memory may be reduced. In addition, frequent erase operations increase the program / erase cycle (P / E cycle), thus shortening the life of the flash memory. Therefore, a flash memory device which minimizes the performance of the RM is required.
본 발명의 목적은 RM 동작의 수행을 최소화한 불휘발성 메모리 장치 및 그것의 데이터 관리 방법을 제공하는 데 있다.It is an object of the present invention to provide a nonvolatile memory device and its data management method that minimizes the performance of an RM operation.
본 발명의 다른 목적은 소거 동작의 횟수를 감소시킨 불휘발성 메모리 장치 및 그것의 데이터 관리 방법을 제공하는 데 있다.It is another object of the present invention to provide a nonvolatile memory device in which the number of erase operations is reduced and a method of managing data thereof.
본 발명의 또 다른 목적은 동작 속도를 향상시킨 플래시 메모리 장치 및 그것의 데이터 관리 방법을 제공하는 데 있다.It is still another object of the present invention to provide a flash memory device with improved operation speed and a method of managing data thereof.
본 발명에 따른 복수의 블록을 포함하는 불휘발성 메모리 장치의 데이터 관리 방법은 제 1 블록에 대한 읽기 명령을 수신하는 단계; 상기 제 1 블록의 읽기 횟수를 나타내는 블록 읽기 카운트에 따라, 상기 제 1 블록에 포함된 논리 페이지들 중 적어도 하나의 논리 페이지의 속성을 결정하는 단계; 상기 결정된 속성에 따라, 상기 적어도 하나의 논리 페이지를 선택적으로 제 2 블록에 프로그램하는 단계; 및 상기 프로그램 후에, 상기 적어도 하나의 논리 페이지의 대응하는(corresponding) 물리 주소를 나타내는 매핑 테이블을 업데이트하는 단계를 포함한다.A method of managing data in a non-volatile memory device including a plurality of blocks according to the present invention includes: receiving a read command for a first block; Determining an attribute of at least one logical page of logical pages included in the first block according to a block read count indicating a read count of the first block; Selectively programming the at least one logical page in a second block according to the determined attribute; And after the program, updating a mapping table representing a corresponding physical address of the at least one logical page.
실시 예로서, 상기 제 1 블록에 대한 읽기 명령을 수신하는 단계는 상기 제 1 블록에 대한 읽기 명령에 응답하여, 상기 블록 읽기 카운트를 증가시키는 단계를 포함한다.In an embodiment, receiving a read command for the first block includes increasing the block read count in response to a read command for the first block.
실시 예로서, 상기 적어도 하나의 논리 페이지의 속성을 결정하는 단계는 상기 블록 읽기 카운트를 기준 값과 비교하는 단계; 상기 비교 결과에 따라, 상기 적어도 하나의 논리 페이지의 페이지 읽기 정보를 갱신하는 단계; 및 상기 갱신된 페이지 읽기 정보를 참조하여, 상기 적어도 하나의 논리 페이지의 속성을 결정하는 단계를 포함한다.In an embodiment, determining the attribute of the at least one logical page comprises comparing the block read count to a reference value; Updating page read information of the at least one logical page according to the comparison result; And determining an attribute of the at least one logical page with reference to the updated page read information.
실시 예로서, 상기 페이지 읽기 정보는 상기 적어도 하나의 논리 페이지의 읽기 횟수를 나타내는 페이지 읽기 카운트를 포함한다.In an embodiment, the page read information includes a page read count that indicates the number of reads of the at least one logical page.
실시 예로서, 상기 페이지 읽기 정보를 갱신하는 단계는 상기 블록 읽기 카운트가 상기 기준 값을 초과하면, 상기 제 1 블록에 대한 읽기 명령에 응답하여, 상기 페이지 읽기 카운트를 증가시키는 단계를 포함한다.In an embodiment, updating the page read information includes increasing the page read count in response to a read command for the first block if the block read count exceeds the reference value.
실시 예로서, 상기 제 1 블록에 대한 읽기 명령은 상기 적어도 하나의 논리 페이지에 대한 읽기 명령을 포함한다.In an embodiment, the read command for the first block includes a read command for the at least one logical page.
실시 예로서, 상기 적어도 하나의 논리 페이지의 속성을 결정하는 단계는 상기 페이지 읽기 카운트가 문턱 값(threshold value)보다 크면, 상기 적어도 하나의 논리 페이지의 속성을 핫페이지로 결정하는 단계를 포함한다.In an embodiment, determining an attribute of the at least one logical page includes determining an attribute of the at least one logical page as a hot page if the page read count is greater than a threshold value.
실시 예로서, 상기 페이지 읽기 정보는 상기 적어도 하나의 논리 페이지의 상대적인 읽기 빈도를 나타내는 읽기 페이스(read pace)를 포함하고, 상기 페이지 읽기 정보를 갱신하는 단계는 상기 페이지 읽기 카운트에 따라 상기 읽기 페이스를 산출하는 단계를 포함하되, 상기 읽기 페이스는 수학식 〔읽기 페이스(read pace) 〓 페이지 읽기 카운트 ÷ (제 1 블록의 현재 논리적 읽기 시간) ― 제 1 블록의 초기 논리적 읽기 시간)〕에 의해 정의된다.In an embodiment, the page read information includes a read pace indicating a relative read frequency of the at least one logical page, and the step of updating the page read information comprises: Wherein the read phase is defined by a formula [read pace = page read count ÷ (current logical read time of the first block) - initial logical read time of the first block]) .
실시 예로서, 상기 적어도 하나의 논리 페이지의 속성을 결정하는 단계는 상기 산출된 읽기 페이스가 문턱 값(threshold value)보다 크면, 상기 적어도 하나의 논리 페이지의 속성을 핫페이지로 결정하는 단계를 포함한다.In an embodiment, determining the attribute of the at least one logical page includes determining an attribute of the at least one logical page as a hot page if the calculated read face is greater than a threshold value .
실시 예로서, 상기 적어도 하나의 논리 페이지의 속성을 결정하는 단계는 상기 산출된 읽기 페이스를 참조하여, 상기 적어도 하나의 논리 페이지의 보정된 읽기 페이스를 산출하는 단계; 및 상기 보정된 읽기 페이스가 문턱 값(threshold value)보다 크면, 상기 적어도 하나의 논리 페이지의 속성을 핫페이지로 결정하는 단계를 포함하되, 상기 보정된 읽기 페이스는 〔보정된 읽기 페이스 〓 산출된 읽기 페이스 ― α×평균 읽기 페이스)〕에 의해 정의되고, 상기 평균 읽기 페이스는 상기 제 1 블록에 포함된 논리 페이지들 각각의 읽기 페이스들의 평균을 의미하고, 상기 α는 0 보다 큰 실수이다.As an embodiment, the step of determining an attribute of the at least one logical page may include: calculating a corrected read phase of the at least one logical page with reference to the calculated read phase; And determining a property of the at least one logical page as a hot page if the corrected read face is greater than a threshold value, wherein the corrected read face is a corrected read face The average reading phase is an average of the reading paces of each of the logical pages included in the first block, and? Is a real number greater than zero.
실시 예로서, 상기 제 1 블록의 논리 페이지들은 상기 논리 페이지들 각각의 페이지 읽기 카운트의 크기 순서에 따라 제 1 그룹 또는 제 2 그룹으로 구분되고, 상기 불휘발성 메모리 장치는 상기 제 1 블록의 블록 읽기 카운트 및 상기 제 1 그룹의 페이지 읽기 카운트들을 저장하는 읽기 카운트 테이블을 포함한다.In one embodiment, the logical pages of the first block are divided into a first group or a second group according to the magnitude of the page read count of each of the logical pages, and the nonvolatile memory device reads the block of the first block A count and a read count table storing the first group of page read counts.
실시 예로서, 상기 페이지 읽기 정보를 갱신하는 단계는 제 1 블록에 대한 읽기 명령이 상기 제 2 그룹에 포함된 논리 페이지(이하, 대상 페이지라 함)에 대한 읽기 명령을 포함하는지 판단하는 단계; 상기 판단 결과에 따라, 상기 제 1 블록에 포함된 논리 페이지들의 평균 페이지 읽기 카운트를 상기 대상 페이지의 읽기 카운트로 결정하는 단계; 상기 대상 페이지의 읽기 카운트를 상기 제 1 그룹의 최소 페이지 읽기 카운트와 비교하는 단계; 및 상기 최소 페이지 읽기 카운트와의 비교 결과에 따라, 상기 대상 페이지는 상기 제 1 그룹으로 결정되는 단계를 포함한다. As an embodiment, the step of updating the page read information may include: determining whether a read command for the first block includes a read command for a logical page (hereinafter referred to as a target page) included in the second group; Determining an average page read count of logical pages included in the first block as a read count of the target page according to a result of the determination; Comparing a read count of the target page with a minimum page read count of the first group; And determining the target page as the first group according to a comparison result with the minimum page read count.
실시 예로서, 상기 적어도 하나의 논리 페이지를 제 2 블록에 프로그램하는 단계는 상기 적어도 하나의 논리 페이지의 읽기 정보를 참조하여, 상기 적어도 하나의 논리 페이지의 읽기 우선 순위를 결정하는 단계; 상기 읽기 우선 순위에 따라, 상기 복수의 블록 중 상기 제 2 블록을 상기 프로그램을 위해 할당하는 단계; 및 상기 적어도 하나의 논리 페이지를 상기 할당된 제 2 블록에 프로그램하는 단계를 포함한다.As an embodiment, programming the at least one logical page into a second block includes: determining read priority of the at least one logical page with reference to read information of the at least one logical page; Assigning the second block of the plurality of blocks for the program according to the read priority; And programming the at least one logical page into the allocated second block.
실시 예로서, 상기 적어도 하나의 논리 페이지는 상기 할당된 제 2 블록의 스페어(spare) 페이지에 프로그램된다.In an embodiment, the at least one logical page is programmed in a spare page of the allocated second block.
실시 예로서, 상기 매핑 테이블을 업데이트하는 단계는 상기 적어도 하나의 논리 페이지의 상기 대응하는 물리 주소가 상기 적어도 하나의 논리 페이지가 프로그램된 상기 제 2 블록의 물리 페이지를 가리키도록 상기 매핑 테이블을 업데이트하는 단계를 포함한다.As an embodiment, updating the mapping table may include updating the mapping table so that the corresponding physical address of the at least one logical page points to a physical page of the second block in which the at least one logical page is programmed .
실시 예로서, 상기 매핑 테이블을 업데이트 하는 단계는 상기 적어도 하나의 논리 페이지가 저장된 상기 제 1 블록의 물리 페이지를 무효화(invalidation)하는 단계를 더 포함한다.In an embodiment, updating the mapping table further comprises invalidating the physical page of the first block in which the at least one logical page is stored.
본 발명의 실시 예에 따르면, RM의 수행 횟수가 감소될 수 있다.According to the embodiment of the present invention, the number of times the RM is executed can be reduced.
또한, 소거 동작의 수행 횟수가 감소되므로, 불휘발성 메모리 장치의 수명이 증가하고, 동작 속도가 향상될 수 있다.Further, since the number of times of performing the erase operation is reduced, the life of the nonvolatile memory device can be increased and the operation speed can be improved.
도 1은 본 발명에 따른 불휘발성 메모리 장치를 나타내는 블록도이다.
도 2는 본 발명에 따른 불휘발성 메모리 장치의 데이터 관리 방법의 기본적인 개념을 설명하기 위한 도면이다.
도 3은 본 발명에 따른 데이터 관리 방법의 제 1 실시 예를 나타내는 도면이다.
도 4는 본 발명에 따른 데이터 관리 방법의 제 2 실시 예를 나타내는 도면이다.
도 5는 본 발명에 따른 데이터 관리 방법의 제 3 실시 예를 나타내는 위한 도면이다.
도 6은 본 발명의 실시 예들에 따른 데이터 관리 방법을 나타내는 순서도이다.
도 7 및 도 8은 본 발명에 따른 데이터 관리 방법의 제 4 실시 예를 나타내는 도면이다.
도 9는 본 발명의 제 4 실시 예에 따른 데이터 관리 방법을 구체적으로 나타내는 순서도이다.
도 10은 본 발명의 실시 예들에 따른 솔리드 스테이트 드라이브를 예시적으로 나타내는 블록도이다.
도 11은 본 발명의 실시 예들에 따른 데이터 저장 장치를 예시적으로 나타내는 블록도이다.
도 12는 본 발명의 실시 예들에 따른 메모리 카드를 예시적으로 나타내는 블록도이다.
도 13은 본 발명의 실시 예들에 따른 불휘발성 메모리 장치 및 그것을 포함하는 컴퓨팅 시스템의 개략적인 구성을 나타내는 도면이다.1 is a block diagram showing a nonvolatile memory device according to the present invention.
2 is a diagram for explaining a basic concept of a data management method of a nonvolatile memory device according to the present invention.
3 is a diagram showing a first embodiment of a data management method according to the present invention.
4 is a diagram showing a second embodiment of a data management method according to the present invention.
5 is a diagram illustrating a data management method according to a third embodiment of the present invention.
6 is a flowchart illustrating a data management method according to embodiments of the present invention.
7 and 8 are views showing a fourth embodiment of a data management method according to the present invention.
9 is a flowchart specifically illustrating a data management method according to a fourth embodiment of the present invention.
10 is a block diagram illustrating an exemplary solid state drive according to embodiments of the present invention.
11 is a block diagram illustrating an exemplary data storage device in accordance with embodiments of the present invention.
12 is a block diagram exemplarily showing a memory card according to the embodiments of the present invention.
13 is a diagram showing a schematic configuration of a nonvolatile memory device and a computing system including the nonvolatile memory device according to embodiments of the present invention.
앞의 일반적인 설명 및 다음의 상세한 설명들은 모두 청구된 발명의 부가적인 설명을 제공하기 위한 예시적인 것이다. 그러므로 본 발명은 여기서 설명되는 실시 예에 한정되지 않고 다른 형태로 구체화될 수도 있다. 여기서 소개되는 실시 예는 개시된 내용이 철저하고 완전해 질 수 있도록 그리고 당업자에게 본 발명의 사상이 충분히 전달될 수 있도록 하기 위해 제공되는 것이다. The foregoing general description and the following detailed description are exemplary and are intended to provide further explanation of the claimed invention. Therefore, the present invention is not limited to the embodiments described herein but may be embodied in other forms. The embodiments disclosed herein are provided so that the disclosure can be thorough and complete, and will fully convey the scope of the invention to those skilled in the art.
본 명세서에서, 어떤 부분이 어떤 구성요소를 포함한다고 언급되는 경우에, 이는 그 외의 다른 구성요소를 더 포함할 수도 있다는 것을 의미한다. 이하, 본 발명의 실시 예를 첨부된 도면을 참조하여 상세하게 설명한다.In this specification, when it is mentioned that a certain element includes an element, it means that it may further include other elements. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings.
도 1은 본 발명에 따른 불휘발성 메모리 장치를 나타내는 블록도이다. 도 1을 참조하면, 불휘발성 메모리 장치(100)는 메모리 셀 어레이(110), 어드레스 디코더(120), 데이터 입출력 회로(130), 그리고 제어 로직(140), 그리고 전압 발생기(150)를 포함한다. 1 is a block diagram showing a nonvolatile memory device according to the present invention. 1, a
메모리 셀 어레이(110)는 워드 라인들(WLs)을 통해 어드레스 디코더(120)에 연결된다. 메모리 셀 어레이(110)는 비트 라인들(BLs)을 통해서 데이터 입출력 회로(130)에 연결된다. 메모리 셀 어레이(110)는 복수의 메모리 블록들(BLK1~BLKz)을 포함한다. 각각의 메모리 블록들은 복수의 낸드형 셀 스트링들(NAND Cell Strings)을 포함한다. The
셀 스트링들 각각의 채널은 수직 방향으로 형성될 수 있다. 메모리 셀 어레이(110)에는 복수의 워드 라인들이 수직 방향으로 적층되고, 셀 스트링들 각각의 채널이 수직 방향으로 형성될 수 있다. 이런 셀 스트링의 구조로 메모리 셀 어레이(110)가 형성되는 메모리 장치를 수직 구조 불휘발성 메모리 장치 또는 3차원 구조 불휘발성 메모리 장치라 칭하기도 한다. 셀 스트링들 각각은 기판과 수직한 방향으로 적층되는 적어도 하나의 접지 선택 트랜지스터, 복수의 메모리 셀 및 적어도 하나의 스트링 선택 트랜지스터를 포함한다. 메모리 셀 어레이(110)의 메모리 셀들 각각은 싱글 레벨 셀(SLC) 또는 멀티 레벨 셀(MLC)로 사용될 수 있다. Each channel of cell strings may be formed in a vertical direction. In the
전압 발생기(150)는 제어 로직(140)의 제어에 응답하여, 어드레스 디코더(120)에 제공될 전압들을 생성한다. 예를 들어, 프로그램 동작 시, 전압 발생기(150)는 제어 로직(140)의 제어에 응답하여 프로그램 전압(Vpgm), 패스전압(Vpass), 프로그램 검증 전압(Vfy) 등의 워드 라인 전압을 생성하고, 생성된 워드 라인 전압을 어드레스 디코더(120)에 제공한다. 다른 예로, 읽기 동작 시, 전압 발생기(150)는 제어 로직(140)의 제어에 응답하여 선택 읽기 전압(Vr), 비선택 읽기 전압(Vread) 등의 워드 라인 전압을 생성하고, 생성된 워드 라인 전압을 어드레스 디코더(120)에 제공한다. 각각의 예에 있어서, 어드레스 디코더(120)는 제공받은 워드 라인 전압들을 제어 로직(140)의 제어에 따라 워드 라인들(WLs)에 선택적으로 인가할 것이다. The
어드레스 디코더(120)는 외부로부터 수신된 어드레스(ADDR) 및 제어 로직(140)의 제어에 응답하여, 메모리 셀 어레이(110)의 복수의 페이지들 중 적어도 어느 하나의 페이지를 선택한다. 어드레스 디코더(120)는 전압 발생기(150)로부터 워드 라인 전압을 수신하며, 선택된 페이지에 수신된 워드 라인 전압을 전달한다.The
예를 들어, 어드레스 디코더(120)는 어드레스(ADDR)에 응답하여, 메모리 셀 어레이(110)의 복수의 메모리 블록들 중 어느 하나를 선택할 수 있다. 어드레스 디코더(120)는 어드레스(ADDR)에 응답하여, 복수의 워드 라인들 중 어느 하나를 선택할 수 있다. For example, the
프로그램 동작 시, 어드레스 디코더(120)는 하나의 페이지를 선택하고, 선택된 페이지가 속하는 선택 워드 라인(Selected WL)에 프로그램 전압(Vpgm) 및 프로그램 검증 전압(Vfy)을 전달할 수 있다. 어드레스 디코더(120)는 비선택된 워드 라인(Unselected WL)에 패스 전압(Vpass)을 전달할 수 있다.In a program operation, the
읽기 동작 시, 어드레스 디코더(120)는 하나의 페이지를 선택하고, 선택된 페이지가 속하는 선택 워드 라인에 선택 읽기 전압(Vr)을 전달할 수 있다. 어드레스 디코더(120)는 비선택 워드 라인에 비선택 읽기 전압(Vread)을 전달할 수 있다. In a read operation, the
데이터 입출력 회로(130)는 외부로부터 데이터(DATA)를 전달받고, 전달받은 데이터를 메모리 셀 어레이(110)에 저장한다. 또한, 데이터 입출력 회로(130)는 메모리 셀 어레이(110)에 저장된 데이터(DATA)를 읽고, 읽은 데이터를 외부에 전달한다. 예시적으로, 데이터 입출력 회로(130)는 열 선택 게이트, 페이지 버퍼, 데이터 버퍼 등과 같은 잘 알려진 구성 요소들을 포함할 수 있다. 다른 예로써, 데이터 입출력 회로(140)는 열 선택 게이트, 쓰기 드라이버, 감지 증폭기, 데이터 버퍼 등과 같은 잘 알려진 구성 요소들을 포함할 수 있다.The data input /
제어 로직(140)은 외부로부터 명령(CMD) 및 제어 신호(CTRL)를 수신하며, 불휘발성 메모리 장치(100)의 전반적인 동작을 제어한다. 예를 들어, 제어 로직(140)은 외부로부터 프로그램 명령을 수신하고, 불휘발성 메모리 장치(100)의 전반적인 프로그램 동작을 제어한다. 다른 예로, 외부로부터 읽기 명령을 수신하고, 불휘발성 메모리 장치(100)의 전반적인 읽기 동작을 제어한다.The
본 발명의 기술적 사상에 따른 실시 예에 있어서, 불휘발성 메모리 장치(100)는 메모리 블록들의 읽기 횟수에 따라, 읽기가 많이 수행된 메모리 블록의 핫 페이지들을 읽어내어 다른 블록(이하, 타겟 블록이라 한다)에 프로그램한다. 그리고, 이후 핫 페이지들에 대한 읽기 명령이 수신되면, 타겟 블록으로부터 핫 페이지들을 독출한다. 이때, 핫 페이지는 불휘발성 메모리 장치로부터 상대적으로 자주 독출되는 논리 페이지를 의미한다. In an embodiment according to the present invention, the
상기와 같은 구성에 따르면, 자주 독출되는 논리 페이지(또는, 핫 페이지)를 반복적으로 읽어내는 경우, 그러한 논리 페이지에 대한 읽기 동작은 적어도 두 개의 블록에서 분산되어 수행될 수 있다. 따라서, 특정한 핫 페이지를 독출하기 위해, 하나의 블록에 대해 과도한 읽기 동작이 수행되는 것이 방지될 수 있다. 따라서, 핫 페이지를 저장하는 블록에 대해 읽기 마이그레이션이 수행되는 횟수가 감소될 수 있다.According to such a configuration, when the logical page (or hot page) frequently read out is read out repeatedly, the reading operation for such logical page can be performed dispersedly in at least two blocks. Thus, in order to read a specific hot page, an excessive read operation can be prevented from being performed for one block. Thus, the number of times the read migration is performed on the block storing the hot page can be reduced.
한편, 메모리 블록은 소거가 되면, 읽기 디스터번스(Read Disturbance)의 관점에서, 읽기 횟수가 초기화된다. 예를 들어, 하나의 블록에 대해 읽기가 100K회 이상 수행되면, 읽기 횟수의 증가로 인해 읽기 디스터번스가 발생할 가능성이 높다. 그러나, 읽기가 100K회 이상 수행된 블록에 대해 소거 동작이 수행되면, 해당 블록의 읽기 횟수는 초기화되고, 읽기 디스터번스가 발생할 가능성도 낮아진다. On the other hand, when the memory block is erased, the number of reads is initialized in terms of read disturbance. For example, if a block is read more than 100K times, a read disturbance is likely to occur due to an increase in the number of reads. However, when an erase operation is performed on a block in which reading is performed 100K times or more, the number of readings of the block is initialized, and the probability of occurrence of the read disturbance is also lowered.
본 발명에서는 이와 같은 점에 착안하여, 불휘발성 메모리 장치의 다른 내부 동작에 의해 곧 소거가 될 블록을 핫페이지들이 새롭게 프로그램되는 타겟 블록으로 할당할 수 있다. 예를 들어, 웨어 레벨링(Wear Leveling), 머지(merge), 가비지 컬렉션(Garbage Collection)등에 의해 곧 소거가 될 블록에 핫 페이지들을 프로그램할 수 있다. 이를 통해, 핫 페이지들이 저장된 타겟 블록이 별도의 소거 동작 없이, 내부 동작(웨어 레벨링, 머지 또는 가비지 컬렉션)에 의해 자연스럽게 소거되도록 유도할 수 있다. 따라서, 핫 페이지들에 의해 타겟 블록의 읽기 횟수가 과도하게 누적되기 전에, 타겟 블록은 소거될 것이다. 따라서, 타겟 블록에 대해 별도의 읽기 마이그레이션을 수행하지 않아도, 타겟 블록의 데이터 신뢰성은 확보될 수 있다.In the present invention, it is possible to assign a block to be erased soon by another internal operation of the nonvolatile memory device to a target block to which hot pages are newly programmed. For example, hot pages can be programmed into a block that will soon be erased by wear leveling, merge, garbage collection, and the like. In this way, it is possible to induce the target block in which hot pages are stored to be naturally erased by internal operations (wear leveling, merge or garbage collection) without a separate erasing operation. Thus, before the number of reads of the target block by the hot pages is accumulated excessively, the target block will be erased. Therefore, the data reliability of the target block can be ensured even if a separate read migration is not performed on the target block.
상기와 같은 구성에 따르면, 불휘발성 메모리 장치(100)에 있어서, 소거 동작이 수행되는 횟수가 전체적으로(totally) 감소될 수 있다. 따라서, 불휘발성 메모리 장치(100)의 수명이 증가될 수 있다. 또한, 소거 횟수가 감소되므로, 불휘발성 메모리 장치(100)의 동작 속도가 향상될 수 있다.According to the above configuration, in the
이하에서는, 본 발명에 따른 불휘발성 메모리 장치(100) 및 그것의 데이터 관리 방법에 대한 구체적인 설명이 다양한 실시 예와 함께 제공된다.Hereinafter, a detailed description of the
도 2는 본 발명에 따른 불휘발성 메모리 장치의 데이터 관리 방법의 기본적인 개념을 설명하기 위한 도면이다. 도 2를 참조하면, 불휘발성 메모리 장치(100, 도 1 참조)는 핫 페이지들이 저장된 제 1 블록(111) 및 핫 페이지들이 새롭게 프로그램될 제 2 블록(112, 또는 타겟 블록)을 포함한다.2 is a diagram for explaining a basic concept of a data management method of a nonvolatile memory device according to the present invention. Referring to FIG. 2, a non-volatile memory device 100 (see FIG. 1) includes a
본 발명에 의한 데이터 관리 방법에 따르면, 제 1 블록(111)은 핫 페이지(page1, page3)를 비롯한 복수의 논리 페이지들(page0, page1, page2, page3, page4)을 포함한다. 앞서 설명한 바와 같이, 핫 페이지는 다른 페이지들에 비해 상대적으로 읽기 빈도가 높은 페이지를 의미한다. 어떠한 논리 페이지를 핫 페이지로 결정하는 기준은 다양할 수 있다. According to the data management method of the present invention, the
예를 들어, 논리 페이지를 읽어낸 횟수를 나타내는 읽기 카운트가 핫 페이지를 결정하는 기준이 될 수 있다. 즉, 읽기 카운트가 기준 값을 초과하는 페이지를 핫 페이지로 결정할 수 있다. For example, a read count that indicates the number of times a logical page has been read may serve as a basis for determining a hot page. That is, a page whose read count exceeds a reference value can be determined as a hot page.
다른 예로서, 논리 페이지가 읽히는 상대적인 빈도를 나타내는 읽기 페이스(read pace)가 핫 페이지를 결정하는 기준이 될 수 있다. 읽기 페이스는 제 1 블록(111)을 읽어낸 논리적 읽기 시간(Logical Read Time, LRT) 구간 내에서, 상대적으로 빈번하게 읽힌 정도를 나타내는 값을 의미한다. As another example, a read pace indicating the relative frequency with which a logical page is read may be a reference for determining a hot page. The read phase refers to a value indicating a degree of relatively frequent reading within a logical read time (LRT) interval in which the
여기서, 논리적 읽기 시간(LRT) 구간이란, 제 1 블록(111)에 대해 읽기 동작이 수행된 논리적 시간 구간을 의미한다. 즉, 제 1 블록의 논리적 읽기 시간은 특정 시점에서의 제 1 블록(111)의 논리적 동작 횟수 또는 읽기 카운트에 대응될 수 있다. 또는, 제 1 블록의 논리적 읽기 시간은 특정 시점에서의 불휘발성 메모리 장치(100)의 논리적 동작 횟수 또는 전체적인 읽기 카운트에 대응될 수 있다. 가령, 초기 시각에 제 1 블록의 읽기 카운트가 0이면, 제 1 블록의 초기 논리적 읽기 시간은 0에 대응될 수 있다. 또한, 현재 시각에 제 1 블록의 읽기 카운트가 100이면, 제 1 블록의 현재 논리적 읽기 시간은 100에 대응될 수 있다. 이때, 논리적 읽기 시간 구간은 현재 논리적 읽기 시간(100)―초기 논리적 읽기 시간(0) 〓 100 이 될 것이다. 어떠한 논리 페이지의 읽기 페이스는 다음과 같이 정의될 수 있다.Here, the logical read time (LRT) period means a logical time period in which a read operation is performed on the
읽기 페이스 〓 페이지 읽기 카운트÷(제 1 블록의 현재 논리적 읽기 시간 ― 제 1 블록의 초기 논리적 읽기 시간)Read phase = page read count ÷ (current logical read time of the first block - initial logical read time of the first block)
위 식에 따르면, 읽기 페이스는 소정의 논리적 읽기 시간 구간 동안 특정 페이지가 얼마나 빈번하게 읽혔는지를 나타낼 수 있다. 즉, 읽기 페이스는 읽기 횟수의 상대적인 빈도를 나타낸다.According to the above equation, the reading phase can indicate how frequently a specific page is read during a predetermined logical read time interval. That is, the reading phase represents the relative frequency of the number of reads.
본 발명에 따른 데이터 관리 방법은 산출된 읽기 페이스가 문턱 값(threshold value)를 초과하면, 해당 논리 페이지를 핫 페이지로 결정할 수 있다.The data management method according to the present invention can determine a logical page as a hot page if the calculated read face exceeds a threshold value.
또는, 상대적인 읽기 빈도를 더욱 상세히 반영하기 위해, 산출된 읽기 페이스를 가공하여 보정된 읽기 페이스를 계산할 수 있다. 이때, 보정된 읽기 페이스는 다음과 같이 정의된다.Alternatively, the corrected read phase can be computed by processing the calculated read phase to further refine the relative read frequency. At this time, the corrected reading phase is defined as follows.
보정된 읽기 페이스 〓 산출된 읽기 페이스 ― α×평균 읽기 페이스Calibrated Reading Face = Calculated Reading Face - α × Average Reading Face
이에 따르면, 보정된 읽기 페이스는 산출된 읽기 페이스에서 제 1 블록(111)의 논리 페이지들의 평균 읽기 페이스를 감산하여 결정된다. 따라서, 다른 논리 페이지들과의 상대적인 읽기 빈도 차가 더욱 상세히 반영될 수 있다. 여기서, 가중치 α는 0보다 큰 실수로서 상대적인 읽기 빈도 차를 어느정도 반영할 지 여부에 따라 자유롭게 결정될 수 있다.According to this, the corrected reading phase is determined by subtracting the average reading phase of the logical pages of the
앞서와 마찬가지로, 본 발명에 따른 데이터 관리 방법은 보정된 읽기 페이스가 문턱 값(threshold value)를 초과하면, 해당 논리 페이지를 핫 페이지로 결정할 수 있다.As described above, the data management method according to the present invention can determine the logical page as a hot page if the corrected read face exceeds a threshold value.
다만, 본 발명에 따른 핫 페이지를 결정하는 방법은 위에서 설명한 것에 한정되지 않는다. 본 발명에서, 핫 페이지는 다른 페이지보다 상대적으로 읽기 횟수 또는 읽기 빈도가 높거나, 제 1 블록(111)의 읽기 횟수 증가에 대한 기여도가 높은 페이지를 의미한다. 따라서, 여기서 설명한 방법 이외에도, 핫 페이지를 결정하는 기준은 다양할 수 있다. However, the method for determining a hot page according to the present invention is not limited to the above-described method. In the present invention, a hot page refers to a page having a higher reading frequency or a higher reading frequency than the other pages, or a higher contribution to an increase in the reading count of the
다시 도 2를 참조하면, 제 1 블록(111)에 포함된 페이지들에 대해 읽기를 수행할 때마다, 제 1 블록(111)의 읽기 카운트는 증가된다. 그리고, 제 1 블록(111)의 읽기 카운트가 미리 정해진 기준 값을 초과하면, 제 1 블록(111)의 핫 페이지들(page1, page3)를 읽어내어 제 2 블록(112)에 프로그램한다. 그리고, 이후 핫 페이지들(page1, page3)에 대한 읽기 명령이 수신되면, 제 1 블록(111) 대신 제 2 블록(112)으로부터 핫 페이지들(page1, page3)을 읽어낸다. 위와 같은 구성에 따르면, 핫 페이지들(page1, page3)이 제 2 블록(112)에 프로그램된 이후, 핫 페이지들(page1, page3)을 읽어내는 부담은 제 2 블록(112)에 부과된다. 따라서, 핫 페이지들(page1, page3)에 의해 제 1 블록(111)의 읽기 카운트가 증가하는 것이 방지된다. 그 결과, 읽기 카운트가 높은 제 1 블록(111)에 대해 빈번하게 읽기 마이그레이션이 수행되는 것을 방지할 수 있다.Referring again to FIG. 2, the read count of the
한편, 앞서 설명한 바와 마찬가지로, 내부 동작(웨어 레벨링, 머지 또는 가비지 컬렉션 등)에 의해 소거가 수행될 블록을 제 2 블록(112)으로 할당할 수 있다. 이 경우, 제 2 블록(112)에 대한 별도의 읽기 마이그레이션 없이, 제 2 블록(112)의 읽기 횟수가 과도하게 누적되기 전에 제 2 블록(112)은 소거될 수 있다. 따라서, 불휘발성 메모리 장치(100)에 있어서, 소거 동작이 수행되는 횟수가 전체적으로(totally) 감소될 수 있다.On the other hand, as described above, a block to be erased can be allocated to the
도 3은 본 발명에 따른 데이터 관리 방법의 제 1 실시 예를 나타내는 도면이다. 도 3을 참조하면, 불휘발성 메모리 장치(100, 도 1 참조)는 핫 페이지들이 저장된 제 1 블록(111), 핫 페이지들이 새롭게 프로그램될 제 2 블록(112, 또는 타겟 블록) 및 핫 페이지들의 대응하는 물리 주소가 저장된 매핑 테이블(118a)을 포함한다. 3 is a diagram showing a first embodiment of a data management method according to the present invention. Referring to FIG. 3, the non-volatile memory device 100 (see FIG. 1) includes a
본 실시 예에서, 제 1 블록(111)의 읽기 카운트가 기준 값을 초과하면, 제 1 블록(111)의 읽기 카운트 증가를 억제하기 위해, 제 1 블록(111)에 포함된 핫 페이지들(page1, page3)을 제 2 블록(112)에 복사(copy)한다. 여기서, 복사란 제 1 블록(111)으로부터 핫 페이지들(page1, page3)을 읽어내고, 읽어낸 핫 페이지들(page1, page3)을 제 2 블록(112)에 프로그램하는 것을 의미한다.In this embodiment, when the read count of the
그리고, 핫 페이지들(page1, page3)의 대응하는 물리 주소를 나타내는 매핑 테이블(118a)을 업데이트(또는, 갱신)한다. 구체적으로, 핫 페이지들(page1, page3)의 물리 주소가 핫 페이지들(page1, page3)이 복사된 제 2 블록(112)의 물리 페이지들을 가리키도록 매핑 테이블(118a)을 업데이트한다. 위와 같은 구성에 따르면, 핫 페이지들(page1, page3)의 읽기 명령이 수신될 때, 핫 페이지들(page1, page3)의 대응하는 물리 주소는 제 2 블록(112)을 가리키고, 제 2 블록(112)으로부터 핫 페이지들(page1, page3)이 독출된다. 따라서, 핫 페이지들(page1, page3)에 의해 제 1 블록(111)의 읽기 카운트가 증가되는 것이 방지된다.Then, the mapping table 118a indicating the corresponding physical address of the hot pages (page1, page3) is updated (or updated). Specifically, the mapping table 118a is updated so that the physical addresses of the hot pages (page1, page3) point to the physical pages of the
실시 예로서, 매핑 테이블(118a)의 업데이트는 제 1 블록(111)의 물리 페이지들을 무효화(invalidation)하는 것을 포함할 수 있다. 즉, 핫 페이지들(page1, page3)이 제 2 블록(112)으로 복사된 후, 핫 페이지들(page1, page3)이 저장된 제 1 블록(111)의 물리 페이지들을 더 이상 읽어내지 않기 위해, 그러한 물리 페이지들을 무효화한다. 여기서 무효화는 대응되는 물리 페이지에 저장된 데이터가 유효하지 않는 것으로 처리되는 내부 동작을 의미한다. 제 1 블록(111)의 물리 페이지들을 무효화함으로써, 매핑 테이블(118a)은 더 이상 무효화된 페이지들을 가리키지 않게 된다. 즉, 핫 페이지들(page1, page3)은 제 1 블록(111)으로부터 제 2 블록(112)으로 이전(migration)된다.As an example, updating the mapping table 118a may include invalidating the physical pages of the
여기서는, 핫 페이지들(page1, page3)이 하나의 블록(112)으로 복사되는 경우를 설명하였지만, 본 발명은 이에 한정되지 않는다. 예를 들어, 핫 페이지들(page1, page3)은 2 이상의 서로 다른 블록들에 나누어 복사될 수 있다.Here, the case where the hot pages (page1, page3) are copied into one
한편, 데이터 관리 방법에 대해 여기서 설명되지 않은 다른 구체적인 내용은 도 2에서 설명한 바와 동일하다.On the other hand, another detailed description of the data management method not described here is the same as that described in Fig.
도 4는 본 발명에 따른 데이터 관리 방법의 제 2 실시 예를 나타내는 도면이다. 도 4를 참조하면, 불휘발성 메모리 장치(100, 도 1 참조)는 핫 페이지들이 저장된 제 1 블록(111), 핫 페이지들이 새롭게 프로그램될 제 2 블록(112, 또는 타겟 블록) 및 핫 페이지들의 대응하는 물리 주소가 저장된 매핑 테이블(118a) 및 핫 페이지들의 레플리카 페이지가 저장된 물리 주소를 나타내는 레플리카 테이블(118b)을 포함한다.4 is a diagram showing a second embodiment of a data management method according to the present invention. Referring to FIG. 4, a non-volatile memory device 100 (see FIG. 1) includes a
본 실시 예에서, 제 1 블록(111)의 읽기 카운트에 대응하여, 핫 페이지들(page1, page3)을 제 2 블록(112)으로 복사하는 일련의 과정 및 그에 대한 설명은 도 3에서 설명한 바와 동일하다. In the present embodiment, a series of processes for copying the hot pages (page1, page3) to the
다만, 본 실시 예에서, 제 2 블록(112)에 프로그램되는 핫 페이지들은 제 1 블록(111)에 저장된 핫 페이지들(page1, page3)의 레플리카(또는, 복제본)으로서 프로그램된다. However, in the present embodiment, the hot pages programmed in the
본 실시 예와 도 3의 제 1 실시 예의 차이는 원본 데이터의 유효성 여부에 있다. 즉, 제 1 실시 예에서, 핫 페이지들(page1, page3)은 제 1 블록(111)에서 제 2 블록(112)으로 이전되고, 제 1 블록(111)에 저장된 핫 페이지들(page1, page3)은 무효화된다. 반면, 본 실시 예에서, 제 2 블록(112)에는 핫 페이지들(page1, page3)의 레플리카 페이지가 프로그램되고, 제 1 블록(111)에 저장된 핫 페이지들(page1, page3)은 유효한 상태로 남겨진다. 즉, 제 1 블록(111) 및 제 2 블록(112)에 동일한 논리 데이터들이 중복되어 저장되게 된다.The difference between this embodiment and the first embodiment in Fig. 3 lies in the validity of the original data. That is, in the first embodiment, the hot pages (page1, page3) are transferred from the
본 실시 예에서는, 핫 페이지(page1, page3)의 물리 주소를 참조하기 위한 매핑 테이블(118a)외에 레플리카 페이지가 저장된 위치를 참조하기 위한 별도의 레플리카 테이블(118b)을 구비한다. 그리고, 레플리카 페이지들이 제 2 블록(112)에 프로그램된 후, 매핑 테이블(118a) 또는 레플리카 테이블(118b)이 업데이트(또는, 갱신)된다.In this embodiment, in addition to the mapping table 118a for referring to the physical addresses of the hot pages (page1, page3), a separate replica table 118b for referring to the position where the replica page is stored is provided. Then, after the replica pages are programmed in the
구체적으로, 매핑 테이블(118a)에는 레플리카 정보가 삽입된다. 여기서, 레플리카 정보는 참조되는 핫 페이지의 레플리카 페이지가 존재하는지 여부를 나타내는 정보이다. 그리고, 레플리카 테이블(118b)에는 레플리카 페이지가 프로그램된 제 2 블록(112)의 물리 주소가 저장된다. 먼저, 핫 페이지에 대한 읽기 명령이 수신되면, 핫 페이지의 레플리카 정보를 참조한다. 그리고, 핫 페이지의 레플리카 페이지가 존재하지 않으면, 불휘발성 메모리 장치(100, 도 1 참조)는 매핑 테이블(118a)에 저장된 핫 페이지의 물리 주소를 참조하여 제 1 블록(111)으로부터 핫 페이지를 독출한다.Specifically, the replica information is inserted in the mapping table 118a. Here, the replica information is information indicating whether there is a replica page of a hot page to be referred to. In the replica table 118b, the physical address of the
반면에, 핫 페이지의 레플리카 페이지가 존재하면, 불휘발성 메모리 장치(100)는 핫 페이지의 물리 페이지를 찾기 위해 레플리카 테이블(118b)을 참조한다. 그리고, 레플리카 테이블(118b)로부터 핫 페이지의 레플리카 페이지가 프로그램된 물리 주소를 찾는다. 그리고, 찾아낸 물리 주소를 참조하여, 제 2 블록(112)으로부터 레플리카 페이지를 읽어낸다.On the other hand, if there is a replica page of the hot page, the
상기와 같은 구성에 따르면, 제 1 블록(111)에 저장된 핫 페이지 대신 제 2 블록(112)에 저장된 레플리카 페이지를 독출하므로, 제 1 블록(111)의 읽기 카운트 증가를 억제할 수 있다.According to the above configuration, since the replica page stored in the
한편, 데이터 관리 방법에 대해 여기서 설명되지 않은 다른 구체적인 내용은 도 2 및 도 3에서 설명된 바와 동일하다.On the other hand, other specific details not described herein for the data management method are the same as those described in Figs.
도 5는 본 발명에 따른 데이터 관리 방법의 제 3 실시 예를 나타내는 위한 도면이다. 도 5는 복수의 블록들에 포함된 핫 페이지들을 복수의 블록들에 프로그램하는 방법을 설명한다. 도 5를 참조하면, 각각 적어도 하나의 핫 페이지를 포함하는 복수의 블록들(111, 112, 113), 핫 페이지들(hot1, hot2, hot3, hot4)이 프로그램되는 복수의 타겟 블록들(114, 115, 116, 117) 및 핫 페이지들(hot1, hot2, hot3, hot4)을 복수의 타겟 블록들(114, 115, 116, 117)에 할당하기 위한 읽기 정보 테이블(118c)이 나타난다.5 is a diagram illustrating a data management method according to a third embodiment of the present invention. 5 illustrates a method of programming hot pages included in a plurality of blocks into a plurality of blocks. 5, a plurality of
본 실시 예에서는, 복수의 블록들로부터 핫 페이지들에 대한 정보를 수집하고, 수집된 정보에 기초하여 핫 페이지들을 복수의 타겟 블록들에 나누어 프로그램하는 방법이 설명된다.In this embodiment, a method of collecting information about hot pages from a plurality of blocks and dividing hot pages into a plurality of target blocks based on collected information is described.
먼저, 불휘발성 메모리 장치(100, 도 1 참조)는 복수의 블록들(111, 112, 113)에 포함된 페이지들 중에서 핫 페이지들을 결정한다. 실시 예로서, 복수의 블록들(111, 112, 113) 각각은 블록의 읽기 카운트가 기준 값을 초과한 블록들일 수 있다.First, the non-volatile memory device 100 (see FIG. 1) determines hot pages among the pages included in the plurality of
그리고, 결정된 핫 페이지들(hot1, hot2, hot3, hot4)의 페이지 읽기 정보들이 읽기 정보 테이블에 저장된다. 실시 예로서, 페이지 읽기 정보는 핫 페이지의 읽기 카운트, 읽기 페이스 또는 보정된 읽기 페이스를 포함할 수 있다. 읽기 카운트, 읽기 페이스 또는 보정된 읽기 페이스에 대한 구체적인 내용은 위에서 설명한 바와 동일하다.The page read information of the determined hot pages (hot1, hot2, hot3, hot4) is stored in the read information table. As an example, the page read information may include a read count of a hot page, a read face, or a corrected read face. The details of the read count, read phase, or corrected read phase are the same as described above.
그리고, 불휘발성 메모리 장치(100)는 읽기 정보 테이블을 참조하여, 핫 페이지들(hot1, hot2, hot3, hot4)을 우선 순위에 따라 복수의 타겟 블록들(114, 115, 116, 117)에 할당한다. 실시 예로서, 우선 순위는 핫 페이지들(hot1, hot2, hot3, hot4)이 얼마나 자주 또는 많이 읽히는 페이지인지 여부에 따라 결정될 수 있다. 예를 들어, 우선 순위는 핫 페이지들(hot1, hot2, hot3, hot4)의 읽기 카운트 크기, 읽기 페이스 크기 또는 보정된 읽기 페이스 크기가 클수록 높을 수 있다. 우선 순위가 높은 핫 페이지일수록 더 빨리 타겟 블록에 프로그램될 수 있다.The
그리고, 불휘발성 메모리 장치(100)는 할당된 타겟 블록들(114, 115, 116, 117)에 핫 페이지들(hot1, hot2, hot3, hot4)를 나누어 프로그램한다.Then, the
실시 예로서, 핫 페이지들(hot1, hot2, hot3, hot4)은 할당된 타겟 블록들(114, 115, 116, 117)의 비어있는 스페어 페이지에 프로그램될 수 있다. As an embodiment, hot pages (hot1, hot2, hot3, hot4) may be programmed into empty spare pages of assigned target blocks 114, 115, 116,
실시 예로서, 각 타겟 블록들(114, 115, 116, 117) 간에는 불휘발성 메모리 장치(100)의 내부 동작에 의해 곧 소거가 되는 순서를 나타내는 소거 순위의 차이가 있을 수 있다. 예를 들어, 내부 동작이 가비지 컬렉션(Garbage Collection)인 경우, 무효(invalid) 페이지를 많이 포함하는 타겟 블록일수록 더 이른 시기에 가비지 컬렉션의 대상이 될 것이다. 즉, 무효 페이지를 많이 포함하는 타겟 블록은 상대적으로 가비지 컬렉션에 있어서 소거 순위가 높다. As an embodiment, there may be a difference in erase order between the target blocks 114, 115, 116, and 117 indicating the order of erasing soon due to the internal operation of the
이때, 핫 페이지의 우선 순위가 높을수록 높은 소거 순위를 갖는 타겟 블록에 할당 및 프로그램된다. 예를 들어, 핫 페이지들(hot1, hot2, hot3, hot4)의 우선 순위가 차례로 페이지(hot1, 가장 높음), 페이지(hot2), 페이지(hot3), 페이지(hot4, 가장 낮음) 순으로 높고, 타겟 블록들(114, 115, 116, 117)의 소거 순위가 차례로 블록(114, 가장 높음), 블록(115), 블록(116), 블록(117, 가장 낮음) 순으로 높다고 가정한다. 그러면, 핫 페이지의 우선 순위 및 타겟 블록의 소거 순위에 따라, 페이지(hot1)는 블록(114)에 할당 및 프로그램되고, 페이지(hot4)는 블록(117)에 할당 및 프로그램된다. 마찬가지로, 페이지(hot2) 및 페이지(hot3)은 각각 블록(115) 및 블록(116)에 할당 및 프로그램된다.At this time, the higher the priority of the hot page, the more the target block having a high erase order is allocated and programmed. For example, the priority of hot pages (hot1, hot2, hot3, hot4) is higher in order of page (hot1, highest), page (hot2), page (hot3), page (hot4, lowest) It is assumed that the erase orders of the target blocks 114, 115, 116 and 117 are sequentially higher in order of block 114 (highest), block 115, block 116, and block 117 (lowest). Then, the page (hot1) is allocated and programmed in
상기와 같은 구성에 따르면, 핫 페이지들 중 읽기 횟수 또는 빈도가 높은 페이지일수록 소거 순위가 높은 타겟 블록에 프로그램된다. 따라서, 핫 페이지에 의해 타겟 블록의 읽기 카운트가 증가하고, 증가된 읽기 카운트에 의해 타겟 블록에 읽기 마이그레이션이 수행될 가능성을 낮출 수 있다. 즉, 읽기 마이그레이션이 수행되기 전에 내부 동작(예를 들어, 가비지 컬렉션)에 의해 소거가 될 타겟 블록에 우선 순위가 높은 핫 페이지를 할당함으로써, 읽기 마이그레이션의 발생 가능성을 최소화할 수 있다.According to the above configuration, a page with a high read frequency or a high frequency among hot pages is programmed in a target block having a high erase order. Thus, the read count of the target block is increased by the hot page, and the possibility of performing the read migration to the target block by the increased read count can be lowered. That is, the possibility of a read migration can be minimized by allocating a high priority hot page to a target block to be erased by an internal operation (for example, garbage collection) before a read migration is performed.
도 6은 본 발명의 실시 예들에 따른 데이터 관리 방법을 나타내는 순서도이다. 도 6을 참조하면, 데이터 관리 방법은 S110 단계 내지 S150 단계를 포함한다. 6 is a flowchart illustrating a data management method according to embodiments of the present invention. Referring to FIG. 6, the data management method includes steps S110 to S150.
S110 단계에서, 불휘발성 메모리 장치(100, 도 1 참조)는 제 1 블록에 대한 읽기 명령을 수신한다. 이때, 제 1 블록에 대한 읽기 명령은 제 1 블록에 포함된 적어도 하나의 논리 페이지에 대한 읽기 명령을 포함한다.In step S110, the nonvolatile memory device 100 (see FIG. 1) receives a read command for the first block. At this time, the read command for the first block includes a read command for at least one logical page included in the first block.
실시 예로서, S110 단계에서, 불휘발성 메모리 장치(100)는 제 1 블록에 대한 읽기 명령에 응답하여, 제 1 블록의 블록 읽기 카운트를 증가시킬 수 있다. 여기서 블록 읽기 카운트는 제 1 블록에 대해 읽기 동작이 수행된 횟수를 나타낸다.As an example, in step S110, the
S120 단계에서, 불휘발성 메모리 장치(100)는 제 1 블록의 블록 읽기 카운트 및 논리 페이지들의 페이지 읽기 정보에 따라, 제 1 블록에 포함된 논리 페이지들 중 핫 페이지를 결정한다. 페이지 읽기 정보는 논리 페이지들의 페이지 읽기 카운트, 읽기 페이스 또는 보정된 읽기 페이스를 포함할 수 있다. 읽기 카운트, 읽기 페이스 또는 보정된 읽기 페이스에 대한 구체적인 내용은 위에서 설명한 바와 동일하다.In step S120, the
구체적으로, S120 단계에서, 불휘발성 메모리 장치(100)는 제 1 블록의 블록 읽기 카운트를 기준 값과 비교한다. 비교 결과, 제 1 블록의 블록 읽기 카운트가 기준 값을 초과하면, 제 1 블록에 포함된 논리 페이지들 중 일부를 다른 블록으로 복사(copy)하기 위해, 논리 페이지들 중 핫 페이지를 결정한다.Specifically, in step S120, the
실시 예로서, 제 1 블록에 대한 읽기 명령은 제 1 블록에 포함된 적어도 하나의 논리 페이지에 대한 읽기 명령을 포함한다. 이때, 불휘발성 메모리 장치(100)는 적어도 하나의 논리 페이지에 대한 읽기 명령에 응답하여, 해당 논리 페이지의 읽기 정보를 갱신(또는 재산출)할 것이다. As an embodiment, the read command for the first block includes a read command for at least one logical page included in the first block. At this time, the
그리고, 불휘발성 메모리 장치(100)는 제 1 블록의 논리 페이지들의 읽기 정보에 따라, 논리 페이지들 중 핫 페이지를 결정한다. 예를 들어, 핫 페이지 결정의 기준이되는 읽기 정보가 읽기 카운트인 경우, 읽기 카운트가 문턱 값(threshlod value)을 초과하는 논리 페이지들은 핫 페이지로 결정될 것이다. 또는, 핫 페이지 결정의 기준이 되는 읽기 정보가 읽기 페이스 또는 보정된 읽기 페이스인 경우, 읽기 페이스 또는 보정된 읽기 페이스가 문턱 값(threshlod value)을 초과하는 논리 페이지들은 핫 페이지로 결정될 것이다.Then, the
S130 단계에서, 불휘발성 메모리 장치(100)는 결정된 핫 페이지를 제 2 블록(또는, 타겟 블록)에 할당한다. 이때, 복수의 핫 페이지들을 복수의 타겟 블록들에 프로그램하는 경우, 핫 페이지들의 우선 순위 및 타겟 블록들의 소거 순위에 따라 복수의 핫 페이지들을 복수의 타겟 블록에 할당할 수 있다. 우선 순위 또는 소거 순위에 따라 핫 페이지들을 타겟 블록들에 할당하는 구체적인 방법은 도 5에서 설명한 바와 동일하다.In step S130, the
S140 단계에서, 불휘발성 메모리 장치(100)는 핫 페이지를 할당된 제 2 블록에 프로그램한다.In step S140, the
S150 단계에서, 불휘발성 메모리 장치(100)는 프로그램된 핫 페이지의 대응하는 물리 주소를 나타내는 매핑 테이블을 업데이트한다. 이때, 업데이트되는 매핑 테이블은 논리 페이지의 대응하는 물리 주소를 나타내는 매핑 테이블 또는 복제본(또는, 레플리카)의 대응하는 물리 주소를 나타내는 레플리카 테이블일 수 있다. 매핑 테이블, 레플리카 테이블 또는 매핑 테이블, 레플리카 테이블을 업데이트하는 방법에 대한 구체적인 내용은 도 3 및 도 4에서 설명된 바와 동일하다.In step S150, the
상기와 같은 구성에 따르면, 불휘발성 메모리 장치(100)는 제 1 블록의 읽기 카운트에 따라, 제 1 블록의 논리 페이지들 중 핫 페이지를 읽어내어 제 2 블록(또는, 타겟 블록)에 프로그램한다. 그리고, 이후 핫 페이지에 대한 읽기 명령이 수신되면, 불휘발성 메모리 장치(100)는 핫 페이지를 제 1 블록 대신 제 2 블록으로부터 독출한다. 따라서, 핫 페이지에 대한 읽기 명령이 반복적으로 수신되는 경우, 핫 페이지에 대한 읽기 동작은 적어도 두 개의 블록(제 1 및 제 2 블록)에서 분산되어 수행될 수 있다. 따라서, 핫 페이지를 독출하기 위해, 제 1 블록에 과도한 읽기 동작이 집중되는 것이 방지될 수 있고, 제 1 블록에 대해 읽기 마이그레이션이 수행될 가능성을 낮출 수 있다.According to the above configuration, the
도 7 및 도 8은 본 발명에 따른 데이터 관리 방법의 제 4 실시 예를 나타내는 도면이다. 도 7 및 도 8은 논리 페이지들의 읽기 정보 저장에 필요한 메모리 공간을 최소화하기 위한 데이터 관리 방법을 제공한다.7 and 8 are views showing a fourth embodiment of a data management method according to the present invention. 7 and 8 provide a data management method for minimizing the memory space required for storing read information of logical pages.
도 7은 복수의 블록들 중 일부 블록의 논리 페이지들에 대해서만 읽기 정보를 저장하는 데이터 관리 방법을 나타낸다. 도 7을 참조하면, 불휘발성 메모리 장치(200)는 블록의 읽기 카운트(RC)를 관리하기 위한 블록 테이블(210) 및 논리 페이지의 읽기 카운트(RC)를 관리하기 위한 페이지 테이블(220, 230)을 포함한다.7 shows a data management method of storing read information only for logical pages of a part of a plurality of blocks. 7, the
블록 테이블(210)은 복수의 블록들(BLK1, BLK2, … , BLKn)의 블록 읽기 카운트(BLK RC)를 저장한다. 블록 테이블(210)에 저장되는 블록 읽기 카운트(BLK RC)는 블록에 대한 읽기 명령이 수신되면 갱신된다. 예를 들어, 블록(BLK2)의 저장된 읽기 카운트는 40이지만, 블록(BLK2)에 대해 2회의 읽기 명령이 수신되고 그에 따라 2회의 읽기 동작이 수행되면, 블록(BLK2)의 저장된 읽기 카운트는 42로 갱신될 것이다.The block table 210 stores a block read count (BLK RC) of a plurality of blocks (BLK1, BLK2, ..., BLKn). The block read count (BLK RC) stored in the block table 210 is updated when a read command for the block is received. For example, the stored read count of block BLK2 is 40, but if two read commands are received for block BLK2 and two read operations are thus performed, the stored read count of block BLK2 is 42 Will be updated.
불휘발성 메모리 장치(200)는 블록 테이블(210)을 참조하여, 블록 읽기 카운트(BLK RC)가 문턱 값(threshold value, 예를 들어 100)을 초과하는지 판단한다. 그리고, 블록 읽기 카운트(BLK RC)가 문턱 값을 초과하면, 그 블록에 포함된 논리 페이지들의 읽기 카운트를 페이지 테이블(220, 230)에 저장한다. 즉, 읽기 카운트가 상대적으로 큰(즉, 핫 페이지를 결정할 필요가 있는) 블록에 대해서만 선택적으로 논리 페이지들의 읽기 카운트를 저장한다.The
예를 들어, 블록(BLK1)은 블록 읽기 카운트(BLK RC)가 문턱 값을 초과한다(150 〉100). 따라서, 블록(BLK1)에 포함된 논리 페이지들(page 1a, page 1b, page 1c)에 대해서 각각 페이지 읽기 카운트(30, 40, 22)가 페이지 테이블(220)에 저장된다. 한편, 페이지 읽기 카운트 저장에 필요한 메모리 공간을 최소화하기 위해, 하나의 블록당 페이지 읽기 카운트가 저장되는 논리 페이지의 수는 제한될 수 있다. 예를 들어, 하나의 블록에 포함되는 논리 페이지들 중 최대 3개의 논리 페이지만이 페이지 테이블(220)에 페이지 읽기 카운트가 저장될 수 있다. 이에 대한 구체적인 내용은 도 8에서 후술될 것이다.For example, in block BLK1, the block read count BLK RC exceeds the threshold (150 > 100). Accordingly, the page read counts 30, 40, and 22 are stored in the page table 220 for the logical pages (
마찬가지로, 문턱 값을 초과하는 다른 블록(BLK3)도 논리 페이지의 페이지 읽기 카운트 값이 페이지 테이블(230)에 저장된다. 여기서는 블록(BLK1) 및 블록(BLK3)에 각각 별개의 페이지 테이블(220, 230)이 대응되는 것으로 설명되었다. 그러나, 예시적인 것으로서, 하나의 페이지 테이블에 의해 복수 블록의 페이지 읽기 카운트가 저장될 수 있다.Similarly, the other block BLK3 exceeding the threshold value also stores the page read count value of the logical page in the page table 230. [ Here, it has been described that the page tables 220 and 230 correspond to the blocks BLK1 and BLK3, respectively. However, by way of illustration, page read counts of a plurality of blocks may be stored by one page table.
반면, 블록(BLK2)는 블록 읽기 카운트(BLK RC)가 문턱 값 미만이다(40〈 100). 따라서, 블록(BLK2)에 대해서는 블록 읽기 카운트(BLK RC)만이 블록 테이블(210)에 저장되고, 블록(BLK2)에 포함된 논리 페이지들의 읽기 카운트는 별도로 저장되지 않는다.On the other hand, the block BLK2 has a block read count BLK RC less than the threshold (40 < 100). Therefore, for the block BLK2, only the block read count BLK RC is stored in the block table 210, and the read count of the logical pages included in the block BLK2 is not separately stored.
상기와 같은 구성에 따르면, 일부 블록(BLK1, BLK3)에 대해서만 논리 페이지의 페이지 읽기 카운트가 저장된다. 따라서, 페이지 읽기 카운트를 관리하기 위해 필요한 메모리 공간이 감소될 수 있다.According to the above configuration, the page read count of the logical page is stored for only some of the blocks BLK1 and BLK3. Thus, the memory space required to manage the page read count can be reduced.
도 8은 하나의 블록에 포함된 논리 페이지들 중 일부 논리 페이지들에 대해서만 읽기 정보를 저장하는 데이터 관리 방법을 나타낸다. 도 8을 참조하면, 불휘발성 메모리 장치(200)는 논리 페이지들의 페이지 읽기 카운트를 관리하기 위한 페이지 테이블(220)을 포함한다.8 shows a data management method for storing read information for only some of the logical pages included in one block. Referring to FIG. 8, the
도 8에서, 페이지 읽기 카운트 저장에 필요한 메모리 공간을 최소화하기 위해, 하나의 블록당 페이지 읽기 카운트가 저장되는 논리 페이지의 수는 제한된다. 예를 들어, 하나의 블록에 포함되는 논리 페이지들 중 최대 3개의 논리 페이지에 대해서 페이지 테이블(220)에 페이지 읽기 카운트가 저장될 수 있다. In Fig. 8, in order to minimize the memory space required for storing the page read count, the number of logical pages in which the page read count per block is stored is limited. For example, a page read count may be stored in the page table 220 for up to three logical pages among the logical pages included in one block.
페이지 테이블(220)에는 블록(BLK1)에 포함된 논리 페이지들 중 최대 3개의 논리 페이지들의 페이지 읽기 카운트가 저장된다고 가정한다. 그리고, 페이지 테이블(220)에는 3개의 논리 페이지들(page 1a, page 1b, page 1c)의 페이지 읽기 카운트가 저장되어 있다고 가정한다. 이때, 페이지 테이블(220)에 페이지 읽기 카운트가 저장된 논리 페이지들(page 1a, page 1b, page 1c)을 제 1 그룹이라 한다. 반면에, 페이지 테이블(220)에 페이지 읽기 카운트가 저장되지 않은 논리 페이지들은 제 2 그룹이라 한다.The page table 220 stores a page read count of up to three logical pages among the logical pages included in the block BLK1. It is assumed that the page table 220 stores page read counts of three logical pages (
블록(BLK1)에 대한 읽기 명령이 수신되면, 블록(BLK1)의 블록 읽기 카운트는 증가할 것이다. 예를 들어, 블록(BLK1)의 블록 읽기 카운트는 150에서 151로 증가할 수 있다. 그리고, 블록(BLK1)에 대한 읽기 명령이 제 1 그룹에 속하는 논리 페이지에 대한 읽기 명령을 포함하면, 페이지 테이블(220)에 저장된 페이지 읽기 카운트가 증가할 것이다. 예를 들어, 블록(BLK1)에 대한 읽기 명령이 페이지(page 1a)에 대한 읽기 명령을 포함하면, 페이지(page 1a)의 페이지 읽기 카운트는 30에서 31로 증가하고, 증가된 값이 페이지 테이블(220)에 저장된다.When a read command for block BLK1 is received, the block read count of block BLK1 will increase. For example, the block read count of block BLK1 may increase from 150 to 151. And, if the read command for block BLK1 includes a read command for a logical page belonging to the first group, the page read count stored in the page table 220 will increase. For example, if the read command for block BLK1 includes a read command for
반면, 블록(BLK1)에 대한 읽기 명령이 제 2 그룹에 속하는 논리 페이지(예를 들어, page 1d)에 대한 읽기 명령을 포함하는 경우, 읽기가 수행되는 논리 페이지(page 1d)의 페이지 읽기 카운트 값은 페이지 테이블(220)에 저장되어 있지 않다. 따라서, 이때, 논리 페이지들의 평균 페이지 읽기 카운트(mean RC)가 논리 페이지(page 1d)의 읽기 카운트로 결정된다. 예를 들어, 블록(BLK1)의 블록 읽기 카운트가 150이고, 블록(BLK1)이 5개의 논리 페이지를 포함하는 경우, 블록 읽기 카운트는 5개 논리 페이지들의 페이지 읽기 카운트의 합과 같다. 따라서, 블록(BLK1)에 포함되는 논리 페이지들의 평균 페이지 읽기 카운트(mean RC)는 30이고(150÷5 〓 30), 논리 페이지(page 1d)의 페이지 읽기 카운트는 30으로 결정된다.On the other hand, when the read command for the block BLK1 includes a read command for a logical page belonging to the second group (for example,
그리고, 논리 페이지(page 1d)의 결정된 페이지 읽기 카운트와 페이지 테이블(220)에 저장된 페이지 읽기 카운트들의 값을 비교한다. 구체적으로, 논리 페이지(page 1d)의 결정된 페이지 읽기 카운트가 페이지 테이블(220)에 저장된 최소 페이지 읽기 카운트를 초과하는지 판단한다. Then, the determined page read count of the logical page (
만일, 결정된 페이지 읽기 카운트가 최소 페이지 읽기 카운트를 초과하는 경우, 읽기가 수행되는 논리 페이지(page 1d)는 최소 페이지 읽기 카운트에 대응되는 논리 페이지(page 1c)보다 더 자주 읽히는 페이지인 것으로 간주된다. 따라서, 페이지 테이블(220)로부터 논리 페이지(page 1c)의 페이지 읽기 카운트는 삭제된다. 그리고, 삭제된 페이지 읽기 카운트를 대체하여 논리 페이지(page 1d)의 페이지 읽기 카운트가 페이지 테이블(220)에 저장된다.If the determined page read count exceeds the minimum page read count, the logical page on which the read is performed (
상기와 같은 구성에 따르면, 블록(BLK1)에 포함된 복수의 논리 페이지들의 읽기 카운트를 참조하여, 읽기 빈도 또는 횟수가 높은 논리 페이지들의 페이지 읽기 카운트만이 페이지 테이블(220)에 저장된다. 따라서, 페이지 읽기 카운트를 저장하기 위해 필요한 메모리 공간이 감소될 수 있다.According to the above configuration, referring to the read count of the plurality of logical pages included in the block BLK1, only the page read count of logical pages having a high read frequency or a high frequency is stored in the page table 220. [ Thus, the memory space required to store the page read count can be reduced.
도 9는 본 발명의 제 4 실시 예에 따른 데이터 관리 방법을 구체적으로 나타내는 순서도이다. 도 9를 참조하면, 본 실시 예에 따른 데이터 관리 방법은 S210 단계 내지 S280 단계를 포함한다.9 is a flowchart specifically illustrating a data management method according to a fourth embodiment of the present invention. Referring to FIG. 9, the data management method according to the present embodiment includes steps S210 to S280.
S210 단계에서, 블록에 대한 읽기 명령이 수신된다. 이때, 블록에 대한 읽기 명령은 블록에 포함된 논리 페이지에 대한 읽기 명령을 포함한다. In step S210, a read command for the block is received. At this time, the read command for the block includes a read command for the logical page included in the block.
S220 단계에서, 읽기 명령이 수신된 블록의 블록 읽기 카운트가 증가된다. 실시 예로서, 블록에 대한 읽기 명령이 1회 수신될 때마다, 블록 읽기 카운트는 1씩 증가될 수 있다.In step S220, the block read count of the block in which the read command is received is incremented. As an example, each time a read command for a block is received, the block read count may be incremented by one.
S230 단계에서, 읽기 명령이 수신된 블록의 블록 읽기 카운트가 문턱 값을 초과하는 지 판단한다. 본 실시 예에 따른 데이터 관리 방법에서, 블록 읽기 카운트가 문턱 값을 초과하는 블록에 대해서만, 논리 페이지의 페이지 읽기 카운트가 별도로 저장된다.In step S230, it is determined whether the block read count of the block in which the read command is received exceeds a threshold value. In the data management method according to the present embodiment, the page read count of the logical page is separately stored only for the block whose block read count exceeds the threshold value.
문턱 값을 초과하면, 데이터 관리 방법은 S240 단계로 진행한다. 문턱 값을 초과하지 않으면, 데이터 관리 방법은 종료한다. If the threshold value is exceeded, the data management method proceeds to step S240. If the threshold value is not exceeded, the data management method ends.
S240 단계에서, 읽기가 수행되는 논리 페이지(이하, 대상 페이지)가 페이지 테이블(또는, RC 테이블)에 페이지 읽기 카운트가 저장된 논리 페이지 그룹(이하, 제 1 그룹)에 속하는지 판단한다. 대상 페이지가 제 1 그룹에 속하면, 데이터 관리 방법은 S260 단계로 진행한다. 그렇지 않으면, 데이터 관리 방법은 S250 단계로 진행한다.In step S240, it is determined whether a logical page (hereinafter referred to as a target page) to be read belongs to a logical page group (hereinafter referred to as a first group) in which page read counts are stored in the page table (or RC table). If the target page belongs to the first group, the data management method proceeds to step S260. Otherwise, the data management method proceeds to step S250.
S250 단계에서, 블록의 평균 페이지 읽기 카운트(mean RC)를 대상 페이지의 페이지 읽기 카운트로서 결정한다. 여기서, 평균 페이지 읽기 카운트(mean RC) 및 대상 페이지의 페이지 읽기 카운트를 결정하는 방법에 대한 구체적인 내용은 앞에서 설명한 바와 동일하다.In step S250, the average page read count (mean RC) of the block is determined as the page read count of the target page. Here, the details of the method for determining the average page read count (mean RC) and the page read count of the target page are the same as those described above.
S270 단계에서, 대상 페이지의 페이지 읽기 카운트를 페이지 테이블의 최소 페이지 읽기 카운트와 비교한다. 비교 결과, 대상 페이지의 페이지 읽기 카운트가 최소 페이지 읽기 카운트를 초과하면, 데이터 관리 방법은 S280 단계로 진행한다. 그렇지 않으면, 데이터 관리 방법은 종료한다.In step S270, the page read count of the target page is compared with the minimum page read count of the page table. As a result of the comparison, if the page read count of the target page exceeds the minimum page read count, the data management method proceeds to step S280. Otherwise, the data management method ends.
S280 단계에서, 페이지 테이블로부터 최소 페이지 읽기 카운트는 삭제된다. 그리고, 삭제된 페이지 읽기 카운트를 대체하여 대상 페이지의 페이지 읽기 카운트가 페이지 테이블에 저장된다. S280 단계가 종료하면, 데이터 관리 방법은 종료한다.In step S280, the minimum page read count from the page table is deleted. Then, the page read count of the target page is stored in the page table in place of the deleted page read count. When the step S280 is finished, the data management method ends.
한편, 다시 S260 단계로 돌아가면, On the other hand, when the process returns to step S260,
S240 단계가 종료된 후 S250 단계에서, 대상 페이지의 페이지 읽기 카운트는 증가되고, 증가된 페이지 읽기 카운트는 페이지 테이블(또는, RC 테이블)에 저장된다. S260 단계가 종료하면, 데이터 관리 방법은 종료된다.After step S240 ends, in step S250, the page read count of the target page is increased and the increased page read count is stored in the page table (or RC table). When step S260 is completed, the data management method ends.
상기와 같은 구성에 따르면, 일부 블록에 대해서만 논리 페이지의 페이지 읽기 카운트가 저장된다. 또한, 하나의 블록에 포함되는 논리 페이지들 중 페이지 읽기 카운트가 저장되는 논리 페이지의 개수가 제한될 수 있다. 따라서, 페이지 읽기 카운트를 관리하기 위해 필요한 메모리 공간이 감소될 수 있다.According to the above arrangement, the page read count of the logical page is stored only for some blocks. In addition, the number of logical pages in which the page read count is stored among the logical pages included in one block may be limited. Thus, the memory space required to manage the page read count can be reduced.
도 12는 본 발명의 실시 예들에 따른 솔리드 스테이트 드라이브(Solid State Drive, 이하 SSD)를 나타내는 블록도이다. 도 12를 참조하면, 사용자 장치(1000)는 호스트(1100)와 SSD(1200)를 포함한다. SSD(1200)는 SSD 컨트롤러(1210), 버퍼 메모리(1220), 그리고 불휘발성 메모리 장치(1230)를 포함한다. 12 is a block diagram illustrating a solid state drive (SSD) according to embodiments of the present invention. Referring to FIG. 12, a
SSD 컨트롤러(1210)는 호스트(1100)와 SSD(1200)와의 물리적 연결을 제공한다. 즉, SSD 컨트롤러(1210)는 호스트(1100)의 버스 포맷(Bus format)에 대응하여 SSD(1200)와의 인터페이싱을 제공한다. 특히, SSD 컨트롤러(1210)는 호스트(1100)로부터 제공되는 명령어를 디코딩한다. 디코딩된 결과에 따라, SSD 컨트롤러(1210)는 불휘발성 메모리 장치(1230)를 액세스한다. 호스트(1100)의 버스 포맷(Bus format)으로 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI) 등이 포함될 수 있다.The
버퍼 메모리(1220)에는 호스트(1100)로부터 제공되는 쓰기 데이터 또는 불휘발성 메모리 장치(1230)로부터 읽혀진 데이터가 일시 저장된다. 호스트(1100)의 읽기 요청시에 불휘발성 메모리 장치(1230)에 존재하는 데이터가 캐시되어 있는 경우에는, 버퍼 메모리(1220)는 캐시된 데이터를 직접 호스트(1100)로 제공하는 캐시 기능을 지원한다. 일반적으로, 호스트(1100)의 버스 포맷(예를 들면, SATA 또는 SAS)에 의한 데이터 전송 속도는 SSD(1200)의 메모리 채널의 전송 속도보다 월등히 빠르다. 즉, 호스트(1100)의 인터페이스 속도가 월등히 높은 경우, 대용량의 버퍼 메모리(1220)를 제공함으로써 속도 차이로 발생하는 퍼포먼스 저하를 최소화할 수 있다. In the
버퍼 메모리(1220)는 대용량의 보조 기억 장치로 사용되는 SSD(1200)에서 충분한 버퍼링을 제공하기 위해 동기식 DRAM(Synchronous DRAM)으로 제공될 수 있다. 하지만, 버퍼 메모리(1220)가 여기의 개시에 국한되지 않음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다. The
불휘발성 메모리 장치(1230)는 SSD(1200)의 저장 매체로서 제공된다. 예를 들면, 불휘발성 메모리 장치(1230)는 대용량의 저장 능력을 가지는 수직 구조 낸드 플래시 메모리(NAND-type Flash memory)로 제공될 수 있다. 불휘발성 메모리 장치(1230)는 복수의 메모리 장치로 구성될 수 있다. 이 경우, 각각의 메모리 장치들은 채널 단위로 SSD 컨트롤러(1210)와 연결된다. 저장 매체로서 불휘발성 메모리 장치(1230)가 낸드 플래시 메모리를 예로 들어 설명되었으나, 또 다른 불휘발성 메모리 장치들로 구성될 수 있다. 예를 들면, 저장 매체로서 PRAM, MRAM, ReRAM, FRAM, NOR 플래시 메모리 등이 사용될 수 있으며, 이종의 메모리 장치들이 혼용되는 메모리 시스템도 적용될 수 있다. 불휘발성 메모리 장치(1230)는 실질적으로 도 1에서 설명된 불휘발성 메모리 장치와 동일하게 구성될 수 있다.The
상술한 SSD(1200)에서, 불휘발성 메모리 장치(1230)는 메모리 블록들의 읽기 횟수에 따라, 읽기가 많이 수행된 메모리 블록의 핫 페이지들을 읽어내어 다른 블록(이하, 타겟 블록이라 한다)에 프로그램한다. 그리고, 이후 핫 페이지들에 대한 읽기 명령이 수신되면, 타겟 블록으로부터 핫 페이지들을 독출한다. In the
상기와 같은 구성에 따르면, 불휘발성 메모리 장치(1230)로부터 핫 페이지를 반복적으로 읽어내는 경우, 핫 페이지에 대한 읽기 동작은 적어도 두 개의 블록에서 분산되어 수행될 수 있다. 따라서, 핫 페이지를 독출에 따른 읽기 동작이 하나의 블록에서 과도하게 수행되는 것이 방지될 수 있다. 그 결과, 특정 블록에 대해 읽기 마이그레이션이 빈번하게 수행되는 것을 방지할 수 있다.According to such a configuration, when the hot page is repeatedly read from the
도 13은 본 발명의 실시 예들에 따른 데이터 저장 장치를 예시적으로 나타내는 블록도이다. 도 13을 참조하면, 본 발명에 따른 메모리 시스템(2000)은 메모리 컨트롤러(2200)와 불휘발성 메모리(2100)를 포함할 수 있다.13 is a block diagram illustrating an exemplary data storage device in accordance with embodiments of the present invention. Referring to FIG. 13, a
불휘발성 메모리 장치(2100)는 실질적으로 도 1에서 설명된 불휘발성 메모리 장치와 동일하게 구성될 수 있다.The
메모리 컨트롤러(2200)는 불휘발성 메모리(2100)를 제어하도록 구성될 수 있다. SRAM(2230)은 CPU(2210)의 워킹 메모리로 사용될 수 있다. 호스트 인터페이스(2220)는 메모리 시스템(2000)과 접속되는 호스트의 데이터 교환 프로토콜을 구비할 수 있다. 메모리 컨트롤러(2200)에 구비된 에러 정정 회로(2240)는 불휘발성 메모리(2100)로부터 읽어 온 읽기 데이터에 포함되어 있는 에러를 검출 및 정정할 수 있다. 메모리 인터페이스(2260)는 본 발명의 불휘발성 메모리(2100)와 인터페이싱 할 수 있다. CPU(2210)는 메모리 컨트롤러(2200)의 데이터 교환을 위한 제반 제어 동작을 수행할 수 있다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 메모리 시스템(2000)는 호스트(Host)와의 인터페이싱을 위한 코드 데이터를 저장하는 ROM(미도시됨) 등이 더 제공될 수 있다. The
메모리 컨트롤러(2100)는 USB, MMC, PCI-E, SAS, SATA, PATA, SCSI, ESDI, 그리고 IDE 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 통해 외부(예를 들면, 호스트)와 통신하도록 구성될 것이다. The
상술한 메모리 시스템(2000)에서, 불휘발성 메모리 장치(2100)는 메모리 블록들의 읽기 횟수에 따라, 읽기가 많이 수행된 메모리 블록의 핫 페이지들을 읽어내어 다른 블록(이하, 타겟 블록이라 한다)에 프로그램한다. 그리고, 이후 핫 페이지들에 대한 읽기 명령이 수신되면, 타겟 블록으로부터 핫 페이지들을 독출한다. In the above-described
상기와 같은 구성에 따르면, 불휘발성 메모리 장치(2100)로부터 핫 페이지를 반복적으로 읽어내는 경우, 핫 페이지에 대한 읽기 동작은 적어도 두 개의 블록에서 분산되어 수행될 수 있다. 따라서, 핫 페이지를 독출에 따른 읽기 동작이 하나의 블록에서 과도하게 수행되는 것이 방지될 수 있다. 그 결과, 특정 블록에 대해 읽기 마이그레이션이 빈번하게 수행되는 것을 방지할 수 있다.According to such a configuration, when the hot page is repeatedly read from the
본 발명에 따른 메모리 시스템(2000)는, 컴퓨터, 휴대용 컴퓨터, UMPC (Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA, 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), 디지털 카메라(digital camera), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), 정보를 무선 환경에서 송수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 사용자 장치들 중 하나에 적용될 수 있다. The
도 14는 본 발명의 실시 예들에 따른 메모리 카드를 예시적으로 나타내는 블록도이다. 도 14를 참조하면, 본 발명에 따른 데이터 저장 장치(3000)는 불휘발성 메모리(3100)와 메모리 컨트롤러(3200)를 포함할 수 있다. 메모리 컨트롤러(3200)는 데이터 저장 장치(3000) 외부로부터 수신된 제어 신호들에 기초하여 불휘발성 메모리(3100)를 제어할 수 있다. 14 is a block diagram exemplarily showing a memory card according to embodiments of the present invention. Referring to FIG. 14, a
상술한 데이터 저장 장치(3000)에서, 불휘발성 메모리(3100)는 도 1의 불휘발성 메모리 장치와 실질적으로 동일하게 동작할 수 있다. 불휘발성 메모리(3100)는 메모리 블록들의 읽기 횟수에 따라, 읽기가 많이 수행된 메모리 블록의 핫 페이지들을 읽어내어 다른 블록(이하, 타겟 블록이라 한다)에 프로그램한다. 그리고, 이후 핫 페이지들에 대한 읽기 명령이 수신되면, 타겟 블록으로부터 핫 페이지들을 독출한다. 상기와 같은 구성에 따르면, 불휘발성 메모리(3100)로부터 핫 페이지를 반복적으로 읽어내는 경우, 핫 페이지에 대한 읽기 동작은 적어도 두 개의 블록에서 분산되어 수행될 수 있다. 따라서, 핫 페이지를 독출에 따른 읽기 동작이 하나의 블록에서 과도하게 수행되는 것이 방지될 수 있다. 그 결과, 특정 블록에 대해 읽기 마이그레이션이 빈번하게 수행되는 것을 방지할 수 있다.In the
본 발명의 데이터 저장 장치(3000)는 메모리 카드 장치, SSD 장치, 멀티미디어 카드 장치, SD 카드, 메모리 스틱 장치, 하드 디스크 드라이브 장치, 하이브리드 드라이브 장치, 또는 범용 직렬 버스 플래시 장치를 구성할 수 있다. 예를 들면, 본 발명의 데이터 저장 장치(3000)는 디지털, 카메라, 개인 컴퓨터 등과 같은 사용자 장치를 사용하기 위한 산업 표준을 만족하는 카드를 구성할 수 있다. The
도 15는 본 발명의 실시 예들에 따른 불휘발성 메모리 장치 및 그것을 포함하는 컴퓨팅 시스템의 개략적인 구성을 나타내는 도면이다. 도 15를 참조하면, 본 발명에 따른 컴퓨팅 시스템(4000)은 버스(4400)에 전기적으로 연결된 불휘발성 메모리 장치(4100), 메모리 컨트롤러(4200), 베이스밴드 칩셋(baseband chipset)과 같은 모뎀(4300), 마이크로프로세서(4500), 그리고 사용자 인터페이스(4600)를 포함할 수 있다. 15 is a diagram showing a schematic configuration of a nonvolatile memory device and a computing system including the nonvolatile memory device according to embodiments of the present invention. 15, a
도 15에 도시된 불휘발성 메모리 장치(4100)와 메모리 컨트롤러(4200)의 구성은 도 1에 도시된 불휘발성 메모리 장치와 실질적으로 동일하게 구성될 수 있다. 메모리 컨트롤러(4200)는 불휘발성 메모리 장치(4100)의 메모리 블록들의 읽기 횟수에 따라, 읽기가 많이 수행된 메모리 블록의 핫 페이지들이 다른 블록(이하, 타겟 블록이라 한다)에 프로그램되도록 불휘발성 메모리 장치(4100)를 제어한다. 그리고, 이후 핫 페이지들에 대한 읽기 명령이 수신되면, 타겟 블록으로부터 핫 페이지들을 독출하도록 불휘발성 메모리 장치(4100)를 제어한다. The configuration of the
상기와 같은 구성에 따르면, 불휘발성 메모리 장치(4100)로부터 핫 페이지를 반복적으로 읽어내는 경우, 핫 페이지에 대한 읽기 동작은 적어도 두 개의 블록에서 분산되어 수행될 수 있다. 따라서, 핫 페이지를 독출에 따른 읽기 동작이 하나의 블록에서 과도하게 수행되는 것이 방지될 수 있다. 그 결과, 특정 블록에 대해 읽기 마이그레이션이 빈번하게 수행되는 것을 방지할 수 있다.According to such a configuration, when the hot pages are repeatedly read from the
본 발명에 따른 컴퓨팅 시스템이 모바일 장치인 경우, 컴퓨팅 시스템의 동작 전압을 공급하기 위한 배터리(4700)가 추가적으로 제공될 수 있다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 컴퓨팅 시스템에는 응용 칩셋(application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있다. 메모리 컨트롤러(4200)와 불휘발성 메모리 장치(4100)는, 예를 들면, 데이터를 저장하는 데 불휘발성 메모리를 사용하는 SSD(Solid State Drive/Disk)를 구성할 수 있다.When the computing system according to the present invention is a mobile device, a
본 발명에 따른 불휘발성 메모리 장치 그리고/또는 메모리 컨트롤러는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 본 발명에 따른 불휘발성 메모리 장치 그리고/또는 메모리 컨트롤러는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장 될 수 있다.The nonvolatile memory device and / or memory controller according to the present invention may be implemented using various types of packages. For example, the nonvolatile memory device and / or the memory controller according to the present invention may be implemented as a package on package (PoP), ball grid arrays (BGAs), chip scale packages (CSPs), plastic leaded chip carriers -Line Package (PDIP), Die in Waffle Pack, Die in Wafer Form, COB, Ceramic Dual In-Line Package, Plastic Metric Quad Flat Pack (MQFP), Thin Quad Flatpack (TQFP) (SSOP), Thin Small Outline (TSOP), System In Package (SIP), Multi Chip Package (MCP), Wafer-level Fabricated Package (WFP), Wafer-Level Processed Stack Package (WSP), and the like.
본 발명의 상세한 설명에서는 구체적인 실시 예를 들어 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한 각 실시 예는 여러 가지 형태로 변형될 수 있다. 또한, 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허 청구범위뿐만 아니라 이 발명의 특허 청구범위와 균등한 것들에 의해 정해져야 한다.
While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is to be understood that the invention is not limited to the disclosed exemplary embodiments. In addition, although specific terms are used herein, they are used for the purpose of describing the present invention only and are not used to limit the scope of the present invention described in the claims or the claims. Therefore, the scope of the present invention should not be limited to the above-described embodiments, but should be determined by the equivalents of the claims of the present invention as well as the claims of the following.
100: 불휘발성 메모리 장치 110: 메모리 셀 어레이
120: 행 디코더 130: 데이터 입출력 회로
140: 제어 로직 150: 전압 생성기
1100: 호스트 1200: SSD
1210: SSD 컨트롤러 1220: 버퍼 메모리
1230: 불휘발성 메모리 장치
2100: 불휘발성 메모리 2200: 메모리 컨트롤러
2210: CPU 2220: 호스트 인터페이스
2230: SRAM 2240: ECC
2260: 메모리 인터페이스
3100: 불휘발성 메모리 3200: 메모리 컨트롤러
4100: 불휘발성 메모리 4200: 메모리 컨트롤러
4300: 모뎀 4400: 시스템 버스
4500: 마이크로 프로세서 4600: 유저 인터페이스
4700: 배터리 100: nonvolatile memory device 110: memory cell array
120: Row decoder 130: Data input / output circuit
140: control logic 150: voltage generator
1100: Host 1200: SSD
1210: SSD controller 1220: buffer memory
1230: Nonvolatile memory device
2100: nonvolatile memory 2200: memory controller
2210: CPU 2220: Host interface
2230: SRAM 2240: ECC
2260: Memory interface
3100: nonvolatile memory 3200: memory controller
4100: nonvolatile memory 4200: memory controller
4300: modem 4400: system bus
4500: Microprocessor 4600: User Interface
4700: Battery
Claims (16)
제 1 블록에 대한 읽기 명령을 수신하는 단계;
상기 제 1 블록의 읽기 횟수를 나타내는 블록 읽기 카운트에 따라, 상기 제 1 블록의 논리 페이지들 중 적어도 하나의 논리 페이지의 속성을 결정하는 단계;
상기 결정된 속성에 따라, 상기 적어도 하나의 논리 페이지를 선택적으로 제 2 블록에 프로그램하는 단계; 및
상기 프로그램 후에, 상기 적어도 하나의 논리 페이지의 대응하는(corresponding) 물리 주소를 나타내는 매핑 테이블을 업데이트하는 단계를 포함하는 데이터 관리 방법.A data management method for a nonvolatile memory device including a plurality of blocks,
Receiving a read command for a first block;
Determining an attribute of at least one logical page of the logical pages of the first block according to a block read count indicating a read count of the first block;
Selectively programming the at least one logical page in a second block according to the determined attribute; And
And after the program, updating a mapping table indicating a corresponding physical address of the at least one logical page.
상기 제 1 블록에 대한 읽기 명령을 수신하는 단계는,
상기 제 1 블록에 대한 읽기 명령에 응답하여, 상기 블록 읽기 카운트를 증가시키는 단계를 포함하는 데이터 관리 방법.The method according to claim 1,
Wherein the step of receiving a read command for the first block comprises:
And increasing the block read count in response to a read command for the first block.
상기 적어도 하나의 논리 페이지의 속성을 결정하는 단계는,
상기 블록 읽기 카운트를 기준 값과 비교하는 단계;
상기 비교 결과에 따라, 상기 적어도 하나의 논리 페이지의 페이지 읽기 정보를 갱신하는 단계; 및
상기 갱신된 페이지 읽기 정보를 참조하여, 상기 적어도 하나의 논리 페이지의 속성을 결정하는 단계를 포함하는 데이터 관리 방법.The method according to claim 1,
Wherein determining the attributes of the at least one logical page comprises:
Comparing the block read count with a reference value;
Updating page read information of the at least one logical page according to the comparison result; And
And determining an attribute of the at least one logical page with reference to the updated page read information.
상기 페이지 읽기 정보는 상기 적어도 하나의 논리 페이지의 읽기 횟수를 나타내는 페이지 읽기 카운트를 포함하는 데이터 관리 방법.The method of claim 3,
Wherein the page read information comprises a page read count that indicates the number of reads of the at least one logical page.
상기 페이지 읽기 정보를 갱신하는 단계는,
상기 블록 읽기 카운트가 상기 기준 값을 초과하면, 상기 제 1 블록에 대한 읽기 명령에 응답하여, 상기 페이지 읽기 카운트를 증가시키는 단계를 포함하는 데이터 관리 방법.5. The method of claim 4,
Wherein updating the page read information comprises:
And incrementing the page read count in response to a read command for the first block if the block read count exceeds the reference value.
상기 제 1 블록에 대한 읽기 명령은 상기 적어도 하나의 논리 페이지에 대한 읽기 명령을 포함하는 데이터 관리 방법.6. The method of claim 5,
Wherein the read command for the first block includes a read command for the at least one logical page.
상기 적어도 하나의 논리 페이지의 속성을 결정하는 단계는,
상기 페이지 읽기 카운트가 문턱 값(threshold value)보다 크면, 상기 적어도 하나의 논리 페이지의 속성을 핫페이지로 결정하는 단계를 포함하는 데이터 관리 방법.6. The method of claim 5,
Wherein determining the attributes of the at least one logical page comprises:
Determining an attribute of the at least one logical page as a hot page if the page read count is greater than a threshold value.
상기 페이지 읽기 정보는 상기 적어도 하나의 논리 페이지의 상대적인 읽기 빈도를 나타내는 읽기 페이스(read pace)를 포함하고,
상기 페이지 읽기 정보를 갱신하는 단계는,
상기 페이지 읽기 카운트에 따라 상기 읽기 페이스를 산출하는 단계를 포함하되,
상기 읽기 페이스는 수학식 〔읽기 페이스(read pace) 〓 페이지 읽기 카운트 ÷ (제 1 블록의 현재 논리적 읽기 시간) ― 제 1 블록의 초기 논리적 읽기 시간)〕에 의해 정의되는 데이터 관리 방법.6. The method of claim 5,
Wherein the page read information includes a read pace representing a relative read frequency of the at least one logical page,
Wherein updating the page read information comprises:
And calculating the read phase according to the page read count,
Wherein the read phase is defined by a formula [read pace = page read count ÷ (current logical read time of the first block) - initial logical read time of the first block)].
상기 적어도 하나의 논리 페이지의 속성을 결정하는 단계는,
상기 산출된 읽기 페이스가 문턱 값(threshold value)보다 크면, 상기 적어도 하나의 논리 페이지의 속성을 핫페이지로 결정하는 단계를 포함하는 데이터 관리 방법.9. The method of claim 8,
Wherein determining the attributes of the at least one logical page comprises:
And determining the attribute of the at least one logical page as a hot page if the calculated read phase is greater than a threshold value.
상기 적어도 하나의 논리 페이지의 속성을 결정하는 단계는,
상기 산출된 읽기 페이스를 참조하여, 상기 적어도 하나의 논리 페이지의 보정된 읽기 페이스를 산출하는 단계; 및
상기 보정된 읽기 페이스가 문턱 값(threshold value)보다 크면, 상기 적어도 하나의 논리 페이지의 속성을 핫페이지로 결정하는 단계를 포함하되,
상기 보정된 읽기 페이스는 〔보정된 읽기 페이스 〓 산출된 읽기 페이스 ― α×평균 읽기 페이스)〕에 의해 정의되고,
상기 평균 읽기 페이스는 상기 제 1 블록에 포함된 논리 페이지들 각각의 읽기 페이스들의 평균을 의미하고,
상기 α는 0 이상의 실수인 데이터 관리 방법.10. The method of claim 9,
Wherein determining the attributes of the at least one logical page comprises:
Calculating a corrected read phase of the at least one logical page with reference to the calculated read phase; And
Determining a property of the at least one logical page as a hot page if the corrected read phase is greater than a threshold value,
The corrected read phase is defined by [corrected read phase = calculated read phase -? Average read phase)],
Wherein the average read phase means an average of the read paces of each of the logical pages included in the first block,
And? Is a real number equal to or larger than zero.
상기 제 1 블록의 논리 페이지들은 상기 논리 페이지들 각각의 페이지 읽기 카운트의 크기 순서에 따라 제 1 그룹 또는 제 2 그룹으로 구분되고,
상기 불휘발성 메모리 장치는,
상기 제 1 블록의 블록 읽기 카운트 및 상기 제 1 그룹에 속한 논리 페이지들 각각의 페이지 읽기 카운트들을 저장하는 읽기 카운트 테이블을 포함하는 데이터 관리 방법. 5. The method of claim 4,
Wherein the logical pages of the first block are divided into a first group or a second group according to a size order of page read counts of the logical pages,
The nonvolatile memory device comprising:
And a read count table storing a block read count of the first block and page read counts of logical pages belonging to the first group.
상기 페이지 읽기 정보를 갱신하는 단계는,
제 1 블록에 대한 읽기 명령에 따라 읽어낼 페이지(이하, 대상 페이지라 함)가 상기 제 2 그룹에 포함되는지 판단하는 단계;
상기 판단 결과에 따라, 상기 제 1 블록의 논리 페이지들의 평균 페이지 읽기 카운트를 상기 대상 페이지의 읽기 카운트로 결정하는 단계;
상기 대상 페이지의 읽기 카운트를 상기 제 1 그룹의 최소 페이지 읽기 카운트와 비교하는 단계; 및
상기 최소 페이지 읽기 카운트와의 비교 결과에 따라, 상기 대상 페이지를 상기 제 1 그룹으로 결정하는 단계를 포함하는 데이터 관리 방법.12. The method of claim 11,
Wherein updating the page read information comprises:
Determining whether a page to be read (hereinafter referred to as a target page) is included in the second group according to a read command for the first block;
Determining an average page read count of the logical pages of the first block as a read count of the target page according to the determination result;
Comparing a read count of the target page with a minimum page read count of the first group; And
And determining the target page as the first group according to the comparison result with the minimum page read count.
상기 적어도 하나의 논리 페이지를 제 2 블록에 프로그램하는 단계는,
상기 적어도 하나의 논리 페이지의 읽기 정보를 참조하여, 상기 적어도 하나의 논리 페이지의 읽기 우선 순위를 결정하는 단계;
상기 읽기 우선 순위에 따라, 상기 복수의 블록 중 상기 제 2 블록을 상기 프로그램을 위해 할당하는 단계; 및
상기 적어도 하나의 논리 페이지를 상기 할당된 제 2 블록에 프로그램하는 단계를 포함하는 데이터 관리 방법.The method of claim 3,
Wherein programming the at least one logical page into a second block comprises:
Determining read priority of the at least one logical page with reference to read information of the at least one logical page;
Assigning the second block of the plurality of blocks for the program according to the read priority; And
And programming the at least one logical page into the allocated second block.
상기 적어도 하나의 논리 페이지는 상기 할당된 제 2 블록의 스페어(spare) 페이지에 프로그램되는 데이터 관리 방법.14. The method of claim 13,
Wherein the at least one logical page is programmed in a spare page of the allocated second block.
상기 매핑 테이블을 업데이트하는 단계는,
상기 적어도 하나의 논리 페이지의 상기 대응하는 물리 주소가 상기 적어도 하나의 논리 페이지가 프로그램된 상기 제 2 블록의 물리 페이지를 가리키도록 상기 매핑 테이블을 업데이트하는 단계를 포함하는 데이터 관리 방법.The method according to claim 1,
Wherein updating the mapping table comprises:
Updating the mapping table such that the corresponding physical address of the at least one logical page points to a physical page of the second block in which the at least one logical page is programmed.
상기 매핑 테이블을 업데이트 하는 단계는,
상기 적어도 하나의 논리 페이지가 저장된 상기 제 1 블록의 물리 페이지를 무효화(invalidation)하는 단계를 더 포함하는 데이터 관리 방법.
16. The method of claim 15,
Wherein updating the mapping table comprises:
Further comprising invalidating a physical page of the first block in which the at least one logical page is stored.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120143691A KR101430637B1 (en) | 2012-12-11 | 2012-12-11 | Nonvolatile memory device and method for managing data thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120143691A KR101430637B1 (en) | 2012-12-11 | 2012-12-11 | Nonvolatile memory device and method for managing data thereof |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140075396A true KR20140075396A (en) | 2014-06-19 |
KR101430637B1 KR101430637B1 (en) | 2014-08-18 |
Family
ID=51128128
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020120143691A KR101430637B1 (en) | 2012-12-11 | 2012-12-11 | Nonvolatile memory device and method for managing data thereof |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101430637B1 (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016069126A1 (en) * | 2014-10-29 | 2016-05-06 | Sandisk Technologies Inc. | Read scrub with adaptive read counter management |
KR20180003713A (en) * | 2016-06-30 | 2018-01-10 | 삼성전자주식회사 | Storage device including nonvolatile memory device and controller |
CN108877863A (en) * | 2017-05-16 | 2018-11-23 | 华邦电子股份有限公司 | Flash memory storage and its operating method |
US10255131B2 (en) | 2015-07-06 | 2019-04-09 | Samsung Electronics Co., Ltd. | Storage device including nonvolatile memory device |
EP4075284A1 (en) * | 2021-04-16 | 2022-10-19 | Samsung Electronics Co., Ltd. | Method and storage device for improving memory performance for intensive read workloads |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102282952B1 (en) | 2014-12-15 | 2021-07-30 | 삼성전자주식회사 | Operating method of storage device |
KR20160143259A (en) | 2015-06-05 | 2016-12-14 | 에스케이하이닉스 주식회사 | Memory system and operation method for the same |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100974954B1 (en) * | 2008-06-26 | 2010-08-10 | 에스디씨마이크로 주식회사 | Read-time Wear-Leveling Method in Storage System using Flash Memory Device |
KR101189766B1 (en) | 2008-12-22 | 2012-10-10 | 한국전자통신연구원 | Hot Data Management Based on Hit Counter from Data Servers in Parallelism |
-
2012
- 2012-12-11 KR KR1020120143691A patent/KR101430637B1/en active IP Right Grant
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016069126A1 (en) * | 2014-10-29 | 2016-05-06 | Sandisk Technologies Inc. | Read scrub with adaptive read counter management |
US9552171B2 (en) | 2014-10-29 | 2017-01-24 | Sandisk Technologies Llc | Read scrub with adaptive counter management |
US10255131B2 (en) | 2015-07-06 | 2019-04-09 | Samsung Electronics Co., Ltd. | Storage device including nonvolatile memory device |
KR20180003713A (en) * | 2016-06-30 | 2018-01-10 | 삼성전자주식회사 | Storage device including nonvolatile memory device and controller |
CN108877863A (en) * | 2017-05-16 | 2018-11-23 | 华邦电子股份有限公司 | Flash memory storage and its operating method |
CN108877863B (en) * | 2017-05-16 | 2020-08-04 | 华邦电子股份有限公司 | Flash memory storage device and operation method thereof |
EP4075284A1 (en) * | 2021-04-16 | 2022-10-19 | Samsung Electronics Co., Ltd. | Method and storage device for improving memory performance for intensive read workloads |
US11886741B2 (en) | 2021-04-16 | 2024-01-30 | Samsung Electronics Co., Ltd. | Method and storage device for improving NAND flash memory performance for intensive read workloads |
Also Published As
Publication number | Publication date |
---|---|
KR101430637B1 (en) | 2014-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101662827B1 (en) | Memory system selecting write mode of data block and data write method thereof | |
US11862263B2 (en) | Storage device and method of operating the same | |
KR102295208B1 (en) | Storage device dynamically allocating program area and program method thererof | |
CN107015886B (en) | Method of operating a storage device and method of operating a data processing system including the same | |
KR101430637B1 (en) | Nonvolatile memory device and method for managing data thereof | |
US9870836B2 (en) | Memory system and method of controlling nonvolatile memory | |
KR101734200B1 (en) | Memory system performing incremental merge operation and data write method thereof | |
US10339046B1 (en) | Data moving method and storage controller | |
US20110066899A1 (en) | Nonvolatile memory system and related method of performing erase refresh operation | |
US20150347291A1 (en) | Flash memory based storage system and operating method | |
KR20130032155A (en) | Data storage device and data management method thereof | |
US11366599B2 (en) | Storage device and operating method thereof | |
US11086795B2 (en) | Memory system, memory controller and operating method thereof | |
CN112650442B (en) | Memory system, memory controller and operating method | |
KR20210026431A (en) | Memory system, memory controller, and operating method | |
KR20210106757A (en) | Host, storage device and computing system having the same | |
KR20200132171A (en) | Memory system, memory controller and memory device | |
US20210034541A1 (en) | Memory system, memory control device, and memory control method | |
CN113703662A (en) | Memory system, memory controller and operating method thereof | |
KR20210041233A (en) | Memory system, memory controller, and operating method | |
KR20210012123A (en) | Memory system, memory controller, and operating method | |
KR20200123912A (en) | Memory system, memory controller and operating method of thereof | |
US11249838B2 (en) | Memory system, memory controller, and method of operating memory controller | |
CN114596898A (en) | Memory system and operating method thereof | |
KR20210028335A (en) | Memory system, memory controller, and operating method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
FPAY | Annual fee payment |
Payment date: 20160224 Year of fee payment: 6 |