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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/14—Circuits for erasing electrically, e.g. erase voltage switching circuits
- G11C16/16—Circuits 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
본 발명은 메모리 시스템 및 그것의 데이터 관리 방법에 관한 것으로, 좀 더 구체적으로는 플래시 메모리 시스템 및 그것의 데이터 관리 방법에 관한 것이다. 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
호스트(110)는 트림 동작(TRIM operation)을 지원하다. 트림 동작은 사용자로부터 특정 파일(file)에 대한 삭제 요청(delete request)이 있는 경우, 호스트(110)에서 해당 파일에 대한 메타 데이터만을 처리하는 것을 의미한다. 이 경우, 저장 유닛(122)에 저장된 데이터의 실질적인 삭제 없이 호스트(110)의 메타 데이터만이 처리되기 때문에, 사용자는 해당 파일에 대한 삭제 동작이 빠르게 수행된 것으로 인식할 수 있다.The
한편, 저장 유닛(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
한편, 호스트(110)에서 파일을 관리하는 단위와 저장 장치(120)에서 저장 유닛(122)에 저장된 데이터를 관리하는 단위는 서로 다를 수 있다. 예를 들어, 호스트(110)에서는 하드 디스크(hard disk) 관점의 섹터(sector) 단위로 파일을 관리하고, 저장 장치(120)는 플래시 메모리(flash memory) 관점의 페이지(page) 및/또는 블록(block) 단위로 저장 유닛(122)에 저장된 데이터를 관리할 수 있다.The units for managing files in the
이러한 호스트(110)와 저장 장치(120)의 관리 단위의 불일치는 메모리 시스템(100)의 성능 저하를 야기할 수 있다. 예를 들어, 호스트(110)로부터의 트림 명령에 응답하여 저장 유닛(122)에 저장된 데이터에 대한 소거 동작이 수행되는 경우, 관리 단위의 불일치는 유효한 데이터의 카피(copy) 및 대량의 병합 동작(merge operation)을 야기할 수 있다. 따라서, 저장 장치(120)의 수명이 단축되고, 성능이 떨어질 수 있다. Such a mismatch between the management unit of the
이러한 문제를 해결하기 위하여, 본 발명의 실시 예에 따른 저장 장치(120)는 트림 관리 모듈(TRIM Manage Table, 123)을 포함한다. 트림 관리 모듈(123)은 호스트(110)로부터의 트림 명령에 따라 실질적으로 삭제될 영역으로 지정된 저장 유닛(122)의 영역 중 저장 장치(120)의 관리 단위에 일치하지 않는 영역을 별도로 관리하다. 트림 관리 모듈(123)을 이용하여 호스트(110)와 저장 장치(120) 사이의 관리 단위의 불일치를 해소함으로써, 본 발명의 실시 예에 따른 메모리 시스템(100)은 저장 장치(120)의 수명 단축 및 성능 저하를 방지할 수 있다.
In order to solve such a problem, the
Ⅱ. 트림 명령을 처리하는 플래시 메모리 시스템의 플래시 저장 장치Ⅱ. 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
도 2를 참조하면, 플래시 메모리 시스템(1000)은 호스트(1100) 및 플래시 저장 장치(1200)를 포함한다. 이하에서는 간략한 설명을 위하여, 호스트(1100)는 섹터(sector) 단위로 파일(file)을 관리하고, 플래시 저장 장치(1200)는 페이지(page) 단위로 플래시 메모리(1210)에 저장된 데이터를 관리한다고 가정된다. 플래시 저장 장치(1200)는 플래시 변환 계층(1232)의 트림 관리 테이블(TRIM Manage Table)을 이용하여 호스트(1100)와 플래시 저장 장치(1200) 사이의 관리 단위의 불일치를 해소한다.2, the
호스트(1100)는 프로세싱 유닛(Processing Unit, 1110) 및 구동 유닛(Driving Unit, 1120)을 포함한다. 프로세싱 유닛(예를 들면, CPU)(1110)은 호스트(1100)의 전반적인 동작을 제어하며, 구동 유닛(1120)은 프로세싱 유닛(1110)의 제어에 따라 플래시 저장 장치(1200)를 구동한다. 구동 유닛(1120)은 호스트(1100)의 소프트웨어 프로그램들을 구동하기 위한 메인 메모리(main memory)로 구성될 수 있다.The
구동 유닛(1120)은 애플리케이션(Application, 1121), 파일 시스템(File System, 1122), 장치 드라이버(Device Driver, 1123), 그리고 호스트 메모리(1124)를 포함한다. 애플리케이션(1121)은 응용프로그램(application program)이라고도 하며, 운영 체제(OS) 상에서 실행되는 소프트웨어이다. 예를 들어, 애플리케이션(1121)은 파일(file)의 생성 및 삭제 동작을 지원하도록 프로그램되어 있다. The
파일 시스템(1122)은 호스트(1100)에서 사용되는 파일을 관리한다. 이하에서 파일 시스템(1122)은 하드 디스크 관점의 섹터(sector) 단위로 호스트(1100)에서 사용되는 파일을 관리한다고 가정된다. 여기에서, 섹터(sector)는 애플리케이션(1121)이 접근할 수 있는 가장 작은 데이터 관리 단위로써, 일반적으로 512B(byte)의 크기를 갖는다. The
파일 시스템(1122)은 애플리케이션(1121)으로부터 특정 파일에 대한 삭제 요청이 있는 경우, 삭제 요청된 파일의 메타 데이터를 변경한다. 이 후에 애플리케이션(1121)이 해당 파일에 접근(access)하면, 파일 시스템(1122)은 변경된 메타 데이터를 참조하여, '해당 파일은 삭제되었다'는 정보를 제공한다. The
한편, 파일 시스템(1122)은 파일의 메타 데이터(예를 들어, 파일명 등)만을 변경하기 때문에, 플래시 메모리(1210)에 저장된 삭제 요청된 파일에 대응하는 데이터는 삭제되지 않는다. 따라서, 프로세싱 유닛(1110)은 플래시 메모리(1210)에 저장된 데이터를 실질적으로 삭제하기 위하여, 트림 명령을 플래시 저장 장치(1200)에 제공한다. 파일 시스템(1122) 및 파일 시스템(1122)의 디렉토리 엔트리(directory entry) 구조는 이하의 도 3에서 좀더 자세히 설명된다. On the other hand, since the
장치 드라이버(1123)는 플래시 저장 장치(1200)가 호스트(1100)와 통신할 수 있도록 하는 프로그램이다. 플래시 저장 장치(1200)를 사용하기 위해서는, 호스트(1100)에 플래시 저장 장치(1200)에 맞는 장치 드라이버(1123)가 설치되어야 한다. 호스트 메모리(1124)는 플래시 저장 장치(1200)에 쓰거나 플래시 저장 장치(1200)로부터 읽은 데이터를 임시로 저장할 수 있다. 또한, 호스트 메모리(1124)는 애플리케이션(1121), 파일 시스템(1122), 그리고 장치 드라이버(1123)를 구동하기 위한 워킹 메모리(working memory)로 사용될 수 있다.The
본 발명의 실시 예에 있어서, 플래시 저장 장치(1200)는 호스트(1100)로부터 트림 명령(TRIM command)을 전달받는다. 트림 명령에는 삭제될 영역을 지정하기 위한 정보(예를 들어, 삭제 요청된 파일의 섹터 어드레스)가 포함된다. 플래시 저장 장치(1200)는 트림 명령에 응답하여, 플래시 메모리(1210)의 영역 중 삭제 요청된 영역을 무효(invalid)로 마킹(marking)한다. In an embodiment of the present invention,
플래시 저장 장치(1200)는 유휴 시간(idle time)(예를 들어, 호스트로부터 요청이 없을 때 생기는 제어 유닛(1230)의 유휴 시간)에 무효로 마킹된 영역에 대한 소거 동작(erase operation)을 수행한다. 계속해서 도 2를 참조하면, 플래시 저장 장치(1200)는 플래시 메모리(1210), 버퍼 메모리(1220), 그리고 제어 유닛(1230)을 포함한다.The
플래시 메모리(1210)는 제어 유닛(1230)의 제어에 따라, 소거 동작, 읽기 동작 또는 쓰기 동작을 수행한다. 플래시 메모리(1210)는 복수의 메모리 블록으로 구성된다. 각각의 메모리 블록은 복수의 페이지(page)로 구성된다. 도 2에서는 3개의 메모리 블록(1121~1213)이 예시적으로 도시되어 있다. 각각의 메모리 블록은 4개의 페이지를 갖는 것으로 예시적으로 도시되어 있다. The
각 페이지의 크기는 섹터의 크기보다 크다. 즉, 각 페이지는 복수의 섹터들로 구분될 수 있다. 예를 들어, 각 페이지는 약 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
한편, 플래시 메모리(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
버퍼 메모리(1220)는 플래시 메모리(1210)로부터 읽은 데이터 또는 호스트(1100)로부터 제동되는 데이터를 임시로 저장할 수 있다. 또한, 버퍼 메모리(1220)는 플래시 변환 계층(Flash Transslation Layer; FTL)과 같은 펌웨어를 구동하는 데 사용될 수 있다. 버퍼 메모리(1220)는 DRAM, SRAM, MRAM, PRAM 등으로 구현될 수 있다. The
계속해서 도 2를 참조하면, 제어 유닛(1230)은 중앙처리장치(CPU, 1231), 플래시 변환 계층(FTL, 1232), 플래시 컨트롤러(1233), 그리고 버퍼 컨트롤러(1234)를 포함한다. 중앙처리장치(1231)는 호스트(1100)로부터 입력된 신호를 분석하고 처리한다. 또한, 중앙처리장치(1231)는 플래시 저장 장치(1200)의 전반적인 동작을 제어한다.2, the
플래시 변환 계층(1232)은 호스트(1100)로부터 제공된 논리 어드레스(LA; Logical Address)를 플래시 메모리(1210) 상의 물리 어드레스(PA; Physical Address)로 변환한다. 예를 들어, 플래시 변환 계층(1232)은 호스트로부터 전달받은 섹터 어드레스(sector address)를 플래시 메모리(1210) 상의 페이지 어드레스(page address)로 변환한다. The
또한, 플래시 변환 계층(1232)은 플래시 메모리(1210)에 저장된 데이터를 예를 들어, 페이지 단위로 관리한다. 플래시 변환 계층(1232)은 호스트(1100)로부터의 트림 명령에 의하여 소정 페이지에 저장된 데이터가 모두 삭제 요청된 경우, 해당 페이지를 무효(invalid)로 마킹(marking)한다. In addition, the
플래시 변환 계층(1232)은 호스트(1100)로부터의 트림 명령에 의하여 소정 페이지에 저장된 데이터 중 일부만 삭제 요청된 경우, 맵핑 테이블의 해당 페이지를 유효(vaild)로 마킹(marking)한다. 이 경우, 플래시 변환 계층(1232)은 해당 페이지를 별도로 관리할 수 있다. 이를 위하여 플래시 변환 계층(1232)은 트림 관리 테이블(TRIM Manage Table)을 포함할 수 있다. 트림 관리 테이블은 페이지에 저장된 데이터 중 일부만 삭제 요청된 페이지를 관리한다. The
한편, 트림 관리 테이블은 버퍼 메모리(1220)에 저장될 수 있다. 이 경우, 버퍼 메모리(1220)의 영역 중 트림 관리 테이블에 할당된 영역의 크기는 설계자에 의하여 다양하게 설정될 수 있다. 예를 들어, 페이지 관리에 따른 제어 유닛(1230)의 오버헤드를 적게 하기 위하여, 트림 관리 테이블에 할당된 영역의 크기는 소정 크기로 제한될 수 있다.On the other hand, the trim management table can be stored in the
트림 관리 테이블이 할당된 영역이 소정 크기로 제한되는 경우, 트림 관리 테이블에서 관리할 페이지에 대한 정보의 크기가 할당된 영역의 크기를 초과할 수 있다. 이 경우, 트림 관리 테이블의 페이지에 관한 정보는 밀어내기 방식에 의하여 관리될 수 있다. 플래시 변환 계층(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
한편, 플래시 컨트롤러(1233)는 플래시 메모리(1210)의 읽기, 쓰기, 소거 동작을 제어하고, 버퍼 컨트롤러(1234)는 버퍼 메모리(1220)의 읽기, 쓰기 동작을 제어한다.On the other hand, the
도 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
파일 시스템(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
한편, 파일 시스템(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
다른 예로, 플래시 메모리 장치(1000)의 운영 체제가 유닛스(UNIX) 기반의 운영 체제인 경우, UNIX 파일 시스템(UFS)이 사용될 수 있다. 플래시 메모리 장치(1000)의 운영 체제가 리눅스(LINUX) 기반의 운영 체제인 경우, LINUX 용 파일 시스템이 사용될 수 있다. 플래시 메모리 장치(1000)의 운영 체제가 모바일 OS(예를 들어, iOS(iPhone, iPad 용 OS) 및 안드로이드 OS)인 경우, 모바일 OS 용 파일 시스템이 사용될 수 있다. As another example, if the operating system of the
도 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
애플리케이션(1121)은 파일 삭제(file delete) 요청을 파일 시스템(1122)에 전달한다. 파일 시스템(1122)은 삭제 요청된 파일의 메타 데이터를 변경한다. 예를 들어, 파일 시스템(1122)은 파일명(file name, 도 3 참조)에 'E5h'를 위치시킨다. 따라서, 이 후에 애플리케이션(1121)이 해당 파일에 접근하는 경우, 파일 시스템(1122)은 해당 파일은 삭제되었다는 정보를 제공한다. 애플리케이션(1121)의 파일 삭제 요청과 이에 따른 파일 시스템(1122)의 메타 데이터의 변경은 '상위 레벨(High Level)에서의 삭제 동작'이라고 칭해질 수 있다.The
플래시 메모리(1210)에 저장된 데이터를 실질적으로 삭제하기 위하여, 파일 시스템(1122)은 트림 명령(TRIM cmd)을 플래시 변환 계층(1232)에 제공한다. 트림 명령은 삭제 요청된 파일을 지정하기 위한 섹터 어드레스(Sector ADDR) 정보를 포함한다. 플래시 변환 계층(1232)은 섹터 어드레스를 페이지 어드레스(Page ADDR)로 변환하고, 삭제될 플래시 메모리(1210)의 페이지(page)를 무효(invalid)한 것으로 마킹(marking)한다. In order to substantially delete the data stored in the
플래시 메모리(1210)는 무효한 것으로 마킹된 페이지에 대하여, 예를 들어 유휴 시간에 소거 동작(erase operation)을 수행한다. 예를 들어, 유휴 시간은 호스트(1100, 도 2 참조)로부터 제어 유닛(1230, 도 2 참조)에 아무런 요청이 없는 시간을 의미한다. 잘 알려진 바와 같이, 플래시 메모리(1210)는 블록 단위로 소거 동작을 수행하므로, 플래시 메모리(1210)의 페이지에 대한 소거 동작은 데이터의 복사(copy) 및 병합(merge), 그리고 블록 소거 동작(block erase operation)을 수반할 수 있다. 플래시 변환 계층(1232)의 마킹 동작 및 플래시 메모리(1210)의 소거 동작은 '하위 레벨(Low Level)에서의 삭제 동작'이라고 칭해질 수 있다.The
도 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
플래시 변환 계층(1232)의 어드레스 변환은 맵핑 테이블(Mapping Table)을 통해 수행될 수 있다. 맵핑 방식은 크게 페이지 맵핑 방식과 블록 맵핑 방식이 있다. 페이지 맵핑은 페이지 단위(예를 들면, 2KB)로 어드레스 변환을 수행하며, 블록 맵핑 방식은 블록 단위(예를 들면, 1MB)로 어드레스 변환을 수행한다. The address translation of the
이러한 플래시 변환 계층(1232)의 어드레스 변환은 상위 레벨(High Level)의 애플리케이션(1121)이나 파일 시스템(1122)에서 볼 때, 실제 플래시 메모리(1210)에서 수행되는 읽기 동작, 쓰기 동작, 소거 동작을 하드 디스크 장치의 읽기 동작, 소거 동작처럼 보이게 한다. 즉, 플래시 변환 계층(1232)은 에뮬레이트(emulate) 기능을 수행한다.The address translation of the
계속해서 도 5를 참조하면, 플래시 변환 계층(1232)은 트림 관리 테이블(TRIM Manage Table)을 포함할 수 있다. 트림 관리 테이블은 페이지에 저장된 데이터 중 일부만 삭제 요청된 경우, 해당 페이지를 별도로 관리한다. 맵핑 테이블 및 트림 관리 테이블을 이용한 하위 레벨에서의 삭제 동작은 이하의 도 7 내지 도 9에서 좀더 자세히 설명된다. 5, the
도 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
한편, 설명의 편의상, 이하의 도 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
호스트(1100)로부터 트림 명령(TRIM cmd)이 제공되면, 플래시 변환 계층(1232, 도 2 참조)은 맵핑 테이블(Mapping Table)의 쓰기 상태 정보(WSI)를 갱신한다. 즉, 전달받은 섹터 어드레스에 대응하는 페이지의 쓰기 상태 정보(WSI)가 무효(invalid)한 것으로 마킹(marking)된다. 예시적으로, 도 7에 도시된 쓰기 상태 정보(WSI)의 'x' 표시는 해당 페이지에 저장된 데이터가 무효한 데이터임을 의미한다. When the trim command (TRIM cmd) is provided from the
자세히 설명하면, 도 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 (
한편, 제 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
이러한 복사 동작은 쓰기 횟수의 증가로 인하여 플래시 메모리(1210)의 수명을 단축시킬 수 있다. 또한, 복사 동작을 통하여 생성된 유효한 데이터를 저장하는 새로운 페이지는 자유 블록을 생성하기 위한 병합 동작의 증가를 야기할 수 있다. 따라서, 이러한 문제를 해결하기 위하여, 본 발명의 다른 실시 예에 따른 플래시 저장 장치(1200)는 트림 관리 테이블을 이용하여, 제 2 페이지(Page2)를 따로 관리한다. 이는 이하의 도 8 및 도 9에서 좀더 자세히 설명된다. This copying operation can shorten the life of the
도 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
자세히 설명하면, 제 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
한편, 제 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
이 경우, 플래시 변환 계층(1232)은 맵핑 테이블의 제 2 페이지(Page2)에 대한 쓰기 상태 정보(WSI)를 유효(valid)한 것으로 유지한다. 따라서, 유휴 시간(예를 들어, 제어 유닛(1230)의 유휴 시간)에 유효로 마킹된 제 2 페이지(Page2)에 대한 소거 동작은 수행되지 않고, 무효로 마킹된 제 3 페이지(Page3)에 대한 소거 동작만이 수행된다. 한편, 제 2 페이지(Page2)는 트림 관리 테이블에 의하여 별도로 관리된다.In this case, the
트림 관리 테이블은 제 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
예를 들어 도 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
도 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
제 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 (
제 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
제 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
상술한 바와 같이, 맵핑 테이블은 무효한 데이터를 일부 포함하는 페이지의 쓰기 상태 정보를 일단 유효한 것으로 유지한다. 따라서, 해당 페이지에 저장된 유효한 데이터를 다른 블록의 페이지로 복사하기 위한 동작이 수행되지 않는다. 이는 유효한 데이터의 복사 동작으로 인하여 야기되는 병합 동작이 방지될 수 있음을 의미한다. 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
트림 관리 테이블에서 관리할 페이지에 관한 정보의 크기가 버퍼 메모리(1220)에 할당된 크기를 초과하는 경우, 트림 관리 테이블에서 관리되는 페이지에 대한 정보는 밀어내기 방식에 의하여 관리될 수 있다. 즉, 트림 관리 테이블에서 관리되는 페이지에 대한 정보 중 가장 오래된 페이지에 대한 정보는 삭제되고 새로 요청된 페이지에 대한 정보가 관리될 수 있다. When the size of the information about the page to be managed in the trim management table exceeds the size allocated to the
예를 들어, 제 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
도 10은 도 2의 플래시 저장 장치(1200)의 하위 레벨에서의 삭제 동작을 보여주는 순서도이다.FIG. 10 is a flowchart showing the erasing operation at a lower level of the
S11 단계에서, 호스트(1100, 도 2 참조)로부터 플래시 저장 장치(1200)에 트림 명령(TRIM cmd)이 제공된다. 트림 명령은 플래시 메모리(1210, 도 2 참조)의 영역 중 소거 동작이 수행될 영역을 지정하는 정보(예를 들어, 섹터 어드레스 정보)를 포함한다.In step S11, a trim command (TRIM cmd) is provided to the
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
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
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
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
트림 관리 테이블이 존재하는 경우, 플래시 변환 계층(1232)은 트림 관리 테이블의 쓰기 상태 정보(WSI)를 갱신한다(S160 단계). 즉, 부분 섹터 어드레스에 대응하는 서브 페이지의 쓰기 상태 정보가 무효한 것으로 갱신된다. If the trim management table exists, the
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
이상에서 설명한 바와 같이, 본 발명의 실시 예에 따른 플래시 메모리 시스템(1000)은 트림 동작(TRIM operation)을 지원한다. 즉, 소정 파일에 대한 삭제 요청이 있는 경우, 호스트(1100)는 파일 시스템(1122)의 메타 데이터를 변경하여 사용자에게 해당 파일이 삭제되었음을 알려주고, 실질적인 삭제 동작은 트림 명령(TRIM cmd)에 따라 플래시 저장 장치(1200)에서 수행된다.As described above, the
이 경우, 플래시 저장 장치(1200)는 트림 관리 테이블(TRIM Manage Table)을 이용하여, 호스트(1100)와 플래시 저장 장치(1200) 사이의 관리 단위의 불일치를 해소한다. 따라서, 플래시 저장 장치(1200)는 관리 단위의 불일치로 인하여 발생하는 페이지에 저장된 데이터의 복사 동작 등을 방지할 수 있다. 결국, 플래시 저장 장치(1200)의 수명 단축 및 성능 저하가 방지될 수 있다. In this case, the
한편, 상술한 설명에서는 파일들(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 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
도 12는 맵핑 테이블을 통한 버퍼 메모리(1220)와 플래시 메모리(1210) 사이의 어드레스 변환을 보여주는 블록도이다. 설명의 편의상, 버퍼 메모리(1220)의 각 섹터(Sector)의 크기는 파일 시스템(1122, 도 2 참조)의 관리 단위인 섹터와 동일하다고 가정된다.12 is a block diagram showing the address translation between the
도 12를 참조하면, 버퍼 메모리(1220)는 복수의 섹터들을 포함한다. 버퍼 메모리(1220)의 섹터들은 각각 데이터를 임시로 저장한다. 버퍼 메모리(1220)의 섹터들에 저장된 데이터는 제어 유닛(1230, 도 2 참조)의 제어에 따라 플래시 메모리(1210)의 블록(1211)의 페이지들에 쓰여진다. 버퍼 메모리(122)의 섹터들에 저장된 데이터의 일부 또는 전부가 플래시 메모리(1210)의 페이지들에 쓰여지는 동작은 '플러시 동작(flush operation)'이라 칭해질 수 있다.Referring to FIG. 12, the
예를 들어, 버퍼 메모리(1220)의 섹터들에 저장된 데이터의 일부 또는 전부는 버퍼 메모리(1220)의 여유 공간이 부족할 때 플래시 메모리(1210)의 페이지들에 쓰여질 수 있다. 다른 예로, 버퍼 메모리(1220)의 섹터들에 저장된 데이터의 일부 또는 전부는 제어 유닛(1230, 도 2 참조)의 유휴 시간(호스트(1100, 도 2 참조)로부터 요청이 없을 때 생기는 시간)에 플래시 메모리(1210)의 페이지들에 쓰여질 수 있다. For example, some or all of the data stored in the sectors of the
플래시 메모리(1210)의 블록(1211)의 페이지들(Page0~Page3)은 각각 4개의 서브 페이지들(Sub_Page0~Sub_Page3)로 구분된다. 플래시 메모리(1210)의 각 서브 페이지의 크기는 버퍼 메모리(1220)의 섹터의 크기와 동일하다고 가정된다. 즉, 하나의 페이지에는 4개의 섹터들이 대응된다고 가정된다. Pages (Page0 to Page3) of the
맵핑 테이블(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
본 발명의 실시 예에 따른 플래시 저장 장치(1200)는 호스트(1100)로부터 트림 명령(TRIM cmd)을 제공받는 경우, 삭제 요청된 파일의 데이터가 버퍼 메모리(1220)로부터 플래시 메모리(1210)로 쓰여지는 것을 무효화한다. 즉, 플래시 저장 장치(1200)는 맵핑 테이블의 쓰기 상태 정보(WSI)를 갱신함으로써, 버퍼 메모리(1220)에 저장된 데이터가 플래시 메모리(1210)에 쓰여지는 것을 방지한다. When the
버퍼 메모리(1220)로부터 플래시 메모리(1210)로 데이터가 쓰여지는 것을 방지하는 동작은 '쓰기 되물리기 동작(unwrite operation)'이라 칭해질 수 있다. 이 경우, 트림 명령에 포함된 어드레스 정보는 쓰기 되물리기될 영역을 지정한다. 따라서, 이 경우에 트림 명령은 '쓰기 되물리기 명령'이라 칭해질 수 있다. 이하의 도 13 및 도 14에서는 쓰기 되물리기 동작을 수행하는 본 발명의 실시 예들이 좀더 자세히 설명된다.The operation of preventing data from being written from the
도 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
도 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
호스트(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
이 경우, 버퍼 메모리(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
한편, 제 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
이러한 문제를 해결하기 위하여, 본 발명의 다른 실시 예에 따른 플래시 저장 장치(1200)는 트림 관리 테이블을 이용하여, 제 2 페이지(Page2)를 따로 관리한다. 이는 이하의 도 14에서 좀더 자세히 설명된다. In order to solve this problem, the
도 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
자세히 설명하면, 제 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
이 경우, 제 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
한편, 제 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
계속해서 도 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
따라서, 제 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
도 15는 본 발명의 실시 예에 따른 플래시 저장 장치(1200)의 쓰기 되물리기 동작을 보여주는 순서도이다.15 is a flowchart showing a write-back coping operation of the
S21 단계에서, 호스트(1100)로부터 플래시 저장 장치(1200)에 트림 명령(TRIM cmd)이 제공된다. 트림 명령은 버퍼 메모리(1220)의 섹터들 중 플래시 메모리(1210)에 쓰여지지 않을 섹터의 어드레스 정보를 포함한다. 따라서, 트림 명령(TRIM cmd)은 '쓰기 되물리기 명령(unwrite command)'이라 칭해질 수 있다. In step S21, the
S22 단계에서, 플래시 변환 계층(1232)의 맵핑 테이블(Mapping Table) 및 트림 관리 테이블(TRIM Manage Table)이 갱신된다. 예를 들어, 트림 명령에 포함된 섹터 어드레스가 플래시 메모리(1210)의 페이지 단위에 일치하는 경우, 해당 페이지에 대한 맵핑 테이블의 쓰기 상태 정보(WSI)는 무효한 것으로 표시된다. 다른 예로, 트림 명령에 포함된 섹터 어드레스가 플래시 메모리(1210)의 페이지 단위에 일치하지 않는 경우, 해당 페이지에 대한 맵핑 테이블의 쓰기 상태 정보(WSI)는 유효한 것으로 표시되고, 해당 페이지는 트림 관리 테이블에 의하여 관리된다. In step S22, the mapping table and the TRIM Manage Table of the
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
이상에서 설명한 바와 같이, 본 발명의 실시 예에 따른 플래시 메모리 시스템(1000)은 쓰기 되물리기 동작(unwrite operation)을 지원한다. 이 경우, 플래시 저장 장치(1200)는 트림 관리 테이블(TRIM Manage Table)을 이용하여, 호스트(1100)와 플래시 저장 장치(1200) 사이의 관리 단위의 불일치를 해소한다. 따라서, 플래시 저장 장치(1200)는 관리 단위의 불일치로 인하여 발생하는 버퍼 메모리(1220)의 유효한 데이터가 쓰기 되물리기 되는 것을 방지할 수 있다.As described above, the
한편, 플래시 저장 장치(1200)는 호스트(1100)로부터 복수의 트림 명령들을 시간 차를 두고 제공받을 수 있다. 이 경우, 플래시 저장 장치(1200)는 트림 명령들을 수집하고, 수집된 트림 명령들을 유휴 시간에 한 번에 처리할 수 있다. 이는 이하의 도 16 내지 도 18에서 좀더 자세히 설명된다.
Meanwhile, the
Ⅳ. 트림 명령들을 수집하는 플래시 저장 장치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
도 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
버퍼 메모리(1220)는 제공된 트림 명령들을 수집하기 위한 트림 수집 영역(TRIM Collection Area)을 포함한다. 제어 유닛(1230)은 제 1 내지 제 3 트림 명령들(TRIM cmd_1~TRIM cmd_3)을 버퍼 메모리(1220)의 트림 수집 영역에 임시로 저장하고, 이 후 제어 유닛의 유휴 시간(예를 들어, 호스트(1100)로부터 아무런 요청을 받지 않는 시간)에 수집된 제 1 내지 제 3 트림 명령들(TRIM cmd_1~TRIM cmd_3)을 처리한다.
자세히 설명하면, 제어 유닛(1230)의 중앙 처리 장치(1231)는 전달받은 명령을 분석한다. 중앙 처리 장치(1231)는 전달받은 명령이 트림 명령인 경우, 트림 명령에 포함된 정보들(예를 들어, 시작 섹터 번호(Start Sector No)와 섹터들의 개수(# of Sectors)를 버퍼 컨트롤러(1234)에 전달한다. 버퍼 컨트롤러(1234)는 트림 명령에 포함된 정보들을 버퍼 메모리(1220)의 트림 수집 영역(TRIM Collection Area)에 저장한다. 이 후, 유휴 시간에 플래시 저장 장치(1232)는 트림 명령 수집 영역에 저장된 정보를 이용하여, 맵핑 테이블(Mapping Table) 및 트림 관리 테이블(TRIM Manage Table)을 갱신한다. More specifically, the
도 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
도 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
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
이상에서 설명한 바와 같이, 본 발명의 실시 예에 따른 플래시 저장 장치(1200)는 트림 명령들에 관한 정보를 버퍼 메모리(1220)에 수집하고, 이를 유휴 시간에 한번에 처리할 수 있다. 따라서, 플래시 저장 장치(1200)는 트림 명령들을 처리하기 위한 시간을 절약할 수 있다. As described above, the
한편, 도 2 내지 도 18에서는 플래시 저장 장치(1200)는 하나의 플래시 메모리를 포함하는 것으로 가정되었다. 다만 이는 예시적인 것으로, 본 발명의 기술적 사상은 이에 한정되지 않는다. 예를 들어, 플래시 저장 장치(1200)는 복수의 플래시 메모리들을 포함할 수 있다. 이하의 도 19 내지 도 23에서는 복수의 플래시 메모리들을 포함하는 플래시 저장 장치가 좀더 자세히 설명된다.
2 to 18, it is assumed that the
Ⅴ. 복수의 플래시 메모리들을 포함하는 플래시 저장 장치Ⅴ. 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)는 복수의 플래시 메모리들에 대하여 병렬적으로 트림 명령들을 처리할 수 있다.
도 19는 복수의 플래시 메모리를 포함하는 플래시 저장 장치(1200)를 예시적으로 보여주는 블록도이다. 도 19에서는 예시적으로, 플래시 저장 장치(1200)는 두 개의 플래시 메모리들(1210, 1240)을 갖는 것으로 가정된다.19 is a block diagram illustrating an exemplary
도 19를 참조하면, 제 1 플래시 메모리(1210)는 제 1 채널(CH1)을 통하여 제어 유닛(1230)에 연결되고, 제 2 플래시 메모리(1240)는 제 2 채널(CH2)을 통하여 제어 유닛(1230)에 연결된다. 설명의 편의상, 각 플래시 메모리는 4개의 페이지들을 갖는 것으로 가정된다. 19, a
버퍼 메모리(1220)는 도 16에서 설명된 바와 같이, 트림 수집 영역(TRIM Collection Area)을 포함한다. 트림 수집 영역에는 복수의 트림 명령들에 관한 정보가 저장된다. 즉, 복수의 트림 명령들이 제공되는 경우, 제어 유닛(1230)은 트림 명령들에 관한 정보를 트림 수집 영역에 저장한다. 이는 도 16 내지 도 18에서 상세히 설명되었으므로, 자세한 설명은 생략된다.
제어 유닛(1230)은 트림 순서 재설정 모듈(1235)을 포함한다. 트림 순서 재설정 모듈(1235)은 트림 수집 영역에 저장된 트림 명령들의 처리 순서를 재설정한다. 즉, 트림 순서 재설정 모듈(1235)은 제 1 및 제 2 플래시 메모리(1210, 1240)에 대하여 트림 명령들이 병렬적으로 수행되도록, 트림 수집 영역에 저장된 트림 명령들의 처리 순서를 조정한다. 트림 명령들의 처리 순서를 재설정함으로써, 플래시 저장 장치(1200)는 트림 명령들을 처리하는 시간을 단축시킬 수 있다. The
한편, 제어 유닛(1230)은 중앙 처리 장치(1231), 플래시 변환 계층(1232), 플래시 컨트롤러(1233), 그리고 버퍼 컨트롤러(1234)를 포함한다. 이는 도 2에서 상세히 서명되었으므로, 자세한 설명은 생략된다.On the other hand, the
도 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
한편, 계속해서 도 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
이러한 트림 명령의 처리는 플래시 저장 장치(1200)의 성능 하락을 야기할 수 있다. 즉, 예를 들어, 제 2 플래시 메모리(1240)가 제 5 및 제 7 페이지(Page5, Page7)에 대한 소거 동작을 수행하는 동안, 제1 플래시 메모리(1210)는 아무런 동작을 수행하지 않을 수 있다. 이는 트림 처리 시간이 증가함을 의미한다. 이러한 트림 명령 처리의 비효율을 방지하기 위하여, 본 발명의 실시 예에 따른 플래시 저장 장치(1200)는 트림 명령을 병렬적으로 처리하도록 트림 명령의 처리 순서(POT)를 재설정한다. This processing of the Trim command may result in degraded performance of
즉, 도 21에 도시된 바와 같이, 트림 재설정 모듈(1235)은 맵핑 테이블을 참조하여 트림 명령의 처리 순서(POT)를 제 1 트림 명령(TRIM cmd_1), 제 3 트림 명령(TRIM cmd_3), 제 2 트림 명령(TRIM cmd_2), 그리고 제 4 트림 명령(TRIM cmd_4) 순으로 재설정한다. 21, the
따라서, 도 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
마찬가지로, 제 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
한편, 상술한 트림 명령의 처리 순서(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
도 23은 복수의 플래시 메모리를 포함하는 플래시 저장 장치(1200)의 트림 명령의 처리 방법을 보여주는 순서도이다. 23 is a flowchart showing a method of processing a Trim command of the
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
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
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
버퍼 컨트롤러(1234)는 버퍼 메모리(1220)의 트림 수집 영역에 수집된 트림 명령들에 관한 정보를 플래시 변환 계층(1232)에 전달한다. 플래시 변환 계층(1232)은 전달된 정보를 이용하여 맵핑 테이블(Mapping Table) 및 트림 관리 테이블(TRIM Manage Table)을 갱신한다. 맵핑 테이블 및 트림 관리 테이블의 쓰기 상태 정보(WSI)가 갱신되는 것은 도 11의 설명과 유사하므로, 자세한 설명은 생략된다. The
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
Ⅵ. 트림 명령을 처리하는 플래시 메모리 시스템의 적용 예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
도 24는 본 발명의 실시 예에 따른 플래시 메모리 시스템(1000)을 메모리 카드에 적용한 예를 보여준다. 메모리 카드 시스템(2000)은 호스트(2100)와 메모리 카드(2200)를 포함한다. 호스트(2100)는 호스트 컨트롤러(2110) 및 호스트 접속 유닛(2120)을 포함한다. 메모리 카드(2200)는 카드 접속 유닛(2210), 카드 컨트롤러(2220), 그리고 플래시 메모리(2230)를 포함한다. FIG. 24 shows an example in which the
호스트 접속 유닛(2120) 및 카드 접속 유닛(2210)은 복수의 핀으로 구성된다. 이들 핀에는 커맨드 핀, 데이터 핀, 클록 핀, 전원 핀 등이 포함되어 있다. 핀의 수는 메모리 카드(2200)의 종류에 따라 달라진다. 예로서, SD 카드는 9개의 핀을 갖는다.The
호스트(2100)는 메모리 카드(2200)에 데이터를 쓰거나, 메모리 카드(2200)에 저장된 데이터를 읽는다. 호스트 컨트롤러(2110)는 커맨드(예를 들면, 쓰기 커맨드), 호스트(2100) 내의 클록 발생기(도시되지 않음)에서 발생한 클록 신호(CLK), 그리고 데이터(DAT)를 호스트 접속 유닛(2120)을 통해 메모리 카드(2200)로 전송한다. The
카드 컨트롤러(2220)는 카드 접속 유닛(2210)을 통해 수신된 쓰기 커맨드에 응답하여, 카드 컨트롤러(2220) 내에 있는 클록 발생기(도시되지 않음)에서 발생한 클록 신호에 동기하여 데이터를 메모리(2230)에 저장한다. 메모리(2230)는 호스트(2100)로부터 전송된 데이터를 저장한다. 예를 들어, 호스트(2100)가 디지털 카메라인 경우에는 영상 데이터를 저장한다. The
도 24에서, 호스트 컨트롤러(2110)는 트림 동작을 지원하는 응용 프로그램과 파일 시스템을 구비할 수 있다. 그리고 카드 컨트롤러(2220)는 플래시 변환 계층을 이용하여 메모리 카드(2200) 내에서 트림 명령을 처리할 수 있다. 도 24에 도시된 메모리 카드 시스템은 위에서 설명한 트림 동작 및 플러시 기능을 모두 지원할 수 있다. 24, the
도 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
복수의 불휘발성 메모리 장치(3201~320n)는 SSD(3200)의 저장 유닛로서 사용된다. 복수의 불휘발성 메모리 장치(3201~320n)는 대용량의 저장 능력을 가지는 플래시 메모리 장치로 구현될 수 있다. SSD(3200)는 주로 플래시 메모리(Flash memory)를 사용하고 있다. A plurality of
복수의 불휘발성 메모리 장치(3201~320n)는 복수의 채널(CH1~CHn)을 통해 SSD 컨트롤러(3210)와 연결될 수 있다. 하나의 채널에는 하나 또는 그 이상의 메모리 장치가 연결될 수 있다. 하나의 채널에 연결되는 메모리 장치들은 동일한 데이터 버스에 연결될 수 있다. 이때 플래시 조각 모음은 복수의 메모리 블록을 하나로 연결하는 슈퍼 블록 형태로 수행되거나, 복수의 페이지를 하나로 연결하는 슈퍼 페이지 형태로 수행될 수 있다.The plurality of
SSD 컨트롤러(3210)는 신호 커넥터(3231)를 통해 호스트(3100)와 신호(SGL)를 주고 받는다. 여기에서, 신호(SGL)에는 커맨드, 어드레스, 데이터 등이 포함될 수 있다. SSD 컨트롤러(3210)는 호스트(3100)의 커맨드에 따라 해당 메모리 장치에 데이터를 쓰거나 해당 메모리 장치로부터 데이터를 읽어낸다. SSD 컨트롤러(3210)의 내부 구성은 도 26을 참조하여 상세하게 설명된다.The
보조 전원 장치(3220)는 전원 커넥터(3221)를 통해 호스트(3100)와 연결된다. 보조 전원 장치(3220)는 호스트(3100)로부터 전원(PWR)을 입력받고, 충전할 수 있다. 한편, 보조 전원 장치(3220)는 SSD(3200) 내에 위치할 수도 있고, SSD(3200) 밖에 위치할 수도 있다. 예를 들면, 보조 전원 장치(3220)는 메인 보드에 위치하며, SSD(3200)에 보조 전원을 제공할 수도 있다.The
도 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
NVM 인터페이스(3211)는 버퍼 메모리(3215)로부터 전달된 데이터를 각각의 채널들(CH1~CHn)로 스캐터링(Scattering)한다. 그리고 NVM 인터페이스(3211)는 불휘발성 메모리 장치(3201~320n)로부터 읽은 데이터를 버퍼 메모리(3215)로 전달한다. 여기에서, NVM 인터페이스(3211)는 낸드 플래시 메모리의 인터페이스 방식을 사용할 수 있다. 즉, SSD 컨트롤러(3210)는 낸드 플래시 메모리 인터페이스 방식에 따라 프로그램, 읽기, 또는 소거 동작 등을 수행할 수 있다.The
호스트 인터페이스(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) 기능을 수행할 수 있다.
중앙 처리 장치(3214)는 호스트(3100, 도 19 참조)로부터 입력된 신호(SGL)를 분석하고 처리한다. 중앙 처리 장치(3214)는 호스트 인터페이스(3212)나 NVM 인터페이스(3211)를 통해 호스트(3100)나 불휘발성 메모리(3201~320n)를 제어한다. 중앙 처리 장치(3214)는 SSD(3200)을 구동하기 위한 펌웨어에 따라서 불휘발성 메모리 장치(3201~320n)의 동작을 제어한다.The
버퍼 메모리(3215)는 호스트(3100)로부터 제공되는 쓰기 데이터 또는 불휘발성 메모리 장치로부터 읽은 데이터를 임시로 저장한다. 또한, 버퍼 메모리(3215)는 불휘발성 메모리 장치(3201~320n)에 저장될 메타 데이터나 캐시 데이터를 저장할 수 있다. 서든 파워 오프 동작 시에, 버퍼 메모리(3215)에 저장된 메타 데이터나 캐시 데이터는 불휘발성 메모리 장치(3201~320n)에 저장된다. 버퍼 메모리(3215)에는 DRAM, SRAM 등이 포함될 수 있다.The
도 25 및 도 26에 도시된 솔리드 스테이트 드라이브(3000)는 앞에서 설명한 트림 동작 및 플러시 기능을 모두 지원할 수 있다.The
도 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
도 27을 참조하면, 플래시 메모리 모듈(4000)은 메모리 시스템(4100), 전원 장치(4200), 보조 전원 장치(4250), 중앙처리장치(4300), 램(4400), 그리고 사용자 인터페이스(4500)를 포함한다. 도 27에 도시된 플래시 메모리 모듈(4000)은 앞에서 설명한 바와 같이, 트림 동작 및 플러시 기능을 모두 지원할 수 있다.Referring to Figure 27, the
한편, 상술한 설명에서, 호스트(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
또한, 상술한 설명에서, 트림 관리 테이블은 버퍼 메모리(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
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 상술한 실시예에 국한되어 정해져서는 안되며 후술하는 특허청구범위 뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
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;
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.
상기 데이터 저장 장치의 데이터 관리 단위의 크기는 상기 외부 장치의 데이터 관리 단위의 크기보다 큰, 데이터 관리 방법. 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.
상기 외부 장치의 데이터 관리 단위의 크기는 섹터 크기이고, 상기 데이터 저장 장치의 데이터 관리 단위의 크기는 복수의 서브 페이지들을 포함하는 페이지 크기이며, 상기 서브 페이지들 각각의 크기는 상기 섹터 크기에 대응하는, 데이터 관리 방법.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.
상기 맵핑 테이블은 상기 데이터 저장 장치의 데이터 관리 단위가 유효인지의 여부를 나타내는 제 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.
상기 트림 관리 테이블은 상기 제 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.
상기 제 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.
상기 불휘발성 메모리는 각각 독립적으로 소거 동작이 수행되는 복수의 메모리 블록들을 포함하고, 상기 복수의 메모리 블록들 중 제 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.
상기 트림 관리 테이블의 제 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.
상기 불휘발성 메모리는 상기 제 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.
상기 데이터 저장 장치는 불휘발성 메모리, 상기 불휘발성 메모리의 제 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. 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.
상기 맵핑 테이블은 상기 데이터 저장 장치의 데이터 관리 단위가 유효인지의 여부를 나타내는 제 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.
상기 제 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.
상기 트림 관리 테이블의 제 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.
상기 버퍼는 상기 제 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.
상기 제 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.
상기 불휘발성 메모리를 제어하는 컨트롤러를 포함하며,
외부 장치로부터 상기 제 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. 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.
상기 불휘발성 메모리는 각각 독립적으로 소거 동작이 수행되는 복수의 메모리 블록들을 포함하고, 상기 복수의 메모리 블록들 중 제 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, .
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)
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)
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)
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 |
-
2010
- 2010-10-29 KR KR1020100106946A patent/KR101747791B1/en active IP Right Grant
Patent Citations (1)
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)
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 |