KR101747791B1 - Memory system and data storage device, and data management method thereof - Google Patents

Memory system and data storage device, and data management method thereof Download PDF

Info

Publication number
KR101747791B1
KR101747791B1 KR1020100106946A KR20100106946A KR101747791B1 KR 101747791 B1 KR101747791 B1 KR 101747791B1 KR 1020100106946 A KR1020100106946 A KR 1020100106946A KR 20100106946 A KR20100106946 A KR 20100106946A KR 101747791 B1 KR101747791 B1 KR 101747791B1
Authority
KR
South Korea
Prior art keywords
management unit
data
data management
trim
sub
Prior art date
Application number
KR1020100106946A
Other languages
Korean (ko)
Other versions
KR20120045421A (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 KR1020100106946A priority Critical patent/KR101747791B1/en
Priority to TW100139384A priority patent/TWI579692B/en
Priority to US13/283,866 priority patent/US11232022B2/en
Priority to CN201110338409.0A priority patent/CN102467455B/en
Publication of KR20120045421A publication Critical patent/KR20120045421A/en
Priority to US14/470,500 priority patent/US20140372685A1/en
Application granted granted Critical
Publication of KR101747791B1 publication Critical patent/KR101747791B1/en
Priority to US17/570,816 priority patent/US20220129374A1/en
Priority to US17/570,848 priority patent/US11636032B2/en
Priority to US17/570,780 priority patent/US11640353B2/en
Priority to US18/314,669 priority patent/US20230273876A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • 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/10Program control for peripheral devices
    • 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]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Abstract

본 발명의 일 실시 예는 사용자 장치의 데이터 관리 단위와 다른 데이터 관리 단위를 갖는 데이터 저장 장치의 데이터 관리 방법에 관한 것이다. 본 발명의 일 실시 예에 따른 데이터 관리 방법은 상기 사용자 장치로부터 삭제될 파일의 저장 영역에 관한 정보를 전달받는 단계, 상기 삭제될 파일의 저장 영역 중 상기 데이터 저장 장치의 데이터 관리 단위에 일치하는 저장 영역을 선택하는 단계 및 상기 선택된 데이터 관리 단위에 일치하는 저장 영역에 대한 소거 동작을 수행하는 단계를 포함한다. 본 발명의 실시 예에 따른 데이터 관리 방법은 하디 디스크 관점의 파일 관리 단위와 플래시 메모리 관점의 데이터 관리 단위의 불일치를 해소함으로써, 플래시 메모리의 수명 단축을 방지하고 플래시 메모리 시스템의 전체적인 성능을 향상시킬 수 있다.One embodiment of the present invention relates to a data management method of a data storage device having a data management unit different from a data management unit of a user apparatus. A data management method according to an embodiment of the present invention includes the steps of: receiving information on a storage area of a file to be deleted from the user device; storing, in a storage area of the file to be deleted, And performing an erase operation on the storage area corresponding to the selected data management unit. The data management method according to the embodiment of the present invention can prevent the shortening of the life time of the flash memory and improve the overall performance of the flash memory system by eliminating the inconsistency between the file management unit in terms of the hard disk and the data management unit in terms of the flash memory have.

Description

메모리 시스템 및 데이터 저장 장치 그리고 그것의 데이터 관리 방법{MEMORY SYSTEM AND DATA STORAGE DEVICE, AND DATA MANAGEMENT METHOD THEREOF} [0001] MEMORY SYSTEM AND DATA STORAGE DEVICE, AND DATA MANAGEMENT METHOD THEREOF [0002]

본 발명은 메모리 시스템 및 그것의 데이터 관리 방법에 관한 것으로, 좀 더 구체적으로는 플래시 메모리 시스템 및 그것의 데이터 관리 방법에 관한 것이다. The present invention relates to a memory system and its data management method, and more particularly to a flash memory system and a method for managing data thereof.

플래시 메모리(flash memory)는 하드 디스크와 달리 겹쳐 쓰기(overwrite)를 지원하지 않기 때문에, 다시 쓰기 위해서는 소거 동작이 선행되어야 한다. 플래시 메모리의 소거 동작은 메모리 블록 단위로 수행된다. 이러한 플래시 메모리의 특성으로 인해, 하드 디스크용 파일 시스템을 플래시 메모리에 그대로 적용하는데 어려움이 있다. 이를 해결하기 위한 방안으로 하드 디스크용 파일 시스템과 플래시 메모리 사이에 미들웨어인 플래시 변환 계층(FTL)이 사용되고 있다. 플래시 변환 계층은 플래시 메모리를 기존의 하드 디스크처럼 자유롭게 읽고 쓸 수 있도록 한다.Unlike a hard disk, a flash memory does not support overwrite, so erasing must be preceded by rewriting. The erase operation of the flash memory is performed on a memory block basis. Due to the characteristics of the flash memory, it is difficult to apply the file system for the hard disk directly to the flash memory. In order to solve this problem, a flash conversion layer (FTL) which is a middleware is used between a file system for a hard disk and a flash memory. The flash conversion layer allows the flash memory to be read and written freely like an existing hard disk.

한편, 파일 시스템에서 파일을 관리하는 단위와 플래시 변환 계층에서 플래시 메모리에 저장된 데이터를 관리하는 단위는 서로 다르다. 이러한 관리 단위의 불일치는 플래시 메모리에 불필요한 데이터의 복사 동작 및 대량의 병합 동작을 야기할 수 있다. 이러한 복사 및 병합 동작은 플래시 메모리의 수명을 단축하는 주요한 원인이 된다. On the other hand, the unit for managing files in the file system and the unit for managing data stored in the flash memory in the flash conversion layer are different. This inconsistency of the management unit may cause unnecessary copying of data and a large amount of merging operations to the flash memory. This copying and merging operation is a major cause of shortening the life of the flash memory.

본 발명은 하드 디스크 관점의 관리 단위와 플래시 메모리 관점의 관리 단위 사이의 불일치를 해소함으로써, 플래시 메모리의 수명 단축을 방지하고, 플래시 메모리 시스템의 전체적인 성능을 향상시키는 것을 목적으로 한다. The present invention aims at preventing the shortening of the life time of the flash memory and improving the overall performance of the flash memory system by eliminating the inconsistency between the management unit of the hard disk and the management unit of the flash memory.

본 발명의 실시 예에 따른 사용자 장치의 데이터 관리 단위와 다른 데이터 관리 단위를 갖는 데이터 저장 장치의 데이터 관리 방법은 상기 사용자 장치로부터 삭제될 파일의 저장 영역에 관한 정보를 전달받는 단계; 상기 삭제될 파일의 저장 영역 중 상기 데이터 저장 장치의 데이터 관리 단위에 일치하는 저장 영역을 선택하는 단계; 및 상기 선택된 데이터 관리 단위에 일치하는 저장 영역에 대한 소거 동작을 수행하는 단계를 포함한다.A data management method of a data storage device having a data management unit different from a data management unit of a user device according to an embodiment of the present invention includes receiving information on a storage area of a file to be deleted from the user device; Selecting a storage area corresponding to a data management unit of the data storage device among the storage areas of the file to be deleted; And performing an erase operation on the storage area corresponding to the selected data management unit.

실시 예로써, 상기 삭제될 파일의 저장 영역 중 상기 데이터 저장 장치의 데이터 관리 단위에 일치하지 않는 저장 영역에 관한 정보는 별도로 관리된다.According to an embodiment, information on a storage area that does not match the data management unit of the data storage device among the storage areas of the files to be deleted is separately managed.

실시 예로써, 상기 사용자 장치는 상기 삭제될 파일의 메타 데이터에 관한 정보를 변경하여, 상기 삭제될 파일은 상위 레벨에서 삭제되었음을 나타낸다.In an embodiment, the user equipment changes information about the metadata of the file to be deleted, indicating that the file to be deleted is deleted at a higher level.

실시 예로써, 상기 사용자 장치로부터 적어도 두 개의 삭제될 파일들의 저장 영역에 관한 정보가 제공되는 경우, 상기 데이터 저장 장치는 상기 적어도 두 개의 삭제될 파일들의 저장 영역에 관한 정보를 버퍼 메모리에 저장하는 단계를 더 포함한다.In an embodiment, when information on a storage area of at least two files to be deleted is provided from the user device, the data storage device stores information on a storage area of the at least two files to be deleted in a buffer memory .

실시 예로써, 상기 선택하는 단계는 상기 버퍼 메모리에 저장된 상기 적어도 두 개의 삭제될 파일들의 저장 영역에 관한 정보 중 상기 데이터 저장 장치의 데이터 관리 단위에 일치하는 저장 영역을 선택한다.In an embodiment, the selecting step selects a storage area corresponding to a data management unit of the data storage device among information on storage areas of the at least two files to be deleted stored in the buffer memory.

실시 예로써, 상기 사용자 장치는 섹터 단위로 데이터를 관리하고, 상기 데이터 저장 장치는 페이지 단위로 데이터를 관리하며, 각 페이지는 복수 개의 섹터들로 구분된다.In an embodiment, the user apparatus manages data on a sector-by-sector basis, the data storage apparatus manages data on a page basis, and each page is divided into a plurality of sectors.

본 발명의 실시 예에 따른 사용자 장치의 데이터 관리 단위와 다른 데이터 관리 단위를 사용하는 데이터 저장 장치의 데이터 관리 방법은 상기 데이터 저장 장치는 데이터를 저장하는 데이터 저장 유닛과 상기 저장 유닛에 쓰여질 데이터를 임시로 저장하는 버퍼 메모리를 포함하고, 상기 사용자 장치로부터 삭제될 파일의 저장 영역에 관한 정보를 전달받는 단계; 및 상기 삭제될 파일의 저장 영역 중 상기 데이터 저장 장치의 관리 단위와 일치하는 저장 영역을 무효로 마킹하는 단계를 포함하며, 상기 버퍼 메모리에 저장된 데이터 중 상기 무효로 마킹된 저장 영역에 관한 데이터는 상기 저장 유닛에 쓰여지지 않는다.The data management method of a data storage device using a data management unit different from the data management unit of the user apparatus according to an embodiment of the present invention is characterized in that the data storage device includes a data storage unit for storing data, The method comprising: receiving information on a storage area of a file to be deleted from the user device; And invalidating a storage area corresponding to a management unit of the data storage device among the storage areas of the file to be deleted, wherein the data on the invalidated marking storage area, among the data stored in the buffer memory, It is not written to the storage unit.

실시 예로써, 상기 삭제될 파일의 저장 영역 중 상기 데이터 저장 장치의 관리 단위에 일치하지 않는 저장 영역을 유효로 마킹하는 단계를 더 포함하며, 상기 버퍼 메모리에 저장된 데이터 중 상기 유효로 마킹된 저장 영역에 관한 데이터는 상기 저장 유닛에 쓰여진다.In one embodiment of the present invention, the method further comprises marking a storage area that does not match the management unit of the data storage device among the storage areas of the file to be deleted, Is written to the storage unit.

실시 예로써, 상기 삭제될 파일의 저장 영역 중 상기 데이터 저장 장치의 관리 단위에 일치하지않는 저장 영역을 관리하는 트림 관리 테이블을 생성하는 단계를 더 포함한다.The method may further include generating a trim management table for managing a storage area that is inconsistent with the management unit of the data storage device among the storage areas of the files to be deleted.

실시 예로써, 상기 트림 관리 테이블은 상기 버퍼 메모리에 저장되며, 상기 트림 관리 데이블의 정보는 밀어내기 방식에 의하여 조정된다.In an embodiment, the trim management table is stored in the buffer memory, and the information of the trim management table is adjusted by a push method.

실시 예로써, 상기 사용자 장치로부터 적어도 두 개의 삭제될 파일들의 저장 영역에 관한 정보가 제공되는 경우, 상기 데이터 저장 장치는 상기 적어도 두 개의 삭제될 파일들의 저장 영역에 관한 정보를 상기 버퍼 메모리에 저장하는 단계를 더 포함한다.In an embodiment, when information on a storage area of at least two files to be deleted is provided from the user device, the data storage device stores information on a storage area of the at least two files to be deleted in the buffer memory .

실시 예로써, 상기 무효로 마킹하는 단계는 상기 버퍼 메모리에 저장된 상기 적어도 두 개의 삭제될 파일들의 저장 영역에 관한 정보 중 상기 데이터 저장 장치의 데이터 관리 단위에 일치하는 저장 영역을 무효로 마킹한다.In an embodiment, the invalid marking step invalidly marks a storage area corresponding to a data management unit of the data storage device among information on a storage area of the at least two files to be deleted stored in the buffer memory.

본 발명의 실시 예에 따른 메모리 시스템은 트림 명령을 발생하는 호스트; 및 상기 호스트로부터의 트림 명령에 응답하여, 소거 동작을 수행하는 데이터 저장 장치를 포함하며, 상기 데이터 저장 장치는 상기 트림 명령에 의하여 삭제될 영역으로 지정된 저장 영역 중 상기 데이터 저장 장치의 데이터 관리 단위에 일치하는 영역에 대하여 소거 동작을 수행한다.A memory system according to an embodiment of the present invention includes a host generating a Trim command; And a data storage device for performing an erase operation in response to a Trim command from the host, wherein the data storage device is a data storage unit of a data storage unit of a storage area designated as an area to be deleted by the Trim command And performs an erase operation on the matching area.

실시 예로써, 상기 데이터 저장 장치는 상기 트림 명령에 의하여 삭제될 영역으로 지정된 저장 영역 중 상기 데이터 저장 장치의 데이터 관리 단위에 일치하지 않는 영역에 대한 정보를 별도로 관리한다.In an embodiment, the data storage device separately manages information on an area that does not match the data management unit of the data storage device among the storage areas designated as the area to be deleted by the trim command.

실시 예로써, 상기 데이터 저장 장치는 페이지 단위로 데이터를 관리하고 상기 호스트는 섹터 단위로 데이터를 관리하며, 각 페이지는 복수 개의 섹터들로 구분된다.In an embodiment, the data storage device manages data on a page basis, the host manages data on a sector basis, and each page is divided into a plurality of sectors.

실시 예로써, 상기 데이터 저장 장치는 상기 호스트부터 제공된 논리 주소를 상기 데이터 저장 장치의 물리 주소로 변환하는 맵핑 테이블을 포함하며, 상기 맵핑 테이블은 상기 삭제될 영역으로 지정된 저장 영역 중 상기 데이터 저장 장치의 관리 단위에 일치하는 저장 영역을 무효한 것으로 표시한다.In an embodiment, the data storage device may include a mapping table for converting a logical address provided from the host into a physical address of the data storage device, and the mapping table may include, Mark storage that matches the management unit as invalid.

실시 예로써, 상기 맵핑 테이블은 상기 삭제될 영역으로 지정된 저장 영역 중 상기 데이터 저장 장치의 관리 단위에 일치하지 않는 저장 영역을 유효한 것으로 표시한다.In an embodiment, the mapping table indicates a storage area that is inconsistent with the management unit of the data storage device among the storage areas designated as the area to be deleted, as valid.

실시 예로써, 상기 데이터 저장 장치는 상기 삭제될 영역으로 지정된 영역 중 상기 데이터 저장 장치의 관리 단위에 일치하지 않는 저장 영역에 대한 정보를 관리하는 트림 관리 테이블을 더 포함한다.In an embodiment, the data storage device further includes a trim management table for managing information on a storage area that is inconsistent with the management unit of the data storage device among the areas designated as the deletion area.

실시 예로써, 상기 호스트로부터의 다른 트림 명령에 의하여 상기 트림 관리 테이블에서 관리되는 저장 영역이 상기 데이터 저장 장치의 데이터 관리 단위에 일치하는 경우, 상기 맵핑 테이블은 상기 트림 관리 테이블에 기초하여 쓰기 상태 정보를 갱신한다.If the storage area managed by the trim management table matches the data management unit of the data storage device by another trim command from the host, the mapping table stores the write status information .

실시 예로써, 상기 맵핑 테이블의 쓰기 상태 정보가 갱신된 후에, 상기 트림 관리 테이블에서 관리되는 상기 데이터 저장 장치의 데이터 관리 단위에 일치하는 저장 영역에 관한 정보는 상기 트림 관리 테이블에서 삭제된다.In an embodiment, after the write status information of the mapping table is updated, information on a storage area corresponding to a data management unit of the data storage device managed in the trim management table is deleted from the trim management table.

실시 예로써, 상기 데이터 저장 장치는 상기 트림 관리 테이블을 저장하는 버퍼 메모리를 더 포함하며, 상기 데이터 저장 장치는 밀어내기 방식에 의하여 상기 트림 관리 테이블에 저장된 정보를 관리한다.In an embodiment, the data storage device further includes a buffer memory for storing the trim management table, and the data storage device manages information stored in the trim management table by an extrusion method.

실시 예로써, 상기 데이터 저장 장치는 상기 호스트로부터 전달된 적어도 두 개의 트림 명령들에 관한 정보를 저장하는 버퍼 메모리를 포함한다.In an embodiment, the data storage device includes a buffer memory for storing information about at least two trim commands transmitted from the host.

실시 예로써, 상기 데이터 저장 장치는 데이터를 저장하는 적어도 두 개의 플래시 메모리 및 상기 적어도 두 개의 플래시 메모리를 제어하는 제어 유닛을 더 포함하며, 상기 제어 유닛은 상기 적어도 두 개의 플래시 메모리가 병렬적으로 동작하도록, 상기 버퍼 메모리에 저장된 상기 적어도 두 개의 트림 명령들의 처리 순서를 조정하다.As an embodiment, the data storage device further comprises at least two flash memories for storing data and a control unit for controlling the at least two flash memories, wherein the control unit is operable so that the at least two flash memories are operated in parallel , The processing order of the at least two trim instructions stored in the buffer memory is adjusted.

본 발명의 실시 예에 따른 사용자 장치에 연결되어 사용되는 데이터 저장 장치는 데이터를 저장하는 저장 유닛; 상기 저장 유닛에 쓰여질 데이터를 임시로 저장하는 버퍼 메모리; 및 상기 저장 유닛 및 상기 버퍼 메모리를 제어하는 제어 유닛을 포함하며, 상기 사용자 장치로부터 전달된 트림 명령에 의하여 삭제될 영역으로 지정된 저장 영역 중 상기 저장 유닛의 데이터 관리 단위에 일치하는 저장 영역의 데이터는 상기 저장 유닛에 쓰여지지 않는다.A data storage device connected to a user device according to an embodiment of the present invention includes a storage unit for storing data; A buffer memory for temporarily storing data to be written to the storage unit; And a control unit for controlling the storage unit and the buffer memory, wherein the data of the storage area matching the data management unit of the storage unit among the storage areas designated as the area to be deleted by the trim command transmitted from the user apparatus And is not written to the storage unit.

실시 예로써, 상기 삭제될 영역으로 지정된 저장 영역 중 상기 저장 유닛의 데이터 관리 단위에 일치하지 않는 저장 영역의 데이터는 상기 저장 유닛에 쓰여지는다. In an embodiment, data in a storage area that does not match the data management unit of the storage unit among the storage areas designated as the area to be deleted is written to the storage unit.

실시 예로써, 상기 사용자 장치로부터 제공된 논리 주소를 상기 데이터 저장 장치의 물리 주소로 변환하는 맵핑 테이블을 더 포함하며, 상기 맵핑 테이블은 상기 삭제될 영역으로 지정된 저장 영역 중 상기 저장 유닛의 데이터 관리 단위에 일치하는 저장 영역의 쓰기 상태 정보를 무효로 표시하고, 상기 삭제될 영역으로 지정된 저장 영역 중 상기 저장 유닛의 데이터 관리 단위에 일치하지 않는 저장 영역의 쓰기 상태 정보를 유효로 표시한다.The mapping table may further include a mapping table for converting a logical address provided from the user device into a physical address of the data storage device, The writing state information of the matching storage area is invalidated and the writing state information of the storage area that does not match the data management unit of the storage unit among the storage areas designated as the area to be deleted is effectively displayed.

실시 예로써, 상기 맵핑 테이블에서 유효로 표시된 상기 저장 유닛의 관리 단위에 일치하지 않는 저장 영역을 관리하는 트림 관리 테이블을 더 포함한다.As an embodiment, the system further includes a trim management table for managing a storage area that does not match the management unit of the storage unit indicated as valid in the mapping table.

실시 예로써, 상기 사용자 장치로부터의 전달된 다른 트림 명령에 의하여 상기 트림 관리 테이블에서 관리되는 저장 영역이 상기 저장 유닛의 데이터 관리 단위에 일치하는 경우, 상기 맵핑 테이블은 상기 트림 관리 테이블에 기초하여 쓰기 상태 정보를 갱신한다.In an embodiment, when the storage area managed in the trim management table matches another data management unit of the storage unit by another Trim command transmitted from the user apparatus, the mapping table is written based on the trim management table And updates the status information.

실시 예로써, 상기 사용자 장치로부터 적어도 두 개의 트림 명령들을 전달받는 경우, 상기 적어도 두 개의 트림 명령들에 관한 정보를 저장하는 버퍼 메모리를 더 포함하다.As an embodiment, the apparatus further includes a buffer memory for storing information on the at least two trim commands when receiving at least two trim commands from the user device.

실시 예로써, 상기 저장 유닛은 적어도 두 개의 플래시 메모리를 포함하며, 상기 제어 유닛은 상기 적어도 두 개의 플래시 메모리가 병렬적으로 동작하도록, 상기 버퍼 메모리에 저장된 상기 적어도 두 개의 트림 명령들에 처리 순서를 조정한다.As an embodiment, the storage unit comprises at least two flash memories, wherein the control unit is operable to cause the at least two flash memories to operate in parallel, Adjust.

본 발명의 실시 예에 따른 메모리 시스템은 하디 디스크 관점의 파일 관리 단위와 플래시 메모리 관점의 데이터 관리 단위의 불일치를 해소함으로써, 데이터 관리 단위의 불일치에 의하여 야기되는 유효한 데이터의 카피 및 대량의 병합 동작의 발생을 방지한다. 따라서, 본 발명의 실시 예에 따른 메모리 시스템은 플래시 메모리의 수명 단축을 방지하고 플래시 메모리 시스템의 전체적인 성능을 향상시킨다. 또한, 본 발명의 실시 예에 따른 메모리 시스템은 트림 동작을 지원함으로써, 호스트의 명령에 대한 플래시 메모리 시스템의 응답 속도를 더욱 향상시킨다. The memory system according to the embodiment of the present invention eliminates the inconsistency between the file management unit in terms of the hard disk and the data management unit in terms of the flash memory so that the copying of the valid data caused by the inconsistency of the data management unit, Thereby preventing occurrence. Thus, the memory system according to the embodiment of the present invention prevents the shortening of the life time of the flash memory and improves the overall performance of the flash memory system. Further, the memory system according to the embodiment of the present invention further improves the response speed of the flash memory system to the command of the host by supporting the trim operation.

도 1은 본 발명의 실시 예에 메모리 시스템을 보여주는 블록도이다.
도 2는 본 발명의 실시 예에 따른 플래시 메모리 시스템을 보여주는 블록도이다.
도 3은 도 2의 파일 시스템이 파일을 관리하기 위하여 생성하는 디렉토리 엔트리(directory entry) 구조를 예시적으로 보여준다.
도 4는 도 2에 도시된 플래시 메모리 시스템의 소프트웨어 계층 구조를 보여주는 블록도이다.
도 5는 플래시 변환 계층의 어드레스 변환 동작을 좀더 자세히 보여주는 블록도이다.
도 6은 맵핑 테이블을 통한 어드레스 변환을 예시적으로 보여주는 블록도이다.
도 7은 트림 관리 테이블 없이, 맵핑 테이블만을 이용하여 트림 명령을 처리하는 본 발명의 일 실시 예를 보여주는 도면이다.
도 8 및 도 9는 맵핑 테이블 및 트림 관리 테이블을 이용하여 트림 명령을 처리하는 본 발명의 일 실시 예를 보여주는 도면이다.
도 10은 도 2의 플래시 저장 장치의 하위 레벨에서의 삭제 동작을 보여주는 순서도이다.
도 11은 하위 레벨에서의 삭제 동작이 수행되는 경우에 플래시 변환 계층의 동작을 보여주는 순서도이다.
도 12 내지 도 14는 플래시 저장 장치가 플러시 기능을 지원하는 경우에 플래시 저장 장치의 트림 명령 처리 방법을 설명하기 위한 블록도이다.
도 15는 본 발명의 실시 예에 따른 플래시 저장 장치의 쓰기 되물리기 동작을 보여주는 순서도이다.
도 16 내지 도 18은 서로 다른 시간에 제공된 트림 명령들을 수집하고, 수집된 트림 명령을 한 번에 처리하는 플래시 저장 장치를 설명하는 도면이다.
도 19 내지 도 23은 플래시 저장 장치가 복수의 플래시 메모리들을 포함하는 경우에 플래시 저장 장치의 트림 명령을 처리하는 방법을 설명하기 위한 블록도이다.
도 24는 본 발명의 실시 예에 따른 플래시 메모리 시스템을 메모리 카드에 적용한 예를 보여준다.
도 25는 본 발명의 실시 예에 따른 트림 명령 처리 기법을 솔리드 스테이트 드라이브(SSD)에 적용한 예를 보여준다.
도 26은 도 25에 도시된 SSD 컨트롤러의 구성을 예시적으로 보여주는 블록도이다.
도 27은 본 발명의 실시 예에 따른 트림 명령 처리 기법을 플래시 메모리 모듈에 구현한 예를 보여주는 블록도이다.
1 is a block diagram illustrating a memory system in an embodiment of the present invention.
2 is a block diagram illustrating a flash memory system according to an embodiment of the present invention.
FIG. 3 exemplarily shows a directory entry structure that the file system of FIG. 2 creates to manage a file.
4 is a block diagram showing the software layer structure of the flash memory system shown in FIG.
5 is a block diagram illustrating the address translation operation of the flash translation layer in more detail.
Figure 6 is a block diagram illustrating an exemplary address translation through a mapping table.
7 is a diagram illustrating an embodiment of the present invention for processing a trim command using only a mapping table without a trim management table.
8 and 9 illustrate an embodiment of the present invention for processing a trim command using a mapping table and a trim management table.
10 is a flowchart showing the erasing operation at a lower level of the flash storage device of FIG.
11 is a flow chart showing the operation of the flash transform layer when a delete operation at a lower level is performed.
12 to 14 are block diagrams for explaining a method of processing a trim command of a flash storage device when the flash storage device supports the flush function.
15 is a flowchart illustrating a write-back operation of the flash storage device according to an embodiment of the present invention.
Figures 16-18 illustrate a flash storage device collecting trim commands provided at different times and processing the collected trim commands at one time.
19 to 23 are block diagrams illustrating a method of processing a trim instruction of a flash storage device in a case where the flash storage device includes a plurality of flash memories.
FIG. 24 shows an example in which a flash memory system according to an embodiment of the present invention is applied to a memory card.
FIG. 25 shows an example in which a trim command processing technique according to an embodiment of the present invention is applied to a solid state drive (SSD).
26 is a block diagram illustrating an exemplary configuration of the SSD controller shown in FIG.
FIG. 27 is a block diagram illustrating an example of implementing a trim instruction processing technique in a flash memory module according to an embodiment of the present invention. Referring to FIG.

이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예 또는 적용 예를 첨부된 도면을 참조하여 설명하기로 한다.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings, in order to explain the present invention in detail so that those skilled in the art can easily carry out the technical idea of the present invention. .

Ⅰ. 트림 동작을 지원하는 메모리 시스템Ⅰ. Memory system supporting trim operation

도 1은 본 발명의 실시 예에 메모리 시스템(100)을 보여주는 블록도이다. 도 1을 참조하면, 메모리 시스템(100)은 호스트(110) 및 저장 장치(120)를 포함하며, 저장 장치(120)는 제어 유닛(121)과 저장 유닛(122)을 포함한다.1 is a block diagram illustrating a memory system 100 in accordance with an embodiment of the present invention. Referring to Figure 1, a memory system 100 includes a host 110 and a storage device 120, which includes a control unit 121 and a storage unit 122.

호스트(110)는 트림 동작(TRIM operation)을 지원하다. 트림 동작은 사용자로부터 특정 파일(file)에 대한 삭제 요청(delete request)이 있는 경우, 호스트(110)에서 해당 파일에 대한 메타 데이터만을 처리하는 것을 의미한다. 이 경우, 저장 유닛(122)에 저장된 데이터의 실질적인 삭제 없이 호스트(110)의 메타 데이터만이 처리되기 때문에, 사용자는 해당 파일에 대한 삭제 동작이 빠르게 수행된 것으로 인식할 수 있다.The host 110 supports a TRIM operation. The trimming operation means that the host 110 processes only metadata about the file when there is a delete request for a specific file from the user. In this case, since only the metadata of the host 110 is processed without actually deleting the data stored in the storage unit 122, the user can recognize that the deletion operation for the file is performed quickly.

한편, 저장 유닛(122)에 저장된 데이터를 실질적으로 삭제하기 위하여, 호스트(110)는 저장 장치(120)에 트림 명령(TRIM command)을 제공한다. 트림 명령은 실질적으로 삭제될 영역을 지정하기 위한 정보(예를 들면, 어드레스 정보)를 포함한다. 제어 유닛(121)은 트림 명령에 응답하여, 저장 유닛(122)에 저장된 데이터에 대한 소거 동작(erase operation)을 수행한다. 이러한 트림 명령은 할당 해제 명령(deallocate command), 기록 해제 명령(unwrite command), 삭제 명령(deletion command), 파일 삭제 명령(file delete command) 등 다양한 이름으로 정의될 수 있다.On the other hand, in order to substantially delete the data stored in the storage unit 122, the host 110 provides a TRIM command to the storage device 120. [ The trim command includes information (for example, address information) for specifying an area to be substantially deleted. The control unit 121 performs an erase operation on the data stored in the storage unit 122 in response to the Trim command. Such a trim command may be defined by various names such as a deallocate command, an unwrite command, a deletion command, and a file delete command.

한편, 호스트(110)에서 파일을 관리하는 단위와 저장 장치(120)에서 저장 유닛(122)에 저장된 데이터를 관리하는 단위는 서로 다를 수 있다. 예를 들어, 호스트(110)에서는 하드 디스크(hard disk) 관점의 섹터(sector) 단위로 파일을 관리하고, 저장 장치(120)는 플래시 메모리(flash memory) 관점의 페이지(page) 및/또는 블록(block) 단위로 저장 유닛(122)에 저장된 데이터를 관리할 수 있다.The units for managing files in the host 110 and the units for managing data stored in the storage unit 122 in the storage unit 120 may be different from each other. For example, the host 110 manages files on a sector basis from the viewpoint of a hard disk, and the storage device 120 stores pages and / or blocks of a flash memory- and can manage the data stored in the storage unit 122 on a block-by-block basis.

이러한 호스트(110)와 저장 장치(120)의 관리 단위의 불일치는 메모리 시스템(100)의 성능 저하를 야기할 수 있다. 예를 들어, 호스트(110)로부터의 트림 명령에 응답하여 저장 유닛(122)에 저장된 데이터에 대한 소거 동작이 수행되는 경우, 관리 단위의 불일치는 유효한 데이터의 카피(copy) 및 대량의 병합 동작(merge operation)을 야기할 수 있다. 따라서, 저장 장치(120)의 수명이 단축되고, 성능이 떨어질 수 있다. Such a mismatch between the management unit of the host 110 and the storage device 120 may cause degradation of performance of the memory system 100. For example, when an erase operation is performed on the data stored in the storage unit 122 in response to a Trim command from the host 110, the mismatch of the management unit may result in a copy of valid data and a large number of merge operations merge operation. Therefore, the life of the storage device 120 may be shortened, and performance may be deteriorated.

이러한 문제를 해결하기 위하여, 본 발명의 실시 예에 따른 저장 장치(120)는 트림 관리 모듈(TRIM Manage Table, 123)을 포함한다. 트림 관리 모듈(123)은 호스트(110)로부터의 트림 명령에 따라 실질적으로 삭제될 영역으로 지정된 저장 유닛(122)의 영역 중 저장 장치(120)의 관리 단위에 일치하지 않는 영역을 별도로 관리하다. 트림 관리 모듈(123)을 이용하여 호스트(110)와 저장 장치(120) 사이의 관리 단위의 불일치를 해소함으로써, 본 발명의 실시 예에 따른 메모리 시스템(100)은 저장 장치(120)의 수명 단축 및 성능 저하를 방지할 수 있다.
In order to solve such a problem, the storage device 120 according to the embodiment of the present invention includes a TRIM Manage Table (123). The trim management module 123 separately manages an area that does not match the management unit of the storage device 120 among the areas of the storage unit 122 designated as the area to be substantially deleted in accordance with the trim command from the host 110. [ The memory system 100 according to the embodiment of the present invention can reduce the life span of the storage device 120 by eliminating the mismatch of management units between the host 110 and the storage device 120 by using the trim management module 123 And performance degradation can be prevented.

Ⅱ. 트림 명령을 처리하는 플래시 메모리 시스템의 플래시 저장 장치Ⅱ. Flash storage device in a flash memory system that processes the Trim command

도 2는 본 발명의 실시 예에 따른 플래시 메모리 시스템(1000)을 보여주는 블록도이다. 도 2에서는 도 1의 저장 장치(120)의 예로써, 플래시 저장 장치(1200)가 도시되어 있다. 2 is a block diagram illustrating a flash memory system 1000 in accordance with an embodiment of the present invention. In FIG. 2, a flash storage device 1200 is shown as an example of the storage device 120 of FIG.

도 2를 참조하면, 플래시 메모리 시스템(1000)은 호스트(1100) 및 플래시 저장 장치(1200)를 포함한다. 이하에서는 간략한 설명을 위하여, 호스트(1100)는 섹터(sector) 단위로 파일(file)을 관리하고, 플래시 저장 장치(1200)는 페이지(page) 단위로 플래시 메모리(1210)에 저장된 데이터를 관리한다고 가정된다. 플래시 저장 장치(1200)는 플래시 변환 계층(1232)의 트림 관리 테이블(TRIM Manage Table)을 이용하여 호스트(1100)와 플래시 저장 장치(1200) 사이의 관리 단위의 불일치를 해소한다.2, the flash memory system 1000 includes a host 1100 and a flash storage device 1200. [ For the sake of simplicity, the host 1100 manages files in units of sectors, and the flash storage 1200 manages data stored in the flash memory 1210 on a page basis Is assumed. The flash storage device 1200 eliminates the inconsistency of the management unit between the host 1100 and the flash storage device 1200 using the TRIM Manage Table of the flash conversion layer 1232. [

호스트(1100)는 프로세싱 유닛(Processing Unit, 1110) 및 구동 유닛(Driving Unit, 1120)을 포함한다. 프로세싱 유닛(예를 들면, CPU)(1110)은 호스트(1100)의 전반적인 동작을 제어하며, 구동 유닛(1120)은 프로세싱 유닛(1110)의 제어에 따라 플래시 저장 장치(1200)를 구동한다. 구동 유닛(1120)은 호스트(1100)의 소프트웨어 프로그램들을 구동하기 위한 메인 메모리(main memory)로 구성될 수 있다.The host 1100 includes a processing unit 1110 and a driving unit 1120. A processing unit (e.g., CPU) 1110 controls the overall operation of the host 1100 and the drive unit 1120 drives the flash storage device 1200 under the control of the processing unit 1110. The drive unit 1120 may be configured as a main memory for driving software programs of the host 1100. [

구동 유닛(1120)은 애플리케이션(Application, 1121), 파일 시스템(File System, 1122), 장치 드라이버(Device Driver, 1123), 그리고 호스트 메모리(1124)를 포함한다. 애플리케이션(1121)은 응용프로그램(application program)이라고도 하며, 운영 체제(OS) 상에서 실행되는 소프트웨어이다. 예를 들어, 애플리케이션(1121)은 파일(file)의 생성 및 삭제 동작을 지원하도록 프로그램되어 있다. The drive unit 1120 includes an application 1121, a file system 1122, a device driver 1123, and a host memory 1124. The application 1121 is also referred to as an application program, and is software executing on an operating system (OS). For example, the application 1121 is programmed to support the creation and deletion of a file.

파일 시스템(1122)은 호스트(1100)에서 사용되는 파일을 관리한다. 이하에서 파일 시스템(1122)은 하드 디스크 관점의 섹터(sector) 단위로 호스트(1100)에서 사용되는 파일을 관리한다고 가정된다. 여기에서, 섹터(sector)는 애플리케이션(1121)이 접근할 수 있는 가장 작은 데이터 관리 단위로써, 일반적으로 512B(byte)의 크기를 갖는다. The file system 1122 manages files used in the host 1100. [ Hereinafter, it is assumed that the file system 1122 manages files used in the host 1100 on a sector basis from the viewpoint of a hard disk. Here, a sector is the smallest data management unit that the application 1121 can access, and generally has a size of 512B (bytes).

파일 시스템(1122)은 애플리케이션(1121)으로부터 특정 파일에 대한 삭제 요청이 있는 경우, 삭제 요청된 파일의 메타 데이터를 변경한다. 이 후에 애플리케이션(1121)이 해당 파일에 접근(access)하면, 파일 시스템(1122)은 변경된 메타 데이터를 참조하여, '해당 파일은 삭제되었다'는 정보를 제공한다. The file system 1122 changes the metadata of the file requested to be deleted when the application 1121 requests deletion of a specific file. After that, when the application 1121 accesses the corresponding file, the file system 1122 refers to the changed metadata and provides information that the corresponding file is deleted.

한편, 파일 시스템(1122)은 파일의 메타 데이터(예를 들어, 파일명 등)만을 변경하기 때문에, 플래시 메모리(1210)에 저장된 삭제 요청된 파일에 대응하는 데이터는 삭제되지 않는다. 따라서, 프로세싱 유닛(1110)은 플래시 메모리(1210)에 저장된 데이터를 실질적으로 삭제하기 위하여, 트림 명령을 플래시 저장 장치(1200)에 제공한다. 파일 시스템(1122) 및 파일 시스템(1122)의 디렉토리 엔트리(directory entry) 구조는 이하의 도 3에서 좀더 자세히 설명된다. On the other hand, since the file system 1122 changes only the metadata (e.g., file name) of the file, the data corresponding to the file requested to be deleted stored in the flash memory 1210 is not deleted. Thus, the processing unit 1110 provides a Trim command to the flash storage device 1200 to substantially delete the data stored in the flash memory 1210. The directory entry structure of the file system 1122 and the file system 1122 will be described in more detail in FIG. 3 below.

장치 드라이버(1123)는 플래시 저장 장치(1200)가 호스트(1100)와 통신할 수 있도록 하는 프로그램이다. 플래시 저장 장치(1200)를 사용하기 위해서는, 호스트(1100)에 플래시 저장 장치(1200)에 맞는 장치 드라이버(1123)가 설치되어야 한다. 호스트 메모리(1124)는 플래시 저장 장치(1200)에 쓰거나 플래시 저장 장치(1200)로부터 읽은 데이터를 임시로 저장할 수 있다. 또한, 호스트 메모리(1124)는 애플리케이션(1121), 파일 시스템(1122), 그리고 장치 드라이버(1123)를 구동하기 위한 워킹 메모리(working memory)로 사용될 수 있다.The device driver 1123 is a program that allows the flash storage 1200 to communicate with the host 1100. [ In order to use the flash storage device 1200, a device driver 1123 corresponding to the flash storage device 1200 must be installed in the host 1100. The host memory 1124 may temporarily store the data written to or read from the flash storage device 1200. The host memory 1124 can also be used as a working memory for driving the application 1121, the file system 1122, and the device driver 1123.

본 발명의 실시 예에 있어서, 플래시 저장 장치(1200)는 호스트(1100)로부터 트림 명령(TRIM command)을 전달받는다. 트림 명령에는 삭제될 영역을 지정하기 위한 정보(예를 들어, 삭제 요청된 파일의 섹터 어드레스)가 포함된다. 플래시 저장 장치(1200)는 트림 명령에 응답하여, 플래시 메모리(1210)의 영역 중 삭제 요청된 영역을 무효(invalid)로 마킹(marking)한다. In an embodiment of the present invention, flash storage 1200 receives a TRIM command from host 1100. The trim command includes information (e.g., a sector address of a file requested to be deleted) for designating an area to be deleted. Flash storage device 1200, in response to the Trim command, marks the requested area of the flash memory 1210 as invalid.

플래시 저장 장치(1200)는 유휴 시간(idle time)(예를 들어, 호스트로부터 요청이 없을 때 생기는 제어 유닛(1230)의 유휴 시간)에 무효로 마킹된 영역에 대한 소거 동작(erase operation)을 수행한다. 계속해서 도 2를 참조하면, 플래시 저장 장치(1200)는 플래시 메모리(1210), 버퍼 메모리(1220), 그리고 제어 유닛(1230)을 포함한다.The flash storage device 1200 performs an erase operation on the invalidated area in idle time (e.g., the idle time of the control unit 1230 when there is no request from the host) do. 2, the flash storage device 1200 includes a flash memory 1210, a buffer memory 1220, and a control unit 1230.

플래시 메모리(1210)는 제어 유닛(1230)의 제어에 따라, 소거 동작, 읽기 동작 또는 쓰기 동작을 수행한다. 플래시 메모리(1210)는 복수의 메모리 블록으로 구성된다. 각각의 메모리 블록은 복수의 페이지(page)로 구성된다. 도 2에서는 3개의 메모리 블록(1121~1213)이 예시적으로 도시되어 있다. 각각의 메모리 블록은 4개의 페이지를 갖는 것으로 예시적으로 도시되어 있다. The flash memory 1210 performs an erase operation, a read operation, or a write operation under the control of the control unit 1230. [ The flash memory 1210 is composed of a plurality of memory blocks. Each memory block is composed of a plurality of pages. In Fig. 2, three memory blocks 1121 to 1213 are illustratively shown. Each memory block is illustratively shown as having four pages.

각 페이지의 크기는 섹터의 크기보다 크다. 즉, 각 페이지는 복수의 섹터들로 구분될 수 있다. 예를 들어, 각 페이지는 약 2KB(byte)의 크기를 갖고, 섹터는 512B(byte)의 크기를 갖는다. 플래시 메모리(1210)는 메모리 블록 단위로 소거 동작을 수행하고, 페이지 단위로 쓰기 또는 읽기 동작을 수행한다. The size of each page is larger than the size of the sector. That is, each page can be divided into a plurality of sectors. For example, each page has a size of about 2 kilobytes (bytes) and a sector has a size of 512 bytes (bytes). The flash memory 1210 performs an erase operation on a memory block basis and performs a write or read operation on a page basis.

한편, 플래시 메모리(1210)의 하나의 메모리 셀에는 한 비트 또는 두 비트 이상의 데이터가 저장될 수 있다. 하나의 메모리 셀에 한 비트 데이터를 저장할 수 있는 메모리 셀은 싱글 레벨 셀(SLC; Single Level Cell) 또는 싱글 비트 셀(single bit cell)이라 부른다. 하나의 메모리 셀에 두 비트 이상의 데이터를 저장할 수 있는 메모리 셀은 멀티 레벨 셀(MLC; Multi Level Cell) 또는 멀티 비트 셀(multi bit cell)이라 부른다.On the other hand, one bit or two or more bits of data may be stored in one memory cell of the flash memory 1210. A memory cell capable of storing one bit of data in one memory cell is called a single level cell (SLC) or a single bit cell. A memory cell capable of storing two or more bits of data in one memory cell is called a multi-level cell (MLC) or a multi-bit cell.

버퍼 메모리(1220)는 플래시 메모리(1210)로부터 읽은 데이터 또는 호스트(1100)로부터 제동되는 데이터를 임시로 저장할 수 있다. 또한, 버퍼 메모리(1220)는 플래시 변환 계층(Flash Transslation Layer; FTL)과 같은 펌웨어를 구동하는 데 사용될 수 있다. 버퍼 메모리(1220)는 DRAM, SRAM, MRAM, PRAM 등으로 구현될 수 있다. The buffer memory 1220 may temporarily store data read from the flash memory 1210 or data to be braked from the host 1100. In addition, the buffer memory 1220 can be used to drive firmware such as Flash Translation Layer (FTL). The buffer memory 1220 may be implemented as a DRAM, an SRAM, an MRAM, a PRAM, or the like.

계속해서 도 2를 참조하면, 제어 유닛(1230)은 중앙처리장치(CPU, 1231), 플래시 변환 계층(FTL, 1232), 플래시 컨트롤러(1233), 그리고 버퍼 컨트롤러(1234)를 포함한다. 중앙처리장치(1231)는 호스트(1100)로부터 입력된 신호를 분석하고 처리한다. 또한, 중앙처리장치(1231)는 플래시 저장 장치(1200)의 전반적인 동작을 제어한다.2, the control unit 1230 includes a central processing unit (CPU) 1231, a flash translation layer (FTL) 1232, a flash controller 1233, and a buffer controller 1234. The central processing unit 1231 analyzes and processes the signals input from the host 1100. [ In addition, the central processing unit 1231 controls the overall operation of the flash storage device 1200.

플래시 변환 계층(1232)은 호스트(1100)로부터 제공된 논리 어드레스(LA; Logical Address)를 플래시 메모리(1210) 상의 물리 어드레스(PA; Physical Address)로 변환한다. 예를 들어, 플래시 변환 계층(1232)은 호스트로부터 전달받은 섹터 어드레스(sector address)를 플래시 메모리(1210) 상의 페이지 어드레스(page address)로 변환한다. The flash conversion layer 1232 converts a logical address (LA) provided from the host 1100 into a physical address (PA) on the flash memory 1210. For example, the flash translation layer 1232 translates the sector address transferred from the host into a page address on the flash memory 1210.

또한, 플래시 변환 계층(1232)은 플래시 메모리(1210)에 저장된 데이터를 예를 들어, 페이지 단위로 관리한다. 플래시 변환 계층(1232)은 호스트(1100)로부터의 트림 명령에 의하여 소정 페이지에 저장된 데이터가 모두 삭제 요청된 경우, 해당 페이지를 무효(invalid)로 마킹(marking)한다. In addition, the flash conversion layer 1232 manages data stored in the flash memory 1210, for example, on a page basis. The flash conversion layer 1232 marks the corresponding page as invalid when all of the data stored in the predetermined page is requested to be deleted by the trim command from the host 1100.

플래시 변환 계층(1232)은 호스트(1100)로부터의 트림 명령에 의하여 소정 페이지에 저장된 데이터 중 일부만 삭제 요청된 경우, 맵핑 테이블의 해당 페이지를 유효(vaild)로 마킹(marking)한다. 이 경우, 플래시 변환 계층(1232)은 해당 페이지를 별도로 관리할 수 있다. 이를 위하여 플래시 변환 계층(1232)은 트림 관리 테이블(TRIM Manage Table)을 포함할 수 있다. 트림 관리 테이블은 페이지에 저장된 데이터 중 일부만 삭제 요청된 페이지를 관리한다. The flash conversion layer 1232 marks the corresponding page of the mapping table as vaild when only a part of the data stored in the predetermined page is requested to be deleted by the trim command from the host 1100. [ In this case, the flash conversion layer 1232 may manage the page separately. For this, the flash conversion layer 1232 may include a TRIM Manage Table. The trim management table manages the pages requested to delete only a part of the data stored in the page.

한편, 트림 관리 테이블은 버퍼 메모리(1220)에 저장될 수 있다. 이 경우, 버퍼 메모리(1220)의 영역 중 트림 관리 테이블에 할당된 영역의 크기는 설계자에 의하여 다양하게 설정될 수 있다. 예를 들어, 페이지 관리에 따른 제어 유닛(1230)의 오버헤드를 적게 하기 위하여, 트림 관리 테이블에 할당된 영역의 크기는 소정 크기로 제한될 수 있다.On the other hand, the trim management table can be stored in the buffer memory 1220. In this case, the size of the area allocated to the trim management table among the areas of the buffer memory 1220 can be variously set by the designer. For example, in order to reduce the overhead of the control unit 1230 according to page management, the size of the area allocated to the trim management table may be limited to a predetermined size.

트림 관리 테이블이 할당된 영역이 소정 크기로 제한되는 경우, 트림 관리 테이블에서 관리할 페이지에 대한 정보의 크기가 할당된 영역의 크기를 초과할 수 있다. 이 경우, 트림 관리 테이블의 페이지에 관한 정보는 밀어내기 방식에 의하여 관리될 수 있다. 플래시 변환 계층(1232) 및 플래시 변환 계층(1232)의 페이지 관리 기법은 이하의 도 5 내지 도 9에서 좀더 자세히 설명된다.When the area to which the trim management table is allocated is limited to a predetermined size, the size of the information about the page to be managed in the trim management table may exceed the size of the allocated area. In this case, the information on the page of the trim management table can be managed by the push method. The page management scheme of the flash translation layer 1232 and the flash translation layer 1232 will be described in more detail in FIGS. 5 to 9 below.

한편, 플래시 컨트롤러(1233)는 플래시 메모리(1210)의 읽기, 쓰기, 소거 동작을 제어하고, 버퍼 컨트롤러(1234)는 버퍼 메모리(1220)의 읽기, 쓰기 동작을 제어한다.On the other hand, the flash controller 1233 controls reading, writing and erasing operations of the flash memory 1210, and the buffer controller 1234 controls reading and writing operations of the buffer memory 1220.

도 3은 도 2의 파일 시스템(1122)이 파일을 관리하기 위하여 생성하는 디렉토리 엔트리(directory entry) 구조를 예시적으로 보여준다. 도 3을 참조하면, 디렉토리 엔트리 구조는 파일명(file name), 확장자(extension), 속성(attribute), 생성 날짜 및 시간(create data and time), 시작 섹터의 정보(starting secter), 파일 크기 정보(file size) 등을 포함할 수 있다. FIG. 3 illustrates an exemplary directory entry structure that the file system 1122 of FIG. 2 creates to manage a file. Referring to FIG. 3, the directory entry structure includes a file name, an extension, an attribute, a create date and time, a starting secter, file size), and the like.

파일 시스템(1122, 도 2 참조)은 애플리케이션(1121, 도 2 참조)으로부터 특정 파일에 대한 삭제 요청이 있는 경우, 삭제 요청된 파일의 메타 데이터를 변경한다. 예를 들어, 파일 시스템(1122)은 삭제 요청된 파일의 파일명에 십육진수 바이트 코드인 'E5h'를 위치시킨다. 다른 예로, 파일 시스템(1122)은 삭제 요청된 파일의 속성 값을 'OxE5'로 변경한다. 이것은 하나의 특별한 꼬리표로서, '이 파일은 삭제되었습니다'라는 것을 의미한다. 따라서, 이 후에 애플리케이션(1121)이 해당 파일에 접근(access)하는 경우, 파일 시스템(1122)은 해당 파일이 이미 삭제되었다는 정보를 제공한다. 파일 시스템(1122)에 관한 정보는 주기적으로 또는 유휴 시간(idle time)을 이용하여 불휘발성 메모리(예를 들어, 플래시 메모리(1210))에 저장될 수 있다. The file system 1122 (see FIG. 2) changes the metadata of the file requested to be deleted when there is a request to delete a specific file from the application 1121 (see FIG. 2). For example, the file system 1122 places the hexadecimal byte code 'E5h' in the file name of the file requested to be deleted. As another example, the file system 1122 changes the attribute value of the file requested to be deleted to 'OxE5'. This is a special tag, meaning "this file has been deleted." Thus, if the application 1121 subsequently accesses the file, the file system 1122 provides information that the file has already been deleted. Information about the file system 1122 may be stored periodically or in non-volatile memory (e.g., flash memory 1210) using idle time.

한편, 파일 시스템(1122)은 플래시 메모리 시스템(1000, 도 2 참조)의 운영 체제(OS)에 따라 다양하게 선택될 수 있다. 예를 들어, 플래시 메모리 시스템(1000)의 운영 체제가 디스크 운영 체제(disk operating system; DOS) 또는 윈도우즈(windows) 기반의 운영 체제인 경우, FAT(file allocation table) 파일 시스템, VFAT(virtual FAT) 파일 시스템, exFAT(extended FAT) 파일 시스템, NTFS(new technology file system) 등과 같은 파일 시스템이 사용될 수 있다. Meanwhile, the file system 1122 can be variously selected according to the operating system (OS) of the flash memory system 1000 (see FIG. 2). For example, if the operating system of the flash memory system 1000 is a disk operating system (DOS) or a Windows based operating system, a file allocation table (FAT) file system, a virtual FAT (VFAT) A file system, an exFAT (extended FAT) file system, a new technology file system (NTFS), and the like can be used.

다른 예로, 플래시 메모리 장치(1000)의 운영 체제가 유닛스(UNIX) 기반의 운영 체제인 경우, UNIX 파일 시스템(UFS)이 사용될 수 있다. 플래시 메모리 장치(1000)의 운영 체제가 리눅스(LINUX) 기반의 운영 체제인 경우, LINUX 용 파일 시스템이 사용될 수 있다. 플래시 메모리 장치(1000)의 운영 체제가 모바일 OS(예를 들어, iOS(iPhone, iPad 용 OS) 및 안드로이드 OS)인 경우, 모바일 OS 용 파일 시스템이 사용될 수 있다. As another example, if the operating system of the flash memory device 1000 is a UNIX-based operating system, a UNIX file system (UFS) may be used. If the operating system of the flash memory device 1000 is a Linux (LINUX) based operating system, a file system for LINUX may be used. If the operating system of the flash memory device 1000 is a mobile OS (for example, iOS (OS for iPhone, iPad) and Android OS), a file system for mobile OS may be used.

도 4는 도 2에 도시된 플래시 메모리 시스템(1000)의 소프트웨어 계층 구조를 보여주는 블록도이다. 도 4를 참조하면, 플래시 메모리 시스템(1000)의 소프트웨어 계층 구조는 애플리케이션(1121), 파일 시스템(1122), 플래시 변환 계층(1232), 그리고 플래시 메모리(1210)로 구성된다. 호스트(1100, 도 2 참조) 측의 애플리케이션(1121) 및 파일 시스템(1122)은 상위 레벨(High Level)이라고 칭해질 수 있다. 플래시 저장 장치(1200, 도 2 참조) 측의 플래시 변환 계층(1232) 및 플래시 메모리(1210)는 하위 레벨(Low Level)이라고 칭해질 수 있다.4 is a block diagram illustrating the software hierarchy of flash memory system 1000 shown in FIG. 4, the software layer structure of the flash memory system 1000 comprises an application 1121, a file system 1122, a flash translation layer 1232, and a flash memory 1210. The application 1121 and the file system 1122 on the host 1100 (see FIG. 2) side can be referred to as a high level. The flash conversion layer 1232 and the flash memory 1210 on the side of the flash storage device 1200 (see FIG. 2) may be referred to as a low level.

애플리케이션(1121)은 파일 삭제(file delete) 요청을 파일 시스템(1122)에 전달한다. 파일 시스템(1122)은 삭제 요청된 파일의 메타 데이터를 변경한다. 예를 들어, 파일 시스템(1122)은 파일명(file name, 도 3 참조)에 'E5h'를 위치시킨다. 따라서, 이 후에 애플리케이션(1121)이 해당 파일에 접근하는 경우, 파일 시스템(1122)은 해당 파일은 삭제되었다는 정보를 제공한다. 애플리케이션(1121)의 파일 삭제 요청과 이에 따른 파일 시스템(1122)의 메타 데이터의 변경은 '상위 레벨(High Level)에서의 삭제 동작'이라고 칭해질 수 있다.The application 1121 forwards the file delete request to the file system 1122. [ The file system 1122 changes the metadata of the file requested to be deleted. For example, the file system 1122 places 'E5h' in the file name (see FIG. 3). Therefore, when the application 1121 subsequently accesses the file, the file system 1122 provides information that the file has been deleted. The file deletion request of the application 1121 and the change of the metadata of the file system 1122 may be referred to as a 'delete operation at a high level'.

플래시 메모리(1210)에 저장된 데이터를 실질적으로 삭제하기 위하여, 파일 시스템(1122)은 트림 명령(TRIM cmd)을 플래시 변환 계층(1232)에 제공한다. 트림 명령은 삭제 요청된 파일을 지정하기 위한 섹터 어드레스(Sector ADDR) 정보를 포함한다. 플래시 변환 계층(1232)은 섹터 어드레스를 페이지 어드레스(Page ADDR)로 변환하고, 삭제될 플래시 메모리(1210)의 페이지(page)를 무효(invalid)한 것으로 마킹(marking)한다. In order to substantially delete the data stored in the flash memory 1210, the file system 1122 provides a trim command (TRIM cmd) to the flash translation layer 1232. The trim command includes sector address (Sector ADDR) information for specifying a file requested to be deleted. The flash translation layer 1232 converts the sector address to a page address (Page ADDR) and marks the page of the flash memory 1210 to be erased as invalid.

플래시 메모리(1210)는 무효한 것으로 마킹된 페이지에 대하여, 예를 들어 유휴 시간에 소거 동작(erase operation)을 수행한다. 예를 들어, 유휴 시간은 호스트(1100, 도 2 참조)로부터 제어 유닛(1230, 도 2 참조)에 아무런 요청이 없는 시간을 의미한다. 잘 알려진 바와 같이, 플래시 메모리(1210)는 블록 단위로 소거 동작을 수행하므로, 플래시 메모리(1210)의 페이지에 대한 소거 동작은 데이터의 복사(copy) 및 병합(merge), 그리고 블록 소거 동작(block erase operation)을 수반할 수 있다. 플래시 변환 계층(1232)의 마킹 동작 및 플래시 메모리(1210)의 소거 동작은 '하위 레벨(Low Level)에서의 삭제 동작'이라고 칭해질 수 있다.The flash memory 1210 performs an erase operation on the page marked as invalid, for example, at idle time. For example, the idle time means that there is no request from the host 1100 (see FIG. 2) to the control unit 1230 (see FIG. 2). As is well known, the flash memory 1210 performs an erase operation on a block-by-block basis, so that an erase operation on a page of the flash memory 1210 is performed by copying and merge data, erase operation. The marking operation of the flash conversion layer 1232 and the erasing operation of the flash memory 1210 may be referred to as a " delete operation at a low level ".

도 5는 플래시 변환 계층(1232)의 어드레스 변환 동작을 좀더 자세히 보여주는 블록도이다. 도 5를 참조하면, 플래시 변환 계층(1232)은 논리 어드레스(Logical Address)인 섹터 어드레스(Sector ADDR)를 전달받고, 이를 플래시 메모리(1210) 상의 물리 어드레스(Physical Address)인 페이지 어드레스(Page ADDR)로 변환한다. 5 is a block diagram illustrating the address translation operation of the flash translation layer 1232 in more detail. 5, the flash conversion layer 1232 receives a sector address (Sector ADDR), which is a logical address, and stores it in a page address (Page ADDR), which is a physical address on the flash memory 1210, .

플래시 변환 계층(1232)의 어드레스 변환은 맵핑 테이블(Mapping Table)을 통해 수행될 수 있다. 맵핑 방식은 크게 페이지 맵핑 방식과 블록 맵핑 방식이 있다. 페이지 맵핑은 페이지 단위(예를 들면, 2KB)로 어드레스 변환을 수행하며, 블록 맵핑 방식은 블록 단위(예를 들면, 1MB)로 어드레스 변환을 수행한다. The address translation of the flash translation layer 1232 may be performed through a mapping table. The mapping method includes a page mapping method and a block mapping method. The page mapping performs address conversion on a page basis (for example, 2 KB), and the block mapping method performs address conversion on a block basis (for example, 1 MB).

이러한 플래시 변환 계층(1232)의 어드레스 변환은 상위 레벨(High Level)의 애플리케이션(1121)이나 파일 시스템(1122)에서 볼 때, 실제 플래시 메모리(1210)에서 수행되는 읽기 동작, 쓰기 동작, 소거 동작을 하드 디스크 장치의 읽기 동작, 소거 동작처럼 보이게 한다. 즉, 플래시 변환 계층(1232)은 에뮬레이트(emulate) 기능을 수행한다.The address translation of the flash translation layer 1232 is a read operation, a write operation, and an erase operation performed in the actual flash memory 1210, as viewed from the high level application 1121 or the file system 1122 Thereby making the hard disk device look like a read operation and an erase operation. That is, the flash conversion layer 1232 performs an emulate function.

계속해서 도 5를 참조하면, 플래시 변환 계층(1232)은 트림 관리 테이블(TRIM Manage Table)을 포함할 수 있다. 트림 관리 테이블은 페이지에 저장된 데이터 중 일부만 삭제 요청된 경우, 해당 페이지를 별도로 관리한다. 맵핑 테이블 및 트림 관리 테이블을 이용한 하위 레벨에서의 삭제 동작은 이하의 도 7 내지 도 9에서 좀더 자세히 설명된다. 5, the flash translation layer 1232 may include a TRIM Manage Table. The trim management table manages the corresponding page separately when only a part of the data stored in the page is requested to be deleted. The deletion operation at the lower level using the mapping table and the trim management table will be described in more detail in Figs. 7 to 9 below.

도 6은 맵핑 테이블을 통한 어드레스 변환을 예시적으로 보여주는 블록도이다. 간략한 설명을 위하여, 도 6에서는 페이지 맵핑 방식을 통한 어드레스 변환이 수행된다고 가정된다. Figure 6 is a block diagram illustrating an exemplary address translation through a mapping table. For the sake of brevity, it is assumed in FIG. 6 that the address translation through the page mapping scheme is performed.

도 6을 참조하면, 맵핑 테이블(Mapping Table)은 논리 어드레스인 섹터 어드레스(Sector ADDR)를 물리 어드레스인 페이지 어드레스(Page ADDR)에 맵핑한다. 설명의 편의상, 하나의 페이지에는 4개의 섹터들이 맵핑된다고 가정된다. 예를 들어, 도 6에 도시된 바와 같이, 제 1 내지 제 4 섹터들(Sector1~Sector4)은 제 3 페이지(Page3)에 맵핑된다.Referring to FIG. 6, a mapping table maps a sector address (Sector ADDR), which is a logical address, to a page address (Page ADDR) that is a physical address. For convenience of explanation, it is assumed that four sectors are mapped to one page. For example, as shown in FIG. 6, the first to fourth sectors Sector1 to Sector4 are mapped to the third page (Page 3).

맵핑 테이블은 페이지에 저장된 데이터가 유효한 데이터인지의 여부를 쓰기 상태 정보(WSI; Write State Information)를 통하여 표시한다. 예를 들어, 쓰기 상태 정보(WSI)의 'v' 표시는 페이지에 저장된 데이터가 유효(valid)한 데이터임을 나타낸다. The mapping table indicates whether or not data stored in the page is valid data through write state information (WSI). For example, 'v' in the write status information (WSI) indicates that the data stored in the page is valid data.

플래시 메모리(1210)의 블록(1211)의 페이지들(Page0~Page3)은 각각 4개의 서브 페이지들(Sub_Page0~Sub_Page3)들로 구분되는 것으로 가정된다. 각 서브 페이지의 크기는 각 섹터와 동일하며, 각 서브 페이지는 각 섹터에 대응하는 것으로 가정된다. 예를 들어, 도 6에 도시된 바와 같이, 제 3 페이지(Page3)는 4개의 서브 페이지들(Sub_Page0~Sub_Page3)로 구분되며, 제 3 페이지(Page3)의 4개의 서브 페이지들(Sub_Page0~Sub_Page4)은 각각 제 1 내지 제 4 섹터들(Sector1~Sector4)에 대응하는 것으로 가정된다. The pages (Page0 to Page3) of the block 1211 of the flash memory 1210 are assumed to be divided into four sub pages (Sub_Page0 to Sub_Page3), respectively. The size of each subpage is the same as each sector, and each subpage is assumed to correspond to each sector. For example, as shown in FIG. 6, the third page (Page 3) is divided into four sub pages (Sub_Page0 to Sub_Page3), and four sub pages (Sub_Page0 to Sub_Page4) of the third page Are assumed to correspond to the first to fourth sectors Sector1 to Sector4, respectively.

한편, 설명의 편의상, 이하의 도 7 내지 도 9에서는 도 6에 도시된 바와 같이, 3개의 파일들(File1~File3)이 유효한 데이터로서 블록(1211)의 제 1 내지 제 3 페이지들(Page1~Page3)에 저장되어 있다고 가정된다.7 to 9 for the sake of explanation, three files (File1 to File3) are valid data as shown in Fig. 6, and the first to third pages Page 3).

도 7은 트림 관리 테이블 없이, 맵핑 테이블만을 이용하여 트림 명령을 처리하는 본 발명의 일 실시 예를 보여주는 도면이다. 간략한 설명을 위하여, 도 6에 도시된 제 1 파일(File1)의 어드레스 정보를 포함하는 트림 명령(TRIM cmd)이 제공된다고 가정된다. 즉, 제 1 파일(File1)에 대한 하위 레벨에서의 삭제 요청이 있다고 가정된다. 7 is a diagram illustrating an embodiment of the present invention for processing a trim command using only a mapping table without a trim management table. For the sake of brevity, it is assumed that a trim command (TRIM cmd) including the address information of the first file (File1) shown in Fig. 6 is provided. That is, it is assumed that there is a deletion request at the lower level with respect to the first file (File1).

도 7을 참조하면, 호스트(1100)로부터 트림 명령(TRIM cmd)이 제공된다. 트림 명령(TRIM cmd)은 삭제될 파일의 섹터 어드레스를 포함한다. 섹터 어드레스에 관한 정보는 시작 섹터 번호(Start Sector No)와 섹터들의 개수(# of Sectors)로 제공될 수 있다. 예를 들어, 제 1 파일(File1)은 제 1 내지 제 5 섹터(Sector1~Sector5)에 대응하므로, 시작 섹터 번호는 '1'이며, 섹터들의 개수는 '5'일 수 있다.Referring to FIG. 7, a trim command (TRIM cmd) is provided from host 1100. The trim command (TRIM cmd) contains the sector address of the file to be deleted. The information on the sector address may be provided as a starting sector number (Start Sector No) and a number of sectors (# of Sectors). For example, since the first file File1 corresponds to the first to fifth sectors Sector1 to Sector5, the starting sector number may be '1' and the number of sectors may be '5'.

호스트(1100)로부터 트림 명령(TRIM cmd)이 제공되면, 플래시 변환 계층(1232, 도 2 참조)은 맵핑 테이블(Mapping Table)의 쓰기 상태 정보(WSI)를 갱신한다. 즉, 전달받은 섹터 어드레스에 대응하는 페이지의 쓰기 상태 정보(WSI)가 무효(invalid)한 것으로 마킹(marking)된다. 예시적으로, 도 7에 도시된 쓰기 상태 정보(WSI)의 'x' 표시는 해당 페이지에 저장된 데이터가 무효한 데이터임을 의미한다. When the trim command (TRIM cmd) is provided from the host 1100, the flash conversion layer 1232 (see FIG. 2) updates the writing status information (WSI) of the mapping table. That is, the writing state information (WSI) of the page corresponding to the transferred sector address is marked as invalid. Illustratively, the 'x' indication of the write status information (WSI) shown in FIG. 7 indicates that the data stored in the page is invalid.

자세히 설명하면, 도 7에서 제 1 파일(File1)은 제 1 내지 제 5 섹터들(Sector1~Sector5)에 대응한다. 이 경우, 제 1 파일(File1)의 제 1 내지 제 4 섹터(Sector1~Sector4)는 제 3 페이지(Page3)에 대응하므로, 맵핑 테이블의 제 3 페이지(Page3)에 대한 쓰기 상태 정보(WSI)는 무효한 것으로 마킹된다. 또한, 제 1 파일(File1)의 제 5 섹터(Sector5)는 제 2 페이지(Page2)에 대응하므로, 제 2 페이지(Page2)의 쓰기 상태 정보(WSI)는 무효한 것으로 마킹된다. 무효로 마킹된 제 2 및 제 3 페이지들(Page2, Page3)에 대한 소거 동작(erase opeation)은, 예를 들어 제어 유닛(1230, 도 2 참조)의 유휴 시간에 수행된다. More specifically, in FIG. 7, the first file (File1) corresponds to the first to fifth sectors (Sector1 to Sector5). In this case, since the first to fourth sectors (Sector1 to Sector4) of the first file (File1) correspond to the third page (Page 3), the writing status information WSI for the third page (Page 3) It is marked as invalid. In addition, since the fifth sector (Sector 5) of the first file (File1) corresponds to the second page (Page2), the writing status information (WSI) of the second page (Page2) is marked as invalid. Erase operations on the second and third invalid pages (Page 2, Page 3) are performed at the idle time of, for example, the control unit 1230 (see FIG. 2).

한편, 제 2 페이지(Page2)의 서브 페이지(0)에는 제 1 파일(File1)의 제 5 섹터(Sector5)에 대응하는 데이터가 저장되어 있고, 제 2 페이지(Page)의 서브 페이지들(1~3)에는 제 2 파일(File2)의 제 6 내지 제 8 섹터들(Sector6~Sector8)에 대응하는 데이터가 저장되어 있다.On the other hand, data corresponding to the fifth sector (Sector5) of the first file (File1) is stored in the subpage (0) of the second page (Page2) 3) stores data corresponding to the sixth to eighth sectors (Sector6 to Sector8) of the second file (File2).

따라서, 제 1 파일(File1)에 대한 트림 명령(TRIM cmd)에 의하여 제 2 페이지(Page2)가 무효(invalid)로 갱신되면, 제 2 파일(File2)의 유효한 데이터가 함께 삭제될 수 있다. 제 2 파일(File2)의 데이터가 삭제되는 것을 방지하기 위하여, 플래시 메모리(1210)는 제 2 페이지(Page2)의 서브 페이지들(1~3)에 저장된 데이터를 다른 페이지(예를 들어, 다른 블록(1212, 도 2 참조)의 페이지)에 복사(copy)해야 한다.Therefore, if the second page (Page 2) is updated to invalid by the trim command (TRIM cmd) for the first file (File 1), the valid data of the second file (File 2) can be deleted together. In order to prevent the data of the second file (File2) from being deleted, the flash memory 1210 stores the data stored in the subpages (1-3) of the second page (Page2) (Page of page 1212, see FIG. 2).

이러한 복사 동작은 쓰기 횟수의 증가로 인하여 플래시 메모리(1210)의 수명을 단축시킬 수 있다. 또한, 복사 동작을 통하여 생성된 유효한 데이터를 저장하는 새로운 페이지는 자유 블록을 생성하기 위한 병합 동작의 증가를 야기할 수 있다. 따라서, 이러한 문제를 해결하기 위하여, 본 발명의 다른 실시 예에 따른 플래시 저장 장치(1200)는 트림 관리 테이블을 이용하여, 제 2 페이지(Page2)를 따로 관리한다. 이는 이하의 도 8 및 도 9에서 좀더 자세히 설명된다. This copying operation can shorten the life of the flash memory 1210 due to an increase in the number of times of writing. In addition, a new page storing valid data generated through a copy operation may cause an increase in the merge operation to generate a free block. Accordingly, in order to solve such a problem, the flash storage device 1200 according to another embodiment of the present invention manages the second page (Page 2) separately using the trim management table. This will be described in more detail in Figs. 8 and 9 below.

도 8 및 도 9는 맵핑 테이블 및 트림 관리 테이블을 이용하여 트림 명령을 처리하는 본 발명의 일 실시 예를 보여주는 도면이다. 간략한 설명을 위하여, 도 7과 마찬가지로 제 1 파일(File1)의 어드레스 정보를 포함하는 트림 명령(TRIM cmd)이 제공된다고 가정된다.8 and 9 illustrate an embodiment of the present invention for processing a trim command using a mapping table and a trim management table. For the sake of brevity, it is assumed that a trim command (TRIM cmd) including address information of the first file (File1) is provided as in Fig.

도 8을 참조하면, 플래시 저장 장치(1200)는 맵핑 테이블(Mapping Table) 및 트림 관리 테이블(TRIM Manage Table)을 이용하여 호스트(1100)로부터의 트림 명령(TRIM cmd)을 처리한다. 맵핑 테이블은 호스트(1100)로부터 전달받은 섹터 어드레스가 플래시 메모리(1210)의 페이지 단위에 일치하는 경우에 해당 페이지를 관리한다. 트림 관리 테이블은 호스트(1100)로부터 전달받은 섹터 어드레스가 플래시 메모리(1210)의 페이지 단위에 일치하지 않는 경우에 해당 페이지를 관리한다. Referring to FIG. 8, the flash storage device 1200 processes a trim command (TRIM cmd) from the host 1100 using a mapping table and a TRIM Manage Table. The mapping table manages the page when the sector address transmitted from the host 1100 matches the page unit of the flash memory 1210. The trim management table manages the page when the sector address transmitted from the host 1100 does not match the page unit of the flash memory 1210.

자세히 설명하면, 제 1 파일(File1)의 섹터 어드레스를 포함하는 트림 명령(TRIM cmd)이 플래시 저장 장치(1200)에 제공된다. 이 경우, 제 1 파일(File1)의 제 1 내지 제 4 섹터들(Sector1~Sector4)은 플래시 메모리(1210)의 페이지 단위에 일치한다. 즉, 제 1 내지 제 4 섹터들(Sector1~Sector4)은 제 3 페이지(Page3)에 일치한다. 따라서, 플래시 변환 계층(1232, 도 2 참조)은 맵핑 테이블의 제 3 페이지(Page3)에 대한 쓰기 상태 정보(WSI)를 무효(invalid)한 것으로 갱신한다. More specifically, a trim command (TRIM cmd) including the sector address of the first file (File 1) is provided to the flash storage device 1200. In this case, the first to fourth sectors (Sector1 to Sector4) of the first file (File1) coincide with the page unit of the flash memory 1210. [ That is, the first to fourth sectors (Sector1 to Sector4) coincide with the third page (Page3). Thus, the flash translation layer 1232 (see FIG. 2) updates the write status information (WSI) for the third page (Page 3) of the mapping table to invalid.

한편, 제 1 파일(File1)의 제 5 섹터(Sector5)는 플래시 메모리(1210)의 페이지 단위에 일치하지 않는다. 즉, 제 5 섹터(Sector)는 제 2 페이지(Page2)의 서브 페이지들(0~3) 중 서브 페이지(0)에만 대응된다. 다시 말하면, 제 2 페이지(Page2)의 서브 페이지들(0~3)에 저장된 데이터 중 서브 페이지(0)에 저장된 데이터만이 무효한 데이터이다.On the other hand, the fifth sector (Sector 5) of the first file (File 1) does not coincide with the page unit of the flash memory 1210. That is, the fifth sector corresponds to only the subpage 0 of the subpages 0 to 3 of the second page Page2. In other words, among the data stored in the sub pages 0 to 3 of the second page (Page 2), only the data stored in the sub page (0) is invalid data.

이 경우, 플래시 변환 계층(1232)은 맵핑 테이블의 제 2 페이지(Page2)에 대한 쓰기 상태 정보(WSI)를 유효(valid)한 것으로 유지한다. 따라서, 유휴 시간(예를 들어, 제어 유닛(1230)의 유휴 시간)에 유효로 마킹된 제 2 페이지(Page2)에 대한 소거 동작은 수행되지 않고, 무효로 마킹된 제 3 페이지(Page3)에 대한 소거 동작만이 수행된다. 한편, 제 2 페이지(Page2)는 트림 관리 테이블에 의하여 별도로 관리된다.In this case, the flash conversion layer 1232 maintains the write status information (WSI) for the second page (Page 2) of the mapping table as valid. Thus, an erase operation is not performed on the second page (Page 2) marked valid for the idle time (for example, the idle time of the control unit 1230), and an erase operation for the third page Only the erase operation is performed. On the other hand, the second page (Page 2) is managed separately by the trim management table.

트림 관리 테이블은 제 2 페이지(Page2)를 별도로 관리한다. 즉, 트림 관리 테이블은 호스트(1100)로부터 전달받은 섹터 어드레스가 플래시 메모리(1210)의 페이지 단위에 일치하지 않는 경우에 해당 페이지를 관리한다. 다시 말하면, 트림 관리 테이블은 페이지들 중 무효인 데이터를 일부 포함하는 페이지를 관리한다. The trim management table manages the second page (Page 2) separately. That is, the trim management table manages the page when the sector address delivered from the host 1100 does not match the page unit of the flash memory 1210. In other words, the trim management table manages pages that partially contain invalid data among the pages.

예를 들어 도 8을 참조하면, 제 5 섹터(Sector5)가 제 2 페이지의 서브 페이지(0)에 대응하므로, 제 2 페이지(Page2)의 서브 페이지(0)에 저장된 데이터는 무효한 데이터이다. 따라서, 트림 관리 테이블은 제 2 페이지(Page2)의 서브 페이지들(0~3) 중 서브 페이지(0)의 쓰기 상태 정보(WSI)를 무효한 것으로 마킹한다. For example, referring to FIG. 8, since the fifth sector (Sector 5) corresponds to the subpage (0) of the second page, the data stored in the subpage (0) of the second page (Page 2) is invalid data. Therefore, the trim management table marks the writing status information (WSI) of the subpage (0) among the subpages (0 to 3) of the second page (Page 2) as invalid.

한편, 트림 관리 테이블에 의하여 관리되는 페이지의 서브 페이지들이 모두 무효한 것으로 갱신되면, 플래시 변환 계층(1232)은 맵핑 테이블의 해당 페이지를 무효한 것으로 갱신한다. 이 경우, 해당 페이지에 관한 정보는 트림 관리 테이블에서 삭제된다. 이는 도 9를 참조하여, 좀더 자세히 설명된다. On the other hand, if all the sub pages of the page managed by the trim management table are updated to be invalid, the flash conversion layer 1232 updates the corresponding page of the mapping table to invalid. In this case, information on the page is deleted from the trim management table. This is explained in more detail with reference to Fig.

도 9에서는, 제 2 파일(File2)의 섹터 어드레스를 포함하는 트림 명령(TRIM cmd)이 플래시 저장 장치(1200)에 제공된다고 가정된다. 즉, 제 2 파일(File2)에 대한 하위 레벨에서의 삭제 요청이 제공된다고 가정된다. 이 경우, 제 2 파일(File2)은 제 6 내지 제 8 섹터들(Sector6~Sector8)에 대응하므로, 시작 섹터 번호는 '6'이며, 색터들의 개수는 '3'일 수 있다.In FIG. 9, it is assumed that the trim instruction (TRIM cmd) including the sector address of the second file (File 2) is provided to the flash storage device 1200. That is, it is assumed that a deletion request at the lower level with respect to the second file (File2) is provided. In this case, since the second file (File2) corresponds to the sixth to eighth sectors (Sector6 to Sector8), the starting sector number may be '6' and the number of color gamers may be '3'.

제 2 파일(File2)에 대한 트림 명령(TRIM cmd)이 제공되는 경우, 제 2 파일(File2)의 제 6 내지 제 8 섹터들(Sector6~Sector8)은 플래시 메모리의 페이지 단위에 일치하지 않는다. 즉, 제 6 내지 제 8 섹터들(Sector6~Sector8)은 제 2 페이지(Page)의 서브 페이지들(0~3) 중 서브 페이지들(1~3)에만 대응한다. 따라서, 플래시 변환 계층(1232)은 맵핑 테이블의 제 2 페이지(Page2)를 일단 유효한 것으로 유지한다. 이 경우, 제 2 페이지(Page2)는 트림 관리 테이블에서 별도로 관리된다.When the trim command (TRIM cmd) for the second file (File 2) is provided, the sixth to eighth sectors (Sector 6 to Sector 8) of the second file (File 2) do not coincide with the page unit of the flash memory. That is, the sixth to eighth sectors (Sector6 to Sector8) correspond only to the subpages (1 to 3) among the subpages (0 to 3) of the second page (Page). Thus, the flash translation layer 1232 maintains the second page (Page 2) of the mapping table once valid. In this case, the second page (Page 2) is separately managed in the trim management table.

제 2 파일(File2)의 제 6 내지 제 8 섹터들(Sector6~Sector8)이 제 2 페이지(Page2)의 서브 페이지들(1~3)에 대응하므로, 트림 관리 테이블은 제 2 페이지(Page2)의 서브 페이지들(1~3)의 쓰기 상태 정보(WSI)를 무효한 것으로 갱신한다. 이 경우, 제 2 페이지(Page2)의 서브 페이지(0)에 저장된 데이터는 제 1 파일(File1)에 대한 트림 명령에 의하여 이미 무효한 상태이다. 따라서, 제 2 페이지(Page2)에 저장된 데이터는 제 1 및 제 2 파일(File1, File2)에 대한 트림 명령에 의하여 모두 무효한 상태로 된다.Since the sixth through eighth sectors Sector6 through Sector8 of the second file File2 correspond to the subpages 1 through 3 of the second page Page2, The write status information WSI of the subpages 1 to 3 is invalidated. In this case, the data stored in the sub page 0 of the second page (page 2) is already invalidated by the trim command for the first file (File1). Therefore, the data stored in the second page (Page 2) becomes ineffective by the trim command for the first and second files (File1, File2).

제 2 페이지(Page2)에 저장된 데이터가 모두 무효 상태이므로, 플래시 변환 계층(1232)은 맵핑 테이블의 제 2 페이지(Page2)에 대한 쓰기 상태 정보(WSI)를 무효한 것으로 갱신한다. 따라서, 이 후의 유휴 시간(예를 들어, 제어 유닛(1230, 도 2 참조)의 유휴 시간)에 제 2 페이지(Page2)에 대한 소거 동작이 수행될 것이다. 한편, 제 2 페이지(Page2)에 관한 정보는 트림 관리 테이블에서 삭제된다.Since all the data stored in the second page (Page 2) is invalid, the flash conversion layer 1232 updates the write status information (WSI) for the second page (Page 2) of the mapping table to invalid. Therefore, an erase operation for the second page (Page 2) will be performed in a subsequent idle time (for example, the idle time of the control unit 1230 (see FIG. 2)). On the other hand, information on the second page (Page 2) is deleted from the trim management table.

상술한 바와 같이, 맵핑 테이블은 무효한 데이터를 일부 포함하는 페이지의 쓰기 상태 정보를 일단 유효한 것으로 유지한다. 따라서, 해당 페이지에 저장된 유효한 데이터를 다른 블록의 페이지로 복사하기 위한 동작이 수행되지 않는다. 이는 유효한 데이터의 복사 동작으로 인하여 야기되는 병합 동작이 방지될 수 있음을 의미한다. As described above, the mapping table maintains the write state information of a page including a part of invalid data as once valid. Therefore, an operation for copying valid data stored in the page to a page of another block is not performed. This means that the merge operation caused by the copy operation of valid data can be prevented.

이 경우, 트림 관리 테이블은 무효한 데이터를 일부 포함하는 페이지를 관리한다. 트림 관리 테이블에 의하여 관리되는 페이지에 저장된 데이터가 모두 무효 상태인 경우, 해당 페이지에 대한 맵핑 테이블의 쓰기 상태 정보가 무효한 것으로 갱신된다. 따라서, 플래시 메모리는 호스트로부터 전달된 섹터 어드레스 중 페이지 단위에 일치하는 섹터 어드레스에 대하여만 하위 레벨에서의 소거 동작을 수행할 수 있다. In this case, the trim management table manages a page including a part of invalid data. When all of the data stored in the page managed by the trim management table is in an invalid state, the writing state information of the mapping table for the page is updated to be invalid. Therefore, the flash memory can perform the erase operation at the lower level only for the sector address coinciding with the page unit among the sector addresses transferred from the host.

한편, 버퍼 메모리(1220, 도 2 참조) 중 트림 관리 테이블에 할당된 메모리의 크기는 설계자에 의하여 제한될 수 있다. 이 경우, 트림 관리 테이블에서 관리할 페이지 어드레스에 관한 정보의 크기가 버퍼 메모리(1220)에 할당된 크기를 초과할 수 있다. Meanwhile, the size of the memory allocated to the trim management table in the buffer memory 1220 (see FIG. 2) may be limited by the designer. In this case, the size of the information about the page address to be managed in the trim management table may exceed the size allocated to the buffer memory 1220. [

트림 관리 테이블에서 관리할 페이지에 관한 정보의 크기가 버퍼 메모리(1220)에 할당된 크기를 초과하는 경우, 트림 관리 테이블에서 관리되는 페이지에 대한 정보는 밀어내기 방식에 의하여 관리될 수 있다. 즉, 트림 관리 테이블에서 관리되는 페이지에 대한 정보 중 가장 오래된 페이지에 대한 정보는 삭제되고 새로 요청된 페이지에 대한 정보가 관리될 수 있다. When the size of the information about the page to be managed in the trim management table exceeds the size allocated to the buffer memory 1220, the information about the page managed in the trim management table can be managed by the push method. That is, the information on the oldest page among the information on the pages managed in the trim management table is deleted, and the information on the newly requested page can be managed.

예를 들어, 제 1 페이지, 제 2 페이지, 그리고 제 3 페이지(Page1, Page2, Page3)에 관한 정보가 트림 관리 관리 테이블에서 관리된다고 가정된다. 또한, 다른 블록에 속하는 제 4 페이지(Page4)에 관한 정보가 트림 관리 테이블에서 관리되어야 하며, 제 4 페이지(Page4)에 관한 정보가 관리되는 경우, 트림 관리 테이블에서 관리할 페이지에 관한 정보의 크기가 트림 관리 테이블에 할당된 영역의 크기를 초과한다고 가정된다. 이 경우, 플래시 변환 계층(1232)은 가장 오래된 제 1 페이지(Page1)에 대한 정보를 트림 관리 테이블에서 삭제하고, 제 4 페이지(Page4)에 대한 정보를 트림 관리 테이블에서 관리할 수 있다. For example, it is assumed that information on the first page, the second page, and the third pages (Page1, Page2, Page3) is managed in the trim management management table. When the information about the fourth page (Page 4) belonging to another block is to be managed in the trim management table and the information about the fourth page (Page 4) is managed, the size of the information about the page to be managed in the trim management table Is larger than the size of the area allocated to the trim management table. In this case, the flash conversion layer 1232 deletes information on the oldest first page (Page 1) from the trim management table, and manages information on the fourth page (Page 4) in the trim management table.

도 10은 도 2의 플래시 저장 장치(1200)의 하위 레벨에서의 삭제 동작을 보여주는 순서도이다.FIG. 10 is a flowchart showing the erasing operation at a lower level of the flash storage device 1200 of FIG.

S11 단계에서, 호스트(1100, 도 2 참조)로부터 플래시 저장 장치(1200)에 트림 명령(TRIM cmd)이 제공된다. 트림 명령은 플래시 메모리(1210, 도 2 참조)의 영역 중 소거 동작이 수행될 영역을 지정하는 정보(예를 들어, 섹터 어드레스 정보)를 포함한다.In step S11, a trim command (TRIM cmd) is provided to the flash storage device 1200 from the host 1100 (see FIG. 2). The trim command includes information (for example, sector address information) designating an area in which an erase operation is to be performed among the areas of the flash memory 1210 (see FIG. 2).

S12 단계에서, 플래시 변환 계층(1232, 도 2 참조)의 맵핑 테이블(Mapping Table) 및 트림 관리 테이블(TRIM Manage Table)이 갱신된다. 예를 들어, 호스트(1100)로부터 전달된 섹터 어드레스가 플래시 메모리(1210)의 페이지 단위에 일치하는 경우, 해당 페이지에 대한 맵핑 테이블의 쓰기 상태 정보(WSI)는 무효한 것으로 표시된다. 다른 예로, 호스트(1100)로부터 전달된 섹터 어드레스가 플래시 메모리(1210)의 페이지 단위에 일치하지 않는 경우, 해당 페이지에 대한 맵핑 테이블의 쓰기 상태 정보(WSI)는 유효한 것으로 표시되고, 해당 페이지는 트림 관리 테이블에 의하여 관리된다. In step S12, the mapping table and the TRIM Manage Table of the flash conversion layer 1232 (see FIG. 2) are updated. For example, when the sector address transmitted from the host 1100 matches the page unit of the flash memory 1210, the writing state information WSI of the mapping table for the page is displayed as invalid. As another example, if the sector address delivered from the host 1100 does not match the page unit of the flash memory 1210, the write state information (WSI) of the mapping table for that page is marked as valid, Managed by the management table.

S13 단계에서, 맵핑 테이블(Mapping Table)에 따른 소거 동작(erase operation)이 수행된다. 즉, 맵핑 테이블(Mapping Table)의 쓰기 상태 정보(WSI)가 무효 상태인 경우, 해당 페이지에 대한 소거 동작이 수행된다. 다만, 잘 알려진 바와 같이, 플래시 메모리의 소거 동작은 블록 단위로 수행되므로, 플래시 메모리는 해당 페이지에 대한 복사 및/또는 병합 동작을 수반할 수 있다. In step S13, an erase operation according to the mapping table is performed. That is, when the writing state information WSI of the mapping table is in an invalid state, the erasing operation for the page is performed. However, as is well known, since the erase operation of the flash memory is performed on a block-by-block basis, the flash memory may involve copying and / or merging operations on the page.

도 11은 하위 레벨에서의 삭제 동작이 수행되는 경우에 플래시 변환 계층(1232, 도 2 참조)의 동작을 보여주는 순서도이다. 11 is a flow chart showing the operation of the flash transform layer 1232 (see FIG. 2) when a delete operation at a lower level is performed.

S110 단계에서, 플래시 변환 계층(1232)에 삭제될 파일의 섹터 어드레스(Sector ADDR)가 전달된다. 예를 들어, 섹터 어드레스는 섹터 시작 번호(Start Sector No)와 섹터들의 개수(# of Sectors)로 제공된다.In step S110, the sector address (Sector ADDR) of the file to be deleted is transferred to the flash conversion layer 1232. [ For example, the sector address is provided as a sector start number (Start Sector No) and the number of sectors (# of Sectors).

S120 단계에서, 전달받은 섹터 어드레스가 부분 섹터 어드레스(Partial Sector ADDR)인지의 여부가 판단된다. 여기서, 부분 섹터 어드레스(Partial Sector ADDR)는 플래시 메모리(1210, 도 2 참조)의 페이지 단위에 일치하지 않는 섹터 어드레스를 의미한다.In step S120, it is determined whether the transferred sector address is a partial sector address (Partial Sector ADDR). Here, the partial sector address (partial sector ADDR) means a sector address which does not coincide with the page unit of the flash memory 1210 (see FIG. 2).

전달받은 섹터 어드레스가 부분 섹터 어드레스가 아닌 경우(즉, 전달받은 섹터 어드레스가 페이지 단위에 일치하는 경우), 플래시 변환 계층(1232)은 맵핑 테이블(Mapping Table)의 쓰기 상태 정보(WSI)를 갱신한다(S130 단계). 즉, 전달받은 섹터 어드레스에 대응하는 페이지의 쓰기 상태 정보(WSI)가 무효한 것으로 갱신된다. 전달받은 섹터 어드레스가 부분 섹터 어드레스인 경우(즉, 전달받은 섹터 어드레스가 페이지 단위에 일치하지 않는 경우), S140 단계가 수행된다. If the transferred sector address is not a partial sector address (that is, the transferred sector address matches the page unit), the flash conversion layer 1232 updates the writing state information (WSI) of the mapping table (Step S130). That is, the writing state information (WSI) of the page corresponding to the transferred sector address is updated to be invalid. If the received sector address is a partial sector address (that is, if the received sector address does not coincide with the page unit), step S140 is performed.

S140 단계에서, 부분 섹터 어드레스(Partial Sector ADDR)에 대응하는 트림 관리 테이블(TRIM Manage Table)이 존재하는지 판단된다. 트림 관리 테이블이 존재하지 않는 경우, 플래시 변환 계층(1232)은 부분 섹터 어드레스에 대응하는 페이지를 관리하는 트림 관리 테이블을 생성한다(S150 단계). In step S140, it is determined whether or not a trim management table (TRIM Manage Table) corresponding to the partial sector address (partial sector address) exists. If the trim management table does not exist, the flash conversion layer 1232 generates a trim management table for managing the page corresponding to the partial sector address (step S150).

트림 관리 테이블이 존재하는 경우, 플래시 변환 계층(1232)은 트림 관리 테이블의 쓰기 상태 정보(WSI)를 갱신한다(S160 단계). 즉, 부분 섹터 어드레스에 대응하는 서브 페이지의 쓰기 상태 정보가 무효한 것으로 갱신된다. If the trim management table exists, the flash conversion layer 1232 updates the write status information (WSI) of the trim management table (step S160). That is, the writing state information of the subpage corresponding to the partial sector address is updated to be invalid.

S170 단계에서, 트림 관리 테이블의 모든 쓰기 상태 정보들이 갱신되었는지가 판단된다. 즉, 소정 페이지의 서브 페이지들에 대한 쓰기 상태 정보들이 모두 무효한 것으로 갱신되었는지가 판단된다. 쓰기 상태 정보들이 모두 무효한 것으로 갱신되었다면, 플래시 변환 계층(1232)은 맵핑 테이블의 쓰기 상태 정보를 갱신한다(S180 단계). 즉, 해당 페이지에 대한 맵핑 테이블의 쓰기 상태 정보가 무효한 것으로 갱신된다. In step S170, it is determined whether or not all the write status information of the trim management table has been updated. That is, it is determined whether or not all of the write status information on the sub pages of the predetermined page are updated to be invalid. If all the write status information is updated to be invalid, the flash translation layer 1232 updates the write status information of the mapping table (step S180). That is, the writing state information of the mapping table for the page is updated to be invalid.

이상에서 설명한 바와 같이, 본 발명의 실시 예에 따른 플래시 메모리 시스템(1000)은 트림 동작(TRIM operation)을 지원한다. 즉, 소정 파일에 대한 삭제 요청이 있는 경우, 호스트(1100)는 파일 시스템(1122)의 메타 데이터를 변경하여 사용자에게 해당 파일이 삭제되었음을 알려주고, 실질적인 삭제 동작은 트림 명령(TRIM cmd)에 따라 플래시 저장 장치(1200)에서 수행된다.As described above, the flash memory system 1000 according to the embodiment of the present invention supports the TRIM operation. That is, when there is a deletion request for a predetermined file, the host 1100 changes the metadata of the file system 1122 to notify the user that the file has been deleted, and the actual deletion operation is performed in response to the Trim command (TRIM cmd) Is performed in the storage device 1200.

이 경우, 플래시 저장 장치(1200)는 트림 관리 테이블(TRIM Manage Table)을 이용하여, 호스트(1100)와 플래시 저장 장치(1200) 사이의 관리 단위의 불일치를 해소한다. 따라서, 플래시 저장 장치(1200)는 관리 단위의 불일치로 인하여 발생하는 페이지에 저장된 데이터의 복사 동작 등을 방지할 수 있다. 결국, 플래시 저장 장치(1200)의 수명 단축 및 성능 저하가 방지될 수 있다. In this case, the flash storage device 1200 eliminates the inconsistency of management units between the host 1100 and the flash storage device 1200 using the TRIM Manage Table. Accordingly, the flash storage device 1200 can prevent a copy operation of data stored in a page caused by a mismatch of management units. As a result, the shortening of the life of the flash storage device 1200 and deterioration of performance can be prevented.

한편, 상술한 설명에서는 파일들(File1~File3)의 데이터는 플래시 메모리(1210)의 페이지에 저장되어 있는 것으로 가정되었다. 다만, 이는 예시적인 것으로 이해되어야 한다. 예를 들어, 플래시 저장 장치(1200)가 플러시 동작(Flush operation)을 지원하는 경우, 파일들(File1~File3)의 데이터는 버퍼 메모리(1220, 도 2 참조)에 저장되어 있을 수 있다. 이하에서는 플래시 저장 장치(1200)가 플러시 동작을 지원하는 경우, 본 발명의 다른 실시 예에 따른 트림 명령의 처리 방법이 자세히 설명된다.
In the above description, it is assumed that data of the files (File1 to File3) are stored in pages of the flash memory 1210. [ However, it should be understood that this is an example. For example, when the flash storage device 1200 supports a flush operation, the data of the files (File1 to File3) may be stored in the buffer memory 1220 (see FIG. 2). Hereinafter, a method of processing the Trim command according to another embodiment of the present invention will be described in detail when the flash storage device 1200 supports the flush operation.

Ⅲ. 플러시 기능을 지원하는 플래시 저장 장치Ⅲ. Flash storage device with flush function

도 12 내지 도 14는 플래시 저장 장치가 플러시 기능을 지원하는 경우에 플래시 저장 장치의 트림 명령 처리 방법을 설명하기 위한 블록도이다. 플러시 동작을 지원한다는 것을 제외하면, 이하에서 설명될 플래시 저장 장치는 도 2의 플래시 저장 장치(1200)와 유사하다. 따라서, 이하에서는, 동일한 구성요소는 동일한 참조번호를 사용하여 설명된다. 12 to 14 are block diagrams for explaining a method of processing a trim command of a flash storage device when the flash storage device supports the flush function. The flash storage device described below is similar to the flash storage device 1200 of FIG. 2, except that it supports a flush operation. Therefore, in the following, the same components are described using the same reference numerals.

도 12는 맵핑 테이블을 통한 버퍼 메모리(1220)와 플래시 메모리(1210) 사이의 어드레스 변환을 보여주는 블록도이다. 설명의 편의상, 버퍼 메모리(1220)의 각 섹터(Sector)의 크기는 파일 시스템(1122, 도 2 참조)의 관리 단위인 섹터와 동일하다고 가정된다.12 is a block diagram showing the address translation between the buffer memory 1220 and the flash memory 1210 via the mapping table. For convenience of explanation, it is assumed that the size of each sector of the buffer memory 1220 is the same as a sector that is a management unit of the file system 1122 (see FIG. 2).

도 12를 참조하면, 버퍼 메모리(1220)는 복수의 섹터들을 포함한다. 버퍼 메모리(1220)의 섹터들은 각각 데이터를 임시로 저장한다. 버퍼 메모리(1220)의 섹터들에 저장된 데이터는 제어 유닛(1230, 도 2 참조)의 제어에 따라 플래시 메모리(1210)의 블록(1211)의 페이지들에 쓰여진다. 버퍼 메모리(122)의 섹터들에 저장된 데이터의 일부 또는 전부가 플래시 메모리(1210)의 페이지들에 쓰여지는 동작은 '플러시 동작(flush operation)'이라 칭해질 수 있다.Referring to FIG. 12, the buffer memory 1220 includes a plurality of sectors. Sectors of the buffer memory 1220 temporarily store data. The data stored in the sectors of the buffer memory 1220 is written to the pages of the block 1211 of the flash memory 1210 under the control of the control unit 1230 (see FIG. 2). The operation of writing some or all of the data stored in the sectors of the buffer memory 122 to the pages of the flash memory 1210 may be referred to as a 'flush operation'.

예를 들어, 버퍼 메모리(1220)의 섹터들에 저장된 데이터의 일부 또는 전부는 버퍼 메모리(1220)의 여유 공간이 부족할 때 플래시 메모리(1210)의 페이지들에 쓰여질 수 있다. 다른 예로, 버퍼 메모리(1220)의 섹터들에 저장된 데이터의 일부 또는 전부는 제어 유닛(1230, 도 2 참조)의 유휴 시간(호스트(1100, 도 2 참조)로부터 요청이 없을 때 생기는 시간)에 플래시 메모리(1210)의 페이지들에 쓰여질 수 있다. For example, some or all of the data stored in the sectors of the buffer memory 1220 may be written to pages of the flash memory 1210 when the buffer memory 1220 has insufficient free space. In another example, some or all of the data stored in the sectors of the buffer memory 1220 may be flashed in the idle time of the control unit 1230 (see FIG. 2) (when there is no request from the host 1100 (see FIG. 2) May be written to the pages of memory 1210.

플래시 메모리(1210)의 블록(1211)의 페이지들(Page0~Page3)은 각각 4개의 서브 페이지들(Sub_Page0~Sub_Page3)로 구분된다. 플래시 메모리(1210)의 각 서브 페이지의 크기는 버퍼 메모리(1220)의 섹터의 크기와 동일하다고 가정된다. 즉, 하나의 페이지에는 4개의 섹터들이 대응된다고 가정된다. Pages (Page0 to Page3) of the block 1211 of the flash memory 1210 are divided into four sub pages (Sub_Page0 to Sub_Page3), respectively. It is assumed that the size of each sub page of the flash memory 1210 is equal to the size of the sector of the buffer memory 1220. That is, it is assumed that four sectors correspond to one page.

맵핑 테이블(Mapping Table)은 버퍼 메모리(1220)의 섹터 어드레스를 플래시 메모리(1210)의 페이지 어드레스(Page ADDR)에 맵핑한다. 도 12에 도시된 맵핑 테이블의 부호 'BSA'는 버퍼 메모리의 섹터 어드레스를 의미한다. 예를 들어, 버퍼 메모리(1220)의 제 1 내지 제 4 섹터들(Sector1~Sector4)은 플래시 메모리(1210)의 제 3 페이지(Page3)에 맵핑된다. 설명의 편의상, 3개의 파일들(File1~File3)이 유효한 데이터로서 버퍼 메모리(1220)의 섹터들(S1~S12)에 저장되어 있다고 가정된다.The mapping table maps the sector address of the buffer memory 1220 to the page address (Page ADDR) of the flash memory 1210. The symbol 'BSA' in the mapping table shown in FIG. 12 indicates the sector address of the buffer memory. For example, the first to fourth sectors (Sector1 to Sector4) of the buffer memory 1220 are mapped to the third page (Page 3) of the flash memory 1210. For convenience of explanation, it is assumed that three files (File1 to File3) are stored as valid data in the sectors S1 to S12 of the buffer memory 1220.

본 발명의 실시 예에 따른 플래시 저장 장치(1200)는 호스트(1100)로부터 트림 명령(TRIM cmd)을 제공받는 경우, 삭제 요청된 파일의 데이터가 버퍼 메모리(1220)로부터 플래시 메모리(1210)로 쓰여지는 것을 무효화한다. 즉, 플래시 저장 장치(1200)는 맵핑 테이블의 쓰기 상태 정보(WSI)를 갱신함으로써, 버퍼 메모리(1220)에 저장된 데이터가 플래시 메모리(1210)에 쓰여지는 것을 방지한다. When the flash memory device 1200 according to the embodiment of the present invention is provided with the trim command TRIM cmd from the host 1100, the data of the file requested to be deleted is written from the buffer memory 1220 to the flash memory 1210 Is invalidated. That is, the flash storage device 1200 updates the writing state information (WSI) of the mapping table, thereby preventing the data stored in the buffer memory 1220 from being written to the flash memory 1210.

버퍼 메모리(1220)로부터 플래시 메모리(1210)로 데이터가 쓰여지는 것을 방지하는 동작은 '쓰기 되물리기 동작(unwrite operation)'이라 칭해질 수 있다. 이 경우, 트림 명령에 포함된 어드레스 정보는 쓰기 되물리기될 영역을 지정한다. 따라서, 이 경우에 트림 명령은 '쓰기 되물리기 명령'이라 칭해질 수 있다. 이하의 도 13 및 도 14에서는 쓰기 되물리기 동작을 수행하는 본 발명의 실시 예들이 좀더 자세히 설명된다.The operation of preventing data from being written from the buffer memory 1220 to the flash memory 1210 may be referred to as an " unwrite operation ". In this case, the address information included in the Trim command designates the area to be written and held. Therefore, in this case, the Trim command may be referred to as a " write-back copending command ". In the following Figs. 13 and 14, embodiments of the present invention for performing a write-back operation will be described in more detail.

도 13은 트림 관리 테이블 없이 맵핑 테이블만을 이용하여 트림 명령을 처리하는 본 발명의 일 실시 예를 보여주는 도면이다. 간략한 설명을 위하여, 제 1 파일(File1)의 섹터 어드레스 정보를 포함하는 트림 명령(TRIM cmd)이 제공된다고 가정된다. 또한, 호스트(1100)로부터 제공되는 섹터 어드레스와 버퍼 메모리(1220)의 섹터 어드레스는 동일하다고 가정된다. 13 is a diagram illustrating an embodiment of the present invention for processing a trim command using only a mapping table without a trim management table. For the sake of brevity, it is assumed that a trim command (TRIM cmd) including the sector address information of the first file (File1) is provided. It is also assumed that the sector address provided from the host 1100 and the sector address of the buffer memory 1220 are the same.

도 13을 참조하면, 호스트(1100)로부터 트림 명령(TRIM cmd)이 제공된다. 트림 명령(TRIM cmd)은 삭제될 파일의 섹터 어드레스를 포함한다. 섹터 어드레스에 관한 정보는 시작 섹터 번호(Start Sector No)와 섹터들의 개수(# of Sectors)로 제공될 수 있다. 예를 들어, 제 1 파일(File1)의 데이터는 버퍼 메모리(1220)의 제 1 내지 제 5 섹터(S1~S5)에 저장되어 있으므로, 시작 섹터 번호는 '1'이며, 섹터들의 개수는 '5'일 수 있다.Referring to FIG. 13, a trim command (TRIM cmd) is provided from the host 1100. The trim command (TRIM cmd) contains the sector address of the file to be deleted. The information on the sector address may be provided as a starting sector number (Start Sector No) and a number of sectors (# of Sectors). For example, since the data of the first file File1 is stored in the first to fifth sectors S1 to S5 of the buffer memory 1220, the starting sector number is '1', and the number of sectors is '5' ≪ / RTI >

호스트(1100)로부터 트림 명령(TRIM cmd)이 제공되는 경우, 플래시 변환 계층(1232, 도 2 참조)은 맵핑 테이블(Mapping Table)의 쓰기 상태 정보(WSI)를 갱신한다. 즉, 플래시 변환 계층(1232)은 쓰기 되물리기 요청된 버퍼 메모리(1220)의 섹터들에 대응하는 페이지의 쓰기 상태 정보(WSI)를 무효(invalid)한 것으로 마킹(marking)한다. 예를 들어, 제 1 파일(File1)의 데이터가 버퍼 메모리(1220)의 제 1 내지 제 5 섹터(S1~S5)에 저장되어 있으므로, 플래시 변환 계층(1232)은 제 1 내지 제 5 섹터들(S1~S5)에 대응하는 맵핑 테이블의 쓰기 상태 정보(WSI)를 무효한 것으로 마킹한다. When the trim command (TRIM cmd) is provided from the host 1100, the flash conversion layer 1232 (see FIG. 2) updates the writing status information (WSI) of the mapping table. That is, the flash conversion layer 1232 marks the write status information (WSI) of the page corresponding to the sectors of the buffer memory 1220 requested to be written back as invalid. For example, since the data of the first file (File1) is stored in the first to fifth sectors (S1 to S5) of the buffer memory 1220, the flash conversion layer 1232 stores the first to fifth sectors The writing state information WSI of the mapping table corresponding to S1 to S5 is marked as invalid.

이 경우, 버퍼 메모리(1220)의 제 1 내지 제 4 섹터(S1~S4)는 제 3 페이지(Page3)에 대응하고, 제 5 섹터(S5)는 제 2 페이지(Page2)에 대응한다. 따라서, 맵핑 테이블의 제 2 및 제 3 페이지(Page2, Page3)에 대한 쓰기 상태 정보(WSI)는 무효한 것으로 마킹된다. 무효로 마킹된 제 2 및 제 3 페이지들(Page2, Page3)에 대해서는 이 후에 플러시 동작이 수행되지 않는다. 즉, 버퍼 메모리(1220)의 제 1 내지 제 8 섹터들(S1~S8)에 저장된 데이터가 플래시 메모리(1210)의 제 1 및 제 2 페이지들(Page1, Page2)에 쓰여지지 않는다.In this case, the first to fourth sectors S1 to S4 of the buffer memory 1220 correspond to the third page (Page 3), and the fifth sector (S5) corresponds to the second page (Page 2). Therefore, the writing status information (WSI) for the second and third pages (Page 2, Page 3) of the mapping table is marked as invalid. The second and third pages (Page 2, Page 3) marked invalid are not flushed afterwards. That is, the data stored in the first to eighth sectors S1 to S8 of the buffer memory 1220 are not written to the first and second pages (Page1, Page2) of the flash memory 1210. [

한편, 제 2 파일(File2)의 데이터는 버퍼 메모리(1220)의 제 6 내지 제 8 섹터들(S6~S8)에 저장되어 있다. 따라서, 제 1 파일(File1)에 대한 트림 명령(TRIM cmd)에 의하여 제 2 페이지(Page2)가 무효(invalid)로 마킹되면, 제 2 파일(File2)의 유효한 데이터가 플래시 메모리(1210)에 쓰여지지 않을 수 있다. 이는 버퍼 메모리(1220)가 휘발성 메모리(예를 들어, 디램(DRAM))인 경우, 제 2 파일(File2)의 데이터가 소실될 염려가 있음을 의미한다. On the other hand, the data of the second file (File2) is stored in the sixth to eighth sectors (S6 to S8) of the buffer memory 1220. Therefore, if the second page (Page 2) is marked as invalid by the trim command (TRIM cmd) for the first file (File 1), valid data of the second file (File 2) is written to the flash memory 1210 It may not. This means that if the buffer memory 1220 is a volatile memory (for example, DRAM (DRAM)), the data of the second file (File2) may be lost.

이러한 문제를 해결하기 위하여, 본 발명의 다른 실시 예에 따른 플래시 저장 장치(1200)는 트림 관리 테이블을 이용하여, 제 2 페이지(Page2)를 따로 관리한다. 이는 이하의 도 14에서 좀더 자세히 설명된다. In order to solve this problem, the flash storage device 1200 according to another embodiment of the present invention separately manages the second page (Page 2) using the trim management table. This is explained in more detail in Fig. 14 below.

도 14는 맵핑 테이블 및 트림 관리 테이블을 이용하여 트림 명령을 처리하는 본 발명의 일 실시 예를 보여주는 도면이다. 간략한 설명을 위하여, 도 13과 마찬가지로 제 1 파일(File1)의 어드레스 정보를 포함하는 트림 명령(TRIM cmd)이 제공된다고 가정된다.14 is a diagram illustrating an embodiment of the present invention for processing a trim command using a mapping table and a trim management table. For the sake of brevity, it is assumed that a trim command (TRIM cmd) including address information of the first file (File1) is provided as in Fig.

도 14를 참조하면, 플래시 저장 장치(1200)는 맵핑 테이블(Mapping Table) 및 트림 관리 테이블(TRIM Manage Table)을 이용하여 호스트(1100)로부터의 트림 명령(TRIM cmd)을 처리한다.Referring to FIG. 14, the flash storage device 1200 processes a trim command (TRIM cmd) from the host 1100 using a mapping table and a TRIM Manage Table.

자세히 설명하면, 제 1 파일(File1)의 섹터 어드레스를 포함하는 트림 명령(TRIM cmd)이 플래시 저장 장치(1200)에 제공된다. 즉, 버퍼 메모리(1220)의 제 1 내지 제 5 섹터들(S1~S5)에 저장된 데이터에 대한 쓰기 되물리기 명령이 플래시 저장 장치(1200)에 제공된다.More specifically, a trim command (TRIM cmd) including the sector address of the first file (File 1) is provided to the flash storage device 1200. That is, the flash memory device 1200 is provided with a write-back instruction for the data stored in the first to fifth sectors S1 to S5 of the buffer memory 1220.

이 경우, 제 1 내지 제 4 섹터들(S1~S4)은 플래시 메모리(1210)의 페이지 단위에 일치한다. 즉, 제 1 내지 제 4 섹터들(S1~S4)은 제 3 페이지(Page3)에 일치한다. 따라서, 플래시 변환 계층(1232, 도 2 참조)은 맵핑 테이블의 제 3 페이지(Page3)에 대한 쓰기 상태 정보(WSI)를 무효(invalid)한 것으로 갱신한다. In this case, the first to fourth sectors S1 to S4 coincide with page units of the flash memory 1210. That is, the first to fourth sectors S1 to S4 coincide with the third page (Page 3). Thus, the flash translation layer 1232 (see FIG. 2) updates the write status information (WSI) for the third page (Page 3) of the mapping table to invalid.

한편, 제 5 섹터(S5)는 플래시 메모리(1210)의 페이지 단위에 일치하지 않는다. 즉, 제 5 섹터(S)는 제 2 페이지(Page2)의 서브 페이지들(0~3) 중 서브 페이지(0)에만 대응된다. 이 경우, 플래시 변환 계층(1232)은 맵핑 테이블의 제 2 페이지(Page2)에 대한 쓰기 상태 정보(WSI)를 유효(valid)한 것으로 유지한다. 따라서, 유휴 시간에 유효로 마킹된 제 5 내지 제 8 섹터(S5~S8)에 저장된 데이터가 제 2 페이지(Page2)에 쓰여진다. 한편, 제 2 페이지(Page2)는 무효한 데이터를 일부 포함하므로, 트림 관리 테이블은 제 2 페이지(Page2)를 별도로 관리된다.On the other hand, the fifth sector S5 does not coincide with the page unit of the flash memory 1210. That is, the fifth sector S corresponds only to the subpage 0 of the subpages 0 to 3 of the second page (Page 2). In this case, the flash conversion layer 1232 maintains the write status information (WSI) for the second page (Page 2) of the mapping table as valid. Therefore, the data stored in the fifth to eighth sectors (S5 to S8) marked valid at the idle time is written to the second page (Page 2). On the other hand, the second page (Page 2) partially contains invalid data, so that the second page (Page 2) is separately managed in the trim management table.

계속해서 도 14를 참조하면, 트림 관리 테이블은 제 2 페이지 및 제 2 페이지의 서브 페이지들을 관리한다. 즉, 제 2 페이지(Page2)의 서브 페이지들(0~3) 중 서브 페이지(0)에 저장된 데이터가 무효인 데이터이므로, 트림 관리 테이블은 서브 페이지(0)의 쓰기 상태 정보(WSI)를 무효한 것으로 마킹한다.14, the trim management table manages the subpages of the second page and the second page. That is, since the data stored in the subpage (0) of the subpages (0 to 3) of the second page (Page 2) is invalid data, the trim management table can not invalidate the write status information (WSI) .

한편, 제 1 내지 제 4 섹터들(S1~S4)에 저장된 데이터에 대한 플러시 동작이 수행되기 전에 제 2 파일(File2)에 대한 트림 명령이 제공될 수 있다. 도 12를 참조하면, 제 2 파일(File2)은 버퍼 메모리(1220)의 제 6 내지 제 8 섹터들(S6~S8)에 저장되어 있으며, 제 6 내지 제 8 섹터들(S6~S8)은 제 2 페이지(Page2)의 서브 페이지들(1~3)에 대응한다. On the other hand, a trim command for the second file (File2) may be provided before the flush operation for the data stored in the first to fourth sectors S1 to S4 is performed. 12, the second file (File2) is stored in the sixth to eighth sectors S6 to S8 of the buffer memory 1220, and the sixth to eighth sectors S6 to S8 are stored in the sixth (1 to 3) of the second page (Page 2).

따라서, 제 2 파일(File2)에 대한 트림 명령이 제공되면, 트림 관리 테이블의 제 2 페이지(Page2)의 서브 페이지들(0~3)은 모두 무효한 것으로 갱신된다. 이 경우, 플래시 변환 계층(1232)은 맵핑 테이블의 제 2 페이지(Page2)의 쓰기 상태 정보(WSI)를 무효한 것으로 갱신한다. 결국, 이 후에 플러시 동작이 수행되는 경우, 제 1 내지 제 8 섹터들(S1~S8)에 저장된 데이터는 플래시 메모리(1210)에 쓰여지지 않을 수 있다. Therefore, when a trim command for the second file (File2) is provided, all the subpages (0 to 3) of the second page (Page2) of the trim management table are updated to be invalid. In this case, the flash conversion layer 1232 updates the writing status information (WSI) of the second page (Page 2) of the mapping table to invalid. As a result, when the flush operation is performed after this, the data stored in the first to eighth sectors S1 to S8 may not be written to the flash memory 1210.

도 15는 본 발명의 실시 예에 따른 플래시 저장 장치(1200)의 쓰기 되물리기 동작을 보여주는 순서도이다.15 is a flowchart showing a write-back coping operation of the flash storage device 1200 according to an embodiment of the present invention.

S21 단계에서, 호스트(1100)로부터 플래시 저장 장치(1200)에 트림 명령(TRIM cmd)이 제공된다. 트림 명령은 버퍼 메모리(1220)의 섹터들 중 플래시 메모리(1210)에 쓰여지지 않을 섹터의 어드레스 정보를 포함한다. 따라서, 트림 명령(TRIM cmd)은 '쓰기 되물리기 명령(unwrite command)'이라 칭해질 수 있다. In step S21, the host 1100 provides the flash storage device 1200 with the trim command TRIM cmd. The Trim command includes address information of a sector of the buffer memory 1220 that is not to be written to the flash memory 1210. Thus, the trim command (TRIM cmd) may be referred to as an " unwrite command ".

S22 단계에서, 플래시 변환 계층(1232)의 맵핑 테이블(Mapping Table) 및 트림 관리 테이블(TRIM Manage Table)이 갱신된다. 예를 들어, 트림 명령에 포함된 섹터 어드레스가 플래시 메모리(1210)의 페이지 단위에 일치하는 경우, 해당 페이지에 대한 맵핑 테이블의 쓰기 상태 정보(WSI)는 무효한 것으로 표시된다. 다른 예로, 트림 명령에 포함된 섹터 어드레스가 플래시 메모리(1210)의 페이지 단위에 일치하지 않는 경우, 해당 페이지에 대한 맵핑 테이블의 쓰기 상태 정보(WSI)는 유효한 것으로 표시되고, 해당 페이지는 트림 관리 테이블에 의하여 관리된다. In step S22, the mapping table and the TRIM Manage Table of the flash conversion layer 1232 are updated. For example, when the sector address included in the Trim command matches the page unit of the flash memory 1210, the writing state information (WSI) of the mapping table for the page is displayed as invalid. As another example, if the sector address included in the Trim command does not match the page unit of the flash memory 1210, the write status information (WSI) of the mapping table for the page is displayed as valid, Lt; / RTI >

S23 단계에서, 맵핑 테이블(Mapping Table)에 따른 쓰기 되물리기 동작(unwrite operation)이 수행된다. 즉, 맵핑 테이블(Mapping Table)의 쓰기 상태 정보(WSI)가 무효 상태인 경우, 해당 버퍼 메모리의 섹터들에 저장된 데이터는 플래시 메모리(1210)의 페이지에 쓰여지지 않는다. 한편, 맵핑 테이블 및 트림 관리 테이블의 쓰기 상태 정보(WSI)가 갱신되는 것은 도 11의 설명과 유사하므로, 자세한 설명은 생략된다. In step S23, an unwrite operation according to the mapping table is performed. That is, when the writing state information (WSI) of the mapping table is invalid, the data stored in the sectors of the buffer memory is not written to the page of the flash memory 1210. On the other hand, the writing state information (WSI) of the mapping table and the trim management table is updated in the same manner as the description of FIG. 11, so that detailed description is omitted.

이상에서 설명한 바와 같이, 본 발명의 실시 예에 따른 플래시 메모리 시스템(1000)은 쓰기 되물리기 동작(unwrite operation)을 지원한다. 이 경우, 플래시 저장 장치(1200)는 트림 관리 테이블(TRIM Manage Table)을 이용하여, 호스트(1100)와 플래시 저장 장치(1200) 사이의 관리 단위의 불일치를 해소한다. 따라서, 플래시 저장 장치(1200)는 관리 단위의 불일치로 인하여 발생하는 버퍼 메모리(1220)의 유효한 데이터가 쓰기 되물리기 되는 것을 방지할 수 있다.As described above, the flash memory system 1000 according to the embodiment of the present invention supports an unwrite operation. In this case, the flash storage device 1200 eliminates the inconsistency of management units between the host 1100 and the flash storage device 1200 using the TRIM Manage Table. Accordingly, the flash storage device 1200 can prevent valid data in the buffer memory 1220, which is generated due to the mismatch of management units, from being written and snapped.

한편, 플래시 저장 장치(1200)는 호스트(1100)로부터 복수의 트림 명령들을 시간 차를 두고 제공받을 수 있다. 이 경우, 플래시 저장 장치(1200)는 트림 명령들을 수집하고, 수집된 트림 명령들을 유휴 시간에 한 번에 처리할 수 있다. 이는 이하의 도 16 내지 도 18에서 좀더 자세히 설명된다.
Meanwhile, the flash storage device 1200 may receive a plurality of trim commands from the host 1100 with a time difference. In this case, flash storage 1200 may collect trim commands and process the collected trim commands at idle time at a time. This will be described in more detail in Figs. 16 to 18 below.

Ⅳ. 트림 명령들을 수집하는 플래시 저장 장치IV. Flash storage devices that collect trim commands

도 16 내지 도 18은 서로 다른 시간에 제공된 트림 명령들을 수집하고, 수집된 트림 명령을 한 번에 처리하는 플래시 저장 장치를 설명하는 도면이다. 트림 명령들을 수집한다는 것을 제외하면, 이하에서 설명될 플래시 저장 장치는 도 2의 플래시 저장 장치(1200)와 유사하다. 따라서, 이하에서는 도 2의 플래시 메모리 장치(1200)와의 차이점이 중점적으로 설명된다. 또한, 동일한 구성요소는 동일한 참조 번호를 사용하며 설명된다.Figures 16-18 illustrate a flash storage device collecting trim commands provided at different times and processing the collected trim commands at one time. Except for collecting trim commands, the flash storage device described below is similar to flash storage device 1200 of FIG. Therefore, the differences from the flash memory device 1200 of FIG. 2 will be mainly described below. Further, the same components are described using the same reference numerals.

도 16을 참조하면, 플래시 저장 장치(1200)의 제어 유닛(1230)에 제 1 내지 제 3 트림 명령들(TRIM cmd_1~TRIM cmd_3)이 제공된다. 제 1 내지 제 3 트림 명령들((TRIM cmd_1~TRIM cmd_3)은 각각 서로 다른 시간에 제어 유닛(1230)에 제공된다고 가정된다. 16, first to third trim commands TRIM cmd_1 to TRIM cmd_3 are provided to the control unit 1230 of the flash storage device 1200. It is assumed that the first to third trim commands (TRIM cmd_1 to TRIM cmd_3) are provided to the control unit 1230 at different times, respectively.

버퍼 메모리(1220)는 제공된 트림 명령들을 수집하기 위한 트림 수집 영역(TRIM Collection Area)을 포함한다. 제어 유닛(1230)은 제 1 내지 제 3 트림 명령들(TRIM cmd_1~TRIM cmd_3)을 버퍼 메모리(1220)의 트림 수집 영역에 임시로 저장하고, 이 후 제어 유닛의 유휴 시간(예를 들어, 호스트(1100)로부터 아무런 요청을 받지 않는 시간)에 수집된 제 1 내지 제 3 트림 명령들(TRIM cmd_1~TRIM cmd_3)을 처리한다. Buffer memory 1220 includes a TRIM Collection Area for collecting the provided trim commands. The control unit 1230 temporarily stores the first to third trim commands TRIM cmd_1 to TRIM cmd_3 in the trim collection area of the buffer memory 1220 and then sets the idle time of the control unit (TRIM cmd_1 to TRIM cmd_3) collected at the time when no request is received from the control unit 1100).

자세히 설명하면, 제어 유닛(1230)의 중앙 처리 장치(1231)는 전달받은 명령을 분석한다. 중앙 처리 장치(1231)는 전달받은 명령이 트림 명령인 경우, 트림 명령에 포함된 정보들(예를 들어, 시작 섹터 번호(Start Sector No)와 섹터들의 개수(# of Sectors)를 버퍼 컨트롤러(1234)에 전달한다. 버퍼 컨트롤러(1234)는 트림 명령에 포함된 정보들을 버퍼 메모리(1220)의 트림 수집 영역(TRIM Collection Area)에 저장한다. 이 후, 유휴 시간에 플래시 저장 장치(1232)는 트림 명령 수집 영역에 저장된 정보를 이용하여, 맵핑 테이블(Mapping Table) 및 트림 관리 테이블(TRIM Manage Table)을 갱신한다. More specifically, the central processing unit 1231 of the control unit 1230 analyzes the command received. When the received command is a Trim command, the central processing unit 1231 sends the information included in the Trim command (e.g., Start Sector Number and # of Sectors) to the buffer controller 1234 To the buffer controller 1220. The buffer controller 1234 stores the information contained in the trim command in the TRIM Collection Area of the buffer memory 1220. The flash storage device 1232 then stores the trim The mapping table and the TRIM Manage Table are updated using the information stored in the command collection area.

도 17은 복수의 트림 명령들을 버퍼 메모리에 저장하는 동작을 보여주는 순서도이다. 17 is a flow chart showing the operation of storing a plurality of Trim commands in a buffer memory.

S31 단계에서, 트림 명령(TRIM_cmd)이 제어 유닛(1230, 도 16 참조)에 수신된다. S32 단계에서, 제어 유닛(1230)은 수신된 트림 명령(TRIM_cmd)의 정보들을 버퍼 메모리(1220)의 트림 수집 영역(TRIM Collection Area)에 저장한다. 한편, 이 후에 다른 트림 명령이 수신되는 경우, 제어 유닛(1230)은 트림 명령에 포함된 정보를 트림 수집 영역에 계속 저장한다. In step S31, a trim command (TRIM_cmd) is received in the control unit 1230 (see Fig. 16). In step S32, the control unit 1230 stores the information of the received trim command TRIM_cmd in the TRIM collection area of the buffer memory 1220. [ On the other hand, if another Trim command is subsequently received, the control unit 1230 continues to store the information contained in the Trim command in the Trim Collection area.

도 18은 수집된 트림 명령들을 유휴 시간에 처리하는 동작을 보여주는 순서도이다.18 is a flow chart showing the operation of processing the collected trim commands in idle time.

S41 단계에서, 트림 명령 처리 신호(TCP)가 발생된다. 예를 들어, 호스트(1100, 도 2 참조)로부터 일정 시간 동안 아무런 명령이 없는 경우, 제어 유닛(1230)의 중앙 처리 장치(1231)는 트림 명령 처리 신호(TCP)를 발생한다. In step S41, a trim command processing signal (TCP) is generated. For example, when there is no command from the host 1100 (see FIG. 2) for a predetermined time, the central processing unit 1231 of the control unit 1230 generates the trim command processing signal TCP.

S42 단계에서, 맵핑 테이블(Mapping Table) 및 트림 관리 테이블(TRIM Manage Table)이 갱신된다. 예를 들어, 플래시 변환 계층(1232, 도 2 참조)은 트림 명령 처리 신호(TCP)에 응답하여, 버퍼 컨트롤러(1234, 도 2 참조)에 트림 수집 영역(TRIM Collection Area)에 수집된 정보를 요청한다. In step S42, the mapping table and the TRIM Manage Table are updated. For example, the flash translation layer 1232 (see FIG. 2) requests information collected in the TRIM Collection Area to the buffer controller 1234 (see FIG. 2) in response to the trim command processing signal TCP do.

버퍼 컨트롤러(1234)는 버퍼 메모리(1220)의 트림 수집 영역에 수집된 트림 명령들에 관한 정보를 플래시 변환 계층(1232)에 전달한다. 플래시 변환 계층(1232)은 전달된 정보를 이용하여 맵핑 테이블(Mapping Table) 및 트림 관리 테이블(TRIM Manage Table)을 갱신한다. 맵핑 테이블 및 트림 관리 테이블의 쓰기 상태 정보(WSI)가 갱신되는 것은 도 11의 설명과 유사하므로, 자세한 설명은 생략된다.The buffer controller 1234 passes information to the flash translation layer 1232 about the trim commands collected in the trim collection area of the buffer memory 1220. The flash conversion layer 1232 updates the mapping table and the TRIM Manage Table using the transferred information. The updating of the writing state information (WSI) of the mapping table and the trim management table is similar to the description of FIG. 11, and a detailed description thereof will be omitted.

이상에서 설명한 바와 같이, 본 발명의 실시 예에 따른 플래시 저장 장치(1200)는 트림 명령들에 관한 정보를 버퍼 메모리(1220)에 수집하고, 이를 유휴 시간에 한번에 처리할 수 있다. 따라서, 플래시 저장 장치(1200)는 트림 명령들을 처리하기 위한 시간을 절약할 수 있다. As described above, the flash storage device 1200 according to the embodiment of the present invention collects information on the Trim commands in the buffer memory 1220, and can process the Trim commands in an idle time at a time. Thus, the flash storage device 1200 may save time for processing trim commands.

한편, 도 2 내지 도 18에서는 플래시 저장 장치(1200)는 하나의 플래시 메모리를 포함하는 것으로 가정되었다. 다만 이는 예시적인 것으로, 본 발명의 기술적 사상은 이에 한정되지 않는다. 예를 들어, 플래시 저장 장치(1200)는 복수의 플래시 메모리들을 포함할 수 있다. 이하의 도 19 내지 도 23에서는 복수의 플래시 메모리들을 포함하는 플래시 저장 장치가 좀더 자세히 설명된다.
2 to 18, it is assumed that the flash storage device 1200 includes one flash memory. However, it should be noted that the technical idea of the present invention is not limited thereto. For example, the flash storage device 1200 may include a plurality of flash memories. In the following Figs. 19 to 23, a flash storage device including a plurality of flash memories will be described in more detail.

Ⅴ. 복수의 플래시 메모리들을 포함하는 플래시 저장 장치Ⅴ. A flash storage device comprising a plurality of flash memories

도 19 내지 도 23은 플래시 저장 장치가 복수의 플래시 메모리들을 포함하는 경우에 플래시 저장 장치의 트림 명령을 처리하는 방법을 설명하기 위한 블록도이다. 이하에서 설명될 플래시 저장 장치는 도 2 및 도 16의 플래시 저장 장치와 유사하다. 따라서, 이하에서는 도 2 및 도 16의 플래시 저장 장치와의 차이점이 중점적으로 설명된다. 또한, 동일한 구성요소는 동일한 참조번호를 사용하여 설명된다. 19 to 23 are block diagrams illustrating a method of processing a trim instruction of a flash storage device in a case where the flash storage device includes a plurality of flash memories. The flash storage device described below is similar to the flash storage device of FIGS. 2 and 16. FIG. Therefore, the differences between the flash storage device of FIGS. 2 and 16 will be mainly described below. Further, the same components are described using the same reference numerals.

플래시 저장 장치(1200)는 복수의 플래시 메모리들을 포함할 수 있다. 또한, 도 16에서 설명된 바와 같이, 플래시 저장 장치(1200)는 트림 명령들의 정보를 수집할 수 있다. 본 발명의 실시 예에 따른 플래시 저장 장치(1200)는 수집된 트림 명령의 순서를 재설정하고, 재설정된 순서에 따라 트림 명령들을 처리할 수 있다. 따라서, 플래시 저장 장치(1200)는 복수의 플래시 메모리들에 대하여 병렬적으로 트림 명령들을 처리할 수 있다. Flash storage device 1200 may include a plurality of flash memories. 16, the flash storage device 1200 may collect information of the trim commands. The flash storage device 1200 according to an embodiment of the present invention can reset the order of the collected trim commands and process the trim commands according to the reset order. Thus, the flash storage device 1200 may process the trim commands in parallel for a plurality of flash memories.

도 19는 복수의 플래시 메모리를 포함하는 플래시 저장 장치(1200)를 예시적으로 보여주는 블록도이다. 도 19에서는 예시적으로, 플래시 저장 장치(1200)는 두 개의 플래시 메모리들(1210, 1240)을 갖는 것으로 가정된다.19 is a block diagram illustrating an exemplary flash storage device 1200 including a plurality of flash memories. In FIG. 19, by way of example, it is assumed that the flash storage device 1200 has two flash memories 1210 and 1240.

도 19를 참조하면, 제 1 플래시 메모리(1210)는 제 1 채널(CH1)을 통하여 제어 유닛(1230)에 연결되고, 제 2 플래시 메모리(1240)는 제 2 채널(CH2)을 통하여 제어 유닛(1230)에 연결된다. 설명의 편의상, 각 플래시 메모리는 4개의 페이지들을 갖는 것으로 가정된다. 19, a first flash memory 1210 is connected to a control unit 1230 via a first channel CH1 and a second flash memory 1240 is connected to a control unit 1230 via a second channel CH2 1230, respectively. For convenience of explanation, it is assumed that each flash memory has four pages.

버퍼 메모리(1220)는 도 16에서 설명된 바와 같이, 트림 수집 영역(TRIM Collection Area)을 포함한다. 트림 수집 영역에는 복수의 트림 명령들에 관한 정보가 저장된다. 즉, 복수의 트림 명령들이 제공되는 경우, 제어 유닛(1230)은 트림 명령들에 관한 정보를 트림 수집 영역에 저장한다. 이는 도 16 내지 도 18에서 상세히 설명되었으므로, 자세한 설명은 생략된다. Buffer memory 1220 includes a TRIM Collection Area, as described in FIG. The trim collection area stores information about a plurality of trim commands. That is, if a plurality of trim commands are provided, the control unit 1230 stores information about the trim commands in the trim collection area. Since this has been described in detail with reference to FIGS. 16 to 18, detailed description is omitted.

제어 유닛(1230)은 트림 순서 재설정 모듈(1235)을 포함한다. 트림 순서 재설정 모듈(1235)은 트림 수집 영역에 저장된 트림 명령들의 처리 순서를 재설정한다. 즉, 트림 순서 재설정 모듈(1235)은 제 1 및 제 2 플래시 메모리(1210, 1240)에 대하여 트림 명령들이 병렬적으로 수행되도록, 트림 수집 영역에 저장된 트림 명령들의 처리 순서를 조정한다. 트림 명령들의 처리 순서를 재설정함으로써, 플래시 저장 장치(1200)는 트림 명령들을 처리하는 시간을 단축시킬 수 있다. The control unit 1230 includes a trim order resetting module 1235. The trim order reset module 1235 resets the processing order of the trim commands stored in the trim collection area. That is, the trim order reordering module 1235 adjusts the processing order of the trim instructions stored in the trim gather area so that the trim instructions are executed in parallel with the first and second flash memories 1210 and 1240. [ By resetting the processing order of the Trim commands, the flash storage device 1200 can shorten the time to process Trim commands.

한편, 제어 유닛(1230)은 중앙 처리 장치(1231), 플래시 변환 계층(1232), 플래시 컨트롤러(1233), 그리고 버퍼 컨트롤러(1234)를 포함한다. 이는 도 2에서 상세히 서명되었으므로, 자세한 설명은 생략된다.On the other hand, the control unit 1230 includes a central processing unit 1231, a flash conversion layer 1232, a flash controller 1233, and a buffer controller 1234. Since this is detailed in FIG. 2, detailed description is omitted.

도 20 내지 도 22는 병렬적인 트림 명령의 처리를 위하여, 트림 명령의 처리 순서를 재설정하는 것을 설명하기 위한 도면이다. 간략한 설명을 위하여, 제 1 내지 제 4 트림 명령들(TRIM cmd_1~TRIM cmd_4)이 순차적으로 제공된다고 가정된다 또한, 각 트림 명령에 포함된 섹터 어드레스는 플래시 메모리의 페이지 단위에 일치한다고 가정된다. 20 to 22 are diagrams for explaining resetting of the processing order of the trim command for processing of the parallel trim command. For the sake of brevity, it is assumed that the first to fourth trim instructions (TRIM cmd_1 to TRIM cmd_4) are sequentially provided. It is also assumed that the sector address included in each trim instruction coincides with the page unit of the flash memory.

도 20을 참조하면, 제 1 내지 제 4 트림 명령들(TRIM cmd_1~TRIM cmd_4)에 포함된 정보들(예를 들어, 시작 섹터 번호(Start No)와 섹터들의 개수(# of Sectors))이 버퍼 메모리(1220)의 트림 수집 영역(TRIM Collection Area)에 저장된다. 이 경우, 트림 수집 영역에는 트림 명령의 처리 순서(POT, Processing Order of TRIM)도 함께 저장된다. 도 20에 도시된 바와 같이, 초기의 트림 명령의 처리 순서는 트림 명령들이 제공된 순서라고 가정된다. 20, information included in the first through fourth trim commands TRIM cmd_1 through TRIM cmd_4 (e.g., a start number and a number of sectors # of Sectors) And is stored in the TRIM Collection Area of the memory 1220. In this case, the trim collection area also stores the processing order (POT, Processing Order of TRIM) of the trim command. As shown in Fig. 20, the processing order of the initial trim command is assumed to be the order in which the trim commands are provided.

한편, 계속해서 도 20을 참조하면, 제 1 및 제 2 트림 명령(TRIM cmd_1, TRIM cmd_2)은 제 2 플래시 메모리(1240)의 페이지들(Page7, Page5)에 대응되고, 제 3 및 제 4 트림 명령(TRIM cmd_3, TRIM cmd_4)은 제 1 플래시 메모리(1210)의 페이지들(Page3, Page1)에 대응된다. 따라서, 제 1 내지 제 4 트림 명령들(TRIM cmd_1~TRIM cmd_4)이 순차적으로 처리된다면, 제 2 플래시 메모리(1240)에 대한 제 1 및 제 2 트림 명령들(TRIM cmd_1, TRIM cmd_2) 처리되고, 이 후에 제 1 플래시 메모리(1210)에 대한 제 3 및 제 4 트림 명령들(TRIM cmd_3, TRIM cmd_4)이 처리된다. 20, the first and second trim commands TRIM cmd_1 and TRIM cmd_2 correspond to pages (Page7, Page5) of the second flash memory 1240, and the third and fourth trim The commands TRIM cmd_3 and TRIM cmd_4 correspond to the pages (Page 3, Page 1) of the first flash memory 1210. Thus, if the first through fourth trim commands TRIM cmd_1 through TRIM cmd_4 are processed sequentially, the first and second trim commands TRIM cmd_1 and TRIM cmd_2 for the second flash memory 1240 are processed, Thereafter, the third and fourth trim instructions TRIM cmd_3, TRIM cmd_4 for the first flash memory 1210 are processed.

이러한 트림 명령의 처리는 플래시 저장 장치(1200)의 성능 하락을 야기할 수 있다. 즉, 예를 들어, 제 2 플래시 메모리(1240)가 제 5 및 제 7 페이지(Page5, Page7)에 대한 소거 동작을 수행하는 동안, 제1 플래시 메모리(1210)는 아무런 동작을 수행하지 않을 수 있다. 이는 트림 처리 시간이 증가함을 의미한다. 이러한 트림 명령 처리의 비효율을 방지하기 위하여, 본 발명의 실시 예에 따른 플래시 저장 장치(1200)는 트림 명령을 병렬적으로 처리하도록 트림 명령의 처리 순서(POT)를 재설정한다. This processing of the Trim command may result in degraded performance of flash storage 1200. That is, for example, while the second flash memory 1240 performs an erase operation on the fifth and seventh pages (Page5, Page7), the first flash memory 1210 may perform no operation . This means that the trim processing time is increased. In order to prevent the inefficiency of such a trim instruction process, the flash storage device 1200 according to the embodiment of the present invention resets the processing order (POT) of the Trim instruction so as to process the Trim instruction in parallel.

즉, 도 21에 도시된 바와 같이, 트림 재설정 모듈(1235)은 맵핑 테이블을 참조하여 트림 명령의 처리 순서(POT)를 제 1 트림 명령(TRIM cmd_1), 제 3 트림 명령(TRIM cmd_3), 제 2 트림 명령(TRIM cmd_2), 그리고 제 4 트림 명령(TRIM cmd_4) 순으로 재설정한다. 21, the trim resetting module 1235 refers to the mapping table to set the processing order (POT) of the trim command as the first trim command (TRIM cmd_1), the third trim command (TRIM cmd_3) 2 trim command (TRIM cmd_2), and the fourth trim command (TRIM cmd_4).

따라서, 도 22에 도시된 바와 같이, 제 1 트림 명령((TRIM cmd_1)에 대한 처리가 제 2 플래시 메모리(1240)에 대하여 수행되는 동안, 제 3 트림 명령(TRIM cmd_3)에 대한 처리가 제 1 플래시 메모리(1210)에 대하여 수행될 수 있다. 예를 들어, 제 2 플래시 메모리(1240)의 제 7 페이지(Page7)에 대한 소거 동작이 수행되는 동안, 제 1 플래시 메모리(1210)의 제 3 페이지(Page3)에 대한 소거 동작이 병렬적으로 수행될 수 있다. Thus, as shown in Fig. 22, while the processing for the first trim command (TRIM cmd_1) is performed for the second flash memory 1240, the processing for the third trim command (TRIM cmd_3) For example, during the erase operation on the seventh page (Page 7) of the second flash memory 1240, the third page of the first flash memory 1210 The erasing operation for the page (page 3) can be performed in parallel.

마찬가지로, 제 2 트림 명령((TRIM cmd_2)에 대한 처리가 제 2 플래시 메모리(1240)에 대하여 수행되는 동안, 제 4 트림 명령(TRIM cmd_4)에 대한 처리가 제 1 플래시 메모리(1210)에 대하여 수행될 수 있다.Similarly, while processing for the second trim command (TRIM cmd_2) is performed for the second flash memory 1240, processing for the fourth trim command (TRIM cmd_4) is performed for the first flash memory 1210 .

한편, 상술한 트림 명령의 처리 순서(POT)의 결정 방법은 예시적인 것이며, 본 발명의 기술적 사상은 이에 한정되지 않는다. 예를 들어, 트림 명령(POT)의 처리 순서는 각 플래시 메모리의 동작 상태를 고려하여 결정될 수 있다. 예를 들어, 제 2 플래시 메모리(1240)에 대한 쓰기 동작(또는 읽기 동작)이 수행 중이라면, 트리 명령의 처리가 제 1 메모리(1210)에 대하여 우선적으로 수행되도록, 트리 명령의 처리 순서(POT)가 결정될 수 있다. On the other hand, the above-described method of determining the processing order (POT) of the trim command is an exemplary one, and the technical idea of the present invention is not limited thereto. For example, the processing order of the TIM command (POT) can be determined in consideration of the operating state of each flash memory. For example, if a write operation (or a read operation) is being performed on the second flash memory 1240, the processing order of the tree command (POT) is set such that processing of the tree command is preferentially performed on the first memory 1210. [ ) Can be determined.

도 23은 복수의 플래시 메모리를 포함하는 플래시 저장 장치(1200)의 트림 명령의 처리 방법을 보여주는 순서도이다. 23 is a flowchart showing a method of processing a Trim command of the flash storage device 1200 including a plurality of flash memories.

S51 단계에서, 트림 명령 처리 신호(TCP)가 발생된다. 예를 들어, 호스트(1100, 도 2 참조)로부터 일정시간 동안 아무런 요청이 없는 경우, 제어 유닛(1230)의 중앙 처리 장치(1231)는 트림 명령 처리 신호(TCP)를 발생한다.In step S51, a trim command process signal (TCP) is generated. For example, when there is no request from the host 1100 (see FIG. 2) for a predetermined time, the central processing unit 1231 of the control unit 1230 generates the trim command processing signal TCP.

S52 단계에서, 트림 저장 영역(TRIM Collection Area)에 저장된 트림 명령들의 처리 순서(POT)가 재설정된다. 예를 들어, 트림 순서 재설정 모듈(1235, 도 19 참조)은 복수의 플래시 메모리들에 대하여 트림 명령들이 병렬적으로 수행되도록, 트림 명령들의 처리 순서(POT)를 재설정한다. 이 경우, 예를 들어, 트림 순서 재설정 모듈(1235)은 맵핑 테이블(Mapping Table)을 참조하여, 트림 명령들의 처리 순서(POT)를 재설정할 수 있다. 다른 예로, 트림 순서 재설정 모듈(1235)은 각 플래시 메모리의 동작 상태를 고려하여, 트림 명령들의 처리 순서(POT)를 재설정할 수 있다. 이 경우, 예를 들어, 트림 순서 재설정 모듈(1235)은 제 2 플래시 메모리(1240)에서 쓰기 동작(또는 읽기 동작)이 수행되는 동안 제 1 플래시 메모리(1210)에 대응하는 트림 명령이 처리되도록, 트림 명령들의 처리 순서(POT)를 결정할 수 있다. In step S52, the processing order (POT) of the trim commands stored in the TRIM collection area is reset. For example, the trim order reset module 1235 (see FIG. 19) resets the processing order (POT) of the trim instructions so that the trim instructions are executed in parallel for the plurality of flash memories. In this case, for example, the trim order reset module 1235 can refer to the mapping table to reset the processing order (POT) of the trim commands. As another example, the trim order reset module 1235 may reset the processing order (POT) of the Trim commands in view of the operating state of each flash memory. In this case, for example, the trim order resetting module 1235 may be configured to process the trim command corresponding to the first flash memory 1210 while a write operation (or a read operation) is performed in the second flash memory 1240, (POT) of the Trim commands.

S53 단계에서, 플래시 변환 계층(1232, 도 19 참조)의 맵핑 테이블(Mapping Table) 및 트림 관리 테이블(TRIM Manage Table)이 갱신된다. 예를 들어, 플래시 변환 계층(1232은 트림 명령 처리 신호(TCP)에 응답하여, 버퍼 컨트롤러(1234, 도 2 참조)에 트림 수집 영역(TRIM Collection Area)에 수집된 정보를 요청한다. In step S53, the mapping table and the TRIM Manage Table of the flash conversion layer 1232 (see FIG. 19) are updated. For example, the flash translation layer 1232 requests information collected in the TRIM Collection Area to the buffer controller 1234 (see FIG. 2) in response to the trim command processing signal TCP.

버퍼 컨트롤러(1234)는 버퍼 메모리(1220)의 트림 수집 영역에 수집된 트림 명령들에 관한 정보를 플래시 변환 계층(1232)에 전달한다. 플래시 변환 계층(1232)은 전달된 정보를 이용하여 맵핑 테이블(Mapping Table) 및 트림 관리 테이블(TRIM Manage Table)을 갱신한다. 맵핑 테이블 및 트림 관리 테이블의 쓰기 상태 정보(WSI)가 갱신되는 것은 도 11의 설명과 유사하므로, 자세한 설명은 생략된다. The buffer controller 1234 passes information to the flash translation layer 1232 about the trim commands collected in the trim collection area of the buffer memory 1220. The flash conversion layer 1232 updates the mapping table and the TRIM Manage Table using the transferred information. The updating of the writing state information (WSI) of the mapping table and the trim management table is similar to the description of FIG. 11, and a detailed description thereof will be omitted.

S54 단계에서, 트림 명령에 의하여 무효로 마킹된 영역에 대한 소거 동작이 복수의 플래시 메모리에 대하여 병렬적으로 요청된다. 예를 들어, 플래시 컨트롤러(1233, 도 19 참조)는 재설정된 트림 명령들의 처리 순서(POT) 및 갱신된 맵핑 테이블에 따라, 복수의 플래시 메모리들에 대한 소거 동작을 요청한다. 이 경우, 트림 명령들의 처리 순서(POT)가 재설정되었기 때문에, 소거 동작은 복수의 플래시 메모리들에 대하여 병렬적으로 수행될 수 있다. In step S54, an erase operation for the area marked invalid by the Trim command is requested in parallel to the plurality of flash memories. For example, the flash controller 1233 (see FIG. 19) requests an erase operation for a plurality of flash memories in accordance with the processing order (POT) of the reset trim commands and the updated mapping table. In this case, since the processing order (POT) of the Trim commands has been reset, the erase operation can be performed in parallel to the plurality of flash memories.

이상에서 설명한 바와 같이, 본 발명의 실시 예에 따른 플래시 메모리 저장 장치(1200)가 복수의 플래시 메모리들을 포함하는 경우, 트림 명령들의 처리 순서는 재설정될 수 있다. 따라서, 트림 명령의 처리는 복수의 플래시 메모리들에 대하여 병렬적으로 수행될 수 있다. 결국, 트림 명령의 처리 시간이 단축될 수 있다.
As described above, when the flash memory storage 1200 according to the embodiment of the present invention includes a plurality of flash memories, the processing order of the Trim commands can be reset. Thus, the processing of the Trim command can be performed in parallel for a plurality of flash memories. As a result, the processing time of the trim command can be shortened.

Ⅵ. 트림 명령을 처리하는 플래시 메모리 시스템의 적용 예VI. Example of application of flash memory system that processes trim command

본 발명의 실시 예에 따른 플래시 메모리 시스템(1000)은 여러 가지 제품에 적용 또는 응용될 수 있다. 호스트(1100)는 컴퓨터, 디지털 카메라, 휴대폰, MP3 플레이어, PMP, 게임기 등으로 구성될 수 있다. 플래시 저장 장치(1200)는 플래시 메모리를 기반으로 하는 솔리드 스테이트 드라이브(SSD), 플래시 메모리 카드, 또는 플래시 메모리 모듈 등으로 구성될 수 있다. 호스트(1100)와 플래시 저장 장치(1200)는 ATA, SATA, PATA, USB, SCSI, ESDI, PCI express 또는 IDE 인터페이스와 같은 표준 인터페이스(standardized interface)를 통해 연결될 수 있다. The flash memory system 1000 according to the embodiment of the present invention can be applied to or applied to various products. The host 1100 may be a computer, a digital camera, a mobile phone, an MP3 player, a PMP, a game machine, or the like. The flash storage device 1200 may be a solid state drive (SSD) based on a flash memory, a flash memory card, or a flash memory module. The host 1100 and the flash storage device 1200 may be connected through a standardized interface such as ATA, SATA, PATA, USB, SCSI, ESDI, PCI express or IDE interface.

도 24는 본 발명의 실시 예에 따른 플래시 메모리 시스템(1000)을 메모리 카드에 적용한 예를 보여준다. 메모리 카드 시스템(2000)은 호스트(2100)와 메모리 카드(2200)를 포함한다. 호스트(2100)는 호스트 컨트롤러(2110) 및 호스트 접속 유닛(2120)을 포함한다. 메모리 카드(2200)는 카드 접속 유닛(2210), 카드 컨트롤러(2220), 그리고 플래시 메모리(2230)를 포함한다. FIG. 24 shows an example in which the flash memory system 1000 according to the embodiment of the present invention is applied to a memory card. The memory card system 2000 includes a host 2100 and a memory card 2200. The host 2100 includes a host controller 2110 and a host connection unit 2120. The memory card 2200 includes a card connection unit 2210, a card controller 2220, and a flash memory 2230.

호스트 접속 유닛(2120) 및 카드 접속 유닛(2210)은 복수의 핀으로 구성된다. 이들 핀에는 커맨드 핀, 데이터 핀, 클록 핀, 전원 핀 등이 포함되어 있다. 핀의 수는 메모리 카드(2200)의 종류에 따라 달라진다. 예로서, SD 카드는 9개의 핀을 갖는다.The host connection unit 2120 and the card connection unit 2210 are composed of a plurality of pins. These pins include a command pin, a data pin, a clock pin, and a power pin. The number of pins varies depending on the type of the memory card 2200. As an example, the SD card has nine pins.

호스트(2100)는 메모리 카드(2200)에 데이터를 쓰거나, 메모리 카드(2200)에 저장된 데이터를 읽는다. 호스트 컨트롤러(2110)는 커맨드(예를 들면, 쓰기 커맨드), 호스트(2100) 내의 클록 발생기(도시되지 않음)에서 발생한 클록 신호(CLK), 그리고 데이터(DAT)를 호스트 접속 유닛(2120)을 통해 메모리 카드(2200)로 전송한다. The host 2100 writes data to the memory card 2200 or reads data stored in the memory card 2200. The host controller 2110 receives a command (for example, a write command), a clock signal CLK generated in a clock generator (not shown) in the host 2100, and data DAT via the host connection unit 2120 To the memory card 2200.

카드 컨트롤러(2220)는 카드 접속 유닛(2210)을 통해 수신된 쓰기 커맨드에 응답하여, 카드 컨트롤러(2220) 내에 있는 클록 발생기(도시되지 않음)에서 발생한 클록 신호에 동기하여 데이터를 메모리(2230)에 저장한다. 메모리(2230)는 호스트(2100)로부터 전송된 데이터를 저장한다. 예를 들어, 호스트(2100)가 디지털 카메라인 경우에는 영상 데이터를 저장한다. The card controller 2220 responds to the write command received via the card connection unit 2210 to send data to the memory 2230 in synchronization with the clock signal generated in the clock generator (not shown) . The memory 2230 stores the data transmitted from the host 2100. For example, when the host 2100 is a digital camera, it stores image data.

도 24에서, 호스트 컨트롤러(2110)는 트림 동작을 지원하는 응용 프로그램과 파일 시스템을 구비할 수 있다. 그리고 카드 컨트롤러(2220)는 플래시 변환 계층을 이용하여 메모리 카드(2200) 내에서 트림 명령을 처리할 수 있다. 도 24에 도시된 메모리 카드 시스템은 위에서 설명한 트림 동작 및 플러시 기능을 모두 지원할 수 있다. 24, the host controller 2110 may include an application program and a file system for supporting a trim operation. The card controller 2220 may then process the trim command within the memory card 2200 using the flash translation layer. The memory card system shown in Fig. 24 can support both the trim operation and the flush function described above.

도 25는 본 발명의 실시 예에 따른 트림 명령 처리 기법을 솔리드 스테이트 드라이브(SSD)에 적용한 예를 보여준다. 도 25를 참조하면, SSD 시스템(3000)은 호스트(3100)와 SSD(3200)를 포함한다. SSD(3200)는 신호 커넥터(signal connector, 3231)를 통해 호스트(3100)와 신호를 주고 받으며, 전원 커넥터(power connector, 3221)를 통해 전원을 입력받는다. SSD(3200)는 복수의 불휘발성 메모리 장치(3201~320n), SSD 컨트롤러(3210), 그리고 보조 전원 장치(3220)를 포함한다.FIG. 25 shows an example in which a trim command processing technique according to an embodiment of the present invention is applied to a solid state drive (SSD). Referring to FIG. 25, the SSD system 3000 includes a host 3100 and an SSD 3200. The SSD 3200 exchanges signals with the host 3100 through a signal connector 3231 and receives power via a power connector 3221. The SSD 3200 includes a plurality of nonvolatile memory devices 3201 to 320n, an SSD controller 3210, and an auxiliary power supply 3220.

복수의 불휘발성 메모리 장치(3201~320n)는 SSD(3200)의 저장 유닛로서 사용된다. 복수의 불휘발성 메모리 장치(3201~320n)는 대용량의 저장 능력을 가지는 플래시 메모리 장치로 구현될 수 있다. SSD(3200)는 주로 플래시 메모리(Flash memory)를 사용하고 있다. A plurality of nonvolatile memory devices 3201 to 320n are used as a storage unit of the SSD 3200. The plurality of nonvolatile memory devices 3201 to 320n may be implemented as a flash memory device having a large storage capacity. The SSD 3200 mainly uses a flash memory.

복수의 불휘발성 메모리 장치(3201~320n)는 복수의 채널(CH1~CHn)을 통해 SSD 컨트롤러(3210)와 연결될 수 있다. 하나의 채널에는 하나 또는 그 이상의 메모리 장치가 연결될 수 있다. 하나의 채널에 연결되는 메모리 장치들은 동일한 데이터 버스에 연결될 수 있다. 이때 플래시 조각 모음은 복수의 메모리 블록을 하나로 연결하는 슈퍼 블록 형태로 수행되거나, 복수의 페이지를 하나로 연결하는 슈퍼 페이지 형태로 수행될 수 있다.The plurality of nonvolatile memory devices 3201 to 320n may be connected to the SSD controller 3210 through a plurality of channels CH1 to CHn. One channel may be connected to one or more memory devices. The memory devices connected to one channel can be connected to the same data bus. At this time, the flash defragmentation may be performed in the form of a super block connecting a plurality of memory blocks together, or may be performed in the form of a super page connecting a plurality of pages together.

SSD 컨트롤러(3210)는 신호 커넥터(3231)를 통해 호스트(3100)와 신호(SGL)를 주고 받는다. 여기에서, 신호(SGL)에는 커맨드, 어드레스, 데이터 등이 포함될 수 있다. SSD 컨트롤러(3210)는 호스트(3100)의 커맨드에 따라 해당 메모리 장치에 데이터를 쓰거나 해당 메모리 장치로부터 데이터를 읽어낸다. SSD 컨트롤러(3210)의 내부 구성은 도 26을 참조하여 상세하게 설명된다.The SSD controller 3210 exchanges the signal SGL with the host 3100 via the signal connector 3231. [ Here, the signal SGL may include a command, an address, data, and the like. The SSD controller 3210 writes data to the memory device or reads data from the memory device according to a command of the host 3100. [ The internal configuration of the SSD controller 3210 will be described in detail with reference to FIG.

보조 전원 장치(3220)는 전원 커넥터(3221)를 통해 호스트(3100)와 연결된다. 보조 전원 장치(3220)는 호스트(3100)로부터 전원(PWR)을 입력받고, 충전할 수 있다. 한편, 보조 전원 장치(3220)는 SSD(3200) 내에 위치할 수도 있고, SSD(3200) 밖에 위치할 수도 있다. 예를 들면, 보조 전원 장치(3220)는 메인 보드에 위치하며, SSD(3200)에 보조 전원을 제공할 수도 있다.The auxiliary power supply 3220 is connected to the host 3100 through a power supply connector 3221. [ The auxiliary power supply device 3220 receives power from the host 3100 and can charge the power supply PWR. Meanwhile, the auxiliary power supply 3220 may be located within the SSD 3200 or outside the SSD 3200. For example, the auxiliary power supply 3220 is located on the main board and may provide auxiliary power to the SSD 3200.

도 26은 도 25에 도시된 SSD 컨트롤러(3210)의 구성을 예시적으로 보여주는 블록도이다. 도 26을 참조하면, SSD 컨트롤러(3210)는 NVM 인터페이스(3211), 호스트 인터페이스(3212), ECC(3213), 중앙 처리 장치(CPU, 3214), 그리고 버퍼 메모리(3215)를 포함한다. 26 is a block diagram illustrating an exemplary configuration of the SSD controller 3210 shown in FIG. Referring to FIG. 26, the SSD controller 3210 includes an NVM interface 3211, a host interface 3212, an ECC 3213, a central processing unit (CPU) 3214, and a buffer memory 3215.

NVM 인터페이스(3211)는 버퍼 메모리(3215)로부터 전달된 데이터를 각각의 채널들(CH1~CHn)로 스캐터링(Scattering)한다. 그리고 NVM 인터페이스(3211)는 불휘발성 메모리 장치(3201~320n)로부터 읽은 데이터를 버퍼 메모리(3215)로 전달한다. 여기에서, NVM 인터페이스(3211)는 낸드 플래시 메모리의 인터페이스 방식을 사용할 수 있다. 즉, SSD 컨트롤러(3210)는 낸드 플래시 메모리 인터페이스 방식에 따라 프로그램, 읽기, 또는 소거 동작 등을 수행할 수 있다.The NVM interface 3211 scatters the data transferred from the buffer memory 3215 to each of the channels CH1 to CHn. The NVM interface 3211 transfers the data read from the nonvolatile memory devices 3201 to 320n to the buffer memory 3215. Here, the NVM interface 3211 can use the interface method of the NAND flash memory. That is, the SSD controller 3210 can perform a program, read, or erase operation according to the NAND flash memory interface scheme.

호스트 인터페이스(3212)는 호스트(3100)의 프로토콜에 대응하여 SSD(3200)와의 인터페이싱을 제공한다. 호스트 인터페이스(3212)는 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI) 등을 이용하여 호스트(3100)와 통신할 수 있다. 또한, 호스트 인터페이스(3212)는 호스트(3100)가 SSD(3200)를 하드 디스크(HDD)로 인식하도록 지원하는 디스크 에뮬레이션(Disk Emulation) 기능을 수행할 수 있다. Host interface 3212 provides interfacing with SSD 3200 in correspondence with the host 3100 protocol. The host interface 3212 is connected to the host (host) 3212 using a universal serial bus (USB), a small computer system interface (SCSI), a PCI express, ATA, PATA (Parallel ATA), SATA (Serial ATA) 3100). The host interface 3212 may perform a disk emulation function to allow the host 3100 to recognize the SSD 3200 as a hard disk (HDD).

중앙 처리 장치(3214)는 호스트(3100, 도 19 참조)로부터 입력된 신호(SGL)를 분석하고 처리한다. 중앙 처리 장치(3214)는 호스트 인터페이스(3212)나 NVM 인터페이스(3211)를 통해 호스트(3100)나 불휘발성 메모리(3201~320n)를 제어한다. 중앙 처리 장치(3214)는 SSD(3200)을 구동하기 위한 펌웨어에 따라서 불휘발성 메모리 장치(3201~320n)의 동작을 제어한다.The central processing unit 3214 analyzes and processes the signal SGL input from the host 3100 (see Fig. 19). The central processing unit 3214 controls the host 3100 or the nonvolatile memories 3201 to 320n through the host interface 3212 or the NVM interface 3211. [ The central processing unit 3214 controls the operation of the nonvolatile memory devices 3201 to 320n according to the firmware for driving the SSD 3200.

버퍼 메모리(3215)는 호스트(3100)로부터 제공되는 쓰기 데이터 또는 불휘발성 메모리 장치로부터 읽은 데이터를 임시로 저장한다. 또한, 버퍼 메모리(3215)는 불휘발성 메모리 장치(3201~320n)에 저장될 메타 데이터나 캐시 데이터를 저장할 수 있다. 서든 파워 오프 동작 시에, 버퍼 메모리(3215)에 저장된 메타 데이터나 캐시 데이터는 불휘발성 메모리 장치(3201~320n)에 저장된다. 버퍼 메모리(3215)에는 DRAM, SRAM 등이 포함될 수 있다.The buffer memory 3215 temporarily stores write data provided from the host 3100 or data read from the nonvolatile memory device. The buffer memory 3215 may store metadata or cache data to be stored in the nonvolatile memory devices 3201 to 320n. During the sudden power-off operation, the metadata and the cache data stored in the buffer memory 3215 are stored in the nonvolatile memory devices 3201 to 320n. The buffer memory 3215 may include DRAM, SRAM, and the like.

도 25 및 도 26에 도시된 솔리드 스테이트 드라이브(3000)는 앞에서 설명한 트림 동작 및 플러시 기능을 모두 지원할 수 있다.The solid state drive 3000 shown in Figs. 25 and 26 can support both the trim operation and the flush function described above.

도 27은 본 발명의 실시 예에 따른 트림 명령 처리 기법을 플래시 메모리 모듈에 구현한 예를 보여주는 블록도이다. 여기에서, 플래시 메모리 모듈(4100)은 퍼스널 컴퓨터(PC), 노트북 컴퓨터, 휴대폰, PDA(Personal Digital Assistant), 그리고 카메라 등과 연결되어 사용될 수 있다.FIG. 27 is a block diagram illustrating an example of implementing a trim instruction processing technique in a flash memory module according to an embodiment of the present invention. Referring to FIG. Here, the flash memory module 4100 can be used in connection with a personal computer (PC), a notebook computer, a mobile phone, a PDA (Personal Digital Assistant), and a camera.

도 27을 참조하면, 플래시 메모리 모듈(4000)은 메모리 시스템(4100), 전원 장치(4200), 보조 전원 장치(4250), 중앙처리장치(4300), 램(4400), 그리고 사용자 인터페이스(4500)를 포함한다. 도 27에 도시된 플래시 메모리 모듈(4000)은 앞에서 설명한 바와 같이, 트림 동작 및 플러시 기능을 모두 지원할 수 있다.Referring to Figure 27, the flash memory module 4000 includes a memory system 4100, a power supply 4200, an auxiliary power supply 4250, a central processing unit 4300, a RAM 4400, and a user interface 4500, . The flash memory module 4000 shown in Fig. 27 can support both the trim operation and the flush function as described above.

한편, 상술한 설명에서, 호스트(1100, 도 2 참조)는 섹터(sector) 단위로 파일(file)을 관리하고, 플래시 저장 장치(1200, 도 2 참조)는 페이지(page) 단위로 플래시 메모리(1210)에 저장된 데이터를 관리한다고 가정된다. 다만, 이는 예시적인 것으로 이해되어야 한다. In the above description, the host 1100 (see FIG. 2) manages a file in units of sectors, and the flash storage 1200 (see FIG. 2) ≪ / RTI > 1210). However, it should be understood that this is an example.

예를 들어, 호스트(1100)는 클러스터(cluster) 단위로 파일을 관리할 수 있고, 플래시 저장 장치(1200)는 블록(block) 단위 또는 복수의 페이지들의 집합인 슈퍼 페이지(super page) 단위로 플래시 메모리(1210)에 저장된 데이터를 관리할 수 있다. 호스트(1100) 및 플래시 저장 장치(1200)의 관리 단위는 설계자 또는 데이터 관리 규약 등에 의하여 다양하게 정의될 수 있을 것이다. For example, the host 1100 may manage a file on a cluster basis, and the flash storage device 1200 may be a block unit or a super page unit, which is a set of a plurality of pages, The data stored in the memory 1210 can be managed. The management unit of the host 1100 and the flash storage device 1200 may be variously defined by a designer or a data management protocol.

또한, 상술한 설명에서, 트림 관리 테이블은 버퍼 메모리(1220, 도 2 참조)에 저장된다고 가정된다. 버퍼 메모리(1220)가 휘발성 메모리(예를 들어 DRAM)로 구현된 경우, 트림 관리 테이블에 관한 정보가 서든 파워 오프(sudden power off) 등에 의하여 소실될 수 있다. 이 경우, 트림 관리 테이블에서 관리되는 영역에 관한 정보는 상위 레벨에서 삭제되었기 때문에, 사용자는 트림 관리 테이블에 관한 정보의 소실과 무관하게 '해당 데이터는 삭제되었다'는 정보를 제공받을 수 있다. 한편, 트림 관리 테이블은 불휘발성 메모리(예를 들어, 플래시 메모리)에 저장될 수 있음은 물론이다.Further, in the above description, it is assumed that the trim management table is stored in the buffer memory 1220 (see FIG. 2). When the buffer memory 1220 is implemented as a volatile memory (e.g., a DRAM), information on the trim management table may be lost due to sudden power off or the like. In this case, since the information on the area managed in the trim management table has been deleted at a high level, the user can be provided with the information that the corresponding data has been deleted regardless of the loss of information related to the trim management table. On the other hand, it goes without saying that the trim management table can be stored in a nonvolatile memory (for example, a flash memory).

한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 상술한 실시예에 국한되어 정해져서는 안되며 후술하는 특허청구범위 뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
While the invention has been shown and described with reference to certain preferred embodiments thereof, it will be understood by those skilled in the art that various changes and modifications may be made therein without departing from the spirit and scope of the invention. Therefore, the scope of the present invention should not be limited to the above-described embodiments, but should be determined by the equivalents of the claims of the present invention as well as the claims of the following.

100: 메모리 시스템 1000: 플래시 메모리 시스템
1100: 호스트 1200: 플래시 저장 장치
2000; 메모리 카드 시스템 3000; SSD 시스템
4000; 플래시 메모리 모듈
TRIM cmd: 트림 명령 Sector ADDR: 섹터 어드레스
Page ADDR: 페이지 어드레스 Sub_Page ADDR: 서브 페이지 어드레스
WSI: 쓰기 상태 정보 BSA: 버퍼 메모리의 섹터 어드레스
POT: 트림 명령들의 처리 순서
100: memory system 1000: flash memory system
1100: host 1200: flash storage device
2000; Memory card system 3000; SSD system
4000; Flash memory module
TRIM cmd: Trim command Sector ADDR: Sector address
Page ADDR: Page address Sub_Page ADDR: Subpage address
WSI: Write status information BSA: Sector address of buffer memory
POT: Processing order of Trim commands

Claims (30)

불휘발성 메모리 및 컨트롤러를 포함하는 데이터 저장 장치의 데이터 관리 방법에 있어서,
상기 불휘발성 메모리의 제 1 데이터 관리 단위 전체 및 제 2 데이터 관리 단위의 일부에 저장되어 있으며, 외부 장치에서 더 이상 필요로 하지 않는 제 1 파일에 대한 섹터 주소 범위를 상기 외부 장치로부터 수신하는 단계;
맵핑 테이블의 쓰기 상태 정보들 중 상기 제 1 데이터 관리 단위에 대응하는 제 1 쓰기 상태 정보를 무효로 마킹하는 단계;
상기 맵핑 테이블의 쓰기 상태 정보들 중 상기 제 2 데이터 관리 단위에 대응하는 제 2 쓰기 상태 정보를 유효로 관리하는 단계; 및
트림 관리 테이블에서 상기 제 2 데이터 관리 단위의 복수의 서브 관리 단위들 중 상기 제 1 파일이 저장된 서브 관리 단위를 무효로 관리하는 단계를 포함하며,
상기 트림 관리 테이블과 상기 맵핑 테이블은 각각 개별적으로 관리되고, 상기 제 1 데이터 관리 단위의 크기는 상기 데이터 저장 장치의 데이터 관리 단위의 크기와 동일하거나 또는 그 정수 배이며, 상기 복수의 서브 관리 단위들 각각의 크기는 상기 데이터 저장 장치의 데이터 관리 단위보다 작고,
상기 외부 장치로부터 상기 제 1 파일이 저장된 서브 관리 단위의 데이터가 요청된 경우에, 상기 제 2 데이터 관리 단위에 저장된 서브 관리 단위의 데이터는 상기 외부 장치에 의하여 접근 가능한, 데이터 관리 방법.
A data management method for a data storage device including a nonvolatile memory and a controller,
Receiving from the external apparatus a sector address range for a first file which is stored in the first data management unit of the nonvolatile memory and a part of the second data management unit and is no longer needed by the external apparatus;
Invalidating the first write status information corresponding to the first data management unit among the write status information of the mapping table;
Managing validity of second write status information corresponding to the second data management unit among write status information of the mapping table; And
Management of a sub-management unit in which the first file is stored among the plurality of sub-management units of the second data management unit in the trim management table,
Wherein the size of the first data management unit is equal to or an integer multiple of the size of the data management unit of the data storage device, and the plurality of sub management units Each size being smaller than a data management unit of the data storage device,
Wherein data of a sub management unit stored in the second data management unit is accessible by the external device when data of the sub management unit in which the first file is stored is requested from the external device.
제 1 항에 있어서,
상기 데이터 저장 장치의 데이터 관리 단위의 크기는 상기 외부 장치의 데이터 관리 단위의 크기보다 큰, 데이터 관리 방법.
The method according to claim 1,
Wherein the size of the data management unit of the data storage device is larger than the size of the data management unit of the external device.
제 2 항에 있어서,
상기 외부 장치의 데이터 관리 단위의 크기는 섹터 크기이고, 상기 데이터 저장 장치의 데이터 관리 단위의 크기는 복수의 서브 페이지들을 포함하는 페이지 크기이며, 상기 서브 페이지들 각각의 크기는 상기 섹터 크기에 대응하는, 데이터 관리 방법.
3. The method of claim 2,
Wherein the size of the data management unit of the external device is a sector size, the size of the data management unit of the data storage device is a page size including a plurality of sub pages, and the size of each of the sub pages corresponds to the sector size , Data management method.
제 3 항에 있어서,
상기 맵핑 테이블은 상기 데이터 저장 장치의 데이터 관리 단위가 유효인지의 여부를 나타내는 제 1 쓰기 상태 정보를 포함하는, 데이터 관리 방법.
The method of claim 3,
Wherein the mapping table includes first write status information indicating whether or not a data management unit of the data storage device is valid.
제 4 항에 있어서,
상기 트림 관리 테이블은 상기 제 2 데이터 관리 단위를 상기 서브 관리 단위로 관리하기 위한 제 2 쓰기 상태 정보를 포함하며,
상기 서브 관리 단위는 상기 제 2 데이터 관리 단위에 포함된 복수의 서브 페이지들 중 적어도 하나에 대응하고 모든 서브 페이지들에 대응하지는 않는, 데이터 관리 방법.
5. The method of claim 4,
Wherein the trim management table includes second write status information for managing the second data management unit in the sub management unit,
Wherein the sub-management unit corresponds to at least one of a plurality of sub-pages included in the second data management unit, and does not correspond to all sub-pages.
제 5 항에 있어서,
상기 제 2 데이터 관리 단위에 포함된 복수의 서브 관리 단위들 중 상기 제 1 파일이 저장된 서브 관리를 제외한 서브 관리 단위들은 상기 트림 관리 테이블에서 유효한 것으로 관리되는, 데이터 관리 방법.
6. The method of claim 5,
Wherein the sub management units other than the sub management in which the first file is stored among the plurality of sub management units included in the second data management unit are managed as valid in the trim management table.
제 6 항에 있어서,
상기 불휘발성 메모리는 각각 독립적으로 소거 동작이 수행되는 복수의 메모리 블록들을 포함하고, 상기 복수의 메모리 블록들 중 제 1 메모리 블록은 상기 제 1 파일이 저장된 상기 제 1 데이터 관리 단위 및 제 2 데이터 관리 단위를 포함하며,
상기 데이터 관리 방법은,
상기 제 2 데이터 관리 단위에 저장된 데이터를 상기 제 1 메모리 블록으로부터 제 2 메모리 블록으로 복사하는 단계; 및
상기 제 1 메모리 블록에 저장된 상기 제 1 데이터 관리 단위의 데이터를 소거하는 단계를 포함하는, 데이터 관리 방법.
The method according to claim 6,
Wherein the nonvolatile memory includes a plurality of memory blocks in which an erase operation is performed independently of each other, wherein a first memory block of the plurality of memory blocks includes the first data management unit and the second data management unit, Unit,
The data management method includes:
Copying the data stored in the second data management unit from the first memory block to the second memory block; And
And erasing data of the first data management unit stored in the first memory block.
제 5 항에 있어서,
상기 트림 관리 테이블의 제 2 쓰기 상태 정보들 중 상기 제 2 데이터 관리 단위의 모든 서브 관리 단위들에 대응하는 제 2 쓰기 상태 정보들이 모두 무효로 마킹될 때까지, 상기 제 2 데이터 관리 단위는 상기 맵핑 테이블에서 유효로 유지되는, 데이터 관리 방법.
6. The method of claim 5,
Until the second write status information corresponding to all the sub management units of the second data management unit among the second write status information of the trim management table is marked as invalid, A data management method that remains valid in the table.
제 6 항에 있어서,
상기 불휘발성 메모리는 상기 제 2 데이터 관리 단위의 복수의 서브 관리 단위들 중 적어도 하나에 제 2 파일에 대한 데이터를 저장하며,
상기 데이터 관리 방법은,
상기 외부 장치에서 더 이상 필요로 하지 않는 상기 제 2 파일의 섹터 주소 범위를 상기 외부 장치로부터 수신하는 단계;
상기 트림 관리 테이블에서 상기 제 2 데이터 관리 단위에 포함된 복수의 서브 관리 단위들을 모두 무효로 마킹하는 단계; 및
상기 맵핑 테이블에서 상기 제 2 데이터 관리 단위에 대응하는 제 1 쓰기 상태 정보를 무효로 변경하는 단계를 포함하는, 데이터 관리 방법.
The method according to claim 6,
Wherein the nonvolatile memory stores data for a second file in at least one of a plurality of sub-management units of the second data management unit,
The data management method includes:
Receiving from the external apparatus a sector address range of the second file which is no longer needed by the external apparatus;
Marking all of the plurality of sub-management units included in the second data management unit in the trim management table as invalid; And
And invalidating the first write status information corresponding to the second data management unit in the mapping table.
삭제delete 데이터 저장 장치의 데이터 관리 방법에 있어서,
상기 데이터 저장 장치는 불휘발성 메모리, 상기 불휘발성 메모리의 제 1 데이터 관리 단위 전체 및 제 2 데이터 관리 단위의 일부에 저장될 제 1 파일에 대한 데이터를 임시로 저장하는 버퍼 및 상기 불휘발성 메모리와 상기 버퍼를 제어하는 컨트롤러를 포함하며, 상기 데이터 관리 방법은,
외부 장치에서 더 이상 필요로 하지 않는 상기 제 1 파일에 대한 섹터 주소 범위를 상기 외부 장치로부터 수신하는 단계;
맵핑 테이블의 쓰기 상태 정보들 중 상기 제 1 데이터 관리 단위에 대응하는 쓰기 상태 정보를 무효로 마킹하는 단계;
상기 맵핑 테이블의 쓰기 상태 정보들 중 상기 제 2 데이터 관리 단위에 대응하는 쓰기 상태 정보를 유효로 관리하는 단계; 및
트림 관리 테이블에서 상기 제 2 데이터 관리 단위의 복수의 서브 관리 단위들 중 상기 제 1 파일이 저장된 서브 관리 단위를 무효로 관리하는 단계; 및
플러쉬 요청에 응답하여, 상기 맵핑 테이블에서 유효로 관리되는 상기 제 2 데이터 관리 단위에 대응하는 데이터를 상기 불휘발성 메모리에 기입하는 단계를 포함하며,
상기 트림 관리 테이블과 상기 맵핑 테이블은 각각 개별적으로 관리되고, 상기 제 1 데이터 관리 단위의 크기는 상기 데이터 저장 장치의 데이터 관리 단위의 크기와 동일하거나 또는 그 정수 배이며, 상기 복수의 서브 관리 단위들 각각의 크기는 상기 데이터 저장 장치의 데이터 관리 단위보다 작은, 데이터 관리 방법.
A data management method for a data storage device,
The data storage device includes a nonvolatile memory, a buffer for temporarily storing data for a first file to be stored in the first data management unit of the nonvolatile memory and a part of the second data management unit, And a controller for controlling the buffer,
Receiving from the external device a sector address range for the first file that is no longer needed by the external device;
Invalidating the write status information corresponding to the first data management unit among the write status information of the mapping table;
Managing validity of write status information corresponding to the second data management unit among write status information of the mapping table; And
Managing a sub-management unit in which the first file is stored among the plurality of sub-management units of the second data management unit, in the trim management table; And
Writing the data corresponding to the second data management unit effectively managed in the mapping table to the nonvolatile memory in response to the flush request,
Wherein the size of the first data management unit is equal to or an integer multiple of the size of the data management unit of the data storage device, and the plurality of sub management units Each size being smaller than a data management unit of the data storage device.
청구항 12은(는) 설정등록료 납부시 포기되었습니다.Claim 12 is abandoned in setting registration fee. 제 11 항에 있어서,
상기 데이터 저장 장치의 데이터 관리 단위의 크기는 상기 외부 장치의 데이터 관리 단위의 크기보다 크며, 상기 외부 장치의 데이터 관리 단위의 크기는 섹터 크기이고, 상기 데이터 저장 장치의 데이터 관리 단위의 크기는 복수의 서브 페이지들을 포함하는 페이지 크기이며, 상기 서브 페이지들 각각의 크기는 상기 섹터 크기에 대응하는, 데이터 관리 방법.
12. The method of claim 11,
Wherein the size of the data management unit of the data storage device is larger than the size of the data management unit of the external device, the size of the data management unit of the external device is the sector size, The size of each of the sub-pages corresponds to the size of the sector.
청구항 13은(는) 설정등록료 납부시 포기되었습니다.Claim 13 has been abandoned due to the set registration fee. 제 12 항에 있어서,
상기 맵핑 테이블은 상기 데이터 저장 장치의 데이터 관리 단위가 유효인지의 여부를 나타내는 제 1 쓰기 상태 정보를 포함하고,
상기 트림 관리 테이블은 상기 제 2 데이터 관리 단위를 상기 서브 관리 단위로 관리하기 위한 제 2 쓰기 상태 정보를 포함하며,
상기 서브 관리 단위는 상기 제 2 데이터 관리 단위에 포함된 복수의 서브 페이지들 중 적어도 하나에 대응하고 모든 서브 페이지들에 대응하지는 않는, 데이터 관리 방법.
13. The method of claim 12,
Wherein the mapping table includes first write status information indicating whether a data management unit of the data storage device is valid,
Wherein the trim management table includes second write status information for managing the second data management unit in the sub management unit,
Wherein the sub-management unit corresponds to at least one of a plurality of sub-pages included in the second data management unit, and does not correspond to all sub-pages.
청구항 14은(는) 설정등록료 납부시 포기되었습니다.Claim 14 has been abandoned due to the setting registration fee. 제 13 항에 있어서,
상기 제 2 데이터 관리 단위에 포함된 복수의 서브 관리 단위들 중 상기 제 1 파일이 저장된 서브 관리 단위를 제외한 서브 관리 단위들은 상기 트림 관리 테이블에서 유효한 것으로 관리되는, 데이터 관리 방법.
14. The method of claim 13,
Wherein the sub management units other than the sub management unit in which the first file is stored among the plurality of sub management units included in the second data management unit are managed as valid in the trim management table.
청구항 15은(는) 설정등록료 납부시 포기되었습니다.Claim 15 is abandoned in the setting registration fee payment. 제 14 항에 있어서,
상기 트림 관리 테이블의 제 2 쓰기 상태 정보들 중 상기 제 2 데이터 관리 단위의 모든 서브 관리 단위들에 대응하는 제 2 쓰기 상태 정보들이 모두 무효로 마킹될 때까지, 상기 제 2 데이터 관리 단위는 상기 맵핑 테이블에서 유효로 유지되는, 데이터 관리 방법.
15. The method of claim 14,
Until the second write status information corresponding to all the sub management units of the second data management unit among the second write status information of the trim management table is marked as invalid, A data management method that remains valid in the table.
청구항 16은(는) 설정등록료 납부시 포기되었습니다.Claim 16 has been abandoned due to the setting registration fee. 제 11 항에 있어서,
상기 버퍼는 상기 제 2 데이터 관리 단위의 복수의 서브 관리 단위들 중 적어도 하나에 제 2 파일에 대한 데이터를 임시로 저장하며,
상기 데이터 관리 방법은,
상기 외부 장치에서 더 이상 필요로 하지 않는 상기 제 2 파일의 섹터 주소 범위를 상기 외부 장치로부터 수신하는 단계;
상기 트림 관리 테이블에서 상기 제 2 데이터 관리 단위에 포함된 복수의 서브 관리 단위들을 모두 무효로 마킹하는 단계; 및
상기 맵핑 테이블에서 상기 제 2 데이터 관리 단위에 대응하는 제 1 쓰기 상태 정보를 무효로 변경하는 단계를 포함하는, 데이터 관리 방법.
12. The method of claim 11,
Wherein the buffer temporarily stores data for a second file in at least one of a plurality of sub-management units of the second data management unit,
The data management method includes:
Receiving from the external apparatus a sector address range of the second file which is no longer needed by the external apparatus;
Marking all of the plurality of sub-management units included in the second data management unit in the trim management table as invalid; And
And invalidating the first write status information corresponding to the second data management unit in the mapping table.
청구항 17은(는) 설정등록료 납부시 포기되었습니다.Claim 17 has been abandoned due to the setting registration fee. 제 16 항에 있어서,
상기 제 2 파일의 섹터 주소 범위가 상기 플러쉬 요청보다 먼저 수신된 경우에, 상기 맵핑 테이블에서 유효로 관리되는 상기 제 2 데이터 관리 단위에 대응하는 데이터를 상기 불휘발성 메모리에 기입하는 단계는 스킵되는, 데이터 관리 방법.
17. The method of claim 16,
Writing the data corresponding to the second data management unit effectively managed in the mapping table to the nonvolatile memory when the sector address range of the second file is received before the flush request is skipped, How to manage your data.
청구항 18은(는) 설정등록료 납부시 포기되었습니다.Claim 18 has been abandoned due to the setting registration fee. 제 1 파일에 대한 데이터를 제 1 데이터 관리 단위 전체 및 제 2 데이터 관리 단위의 일부에 저장 불휘발성 메모리; 및
상기 불휘발성 메모리를 제어하는 컨트롤러를 포함하며,
외부 장치로부터 상기 제 1 파일이 더 이상 필요하지 않다는 정보 및 상기 제 1 파일에 대한 섹터 주소 정보가 수신된 때에, 상기 컨트롤러는 맵핑 테이블의 쓰기 상태 정보들 중 상기 제 1 데이터 관리 단위에 대응하는 제 1 쓰기 상태 정보를 무효로 마킹하고, 상기 맵핑 테이블의 쓰기 상태 정보들 중 상기 제 2 데이터 관리 단위에 대응하는 제 2 쓰기 상태 정보를 유효로 관리하고, 트림 관리 테이블에서 상기 제 2 데이터 관리 단위의 복수의 서브 관리 단위들 중 상기 제 1 파일이 저장된 서브 관리 단위를 무효로 관리며,
상기 트림 관리 테이블과 상기 맵핑 테이블은 각각 개별적으로 관리되고, 상기 제 1 데이터 관리 단위의 크기는 데이터 저장 장치의 데이터 관리 단위의 크기와 동일하거나 또는 그 정수 배이며, 상기 복수의 서브 관리 단위들 각각의 크기는 상기 데이터 저장 장치의 데이터 관리 단위보다 작은, 데이터 저장 장치.
Storing data for a first file in a first data management unit as a whole and a second data management unit in a nonvolatile memory; And
And a controller for controlling the nonvolatile memory,
When receiving information indicating that the first file is no longer needed from an external device and sector address information for the first file, the controller writes the write status information of the mapping table to the first data management unit 1 write state information of the second data management unit and invalidates the second write status information corresponding to the second data management unit among the write status information of the mapping table, Managing a sub-management unit in which the first file is stored among a plurality of sub-management units,
The trim management table and the mapping table are individually managed and the size of the first data management unit is equal to or an integer multiple of the size of the data management unit of the data storage device, Is smaller than the data management unit of the data storage device.
청구항 19은(는) 설정등록료 납부시 포기되었습니다.Claim 19 is abandoned in setting registration fee. 제 18 항에 있어서,
상기 데이터 저장 장치의 데이터 관리 단위의 크기는 상기 외부 장치의 데이터 관리 단위의 크기보다 크며, 상기 외부 장치의 데이터 관리 단위의 크기는 섹터 크기이고, 상기 데이터 저장 장치의 데이터 관리 단위의 크기는 복수의 서브 페이지들을 포함하는 페이지 크기이며, 상기 서브 페이지들 각각의 크기는 상기 섹터 크기에 대응하는, 데이터 저장 장치.
19. The method of claim 18,
Wherein the size of the data management unit of the data storage device is larger than the size of the data management unit of the external device, the size of the data management unit of the external device is the sector size, A size of a page including subpages, and a size of each of the subpages corresponding to the sector size.
청구항 20은(는) 설정등록료 납부시 포기되었습니다.Claim 20 has been abandoned due to the setting registration fee. 제 18 항에 있어서,
상기 불휘발성 메모리는 각각 독립적으로 소거 동작이 수행되는 복수의 메모리 블록들을 포함하고, 상기 복수의 메모리 블록들 중 제 1 메모리 블록은 상기 제 1 파일이 저장된 상기 제 1 데이터 관리 단위 및 제 2 데이터 관리 단위를 포함하며,
상기 컨트롤러는, 상기 제 2 데이터 관리 단위에 저장된 데이터를 상기 제 1 메모리 블록으로부터 제 2 메모리 블록으로 복사하고, 상기 제 1 메모리 블록에 저장된 상기 제 1 데이터 관리 단위의 데이터를 소거하는, 데이터 저장 장치.
19. The method of claim 18,
Wherein the nonvolatile memory includes a plurality of memory blocks in which an erase operation is performed independently of each other, wherein a first memory block of the plurality of memory blocks includes the first data management unit and the second data management unit, Unit,
Wherein the controller copies data stored in the second data management unit from the first memory block to a second memory block and erases data in the first data management unit stored in the first memory block, .
삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete
KR1020100106946A 2010-10-29 2010-10-29 Memory system and data storage device, and data management method thereof KR101747791B1 (en)

Priority Applications (9)

Application Number Priority Date Filing Date Title
KR1020100106946A KR101747791B1 (en) 2010-10-29 2010-10-29 Memory system and data storage device, and data management method thereof
TW100139384A TWI579692B (en) 2010-10-29 2011-10-28 Memory system, data storage device, user device and data management method thereof
US13/283,866 US11232022B2 (en) 2010-10-29 2011-10-28 Memory system, data storage device, user device and data management method thereof having a data management information matching determination
CN201110338409.0A CN102467455B (en) 2010-10-29 2011-10-31 Storage system, data storage device, user equipment and its data managing method
US14/470,500 US20140372685A1 (en) 2010-10-29 2014-08-27 Memory system, data storage device, user device and data management method thereof
US17/570,816 US20220129374A1 (en) 2010-10-29 2022-01-07 Memory system, data storage device, user device and data management method thereof
US17/570,848 US11636032B2 (en) 2010-10-29 2022-01-07 Memory system, data storage device, user device and data management method thereof
US17/570,780 US11640353B2 (en) 2010-10-29 2022-01-07 Memory system, data storage device, user device and data management method thereof
US18/314,669 US20230273876A1 (en) 2010-10-29 2023-05-09 Memory system, data storage device, user device and data management method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100106946A KR101747791B1 (en) 2010-10-29 2010-10-29 Memory system and data storage device, and data management method thereof

Publications (2)

Publication Number Publication Date
KR20120045421A KR20120045421A (en) 2012-05-09
KR101747791B1 true KR101747791B1 (en) 2017-06-16

Family

ID=46264888

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100106946A KR101747791B1 (en) 2010-10-29 2010-10-29 Memory system and data storage device, and data management method thereof

Country Status (1)

Country Link
KR (1) KR101747791B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11960757B2 (en) 2021-10-04 2024-04-16 Samsung Electronics Co., Ltd. Flash translation layer with rewind

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102022446B1 (en) * 2012-12-06 2019-09-19 에스케이하이닉스 주식회사 Data storage device and operating method thereof
KR102025240B1 (en) 2013-04-01 2019-11-04 삼성전자주식회사 Memory system and operating method of memory system
KR102289919B1 (en) 2014-04-15 2021-08-12 삼성전자주식회사 Storage controller, storage device, storage system and method of operation of the storage controller
KR102282006B1 (en) * 2014-08-19 2021-07-28 삼성전자주식회사 Computer device and storage device
CN114203239B (en) * 2021-12-07 2024-04-30 合肥兆芯电子有限公司 Memory management method, memory storage device and memory control circuit unit
CN117539692B (en) * 2024-01-09 2024-03-15 武汉麓谷科技有限公司 ZNS solid state disk data set management command implementation method

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100217927A1 (en) * 2004-12-21 2010-08-26 Samsung Electronics Co., Ltd. Storage device and user device including the same

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100217927A1 (en) * 2004-12-21 2010-08-26 Samsung Electronics Co., Ltd. Storage device and user device including the same

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11960757B2 (en) 2021-10-04 2024-04-16 Samsung Electronics Co., Ltd. Flash translation layer with rewind

Also Published As

Publication number Publication date
KR20120045421A (en) 2012-05-09

Similar Documents

Publication Publication Date Title
US11636032B2 (en) Memory system, data storage device, user device and data management method thereof
KR101638061B1 (en) Flash memory system and flash defrag method thereof
US10635310B2 (en) Storage device that compresses data received from a host before writing therein
JP4238514B2 (en) Data storage device
US8078794B2 (en) Hybrid SSD using a combination of SLC and MLC flash memory arrays
US8166233B2 (en) Garbage collection for solid state disks
US8612718B2 (en) Mapping alignment
US8489854B1 (en) Non-volatile semiconductor memory storing an inverse map for rebuilding a translation table
US8612719B2 (en) Methods for optimizing data movement in solid state devices
KR101747791B1 (en) Memory system and data storage device, and data management method thereof
US8166258B2 (en) Skip operations for solid state disks
US8219776B2 (en) Logical-to-physical address translation for solid state disks
TWI420305B (en) Memory storage device, memory controller thereof, and method for creating fill-file automatically thereof
KR101893897B1 (en) Memory system and user device, and data management method thereof
US20110099323A1 (en) Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
US20110264884A1 (en) Data storage device and method of operating the same
US11747979B2 (en) Electronic device, computer system, and control method
US10936203B2 (en) Memory storage device and system employing nonvolatile read/write buffers
JP2000181784A (en) Non-volatile storage device which can be rewritten
US20220091772A1 (en) Memory system
TW202136993A (en) Data processing method and memory controller utilizing the same

Legal Events

Date Code Title Description
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant