[go: up one dir, main page]

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 PDF

Info

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
Application number
KR1020100095115A
Other languages
Korean (ko)
Other versions
KR20120033544A (en
Inventor
김주현
원유집
Original Assignee
한양대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한양대학교 산학협력단 filed Critical 한양대학교 산학협력단
Priority to KR1020100095115A priority Critical patent/KR101247388B1/en
Publication of KR20120033544A publication Critical patent/KR20120033544A/en
Application granted granted Critical
Publication of KR101247388B1 publication Critical patent/KR101247388B1/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid 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.

Figure R1020100095115
Figure R1020100095115

Description

하이브리드-매핑 FTL에서 TRIM 명령어를 처리하기 위한 방법 및 장치{METHOD AND APPARATUS FOR PROCESSING TRIM COMMAND IN HYBRID-MAPPING FLASH TRANSLATION LAYER}METHOD AND APPARATUS FOR PROCESSING TRIM COMMAND IN HYBRID-MAPPING FLASH TRANSLATION LAYER}

아래의 실시예들은 하이브리드-매핑 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 SSD 100 includes an interface unit 110, an FTL unit 120, and a flash memory unit 130. The SSD 110 may further include a DRAM unit 140.

인터페이스부(110)는 SSD(100)를 사용하는 호스트(190)와의 인터페이스 기능을 수행한다. 일반적으로, 인터페이스부(110)는 호스트(190)의 저장 장치 제어기 (Storage Controller)와 직접 연결된다. 인터페이스부(110)는 SCSI, IDE 또는 SATA 등과 같은 특정 스팩(Specification)에 따른 인터페이스를 제공할 수 있다.The interface unit 110 performs an interface function with the host 190 using the SSD 100. In general, the interface unit 110 is directly connected to a storage controller of the host 190. The interface unit 110 may provide an interface according to a specific specification such as SCSI, IDE, or SATA.

인터페이스부(110)는 호스트(190)로부터 입력 신호(예컨대 제어 신호 또는 입력 데이터)를 수신하고, 호스트(190)로 출력 신호(예컨대 제어 신호 또는 출력 데이터)를 송신한다. 입력 신호 및 출력 신호는 ATA 명령과 같은 특정 스팩에 따른 신호일 수 있다.The interface unit 110 receives an input signal (eg, a control signal or input data) from the host 190, and transmits an output signal (eg, a control signal or output data) to the host 190. The input signal and the output signal may be signals according to a specific specification such as an ATA command.

또한 인터페이스부(110)는 호스트(190)로부터 수신한 특정 스팩(예컨대, ATA 표준)의 명령을 FTL부(120)가 필요로 하는 명령(예컨대, 독출(Read), 기록(Write) 또는 트림 명령)의 형태로 변환할 수 있다.In addition, the interface unit 110 may request a command of the specific specification (eg, ATA standard) received from the host 190 (eg, a read, write, or trim command) that the FTL unit 120 requires. ) Into the form

FTL부(120)는 플래시 메모리부(130)를 제어한다. FTL부(120)는 FTL의 기능을 제공하는 모듈일 수 있다. FTL부(120)는 인터페이스부(110)가 송수신하는 입출력신호에 기반하여 플래시 메모리부(130)로부터 데이터를 독출하거나, 플래시 메모리부(130)로 데이터를 기록한다.The FTL unit 120 controls the flash memory unit 130. The FTL unit 120 may be a module that provides a function of the FTL. The FTL unit 120 reads data from the flash memory unit 130 or writes data to the flash memory unit 130 based on input / output signals transmitted and received by the interface unit 110.

본 발명의 일 실시예에 따른 FTL부(120)의 구조가 하기에서 도 5를 참조하여 상세히 설명된다.The structure of the FTL unit 120 according to an embodiment of the present invention will be described in detail with reference to FIG. 5 below.

플래시 메모리부(130)는 데이터를 저장하고, FTL부(120)의 제어에 따라 데이터의 독출 및 기록을 제공한다.The flash memory unit 130 stores data and provides reading and writing of the data under the control of the FTL unit 120.

플래시 메모리부(130)는 블록(Block)을 단위로 데이터를 독출 및 기록한다. FTL부(120)는 블록을 단위로 데이터의 독출 및 기록을 요청한다. 호스트(190)의 파일 시스템이 사용하는 입출력 단위(예컨대, 섹터(Sector))의 크기가 블록의 크기와 다른 경우(일반적으로, 섹터의 크기는 블록의 크기의 정수배이다.), FTL부(120)는 섹터를 단위로 플래시 메모리부(130)의 데이터에 접근할 수 있다.The flash memory unit 130 reads and writes data in units of blocks. The FTL unit 120 requests reading and writing of data in units of blocks. If the size of the input / output unit (eg, sector) used by the file system of the host 190 is different from the size of the block (generally, the size of the sector is an integer multiple of the size of the block). ) May access data of the flash memory unit 130 in units of sectors.

플래시 메모리부(130)는 내부의 플래시 메모리 칩(Chip)을 직접 제어하기 위한 NAND 제어기(132)를 포함할 수 있다.The flash memory unit 130 may include a NAND controller 132 for directly controlling an internal flash memory chip.

플래시 메모리부(130)는 복수 개의 플레인(Plane)(134)들을 포함할 수 있다. 각각의 플레인들은 하나 이상의 플래시 메모리 칩(Chip)을 포함한다. 복수 개의 플레인들은 각각 별개로 또는 수 개씩 짝을 이루어서 독립적으로 동작할 수 있다.The flash memory unit 130 may include a plurality of planes 134. Each plane includes one or more flash memory chips. The plurality of planes may operate independently of each other or in pairs.

DRAM(Dynamic Random Access Memory)부(140)는 FTL부(120)와 연결되어 휘발성(Volatile) 데이터를 저장한다. DRAM부(140)는 FTL부(120) 내에 포함된 구성 요소일 수 있다.The DRAM (Dynamic Random Access Memory) unit 140 is connected to the FTL unit 120 to store volatile data. The DRAM unit 140 may be a component included in the FTL unit 120.

SSD(100)는 복수 개의 플래시 메모리부(130)를 포함할 수 있다. 각각의 플래시 메모리부(130)는 독립적인 버스로 연결되어, 병렬로 동작할 수 있다.The SSD 100 may include a plurality of flash memory units 130. Each flash memory unit 130 may be connected to an independent bus and operate in parallel.

하기에서 SSD(100)의 트림 명령(TRIM Command) 처리에 대해 설명한다.A trim command processing of the SSD 100 will be described below.

인터페이스부(110)는 호스트(190)로부터 트림 명령을 나타내는 입력 신호를 수신한다. 인터페이스부(110)는 수신된 트림 명령을 FTL부(120)로 전송한다.The interface unit 110 receives an input signal indicating a trim command from the host 190. The interface unit 110 transmits the received trim command to the FTL unit 120.

트림 명령은 복수 개의 삭제될 섹터들을 나타내는 식별 정보를 포함한다. 트림 명령의 구조의 일 예가 하기에서 도 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 unit 120 adds a plurality of sectors to be deleted to the trim sector list based on the trim command.

트림 섹터 목록은 FTL부(120)가 관리하는 데이터 구조(Data Structure)로, 트림 명령을 통해 전달된 삭제될 섹터들의 목록을 저장한다. 트림 섹터 목록은 DRAM부(140)에 저장될 수 있다.The trim sector list is a data structure managed by the FTL unit 120 and stores a list of sectors to be deleted transmitted through a trim command. The trim sector list may be stored in the DRAM unit 140.

트림 섹터 목록의 일 예가 하기에서 도 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 flash memory unit 130 by a specific operation performed by the FTL unit 120.

상기 특정한 작업은 주기적인 병합(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 host 190 may request recording for sectors already included in the trim sector list. In this case, the sector requested to be written should not be deleted from the flash memory unit 130 afterwards.

따라서, 인터페이스부(110)가 특정 섹터에 대한 기록 요청을 수신하여, 상기 기록 요청을 FTL부(120)로 전송하면, FTL부(120)는 트림 섹터 목록을 검색하여, 트림 섹터 목록이 나타내는 섹터들 중 기록이 요청된 섹터가 포함되어 있는지 여부를 판단한다.Therefore, when the interface unit 110 receives a recording request for a specific sector and transmits the recording request to the FTL unit 120, the FTL unit 120 searches for a trim sector list, and the sector indicated by the trim sector list. Among them, it is determined whether the sector requested for recording is included.

만약, 기록이 요청된 섹터가 트림 섹터 목록이 나타내는 섹터에 포함된 경우, FTL부(120)는 트림 섹터 목록이 나타내는 섹터에서 상기의 기록이 요청된 섹터를 제외한다. If the sector requested to be recorded is included in the sector indicated by the trim sector list, the FTL unit 120 excludes the sector requested to be recorded from the sector indicated by the trim sector list.

도 2는 본 발명의 일 예에 따른 트림 명령의 구조를 도시한다.2 illustrates a structure of a trim command according to an embodiment of the present invention.

트림 명령(200)은 복수 개의 섹터들을 나타내는 식별 정보(210)를 포함한다. 식별 정보(210)는 어떤 섹터들이 삭제의 대상이 되는 섹터들인지를 식별할 수 있게 하는 정보이다.The trim command 200 includes identification information 210 representing a plurality of sectors. The identification information 210 is information for identifying which sectors are sectors to be deleted.

식별 정보(210)는 삭제의 대상인 복수 개의 일련의 섹터들 중 첫 번째 섹터의 순번(Number)(220) 및 상기 복수 개의 일련의 섹터들의 개수(230)(또는, 길이)를 포함할 수 있다.The identification information 210 may include a number 220 of a first sector of a plurality of sectors to be deleted and a number 230 (or length) of the plurality of sectors.

개수(230)의 최대 값은 트림 명령의 스팩 또는 호스트(190)와의 인터페이스 스팩에 따라 제한될 수 있다.The maximum value of the number 230 may be limited according to the specification of the trim command or the interface specification with the host 190.

하나의 트림 명령이 복수 개의 식별 정보(210)들을 포함할 수도 있다.One trim command may include a plurality of identification information 210.

도 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 FTL unit 120 processes the trim command, the host 190 stops waiting for the result of the trim command. Accordingly, the FTL unit 120 should use a data structure that is easy to manage the trim sector list (eg, insert, delete, and retrieve sectors).

본 예에서, 트림 섹터 목록은 복수 개의 인덱스(310)를 포함한다.In this example, the trim sector list includes a plurality of indices 310.

SSD(100)가 데이터의 입출력을 위해 제공하는 섹터들은 일정한 범위(예컨대 0에서 2047까지)의 순번(Number)을 갖는다. 순번들의 전체 범위는 복수 개의 부분 범위들로 분할될 수 있다.Sectors provided by the SSD 100 for input and output of data have a number (Number) of a certain range (for example, 0 to 2047). The entire range of sequences may be divided into a plurality of sub ranges.

각각의 인덱스(310)에게는 복수 개의 부분 범위들 중 하나의 부분 범위가 할당된다. 도 3에서, 제1 인덱스, 제2 인덱스, 제3 인덱스 및 제4 인덱스에게 각각 (0~511), (512~1023), (1024~1535) 및 (1536~2047)의 부분 범위가 할당되었다.Each index 310 is assigned one subrange of the plurality of subranges. In FIG. 3, partial ranges of (0 to 511), (512 to 1023), (1024 to 1535), and (1536 to 2047) are allocated to the first index, the second index, the third index, and the fourth index, respectively. .

상기 복수 개의 부분 범위들은 모두 같은 크기일 수 있다. 즉, 각각의 인덱스는 동일한 부분 범위의 섹터들을 커버할 수 있다.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 sequence number 200 and the number 230 of sectors to be deleted transmitted by the trim command 200 are transmitted to the FTL unit 120, the FTL unit 120 indexes the range corresponding to the partial range to which the sectors to be deleted belong. Stores information that can indicate the sectors to be deleted. For example, the FTL unit 120 adds information corresponding to the sequence number 200 of the first sector and the number 230 of sectors to be deleted, to the data structure indicated by the index.

상기 삭제될 섹터들을 나타낼 수 있는 정보는 링크된 리스트의 노드(320)일 수 있다. 이 경우, 인덱스(310)는 첫 번째 노드(320)를 가리키는 링크(또는 포인터(Pointer))일 수 있다. 링크된 리스트(330)는 복수 개의 일련의 섹터들 중 첫 번째 섹터의 순번(330) 및 상기 복수 개의 일련의 섹터들의 개수(340)(또는, 길이)를 포함할 수 있다. 또한 노드(320)는 다음 노드(320)를 가리키는 링크(350)를 포함할 수 있다.The information that may indicate the sectors to be deleted may be node 320 of the linked list. In this case, the index 310 may be a link (or pointer) pointing to the first node 320. The linked list 330 may include a sequence number 330 of a first sector of the plurality of series and a number 340 (or length) of the plurality of series. Node 320 may also include a link 350 that points to the next node 320.

섹터의 전체 범위가 클 경우, 각각의 인덱스는 복수 개의 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 FTL unit 120 manipulates a trim sector list according to a trim command will be described.

삭제될 섹터들의 삽입Insertion of sectors to be deleted

인터페이스부(110)가 순번(220)은 0, 개수(230)는 100인 트림 명령을 수신하면, FTL부(120)는 0에서 99까지의 순번을 갖는 섹터들을 트림 섹터 목록에 포함시킨다.When the interface unit 110 receives a trim command in which the number 220 is 0 and the number 230 is 100, the FTL unit 120 includes sectors having a sequence number from 0 to 99 in the trim sector list.

FTL부(120)는 순번(200)이 포함되는 부분 범위에 대응하는 인덱스(310)를 검색한다. 검색된 제1 인덱스의 부분 범위는 0에서 511까지다. 상기의 0에서 99까지의 순번들은 모두 제1 인덱스에게 할당된 부분 범위에 포함된다.The FTL unit 120 searches the index 310 corresponding to the partial range in which the sequence number 200 is included. The partial range of the retrieved first index is from 0 to 511. The sequence numbers 0 to 99 are all included in the partial range allocated to the first index.

따라서, FTL부(120)는 제1 인덱스에, 순번(330)이 0이고, 개수(340)가 100인 노드(320)를 삽입한다.Accordingly, the FTL unit 120 inserts the node 320 having the sequence number 330 of 0 and the number 340 of 100 into the first index.

다음으로, 인터페이스부(110)가 순번(220)은 200, 개수(230)는 10인 트림 명령을 수신하면, FTL부(120)는 200에서 209까지의 순번을 갖는 섹터들을 트림 섹터 목록에 포함시킨다.Next, when the interface unit 110 receives a trim command in which the number 220 is 200 and the number 230 is 10, the FTL unit 120 includes sectors having a sequence number from 200 to 209 in the trim sector list. Let's do it.

상기의 순번들은 모두 제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 FTL unit 120 inserts the node 320 having the sequence number 330 of 200 and the number 340 of 10 into the first index. The inserted node 320 may be connected by a link 350 of the tail node 320 at the end of the nodes 320 previously inserted into the first index. Alternatively, the inserted node 320 may point to the link 350 of the first head node 320 among the nodes 320 previously inserted into the first index. In this case, the first index changes its value to point to the newly inserted node 320.

만약, 새로 삽입될 노드(320)가 나타내는 섹터의 범위가 이전에 삽입된 노드(320)가 나타내는 섹터의 범위와 전부 또는 일부 중복되거나, 양자의 범위가 서로 연속적인 것인 경우, 새로 삽입될 노드(320) 및 이전에 삽입될 노드(320)는 병합될 수 있다. 이러한 경우, 일반적으로 이전에 삽입된 노드(320)의 순번(330) 또는 개수(340)가 변경됨으로써 양자가 병합된다.If the range of the sector represented by the node 320 to be newly inserted is overlapped in whole or in part with the range of the sector represented by the node 320 previously inserted, or if the range of both is continuous with each other, the node to be newly inserted. 320 and the node 320 to be inserted previously may be merged. In this case, in general, both are merged by changing the sequence number 330 or the number 340 of the previously inserted node 320.

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 FTL unit 120 determines that all sectors to be deleted indicated by the trim command are included. Splitting a plurality of sectors corresponding to a partial range of the n + 1 th index from the indexes.

전체 섹터들 중 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 sequence number 330 of the first sectors is the sequence number 330 of the original whole sectors.

제2 섹터들의 순번(330)은 n+1 번째 인덱스의 부분 범위 중 가장 작은 값이다. 즉, 제2 섹터들의 첫 번째 섹터는 n+1 번째 인덱스의 부분 범위에 포함되는 가장 작은 순번을 갖는 섹터이다.The sequence number 330 of the second sectors is the smallest value of the partial range of the n + 1 th index. That is, the first sector of the second sectors is the sector with the smallest sequence number included in the partial range of the n + 1 th index.

제1 섹터들의 개수(340)는 n 번째 인덱스의 부분 범위에 포함되는 섹터의 개수이며, 제2 섹터들의 개수(340)는 n+1 번째 인덱스의 부분 범위에 포함되는 섹터의 개수이다.The number 340 of the first sectors is the number of sectors included in the partial range of the nth index, and the number 340 of the second sectors is the number of sectors included in the partial range of the n + 1th index.

또한, 제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 number 230 of the plurality of sectors 230 indicated by the identification information 210 of the trim command may have is k (where k may be a value determined by an interface specification such as ATA or a trim command specification), an index If the size of the partial range of is greater than or equal to k, the entire sectors are divided into only two parts at most.

예컨대, 인터페이스부(110)가 순번(220)은 1000, 개수(230)는 100인 트림 명령을 수신하면, FTL부(120)는 1000에서 1099까지의 순번을 갖는 섹터들을 트림 섹터 목록에 포함시켜야 한다.For example, when the interface unit 110 receives a trim command in which the number 220 is 1000 and the number 230 is 100, the FTL unit 120 should include sectors having a sequence number from 1000 to 1099 in the trim sector list. do.

상기의 순번들 중 일부(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 FTL unit 120 inserts the node 320 having the order number 330 of 1000 and the number 340 of 24 into the second index, and the order number 330 of 1024 and the number 340 of the third index. Inserts node 320 with " 76 "

삭제될 섹터들의 삽입 후 특정 섹터의 제외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 interface unit 110 receives a write command for a specific sector and transmits the write command to the FTL unit 120, the FTL unit 120 should exclude the specific sector from the sector indicated by the trim sector list. .

이러한 경우, FTL부(120)는 우선 트림 섹터 목록이 나타내는 섹터들 중 특정 섹터가 포함되어 있는지 여부를 검색한다.In this case, the FTL unit 120 first searches whether a particular sector is included among the sectors indicated by the trim sector list.

우선, FTL부(120)는 상기 특정 섹터의 순번이 속하는 부분 범위에 대응하는 인덱스(310)를 계산한다.First, the FTL unit 120 calculates an index 310 corresponding to a partial range to which the sequence number of the specific sector belongs.

FTL부(120)는 상기 인덱스(310)가 가리키는 데이터 구조에서 삭제될 섹터들을 나타내는 정보들을 검색한다.The FTL unit 120 searches for information indicating sectors to be deleted in the data structure indicated by the index 310.

상기 정보가 링크된 리스트의 노드(320)일 경우, FTL부(120)는 링크(350)를 따라 모든 노드(320)들을 검색할 수 있으며, 노드(320)들 각각의 순번(330) 및 개수(340)를 통하여 특정 섹터의 순번이 노드(320)가 나타내는 섹터들 중에 포함되어 있는지를 알 수 있다.When the information is the node 320 of the linked list, the FTL unit 120 may search all the nodes 320 along the link 350, and the order number 330 and the number of each of the nodes 320 are different. Through 340, it may be determined whether the order of a particular sector is included among the sectors represented by the node 320.

트림 섹터 목록이 나타내는 섹터들 중 특정 섹터가 포함된 경우, FTL부(120)는 상기 특정 섹터를 트림 섹터 목록이 나타내는 섹터들에서 제외시킨다.When a particular sector among the sectors indicated by the trim sector list is included, the FTL unit 120 excludes the specific sector from the sectors indicated by the trim sector list.

FTL부(120)가 상기 특정 섹터의 순번이 속하는 노드를 찾은 경우, FTL부(120)는 상기 노드를 2개의 노드(320)로 분할한다. 제1 노드는 상기 특정 섹터 이전의 순번을 갖는 섹터들을 나타내는 노드이며, 제2 노드는 상기 특정 섹터 이후의 순번을 갖는 섹터들을 나타내는 노드이다.When the FTL unit 120 finds a node to which the sequence number of the particular sector belongs, the FTL unit 120 divides the node into two nodes 320. The first node is a node representing sectors having a sequence number before the specific sector, and the second node is a node representing sectors having a sequence number after the specific sector.

특정 섹터가 검색된 노드가 나타내는 섹터들 중 맨 앞 또는 맨 뒤의 것인 경우, FTL부(120)는 검색된 노드의 순번(320) 또는 길이(340) 값을 변경함으로써 특정 섹터를 제외시킬 수 있다.If the specific sector is the first or the last of the sectors indicated by the searched node, the FTL unit 120 may exclude the particular sector by changing the value of the sequence number 320 or the length 340 of the searched node.

예컨대, 제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 order number 330 is 1536 and the number 340 is 5 is stored in the linked list indicated by the fourth index, and the node with the order number 1538 is excluded, the FTL unit 120 determines the node. Is divided into two nodes, that is, a first node having a sequence number 330 of 1536, a number 340 of 2, and a second node having a sequence number of 330 of 1539 and a number 340 of 2, and a first node. And a second node.

도 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 flash memory unit 130 into a log block 410 and a data block 420.

로그 블록(410)은 페이지 매핑(Page Mapping)에 의해 관리될 수 있고, 데이터 블록(420)은 블록 매핑(Block Mapping)에 의해 관리될 수 있다. 따라서, 하이브리드 매핑 방법은 작은 매핑 테이블(Mapping Table)을 사용하면서, 블록 매핑보다 빠른 I/O 성능을 제공할 수 있다.The log block 410 may be managed by page mapping, and the data block 420 may be managed by block mapping. Therefore, the hybrid mapping method may provide faster I / O performance than block mapping while using a small mapping table.

하이브리드 매핑을 제공하는 FTL부(120)는 섹터에 대한 기록이 요청되었을 때, 로그 블록(410)에 기록을 수행한다. 로그 블록(410)들이 모두 기록되면, FTL부(120)는 주기적인 병합(Merge)을 통해 로그 블록(410)들의 내용을 데이터 블록(420)으로 복사한다.The FTL unit 120 that provides the hybrid mapping performs a recording in the log block 410 when a recording for the sector is requested. When all the log blocks 410 are written, the FTL unit 120 copies the contents of the log blocks 410 to the data block 420 through periodic merging.

병합 시, FTL부(120)는 트림 섹터 목록(300)을 검색하여 트림 섹터 목록(300)이 나타내는 섹터들 중에 로그 블록(410)이 나타내는(즉, 로그 블록에 기록된) 섹터가 포함되었는지 여부를 검사한다. 로그 블록(410)이 나타내는 섹터가 트림 섹터 목록(300) 내에 있는 경우, 상기 섹터는 불필요한 것이므로 FTL부(120)는 상기 섹터를 병합(즉, 복사)에서 제외한다.When merging, the FTL unit 120 searches the trim sector list 300 to determine whether the sector represented by the log block 410 (ie, recorded in the log block) is included among the sectors indicated by the trim sector list 300. Check it. If the sector represented by the log block 410 is in the trim sector list 300, the sector is unnecessary and the FTL unit 120 excludes the sector from the merge (ie, copy).

즉, FTL부(120)는 로그 블록(410)이 나타내는 섹터들 중 트림 섹터 목록(300)이 나타내지 않는 섹터만을 데이터 블록으로 복사함으로써 트림 섹터 목록(300)이 나타내는 복수 개의 섹터들을 삭제할 수 있다.That is, the FTL unit 120 may delete the plurality of sectors indicated by the trim sector list 300 by copying only the sectors not indicated by the trim sector list 300 among the sectors indicated by the log block 410 into the data block.

또한, 이미 트림 섹터 목록(300) 내에 있는 섹터에 대해 기록이 요청될 수 있다. 이러한 경우, 기록이 요청된 섹터를 트림 섹터 목록(300) 내에 그대로 두면, 상기 섹터는 로그 블록(410)이 나타내는 섹터임에도 불구하고 병합 시 제외되고 기록 내용이 없어진다. 따라서, FTL부(120)는 로그 블록(410)에 기록을 수행하면서, 트림 섹터 목록(300)에서 상기 섹터를 제외한다.In addition, recording may be requested for sectors that are already in the trim sector list 300. In this case, if the sector requested to be recorded is left in the trim sector list 300, the sector is excluded at the time of merging even though the sector indicated by the log block 410 is deleted, and the contents of the recording are lost. Accordingly, the FTL unit 120 excludes the sector from the trim sector list 300 while writing to the log block 410.

전술된 병합에 사용된 기술적 사상은 불필요한 데이터 또는 삭제되지 않는 데이터를 옮기는 작업(예컨대 가비지 컬렉션이나 클리어 작업)에서도 적용될 수 있다. 즉, 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 FTL unit 120 may determine whether to delete the sector with reference to the trim sector list 300.

도 5는 본 발명의 일 예에 따른 FTL부의 구조를 도시한다.5 illustrates a structure of an FTL unit according to an embodiment of the present invention.

FTL부(120)는 전술된 하이브리드-매핑을 제공하는 하이브리드-매핑 FTL부일 수 있다.FTL portion 120 may be a hybrid-mapped FTL portion that provides the hybrid-mapping described above.

FTL부(120)는 수신부(510), 제어부(520) 및 저장부(530)를 포함할 수 있다.The FTL unit 120 may include a receiver 510, a controller 520, and a storage 530.

수신부(510)는 인터페이스부(110) 등으로부터 플래시 메모리 저장 장치의 동작에 필요한 명령을 수신한다.The receiver 510 receives a command necessary for the operation of the flash memory storage device from the interface unit 110 or the like.

예컨대, 수신부(510)는 트림 명령(또한, 트림 명령에 포함된 블록의 식별 정보), 블록에 대한 기록 명령을 수신한다.For example, the receiver 510 receives a trim command (also, identification information of a block included in the trim command) and a write command for the block.

저장부(530)는 FTL부(120)의 동작에 필요한 데이터를 저장한다.The storage unit 530 stores data necessary for the operation of the FTL unit 120.

예컨대, 저장부(530)는 삭제될 블록의 목록을 나타내는 트림 섹터 목록을 저장하며, 인덱스(310) 및 노드(320) 등을 트림 섹터 목록의 내부에 저장할 수 있다.For example, the storage unit 530 may store a trim sector list indicating a list of blocks to be deleted, and store the index 310 and the node 320 in the trim sector list.

저장부(530)는 DRAM부(140)일 수 있다. 또한, 저장부(530)는 DRAM부(140)를 제어하기 위한 인터페이스를 의미할 수도 있다. 이러한 경우, 실제 데이터는 DRAM부(140)에 저장된다.The storage unit 530 may be a DRAM unit 140. In addition, the storage unit 530 may mean an interface for controlling the DRAM unit 140. In this case, the actual data is stored in the DRAM unit 140.

제어부(520)는 데이터의 독출 및 기록에 필요한 일련의 작업들을 수행하며, 플래시 메모리부(130)를 제어한다.The controller 520 performs a series of operations necessary for reading and writing data, and controls the flash memory unit 130.

예컨대, 제어부(520)는 트림 명령의 식별 정보에 기반하여 복수 개의 블록들을 삭제될 블록으로서 삭제 블록 목록에 추가한다. 제어부(520)는 추가된 삭제 블록 목록을 저장부(530)에 저장한다. 또한, 제어부(520)는 삭제 블록 목록이 나타내는 블록들을 삭제한다. 삭제 작업을 수행하기 위해 제어부(520)는 전술된 병합, 가비지 컬렉션 또는 클리닝 작업을 수행할 수 있으며, 삭제 블록 목록의 내용을 변경하기 위한 작업을 수행할 수 있다.For example, the controller 520 adds a plurality of blocks as a block to be deleted to the deletion block list based on the identification information of the trim command. The controller 520 stores the added deletion block list in the storage 530. In addition, the controller 520 deletes the blocks indicated by the deleted block list. In order to perform the delete operation, the controller 520 may perform the merge, garbage collection, or cleaning operation described above, and may perform an operation for changing the contents of the deletion block list.

앞서 도 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 host 190, whereas in the flash memory unit 130, a block may be a unit of input / output. Therefore, the technical idea of the sector in the above-described embodiment can be applied to the block in this embodiment. In addition, the technical concept of the trim sector list in the above-described actual example may be applied to the erased block list in the present embodiment.

도 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)

삭제delete 삭제delete 삭제delete 삭제delete 복수 개의 제1 섹터들 중 첫 번째 섹터의 순번 및 상기 복수 개의 제1 섹터들의 개수를 포함하는 트림 명령을 수신하는 단계;
상기 트림 명령에 기반하여 트림 섹터 목록에 상기 복수 개의 제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.
제5항에 있어서,
제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.
제5항에 있어서,
상기 트림 섹터 목록은 복수 개의 제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.
제7항에 있어서,
상기 트림 섹터 목록에 상기 트림 명령이 나타내는 상기 복수 개의 제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.
제8항에 있어서,
상기 데이터 구조는 링크된 리스트인, 솔리드 스테이트 디스크의 트림 명령 처리 방법.
9. The method of claim 8,
And said data structure is a linked list.
제8항에 있어서,
상기 트림 섹터 목록에 상기 트림 명령이 나타내는 상기 복수 개의 제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.
삭제delete 입출력 신호를 송수신하는 인터페이스부;
데이터를 저장하고 상기 데이터의 기록 및 독출을 제공하는 플래시 메모리부; 및
상기 입출력 신호에 기반하여 상기 플래시 메모리부를 제어하는 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.
제12항에 있어서,
상기 인터페이스부는 제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.
제12항에 있어서,
상기 트림 섹터 목록은 복수 개의 제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.
제14항에 있어서,
상기 복수 개의 제1차 인덱스들 각각에게 할당된 상기 부분 범위들은 동일한 크기를 갖는, 솔리드 스테이트 디스크.
15. The method of claim 14,
And the partial ranges assigned to each of the plurality of primary indices have the same size.
제14항에 있어서,
각각의 상기 제1차 인덱스는 복수 개의 제2차 인덱스들을 포함하는, 솔리드 스테이트 디스크.
15. The method of claim 14,
Each primary index comprises a plurality of secondary indices.
제14항에 있어서,
상기 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.
제17항에 있어서,
상기 데이터 구조는 링크된 리스트인, 솔리드 스테이트 디스크.
18. The method of claim 17,
And the data structure is a linked list.
제17항에 있어서,
상기 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.
제12항에 있어서,
상기 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.
KR1020100095115A 2010-09-30 2010-09-30 Method and apparatus for processing trim command in hybrid-mapping flash translation layer Expired - Fee Related KR101247388B1 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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