KR101974731B1 - 플래시 스토리지 장치 및 플래시 스토리지 장치에 데이터를 기록하는 방법 - Google Patents

플래시 스토리지 장치 및 플래시 스토리지 장치에 데이터를 기록하는 방법 Download PDF

Info

Publication number
KR101974731B1
KR101974731B1 KR1020170103147A KR20170103147A KR101974731B1 KR 101974731 B1 KR101974731 B1 KR 101974731B1 KR 1020170103147 A KR1020170103147 A KR 1020170103147A KR 20170103147 A KR20170103147 A KR 20170103147A KR 101974731 B1 KR101974731 B1 KR 101974731B1
Authority
KR
South Korea
Prior art keywords
block
write buffer
written
size
data
Prior art date
Application number
KR1020170103147A
Other languages
English (en)
Other versions
KR20190018321A (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 성균관대학교산학협력단
Priority to KR1020170103147A priority Critical patent/KR101974731B1/ko
Publication of KR20190018321A publication Critical patent/KR20190018321A/ko
Application granted granted Critical
Publication of KR101974731B1 publication Critical patent/KR101974731B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F2003/0691

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

동기화 명령어를 사용하지 않고서도 휘발성 메모리에 기록된 기록 대상 데이터 블록이 플래시 메모리에 기록되도록 하는 플래시 스토리지 장치가 제공된다. 플래시 스토리지 장치는 컨트롤러, 쓰기 버퍼 및 플래시 메모리를 포함하고, 컨트롤러는, 쓰기 버퍼에 기록 대상 데이터 블록을 기록하고, 그리고 쓰기 버퍼에 임의 블록을 기록함으로써 기록 대상 데이터 블록을 쓰기 버퍼에서 추출 (Eviction) 하여 플래시 메모리에 기록하도록 구성된다. 따라서, FTL (Flash Translation Layer) 매핑 정보의 업데이트로 인한 오버헤드를 감소시킬 수 있으며, 플래시 스토리지의 성능과 수명을 향상시킬 수 있다.

Description

플래시 스토리지 장치 및 플래시 스토리지 장치에 데이터를 기록하는 방법{AN APPARATUS OF FLASH STORAGE AND METHOD FOR WRITING DATA ON A FLASH STORAGE}
본 발명은 데이터 저장에 관한 것으로서, 보다 구체적으로는 플래시 스토리지 장치 및 플래시 스토리지 장치에 데이터를 기록하는 방법에 관한 것이다.
오늘날 낸드 플래시 스토리지 (예를 들어, SSD, eMMC, SD Card) 는 다양한 방식으로 발전해 왔으며, 이러한 발전은 기존 HDD 기반의 소프트웨어 스택들을 전반적으로 다시 연구하는 기회를 제공하였다. 특히, 기존 소프트웨어 스택을 플래시 스토리지 관점에서 최적화하기 위해 플래시 스토리지의 내부 구조 및 동작 과정을 이해하고 이를 활용하기 위한 연구들이 수행되었다.
특히, 최근에는 플래시 스토리지의 성능과 수명을 최적화하기 위해 다양한 소프트웨어 스택에서 동기화 명령어 (예를 들어, msync, fsync, fdatasync) 와 관련된 연구들이 진행되고 있다. 예를 들어, CCFS는 어플리케이션 수준의 데이터 일관성을 효율적으로 보장하기 위해 스트림 (Stream) 기반의 동기화 명령어를 사용한다. 또한, OptFS 는 효율적인 파일 시스템 동기화를 위해 osync 와 dsync 를 소개한 바 있다. 그러나 지금까지의 연구는 동기화 명령어의 호출 수를 줄이거나 이를 최적화하는 것에 집중되어 있었다.
한국 등록특허 제10-0706808호 ("쓰기 버퍼로서 동작하는 불 휘발성 메모리를 구비한 데이터 저장 장치 및 그것의 블록 회수 방법", 삼성전자 주식회사)
전술한 문제점을 해결하기 위한 본 발명의 목적은 임의 블록이 쓰기 버퍼에 기록되도록 함으로써 동기화 명령어를 사용하지 않고서도 휘발성 메모리에 기록된 기록 대상 데이터 블록이 플래시 메모리에 기록되도록 할 수 있는 플래시 스토리지 장치에 데이터를 기록하는 방법을 제공하는 것이다.
전술한 문제점을 해결하기 위한 본 발명의 다른 목적은 임의 블록이 쓰기 버퍼에 기록되도록 함으로써 동기화 명령어를 사용하지 않고서도 휘발성 메모리에 기록된 기록 대상 데이터 블록이 플래시 메모리에 기록되도록 할 수 있는 플래시 스토리지 장치를 제공하는 것이다.
다만, 본 발명의 해결 하고자 하는 과제는 이에 한정되는 것이 아니며, 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위에서 다양하게 확장될 수 있을 것이다.
전술한 목적을 달성하기 위한 본 발명의 일 실시예에 따른 플래시 스토리지 장치에 데이터를 기록하는 방법에 있어, 상기 플래시 스토리지 장치는 쓰기 버퍼 및 플래시 메모리를 포함하고, 상기 방법은, 쓰기 버퍼에 기록 대상 데이터 블록을 기록하는 버퍼 기록 단계; 및 상기 쓰기 버퍼에 임의 블록을 기록함으로써 상기 기록 대상 데이터 블록을 상기 쓰기 버퍼에서 추출 (Eviction) 하여 상기 플래시 메모리에 기록하는 메모리 기록 단계를 포함할 수 있다.
일 측면에 따르면, 상기 임의 블록은 제로 패딩 (zero-padding) 블록일 수 있다.
일 측면에 따르면, 상기 임의 블록의 크기는 상기 쓰기 버퍼에 기록된 기록 대상 데이터 블록 전부가 상기 플래시 메모리에 기록되도록 상기 쓰기 버퍼를 완전히 채우도록 결정될 수 있다.
일 측면에 따르면, 상기 임의 블록은 2.3 MB 의 크기를 가질 수 있다.
일 측면에 따르면, 상기 버퍼 기록 단계는, 상기 기록 대상 데이터 블록의 논리 주소 (Logical Block Address, LBA) 를 물리 주소 (Physical Block Address, PBA) 와 매핑하는 FTL (Flash Translation Layer) 매핑 정보를 상기 쓰기 버퍼에 더 기록할 수 있다.
일 측면에 따르면, 상기 메모리 기록 단계는, 상기 FTL 매핑 정보를 상기 쓰기 버퍼에 유지할 수 있다.
일 측면에 따르면, 상기 쓰기 버퍼에 기록된 임의 블록을 삭제하는 단계를 더 포함할 수 있다.
일 측면에 따르면, 상기 임의 블록을 삭제하는 단계는, Trim 명령어에 응답하여 수행될 수 있다.
일 측면에 따르면, 상기 플래시 스토리지 장치는 휘발성 메모리를 포함하고, 상기 쓰기 버퍼는 상기 휘발성 메모리에 형성될 수 있다.
일 측면에 따르면, 상기 FTL 매핑 정보는 상기 플래시 스토리지 장치의 액티브 블록 (Active Block) 이 교체될 때 상기 플래시 메모리에 기록될 수 있다.
본 발명의 다른 실시예에 따른, 컨트롤러, 쓰기 버퍼 및 플래시 메모리를 포함하는 플래시 스토리지 장치에 있어, 상기 컨트롤러는, 상기 쓰기 버퍼에 기록 대상 데이터 블록을 기록하고; 그리고 상기 쓰기 버퍼에 임의 블록을 기록함으로써 상기 기록 대상 데이터 블록을 상기 쓰기 버퍼에서 추출 (Eviction) 하여 상기 플래시 메모리에 기록하도록 구성될 수 있다.
일 측면에 따르면, 상기 임의 블록은 제로 패딩 (zero-padding) 블록일 수 있다.
일 측면에 따르면, 상기 임의 블록의 크기는 상기 쓰기 버퍼에 기록된 기록 대상 데이터 블록 전부가 상기 플래시 메모리에 기록되도록 상기 쓰기 버퍼를 완전히 채우도록 결정될 수 있다.
일 측면에 따르면, 상기 임의 블록은 2.3 MB 의 크기를 가질 수 있다.
일 측면에 따르면, 상기 쓰기 버퍼에 기록 대상 데이터 블록을 기록하는 것은, 상기 기록 대상 데이터 블록의 논리 주소 (Logical Block Address, LBA) 를 물리 주소 (Physical Block Address, PBA) 와 매핑하는 FTL (Flash Translation Layer) 매핑 정보를 상기 쓰기 버퍼에 더 기록할 수 있다.
일 측면에 따르면, 상기 쓰기 버퍼에 임의 블록을 기록함으로써 상기 기록 대상 데이터 블록을 상기 쓰기 버퍼에서 추출하여 상기 플래시 메모리에 기록하는 것은, 상기 FTL 매핑 정보는 상기 쓰기 버퍼에 유지할 수 있다.
일 측면에 따르면, 상기 컨트롤러는, 상기 쓰기 버퍼에 기록된 임의 블록을 삭제하도록 더 구성될 수 있다.
일 측면에 따르면, 상기 임의 블록을 삭제하는 것은, Trim 명령어에 응답하여 수행될 수 있다.
일 측면에 따르면, 상기 플래시 스토리지 장치는 휘발성 메모리를 포함하고, 상기 쓰기 버퍼는 상기 휘발성 메모리에 형성될 수 있다.
일 측면에 따르면, 상기 FTL 매핑 정보는 상기 플래시 스토리지 장치의 액티브 블록 (Active Block) 이 교체될 때 상기 플래시 메모리에 기록될 수 있다.
본 발명의 다른 실시예에 따른, 프로세서에 의해 실행 가능한 명령어들을 저장하는 컴퓨터 판독 가능 저장 매체에 있어, 상기 명령어들은 상기 프로세서에 의해 수행되었을 때, 컨트롤러, 쓰기 버퍼 및 플래시 메모리를 포함하는 플래시 스토리지 장치에 포함된 상기 컨트롤러로 하여금, 상기 쓰기 버퍼에 기록 대상 데이터 블록을 기록하고; 그리고 상기 쓰기 버퍼에 임의 블록을 기록함으로써 상기 기록 대상 데이터 블록을 상기 쓰기 버퍼에서 추출 (Eviction) 하여 상기 플래시 메모리에 기록하게 하도록 구성될 수 있다.
개시된 기술은 다음의 효과를 가질 수 있다. 다만, 특정 실시예가 다음의 효과를 전부 포함하여야 한다거나 다음의 효과만을 포함하여야 한다는 의미는 아니므로, 개시된 기술의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.
전술한 본 발명의 일 실시예에 따른 플래시 스토리지 장치에 데이터를 기록하는 방법 및 플래시 스토리지 장치에 따르면, 임의 블록이 쓰기 버퍼에 기록되도록 함으로써 동기화 명령어를 사용하지 않고서도 휘발성 메모리에 기록된 기록 대상 데이터 블록이 플래시 메모리에 기록되도록 할 수 있다.
따라서, 동기화 명령어의 사용에 따른 FTL (Flash Translation Layer) 매핑 정보의 업데이트로 인한 오버헤드를 감소시킬 수 있으며, 플래시 스토리지의 성능과 수명을 향상시킬 수 있다.
또한, 예를 들어 FLUSH 명령과 같은 동기화 명령어를 사용하는 경우와 달리, 데이터의 순차 쓰기와 임의 쓰기의 성능 차이를 거의 제거할 수 있다.
도 1은 FLUSH 명령어의 성능을 비교한 그래프이다.
도 2는 Eviction 시점을 확인하기 위한 의사 코드를 나타낸다.
도 3은 Eviction 시점 실험 결과를 나타내는 그래프이다.
도 4는 FLUSH 명령어와 Eviction 명령어의 성능 비교를 나타내는 그래프이다.
도 5a 및 도5b는 본 발명의 일 실시예에 따른 플래시 스토리지 장치에 대한 데이터 기록의 개념도이다.
도 6은 본 발명의 일 실시예에 따른 플래시 스토리지 장치에 데이터를 기록하는 방법의 흐름도이다.
도 7은 본 발명의 일 실시예에 따른 플래시 스토리지 장치의 구성을 나타내는 블록도이다.
도 8은 본 발명의 일 실시예에 따른 플래시 스토리지를 포함하는 컴퓨팅 시스템의 구성을 나타내는 블록도이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다.
그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제 1, 제 2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
전술한 바와 같이, 플래시 스토리지의 최적화를 위해 플래시 스토리지의 내부 구조 및 동작 과정을 이해하고 이를 활용하기 위한 연구들이 수행되었고, 최근에는 플래시 스토리지의 성능과 수명을 최적화하기 위해 다양한 소프트웨어 스택에서 동기화 명령어와 관련된 연구들이 진행되었으나, 이러한 연구들은 동기화 명령어의 호출 수를 줄이거나 이를 최적화하는 것에 그친 바 있다.
관련하여, 동기화 명령어는 휘발성 메모리 (예를 들어, DRAM) 에 저장된 데이터를 스토리지에 영속적 (Persistence) 으로 기록하기 위해 사용된다. 그러나, 동기화 명령어는 플래시 스토리지 (예를 들어, SSD) 의 성능 및 수명을 감소시키는 주요한 원인 중 하나이다. 이러한 문제점을 해결하기 위해, 본 발명의 일 실시예에 따른 플래시 스토리지 장치 및 플래시 스토리지 장치에 데이터를 기록하는 방법은 플래시 스토리지의 내부 구조 및 동작 과정을 이용함으로써 동기화 명령어를 대체할 수 있는 새로운 기법을 이용할 수 있다. 일 측면에 따르면, 본 발명의 실시예는 스토리지 쓰기 버퍼의 Eviction 명령어를 활용하여 동기화 명령어와 동일한 효과를 얻으며, 실험 결과 기존 동기화 명령어에 비해 최대 75%의 성능 향상이 가능하다는 것을 확인하였다.
플래시 스토리지의 내부 구조 및 동작 과정
플래시 스토리지 (예를 들어, SSD) 는 DRAM 과 같은 휘발성 메모리와 낸드 플래시 메모리로 구성될 수 있으며, 스토리지 내부의 DRAM 은 2 가지 타입의 데이터를 저장한다.
첫 번째 타입의 데이터는 FTL (Flash Translation Layer) 매핑 정보이다. FTL 매핑 정보는 제자리 덮어쓰기 (In-place Update) 가 불가능한 플래시 메모리의 특성을 보완하기 위해 호스트로부터 요청된 논리 주소 (Logical Block Address, LBA) 를 낸드 플래시 메모리의 물리 주소 (Physical Block Address, PBA) 로 변환하는 기능을 수행한다. 이하, LBA 및 PBA 는 페이지 단위를 채용하여 각각 LPN (Logical Page Number) 와 PPN (Physical Page number) 로서 지칭될 수도 있다. FTL 매핑 정보는 시스템 부팅 시점에 낸드 플래시 메모리에서 DRAM으로 로드 (load) 되며 동기화 명령어 (예를 들어, FLUSH) 에 의해서 낸드 플래시 메모리에 반영된다.
두 번째 타입의 데이터는 호스트로부터 요청된 쓰기 데이터 (이하, '기록 대상 데이터 블록'이라고도 지칭될 수 있음) 이다. 쓰기 데이터는 DRAM 상의 쓰기 버퍼에 임시로 저장되며 쓰기 버퍼의 공간 부족으로 인한 데이터 추출 (Eviction) 또는 동기화 명령어에 의해서 낸드 플래시 메모리에 반영될 수 있다. 다만, 데이터 추출에 의한 데이터의 경우 해당 데이터만 플래시 메모리에 반영되며 데이터의 FTL 매핑 정보는 플래시 메모리로 반영되지 않는다.
FLUSH 명령어와 플래시 스토리지의 성능 분석
일반적으로 어플리케이션들은 페이지 캐시 (즉, DRAM) 상의 자신의 데이터를 스토리지에 영속적으로 저장하기 위해 동기화 명령어 (예를 들어, msync, fsync, fdatasync) 를 이용하며 리눅스 커널은 어플리케이션의 동기화 명령어를 FLUSH 명령어로 변환하여 플래시 스토리지로 전달할 수 있다. FLUSH 명령어가 전달되면 플래시 스토리지는 쓰기 버퍼의 모든 데이터와 해당 데이터의 FTL 매핑 정보를 플래시 메모리에 즉시 저장한다. 즉, FLUSH 명령어가 호출될 때마다 플래시 스토리지는 데이터와 해당 매핑 정보에 대한 쓰기 요청을 각각 수행해야만 한다. 그 결과, FLUSH 에 의핸 매핑 정보 쓰기 요청은 시스템의 전반적인 성능을 감소시키는 주요한 원인이 된다.
관련하여, 매핑 정보 쓰기 요청 양에 따라서 플래시 스토리지의 성능이 얼마나 감소하는지를 확인하기 위해 벤치마킹 툴 (Benchmark Tool) 을 구현하여 실험을 진행하였다. 도 1은 FLUSH 명령어의 성능을 비교한 그래프이다.
구현한 툴은 특정 크기의 쓰기 요청을 O_DIRECT 옵션으로 수행한 후 fsync 의 응답 시간을 결과로 보여준다. 실험은 삼성 850 Pro 120GB 의 SSD를 SATA 3.0 에 연결하여 수행하였으며, 쓰기 요청 양을 8KB 에서 4MB 까지 변경하면서 실험을 진행하였다. 즉, 쓰기 요청 양 (Write Amount) 이 8KB 인 경우, 4KB 크기의 쓰기 요청을 2번 수행한 후 fsync 의 응답 시간을 측정하였다. 도 1 에 도시된 바와 같이, 쓰기 양이 증가할수록 fsync 의 응답 시간이 증가하는 것을 확인할 수 있다. 이러한 성능 결과는 쓰기 양이 증가할수록 FTL 매핑 정보의 업데이트가 많아지고, 그 결과 플래시 스토리지가 FLUSH 명령어를 전달받았을 때 플래시 메모리에 기록해야 하는 데이터와 FTL 매핑 정보가 늘어났기 때문임을 발견하였다.
쓰기 버퍼의 Eviction 시점
앞서 살핀 바와 같이, 플래시 스토리지 내부의 쓰기 버퍼 용량이 초과하여 Eviction 이 일어나는 경우에는 FTL 의 매핑 정보를 플래시 메모리에 즉시 반영하지 않는다. 즉, 쓰기 버퍼의 알고리즘에 의해 추출된 데이터는 플래시 메모리에 기록되지만 데이터의 FTL 매핑 정보는 플래시 스토리지 내의 DRAM 상에만 존재하게 된다. 그리고 DRAM 상의 FTL 매핑 정보는 플래시 스토리지의 액티브 블록 (Active Block) 이 교체될 때 플래시 메모리로 반영된다.
Eviction 의 특징은 액티브 블록이 교체되기 전에 시스템 장애 또는 오류가 발생하더라도 추출된 데이터의 영속성 (Persistence) 을 보장할 수 있다는 것이다. 이는 데이터가 쓰기 버퍼에서 추출될 때 데이터가 저장되는 플래시 페이지 (Page) 의 OOB (Out-of-bound) 영역에 자신의 매핑 정보에 대한 힌트를 저장하기 때문에 가능하다. 시스템 장애 이후 플래시 스토리지는 FTL 매핑 정보를 확인하고 OOB 영역을 확인하여 일관성이 깨진 매핑 정보를 복구한다. 다시 말해, 쓰기 버퍼의 용량이 초과하여 추출된 데이터도 FLUSH 명령어에 의해 동기화된 경우와 마찬가지로 일관성을 보정할 수 있다.
다만, 쓰기 버퍼의 크기 및 정책은 스토리지 제조사 (예를 들어, 삼성, 인텔, 마이크론) 마다 다르며 언제 쓰기 버퍼가 초과하여 Eviction 명령을 수행하는지 호스트 시스템이 알수 없기 때문에, 도 2 에 도시된 바와 같이 Eviction 시점을 확인하기 위한 벤치마킹 툴을 추가로 구현할 수 있다. 도 2는 Eviction 시점을 확인하기 위한 벤치마킹 툴의 의사 코드 (Pseudo Code) 를 나타낸다.
벤치마킹 툴은 O_DIRECT로 특정 크기의 쓰기 요청 (4KB ~ 5MB) 을 수행한 후 0번째 오프셋 (Offset) 을 읽음으로써 해당 읽기 요청이 쓰기 버퍼에서 수행된 것인지 플래시 메모리에서 수행된 것인지를 시간으로 알려준다. 0번째 오프셋의 응답 시간이 플래시 메모리의 응답 시간과 같다면 Eviction 으로 인해 플래시 메모리로 반영된 것이기 때문에 Eviction 시점을 쉽게 파악할 수 있다.
도 3은 Eviction 시점 실험 결과를 나타내는 그래프이다. 도 3 에 도시된 바와 같이, 실험 결과 2.3MB 이상의 쓰기를 수행하는 경우, 0번째 오프셋이 플래시 메모리에서 읽어오는 것을 확인할 수 있다 (회색 점). 그러므로 2.3MB의 쓰기를 수행하는 경우 Eviction 이 호출된다는 사실을 확인할 수 있다.
플래시 스토리지 장치
도 7은 본 발명의 일 실시예에 따른 플래시 스토리지 장치의 구성을 나타내는 블록도이다. 이하, 도 7을 참조하여 본 발명의 일 실시예에 따른 플래시 스토리지 장치를 보다 상세히 설명한다.
도 7 에 도시된 바와 같이, 본 발명의 일 실시예에 따른 플래시 스토리지 장치 (100) 는, 컨트롤러 (110), 쓰기 버퍼 (120) 및 플래시 메모리 (130) 를 포함할 수 있다. 도 7 에는 쓰기 버퍼 (120) 로서 도시되어 있으나, 일 측면에 따른 플래시 스토리지 장치 (100) 는 휘발성 메모리 (미도시) 를 포함할 수 있고, 상기 쓰기 버퍼 (120) 는 상기 휘발성 메모리에 형성된 논리적 버퍼일 수 있다. 휘발성 메모리는 예를 들어 DRAM 일 수 있다.
컨트롤러 (110) 는 호스트 (10) 로부터 데이터 기록 요청 및 기록 대상 데이터를 수신하면, 먼저 쓰기 버퍼 (120) 에 기록 대상 데이터 블록을 기록한다. 기록 대상 데이터를 플래시 스토리지 장치에 영속적으로 기록하기 위해 종래의 플래시 스토리지가 동기화 명령어를 실행시키는 것에 의해 쓰기 버퍼 (120) 에 기록된 기록 대상 데이터 블록과 휘발성 메모리에 저장된 FTL 매핑 정보를 전부 플래시 메모리 (130) 에 반영하는 것과 달리, 본 발명의 일 측면에 따르면, 컨트롤러 (110) 는 쓰기 버퍼 (120) 에 임의 블록을 기록함으로써 기록 대상 데이터 블록을 쓰기 버퍼 (120) 에서 추출 (Eviction) 하여 플래시 메모리 (130) 에 기록하도록 구성될 수 있다. 따라서, 동기화 명령어를 사용하지 않고서도 기록 대상 데이터를 영속적으로 플래시 스토리지 장치에 기록하는 것이 가능하다.
본 발명의 일 실시예에 따른 플래시 스토리지 장치의 구체적인 동작은 아래에서 설명하는 본 발명의 일 실시예에 따른 플래시 스토리지 장치에 데이터를 기록하는 방법에 따를 수 있다.
플래시 스토리지 장치에 데이터를 기록하는 방법
도 5a 및 도5b는 본 발명의 일 실시예에 따른 플래시 스토리지 장치에 대한 데이터 기록의 개념도이다. 도 5a 에 도시된 바와 같이, 본 발명의 일 실시예에 따른 플래시 스토리지 장치에 대한 데이터 기록에 있어 먼저 (단계 1) 에서 쓰기 데이터 (이하, '기록 대상 데이터 블록'이라고 하며, 도 5a 내지 도 5b에서 논리 페이지 넘버, 'LPN'으로서 표시됨) 들을 쓰기 버퍼에 기록할 수 있다. 따라서 기록 대상 데이터 블록인 LPN 1 내지 10 은 쓰기 버퍼에 기록된 상태가 되고 (Buffered LPN 1~10), 플래시 메모리는 아직 비어있는 상태에 있다.
(단계 2) 에서, 0으로 채워진 블록인 제로 패딩 블록 (Zero padding block) 을 쓰기 버퍼에 기록하는 것에 의해, 기록 대상 데이터 블록들을 추출 (Eviction) 하여 플래시 메모리에 기록될 수 있도록 한다. 즉, 제로 패딩 블록 LPN 11 내지 N 을 쓰기 버퍼에 기록하는 것에 의해 (Buffered LPN 11~N), 기록 대상 데이터 블록 LPN 1 내지 10 은 플래시 메모리에 기록된다 (Evicted LPN 1~10).
(단계 3) 에서, 제로 패딩 블록들을 쓰기 버퍼에서 삭제함으로써, 불필요한 데이터인 제로 패딩 블록들이 플래시 메모리에 기록되는 것을 방지하여 플래시 스토리지의 성능 향상 및 수명 연장을 달성할 수 있다. 즉, 예를 들어 Trim 명령어를 실행하는 것에 의해, 제로 패딩 블록 LPN 11 내지 N 을 쓰기 버퍼에서 제거할 수 있다 (Invalidated LPN 11~N). 플래시 메모리에는 원래 플래시 스토리지에 대한 기록의 목적이었던 기록 대상 데이터 블록 LPN 1 내지 10만 기록된 상태를 유지할 수 있다.
(단계 4) 에서, Commit 블록인 LPN 11을 쓰기 버퍼에 기록할 수 있다 (Buffered LPN 11). 이어서, (단계 5) 에서는 다시 제로 패딩 블록 LPN 12 내지 N 을 쓰기 버퍼에 기록하는 것 (Buffered LPN 12~N) 에 의해, Commit 블록인 LPN 11이 쓰기 버퍼에서 추출되어 플래시 메모리에 기록되도록 할 수 있다 (Evicted LPN 11). (단계 6) 에서는 재차 제로 패딩 블록 LPN 12 내지 N을 예를 들어 Trim 명령어를 수행하는 것에 의해 쓰기 버퍼에서 삭제 (Invalidated LPN 12~N) 하는 것에 의해 제로 패딩 블록이 플래시 메모리에 기록되는 것을 방지할 수 있다.
도 6은 본 발명의 일 실시예에 따른 플래시 스토리지 장치에 데이터를 기록하는 방법의 흐름도이다. 도 6 을 참조하여, 아래에서 본 발명의 일 실시예에 따른 플래시 스토리지 장치에 데이터를 기록하는 방법을 보다 구체적으로 설명한다. 앞서 설명한 바와 같이, 본 발명의 일 실시예에 따른 플래시 스토리지는 쓰기 버퍼 및 플래시 메모리를 포함할 수 있으며, 일 측면에 따르면 플래시 스토리지는 휘발성 메모리를 포함하고 이러한 휘발성 메모리 상에 상기 쓰기 버퍼가 형성될 수도 있다.
도 6 에 도시된 바와 같이, 본 발명의 일 실시예에 따른 플래시 스토리지 장치에 데이터를 기록하는 방법은 먼저 쓰기 버퍼에 기록 대상 데이터 블록을 기록하는 버퍼 기록 단계 (단계 610) 를 수행할 수 있다.
이후, 쓰기 버퍼에 임의 블록을 기록함으로써 기록 대상 데이터 블록을 쓰기 버퍼에서 추출 (Eviction) 하여 플래시 메모리에 기록하는 메모리 기록 단계 (단계 620) 를 수행할 수 있다. 여기서, 임의 블록은 제로 패딩 (zero-padding) 블록일 수 있으며, 제로 패딩 블록은 해당 블록의 값을 0으로 채운 블록일 수 있다. 임의 블록의 크기는 쓰기 버퍼에 기록된 기록 대상 데이터 블록 전부가 플래시 메모리에 기록되도록 쓰기 버퍼를 완전히 채우도록 결정될 수 있다. 앞서 설명한 바와 같이, 일 측면에 따르면 이러한 임의 블록은 2.3 MB 의 크기를 가질 수 있다.
한편, 버퍼 기록 단계 (단계 610) 에 있어서, 기록 대상 데이터 블록의 논리 주소 (Logical Block Address, LBA) 를 물리 주소 (Physical Block Address, PBA) 와 매핑하는 FTL (Flash Translation Layer) 매핑 정보를 쓰기 버퍼에 더 기록할 수 있다. 일 측면에 따라, 휘발성 메모리에 쓰기 버퍼가 형성될 경우에는, FTL 매핑 정보는 휘발성 메모리의 쓰기 버퍼가 형성되지 아니한 부분에 기록될 수 있다. 여기서, 메모리 기록 단계 (단계 620) 는, 기록 대상 데이터 블록이 플래시 메모리에 기록되도록 하면서도, FTL 매핑 정보는 플래시 메모리에 반영되지 않고 상기 쓰기 버퍼에 유지하도록 할 수 있다. FTL 매핑 정보가 휘발성 메모리의 쓰기 버퍼가 형성되지 않은 부분에 기록되는 경우, 상기 FTL 매핑 정보를 휘발성 메모리에 유지할 수 있다. 따라서, 본 발명의 일 실시예에 따른 플래시 스토리지 장치에 데이터를 기록하는 방법에 따르면, 동기화 명령어를 사용하여 FTL 매핑 정보와 기록 대상 데이터 블록이 매번 플래시 메모리에 기록되도록 하는 종래의 플래시 스토리지에 비해, FTL 매핑 정보의 업데이트에 따른 오버헤드를 큰 폭으로 감소시킴으로써 플래시 스토리지의 성능을 향상시키고 수명을 연장시킬 수 있다.
한편, 다시 도 6 을 참조하면, 본 발명의 일 실시예에 따른 플래시 스토리지 장치에 데이터를 저장하는 방법은 이후 쓰기 버퍼에 기록된 임의 블록을 삭제하는 단계 (단계 630) 를 더 포함할 수 있다. 임의 블록을 삭제하는 단계는, Trim 명령어에 응답하여 수행될 수 있다. 임의 블록을 삭제하는 것은, 종전 기록 대상 데이터가 추출된 이후, 새로운 기록 대상 데이터가 쓰기 버퍼에 기록되기 전에 수행될 수 있다. 이처럼 쓰기 버퍼에 기록된 임의 블록을 삭제하는 것에 의해, 불필요한 데이터인 임의 블록이 플래시 메모리에 저장되는 것을 방지하여 스토리지의 수명을 연장시킬 수 있다.
한편, 임의 블록의 기록에 따른 추출에 의해 기록 대상 데이터 블록을 플래시 메모리에 기록하되 FTL 매핑 정보는 반영되지 않더라도, FTL 매핑 정보는 플래시 스토리지 장치의 액티브 블록 (Active Block) 이 교체될 때 플래시 메모리에 기록되는 것에 의해 업데이트될 수 있다.
컴퓨팅 시스템
도 8은 본 발명의 일 실시예에 따른 플래시 스토리지를 포함하는 컴퓨팅 시스템의 구성을 나타내는 블록도이다. 도 8을 참조하면, 컴퓨팅 시스템 (800) 은 플래시 스토리지 (810) , 프로세서 (820), RAM (830), 입출력 장치 (840) 및 전원 장치 (850) 를 포함할 수 있다. 또한, 플래시 스토리지 (810) 는 메모리 장치 (811) 및 메모리 컨트롤러 (812) 를 포함할 수 있다. 한편, 도 8에는 도시되지 않았지만, 컴퓨팅 시스템 (800) 은 비디오 카드, 사운드 카드, 메모리 카드, USB 장치 등과 통신하거나, 또는 다른 전자 기기들과 통신할 수 있는 포트 (port) 들을 더 포함할 수 있다.
컴퓨팅 시스템 (800) 은 퍼스널 컴퓨터로 구현되거나, 노트북 컴퓨터, 휴대폰, PDA (personal digital assistant) 및 카메라 등과 같은 휴대용 전자 장치로 구현될 수 있다.
프로세서 (820) 는 특정 계산들 또는 태스크 (task) 들을 수행할 수 있다. 실시예에 따라, 프로세서 (820) 는 마이크로프로세서 (micro-processor), 중앙 처리 장치 (Central Processing Unit, CPU)일 수 있다. 프로세서 (820) 는 어드레스 버스 (address bus), 제어 버스 (control bus) 및 데이터 버스 (data bus) 등과 같은 버스 (860) 를 통하여 RAM (830), 입출력 장치 (840) 및 플래시 스토리지 (810) 와 통신을 수행할 수 있다. 플래시 스토리지 (810) 는 도 5 내지 7에 도시된 실시예들의 플래시 스토리지를 이용하여 구현될 수 있다.
일 실시예에 따라, 프로세서 (820) 는 주변 구성요소 상호연결 (Peripheral Component Interconnect, PCI) 버스와 같은 확장 버스에도 연결될 수 있다.
RAM (830) 는 컴퓨팅 시스템 (800) 의 동작에 필요한 데이터를 저장할 수 있다. 예를 들어, 디램 (DRAM), 모바일 디램, 에스램 (SRAM), 피램 (PRAM), 에프램 (FRAM), 엠램 (MRAM), 알램 (RRAM) 을 포함하는 임의의 유형의 랜덤 액세스 메모리가 RAM (830)으로 이용될 수 있다.
입출력 장치 (840) 는 키보드, 키패드, 마우스 등과 같은 입력 수단 및 프린터, 디스플레이 등과 같은 출력 수단을 포함할 수 있다. 전원 장치 (850) 는 컴퓨팅 시스템 (800) 의 동작에 필요한 동작 전압을 공급할 수 있다.
실험예
앞서 살핀 바와 같이, 예를 들어 2.3MB의 크기를 가지는 임의 블록에 대한 쓰기 명령을 수행할 경우 스토리지의 쓰기 버퍼의 일부 데이터가 Eviction 될 수 있다. 일반적으로 쓰기 버퍼는 LRU (Least Recently Used) 기반으로 쓰기 버퍼의 데이터를 Eviction 한다. 즉, 2.3MB 쓰기가 수행될 경우, 쓰기 버퍼 알고리즘은 오랫동안 접근 되지 않은 쓰기 버퍼 상의 데이터를 플래시 메모리에 반영한다. 이러한 쓰기 버퍼의 특성을 이용하여 FLUSH 명령어를 Eviction 명령어로 대체하는 기법을 앞서 예시한 바 있다. 즉, 본 발명의 일 실시예에 따른 플래시 스토리지 및 그 데이터 저장 방법은 기존 FLUSH 명령어 대신 임의 블록의 쓰기를 수행함으로써 Eviction 명령을 발생시킬 수 있다.
도 4는 FLUSH 명령어와 Eviction 명령어의 성능 비교를 나타내는 그래프이다. 도 4에 도시된 바와 같이, Eviction 명령어와 FLUSH 명령어의 성능 차이를 확인하기 위해 벤치마킹 툴을 수정하여 실험 결과를 확인하였다. 도 4 는 이러한 실험 결과를 비교하여 보여준다. 실험 결과 Eviction 을 사용하여 쓰기 버퍼의 데이터를 추출하는 것이 FLUSH 명령어를 수행하는 것보다 최대 75% 증가하는 것을 확인할 수 있었다. 또한, Eviction 명령어의 경우, FLUSH 명령어와는 다르게 순차 쓰기와 임의 쓰기의 성능 차이가 거의 존재하지 않는다. 이러한 차이는 Eviction 명령어의 경우 DRAM 상의 FTL 매핑 정보를 즉시 플래시 메모리에 반영하지 않기 때문이다. 또한, Eviction 명령어가 FLUSH 명령어와 같이 데이터를 영속적으로 보장한다는 측면에서, 도 4 에 나타난 바와 같은 성능 차이는 상당한 의미를 가질 수 있다.
상술한 본 발명에 따른 방법은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현되는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체로는 컴퓨터 시스템에 의하여 해독될 수 있는 데이터가 저장된 모든 종류의 기록 매체를 포함한다. 예를 들어, ROM (Read Only Memory), RAM (Random Access Memory), 자기 테이프, 자기 디스크, 플래시 메모리, 광 데이터 저장장치 등이 있을 수 있다. 또한, 컴퓨터로 판독 가능한 기록매체는 컴퓨터 통신망으로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 읽을 수 있는 코드로서 저장되고 실행될 수 있다.
이상, 도면 및 실시예를 참조하여 설명하였지만, 본 발명의 보호범위가 상기 도면 또는 실시예에 의해 한정되는 것을 의미하지는 않으며 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
구체적으로, 설명된 특징들은 디지털 전자 회로, 또는 컴퓨터 하드웨어, 펌웨어, 또는 그들의 조합들 내에서 실행될 수 있다. 특징들은 예컨대, 프로그래밍 가능한 프로세서에 의한 실행을 위해, 기계 판독 가능한 저장 디바이스 내의 저장장치 내에서 구현되는 컴퓨터 프로그램 제품에서 실행될 수 있다. 그리고 특징들은 입력 데이터 상에서 동작하고 출력을 생성함으로써 설명된 실시예들의 함수들을 수행하기 위한 지시어들의 프로그램을 실행하는 프로그래밍 가능한 프로세서에 의해 수행될 수 있다. 설명된 특징들은, 데이터 저장 시스템으로부터 데이터 및 지시어들을 수신하기 위해, 및 데이터 저장 시스템으로 데이터 및 지시어들을 전송하기 위해 결합 된 적어도 하나의 프로그래밍 가능한 프로세서, 적어도 하나의 입력 디바이스, 및 적어도 하나의 출력 디바이스를 포함하는 프로그래밍 가능한 시스템 상에서 실행될 수 있는 하나 이상의 컴퓨터 프로그램들 내에서 실행될 수 있다. 컴퓨터 프로그램은 소정 결과에 대해 특정 동작을 수행하기 위해 컴퓨터 내에서 직접 또는 간접적으로 사용될 수 있는 지시어들의 집합을 포함한다. 컴퓨터 프로그램은 컴파일된 또는 해석된 언어들을 포함하는 프로그래밍 언어 중 어느 형태로 쓰여 지고, 모듈, 소자, 서브루틴 (subroutine), 또는 다른 컴퓨터 환경에서 사용을 위해 적합한 다른 유닛으로서, 또는 독립 조작 가능한 프로그램으로서 포함하는 어느 형태로도 사용될 수 있다.
지시어들의 프로그램의 실행을 위한 적합한 프로세서들은, 예를 들어, 범용 및 특수 용도 마이크로프로세서들 둘 모두, 및 단독 프로세서 또는 다른 종류의 컴퓨터의 다중 프로세서들 중 하나를 포함한다. 또한, 설명된 특징들을 구현하는 컴퓨터 프로그램 지시어들 및 데이터를 구현하기 적합한 저장 디바이스들은 예컨대, EPROM, EEPROM, 및 플래쉬 메모리 디바이스들과 같은 반도체 메모리 디바이스들, 내부 하드 디스크들 및 제거 가능한 디스크들과 같은 자기 디바이스들, 광자기 디스크들 및 CD-ROM 및 DVD-ROM 디스크들을 포함하는 비휘발성 메모리의 모든 형태들을 포함한다. 프로세서 및 메모리는 ASIC (application-specific integrated circuits) 들 내에서 통합되거나 또는 ASIC들에 의해 추가되어질 수 있다.
이상에서 설명한 본 발명은 일련의 기능 블록들을 기초로 설명되고 있지만, 전술한 실시 예 및 첨부된 도면에 의해 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경 가능하다는 것이 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 있어 명백할 것이다.
전술한 실시 예들의 조합은 전술한 실시 예에 한정되는 것이 아니며, 구현 및/또는 필요에 따라 전술한 실시예들 뿐 아니라 다양한 형태의 조합이 제공될 수 있다.
전술한 실시 예들에서, 방법들은 일련의 단계 또는 블록으로서 순서도를 기초로 설명되고 있으나, 본 발명은 단계들의 순서에 한정되는 것은 아니며, 어떤 단계는 상술한 바와 다른 단계와 다른 순서로 또는 동시에 발생할 수 있다. 또한, 당해 기술 분야에서 통상의 지식을 가진 자라면 순서도에 나타난 단계들이 배타적이지 않고, 다른 단계가 포함되거나, 순서도의 하나 또는 그 이상의 단계가 본 발명의 범위에 영향을 미치지 않고 삭제될 수 있음을 이해할 수 있을 것이다.
전술한 실시 예는 다양한 양태의 예시들을 포함한다. 다양한 양태들을 나타내기 위한 모든 가능한 조합을 기술할 수는 없지만, 해당 기술 분야의 통상의 지식을 가진 자는 다른 조합이 가능함을 인식할 수 있을 것이다. 따라서, 본 발명은 이하의 특허청구범위 내에 속하는 모든 다른 교체, 수정 및 변경을 포함한다고 할 것이다.

Claims (21)

  1. 플래시 스토리지 장치에 데이터를 기록하는 방법으로서,
    상기 플래시 스토리지 장치는 쓰기 버퍼가 형성되는 휘발성 메모리 및 플래시 메모리를 포함하고, 상기 방법은,
    쓰기 버퍼에 기록 대상 데이터 블록을 기록하고, 상기 기록 대상 데이터 블록의 논리 주소 (Logical Block Address, LBA) 를 물리 주소 (Physical Block Address, PBA) 와 매핑하는 FTL (Flash Translation Layer) 매핑 정보를 상기 휘발성 메모리에 기록하는, 버퍼 기록 단계;
    상기 쓰기 버퍼에 임의 블록을 기록함으로써 상기 기록 대상 데이터 블록을 상기 쓰기 버퍼에서 추출 (Eviction) 하여 상기 플래시 메모리에 기록하고, 상기 FTL 매핑 정보는 상기 휘발성 메모리에 유지하는, 메모리 기록 단계; 및
    상기 임의 블록이 상기 플래시 메모리에 기록되는 것을 방지하기 위해 상기 쓰기 버퍼에 기록된 임의 블록을 삭제하는 단계를 포함하고,
    상기 FTL 매핑 정보는 상기 플래시 스토리지 장치의 액티브 블록 (Active Block) 이 교체될 때 상기 플래시 메모리에 기록되고,
    상기 임의 블록의 크기는 상기 쓰기 버퍼에 기록된 기록 대상 데이터 블록 전부가 상기 플래시 메모리에 기록되도록 상기 쓰기 버퍼를 완전히 채우도록 결정되며,
    상기 쓰기 버퍼를 완전히 채우기 위한 임의 블록의 크기는, 제 1 크기 내지 제 2 크기에 이르는 복수의 데이터들 각각에 대한 쓰기 요청을 수행한 이후의 각각의 오프셋의 응답 시간이 상기 플래시 메모리의 응답 시간과 동일한지 여부를 기반으로 결정된 상기 쓰기 버퍼의 크기와 동일한, 플래시 스토리지 장치에 데이터를 기록하는 방법.
  2. 제 1 항에 있어서,
    상기 임의 블록은 제로 패딩 (zero-padding) 블록인, 플래시 스토리지 장치에 데이터를 기록하는 방법.
  3. 삭제
  4. 제 1 항에 있어서,
    상기 임의 블록은 2.3 MB 의 크기를 가지는, 플래시 스토리지 장치에 데이터를 기록하는 방법.
  5. 삭제
  6. 삭제
  7. 삭제
  8. 제 1 항에 있어서,
    상기 임의 블록을 삭제하는 단계는, Trim 명령어에 응답하여 수행되는, 플래시 스토리지 장치에 데이터를 기록하는 방법.
  9. 삭제
  10. 삭제
  11. 쓰기 버퍼가 형성되는 휘발성 메모리, 컨트롤러 및 플래시 메모리를 포함하는 플래시 스토리지 장치로서, 상기 컨트롤러는,
    상기 쓰기 버퍼에 기록 대상 데이터 블록을 기록하고, 상기 기록 대상 데이터 블록의 논리 주소 (Logical Block Address, LBA) 를 물리 주소 (Physical Block Address, PBA) 와 매핑하는 FTL (Flash Translation Layer) 매핑 정보를 상기 휘발성 메모리에 기록하고;
    상기 쓰기 버퍼에 임의 블록을 기록함으로써 상기 기록 대상 데이터 블록을 상기 쓰기 버퍼에서 추출 (Eviction) 하여 상기 플래시 메모리에 기록하고, 상기 FTL 매핑 정보는 상기 휘발성 메모리에 유지하고; 그리고
    상기 임의 블록이 상기 플래시 메모리에 기록되는 것을 방지하기 위해 상기 쓰기 버퍼에 기록된 임의 블록을 삭제하도록 구성되고,
    상기 FTL 매핑 정보는 상기 플래시 스토리지 장치의 액티브 블록 (Active Block) 이 교체될 때 상기 플래시 메모리에 기록되고,
    상기 임의 블록의 크기는 상기 쓰기 버퍼에 기록된 기록 대상 데이터 블록 전부가 상기 플래시 메모리에 기록되도록 상기 쓰기 버퍼를 완전히 채우도록 결정되며,
    상기 쓰기 버퍼를 완전히 채우기 위한 임의 블록의 크기는, 제 1 크기 내지 제 2 크기에 이르는 복수의 데이터들 각각에 대한 쓰기 요청을 수행한 이후의 각각의 오프셋의 응답 시간이 상기 플래시 메모리의 응답 시간과 동일한지 여부를 기반으로 결정된 상기 쓰기 버퍼의 크기와 동일한, 플래시 스토리지 장치.
  12. 제 11 항에 있어서,
    상기 임의 블록은 제로 패딩 (zero-padding) 블록인, 플래시 스토리지 장치.
  13. 삭제
  14. 제 11 항에 있어서,
    상기 임의 블록은 2.3 MB 의 크기를 가지는, 플래시 스토리지 장치.
  15. 삭제
  16. 삭제
  17. 삭제
  18. 제 11 항에 있어서,
    상기 임의 블록을 삭제하는 것은, Trim 명령어에 응답하여 수행되는, 플래시 스토리지 장치.
  19. 삭제
  20. 삭제
  21. 프로세서에 의해 실행 가능한 명령어들을 저장하는 컴퓨터 판독 가능 저장 매체로서, 상기 명령어들은 상기 프로세서에 의해 수행되었을 때,
    쓰기 버퍼가 형성되는 휘발성 메모리, 컨트롤러 및 플래시 메모리를 포함하는 플래시 스토리지 장치에 포함된 상기 컨트롤러로 하여금,
    상기 쓰기 버퍼에 기록 대상 데이터 블록을 기록하고, 상기 기록 대상 데이터 블록의 논리 주소 (Logical Block Address, LBA) 를 물리 주소 (Physical Block Address, PBA) 와 매핑하는 FTL (Flash Translation Layer) 매핑 정보를 상기 휘발성 메모리에 기록하고;
    상기 쓰기 버퍼에 임의 블록을 기록함으로써 상기 기록 대상 데이터 블록을 상기 쓰기 버퍼에서 추출 (Eviction) 하여 상기 플래시 메모리에 기록하고, 상기 FTL 매핑 정보는 상기 휘발성 메모리에 유지하고; 그리고
    상기 임의 블록이 상기 플래시 메모리에 기록되는 것을 방지하기 위해 상기 쓰기 버퍼에 기록된 임의 블록을 삭제하게 하도록 구성되고,
    상기 컨트롤러로 하여금, 상기 FTL 매핑 정보가 상기 플래시 스토리지 장치의 액티브 블록 (Active Block) 이 교체될 때 상기 플래시 메모리에 기록되게 하도록 구성되고,
    상기 임의 블록의 크기는 상기 쓰기 버퍼에 기록된 기록 대상 데이터 블록 전부가 상기 플래시 메모리에 기록되도록 상기 쓰기 버퍼를 완전히 채우도록 결정되며,
    상기 쓰기 버퍼를 완전히 채우기 위한 임의 블록의 크기는, 제 1 크기 내지 제 2 크기에 이르는 복수의 데이터들 각각에 대한 쓰기 요청을 수행한 이후의 각각의 오프셋의 응답 시간이 상기 플래시 메모리의 응답 시간과 동일한지 여부를 기반으로 결정된 상기 쓰기 버퍼의 크기와 동일한, 컴퓨터 판독 가능한 저장 매체.
KR1020170103147A 2017-08-14 2017-08-14 플래시 스토리지 장치 및 플래시 스토리지 장치에 데이터를 기록하는 방법 KR101974731B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170103147A KR101974731B1 (ko) 2017-08-14 2017-08-14 플래시 스토리지 장치 및 플래시 스토리지 장치에 데이터를 기록하는 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170103147A KR101974731B1 (ko) 2017-08-14 2017-08-14 플래시 스토리지 장치 및 플래시 스토리지 장치에 데이터를 기록하는 방법

Publications (2)

Publication Number Publication Date
KR20190018321A KR20190018321A (ko) 2019-02-22
KR101974731B1 true KR101974731B1 (ko) 2019-05-02

Family

ID=65584834

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170103147A KR101974731B1 (ko) 2017-08-14 2017-08-14 플래시 스토리지 장치 및 플래시 스토리지 장치에 데이터를 기록하는 방법

Country Status (1)

Country Link
KR (1) KR101974731B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160147671A1 (en) * 2014-11-24 2016-05-26 Sandisk Technologies Inc. Systems and methods of write cache flushing

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100706808B1 (ko) 2006-02-03 2007-04-12 삼성전자주식회사 쓰기 버퍼로서 동작하는 불 휘발성 메모리를 구비한 데이터저장 장치 및 그것의 블록 회수 방법
JP5221332B2 (ja) * 2008-12-27 2013-06-26 株式会社東芝 メモリシステム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160147671A1 (en) * 2014-11-24 2016-05-26 Sandisk Technologies Inc. Systems and methods of write cache flushing

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Abhishek Rajimwale , Vijay Chidambaram , Deepak Ramamurthi , Andrea C. Arpaci-Dusseau , Remzi H. Arpaci-Dusseau, "Coerced Cache Eviction and discreet mode journaling: Dealing with misbehaving disks",*

Also Published As

Publication number Publication date
KR20190018321A (ko) 2019-02-22

Similar Documents

Publication Publication Date Title
EP3204859B1 (en) Methods and systems for cache lines de-duplication
US11055230B2 (en) Logical to physical mapping
US8938601B2 (en) Hybrid memory system having a volatile memory with cache and method of managing the same
TWI566097B (zh) 邏輯區塊位址位元映射之使用
CN105843551B (zh) 高性能和大容量储存重复删除中的数据完整性和损耗电阻
CN105718530B (zh) 文件存储系统及其文件存储控制方法
US20070094445A1 (en) Method to enable fast disk caching and efficient operations on solid state disks
US9645739B2 (en) Host-managed non-volatile memory
KR20170087044A (ko) Os 및 애플리케이션 투명 메모리 압축 기술
KR102443600B1 (ko) 하이브리드 메모리 시스템
KR102434170B1 (ko) 하이브리드 메모리 시스템
US20100235568A1 (en) Storage device using non-volatile memory
CN104346290A (zh) 存储装置、计算机系统及其操作方法
CN103999042B (zh) 加载引导数据
US10061523B2 (en) Versioning storage devices and methods
JP6746747B2 (ja) 記憶システム
KR102443593B1 (ko) 하이브리드 메모리 시스템
KR20130079706A (ko) 휘발성 메모리를 포함하는 저장 장치의 구동 방법
KR101974731B1 (ko) 플래시 스토리지 장치 및 플래시 스토리지 장치에 데이터를 기록하는 방법
US10817435B1 (en) Queue-based wear leveling of memory components
CN114746848B (zh) 用于存储装置的高速缓存架构
US11704029B2 (en) Elastic persistent memory regions
Nam et al. Fast bootstrapping method for the memory-disk integrated memory system
CN117215968A (zh) 用于减少固态装置开启时间的方法及其系统
JP2019113891A (ja) ストレージシステム及びキャッシュ制御方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant