KR101465460B1 - 트림 방법 및 데이터 관리 장치 - Google Patents
트림 방법 및 데이터 관리 장치 Download PDFInfo
- Publication number
- KR101465460B1 KR101465460B1 KR20130143665A KR20130143665A KR101465460B1 KR 101465460 B1 KR101465460 B1 KR 101465460B1 KR 20130143665 A KR20130143665 A KR 20130143665A KR 20130143665 A KR20130143665 A KR 20130143665A KR 101465460 B1 KR101465460 B1 KR 101465460B1
- Authority
- KR
- South Korea
- Prior art keywords
- sector
- storage device
- bitmap information
- information
- bit
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
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)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
데이터 관리 장치(500)는 섹터의 비트맵 정보를 포함하는 트림 명령을 생성하는 호스트 장치(510), 비트맵 정보를 이용하여 논리적 섹터 중 무효화 대상인 섹터만을 무효화하는 저장 장치(520) 및 호스트 장치로부터 트림 명령을 저장 장치에 전달하는 인터페이스 장치(530)를 포함한다.
Description
이하 설명하는 기술은 저장 장치에서 수행되는 트림(TRIM) 방법 및 이 트림 방법이 수행되는 데이터 관리 장치에 관한 것이다.
최근에는 자기 디스크에 비하여 읽기/쓰기 시간이 짧고 작은 전력을 소모하며 작은 부피를 차지하는 비휘발성 메모리 장치가 급속하게 자기 디스크를 대체하고 있다. 특히 플래시 메모리를 저장 매체로 사용하며, 내부에 제어기를 갖춘 SSD (Solid State Drive)가 급속히 보급되고 있다.
컴퓨터와 같은 호스트 장치에서 어떤 파일을 삭제하면, 파일 시스템에서는 일단 그 파일이 삭제된 것으로 처리되지만, 플래시 메모리는 하드 디스크와 달리 덮어쓰기(overwrite)가 되지 않기 때문에 플래시 메모리를 사용하는 저장 장치에서 파일을 관리하기 위해서는 복잡한 작업을 수행해야 한다. 일반적으로 저장 장치는 쓰레기 수집(garbage collection) 작업이나 무효화 파일에 대한 병합(merge) 작업 등을 해야 한다.
이러한 과정에서 호스트 장치는 저장 장치에 트림(TRIM) 명령을 전달하여 저장된 데이터의 무효화(삭제) 작업을 수행한다.
종래 트림 명령은 하나의 연속된 섹터에 대한 것이었다. 따라서 논리적으로 연속되지 않은 섹터를 정리하기 위해서는 다수의 트림 명령이 필요했다. 다수의 트림 명령은 플래시 메모리를 이용하는 저장 매체의 특성상 저장 장치의 성능을 저하시키는 문제점이 있다.
이하 설명하는 기술은 플래시 메모리를 사용하는 저장 매체에서 섹터에 대한 비트맵 정보를 포함하는 트림 명령을 이용하여 불연속적인 섹터에 대한 정리가 가능하게 하고자 한다.
이하 설명하는 기술의 해결과제는 이상에서 언급된 것들에 한정되지 않으며, 언급되지 아니한 다른 해결과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
트림 방법은 호스트 장치가 섹터의 비트맵 정보를 포함하는 트림 명령을 생성하는 단계 및 저장 장치가 비트맵 정보를 이용하여 무효화 대상 섹터만을 무효화하는 단계를 포함한다.
비트맵 정보는 저장 장치의 논리적 섹터 중 연속적인 구역에 대하여 이진 비트를 기준으로 무효화 대상인 섹터와 무효화 대상이 아닌 섹터를 식별한다.
데이터 관리 장치는 섹터의 비트맵 정보를 포함하는 트림 명령을 생성하는 호스트 장치, 비트맵 정보를 이용하여 논리적 섹터 중 무효화 대상인 섹터만을 무효화하는 저장 장치 및 호스트 장치로부터 트림 명령을 저장 장치에 전달하는 인터페이스 장치를 포함한다.
저장 장치는 데이터를 저장하는 비휘발성 메모리 및 플래시 메모리를 제어하여, 호스트 장치의 트림 명령에 따라 무효화 동작을 수행하는 제어부를 포함한다.
제어부는 비트맵 정보의 비트에 따라 플래시 메모리의 연속적인 논리적 섹터 구역에 대하여 무효화 작업을 수행한다.
트림 명령은 시작 섹터, 섹터 길이, 비트맵 정보 및 비트 단위를 포함하고, 제어부는 플래시 메모리의 논리적 섹터 중 시작 섹터로부터 섹터 길이를 갖는 구역에 대하여 비트맵 정보를 이용하여 비트 단위가 정의하는 섹터 크기별로 무효화 대상인 섹터를 식별하고, 무효화 대상인 섹터에 대한 무효화 작업을 수행한다.
이하 설명하는 기술은 플래시 메모리를 사용하는 저장 매체에서 불연속적인 섹터에 대한 정리가 하나 또는 종래보다 매우 작은 개수의 명령으로 처리가 가능하다. 따라서 이하 설명하는 기술은 SSD(solid-state drive)와 같은 플래시 메모리 저장 장치의 성능을 향상시킨다.
이하 설명하는 기술의 효과는 이상에서 언급된 것들에 한정되지 않으며, 언급되지 아니한 다른 효과들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
도 1은 종래 트림 명령에 따라 저장 장치의 논리적 섹터가 무효화되는 예를 도시한다.
도 2는 이하 설명하는 기술에 따른 트림 명령의 구성 중 일부를 도시한 예이다.
도 3은 이하 설명하는 기술에 따라 저장 장치의 논리적 섹터가 무효화되는 예를 도시한다.
도 4는 이하 설명하는 기술에 따라 저장 장치의 논리적 섹터가 무효화되는 다른 예를 도시한다.
도 5는 이하 설명하는 기술에 따라 트림 명령을 수행하는 데이터 관리 장치의 구성에 대한 블록도의 예이다.
도 2는 이하 설명하는 기술에 따른 트림 명령의 구성 중 일부를 도시한 예이다.
도 3은 이하 설명하는 기술에 따라 저장 장치의 논리적 섹터가 무효화되는 예를 도시한다.
도 4는 이하 설명하는 기술에 따라 저장 장치의 논리적 섹터가 무효화되는 다른 예를 도시한다.
도 5는 이하 설명하는 기술에 따라 트림 명령을 수행하는 데이터 관리 장치의 구성에 대한 블록도의 예이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 해당 구성요소들은 상기 용어들에 의해 한정되지는 않으며, 단지 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
본 명세서에서 사용되는 용어에서 단수의 표현은 문맥상 명백하게 다르게 해석되지 않는 한 복수의 표현을 포함하는 것으로 이해되어야 하고, "포함한다" 등의 용어는 설시된 특징, 개수, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 의미하는 것이지, 하나 또는 그 이상의 다른 특징들이나 개수, 단계 동작 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 배제하지 않는 것으로 이해되어야 한다.
도면에 대한 상세한 설명을 하기에 앞서, 본 명세서에서의 구성부들에 대한 구분은 각 구성부가 담당하는 주기능 별로 구분한 것에 불과함을 명확히 하고자 한다. 즉, 이하에서 설명할 2개 이상의 구성부가 하나의 구성부로 합쳐지거나 또는 하나의 구성부가 보다 세분화된 기능별로 2개 이상으로 분화되어 구비될 수도 있다. 그리고 이하에서 설명할 구성부 각각은 자신이 담당하는 주기능 이외에도 다른 구성부가 담당하는 기능 중 일부 또는 전부의 기능을 추가적으로 수행할 수도 있으며, 구성부 각각이 담당하는 주기능 중 일부 기능이 다른 구성부에 의해 전담되어 수행될 수도 있음은 물론이다. 따라서, 본 명세서를 통해 설명되는 각 구성부들의 존재 여부는 기능적으로 해석되어야 할 것이며, 이러한 이유로 본 발명의 트림 방법(100) 및 데이터 관리 장치(500)에 따른 구성부들의 구성은 본 발명의 목적을 달성할 수 있는 한도 내에서 대응하는 도면과는 상이해질 수 있음을 명확히 밝혀둔다.
또, 방법 또는 동작 방법을 수행함에 있어서, 상기 방법을 이루는 각 과정들은 문맥상 명백하게 특정 순서를 기재하지 않은 이상 명기된 순서와 다르게 일어날 수 있다. 즉, 각 과정들은 명기된 순서와 동일하게 일어날 수도 있고 실질적으로 동시에 수행될 수도 있으며 반대의 순서대로 수행될 수도 있다.
먼저 이하 설명하는 장치의 구성에 대해 간략하게 설명하고, 명세서에서 사용하는 용어에 대해 설명하고자 한다. 다만 해당 분야의 통상의 지식을 가진 자라면 장치의 구체적인 구성 및 동작 등을 충분히 이해하고 있기 때문에, 자세한 설명은 생략한다.
이하 설명하는 데이터 관리 장치는 호스트(host) 장치와 저장 장치(storage device)를 포함한다. 데이터 관리 장치는 하드웨어로 프로세서, 메인 메모리, 그리고 플래시 메모리를 포함할 수 있다. 여기에서, 프로세서나 메인 메모리는 호스트 장치에 포함될 수 있고, 플래시 메모리는 저장 장치에 포함될 수 있다. 또한, 데이터 관리 장치는 소프트웨어로, 사용자 애플리케이션(user application), O/S, 파일 시스템, FTL(Flash Translation Layer) 등을 포함할 수 있다.
데이터 관리 장치는 불휘발성 메모리(낸드 플래시 메모리 등)를 사용하는 저장 장치를 데이터 저장소로 사용하는 장치를 의미한다. 데이터 관리 장치는 주된 장치가 호스트 장치이고, 호스트 장치가 저장 매제로 사용하는 것이 저장 장치이다. 이하 설명하는 기술은 저장 장치에 저장된 데이터를 삭제 및 관리하는 기술이기 때문에 데이터 관리 장치라고 명명하였다.
호스트 장치는 저장 장치(120)를 제어한다. 호스트 장치는 컴퓨터, PDA, PMP, MP3 플레이어, 카메라, 캠코더, 모바일 폰 등과 같은 휴대용 전자 장치를 포함한다. 호스트 장치는 필요에 따라 파일들의 무효화(삭제)를 저장 장치(120)로 통보한다. 이는 호스트 장치가 특정 명령을 저장 장치로 전송함으로써 달성될 수 있다. 이러한 특정 명령을 "트림 명령"(TRIM command)이라고 한다. 트림 명령에는 삭제될 영역을 지정하기 위한 정보(예를 들면, 어드레스 정보)가 포함될 수 있다.
트림 명령은 호스트 장치가 저장 장치에 해당 파일(데이터)을 무효화하라는 명령을 전달하는 것이고, 실제 파일의 삭제 및 정리는 이후 저장 장치가 담당하게 된다. 따라서 무효화와 삭제가 엄밀하게는 동일한 의미는 아니지만, 이하 설명하는 기술은 트림 명령에 관한 것이기 때문에 무효화와 삭제를 동일 내지 유사한 의미로 보고 사용하고자 한다.
삭제될 파일에 대한 메타 데이터의 처리는 호스트 장치의 파일 시스템에 의해서 행해질 것이다. 파일 시스템은 빠른 동작을 위해서, 파일의 내용을 삭제하는 것이 아니라, 파일의 메타 데이터만을 변경할 것이다. 삭제된 파일의 메타 데이터가 변경되는 경우, 호스트 장치의 파일 시스템에서는 삭제된 파일의 내용이 무효한 데이터로 처리되는 반면에, 저장 장치에서는 유효한 데이터로 남아있게 된다.
이러한 이유로, 저장 장치는 삭제된 파일의 데이터를 포함한 메모리 블록을 유효한 블록으로 인식할 것이다. 따라서, 삭제된 데이터에 대한 병합(merge) 동작이나 쓰레기 수집 동작 등과 같은 불필요한 작업이 저장 장치에서 수행될 수 있다. 이를 방지하기 위해서, 호스트 장치는 삭제된 파일의 내용이 실질적으로 무효화 되도록 저장 장치로 트림 명령을 제공한다.
저장 장치는 전원이 차단되더라도 저장된 데이터를 유지할 수 있는 저장 매체(플래시 메모리 등)를 포함한다. 저장 장치는 솔리드 스테이트 드라이브(Solid-State Drive: SSD)나 메모리 카드 등일 수 있다.
저장 장치에 사용되는 저장 매체는 복수의 플래시 메모리로 구성될 수 있다. 저장 매체는 다른 불휘발성 메모리(예를 들면, PRAM, FRAM, MRAM 등)로 구성될 수 있다. 저장 매체를 구성하는 불휘발성 메모리는 메모리 셀 당 하나의 비트 데이터 또는 2 비트 이상의 데이터를 저장할 수 있다. 또한, 저장 매체를 구성하는 불휘발성 메모리는 3차원 구조의 메모리 셀 어레이를 가질 수도 있다. 이하 설명의 편의를 위해 복수의 플래시 메모리로 구성된 예로서 설명하고자 한다.
이하에서는 도면을 참조하면서 트림 방법 및 데이터 관리 장치(500)에 관하여 구체적으로 설명하겠다.
도 1은 종래 트림 명령에 따라 저장 장치의 논리적 섹터가 무효화되는 예를 도시한다. 도 1은 호스트 장치(210)에서 저장 장치(220)로 트림 명령이 전달되는 상황을 도시한다. 호스트 장치(210) 및 저장 장치(220)에 대한 구체적인 구성은 도시하지 않았다.
종래 호스트 장치(210)에서 생성하여 저장 장치(220)에 전달하는 트림 명령은 특정 섹터에서 시작하여 연속적인 구역을 무효화(삭제)한다. 도 1에 도시한 트림 명령은 "TRIM(시작 섹터 위치, 길이)" 형태를 예시하였다. 여기서 시작 섹터는 저장 장치의 논리적 섹터를 의미한다. 길이는 시작 섹터 위치에서 무효화할 구역의 길이를 의미한다.
도 1의 저장 장치(220)에 도시한 블록은 저장 매체의 논리적 섹터를 의미한다. 섹터는 00부 24까지 총 25개만을 도시하였다. 도 1의 섹터 중 음영이 있는 섹터가 무효화 대상인 섹터이다. (1) TRIM (00, 5)은 시작 섹터 00에서 5개의 섹터(00 내지 04)를 무효화하라는 명령이다. (2) TRIM (08, 2)은 시작 섹터 08에서 2개의 섹터(08 및 09)를 무효화하라는 명령이다. (3) TRIM (15, 1)은 섹터 15만을 무효화하라는 명령이다. (4) TRIM (17, 1)은 섹터 17만을 무효화하라는 명령이다. (5) TRIM (19, 1)은 섹터 19만을 무효화하라는 명령이다. (6) TRIM (20, 1)은 섹터 20만을 무효화하라는 명령이다. (7) TRIM (23, 2)은 시작 섹터 23에서 2개의 섹터(23 및 24)를 무효화하라는 명령이다.
즉, 종래의 트림 명령 하나는 연속적인 구간에 대해서만 무효화 명령을 전달한다. 따라서 도 1에 도시된 무효화를 수행하기 위해서는 총 7 개의 트림 명령이 필요하다. 플래시 메모리를 사용하는 저장 매체는 실제 블록, 페이지와 같은 단위로 데이터 저장 공간을 구성한다. 논리적인 섹터 a 및 b가 연속되더라고 실제 서로 이격된 블록에 존재할 수 있다. 따라서 저장 장치는 트림 명령 하나를 처리하는데 있어서 상당한 시스템 부하가 들어간다. 다수의 트림 명령은 결국 저장 장치의 성능을 떨어뜨리게 된다.
이하 설명하는 트림 방법은 불연속적인 섹터 구역에 대해서도 하나의 트림 명령으로 무효화 작업을 수행하기 위한 것이다. 트림 방법은 호스트 장치가 섹터의 비트맵 정보를 포함하는 트림 명령을 생성하는 단계 및 저장 장치가 비트맵 정보를 이용하여 무효화 대상 섹터만을 무효화하는 단계를 포함한다. 핵심적인 구성은 섹터의 비트맵 정보를 포함하는 트림 명령이다.
도 2는 이하 설명하는 기술에 따른 트림 명령의 구성 중 일부를 도시한 예이다. 제안된 트림 명령은 시작 섹터, 길이, 비트맵 정보 및 비트 크기 중 적어도 어느 하나를 포함할 수 있다. 시작 섹터는 무효화 작업이 시작되는 섹터의 위치를 의미하고, LBA(Logical Block Address) 형태로 표현될 수 있다. 길이는 시작 섹터부터 무효화할 구역의 크기를 의미한다. 비트 크기(k)는 비트맵 데이터의 하나의 비트가 의미하는 단위 크기를 의미한다. 예컨대, 비트 크기가 1이면 하나의 비트는 하나의 섹터(또는 블록)를 의미하고, 2이면 하나의 비트는 두 개의 섹터를 의미한다. 비트맵 데이터는 시작 섹터로부터 비트 크기의 단위에 따라 무효화 대상인 섹터를 식별하는 정보이다. 예컨대, 1로 표시된 섹터(크기 k)는 무효화 대상에 해당한다. 또는 반대로 0으로 표시된 섹터가 무효화 대상일 수 있다. 이는 장치 내지 프로그램(드라이버) 설정에 따라 다른 값이 사용될 수 있다. 또는 k값에 대한 별도의 정보가 없이 장치에서 기본적으로 비트는 하나 또는 특정 크기의 섹터를 의미하는 것으로 설정될 수도 있다.
TRIM (sector number, length) 값이 (s, l)이라고 할 때, bitmap의 i번째 bit값은 sector number가 (s + k*(i-1))부터 (s + k*(i-1) + (k - 1))인 구간에 저장된 데이터가 무효화 대상인지 여부를 나타낸다.
도 2(a) 내지 도 2(d)는 서로 다른 트림 명령을 예시하고 있다. 각 트림 명령에 대한 구체적인 예는 이후 도면을 참고하면서 설명한다.
도 3은 이하 설명하는 기술에 따라 저장 장치의 논리적 섹터가 무효화되는 예를 도시한다. 도 4는 이하 설명하는 기술에 따라 저장 장치의 논리적 섹터가 무효화되는 다른 예를 도시한다.
도 2(a)는 TRIM(00, 10) + 'bitmap(111100011)' + 'k=1'인 경우이다. 트림 명령을 문자로 어떻게 표현하는지는 선택의 문제이므로, 도 2(a)의 트림 명령을 TRIM(00, 10, 111100011, 1)과 같은 형태로 표현할 수도 있다. 다만 설명의 편의를 위해 TRIM(00, 10) + 'bitmap(111100011)' + 'k=1' 같은 형태로 설명하고자 한다.
도 2(a)의 트림 명령은 도 3(a)의 (1) 명령에 해당한다. 도 3(a)의 (1) 트림 명령은 시작 섹터 00부터 10개의 섹터 길이 구역(A로 표시)에 대한 무효화 정보를 전달한다. 도 3에서는 k값을 도시하지 않았다. 도 2(a)의 (1) 트림 명령은 시작 섹터부터 비트맵 정보(k=1)에 따라 비트가 1인 섹터를 무효화시키는 예이다. 비트맵 정보가 1111100011로 표시되어 연속적인 섹터 00 부터 09 중에서 05 내지 07을 제외한 나머지 섹터가 무효화 대상이라는 것을 알 수 있다.
도 2(b)는 TRIM(15, 10) + 'bitmap(1010110011)' + 'k=1'인 경우이다. 도 2(b)에 해당하는 트림 명령은 도 3(a)의 (2) 트림 명령으로 도시하였다. 즉, 시작 섹터 15부터 10개의 섹터 길이에 대하여 비트맵의 정보에 따라 섹터를 무효화한다.
도 3(a)는 결과적으로 도 1과 같은 무효화 작업에 해당한다. 도 1에서는 전체 7개의 트림 명령이 필요했지만, 도 3(a)는 두 개의 트림 명령으로 동일한 무효화 작업을 수행한다.
도 3(b)는 도 1 및 도 3(a)와 동일한 무효화 작업을 단 하나의 트림 명령으로 수행하는 예이다. TRIM(00,25) + 'bitmap(11111/00011/00000/10101/10011)'과 같은 트림 명령으로 동일한 작업을 수행할 수 있다. 비트맵 정보에서 "/"로 구분한 것은 실제 비트맵 정보에 포함되는 데이터가 아니고, 5개의 섹터로 구분하기 위해 표시한 것이다.
도 4는 k값이 1이 아닌 경우를 도시한다. 도 2(c)는 TRIM(00, 15) + 'bitmap(101)' + 'k=5'인 경우이다. 도 2(c)의 트림 명령은 도 4(a)에 해당한다. 즉, 시작 섹터 00부터 15개의 섹터(섹터 00 내지 섹터 14)가 구성하는 구역(A로 표시)에 대하여 하나의 비트가 5개의 섹터 단위 크기를 의미하는 비트맵 정보 '101'에 따라 "섹터 00 내지 섹터 04" 및 "섹터 10 내지 섹터 14"를 무효화한다.
도 2(d)는 TRIM(15, 10) + 'bitmap(10101)' + 'k=2'인 경우이다. 도 2(d)의 트림 명령은 도 4(b)에 해당한다. 시작 섹터 15부터 10개의 섹터가 구성하는 구역(B로 표시)에 대하여 하나의 비트가 2개의 섹터 단위 크기를 의미하는 비트맵 정보 '10101"에 따라 섹터를 무효화한다.
정리하면, 트림 명령은 시작 섹터, 섹터 길이 및 대상 섹터 구역에 대한 비트맵 정보를 포함할 수 있다. 대상 섹터 구역은 시작 섹터로부터 섹터 길이를 갖는 구역이고, 비트맵 정보는 대상 섹터 구역에 대하여 이진 비트를 기준으로 무효화 대상인 섹터를 식별할 수 있다. 결국 비트맵 정보는 저장 장치의 논리적 섹터 중 연속적인 구역에 대하여 이진 비트를 기준으로 무효화 대상인 섹터와 무효화 대상이 아닌 섹터를 식별한다. 비트맵 정보는 대상 섹터 구역에 대하여 0 또는 1로 대상 섹터 구역에 포함된 각 섹터에 대하여 무효화 대상인지 여부를 식별한다.
나아가 트림 명령은 비트맵 정보에서 하나의 비트가 나타내는 섹터의 크기를 의미하는 비트 단위 정보(k)를 더 포함할 수 있다.
도 5는 이하 설명하는 기술에 따라 트림 명령을 수행하는 데이터 관리 장치(500)의 구성에 대한 블록도의 예이다.
예컨대, 리눅스 시스템에서 저장 장치에 삭제 가능한 데이터가 저장되어 있는 위치의 정보를 전달하기 위해 사용되는 기존의 트림 명령은 블록 계층, SCSI 계층, ATA 계층 등을 통과하여 플래시 메모리 저장장치까지 전달되는 과정에서 SCSI 계층의 Write Same 커맨드를 이용하여 (sector number, length)정보를 ATA 계층으로 전달하고, 이후 변환과정을 거쳐 플래시 메모리 저장 장치에 전달하며, 해당 sector number부터 특정 길이(length)만큼의 공간에 저장되어 있는 데이터가 무효화(삭제) 가능함을 나타낸다. 즉, 하나의 커맨드로 플래시 메모리 저장장치상에서 하나의 연속된 공간에 저장된 무효화(삭제) 가능한 데이터의 정보를 전달한다. 따라서 전술한 바와 같이 삭제 가능한 데이터가 다수의 불연속적인 공간들에 산재해 있는 경우에는, 해당 삭제 가능 데이터의 위치 정보를 플래시 메모리 저장 장치에 전달하기 위해 그 산재된 공간의 개수만큼의 트림 명령이 필요하다.
이하 설명하는 데이터 관리 장치(500)는 섹터의 비트맵 정보를 포함하는 트림 명령을 생성하는 호스트 장치(510), 비트맵 정보를 이용하여 논리적 섹터 중 무효화 대상인 섹터만을 무효화하는 저장 장치(520) 및 호스트 장치로부터 트림 명령을 저장 장치에 전달하는 인터페이스 장치(530)를 포함한다.
사용하는 트림 명령 및 비트맵 정보에 대한 내용은 전술한 내용과 동일한 것이다. 따라서 트림 명령은 시작 섹터, 섹터 길이 및 대상 섹터 구역에 대한 비트맵 정보를 포함하고, 비트맵 정보는 저장 장치의 논리적 섹터 중 연속적인 구역에 대하여 이진 비트를 기준으로 무효화 대상인 섹터와 무효화 대상이 아닌 섹터를 식별한다. 나아가 트림 명령은 비트맵 정보에서 하나의 비트가 나타내는 섹터의 크기를 의미하는 비트 단위 정보를 더 포함할 수 있다.
호스트 장치(510)와 저장 장치(520)는 인터페이스 장치(530)를 통해 연결된다. 인터페이스 장치(530)는 ATA, SATA, PATA, USB, SCSI, ESDI, IEEE 1394, IDE, 및/또는 카드 인터페이스와 같은 표준 인터페이스 장치가 사용될 수 있다.
호스트 장치(510)는 프로세서(511)와 메모리(512) 등을 포함한다. 기타 메모리 관리 장치 및 파일 시스템 등과 같은 구성을 포함할 수 있다. 개선된 트림 명령은 호스트 장치(510)의 프로세서(511) 또는 도시하지 않은 별도의 메모리 관리 장치를 통해 저장 장치(520)에 전달될 수 있다.
프로세서(511)와 메모리(512)는 어드레스/데이터 버스를 통해 연결될 수 있다. 호스트 장치(510)는 PDA(personal digital assistance), 컴퓨터, 디지털 오디오 플레이어, 디지털 카메라, 그리고 모바일 전화기기 등일 수 있다. 메모리(512)는 캐시, ROM, PROM, EPROM, EEPROM, 플래시, SRAM, 그리고 DRAM과 같은 형태의 불휘발성 또는 휘발성 메모리일 수 있다.
메모리(512)는 복수의 소프트웨어 또는 펌웨어를 저장할 수 있다. 프로세서(511)는 메모리(512)와 함께 운영 체제(OS), 애플리케이션, 파일 시스템, 메모리 관리자 및 입출력 드라이버(I/O Drivers) 등을 구동할 수 있다.
저장 장치(520)는 데이터를 저장하는 비휘발성 메모리(524) 및 비휘발성 메모리를 제어하여, 호스트 장치의 트림 명령에 따라 무효화 동작을 수행하는 제어부(521)를 포함한다. 도 5는 비휘발성 메모리(524)가 복수의 플래시 메모리로 구성된 예를 도시한다.
제어부(521)는 호스트 장치(510)로부터의 요청에 응답하여 비휘발성 메모리(524)를 제어한다. 제어부(521)는 복수의 채널(CH1∼CHn)을 통해 비휘발성 메모리(524)와 연결될 수 있다. 각각의 채널에는 복수의 메모리가 연결될 수 있다. 제어부(521)는 중앙처리장치와 메모리와 같은 하드웨어 장치(도시되지 않음), 그리고 호스트 장치(510)의 트림 명령에 응답하여 무효화 동작을 수행하기 위한 하드웨어 또는 소프트웨어 장치(도시되지 않음)를 포함할 수 있다.
제어부(521)는 캐시 메모리(522)를 내장하거나 별도의 캐시 메모리(522)를 사용하여 삭제될 영역의 위치를 나타내는 트림 정보를 저장할 수 있다. 트림 정보는 호스트 장치(510)로부터 전달받은 트림 명령을 그대로 저장할 수도 있고, 저장 장치(520)의 구성에 따라서 삭제할 영역을 비트맵 구조로 저장할 수도 있을 것이다. 도 5에서는 캐시 메모리(522)에 트림 명령이 그대로 저장된 형태를 도시하였다.
한편 트림 명령에 포함되는 시작 섹터 정보는 논리적 섹터 정보이므로 비휘발성 메모리(524)의 물리적 주소로 맵핑되어야 한다. 이 과정은 FTL(523)을 통해 수행된다. 도 5에서는 제어부(521)와 FTL(523)을 별도의 구성으로 도시하였으나, 이란적으로 FTL(523)은 제어부(521) 내의 메모리에 존재하게 된다. 제어부(521)는 이밖에도 LBA 영역 테이블 등을 관리할 수 있다.
제어부(521)는 비트맵 정보의 비트에 따라 비휘발성 메모리(524)의 연속적인 논리적 섹터 구역에 대하여 무효화 작업을 수행한다. 제어부(521)는 비휘발성 메모리(524)의 논리적 섹터 중 시작 섹터로부터 일정한 섹터 길이를 갖는 구역에 대하여 비트맵 정보를 이용하여 비트 단위가 정의하는 섹터 크기별로 무효화 대상인 섹터를 식별하고, 무효화 대상인 섹터에 대한 무효화 작업을 수행하게 된다.
본 실시예 및 본 명세서에 첨부된 도면은 본 발명에 포함되는 기술적 사상의 일부를 명확하게 나타내고 있는 것에 불과하며, 본 발명의 명세서 및 도면에 포함된 기술적 사상의 범위 내에서 당업자가 용이하게 유추할 수 있는 변형 예와 구체적인 실시예는 모두 본 발명의 권리범위에 포함되는 것이 자명하다고 할 것이다.
500 : 데이터 관리 장치 510 : 호스트 장치
511 : 프로세서 512 : 메모리
520 : 저장 장치 521 : 제어부
522 : 캐시 메모리 523 : FTL
524 : 플래시 메모리 530 : 인터페이스 장치
511 : 프로세서 512 : 메모리
520 : 저장 장치 521 : 제어부
522 : 캐시 메모리 523 : FTL
524 : 플래시 메모리 530 : 인터페이스 장치
Claims (13)
- 호스트 장치 및 저장 장치를 포함하는 데이터 관리 장치에서 실행되는 트림 방법에 있어서,
상기 호스트 장치가 상기 저장 장치의 논리적 섹터 중 무효화 대상이 아닌 섹터를 포함하는 연속된 구역에 대한 무효화 정보를 비트 정보로 표시하는 비트맵 정보를 포함하는 트림 명령을 생성하는 단계; 및
상기 저장 장치가 상기 트림 명령에 포함된 상기 비트맵 정보를 이용하여 무효화 대상 섹터만을 무효화하는 단계를 포함하는 트림 방법. - 제1항에 있어서,
상기 비트맵 정보는 상기 저장 장치의 논리적 섹터 중 연속적인 구역에 대하여 이진 비트를 기준으로 무효화 대상인 섹터와 무효화 대상이 아닌 섹터를 식별하는 트림 방법. - 제1항에 있어서,
상기 트림 명령은
시작 섹터, 섹터 길이 및 대상 섹터 구역에 대한 비트맵 정보를 포함하는 트림 방법. - 제3항에 있어서,
상기 대상 섹터 구역은 상기 시작 섹터로부터 상기 섹터 길이를 갖는 구역이고, 상기 비트맵 정보는 상기 대상 섹터 구역에 대하여 이진 비트를 기준으로 무효화 대상인 섹터를 식별하는 정보인 트림 방법. - 제3항에 있어서,
상기 비트맵 정보는 상기 대상 섹터 구역에 대하여 0 또는 1로 상기 대상 섹터 구역에 포함된 각 섹터에 대하여 무효화 대상인지 여부를 식별하는 트림 방법. - 제3항에 있어서,
상기 트림 명령은
상기 비트맵 정보에서 하나의 비트가 나타내는 섹터의 크기를 의미하는 비트 단위 정보를 더 포함하는 트림 방법. - 비휘발성 메모리를 저장 매체로 이용하는 데이터 관리 장치에 있어서,
저장 장치의 논리적 섹터 중 무효화 대상이 아닌 섹터를 포함하는 연속된 구역에 대한 무효화 정보를 비트 정보로 표시하는 비트맵 정보를 포함하는 트림 명령을 생성하는 호스트 장치;
상기 비트맵 정보를 이용하여 논리적 섹터 중 무효화 대상인 섹터만을 무효화하는 저장 장치; 및
상기 호스트 장치로부터 상기 트림 명령을 상기 저장 장치에 전달하는 인터페이스 장치를 포함하는 데이터 관리 장치. - 제7항에 있어서,
상기 비트맵 정보는 상기 저장 장치의 논리적 섹터 중 연속적인 구역에 대하여 이진 비트를 기준으로 무효화 대상인 섹터와 무효화 대상이 아닌 섹터를 식별하는 데이터 관리 장치. - 제7항에 있어서,
상기 트림 명령은 시작 섹터, 섹터 길이 및 대상 섹터 구역에 대한 비트맵 정보를 포함하는 데이터 관리 장치. - 제9항에 있어서,
상기 트림 명령은 상기 비트맵 정보에서 하나의 비트가 나타내는 섹터의 크기를 의미하는 비트 단위 정보를 더 포함하는 데이터 관리 장치. - 제7항에 있어서,
상기 저장 장치는
데이터를 저장하는 비휘발성 메모리; 및
상기 비휘발성 메모리를 제어하여, 상기 호스트 장치의 트림 명령에 따라 무효화 동작을 수행하는 제어부를 포함하는 데이터 관리 장치. - 제11항에 있어서,
상기 제어부는
상기 비트맵 정보의 비트에 따라 상기 비휘발성 메모리의 연속적인 논리적 섹터 구역에 대하여 무효화 작업을 수행하는 데이터 관리 장치. - 제11항에 있어서,
상기 트림 명령은 시작 섹터, 섹터 길이, 비트맵 정보 및 비트 단위를 포함하고,
상기 제어부는 상기 비휘발성 메모리의 논리적 섹터 중 상기 시작 섹터로부터 상기 섹터 길이를 갖는 구역에 대하여 상기 비트맵 정보를 이용하여 상기 비트 단위가 정의하는 섹터 크기별로 무효화 대상인 섹터를 식별하고, 무효화 대상인 섹터에 대한 무효화 작업을 수행하는 데이터 관리 장치.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20130143665A KR101465460B1 (ko) | 2013-11-25 | 2013-11-25 | 트림 방법 및 데이터 관리 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20130143665A KR101465460B1 (ko) | 2013-11-25 | 2013-11-25 | 트림 방법 및 데이터 관리 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101465460B1 true KR101465460B1 (ko) | 2014-11-26 |
Family
ID=52291667
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR20130143665A KR101465460B1 (ko) | 2013-11-25 | 2013-11-25 | 트림 방법 및 데이터 관리 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101465460B1 (ko) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101735065B1 (ko) | 2015-12-10 | 2017-05-24 | 한국외국어대학교 연구산학협력단 | 비트맵 기반의 트림 코맨드를 이용하는 데이터 관리 시스템 및 방법 |
KR101847859B1 (ko) * | 2016-10-12 | 2018-04-11 | 성균관대학교산학협력단 | 파일 트림을 이용한 플래시 메모리 기반 저장장치 및 그 파일 트림 방법 |
WO2019226205A1 (en) * | 2018-05-22 | 2019-11-28 | Western Digital Technologies, Inc. | Multiple sets of trim parameters |
US11068206B2 (en) | 2019-01-07 | 2021-07-20 | SK Hynix Inc. | Data storage device for processing a sequential unmap entry by using trim instruction data and operating method thereof |
US11281590B2 (en) | 2019-08-05 | 2022-03-22 | SK Hynix Inc. | Controller, operating method thereof and storage device including the same |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130057306A (ko) * | 2011-11-23 | 2013-05-31 | 삼성전자주식회사 | 플래시 메모리를 기반으로 하는 저장 장치 및 그것을 포함한 사용자 장치 |
-
2013
- 2013-11-25 KR KR20130143665A patent/KR101465460B1/ko active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130057306A (ko) * | 2011-11-23 | 2013-05-31 | 삼성전자주식회사 | 플래시 메모리를 기반으로 하는 저장 장치 및 그것을 포함한 사용자 장치 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101735065B1 (ko) | 2015-12-10 | 2017-05-24 | 한국외국어대학교 연구산학협력단 | 비트맵 기반의 트림 코맨드를 이용하는 데이터 관리 시스템 및 방법 |
KR101847859B1 (ko) * | 2016-10-12 | 2018-04-11 | 성균관대학교산학협력단 | 파일 트림을 이용한 플래시 메모리 기반 저장장치 및 그 파일 트림 방법 |
WO2019226205A1 (en) * | 2018-05-22 | 2019-11-28 | Western Digital Technologies, Inc. | Multiple sets of trim parameters |
US10705758B2 (en) | 2018-05-22 | 2020-07-07 | Western Digital Technologies, Inc. | Multiple sets of trim parameters |
US11416175B2 (en) | 2018-05-22 | 2022-08-16 | Western Digital Technologies, Inc. | Multiple sets of trim parameters |
US11907583B2 (en) | 2018-05-22 | 2024-02-20 | Western Digital Technologies, Inc. | Multiple sets of trim parameters |
US11068206B2 (en) | 2019-01-07 | 2021-07-20 | SK Hynix Inc. | Data storage device for processing a sequential unmap entry by using trim instruction data and operating method thereof |
US11281590B2 (en) | 2019-08-05 | 2022-03-22 | SK Hynix Inc. | Controller, operating method thereof and storage device including the same |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10713161B2 (en) | Memory system and method for controlling nonvolatile memory | |
US10789162B2 (en) | Memory system and method for controlling nonvolatile memory | |
US10324834B2 (en) | Storage device managing multi-namespace and method of operating the storage device | |
KR102002830B1 (ko) | 세그먼트 클리닝 장치 및 방법 | |
KR102148889B1 (ko) | 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 불휘발성 메모리 시스템 | |
US9489388B2 (en) | Computing system, host system and method for managing data | |
US9053007B2 (en) | Memory system, controller, and method for controlling memory system | |
US11657022B2 (en) | Host and storage system for securely deleting files and operating method of the host | |
US20130151759A1 (en) | Storage device and operating method eliminating duplicate data storage | |
US10860231B2 (en) | Memory system for adjusting map segment based on pattern and operating method thereof | |
US11687262B2 (en) | Memory system and method of operating the same | |
KR20130057306A (ko) | 플래시 메모리를 기반으로 하는 저장 장치 및 그것을 포함한 사용자 장치 | |
US20200089619A1 (en) | Data storage device and method of deleting namespace thereof | |
US10922011B2 (en) | Controllers configured to perform secure deletion, key-value storage devices including said controllers, and methods of operation thereof | |
KR101465460B1 (ko) | 트림 방법 및 데이터 관리 장치 | |
EP3338193B1 (en) | Convertible leaf memory mapping | |
KR102595233B1 (ko) | 데이터 처리 시스템 및 그것의 동작 방법 | |
KR20200019421A (ko) | 메모리 시스템 내 대용량 데이터 저장이 가능한 블록에서의 유효 데이터 체크 방법 및 장치 | |
KR20220022318A (ko) | 컨트롤러 및 메모리 시스템 | |
US20230195617A1 (en) | System and method for defragmentation of memory device | |
US11775209B2 (en) | Controller and operation method thereof | |
US20230152968A1 (en) | Storage devices including non-volatile memory devices | |
KR20200014175A (ko) | 소요시간을 예측하여 가비지 컬렉션을 수행하는 방법 및 장치 | |
TW201624491A (zh) | 資訊處理裝置及非暫態電腦可讀取記錄媒體 | |
US20240241835A1 (en) | Storage device supporting multi-namespace and method of operating the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20171027 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20180917 Year of fee payment: 5 |