KR20190121265A - Ftl 관리 장치 및 방법 - Google Patents

Ftl 관리 장치 및 방법 Download PDF

Info

Publication number
KR20190121265A
KR20190121265A KR1020190045057A KR20190045057A KR20190121265A KR 20190121265 A KR20190121265 A KR 20190121265A KR 1020190045057 A KR1020190045057 A KR 1020190045057A KR 20190045057 A KR20190045057 A KR 20190045057A KR 20190121265 A KR20190121265 A KR 20190121265A
Authority
KR
South Korea
Prior art keywords
ftl
data
write
write data
size
Prior art date
Application number
KR1020190045057A
Other languages
English (en)
Other versions
KR102314784B1 (ko
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 한국과학기술원
Publication of KR20190121265A publication Critical patent/KR20190121265A/ko
Application granted granted Critical
Publication of KR102314784B1 publication Critical patent/KR102314784B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, 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)

Abstract

본 발명의 일 실시예에 따른 FTL(Flash Translation Layer) 관리 장치는, FTL을 관리하는 장치로서, 복수의 서브 데이터로 구성되는 타겟 데이터의 의존성을 확인하는 제 1 확인부; 상기 타겟 데이터의 평균 쓰기 데이터 크기를 확인하는 제 2 확인부; 및 병렬성 및 매핑 단위를 기준으로 상기 FTL이 구분되는 FTL 리스트로부터 상기 의존성 및 상기 평균 쓰기 데이터 크기 중 적어도 하나에 대응되는 FTL를 선택하는 선택부를 포함한다.

Description

FTL 관리 장치 및 방법{APPARATUS AND METHOD FOR MANAGING FTL}
본 발명은 NAND 플래시 기반 SSD의 입출력에 이용되는 FTL을 관리하는 장치 및 방법에 관한 것이다.
NAND 플래시 기반의 SSD(Solid State Drive)는 일반적인 하드 디스크 드라이브(Hard Disk Drive, HDD)에 비해 비휘발성과 신뢰성, 저전력성 등에서 우수한 성능을 나타내어, 최근들어 그 이용이 점차 증가하고 있다. NAND 플래시는 복수의 블록(Block)으로 구성되고, 각 블록은 여러 개의 페이지(Page)로 구성된다. 페이지는 읽기 연산과 쓰기 연산의 기본 단위이며, 읽기 연산이 쓰기 연산보다 수 배 빠르게 수행된다. 삭제 연산은 이미 쓰기 연산이 수행 된 위치에 다시 쓰기 연산을 수행하기 전 블록 단위로 수행되는데, 읽기 연산이나 쓰기 연산에 비해 수행 시간이 길다.
SSD는 내부에 성능과 수명 향상을 위하여 버퍼와 FTL을 포함한다. 버퍼는 SSD 내부의 호스트 디바이스(PC, 스마트폰 등)와 NAND 플래시 사이에 위치하며, 쓰기 연산이 자주 수행되는 데이터들을 별도로 관리한다. FTL(Flash Translation Layer) 는 요청되어 온 데이터의 논리 주소를 실제 SSD 내부의 물리 주소로 변환하는 역할을 수행한다. 데이터가 FTL을 거친 이후에는 채널(Channel)과 웨이(Way)로 구분되는 여러 개의 NAND 플래시 메모리에 병렬적으로 저장된다.
이러한 FTL들은 각각의 목적에 맞게 다양한 방향으로 개발되어, SSD로 보내지는 데이터 요청의 특성에 따라 서로 다른 성능을 나타낸다. 크기가 작은 데이터에 더 나은 성능을 보이는 FTL이 존재하는가 하면, SSD의 공간 활용성이나 병렬성에 초점을 둔 FTL들도 존재한다.
따라서, SSD의 입출력 성능을 향상시킬 수 있도록, 이들을 효과적으로 관리하는 것이 중요하다.
대한민국 등록특허공보 제 10-1430552호 (2014년08월08일 등록)
본 발명의 일 실시예는 병렬성 및 매핑 단위를 기준으로 FTL이 구분되는 FTL 리스트로부터 의존성 및 평균 쓰기 데이터 크기 중 적어도 하나에 대응되는 FTL를 선택하는 FTL 관리 장치 및 방법을 제공한다.
다만, 본 발명이 해결하고자 하는 과제는 이상에서 언급한 바로 제한되지 않으며, 언급되지는 않았으나 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있는 목적을 포함할 수 있다.
본 발명의 일 실시예에 따른 FTL 관리 장치는, FTL(Flash Translation Layer)을 관리하는 장치로서, 복수의 서브 데이터로 구성되는 타겟 데이터의 의존성을 확인하는 제 1 확인부; 상기 타겟 데이터의 평균 쓰기 데이터 크기를 확인하는 제 2 확인부; 및 병렬성 및 매핑 단위를 기준으로 상기 FTL이 구분되는 FTL 리스트로부터 상기 의존성 및 상기 평균 쓰기 데이터 크기 중 적어도 하나에 대응되는 FTL를 선택하는 선택부를 포함한다.
또한, 상기 선택부는, 상기 타겟 데이터가 읽기 의존적이면, 상기 FTL 리스트 중 SSD(Solid State Drive)의 전체 가용 채널을 병렬적으로 이용하고, 상기 매핑 단위를 블록으로 하는 제 1 FTL을 선택할 수 있다.
또한, 상기 선택부는, 상기 타겟 데이터가 쓰기 의존적이고, 상기 평균 쓰기 데이터의 크기가 상기 블록보다 크면, 상기 FTL 리스트 중 상기 제 1 FTL을 선택할 수 있다.
또한, 상기 선택부는, 상기 타겟 데이터가 쓰기 의존적이고, 상기 평균 쓰기 데이터의 크기가 페이지보다 작으면, 상기 FTL 리스트 중 SSD의 가용 채널의 어느 하나만 이용하고, 상기 매핑 단위를 상기 페이지로 하는 제 2 FTL을 선택할 수 있다.
또한, 상기 선택부는, 상기 타겟 데이터가 쓰기 의존적이고, 상기 평균 쓰기 데이터의 크기가 페이지 이상 및 블록 이하이면, 상기 FTL 리스트로부터 상기 평균 쓰기 데이터의 크기에 비례하는 개수의 SSD 가용 채널을 이용하는 적어도 하나의 후보 FTL 중 하나를 제 3 FTL 로 선택할 수 있다.
또한, 상기 선택부는, 상기 평균 쓰기 데이터의 크기에 비례하여 이용할 데이터 블록 및 로그 블록의 개수를 결정하고, 상기 후보 FTL 중 상기 결정된 개수의 상기 데이터 블록 및 상기 로그 블록의 이용이 가능한 상기 제 3 FTL을 선택할 수 있다.
또한, 상기 선택부는, 상기 복수의 서브 데이터 각각에 대하여 쓰기 데이터가 불균일하게 분포하면, 상기 결정된 데이터 블록 및 상기 로그 블록의 개수를 보정할 수 있다.
또한, 상기 선택부는, 상기 복수의 서브 데이터 각각에 대한 상기 쓰기 데이터의 점유도를 기초로 상기 결정된 데이터 블록 및 상기 로그 블록의 개수를 보정할 수 있다.
또한, 상기 선택부는, 상기 쓰기 데이터의 점유도에 반비례하여 상기 로그 블록의 개수를 보정할 수 있다.
또한, 상기 선택부는, 상기 복수의 서브 데이터 중 상기 쓰기 데이터의 점유도 이상의 쓰기 빈도를 가지는 서브 데이터 사이의 거리를 기초로 상기 결정된 데이터 블록 및 상기 로그 블록의 개수를 보정할 수 있다.
본 발명의 일 실시예에 따른 FTL 관리 방법은, FTL(Flash Translation Layer)을 관리하는 방법으로서, 복수의 서브 데이터로 구성되는 타겟 데이터의 의존성을 확인하는 단계; 상기 타겟 데이터의 평균 쓰기 데이터 크기를 확인하는 단계; 및 병렬성 및 매핑 단위를 기준으로 FTL(Flash Translation Layer)이 구분되는 FTL 리스트로부터 상기 의존성 및 상기 평균 쓰기 데이터 크기 중 적어도 하나에 대응되는 FTL를 선택하는 단계를 포함한다.
본 발명의 실시예에 의하면, 데이터 특성에 따른 다양한 FTL의 성능 이득을 미리 예측할 수 있다. 또한, 데이터 특성에 대응되는 FTL을 선택함으로써, 다른 의존성과 입출력 크기 특성을 지닌 데이터가 SSD로 입력될 때 이를 여러 개의 효율적인 FTL로 분할함으로써, SSD의 수명과 입출력 성능을 향상시킬 수 있다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 일 실시예에 따른 FTL 관리 장치의 제어 블록도이다.
도 2는 본 발명의 일 실시예에 따른 FTL 관리 방법의 흐름도이다.
도 3은 본 발명의 일 실시예에 따른 FTL 리스트의 분류 기준을 설명하기 위한 도면이다.
도 4는 본 발명의 일 실시예에 따른 FTL 관리 방법 중 FTL 선택 방법의 상세 흐름도이다.
도 5는 본 발명의 일 실시예에 따른 FTL 관리 방법 중 제 3 FTL 선택 방법의 상세 흐름도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명의 범주는 청구항에 의해 정의될 뿐이다.
본 발명의 실시예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명은 본 발명의 실시예들을 설명함에 있어 실제로 필요한 경우 외에는 생략될 것이다. 그리고 후술되는 용어들은 본 발명의 실시예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
이하 사용되는 '…부', '…기' 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어, 또는, 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
도 1은 본 발명의 일 실시예에 따른 FTL 관리 장치의 제어 블록도이다.
본 발명의 FTL(Flash Tlanslation Layer) 관리 장치는 FTL을 관리하는 장치로서, 특히 복수의 FTL 중 타겟 데이터에 대응되는 어느 하나를 선택하여 SSD의 입출력 성능을 향상시키는 장치를 의미한다. 또한, FTL이란 파일 시스템과 SSD의 NAND 플래시 사이에 위치하며, 파일 시스템으로부터 처리되는 논리 주소를 물리 주소로 변환시키는 소프트웨어 계층을 의미한다.
FTL은 목적에 따라 서로 다른 성능을 가질 수 있다. 예를 들어, 일 실시예에 따른 FTL은 특정 데이터 크기에 우수한 성능을 보일 수 있다. 이와는 달리, 다른 실시예에 따른 FTL은 SSD의 공간 활용성 또는 병렬성 측면에서 개선된 효과를 가지도록 설계될 수 있다. 그러나 이와 같은 FTL은 성능에 영향을 미치는 주요 요소를 기반으로 표현이 가능하고, 공통되는 주요 요소를 기초로 분류될 수 있다.
한편, 특정 데이터에 더 나은 성능을 가지는 FTL을 찾기 위해, 선택 가능한 FTL의 예상되는 성능을 기초로 가장 우수한 FTL을 선택할 수 있다. 그러나, 이와 같은 방법은 선택 가능한 모든 FTL의 성능을 예측하는 과정이 수반되는 바, 상당한 수준의 연산량이 요구될 수 있다.
따라서, 본 발명의 일 실시예에 따른 FTL 관리 장치(100)는 데이터 특성에 따라 더 나은 성능을 가지는 주요 요소를 구분하고, 해당 주요 요소를 가지는 FTL을 선택할 수 있다.
이를 위해, 도 1을 참조하면, 본 발명의 일 실시예에 따른 FTL 관리 장치(100)는 제 1 확인부(110), 제 2 확인부(120), 및 선택부(130)를 포함할 수 있다.
제 1 확인부(110)는 복수의 서브 데이터로 구성되는 타겟 데이터의 의존성을 확인할 수 있다. 여기서, 타겟 데이터란 처리 요청이 있는 서브 데이터의 집합으로서, 워크로드(Workload) 단위로 구현될 수 있다. 또한, 타겟 데이터의 의존성이란 타겟 데이터 내 복수의 서브 데이터가 쓰기 의존적인지, 또는 읽기 의존적인지에 대한 정보를 의미할 수 있다.
이를 위해, 제 1 확인부(110)는 타겟 데이터를 구성하는 복수의 서브 데이터 각각이 쓰기 데이터인지, 또는 읽기 데이터인지를 확인할 수 있다. 그 다음, 제 1 확인부(110)는 확인된 쓰기 데이터와 읽기 데이터 중 더 많은 수의 서브 데이터를 확인하여 타겟 데이터의 의존성을 확인할 수 있다. 예를 들어, 타겟 데이터 내 복수의 서브 데이터 중 쓰기 데이터의 수가 읽기 데이터의 수보다 많은 경우, 제 1 확인부(110)는 타겟 데이터가 쓰기 의존적임을 확인할 수 있다. 반면, 타겟 데이터 내 복수의 서브 데이터 중 읽기 데이터의 수가 쓰기 데이터의 수보다 많은 경우, 제 1 확인부(110)는 타겟 데이터가 읽기 의존적임을 확인할 수 잇다.
제 2 확인부(120)는 타겟 데이터의 평균 쓰기 데이터 크기를 확인할 수 있다. 구체적으로, 제 2 확인부(120)는 타겟 데이터를 구성하는 복수의 서브 데이터 중 쓰기 데이터의 평균 크기를 확인할 수 있다. SSD에서 쓰기 연산이 읽기 연산에 비해 처리 속도가 현저하게 느리기 때문에, 본 발명의 일 실시예에 따른 FTL 관리 장치(100)는 제 2 확인부(120)에 의해 확인된 평균 쓰기 데이터 크기를 이용하여 타겟 데이터에 최적화된 FTL을 선택할 수 있다.
선택부(130)는 FTL 리스트로부터 상기 의존성 및 상기 평균 쓰기 데이터 크기 중 적어도 하나에 대응되는 FTL를 선택할 수 있다. 이를 위해, 본 발명의 일 실시예에 따른 FTL 관리 장치(100)는 FTL 리스트를 미리 저장하는 저장부(140)를 더 포함할 수 있다.
저장부(140)는 FTL 리스트를 미리 저장하였다가 선택부(130)의 요청에 따라 이를 제공할 수 있다. 여기서, FTL 리스트란 병렬성 및 매핑 단위를 기준으로 FTL을 구분하는 리스트를 의미할 수 있다. 또한, 병렬성이란 SSD가 타겟 데이터 내 복수의 서브 데이터를 병렬적으로 처리하는 성능에 대한 정보로서, 복수의 서브 데이터를 병렬적으로 처리하는 SSD의 채널 수로 수치화 하여 표현할 수 있다. 또한, 매핑 단위란 FTL에서 논리 주소를 물리 주소로 변환할 때 이용되는 최소 단위를 의미하고, 블록 단위, 페이지 단위, 및 이들을 혼합한 혼합 매핑 단위를 포함할 수 있다.
이를 위해, 저장부(140)는 메모리 타입(Flash Memory Type), 하드디스크 타입(Hard Disk Type), 멀티미디어 카드 마이크로 타입(Multimedia Card Micro Type), 카드 타입의 메모리(예를 들어 SD 또는 XD 메모리 등), 램(Random Access Memory, RAM), SRAM(Static Random Access Memory), 롬(ROM, Read-Only Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory), PROM(Programmable Read-Only Memory), 자기 메모리, 자기 디스크, 광디스크 중 적어도 하나의 타입의 저장매체를 통해 구현될 수 있다
이와는 달리, 본 발명의 다른 실시예에 따른 FTL 관리 장치(100)는 외부로부터 수신된 FTL 리스트를 선택부(130)로 제공할 수도 있다. 이를 위해, 본 발명의 다른 실시예에 따른 FTL 관리 장치(100)는 외부의 장치와 유무선으로 통신할 수 있는 통신 수단을 더 구비할 수 있다.
다시 도 1을 참조하면, 본 발명의 일 실시예에 따른 FTL 관리 장치(100)의 각 구성은 마이크로프로세서(Microprocessor)를 포함하는 연산 장치로 구현될 수 있고, 예를 들어 중앙 처리 장치(Central Processing Unit, CPU) 및 그래픽 처리 장치(Graphic Processing Unit, GPU) 중 적어도 하나로 구현될 수 있다. 이와는 달리, FTL 관리 장치(100)의 각각의 구성 중 적어도 두 개가 SOC(System On Chip)으로 구현되는 것도 가능할 수 있다.
지금까지는 FTL 관리 장치(100)의 구성에 대해 설명하였다. 이하에서는 상술한 FTL 관리 장치(100)에 의해 수행되는 FTL 관리 방법에 대해 설명한다.
도 2는 본 발명의 일 실시예에 따른 FTL 관리 방법의 흐름도이고, 도 3은 본 발명의 일 실시예에 따른 FTL 리스트의 분류 기준을 설명하기 위한 도면이다.
먼저, FTL 관리 장치(100)는 복수의 서브 데이터로 구성되는 타겟 데이터의 의존성을 확인할 수 있다(S100). 구체적으로, FTL 관리 장치(100)의 제 1 확인부(110)는 복수의 서브 데이터 중 읽기 데이터의 개수와 쓰기 데이터의 개수를 비교하여, 더 많은 수의 데이터에 타겟 데이터가 의존성을 보임을 확인할 수 있다.
그 다음, FTL 관리 장치(100)는 타겟 데이터의 평균 쓰기 데이터 크기를 확인할 수 있다(S200). 구체적으로, FTL 관리 장치(100)의 제 2 확인부(120)는 복수의 서브 데이터 중 쓰기 데이터의 크기를 확인하고, 확인된 크기의 평균을 구함으로써 타겟 데이터의 평균 쓰기 데이터 크기를 확인할 수 있다.
마지막으로, FTL 관리 장치(100)는 FTL 리스트로부터 의존성 및 평균 쓰기 데이터 크기 중 적어도 하나에 대응되는 FTL을 선택할 수 있다(S300). 구체적으로, FTL 관리 장치(100)의 선택부(130)는 저장부(140) 또는 외부 장치로부터 FTL 리스트를 제공받아, 이로부터 의존성 및 평균 쓰기 데이터 크기 중 적어도 하나에 대응되는 FTL을 선택할 수 있다.
병렬성(M)이란 SSD가 타겟 데이터 내 복수의 서브 데이터를 병렬적으로 나누어 처리할 수 있는 단위에 대한 정보를 의미할 수 있다. 구체적으로, 병렬성(M)은 1 또는 2의 승수(1, 2, 4, 8, …)로 구성되고, 병렬성(M)에 대응되는 개수의 채널을 입출력 과정에서 동시에 사용할 수 있다. 즉, 최대 채널의 개수는 병렬성(M)에 기초한 SSD의 설계에 따라 미리 결정되고, 이러한 병렬성(M)은 복수의 서브 데이터를 병렬적으로 처리하는 SSD의 채널 수로 수치화 하여 표현할 수 있다. 적은 수의 채널을 병렬적으로 사용하는 경우에는 SSD의 수명에 이득이 있고, 많은 수의 채널을 병렬적으로 사용하는 경우에는 데이터 처리에 우수한 성능을 나타낼 수 있다. 도 3을 참조하면, 그래프 상에서 A, B, C가 SSD의 수명을 고려하는 영역이고, D, E, F가 데이터 처리 성능을 고려하는 영역을 예시한다.
또한, 매핑 단위란 타겟 데이터 내 복수의 서브 데이터의 주소를 변환하는데 이용되는 단위를 의미하고, 블록 단위, 페이지 단위, 및 이들을 혼합한 혼합 매핑 단위를 포함할 수 있다. 일반적으로, 페이지 단위는 4KB~32KB의 크기를 가지고, 블록 단위는 수 MB의 크기를 가질 수 있다. 따라서, 매핑 단위가 커짐에 따라 저장해야 하는 매핑 주소의 개수가 적어져 공간의 활용에 유리할 수 있다. 그러나, 단위보다 작은 서브 데이터의 입출력이 이루어지면 해당 정보를 빈번하게 수정해야 하므로, 성능적인 손해가 발생하고 NAND 플래시의 수명이 단축될 수 있다. 도 3을 참조하면, 그래프 상에서 A, D가 공간 활용성 측면을 고려하는 영역이고, C, F가 매핑 과정의 최소화에 따른 데이터 처리 성능을 고려하는 영역이다.
아울러, 도 3의 그래프 상에서 B, E는 혼합 매핑 단위를 채택하는 혼합 매핑 방법에 대한 영역을 의미한다. 혼합 매핑 방법에서는 블록 단위의 매핑이 이루어지는 데이터 블록의 개수 N과 페이지 단위의 매핑이 이루어지는 로그 블록의 개수 K를 결정할 수 있다. 데이터 블록의 개수 N이 로그 블록의 개수 K보다 클수록 공간을 더욱 효율적으로 활용할 수 있고, 반대의 경우 SSD 수명에 이득이 있다.
선택부(130)는 상술한 FTL 리스트를 이용하여 타겟 데이터에 대응되는 FTL을 선택할 수 있는데, 이에 대해서는 도 4를 통해 보다 구체적으로 설명한다.
도 4는 본 발명의 일 실시예에 따른 FTL 관리 방법 중 FTL 선택 방법의 상세 흐름도이다.
먼저, 선택부(130)는 타겟 데이터가 읽기 의존적인지 확인할 수 있다(S310). 즉, 선택부(130)는 먼저 타겟 데이터의 의존성을 확인할 수 있다. 만약, 타겟 데이터가 읽기 의존적이라면, SSD의 수명에 큰 영향을 미치는 쓰기 연산이 적게 수행됨을 의미하므로, 성능 향상을 위한 FTL을 선택하는 것이 바람직할 수 있다.
따라서, 타겟 데이터가 읽기 의존적인 경우, 선택부(130)는 FTL 리스트 중 SSD의 전체 가용 채널을 병렬적으로 이용하고, 매핑 단위를 블록으로 하는 제 1 FTL을 선택할 수 있다(S330).
반면, 타겟 데이터가 쓰기 의존적일 경우, 선택부(130)는 SSD의 수명과 데이터 처리 성능 사이의 균형을 고려하여 FTL을 선택할 수 있다. 이를 위해, 선택부(130)는 평균 쓰기 데이터의 크기가 블록보다 큰지를 확인할 수 있다(S320). 만약, 평균 쓰기 데이터의 크기가 블록보다 크다면, 선택부(130)는 데이터 처리 성능 향상을 위해 FTL 리스트 중 제 1 FTL을 선택할 수 있다(S330).
이와는 달리, 평균 쓰기 데이터의 크기가 블록보다 작은 경우, 선택부(130)는 평균 쓰기 데이터의 크기가 페이지보다 작은지를 확인할 수 있다(S340). 만약, 평균 쓰기 데이터의 크기가 페이지보다 작다면, 선택부(130)는 FTL 리스트 중 SSD의 가용 채널의 어느 하나만 이용하고, 매핑 단위를 페이지로 하는 제 2 FTL을 선택할 수 있다(S350). 평균적으로 쓰기 데이터의 크기가 페이지보다 작은 경우에는 SSD의 수명을 더욱 고려할 필요가 있기 때문이다.
반면, 평균 쓰기 데이터의 크기가 페이지 이상이면, 선택부(130)는 FTL 리스트로부터 평균 쓰기 데이터의 크기에 비례하는 개수의 SSD 가용 채널을 이용하는 적어도 하나의 후보 FTL 중 하나를 제 3 FTL로 선택할 수 있다(S360). 즉, 선택부(130)는 평균 쓰기 데이터의 크기를 페이지로 나눈 값을 넘지 않는 최대 정수의 SSD 가용 채널을 이용하는 적어도 하나의 후보 FTL 중 하나를 제 3 FTL로 선택할 수 있다.
이하에서는 도 4를 참조하여 제 3 FTL을 선택하는 방법을 설명한다.
도 5는 본 발명의 일 실시예에 따른 FTL 관리 방법 중 제 3 FTL 선택 방법의 상세 흐름도이다.
선택부(130)는 먼저 평균 쓰기 데이터를 기초로 데이터 블록의 개수 N 및 로그 블록의 개수 K를 결정할 수 있다(S361). 이를 위해, 선택부(130)는 모든 서브 데이터에 균일한 쓰기 연산이 수행된다고 가정한다. 서브 데이터의 크기가 커질수록 저장을 위한 더 많은 블록이 요구되는데, 모든 서브 데이터에 대하여 균일한 쓰기 연산이 수행된다면 균일한 서브 데이터에 대응되는 블록을 할당받아야 한다.
따라서, 선택부(130)는 데이터 블록의 개수 N과 로그 블록의 개수 K를 평균 쓰기 데이터에 비례하여 증가시킬 수 있다. 또한, 선택부(130)는 로그 블록의 개수 K에 평균 쓰기 데이터의 크기와 가용 로그 블록의 비율을 적용하여 각 서브 데이터가 균일한 로그 블록을 점유할 수 있도록 구성할 수 있다. 구체적으로, 선택부(130)는 수학식 1에 따라 데이터 블록의 개수 N과 로그 블록의 개수 K를 결정할 수 있다.
Figure pat00001
Figure pat00002
여기서 N은 데이터 블록의 개수를 의미하고, K는 로그 블록의 개수를 의미하고, N0와 K0는 각각 실험적으로 측정 가능한 데이터 블록의 개수와 로그 블록의 개수의 초기값을 나타낼 수 있다. 또한, Nw.p는 평균 쓰기 데이터의 크기를 페이지 단위로 나타낸 값이고, Slog는 사용 가능한 전체 로그 블록의 개수를, Sws는 서브 데이터의 크기를 나타낼 수 있다.
그 다음, 선택부(130)는 복수의 서브 데이터 각각에 대하여 쓰기 데이터가 불균일하게 분포하는지를 확인할 수 있다(S362). 앞서 복수의 서브 데이터 각각에 균일한 쓰기 데이터가 분포함을 가정한 바, 선택부(130)는 복수의 서브 데이터 각각에 쓰기 데이터가 불균일하게 분포한다면 가정에 기초하여 결정된 데이터 블록의 개수 N과 로그 블록의 개수 K를 보정할 수 있다.
만약, 복수의 서브 데이터 각각에 대하여 쓰기 데이터가 불균일하게 분포하는 경우, 선택부(130)는 복수의 서브 데이터 각각에 대한 쓰기 데이터의 점유도를 기초로 로그 블록의 개수 K를 보정할 수 있다(S364). 여기서, 쓰기 데이터의 점유도란 복수의 서브 데이터 각각에서의 쓰기 빈도를 의미하며, 수학식 2에 따라 서브 데이터에 대한 쓰기 데이터의 점유도 P(x)가 획득될 수 있다.
Figure pat00003
여기서, TS(x)는 서브 데이터 x에 얼마나 많은 쓰기가 수행되었는지를 의미하고, i는 각각의 서브 데이터에 대한 인덱스 값을 의미할 수 있다.
서브 데이터에 대한 쓰기 데이터의 점유도 P(x)를 구한 후, 선택부(130)는 각각의 서브 데이터의 쓰기 빈도를 핫(Hot), 웜(Warm), 콜드(Cold)로 구분할 수 있다. 구체적으로, 선택부(130)는 서브 데이터에 대한 쓰기 데이터의 점유도 P(x)가 전체 P(x)의 평균의 2배 이상일 경우, 해당 서브 데이터의 쓰기 빈도를 핫으로 결정할 수 있다. 또한, 선택부(130)는 데이터의 점유도 P(x)가 평균 쓰기 데이터의 크기를 페이지 단위로 나타낸 값 Nw.p보다 작으면 해당 서브 데이터의 쓰기 빈도를 콜드로, 그렇지 않으면 웜으로 결정할 수 있다.
이렇게 결정된 각각의 서브 데이터에 대한 쓰기 빈도를 이용하여, 선택부(130)는 로그 블록의 개수 K를 보정할 수 있다. 콜드 데이터는 매우 적은 쓰기 연산만을 수행하기 때문에, 선택부(130)는 로그 블록의 개수를 구할 때, 서브 데이터의 크기 대신 핫 데이터와 웜 데이터의 크기만을 사용할 수 있다. 구체적으로, 선택부(130)는 수학식 3에 따라 로그 블록의 개수 K를 보정할 수 있다.
Figure pat00004
여기서, Rnon-cold 는 서브 데이터 중 핫 데이터와 웜 데이터가 차지하는 비율을 의미할 수 있고, K1은 로그 블록의 개수 K에 대한 제 1 보정 값이고, K2는 로그 블록의 개수 K에 대한 제 2 보정 값을 의미할 수 있다.
그 다음, 선택부(130)는 복수의 서브 데이터 중 쓰기 데이터의 점유도 이상의 쓰기 빈도를 가지는 서브 데이터 사이의 거리가 임계 거리 이상인지 확인할 수 있다(S365). 콜드 데이터만이 결합되는 경우, 이들에게 할당되는 로그 블록의 효율성이 크게 낮아질 수 있다.
따라서, 복수의 서브 데이터 중 쓰기 데이터의 점유도 이상의 쓰기 빈도를 가지는 서브 데이터 사이의 거리가 임계 거리 이상이면, 선택부(130)는 쓰기 데이터의 점유도 이상의 쓰기 빈도를 가지는 서브 데어 사이의 거리를 기초로 데이터 블록의 개수 N과 로그 블록의 개수 K를 보정할 수 있다(S366). 이를 위해, 선택부(130)는 콜드 데이터가 아닌 데이터 사이에서의 콜드 데이터의 평균 분포 BDnon-cold를 정의할 수 있다. BDnon-cold이 크다는 것은 서로 인접한 콜드 데이터가 많음을 의미하므로, 선택부(130)는 데이터 블록의 개수 N과 로그 블록의 개수 K를 증가시켜 콜드 데이터들만이 결합되는 경우를 방지할 수 있다. 구체적으로, 선택부(130)는 수학식 4에 따라 데이터 블록의 개수 N과 로그 블록의 개수 K에 대한 제 1 보정 값 K1을 보정할 수 있다.
Figure pat00005
여기서 α는 보정 파라미터로서,
Figure pat00006
로 정의될 수 있다.
마지막으로, 서브 데이터 내 쓰기 데이터가 균일하게 분포하거나, 복수의 서브 데이터 중 쓰기 데이터의 점유도 이상의 쓰기 빈도를 가지는 서브 데이터 사이의 거리가 임계 거리보다 작거나, 쓰기 데이터의 점유도 이상의 쓰기 빈도를 가지는 서브 데어 사이의 거리를 기초로 데이터 블록의 개수 N과 로그 블록의 개수 K가 보정된 경우, 선택부(130)는 데이터 블록의 개수 N과 로그 블록의 개수 K를 기초로 제 3 FTL을 선택할 수 있다(S363).
아울러, 선택부(130)는 핫 데이터와 웜 데이터의 쓰기 빈도 차이가 클 경우에도, 데이터 블록의 개수 N과 로그 블록의 개수 K를 보정할 수 있다. 핫 데이터와 웜 데이터의 쓰기 빈도 차이가 크다면, 핫 데이터에 로그 블록을 더 많이 할당해 주어야 성능 하락을 방지할 수 있기 때문이다.
이를 위해, 선택부(130)는 핫 데이터에 발생한 평균 쓰기 횟수를 WFhot, 핫 데이터와 웜 데이터에 발생한 평균 쓰기 횟수를 WFnon-cold로 정의할 수 있다. 선택부(130)는 정의된 쓰기 횟수 WFhot와 WFnon-cold의 비율을 이용하여, 차이가 큰 경우 더 많은 로그 블록을 할당할 수 있다. 구체적으로, 선택부(130)는 수학식 5에 따라 로그 블록의 개수 K에 대한 제 2 보정 값 K2를 보정할 수 있다.
Figure pat00007
여기서, β는 보정 파라미터로서,
Figure pat00008
로 정의될 수 있다.
아울러, 로그 블록의 개수에 수학식 4와 수학식 5을 모두 적용 할 경우, 로그 블록의 개수 K가 지나치게 증가할 수 있다. 따라서, 선택부(130)는 수학식 3의 결과에 수학식 4 및 5를 각각 적용하여 K값을 보정한 후, 이들 중 더 큰 값을 가지는 결과를 최종 로그 블록의 개수 K로 보정할 수도 있다. 이를 종합하면 아래의 수학식 6으로 정리될 수 있다.
Figure pat00009
Figure pat00010
상술한 바에 따른 FTL 관리 장치(100) 및 방법은, 유사한 동작 성능을 가지는 FTL을 구분함으로써, 해당 FTL의 특성을 신속하게 파악할 수 있다. 또한, 데이터 특성에 대응되는 FTL을 선택함으로써, SSD의 수명과 입출력 성능을 향상시킬 수 있다.
본 발명에 첨부된 블록도의 각 블록과 흐름도의 각 단계의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수도 있다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 블록도의 각 블록 또는 흐름도의 각 단계에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 기록매체에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 기록매체에 저장된 인스트럭션들은 블록도의 각 블록 또는 흐름도 각 단계에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 블록도의 각 블록 및 흐름도의 각 단계에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록 또는 각 단계는 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실시예들에서는 블록들 또는 단계들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들 또는 단계들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들 또는 단계들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
100: FTL 관리 장치
110: 제 1 확인부
120: 제 2 확인부
130: 선택부
140: 저장부

Claims (12)

  1. FTL(Flash Translation Layer)을 관리하는 장치로서,
    복수의 서브 데이터로 구성되는 타겟 데이터의 의존성을 확인하는 제 1 확인부;
    상기 타겟 데이터의 평균 쓰기 데이터 크기를 확인하는 제 2 확인부; 및
    병렬성 및 매핑 단위를 기준으로 상기 FTL이 구분되는 FTL 리스트로부터 상기 의존성 및 상기 평균 쓰기 데이터 크기 중 적어도 하나에 대응되는 FTL를 선택하는 선택부를 포함하는
    FTL 관리 장치.
  2. 제 1 항에 있어서,
    상기 선택부는,
    상기 타겟 데이터가 읽기 의존적이면, 상기 FTL 리스트 중 SSD(Solid State Drive)의 전체 가용 채널을 병렬적으로 이용하고, 상기 매핑 단위를 블록으로 하는 제 1 FTL을 선택하는
    FTL 관리 장치.
  3. 제 2 항에 있어서,
    상기 선택부는,
    상기 타겟 데이터가 쓰기 의존적이고, 상기 평균 쓰기 데이터의 크기가 상기 블록보다 크면, 상기 FTL 리스트 중 상기 제 1 FTL을 선택하는
    FTL 관리 장치.
  4. 제 1 항에 있어서,
    상기 선택부는,
    상기 타겟 데이터가 쓰기 의존적이고, 상기 평균 쓰기 데이터의 크기가 페이지보다 작으면, 상기 FTL 리스트 중 SSD의 가용 채널의 어느 하나만 이용하고, 상기 매핑 단위를 상기 페이지로 하는 제 2 FTL을 선택하는
    FTL 관리 장치.
  5. 제 1 항에 있어서,
    상기 선택부는,
    상기 타겟 데이터가 쓰기 의존적이고, 상기 평균 쓰기 데이터의 크기가 페이지 이상 및 블록 이하이면, 상기 FTL 리스트로부터 상기 평균 쓰기 데이터의 크기에 비례하는 개수의 SSD 가용 채널을 이용하는 적어도 하나의 후보 FTL 중 하나를 제 3 FTL 로 선택하는
    FTL 관리 장치.
  6. 제 5 항에 있어서,
    상기 선택부는,
    상기 평균 쓰기 데이터의 크기에 비례하여 이용할 데이터 블록 및 로그 블록의 개수를 결정하고, 상기 후보 FTL 중 상기 결정된 개수의 상기 데이터 블록 및 상기 로그 블록의 이용이 가능한 상기 제 3 FTL을 선택하는
    FTL 관리 장치.
  7. 제 6 항에 있어서,
    상기 선택부는,
    상기 복수의 서브 데이터 각각에 대하여 쓰기 데이터가 불균일하게 분포하면, 상기 결정된 데이터 블록 및 상기 로그 블록의 개수를 보정하는
    FTL 관리 장치.
  8. 제 7 항에 있어서,
    상기 선택부는,
    상기 복수의 서브 데이터 각각에 대한 상기 쓰기 데이터의 점유도를 기초로 상기 결정된 데이터 블록 및 상기 로그 블록의 개수를 보정하는
    FTL 관리 장치.
  9. 제 8 항에 있어서,
    상기 선택부는,
    상기 쓰기 데이터의 점유도에 반비례하여 상기 로그 블록의 개수를 보정하는
    FTL 관리 장치.
  10. 제 8 항에 있어서,
    상기 선택부는,
    상기 복수의 서브 데이터 중 상기 쓰기 데이터의 점유도 이상의 쓰기 빈도를 가지는 서브 데이터 사이의 거리를 기초로 상기 결정된 데이터 블록 및 상기 로그 블록의 개수를 보정하는
    FTL 관리 장치.
  11. FTL(Flash Translation Layer)을 관리하는 방법으로서,
    복수의 서브 데이터로 구성되는 타겟 데이터의 의존성을 확인하는 단계;
    상기 타겟 데이터의 평균 쓰기 데이터 크기를 확인하는 단계; 및
    병렬성 및 매핑 단위를 기준으로 FTL(Flash Translation Layer)이 구분되는 FTL 리스트로부터 상기 의존성 및 상기 평균 쓰기 데이터 크기 중 적어도 하나에 대응되는 FTL를 선택하는 단계를 포함하는
    FTL 관리 방법.
  12. 제 11 항에 기재된 방법에 따른 각각의 단계를 수행하는 명령어를 포함하는 프로그램이 기록된 컴퓨터 판독 가능 기록매체.
KR1020190045057A 2018-04-17 2019-04-17 Ftl 관리 장치 및 방법 KR102314784B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020180044376 2018-04-17
KR20180044376 2018-04-17

Publications (2)

Publication Number Publication Date
KR20190121265A true KR20190121265A (ko) 2019-10-25
KR102314784B1 KR102314784B1 (ko) 2021-10-19

Family

ID=68421158

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190045057A KR102314784B1 (ko) 2018-04-17 2019-04-17 Ftl 관리 장치 및 방법

Country Status (1)

Country Link
KR (1) KR102314784B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114327272A (zh) * 2021-12-28 2022-04-12 深圳大普微电子科技有限公司 一种数据处理方法、固态硬盘控制器及固态硬盘

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014071611A (ja) * 2012-09-28 2014-04-21 Mega Chips Corp 半導体記憶装置
KR101412830B1 (ko) * 2013-02-07 2014-06-27 홍익대학교 산학협력단 반도체 저장장치 및 이를 제어하는 방법
KR101430552B1 (ko) 2013-04-08 2014-08-18 인하대학교 산학협력단 Ssd 기반 스토리지 시스템에서 중복률과 입출력 성능 향상을 위한 ssd 스토리지의 데이터 중복제거 및 재활용 시스템
KR101447188B1 (ko) * 2007-07-31 2014-10-08 삼성전자주식회사 플래시 메모리에 최적화된 입출력 제어 방법 및 장치
KR20170063332A (ko) * 2015-11-30 2017-06-08 삼성전자주식회사 솔리드 스테이트 드라이브 및 그것의 동작 방법
US20170277631A1 (en) * 2014-09-22 2017-09-28 Hitachi, Ltd. Storage device, semiconductor memory device, and method for controlling same

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101447188B1 (ko) * 2007-07-31 2014-10-08 삼성전자주식회사 플래시 메모리에 최적화된 입출력 제어 방법 및 장치
JP2014071611A (ja) * 2012-09-28 2014-04-21 Mega Chips Corp 半導体記憶装置
KR101412830B1 (ko) * 2013-02-07 2014-06-27 홍익대학교 산학협력단 반도체 저장장치 및 이를 제어하는 방법
KR101430552B1 (ko) 2013-04-08 2014-08-18 인하대학교 산학협력단 Ssd 기반 스토리지 시스템에서 중복률과 입출력 성능 향상을 위한 ssd 스토리지의 데이터 중복제거 및 재활용 시스템
US20170277631A1 (en) * 2014-09-22 2017-09-28 Hitachi, Ltd. Storage device, semiconductor memory device, and method for controlling same
KR20170063332A (ko) * 2015-11-30 2017-06-08 삼성전자주식회사 솔리드 스테이트 드라이브 및 그것의 동작 방법

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Improving NAND Endurane by Dynamic Program and Erase Sacling(Jihong Kim, Department of Computer Science and Engineering Seoul National University, Korea, NNVRAMOS 2013, 2013.10.24) *
J. Jeong et al., "Improving NAND endurance by dynamic program and erase scaling", Proceedings of the 5th USENIX conference on Hot Topics in Storage and File Systems, pp. 1-5, June 2013.* *
김홍석, "병렬화된 플래시 메모리 저장 장치에서 불량 블록 관리의 정확성 보장 및 성능 최적화 기법", 서울대학교 컴퓨터공학과 공학박사학위논문, 2013.08. *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114327272A (zh) * 2021-12-28 2022-04-12 深圳大普微电子科技有限公司 一种数据处理方法、固态硬盘控制器及固态硬盘

Also Published As

Publication number Publication date
KR102314784B1 (ko) 2021-10-19

Similar Documents

Publication Publication Date Title
CN106874217B (zh) 存储器系统及控制方法
US9645896B2 (en) Data storage device and flash memory control method
KR100791325B1 (ko) 비휘발성 메모리를 관리하는 장치 및 방법
KR101467941B1 (ko) 비휘발성 저장부에 대한 가변 오버­프로비저닝
KR102372825B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US9582208B2 (en) Memory system performing incremental merge operation and data write method
US20160306588A1 (en) Solid state disk and data moving method
US10203899B2 (en) Method for writing data into flash memory apparatus, flash memory apparatus, and storage system
US20130173845A1 (en) Command Aware Partial Page Programming
US20100211820A1 (en) Method of managing non-volatile memory device and memory system including the same
JP2006221636A (ja) Run単位アドレスマッピングテーブル及びそれの構成方法
US9081658B2 (en) Storage device and data management method thereof
JP6008325B2 (ja) データ記憶システムおよびその制御方法
US20160274819A1 (en) Memory system including host and a plurality of storage devices and data migration method thereof
CN108027764B (zh) 可转换的叶的存储器映射
US11989125B2 (en) Storage device and operating method of memory controller
US10168926B2 (en) Method of operating data storage device and method of operating data processing system including same
US20240143219A1 (en) Software-hardware combination method for internal mapping address query of zoned namespace
US11287996B2 (en) Method, device and computer program product for storing data
US8274521B2 (en) System available cache color map
KR20100063495A (ko) 플래시 메모리를 포함하는 반도체 장치 및 이의 어드레스 사상 방법
JP2018160189A (ja) メモリシステム
KR102314784B1 (ko) Ftl 관리 장치 및 방법
US9507794B2 (en) Method and apparatus for distributed processing of file
US11226738B2 (en) Electronic device and data compression method thereof

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant