KR102321346B1 - 대용량 ssd 장치를 위한 데이터 저널링 방법 - Google Patents

대용량 ssd 장치를 위한 데이터 저널링 방법 Download PDF

Info

Publication number
KR102321346B1
KR102321346B1 KR1020170098920A KR20170098920A KR102321346B1 KR 102321346 B1 KR102321346 B1 KR 102321346B1 KR 1020170098920 A KR1020170098920 A KR 1020170098920A KR 20170098920 A KR20170098920 A KR 20170098920A KR 102321346 B1 KR102321346 B1 KR 102321346B1
Authority
KR
South Korea
Prior art keywords
journal
data mapping
bloom filter
updated data
volatile
Prior art date
Application number
KR1020170098920A
Other languages
English (en)
Other versions
KR20180135390A (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 KR20180135390A publication Critical patent/KR20180135390A/ko
Application granted granted Critical
Publication of KR102321346B1 publication Critical patent/KR102321346B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • 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/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • 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/061Improving I/O performance
    • 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
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

Abstract

본 발명의 실시 형태에 따른 SSD 장치의 데이터 저널링 방법은, 읽기 요청을 수신하는 단계, 블룸 필터를 이용하여, 상기 읽기 요청을 위한 업데이트된 데이터 맵핑이 휘발성 저널과 비휘발성 저널 중 적어도 하나에 위치하는지 여부를 결정하는 단계, 상기 블룸 필터에 의해 상기 업데이트된 데이터 맵핑이 탐색되면 상기 휘발성 저널을 검색하고, 상기 업데이트된 데이터 맵핑이 상기 휘발성 저널에서 발견되지 않으면 상기 비휘발성 저널을 검색하는 단계, 및 상기 업데이트된 데이터 맵핑이 발견되면, 검색을 중단하는 단계를 포함한다.

Description

대용량 SSD 장치를 위한 데이터 저널링 방법{DATA JOURNALING METHOD FOR LARGE SOLID STATE DRIVE DEVICE}
본 발명은 적은 개수의 DRAM 또는 SRAM으로 동작하는 SSD(Solid State Drive) 장치의 플래시 변환 계층(Flash Translation Layer)의 저널링 방법에 관한 것이다.
적은 개수의 DRAM 또는 SRAM을 갖는 시스템에서, DRAM과 SRAM에는 상기 시스템의 메타데이터 구조 중 작은 부분만이 저장될 수 있다. 나머지 메타데이터는 플래시, 예를 들어 플래시의 단일 레벨 셀(Single Level Cell, SLC) 블록 등에 저장될 수 있다. 메타데이터가 플래시의 멀티 레벨 셀 블록이나 트리플 레벨 셀 블록 등에도 저장될 수 있으나, 편의를 위하여 이하에서는 단일 레벨 셀에 메타데이터가 저장되는 경우를 가정하기로 한다. 플래시에 저장된 메타데이터 구조가 호스트로부터의 기록 등으로 업데이트되면, 상기 업데이트는 SSD 장치의 성능을 크게 저하시킬 수 있는 대용량의 메타데이터 기록을 유발하고 플래시 블록의 마모를 크게 증가시킬 수 있으므로, NAND에 의해 처리되지 않을 수 있다. 대신에, 상기 업데이트는 휘발성 저널로 불리는 RAM에 저장된 메타데이터 구조에 기록될 수 있다.
휘발성 저널이 모두 기록되면, 상기 업데이트는 SLC 저널이라는 구조로서 단일 레벨 셀 블록 등의 플래시에 기록된다. SLC 저널이 최대 용량에 도달하면, 플래시에 저장된 메타데이터 구조들은 SLC 저널에 기록된 변경 사항에 따라 업데이트된다. 상기 프로세스는 일반적으로 저널 커밋(journal commit)이라 한다. 이러한 계층적 저널링은 적은 개수의 DRAM이나 SRAM으로 SSD 장치를 동작하는데 있어서 핵심 기능이다. 그러나 이러한 저널링 기반의 방법은, SSD 장치의 읽기 성능을 저하시킬 수 있다.
본 발명의 기술적 사상이 이루고자 하는 과제 중 하나는, SSD 장치의 저널링 방법을 제공하고자 하는 데에 있다. 본 발명의 실시예들은 DRAM이나 SRAM 없는 시스템에 적용될 수 있다.
본 발명의 일 실시예에 따른 SSD 장치의 데이터 저널링 방법은, 읽기 요청을 수신하는 단계, 블룸 필터를 이용하여, 상기 읽기 요청을 위한 업데이트된 데이터 맵핑이 휘발성 저널과 비휘발성 저널 중 적어도 하나에 위치하는지 여부를 결정하는 단계, 상기 블룸 필터에 의해 상기 업데이트된 데이터 맵핑이 탐색되면 상기 휘발성 저널을 검색하고, 상기 업데이트된 데이터 맵핑이 상기 휘발성 저널에서 발견되지 않으면 상기 비휘발성 저널을 검색하는 단계, 및 상기 업데이트된 데이터 맵핑이 발견되면, 검색을 중단하는 단계를 포함한다.
본 발명의 일 실시예에 따른 SSD 장치의 데이터 저널링 방법은, 읽기 요청을 수신하는 단계, 블룸 필터를 이용하여, 주어진 세트에 상기 읽기 요청을 위한 업데이트된 데이터 맵핑이 위치하는지 여부를 결정하는 단계, 및 상기 블룸 필터에 의해 상기 업데이트된 데이터 맵핑이 탐색되지 않으면, 메타데이터 페이지를 검색하는 단계를 포함한다.
본 발명의 일 실시예에 따른 SSD 장치의 데이터 저널링 방법은, 읽기 요청을 수신하는 단계, 저널 처리 프로세스가 실행되면, 제1 블룸 필터를 이용하여 상기 읽기 요청을 위한 업데이트된 데이터 맵핑이 제1 데이터 세트에 위치하는지 여부를 결정하는 단계, 및 상기 제1 블룸 필터에 의해 상기 업데이트된 데이터 맵핑이 탐색되면, 휘발성 저널을 검색하는 단계를 포함한다.
본 발명의 일 실시예에 따른 SSD 장치의 데이터 저널 커밋 방법은, 저널로부터 복수의 집합 페이지들에 논리 대 물리(L2P) 데이터 맵핑 업데이트들을 커밋(commit)하는 단계, 상기 저널로부터 메타데이터 페이지들로 비 논리 대 물리(non-L2P) 데이터 맵핑 업데이트들을 커밋하는 단계, 및 상기 집합 페이지들의 상기 L2P 데이터 맵핑 업데이트들을 L2P 페이지들에 커밋하는 단계를 포함하며, 상기 집합 페이지들의 상기 L2P 데이터 맵핑 업데이트들은 한 번에 하나의 상기 L2P 페이지로 커밋된다.
본 발명의 일 실시예에 따른 데이터 저널링 방법에서는, 휘발성 저널에 플래시의 동작들을 기록하고, 휘발성 저널이 채워지면 휘발성 저널의 내용들을 플래시로 이동시키며, 플래시가 채워지면 메타데이터 구조의 용량에 따라 집합(aggregation) 페이지를 생성할지 여부를 결정할 수 있다. 따라서, 커밋 프로세스의 수행 횟수를 줄여 SSD 장치의 성능 열화를 방지하고 적은 개수의 DRAM 또는 SRAM으로 SSD 장치를 구동할 수 있다.
본 발명의 다양하면서도 유익한 장점과 효과는 상술한 내용에 한정되지 않으며, 본 발명의 구체적인 실시 형태를 설명하는 과정에서 보다 쉽게 이해될 수 있을 것이다.
도 1은 랜덤 액세스 메모리(RAM) 제한 장치들에 적용되는 일반적인 저널링 절차를 나타낸다.
도 2는 도 1에 도시한 일 실시예에 따른 RAM 제한 장치들에 적용되는 일반적인 저널링 절차를 더 자세히 나타낸다.
도 3은 본 발명의 일 실시예에 따라서, RAM 또는 단일 레벨 셀(SLC) 저널에 존재하는 일부 데이터 맵핑의 업데이트 여부를 판단하기 위해 2개의 블룸 필터를 이용하는 방법을 나타낸다.
도 4a는 도 3에 도시한 일 실시예에 따른 방법의 일반적인 동작을 나타낸다.
도 4b는 도 3에 도시한 일 실시예에 따른 방법에서 저널 커밋이 진행되는 동안의 동작을 나타낸다.
도 5는 일반적인 저널 커밋 프로세스를 나타낸다.
도 6은 본 발명의 일 실시예에 따른 저널 커밋 프로세스를 나타낸다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시 형태들을 다음과 같이 설명한다.
본 발명의 실시예들에 따르면, 극도로 제한된 휘발성 메모리로 성능 저하를 최소화하면서 대용량의 SSD 장치를 구동하는 저널 기반의 플래시 변환 계층(FTL)을 제공한다. 본 발명의 일 실시예에 따른 플래시 변환 계층은, SSD 장치에 포함되는 DRAM의 개수를 줄이거나 없앰으로써 비용을 절감하고, 고성능을 유지하면서 SSD 장치의 효율적인 전력 소모를 가져올 수 있다.
본 발명의 일 실시예에 따른 플래시 변환 계층은, 대용량의 메타데이터 구조에 대한 저널 유지 오버헤드를 최소화하는 집합 페이지를 포함하는 계층적 저널링 방법을 이용함으로써 SSD 장치의 기록/읽기(write/read) 처리량 성능을 최적화할 수 있다.
본 발명의 일 실시예에 따른 플래시 변환 계층은, 호스트의 읽기 요청을 처리하는 데에 필요한 데이터를 가져오기 위해 저널 파싱이 필요한지 여부를 확인하는 방법을 이용함으로써, 상기 호스트의 읽기 요청을 처리하기 위한 복수의 플래시 읽기 동작을 수행하지 않을 수 있다.
이하, 단일 레벨 셀(SLC)을 참조하여 본 발명의 실시예들에 대해 설명하지만, 본 발명이 이에 한정되지 않음에 유의해야 할 것이다. 예를 들어, 셀 당 용량이 다른 다중 레벨 셀(MLC), 트리플 레벨 셀(TLC) 등의 다른 NAND 페이지들에도 본 발명의 개념이 적용될 수 있음은 물론이다.
위에서 언급한 바와 같이, 계층적 저널링은 중요한 이슈이다. 휘발성 메모리가 제한적인 경우, 저널링을 이용하는 기존의 방법에서는 저널이 감소하고 결과적으로 저널이 빠르게 채워질 수 있다. 이후의 커밋 프로세스는 기록과 읽기에 있어서 상당한 오버 헤드 및 실질적인 성능 저하를 유발할 수 있다. 반면, 본 발명의 일 실시예에서는, 먼저 휘발성 저널로부터 NAND(예를 들면 SLC) 저널에 저널을 기록한 다음, 많은 양의 저널 데이터를 집합하여 커밋 프로세스가 덜 발생하도록 할 수 있다. 따라서, 장치의 마모로 인한 열화 및 기록과 읽기 동작에 대한 액세스 횟수가 줄어들 수 있다.
계층적 저널링이 없으면, 제한된 DRAM 또는 SRAM을 갖는 장치들에서 지나치게 많은 저널 커밋 동작들이 발생할 수 있다. 다시 말해, 저널로부터 NAND의 메타 데이터에 대한 업데이트가 지나치게 많이 발생할 수 있다. 집합 메커니즘을 이용하면, 저널링을 제한적으로 수행하여 장치를 적절하게 이용할 수 있다. 일반적인 집합 메커니즘에서는, 메타데이터가 업데이트될 때 바이트 단위로 수행되지 않으며, 읽기 - 수정 - 기록이 완전한 NAND 페이지들에 대해 수행된다. 이는 많은 양의 데이터가 처리되어야 함을 의미할 수 있다. 많은 양의 저널 정보를 집합하는 경우, 완전한 페이지와 함께 합리적으로 동작할 수 있는 충분한 데이터가 실질적으로 존재할 수 있다. 그렇지 않으면, 제한된 양의 변화에 대해 많은 양의 데이터를 읽기 - 수정 - 기록하게 된다.
살펴본 바와 같이, 일반적인 집합 메커니즘에 따르면, 읽기 및 기록 성능이 열화될 수 있다. 이하, 본 발명의 일 실시예에 따른 집합 저널링을 이용한 적절한 동작을 설명하기로 한다.
우선, 제한적인 RAM을 갖는 장치에 대한 통상적인 저널링 절차에 대해, 도 1 및 도 2를 참조하여 설명하기로 한다. 도 1 및 도 2는 SRAM에 적용된 본 발명의 개념을 도시하지만, 본 발명의 개념은 이에 한정되지 않는다. 일례로, 본 발명의 개념은 DRAM에도 적용될 수 있다.
제한된 RAM을 갖는 SSD 장치에서, 대부분의 메타데이터 구조들은 NAND에만 보관된다. 예를 들어 논리 대 물리(L2P) 멥핑 테이블들, 블록 상태, 프로그램 삭제(PE) 횟수, 유효 횟수, 읽기 횟수 등의 메타데이터 구조들은 NAND에 저장될 수 있다. 메타데이터 업데이트들은 저널링 방식으로 버퍼링된다. 제한된 RAM으로 인해, 저널링은 계층적 방식으로 수행된다. 예를 들어, 제한된 RAM 저널에서, 저널링은 한 번에 하나의 SLC 페이지에서 수행되거나, 또는 한 번에 몇몇 SLC 페이지들에서 수행될 수 있다.
RAM 저널이 가득 차면, RAM 저널은 SLC 저널로 복사된다. SLC 저널의 페이지들이 일단 가득 차면, 커밋 프로세스가 실행된다. (예를 들어, 대응하는 전용 메타데이터 페이지가 SLC 페이지의 내용에 따라 업데이트된다)
도 1은 16KB 용량의 SRAM과 몇몇 저널 페이지들을 갖는 예시적인 장치를 나타낸다. 도 1에 도시한 바와 같이, 새로운 동작 이벤트가 발생하면, SRAM 저널에 메타데이터 업데이트들을 기록할 수 있다(105). 상기 SRAM 저널이 가득 차면, 상기 SRAM 저널의 내용들은 SLC 저널 페이지들로 복사될 수 있다(110). 한편, 모든 SLC 저널 페이지들이 가득 차면, 상기 업데이트들은 그에 대응하는 메타데이터 페이지들로 커밋될 수 있다. 도 2를 참조하여 상기 과정을 더욱 자세히 설명하기로 한다.
도 2를 참조하면, 시작 단계에서는 SRAM 저널이 비어있다(1). 메타데이터를 수신하면, SRAM 저널이 채워진다. 예를 들어, SRAM 저널 중 적어도 일부가 부분적으로 채워질 수 있다(2). SRAM 저널이 일단 가득 채워지면, 저널 커밋 프로세스가 시작된다(3). 다시 말해, SRAM 저널의 내용들이 SLC 저널의 페이지 0 에 기록될 수 있다.
SRAM 저널이 커밋된 후에, SLC 저널의 페이지 0가 채워지고 SRAM 저널은 커밋 동작 동안 도착하는 새로운 업데이트들을 보관한다(4). 다시 SRAM 저널이 채워지면, 다른 저널 커밋이 수행된다(5). 여기서, SRAM 저널의 내용들은 SLC 저널의 페이지 1에 기록된다. 저널 커밋 이후에, SLC 저널의 페이지 1이 채워지고, SRAM 저널은 커밋 동작 동안 도착하는 새로운 업데이트들을 보관한다(6). 다시 SRAM 저널이 채워지면, 다른 저널 커밋이 수행된다(7). 저널 커밋 이후에, SLC 저널의 페이지 2가 채워지고, SRAM 저널은 커밋 동작 동안 도착하는 새로운 업데이트들을 보관한다(8).
단계 9에서, SRAM 저널은 채워진 상태일 수 있으며, SRAM 저널 커밋을 수행할 타이밍일 수 있다. SRAM 저널 커밋 이후인 단계 10에서, SLC 저널의 페이지 3이 채워지고 SRAM 저널은 커밋 동작 동안 도착하는 새로운 업데이트들을 보관한다. 추가적으로, SLC 저널의 모든 페이지들이 단계 10에서 채워질 수 있다. 따라서, 저널 커밋 동작을 시작할 타이밍으로 판단될 수 있다.
단계 11에서는 저널 커밋이 진행 중이며, 업데이트들은 SLC 저널에서 메타데이터 SLC 페이지들로 복사될 수 있다. 단계 12에서는 저널 커밋이 완료된 상태이고, 따라서 SLC 저널의 내용은 삭제될 수 있다. 단계 13에서, SRAM 저널은 부분적으로 채워진 상태이며, SLC 저널들은 비어있다. 따라서, 앞서 언급한 과정이 반복될 수 있다.
도 1 및 도 2를 참조하여 설명한 일반적인 과정에서, 호스트의 읽기 요청에 응답하기 위해, 논리 대 물리(L2P) 데이터 맵핑에서 요청된 데이터를 검색할 수 있다. 최신 데이터 맵핑은, 제한된 RAM 저널, SLC 저널, 및 전용 L2P 페이지(커밋 후)의 세 가지 위치에 있을 수 있다. 하지만, 읽기 요청 중에, 플래시 변환 계층에는 현재 요청에 대한 가장 최신의 데이터 맵핑이 존재하는 위치에 대한 정보가 없다.
따라서, 읽기 요청들에 응답하기 위해, 업데이트된 데이터 맵핑 및 정확한 데이터 맵핑을 검색할 수 있도록 모든 SLC 저널 항목들과 RAM 저널 항목이 파싱되어야 한다. 다만 일반적으로, 현재 읽기의 데이터 맵핑에 대한 어떠한 업데이트도 저널에 존재하지 않을 수 있다. 이 경우, 모든 RAM 저널과 모든 SLC 페이지들을 읽어야만 하나의 읽기 요청을 처리할 수 있다. 이러한 동작은 읽기 처리량을 저하시킨다.
본 발명의 일 실시예에 따르면, 호스트 주소가 휘발성 저널에 있는지 또는 SLC 저널에 있는지를 식별하기 위해, 블룸 필터(Bloom Filter)가 지정될 수 있다. 블룸 필터는 원소가 집합의 구성원인지 여부를 테스트하는 데에 이용되는 공간-효율적인 확률 데이터 구조이다.
본 발명의 일 실시예에 다르면, 블룸 필터는 호스트 주소 데이터 맵핑이 휘발성 저널 또는 SLC 저널에 존재하는지(예를 들어, 긍정적 응답을 제공함으로써)를 나타내거나, 또는 호스트 주소 데이터 맵핑이 SLC 상의 L2P 데이터 맵핑 테이블에 존재하는지(예를 들어 부정적 응답을 제공함으로써)를 나타낼 수 있다. 호스트 주소의 매우 작은 일부만이 저널들에 존재하므로, 호스트 읽기 요청을 처리하기 위해 휘발성 저널과 SLC 저널들을 스캔할 필요가 없다. 오히려, 이러한 절차는 호스트 주소의 물리적 위치를 검색하기 위해 SLC 상의 L2P 데이터 맵핑 테이블로 곧장 이동할 수 있다.
이러한 접근 방법은 읽기 처리량의 저하를 극적으로 감소시킨다. 더군다나, 상기 묘사한 블룸 필터의 거짓 양성(false positive) 확률(호스트 주소가 휘발성 저널 및 SLC 저널에 존재하지 않음에도 불구하고 긍정적 응답을 제공할 확률)이 매우 작게 유지된다. 거짓 양성이 발생한 경우, 상기 절차는 휘발성 저널과 SLC 저널을 스캔하고 호스트 주소 데이터 맵핑이 휘발성 저널과 SLC 저널에 존재하지 않는 것으로 결론내린 후에, 데이터 맵핑을 SLC L2P 테이블로부터 검색할 수 있다.
본 발명의 일 실시예에 따르면, 상기 블룸 필터는 휘발성 저널에 보관될 수 있다. 기록된 모든 기록 저널 항목에 대해서, 기록 호스트 주소(예를 들어, 그 논리 블록 주소)가 저널에 존재하는 최신 데이터 맵핑을 가리키기 위해 상기 블룸 필터에 추가될 수 있다. 블룸 필터는 읽기 요청에 대한 데이터 맵핑이 저널들에 존재하는지 여부를 확인하는 데에 이용될 수 있다.
상술한 바와 같이, 응답이 부정적이면, 절차는 데이터 맵핑을 포함하는 SLC의 전용 L2P 페이지로 이동한다. 다시 말해, 저널이 파싱되지 않을 수 있다. 반대로 응답이 긍정적이면, RAM 저널 및/또는 SLC 저널이 파싱되어 데이터 맵핑의 위치를 결정할 수 있다. 데이터 맵핑이 발견되면, 파싱은 중단될 수 있다. 예를 들어, 최신 데이터 맵핑이 2번째 SLC 저널의 중간에 존재하면, 다음과 같은 단계들이 실행될 수 있다. 첫번째로, RAM 저널이 파싱되고, 그 다음으로 첫번째 SLC 저널 페이지가 읽기 및 파싱되며, 그 다음으로 두번째 SLC 저널 페이지가 읽기되고, 데이터 맵핑 업데이트가 발생할 때까지 두번째 SLC 저널 페이지의 첫 절반이 읽기될 수 있다. 이때, 데이터 맵핑 검색은 중단될 수 있다.
만약 응답이 긍정적이지만 데이터 맵핑이 저널들에서 발견되지 않으면, 이는 거짓 양성에 해당할 수 있다. 거짓 양성이 발생하면, 절차는 데이터 맵핑을 포함하는 SLC의 전용 L2P 페이지로 이동한다. 실용적이고 매우 효율적인 해싱 함수를 이용함으로써, 10-3 내지 10-6의 범위를 갖는 거짓 양성 확률을 얻을 수 있다.
SLC 저널 커밋 프로세스 이후에, 모든 커밋된 항목들은 상기 블룸 필터로부터 제거될 수 있다. 하지만, 만약 모든 항목들이 커밋 동안 기록되면, 일부 항목들은 커밋되고 일부는 그렇지 않을 수 있다. 이는, 항목들의 부분 집합을 상기 블룸 필터로부터 제거할 수 없기 때문일 수 있다. 상기 블룸 필터는 제로 상태로만 리셋될 수 있다. 따라서, 본 발명에서는, 블룸 필터로부터 커밋된 항목들을 제거하는 이슈를 완화하기 위해, 정규 블룸 필터와 커밋 블룸 필터를 포함하는 2개의 블룸 필터들을 사용하는 방법을 제안한다. 이하, 정규 블룸 필터는 Regular_BF로 지정되며, 커밋 블룸 필터는 Commit_BF로 지정될 수 있다.
예를 들어, 도 3을 참조하면, SLC 저널 커밋이 아닌 일반적인 동작에서는 시스템이 정규 블룸 필터(Regular_BF)로만 동작(항목 쿼리 및 삽입)할 수 있다(310). SLC 저널 커밋이 시작된 이후에는, 정규 블룸 필터(Regular_BF)가 멈추고 새로운 비어있는 블룸 필터인 커밋 블룸 필터(Commit_BF)가 초기화될 수 있다(320).
커밋이 진행되는 동안(330), 새로운 항목들은 커밋 블룸 필터(Commit_BF)에만 추가될 수 있다. 또한 커밋이 진행되는 동안(330), 쿼리들은 다음과 같이 수행될 수 있다. 커밋 블룸 필터(Commit_BF)가 긍정적 응답을 리턴하면, 데이터 맵핑은 SRAM 저널에 존재한다. 정규 블룸 필터(Regular_BF)가 긍정적 응답을 리턴하면, 데이터 맵핑은 현재 커밋 프로세스에서 SLC 저널에 존재한다. SLC 저널에 대한 커밋이 완료되면, 커밋 블룸 필터(Commit_BF)의 내용은 정규 블룸 필터(Regular_BF)의 내용이 되고, 기존에 정규 블룸 필터(Regular_BF)의 내용은 무시된다(340).
도 4a는 본 발명의 일 실시예에 따른 2개의 블룸 필터들의 일반적 동작을 나타낸다.
도 4a에 도시한 바와 같이, 읽기 요청을 수신하면 우선 SLC 저널에 대한 커밋 프로세스가 진행 중인지 여부를 판단한다(401). SLC 저널에 대한 커밋 프로세스가 진행 중이면, 도 4b에 도시한 단계 402로 진행할 수 있다. 다시 말해, 저널 커밋이 진행되는 동안의 동작이 수행될 수 있다. SLC 저널에 대한 커밋 프로세스가 진행 중이지 않으면, 도 4a에 도시한 단계 403으로 진행할 수 있다. 다시 말해, 일반적인 동작이 수행될 수 있다.
일반적인 동작에서, 읽기 요청에 대응하는 읽기 주소를 찾기 위해 정규 블룸 필터(Regular_BF)가 검색될 수 있다. 읽기 주소가 정규 블룸 필터(Regular_BF)에서 검색되면(단계 404의 `예`), 데이터 맵핑이 저널들 중 하나에 존재하는 것으로 결정될 수 있으며, SRAM 저널을 파싱하는 단계 405로 진행할 수 있다. 읽기 주소가 정규 블룸 필터(Regular_BF)에서 검색되지 않으면(단계 404의 `아니오`), 데이터 맵핑이 SLC L2P에 존재하는 것으로 결정될 수 있으며, SLC L2P로부터 데이터 맵핑을 읽어오는 단계 406으로 진행할 수 있다.
상기 데이터 맵핑이 SRAM 저널에서 검색되면(407), 검색이 중단될 수 있다(408). 상기 데이터 맵핑이 SRAM 저널에서 검색되지 않으면(407), SLC 저널이 파싱될 수 있다(409). 상기 데이터 맵핑이 SLC 저널에서 검색되면(411), 검색이 중단될 수 있다(410). 상기 데이터 맵핑이 SLC 저널에서 검색되지 않으면(411), 거짓 양성이 발생한 것으로 결정하고 상기 데이터 맵핑을 SLC L2P에서 읽어올 수 있다(406).
일반적인 동작에서는, 하나의 블룸 필터(예를 들어, 정규 블룸 필터(Regular_BF))가 주소 맵이 L2P 페이지에 존재하는지 또는 저널(예를 들어, SRAM 또는 SLC 페이지)에 존재하는지를 나타낼 수 있다. 검색은 최신 업데이트를 위한 것으로 이해될 수 있다. 예를 들어, SLC 페이지를 파싱하면, 본 발명의 일 실시예에 따른 방법은 최신 페이지로부터 시작하고, 일단 데이터 맵핑이 발견되면 방법이 중단될 수 있다.
도 4b는 도 3에 도시한 일 실시예에 따른 방법에서 저널 커밋이 진행되는 동안의 동작을 나타낼 수 있다.
도 4b에 도시한 바와 같이, SLC 저널 커밋 프로세스가 진행 중이면, 저널 커밋이 진행되는 동안의 동작이 수행될 수 있다. 예를 들어, 읽기 요청에 대응하는 읽기 주소를 찾기 위해 커밋 블룸 필터(Commit_BF)가 검색될 수 있다(402). 상기 읽기 주소가 커밋 블룸 필터(Commit_BF)에서 검색되면, 데이터 맵핑이 SLC 저널에 존재하는 것으로 결정하고(단계 412의 '예'), SRAM 저널을 파싱하는 단계 413으로 이동할 수 있다. 상기 읽기 주소가 커밋 블룸 필터(Commit_BF)에서 검색되지 않으면(단계 412의 '아니오'), 상기 읽기 요청에 대응하는 읽기 주소를 찾기 위해 정규 블룸 필터(Regular_BF)를 검색할 수 있다.
상기 데이터 맵핑이 SRAM 저널에 존재하면(415), 검색이 중단될 수 있다(416). 상기 데이터 맵핑이 SRAM 저널에 존재하지 않으면(415), 거짓 양성이 발생한 것으로 결정하고 정규 블룸 필터(Regular_BF)를 검색하여 상기 읽기 요청에 대응하는 읽기 주소를 찾을 수 있다(414).
상기 읽기 주소가 정규 블룸 필터(Regular_BF)에서 검색되면(단계 417의 `예`), 상기 데이터 맵핑이 SLC 저널에 존재하는 것으로 결정하고 SLC 저널을 파싱하는 단계 418로 진행할 수 있다. 상기 데이터 맵핑이 SLC 저널에서 검색되면(420), 검색이 중단될 수 있다(421). 상기 데이터 맵핑이 SLC 저널에서 검색되지 않으면(420), 거짓 양성이 발생한 것으로 결정하고 상기 데이터 맵핑을 SLC L2P로부터 읽어올 수 있다(419). 상기 읽기 주소가 정규 블룸 필터(Regular_BF)에서 검색되지 않으면(417 단계의 `아니오`), 데이터 맵핑이 SLC L2P에 존재하는 것으로 판단하고 SLC L2P로부터 상기 데이터 맵핑을 읽어오는 단계 419로 진행할 수 있다.
도 4b에 도시한 바와 같이, 본 발명의 일 실시예에 따른 방법은 가장 최신 업데이트를 보관하는 커밋 블룸 필터(Commit_BF)로부터 시작할 수 있다. 다시 말해, 이 흐름은 저널의 가장 최신 업데이트에 대해 검색을 시작하여 이전 업데이트로 진행하는 원칙에 기초할 수 있다.
다수의 SLC 페이지를 차지하는 대용량의 메타데이터 구조에 대해, 직접적인 SLC 저널 커밋은 각 페이지의 일부 항목들만이 실제로 업데이트되는 데에 반해 많은 페이지들에 대한 업데이트(예를 들어, 기록)를 야기할 수 있다. 예를 들어, L2P 데이터 맵핑 테이블이 수천 개의 SLC 페이지들을 차지하면, 저널 커밋은 수천개의 SLC 페이지 기록을 야기할 수 있으며, 이는 심각한 성능 저하를 가져올 수 있다.
예를 들어, 도 5를 참조하면, 기록과 기타 동작들은 메타데이터의 업데이트를 가져올 수 있다(501). 일례로 상기 업데이트들은 SLC 저널과 같은 저널 내에서 버퍼링될 수 있다(502). 저널이 채워지면 저널 커밋 프로세스가 실행될 수 있다(503). 따라서, 상기 업데이트들은 SLC 페이지들에 기록될 수 있다(504).
전형적인 저널은 약 5,000 내지 10,000개의 기록 업데이트들을 보유할 수 있다. 다중 계층 RAM 제한 L2P 저장소에서, 비슷한 개수의 SLC 페이지들이 L2P 저장소에 이용될 수 있다. 예를 들어, 도 5에서, 5,000개의 L2P 페이지(L2P 페이지 0-4,999)는 저널로부터 제공되는 5,000개의 업데이트들을 저장하는 데에 이용될 수 있다.
일례로, 분산된 주소들에 대한 기록들로 구성된 작업 부하의 경우를 가정해보자. 다시 말해, 무작위 작업 부하를 가정해보면, 도 5에 도시한 일반적인 저널 커밋에서 대부분의 L2P 페이지들은 저널로부터의 단일 업데이트로 인해 다시 기록될 수 있다. 이는, 추가적인 SLC 기록이 매 기록마다 수행됨을 의미할 수 있다. 그러나, 이는 NAND의 마모를 증가시키고 현저한 처리량 저하를 가져올 수 있다.
본 발명의 일 실시예에 따르면, 저널과 SLC L2P 사이에 버퍼를 추가함으로써 대용량의 메타데이터 구조에 대한 저널 커밋의 오버헤드를 감소시키는 집합(aggregation)이라고 불리는 절차가 제공될 수 있다. 상기 버퍼는 집합 페이지들(Aggregation Pages, APs)이라고 명세서 전반에 걸쳐서 언급될 수 있다. 각각의 집합 페이지는 메타데이터 구조 페이지들의 서로 다른 부분 또는 유형을 커버할 수 있다. 예를 들어, 제1 집합 페이지는 메타데이터 구조의 [0:100]에 대한 모든 업데이트들을 포함하며, 제2 집합 페이지는 메타데이터 구조의 페이지 [101:200]에 대한 모든 업데이트들을 포함할 수 있다. 집합 페이지들은 SLC에 저장될 수 있다.
도 6은 본 발명의 일 실시예에 따른 집합 절차를 나타낸다. 예를 들어, 저널 커밋 절차(603)에서, 모든 저널은 동시에 커밋될 수 있다. 더욱 특별하게는, L2P 업데이트들이 집합 페이지들 0-99에 기록될 수 있다(604). 모든 다른 업데이트들은 메타데이터 SLC 페이지들에 기록될 수 있다(604). 도 6에서, 약 100개의 집합 페이지들이 정의될 수 있다. 각각은 50개의 L2P의 연속된 50 페이지들에 대한 버퍼일 수 있다. (다만, 정확한 비율은 타겟 성능 최적화가 주어지면 관리 가능) 집합 페이지는 단지 버퍼일 뿐만 아니라, 후술하는 바와 같이 매우 효율적인 맵 쿼리를 제공한다는 점에 유념해야 할 것이다.
계속해서 도 6을 참조하면, 저널 커밋에서, L2P 맵에 대한 각 업데이트는 해당 L2P 페이지에 대응하는 집합 페이지에 기록될 수 있다. 일부 데이터 맵핑에 대한 집합 페이지에서 기록 가능한 위치가 존재하지 않아 상기 프로세스가 실패로 판명되면, 이는 집합 페이지가 채워졌다는 것을 의미할 수 있다. 이 경우, 단일 L2P 페이지에 대응하는 모든 업데이트들은 집합 페이지로부터 커밋될 수 있다(605). 다시 말해, 집합 페이지는 동시에 하나의 L2P 페이지로 커밋될 수 있다.
집합 페이지의 업데이트들은 원하는 데이터 맵핑의 검색 오버헤드를 극적으로 감소시키는 방식으로 조직될 수 있다. 여기서, 쿠크 해쉬(cuckoo hash)에 기반한 방법이 집합 페이지와 함께 적용되어 호스트 주소가 저장될 수 있는 위치를 제한할 수 있다. 단지 몇몇(예를 들어 4개) 위치들만이 각 호스트 주소 업데이트를 저장할 수 있는 위치로 할당될 수 있다. 이는 특정 호스트 주소 데이터 맵핑이 집합 페이지에 위치하고, 상기 호스트 주소 데이터 맵핑을 찾기 위해 최대 4개의 쿼리들이 요구된다는 것을 의미한다. 물론, 상기 4개의 위치들은 제한적인 한정 사항은 아니다. 예를 들어, 위치들의 개수는 타겟 성능 최적화에 따라 변경될 수 있다. 게다가, 작은 보조 테이블이 집합 페이지 내에 제공되어, 가능한 위치가 발견되지 않는 몇몇 데이터 맵핑을 저장할 수 있다. 일례로 이것은 최악의 경우에, 삽입을 제한할 수 있다.
SLC 저널로부터 집합 페이지로 커밋되는 각각의 호스트 주소 데이터 맵핑 업데이트에 있어서, 시스템은 집합 페이지의 가능한 위치들을 계산하고, 그 중 비어있는 위치가 있는지 판단할 수 있다. 만약 비어있는 위치가 있으면, 호스트 주소 업데이트는 이 위치가 삽입되며, 만약 비어있는 위치가 없으면 그 중 하나를 제거하고, 제거한 항목을 해시 테이블에 저장하도록 시도할 수 있다. 만약 제거한 항목들의 개수가 소정의 임계값에 도달하면, 해시 테이블 삽입 실패를 선언하고, 마지막으로 제거된 항목을 보조 테이블에 삽입할 수 있다. 보조 테이블도 모두 채워진 경우에는, 집합 페이지가 채워진 것으로 선언할 수 있다.
일단 집합 페이지가 채워지면(일례로 집합 페이지에 대한 삽입이 실패하면), 집합 페이지의 업데이트들은 자신이 커버하는 메타데이터 페이지로 커밋될 수 있다. 각 집합 페이지가 수십 개의 메타데이터 페이지들을 커버하므로, 집합 페이지 커밋 프로세스는 수십 페이지에 대한 읽기/수정/기록을 야기할 수 있으며, 이는 SSD 장치의 성능 저하를 가져올 수 있다. 이러한 SSD 장치의 성능 저하를 해결하기 위해, 메타데이터 페이지들의 작은 집합에 대한 업데이트들만이 커밋될 수 있다. 집합 페이지에 기록된 업데이트들에 따라서, 상기 집합으로부터 모든 메타데이터 페이지들을 읽어오고, 수정하고, SLC에 기록할 수 있다. 메타데이터 페이지들로 커밋된 상기 업데이트들은 커밋된 집합 페이지들로부터 제거될 수 있으며(쿠크 해시 테이블 또는 보조 테이블로부터도 제거될 수 있다), 업데이트된 집합 페이지는 NAND에 기록될 수 있다. 커밋된 집합 페이지에서 가장 많은 개수의 업데이트들을 포함하는 몇몇 메타데이터 페이지들에 대한 업데이트들은 집합 페이지의 최대 공간을 확보하기 위하여 제거될 수 있다. 각 집합 페이지는 또한 해당 집합 페이지가 커버하는 각 메타데이터 페이지의 업데이트들의 횟수를 세기 위한 카운터를 포함할 수 있다. 상기 카운터는 커밋된 집합 페이지 내에서 가장 많은 개수의 업데이트로 메타데이터 페이지들을 식별하기 위해 활용될 수 있다.
작은 메타데이터 구조에 대해서는, SLC 저널 페이지들을 플래시로 그 메타데이터 페이지들로 바로 커밋할 수 있다.
본 발명의 일 실시예에 따른 계층적 저널링과 커밋은 다음과 같이 요약될 수 있다.
1. 휘발성 저널에 각각의 수행된 플래시 동작을 기록한다.
2. 휘발성 저널이 채워지면, 플래시(SLC 저널)로 기록한다. SLC 저널은 통상 여러 페이지들을 포함한다.
3. SLC 저널이 채워지면,
A. 작은 메타데이터 구조에 대해서는 집합 과정 없이 직접 그 업데이트들을 커밋한다.
B. 큰 메타데이터 구조 각각에 대해서는 집합을 시작한다.
C. 집합 페이지가 채워지면, 그 내용의 일부를 해당 집합 페이지가 커버하는 메타데이터 페이지의 세트에 커밋한다.
본 발명은 상술한 실시형태 및 첨부된 도면에 의해 한정되는 것이 아니며 첨부된 청구범위에 의해 한정하고자 한다. 따라서, 청구범위에 기재된 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 당 기술분야의 통상의 지식을 가진 자에 의해 다양한 형태의 치환, 변형 및 변경이 가능할 것이며, 이 또한 본 발명의 범위에 속한다고 할 것이다.

Claims (20)

  1. 읽기 요청을 수신하는 단계;
    저널 커밋 프로세스가 실행 중인지를 판단하는 단계;
    상기 저널 커밋 프로세스가 실행 중이면, 블룸 필터를 이용하여, 상기 읽기 요청을 위한 업데이트된 데이터 맵핑이 휘발성 저널과 비휘발성 저널 중 적어도 하나에 위치하는지 여부를 결정하는 단계;
    상기 블룸 필터에 의해 상기 업데이트된 데이터 맵핑이 탐색되면 상기 휘발성 저널을 검색하고, 상기 업데이트된 데이터 맵핑이 상기 휘발성 저널에서 발견되지 않으면 상기 비휘발성 저널을 검색하는 단계; 및
    상기 업데이트된 데이터 맵핑이 발견되면, 검색을 중단하는 단계; 를 포함하는 SSD 장치의 데이터 저널링 방법.
  2. 제1항에 있어서,
    상기 블룸 필터는 휘발성 메모리에 저장되는 SSD 장치의 데이터 저널링 방법.
  3. 제1항에 있어서,
    상기 휘발성 저널에 기록된 각각의 항목에 대해, 상기 항목의 기록 호스트 주소를 상기 블룸 필터에 추가하고, 상기 블룸 필터는 상기 항목의 상기 업데이트된 데이터 맵핑이 상기 휘발성 저널 또는 상기 비휘발성 저널에 존재하면 긍정적 응답을 제공하는 단계; 를 더 포함하는 SSD 장치의 데이터 저널링 방법.
  4. 제1항에 있어서,
    상기 블룸 필터가 거짓 양성(false positive)을 리턴하면, 상기 업데이트된 데이터 맵핑에 대한 비휘발성 메타데이터 페이지에서 논리 대 물리(logical to physical, L2P) 데이터 맵핑 페이지를 검색하는 단계; 를 더 포함하는 SSD 장치의 데이터 저널링 방법.
  5. 읽기 요청을 수신하는 단계;
    저널 커밋 프로세스가 실행 중이면, 모든 기록 저널 항목에 대해서 그 논리 블록 주소를 저장하는 블룸 필터를 이용하여, 주어진 세트에 상기 읽기 요청을 위한 업데이트된 데이터 맵핑이 위치하는지 여부를 결정하는 단계; 및
    상기 블룸 필터에 의해 상기 업데이트된 데이터 맵핑이 탐색되지 않으면, 메타데이터 페이지를 검색하는 단계; 를 포함하는 SSD 장치의 데이터 저널링 방법.
  6. 읽기 요청을 수신하는 단계;
    저널 처리 프로세스가 실행되면, 제1 블룸 필터를 이용하여 상기 읽기 요청을 위한 업데이트된 데이터 맵핑이 제1 데이터 세트에 위치하는지 여부를 결정하는 단계; 및
    상기 제1 블룸 필터에 의해 상기 업데이트된 데이터 맵핑이 탐색되면, 휘발성 저널을 검색하는 단계; 를 포함하는 SSD 장치의 데이터 저널링 방법.
  7. 제6항에 있어서,
    상기 휘발성 저널이 상기 업데이트된 데이터 맵핑을 포함하지 않거나 상기 제1 블룸 필터가 상기 업데이트된 데이터 맵핑을 찾지 못 하면, 제2 블룸 필터를 이용하여 상기 업데이트된 데이터 맵핑이 제2 데이터 세트에 위치하는지 여부를 결정하는 단계; 를 더 포함하는 SSD 장치의 데이터 저널링 방법.
  8. 제7항에 있어서,
    상기 제2 블룸 필터가 상기 업데이트된 데이터 맵핑을 찾으면, 저널을 파싱하는 단계; 및
    상기 업데이트된 데이터 맵핑을 찾으면 검색을 중단하는 단계; 를 더 포함하는 SSD 장치의 데이터 저널링 방법.
  9. 제7항에 있어서,
    상기 제2 블룸 필터가 상기 업데이트된 데이터 맵핑을 찾으면 저널을 파싱하는 단계; 및
    상기 업데이트된 데이터 맵핑을 찾지 못 하면, 비휘발성 메모리의 메타데이터 페이지로부터 상기 업데이트된 데이터 맵핑을 읽어오는 단계; 를 더 포함하는 SSD 장치의 데이터 저널링 방법.
  10. 제7항에 있어서,
    상기 제2 블룸 필터가 상기 업데이트된 데이터 맵핑을 포함하지 않으면, 비휘발성 메모리의 메타데이터 페이지로부터 상기 업데이트된 데이터 맵핑을 읽어오는 단계; 를 더 포함하는 SSD 장치의 데이터 저널링 방법.

  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020170098920A 2017-06-12 2017-08-04 대용량 ssd 장치를 위한 데이터 저널링 방법 KR102321346B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/619,981 US10635654B2 (en) 2017-06-12 2017-06-12 Data journaling for large solid state storage devices with low DRAM/SRAM
US15/619,981 2017-06-12

Publications (2)

Publication Number Publication Date
KR20180135390A KR20180135390A (ko) 2018-12-20
KR102321346B1 true KR102321346B1 (ko) 2021-11-04

Family

ID=64564109

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170098920A KR102321346B1 (ko) 2017-06-12 2017-08-04 대용량 ssd 장치를 위한 데이터 저널링 방법

Country Status (2)

Country Link
US (1) US10635654B2 (ko)
KR (1) KR102321346B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7362369B2 (ja) 2019-09-03 2023-10-17 キオクシア株式会社 メモリシステム
US11874770B2 (en) 2022-05-12 2024-01-16 Western Digital Technologies, Inc. Indexless logical-to-physical translation table
US11934704B1 (en) 2022-09-27 2024-03-19 Western Digital Technologies, Inc. Control table set determination in storage devices

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008198184A (ja) 2007-02-15 2008-08-28 Hitachi Ltd 連続的なデータ保護のためにジャーナル領域を調節するための方法および装置
US20160063021A1 (en) 2014-08-28 2016-03-03 Futurewei Technologies, Inc. Metadata Index Search in a File System
US20160110128A1 (en) 2013-03-15 2016-04-21 Western Digital Technologies, Inc. Atomic write command support in a solid state drive

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1988474A1 (en) 2007-05-04 2008-11-05 Axalto SA System and method of managing indexation of flash memory
US7694105B2 (en) * 2007-08-22 2010-04-06 Hitachi Global Storage Technologies Netherlands, B.V. Data storage systems that implement sector sets
US8296312B1 (en) 2008-01-14 2012-10-23 Netapp, Inc. Search and update of attributes in file systems
US8849838B2 (en) * 2008-01-15 2014-09-30 Google Inc. Bloom filter for storing file access history
US8346778B2 (en) 2008-05-21 2013-01-01 Oracle International Corporation Organizing portions of a cascading index on disk
US8843691B2 (en) 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US8407434B2 (en) 2009-11-13 2013-03-26 Microsoft Corporation Sequentially written journal in a data store
US20110276744A1 (en) 2010-05-05 2011-11-10 Microsoft Corporation Flash memory cache including for use with persistent key-value store
WO2012032727A1 (en) 2010-09-09 2012-03-15 Nec Corporation Storage system
US8909855B2 (en) 2012-08-08 2014-12-09 Avalanche Technology, Inc. Storage system employing MRAM and physically addressed solid state disk
KR101522848B1 (ko) * 2011-10-05 2015-05-26 엘에스아이 코포레이션 비휘발성 스토리지에 대한 셀프-저널링 및 계층적 일치성
US10387324B2 (en) * 2011-12-08 2019-08-20 Intel Corporation Method, apparatus, and system for efficiently handling multiple virtual address mappings during transactional execution canceling the transactional execution upon conflict between physical addresses of transactional accesses within the transactional execution
US8880786B2 (en) 2012-09-28 2014-11-04 Apple Inc. Flash translation layer (FTL) database journaling schemes
US9489296B1 (en) * 2012-10-17 2016-11-08 Western Digital Technologies, Inc. Methods, devices and systems for hardware-based garbage collection in solid state drives
US8954694B2 (en) 2012-11-15 2015-02-10 Western Digital Technologies, Inc. Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive
US9612955B2 (en) 2013-01-09 2017-04-04 Wisconsin Alumni Research Foundation High-performance indexing for data-intensive systems
US20140244897A1 (en) 2013-02-26 2014-08-28 Seagate Technology Llc Metadata Update Management In a Multi-Tiered Memory
KR101567134B1 (ko) 2013-03-29 2015-11-09 이화여자대학교 산학협력단 비휘발성 메모리에 기반하여 저널링 기능을 통합한 버퍼 캐시 장치, 저널링 파일 시스템 및 저널링 방법
JP6089890B2 (ja) * 2013-03-29 2017-03-08 富士通株式会社 ストレージ制御装置、ストレージ制御装置の制御方法およびストレージ制御装置の制御プログラム
US9171153B2 (en) * 2013-05-17 2015-10-27 Hewlett-Packard Development Company, L.P. Bloom filter with memory element
WO2015015502A1 (en) * 2013-07-29 2015-02-05 Hewlett-Packard Development Company, L.P. Writing to files and file meta-data
WO2015126518A2 (en) * 2014-02-20 2015-08-27 Rambus Inc. High performance persistent memory
JP6327028B2 (ja) 2014-07-14 2018-05-23 日本電気株式会社 オブジェクトストレージシステムおよびその制御方法およびその制御プログラム
CA2876466C (en) * 2014-12-29 2022-07-05 Ibm Canada Limited - Ibm Canada Limitee Scan optimization using bloom filter synopsis
CN105843551B (zh) 2015-01-29 2020-09-15 爱思开海力士有限公司 高性能和大容量储存重复删除中的数据完整性和损耗电阻
US20160232112A1 (en) * 2015-02-06 2016-08-11 Futurewei Technologies, Inc. Unified Memory Bus and Method to Operate the Unified Memory Bus
US9817588B2 (en) * 2015-04-10 2017-11-14 Macronix International Co., Ltd. Memory device and operating method of same
US10007619B2 (en) * 2015-05-29 2018-06-26 Qualcomm Incorporated Multi-threaded translation and transaction re-ordering for memory management units
US10031763B1 (en) * 2015-08-24 2018-07-24 Amazon Technologies, Inc. Network switch recovery after reboot
US9898200B2 (en) * 2016-02-18 2018-02-20 Samsung Electronics Co., Ltd Memory device having a translation layer with multiple associative sectors
US10445308B2 (en) * 2016-05-31 2019-10-15 Vmware, Inc. Commit coalescing for micro-journal based transaction logging
US10877898B2 (en) * 2017-11-16 2020-12-29 Alibaba Group Holding Limited Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements
US20190286718A1 (en) * 2018-03-15 2019-09-19 Qualcomm Incorporated Data structure with rotating bloom filters

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008198184A (ja) 2007-02-15 2008-08-28 Hitachi Ltd 連続的なデータ保護のためにジャーナル領域を調節するための方法および装置
US20160110128A1 (en) 2013-03-15 2016-04-21 Western Digital Technologies, Inc. Atomic write command support in a solid state drive
US20160063021A1 (en) 2014-08-28 2016-03-03 Futurewei Technologies, Inc. Metadata Index Search in a File System

Also Published As

Publication number Publication date
US10635654B2 (en) 2020-04-28
US20180357268A1 (en) 2018-12-13
KR20180135390A (ko) 2018-12-20

Similar Documents

Publication Publication Date Title
US10303596B2 (en) Read-write control method for memory, and corresponding memory and server
US7594067B2 (en) Enhanced data access in a storage device
EP2735978B1 (en) Storage system and management method used for metadata of cluster file system
US9436597B1 (en) Using non-volatile memory resources to enable a virtual buffer pool for a database application
US20050015557A1 (en) Nonvolatile memory unit with specific cache
US10740251B2 (en) Hybrid drive translation layer
US20100211616A1 (en) Performance by Avoiding Disk I/O for Deduplicated File Blocks
US20060106984A1 (en) Methods and apparatus for efficient memory usage
US20210157746A1 (en) Key-value storage device and system including the same
TW201301030A (zh) 在一記憶體裝置中減少次要位址表檢查之快速轉譯指示器
US11461041B2 (en) Storage device that receives inode address information to reduce external communication overhead
KR102321346B1 (ko) 대용량 ssd 장치를 위한 데이터 저널링 방법
US7058784B2 (en) Method for managing access operation on nonvolatile memory and block structure thereof
CN110968269A (zh) 基于scm与ssd的键值存储系统及读写请求处理方法
US20070180001A1 (en) Method and Data Processing System For Managing A Mass Storage System
US10782895B2 (en) Management method of metadata for preventing data loss and memory device using the same
US9329994B2 (en) Memory system
KR20160121819A (ko) 이종 메모리 기반 데이터 관리 장치
KR100533683B1 (ko) 플래시 메모리의 데이터 관리 장치 및 방법
US10877698B2 (en) Semiconductor device for managing cold addresses of nonvolatile memory device
US20220147265A1 (en) Metadata management for extent-based storage system
US20150278117A1 (en) Method and apparatus method and apparatus for controlling access to a hash-based disk
KR20170114991A (ko) 비휘발성 메모리를 이용한 로깅 방법
CN117827082A (zh) 数据存储系统
CN117908784A (zh) L2p表格数据的缓存方法、设备及计算机可读存储介质

Legal Events

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