[go: up one dir, main page]

KR100950281B1 - Flash memory system and data calculation method of flash memory - Google Patents

Flash memory system and data calculation method of flash memory Download PDF

Info

Publication number
KR100950281B1
KR100950281B1 KR1020080018560A KR20080018560A KR100950281B1 KR 100950281 B1 KR100950281 B1 KR 100950281B1 KR 1020080018560 A KR1020080018560 A KR 1020080018560A KR 20080018560 A KR20080018560 A KR 20080018560A KR 100950281 B1 KR100950281 B1 KR 100950281B1
Authority
KR
South Korea
Prior art keywords
flash memory
data
block
internal buffer
logical
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
KR1020080018560A
Other languages
Korean (ko)
Other versions
KR20090093185A (en
Inventor
정태선
Original Assignee
아주대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 아주대학교산학협력단 filed Critical 아주대학교산학협력단
Priority to KR1020080018560A priority Critical patent/KR100950281B1/en
Publication of KR20090093185A publication Critical patent/KR20090093185A/en
Application granted granted Critical
Publication of KR100950281B1 publication Critical patent/KR100950281B1/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0669Configuration or reconfiguration with decentralised address assignment
    • G06F12/0676Configuration or reconfiguration with decentralised address assignment the address being position dependent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

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

Abstract

본 발명은 플래시 메모리 시스템 및 플래시 메모리의 데이터 연산방법에 관한 것으로, 본 발명에 따른 플래시 메모리 시스템은, 복수의 블록들을 구비하며, 상기 복수의 블록들 각각에 대한 블록상태정보 및 연산정보를 내부에 저장하고 있는 플래시 메모리와; 일정저장용량을 가지며, 상기 플래시 메모리에 대한 데이터 연산을 위해 데이터가 임시로 저장되기 위한 내부버퍼와; 연산을 원하는 데이터를 우선적으로 상기 내부버퍼에 저장하고, 상기 플래시 메모리의 블록상태정보 및 상기 내부버퍼의 데이터 저장 상태에 따라, 상기 내부버퍼에 저장된 데이터의 상기 플래시 메모리의 해당 블록에의 데이터 연산의 수행을 제어하는 연산제어부를 구비한다. 본 발명에 따르면, 대블록 플래시 메모리에서의 효율적인 매핑 및 데이터 연산이 가능해진다.The present invention relates to a flash memory system and a data operation method of a flash memory. The flash memory system according to the present invention includes a plurality of blocks, and includes block state information and operation information for each of the plurality of blocks. A stored flash memory; An internal buffer having a predetermined storage capacity and temporarily storing data for data operation on the flash memory; The data desired for the operation is first stored in the internal buffer, and according to the block state information of the flash memory and the data storage state of the internal buffer, the data operation of the data stored in the internal buffer into the corresponding block of the flash memory. An operation control unit for controlling performance is provided. According to the present invention, efficient mapping and data operations in large block flash memories are possible.

플래시, 대블록, 소블록, 플래시 변환계층, 내부블록, M블록, N블록 Flash, Large Block, Small Block, Flash Conversion Layer, Inner Block, M Block, N Block

Description

플래시 메모리 시스템 및 플래시 메모리의 데이터 연산방법{Flash memory system and method for data operation of flash memory}Flash memory system and method for data operation of flash memory}

본 발명은 플래시 메모리 시스템 및 플래시 메모리 데이터 연산방법에 관한 것으로, 보다 구체적으로는 대블록 플래시 메모리에서의 데이터 연산을 효율적으로 수행하기 위한 플래시 메모리 시스템 및 플래시 메모리 데이터 연산방법에 관한 것이다.The present invention relates to a flash memory system and a flash memory data operation method, and more particularly, to a flash memory system and a flash memory data operation method for efficiently performing data operation in a large block flash memory.

플래시 메모리는 데이터의 기록 및 삭제가 자유로운 램(RAM: Random Access Memory)의 장점과 전원 공급 없이도 저장된 데이터를 보존하는 롬(ROM: Read Only Memory)의 장점을 동시에 지니고 있다. 또한, 마그네틱 디스크 메모리를 기반으로 하는 저장매체에 비하여 전력소모가 적으면서도 하드디스크와 같은 빠른 액세스 타임을 가지며 크기가 작기 때문에 최근 디지털 카메라, PDA, MP3 플레이어와 같은 휴대용 전자기기 등의 내장형 시스템(Embedded System)이나 이동식 시스템(Mobile System) 등의 응용에서 많이 사용되고 있다.Flash memory has the advantages of Random Access Memory (RAM), which is free to write and delete data, and Read Only Memory (ROM), which preserves stored data without powering up. In addition, since the power consumption is lower than that of a storage medium based on magnetic disk memory, and the size is fast and has the same access time as a hard disk, the system is embedded in portable electronic devices such as digital cameras, PDAs, and MP3 players. It is widely used in applications such as System) and Mobile System.

플래시 메모리는 하드웨어 특성상 전원 공급이 중단된 이후에도 영구적으로 데이터를 저장하는 비휘발성 특성을 가진다. 또한, 하드디스크와 달리 이미 데이터가 있는 섹터에 중첩해서 쓰기(Overwrite)를 할 수 없는 특성을 가진다. 이 특성으로 인하여, 데이터를 쓰기 전에 해당 섹터가 포함된 전체 블록을 지워야 하는(Erase Before Write) 연산을 필요로 한다. 그리고 쓰기 데이터의 단위보다 삭제되는 데이터의 단위가 큰 특징을 가지고 있다. Flash memory has a nonvolatile characteristic of permanently storing data even after power supply is interrupted due to hardware characteristics. In addition, unlike a hard disk, it is impossible to overwrite a sector in which data is already present. Due to this property, an operation before erasing the entire block including the corresponding sector is required before writing data. In addition, the unit of data to be deleted is larger than that of write data.

이러한 특징은 플래시 메모리를 주메모리로 사용하는 것을 어렵게 할 뿐 아니라 플래시 메모리가 보조기억장치로 이용되는 경우에도 일반 하드디스크용 파일 시스템(file system)을 그대로 활용하는 것을 저해하는 요인이 된다.This feature not only makes it difficult to use the flash memory as a main memory but also prevents the use of a file system for a general hard disk even when the flash memory is used as an auxiliary storage device.

따라서 플래시 메모리 기반의 시스템은 플래시 메모리의 본질적인 하드웨어적인 한계점을 극복하기 위하여 상기 파일시스템과 플래시 메모리 사이에 플래시 변환계층(FTL: Flash Translation Layer)이 사용된다.Therefore, a flash memory based system uses a Flash Translation Layer (FTL) between the file system and the flash memory to overcome the inherent hardware limitations of the flash memory.

도 1에 일반적인 플래시 메모리 시스템의 블록도가 나타나 있다.1 shows a block diagram of a typical flash memory system.

도 1에 도시된 바와 같이, 일반적인 플래시 메모리 시스템은, 가장 상위레벨에 응용프로그램(12)이 있으며, 그 아래에 사용자 프로그램을 탑재하는 파일 시스템(12)과, 사용자의 요청에 따른 소정의 데이터 연산 즉, 플래시 메모리(18)의 읽기 및 쓰기 연산 동작을 상기 플래시 메모리(18)에 전달하는 플래시 변환 계층(16)을 포함한다.As shown in FIG. 1, a general flash memory system includes an application program 12 at a top level, a file system 12 having a user program mounted thereon, and a predetermined data operation according to a user's request. That is, it includes a flash translation layer 16 that transfers read and write operations of the flash memory 18 to the flash memory 18.

상기 파일 시스템(14)은 플래시 메모리(18)에 저장되어 있는 데이터를 읽거나 플래시 메모리(18)에 데이터를 저장하기 위하여 논리 섹터 어드레스에 대한 읽기 또는 쓰기 연산 요청을 연속적으로 하게 되며, 상기 플래시 변환계층(16)의 알 고리즘에 의하여 이러한 논리 섹터 어드레스는 실제 플래시 메모리(18)의 물리 섹터 어드레스로 변경된다. The file system 14 continuously executes a read or write operation request for a logical sector address in order to read data stored in the flash memory 18 or store data in the flash memory 18, and converts the flash By the algorithm of layer 16 this logical sector address is changed to the physical sector address of the actual flash memory 18.

상기 플래시 변환계층(16)은, 플래시 메모리(18)의 데이터 연산 동작시, 파일 시스템이 생성한 논리어드레스를 삭제 연산이 수행된 플래시 메모리(18)의 물리 어드레스로 매핑시켜 주는 역할을 수행한다. The flash translation layer 16 maps the logical address generated by the file system to the physical address of the flash memory 18 in which the erase operation is performed during the data operation operation of the flash memory 18.

상기 플래시 변환계층(16)의 어드레스 매핑 기능으로 인해, 호스트는 상기 플래시 메모리(30)를 하드디스크 드라이버로 인식하고, 하드디스크 드라이버와 동일한 방식으로 플래시 메모리 장치를 액세스할 수 있게 된다. Due to the address mapping function of the flash translation layer 16, the host recognizes the flash memory 30 as a hard disk driver and can access the flash memory device in the same manner as the hard disk driver.

상기 플래시 메모리(18)는 일반적으로 소블록(small block) 플래시 메모리와 대블록(large block) 플래시 메모리로 나뉠 수 있다.The flash memory 18 may generally be divided into a small block flash memory and a large block flash memory.

상기 소블록 플래시 메모리는 논리적 연산 단위와 물리적 연산 단위가 동일한 반면, 대블록 플래시 메모리는 논리적 연산 단위에 비하여 물리적 연산 단위가 큰 특징을 가진다. 일반적으로, 논리적 연산 단위는 호스트 측의 연산 단위로 흔히 섹터(sector)라 칭하여지며, 물리적 연산 단위는 플래시 메모리에서 실제 단위로 흔히 페이지(page)라 칭하여진다. 예를 들어, 상기 대블록 플래시 메모리는 데이터를 읽거나 쓸 때의 데이터 물리적 연산 기본 단위가 2KB 혹은 1KB임에 비하여 대부분의 운영체제에서 데이터 섹터 크기는 512B이다. The small block flash memory has the same physical operation unit as the logical operation unit, whereas the large block flash memory has a larger physical operation unit than the logical operation unit. In general, logical units of computation are commonly referred to as sectors as host-side computational units, and physical units of computation are often referred to as pages as actual units in flash memory. For example, the large block flash memory has a data sector size of 512B in most operating systems, whereas the basic unit of data physical operation when reading or writing data is 2 KB or 1 KB.

도 2는 소블록 플래시 메모리와 대블록 플래시 메모리의 구조를 나타낸 것이다. 도 2(a)는 대블록 플래시 메모리의 구조의 예를 나타낸 것이고, 도 2(b)는 소블록 플래시 메모리의 구조의 예를 나타낸 것이다. 2 shows the structure of a small block flash memory and a large block flash memory. 2 (a) shows an example of the structure of a large block flash memory, and FIG. 2 (b) shows an example of the structure of a small block flash memory.

도 2(a)에 도시된 바와 같이, 대블록 플래시 메모리는 128MB 플래시 메모리인 경우 1024개의 블록들(Block0~Block1023)로 구성되며, 한 블록이 64개의 페이지들(Page0~Page63)로 이루어지며 한 페이지는 4개의 섹터들로 구성되는 구조를 가진다. 여기서 한 페이지는 2KB의 메인어레이영역(섹터영역(Sector area))과 64B의 여분영역(스페어 영역(spare area))을 가질 수 있다. As shown in FIG. 2A, the large block flash memory is composed of 1024 blocks Block0 to Block1023 in the case of 128MB flash memory, and one block is composed of 64 pages (Page0 to Page63). The page has a structure composed of four sectors. Here, one page may have a main array area (sector area) of 2 KB and a spare area (spare area) of 64B.

도 2(b)에 도시된 바와 같이, 128MB의 소블록 플래시 메모리인 경우 8192개의 블록들(Block0~Block8191)로 구성되며 한 블록은 32개의 페이지들(Page0~Page31)로 구성된다. 또한, 한 페이지는 파일시스템이 바라보는 섹터의 크기인 512B를 가진다. 이 경우에도 한 페이지는 512B의 메인어레이 영역(섹터영역)과 16B의 여분영역(스페어영역)을 가질 수 있다.As shown in FIG. 2B, in the case of a 128 MB small block flash memory, 8192 blocks Block0 to Block8191 are configured, and one block is composed of 32 pages Page0 to Page31. One page also has 512B, which is the size of the sector that the filesystem sees. Even in this case, one page may have a main array area (sector area) of 512B and a spare area (spare area) of 16B.

도 3은 일반적인 소블록 플래시 메모리 시스템에서의 데이터 연산 및 매핑방법의 예를 설명하기 위한 도면이다.3 is a diagram for describing an example of a data operation and mapping method in a general small block flash memory system.

도 3(a)은 파일시스템으로부터 논리 섹터 어드레스에 대한 쓰기 연산 요청에 대한 시퀀스를 나타낸 것이고, 도 3(b)은 매핑테이블을 나타낸 것이고, 도 3(c)은 소블록 플래시 메모리의 구조를 나타낸 것이다. 여기서 이해의 편의 및 설명의 편의를 위해 상기 소블록 플래시 메모리는 한 블록이 3개의 페이지로 구성되는 것으로 가정한다. 이미 설명한 바와 같이 소블록 플래시 메모리의 경우에는 상기 페이지는 섹터와 크기와 동일하므로 섹터와 페이지는 유사의미로 사용될 수 있다.FIG. 3 (a) shows a sequence for a write operation request for a logical sector address from a file system, FIG. 3 (b) shows a mapping table, and FIG. 3 (c) shows the structure of a small block flash memory. will be. For convenience of explanation and explanation, it is assumed that the small block flash memory is composed of three pages. As described above, in the case of the small block flash memory, since the page is the same as the sector and the size, the sector and the page can be used as a similar meaning.

도 3에 도시된 바와 같이, 먼저 파일 시스템에서 특정 논리섹터에 대한 연속 한 쓰기 연산을 요청한다. 예를 들어 도 3(a)의 write(3, D3)란 논리 섹터 번호 3번에 데이터 D3을 쓴다는 말이다. 여기서 논리 섹터 번호란, 파일 시스템에서 플래시 메모리를 논리적으로 n(플래시 메모리의 용량에 따라 결정되는 값)개의 섹터가 있다고 가정하고 차례로 번호를 붙인 수이다. 한 블록이 3개의 페이지로 구성되는 것으로 가정하였으므로, 논리섹터번호 3으로부터 유추하면 논리블록번호(lbn) 1이 되고, 오프셋(offset)은 0이 될 것이다.As shown in FIG. 3, a file system first requests a continuous write operation for a specific logical sector. For example, write (3, D 3 ) in Fig. 3A means that data D 3 is written to logical sector number 3. Here, the logical sector number is a number in which the flash memory is numbered in sequence in the file system, assuming that there are logically n sectors (a value determined according to the capacity of the flash memory). Since it is assumed that one block is composed of three pages, inferring from logical sector number 3 will result in logical block number lbn 1 and an offset of 0.

도 3(b)의 매핑테이블에 따르면, 논리블록번호(lbn) 1은 물리블록번호(pbn) 10에 매핑되어 있다. 그리고 오프셋이 0이므로 데이터 D3은 도 3(C)의 물리블록번호(pbn) 10번의 오프셋 0의 위치에 써지게 된다. 이와 같은 원리에 따라, 논리섹터번호 4,5,6,7 에 대응되는 데이터 D4,D5,D6,D7에 대한 데이터 쓰기 연산이 수행되게 된다. 이에 따라, 플래시 메모리의 물리블록번호(pbn) 10번의 오프셋 1의 위치에는 데이터 D4, 오프셋 2의 위치에는 데이터 D5, 물리블록번호(pbn) 11번의 오프셋0의 위치에는 데이터 D6, 오프셋1의 위치에는 데이터 D7이 쓰이게 된다.According to the mapping table of FIG. 3B, the logical block number lbn 1 is mapped to the physical block number pbn 10. Since the offset is 0, the data D 3 is written at the position of offset 0 of the physical block number pbn 10 of FIG. 3C. According to this principle, a data write operation on data D 4 , D 5 , D 6 , and D 7 corresponding to logical sector numbers 4 , 5 , 6 , and 7 is performed. Accordingly, data D 4 is located at position 1 of offset 1 of physical block number pbn of the flash memory, data D 5 is positioned at position 2 of offset 2, data D 6 is positioned at offset 0 of position 11 of physical block number pbn. At position 1, data D 7 is used.

마지막 write(7,D7) 연산에서는 논리섹터번호 7은 논리블록번호 2(7/3의 몫)이며 오프셋은 1(7%3)인데 그 위치에 이미 데이터가 쓰여 있다. 이때 플래시 메모리는 같은 위치에 데이터가 갱신되는 연산은 삭제 연산이 수행되어야하므로, 물리블록번호(pbn) 11의 오프셋 1의 위치에 데이터 D7이 쓰일 수 없다. 이때는 비어있는 다른 위치(예를 들면, 물리블록번호(pbn) 11의 오프셋 2의 위치)에 쓰고 이에 대한 연산정보로써 논리섹터 번호 7을 여분 영역(spare area)에 저장한다. 상기 여분영역에 저장된 연산정보는 나중에 읽기 연산 등에서 어떤 데이터가 논리섹터번호 7에 대한 최신 데이터인지 여부를 알아내기 위한 것이다.In the last write (7, D 7 ) operation, logical sector number 7 is logical block number 2 (7/3 quotient) and offset is 1 (7% 3), and data is already written at the position. In this case, since the erase operation must be performed for the operation of updating data at the same location, the data D 7 cannot be written at the position of offset 1 of the physical block number pbn 11. At this time, it writes to another empty position (for example, the position of offset 2 of physical block number pbn) and stores logical sector number 7 as spare information in the spare area. The operation information stored in the spare area is used to find out which data is the latest data for logical sector number 7 in a read operation or the like.

한편, 최근에는 플래시 메모리의 대용량화 경향에 따라, 소블록 플래시 메모리보다는 대블록 플래시 메모리가 많이 출시되고 있다. 이미 설명한 바와 같이, 대블록 플래시 메모리의 경우에는, 논리적 연산 단위에 비하여 물리적 연산 단위가 큰 특징을 가진다. On the other hand, in recent years, large block flash memory has been released rather than small block flash memory due to the trend of increasing the capacity of the flash memory. As described above, in the case of the large block flash memory, the physical operation unit is larger than the logical operation unit.

이러한 구조를 가지는 대블록 플래시 메모리에서 일반적으로 소블록 플래시 메모리에 적용되는 매핑방법이나 데이터 연산방법을 그대로 사용하기에는 무리가 있다. 따라서 대블록 플래시 메모리에 효율적으로 적용될 수 있는 플래시 메모리 시스템 및 매핑방법을 포함한 데이터 연산방법이 필요한 실정에 있다.In a large block flash memory having such a structure, it is difficult to use a mapping method or a data operation method that is generally applied to a small block flash memory. Therefore, there is a need for a data operation method including a flash memory system and a mapping method that can be efficiently applied to a large block flash memory.

따라서 본 발명의 목적은 상기한 종래의 문제점을 극복할 수 있는 플래시 메모리 시스템 및 데이터 연산방법을 제공하는 데 있다.Accordingly, an object of the present invention is to provide a flash memory system and a data operation method capable of overcoming the aforementioned problems.

본 발명의 다른 목적은 대블록 플래시 메모리에 효율적으로 적용 가능한 플래시 메모리 시스템 및 데이터 연산방법을 제공하는 데 있다. Another object of the present invention is to provide a flash memory system and a data operation method which can be efficiently applied to a large block flash memory.

본 발명의 또 다른 목적은 대블록 플래시 메모리의 효율적인 매핑을 위한 플래시 메모리 시스템 및 데이터 연산방법을 제공하는 데 있다.Another object of the present invention is to provide a flash memory system and a data operation method for efficient mapping of a large block flash memory.

본 발명의 또 다른 목적은 내부버퍼를 이용하여 대블록 플래시메모리의 데이터 연산을 수행하는 플래시 메모리 시스템 및 데이터 연산방법을 제공하는 데 있다.Another object of the present invention is to provide a flash memory system and a data operation method for performing data operation of a large block flash memory using an internal buffer.

상기한 기술적 과제들의 일부를 달성하기 위한 본 발명의 구체화에 따라, 본 발명에 따른 플래시 메모리 시스템은, 복수의 블록들을 구비하며, 상기 복수의 블록들 각각에 대한 블록상태정보 및 연산정보를 내부에 저장하고 있는 플래시 메모리와; 일정저장용량을 가지며, 상기 플래시 메모리에 대한 데이터 연산을 위해 데이터가 임시로 저장되기 위한 내부버퍼와; 연산을 원하는 데이터를 우선적으로 상기 내부버퍼에 저장하고, 상기 플래시 메모리의 블록상태정보 및 상기 내부버퍼의 데이터 저장 상태에 따라, 상기 내부버퍼에 저장된 데이터의 상기 플래시 메모리의 해당 블록에의 데이터 연산의 수행을 제어하는 연산제어부를 구비한다.According to an embodiment of the present invention for achieving some of the technical problems described above, a flash memory system according to the present invention includes a plurality of blocks, and has block state information and operation information for each of the plurality of blocks therein. A stored flash memory; An internal buffer having a predetermined storage capacity and temporarily storing data for data operation on the flash memory; The data desired for the operation is first stored in the internal buffer, and according to the block state information of the flash memory and the data storage state of the internal buffer, the data operation of the data stored in the internal buffer into the corresponding block of the flash memory. An operation control unit for controlling performance is provided.

상기 플래시 메모리는 논리적 연산단위보다 물리적 연산단위의 용량이 더 큰 저장용량을 가지는 대블록(large block) 플래시 메모리일 수 있다.The flash memory may be a large block flash memory having a storage capacity larger than that of a logical operation unit.

상기 플래시 메모리는, 복수의 블록들을 구비하고, 상기 복수의 블록들 각각은 복수의 페이지들을 구비하며, 상기 복수의 페이지들 각각은 복수의 섹터들을 구비하는 구조를 가질 수 있다.The flash memory may include a plurality of blocks, each of the plurality of blocks including a plurality of pages, and each of the plurality of pages may have a plurality of sectors.

상기 데이터 연산은 데이터 쓰기 연산일 수 있다.The data operation may be a data write operation.

상기 내부버퍼는 상기 플래시 메모리의 물리적 연산단위의 저장용량의 n 배(n은 자연수)에 해당되는 저장용량을 가질 수 있다.The internal buffer may have a storage capacity corresponding to n times (n is a natural number) of the storage capacity of the physical operation unit of the flash memory.

상기 연산제어부는, 상기 내부버퍼에 연산대상 데이터를 우선적으로 저장하고, 상기 내부버퍼에 상기 플래시 메모리의 물리적 연산단위의 n 배(n은 자연수)에 해당되는 저장용량만큼의 데이터가 적어도 저장된 경우 또는 연산대상 물리페이지가 바뀌는 경우에, 상기 내부버퍼에 저장된 데이터의 상기 플래시 메모리의 블록에 대한 데이터 연산을 수행할 수 있다.The operation control unit preferentially stores calculation target data in the internal buffer, and at least data of a storage capacity corresponding to n times (n is a natural number) of the physical operation unit of the flash memory is stored in the internal buffer; or When the operation target physical page is changed, a data operation may be performed on a block of the flash memory of data stored in the internal buffer.

상기 플래시 메모리의 블록들은, 저장된 모든 데이터가 페이지오프셋 및 섹터오프셋이 일치하는 제1타입블록(M블록) 또는 저장된 데이터 중 페이지 오프셋 및 섹터오프셋이 일치하지 않는 데이터를 적어도 하나 포함하는 제2타입블록(N블록)으로 구분되며, 상기 제1타입블록 및 상기 제2타입블록에 대한 블록상태정보는 상기 제1타입블록의 정보 및 상기 제2타입블록의 정보를 포함할 수 있다.The blocks of the flash memory may include at least one of a first type block (M block) in which page offsets and a sector offset coincide, or a second type block including data in which page offsets and sector offsets do not coincide. The block state information on the first type block and the second type block may include information on the first type block and information on the second type block.

상기 연산제어부는, 입력되는 연산대상 데이터를 우선적으로 상기 내부버퍼에 저장하고, 상기 내부버퍼에 상기 플래시 메모리의 물리적 연산단위의 n 배(n은 자연수)에 해당되는 저장용량만큼의 데이터가 적어도 저장되었는지 여부 및 상기 연산대상데이터에 대응되는 논리섹터오프셋의 순차적 입력여부에 따라, 상기 내부버퍼에 저장된 데이터 또는 입력되는 연산대상 데이터의 상기 플래시 메모리의 해당블록에의 데이터 연산을 수행할 수 있다.The operation control unit preferentially stores the input calculation target data in the internal buffer, and stores at least as much data as the storage capacity corresponding to n times (n is a natural number) of the physical operation unit of the flash memory in the internal buffer. According to whether or not and the logical sector offset corresponding to the operation target data is sequentially input, data stored in the internal buffer or input operation data can be performed on the corresponding block of the flash memory.

상기 연산제어부는, 상기 플래시 메모리의 블록이 상기 제1타입블록상태를 유지하거나 상기 제1타입블록상태를 유지할 것으로 예상되는 경우 및 상기 제2타입 블록상태를 계속적으로 유지하거나 상기 제2타입블록상태를 유지할 것으로 예상되 는 경우에는, 상기 내부버퍼에 상기 플래시 메모리의 물리적 연산단위의 n 배(n은 자연수)에 해당되는 저장용량만큼의 데이터가 적어도 저장된 경우 또는 물리페이지오프셋값이 변동되는 경우에, 상기 내부버퍼에 저장된 데이터 또는 입력되는 연상대상 데이터의 상기 플래시 메모리의 해당블록에의 데이터 연산을 수행하며, 상기 플래시 메모리의 블록이 상기 제1타입 블록상태에서 상기 제2타입 블록상태로 바뀌거나 바뀔 것으로 예상되는 연산대상 데이터 입력의 경우에는, 상기 연산대상 데이터 입력시점에 상기 입력되는 연상대상 데이터 또는 상기 내부버퍼에 저장된 데이터의 상기 플래시 메모리의 해당블록에의 데이터 연산을 수행할 수 있다.The operation controller may be configured to continuously maintain the second type block state or the second type block state when the block of the flash memory is expected to maintain the first type block state or the first type block state. In the case where it is expected to maintain the data, the internal buffer stores at least as much data as the storage capacity corresponding to n times the physical operation unit of the flash memory (n is a natural number) or when the physical page offset value changes. Perform a data operation on the corresponding block of the flash memory of data stored in the internal buffer or input association data, wherein the block of the flash memory is changed from the first type block state to the second type block state; In the case of inputting the calculation target data that is expected to change, at the time of inputting the calculation target data A data operation of the input association data or data stored in the internal buffer may be performed on a corresponding block of the flash memory.

상기 플래시 메모리의 논리적 연산단위는 섹터이며, 물리적 연산단위는 페이지일 수 있다.The logical operation unit of the flash memory may be a sector, and the physical operation unit may be a page.

상기 플래시 메모리의 블록상태정보는 상기 플래시 메모리에 대한 정보를 저장하는 메타(meta) 블록에 저장되거나 각 블록에 저장될 수 있다.The block state information of the flash memory may be stored in a meta block that stores information about the flash memory, or may be stored in each block.

상기한 기술적 과제들의 일부를 달성하기 위한 본 발명의 다른 구체화에 따라, 본 발명에 따른 플래시 메모리의 데이터 연산방법은, 연산을 원하는 연산대상 데이터를 소정의 저장용량을 가지는 내부버퍼에 우선적으로 저장하고, 상기 내부버퍼에 상기 플래시 메모리의 물리적 연산단위의 n 배(n은 자연수)에 해당되는 저장용량만큼의 데이터가 적어도 저장되거나 물리페이지오프셋값의 변동여부에 따라, 상기 내부버퍼에 저장된 데이터 또는 입력되는 연산대상 데이터의 상기 플래시 메모리에의 데이터 연산수행 여부를 결정하는 것을 특징으로 한다.According to another embodiment of the present invention for achieving some of the above technical problem, the data operation method of the flash memory according to the present invention, preferentially stores the target data to be calculated in an internal buffer having a predetermined storage capacity Data stored in the internal buffer or stored in the internal buffer according to whether or not data corresponding to a storage capacity corresponding to n times (n is a natural number) of the physical operation unit of the flash memory is stored or the physical page offset value is changed. And determining whether to perform a data operation on the flash memory.

상기 플래시 메모리는 논리적 연산단위보다 물리적 연산단위의 용량이 더 큰 대블록(large block) 플래시 메모리일 수 있다. The flash memory may be a large block flash memory having a larger capacity of a physical operation unit than a logical operation unit.

상기 내부버퍼는 상기 플래시 메모리의 물리적 연산단위의 저장용량의 n 배(n은 자연수)에 해당되는 저장용량을 가질 수 있다.The internal buffer may have a storage capacity corresponding to n times (n is a natural number) of the storage capacity of the physical operation unit of the flash memory.

상기한 기술적 과제들의 일부를 달성하기 위한 본 발명의 또 다른 구체화에 따라, 본 발명에 따른 플래시 메모리의 데이터 연산방법은, 논리섹터번호 및 연산대상 데이터가 입력되는 단계와; 상기 플래시 메모리의 물리적 연산단위의 저장용량의 n 배(n은 자연수)에 해당되는 저장용량을 가지는 내부버퍼에 상기 연산 대상 데이터를 일정순서로 저장하는 단계와; 상기 플래시 메모리의 블록들을, 저장된 모든 데이터가 페이지오프셋 및 섹터오프셋이 일치하는 제1타입블록 또는 저장된 데이터 중 페이지오프셋 및 섹터오프셋이 일치하지 않는 데이터를 적어도 하나 포함하는 제2타입블록으로 구분하고, 상기 내부버퍼에 저장된 데이터 또는 입력되는 연산대상 데이터의 상기 플래시 메모리에의 데이터 연산을 수행하되, 상기 논리섹터번호를 통해 계산되어진 논리섹터오프셋들의 입력이 순차적이면 상기 제1타입블록 상태를 유지하도록 데이터 연산을 수행하고, 상기 논리섹터오프셋들의 입력이 순차적이지 않으면 상기 제2타입블록상태로 전이되도록 데이터 연산을 수행하는 단계를 구비한다.According to still another embodiment of the present invention for achieving some of the above technical problems, a data operation method of a flash memory according to the present invention includes the steps of inputting a logical sector number and the calculation target data; Storing the operation target data in a predetermined order in an internal buffer having a storage capacity corresponding to n times (n is a natural number) of the storage capacity of the physical operation unit of the flash memory; The blocks of the flash memory may be divided into a first type block in which all stored data coincide with a page offset and a sector offset, or a second type block including at least one of data stored in which the page offset and sector offset do not match. Perform data operation on the flash memory of data stored in the internal buffer or input target data, and maintain the first type block state when input of logical sector offsets calculated through the logical sector number is sequential; Performing an operation and performing a data operation to transition to the second type block state if the input of the logical sector offsets is not sequential.

상기 플래시 메모리는 논리적 연산단위보다 물리적 연산단위의 용량이 더 큰 대블록(large block) 플래시 메모리일 수 있다. The flash memory may be a large block flash memory having a larger capacity of a physical operation unit than a logical operation unit.

상기 플래시 메모리에의 데이터 연산은, 상기 내부버퍼에 상기 플래시 메모리의 물리적 연산단위의 n 배(n은 자연수)에 해당되는 저장용량만큼의 데이터가 적 어도 저장된 경우나 물리페이지오프셋값이 변동되는 경우에 물리적 연산단위로 수행될 수 있다.The data operation to the flash memory is stored in the internal buffer at least as much as the storage capacity corresponding to n times (n is a natural number) of the physical operation unit of the flash memory or when the physical page offset value is changed. It can be performed in units of physical operations.

상기 플래시 메모리의 논리적 연산단위는 섹터이며, 물리적 연산단위는 페이지일 수 있다. The logical operation unit of the flash memory may be a sector, and the physical operation unit may be a page.

상기 데이터 연산은 데이터 쓰기연산일 수 있다.The data operation may be a data write operation.

상기한 기술적 과제들의 일부를 달성하기 위한 본 발명의 또 다른 구체화에 따라, 본 발명에 따른 플래시 메모리의 데이터 읽기 연산방법은, 저장된 모든 데이터가 페이지오프셋 및 섹터오프셋이 일치하는 제1타입블록 또는 저장된 데이터 중 페이지오프셋 및 섹터오프셋이 일치하지 않는 데이터를 적어도 하나 포함하는 제2타입블록으로 블록상태가 구분되는 상기 플래시 메모리의 연산대상 블록의 블록상태정보를 파악하는 단계와; 상기 플래시 메모리의 블록이 상기 제1타입블록인 경우에는 페이지오프셋 및 섹터오프셋의 위치의 데이터를 읽기 연산하고, 상기 제2타입블록인 경우에는 상기 플래시 메모리의 블록 내의 여분영역에 저장된 연산정보를 역으로 스캔해서 가장 최근에 저장된 데이터에 대한 읽기 연산을 수행하는 단계를 구비한다.According to another embodiment of the present invention for achieving some of the above technical problems, the data read operation method of the flash memory according to the present invention, all stored data is the first type block or page offset and sector offset match or stored Identifying block state information of an operation target block of the flash memory in which the block state is divided into a second type block including at least one of data whose page offset and sector offset do not coincide; If the block of the flash memory is the first type block, the data of page offset and sector offset are read and operated. If the block of the second type block is the second type block, the operation information stored in the spare area of the block of the flash memory is reversed. Scanning to perform a read operation on the most recently stored data.

상기한 기술적 과제들의 일부를 달성하기 위한 본 발명의 또 다른 구체화에 따라, 본 발명에 따른 플래시메모리의 매핑제어방법은, 데이터 연산을 위해 논리섹터번호가 입력되는 단계와; 상기 논리섹터번호를 lsn, 논리블록번호를 lbn, 논리페이지오프셋을 lpo, 논리섹터오프셋을 lso, 단위블록당 페이지수를 np, 단위페이지당 섹터수를 ns라 정의할 때, 하기식 lbn=lsn/(np*ns), tmp=lsn%(np*ns), lpo=tmp/ns, lso=tmp%ns 에 의해 상기 논리블록번호, 상기 논리페이지 오프셋, 및 상기 논리섹터오프셋 값을 구하는 단계와; 미리 정의된 매핑테이블에 따라, 상기 논리블록번호에 대응되는 물리블록을 검색하는 단계와; 상기 논리페이지오프셋 및 상기 논리섹터오프셋과 일치되는 물리페이지오프셋 및 물리섹터오프셋의 위치에 데이터 연산을 위한 매핑을 원칙적으로 수행하되, 상기 논리페이지 오프셋 및 상기 논리섹터오프셋과 일치되는 물리페이지오프셋 및 물리섹터오프셋의 위치에 이미 데이터가 저장되어 있는 경우에는 인접위치 또는 임의의 위치에 데이터 연산을 위한 매핑을 수행하는 단계를 구비한다.According to another embodiment of the present invention for achieving some of the above technical problems, a mapping control method of a flash memory according to the present invention includes the steps of inputting a logical sector number for data operation; When the logical sector number is lsn, the logical block number is lbn, the logical page offset is lpo, the logical sector offset is lso, the number of pages per unit block is np, and the number of sectors per unit page is ns. obtaining the logical block number, the logical page offset, and the logical sector offset value by / (np * ns), tmp = lsn% (np * ns), lpo = tmp / ns, and lso = tmp% ns; ; Retrieving a physical block corresponding to the logical block number according to a predefined mapping table; In principle, data mapping is performed at a position of a physical page offset and a physical sector offset coinciding with the logical page offset and the logical sector offset, but the physical page offset and the physical page offset coincide with the logical page offset and the logical sector offset. If data is already stored at the position of the sector offset, performing the mapping for the data operation to the adjacent position or any position.

상기 플래시 메모리는 복수의 블록들을 구비하고, 상기 복수의 블록들 각각은 복수의 페이지들을 구비하며, 상기 복수의 페이지들 각각은 복수의 섹터들을 구비하는 구조를 가지며, 논리적 연산단위인 상기 섹터보다 물리적 연산단위인 상기 페이지의 용량이 더 큰 대블록(large block) 플래시 메모리일 수 있다. The flash memory has a plurality of blocks, each of the plurality of blocks includes a plurality of pages, each of the plurality of pages has a structure having a plurality of sectors, and is physically larger than the sector, which is a logical operation unit. It may be a large block flash memory having a larger capacity of the page, which is an operation unit.

본 발명에 따르면, 대블록 플래시 메모리에서의 효율적인 매핑 및 데이터 연산이 가능해진다. 즉 대블록 플래시 메모리에 최적화된 데이터 쓰기 및 읽기 연산이 가능해지는 효과가 있다.According to the present invention, efficient mapping and data operations in large block flash memories are possible. That is, data write and read operations optimized for large block flash memory can be performed.

이하에서는 본 발명의 바람직한 실시예가, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 본 발명의 철저한 이해를 제공할 의도 외에는 다른 의도 없이, 첨부한 도면들을 참조로 하여 상세히 설명될 것이다. DESCRIPTION OF THE PREFERRED EMBODIMENTS Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings without any intention other than to provide a thorough understanding of the present invention to those skilled in the art.

구체적인 본 발명의 설명에 앞서서, 소블록 플래시 메모리와 달리 대블록 플래시 메모리의 경우에는 그 구조상 논리섹터번호(lsn)의 입력을 토대로 하여, 논리블록번호(lbn), 논리페이지오프셋(lpo), 및 논리섹터오프셋(lso) 값을 구할 수 있어야 한다. Prior to the detailed description of the present invention, unlike a small block flash memory, in the case of a large block flash memory, a logical block number lbn, a logical page offset lpo, and The logical sector offset (lso) value should be available.

상기 논리 섹터 번호 (lsn)가 주어지면 논리 블록 번호 (lbn), 논리 페이지 오프셋 (lpo), 및 논리 섹터 오프셋 (lso)은 다음의 식들에 의해 계산된다. Given the logical sector number lsn, the logical block number lbn, logical page offset lpo, and logical sector offset lso are calculated by the following equations.

(1) lbn = lsn/(np*ns), (1) lbn = lsn / (np * ns),

(2) tmp = lsn%(np*ns), (2) tmp = lsn% (np * ns),

(3) lpo = tmp/ns,(3) lpo = tmp / ns,

(4) lso = tmp%ns (4) lso = tmp% ns

여기서, 'np'는 블록 당 페이지 수이고, 'ns'는 페이지당 섹터 수이다. 그리고 (1) 및 (2)의 식에서 나눗셈(/)의 몫을 취한 값으로 논리블록번호(lbn) 및 논리페이지오프셋(lpo)이 정해지며, '%'는 나눗셈의 나머지를 목적값으로 하고자 하는 연산자이다. Where 'np' is the number of pages per block and 'ns' is the number of sectors per page. The logical block number (lbn) and the logical page offset (lpo) are determined by taking the quotient of division (/) in the expressions (1) and (2), and '%' is the target value for the remainder of the division. Operator.

만약, 128MB의 대블록 플래시 메모리가 1024 블록으로 구성되고, 각 블록은 64 페이지, 각 페이지는 4 섹터로 이루어지는 구조를 가지는 경우에, 상기 수학식 을 적용해보면, 입력 논리 섹터 번호가 101일 때 논리블록번호(lbn)는 0, 논리페이지오프셋(lpo)은 25, 그리고 논리섹터오프셋(lso)은 1이 될 것이다.If a 128 MB large block flash memory is composed of 1024 blocks, each block has 64 pages, and each page has 4 sectors, the above equation applies to the logic when the input logical sector number is 101. The block number lbn will be 0, the logical page offset lpo will be 25, and the logical sector offset lso will be 1.

이하에서는 별도의 구분이 필요하여 소블록 플래시 메모리와 대블록 플래시 메모리를 나누어 설명하거나, 소블록 플래시 메모리라고 특별히 지칭하지 않는 한, 일반적으로 플래시 메모리라 함은 대블록 플래시 메모리를 의미하는 것으로 인식되어야 할 것이다, Hereinafter, unless a separate division is necessary, the small block flash memory and the large block flash memory are described separately or unless specifically referred to as the small block flash memory, generally, the flash memory should be recognized as meaning the large block flash memory. something to do,

도 4는 본 발명의 일 실시예에 따른 대블록 플래시 메모리의 데이터 연산 및 매핑방법의 예를 설명하기 위한 도면이다. 도 4는 대블록 플래시 메모리를 도 1의 플래시 메모리 시스템을 적용하는 경우를 가정한 것이다.4 is a diagram illustrating an example of a data operation and mapping method of a large block flash memory according to an exemplary embodiment of the present invention. FIG. 4 assumes a case where the large block flash memory is applied to the flash memory system of FIG. 1.

도 4(a)는 파일시스템으로부터 논리 섹터 어드레스에 대한 쓰기 연산 요청에 대한 시퀀스를 나타낸 것이고, 도 4(b)은 매핑테이블을 나타낸 것이고, 도 4(c)은 대블록 플래시 메모리의 블록구조를 나타낸 것이다. 여기서 이해의 편의 및 설명의 편의를 위해 상기 대블록 플래시 메모리는 한 블록이 3개의 페이지로 구성되고, 하나의 페이지는 4개의 섹터들로 구성되는 것으로 가정한다. 이에 따라 물리블록은 3행의 페이지와 4열의 섹터들을 가지는 매트릭스 구조로 표현될 수 있다.FIG. 4 (a) shows a sequence for a write operation request for a logical sector address from a file system, FIG. 4 (b) shows a mapping table, and FIG. 4 (c) shows a block structure of a large block flash memory. It is shown. For convenience of explanation and explanation, it is assumed that the large block flash memory has three pages and one page is composed of four sectors. Accordingly, the physical block can be represented by a matrix structure having three rows of pages and four columns of sectors.

도 4(c)에서 섹터영역(Sector area)의 3행 중 제1행은 물리페이지오프셋(lpo)=0, 제2행은 물리페이지 오프셋(lpo)=1, 제3행은 물리페이지 오프셋(lpo)=2를 나타내며, 상기 섹터영역(Sector area)의 4열 중 제1열은 물리 섹터오프셋(lso)=0, 제2열은 물리 섹터오프셋(lso)=1, 제3열은 물리 섹터오프셋(lso)=2, 제4열은 물리 섹터오프셋(lso)=1을 나타낼 수 있다. In FIG. 4C, the first row of the three rows of the sector area has a physical page offset lpo = 0, the second row has a physical page offset lpo = 1, and the third row has a physical page offset ( lpo) = 2, wherein the first column of the four columns of the sector area is the physical sector offset lso = 0, the second column is the physical sector offset lso = 1, and the third column is the physical sector The offset lso = 2 and the fourth column may indicate the physical sector offset lso = 1.

우선 도 4(a)에서 첫 번째 쓰기 연산 요청 'write(4, D4)'에 대하여 입력논리 섹터 번호 4 및 수학식 (1)-(4)에 의해 논리블록번호(lbn)=0, 논리페이지오프셋(lpo)=1, 및 논리섹터오프셋(lso)=0 이 계산된다. First, in FIG. 4 (a), for the first write operation request 'write (4, D 4 )', logical block number (lbn) = 0, logic by input logic sector number 4 and equations (1)-(4) The page offset lpo = 1 and the logical sector offset lso = 0 are calculated.

도 4(B)의 매핑 테이블에서 논리블록번호(lbn)=0 은 물리블록번호(pbn)=5에 매핑되므로 도 4(c)의 플래시 메모리의 물리블록번호(pbn)=5의 물리페이지오프셋(ppo)=1 및 물리섹터오프셋(pso)=0의 위치에 데이터 D4가 써지게 된다. In the mapping table of FIG. 4B, the logical block number lbn = 0 is mapped to the physical block number pbn = 5, so the physical page offset of the physical block number pbn = 5 of the flash memory of FIG. Data D 4 is written at positions (ppo) = 1 and physical sector offset (pso) = 0.

이와 같은 원리에 따라 논리섹터번호 5,6,7,8,9에 대응되는 데이터 D5,D6,D7,D8,D9에 대한 데이터 쓰기 연산이 수행되게 된다. 이에 따라, 플래시 메모리의 물리블록번호(pbn) 5의 물리페이지오프셋(lpo) 1 및 물리섹터오프셋(lso) 1의 위치에는 데이터 D5, 물리페이지오프셋(lpo) 1 및 물리섹터오프셋(lso) 2의 위치에는 데이터 D6, 물리페이지오프셋(lpo) 1 및 물리섹터오프셋(lso) 3의 위치에는 데이터 D7이 써지게 되고, 물리블록번호(pbn) 5의 물리페이지오프셋(lpo) 2 및 물리섹터오프셋(lso) 0의 위치에는 데이터 D8, 물리페이지오프셋(lpo) 2 및 물리섹터오프셋(lso) 1의 위치에는 데이터 D9가 쓰이게 된다.According to this principle, data write operations are performed on data D 5 , D 6 , D 7 , D 8 , and D 9 corresponding to logical sector numbers 5 , 6 , 7 , 8 , and 9 . Accordingly, data D 5 , physical page offset lpo 1, and physical sector offset lso are located at positions of physical page offset lpo 1 and physical sector offset lso 1 of physical block number pbn 5 of the flash memory. at the 2-position, the data D 6, the physical page offset (lpo) 1 and physical position 3 sector offset (lso), the data D 7 becomes spent, the physical block number (pbn) physical page offset (lpo) of 52, and Data D 8 is written at the physical sector offset lso 0 and data D 9 is written at the physical page offset lpo 2 and the physical sector offset lso 1.

도 4(a)에서 동일한 논리섹터번호(8,9)를 갖는 쓰기연산요청 중 두 번째 쓰기 연산요청 write(8, D8)의 경우에는 논리블록번호(lbn)=0, 논리페이지오프셋(lpo)=2, 논리섹터오프셋(lso)=0이 되어 물리블록번호(pbn)=5, 물리페이지오프 셋(ppo)=2, 물리섹터오프셋(pso)=0의 위치가 제 위치(논리 및 물리 오프셋이 일치하는 위치)이다. 그러나 이 위치에는 이미 데이터가 써져 있으므로 물리블록번호(pbn)=5, 물리페이지오프셋(ppo)=2, 물리섹터오프셋(pso)=2의 위치에 데이터 D8을 쓰기연산하고, 이에 대한 연산정보로써 논리섹터번호(lsn)=8을 대응되는 여분영역(Spare area)에 저장한다. 상기 여분영역에 저장된 연산정보는 나중에 읽기 연산 등에서 어떤 데이터가 논리섹터번호 8에 대한 최신 데이터인지 여부를 알아내기 위한 것이다. In the case of the second write operation request write (8, D 8 ) among the write operation requests having the same logical sector number (8, 9) in FIG. 4 (a), the logical block number (lbn) = 0 and the logical page offset (lpo). ) = 2, logical sector offset (lso) = 0, and physical block number (pbn) = 5, physical page offset (ppo) = 2, physical sector offset (pso) = 0 position (logical and physical Where the offset matches. However, since data has already been written to this position, data D 8 is written and operated at the positions of physical block number (pbn) = 5, physical page offset (ppo) = 2, and physical sector offset (pso) = 2, and the operation information for this is As a result, the logical sector number lsn = 8 is stored in the corresponding spare area. The operation information stored in the redundant area is used to find out which data is the latest data for logical sector number 8 in a read operation or the like later.

두 번째 쓰기 연산요청 write(9, D9)의 경우에도 상술한 원리에 따라, 물리블록번호(pbn)=5, 물리페이지오프셋(ppo)=2, 물리섹터오프셋(pso)=3의 위치에 데이터 D9를 쓰기연산하고, 이에 대한 연산정보로써 논리섹터번호(lsn)=9를 대응되는 여분 영역(Spare area)에 저장한다. In the case of the second write operation request write (9, D 9 ), the physical block number pbn = 5, the physical page offset ppo = 2, and the physical sector offset pso = 3 according to the above-described principle. The data D 9 is written and operated, and the logical sector number lsn = 9 is stored in the corresponding spare area as operation information thereof.

상술한 바와 같은 원리는, 더 많은 블록당 페이지수, 및 더 많은 페이지당 섹터수를 같은 대블록 플래시메모리의 데이터 연산을 위해 적용될 수 있다. 그러나 대블록 플래시 메모리의 특성을 잘 이용하는 알고리즘은 아니다. 도 4를 통하여 설명된 바와 같이, 8번의 쓰기연산 요청에 의해 8번의 플래시 메모리 쓰기 연산을 필요로 하기 때문이다. 대블록 플래시 메모리는 페이지 단위로 쓰기 연산이 가능하기 때문에 페이지당 섹터수가 4개인 경우, 4개의 섹터에 대하여 한 번의 쓰기 연산이 가능하기 때문에 도 4의 예의 경우 두 번의 쓰기 연산으로 데이터가 저장될 수 있기 때문이다. 이는 이하에서 설명될 본 발명의 다른 실시예를 통해 구현된 플래시 메모리 시스템을 통해 가능할 수 있다.The principle as described above can be applied for data operations of a large block flash memory with more pages per block and more sectors per page. However, it is not an algorithm that takes advantage of the characteristics of large block flash memory. This is because eight flash memory write operations are required by eight write operation requests, as described with reference to FIG. 4. Since large block flash memory can perform write operations in units of pages, when four sectors per page are possible, one write operation can be performed for four sectors. Thus, in the example of FIG. 4, data can be stored in two write operations. Because there is. This may be possible through a flash memory system implemented through another embodiment of the present invention described below.

도 5는 본 발명의 다른 실시예에 따른 플래시메모리 시스템의 블록도를 개략적으로 나타낸 것이다.5 is a schematic block diagram of a flash memory system according to another exemplary embodiment of the present invention.

도 5에 도시된 바와 같이, 본 발명의 다른 실시예에 따른 플래시 메모리 시스템(100)은, 연산제어부(120), 내부버퍼(130), 및 플래시 메모리(140)를 구비한다.As shown in FIG. 5, the flash memory system 100 according to another embodiment of the present invention includes an operation controller 120, an internal buffer 130, and a flash memory 140.

상기 플래시 메모리(140)는, 이미 설명한 바 있는 대블록 플래시 메모리 구조를 가진다. 즉 논리적 연산 단위(섹터)에 비하여 물리적 연산 단위(페이지)가 큰 특징을 가진다. 여기서, 논리적 연산 단위와 물리적 연산 단위는 섹터 및 페이지에 국한되지 않고 플래시 메모리가 사용되는 장치에 따라 다양한 크기로 이루어질 수 있다.The flash memory 140 has a large block flash memory structure as described above. That is, the physical operation unit (page) has a larger feature than the logical operation unit (sector). Here, the logical operation unit and the physical operation unit are not limited to sectors and pages but may have various sizes according to the device in which the flash memory is used.

상기 플래시 메모리(140)의 블록상태는 제1타입블록(M블록)상태 및 제2타입블록(N블록) 상태로 구분될 수 있다. 이는 후술한다.The block state of the flash memory 140 may be divided into a first type block (M block) state and a second type block (N block) state. This will be described later.

상기 내부버퍼(130)는 일정저장용량을 가지며, 상기 플래시 메모리(140)에 대한 데이터 연산을 위해 데이터가 임시로 저장되기 위해 구비된다. 상기 내부버퍼(130)는 물리적 연산 단위로 연산을 수행하기 위해 구비된다. 즉 내부 버퍼를 구비하여 섹터에 대한 쓰기 연산을 모아두었다가 한꺼번에 쓰기 연산을 수행하기 위한 것이다. 예를 들어, 도 4의 예에서 두 번 또는 그 이하의 쓰기 연산으로 데이터가 저장될 수 있도록 하기 위해 구비될 수 있다. The internal buffer 130 has a predetermined storage capacity, and is provided to temporarily store data for data operation on the flash memory 140. The internal buffer 130 is provided to perform an operation in a physical operation unit. That is, an internal buffer is provided to collect write operations for sectors and to perform write operations at once. For example, in the example of FIG. 4, it may be provided to allow data to be stored in two or less write operations.

상기 내부버퍼(130)의 저장용량은 상기 플래시 메모리(140)의 논리적 연산단 위의 n배(n은 자연수)의 크기를 가질 수 있다. 예를 들어, 도 4에서와 같이, 플래시 메모리의 물리적 연산단위인 페이지가 4개의 섹터를 가지는 구조이고, 하나의 섹터의 크기가 512B인 경우에, 상기 내부버퍼(130)는 2KB의 n 배 크기를 가질 수 있다.The storage capacity of the internal buffer 130 may have a size of n times (n is a natural number) of the logical operation unit of the flash memory 140. For example, as shown in FIG. 4, when a page, which is a physical operation unit of a flash memory, has four sectors and one sector has a size of 512B, the internal buffer 130 is n times larger than 2KB. It can have

상기 연산제어부(120)는, 연산을 원하는 데이터를 우선적으로 상기 내부버퍼에 저장하고, 상기 플래시 메모리(140)의 블록상태정보 및 상기 내부버퍼(130)의 데이터 저장 상태에 따라, 상기 내부버퍼(130)에 저장된 데이터의 상기 플래시 메모리의 해당 블록에 대한 데이터 연산을 결정하고 제어한다.The operation control unit 120 preferentially stores data desired for operation in the internal buffer, and according to the block state information of the flash memory 140 and the data storage state of the internal buffer 130, the internal buffer ( The data operation for the corresponding block of the flash memory of the data stored in 130 is determined and controlled.

상기 연산제어부(120)는 도 1에서 설명한 바 있는 플래시 메모리 시스템의 파일시스템 및 플래시 변환계층을 포함하는 개념일 수 있다. 이때 상기 플래시 변환계층의 알고리즘은 서로 다를 것이다.The operation controller 120 may be a concept including a file system and a flash conversion layer of the flash memory system described with reference to FIG. 1. At this time, the algorithm of the flash conversion layer will be different.

이미 설명한 바와 같이, 상기 파일 시스템은 플래시 메모리에 저장되어 있는 데이터를 읽거나 플래시 메모리에 데이터를 저장하기 위하여 논리 섹터 어드레스에 대한 읽기 또는 쓰기 연산 요청을 연속적으로 하게 되며, 상기 플래시 변환계층의 알고리즘에 의하여 이러한 논리 섹터 어드레스는 실제 플래시 메모리의 물리 섹터 어드레스로 변경하게 된다. As described above, the file system continuously executes a read or write operation request for a logical sector address in order to read data stored in the flash memory or store data in the flash memory, and to the algorithm of the flash translation layer. This logical sector address is changed to the physical sector address of the actual flash memory.

또한 상기 플래시 변환계층은, 플래시 메모리(140)에 대한 데이터 연산 동작시, 파일 시스템이 생성한 논리어드레스를 삭제 연산이 수행된 플래시 메모리(140)의 물리 어드레스로 매핑시켜 주는 역할을 수행한다. 상기 플래시 변환계층은 호스트 시스템으로부터 독립된 하드웨어 형태로 구현될 수도 있고, 호스트 시스템 내부 의 디바이스 드라이버 형태로 구현될 수도 있다.In addition, the flash translation layer performs a function of mapping a logical address generated by a file system to a physical address of the flash memory 140 in which an erase operation is performed during a data operation operation on the flash memory 140. The flash conversion layer may be implemented in the form of hardware independent from the host system, or may be implemented in the form of a device driver inside the host system.

상기 연산제어부(120)는 상기 플래시 메모리(140)의 블록상태정보 및 상기 내부버퍼(130)의 저장 상태를 기준으로 데이터 연산을 수행한다. The operation controller 120 performs a data operation based on the block state information of the flash memory 140 and the storage state of the internal buffer 130.

여기서 상기 내부버퍼(130)의 데이터 저장상태 만을 기준으로 하는 경우에, 상기 연산제어부(120)는 상기 내부버퍼(130)에 연산대상 데이터가 우선적으로 저장되도록 한다. 그리고 상기 내부버퍼(130)에 상기 플래시 메모리(140)의 물리적 연산단위의 n 배(n은 자연수)에 해당되는 저장용량만큼의 데이터가 적어도 저장된 경우에, 상기 내부버퍼(130)에 저장된 데이터의 상기 플래시 메모리(140)에 대한 데이터 연산을 수행하도록 제어한다. 이때 데이터 연산은 상기 플래시 메모리(140)의 물리적 연산단위로 수행될 수 있다.In this case, when only the data storage state of the internal buffer 130 is used as a reference, the operation control unit 120 allows the calculation target data to be preferentially stored in the internal buffer 130. When at least as much data as the storage capacity corresponding to n times (n is a natural number) of the physical operation unit of the flash memory 140 is stored in the internal buffer 130, the data stored in the internal buffer 130 is stored. Control to perform a data operation on the flash memory 140. In this case, the data operation may be performed by a physical operation unit of the flash memory 140.

상기 플래시 메모리(140)의 블록상태정보 및 상기 내부버퍼(130)의 저장 상태에 따라 데이터 연산을 수행하는 경우를 포함하여 상기 연산제어부(120)의 구성 및 동작은 도 6 내지 도 8의 매핑 및 데이터 연산의 예를 통해 자세하게 설명될 것이다. The configuration and operation of the operation controller 120, including the case of performing data operation according to the block state information of the flash memory 140 and the storage state of the internal buffer 130, are described in FIGS. 6 to 8. An example of data operation will be described in detail.

이해의 편의상 상기 플래시 메모리(140)는 도 4에서와 동일한 구조를 가지는 것으로 가정한다. 그러나 본 발명의 실시예들이 도 4에서 설명한 플래시 메모리의 구조와 다른 구조를 갖는 대블록 플래시 메모리에도 적용됨은 당연한 것이다. For ease of understanding, it is assumed that the flash memory 140 has the same structure as in FIG. 4. However, it is a matter of course that the embodiments of the present invention also apply to a large block flash memory having a structure different from that of the flash memory described with reference to FIG. 4.

그리고 상기 내부버퍼(130)가 상기 플래시 메모리(140)의 물리적 연산단위와 동일한 저장용량을 가지는 것으로 가정한다. 이 경우 상기 내부버퍼(130)는 상기 플래시 메모리(140)의 페이지의 크기와 동일하게 된다. 그러나 상기 내부버퍼(130) 가 상기 플래시 메모리(140)의 논리적 연산단위의 2배 이상의 저장용량을 가지는 경우에도 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 용이하게 그 구성 및 동작의 구현이 가능함은 명백하다.In addition, it is assumed that the internal buffer 130 has the same storage capacity as the physical operation unit of the flash memory 140. In this case, the internal buffer 130 is equal to the size of the page of the flash memory 140. However, even when the internal buffer 130 has a storage capacity of more than twice the logical operation unit of the flash memory 140, the configuration and operation of the internal buffer 130 can be easily understood by those skilled in the art. It is obvious that implementation is possible.

도 6은 도 5의 연산제어부(120)에 적용되는 상태기계(state machine)를 나타낸 것이다.FIG. 6 illustrates a state machine applied to the operation control unit 120 of FIG. 5.

우선적으로, 플래시 메모리의 블록을 제1타입블록(이하 'M블록' 이라함)과 제2타입블록(이하 'N블록'이라함)의 구분하여 블록상태정보를 정의한다. First, block state information is defined by dividing a block of a flash memory into a first type block (hereinafter referred to as 'M block') and a second type block (hereinafter referred to as 'N block').

상기 M 블록은 그 블록내의 모든 논리페이지 오프셋(lpo) 및 논리섹터오프셋(lso)과 물리페이지오프셋(ppo) 및 논리섹터오프셋(pso)이 동일한 블록을 의미할 수 있다. 이 경우, M 블록에 써진 모든 데이터는 제 위치(in-place)에 써져 있다는 의미로도 해석될 수 있다. 추가적으로, 플래시 메모리의 내의 블록이 M블록상태를 유지할 것으로 예상되는 경우에도 M블록으로 정의될 수 있다. 예를 들어 블록 내에 저장된 데이터가 전혀 없는 경우에는 연산요청에 의해 데이터가 입력되는 경우, M블록 상태를 유지할 것으로 예상되기 때문에 M블록이라 구분할 수 있는 것이다.The M block may mean a block having the same logical page offset lpo, logical sector offset lso, physical page offset ppo, and logical sector offset pso in the block. In this case, all data written in the M block may be interpreted as meaning that they are written in-place. Additionally, even if a block in the flash memory is expected to maintain an M block state, it may be defined as an M block. For example, if there is no data stored in the block at all, when the data is input by the operation request, it can be classified as M block because it is expected to maintain the M block state.

상기 N 블록은 그 블록 안에 저장된 적어도 하나의 데이터가 제 위치와 다른 위치(out-of-place)에 써져 있는 블록을 의미할 수 있다. 즉 블록 내에 저장된 데이터 중 적어도 하나는 논리페이지 오프셋(lpo) 및 논리섹터오프셋(lso)과 물리페이지오프셋(ppo) 및 논리섹터오프셋(pso)이 동일하지 않은 위치에 저장되어 있는 경우이다. 추가적으로, 플래시 메모리의 내의 블록이 N블록상태를 유지할 것으로 확실히 예상되는 경우에도 N블록으로 정의될 수 있다.The N block may mean a block in which at least one data stored in the block is written out-of-place. That is, at least one of the data stored in the block is a case where the logical page offset lpo, the logical sector offset lso, the physical page offset ppo, and the logical sector offset pso are stored at different positions. In addition, it can be defined as N block even if a block in the flash memory is surely expected to maintain the N block state.

예를 들어, 블록이 M 블록 상태를 유지하는 상태에서, 쓰기 연산요청에 의해 저장될 것으로 예상되는 데이터가 내부버퍼에만 저장되어 있고 플래시 메모리의 블록에는 저장되어 있지 않으나 다른 위치(out-of-place)에 저장될 것으로 확실히 예상되는 경우 즉 N블록상태로 바뀔 것으로 확실히 예상되는 경우에는 N블록이라 구분할 수 있는 것이다. 그러나 이 경우는 엄격하게 블록에 저장된 데이터를 기준으로 하는 경우 M블록으로 구분될 여지도 있다. For example, while the block remains in the M block state, the data that is expected to be stored by the write operation request is stored only in the internal buffer and not in the block of flash memory, but is out-of-place. If it is definitely expected to be stored in N), that is, if it is expected to be changed to N block state, it can be classified as N block. However, this case may be divided into M blocks when strictly based on data stored in a block.

도 4의 예에서, 물리블록번호(pbn)=5 의 블록은 동일한 논리섹터번호(8,9)를 갖는 쓰기연산요청 중 두 번째 쓰기 연산요청 'write(8, D8), write(9, D9)'에 의해 연산이 수행된 데이터가 제 위치(in-place)와 다른 위치(out-of-place)에 써져 있기 때문에 N 블록으로 구분될 수 있다. 즉 도 4의 예에서는 앞의 6번의 쓰기 연산은 제 위치에 써져 있고 마지막 2번의 연산은 논리 섹터오프셋(lso)과 물리섹터오프셋(pso)이 다르기 때문에 제 위치와 다른 위치에(out-of-place) 써져 있다. In the example of FIG. 4, a block having a physical block number pbn = 5 has a second write operation request 'write (8, D 8 ), write (9, of a write operation request having the same logical sector number (8, 9). D 9 ) 'can be divided into N blocks because the data on which the operation is performed is written in an in-place and out-of-place position. That is, in the example of FIG. 4, the previous six write operations are written in position, and the last two operations are out-of-position because the logical sector offset lso and the physical sector offset pso are different. place)

상기 M 블록 및 상기 N블록으로 구분되는 플래시 메모리의 블록상태는 상기 내부버퍼(130)의 데이터 저장 상태에 따라 좀 더 세분화되어 M0~M3, N0~N3 블록으로 구분될 수 있다.The block state of the flash memory divided into the M block and the N block may be further divided according to the data storage state of the internal buffer 130 to be divided into M 0 to M 3 and N 0 to N 3 blocks.

여기서 M0 블록은 상기 내부버퍼(130)에 저장된 데이터가 하나도 없는 M 블록이고, M1 블록은 내부 버퍼(130)에 한 개의 데이터가 저장되어 있는 M 블록을 의미한다. 그리고 M2블록은 내부 버퍼(130)에 2개의 데이터가 저장된 경우의 M 블록이 고, M3블록의 경우는 내부버퍼(130)에 3개의 데이터가 저장된 경우의 M 블록이다. 마찬가지로 N0블록은 내부 버퍼(130)에 저장된 데이터가 하나도 없는 N블록을 의미하고, N1블록은 내부버퍼(130)에 저장된 데이터가 하나, N2 블록은 두개, N3블록은 3개인 경우의 N블록을 의미할 수 있다. 여기서 하나의 데이터는 하나의 섹터크기에 해당하는 데이터를 의미할 수 있다. 즉 하나의 섹터에 저장되는 데이터를 하나의 데이터로 표현할 수 있다.Here, the M 0 block is an M block in which no data is stored in the internal buffer 130, and the M 1 block refers to an M block in which one data is stored in the internal buffer 130. And M 2 block is a block of M, if the two data could block M stored in the case and, in the case of M 3 is the block 3 of data to the buffer 130 is stored in the buffer 130. The Similarly, N 0 block means N block without any data stored in the internal buffer 130, and N 1 block has one data stored in the internal buffer 130, two N 2 blocks, and three N 3 blocks. May mean N blocks. Here, one data may mean data corresponding to one sector size. That is, data stored in one sector may be represented as one data.

상술한 블록상태의 세분화는 내부버퍼에 저장된 데이터의 개수를 기준으로 하고 있다. 그러나 다른 실시예에 따르면, 상기 내부버퍼에 저장된 데이터 수의 기준이 아닌 내부버퍼에 마지막으로 저장된 데이터의 논리 섹터오프셋(lso)을 기준으로 하여 상기 블록상태를 세분화 할 수 있다. The block state segmentation described above is based on the number of data stored in the internal buffer. However, according to another exemplary embodiment, the block state may be subdivided based on the logical sector offset lso of data last stored in the internal buffer, rather than the number of data stored in the internal buffer.

M블록의 경우를 예로 들면 다음과 같다. M1블록은 논리섹터 오프셋(lso)=0에 대응되는 데이터가 내부버퍼에 저장된 경우의 M블록이고, M2블록은 논리섹터 오프셋(lso)=1에 대응되는 데이터가 내부버퍼에 저장된 경우의 M블록이다. 또한. M3블록은 논리섹터 오프셋(lso)=2에 대응되는 데이터가 내부버퍼에 저장된 경우의 M블록이고, M0블록은 내부버퍼에 저장된 데이터가 없는 상태를 포함하여, 논리섹터 오프셋(lso)=3에 대응되는 데이터가 입력되어 플래시 메모리에 대응되는 위치에 모든 데이터가 쓰여진 후에 내부버퍼에 저장된 데이터가 없는 경우의 M블록이다. 상기 논리섹터 오프셋(lso)=3에 대응되는 데이터는 내부버퍼의 저장과정을 거치거나 저 장과정 없이 바로 상기 플래시 메모리의 대응위치에 쓰여질 수 있다. 또한 플래시 메모리에 대한 데이터 연산은 내부버퍼에 저장된 모든 데이터 및 입력되는 데이터 모두를 그 대상으로 할 수 있다. For example, the M block is as follows. M 1 block is an M block when data corresponding to the logical sector offset (lso) = 0 is stored in the internal buffer, and M 2 block is an M block when data corresponding to the logical sector offset (lso) = 0 is stored in the internal buffer. M block. Also. The M 3 block is an M block when data corresponding to logical sector offset (lso) = 2 is stored in the internal buffer, and the M 0 block includes a state in which there is no data stored in the internal buffer, so that the logical sector offset (lso) = This is an M block when there is no data stored in the internal buffer after data corresponding to 3 is input and all data is written to a position corresponding to the flash memory. The data corresponding to the logical sector offset (lso) = 3 may be written directly to the corresponding location of the flash memory through or without storing the internal buffer. In addition, the data operation on the flash memory may be targeted to all data stored in the internal buffer and input data.

상술한 블록의 세분화는 플래시 메모리의 페이지당 섹터수를 4개로 가정한 것에 기인한 것이다. 따라서, 상기 플래시 메모리의 페이지 당 섹터수가 4개가 아닌 다른 수를 가지는 경우에는 이에 대응하여 상기 M 블록 및 상기 N블록의 상태가 세분화 될 수 있음은 명백하다. 또한 상기 내부버퍼의 저장용량이 상기 플래시 메모리(140)의 물리적 연산단위와 동일하지 않은 저장용량을 가지는 경우에도, 이에 대응하여 상기 M 블록 및 상기 N블록의 상태가 세분화 될 수 있음은 명백하다. 이는 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 단순한 응용을 통하여 용이하게 해결될 수 있는 것이다. The block segmentation described above is due to assuming four sectors per page of the flash memory. Therefore, when the number of sectors per page of the flash memory has a number other than four, it is apparent that the states of the M block and the N block can be subdivided correspondingly. In addition, even if the storage capacity of the internal buffer has a storage capacity that is not the same as the physical operation unit of the flash memory 140, it is apparent that the state of the M block and the N block can be subdivided correspondingly. This can be easily solved through a simple application by those skilled in the art.

도 6의 상태기계는 M블록의 경우에는 내부버퍼에 마지막으로 저장된 데이터의 논리 섹터오프셋(lso)을 기준으로 하여 블록상태를 세분화하고 있으며, N블록의 경우에는 내부버퍼에 저장된 데이터의 수를 기준으로 하여 세분화 하고 있다. In the case of the M block, the state machine of FIG. 6 subdivides the block state based on the logical sector offset lso of the data last stored in the internal buffer. It is subdivided into.

이와 달리, M블록의 상태를 내부버퍼에 저장된 데이터의 수를 기준으로 세분화 할 수도 있고, N블록의 상태를 내부버퍼에 마지막으로 저장된 데이터의 논리 섹터오프셋(lso)을 기준으로 하여 세분화할 수도 있다. Alternatively, the state of the M block may be subdivided based on the number of data stored in the internal buffer, and the state of the N block may be subdivided based on the logical sector offset lso of the data last stored in the internal buffer. .

도 6의 상태기계에서 숫자와 문자로 표시된 기호(예를 들면, 3/F, 1/B)도시된 숫자는 입력되는 논리섹터번호(lsn)에 의해 계산된 논리섹터오프셋(lso)을 의미하고, 문자 'F'는 플래시 메모리에 대한 데이터 연산이 수행된다는 것을 의미하고, 문자 'B'는 플래시 메모리에 대한 데이터 연산이 수행되지 않고 내부버퍼에 데이터가 저장된다는 것을 의미한다.In the state machine of FIG. 6, a number and a letter (for example, 3 / F, 1 / B) indicated by a symbol mean a logical sector offset lso calculated by the input logical sector number lsn. , The letter 'F' means that data operation on the flash memory is performed, and the letter 'B' means that data operation on the flash memory is not performed and data is stored in the internal buffer.

예를 들어, 상기 상태기계에서'3/F'의 기호의 경우, M0 블록상태에서 논리섹터오프셋(lso)=3의 입력을 받으면, 내부버퍼에 저장된 데이터를 플래시 메모리에 쓰고 플래시 메모리의 해당 블록의 상태는 M0 상태가 된다는 것을 의미한다. 또한, M1,M2,M3블록상태의 경우에 논리섹터오프셋(lso)=3의 입력을 받으면, 내부버퍼에 저장된 데이터를 플래시 메모리에 쓰고 플래시 메모리의 해당 블록의 상태는 M0 상태가 된다는 것을 의미한다. 이는 논리 섹터 오프셋(lso)의 마지막 값이 입력되기 때문이다. 즉 페이지당 섹터수를 4개로 가정하였으므로, 논리섹터오프셋(lso)값 '3'은 논리섹터오프셋(lso)값의 마지막 값이 된다. 따라서 이후에 이보다 더 작은 논리섹터오프셋 값이 입력되는 경우에는 N블록으로 상태변화가 되거나 물리 페이지오프셋(ppo)값이 달라지기 때문에(연산대상 페이지가 달라지기 때문에), 내부버퍼의 데이터 저장 상태와 관계없이 바로 플래시 메모리에 대한 데이터 연산이 수행되는 것이다. For example, in the state machine, when a symbol of '3 / F' is received, when the logic sector offset (lso) = 3 is received in the M 0 block state, data stored in the internal buffer is written to the flash memory, and the corresponding memory of the flash memory is written. The state of the block means that the state is M 0 . In addition, in the case of M 1 , M 2 , and M 3 block states, when the logic sector offset (lso) = 3 is input, data stored in the internal buffer is written to the flash memory, and the state of the corresponding block of the flash memory is M 0 . It means. This is because the last value of the logical sector offset lso is input. That is, since the number of sectors per page is assumed to be 4, the logical sector offset (lso) value '3' is the last value of the logical sector offset (lso) value. Therefore, when a smaller logical sector offset value is input later, the state is changed to N blocks or the physical page offset (ppo) value is changed (since the target page is changed). Regardless, the data operation on the flash memory is performed.

여기서, 논리섹터 오프셋 값이 이전입력값보다 작은 값이 입력되는 경우에도, 논리섹터오프셋(lso)값 '3'의 값이 입력되지 않는 한, 상기 내부버퍼에 데이터가 다 채워진 이후에 플래시 메모리에 대한 데이터 연산을 수행할 수도 있다. Here, even when the value of the logical sector offset value is smaller than the previous input value, unless the value of the logical sector offset (lso) value '3' is input, the data is stored in the flash memory after the data is filled in the internal buffer. You can also perform data operations on.

그리고 N3블록의 경우에 논리섹터오프셋(lso)=3의 입력을 받으면, 내부버퍼 에 저장된 데이터를 플래시 메모리에 쓰고 플래시 메모리의 해당 블록의 상태는 N0 블록상태가 된다는 것을 의미한다.In the case of the N 3 block, when the logic sector offset (lso) = 3 is input, the data stored in the internal buffer is written to the flash memory, and the state of the corresponding block of the flash memory is the N 0 block state.

다른 예로, 기호 '2/B' 의 경우는 M0블록의 경우에 논리섹터오프셋(lso)=2의 입력을 받으면, 연산대상 데이터를 내부버퍼에 저장하고 플래시 메모리의 해당 블록의 상태는 M3 블록 상태가 된다는 것을 의미하고, M1블록의 경우에 논리섹터오프셋(lso)=2의 입력을 받으면, 연산대상 데이터를 내부버퍼에 저장하고 플래시 메모리의 해당 블록의 상태는 M3 블록 상태가 된다는 것을 의미한다. 또한, M2블록의 경우에 논리섹터오프셋(lso)=2의 입력을 받으면, 연산대상 데이터를 내부버퍼에 저장하고 플래시 메모리의 해당 블록의 상태는 M3 블록 상태가 된다는 것을 의미한다.As another example, when the symbol '2 / B' receives an input of logical sector offset (lso) = 2 in the case of M 0 block, the operation target data is stored in the internal buffer and the state of the corresponding block in the flash memory is M 3. In case of M 1 block, if the logical sector offset (lso) = 2 is received, the operation target data is stored in the internal buffer, and the state of the corresponding block in the flash memory is M 3 block state. Means that. In addition, in the case of the M 2 block, when a logic sector offset (lso) = 2 is received, it means that the operation target data is stored in the internal buffer and the state of the corresponding block of the flash memory is the M 3 block state.

그리고 기호 '2/B' 는 N0블록의 경우에 논리섹터오프셋(lso)=2의 입력을 받으면, 연산대상 데이터를 내부버퍼에 저장하고 플래시 메모리의 해당 블록의 상태는 N1 블록 상태가 된다는 것을 의미하고, N1블록의 경우에 논리섹터오프셋(lso)=2의 입력을 받으면, 연산대상 데이터를 내부버퍼에 저장하고 플래시 메모리의 해당 블록의 상태는 N2 블록 상태가 된다는 것을 의미한다. 또한, N2 블록의 경우에, 논리섹터오프셋(lso)=2의 입력을 받으면, 연산대상 데이터를 내부버퍼에 저장하고 플래시 메모리의 해당 블록의 상태는 N3 블록 상태가 된다는 것을 의미한다.And the symbol '2 / B' receives a logical sector offset (lso) = 2 input in the case of N 0 blocks, storing the calculated object data in the buffer and the status of the corresponding block of the flash memory is that the N 1 block status In the case of the N 1 block, when the logical sector offset (lso) = 2 is received, the operation target data is stored in the internal buffer and the state of the corresponding block of the flash memory is the N 2 block state. In addition, in the case of the N 2 block, when the logical sector offset (lso) = 2 is received, it means that the operation target data is stored in the internal buffer and the state of the corresponding block of the flash memory is the N 3 block state.

결과적으로 도 6의 상태기계에서는 논리섹터오프셋(lso)의 입력이 순차적이 면, 처음의 M블록의 상태가 M블록상태로 유지되고 순차적이지 않으면 N 블록상태로 전이되는 것을 알 수 있다. As a result, it can be seen that in the state machine of FIG. 6, when the input of the logical sector offset lso is sequential, the state of the first M block is maintained in the M block state, and when it is not sequential, it is transitioned to the N block state.

도 7 내지 도 8의 실제 연산예를 통해 데이터 연산 동작을 좀 더 자세히 알아보기로 하자. 도 7 및 도 8의 예에서 논리블록번호(lbn)=0 은 물리블록번호(pbn)=0에 매핑된다고 가정한다. The operation of data operation will be described in more detail with reference to the actual operation examples of FIGS. 7 to 8. In the example of FIGS. 7 and 8, it is assumed that logical block number lbn = 0 is mapped to physical block number pbn = 0.

도 7(a)에 도시된 바와 같이, 처음에 논리섹터번호(lsn)=0 이 입력되면, 논리블록번호(lbn)=0, 논리페이지오프셋(lpo)=0, 논리섹터오프셋(lso)=0 이 되고, 연산대상 데이터는 내부 버퍼(Internal Buffer)에 저장된다. 이때의 블록 상태는 M1블록상태가 된다. 이때 내부버퍼는 물리블록번호(PBN)와 물리페이지오프셋(PPO)(또는 물리페이지번호(PPN))의 변수를 가지는데 상기 변수들의 값은 현재 내부 버퍼의 내용이 플래시 메모리에 쓰이는 위치를 의미한다. 따라서 도 7(a)의 경우 PBN=0, PPN=0이 된다. As shown in Fig. 7A, when the logical sector number lsn = 0 is initially input, the logical block number lbn = 0, logical page offset lpo = 0, logical sector offset lso = It becomes 0 and the operation target data is stored in an internal buffer. The block state at this time is M 1 block state. At this time, the internal buffer has variables of physical block number (PBN) and physical page offset (PPO) (or physical page number (PPN)), and the values of the variables mean a location where the contents of the current internal buffer are used in the flash memory. . Therefore, in the case of FIG. 7A, PBN = 0 and PPN = 0.

도 7(b)에 도시된 바와 같이, 논리섹터번호(lsn)가 0, 1, 2, 3, 4 의 순서로 입력되는 경우를 살펴본다. 이 경우는 논리섹터번호(lsn)가 0,1,2의 요청이 입력되는 순간까지는 연산대상 데이터가 내부버퍼에 저장되게 된다. 이후 논리섹터번호(lsn)=3 의 요청이 입력되는 순간, 상기 내부버퍼의 용량이 다 채워지게 되므로 상기 내부 버퍼에 저장된 데이터 및 논리섹터번호(lsn)=3과 함께 요청된 연산대상 데이터가 플래시 메모리에 써지게 된다. 이후 논리섹터번호(lsn)=4의 값 즉 연산대상 데이터는 내부버퍼에 저장된다. As shown in FIG. 7B, a case in which logical sector numbers lsn are input in the order of 0, 1, 2, 3, and 4 will be described. In this case, the operation target data is stored in the internal buffer until the moment when the request for the logical sector number lsn is 0, 1, 2 is input. After the logical sector number (lsn) = 3 request is entered, the capacity of the internal buffer is filled, so the data stored in the internal buffer and the requested operation data with the logical sector number (lsn) = 3 is flashed Will be written to memory. After that, a value of logical sector number lsn = 4, that is, a target data is stored in an internal buffer.

이때 논리섹터번호(lsn)=3과 함께 요청된 연산대상 데이터는 상기 내부버퍼에 저장되었다가 상기 플래시 메모리에 쓰일 수도 있고, 내부버퍼에 저장됨이 없이 상기 플래시 메모리에 바로 쓰이도록 할 수 있다. 이는 이후의 연산 동작에서도 마찬가지이다. 즉 내부버퍼의 용량이 다 채워질 것으로 예상되는 경우에, 마지막 데이터의 상기 내부버퍼에의 저장여부는 설계상황에 따라 달라질 수 있는 것이다. In this case, the operation target data requested with the logical sector number lsn = 3 may be stored in the internal buffer and used in the flash memory, or may be directly written to the flash memory without being stored in the internal buffer. The same applies to the subsequent operation. That is, when it is expected that the capacity of the internal buffer will be full, whether or not the last data is stored in the internal buffer may vary depending on the design situation.

이때는 내부 버퍼에 하나의 데이터가 저장되어 있는 상태이고, 모두 제 위치에 저장되어 있는 상태이므로 블록의 상태는 M1블록이 된다. 또한 이 경우는 논리섹터 오프셋(lso)값을 기준으로 하는 경우, 논리섹터오프셋(lso)값 0이 입력되는 경우이므로 블록의 상태는 M1블록이 된다. In this case, since one data is stored in the internal buffer, and all of them are stored in place, the block state is M 1 block. In this case, the logical sector offset lso is a reference value, and since the logical sector offset lso value 0 is input, the block state is M 1 block.

도 7(c)은 플래시 메모리의 블록상태가 M블록 상태에서 N블록 상태로 변하는 예를 나타낸 것이다.7C shows an example in which the block state of the flash memory is changed from the M block state to the N block state.

도 7(c)에 도시된 바와 같이, 논리섹터번호(lsn)가 0, 1, 0 의 순서로 들어오면, 논리섹터번호(lsn)의 첫 번째 및 두 번째 요청 0, 1에 대응되는 연산대상 데이터가 상기 내부버퍼에 저장된다. 이때의 블록상태는 M2블록상태가 된다. 이후 세 번째 논리섹터번호(lsn)=0의 요청에서 블록상태가 N1블록상태로 바뀌고 대응되는 두 번째 연산대상 데이터 D0은 내부 버퍼에 쓰인다. 한편, 이전에 내부 버퍼에 저장되어 있던 논리섹터번호(lsn)의 첫 번째 및 두 번째 요청 0, 1에 대응되는 연산대상 데이터 D0, D1은 플래시 메모리의 첫째 물리 페이지(물리페이지 오프셋 값이 0인 페 이지)에 쓰이게 된다. 이는 알고리즘의 복잡도를 줄이기 위한 것으로, 이 경우 블록상태가 N1블록 상태로 바뀜이 없이 M블록상태(M1블록상태)를 유지할 수 있다. As shown in FIG. 7C, when the logical sector number lsn comes in the order of 0, 1, 0, the operation target corresponding to the first and second requests 0 and 1 of the logical sector number lsn. Data is stored in the internal buffer. The block state at this time is M 2 block state. After that, in the request of the third logical sector number (lsn) = 0, the block state is changed to the N 1 block state, and the corresponding second operation target data D 0 is used in the internal buffer. Meanwhile, the operation target data D 0 and D 1 corresponding to the first and second requests 0 and 1 of the logical sector number lsn previously stored in the internal buffer are the first physical page (physical page offset value) of the flash memory. Page 0). This is to reduce the complexity of the algorithm, in which case the block state can be maintained in the M block state (M 1 block state) without changing to the N 1 block state.

그리고 논리섹터번호(lsn)의 세 번째 요청 0 에 대응되는 상기 두 번째 연산대상 데이터 D0 는 이후의 요청상태에 따라 해당페이지(물리페이지 오프셋값이 1인 페이지)에 대한 연산이 결정되게 된다(도 7(d)참조). The second operation target data D0 corresponding to the third request 0 of the logical sector number lsn is determined for the corresponding page (page whose physical page offset value is 1) according to the request state thereafter (FIG. 7 (d)).

도 7(d)는 도 7(c)에 이어서 연산요청이 계속적으로 입력되는 경우의 예이다.FIG. 7D illustrates an example in which an operation request is continuously input following FIG. 7C.

도 7(d)에 도시된 바와 같이, 도 7(c)에 이어서 논리섹터번호(lsn) 0,1,1의 순서로 연산요청이 계속 입력된다. 이 경우에는 앞의 논리섹터번호(lsn) 0,1에 대응되는 연산대상 데이터 D0,D1 는 연속적으로 내부 버퍼에 저장된다. 이후에 마지막 논리섹터번호(lsn)=1 이 입력되는 순간에 내부버퍼가 다 채워지게 되므로 플래시 메모리에 대한 쓰기 연산 동작이 수행되게 된다. 이때의 블록의 상태는 N0 블록상태가 된다. As shown in Fig. 7 (d), the operation request is continuously input in the order of logical sector numbers lsn 0, 1, 1, following Fig. 7 (c). In this case, the calculation target data D 0 and D 1 corresponding to the previous logical sector number lsn 0,1 are continuously stored in the internal buffer. Thereafter, the internal buffer is filled at the moment when the last logical sector number (lsn) = 1 is input, so that a write operation to the flash memory is performed. The state of the block at this time becomes the N 0 block state.

도 8(a) 및 도 8(b)은 플래시 메모리의 연산대상 블록이 변경되는 경우의 예를 나타낸 것이다. 8 (a) and 8 (b) show an example in which the calculation target block of the flash memory is changed.

도 8(a)에 도시된 바와 같이, 논리섹터번호(lsn)가 순차적으로 4, 5, 6, 7의 순서로 입력되다가 이후에 두 번째 논리섹터번호(lsn) 4가 입력되는 경우이다. 이때는 순차적으로 입력된 논리섹터번호(lsn) 4, 5, 6, 7에 대응되는 연산대상 데이터 D4,D5,D6,D7 이 내부버퍼에 저장되었다가, 논리섹터번호(lsn) 7의 입력 시에 플래 시 메모리의 두 번째 물리페이지(페이지번호(PPN)=1)의 위치에 쓰이게 된다. 이에 따라 블록상태는 M0블록상태가 된다. 이후 두 번째 논리섹터번호(lsn) 4가 입력되는 경우 대응되는 연산대상 데이터 D4는 내부버퍼에 저장되고 블록 상태가 M0에서 N1블록상태로 바뀌게 된다. 이 경우 또한 블록상태가 N1블록 상태가 아닌 M블록상태(M1블록상태)로 바뀔 수 있다. As shown in FIG. 8A, the logical sector numbers lsn are sequentially input in the order of 4, 5, 6, and 7, and then the second logical sector number lsn 4 is input thereto. At this time, the operation target data D 4 , D 5 , D 6 , and D 7 corresponding to the sequentially input logical sector numbers (lsn) 4, 5, 6, and 7 are stored in the internal buffer, and the logical sector number (lsn) 7 When is input, it is written to the position of the second physical page (page number (PPN) = 1) of the flash memory. As a result, the block state becomes the M 0 block state. Thereafter, when the second logical sector number (lsn) 4 is input, the corresponding operation target data D 4 is stored in the internal buffer, and the block state is changed from M 0 to N 1 block state. In this case, the block state may also be changed to the M block state (M 1 block state) instead of the N 1 block state.

도 8(b)은 도 8(a)에 이어서 연산요청이 계속적으로 입력되는 경우의 예이다. FIG. 8B illustrates an example in which an operation request is continuously input following FIG. 8A.

도 8(b)에 도시된 바와 같이, 도 8(a)에 이어서 논리섹터번호(lsn) 16이 입력된다. 이때 도 8(a)에서의 두 번째 논리섹터번호(lsn) 4에 대응되며 내부버퍼에 저장되어 있던 연산대상 데이터 D4는 플래시 메모리의 물리블록번호(PBN) 0의 물리 페이지번호(PPN)=2의 위치에 쓰이게 된다. 그리고 플래시 메모리의 물리블록번호(PBN) 1의 물리 페이지번호(PPN)=0의 위치에는 이미 데이터 D12,D13,D14,D15가 이미 쓰여 있는 상태이다. As shown in Fig. 8B, the logical sector number lsn 16 is input following Fig. 8A. At this time, the operation target data D4 corresponding to the second logical sector number lsn 4 in FIG. 8A and stored in the internal buffer is the physical page number PPN of the physical block number PBN 0 of the flash memory. It is used at the position of. Data D 12 , D 13 , D 14 , and D 15 are already written in the position of the physical page number (PPN) = 0 of the physical block number PBN 1 of the flash memory.

상기 논리섹터번호(lsn)=16은 논리블록번호(lbn)=1, 논리페이지오프셋(lpo)=1, 논리섹터오프셋(lso)=0 으로 구해진다. 논리블록번호(lbn)=1이 물리블록번호(pbn)=1에 매핑된다고 가정하면, 논리섹터번호(lsn) 16에 대응되는 연산대상 데이터 D16은 물리블록번호(pbn)=1의 물리페이지오프셋(ppo)=1, 물리섹터오프셋(pso)=0 의 위치가 제 위치이다. 주어진 예에서 해당 위치가 비어 있고 블록 상 태가 M0블록상태이므로 블록 상태가 M1로 변하고 내부버퍼에 상기 연산대상 데이터 D16이 써지게 된다. 이후에 입력되는 논리섹터번호(lsn)의 입력이 순차적이냐 아니면 순차적이지 않으냐 여부에 따라, 이후에 입력되는 데이터가 내부버퍼에 저장될 것인지 아니면 플래시 메모리의 해당 물리 페이지 내의 물리섹터에 쓰일 것인지 여부가 결정되게 된다. The logical sector number lsn = 16 is obtained by a logical block number lbn = 1, a logical page offset lpo = 1, and a logical sector offset lso = 0. Assuming that logical block number lbn = 1 is mapped to physical block number pbn = 1, the calculation target data D16 corresponding to logical sector number lsn 16 has a physical page offset of physical block number pbn = 1. (ppo) = 1, the physical sector offset (pso) = 0 is the position. In the given example, since the corresponding position is empty and the block state is M 0 block state, the block state changes to M1 and the operation target data D 16 is written to the internal buffer. Depending on whether the subsequent input of the logical sector number (lsn) is sequential or not sequential, whether the data to be input later is stored in the internal buffer or used in the physical sector in the corresponding physical page of the flash memory Will be determined.

도 7 내지 도 8에서 설명한 연산 및 매핑 예 이외에도 다양한 예가 있을 수 있으나, 이러한 예들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 용이하게 이해되고 적용될 수 있으므로 더 이상의 예에 대한 설명은 생략하기로 한다.There may be various examples in addition to the calculation and mapping examples described with reference to FIGS. 7 to 8, but these examples may be easily understood and applied by those skilled in the art. It will be omitted.

이상에서는 플래시 메모리의 데이터 연산 중 쓰기 동작에 대해서 설명하고 있으나 읽기 연산의 경우에도, 유사하게 적용가능하다. 다만, 읽기 연산의 경우에는, 내부버퍼를 사용할 수도 있고 사용하지 않을 수도 있다. 예를 들어, 읽기연산을 위한 논리 섹터 번호가 순차적으로 입력되는 경우에는 페이지 내의 모든 데이터를 읽어서 우선적으로 내부버퍼에 저장하고, 대응되는 데이터를 상기 내부버퍼에서 읽어내는 방법으로 데이터 연산을 수행할 수 있다.In the above, the write operation during the data operation of the flash memory has been described, but it is similarly applicable to the read operation. In the case of read operation, however, the internal buffer may or may not be used. For example, when logical sector numbers for read operations are sequentially input, all data in a page may be read and stored in an internal buffer first, and data operations may be performed by reading corresponding data from the internal buffer. have.

상기 내부버퍼를 사용하는지 여부에 관계없이, 상기 읽기 연산의 경우에 플래시 메모리의 블록상태가 M블록인 경우에는 제 위치의 데이터를 읽으면 되고, N블록의 경우에는 여분영역에 저장된 연산정보를 역으로 스캔해서 해당위치에서의 가장 최근에 저장된 데이터에 대한 읽기 연산을 수행하게 된다. Regardless of whether the internal buffer is used or not, in the case of the read operation, when the block state of the flash memory is M block, data of the position may be read. In the case of N block, the operation information stored in the spare area is reversed. Scanning is performed to read the most recently stored data at the location.

상술한 바와 같이, 본 발명에 따르면, 내부버퍼 및 블록 상태의 변화를 이용하여 데이터 연산 및 매핑을 수행함으로써, 대블록 플래시 메모리에의 효율적인 적용이 가능하다.As described above, according to the present invention, by performing data operation and mapping using the change of the internal buffer and the block state, it is possible to efficiently apply to the large block flash memory.

본 발명에 대한 설명에서, 논리섹터 번호, 페이지 번호 등 번호 라는 용어가 사용되어 있으나, 일반적으로 메모리에서 사용되는 어드레스라는 용어로 대체될 수 있다. 또한 본 발명에서는 상술한 구성이 대블록 플래시 메모리에 적용되는 것으로 예시되어 있으나, 본 발명은 그 효용성은 떨어질 수 있으나 소블록 플래시 메모리에도 적용이 가능하며, 기타 플래시 메모리가 아닌 다른 메모리 소자에도 약간의 응용이나 변경을 통해 적용가능 할 것이다. In the description of the present invention, the terms logical sector number, page number, etc. are used, but they may be replaced with the term address generally used in memory. In addition, in the present invention, the above-described configuration is illustrated as being applied to a large block flash memory, but the present invention may be less effective, but may be applied to a small block flash memory, and may be applied to other memory devices other than the flash memory. It may be applicable through application or modification.

상기한 실시예의 설명은 본 발명의 더욱 철저한 이해를 위하여 도면을 참조로 예를 든 것에 불과하므로, 본 발명을 한정하는 의미로 해석되어서는 안 될 것이다. 또한, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 있어 본 발명의 기본적 원리를 벗어나지 않는 범위 내에서 다양한 변화와 변경이 가능함은 명백하다 할 것이다. The description of the above embodiments is merely given by way of example with reference to the drawings for a more thorough understanding of the present invention, and should not be construed as limiting the present invention. In addition, it will be apparent to those skilled in the art that various changes and modifications can be made without departing from the basic principles of the present invention.

도 1은 일반적인 플래시 메모리 시스템의 블록도.1 is a block diagram of a typical flash memory system.

도 2는 소블록 플래시 메모리와 대블록 플래시 메모리의 구조를 도시한 도면.2 is a diagram showing the structure of a small block flash memory and a large block flash memory;

도 3은 일반적인 소블록 플래시 메모리 시스템에서의 데이터 연산 및 매핑방법의 예를 설명하기 위한 도면.3 is a view for explaining an example of a data operation and mapping method in a general small block flash memory system.

도 4는 본 발명의 일 실시예에 따른 대블록 플래시 메모리의 데이터 연산 및 매핑방법의 예를 설명하기 위한 도면.4 is a view for explaining an example of a data operation and mapping method of a large block flash memory according to an embodiment of the present invention.

도 5는 본 발명의 다른 실시예에 따른 플래시메모리 시스템의 블록도.5 is a block diagram of a flash memory system according to another embodiment of the present invention.

도 6은 도 5의 연산제어부(120)에 적용되는 상태기계(state machine)를 나타낸 도면.FIG. 6 is a diagram illustrating a state machine applied to the operation control unit 120 of FIG. 5.

도 7 내지 도 8은 실제 연산예를 통해 데이터 연산 동작을 나타낸 도면.7 to 8 are diagrams showing data operation operations through actual calculation examples.

*도면의 주요 부분에 대한 부호의 설명** Description of the symbols for the main parts of the drawings *

100: 플래시 메모리 시스템 120: 연산제어부100: flash memory system 120: operation control unit

130: 내부버퍼 140: 플래시 메모리130: internal buffer 140: flash memory

Claims (22)

플래시 메모리 시스템에 있어서:In a flash memory system: 복수의 블록들을 구비하고, 상기 복수의 블록들 각각은 복수의 페이지들을 구비하며, 상기 복수의 페이지들 각각은 복수의 섹터들을 구비하는 구조를 가지고, 논리적 연산단위보다 물리적 연산단위의 용량이 더 큰 저장용량을 가지며 상기 복수의 블록들 각각에 대한 블록상태정보 및 연산정보를 내부에 저장하고 있는 대블록(large block) 플래시 메모리와;And a plurality of blocks, each of the plurality of blocks having a plurality of pages, each of the plurality of pages having a plurality of sectors, and having a larger capacity of a physical operation unit than a logical operation unit. A large block flash memory having a storage capacity and storing block state information and operation information for each of the plurality of blocks therein; 상기 플래시 메모리의 물리적 연산단위의 저장용량의 n배(n은 자연수)에 해당하는 저장용량을 가지며, 상기 플래시 메모리에 대한 데이터 쓰기 연산을 위해 데이터가 임시로 저장되기 위한 내부버퍼와;An internal buffer having a storage capacity corresponding to n times a storage capacity of a physical operation unit of the flash memory (n is a natural number), and for temporarily storing data for a data write operation to the flash memory; 연산을 원하는 데이터를 우선적으로 상기 내부버퍼에 저장하고, 상기 플래시 메모리의 블록상태정보 및 상기 내부버퍼의 데이터 저장 상태에 따라, 상기 내부버퍼에 저장된 데이터의 상기 플래시 메모리의 해당 블록에의 데이터 연산의 수행을 제어하는 연산제어부를 구비하되, The data desired for the operation is first stored in the internal buffer, and according to the block state information of the flash memory and the data storage state of the internal buffer, the data operation of the data stored in the internal buffer into the corresponding block of the flash memory. It is provided with an operation control unit for controlling the performance, 상기 플래시 메모리의 블록들은, 저장된 모든 데이터가 페이지오프셋 및 섹터오프셋이 일치하는 제1타입블록(M블록) 또는 저장된 데이터 중 페이지 오프셋 및 섹터오프셋이 일치하지 않는 데이터를 적어도 하나 포함하는 제2타입블록 (N블록)으로 구분되며, 상기 블록상태정보는 상기 제1타입블록의 정보 및 상기 제2타입블록의 정보를 포함하고,The blocks of the flash memory may include at least one of a first type block (M block) in which page offsets and a sector offset coincide, or a second type block including data in which page offsets and sector offsets do not coincide. Divided into (N blocks), wherein the block state information includes information of the first type block and information of the second type block, 상기 플래시 메모리의 논리적 연산단위는 섹터이며, 물리적 연산단위는 페이지이고, 상기 플래시 메모리의 블록상태정보는 상기 플래시 메모리에 대한 정보를 저장하는 메타(meta) 블록에 저장되거나 각 블록에 저장됨을 특징으로 하는 플래시 메모리 시스템.The logical operation unit of the flash memory is a sector, the physical operation unit is a page, and the block state information of the flash memory is stored in a meta block storing information on the flash memory or stored in each block. Flash memory system. 청구항 1에 있어서, The method according to claim 1, 상기 연산제어부는, 상기 내부버퍼에 연산대상 데이터를 우선적으로 저장하고, 상기 내부버퍼에 상기 플래시 메모리의 물리적 연산단위의 n 배(n은 자연수)에 해당되는 저장용량만큼의 데이터가 적어도 저장된 경우 또는 연산대상 물리페이지가 바뀌는 경우에, 상기 내부버퍼에 저장된 데이터의 상기 플래시 메모리의 블록에 대한 데이터 연산을 수행함을 특징으로 하는 플래시 메모리 시스템.The operation control unit preferentially stores calculation target data in the internal buffer, and at least data of a storage capacity corresponding to n times (n is a natural number) of the physical operation unit of the flash memory is stored in the internal buffer; or And performing a data operation on the block of the flash memory of data stored in the internal buffer when the operation target physical page is changed. 청구항 1에 있어서, The method according to claim 1, 상기 연산제어부는, The operation control unit, 입력되는 연산대상 데이터를 우선적으로 상기 내부버퍼에 저장하고, First, the operation target data to be input is stored in the internal buffer, 상기 내부버퍼에 상기 플래시 메모리의 물리적 연산단위의 n 배(n은 자연수)에 해당되는 저장용량만큼의 데이터가 적어도 저장되었는지 여부 및 상기 연산대상데이터에 대응되는 논리섹터오프셋의 순차적 입력여부에 따라, 상기 내부버퍼에 저장된 데이터 또는 입력되는 연산대상 데이터의 상기 플래시 메모리의 해당블록에의 데이터 연산을 수행함을 특징으로 하는 플래시 메모리 시스템.According to whether the internal buffer has stored at least as much data as the storage capacity corresponding to n times the physical operation unit of the flash memory (n is a natural number) and whether the logical sector offset corresponding to the operation target data is sequentially inputted, And performing a data operation on the corresponding block of the flash memory of data stored in the internal buffer or inputted operation data. 청구항 1에 있어서, The method according to claim 1, 상기 연산제어부는,The operation control unit, 상기 플래시 메모리의 블록이 상기 제1타입블록을 유지하거나 상기 제1타입블록을 유지할 것으로 예상되는 경우 및 상기 제2타입 블록을 계속적으로 유지하거나 상기 제2타입블록을 유지할 것으로 예상되는 경우에는, 상기 내부버퍼에 상기 플래시 메모리의 물리적 연산단위의 n 배(n은 자연수)에 해당되는 저장용량만큼의 데이터가 적어도 저장된 경우 또는 물리페이지오프셋값이 변동되는 경우에, 상기 내부버퍼에 저장된 데이터 또는 입력되는 연상대상 데이터의 상기 플래시 메모리의 해당블록에의 데이터 연산을 수행하며, When the block of the flash memory is expected to hold the first type block or to hold the first type block, and when it is expected to keep the second type block continuously or to maintain the second type block, the When at least as much data as the storage capacity corresponding to n times (n is a natural number) of the physical operation unit of the flash memory is stored in the internal buffer or when the physical page offset value is changed, the data stored in the internal buffer or input Perform a data operation on the corresponding block of the flash memory of the association data; 상기 플래시 메모리의 블록이 상기 제1타입블록에서 상기 제2타입블록으로 바뀌거나 바뀔 것으로 예상되는 연산대상 데이터 입력의 경우에는, 상기 연산대상 데이터 입력시점에 상기 입력되는 연상대상 데이터 또는 상기 내부버퍼에 저장된 데이터의 상기 플래시 메모리의 해당블록에의 데이터 연산을 수행함을 특징으로 하는 플래시 메모리 시스템.In the case of the calculation target data input, in which the block of the flash memory is expected to be changed or changed from the first type block to the second type block, the block to the associative target data or the internal buffer inputted at the time of the calculation target data input. And performing a data operation on the corresponding block of the flash memory. 플래시 메모리의 데이터 연산방법에 있어서:In the data operation method of the flash memory: 연산을 원하는 연산대상 데이터를 소정의 저장용량을 가지는 내부버퍼에 우선적으로 저장하고, 상기 내부버퍼에 상기 플래시 메모리의 물리적 연산단위의 n 배(n은 자연수)에 해당되는 저장용량만큼의 데이터가 적어도 저장되거나 물리페이지오프셋값의 변동여부에 따라, 상기 내부버퍼에 저장된 데이터 또는 입력되는 연산대상 데이터의 상기 플래시 메모리에의 데이터 연산수행 여부를 결정하되, The operation target data to be operated is preferentially stored in an internal buffer having a predetermined storage capacity, and the internal buffer has at least as much data as the storage capacity corresponding to n times (n is a natural number) of the physical operation unit of the flash memory. Depending on whether the stored or physical page offset value is changed, it is determined whether to perform data operation on the flash memory of the data stored in the internal buffer or the input operation target data. 상기 플래시 메모리는 논리적 연산단위보다 물리적 연산단위의 용량이 더 큰 대블록(large block) 플래시 메모리인 것을 특징으로 하는 플래시 메모리의 데이터 연산방법.And the flash memory is a large block flash memory having a larger capacity of a physical operation unit than a logical operation unit. 플래시 메모리의 데이터 연산방법에 있어서:In the data operation method of the flash memory: 논리섹터번호 및 연산대상 데이터가 입력되는 단계와;Inputting a logical sector number and operation target data; 상기 플래시 메모리의 물리적 연산단위의 저장용량의 n 배(n은 자연수)에 해당되는 저장용량을 가지는 내부버퍼에 상기 연산 대상 데이터를 일정순서로 저장하는 단계와; Storing the operation target data in a predetermined order in an internal buffer having a storage capacity corresponding to n times (n is a natural number) of the storage capacity of the physical operation unit of the flash memory; 상기 플래시 메모리의 블록들을, 저장된 모든 데이터가 페이지오프셋 및 섹터오프셋이 일치하는 제1타입블록 또는 저장된 데이터 중 페이지오프셋 및 섹터오프셋이 일치하지 않는 데이터를 적어도 하나 포함하는 제2타입블록으로 구분하고, 상기 내부버퍼에 저장된 데이터 또는 입력되는 연산대상 데이터의 상기 플래시 메모리에의 데이터 연산을 수행하되, The blocks of the flash memory may be divided into a first type block in which all stored data coincide with a page offset and a sector offset, or a second type block including at least one of data stored in which the page offset and sector offset do not match. Perform a data operation on the flash memory of the data stored in the internal buffer or input operation data; 상기 논리섹터번호를 통해 계산되어진 논리섹터오프셋들의 입력이 순차적이면 상기 제1타입블록을 유지하도록 데이터 연산을 수행하고, 상기 논리섹터오프셋들의 입력이 순차적이지 않으면 상기 제2타입블록으로 전이되도록 데이터 연산을 수행하는 단계를 구비하며, If the input of the logical sector offsets calculated through the logical sector number is sequential, the data operation is performed to maintain the first type block, and if the input of the logical sector offsets is not sequential, the data operation is transferred to the second type block. And performing a step 상기 플래시 메모리는 논리적 연산단위보다 물리적 연산단위의 용량이 더 큰 대블록(large block) 플래시 메모리이고, 상기 플래시 메모리에의 데이터 연산은 상기 내부버퍼에 상기 플래시 메모리의 물리적 연산단위의 n배(n은 자연수)에 해당되는 저장용량만큼의 데이터가 적어도 저장된 경우나 물리페이지오프셋값이 변동되는 경우에 물리적 연산단위로 수행되며, The flash memory is a large block flash memory having a larger capacity of a physical operation unit than a logical operation unit, and the data operation to the flash memory is n times the physical operation unit of the flash memory to the internal buffer. Is performed in the unit of physical operation when at least data corresponding to the storage capacity corresponding to the natural number) is stored or when the physical page offset value changes. 상기 플래시 메모리의 논리적 연산단위는 섹터이며, 물리적 연산단위는 페이지이고, 상기 데이터 연산은 데이터 쓰기 연산임을 특징으로 하는 플래시 메모리의 데이터 연산방법.A logical operation unit of the flash memory is a sector, a physical operation unit is a page, and the data operation is a data write operation. 플래시 메모리의 매핑제어방법에 있어서:In the mapping control method of flash memory: 데이터 연산을 위해 논리섹터번호가 입력되는 단계와; Inputting a logical sector number for data operation; 상기 논리섹터번호를 lsn, 논리블록번호를 lbn, 논리페이지오프셋을 lpo, 논리섹터오프셋을 lso, 단위블록당 페이지수를 np, 단위페이지당 섹터수를 ns라 정의할 때, 하기식 lbn=lsn/(np*ns), tmp=lsn%(np*ns), lpo=tmp/ns, lso=tmp%ns 에 의해 상기 논리블록번호, 상기 논리페이지 오프셋, 및 상기 논리섹터오프셋 값을 구하는 단계와;When the logical sector number is lsn, the logical block number is lbn, the logical page offset is lpo, the logical sector offset is lso, the number of pages per unit block is np, and the number of sectors per unit page is ns. obtaining the logical block number, the logical page offset, and the logical sector offset value by / (np * ns), tmp = lsn% (np * ns), lpo = tmp / ns, and lso = tmp% ns; ; 미리 정의된 매핑테이블에 따라, 상기 논리블록번호에 대응되는 물리블록을 검색하는 단계와;Retrieving a physical block corresponding to the logical block number according to a predefined mapping table; 상기 논리페이지오프셋 및 상기 논리섹터오프셋과 일치되는 물리페이지오프셋 및 물리섹터오프셋의 위치에 데이터 연산을 위한 매핑을 원칙적으로 수행하되, 상기 논리페이지 오프셋 및 상기 논리섹터오프셋과 일치되는 물리페이지오프셋 및 물리섹터오프셋의 위치에 이미 데이터가 저장되어 있는 경우에는 인접위치 또는 임의의 위치에 데이터 연산을 위한 매핑을 수행하는 단계를 구비하되, In principle, data mapping is performed at a position of a physical page offset and a physical sector offset coinciding with the logical page offset and the logical sector offset, but the physical page offset and the physical page offset coincide with the logical page offset and the logical sector offset. If the data is already stored in the position of the sector offset, and performing the mapping for the data operation to the adjacent position or any position, 상기 플래시 메모리는 복수의 블록들을 구비하고, 상기 복수의 블록들 각각은 복수의 페이지들을 구비하며, 상기 복수의 페이지들 각각은 복수의 섹터들을 구비하는 구조를 가지며, 논리적 연산단위인 상기 섹터보다 물리적 연산단위인 상기 페이지의 용량이 더 큰 대블록(large block) 플래시 메모리임을 특징으로 하는 플래시메모리의 매핑제어방법.The flash memory has a plurality of blocks, each of the plurality of blocks includes a plurality of pages, each of the plurality of pages has a structure having a plurality of sectors, and is physically larger than the sector, which is a logical operation unit. And a large block flash memory having a larger capacity of the page as an operation unit. 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete
KR1020080018560A 2008-02-28 2008-02-28 Flash memory system and data calculation method of flash memory Expired - Fee Related KR100950281B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080018560A KR100950281B1 (en) 2008-02-28 2008-02-28 Flash memory system and data calculation method of flash memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080018560A KR100950281B1 (en) 2008-02-28 2008-02-28 Flash memory system and data calculation method of flash memory

Publications (2)

Publication Number Publication Date
KR20090093185A KR20090093185A (en) 2009-09-02
KR100950281B1 true KR100950281B1 (en) 2010-03-31

Family

ID=41301691

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080018560A Expired - Fee Related KR100950281B1 (en) 2008-02-28 2008-02-28 Flash memory system and data calculation method of flash memory

Country Status (1)

Country Link
KR (1) KR100950281B1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050011869A (en) * 2003-07-24 2005-01-31 주식회사 레인콤 Memory device using flash memory and error correction method the same
KR20050070672A (en) * 2003-12-30 2005-07-07 삼성전자주식회사 Method for address mapping and managing mapping information, and flash memory thereof
KR100608602B1 (en) 2003-12-10 2006-08-03 삼성전자주식회사 Flash memory, mapping control device and method therefor

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050011869A (en) * 2003-07-24 2005-01-31 주식회사 레인콤 Memory device using flash memory and error correction method the same
KR100608602B1 (en) 2003-12-10 2006-08-03 삼성전자주식회사 Flash memory, mapping control device and method therefor
KR20050070672A (en) * 2003-12-30 2005-07-07 삼성전자주식회사 Method for address mapping and managing mapping information, and flash memory thereof

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
정보과학회논문지

Also Published As

Publication number Publication date
KR20090093185A (en) 2009-09-02

Similar Documents

Publication Publication Date Title
US11232041B2 (en) Memory addressing
TWI476780B (en) Hybrid solid-state memory system having volatile and non-volatile memory
US8296498B2 (en) Method and system for virtual fast access non-volatile RAM
US7941692B2 (en) NAND power fail recovery
US9367451B2 (en) Storage device management device and method for managing storage device
US7818492B2 (en) Source and shadow wear-leveling method and apparatus
US20070094445A1 (en) Method to enable fast disk caching and efficient operations on solid state disks
US8635399B2 (en) Reducing a number of close operations on open blocks in a flash memory
US20120173795A1 (en) Solid state drive with low write amplification
US20130103889A1 (en) Page-buffer management of non-volatile memory-based mass storage devices
US20190339904A1 (en) Solid state drive using two-level indirection architecture
KR20060090087A (en) Adaptive flash memory controller employing multiple mapping techniques and flash memory system including the same
US20100318726A1 (en) Memory system and memory system managing method
KR100914646B1 (en) How to manage flash memory with multi-plane structure
KR20080056491A (en) FLT address mapping method
US11182286B2 (en) Data storage device and control method for non-volatile memory
KR100950281B1 (en) Flash memory system and data calculation method of flash memory
US7899974B2 (en) Nonvolatile memory, mapping control apparatus and method of the same
KR101022001B1 (en) How to manage the flash memory system and flash memory
KR20090129096A (en) Data management system in single flash memory
TWI649652B (en) Fast and safe data storage device and method
US20120198126A1 (en) Methods and systems for performing selective block switching to perform read operations in a non-volatile memory
US20210406169A1 (en) Self-adaptive wear leveling method and algorithm
HK1194502A (en) Hybrid solid-state memory system having volatile and non-volatile memory

Legal Events

Date Code Title Description
A201 Request for examination
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20080228

PA0201 Request for examination
PG1501 Laying open of application
E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20090923

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20100315

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20100323

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20100324

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
FPAY Annual fee payment

Payment date: 20130111

Year of fee payment: 4

PR1001 Payment of annual fee

Payment date: 20130111

Start annual number: 4

End annual number: 4

FPAY Annual fee payment

Payment date: 20140103

Year of fee payment: 5

PR1001 Payment of annual fee

Payment date: 20140103

Start annual number: 5

End annual number: 5

FPAY Annual fee payment

Payment date: 20141226

Year of fee payment: 6

PR1001 Payment of annual fee

Payment date: 20141226

Start annual number: 6

End annual number: 6

FPAY Annual fee payment

Payment date: 20151224

Year of fee payment: 7

PR1001 Payment of annual fee

Payment date: 20151224

Start annual number: 7

End annual number: 7

FPAY Annual fee payment

Payment date: 20170102

Year of fee payment: 8

PR1001 Payment of annual fee

Payment date: 20170102

Start annual number: 8

End annual number: 8

FPAY Annual fee payment

Payment date: 20190107

Year of fee payment: 10

PR1001 Payment of annual fee

Payment date: 20190107

Start annual number: 10

End annual number: 10

PC1903 Unpaid annual fee

Termination category: Default of registration fee

Termination date: 20210103