KR20100055201A - Data programming device, and data programming method - Google Patents
Data programming device, and data programming method Download PDFInfo
- Publication number
- KR20100055201A KR20100055201A KR1020080114167A KR20080114167A KR20100055201A KR 20100055201 A KR20100055201 A KR 20100055201A KR 1020080114167 A KR1020080114167 A KR 1020080114167A KR 20080114167 A KR20080114167 A KR 20080114167A KR 20100055201 A KR20100055201 A KR 20100055201A
- Authority
- KR
- South Korea
- Prior art keywords
- block
- programming
- host
- data
- control unit
- Prior art date
- Legal status (The legal status 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 status listed.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
본 발명은 소거 횟수를 대신하여 프로그래밍 횟수를 이용하여 마모도 평준화를 수행하며, 메모리 셀을 제어하는 제어부의 구조를 단순화 시키고, 데이터 프로그래밍에 소요되는 과정과 시간을 감소시키는 플래시 메모리장치, 및 방법에 대한 것이다.The present invention relates to a flash memory device and a method for performing wear leveling using a programming number instead of an erase count, simplifying a structure of a control unit for controlling a memory cell, and reducing a process and time required for data programming. will be.
Description
본 발명은 플래시 메모리장치, 및 데이터 기록방법에 대한 것이다.The present invention relates to a flash memory device and a data writing method.
반도체 기술의 향상에 따라, 플래시 메모리를 이용하는 플래시 메모리장치가 종래의 기계식 하드디스크를 대체하는 추세에 있다.BACKGROUND With the development of semiconductor technology, flash memory devices using flash memory have tended to replace conventional mechanical hard disks.
플래시 메모리는 하드디스크와 같은 제자리 갱신(in-place update)이 불가능하고 데이터를 기록하기 전에, 기록대상 블록을 미리 소거(erase)하는 과정을 필요로 한다.The flash memory cannot perform an in-place update such as a hard disk and requires a process of erasing a block to be written beforehand before recording data.
또한, 플래시 메모리의 각 블록은 소거될 수 있는 한계를 갖는다. 플래시 메모리는 MLC(MultiLevel Cell) 방식의 칩일 경우 각 블록당 기록 가능한 횟수가 1만 번 정도이고, SLC(Single Level Cell) 방식의 칩일 경우에도, 10만 번을 넘지 않는다. 따라서, 플래시 메모리는, 각 블록에 대한 소거 횟수를 참조하여 소거 횟수가 적은 블록을 찾고, 소거 횟수가 적은 블록을 소거 후, 호스트에서 전송하는 데이터를 프로그래밍(기록)하며, 데이터를 프로그래밍 후, 데이터가 프로그래밍된 블록에 대한 소거횟수를 증가시키는 과정을 갖는다.In addition, each block of flash memory has a limit that can be erased. In the case of a MLC (MultiLevel Cell) chip, the flash memory has a recordable number of times of about 10,000 blocks, and a SLC (Single Level Cell) chip does not exceed 100,000. Therefore, the flash memory searches for blocks with fewer erase counts by referring to the erase count for each block, erases the blocks with fewer erase counts, and then programs (writes) data transmitted from the host, and after programming the data, Has a process of increasing the erase count for the programmed block.
플래시 메모리를 구성하는 각 블록에서 균등한 소거를 수행하는 마모도 평준화 방법은 크게 동적 마모도 평준화 방법과 정적 마모도 평준화 방법으로 구분된다.The wear leveling method for equally erasing each block constituting the flash memory is divided into a dynamic wear leveling method and a static wear leveling method.
동적 마모도 평준화 방법(Dynamic Wear Leveling)은 호스트의 데이터 기록 요구가 발생하였을 때, 플래시 메모리의 컨트롤러가 플래시 메모리 내에서 소거 횟수(Erase Cycle)가 가장 적은 블록을 선택하는 방법이다. Dynamic Wear Leveling is a method in which a controller of a flash memory selects a block having the least erase cycle in the flash memory when a host data write request occurs.
정적 마모도 평준화 방법(Static Wear Leveling)은 플래시 컨트롤러가 플래시 메모리 내에서 소거 횟수가 가장 적은 블록의 데이터를 소거 횟수가 가장 많은 블록으로 데이터를 복사하는 방법이다.Static wear leveling is a method in which the flash controller copies data from the least erased block in flash memory to the block with the highest erase count.
여기서, 동적 마모도 평준화 방법과 정적 마모도 평준화 방법은,Here, the dynamic wear leveling method and the static wear leveling method,
- 플래시 메모리에 데이터를 기록하기 전, 마모도 평준화를 위해 플래시 메모리의 컨트롤러가 매핑 테이블을 한 번 참조해야 하고,-Before writing data to the flash memory, the controller of the flash memory should refer to the mapping table once to level out wear,
- 플래시 메모리에 데이터를 기록 후, 소거 횟수를 +1 카운트하기 위해 매핑 테이블을 갱신해야 한다.After writing data to flash memory, the mapping table must be updated to count +1 erases.
즉, 플래시 메모리에 데이터를 한 번 기록할 때마다 두 번씩 매핑 테이블을 참조해야 한다. That is, every time data is written to flash memory, the mapping table must be referenced twice.
이러한 기록 과정에 의해 플래시 메모리에 데이터를 기록하는데 소요되는 과정과 시간이 증가함은 물론, 플래시 메모리의 컨트롤러 구조를 복잡하게 만드는 단점이 있다.Such a writing process increases the process and time required to write data to the flash memory, and also complicates the controller structure of the flash memory.
따라서, 본 발명의 목적은, 데이터 기록에 따른 시간을 감소시킴은 물론, 메모리 셀을 구성하는 각 블록을 제어하는 제어부의 구조를 단순화하는 플래시 메모리장치, 및 데이터 기록방법을 제공함에 있다.Accordingly, an object of the present invention is to provide a flash memory device and a data writing method that not only reduce the time required for data writing but also simplify the structure of a control unit for controlling each block constituting a memory cell.
상기한 목적은 본 발명에 따라, 복수의 블록으로 구성되는 적어도 하나의 메모리 셀, 상기 각 블록에 대한 프로그래밍 횟수를 구비하는 매핑 테이블을 형성하며, 기록대상 블록에 대해 프로그래밍을 수행할 때, 기록대상 블록에 대한 프로그래밍 횟수를 갱신하고, 상기 각 블록에 대한 프로그래밍 횟수를 토대로 상기 각 블록에 대한 마모도 평준화를 수행하는 제어부에 의해 달성된다.The above object is to form a mapping table having at least one memory cell composed of a plurality of blocks, the number of programming for each block, according to the present invention, and when programming for a block to be written, A control is performed by updating a programming number for a block and performing wear leveling on each block based on the programming number for each block.
상기한 목적은 본 발명에 따라, 적어도 하나의 메모리 셀 각각을 구성하는 복수의 블록들 중, 데이터 프로그래밍 횟수가 가장 적은 최소 블록을 선택하는 단계, 및 호스트의 데이터 기록 요청에 응답하여 상기 최소 블록의 프로그래밍 횟수를 갱신 후, 상기 최소 블록에 상기 데이터를 프로그래밍하는 단계에 의해 달성된다.According to the present invention, the object of the present invention is to select a minimum block having the least number of data programming, among a plurality of blocks constituting each of the at least one memory cell, and in response to a data write request from a host. After updating the number of programming, programming the data in the minimum block is achieved.
따라서, 본 발명은 메모리 셀을 제어하는 제어부의 구조를 단순화 시키며, 데이터 프로그래밍에 소요되는 시간을 감소시킨다.Therefore, the present invention simplifies the structure of the control unit for controlling the memory cell and reduces the time required for data programming.
이하, 도면을 참조하여 본 발명을 상세히 설명하도록 한다.Hereinafter, the present invention will be described in detail with reference to the accompanying drawings.
본 명세서에서 기술되는 플래시 메모리장치는 NAND 게이트, 또는 NOR 게이트를 이용하는 플래시 메모리장치일 수 있다. 또한, 본 발명에서 기술되는 플래시 메모리 장치는 SLC(Single Level Cell) 방식, 또는 MLC(Multi Level Cell) 방식에 따라 칩을 구비하는 플래시 메모리장치일 수 있다.The flash memory device described herein may be a flash memory device using a NAND gate or a NOR gate. In addition, the flash memory device described in the present invention may be a flash memory device having a chip according to an SLC (Single Level Cell) method or a MLC (Multi Level Cell) method.
본 발명은, 어떤 종류의 메모리 셀을 이용하는가에 따라 그 기술적 사상이 영향을 받지 않는다. 따라서, 본 발명에서 언급되는 메모리 셀은 NAND 게이트나 NOR 게이트 방식의 플래시 메모리 칩을 이용할 수 있으며, 마찬가지로, SLC 방식에 따른 메모리 칩이거나, MLC 방식에 따른 칩이 적용되어도 무방하므로 따로 구분하여 설명하지 않는다. The present invention is not affected by the type of memory cell used. Therefore, the memory cell referred to in the present invention may use a flash memory chip of a NAND gate or a NOR gate method, and likewise, a memory chip according to the SLC method or a chip according to the MLC method may be applied. Do not.
또한, 이하의 설명에서는 메모리 셀을 제어하는 컨트롤러를 제어부라 하고, 제어부를 구성하는 구성요소에 대한 접미사로서 "모듈", 또는 "부"가 사용될 수 있다. In the following description, a controller for controlling a memory cell is referred to as a controller, and a "module" or a "unit" may be used as a suffix to components constituting the controller.
본 명세서에서 사용되는 구성요소, 및 그에 대한 접미사는 본 명세서 작성의 용이함만을 고려하여 부여되는 것으로, 상기 "모듈", 및 "부"는 상호 혼용되어 사용될 수 있다.Components used in the present specification, and suffixes thereof are given only in consideration of ease of preparation of the present specification, and the "module" and "unit" may be used interchangeably.
본 명세서에서 기술되는 "플래시 메모리장치"는 SSD(Solid State Disk)로 구현되거나, 임베디드 장치에서 비 휘발성 저장매체의 역할을 수행할 수 있다. 따라서, 본 명세서에서 기술되는 플래시 메모리장치는 퍼스널 컴퓨터, 서버, 노트북, PDA(Personal Digital Assistant), PMP(Personal Media Player), 비디오 게임기, 휴대단말기(mobile phone), 및 기타 데이터 저장을 위한 다양한 장치에 적용될 수 있다.The "flash memory device" described herein may be implemented as a solid state disk (SSD) or may serve as a nonvolatile storage medium in an embedded device. Accordingly, the flash memory device described herein may be a personal computer, a server, a notebook computer, a personal digital assistant (PDA), a personal media player (PMP), a video game machine, a mobile phone, and various devices for storing data. Can be applied to
도 1은 본 발명에 따른 플래시 메모리장치와 호스트의 접속관계에 대한 개념도를 도시한다.1 is a conceptual diagram illustrating a connection relationship between a flash memory device and a host according to the present invention.
도 1을 참조하면, 본 발명에 따른 플래시 메모리장치(100)는 호스트(50)에 접속되어 사용되며, 호스트(50)가 부팅될 때, 호스트(50)와 데이터 전송 방식을 협의하고, 협의된 데이터 전송 방식에 따라 상호 데이터 전송을 처리한다.Referring to FIG. 1, the
먼저, 호스트(50)가 부팅될 때, 프로세서(CPU)(51)는 바이오스(BIOS)(52)를 통해 플래시 메모리장치(SSD)(100)에 대한 장치 정보를 획득한다. 바이오스(52)는 호스트(50)에 장착되는 각종 하드웨어 장치에 대한 장치 정보를 구비하며, 호스트(50)가 부팅될 때, 각종 하드웨어 장치 정보를 프로세서(51)로 전송한다. 다음으로, 프로세서(51)는 플래시 메모리장치(100)의 존재를 인식하고, 플래시 메모리장치(100)가 사용 가능한지를 확인한다(S1). 플래시 메모리장치(100)의 제어부(120)는 호스트(50)에 대해 사용 가능함을 응답하며(S2), 호스트(50)와 데이터 전송을 위한 주소 체계를 협의한다(S3). CHS 주소 체계는 바이오스(52)가 하드디스크 드라이브의 실린더(Cylinder), 헤드(Head), 섹터(Sector)정보를 저장해두고, 호스트(50) 측 프로세서(51)가 CHS 정보를 이용하여 하드디스크 드라이브와 데이터 통신을 수행하는 주소 체계를 의미한다.First, when the
LBA(Logical Block Addressing) 주소 체계는 하드디스크 드라이브의 첫 번째 섹터에 일렬번호를 매긴 뒤, 그 다음번 일련번호를 그 다음번 섹터에 할당하여 주소를 형성하는 주소 체계를 의미한다. 본 명세서는 현재 가장 널리 이용되는 LBA 주소 체계를 기준으로 설명을 진행하도록 한다.Logical Block Addressing (LBA) addressing refers to an addressing system that assigns a serial number to the first sector of a hard disk drive and then assigns the next serial number to the next sector to form an address. This specification will be described based on the currently widely used LBA address system.
호스트(50)와 플래시 메모리장치(100)의 제어부(120)가 상호 인식하고, 데이터 전송을 위한 주소 체계에 대한 협의가 종료되면, 호스트(50)는 플래시 메모리장치(100)로 데이터 읽기, 쓰기, 삭제, 및 기타 다양한 제어 명령어(command)를 전송할 수 있으며(S4)), 플래시 메모리장치(100)는 호스트(50)의 제어 명령어(command)에 대한 응답(response)을 수행한다(S5). 플래시 메모리장치(100)의 응답은 호스트(50)가 원하는 데이터를 읽거나, 쓰거나, 삭제했을 때, 호스트(50)로 데이터를 전송하거나, 호스트(50)의 제어 명령어(commnand)에 대한 처리 결과를 호스트(50)로 전송하는 것 중 하나에 해당한다.When the
한편, 플래시 메모리장치(100)는 호스트(50)가 제어 명령어(command)를 전송하기 전, 메모리 셀(140)을 구성하는 각 블록에 대해 매핑테이블을 형성한다.Meanwhile, the
메모리 셀(140)은 복수의 블록으로 구성되며, 각 블록은 기계식 하드디스크 드라이브와는 달리 실린더, 헤더, 및 섹터의 기준으로 구획되지 않는다. 따라서, 현재도 널리 사용되는 하드디스크 드라이브를 대신하여 호스트(50)와 데이터 통신을 수행하기 위해서는 각 물리적인 블록을 호스트(50)의 논리 주소체계와 대응시켜야 하며, 통상 "매핑 테이블"을 이용한다. 본 발명에서, 매핑 테이블은 복수로 구획되어 복수의 부분 매핑 테이블을 형성하고, 각 부분 매핑 테이블은 각 블록(140a ∼ 140n)에 분산되어 저장된다.The
제어부(120)는 각 블록(140a ∼ 140n)에 분산되어 저장되어있는 부분 매핑 테이블을 모아 하나의 전체 매핑 테이블을 형성하며, 형성된 전체 매핑 테이블은 메모리(150)에 저장한다. 이후, 제어부(120)은 호스트(50)가 논리 주소를 이용하여 제어 명령어(command)를 전송하면, 전체 매핑 테이블을 이용하여 해당하는 블록을 대응시킨다.The
이때, 전체 매핑 테이블은 각 블록(140a ∼ 140n)의 마모도를 참조하여 호스트(50)의 논리주소(LBA)와 대응하는 실제 물리 블록의 주소(PBA)를 변경할 수 있다. In this case, the entire mapping table may change the address PBA of the physical block corresponding to the logical address LBA of the
통상의 경우 각 블록(140a ∼ 140n)을 프로그래밍하기 전, 블록을 소거하는 횟수를 참조하여 마모도 평준화를 수행하나, 본 발명에서는 소거 횟수 대신, 프로그래밍 횟수를 참조하여 마모도 평준화를 수행한다. 프로그래밍 횟수를 이용하여 마모도 평준화를 수행할 경우, Generally, before programming each
제어부(120)는 LBA에 해당하는 블록을 프로그래밍을 할 때, 프로그래밍 횟수를 카운트하며, 프로그래밍이 종료된 이후에는 마모도 평준화를 위한 카운트를 수행하지 않는다. 따라서, 제어부(120)는 종래에 비해 구조가 단순해지고 구현이 용이해짐은 물론, 마모도 평준화를 위한 카운트 과정이 단순해지므로 처리 속도도 증가한다. 이에 대한 내용은 추후 도 2 ∼ 도 6을 참조하여 상세히 설명하도록 한다.When programming the block corresponding to the LBA, the
도 2는 본 발명의 일 실시예에 따른 플래시 메모리장치의 블록개념도를 도시한다.2 is a block diagram of a flash memory device according to an embodiment of the present invention.
도 2를 참조하면, 본 발명에 따른 플래시 메모리장치는 호스트 인터페이스부(110), 제어부(120), 메모리 인터페이스부(130), 및 메모리 셀(140)을 포함한다.2, a flash memory device according to the present invention includes a
메모리 셀(140)은 하나, 또는 복수개로 구성될 수 있다. 도면에서, 메모리 셀(140)은 n개 이며, 제1메모리셀(140a) ∼ 제n메모리셀(140n)을 도시한다.One or
각 메모리 셀(140a ∼ 140n)은 기록, 재기록, 및 삭제가 가능한 플래시 칩으로 구성된다. 각 메모리 셀(140a ∼ 140n)은 호스트(30)의 논리주소(LBA : Logical Block Address)에 대응하는 고유의 물리주소(PBA : Physical Block Address)를 갖는다. Each
물리 주소(PBA)는 호스트(50) 측 논리주소(LBA)와 1:1 대응하나, 블록의 마모도가 평균값을 넘을 경우, 블록은 타 LBA로 변경될 수 있다. 변경 사항은 메모리(150)에 형성되는 전체 매핑 테이블에 반영된다. The physical address PBA corresponds 1: 1 with the logical address LBA on the
호스트 인터페이스부(110)는 호스트(50)와 제어부(120) 사이에 전송되는 데이터의 형태를 변환한다. 예를들어, 호스트(50)가 SATA(Serial-ATA) 방식의 인터페이스를 통해 플래시 메모리장치와 인터페이스를 수행할 경우, 호스트 인터페이스부(110)는 제어부(120)에서 전송되는 데이터를 SATA 방식에 따라 변환하여 호스트(50)로 제공한다. 호스트 인터페이스부(110)는 호스트(50)의 인터페이스 방식에 따라 SATA1, SATA2, SCSI, 및 IDE 인터페이스 등을 지원할 수 있으며, 이 외에도, 호스트(50)가 필요로 하는 인터페이스에 따라 다양한 인터페이스가 적용될 수 있다.The
또한, 호스트 인터페이스부(110)는 호스트(50)가 전송하는 명령어를 수신하 고, 수신된 명령어를 제어부(120)로 제공한다. 호스트(50)가 전송하는 명령어는 읽기, 쓰기 명령이 주류를 이루나, 레이드 지원을 위한 명령어, 및 기타 플래시 메모리장치(100)에 대한 상태정보를 요청하는 명령어가 될 수 있다. In addition, the
제어부(120)는 호스트 인터페이스부(110)를 통해 호스트(50)의 각종 명령어를 수신하고, 수신된 명령어를 수행한다. 또한, 제어부(120)는 호스트 인터페이스부(110)를 통해 수신된 명령어의 처리 결과를 호스트(50)로 리턴하며, 호스트(50)가 데이터를 요청할 경우, 메모리 셀(140)에서 데이터를 독출하고, 호스트 인터페이스부(110)를 통해 독출된 데이터를 호스트(50)로 제공한다.The
제어부(120)는 각 메모리 셀(140a ∼ 140n)을 복수의 블록으로 구획하고, 전체 매핑 테이블을 참조하여 각 블록의 물리주소(PBA)를 호스트(50) 측 논리 주소에 대응시킨다. The
또한, 제어부(120)는 각 블록(141a ∼ 143n)의 마모도를 참조하여 호스트(50)가 자주 호출하는 논리주소(LBA)에 대응하는 블록의 물리주소(PBA)를 변경하여 각 블록(140a ∼ 140n)이 골고루 마모되도록 한다. In addition, the
이때, 제어부(120)는 각 메모리 셀(140a ∼ 140n)에 대한 마모도를 참조하여 논리주소와 물리주소의 대응관계를 변경하거나, 각 메모리 셀(140a ∼ 140n) 중 어느 하나에 포함되는 블록 내에서 논리주소와 물리주소의 대응관계를 변경할 수 있다. At this time, the
예컨대 제어부(120)는 메모리 셀(140a)이 가장 많이 마모되는 메모리 셀이라고 판단할 경우, 메모리 셀(140a)에 대한 블록(141a ∼ 141n))에 대해 마모도 평준 화를 수행할 수 있다.For example, when the
즉, 제어부(120)는,That is, the
- 마모도가 가장 높은 메모리 셀(예컨대 참조부호 "140a")을 중심으로 마모도 평준화를 수행하거나,Perform wear leveling around the highest wear memory cell (e.g., "140a"), or
- 전체 메모리 셀(140a ∼ 140n)을 구성하는 모든 블록(141a ∼ 143n)에 대해 마모도 평준화를 수행할 수 있다.Wear leveling can be performed for all
본 발명의 전반에 걸쳐 마모도 평준화는 개별 메모리 셀(예컨대 참조부호 "140a")에 대해 수행되거나, 전체 메모리 셀(140a ∼ 140n)을 구성하는 전체 메모리 셀(141a ∼ 143n)에 대해 수행될 수 있다.Throughout the present invention, wear leveling may be performed for individual memory cells (eg, reference numeral “140a”) or for all
바람직하게는, 제어부(120)는 마모도를 평준화하기 위한 FTL 처리부(121)를 구비한다. FTL 처리부(121)는 매핑 테이블(mapping table)을 이용하여 프로그래밍 횟수가 가장 적은 블록을 최소 블록으로 설정하며, 호스트(50)에서 데이터 기록 요청이 발생할 경우, 최소 블록에 데이터 기록을 요청한다.Preferably, the
이때, 최소블록은,In this case, the minimum block is,
- 프로그래밍 횟수가 최소인 블록,-The block with the least number of programming,
- 미사용 블록, 및Unused blocks, and
- 프로그래밍 횟수에 대한 평균값보다 프로그래밍 횟수가 적은 블록이 해당될 수 있다.Blocks with fewer programming times than the average value for the number of programming may correspond.
여기서, 프로그래밍 횟수는, 어느 블록에 데이터를 몇 번 기록했는가를 의미하므로, FTL 처리부(121)는 최소 블록을 선택 후, 최소 블록에 대한 프로그래밍 횟 수를 +1 처리 후, 곧바로 최소 블록에 대해 데이터 기록 명령을 전달할 수 있다. In this case, since the number of programming means which data has been written in which block, the
따라서, FTL 처리부(121)는 최소 블록에 대한 데이터 기록이 수행된 후, 부가되는 처리과정(예컨대 소거 횟수 갱신)을 필요로하지 않는다. 이러한 특징은 FTL 처리부(121), 및 FTL 처리부(121)를 포함하는 제어부(120)의 구조와 처리 과정을 단순화한다.Therefore, the
이때, FTL 처리부(121)가 참조하는 매핑 테이블은 제어부(120) 내에 마련되거나, 제어부(120)와 연결되는 별도의 메모리(미 도시)에 위치할 수 있으며, 각 메모리 셀(140a ∼ 140n)의 일 영역을 이용할 수도 있다.In this case, the mapping table referenced by the
각 메모리 셀(140a ∼ 140n)을 구성하는 각 블록(141a ∼ 143n)은 데이터를 프로그래밍 하기 전, 기록 대상 블록을 소거하는 과정을 필요로 하나, 기록 대상 블록을 프로그래밍 후, 소거 횟수를 매핑 테이블에 기록하는 과정은 필요로 하지 않는다. Each
메모리 인터페이스부(130)는 제어부(120)에서 각 메모리 셀(140a ∼ 140n)로 제공되는 명령어를 전송하고, 각 메모리 셀(140a ∼ 140n)에서 독출된 데이터를 제어부(120)로 제공한다.The
도 3은 본 발명에 따른 데이터 기록방법을 도시하며, 도 4는 본 발명과 비교하기 위한 통상의 데이터 기록방법을 도시한다.3 shows a data recording method according to the present invention, and FIG. 4 shows a conventional data recording method for comparison with the present invention.
먼저, 도 3을 참조하면, 본 발명에 따른 데이터 기록방법은 통상의 마모도 평준화(wear leveling) 방법과는 달리 메모리 셀을 구성하는 각 블록에 대한 프로그래밍 횟수를 참조한다. 프로그래밍 횟수는 데이터를 블록에 기록하는 횟수를 나 타내는 것으로, 블록에 데이터를 기록하기 전 블록을 소거하는 횟수(소거 횟수)를 참조하는 통상의 데이터 기록방법과 본 발명이 구분되는 중요한 특징에 해당한다.First, referring to FIG. 3, the data writing method according to the present invention refers to the number of programming for each block constituting a memory cell, unlike a general wear leveling method. The number of programming refers to the number of times data is written to the block, which corresponds to the important feature that distinguishes the present invention from the conventional data recording method which refers to the number of times of erasing the block (number of erases) before writing the data to the block. .
본 발명이 마모도 평준화를 위해 프로그래밍 횟수를 이용함에 따라, 본 발명에서 제안하는 데이터 기록방법은 통상의 마모도 평준화 방법과는 다른 형태의 매핑 테이블을 이용한다. As the present invention uses the number of programming for wear leveling, the data recording method proposed by the present invention uses a mapping table that is different from the general wear leveling method.
본 발명에 따른 매핑 테이블은 메모리 셀을 구성하는 각 블록에 대한 프로그래밍 횟수를 구비한다. 프로그래밍 횟수는 소거횟수와는 달리, 데이터를 블록에 프로그래밍 하기전 갱신 가능하다. The mapping table according to the present invention has a programming number for each block constituting a memory cell. Unlike the erase count, the programming count can be updated before programming the data into the block.
본 발명에 따른 데이터 기록방법은 프로그래밍 횟수를 참조하여 프로그래밍이 가장 적게 이루어진 최소 블록을 찾고, 최소 블록에 대한 프로그래밍 횟수를 +1 처리 후, 최소 블록에 대한 프로그래밍 횟수가 기록된 매핑 테이블을 갱신한다.The data recording method according to the present invention finds the minimum block with the least programming with reference to the number of programming, and after processing +1 the programming number for the minimum block, updates the mapping table in which the programming number for the minimum block is recorded.
즉, 본 발명에 따른 데이터 기록방법은, 호스트의 데이터 기록 명령에 대해, 프로그래밍 횟수를 참조하여 최소 블록을 선택하고, 최소 블록에 대한 프로그래핑 횟수를 갱신하며, 프로그래밍 명령을 각 메모리 셀(140a ∼ 140n)에 전송하는 처리 과정을 갖는다.That is, in the data writing method according to the present invention, for the data write command of the host, the minimum block is selected with reference to the number of programming, the number of programming for the minimum block is updated, and the programming command is assigned to each
다음으로, 도 4를 참조하면, 종래의 데이터 기록방법은 호스트의 데이터 기록명령에 응답하여 각 메모리 셀(140a ∼ 140n)을 구성하는 각 블록의 소거 횟수를 참조하여 마모도 평준화를 수행한다.Next, referring to FIG. 4, the conventional data writing method performs wear leveling by referring to the erase count of each block constituting each of the
종래의 데이터 기록방법은, 소거 횟수를 참조하여 소거 횟수가 적은 블록을 기록 대상 블록으로 선택하고, 기록 대상 블록에 대해 프로그래밍 명령을 수행한 다. 그러나, 종래의 마모도 평준화 방법은 기록 대상 블록에 대해 프로그래밍 명령을 전송한 후, 블록의 프로그래밍이 종료되면 매핑 테이블의 소거 횟수를 갱신한다. 따라서, 소거 횟수를 이용한 종래의 마모도 평준화 방법은 호스트의 기록 명령에 대한 처리과정이 본 발명에 비해 오래 걸리는 것은 물론, 처리 과정이 증가하는 만큼 메모리 셀을 제어하는 제어부의 구조가 복잡해진다.In the conventional data recording method, a block having a small erase count is selected as a recording target block with reference to the erase count, and a programming command is executed for the recording target block. However, the conventional wear leveling method transmits a programming command for a block to be written, and updates the erase count of the mapping table when programming of the block is completed. Therefore, in the conventional wear leveling method using the erase count, the process of writing a host's write command takes longer than that of the present invention, and the structure of the control unit that controls the memory cell is increased as the process increases.
도 5는 본 발명에 따른 매핑 테이블의 구조를 나타내고, 도 6은 본 발명과 대비되는 종래의 매핑 테이블 구조를 나타낸다.5 shows a structure of a mapping table according to the present invention, and FIG. 6 shows a conventional mapping table structure compared with the present invention.
먼저, 도 5를 참조하면, 본 발명에 따른 매핑 테이블은, 호스트(50)의 논리 주소(LBA0 ∼ LBAn), 호스트의 논리 주소에 대응되는 물리 주소(PBA0 ∼ PBAn), 및 각 블록에 대한 프로그래밍 횟수(Program cycle)을 구비한다. First, referring to FIG. 5, the mapping table according to the present invention includes programming of logical addresses LBA0 to LBAn of a
호스트(50)의 논리 주소는 호스트(50)가 제어부(120)로 전송하는 주소 체계에 해당한다. 호스트(50)의 주소 체계는 각 블록 단위로 관리되는 각 메모리 셀(140a ∼ 140n)의 주소 체계와는 다르며, 통상 운영체제의 주소 체계에 따라 결정된다.The logical address of the
물리 주소(PBA0 ∼ PBAn)는 호스트(50)의 논리 주소에 대응되는 각 블록(예컨대 참조부호 141a)의 주소를 나타낸다. 각 물리 주소(PBA0 ∼ PBAn)에 해당하는 블록은 호스트(50)에 의해 데이터를 기록한 횟수에 의해 마모도가 결정된다. The physical addresses PBA0 to PBAn represent addresses of respective blocks (for example,
단위 면적당 저장 용량이 많고 가격이 저렴한 MLC 방식의 플래시 메모리가 각 메모리 셀(140a ∼ 140n)을 구성할 경우, 대략 10,000 번의 기록이 가능하다. 각 메모리 셀(140a ∼ 140n)을 구성하는 각 블록(141a ∼ 143n)의 마모도를 판단하 기 위한 프로그래밍 횟수(program cycle)는 논리 주소, 및 각 블록(141a ∼ 143n)의 물리 주소와 연동되어 저장된다.When the MLC type flash memory having a large storage capacity per unit area and low cost constitutes each
다음으로, 도 6을 참조하면, 종래의 매핑 테이블도 호스트 어드레스, 물리 어드레스를 갖고 있으나, 각 블록에 대한 물리 어드레스는 소거 횟수와 연동하여 저장되는 구조를 가지며, 이 구조가 본 발명과 대비되는 큰 차이점을 발생한다.Next, referring to FIG. 6, although the conventional mapping table also has a host address and a physical address, the physical address for each block has a structure stored in association with the erase count, and this structure is large compared with the present invention. Causes a difference.
소거 횟수를 이용하여 마모도 평준화를 할 경우, 플래시 메모리장치는 기록 대상 블록에 대한 프로그래밍을 처리한 후, 매핑 테이블에 소거 횟수를 +1하여 갱신한다. 따라서, 도 5에 따른 매핑 테이블을 이용하는 통상의 데이터 기록방법은 프로그래밍 횟수를 +1 한 후, 즉각 프로그래밍을 수행하는 본 발명에 비해 처리 단계가 더 추가되며, 매핑 테이블은 두 번 참조된다.When the wear level is equalized by using the erase count, the flash memory device processes programming for the block to be written, and updates the erase count by +1 in the mapping table. Therefore, in the conventional data recording method using the mapping table according to FIG. 5, a processing step is further added compared to the present invention which performs programming immediately after +1 programming times, and the mapping table is referred to twice.
소거 횟수를 이용하여 데이터를 기록할 경우, 종래의 플래시 메모리장치는 마모도 평준화를 위해 매핑 테이블을 한 번 참조하고, 데이터를 프로그래밍 후, 재차 참조해야 한다. 즉, 제어부(120)의 구조와 처리 단계가 복잡해진다.When data is written using the erase count, the conventional flash memory device needs to refer to the mapping table once for leveling wear, and to refer again after programming the data. That is, the structure and processing steps of the
도 7은 본 발명의 일 예에 따른 흐름도를 나타낸다.7 shows a flowchart according to an example of the present invention.
먼저, 제어부(120)는 호스트 인터페이스부(110)를 통해 호스트(50)의 명령을 수신하며, 호스트(50)의 명령 중, 데이터 기록명령이 존재하는지를 판단한다(S201). 만일, 호스트(50)에서 전달된 명령이 각 메모리 셀(140a ∼ 140n)에 저장된 데이터 독출을 위한 명령이 아닐 경우, 각 메모리 셀(140a ∼ 140n)에 대한 제어 명령인지를 판단하고(S206), 제어 명령일 경우, 제어 명령을 수행한다(S207). 제어 명령은 플래시 메모리장치(100)가, 데이터 기록을 수행 가능한지의 여부를 확 인하는 명령, 데이터 기록이 완료되었는지를 확인하는 명령, 및 무응답 블록에 대한 응답 요청을 위한 명령어등이 있으며, 플래시 메모리장치(100)를 레이드(RAID)로 구성할 경우, 데이터 분배, 및 데이터 검증과 같은 명령어들이 더 포함될 수 있다.First, the
다음으로, 제어부(120)는 호스트(50)에서 제공되는 명령이 블록에 대한 데이터 기록명령일 경우, 매핑 테이블을 참조하여(S202), 데이터 기록횟수가 최소인 최소 블록을 선택한다(S203). 최소 블록은 아래의 두 가지 방법에 의해 선택될 수 있다.Next, when the command provided from the
- 각 블록에 대한 데이터 기록횟수를 비교하여 데이터 기록횟수가 가장 적은 블록을 최소 블록으로 선택하는 방법, 및-Selecting a block having the smallest number of data writes as the minimum block by comparing the number of data writes for each block; and
- 각 블록에 대한 데이터 기록횟수에 대한 평균값을 구하고, 평균값보다 적은 기록횟수를 갖는 복수의 블록을 최소 블록으로 지정하며, 최소 블록들 중 하나를 선택하는 방법.Obtaining a mean value for the number of data writes for each block, specifying a plurality of blocks having a write count less than the average value as the minimum block, and selecting one of the minimum blocks.
한편, 최소 블록은 각 메모리 셀(140a ∼ 140n)들 중 마모도가 가장 높은 메모리 셀(140a ∼ 140n 중 어느 하나)을 기준으로 판단하거나, 전체 메모리 셀(140a ∼ 140n)을 구성하는 모든 블록(141a ∼ 143n)에 대해서 판단할 수 있다.Meanwhile, the minimum block is determined based on the
즉, 제어부(120)는 마모도가 가장 높은 메모리 셀(140a ∼ 140n 중 어느 하나)에 포함되는 블록들 중 마모도가 가장 큰 블록을 최소 블록으로 선택하거나, 전체 메모리 셀(140a ∼ 140n)을 구성하는 블록(141a ∼ 143n)에 대해 마모도가 가장 큰 블록을 최소 블록으로 판단할 수 있다.That is, the
제어부(120)는 데이터를 기록하고자 하는 최소 블록을 선택 후, 최소 블록에 대한 프로그래밍 횟수를 갱신한다. 프로그래밍 횟수의 갱신은, 매핑 테이블에 기록된 프로그래밍 횟수를 +1하여 갱신하는 것이 바람직하다.The
제어부(120)는 매핑 테이블에 대한 프로그래밍 횟수를 갱신 후, 즉각 최소 블록에 대해 데이터 기록 명령을 전송한다(S205). 이때, 제어부(120)는 최소 블록에 대한 데이터 기록작업이 종료된 후, 호스트(50)에서 기록명령이 전달되는지를 판단하며, 호스트(50)에서 다음 번 데이터의 기록을 요청할 경우, SS201 ∼ S205의 과정을 반복하여 다음 번 데이터의 기록을 수행한다. The
통상의 플래시 메모리장치와는 달리 본 발명에 따른 제어부(120)는 최소 블록에 대한 데이터 기록이 종료된 후, 매핑 테이블을 재차 갱신하거나 참조하지 않는다. 따라서, 제어부(120)가 데이터 기록을 위한 과정이 단순화되고, 단순화되는 만큼 제어부(120)의 구조도 단순하게 구현할 수 있다.Unlike a conventional flash memory device, the
또한, 이상에서는 본 발명의 바람직한 실시예에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해되어져서는 안될 것이다.In addition, although the preferred embodiment of the present invention has been shown and described above, the present invention is not limited to the specific embodiments described above, but the technical field to which the invention belongs without departing from the spirit of the invention claimed in the claims. Of course, various modifications can be made by those skilled in the art, and these modifications should not be individually understood from the technical spirit or the prospect of the present invention.
도 1은 본 발명에 따른 플래시 메모리장치와 호스트의 접속관계에 대한 개념도,1 is a conceptual diagram of a connection relationship between a flash memory device and a host according to the present invention;
도 2는 본 발명의 일 실시예에 따른 플래시 메모리장치의 블록개념도,2 is a block diagram of a flash memory device according to an embodiment of the present invention;
도 3은 본 발명에 따른 데이터 기록방법을 도시하며, 도 4는 본 발명과 비교하기 위한 통상의 데이터 기록방법을 나타내는 도면,3 shows a data recording method according to the present invention, and FIG. 4 shows a conventional data recording method for comparison with the present invention;
도 5는 본 발명에 따른 매핑 테이블의 구조를 나타내고, 도 6은 본 발명과 대비되는 종래의 매핑 테이블 구조를 나타내는 도면, 그리고5 shows the structure of a mapping table according to the present invention, FIG. 6 shows a conventional mapping table structure compared with the present invention, and
도 7은 본 발명의 일 예에 따른 흐름도를 나타낸다.7 shows a flowchart according to an example of the present invention.
*도면의 주요 부분에 대한 부호의 설명** Description of the symbols for the main parts of the drawings *
100 : 플래시 메모리장치 110 : 호스트 인터페이스부100: flash memory device 110: host interface unit
120 : 제어부 121 : FTL 처리부120: control unit 121: FTL processing unit
130 : 메모리 인터페이스부 140 : 메모리 셀130: memory interface unit 140: memory cell
Claims (19)
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020080114167A KR20100055201A (en) | 2008-11-17 | 2008-11-17 | Data programming device, and data programming method |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020080114167A KR20100055201A (en) | 2008-11-17 | 2008-11-17 | Data programming device, and data programming method |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| KR20100055201A true KR20100055201A (en) | 2010-05-26 |
Family
ID=42279718
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| KR1020080114167A Withdrawn KR20100055201A (en) | 2008-11-17 | 2008-11-17 | Data programming device, and data programming method |
Country Status (1)
| Country | Link |
|---|---|
| KR (1) | KR20100055201A (en) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20140057082A (en) * | 2012-11-02 | 2014-05-12 | 삼성전자주식회사 | Non-volatile memory system and host communicating with the same |
| US8996786B2 (en) | 2011-01-28 | 2015-03-31 | SK Hynix Inc. | Nonvolatile memory system and block management method |
| CN113253925A (en) * | 2021-04-30 | 2021-08-13 | 新华三大数据技术有限公司 | Method and device for optimizing read-write performance |
-
2008
- 2008-11-17 KR KR1020080114167A patent/KR20100055201A/en not_active Withdrawn
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8996786B2 (en) | 2011-01-28 | 2015-03-31 | SK Hynix Inc. | Nonvolatile memory system and block management method |
| KR20140057082A (en) * | 2012-11-02 | 2014-05-12 | 삼성전자주식회사 | Non-volatile memory system and host communicating with the same |
| CN113253925A (en) * | 2021-04-30 | 2021-08-13 | 新华三大数据技术有限公司 | Method and device for optimizing read-write performance |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US9520992B2 (en) | Logical-to-physical address translation for a removable data storage device | |
| JP5728672B2 (en) | Hybrid memory management | |
| US8250286B2 (en) | Block management method, and storage system and controller using the same | |
| KR100823171B1 (en) | Computer system with partitioned flash translation layer and partitioning method of flash translation layer | |
| KR101086876B1 (en) | Semiconductor storage system that manages spare area flexibly and its control method | |
| CN110603531A (en) | garbage collection | |
| US8296504B2 (en) | Data management method and flash memory storage system and controller using the same | |
| US12298902B2 (en) | Storage device including nonvolatile memory device and operating method of storage device | |
| KR20090077538A (en) | Semiconductor memory device and its wear management method | |
| JP2011192260A (en) | Semiconductor storage device | |
| US20100042775A1 (en) | Block management method for flash memory, and storage system and controller using the same | |
| KR20100012938A (en) | Solid state storage system with wear leveling and controlling method thereof | |
| US8667217B1 (en) | System for writing to memory | |
| US20200333982A1 (en) | Controller, operation method of the controller and memory system | |
| KR20120081351A (en) | Non-volitile memory device for performing ftl and method thereof | |
| US8423707B2 (en) | Data access method for flash memory and storage system and controller using the same | |
| KR20100055201A (en) | Data programming device, and data programming method | |
| KR20100062191A (en) | Flash device and flash device control mehtod | |
| KR20160119607A (en) | Data storage device and operating method thereof | |
| CN111309642B (en) | Memory, control method thereof and memory system | |
| KR20110096829A (en) | Semiconductor memory device and control method thereof | |
| US12254183B2 (en) | Storage device including non-volatile memory device and operating method of storage device | |
| TW202013191A (en) | Data storage device and control method for non-volatile memory | |
| KR20090113624A (en) | Solid state drive and its operation control method | |
| KR20100068905A (en) | Flash device and flash device control mehtod |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PA0109 | Patent application |
Patent event code: PA01091R01D Comment text: Patent Application Patent event date: 20081117 |
|
| PG1501 | Laying open of application | ||
| PC1203 | Withdrawal of no request for examination | ||
| WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |