KR102525061B1 - 입력 데이터를 압축하여 저장하는 데이터 저장 장치 - Google Patents

입력 데이터를 압축하여 저장하는 데이터 저장 장치 Download PDF

Info

Publication number
KR102525061B1
KR102525061B1 KR1020160091456A KR20160091456A KR102525061B1 KR 102525061 B1 KR102525061 B1 KR 102525061B1 KR 1020160091456 A KR1020160091456 A KR 1020160091456A KR 20160091456 A KR20160091456 A KR 20160091456A KR 102525061 B1 KR102525061 B1 KR 102525061B1
Authority
KR
South Korea
Prior art keywords
chunk
data
compression
control unit
write
Prior art date
Application number
KR1020160091456A
Other languages
English (en)
Other versions
KR20180009574A (ko
Inventor
한상욱
전호윤
김지홍
Original Assignee
에스케이하이닉스 주식회사
서울대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사, 서울대학교산학협력단 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020160091456A priority Critical patent/KR102525061B1/ko
Priority to US15/409,725 priority patent/US10481797B2/en
Priority to CN201710060875.4A priority patent/CN107632776B/zh
Publication of KR20180009574A publication Critical patent/KR20180009574A/ko
Application granted granted Critical
Publication of KR102525061B1 publication Critical patent/KR102525061B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 기술에 의한 데이터 저장 장치는 페이지 단위로 데이터를 기록하는 메모리 셀 어레이, 호스트로부터 제공된 데이터로부터 다수의 페이지를 포함하는 청크를 생성하여 출력하는 데이터 버퍼, 청크를 압축한 압축 청크를 쓰기 데이터로 출력하는 데이터 압축부, 쓰기 데이터를 페이지 단위로 출력하는 쓰기 큐, 논리 주소와 청크 주소의 매핑 관계 및 청크 주소와 물리 주소의 매핑 관계를 저장하는 매핑 테이블; 및 쓰기 큐에서 출력된 데이터를 메모리 셀 어레이에 저장하되, 어느 하나의 압축 청크의 일부와 다른 어느 하나의 압축 청크의 일부를 모두 포함하는 페이지가 상기 메모리 셀 어레이에 기록되도록 상기 메모리 셀 어레이를 제어하는 제어부를 포함한다.

Description

입력 데이터를 압축하여 저장하는 데이터 저장 장치{DATA STORAGE DEVICE FOR COMPRESSING INPUT DATA}
본 발명은 데이터 저장 장치에 관한 것으로서 보다 구체적으로는 데이터를 압축하여 저장하는 데이터 저장 장치에 관한 것이다.
SSD(Solid State Drive) 장치와 같이 반도체 메모리 장치를 포함하는 데이터 저장 장치는 고용량의 데이터를 저장하기에 비용이 높은 편이다.
또한 낸드 플래시 메모리의 경우 하나의 셀에 다수의 비트 정보를 저장함에 따라 셀의 수명이 줄어드는 경향이 있다.
이에 따라 데이터를 압축하여 저장함으로써 장치의 수명을 증가시킴과 동시에 저장 용량 대비 가격을 낮추기 위한 기술이 개발되고 있다.
낸드 기반 메모리 장치는 페이지 단위로 데이터를 저장하는데 페이지 데이터를 압축하면 그 길이가 페이지 단위로 정렬되지 않는다.
이에 따라 압축된 데이터를 페이지 단위로 저장하는 경우 페이지 중 일부를 낭비하여 실질적으로 저장 용량이 증가하는 효과를 거두기 어렵다.
예를 들어 페이지 크기가 8 킬로바이트인 경우 4개의 페이지에 해당하는 32 킬로바이트 데이터를 압축하여 17 킬로바이트의 데이터를 얻었다면 이를 세 개의 페이지에 저장할 때 7 킬로바이트의 저장 공간이 낭비된다.
따라서 데이터를 압축하여 저장하는 동시에 저장 공간의 낭비를 방지하기 위한 기술이 요구되고 되고 있다.
KR 10-2011-0138707 A KR 10-2013-0081534 A
본 발명은 다수의 페이지를 포함하는 청크 단위로 데이터를 압축하여 저장하는 데이터 저장 장치를 제공한다.
본 발명은 유사성이 높은 페이지를 모아 청크를 생성하여 데이터의 압축률을 향상시킨다.
본 발명은 다수의 페이지를 선택적으로 압축하여 저장하는 데이터 저장 장치를 제공한다.
본 발명은 매핑 테이블의 크기를 줄일 수 있는 데이터 저장 장치를 제공한다.
본 발명의 일 실시예에 의한 데이터 저장 장치는 페이지 단위로 데이터를 기록하는 메모리 셀 어레이, 호스트로부터 제공된 데이터로부터 다수의 페이지를 포함하는 청크를 생성하여 출력하는 데이터 버퍼, 청크를 압축한 압축 청크를 쓰기 데이터로 출력하는 데이터 압축부, 쓰기 데이터를 페이지 단위로 출력하는 쓰기 큐, 논리 주소와 청크 주소의 매핑 관계 및 청크 주소와 물리 주소의 매핑 관계를 저장하는 매핑 테이블; 및 쓰기 큐에서 출력된 데이터를 메모리 셀 어레이에 저장하되, 어느 하나의 압축 청크의 일부와 다른 어느 하나의 압축 청크의 일부를 모두 포함하는 페이지가 상기 메모리 셀 어레이에 기록되도록 상기 메모리 셀 어레이를 제어하는 제어부를 포함한다.
본 발명은 다수의 페이지를 포함하는 청크 단위로 데이터를 압축함으로써 데이터의 압축률을 향상시킨다.
본 발명은 유사성이 높은 페이지를 모아 청크를 형성함으로써 데이터의 압축률을 높인다.
본 발명은 다수의 페이지를 선택적으로 압축함으로써 불필요한 압축으로 인한 성능 저하를 방지한다.
본 발명의 테이블 구조는 매핑 테이블의 크기가 과도하게 증가하는 것을 방지한다.
도 1은 본 발명의 일 실시예에 의한 데이터 저장 장치의 블록도.
도 2는 다수의 페이지를 포함하는 청크를 생성하는 방법을 나타낸 설명도.
도 3은 선택적 압축 방법을 나타낸 설명도.
도 4는 도 3의 압축 제어부의 동작을 설명하는 상태 다이어그램.
도 5는 매핑 테이블의 일 예를 나타낸 도면.
도 6은 물리 페이지에 도 5의 청크가 저장된 모습을 나타낸 설명도.
도 7은 매핑 테이블의 다른 예를 나타낸 도면.
도 8은 물리 페이지에 도 7의 청크가 저장된 모습을 나타낸 설명도.
도 9는 매핑 테이블의 다른 예를 나타낸 도면.
도 10은 물리 페이지에 도 9의 청크가 저장된 모습을 나타낸 설명도.
도 11은 쓰기 제어부의 동작을 설명하는 블록도.
도 12는 쓰기 큐의 동작을 나타내는 설명도.
이하에서는 첨부한 도면을 참조하여 본 발명의 실시예를 개시한다.
도 1은 본 발명의 일 실시예에 의한 데이터 저장 장치를 나타낸 블록도이다.
본 발명의 일 실시예에 의한 데이터 저장 장치(1000)는 제어부(100), 데이터 버퍼(200), 데이터 압축부(300), 매핑 테이블(400), 메모리 셀 어레이(500), 쓰기 큐(600)를 포함한다.
본 실시예에서 메모리 셀 어레이(500)는 페이지 단위로 데이터를 기록하는 메모리 장치로 가정한다. 예를 들어 낸드 메모리 셀 어레이(500)는 플래시 메모리 셀 어레이 또는 다른 종류의 메모리 셀 어레이일 수 있다.
제어부(100)는 낸드 플래시 메모리 셀 어레이에 데이터를 입출력하는 동작을 제어한다.
제어부(100)는 기본적으로 종래의 FTL(Flash Translation Layer)이 수행하는 동작을 수행할 수 있다.
본 실시예에서 제어부(100)는 데이터 버퍼(200), 데이터 압축부(300), 매핑 테이블(400), 쓰기 큐(600)를 제어한다. 이에 대해서는 이하에서 구체적으로 설명한다.
데이터 버퍼(200)는 호스트(1)에서 제공된 쓰기 데이터를 임시 저장하고 이들로부터 생성된 청크를 출력한다.
본 발명에서 청크는 하나 또는 둘 이상의 페이지를 포함하며 바람직하게는 둘 이상의 페이지를 포함한다.
본 실시예에서는 4개의 페이지가 하나의 청크를 형성한다.
제어부(100)는 호스트(1)에서 제공된 쓰기 데이터를 통해 청크를 생성하는 동작을 제어한다.
예를 들어 제어부(100)는 청크를 생성하기 위하여 호스트로부터 제공된 데이터의 순서를 변경할 수 있다. 이에 대해서는 도 2를 참조하여 구체적으로 설명한다.
데이터 압축부(300)는 데이터 버퍼(200)에서 출력된 청크를 압축하거나 압축하지 않고 쓰기 큐(600)에 제공한다.
본 실시예에서 제어부(100)는 청크의 압축 여부를 제어할 수 있다.
제어부(100)가 청크를 압축할 것을 지시하는 경우 데이터 압축부(300)는 압축된 청크를 쓰기 큐(600)에 제공하고, 제어부(100)가 청크를 압축하지 않을 것을 지시하는 경우 데이터 압축부(300)는 입력된 청크를 그대로 쓰기 큐(600)에 제공한다. 이에 대해서는 도 3, 4를 참조하여 구체적으로 설명한다.
제어부(100)는 쓰기 큐(600)에 저장된 데이터를 메모리 셀 어레이(500)에 페이지 단위로 저장하는 동작을 제어한다. 이에 대해서는 도 11을 참조하여 구체적으로 설명한다.
일반적으로 매핑 테이블(400)은 호스트에서 요청된 논리 주소와 메모리 셀 어레이(500)의 물리 주소 사이의 대응 관계를 제어한다.
본 발명에서는 다수의 페이지를 포함하는 청크 개념을 도입한다.
이에 따라 본 발명의 매핑 테이블은 논리 주소와 청크 사이의 대응 관계를 포함하는 제 1 테이블과 청크와 물리 주소 사이의 대응 관계를 포함하는 제 2 테이블을 포함한다.
제어부(100)는 청크를 압축하는지에 따라 제 1 테이블과 제 2 테이블을 제어한다. 이에 대해서는 도 5 내지 도 10을 참조하여 구체적으로 설명한다.
도 2는 다수의 페이지를 포함하는 청크를 생성하는 방법을 나타낸 설명도이다.
데이터 버퍼(200)는 호스트(1)에서 쓰기 요청된 입력 데이터(210)를 페이지 단위로 저장한다.
도 2A는 데이터 버퍼(200)에 다수의 페이지가 저장된 상태에서 입력 데이터(210)가 새로 저장된 상태를 나타낸다.
제어부(100)는 특성 비교부(110)와 버퍼 제어부(120)를 포함한다.
특성 비교부(110)는 입력 데이터(210)의 패턴을 분석하여 기존에 저장된 데이터와 패턴이 유사한 페이지가 있는지 발견한다.
본 실시예에서 데이터의 패턴은 해시 함수를 적용하여 산출한 해시값으로 표현된다.
도 2A에서 A, B, C, D는 기존 페이지에 대응하는 해시값을 나타낸 것이다.
특성 비교부(110)는 입력 데이터(210)의 해시값을 계산한다.
특성 비교부(110)는 예를 들어 라빈 카프 지문(Rabin-Karp fingerprint)을 산출하여 해시값으로 사용할 수 있다.
입력 데이터(210)에 대하여 계산한 해시값이 A'이라고 가정한다.
특성 비교부(110)는 계산된 해시값을 기존에 계산한 다른 페이지들의 해시와 비교하여 가장 비슷한 해시를 갖는 페이지를 찾는다.
비슷한 해시값이 없는 경우 특성 비교부(110)는 비슷한 해시값을 가지는 페이지가 없음을 표시할 수 있다.
예를 들어 특성 비교부(110)는 입력 데이터의 해시값과 다른 페이지들의 해시값들에 대하여 "min-hash" 기법을 적용하여 입력 데이터와 기존 페이지 사이의 유사 여부를 판단할 수 있다.
버퍼 제어부(120)는 특성 비교부(110)에서 유사한 해시값을 가지는 페이지를 찾은 경우 입력 데이터(210)를 해당 페이지 다음으로 이동시킨다.
도 2B는 입력 데이터(210)에 대하여 계산된 해시값이 A'이며 이와 유사한 해시값 A를 가지는 페이지 다음으로 입력 데이터를 이동한 모습을 나타낸다.
본 실시예에서 데이터 버퍼(200)는 4개의 페이지를 포함하는 청크(220)를 출력한다.
본 실시예에서는 유사한 패턴의 페이지들이 청크를 구성하도록 한다. 유사한 패턴의 페이지들을 함께 압축함으로써 압축률을 향상시킬 수 있다.
도 2의 실시예는 데이터 버퍼(200)에서 데이터의 패턴을 고려하여 페이지 순서를 조정한다.
다른 실시예의 경우 입력된 데이터를 순서대로 모아 청크를 생성할 수 있으며 이 경우 데이터 버퍼(200)의 크기는 청크의 크기로 최소화될 수 있다.
도 3은 선택적 압축 방법을 나타낸 설명도이다.
일 실시예에서 데이터 압축부(300)는 입력된 청크를 압축하여 쓰기 데이터로 출력할 수 있다.
압축된 동영상 데이터와 같이 인코딩 및 압축을 통해 패턴의 반복성이 제거된 데이터의 경우 추가적인 압축을 수행하는 경우 압축 해제에 필요한 메타 데이터로 인하여 오히려 압축 후에 데이터의 크기가 증가할 가능성이 있다.
따라서 본 실시예에서는 모든 청크를 압축하는 대신 선택적으로 압축을 수행한다.
본 실시예에서 데이터 압축부(300)는 압축 제어부(130)의 제어에 따라 청크를 압축하지 않고 쓰기 데이터로 출력하거나 청크를 압축하여 쓰기 데이터로 출력한다.
압축 알고리즘으로는 LZRW(Lempel-Ziv Ross Williams) 알고리즘이나 기타 공지된 압축 알고리즘을 사용할 수 있다.
압축 제어부(130)는 압축률을 감시하여 압축률이 낮은 상태가 지속되는 경우 청크 데이터를 압축하지 않고 그렇지 않은 경우 청크 데이터를 압축하여 출력한다.
본 실시예에서 압축 제어부(130)는 매 5개의 청크마다 압축률을 샘플링하여 제어 신호를 결정한다.
샘플링 주기는 실시예에 따라 달라질 수 있다.
샘플링 동작 시 압축 제어부(130)는 청크(300)를 압축하도록 데이터 압축부(300)를 제어하여 압축된 데이터를 제공받음으로써 압축률을 계산할 수 있다.
본 발명의 발명자들은 파일 데이터를 순서대로 압축하는 실험으로 통해 압축률이 일정한 지역성을 가짐을 발견하였다.
이러한 발견에 기초하여 본 실시예에서는 샘플링을 통해 압축률이 낮은 상태가 지속되는 경우 해당 영역에 압축률이 낮은 데이터가 모여 있고 압축률이 높은 상태가 지속되는 경우 해당 영역에 압축률이 높은 데이터가 모여 있는 것으로 판단하여 압축 여부를 제어한다.
도 4는 도 3의 압축 제어부의 동작을 설명하는 상태 다이어그램이다.
도 4의 실시예는 샘플링 결과 두 번 연속 압축률이 낮은 것으로 판단되는 경우 압축을 수행하지 않도록 한다.
상태(S10) 및 상태(S20)에서 압축 제어부(130)는 데이터 압축부(300)가 압축을 수행하도록 제어하고, 상태(S30) 및 상태(S40)에서 압축 제어부(130)는 데이터 압축부(300)가 압축을 수행하지 않도록 제어한다.
상태(S10)에서 압축률이 높은 것으로 판단되면 현재 상태(S10)를 유지하고, 압축률이 낮은 것으로 판단되면 상태(S20)로 천이한다.
상태(S20)에서 압축률이 높은 것으로 판단되면 상태(S10)로 천이하고, 압축률이 낮은 것으로 판단되면 상태(S30)로 천이한다.
상태(S30)에서 압축률이 높은 것으로 판단되면 상태(S20)로 천이하고, 압축률이 낮은 것으로 판단되면 상태(S40)로 천이한다.
상태(S40)에서 압축률이 낮은 것으로 판단되면 현재 상태(S40)를 유지하고, 압축률이 높은 것으로 판단되면 상태(S30)로 천이한다.
본 실시예에서는 4개의 페이지를 압축한 결과 크기가 3개의 페이지보다 큰 경우 압축률이 낮은 것으로 판단하고 그렇지 않은 경우 압축률이 높은 것으로 판단한다.
청크를 압축하지 않는 경우 제어부(100)는 청크에 포함된 4개의 페이지를 그대로 메모리 셀 어레이(500)에 저장하고 매핑 테이블(400)은 논리 주소와 물리 주소 사이의 관계를 저장한다.
청크를 압축하는 경우 제어부(100)는 청크를 압축한 쓰기 데이터를 쓰기 큐(600)에 저장하고 매핑 테이블(400)은 논리 주소와 청크 주소, 청크 주소와 물리 주소 사이의 관계를 저장한다.
매핑 제어부(140)는 압축 제어부(130)의 출력을 참조하여 전술한 바와 같이 압축 여부에 따라 매핑 테이블(400)을 다르게 제어한다.
도 5는 매핑 테이블(400)의 일 예를 나타낸 도면이다.
매핑 테이블(400)은 제 1 테이블(410)과 제 2 테이블(420)을 포함한다.
제 1 테이블(410)은 논리 주소와 물리 주소 또는 청크 주소 사이의 매핑 관계를 저장하고, 제 2 테이블(420)은 청크 주소와 물리 주소 사이의 매핑 관계를 저장한다.
본 실시예에서 논리 주소, 물리 주소는 페이지 단위의 주소를 지칭한다.
제 1 테이블(410)에서 첫 번째 필드는 논리 주소를 두 번째 필드는 물리 주소 또는 청크 주소를 저장한다.
본 실시예에서 물리 주소와 청크 주소는 동일한 필드에 기록되므로 둘을 구별하기 위하여 각각은 서로 다른 범위의 주소를 사용한다.
도 5 이하에서 물리 주소는 0번에서 999번까지를 사용하고 청크 주소는 1000번 이후의 숫자를 사용하는 것으로 가정하였다.
따라서 두 번째 필드의 값을 통해 해당 논리 주소의 페이지가 압축된 상태로 저장되었는지 또는 압축되지 않은 상태로 저장되었는지를 판단할 수 있다.
본 실시예에서는 물리 주소와 청크 주소가 하나의 필드를 공유하도록 함으로써 테이블의 크기를 줄일 수 있다.
다른 실시예에서는 플래그 필드를 추가하여 두 번째 필드에 저장된 값이 물리 주소인지 청크 주소인지를 구별할 수도 있다. 이 경우 플래그 필드로 인하여 제 1 테이블 크기가 증가할 수는 있다.
매핑 제어부(140)는 압축 없이 데이터를 기록하는 경우 제 1 테이블(410)에 논리 주소와 물리 주소 사이의 매핑 관계를 기록할 수 있다.
매핑 제어부(140)는 청크 데이터를 압축하여 저장하는 경우 제 1 테이블(410)에 논리 주소와 청크 주소 사이의 매핑 관계를 기록하고, 제 2 테이블(420)에 청크 주소와 물리 주소 사이의 매핑 관계를 기록한다.
도 5에서 논리 주소 0, 1, 2, 3은 물리 주소 34, 12, 21, 35에 할당되고, 논리 주소 10, 11, 12, 13은 청크 주소 1001에 할당된다.
도 5에서 제 2 테이블(420)은 청크 주소 필드, 물리 주소 필드, 옵셋 필드, 길이 필드를 포함한다.
청크 주소 필드는 청크 주소를 저장하고, 물리 주소 필드는 압축 청크가 기록되기 시작하는 물리 주소를 기록하고, 옵셋 필드는 물리 주소 내에서 데이터가 기록되기 시작하는 옵셋 위치를 기록하고, 길이 필드는 압축 청크의 길이를 저장한다.
옵셋은 하나의 페이지를 다수의 서브 페이지로 구분하는 경우 서브페이지의 순서를 나타낸다.
본 실시예는 페이지의 크기가 8 킬로바이트이고 하나의 페이지를 16개의 서브페이지로 나누어 하나의 서브페이지가 512 바이트인 것으로 가정한다.
서브페이지의 크기는 실시예에 따라 다양하게 설정될 수 있다.
본 발명에서는 압축 청크를 기록할 때 이전에 기록된 압축 청크 다음의 서브페이지부터 기록하여 잔여 공간의 낭비를 방지한다.
도 5는 하나의 압축 청크를 연속된 물리 주소에 기록한다.
이에 따라 청크 주소 1001에 대응하는 압축 청크는 도 6에 도시된 바와 같이 36번 페이지의 5120번째 바이트부터 기록되기 시작하여 38번 페이지의 11번 서브페이지까지 기록된다.
데이터의 길이가 17000 바이트이므로 38번 페이지의 11번 서브페이지 중 104 바이트는 낭비될 수 있으나 낭비되는 공간의 크기는 종래에 비해서 현저하게 줄어든다.
서브페이지의 크기를 줄이면 물리 페이지에서 낭비되는 공간을 줄일 수 있으나 옵셋 필드에 저장하는 데이터의 비트수가 증가해야 하므로 제 2 테이블(420)의 크기가 증가할 수 있다.
도 7, 8은 연속된 두 압축 청크가 기록되는 방법을 설명한다.
도 7에 도시된 바와 같이 논리 주소 10, 11, 12, 13번은 청크 주소 1001번에 대응하고, 논리 주소 35, 36, 41, 45번은 청크 주소 1002번에 대응한다.
도 5와 같이 청크 주소 1001번의 압축 청크는 물리 주소 36번의 서브페이지 8번부터 기록되며 길이는 17000 바이트이다.
청크 주소 1002번의 압축 청크는 청크 주소 1001번의 압축 청크에 이어서 기록된다.
따라서 청크 주소 1002번의 압축 청크는 물리 주소 38번의 12번 서브페이지부터 기록된다.
청크 주소 1002번의 압축 청크는 길이가 11200 바이트이므로, 청크 주소 1002번의 압축 청크는 물리 주소 40번의 1번 서브페이지까지 기록된다.
이때 물리 주소 40번의 1번 서브페이지에는 64 바이트의 잔여 공간이 생긴다.
도 9, 10은 청크 주소에 대응하는 물리 주소를 저장하는 다른 예를 설명하는 도면이다.
도 5의 경우 하나의 압축 청크는 연속된 물리 주소에 저장된다.
도 9에서 제 2 테이블(420)은 압축 청크가 기록되는 순서대로 물리 주소, 옵셋이 기록된다.
즉 청크 주소 1001번의 압축 청크는 36번 페이지의 8번 서브페이지부터 10번 페이지, 37번 페이지에 순차적으로 기록된다.
도 9의 실시예는 압축 청크를 연속된 물리 주소에 저장하지 않아도 되는 장점이 있으나 물리 주소를 추가로 저장해야 하므로 제 2 테이블(420)의 크기가 증가할 수 있다.
도 5 내지 10을 참조하여 설명한 바와 같이 본 발명에서는 압축 청크를 페이지의 중간부터 기록할 수 있다.
낸드 플래시 메모리 장치의 경우 쓰기 동작은 페이지 단위로 수행되므로 압축 청크에 대한 쓰기 동작은 다음 압축 청크가 입력되어 페이지를 완성하기 전까지 지연될 수 있다.
도 11은 쓰기 제어부의 동작을 설명하는 블록도이다.
본 실시예에서 제어부(100)는 쓰기 제어부(150)를 더 포함한다.
쓰기 큐(600)는 데이터 압축부(300)에서 출력되는 쓰기 데이터를 페이지 단위로 저장한다.
도 12는 쓰기 큐(600)의 동작을 설명하는 설명도이다.
도 12는 도 8의 1001번 청크 주소의 압축 청크와 1002번 청크 주소의 압축 청크가 순차적으로 입력되는 경우를 가정한 것이다.
쓰기 큐(600)에 36번 페이지의 0 - 9번 서브페이지가 저장된 것으로 가정한다.
쓰기 큐(600)는 청크 주소 1001번의 압축 청크가 입력되면 36번 페이지의 10번 - 15번 서브페이지를 채워 36번 페이지를 완성한다.
이후 쓰기 제어부(150)는 36번 페이지에 대한 쓰기 동작을 제어한다. 이때 쓰기 제어부(150)는 매핑 테이블(400)을 참조하여 물리 주소를 식별할 수 있다.
쓰기 큐(600)는 청크 주소 1001번의 압축 청크는 37번 페이지를 온전히 저장하므로 이후 쓰기 제어부(150)는 37번 페이지에 대한 쓰기 동작을 제어한다.
쓰기 큐(600)는 청크 주소 1001번의 압축 청크에 대응하는 38번 페이지는 0-11번 서브페이지만 저장하므로 쓰기 제어부(150)는 이에 대한 쓰기 동작을 진행하지 않고 대기한다.
이후 청크 주소 1002번의 압축 청크가 입력되어 38번 페이지의 12 - 15번 서브페이지가 입력되면 쓰기 제어부(150)는 38번 페이지에 대한 쓰기 동작을 제어한다.
쓰기 큐(600)는 1002번 압축 청크의 39번 페이지를 온전히 저장하므로 이후 쓰기 제어부(150)는 1002번 압축 청크의 39번 페이지에 대한 쓰기 동작을 제어한다.
쓰기 큐(600)는 1002번 압축 청크에 대응하는 40번 페이지는 0-1번 서브페이지만 저장하므로 쓰기 제어부(150)는 이에 대한 쓰기 동작을 진행하지 않고 40번 페이지가 완성되기까지 대기한다.
이상의 개시는 본 발명의 설명을 위한 것으로서 본 발명의 권리범위를 한정하고자 한 것은 아니다. 본 발명의 권리범위는 특허청구범위에 기재된 문언적 범위와 그 균등범위에 의해 결정된다.
1: 호스트
1000: 데이터 저장 장치
100: 제어부
110: 특성 비교부
120: 버퍼 제어부
130: 압축 제어부
140: 매핑 제어부
150: 쓰기 제어부
200; 데이터 버퍼
210: 입력 페이지
220: 청크
300: 데이터 압축부
400: 매핑 테이블
410: 제 1 테이블
420: 제 2 테이블
500: 메모리 셀 어레이
600: 쓰기 큐

Claims (15)

  1. 페이지 단위로 데이터를 기록하는 메모리 셀 어레이;
    호스트로부터 제공된 데이터로부터 다수의 페이지를 포함하는 청크를 생성하여 출력하는 데이터 버퍼;
    상기 청크를 압축한 압축 청크를 쓰기 데이터로 출력하는 데이터 압축부;
    상기 쓰기 데이터를 상기 페이지 단위로 출력하는 쓰기 큐;
    논리 페이지 주소와 청크 주소의 매핑 관계 및 청크 주소와 물리 페이지 주소의 매핑 관계를 저장하는 매핑 테이블; 및
    상기 쓰기 큐에서 출력된 데이터를 상기 메모리 셀 어레이에 저장하되, 어느 하나의 압축 청크의 일부와 다른 어느 하나의 압축 청크의 일부를 모두 포함하는 페이지가 상기 메모리 셀 어레이에 기록되도록 상기 메모리 셀 어레이를 제어하는 제어부
    를 포함하는 데이터 저장 장치.
  2. 청구항 1에 있어서, 상기 제어부는 상기 호스트로부터 제공된 데이터의 특성을 비교하는 특성 비교부; 및 상기 특성 비교부의 비교 결과에 따라 상기 호스트로부터 제공된 데이터의 순서를 조정하는 버퍼 제어부를 포함하는 데이터 저장 장치.
  3. 청구항 2에 있어서, 상기 버퍼 제어부는 상기 특성 비교부의 비교 결과 특성이 비슷할수록 더 가까운 거리에 있도록 데이터의 순서를 조정하는 데이터 저장 장치.
  4. 청구항 1에 있어서, 상기 제어부는 상기 데이터 압축부를 제어하는 압축 제어부를 포함하되, 상기 데이터 압축부는 상기 압축 제어부의 제어에 따라 상기 청크 또는 상기 압축 청크를 상기 쓰기 데이터로 출력하는 데이터 저장 장치.
  5. 청구항 4에 있어서, 상기 제어부는 상기 압축 제어부의 제어에 따라 상기 매핑 테이블을 제어하는 매핑 제어부를 더 포함하되, 상기 매핑 제어부는 상기 압축 제어부가 압축하지 않도록 제어하는 경우 상기 매핑 테이블이 논리 페이지 주소에 대응하는 물리 페이지 주소를 직접 매핑하도록 하고, 상기 압축 제어부가 압축하도록 제어하는 경우 상기 매핑 테이블이 논리 페이지 주소에 대응하는 청크 주소를 매핑하고 청크 주소에 대응하는 물리 페이지 주소를 매핑하도록 제어하는 데이터 저장 장치.
  6. 청구항 4에 있어서, 상기 압축 제어부는 일정한 주기마다 상기 청크 데이터에 대한 압축률을 샘플링하고, 상기 샘플링 결과에 따라 압축 여부를 제어하는 데이터 저장 장치.
  7. 청구항 6에 있어서, 상기 압축 제어부는 상기 샘플링 결과 일정한 회수 이상 연속하여 압축률이 임계점보다 낮은 것으로 판단하는 경우 압축하지 않도록 제어하고, 상기 샘플링 결과 상기 일정한 회수 이상 연속하여 압축률이 임계점 이상인 것으로 판단하는 경우 압축하도록 제어하는 데이터 저장 장치.
  8. 청구항 1에 있어서, 상기 매핑 테이블은 논리 페이지 주소와 청크 주소 사이의 매핑 관계를 저장하는 제 1 테이블 및 청크 주소와 물리 페이지 주소 사이의 매핑 관계를 저장하는 제 2 테이블을 포함하되, 상기 제 2 테이블은 물리 페이지 주소 내에서 청크 주소에 대응하는 압축 청크의 시작 위치에 대응하는 옵셋 정보 및 압축 청크의 길이를 더 저장하는 데이터 저장 장치.
  9. 청구항 8에 있어서, 상기 제 2 테이블에서 하나의 청크 주소는 하나의 물리 페이지 주소와 매핑되는 데이터 저장 장치.
  10. 청구항 9에 있어서, 상기 제어부는 청크 주소에 대응하는 압축 청크를 하나의 물리 페이지 주소 또는 연속하는 둘 이상의 물리 페이지 주소에 기록하도록 상기 메모리 셀 어레이를 제어하는 데이터 저장 장치.
  11. 청구항 8에 있어서, 상기 제 2 테이블에서 하나의 청크 주소는 불연속된 둘 이상의 물리 페이지 주소와 매핑되되, 상기 둘 이상의 물리 페이지 주소는 상기 하나의 청크 주소에 대응하는 압축 청크가 기록되는 순서로 매핑되는 데이터 저장 장치.
  12. 청구항 11에 있어서, 상기 제어부는 청크 주소에 대응하는 압축 청크를 불연속하는 둘 이상의 물리 페이지 주소에 매핑 순서에 따라 기록하도록 상기 메모리 셀 어레이를 제어하는 데이터 저장 장치.
  13. 청구항 1에 있어서, 상기 쓰기 큐는 상기 데이터 압축부에서 출력된 제 1 압축 청크의 일부와 상기 제 1 압축 청크 이후에 출력된 상기 데이터 압축부에서 출력되는 제 2 압축 청크의 일부를 조합하여 하나의 페이지를 형성하는 데이터 저장 장치.
  14. 청구항 10에 있어서, 상기 제어부는 상기 쓰기 큐에서 출력되는 페이지를 상기 메모리 셀 어레이에 기록하는 쓰기 제어부를 포함하되,
    상기 쓰기 제어부는 상기 어느 하나의 압축 청크의 일부에 대해서는 상기 다른 하나의 압축 청크가 출력되기까지 쓰기 동작을 수행하지 않는 데이터 저장 장치.
  15. 청구항 14에 있어서, 상기 쓰기 큐는 상기 어느 하나의 압축 청크의 일부와 상기 다른 하나의 압축 청크의 일부를 포함하는 페이지 데이터를 출력하는 데이터 저장 장치.
KR1020160091456A 2016-07-19 2016-07-19 입력 데이터를 압축하여 저장하는 데이터 저장 장치 KR102525061B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020160091456A KR102525061B1 (ko) 2016-07-19 2016-07-19 입력 데이터를 압축하여 저장하는 데이터 저장 장치
US15/409,725 US10481797B2 (en) 2016-07-19 2017-01-19 Data storage device for compressing input data
CN201710060875.4A CN107632776B (zh) 2016-07-19 2017-01-25 用于压缩输入数据的数据存储装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160091456A KR102525061B1 (ko) 2016-07-19 2016-07-19 입력 데이터를 압축하여 저장하는 데이터 저장 장치

Publications (2)

Publication Number Publication Date
KR20180009574A KR20180009574A (ko) 2018-01-29
KR102525061B1 true KR102525061B1 (ko) 2023-04-21

Family

ID=60988528

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160091456A KR102525061B1 (ko) 2016-07-19 2016-07-19 입력 데이터를 압축하여 저장하는 데이터 저장 장치

Country Status (3)

Country Link
US (1) US10481797B2 (ko)
KR (1) KR102525061B1 (ko)
CN (1) CN107632776B (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9495288B2 (en) * 2013-01-22 2016-11-15 Seagate Technology Llc Variable-size flash translation layer
US10970206B2 (en) * 2017-03-16 2021-04-06 Intel Corporation Flash data compression decompression method and apparatus
CN110609708B (zh) * 2018-06-15 2023-10-27 伊姆西Ip控股有限责任公司 用于数据处理的方法、设备和计算机可读介质
CN108959117B (zh) * 2018-06-22 2021-01-19 深圳忆联信息系统有限公司 H2d写操作加速方法、装置、计算机设备及存储介质
KR20200006378A (ko) * 2018-07-10 2020-01-20 에스케이하이닉스 주식회사 컨트롤러 및 그것의 동작방법
CN109062808A (zh) * 2018-09-17 2018-12-21 浪潮电子信息产业股份有限公司 一种ssd开发性能的测试方法、装置及相关设备
JP7034132B2 (ja) * 2019-12-20 2022-03-11 株式会社日立製作所 ストレージシステムおよびストレージシステムのデータ圧縮方法
US11853568B2 (en) * 2020-10-21 2023-12-26 EMC IP Holding Company LLC Front-end offload of storage system hash and compression processing
CN113419975B (zh) * 2021-06-11 2023-03-17 联芸科技(杭州)股份有限公司 存储器的控制系统及地址映射方法和地址映射装置
JP2023070797A (ja) 2021-11-10 2023-05-22 キオクシア株式会社 メモリシステムおよび方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015162681A1 (ja) * 2014-04-22 2015-10-29 株式会社日立製作所 ストレージシステムおよび記憶デバイスの制御方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110138707A (ko) 2010-06-21 2011-12-28 삼성전자주식회사 데이터 저장 장치 및 그것의 쓰기 방법
US8533550B2 (en) * 2010-06-29 2013-09-10 Intel Corporation Method and system to improve the performance and/or reliability of a solid-state drive
KR101888074B1 (ko) 2012-01-09 2018-08-13 삼성전자주식회사 저장 장치 및 불휘발성 메모리 장치, 그리고 그것의 동작 방법
CN103530062B (zh) * 2012-07-03 2016-12-21 群联电子股份有限公司 数据存储方法、存储器控制器与存储器存储装置
CN103514249B (zh) * 2013-06-20 2016-12-28 易乐天 一种数据自精简方法和系统及存储装置
US9367557B1 (en) * 2013-09-26 2016-06-14 Emc Corporation System and method for improving data compression
US9575661B2 (en) * 2014-08-19 2017-02-21 Samsung Electronics Co., Ltd. Nonvolatile memory systems configured to use deduplication and methods of controlling the same
JP6067819B1 (ja) * 2015-10-21 2017-01-25 株式会社東芝 階層化ストレージシステム、ストレージコントローラ、並びに重複排除及びストレージ階層化のための方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015162681A1 (ja) * 2014-04-22 2015-10-29 株式会社日立製作所 ストレージシステムおよび記憶デバイスの制御方法

Also Published As

Publication number Publication date
CN107632776A (zh) 2018-01-26
KR20180009574A (ko) 2018-01-29
US20180024748A1 (en) 2018-01-25
CN107632776B (zh) 2021-01-01
US10481797B2 (en) 2019-11-19

Similar Documents

Publication Publication Date Title
KR102525061B1 (ko) 입력 데이터를 압축하여 저장하는 데이터 저장 장치
US8806108B2 (en) Semiconductor storage apparatus and method of controlling semiconductor storage apparatus
US9696910B2 (en) Data compression and management
US9229876B2 (en) Method and system for dynamic compression of address tables in a memory
US9471620B2 (en) Sub-block partitioning for hash-based deduplication
US20160321015A1 (en) Controller, data storage device, and computer program product
US9851917B2 (en) Method for de-duplicating data and apparatus therefor
US9690490B2 (en) Method for writing data, memory storage device and memory control circuit unit
US20180276114A1 (en) Memory controller
KR102606241B1 (ko) 가변 레이트 텍스처 압축을 수행하는 방법 및 압축기
US9720821B2 (en) Adaptive compression data storing method for non-volatile memories and system using the same
KR101730151B1 (ko) 플래시 메모리 장치에 데이터를 기록하는 방법, 플래시 메모리 장치, 및 저장 시스템
US10116329B1 (en) Method and system for compression based tiering
WO2014188528A1 (ja) メモリ装置、計算機システム及びメモリ装置の制御方法
CN110795272B (zh) 用于在可变大小的i/o上促进的原子性和延迟保证的方法和系统
KR20110113422A (ko) 저장 매체에 데이터를 저장하는 방법, 그를 이용한 데이터 저장 장치, 및 그것을 포함한 시스템
JP2014132750A (ja) データ圧縮方法と、該方法を行う装置
US10394453B1 (en) Method and system for choosing an optimal compression algorithm considering resources
US10387579B2 (en) Data pattern detecting device, semiconductor device including the same, and operating method thereof
JP2020149195A (ja) メモリシステム
JP2018169773A (ja) ストレージ装置、ストレージ装置の制御方法及びプログラム
US20150161044A1 (en) Data encoding for non-volatile memory
KR102072412B1 (ko) 데이터 압축 회로의 동작 방법과 상기 방법을 수행할 수 있는 장치들
US11068208B2 (en) Capacity reduction in a storage system
US11461173B1 (en) Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement

Legal Events

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