KR20060134011A - Non-volatile memory and method with memory planes alignment - Google Patents

Non-volatile memory and method with memory planes alignment Download PDF

Info

Publication number
KR20060134011A
KR20060134011A KR1020067013315A KR20067013315A KR20060134011A KR 20060134011 A KR20060134011 A KR 20060134011A KR 1020067013315 A KR1020067013315 A KR 1020067013315A KR 20067013315 A KR20067013315 A KR 20067013315A KR 20060134011 A KR20060134011 A KR 20060134011A
Authority
KR
South Korea
Prior art keywords
block
memory
logical
update
sector
Prior art date
Application number
KR1020067013315A
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
Priority to US10/750,155 priority Critical patent/US7139864B2/en
Priority to US10/750,155 priority
Priority to US10/917,888 priority patent/US20050141313A1/en
Priority to US10/917,888 priority
Application filed by 쌘디스크 코포레이션 filed Critical 쌘디스크 코포레이션
Publication of KR20060134011A publication Critical patent/KR20060134011A/en

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • G11C16/105Circuits or methods for updating contents of nonvolatile memory, especially with 'security' features to ensure reliable replacement, i.e. preventing that old data is lost before new data is reliably written
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators

Abstract

A non-volatile memory is constituted from a set of memory planes, each having its own set of read/write circuits so that the memory planes can operate in parallel. The memory is further organized into erasable blocks, each for storing a logical group of logical units of data. In updating a logical unit, all versions of a logical unit are maintained in the same plane as the original. Preferably, all versions of a logical unit are aligned within a plane so that they are all serviced by the same set of sensing circuits. In a subsequent garbage collection operation, the latest version of the logical unit need not be retrieved from a different plane or a different set of sensing circuits, otherwise resulting in reduced performance. In one embodiment, any gaps left after alignment are padded by copying latest versions of logical units in sequential order thereto.

Description

메모리 플레인 배열을 갖춘 비휘발성 메모리 및 방법{NON-VOLATILE MEMORY AND METHOD WITH MEMORY PLANES ALIGNMENT} Non-volatile memory and method with a memory plane array {NON-VOLATILE MEMORY AND METHOD WITH MEMORY PLANES ALIGNMENT}

본 발명은 일반적으로, 비휘발성 반도체 메모리에 관한 것으로, 구체적으로는 각 플레인이 읽기/쓰기 회로 그 자체로 제공되는, 병렬의 다수의 메모리 플레인들을 작동시키기 위해 최적화된 메모리 블록 관리 시스템을 구비한 것들에 관한 것이다. What the present invention generally relates to a nonvolatile semiconductor memory, in particular is provided with a respective plane, the read / write circuit itself, the memory block management system optimized to operate a plurality of memory planes in parallel, provided with relate to.

특히, 작은 형상 팩터 카드로서 패키징된 EEPROM 및 플래시 EEPROM 형태의 전하의 비휘발성 저장이 가능한 고상 메모리(solid-state memory)는 최근 다양한 모바일 및 핸드헬드 디바이스, 특히, 정보 기기 및 가전 제품의 최상의 저장 장치가 되고 있다. In particular, the EEPROM and flash EEPROM type non-volatile storage is a solid memory (solid-state memory) capable of charge packaged as a small shape factor card, has recently a variety of mobile and handheld devices and, in particular, information equipment and the best storage of home appliances that is. 역시, 고상 메모리인 컨트롤러(임의 접근 메모리)와는 달리, 플래시 메모리는 비휘발성이며, 파워가 꺼진 이후에도 그 저장된 데이터를 유지한다. Nevertheless, unlike the controller (Random Access Memory) solid state memory, flash memory is non-volatile and retains its stored data even after power is turned off. 또한, 컨트롤러(판독 전용 메모리)와는 달리, 플래시 메모리는 디스크 저장 디바이스와 유사하게 재기록할 수 있다. Further, unlike the controller (Read Only Memory), a flash memory can be rewritten similarly to the disk storage device. 보다 높은 비용에도 불구하고, 플래시 메모리는 대용량 저장 용례에 점증적으로 사용되고 있다. Despite the higher cost, flash memory is increasingly being used in mass storage applications ever. 하드 드라이브 및 플로피 디스크 같은 회전 자기 매체에 기초한 종래의 대용량 저장부는 모바일 및 핸드헬드 환경에서는 부적합하다. Conventional mass storage, based on the hard drive and floppy disk rotating magnetic media such portion is not appropriate in the mobile and handheld environment. 이는 디스크 드라이브가 부피가 큰 경향이 있으며, 기계적 손상을 받기 쉽고, 높은 레이턴시(latency) 및 높은 파워 요구를 갖기 때문이다. This tends disk drives are bulky, susceptible to mechanical damage, because to have a high latency (latency) and high power requirements. 이들 바람직하지 못한 속성은 디스크 기반 저장부가 대부분의 모바일 및 휴대용 용례들에 비실용적이게 한다. These undesirable attribute is this impractical in the additional disk-based storage most mobile and portable applications. 다른 한편, 내장형 및 제거가능한 카드 형태 양자 모두의 플래시 메모리는 그 작은 크기, 낮은 파워 소비, 고속 및 고 신뢰성 특성 때문에, 모바일 및 핸드헬드 환경에 이상적으로 적합하다. On the other hand, in both embedded and removable flash memory card form the quantum is ideally suited to its small size, low power consumption, high speed and high reliability characteristics because, mobile and handheld environment.

플래시 EEPROM은 삭제될 수 있고, 그 메모리 셀에 새로운 데이터가 기록 또는 "프로그램"될 수 있는 비휘발성 메모리라는 점에서, EEPROM(전기적 삭제 및 프로그램가능 판독 전용 메모리)와 유사하다. Flash EEPROM can be removed, in that the memory cells in that it is a new non-volatile memory in which data can be written, or "program", it is similar to EEPROM (electrically erasable and programmable read only memory). 양자는 소스와 드레인 영역 사이에서 반도체 기판의 채널 영역 위에 배치되어 있는, 전계 효과 트랜지스터 구조의, 부유(비접속) 도전성 게이트를 활용한다. Both utilize a field effect transistor structure, which is disposed over the channel region of the semiconductor substrate, a floating (unconnected) conductive gate between the source and drain regions. 이때, 제어 게이트는 부유 게이트 위에 제공된다. At this time, the control gate is provided over the floating gate. 트랜지스터의 임계 전압 특성은 부유 게이트상에 유지된 전하의 양에 의해 제어된다. The threshold voltage characteristic of the transistor is controlled by the amount of the electric charge held on the floating gate. 즉, 부유 게이트상의 주어진 레벨의 전하에 대하여, 트랜지스터가 그 소스와 드레인 영역 사이의 도전을 가능하게 하기 위해 "온" 상태로 전환되기 이전에, 제어 게이트에 인가되어야만 하는 대응 전압(임계치)이 존재한다. That is, with respect to the floating gate a given level on the charge, and the corresponding voltage (threshold) that the transistors should be applied to the control gate before the switch to the "on" state to enable the conductive between its source and drain regions are present do. 특히, 플래시 EEPROM 같은 플래시 메모리는 메모리 셀의 전체 블록이 동시에 삭제될 수 있게 한다. In particular, flash memory such as Flash EEPROM allows entire block of memory cells may be removed at the same time.

부유 게이트는 소정 범위의 전하를 보유하며, 따라서, 임계 전압 윈도우내의 임의의 임계 전압 레벨로 프로그램될 수 있다. Floating gate holds a charge of a predetermined range, thus, to any threshold voltage level within a threshold voltage window may be programmed. 임계 전압 윈도우의 크기는 디바이스의 최소 및 최대 임계치 레벨들에 의해 한정되며, 이는, 순차적으로, 부유 게이트상에 프로그램될 수 있는 저하의 범위에 대응한다. The size of the threshold voltage window is delimited by the minimum and maximum threshold levels of the device, which will be in sequence, corresponding to a range of degradation that can be programmed onto the floating gate. 임계치 윈도우는 일반적으로, 메모리 디바이스의 특성, 동작 조건 및 이력에 의존한다. Threshold window generally depends on the characteristics of the memory device, operating conditions and history. 윈도우내의 각각의 별개의 분해가능한 임계 전압 레벨 범위는 원론적으로, 셀의 별개의 한정된 메모리 상태를 지정하기 위해 사용될 수 있다. Threshold voltage level range within the window can each distinct decomposition is in principle, it can be used to specify a separate limited memory state of the cell.

메모리 셀로서 기능하는 트랜지스터는 통상적으로, 두 메커니즘 중 하나에 의해 "프로그램된" 상태로 프로그램된다. A transistor that functions as a memory cell is typically, is programmed to a "programmed" state by one of two mechanisms. "핫 전자 주입"에서, 드레인에 인가된 높은 전압은 전자를 기판 채널 영역을 가로질러 가속한다. The high voltage applied to the drain, at the "hot electron injection" is an electron is accelerated across the substrate channel region. 동시에, 제어 게이트에 인가된 높은 전압은 전자를 얇은 게이트 유전체를 통해 부유 게이트상으로 당긴다. At the same time, the high voltage applied to the control gate pulls the electron onto the floating gate through a thin gate dielectric. "터널링 주입"에서, 높은 전압이 기판에 대해 제어 게이트에 인가된다. In "tunneling injection," a high voltage is applied to the control gate relative to the substrate. 이 방식으로, 전자는 기판으로부터 개입(intervening) 부유 게이트로 당겨진다. In this way, electrons are pulled to the floating gate intervention (intervening) from the substrate. 용어 "프로그램"이 역사적으로, 메모리 상태를 변경하도록 메모리의 최초에 삭제되어 있는 전하 저장 유닛에 주입함으로써 메모리에 기록하는 것을 나타내지만, 이는 이제, "기록" 또는 "레코드" 같은 보다 일반적인 용어로 상호교체될 수 있다. The term "program" each other in the Historically, the more general terms, by injection into the charge storage unit that is deleted in the first memory so as to change the memory state represents the writing to the memory, which now, such as "record" and "record." It can be replaced.

메모리 디바이스는 다수의 메커니즘에 의해 삭제될 수 있다. The memory device may be erased by a number of mechanisms. EEPROM에 대하여, 메모리 셀은 부유 게이트내의 전자가 기판 채널 영역으로 얇은 산화물을 통해 터널링(즉, 포울러-노드하임(Fowler-Nordheim) 터널링)하도록 제어 게이트에 대하여 기판에 높은 전압을 인가함으로써, 전기적으로 삭제가능하다. With respect to the EEPROM, the memory cell has electrons tunnel through a thin oxide to the substrate channel region in the floating gate, electrically by applying a high voltage to the substrate relative to the control gate so as to (i. E., Bubble ulreo Nordheim (Fowler-Nordheim) tunneling) It can be deleted. 통상적으로, EEPROM은 바이트 단위로 삭제가능하다. Typically, EEPROM can be removed in bytes. 플래시 EEPROM에 대하여, 메모리는 모두 한번에 또는 하나 이상의 최소 삭제가능 블록들을 한번에 전기적으로 삭제할 수 있으며, 여기서, 최소 삭제가능 블록은 하나 이상의 섹터로 구성될 수 있고, 각 섹터는 512바이트 이상의 데이터를 저장할 수 있다. With respect to the flash EEPROM, the memory is all at one time or electrically delete one or more of minimum erase block at a time, in which, the minimum erasable block may consist of one or more sectors, each sector can store more than 512 bytes of data have.

메모리 디바이스는 통상적으로, 카드상에 장착될 수 있는 하나 이상의 메모리 칩을 포함한다. The memory device typically includes one or more memory chips that may be mounted on a card. 각 메모리 칩은 디코더와, 삭제, 기록 및 판독 회로 같은 주변 회로에 의해 지원되는 메모리 셀의 어레이를 포함한다. Each memory chip comprises an array of memory cells supported by peripheral circuits such as decoders and, deleted, write and read circuits. 또한, 지능적이고, 보다 높은 레벨의 메모리 동작 및 인터페이싱을 수행하는 컨트롤러에는 보다 정교한 메모리 디바이스가 따른다. Further, followed by the more sophisticated memory devices intelligently and, controller for performing a higher level memory operations and interfacing.

오늘날 사용되고 있는 다수의 상업적으로 성공적인 비휘발성 고상 메모리 디바이스가 존재한다. A number of commercially successful non-volatile solid-state memory devices being used today exist. 이들 메모리 디바이스는 플래시 EEPROM일 수 있거나, 비휘발성 메모리 셀의 다른 유형을 사용할 수 있다. The memory device may be a flash EEPROM, it can be used for other types of nonvolatile memory cells. 플래시 메모리 및 시스템과 그들을 제조하는 방법의 예는 미국 특허 제5,070,032호, 제5,095,344호, 제5,315,541호, 제5,343,063호 및 제5,661,053호, 제5,313,421호 및 제6,222,762호에 주어져 있다. Examples of a method for manufacturing a flash memory and systems and they are given in U.S. Patent No. 5,070,032, 1 - No. 5,095,344, No. 5,315,541, 1 - 5,343,063 and No. 5,661,053, 1 - 5,313,421 and No. 6,222,762 arc. 특히, NAND 스트링 구조를 갖는 플래시 메모리 디바이스가 미국 특허 제5,570,315호, 제5,903,495호 및 제6,046,935호에 기술되어 있다. In particular, there is a flash memory device having an NAND string structures are described in U.S. Patent No. 5,570,315, 1 - 5,903,495 and No. 6,046,935. 또한, 비휘발성 메모리 디바이스는 전하를 저장하기 위한 유전체층을 구비한 메모리 셀로 제조된다. Further, the nonvolatile memory device is made of a memory cell having a dielectric layer for storing charge. 전술된 도전성 부유 게이트 소자 대신, 유전체층이 사용된다. A conductive floating gate elements described above, instead, a dielectric layer is used. 유전체 저장 소자를 사용하는 이런 메모리 디바이스들은 에이탄(Eitan) 등의 "NROM: A Novel Localized Trapping, 2-Bit Novolatile Memory Cell(IEEE Electron Device Letters, vol. 21, no. 11, 2000년 11월, pp.543-545)"에 설명되어 있다. Such as these memory devices this tan (Eitan) using the dielectric storage element "NROM:. A Novel Localized Trapping, 2-Bit Novolatile Memory Cell (IEEE Electron Device Letters, vol 21, no 11, November 2000,. It is described in pp.543-545) ". ONO 유전체층은 소스와 드레인 확산부 사이의 채널을 가로질러 연장한다. ONO dielectric layer extends across the channel between source and drain diffusions. 1개 데이터 비트를 위한 전하가 드레인에 인접한 유전체층에 국지집결되고, 다른 데이터 비트를 위한 전하는 소스에 인접한 유전체층에 국지집결된다. And local assembled in one dielectric layer is a charge for the data bit adjacent to the drain, and is gathered in the dielectric layer adjacent to the source local charge for the other data bit. 예로서, 미국 특허 제5,768,192호 및 제6,011,725 호는 두 개의 이산화실리콘층 사이에 개재된 트랩핑 유전체를 가지는 비휘발성 메모리 셀을 개시한다. By way of example, U.S. Patent No. 5,768,192 and No. 6,011,725 ​​discloses a non-volatile memory cell having a trapping dielectric sandwiched between two silicon dioxide layers. 다중상태 데이터 저장부는 유전체내의 공간적으로 분리된 전하 저장 영역의 이진 상태를 개별적으로 판독함으로서 이행된다. It is implemented by a multi-state data storage unit separately reading the binary states of the charge storage areas spatially separated in the dielectric.

판독 및 프로그램 성능을 향상시키기 위해, 어레이내의 다수의 전하 저장 소자 또는 메모리 트랜지스터가 병렬로 판독 또는 프로그램된다. To improve read and program performance, multiple charge storage elements or memory transistors in an array are read or programmed in parallel. 따라서, 메모리 소자의 "페이지"가 함께 판독 또는 프로그램된다. Thus, a "page" of memory elements are read or program together. 기존 메모리 아키텍쳐에서, 로우(low)는 통상적으로 수 개의 인터리빙된 페이지를 포함하거나, 이는 하나의 페이지를 구성할 수 있다. In existing memory architectures, a row (low) is typically include several interleaved pages or it may constitute one page. 페이지의 모든 메모리 소자는 함께 판독 또는 프로그램된다. All memory elements of a page will be read or program together.

플래시 메모리 시스템에서, 삭제 동작은 판독 및 프로그램 동작 보다 한배 만큼 보다 긴 시간을 소요할 수 있다. In flash memory systems, erase operation may take a longer time as litter than read and program operations. 따라서, 현저한 크기의 삭제 블록을 갖는 것이 바람직하다. Therefore, it is desirable to have the erase block of a significant size. 이 방식으로, 삭제 시간은 큰 총 메모리 셀에 걸쳐 상각된다(amortized). In this manner, a delete time is amortized over a large total memory cells (amortized).

플래시 메모리 특성은 삭제된 메모리 위치에 데이터가 기록되어야만 하게 한다. Flash memory attributes will be the data is written to the memory location has been deleted. 호스트로부터의 특정 논리 어드레스의 데이터가 갱신되는 경우, 한가지 방식은 동일 물리 메모리 위치에 갱신 데이터를 재기록하는 것이다. For certain logical address from a host data is to be updated, one way is to rewrite the update data in the same physical memory location. 즉, 논리 대 물리 어드레스 맵핑은 불변이다. In other words, the logical-to-physical address mapping is unchanged. 그러나, 이는 그 물리 위치를 포함하는 전체 삭제 블록이 먼저 삭제되고, 그후, 갱신 데이터로 재기록되어야 한다는 것을 의미한다. However, this means that the entire erase block will be deleted first, then to be rewritten, updated data, including its physical location. 이 갱신 방법은 비효율적이며, 그 이유는 전체 삭제 블록이 삭제 및 재기록되는 것을 필요로 하기 때문에, 특히, 갱신되는 데이터가 단지 삭제 블록의 작은 부분을 점유하는 경우에, 비효율적이다. This update method is inefficient because, in the case that occupies a small portion of the entire erase block delete, and because it requires to be rewritten, in particular, updated data is only deleted block, is inefficient. 또한, 이는 보다 높은 메모리 블록의 삭제 재이용 빈도수를 초래하며, 이는 이 유형의 메모리 디바이스의 제한된 내구성의 견지에서 바람직하지 못하다. This also results in the deletion, and frequency reuse for higher memory block, which is not preferable in view of the limited endurance of this type of memory device.

플래시 메모리 시스템 관리의 다른 문제점은 시스템 제어 및 디렉토리 데이터에 있다. Another problem of the flash memory management system is a system control and directory data. 데이터는 다양한 메모리 동작의 과정 동안 생성 및 억세스된다. Data is produced and accessed during the course of various memory operations. 따라서, 그 효율적 취급 및 즉석 억세스는 성능에 직접적 영향을 준다. Thus, the efficient handling and instant access gives direct impact on performance. 플래시 메모리가 저장부를 의미하며, 비휘발성이기 때문에, 플래시 메모리내에 이 유형의 데이터를 유지하는 것이 바람직하다. It means parts of the flash memory is stored, since the non-volatile, it is desirable to keep the data in the flash memory of this type. 그러나, 컨트롤러와 플래시 메모리 사이의 개입 파일 관리 시스템이 있으면, 데이터는 직접적으로 억세스될 수 있다. However, if the intervening file management system between the controller and flash memory, the data may be accessed directly. 또한, 시스템 제어 및 디렉토리 데이터는 활성적이고, 분화(fragmented)되는 경향이 있으며, 이는 큰 크기의 블록 삭제를 갖는 시스템의 저장에 유리하지 않다. Also, system control and directory data is active and, tends to differentiate (fragmented), which is not advantageous for the storage system having a large size block erase. 종래에, 이 유형의 데이터는 컨트롤러 램(RAM)에 설정되며, 그에 의해, 컨트롤러에 의한 직접 억세스가 가능하다. In the past, this type of data is set to a controller random access memory (RAM), and thereby, it is possible to directly access by the controller. 메모리 디바이스가 파워공급된 이후, 초기화 프로세스는 플래시 메모리가 필요한 시스템 제어 및 디렉토리 정보를 컨트롤러 램에 배치하도록 컴파일하기 위해 스캐닝될 수 있게 한다. After the memory device the power supply, the initialization process is able to be scanned in order to compile to place the system control and directory information that is required, the flash memory in the controller RAM. 이 프로세스는 시간을 소요하며, 컨트롤러 램 용량을 필요로 하고, 이 모두는 플래시 메모리 용량이 증가하면 보다 심해진다. This process is time consuming and requires the controller RAM, all of which are deep than if the increased flash memory capacity.

US 6,567,307호는 스크래치 패드로서 작용하는 다수의 삭제 블록에 갱신 데이터를 기록하고, 궁극적으로, 다양한 블록중 유효 섹터를 병합하며, 그들을 논리 순차 순서로 재배열한 이후 섹터에 재기록하는 것을 포함하는 큰 삭제 블록 사이의 섹터 갱신을 다루는 방법을 개시한다. US 6,567,307 discloses a large erase block, comprising: recording the update data in multiple erase blocks acting as scratch pad and, ultimately, merging the valid sectors of the various blocks and rewriting them after rearranged sectors in logical sequence It discloses how to handle the update of the sector between. 이 방법에서, 모든 미소한 갱신시 블록이 삭제 및 재기록될 필요가 없다. In this way, it is not all smiles when breaking blocks need to be deleted and rewritten.

WO 03/027828 및 WO 00/49488 양자 모두는 지역(zone)내의 논리 섹터 어드레스를 구획화하는 것을 포함하는 큰 삭제 블록 사이의 갱신을 다루는 메모리 시스템을 개시한다. WO 03/027828 and WO 00/49488 both disclose a memory system dealing with updates among large erase block comprising a segmented logical sector address within the area (zone). 논리 어드레스 범위의 작은 지역이 사용자 데이터를 위한 다른 지역으로부터 별개의 활성적 시스템 제어 데이터를 위해 예약된다. The small regions of logical address range is reserved for a separate system actively control data from another area for user data. 이 방식으로, 그 소유의 지역에서의 시스템 제어 데이터의 조작은 다른 지역에서의 연계된 사용자 데이터와 상호작용하지 않는다. In this way, the operation of the system control data in the area of ​​its own does not interact with the associated user data in another area. 갱신은 논리 섹터 레벨에 있으며, 기록 포인터는 기록될 블록내의 대응 물리 섹터를 지시한다. Update is the logical sector level, the write pointer points to the corresponding physical sectors in a block to be written. 맵핑 정보는 램에 버퍼링되고, 궁극적으로, 메인 메모리내의 섹터 할당 테이블에 저장된다. Mapping information is buffered in RAM and eventually is stored in a sector allocation table in the main memory. 논리 섹터의 최신 버전은 기존 블록 중의 모든 이전 버전을 폐기시키며, 이는 부분적으로 폐기된다. The latest version of the logical sector is sikimyeo discard all previous versions of the old block, which is partly disposed of. 허용가능한 방식으로 부분적 폐기 블록을 유지하기 위해 조각 모음이 수행된다. The defragmentation is performed to maintain the partial disposal block to an acceptable manner.

종래의 시스템은 다수의 블록에 걸쳐 분포된 갱신 데이터를 갖는 경향이 있거나, 갱신 데이터가 다수의 기존 부분을 부분적 폐기할 수 있다. Conventional systems, or tend to have the update data distributed over a plurality of blocks, it is possible to update the data is disposed of a number of existing parts partially. 종종, 부분적 폐기 블록에 대해 대량의 조각 모음이 필요한 결과가 얻어지며, 이는 비효율적이고, 메모리의 영구적 노화를 초래한다. Often, the results require defragmentation of large amounts obtained for the partial disposal block, which is inefficient, resulting in a permanent memory of aging. 또한, 비순차적 갱신에 비해 순차적 갱신을 다루는 계통적 및 효율적 방식이 존재하지 않는다. In addition, the non-systematic and efficient way of dealing with sequential update as compared to sequential update exists.

따라서, 고용량 및 고성능 비휘발성 메모리에 대한 일반적 필요성이 존재한다. Thus, there is a general need for high capacity and high performance non-volatile memory. 특히, 상술된 문제점 없이 큰 블록으로 메모리 동작을 수행할 수 있는 고용량 비휘발성 메모리를 가질 필요가 있다. In particular, there is a need to have a high capacity non-volatile memory that can perform memory operations in large blocks without the aforementioned problems.

비휘발성 메모리 시스템은 물리적 메모리 위치의 물리적 그룹으로 조직화된다. A non-volatile memory system is organized in physical groups of physical memory locations. 각 물리적 그룹(메타블록)은 유닛으로서 삭제가능하며, 데이터의 논리적 그룹을 저장하기 위해 사용될 수 있다. Each physical group (metablock) is possible removed as a unit, it may be used to store a logical group of data. 메모리 관리 시스템은 논리적 그룹의 갱신 데이터를 기록하기 위해 전용화된 메타블록 할당에 의해 데이터의 논리적 그룹의 갱신을 가능하게 한다. Memory management system allows for update of a logical group of data by a dedicated screen metablock allocated for recording the update data of the logical group. 갱신 메타블록은 갱신 데이터를 수신된 순서로 레코드하고, 레코딩이 원래 저장된 바와 같은 정확한 논리적 순서(순차적)인지 아닌지(카오틱) 여부에 제한을 갖지 않는다. Update metablock has no restriction on whether or not the correct logical order (sequence), such as to record the received update data to order, as the recording is stored in the original (chaotic). 결과적으로, 갱신 메타블록은 추가 레코딩을 위해 폐쇄된다. As a result, the update metablock is closed to further recording. 다수의 프로세스 중 하나가 취해지지만, 궁극적으로, 원본 메타블록을 교체하는 정확한 순서의 완전히 채워진 메타블록으로 종결된다. One of a number of process is taken, ultimately, is terminated in a completely filled metablock in the correct order to replace the original metablock. 카오틱의 경우에, 디렉토리 데이터가 빈번한 갱신을 수행하는 방식으로 비휘발성 메모리내에 유지된다. In the case of chaotic, it is held in the nonvolatile memory in such a manner as to perform the update directory data is frequent. 이 시스템은 다수의 논리적 그룹이 동시에 갱신되는 것을 지원한다. The system supports multiple logical group being updated at the same time.

본 발명의 한가지 특징은 데이터가 논리적 그룹 단위로 갱신될 수 있게 한다. One feature of the present invention allows data to be updated in the logical group. 따라서, 논리적 그룹이 갱신될 때, 논리적 유닛의 분포(그리고, 또한, 갱신이 폐기하는 메모리 유닛의 산재)가 소정 범위로 제한된다. Thus, when updating the logical group, the logical distribution of the unit (and, also, scattered in the memory unit for updating the waste) it is limited to a predetermined range. 이는 논리적 그룹이 통상 물리적 블록내에 포함될 때 특히 그러하다. This is especially true when the logical group included in a normal physical block.

논리적 그룹의 갱신 동안, 통상적으로 하나 또는 두 개의 블록이 갱신된 논리적 유닛을 버퍼링하기 위해 할당될 필요가 있다. During updates of the logical group, it is typically required to be assigned to buffer the logical units of one or two update blocks. 따라서, 조각 모음은 비교적 보다 소수의 블록에 걸쳐 수행되기만 하면 된다. Accordingly, if relatively more defragmentation is performed over a long as a small number of blocks. 카오틱 블록의 조각 모음은 병합 또는 압축 중 어느 하나에 의해 수행될 수 있다. Defragmentation of the chaotic block may be performed by any one of the merging or compression.

갱신 프로세스의 경제성은 순차적 갱신에 비해 카오틱(비순차적) 갱신을 위해 어떠한 추가적인 블록도 할당될 필요가 없도록 갱신 블록의 포괄적 처리시 보다 더 명백하다. Economy of the update process is more apparent than in the chaotic (non-sequential) comprehensive treatment of the update blocks so that you do not need to be allocated any additional block for the update as compared to sequential update. 모든 갱신 블록은 순차적 갱신 블록으로서 할당되며, 임의의 갱신 블록은 카오틱 갱신 블록으로 변할 수 있다. All update blocks are allocated as sequential update block, and any update block may vary as a chaotic update block. 사실, 순차로부터 카오틱으로의 갱신 블록의 변경은 임의적이다. In fact, the change of an update block from sequential to chaotic is discretionary.

시스템 자원의 효율적 사용은 다수의 논리적 그룹이 동시에 갱신될 수 있게 한다. Efficient use of system resources allows multiple logical groups can be updated simultaneously. 이는 효율을 추가로 증가시키고, 오버헤드를 감소시킨다. This increases further the efficiency and reduce overhead.

다수개의 메모리 평면들 상에 분산되는 메모리용 정렬 Arranged for the memory to be dispersed in a plurality of memory planes

본 발명의 또 다른 양상을 따라, 논리 유니트들이 병렬로 읽기 또는 복수개의 평면들로 프로그램될 수 있도록, 삭제 가능한 블록으로 구성되고, 그리고 복수개의 메모리 평면들로부터 구성되는 메모리 어레이에 있어서, 소정의 메모리 평면에 저장된 제1 블록의 최초 논리 유니트는 업데이트될 때, 준비 상태(provision)에서, 최초 상태와 동일한 평면 내에 업데이트된 논리 유니트가 유지할 수 있도록 구성된다. According to still another aspect of the invention, so that the logic unit may be programmed with a read or a plurality of planes in parallel, and configured as a possible deletion block, and to the memory array, which is comprised of a plurality of memory planes, a predetermined memory planar first logical units of the first block is stored in is configured to be updated at the time, the ready state (provision), to maintain the updated logical unit in the same plane as the first state. 상기와 같은 목적은 업데이트된 논리 유니트를 동일 평면 내에 제2 블록의 사용 가능한 다음 위치로 기록하여 성취된다. Above object is achieved by writing to the next available location of a second block of the updated logical unit in the same plane. 바람직하게는, 논리 유니트는 주어진 논리 유니트들의 모든 버전들이 센싱 회로의 동일 세트에 의하여 서비스될 수 있도록 다른 버전으로써 평면 상에서 동일한 옵셋 위치로 저장된다. Preferably, the logical unit is stored with the same offset location in the plane as the other versions so that all versions can be served by the same set of sensing circuits of a given logical unit.

바람직한 실시예에 있어서, 최종 프로그램 유니트로부터 사용 가능한 다음 평면 정렬 메모리 유니트로의 인터비닝(intervening) 갭들은 논리 유니트들의 현재 버전에 따라 패딩된다. In a preferred embodiment, the intervening (intervening) the gap to the next plane-aligned memory unit are available from the last program unit are padded according to the current versions of logical units.

상기의 패딩은 최종 프로그램된 논리 유니트로부터 논리적으로 수행되는 논리 유니트들의 현재 버전들과 그리고 사용 가능한 다음 평면 정렬 메모리 유니트 내에 저장된 논리 유니트로부터 논리적으로 선행하는 논리 유니트들의 현재 버전들로 상기 갭을 채움으로써 성취된다. Wherein a padding by filling the gap with current versions of the logical units preceding logically from the logical unit stored in the next available current version and and the use of the logical unit plane-aligned memory unit are performed logically from the last programmed logical unit, It is achieved.

이와 같은 방법으로, 논리 유니트의 모든 버전들은 쓰레기 수집 작용에서, 논리 유니트의 최근 버전이 다른 평면으로부터 인출(성능 저하)될 필요가 없도록 할 수 있도록 최초의 상태와 동일한 옵셋을 이용하여 동일한 평면 상에 유지된다. In this way, all versions of the logical units are in the same plane using the same offset as the first state in the garbage collection operation, so that the latest version of the logical unit can not need to be drawn out (degraded) from the other flat maintain. 바람직한 실시예에 있어서, 평면을 가로지르는 각각의 메모리 유니트는 최근의 버전으로 업데이트되거나 패딩된다. In a preferred embodiment, each memory unit across the plane is either updated or padded with the latest versions. 각각의 평면으로부터의 논리 유니트는 병렬로 읽기 가능하며, 추가적인 재정렬 없이 논리 순차 순서로 이루어진다. A logical unit from each plane is possible to read in parallel, and comprises a logic sequence without further realignment.

이와 같은 구조에 따라, 논리 그룹의 논리 유니트들의 최근 버전의 평면상 재정렬을 가능하도록 하고, 그리고 다른 메모리 평면들로부터 최근 버전들을 수집하는 것을 피함으로써 혼돈 블록의 통합을 위한 시간을 감소할 수 있다. According to such structures, and to enable the most recent version of the plane reordering of the logical units of a logical group, and by avoiding to collect the latest versions from different memory planes it is possible to reduce the time for the integration of the chaotic block. 상기와 같은 구성은 호스트 인터페이스에 대한 성능 스팩이 메모리 시스템에 의한 섹터 쓰기 작용의 완료를 하는데 있어서 최대 지연 낳는 구성에 잘 적용된다. Configuring as described above is in the performance specification for the host interface to the completion of a sector write operation by the memory system applies well to the maximum delay lay configuration.

단계화된 프로그램 에러 취급 Handling staged program error

본 발명의 또 다른 양상에 따르면, 블록 관리 시스템을 갖는 메모리에 있어서, 시간 임계 메모리 작용 동안의 블록 내의 프로그램 오류는 브레이크아웃 메모리 내에서 프로그래밍 작용을 계속 진행함에 따라 취급된다. According to another aspect of the present invention, there is provided a memory having a block management system, program failure in a block during a time-critical memory operation is handled as continuing the programming operation in a breakout memory. 바도 작은 임계 시간에 있어서, 중단이 발생하기 이전의 오류 블록에 기록된 데이트는 또 다른 블록으로 이전되며, 상기와 같은 작용은 브레이크아웃 블록이 될 수도 있다. A bar in a small critical period of time, written in the previous block error to occur interruption date is transferred to another block, acting as described above may be the breakout block. 오류가 발생한 블록은 버려진다. The block where the error occurred is discarded. 이와 같은 방법으로, 결함 블록이 발견되면, 저장된 데이터를 결함 블록 내에 저장된 데이터를 스팟(spot)으로 이동시켜 데이터의 손실 없이 그리고 지정된 시간 제한을 초과하지 않고 취급될 수 있다. In this way, when the defective block is encountered, it is possible to move the data stored in the data stored in the defective block to the spot (spot) to be treated does not exceed the specified time limit and without loss of data. 이와 같은 에러 취급은 임계 시간 동안에 전체 작용이 새로운 블록 상에서 반복될 필요가 없도록 쓰레기 수집 작용을 위하여 특히 중요하다. This error handling is especially critical for a garbage collection operation so that you do not have to be a full repeat action on the new block during a threshold time. 그 다음에 적절한 시간에, 결합 블록으로부터의 데이터는 또 다른 블록으로 재이동시켜 구조할 수 있다. Then the appropriate time, the data from the coupling block may be re-structure is moved to another block.

프로그램 오류 취급은 통합 작용 동안에 매우 중요하다. A program error handling is very important during the integration activity. 정상적인 통합 작용은 최초 블록 및 업데이트 블록에 존재하는 논리 그룹의 모든 논리 유니트들의 현재 버전들을 통합 블록 내로 통합한다. Normal integration function is integrated with current versions of all logical units of a logical group present in the original block and the update block into the integrated block. 상기의 통합 작용 동안에, 만약 프로그램 오류가 통합 블록 내에 발생한다면, 브레이크아웃 통합 블록으로써 작용하는 도 다른 블록이 나머지 논리 유니트들의 통합을 수신하기 위하여 준비된다. During the operation of the integration, if a program failure occurs in the consolidation block, the other block serving as a breakout consolidation block is ready to receive the consolidation of the remaining logical units. 이와 같은 방법으로, 한번 이상 카피되는 논리 유니트가 존재하지 않게 되며, 예외적인 취급에 따른 작용은 정상적인 통합 작용을 위하여 설정된 기간 내에 완수될 수 있다. In this way, there is not a logical unit exists to be copied more than once, according to the action exceptional handling can be completed within the time set for the normal integration function. 적절한 시간에, 통합 작용은 그룹의 모든 우수한 논리 유니트들을 브레이크아웃 블록으로 통합하여 완수될 수 있다. At the appropriate time, integrating action may be accomplished by consolidating all outstanding logical units of the group into the breakout block. 적절한 시간은 통합을 수행할 시간이 있을 때, 현재 호스트 쓰기 작용 외부의 다른 기간일 수 있다. Appropriate time is when it is time to perform the integration, may be the current host write another period of action outside. 한가지 적절한 시간은 업데이트가 존재하나, 관련된 통합 작용이 없는 곳에서 또 다른 호스트 쓰기 기간일 수 있다. One kind of proper time can be updated exists but another host write periods where there is no integration-related action.

프로그램 오류 취급을 이용한 통합은 복수개의 단계를 통하여 구현될 수 있다. Integration using a program error handling may be implemented through a plurality of steps. 첫번째 단계에서, 논리 유니트들은 한번 이상의 각 논리 유니트를 통합하는 것을 피하기 위하여 프로그램 오류가 발생한 이후에 한 개의 블록 이상의 블록 내로 통합된다. In the first step, the logic unit are integrated into the block at least one block after a program failure occurs in order to avoid consolidating each logical unit more than once. 최종 단계는 적절한 시간에 완료되며, 상기의 적절한 시간에 논리 그룹은 한 개의 블록 내로 통합되며, 바람직하게는 모든 논리 유니트들을 순차적인 순서로 브레이크아웃 통합 블록 내로 수집하여 이루어진다. The final step is achieved by collecting into, and completed at the appropriate time, the logic group for the appropriate time is integrated into a single block, preferably all of the logical units in sequential order a breakout consolidation block.

비순차 업데이트 블록 인덱싱 Out-of-order update block index

본 발명의 또 다른 양상에 따르면, 비순차 논리 유니트들을 갖는 업데이트 블록들을 지원하는 블록 관리 시스템을 갖는 비휘발성 메모리에 있어서, 비순차 업데이트 블록 내의 논리 유니트들의 인덱스는 RAM에 버퍼링되며, 비휘발성 메모리 내로 주기적으로 저장된다. According to another aspect of the present invention, in the non-volatile memory with a block management system that supports update blocks with non-sequential logical units, an index of the logical units in a non-sequential update block is buffered in the RAM, into the non-volatile memory It is to periodically store. 일실시예에 따르면, 상기의 인덱스는 업데이트 블록 그자체에 저장된다. According to one embodiment, the index is stored in the update block itself. 또 다른 실시예에 있어서, 최종 업데이트 이후지만 다음 업데이트 이전에 쓰여진 논리 유니트들은 각각의 논리 유니트의 헤더 내에 저장된 인덱싱 정보를 구비하고 있다. In yet another embodiment, since the last update, but logical units written prior to the next update are provided with index information stored in the header of each logical unit. 이와 같은 방법으로, 파워 아웃티즈(outage) 이후에, 최근에 쓰여진 논리 유니트들의 위치는 초기화 기간 동안에 스케닝을 수행할 필요없이 결정될 수 있다. In this way, since the power out Tees (outage), the location of recently written logical units can be determined to without having to perform a scanning during initialization period. 또 다른 실시예에 있어서, 블록은 부분적으로 순차적이고 그리고 부분적으로 비순차적인 방법으로 관리되며, 한개의 논리 서브그룹 보다 많은 그룹에 해당한다. In yet another embodiment, the block is sequential, and in part will be partly administration to a non-sequential manner, corresponds to the number of groups than one logical subgroup.

제어 데이터 통합 및 관리 Control data integration and management

본 발명의 또 다른 양상에 따르면, 제어 데이터의 약간 또는 전부와 같은 임계 데이터는 만약 그것이 중복 상태로 유지된다면, 엑스트라 레벨의 신뢰도로 보증된다. According to still another aspect of the invention, critical data such as some or all of the control data, if it is maintained as a duplicate state, is guaranteed by the reliability of the extra level. 상기와 같은 중복은 메모리 셀들의 동일한 세트의 멀티 비트를 연속으로 프로그래밍하는 2-패스 프로그래밍을 사용하는 멀티-상태 메모리 시스템을 위하여, 제2 패스 내의 소정의 프로그래밍 오류가 제1 패스에 의하여 구성된 데이터를 손상시키지 않는 방법으로 실행된다. Redundancy as described above is a multi using a two-pass programming to program the multi-bit of the same set of memory cells in a row-for-state memory system, the data composed of a predetermined first pass programming error in the second pass It is executed in not detrimental way. 이와 같은 중복은 쓰기 취소의 검출, 검출 오류의 검출(예를 들면, 두개의 카피가 우수한 ECC를 갖지만, 데이터는 서로 다르다) 등을 가능하게 하며, 엑스트라 레벨의 신뢰도를 제공한다.데이터 중복에 대한 여러개의 기술들이 사용 가능하다. Such duplication is detected in the detection, the detection error of the write cancel enables the like (for example, the two copies are gatjiman excellent ECC, data are different from each other), and provides the reliability of the extra level of the data redundancy several techniques can be used.

일 실시예에 있어서, 주어진 데이터의 두개의 카피가 조기 프로그래밍 패스에서 프로그래밍된 이후에, 다음의 프로그래밍 패스는 두개의 카피 중에서 최소한 한개의 카피를 저장하는 메모리 셀들을 프로그래밍하는 것을 피한다. In one embodiment, after two copies of a given data is programmed in the early pass programming, the programming of the pass avoids programming the memory cells storing at least one copy from the two copies. 이와 같은 방법으로, 두개의 카피 중 최소한 한개의 카피는 그 다음의 프로그래밍 패스가 완료되기 이전에 취소되고 그리고 조기 패스의 데이터를 손상시키는 경우 영향을 받지 않는다. In this way, at least one of the two copies of the copies will not be affected if that is canceled before the next programming pass is completed and the data of the early damage path.

또 다른 실시예에 있어서, 주어진 데이터의 두개의 카피들은 두개의 카피들 중 최대한 한개의 카피가 다음 프로그래밍 패스에서 프로그래밍되는 메모리 셀들을 구비하는 두개의 다른 블록들에 저장된다. In yet another embodiment, the two copies of a given data are stored in two different blocks containing the two copies of the copy of the most one of having the memory cell that is programmed in the programming path.

또 다른 실시예에 있어서, 주어진 데이터의 두개의 카피들이 프로그래밍 패스에 저장된 이후에, 두개의 카피를 저장하는 메모리 셀들의 세트에 더 이상의 프로그래밍이 진행되지 않는다. In yet another embodiment, after two copies of a given data are stored in a programming pass, no further programming is conducted to the set of memory cells storing the two copies. 상기와 같은 것은 메모리 셀들의 세트를 위하여 궁극적인 프로그래밍 패스 내의 두개의 카피를 프로그래밍하여 성취된다. It is as described above is accomplished by programming the two copies in an ultimate programming pass for the set of memory cells.

또 다른 실시예에 있어서, 주어진 데이터의 두개의 카피들은 프로그래밍된 메모리 셀들 상에서 더 이상의 프로그래밍이 발생하지 않도록 하기 위하여 이진 프로그래밍 모드로 멀티-상태 메모리 내로 프로그래밍된다. In yet another embodiment, the two copies of the data are given to the binary multi-programming mode in order to avoid any further programming occurs on the programmed memory cells, it is programmed into the state memory.

또 다른 실시예에 있어서, 메모리 셀들의 동일한 세트의 멀티 비트를 연속적으로 프로그래밍하기 위하여 2-패스 프로그래밍 기술을 적용하는 멀티-상태 메모리 시스템에 있어서, 무장애(fault-tolerant) 코드는 조기 프로그래밍 패스에 의하여 구성된 데이터가 다음 프로그래밍 패스의 에러에 둔감하도록 멀티 메모리 상태를토드화하기 위하여 사용된다. In yet another embodiment, the multi-pass programming technique for applying to a multi-bit programming of the same set of memory cells in a row - in the state memory systems, fault-tolerant (fault-tolerant) code by early programming pass data is configured to insensitive to errors in the next programming pass is used to screen Todd multi-state memory.

본 발명의 또 다른 양상에 따르면, 블록 관리 시스템을 갖는 비휘발성 메모리에 있어서, 메모리 블록의 제어 쓰레기 수집 또는 우선 위치 재설정은 많은 수의 업데이트 블록들이 위치 재설정을 동시에 필요로 하는 상황을 피하기 위하여 구현된다. According to another aspect of the present invention, in the non-volatile memory with a block management system, reset control Waste storage or first location of a memory block is implemented to avoid situations that require a large number of reset of the update block are located at the same time . 예를 들면, 상기와 같은 상황은 블록 관리 시스템의 작용을 제어하기 위하여 사용된 제어 데이터를 업데이트할 때 발생한다. For example, a situation as described above occurs when updating control data used for controlling the operation of the block management system. 제어 데이터 유형의 계층은 업데이트 빈도의 가변 정도에 따라 존재할 수 있으며, 그에 따라 다른 속도로 쓰레기 수집 또는 위치 재설정을 필요로 하는 관련 업데이트 블록들을 얻게 된다. Hierarchy of control data type can exist in accordance with a variable degree of update frequency, and thus obtains the associated update blocks requiring garbage collection or reset position at a different speed. 한개의 제어 데이터 유형보다 많은 쓰레기 수집 작용들이 일치하는데 소정의 시간대가 있을 수 있다. One of the many types of control data garbage collection action than they may have some time to match. 극단적인 경우에 있어서, 모든 제어 데이터 유형을 위한 업데이트 블록들의 위치 재설정 단계들은 정렬되어, 모든 업데이트 블록들이 동시에 위치 재설정을 필요로 할 수 있다. In the extreme case, they are arranged to reset the location of the update blocks for all control data types step, it may require a reset position at the same time all the updated blocks.

본 발명의 부가적인 특징 및 장점은 그 양호한 실시예의 하기의 설명으로부터 이해될 것이며, 양호한 실시예의 설명은 첨부 도면과 연계하여 이루어진다. Additional features and advantages of this invention will become understood from the following description of its preferred example embodiments, the description of the preferred embodiment is made in conjunction with the accompanying drawings.

도 1은 본 발명을 이행하기에 적합한 메모리 시스템의 메인 하드웨어 콤포넌트를 개략적으로 예시하는 도면. 1 is a view schematically illustrating the main hardware components of a memory system suitable for implementing the present invention.

도 2는 본 발명의 양호한 실시예에 따른, 컨트롤러의 메모리 관리자에 의해 관리되는, 그리고, 섹터의 물리 그룹(또는 메타블록)으로 조직화된 메모리를 예시하는 도면. Figure 2 is a diagram illustrating a memory organized by, managed by a memory manager of the controller, and the physical groups (or metablock) of the sector in accordance with a preferred embodiment of the present invention.

도 3A(i) 내지 도 3A(iii)는 본 발명의 양호한 실시예에 따른, 논리 그룹과 메타블록 사이의 맵핑을 개략적으로 예시하는 도면. Fig 3A (i) to Fig 3A (iii) is a view schematically illustrating the mapping between the preferred embodiment according to the example, the logical group and the metablock of the present invention.

도 3B는 논리 그룹과 메타블록 사이의 맵핑을 개략적으로 예시하는 도면. Figure 3B is a view schematically illustrating the mapping between logical groups and metablocks.

도 4는 물리 메모리내의 구조와 메타블록의 정렬을 예시하는 도면. Figure 4 is a diagrammatic view illustrating the alignment of a metablock with structures in physical memory.

도 5A는 다른 평면의 최소 삭제 유닛의 링크형성으로 구성되는 메타블록을 예시하는 도면. 5A is a diagram illustrating a meta-block consisting of a link formed in different planes at least remove the units.

도 5B는 메타블록으로의 링크형성을 위해 각 평면으로부터 하나의 최소 삭제 유닛(MEU)이 선택되는 일 실시예를 예시하는 도면. 5B is for forming a link to the metadata block diagram illustrating an embodiment in which one minimum elimination unit (MEU) is selected from each plane.

도 5C는 메타블록으로의 링크형성을 위해, 각 평면으로부터 하나 이상의 MEU가 선택되는 일 실시예를 예시하는 도면. Figure 5C is a link to the formation of a meta-block, diagram illustrating an embodiment in which more than one MEU are selected from each plane.

도 6은 플래시 메모리와 컨트롤러 내에 구현되는 바와 같은 메타블록 관리 시스템의 개략 블록도. Figure 6 is a schematic block diagram of the metablock management system as implemented in flash memory and a controller.

도 7A는 순차 갱신 블록에 순차 순서로 기록되는 논리 그룹내의 섹터의 예를 예시하는 도면. Figure 7A is a view illustrating an example of sectors in a logical group being written in sequential order to a sequential update block.

도 7B는 카오틱 갱신 블록에 카오틱 순서로 기록되는 논리 그룹내의 섹터의 예를 예시하는 도면. Figure 7B is a view illustrating an example of sectors in a logical group being written in chaotic order in the chaotic update block.

도 8은 논리 어드레스의 불연속성을 갖는 두 개의 별개의 호스트 기록 동작의 결과로서 순차적 갱신 블록에 순차 순서로 기록되는 논리 그룹내의 섹터의 예를 예시하는 도면. 8 is a view illustrating an example of sectors in a logical group being written in sequential order, the sequential update block as a result of two separate host write operations that has a discontinuity in logical addresses.

도 9는 본 발명의 일반적 실시예에 따른, 데이터의 논리 그룹을 갱신하기 위한 갱신 블록 관리자에 의한 프로세스를 예시하는 흐름도. 9 is a flow chart illustrating a process by the update block manager to update a logical group of data according to the general embodiment of the present invention.

도 10은 본 발명의 양호한 실시예에 따른, 데이터의 논리 그룹을 갱신하기 위한 갱신 블록 관리자에 의한 프로세스를 예시하는 흐름도. 10 is a flow chart illustrating a process by the update block manager to update a logical group of data in accordance with a preferred embodiment of the present invention.

도 11A는 도 10에 도시된 카오틱 갱신 블록을 폐쇄하는 병합 프로세스를 보다 상세히 예시하는 흐름도. Figure 11A is a flow diagram illustrating in more detail the merge process for closing a chaotic update block shown in FIG.

도 11B는 도 10에 도시된 카오틱 갱신 블록을 폐쇄하기 위한 압축 프로세스를 보다 상세히 예시하는 흐름도. Figure 11B is a flow diagram illustrating in more detail the compaction process for closing a chaotic update block shown in FIG.

도 12A는 논리 그룹의 모든 가능한 상태 및 다양한 동작하에서 그들 사이의 가능한 전이를 예시하는 도면. Figure 12A is a diagram illustrating the possible transitions between them under all possible conditions, and various operations of the logical group.

도 12B는 논리 그룹의 가능한 상태를 나열하는 테이블. 12B is a table that lists the status of the logical group.

도 13A는 논리 그룹에 대응하는 물리 그룹인 메타블록의 모든 가능한 상태 및 다양한 동작하에서의 그들 사이의 가능한 전이를 예시하는 도면. Figure 13A is a diagram illustrating the possible transitions between the physical group under all possible conditions, and various operations of the metadata block corresponding to the logical group them.

도 13B는 메타블록의 가능한 상태를 나열하는 테이블. 13B is a table listing the possible states of a metablock.

도 14A 내지 도 14J는 논리 그룹의 상태와, 또한, 물리 메타블록에 대한 다양한 동작의 영향을 예시하는 상태도. 14A to 14J is a state diagram illustrating the effect of various operations on the state of the logical group and, also, the physical metablock.

도 15는 할당을 위한 삭제 블록과 개방 및 폐쇄된 갱신 블록의 추적을 유지하기 위한 할당 블록 리스트(ABL)의 구조의 양호한 실시예를 예시하는 도면. 15 is a view illustrating a preferred embodiment of the structure of the list (ABL) allocation block to maintain the erase block and opening and closing of a tracking update block available for allocation.

도 16A는 카오틱 블록 인덱스(CBI) 섹터의 데이터 필드를 예시하는 도면. 16A is a diagram illustrating a data field of a chaotic block index (CBI) sector.

도 16B는 전용화된 메타블록내에 레코드되는 카오틱 블록 인덱스(CBI) 섹터의 예를 예시하는 도면. Figure 16B is a diagram illustrating an example of the chaotic block index (CBI) sectors being recorded in a dedicated metablock screen.

도 16C는 카오틱 갱신을 받는 주어진 논리 그룹의 논리 섹터의 데이터에 대한 억세스를 예시하는 흐름도. Figure 16C is a flow chart illustrating the access to the data in the logical sector of a given logical group receiving a chaotic update.

도 16D는 논리 그룹이 서브그룹으로 분할되어 있는 대안 실시예에 따른, 카오틱 갱신을 받는 주어진 논리 그룹의 논리 섹터의 데이터에 대한 억세스를 예시하는 흐름도. Figure 16D is a flow chart illustrating the logical group access to the data in the logical sector of a given logical group Chaotic receiving the update according to an alternative embodiment, which is divided into sub-groups.

도 16E는 각 논리 그룹이 다수의 서브그룹으로 분할되어 있는 실시예를 위한 카오틱 블록 인덱싱(CBI) 섹터 및 그 기능의 예를 예시하는 도면. Figure 16E is a diagrammatic view illustrating an example of the chaotic block index (CBI) sectors and their functions for the embodiment where each logical group is partitioned into multiple subgroups.

도 17A는 그룹 어드레스 테이블(GAT) 섹터의 데이터 필드를 예시하는 도면. Figure 17A is a diagram illustrating the data fields of a group address table (GAT) sector.

도 17B는 GAT 블록에 레코드되는 그룹 어드레스 테이블(GAT) 섹터의 예를 예시하는 도면. Figure 17B is a diagrammatic view illustrating an example of a group address table (GAT) sectors being recorded in the GAT block.

도 18은 삭제 블록의 사용 및 재생을 위한 제어 및 디렉토리 정보의 분포 및 흐름을 예시하는 개략적 블록도. 18 is a schematic block diagram illustrating the distribution and flow of the control and directory information for use and regeneration of the deletion block.

도 19는 논리 대 물리 어드레스 변환의 프로세스를 도시하는 플로우차트. 19 is a flowchart showing the process of logical to physical address translation.

도 20은 메모리 관리의 동작의 과정에서 제어 데이터 구조상에 수행되는 동작의 계층체계를 예시하는 도면. 20 is a diagram illustrating a hierarchical system of the operations performed on control data structure in the course of operation of the memory management.

도21은 복수개의 메모리 평면들로부터 구성되는 메모리 어레이를 도시하는 도면이다. 21 is a view showing a memory array constituted from a plurality of memory planes.

도22A는 본 발명의 일반적인 구현에 따라 평면 정렬을 이용한 업데이트 방법을 도시하는 플로우 차트이다. 22A is a flow chart showing an update method using a plane aligned along a common implementation of the present invention.

도22B는 도22A에 도시된 플로우 차트에서 업데이트를 저장하는 단계의 바람직한 실시예를 도시하는 도면이다. Figure 22B is a view showing a preferred embodiment of the step of storing updates in the flow chart shown in Figure 22A.

도23A는 평면 정렬과 상관없이 순차적인 업데이트 블록에 대하여 순처적인 순서로 쓰여진 논리 유니트들의 예를 도시하는 도면이다. 23A is a diagram showing an example of the logical units are written in suncheo ordering with respect to a sequential update block without regard to plane alignment.

도23B는 평면 정렬과 상관없이 혼돈 업데이트 블록에 대하여 비수차적인 순서로 쓰여진 논리 유니트들의 예를 도시하는 도면이다. 23B is a view showing an example of the logical units are written in the non-aqueous primary sequence relative to chaotic update block without regard to plane alignment.

도24A는 본 발명의 바람직한 일실시예에 따라 평면 정렬 및 페딩을 갖는 도23A의 순차 업데이트 예를 도시하는 도면이다. 24A is a diagram showing the sequential update example of FIG. 23A having planar alignment and peding according to an exemplary embodiment of the present invention.

도24B는 본 발명의 바람직한 일실시예에 따라 평면 정렬을 구비하고 그리고 페딩을 구비하지 않는 도23B의 혼돈 업데이트 예를 도시하는 도면이다. 24B is a diagram provided to and having shown that the chaotic update example of FIG. 23B to the peding a planar alignment in accordance with a preferred embodiment of the present invention.

도24C는 본 발명의 바람직한 또 다른 실시예에 따라 평면 정렬 및 페딩을 갖는 도23B의 혼돈 업데이트 예를 도시하는 도면이다. Figure 24C is a view showing a preferred yet chaotic update in Figure 23B having a planar alignment and peding in accordance with another embodiment of the invention.

도25는 두 개의 논리 섹터들과 같은 두 개의 논리 유니트들을 저장하기 위하여 각각의 페이지가 두 개의 메모리 유니트들을 포함하는, 예시적인 메모리 구조를 도시하는 도면이다. 25 is a diagram showing an exemplary memory structure, where each page contains two memory units for storing two logical units, such as two logical sectors.

도26A는 각각의 페이지가 한 개 대신에 두 개의 섹터들을 포함하는 것을 제 외한 도21의 메모리 구조에 유사한 것을 도시하는 도면이다. 26A is a diagram illustrating the structure of a similar, except the memory 21 to each page contains two sectors instead of one.

도26B도는 개력적인 선형 패션 내에 구성된 메모리 유니트들을 갖는 도26A의 메타 블록들을 구비하는 도면이다. Also includes a diagram of the metablock in FIG. 26A having memory units are configured in a linear fashion gaeryeok turn 26B.

도27은 한 개의 위치에서 또 다른 위치로 카피되는 논리 유니트들을 페딩하지 않고, 업데이트 블록 내에서 평면 정열을 위한 다른 구조를 도시하는 도면이다. 27 is not peding logical units to be copied to another location in a different position, is a diagram showing another structure for the planar alignment in the update block.

도28은 통합 작용 중에 결함 블록 내에서 프로그램 오류가 발생할때, 통합 작용이 또 다른 블록 상에서 반복되는 구조를 도시하는 도면이다. 28 is a time occur in the defective block in the integrated action program error, a view showing a structure in which integrated operation is repeated on another block.

도29는 쓰기(업데이트) 작용 뿐만 아니라 통합 작용을 완료하기 위하여 충분한 시간을 제공하는 시간 또는 쓰기 지연을 갖는 호스트 쓰기 작용을 개략적으로 도시하는 도면이다. 29 is a view schematically showing a host write operation has a write latency, or time to provide enough time to complete the integration function as well as the writing action (update).

도30은 본 발명에 의한 전체 구조에 따라 프로그램 오류 취급에 대한 플로우 차트를 도시하는 도면이다. 30 is a view showing a flowchart for the error handling program according to the overall structure according to the present invention.

도31A는 제3 블록(최종 위치 재설정) 블록이 제2(브레이크아웃) 블록과 다른 구성을 갖는 프로그램 오류 취급의 제1실시예를 도시하는 도면이다. 31A is a view showing a first example of handling a third block (the last reset position) blocks a second program having a different configuration, and (breakout) block error.

도31B는 제3 (최종 위치 재설정) 블록이 제2 (브레이크아웃) 블록과 동일한 구성을 갖는 프로그램 오류 취급의 또 다른 실시예를 도시하는 도면이다. Figure 31B is a view showing another embodiment of the third (last reset position) blocks the second (breakout) programs having the same configuration as the block error handling.

도32A는 통합 작용이 결과적으로 얻어지는 최초 업데이트 작용의 플로우 차트를 도시하는 도면이다. Figure 32A is a view showing a flowchart of a first update operation result obtained by the integration action.

도32B는 본 발명의 바람직한 실시예에 있어서 복수개의 단계 통합 작용의 플로우 차트를 도시하는 도면이다. Figure 32B is a view showing a flowchart of a plurality of stage integrating action according to an embodiment of the present invention.

도33은 복수개의 페이즈 통합 작용의 제1 및 최종 단계의 예시적인 타이밍을 도시하는 도면이다. 33 is a diagram showing a first exemplary timing of the first and final stage of the plurality of phase integration operation.

도34A는 브레이크아웃 통합 블록이 업데이트 블록으로써 사용되지 않지만, 그 통합 작용이 방해받는 통합 블록으로써 사용되지 않는 경우를 도시하는 도면이다. Figure 34A is a view showing a case where the breakout consolidation block is not used as an update block, that is not used by integrated block that disturbed the consolidation action.

도34B는 도34A에서 시작된 복수 단계 통합의 제3 및 최종 단계를 도시하는 도면이다. Figure 34B is a diagram illustrating a third and final phase of the multiple phase consolidation started in FIG. 34A.

도35A는 브레이크아웃 통합 블록이 통합 블록으로써 보다는 호스트 쓰기를 수신하는 업데이트 블록으로써 유지되는 경우를 도시하는 도면이다. 35A is a view showing a case held by update block for receiving a host write, rather than as a consolidation block breakout consolidation block.

도35B는 상기 두 번째 경우에 대하여 도35A에서 시작된 복수개의 단계 통합의 제3 및 최종 단계를 도시하는 도면이다. Figure 35B is a diagram illustrating a third and final stage of said plurality of two stage integration is started in FIG. 35A with respect to the second case.

도36A는 호스트 쓰기가 업데이트 블록의 폐쇄를 트리거하고, 업데이트 블록이 순차적일때, 시나리오로 인가되는 단계화된 프로그램 에러 취급을 도시하는 도면이다. 36A is a view for triggering the closing of the host write the update block, the update block when sequentially shows a staged program error handling to be applied to the scenario.

도36B는 업데이트 블록에서 업데이트의 경우에 있어서 그것이 부분 블록 시스템에 인가될 수 있는 것과 같이, 단계화된 프로그램 에러 취급을 도시하는 도면이다. Figure 36B is, as it can be applied to the partial block system in the case of the update in the update block diagram showing a staged program error handling.

도36C는 메타블록으로 맵핑된 논리 그룹을 지원하지 않는 메모리 블록 관리 시스템에 있어서 쓰레기(garbage) 수집 작용을 취급하는 단계화된 프로그램 오류를 도시하는 도면이다. Figure 36C is a view showing a staged program error handling the garbage (garbage) acquisition function in a logical group mapped to a metablock in the memory block management system that does not support.

도37는 동일한 논리 그룹의 모든 N-섹터 쓰기 이후에, 관련 혼돈 인덱스 섹터에 CBI 섹터의 쓰기 스케쥴의 예를 도시하는 도면이다. Figure 37 is a view showing an example of a schedule of writing CBI sector in the subsequent write N- all sectors of the same logical group, associated chaotic index sector.

도38A는 소정 횟수의 쓰기 이후에 CBI가 거기에 기록될 때 포인트 지점까지의 업데이트 블록을 도시하는 도면이다. Figure 38A is a chart showing the updating blocks of the point to the point when a CBI is recorded in it after the writing of the predetermined number of times.

도38B는 인덱스 섹터 이후에 더 기록되는 데이터 페이지 1, 2 및 4를 갖는 도38A의 업데이트 블록을 도시하는 도면이다. FIG 38B is a chart showing the update block of FIG. 38A having a data page 1, 2, and 4 is further written after the index sector.

도38C는 인덱스 섹터의 다음 기록을 트리거하기 위하여 쓰여지는 또 다른 논리 섹터를 갖는 도38B의 업데이트 블록을 도시하는 도면이다. Figure 38C is a view showing the update of the block 38B having another logical sector written again in order to trigger the next recording of an index sector.

도39A는 혼돈 업데이트 블록 내의 각 데이터 섹터의 헤더에 저장된 중간 스기에 대한 중간 인덱스를 도시하는 도면이다. Figure 39A is a diagram showing an intermediate index for the intermediate skiing stored in the header of each data sector in the chaotic update block.

도39B는 각각의 쓰여진 섹터의 헤더 내의 중간 쓰기들에 대하여 중간 인덱스를 저장하기 위한 예를 도시하는 도면이다. Figure 39B is a view showing an example for storing intermediate index relative to the intermediate write in the header of each sector written.

도40은 혼돈 업데이트 블록의 각 데이터 섹터의 헤더 내에 저장된 혼돈 인덱스 필드의 정보를 도시하는 도면이다. 40 is a view showing information stored in the chaotic index field in the header of each data sector in the chaotic update block.

도41A는 각각의 메모리 셀이 두 개의 비트 데이터를 저장할 때 4-상태 메모리 어레이의 문턱 전압 분포를 도시하는 도면이다. Figure 41A is a diagram showing each of the memory cell and the threshold voltage distributions of the 4-state memory array when storing two bits of data.

도41B는 그레이 코드를 이용하는 종래의 2-패스 프로그래밍 구조를 도시하는 도면이다. Figure 41B is a view showing a conventional two-pass programming structure using a gray code.

도42는 중복된 각각의 섹터를 저장하여, 임계 데이터를 보호하기 위한 한가지 안전한 방법을 도시하는 도면이며, 예를 들면, 섹터 A, B, C 및 D가 중복 카피 되어 저장된다. 42 is to store the duplicate each sector, a view showing one thing secure way to protect the critical data, for example, is stored in sectors A, B, C and D are duplicated copy. 만약, 한 개의 섹터 카피에 데이터 오류가 발생하면, 그 대신에 다른 것이 읽혀질 수 있다. If, when the data error in one sector copy, may be read to another instead.

도43은 중복 섹터들이 멀티-상태 메모리에 일반적으로 저장되는 구성을 갖는 비-로버스트니스(non-robustness)를 도시하는 도면이다. 43 is a duplicate sectors are a multi-view showing the robustness (non-robustness) - state memory commonly ratio having a configuration that is stored in.

도44A는 임계 데이터의 지연된 중복 카피를 멀티-상태 메모리에 저장하는 일실시예를 도시하는 도면이다. Figure 44A is a delayed duplicate copies of critical data, a multi-view showing an embodiment for storing the memory state.

도44B는 임계 데이터의 중복 카피들을 멀티-상태 메모리의 논리 상위 페이지에 저장하기는 또 다른 실시예를 도시하는 도면이다. Figure 44B is a duplicate copies of critical data, the multi-store the logic high-order page of the state memory is a view showing yet another embodiment.

도44C는 멀티-상태 메모리의 이진 모드 내에 임계 데이터의 중복 카피들을 저장하는 또 다른 실시예를 도시하는 도면이다. Figure 44C is a multi-view showing a further embodiment for storing the duplicate copies of critical data in binary mode of a memory state.

도45는 임계 데이터의 중복 카피들을 동시에 두개의 메타 블록들에 저장하는 또 다른 실시예를 도시하는 도면이다. 45 is a view for duplicate copies of critical data concurrently illustrates another embodiment which stores the two metablock.

도46A는 4-상태 메모리 어레이의 문턱 전압 분포를 도시하는데 있어서 도41A와 유사하며, 도46B의 참조도로써 도시되어 있다. Figure 46A is similar to Figure 41A in that illustrates the threshold voltage distributions of the 4-state memory array and is shown as a reference in Fig. 46B Fig.

도46B는 무장애(fault-tolerant) 코드를 사용하여 임계 데이터의 중복 카피를 동시에 저장하는 또 다른 실시예의 도면이다. Figure 46B is a diagram of yet another embodiment for storing redundant copies of critical data by using the fault-tolerant (fault-tolerant) code at the same time.

도47은 두개의 데이터 카피의 가능한 상태와 데이터의 사용 가능성을 도시하는 테이블을 도시하는 도면이다. Figure 47 shows a table showing the possible availability of the status and data from the two data copies.

도48은 제어 데이터를 저장하는 메모리 블록의 우선(preemptive) 위치 재설정의 플로우 차트를 도시하는 도면이다. 48 is a view showing a flowchart of a first (preemptive) position to reset the memory block for storing control data.

도 1은 본 발명을 구현하기에 적합한 메모리 시스템의 메인 하드웨어 콤포넌트를 개략적으로 예시한다. Figure 1 illustrates schematically the main hardware components of a memory system suitable for implementing the present invention. 메모리 시스템(20)은 통상적으로, 호스트 인터페이스를 통해 호스트(10)와 함께 동작한다. The memory system 20 typically operates with a host 10 via a host interface. 메모리 시스템은 통상적으로, 내장 메모리 시스템 또는 메모리 카드의 형태이다. The memory system is typically in the form of internal memory system or the memory card. 메모리 시스템(20)은 메모리(200)를 포함하며, 메모리의 동작은 컨트롤러(100)에 의해 제어된다. Memory system 20 includes a memory 200, operation of the memory is controlled by the controller 100. 메모리(200)는 하나 이상의 집적 회로 칩 위에 분포된 비휘발성 메모리 셀의 하나 이상의 어레이로 구성된다. Memory 200 is composed of one or more array of non-volatile memory cells distributed over one or more integrated circuit chips. 컨트롤러(100)는 인터페이스(110), 프로세서(120), 선택적 코프로세서(121), 롬(ROM, 판독 전용 메모리)(122), 램(RAM,임의 접근 메모리)(130) 및 선택적으로 프로그램가능한 비휘발성 메모리(124)로 구성된다. Controllers 100, interface 110, a processor 120, an optional coprocessor 121, ROM (ROM, Read Only Memory) 122, RAM (RAM, Random Access Memory) 130, and optionally a program It consists of a non-volatile memory 124. 인터페이스(110)는 호스트에 컨트롤러를 인터페이스 접속하는 하나의 콤포넌트 및 메모리(200)에 인터페이스 연결된 다른 콤포넌트를 포함한다. The interface 110 may include other interface component connected to a single component, and memory 200 for connecting the controller to the host interface. 비휘발성 롭(122) 및/또는 선택적 비휘발성 메모리(124)에 저장된 펌웨어는 컨트롤러(100)의 기능을 이행하기 위해 프로세서(120)를 위한 코드를 제공한다. Nonvolatile Rob 122, and / or firmware stored in the optional nonvolatile memory 124 provides codes for the processor 120 to implement the functions of the controller 100. 에러 교정 코드는 선택적 코프로세서(121) 또는 프로세서(120)에 의해 처리될 수 있다. Error correction codes may be processed by an optional co-processor 121 or processor 120. 대안 실시예에서, 컨트롤러(100)는 상태 기계(미도시)에 의해 구현된다. In an alternate embodiment, the controller 100 is implemented by a state machine (not shown). 또 다른 실시예에서, 컨트롤러(100)는 호스트내에 구현된다. In yet another embodiment, controller 100 is implemented within the host.

논리 및 물리 블록 구조 Logical and physical block structure

도 2는 본 발명의 양호한 실시예에 따른, 물리 섹터의 그룹(또는 메타블록)으로 조직화되어 컨트롤러의 메모리 관리자에 의해 관리되는 메모리를 예시한다. Figure 2 is organized as a group of physical sectors (or metablock) in accordance with a preferred embodiment of the present invention illustrates a memory managed by a memory manager of the controller. 메모리(200)는 메타블록으로 조직화되며, 여기서, 각 메타블록은 함께 삭제할 수 있는 물리 섹터(S 0 ,...,S N-1 )의 그룹이다. Memory 200 is organized into metablocks, where each metablock is a group of physical sectors (S 0, ..., S N -1) that can be deleted together.

호스트(100)는 파일 시스템 또는 오퍼레이팅 시스템하에서 어플리케이션을 운용시 메모리(200)를 억세스한다. Host 100 accesses the memory 200 when operating an application under a file system or operating system. 통상적으로, 호스트 시스템은 논리 섹터의 유닛으로 데이터를 어드레스하며, 여기서, 예로서, 각 섹터는 데이터의 512바이트를 포함할 수 있다. Typically, the host system and the data address in units of logical sectors where, for example, each sector may contain 512 bytes of data. 또한, 호스트에 대하여, 각각 하나 이상의 논리 섹터로 구성된 논리 클러스터의 유닛으로 메모리 시스템을 판독 및 그에 기록하는 것이 일반적이다. In addition, it is common that for the host, reading and writing to the memory system as the logical cluster units each with at least one logical sector. 일부 호스트 시스템에서, 호스트에서 보다 낮은 레벨의 메모리 관리를 수행하기 위해 선택적 호스트측 메모리 관리자가 존재할 수 있다. In some host systems, an optional host-side memory manager may exist to perform memory management for the lower level in the host. 대부분의 경우에, 판독 또는 기록 동작 동안, 호스트(10)는 주로, 연속적 어드레스를 갖는 데이터의 논리 섹터의 스트링을 포함하는 세그먼트를 판독 또는 기록하기 위해 메모리 시스템(20)에 명령을 발령한다. While in most cases, the read or write operation, the host 10 is primarily, it issued commands to the memory system 20 to read or write a segment containing a string of logical sectors of data with contiguous addresses.

메모리측 메모리 관리자는 플래시 메모리(200)의 메타블록 중 호스트 논리 섹터의 데이터의 저장 및 검색을 관리하기 위해 메모리 시스템(20)의 컨트롤러(100)내에 구현된다. Memory-side memory manager is implemented in the controller 100 of the memory system 20 to manage the storage and retrieval of the meta data of the block of the host logical sector of the flash memory 200. 양호한 실시예에서, 메모리 관리자는 메타블록의 삭제, 판독 및 기록 동작을 관리하기 위한 다수의 소프트웨어 모듈을 포함한다. In a preferred embodiment, the memory manager includes a plurality of software modules for managing the deletion of the meta-blocks, read and write operations. 또한, 메모리 관리자는 컨트롤러 램(130) 및 플래시 메모리(200) 중에 그 동작과 연계된 시스템 제어 및 디렉토리 데이터를 유지한다. Further, the memory manager maintains the system control and directory data associated with its operations among the controller RAM 130 and flash memory 200.

도 3a(i) 내지 도 3a(iii)는 본 발명의 양호한 실시예에 따른, 논리 그룹과 메타블록 사이의 맵핑을 개략적으로 예시한다. Figure 3a (i) to Figure 3a (iii) is illustrated schematically the mapping between the preferred embodiment according to the example, the logical group and the metablock of the present invention. 물리 메모리의 메타블록은 논리 그 룹의 데이터의 N 논리 섹터를 저장하기 위한 N 물리 섹터를 갖는다. Metablock of the physical memory has N physical sectors for storing N logical sectors for the logical group of data. 도 3a(i)는 논리 그룹 LG i 로부터의 데이터를 도시하며, 여기서, 논리 섹터는 연속적인 논리 순서(0, 1,..., N-1)로 존재한다. Figure 3a (i) shows the data from a logical group LG i, where the logical sector is present in a continuous logical order (0, 1, ..., N -1). 도 3a(ii)는 동일 논리 순서로 메타블록내에 저장되어 있는 동일 데이터를 도시한다. Figure 3a (ii) shows the same data stored in the metablock in the same logical order. 이 방식으로 저장될 때, 메타블록은 "순차적"이라 말해진다. When stored in this manner, the metablock is said to as "sequential". 일반적으로, 메타블록은 다른 순서로 저장된 데이터를 가질 수 있으며, 이 경우, 메타블록은 "비순차적" 또는 "카오틱(chaotic)"이라고 말해진다. In general, the metablock may have data stored in a different order, it is the case, the metablock is said to be "non-sequential" or "Chaotic (chaotic)".

맵핑되는 메타블록의 최저 어드레스와 논리 그룹의 최저 어드레스 사이에 오프셋이 존재할 수 있다. The offset between the lowest address of a logical group and the lowest address of the metablock mapping that may be present. 이 경우, 논리 섹터 어드레스는 메타블록내의 논리 그룹의 저단으로부터 다시 상단으로의 루프로서 랩 어라운드 한다. In this case, logical sector address will wrap around a loop of the top of the back from the lower end of the logical group within the metablock. 예로서, 도 3a(iii)에서, 메타블록은 논리 섹터(k)의 데이터에서 시작하는 그 최초 위치에서 저장한다. By way of example, in Figure 3a (iii), the metablock stores in its first location beginning at the data in logical sector (k). 최종 논리 섹터(N-1)가 도달될 때, 이는 섹터 0으로 되돌아가고, 그 최종 물리 섹터에서 논리 섹터 k-1과 연계된 데이터를 최종적으로 저장한다. When the last logical sector (N-1) is reached, it returns to the sector 0 and finally storing data associated with logical sector k-1 in its last physical sector. 양호한 실시예에서, 메타블록의 최초 물리 섹터에 저장된 데이터의 시작 논리 섹터 어드레스를 나타내는 것 같이, 임의의 오프셋을 나타내기 위해, 페이지 태그가 사용된다. In a preferred embodiment, as to indicate the start logical sector address data stored in the first physical sector of the metablock, to indicate that any of the offset, a page tag is used. 두 개의 블록은 페이지 태그만이 다를 때, 유사한 순서로 저장된 그 논리 섹터를 갖는 것으로 간주된다. Two blocks are considered to have their logical sectors stored in similar order when only a page tag different.

도 3b는 논리 그룹과 메타블록 사이의 맵핑을 개략적으로 예시한다. Figure 3b illustrates schematically the mapping between logical groups and metablocks. 데이터가 현재 갱신되어 있는 소수의 논리 그룹을 제외하고, 각 논리 그룹은 고유 메타블록으로 맵핑된다. Except for a small number of logical groups in which data is updated to the current, and each logical group is mapped to a unique metablock. 논리 그룹이 갱신된 이후에, 이는 다른 메타블록에 맵핑될 수 있 다. After a logical group has been updated, which it is can be mapped to a different metablock. 맵핑 정보는 논리 대 물리 디렉토리의 세트에 유지된다. Mapping information is kept on a set of logical-to-physical directory. 이는 보다 상세히 후술될 것이다. This will be described further below.

메타블록 맵핑을 위한 논리 그룹의 다른 유형도 고려된다. Other types of logical group to metablock mapping are also a consideration. 예로서, 가변 크기를 갖는 메타블록이 발명의 명칭이 "적응성 메타블록(Adaptive Metablock)"인 알란 신클레어(Alan Sinclair)에 의해 본원과 동일한 날자로 출원된, 동시계류중이며, 공동 소유의 미국 특허 출원에 개시되어 있다. By way of example, the name of a meta-block having a variable size of invention "adaptive metablock (Adaptive Metablock)" Alan Sinclair (Alan Sinclair), the jungyimyeo co-pending application of the same date of the present application by the co-owned U.S. Pat. It is disclosed in application. 이 동시계류 출원의 전체 내용은 여기에 참조로 포함되어 있다. The entire contents of co-pending application is incorporated herein by reference.

본 발명의 한가지 특징은 시스템이 단일 논리 파티션으로 동작하며, 메모리 시스템의 논리 어드레스 범위 전반에 걸쳐 논리 섹터의 그룹이 동일하게 취급된다는 것이다. One feature of the present invention is that the system operates with a single logical partition, and groups of logical sectors throughout the logical address range equal to treat the first half of the memory system. 예로서, 시스템 데이터를 포함하는 섹터 및 사용자 데이터를 포함하는 섹터가 논리 어드레스 공간 중 임의의 장소에 분포될 수 있다. By way of example, a sector comprises a sector, and user data including the system data can be distributed anywhere among the logical address space.

종래 기술 시스템과는 달리, 높은 빈도수 및 작은 크기의 갱신을 갖는 데이터를 포함하기 쉬운 논리 어드레스 공간 섹터를 국지화하기 위한 시스템 섹터(즉, 파일 할당 테이블, 디렉토리 또는 서브디렉토리에 관련된 섹터)의 어떠한 특수한 구획형성 또는 지역형성도 존재하지 않는다. Prior art systems and in contrast, the high frequency and system sectors to localize an easy logical address space sectors to contain the data having the update of the small size no special compartment (that is, a file allocation table, directory or sector associated with the subdirectory) Figure no formation or formation area. 대신, 섹터의 논리 그룹을 갱신하는 본 체계는 파일 데이터를 대표하는 것들 및 시스템 섹터를 대표하는 억세스의 패턴을 효율적으로 다룬다. Instead, the system for updating a logical grouping of the sector deals with the pattern of access to represent those sectors and systems that represent the file data efficiently.

도 4는 물리 메모리내의 구조를 가지는 메타블록의 정렬을 예시한다. 4 illustrates the alignment of a metablock with structures in physical memory. 플래시 메모리는 유닛으로서 함께 삭제할 수 있는 메모리 셀의 블록을 포함한다. Flash memory comprises blocks of memory cells that can be deleted together as a unit. 이런 삭제 블록은 메모리의 최소 삭제가능 유닛(MEU) 또는 플래시 메모리의 삭제의 최소 유닛이다. This erase block is the minimum unit of deletion of at least the memory unit can delete the (MEU), or flash memory. 최소 삭제 유닛은 메모리의 하드웨어 설계 파라미터이며, 다수의 MEU 삭제를 지원하는 일부 메모리 시스템에서, 하나 이상의 MEU를 포함하는 "슈퍼 MEU"를 구성하는 것이 가능하다. Minimum deletion unit is a hardware design parameter of the memory, in some memory systems that supports multiple MEU removed, it is possible to construct a "super MEU" comprising at least one MEU. 플래시 EEPROM에 대하여, MEU는 하나의 섹터를 포함할 수 있지만, 다수의 섹터를 포함하는 것이 바람직하다. With respect to the flash EEPROM, the MEU may comprise one sector, it is preferred to include a plurality of sectors. 도시된 실시예에서, 이는 M 섹터를 갖는다. In the illustrated embodiment, which has the M sectors. 양호한 실시예에서, 각 섹터는 데이터의 512바이트를 저장할 수 있으며, 사용자 데이터 부분과, 시스템 또는 오버헤드 데이터를 저장하기 위한 헤더 부분을 갖는다. In a preferred embodiment, each sector can store 512 bytes of data, and has a header part for storing user data portion and, system or overhead data. 메타블록이 P MEU로 구성되고, 각 MEU가 M 섹터를 포함하는 경우, 이때, 각 메타블록은 N=P*M 섹터를 갖는다. When the meta-block consists of P MEU, and each MEU contains M sectors, where each metablock has an N = P * M sectors.

메타블록은 시스템 레벨에서, 메모리 위치의 그룹, 예로서, 함께 삭제가능한 섹터를 나타낸다. Metablock at the system level, as a group, examples of the memory locations represents a possible deleted sector. 플래시 메모리의 물리 어드레스 공간은 메타블록의 세트로서 취급되며, 메타블록은 최소 삭제 유닛이다. Physical address space of the flash memory is treated as a set of metablocks, the metablock is the minimum unit removed. 본 명세서에서, 용어 "메타블록" 및 "블록"은 미디어 관리를 위한 시스템 레벨에서의 최소 삭제 유닛을 규정하기 위해 같은 의미로 사용되며, 용어 "최소 삭제 유닛" 또는 MEU는 플래시 메모리의 최소 삭제 유닛을 나타내기 위해 사용된다. As used herein, the term "meta-block," and "block" is used to mean the same to define a minimum elimination unit at the system level for media management, and the term "minimum elimination unit" or MEU is minimal deletion unit of the flash memory It is used to represent.

메타블록을 형성하기 위한 최소 삭제 유닛(MEU)의 링크형성 Links forming a minimum elimination unit (MEU) for forming the metablock

프로그래밍 속도 및 삭제 속도를 최대화하기 위해, 다수의 MEU가 병렬로 삭제되고, 다수의 MEU에 위치된 다수의 정보 페이지가 병렬로 프로그램되도록 배열함으로써, 병행이 가능한 많이 활용된다. In order to maximize programming speed and deleting speed, a number of MEU being removed in parallel, by arranging a number of the plurality of information located in a MEU page to be programmed in parallel, it is much utilized in parallel is possible.

플래시 메모리에서, 페이지는 단일 동작에서 함께 프로그램될 수 있는 메모리 셀의 그룹화이다. In the flash memory, the page is a group of memory cells that can be programmed together in a single operation. 페이지는 하나 이상의 섹터를 포함할 수 있다. Page may include one or more sectors. 또한, 메모리 어레이는 하나 이상의 평면으로 구획화될 수 있으며, 여기서, 하나의 평면내에는 단 하나의 MEU가 한번에 프로그램 또는 삭제될 수 있다. In addition, the memory array may be partitioned into more than one plane, where is in one plane there is only one MEU may be removed at one time or program. 마지막으로, 평면은 하나 이상의 메모리 칩 중에 분포될 수 있다. Finally, the planes may be distributed among one or more memory chips.

플래시 메모리에서, MEU는 하나 이상의 페이지를 포함할 수 있다. In flash memory, MEU may include one or more pages. 플래시 메모리 칩내의 MEU는 평면으로 조직화될 수 있다. MEU within a flash memory chip may be organized in planes. 각 평면으로부터의 하나의 MEU가 동시에 프로그램 또는 삭제될 수 있기 때문에, 각 평면으로부터 하나의 MEU를 선택함으로써, 다수의 MEU 메타블록을 형성하는 것이 편리하다(이하의 도 5b 참조). Since one MEU from each plane may be at the same time program, or deleted, it is convenient to by selecting one MEU from each plane, that forms a multiple MEU metablock (see the following Fig. 5b).

도 5a는 다른 평면의 최소 삭제 유닛의 링크형성으로부터 구성되는 메타블록을 예시한다. Figure 5a illustrates a meta-block consisting of the formation of the link from the other flat minimum unit of deletion. MB0, MB1,..., 같은 각 메타블록은 메모리 시스템의 다른 평면으로부터의 MEU로부터 구성되며, 여기서, 다른 평면은 하나 이상의 칩 사이에 분포한다. MB0, MB1, ..., each meta-block consists of the same from the MEU from different planes of the memory system, where the different planes is distributed between the one or more chips. 도 2에 도시된 메타블록 링크 매니저(170)는 각 메타블록을 위한 MEU의 링크형성을 관리한다. The metablock link manager 170 shown in Figure 2, manages the link formed in the MEU for each metablock. 각 메타블록은 최초 포맷팅 프로세스 동안 구성되며, MEU 중 하나의 손상이 존재하지 않는 한, 시스템의 수명 전반에 걸쳐 그 구성 MEU를 유지한다. Each metablock is configured during the first formatting process, which, to keep the configuration MEU throughout the life of the system is one of a damage of the MEU is not present.

도 5b는 하나의 최소 삭제 유닛(MEU)이 메타블록으로의 링크형성을 위해 각 평면으로부터 선택되는 일 실시예를 예시한다. Figure 5b illustrates one embodiment of at least one deletion unit (MEU) is selected from each plane to form a link of the metablock.

도 5c는 메타블록으로의 링크형성을 위해 각 평면으로부터 하나 이상의 MEU가 선택되는 다른 실시예를 예시한다. Figure 5c for the link formed of a metablock illustrates another embodiment in which more than one MEU are selected from each plane. 다른 실시예에서, 하나 이상의 MEU는 슈퍼 MEU를 형성하도록 각 평면으로부터 선택될 수 있다. In another embodiment, more than one MEU may be selected from each plane to form a super MEU. 예로서, 슈퍼 MEU는 두 개의 MEU로부터 형성될 수 있다. By way of example, a super MEU may be formed from two MEU. 이 경우에, 이는 판독 또는 기록 동작을 위해 하나 이상의 패스(pass)를 취할 수 있다. In this case, it may take one or more passes (pass) for a read or a write operation.

메타블록으로의 MEU의 링크형성 또는 재링크형성은 또한, 본 출원과 동일자로, 카를로스 곤잘레스(Carlos Gonzales) 등에 의해 출원된 발명의 명칭이 "다중 블록 구조로의 블록의 적응적 결정적 그룹화(Adative Deterministic Grouping of Blocks into Multi-Block Structures)"인 동시 계류중인 공동 소유의 미국 특허 출원에 개시되어 있다. Link forming or re-link formation of the MEU to the metablock is also the same as the present application, Carlos Gonzalez adaptive crucial grouping of blocks in a (Carlos Gonzales) the name is "multi-block structure of the present application or the like (Adative Deterministic is disclosed in U.S. Patent Application of Grouping of Blocks into Multi-Block Structures) "in co-pending commonly owned being.

메타블록 관리 Metablock management

도 6은 컨트롤러 및 플래시 메모리내에 구현된 바와 같은 메타블록 관리 시스템의 개략적인 블록도이다. Figure 6 is a schematic block diagram of the metablock management system as implemented in the controller and flash memory. 메타블록 관리 시스템은 컨트롤러(100)에 구현된 다양한 기능 모듈을 포함하며, 테이블에 다양한 제어 데이터(디렉토리 데이터 포함)와, 컨트롤러 램(130) 및 플래시 메모리(200)내에 계층적으로 분포된 리스트를 유지한다. Metablock management system comprises various functional modules implemented in the controller 100, a list of distribution in the various control data on the table (including directory data) and the controller RAM 130 and flash memory 200 hierarchically maintained. 컨트롤러(100)에 구현된 기능 모듈은 인터페이스 모듈(110), 논리적-대-물리 어드레스 변환 모듈(140), 갱신 블록 관리자 모듈(150), 삭제 블록 관리자 모듈(160) 및 메타블록 링크 관리자(170)를 포함한다. The function modules implemented in the controller 100 is the interface module 110, a logical-to-physical address translation module 140, an update block manager module 150, an erase block manager module 160 and a metablock link manager (170 ) a.

인터페이스(110)는 메타블록 관리 시스템이 호스트 시스템과 인터페이스 연결할 수 있게 한다. Interface 110 allows the metablock management system to connect a host system and interface. 논리 대 물리 어드레스 변환 모듈(140)은 호스트로부터의 논리 어드레스를 물리 메모리 위치에 맵핑한다. Logical-to-physical address translation module 140 maps the logical address from the host to a physical memory location. 갱신 블록 관리자 모듈(150)은 주어진 논리 데이터 그룹을 위한 메모리 내의 데이터 갱신 동작을 관리한다. Update block Manager module 150 manages data update operations in memory for a given logical data groups. 삭제 블록 관리자(!60)는 새로운 정보의 저장을 위해 그 할당 및 메타블록의 삭제 동작을 관리한다. Erase block manager (! 60) manages the erase operation of the metablocks and assigned for the storage of new information. 메타블록 링크 관리자(170)는 주어진 메타블록을 구성하기 위해 섹터의 최소 삭제가능 블록의 서브그룹의 링크형성을 관리한다. Metablock link manager 170 manages the links forming the subgroups of minimum erasable blocks of sectors to constitute a given metablock. 이들 모듈의 상세한 설명은 그 각 섹션에 주어질 것이다. Detailed description of these modules will be given in their respective sections.

동작 동안, 메타블록 관리 시스템은 어드레스, 제어 및 상태 정보 같은 제어 데이터를 생성하고 그와 함께 동작한다. During operation the metablock management system generates a control data such as addresses, control and status information, and operates with the. 제어 데이터 중 다수가 빈번히 변하는 작은 크기의 데이터가 되는 경향이 있기 때문에, 큰 블록 구조를 갖는 플래시 메모리내에 쉽게 저장 및 유지될 수 없다. There is a tendency that the data of a small size, a large number of frequently changing control data, easily stored and can not be held in the flash memory with a large block structure. 보다 효율적인 갱신 및 억세스를 위해 컨트롤러 램(RAM) 내에 보다 많이 변하는 제어 데이터의 보다 적은 양을 배치하면서, 비휘발성 플래시 메모리내에 보다 많은 정적 제어 데이터를 저장하기 위해 계층적 및 분포식 체계가 사용된다. While placing a small amount than the more varying control data in a more controller RAM for more efficient update and access (RAM), a hierarchical and distributed type system is used to store a number of static control data than that in a non-volatile flash memory. 파워 셔트다운(shutdown) 또는 고장의 경우에, 이 체계는 비휘발성 메모리내의 제어 데이터의 작은 세트를 스캐닝함으로써 쉽게 비휘발성 컨트롤러 램 내의 제어 데이터가 재구성될 수 있게 한다. In the case of a power shut down (shutdown) or failure, the scheme allows the control data in the volatile controller RAM easily ratio by scanning a small set of control data in the nonvolatile memory may be reconfigured. 이는 본 발명이 데이터의 주어진 논리 그룹의 가능한 활동과 연계된 블록의 수를 규제하기 때문에 가능하다. This is possible because the number of control blocks associated with the possible activity of a given logical group of data, the present invention. 이 방식으로, 스캐닝이 한정된다. In this way, the scanning is confined. 부가적으로, 영속성이 필요한 제어 데이터 중 일부는 섹터 단위로 갱신될 수 있는 비휘발성 메타블록에 저장되며, 각 갱신은 이전의 것을 대체하는 새로운 섹터가 기록되는 결과를 초래한다. Additionally, some of the control data that requires persistence are stored in a nonvolatile metablock that can be updated sector-by-sector, each of the updates will results in a new sector to replace that of the previous record. 메타블록내의 섹터 단위 갱신의 추적을 유지하기 위해 제어 데이터를 위해 섹터 인덱싱 체계가 사용된다. To keep track of the update sectors in the metablock are sector indexing scheme to the control data is used.

비휘발성 플래시 메모리(200)는 비교적 정적인 다량의 제어 데이터를 저장한다. Non-volatile flash memory 200 stores a relatively large amount of static control data. 이는 그룹 어드레스 테이블(GAT)(210), 카오틱 블록 인덱스들(BSI)(220), 삭제 블록 리스트(EBL)(230) 및 MAP(240)를 포함한다. This includes group address tables (GAT) (210), chaotic block indices (BSI) (220), deletes the block list (EBL) (230) and MAP (240). GAT(210)는 섹터의 논리 그룹과, 그 대응 메타블록 사이의 맵핑의 추적을 유지한다. GAT (210) keeps track of the mapping between the logical groups of sectors and their corresponding metablocks. 맵핑은 그들이 받는 갱신을 제 외하면 변화되지 않는다. The mapping does not change if you excluded the update they receive. CBI(220)는 갱신 동안 논리적으로 비순차적 섹터의 맵핑의 추적을 유지한다. CBI (220) is logically keep track of the mapping of the non-sequential sectors during the update. EBL(230)은 삭제된 메타블록의 풀의 추적을 유지한다. EBL (230) maintains the full tracking of the deleted metablock. MAP(240)는 플래시 메모리내의 모든 메타블록의 삭제 상태를 보여주는 비트맵이다. MAP (240) is a bit map showing the deleted status of all metablocks in the flash memory.

휘발성 컨트롤러 램(130)은 빈번히 변경 및 억세스되는 제어 데이터의 작음 부분을 저장한다. Volatile controller RAM 130 stores a small portion of the frequently changed and that access control data. 이는 할당 블록 리스트(ABL)(134) 및 소거 블록 리스트(CBL)(136)를 포함한다. This allocation block list List (ABL) (134) and the erase block containing the (CBL) (136). ABL(134)은 갱신 데이터를 레코딩하기 위하여 메타블록의 할당의 추적을 유지하고, CBL(136)은 할당해제 및 삭제된 메타블록의 추적을 유지한다. ABL (134) should keep track of the metadata block assignment and, CBL (136) is keeping track of the metadata block is released and allocated to recording the update data deletion. 양호한 실시예에서, 램(130)은 플래시 메모리(200)내에 저장된 데어 데이터를 위한 캐시로서 작용한다. In a preferred embodiment, the RAM 130 acts as a cache for data stored in the flash memory der 200. The

갱신 블록 관리자 Update Block Manager

갱신 블록 관리자(150)(도 2에 도시)는 논리 그룹의 갱신을 취급한다. Update block manager 150 (shown in FIG. 2) handles the update of logical groups. 본 발명의 일 양태에 따라서, 갱신을 받는 섹터의 각 논리 그룹은 갱신 데이터를 레코딩하기 위해 전용 갱신 메타블록이 할당된다. According to one aspect of the invention, each logical group of sectors to receive an update is allocated a dedicated update metablock for recording the update data. 양호한 실시예에서, 논리 그룹의 하나 이상의 섹터의 임의의 세그먼트가 갱신 블록에 레코딩된다. In a preferred embodiment, any segment of one or more sectors of the logical group is recorded in the update block. 갱신 블록은 순차적 순서 또는 비순차적(또한, 카오틱이라고도 알려짐) 순서 중 어느 하나로, 갱신 데이터를 수신하도록 관리될 수 있다. Update block is any one of a sequential order or non-sequential order (and also known as chaotic), it can be managed to receive updated data. 카오틱 갱신 블록은 논리 그룹내에 임의의 순서로 섹터 데이터가 갱신될 수 있게 하며, 개별 섹터의 임의의 반복을 갖는다. Chaotic update block allows sector data and in any order within a logical group may be updated, and has a random repetition of individual sectors. 특히, 순차적 갱신 블록은 임의의 데이터 섹터의 재배치를 필요로 하지 않고, 카오틱 갱신 블록이 될 수 있다. In particular, it can be a sequential update block without the need for relocation of any data sectors, Chaotic update block. 카오틱 데이터 갱신을 위한, 어떠한 사전결정된 블록 할당도 필요하지 않으며, 임의의 논리 어드레스에서의 비순차적 기록이 자동으로 수용 된다. Cao for tick data update, does not require any pre-determined block allocation, the non-sequential recording at any logical address is automatically accommodated. 따라서, 종래 기술 시스템과는 달리, 논리 그룹의 다양한 갱신 세그먼트가 논리적으로 순차적인지 또는 비순차적 순서인지 여부에 대한 특별한 처리가 존재하지 않는다. Thus, the prior art systems and in contrast, the various update segments of the logical group is not a special processing as to whether the logical sequential or non-sequential order if present. 포괄적 갱신 블록은 단순히, 그들이 호스트에 의해 요청되는 순서로 다양한 세그먼트를 레코딩하기 위해 사용된다. Generic update block will simply be used to record the various segments in the order they are requested by the host. 예로서, 호스트 시스템 데이터 또는 시스템 제어 데이터가 카오틱 형태로 갱신되는 경향이 있는 경우에도, 호스트 시스템 데이터에 대응하는 논리 어드레스 공간의 영역은 호스트 사용자 데이터를 갖는 영역과 달리 취급될 필요가 없다. By way of example, even if host system data or system control data tends to be updated in a chaotic mode, regions of logical address space corresponding to host system data do not need to be treated, unlike the area having the host user data.

섹터의 완전한 논리 그룹의 데이터는 단일 메타블록에 논리 순차 순서로 저장되는 것이 바람직하다. The complete data of the logical group of sectors is preferably stored in a logical sequence in a single metablock. 이 방식으로, 저장된 논리 섹터에 대한 인덱스가 사전규정된다. In this way, the index to the stored logical sectors is predefined. 메타블록이 사전규정된 순서로 주어진 논리 그룹의 모든 섹터를 저장하고 있을 때, 이는 "완전한" 것으로 말해진다. When the meta-block is stored every sector of a given logical group in a predefined order, which is said to be "complete". 갱신 블록에 대하여, 이는 결과적으로 논리 순차 순서로 갱신 데이터로 채워지며, 그후, 갱신 블록은 이미 원래의 메타블록을 대체하는 갱신된 완전한 메타블록이 된다. With respect to the update block, which is a result is populated with a logical sequence to the update data, and thereafter, the update block is already fully updated metablock replacing the original metablock. 다른 한편, 갱신 블록이 완전한 블록의 것과는 다른 논리 순서로 갱신 데이터로 채워지는 경우, 갱신 블록은 비순차적 또는 카오틱 갱신 블록이며, 비정렬 세그먼트는 궁극적으로, 논리 그룹의 갱신 데이터가 완전한 블록의 것과 동일한 순서로 저장되도록 추가 처리되어야만 한다. On the other hand, the update if the blocks are filled with the updated data to the other logical order from that of the complete block, the update block is non-a sequential or chaotic update block, the non-aligned segments is ultimately, as update data of the logical group is a complete block It must be further processed to be stored in the same order. 양호한 경우에, 이는 단일 메타블록내에 논리적으로 순차적 순서로 존재한다. The preferred case, which is present in logically sequential order in a single metablock. 추가 처리는 원래 블록내의 불변 섹터와 갱신 블록내의 갱신 섹터를 또 다른 갱신 메타블록으로 병합하는 것을 수반한다. The further processing involves merging the original unchanged sectors with update sectors in the update block in the block to another update metablock. 병합된 갱신 블록은 그후, 논리적으로 순차적 순서가되며, 원본 블록을 대체하도록 사용될 수 있다. The merged update block is a sequential order to then, logically, can be used to replace the original block. 일부 사전결정된 조건하에 서, 병합 프로세스는 하나 이상의 압축(compaction) 프로세스가 선행된다. Standing under some predetermined conditions, the merge process is preceded by one or more compression (compaction) process. 압축 프로세스는 동일 논리 섹터의 순차 갱신에 의해 폐기된 임의의 복제 논리 섹터를 제거하면서, 카오틱 갱신 블록의 섹터를 대체 카오틱 갱신 블록으로 단순히 재레코딩한다. Compression process simply re-recording by any alternative chaotic update block while the sector of removing duplicate logical sector, Chaotic update block disposed of by the sequential update of the same logical sector.

갱신 체계는 지정된 최대치까지 다수의 갱신 스레드가 동시에 운용될 수 있게 한다. Updating system enables a thread to a specified maximum number of updates can be operated simultaneously. 각 스레드는 그 전용 갱신 메타블록을 사용하여 갱신을 받는 논리 그룹이다. Each thread is a logical group receiving updated using the dedicated update metablock.

순차 데이터 갱신 Sequential data update

논리 그룹에 속하는 데이터가 최초 갱신될 때, 메타블록이 할당되고, 논리 그룹의 갱신 데이터의 갱신 블록으로서 전용된다. When the data belonging to a logical group is first updated, a metablock is allocated and is dedicated as an update block of the update data of the logical group. 갱신 블록은, 기존 메타블록이 그 섹터 모두를 완전하게 저장하고 있는 논리 그룹의 하나 이상의 섹터의 세그먼트를 기록하기 위한 명령을 호스트로부터 수신하였을 때 할당된다. Update block is allocated when a command to an existing metablock records the segments of the at least one logical group of sectors that is completely store all the sectors has been received from the host. 제1 호스트 기록 동작에 대하여, 데이터의 제1 세그먼트가 갱신 블록상에 레코딩된다. As compared to the first host write operation, a first segment of data is recorded on the update block. 각 호스트 기록이 연속적 논리 어드레스를 갖는 하나 이상의 섹터의 세그먼트이기 때문에, 제1 갱신은 항상 본질적으로 순차적이다. Since the segments of one or more sectors, each having a continuous logical address host write, the first update is always an essentially sequential order. 순차적 호스트 기록에서, 동일 논리 그룹내의 갱신 세그먼트는 호스트로부터 수신된 순서로 갱신 블록내에 레코딩된다. Updated segment in the sequence in the host write, the same logical group are recorded in the update block in the order received from the host. 블록은 순차적 갱신 블록으로서 계속 관리되며, 연계된 논리 그룹내의 호스트에 의해 갱신 섹터는 논리적으로 순차적으로 남아 있는다. Block is managed as a sequential update block continues, updated sectors by the host within the associated logical group is logically there remains a sequentially. 이 논리 그룹내의 갱신된 모든 섹터는 블록이 폐쇄되거나, 카오틱 갱신 블록으로 변환될 때까지, 이 순차적 갱신 블록에 기록된다. All logical sectors in the group are updated, are written to the sequential update block, until the block is closed or, converting a chaotic update block.

도 7a는 논리 그룹을 위한 원래의 블록의 대응 섹터가 폐기되고, 두 개의 별개의 호스트 기록 동작의 결과로서, 순차 갱신 블록에 순차적 순서로 기록된 논리 그룹의 섹터의 예를 예시한다. Figure 7a is in the original block of the corresponding sector for the logical group is discarded, as a result of two separate host write operations, illustrates an example of a logical group of sectors written in sequential order to a sequential update block. 호스트 기록 동작 #1에서, 논리 섹터 LS5 - LS8내의 데이터가 갱신된다. In host write operation # 1, the logical sectors LS5 - the data in the LS8 is updated. LS5' - LS8'로서 갱신 데이터가 새롭게 할당된 전용 갱신 블록에 레코딩된다. LS5 '- LS8' are recorded in a dedicated update block as the updated data is newly allocated.

편의상, 논리 그룹내에 갱신되는 제1 섹터는 제1 물리 섹터 위치로부터 시작하는 전용 갱신 블록내에 레코드된다. For convenience, the first sector to be updated in the logical group is a record in a dedicated update block starting from the first physical sector location. 일반적으로, 갱신되는 제1 논리 섹터는 그룹의 논리 최초 섹터일 필요는 없으며, 따라서, 갱신 블록의 시작과 논리 그룹의 시작 사이에 오프셋이 존재할 수 있다. In general, the first logical sector to be updated is not necessarily the logical first sector of the group, and therefore, there may be an offset between the start and the start of the logical group of the update block. 이 오프셋은 도 3a에 관련하여 전술된 바와 같이 페이지 태그라 알려져 있다. This offset is known la page tag, as described above with reference to Figure 3a. 후속 섹터는 논리적으로 순차적 순서로 갱신된다. Subsequent sectors are updated in logically sequential order. 논리 그룹의 최종 섹터가 기록될 때, 그룹 어드레스 랩 어라운드 및 기록 시퀀스는 그룹의 제1 섹터에서 이어진다. When the last sector of the logical group is written, group addresses wrap around and the write sequence is followed by the first sector of the group.

호스트 기록 동작 #2에서, 논리 섹터(LS9-LS12)내의 데이터의 세그먼트가 갱신된다. In host write operation # 2, the segment of data in the logical sectors (LS9-LS12) is updated. LS9'-LS12'로 갱신 데이터는 최종 기록이 종료하는 바로 이어지는 위치에서 전용 갱신 블록에 레코드된다. Updating data in LS9'-LS12 'are record in a dedicated update block in the location immediately following the end of the last recording. 두 개의 호스트 기록은 갱신 데이터가 논리적으로 순차적 순서로, 즉, LS5' - LS12'로 갱신 블록에 레코드되어 있도록 이루어진다는 것을 알 수 있다. Two host write updates the data in sequential order in a logical, i.e., LS5 - it can be seen that is made so that the records in the update block as a 'LS12'. 갱신 블록은 논리적으로 순차적 순서로 충전되기 때문에, 순차 갱신 블록으로서 간주된다. Since updating a logical block is to be charged in sequential order, it is regarded as a sequential update block. 갱신 블록에 레코드된 갱신 데이터는 원본 블록내의 대응하는 것을 폐기한다. The updated data record to the update block is discarded in the corresponding original block.

카오틱 데이터 갱신 Chaotic data update

카오틱 갱신 블록 관리는 연계된 논리 그룹내의 호스트에 의해 갱신된 임의의 섹터가 논리적으로 비순차적일 때, 기존의 순차 갱신 블록에 대해 개시된다. Chaotic update block management when any sector updated by the host within the associated logical group of a logical out of order, is initiated for an existing sequential update block. 카오틱 갱신 블록은 연계된 논리 그룹내의 논리 섹터가 임의의 반복량으로, 임의의 순서로 갱신될 수 있는 형태이다. Chaotic update block is repeated as the amount of the logical sector is in any of the associated logical group, in the form that can be updated in any order. 이는 호스트에 의해 기록된 섹터가 갱신되는 논리 그룹내의 이전에 기록된 섹터에 대해 논리적으로 비순차적일 때, 순차 갱신 블록으로부터의 변환에 의해 생성된다. Which when logically non-sequential to the previously written sector within the logical group is updated, the sector recorded by the host is created by conversion from a sequential update block. 이 논리 그룹내의 순차 갱신된 모든 섹터는 그룹내에서의 그 논리 섹터 어드레스가 무엇이든 카오틱 갱신 블록내의 다음 가용한 섹터 위치에 기록된다. All sectors are sequentially updated in the logical group is recorded in the next available sector location in the one logical sector address is any chaotic update block in the group.

도 7b는 논리 그룹을 위한 원본 블록내의 대체된 섹터 및 카오틱 갱신 블록내의 복제된 섹터는 모두 폐기되는 반면, 5개 개별 호스트 기록 동작의 결과로서, 카오틱 갱신 블록에 대한 카오틱 순서로 기록되는 논리 그룹내의 섹터의 예를 예시한다. Figure 7b is a cloned sectors in the replacement sector, and the chaotic update block in the original block for the logical group, while discarded, as a result of five separate host write operation, written in chaotic order to a chaotic update block It illustrates an example of sectors in a logical group. 호스트 기록 동작 #1에서, 원본 메타블록내에 저장된 주어진 논리 그룹의 논리 섹터 LS10 - LS11이 갱신된다. In host write operation # 1, the logical sector LS10 of a given logical group stored in the original metablock - is updated LS11. 갱신된 논리 섹터 LS10' - LS11'이 새롭게 할당된 갱신 블록에 저장된다. The updated logical sector LS10 '- LS11' are stored in a newly allocated update block. 이 지점에서, 갱신 블록은 순차적인 것이다. At this point, the update block is sequential. 호스트 기록 동작 #2에서, 논리 섹터 LS5 - LS6이 LS5' - LS6'로 갱신되고, 최종 기록에 바로 이은 위치에서 갱신 블록에 레코드된다. In host write operation # 2, the logical sectors LS5 - the LS6 LS5 '- LS6' and updated by, the record in the update block in the location immediately subsequent to the last recorded. 이는 갱신 블록을 순차적인 것으로부터 카오틱의 것으로 변환한다. This conversion to the chaotic sequence from which the update block. 호스트 기록 동작 #3에서, 논리 섹터 LS10이 다시 갱신되고, 갱신 블록의 다음 위치에 LS10"로서 레코드된다. 이 지점에서, 갱신 블록내의 LS10"은 이전 레코딩내의 LS10'를 대체하며, 이는 순차적으로, 원본 블록내의 LS10을 대체한다. In host write operation # 3, the logical sector LS10 is being updated again, LS10 next location of the update block "is record as At this point, LS10 in the update block" is replaces LS10 'in a previous recording which in sequence, It replaces LS10 in the original block. 호스트 기록 동작 #4에서, 논리 섹터 LS10내의 데이터가 다시 갱 신되며, LS"'로서 갱신 블록의 다음 위치에 레코드된다. 따라서, LS10"'은 이제 최신의 것이며, 논리 섹터 LS10을 위해 유일한 유효 데이터이다. In host write operation # 4, the logical sector data in the LS10 the gang are new back, "" is a record on the next location of the update block as Thus, LS10 " 'LS is now those of the up-to-date, the only valid for the logical sector LS10 data to be. 호스트 기록 동작 #5에서, 논리 섹터 LS30내의 데이터가 갱신되고, LS30'으로서 갱신 블록에 레코드된다. In host write operation # 5, the data in logical sector LS30 is being updated, LS30 'is a record in the update block. 따라서, 본 예는 논리 그룹내의 섹터가 임의의 반복수로 임의의 순서로 카오틱 갱신 블록에 기록될 수 있다는 것을 예시한다. Thus, this example illustrates that sectors within a logical group can be written in the chaotic update block in any order and in any number of iterations.

강제 순차 갱신 Forced sequential update

도 8은 논리적 어드레스의 불연속성을 가지는 두 개의 별개의 호스트 기록 동작의 결과로서, 순차 갱신 블록에 순차적 순서로 기록되는 논리 그룹내의 섹터의 예를 예시한다. Figure 8, illustrates an example of sectors in a logical group being written in sequential order to a sequential update block as a result of two separate host write operations that has a discontinuity in logical addresses. 호스트 기록 #1에서, 논리 섹터 LS5 - LS8내의 갱신 데이터가 LS5' - LS8'로서 전용 갱신 블록에 레코드된다. In host write # 1, the logical sectors LS5 - update the data in the LS5 LS8 - is a record in a dedicated update block as a 'LS8'. 호스트 기록 #2에서, 논리 섹터 LS14- LS 16내의 갱신 데이터가 LS14' - LS16'으로서, 최종 기록에 이어 갱신 블록에 레코드된다. In host write # 2, the logical sector LS 16 LS14- update data is in the LS14 '- LS16' as, following the final record is the record in the update block. 그러나, LS8 및 LS14 사이에는 어드레스 점프가 존재하며, 호스트 기록 #2는 통상적으로, 갱신 블록이 비순차적이 되게 한다. However, it is an address jump between LS8 and LS14 present, host write # 2 Typically, the update block is to be non-sequential. 어드레스 점프는 순차적이지 않기 때문에, 한가지 옵션은 호스트 기록 #2를 실행하기 이전에 원본 블록으로부터 갱신 블록으로 개입 섹터의 데이터를 복사함으로써, 먼저 페이딩 동작(#2A)을 수행하는 것이다. Since the address jump does not sequential, one option is by copying the data of the intervening sectors from the original block to the update block before executing a host write # 2, it is to first perform a fading operation (# 2A). 이 방식으로, 갱신 블록의 순차적 특성이 보전된다. In this manner, it holds the sequential nature of the update block.

도 9는 본 발명의 일반적 실시예에 따른 데이터의 논리 그룹 갱신을 위한 갱신 블록 관리자에 의한 프로세스를 예시하는 흐름도이다. Figure 9 is a flow chart illustrating a process by the update block manager to update a logical group of data in accordance with the general embodiment of the present invention. 갱신 프로세스는 하기의 단계를 포함한다. The update process comprises the following steps.

단계 260 : 메모리가 블록으로 조직화되고, 각 블록은 함께 삭제할 수 있는 메모리 유닛으로 분할되며, 각 메모리 유닛은 데이터의 논리적 유닛을 저장하기 위한 것이다. Step 260: The memory is organized into blocks, each block is divided into memory units that can be deleted together, each memory unit for storing a logical unit of data.

단계 262 : 데이터는 논리 그룹으로 조직화되고, 각 논리 그룹은 논리 유닛으로 분할된다. Step 262: The data is organized into logical groups, each logical group is partitioned into logical units.

단계 264 : 표준 경우에, 논리 그룹의 모든 논리 유닛은 제1 지정 순서, 바람직하게는 논리적 순차 순서에 따라 원본 블록의 메모리 유닛 중에 저장된다. Step 264: All the logical unit of the standard case, the logical group is stored in the memory unit of the source block according to a first specified sequence, preferably a logical sequence. 이 방식으로, 박스내의 개별 논리 유닛을 억세스하기 위한 인덱스가 알려진다. In this way, it is known, the index for accessing the individual logical units in the box.

단계 270 : 데이터의 주어진 논리 그룹(예로서, LG x )에 대하여, LG x 내의 논리 유닛을 갱신하기 위한 요청이 이루어진다(논리 유닛 갱신은 예로서 주어지는 것이다. 일반적으로, 갱신은 LG x 내의 하나 이상의 연속 논리 유닛의 세그먼트이다.) Step 270: The logical group given the data with respect to (for example, LG x), made of a request to update a logical unit within LG x (logical unit update is given by way of example, typically, the update is more than one in LG x It is a continuous segment of the logical units.)

단계 272 : 요청된 갱신 논리 유닛이 LG x 의 갱신을 레코드하기 위해 전용화된 제2 블록에 저장된다. Step 272: is stored in the requested update logical unit is the only screen to record an update of LG x 2 blocks. 레코딩 순서는 제2 순서에 따르며, 통상적으로, 개인이 요청되는 순서이다. Recording procedure is subject to a second order, typically, the order in which the individual requests. 본 발명의 한가지 특징은 갱신 블록이 최초에 데이터를 논리적으로 순차적 또는 카오틱 순서로 레코딩하기 위해 설정될 수 있게 한다는 것이다. One feature of the present invention is that it able to be set to the recording to the update block sequential or chaotic order data to the first logical. 제2 순서에 따라서, 제2 블록은 순차적인 것이거나 카오틱의 것일 수 있다. According to a second order, the second block may be of or that the chaotic sequence of.

단계 274 : 제2 블록은 프로세스가 단계 270으로 되돌아갈 때, 요청된 레코딩된 논리 유닛을 계속 갖고 있다. Step 274: the second block when the process is to go back to step 270, and continues to have the requested logical recording units. 폐쇄를 위한 사전결정된 조건이 실현될 때, 추가 갱신을 수신하기 위해 제2 블록이 폐쇄된다. When a predetermined condition for closure realization, the second block is closed to receiving further updates. 이 경우에, 프로세스는 단계 276으로 진행한다. In this case, the process proceeds to step 276.

단계 276 : 폐쇄된, 제2 블록이 원본 블록의 것과 유사한 순서로 기록된 그 갱신 논리 유닛을 갖는지 여부에 대한 판정이 이루어진다. Step 276: the closed, second block has a determination is made as to whether or not that has the updated logical unit is written in the order similar to that of the original block. 도 3a에 관련하여 설명된 바와 같이, 그 기록된 논리 유닛이 단지 페이지 태그만이 다를 때, 두 블록은 유사한 순서를 갖는 것으로 간주된다. As also described in connection with 3a, when the recorded logical units differ only page tag, the two blocks are considered to have a similar sequence. 두 블록이 유사한 순서를 갖는 경우, 프로세스는 단계 280으로 진행하고, 그렇지 않으면, 소정 종류의 조각 모음이 단계 290에서 실행될 필요가 있다. If the two blocks have similar order the process proceeds to step 280. If, otherwise, there is a predetermined type of piece collection to be executed in the step 290.

단계 280 : 제2 블록이 제1 블록과 동일 순서를 가지기 때문에, 이는 원래의 제1 블록을 대체하기 위해 사용된다. Step 280: Since the second block is a first block gajigi the same order, which is used to replace the original first block. 그후, 갱신 프로세스는 단계 299에서 종료한다. Then, the update process is terminated in step 299.

단계 290 : 주어진 논리 그룹의 각 논리 유닛의 최신 버전이 제2 블록(갱신 블록) 및 제1 블록(원본 블록) 중으로부터 수집된다. Step 290: The latest version of each logical unit of the given logical group are gathered from among the second block (update block) and the first block (original block). 주어진 논리 그룹의 병합된 논리 유닛이 그후, 제1 블록과 유사한 순서로 제3 블록에 기록된다. A merge logic unit of the given logical group, then, is recorded in the third block in an order similar to the first block.

단계 292 : 제3 블록(병합된 블록)은 제1 블록과 유사한 순서를 갖기 때문에, 원본, 제1 블록을 교체하도록 사용된다. Step 292: a third block (the merged block) is used to replace the original, first block because it has a sequence similar to the first block. 갱신 프로세스는 그후 단계 299에서 종료한다. Then the update process ends at step 299.

단계 299 : 정리 프로세스가 완전한 갱신 블록을 생성할 때, 이는 주어진 논리 그룹을 위한 새로운 표준 블록이 된다. Step 299: When the cleanup process to produce a complete updating the block, which is the new standard block for the given logical group. 논리 그룹을 위한 갱신 스레드는 종결된다. Update thread for the logical group is terminated.

도 10은 본 발명의 양호한 실시예에 따른 데이터의 논리 그룹을 갱신하기 위한 갱신 블록 관리자에 의한 프로세스를 예시하는 흐름도이다. 10 is a flow chart illustrating a process by the update block manager to update a logical group of data in accordance with a preferred embodiment of the present invention. 갱신 프로세스는 하 기의 단계를 포함한다. The update process comprises the step of the lower group.

단계 310 : 데이터의 주어진 논리 그룹(예로서, LG x )에 대하여, LG x 내의 논리 유닛을 갱신하기 위한 요청이 이루어진다(섹터 갱신은 예로서 주어지는 것이다. 일반적으로, 갱신은 LG x 내의 하나 이상의 연속 논리 섹터의 세그먼트이다.) Step 310: a logical group given the data with respect to (for example, LG x), made of a request to update a logical unit within LG x (sector update is given by way of example, generally, update one or more continuous within LG x a segment of the logical sector.)

단계 312 : LG x 에 전용화된 갱신 블록이 이미 존재하지 않는 경우, 논리 그룹을 위한 새로운 갱신 스레드를 개시하기 위해 단계 410으로 진행한다. Step 312: If the update block dedicated screen in LG x does not already exist, the process proceeds to step 410 to initiate a new update thread for the logical group. 이는 논리 그룹의 갱신 데이터를 레코드하기 위해 전용화된 갱신 블록을 할당함으로써 달성된다. This is accomplished by allocating an update block dedicated to the screen in order to record the update data of the logical group. 이미 개방된 갱신 블록이 존재하는 경우, 갱신 블록상으로 갱신 섹터를 기록하기 시작하도록 단계 314로 진행한다. When the already opened update blocks exist, the process proceeds to step 314 to begin recording the update sector onto the update block.

단계 314 : 현재 갱신 블록이 이미 카오틱(즉, 비순차적)인 경우, 이때, 카오틱 갱신 블록상에 요청된 갱신 섹터를 레코드하기 위해 단순히 단계 510으로 진행한다. Step 314: the current update block is already chaotic case of (i. E., Non-sequential), In this case, it is simply proceeds to step 510 to record the updated sector requested in the chaotic update block. 현재 갱신 블록이 순차적인 경우, 순차 갱신 블록의 처리를 위해 단계 316으로 진행한다. If the current update block is sequential, the process proceeds to step 316 for processing of a sequential update block.

단계 316 : 본 발명의 한가지 특징은 데이터를 논리적으로 순차적 또는 카오틱 순서로 레코드하기 위해 최초에 갱신 블록이 포괄적으로 설정될 수 있게 한다는 것이다. Step 316: One feature that it allows the present invention, the first update block in order to record the data in a sequential or chaotic order logically be set globally. 그러나, 논리 그룹이 궁극적으로 논리적 순차 순서로 메타블록에 저장된 그 데이터를 갖기 때문에, 가능한 갱신 블록을 순차적으로 유지하는 것이 바람직하다. However, since the logical group ultimately logically sequential order to hold the data stored in the metablock, it is desirable to maintain the available update block in order. 조각 모음이 불필요하기 때문에, 갱신 블록이 추가 갱신을 위해 폐쇄될 때, 이때, 보다 적은 처리가 필요하다. Are not required defragmentation, when the update block is closed to further updates, at this time, there is a need for less processing.

따라서, 요청된 갱신이 갱신 블록의 현재 순차적 순서에 이어지는지 여부에 대한 판정이 이루어진다. Therefore, a determination is made as to whether the requested update is following the current sequential order of the update block. 갱신이 순차적으로 이어지는 경우, 이때, 순차적 갱신을 수행하기 위해 단계 510으로 진행하고, 갱신 블록은 순차적으로 남아 있는다. If the update is followed sequentially, at this time, the process proceeds to step 510 to perform a sequential update, and the update block will remain sequential. 다른 한편, 갱신이 순차적으로 이어지지 않는 경우(카오틱 갱신), 이는 어떠한 다른 작용도 취해지지 않는 경우, 순차 갱신 블록을 카오틱의 것으로 변환한다. On the other hand, if the update does not lead to sequentially (chaotic update), it does not take any other action, to convert the sequential update block to a chaotic.

일 실시예에서, 이 상황을 구제하기 위해 어떤 조치도 더 이상 이루어지지 않고, 프로세스는 직접적으로 단계 370으로 진행하며, 여기서, 갱신은 갱신 블록의 카오틱 개인 블록으로의 전환이 허가된다. In one embodiment, the action is not performed any more in order to remedy this situation, the process directly proceeds to step 370, where the update is a conversion of the individual blocks of the chaotic update block is allowed.

선택적 강제 순차 프로세스 Optional forced sequential process

다른 실시예에서, 강제 순차 프로세스 단계 320이 선택적으로 수행되어 계류중인 카오틱 갱신의 견지에서 가능한 멀리 순차 갱신 블록을 보전한다. In another embodiment, the preservation of forced sequential process step 320 is optionally performed in a sequential update block as far as possible in view of the pending chaotic update. 두 가지 상황이 존재하며, 양자 모두는 갱신 블록상에 레코드된 논리 섹터의 순차 순서를 유지하기 위해 원본 블록으로부터 누락 섹터를 복사하는 것을 필요로 한다. There are two situations, and both require the copying missing sectors from the original block to maintain the sequential order of logical sectors in the update block record. 첫 번째 상황은 갱신이 짧은 어드레스 점프를 생성하는 경우이다. The first situation is when you create a renewed short address jump. 두 번째 상황은 그 순서를 유지하기 위해, 갱신 블록을 조기에 정리하는 것이다. The second condition is to clean up the update blocks early in order to maintain the order. 강제 순차 프로세스 단계 320은 하기의 서브단계를 포함한다. Forced sequential process step 320 includes sub-steps.

단계 330 : 갱신이 사전결정된 양(C B ) 보다 크지 않은 논리 어드레스 점프를 생성하는 경우, 프로세스는 단계 350에서 강제 순차 갱신 프로세스로 진행하고, 그렇지 않으면, 프로세스는 강제 순차 정리를 위해 적격인지를 고려하기 위해 단계 340으로 진행한다. Step 330: Update the case of generating a logical address jump the dictionary is not greater than the predetermined amount (C B), the process proceeds to a forced sequential update process in step 350, otherwise, the process is taken into account is eligible for a forced sequential organize It proceeds to step 340 to.

단계 340 : 채워지지 않은 물리적 섹터의 수가 그 전형적인 값이 개신 블록의 크기의 절반인 사전결정된 설계 파라미터(C C )를 초과하는 경우, 이때, 갱신 블록은 비교적 미사용상태이며, 조기 폐쇄되지 않는다. Step 340: When the typical values of the number of unfilled physical sectors exceeds a half of a block size of Reformed predetermined design parameters (C C), At this time, the update block is relatively unused state, and is not closed early. 프로세스는 단계 370으로 진행하고, 갱신 블록은 카오틱이 된다. The process proceeds to step 370, and the update block will become chaotic. 다른 한편, 갱신 블록이 실질적으로 채워져 있는 경우, 이미 많이 활용되는 것으로 간주되며, 따라서, 강제 순차 정리를 위해 단계 360으로 진행한다. If on the other hand, the update block is substantially filled with, be considered already to be much advantage, therefore, the process proceeds to step 360 to force the sequential cleaning.

단계 350 : 강제 순차 갱신은 어드레스 점프가 사전결정된 양(C B )을 초과하지 않는 한, 현재 순차 갱신 블록이 순차적으로 남아 있게 한다. Step 350: Forced sequential update allows one, the current sequential update block remain in order address jump does not exceed a predetermined amount (C B). 본질적으로, 갱신 블록의 연계된 원본 블록으로부터의 섹터는 어드레스 점프에 의해 걸쳐진 간격을 채우기 위해 복사된다. Essentially, sectors from the original block association update block is draped by the address jump copied to fill the gap. 따라서, 순차 갱신 블록은 현재 갱신을 순차적으로 레코드하기 위해, 단계 510으로 진행하기 이전에 개입 어드레스에 데이터로 페이딩된다. Thus, the sequential update block is to record the current update sequentially, proceeding to step 510 is fading to the previous data on the address intervention.

단계 360 : 강제 순차 정리는 계류중인 카오틱 갱신에 의해 카오틱한 것으로 변환되는 대신, 이미 순차적으로 충전되어 있는 경우, 현재 순차 갱신 블록이 정리되게 한다. Step 360: Forced sequential theorem if it is charged by way, there are sequentially converted by Kao tikhan by a chaotic update pending, it allows current sequential update block is clean. 카오틱 또는 비순차적 갱신은 상술된 어드레스 점프 예외, 후향 어드레스 전이 또는 어드레스 반복에 의해 커버되지 않는 전진방향 어드레스 전이를 갖는 것으로서 정의된다. Chaotic or non-sequential update is defined as having an address jump exception described above, the forward backward address transition, or an address that is not covered by the repeat direction address transition. 순차 갱신 블록이 카오틱 갱신에 의해 변환되는 것을 방지하기 위해, 갱신 블록의 미기록 섹터 위치가 개신 블록의 연계된 원래의 부분 폐기 블록으로부터 섹터를 복사함으로써, 채워진다. By in order to prevent the sequential update block to be converted by a chaotic update, the unwritten sector locations of the update block copy the sectors from the original block discard part of the association of Reformed block, it is filled. 원본 블록은 그후, 완전히 폐기되고, 삭 제될 수 있다. Original block may then be deleted, completely discarded, deleted. 현재의 갱신 블록은 이제, 완전한 논리 섹터의 세트를 가지며, 그후, 원본 메타블록을 대체하는 완전 메타블록으로서 정리된다. Current update block is now, has a full set of logical sectors, and thereafter, is organized as a full metablock replacing the original metablock. 프로세스는 그후, 단계 310에서 최초 요청된 계류중인 섹터 갱신의 레코딩을 수용하도록 적소에 새로운 갱신 블록이 할당되게 하도록 단계 430으로 진행한다. The process proceeds to step 430 to make a new update block allocated in position to receive a recording of the Thereafter, the sector being the first request pending in step 310 update.

카오틱 갱신 블록으로의 변환 A change to a chaotic update block

단계 370 : 계류중인 갱신이 순차적 순서가 아니고, 선택적으로, 강제 순차 조건이 충족되지 않을 때, 단계 510으로 진행할 때, 순차 갱신 블록은 비순차적 어드레스를 갖는 계류중인 갱신 섹터가 갱신 블록상에 레코드될 수 있게 하는 것에 의해 카오틱한 것으로 변환될 수 있다. Step 370: The updated pending is not a sequential order, and optionally, when the forced sequential conditions are not met, you proceed to the step 510, the sequential update block will be updated sector-pending with a non-sequential address be recorded on the update block by be able to be converted by Kao tikhan. 카오틱 갱신 블록의 최대수가 존재하는 경우, 변환이 진행되게 하기 이전에, 가장 이전에 억세스된 카오틱 갱신 블록을 폐쇄하고, 따라서, 카오틱 블록의 최대수가 초과되는 것을 방지할 필요가 있다. When Cao present maximum number of ticks update block, it is necessary to prevent the conversion is closed earlier, the old Chaotic update block access to the to be conducted and, therefore, greater than the maximum number of chaotic blocks. 가장 이전에 억세스된 카오틱 갱신 블록의 식별은 단계 420에서 설명된 일반적 경우와 동일하지만, 단지 카오틱 갱신 블록에만 제한된다. The identification of a previously accessed chaotic update block is the same as that generally described in step 420, however, is limited only to chaotic update block. 이 시기의 카오틱 갱신 블록 폐쇄는 단계 550에서 설명된 바와 같은 병합에 의해 달성된다. Chaotic update block closing of the period is accomplished by the combined as described in step 550.

시스템 규제를 받는 새로운 갱신 블록의 할당 The new update block allocated in the receiving control system

단계 410 : 갱신 블록으로서의 삭제 메타블록의 할당 프로세스는 사전결정된 시스템 제한이 초과하였는지 여부에 대한 판정과 함께 시작한다. Step 410: Assign a process of deletion block as an update metablock begins with the determination as to whether or not this exceeds a predetermined limit the system. 한정된 자원으로 인해, 메모리 관리 시스템은 통상적으로, 사전결정된 최대수의 갱신 블록(C A )이 동시에 존재할 수 있게 하는 것이 일반적이다. It is common to make because of the limited resources, the memory management system typically, a predetermined maximum number of update blocks (C A) may be present at the same time. 이 한계는 순차 갱신 블록과 카오틱 갱신 블록의 집단이며, 설계 파라미터이다. This limit is a group of sequential update blocks and chaotic update blocks, is a design parameter. 양호한 실시예에서, 이 한계는 예로서, 최대 8 갱신 블록이다. In a preferred embodiment, the limit is, a maximum of 8 update blocks as an example. 또한, 보다 높은 시스템 자원에 대한 수요로 인해, 동시에 개방될 수 있는 카오틱 갱신 블록의 최대수(예로서, 4)에 대한 대응하는 사전결정된 제한도 존재할 수 있다. In addition, it can also be more due to the need for high system resources, the maximum number of chaotic update blocks that can be open at the same time (e.g., 4) corresponding to pre-determined limits for.

따라서, C A 갱신 블록이 이미 할당되어 있을 때, 이때, 다음 할당 요청은 단지 기존의 할당된 것 중 하나를 폐쇄한 이후에만 충족될 수 있다. Thus, when C A update blocks have already been allocated, at this time, the next allocation request could only be satisfied after closing only one of that the existing assignment. 프로세스는 단계 420으로 진행한다. The process proceeds to step 420. 개방 갱신 블록이 수가 C A 보다 작을 때, 프로세스는 직접적으로 단계 430으로 진행한다. When the number of open update blocks is less than C A, the process directly proceeds to the step 430.

단계 420 : 갱신 블록의 최대수(C A )가 초과되는 경우에, 가장 이전에 억세스된 갱신 블록이 폐쇄되고, 조각 모음이 수행된다. Step 420: In the case where this is greater than the maximum number (C A) of the update block, the previous access to the updated block is closed, it is performed defragmentation. 가장 이전에 억세스된 갱신 블록은 가장 이전에 억세스된 논리 블록과 연계된 갱신 블록으로서 나타내어진다. The previous access to the update block is expressed as an update block associated with the logical block before the access to. 가장 이전에 억세스된 블록을 결정하기 위해, 억세스는 기록 및 선택적으로, 논리 섹터의 판독을 포함한다. To determine the best previous block access, the access comprises a write and optionally, the reading of the logical sector. 개방 갱신 블록의 리스트가 억세스를 위해 유지되며, 초기화시, 어떠한 억세스 순서도 가정되지 않는다. And a list of open update blocks maintained for the access, not supposed to flow charts, some access time of initialization. 갱신 블록의 폐쇄는 갱신 블록이 순차적일 때, 단계 360 및 단계 530과 연계하여 설명한 유사한 프로세스를 따르며, 갱신 블록이 카오틱일 때, 단계 540과 연계하여 설명한 유사한 프로세스를 따른다. Closure of an update block will follow the similar process described in connection with when the sequential update block, step 360 and step 530, following a similar process described in connection with the step 540 when the update block Cao tikil. 폐쇄는 단계 430에서, 새로운 갱신 블록의 할당을 위한 공간을 형성한다. It is closed in step 430 to form a space for the allocation of a new update block.

단계 430 : 할당 요청은 주어진 논리 그룹(LG x )에 전용화된 갱신 블록으로서 새로운 메타블록의 할당으로 충족된다. Step 430: the allocation request is fulfilled with the allocation of a new metablock as an update block dedicated screen for a given logical group (LG x). 프로세스는 그후 단계 510으로 진행한다. The process proceeds to step 510 thereafter.

갱신 블록상으로의 갱신 데이터의 레코드 Record in the update data onto the update block

단계 510 : 요청된 갱신 섹터가 갱신 블록의 차순위 가용 물리적 위치상에 레코드된다. Step 510: The requested update sector is record on the next ranked available physical location of the update block. 그후, 프로세스는 갱신 블록이 정리를 위해 준비가 되어있는지를 결정하기 위해 단계 520으로 진행한다. Then, the process proceeds to step 520 to determine if the update block is ready for the cleaning.

갱신 블록 정리 Update block organized

단계 520 : 갱신 블록이 부가적인 갱신을 수용하기 위한 공간을 여전히 가지고 있는 경우, 단계 570으로 진해한다. Step 520: If the update block still has room for accepting additional updates, and Jinhae to step 570. 그렇지 않으면, 갱신 블록을 정리하기 위해 단계 522로 진행한다. Otherwise, the flow advances to step 522 to clean up the update block. 현재 요청된 기록이 블록이 갖는 공간 보다 많은 논리 섹터를 기록하기를 시도할 때, 갱신 블록을 충전하는 두 가지 가능한 구현이 존재한다. When the current recording request attempting to record the number of logical sectors than the space for the blocks, there are two possible implementations of filling the update block. 제1 구현에서, 기록 요청이 두 개의 부분으로 분할되고, 첫 번째 부분은 블록의 최종 물리 섹터에 기록한다. Claim is divided into two parts in the first embodiment, the write request, the first portion is recorded in the last physical sector of the block. 블록은 그후, 폐쇄되고, 기록의 두 번째 부분은 새로운 요청된 기록으로서 처리된다. Block is then, is closed, and the second part of the record is treated as a new requested record. 다른 구현에서, 요청된 기록이 블록이 나머지 섹터가 페이딩되고, 그후 폐쇄되는 동안 보류된다. In another implementation, if the requested record is block, the remaining sectors are fading, is held while being subsequently closed. 요청된 기록은 새로운 요청된 기록으로서 처리된다. The requested record is treated as a new requested record.

단계 522 : 갱신 블록이 순차적인 경우, 순차적 폐쇄를 위해 단계 530으로 진행한다. Step 522: If the process proceeds to update block is sequential, step 530 for sequential closure. 갱신 블록이 카오틱인 겨우, 카오틱 폐쇄를 위해 단계 540으로 진행한다. The update block is chaotic only, and the process proceeds to step 540 for chaotic closure.

순차 갱신 블록 정리 Sequential update block organized

단계 530 : 갱신 블록이 순차적이며, 완전히 채워져 있기 때문에, 그 내부에 저장된 논리 그룹은 완전하다. Step 530: It is this sequential update block, it is because the fully filled, the logical group stored therein is complete. 메타블록은 완전하며, 원래의 것을 교체한다. Meta block completely and replace it in the original. 이때, 원본 블록은 완전히 폐기되고 삭제될 수 있다. At this time, the original block may be completely discarded and removed. 프로세스는 그후 단계 570으로 진행하고, 여기서, 주어진 논리적 그룹을 위한 갱신 스레드가 종료한다. The process then proceeds to step 570, where the thread end has been updated for a given logical group.

카오틱 갱신 블록 정리 Chaotic update block organized

단계 540 : 갱신 블록이 비순차적으로 채워지며, 일부 논리 섹터의 다수회 갱신을 포함할 수 있기 때문에, 그 내부의 유효 데이터를 구제하기 위해 조각 모음이 수행된다. Step 540: The update block becomes filled with non-sequential, it is possible to include a number of update times, some logical sectors, defragmentation is performed to salvage the valid data therein. 카오틱 갱신 블록은 압축되거나 병합된다. Chaotic update block is compressed or merged. 어느 프로세스가 수행될 것인지는 단계 542에서 결정된다. Whether be any process is performed is determined in step 542.

단계 542 : 압축 또는 병합의 수행은 갱신 블록의 퇴화에 의존한다. Step 542: perform the compression or merged depends on the degradation of the update block. 논리 섹터가 다수회 갱신되는 경우, 그 논리 어드레스는 매우 퇴화한다. If a logical sector is updated multiple times, its logical address is highly degenerate. 갱신 블록상에 레코딩된 동일 논리 섹터의 다수의 버전이 존재하며, 단지 최종 레코딩된 버전이 그 논리 섹터를 위해 유효한 것이다. And a plurality of versions of the same logical sector recorded on the update block is present, only the final recorded version is valid for that logical sector. 다수의 버전을 갖는 논리 섹터를 포함하는 갱신 블록에서, 별개의 논리 섹터의 수는 논리 그룹의 수 보다 매우 작다. In an update block containing logical sectors with multiple versions, the number of distinct logical sectors is very small than the number of logical groups.

양호한 실시예에서, 갱신 블록내의 별개의 논리 섹터의 수가 그 전형적인 값이 논리 그룹의 크기의 절반인 사전결정된 설계 파라미터(C D )를 초과할 때, 정리 프로세스가 단계 550에서 병합을 수행하며, 그 이외의 경우에, 프로세스는 단계 560에서의 압축으로 진행한다. In a preferred embodiment, updating the pre-determined discrete number of logical sectors half of that of a typical value is a logical group size in a block design parameters to exceed (C D), and clean-up process is carried out the merging in step 550, the in the case other than the process proceeds to the compression in step 560.

단계 550 : 카오틱 갱신 블록이 병합되는 경우, 원래의 블록 및 갱신 블록이 병합된 데이터를 포함하는 새로운 표준 메타블록으로 교체된다. Step 550: When a chaotic update block merge is replaced by a new standard metablock containing the original block and the update block of the merged data. 병합 이후, 갱신 스레드는 단계 570에서 종료한다. After the merge, the update thread is terminated in step 570.

단계 560 : 카오틱 갱신 블록이 압축되는 경우, 이는 압축된 데이터를 수반하는 새로운 갱신 블록에 의해 대체된다. Step 560: When a chaotic update block compression, which is replaced by a new update block carrying the compressed data. 압축 이후, 압축된 갱신 블록의 처리는 단계 570에서 종료한다. After compression, the process of the compressed update block will end at step 570. 대안적으로, 압축은 갱신 블록이 다시 기록될 때까지 지연되고, 따라서, 갱신이 개입하지 않고, 압축에 병합이 이어지는 가능성을 제거할 수 있다. Alternatively, compression may be delayed until the update block is written back, therefore, without updating the intervention, removing the possibility of a merge, leading to compression. 새로운 갱신 블록은 그후, LG x 에서 갱신을 위한 다음 요청이 단계 502에서 나타날 때, 주어진 논리 블록의 추가 갱신에 사용된다. When a new update block is the next request for update in thereafter, LG x appears in the step 502, is used for further updating of the given logical block.

단계 570 : 정리 프로세스가 완전한 갱신 블록을 생성할 때, 이는 주어진 논리 그룹을 위한 새로운 표준이 된다. Step 570: Summary When a process creates a complete update block, which is a new standard for the given logical group. 논리 그룹을 위한 갱신 스레드는 종결된다. Update thread for the logical group is terminated. 정리 프로세스가 기존의 것을 교체하는 새로운 갱신 블록을 생성할 때, 새로운 갱신 블록은 주어진 논리 그룹을 위해 요청된 다음 갱신을 레코드하기 위해 사용된다. When the clean-up process to create a new update block replacing an existing one, the new update block is used to record the next update requested for the given logical group. 갱신 블록이 정리되지 않을 때, 처리는 단계 310에서 LG x 에서의 갱신을 위한 다음 요청이 나타날 때 이어진다. When the update block is cleaned up, the process is followed when the next request for update in LG x appears in step 310.

상술된 프로세스로부터 알 수 있는 바와 같이, 카오틱 갱신 블록이 폐쇄될 때, 그 위에 레코딩된 개신 데이터가 추가로 처리된다. As can be seen from the process described above, when a chaotic update block closed, a Reformed data recording thereon are processed further. 특히, 그 유효 데이터는 새로운 표준 순차 블록을 형성하기 위해, 다른 카오틱 블록으로의 압축 프로세스 또는 그 연계된 원래 블록과의 병합 프로세스 중 어느 하나에 의해 조각 모음된다. In particular, the valid data to form a new standard sequential block, the bar piece by any of the merge process and other processes Cao compression of the tick block or its associated original block.

도 11a는 도 10에 도시된 카오틱 갱신 블록을 폐쇄하는 병합 프로세스를 보다 상세히 예시하는 흐름도이다. Figure 11a is a flow diagram illustrating in more detail the merge process for closing a chaotic update block shown in FIG. 카오틱 갱신 블록 병합은 갱신 블록이 정리될 때, 예로서, 갱신 블록이 기록되어 있는 그 최종 물리 섹터 위치로 채워져 있을 때, 수 행되는 두 개의 가능한 프로세스 중 하나이다. One of the chaotic update block are merged when the update block clean, e.g., when filled with its last physical sector location of the update block is written, the number of rows of two possible processes. 블록내에 기록된 별개의 논리 섹터의 수가 사전결정된 설계 파라미터(C D )를 초과할 때, 병합이 선택된다. When the number of distinct logical sectors written in the block exceeds a predetermined design parameter (C D), the merge is selected. 도 10에 도시된 병합 프로세스 단계 550은 하기의 서브단계를 포함한다. The merge process step 550 illustrated in Figure 10 comprises the sub-steps.

단계 551 : 카오틱 갱신 블록이 폐쇄될 때, 그를 교체하는 새로운 메타블록이 할당된다. Step 551: When a chaotic update block closure, is assigned a new metablock replacing him.

단계 552 : 모든 폐기 섹터를 무시하고, 카오틱 갱신 블록 및 그 연계된 원래 블록 중의 각 논리 섹터의 최신 버전을 수집한다. Step 552: Ignore all waste sector, and collect the latest version of each logical sector in the chaotic update block and its associated original block.

단계 554 : 완전한 블록, 즉, 순차적 순서로 레코딩된 논리 그룹의 논리 섹터 모두를 갖는 블록을 형성하기 위해, 논리 순차 순서로 새로운 메타블록상에 수집된 유효 섹터를 레코딩한다. Step 554: the complete block, i.e., recording the collected valid sectors onto the new metablock in the logic sequence to form a block having all logical sectors of a logical group recorded in sequential order.

단계 556 : 원래 블록을 새로운 완전한 블록으로 교체한다. Step 556: Replace the original block to the new block complete.

단계 558 : 정리된 갱신 블록과 원래 블록을 삭제한다. Step 558: Delete the update block and the original block clean.

도 11b는 도 10에 도시된 카오틱 갱신 블록을 폐쇄하기 위한 압축 프로세스를 보다 상세히 예시하는 흐름도이다. Figure 11b is a flow diagram illustrating in more detail the compaction process for closing a chaotic update block shown in FIG. 압축은 블록내에 기록된 별개의 논리 섹터의 수가 사전결정된 설계 파라미터(C D ) 미만일 때 선택된다. When compression is chosen design parameters the number of distinct logical sectors written in the block determined pre (C D) is less than. 도 10에 도시된 압축 프로세스 단계 560은 하기의 서브 단계를 포함한다. The compression process step 560 illustrated in Figure 10 comprises the sub-steps.

단계 561 : 카오틱 갱신 블록이 압축될 때, 그를 교체하는 새로운 메타블록이 할당된다. Step 561: Cao when the tick update block compression, is assigned a new metablock replacing him.

단계 562 : 압축될 기존 카오틱 갱신 블록 중 각 논리 섹터의 최신 버전을 수집한다. Step 562: Gather the latest version of each logical sector among the existing chaotic update block to be compressed.

단계 564 : 압축된 섹터를 가지는 새로운 갱신 블록을 형성하도록 새로운 갱신 블록상에 수집된 섹터를 기록한다. Step 564: Record the gathered onto the new update block to form a new update block having a compression sector sector.

단계 566 : 기존 갱신 블록을 압축된 섹터를 갖는 새로운 갱신 블록을 형성하기 위해 새로운 갱신 블록상에 수집된 섹터를 레코딩한다. Step 566: The new updated recording the sector collected on the block to form a new update block having a compression sector existing update block.

단계 568 : 정리된 갱신 블록을 삭제한다. Step 568: Delete the update block organized.

논리 및 메타블록 상태 Logical and status metablock

도 12a는 논리 그룹의 모든 가능한 상태와, 다양한 동작하에서 그들 사이의 가능한 전이를 예시한다. Figure 12a illustrates the possible transitions between them under all possible states of a Logical Group, various operations.

도 12b는 논리 그룹의 가능한 상태를 나열하는 테이블이다. Figure 12b is a table listing the possible states of a Logical Group. 논리 그룹 상태는 하기와 같이 규정된다. Logical Group states are defined as follows.

1. 완전 : 논리 그룹내의 모든 논리 섹터가 가능하게는 페이지 태그 랩 어라운드(wrap around)를 사용하여, 단일 메타블록내에 논리 순차 순서로 기록되어 있다. 1. Complete: using any logical sector is possibly a page tag wrap around (wrap around) within the logical group are recorded in logical sequential order in a single metablock.

2. 미기록 : 논리 그룹내의 어떠한 논리 섹터도 기록되어 있지 않다. 2. unrecorded: is not recorded any logical sectors in a logical group. 논리 그룹은 그룹 어드레스 테이블에 미기록으로 표시되며, 어떠한 할당된 메타블록도 갖지 않는다. Logic group is represented by the non-recorded to a group address table and do not have any assigned to the metablock. 이 그룹내의 모든 섹터를 위한 호스트 판독에 응답하여 규정된 데이터 패턴이 반환된다. The data pattern specified in response to a host read for every sector within this group are returned.

3. 순차 갱신 : 논리 그룹내의 일부 섹터가 가능하게는 페이지 태그를 사용하여 메타블록내에 논리 순차 순서로 기록되어 있으며, 그래서, 이들은 그룹의 임 의의 이전 완전 상태로부터 대응 논리 섹터를 대체한다. 3. Sequential Update: Some sectors within the Logical Group possibly using page tag, and is written to the logical sequence in the metablock, and so, they replace the corresponding logical sectors from arbitrary previous full state of the group.

4. 카오틱 갱신 : 논리 그룹내의 일부 섹터가 가능하게는 페이지 태그를 사용하여, 메타블록내에서 논리적으로 비순차적 순서로 기록되어 있으며, 그래서, 이들은 그룹의 임의의 이전 완전 상태로부터 대응 논리 섹터를 대체한다. 4. Chaotic Update: Some sectors using the possibly tag page in the logical group within the metablock has been recorded in a non-sequential order in a logical, so, all of which are the corresponding logical sectors from any previous state of the complete group of replaced. 그룹내의 섹터는 일회 이상 기록될 수 있으며, 최신 버전이 모든 이전 버전을 대체한다. Sectors of the group can be recorded more than once, the latest version replaces all previous versions.

도 13a는 메타블록의 모든 가능한 상태와, 다양한 동작하에서 이들 사이의 가능한 전이를 예시한다. Figure 13a is and all possible states of a metablock, illustrates the possible transitions between them under various operations.

도 13b는 메타블록의 가능한 상태를 나열하는 테이블이다. Figure 13b is a table listing the possible states of a metablock. 메타블록 상태는 하기와 같이 규정된다. Metablock states are defined as follows.

1. 삭제됨 : 메타블록내의 모든 섹터가 삭제됨 1. Deleted: All sectors within the metablock deleted

2. 순차 갱신 : 메타블록은 가능하게는 페이지 태그를 사용하여 논리적으로 순차적 순서로 섹터로 부분적으로 기록된다. 2. Sequential Update: metablock possibly being partially recorded in the sector as a logical sequential order using page tag. 모든 섹터는 동일 논리 그룹에 속한다. All sectors belong to the same logical group.

3. 카오틱 갱신 : 메타블록이 부분적으로 또는 완전히 논리 비순차적 순서로 섹터로 기록된다. 3. Chaotic Update: The metablock is partially or fully written with sectors in a logical non-sequential order. 임의의 섹터는 1회 이상 기록될 수 있다. Any sector can be written more than once. 모든 섹터는 동일 논리 그룹에 속한다. All sectors belong to the same logical group.

4. 완전 : 메타블록이 가능하게는 페이지 태그를 사용하여 논리 순차 순서로 완전히 기록된다. 4. completely: it is possible metablock is fully written in the logical sequence with page tag.

5. 원본 : 메타블록이 이전에 완전하였지만, 적어도 하나의 섹터가 호스트 데이터 갱신에 의해 폐기되었다. 5. Original: The metablock but full previously, the at least one sector has been disposed of by a host data update.

도 14a 내지 도 14j는 논리 그룹의 상태 및 또한 물리 메타블록에 대한 다양한 동작의 영향을 도시하는 상태도이다. Figure 14a to Figure 14j is a state diagram showing the effects of various operating conditions and also on the physical metablock of the logical group.

도 14a는 제1 기록 동작을 위한 논리 그룹과 메타블록 전이에 대응하는 상태도를 도시한다. Figure 14a illustrates a state diagram corresponding to the logical group and the metablock transitions for a first write operation. 호스트는 이전에 미기록인 논리 그룹의 하나 이상의 섹터를 새롭게 할당된 삭제된 메타블록에 논리 순차 순서로 기록한다. The host writes one or more sectors of the unrecorded logical group previously logical sequence in the newly allocated metablock removed. 논리 그룹 및 메타블록은 순차 갱신 상태로 진행한다. Logical group and the metablock proceeds sequentially updated state.

도 14b는 제1 완전 동작을 위한 논리 그룹과 메타블록 전이에 대응하는 상태도를 도시한다. Figure 14b illustrates a state diagram corresponding to the logical group and the metablock transitions for a first full operation. 모든 섹터가 호스트에 의해 순차 기록될 때, 이전의 미기록 순차 갱신 논리 그룹은 완전 상태가 된다. When all sectors are to be sequentially written by the host, non-recorded sequentially update a logical group of the former is the full state. 전이는 또한 규정된 데이터 패턴으로 잔여 미기록 섹터를 채움으로써 카드가 그룹을 충전하는 경우에도 발생한다. Transition is also by filling the remaining unwritten sectors with a specified data pattern is generated even if the card is charged the group. 메타블록은 완전해진다. It becomes metablock is full.

도 14c는 제1 카오틱 동작을 위한 논리 그룹 및 메타블록 전이에 대응하는 상태도를 도시한다. Figure 14c depicts a state diagram corresponding to the logical group and the metablock transitions for a first chaotic operation. 이전의 미기록 순차 갱신 논리 그룹은 적어도 하나의 섹터가 호스트에 의해 비순차적으로 기록될 때, 카오틱이 된다. Unwritten Sequential Update Logical Group becomes earlier, Chaotic when at least one sector is written non-sequentially by the host.

도 14d는 제1 압축 동작을 위한 논리 그룹 및 메타블록 전이에 대응하는 상태도를 도시한다. Figure 14d depicts a state diagram corresponding to the logical group and the metablock transitions for a first compression operation. 이전의 미기록 카오틱 갱신 논리 그룹내의 모든 유효 섹터는 추후 삭제되는 구 블록으로부터 새로운 카오틱 메타블록으로 복사된다. All valid sectors within a previously unwritten Chaotic Update Logical Group are copied in a new Chaotic metablock from the old block to be removed later.

도 14e는 제1 병합 동작을 위한 논리 그룹과 메타블록 전이에 대응하는 상태도를 도시한다. Figure 14e depicts a state diagram corresponding to the logical group and the metablock transitions for a first merge operation. 이전의 미기록 카오틱 갱신 논리 그룹내의 모든 유효 섹터는 논리 순차 순서로 새롭게 할당된 삭제 블록을 충전하도록 구 카오틱 블록으로부터 이동 된다. All previously unwritten Chaotic Update Logical Group in the valid sectors are moved from the old Chaotic block to fill a newly allocated to the logical erase block sequence. 호스트에 의해 기록되지 않은 섹터는 규정된 데이터 패턴으로 채워진다. Sectors unwritten by the host are filled with a defined data pattern. 구 카오틱 블록은 그후 삭제된다. Old chaotic block is then deleted.

도 14f는 순차 기록 동작을 위한 논리 그룹 및 메타블록 전이에 대응하는 상태도이다. Figure 14f is a state diagram corresponding to the logical group and the metablock transitions for a sequential write operation. 호스트는 논리적 순차 순서로 완전 논리 그룹의 하나 이상의 섹터를 새롭게 할당된 삭제된 메타블록에 기록한다. Host is written to the logical sequence of the deleted meta-block newly allocated one or more sectors of a complete logical group as. 논리 그룹 및 메타블록은 순차 갱신 상태로 진행한다. Logical group and the metablock proceeds sequentially updated state. 이전의 완전 메타블록은 원본 메타블록이 된다. Previous meta completely block is an original metablock.

도 14g는 순차 충전 동작을 위한 논리 그룹 및 메타블록 전이에 대응하는 상태도를 도시한다. Figure 14g shows a state diagram corresponding to the logical group and the metablock transitions for a sequential fill operation. 호스트에 의해 그 모든 섹터가 순차 기록될 때, 순차 갱신 논리 그룹은 완전해진다. When all its sectors are written sequentially by the host, sequentially update a logical group becomes full. 이는 또한, 이를 완전하게 하기 위해, 원본 블록으로부터의 유효 섹터로 순차 갱신 논리 그룹이 충전될 때, 조각 모음 동안 이루어질 수도 있으며, 그후, 원본 블록은 삭제된다. This also, in order to complete it, when the sequential update a logical group filled with valid sectors from the original block, and may be made for collection of pieces, and thereafter, the original block is deleted.

도 14h는 비순차 기록 동작을 위한 논리 그룹 및 메타블록 전이에 대응하는 상태도이다. Figure 14h is a state diagram corresponding to the logical group and the metablock transitions for a non-sequential write operation. 순차 갱신 논리 그룹은 호스트에 의해 적어도 하나의 섹터가 비순차적으로 기록될 때 카오틱이 된다. Sequential Update Logical Group becomes Chaotic when at least one sector is written non-sequentially by the host. 비순차 섹터 기록은 갱신 블록 또는 대응 원본 블록의 유효 섹터가 폐기되게 할 수 있다. Non-sequential sector writes may be disposed of the effective sector of the update block or the corresponding Original block.

도 14i는 압축 동작을 위한 논리 그룹과 메타블록 전이에 대응하는 상태도이다. Figure 14i is a state diagram corresponding to the logical group and the metablock transitions for a compression operation. 카오틱 갱신 논리 그룹내의 모든 유효 섹터는 추후 삭제되는 구 블록으로부터 새로운 카오틱 메타블록으로 복사된다. All valid sectors within a Chaotic Update Logical Group are copied to a new Chaotic metablock from the old block to be removed later. 원본 블록은 영향을 받지 않는다. Source blocks are not affected.

도 14j는 병합 동작을 위한 논리 그룹과 메타블록 전이에 대응하는 상태도이다. Figure 14j is a state diagram corresponding to the logical group and the metablock transitions for a merge operation. 카오틱 갱신 논리 그룹내의 모든 유효 섹터는 논리 순차 순서로 새롭게 할당된 삭제 블록을 채우도록 구 카오틱 블록 및 원본 블록으로부터 복사된다. Cao all valid sectors in a logical group of ticks update is copied from the old chaotic block and the Original block to fill a newly allocated to the logical block has been deleted sequence. 구 카오틱 블록 및 원본 블록은 그후 삭제된다. Old chaotic block and the original block is then removed.

갱신 블록 추적 및 관리 Update Block Tracking and Management

도 15는 할당을 위해 삭제 블록과 개방 및 폐쇄된 갱신 블록의 추적을 유지하기 위한 할당 블록 리스트(ABL)의 구조의 양호한 실시예를 예시한다. Figure 15 illustrates a preferred embodiment of the structure of the list (ABL) allocation block to maintain the erase block and open and close tracking of the updated blocks for allocation. 할당 블록 리스트(ABL)(610)는 삭제 블록, 할당된 갱신 블록, 연계된 블록 및 제어 구조의 할당 관리를 가능하게 하고, 정확한 논리 대 물리 어드레스 전이를 가능하게 하도록 컨트롤러 램(130)내에 유지된다. The allocation block list (ABL) (610) is held in the erase block, the update block, enabling the allocation management of the associated blocks and control structures, and accurate logical-to-controller RAM to enable a physical address transition 130 is assigned . 양호한 실시예에서, ABL은 삭제 블록의 리스트, 개방 갱신 블록 리스트(614) 및 폐쇄 갱신 블록 리스트(616)를 포함한다. In a preferred embodiment, the ABL includes a list of erase blocks, an open update block list 614 and the closed update block list 616.

개방 갱신 블록 리스트(614)는 개방 갱신 블록의 속성을 갖는 ABL내의 블록 엔트리의 세트이다. Open update block list 614 is the set of block entries in the ABL with the attributes of Open Update Block. 개방 갱신 블록 리스트는 현재 개방된 각 데이터 갱신 블록을 위해 하나의 엔트리를 갖는다. Open update block list has one entry for each data update block currently open. 각 엔트리는 하기의 정보를 보유한다. Each entry holds information to. LG는 현재 갱신 메타블록이 속하는 논리 그룹 어드레스이다. LG is the logical group address the current update metablock to which it belongs. 순차/카오틱은 갱신 블록이 순차적 또는 카오틱 갱신 데이터 중 어느 쪽으로 채워지는지를 나타내는 상태이다. Sequential / Chaotic is a status indicating whether the update block fills up any of the sequential or chaotic update data. MB는 갱신 블록의 메타블록 어드레스이다. MB is the metablock address of the update block. 페이지 태그는 갱신 블록의 제1 물리 위치에 레코딩된 시작 논리 섹터이다. Page tag is the starting logical sector recorded in a first physical location of the update block. 기록된 섹터의 수는 갱신 블록상에 현재 기록된 섹터의 수를 나타낸다. The number of recording sectors is the number of the currently recorded on the update block sector. MB 0 은 연계된 원래 블록의 메타블록 어드레스이다. MB 0 is the metablock address of the associated original block. 페이지 태그 0 은 연계된 원본 블록의 페이지 태그이다. 0 page page tag is the tag of the associated original block.

폐쇄된 갱신 블록 리스트(616)는 할당 블록 리스트(ABL)의 서브세트이다. The closed update block list 616 is a subset of the list (ABL) allocation block. 이 는 폐쇄된 갱신 블록의 속성을 갖는 ABL내의 블록 엔트리의 세트이다. This is the set of block entries in the ABL with the attributes of Closed Update Block. 폐쇄된 갱신 블록 리스트는 폐쇄되었지만, 그러나, 그 엔트리가 논리 대 메인 물리 디렉토리에서 갱신되지 않은 각 데이터 갱신 블록을 위한 하나의 엔트리를 갖는다. The closed update block list has been closed, however, that entry will have a single entry for each data update block that has been updated in the logical-to-physical main directory. 각 엔트리는 하기의 정보를 유지한다. Each entry holds information below. LG는 현재 갱신 블록이 속하는 논리 그룹 어드레스이다. LG is the logical group address the current update block belongs. MB는 갱신 블록의 메타블록 어드레스이다. MB is the metablock address of the update block. 페이지 태그는 갱신 블록의 제1 물리 위치에 레코딩된 시작 논리 섹터이다. Page tag is the starting logical sector recorded in a first physical location of the update block. MB 0 은 연계된 원본 블록의 메타블록 어드레스이다. MB 0 is the metablock address of the associated original block.

카오틱 블록 인덱싱 Chaotic block indexing

순차적인 갱신 블록은 논리적인 순서로 저장된 데이터를 가져서, 블록 중에서 임의의 논리 섹터가 쉽게 위치될 수 있다. Sequential update block is gajyeoseo data stored in a logical order, and any logical sector among the block can be easily located. 카오틱 갱신 블록은 순서없이 저장된 논리 섹터를 갖고, 논리 섹터의 다중 갱신 세대를 또한 저장할 수 있다. Chaotic update block has the logical sector stored in random order, the multiple update generations of a logical sector may also store. 부가의 정보는 각각의 유효 논리 섹터가 카오틱 갱신 블록에 위치되는 트랙을 유지하도록 보유되어야 한다. Addition of information has to be held by each valid logical sector to maintain the track which is located at Chaotic update block.

양호한 실시예에서, 카오틱 블록 인덱싱 데이터 구조는 카오틱 블록의 모든 유효 섹터의 추적과 빠른 억세스를 허용한다. In the preferred embodiment, chaotic block indexing data structures allow tracking and fast access of all valid sectors in the chaotic block. 카오틱 블록 인덱싱은 논리 어드레스 공간의 작은 영역을 독립적으로 취급하고, 시스템 데이터와 사용자 데이터의 핫 영역을 효율적으로 다룬다. Chaotic block indexing treat a small area of ​​the logical address space independently, and deals with the hot area of ​​the system data and user data efficiently. 인덱싱 데이터 구조는 기본적으로 빈번하지 않은 갱신 요구를 갖는 플래시 메모리에 유지되는 정보를 인덱싱하는 것을 허용하여 성능에 강한 영향을 받지 않는다. Indexed data structure to allow the indexing information to be maintained in flash memory with infrequent update request basically does not receive a strong influence on the performance. 한편, 카오틱 블록의 최근에 기록된 섹터들의 리스트는 제 어기 램의 카오틱 섹터 리스트에 보유된다. On the other hand, the list of recently written sectors in chaotic blocks are held in a chaotic sector list in controller RAM. 또한, 플래시 메모리로부터의 인덱스 정보의 캐시는 어드레스 변환을 위한 플래시 섹터 억세스의 수를 최소화하도록 제어기 램에 보유된다. Further, the index information from flash memory is held in controller RAM cache is to minimize the number of flash sector accesses for address translation. 각각의 카오틱 블록을 위한 인덱스는 플래시 메모리의 카오틱 블록 인덱스(CBI)에 저장된다. Index for each chaotic block are stored in chaotic block index (CBI) of the flash memory.

도 16a는 카오틱 블록 인덱스(CBI) 섹터의 데이터 필드를 도시한다. Figure 16a shows a data field of the chaotic block index (CBI) sector. 카오틱 블록 인덱스 섹터(CBI 섹터)는 카오틱 갱신 블록에 맵핑된 논리 그룹의 각각의 섹터를 위한 인덱스를 포함하고, 관련된 원본 블록 또는 카오틱 갱신 블록 내의 논리 그룹의 각각의 섹터의 위치를 한정한다. Chaotic Block Index Sector (CBI sector) Cao and ticks including an index for each sector in a logical group mapped to the update block, defining the location of the logical group of each sector in the associated original block or chaotic update block . CBI 섹터는 카오틱 블록 내의 유효 섹터의 트랙을 유지하기 위한 카오틱 블록 인덱스 필드, 카오틱 블록을 위한 어드레스 매개변수의 트랙을 유지하기 위한 카오틱 블록 정보 필드 및 CBI 섹터를 저장하는 메타블록(CBI 블록) 내의 유효 CBI 섹터의 트랙을 유지하기 위한 섹터 인덱스 필드를 포함한다. CBI sector Kao chaotic block info field and CBI metablock storing the sectors for effective to keep track of address parameters for the chaotic block index field, Chaotic block to keep track of the sectors in the tick block (CBI and a sector index field for keeping track of the valid CBI sector in the block).

도 16b는 전용 메타블록에 레코드되는 카오틱 블록 인덱스(CBI) 섹터의 예를 도시한다. Figure 16b shows an example of the chaotic block index (CBI) sectors being recorded in a dedicated metablock. 전용 메타블록은 CBI 블록(620)으로 지칭될 것이다. Dedicated metablock will be referred to as a CBI block 620. CBI 섹터가 갱신되면, CBI 블록(620)의 다음의 활용 가능한 물리적인 섹터 위치에 기록된다. When the CBI sector is updated, it is written to the next available physical sector position of the utilization of the CBI block 620. 따라서 CBI 섹터의 다중 복사는 유효한 최종 기록 복사만을 갖는 CBI 블록에 존재할 것이다. Thus multiple copies of a CBI sector is present in the CBI block having only the last recorded valid copy. 예를 들어, 논리 그룹(LG 1 )을 위한 CBI 섹터는 유효한 최종 버전으로 세 번 갱신된다. For example, CBI sector for the logical group (LG 1) is updated three times as effective final version. CBI 블록의 각각의 유효 섹터의 위치는 블록의 최종 기록된 CBI 섹터의 인덱스의 세트에 의해 식별된다. Location of each valid sector in the CBI block is identified by a set of the latest index of the written CBI sector in the block. 이러한 예에서, 블록의 최종 기록된 CBI 섹터는 LG 136 을 위한 CBI 섹터이고 인덱스 세트는 모든 이전의 것을 대리하는 유효한 것이다. In this example, CBI sector was last written CBI sector in the block is a set of indexes for the LG 136 is a valid surrogate for all previous. CBI 블록이 최종적으로 CBI 섹터들로 채워질 때, 블록은 새로운 블록 위치로 모든 유효 섹터를 재기록함으로써 제어 기록 작동 동안 압축된다. CBI when the block is finally filled with CBI sectors, the block is compressed during recording operation control by rewriting all valid sectors to a new block location. 가득찬 블록은 소거된다. Full block is erased.

CBI 섹터 내의 카오틱 블록 인덱스 필드는 카오틱 갱신 블록으로 맵핑된 논리 그룹 또는 서브 그룹 내의 각각의 논리 섹터를 위한 인덱스 엔트리를 포함한다. Chaotic block index field within a CBI sector contains an index entry for each logical sector within the chaotic update a logical group or sub-group mapped to a block. 각각의 인덱스 엔트리는 대응하는 논리 섹터를 위한 유효 데이터가 위치되는 카오틱 갱신 블록 내의 오프셋을 의미한다. Each index entry indicates the offset in which valid data for the logical sector corresponding to the location chaotic update block. 역 인덱스 값은 카오틱 갱신 블록에 논리 섹터를 위한 유효 데이터가 존재하지 않는 것을 지시하고, 소정의 카오틱 블록 인덱스 필드 엔트리는 제어기 램에 보유된다. Reverse index value Cao indicating that tick does not have valid data for the logical sector exists in the update block, and the predetermined chaotic block index field entries is held in controller RAM.

CBI 섹터 내의 카오틱 블록 정보 필드는 시스템에 존재하는 각각의 카오틱 갱신 블록을 위한 하나의 엔트리를 포함하고, 블록을 위한 어드레스 매개변수 정보를 레코드한다. Chaotic block info field within a CBI sector contains one entry for each chaotic update block that exists in the system, and records the address parameter information for the block. 필드 내의 정보는 CBI 블록의 최종 기록 섹터 내에서만 유효하다. Information in the field is only valid in the last recorded sector in the CBI block. 이러한 정보는 또한 램의 데이터 구조에 존재한다. This information is also present in data structures in RAM.

각각의 카오틱 갱신 블록을 위한 엔트리는 3개의 어드레스 매개변수를 포함한다. Entry for each chaotic update block includes three address parameters. 첫 번째는 카오틱 갱신 블록과 관련된 논리 그룹(또는 논리 그룹 수)의 논리 어드레스이다. The first is the logical address of a logical group associated with a chaotic update block (or logical groups). 두 번째는 카오틱 갱신 블록의 메타블록 어드레스이다. The second is the metablock address of the chaotic update block. 세 번째는 카오틱 갱신 블록에 기록된 최종 섹터의 물리적인 어드레스 오프셋이다. The third is the physical address offset of the last sector written in the chaotic update block. 오프셋 정보는 램의 데이터 구조를 재구성하기 위해 초기화 동안 카오틱 갱신 블록의 주사 시작점을 설정한다. Offset information sets the scanning start point of the chaotic update block during initialization, to rebuild data structures in RAM.

섹터 인덱스 필드는 CBI 블록의 각각의 유효 CBI 블록을 위한 엔트리를 포함한다. The sector index field contains an entry for each valid CBI block of the CBI block. 이는 각각의 허용된 카오틱 갱신 블록에 대해 가장 최근에 기록된 CBI 섹터가 위치되는 CBI 블록 내의 오프셋을 한정한다. This defines the offsets within the CBI block of which the most recently written CBI sector in the position for each of the chaotic update block allows for. 인덱스의 오프셋 역의 값은 허용된 카오틱 갱신 블록이 존재하지 않는다는 것을 지시한다. The value of the offset of the station index indicates that a permitted chaotic update block does not exist.

도 16c는 카오틱 갱신 하에서의 주어진 논리 그룹의 논리 섹터의 데이터에 억세스하는 것을 도시하는 흐름도이다. Figure 16c is a flow chart illustrating the access to the data in the logical sectors of a given logical group under chaotic update. 갱신 프로세스 동안, 갱신 데이터는 카오틱 갱신 블록에 레코드되면서 변경되지 않은 데이터는 논리 그룹과 관련된 원본 메타블록에 유지된다. During the update process, the update data are data that are not changed with the record in the chaotic update block is kept in the original metablock associated with the logical group. 카오틱 갱신 하에서의 논리 그룹의 논리 섹터에 억세스하는 프로세스는 이하와 같다. The process of accessing a logical sector of the logical group under chaotic update is as follows.

단계 650: 주어진 논리 그룹의 주어진 논리 섹터를 위치시킨다. Step 650: Position the given logical sector of a given logical group.

단계 651: CBI 블록 내의 최종 기록된 CBI 섹터를 위치시킨다. Step 651: Position the last recorded a CBI sector in the CBI block.

단계 654: 최종 기록된 CBI 섹터의 카오틱 블록 정보 필드를 참조함으로써 주어진 논리 그룹과 관련된 카오틱 갱신 블록 또는 원본 블록을 위치시킨다. Step 654: By referring to the chaotic block info field of the last written CBI sector the place the chaotic update block or original block associated with the given logical group. 이러한 단계는 단계 662 이전에 언제든지 수행될 수 있다. This step is step 662 may be performed at any time before.

단계 658: 최종 기록된 CBI 섹터가 주어진 논리 그룹으로 지시되면, CBI 섹터가 위치된다. Step 658: When a CBI sector to an end recording instruction given logical group, the CBI sector is located. 단계 662에 선행한다. It is followed by the step 662. 아니면, 단계 660에 선행한다. Or, it is followed by the step 660.

단계 660: 최종 기록된 CBI 섹터의 섹터 인덱스 필드를 참조함으로써 주어진 논리 그룹을 위한 CBI 섹터를 위치시킨다. Step 660: Position the CBI sector for the given logical group by referring to the sector index field of the last written CBI sector a.

단계 662: 위치된 CBI 섹터의 카오틱 블록 인덱스 필드를 참조함으로써 카오 틱 블록 또는 원본 블록 중에서 주어진 논리 섹터를 위치시킨다. Step 662: Position the given logical sector among the chaotic block or the original block by referring to the Chaotic Block Index field of the located CBI sector.

도 16d는 논리 그룹이 서브 그룹으로 구획되는 대체 실시예에 따라 카오틱 갱신 하에서 주어진 논리 그룹의 논리 섹터의 데이터에 대한 억세스를 도시하는 흐름도이다. Figure 16d is a flow chart illustrating the access to the data in the logical sector of a given logical group under chaotic update according to the alternative embodiment in which logical group is partitioned into subgroups. CBI 섹터의 유한 용량은 논리 섹터의 소정의 최대수의 트랙을 유지할 수만 있다. Finite capacity of a CBI sector can only keep track of a predetermined maximum number of logical sectors. 논리 그룹이 단일 CBI 섹터가 취급될 수 있는 것보다 보다 많은 논리 섹터를 가질 때, 논리 그룹은 각각의 서브 그룹에 지정된 CBI 섹터를 갖는 다중 서브 그룹으로 구획된다. When the logical group have a more logical sectors than a single CBI sector can handle, the logical group is partitioned into multiple subgroups with a CBI sector assigned to each subgroup. 일 예에서, 각각의 CBI 섹터는 256개의 섹터로 구성된 논리 그룹을 추적하기 위한 충분한 용량을 갖고, 최대 8개의 카오틱 갱신 블록을 갖는다. In one example, each CBI sector has enough capacity for tracking a logical group consisting of 256 sectors, and has up to 8 chaotic update blocks. 논리 그룹이 256개의 섹터의 크기를 가지면, 개별 CBI 섹터는 논리 그룹 내의 256개의 섹터의 서브 그룹용으로 존재한다. The Logical Group Having a size of 256 sectors, a separate CBI sector exists for the sub-group of 256 sectors in a logical group. CBI 섹터는 논리 그룹내에서 최대 8개의 서브 그룹용으로 존재하고, 최대 2048개의 섹터의 크기까지 논리 그룹용으로 지원한다. CBI sector is provided for a logical group is present for up to 8 sub-groups within a logical group, and to the size of a maximum of 2048 sectors.

양호한 실시예에서, 간접 인덱싱 체계가 인덱스의 용이한 취급을 위해 채용된다. In a preferred embodiment, an indirect indexing scheme is employed for easy handling of the index.

직접 섹터 인덱스는 특정 카오틱 갱신 블록에 대한 모든 가능한 CBI 섹터들이 위치되는 CBI 블록 내의 오프셋을 한정한다. The direct sector index is limited to all possible offsets within the CBI block which are located CBI sector for a specific chaotic update block. 이러한 필드의 정보는 특정 카오틱 갱신 블록에 대한 최종 기록된 CBI 섹터에서만 유효하다. The information in these fields is effective only in the finally written CBI sector for a specific chaotic update block. 인덱스의 오프셋의 역의 값은 카오틱 갱신 블록에 대한 대응 논리 서브 그룹이 존재하지 않거나 갱신 블록이 할당되기 때문에 갱신되지 않기 때문에, CBI 섹터가 존재하지 않는 것을 지시한다. Since the value of the inverse of the offset for the index is not updated because it is not present the corresponding logical subgroups for the chaotic update block update block is allocated, CBI indicates that the sector is not present.

간접 섹터 인덱스는 각각의 허용된 카오틱 갱신 블록에 대한 가장 최근에 기록된 CBI 섹터가 위치되는 오프셋을 한정한다. Indirect sector index defines the offsets that the CBI sector recording the latest for each chaotic update block allows the location. 인덱스의 오프셋의 역의 값은 허용된 카오틱 갱신 블록이 존재하지 않는 것을 지시한다. Value of the inverse of the offset in the index indicates that a permitted chaotic update block does not exist.

도 16d는 이하와 같은 카오틱 갱신 하에서 논리 그룹의 논리 섹터를 억세스하는 프로세스를 도시한다. Figure 16d shows the process of accessing a logical sector of the logical group under chaotic update as follows.

단계 670: 다중 서브 그룹 내로 각각의 논리 그룹을 구획하고 각각의 서브 그룹에 대해 CBI 섹터를 지정한다. Step 670: The compartment for each logical group into multiple subgroups and assign a CBI sector to each subgroup.

단계 680: 주어진 논리 그룹의 주어진 서브 그룹의 주어진 논리 섹터를 위치시키는 것을 시작한다. Step 680: Start placing a given logical sector of a given subgroup of a given logical group.

단계 682: CBI 블록의 최종 기록된 CBI 섹터를 위치시킨다. Step 682: Position the last recorded a CBI sector in the CBI block.

단계 684: 최종 기록된 CBI 섹터의 카오틱 블록 정보 필드를 참조함으로써 주어진 서브 그룹과 관련된 카오틱 갱신 블록 또는 원본 블록을 위치시킨다. Step 684: By referring to the chaotic block info field of the last written CBI sector the place the chaotic update block or original block associated with the given subgroup. 이러한 단계는 단계 696 이전의 임의의 시간에 수행될 수 있다. This step may be performed at any time before step 696.

단계 686: 최종 기록된 CBI 섹터가 주어진 논리 그룹으로 지시되면, 단계 691에 선행된다. Step 686: If the last written CBI sector directed to the given logical group, it is followed by step 691. 그렇지 않으면, 단계 690에 선행된다. Otherwise, it is followed by step 690.

단계 690: 최종 기록된 CBI 섹터의 간접 섹터 인덱스 필드를 참조함으로써 주어진 논리 그룹을 위한 다중 CBI 섹터의 최종 기록을 위치시킨다. Step 690: By referring to the indirect sector index field of the last written CBI sector positions the last recording of the multiple CBI sectors for the given logical group.

단계 691: 주어진 논리 그룹을 위한 서브 그룹 중 하나와 연관된 적어도 CBI 섹터를 위치시킨다. Step 691: Position the CBI sector associated with at least one of the subgroups for the given logical group. 계속됨. continuation.

단계 692: 위치된 CBI 섹터가 주어진 서브 그룹으로 지시되면, 주어진 서브 그룹을 위한 CBI 섹터가 위치된다. Step 692: If the located CBI sector directed to the given subgroup, the CBI sector for the given subgroup is located. 단계 696에 선행된다. It is followed by step 696. 그렇지 않으면 단계 694에 선행된다. Otherwise prior to the step 694.

단계 694: 현재 위치된 CBI 섹터의 직접 섹터 인덱스 필드를 참조함으로써 주어진 서브 그룹을 위한 CBI 섹터를 위치시킨다. Step 694: Position the CBI sector for the given subgroup by referring to the direct sector index field of the currently located CBI sector.

단계 696: 주어진 서브 그룹을 위한 CBI 섹터의 카오틱 블록 인덱스 필드를 참조함으로써 카오틱 블록 또는 원본 블록 중에서 주어진 논리 섹터를 위치시킨다. Step 696: Position the given logical sector among the chaotic block or the original block by referring to the Chaotic Block Index field of the CBI sector for the given subgroup.

도 16e는 각각의 논리 그룹이 다중 서브 그룹으로 구획되는 실시예를 위한 카오틱 블록 인덱싱(CBI) 섹터와 그 기능의 예를 도시한다. Figure 16e shows an example of the chaotic block index (CBI) sectors and their functions for the embodiment where each logical group partitioned into multiple subgroups. 논리 그룹(700)은 원래는 원본 메타블록(702)에 저장된 손상되지 않은 데이터를 갖는다. Logical group 700 originally has the uncorrupted data stored in the original metablock 702. The 논리 그룹은 그 다음에는 전용 카오틱 갱신 블록(704)의 할당을 갖는 갱신을 받는다. Logical group is then receives an update with the allocation of a dedicated chaotic update block 704. The 본 예에서, 논리 그룹(700)은 각각 256개의 섹터를 갖는 소정의 서브 그룹(A, B, C, D)으로 구획된다. In the present example, is divided into logical groups 700, it is a predetermined sub-group (A, B, C, D) with 256 sectors each.

서브 그룹(B)에서 i번째 섹터를 위치시키기 위해, CBI 블록(620)의 최종 기록된 CBI 섹터가 우선 위치된다. To position the i-th sector in the sub-group (B), the end recording a CBI sector in the CBI block 620 is first located. 최종 기록된 CBI 섹터의 카오틱 블록 정보 필드는 주어진 논리 그룹을 위한 카오틱 갱신 블록(704)을 위치시키기 위한 어드레스를 제공한다. Chaotic block info field of the last written CBI sector provides the address to locate the chaotic update block 704 for the given logical group. 동시에, 카오틱 블록에 최종 기록된 섹터의 위치가 제공된다. At the same time, it is provided in the last recorded sector in the chaotic block position. 이러한 정보는 주사 및 재구성 인덱스의 경우에 유용하다. Such information is useful in the case of the scanning and reconstruction index.

최종 기록된 CBI 섹터는 주어진 논리 그룹의 4개의 CBI 섹터 중 하나로 제조되고, i번째 논리 섹터를 포함하는 주어진 서브 그룹(B)을 위한 CBI 섹터가 정확한지 여부를 결정할 것이다. The last recorded CBI sector is made of one of the four CBI sectors of the given logical group, to determine whether the CBI sector for the given subgroup (B) comprising the i-th logical sector is correct. 그렇다면, CBI 섹터의 카오틱 블록 인덱스는 i번째 논리 섹터를 위한 데이터를 저장하기 위한 메타블록 위치로 지시될 것이다. If so, chaotic block index of the CBI sector will be directed to the metablock location for storing the data for the i-th logical sector. 섹터 위치는 카오틱 갱신 블록(704) 또는 원본 블록(702)에 있을 것이다. Sector position will be in the chaotic update block 704 or the original block (702).

최종 기록된 CBI 섹터는 주어진 논리 그룹의 4개의 CBI 섹터 중 하나로 제조되고, 서브 그룹(B)용으로 정확하지 않지만, 서브 그룹(B)을 위한 CBI 섹터를 위치시키기 위해 직접 섹터 인덱스가 참조된다. The last recorded CBI sector is made of one of the four CBI sectors of the given logical group, the subgroup does not correct for (B), the direct sector index to locate the CBI sector for the subgroup (B) is referred to. 이러한 정확한 CBI 섹터가 위치되면, 카오틱 블록 인덱스는 카오틱 갱신 블록(704)과 원본 블록(702) 중에서 i번째 논리 섹터를 위치시키기 위해 참조된다. If such exact CBI sector is located, chaotic block index is referred to in order to position the i-th logical sector among the chaotic update block 704 of the original block (702).

최종 기록된 CBI 섹터가 주어진 논리 그룹의 4개의 CBI 섹터 중 어느 하나로 구성되지 않으면, 4개 중 하나를 위치시키기 위해 그 간접 섹터 인덱스가 참조된다. If the last written CBI sector is not configured by any one of the four CBI sectors of the given logical group, its indirect sector index is referred to in order to position one of the four. 도 16e에 도시된 예에서, 서브 그룹(C)을 위한 CBI 섹터가 위치된다. In the diagram shown in Example 16e, the CBI sector for the subgroup (C) is positioned. 그 다음에 서브 그룹(C)을 위한 이러한 CBI 섹터는 서브 그룹(B)을 위한 정확한 CBI 섹터를 위치시키기 위한 그 직접 섹터 인덱스 참조를 갖는다. Then this CBI sector for the subgroup (C) has its direct sector index reference for locating the exact CBI sector for the subgroup (B). 예를 카오틱 블록 인덱스가 참조될 때, 그 논리 섹터가 변경되지 않은 것이 발견되고 그 유효 데이터는 원본 블록에 위치되는 것을 도시한다. For reference, when a chaotic block index, and the logical sector are not changed and are not found, that the effective data is shown to be located in the original block.

유사한 고려가 주어진 논리 그룹의 서브 그룹(C)의 j번째 논리 섹터를 위치시키기 위해 적용된다. A similar consideration applies to position the j th logical sector in the subgroup (C) of a given logical group. 예는 최종 기록된 CBI 섹터가 주어진 논리 그룹의 4개의 CBI 섹터들 중 임의의 것으로 구성되지 않는 것을 도시한다. Example illustrates that are not configured to be any of the four CBI sectors of the logical group, the CBI sector was last recorded given. 4개의 지시된 최종 기록은 서브 그룹(C)을 위한 CBI 섹터를 정확하게 구성한다. Four instructions the last record is exactly the CBI sector for the subgroup configuration (C). 그 카오틱 블록 인덱스가 참조될 때, j번째 논리 섹터는 카오틱 갱신 블록(704)의 지정된 위치에 위치되는 것이 판명되었다. Cao that when the reference tick block index, j-th logical sector has been found to be at a given position of the chaotic update block 704.

카오틱 섹터의 리스트가 시스템 내의 각각의 카오틱 갱신 블록에 대해 컨트롤러 램에 존재한다. It exists in controller RAM for a list of chaotic sectors for each chaotic update block in the system. 각각의 리스트는, 관련 CBI 섹터가 플래시 메모리내에서 최종 갱신되기 때문에 카오틱 갱신 블록내에 기록된 섹터의 레코드를 포함한다. Each list includes a record of sectors written in the chaotic update block since a related CBI sector is last updated in flash memory. 카오틱 섹터 리스트에 보유될 수 있는 특정 카오틱 갱신 블록에 대한 논리 섹터 어드레스의 수는 8 내지 16의 전형적인 값을 갖는 설계 파라미터이다. The number of logical sector addresses for a specific chaotic update blocks that can be held in a chaotic sector list, is a design parameter with a typical value of 8 to 16. 리스트의 최적 크기는 초기화 중의 섹터 스캐닝 시간과 카오틱 데이터 기록 동작을 위한 오버헤드에 대한 그의 효과 사이의 절충으로서 결정된다. Optimum size of the list is determined as a tradeoff between its effects on overhead for chaotic sector scanning time and the data write operation in the initialization.

시스템 초기화 중에, 각각의 카오틱 갱신 블록은 그의 관련 CBI 섹터 중 하나의 이전의 갱신 이후로 기록된 유효 섹터를 식별할 필요가 있기 때문에 스캐닝된다. During system initialization, each chaotic update block is scanned it is necessary to identify the valid sectors written since the previous update of one of its associated CBI sectors. 각각의 카오틱 갱신 블록에 대한 컨트롤러 램 내의 카오틱 섹터 리스트가 구성된다. A chaotic sector list in controller RAM for each chaotic update block is constructed. 각각의 블록은 단지 최종 기록된 CBI 섹터 내의 그의 카오틱 블록 정보 필드에 규정된 최종 섹터 어드레스로부터 스캐닝될 필요가 있다. Each block need only be scanned from the last sector address defined in its chaotic block info field within a CBI sector is written end.

카오틱 갱신 블록이 할당될 때, CBI 섹터는 모든 갱신 논리 서브-그룹에 대응하도록 기록된다. When a chaotic update block allocated, CBI sectors are all updated logical sub-groups are written to correspond to. 카오틱 갱신 블록에 대한 논리 및 물리 어드레스는, 카오틱 블록 인덱스 필드 내에 널 엔트리를 갖고 섹터 내의 이용 가능한 카오틱 블록 정보 필드에 기록된다. Logical and physical addresses for the chaotic update block is to have a null entry in the chaotic block index field is recorded in the available chaotic block info field in the sector. 카오틱 섹터 리스트는 컨트롤러 램 내에 개방된다. Chaotic sector list is opened in controller RAM.

카오틱 갱신 블록이 폐쇄될 때, CBI 섹터는 섹터 내의 카오틱 블록 정보 필드로부터 제거된 블록의 논리 및 물리 어드레스로 기록된다. When a chaotic update block closed, CBI sector is recorded in Cao logical and physical addresses of the block removed from the tick block info field in the sector. 램 내의 대응 카오틱 섹터 리스트는 미사용된다. Corresponding chaotic sector list in RAM are unused.

컨트롤러 램 내의 대응 카오틱 섹터 리스트는 카오틱 갱신 블록에 기록된 섹 터의 레코드를 포함하도록 수정된다. Corresponding chaotic sector list in controller RAM is modified to include records of sectors written in the chaotic update block. 컨트롤러 램 내의 카오틱 섹터 리스트가 카오틱 갱신 블록으로의 부가의 섹터 기록의 레코드를 위한 이용 가능한 공간을 갖지 않을 때, 갱신 CBI 섹터가 리스트 내의 섹터에 관한 논리 서브-그룹에 대해 기록되고, 리스트가 소거된다. When a chaotic sector list in controller RAM does not have an available space for the additional record of the sector is recorded into a chaotic update block, updated CBI sectors are logical sub on the sectors in the list - is recorded for the group, the list is It is erased.

CBI 블록(620)이 가득차게 될 때, 유효 CBI 섹터가 할당된 삭제 블록에 복사되고, 이전의 CBI 블록이 삭제된다. When CBI block 620 is to be filled, is copied to the valid CBI sectors are allocated the deleted block, and is removed prior to the CBI block.

어드레스 테이블 Address table

도 2에 도시된 논리 대 물리 어드레스 번역 모듈(140)은 플래시 메모리 내의 대응 물리 어드레스에 호스트의 논리 어드레스를 관련시키는 기능을 한다. The logical-to-physical address translation module 140 shown in Fig. 2 is a function that associates a logical address of the host to a corresponding physical address in the flash memory. 논리 그룹과 물리 그룹(메타블록) 사이의 맵핑은 비휘발성 플래시 메모리(200) 및 휘발성이지만 더 예민한 램(130)(도 1 참조) 사이에 분배된 리스트 및 테이블의 세트에 저장된다. Mapping between logical groups and physical groups (metablocks) are stored in a set of table and lists distributed among the nonvolatile flash memory 200 and the volatile but more susceptible RAM 130 (see Fig. 1). 어드레스 테이블은 메모리 시스템 내의 모든 논리 그룹에 대한 메타블록 어드레스를 포함하여 플래시 메모리내에 유지된다. Address table is maintained in flash memory including a metablock address for every logical group in the memory system. 또한, 최근에 기록된 섹터에 대한 논리 대 물리 어드레스 레코드가 램 내에 일시 보유된다. In addition, the logical-to-physical address records for recently written sectors are temporarily held in RAM. 이들 휘발성 레코드는 시스템이 시동된 후에 초기화될 때 플래시 메모리 내의 데이터 섹터 헤더 및 블록 리스트로부터 재구성될 수 있다. These volatile records can be reconstructed from the data sector headers and the block list in the flash memory when the system is initialized after start-up. 따라서, 플래시 메모리 내의 어드레스 테이블은 단지 빈번하지 않게 갱신될 필요가 있어, 낮은 비율의 제어 데이터를 위한 오버헤드 기록 동작을 유도한다. Thus, the address table in flash memory, it is necessary to be updated not only frequent, leading to overhead write operations for control data of a low rate.

논리 그룹에 대한 어드레스 레코드의 계층 구성은 개방 갱신 블록 리스트, 램 내의 폐쇄 갱신 블록 리스트 및 플래시 메모리에 유지된 그룹 어드레스 테이 블(GAT)을 포함한다. Hierarchy of address records for logical groups includes a group address table (GAT) maintained in the closed update block list and the flash memory in the open update block list, the ram.

개방 갱신 블록 리스트는 갱신된 호스트 섹터 데이터를 기록하기 위해 현재 개방되어 있는 데이터 갱신 블록의 컨트롤러 램 내의 리스트이다. Open update block list is a list in controller RAM of data update blocks which are currently open for writing the updated host sector data. 블록에 대한 엔트리는 블록이 폐쇄될 때 폐쇄 갱신 블록으로 이동된다. Entry for the block is moved to the closed update block when the block is closed. 폐쇄 갱신 블록 리스트는 폐쇄되어 있는 데이터 갱신 블록의 컨트롤러 램 내의 리스트이다. Closed update block list is a list in controller RAM of data update blocks which are closed. 리스트 내의 엔트리의 서브세트는 제어 기록 동작 중에 그룹 어드레스 테이블 내의 섹터로 이동된다. A subset of the entries in the list is moved to a sector in the Group Address Table during a control write operation.

그룹 어드레스 테이블(GAT)은 메모리 시스템 내의 호스트 데이터의 모든 논리 그룹에 대한 메타블록 어드레스의 리스트이다. Group address table (GAT) is a list of metablock addresses for all logical groups of host data in the memory system. GAT는 논리 어드레스에 따라 순차적으로 순서화된 각각의 논리 그룹에 대한 하나의 엔트리를 포함한다. GAT contains one entry for each logical group is sequentially ordered in accordance to the logical address. GAT 내의 제n 엔트리는 어드레스 n을 갖는 논리 그룹에 대한 메타블록 어드레스를 포함한다. The n-th entry in the GAT contains the metablock address for the logical group with address n. 양호한 실시예에서, 이는 메모리 시스템 내의 모든 논리 그룹에 대한 메타블록 어드레스를 규정하는 엔트리를 갖는 섹터(GAT 섹터라 함)의 세트를 포함하는 플래시 메모리 내의 테이블이다. In a preferred embodiment, which is a table in the flash memory including a set of sectors (referred to as GAT sectors) with entries defining a metablock address for every logical group in the memory system. GAT 섹터는 플래시 메모리 내의 하나 이상의 전용 제어 블록(GAT 블록이라 칭함) 내에 위치된다. GAT sectors are located in one or more dedicated control blocks in the flash memory (referred to as GAT blocks).

도 17a는 그룹 어드레스 테이블(GAT) 섹터의 데이터 필드를 도시한다. Figure 17a shows the data fields of a group address table (GAT) sector. GAT 섹터는 예로서 128개의 연속 논리 그룹의 세트에 대한 GAT 엔트리를 포함하기에 충분한 능력을 가질 수 있다. GAT sector may have sufficient capacity to contain GAT entries for a logical group of 128 consecutive set as an example. 각각의 GAT 섹터는 두 개의 요소, 즉 범위 내의 각각의 논리 그룹의 메타블록 어드레스에 대한 GAT 엔트리의 세트 및 GAT 섹터 인덱스를 포함한다. Each of the GAT sector includes two components, that is set and a GAT sector index of GAT entries for the metablock address of each logical group within a range. 제1 요소는 논리 어드레스와 연관된 메타블록을 위치시키기 위한 정보를 포함한다. The first component contains information for locating the metablock associated with the logical address. 제2 요소는 GAT 블록내에 모든 유효 GAT 섹터를 위치시키기 위한 정보를 포함한다. The second component contains information for locating all valid GAT sectors within the GAT block. 각각의 GAT 엔트리는 3개의 필드, 즉 메타블록 수, 도 3a(iii)와 관련하여 상기에 정의된 바와 같은 페이지 태그 및 메타블록이 재링크되어 있는지 여부를 지시하는 플래그를 갖는다. Each GAT entry has a flag indicating whether the three fields, that is, the metablock number, the page tag and meta-blocks as defined above with regard to Figure 3a (iii) is re-linked. GAT 섹터 인덱스는 GAT 블록 내의 유효 GAT 섹터의 위치를 열거한다. GAT sector index lists the positions of valid GAT sectors in a GAT block. 이 인덱스는 모든 GAT 섹터 내에 있지만, GAT 블록 내의 다음의 기록된 GAT 섹터의 버전에 의해 대체된다. This index is in every GAT sector but is replaced by the next version of the recording GAT sectors within the GAT block. 따라서, 단지 최종 기록된 GAT 섹터 내의 버전만이 유효하다. Therefore, only the version in only the last written GAT sector is valid.

도 17b는 하나 이상의 GAT 블록내에 레코딩된 그룹 어드레스 테이블(GAT) 섹터의 예를 도시한다. Figure 17b shows an example of the group address table (GAT) sectors recorded in one or more GAT block. GAT 블록은 GAT 섹터 레코딩에 전용된 메타블록이다. GAT block is a metablock dedicated to recording GAT sectors. GAT 섹터가 갱신될 때, 이는 GAT 블록(720) 내의 다음의 이용 가능한 물리 섹터 위치에 기록된다. When the GAT sector is updated, it is recorded in the next available physical sector location in the GAT block 720. 따라서, GAT 섹터의 다수의 사본이 단지 최종 기록 사본만이 유효한 상태로 GAT 블록내에 존재할 수 있다. Accordingly, it may be present in multiple copies only the last recorded copy only the GAT block into a valid status of the GAT sector. 예로서 GAT 섹터(255)(논리 그룹 LG 3968 -LG 4098 의 포인터들을 포함함)는 최신 버전이 유효한 것인 상태로 적어도 2회 갱신된다. As an example (also including logical groups LG 3968 -LG 4098 Pointer) GAT sector 255 is updated at least two times with the latest version being valid. GAT 블록 내의 각각의 유효 섹터의 위치는 블록 내의 최종 기록된 GAT 섹터 내의 인덱스의 세트에 이해 식별된다. Location of each valid sector in the GAT block is identified understanding the set of indices in the last recording GAT sector in the block. 본 예에서, 블록 내의 최종 기록된 GAT 섹터는 GAT 섹터(236)이고, 그의 인덱스의 세트는 모든 이전의 것들을 대체하는 유효한 것이다. In this example, the GAT sector in the block is set in the last recording is GAT sector 236, its index is available to replace all previous ones. GAT 블록이 결국에 GAT 섹터로 완전히 충전될 때, 블록은 다음 블록 위치에 모든 유효 섹터를 재기록함으로써 제어 기록 동작 중에 압축된다. When the GAT block eventually be completely filled with GAT sectors, the block is compacted during a control write operation by rewriting all valid sectors to a next block position. 다음, 가득찬 블록은 삭제된다. Next, full blocks are deleted.

상술한 바와 같이, GAT 블록은 논리 어드레스 공간의 구역 내의 그룹의 국부적으로 연속적인 세트에 대한 엔트리를 포함한다. As described above, GAT block contains entries for the local consecutive set of the group in the region of logical address space. GAT 블록 내의 GAT 섹터는 각각 128개의 연속적인 논리 그룹에 대한 논리 대 물리 맵핑 정보를 포함한다. GAT sectors within the GAT block comprises a logical-to-physical mapping information for 128 contiguous logical groups, respectively. GAT 블록에 의해 걸친 어드레스 범위 내의 모든 논리 그룹에 대한 엔트리를 저장하는데 요구되는 GAT 섹터의 수는 블록 내의 총 섹터 위치의 부분만을 점유한다. The number of GAT sectors required to store entries for all logical groups within the address range over by a GAT block occupy only a fraction of the total sector positions in the block. 따라서, GAT 섹터는 블록 내의 다음의 이용 가능한 섹터 위치에 이를 기록함으로써 갱신될 수 있다. Thus, GAT sector may be updated by writing it to the next available sector position in the block. 모든 유효 GAT 섹터 및 GAT 블록 내의 이들의 위치의 인덱스는 가장 최근에 기록된 GAT 섹터 내의 인덱스 필드에 유지된다. All valid GAT sectors and an index of their location in the GAT block is maintained in an index field in the most recently written GAT sector in. 유효 GAT 섹터에 의해 점유된 GAT 블록 내의 총 섹터의 부분은 일반적으로는 25%인 시스템 설계 파라미터이다. The effective portion of the total sectors in a GAT block occupied by the GAT sector generally is a design parameter of the system by 25%. 그러나, GAT 블록 당 64 유효 GAT 섹터의 최대값이 존재한다. However, GAT and the maximum presence of 64 valid GAT sectors per block. 큰 논리 용량을 갖는 시스템에서, 하나 이상의 GAT 블록내에 GAT 섹터를 저장할 필요가 있을 수 있다. In a system with large logical capacity, it may be necessary to store GAT sectors in more than one GAT block. 이 경우, 각각의 GAT 블록은 논리 그룹의 고정 범위와 연관된다. In this case, each GAT block is associated with a fixed range of logical groups.

GAT 갱신은 ABL이 할당을 위한 블록으로부터 나올 때 트리거되는 제어 기록 동작의 일부로서 수행된다(도 18 참조). GAT update is performed as part of a control write operation is triggered when new blocks from the ABL for this allocation (see FIG. 18). 이는 ABL 충전 및 CBL 비움 동작과 동시에 수행된다. This is done simultaneously with ABL fill and CBL emptying operation. GAT 갱신 동작 중에, 하나의 GAT 섹터는 폐쇄 갱신 블록 리스트 내의 대응 엔트리로부터의 정보로 갱신된 엔트리를 갖는다. The GAT update operation, one GAT sector has entries updated with information from corresponding entries in the closed update block list. GAT 엔트리가 갱신될 때, 임의의 대응 엔트리가 폐쇄 갱신 블록 리스트(CUBL)로부터 제거된다. When a GAT entry is updated, any corresponding entries are removed from the closed update block list (CUBL). 예로서, 갱신될 GAT 섹터는 폐쇄 갱신 블록 리스트 내의 제1 엔트리에 기초하여 선택된다. For example, GAT sector to be updated is selected based on the first entry in the closed update block list. 갱신된 섹터는 GAT 블록 내의 다음의 이용 가능한 섹터 위치에 기록된다. The updated sector is written to the next available sector location in the GAT block.

GAT 재기록 동작은 어떠한 섹터 위치도 갱신된 GAT 섹터에 대해 이용 가능하 지 않을 때 제어 기록 동작 중에 발생한다. When GAT rewrite operation will be not available in a GAT sector is no sector location update occurs during a control write operation. 새로운 GAT 블록이 할당되고, GAT 인덱스에 의해 규정된 바와 같은 유효 GAT 섹터가 가득 찬 GAT 블록으로부터 순차적인 순서로 복사된다. A new GAT block is allocated, is copied from a valid GAT GAT block becomes full, the sector as defined by the GAT index in a sequential order. 다음, 가득찬 GAT 블록은 삭제된다. Next, the cold is full GAT block is deleted.

GAT 캐시는 GAT 섹터 내의 128 엔트리의 분할부분내의 엔트리의 컨트롤러 램(130) 내의 사본이다. GAT cache is a copy in controller RAM 130 of entries in the divided portion of the 128 entries in a GAT sector. GAT 캐시 엔트리의 수는 전형적인 값 32를 갖는 시스템 설계 파라미터이다. The number of GAT cache entries is a system design parameter with a typical value of 32. 관련 섹터 분할부분을 위한 GAT 캐시는 엔트리가 GAT 섹터로부터 판독될 때마다 생성된다. GAT cache for the relevant sector divided portion is generated each time the entry is read from a GAT sector. 다수의 GAT 캐시가 유지된다. The number of GAT cache is maintained. 수는 4의 전형적인 값을 갖는 설계 파라미터이다. The number is a design parameter with a typical value of 4. GAT 캐시는 최소 현재 사용 기초로 상이한 섹터 분할을 위한 엔트리로 대체된다. GAT cache is replaced by entries for different sectors divided on the basis of the minimum current.

삭제된 메타블록 관리 Deleted metablock management

도 2에 도시된 삭제 블록 관리자(160)는 디렉토리 및 시스템 제어 정보를 유지하기 위한 리스트의 세트를 사용하여 삭제 블록을 관리한다. The erase block manager 160 shown in Figure 2 using a set of lists for maintaining directory and system control information and manages the erase block. 이들 리스트는 컨트롤러 램(130) 및 플래시 메모리(200) 사이에 분배된다. These lists are distributed among the controller RAM 130 and flash memory 200. 삭제된 메타블록이 사용자 데이터의 저장을 위해 또는 시스템 제어 데이터 구조의 저장을 위해 할당되어야 할 때, 컨트롤러 램 내에 보유된 할당 블록 리스트(ABL)(도 15 참조) 내의 다음의 이용 가능한 메타블록 수가 선택된다. When the deleted meta-block is to be allocated for storage of the storage or system control data structure for the user data, the next available metablock number choice in (see Fig. 15) the allocated block list (ABL) held in controller RAM do. 유사하게, 메타블록이 철회된 후에 삭제될 때, 그의 수는 컨트롤러 램 내에 또한 보유된 소거 블록 리스트(CBL)에 추가된다. Similarly, when a metablock is removed after the withdrawal, its number is added also to retain the erased block list (CBL) in the controller RAM. 비교적 정적인 디렉토리 및 시스템 제어 데이터가 플래시 메모리내에 저장된다. Relatively static directory and system control data are stored in the flash memory. 이들은 플래시 메모리 내의 모든 메타블록의 삭제된 상태를 열거하는 비트맵(MAP) 및 삭제 블록 리스트를 포함한다. These include a bit map (MAP) and the erase block list enumerating the deleted status of all metablocks in the flash memory. 삭제 블록 리스트 및 MAP는 개별 섹터에 저장되고 MAP 블 록으로서 공지된 전용 메타블록에 레코딩된다. Deletion block lists and MAP are recorded in a dedicated metablock stores in the individual sectors is known as a MAP block. 컨트롤러 램과 플래시 메모리 사이에 분배된 이들 리스트는 삭제된 메타블록 사용을 효율적으로 관리하도록 삭제 블록 레코드의 계층 구성을 제공한다. Of these lists distributed among the controller RAM and flash memory, provide a hierarchy of the deletion block records to efficiently manage the use deleted metablock.

도 18은 삭제 블록의 사용 및 재생을 위한 제어 및 디렉토리 정보의 분배 및 흐름을 도시하는 개략 블록 다이어그램이다. Figure 18 is a schematic block diagram illustrating the distribution and flow of the control and directory information for use and regeneration of the deletion block. 제어 및 디렉토리 데이터는 컨트롤러 램(130) 내에 또는 플래시 메모리(200)에 상주하는 MAP 블록(750) 내에 보유되는 리스트 내에 유지된다. Control and directory data are maintained in a list which is held in the MAP block 750 residing in or flash memory 200 in the controller RAM 130.

양호한 실시예에서, 컨트롤러 램(130)은 할당 블록 리스트(ABL)(610) 및 소거 블록 리스트(CBL)(740)를 보유한다. In a preferred embodiment, the controller RAM 130 holds the allocation block list (ABL) (610) and the erased block list (CBL) (740). 도 15와 연관하여 상술한 바와 같이, 할당 블록 리스트(ABL)는 사용자 데이터의 저장을 위해 또는 시스템 제어 데이터 구조의 저장을 위해 최근에 할당되어 있는 메타블록의 트랙을 유지한다. , The allocation block list, as described in connection with Figure 15 above (ABL) keeps track of the metablock, which is assigned to the last for the storage of system control for storage or the data structure of the user data. 새로운 삭제된 메타블록이 할당되어야 할 때, 할당 블록 리스트(ABL) 내의 다음의 이용 가능한 메타블록 수가 선택된다. To be assigned to the new metablock deleted, the number of the next available metablock in the allocation block list (ABL) is selected. 유사하게, 소거 블록 리스트(CBL)는 할당 해제되고 삭제되어 있는 갱신 메타블록의 트랙을 유지하는데 사용된다. Similarly, the erased block list (CBL) is used to keep track of update metablocks that is released and dropped allocation. ABL 및 CBL은 비교적 능동적인 갱신 블록을 추적할 때 고속 접근 및 용이한 조작을 위해 컨트롤러 램(130)(도 1 참조)에 보유된다. ABL and CBL are when tracking the relatively active update blocks for high-speed access and easy manipulation is held in controller RAM 130 (see Fig. 1).

할당 블록 리스트(ABL)는 갱신 블록이 되는 삭제 메타블록의 할당 및 삭제된 메타블록의 풀의 트랙을 유지한다. The allocation block list (ABL) keeps track of the allocation, and delete the deleted meta-block of the metablock is the update block pool. 따라서, 속성에 의해 서술될 수 있는 이들 메타블록 각각은 ABL 계류 할당, 개방 갱신 블록 또는 폐쇄 갱신 블록 내의 삭제 블록인지의 여부를 지정한다. Thus, each of these metablocks that may be described by the attribute specifies whether or not the deletion block in the ABL pending allocation, an open update block, or a closed update block. 도 18은 삭제된 ABL 리스트(612), 개방 갱신 블록 리스 트(614) 및 폐쇄 갱신 블록 리스트(616)를 포함하는 ABL을 도시한다. Figure 18 shows the deletion of ABL list 612, the open update block leasing agent 614 and the closed update block list ABL containing 616. 또한, 개방 갱신 블록 리스트(614)와 연관된 것은 연관 원본 블록 리스트(615)이다. Also, associated with the open update block list 614 it is the associated original block list (615). 유사하게, 폐쇄 갱신 블록 리스트와 연관된 것은 연관된 삭제된 원본 블록 리스트(617)이다. It Similarly, associated with the closed update block list is a list of the source block 617 to delete the associated. 도 15에 미리 도시된 바와 같이, 이들 연관 리스트는 개방 갱신 블록 리스트(614) 및 폐쇄 갱신 블록 리스트(616) 각각의 서브세트이다. As previously shown in Figure 15, these associated lists are subset of the open update block list, each of 614 and a closed update block list 616. 삭제된 ABL 블록 리스트(612), 개방 갱신 블록 리스트(614) 및 폐쇄 갱신 블록 리스트(616)는 모두 대응 속성을 각각 갖는 각각 내의 엔트리 내의 할당 블록 리스트(ABL)(610)의 서브세트이다. Deleted ABL block list 612, the open update block list 614 and the closed update block list 616 are all subsets of the allocation block list (ABL) (610) in each in the entry with the corresponding attribute, respectively.

MAP 블록(750)은 플래시 메모리(200) 내에 삭제 관리 레코드를 저장하는데 전용되는 메타블록이다. MAP block 750 is a metablock dedicated to store the management record deleted in the flash memory 200. MAP 블록은, 각각의 MAP 섹터가 삭제 블록 관리(EBM) 섹터(760) 또는 MAP 섹터(780)인 MAP 블록 섹터의 시간 시리즈를 저장한다. MAP block, and stores each MAP sector is a time series of MAP block sectors erase block management (EBM) sector 760 or a MAP sector 780. 삭제 블록이 할당에 사용되고 메타블록이 철수될 때 재생됨에 따라, 연관 제어 및 디렉토리 데이터가 갱신 데이터의 각각의 순간이 새로운 블록 섹터에 레코딩되는 상태로 MAP 블록내에 갱신될 수 있는 논리 섹터에 바람직하게 포함된다. As the erase block are being used for assignment when a metablock withdrawal playback, associated control and directory data is stored each time the update data, preferably in a logical sector which may be updated in the MAP block in a state that is written to the new block sector do. EBM 섹터(760) 및 MAP 섹터(780)의 다중 사본은, 단지 최신 버전만이 유효한 상태로 MAP 블록(750)에 존재할 수 있다. Multiple copies of EBM sectors 760 and MAP sectors 780 is, can only be present in the MAP block 750, with the most recent version only valid. 유효 MAP 섹터의 위치에 대한 인덱스는 EMB 블록 내의 필드에 포함된다. Index for a valid MAP sectors is contained in the location field in the EMB block. 유효 EMB 섹터는 항상 제어 기록 동작 중에 MAP 블록내에 최종 기록된다. Valid EMB sector is always written in the MAP block during a final control a write operation. MAP 블록(750)이 충전될 때, 이는 새로운 블록 위치로 모든 유효 섹터를 재기록함으로써 제어 기록 동작 중에 압축된다. When MAP block 750 is to be filled, which is compressed during a control write operation by rewriting all valid sectors to a new block location. 다음, 가득 찬 블록이 삭제된다. Next, full blocks are deleted.

각각의 EBM 섹터(760)는 삭제 블록의 집단의 서브세트의 어드레스의 리스트 인 삭제 블록 리스트(EBL)(770)를 포함한다. Each EBM sector 760 contains a list of addresses of deleted block list (EBL) (770) of the subsets of the group of the deletion block. 삭제 블록 리스트(EBL)(770)는 삭제된 메타블록 수를 포함하는 버퍼로서 작용하고, 이로부터 메타블록 수가 ABL을 재충전하도록 주기적으로 취해지고, 메타블록 수가 CBL을 재비움하도록 주기적으로 이에 추가된다. Deleted block list (EBL) (770) acts as a buffer containing the number of the deleted meta-block, and is periodically taken as a number from which metablock to recharge the ABL, the number of metadata block is periodically added thereto to blanking re CBL . EBL(770)은 이용 가능한 블록 버퍼(ABB)(772), 삭제 블록 버퍼(EBB)(774) 및 삭제 블록 버퍼(CBB)(776)에 대한 버퍼로서 기능한다. EBL (770) functions as a buffer for the available block buffer (ABB) (772), remove the block buffer (EBB) (774) and remove the block buffer (CBB) (776).

이용 가능한 블록 버퍼(ABB)(772)는 이전의 ABL 충전 동작에 즉시 이어지는 ABL(610) 내의 엔트리의 사본을 포함한다. The available block buffer (ABB) (772) includes a copy of the entries in the immediately subsequent ABL (610) to the previous ABL fill operation. 이는 ABL 충전 동작 직후에 ABL의 백업 사본에 유용하다. This is useful in the backup copy of the ABL just after ABL fill operation.

삭제 블록 버퍼(EBB)(774)는, MAP 섹터(780)로부터 또는 CBB 리스트(776)(이하에 설명함)로부터 미리 전달되어 있고 ABL 충전 동작 중에 ABL(610)로의 전달을 위해 이용 가능한 삭제 블록 어드레스를 포함한다. Deletion block buffer (EBB) (774) is, is transmitted in advance from (described below) MAP sector or CBB list 776 from 780 and ABL clearable block used for transmission to the ABL (610) during the charging operation It includes an address.

삭제 블록 버퍼(CBB)(776)는, CBL 비움 동작 중에 CBL(740)로부터 전달되고 MAP 섹터(780) 또는 EBB 리스트(774)에 순차적으로 전달될 수 있는 삭제 블록의 어드레스를 포함한다. Deletion block buffer (CBB) (776) may be transferred from the CBL (740) during the emptying operation CBL containing the address of the erase block that can be transmitted sequentially to MAP sectors 780 or EBB list 774.

MAP 섹터(780) 각각은 MAP이라 칭하는 비트맵 구조를 포함한다. MAP sectors 780 each includes a bitmap structure referred to as MAP. MAP는 각각의 블록의 삭제 상태를 지시하기 위해 사용되는 플래시 메모리 내의 각각의 메타블록에 대한 하나의 비트를 사용한다. MAP uses one bit for each metablock in flash memory is used to indicate the deleted status of each block. ABL, CBL 또는 EBM 섹터 내의 삭제 블록 리스트에 열거된 블록 어드레스에 대응하는 비트는 MAP 내의 삭제 상태로 설정되지 않는다. Bit corresponding to the block addresses listed in the deleted block list in the ABL, CBL, or EBM sector are not set to the erased state in the MAP.

유효 데이터 구조를 포함하지 않고 MAP, 삭제 블록 리스트, ABL 또는 CBL 내 의 삭제 블록으로서 지정되지 않은 임의의 블록은 전혀 블록 할당 알고리즘에 의해 사용되지 않고, 따라서 호스트 또는 제어 데이터 구조의 저장을 위해 접근 불가능하다. It does not contain valid data structures MAP, deleted block list, ABL or any block is specified as a deletion block within CBL is not at all used by the block allocation algorithm and therefore inaccessible for storage of host or control data structures Do. 이는 접근 가능한 플래시 메모리 어드레스 공간으로부터 결함 있는 위치를 갖는 블록을 배제하기 위한 간단한 메커니즘을 제공한다. This provides a simple mechanism for excluding blocks with defective locations from the accessible flash memory address space.

도 18에 도시된 계층 구성은 삭제 블록 레코드가 효율적으로 관리되게 하고 컨트롤러의 램 내에 저장된 블록 어드레스 리스트의 완전한 보안을 제공한다. Also the layer configuration shown in Fig. 18 provides for full security of the block record deletion is to be efficiently managed, and the block address lists stored in the RAM of the controller. 삭제 블록 엔트리는 빈번하지 않은 기초로 하나 이상의 MAP 섹터(780)와 이들 블록 어드레스 리스트 사이에 교환된다. Deletion block entry is based are not frequently exchanged between one or more MAP sectors 780, with these block address lists. 이들 리스트는 플래시 메모리 내의 섹터에 저장된 어드레스 번역 테이블 및 삭제 블록 리스트 내의 정보 및 플래시 메모리 내의 소수의 참조된 데이터 블록의 제한된 스캐닝을 거쳐 전원 오프 후에 시스템 초기화 중에 재구성될 수 있다. These lists may be reconstructed during system initialization after a power-off through a limited scan of the address translation table, and deleting the data block reference block information and a small number in the flash memory in the list stored in sectors in flash memory.

삭제된 메타블록 레코드의 계층 구성을 갱신하기 위해 채택된 알고리즘은 이 호스트에 의해 갱신되는 순서 블록을 반영하는 CBL(740)로부터의 블록 어드레스의 버스트를 갖는 MAP 블록(750)으로부터의 어드레스 순서 내의 블록의 버스트를 삽입하는 순서에 사용하기 위해 할당되어 있는 삭제 블록을 초래한다. Adopted for updating the hierarchy of the deleted metablock records algorithm blocks in address order from the MAP block 750 with bursts of block addresses from the CBL (740) which reflects the order in the block is updated by the host the results of the erase block that are allocated for use in order to insert a burst. 최대 메타블록 크기 및 시스템 메모리 용량을 위해, 단일 MAP 섹터가 시스템 내의 모든 메타블록에 대한 비트맵을 제공할 수 있다. For maximum metablock sizes and system memory capacities, a single MAP sector can provide a bitmap for all metablocks in the system. 이 경우, 삭제 블록은 항상 이 MAP 섹터 내에 레코딩됨으로써 어드레스 순서에 사용을 위해 할당된다. In this case, the deletion block is always allocated for use in address order being recorded in this MAP sector.

삭제 블록 관리 동작 Erase block management operation

상술한 바와 같이, ABL(610)은 사용을 위해 할당될 수 있는 삭제된 메타블록 및 데이터 갱신 블록으로서 최근에 할당되어 있는 메타블록에 대한 어드레스 엔트리를 갖는 리스트이다. As described above, ABL (610) is a list with address entries for the metablock with the metablock as an update block and a data deletion, which can be assigned for use are assigned to the last. ABL 내의 블록 어드레스의 실제 수는 시스템 설계 변수들인 최대 및 최소 한계 사이에 놓인다. The actual number of block addresses in the ABL lies between the maximum and minimum limits, which are system design variables. 제조 중에 포맷된 ABL 엔트리의 수는 카드 유형 및 용량의 함수이다. The number of ABL entries formatted during manufacturing is a function of the card type and capacity. 또한, ABL 내의 엔트리의 수는, 이용 가능한 삭제 블록의 수가 수명 중에 블록의 고장에 의해 감소되기 때문에 시스템의 수명의 종료에 인접하여 감소될 수 있다. In addition, the number of entries in the ABL, may be reduced adjacent to the end of the life of the system because the reduction due to the failure of the block in the number of available erase block life. 예로서, 충전 동작 후에, ABL 내의 엔트리는 이하의 목적을 위해 이용 가능한 블록을 지정한다. By way of example, after the filling operation, entries in the ABL may specify blocks available for the purpose described below. 부분 기록된 데이터에 대한 엔트리는 동시에 개방된 갱신 블록의 최대값에 대한 시스템 한계를 초과하지 않고 블록 당 하나의 엔트리로 블록을 갱신한다. Entries for a part of the write data does not exceed the system limit on the maximum value of the update block open at the same time updates the block with one entry per block. 데이터 갱신 블록으로서 할당을 위해 삭제 블록에 대한 1 내지 20개의 엔트리 사이이다. For allocation as a data update block it is between one to twenty entries for deleted block. 제어 블록으로서 할당을 위해 삭제 블록을 위해 4개의 엔트리이다. A four entries for the deleted blocks for allocation as control blocks.

ABL 충전 동작 ABL fill operation

ABL(610)이 할당을 통해 고갈될 때, 이는 재충전될 필요가 있다. When the ABL (610) is depleted through allocations, it will need to be recharged. ABL을 충전하기 위한 동작은 제어 기록 동작 중에 발생한다. Operation for charging the ABL occurs during a control write operation. 이는 블록이 할당되어야 할 때 트리거되지만, ABL은 데이터 갱신 블록으로서의 할당을 위해, 또는 소정의 다른 제어 데이터 갱신 블록에 대해 이용 가능한 불충분한 삭제 블록 엔트리를 포함한다. This trigger, but, ABL contains insufficient erase block entries available for allocation as a data update to a block, or some other control data update block when the block is to be allocated. 제어 기록 중에, ABL 충전 동작은 GAT 갱신 동작과 동시 발생한다. In the control record, ABL fill operation takes place simultaneously and GAT update operation.

이하의 작용이 ABL 충전 동작 중에 발생한다. The action of the following occurs in the ABL fill operation.

1. 현재 데이터 갱신 블록의 속성을 갖는 ABL 엔트리가 유지된다. 1. ABL entries with attributes of current data update blocks are retained.

2. 블록에 대한 엔트리가 동시 발생 GAT 갱신 동작에 기록되지 않으면 폐쇄 데이터 갱신 블록의 속성을 갖는 ABL 엔트리가 유지되고, 이 경우 엔트리는 ABL로부터 제거된다. 2. If the block entry is not written in the concurrent GAT update operation is ABL entries with attributes of closed data update block is maintained for, in which case the entry is removed from the ABL.

3. 미할당 삭제 블록에 대한 ABL 엔트리가 유지된다. 3. ABL entries for unallocated erase blocks are retained.

4. ABL은 엔트리의 제거에 의해 생성된 간격을 제거하여 엔트리의 순서를 유지하도록 압축한다. 4. ABL is compressed to maintain the order of the entries is removed and the resulting distance by the removal of the entry.

5. ABL은 EBB 리스트로부터 다음의 이용 가능한 엔트리를 첨부함으로써 완전히 충전된다. 5. ABL is completely filled by appending the next available entries from the EBB list.

6. ABB 리스트는 ABL 내의 현재의 엔트리로 대체된다. 6. ABB list is replaced with the current entries in the ABL.

CBL 비움 동작 CBL evacuation operation

CBL은 ABL과 삭제 블록 엔트리의 수에 대한 동일한 제한을 갖는 컨트롤러 램 내의 삭제 블록 어드레스의 리스트이다. CBL is a list of the deleted block addresses in controller RAM with the same limitation on the number of ABL entries and delete blocks. CBL을 비우는 동작이 제어 기록 동작 중에 발생한다. The operation to empty the CBL occurs during a control write operation. 따라서 이는 ABL 충전/GAT 갱신 동작 또는 CBI 블록 기록 동작과 동시에 발생한다. Therefore, it occurs simultaneously with ABL fill / GAT update operations, or CBI block write operations. CBL 비움 동작에서, 엔트리는 CBL(740)로부터 제거되어 CBB 리스트(776)에 기록된다. In CBL emptying operation, the entry is removed from the CBL (740) is written to the CBB list 776.

MAP 교환 동작 MAP exchange operation

EBM 섹터(760)와 MAP 섹터(780) 내의 삭제 블록 정보 사이의 MAP 교환 동작은 EBB 리스트(774)가 비어 있을 때 제어 기록 동작 중에 주기적으로 발생할 수 있다. EBM MAP exchange operation between the erase block information in the sector 760 and MAP sectors 780 may periodically may occur during the control write operation, when the EBB list 774 is empty. 시스템 내의 모든 삭제된 메타블록이 EBM 섹터(760) 내에 레코딩되면, MAP 섹터(780)가 존재하지 않고 MAP 교환이 수행되지 않는다. When all the deleted meta-block in the recording system in the EBM sector (760), MAP sector 780 is not a MAP exchange is performed is not present. MAP 교환 동작 중에, 삭제 블록을 갖는 EBB(774)를 공급하는 MAP 섹터는 소스 MAP 섹터(782)로서 고려된다. The MAP exchange operation, MAP sector feeding the EBB (774) having the erase block is considered as a source MAP sector 782. 역으로, CBB(776)로부터 삭제 블록을 수용하는 MAP 섹터는 착신 MAP 섹터(784)로서 고려된다. Conversely, MAP sector for receiving the removed block from the CBB (776) is considered as a destination MAP sector 784. 단지 하나의 MAP 섹터가 존재하면, 이는 이하에 설명하는 바와 같이 소스 및 착신 MAP 섹터로서 작용한다. If only one MAP sector exists, it acts as the source and destination MAP sector, as explained below.

이하의 동작이 MAP 교환 중에 수행된다. The following operations are performed in the exchange MAP.

1. 소스 MAP 섹터가 증분 포인터에 기초하여 선택된다. 1. The source MAP sector is selected based on an incremental pointer.

2. MAP 섹터의 착신처가 소스 MAP 섹터 내에 있지 않은 제1 CBB 엔트리 내의 블록 어드레스에 기초하여 선택된다. 2 is selected based on the block address in the first CBB entry that is not in the 1 forwarding destination of the MAP source sector MAP sector.

3. MAP 섹터의 착신처가 CBB 내의 관련 엔트리에 의해 규정된 바와 같이 갱신되고, 엔트리가 CBB로부터 제거된다. 3. being updated, as specified by the related entries in the forwarding destination of the MAP sectors CBB, the entry is removed from the CBB.

4. 갱신된 착신 MAP 섹터는 어떠한 별개의 소스 MAP 섹터도 존재하지 않는 한, MAP 블록에 기록된다. 4. The updated destination MAP sector is written to one, MAP block does not exist, no separate source MAP sector.

5. CBB의 관련 엔트리에 의해 규정된 바와 같이, 소스 MAP 섹터가 갱신되고, CBB로부터 제거된다. 5 as defined by relevant entries in the CBB, the source MAP sector is updated, and removed from the CBB.

6. CBB내의 잔여 엔트리가 EBB에 첨부된다. 6. Remaining entries in the CBB are appended to the EBB.

7. 소스 MAP 섹터로부터의 규정된 삭제 블록 어드레스로 EBB가 가능한 정도로 채워진다. 7. The EBB is filled so possible to delete the specified block address, from the source MAP sector.

8. 갱신된 소스 MAP 섹터가 MAP 블록에 기록된다. 8. The updated source MAP sector is written in the MAP block.

9. 갱신된 EBM 섹터가 MAP 블록에 기록된다. 9. The updated EBM sector is written in the MAP block.

리스트 관리 List Management

도 18은 다양한 리스트 사이에서 제어 및 디렉토리 정보의 분포 및 흐름을 도시한다. Figure 18 shows the distribution and flow of the control and directory information between the various lists. 편의상, 도 18에 [A] 내지 [O]로서 표시된 리스트의 엘리먼트 사이에서 엔트리를 이동시키기 위한, 또는, 엔트리의 속성을 변경하기 위한 동작은 하기와 같다. For convenience, or for moving the entries between elements of the displayed list as [A] to [O] 18, the operation to change the attributes of entries is as follows.

[A] 삭제 블록이 호스트 데이터를 위한 갱신 블록으로서 할당될 때, ABL내의 그 엔트리의 속성은 삭제된 ABL 블록으로부터 개방 갱신 블록으로 변경된다. [A] When the block is deleted to be allocated as an update block for host data, the attributes of its entry in the ABL are changed to an open update block from a deleted block ABL.

[B] 제어 블록으로서 삭제 블록이 할당될 때, ABL내의 그 엔트리가 제거된다. [B] When the erase block as a control block assignment, its entry in the ABL is removed.

[C] ABL 엔트리가 개방 갱신 블록 속성으로 생성될 때, 연계된 원본 블록 필드는 갱신된 논리 그룹을 위한 원본 메타블록 어드레스를 레코드하기 위해 엔트리에 추가된다. [C] When an ABL entry created by the open update block properties, the associated original block field is added to the entry to record the original metablock address for the updated logical groups.

[D] 갱신 블록이 폐쇄될 때, ABL내의 그 엔트리의 속성이 개방 갱신 블록으로부터 폐쇄 갱신 블록으로 변경된다. [D] When an update block is closed, is changed to a closed update block from the entry open update block attribute in the ABL.

[E] 갱신 블록이 폐쇄될 때, 그 연계된 원본 블록은 삭제되고, ABL내의 그 엔트리내의 연계된 원본 블록의 속성은 삭제된 원본 블록으로 변경된다. [E] When an update block is closed, its associated original block is deleted, the original properties of the block linkage in its entry in the ABL are changed to remove the original block.

[F] ABL 충전 동작 동안, 동일 제어 기록 동작 동안 GAT내에서 그 어드레스가 갱신된 임의의 폐쇄된 갱신 블록이 그 엔트리가 ABL로부터 그 엔트리가 제거된다. [F] ABL during the filling operation, the same control write operation, the address is updated, any closed update block in the GAT during the entry is removed from the ABL is the entry.

[G] ABL 충전 작업 동안, 폐쇄된 갱신 블록을 위한 엔트리가 ABL로부터 제거될 때, 그 연계된 삭제된 원본 블록을 위한 엔트리가 CBL로 이동된다. [G] When the charging operation for the ABL, an entry for a closed update block is removed from the ABL, an entry for the source block that deletes the link is moved to the CBL.

[H] 제어 블록이 삭제될 때, 그를 위한 엔트리가 CBL에 추가된다. [H] When a control block is deleted, the entry therefor is added to the CBL.

[I] ABL 충전 동작 동안, 삭제 블록 엔트리가 EBB 리스트로부터 ABL로 이동되고, 삭제된 ABL 블록의 속성이 주어진다. [I] ABL during the filling operation, are moved to the ABL from the EBB entry is deleted block list, and is given the properties of the deleted block ABL.

[J] ABL 충전 동작 동안, 모든 관련 ABL 엔트리들의 변경 이후, ABL내의 블록 어드레스는 ABB 리스트내의 블록 어드레스를 교체한다. For [J] ABL fill operation, since the modification of all relevant ABL entries, block addresses in the ABL replace the block addresses in the ABB list.

[K] 제어 기록 동안의 ABL 충전 작업과 동시에, CBL내의 삭제 블록을 위한 엔트리가 CBB 리스트로 이동된다. [K] at the same time as the ABL fill operation during a control record, the entries for the deleted blocks in the CBL are moved to the CBB list.

[L] MAP 교환 작업 동안, 모든 관련 엔트리가 CBB 리스트로부터 MAP 착신 섹터로 이동된다. [L] for a MAP exchange operation, all relevant entries are moved from the CBB list to the MAP destination sector.

[M] MAP 교환 동작 동안, 모든 관련 엔트리가 CBB 리스트로부터 MAP 소스 섹터로 이동된다. For [M] MAP exchange operation, all relevant entries are moved from the CBB list to the MAP source sector.

[N] MAP 교환 동작 동안 [L]과 [M]에 후속하여, 모든 잔여 엔트리가 CBB 리스트로부터 EBB 리스트로 이동된다. [N] Subsequent to [L] and [M] during MAP exchange operation, all remaining entries are moved to the EBB list from the CBB list.

[O] MAP 교환 동작 동안, [N]에 후속하여, [M]내에 이동된 것들 이외의 엔트리가 가능한 경우, EBB 리스트를 채우기 위해 MAP 소스 섹터로부터 이동된다. [O] for a MAP exchange operation, subsequent to [N], if the entries other than those moved in [M] as possible, are moved from the MAP source sector to fill the EBB list.

논리 대 물리 어드레스 변환 Logical-to-physical address conversion

플래시 메모리내에 논리 섹터의 물리 위치를 배치하기 위해, 도 2에 도시된 논리 대 물리 어드레스 변환 모듈(140)은 논리 대 물리 어드레스 변환을 수행한다. To place a physical position of the logical sector in a flash memory, a logical-to-physical address translation module 140 shown in Fig. 2 performs a logical-to-physical address conversion. 최근 갱신된 논리 그룹을 제외하고, 플래시 메모리(200)내에 존재하는 그룹 어드레스 테이블(GAT) 또는 컨트롤러 램(130)내의 GAT 캐시를 사용하여 수행될 수 있다. It may be, except for the recently updated logical groups, performed with the GAT cache in the flash memory group address table (GAT) or RAM controller present in the 200 (130). 최근 갱신된 논리 그룹을 위한 어드레스 변환은 컨트롤러 램(130)내에 주로 존재하 는 갱신 블록을 위한 참조 어드레스 리스트를 필요로 한다. Address translations for the recently updated logical groups are mainly present in the controller RAM 130 requires a reference address lists for update blocks. 논리 섹터 어드레스를 위한 논리 대 물리 어드레스 변환을 위한 프로세스는 따라서, 섹터가 그 내부에 위치되어 있는 논리 그룹과 연계된 블록의 유형에 의존한다. Process for the logical-to-physical address translation for a logical sector address is therefore dependent on the type of the sector is associated with a logical group that is located at the inner block. 블록의 유형은 : 완전 블록, 순차 데이터 갱신 블록, 카오틱 데이터 갱신 블록, 폐쇄 데이터 갱신 블록이다. Types of blocks are: a full block, sequential data update block, chaotic data update block, closed data update block.

도 19는 논리 대 물리 어드레스 변환의 프로세스를 도시하는 플로우차트이다. 19 is a flowchart showing the process of logical to physical address translation. 실질적으로, 대응 메타블록 및 물리 섹터는 개방 갱신 블록 리스트 및 폐쇄 갱신 블록 리스트 같은 다양한 갱신 디렉토리를 먼저 참조하도록 논리 섹터 어드레스를 사용함으로써 배치된다. In practice, the corresponding metablock and the physical sector is arranged, by using the logical sector address first to refer to the various update directories such as the open update block list and the close update block list. 연계된 메타블록이 갱신 프로세스의 일부가 아닌 경우, 이때, 디렉토리 정보는 GAT에 의해 제공된다. If the associated metablock is not part of the update process, wherein, the directory information is provided by the GAT. 논리 대 물리 어드레스 변환은 하기의 단계를 포함한다: Logical-to-physical address translation includes the steps of:

단계 800 : 논리 섹터 어드레스가 주어진다. Step 800: given a logical sector address.

단계 810 : 컨트롤러 램내의 개방 갱신 블록 리스트(614)내의 주어진 논리 어드레스를 참조한다(도 15 및 도 18 참조). Step 810: refer to a given logical address in the open update block list 614 in the controller RAM (see Figs. 15 and 18). 참조에 실패하면, 단계 820으로 진행하고, 그렇지 않으면, 단계 830으로 진행한다. If you fail to see, it does, otherwise proceeds to step 820, and proceeds to step 830.

단계 820 : 폐쇄된 갱신 블록 리스트(616)내의 주어진 논리 어드레스를 참조한다. Step 820: refer to a given logical address in the closed update block list 616. 참조에 실패하면, 주어진 논리 어드레스는 임의의 갱신 프로세스의 일부가 아니며, GAT 어드레스 변환을 위해 단계 870으로 진행한다. Referring fails, the given logical address is not part of any update process, and the process proceeds to step 870 for GAT address translation. 그렇지 않으면, 폐쇄된 갱신 블록 어드레스 변환을 위해 단계 860으로 진행한다. If not, the process proceeds to step 860 for a closed update block address translation.

단계 830 : 주어진 논리 어드레스를 포함하는 갱신 블록이 순차적인 경우, 순차 갱신 블록 어드레스 변환을 위해 단계 840으로 진행한다. Step 830: proceed as if the update block containing the given logical address sequence, step 840 for sequential update block address translation. 그렇지 않으면, 카오틱 갱신 블록 어드레스 변환을 위해 단계 850으로 진행한다. Otherwise, Chaotic update proceeds to step 850 for the block address translation.

단계 840 : 순차 갱신 블록 어드레스 변환을 사용하여 메타블록 어드레스를 획득한다. Step 840: obtains the metablock address using sequential update block address translation. 단계 880으로 진행한다. It proceeds to step 880.

단계 850 : 카오틱 갱신 블록 어드레스 변환을 사용하여 메타블록 어드레스를 획득한다. Step 850: Use the chaotic update block address translation to obtain the metablock address. 단계 880으로 진행한다. It proceeds to step 880.

단계 860 : 폐쇄된 갱신 블록 어드레스 변환을 사용하여 메타블록 어드레스를 획득한다. Step 860: the closed update block address using the conversion to obtain the metablock address. 단계 880으로 진행한다. It proceeds to step 880.

단계 870 : 그룹 어드레스 테이블(GAT) 변환을 사용하여 메타블록 어드레스를 획득한다. Step 870: using the group address table (GAT) conversion to obtain the metablock address. 단계 880으로 진행한다. It proceeds to step 880.

단계 880 : 메타블록 어드레스를 물리 어드레스로 변환한다. Step 880: convert the metablock address into a physical address. 변환 방법은 메타블록이 재링크되었는지 여부에 의존한다. Transformation method depends on whether the metablock is re-linked.

단계 890 : 물리 섹터 어드레스가 얻어진다. Step 890: the physical sector address is obtained.

다양한 어드레스 변환 프로세스는 하기와 같이 보다 상세히 설명된다. Various address translation processes are described in more detail as follows.

순차 갱신 블록 어드레스 변환(단계 840) Sequential update block address translation (step 840)

순차 갱신 블록과 연계된 논리 그룹내의 타겟 논리 섹터 어드레스를 위한 어드레스 변환은 개방 갱신 블록 리스트(614)(도 15 및 도 18)내의 정보로부터 직접적으로 하기와 같이 달성될 수 있다. The address translation for a target logical sector address in a logical group associated with a sequential update block can be accomplished as follows directly from information in the open update block list 614 (FIGS. 15 and 18).

1. 리스트내의 "페이지 태그" 및 기록된 섹터 수" 필드로부터 타겟 논리 섹터가 갱신 블록내에 위치되어 있는지 또는 그 연계된 원본 블록내에 위치되어 있는 지 여부가 판정된다. 1. whether there is located within the "page tag" and the recorded number of sectors "that the target logical sector from the field is located in the update block or its associated original block in the list is determined.

2. 타겟 논리 섹터에 적합한 메타블록 어드레스가 리스트로부터 판독된다. 2. The metablock address appropriate to the target logical sector is read from the list.

3. 메타블록내의 섹터 어드레스가 적절한 "페이지 태그" 필드로부터 결정된다. 3. The sector address within the metablock is determined from a suitable "page tag" field.

카오틱 갱신 블록 어드레스 변환(단계 850) Chaotic update block address translation (step 850)

카오틱 갱신 블록과 연계된 논리 그룹내의 타겟 논리 섹터 어드레스를 위한 어드레스 변환 시퀀스는 하기와 같다. The address translation sequence for a target logical sector address in a logical group associated with the chaotic update block is as follows.

1. 섹터가 최근에 기록된 섹터라는 것이 램내의 카오틱 섹터로부터 결정되는 경우, 어드레스 변환은 이 리스트내의 그 위치로부터 직접적으로 달성된다. 1. If the sector is determined from the chaotic sector within that of the last sector recorded in the RAM, an address conversion may be accomplished directly from its position in this list.

2. CBI 블록내의 가장 최근에 기록된 섹터가 그 카오틱 블록 데이터 필드내에 타겟 논리 섹터 어드레스에 관련한 카오틱 갱신 블록의 물리 어드레스를 포함한다. 2 includes a physical address of the last sector of its chaotic block Chaotic update block associated with the target logical sector address in the data field is written to in the CBI block. 또한, 이는 그 간접 섹터 인덱스 필드내에, 이 카오틱 갱신 블록에 관련한 최종 기록 CBI 섹터의 CBI 블록내의 오프셋을 포함한다(도 16a 내지 도 16e 참조). Also, which it contains the offset within the within the indirect sector index field, CBI block of the last written CBI sector relating to this chaotic update block (see Fig. 16a to Fig. 16e).

3. 이들 필드내의 정보는 램내에 캐시되어 후속 어드레스 변환 동안 섹터를 판독할 필요성을 제거한다. 3. The information in these fields and eliminates the need to read the sector during subsequent address translation is cached in the RAM.

4. 단계 3에서 간접 섹터 인덱스 필드에 의해 식별된 CBI 섹터가 판독된다. 4. The CBI sector identified by the indirect sector index field at step 3 is read.

5. 가장 이전에 억세스된 카오틱 갱신 서브그룹을 위한 직접 섹터 인덱스 필드가 램에 캐시되어, 동일 카오틱 갱신 블록에 대한 반복적 억세스를 위한 단계 4에서의 판독을 수행할 필요성을 제거한다. 5. is the most updated old Chaotic accesses the direct sector index field for the sub-group cache in RAM, eliminating the need to perform the read at step 4 for repeated accesses to the same chaotic update block.

6. 단계 4 또는 단계 4에서 판독된 직접 섹터 인덱스 필드는 순차적으로, 타 겟 논리 섹터 어드레스를 포함하는 논리 서브그룹에 관련한 CBI 섹터를 나타낸다. 6. Step 4 or the direct sector index field read at step 4, indicates the CBI sector relating to the logical sub-group containing Subsequently, other nuggets logical sector address.

7. 타겟 논리 섹터 어드레스를 위한 카오틱 블록 인덱스 엔트리가 단계 6에서 식별된 CBI 섹터로부터 판독된다. 7. The chaotic block index entry for the target logical sector address is read from the CBI sector identified in step 6.

8. 가장 최근에 판독된 카오틱 블록 인덱스 필드가 컨트롤러 램에 캐시되어 동일 논리 서브 그룹에 대한 반복된 억세스를 위해 단계 4 및 단계 7에서의 판독을 수행할 필요성을 제거할 수 있다. 8. The most recently read chaotic block index field to be cached in controller RAM can eliminate the need to perform the reads at step 4 and step 7 for repeated accesses to the same logical sub-group.

9. 카오틱 블록 인덱스 엔트리는 카오틱 갱신 블록 또는 연계된 원본 블록 중 어느 하나내의 타겟 논리 섹터의 위치를 정의한다. 9. The chaotic block index entry defines the location of the target logical sector either in the chaotic update block or in the associated original block. 타겟 논리 섹터의 유효한 사본이 원본 블록내에 있는 경우, 이는 원본 메타블록 및 페이지 태그 정보의 사용에 의해 배치된다. If a valid copy of the target logical sector in the original block, which is placed by the original metablock and page using the tag information.

폐쇄된 갱신 블록 어드레스 변환(단계 860) The closed update block address translation (step 860)

폐쇄된 갱신 블록과 연계된 논리 그룹내의 타겟 논리 섹터 어드레스를 위한 어드레스 변환은 하기와 같이, 폐쇄된 블록 갱신 리스트(도 18 참조)내의 정보로부터 직접적으로 달성된다. As to the address for the target logical sector address in a logical group associated with a closed update block is converted, it is achieved directly from the information in the closed block update list (see Fig. 18).

1. 타겟 논리 그룹에 할당된 메타블록 어드레스가 리스트로부터 판독된다. 1. The metablock address assigned to the target logical group is read from the list.

2. 메타블록내의 섹터 어드레스가 리스트내의 "페이지 태그" 필드로부터 결정된다. 2. The sector address within the metablock is determined from the "page tag" field in the list.

GAT 어드레스 변환(단계 870) GAT Address Translation (step 870)

논리적 그룹이 개방 또는 폐쇄 블록 갱신 리스트 중 어느 하나에 의해 참조되지 않는 경우, 그 GAT내의 엔트리는 유효하다. If a logical group is not referenced by either the open or closed block update lists, its entry in the GAT is valid. GAT에 의해 참조된 논리적 그룹내 의 타겟 논리적 섹터 어드레스를 위한 어드레스 변환 시퀀스는 하기와 같다. The address translation sequence for a target logical sector address in a logical group referenced by the GAT is as follows.

1. 타겟 논리적 그룹을 위한 엔트리가 GAT 캐시내에 포함되어 있는 경우를 결정하기 위해, 램내의 가용 GAT 캐시의 범위가 평가된다. 1. The scope of the assessment is available GAT caches in order to determine if there is an entry for the logical target groups included in the GAT cache RAM.

2. 단계 1에서, 타겟 논리적 그룹이 발견되는 경우, GAT 캐시는 메타블록 어드레스 및 페이지 태그 양자 모두를 포함하는 전체 그룹 어드레스 정보를 포함하며, 타겟 논리적 섹터 어드레스의 변환을 가능하게 한다. 2. In step 1, if the target logical group is found, the GAT cache contains full group address information, including both metablock address and page tag, allowing the conversion of the target logical sector address.

3. 타겟 어드레스가 GAT 캐시내에 있지 않는 경우, 타겟 논리적 그룹 어드레스에 관한 GAT 섹터의 위치를 식별하기 위해, 타겟 GAT 블록을 위해 GAT 인덱스가 판독되어야만 한다. 3. If the target address is not within a GAT cache, to identify the location of the GAT sector relating to the target logical group address, the GAT index must be read for the target GAT block.

4. 최종 억세스된 GAT 블록을 위한 GAT 인덱스가 컨트롤러 램 내에 유지되고, 플래시 메모리로부터 섹터를 판독할 필요 없이 억세스될 수 있다. 4. The GAT index for the last accessed GAT block is held in the controller RAM, it can be accessed without having to read a sector from flash memory.

5. 모든 GAT 블록을 위한 메타블록 어드레스의 리스트 및 각 GAT 블록내에 기록된 섹터의 수가 컨트롤러 램 내에 유지된다. 5. The number of sectors written in each GAT block and metablock list of addresses for every GAT block is held in controller RAM. 필요한 GAT 인덱스가 단계 4에서 입수할 수 없는 경우, 따라서, 이는 플래시 메모리로부터 즉시 판독될 수 있다. If required GAT index is not available at step 4, therefore, it may be immediately read out from the flash memory.

6. 타겟 논리적 그룹 어드레스에 관한 GAT 섹터가 단계 4 또는 단계 6에서 얻어진 GAT 인덱스에 의해 규정된 GAT 블록내의 섹터 위치로부터 판독된다. 6 is read from the sector location in the GAT block defined by the GAT index is GAT sector relating to the target logical group address obtained in Step 4 or Step 6. GAT 캐시는 타겟 엔트리를 포함하는 섹터의 세분부와 함께 갱신된다. GAT cache is updated with the three minutes portion of the sector including the target entry.

7. 타겟 섹터 어드레스가 타겟 GAT 엔트리내의 "페이지 태그" 필드 및 메타블록 어드레스로부터 얻어진다. 7. The target sector address is obtained from the "page tag" field and the metablock address within the target GAT entry.

메타블록 대 물리적 어드레스 변환(단계 880) Metablock to physical address translation (step 880)

메타블록 어드레스와 연계된 플래그가 메타블록이 재링크되었다는 것을 나타내는 경우, 관련 LT 섹터가 BLM 블록으로부터 판독되어, 타겟 섹터 어드레스를 위한 삭제 블록 어드레스를 결정한다. If the flag associated with the metablock address indicates that the metablock is re-linked, the relevant LT sector is read from the BLM block, to determine the erase block address for the target sector address. 그렇지 않으면, 삭제 블록 어드레스는 메타블록 어드레스로부터 직접적으로 결정된다. Otherwise, the erase block address is determined directly from the metablock address.

제어 데이터 관리 Control Data Management

도 10은 메모리 관리의 동작 과정에서 제어 데이터 구조상에 수행되는 동작의 계층체계를 예시한다. Figure 10 illustrates the layer system of the operations performed in the control data structure on the operation of the memory management. 데이터 갱신 관리 동작은 램내에 존재하는 다양한 리스트상에 작용한다. Data update management operations are exerted on the various lists that exist within the RAM. 제어 기록 동작은 플래시 메모리내의 전용 블록 및 다양한 제어 데이터 섹터상에 작용하며, 또한, 램내의 리스트와 데이터를 교환한다. Control write operation acts on a private block, and various control data sectors in the flash memory, and also exchanges data with a list in the RAM.

데이터 갱신 관리 동작은 ABL, CBL 및 카오틱 섹터 리스트상에, 램내에서 수행된다. Data update management operations are performed in the ABL, CBL and the chaotic sector list in phase, raemnae. ABL은 삭제된 블록이 갱신 블록 또는 제어 블록으로서 할당될 때, 또는, 갱신 블록이 폐쇄될 때 갱신된다. ABL is updated to update the deleted block when assigned as a block or a control block, or, when a closed update block. CBL은 제어 블록이 삭제될 때, 또는, 폐쇄된 갱신 블록을 위한 엔트리가 GAT에 기록될 때 갱신된다. CBL is updated when a control block is deleted, or, when for a closed update block is written to the GAT entries. 갱신 카오틱 섹터 리스트는 섹터가 카오틱 갱신 블록에 기록될 때 갱신된다. Update chaotic sector list is updated when a sector is written to a chaotic update block.

제어 기록 동작은 필요시, 플래시 메모리, 그리고, 램 내의 제어 데이터 구조를 지원하는 다른 결과적 갱신과 함께, 램 내의 제어 데이터 구조로부터의 정보가 플래시 메모리내의 제어 데이터 구조에 기록되게 한다. Controlling a recording operation is to be written to the demand, a flash memory, and the other with the update result, the control data structure in flash memory, information from control data structures in RAM to support the control data structure in the RAM. 이는 ABL이 갱신 블록으로서 할당될 삭제된 블록을 위한 엔트리를 더 이상 포함하지 않을 때, 또는 CBI 블록이 재기록될 때 중 어느 하나의 경우에 트리거된다. This is triggered in the event of any of these when the ABL, or CBI block when it no longer contains an entry for a deleted block is allocated as an update block is rewritten.

양호한 실시예에서, ABL 충전 동작, CBL 비움 동작 및 EBM 섹터 갱신 동작이 모든 제어 기록 동작 동안 수행된다. In a preferred embodiment, the ABL fill operation, CBL emptying operation and the EBM sector update operation are performed during every control write operation. EBM 섹터를 포함하는 MAP 블록이 가득차있을 때, 유효 EBM 및MAP 섹터가 할당된 삭제된 블록에 복사되고, 이전 MAP 블록이 삭제된다. When the MAP block containing the EBM sector there is full, is copied to the deleted block that is valid EBM and MAP sectors allocated, the previous MAP block is erased.

모든 제어 기록 동작 동안, 하나의 GAT 섹터가 기록되고, 폐쇄된 갱신 블록 리스트가 따라서 변경된다. While all of the control write operation, one GAT sector is written, the closed update block list is changed accordingly. GAT 블록이 가득차게 될 때, GAT 재기록 동작이 수행된다. GAT time the chilled block is full, a GAT rewrite operation is performed.

특정 카오틱 섹터 기록 동작 이후, CBI 섹터가 전술한 바와 같이 기록된다. After a certain chaotic sector write operations, the CBI sector is written, as described above. CBI 블록이 가득차게 될 때, 유효 CBI 섹터가 할당된 삭제 블록에 복사되고, 이전 CBI 블록이 삭제된다. When the CBI block becomes full, valid CBI is copied to the deleted block is assigned to the sector, the previous CBI block is erased.

EBM 섹터내의 EBM 리스트내에 더 이상 추가적인 삭제된 블록 엔트리가 존재하지 않을 때, 전술한 바와 같이, MAP 교환 동작이 수행된다. EBM when there is not any more further deleted block list entry existing in EBM in the sector, is performed, MAP exchange operation, as described above.

MAP 블록의 현재 어드레스를 레코드하는 MAP 어드레스(MAPA) 섹터는 MAP 블록이 재기록되는 각 경우에 전용 MAPA 블록에 기록된다. MAP Address (MAPA) sector, which records the current address of the MAP block, is written in a dedicated MAPA block on each if the MAP block is rewritten. MAPA 블록이 가득차게 될 때, 유효 MAPA 섹터가 할당된 삭제된 블록에 복사되고, 이전 MAPA 블록이 삭제된다. When the MAPA block becomes full, it is copied into the erase block is the valid MAPA sector is assigned, the previous MAPA block is erased.

MAPA 블록이 재기록되는 각 경우에, 현재 부트 블록내에 부트 섹터가 기록된다. At each occurrence is MAPA block is rewritten, the boot sector is currently recorded in the boot block. 부트 블록이 가득차게 될 때, 유효 부트 섹터가 부트 블록의 현재 버전으로부터 백업 버전으로 복사되고, 이 백업 버전은 그후 현재 버전이 된다. When the boot block becomes full, the valid Boot sector is copied to the backup versions from the current version of the boot block, then the backup version is the current version. 이전 현재 버전은 삭제되며, 백업 버전이 되고, 유효 부트 섹터가 이에 다시 기록된다. Before the current version will be removed, and the backup version, and the valid Boot sector is written back thereto.

다수개의 메모리 평면들 상에 분산되는 메모리용 정렬 Arranged for the memory to be dispersed in a plurality of memory planes

도4, 도 5A 내지5C를 참조하여 이전에 기술한 바와 같이, 성능을 향상시키기 위하여 다수개의 메모리 평면들을 병렬로 작용되도록 한다. 4, with reference to FIG. 5A to 5C will be to act in parallel with a plurality of memory planes so as to improve the performance, as described previously. 기본적으로 각각의 평면은 읽기의 부분으로써 센스 증폭기의 세트와, 평면을 스판(span)하는 기능을 하는 메모리 셀들의 해당하는 페이지를 병렬로 서비스하는 프로그램 회로들을 구비하고 있다. And basically each plane as part of the read circuit having a program to service the page of memory cells to a set and a function to the flat span (span) of the sense amplifier in parallel. 다수개의 평면들이 상호 결합되면, 다수개의 페이지들이 상호 병렬로 작용하게 되어, 보다 우수한 성능을 얻을 수 있게 된다. If a plurality of planes are mutually coupled, is to act as a plurality of pages to be mutually parallel, it is possible to obtain better performance.

본 발명의 또 다른 양상에 따르면, 논리 유니트들이 병렬로 다수개의 평면들로 읽혀지고 또는 프로그램될 수 있도록, 삭제 가능한 블록들로 조직되고 그리고 다수개의 메모리 평면들로부터 구성되는 메모리 구성을 위하여, 주어진 메모리 평면에 저장된 제1 블록의 최초 논리 유니트가 갱신될 때, 최초의 상태와 동일한 평면 내에 갱신된 논리 유니트를 유지시킬 수 있는 구성을 만들어진다. According to still another aspect of the invention, so that logical units can be being read into a plurality of planes or a program in parallel, and organized into a possible deletion block and to the memory configuration which is comprised of a plurality of memory planes, a given memory when the first logical units of a first block stored in the plane to be updated, created a structure that can keep the updated logical unit in the same plane as the first state. 상기와 같은 구성은 갱신된 논리 유니트들을 제2 블록의 사용 가능한 다음 위치, 그리너 동일한 평면 내에 기록하여 성취된다. Configuring as described above is next available location of a second block of the updated logical units, it is achieved by recording so too in the same plane. 바람직하게는, 논리 유니트는 소정의 논리 유니트들이 센싱 회로의 동일한 세트에 의하여 서비스될 수 있도록, 다른 버전들로서 평면 상의 동일한 옵셋 위치로 저장된다. Preferably, the logic unit to the predetermined logic unit may be serviced by the same set of sensing circuits, are stored in the same offset location on the plane as a different version.

바람직한 실시예에 있어서, 최종 프로그램 메모리 유니트로부터 사용 가능한 다음 평면 정렬 메모리 유니트까지의 상호 간섭 갭들은 논리 유니트들의 현재 버전에 다라서 패딩된다. In a preferred embodiment, the interference gap in the next plane-aligned memory unit is available from the last programmed memory unit are padded because all the current versions of logical units. 상기 패딩은 최종 프로그램된 논리 유니트로터 논리적으로 뒤에 이어지는 논리 유니트들의 현재 버전들과, 그리고 사용 가능한 다음 평면 정렬 메모리 유니트 내에 저장된 논리 유니트로부터 논리적으로 선행하는 논리 유니트의 현재 버전들로 상기 갭을 채움에 따라 성취된다. The padding is to fill the gap with current versions of the logical unit that follows the rotor logical end-programmed logic unit and, and the next available current versions of the logical units preceding logically from the logical unit stored in the plane-aligned memory unit, depending is achieved.

이러한 방법으로, 논리 유니트의 모든 버전들은 쓰레기 수집 작용에 있어서, 논리 유니트의 최근 버전이 다른 평면으로부터 인출(성능 감소)되지 않도록 최신의 옵셋으로 동일한 평면에서 유지된다. All the In this way, the logic unit versions are in the garbage collection operation, the latest version of a logical unit are maintained in the same plane as the latest offset from being drawn out (reducing performance) from the other plane. 바람직한 실시예에 있어서, 각각의 평면을 가로지르는 각각의 메모리 유니트는 최근의 버전들로 갱신되거나 또는 패딩된다. In a preferred embodiment, each memory unit across each plane is updated to the latest version, or padding. 따라서, 다수개의 평면들을 가로지르는 병렬 작용에 있어서, 논리 유니트는 추가적인 재정렬을 필요로 하지 않고 논리적인 순차 순서로 구성된다. Thus, in a parallel operation across the multiple planes, the logical units do not require additional realignment consists of a logical sequence.

이와 같은 구조는 논리 그룹의 논리 유니트들의 최근 버전의 평면상의 재정렬을 가능하게 하고, 서로 다른 메모리 평면들로부터 최근의 버전들을 수집하는 것을 피하여 혼돈 블록의 통합에 필요한 시간을 줄이는 장점이 있다. This structure has the advantage of avoiding that enables reordering on the current version of logical units of the logical group plane and collects latest version of each from the other memory plane to reduce the time required for integration of the chaotic block. 그리고, 이와 같은 것은 호스트 인터페이스용 성능 스펙이 메모리 시스템에 의하여 섹터 쓰기 작용의 완료에 대한 최대 지연을 가져오는 구성에 있어서 장점적이다. And, it is this is an advantage ever the structural performance specification for the host interface to get the maximum delay for the completion of a sector write operation by the memory system.

도21는 다수개의 메모리 평면들로부터 구성되는 메모리 어레이를 도시한다. Figure 21 illustrates a memory array constituted from multiple memory planes. 메모리 평면들은 동일한 메모리 칩으로부터 구성될 수도 있으며, 그리고 다수개의 메모리 칩들로부터 구성될 수도 있다. Memory planes may be comprised of, and may be configured from the same memory chip, and a plurality of memory chips. 각각의 평면(910)은 메모리 셀들의 페이지(914)를 병렬로 서비스하기 위하여 읽기 및 프로그램 회로(912)의 자체 세트를 구비하고 있다. Each plane 910 and a read and program its own set of circuits 912 to service a page 914 of memory cells in parallel. 일반적인 특징으로 상실하지 않고, 상기 메모리 어레이는 병렬로 작용하는 4개의 평면들을 구비한다. Without losing the general characteristics, the memory array having four planes which act in parallel.

일반적으로, 논리 유니트는 호스트 시스템의 의하여 접근되는 최소 유니트이다. In general, the logic unit is the minimum unit that is accessible by the host computer. 논리 유니트는 512 바이트의 크기를 갖는 섹터이다. A logical unit is a sector having a size of 512 bytes. 페이지는 평면 상에 구성 되는 병렬 읽기 또는 프로그램의 최대 유니트이다. Page is a maximum unit of parallel read or program that is configured in a plane. 논리 페이지는 한개 또는 그 이상의 논리 유니트들을 구비하고 있다. Logical page is provided with the one or more logical units. 따라서 다수개의 평면들을 조합할 때는, 병렬 읽기 또는 프로그램의 최대 유니트는 메모리 셀들의 메타페이지로 정의될 수 있으며, 상기 메타페이지는 다수개의 평면들 각각으로부터의 페이지로 구성된다. Therefore, when combining multiple planes, a maximum unit of parallel read or program may be defined as a metapage of memory cells, the metapage is constituted by a page from each of the plurality of planes. 예를 들면, MP 0 와 같은 메타페이지는 평면 P0, P1, P2 및P3 즉 4개의 페이지를 가지며, LP 0 , LP 1 , LP 2 및 LP 3 을 병렬로 저정하게 된다. For example, a metapage such as MP 0 is the plane P0, P1, P2 and P3 that is has four pages, and that the cleansed LP 0, LP 1, LP 2 and LP 3 in parallel. 따라서, 메모리의 읽기 및 쓰기 성능은 한개의 평면 상에서 작용하는 것과 비교하여, 4배 증가하게 된다. Thus, the read and write performance of the memory is compared to that which acts on one of the plane, it is increased four times.

메모리 어레이는 MB 0 , ..., MB j 와 같은 메타블로들로 조직되며, 각각의 메타 블록 내의 모든 메모리 셀들은 유니트로서 함께 삭제 가능하다. The memory array MB 0, ..., is organized into metadata, such as a blow-MB j, all memory cells within each metablock are possible deleted as a unit. MB0와 같은 메타블록은 LP 0 -LO N-1 과 같은 논리 페이지(914)를 저장하기 위하여 다수개의 메모리 위치들로부터 구성된다. Metablock, such as MB0 is configured from a plurality of memory locations for storing logical pages 914, such as LP 0 -LO N-1. 메타블록 내의 논리 페이지들은 메타블록에 채워지는 순서에 따라 소정의 순서로 4개의 평면 P0, P1, P2 및P3 상에 분산된다. Logical page in a metablock are in a predetermined order according to the order filled in the metablock dispersed on the four planes P0, P1, P2 and P3. 예를 들면, 논리 페이지들이 논리적인 순차 순서에 따라 채워질때, 평면들은 제1 평면에는 제1 페이지가, 그리고 제2 평면에는 제2 페이지와 같은 순서로 채워지게 된다. For example, when the logical pages are filled in a logical sequence, include a first flat plane, it becomes the first page, and the second plane is filled with the same order as the second page. 최종 평면이 완료되면, 채우기 작용은 다음 메타 페이지 내의 제1 평면으로부터 주기적으로 다시 시작한다. When the last plane is completed, the filling operation begins periodically again from the first plane in the next metapage. 이와 같은 방법으로, 논리 페이지들의 연속적인 작용은 모든 평면들이 병렬로 작용할 때 병렬로 접근 가능하게 된다. In this way, the continuous action of the logical page is to be accessed in parallel when all planes are acting in parallel.

일반적으로, 만약 병렬로 작용하는 W 평면이 존재하고, 그 메타 블록은 논리적 순차 순서에 의하여 채워진다면, 메타블록 내의 k-번째 논리 페이지는 평면 x상 에 존재하게 되며, 여기서 x=kMOD W이다. In general, if there are W planes which act in parallel, the metablock if filled by a logical sequence, in the metablock k- th logical page is present on the plane x, where x = a kMOD W. 예를 들면, 4개의 평면들을 갖는 것으로 가정한다면, W=4이며, 그리고 블록을 논리 순차 순서로 채울 때, 5번째의 논리 페이지 LP5는 5 MOD 4로 정의되는 평면 내에 위치하게 되며, 상기의 구성은 도21의 평면(1)에 해당한다. As an example, if we assume as having four planes, W = 4, and, and when filling the block in logical sequential order, the fifth logical page LP5 will be located in a plane defined by 5 MOD 4, the configuration of the It is equivalent to the plane (1) of Fig.

각각의 메모리 평면에 있어서 메모리 작용들은 읽기/쓰기 회로(912)의 세트에 의하여 수행된다. For each memory plane memory acts are performed by a set of read / write circuit 912. 읽기/쓰기 회로의 각각의 내부 또는 외부에 존재하는 데이터는 제어기(920)의 제어에 따라 데이터 버스(930)를 통하여 전송된다. Read / write each of the data present in or out of the circuit are transferred via the data bus 930 under the control of the controller 920. 제어기(920)의 버퍼(922)는 데이터 버스(930)를 통하여 데이터의 이송을 버퍼하게 된다. Buffer 922 of the controller 920 is to buffer the transfer of data via the data bus 930. 특히, 제1 평면에서의 작용이 제2 평면에서의 데이터에 대한 전근을 필요로 한다면, 2-단계의 공정이 필요하게 된다. In particular, if the data needs to be transferred for action in a second plane at the first plane, it is necessary for the two-step process. 데이터는 첫째로 제어기에 의하여 제2 평면으로부터 판독되며, 데이터 버스 및 버퍼를 통하여 제1 평면으로 전송된다. Data by the controller in the first place is read from the second plane, which are transmitted in a first plane via the data bus and the buffer. 사실, 가장 바람직한 메모리 구조에 있어서, 두 개의 서로 다른 비트 라인들 사이의 데이터 전송은 데이터 버스(920)를 통하여 상호 교환되는 것을 필요로 한다. In fact, according to the preferred memory architecture, data transfer between two different bit lines requires that the exchange via the data bus 920.

최소한, 상기와 같은 작용은 한 개의 평면 내에서 읽기/쓰기 회로의 한 개의 세트로부터의 전송 및 다른 한 개의 평면에서의 읽기/쓰기 회로의 또 다른 세트로의 전송에 영향을 미친다. At a minimum, acting as described above affects the transmission of the transmission path and the other one plane read / write circuits in another set of from one set of read / write circuit in a single plane. 평면들이 서로 다른 칩으로부터 구성된다면, 아마도 칩들 간에 전송을 필요로 할 것이다. If the plane are constructed from different chips, probably it will require transfer between chips.

본 발명은 성능을 최대화하기 위하여 한 개의 평면에 의하여 또 다른 평면으로부터의 데이터 접근을 피할 수 있도록 하기 위하여, 메모리 블록 관리용 구조 및 구성을 제공한다. The present invention in order to be able to avoid data access from another plane by a single plane in order to maximize performance, and provides a structure and configuration for memory block management.

도21에 도시된 바와 같이, 메타페이지는 각각의 평면 당 한개씩, 다수개의 논리 페이지들로 구성된다. As shown in Figure 21, the metapage is composed of one set per each of the planes, a plurality of logical pages. 각각의 논리 페이지는 한 개 또는 그 이상의 논리 유니트들로 구성된다. Each logical page is composed of one or more logical units. 데이터가 평면을 가로질러 논리 유니트에 의하여 블록 내로 논리 유트에 기록되는 것과 같이, 각각의 논리 유니트는 4개의 메모리 평면들 중 한 개와 일치하게 된다. As the data is written to the logical yuteu into blocks by the logical unit across the plane, and each logical unit is a match and one of the four memory planes.

평면 정렬의 문제점은 논리 유니트가 갱신될 때 발생한다. Problems of plane alignment arises when a logical unit is updated. 예시적인 목적으로 제공되는 현재 보기로는, 논리 유니트가 512 바이트의 논리 섹터로 구성되며, 논리 페이지는 전체 논리 유니트이다. Current bogiro provided for illustrative purposes, and the logical unit is composed of a logical sector of 512 bytes, a logical page is an overall logic unit. 플래쉬 메모리가 전체 블록을 처음 삭제하지 않고 블록의 소정 부분의 재쓰기를 가능하게 하지 않기 때문에, 논리 페이지들에 대한 갱신들은 현재의 위치에 쓰여지지 않지만, 블록의 사용되지 않은 위치에 기록된다. Since the flash memory does not allow the re-writing of the predetermined portion of the first, without deleting the entire block block, updates to a logical page may not be written to the current position, it is recorded in an unused location of the block. 논리 유니트의 이전 버전은 폐쇄적이다. Previous versions of the logical unit is closed. 수많은 갱신이 실시된 이후에, 한 개의 블록은 갱신된 이후에 폐쇄되는 수많은 논리 유니트을 포함하고 있다. After a number of update the embodiment, one block includes a number of logical yuniteueul is closed after the update. 블록은 "더러운" 것으로 표현되며, 쓰레기 수집 작용은 상기와 같은 더러운 논리 유니트들을 무시하지만, 각각의 개별 논리 유니트들의 최근 버전을 수집하며, 그들을 한개 또는 그 이상의 새로운 블록들에 논리적 순차 순서에 의하여 재기록한다. Block is represented as "dirty", garbage collection operation will ignore the dirty logical units as described above, but collect the latest version of each individual logical units and re-by logically sequential order them to one or more of the new block do. 상기의 더러운 블록은 삭제되며, 또 다시 사용된다. Dirty blocks of the will be removed, and reused again.

갱신된 논리 유니트가 한 블록 내의 사용되지 않은 다음 위치에 기록될때, 그 이전의 버전과 같은 동일한 메모리 평면에 기록되지 않는다. When the updated logical units recorded in the next unused location in a block, and is not recorded in the same memory plane as its previous versions. 즉, 통합 또는 압축과 같은 쓰레기 수집 작용이 실행되면, 논리 유니트의 최근 버전은 최초의 순서를 유지하기 위하여 최초와 동일한 평면 내에 재기록된다. In other words, when a garbage collection operation, such as integrated or extracting executable, the latest version of a logical unit is rewritten in the first and in the same plane in order to maintain the original order. 그렇지만, 만약 최근의 버전이 또 다른 평면으로부터 인출되었다면, 성능 저하가 발생한다. However, If there is a newer version of another drawn from different planes, and the performance degradation.

그러므로, 본 발명의 또 다른 양상에 있어서, 소정의 주어진 평면에 저장된 제1 블록의 최초 논리 유니트가 갱신될때는, 갱신된 논리 유니트는 최초의 것과 동일한 평면에 유지될 수 있도록 구성된다. Thus, according to another aspect of the present invention, when the updated first logical units of the first block is stored in any given plane, the updated logical unit is adapted to be held in the same plane as the first. 이와 같은 것은 갱신된 논리 유니트를 동일한 평면에서 제2 블록의 사용 가능한 다음 위치에 기록함으로써 성취된다. Such a thing is accomplished by recording the updated logical unit to the next available location of a second block on the same plane. 바람직한 일실시예에 있어서, 최종 프로그램 메모리 유니트로부터 사용 가능한 다음 평면 정렬 메모리 유니트까지에 존재하는 소정의 간섭 갭은 최초의 블록 내의 최초 논리 유니트와 동일한 상대 위치에 존재하는 논리 유니트들의 현재 버전들로 패딩(예를 들면, 카피에 의한 채움)된다. In a preferred embodiment, the predetermined interference gap that exists next to the plane-aligned memory unit is available from the last programmed memory unit is padded with current versions of the logical units existing in the same relative location as the original logical units in the first block It is (for example, filling by a copy).

도22A는 본 발명의 전체 구성에 따른 평면 정렬을 이용한 갱신 방법을 도시하는 플로우 차트이다. 22A is a flow chart showing an update method using a planar alignment of the entire configuration of the present invention.

단계 950: 블록들로 조직되는 비휘발성 메모리에 있어서, 각각의 블록은 함께 삭제 가능한 메모리 유니트들로 파티션되며, 각각의 메모리 유니트는 데이터의 논리 유니트를 저장한다. Step 950: In a nonvolatile memory organized into blocks, each block is partitioned into memory units clearable together, each memory unit stores a logical unit of data.

단계 952: 다수개의 메모리 평면들로부터 메모리를 구성하며, 각각의 평면은 메모리 페이지를 병렬로 서비스하기 위하여 센싱 회로의 세트를 구비하며, 상기 메모리 페이지는 한 개 또는 그 이상의 메모리 유니트를 구비한다. Step 952: Configure a memory from a plurality of memory planes, and each plane is provided with a set of sensing circuits for servicing a memory page in parallel, said memory page is provided with one or more memory units.

단계 954: 제1 순서에 따라 제1 블록의 메모리 유니트들 중에서 논리 뉴니트들의 제1 버전을 저장한다. Step 954: Store a first version of logical New knitted from among the memory units of a first block according to a first order. 각각의 제1 버전 논리 유니트는 메모리 평면들 중 한개에 저장된다. Each of the first version of logical units is stored in one of the memory plane.

단계 956: 제1의 순서와 다른 제2 순서에 따라 논리 유니트들의 다음 버전들을 제2 블록에 저장한다. Step 956: The first stored in the second block of the next version of a logical unit according to the second order of the sequence and the other one. 각각의 다음 버전은 제1 버전과 동일한 평면 내의 사용 가능한 다음 메모리 유니트에 저장되며, 따라서 논리 유니트의 모든 버전드른 센싱 회로의 동일한 세트에 의하여 동일 평면으로부터 접근 가능하다. Each of the following versions are stored in a memory unit and then use possible in the same plane as the first version, and thus is accessible from the same plane by the same set of sensing circuits deureun all versions of a logical unit.

도22B는 도22A에 도시된 플로우 차트 내에서 갱신을 저장하는 단계의 바람직한 실시예를 도시한다. Figure 22B illustrates an exemplary embodiment of the step of storing updates in the flow chart shown in Fig. 22A.

단계 956'는 단계 957, 958 및 959를 포함한다. Step 956 'includes steps 957, 958 and 959.

단계 957: 각각의 블록을 메타 페이지로 파티션한다. Step 957: The partition each block into metapages. 각각의 메타 페이지는 각각의 평면의 페이지로부터 구성된다. Each metapage is constituted from a page of each plane. 상기의 단계는 저장 단계 이전에 수행된다. Wherein the step is performed before the storing step.

단계 958: 제1의 순서와 다른 제2의 순서에 따라 제2 블록 내에 논리 유니트의 다음 버전을 저장한다. Step 958: Store the next version of logical units in a second block in the sequence different from the first and the order of the first. 각각의 다음 버전은 제1 버전의 것과 동일한 메타 페이지 내에 동일한 옵셋을 갖는 사용 가능한 다음 메모리 유니트 내에 저장한다. Each of the next version is then stored in the memory unit is available having the same offset in the same metapage as that of the first version.

단계 959: 논리 유니트들의 다음 버전을 저장함과 동시에, 상기 제1의 순서에 따라 논리 유니트들의 현재 버전들을 카피하여 사용 가능한 다음 유니트에 선행하여 사용하지 않은 메모리 유니트들을 메타 페이지 별로 패딩한다. Step 959: and by padding the following versions of the logic unit simultaneously with the storing, the memory unit has not been used prior to the next unit is available to copy the current version of logical units in the order of the first metapage.

도23A는 평면 정렬과 상관 없이 순차 갱신 블록에 대하여 순차적인 순서로 쓰여진 논리 유니트의 보기를 도시한다. Figure 23A illustrates an example of logical units written in a sequential order with respect to a sequential update block without regard to plane alignment. 상기 예시는 각각의 논리 페이지가 LS0, LS1과 같은 논리 섹터의 크기를 갖는 것을 도시한다. The example shows that each of the logical page having the size of a logical sector, such as LS0, LS1. 평면이 4개인 경우에 있어서, MB0와 같은 각각의 블록은 메타 페이지 MP0, MP1, ...으로 파티션되며, 여기서 MP0와 같은 각각의 메타 페이지는 평면 P0, P1, P2 및 P3로 부터 LS0, LS1, LS2, LS3 와 같은 4개의 섹터를 포함한다. The plane 4 according to individual cases, each block, such as MB0 is metapage MP0, MP1, ..., and to the partition, wherein each metapage, such as MP0 is plane P0, P1, LS0, LS1 from the P2 and P3 , LS2, includes four sectors such as LS3. 따라서, 블록은 평면 P0, P1, P2, P3에서 사이클 순서로 섹터별로 논리 유니트 내에 채워진다. Thus, the block is filled in logical units for each sector to the cycle sequence in the plane P0, P1, P2, P3.

호스트 쓰기 작용 #1에 있어서, 논리 섹터 LS5-LS8 내의 데이터들은 갱신 된다. In host write operation # 1, the logical sectors LS5-LS8 are updated in the data. LS5'-LS8'와 같은 갱신된 데이타들은 제1 사용 가능 위치로부터 출발하여, 새롭게 할당된 갱신 블록 내에 기록된다. The updated data as LS5'-LS8 'are recorded in the update block starting from the first available location newly allocated.

호스트 쓰기 작용 #2에 있어서, 논리 섹터 LS9-LS12 내의 데이터 세그먼트가 갱신된다. In host write operation # 2, the logical sector in the data segment LS9-LS12 are updated. LS9'-LS12'와 같은 갱신된 데이터는 최종 쓰기가 끝나는 지점 뒤의 위치 내에 구성되는 갱신 블록에 기록된다. The updated data as LS9'-LS12 'are recorded in the update block is configured in a position after the point where the last write ends. 갱신 데이터는 LS5'-LS12'와 같은 논리적인 순차 순서로 갱신 블록 내에 기록될 수 있도록 2개의 호스트 쓰기가 제공된다. Updated data is provided with two host write to be recorded in the update block in logically sequential order, such as LS5'-LS12 '. 갱신 블록은 그것이 논리적인 순차 순서로 채워지고 난 이후에 순차 갱신 블록으로 정의된다. Update block is defined as a sequential update block since it I is filled in a logical sequence. 갱신 블록 내에 기록된 갱신 데이터는 최초 블록 내의 해당하는 데이터를 폐쇄하게 된다. The update data recorded in the update block is closed to the data in the first block.

그러나, 갱신 논리 섹터들은 평면 정렬과 상관없이 사용 가능한 다음 위치에 따라 갱신 블록 내에 기록된다. However, the update logical sectors are recorded in the update block according to the next location available regardless of planar alignment. 예를 들면, 섹터 LS5는 평면 P1에 최초로 기록되지만, 갱신된 LS5'는 P0에 기록된다. For example, the sector LS5 is, but the first record to the plane P1, the updated LS5 'is recorded in P0. 이와 유사하게, 다른 갱신 섹터들은 모든 오류 정렬된다. Similarly, other sectors are updated every alignment error.

도23B는 평면 정렬과 상관없이 혼돈 갱신 블록에 대하여 비순차 순서로 스여지는 논리 유니트들의 예를 도시하고 있다. 23B is in a non-sequential order with respect to the chaotic update block without regard to plane alignment scan room shows an example of the logical unit.

호스트 쓰기 작용 #1에 있어서, 최초의 메타 블록에 저장된 주어진 논리 그룹의 논리 섹터 LS10-LS11이 갱신된다. In host write operation # 1, the logical sectors LS10-LS11 of a given logical group stored in the first metablock is updated. 갱신된 섹터 LS10'-LS11'는 새롭게 할당된 갱신 블록 내에 저장된다. Updated sectors LS10'-LS11 'are stored in a newly allocated update block. 이 시점에서, 갱신 블록은 순차적으로 이루어진다. At this point, the update block is sequentially performed. 호스트 쓰기 작용 #2에 있어서, 논리 섹터 LS5-LS6은 LS5'-LS6'로 갱신되어, 최종 쓰기 이후의 위치에 있는 갱신 블록 내에 기록된다. In host write operation # 2, the logical sectors LS5-LS6 are updated as LS5'-LS6 ', is recorded in the update block in the location after the last letter. 상기와 같은 작용으로 갱신 블록을 순차적인 순서로부터 혼돈의 순서로 변환한다. It converts the update block by the action as described above in the order of the sequential order from the chaos. 호스트 쓰기 작용 #3에 있어서, 논리 섹터 LS10'는 다시 갱신되고, 갱신 블록의 다음 위치에 LS10''로서 기록된다. In host write operation # 3, the logical sector LS10 'is updated again, the next location of the update block LS10' are recorded as'. 이 시점에 있어서, 갱신 블록 내의 LS10''은 최초의 블록 내에서 LS10을 번갈아 추월하는 이전 기록 내의 LS10'를 추월한다. In this point, LS10 "in the update block, the LS10 in the previous pass to alternating LS10 in the original block of the recording, to overtake. 호스트 쓰기 작용 #4에 있어서, 논리 섹터 LS10'' 내의 데이터는 다시 갱신되고, 그리고 LS10'''으로써 갱신 블록의 다음 위치 내에 기록된다. In host write operation # 4, the logical sector LS10 '' in the data is updated again, and LS10 'are recorded in the next location of the update block as a' '. 따라서, LS10'''은 논리 섹터 LS10에 대하여 최근의 그리고 유일한 유효 버전이 된다. Therefore, LS10 '' 'This is the last and only valid version for the logical sector LS10. LS10의 모든 이전 버전들은 지금 폐쇄된다. All previous versions of the LS10 are closed now. 호스트 쓰기 작용 #5에 있어서, 논리 섹터 LS30 내의 데이터들은 갱신되고, LS30'로써 갱신 블록 내에 기록된다. In host write operation # 5, the data in logical sector LS30 are being updated, it is recorded in the update block as LS30 '. 상기의 예에 있어서, 논리 그룹 내의 논리 유니트들은 소정의 순서로 그리고 소정의 반복성으로 혼돈 갱신 블록 내에 쓰여진다. In the above example, logical units within a logical group are written in a chaotic update block in a predetermined order and at a predetermined repetition.

다시, 갱신 논리 섹터들은 평면 정렬과는 상관없이 사용 가능한 다음 위치에 따라 갱신 블록 내에 기록된다. Again, updated logical sector are aligned with the plane is recorded in the update block according to the next available location, no matter what. 예를 들면, 섹터 LS10은 평면 P2(예를 들면 MP2, 3번째 평면)에 최초로 기록되지만, 갱신 LS10'는 P0(예를 들면 MP0, 1번재 평면)에 기록된다. For example, the sector LS10 is, but the first record in a plane P2 (for example, MP2, 3 second plane), updated LS10 'are recorded in P0 (for example, MP0, 1 beonjae plane). 이와 유사하게, 호스트 쓰기 작용 #3에 있어서, 논리 섹터 LS10'는 LS10''로써 다시 갱신되고, 평면 P0(MP1에서 첫번째 평면)과 일치하는 사용 가능한 다음 위치에 위치하게 된다. Similarly, in host write operation # 3, the logical sector LS10 'is LS10' is updated again as a ', is located at the next available position in agreement with the plane P0 (the first plane in the MP1). 따라서, 갱신 섹터를 블록의 사용 가능한 다음 위치에 기록하는 것은 갱신된 섹터가 이전 버전과 다른 평면 내에 w저장될수도 있다는 것 이다. Therefore, what is needed is the ability doelsudo storage w in the updated sector different plane to the previous version of the updated record to the next available sector position in the block.

패딩에 의하여 채워진 간섭 갭을 갖는 평면 정렬, 순차 갱신 블록 Planar alignment with the interference gap filled by padding, sequential update block

도24A는 본 발명의 바람직한 일실시예에 의한 평면 정렬 및 패딩을 갖는 도23A의 순차 갱신 예를 도시하는 도면이다. 24A is a diagram showing the sequential update example of FIG. 23A having a planar alignment, and padding according to an embodiment of the present invention.

호스트 쓰기 작용 #1에 있어서, 갱신된 데이터 LS5'-LS8'는 제1 사용 가능한 평면 정렬 위치로부터 출발하는 새롭게 할당된 갱신 블록 내에 기록된다. In host write operation # 1, the updated data LS5'-LS8 'are recorded in a first use the newly allocated update block starting from a plane aligned position possible. 이 경우에 있어서, LS5는 P1 내에 최초로 위치하게 되며, 상기 P1은 메타 페이지의 2번째 평면에 해당한다. In this case, LS5 is the first position in the P1, P1 corresponds to the second plane of the metapage. 따라서, LS5'-LS7'는 갱신 블록의 제1 사용 가능한 메타 페이지 MP0 내에의 해당하는 평면들 내에서 프로그램된다. Therefore, LS5'-LS7 'will be programmed in the corresponding plane in the first available metapage MP0 the update block. 동시에, MP0 내의 사용하지 않은 제1 평면의 갭은 최초 블록의 메타 페이지 내의 LS5를 선행하는 논리 섹터 LS4의 현재 버전으로 패딩된다. At the same time, the gap of the unused first plane within MP0 is padded with current versions of the logical sector LS4 that precedes LS5 in the metapage of the original block. 최초의 LS4는 폐쇄 데이터로 취급된다. First LS4, is interpreted as a closed data. 나머지 LS8'은 다음 메타 페이지 MP1의 제1 평면에 기록되며, 평면 정렬된다. The remaining LS8 'are recorded in the first plane of the next metapage MP1, aligned plane.

호스트 쓰기 작용 #2에 있어서, LS9'-LS12'로 갱신된 데이터는 사용 가능한 다음 평면 정렬 위치의 갱신 블록 내에 기록된다. In host write operation # 2, the updated data in LS9'-LS12 'are recorded in the update block in next available plane alignment position. 따라서, LS9'는 사용 가능한 다음 평면 정렬 미모리 유니트 내에 기록되며, 그것은 MP1의 2번째 평면에 해당한다. Therefore, LS9 'is recorded in the next plane aligned mimori unit available, which corresponds to the second plane of MP1. 이러한 경우에 있어서, 갭이 발생하지 않으며, 패딩 또한 필요하지 않다. In this case, the gap is not generated, the padding also is not required. 갱신 블록은 그것이 논리적인 순차 순서로 채워지기 때문에 순처 갱신 블록으로 정의된다. Update block is defined as suncheo update block since it is filled in a logical sequence. 나아가, 각각의 갱신 논리 유니트가 최초의 평면과 동일한 평면에 있기 때문에 평면 정렬이라 불린다. Further, it referred to as planar aligned since each update logical unit are on the same plane as the first plane.

간섭 갭을 갖는 평면 정렬 및 혼돈 갱신 블록 Plane having a gap aligned interference and chaotic update block

도24B는 본 발명의 바람직한 일실시예에 따른 평면 정렬을 구비하나, 패딩은 구비하지 않는 도23B의 혼돈 갱신 예를 도시한다. 24B is one having a planar alignment in accordance with a preferred embodiment of the invention, the padding illustrates the chaotic update in Figure 23B does not include examples.

호스트 쓰기 작용 #1에 있어서, 갱신된 논리 섹터 LS10'-LS11'는 새롭게 할당된 갱신 블록 내에 저장된다. In host write operation # 1, the updated logical sectors LS10'-LS11 'are stored in a newly allocated update block. 그들을 사용 가능한 다음 메모리 유니트에 저장할 필요없이, 그들은 사용 가능한 다음 평면 정렬 메모리 유니트들에 저장된다. Available without having to store them next to memory unit, they are stored in the next available plane-aligned memory unit. LS10' 및LS11'가 평면 P2 및P3(최초 블록의 MP2의 3번째 4번째 평면)에 각각 최초로 저장되기 때문에, 사용 가능한 다음 평면 정렬 메모리 유니트들은 갱신 블록의 MP0'의 3번째 및 4번째 평면 내에 위치한다. Since LS10 'and LS11' are flat each initially stored in the P2 and P3 (MP2 third fourth plane of the first block), use the next plane-aligned memory unit can have in the third, and fourth planes of the MP0 'update block Located. 이 시점에 있어서, 갱신 블록은 비순차적이며, MP0'의 페이지들은 Unfilled, Unfilled, LS10' 및 LS11'의 순서로 채워진다. In this point, the update block is non-sequential, MP0 'pages are of Unfilled, Unfilled, LS10' filled in the order of and LS11 '.

호스트 쓰기 작용 #2에 있어서, 논리 섹터 LS5-LS6는 LS5'-LS6'로서 갱신되며, 사용 가능한 다음 평면 정렬 위치의 갱신 블록 내에 기록된다. In host write operation # 2, the logical sectors LS5-LS6 are updated as LS5'-LS6 ', used is recorded in the next available update block in plane alignment position. 따라서, 최초 블록의 2번째(P1) 및 3번째(P2) 평면 또는 메모리 유니트 MP1에 해당하는 LS5' 및 LS6'는 갱신 블록 내의 사용 가능한 다음 메타페이지 MP1' 내의 해당하는 평면으로 프로그램된다. Thus, for the second (P1) and third (P2) planes or memory unit of the first block MP1 LS5 'and LS6' it is programmed to use the corresponding planes in the next metapage MP1 'possible in the update block.

호스트 쓰기 작용 #3에 있어서, 논리 섹터 LS10'는 다시 갱신되고, 갱신 블록의 다음 평면 정렬 위치에 LS10''로서 기록된다. In host write operation # 3, the logical sector LS10 'is updated again, updated LS10 next plane alignment of the block, is recorded as " 따라서, 사용 가능한 다음 3번째 평면에 쓰여지며, 그것이 MP2'에 위치하게 된다. Thus, use is written in the third next available plane, it is located at the MP2 '. 상기와 같은 구성은 MP1' 내의 최종 평면에 선행 갭을 발생하며, 그리고 MP2'의 두개의 제1 평면에서 선행 갭을 발생한다. Configured as described above, it generates a gap preceding the last plane within, and MP2, MP1 and generates a leading gap in both of the first plane. 상기와 같은 작용으로 MP0'에서 LS10'를 폐쇄하게 된다. By the action as described above it is closed 'on the LS10' MP0.

호스트 쓰기 작용 #4에 있어서, 논리 섹터 LS10'' 내의 데이터는 다시 갱신 되고, 갱신 블록 내의 메타 페이지 MP2'의 사용 가능한 3번째 평면에 LS10'''로서 기록된다. In host write operation # 4, the logical sector LS10 '' in the data is updated again, metapage MP2 in the update block, is recorded as available 3 LS10 '' 'in the second plane. 따라서, LS10'''은 논리 섹터 LS10에 대하여 지금 최근의 그리고 유일한 유효 버전이 된다. Therefore, LS10 '' 'is now the last and only valid version for the logical sector LS10. 이에 따라, MP2' 및 두개의 제1 평면 MP3'로 구성되는 갭을 형성하게 된다. Accordingly, to form a gap consisting of MP2, MP3, and the two first plane ".

호스트 쓰기 작용 #5에 있어서, 논리 섹터 LS30 내의 데이터는 갱신되고, 갱신 블록 내에 LS30'로써 기록된다. In host write operation # 5, the data in logical sector LS30 is being updated and recorded as LS30 'in the update block. 최초의 LS30이 P2 또는 메타 페이지의 3번째 평면에 존재하기 때문에, 갱신 블록 내의 사용 가능한 다음 3번째 평면에 쓰여진다. Since the first LS30 is present in the third plane of the P2 or metapage, written to the next available a third plane in the update block. 이경우에 있어서, MP4'의 3번째 평면이 된다. In this case, it is the third plane of the MP4 '. MP3'의 최종 평면으로부터 두개의 제1 평면 MP4' 사이에는 갭이 형성된다. Between "two of the first plane from the final plane of the MP4 'MP3 is formed with a gap. 상기의 설명에서, 논리 그룹 내의 논리 섹터들은 평면 정렬 방법으로 소정의 순서 및 소정의 반복성으로 혼돈 갱신 블록 내에 쓰여진다. In the above description, the logical sector is written in the chaotic update block are in a predetermined order and a predetermined repetition planar alignment method in the logic group. 다음 쓰레기 수집 작용에 있어서, 모든 버전들, 특히 주어진 논리 섹터의 가장 최근 버전은 센싱 회로의 동일 세트에 의하여 편리하게 서비스된다. In the next garbage collection operation, the latest version of all versions, especially the given logical sector will be conveniently serviced by the same set of sensing circuits.

패딩으로 채워지는 간섭 갭들을 갖는 평면 정렬, 혼돈 갱신 블록 Planar alignment with the interference gap is filled with padding, chaotic update block

도24C는 본 발명의 또 다른 바람직한 실시예에 따른 평면 정렬 및 패딩을 갖는 도23B의 혼돈 갱신 예를 도시한다. Figure 24C illustrates the chaotic update example of FIG. 23B with plane alignment and padding according to another preferred embodiment of the present invention.

본 실시예에 있어서, 간섭 갭들이 먼저 패딩으로 채워지는 것을 제외하고는, 도24B의 그것과 유사하다. In the present embodiment, and is similar to that of Figure 24B, except that the interference gaps are first filled in with padding. 호스트 쓰기 작용 #1에 있어서, 메타 페이지 MP0'의 사용하지 않은 제1 및 제2 평면들에 의하여 형성된 갭은 LS8 및 LS9의 현재 버전으로 먼저 패딩되며, 상기의 구성은 최초 블록 내에 위치하게 된다. In host write operation # 1, the gap formed by the first and second planes are not used in the metapage MP0 'are first padded with current versions of LS8 and LS9, the above configuration is positioned in the first block. 여기서, LS8 및 LS9는 폐쇄된 최초 블록 내에 위치하게 된다. Here, LS8 and LS9 is positioned within the closure the first block. 이 시점에 있어서, 갱신 블록은 순차적 인 것이며, 메타페이지 MP0'는 LS8, LS9, LS10' 및 LS11'의 순서로 채워진다. In this point, the update block will sequential, metapage MP0 'is LS8, LS9, LS10' and LS11 are filled in the order of '.

호스트 쓰기 작용 #2에 있어서, 갭은 MP1' 내의 사용하지 않은 1번째 평면에 의하여 형성되며, 그것이 LS4로 처음 패딩된다. In host write operation # 2, a gap is formed by the first plane is not used in the MP1 ', it is first padded with LS4. 이에 따라 최초 블록 내의 LS4는 폐쇄된다. Accordingly LS4 in the original block are closed. 제2 쓰기는 갱신 블록을 순차적인 것으로부터 혼돈스러운 것으로 변환한다. The second letter is converted to chaotic sequence from which the update block.

호스트 쓰기 #3에 있어서, MP1' 내의 사용하지 않은 최종 평면 및 MP2'의 두개의 제1 평면들에 의하여 만들어 진다. In host write # 3, are created by the two first planes of the 'end-plane and MP2 are not used in the "MP1. MP1'의 최종 평면은 최종 프로그램 LS6' 이후의 LS7에 의하여 처음으로 패딩되며, MP2'의 두개의 제1 평면들은 LS10에 선행하는, 즉 LS8 및 LS9에 의하여 패딩된다. MP1 'of the end plane of the final program LS6' is first padded with LS7 by subsequent, are two of the first plane MP2 'it is padded by, namely LS8 and LS9 preceding LS10. 이에 따라 MP0' 내의 LS10 및 최초 블록 내의 LS7-LS9가 폐쇄된다. As a result, the LS7-LS9 in the original block in the MP0 and LS10 'are closed in.

호스트 쓰기 작용 #4에 있어서, 갭은 MP2' 내의 최종 평면 및 MP3' 내의 두개의 제1 평면들에 의하여 구성된다. In host write operation # 4, a gap is configured by the two of the first plane in the 'plane end and in the MP3, MP2. MP2'의 최종 평면은 메타 페이지 MP2' 내의 최종 쓰기 LS10'' 이후의 논리 유니트의 현재 버전에 해당하는 LS11'에 의하여 패딩된다. MP2 is padded by the final letter LS10 "in the" final plane of the metapage MP2 '' that corresponds to the current version of the logical unit after the LS11 '. MP3'의 두개의 제1 평면들은 논리 유니트들이 메타 페이지 MP3' 내의 LS10'''를 선행하기 때문에 각각 LS8 및 LS9에 의하여 패딩된다. MP3 is padded by LS8 and LS9 respectively, because the preceding, the two first planes are the logical units are metapage MP3 "in the LS10 '' '.

호스트 쓰기 작용 #5에 있어서, MP3'의 최종 평면 및 MP4'의 두개의 제1 평면들에 의한 갭은 LS11', LS28 및 LS29에 의하여 각각 패딩된다. In host write operation # 5, a gap by the two first planes of the 'end-of plane and MP4' MP3 are each padded by LS11 ', LS28 and LS29. 따라서, 논리 그룹 내의 논리 섹터들은 평면 정렬 방법으로 소정의 순서로 그리고 소정의 반복성으로 혼돈 갱신 블록 내에서 쓰여진다. Accordingly, the logical sector within the logical group are written in a chaotic update block in a predetermined order in planar alignment method and predetermined repetition.

바람직한 실시예에 있어서, 메타 페이지는 개별 평면들로부터 페이지들의 사 이클 작용을 포함한다. In a preferred embodiment, a metapage contains a cycle action of pages from the individual planes. 메타 페이지가 병렬로 읽혀지고 또는 프로그램되기 때문에, 메타페이지의 세분성으로 각각의 호스트 갱신을 구현할 수 있다. Since the meta-page is read and program or in parallel, it is possible to implement each host update with the granularity of a metapage.

도24A 및도24C의 예에 의한 실시예에 있어서, 각각의 호스트 쓰기 동안에, 패딩은 평면 정렬 메모리 유니트를 선행하는 사용하지 않은 메모리 유니트들에 대하여 수행되며, 상기 메모리 유니트에 대하여 갱신가 프로그래밍된다. In the practice 24A and by way of example in example 24C, during each host write, padding is performed on unused memory units preceding the plane-aligned memory unit are programmed gaengsinga with respect to the memory unit. 최종 프로그래밍된 메모리 유니트 이후의 사용하지 않은 메모리 유니트들의 작용은 다음 호스트 쓰기 까지 지연된다. Action of the memory units has not been used since the last programmed memory unit is deferred until the next host write. 일반적으로, 소정의 선행하는 사용하지 않은 메모리 유니트들은 메타페이지의 경계 내에서 패딩된다. In general, the memory unit has not been used for a predetermined preceding are padded within the borders of the metapage. 다른 말로 표현하면, 만약, 선행하는 갭이 두개의 메타페이지에 대하여 지연된다면, 패딩이 각각의 메타페이지에 타당한 논리적으로 순차적인 순서로 각각의 메타페이지에 대하여 수행되지만, 상기 경계를 가로질러 계속성과는 상관없다. In other expression words, if, prior if the gap is delayed with respect to the two meta-page, continue across padded transverse to the boundaries, but performed on each metapage in a reasonable logically sequential order to each of the meta-page and that It does not matter.

블록의 통합의 경우에 있어서, 만약 부분적으로 쓰여졌다면, 최종 쓰여진 메타페이지는 패딩에 의하여 완전히 채워진다. In the case of the integration of the block, if partially written, the final written metapage is completely filled by padding.

또 다른 실시예에 있어서, 소정의 부분적으로 채워진 메타페이지는 다음 메타페이지로 이동하기 이전에 충분히 패딩된다. In yet another embodiment, the meta-page filled with a predetermined part is fully padded before moving to the next metapage.

메모리 유니트 세분성 The memory unit granularity

개별적인 메모리 구조에 의하여 지원되는 유연성에 따라, 읽기 또는 프로그램의 유니트에 변형이 가능하다. Depending on the flexibility supported by the individual memory structure, it can be modified in the unit of read or program. 개별 평면의 독립적인 본성에 의하여 메타페이지 내의 개별적인 평면들로부터의 각각의 페이지는 각각 독립적으로 읽기 및 프로그램된다. Each page from individual planes in a metapage by the independent nature of the individual planes are respectively read and program independently. 앞서 설명한 보기들은 각각의 평면에 있어서 페이지가 될 수 있는 프로그램 의 최대 유니트를 갖는다. See above have the maximum unit of program to be a page in each plane. 메타페이지 내에서, 모든 페이지 보다 작은 부분적인 메타페이지 프로그래밍이 가능하다. In my meta page, it can be a little partial page programming over all metadata page. 예를 들면, 메타페이지의 3개의 제1 페이지를 프로그래밍하고 그리고 그 다음으로 4번째 페이지를 프로그래밍하는 것이 가능하다. For example, programming the three first page of a metapage and then, and it is possible to program in the fourth page.

평면 레벨에서, 물리적인 페이지는 한개 또는 그 이상의 메모리 유니트를 갖는다. In the plane level, a physical page has one or more memory units. 만약 각각의 메모리 유니트가 데이터 섹터를 저장한다면, 물리적인 페이지는 한개 또는 그 이상의 섹터를 저장한다. If each memory unit stores a data sector, and the physical page stores one or more sectors. 어느 정도의 메모리 구조는 부분적인 페이지 프로그래밍을 지원하며, 페이지 내에서 선택된 메모리 유니트들의 프로그래밍을 저지하여, 선택된 논리 유니트들은 다수개의 프로그래밍 패스들에 대하여 각기 다른 시간으로 개별적으로 프로그래밍될 수 있다. A certain amount of memory architecture supports partial page programming, to prevent the programming of selected memory units within a page, selected logical units may each be programmed with different times individually with respect to a number of programming pass.

논리 그룹의 혼돈 갱신용의 메모리 평면 내의 논리 유니트 정렬 Logic unit arranged in the memory plane for a logical group chaotic update

블록 메모리 관리 시스템에 있어서, 논리 유니트들의 논리 그룹은 최초의 블록 내에 논리적인 순차 순서로 저장된다. In the block memory management system, a logical group of logical units is stored in a logical sequence in the first block. 논리 그룹이 갱신되면, 논리 유니트들의 다음 버전들이 갱신 블록 내에 저장된다. When the logical group is updated, the following versions of the logical units are stored in the update block. 만약 논리 유니트들이 갱신 블록 내에 혼돈적인 방법(예를 들면, 비순차적인 방법)으로 저장되면, 쓰레기 수집이 수행되어, 최초의 블록 및 갱신 블록 중에서 논리 유니트들의 최근 버전들을 수집하며, 그들을 새로운 최초 블록 내로 순차적으로 통합하게 된다. If logical units are chaotic way into the update block (e. G., Non-sequential manner) to, is performed garbage collection when stored, and collects latest versions of the logical units among the original block and the update block, a new first block them into are integrated one by one. 만약 모든 버전들이 센싱 회로의 동일한 세트에 의하여 접근 가능하도록, 주어진 논리 유니트의 갱신된 버전들이 갱신 블록에 저장된다면, 상기의 쓰레기 수집 작용은 효율적이다. If all versions that if the updated versions of a given logical unit, to be accessible by the same set of sensing circuits are stored in the update block, the garbage collection operation is efficient.

본 발명의 다른 양상에 따르면, 상기에 기술된 블록 메모리 관리 시스템에 있어서, 메모리가 메모리 페이지 시리즈로 조직되면, 메모리 유니트들의 각각의 페 이지들은 센싱 회로의 세트에 의하여 병렬로 서비스되며, 만약 그들 모두가 그들이 저장되는 페이지 내에 동일한 옵셋 위치를 갖는다면 주어진 논리 유니트의 모든 버전들은 정렬된다. According to another aspect of the invention, in the block memory management system described above, when the memory is organized into memory pages series, each page of memory units are additional service in parallel by a set of sensing circuits, if they all all versions of a given logical unit if having the same offset location in the page they are stored are arranged.

도25는 예시적인 메모리 조직을 도시하며, 각각의 페이지는 두개의 논리적인 섹터들과 같은 두개의 논리 유니트를 저장하기 위한 두개의 메모리 유니트들을 그비하고 있다. Figure 25 shows an exemplary memory organization, each page has each ZigBee the two memory units for storing two logical units, such as two logical sectors. 최초의 블록에 있어서, 논리 섹터들이 논리적으로 순차적인 순서로 저장되기 때문에, 논리 섹터 LS0 및 LS1은 페이지 P0에 저장되며, 논리 섹터 LS2 및 LS3은 페이지 P1에 저장되며, 논리 섹터 LS4 및 LS5는 페이지 P3에 저장된다. In the first block, since the logical sectors are stored in logically sequential order, the logical sector LS0 and LS1 are stored in the page P0, the logical sectors LS2 and LS3 are stored in the page P1, the logical sectors LS4 and LS5 are page It is stored in the P3. 두개의 섹터 페이지에 있어서, 좌측으로부터의 제1 섹터는 0의 페이지 옵셋을 가지며, 두번째 섹터는 1의 페이지 옵셋을 갖는다. In the two sector page, the first sector from the left has a page offset of 0, the second sector has a page offset of one.

최초 블록에 순차적으로 저장된 논리 섹터의 논리 그룹이 갱신될 때, 갱신된 논리 섹터들은 갱신 블록 내에 기록된다. When the logical group of logical sectors stored sequentially in the original block update, the updated logical sectors are recorded in the update block. 예를 들면, 논리 섹터 LS2는 최초 블록 내에서 옵셋 0을 갖는 페이지 P0에 존재한다. For example, the logical sector LS2 is present in page P0 with offset 0 in the first block. 제1의 쓰기에서, 만약 LS2가 LS2'로 갱신된다면, 그것은 동일한 페이지 옵셋 0을 갖는 엡데이트 블록 내에 위치하는 제1 사용 가능한 위치에 저장된다. In the first writing, if LS2 is updated to LS2 If ', which is stored in the first available location which is located within the Eph date blocks having the same page offset 0. 이와 같은 것은 페이지 P0의 제1 메모리 유니트 내에 존재한다. Such is present in the first memory unit of the page P0. 제2 쓰기에서, 만약 LS5가 LS5'로 갱신된다면, 동일한 페이지 옵셋 1을 갖는 갱신 블록 내의 제1 사용 가능한 위치에 저장될 것이다. In a second write, LS5 is update to LS5 If ', will be stored in the first available location in the update block having the same page offset 1. 이와 같은 것은 페이지 P1의 옵셋 1을 갖는 제2 메모리 유니트 내에 존재한다. Such is present in the second memory unit with offset 1 of pages P1. 그렇지만, LS5'을 저장하기 이전에, P0에서 옵셋 1을 갖는 사용하지 않은 메모리 유니트들과 P1에서 옵셋 0을 갖는 사용하지 않은 메모리 유니트들은 그들을 각각의 페이지 내에 최소 한 논리적인 순차 순서를 유지하는 논리 섹터들의 최근 버전을 카피하여 제공함으로서 패딩된다. However, logic for previously storing LS5 ', maintains a logical sequential order at least within a not memory units are, respectively, the page they are used with offset 0 in the memory unit has not been used with the offset first and P1 from P0 It is padded by providing a copy to the latest version of sectors. 이러한 경우에 있어서, LS3은 P0 내의 옵셋 위치 1 위치로 그리고 LS4는 P1 내의 옵셋 0 위치로 각각 카피된다. In this case, LS3 are in offset position in the first position P0 and LS4 are respectively copied to the offset in the zero position P1. 제3 쓰기에서, 만약 LS2'가 LS2''로 다시 갱신 된다면, P2의 옵셋 0 내로 저장될 것이다. In the third write, if LS2, LS2 are "re-update a", it would be stored into the offset 0 of P2. 제4 쓰기에서, 만약 LS22 및 LS23이 LS22' 및 LS23'로 각각 갱신된다면, 그들은 각각 P3의 옵셋 0 및 1에 각각 저장될 것이다. In the fourth letter, if each updated to LS22 and LS23 are LS22 'and LS23', they will be respectively stored in the P3 offset 0 and 1, respectively. 그렇지만, 그런 작용 이전에, P2에서 옵셋 1을 갖는 사용하지 않은 메모리 유니트는 LS3으로 패딩된다. However, prior to such action, the memory unit has not been used with offset one from P2 is padded with LS3.

상기에 기술된 갱신 순서는 페이지 내에서 개별적인 섹터들을 프로그래밍할 수 있다는 것을 가장하는 것이다. The update procedure described above is the most that can program individual sectors within a page. 부분적인 페이지 프로그래밍이 지원되지 않은 약간의 메모리 구조들에 있어서, 페이지 내의 모든 섹터들은 함께 프로그래밍되어야 한다. In some memory structure of partial page programming is not support, all sectors within a page must be programmed together. 이러한 경우에 있어서, 제1 쓰기에서, LS2 및 LS3는 P0'로 함께 프로그래밍되며, 제2 쓰기에 있어서, LS4 및 LS5'는 P1'으로 각각 함께 프로그래밍된다. In this case, in the first write, LS2 and LS3 are 'are programmed together as, in the second write, LS4 and LS5' P0 is programmed with each of the P1 '. 제3 쓰기에 있어서, LS2'' 및 LS3은 P2'로 각각 함께 프로그래밍된다. The third letter in, LS2 '', and LS3 is P2 'are programmed together in each of the.

메타페이지 내의 평면 정렬 Plane alignment in the meth Page

프로그램의 유니트는 메타페이지의 세분성을 갖는다. Unit of the program has a granularity of a metapage. 만약 혼돈 갱신 블록으로의 쓰기의 세분성이 메타페이지가 된다면, 도16A 및 16B를 참조하여 설명한 CBI 블록 내의 입력 내용들은 섹터 대신에 메타페이지에 관한 것이다. If the granularity of writing to a chaotic update block is metapage, entries in the CBI block described with reference to Figs. 16A and 16B relate to metapages instead of sectors. 증가된 세분성으로 인하여 혼돈 갱신 블록용으로 기록되는 입력 내용의 수가 감소하며, 직접 인덱스들이 제거되며, 단일의 CBI 섹터가 메타블록 당 사용될 수 있다. Due to the increased granularity reduces the number of input information to be recorded for a chaotic update block, and is directly indexes are removed and a single CBI sector can be used per metablock.

도26A는 각각의 페이지가 한개 대신에 두개의 섹터를 갖는 것을 제외하고는 도21의 메모리 구조와 유사하다. FIG. 26A is similar to the memory structure of Figure 21, except having the two sectors instead of one, each of the page. 즉, 메타페이지 MP0는 데이터의 두개의 논리 유니트들을 저장할 수 있는 페이지를 각각 갖는다. That is, the meta MP0 page has a page that can store two logical units of data, respectively. 만약 각각의 논리 유니트가 섹터가 된다면, 논리 섹터들은 평면 p0에서 LS0 및 LS1을 가지며 그리고 P1에서 LS2 및 LS3을 갖는 MP0 내에서 순차적으로 저장된다. If each logical unit is a sector, a logical sector may have the LS0 and LS1 in plane p0 and is stored in the LS2 and LS3 MP0 in having at P1 by one.

도26B는 개략적으로 선형 패션으로 구성되는 메모리 유니트들을 갖는 도26A의 메타블록들을 도시한다. Figure 26B schematically illustrates metablocks of Fig. 26A having memory units configured in a linear fashion. 도21의 단일 섹터 페이지와 비교하여, 논리 섹처들은 각각의 페이지에 두개의 섹터들을 갖는 4개의 페이지들에 사이클적으로 저장된다. Compared to the single sector page of Figure 21, logical sekcheo are stored in the four-cycle ever page having two sectors in each page.

일반적으로, 만약 병렬로 작용하는 W 평면이 있다면, 그리고 페이지 당 K 페모리가 존재하고, 그리고 메타블록이 논리저으로 순차적인 순서로 채워져 있다면, 메타 블록 내의 k-번째 논리 페이지는 평면 x 내에 존재하여, 여기서 x = k' MOD W이며, k' = INT(k/K)이다. In general, if there are W planes which act in parallel, and K, and Fe is present per memory page, and if a metablock is a logic low is filled in a sequential order, k- th logical page in a metablock are present in the plane x and, a wherein x = k 'and MOD W, k' = INT (k / K). 예를 들면, 4개의 평면을 가지면, W= 4 이며, 페이지 당 2개의 섹터를 가지며, K = 2, 그리고 k = 5이며, 이는 5번째 논리 섹터 LS5에 해당하며, 이는 24A도에 도시된 k와 같이 평면 2에 해당하는 2 MOD 4에 의하여 주어지는 평면 내에 존재한다. For example, has the four planes, W = 4, and has two sectors per page, and K = 2, and k = 5, which corresponds to the fifth logical sectors LS5, that the k shown in 24A Fig. that corresponds to the plane 2, such as is present in a plane given by 2 MOD 4. 일반적으로, 동일한 원리가 앞서 기술한 평면 정렬을 구현하는데 적용된다. In general, the same principles apply for implementing plane alignment described above.

앞서 주어진 예문들은 다수개의 평면 구조에서 평면들을 갖는 페이지 정렬에 대한 것이다. Examples given above are for page alignment with planes in a plurality of planar structure. 다수개의 섹터를 갖는 페이지의 경우에 있어서, 한개의 패이지 내에 섹터 정렬을 유지하는 것이 바람직하다. In the case of a page with multiple sectors, it is desirable to maintain the sectors arranged in one of the paeyiji. 이러한 방법으로, 센스 회로의 동일한 세트가 동일한 섹터의 다른 버전을 위하여 사용될 수 있다. In this way, the same set of sense circuits can be used for different versions of the same sector. 섹터의 위치 재설정 및 읽기-수정-쓰기와 같은 작용들은 효율적으로 수행될 수 있다. Resetting the sector location, and read-modify-write action such as can be performed efficiently. 섹터 순서를 한 페이 지 내에서 정렬할때는, 페이지를 평면에 정렬하는 것과 같은 동일한 기술이 사용될 수 있다. Halttaeneun arranged in a sector if the page order can be used with the same techniques as for aligning the page to the plane. 실시예에 따라, 소정의 간섭 갭들이 패딩될 수 있고 또는 패딩되지 않을 수 있다. According to an embodiment, the predetermined number of interference gaps do not have to be padded or padding.

패딩이 필요없는 논리 유니트 또는 평면 정렬 Logic unit or a flat sort that does not require padding

도27은 한개의 위치로부터 다른 한개의 위치로 카피되는 논리 유니트들을 패딩하지 않고, 한개의 갱신 블록 내에 평면 정렬용 구조를 도시한다. 27 shows a structure for a plane arranged in the without padding logical units to be copied to a different one of the position from one of the positions, one of the update block. 갱신 블록을 가로지르는 4개 평면의 부분들은 호스트로부터 수신되는 평면 정렬 갱신 논리 유니트들을 수집하는 4개의 버퍼로써 정의된다. 4 parts of a plane transverse to the update block are defined as four buffers that collect plane aligned updated logical units received from the host. 상기 호스트로부터 수신되는 각각의 논리 유니트는 소정의 버퍼의 사용 가능한 다음 메모리 유니트 내에서 패딩하지 않고 프로그래밍된다. Each logical unit received from the host is programmed without padding in the next available memory unit of the predetermined buffer. 다른 개수의 논리 유니트들은 상기 호스트로부터 수신되는 논리 유니트 주소의 순서에 따라 각각의 평면 내에서 프로그래밍된다. Logical units of different numbers are in the sequence of logical unit addresses received from the host is programmed in each plane.

혼돈 갱신 블록 MB1'은 MP0'와 같은 논리 메타페이지의 모든 논리 유니트의 갱신된 버전들을 포함한다. Chaotic update block MB1 'is MP0' includes updated versions of all logical units of a logical metapage, such as. 그리고, MP1'와 같은 메타페이지의 모든 논리 유니트들 보다 적은 수를 포함할 수 있다. And, it may include fewer than all logical units of a metapage, such as MP1 '. MP1'의 경우에 있어서, 분실 논리 유니트 LS4는 해당하는 최초 블록 MB0로부터 얻을 수 있다. In the case of MP1 ', LS4 lost logic unit can be obtained from the first block MB0 that.

이와 같은 다른 구조는 만약 메모리 구조가 각각의 평면으로부터 이진 논리 페이지의 병렬 읽기를 지원한다면, 특히 효율적이다. In other structures are the same, if a memory architecture that supports parallel reading of binary logic pages from each of the flat, is particularly effective. 이와 같은 방법으로, 메타페이지의 모든 논리 페이지들은 심지어 개별 논리 페이지들이 동일한 열로부터 구성되지 않는다 해도 단일 병렬 읽기 작용에서 읽을 수 있다. In this way, all the logical pages in the metadata pages, even if they are not configured from the same ten individual logical page can be read in parallel from a single read operation.

단계화된 프로그램 에러 취급 Handling staged program error

만약 블록 내에 프로그램 오류가 발생한다면, 블록 내에 저장된 보든 데이터들이 또 다른 블록으로 이전되고, 오류가 발생한 블록은 나쁜(bad)으로 표시된다. If a program failure in a block, the previous block with data stored in the Borden to another block, the block where the error occurred is indicated by the bad (bad). 오류가 검출되는 작용 동안의 시간 스펙에 따라, 저장된 데이터를 또 다른 블록으로 추가적으로 이전하기 위하여 충분한 시간을 갖지 못할 수도 있다. According to the time specification for the action which the error is detected, it may not have enough time to relocate the stored additional data to another block. 가장 최악의 경우는, 모든 데이터를 또 다른 블록으로 위치 재설정하기 위하여 또 다른 그리고 유사한 쓰레기 수집 작용이 필요한 작용, 즉 정상적인 쓰레기 수집 작용 중간에 프로그램 오류가 발생하는 경우이다. If the worst-case is a case in which the other and necessary action similar garbage collection operation, i.e. a normal garbage collection operation on an intermediate program error occurs to reset the location of all data to another block. 이와 같은 경우에 있어서, 주어진 호스트/메모리 장치의 구체적인 쓰기 지연 시간 제한은 한개에 대하여 두개의 쓰레기 수십 작용을 수용할 수 없도록 설계되었기 때문에 그러한 제한을 종종 어기게 된다. In this case, it is often break such limitations due to specific write latency time limit of a given host / memory device is designed so that a capacity of two waste dozens action on one.

도28은 통합 작용 동안의 결함 블록 애네 발생하는 프로그램 오류를 도시하며, 통합 작용은 또 다른 블록에서 반복된다. Figure 28 shows the program errors that occur during the integration of the defective block aene action, and integrating operation is again repeated in the other block. 예를 들면, 블록 1은 논리적은 순차적인 순서로 논리 그룹의 완전한 논리 유니트를 저장하는 최초의 블록이다. For example, the block 1 is a logical block is the first of storing the complete logical units of a logical group in a sequential order. 예시적인 목적으로 도시되었지만, 최초의 블록은 섹션 A, B, C 및 D를 구비하고 있으며, 상기 각 섹션은 논리 유니트들의 서브 그룹을 저장한다. While shown for illustrative purposes, the first block is provided with a section of the A, B, C and D, each of the sections stores a subgroup of logical units. 호스트가 그룹의 소정 논리 유니트들을 갱신하면, 논리 유니트들의 새로운 버전들은 갱신 블록, 즉 블록 2에 기록된다. When a host updates certain logical units of the group, new versions of the logical units are recorded in the update block, that is block 2. 상기 갱신 블록과 관련하여 앞서 기술한 바와 같이, 호스트에 따라, 갱신은 순차적인 순서로 또는 비순차적인 (혼돈)의 순서로 논리 유니트들을 기록할 수 있다. As previously described with respect to the update block, according to the host, the update may be written logical unit in the following order in a sequential order or non-sequential (chaotic). 궁극적으로, 갱신 블록은 다른 소정의 이유에 의하여 갱신을 추가적으로 수신하는데 대하여 차단되어 있다. Ultimately, the update block is blocked with respect to receiving further updates by other desired reason. 갱신 블록(블록 2)가 차단되어 있으면, 갱신 블록 또는 최초 블록(블록 1)에 존재하는 논리 유니트들의 현재 버전들은 새로운 블 록(블록 3)에 통합되어, 논리 그룹을 위하여 새로운 최초 블록을 형성하게 된다. Current of logical units existing in the update block (Block 2) If the block, the update block or the original block (Block 1) versions to form a new original block is integrated into the new block (Block 3), for the logical group do. 예시는 섹션 B 및 D에서 논리 유니트들의 새로운 버전들을 포함하는 갱신 블록을 도시한다. Example shows the update block containing the newer versions of the logical units in sections B and D. 섹션 B 및 D는 블록 2 내에 개략적으로 도시되어 있으며, 그들이 기록되는 위치에서는 필요하지 않으며, 블록 1에서 최초의 위치들에 정렬되어 있다. Section B, and D are shown schematically in the block 2, and does not require the positions in which they are recorded, are arranged in the first position in the first block.

통합 작용에 있어서, 최초로 블록 1에 존재하는 논리 그룹의 모든 논리 유니트들의 현재 버전들은 통합 블록(블록 3)에 순차적인 순서로 기록된다. In the integrating operation, first all the current versions of logical units of the logical group present in the block 1 are written in sequential order to the integrated block (Block 3). 섹션 A의 논리 유니트들은 블록 1에서 블록 3으로 카피되며, 그리고 섹션 B에서는 브록 2에서 블록 3으로 카피된다. Logical units of section A are copied into block 3 in Brock 2, it is copied to the block 3 in the block 1, and section B. 예를 들면, 섹션 C의 논리 유니트가 블록 1에서 블록 3으로 카피된다면, 블록 3의 결함에 의하여 프로그램 오류가 발생할 수 있다. For example, if the logical units of section C to the block 3 copies in the block 1, there may occur by a three-block defect program error.

프로그램 오류를 취급하는 한가지 방법은 새로운 블록(블록 4)에 대하여 통합 공정을 다시 시작하는 것이다. One way of handling the program failure is to restart the consolidation process for a new block (Block 4). 따라서, 섹션 A, B, C 및 D는 블록 4로 카피되며, 결함 블록 3은 저려진다. Thus, sections A, B, C and D are copied to the block 4, a defect block 3 becomes numb. 그렇지만, 이와 같은 것은 2개의 통합 작용을 실시하는 것이기 때문에, 논리 유니트들로 포화상태인 두개의 블록을 카피하는 결과가 된다. However, because this is to conduct two integrated action, it is the result of copying the two blocks in the saturated state to the logic unit.

메모리 장치는 소정의 작용을 수행하기 위하여 구체적인 시간 일정을 갖는다. Memory devices have a specific time schedule for performing a predetermined action. 예를 들면, 한개의 호스트가 메모리 장치로 쓰기를 하면, 쓰기 작용은 소정의 주어진 시간 내에 종료하는 것을 기대하게 된다, 이를 쓰기 지연이라 부른다. For example, when the host is one of the writing to the memory device, writing action is expected to end within a predetermined given time, it is referred to as delay write. 메모리 카드와 같은 메모리 장치가 호스트로부터 데이터를 쓰기에 바쁘다면, 바쁜 상태를 알리는 "Busy" 상태를 호스트에 전송한다. If the memory device, such as a memory card, is busy writing the data from the host, and sends a "Busy" status indicating the busy state to the host. 만약 Busy 상태가 쓰기 지연 기간 보다 오래 지속된다면, 호스트는 쓰기 작용을 시간 종료하게 되며, 쓰기 작용에 예외 또는 에러를 등록하게 된다. If the Busy if the state lasts longer than the write latency period, the host is the time-out the write operation is to register an exception or error to the write operation.

도29는 쓰기 작용(지연) 뿐만 아니라 통합 작용을 완료하기에 충분한 시간을 제공하는 타이밍 또는 쓰기 지연을 갖는 호스트 쓰기 작용을 개략적으로 도시하고 있다. 29 is a schematic diagram showing a host write operation with a timing or write latency that provides sufficient time to complete the integration function as well as the writing action (delay). 호스트 쓰기 작용은 쓰기 지연 Tw를 제공하며, 상기 지연은 쓰기 호스트 데이터의 갱신 작용 972의 완료에 대한 충분한 시간을 갱신 블록(도29A)에 제공한다. Host write operation is provided to provide a delayed write Tw, the time delay is sufficient to update block on completion of the update operation 972 of writing host data (FIG. 29A). 블록 관리 시스템에서 앞서 기술한 바와 같이, 갱신 블록으로의 호스트 쓰기는 통합 작용을 트리거할 수도 있다. As previously described in the block management system, it is also possible to trigger the host write is integrated action of the update block. 즉, 티이밍에 의하여 갱신 작용(972)에 추가하여 통합 작용(974)(도29B)를 가능하게 한다. That is, in addition to the update operation (972) by a tee timing enables the integration action 974 (FIG. 29B). 그러나, 발생한 오류에 대응하여 통합 작용을 다시 시작하는 것은 너무 긴 시간을 필요로 할 수 있으며, 설정된 쓰기 지연을 초과할 수도 있다. However, restarting the integrated action in response to the error that occurred and may require a very long time may be longer than the write latency is set.

본 발명의 다른 양상에 따르면, 블록 관리 시스템을 갖는 메모리에 있어서, 시간-임계 메모리 작용 동안에 블록에서 발생하는 프로그램 오류는 브레이크아웃 메모리에서 프로그래밍 작용을 계속하여 구현될 수 있다. According to another aspect of the present invention, there is provided a memory having a block management system, a time-program errors that occur in the memory block during a critical operation may continue to implement the programming operation in a breakout memory. 보다 작은 임계 시간에서, 중단이 발생하기 이전에 오류가 발생한 블록에 기록된 데이터는 또 다른 블록으로 이전되며, 상기 또 다른 블록은 브레이크아웃 블록일 수도 있다. Recorded in the block than the failed previously to occur in a small threshold time, stop data is transferred to another block, the further blocks may be the breakout block. 오류가 발생한 블록은 버려진다. The block where the error occurred is discarded. 이와 같은 방법으로 결합 블록이 발견되면, 결함 블록에 저장된 데이터를 현장에서 바로 이전시킴에 따라, 저장된 데이터를 현장에서 데이터 손실 없이 그리고 설정된 시간 제한을 초과하지 않고 취급할 수 있다. In the same way when the combined block is encountered, it may be treated in accordance with the immediately previous Sikkim the data stored in the defective block in the field, and does not exceed the time-out with no loss of data and set data stored in the field. 이와 같응 에러 취급은 전체 작용이 임계 시간 동안 새로운 블록에 대하여 반복될 필요가 없기 때문에 쓰레기 수집 작용에 있어서 특히 중요하다. The gateung error handling is especially important for the garbage collection operation because it is not necessary, the entire operation is repeated for a new block for the threshold time. 결과적으로, 소정의 타당한 시 간에, 결함 블록으로부터의 데이터는 또 다른 블록으로 위치를 재조정하여 구할 수 있다. As a result, between the predetermined valid when the data from the defective block can be obtained by readjusting the position to another block.

도30은 본 발명의 전체 구조에 따라 프로그램 오류 취급의 플로우 차트를 도시하는 도면이다. 30 is a view showing a flowchart of program failure handling in accordance with the overall structure of the present invention.

단계 1002: 비휘발성 메모리를 블록으로 조직한다. Step 1002: the non-volatile memory organized in blocks. 각각의 블록은 함께 삭제 가능한 메모리 유니트들로 파티션된다. Each block is partitioned into memory units can be deleted as well. 각각의 메모리 유니트는 데이터의 논리 유니트를 저장한다. Each memory unit stores a logical unit of data.

프로그램 오류 취급 (제1단계) Error handling program (step 1)

단계 1012: 데이터의 논리 유니트의 순서를 제1 블록 내에 저장한다. Step 1012: stores a sequence of logical units of data in the first block.

단계 1014: 다수의 논리 유니트들을 저장하고 난 이후에 제1 블록에서의 저장 오류에 대응하여, 다음 논리 유니트들을 제1 블록에 대한 브레이크아웃 블록으로 기능을 하는 제2 블록 내에 저장한다. Step 1014: after the storing a plurality of logical units, and I corresponding to the stored error in a first block, and stores in the second block to a function of the following logical units into the breakout block for the first block.

프로그램 오류 취급 (최종 단계) Error handling program (the final step)

단계 1020: 소정의 이벤트에 대응하여, 제1 블록에 저장된 논리 유니트들을 제 3블록으로 이전시키고, 상기 제3 블록은 상기 제2 블록에 일치 또는 일치되지 않을 수 있다. Step 1020: it may not in response to the predetermined event, the previous and the logical unit stored in the first block to the third block, the third block is not consistent or matched to the second block.

단계 1022: 상기 제1 블록을 버린다. Step 1022: Discard the first block.

도31A는 제3 블록(최종 위치 재설정) 블록이 제2 (브레이크아웃) 블록과 서로 다른 구성에 있어서, 프로그램 오류 취급의 제1 실시예를 도시하는 도면이다. 31A is In the third block (reset end position) of the second block with a different configuration (breakout) block diagram showing a first example of program failure handling. 단계 I에서, 일련의 논리 유니트들이 제1 블록에 기록된다. In step I, a series of logical units are recorded in the first block. 만약 논리 유니트들이 호스트 쓰기로부터 구성되면, 제1 블록은 갱신 블록으로 정의된다. If the logical units are configured from a host write, the first block is defined as an update block. 만약 논리 유니트들이 압축 작용의 통합으로부터 구성된다면, 제1 블록은 위치 재설정 블록으로 정의된다. If the logical units are configured from the integration of the compression action, the first block is defined as a position reset block. 소정의 지점에서, 프로그램 오류가 블록 1에서 검출되면, 브레이크아웃 블록이 구성된다. If at a given point, a program failure is detected in the block 1, the breakout block is configured. 블록 1에 기록되는 것이 실패한 논리 유니트 및 다른 다음 유니트들은 그 대신에 브레이크아웃 블록에 기록된다. Logic unit and the other unit is then written to the failed block 1 are written to the breakout block instead. 이와 같은 방법으로, 오류 블록 1 및 그에 존재하는 데이터를 교체하기 위하여 추가적인 시간이 필요 없게 된다. In this way, additional time is not required for error block 1 and to replace the existing data thereto.

간섭 단계 II에 있어서, 상기 시퀀스의 모든 기록된 논리 유닛은 블록 1과 블록 2 사이에 획득가능하다. According to the interference phase II, all the recorded logical units of the sequence are obtainable between block 1 and block 2.

최종 단계 III에 있어서, 오류 블록 1 및 그에 존재하는 데이터는 논리 유니트들을 블록 3으로 위치 재설정하여 교체되며, 상기의 블록 3은 위치 재설정 블록으로써 기능을 한다. In the final stage III, the error block 1 and the data present it is replaced by resetting position the logical units to block 3, and the function of the block 3 is position by reset block.

즉, 오류 블록 내의 데이터는 다시 살아나며, 오류 블록은 버려지게 된다. That is, the data in the error block is again salahnamyeo, erroneous block is discarded. 최종 단계는 소정의 다른 임시 메모리 작용의 타이밍과 상호 충돌하지 않도록 시간 설정된다. The final step is the time set to not impact each other and the timing of some other temporary memory function.

본 실시예에 있어서, 위치 재설정 블록(3)은 브레이크아웃 블록(2)과는 분명하게 차이가 난다. In this embodiment, the position reset block 3 will differ clearly is the breakout block (2). 즉, 이와 같은 것을 중간 단계 동안에 브레이크아웃 블록이 추가 논리 유니트들로 기록될 때 유용하다. In other words, the break-out block that during this intermediate step is useful to be recorded with additional logical units. 즉, 브레이크아웃 블록이 갱신 블록으로 전환하고, 결함있는 블록(1)로부터 논리 유니트들을 위치 재설정하는 역할을 못하게 되는 것이다. That is, the break-out blocks are to switch to an update block, will be able to serve to reset the location of logical units from the defective block (1).

도31B는 프로그램 오류 취급의 또 다른 실시예를 도시하며, 제3(최종 위치 재설정) 블록은 제2 (브레이트아웃) 블록과 동일한 것이다. Figure 31B is shows a further embodiment of the error handling program, the third (the last position reset) block is the same as the first (fibrate-out) block. 단계 I 및 II는 도31A의 제1 실시예와 유사하다. Steps I and II is similar to that of the first embodiment of Figure 31A. 그렇지만, 단계 III에 있어서, 결함 블록 I로부터의 논리 유니트들은 브레이크아웃 블록(2)로 위치 재설정된다. However, in the step III, the logical units from the defective block I are reset position to the breakout block (2). 이와 같은 것은 브레이크아웃 블록(2)이 이전의 쓰기 작용의 최초 순서와 다른 추가적인 논리 유니트로 기록될때 유용하다. The same is also useful when the breakout block 2 is written to the other additional logic unit with the first order of the previous writing action. 이와 같은 방법으로, 논리 유니트들을 저장하는데 있어 최소의 블록들이 필요하게 된다. In this way, it is necessary that at least the block for storing the logical unit.

통합 과정에서의 프로그램 오류 취급용 실시예 Example for handling application errors in the integration process

프로그램 오류 취급은 통합 작용 과정에 있어서 특히 중요하다. A program error handling is especially important in the integration process works. 정상적인 통합 작용이 통합 블록으로 통합되며, 논리 그룹의 모든 논리 유니트들의 현재 버전들은 최초 블록 및 갱신 블록 사이에 존재하게 된다. Normal integration function is integrated in the integration block, all the current versions of logical units of the logical group is present between the first block and the update block. 통합 작용 과정에서, 만약 프로그램 오류가 통합 블록에서 발생한다면, 브레이크아웃 블록으로 작용하는 또 다른 블록은 나머지 논리 유니트들의 통합을 수신한다. If the action in the integration process, if a program error in the integrated block and another block that acts as a breakout block receives the integration of the remaining logic unit. 이와 같은 방법으로,한 번 이상 카피되는 논리 유니트가 없게 되며, 예외적인 취급에 따른 작용은 정상적인 통합 작용 동안에 설정된 기간 내에 완료된다. In this way, the logic unit is not to be copied at least once, the operation of the exception handling is completed in a period set during normal integration function. 적절한 시간에, 통합 작용은 그룹의 모든 우수한 논리 유니트들을 브레이아웃 블록으로 통하여 완료될 수 있다. At the appropriate time, integrated operation can be completed through all outstanding logical units of the group to the probe layout blocks. 적당한 시간이란 통합을 실시할 시간이 있을때 현재의 호스트 쓰기 작용 외부에서의 다른 기간 과정을 의미한다. When there is time to conduct a proper time is the integration process represents a different period in the external current host write activity. 그러한 적절한 시간은 갱신이 존재하나, 해당하는 통합 작용이 존재하지 않는 또 다른 호스트 쓰기 과정에 실시될 수 있다. Such a suitable time may be performed in another host write process to update the existing one, the integration effect of the absence.

특히, 프로그램 오류 취급을 이용한 통합은 다수개의 단계들로 구현될 수 있다. In particular, the integration with the program failure handling can be implemented in a plurality of steps. 첫번째 단계에 있어서, 한번 이상의 논리 유니트들을 통합하는 것을 피하기 위 하여 프로그램 오류가 발생한 이후에 논리 유니트들이 한개의 블록 이상의 블록으로 통합된다. In the first stage, to avoid the above incorporating at least one logic unit is integrated into the logic block unit to the one or more blocks of the program after the error has occurred. 최종 단계는 적절한 시간에 완료되며, 모든 논리 유니트들을 순차적인 순서로 브레이크아웃 통합 블록 내로 수집하는 방법으로, 한개의 블록 내로 통합을 한다. The final stage is completed at the appropriate time, as a method of collecting into the breakout consolidation block all of the logical units in sequential order, and the integration into one block.

도32A는 통합 작용을 이룰 수 있는 초기 갱신 작용의 플로우 차트이다. FIG. 32A is a flow chart of the initial update action that can achieve integrated action.

단계 1102: 비휘발성 메모리를 블록들로 조직하고, 각각의 블록은 함께 삭제 가능한 메모리 유니트들로 파티션되고, 각각의 메모리 유니트는 데이터의 논리 유니트를 저장한다. Step 1102: each block of the tissue, and a non-volatile memory in the block is partitioned into memory units clearable together, each memory unit stores a logical unit of data.

단계 1104: 데이터를 다수개의 논리 그룹으로 조직한다. Step 1104: The organization of data into a plurality of logical groups. 각각의 논리 그룹은 블록 내에 저장될 수 있는 논리 유니트들의 그룹이다. Each logical group is a group of logical units that can be stored in the block.

단계 1112: 논리 유니트들로 패키지된 호스트 데이터를 수신한다. Step 1112: Host receives the data package to the logical units.

단계 1114: 제1 순서에 따라 논리 그룹의 논리 유니트들의 제1 버전을 제1 블록 내에 저장하여 논리 그룹의 최초 블록을 생성한다. Step 1114: generates a first block of the logical group by storing a first version of logical units of a logical group in the first block according to a first order.

단계 1116: 제2 순서에 따라 논리 그룹의 논리 유니트들의 다음 버전을 포함하는 제2 블록 내에 저장하여 논리 그룹의 갱신 블록을 생성한다. Step 1116: Storage in a second block including the following versions of the logical units of the logical group according to a second sequence to generate the update block of the logical group.

단계 1119: 앞서 설명한 섹션에서의 소정의 이벤트에 있어서, 쓰레기 수집이 수행되어, 다양한 블록들에서 논리 유니트들의 현재 버전을 수집하여, 새로운 블록으로 재기록한다. Step 1119: For a given event in the above section, is performed garbage collection, to collect the current versions of logical units in the various blocks will be rewritten to the new block.

도32B는 본 발명의 바람직한 실시예의 다수 단계 통합 작용의 플로우 차트이다. Figure 32B is a flow chart of a preferred embodiment of the multiple phase consolidation operation of the invention.

통합 오류 취급 (단계 I) Integrated error handling (step I)

오류 취급, 단계 I 작용 1120에 대한 통합 작용은 단계 1122 및 단계 1124를 구비한다. The integration function of the error handling, Phase I operation 1120 comprises a step 1122 and step 1124.

단계 1122: 제1 순서와 유사한 논리 그룹의 논리 유니트들의 현재 버전들을 제3 블록 내에 저장하여 논리 그룹용 통합 블록을 생성한다. Step 1122: by storing the current version of logical units of the logical group similar to the first order in the third block and generates the integrated block for the logical group.

단계 1124: 통합 블록에서 저장 오류에 대응하여, 상기 제3 블록으로부터 이탈한 논리 그룹의 논리 유니트들을 제1 순서에 유사한 제4 블록에 저장하여, 브레이크아웃 통합 블록을 제공한다. Step 1124: In response to the stored error in the integrated block, to store the logical units of a logical group separated from the third block to the fourth block similar to the first order, there is provided a breakout consolidation block.

블록 1 및 2에서의 데이터들이 블록 3 및 4로 이전되고, 블록 1 및 2는 공간을 증가시키기 위하여 삭제된다. Data in blocks 1 and 2 have been transferred to the block 3 and 4, Blocks 1 and 2 are deleted in order to increase the space. 바람직한 실시예에 있어서, 블록 2는 EBL(Erased Block List, 도18 참조)로 즉시 릴리즈되고 재사용된다. In a preferred embodiment, the block 2 is immediately released and reused as EBL (see Erased Block List, Figure 18). 블록 1은 만약 이것이 닫힌 얻데이트 블록이라면 릴리즈될 수 있다. Block 1 may be released if you get a date if this block is closed. 해당하는 GAT 엔트리가 가르키는 또 다른 블록이 존재한다. The corresponding GAT entry points that are present in the other block.

특히, 블록 3은 논리 그룹을 위하여 최초 블록이 되며, 블록 4는 블록 3을 위하여 교체 순차 갱신 블록이 된다. In particular, the block 3 is a first block for the logical group and Block 4 becomes a replacement sequential update block for Block 3.

단계 I 통합이 완료된 이후에, 메모리 장치는 Busy 신호를 전송하여 호스트에게 신호를 보낸다. After this step I integration is completed, the memory device sends a signal to the host sends a Busy signal.

중간 작용 (단계 II) Intermediate acting (step II)

중간 작용 1130인 단계 II는 단계 III 통합 작용 1140 이전에 수행될 수 있다. Intermediate action 1130 in step II may be carried out prior to the Phase III consolidation operation 1140. 다수의 가능한 시나리오는 단계 1132, 1134 및 1136으로 구성된다. A number of possible scenarios is composed of steps 1132, 1134 and 1136.

단계 1132: 논리 그룹의 쓰기 작용에 있어서, 갱신 블록으로써 제4번째 블록(브리에크아웃 통합 블록)으로 쓴다. Step 1132: In the write operation of the logical group, to write the fourth block (Eck debris out integration block) as an update block.

만약 호스트가 의문이 있는 논리 그룹으로 쓰기를 한다면, 브레이크아웃 통합 블록이고, 교체 순차 엡데이트 블록의 역할을 갖는 블록 4는 정상적인 갱신 블록으로 사용될 것이다. If the host is writing to a logical group with a question, the breakout consolidation block, block 4 has a role of progressive replacement Ephesians dating blocks will be used in the normal renewal block.

호스트 쓰기에 따라서, 순차적인 상태로 남아 있을 수 있으며, 또는 혼돈 상태로 변환될 수도 있다. Therefore, the host write, may be converted to, and can be left in a sequential state, or chaotic state. 갱신 블록으로써, 그것은 앞선 실시예에서 설명한 바와 같이, 도 다른 혼돈 블록의 소정의 포인트 트리거 클로져에 있을 수 있다. As an update block, it can also be in a given point triggers closure of another chaotic block as described in the previous embodiment.

만약 호스트가 또 다른 논리 그룹으로 쓰기를 한다면, 단계 III의 작용으로 바로 진행한다. If the host is another letter to another logical group, it proceeds directly to the operation of the phase III.

단계 1134: 또는 읽기 작용에 있어서, 제3 블록을 이용하여 메모리를 논리 그룹용 최초 블록으로써 읽고, 그리고 제4 블록을 갱신 블록으로써 읽는다. Step 1134: In the read operation, or by using the third block by reading the first memory block for the logical group, and read the fourth block as the update block.

이와 같은 경우에 있어서, 섹션 A 및 B로부터의 논리 유니트들은 블록 3으로부터 논리 그룹의 최초 블록으로서 읽어진다. In this case, logical units from sections A and B will be read as the first block of the logical group from the block 3. 그리고 섹션 C 및 D로부터의 논리 유니트들은 블록 4로부터 그룹의 갱신 블록으로서 읽어진다. And logical units from sections C and D will be read as an update block for the group from the block 4. 섹션 A 및 B가 블록 3으로부터 읽혀질 수 있기 때문에, 프로그래밍이 오류를 일으키는 페이지에 대한 접근을 할 수가 없으며, 그 이후에 쓰여진 부분에 대한 접근도 없을 것이다. Since the sections A and B can be read from the block 3, it is not possible to access to the page programming is causing the error, it will not have access to the portion written after that. 플래시 메모리 내의 GAT 디렉토리가 아직 갱신되지 않고, 최초 블록으로써 블록 1을 가리키고 있기 때문에, 그로부터 읽혀지는 데이터가 존재하지 않으며, 블록 그 자체는 조기에 삭제될 수 있다. Without the GAT directory it not yet has been updated in the flash memory, because the points to Block 1 as the original block, do not have any data to be read therefrom, the block itself may be removed prematurely.

또 다른 가능성은 논리 그룹에서의 논리 유니들의 호스트 읽기이다. Another possibility is the host read of the logic of Unicode in logical groups. 이 경우에 있어서, 섹션 A 및 B로부터의 논리 유니트들은 논리 그룹 최초 블록으로써 블록 3으로부터 읽혀지며, 섹션 C 및 D로부터의 논리 유니트들은 그룹의 순차 갱신 블록으로써 블록 4로부터 읽혀질 것이다. In this case, logical units from sections A and B are are read from Block 3 as the logical group original block, and logical units from sections C and D will be read from Block 4 as the group's sequential update block.

단계 1136: 또는 파워-업 초기화에 있어서, 제1 내지 제4 블록들 중 어느 한개를 그들 내용을 스캐닝하여 다시 확인한다. Step 1136: or a power-up initialization in the first to fourth scanning them to any one of the information blocks and check again.

중간 단계의 또 다른 가능성은 파워 오프되어 다시 시작되는 메모리 장치용으로 적용된다. Another possibility for the intermediate phase is applied for a memory device that starts the power-off again. 상기에 기술한 바와 같이, 파워-업 초기화 과정 동안에, 할당 블록 리스트(사용되는 삭제 풀 블록, 도15 및 18 참조) 내의 블록들은 스캔되어, 특수 상태의 최초 블록 (블록 3)과 논리 그룹용 순차 갱신 블록 (블록 4)가되는 결합 통합 블록을 확인한다. As described above, the power-during-up initialization, the allocation block list (delete full blocks are used, see Figs. 15 and 18) sequentially for the blocks are scanned, the first block of the special state (block 3) and the logical group within Check the combined integrated block that update block (block 4). 브레이트 블록 (블록 4)의 제1 논리 유니트의 플래그는 해당 블록이 프로그램 에러로 장애를 겪는 최초 블록 (블록 3)인 것을 표시한다. Flag in the first logical unit of the fibrate block (Block 4) will indicate that the block is an original block (Block 3) experiences a failure to program errors. 블록 디렉토리 (GAT)와 통신하여, 블록(3)은 위치 설정된다. Communicates with the block directory (GAT), Block 3 is positioned.

일 실시예에 따라, 플래그는 브레이크아웃 통합 블록 (블록 4) 내에서 제1 논리 유니트 내로 프로그래밍된다. According to one embodiment, a flag is programmed into the first logical unit in the breakout consolidation block (Block 4). 이와 같은 작용에 따라, 예를 들면 두개의 블록, 즉 블록 3 및 4로 통합되었다는 것을 표시하는 것과 같은, 논리 그룹의 특수 상태를 표시한다. In accordance with the same function, for example, two of the block, that indicates the special status of the logical group, such as indicating that the integration in blocks 3 and 4.

결함 블록을 이용하여 논리 그룹을 확인하기 위하여 플래그를 사용하는 또 다른 방법은 최초의 블록이 그러한 것(최종 페이지에서 에러가 발생하지 않는 한, 최종 페이지는 ECC 에러를 갖지 않는다)과 같이 채워진 상태가 아닌 특징에 따라 스케닝 하는 동안에 결함으로써 블록을 검출하는 것이다. Another way to use a flag to identify the logical group with a defective block is populated as shown in the first block such that (unless an error occurs in the last page, the last page does not have ECC error) during scanning along a non-feature it is to detect the block as defective. 구형하는 방법에 따라서, 플래시 메모리 내에 브레이크아웃 통합 블록(블록 4)에 쓰여진 제1 섹터의 헤더 영역이 아닌, 제어 데이터 구조에 저장된 오류 그룹/블록에 대한 정보 기록이 있을 수 있다. According to the method of spherical shape, in the flash memory it can have information recorded on the breakout consolidation block (Block 4), the error group / block stored in a non-header area, the control data structure of one sector is written to.

통합 완료 (단계 III) Integrated completed (step III)

단계 1142: 소정의 이벤트에 대응하여, 그리고 제4번째 블록이 단계 I 이후에 계속하여 기록되지 않았을 때의 제1 경우에 대하여, 제1의 순서에 유사한 논리 그룹의 모든 우수한 논리 유니트들의 현재 버전을 저장하고, 그리고 단계 I 이후의 제4 블록이 더 기록되어 있는 제2의 경우에 대하여, 제3 및 제4 블록들을 제5 블록 내로 통합한다. Step 1142: In response to a predetermined event, and the fourth current versions of all outstanding logical units of the first with respect to the first case when the second block is not continuously recorded in a later stage I, the similar logical group in the order of 1 and stores, and integrating the third and fourth blocks in the context of the second, which is the fourth block of the later stage I further written into the fifth block.

단계 1144: 그 이후에, 제1의 경우에 대하여,논리 그룹에 대한 최초 블록으로써 통합된 제4 블록으로 메모리를 작동시키고, 제2의 경우에 대하여, 논리 그룹용 최초 블록으로써 제5 블록으로 메모리를 작동시킨다. Step 1144: After that, in the context of the first, the fourth block integrated by the first block for the logical group and operating the memory, the memory to the fifth block as the original block for the logic group for the second case of the operates.

단계 III에서의 최종 통합은 명시된 시간 제한을 어기지 않고 기회가 닿는 다면 언제든지 실시된다. The final integration of the Step III is carried out at any time if the opportunity to reach without breaking the specified time limit. 바람직한 경우는 동반되는 통합 작용이 더 없으면, 또 다른 논리 그룹에 대한 갱신 작용이 있을때 다음 쓰기 슬롯에 대하여 피기-백(piggy-back)하는 것이다. To back (piggy-back) - it is preferred when there is no more integration action, and when the update operation for the other logical groups, and then bloom with respect to the write slot to be associated. 만약 또 다른 논리 그룹으로의 호스트 쓰기가 쓰레기 수십 그 자체를 트리거하면, 단계 III 통합은 지연된다. If another dozen hosts write to different logical groups refuse trigger itself, Phase III consolidation is delayed.

도33은 다수 단계 통합 작용의 제1 및 최종 단계의 예시적인 타이밍을 도시한다. 33 shows a second exemplary timing of the first and final stage of the multiple stage integrating action. 호스트 쓰기 지연은 기간 Tw를 갖는 각각의 호스트 쓰기 슬롯의 폭이다. Host write latency is the width of each host write slot having a period of Tw. 호 스트 쓰기 1은 단순한 갱신이고, 논리 그룹 LG1 내의 논리 유니트의 제1 세트의 현재 버전들은 관련 갱신 블록에 기록된다. Host Write 1 is a simple update, and the current version of the first set of logical units in the logical group LG1, are written to associated update block.

호스트 쓰기 2에 있어서, 논리 그룹 LG1에 대한 또 다른 갱신이 발생하여 갱신 블록이 닫히도록 한다 (풀 상태). In host write 2, and so to another update on logical group LG1 is generated closed update block (full state). 새로운 갱신 블록이 나머지 갱신을 기록하기 위하여 준비된다. The new update block is ready to record the rest of the updates. 새로운 갱신 블록의 제공은 쓰레기 수집을 트리거하여, 재사용을 위한 블록을 재상하기 위하여 LG4에 대하여 통합 작용이 실시되는 것이다. Providing a new update block will be the integration action carried out on LG4 to trigger a garbage collection, the block recyclable for re-use. LG4 그룹의 현재 논리 유니트는 수차적인 순서로 통합 블록에 기로된다. Current logical units of the group is a group LG4 the integrated block in aberration order. 통합 작용은 결함이 통합 블록 상에서 발결될 때까지 진행된다. Integration action proceeds until a defect is balgyeol on the integrated block. 단계 1 통합은 통합 작용이 브레이크아웃 통합 블록에서 계속되는 구성에서 실시된다. Step 1 is integrated in the integration operation is performed in the subsequent configuration breakout consolidation block. 그리고, LG4 (단계 III)의 최종 통합은 다음 기회를 기다리게 된다. Then, the final consolidation of LG4 (step III) is waiting for the next opportunity.

호스트 쓰기 3에 있어서, 논리 그룹 LG2의 논리 유니트들의 쓰기가 발생하여, LG2에 대한 통합을 트리거하게 된다. In host write 3, a write of logical units of the logical group LG2 occurrence, is triggered integration on LG2. 이것은 시간 슬롯이 이미 충분히 이용되고 있다는 것을 뜻한다. This means that the time slot has already been fully utilized.

호스트 쓰기 4에서, 작용은 LG2의 논리 유니트들을 단순히 갱신 블록에 기록하는 것이다. In host write 4, action is to simply record the update block of the logical unit LG2. 시간 슬롯에 있어서의 여유 시간은 LG4의 최종 통합을 실시할 수 있는 기회를 제공한다. Slack in the time slot provides the opportunity to carry out the final integration of LG4.

브레이크아웃 통합 즐로이 갱신 블록으로 변환되지 않는 실시예 Embodiment that is not converted to the breakout consolidation block bla Roy update Example

도34A 및 도34B는 도28 및 도31의 보기들에 적용될때 다수개의 단계 통합의 단계 I 및 단계 III에 대한 제1의 경우를 도시한다. Figure 34A and 34B shows the case of the first to step I and step III of the plurality of integration stages, when applied to the views of Figs. 28 and 31.

도34A는 브레이크아웃 통합 블록이 갱신 블록으로 사용되지 않는, 그러나 그 통합 작용이 중단되는 통합 블록으로써 더 사용되는 경우를 도시한다. Figure 34A shows the case is further used as integrated blocks which are the breakout consolidation block is not used as an update block, but stops its integrating action. 특히, 도34A는 도33의 호스트 쓰기 #2에 대한 것이며, 호스트는 논리 그룹 LG1에 속하는 논리 유니트들의 갱신을 쓰기하며, 작용에 의하여 또 다른 논리 그룹 LG4와 관련된 블록의 통합을 트리거 된다. In particular, Figure 34A is for the host write # 2 in FIG. 33, the host write and the updates of logical units belonging to a logical group LG1, is triggered integration of the blocks associated with another logical group LG4 by the action.

최초 블록(블록 1) 및 갱신 블록 (블록 2)의 정보는 도28의 보기와 동일한 방법으로 구현된다. The first block (block 1) and the update block (Block 2) the information is implemented by the same method to the example in Figure 28. 통합 작용의 과정에서, 통합 블록(블록 3)은 섹션 C의 논리 유니트를 통합하는 포인트에서 결함을 발견한다. In the course of the integration function, integrated block (Block 3) it is found a defect point in the integrating logical units of section C. 그러나, 도28의 통합 구조와는 다르게, 본 발명에 의한 다수의 단계 구조는 브레이크아웃 통합 블록으로 작동하는 새로운 블록 (블록 4)에 대하여 통합 작용을 계속한다. However, different from FIG. 28 is integrated with the structure, the multiple stage structure according to the present invention continues the integration operation for the new block (Block 4) that serves as a breakout consolidation block. 단계 I 통합 작용에 있어서, 섹션 A 및 B에서의 논리 유니트들은 통합 블록(블록 3) 내에 통합된다. In the Phase I consolidation operation, logical units in sections A and B are incorporated in the integrated block (Block 3). 프로그램 오류가 통합 블록 내에 발생하면, 섹션 C 및 D 내의 나머지 논리 유니트들은 브레이크아웃 통합 블록 (블록 4)로 순차적으로 카피된다. When a program failure occurs in the consolidation block, the remaining logical units in sections C and D are copied sequentially into the breakout consolidation block (Block 4).

만약 호스트가 제2 논리 그룹과 관련한 블록의 통합 작용을 트리거하는 제1 논리 그룹에서의 갱신을 쓴다면, 제1 논리 그룹의 갱신들은 제1 논리 그룹을 위하여 갱신(새로운 갱신 블록)으로 기록된다. If the host writes an update in a first logical group that triggers a consolidation operation of blocks associated with a second logical group, updating of the first logical group are recorded in the updated (new update block) for the first logical group. 이러한 경우에 있어서, 브레이크아웃 통합 블록(블록 4)은 통합 작용 외부에서 소정의 갱신 데이터를 기록하기 위하여 사용되지 않으며, 브레이크아웃 통합 블록을 아직 완료되지 않은 상태로 남겨둔다. In this case, the breakout consolidation block (Block 4) is not used to record predetermined updated data outside the consolidation operation, leaving a breakout consolidation block that has not yet been completed to the state.

블록 1 및 2 내의 데이터는 다른 블록(블록 3) 내로 충분히 포함되기 때문에, 재생을 위하여 다시 지워질 수 있다. Since the data in Blocks 1 and 2 are fully included within the other block (Block 3), it can be cleared again for playback. 주소 테이블(GAT)은 논리 그룹을 위하여 최초 블록으로써 블록 3으로 갱신 된다. Address Table (GAT) is updated to the block 3 by the first block for the logical group. 갱신 블록에 대한 디렉토리 정보(ACL 내에 서, 도15 및 도18을 참조)는 블록 4로 역시 갱신되며, 상기 블록 4는 논리 그룹(예를 들면 LG4)에 대한 순차적인 갱신 블록으로 된다. Directory information for the update block (within the ACL, see FIG. 15 and 18) is also updated with the block 4, the block 4 is a sequential update block for the logical group (e.g., LG4).

그 결과, 통합된 논리 그룹은 한개의 블록 내에 로칼화되지 않고, 결합 통합 블록(블록 3) 및 브레이크아웃 통합 블록(블록 4)로 분산된다. As a result, the integrated logic group is not in the local screen of one block, it is distributed to the combined integrated block (Block 3) and the breakout consolidation block (Block 4). 본 구조의 중요한 특징은 그룹 내의 논리 유니트들이 한개 또는 그 이상의 블록에 대하여 통합을 분산시키는 비용만으로 본 단계를 실시하는 동안에 단지 한번 통합되는 것이다. An important feature of this structure is that logical units in the group are only integrated once during the conduct of this step only the cost to distribute one or more of integration with respect to the block. 이와 같은 방법으로, 통합 작용은 정상 규정 시간 내에 완료될 수 있다. In this way, the integration operation can be completed within the normal specified time.

도34B는 도34A에서 시작된 다수 단계 통합의 제3 및 최종 단계를 도시한다. Figure 34B illustrates the third and final phase of the multiple phase consolidation started in FIG. 34A. 도33과 관련하여 기술된 바와 같이, 페이즈 III 통합은 동반하는 통합을 트리거 하지 않는 다음 호스트 쓰기 과정과 같은 시간대에 제1 페이즈 이후에 적절한 시간에 실행된다. As is described in conjunction with 33, Phase III consolidation is executed at an appropriate time after the first phase in the same time zone as follows host write process that does not trigger an accompanying consolidation. 특히, 도34B는 시간 슬롯에 관한 것이며, 상기 시간 슬롯에서 도33의 호스트 쓰기 #4가 발생한다. In particular, FIG. 34B is related to the time slots, the time and the 33 of the host write # 4 occur in the slot. 상기의 기간 동안에, 호스트 쓰기는 또 다른 추가적인 통합 작용을 트리거하지 않고 논리 그룹 LG2에 속하는 논리 유니트들을 갱신한다. During the period, the host is writing without triggering another additional consolidation operation and updates logical units belonging to a logical group LG2. 따라서, 시간 슬롯 내의 잉여 시간은 논리 그룹 LG4의 통합의 완료를 위하여 단계 III을 위하여 이용될 수 있다. Thus, the surplus time in the time slot can be used for the phase III to complete the consolidation of the logical group LG4.

작용에 의하여 브레이크아웃 블록 내에 존재하지 않는 LG4의 모든 우수한 논리 유니트들을 브레이크아웃 블록 내로 통합한다. By the action incorporates all excellent logical units do not exist within LG4 breakout block into the breakout block. 예를 들면, 섹션 A 및 B는 블록 3으로부터 논리적으로 순차적인 순서로 브레이크아웃 블록(블록 4)로 카피된다. For example, sections A and B is copied to a logical block in order from an order 3 in a breakout block (Block 4). 블록 내의 논리 유니트의 랩-어라운드 구조 및 페이지 태그 사용(도13A 참조)에 있어서, 예문들이 블록 4에서, 섹션 A 및 B가 섹션 C 및 D 이후에 기록되는 것을 도시 한다 할지라도, 기록된 순서는 A, B, C 및 D의 순차적인 순서와 동일하다. Lap of logical units in the block-in-around using the structure and page tag (see FIG. 13A), FIG examples are shown to matter to be written to in block 4, sections A and B, section C, and after D, the recorded sequence a, B, is equal to the sequential order of C and D. 실시의 방법에 따라서, 카피되는 우수한 논리 유니트들의 현재 버전들은 그것이 이미 통합된 형태로 존재하기 때문에 블록 3으로부터 얻어지며, 그들이 삭제되지 않는다면, 블록 1로부터 수집될 것이다. According to the method of the embodiment, the current versions of the outstanding logical units to be copied are acquired from the block 3 because it is already present in the integrated form, they do not remove, will be collected from Block 1.

브레이크아웃 블록(블록 4) 상에서 최종 통합이 이루어지고 난 이후에, 그것은 노리 그룹을 위한 최초 블록으로서 지정되고, 해당하는 디렉토리 (예를 들면, GAT, 도17A를 참조)는 그에 따라 갱신될 것이다. After i is the final integration performed on the breakout block (Block 4), it (see, for example, GAT, Figure 17A) a directory that is specified as the first block for seaweed group, that will be updated accordingly. 이와 유사하게, 오류 물리 블록(블록 3)은 나쁜 것으로 표시되며, 맵 아웃된다. Similarly, the failed physical block (Block 3) is marked as bad, and map out. 다른 블록들 및 블록 1 및 블록 2는 삭제되고, 재생된다. Other blocks and block 1 and block 2 is deleted, and reproduced. 그리고, LG2에 대한 갱신은 LG2와 관련한 갱신 불록 내에서 기록된다. Then, the updates to the LG2 is recorded in the update Bullock related to LG2.

브레이크아웃 통합 블록이 갱신 블록으로 구현되는 실시예 Embodiment breakout consolidation block is implemented as an update block for example,

도35A 및 도35B는 도28 및 도33의 예문들에 적용된 것과 같이 목수 단계 통합의 단계 I 및 단계 III 작용에 대한 제2의 경우를 각각 도시한다. Figure 35A and 35B shows a case of the second to step I and step III action of carpenter step integration, as applied to the examples 28 and 33, respectively.

도35A는 브레이크아웃 통합 블록이 갱신 블록으로써 유지되어, 통합 블록이라기 보다는 호스트 쓰기를 수신하는 경유를 도시하고 있다. 35A is held by a block breakout consolidation block update, there is shown a way of receiving a host write, rather than integrated block. 이와 같은 구성은 논리 그룹 LG4를 갱신하고 공정 중에 동일한 논리 그룹 내에서의 통합을 트리거하는 호스트 쓰기에 잘 적용된다. Such a configuration is well suited to writing hosts to update the logical group LG4 and triggered integration within the same logical group in the process.

도34A에 도시된 바와 같이, 블록 3에 대한 블록 1 및 블록 2의 통합은 섹션 C를 처리하면서, 프로그램 오류를 검출할때까지 계속 진행된다. As shown in Figure 34A, is a block of the block 31 and the integration of the block 2 is in progress continues until detecting a program failure while processing section C. 통합은 브레이크아웃 통합 블록(블록 4)에 대하여 계속된다. Integration is continued with respect to the breakout consolidation block (Block 4). 논리 그룹의 통합을 완료하기 위하여 단 계 III에서 대기하는 대신에, 우수한 논리 유니트(예를 들면, 섹션 C 및 D 내에서)들이 브레이크아웃 블록(블록 4) 내에서 통합되곤 이후에, 브레이크아웃 블록은 갱신 블록으로써 유지된다. In the next step instead of waiting in the III to complete the consolidation of the logical group, excellent logic unit (for example, in the section C and D) are subsequently often integrated in the breakout block (Block 4), the breakout block It is maintained as an update block. 이와 같은 경우는 호스트 쓰기가 논리 그룹을 갱신하고, 그리고 동일한 논리 그룹의 통합을 틀히거하는 시나리오에 있어 잘 적용된다. Such cases are well suited in scenarios where the host write updates the logical group, and a framework for the integration of the same logical group higeo. 예를 들면, 이와 같은 구성에 따라 새로운 갱신 블록에 기록되는 대신에, 브레이크아웃 통합 블록(블록 4) 내에 기록되는 논리 그룹 LG4를 위하여 호스트 갱신을 기록하는 것을 가능하게 한다. For example, instead of being recorded in the new update block in accordance with this configuration, it makes it possible to record the host updates for the logical group LG4 recorded in the breakout consolidation block (Block 4). 갱신 블록(이전의 브레이크아웃 통합 블록(블록 4))은 순차적이거나 또는 거기에 기록되는 호스트 데이터에 따라 혼돈 상태가 된다. Update block (previously the breakout consolidation block (Block 4)) is a chaotic state, depending on the host data recorded in sequential or or there. 도시된 예문에서와 같이, 섹션 C에서의 논리 유니트들의 다음 새로운 버전이 블록 4 내의 선행 버전을 폐쇄 상태로 만들기 때문에 블록 4는 혼돈상태가 된다. Because it creates a, in the preceding version is then new versions of the logical units of section C in the block 4, as shown in the illustrated examples in the closed state blocks 4 is a chaotic state.

중간 단계 과정에 있어서, 블록 3은 LG4에 대하여 최초 블록으로 정의되며, 블록 4는 관련된 갱신 블록이 될것이다. In the intermediate procedure, the block 3 is defined as the first block with respect to the LG4, block 4 will be the associated update block.

도35B는 제2의 경우에 대하여 도35A에서 시작된 다수 단계 통합의 제3 및 최종 단계를 도시한다. Figure 35B shows a number of steps is also integrated third and final step of the started at 35A for the case of the second. 도33과 관련하여 기술한 바와 같이, 단계 III의 통합은 동반하는 통합 작용을 트리거하지 않으면서 다음 호스트 쓰기 시간과 같이 제1 단계 이후에 소정의 타당한 시간에 실시된다. As also described with reference to 33 and integrated in step III it is carried out at a predetermined reasonable time after the first stage, such as standing next host write time do not trigger the integrated action accompanied. 상기의 과정 동안에, 호스트 쓰기는 통합 작용을 트리거하지 않고 논리 그룹에 속하는 논리 유니트들을 갱신한다. During the process, the host write does not trigger integration action updates logical units belonging to a logical group. 시간 슬롯에서의 여분의 시간은 논리 그룹 LG4의 통합의 완료를 위하여 단계 III 작용을 위하여 이용될 수 있다. Extra time in the time slot can be used for Phase III operation for completion of the consolidation of logical group LG4.

논리 그룹 LG4는 블록 3 및 블록 4로부터 새로운 통합 블록(블록 5)로 수집 된다. Logical group LG4 is collected from the block 3 and the block 4 to a new consolidation block (Block 5). 블록 3은 "나쁜" 표시가 부여되며, 블록 4는 재생되고, 새로운 통합 블록(블록 5)은 논리 그룹 LG4를 위하여 새로운 블록이 된다. Block 3 is "bad" indication is given, the block 4 is reproduced, the new integrated block (Block 5) is a new block for the logical group LG4. 블록 1과 블록 2와 같은 다른 블록들은 역시 삭제되고, 재상된다. Other blocks, such as block 1 and block 2 are also deleted, and, recyclable.

단계화된 프로그램 오류 취급의 다른 실시예 Another embodiment of the staged program error handling

도31A, 31B, 34A, 34B, 및35B에기술된 예문들은 동일한 논리 그룹에 속하는 논리 유니트들만 저장하는 물리 블록(메타블록)을 갖는 바람직한 블록 관리 시스템에 응용된다. Figure 31A, 31B, 34A, 34B, and 35B described in the examples are applied to a preferred block management system with a physical block (metablock) storing only logical units belonging to the same logical group.

본 발명은 WO 03/027828 및 WO 00/49488에 공개된 것과 같은 불리 블록 정렬에 대하여 더 이상의 논리 그룹이 존재하지 않는 다른 블록 관리 시스템에 동일하게 적용 가능하다. The present invention is equally applicable to other block management system that does not have more than one logical group is present with respect to the disadvantages block alignment, such as those disclosed in WO 03/027828 and WO 00/49488. 이러한 다른 시스템에 대한 단계화된 프로그램 오류 취급 방법의 예문들은 도36A, 36B 및36C에 도시되어 있다. A staged program failure handling method to these other systems, examples are shown in Figs. 36A, 36B and 36C.

도36A는 호스트 쓰기가 갱신 블록의 폐쇄를 트리거할때 그리고 갱신 브록이 순차적일때 시나리오에 적용되는 것과 같이 단계화된 프로그램 에러 취급 방법을 도시한다. Figure 36A illustrates the phased program error handling method as applied to Brock and updates the sequence when the scenario when the host write triggers the closure of an update block. 이 경우에 있어서 폐쇄는 최초 블록 2로부터 순차 갱신 블록 3으로 나머지 유효 데이터(B 및 C)를 카피하여 수행된다. In this case, closing is carried out by copying the remaining valid data (B and C) in a sequential update block 3 from the first block to the second. 데이터 부분 C 프로그래밍의 시작점에서 프로그램 오류가 발생하는 경우, 부분 C는 예약된 블록 4에 프로그램된다. When the at the beginning of the data portion C programming, program error, part C is programmed to the reserved Block 4. The 새로운 호스트 데이터는 새로운 갱신 블록 5(미도시)에 쓰여진다. The new host data is written to a new update Block 5 (not shown). 방법의 단계 II 및 III는 혼돈 블록 폐쇄의 경우과 동일하다. Steps II and III of the method is the same gyeongwoogwa chaotic block closure.

도36B는 갱신 블록들의 갱신의 경우에 부분 블록 시스템으로 인가되는 것과 같이 단계화된 프로그램 에러 취급을 도시하는 도면이다. Figure 36B is a view showing a staged program error handling, as applied to the partial block system in the case of updating of updating block. 이러한 경우에 있어서, 논리 그룹은 최초 블록 1 및 다른 갱신 블록들에 저장된다. In this case, the logical group is stored in original Block 1, and other update blocks. 통합 작용은 최초 블록 1 및 다른 갱신 블록 2로부터 갱신 블록(소정의 규칙에 따라 선택되는, 도면에서는 블록 3)들 중 한개의 블록으로 데이터를 카피한다. Integration action is a copy of the data in one block of the (block 3 in the figure, is selected in accordance with a predetermined rule) update blocks from the first block 1 and the other update Block 2. The 상기에 기술한 주요 시나리오로부터의 차이점은 블록 3은 이미 부분적으로 쓰기가 되었다는 것이다. The difference from the main scenario, which is described in the block 3 has already been partially writing.

도36C는 메타블록으로 메핑되는 논리 그룹을 지원하지 않는 기억 블록 관리 시스템 내에서 쓰레기 수집 작용 또는 청소 작업을 취급하는 단계화된 프로그램 에러를 도시한다. Figure 36C illustrates the phased program error handling the garbage collection operation or a cleaning operation in the memory block management system that does not support a logical group mapped to a metablock. 그와 같은 메모리 블록 관리(사이클 저장) 시스템은 WO 03/27828 A1에 공개되어 있다. The memory block management, such as the (storage cycle) system is disclosed in WO 03/27828 A1. 사이클 저장 시스템의 주요 특징은 블록들이 단일의 논리 그룹을 위하여 할당되지 않는다는 것이다. The main features of the cycle storage system is that blocks may not be assigned to a single logical group. 메타블록 내에서 제어 데이터를 위하여 다수의 논리 그룹화에 대한 지원이 존재하지 않는다. The support for multiple logical grouping for control data in a metablock exists. 쓰레기 수집은 부분 폐쇄 블록으로부터 약간의 데이터를 가질 수 있는 위치 재설정 블록으로 아무 관계를 갖지 않는(랜덤 논리 블록 주소들) 유효 데이터 섹터를 갖는 것이다. Garbage collection is to have a few blocks with reset position, which may have data that does not have any relationship (random logical block addresses) valid sectors of data from a portion close block. 만약 위치 재설정 블록이 작용 과정 중에서 충분한 것을 갖는다면, 또 다른 한개도 개방될 것이다. If the reset position blocks having the sufficient effect in the process, another will also be opened.

비순차 갱신 블록 인덱싱 Out-of-order update block index

혼돈 블록 인덱싱에 관한 조기 섹션에 있어서, 그리고 도16A 내지 16E와 관련하여, CBI 섹터는 혼돈 또는 비순차 갱신 블록 내에 랜덤하게 저장되는 논리 섹터의 위치의 자취를 추적하는 인덱스를 저장한다. In the earlier section on chaotic block indexing and in connection with Figs. 16A to 16E, CBI sector may store the index for tracking the locus of the position of the logical sector to be stored randomly in the chaotic or non-sequential update block.

본 발명의 다른 양상에 따라서, 비순차 논리 유니트를 갖는 갱신 블록을 지지하는 블록 관리 시스템을 갖는 비휘발성 메모리에 있어서, RAM으로 버퍼링되는 갱신 블록 내의 논리 유니트의 인덱스는 비휘발성 메모리에 주기적으로 저장된다. According to another aspect of the present invention, in the non-volatile memory with a block management system that supports the update block having a non-sequential logical units, an index of the logical units in an update block buffered in RAM may be periodically stored in the non-volatile memory . 일실시예에 있어서, 인덱스는 인덱스들을 저장하기 위한 블록 내에 저장된다. In one embodiment, the index is stored in a block for storing the index. 그리고 인덱스는 갱신 블록 내에 저장된다. And the index is stored in the update block. 또 다른 실시예에 있어서, 상기 인덱스는 각각의 논리 유니트의 헤더 부분에 저장된다. In still another embodiment, the index is stored in a header portion of each logical unit. 또 다른 양상에 있어서, 최종 인덱스 갱신 이후 그리고 그 다음 이전에 쓰여진 논리 유니트들은 각각의 논리 유니트의 헤더에 저장된 인덱싱 정보를 갖는다. In a further aspect, since the last index update and the next logical units written prior to have the index information stored in the header of each logical unit. 이와 같은 방법으로, 전원 중단 이후에, 최근에 쓰여진 논리 유니트의 위치는 초기화 과정 중에 스캐닝을 실시할 필요 없이 결정된다. In this way, after a power interruption, the location of recently written logical units to is determined without having to perform a scanning during initialization. 또 다른 발명의 양상에 있어서, 블록은 한개의 논리 서브그룹보다 더 관련되며, 부분적으로는 순차적으로 그리고 부분적으로는 비순차적으로 관리된다. In yet another aspect of the invention, the block is more relevant than the one of the logical sub-group, and in part will be sequentially and in part to manage the out-of-order.

소정의 트리거링 이벤트 이후의 CBI 블록에서의 CBI 섹터 내에 저장된 인덱스 포인터 Index Pointer Stored in a CBI sector in the CBI block after a predetermined triggering event

도16A 내지 16E에 도시된 구조에 따라, 혼돈 블록 내의 최근에 쓰여진 섹터들의 리스트는 제어기 RAM 내에 제공되어 있다. Also in accordance with the structure shown in Fig. 16A to 16E, lists of recently written sectors in the chaotic block is provided in the controller RAM. 가장 현재의 인덱싱 정보를 포함하는 CBI 섹터는 소정의 혼돈 블록과 관련된 논리 그룹 내에서 소정 횟수의 쓰기 이후에, 메모리(CBI 블록 620)를 플래시하기 위하여 쓰여진다. The CBI sector containing the current indexing information is after the writing of the predetermined number of times within a logical group associated with a given chaotic block, is written to the flash memory (CBI block 620). 이러한 방법으로, CBI 블록으로의 갱신의 수는 줄어든다. In this way, the less the number of updates to the CBI block.

논리 그룹용 CBI의 다음 갱신 전에, 논그 그룹의 최신 기록 섹터의 리스트는 컨트롤러 램에 홀드된다. Before the next update of the logical group for CBI, the list of sectors of the latest recording nongeu group is held in controller RAM. 메모리 장치가 전원 차단과 같은 경우에 처하면 이와 같은 리스트는 상실되지만, 전원이 다시 공급된 이후에 초기화되는 과정에 갱신된 블록들을 스캐닝하여 다시 재건(rebuld)할 수 있다. List memory unit is cheohamyeon in cases such as power off, but this is lost, by scanning the blocks updated in the process of being initialized after the power is re-supplied may be rebuilt (rebuld).

도37은 동일한 논리 그룹의 모든 N-섹터 쓰기 이후에 관련된 혼돈 인덱스 섹 터 블록으로의 CBI 섹터 쓰기 스케쥴의 예문을 도시한다. 37 shows examples of the writing of a CBI sector schedules the chaotic index block associated with the sectors after writing all N- sectors of the same logical group. 예문은 동시 갱신을 수행하고 있는 두개의 논리 그룹 LG3 및 LG11을 도시한다. Examples performs concurrent updates shows two logical groups LG11 and LG3 in. LG3의 논리 섹터들은 최초 블록 내에 순차적인 순서로 저장된다. Logical sector of LG3 are stored in sequential order in the first block. 그룹 내의 논리 섹터들의 갱신들은 호스트에 의하여 표시되는 순서로 관련 갱신 블록 상에 기록된다. Update of the logical sectors in the group are recorded on an associated update block in the order represented by the host. 예문들은 혼돈 갱신 순서를 도시한다. Examples are showing a chaotic update sequence. 동시에, 논리 그룹 LG11은 그 갱신 블록에서 이와 유사한 방법으로 갱신 된다. At the same time, the logical group LG11 is updated in a similar way in the update block. 모든 논리 섹터 쓰기 이후에, 갱신 블록에서의 그 위치는 제어기 RAM 내에 보관된다. After every logical sector write, its position in the update block is kept in controller RAM. 모든 트리거링 이벤트 이후에, 갱신 블록 내의 논리 섹터들의 현재 인덱스는 비휘발성 혼돈 인덱스 섹터 블록으로 혼돈 인덱스 섹터의 형태로 쓰여진다. After all triggering events, the current index of the logical sectors in the update block is written in the form of a chaotic index sector to the non-volatile chaotic index sector block. 예를 들면, 소정의 트리거링 이벤트는 모든 N 쓰기 이후에 발생하며, N은 3이다. For example, the predetermined triggering events occur after every N write, N is three.

주어진 보기들은 섹터 형태의 데이터 논리 유니트로 제공된다. Given view are provided to the data logical units of sector form. 본 기술 분야의 당업자는 논리 유니트가 섹터 또는 섹터의 그룹을 포한하는 페이지와 같은 집합체이다. One skilled in the art is a collection, such as pages in which a logical unit is pohan a group of sectors or sector. 또한, 순차 블록 내의 제1 페이지는 페이지 태그 랩 아라운드가 제위치에 있을 수 있기 때문에, 논리 페이지 0이 될 필요가 없으며, 페이지 태그 랩 어라운드는 적소에 있을 수 있다. In addition, the first page in a sequential block does not have to be, the logical page 0, since a page tag wrap round ah may be in place, the page tag wrap around could be in place.

소정의 트리거링 이벤트 이후의 혼돈 갱신 블록에서의 CBI 섹터에 저장된 인덱스 포인터 The index pointer stored in a CBI sector in the chaotic update block since a predetermined triggering event

다른 실시예에 있어서, 인덱스 포인터는 모든 N 쓰기 이후에 혼돈 갱신 블록 내의 CBI 섹터에 저장되어 있다. In another embodiment, the index pointer is stored in a CBI sector in the chaotic update block after every N writes. 이러한 구조는 인덱스가 CBI 섹터에 저장되는 점에서 이전에 설명한 실시예와 동일하다. This structure is the same as the embodiment previously described in that the index is stored in a CBI sector. 이전의 실시예와의 차이점은, CBI 섹터가 CBI 섹터 블록에 기록되다는 것이며, 갱신 블록 그 자체에는 기록되지 않는다. Differences from the previous embodiment, the CBI sector will be written to the CBI sector block and is not recorded in the update block itself.

혼돈 갱신 블록 그 자체에서의 혼돈 블록 인덱싱 정보를 유지하는 것이다. Chaotic update block is to keep the chaotic block indexing information in itself. 도37A, 37B 및 37C는 3개의 다른 스테이지들에서 CBI 섹터들을 저장하는 갱신 블록의 상태를 도시한다. Figure 37A, 37B and 37C shows a state of the update blocks for storing CBI sectors at three different stages.

도38A는 CBI 섹터가 소정 횟수의 쓰기 이후에 기록될때 포인터 까지의 갱신 블록을 도시한다. Figure 38A is a CBI sector when written after writing a predetermined number of times showing the updating blocks of the pointer to the. 상기 예문에 있어서, 호스트가 논리 섹터 0-3을 순차적으로 쓴 이후에, 다른 버전의 논리 섹터 1을 다시 쓸것을 명령하여, 데이터 쓰기의 연속 순서를 브레이킹하게 된다. In the above examples, after the host has written logical sectors 0-3 sequentially, to order the re-write the first logical sector in the other version, thereby breaking the consecutive order of the data writing.

갱신 블록은 CBI 섹터에 포함된 혼돈 블록 인덱싱의 구현에 따라 혼돈 갱신 블록으로 변환된다. Update block is converted into a chaotic update block in accordance with the implementation of a chaotic block index included in the CBI sector. 이전에 기술한 바와 같이, CBI는 혼돈 블록의 모든 논리 섹터들에 대한 인덱스들을 포함하고 있다. As previously described, CBI contains indices for all logical sectors of the chaotic block. 예를 들면 0번째 입력은 0번째 논리 섹터에 대한 갱신 블록 내에서의 옵셋을 포함한다. For example, zeroth input includes the offset in the update block for the 0 th logical sector. 이와 유사하게 n-번째 입력은 n-번재 논리 섹터에 대한 옵셋을 표시한다. Similarly n- th input represents the offset to the n- beonjae logical sector. CBI 섹터는 갱신 블록 내의 사용 가능한 다음 위치로 쓰여진다. CBI sector is written to the next available location in the update block. 빈번한 플래시 접근을 방지하기 위하여, CBI 섹터는 모든 N 데이터 섹터 쓰기 이후에 쓰여진다. To avoid frequent flash access, CBI sector is written after every N data sector write. 이와 같은 보기에서, N은 4이다. In this view, the N is four. 만약 이러한 시점에 전원이 단절되면, 최종 쓰기 섹터는 CBI 섹터가 되며, 블록은 혼돈 갱신 블록으로 정의된다. If the power is cut off in such a point, the last write sector is a CBI sectors, the block is defined by the chaotic update block.

도38B는 인덱스 섹터 이후에 거기에 추가로 기록되는 논리 섹터 1, 2 및 4를 갖는 도38A의 갱신 블록을 도시한다. Figure 38B illustrates the update block of FIG. 38A having a logical sector there are 1, 2 and 4 are added to the record after the index sector. 논리 섹터 1 및 2의 새로운 버전은 갱신 블록 내에 기록된 구형 버전을 앞선다. New versions of logical sectors 1 and 2 precedes a spherical version recorded in the update block. 이러한 시점에 있어서의 파워 사이클의 경우에 있어서, 최종 쓰기 섹터는 처음으로 발견될 필요가 있으며, 그리고 최종의 쓰기 인덱스 섹터 및 최근의 쓰기 데이터 섹터를 찾기 위하여 스켄될 필요가 있다. In the case of the power cycle in such a point, the end-writing sector may need to be first detected, and it is necessary to scan to find the final letter index sector and the last sector of the write data.

도38C는 인덱스 섹터의 다음 기록을 트리거하기 의하여 스여진 또 다른 논리 섹터를 갖는 도38B의 갱신 블록을 도시한다. Figure 38C illustrates the update block of Fig. 38B has a switch excitation another logical sector by to trigger the next recording of an index sector. 또 다른 N(N=4) 섹터 쓰기 이후에 동일한 갱신 블록이 CBI 섹터의 또 다른 현재 버전을 기록한다. Another N (N = 4) sector write since the same update block is written in another current version of the CBI sector.

본 구조의 장점은 별도의 CBI 블록이 필요 없는 장점이 있다. The advantage of this structure has the advantage of no need for a separate CBI block. 동시에, 물리 플래시 섹터의 오버헤드 데이터 영역이 충분히 커서 혼돈 갱신 블록 내의 섹터들을 유효화하기 의하여 인덱스용으로 필요한 입력의 수를 수용할 수 있다. At the same time, it is possible, by validating the sectors within the overhead data area of ​​a physical flash sector is large enough chaotic update block to accommodate the number of inputs required for the index. 혼돈 갱신 블록은 모든 정보를 구비하며, 주소번역을 위하여 외부 데이터가 필요 없다. Chaotic update block is provided with all the information, the external data is not necessary for the address translation. 이에 따라, CBI 블록 압축에 따른 제어 갱신이 감소하며, 보다 짧은 케스케이드 제어 갱신이 가능한 보다 단순한 알고리즘을 성취한다. Accordingly, decrease in control update in accordance with the CBI block compressed, and achieves simple algorithm than the shorter cascade control update available.

혼돈 갱신 블록 내의 데이터 섹터 헤더에 저장된 최근 쓰여진 섹터들에 대한 정보 Information for the last written sector of data stored in the sector header in the chaotic update block

본 발명의 다른 양상에 따르면, 블록에 기록된 논리 유니트의 인덱스는 모든 N 쓰기 이후에 비휘발성 메모리에 저장되며, 중간 쓰기의 논리 유티트에 대한 현재의 정보는 각각의 쓰여진 논리 유니트의 오버헤드부에 저장된다. According to another aspect of the invention, is an index of the logical units recorded in a block is stored in nonvolatile memory after every N write, the current information on the medium write logic yuti agent is part of overhead logic unit each written It is stored in. 이러한 방법으로, 전원이 재공급된 이후에, 최종 인덱스 갱신 이후에 쓰여진 논리 유니트에 대한 정보는 블록을 스캔할 필요없이 블록 내의 최종 쓰여진 논리 유니트의 오버헤드 부분으로부터 신속하게 얻을 수 있다. In this way, after the power is restored, the information about the logical units written after the last index update can be obtained quickly from the overhead portion of the last written logical unit in the block, without having to scan the block.

도39A는 혼돈 갱신 블록 내의 각 데이터 섹터의 헤더 부분에 저장되는 중간 쓰기을 위한 중간 인덱스를 도시한다. Figure 39A illustrates an intermediate index for the intermediate sseugieul stored in the header portion of each data sector in the chaotic update block.

도39B는 각각의 섹터의 헤더에 존재하는 중간 쓰기를 위한 중간 인덱스를 저장하는 보기를 도시하는 도면이다. Figure 39B is a view that shows an example of storing an intermediate index for the intermediate writing present in the header of each sector. 보기에서, 4개의 섹터 이후에, LS0 내지 SL3이 쓰여지며, CBI 인덱스는 블록 내의 다음 섹터로써 쓰여 진다. Showing, since four sectors are written to the LS0 SL3, CBI index is written as the next sector in the block. 따라서, 논리 섹터 LS1', SL2' 및 SL4는 블록으로 쓰여진다. Accordingly, the logical sector LS1 ', SL2' and SL4 is written to the block. 각각의 시간에 있어서, 헤더는 최종 CBI 인덱스 이후에 쓰여진 논리 유니트용 중간 인덱스를 저장한다. For each time, the header will store an intermediate index for the logical units written since the last CBI index. LS2' 내의 헤더는 최종 CBI 인덱스 뿐만 아니라 LS1'의 그것의 옵셋 (예를 들면, 위치)를 제공하는 인댁스를 갖는다. LS2 'header in not only the final LS1 CBI index "has the Dax that provides its offset (e. G., Position) of the. 이와 유사하게, LS4 내의 헤더는 최종 CBI 인덱스 뿐만 아니라 LS1' 및 LS2'의 옵셋을 제공하는 인덱스를 갖는다. Similarly, the header in the LS4 has an index of not only the final CBI index provides an offset of the LS1 'and LS2'.

최종적으로 쓰여진 데이터 섹터는 N-최종 쓰기 페이지(예를 들면, 최종 스여진 CBI 섹터)까지의 정보를 포함한다. Finally written data sector N- final letter page includes information to (e.g., the final scan excitation CBI sector). 전원 재공급이 개시되면, 최종 CBI 인덱스는 CBI 인덱스 섹터 이전에 쓰여진 논리 유니트들을 위한 인덱싱 정보를 제공하며, 쓰여진 다음 논리 유니트용 인덱싱 정보는 최종 쓰여진 데이터 섹터의 헤더에 발견된다. When the power supply is re-started, the end CBI index provides indexing information for logical units written prior to the CBI index sector, and indexing information for logical units written next is found in the header of the last written data sector. 이와 같은 구조는 그들의 위치를 결정하기 위하여 그 다음에 쓰여진 섹터들에 대한 블록을 스캔할 필요성을 제거(초기화)하는 장점을 갖는다. This structure has the advantage of removing (initialize) the need to scan the block for the next sector is written in order to determine their position.

데이터 섹터의 헤더에서 중간 인덱스 정보를 저장하는 구조는 CBI 인덱스 섹터가 갱신 블록 내에 저장되었는지 또는 분리 CBI 섹터가 앞선 섹션에 저장되었는지에 대한 여부에 대하여 동등하게 적용 가능하다. In the header of the data sector structure for storing intermediate index information is equally applicable with respect to whether as to whether stored in a previous section that the CBI index sector is stored in the update block or a separate CBI sector.

혼돈 갱신 블록 내의 데이터 섹터 헤더에 저장된 인텍스 포인터 Index pointer stored in the data sector headers in the chaotic update block

또 다른 실시예에 있어서, 전체 CBI 인덱스는 혼돈 갱신 블록 내의 각각의 데이터 섹터의 서버 헤더 부분에 저장된다. In yet another embodiment, the entire CBI index is stored in the server, the header portion of each data sector in the chaotic update block.

도40은 혼돈 갱신 블록 내의 각각의 데이터 섹터의 헤더 내에 저장된 혼돈 인덱스 필드 내의 정보를 도시한다. 40 shows the information in the chaotic index field is stored in the header of each data sector in the chaotic update block.

섹터 헤더의 정보 용량은 제한적이다, 따라서 단일 섹터에 의하여 제공되는 인덱스의 범위는 계층 인덱싱 구조의 부분이다. Information capacity of a sector header is limited, and therefore the range of indices provided by a single sector is a part of the indexing structure layer. 예를 들면, 메모리의 특정 평면 내의 섹터들은 인덱싱을 상기 평면 내에서 섹터들에게만 제공한다. For example, sectors within a specific plane of the memory may be available only to an index within the plane sector. 따라서, 논리 주소의 범위는 서브 범위들로 나누어져 간접적인 인덱싱 구조가 적용되도록 한다. Thus, the range of logical addresses are to be applied to an indirect indexing structure is divided into sub-ranges. 예를 들면, 만약 64개의 논리 주소를 갖는 섹터들이 한 개의 평면에 저장되면, 각각의 섹터는 섹터 옵셋 값들에 대하여 3개의 필드를 갖는다. For example, if a sector having a logical address 64 are stored in a single plane, each sector has three fields with respect to the sector offset values. 여기서 각각의 필드는 4개의 옵셋 값들을 저장할 수 있다. Wherein each field may store 4 offset values. 제1 필드는 논리 옵셋 범위 0-15, 15-31, 32-47 및 48-63 내의 최종으로 쓰여진 섹터에 대한 물리적인 옵셋을 갖는다. A first field has a physical offset for a sector is written to the end in the logical offset ranges 0-15, 15-31, 32-47 and 48-63. 그리고 제2 필드는 그것과 관련된 범위 내에서 4개의 섹터의 4개의 서브 범위에 대한 물리적인 옵셋 값들을 정의한다. The second field defines physical offset values ​​for 4 sub-ranges of 4 sectors in the range associated with it. 3번째 필드는 그것이 관련된 서브 범위 내에 4개의 섹터에 대한 물리적인 옵셋 값들을 갖는다. The third field has the physical offset values ​​for 4 sectors within the sub-range it is associated. 혼돈 갱신 블록 내의 논리 섹터의 물리적인 옵셋은 3섹터까지 간접적인 옵셋 값들을 읽어서 결정된다. The physical offset of a logical sector within the chaotic update block is determined by reading indirect offset values ​​from the third sector.

이와 같은 구조의 장점은 블록이 CBI 블록 또는 CBI 섹터에 대한 필요성을 제거하는 것이다. An advantage of such a structure is to block the removal of the need for the CBI block or a CBI sector. 그렇지만, 물리 플래시 섹터의 오버헤드 데이터 영역은 충분히 커서 혼돈 갱신 블록에서 섹터들을 제거하기 위한 인덱스를 위하여 필요한 입력수를 수용할 수 있다. However, the overhead data area of ​​a physical flash sector is large enough to accommodate the required number of input to the index for the removal of a sector in a chaotic update block.

혼돈 갱신 블록을 위한 논리 그룹 내의 제한된 논리 범위 Limited range logic in the logic group for the chaotic update block

논리 그룹 내에서, 비선형적으로 쓰여질 수 있는 세터의 논리 범위가 감소한다. In the logical group, the logical range of decreases setter that can be written in a nonlinear fashion. 범위 외부의 섹터들이 최초 블록 및 쓰레기 수집 작용 내에서 순차적으로 쓰여지는 기술의 주요 장점은 순차적으로 쓰여진 데이터가 보다 빨리 실시되는 것과 같이, 그리고 단지 한 개의 멀티-섹터 페이지(멀티-칩 케이스의 경우에 있어서 페이지의 병렬 읽기가 될 수 있는)가 목표 페이지(단, 소스 및 목표가 정렬되어 있는, 만약 그러하지 않다면, 또 다른 읽기가 필요한)에 대하여 모든 데이터를 취하기 위하여 읽기를 할 필요(가 있기 때문에 보다 짧은 시간 내에 이루어질 수 있다는 것이다. 순차 데이터는 온-칩 카피 특징을 이용하여 제어기로부터 또는 제어기로의 데이터 이전 없이 소스로부터 목표로 카피될 수 있다. 만약 소스 데이터가 혼돈 블록에서와 같이 흩어지면, 섹터 당 일 페이지 읽기가 목적지에 쓰여지는 모든 섹터를 수집하기 위하여 필 In the case of the chip case-range primary advantage of the outside of the sectors is technology written sequentially in the original block and garbage collection operation is, as the data sequentially written to be performed more quickly, and only one multi-sector page (multi- in the target page, which may be a parallel reading of page) (note that the source and target If is, if geureohaji that sort, and another reading is shorter than that because the necessary (that you read to take all the data about the necessary) that it can be made in the time sequential data is one - may be copied to the target from the source of zero data previously from the controller using the chip copy feature, or the controller, if the source data is heuteojimyeon as in chaotic blocks, one per sector, in order to collect all the pages are read, written to the destination sector field 할 수 있다. Can.

일실시예에 있어서, 논리 제어를 소정 개수의 섹터들로 제한하는 대신에, CBI의 개수를 줄여서 구현된다 (보다 큰 그룹/메터블록을 위하여 혼돈 범위를 제한하는 것이 이해가 된다). In one embodiment, instead of limiting the control logic into sectors of a predetermined number, it is achieved by reducing the number of CBI (makes sense to limit chaotic range to a larger group / block meter). 예를 들면, 만약 메타블록/그룹이 2048섹터라면, 8CBI 섹터가 필요할지도 모른다. For example, if the metadata block / group is 2048 sectors may require 8CBI sector. 그리고 각각은 256개의 섹터들로 구성되는 한 개의 서브 그룹의 연속 논리 범위를 커버링한다. And each of which covering a contiguous logical range of one sub-group consisting of the 256 sectors. 만약 CBI의 개수가 4개로 제한적이면, 혼돈 메타블록은 4개의 서브 그룹까지의 쓰기 섹터에 대하여 사용될 수 있다. If the number of CBI limited to four, Chaotic metablock can be used for writing sectors of up to 4 sub-groups. 논리 그룹은 4개의 부분적으로 또는 전체적으로 서브 그룹을 가진다. Logical group has a subgroup of four partially or entirely. 최소한 4개의 서브 그룹이 충분히 순차적으로 존재한다. At least four sub-groups is fully present in sequence. 만약 혼돈 블록이 4개의 사용 가능한 CBI 섹터들을 가지면, 호스트는 CBI 섹터의 범위 밖에서 섹터들을 쓰기 한다. If chaos block if it has four available CBI sectors, the host will write the sectors outside the range of the CBI sector. 그리고, 혼돈 논리 그룹은 통합되어, 폐쇄되어야 한다. Then, the chaos logical group will be incorporated, and should be closed. 그러나 이것은 실제 적용에 있어서 대단히 발생하기에 희박하다. But this is very unlikely to occur in the actual application. 호스트들이 2048 세터(논리 그룹)의 범위 내에 256 섹터(서브 그룹)의 4개의 혼돈 범위를 필요로 하지 않는다. Hosts does not require a four chaotic ranges of 256 sectors (sub-groups) within a range of 2048 setter (logical group). 결과적으로, 정상적인 경우에, 쓰레기 수집 시간은 영향을 받지 않지만, 제한 규칙 거드는 호스트의 시간 아웃을 트리거할 수 있는 너무 긴 쓰레기 수집의 극한 경유를 형성한다. As a result, in normal cases, garbage collection time is not affected, thereby forming the ultimate way of the waste is too long to trigger the time limit rule out going to collect favorite host.

부분 순차 혼돈 갱신 블록의 인덱싱 Sequential Chaotic Update Block Indexing portion of

순차 갱신 블록이 혼돈 관리 모드로 변환되기 이전에 부분적으로 쓰여지면, 논리 그룹의 순차적으로 갱신된 섹션의 모든 부분 또는 일부 부분은 순차적으로 갱신되며, 그리고 혼돈 갱신 관리는 논리 그룹의 주소 순위의 서브세트로 인가된다. When the part written in a previous sequential update block to be converted to chaotic management mode, in sequence all the parts or some parts of the updated section of the logical group is updated in sequence, and the chaotic update management is a subset of the address order of the logical group It is applied to.

제어 데이터 통합 및 관리 Control data integration and management

메모리 장치에 저장된 데이터는 전원 차단으로 인하여 와해 되며, 소정의 메모리 위치에 결함이 발생한다. The data stored in the memory unit is broken down due to power-off, the defect is generated in a predetermined memory location. 만약 메모리 블록 내에 결함이 발견되면, 상기 데이터는 다른 블록으로 위치 이동하며, 경함 블록은 버려진다. If in the memory block defect is found, said position data is moved to another block, gyeongham block is discarded. 만약 에러가 크지 않으면, 데이터와 함께 저장되는 에러 수정 코드(ECC)에 의하여 온-더-프라이 방법으로 수정된다. If the error is large, the on by error correction code (ECC) that is saved with the data - is modified by Fry methods - more. 그러나, ECC가 상기와 같은 문제 데이터를 수정하지 못하면 많은 시간이 필요하다. However, more time is needed if the ECC data to correct the problem as described above. 예를 들면, 에러 비트의 개수가 ECC의 용량을 초과할 때이다. For example, the number of error bits that is when they exceed the capacity of the ECC. 이와 같은 상황은 메모리 블록 관리 시스템과 관련된 제어 데이터와 같은 임계 데이터에 대하여는 수용불가이다. Such a situation is unacceptable with respect to the threshold data, such as control data associated with the memory block management system.

제어 데이터의 보기는 도20에 도시된 디렉토리 정보 및 메모리 블록 관리 시스템과 관련한 블록 할당 정보이다. View of the control data is the block allocation information associated with the directory information, and the memory block management system shown in FIG. 앞서 기술한 바와 같이, 제어 데이터는 고속의 RAM 및 저속의 비휘발성 메모리 블록 내에 유지된다. As stated previously, the control data is held in a non-volatile memory block of the high-speed and low-speed RAM. 빈번하게 변경되는 제어 데이터는 비휘발성 메타블록에 저장된 등가 정보를 갱신하기 위하여 주기적으로 제어 쓰기로 RAM에 유지된다. Control data to be frequently changed is held in RAM to periodically write controlled in order to update equivalent information stored in a nonvolatile metablock. 이와 같은 방법으로, 제어 데이터는 비휘발적으로 저장되나, 빈번한 접근이 필요없는 저속의 플래시 메모리이다. In this way, the control data is stored in a nonvolatile but small, the low speed of the flash memory does not require frequent access. GAT, CBI, MAP 및 MAPA와 같은 제어 데이터 구조의 계층은 플래시 메모리에 유지된다. Hierarchy of control data structures such as GAT, CBI, MAP, and MAPA is maintained in flash memory. 제어 쓰기 작용에 따라 RQAM 내의 제어 데이터 구조로부터의 정보가 플래시 메모리 내의 등가 제어 데이트를 갱신하게 된다. The information from the control data structure in the RQAM will update the equivalent control data within a flash memory according to a control write operation.

임계 데이터 중복 Threshold data redundancy

본 발명의 다른 양상에 따르면, 제어 데이터와 같은 데이터 약간 또는 전부는 중복적으로 유지되면 높은 신뢰도를 확보할 수 있다. According to another aspect of the invention, some or all of data such as control data, it is possible to ensure a high reliability when kept redundantly. 중복은 다음과 같은 방법, 즉 메모리 셀의 동일한 세트의 멀티 비트를 연속으로 프로그래밍하기 위한 2-패스 프로그래밍 기술을 이용하는 멀티-상태 메모리 시스템을 위하여, 제2 패스에서의 소정의 프로그래밍 에러는 제1 패스에 의하여 형성된 데이터를 방해하지 못한다. Redundancy is the following way, that is, multi-pass programming using the techniques for programming the multi-bits of the same set of memory cells in a row-state memory system for a predetermined programming error in the second pass is the first pass It does not interfere with the data formed by the. 중복은 쓰기 포기의 검출, 검출 오류의 검출(카피는 우수한 ECC를 기자나, 데이터는 다르다)를 가능하게 하며, 신뢰도를 더욱 향상 시킨다. Redundancy enables the detection (copy excellent press or ECC, the data is different) of the detection, the detection error of the write giving the reliability further improves. 데이터 중복의 여러 기술들이 사용된다. Several techniques are used for data redundancy.

일실시예에 있어서, 주어진 데이터의 두개의 카피가 앞선 프로그래밍 패스에서 프로그래밍된 이후에, 다음 프로그래밍 패스는 두 개의 카피 중에서 최소한 한개를 저장하는 메모리 셀을 프로그래밍하는 것을 피한다. In one embodiment, after two copies of a given data is programmed in earlier programming pass, the programming pass avoids programming the memory cells storing at least one of the two copies. 이와 같은 방법으로, 두개의 카피 중에서 최소한 한 개의 카피는 다음 프로그래밍 패스가 완료 이전에 취 소되는 경우에 영향을 받지 않으며, 앞선 패스의 데이터에 손상을 입히지 않는다. In this way, at least one copy from two copies will not be affected when the next programmed path that is canceled before completion, it does not damage the data of the previous pass.

또 다른 실시예에 있어서, 주어진 데이터의 두 개의 카피는 두 개의 다른 블록에 저장되며, 두개의 카피 중주에서 많아야 하나는 다음 프로그래밍 패스에서 프로그래밍되는 메모리 셀들을 구비한다. In yet another embodiment, and two copies of a given data are stored in two different blocks, at most, in two copies quartet one is provided with the memory cells to be programmed in the next programming pass.

또 다른 구체예에서, 주어진 데이터의 두개의 카피가 프로그래밍 패스에 저장된 후 추가의 프로그래밍은 두개의 카피를 저장하는 메모리 셀의 셋트에 대하여 수행되지 않는다. In still other embodiments, the programming of more then the two copies of a given data stored in a programming pass is not performed with respect to the set of memory cells storing the two copies. 이것은 메모리 셀을 위한 궁극적인 프로그래밍 패스에서 두개의 카피를 프로그래밍 함으로써 달성된다. This is accomplished by programming the two copies in an ultimate programming pass for the memory cell.

또 다른 구체예에서, 주어진 데이터의 두개의 카피는 바이너리 프로그래밍 모드에서 멀티-스테이트 메모리로 프로그램되어 프로그램된 메모리 셀 상에서의 추가 프로그래밍이 발생되지 않도록 한다. In another embodiment, the two copies of a given data in a binary programming mode, multi-Do further programming on the programmed memory state to program the memory cells is not generated.

또 다른 구체예에서, 같은 셋트의 메모리 셀의 멀티-비트 를 연속적으로 프로그래밍하기 위한 두개의 패스 프로그래밍 기술을 사용하는 멀티-스테이트 메모리 시스템에 있어서는 초기 프로그래밍에 패스에 의해 설정된 데이타가 후속하는 프로그래밍 패스에서의 에러에 대하여 영향을 받지 않도록 멀티플 메모리 스테이트를 코딩하기 위하여 무정지형(fault-tolerant)이 사용된다. In still other embodiments, the multi-memory cell of the same set - in the programming path that data is subsequently set by the path in the initial programming in the state memory system of two multi-use pass programming technique for programming the bits in a row the fault-tolerant (fault-tolerant) is used not to be affected with respect to the error in order to code the multiple memory states of.

각 메모리 셀이 일 비트 이상의 데이타를 저장하는 멀티-스테이트 메모리에서 테이타 복제의 복잡함이 발생한다. The complexity of teyita replication occurs in the state memory, each memory cell is a multi-store data one bit or more. 예를 들면, 4-스테이트 메모리가 이 비트로 나타낼 수 있다. For example, a 4-state memory can represent a bit. 하나의 기존 기술은 그러한 메모리를 프로그램하기 위해 2-패스 프로그래밍을 사용하는 것이다. One existing technique is to use a two-pass programming to program such memory. 제1 비트(하위 페이지 비트)는 제1 패스에 의해 프 로그램된다. The first bit (lower page bit) is the program by the first pass. 이어서, 같은 셀이 소정의 제2 비트(상위 페이지 비트)를 나타내기 위하여 제2 패스에서 프로그램된다. Subsequently, the same cell is programmed in the second pass to represent a desired second bit (upper page bit). 제2 패스에서 제1 비트의 값을 변하지 않게 하기 위하여, 제1 비트의 메모리 스테이트 설명이 제2 비트의 값을 좌우하기 위하여 이루어진다. The unchanged to the value of the first bit in the second pass, takes place for the memory state to the description of the one-bit left and right values ​​for the second bit. 따라서, 제2 비트의 프로그래밍 중에 에러가 전원 감소 또는 다른 원인으로 발생되어 부정확한 메모리 스테이트를 가져올 경우 제1 비트의 값도 파괴될 수 있다. Therefore, when there is an error in the programming of the second bit to get the memory state is generated as a power loss or other causes inaccuracies may be destructive even value of the first bit.

도 41A는 각 메모리 셀이 이 비트의 테이타를 저장할 때 4-스테이트 메모리 어레이의 한계전압 분포를 도시한 것이다. Figure 41A shows the threshold voltage distributions of the 4-state memory array when each memory cell to store a bit of teyita. 4개의 분포는 네개의 메모리 스테이트, "U", "X", "Y" 및 "Z"의 분포를 도시한 것이다. Four distribution shows four memory states, "U", "X", the distribution of the "Y" and "Z". 메모리 셀이 프로그램되기 전에 이것은 먼저 "U" 또는 "비 기록" 스테이트로 소거된다. This is first cleared to "U" or "non-written" state before the memory cell is program. 메모리 스테이트, "X", "Y" 및 "Z"는 메모리 셀이 증가하면서 프로그래밍 될 때 점진적으로 도달된다. State memory, "X", "Y" and "Z" are progressively reached as the memory cell when the programming is increased.

도 41B는 그레이 코드(Gray code)를사용하여 기존의, 2-패스프로그래밍 구성을 도시한 것이다. Figure 41B illustrates an existing, 2-pass programming configured by using a gray code (Gray code). 네 개의 스테이트는 (Upper page bit, Lower page bit)와 같은 두개의 비트, 하위 페이지 비트 및 상위 페이지 비트로 나타낼 수 있다. The four states are (Upper page bit, Lower page bit) and may represent two bits, the lower page bit and an upper page bit, such as. 병렬로 프로그래밍되도록 하기 위한 셀의 페이지에 있어서는 두개의 실제적인 논리적 페이지: 논리적 하위 페이지 및 논리적 상위 페이지가 있다. In the page of cells to be programmed in parallel, the two actual logical pages: a logical lower page and a logical upper page. 제1 프로그래밍 패스는 논리적 하위 페이지만을 프로그래밍한다. The first programming pass is to program the logical lower page only. 적절한 코딩에 의해 후속하는, 같은 페이지 상에서의 제2 프로그래밍 패스가 논리적 하위 페이지를 리셋하지 않고 논리적 상위 페이지를 프로그램한다. A second programming pass on the same page, which subsequently by the appropriate coding, without resetting the logical lower page and a logical upper page program. 공통적으로 사용된 코드는 인접한 스테이트로 변할 때 1 비트만을 변화시키는 그레이 코드이다. The code used in common as is a gray code which changes only one bit changes when a neighboring state. 따라서, 이러한 코드는 단지 1 비트만 포함 되기 때문에 에러 보정에 대한 적게 요구되는 이점을 갖는다. Therefore, this code has the advantage of requiring less of the error correction because it contains only one bit.

그레이 코드를 사용하는데 있어서의 일반적인 구성은 "1"이 "프로그램되지 않음"을 나타내도록 하는 것이다. General construction of in using the Gray code is to to indicate a "1" is "do not program". 따라서, 소거된 메모리 스테이트 "U"는 (Upper page bit, Lower page bit)=(1,1)로 나타내진다.논리적 하위 페이지를 프로그래밍 하기위한 제1 패스에서 데이타 "0"을 저장하기 위한 어떤 셀은 (x, 1)에서 (x, 0)(여기에서, x는 상위 비트의 "돈 케어(don't care)" 값은 나타낸다)로의 논리적 스테이트 전환을 갖는다. Thus, the erased memory state "U" is (Upper page bit, Lower page bit) is represented as a = (1, 1). Some cell for storing data "0" in the first pass to program the logical lower page It is (wherein, x is a higher-order bit "money care (do not care)" values ​​represent) (x, 0) in the (x, 1) has a logical state transition to. 그러나, 상위 비트는 아직 프로그래밍 되지 않았기 때문에 "x"도 일관성 위해서 "1"로 라벨 될 수 있다. However, because the upper bits have not yet been programmed to be labeled as "x" "1" even for consistency. (1,0) 논리적 스테이트는 셀을 메모리 스테이트 "X"로 프로그래밍하는 것으로 나타낸다. (1, 0) logical state indicates that the program the cell to the memory state "X". 즉, 제2 프로그램 패스 전에 "0"의 하위 비트 값이 메모리 스테이트 "X"로 나타내진다. That is, the lower bit value of "0" before the second program pass is represented by the memory state "X".

제2 패스 프로그래밍은 논리적 상위 페이지의 비트들을 저장하도록 수행된다. The second pass programming is performed to store the bits of the logical upper page. "0"의 상위 페이지 비트 값을 요구하는 셀 들만이 프로그래밍 된다. Only those cells are programmed to require the upper page bit value of "0". 제1 패스 후에 이 페이지에 있는 셀은 논리적 스테이트 (1,1) 또는 (1,0)이다. The cell is a logical state (1, 1) or (1, 0) in the page in a first pass. 제2 패스에서 하위 페이지의 값을 보존하기 위하여 "0" 또는 "1"의 하위 비트 값이 구별되는 것이 필요하다. To be the low-order bit value of "0" or "1" distinction is necessary in order to preserve the value of the lower page in the second pass. (1,0)에서 (0,0)으로 전환을 위하여 문제의 메모리 셀이 메모리 스테이트 "Y"로 프로그래밍 된다. For the transition from (1, 0) as (0, 0) the memory cell in question is programmed to the memory state "Y". (1,1)에서 (0,1)로 전환을 위하여 문제의 메모리 셀은 메모리 스테이트 "Z"로 프로그래밍 된다. For the transition from (1, 1) to (0, 1) the memory cell in question is programmed to the memory state "Z". 이 방법에서 판독중에 셀에 프로그래밍된 메모리 스테이트를 측정하므로서 하위 페이지 비트 및 상위 페이지 비트 모두가 디코딩될 수 있다. This way a memory state measurement hameuroseo lower page bit and the upper page bit for programming all the cells read in the can be decoded.

그러나, 그레이 코드, 2-패스 프로그래밍 구성은 제2-패스 프로그래밍이 에 러성일 때 문제가 될 수 있다. However, the gray code, 2-pass programming configuration can be a problem when multiple holy the second-pass programming. 예를 들면, 하위 비트가 "1"에 있는 동안 "0"로 상위 페이지를 프로그래밍하는 것은 (1,1)에서 (0,1)로 전환을 야기한다. For example, it is to program the upper page to "0" while the lower bit is "1" results in a transition from (1, 1) to (0,1). 이것은 메모리 셀이 점진적으로 "U"를 거쳐 "X" 및 "Y"에서 "Z"로 프로그램되는 것이 요구된다. It is required that the memory cell is program progressively through the "U" in the "X" and "Y" to "Z". 프로그래밍의 완료 전에 정전이 있는 경우에는 전환 메모리 스테이트 중 하나, 즉 "X"에서 종료될 수 있다. If the power outage before the completion of the programming, it can be one of the transition memory state, that is exit from the "X". 메모리 셀이 판독될 때 "X"는 논리적 스테이트 (1,0)로서 디코딩된다. When the memory cell is read out "X" is decoded as the logical state (1, 0). 이것은 (0,1)이어야 했기 때문에 상위 및 하위 비트 모두에서 부정확한 결과를 제공한다. This provides inaccurate results in both the upper and lower bits, because to be (0,1). 마찬가지로, "Y"에 도달했을 때 프로그래밍이 중단되면 (0,0)에 상응한다. Likewise, corresponding to when once it has reached the "Y" Programming stops (0,0). 상위 비트는 이제 정확하지만 하위 비트는 아직도 오류이다. Top-bit is now correct, but it is still lower bit error.

따라서, 그것은 상위 페이지 프로그래밍에서의 문제점은 상기 하위 페이지에서의 데이터를 이미 변조될 수 있음이 이해될 수 있다. Therefore, it is a problem in the upper page programming can be understood that the data may already be modulated in the sub-pages. 특히, 제2 패스 프로그래밍이 중간 메모리 스테이트에 대해 패싱하는 것을 포함할 경우, 프로그램 중지(abort)가 메모리 스테이트에서 종료하는 프로그래밍을 가지게 되고, 그 결과 부정확한 하위 페이지에서 디코딩되게 된다. In particular, the second programming pass in this case comprise for passing an intermediate memory state, a program stop (abort) is programmed to have a memory state in the end, the result is to be decoded in an incorrect lower page.

도 42는 이중으로 각 섹터를 보존(save)함에 따라, 크리티컬 데이터를 안전하게 가드(guarding)하는 기법을 예시하고 있다. Figure 42 has as a dual retention (save) for each sector, a safe-critical data illustrate the technique of the guard (guarding). 예를 들면, 상기 섹터(A, B, C 및 D)는 이중 카피(duplicate copies)로 보존된다. For example, the sector (A, B, C and D) is preserved in the double copy (duplicate copies). 만일, 하나의 섹터 카피에서의 데이터의 파괴(corruption)가 있다면, 다른 데이터가 대신에 판독될 수 있다. If, there is destruction (corruption) of data in one sector copy, and other data it can be read instead.

도 43은 이중 섹터가 멀티-스테이트 메모리에서 통상적으로 보존되는 논-로버스트니스(non-robustness)를 예시하고 있다. Figure 43 is a dual-sector multi-exemplifies the robustness (non-robustness) - non commonly preserved in a state memory. 상술한 바와 같이, 실예의 4-스테이트 메모리에서, 상기 멀티-스테이트 페이지는 2개의 패스에서 개별 프로그래밍되 는, 논리 하위 페이지와 논리 상위 페이지를 실제로 포함한다. As described above, in a four-state memory of silye, the multi-state page is being programmed individual is, in fact, include a logical lower page and a logical upper page in the two paths. 예증된 바와 같이, 상기 페이지는 4개의 섹터 와이드(wide)이다. As illustrated, the page is four sector wide (wide). 따라서, 섹터(A)와 그의 복제(duplicate)는 상기 논리 하위 페이지에서 동시 프로그래밍되고, 섹터 B와 그의 복제도 마찬가지이다. Thus, the sector (A) and its replica (duplicate) are simultaneously programmed in the logical lower page, it is a sector B and its duplicate well.

다음에, 상기 논리 상위 페이지에서의 프로그래밍의 이어지는 제2 패스에서, 섹터(C, C) 는 동시에 프로그래밍되며, 섹터(D, D)도 마찬가지이다. Next, in the programming of the second path leading from the logic high-order page, sector (C, C) it is programmed at the same time, as are the sector (D, D). 만일, 섹터(C, C)의 프로그램 중도에 프로그램 중지가 야기되면, 상기 하위 페이지에서의 섹터(A, A)는 파괴될 것이다. If the sector (C, C) of the program, the program stops midway to cause, it is the breakable sector (A, A) in the lower page. 만일 상기 하위 페이지 섹터들이 첫째로 판독되고 상기 상위 페이지 프로그래밍 이전에 버퍼링되지 않을 시에는, 이들은 파괴되면 회복 불가능하게 될 수 있다. When ten thousand and one the lower page sectors are being read in the first place it is not buffered prior to the upper page programming, which is destroyed may be impossible recovery. 따라서, 섹터(A, A)와 같이 동시에 크리티컬 데이터의 2개의 카피를 보존하게 되면, 이들 양자가 그의 상위 페이지에서의 섹터(C, C)의 계속적인 문제에 의해 파괴되는 것을 방지할 수 없게 된다. Therefore, when the same time preserving the two copies of critical data, such as the sector (A, A), the both of them can not be prevented from being destroyed by the continued problems of the sector (C, C) at their upper page .

도 44A는 멀티-스테이트 메모리에 크리티컬 데이터의 시차(staggered) 복제 카피들을 보존하는 하나의 실시예를 예시하고 있다. Figure 44A is a multi-illustrates one embodiment of preserving the time difference (staggered) replicated copy of critical data to the state memory. 기본적으로, 상기 하위 페이지는 도 43, 즉, 섹터(A, A)와 섹터(B, B)에서와 동일한 방식으로 보존된다. Basically, the lower page is 43, that is, is stored in the same manner as in the sector (A, A) and the sectors (B, B). 그러나, 상기 상위 페이지 프로그래밍에서, 상기 섹터(C, D)는 (C, D, C, D)로서의 그들의 복제물을 사용하여 인터리브(interleaved)된다. However, in the upper page programming, the sector (C, D) are interleaved (interleaved) with their duplicates as (C, D, C, D). 만일 부분 페이지 프로그래밍이 지원되면, 상기 섹터(C)의 2개 카피는 섹터(D)의 2개 카피를 위해 동시에 그리고 유사하게 프로그램된다. If partial page programming is supported, the two copies of the sector (C) is programmed to simultaneously and similar for the two copies of the sector (D). 프로그램 오브 세이(say), 상기 2개 섹터(C)가 중단되면, 섹터(A)의 하나의 카피와 섹터(B)의 하나의 카피에 의해서만 하위 페이지가 파괴된 다. When the program of sage (say), the two sectors (C) is interrupted, only by the one copy of the sector (A) a copy of the sector (B) of the lower page is destroyed. 상기 다른 카피는 변화없이 유지한다. The other copy is maintained without change. 따라서, 만일, 제1 패스에서 저장된 크리티컬 데이터의 2개 카피가 있다면, 이들은 동시에 후속하는 제2 패스 프로그래밍에 종속되지 않는다. Thus, if, if there are two copies of critical data stored in the first pass, all of which are not subject to the second pass programming to follow at the same time.

도 44B는 멀티-스테이트 메모리의 논리 상위 페이지에 대해서만 크리티컬 데이터의 이중 카피를 보존하는 또 다른 실시예를 예시하고 있다. Figure 44B is a multi-illustrates a further embodiment to preserve the dual copies of critical data only to the logical upper page of the state memory. 이 경우, 상기 하위 페이지에서의 데이터는 사용되지 않는다. Data in this case, the lower page is not used. 섹터(A, A)와 섹터(B, B)와 같은, 상기 크리티컬 데이터와 그의 복제는 단지 상기 논리 상위 페이지에 보존된다. Sectors (A, A) and the sectors (B, B) and, the critical data, such as his replication is only kept in the logic high-order page. 이러한 방식에서, 프로그램 중단이 있으면, 상기 크리티컬 데이터가 다른 논리 상위 페이지에서 재기록되고, 반면에, 상기 하위 페이지 데이터에 대한 임의의 파괴는 중요하지 않다. If there is in this way, the program is interrupted, the critical data is being rewritten in another logical upper page, on the other hand, any destruction of the low-order page data is not critical. 이러한 솔루션은 기본적으로 각각의 멀티-스테이트 페이지의 저장 용량의 절반을 사용한다. Each of these solutions is basically a multi-use half the storage capacity of the State page.

도 44C는 멀티-스테이트 메모리의 바이너리 모드에서의 크리티컬 데이터의 이중 카피를 보존하는 다른 실시예를 예시하고 있다. Figure 44C is a multi-illustrate another embodiment of preserving the double copy of critical data in binary mode of the state memory. 이 경우, 각각의 메모리 셀은 그의 쓰레드홀드 영역이 2개의 구역으로 단지 분할되는 바이너리 모드에서 프로그래밍된다. In this case, each memory cell is programmed in a binary mode, whose thread holding area only divided into two zones. 따라서, 프로그램 중단이 발생하면, 단지 하나의 패스 프로그래밍이 있게 되고, 상기 프로그래밍은 다른 위치에서 재-개시된다. Accordingly, when the program interruption, and only allows the one-pass programming, the programming material at a different location - is disclosed. 또한, 이러한 솔루션은 각각의 멀티-스테이트 페이지의 저장 용량의 절반을 사용한다. In addition, these solutions are each multi-use half the storage capacity of the State page. 바이너리 모드에서 멀티-스테이트 메모리를 작동시키는 것은 미국 특허 등록공고 제 6,456,528호에 개시되어 있으며, 본문에 참조로서 편입되어 있다. Multi in the binary mode for operating the state memory is disclosed in US Patent Bulletin No. 6,456,528, and is incorporated by reference in the body.

도 45는 2개의 다른 메타블록에 동시에 크리티컬 데이터의 이중 카피를 보존 하는 또 다른 실시예를 예시하고 있다. Figure 45 illustrates a further embodiment to preserve the dual copies of critical data concurrently to two different metablocks. 만일, 상기 블록들중 하나가 비활용적으로 된다면, 상기 데이터는 다른 카피로부터 판독될 수 있다. If, if one of the blocks is a non-utilizing small, the data may be read from the other copies. 예를 들어, 상기 크리티컬 데이터가 섹터(A, B, C, D 및 E, F, G, H, 및 J, K, L)에 포함된다. For example, the critical data are contained in the sectors (A, B, C, D and E, F, G, H, and J, K, L). 상기 2개 카피는 2개의 다른 블록(Block 0 및 Block1)에 동시에 기록될 것이다. The two copies will be written concurrently to two different blocks (Block 0 and Block1). 만일, 하나의 카피가 논리 하위 페이지에 기록된다면, 다른 카피는 논리 상위 페이지에 기록될 것이다. If, if a single copy written to the logic low-order page, the other copy will be written to the logic high-order page. 이러한 방식에서, 항시 논리 상위 페이지에 프로그램된 하나의 카피가 존재할 것이다. In this way, there will be one copy of the program at all times to the logic high-order page. 만일 프로그램 중단이 발발하면, 다른 논리 상위 페이지에 재프로그래밍될 수 있다. If the program stops when the outbreak can be reprogrammed to other logical parent page. 동시에, 만일 상기 하위 페이지가 파괴되면, 다른 블록에서 다른 상위 페이지 카피가 이루어질 것이다. At the same time, if it when the lower page is destroyed, the other high-order page copy in the other block is made.

도 46B는 내-장애성 코드(fault-tolerant code)의 사용에 의해 동시에 크리티컬 데이터의 이중 카피를 보존하는 다른 실시예를 예시하고 있다. Figure 46B is within - illustrates an alternative embodiment for preserving a double copy of the disorder sex cord-critical data by the use of (fault-tolerant code) at the same time. 도 46A는 4-스테이트 메모리 어레이의 쓰레드홀드 전압 분배를 예시하고, 도 48B를 위해 참조로서 도시되어 있다. Figure 46A is illustrated by reference to Figure 48B illustrates a threaded hold voltage distribution of the 4-state memory array, and. 상기 내-장애성 코드는 필수적으로 임의의 중간 스테이트들을 통해 교통(transit)하도록 임의의 상위 페이지 프로그래밍을 회피한다. The my-fault province code is necessary to avoid any upper page programming to transit (transit) through any intermediate state. 따라서, 상기 제1 패스 하위 페이지 프로그래밍은 상기 소거 메모리 스테이트("U"to"Y")를 프로그래밍함에 따라 표시된 바와 같이 (0,1)로 전송하는 논리 스테이트(1, 1)를 구비한다. Thus, the first pass lower page programming is provided with a logical state (1, 1) for transmitting to (0,1), as indicated as programming the erased memory state ( "U" to "Y"). 상기 상위 페이지 비트("0"으로)의 제2 패스 프로그래밍에서, 만일 상기 하위 페이지 비트가 "1"에서 라면, 상기 논리 스테이트(1,1)는, “Y"에서 ”Z"로의 상기 소거 메모리 스테이트를 프로그래밍함에 따라 표현되는 바와 같이, (0, 1)로 전송한다. In the second pass programming of the upper page bit ( "0"), if the if the lower page bit is at "1", the logical state (1, 1), the erased memory to "Z" in the "Y" as it expressed as a programming state, and transmits it to (0,1). 상기 상위 페이지 프로그래밍이 단지 다음의 이웃하는 메모리 스테이트 로의 프로그래밍을 포함하기 때문에, 프로그램 중단은 상기 하위 페이지 비트를 변경시키지 않게 된다. Since the upper page programming only includes programming to the memory state to the next neighbor of the program interruption is not not change the lower page bit.

시리얼 쓰기(Serial Write) Serial letter (Serial Write)

임계 데이터의 이중 사본들은 전술한 바와 같이 함께 기록되는 것이 바람직하다. Dual copies of critical data are preferably written together as described above. 동시에 양 사본들의 오류를 일으키는 것을 피하는 다른 방법은 사본들을 순차적으로 기록하는 것이다. At the same time, another way to avoid corrupting both copies of is to write the copies sequentially. 이 방법은 느리지만, 사본들 스스로 그것들의 프로그래밍이 성공적인지 또는 제어기가 양 사본들을 언제 점검하는지를 나타낸다. This is recognized, but the copy of the program itself, they are slowly but successfully or indicates whether the controller when checking the amount of copies.

도 47은 데이터의 두 사본들의 가능한 상태와 데이터의 유효성을 나타내는 표이다. 47 is a table showing the effectiveness of the possible states of the two copies of the data and the data.

첫 번째 및 두 번째 사본들 모두 ECC 에러가 없다면, 데이터의 프로그래밍은 완전히 성공적인 것으로 믿어진다. If the first and second copies of all ECC errors, programming of data is believed to be completely successful. 유효한 데이터가 어떤 사본으로부터도 얻어질 수 있다. Valid data may be obtained from any copy.

첫 번째 사본은 ECC 에러가 없지만 두 번째 사본은 에러가 있다면, 프로그래밍이 두 번째 사본 프로그램 중에 중단되었음을(interrupted) 의미할 수 있다. The first copy of the ECC error if there is not a second copy is error, may be programmable, meaning that the two interrupting the second copy program (interrupted). 첫 번째 사본은 유효한 데이터를 포함한다. The first copy contains valid data. 두 번째 사본은 에러가 정정 가능할지라도 신뢰할 수 없다. The second copy can not be trusted, even if the error is corrected.

첫 번째 사본은 ECC 에러가 없고 두 번째 사본은 비어있다면(삭제되었다면), 프로그래밍이 첫 번째 사본 프로그래밍의 종료 후 두 번째 사본의 개시 전에 중단되었음을 의미할 수 있다. The first copy can mean that if there is no ECC error second copy is empty (if removed), programming after the end of the first copy of the programming is interrupted before the start of the second copy. 첫 번째 사본은 유효한 데이터를 포함한다. The first copy contains valid data.

첫 번째 사본은 ECC 에러를 가지고 두 번째는 비어있다면(삭제되었으면), 프 로그래밍이 첫 번째 사본 프로그래밍 중에 중단되었음을 의미할 수 있다. The first copy can mean that with the ECC error Second, if empty (if removed), programming is interrupted during the first copy programming. 첫 번째 사본은 에러가 정정 가능할지라도 무효한 데이터를 포함할 수 있다. The first copy may be possible even if an error correction includes the invalid data.

복제물들에서 유지되는 데이터의 읽기를 위해, 이중 사본들의 존재를 이용하는 다음 기술이 선호된다. To read the data held in the replica, the following technique using the presence of double copies are preferred. 읽기 및 양 사본들 비교하기. To compare the read and copy quantity. 이 경우에, 도 47에 표시된 바와 같은 양 사본들의 상태는 잘못 탐지된 에러가 없음을 보증하는데 사용될 수 있다. In this case, the state of both copies as shown in Figure 47 may be used to guarantee that no fault detection error.

속도와 간소화를 고려하여, 제어기가 하나의 사본만을 읽는 다른 실시예에서, 사본 읽기는 두 사본들 사이에서 번갈아 하는 것이 바람직하다. In consideration of the speed and simplicity, it is preferable in another embodiment the controller reads only one copy, which alternates between the two copies of copy read. 예컨대, 제어기가 제어 데이터를 읽을 때, 그것은 사본 1을 읽고, 다음 제어기 읽기(어떤 하나의 제어기 읽기)는 사본 2로부터인 후 사본 1로부터이어야 하고, 그 다음에 사본 1을 다시 읽는다. For example, when the controller reads the control data, it reads the copy, the following should be read from the controller (any one of the read controller) after the second copy from the copy, and then read again, and then copy the. 이러한 식으로, 두 사본들은 완전히 질서있게 읽히고 검토될 것이다(ECC 검토됨). In this way, the two copies will be read and reviewed so completely in order (the ECC Review). 이것은 데이터 보유를 저하시킴으로써 유발되는 에러를 때맞춰 탐지하지 못하는 위험을 줄인다. This coincided with an error caused by the degradation of data retention reduces the risk can not be detected. 예컨대, 사본 1만이 정규로 읽힌다면, 사본 2는 에러가 ECC에 의해 더 이상 이용되지(salvaged) 않는 수준으로 점차적으로 저하될 수 있고, 두 번째 사본은 더 이상 사용되지 못할 수 있다. For example, if the 10 002 copies read regularly, Copy 2 has an error can be gradually lowered to a no longer in use (salvaged) level by the ECC, the second copy is no longer able to be used.

우선 데이터 재배치(Pre-emptive Data Relocation) First Data relocated (Pre-emptive Data Relocation)

도 20과 관련하여 설명된 바와 같이, 블록 관리 시스템은 플레시 메모리에서 제어 데이터 세트를 그것의 작동 동안 유지시킨다. As also described in connection with 20, the block management system maintains the control data set during its operation in the flash memory. 이 제어 데이터 세트는 호스트 데이터와 유사하게 메타블록들(metablocks)에 저장된다. The control data set is stored in the metablock in analogy to the host data (metablocks). 그와 같이, 제어 데이터 자체는 블록 관리될 것이고, 갱신되어 가비지 수집 작동을 받게 될 것이다. As such, the control data itself will be block managed, updated will undergo a garbage collection operation.

하부 계층에 있는 것들이 상위에 있는 것보다 자주 갱신된다는 것과 함께, 제어 데이터의 계층이 존재한다는 것이 또한 설명되었다. Along with ones in the lower hierarchy being updated more frequently than that of the parent, it is that the presence of the control data layers have also been described. 예컨대, 모든 제어 블록이 쓰기를 위한 N 제어 섹터들을 가진다고 한다면, 제어 갱신과 제어 블록 재배치인 다음 시퀀스가 정규로 일어난다. For example, if said to have the N control sectors for all of the control block is a letter, the control updates and control block relocations the following sequence takes place to the normal. 도 20을 다시 참조하면, 모든 N CBI 갱신이 CBI 블록을 채우고 CBI 재배치(재쓰기) 및 MAP 갱신을 유발한다. When the Fig. 20, see again, all N CBI updates fill the CBI block results in a CBI relocation (re-writing) and a MAP update. 캐이아틱 블록(Chaotic block)이 폐쇄되면 GAT 갱신을 또한 유발한다. When Casey Arctic block (Chaotic block) is closed, further causing a GAT update. 모든 GAT 갱신은 MAP 업데이트를 유발한다. All GAT update is causing the MAP updates. 모든 N GAT 갱신은 블록을 채이고 GAT 블록 재배치를 유발한다. All N GAT update chaeyigo the block causing the GAT block relocation. 또한, MAP 블록이 가득 차게 되면 그것은 MAP 블록 재배치 및 MAPA 블록(만일 존재한다면, 그렇지 않으면 BOOT 블록이 MAP으로 곧바로 지시한다)을 갱신을 유발한다. Also, when the MAP block is full, it will lead to update the MAP block relocation and the MAPA block (if it exists If, otherwise, the BOOT block immediately directed to MAP). 또한, MAPA 블록이 가득 차게 되면, 그것은 MAPA 블록 재배치, BOOT 블록 갱신 및 MAP 갱신을 유발한다. Also, when the MAPA block is full, it leads to renewed MAPA block relocation, BOOT blocks and MAP update. 또한, BOOT 블록이 가득 차게 되면, 그것은 다른 BOOT 블록으로 액티브 BOOT 블록 재배치를 유발한다. In addition, if, BOOT block is full, which causes the active block BOOT BOOT relocated to another block.

계층이 MAPA, MAP 및 GAT를 수반하는 상부에서 BOOT 제어 데이터에 의해 형성되기 때문에, 모든 N 3 GAT 갱신에서 "종속 제어 갱신"이 있을 것이고, GAT, MAP, MAPA 및 BOOT 블록 모두 재배치될 것이다. Because this layer is formed by the BOOT control data at the top accompanied by MAPA, MAP and GAT, every N 3 GAT will be "update subordinate control" in the update, it will be relocated both GAT, MAP, MAPA and BOOT blocks. GAT 갱신이 호스트 쓰기의 결과로서 케이아틱 또는 시퀀셜 갱신 블록 폐쇄에 의해 유발되는 경우, 가비지 수집 작동(즉, 재배치 또는 재쓰기)이 또한 있을 것이다. When GAT update is caused by a K Arctic or sequential update block closure as a result of a host write, the garbage collection operation (i.e., relocation or re-write) will be also. 케이아틱 갱신 블록 가비지 수집인 경우에, CBI가 갱신될 것이고, CBI 블록 재배치를 또한 유발할 수 있다. If the Arctic Kay update block garbage collection, the CBI will be updated, the CBI block relocation can also cause. 따라서 이러한 극단 상황에서, 다수의 메타블록들이 동시에 가비지 수집되어야할 필요가 있 다. Therefore, in this extreme situation, you need multiple metadata blocks will be garbage collected at the same time.

계층의 각각의 제어 데이터 블록은 채워지고 재배치되는 점에서 자신의 주기성(periodicity)을 가진다. Each control data block of the hierarchy has its own periodicity (periodicity) in that the filled and redeployment. 각각이 정규로 진행된다면, 다수의 블록들의 상(phases)이 정렬되고(line up) 동시에 모든 블록들을 포함하는 대규모 재배치 또는 가비지 수집을 유발하는 시간이 있을 것이다. If each proceeds to the normal, there will be a phase (phases) of a plurality of blocks are aligned at the same time (line up) time to cause massive relocation or garbage collection containing all of the blocks. 많은 제어 블록들의 재배치는 시간이 오래 걸리고, 일부 호스트가 그러한 대규모 제어 작동에 의해 유발되는 긴 지체를 견디지 않으므로 피해야 한다. Relocation of many control block is time-consuming, and should be avoided that some hosts do endure a long delay caused by such a large-scale control operations.

본 발명의 또 다른 양태에 따르면, 블록 관리 시스템을 갖춘 비휘발성 메모리에서, "제어 가비지 수집(control garbage collection)" 또는 메모리 블록의 우선적 재배치는 다수의 갱신 블록들이 모두 동시에 재비치를 필요로 하는 상황을 회피하도록 구현된다. In accordance with another aspect of the invention, in a nonvolatile memory with block management system, a "control garbage collection (control garbage collection)" or preferential relocation of a memory block are situations that require a re-beach both a plurality of update blocks are at the same time to be implemented to avoid. 예를 들면, 이러한 상황은 블록 관리 시스템의 작동을 제어하기 위해 사용되는 제어 데이터를 갱신할 때 발생할 수 있다. For example, such a situation may occur when updating the control data used to control the operation of the block management system. 제어 데이터의 계층은 갱신 빈도(frequencies)들의 정도를 변화시킴에 따라 존재할 수 있으므로, 가비지 수집 또는 재배치를 필요로 하는 그 관련 갱신 블록들을 서로 다른 비율로 야기한다. It may be the layer of the control data in accordance with changing the level of the update frequency (frequencies), and result in its associated update blocks requiring garbage collection or relocation at different rates. 하나 이상의 제어 데이터 유형의 가비지 수집 작동들이 부합하는 일정한 횟수가 있을 것이다. There will be a certain number of one or more types of control data of the garbage collection operation are met. 비정상적인 상황에서는, 모든 제어 데이터 유형들에 대한 갱신 블록들의 재배치 단계(phase)가 정렬되어서, 재배치를 필요로 하는 모든 갱신 블록들을 동시에 야기할 수 있다. In unusual circumstances, be a relocation phase (phase) of the update block in alignment for all control data types, and may cause all of update blocks requiring relocation at the same time.

이러한 불필요한 상황은, 현재의 메모리 작동이 자발적인 가비지 수집 작동을 수용할 때마다, 갱신 블록의 우선적 재배치가 발생하여 미리 블록이 완전히 채 워지게 되는 본원 발명에 의해 회피된다. This unwanted situation, whenever a current memory operation can accommodate a voluntary garbage collection operation, is avoided by the present invention that would be a pre-block to fit entirely holding the first relocation of an update block occurs. 특히, 계층에서 가장 높이 있는 데이터 유형이 가장 느린 비율을 갖는 블록에 우선권이 주어진다. In particular, it is given priority to the highest data block type in the hierarchy having the slowest rate. 이러한 방식에서, 가장 느린 비율의 블록들이 재배치되면, 그것들은 상대적으로 긴 시간 동안 또 다른 가비지 수집을 필요로 하지 않는다. When in this way, they block the slowest rate of relocation, they do not need for a relatively long time, another garbage collection. 또한, 계층에서 더 높이 있는 더 느린 비율의 블록들은 트리거하기 위한 많은 재배치의 캐스케이드를 갖지 않는다. In addition, the blocks of higher slower rate in the layers do not have a lot of relocation for triggering the cascade. 본 발명의 방법은, 의심스러운 다양한 블록들의 정렬 단계들을 회피하기 위해서 일종의 디더링(dithering)을 전반적인 혼합물에 도입하는 것으로서 여겨질 수 있다. The method of the present invention, in order to avoid the step of sorting the various blocks as suspicious for introducing a kind of dithering (dithering) in the overall mixture may be considered. 따라서, 기회가 발생할 때마다, 완전히 채워진 것으로부터 약간의 마진을 갖는 느린-충전 블록이 우선적으로 재배치된다. Thus, each time the opportunity occurs, slower with a slight margin from being totally filled-charging block is relocated first.

제어 데이터의 계층을 갖는 시스템에서, 계층에서 더 낮게 있는 것은 캐스케이딩 효과로 인하여 더 높이 있는 것보다 더 빠르게 변화하므로, 계층에서 더 높이 있는 제어 데이터의 블록에 우선권이 주어진다. In a system with a hierarchy of control data, so that it is lower in hierarchy than the more rapidly changing due to a cascading effect that the more high, priority is given to the higher block of the control data at layer. 자발적인 우선적 재배치를 실행하기 위한 기회의 일 예는, 호스트 쓰기(host write)가 자체 재배치를 트리거하지 않을 때 그 잠재 기간(latency period)의 나머지가 우선적 재배치 작동을 위해 활용될 수 있다는 것이다. One example of a chance to run the first voluntary relocation, is that the rest of the prospective period (latency period) can be used for preferential relocation work when writing host (host write) does not trigger the relocation itself. 일반적으로, 전적으로 미리 재배치되어야 하는 블록의 마진은, 블록이 완전히 채워지기 전의, 소정 개수의 쓰이지 않은(written) 메모리 유닛들이다. In general, the margin of the block to be relocated is wholly in advance, (written) are the memory units that are obsolete, the predetermined number of the previous block is being filled completely. 미리 완전히 채워지지만, 과도하게 미숙하여 무익한 자원을 야기하는 블록의 재배치를 촉진하는데 마진이 충분한지에 대해 고려한다. In advance, but completely filled, excessively immature to be considered as to whether a sufficient margin to facilitate the relocation of the block causing useless resources. 바람직한 실시예에서, 소정 개수의 쓰이지 않은 메모리 유닛들은 1개 내지 6개 메모리 유닛이다. In a preferred embodiment, the memory unit that is obsolete in the predetermined number are one to six memory units.

도 48은 제어 데이터를 저장하는 메모리 블록의 우선적 재배치의 순서도를 도시한다. Figure 48 shows a flow diagram of a first relocation of memory block storing control data.

단계 1202: 함께 소거 가능한 메모리 유닛으로 분할되는 블록들에 비휘발성 메모리를 구성하는 단계. Step 1202: The steps that make up the non-volatile memory in the block is divided into erasable memory unit together.

단계 1204: 서로 다른 유형의 데이터를 유지하는 단계. Step 1204: the step of keeping the different types of data to each other.

단계 1206: 서로 다른 유형의 데이터에 순위(ranking)를 부여하는 단계. Step 1206: the step of giving a ranking (ranking) for different types of data.

단계 1208: 각 블록이 반드시 동일 유형의 데이터를 저장하도록 복수의 블록 간에 서로 다른 유형의 데이터의 갱신을 저장하는 단계. Step 1208: step of each block is to be stored to update each other of the different types of data among a plurality of blocks to store data of the same type.

단계 1210: 소정 개수보다 적은 비어있는 메모리 유닛을 구비하며 복수의 블록 간에 가장 높은 순위의 데이터 유형을 갖는 블록에 응답하여, 블록의 현재 데이터 갱신을 또 다른 블록에 재배치하는 단계. Step 1210: having less than a predetermined number of empty memory units and in response to a block having the data type of the highest ranking among a plurality of blocks, the method comprising relocating the current update data in the block to another block. 중단되지 않는 한 단계 1208로 진행. Proceed to step 1208 does not stop.

도 20에 도시된 제어 데이터에 대한 우선적 재배치를 구현하기 위한 예시적인 알고리즘은 다음과 같다: An exemplary algorithm for implementing the first relocation for the control data shown in Figure 20 are as follows.

If((사용자 데이터로 인하여 가비지 수집이 없는 경우) OR (MAP이 6 또는 보다 소수의 쓰이지 않은 섹터를 갖는 경우) OR (GAT가 3 또는 보다 소수의 쓰이지 않은 섹터를 갖는 경우) If ((the case due to the user data, there is no garbage collection) OR (when MAP is 6 or more with a non-obsolete sector a few) OR (GAT has 3 or more when having a small number of sectors that are obsolete)

Then Then

If(BOOT이 1의 쓰이지 않은 섹터를 갖는 경우) If (BOOT this case having a non-obsolete sectors in one)

Then BOOT을 재배치(즉, 블록으로 재배치) Then relocate BOOT (i.e., reassigned to block)

Else Else

If(MAPA가 1의 쓰이지 않은 섹터를 갖는 경우) If (MAPA has a case that is obsolete sectors in one)

Then MAPA를 재배치 및 MAP를 갱신 Update the relocation and the MAP Then MAPA

Else Else

If(MAP가 1의 쓰이지 않은 섹터를 갖는 경우) If (MAP has a case that is obsolete sectors in one)

Then MAP를 재배치 Relocate Then MAP

Else Else

If(최근에 갱신된 것, 또는 가장 큰 것, GAT가 1의 쓰이지 않은 섹터를 갖는 경우) If (the last update to the one, or the biggest, GAT has a case that is obsolete sectors in one)

Then GAT를 재배치 Then GAT relocate

Else Else

If(CBI가 1의 쓰이지 않은 섹터를 갖는 경우) If (CBI has a case that is obsolete sectors in one)

Then CBI 재배치 Then CBI relocation

Else Else

Else Else

Exit Exit

따라서, 우선적 재배치는 통상적으로 어떠한 사용자 데이터 가비지 수집이 발생하지 않는 때에 수행된다. Thus, the first relocation is typically performed when no user data garbage collection does not occur. 최악의 경우, 매 호스트 쓰기가 사용자 데이터 가비지 수집을 트리거 시키지만, 1개 블록의 자발적인 재배치의 충분한 시간이 있는 때 에, 우선적 재배치가 동시에 하나의 제어 블록에 대해 수행될 수 있다. In the worst case, there is, first, when you have enough time to relocate the voluntary relocation of the letter but every host triggers the garbage collection of user data, one block can be simultaneously performed on one of the control block.

사용자 데이터 가비지 수집 작동과 제어 갱신이 물리적 에러들과 부합할 때, 초기에 미리, 즉, 블록이 여전히 2개 또는 그 이상의 쓰이지 않은 메모리 유닛(예를 들면, 섹터)을 가지고 있는 시점에, 우선적 재배치 또는 제어된 가비지 수집을 행하여 더 큰 안전한 마진을 갖는 것이 더 좋다. When consistent with the user data garbage collection operations and control updates the physical error, the initial advance, that is, blocks are still two or more obsolete memory unit that is a point with (e.g., sectors), preferentially relocated performing the control or the garbage collection, it is better with a larger safety margin.

비록 본 발명의 다양한 양태를 특정 실시예에 관하여 설명하였지만, 본 발명은 첨부된 청구범위의 전체 범주내에서 보호가 부여된다는 것을 이해하여야 한다. Although described with respect to various aspects of the present invention to a specific embodiment, the present invention is to be understood that protection is given within the entire scope of the appended claims.

Claims (23)

  1. 블록들로 조직된 비휘발성 메모리에 있어서, 각각의 블록은 함께 삭제 가능한 메모리 유니트들로 파티션되어 있으며, 상기 각각의 메모리 유니트는 데이터의 논리 유니트를 저장하는데 있어서, 데이터 저장 및 업데이트 방법은, In a nonvolatile memory organized into blocks, each block is partitioned into memory units clearable together, wherein each memory unit for storing in a logical unit of data, data storage, and how to update,
    상기 메모리를 페이지 시리즈로 구성하는 단계와, 각각의 페이지는 그 내에서 센싱 회로 세트에 의하여 병렬로 서비스되는 모든 메모리 유니트들을 구비하며; Comprising the steps of: configuring the memory to the page series, each page is provided with all of the memory units in parallel, served by a set of sensing circuits, and in that;
    데이터를 복수개의 논리 그룹들로 조직하는 단계와, 각각의 논리 그룹은 복수개의 데이터 논리 유니트들로 파티션되며; Comprising the steps of: organizing the data into a plurality of logical groups, each logical group is partitioned into a plurality of logical data unit;
    각각의 논리 유니트가 주어진 옵셋에 따라 페이지의 메모리 유니트 내에 저장될 수 있도록, 제1 블록 내에 논리 그룹의 논리 유니트들의 제1 버전을 페이지 별로 저장하는 단계와; Each logical unit is to be stored in a memory unit of a page in the specified offset, the method comprising: storing a first version of logical units of the logical group within a block on a page-by-page basis, and;
    상기 제1의 순서와 다른 제2의 순서에 따라 제2 블록에 논리 그룹의 논리 유니트들의 다음 버전을 페이지 별로 저장하는 단계와, 각각의 다음 버전은 제1 버전의 것과 동일한 페이지 내에 옵셋을 갖는 다음 사용 가능한 메모리 유니트 내에 저장되어, 논리 유니트의 모든 버전들이 센싱 회로들의 동일한 그룹에 의하여 접근 가능한 것을 특징으로 하는 데이터 저장 및 업데이트 방법. And storing the next version of logical units of the first logical group to a second block in the order as the order of the second, different one for each page, each of the following versions of the following: having the offset in the same page as that of the first version use stored in the memory unit, the data storage and updating characterized in that all versions of a logical unit are accessible by the same group of sensing circuits.
  2. 청구항 1에 있어서, 상기 제1의 순서에 따라 논리 유니트들의 현재 버전들을 카피하여 각각의 페이지 내에서 상기 다음 사용 가능 메모리 유니트에 선행하는 소 정의 사용하지 않은 메모리 유니트들을, 논리 유니트들의 다음 버전들을 저장함과 동시에, 패딩하는 단계를 더 포함하는 것을 특징으로 하는 방법. The method according to claim 1, the memory unit has not been used bovine defined preceding the next available memory unit in each of the page to copy the current version of logical units in the order of the first, stores the next version of the logic unit At the same time, it characterized in that further comprising the step of padding.
  3. 청구항 1에 있어서, 복수개의 메모리 평면으로부터 메모리를 구성하는 단계와, 상기 평면은 페이지 시리즈로 구성되며, 각각의 페이지는 그 내부에서 센싱 회로 세트에 의하여 병렬로 서비스되는 모든 메모리 유니트들을 구비하며; The method according to claim 1, further comprising configuring the memory from the plurality of memory planes, and said plane consists of a series of pages, each page is provided with all of the memory units in parallel, served by a set of sensing circuits therein, and;
    상기 메모리를 메타페이지 시리즈로 구성하는 단계와, 상기 각각의 메타페이지는 한개의 메타페이지 내의 모든 메모리 유니트들이 센싱 회로들에 의하여 병렬로 서비스될 수 있도록 각각의 평면으로부터의 메모리 페이지로부터 구성되는 것을 특징으로 하는 방법. Comprising the steps of: configuring the memory metapage series, wherein each of the meta-page is to be one of the all the memory units in the meta-pages are configured from a memory page from each plane to be serviced in parallel by the sensing circuit how to.
  4. 청구항 3에 있어서, 상기 제1의 순서에 따라 논리 유니트들의 현재 버전들을 카피하여 각각의 페이지 내에서 상기 다음 사용 가능 메모리 유니트에 선행하는 소정의 사용하지 않은 메모리 유니트들을, 논리 유니트들의 다음 버전들을 저장함과 동시에, 패딩하는 단계를 더 포함하는 것을 특징으로 하는 방법. The method according to claim 3, the memory unit has not been used for a predetermined preceding the next available memory unit in each of the page to copy the current version of logical units in the order of the first, stores the next version of the logic unit At the same time, it characterized in that further comprising the step of padding.
  5. 청구항 1 내지 4 중 어느 한 항에 있어서, 상기 각각의 논리 유니트는 호스트 데이터의 섹터인 것을 특징으로 하는 방법. A method according to any one of claims 1 to 4, wherein each logic unit is characterized in that a sector of host data.
  6. 청구항 1 내지 4 중 어느 한 항에 있어서, 상기 각각의 페이지는 한개의 데 이터 논리 유니트를 저장하는 것을 특징으로 하는 방법. A method according to any one of claims 1 to 4, wherein each page is characterized in that for storing one of the data logic unit.
  7. 청구항 1 내지 4 중 어느 한 항에 있어서, 상기 각각의 페이지는 한 개 이상의 데이터 논리 유니트 보다 많은 것을 저장하는 것을 특징으로 하는 방법. A method according to any one of claims 1 to 4, wherein each page is characterized in that to store a lot more one or more logical data unit.
  8. 청구항 1 내지 4 중 어느 한 항에 있어서, 상기 비휘발성 메모리는 플로팅 메모리 셀들을 구비하는 것을 특징으로 하는 방법. A method according to any one of claims 1 to 4, wherein the nonvolatile memory is characterized in that it comprises a floating memory cells.
  9. 청구항 1 내지 4 중 어느 한 항에 있어서, 상기 비휘발성 메모리는 플레쉬 EEPROM인 것을 특징으로 하는 방법. A method according to any one of claims 1 to 4, the method of the nonvolatile memory is characterized in that the flash EEPROM.
  10. 청구항 1 내지 4 중 어느 한 항에 있어서, 상기 비휘발성 메모리는 NROM인 것을 특징으로 하는 방법. A method according to any one of claims 1 to 4, wherein the nonvolatile memory is characterized in that the NROM.
  11. 청구항 1 내지 4 중 어느 한 항에 있어서, 상기 비휘발성 메모리는 메모리 카드 내에 제공되어 있는 것을 특징으로 하는 방법. It claims 1 to A method according to any one of claim 4, wherein the nonvolatile memory is characterized in that it is provided in the memory card.
  12. 청구항 1 내지 4 중 어느 한 항에 있어서, 상기 비휘발성 메모리는 각각 1 비트의 데이터를 저장하는 메모리 셀들을 구비하는 것을 특징으로 하는 방법. A method according to any one of claims 1 to 4, wherein the nonvolatile memory is characterized in that it comprises memory cells for storing data of each one bit.
  13. 청구항 1 내지4 중 어느 한 항에 있어서, 상기 비휘발성 메모리는 각각 1 비트의 데이터 이상을 저장하는 메모리 셀들을 구비하는 것을 특징으로 하는 방법. A method according to any one of claims 1 to 4, wherein the nonvolatile memory is characterized in that it comprises the memory cells that store more than one bit of data, respectively.
  14. 비휘발성 메모리는, The non-volatile memory,
    복수개의 블록으로 구성되는 메모리와, 상기 각각의 블록은 서로 삭제 가능한 복수개의 메모리 유니트들이며, 상기 각각의 메모리 유니트는 데이터의 논리 유니트를 저장하며, 상기 각각의 블록은 복수개의 메타 페이지 중에서 논리 유니트의 논리 그룹을 저장하며, 상기 각각의 메타 페이지는 각각의 평면의 메모리 페이지로부터 구성되며; Deulyimyeo plurality of memory unit, memory, and the individual blocks are removed from each other consisting of a plurality of blocks, wherein each memory unit stores a logical unit of data, wherein each block of the logical unit from the plurality of meta-pages storing the logical group, and each of the meta-page is constituted from a memory page of each plane;
    상기 블록들의 작용을 제어하기 위한 제어기와; And a controller for controlling the operation of the blocks;
    상기 제어기는 제1 순서에 따라 제1 블록의 메모리 유니트들 중에서 데이터의 논리 유니트의 제1 버전을 저장하며, 상기 각각의 제1 버전 논리 유니트는 메모리 평면들 중 한 개의 메모리 평면 내에 저장되며; Wherein the controller stores the first version of the first logical unit of data from the memory unit of a block according to a first order, each of the first version of logical units are stored in one memory plane of the memory plane;
    상기 제어기는 상기 제1의 순서와 다른 제2 순서에 따라 논리 유니트들의 다음 버전들을 제2 블록으로 저장하며, 상기 각각의 다음 버전은 제1 버전과 동일한 평면 내에서 사용 가능한 다음 메모리 유니트 내에 저장되며, 따라서 논리 유니트의 모든 버전들은 동일한 평면으로부터 접근 가능한 것을 특징으로 하는 비휘발성 메모리. Wherein the controller stores the next version of a logical unit according to a second sequence order and the other of the first to the second block, the next version of each are stored in the following memory units are available in the same plane as the first version and thus all versions of the logical units are non-volatile memory, characterized in that accessible from the same plane.
  15. 청구항 14에 있어서, 논리 유니트들의 다음 버전들을 저장함과 동시에, 제1 순서에 따라 논리 유니트들의 현재 버전들을 갖는 사용 가능한 다음 메모리 유니트에 선행하는 소정의 사용하지 않은 메모리 유니트들을 메타페이지 별로 패딩하는 제어기를 더 구비하며, 상기 사용 가능한 다음 메모리 유니트는 상기 제1 버전의 그것과 동일한 메타 페이지 내에 옵셋을 구비하는 것을 특징으로 하는 메모리. The method according to claim 14, the next version of the logic unit simultaneously with the storing, the user controller for the next available padding the memory unit is not desired to use the preceding to the memory unit by each meta-page with the current versions of logical units in accordance with a first order further comprising, using the next available memory unit is a memory, characterized in that it comprises an offset within the same metapage as that of the first version.
  16. 청구항 14에 있어서, 상기 비휘발성 메모리는 플로팅 게이트 메모리 셀들을 구비하는 것을 특징으로 하는 메모리. The method according to claim 14, wherein the non-volatile memory is a memory comprising: a floating gate memory cell.
  17. 청구항 14에 있어서, 상기 비휘발성 메모리는 플레쉬 EEPROM인 것을 특징으로 하는 메모리. The method according to claim 14, wherein the non-volatile memory is a memory, characterized in that a flash EEPROM.
  18. 청구항 14에 있어서, 상기 비휘발성 메모리는 NROM인 것을 특징으로 하는 메모리. The method according to claim 14, wherein the non-volatile memory is a memory which is characterized in that the NROM.
  19. 청구항 14에 있어서, 상기 비휘발성 메모리는 메모리 카드 내에 제공되어 있는 것을 특징으로 하는 메모리. The method according to claim 14, wherein the non-volatile memory is a memory, characterized in that it is provided in the memory card.
  20. 청구항 14 내지 19 중 어느 한 항에 있어서, 상기 비휘발성 메모리는 각각 1 비트의 데이터를 저장하는 메모리 셀들을 구비하는 것을 특징으로 하는 메모리. A method according to any one of claims 14 to 19, wherein the non-volatile memory is a memory comprising: memory cells for storing data of each one bit.
  21. 청구항 14 내지 19 어느 한 항에 있어서, 상기 비휘발성 메모리는 각각 1 비트의 데이터 이상을 저장하는 메모리 셀들을 구비하는 것을 특징으로 하는 메모리. The method according to claim 14 to 19 wherein any one of said non-volatile memory, the memory comprising: memory cells for storing data of at least one bit each.
  22. 비휘발성 메모리는, The non-volatile memory,
    복수개의 블록으로 구성되는 메모리와, 상기 각각의 블록은 서로 삭제 가능한 복수개의 메모리 유니트들이며, 상기 각각의 메모리 유니트는 데이터의 논리 유니트를 저장하며, 상기 각각의 블록은 복수개의 메타 페이지 중에서 논리 유니트의 논리 그룹을 저장하며, 상기 각각의 메타 페이지는 각각의 평면의 메모리 페이지로부터 구성되며; Deulyimyeo plurality of memory unit, memory, and the individual blocks are removed from each other consisting of a plurality of blocks, wherein each memory unit stores a logical unit of data, wherein each block of the logical unit from the plurality of meta-pages storing the logical group, and each of the meta-page is constituted from a memory page of each plane;
    제1 순서에 따라 제1 블록의 메모리 유니트들 중에서 데이터의 논리 유니트들의 제1 버전을 저장하는 수단과, 상기 제1 버전 논리 유니트는 메모리 평면들 중 한개의 메모리 평면 내부에 저장되며; The means and the first version of logical units for storing a first version of logical units of the first block data from the memory unit in accordance with the first order is stored in the internal one of the memory planes of the memory plane;
    상기 제1 순서와 다른 제2 순서에 따라 논리 유니트들의 다음 버전들을 제2 블록 내에 저장하는 수단과, 상기 각각의 다음 버전은 제1 버전과 동일한 평면 내에서 사용 가능한 다음 메모리 유니트 내에 저장되며, 논리 유니트의 모든 버전들은 동일한 평면으로부터 접근 가능한 것을 특징으로 하는 비휘발성 메모리. The second means, the next version of the respective storing in a second block of the next version of a logical unit according to a second order different from the first sequence are stored in the following memory units are available in the same plane as the first version, the logic all versions of the units are non-volatile memory, characterized in that accessible from the same plane.
  23. 청구항 22에 있어서, 제1 순서에 따라 논리 유니트들의 현재 버전들을 갖는 사용 가능한 다음 메모리 유니트에 선행하여 소정의 사용하지 않은 메모리 유니트들을 메타 페이지 별로 페딩하기 위한 수단을 더 구비하며, 상기 사용 가능한 다음 메모리 유니트는 상기 제1 버전의 그것과 동일한 메타 페이지 내에 옵셋을 구비하는 것을 특징으로 하는 메모리. The method according to claim 22, claim, and followed by the next memory unit usable with the current versions of logical units according to the first order, further comprising: means for peding each metapage of memory units are not given to use of the next available memory a memory unit comprising: an offset in the same metapage as that of the first version.
KR1020067013315A 2003-12-30 2004-12-21 Non-volatile memory and method with memory planes alignment KR20060134011A (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
US10/750,155 US7139864B2 (en) 2003-12-30 2003-12-30 Non-volatile memory and method with block management system
US10/750,155 2003-12-30
US10/917,888 US20050141313A1 (en) 2003-12-30 2004-08-13 Non-volatile memory and method with memory planes alignment
US10/917,888 2004-08-13

Publications (1)

Publication Number Publication Date
KR20060134011A true KR20060134011A (en) 2006-12-27

Family

ID=34753195

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067013315A KR20060134011A (en) 2003-12-30 2004-12-21 Non-volatile memory and method with memory planes alignment

Country Status (4)

Country Link
EP (1) EP1704483A2 (en)
KR (1) KR20060134011A (en)
TW (1) TWI272487B (en)
WO (1) WO2005066792A2 (en)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100825802B1 (en) * 2007-02-13 2008-04-29 삼성전자주식회사 Data write method of non-volatile memory device copying data having logical pages prior to logical page of write data from data block
KR100982440B1 (en) * 2008-06-12 2010-09-15 (주)명정보기술 System for managing data in single flash memory
US8171239B2 (en) 2007-11-15 2012-05-01 Samsung Electronics Co., Ltd. Storage management method and system using the same
WO2013165108A1 (en) * 2012-05-03 2013-11-07 주식회사 디에이아이오 Nonvolatile memory system
US8817561B2 (en) 2012-07-09 2014-08-26 SK Hynix Inc. Method for estimating channel characteristics of nonvolatile memory device

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US9104315B2 (en) 2005-02-04 2015-08-11 Sandisk Technologies Inc. Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
JP4751163B2 (en) * 2005-09-29 2011-08-17 株式会社東芝 Memory system
US7870231B2 (en) * 2006-07-21 2011-01-11 Qualcomm Incorporated Efficiently assigning precedence values to new and existing QoS filters
US8898412B2 (en) * 2007-03-21 2014-11-25 Hewlett-Packard Development Company, L.P. Methods and systems to selectively scrub a system memory
US8634470B2 (en) 2007-07-24 2014-01-21 Samsung Electronics Co., Ltd. Multimedia decoding method and multimedia decoding apparatus based on multi-core processor
JP4956593B2 (en) 2009-09-08 2012-06-20 株式会社東芝 Memory system
US8626989B2 (en) * 2011-02-02 2014-01-07 Micron Technology, Inc. Control arrangements and methods for accessing block oriented nonvolatile memory
WO2013171792A1 (en) * 2012-05-16 2013-11-21 Hitachi, Ltd. Storage control apparatus and storage control method
US9817593B1 (en) 2016-07-11 2017-11-14 Sandisk Technologies Llc Block management in non-volatile memory system with non-blocking control sync system
US10423353B2 (en) * 2016-11-11 2019-09-24 Micron Technology, Inc. Apparatuses and methods for memory alignment

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5860124A (en) * 1996-09-30 1999-01-12 Intel Corporation Method for performing a continuous over-write of a file in nonvolatile memory
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100825802B1 (en) * 2007-02-13 2008-04-29 삼성전자주식회사 Data write method of non-volatile memory device copying data having logical pages prior to logical page of write data from data block
US8171239B2 (en) 2007-11-15 2012-05-01 Samsung Electronics Co., Ltd. Storage management method and system using the same
KR100982440B1 (en) * 2008-06-12 2010-09-15 (주)명정보기술 System for managing data in single flash memory
WO2013165108A1 (en) * 2012-05-03 2013-11-07 주식회사 디에이아이오 Nonvolatile memory system
US8817561B2 (en) 2012-07-09 2014-08-26 SK Hynix Inc. Method for estimating channel characteristics of nonvolatile memory device

Also Published As

Publication number Publication date
WO2005066792A2 (en) 2005-07-21
TWI272487B (en) 2007-02-01
WO2005066792A3 (en) 2006-02-09
EP1704483A2 (en) 2006-09-27
TW200601042A (en) 2006-01-01

Similar Documents

Publication Publication Date Title
US8793430B2 (en) Electronic system having memory with a physical block having a sector storing data and indicating a move status of another sector of the physical block
JP4960705B2 (en) Adaptive deterministic grouping of blocks into multi-block units
KR101040961B1 (en) System and method for use of on-chip non-volatile memory write cache
CN101124555B (en) Non-volatile memory and method with multi-stream updating
US9268682B2 (en) Methods, devices and systems for physical-to-logical mapping in solid state drives
US6684289B1 (en) Techniques for operating non-volatile memory systems with data sectors having different sizes than the sizes of the pages and/or blocks of the memory
US7395384B2 (en) Method and apparatus for maintaining data on non-volatile memory systems
US8386695B2 (en) Methods and apparatus for writing data to non-volatile memory
US8040744B2 (en) Spare block management of non-volatile memories
CN102576330B (en) Memory system having persistent garbage collection
US7173852B2 (en) Corrected data storage and handling methods
KR101948381B1 (en) Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive
CN101645044B (en) Method for operating erasable and reprogrammable non-volatile memory systems
US7395404B2 (en) Cluster auto-alignment for storing addressable data packets in a non-volatile memory array
CN101903866B (en) Method and system for storage of data in non-volatile media
KR101089576B1 (en) Non-volatile memory and method with improved indexing for scratch pad and update blocks
JP4362534B2 (en) Scheduling of the housekeeping operations in the flash memory system
EP1197868B1 (en) Method of driving remapping in flash memory and flash memory architecture suitable therefor
EP2286341B1 (en) Method and system for storage address re-mapping for a multi-bank memory device
US8732388B2 (en) Embedded mapping information for memory devices
JP5696118B2 (en) Weave sequence counter for non-volatile memory systems
KR101202620B1 (en) Non-volatile memory and method with multi-stream updating
US7761655B2 (en) Storage system and method of preventing deterioration of write performance in storage system
US10055294B2 (en) Selective copyback for on die buffered non-volatile memory
USRE44052E1 (en) Flash memory management method

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination