KR101247388B1 - Method and apparatus for processing trim command in hybrid-mapping flash translation layer - Google Patents
Method and apparatus for processing trim command in hybrid-mapping flash translation layer Download PDFInfo
- Publication number
- KR101247388B1 KR101247388B1 KR1020100095115A KR20100095115A KR101247388B1 KR 101247388 B1 KR101247388 B1 KR 101247388B1 KR 1020100095115 A KR1020100095115 A KR 1020100095115A KR 20100095115 A KR20100095115 A KR 20100095115A KR 101247388 B1 KR101247388 B1 KR 101247388B1
- Authority
- KR
- South Korea
- Prior art keywords
- sectors
- sector
- trim
- index
- list
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- 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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
하이브리드-매핑 FTL을 사용하여 TRIM 명령어를 처리하는 방법 및 장치가 제공된다. 트림 명령에 의해 특정 섹터의 삭제가 요청되며, FTL은 삭제가 요청된 섹터를 FTL 내 또는 FTL 외부의 데이터로 저장한다. FTL은 병합, 가비지 컬렉션 또는 클리닝 등의 기능이 수행될 때 저장된 섹터들을 삭제한다.A method and apparatus are provided for processing TRIM instructions using hybrid-mapping FTL. The trim command requests the deletion of a specific sector, and the FTL stores the sector requested for deletion as data in or outside the FTL. The FTL deletes the stored sectors when a function such as merge, garbage collection, or cleaning is performed.
Description
아래의 실시예들은 하이브리드-매핑 FTL을 사용하는 플래시 메모리 기반 저장 방법 및 장치에 관한 것으로, 구체적으로는 하이브리드-매핑 FTL을 사용하여 TRIM 명령어를 처리하는 방법 및 장치에 관한 것이다.The following embodiments relate to a flash memory based storage method and apparatus using a hybrid-mapped FTL, and more particularly, to a method and apparatus for processing a TRIM instruction using a hybrid-mapped FTL.
플래시 메모리(Flash Memory)는 비 휘발성 특성을 갖는 메모리 반도체이다. 플래시 메모리를 기반으로 구성된 솔리드 스테이트 디스크(Solid State Disk; 이하 SSD)는 종래의 하드 디스크(Hard-Disk Drive; 이하 HDD)에 비해, 빠른 I/O(Input-Output) 속도, 무소음, 저전력 및 충격 내구성 등의 장점을 갖는다.Flash memory is a memory semiconductor having nonvolatile characteristics. Solid State Disk (SSD), which is based on flash memory, has faster input-output (I / O) speed, noise, low power, and impact compared to conventional hard disk (HDD). It has advantages such as durability.
플래시 메모리는 비휘발적(Non-Volatile) 소자의 특성 상, 이미 정보가 기록되어 있는 소자에 다른 정보를 바로 기록할 수 없다. 즉, 플래시 메모리를 사용하는 SSD는 특정 플래시 메모리 소자에 정보를 기록한 후 정보가 기록된 소자에 변경된 정보를 덮어쓰기(Over Write) 할 수 없다. 따라서, 플래시 메모리는 우선 소자에 기록된 정보를 삭제하고, 삭제 후 다시 기록을 해야 한다.The flash memory cannot directly write other information on a device in which information is already recorded due to the characteristics of a non-volatile device. That is, the SSD using the flash memory cannot overwrite the changed information on the device in which the information is recorded after writing the information in a specific flash memory device. Therefore, the flash memory must first delete the information written in the device, and then write again.
플래시 메모리는, 전술된 덮어쓰기를 할 수 없는 특성 외에도, 페이지 단위의 읽기/쓰기, 블록 단위의 삭제, 삭제 횟수에 대한 제한 등의 특성을 갖는다. 이러한 종래의 HDD와 상이한 다른 플래시 메모리의 특성 때문에, 플래시 메모리는 종래의 파일 시스템을 그대로 사용할 수 없다.In addition to the above-described non-overwrite characteristic, the flash memory has characteristics such as read / write in units of pages, deletion in units of blocks, and limitation on the number of deletions. Because of the characteristics of other flash memories different from these conventional HDDs, the flash memory cannot use the conventional file system as it is.
플래시 트랜스레이션 레이어(Flash Translation Layer; 이하 FTL)는 플래시 메모리의 고유한 특성을 감추고, 일반적인 HDD의 인터페이스(Interface)를 에뮬레이션(Emulation)하여, 기존 파일 시스템이 SSD 등 플래시 메모리를 사용하는 장치를 그대로 사용할 수 있게 한다.The Flash Translation Layer (FTL) hides the inherent characteristics of flash memory and emulates the interface of a typical HDD, so that existing file systems use devices such as SSDs. Make it available.
플래시 메모리를 사용하여 구성되는 저장 장치는 삭제를 최소화함으로써 그 성능이 향상될 수 있다. 따라서, FTL은 삭제를 최소화하기 위한 기능을 포함할 필요가 있다.Storage devices constructed using flash memory can be improved in performance by minimizing deletion. Thus, the FTL needs to include a function to minimize deletion.
페이지-매핑(Page-Mapping), 블록-매핑(Block-Mapping), 슈퍼블록(Superblock) 등 다양한 방식의 FTL이 존재하지만, 이 중 어떤 방식의 FTL도 삭제를 완전히 제거할 수는 없다. 이는 플래시 메모리 저장 장치를 사용하는 호스트(Host)의 파일 시스템(File System)에서 덮어쓰기 요청을 하기 때문이다.There are various FTLs such as Page-Mapping, Block-Mapping, and Superblock, but none of them can completely eliminate deletion. This is because the file system of the host using the flash memory storage device overwrites the file system.
파일 시스템이 덮어쓰기 요청을 하는 것을 회피한다면 플래시 메모리 저장 장치의 성능이 개선 될 수 있다. 그러나, 저장 장치의 용량은 제한되어 있기 때문에 삭제는 불가피하다. 또한, 저장 장치는 요청 받은 기록이 덮어쓰기를 회피하기 위한 기록인지 여부를 알 수 없다. 따라서, 저장 장치는 불필요한 데이터라도 삭제할 수 없다.If the file system avoids overwriting requests, the performance of flash memory storage can be improved. However, since storage capacity is limited, deletion is inevitable. In addition, the storage device may not know whether the requested record is a record for avoiding overwriting. Therefore, the storage device cannot delete unnecessary data.
또한, 저장 장치의 특성이 고려되지 않은 채 데이터가 분산되어 기록되면, 저장 장치의 남은 공간이 빠르게 소모될 수 있으며, I/O 및 마모도 등의 저장 장치의 성능에 좋지 않은 영향이 미칠 수 있다.In addition, if data is distributed and recorded without considering the characteristics of the storage device, the remaining space of the storage device may be quickly consumed, and adversely affect the performance of the storage device such as I / O and wear.
파일 시스템이 삭제가 필요한 섹터에 대한 정보를 저장 장치에게 알려준다면, 저장 장치는 이러한 정보를 사용하여 적절한 시기에 불필요한 섹터를 삭제함으로써 성능 향상을 유도할 수 있다.If the file system provides the storage device with information about sectors that need to be deleted, the storage device can use this information to drive performance improvements by deleting unnecessary sectors in a timely manner.
트림(TRIM) 명령은 ATA-8 표준에서 정의하는 데이터-셋 관리(Data-Set Management) 명령으로서, 파일 시스템 및 저장 장치 간에 삭제가 필요한 섹터의 정보를 제공한다.The TRIM command is a data-set management command defined in the ATA-8 standard, and provides information on a sector to be deleted between a file system and a storage device.
플래시 메모리는 일반적으로 삭제가 기록에 비해 10배 이상 느리다. 따라서, 하이브리드-매핑(Hybrid Mapping), 페이지-매핑, 블록-매핑 또는 슈퍼블록 등의 FTL을 사용하는 저장 장치가 트림 명령에 의해 삭제가 요청된 섹터를 바로 제거하는 것은 효율적이지 못하다.Flash memory is typically 10 times slower than writes. Therefore, it is not efficient for a storage device using an FTL such as hybrid mapping, page-mapping, block-mapping, or superblock to immediately remove a sector requested to be erased by a trim command.
또한, 트림 명령은 저장 장치 전체의 섹터들을 삭제가 필요한 섹터로서 요청할 수도 있다. 이러한 경우, FTL이 곧바로 요청된 전체 섹터들을 전부 삭제할 경우, 저장 장치의 성능에 심각한 문제가 발생할 수 있다.The trim command may also request sectors across the storage device as sectors that need to be erased. In such a case, if the FTL deletes all requested sectors immediately, serious problems may occur in the performance of the storage device.
본 발명의 일측에 따르면, 복수 개의 제1 블록들을 나타내는 식별 정보를 수신하는 단계, 상기 식별 정보에 기반하여 삭제 블록 목록에 상기 복수 개의 제1 블록들을 삭제될 블록으로서 추가하는 단계 및 상기 삭제 블록 목록이 나타내는 복수 개의 제2 블록들을 삭제하는 단계를 포함하는, 플래시 메모리 제어 방법이 제공된다.According to an aspect of the present invention, receiving identification information indicating a plurality of first blocks, adding the plurality of first blocks as a block to be deleted to the deletion block list based on the identification information and the deletion block list A method of controlling a flash memory is provided, the method comprising deleting a plurality of second blocks which are represented.
상기 방법은, 제3 블록에 대한 기록 명령을 수신하는 단계 및 상기 삭제 블록 목록을 검색하여, 상기 삭제 블록 목록이 나타내는 상기 복수 개의 제2 블록들 중 상기 제3 블록을 제외하는 단계를 더 포함할 수 있다.The method may further include receiving a write command for a third block and retrieving the deleted block list to exclude the third block of the plurality of second blocks represented by the deleted block list. Can be.
본 발명의 다른 일측에 따르면, 복수 개의 제1 블록들을 나타내는 식별 정보를 수신하는 수신부. 삭제 블록 목록을 저장하는 저장부 및 상기 식별 정보에 기반하여 상기 복수 개의 제1 블록들을 삭제될 블록으로서 상기 삭제 블록 목록에 추가하여 상기 저장부에 저장하고, 상기 삭제 블록 목록이 나타내는 복수 개의 제2 블록들을 삭제하는 제어부를 포함하는, 플래시 메모리 트랜스레이션 레이어 장치가 제공된다.According to another aspect of the invention, a receiving unit for receiving identification information representing a plurality of first blocks. A storage unit storing a deletion block list and the plurality of second blocks added to the deletion block list as a block to be deleted and stored in the storage unit based on the identification information; Provided is a flash memory translation layer device comprising a control unit for deleting blocks.
상기 수신부는 제3 블록에 대한 기록 명령을 수신할 수 있고, 상기 제어부는 상기 삭제 블록 목록이 나타내는 상기 복수 개의 제2 블록들 중 상기 제3 블록을 제외할 수 있다.The receiver may receive a write command for a third block, and the controller may exclude the third block among the plurality of second blocks indicated by the deletion block list.
본 발명의 또 다른 일측에 따르면, 복수 개의 제1 섹터들 중 첫 번째 섹터의 순번 및 상기 복수 개의 제1 섹터들의 개수를 포함하는 트림 명령을 수신하는 단계, 상기 트림 명령에 기반하여 트림 섹터 목록에 상기 복수 개의 제1 섹터들을 삭제될 섹터들로서 추가하는 단계 및 상기 트림 섹터 목록이 나타내는 복수 개의 제2 섹터들을 삭제하는 단계를 포함하는, 솔리드 스테이트 디스크의 트림 명령 처리 방법이 제공된다.According to another aspect of the invention, receiving a trim command including the sequence number of the first sector of the plurality of first sectors and the number of the plurality of first sectors, based on the trim command in the trim sector list A method of processing a trim command of a solid state disk is provided, comprising adding the plurality of first sectors as sectors to be deleted and deleting the plurality of second sectors indicated by the trim sector list.
본 발명의 또 다른 일측에 따르면, 입출력 신호를 송수신하는 인터페이스부, 데이터를 저장하고 상기 데이터의 기록 및 독출을 제공하는 플래시 메모리부 및 상기 입출력 신호에 기반하여 상기 플래시 메모리부를 제어하는 FTL부를 포함하고, 상기 인터페이스부는 복수 개의 제1 섹터들 중 첫 번째 섹터의 순번 및 상기 복수 개의 제1 섹터들의 개수를 포함하는 트림 명령을 수신하고, 상기 FTL부는 상기 트림 명령에 기반하여 상기 복수 개의 제1 섹터들을 삭제될 섹터들을 나타내는 트림 섹터 목록에 추가하고, 상기 플래시 메모리부에서 상기 트림 섹터 목록이 나타내는 복수 개의 제2 섹터들을 삭제하는, 솔리드 스테이트 디스크가 제공된다.According to still another aspect of the present invention, an interface unit for transmitting and receiving an input / output signal, a flash memory unit for storing data and providing writing and reading of the data, and an FTL unit for controlling the flash memory unit based on the input / output signal, The interface unit receives a trim command including a sequence number of a first sector among a plurality of first sectors and a number of the plurality of first sectors, and the FTL unit generates the plurality of first sectors based on the trim command. In addition to a trim sector list indicating sectors to be deleted, a solid state disk is provided which deletes a plurality of second sectors represented by the trim sector list in the flash memory section.
상기 인터페이스부는 제3 섹터에 대한 기록 명령을 수신할 수 있고, 상기 FTL부는 상기 트림 섹터 목록을 검색하여, 상기 트림 섹터 목록이 나타내는 상기 복수 개의 제2 섹터들 중 상기 제3 섹터를 제외할 수 있다.The interface unit may receive a write command for a third sector, and the FTL unit may search the trim sector list to exclude the third sector of the plurality of second sectors indicated by the trim sector list. .
상기 트림 섹터 목록은 복수 개의 제1차 인덱스들을 포함할 수 있고, 각각의 제1차 인덱스는 상기 트림 섹터 목록이 나타내는 상기 복수 개의 제2 섹터들 중 상기 제1차 인덱스에게 할당된 부분 범위 내의 순번을 갖는 섹터들을 나타낼 수 있는 정보를 저장할 수 있다.The trim sector list may include a plurality of primary indices, each primary index being a sequence within a partial range allocated to the primary index among the plurality of second sectors represented by the trim sector list. It can store information that can represent the sectors having.
상기 복수 개의 제1차 인덱스들 각각에게 할당된 상기 부분 범위들은 동일한 크기를 가질 수 있다.The partial ranges allocated to each of the plurality of primary indexes may have the same size.
각각의 상기 제1차 인덱스는 복수 개의 제2차 인덱스들을 포함할 수 있다.Each primary index may include a plurality of secondary indexes.
상기 FTL부는 상기 복수 개의 제1차 인덱스들 중 상기 첫 번째 섹터의 순번이 포함되는 부분 범위에 대응하는 제1 인덱스를 검색하고, 상기 제1 인덱스가 가리키는 데이터 구조에 상기 첫 번째 섹터의 순번 및 상기 복수 개의 제1 섹터들의 개수에 대응하는 정보를 추가함으로써 상기 트림 섹터 목록에 상기 트림 명령이 나타내는 상기 복수 개의 섹터들을 삭제될 섹터들로서 추가할 수 있다.The FTL unit searches for a first index corresponding to a partial range including a sequence number of the first sector among the plurality of primary indexes, and includes the sequence number of the first sector and the data structure indicated by the first index. By adding the information corresponding to the number of the plurality of first sectors, the plurality of sectors indicated by the trim command may be added to the trim sector list as sectors to be deleted.
상기 데이터 구조는 링크된 리스트일 수 있다.The data structure may be a linked list.
상기 FTL부는 상기 제1 인덱스의 부분 범위가 상기 복수 개의 섹터들 전부를 포함하지 않는 경우 상기 복수 개의 제1 섹터들 중 마지막 섹터를 포함하는 연속적인 일부를 복수 개의 제2 섹터들로 분할하고, 상기 제1 인덱스의 다음 인덱스인 제2 인덱스가 가리키는 데이터 구조에 상기 복수 개의 제2 섹터들의 첫 번째 섹터의 순번 및 상기 복수 개의 제2 섹터들의 개수를 추가함으로써 상기 트림 섹터 목록에 상기 트림 명령이 나타내는 상기 복수 개의 섹터들을 삭제될 섹터들로서 추가할 수 있고, 상기 복수 개의 제2 섹터들의 첫 번째 섹터는 상기 제2 인덱스의 부분 범위에 포함되는 가장 작은 순번을 갖는 섹터일 수 있다.If the partial range of the first index does not include all of the plurality of sectors, the FTL unit divides a continuous part including a last sector among the plurality of first sectors into a plurality of second sectors, and The trim command indicated in the trim sector list by adding the sequence number of the first sector of the plurality of second sectors and the number of the plurality of second sectors to a data structure indicated by a second index that is a next index of the first index. A plurality of sectors may be added as sectors to be deleted, and the first sector of the plurality of second sectors may be a sector having the smallest sequence number included in the partial range of the second index.
상기 FTL부는 상기 플래시 메모리부를 로그 블록 및 데이터 블록으로 나누어 관리할 수 있고, 상기 FTL부는 기록이 요청된 섹터를 로그 블록에 기록하고, 로그 블록에 기록된 섹터들 중 상기 트림 섹터 목록이 나타내지 않는 섹터만을 데이터 블록으로 복사함으로써 상기 트림 섹터 목록이 나타내는 복수 개의 제2 섹터들을 삭제할 수 있다.The FTL unit may manage the flash memory unit by dividing the block into a log block and a data block, and the FTL unit records a sector requested to be recorded in a log block and a sector that is not represented by the trim sector list among the sectors recorded in the log block. By copying only the data blocks, the plurality of second sectors indicated by the trim sector list can be deleted.
삭제가 요청된 블록을 나타내는 정보를 FTL 내 또는 FTL 외부의 데이터로 저장하고, 이후에 블록들을 삭제하는 방법 및 장치가 제공된다.A method and apparatus are provided for storing information indicative of a block requested to be deleted as data within or outside the FTL, and subsequently deleting the blocks.
트림 명령에 의해 삭제가 요청된 섹터를 나타내는 정보를 FTL 내 또는 FTL 외부의 데이터로 저장하고, 이후에 섹터들을 삭제하는 방법 및 장치가 제공된다.A method and apparatus are provided for storing information indicative of sectors requested to be erased by a trim command as data within or outside the FTL, and subsequently deleting the sectors.
하이브리드-매핑 FTL을 사용하여 병합, 가비지 컬렉션 또는 클리닝 등의 기능이 수행될때 블록 또는 섹터를 삭제하는 방법 및 장치가 제공된다.Methods and apparatus are provided for deleting blocks or sectors when a function such as merging, garbage collection, or cleaning is performed using hybrid-mapping FTL.
상기의 방법 및 장치는 호스트의 파일 시스템이 전달하는 트림 명령을 저장 장치에서 처리할 수 있게 한다. 파일 시스템은 트림 명령을 사용하여 I/O를 분산 시킬 수 있고, 저장 장치는 삭제의 발생을 감소시킬 수 있다. 따라서, 저장 장치의 I/O 성능이 개선될 수 있으며, 저장 장치가 사용하는 플래시 메모리의 마모도가 개선될 수 있다.The above methods and apparatus allow the storage device to process the trim commands delivered by the host's file system. File systems can use trim commands to distribute I / O, and storage can reduce the occurrence of erase. Thus, the I / O performance of the storage device can be improved and the wear of the flash memory used by the storage device can be improved.
도 1은 본 발명의 일 실시예에 따른 SSD의 구성을 도시한다.
도 2는 본 발명의 일 예에 따른 트림 명령의 구조를 도시한다.
도 3은 본 발명의 일 예에 따른 트림 섹터 목록의 데이터 구조를 도시한다.
도 4는 본 발명의 일 예에 따른 병합을 도시한다.
도 5는 본 발명의 일 예에 따른 FTL부의 구조를 도시한다.
도 6은 본 발명의 일 실시예에 따른 플래시 메모리 제어 방법을 도시한다.
도 7은 본 발명의 일 실시예에 따른 SSD의 트림 명령 처리 방법을 도시한다.1 illustrates a configuration of an SSD according to an embodiment of the present invention.
2 illustrates a structure of a trim command according to an embodiment of the present invention.
3 illustrates a data structure of a trim sector list according to an example of the present invention.
4 illustrates a merge according to an example of the present invention.
5 illustrates a structure of an FTL unit according to an embodiment of the present invention.
6 illustrates a flash memory control method according to an embodiment of the present invention.
7 illustrates a trim command processing method of an SSD according to an embodiment of the present invention.
이하에서, 본 발명의 일 실시예를, 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
Hereinafter, an embodiment of the present invention will be described in detail with reference to the accompanying drawings. However, the present invention is not limited to or limited by the embodiments. Like reference symbols in the drawings denote like elements.
도 1은 본 발명의 일 실시예에 따른 SSD의 구성을 도시한다.1 illustrates a configuration of an SSD according to an embodiment of the present invention.
SSD(100)는 인터페이스부(110), FTL부(120) 및 플래시 메모리부(130)를 포함한다. SSD(110)는 DRAM부(140)를 더 포함할 수 있다.The
인터페이스부(110)는 SSD(100)를 사용하는 호스트(190)와의 인터페이스 기능을 수행한다. 일반적으로, 인터페이스부(110)는 호스트(190)의 저장 장치 제어기 (Storage Controller)와 직접 연결된다. 인터페이스부(110)는 SCSI, IDE 또는 SATA 등과 같은 특정 스팩(Specification)에 따른 인터페이스를 제공할 수 있다.The
인터페이스부(110)는 호스트(190)로부터 입력 신호(예컨대 제어 신호 또는 입력 데이터)를 수신하고, 호스트(190)로 출력 신호(예컨대 제어 신호 또는 출력 데이터)를 송신한다. 입력 신호 및 출력 신호는 ATA 명령과 같은 특정 스팩에 따른 신호일 수 있다.The
또한 인터페이스부(110)는 호스트(190)로부터 수신한 특정 스팩(예컨대, ATA 표준)의 명령을 FTL부(120)가 필요로 하는 명령(예컨대, 독출(Read), 기록(Write) 또는 트림 명령)의 형태로 변환할 수 있다.In addition, the
FTL부(120)는 플래시 메모리부(130)를 제어한다. FTL부(120)는 FTL의 기능을 제공하는 모듈일 수 있다. FTL부(120)는 인터페이스부(110)가 송수신하는 입출력신호에 기반하여 플래시 메모리부(130)로부터 데이터를 독출하거나, 플래시 메모리부(130)로 데이터를 기록한다.The
본 발명의 일 실시예에 따른 FTL부(120)의 구조가 하기에서 도 5를 참조하여 상세히 설명된다.The structure of the
플래시 메모리부(130)는 데이터를 저장하고, FTL부(120)의 제어에 따라 데이터의 독출 및 기록을 제공한다.The
플래시 메모리부(130)는 블록(Block)을 단위로 데이터를 독출 및 기록한다. FTL부(120)는 블록을 단위로 데이터의 독출 및 기록을 요청한다. 호스트(190)의 파일 시스템이 사용하는 입출력 단위(예컨대, 섹터(Sector))의 크기가 블록의 크기와 다른 경우(일반적으로, 섹터의 크기는 블록의 크기의 정수배이다.), FTL부(120)는 섹터를 단위로 플래시 메모리부(130)의 데이터에 접근할 수 있다.The
플래시 메모리부(130)는 내부의 플래시 메모리 칩(Chip)을 직접 제어하기 위한 NAND 제어기(132)를 포함할 수 있다.The
플래시 메모리부(130)는 복수 개의 플레인(Plane)(134)들을 포함할 수 있다. 각각의 플레인들은 하나 이상의 플래시 메모리 칩(Chip)을 포함한다. 복수 개의 플레인들은 각각 별개로 또는 수 개씩 짝을 이루어서 독립적으로 동작할 수 있다.The
DRAM(Dynamic Random Access Memory)부(140)는 FTL부(120)와 연결되어 휘발성(Volatile) 데이터를 저장한다. DRAM부(140)는 FTL부(120) 내에 포함된 구성 요소일 수 있다.The DRAM (Dynamic Random Access Memory)
SSD(100)는 복수 개의 플래시 메모리부(130)를 포함할 수 있다. 각각의 플래시 메모리부(130)는 독립적인 버스로 연결되어, 병렬로 동작할 수 있다.The
하기에서 SSD(100)의 트림 명령(TRIM Command) 처리에 대해 설명한다.A trim command processing of the
인터페이스부(110)는 호스트(190)로부터 트림 명령을 나타내는 입력 신호를 수신한다. 인터페이스부(110)는 수신된 트림 명령을 FTL부(120)로 전송한다.The
트림 명령은 복수 개의 삭제될 섹터들을 나타내는 식별 정보를 포함한다. 트림 명령의 구조의 일 예가 하기에서 도 2를 참조하여 상세히 설명된다.The trim command includes identification information indicating a plurality of sectors to be deleted. An example of the structure of a trim command is described in detail with reference to FIG. 2 below.
FTL부(120)는 트림 명령에 기반하여 복수 개의 삭제될 섹터들을 트림 섹터 목록에 추가한다.The
트림 섹터 목록은 FTL부(120)가 관리하는 데이터 구조(Data Structure)로, 트림 명령을 통해 전달된 삭제될 섹터들의 목록을 저장한다. 트림 섹터 목록은 DRAM부(140)에 저장될 수 있다.The trim sector list is a data structure managed by the
트림 섹터 목록의 일 예가 하기에서 도 3을 참조하여 상세히 설명된다.An example of a trim sector list is described in detail with reference to FIG. 3 below.
트림 섹터 목록이 나타내는 섹터(즉, 하나 이상의 트림 명령에 의해 트림 섹터 목록에 추가되어온 섹터들)들은 FTL부(120)가 수행하는 특정한 작업에 의하여, 플래시 메모리부(130)에서 실제로 삭제된다.Sectors represented by the trim sector list (ie, sectors added to the trim sector list by one or more trim commands) are actually deleted from the
상기 특정한 작업은 주기적인 병합(Merge), 가비지 컬렉션(Garbage Collection) 또는 클리닝(Cleaning)일 수 있다. 본 발명의 일 예에 따른 병합이 하기에서 도 4를 참조하여 상세히 설명된다.The specific task may be periodic merging, garbage collection, or cleaning. Merging according to an example of the present invention is described in detail with reference to FIG. 4 below.
호스트(190)는 이미 트림 섹터 목록에 포함된 섹터에 대해 기록을 요청할 수 있다. 이러한 경우, 기록이 요청된 섹터는 이후 플래시 메모리부(130)에서 삭제가 되어서는 아니된다.The
따라서, 인터페이스부(110)가 특정 섹터에 대한 기록 요청을 수신하여, 상기 기록 요청을 FTL부(120)로 전송하면, FTL부(120)는 트림 섹터 목록을 검색하여, 트림 섹터 목록이 나타내는 섹터들 중 기록이 요청된 섹터가 포함되어 있는지 여부를 판단한다.Therefore, when the
만약, 기록이 요청된 섹터가 트림 섹터 목록이 나타내는 섹터에 포함된 경우, FTL부(120)는 트림 섹터 목록이 나타내는 섹터에서 상기의 기록이 요청된 섹터를 제외한다. If the sector requested to be recorded is included in the sector indicated by the trim sector list, the
도 2는 본 발명의 일 예에 따른 트림 명령의 구조를 도시한다.2 illustrates a structure of a trim command according to an embodiment of the present invention.
트림 명령(200)은 복수 개의 섹터들을 나타내는 식별 정보(210)를 포함한다. 식별 정보(210)는 어떤 섹터들이 삭제의 대상이 되는 섹터들인지를 식별할 수 있게 하는 정보이다.The
식별 정보(210)는 삭제의 대상인 복수 개의 일련의 섹터들 중 첫 번째 섹터의 순번(Number)(220) 및 상기 복수 개의 일련의 섹터들의 개수(230)(또는, 길이)를 포함할 수 있다.The
개수(230)의 최대 값은 트림 명령의 스팩 또는 호스트(190)와의 인터페이스 스팩에 따라 제한될 수 있다.The maximum value of the
하나의 트림 명령이 복수 개의 식별 정보(210)들을 포함할 수도 있다.One trim command may include a plurality of
도 3은 본 발명의 일 예에 따른 트림 섹터 목록의 데이터 구조를 도시한다.3 illustrates a data structure of a trim sector list according to an example of the present invention.
일반적으로, FTL부(120)가 트림 명령을 처리하는 동안, 호스트(190)는 상기 트림 명령의 결과를 기다리며 정지된다. 따라서, FTL부(120)는 트림 섹터 목록을 관리(예컨대, 섹터의 삽입, 삭제 및 검색)하기에 용이한 데이터 구조를 사용하여야 한다.In general, while the
본 예에서, 트림 섹터 목록은 복수 개의 인덱스(310)를 포함한다.In this example, the trim sector list includes a plurality of
SSD(100)가 데이터의 입출력을 위해 제공하는 섹터들은 일정한 범위(예컨대 0에서 2047까지)의 순번(Number)을 갖는다. 순번들의 전체 범위는 복수 개의 부분 범위들로 분할될 수 있다.Sectors provided by the
각각의 인덱스(310)에게는 복수 개의 부분 범위들 중 하나의 부분 범위가 할당된다. 도 3에서, 제1 인덱스, 제2 인덱스, 제3 인덱스 및 제4 인덱스에게 각각 (0~511), (512~1023), (1024~1535) 및 (1536~2047)의 부분 범위가 할당되었다.Each
상기 복수 개의 부분 범위들은 모두 같은 크기일 수 있다. 즉, 각각의 인덱스는 동일한 부분 범위의 섹터들을 커버할 수 있다.The plurality of partial ranges may all be the same size. In other words, each index may cover sectors of the same subrange.
각각의 인덱스는 트림 섹터 목록이 나타내는 삭제될 섹터들 중 자신에게 할당된 부분 범위 내의 순번을 갖는 섹터들을 나타낼 수 있는 정보를 저장한다.Each index stores information that can indicate sectors with a sequence number within the subrange assigned to them among the sectors to be deleted indicated by the trim sector list.
트림 명령(200)에 의해 전송된 삭제될 섹터들의 순번(200) 및 개수(230)가 FTL부(120)에 전송되면, FTL부(120)는 상기 삭제될 섹터들이 속하는 부분 범위에 대응하는 인덱스에 상기 삭제될 섹터들을 나타낼 수 있는 정보를 저장한다. 예컨대, FTL부(120)는 상기 인덱스가 가리키는 데이터 구조에, 삭제될 섹터들 중 첫 번째 섹터의 순번(200) 및 삭제될 섹터들의 개수(230)에 대응하는 정보를 추가한다.When the
상기 삭제될 섹터들을 나타낼 수 있는 정보는 링크된 리스트의 노드(320)일 수 있다. 이 경우, 인덱스(310)는 첫 번째 노드(320)를 가리키는 링크(또는 포인터(Pointer))일 수 있다. 링크된 리스트(330)는 복수 개의 일련의 섹터들 중 첫 번째 섹터의 순번(330) 및 상기 복수 개의 일련의 섹터들의 개수(340)(또는, 길이)를 포함할 수 있다. 또한 노드(320)는 다음 노드(320)를 가리키는 링크(350)를 포함할 수 있다.The information that may indicate the sectors to be deleted may be
섹터의 전체 범위가 클 경우, 각각의 인덱스는 복수 개의 2차 인덱스들을 포함할 수 있다. 이러한 경우, 인덱스에게 할당된 부분 범위는 재분할되어, 2차 인덱스들 각각에게 할당된다. 인덱스가 2차 이상의 계층적(Hierarchical) 구조를 이루는 것도 가능하다.If the entire range of sectors is large, each index may include a plurality of secondary indices. In this case, the partial range assigned to the index is repartitioned and assigned to each of the secondary indexes. It is also possible for an index to have a hierarchical structure of more than two orders.
하기에서, 트림 명령에 따라 FTL부(120)가 트림 섹터 목록을 조작하는 일 예를 설명한다.Hereinafter, an example in which the
삭제될 섹터들의 삽입Insertion of sectors to be deleted
인터페이스부(110)가 순번(220)은 0, 개수(230)는 100인 트림 명령을 수신하면, FTL부(120)는 0에서 99까지의 순번을 갖는 섹터들을 트림 섹터 목록에 포함시킨다.When the
FTL부(120)는 순번(200)이 포함되는 부분 범위에 대응하는 인덱스(310)를 검색한다. 검색된 제1 인덱스의 부분 범위는 0에서 511까지다. 상기의 0에서 99까지의 순번들은 모두 제1 인덱스에게 할당된 부분 범위에 포함된다.The
따라서, FTL부(120)는 제1 인덱스에, 순번(330)이 0이고, 개수(340)가 100인 노드(320)를 삽입한다.Accordingly, the
다음으로, 인터페이스부(110)가 순번(220)은 200, 개수(230)는 10인 트림 명령을 수신하면, FTL부(120)는 200에서 209까지의 순번을 갖는 섹터들을 트림 섹터 목록에 포함시킨다.Next, when the
상기의 순번들은 모두 제1 인덱스에게 할당된 부분 범위에 포함된다.All of the above sequence numbers are included in the partial range allocated to the first index.
따라서, FTL부(120)는 제1 인덱스에, 순번(330)이 200이고, 개수(340)가 10인 노드(320)를 삽입한다. 상기 삽입된 노드(320)는 이전에 제1 인덱스에 삽입된 노드(320)들 중 맨 끝의 테일(Tail) 노드(320)의 링크(350)에 의해 연결될 수 있다. 또는, 상기 삽입된 노드(320)는 이전에 제1 인덱스에 삽입된 노드(320)들 중 맨 처음의 헤드(Head) 노드(320)를 자신의 링크(350)로 가리킬 수 있다. 이 경우, 제1 인덱스는 새로 삽입된 노드(320)를 가리키도록 자신의 값을 변경한다.Therefore, the
만약, 새로 삽입될 노드(320)가 나타내는 섹터의 범위가 이전에 삽입된 노드(320)가 나타내는 섹터의 범위와 전부 또는 일부 중복되거나, 양자의 범위가 서로 연속적인 것인 경우, 새로 삽입될 노드(320) 및 이전에 삽입될 노드(320)는 병합될 수 있다. 이러한 경우, 일반적으로 이전에 삽입된 노드(320)의 순번(330) 또는 개수(340)가 변경됨으로써 양자가 병합된다.If the range of the sector represented by the
2개의 인덱스의 부분 범위를 걸치는 섹터들의 삽입Insert sectors that span a subrange of two indices
삭제될 섹터들의 순번이 두 개 이상의 인덱스들에게 대응하는 부분 범위들에게 걸쳐 있는 경우, 삭제될 복수 개의 섹터들은 분할되어 각각의 인덱스에 추가되어야 한다.If the sequence of sectors to be deleted spans partial ranges corresponding to two or more indices, the plurality of sectors to be deleted must be divided and added to each index.
즉, 삭제될 섹터들의 순번이 일부는 n 번째 인덱스의 부분 범위에 해당되고, 나머지 일부는 n+1 번째 인덱스의 부분 범위에 해당되는 경우, FTL부(120)는 트림 명령이 나타내는 삭제될 전체 섹터들로부터 n+1 번째 인덱스의 부분 범위에 해당하는 복수 개의 섹터들을 분할한다.That is, when the sequence number of sectors to be deleted is a part range of the n th index and the other part is a partial range of the n + 1 th index, the
전체 섹터들 중 n 번째 인덱스의 부분 범위에 해당하는 일부를 제1 섹터들, n+1 번째 인덱스의 부분 범위에 해당하는 남은 일부를 제2 섹터들로 명명한다.A portion corresponding to the partial range of the n-th index among all sectors is named first sectors, and the remaining portion corresponding to the partial range of the n + 1th index is named second sectors.
제1 섹터들의 순번(330)은 원래의 전체 섹터들의 순번(330)이다.The
제2 섹터들의 순번(330)은 n+1 번째 인덱스의 부분 범위 중 가장 작은 값이다. 즉, 제2 섹터들의 첫 번째 섹터는 n+1 번째 인덱스의 부분 범위에 포함되는 가장 작은 순번을 갖는 섹터이다.The
제1 섹터들의 개수(340)는 n 번째 인덱스의 부분 범위에 포함되는 섹터의 개수이며, 제2 섹터들의 개수(340)는 n+1 번째 인덱스의 부분 범위에 포함되는 섹터의 개수이다.The
또한, 제1 섹터들은 원래의 전체 섹터들 중 첫 번째 섹터를 포함하는 연속적인(Sequential) 섹터들이며, 제2 섹터들은 원래의 전체 섹터들 중 마지막 섹터를 포함하는 연속적인 섹터들이다.Further, the first sectors are sequential sectors including the first of the original whole sectors, and the second sectors are consecutive sectors including the last sector of the original whole sectors.
삭제될 섹터들의 개수가 아주 많은 경우, 전체 섹터들이 수 개의 부분으로 분할될 수 있다. 트림 명령의 식별 정보(210)가 나타내는 복수 개의 섹터들의 개수(230)가 가질 수 있는 최대값이 k일 때(상기 k는 ATA와 같은 인터페이스 스팩 또는 트림 명령 스팩에 의해 결정된 값일 수 있다), 인덱스의 부분 범위의 크기가 k 이상이면 전체 섹터들은 많아도 2개의 부분으로만 분할된다.If the number of sectors to be erased is very large, the entire sectors may be divided into several parts. When the maximum value that the
예컨대, 인터페이스부(110)가 순번(220)은 1000, 개수(230)는 100인 트림 명령을 수신하면, FTL부(120)는 1000에서 1099까지의 순번을 갖는 섹터들을 트림 섹터 목록에 포함시켜야 한다.For example, when the
상기의 순번들 중 일부(1000에서 1023까지, 24개)는 제2 인덱스에게 할당된 부분 범위에 포함되고, 나머지 일부(1024에서 1099까지, 76개)는 제3 인덱스에게 할당된 부분 범위에 포함된다.Some of the above sequence numbers (1000 to 1023, 24) are included in the partial range assigned to the second index, and the remaining portions (1024 to 1099, 76) are included in the partial range assigned to the third index. do.
따라서, FTL부(120)는 제2 인덱스에 순번(330)이 1000이고, 개수(340)가 24인 노드(320)를 삽입하며, 제3 인덱스에 순번(330)이 1024이고, 개수(340)가 76인 노드(320)를 삽입한다.Accordingly, the
삭제될 섹터들의 삽입 후 특정 섹터의 제외Exclusion of certain sectors after insertion of sectors to be deleted
특정 섹터를 트림 섹터 목록이 나타내는 섹터들 중에서 제거해야 할 경우가 있다. 예컨대, 인터페이스부(110)가 특정 섹터에 대한 기록 명령을 수신하여 상기 기록 명령을 FTL부(120)로 전송하면, FTL부(120)는 상기 특정 섹터를 트림 섹터 목록이 나타내는 섹터에서 제외해야 한다.It is sometimes necessary to remove a particular sector from among the sectors indicated by the trim sector list. For example, when the
이러한 경우, FTL부(120)는 우선 트림 섹터 목록이 나타내는 섹터들 중 특정 섹터가 포함되어 있는지 여부를 검색한다.In this case, the
우선, FTL부(120)는 상기 특정 섹터의 순번이 속하는 부분 범위에 대응하는 인덱스(310)를 계산한다.First, the
FTL부(120)는 상기 인덱스(310)가 가리키는 데이터 구조에서 삭제될 섹터들을 나타내는 정보들을 검색한다.The
상기 정보가 링크된 리스트의 노드(320)일 경우, FTL부(120)는 링크(350)를 따라 모든 노드(320)들을 검색할 수 있으며, 노드(320)들 각각의 순번(330) 및 개수(340)를 통하여 특정 섹터의 순번이 노드(320)가 나타내는 섹터들 중에 포함되어 있는지를 알 수 있다.When the information is the
트림 섹터 목록이 나타내는 섹터들 중 특정 섹터가 포함된 경우, FTL부(120)는 상기 특정 섹터를 트림 섹터 목록이 나타내는 섹터들에서 제외시킨다.When a particular sector among the sectors indicated by the trim sector list is included, the
FTL부(120)가 상기 특정 섹터의 순번이 속하는 노드를 찾은 경우, FTL부(120)는 상기 노드를 2개의 노드(320)로 분할한다. 제1 노드는 상기 특정 섹터 이전의 순번을 갖는 섹터들을 나타내는 노드이며, 제2 노드는 상기 특정 섹터 이후의 순번을 갖는 섹터들을 나타내는 노드이다.When the
특정 섹터가 검색된 노드가 나타내는 섹터들 중 맨 앞 또는 맨 뒤의 것인 경우, FTL부(120)는 검색된 노드의 순번(320) 또는 길이(340) 값을 변경함으로써 특정 섹터를 제외시킬 수 있다.If the specific sector is the first or the last of the sectors indicated by the searched node, the
예컨대, 제4 인덱스가 가리키는 링크된 리스트에 순번(330)이 1536이고 개수(340)가 5인 노드가 저장되어 있고, 이후 순번이 1538번인 노드가 제외되는 경우, FTL부(120)는 상기 노드를 2개의 노드, 즉 순번(330)이 1536이고, 개수(340)가 2인 제1 노드 및 순번(330)이 1539이고, 개수(340)가 2인 제2 노드로 분할하고, 제1 노드 및 제2 노드를 저장한다.For example, when the node having the
도 4는 본 발명의 일 예에 따른 병합을 도시한다.4 illustrates a merge according to an example of the present invention.
하이브리드-매핑은 플래시 메모리부(130)의 블록들을 로그 블록(Log Block)(410) 및 데이터 블록(Data Block)(420)으로 나누어 관리한다.The hybrid-mapping divides the blocks of the
로그 블록(410)은 페이지 매핑(Page Mapping)에 의해 관리될 수 있고, 데이터 블록(420)은 블록 매핑(Block Mapping)에 의해 관리될 수 있다. 따라서, 하이브리드 매핑 방법은 작은 매핑 테이블(Mapping Table)을 사용하면서, 블록 매핑보다 빠른 I/O 성능을 제공할 수 있다.The
하이브리드 매핑을 제공하는 FTL부(120)는 섹터에 대한 기록이 요청되었을 때, 로그 블록(410)에 기록을 수행한다. 로그 블록(410)들이 모두 기록되면, FTL부(120)는 주기적인 병합(Merge)을 통해 로그 블록(410)들의 내용을 데이터 블록(420)으로 복사한다.The
병합 시, FTL부(120)는 트림 섹터 목록(300)을 검색하여 트림 섹터 목록(300)이 나타내는 섹터들 중에 로그 블록(410)이 나타내는(즉, 로그 블록에 기록된) 섹터가 포함되었는지 여부를 검사한다. 로그 블록(410)이 나타내는 섹터가 트림 섹터 목록(300) 내에 있는 경우, 상기 섹터는 불필요한 것이므로 FTL부(120)는 상기 섹터를 병합(즉, 복사)에서 제외한다.When merging, the
즉, FTL부(120)는 로그 블록(410)이 나타내는 섹터들 중 트림 섹터 목록(300)이 나타내지 않는 섹터만을 데이터 블록으로 복사함으로써 트림 섹터 목록(300)이 나타내는 복수 개의 섹터들을 삭제할 수 있다.That is, the
또한, 이미 트림 섹터 목록(300) 내에 있는 섹터에 대해 기록이 요청될 수 있다. 이러한 경우, 기록이 요청된 섹터를 트림 섹터 목록(300) 내에 그대로 두면, 상기 섹터는 로그 블록(410)이 나타내는 섹터임에도 불구하고 병합 시 제외되고 기록 내용이 없어진다. 따라서, FTL부(120)는 로그 블록(410)에 기록을 수행하면서, 트림 섹터 목록(300)에서 상기 섹터를 제외한다.In addition, recording may be requested for sectors that are already in the
전술된 병합에 사용된 기술적 사상은 불필요한 데이터 또는 삭제되지 않는 데이터를 옮기는 작업(예컨대 가비지 컬렉션이나 클리어 작업)에서도 적용될 수 있다. 즉, FTL부(120)는 가비지 컬렉션이나 클리어 작업을 수행할 경우에도 트림 섹터 목록(300)을 참조하여 섹터의 삭제 여부를 판단할 수 있다.The technical concept used in the aforementioned merging may be applied to a task of moving unnecessary data or data that is not deleted (eg, garbage collection or clear operation). That is, even when the garbage collection or clear operation is performed, the
도 5는 본 발명의 일 예에 따른 FTL부의 구조를 도시한다.5 illustrates a structure of an FTL unit according to an embodiment of the present invention.
FTL부(120)는 전술된 하이브리드-매핑을 제공하는 하이브리드-매핑 FTL부일 수 있다.
FTL부(120)는 수신부(510), 제어부(520) 및 저장부(530)를 포함할 수 있다.The
수신부(510)는 인터페이스부(110) 등으로부터 플래시 메모리 저장 장치의 동작에 필요한 명령을 수신한다.The
예컨대, 수신부(510)는 트림 명령(또한, 트림 명령에 포함된 블록의 식별 정보), 블록에 대한 기록 명령을 수신한다.For example, the
저장부(530)는 FTL부(120)의 동작에 필요한 데이터를 저장한다.The
예컨대, 저장부(530)는 삭제될 블록의 목록을 나타내는 트림 섹터 목록을 저장하며, 인덱스(310) 및 노드(320) 등을 트림 섹터 목록의 내부에 저장할 수 있다.For example, the
저장부(530)는 DRAM부(140)일 수 있다. 또한, 저장부(530)는 DRAM부(140)를 제어하기 위한 인터페이스를 의미할 수도 있다. 이러한 경우, 실제 데이터는 DRAM부(140)에 저장된다.The
제어부(520)는 데이터의 독출 및 기록에 필요한 일련의 작업들을 수행하며, 플래시 메모리부(130)를 제어한다.The
예컨대, 제어부(520)는 트림 명령의 식별 정보에 기반하여 복수 개의 블록들을 삭제될 블록으로서 삭제 블록 목록에 추가한다. 제어부(520)는 추가된 삭제 블록 목록을 저장부(530)에 저장한다. 또한, 제어부(520)는 삭제 블록 목록이 나타내는 블록들을 삭제한다. 삭제 작업을 수행하기 위해 제어부(520)는 전술된 병합, 가비지 컬렉션 또는 클리닝 작업을 수행할 수 있으며, 삭제 블록 목록의 내용을 변경하기 위한 작업을 수행할 수 있다.For example, the
앞서 도 1 내지 도 4를 참조하여 설명된 본 발명의 일 실시예에 따른 기술 적 내용들이 본 실시예에도 그대로 적용될 수 있다. 따라서 보다 상세한 설명은 이하 생략하기로 한다.Technical contents according to an embodiment of the present invention described above with reference to FIGS. 1 to 4 may be applied to the present embodiment as it is. Therefore, more detailed description will be omitted below.
특히 도 1 내지 도 4를 참조하여 설명된 섹터는 호스트(190)가 사용하는 파일 시스템에서의 입출력의 단위일 수 있는 반면, 플래시 메모리부(130)에서는 블록이 입출력의 단위일 수 있다. 따라서, 전술된 실시예에서의 섹터에 대한 기술적 사상은 본 실시예에서의 블록에 적용될 수 있다. 또한, 전술된 실세예에서의 트림 섹터 목록에 대한 기술적 사상은 본 실시예에서의 삭제 블록 목록에 적용될 수 있다.In particular, the sector described with reference to FIGS. 1 to 4 may be a unit of input / output in the file system used by the
도 6은 본 발명의 일 실시예에 따른 플래시 메모리 제어 방법을 도시한다.6 illustrates a flash memory control method according to an embodiment of the present invention.
단계(S610)에서, 복수 개의 제1 블록들을 나타내는 식별 정보(예컨대, 트림 명령)을 수신한다.In operation S610, identification information (eg, a trim command) indicating the plurality of first blocks is received.
단계(S620)에서, 수신된 식별 정보에 기반하여 삭제 블록 목록에 복수 개의 제1 블록들이 삭제될 블록으로서 추가된다.In operation S620, a plurality of first blocks is added as a block to be deleted to the deletion block list based on the received identification information.
단계(S630)에서, 제2 블록에 대한 기록 명령이 수신된다.In step S630, a write command for the second block is received.
단계(S640)에서, 제2 블록이 삭제 블록 목록에 포함되는지 여부가 검사된다.In step S640, it is checked whether the second block is included in the deletion block list.
단계(S650)에서, 제2 블록이 삭제 블록 목록에 포함되는 경우, 삭제 블록 목록이 나타내는 복수 개의 제3 블록들 중 제2 블록이 제외된다.In operation S650, when the second block is included in the deleted block list, the second block among the plurality of third blocks represented by the deleted block list is excluded.
단계(S660)에서 삭제 블록 목록이 나타내는 복수 개의 제3 블록들이 삭제된다.In operation S660, the plurality of third blocks indicated by the deletion block list is deleted.
앞서 도 1 내지 도 5를 참조하여 설명된 본 발명의 일 실시예에 따른 기술 적 내용들이 본 실시예에도 그대로 적용될 수 있다. 따라서 보다 상세한 설명은 이하 생략하기로 한다.Technical contents according to an embodiment of the present invention described above with reference to FIGS. 1 to 5 may be applied to the present embodiment as it is. Therefore, more detailed description will be omitted below.
도 7은 본 발명의 일 실시예에 따른 SSD의 트림 명령 처리 방법을 도시한다.7 illustrates a trim command processing method of an SSD according to an embodiment of the present invention.
단계(S710)에서, 트림 명령이 수신된다. 트림 명령은, 복수 개의 제1 섹터들 중 첫 번째 섹터의 순번 및 상기 복수 개의 제1 섹터들의 개수를 포함한다.In step S710, a trim command is received. The trim command includes the order of the first sector of the plurality of first sectors and the number of the plurality of first sectors.
후술할 단계들(S720 내지 S750)에서, 수신된 트림 명령에 기반하여 복수 개의 제1 섹터들이 트림 섹터 목록에 삭제될 섹터들로서 추가된다.In steps S720 to S750 to be described below, a plurality of first sectors are added as sectors to be deleted to the trim sector list based on the received trim command.
트림 섹터 목록은 복수 개의 제1차 인덱스들을 포함한다. 각각의 제1차 인덱스는 트림 섹터 목록이 나타내는 복수 개의 제2 섹터들 중 제1차 인덱스에게 할당된 부분 범위 내의 순번을 갖는 섹터들을 나타낼 수 있는 정보를 포함한다.The trim sector list includes a plurality of primary indices. Each primary index includes information that may indicate sectors having a sequence number within a partial range allocated to the primary index among the plurality of second sectors indicated by the trim sector list.
단계(S720)에서, 제1차 인덱스들 중 제1 섹터들의 첫 번째 섹터의 순번이 포함되는 부분 범위에 대응하는 인덱스가 검색된다. 검색된 인덱스를 제1 인덱스로 명명한다.In step S720, an index corresponding to a partial range including the order of the first sector of the first sectors among the first indexes is searched. The searched index is named the first index.
단계(S730)에서, 제1 인덱스의 부분 범위가 제1 섹터들 전부를 포함하는지 여부가 검사된다. 제1 인덱스의 부분 범위가 제1 섹터들 전부를 포함하면 하기의 단계들(S740 내지 S742)이 실행된 후 단계(S750)가 실행되고, 그렇지 않은 경우 단계(S750)가 바로 실행된다.In step S730, it is checked whether the partial range of the first index includes all of the first sectors. If the partial range of the first index includes all of the first sectors, step S750 is executed after the following steps S740 to S742 are executed, otherwise step S750 is immediately executed.
단계(S740)에서, 제1 섹터들 중 마지막 섹터를 포함하는 연속적인 일부가 복수 개의 제3 섹터들로 분할된다.In step S740, the continuous portion including the last sector of the first sectors is divided into a plurality of third sectors.
단계(S742)에서, 제1 인덱스의 다음 인덱스인 제2 인덱스가 가리키는 데이터 구조에 제3 섹터들의 첫 번째 섹터의 순번 및 제3 섹터들의 개수가 추가 된다.In step S742, the order of the first sector of the third sectors and the number of third sectors are added to the data structure indicated by the second index, which is the next index of the first index.
이 때, 제3 섹터들의 첫 번째 섹터는 제2 인덱스의 부분 범위에 포함되는 가장 작은 순번을 갖는 섹터이다.At this time, the first sector of the third sectors is the sector having the smallest sequence number included in the partial range of the second index.
데이터 구조는 링크된 리스트일 수 있다.The data structure can be a linked list.
단계(S750)에서, 제1 인덱스가 가리키는 데이터 구조에 제1 섹터들의 첫 번째 섹터의 순번 및 제1 섹터들의 개수에 대응하는 정보가 추가된다.In operation S750, information corresponding to the order of the first sector and the number of the first sectors of the first sectors is added to the data structure indicated by the first index.
단계(S760)에서, 제4 섹터에 대한 기록 명령이 수신된다.In step S760, a write command for the fourth sector is received.
단계(S770)에서, 제4 섹터가 트림 섹터 목록에 포함되는지 여부가 검사된다. 제4 섹터가 트림 섹터 목록에 포함되는 경우, 단계(S780)이 실행된다.In step S770, it is checked whether the fourth sector is included in the trim sector list. If the fourth sector is included in the trim sector list, step S780 is executed.
단계(S780)에서, 트림 섹터 목록이 나타내는 제2 섹터들 중 제4 섹터가 제외된다.In step S780, a fourth sector of the second sectors indicated by the trim sector list is excluded.
후술할 단계들(S790 및 S792)에서, 트림 섹터 목록이 나타내는 제2 섹터들이 삭제된다.In steps S790 and S792 to be described later, the second sectors indicated by the trim sector list are deleted.
단계(S790)에서, 기록이 요청된 섹터가 로그 블록에 기록된다.In step S790, the sector whose recording is requested is recorded in the log block.
단계(S792)에서, 로그 블록에 기록된 섹터들 중 트림 섹터 목록이 나타내지 않는 섹터만이 데이터 블록으로 복사된다.In step S792, only sectors of the sectors recorded in the log block that are not represented by the trim sector list are copied to the data block.
앞서 도 1 내지 도 6를 참조하여 설명된 본 발명의 일 실시예에 따른 기술 적 내용들이 본 실시예에도 그대로 적용될 수 있다. 따라서 보다 상세한 설명은 이하 생략하기로 한다.
Technical contents according to an embodiment of the present invention described above with reference to FIGS. 1 to 6 may be applied to the present embodiment as it is. Therefore, more detailed description will be omitted below.
본 발명의 일 실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(Magnetic Media), CD-ROM, DVD와 같은 광기록 매체(Optical Media), 플롭티컬 디스크(Floptical Disk)와 같은 자기-광 매체(Magneto-Optical Media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.Method according to an embodiment of the present invention is implemented in the form of program instructions that can be executed by various computer means may be recorded on a computer readable medium. The computer readable medium may include program instructions, data files, data structures, etc. alone or in combination. The program instructions recorded on the medium may be those specially designed and constructed for the present invention or may be available to those skilled in the art of computer software. Examples of the computer-readable recording medium include magnetic media such as a hard disk, a floppy disk and a magnetic tape, optical recording media such as CD-ROM and DVD, magnetic recording media such as a floppy disk Optical media, and hardware devices specifically configured to store and execute program instructions such as ROM, RAM, flash memory, and the like. Examples of program instructions include not only machine code generated by a compiler, but also high-level language code that can be executed by a computer using an interpreter or the like. The hardware device described above may be configured to operate as one or more software modules to perform the operations of the present invention, and vice versa.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.As described above, the present invention has been described by way of limited embodiments and drawings, but the present invention is not limited to the above embodiments, and those skilled in the art to which the present invention pertains various modifications and variations from such descriptions. This is possible.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.Therefore, the scope of the present invention should not be limited to the described embodiments, but should be determined by the equivalents of the claims, as well as the claims.
100: SSD
120: FTL부
190: 호스트100: SSD
120: FTL section
190: host
Claims (20)
상기 트림 명령에 기반하여 트림 섹터 목록에 상기 복수 개의 제1 섹터들을 삭제될 섹터들로서 추가하는 단계; 및
상기 트림 섹터 목록이 나타내는 복수 개의 제2 섹터들을 삭제하는 단계
를 포함하고,
상기 트림 섹터 목록이 나타내는 복수 개의 제2 섹터들을 삭제하는 단계는,
기록이 요청된 섹터를 로그 블록에 기록하는 단계; 및
상기 로그 블록에 기록된 섹터들 중 상기 트림 섹터 목록이 나타내지 않는 섹터만을 데이터 블록으로 복사하는 단계
를 포함하는, 솔리드 스테이트 디스크의 트림 명령 처리 방법.Receiving a trim command including a sequence number of a first sector of a plurality of first sectors and a number of the plurality of first sectors;
Adding the plurality of first sectors as sectors to be deleted to a trim sector list based on the trim command; And
Deleting a plurality of second sectors indicated by the trim sector list.
Including,
The deleting of the plurality of second sectors indicated by the trim sector list may include:
Writing a sector requested for recording to a log block; And
Copying only the sectors recorded in the log block, which are not represented by the trim sector list, to the data block;
Including a trim command processing method of a solid state disk.
제3 섹터에 대한 기록 명령을 수신하는 단계; 및
상기 트림 섹터 목록을 검색하여, 상기 트림 섹터 목록이 나타내는 상기 복수 개의 제2 섹터들 중 상기 제3 섹터를 제외하는 단계
를 더 포함하는, 솔리드 스테이트 디스크의 트림 명령 처리 방법.The method of claim 5,
Receiving a write command for the third sector; And
Retrieving the trim sector list and excluding the third sector of the plurality of second sectors indicated by the trim sector list
The trim command processing method of the solid state disk further comprising.
상기 트림 섹터 목록은 복수 개의 제1차 인덱스들을 포함하고, 각각의 제1차 인덱스는 상기 트림 섹터 목록이 나타내는 상기 복수 개의 제2 섹터들 중 상기 제1차 인덱스에게 할당된 부분 범위 내의 순번을 갖는 섹터들을 나타낼 수 있는 정보를 포함하는, 솔리드 스테이트 디스크의 트림 명령 처리 방법.The method of claim 5,
The trim sector list includes a plurality of primary indices, each primary index having a sequence number within a partial range assigned to the primary index among the plurality of second sectors represented by the trim sector list. A method of processing a trim command for a solid state disk, comprising information that can indicate sectors.
상기 트림 섹터 목록에 상기 트림 명령이 나타내는 상기 복수 개의 제1 섹터들을 삭제될 섹터들로서 추가하는 단계는,
상기 복수 개의 제1차 인덱스들 중 상기 첫 번째 섹터의 순번이 포함되는 부분 범위에 대응하는 제1 인덱스를 검색하는 단계; 및
상기 제1 인덱스가 가리키는 데이터 구조에 상기 첫 번째 섹터의 순번 및 상기 복수 개의 제1 섹터들의 개수에 대응하는 정보를 추가하는 단계;
를 포함하는, 솔리드 스테이트 디스크의 트림 명령 처리 방법.The method of claim 7, wherein
Adding the plurality of first sectors indicated by the trim command to the trim sector list as sectors to be deleted,
Retrieving a first index corresponding to a partial range including a sequence number of the first sector among the plurality of primary indexes; And
Adding information corresponding to the order of the first sector and the number of the plurality of first sectors to a data structure indicated by the first index;
Including a trim command processing method of a solid state disk.
상기 데이터 구조는 링크된 리스트인, 솔리드 스테이트 디스크의 트림 명령 처리 방법.9. The method of claim 8,
And said data structure is a linked list.
상기 트림 섹터 목록에 상기 트림 명령이 나타내는 상기 복수 개의 제1 섹터들을 삭제될 섹터들로서 추가하는 단계는,
상기 제1 인덱스의 부분 범위가 상기 복수 개의 제1 섹터들 전부를 포함하지 않는 경우, 상기 복수 개의 제1 섹터들 중 마지막 섹터를 포함하는 연속적인 일부를 복수 개의 제2 섹터들로 분할하는 단계; 및
상기 제1 인덱스의 다음 인덱스인 제2 인덱스가 가리키는 데이터 구조에 상기 복수 개의 제2 섹터들의 첫 번째 섹터의 순번 및 상기 복수 개의 제2 섹터들의 개수를 추가하는 단계
를 더 포함하고, 상기 복수 개의 제2 섹터들의 첫 번째 섹터는 상기 제2 인덱스의 부분 범위에 포함되는 가장 작은 순번을 갖는 섹터인, 솔리드 스테이트 디스크의 트림 명령 처리 방법.9. The method of claim 8,
Adding the plurality of first sectors indicated by the trim command to the trim sector list as sectors to be deleted,
When the partial range of the first index does not include all of the plurality of first sectors, dividing a continuous portion including a last one of the plurality of first sectors into a plurality of second sectors; And
Adding a sequence number of a first sector of the plurality of second sectors and a number of the plurality of second sectors to a data structure indicated by a second index that is a next index of the first index
Wherein the first sector of the plurality of second sectors is a sector having the smallest sequence number included in the partial range of the second index.
데이터를 저장하고 상기 데이터의 기록 및 독출을 제공하는 플래시 메모리부; 및
상기 입출력 신호에 기반하여 상기 플래시 메모리부를 제어하는 FTL(Flash Translation Layer)부
를 포함하고,
상기 인터페이스부는 복수 개의 제1 섹터들 중 첫 번째 섹터의 순번 및 상기 복수 개의 제1 섹터들의 개수를 포함하는 트림 명령을 수신하고,
상기 FTL부는 상기 트림 명령에 기반하여 상기 복수 개의 제1 섹터들을 삭제될 섹터들을 나타내는 트림 섹터 목록에 추가하고, 상기 플래시 메모리부에서 상기 트림 섹터 목록이 나타내는 복수 개의 제2 섹터들을 삭제하는, 솔리드 스테이트 디스크.An interface unit for transmitting and receiving an input / output signal;
A flash memory unit for storing data and providing writing and reading of the data; And
Flash Translation Layer (FTL) unit for controlling the flash memory unit based on the input / output signal
Including,
The interface unit receives a trim command including a sequence number of a first sector among a plurality of first sectors and a number of the plurality of first sectors,
The FTL unit adds the plurality of first sectors to a trim sector list indicating sectors to be deleted based on the trim command, and deletes a plurality of second sectors represented by the trim sector list in the flash memory unit. disk.
상기 인터페이스부는 제3 섹터에 대한 기록 명령을 수신하고,
상기 FTL부는 상기 트림 섹터 목록을 검색하여, 상기 트림 섹터 목록이 나타내는 상기 복수 개의 제2 섹터들 중 상기 제3 섹터를 제외하는, 솔리드 스테이트 디스크.The method of claim 12,
The interface unit receives a write command for a third sector,
And the FTL portion retrieves the trim sector list to exclude the third sector of the plurality of second sectors indicated by the trim sector list.
상기 트림 섹터 목록은 복수 개의 제1차 인덱스들을 포함하고, 각각의 제1차 인덱스는 상기 트림 섹터 목록이 나타내는 상기 복수 개의 제2 섹터들 중 상기 제1차 인덱스에게 할당된 부분 범위 내의 순번을 갖는 섹터들을 나타낼 수 있는 정보를 저장하는, 솔리드 스테이트 디스크.The method of claim 12,
The trim sector list includes a plurality of primary indices, each primary index having a sequence number within a partial range assigned to the primary index among the plurality of second sectors represented by the trim sector list. A solid state disk, storing information that can represent sectors.
상기 복수 개의 제1차 인덱스들 각각에게 할당된 상기 부분 범위들은 동일한 크기를 갖는, 솔리드 스테이트 디스크.15. The method of claim 14,
And the partial ranges assigned to each of the plurality of primary indices have the same size.
각각의 상기 제1차 인덱스는 복수 개의 제2차 인덱스들을 포함하는, 솔리드 스테이트 디스크.15. The method of claim 14,
Each primary index comprises a plurality of secondary indices.
상기 FTL부는 상기 복수 개의 제1차 인덱스들 중 상기 첫 번째 섹터의 순번이 포함되는 부분 범위에 대응하는 제1 인덱스를 검색하고, 상기 제1 인덱스가 가리키는 데이터 구조에 상기 첫 번째 섹터의 순번 및 상기 복수 개의 제1 섹터들의 개수에 대응하는 정보를 추가함으로써 상기 트림 섹터 목록에 상기 트림 명령이 나타내는 상기 복수 개의 섹터들을 삭제될 섹터들로서 추가하는, 솔리드 스테이트 디스크.15. The method of claim 14,
The FTL unit searches for a first index corresponding to a partial range including a sequence number of the first sector among the plurality of primary indexes, and includes the sequence number of the first sector and the data structure indicated by the first index. And adding the plurality of sectors indicated by the trim command as sectors to be deleted to the trim sector list by adding information corresponding to the number of the plurality of first sectors.
상기 데이터 구조는 링크된 리스트인, 솔리드 스테이트 디스크.18. The method of claim 17,
And the data structure is a linked list.
상기 FTL부는, 상기 제1 인덱스의 부분 범위가 상기 복수 개의 섹터들 전부를 포함하지 않는 경우 상기 복수 개의 제1 섹터들 중 마지막 섹터를 포함하는 연속적인 일부를 복수 개의 제2 섹터들로 분할하고, 상기 제1 인덱스의 다음 인덱스인 제2 인덱스가 가리키는 데이터 구조에 상기 복수 개의 제2 섹터들의 첫 번째 섹터의 순번 및 상기 복수 개의 제2 섹터들의 개수를 추가함으로써 상기 트림 섹터 목록에 상기 트림 명령이 나타내는 상기 복수 개의 섹터들을 삭제될 섹터들로서 추가하고,
상기 복수 개의 제2 섹터들의 첫 번째 섹터는 상기 제2 인덱스의 부분 범위에 포함되는 가장 작은 순번을 갖는 섹터인, 솔리드 스테이트 디스크.18. The method of claim 17,
When the partial range of the first index does not include all of the plurality of sectors, the FTL unit divides a continuous part including the last sector among the plurality of first sectors into a plurality of second sectors, The trim command indicates to the trim sector list by adding the sequence number of the first sector of the plurality of second sectors and the number of the plurality of second sectors to a data structure indicated by a second index that is a next index of the first index. Add the plurality of sectors as sectors to be deleted,
And a first sector of the plurality of second sectors is a sector having the smallest order number included in the partial range of the second index.
상기 FTL부는 상기 플래시 메모리부를 로그 블록 및 데이터 블록으로 나누어 관리하고,
상기 FTL부는 기록이 요청된 섹터를 로그 블록에 기록하고, 로그 블록에 기록된 섹터들 중 상기 트림 섹터 목록이 나타내지 않는 섹터만을 데이터 블록으로 복사함으로써 상기 트림 섹터 목록이 나타내는 복수 개의 제2 섹터들을 삭제하는, 솔리드 스테이트 디스크.The method of claim 12,
The FTL unit manages the flash memory unit by dividing it into log blocks and data blocks.
The FTL unit deletes a plurality of second sectors indicated by the trim sector list by recording a sector requested to be recorded in a log block, and copying only sectors not indicated by the trim sector list among the sectors recorded in the log block into the data block. That, solid state disk.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020100095115A KR101247388B1 (en) | 2010-09-30 | 2010-09-30 | Method and apparatus for processing trim command in hybrid-mapping flash translation layer |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020100095115A KR101247388B1 (en) | 2010-09-30 | 2010-09-30 | Method and apparatus for processing trim command in hybrid-mapping flash translation layer |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| KR20120033544A KR20120033544A (en) | 2012-04-09 |
| KR101247388B1 true KR101247388B1 (en) | 2013-03-25 |
Family
ID=46136289
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| KR1020100095115A Expired - Fee Related KR101247388B1 (en) | 2010-09-30 | 2010-09-30 | Method and apparatus for processing trim command in hybrid-mapping flash translation layer |
Country Status (1)
| Country | Link |
|---|---|
| KR (1) | KR101247388B1 (en) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10884947B2 (en) | 2017-11-17 | 2021-01-05 | SK Hynix Inc. | Methods and memory systems for address mapping |
| US10896125B2 (en) | 2017-11-17 | 2021-01-19 | SK Hynix Inc. | Garbage collection methods and memory systems for hybrid address mapping |
| US11592982B2 (en) | 2020-08-11 | 2023-02-28 | Samsung Electronics Co., Ltd. | Memory storage device and electronic device including nonvolatile memory |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9323667B2 (en) * | 2012-04-12 | 2016-04-26 | Violin Memory Inc. | System and method for managing trim operations in a flash memory system using mapping tables and block status tables |
Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR100597411B1 (en) | 2004-08-04 | 2006-07-05 | 삼성전자주식회사 | Method and device for efficient data management of files |
-
2010
- 2010-09-30 KR KR1020100095115A patent/KR101247388B1/en not_active Expired - Fee Related
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR100597411B1 (en) | 2004-08-04 | 2006-07-05 | 삼성전자주식회사 | Method and device for efficient data management of files |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10884947B2 (en) | 2017-11-17 | 2021-01-05 | SK Hynix Inc. | Methods and memory systems for address mapping |
| US10896125B2 (en) | 2017-11-17 | 2021-01-19 | SK Hynix Inc. | Garbage collection methods and memory systems for hybrid address mapping |
| US11592982B2 (en) | 2020-08-11 | 2023-02-28 | Samsung Electronics Co., Ltd. | Memory storage device and electronic device including nonvolatile memory |
Also Published As
| Publication number | Publication date |
|---|---|
| KR20120033544A (en) | 2012-04-09 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN102576293B (en) | Data management in solid storage device and Bedding storage system | |
| US9256542B1 (en) | Adaptive intelligent storage controller and associated methods | |
| US8327076B2 (en) | Systems and methods of tiered caching | |
| US8806173B2 (en) | Elimination of duplicate written records | |
| CN108628542B (en) | A file merging method and controller | |
| CN107391774B (en) | Garbage Collection Method for Log File System Based on Data Deduplication | |
| US11875055B2 (en) | Storage device that receives inode address information to reduce external communication overhead | |
| US10037149B2 (en) | Read cache management | |
| US20120036313A1 (en) | Method for controlling memory card and method for controlling nonvolatile semiconductor memory | |
| US20110208898A1 (en) | Storage device, computing system, and data management method | |
| US10468061B1 (en) | Indexing zones for storage devices | |
| EP4372540B1 (en) | Techniques for zoned namespace (zns) storage using multiple zones | |
| US8862819B2 (en) | Log structure array | |
| KR101374065B1 (en) | Data Distinguish Method and Apparatus Using Algorithm for Chip-Level-Parallel Flash Memory | |
| JP2019028954A (en) | Storage control apparatus, program, and deduplication method | |
| US11003577B2 (en) | Information processing apparatus, information processing method, and non-transitory computer-readable storage medium for storing program of access control with respect to semiconductor device memory | |
| KR101247388B1 (en) | Method and apparatus for processing trim command in hybrid-mapping flash translation layer | |
| US20160070744A1 (en) | System and method for reading file blocks | |
| KR101191650B1 (en) | Apparatus and method for mapping the data address in NAND flash memory | |
| KR101596833B1 (en) | Storage devices based on flash memory and user devices containing it | |
| US10078467B2 (en) | Storage device, computer readable recording medium, and storage device control method | |
| US20110264848A1 (en) | Data recording device | |
| KR20020081696A (en) | Method and system for reducing fragmentation | |
| KR101681401B1 (en) | Method for arranging data storage block of flash memory based on file extension | |
| US20230418798A1 (en) | Information processing apparatus and information processing method |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A201 | Request for examination | ||
| PA0109 | Patent application |
St.27 status event code: A-0-1-A10-A12-nap-PA0109 |
|
| PA0201 | Request for examination |
St.27 status event code: A-1-2-D10-D11-exm-PA0201 |
|
| P11-X000 | Amendment of application requested |
St.27 status event code: A-2-2-P10-P11-nap-X000 |
|
| P13-X000 | Application amended |
St.27 status event code: A-2-2-P10-P13-nap-X000 |
|
| D13-X000 | Search requested |
St.27 status event code: A-1-2-D10-D13-srh-X000 |
|
| D14-X000 | Search report completed |
St.27 status event code: A-1-2-D10-D14-srh-X000 |
|
| E902 | Notification of reason for refusal | ||
| PE0902 | Notice of grounds for rejection |
St.27 status event code: A-1-2-D10-D21-exm-PE0902 |
|
| P11-X000 | Amendment of application requested |
St.27 status event code: A-2-2-P10-P11-nap-X000 |
|
| P13-X000 | Application amended |
St.27 status event code: A-2-2-P10-P13-nap-X000 |
|
| PG1501 | Laying open of application |
St.27 status event code: A-1-1-Q10-Q12-nap-PG1501 |
|
| E902 | Notification of reason for refusal | ||
| PE0902 | Notice of grounds for rejection |
St.27 status event code: A-1-2-D10-D21-exm-PE0902 |
|
| E13-X000 | Pre-grant limitation requested |
St.27 status event code: A-2-3-E10-E13-lim-X000 |
|
| P11-X000 | Amendment of application requested |
St.27 status event code: A-2-2-P10-P11-nap-X000 |
|
| P13-X000 | Application amended |
St.27 status event code: A-2-2-P10-P13-nap-X000 |
|
| E701 | Decision to grant or registration of patent right | ||
| PE0701 | Decision of registration |
St.27 status event code: A-1-2-D10-D22-exm-PE0701 |
|
| GRNT | Written decision to grant | ||
| PR0701 | Registration of establishment |
St.27 status event code: A-2-4-F10-F11-exm-PR0701 |
|
| PR1002 | Payment of registration fee |
St.27 status event code: A-2-2-U10-U11-oth-PR1002 Fee payment year number: 1 |
|
| PG1601 | Publication of registration |
St.27 status event code: A-4-4-Q10-Q13-nap-PG1601 |
|
| R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-5-5-R10-R18-oth-X000 |
|
| R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-5-5-R10-R18-oth-X000 |
|
| FPAY | Annual fee payment |
Payment date: 20151214 Year of fee payment: 4 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 4 |
|
| P22-X000 | Classification modified |
St.27 status event code: A-4-4-P10-P22-nap-X000 |
|
| FPAY | Annual fee payment |
Payment date: 20161227 Year of fee payment: 5 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 5 |
|
| P22-X000 | Classification modified |
St.27 status event code: A-4-4-P10-P22-nap-X000 |
|
| LAPS | Lapse due to unpaid annual fee | ||
| PC1903 | Unpaid annual fee |
St.27 status event code: A-4-4-U10-U13-oth-PC1903 Not in force date: 20180320 Payment event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE |
|
| PC1903 | Unpaid annual fee |
St.27 status event code: N-4-6-H10-H13-oth-PC1903 Ip right cessation event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE Not in force date: 20180320 |
|
| R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-5-5-R10-R18-oth-X000 |
|
| R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-5-5-R10-R18-oth-X000 |