KR102706442B1 - Ssd device and operating method of the same using ftl based on lsm-tree and approximate indexing - Google Patents
Ssd device and operating method of the same using ftl based on lsm-tree and approximate indexing Download PDFInfo
- Publication number
- KR102706442B1 KR102706442B1 KR1020210185775A KR20210185775A KR102706442B1 KR 102706442 B1 KR102706442 B1 KR 102706442B1 KR 1020210185775 A KR1020210185775 A KR 1020210185775A KR 20210185775 A KR20210185775 A KR 20210185775A KR 102706442 B1 KR102706442 B1 KR 102706442B1
- Authority
- KR
- South Korea
- Prior art keywords
- physical address
- logical address
- index information
- controller
- ssd
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000011017 operating method Methods 0.000 title description 9
- 238000013507 mapping Methods 0.000 claims abstract description 31
- 239000007787 solid Substances 0.000 claims abstract description 27
- 238000000034 method Methods 0.000 claims description 20
- 238000006243 chemical reaction Methods 0.000 claims description 9
- 238000012417 linear regression Methods 0.000 claims description 5
- 229920006395 saturated elastomer Polymers 0.000 claims description 4
- 238000013519 translation Methods 0.000 description 20
- 230000008859 change Effects 0.000 description 9
- 230000004044 response Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 7
- 238000012360 testing method Methods 0.000 description 5
- 238000007796 conventional method Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000012886 linear function Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000003321 amplification Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000012005 ligant binding assay Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003199 nucleic acid amplification method Methods 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 238000005056 compaction Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 108700041286 delta Proteins 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000011982 device technology Methods 0.000 description 1
- 238000005315 distribution function Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011056 performance test Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stereophonic System (AREA)
- Electrotherapy Devices (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
본 개시의 일 실시 예는 호스트와 연결하는 인터페이스 로직, 데이터가 저장되는 비휘발성 메모리 및 비휘발성 메모리를 제어하는 컨트롤러를 포함하고, 컨트롤러는 호스트가 제공한 논리 주소를 비휘발성 메모리에 대한 물리 주소로 변환하고, 물리 주소에 기반하여 비휘발성 메모리에 액세스하고, 컨트롤러는 계층적 구조인 LSM-tree(log-structured merge tree)로 구성된 복수의 계층에 저장된 색인(indexing) 정보에 기반하여 논리 주소를 물리 주소로 변환하고, LSM-tree의 복수의 계층 중 적어도 두 개의 계층은 서로 다른 방식으로 논리 주소 및 논리 주소에 대응하는 물리 주소의 맵핑에 기반한 색인 정보를 저장하는 SSD(Solid State Drive) 장치를 제공한다.An embodiment of the present disclosure provides an SSD (Solid State Drive) device including interface logic connected to a host, nonvolatile memory storing data, and a controller controlling the nonvolatile memory, wherein the controller converts a logical address provided by the host into a physical address for the nonvolatile memory and accesses the nonvolatile memory based on the physical address, the controller converts the logical address into a physical address based on indexing information stored in a plurality of layers configured as a log-structured merge tree (LSM-tree) having a hierarchical structure, and at least two layers of the plurality of layers of the LSM-tree store indexing information based on mapping of logical addresses and physical addresses corresponding to the logical addresses in different ways.
Description
본 개시는 SSD(Solid State Drive) 장치 및 그 동작 방법에 관한 것으로서, 더욱 상세하게는 호스트의 논리 주소와 SSD의 물리 주소 변환을 위한 근사적 색인(approximate indexing) 기반의 FTL(Flash Translation Layer)을 적용한 SSD 장치 및 그 동작 방법에 관한 것이다.The present disclosure relates to an SSD (Solid State Drive) device and an operating method thereof, and more particularly, to an SSD device applying an FTL (Flash Translation Layer) based on approximate indexing for converting a logical address of a host and a physical address of an SSD, and an operating method thereof.
저장 장치 기술의 발전으로 저장 용량이 급격히 증가하였고, 최근 100TB 이상의 SSD(Solid State Drive)가 시장에 존재한다. SSD 저장 용량의 급격한 증가에도 불구하고 현재 저장 관리를 위한 인덱싱 설계는 저장 용량의 증가에 적합하도록 발전을 하지 못하고 있다. 즉, SSD는 HDD(Hard Disk Drive)와 동일한 호스트 인터페이스를 이용하고 있으나, 현재의 LBA(Logical Block Address) 어레이는 오버라이팅(overwriting) 가능한 HDD에 적합한 방식으로서 SSD에는 최적화되어 있지 않다. 따라서, 주소 변환을 위해서 SSD 내부적인 특성을 숨기고 LBA 어레이를 호스트로 노출하기 위한 FTL이 필요하다. 하지만, 종래 SSD는 논리 주소와 물리 주소의 변환을 위해 여전히 거대한 색인 테이블을 이용하는 문제점이 있다. With the development of storage device technology, storage capacity has increased rapidly, and recently, SSDs (Solid State Drives) of more than 100 TB are available on the market. Despite the rapid increase in SSD storage capacity, the current indexing design for storage management has not developed to suit the increase in storage capacity. That is, SSDs use the same host interface as HDDs (Hard Disk Drives), but the current LBA (Logical Block Address) array is not optimized for SSDs, as it is suitable for HDDs that can be overwritten. Therefore, an FTL is required to hide the internal characteristics of SSDs and expose the LBA array to the host for address translation. However, conventional SSDs still have the problem of using a huge index table to translate logical addresses and physical addresses.
종래 색인 테이블의 크기를 줄이려는 시도가 있었고, 그 중 가장 대표적인 것이 수요 기반 변환 (demand-based translation: DFTL, 선행기술 1)이다. DFTL은 TLB(translation lookaside buffer)에서 착안하여 자주 참조되는 색인 항목만 DRAM에 캐시로서 저장하고 나머지는 비 휘발성 저장 장치에 보관한다. 하지만, DFTL의 본질적인 단점으로서 읽기 대기 시간은 작업에 따라 크게 다르다는 성능상의 문제가 존재한다. 예를 들어, 작업부하(workload)의 지역성이 약한 경우 잦은 캐시 실패로 인해 데이터 읽기에 지연이 증가된다. 이로 인해, DFTL의 일부 변형(예를 들어, 선행기술 2의 SFTL 및 선행기술 3의 TPFTL)이 제안되었지만 여전히 동일한 문제점을 가지고 있다. There have been attempts to reduce the size of conventional index tables, and the most representative one is demand-based translation (DFTL, Prior Art 1). DFTL caches only frequently referenced index entries in DRAM based on the translation lookaside buffer (TLB) and stores the rest in non-volatile storage. However, an inherent drawback of DFTL is that read latency varies greatly depending on the task, which is a performance issue. For example, when the workload has weak locality, frequent cache misses increase the delay in reading data. Because of this, some variations of DFTL (e.g., SFTL of
이러한 문제점은 일관된 응답 성능이 매우 중요한 클라우드 환경이 증가하는 현재 상황에서 더욱 큰 문제점으로 작용하고 있다. 따라서, 데이터 읽기 등에 일관된 응답 성능을 보여 주는 SSD 주소 변환 기술 및 그를 이용한 SSD 기술이 필요하다.These problems are becoming even more serious in the current situation where consistent response performance is very important, as cloud environments are increasing. Therefore, SSD address translation technology that shows consistent response performance for data reading, etc. and SSD technology using it are needed.
본 개시의 일 실시 예는 작은 색인 테이블로서 주소 변환을 가능하게 하는 SSD 장치 및 그 동작 방법을 제공한다. One embodiment of the present disclosure provides an SSD device and an operating method thereof that enable address translation as a small index table.
본 개시의 다른 실시 예는 근사 인덱싱에 기반하여 주소 변환을 가능하게 하는 SSD 장치 및 그 동작 방법을 제공한다.Another embodiment of the present disclosure provides an SSD device and an operating method thereof that enable address translation based on approximate indexing.
본 개시의 다른 실시 예는 복수의 인덱싱 방법을 서로 다른 계층에 적용하는 LSM-tree에 기반하여 주소 변환을 가능하게 하는 SSD 장치 및 그 동작 방법을 제공한다.Another embodiment of the present disclosure provides an SSD device and an operating method thereof that enable address translation based on an LSM-tree applying multiple indexing methods to different layers.
본 개시의 다른 실시 예는 데이터 저장 위치의 지역성에 무관하게 일관된 응답 성능을 보여주는 주소 변환을 가능하게 하는 SSD 장치 및 그 동작 방법을 제공한다.Another embodiment of the present disclosure provides an SSD device and a method of operating the same that enable address translation that exhibits consistent response performance regardless of the locality of a data storage location.
본 개시의 일 실시 예는 호스트와 연결하는 인터페이스 로직, 데이터가 저장되는 비휘발성 메모리 및 비휘발성 메모리를 제어하는 컨트롤러를 포함하고, 컨트롤러는 호스트가 제공한 논리 주소를 비휘발성 메모리에 대한 물리 주소로 변환하고, 물리 주소에 기반하여 비휘발성 메모리에 액세스하고, 컨트롤러는 계층적 구조인 LSM-tree(log-structured merge tree)로 구성된 복수의 계층에 저장된 색인(indexing) 정보에 기반하여 논리 주소를 물리 주소로 변환하고, LSM-tree의 복수의 계층 중 적어도 두 개의 계층은 서로 다른 방식으로 논리 주소 및 논리 주소에 대응하는 물리 주소의 맵핑에 기반한 색인 정보를 저장하는 SSD(Solid State Drive) 장치를 제공한다.An embodiment of the present disclosure provides an SSD (Solid State Drive) device including interface logic connected to a host, nonvolatile memory storing data, and a controller controlling the nonvolatile memory, wherein the controller converts a logical address provided by the host into a physical address for the nonvolatile memory and accesses the nonvolatile memory based on the physical address, the controller converts the logical address into a physical address based on indexing information stored in a plurality of layers configured as a log-structured merge tree (LSM-tree) having a hierarchical structure, and at least two layers of the plurality of layers of the LSM-tree store indexing information based on mapping of logical addresses and physical addresses corresponding to the logical addresses in different ways.
본 개시의 다른 실시 예는 호스트와 연결하는 인터페이스 로직, 데이터가 저장되는 비휘발성 메모리 및 비휘발성 메모리를 제어하는 컨트롤러를 포함하는 SSD 장치의 동작 방법으로서, 컨트롤러가 호스트가 전송한 논리 주소를 제공 받는 단계, 컨트롤러가 제공 받은 논리 주소를 계층적 구조인 LSM-tree(log-structured merge tree)로 구성된 복수의 계층에 저장된 색인(indexing) 정보에 기반하여 비휘발성 메모리에 대한 물리 주소로 변환하는 단계 및 컨트롤러가 물리 주소에 기반하여 비휘발성 메모리에 액세스하는 단계를 포함하고, LSM-tree의 복수의 계층 중 적어도 두 개의 계층은 서로 다른 방식으로 논리 주소 및 논리 주소에 대응하는 물리 주소의 맵핑에 기반한 색인 정보를 저장한다.Another embodiment of the present disclosure provides a method of operating an SSD device including interface logic connected to a host, non-volatile memory storing data, and a controller controlling the non-volatile memory, the method including a step of the controller receiving a logical address transmitted by the host, a step of converting the logical address provided by the controller into a physical address for the non-volatile memory based on indexing information stored in a plurality of layers configured as a log-structured merge tree (LSM-tree) having a hierarchical structure, and a step of the controller accessing the non-volatile memory based on the physical address, wherein at least two layers of the plurality of layers of the LSM-tree store indexing information based on a mapping of a logical address and a physical address corresponding to the logical address in different ways.
본 개시의 실시 예에 따른 SSD 장치 및 그 동작 방법은 데이터 저장 위치의 지역성에 무관하게 일관된 응답 성능을 보여줄 수 있다.An SSD device and its operating method according to an embodiment of the present disclosure can exhibit consistent response performance regardless of the locality of a data storage location.
본 개시의 실시 예에 따른 SSD 장치 및 그 동작 방법은 클라우드 환경에서 저장 장치의 일관된 응답 성능을 보여줄 수 있다.An SSD device and its operating method according to an embodiment of the present disclosure can demonstrate consistent response performance of a storage device in a cloud environment.
본 개시의 실시 예에 따른 SSD 장치 및 그 동작 방법은 종래 색인 테이블의 크기에 비하여 작은 크기의 색인 테이블을 이용함으로써 작은 휘발성 메모리 공간에서도 응답 성능이 높은 주소 변환 기술을 제공할 수 있다. An SSD device and its operating method according to an embodiment of the present disclosure can provide an address translation technology with high response performance even in a small volatile memory space by using an index table of a small size compared to the size of a conventional index table.
도 1은 본 개시의 일 실시 예에 따른 SSD 장치의 구성을 나타낸 블록도이다.
도 2는 본 개시의 일 실시 예에 따른 SSD 장치의 LSM-tree 각 계층 구성을 설명하는 도면이다.
도 3는 본 개시의 일 실시 예에 따른 SSD 장치의 LSM-tree 각 계층 구성 및 주소 변환 방법을 설명하는 도면이다.
도 4 및 도 5는 본 개시의 일 실시 예에 따른 SSD 장치의 LSM-tree 중간 계층의 블룸 필터에 기반한 주소 변환을 설명하는 도면이다.
도 6은 본 개시의 일 실시 예에 따른 SSD 장치의 LSM-tree 하위 계층의 Piece-wise linear regression(PLR) 모델에 기반한 주소 변환을 설명하는 도면이다.
도 7 내지 도 10은 본 개시의 일 실시 예에 따른 성능 실험 결과를 설명하는 도면이다.
도 11 및 도 12는 본 개시의 일 실시 예에 따른 SSD 장치의 운용 방법을 설명하는 순서도이다.FIG. 1 is a block diagram showing the configuration of an SSD device according to an embodiment of the present disclosure.
FIG. 2 is a diagram illustrating the configuration of each layer of an LSM-tree of an SSD device according to an embodiment of the present disclosure.
FIG. 3 is a drawing explaining the LSM-tree each layer configuration and address conversion method of an SSD device according to one embodiment of the present disclosure.
FIGS. 4 and 5 are diagrams illustrating address translation based on a bloom filter in the middle layer of an LSM-tree of an SSD device according to an embodiment of the present disclosure.
FIG. 6 is a diagram illustrating address translation based on a piece-wise linear regression (PLR) model of a lower layer of an LSM-tree of an SSD device according to an embodiment of the present disclosure.
FIGS. 7 to 10 are drawings illustrating performance test results according to one embodiment of the present disclosure.
FIG. 11 and FIG. 12 are flowcharts illustrating a method of operating an SSD device according to an embodiment of the present disclosure.
이하, 첨부된 도면을 참조하여 본 명세서에 개시된 실시 예를 상세히 설명하되, 도면 부호에 관계없이 동일하거나 유사한 구성요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 이하의 설명에서 사용되는 구성요소에 대한 접미사 "모듈" 및 "부"는 명세서 작성의 용이함만이 고려되어 부여되거나 혼용되는 것으로서, 그 자체로 서로 구별되는 의미 또는 역할을 갖는 것은 아니다. 또한, 본 명세서에 개시된 실시 예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 명세서에 개시된 실시 예의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 첨부된 도면은 본 명세서에 개시된 실시 예를 쉽게 이해할 수 있도록 하기 위한 것일 뿐, 첨부된 도면에 의해 본 명세서에 개시된 기술적 사상이 제한되지 않으며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.Hereinafter, embodiments disclosed in this specification will be described in detail with reference to the attached drawings. Regardless of the drawing symbols, identical or similar components will be given the same reference numerals and redundant descriptions thereof will be omitted. The suffixes "module" and "part" used for components in the following description are assigned or used interchangeably only for the convenience of writing the specification, and do not have distinct meanings or roles in themselves. In addition, when describing embodiments disclosed in this specification, if it is determined that a specific description of a related known technology may obscure the gist of the embodiments disclosed in this specification, the detailed description thereof will be omitted. In addition, the attached drawings are only intended to facilitate easy understanding of the embodiments disclosed in this specification, and the technical ideas disclosed in this specification are not limited by the attached drawings, and should be understood to include all modifications, equivalents, and substitutes included in the spirit and technical scope of the present invention.
제1, 제2 등과 같이 서수를 포함하는 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되지는 않는다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.Terms that include ordinal numbers, such as first, second, etc., may be used to describe various components, but the components are not limited by the terms. The terms are used only to distinguish one component from another.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.When it is said that a component is "connected" or "connected" to another component, it should be understood that it may be directly connected or connected to that other component, but that there may be other components in between. On the other hand, when it is said that a component is "directly connected" or "directly connected" to another component, it should be understood that there are no other components in between.
아래의 실시 예들은 SSD의 컨트롤러에서 구현되는 것을 실시 예로 설명하지만, 서버 장치, 컴퓨터 등의 SSD 장치가 연결되는 호스트의 논리 주소 변환 컴포넌트로서 구현 가능하다. 편의상 SSD 장치에서 구현되는 실시 예들로서 설명한다.The embodiments below are described as embodiments implemented in a controller of an SSD, but can be implemented as a logical address translation component of a host to which an SSD device, such as a server device or a computer, is connected. For convenience, embodiments implemented in an SSD device are described.
도 1을 참조하여 본 개시의 일 실시 예에 따른 Solid State Drive(SSD) 장치의 구성 및 구동하기 위한 환경을 설명한다. Referring to FIG. 1, the configuration and operating environment of a Solid State Drive (SSD) device according to one embodiment of the present disclosure are described.
본 개시의 실시 예에 따른 SSD 장치(100)는 호스트(200)로부터 호스트 인터페이스 회로(120)를 통해 논리 주소를 전달 받아, SSD 컨트롤러(110)가 물리 주소로 변환하여 비휘발성 메모리(130)에 접근한다.An SSD device (100) according to an embodiment of the present disclosure receives a logical address from a host (200) through a host interface circuit (120), and an SSD controller (110) converts the logical address into a physical address to access a nonvolatile memory (130).
호스트(200)는 저장 공간 및 데이터 처리의 클라우드 환경을 제공하는 서버 장치이거나 SSD 장치를 SATA 등의 인터페이스로 연결하는 노트북 컴퓨터, 퍼스널 컴퓨터, 태블릿 컴퓨터 등 SSD 장치를 저장 장치로서 활용 가능한 컴퓨팅 장치를 모두 포함한다.The host (200) includes a server device that provides a cloud environment for storage space and data processing, or a computing device that can utilize an SSD device as a storage device, such as a notebook computer, personal computer, or tablet computer that connects an SSD device to an interface such as SATA.
SSD 컨트롤러(110)는 호스트(200) 영역의 논리 주소(LBA, Logical Block Address)를 플래시 메모리의 물리 주소(Physical Block Address: PBA, Physical Sector Address: PSA)로 변환하는 논리적 블록 맵핑(Logical block mapping, 주소 변환)을 수행한다. 주소 변환을 위해서 본 발명의 일 실시 예는 계층적 구조인 LSM-tree(log-structured merge tree)의 복수의 계층에 저장된 색인(indexing) 정보에 기반한다. 본 명세서는 일부 설명에서 논리 주소의 기호를 xi, 물리 주소의 기호를 yi로 지칭하여 설명할 수 있다. 첨자는 엔트리의 구별을 위해서 예시적으로 변경하여 설명할 수 있다.The SSD controller (110) performs logical block mapping (address translation) that converts a logical address (LBA, Logical Block Address) of a host (200) area into a physical address (PBA, Physical Sector Address: PSA) of a flash memory. For address translation, one embodiment of the present invention is based on indexing information stored in multiple layers of a log-structured merge tree (LSM-tree), which is a hierarchical structure. In some descriptions of this specification, a symbol for a logical address may be referred to as x i , and a symbol for a physical address may be referred to as y i . The subscript may be exemplarily changed and explained to distinguish entries.
본 명세서에서 물리 주소는 SSD 장치의 섹터 또는 블록의 특정 물리적 주소이거나 SSD 장치의 섹터 또는 블록의 특정 물리적 주소를 간접적으로 지시하는 주소일 수 있다. 간접적으로 지시하는 주소는 예를 들어, 특정 물리 주소와 특정 물리 주소로부터의 오프셋(offset)을 의미할 수 있다. 또한, 본 명세서에서 물리 주소는 호스트(200)에서 원하는 데이터가 실제로 저장된 실제 물리 주소뿐만 아니라, SSD 컨트롤러(110)에서 본 발명의 일 실시 예에 따른 근사 인덱싱(approximate indexing)에 기반하여 확률적으로 추측한 추정 물리 주소를 포함하는 것으로 설명한다. 또한, 본 명세서에서는 논리 주소와 물리 주소의 변환 관계를 맵핑, 색인, 인덱싱이라는 용어로 혼용하여 설명한다.In this specification, a physical address may be a specific physical address of a sector or block of an SSD device, or an address indirectly indicating a specific physical address of a sector or block of an SSD device. The indirectly indicating address may mean, for example, a specific physical address and an offset from the specific physical address. In addition, in this specification, a physical address is described as including not only an actual physical address where desired data is actually stored by the host (200), but also an estimated physical address that is probabilistically estimated based on approximate indexing according to an embodiment of the present invention by the SSD controller (110). In addition, in this specification, the conversion relationship between a logical address and a physical address is described using the terms mapping, indexing, and indexing interchangeably.
SSD 컨트롤러(110)는 컴포넌트인 FTL(Flash Translation Layer)을 통해서 논리 주소를 물리 주소로 변환한다. FTL은 색인 정보에 기반하여 논리 주소를 물리 주소로 변환한다. 본 명세서에서는 본 발명의 실시 예에 따른 특유한 주소 변환 방법을 사용하는 FTL을 APX-FTL(Approximate FTL)로 지칭할 수 있다.The SSD controller (110) converts a logical address into a physical address through a component, FTL (Flash Translation Layer). The FTL converts a logical address into a physical address based on index information. In this specification, an FTL using a unique address conversion method according to an embodiment of the present invention may be referred to as APX-FTL (Approximate FTL).
일 실시 예에서, 색인 정보는 빠른 액세스를 위해서 SSD의 DRAM으로 구성된 RAM 버퍼(140)에 로딩되어 사용될 수 있고, 비휘발성 메모리(130)에도 전체 또는 그 일부가 저장될 수 있다. 따라서, SSD의 전원이 공급되면 비휘발성 메모리(130)에 저장된 색인 정보를 읽어서 RAM 버퍼(140)에 로딩할 수 있다. 비휘발성 메모리(130)는 NAND 또는 NOR 방식의 플래시 램으로 구성될 수 있고, 특별히 그 종류를 한정하지 않는다.In one embodiment, the index information may be loaded and used in a RAM buffer (140) configured as a DRAM of an SSD for fast access, and may be stored in whole or in part in a nonvolatile memory (130). Accordingly, when power is supplied to the SSD, the index information stored in the nonvolatile memory (130) may be read and loaded into the RAM buffer (140). The nonvolatile memory (130) may be configured as a flash RAM of a NAND or NOR type, and its type is not particularly limited.
본 발명의 일 실시 예는 새로운 근사 주소 변환 방법으로서, 정확하지만 용량이 큰 L2P(Logical to Physical) 맵핑 항목(각각 48비트)을 보유하는 종래 기술과 달리 확률적이지만 공간 효율적인 데이터 구조인 블룸 필터(BF) 및 Piece-wise linear regression(PLR) 모델을 사용하는 수정된 LSM-tree를 사용하여 비휘발성 메모리(130)를 인덱싱한다. One embodiment of the present invention is a novel approximate address translation method that indexes a non-volatile memory (130) using a modified LSM-tree that uses a Bloom Filter (BF) and Piece-wise linear regression (PLR) model, which are probabilistic but space-efficient data structures, unlike the prior art that has accurate but large-capacity Logical to Physical (L2P) mapping entries (each 48 bits).
앞에서 설명한 것처럼, 일 실시 예에서 메모리 효율을 위해 색인 정보의 일 부분인 블룸 필터와 PLR 모델은 DRAM으로 구현된 RAM 버퍼(140)에 항상 유지될 수 있다. As explained above, in one embodiment, for memory efficiency, a part of the index information, the Bloom filter and the PLR model, may always be maintained in a RAM buffer (140) implemented in DRAM.
SSD 컨트롤러(110)는 호스트(200)로부터 데이터 쓰기 요청을 수신하면 데이터를 비휘발성 메모리(130)에 추가하고, 쓰여진 데이터의 위치를 가리키도록 색인 정보를 변경한다. 변경되는 색인 정보는 근사 인덱싱에 기반한 색인 정보일 수 있다. When the SSD controller (110) receives a data write request from the host (200), it adds the data to the nonvolatile memory (130) and changes the index information to point to the location of the written data. The changed index information may be index information based on approximate indexing.
SSD 컨트롤러(110)는 호스트(200)로부터 데이터 읽기 요청을 수신하면 LSM-tree의 어느 한 계층에 저장된 색인 정보에 기반하여 물리 주소를 조회한다. 일 실시 예에서, SSD 컨트롤러(110)는 근사 인덱싱에 기반한 색인 정보를 조회하여 읽을 데이터의 물리 주소를 추론하고 예측된 위치에서 데이터를 읽을 수 있다. 본 발명의 일 실시 예에 따른 근사 인덱싱에 기반한 색인 정보의 추측 방식의 특성(false positive)으로 인해 색인 정보에서 조회된 물리 주소는 호스트(200)가 원하는 데이터가 실제로 저장된 실제 물리 주소가 아닐 수 있다. 이 경우, SSD 컨트롤러(110)는 원하는 데이터가 실제로 저장된 물리 주소를 찾을 때까지 반복하여 색인 정보에서 물리 주소 변환을 시도한다.When the SSD controller (110) receives a data read request from the host (200), it searches for a physical address based on index information stored in one layer of the LSM-tree. In one embodiment, the SSD controller (110) can infer the physical address of data to be read by searching for index information based on approximate indexing and read data from the predicted location. Due to the characteristic (false positive) of the guessing method of index information based on approximate indexing according to one embodiment of the present invention, the physical address searched from the index information may not be the actual physical address where the data desired by the host (200) is actually stored. In this case, the SSD controller (110) repeatedly attempts to convert the physical address from the index information until it finds the physical address where the desired data is actually stored.
도 2를 참조하여 본 개시의 일 실시 예에 따른 SSD 장치(100) LSM-tree(141~143)의 각 계층의 구성에 대하여 설명한다. 및 각 계층의 색인 정보에 따른 주소 변환에 대하여 설명한다.Referring to FIG. 2, the configuration of each layer of the LSM-tree (141 to 143) of an SSD device (100) according to one embodiment of the present disclosure is described. And address conversion according to index information of each layer is described.
종래의 LSM-tree와 다르게 본 발명의 일 실시 예에 따른 LSM-tree(141~143)는 논리 주소와 물리 주소의 맵핑 관계인 색인 정보를 복수의 계층에 저장하고, 복수의 계층 중 적어도 두개의 계층은 서로 다른 방식으로 논리 주소와 물리 주소의 맵핑에 기반한 색인 정보를 저장한다.Unlike conventional LSM-trees, an LSM-tree (141 to 143) according to an embodiment of the present invention stores index information, which is a mapping relationship between a logical address and a physical address, in a plurality of layers, and at least two layers among the plurality of layers store index information based on the mapping of the logical address and the physical address in different ways.
본 발명의 일 실시 예에 따른 LSM-tree(141~143)는 다른 계층들과 달리 논리 주소와 해당 논리 주소에 정확히 맵핑되는 물리 주소의 색인 정보를 저장하는 최상위 계층(141)(L0)과 논리 주소에 맵핑되는 물리 주소를 추측 방식으로 추정하는 색인 정보를 저장하는 그 외 계층(L1~Lh-1)인 중간 계층(142) 및 하위 계층(143)으로 구성될 수 있다. h는 LSM-tree(141~143)의 높이일 수 있다. 인접하는 계층 Li와 Li+1은 Li+1이 Li보다 T배만큼 크고, T는 미리 설정된 배수일 수 있다.According to an embodiment of the present invention, an LSM-tree (141 to 143) may be composed of a top layer (141) (L0) that stores index information of a logical address and a physical address exactly mapped to the logical address, unlike other layers, an intermediate layer (142) and a lower layer (143) that are other layers (L 1 to L h-1 ) that store index information that estimates a physical address mapped to the logical address in a guessing manner. h may be the height of the LSM-tree (141 to 143). Adjacent layers L i and L i+1 may be such that L i+1 is T times larger than L i , and T may be a preset multiple.
LSM-tree(141~143)의 각 계층에는 키로 정렬된 고유한 키-값 페어(Key-Value pair: KV pair)가 저장되고, 본 발명의 실시 예에 LSM 트리는 논리 블록의 논리 주소를 키로 처리하고 해당 데이터를 값으로 처리하여 논리 블록을 물리 섹터에 매핑하는 데 사용할 수 있다.Each layer of the LSM tree (141 to 143) stores a unique key-value pair (KV pair) sorted by key, and in an embodiment of the present invention, the LSM tree can be used to map a logical block to a physical sector by processing the logical address of the logical block as a key and the corresponding data as a value.
본 발명의 실시 예에 따른 LSM-tree(141~143) 기반의 색인 정보 저장 은 종래의 테이블 기반 인덱싱보다 더 높은 쓰기 처리량을 제공할 수 있다. 추가 전용(append-only) 업데이트 정책은 KV 쌍 및 관련 인덱스를 디스크에 한 번 기록하면 변경할 수 없게 함으로써, 요청을 처리하는 동안 비용이 많이 드는 READ-MODIFY-WRITE(RMW)를 피할 수 있다. 종래의 데이터 베이스 자료 인덱싱에 사용된 LSM-tree의 단점은 읽기에 긴 대기 시간을 필요로 하는 문제점이 있으나, 본 발명의 일 실시 예에 따른 LSM-tree(141~143)는 최상위 계층 이외의 계층에 본 발명의 실시 예들에 따른 블룸 필터 및 PLW 모델을 적용함으로써 읽기에 긴 대기 시간을 필요로 하지 않는다.The index information storage based on the LSM-tree (141 to 143) according to an embodiment of the present invention can provide higher write throughput than the conventional table-based indexing. The append-only update policy can avoid the expensive READ-MODIFY-WRITE (RMW) while processing a request by making it impossible to change a KV pair and its associated index once written to the disk. The disadvantage of the LSM-tree used in the conventional database data indexing is that it requires a long waiting time for reading, but the LSM-tree (141 to 143) according to an embodiment of the present invention does not require a long waiting time for reading by applying the bloom filter and PLW model according to the embodiments of the present invention to layers other than the top layer.
본 발명의 일 실시 예에 따른 LSM-tree(141~143)의 적어도 일부 계층은 복수의 런(run)을 포함할 수 있고, 각 런에는 복수의 논리 주소 및 물리 주소의 맵핑 관계인 색인 정보가 KV 페어로서 복수 개 저장될 수 있다. 일 실시 예에서, 런은 복수의 런 청크(run chunk)로 구성될 수 있고, 런 청크는 비휘발성 메모리의 메모리 블록과 크기가 동일할 수 있다.At least some layers of an LSM-tree (141 to 143) according to an embodiment of the present invention may include a plurality of runs, and in each run, a plurality of index information, which is a mapping relationship between a plurality of logical addresses and physical addresses, may be stored as KV pairs. In an embodiment, a run may be composed of a plurality of run chunks, and a run chunk may have the same size as a memory block of a non-volatile memory.
LSM-tree(141~143)의 복수의 계층은 계층 순서대로 최상위 계층, 적어도 하나의 중간 계층 및 적어도 하나의 하위 계층으로 구성될 수 있고, 각 계층의 런은 색인 정보의 논리 주소 순서로 KV 페어를 정렬하여 복수의 색인 정보를 저장할 수 있다.Multiple layers of LSM-tree (141~143) can be composed of a top layer, at least one middle layer, and at least one lower layer in the order of layers, and the runs of each layer can store multiple index information by sorting KV pairs in the logical address order of the index information.
SSD 컨트롤러(110)는 LSM-tree(141~143)의 계층 중 어느 한 계층의 모든 런이 포화된 경우, 포화된 계층의 적어도 하나의 색인 정보를 최상위 계층, 상기 중간 계층 및 상기 하위 계층의 순서대로 아래에 위치한 계층으로 이동(flushing out)시킬 수 있다.When all runs of one layer among the layers of the LSM-tree (141 to 143) are saturated, the SSD controller (110) can move (flushing out) at least one index information of the saturated layer to a layer located below in the order of the top layer, the middle layer, and the lower layer.
도 3을 참조하여 본 개시의 일 실시 예에 따른 SSD 장치(100) LSM-tree(141~143)의 각 계층의 색인 정보에 따른 주소 변환에 대하여 설명한다.Referring to FIG. 3, address conversion according to index information of each layer of the LSM-tree (141 to 143) of an SSD device (100) according to one embodiment of the present disclosure is described.
본 개시의 일 실시 예에 따른 LSM-tree(141~143)는 계층화되어 있고, 각 계층의 색인 정보는 4KB 논리 블록을 색인할 수 있다. 따라서, KV 페어에서 48비트 정수(즉, 논리 주소인 LBA)가 키로 사용될 수 있고, 4KB 데이터 블록이 값으로 사용될 수 있다. 각 런은 논리 주소 별로 정렬된 고유한 4KB 논리 블록이 포함될 수 있고, 각 계층 및 런들의 논리 주소들은 일부 중복될 수 있다. According to an embodiment of the present disclosure, the LSM-tree (141 to 143) is hierarchical, and the index information of each layer can index a 4KB logical block. Accordingly, a 48-bit integer (i.e., LBA, which is a logical address) in a KV pair can be used as a key, and a 4KB data block can be used as a value. Each run can include a unique 4KB logical block sorted by logical address, and the logical addresses of each layer and run can be partially overlapped.
본 개시의 일 실시 예에 따른 LSM-tree(141~143)의 최상위 계층(L0, 141)은 논리 주소와 논리 주소에 맵핑되는 물리 주소를 색인 정보로서 저장하는 정확 인덱싱(exact indexing)에 기반하며, 따라서 메모리 테이블(memTable)에서 최상위 계층(L0, 141)으로 플러싱된 논리 블록은 반드시 정렬될 필요는 없다. The top layer (L0, 141) of the LSM-tree (141 to 143) according to one embodiment of the present disclosure is based on exact indexing that stores a logical address and a physical address mapped to the logical address as index information, and therefore, a logical block flushed from a memory table (memTable) to the top layer (L0, 141) does not necessarily need to be sorted.
LSM-tree(141~143) 중 최상위 계층 이외의 계층들 중 일부로서 블룸 필터(Bloom filter)에 기반하여 물리 주소를 확률적으로 추측하는 근사 인덱싱(approximate indexing) 기반의 색인 정보를 저장하는 적어도 하나의 중간 계층(142)을 포함할 수 있다. Among the layers other than the top layer of the LSM-tree (141-143), at least one intermediate layer (142) may be included that stores index information based on approximate indexing that probabilistically estimates a physical address based on a Bloom filter.
일 실시 예에서, 논리 주소들이 희박하게(sparsely) 정렬된 각 블룸 필터 인덱스는 SSD의 물리적 섹터에 대한 포인터 없이 아주 작은 대략적인 논리 주소를 유지함으로써 정확한 인덱싱 기반의 색인 정보보다 더 작은 메모리 공간을 차지하고 빠른 인덱스 구축 시간을 제공할 수 있다. 아래에서 도 4 및 도 5를 참조하여 자세히 설명한다.In one embodiment, each bloom filter index whose logical addresses are sparsely sorted can occupy a smaller memory space and provide a faster index building time than index information based on exact indexing by maintaining a very small approximate logical address without pointers to physical sectors of the SSD. This is described in detail with reference to FIGS. 4 and 5 below.
LSM-tree(141~143) 중 최상위 계층 이외의 계층들 중 일부로서 Piece-wise linear regression(PLR) 모델에 기반하여 물리 주소를 확률적으로 추측하는 근사 인덱싱 기반의 색인 정보를 저장하는 적어도 하나의 하위 계층(143)을 포함할 수 있다.Among the layers other than the top layer of the LSM-tree (141-143), at least one lower layer (143) may be included that stores index information based on approximate indexing that probabilistically estimates a physical address based on a piece-wise linear regression (PLR) model.
일 실시 예에서, 많은 수의 논리 주소들이 조밀하게(densly) 정렬된 하위 계층(143)은 PLR 모델에 기반한 근사 인덱싱을 사용하고, 논리 주소와 물리 주소의 맵핑 관계인 <xi, yi>를 몇 개의 선형 방정식 y = ax + b로 변환하여 색인 정보로 저장할 수 있다. 아래에서 도 6 내지 도8을 참조하여 자세히 설명한다.In one embodiment, a lower layer (143) in which a large number of logical addresses are densely arranged may use approximate indexing based on the PLR model, and convert the mapping relationship between logical addresses and physical addresses, <x i , y i >, into several linear equations y = ax + b and store them as index information. This will be described in detail with reference to FIGS. 6 to 8 below.
따라서, SSD 컨트롤러(110)는 최상위 계층에서 1 회의 조회로서 논리 주소에 맵핑된 물리 주소(yi)를 획득하고, 최상위 계층 이외의 중간 계층 또는 하위 계층에서는 물리 주소(y'j, y'k)를 1 회 이상의 조회하여 논리 주소에 맵핑된 정확한 실제 물리 주소를 획득 가능할 수 있다.Accordingly, the SSD controller (110) can obtain a physical address (y i ) mapped to a logical address with one lookup in the highest layer, and can obtain an accurate actual physical address mapped to a logical address by looking up the physical address (y' j , y' k ) one or more times in an intermediate layer or lower layer other than the highest layer.
일 실시 예에서, SSD 컨트롤러(110)는 논리 주소 변환을 위해서 논리 주소에 대응하는 색인 정보가 존재하는 상기 런의 정보가 저장된 숏컷 테이블(shortcut table)(144)을 조회하고, 숏컷 테이블에서 조회된 런에서 논리 주소에 대응하는 색인 정보를 조회함으로써 물리 주소를 획득할 수 있다. 예를 들어, 모든 논리 주소에 대하여 숏컷 테이블은 가장 최근의 데이터를 가진 런에 대한 정보를 저장할 수 있다. 숏컥 테이블의 크기는 LSM-tree(141~143)에 포함된 런의 개수에 따라 다를 수 있고, 예를 들어, 트리에 32개의 런이 있는 경우 가능한 모든 실행을 찾는 데 5비트 항목으로 충분하다. 타겟 런이 선택되면 SSD 컨트롤러(110)는 해당 런에서 색인 정보를 조회할 수 있다.In one embodiment, the SSD controller (110) can obtain a physical address by querying a shortcut table (144) in which information of a run in which index information corresponding to a logical address exists for logical address conversion is stored, and by querying index information corresponding to a logical address in a run searched in the shortcut table. For example, for all logical addresses, the shortcut table can store information about a run with the most recent data. The size of the shortcut table can vary depending on the number of runs included in the LSM-tree (141 to 143), and for example, if there are 32 runs in the tree, 5-bit entries are sufficient to find all possible runs. When a target run is selected, the SSD controller (110) can query index information in the corresponding run.
일 실시 예에서, SSD 컨트롤러(110)는 각 계층에서 조회된 물리 주소(yi, y'j, y'k)를 런 청크와 상기 메모리 블록 사이의 맵핑 정보를 저장하는 정렬 테이블(sorted table)에서 조회함으로써 실제 비휘발성 메모리(130)에 저장된 데이터를 읽을 수 있다. 앞에서 설명한 것처럼, 런은 복수의 런 청크로 구성될 수 있고, 런 청크는 비휘발성 메모리(130)의 메모리 블록과 크기가 동일할 수 있다. In one embodiment, the SSD controller (110) can read data stored in the actual nonvolatile memory (130) by looking up the physical addresses (y i , y' j , y' k ) looked up in each layer in a sorted table that stores mapping information between the run chunk and the memory block. As described above, the run may be composed of a plurality of run chunks, and the run chunk may have the same size as the memory block of the nonvolatile memory (130).
LSM-tree(141~143)의 각 런은 비휘발성 메모리(130)의 물리적으로 연속적인 섹터에 대해 구축되는 것으로 가정되지만 런 크기(최소 몇 GB)로 인해 물리적으로 연속적인 섹터를 많이 할당하기 어려울 수 있다. 본 개시의 실시 예에 따른 SSD 컨트롤러(110)는 런을 여러 개의 런 청크로 분할하고 각 런 청크는 크기가 비휘발성 메모리(130)의 메모리(예를 들어, NAND) 블록과 동일하도록 설정하고, 정렬 테이블을 이용하여 각 런 청크를 비휘발성 메모리(130)의 메모리 블록에 매핑함으로써, 물리적으로 흩어져 있는 메모리 블록에 대해 연속적인 섹터처럼 동작하도록 할 수 있다. 정렬 테이블은 청크 인덱스로 인덱싱될 수 있고, 각 청크 인덱스의 각 항목 크기는 4바이트로 표현 가능하므로 전체 정렬 테이블 크기는 매우 작을 수 있다(1TB SSD 장치의 경우 2MB). 본 개시의 실시 예에 따른 SSD 컨트롤러(110)는 오프셋을 런 청크(검은 원 번호 4) 내의 오프셋과 동일하게 구성함으로써 때문에 비휘발성 메모리(130)의 메모리 블록 내에서 읽을 데이터를 쉽게 찾을 수 있다. Each run of the LSM-tree (141-143) is assumed to be built for physically consecutive sectors of the non-volatile memory (130), but it may be difficult to allocate many physically consecutive sectors due to the run size (at least several GB). The SSD controller (110) according to the embodiment of the present disclosure divides a run into several run chunks, sets each run chunk to have the same size as a memory (e.g., NAND) block of the non-volatile memory (130), and maps each run chunk to a memory block of the non-volatile memory (130) using a sort table, thereby allowing the physically scattered memory blocks to operate as consecutive sectors. The sort table can be indexed by a chunk index, and the size of each entry of each chunk index can be expressed by 4 bytes, so that the overall sort table size can be very small (2 MB for a 1 TB SSD device). The SSD controller (110) according to the embodiment of the present disclosure can easily find data to be read within a memory block of a nonvolatile memory (130) by configuring the offset to be the same as the offset within a run chunk (black circle number 4).
도 4 및 도 5를 참조하여 본 개시의 일 실시 예에 따른 SSD 컨트롤러(110)가 LSM-tree(141~143)의 중간 계층에서 블룸 필터에 기반하여 데이터 읽기 모드 또는 데이터 쓰기 모드에서 논리 주소를 물리 주소로 변환하는 방법을 설명한다. Referring to FIGS. 4 and 5, a method of converting a logical address into a physical address in a data read mode or a data write mode based on a bloom filter in an intermediate layer of an LSM-tree (141 to 143) according to an embodiment of the present disclosure is described.
종래의 DFTL의 색인 정보는 정확한 맵핑을 포함하는 두 개의 48비트 정수 <xi, yi> 페어를 저장하는 반면에, 본 발명의 실시 예에 따른 LSM-tree(141~143)의 중간 계층은 예를 들어, 비휘발성 메모리(130)의 4KB 물리적 섹터에 대한 색인 정보로서 정확한 맵핑 관계가 아닌 도 4와 같은 구성의 블룸 필터를 저장할 수 있다. While the index information of a conventional DFTL stores two 48-bit integer <x i , y i > pairs including an exact mapping, the middle layer of the LSM-tree (141 to 143) according to an embodiment of the present invention may store a bloom filter of a configuration such as FIG. 4, which is not an exact mapping relationship, as index information for a 4KB physical sector of a non-volatile memory (130), for example.
예를 들어, LSM-tree(141~143)의 중간 계층은 n 개의 물리적 섹터 y0,..., yn-1의 런에 대해서 개별 섹터에 대한 테이블에서 물리적 섹터와 동일한 개수의 블룸 필터들인 BF0, ..., BFn-1을 유지할 수 있다. For example, the middle layer of the LSM-tree (141-143) can maintain, for a run of n physical sectors y 0 ,..., y n-1 , a table of bloom filters BF 0 ,..., BF n-1 , the same number as the physical sectors.
SSD 컨트롤러(110)는 초기에 각 BFi를 0으로 설정할 수 있다. 컴팩션(compaction)에서 논리 주소 xi에 대한 데이터 200을 y20에 기록한다고 가정하고 설명한다. SSD 컨트롤러(110)는 BF20이 xi의 해시 값인 hash(200)를 저장하도록 설정할 수 있다(도 4의 검은 원 번호 1). SSD 컨트롤러(110)는 비휘발성 메모리(130)의 물리 주소 y20에 데이터를 쓰는 동안 y20에 대응하는 OOB 영역(Out-of-band area)에 정확한 논리 주소 200를 기록할 수 있다(도 4의 검은 원 번호 2). 일 실시 예에서 LSM-tree(141~143)의 중간 계층의 각 블룸 필터는 대략적인 xi를 나타내고 yi는 포함하지 않을 수 있고, 대신, 테이블의 각 블룸 필터의 위치가 비휘발성 메모리(130)의 물리 주소 yi을 나타낼 수 있다.The SSD controller (110) can initially set each BF i to 0. It is assumed and explained that
SSD 컨트롤러(110)는 데이터 읽기 모드에서 xj = 100에 대한 읽기 요청을 수신하면, 지정된 런에서 각 블룸 필터들에 대해 멤버십 테스트를 수행할 수 있다(도 4의 흰 원 번호 1). 첫 번째 블룸 필터부터 시작하여 각 블룸 필터의 값을 hash(xj)와 비교하고, 일치하는 것을 찾으면, 예를 들어 중간 계층의 색인 정보에서 최초 hash(xj)와 동일한 값이 BF9(BF9 = hash(100))인 경우 y9를 읽을 수 있다. SSD 컨트롤러(110)는 y9을 읽은 결과 y9에 저장된 논리 주소 37은 요청된 논리 주소 100과 다르므로(도 4의 흰 원 번호 2), SSD 컨트롤러(110)는 y9를 무시하고 나머지 블룸 필터들에 대한 테스트를 계속하고(도 4의 흰 원 번호 3), y10에서 올바른 색인 정보를 찾을 수 있다(도 4의 흰 원 번호 4). When the SSD controller (110) receives a read request for x j = 100 in the data read mode, it can perform a membership test on each bloom filter in the specified run (
즉, 중간 계층은 근사 인덱싱에 기반한 색인 정보를 저장함으로써 정확한 색인 정보를 획득하기 위해서 복수의 조회 과정을 거칠 수 있지만, 종래 DFTL의 캐시 미스에 비해서 전체적으로 나은 성능을 보여줄 수 있다. That is, the middle layer may go through multiple lookup processes to obtain accurate index information by storing index information based on approximate indexing, but it can show better performance overall compared to the cache miss of the conventional DFTL.
목표 FPR인 FPTT에 대해서 각 블룸 필터의 비트 수를 최소화하는 것은 메모리 용량에 도움이 될 수 있다. 최악의 경우, 조회된 논리 주소가 런의 가장 마지막 물리 섹터에 저장될 수 있고, 본 개시의 실시 예에 다른 중간 계층은 BF0부터 BFn-1까지 멤버십 테스트를 수행해야 할 수 있다. 따라서, FPRT는 아래와 같이 추정될 수 있다.Minimizing the number of bits of each bloom filter for the target FPR, FPTT, can help with memory capacity. In the worst case, the queried logical address may be stored in the last physical sector of the run, and other intermediate layers in the embodiment of the present disclosure may have to perform membership tests from BF 0 to BF n-1 . Therefore, FPR T can be estimated as follows.
만약 FPRT이 0.1이라면 n은 512이고, FPRBF(각 블룸 필터에 대한 FPR)는 2.06 x 10-4일 수 있다. 해시 함수의 개수 k가 5로 설정되면 블룸 필터의 길이 m이 최소화된다. 각 블룸 필터는 맵핑을 위해 25비트가 필요하며 이는 일반적인 맵핑 테이블의 48비트 항목보다 작다. FPRT 0.1은 10% 오버헤드를 의미하므로 채택 가능한 정도다. FPRT가 0.1이면 읽기 증폭 계수(read amplification factor: RAF=data read from flash/data read by host)은 1.1이 된다. If FPR T is 0.1, n is 512, and FPR BF (FPR for each bloom filter) can be 2.06 x 10 -4 . When the number of hash functions k is set to 5, the length m of the bloom filter is minimized. Each bloom filter requires 25 bits for mapping, which is smaller than the 48-bit entries of a typical mapping table. FPR T 0.1 means 10% overhead, which is acceptable. When FPR T is 0.1, the read amplification factor (RAF=data read from flash/data read by host) becomes 1.1.
도 5를 참조하면, 작은 후보 집합을 형성시키기 위하여 런 내부의 각 블룸 필터 사이에 가드를 삽입할 수 있다. 일 실시 예에서, 가드는 48 비트 정수일 수 있고, 후보 집합의 첫 번째 블룸 필터의 논리 주소일 수 있다. 즉, 트리의 각 런에 많은 수의 LBA가 존재하는 경우, 런의 개수 n이 증가함에 따라 Relaxed FPR(False Positive Rate)도 그에 따라 증가한다. 동일한 Relaxed FPR를 유지하려면 더 큰 DRAM을 필요로 하는 FPRBF를 줄이기 위해 큰 블룸 필터를 사용해야 하고, 더욱이 원하는 논리 주소를 찾기 위해 많은 블룸 필터들을 테스트해야 하므로 전체 블룸 필터를 조회하는 시간도 증가하는 문제를 가드를 삽입함으로써 해결할 수 있다.Referring to FIG. 5, a guard can be inserted between each bloom filter within a run in order to form a small candidate set. In one embodiment, the guard can be a 48-bit integer and can be the logical address of the first bloom filter in the candidate set. That is, when there are a large number of LBAs in each run of the tree, as the number of runs n increases, the Relaxed FPR (False Positive Rate) also increases accordingly. In order to maintain the same Relaxed FPR, a large bloom filter must be used to reduce the FPR BF , which requires a larger DRAM, and furthermore, since many bloom filters must be tested to find a desired logical address, the problem that the time for looking up the entire bloom filter also increases can be solved by inserting a guard.
도 5를 참조하면, 이진 검색을 통해 각 런에서 후보 집합을 찾는데 O(log k)의 복잡도 시간이 필요할 수 있고, k는 런의 후보 집합의 개수이다(도 4의 검은 원 번호 1 참조). 해당 집합에 대한 멤버십 테스트에는 n이 일정하기 때문에 O(1)의 복잡도 시간이 필요하다(도 4의 검은 원 번호 1 참조). 따라서, 본 개시의 실시 예에 따른 트리 조회에 대한 로그 시간 복잡도는 O(log k)를 갖는다. 그러나 실제 조회 시간의 대부분은 멤버십 테스트에 소요되므로, 캐시 라인 경계에 맞춰 메모리에 블룸 필터를 배치하여 조회 대기 시간을 최소화할 수 있다. 일 실시 예에서, 정렬을 위해 각 블룸 필터 크기를 8비트로 조정하고 블룸 필터의 수 n= 26으로 조정할 수 있다. 64 byte 캐시 라인 내부에 48비트 가드를 포함하여 각각 256비트(= 32 byte)인 후보 집합을 압축할 수 있다. 약간의 메모리 낭비(8.7비트 대 9.8비트)에도 불구하고 이러한 메모리 레이아웃을 사용하면 추가 메모리 참조 없이 이진 검색을 수행하는 동안 후보 집합을 미리 가져올 수 있는 효과가 있다. 또한, 모든 블룸 필터가 64바이트 정수로 패킹되기 때문에 조회하는 모든 블룸 필터와 입력 논리 주소를 몇 번의 비트 와이즈 연산으로 한 번에 비교할 수 있는 효과가 있다.Referring to FIG. 5, finding a candidate set in each run through binary search may require O(log k) complexity time, where k is the number of candidate sets in the run (see
도 6을 참조하여 본 개시의 일 실시 예에 따른 SSD 컨트롤러(110)가 LSM-tree(141~143)의 하위 계층에서 PLR 모델에 기반하여 데이터 읽기 모드 또는 데이터 쓰기 모드에서 논리 주소를 물리 주소로 변환하는 방법을 설명한다. Referring to FIG. 6, a method for an SSD controller (110) according to an embodiment of the present disclosure to convert a logical address into a physical address in a data read mode or a data write mode based on a PLR model in a lower layer of an LSM-tree (141 to 143) is described.
SSD 컨트롤러(110)는 다수의 논리 주소와 물리 주소 사이의 맵핑 관계들인 <xi, yi >에 대해 PLR 모델에 기반해 선형 함수 y'= ax + b로 모델링된 선분을 구성할 수 있다. PLR 모델은 실제 물리 주소로부터 경계 오차 델타() 내인 [y - 델타, y + 델타]에 존재하는 예측된 물리 주소의 위치인 y'를 반환할 수 있다. 예를 들어, 도 5는 LSM-tree(141~143)의 하위 계층에서 4개의 맵핑 항목 m1 = (x1=2, y1=1), m2=(4, 2), m3=(6, 3) 및 m4=(7, 4)들에 대하여 y'=0.6 (x-2) +1 이고 델타 1인 선형 함수에 기반해 모델링된 것을 보여준다. 하위 계층은 x=4인 쿼리에 대해 y'=2.2를 물리 주소로서 반환할 수 있다. 앞에서 설명한 중간 계층의 블룸 필터 와 마찬가지로 하위 계층도 물리 주소를 확률적으로 추측하는 근사 인덱싱에 기반하므로 시행 착오를 겪을 수 있지만, 시행 착오의 크기는 데이터가 존재하는 지역적 특성이 아닌 경계 오차 델타에 의해 결정된다. 따라서, 종래 FTL 기술의 지역적 특성에 따른 읽기 지연 속도의 증가로 인한 일관되지 않은 응답 특성을 배제할 수 있다.The SSD controller (110) can construct a line segment modeled as a linear function y'= ax + b based on the PLR model for mapping relationships between a plurality of logical addresses and physical addresses, <x i , y i >. The PLR model can calculate a boundary error delta ( ) can return y', which is the location of the predicted physical address existing in [y - delta, y + delta]. For example, Fig. 5 shows that in the lower layer of the LSM-tree (141-143), four mapping entries m 1 = (x 1 =2, y 1 =1), m 2 =(4, 2), m 3 =(6, 3), and m 4 =(7, 4) are modeled based on a linear function with y'=0.6(x-2)+1 and
SSD 컨트롤러(110)의 PLR 모델 구성에 대하여 도 5를 참조하여 설명한다.The PLR model configuration of the SSD controller (110) is described with reference to FIG. 5.
특정 런에 존재하는 복수의 논리 주소와 물리 주소의 맵핑 관계(항목)(mi=(xi, yi))의 집합을 M = {m1, m2, ..., mn} 이라고 가정하면, m(i, j) = {mi, mi+1, ..., mj} 라고 표현할 수 있다. 집합 M에 대해서 미리 설정된 목표 경계 오차 델타를 전제하면, SSD 컨트롤러(110)는 M을 복수의 조각들로 분할할 수 있고, 각 조각 m(i, j)에 속하는 mh= (xh, yh)에 대해 선형 함수 가 를 만족시키는 라인 세그먼트로 표현되도록 설정할 수 있다. 따라서, SSD 컨트롤러(110)는 집합 M을 복수의 선분 조각들로 표현할 수 있고, m(i, j)에 대한 선형 함수는 아래와 같이 <수학식 2>로 표현될 수 있다.Let M = {m 1 , m 2 , ..., m n } be the set of mapping relationships (items) (m i = (x i , y i )) of multiple logical addresses and physical addresses existing in a particular run, then m (i, j) = {m i , m i+1 , ..., m j } Assuming a preset target boundary error delta for a set M, the SSD controller (110) can divide M into multiple pieces, and a linear function for m h = (x h , y h ) belonging to each piece m (i, j) go can be set to be expressed as a line segment satisfying m (i, j). Accordingly, the SSD controller (110) can express the set M as a plurality of line segment pieces, and the linear function for m (i, j) can be expressed as <
여기서, xi, yi는 첫 번째 페어 mi에 기반하고 선분 조각에서 m(i, j)가 시작하는 베이스 포인트로서 작용할 수 있다. a(i, j)는 m(i, j)를 위한 선분 조각의 기울기이고 b(i, j)는 yi로부터의 선분의 상대 절편이다.Here, x i , y i can serve as the base point from which the line segment m (i, j) starts based on the first pair m i . a (i, j) is the slope of the line segment for m (i, j) and b (i, j) is the relative intercept of the line segment from y i .
도 6과 같은 7개의 페어가 존재하는 경우 2개의 선분 족가이 존재할 수 있고, m1=(2, 1) 및 m5=(43, 5)가 각 선분의 베이스 포인트일 수 있다. 따라서, m(1, 4)에 대하여 기울기 a(1, 4)는 0.6이고 상대 절편 b(1, 4)은 0이다. 또한, m(5, 7)에 대해서 기울기 a(5, 7)는 0.33이고 상대 절편 b(5, 7)은 0.5이다.When there are seven pairs such as in Fig. 6, two families of line segments can exist, and m 1 = (2, 1) and m 5 = (43, 5) can be the base points of each line segment. Therefore, for m (1, 4) , the slope a (1, 4) is 0.6 and the relative intercept b (1, 4) is 0. Also, for m (5, 7), the slope a (5, 7) is 0.33 and the relative intercept b (5, 7) is 0.5.
일 실시 예에서, LSM-tree(141~143)의 하위 계층은 4개의 파라미터들(a(i, j), b(i, j), xi, yi)를 램 버퍼(140)에 저장할 수 있다. SSD 컨트롤러(110)는 램 버퍼(140)에서 차지하는 저장 공간을 작게 하기 위하여 복수의 맵핑 관계들을 표현하는 복수의 선분 조각들 개수가 최소가 되도록 PLR 모델을 구성할 수 있다.In one embodiment, the lower layer of the LSM-tree (141 to 143) may store four parameters (a (i, j) , b (i, j) , x i , y i ) in the RAM buffer (140). The SSD controller (110) may configure the PLR model so that the number of multiple line segments expressing multiple mapping relationships is minimized in order to reduce the storage space occupied in the RAM buffer (140).
일 실시 예에서, SSD 컨트롤러(110)는 <수학식 2>의 모델을 저장하는 공간을 감소시키기 위하여 델타 인코딩을 사용할 수 있다. 예를 들어, 두 개의 연속된 선분 조각들 m(i, j), m(k, l) (i<j<k<l)에 대하여, SSD 컨트롤러(110)는 m(k, l)의 경우 오직 그 차이인 xk-xj와 yk-yj만을 저장할 수도 있다. 이 경우, SSD 컨트롤러(110)는 논리 주소에 적합한 선분 조각을 발견하기 위해서, 델타 디코딩을 수행하면서 선분 조각들을 스캔할 수 있다. 오버헤드를 감소시키기 위하여, SSD 컨트롤러(110)는 압축되지 않은 페어를 피벗 페어로서 저장할 수 있다. SSD 컨트롤러(110)는 첫 번째로 정렬될 피벗 페어들을 포함하는 피벗 테이블에 대하여 바이너리 검색을 수행하고 후보 선분들을 선택한 후, 후보 선분들에 대해서 나머지 검색을 수행할 수 있다.In one embodiment, the SSD controller (110) may use delta encoding to reduce the space for storing the model of <
도 7을 참조하여 본 개시의 일 실시 예에 따른 SSD 컨트롤러(110)가 LSM-tree(141~143)의 중간 계층 및 하위 계층의 트리 구성을 메모리 용량 점유를 최소화하기 위한 최적화 방법을 설명한다. 또한, 또한 쓰기 증폭 계수(write amplification factor, WAF= data written to flash/ data written by host)와 관련된 트리 구성의 영향도 설명한다. Referring to FIG. 7, an SSD controller (110) according to an embodiment of the present disclosure describes a method for optimizing the tree configuration of the middle and lower layers of an LSM-tree (141 to 143) to minimize memory capacity occupancy. In addition, the influence of the tree configuration on the write amplification factor (WAF = data written to flash/data written by host) is also described.
본 개시의 일 실시 예에 따른, SSD 컨트롤러(110)의 램 버퍼(140) 메모리 사용량을 결정하는 네 가지 주요 구성 요소는, (i) 램 버퍼(140)에 저장된 최상위 계층 L0의 정확한 인덱스, (ii) 원하는 런을 가리키는 숏컷 테이블, (iii) 블룸 필터 인덱스, (iv) PLR 모델일 수 있다. 메모리 사용량은 |L0| 및 T 두 개의 매개 변수에 의해 제어되는 트리 구성에 따라 달라지고, |L0|은 최상위 계층의 크기이고 T는 인접하는 계층 Li와 Li+1 사이의 크기 배수이다. |L0| 및 T 에 따른 트리 구성의 변화를 고려하면, LSM-tree(141~143)의 계측 |Li|의 크기가 최상위 계층 |L0|으로부터 T 배 만큼 증가하고, 따라서 (0<i<h)일 수 있다(i는 레벨 번호이고 h는 트리 높이). 따라서, 높이 h는 아래 <수학식 3>와 같이 정의될 수 있다.According to one embodiment of the present disclosure, four major components that determine the memory usage of the RAM buffer (140) of the SSD controller (110) may be (i) the exact index of the top layer L0 stored in the RAM buffer (140), (ii) a shortcut table pointing to a desired run, (iii) a bloom filter index, and (iv) a PLR model. The memory usage varies depending on the tree configuration controlled by two parameters, |L 0 | and T, where |L 0 | is the size of the top layer and T is a multiple of the size between adjacent layers L i and L i+1 . Considering the change in the tree configuration according to |L 0 | and T, the size of the metric |L i | of the LSM-tree (141-143) increases by T times from the top layer |L 0 |, and therefore, (0<i<h) can be (i is the level number and h is the tree height). Therefore, the height h can be defined as in <
여기에서, C는 SSD 장치의 용량으로서 고정된 수이고, |L0| 및 T가 h를 결정한다. 따라서, LSM-tree(141~143) 높이는 WAF에 큰 영향을 미친다. 계층화된 LSM-tree(141~143)에서 T는 또한 각 계층의 런의 개수를 표현할 수 있다. 각 계층의 각 런의 크기(|Ri|)는 동일하고, 따라서, 런의 크기는 <수학식 4>과 같이 정의될 수 있다.Here, C is a fixed number as the capacity of the SSD device, and |L0| and T determine h. Therefore, the height of the LSM-tree (141~143) has a great influence on the WAF. In the hierarchical LSM-tree (141~143), T can also express the number of runs in each layer. The size of each run (|R i |) in each layer is the same, and therefore, the size of the run can be defined as in <
<수학식 4>는 Ri 가 T배수만큼 증가한다는 것을 의미하므로, 레벨이 낮을수록 런의 크기가 커질 수 있다. 런이 커질수록(런이 상대적으로 하위 계층에 속하므로) 매핑 페어들이 런에서 더 조밀하게 정렬될 가능성이 높다. 따라서 PLR을 사용하는 것이 좀더 유리할 수 있다. 블룸 필터에 저장되는 색인 정보의 크기는 런의 크기가 아니라 목표로 하는 FPR과 런 내부의 가드 밀도에 의해 결정되기 때문에, 블룸 필터에 기반한 색인 정보는 런 크기에 관계없이 각 매핑 항목에 대해 동일한 비트 수를 필요로 한다. <
도 7(a)를 참조하면, 런 크기 변경에 따른 매핑 항목당 비트 수의 변화를 확인할 수 있다(런 유닛 크기는 10GB이고 SSD장치의 총 용량은 1TB인 경우). 소규모 런의 경우 블룸 필터에 기반한 인덱싱이 더 좋지만 런의 크기가 커질수록 PLR 모델에 기반한(OURS로 표시) 인덱싱이 더 나은 메모리 효율성을 보여주는 것을 확인할 수 있다. 또한 종래의 PLR(PLR(ORIG)로 표시됨)과 비교한 경우에도 본 개시의 실시 예에 따른 블룸 필터 기반의 인덱싱 또는 PLR 모델에 기반한 인덱싱이 메모리 최적화가 더욱 우수한 것을 확인할 수 있다.Referring to Fig. 7(a), we can see the change in the number of bits per mapping item according to the change in the run size (when the run unit size is 10 GB and the total capacity of the SSD device is 1 TB). For small runs, the indexing based on the bloom filter is better, but as the run size increases, we can see that the indexing based on the PLR model (denoted as OURS) shows better memory efficiency. In addition, when compared with the conventional PLR (denoted as PLR (ORIG)), we can see that the indexing based on the bloom filter or the indexing based on the PLR model according to the embodiment of the present disclosure is better in memory optimization.
<수학식 4>와 도 7(a)에 기반하면, 맵핑할 동일한 개수의 LBA가 정해지면(SSD 용량에 따라 결정됨) 메모리 효율적인 PLR 모델에서 더 많은 런을 관리할 가능성이 높아지지므로, 평균 런의 크기인 Ravg 을 늘리는 것이 좋을 수 있다. Ravg 은 SSD의 용량 C를 트리의 런 개수 Nrun 로 나누어서 획득할 수 있다. Nrun = h T이므로, Ravg 는 <수학식 5>에 따라 정의될 수 있다.Based on <
<수학식 5>는 런의 평균 크기가 T를 감소시키거나 |L0|을 증가시킴으로써 증가될 수 있음을 보여준다.<Equation 5> shows that the average size of a run can be increased by decreasing T or increasing |L 0 |.
도 7(b)는 본 개시의 실시 예에 따른 SSD 컨트롤러(110)의 LSM-tree(141~143)에 대해 각 섹터 수준에서 |L0| 및 T의 변화에 따른 메모리 사용 비율을 보여준다. 각 계층 마다 블룸 필터 또는 PLR 모델에 기반한 인덱싱이 사용되었다. 도 7(b)에서 두 가지 사실을 확인할 수 있는데, 첫 째는 메모리 요구량이 주로 T에 의해 결정된다는 것과, L0의 크기는 메모리 점유량에 무시할 만한 영향을 미친다는 것이다. 따라서, |L0|을 증가시킴으로써, Nrun 을 감소시킬 수 있고 그 결과 Ravg를 증가시킬 수 있다. 하지만, Nrun와 Ravg는 |L0|에 따라 로가리듬적으로 변화하므로 |L0|가 매우 크지 않는 한 그 영향은 크지 않을 수 있다. FIG. 7(b) shows the memory usage ratio according to the change of |L 0 | and T at the sector level for the LSM-tree (141 to 143) of the SSD controller (110) according to the embodiment of the present disclosure. Indexing based on the Bloom filter or the PLR model is used for each layer. Two facts can be confirmed from FIG. 7(b): first, the memory requirement is mainly determined by T, and second, the size of L 0 has a negligible effect on the memory occupancy. Therefore, by increasing |L 0 |, N run can be reduced, and consequently R avg can be increased. However, since N run and R avg change logarithmically with |L 0 |, the effect may not be significant unless |L 0 | is very large.
<수학식 3>에 따르면, T와 L0이 작아질수록 LSM-tree(141~143)는 높아질 수 있으므로, WAF는 커질 수 있다. 도 7(c)는 도 7(b)의 T와 L0 조합에 대한 LSM-tree(141~143)의 WAF 변화를 보여주고, 메모리와 WAF 사이에는 트레이드 오프가 있음을 확인할 수 있다. 따라서, 읽기 전용 모드의 경우에 쓰기 효율은 그 만큼 중요하지 않으므로, 작은 T와 L0이 좀 더 나을 수 있다. 반대로, 대용량 쓰기 모드에서는 더 낮은 WAF를 위해서 메모리를 희생해야 한다. 대부분의 경우를 위해서 LSM-tree(141~143)의 균형을 달성해야 하고, T=14 및 |L0|=5.4GB에서 LSM-tree(141~143)의 메모리 점유율은 20.3% 였고, WAF 또한 받아들일 수 있는 수준인 3을 확인할 수 있다. 이 경우, LSM-tree(141~143)의 계층은 3개로 이루어지고 최상위 계층은 정확한 인덱싱에 기반하고, 중간 계층은 블룸 필터에 기반하고, 세번째 하위 계층은 PLR 모델에 기반할 수 있다. According to <
트리의 구성이 결정되면, FPR을 변경시키면서 WAF를 미세 조정할 수 있다. 도 7(d)는 FPR의 변화에 따른 메모리 사용량의 변화를 보여준다.Once the tree configuration is determined, the WAF can be fine-tuned by changing the FPR. Figure 7(d) shows the change in memory usage according to the change in FPR.
도 8을 참조하여 본 개시의 일 실시 예에 따른 SSD 컨트롤러(110)의 성능을 종래의 기술과 비교한 결과를 설명한다.Referring to FIG. 8, the results of comparing the performance of an SSD controller (110) according to one embodiment of the present disclosure with that of a conventional technology are described.
도 8의 SECTOR는 섹터 레벨 FTL로서 모든 맵핑 관계를 정확한 인덱싱에 기반하여 DRAM에서 수행하는 방법이고, 종래의 DFTL, SFTL 및 TPFTL에 대비한 본 발명의 실시 예에 따른 APX-FTL(APX)의 성능을 확인할 수 있다. 도 8은 random writes (RW), sequential reads (SR), random reads (RR), 및 sequential writes (SW)의 작업에 대한 성능 실험 결과를 보여준다. 도 8(a)를 참조하면, 모든 작업량에 대해서 SECTOR이 가장 좋은 성능을 보여주지만, SECTOR는 본질상 거대한 테이블 용량을 필요로 하는 문제점을 그대로 가지고 있다. 본 개시의 실시 예에 따른 APX-FTL는 SR 작업에 대해서 다른 종래의 방법들과 유사한 성능을 가지면서도 RR 즉, 랜덤 읽기 모드에서는 SECTOR와 유사하고, 다른 종래 방법들보다 우월하게 높은 성능을 가짐을 확인할 수 있다. 따라서, 본 개시의 실시 예에 따른 APX-FTL이 지역성과 무관하게 데이터 읽기에서 일관된 응답 성능을 보여주는 것을 확인할 수 있다. SECTOR of FIG. 8 is a sector-level FTL that performs all mapping relationships in DRAM based on accurate indexing, and the performance of APX-FTL (APX) according to an embodiment of the present invention can be verified compared to conventional DFTL, SFTL, and TPFTL. FIG. 8 shows the results of a performance experiment for operations of random writes (RW), sequential reads (SR), random reads (RR), and sequential writes (SW). Referring to FIG. 8(a), SECTOR shows the best performance for all workloads, but SECTOR inherently has a problem of requiring a huge table capacity. It can be verified that APX-FTL according to an embodiment of the present disclosure has similar performance to other conventional methods for SR operations, and similar to SECTOR in RR, i.e., random read mode, and superior performance than other conventional methods. Therefore, it can be verified that APX-FTL according to an embodiment of the present disclosure shows consistent response performance in data read regardless of locality.
도 8(b)는 읽기 지연의 CDF(Cumulative Distribution Function) 성능 비교 결과를 보여준다. 도 8(a)와 마찬가지로 RR 즉, 랜덤 읽기 모드에서는 SECTOR와 유사하고, 다른 종래 방법들보다 우월하게 높은 성능을 가짐을 확인할 수 있다. 요구 기반의 종래 방법들과 비교해서 평균 지연이 35% 짧았고 99번째 읽기 지연에서는 30% 더 짧았다. Fig. 8(b) shows the CDF(Cumulative Distribution Function) performance comparison results of read delay. As with Fig. 8(a), it can be confirmed that in RR, i.e., random read mode, it is similar to SECTOR and has superior performance compared to other conventional methods. Compared to demand-based conventional methods, the average delay was 35% shorter and the 99th read delay was 30% shorter.
도 9은 OLTP, Varmali 및 Webproxy의 파일벤치 작업 부하들을 수용한 실제적인 작업 환경에서의 성능 비교 결과를 보여준다. 도 9(a)의 읽기 지연의 CDF 성능은 본 개시의 실시 예에 따른 APX-FTL이 다른 요구 기반 FTL 방법에 비해서 우월하고 정확한 인덱싱에 기반한 SECTOR와 유사한 결과를 보여줌을 확인할 수 있다. 도 9(b)의 결과에서도 높은 성능 결과를 확인할 수 있고, 도 10의 미스(miss) 비율 또한, 본 개시의 실시 예에 따른 APX-FTL의 높은 성능을 확인할 수 있다.Fig. 9 shows the results of performance comparison in a real working environment accommodating filebench workloads of OLTP, Varmali and Webproxy. The CDF performance of read delay in Fig. 9(a) confirms that APX-FTL according to the embodiment of the present disclosure is superior to other demand-based FTL methods and shows similar results to SECTOR based on accurate indexing. The results in Fig. 9(b) also confirm the high performance results, and the miss ratio in Fig. 10 also confirms the high performance of APX-FTL according to the embodiment of the present disclosure.
도 11 및 도 12를 참조하여 본 개시의 일 실시 예에 따른 SSD 장치의 동작 방법을 설명한다. 앞에서 설명한 부분과 중복되는 부분은 자세한 설명을 생략한다.An operation method of an SSD device according to an embodiment of the present disclosure will be described with reference to FIGS. 11 and 12. Parts that overlap with those described above will be omitted for detailed description.
본 개시의 일 실시 예에 따른 SSD 장치의 동작 방법은 호스트와 연결하는 인터페이스 로직, 데이터가 저장되는 비휘발성 메모리 및 비휘발성 메모리를 제어하는 컨트롤러를 포함하는 SSD 장치의 동작 방법으로서 컨트롤러가 호스트가 전송한 논리 주소를 제공 받는 단계(S110), 컨트롤러가 제공 받은 논리 주소를 계층적 구조인 LSM-tree로 구성된 복수의 계층에 저장된 색인 정보에 기반하여 비휘발성 메모리에 대한 물리 주소로 변환하는 단계(S120) 및 컨트롤러가 물리 주소에 기반하여 비휘발성 메모리에 액세스하는 단계(S130)를 포함한다. LSM-tree의 복수의 계층 중 적어도 두 개의 계층은 서로 다른 방식으로 논리 주소 및 논리 주소에 대응하는 물리 주소의 맵핑에 기반한 색인 정보를 저장한다.According to an embodiment of the present disclosure, a method for operating an SSD device includes an interface logic connected to a host, a non-volatile memory storing data, and a controller controlling the non-volatile memory, the method including a step (S110) in which the controller receives a logical address transmitted by the host, a step (S120) in which the controller converts the received logical address into a physical address for the non-volatile memory based on index information stored in a plurality of layers configured as an LSM-tree having a hierarchical structure, and a step (S130) in which the controller accesses the non-volatile memory based on the physical address. At least two layers among the plurality of layers of the LSM-tree store index information based on a mapping of a logical address and a physical address corresponding to the logical address in different ways.
LSM-tree의 복수의 계층은 다른 계층들과 달리 논리 주소와 해당 논리 주소에 정확히 맵핑되는 물리 주소의 색인 정보를 저장하는 최상위 계층 (L0)과 논리 주소에 맵핑되는 물리 주소를 추측 방식으로 추정하는 색인 정보를 저장하는 그 외 계층(L1~Lh-1)인 중간 계층 및 하위 계층으로 구성될 수 있다.The multiple layers of the LSM-tree can be composed of the top layer (L0) that stores index information of a logical address and the physical address that is exactly mapped to the logical address, and the middle and lower layers (L1 to Lh-1) that store index information that guesses the physical address mapped to the logical address.
일 실시 예에서, 논리 주소를 물리 주소로 변환하는 단계(S120)는 컨트롤러가 LSM-tree의 복수의 계층 중 논리 주소와 상기 논리 주소에 맵핑되는 상기 물리 주소를 페어 형태의 색인 정보로서 저장하는 최상위 계층을 조회하는 단계(S122), 또는 컨트롤러가 논리 주소에 맵핑되는 물리 주소를 추측 방식으로 추정하는 색인 정보를 저장하는 최상위 계층 이외의 계층들을 조회하는 단계(S123, S124)를 포함할 수 있다.In one embodiment, the step (S120) of converting a logical address into a physical address may include a step (S122) of the controller querying a top layer among multiple layers of an LSM-tree that stores a logical address and a physical address mapped to the logical address as index information in the form of a pair, or a step (S123, S124) of the controller querying layers other than the top layer that store index information that estimates a physical address mapped to the logical address in a guessing manner.
일 실시 예에서, 컨트롤러가 논리 주소에 맵핑되는 물리 주소를 추측 방식으로 추정하는 색인 정보를 저장하는 다른 계층들을 조회할 때, 블룸 필터에 기반하여 물리 주소를 확률적으로 추측하는 근사 인덱싱 기반의 색인 정보를 저장하는 적어도 하나의 중간 계층을 조회하는 단계(S123), 또는 컨트롤러가 PLR 모델에 기반하여 물리 주소를 확률적으로 추측하는 근사 인덱싱 기반의 색인 정보를 저장하는 적어도 하나의 하위 계층을 조회하는 단계(S124)를 포함할 수 있다.In one embodiment, when the controller queries other layers storing index information that guesses a physical address mapped to a logical address in a speculative manner, the method may include a step (S123) of querying at least one middle layer storing index information based on approximate indexing that probabilistically guesses a physical address based on a bloom filter, or a step (S124) of querying at least one lower layer storing index information based on approximate indexing that probabilistically guesses a physical address based on a PLR model.
일 실시 예에서 컨트롤러는 각 계층의 색인 정보를 조회하기 전에 색인 정보가 저장된 런을 특정하기 위해서 논리 주소에 대응하는 색인 정보가 존재하는 런의 정보가 저장된 숏컷 테이블을 조회하는 단계(S121)를 선택적으로 포함할 수 있고, 숏컷 테이블에서 조회된 런에 대해서 논리 주소에 대응하는 색인 정보를 조회할 수 있다.In one embodiment, the controller may optionally include a step (S121) of searching a shortcut table storing information on a run in which index information corresponding to a logical address exists to specify a run in which index information is stored before searching for index information of each layer, and may search for index information corresponding to a logical address for the run searched in the shortcut table.
일 실시 예에서 컨트롤러는 런 청크와 비휘발성 메모리의 메모리 블록 사이의 맵핑 정보를 저장하는 정렬 테이블에 기반하여, 런에서 조회된 색인 정보에 대응하는 물리 주소를 조회하는 단계(S125)를 더 포함할 수 있다. 런 청크는 비휘발성 메모리의 메모리 블록과 크기가 동일할 수 있고, 따라서 물리적으로 흩어져 있는 메모리 블록에 대해 연속적인 섹터처럼 동작하도록 할 수 있다.In one embodiment, the controller may further include a step (S125) of searching for a physical address corresponding to index information searched in the run based on a sort table storing mapping information between a run chunk and a memory block of a non-volatile memory. The run chunk may have the same size as a memory block of the non-volatile memory, and thus may operate as a continuous sector for physically scattered memory blocks.
앞서 설명한 본 개시의 실시 예들은 SSD의 컨트롤러에서 구현되는 것을 실시 예로 설명하였지만, 호스트에서 논리 주소의 변환 컴포넌트로서 구현 가능함을 배제하지 않는다.Although the embodiments of the present disclosure described above have been described as being implemented in a controller of an SSD, it does not exclude that they may be implemented as a conversion component of a logical address in a host.
전술한 본 개시는, 프로그램이 기록된 매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 매체는, 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 매체의 예로는, HDD(Hard Disk Drive), SSD(Solid State Disk), SDD(Silicon Disk Drive), ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등이 있다. 또한, 상기 컴퓨터는 각 장치의 프로세서를 포함할 수도 있다.The above-described present disclosure can be implemented as a computer-readable code on a medium in which a program is recorded. The computer-readable medium includes all kinds of recording devices that store data that can be read by a computer system. Examples of the computer-readable medium include a hard disk drive (HDD), a solid state disk (SSD), a silicon disk drive (SDD), a ROM, a RAM, a CD-ROM, a magnetic tape, a floppy disk, an optical data storage device, and the like. In addition, the computer may include a processor of each device.
한편, 상기 프로그램은 본 개시를 위하여 특별히 설계되고 구성된 것이거나 컴퓨터 소프트웨어 분야의 통상의 기술자에게 공지되어 사용 가능한 것일 수 있다. 프로그램의 예에는, 컴파일러에 의하여 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용하여 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함될 수 있다.Meanwhile, the above program may be specially designed and configured for the present disclosure or may be known and available to those skilled in the art of computer software. Examples of the program may include not only machine language codes such as those produced by a compiler, but also high-level language codes that can be executed by a computer using an interpreter or the like.
본 개시의 명세서(특히 특허청구범위에서)에서 "상기"의 용어 및 이와 유사한 지시 용어의 사용은 단수 및 복수 모두에 해당하는 것일 수 있다. 또한, 본 개시에서 범위(range)를 기재한 경우 상기 범위에 속하는 개별적인 값을 적용한 발명을 포함하는 것으로서(이에 반하는 기재가 없다면), 발명의 상세한 설명에 상기 범위를 구성하는 각 개별적인 값을 기재한 것과 같다. The use of the term "above" and similar referential terms in the specification of this disclosure (especially in the claims) may refer to both the singular and the plural. In addition, when a range is described in this disclosure, it is intended that the invention be applied to individual values falling within the range (unless otherwise stated), and it is the same as describing each individual value constituting the range in the detailed description of the invention.
본 개시에 따른 방법을 구성하는 단계들에 대하여 명백하게 순서를 기재하거나 반하는 기재가 없다면, 상기 단계들은 적당한 순서로 행해질 수 있다. 반드시 상기 단계들의 기재 순서에 따라 본 개시가 한정되는 것은 아니다. 본 개시에서 모든 예들 또는 예시적인 용어(예들 들어, 등등)의 사용은 단순히 본 개시를 상세히 설명하기 위한 것으로서 특허청구범위에 의해 한정되지 않는 이상 상기 예들 또는 예시적인 용어로 인해 본 개시의 범위가 한정되는 것은 아니다. 또한, 통상의 기술자는 다양한 수정, 조합 및 변경이 부가된 특허청구범위 또는 그 균등물의 범주 내에서 설계 조건 및 인자(factor)에 따라 구성될 수 있음을 알 수 있다.Unless there is an explicit description of the order or the contrary for the steps constituting the method according to the present disclosure, the steps can be performed in any suitable order. The present disclosure is not necessarily limited by the description order of the steps. The use of all examples or exemplary terms (e.g., etc.) in this disclosure is merely for the purpose of describing the present disclosure in detail and the scope of the present disclosure is not limited by the examples or exemplary terms unless limited by the claims. In addition, those skilled in the art will appreciate that various modifications, combinations, and changes can be configured according to design conditions and factors within the scope of the appended claims or their equivalents.
따라서, 본 개시의 사상은 상기 설명된 실시 예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 또는 이로부터 등가적으로 변경된 모든 범위는 본 개시의 사상의 범주에 속한다고 할 것이다.Therefore, the spirit of the present disclosure should not be limited to the embodiments described above, and not only the scope of the patent claims described below but also all scopes equivalent to or equivalently modified from the scope of the patent claims are included in the scope of the spirit of the present disclosure.
100: SSD 장치
200: 호스트
141: 최상위 계층
142: 중간 계층
143: 하위 계층
144: 숏컷 테이블
145: 정렬 테이블100: SSD device
200: Host
141: Top layer
142: Middle class
143: Lower class
144: Shortcut Table
145: Sorting Table
Claims (20)
데이터가 저장되는 비휘발성 메모리; 및
상기 비휘발성 메모리를 제어하는 컨트롤러를 포함하고,
상기 컨트롤러는 상기 호스트가 제공한 논리 주소를 상기 비휘발성 메모리에 대한 물리 주소로 변환하고, 상기 물리 주소에 기반하여 상기 비휘발성 메모리에 액세스하고,
상기 컨트롤러는 계층적 구조인 LSM-tree(log-structured merge tree)로 구성된 복수의 계층에 저장된 색인(indexing) 정보에 기반하여 상기 논리 주소를 상기 물리 주소로 변환하고,
상기 LSM-tree의 복수의 상기 계층 중 적어도 두 개의 상기 계층은 서로 다른 방식으로 상기 논리 주소 및 상기 논리 주소에 대응하는 상기 물리 주소의 맵핑에 기반한 상기 색인 정보를 저장하는,
SSD(Solid State Drive) 장치.
Interface logic that connects to the host;
Non-volatile memory where data is stored; and
A controller comprising: a controller controlling the non-volatile memory;
The controller converts a logical address provided by the host into a physical address for the non-volatile memory, and accesses the non-volatile memory based on the physical address.
The above controller converts the logical address into the physical address based on indexing information stored in multiple layers consisting of a hierarchical structure, LSM-tree (log-structured merge tree), and
At least two of the above layers among the plurality of said layers of the LSM-tree store the index information based on the mapping of the logical address and the physical address corresponding to the logical address in different ways.
Solid state drive (SSD) device.
상기 LSM-tree의 복수의 상기 계층 중 최상위 계층은 상기 논리 주소와 상기 논리 주소에 맵핑되는 상기 물리 주소를 상기 색인 정보로서 저장하고, 상기 최상위 계층 이외의 계층들은 상기 논리 주소에 맵핑되는 상기 물리 주소를 추측 방식으로 추정하는 상기 색인 정보를 저장하는,
SSD(Solid State Drive) 장치.
In the first paragraph,
Among the multiple layers of the LSM-tree, the top layer stores the logical address and the physical address mapped to the logical address as the index information, and layers other than the top layer store the index information that estimates the physical address mapped to the logical address in a guessing manner.
Solid state drive (SSD) device.
상기 최상위 계층 이외의 계층들은,
블룸 필터(Bloom filter)에 기반하여 상기 물리 주소를 확률적으로 추측하는 근사 인덱싱(approximate indexing) 기반의 상기 색인 정보를 저장하는 적어도 하나의 중간 계층; 및
Piece-wise linear regression(PLR) 모델에 기반하여 상기 물리 주소를 확률적으로 추측하는 근사 인덱싱 기반의 상기 색인 정보를 저장하는 적어도 하나의 하위 계층으로 구성되는,
SSD(Solid State Drive) 장치.
In the second paragraph,
Layers other than the top layer above,
At least one intermediate layer storing the index information based on approximate indexing that probabilistically guesses the physical address based on a bloom filter; and
Consisting of at least one lower layer storing the index information based on approximate indexing that probabilistically estimates the physical address based on a piece-wise linear regression (PLR) model,
Solid state drive (SSD) device.
상기 컨트롤러는,
상기 최상위 계층에서 1 회의 조회로서 상기 논리 주소에 맵핑된 상기 물리 주소를 획득하고,
상기 최상위 계층 이외의 상기 계층에서 적어도 1 회의 조회로서 상기 논리 주소에 맵핑된 상기 물리 주소를 획득 가능한,
SSD(Solid State Drive) 장치.
In the second paragraph,
The above controller,
Obtaining the physical address mapped to the logical address as a single lookup in the uppermost layer,
The physical address mapped to the logical address can be obtained by at least one lookup in the layer other than the uppermost layer.
Solid state drive (SSD) device.
상기 중간 계층은 상기 논리 주소의 해시(hash) 값을 저장하고,
상기 컨트롤러는 상기 중간 계층에서 제1 논리 주소에 대응하는 제1 물리 주소를 조회하는 경우, 상기 컨트롤러는 상기 중간 계층의 상기 색인 정보에 기반하여 상기 제1 논리 주소의 해시 값과 동일한 해시 값을 갖는 블룸 필터에 대응하는 제1 추정 물리 주소를 획득하는,
SSD(Solid State Drive) 장치.
In the third paragraph,
The above intermediate layer stores the hash value of the above logical address,
When the controller searches for a first physical address corresponding to a first logical address in the intermediate layer, the controller obtains a first estimated physical address corresponding to a bloom filter having a hash value identical to a hash value of the first logical address based on the index information of the intermediate layer.
Solid state drive (SSD) device.
상기 컨트롤러는 쓰기 모드에서 상기 중간 계층에 제1 논리 주소와 상기 제1 논리 주소에 대응하는 제1 물리 주소의 맵핑에 기반한 상기 색인 정보를 저장하는 경우,
상기 제1 논리 주소에 맵핑될 상기 제1 물리 주소에 대응하는 블룸 필터에 상기 제1 논리 주소의 해시 값을 저장하고, 상기 제1 물리 주소에 대응하는 OOB 영역(Out-of-band area)에 상기 제1 논리 주소를 저장하고, 상기 제1 물리 주소에 데이터를 저장하는,
SSD(Solid State Drive) 장치.
In the third paragraph,
When the controller stores the index information based on the mapping of the first logical address and the first physical address corresponding to the first logical address in the intermediate layer in the write mode,
Store the hash value of the first logical address in a bloom filter corresponding to the first physical address to be mapped to the first logical address, store the first logical address in an out-of-band area (OOB area) corresponding to the first physical address, and store data in the first physical address.
Solid state drive (SSD) device.
상기 컨트롤러는 상기 하위 계층에서 제2 논리 주소에 대응하는 제2 물리 주소를 조회하는 경우, 상기 컨트롤러는 상기 하위 계층의 상기 색인 정보에 기반하여 제2 논리 주소에 대응하는 제2 물리 주소를 기준으로 미리 설정된 에러 범위 이내에 존재하는 제2 추정 물리 주소를 획득하는,
SSD(Solid State Drive) 장치.
In the third paragraph,
When the controller searches for a second physical address corresponding to a second logical address in the lower layer, the controller obtains a second estimated physical address that exists within a preset error range based on the second physical address corresponding to the second logical address based on the index information of the lower layer.
Solid state drive (SSD) device.
상기 하위 계층은 제2 논리 주소와 상기 제2 논리 주소에 대응하는 제2 물리 주소의 상기 색인 정보를 저장하는 경우,
상기 제2 논리 주소에 기반하여 상기 제2 물리 주소를 기준으로 미리 설정된 에러 범위 이내에 존재하는 제2 추정 물리 주소를 산출 가능한 상기 PLR 모델을 저장하는,
SSD(Solid State Drive) 장치.
In the third paragraph,
If the above lower layer stores the index information of the second logical address and the second physical address corresponding to the second logical address,
Storing the PLR model capable of calculating a second estimated physical address within a preset error range based on the second physical address based on the second logical address;
Solid state drive (SSD) device.
상기 하위 계층은, 서로 다른 상기 논리 주소들의 집합에 대해 각각 추정 물리 주소를 산출 가능한 상기 PLR 모델로서, 서로 기울기 및 절편이 다른 복수의 상기 PLR 모델을 저장하는,
SSD(Solid State Drive) 장치.
In Article 8,
The above lower layer stores a plurality of PLR models having different slopes and intercepts, each of which is capable of producing an estimated physical address for a set of different logical addresses.
Solid state drive (SSD) device.
복수의 상기 계층 각각은 상기 색인 정보를 유지하는 적어도 하나의 런(run)을 포함하고,
상기 컨트롤러는 제1 논리 주소 변환을 위해서 상기 제1 논리 주소에 대응하는 상기 색인 정보가 존재하는 상기 런의 정보가 저장된 숏컷 테이블(shortcut table)을 조회하고, 상기 숏컷 테이블에서 조회된 상기 런의 복수의 상기 색인 정보에서 상기 제1 논리 주소에 대응하는 상기 색인 정보를 조회하는,
SSD(Solid State Drive) 장치.
In the first paragraph,
Each of the plurality of said layers includes at least one run that maintains said index information,
The controller searches a shortcut table storing information of the run in which the index information corresponding to the first logical address exists for the first logical address conversion, and searches for the index information corresponding to the first logical address from a plurality of index information of the run searched in the shortcut table.
Solid state drive (SSD) device.
상기 런은 복수의 런 청크(run chunk)로 구성되고, 상기 런 청크는 상기 비휘발성 메모리의 메모리 블록과 크기가 동일하고,
상기 컨트롤러는 상기 런 청크와 상기 메모리 블록 사이의 맵핑 정보를 저장하는 정렬 테이블(sorted table)에 기반하여, 상기 색인 정보에 대응하는 상기 물리 주소를 조회하는,
SSD(Solid State Drive) 장치.
In Article 10,
The above run is composed of a plurality of run chunks, and the run chunks are the same size as the memory blocks of the non-volatile memory,
The controller searches for the physical address corresponding to the index information based on a sorted table that stores mapping information between the run chunk and the memory block.
Solid state drive (SSD) device.
복수의 상기 계층은 계층 순서대로 최상위 계층, 적어도 하나의 중간 계층 및 적어도 하나의 하위 계층으로 구성되고, 인접한 두 계층 중 아래의 계층은 위의 계층보다 미리 설정된 배수만큼 크고, 상기 계층 각각은 상기 색인 정보를 저장하는 적어도 하나의 런(run)을 포함하고, 상기 런은 상기 색인 정보의 상기 논리 주소 순서로 정렬하여 복수의 상기 색인 정보를 저장하고,
상기 컨트롤러는 상기 계층 중 어느 한 계층의 모든 런이 포화된 경우, 포화된 상기 계층의 적어도 하나의 색인 정보를 상기 최상위 계층, 상기 중간 계층 및 상기 하위 계층의 순서대로 아래에 위치한 상기 계층으로 이동시키는,
SSD(Solid State Drive) 장치.
In the first paragraph,
The plurality of said layers are composed of a top layer, at least one middle layer, and at least one lower layer in the order of the layers, and the lower layer among the two adjacent layers is larger than the upper layer by a preset multiple, and each of the said layers includes at least one run that stores the said index information, and the run stores the plurality of said index information by arranging them in the order of the logical addresses of the said index information,
The controller moves at least one index information of the saturated layer to the layer located below in the order of the top layer, the middle layer, and the lower layer, when all runs of any one of the layers are saturated.
Solid state drive (SSD) device.
데이터가 저장되는 비휘발성 메모리; 및
상기 비휘발성 메모리를 제어하는 컨트롤러를 포함하는 SSD(Solid State Drive) 장치의 동작 방법으로서,
상기 컨트롤러가 상기 호스트가 전송한 논리 주소를 제공 받는 단계;
상기 컨트롤러가 제공 받은 상기 논리 주소를 계층적 구조인 LSM-tree(log-structured merge tree)로 구성된 복수의 계층에 저장된 색인(indexing) 정보에 기반하여 상기 비휘발성 메모리에 대한 물리 주소로 변환하는 단계; 및
상기 컨트롤러가 상기 물리 주소에 기반하여 상기 비휘발성 메모리에 액세스하는 단계를 포함하고,
상기 LSM-tree의 복수의 상기 계층 중 적어도 두 개의 상기 계층은 서로 다른 방식으로 상기 논리 주소 및 상기 논리 주소에 대응하는 상기 물리 주소의 맵핑에 기반한 상기 색인 정보를 저장하는,
SSD(Solid State Drive) 장치의 동작 방법.
Interface logic that connects to the host;
Non-volatile memory where data is stored; and
A method of operating an SSD (Solid State Drive) device including a controller controlling the above non-volatile memory,
A step in which the controller receives a logical address transmitted by the host;
A step of converting the logical address provided by the controller into a physical address for the non-volatile memory based on indexing information stored in multiple layers consisting of a hierarchical structure, LSM-tree (log-structured merge tree); and
The above controller comprises a step of accessing the non-volatile memory based on the physical address,
At least two of the above layers among the plurality of said layers of the LSM-tree store the index information based on the mapping of the logical address and the physical address corresponding to the logical address in different ways.
How a Solid State Drive (SSD) device works.
상기 물리 주소로 변환하는 단계는,
상기 컨트롤러가 상기 LSM-tree의 복수의 상기 계층 중 상기 논리 주소와 상기 논리 주소에 맵핑되는 상기 물리 주소를 페어(pair) 형태의 상기 색인 정보로서 저장하는 최상위 계층을 조회하는 단계, 또는 상기 컨트롤러가 상기 논리 주소에 맵핑되는 상기 물리 주소를 추측 방식으로 추정하는 상기 색인 정보를 저장하는 상기 최상위 계층 이외의 계층들을 조회하는 단계를 포함하는,
SSD(Solid State Drive) 장치의 동작 방법.
In Article 13,
The steps for converting to the above physical address are:
The step of the controller searching for the uppermost layer among the plurality of layers of the LSM-tree, which stores the logical address and the physical address mapped to the logical address as the index information in the form of a pair, or the step of the controller searching for layers other than the uppermost layer, which stores the index information that estimates the physical address mapped to the logical address in a guessing manner.
How a Solid State Drive (SSD) device works.
상기 컨트롤러가 상기 최상위 계층 이외의 계층들을 조회하는 단계는,
상기 컨트롤러가 블룸 필터(Bloom filter)에 기반하여 상기 물리 주소를 확률적으로 추측하는 근사 인덱싱(approximate indexing) 기반의 상기 색인 정보를 저장하는 적어도 하나의 중간 계층을 조회하는 단계, 또는 상기 컨트롤러가 Piece-wise linear regression(PLR) 모델에 기반하여 상기 물리 주소를 확률적으로 추측하는 근사 인덱싱 기반의 상기 색인 정보를 저장하는 적어도 하나의 하위 계층을 조회하는 단계를 포함하는,
SSD(Solid State Drive) 장치의 동작 방법.
In Article 14,
The step in which the above controller searches layers other than the top layer is:
A step in which the controller searches at least one intermediate layer storing the index information based on approximate indexing that probabilistically guesses the physical address based on a Bloom filter, or a step in which the controller searches at least one lower layer storing the index information based on approximate indexing that probabilistically guesses the physical address based on a Piece-wise linear regression (PLR) model.
How a Solid State Drive (SSD) device works.
상기 중간 계층은 상기 논리 주소의 해시(hash) 값을 저장하고,
상기 컨트롤러가 상기 중간 계층을 조회하는 단계는,
상기 컨트롤러가 상기 중간 계층의 상기 색인 정보에 기반하여 상기 제1 논리 주소의 해시 값과 동일한 해시 값을 갖는 블룸 필터에 대응하는 제1 추정 물리 주소를 획득하는 단계를 포함하는,
SSD(Solid State Drive) 장치의 동작 방법.
In Article 15,
The above intermediate layer stores the hash value of the above logical address,
The step in which the above controller queries the intermediate layer is:
The step of the controller obtaining a first estimated physical address corresponding to a bloom filter having a hash value identical to a hash value of the first logical address based on the index information of the intermediate layer,
How a Solid State Drive (SSD) device works.
상기 컨트롤러는 쓰기 모드에서 상기 중간 계층에 제1 논리 주소와 상기 제1 논리 주소에 대응하는 제1 물리 주소의 맵핑에 기반한 상기 색인 정보를 저장하는 경우,
상기 컨트롤러가 상기 제1 논리 주소에 맵핑될 상기 제1 물리 주소에 대응하는 블룸 필터에 상기 제1 논리 주소의 해시 값을 저장하는 단계; 및
상기 컨트롤러가 상기 제1 물리 주소에 대응하는 OOB 영역(Out-of-band area)에 상기 제1 논리 주소를 저장하고, 상기 제1 물리 주소에 데이터를 저장하는 단계를 포함하는,
SSD(Solid State Drive) 장치의 동작 방법.
In Article 15,
When the controller stores the index information based on the mapping of the first logical address and the first physical address corresponding to the first logical address in the intermediate layer in the write mode,
The step of the controller storing a hash value of the first logical address in a bloom filter corresponding to the first physical address to be mapped to the first logical address; and
The controller comprises a step of storing the first logical address in an out-of-band area (OOB area) corresponding to the first physical address and storing data in the first physical address.
How a Solid State Drive (SSD) device works.
상기 컨트롤러는 상기 하위 계층에서 제2 논리 주소에 대응하는 제2 물리 주소를 조회하는 경우,
상기 컨트롤러가 상기 하위 계층을 조회하는 단계는,
상기 컨트롤러가 상기 하위 계층의 상기 색인 정보에 기반하여 제2 논리 주소에 대응하는 제2 물리 주소를 기준으로 미리 설정된 에러 범위 이내에 존재하는 제2 추정 물리 주소를 획득하는 단계를 포함하는,
SSD(Solid State Drive) 장치의 동작 방법.
In Article 15,
When the above controller looks up the second physical address corresponding to the second logical address in the lower layer,
The step in which the above controller searches the lower layer is:
The controller comprises a step of obtaining a second estimated physical address that exists within a preset error range based on a second physical address corresponding to a second logical address based on the index information of the lower layer.
How a Solid State Drive (SSD) device works.
상기 컨트롤러가 상기 하위 계층에 제2 논리 주소와 상기 제2 논리 주소에 대응하는 제2 물리 주소의 상기 색인 정보를 저장하는 경우,
상기 컨트롤러가 상기 제2 논리 주소에 기반하여 상기 제2 물리 주소를 기준으로 미리 설정된 에러 범위 이내에 존재하는 제2 추정 물리 주소를 산출 가능한 상기 PLR 모델을 저장하거나 변경하는 단계를 포함하는,
SSD(Solid State Drive) 장치의 동작 방법.
In Article 15,
When the above controller stores the index information of the second logical address and the second physical address corresponding to the second logical address in the lower layer,
The step of storing or modifying the PLR model capable of calculating a second estimated physical address within a preset error range based on the second physical address based on the second logical address, wherein the controller
How a Solid State Drive (SSD) device works.
복수의 상기 계층 각각은 상기 색인 정보를 유지하는 적어도 하나의 런(run)을 포함하고,
상기 물리 주소로 변환하는 단계는,
상기 컨트롤러가 제1 논리 주소 변환을 위해서 상기 제1 논리 주소에 대응하는 상기 색인 정보가 존재하는 상기 런의 정보가 저장된 숏컷 테이블(shortcut table)을 조회하는 단계; 및
상기 컨트롤러가 상기 숏컷 테이블에서 조회된 상기 런의 복수의 상기 색인 정보에서 상기 제1 논리 주소에 대응하는 상기 색인 정보를 조회하는 단계를 포함하는,
SSD(Solid State Drive) 장치의 동작 방법.
In Article 13,
Each of the plurality of said layers includes at least one run that maintains said index information,
The steps for converting to the above physical address are:
A step in which the controller searches a shortcut table storing information of the run in which the index information corresponding to the first logical address exists for the first logical address conversion; and
The above controller comprises a step of searching for the index information corresponding to the first logical address from the plurality of index information of the runs searched in the shortcut table.
How a Solid State Drive (SSD) device works.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210185775A KR102706442B1 (en) | 2021-12-23 | 2021-12-23 | Ssd device and operating method of the same using ftl based on lsm-tree and approximate indexing |
PCT/KR2022/021055 WO2023121338A1 (en) | 2021-12-23 | 2022-12-22 | Ssd device using ftl based on lsm-tree and approximate indexing and operation method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210185775A KR102706442B1 (en) | 2021-12-23 | 2021-12-23 | Ssd device and operating method of the same using ftl based on lsm-tree and approximate indexing |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20230096359A KR20230096359A (en) | 2023-06-30 |
KR102706442B1 true KR102706442B1 (en) | 2024-09-11 |
Family
ID=86903159
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210185775A Active KR102706442B1 (en) | 2021-12-23 | 2021-12-23 | Ssd device and operating method of the same using ftl based on lsm-tree and approximate indexing |
Country Status (2)
Country | Link |
---|---|
KR (1) | KR102706442B1 (en) |
WO (1) | WO2023121338A1 (en) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170249257A1 (en) | 2016-02-29 | 2017-08-31 | Itu Business Development A/S | Solid-state storage device flash translation layer |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7013376B2 (en) * | 2000-12-20 | 2006-03-14 | Hewlett-Packard Development Company, L.P. | Method and system for data block sparing in a solid-state storage device |
US8335907B2 (en) * | 2009-12-30 | 2012-12-18 | Sandisk Technologies Inc. | Micro-update architecture for address tables |
KR20170057821A (en) * | 2015-11-17 | 2017-05-25 | 삼성전자주식회사 | Storage device, database system having the same, and methode for providing interface therof |
KR20210063862A (en) * | 2019-11-25 | 2021-06-02 | 에스케이하이닉스 주식회사 | Key-value storage and a system including the same |
-
2021
- 2021-12-23 KR KR1020210185775A patent/KR102706442B1/en active Active
-
2022
- 2022-12-22 WO PCT/KR2022/021055 patent/WO2023121338A1/en active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170249257A1 (en) | 2016-02-29 | 2017-08-31 | Itu Business Development A/S | Solid-state storage device flash translation layer |
Also Published As
Publication number | Publication date |
---|---|
KR20230096359A (en) | 2023-06-30 |
WO2023121338A1 (en) | 2023-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11216185B2 (en) | Memory system and method of controlling memory system | |
CN108984420B (en) | Managing multiple namespaces in non-volatile memory (NVM) | |
Debnath et al. | {ChunkStash}: Speeding up inline storage deduplication using flash memory | |
Huang et al. | Improving flash-based disk cache with lazy adaptive replacement | |
US9063877B2 (en) | Storage system, storage controller, and method for managing mapping between local address and physical address | |
CN113254358B (en) | Method and system for address table cache management | |
US10740251B2 (en) | Hybrid drive translation layer | |
KR101297442B1 (en) | Nand flash memory including demand-based flash translation layer considering spatial locality | |
US11210231B2 (en) | Cache management using a bucket-partitioned hash table | |
Neal et al. | Rethinking file mapping for persistent memory | |
Xu et al. | CAST: A page-level FTL with compact address mapping and parallel data blocks | |
KR101155542B1 (en) | Method for managing mapping table of ssd device | |
Lu et al. | ZoneKV: A space-efficient key-value store for ZNS SSDs | |
KR102706442B1 (en) | Ssd device and operating method of the same using ftl based on lsm-tree and approximate indexing | |
Chen et al. | KVFTL: Optimization of storage space utilization for key-value-specific flash storage devices | |
Wang et al. | Land of oz: Resolving orderless writes in zoned namespace ssds | |
Wang et al. | FlashSkipList: indexing on flash devices | |
Ha et al. | zCeph: Design and implementation of a ZNS-friendly distributed file system | |
Zhou et al. | Tiered hashing: Revamping hash indexing under a unified memory-storage hierarchy | |
Huang et al. | An index-based management scheme with adaptive caching for huge-scale low-cost embedded flash storages | |
Misra et al. | Multi-version Indexing in Flash-based Key-Value Stores | |
US20230325324A1 (en) | Caching techniques | |
Zining et al. | SSD-Based LSM-Tree Key-Value Storage System | |
Cui et al. | HashTree: a new hybrid index for flash disks | |
Clementsen et al. | Vertical partitioning for flash and HDD database systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PA0109 | Patent application |
Patent event code: PA01091R01D Comment text: Patent Application Patent event date: 20211223 |
|
PA0201 | Request for examination | ||
PG1501 | Laying open of application | ||
E701 | Decision to grant or registration of patent right | ||
PE0701 | Decision of registration |
Patent event code: PE07011S01D Comment text: Decision to Grant Registration Patent event date: 20240828 |
|
GRNT | Written decision to grant | ||
PR0701 | Registration of establishment |
Comment text: Registration of Establishment Patent event date: 20240909 Patent event code: PR07011E01D |
|
PR1002 | Payment of registration fee |
Payment date: 20240909 End annual number: 3 Start annual number: 1 |
|
PG1601 | Publication of registration |