KR102316532B1 - Run-time bad block management method of flash memory - Google Patents

Run-time bad block management method of flash memory Download PDF

Info

Publication number
KR102316532B1
KR102316532B1 KR1020210066200A KR20210066200A KR102316532B1 KR 102316532 B1 KR102316532 B1 KR 102316532B1 KR 1020210066200 A KR1020210066200 A KR 1020210066200A KR 20210066200 A KR20210066200 A KR 20210066200A KR 102316532 B1 KR102316532 B1 KR 102316532B1
Authority
KR
South Korea
Prior art keywords
data
page
block
data buffer
data stored
Prior art date
Application number
KR1020210066200A
Other languages
Korean (ko)
Inventor
윤기중
장문석
Original Assignee
한양대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한양대학교 산학협력단 filed Critical 한양대학교 산학협력단
Priority to KR1020210066200A priority Critical patent/KR102316532B1/en
Application granted granted Critical
Publication of KR102316532B1 publication Critical patent/KR102316532B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements

Landscapes

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

Abstract

Disclosed are a method and a system for managing a runtime bad block. According to one embodiment, the method for managing the runtime bad block includes: transmitting data stored in a data buffer to a page register in response to a program request; programming the data stored in the page register into a data block; transmitting the data stored in the page register to the data buffer when a runtime bad block caused by a program error in a specific page among a plurality of pages constituting the data block occurs in a program operation; copying data, which is stored up to at least one page located before the specific page in which the program error has occurred among the pages constituting the data block, to at least one page included in a preliminary block through the page register; and programming the data stored in the data buffer into at least one page located after the at least one page included in the preliminary block through the page register.

Description

플래시 메모리에서의 런타임 배드 블록 관리 방법{RUN-TIME BAD BLOCK MANAGEMENT METHOD OF FLASH MEMORY}RUN-TIME BAD BLOCK MANAGEMENT METHOD OF FLASH MEMORY

아래의 실시예들은 플래시 메모리에서의 런타임 배드 블록 관리 방법에 관한 것으로, 보다 상세하게는 데이터 버퍼(Data buffer)를 이용하는 런타임 배드 블록 관리 방법에 대한 기술이다.The following embodiments relate to a runtime bad block management method in a flash memory, and more particularly, a description of a runtime bad block management method using a data buffer.

플래시 메모리는 비휘발성 메모리로서 최소 단위인 메모리 셀에 몇 비트의 정보를 저장할 수 있는지에 따라 싱글 레벨 셀(Single Level Cell; SLC), 멀티 레벨 셀(Multi-Level Cell; MLC), 트리플 레벨 셀(Triple Level Cell; TLC) 등으로 분류된다. 각 메모리 셀의 상태는 플래시 메모리의 프로그램(쓰기)/소거(삭제) 동작에 의해서 변경되며 이진 데이터 '0' 또는 '1'을 구현할 수 있는 바, 메모리 셀의 집합은 플래시 메모리의 프로그램 동작 최소 단위인 페이지를 의미하며, 페이지의 집합은 플래시 메모리의 소거 동작 최소 단위인 데이터 블록을 의미한다.Flash memory is a non-volatile memory, and it is a single-level cell (SLC), a multi-level cell (MLC), a triple-level cell ( Triple Level Cell (TLC), etc. The state of each memory cell is changed by the program (write)/erase (erase) operation of the flash memory, and binary data '0' or '1' can be implemented. A set of memory cells is the smallest unit of program operation of the flash memory. In-page means, and a set of pages means a data block that is the smallest unit of an erase operation of a flash memory.

이러한 플래시 메모리는 메모리 셀의 상태를 변경시키는 프로그램 동작과 소거 동작의 횟수를 제한하고 있다. 그 이유는 제한된 횟수 이상의 프로그램/소거 동작이 수행되는 경우 의도한대로 메모리 셀의 상태가 변경되지 않는 가능성이 높아지기 때문이다. 이에, 제한된 횟수 이상으로 프로그램/소거 동작이 수행된 메모리 셀은 원본 데이터와 다른 형태로 데이터를 저장할 수 있는 바, 제한된 횟수 이상의 프로그램/소거 동작을 수행한 메모리 셀인 데이터 블록은 배드 블록으로 설정되어 접근이 금지되어야 한다.Such a flash memory limits the number of program operations and erase operations that change the state of the memory cell. The reason is that when the program/erase operation is performed more than a limited number of times, the probability that the state of the memory cell is not changed as intended increases. Accordingly, a memory cell on which program/erase operations have been performed more than a limited number of times can store data in a different form from the original data, and a data block, which is a memory cell that has undergone program/erase operation more than a limited number of times, is set as a bad block and accessed this should be banned

이와 같은 배드 블록은 제한된 횟수 이상의 프로그램/소거 동작 이 외에도 발생될 수 있다. 그러므로 프로그램/소거 동작 수행 후 플래시 메모리의 상태 레지스터가 읽혀 동작의 오류 여부가 확인되어야 한다. 상태 레지스터를 통해 프로그램/소거 동작 오류가 확인되면 해당 데이터 블록은 저하된 데이터 신뢰성을 갖는 바, 런타임 배드 블록(Run-time bad block)으로 판단될 수 있다.Such a bad block may be generated in addition to a limited number of program/erase operations. Therefore, after performing the program/erase operation, the status register of the flash memory should be read to check whether the operation is in error. When a program/erase operation error is checked through the status register, the corresponding data block has reduced data reliability and may be determined as a run-time bad block.

이처럼 프로그램/소거 동작 중 발생되는 런타임 배드 블록은 굿 블록으로 교체하고 접근을 막는 등 관리가 필요한 바, 컨트롤러와 연동되는 배드 블록 관리 모듈이 구비되어야 한다.As such, runtime bad blocks generated during program/erase operations need to be managed, such as replacing them with good blocks and blocking access, so a bad block management module interworking with the controller must be provided.

한편, NAND 플래시 메모리의 블록 영역을 설명하기 위한 도 1을 참조하면, 컨트롤러(110)는 가상 블록 영역을 의사 물리 블록 영역(Pseudo physical block area)에 일대일 대응시킴으로써, 물리 주소에 대한 개념으로 가상 주소를 사용할 수 있다. 이에, 컨트롤러(110)는 호스트 명령으로부터 받은 논리 주소를 가상 주소로 사상할 수 있다.On the other hand, referring to FIG. 1 for explaining the block area of the NAND flash memory, the controller 110 maps the virtual block area to a pseudo physical block area one-to-one, thereby representing a virtual address as a concept of a physical address. can be used Accordingly, the controller 110 may map the logical address received from the host command to the virtual address.

배드 블록 관리 모듈(120)은 데이터 블록에 대한 접근만을 허용하도록 하는 의사 물리 블록 영역을 제공할 수 있으며, 의사 물리 블록 영역이 데이터 블록과 배드 블록, 예비 블록으로 구성되는 NAND 물리 블록 영역에 사상되는 블록 사상 테이블을 정의할 수 있다. 따라서, 배드 블록 관리 모듈(120)은 의사 물리 블록 영역에 할당된 데이터 블록이 런타임 배드 블록으로 판단되면, 데이터 블록에 대응하는 의사 물리 블록을 예비 블록에 사상하여 배드 블록인 데이터 블록에 대한 접근을 막는다. 이를 통해 상위 주소 변환기는 주소 변환 알고리즘이나 가상 블록의 크기 등을 정의하고 관리함에 있어 런타임 배드 블록과 같은 변수를 고려하지 않아도 된다.The bad block management module 120 may provide a pseudo physical block area that allows only access to data blocks, in which the pseudo physical block area is mapped to a NAND physical block area composed of a data block, a bad block, and a spare block. A block mapping table can be defined. Accordingly, when the data block allocated to the pseudo-physical block area is determined to be a runtime bad block, the bad block management module 120 maps the pseudo-physical block corresponding to the data block to the spare block to access the data block that is the bad block. block In this way, the upper address translator does not need to consider variables such as runtime bad blocks when defining and managing the address translation algorithm or the size of virtual blocks.

런타임 배드 블록으로 판단된 데이터 블록에는 오류가 발생하기 이전에 정상적으로 프로그램된 데이터들이 존재할 수 있다. 따라서 배드 블록에 존재하는 기존 데이터들에 대해 예비 블록으로 저장된 순서를 유지하며 복사되는 과정이 수반된다. 기존 데이터 복사가 선행됨으로써 예비 블록은 런타임 배드 블록이 발생하기 직전의 데이터 블록과 동일한 상태가 된다. 데이터 복사 과정이 끝난 후 다시 프로그램에 실패한 데이터를 예비 블록에 프로그램 하는 것까지를 배드 블록 교체 과정으로 정의한다.In the data block determined as a runtime bad block, data normally programmed before an error occurs may exist. Accordingly, a process of copying existing data existing in a bad block while maintaining the order stored as a spare block is involved. By preceding copying of the existing data, the spare block is in the same state as the data block immediately before the runtime bad block occurs. After the data copy process is completed, the process of reprogramming the failed data into the spare block is defined as the bad block replacement process.

이와 같이 배드 블록으로 판단된 데이터 블록을 예비 블록으로 교체하는 기존의 기술은, 기존 배드 블록에 정상적으로 프로그램된 데이터를 복사하는 과정에서 페이지 레지스터에 저장된 데이터(프로그램에 실패한 데이터)가 오염되기 때문에, 데이터 복사 과정이 완료된 이후 데이터 버퍼에 저장 및 유지되고 있는 데이터를 페이지 레지스터로 다시 로드하고 해당 데이터를 예비 블록에 복사 및 프로그램하는 방식을 사용한다.As described above, in the existing technology of replacing a data block determined as a bad block with a spare block, the data stored in the page register (data that failed in the program) is contaminated in the process of copying normally programmed data into the existing bad block. After the copy process is completed, the data stored and maintained in the data buffer is loaded back into the page register, and the data is copied and programmed in the spare block.

따라서, 기존의 기술은 프로그램 동작이 정상적으로 완료될 때까지 프로그램 동작의 대상이 되는 데이터를 데이터 버퍼에 저장 및 유지해야 하는 단점을 갖는 바, 해당 단점으로 인해 시스템 전체의 성능이 저하되는 문제점도 갖게 된다.Therefore, the existing technology has a disadvantage in that data subject to a program operation must be stored and maintained in a data buffer until the program operation is normally completed. .

이에, 기존의 기술이 갖는 단점 및 문제점을 해결하기 위한 새로운 기술이 제안될 필요가 있다.Accordingly, it is necessary to propose a new technology for solving the disadvantages and problems of the existing technology.

일 실시예들은 프로그램 동작이 완료될 때까지 프로그램 동작의 대상이 되는 데이터를 데이터 버퍼에 저장 및 유지해야 하는 단점 및 해당 단점으로 인해 시스템 전체의 성능이 저하되는 문제점을 해결하고자, 프로그램 동작이 수행되기 이전에 데이터 버퍼에 저장된 데이터(프로그램 대상이 동작의 대상이 되는 데이터)를 삭제하여 프로그램 동작이 시작하기 직전에 데이터 버퍼의 저장 공간을 확보하는 런타임 배드 블록 관리 방법 및 시스템을 제안한다.In order to solve the problem that the data subject to the program operation must be stored and maintained in the data buffer until the program operation is completed, and the overall system performance due to the disadvantage, the program operation is performed. We propose a runtime bad block management method and system in which data previously stored in the data buffer (data for which the program target is the target of the operation) is deleted to secure the storage space of the data buffer immediately before the program operation starts.

특히, 일 실시예들은 배드 블록으로 판단된 데이터 블록을 예비 블록으로 교체하는 런타임 배드 블록 관리 동작 중 데이터 버퍼의 저장 공간을 확보하는 것이 가능하도록 런타임 배드 블록 발생시 페이지 레지스터에 저장된 데이터를 데이터 버퍼로 전송하는 동작을 수행하는 런타임 배드 블록 관리 방법 및 시스템을 제안한다.In particular, embodiments transmit data stored in a page register to a data buffer when a runtime bad block occurs so as to secure a storage space for a data buffer during a runtime bad block management operation of replacing a data block determined as a bad block with a spare block We propose a runtime bad block management method and system that performs

또한, 일 실시예들은 프로그램 동작이 완료될 때까지 프로그램 동작의 대상이 되는 데이터를 데이터 버퍼에 저장 및 유지함에 따라 발생되는 지연시간을 개선하고자, 배드 블록으로 판단된 데이터 블록을 예비 블록으로 교체하는 런타임 배드 블록 관리 동작 중 데이터를 예비 블록에 복사하는 동작과 프로그램하는 동작 각각을 비동기 처리하는 런타임 배드 블록 관리 방법 및 시스템을 제안한다.In addition, in order to improve the delay time caused by storing and maintaining the data that is the target of the program operation in the data buffer until the program operation is completed, one embodiment is to replace a data block determined as a bad block with a spare block. We propose a runtime bad block management method and system that asynchronously processes each of the operation of copying data to the spare block and the operation of programming during the runtime bad block management operation.

다만, 본 발명이 해결하고자 하는 기술적 과제들은 상기 과제로 한정되는 것이 아니며, 본 발명의 기술적 사상 및 영역으로부터 벗어나지 않는 범위에서 다양하게 확장될 수 있다.However, the technical problems to be solved by the present invention are not limited to the above problems, and may be variously expanded without departing from the technical spirit and scope of the present invention.

일 실시예에 따르면, 컴퓨터로 구현되는 런타임 배드 블록 관리 시스템에 의해 수행되는 런타임 배드 블록 관리 방법은, 프로그램 요청에 응답하여 데이터 버퍼에 저장된 데이터를 페이지 레지스터로 전송하는 단계; 상기 페이지 레지스터에 저장된 데이터를 상기 데이터 블록에 프로그램하는 단계; 상기 프로그램 동작에서 상기 데이터 블록을 구성하는 복수의 페이지들 중 특정 페이지에서의 프로그램 오류가 야기하는 런타임 배드 블록이 발생되는 경우, 상기 페이지 레지스터에 저장된 데이터를 상기 데이터 버퍼로 전송하는 단계; 상기 데이터 블록을 구성하는 상기 복수의 페이지들 중 상기 프로그램 오류가 발생된 상기 특정 페이지 이전에 위치하는 적어도 하나의 페이지까지 저장된 데이터를 상기 페이지 레지스터를 통해 예비 블록에 포함되는 적어도 하나의 페이지로 복사하는 단계; 및 상기 데이터 버퍼에 저장된 데이터를 상기 페이지 레지스터를 통해 상기 예비 블록에 포함되는 상기 적어도 하나의 페이지 이후에 위치하는 적어도 하나의 페이지에 프로그램하는 단계를 포함할 수 있다.According to an embodiment, a runtime bad block management method performed by a computer-implemented runtime bad block management system includes: transmitting data stored in a data buffer to a page register in response to a program request; programming the data stored in the page register into the data block; transmitting data stored in the page register to the data buffer when a runtime bad block caused by a program error in a specific page among a plurality of pages constituting the data block occurs in the program operation; copying data stored up to at least one page located before the specific page in which the program error occurs among the plurality of pages constituting the data block to at least one page included in the spare block through the page register; step; and programming the data stored in the data buffer into at least one page positioned after the at least one page included in the spare block through the page register.

일 측에 따르면, 상기 데이터 버퍼에 저장된 데이터를 페이지 레지스터로 전송하는 단계는, 상기 데이터 버퍼의 저장 공간을 확보하는 단계를 포함하는 것을 특징으로 할 수 있다.According to one aspect, the step of transferring the data stored in the data buffer to the page register may include securing a storage space of the data buffer.

다른 일 측에 따르면, 상기 데이터 버퍼의 저장 공간을 확보하는 단계는, 상기 프로그램 대상이 되는 데이터를 저장 및 유지하지 않고 삭제하여 상기 데이터 버퍼의 저장 공간을 확보하는 것을 특징으로 할 수 있다.According to another aspect, the securing of the storage space of the data buffer may include securing the storage space of the data buffer by deleting the program target data without storing and maintaining it.

또 다른 일 측에 따르면, 상기 페이지 레지스터에 저장된 데이터를 상기 데이터 버퍼로 전송하는 단계는, 상기 특정 페이지에 프로그램 되었어야 할 데이터를 상기 데이터 버퍼로 전송하는 단계인 것을 특징으로 할 수 있다.According to another aspect, the transmitting of the data stored in the page register to the data buffer may include transmitting data that should have been programmed in the specific page to the data buffer.

또 다른 일 측에 따르면, 상기 데이터 버퍼에 저장된 데이터를 상기 페이지 레지스터를 통해 상기 예비 블록에 포함되는 상기 적어도 하나의 페이지 이후에 위치하는 적어도 하나의 페이지에 프로그램하는 단계는, 상기 특정 페이지에 프로그램 되었어야 할 데이터를 상기 예비 블록에 포함되는 상기 적어도 하나의 페이지 이후에 위치하는 적어도 하나의 페이지에 프로그램하는 단계인 것을 특징으로 할 수 있다.According to another aspect, the step of programming the data stored in the data buffer into at least one page located after the at least one page included in the spare block through the page register is programmed in the specific page. It may be characterized in that the step of programming the data to be read into at least one page located after the at least one page included in the spare block.

또 다른 일 측에 따르면, 상기 페이지 레지스터에 저장된 데이터를 상기 데이터 버퍼로 전송하는 단계는, 상기 데이터 버퍼의 공간 할당 요청을 발생시키는 단계; 및 상기 데이터 버퍼에서 데이터의 추출이 발생되어 상기 추출된 데이터가 향하는 페이지 레지스터와 상기 데이터 버퍼의 공간 할당 요청을 발생시킨 페이지 레지스터가 동일한 경우, 상기 데이터 버퍼의 공간 할당 요청을 다시 발생시키는 단계를 포함하는 것을 특징으로 할 수 있다.According to another aspect, transmitting the data stored in the page register to the data buffer may include: generating a space allocation request for the data buffer; and when the extraction of data from the data buffer occurs and the page register to which the extracted data is directed and the page register that generated the request for space allocation of the data buffer are identical, reissuing the request for space allocation of the data buffer. It can be characterized as

또 다른 일 측에 따르면, 상기 페이지 레지스터를 통해 예비 블록에 포함되는 적어도 하나의 페이지로 복사하는 단계 및 상기 데이터 버퍼에 저장된 데이터를 상기 페이지 레지스터를 통해 상기 예비 블록에 포함되는 상기 적어도 하나의 페이지 이후에 위치하는 적어도 하나의 페이지에 프로그램하는 단계 각각은, 비동기 처리되는 것을 특징으로 할 수 있다.According to another aspect, after the at least one page included in the spare block through the page register, copying the data stored in the data buffer to at least one page included in the spare block through the page register, and Each of the steps of programming in at least one page located in .

또 다른 일 측에 따르면, 상기 페이지 레지스터를 통해 예비 블록에 포함되는 적어도 하나의 페이지로 복사하는 단계는, 상기 특정 페이지 이전에 위치하는 적어도 하나의 페이지까지 저장된 데이터를 상기 페이지 레지스터를 통해 상기 예비 블록에 포함되는 상기 적어도 하나의 페이지로 순차적으로 복사하는 단계인 것을 특징으로 할 수 있다.According to another aspect, in the copying of the at least one page included in the spare block through the page register, data stored up to at least one page located before the specific page is transferred to the spare block through the page register. It may be characterized in that the step of sequentially copying to the at least one page included in the.

또 다른 일 측에 따르면, 상기 런타임 배드 블록 관리 방법은, 상기 런타임 배드 블록이 발생된 상기 데이터 블록에 대한 접근이 상기 예비 블록으로 향하도록 블록 사상 테이블-상기 블록 사상 테이블은 의사 물리 블록 영역에 할당된 상기 데이터 블록 및 상기 예비 블록을 향한 접근을 정의함-을 업데이트하는 단계를 더 포함할 수 있다.According to another aspect, in the method for managing a runtime bad block, a block mapping table-the block mapping table is allocated to a pseudo-physical block area so that access to the data block in which the runtime bad block is generated is directed to the spare block. The method may further include updating - defining access towards the data block and the spare block.

일 실시예에 따르면, 컴퓨터와 결합되어 런타임 배드 블록 관리 방법을 실행시키기 위해 컴퓨터 판독 가능한 기록 매체에 기록된 컴퓨터 프로그램에 있어서, 상기 런타임 배드 블록 관리 방법은, 프로그램 요청에 응답하여 데이터 버퍼에 저장된 데이터를 페이지 레지스터로 전송하는 단계; 상기 페이지 레지스터에 저장된 데이터를 상기 데이터 블록에 프로그램하는 단계; 상기 프로그램 동작에서 상기 데이터 블록을 구성하는 복수의 페이지들 중 특정 페이지에서의 프로그램 오류가 야기하는 런타임 배드 블록이 발생되는 경우, 상기 페이지 레지스터에 저장된 데이터를 상기 데이터 버퍼로 전송하는 단계; 상기 데이터 블록을 구성하는 상기 복수의 페이지들 중 상기 프로그램 오류가 발생된 상기 특정 페이지 이전에 위치하는 적어도 하나의 페이지까지 저장된 데이터를 상기 페이지 레지스터를 통해 예비 블록에 포함되는 적어도 하나의 페이지로 복사하는 단계; 및 상기 데이터 버퍼에 저장된 데이터를 상기 페이지 레지스터를 통해 상기 예비 블록에 포함되는 상기 적어도 하나의 페이지 이후에 위치하는 적어도 하나의 페이지에 프로그램하는 단계를 포함할 수 있다.According to an embodiment, in a computer program recorded on a computer-readable recording medium to be coupled to a computer to execute a runtime bad block management method, the runtime bad block management method includes data stored in a data buffer in response to a program request. to the page register; programming the data stored in the page register into the data block; transmitting data stored in the page register to the data buffer when a runtime bad block caused by a program error in a specific page among a plurality of pages constituting the data block occurs in the program operation; copying data stored up to at least one page located before the specific page in which the program error occurs among the plurality of pages constituting the data block to at least one page included in the spare block through the page register; step; and programming the data stored in the data buffer into at least one page positioned after the at least one page included in the spare block through the page register.

일 측에 따르면, 상기 데이터 버퍼에 저장된 데이터를 페이지 레지스터로 전송하는 단계는, 상기 데이터 버퍼의 저장 공간을 확보하는 단계를 포함하는 것을 특징으로 할 수 있다.According to one aspect, the step of transferring the data stored in the data buffer to the page register may include securing a storage space of the data buffer.

일 실시예에 따르면, 컴퓨터로 구현되어 런타임 배드 블록 관리 방법을 수행하는 런타임 배드 블록 관리 시스템은, 프로그램 요청에 응답하여 데이터 버퍼에 저장된 데이터를 페이지 레지스터로 전송하고, 상기 페이지 레지스터에 저장된 데이터를 상기 데이터 블록에 프로그램하는 컨트롤러; 및 상기 프로그램 동작에서 상기 데이터 블록을 구성하는 복수의 페이지들 중 특정 페이지에서의 프로그램 오류가 야기하는 런타임 배드 블록이 발생되는 경우, 상기 페이지 레지스터에 저장된 데이터를 상기 데이터 버퍼로 전송하고, 상기 데이터 블록을 구성하는 상기 복수의 페이지들 중 상기 프로그램 오류가 발생된 상기 특정 페이지 이전에 위치하는 적어도 하나의 페이지까지 저장된 데이터를 상기 페이지 레지스터를 통해 예비 블록에 포함되는 적어도 하나의 페이지로 복사하며, 상기 데이터 버퍼에 저장된 데이터를 상기 페이지 레지스터를 통해 상기 예비 블록에 포함되는 상기 적어도 하나의 페이지 이후에 위치하는 적어도 하나의 페이지에 프로그램하는 배드 블록 관리 모듈을 포함할 수 있다.According to an embodiment, the runtime bad block management system implemented by a computer and performing the runtime bad block management method transmits data stored in a data buffer to a page register in response to a program request, and transfers the data stored in the page register to the page register. a controller that programs data blocks; and when a runtime bad block caused by a program error in a specific page among a plurality of pages constituting the data block occurs in the program operation, data stored in the page register is transferred to the data buffer, and the data block Copying data stored up to at least one page located before the specific page in which the program error occurred among the plurality of pages constituting and a bad block management module for programming data stored in the buffer into at least one page located after the at least one page included in the spare block through the page register.

일 측에 따르면, 상기 배드 블록 관리 모듈은, 상기 데이터 버퍼에 저장된 데이터를 페이지 레지스터로 전송한 뒤, 상기 데이터 버퍼의 저장 공간을 확보하는 것을 특징으로 할 수 있다.According to one side, the bad block management module may secure a storage space of the data buffer after transferring the data stored in the data buffer to a page register.

일 실시예들은 프로그램 동작이 수행되기 이전에 데이터 버퍼에 저장된 데이터(프로그램 대상이 동작의 대상이 되는 데이터)를 삭제하여 프로그램 동작이 시작하기 직전에 데이터 버퍼의 저장 공간을 확보하는 런타임 배드 블록 관리 방법 및 시스템을 제안함으로써, 프로그램 동작이 완료될 때까지 프로그램 동작의 대상이 되는 데이터를 데이터 버퍼에 저장 및 유지해야 하는 단점 및 해당 단점으로 인해 시스템 전체의 성능이 저하되는 문제점을 해결할 수 있다.Embodiments provide a runtime bad block management method for securing a storage space of a data buffer immediately before a program operation starts by deleting data stored in a data buffer (data for which a program target is an operation target) before a program operation is performed. And by proposing a system, it is possible to solve the problem that the data subject to the program operation must be stored and maintained in the data buffer until the program operation is completed, and the performance of the entire system is deteriorated due to the disadvantage.

특히, 일 실시예들은 배드 블록으로 판단된 데이터 블록을 예비 블록으로 교체하는 런타임 배드 블록 관리 동작 중 데이터 버퍼의 저장 공간을 확보하는 것이 가능하도록 런타임 배드 블록 발생시 페이지 레지스터에 저장된 데이터를 데이터 버퍼로 전송하는 동작을 수행하는 런타임 배드 블록 관리 방법 및 시스템을 제안할 수 있다.In particular, embodiments transmit data stored in a page register to a data buffer when a runtime bad block occurs so as to secure a storage space for a data buffer during a runtime bad block management operation of replacing a data block determined as a bad block with a spare block It is possible to propose a runtime bad block management method and system that performs an operation.

또한, 일 실시예들은 배드 블록으로 판단된 데이터 블록을 예비 블록으로 교체하는 런타임 배드 블록 관리 동작 중 데이터를 예비 블록에 복사하는 동작과 프로그램하는 동작 각각을 비동기 처리하는 런타임 배드 블록 관리 방법 및 시스템을 제안함으로써, 프로그램 동작시 플래시 메모리 상위 계층에서의 지연시간을 개선할 수 있으며, 플래시 메모리의 처리량을 향상시킬 수 있다.In addition, one embodiment provides a runtime bad block management method and system for asynchronously processing each of an operation of copying data to a spare block and a programming operation of a runtime bad block management operation of replacing a data block determined as a bad block with a spare block By the proposal, it is possible to improve the delay time in the upper layer of the flash memory during a program operation and to improve the throughput of the flash memory.

따라서, 일 실시예들은 설명된 효과들을 통해 프로그램 동작의 신뢰성을 향상시키고, 플래시 메모리의 성능을 개선하는 런타임 배드 블록 관리 방법 및 시스템을 제안할 수 있다.Accordingly, the embodiments may propose a runtime bad block management method and system for improving the reliability of a program operation and improving the performance of a flash memory through the described effects.

다만, 본 발명의 효과는 상기 효과들로 한정되는 것이 아니며, 본 발명의 기술적 사상 및 영역으로부터 벗어나지 않는 범위에서 다양하게 확장될 수 있다.However, the effects of the present invention are not limited to the above effects, and may be variously expanded without departing from the spirit and scope of the present invention.

도 1은 NAND 플래시 메모리의 블록 영역을 설명하기 위한 도면이다.
도 2는 일 실시예에 따른 런타임 배드 블록 관리 시스템을 설명하기 위한 블록도이다.
도 3은 일 실시예에 따른 런타임 배드 블록 관리 시스템에서 수행하는 런타임 배드 블록이 발생되지 않은 경우의 프로그램 동작을 설명하기 위한 도면이다.
도 4는 일 실시예에 따른 런타임 배드 블록 관리 시스템에서 수행하는 런타임 배드 블록이 발생된 경우의 전반적인 프로그램 동작을 설명하기 위한 도면이다.
도 5 내지 6은 도 4에 도시된 프로그램 동작 중 런타임 배드 블록 관리 방법을 설명하기 위한 도면이다.
도 7은 도 5에 도시된 런타임 배드 블록 관리 방법 중 교착 상태를 회피하는 동작을 설명하기 위한 플로우 차트이다.
1 is a diagram for explaining a block area of a NAND flash memory.
2 is a block diagram illustrating a runtime bad block management system according to an embodiment.
FIG. 3 is a diagram for describing a program operation in a case in which a runtime bad block performed by the runtime bad block management system according to an embodiment is not generated.
4 is a view for explaining the overall program operation when a runtime bad block performed by the runtime bad block management system according to an embodiment is generated.
5 to 6 are diagrams for explaining a runtime bad block management method during the program operation shown in FIG. 4 .
FIG. 7 is a flowchart illustrating an operation of avoiding a deadlock among the runtime bad block management method illustrated in FIG. 5 .

이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다. 그러나 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 또한, 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings. However, the present invention is not limited or limited by the examples. In addition, like reference numerals in each figure denote like members.

또한, 본 명세서에서 사용되는 용어(Terminology)들은 본 발명의 바람직한 실시예를 적절히 표현하기 위해 사용된 용어들로서, 이는 시청자, 운용자의 의도 또는 본 발명이 속하는 분야의 관례 등에 따라 달라질 수 있다. 따라서, 본 용어들에 대한 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. 예컨대, 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 또한, 본 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.In addition, the terms (Terminology) used in this specification are terms used to properly express a preferred embodiment of the present invention, which may vary depending on the intention of a viewer or operator or a custom in the field to which the present invention belongs. Accordingly, definitions of these terms should be made based on the content throughout this specification. For example, in this specification, the singular also includes the plural unless specifically stated in the phrase. Also, as used herein, “comprises” and/or “comprising” refers to a referenced component, step, operation and/or element being one or more other components, steps, operations and/or elements. The presence or addition of elements is not excluded.

또한, 본 발명의 다양한 실시 예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 여기에 기재되어 있는 특정 형상, 구조 및 특성은 일 실시예에 관련하여 본 발명의 기술적 사상 및 범위를 벗어나지 않으면서 다른 실시 예로 구현될 수 있다. 또한, 제시된 각각의 실시예 범주에서 개별 구성요소의 위치, 배치, 또는 구성은 본 발명의 기술적 사상 및 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다.Also, it should be understood that various embodiments of the present invention are different from each other but are not necessarily mutually exclusive. For example, specific shapes, structures, and characteristics described herein may be implemented in other embodiments without departing from the spirit and scope of the present invention in relation to one embodiment. In addition, it should be understood that the position, arrangement, or configuration of individual components in each of the presented embodiment categories may be changed without departing from the spirit and scope of the present invention.

도 2는 일 실시예에 따른 런타임 배드 블록 관리 시스템을 설명하기 위한 블록도이다.2 is a block diagram illustrating a runtime bad block management system according to an embodiment.

도 2를 참조하면, 플래시 메모리 기반 저장 장치(200)는 각종 연산과 판단을 담당하는 컨트롤러(210), 호스트와 플래시 메모리 사이에서 데이터 저장 공간을 공급함으로써 버퍼 혹은 캐시 역할을 하는 데이터 버퍼(220), 런타임 배드 블록의 발생을 감지하고 배드 블록을 관리하는 배드 블록 관리 모듈(230), 데이터가 저장되는 공간이자 플래시 메모리의 물리 저장 공간인 메모리 셀 어레이(240)(이하, 메모리 셀 어레이(240)는 데이터 블록 어레이를 의미함)와, 메모리 셀 어레이(240)에 포함되는 메모리 셀에 프로그램할 데이터 또는 메모리 셀로부터 읽은 데이터를 저장하는 페이지 레지스터(250)로 구성된다.Referring to FIG. 2 , the flash memory-based storage device 200 provides a data storage space between the controller 210 in charge of various calculations and judgments, and the host and the flash memory, thereby providing a data buffer 220 serving as a buffer or cache. , a bad block management module 230 that detects the occurrence of a runtime bad block and manages the bad block, a memory cell array 240 that is a space in which data is stored and a physical storage space of the flash memory (hereinafter, the memory cell array 240) denotes a data block array) and a page register 250 for storing data to be programmed into or data read from the memory cells included in the memory cell array 240 .

이와 같은 구조의 플래시 메모리 기반 저장 장치(200) 중 컨트롤러(210) 및 배드 블록 관리 모듈(230)은, 후술되는 런타임 배드 블록 관리 방법을 수행하는 주체인 런타임 배드 블록 관리 시스템을 구성할 수 있다. 이에, 런타임 배드 블록 관리 시스템이 수행하는 런타임 배드 블록 관리 방법에서는, 컨트롤러(210) 및 배드 블록 관리 모듈(230)뿐만 아니라 데이터 버퍼(220), 메모리 셀 어레이(240) 및 페이지 레지스터(250)가 이용될 수 있다.The controller 210 and the bad block management module 230 of the flash memory-based storage device 200 having such a structure may constitute a runtime bad block management system, which is a subject that performs a runtime bad block management method to be described later. Accordingly, in the runtime bad block management method performed by the runtime bad block management system, the data buffer 220 , the memory cell array 240 and the page register 250 as well as the controller 210 and the bad block management module 230 are can be used

도 3은 일 실시예에 따른 런타임 배드 블록 관리 시스템에서 수행하는 런타임 배드 블록이 발생되지 않은 경우의 프로그램 동작을 설명하기 위한 도면이다.FIG. 3 is a diagram for describing a program operation in a case in which a runtime bad block performed by the runtime bad block management system according to an embodiment is not generated.

도 3을 참조하면, 데이터 버퍼(220)는 호스트로부터 프로그램 요청(S310)으로 인한 버퍼 공간 할당 요청이 발생됨에 응답하여, 호스트로부터 데이터를 전송 받을 버퍼 주소 공간을 선정할 수 있다. 데이터 버퍼에 여유 공간이 있거나 할당 받은 데이터 버퍼 공간에 클린 데이터가 존재한다면, 데이터 버퍼(220)는 호스트로부터 데이터를 전송 받아 데이터 버퍼에 저장함으로써, 호스트 명령을 완료할 수 있다. 만약, 데이터 버퍼(220)에 여유 저장 공간이 없다면, 컨트롤러(210)는 교체 정책에 따라 데이터 버퍼(220)에서 임의의 저장 공간을 선정하고, 선정된 저장 공간에 저장된 데이터를 추출하여 저장 공간을 확보할 수 있다.Referring to FIG. 3 , the data buffer 220 may select a buffer address space to receive data from the host in response to a buffer space allocation request due to a program request ( S310 ) from the host. If there is free space in the data buffer or clean data exists in the allocated data buffer space, the data buffer 220 receives data from the host and stores it in the data buffer, thereby completing the host command. If there is no free storage space in the data buffer 220, the controller 210 selects an arbitrary storage space in the data buffer 220 according to the replacement policy, extracts data stored in the selected storage space, and saves the storage space. can be obtained

이에, 컨트롤러(210)는 데이터(데이터 버퍼(220)에 저장되어 있던 데이터)를 플래시 메모리에 저장할 가상 주소를 할당 받고, 할당 받은 가상 주소를 배드 블록 관리 모듈(230)을 통해 물리 주소로 변환한 뒤, 변환된 물리 주소를 참조하여 데이터 버퍼에서 페이지 레지스터(250)로 데이터를 전송하고(S320), 데이터 전송이 완료될 시 데이터 버퍼(220)의 쓰기 보호를 해제시킴(S330; 점유 해지)과 동시에 페이지 레지스터(250)에 저장된 데이터(데이터 버퍼(220)로부터 전송된 데이터)를 메모리 셀 어레이(240)의 물리 주소 공간인 데이터 블록(241)에 프로그램하는 프로그램 동작(S340)을 시작할 수 있다.Accordingly, the controller 210 receives a virtual address to store data (data stored in the data buffer 220 ) in the flash memory, and converts the allocated virtual address into a physical address through the bad block management module 230 . Then, by referring to the converted physical address, the data is transferred from the data buffer to the page register 250 (S320), and when the data transfer is completed, the write protection of the data buffer 220 is released (S330; release of occupation); At the same time, a program operation S340 of programming data stored in the page register 250 (data transmitted from the data buffer 220 ) into the data block 241 , which is a physical address space of the memory cell array 240 , may start.

이 때, 컨트롤러(210)는 데이터 버퍼(220)에 저장된 데이터를 페이지 레지스터(250)로 전송함에 따라, 프로그램 동작(S340)이 수행되기 이전에 데이터 버퍼(220)에 저장된 데이터를 삭제하여 데이터 버퍼(220)의 저장 공간을 확보함으로써, 프로그램 동작(S340)이 완료될 때까지 데이터(프로그램 동작의 대상이 되는 데이터)가 데이터 버퍼(220)에 저장 및 유지해야 하는 기존의 기술과 차별화될 수 있다. 즉, 컨트롤러(210)는 데이터 버퍼(220)에 저장된 데이터를 페이지 레지스터(250)로 전송한 이후 프로그램 대상이 되는 데이터를 데이터 버퍼(220)에 저장 및 유지하지 않고 삭제하여 데이터 버퍼(220)의 저장 공간을 확보함으로써, 필요에 따라 데이터 버퍼(220)에 호스트로부터 전송 받은 데이터(프로그램 대상이 되는 데이터와 다른 데이터)가 저장되도록 할 수 있다. 따라서, 데이터 버퍼(220)는 페이지 레지스터(250)로 데이터를 전송한 이후 즉시 사용 가능해질 수 있다.At this time, as the controller 210 transmits the data stored in the data buffer 220 to the page register 250 , the controller 210 deletes the data stored in the data buffer 220 before the program operation S340 is performed to the data buffer. By securing the storage space of 220 , it can be differentiated from the existing technology in which data (data that is the target of the program operation) must be stored and maintained in the data buffer 220 until the program operation S340 is completed. . That is, the controller 210 transmits the data stored in the data buffer 220 to the page register 250 and then deletes the program target data without storing and maintaining it in the data buffer 220 . By securing the storage space, it is possible to store data transmitted from the host (data that is different from the data to be programmed) in the data buffer 220 as necessary. Accordingly, the data buffer 220 may be immediately available after data is transferred to the page register 250 .

여기서, 페이지 레지스터(250)를 통해 데이터가 데이터 블록(241)에 프로그램되는 프로그램 동작(S340)은, 백그라운드 상에서 데이터 버퍼(220)의 상태 및 호스트의 명령과 독립적으로 진행될 수 있으며, 비동기 처리될 수 있다.Here, the program operation ( S340 ) in which data is programmed into the data block 241 through the page register 250 may proceed independently of the state of the data buffer 220 and the host command in the background, and may be processed asynchronously. have.

프로그램 동작(S340)이 완료되면, 배드 블록 관리 모듈(230)은 데이터가 정상적으로 프로그램 되었는지 여부를 플래시 메모리의 상태 레지스터를 통해 확인할 수 있다.When the program operation S340 is completed, the bad block management module 230 may check whether data is normally programmed through the status register of the flash memory.

확인 결과, 프로그램 오류가 없어 런타임 배드 블록이 발생되지 않았다면, 후술되는 런타임 배드 블록 관리 동작이 수행되지 않고 프로그램 동작(S340)이 종료될 수 있다.As a result of the check, if a runtime bad block is not generated because there is no program error, a runtime bad block management operation to be described later may not be performed and the program operation S340 may be terminated.

도 4는 일 실시예에 따른 런타임 배드 블록 관리 시스템에서 수행하는 런타임 배드 블록이 발생된 경우의 전반적인 프로그램 동작을 설명하기 위한 도면이고, 도 5 내지 6은 도 4에 도시된 프로그램 동작 중 런타임 배드 블록 관리 방법을 설명하기 위한 도면이다. 보다 상세하게, 도 5는 일 실시예에 따른 런타임 배드 블록 관리 방법을 설명하기 위한 도면이며, 도 6은 기존 런타임 배드 블록 관리 방법을 설명하기 위한 도면이다.4 is a view for explaining an overall program operation when a runtime bad block performed by the runtime bad block management system according to an embodiment is generated, and FIGS. 5 to 6 are runtime bad blocks among the program operations shown in FIG. 4 . It is a diagram for explaining a management method. In more detail, FIG. 5 is a diagram illustrating a runtime bad block management method according to an embodiment, and FIG. 6 is a diagram illustrating an existing runtime bad block management method.

이하 설명되는 런타임 배드 블록 관리 방법에서 배드 블록 관리 모듈이 주체가 되어 수행되는 동작들은, 컨트롤러, 데이터 버퍼, 페이지 레지스터 등이 해당 동작들을 수행하도록 배드 블록 관리 모듈에 의해 제어되는 것을 의미할 수 있다.In the runtime bad block management method described below, operations performed by the bad block management module as a subject may mean that a controller, a data buffer, a page register, etc. are controlled by the bad block management module to perform the corresponding operations.

도 4 내지 5를 참조하면, 데이터 버퍼(220)는 호스트로부터 프로그램 요청(S410)으로 인한 버퍼 공간 할당 요청이 발생됨에 응답하여, 호스트로부터 데이터를 전송 받을 버퍼 주소 공간을 선정할 수 있다. 데이터 버퍼에 여유 공간이 있거나 할당 받은 데이터 버퍼 공간에 클린 데이터가 존재한다면, 데이터 버퍼(220)는 호스트로부터 데이터를 전송 받아 데이터 버퍼에 저장함으로써, 호스트 명령을 완료할 수 있다. 만약, 데이터 버퍼(220)에 여유 저장 공간이 없다면, 컨트롤러(210)는 교체 정책에 따라 데이터 버퍼(220)에서 임의의 저장 공간을 선정하고, 선정된 저장 공간에 저장된 데이터를 추출하여 저장 공간을 확보할 수 있다.4 to 5 , the data buffer 220 may select a buffer address space to receive data from the host in response to a buffer space allocation request due to a program request ( S410 ) from the host. If there is free space in the data buffer or clean data exists in the allocated data buffer space, the data buffer 220 receives data from the host and stores it in the data buffer, thereby completing the host command. If there is no free storage space in the data buffer 220, the controller 210 selects an arbitrary storage space in the data buffer 220 according to the replacement policy, extracts data stored in the selected storage space, and saves the storage space. can be obtained

이에, 컨트롤러(210)는 데이터(데이터 버퍼(220)에 저장되어 있던 데이터)를 플래시 메모리에 저장할 가상 주소를 할당 받고, 할당 받은 가상 주소를 배드 블록 관리 모듈(230)을 통해 물리 주소로 변환한 뒤, 변환된 물리 주소를 참조하여 데이터 버퍼에서 페이지 레지스터(250)로 데이터를 전송하고(S420), 데이터 전송이 완료될 시 데이터 버퍼(220)의 쓰기 보호를 해제시킴(S430; 점유 해지)과 동시에 페이지 레지스터(250)에 저장된 데이터(데이터 버퍼(220)로부터 전송된 데이터)를 메모리 셀 어레이(240)의 물리 주소 공간인 데이터 블록(241)에 프로그램하는 프로그램 동작(S440)을 시작할 수 있다.Accordingly, the controller 210 receives a virtual address to store data (data stored in the data buffer 220 ) in the flash memory, and converts the allocated virtual address into a physical address through the bad block management module 230 . Thereafter, by referring to the converted physical address, data is transferred from the data buffer to the page register 250 (S420), and when the data transfer is completed, the write protection of the data buffer 220 is released (S430; occupancy release) and At the same time, a program operation S440 of programming data stored in the page register 250 (data transmitted from the data buffer 220 ) into the data block 241 , which is a physical address space of the memory cell array 240 , may start.

이 때, 컨트롤러(210)는 데이터 버퍼(220)에 저장된 데이터를 페이지 레지스터(250)로 전송함에 따라, 프로그램 동작(S440)이 수행되기 이전에 데이터 버퍼(220)에 저장된 데이터를 삭제하여 데이터 버퍼(220)의 저장 공간을 확보함으로써, 프로그램 동작(S440)이 완료될 때까지 데이터(프로그램 동작의 대상이 되는 데이터)가 데이터 버퍼(220)에 저장 및 유지해야 하는 기존의 기술과 차별화될 수 있다. 즉, 컨트롤러(210)는 데이터 버퍼(220)에 저장된 데이터를 페이지 레지스터(250)로 전송한 이후 프로그램 대상이 되는 데이터를 데이터 버퍼(220)에 저장 및 유지하지 않고 삭제하여 데이터 버퍼(220)의 저장 공간을 확보함으로써, 필요에 따라 데이터 버퍼(220)에 호스트로부터 전송 받은 데이터(프로그램 대상이 되는 데이터와 다른 데이터)가 저장되도록 할 수 있다. 따라서, 데이터 버퍼(220)는 페이지 레지스터(250)로 데이터를 전송한 이후 즉시 사용 가능해질 수 있다.At this time, as the data stored in the data buffer 220 is transferred to the page register 250 , the controller 210 deletes the data stored in the data buffer 220 before the program operation S440 is performed to the data buffer. By securing the storage space of 220 , data (data that is the target of the program operation) can be stored and maintained in the data buffer 220 until the program operation S440 is completed, which can be differentiated from the existing technology. . That is, the controller 210 transmits the data stored in the data buffer 220 to the page register 250 and then deletes the program target data without storing and maintaining it in the data buffer 220 . By securing the storage space, it is possible to store data transmitted from the host (data that is different from the data to be programmed) in the data buffer 220 as necessary. Accordingly, the data buffer 220 may be immediately available after data is transferred to the page register 250 .

여기서, 페이지 레지스터(250)를 통해 데이터가 데이터 블록(241)에 프로그램되는 프로그램 동작(S440)은, 백그라운드 상에서 데이터 버퍼(220)의 상태 및 호스트의 명령과 독립적으로 진행될 수 있으며, 비동기 처리될 수 있다.Here, the program operation S440 in which data is programmed into the data block 241 through the page register 250 may be performed independently of the state of the data buffer 220 and the host command in the background, and may be processed asynchronously. have.

프로그램 동작(S440)이 완료되면, 배드 블록 관리 모듈(230)은 데이터가 정상적으로 프로그램 되었는지 여부를 플래시 메모리의 상태 레지스터를 통해 확인할 수 있다.When the program operation S440 is completed, the bad block management module 230 may check whether data is normally programmed through the status register of the flash memory.

확인 결과, 프로그램 동작(S440)에서 데이터 블록(241)을 구성하는 복수의 페이지들 중 특정 페이지(예컨대, N번째 페이지)에서의 프로그램 오류가 야기하는 런타임 배드 블록이 발생된 것으로 감지되었다면, 배드 블록 관리 모듈(230)은 페이지 레지스터(250)에 저장된 데이터를 데이터 버퍼(220)로 전송할 수 있다(S445). 보다 상세하게, 배드 블록 관리 모듈(230)은 데이터 버퍼(220)의 공간 할당 요청을 발생시켜 데이터 버퍼(220)의 저장 공간을 할당 받은 경우, 프로그램 오류가 발생된 특정 페이지(예컨대, N번째 페이지)에 프로그램 되었어야 할 데이터 및 특정 페이지(예컨대, N번째 페이지) 이후에 위치하는 적어도 하나의 페이지(예컨대, N+1번째 페이지)에 프로그램되는 데이터를 데이터 버퍼(220)의 할당 받은 저장 공간으로 전송할 수 있다. 즉, S445에서 데이터 버퍼(220)로 전송되는 데이터는, 프로그램 대상이 되는 데이터 중 프로그램 오류가 발생되기 이전에 정상적으로 프로그램된 데이터를 제외한 나머지 모든 데이터일 수 있다.As a result of the check, if it is detected that a runtime bad block caused by a program error in a specific page (eg, N-th page) among a plurality of pages constituting the data block 241 has occurred in the program operation S440 , the bad block The management module 230 may transmit the data stored in the page register 250 to the data buffer 220 (S445). In more detail, when the bad block management module 230 generates a space allocation request for the data buffer 220 and receives a storage space for the data buffer 220 , a specific page (eg, the Nth page) in which a program error occurs ) and data to be programmed in at least one page (eg, N+1th page) located after a specific page (eg, Nth page) into the allocated storage space of the data buffer 220 . can be transmitted That is, the data transmitted to the data buffer 220 in S445 may be all data other than data normally programmed before a program error occurs among data to be programmed.

이 때, 배드 블록 관리 모듈(230)은 데이터 버퍼(220)의 공간 할당 요청을 발생시키는 과정에서, 교착 상태를 회피하기 위한 동작을 수행할 수 있다. 이에 대한 상세한 설명은 아래의 도 7을 참조하여 기재하기로 한다.In this case, the bad block management module 230 may perform an operation for avoiding a deadlock while generating a space allocation request for the data buffer 220 . A detailed description thereof will be described with reference to FIG. 7 below.

S445를 통해 데이터 버퍼(220)로 데이터가 전송되고 나면, 배드 블록 관리 모듈(230)은 데이터 블록(241)을 구성하는 복수의 페이지들 중 프로그램 오류가 발생된 특정 페이지(예컨대, N번째 페이지) 이전에 위치하는 적어도 하나의 페이지까지(예컨대, 1번째 페이지부터 N-1번째 페이지까지) 저장된 데이터를 페이지 레지스터(250)를 통해 예비 블록(242)에 포함되는 적어도 하나의 페이지(예컨대, 1번째 페이지부터 N-1번째 페이지까지)로 복사할 수 있다(S450, S455). 복사 과정은 1번째 페이지부터 순차적으로 이루어질 수 있다. 예를 들어, 데이터 블록(241)의 1번째 페이지에 저장된 데이터가 페이지 레지스터(250)를 통해 예비 블록(242)의 1번째 페이지로 복사된 이후, 데이터 블록(241)의 2번째 페이지에 저장된 데이터가 페이지 레지스터(250)를 통해 예비 블록(242)의 2번째 페이지로 복사될 수 있다. 이렇게 순차적인 방식으로 데이터 블록(241)의 N-1번째 페이지(프로그램 오류가 발생된 특정 페이지인 N페이지의 직전에 위치하는 페이지)에 저장된 데이터가 예비 블록(242)의 N-1번째 페이지로 복사될 수 있다.After data is transmitted to the data buffer 220 through S445, the bad block management module 230 generates a specific page (eg, Nth page) in which a program error occurs among a plurality of pages constituting the data block 241 . At least one page (eg, the first page) included in the spare block 242 through the page register 250 for data stored up to at least one previously positioned page (eg, from the 1st page to the N−1th page) From the page to the N-1th page) can be copied (S450, S455). The copy process may be sequentially performed from the first page. For example, after data stored in the first page of the data block 241 is copied to the first page of the spare block 242 through the page register 250 , the data stored in the second page of the data block 241 . may be copied to the second page of the spare block 242 through the page register 250 . In this sequential manner, the data stored in the N-1 th page of the data block 241 (the page located immediately before the N page, which is a specific page in which a program error occurs) is transferred to the N-1 th page of the spare block 242 . can be copied.

또한, 이상 복사 과정이 페이지 레지스터(250)만을 경유하여 이루어지는 것으로 설명되었으나, 이에 제한되거나 한정되지 않고 데이터 버퍼(220)까지 경유하여 이루어질 수 있다. 일례로, 데이터 블록(241)에 저장된 데이터가 페이지 레지스터(250)를 거쳐 데이터 버퍼(220)로 전송된 후 해당 데이터가 다시 페이지 레지스터(250)를 경유하여 예비 블록(242)으로 복사될 수도 있다.In addition, although it has been described that the above-described copy process is performed only through the page register 250 , it is not limited thereto and may be performed through the data buffer 220 . For example, after data stored in the data block 241 is transferred to the data buffer 220 via the page register 250 , the corresponding data may be copied back to the spare block 242 via the page register 250 . .

이후 배드 블록 관리 모듈(230)은, 데이터 버퍼(220)에 저장된 데이터를 페이지 레지스터(250)를 통해 예비 블록(242)에 포함되는 적어도 하나의 페이지(S455에서 데이터 블록(241)에 저장된 데이터가 복사된 페이지 이후에 위치하는 페이지)에 프로그램할 수 있다(S460, S465). 보다 상세하게, 배드 블록 관리 모듈(230)은 데이터 블록(241)의 프로그램 오류가 발생된 특정 페이지(예컨대, N번째 페이지)에 프로그램 되었어야 할 데이터 및 특정 페이지(예컨대, N번째 페이지) 이후에 위치하는 적어도 하나의 페이지(예컨대, N+1번째 페이지)에 프로그램되는 데이터를 예비 블록(242)에 포함되는 적어도 하나의 페이지(예비 블록(242)의 N번째 페이지 및 N+1번째 페이지 등)에 프로그램할 수 있다. 예를 들어, 배드 블록 관리 모듈(230)은 데이터 블록(241)의 N번째 페이지에 프로그램 되었어야 할 데이터를 예비 블록(242)의 N번째 페이지에 프로그램하고, 데이터 블록(241)의 N+1번째 페이지에 프로그램되는 데이터를 예비 블록(242)의 N+1번째 페이지에 프로그램할 수 있다.Thereafter, the bad block management module 230 transmits the data stored in the data buffer 220 to the data stored in the data block 241 in at least one page ( S455 ) included in the spare block 242 through the page register 250 . It can be programmed in the page located after the copied page (S460, S465). In more detail, the bad block management module 230 is configured to store data that should have been programmed in a specific page (eg, N-th page) in which a program error of the data block 241 has occurred and after a specific page (eg, N-th page). At least one page (eg, the N-th page and the N+1-th page of the spare block 242 ) included in the spare block 242 for data programmed in at least one page (eg, the N+1-th page) located therein. can be programmed in For example, the bad block management module 230 programs data that should have been programmed in the N-th page of the data block 241 into the N-th page of the spare block 242 , and N+1 of the data block 241 . Data programmed in the th page may be programmed in the N+1 th page of the spare block 242 .

이상 설명된 페이지 레지스터(250)에 저장된 데이터를 데이터 버퍼(220)로 전송하는 단계인 S445, 데이터 블록(241)의 프로그램 오류가 발생된 특정 페이지 이전에 위치하는 적어도 하나의 페이지까지 저장된 데이터를 페이지 레지스터(250)를 통해 예비 블록(242)에 포함되는 적어도 하나의 페이지로 복사하는 단계인 S450 및 S455와, 데이터 버퍼(220)에 저장된 데이터를 페이지 레지스터(250)를 통해 예비 블록(242)에 포함되는 적어도 하나의 페이지에 프로그램하는 단계인 S460 및 S465 각각은, 백그라운드 상에서 비동기 처리될 수 있다.In step S445 of transferring the data stored in the page register 250 to the data buffer 220 described above, the data stored up to at least one page located before the specific page in which the program error of the data block 241 occurs is paged. Steps S450 and S455 of copying at least one page included in the spare block 242 through the register 250 , and the data stored in the data buffer 220 are transferred to the spare block 242 through the page register 250 . Each of steps S460 and S465 of programming in at least one included page may be asynchronously processed in the background.

배드 블록 교체가 완료되면, 배드 블록 관리 모듈(230)은 런타임 배드 블록이 발생된 데이터 블록(241)에 대한 접근이 예비 블록(242)으로 향하도록 블록 사상 테이블(블록 사상 테이블은 의사 물리 블록 영역에 할당된 데이터 블록(241) 및 예비 블록(242)을 향한 접근을 정의함)을 업데이트함으로써, 데이터 블록(241)으로의 접근을 방지할 수 있다.When the bad block replacement is completed, the bad block management module 230 controls the block mapping table (the block mapping table is a pseudo-physical block area) so that the access to the data block 241 in which the runtime bad block is generated is directed to the spare block 242 . By updating the access to the data block 241 and the reserved block 242 allocated to ), access to the data block 241 can be prevented.

이상 설명된 일 실시예에 따른 런타임 배드 블록 관리 방법을 기존 런타임 배드 블록 관리 방법과 비교하기 위하여, 기존 런타임 배드 블록 관리 방법을 도 6을 참조하여 설명하면, 기존 런타임 배드 블록 관리 방법은 프로그램 요청에 응답하여 데이터 버퍼에 저장된 데이터를 데이터 블록에 프로그램하는 프로그램 동작을 수행하다가 데이터 블록을 구성하는 복수의 페이지들 중 특정 페이지(예컨대, N번째 페이지)에서의 프로그램 오류가 야기하는 런타임 배드 블록이 발생되는 경우 데이터 블록의 특정 페이지(예컨대, N번째 페이지) 이전에 위치하는 적어도 하나의 페이지(예컨대, 1번째 페이지부터 N-1번째 페이지까지)에 저장된 데이터를 예비 블록의 적어도 하나의 폐이지(예컨대, 1번째 페이지부터 N-1번째 페이지까지)에 복사한 뒤, 데이터 버퍼에 저장 및 유지되고 있는 데이터(예컨대, 데이터 블록의 특정 페이지(예컨대, N번째 페이지)에 프로그램 되었어야 할 데이터)를 예비 블록의 페이지(예컨대, N번째 페이지)에 프로그램함으로써, 배드 블록 교체 동작을 수행할 수 있다.In order to compare the runtime bad block management method according to the embodiment described above with the existing runtime bad block management method, the existing runtime bad block management method is described with reference to FIG. In response, while performing a program operation to program the data stored in the data buffer into the data block, a runtime bad block that causes a program error in a specific page (eg, the Nth page) among a plurality of pages constituting the data block is generated. In the case of at least one discard (eg, 1) data stored in at least one page (eg, from the 1st page to the N-1th page) located before a specific page (eg, N-th page) of the data block. After copying from the 1st page to the N-1th page), the data stored and maintained in the data buffer (eg, data that should have been programmed in a specific page (eg, Nth page) of the data block) is copied to the spare block. By programming the page (eg, the N-th page), a bad block replacement operation may be performed.

이 때, 기존 런타임 배드 블록 관리 방법이 S610과 같이 데이터 버퍼에 저장 및 유지되고 있는 데이터를 예비 블록에 프로그램하는 이유는, 프로그램 오류가 발생될 때 페이지 레지스터에 저장된 데이터(프로그램에 실패한 데이터)가 적어도 하나의 페이지(예컨대, 1번째 페이지부터 N-1번째 페이지까지)를 복사하는 과정에서 오염되었을 가능성이 있기 때문에, 오염되지 않은 데이터 버퍼에 저장된 데이터를 이용하는 것이다.At this time, the reason that the existing runtime bad block management method programs the data stored and maintained in the data buffer in the spare block as in S610 is that when a program error occurs, the data stored in the page register (data that fails the program) is at least Since there is a possibility that one page (for example, from the 1st page to the N-1th page) may be corrupted in the process of copying, the data stored in the uncontaminated data buffer is used.

따라서, 기존 런타임 배드 블록 관리 방법은, 프로그램 동작이 완료될 때까지 프로그램 대상이 되는 데이터를 데이터 버퍼에 저장 및 유지해야 하는 단점을 가지며, 지연 시간이 길어 시스템 전체의 성능이 저하되는 문제점도 갖는다.Therefore, the existing runtime bad block management method has disadvantages in that program target data must be stored and maintained in a data buffer until the program operation is completed, and the overall system performance is degraded due to a long delay time.

반면, 일 실시예에 따른 런타임 배드 블록 관리 방법은 전술된 바와 같이 데이터 버퍼(220)에 저장된 데이터를 페이지 레지스터(250)로 전송한 이후 프로그램 대상이 되는 데이터를 데이터 버퍼(220)에 저장 및 유지하지 않고 삭제하여 데이터 버퍼(220)의 저장 공간을 확보함으로써, 지연 시간을 개선하고 시스템 전체의 성능을 향상시킬 수 있다.On the other hand, in the runtime bad block management method according to an embodiment, as described above, after data stored in the data buffer 220 is transferred to the page register 250 , data to be programmed is stored and maintained in the data buffer 220 . By deleting the data buffer 220 without deleting it, it is possible to improve the delay time and improve the overall system performance.

도 7은 도 5에 도시된 런타임 배드 블록 관리 방법 중 교착 상태를 회피하는 동작을 설명하기 위한 플로우 차트이다.FIG. 7 is a flowchart illustrating an operation of avoiding a deadlock among the runtime bad block management method illustrated in FIG. 5 .

전술된 런타임 배드 블록 관리 방법 중 페이지 레지스터(250)에 저장된 데이터를 데이터 버퍼(220)로 전송하기 위해 데이터 버퍼(220)의 저장 공간을 확보하는 과정에서, 데이터 버퍼(220)에서 추출된 수정 데이터(Dirty data)의 페이지 레지스터(250)으로의 전송이 발생될 수 있다. 이러한 경우 페이지 레지스터(250)와 데이터 버퍼(220) 사이에서는 교착 상태(Deadlock)가 발생될 수 있다.Correction data extracted from the data buffer 220 in the process of securing a storage space of the data buffer 220 to transmit the data stored in the page register 250 to the data buffer 220 in the aforementioned runtime bad block management method A transfer of (dirty data) to the page register 250 may occur. In this case, a deadlock may occur between the page register 250 and the data buffer 220 .

이를 방지하고자 배드 블록 관리 모듈(230)은, 공간 할당 요청을 발생시키는 과정에서 교착 상태를 회피하기 위한 동작을 수행할 수 있다.To prevent this, the bad block management module 230 may perform an operation to avoid a deadlock in the process of generating a space allocation request.

보다 상세하게 도 7을 참조하면, 배드 블록 관리 모듈(230)은 데이터 버퍼(220)의 공간 할당 요청을 발생시킨 뒤(S710), 데이터 버퍼(220)에서 수정 데이터 추출이 발생되는지를 판단할 수 있다(S720).In more detail, referring to FIG. 7 , the bad block management module 230 generates a space allocation request for the data buffer 220 ( S710 ), and then determines whether correction data extraction occurs from the data buffer 220 . There is (S720).

만약, 수정 데이터 추출이 발생된다면, 배드 블록 관리 모듈(230)은 추출된 데이터(수정 데이터)가 향하는 페이지 레지스터와 데이터 버퍼(220)의 공간 할당 요청(페이지 레지스터(250)에 저장된 데이터를 데이터 버퍼(220)로 전송하기 위한 공간 할당 요청)을 발생시킨 페이지 레지스터가 동일한지를 판단할 수 있다(S730).If correction data extraction occurs, the bad block management module 230 transfers the data stored in the page register to which the extracted data (correction data) is directed and the space allocation request of the data buffer 220 (data stored in the page register 250 ) into the data buffer. It may be determined whether the page register that generated the space allocation request for transmission to 220 is the same (S730).

추출된 데이터(수정 데이터)가 향하는 페이지 레지스터와 데이터 버퍼(220)의 공간 할당 요청(페이지 레지스터(250)에 저장된 데이터를 데이터 버퍼(220)로 전송하기 위한 공간 할당 요청)을 발생시킨 페이지 레지스터가 동일하지 않은 경우, 배드 블록 관리 모듈(230)은 데이터 버퍼(220) 내 수정 데이터 추출을 완료하고(S740), 데이터 버퍼(220) 내 추출된 데이터의 저장 공간을 페이지 레지스터(2500에 저장된 데이터가 전송될 저장 공간으로 할당할 수 있다(S750).The page register to which the extracted data (modified data) is directed and the page register that generated a space allocation request for the data buffer 220 (a space allocation request for transferring the data stored in the page register 250 to the data buffer 220) If they are not the same, the bad block management module 230 completes extraction of the corrected data in the data buffer 220 (S740), and sets the storage space of the extracted data in the data buffer 220 to the data stored in the page register 2500. A storage space to be transmitted may be allocated (S750).

반면, 추출된 데이터(수정 데이터)가 향하는 페이지 레지스터와 데이터 버퍼(220)의 공간 할당 요청(페이지 레지스터(250)에 저장된 데이터를 데이터 버퍼(220)로 전송하기 위한 공간 할당 요청)을 발생시킨 페이지 레지스터가 동일한 경우, 배드 블록 관리 모듈(230)은 데이터 버퍼(220)의 공간 할당 요청을 다시 발생시킬 수 있다.On the other hand, a page that generates a space allocation request (a space allocation request for transferring data stored in the page register 250 to the data buffer 220) of the page register to which the extracted data (modified data) is directed and the data buffer 220 . When the registers are the same, the bad block management module 230 may generate a space allocation request for the data buffer 220 again.

즉, 배드 블록 관리 모듈(230)은 S730에서 데이터 버퍼(220)에서 추출된 수정 데이터가 페이지 레지스터(250)로 전송되는지를 확인하여, 데이터 버퍼(220)에서 추출된 수정 데이터가 페이지 레지스터(250)로 전송되는 경우 데이터 버퍼(220)의 공간 할당 요청을 다시 발생시킴으로써, 교착 상태를 회피할 수 있다.That is, the bad block management module 230 checks whether the modified data extracted from the data buffer 220 is transmitted to the page register 250 in S730 , and the modified data extracted from the data buffer 220 is transferred to the page register 250 . ), by re-issuing the space allocation request of the data buffer 220, it is possible to avoid the deadlock.

따라서, 교착 상태가 예견될 시 데이터 버퍼(220)의 공간 할당 요청이 반복하여 발생됨으로써, 페이지 레지스터(250)로부터 전송되는 데이터는 데이터 버퍼(220)에서 수정 데이터가 추출되는 저장 공간 이외의 다른 저장 공간에 저장되고 이를 통해 교착 상태가 회피될 수 있다.Accordingly, when a deadlock is predicted, a request for space allocation of the data buffer 220 is repeatedly generated, so that data transmitted from the page register 250 is stored in a storage space other than the storage space from which the correction data is extracted from the data buffer 220 . It is stored in space, so that deadlock can be avoided.

이상, 교착 상태를 회피하는 동작에서 S730이 배드 블록 관리 모듈(230)에 의해 수행되는 것으로 설명되었으나, 이에 제한되거나 한정되지 않고 S720과 동시에 활성화되고 페이지 레지스터(250)로부터 데이터 버퍼(220)로 데이터가 전송된 이후 비활성화되는 자원 모니터(Resource monitor)가 구비됨으로써, 선택적으로 활성화 및 비활성화되는 자원 모니터에 의해 S730가 수행될 수도 있다.In the above, it has been described that S730 is performed by the bad block management module 230 in the operation to avoid the deadlock, but it is not limited thereto and is activated at the same time as S720 and data is transferred from the page register 250 to the data buffer 220 . By being provided with a resource monitor that is deactivated after is transmitted, S730 may be performed by a resource monitor that is selectively activated and deactivated.

이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 어플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The device described above may be implemented as a hardware component, a software component, and/or a combination of the hardware component and the software component. For example, the devices and components described in the embodiments may include a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable gate array (FPGA), and a programmable logic unit (PLU). It may be implemented using one or more general purpose or special purpose computers, such as a logic unit, microprocessor, or any other device capable of executing and responding to instructions. The processing device may execute an operating system (OS) and one or more software applications running on the operating system. The processing device may also access, store, manipulate, process, and generate data in response to execution of the software. For convenience of understanding, although one processing device is sometimes described as being used, one of ordinary skill in the art will recognize that the processing device includes a plurality of processing elements and/or a plurality of types of processing elements. It can be seen that can include For example, the processing device may include a plurality of processors or one processor and one controller. Other processing configurations are also possible, such as parallel processors.

소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.The software may comprise a computer program, code, instructions, or a combination of one or more thereof, which configures a processing device to operate as desired or is independently or collectively processed You can command the device. The software and/or data may be embodied in any type of machine, component, physical device, computer storage medium or device for interpretation by or providing instructions or data to the processing device. have. The software may be distributed over networked computer systems, and stored or executed in a distributed manner. Software and data may be stored in one or more computer-readable recording media.

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 이때, 매체는 컴퓨터로 실행 가능한 프로그램을 계속 저장하거나, 실행 또는 다운로드를 위해 임시 저장하는 것일 수도 있다. 또한, 매체는 단일 또는 수 개의 하드웨어가 결합된 형태의 다양한 기록수단 또는 저장수단일 수 있는데, 어떤 컴퓨터 시스템에 직접 접속되는 매체에 한정되지 않고, 네트워크 상에 분산 존재하는 것일 수도 있다. 매체의 예시로는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등을 포함하여 프로그램 명령어가 저장되도록 구성된 것이 있을 수 있다. 또한, 다른 매체의 예시로, 어플리케이션을 유통하는 앱 스토어나 기타 다양한 소프트웨어를 공급 내지 유통하는 사이트, 서버 등에서 관리하는 기록매체 내지 저장매체도 들 수 있다.The method according to the embodiment may be implemented in the form of program instructions that can be executed through various computer means and recorded in a computer-readable medium. In this case, the medium may be to continuously store the program executable by the computer, or to temporarily store the program for execution or download. In addition, the medium may be a variety of recording means or storage means in the form of a single or several hardware combined, it is not limited to a medium directly connected to any computer system, and may exist distributed on a network. Examples of the medium include a hard disk, a magnetic medium such as a floppy disk and a magnetic tape, an optical recording medium such as CD-ROM and DVD, a magneto-optical medium such as a floppy disk, and those configured to store program instructions, including ROM, RAM, flash memory, and the like. In addition, examples of other media may include recording media or storage media managed by an app store that distributes applications, sites that supply or distribute other various software, and servers.

이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.As described above, although the embodiments have been described with reference to the limited embodiments and drawings, various modifications and variations are possible from the above description by those skilled in the art. For example, the described techniques are performed in a different order than the described method, and/or the described components of the system, structure, apparatus, circuit, etc. are combined or combined in a different form than the described method, or other components Or substituted or substituted by equivalents may achieve an appropriate result.

그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents to the claims are also within the scope of the following claims.

Claims (13)

컴퓨터로 구현되는 런타임 배드 블록 관리 시스템에 의해 수행되는 런타임 배드 블록 관리 방법에 있어서,
프로그램 요청에 응답하여 데이터 버퍼에 저장된 데이터를 페이지 레지스터로 전송하는 단계;
상기 페이지 레지스터에 저장된 데이터가 데이터 블록에 프로그램되기 이전에, 프로그램 대상이 되는 데이터인 상기 데이터 버퍼에 저장된 데이터를 저장 및 유지하지 않고 삭제하여 상기 데이터 버퍼의 저장 공간을 확보하는 단계;
상기 페이지 레지스터에 저장된 데이터를 상기 데이터 블록에 프로그램하는 단계;
상기 프로그램 동작에서 상기 데이터 블록을 구성하는 복수의 페이지들 중 특정 페이지에서의 프로그램 오류가 야기하는 런타임 배드 블록이 발생되는 경우, 상기 페이지 레지스터에 저장된 데이터를 상기 데이터 버퍼로 전송하는 단계;
상기 데이터 블록을 구성하는 상기 복수의 페이지들 중 상기 프로그램 오류가 발생된 상기 특정 페이지 이전에 위치하는 적어도 하나의 페이지까지 저장된 데이터를 상기 페이지 레지스터를 통해 예비 블록에 포함되는 적어도 하나의 페이지로 복사하는 단계; 및
상기 데이터 버퍼에 저장된 데이터를 상기 페이지 레지스터를 통해 상기 예비 블록에 포함되는 상기 적어도 하나의 페이지 이후에 위치하는 적어도 하나의 페이지에 프로그램하는 단계
를 포함하고,
상기 페이지 레지스터에 저장된 데이터를 상기 데이터 블록에 프로그램하는 단계는,
상기 데이터 버퍼의 상태와 무관하게 독립적으로 진행되는 것을 특징으로 하는 런타임 배드 블록 관리 방법.
A runtime bad block management method performed by a computer-implemented runtime bad block management system, the method comprising:
transmitting the data stored in the data buffer to the page register in response to the program request;
securing a storage space of the data buffer by deleting the data stored in the data buffer, which is the data to be programmed, before the data stored in the page register is programmed into the data block;
programming the data stored in the page register into the data block;
transmitting data stored in the page register to the data buffer when a runtime bad block caused by a program error in a specific page among a plurality of pages constituting the data block occurs in the program operation;
copying data stored up to at least one page located before the specific page in which the program error occurs among the plurality of pages constituting the data block to at least one page included in the spare block through the page register; step; and
programming the data stored in the data buffer into at least one page positioned after the at least one page included in the spare block through the page register;
including,
The step of programming the data stored in the page register into the data block comprises:
A runtime bad block management method, characterized in that independently of the state of the data buffer.
삭제delete 삭제delete 제1항에 있어서,
상기 페이지 레지스터에 저장된 데이터를 상기 데이터 버퍼로 전송하는 단계는,
상기 특정 페이지에 프로그램 되었어야 할 데이터를 상기 데이터 버퍼로 전송하는 단계인 것을 특징으로 하는 런타임 배드 블록 관리 방법.
According to claim 1,
Transmitting the data stored in the page register to the data buffer comprises:
and transmitting data that should have been programmed in the specific page to the data buffer.
제4항에 있어서,
상기 데이터 버퍼에 저장된 데이터를 상기 페이지 레지스터를 통해 상기 예비 블록에 포함되는 상기 적어도 하나의 페이지 이후에 위치하는 적어도 하나의 페이지에 프로그램하는 단계는,
상기 특정 페이지에 프로그램 되었어야 할 데이터를 상기 예비 블록에 포함되는 상기 적어도 하나의 페이지 이후에 위치하는 적어도 하나의 페이지에 프로그램하는 단계인 것을 특징으로 하는 런타임 배드 블록 관리 방법.
5. The method of claim 4,
The step of programming the data stored in the data buffer into at least one page located after the at least one page included in the spare block through the page register,
and programming the data to be programmed in the specific page into at least one page located after the at least one page included in the spare block.
제1항에 있어서,
상기 페이지 레지스터에 저장된 데이터를 상기 데이터 버퍼로 전송하는 단계는,
상기 데이터 버퍼의 공간 할당 요청을 발생시키는 단계; 및
상기 데이터 버퍼에서 데이터의 추출이 발생되어 상기 추출된 데이터가 향하는 페이지 레지스터와 상기 데이터 버퍼의 공간 할당 요청을 발생시킨 페이지 레지스터가 동일한 경우, 상기 데이터 버퍼의 공간 할당 요청을 다시 발생시키는 단계
를 포함하는 것을 특징으로 하는 런타임 배드 블록 관리 방법.
According to claim 1,
Transmitting the data stored in the page register to the data buffer comprises:
generating a space allocation request for the data buffer; and
reissuing the data buffer space allocation request when the data is extracted from the data buffer and the page register to which the extracted data is directed and the page register that generated the data buffer space allocation request are the same
A runtime bad block management method comprising a.
제1항에 있어서,
상기 페이지 레지스터를 통해 예비 블록에 포함되는 적어도 하나의 페이지로 복사하는 단계 및 상기 데이터 버퍼에 저장된 데이터를 상기 페이지 레지스터를 통해 상기 예비 블록에 포함되는 상기 적어도 하나의 페이지 이후에 위치하는 적어도 하나의 페이지에 프로그램하는 단계 각각은,
비동기 처리되는 것을 특징으로 하는 런타임 배드 블록 관리 방법.
According to claim 1,
copying the data stored in the data buffer to at least one page included in the spare block through the page register, and at least one page positioned after the at least one page included in the spare block through the page register Each of the steps to program in
A runtime bad block management method, characterized in that asynchronous processing.
제1항에 있어서,
상기 페이지 레지스터를 통해 예비 블록에 포함되는 적어도 하나의 페이지로 복사하는 단계는,
상기 특정 페이지 이전에 위치하는 적어도 하나의 페이지까지 저장된 데이터를 상기 페이지 레지스터를 통해 상기 예비 블록에 포함되는 상기 적어도 하나의 페이지로 순차적으로 복사하는 단계인 것을 특징으로 하는 런타임 배드 블록 관리 방법.
According to claim 1,
The step of copying to at least one page included in the spare block through the page register comprises:
and sequentially copying data stored up to at least one page located before the specific page to the at least one page included in the spare block through the page register.
제1항에 있어서,
상기 런타임 배드 블록이 발생된 상기 데이터 블록에 대한 접근이 상기 예비 블록으로 향하도록 블록 사상 테이블-상기 블록 사상 테이블은 의사 물리 블록 영역에 할당된 상기 데이터 블록 및 상기 예비 블록을 향한 접근을 정의함-을 업데이트하는 단계
를 더 포함하는 런타임 배드 블록 관리 방법.
According to claim 1,
block mapping table such that access to the data block in which the runtime bad block is generated is directed to the spare block, wherein the block mapping table defines the data block allocated to a pseudo-physical block area and access to the spare block; steps to update
A runtime bad block management method further comprising a.
컴퓨터와 결합되어 런타임 배드 블록 관리 방법을 실행시키기 위해 컴퓨터 판독 가능한 기록 매체에 기록된 컴퓨터 프로그램에 있어서,
상기 런타임 배드 블록 관리 방법은,
프로그램 요청에 응답하여 데이터 버퍼에 저장된 데이터를 페이지 레지스터로 전송하는 단계;
상기 페이지 레지스터에 저장된 데이터가 데이터 블록에 프로그램되기 이전에, 프로그램 대상이 되는 데이터인 상기 데이터 버퍼에 저장된 데이터를 저장 및 유지하지 않고 삭제하여 상기 데이터 버퍼의 저장 공간을 확보하는 단계;
상기 페이지 레지스터에 저장된 데이터를 상기 데이터 블록에 프로그램하는 단계;
상기 프로그램 동작에서 상기 데이터 블록을 구성하는 복수의 페이지들 중 특정 페이지에서의 프로그램 오류가 야기하는 런타임 배드 블록이 발생되는 경우, 상기 페이지 레지스터에 저장된 데이터를 상기 데이터 버퍼로 전송하는 단계;
상기 데이터 블록을 구성하는 상기 복수의 페이지들 중 상기 프로그램 오류가 발생된 상기 특정 페이지 이전에 위치하는 적어도 하나의 페이지까지 저장된 데이터를 상기 페이지 레지스터를 통해 예비 블록에 포함되는 적어도 하나의 페이지로 복사하는 단계; 및
상기 데이터 버퍼에 저장된 데이터를 상기 페이지 레지스터를 통해 상기 예비 블록에 포함되는 상기 적어도 하나의 페이지 이후에 위치하는 적어도 하나의 페이지에 프로그램하는 단계
를 포함하고,
상기 페이지 레지스터에 저장된 데이터를 상기 데이터 블록에 프로그램하는 단계는,
상기 데이터 버퍼의 상태와 무관하게 독립적으로 진행되는 것을 특징으로 하는 컴퓨터 판독 가능한 기록 매체에 기록된 컴퓨터 프로그램.
A computer program recorded on a computer-readable recording medium for executing a runtime bad block management method in combination with a computer,
The runtime bad block management method comprises:
transmitting the data stored in the data buffer to the page register in response to the program request;
securing a storage space of the data buffer by deleting the data stored in the data buffer, which is the data to be programmed, before the data stored in the page register is programmed into the data block;
programming the data stored in the page register into the data block;
transmitting data stored in the page register to the data buffer when a runtime bad block caused by a program error in a specific page among a plurality of pages constituting the data block occurs in the program operation;
copying data stored up to at least one page located before the specific page in which the program error occurs among the plurality of pages constituting the data block to at least one page included in the spare block through the page register; step; and
programming the data stored in the data buffer into at least one page positioned after the at least one page included in the spare block through the page register;
including,
The step of programming the data stored in the page register into the data block comprises:
A computer program recorded on a computer-readable recording medium, characterized in that it proceeds independently regardless of the state of the data buffer.
삭제delete 컴퓨터로 구현되어 런타임 배드 블록 관리 방법을 수행하는 런타임 배드 블록 관리 시스템에 있어서,
프로그램 요청에 응답하여 데이터 버퍼에 저장된 데이터를 페이지 레지스터로 전송하고, 상기 페이지 레지스터에 저장된 데이터가 데이터 블록에 프로그램되기 이전에, 프로그램 대상이 되는 데이터인 상기 데이터 버퍼에 저장된 데이터를 저장 및 유지하지 않고 삭제하여 상기 데이터 버퍼의 저장 공간을 확보하며, 상기 페이지 레지스터에 저장된 데이터를 상기 데이터 블록에 프로그램하는 컨트롤러; 및
상기 프로그램 동작에서 상기 데이터 블록을 구성하는 복수의 페이지들 중 특정 페이지에서의 프로그램 오류가 야기하는 런타임 배드 블록이 발생되는 경우, 상기 페이지 레지스터에 저장된 데이터를 상기 데이터 버퍼로 전송하고, 상기 데이터 블록을 구성하는 상기 복수의 페이지들 중 상기 프로그램 오류가 발생된 상기 특정 페이지 이전에 위치하는 적어도 하나의 페이지까지 저장된 데이터를 상기 페이지 레지스터를 통해 예비 블록에 포함되는 적어도 하나의 페이지로 복사하며, 상기 데이터 버퍼에 저장된 데이터를 상기 페이지 레지스터를 통해 상기 예비 블록에 포함되는 상기 적어도 하나의 페이지 이후에 위치하는 적어도 하나의 페이지에 프로그램하는 배드 블록 관리 모듈
을 포함하고,
상기 컨트롤러는,
상기 페이지 레지스터에 저장된 데이터를 상기 데이터 블록에 프로그램하는 것을 상기 데이터 버퍼의 상태와 무관하게 독립적으로 진행하는 것을 특징으로 하는 런타임 배드 블록 관리 시스템.
A runtime bad block management system implemented by a computer to perform a runtime bad block management method,
In response to a program request, the data stored in the data buffer is transferred to the page register, and before the data stored in the page register is programmed into the data block, the data stored in the data buffer, which is the data to be programmed, is not stored and maintained. a controller that secures a storage space of the data buffer by deleting the data buffer and programs the data stored in the page register into the data block; and
In the program operation, when a runtime bad block caused by a program error in a specific page among a plurality of pages constituting the data block occurs, the data stored in the page register is transferred to the data buffer, and the data block is saved. Copying data stored up to at least one page located before the specific page in which the program error occurs among the plurality of pages constituting the page to at least one page included in the spare block through the page register, and the data buffer A bad block management module that programs data stored in the at least one page located after the at least one page included in the spare block through the page register
including,
The controller is
The runtime bad block management system, characterized in that programming the data stored in the page register into the data block independently proceeds regardless of the state of the data buffer.
삭제delete
KR1020210066200A 2021-05-24 2021-05-24 Run-time bad block management method of flash memory KR102316532B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210066200A KR102316532B1 (en) 2021-05-24 2021-05-24 Run-time bad block management method of flash memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210066200A KR102316532B1 (en) 2021-05-24 2021-05-24 Run-time bad block management method of flash memory

Publications (1)

Publication Number Publication Date
KR102316532B1 true KR102316532B1 (en) 2021-10-22

Family

ID=78275791

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210066200A KR102316532B1 (en) 2021-05-24 2021-05-24 Run-time bad block management method of flash memory

Country Status (1)

Country Link
KR (1) KR102316532B1 (en)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060006554A (en) * 2004-07-16 2006-01-19 삼성전자주식회사 Flash memory system including bad block management unit
KR20070015074A (en) * 2005-07-29 2007-02-01 소니 가부시끼 가이샤 Storage device, computer system, and storage system
KR100823170B1 (en) * 2007-01-31 2008-04-21 삼성전자주식회사 Memory system and memory card using bad block as slc mode
US20100306579A1 (en) * 2009-05-29 2010-12-02 Kwang Ho Baek Nonvolatile memory device and method of programming the same
KR20110121897A (en) * 2010-05-03 2011-11-09 삼성전자주식회사 User device and program fail procerssing method thereof
KR20120037786A (en) * 2010-10-12 2012-04-20 삼성전자주식회사 Storage device, lock mode management method thereof and memory system having the same
US20150178222A1 (en) * 2013-12-19 2015-06-25 International Business Machines Corporation Asynchronous swap mechanism and page eviction from memory
KR20190111608A (en) * 2018-03-23 2019-10-02 에스케이하이닉스 주식회사 Semiconductor memory device and operating method thereof
KR20200106739A (en) * 2019-03-05 2020-09-15 에스케이하이닉스 주식회사 Controller, memory system having the same and operating method thereof

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060006554A (en) * 2004-07-16 2006-01-19 삼성전자주식회사 Flash memory system including bad block management unit
KR20070015074A (en) * 2005-07-29 2007-02-01 소니 가부시끼 가이샤 Storage device, computer system, and storage system
KR100823170B1 (en) * 2007-01-31 2008-04-21 삼성전자주식회사 Memory system and memory card using bad block as slc mode
US20100306579A1 (en) * 2009-05-29 2010-12-02 Kwang Ho Baek Nonvolatile memory device and method of programming the same
KR20110121897A (en) * 2010-05-03 2011-11-09 삼성전자주식회사 User device and program fail procerssing method thereof
KR20120037786A (en) * 2010-10-12 2012-04-20 삼성전자주식회사 Storage device, lock mode management method thereof and memory system having the same
US20150178222A1 (en) * 2013-12-19 2015-06-25 International Business Machines Corporation Asynchronous swap mechanism and page eviction from memory
KR20190111608A (en) * 2018-03-23 2019-10-02 에스케이하이닉스 주식회사 Semiconductor memory device and operating method thereof
KR20200106739A (en) * 2019-03-05 2020-09-15 에스케이하이닉스 주식회사 Controller, memory system having the same and operating method thereof

Similar Documents

Publication Publication Date Title
CN109144888B (en) Memory system
US10248322B2 (en) Memory system
CN113138713A (en) Memory system
US10140031B2 (en) Hierarchical flash translation layer structure and method for designing the same
JP5161696B2 (en) Virtual computer system, error recovery method in virtual computer system, and virtual computer control program
US20080235477A1 (en) Coherent data mover
US11966329B2 (en) Address map caching for a memory system
US10534551B1 (en) Managing write operations during a power loss
JP2014509763A (en) Method and device for performing memory migration
CN113924625B (en) Operational consistency in non-volatile memory systems
CN107111548B (en) The object memories migration of hardware auxiliary
KR20200113992A (en) Apparatus and method for reducing cell disturb in open block of the memory system during receovery procedure
US11782828B2 (en) Efficiently purging non-active blocks in NVM regions using virtblock arrays
US10705954B2 (en) Efficiently purging non-active blocks in NVM regions while preserving large pages
KR20210024763A (en) Apparatus and method for handling firmware error in operation of memory system
JP2021033845A (en) Memory system and control method
CN111462790B (en) Method and apparatus for pipeline-based access management in storage servers
US10853247B2 (en) Device for maintaining data consistency between hardware accelerator and host system and method thereof
KR102316532B1 (en) Run-time bad block management method of flash memory
KR20110052902A (en) Computing system and method for controling memory of computing system
US11900102B2 (en) Data storage device firmware updates in composable infrastructure
CN116027981A (en) Data memory and data recovery method thereof
US10872008B2 (en) Data recovery after storage failure in a memory system
US11003580B1 (en) Managing overlapping reads and writes in a data cache
Jang et al. Achieving low write latency through new stealth program operation supporting early write completion in NAND flash memory

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant