KR101660190B1 - 데이터 압축 및 관리 - Google Patents

데이터 압축 및 관리 Download PDF

Info

Publication number
KR101660190B1
KR101660190B1 KR1020157001499A KR20157001499A KR101660190B1 KR 101660190 B1 KR101660190 B1 KR 101660190B1 KR 1020157001499 A KR1020157001499 A KR 1020157001499A KR 20157001499 A KR20157001499 A KR 20157001499A KR 101660190 B1 KR101660190 B1 KR 101660190B1
Authority
KR
South Korea
Prior art keywords
data
compressed
page
management unit
data segments
Prior art date
Application number
KR1020157001499A
Other languages
English (en)
Other versions
KR20150033663A (ko
Inventor
트로이 에이. 매닝
트로이 디. 라슨
마틴 엘. 컬리
제프리 엘. 미더
스티브 지. 바드
딘 씨. 에이리스
Original Assignee
마이크론 테크놀로지, 인크
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크론 테크놀로지, 인크 filed Critical 마이크론 테크놀로지, 인크
Publication of KR20150033663A publication Critical patent/KR20150033663A/ko
Application granted granted Critical
Publication of KR101660190B1 publication Critical patent/KR101660190B1/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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6064Selection of Compressor
    • H03M7/6082Selection strategies

Landscapes

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

Abstract

본 발명은 데이터 압축 및 관리를 위한 장치 및 방법을 포함한다. 복수의 방법이 관리 유닛 양에 대응하는 복수의 데이터 세그먼트를 수신하는 단계, 상기 복수의 데이터 세그먼트의 데이터 세그먼트 각각의 각자의 압축률을 결정하는 단계, 각자의 결정된 압축률에 따라 복수의 데이터 세그먼트의 세그먼트 각각을 압축하는 단계, 데가터의 관리 유닛 양에 대응하는 복수의 데이터 세그먼트에 대응하는 압축된 및/또는 압축되지 않은 데이터 세그먼트를 포함하는 압축된 관리 유닛을 형성하는 단계, 및 적어도 압축된 관리 유닛을 포함하는 데이터의 페이지를 형성하는 단계를 포함한다.

Description

데이터 압축 및 관리{DATA COMPRESSION AND MANAGEMENT}
본 발명은 일반적으로 반도체 메모리 및 방법에 관한 것이며, 더 구체적으로 데이터 압축 및 관리를 위한 장치 및 방법에 관한 것이다.
일반적으로 메모리 소자는 컴퓨터 또는 그 밖의 다른 전자 소자 내 내부, 반도체, 집적 회로로 제공되는 것이 일반적이다. 휘발성 및 비-휘발성 메모리를 포함하여 여러 다른 유형의 메모리가 존재한다. 휘발성 메모리는 자신의 데이터를 유지하기 위한 전력을 필요로 하고 랜덤-액세스 메모리(RAM), 동적 랜덤 액세스 메모리(DRAM), 및 동기식 동적 랜덤 액세스 메모리(SDRAM) 등을 포함한다. 비-휘발성 메모리는 전력이 공급되지 않을 때 저장된 데이터를 유지함으로써 영속 데이터를 제공할 수 있고 NAND 플래시 메모리, NOR 플래시 메모리, 리드 온리 메모리(ROM), 전기 소거 가능 프로그램 가능 ROM(EEPROM), 소거 가능 프로그램 가능 ROM(EPROM), 및 저항 가변 메모리 가령 상 변화 랜덤 액세스 메모리(PCRAM) , 저항성 랜덤 액세스 메모리(RRAM), 및 자기저항 랜덤 액세스 메모리(MRAM) 등을 포함할 수 있다.
메모리 소자들은 함께 조합되어 메모리 시스템의 저장 볼륨, 가령, 솔리드 스테이트 드라이브(SSD)를 형성할 수 있다. 솔리드 스테이트 드라이브는 비-휘발성 메모리(가령, NAND 플래시 메모리 및 NOR 플래시 메모리)를 포함하고 및/또는 휘발성 메모리(가령, DRAM 및 SRAM), 그 밖의 다른 유형의 비-휘발성 및 휘발성 메모리를 포함할 수 있다.
솔리드 스테이트 드라이브는 하드 드라이브에 비해 성능, 크기, 중량, 강건성, 동작 온도 범위, 및 전력 소비의 측면에서 이점을 가질 수 있기 때문에, SSD는 컴퓨터를 위한 메인 저장 볼륨으로서 하드 디스크 드라이브를 대체하도록 사용될 수 있다. 예를 들어, SSD는 탐색 시간, 대기시간(latency), 및 자기 디스크 드라이브와 연관된 그 밖의 다른 전기-기계적 딜레이를 피할 수 있도록 하는 이동 부분의 결여로 인해 자기 디스크 드라이브에 비교할 때 우등한 성능을 가질 수 있다. SSD 제조업체는 내부 배터리 서플라이를 이용하지 않을 수 있어서 드라이브를 더 다용도이며 컴팩트하게 만들 수 있는 플래시 SSD를 만들기 위해 비-휘발성 플래시 메모리를 사용할 수 있다.
SSD는 메모리 동작, 가령, 읽기 및 쓰기 동작과 연관된 호스트로부터 명령어를 수신하여 (가령, 메모리 소자와 호스트 간) 데이터를 전송할 수 있다. 예컨대, SSD와 연관된 처리량을 증가시키는 것 및/또는 SSD의 저장 용량을 증가시키는 것이 바람직할 수 있다.
도 1은 본 발명의 복수의 실시예에 따르는 적어도 하나의 메모리 시스템을 포함하는 컴퓨팅 시스템의 형태로 된 장치의 블록도이다.
도 2는 본 발명의 복수의 실시예에 따르는 데이터 압축을 도시하는 블록도이다.
도 3a 및 3b는 본 발명의 복수의 실시예에 따라 복수의 압축된 관리 유닛의 구성을 도시한다.
도 4는 본 발명의 복수의 실시예에 따라 데이터 압축 및 관리에 대응하는 기능적 흐름도이다.
도 5는 본 발명의 복수의 실시예에 따르는 데이터 압축 및 관리와 연관된 기능적 흐름도이다.
도 6a는 본 발명의 복수의 실시예에 따르는 관리 유닛을 도시한다.
도 6b는 본 발명의 복수의 실시예에 따르는 데이터의 복수의 페이지에 할당되는 복수의 CMU를 도시한다.
도 6c는 본 발명의 복수의 실시예에 따르는 데이터의 페이지에 할당되는 복수의 CMU를 도시한다.
도 7은 본 발명의 복수의 실시예에 따르는 데이터 압축 및 관리에 대응하는 기능적 흐름도를 도시한다.
본 발명은 데이터 압축 및 관리를 위한 장치 및 방법을 포함한다. 복수의 방법은 데이터의 관리 유닛(managed unit) 양에 대응하는 복수의 데이터 세그먼트를 수신하는 단계, 상기 복수의 데이터 세그먼트의 데이터 세그먼트 각각의 각자의 압축률(compressibility)을 결정하는 단계, 각자의 결정된 압축률에 따라 복수의 데이터 세그먼트의 데이터 세그먼트 각각을 압축하는 단계, 관리 유닛 양에 대응하는 복수의 데이터 세그먼트에 대응하는 압축된 및/또는 압축되지 않은 데이터 세그먼트를 포함하는 압축된 관리 유닛을 형성하는 단계, 및 적어도 압축된 관리 유닛을 포함하는 데이터의 페이지를 형성하는 단계를 포함한다.
복수의 방법이 메모리에 데이터의 페이지를 저장하는 단계를 포함하며, 상기 데이터의 페이지는 상기 데이터의 페이지 내 복수의 압축된 관리 유닛의 물리적 구성을 가리키는 메타데이터를 포함한다. 복수의 압축된 관리 유닛의 압축된 관리 유닛 각각은 데이터의 관리 유닛 양에 대응하고, 상기 데이터의 관리 유닛 양은 복수의 (N개의) 압축되지 않은 데이터 세그먼트에 대응하고 압축된 관리 유닛 각각은 페이지의 복수의 양자화된 경계 중 하나에서 시작되며, 각각의 연속되는 양자화된 경계 사이의 공간 할당이 압축되지 않은 데이터 세그먼트를 수용할 수 있다.
본 발명의 이하의 상세한 설명에서, 본 명세서의 일부분을 형성하며 예시로서 본 발명의 하나 이상의 실시예가 실시될 수 있는 방식을 도시하는 첨부된 도면이 참조된다. 이들 실시예는 해당 분야의 통상의 기술자가 본 명세서의 실시예를 실시하기에 충분히 상세히 기재되고 그 밖의 다른 실시예가 사용될 수 있으며, 본 명세서의 범위 내에서 프로세스, 전기, 및/또는 구조적 변경이 이뤄질 수 있음이 이해될 것이다. 특히, 도면의 참조번호와 관련하여 본 명세서에서 사용될 때, 지시어 "N"은 이렇게 지정된 특정 특징부가 복수 개 포함될 수 있음을 가리킨다. 본 명세서에서 사용될 때, "복수의(a number of)" 특정한 것은 하나 이상의 이러한 것을 지칭할 수 있다(가령, 복수의 메모리 소자는 하나 이상의 메모리 소자를 지칭할 수 있다).
본 명세서의 도면은 첫 번째 숫자(들)이 도면 번호에 대응하고 나머지 숫자가 도면 내 요소 또는 구성요소를 식별하는 번호매기기 법칙을 따른다. 서로 다른 도면들 간 유사한 요소 또는 구성요소가 유사한 숫자의 사용에 의해 식별될 수 있다. 예를 들어, 230은 도 2의 요소 "30"을 지칭할 수 있고, 유사한 요소가 도 4에서 430으로 언급될 수 있다. 자명하다시피, 본 명세서의 다양한 실시예에서 나타난 요소들은 더해지거나, 교환되거나, 및/또는 제거되어 복수의 본 명세서의 추가 실시예를 제공할 수 있다. 덧붙여, 자명하다시피, 도면에서 제공되는 요소들의 비율 및 상대 축척이 본 발명의 특정 실시예를 예시하기 위한 것이며 한정의 의미로 이해되어서는 안 된다.
도 1은 본 명세서의 복수의 실시예에 따르는 적어도 하나의 메모리 시스템(104)을 포함하는 컴퓨팅 시스템(100)의 형태로 된 장치의 블록도이다. 본 명세서에서 사용될 때, 메모리 시스템(104), 제어기(108), 또는 메모리 소자(110)는 개별적으로 "장치"라고도 간주될 수 있다. 상기 메모리 시스템(104)은 가령, 솔리드 스테이트 드라이브(SSD)일 수 있고, 호스트 인터페이스(106), 제어기(108)(가령, 프로세서 및/또는 그 밖의 다른 제어 회로), 및 메모리 시스템(104)의 저장 볼륨을 제공하는 복수의 메모리 소자(110-1, ..., 110-N)(가령, 솔리드 스테이트 메모리 소자, 가령, NAND 플래시 소자)를 포함할 수 있다.
도 1에 도시된 바와 같이, 제어기(108)는 복수의 채널을 통해 호스트 인터페이스(106) 및 메모리 소자(110-1, ..., 110-N )로 연결될 수 있고 메모리 시스템(104) 및 호스트(102) 간 데이터를 전송하도록 사용될 수 있다. 상기 인터페이스(106)는 표준화된 인터페이스의 형태를 가질 수 있다. 예를 들어, 메모리 시스템(104)이 컴퓨팅 시스템(100)에서의 데이터 저장을 위해 사용될 때, 상기 인터페이스(106)는 SATA(serial advanced technology attachment), PCIe(peripheral component interconnect express), 또는 USB(universal serial bus), 및 그 밖의 다른 연결기 및 인터페이스일 수 있다. 그러나 일반적으로 인터페이스(106)는 메모리 시스템(104)과 인터페이스(106)에 대한 호환 가능한 리셉터를 갖는 호스트(102) 간에 컨트롤, 주소, 데이터, 및 그 밖의 다른 신호를 전달하기 위한 인터페이스를 제공할 수 있다.
호스트(102)는 호스트 시스템, 가령, 개인 랩톱 컴퓨터, 데스크톱 컴퓨터, 디지털 카메라, 모바일 전화기, 또는 메모리 카드 리더, 그 밖의 다른 다양한 유형의 호스트일 수 있다. 호스트(102)는 시스템 마더보드 및/또는 백플레인(backplane)을 포함할 수 있고 복수의 메모리 액세스 소자(가령, 복수의 프로세서)를 포함할 수 있다.
제어기(108)는 메모리 소자(110-1, ..., 110-N)와 통신하여 데이터 읽기, 쓰기, 소거 동작, 그 밖의 다른 동작을 제어할 수 있다. 상기 제어기(108)는, 예를 들어, 하드웨어 및/또는 펌웨어(가령, 하나 이상의 집적 회로) 및/또는 복수의 메모리 소자(110-1, ..., 110-N)로의 액세스를 제어하고 호스트(102)와 메모리 소자(110-1, ..., 110-N) 간 데이터 전송을 촉진하기 위한 소프트웨어의 형태로 된 복수의 구성요소를 포함할 수 있다. 예를 들어, 도 1에 도시된 예시에서, 제어기(108)는 압축/압축해제 구성요소(compression/압축해제 component)(112)(가령, 압축/압축해제 엔진), 암호화 구성요소(114), 번역 구성요소(translation component)(116), 및 버퍼 관리 구성요소(118)를 포함한다.
압축/압축해제 구성요소(112)는 본 명세서에 기재된 복수의 실시예에 따라 데이터를 압축 및/또는 압축해제하도록 사용될 수 있다. 암호화 구성요소(114)는 예를 들어, 고급 암호화 표준(advanced encryption standard)(AES) 같은 암호화 규격에 따라, 데이터를 암호화 및/또는 해역하도록 사용될 수 있다. 번역 구성요소(116)는, 예를 들어, 호스트(102)로부터 수신된 명령어를 복수의 메모리 소자(110-1, ..., 110-N)로의 원하는 액세스를 얻기 위해 적절한 명령어로 번역하는 것과 관련하여 사용될 수 있다. 예를 들어, 호스트(102)는 메모리 시스템(104)을 주소지정할 때, 논리 주소(가령, 논리 블록 주소(LBA))를 사용할 수 있다. 상기 번역 구성요소(116)는 논리 주소에서 메모리 소자(110-1, ..., 110-N) 내 물리 위치(가령, 물리 주소)로의 맵핑(mapping)과 그 반대 방향의 맵핑(가령, 플래시 번역 계층(flash translation layer)(FTL)의 일부로서)을 제공할 수 있다. 이러한 주소 맵핑은 데이터 구조, 가령, 표의 형태로 번역 구성요소(116)에 의해 제공될 수 있고, 호스트(102)로 하여금 메모리 소자(110-1, ..., 110-N)의 물리적 특성을 무시할 수 있게 하여, 메모리 시스템(104)의 저장 볼륨이 논리 데이터 세그먼트의 연속 선형 맵(가령, 섹터(sector))으로서 취급될 수 있게 할 수 있다.
제어기(108)는 그 밖의 다른 구성요소, 가령, 메모리 시스템(104)과 연관된 메모리 동작을 제어하기 위해 사용될 수 있는 버퍼 관리 구성요소(118) 및 그 밖의 다른 다양한 구성요소를 포함할 수 있다. 본 명세서에서 더 기재될 바와 같이, 버퍼 관리 구성요소(118)는 본 명세서의 복수의 실시예에 따라 데이터 압축 및 관리와 연관되어 사용될 수 있는 복수의 버퍼를 포함할 수 있다.
메모리 소자(110-1, ..., 110-N)는 메모리 셀(가령, 비-휘발성 메모리 셀)의 복수의 어레이를 포함할 수 있다. 어레이는 가령 NAND 아키텍처를 갖는 플래시 어레이일 수 있다. 그러나 실시예는 특정 유형의 메모리 어레이 또는 어레이 아키텍처에 한정되지 않는다. 메모리 셀은, 예를 들어, 메모리 셀의 복수의 물리 페이지를 포함하는 복수의 블록으로 그룹화될 수 있다. 복수의 블록은 메모리 셀의 한 평면(plane)에 포함될 수 있고 어레이는 복수의 평면을 포함할 수 있다. 예를 들어, 메모리 소자는 페이지당 8KB(킬로바이트)의 사용자 데이터, 블록당 128 페이지의 사용자 데이터, 평면당 2048 블록, 소자당 16 평면을 저장하도록 구성될 수 있다.
동작 중에, 데이터가, 가령, 데이터의 페이지로서 메모리 시스템의 메모리 소자(가령, 시스템(104)의 메모리 소자(110-1, ..., 110-N))에 써지거나 및/또는 메모리 소자로부터 읽힐 수 있다. 따라서, 데이터의 페이지가 메모리 시스템의 데이터 전송 크기라고 지칭될 수 있다. 데이터는 섹터(가령, 호스트 섹터)라고 지칭되는 데이터 세그먼트로 호스트(가령, 호스트(102))로/호스트로부터 전송될 수 있다. 따라서 데이터의 섹터는 호스트의 데이터 전송 크기라고 지칭될 수 있다.
데이터의 페이지가 사용자 데이터의 복수의 바이트(가령, 복수의 데이터 섹터를 포함하는 데이터 페이로드)뿐 아니라 이에 대응하는 메타데이터까지 포함할 수 있지만, 데이터의 페이지의 크기는 종종 사용자 데이터를 저장하기 위해 사용되는 바이트의 수만 지칭할 수 있다. 예를 들어, 4KB의 페이지 크기를 갖는 데이터의 페이지가 4KB의 사용자 데이터(가령, 512B의 섹터 크기를 가정하는 8섹터)뿐 아니라 사용자 데이터에 대응하는 복수의 바이트(가령, 32B, 54B, 224B 등)의 메타데이터를 포함할 수 있다. 상기 메타데이터는 무결성 데이터(integrity data), 가령, 에러 데이터(가령, 에러 검출 및/또는 교정 코드 데이터) 및/또는 주소 데이터(가령, 논리 주소 데이터), 사용자 데이터에 대응하는 그 밖의 다른 메타데이터를 포함할 수 있다.
도 2는 본 명세서의 복수의 실시예에 따르는 데이터 압축을 도시하는 블록도이다. 도 2에서, 블록(230)은 호스트(가령, 도 1과 관련하여 앞서 기재된 호스트(102))로부터 수신되고 메모리, 가령, 도 1에 (가령, 쓰기 동작과 관련하여) 도시된 메모리 소자(110-1, ..., 110-N)에 저장될(가령, 써질) 데이터 세그먼트(가령, 사용자 데이터의 섹터)를 나타낸다. 데이터 섹터(230) 각각은 이에 대응하는(가령, 이와 연관된) 논리 주소(가령, LBA)를 가질 수 있고 "X" 바이트의 섹터 크기를 가질 수 있으며, 여기서 X는 예를 들어 512B이다. 실시예는 특정 섹터 크기에 한정되지 않으며, 호스트로부터 수신된 일부 섹터(230)가 상이한 섹터 크기를 가질 수 있다. 하나의 섹터(230)가 도 2에 도시되어 있지만, 복수의 섹터(230)가 특정 쓰기 동작과 연관되어 호스트로부터 수신될 수 있다(가령, 복수의 연속하는 LBA에 대응하는 복수의 섹터).
도 2에서 도시된 바와 같이, 섹터(230)는 압축 구성요소(212), 가령, 도 1과 관련하여 앞서 기재된 제어기(108)의 압축/압축해제 구성요소(112)로 제공될 수 있다. 상기 압축 구성요소(212)는 숫자 압축 스킴, 가령, 허프만 코딩(Huffman coding), 새논-파노 코딩(Shannnon-Fano coding), 피보나치 코딩(Fibonacci coding), 산술 코딩(Arithmetic coding), 및/또는 엘리아스 감마 코딩(Elias gamma coding), 그 밖의 다른 압축 스킴에 따라 데이터를 압축하도록 구성될 수 있다.
본 명세서의 복수의 실시예에서, 압축 구성요소(212)는 섹터(230)의 압축률(가령, 섹터가 압축될 수 있는 정도)을 결정할 수 있다. 복수의 실시예에서, 압축 구성요소(212)는 결정된 압축률에 따라 섹터(230)를 압축하고 (가령, 압축률을 기초로, 섹터(230)가 압축 가능한 경우) 압축 가능 섹터(230)에 대응하는 압축 레벨(compression level)(CL)을 결정하도록 구성될 수 있다. 복수의 실시예에서, 압축 구성요소(212)는 압축 헤더(CH)를 섹터(230)에 추가할 수 있다. 압축 헤더는 가령 정보, 가령, 섹터(230)가 압축 가능하지 여부, 섹터(230)의 압축률(가령, 섹터에 대응하는 압축 비), 압축된 섹터의 크기(가령, 압축된 섹터에 대응하는 데이터의 바이트 수), 및/또는 압축된 섹터의 포맷, 그 밖의 다른 정보를 제공할 수 있다. 압축 헤더는 "Y" 바이트의 크기를 가질 수 있으며, 여기서 Y는 예를 들어 4B일 수 있다.
도 2는 섹터(230)의 여러 다른 압축률을 기초로 결정된 여러 다른 압축 레벨(232-U (UNCOMPRESSED), 232-0 (CL0), 232-1 (CL1), 232-2 (CL2), 및 232-3 (CL3))을 도시한다. 예를 들어, 압축 레벨(232-U)은 압축 불가능 섹터(uncompressible sector)(234)라고 지칭될 수 있는 압축되지 않은 섹터(234)에 대응한다. 압축되지 않은 섹터(234)는 압축 불가능 또는 최소 압축 가능 데이터를 포함하는 X 바이트 섹터(230)(가령, 압축 가능하지 않은 또는 X-Z 바이트를 초과하여 압축 가능하지 않은 X 바이트 섹터(230), 여기서 "Z"는 예를 들어 4B인 논리 주소(LA) 크기임)를 나타낸다. 따라서 압축 불가능 섹터(234)는 수신된 섹터(230)와 동일한 수의 바이트(이 경우, 예를 들어 X 바이트)를 포함할 수 있다. 압축 불가능 섹터(234)는 또한 섹터가 압축된 데이터를 포함하지 않는다는 지시 또는 섹터와 연관된 데이터가 최소 임계 크기 미만(가령, X-Z 바이트 미만)만큼 압축된다는 지시, 그 밖의 다른 섹터(234)에 대응하는 정보를 제공할 수 있는 압축 헤더(240-U)를 포함한다. 예를 들어, 압축되지 않은 섹터(234)에 대응하는 압축 헤더(240-U)는 섹터(234)에 대응하는 LA일 수 있고 4B의 크기를 가질 수 있다.
도 2에 도시된 예시에서, 압축 레벨(232-0)은 압축된 섹터(236-0)에 대응하고, 압축 레벨(232-1)은 압축된 섹터(236-1)에 대응하며, 압축 레벨(232-2)은 압축된 섹터(236-2)에 대응하고, 압축 레벨(232-3)은 압축된 섹터(236-3)에 대응한다. 도 2에 도시된 예시에서, 압축된 섹터(236-0)는 X- Z 바이트와 (X+Y)/2 - Y - Z 바이트 사이로 압축 가능하다고 결정된 X 바이트 섹터(230)를 나타내고, 압축된 섹터(236-1)는 (X+Y)/2 -Y - Z 바이트와 (X+Y)/4 - Y - Z 바이트 사이로 압축 가능하다고 결정되는 X 바이트 섹터(230)를 나타내며, 압축된 섹터(236-2)는 (X+Y)/4 - Y - Z 바이트와 (X+Y)/8 - Y - Z 바이트 사이로 압축 가능하다고 결정되는 X 바이트 섹터(230)을 나타내며, 압축된 섹터(236-3)는 (X+Y)/8 - Y - Z 바이트 이하로 압축 가능하다고 결정된 X 바이트 섹터(230)를 나타낸다.
압축된 섹터(236-0, 236-1, 236-2, 및 236-3) 각각은 자신에 대응하는 각자의 "가비지(garbage)" 데이터(238-0, 238-1, 238-2, 및 238-3 )를 가진다. 상기 "가비지" 데이터는 압축된 섹터(236-0, 236-1, 236-2, 및 236-3)가 일시적으로 유지되는 버퍼의 잔여 부분을 지칭할 수 있다. 예를 들어, 압축된 데이터 섹터(가령, 236-0)가 400 바이트의 데이터를 포함하고 512 바이트 버퍼에 유지는 경우, 가비지 데이터 부분(가령, 238-0)은 상기 버퍼의 나머지를 채우는 112 바이트의 데이터일 것이다.
압축된 섹터(236-0, 236-1, 236-2, 및 236-3) 각각은 자신에 대응하는 각자의 압축 헤더(240-0, 240-1, 240-2, 및 240-3) 및 논리 주소(242-0, 242-1, 242-2, 및 242-3)를 포함한다. 압축 헤더(240-0, 240-1, 240-2, 및 240-3)는, 예를 들어, 4B 헤더일 수 있고, 각자의 압축된 섹터(236-0, 236-1, 236-2, 및 236-3)에 대한 다양한 정보를 제공할 수 있다. 상기 논리 주소(242-0, 242-1, 242-2, 및 242-3)는, 가령, 각자의 압축된 섹터(236-0, 236-1, 236-2, 및 236-3)에 대응하는 4B LBA일 수 있다. 실시예는 압축 헤더(240-0, 240-1, 240-2, 및 240-3) 또는 논리 주소(242-0, 242-1, 242-2, 및 242-3)에 대한 특정 크기에 한정되지 않는다. CH 크기 및 LA 크기는 이 예시의 경우 압축 레벨(232-U 및 232-0 내지 232-3)에 대응하는 압축률 범위에 영향을 미칠 수 있다.
복수의 실시예에서, 압축된 섹터(236-0, 236-1, 236-2, 및 236-3) 및 압축되지 않은 섹터(234)가 압축 구성요소(212)에 의해 압축된 후 (가령, 암호화 구성요소, 가령, 도 1에 도시된 암호화 구성요소(114)를 통해) 암호화된다. 복수의 실시예에서, 압축 헤더(240-0, 240-1, 240-2, 240-3, 및 240-U) 및/또는 논리 주소(242-0, 242-1, 242-2, 및 242-3)가 암호화되지 않은 채 남겨질 수 있다(가령, 이들은 암호화 구성요소 주변으로 라우팅될 수 있다).
또한 도 2는 표준 섹터(230-S) 및 대응하는 LA(242-S)를 도시한다. 본 명세서에서 사용될 때, 표준 섹터(가령, 230-S)는 압축 구성요소(가령, 212)에 제공되지 않는 호스트 섹터(가령, 230)를 지칭할 수 있다. 따라서 이 예시에서, 섹터(230-S)의 크기는 512B이고 LA(242-S)의 크기는 4B일 수 있다.
본 명세서 이하에서 추가로 기재될 바와 같이, 복수의 실시예에서, 복수의 압축된 관리 유닛(CMU)이 형성될 수 있으며, 이들 각각은 자신에게 할당된 복수의 압축된 데이터 세그먼트(가령, 압축된 섹터(236-0, 236-1, 236-2, 및 236-3)) 및 이에 대응하는 압축된 데이터 세그먼트에 대응하는 결정된 압축률 및/또는 압축 레벨을 기초로 할 수 있는, 대응하는 압축 값을 포함할 수 있다. 상기 CMU는 데이터의 페이지(가령, 논리 페이지)에 (가령, 제어기를 통해) 할당될 수 있고, 예를 들어, 상기 페이지 내 복수의 CMU의 특정 위치를 가리키는 메타데이터를 포함할 수 있다. 복수의 실시예에서, 예를 들어 서로 다른 대응하는 압축 값을 갖는 CMU를 포함하는 데이터의 페이지가 형성될 수 있다.
도 3a 및 3b는 본 명세서의 복수의 실시예에 따라 복수의 압축된 관리 유닛(CMU)의 구성을 도시한다. 도 3a 및 3b에 도시된 예시는 복수의 데이터 페이지(350, 350-0, 350-1, 350-2, 350-3, 350-4, 및 350-5)를 포함한다. 앞서 기재된 바와 같이, 데이터의 페이지는 메모리 시스템, 가령, 도 1의 시스템(104)의 데이터 전송 크기를 지칭할 수 있다. 예를 들어, 데이터는 한 번에 하나의 페이지로 메모리 시스템으로 써지거나 및/또는 메모리 시스템으로부터 읽힐 수 있다. 데이터의 페이지는 예를 들어 사용자 데이터의 관리 유닛 크기를 저장하도록 구성될 수 있다. 본 명세서에서 사용될 때, 관리 유닛은 번역 구성요소(가령, FTL), 가령, 도 1의 번역 구성요소(116)에 의해 관리되는 특정 개수(가령, "N"개)의 압축되지 않은 데이터 세그먼트(가령, 호스트 섹터 및 이에 대응하는 논리 주소)에 대응하는 데이터의 양을 일컫는다. 예를 들어, 도 3a에 도시된 바와 같이, 관리 유닛(MU)(360)는 8개의 데이터 세그먼트에 대응하는 데이터의 양을 포함할 수 있다(가령, 8개의 호스트 섹터(331-1 내지 331-8)와 이들 각자의 8개의 LA). 따라서 512B의 압축되지 않은 호스트 섹터 크기 및 4B의 LA 크기를 가정할 때, 데이터(360)의 관리 유닛 양은 4,128B일 수 있다(가령, 516B/섹터×8섹터). 실시예는 특정 관리 유닛 크기에 한정되지 않고 데이터의 페이지는 데이터(360)의 둘 이상의 관리 유닛 양을 저장하도록 구성될 수 있다.
도 3a 및 3b에 도시된 예시에서, 데이터 페이지(350, 350-0, 350-1, 350-2, 350-3, 350-4, 및 350-5) 각각은 데이터(360)의 하나의 관리 유닛 양(가령, 512B 호스트 섹터 크기 및 4B LA 크기에 대응하는 516B 데이터 세그먼트 8개)을 포함한다. 페이지(350-0, 350-1, 350-2, 350-3, 350-4, 및 350-5) 각각은 하나 이상의 압축된 관리 유닛(CMU)뿐 아니라 이에 대응하는 메타데이터를 포함하는 페이로드 부분을 포함한다. CMU는 (가령, 압축 구성요소, 가령, 도 1의 112를 통해) 압축을 겪은 데이터(360)의 관리 유닛 양을 지칭한다. MU에 대응하는 데이터 세그먼트(가령, 331-1 내지 331-8) 중 하나 이상이 압축 가능하지 않거나 최소한만 압축될 수 있기 때문에(가령, 도 2에 도시된 압축 불가능 섹터(234)), CMU의 크기는 달라질 수 있다. 예를 들어, CMU는 동일한 및/또는 유사한 크기의 MU를 가질 수 있거나(가령, 모든 섹터가 압축 불가능 또는 최소한만 압축 가능함), 감소된 크기를 가질 수 있다(가령, MU에 대응하는 복수의 데이터 세그먼트 중 하나 이상이 압축 가능함). 따라서 데이터(360)의 관리 유닛 양에 대응하는 데이터의 페이지는 복수의 CMU를 포함할 수 있다(가령, 복수의 CMU는 데이터의 페이지에 할당될 수 있다).
도 3a 및 3b에 도시된 예시에서, 페이지(350, 350-0, 350-1, 350-2, 350-3, 350-4, 및 350-5) 각각은 각자의 메타데이터(362, 362-0, 362-1, 362-3, 362-4, 및 362-5)뿐 아니라 각자의 메타데이터(365, 365-0, 365-1, 365-3, 365-4, 및 365-5)까지 포함한다. 본 명세서에 추가로 기재될 바와 같이, 메타데이터(362, 362-0, 362-1, 362-3, 362-4, 및 362-5)는 각자의 페이지 내에(가령, 할당된) CMU의 구성을 가리키는 토폴로지 메타데이터를 포함할 수 있다. 예를 들어, 메타데이터(362, 362-0, 362-1, 362-3, 362-4, 및 362-5)는 각자의 페이지에 대응하는 복수의 CMU가 각자의 페이지에 대응하는 각자의 복수의 CMU에 대응하는 페이지 내에 및/또는 압축 값 내에 배열되는 방식을 가리킬 수 있다. 예를 들어, 메타데이터(362, 362-0, 362-1, 362-3, 362-4, 및 362-5)는 토폴로지 메타데이터, 가령, 도 3b에 도시된 토폴로지 메타데이터(366 및 367)를 포함할 수 있다. 도 3a 및 3b에 도시된 예시에서, 메타데이터(365, 365-0, 365-1, 365-3, 365-4, 및 365-5)는 각자의 페이지에 대응하는 하나 이상의 CMU에 대응하는 에러 데이터(가령, 에러 교정 코드(ECC) 데이터)를 포함한다. 실시예는 특정 유형의 에러 데이터에 한정되지 않으며, 가령, 순환 중복 체크(cyclic redundancy check)(CRC) 코드를 포함할 수 있다.
도 3a 및 3b에서, 데이터의 페이지(350, 350-0, 350-1, 350-2, 350-3, 350-4, 및 350-5) 각각은 복수의 CMU를 포함한다. 예를 들어, 각각의 CMU는 (가령 제어기에 의해) 자신에게 할당된 특정 개수의(가령, 8개의) 압축된 및/또는 압축되지 않은 섹터(가령, 도 2에 도시된 압축된 섹터(236-0, 236-1, 236-2, 236-3) 및/또는 압축되지 않은 섹터(234)를 포함할 수 있다. 따라서 CMU 각각은 특정 개수의(가령, 8개의) LBA에 대응하는 데이터를 포함할 수 있다. 복수의 실시예에서, CMU 각각은 연속하는 LBA에 대응하는 데이터를 포함할 수 있다(가령, LBA(0-7)에 대응하는 데이터 섹터는 특정 CMU에 할당될 수 있고 및 LBA(8-15)에 대응하는 데이터 섹터는 상이한 CMU에 할당될 수 있다). 도 2와 관련하여 앞서 기재된 바와 같이 압축 레벨(가령, UNCOMPRESSED(압축되지 않음), CL0, CL1, CL2, 및 CL3)이 각각의 섹터에 대해 (압축률을 기초로 또는 압축률의 부재를 기초로) 결정될 수 있다. 압축 레벨은 압축률 범위를 나타낼 수 있다. 예를 들어, 도 2에 도시된 예시에서, X 바이트와 X - Z 바이트 사이로 압축된 섹터(가령, 호스트 섹터(230 + Z), 여기서 Z는 LA 크기와 동일함)가 압축 불가능 또는 최소한으로 압축 가능한 섹터(UNCOMPRESSED)에 대응하고, X - Z 바이트 내지 (X+Y)/2 - Y - Z 바이트로 압축된 섹터가 압축 레벨(CL0)에 대응하며, (X+Y)/2 - Y - Z 바이트 내지 (X+Y)/4 - Y - Z 바이트로 압축된 섹터가 압축 레벨(CL1)에 대응하며, (X+Y)/4 - Y - Z 바이트 내지 (X+Y)/8 -Y -Z 바이트로 압축된 섹터가 압축 레벨(CL2)에 대응하고, (X+Y)/8 -Y -Z 바이트 미만으로 압축된 섹터가 압축 레벨(CL3)에 대응한다. 복수의 실시예에서, 압축 레벨의 수는 정해질 수 있지만, 실시예는 특정 수의 압축 레벨에 한정되지 않는다(가령, 4개보다 많거나 적은 서로 다른 압축 레벨 및 압축되지 않은 레벨이 존재할 수 있다).
복수의 실시예에서, CMU 각각은 자신에 대응하는 특정 압축 값(가령, CV0, CV1, CV2, 및 CV3, 또는 압축되지 않음)을 가질 수 있다. 각자의 CMU에 대응하는 압축 값은 각자의 CMU에 할당된 각자의 압축된 섹터에 할당되는 공간의 양(가령, 바이트)를 가리킬 수 있고, 예를 들어, 각자의 CMU에 할당된 각자의 압축된 섹터에 대응하는 결정된 압축 레벨(가령, CL0, CL1, CL2, 및 CL3, 또는 압축되지 않음)을 기초로 할 수 있다. 예를 들어, 512B의 압축되지 않은 섹터 크기, 4B의 CH 크기 및 4B의 LA 크기를 가정하면, CL0의 압축 레벨은 508B 내지 250B의 압축된 섹터 크기를 가리킬 수 있고, CL1의 압축 레벨은 250B 내지 120B의 압축된 섹터 크기를 가리킬 수 있으며, CL2의 압축 레벨은 120B 내지 56B의 압축된 섹터 크기를 가리킬 수 있으며, CL3의 압축 레벨은 56B 이하의 압축된 섹터 크기를 가리킬 수 있다. 예를 들어, 압축 값(가령, CV0, CV1, CV2, 및 CV3, 또는 압축되지 않음)은 특정 압축 레벨(가령, CL0, CL1, CL2, 및 CL3, 또는 압축되지 않음)에 대응하는 최대 압축된 섹터 크기에 대응할 수 있다. 예를 들어, 압축 값(CV0)은 (가령, 압축 레벨(CL0)에 대응하는 최대 압축된 섹터 크기인 508B를 갖는) 특정 CMU에 대응하는 압축된 섹터당 508B 공간 할당을 가리킬 수 있다. 마찬가지로, 압축 값(CV1)은 (가령, 압축 레벨(CL1)에 대응하는 최대 압축되는 섹터 크기인 250B를 갖는) 특정 CMU에 대응하는 압축된 섹터당 250B 공간 할당을 가리킬 수 있다. 또한 압축 값(CV2)는 (가령, 압축 레벨(CL2)에 대응하는 최대 압축된 섹터 크기인 120B를 갖는) 특정 CMU에 대응하는 압축된 섹터당 120B 공간 할당을 가리킬 수 있고, 압축 값(CV3)은 (가령, 압축 레벨(CL3)에 대응하는 최대 압축된 섹터 크기인 56B를 갖는) 특정 CMU에 대응하는 압축된 섹터당 56B 공간 할당을 가리킬 수 있다. "압축되지 않음"의 압축 값은 데이터의 MU 양(가령, 516B)이 508B 미만으로 압축될 수 없음을 가리킬 수 있다. 따라서 복수의 실시예에서, 압축 값(가령, CV0, CV1, CV2, 및 CV3, 또는 압축되지 않음)은 압축 비에 대응할 수 있다. 예를 들어, 상기의 실시예에서, CV1은 1/2의 압축 비에 대응할 수 있고, CV2는 1/4의 압축 비에 대응할 수 있으며, CV3은 1/8의 압축 비에 대응할 수 있다. 실시예는 이들 예시에 한정되지 않는다.
복수의 실시예에서, CMU에 대응하는 압축 값(가령, CV0, CV1, CV2, 및 CV3, 또는 압축되지 않음)은 (데이터의 MU 양에 대응하는) 복수의(가령, N개의) 압축된 섹터의 최소 압축 가능한 섹터를 기초로 결정될 수 있다. 예를 들어, MU가데이터의 8개의 섹터(가령, MU(360))에 대응하며 섹터 중 6개가 CL3의 압축 레벨을 갖고 섹터 중 2개가 CL2의 압축 레벨을 갖는 경우, CL2의 압축 레벨에 대응하는 CV2의 압축 값이 CMU에 할당될 수 있다. 따라서 CL3의 압축 레벨을 갖는 이들 압축된 섹터가 56B 이하로 압축됨에도 불구하고, 압축된 섹터당 120B의 공간 할당이 상기 CMU에 대해 제공될 수 있다. 따라서 압축 값은 또한 특정 CMU의 공간 할당(가령, 크기)를 가리킬 수 있다. 이 예시에서, 8개의 압축된 섹터를 포함하고 CV2의 압축 값을 갖는 CMU(가령, 8개의 LBA에 대응하는 CMU)는 약 1KB(가령, 압축된 섹터당 120B + 섹터당 4B CH 및 섹터당 4B LA × CMU당 8섹터)의 CMU를 가리킬 수 있다. 실시예는 이 예시에 한정되지 않는다.
도 3a에 도시된 예시에서, 페이지(350)는 "압축되지 않음"의 압축 값을 갖는 하나의 CMU를 포함한다. 즉, 페이지(350)의 CMU는 데이터(360)의 MU 양에 대응하는 압축되지 않은 또는 최소 압축되는 데이터 세그먼트를 포함한다. 예를 들어, 페이지(350)에 대응하는 MU(360)의 "N"개의 데이터 세그먼트는 세그먼트, 가령, 도 2와 관련하여 기재된 데이터 세그먼트(234)이다. 도 3a에 도시된 예시에서, 페이지(350-0)는 CV0의 대응하는 압축 값을 갖는 하나의 CMU를 포함한다. 페이지(350-1)는 CV1의 대응하는 압축 값을 각각 갖는 2개의 CMU를 포함한다. 페이지(350-2)는 CV2의 압축 값을 각각 갖는 4개의 CMU를 포함한다. 페이지(350-3)는 CV3의 대응하는 압축 값을 각각 갖는 8개의 CMU를 포함한다.
호스트 섹터(가령, 도 2에 도시된 섹터(230))가 압축 가능하지 않은 경우, 고정 페이지 크기를 갖는 페이지가 고정 개수의 섹터(가령, 각자의 고정 크기 섹터에 대응하는 고정 개수의 LBA)를 포함할 수 있다. 예를 들어, 4KB 페이지 크기가 8개의 압축되지 않은 섹터(가령, 각자 512B 섹터에 대응하는 8개의 LBA)를 포함할 수 있다. 본 명세서에 기재된 실시예에 따라 특정 페이지 크기에 대응하는 데이터 압축 및 관리는 섹터의 개수(가령, LBA)를 증가시키거나, 및/또는 상이한 복수의 섹터를 포함하는 데이터의 페이지를 제공할 수 있으며, 이는 그 밖의 다른 이점 중에서, 이전 데이터 압축 및 관리 시스템에 비해 저장 능력을 증가 및/또는 메모리 시스템의 처리율을 개선시킬 수 있다.
페이지(350, 350-0, 350-1, 350-2, 및 350-3) 각각이 4128B 페이지 크기(가령, 4KB의 사용자 데이터 더하기 LA 데이터)를 갖고 CMU 각각이 8개의 압축된 및/또는 압축되지 않은 섹터(가령, 각자 512B 섹터에 대응하는 8개의 LBA)와 이의 대응하는 4B CH 및/또는 4B LA를 갖는 예시를 고려하자. 이 예시의 경우, 페이지(350)의 CMU에 대응하는 압축 값 "압축되지 않음"의 가정은 CMU에 대응하는 8개의 섹터에 516B가 할당됨을 나타낸다(가령, CMU에 대응하는 섹터 각각이 최대 508B 더하기 4B CH로 압축된다). 따라서 페이지(350)의 CMU의 공간 할당(가령, 크기)은 4128B이며(가령, 516B×8개의 압축되지 않거나 최소 압축된 섹터), 페이지(350)의 총 크기는 4128B(가령, CMU당 4128B × 페이지당 1 CMU)이다. 이 예시에서, 압축 값 CV0을 가정하는 것은 CMU에 대응하는 8개의 섹터에 508B가 할당됨을 가리킨다(가령, CMU에 대응하는 섹터 각각은 250B 내지 508B로 압축되었다). 페이지(350)와 유사하게, 페이지(350-0)의 CMU의 공간 할당은, 페이지(350-0)의 크기가 4128B이도록(가령, 페이지(350)가 250B 내지 508B 더하기 섹터당 4B CH 및 섹터당 4B LA로 압축되는 8개의 호스트 섹터를 수용하도록) 4128B이다. 도 3a에 도시된 예시에서, 페이지(350-1)의 2개의 CMU에 대응하는 가정된 압축 값(CV1)은 각자의 CMU에 대응하는 8개의 압축된 섹터 각각에 250B가 할당됨을 가리킨다(가령, 압축된 섹터 각각인 250B 이하로 압축된다). 따라서 페이지(350-1)의 CMU 각각의 공간 할당이 2064B(가령, 250B × 8개의 압축된 섹터 더하기 섹터당 4B CH 및 섹터당 4B LA)이고, 페이지(350-1)의 총 크기는 4128B (가령, CMU당 2064B × 페이지당 2개의 CMU)이며, 이는 4128B 페이지 크기에 일치한다. 그러나 페이지(350-1)는 8개의 섹터를 포함하는 페이지(350 및 350-0)(가령, 압축되지 않음 또는 CV0의 압축 값을 갖는 CMU를 포함하는 페이지)보다 2배 많은 섹터(가령, 16개)를 포함한다. 이 예시에서, 페이지(350-2) 중 4개에 대응하는 가정된 압축 값(CV2)는 각자의 CMU에 대응하는 4개의 압축된 섹터 각각에 120B가 할당됨을 가리킨다(가령, 압축된 섹터 각각은 120B 이하로 압축되었다). 따라서 각각의 CMU의 크기는, 페이지(350-2)의 페이로드 부분이 4128B 페이지 크기보다 약간 작은 4096B (가령, CMU당 1024B × 페이지당 4개의 CMU)이도록, 1024B(가령, 120B × 8개의 압축된 섹터 더하기 섹터당 4B CH 및 섹터당 4B LA)이다. 그러나 페이지(350-2)는 8개의 섹터를 포함하는 페이지(350 및 350-0)(가령, 압축되지 않음 또는 CV0의 압축 값을 갖는 CMU를 포함하는 페이지)보다 4배 많은 섹터(가령, 32개)를 포함한다. 이 예시에서, 페이지(350-3)의 8개의 CMU에 대응하는 가정된 압축 값 CV3은 각자의 CMU에 대응하는 8개의 압축된 섹터 각각에 56B가 할당됨을 가리킨다(가령, 압축된 섹터 각각은 56B 이하로 압축되었다). 따라서 각각의 CMU의 크기는, 페이지(350-3)의 페이로드 부분이 4128B 페이지 크기보다 약간 작은 4096B (가령, CMU당 512B × 페이지당 8개의 CMU)이도록, 512B (가령, 56B × 8개의 압축된 섹터 더하기 섹터당 4B CH 및 섹터당 4B LA)이다. 그러나 페이지(350-3)는 8개의 섹터를 포함하는 페이지(350 및 350-0)(가령, 압축되지 않음 또는 CV0의 압축 값을 갖는 CMU를 포함하는 페이지)보다 8배 많은 섹터(가령, 64개)를 포함한다.
도 3b는 본 명세서에 기재된 실시예에 따라 형성될 수 있는 페이지(350-4 및 350-5)를 도시한다. 도 3b에 도시된 바와 같이 페이지(350-4 및 350-5)는 서로 다른 대응하는 압축 값을 갖는 복수의 CMU를 포함한다. 도시된 바와 같이, 페이지(350-4 및 350-5)의 CMU는 데이터(360)의 MU 양과 동일한 공간 할당에 들어 맞는다. 이 예시에서, 페이지(350-4)는 CV3의 압축 값을 갖는 2개의 CMU(358-1), CV2의 압축 값을 갖는 하나의 CMU(356-1), 및 CV1의 압축 값을 갖는 하나의 CMU(354-1)를 포함한다. 페이지(350-5)는 CV1의 압축 값을 각각 갖는 2개의 CMU(354-1)를 포함한다.
도 3b는 또한 페이지(350-4)에 대응하는 토폴로지 메타데이터(366) 및 페이지(350-5)에 대응하는 토폴로지 메타데이터(367)의 예시를 도시한다. 상기 토폴로지 메타데이터는 각자의 메타데이터 필드(362-4 및 362-5) 내에 포함될 수 있고, 가령 CMU가 각자의 페이지 내에서 구성되는 방식을 가리킬 수 있다. 도 3b에서 도시된 예시에서, 토폴로지 메타데이터(가령, 366 및 367)는 특정 페이지(350-4/350-5) 내 각자의 CMU의 압축 값뿐 아니라 CMU가 특정 페이지 내에 위치되는 방식을 가리킬 수 있는 8-비트 패턴을 포함한다.
도 3b에 도시된 예시에서, 토폴로지 메타데이터(366)는 페이지(350-4) 내 복수의 CMU(358-1, 356-1, 및 354-1) 각자의 특정 위치뿐 아니라 이들 각자의 CMU의 압축 값까지 가리킬 수 있는 비트 패턴 "11101000"을 포함한다. 마찬가지로, 토폴로지 메타데이터(367)는 페이지(350-5) 내 복수의 CMU(354-1) 각자의 특정 위치뿐 아니라 이들 각자의 CMU의 압축 값까지 가리킬 수 있는 비트 패턴 "10001000"을 포함한다.
이하에서 더 기재될 바와 같이, 복수의 실시예에서, 토폴로지 메타데이터(가령, 366/367)는 대응하는 데이터 페이지(가령, 메타데이터(362-1 내지 362-5)의 적어도 일부분)와 함께 메모리(가령, 도 1에 도시되는 메모리 소자(110-1, ..., 110-N))에 저장될 수 있다. 토폴로지 메타데이터는 (가령, 읽기 동작과 연관되어) 메모리로부터 불러와져서, 특정 데이터 페이지 내 복수의 CMU의 구성을 결정할 수 있다.
실시예는 도 3a 및 3b와 관련하여 기재된 예시에 한정되지 않는다. 예를 들어 이하에서 도 6-7과 관련하여 더 기재될 바와 같이, 복수의 실시예에서, 압축 동작은 메모리에 저장될 수신된 데이터의 관리 유닛 양에 따라 수행될 수 있고 CMU는 MU에 대응하는 압축된 및/또는 압축되지 않은 데이터 세그먼트를 포함할 수 있다. 데이터의 MU 양에 대응하는 복수의(가령, N개의) 데이터 세그먼트(가령, 섹터)는 하나의 그룹(가령, CMU 양의 데이터를 형성)으로 압축될 수 있고, N개의 섹터는 개별적으로 압축되고 그 후 조합되어 CMU를 형성할 수 있다. 상기 CMU는 페이지의 복수의 양자화된 경계 중 하나에서 시작하는 상기 CMU를 적어도 포함하는 데이터의 페이지로 할당될 수 있으며, 이때 연속하는 양자화된 경계 각각 사이의 공간 할당이 압축되지 않은 데이터 세그먼트를 수용할 수 있다.
도 4는 본 발명의 복수의 실시예에 따르는 데이터 압축 및 관리에 대응하는 기능적 흐름도를 도시한다. 도 4에서, 박스(430)는 호스트로부터 수신되고 (가령, 쓰기 동작과 연관되어) 압축 구성요소(412)로 제공된 복수의 데이터 세그먼트(가령, 호스트, 가령, 도 1에 도시된 호스트(102)로부터 수신된 데이터의 복수의 섹터)를 나타낸다. 압축 구성요소는 압축 구성요소, 가령, 도 2에 도시된 압축 구성요소(212) 또는 도 1에 도시된 압축/압축해제 구성요소(112)일 수 있다. 이 예시에서, 8개의 논리 주소(LA)에 대응하는 데이터가 압축 구성요소(412)에 제공된다. 8개의 LA는 8개의 섹터(가령, 8개의 512B의 압축되지 않은 호스트 섹터)에 대응할 수 있고, 이는 관리 유닛 양의 데이터에 대응할 수 있다. 따라서 복수의 실시예 및 도 4에 도시된 예시에서, CMU 각각은 사용자 데이터에 상응하는 8개의 섹터(가령, 8개의 논리 주소에 대응하는 사용자 데이터)를 포함할 수 있다. 복수의 실시예에서, LA는 CMU 각각이 가령 8개의 연속 LBA에 대응하는 섹터를 포함하도록 연속일 수 있다. 그러나 실시예는 이에 한정되지 않는다.
도 4에 도시된 바와 같이, 수신된 데이터(430)는 (가령, 이들 각자의 압축률에 따라) 압축 구성요소(412)에 의해 압축될 수 있고, 압축된 섹터(433-0 내지 433-7)가 각자의 버퍼(415)로 제공될 수 있다. 앞서 기재된 바와 같이, 압축 레벨이 각자의 압축된 섹터(433-0 내지 433-7) 각각에 대해 결정될 수 있다. 이 예시에서, 압축된 섹터(433-0, 433-2, 433-3, 433-5, 433-6, 및 433-7) 각각은 CL3의 압축 레벨을 갖고, 압축된 섹터(433-1 및 433-4) 각각은 CL2의 압축 레벨을 가진다. 예를 들어, 압축 레벨(CL2)는 120B 내지 56B로 압축된 섹터에 대응할 수 있고, 압축 레벨(CL3)은 56B 이하로 압축되는 섹터에 대응할 수 있다.
8개의 압축된 섹터(433-0 내지 433-7)를 포함하는 CMU(456)가 형성될 수 있다(가령, 압축된 데이터는 수신된 데이터의 MU 양에 대응한다). 상기 CMU(456)에 압축 값이 할당될 수 있고, 이는 결정된 압축 레벨 및/또는 압축된 섹터(433-0 내지 433-7)의 압축률을 기초로 할 수 있다. 할당된 압축 값은, 가령, 복수의 섹터(433-0 내지 433-7) 중 최소 압축 가능한 섹터를 기초로 할 수 있다. 예를 들어, 이 예시에서, 할당된 압축 값은 CV2이며, 이는 섹터(433-1 및 433-4)의 압축 레벨(CL2)에 대응한다.
도 4에 도시된 바와 같이, CMU(456)는 복수의 CMU를 포함하는 페이지(450)에 할당될 수 있다. 이 예시에서, 페이지(450)는 4개의 CMU를 포함하지만, 앞서 기재된 바와 같이, 데이터의 페이지는 4개보다 많거나 적은 CMU를 포함할 수 있다. 이 예시에서, 4128 페이지 크기보다 작은 총 4112B에 대하여, CV3의 압축 값을 갖는 2개의 CMU는 512B에 대응할 수 있고, CV2의 압축 값을 갖는 CMU(456)는 1024 바이트에 대응할 수 있으며, CV1의 압축 값을 갖는 CMU는 2064B에 대응할 수 있다. 그러나 총 페이지 크기에 비교할 때 CMU의 총 크기는 수용 가능한 압축 이득을 제공할 수 있다. 페이지(450)는 메모리에 저장될 수 있다(가령, 메모리 셀의 물리 페이지에 써질 수 있다). 즉, 논리 페이지(450)에 할당되는 CMU는 메모리의 메모리 셀의 물리 페이지에 저장될 수 있다. 논리 페이지 크기는 메모리 셀의 물리 페이지와 동일하거나 동일하지 않을 수 있다.
도 5는 본 발명의 복수의 실시예에 따르는 데이터 압축 및 관리에 대응하는 기능적 흐름도를 도시한다. 도 5에 도시된 예시는 복수의 CMU(555-1, 555-2, 및 555-3) 및 메타데이터(META)를 포함하는 페이지(550)를 포함한다. 상기 CMU(555-1, 555-2, 및 555-3)는 CMU, 가령, 앞서 도 2, 3a, 3b, 및 4와 관련하여 기재된 것일 수 있다. 도 5에 도시된 예시에서, CMU(555-1, 555-2, 및 555-3) 각각은 데이터의 8개의 압축된 섹터를 포함한다(가령, 압축된 데이터는 8개의 LBA에 대응한다). 상기 CMU(555-1 및 555-2)는 이 예시에서, 120B의 섹터당 공간 할당을 가리키는 이에 할당된 CV2의 대응하는 압축 값을 가진다(가령, CMU(555-1 및 555-2 )에 할당된 각각의 압축된 섹터가 120B 이하로 압축된다). 도 5에 도시된 바와 같이, CMU(555-2)는 압축된 섹터(582-0 내지 582-7)를 포함한다.
페이지(550)의 메타데이터(META)는 페이지(550) 내 CMU(555-1, 555-2, 및 555-3)의 물리적 구성뿐 아니라 이에 대응하는 이들 각자의 압축 값까지 가리킬 수 있는 토폴로지 메타데이터(574)(가령, 도 3b에 기재된 토폴로지 메타데이터(366 및 367))를 포함할 수 있다. 페이지(550)의 메타데이터(META)는 또한 페이지(550) 내 특정 CMU(555-1, 555-2, 및 555-3)의 시작 위치를 찾기 위해 사용될 수 있는 CMU 인덱스(576)를 더 포함할 수 있다.
도 5는 본 발명의 복수의 실시예에 따라 (가령, 읽기 동작과 연관하여) 타깃 논리 주소에 대응하는 타깃 CMU를 액세스하는 하나의 예시를 도시한다. 예를 들어, 도 5에 도시된 블록(570)은 페이지(560)의 CMU(555-2)에 대응하는 타깃 논리 주소(584)에 대응하는 읽기 요청을 나타낸다. 상기 읽기 요청은 호스트(가령, 도 1에 기재된 호스트(102)) 및/또는 제어기(가령, 도 1에 기재된 제어기(108))에 의해 개시될 수 있다.
복수의 실시예에서, 데이터 구조, 가령, 주소 번역 표(address translation table)가 제어기 상의 메모리(가령, DRAM, SRAM 등)에 저장되거나 및/또는 상기 주소 번역 표의 적어도 일부분이 제어기가 연결되는 메모리, 가령, 복수의 메모리 소자(가령, 110-1, ..., 110-N)에 저장될 수 있다. 상기 주소 번역 표는 번역 구성요소, 가령, 도 1에 기재된 번역 구성요소(116)에 의해 유지관리될 수 있고, 논리 주소에서 물리 주소로의 맵핑을 포함할 수 있다.
예를 들어, 도 5에 도시된 예시에서, 맵핑(572)은 타깃 논리 주소(584)가 할당되는 페이지(550)에 대응하는 물리 주소를 가리킨다. 복수의 실시예 및 도 5에 도시된 바와 같이, 맵핑(572)은 또한 타깃 논리 주소(584)에 대응하는 특정 CMU(가령, 555-2)로의 오프셋 인덱스(가령, 578)를 포함한다. 동작 중에, 맵핑(572)에 의해 제공되는 물리 주소가 복수의 메모리 소자 내에서 페이지(550)의 위치를 찾기 위해 사용될 수 있다. 상기 토폴로지 메타데이터(574)는 페이지(550)의 메타데이터(META)로부터 불러와질 수 있다. 앞서 언급된 바와 같이, 토폴로지 메타데이터(574)는 페이지(550) 내 CMU(가령, 555-1, 555-2, 및 555-3)의 물리적 구성(가령, 페이지 내 CMU의 특정 위치, 이에 대응하는 압축 값 등)을 가리킨다. 맵핑(572)에 의해 제공되는 오프셋 인덱스는 페이지(550) 내 타깃 CMU의 시작 위치를 가리킬 수 있다.
예를 들어, 도 5에 도시된 예시에서, 오프셋 인덱스(578)(가령, "2")는 타깃 CMU(555-2)의 페이지(550) 내 시작 위치를 가리킨다. 타깃 CMU(555-2)(가령, 이 예시에서 CV2)에 할당된 알려진 압축 값을 기초로 하여, 타깃 CMU(555-2)에 대응하는 섹터(가령, 582-0 내지 582-7)는 효과적으로 순회(traverse)될 수 있다. 타깃 논리 주소(584)의 위치가 찾아질 수 있고 이에 대응하는 압축된 데이터(582-3)가 호스트로 전송되어 읽기 요청(570)에 대응하는 읽기 동작을 완료할 수 있다. 복수의 실시예에서, 타깃 논리 주소(가령, 584)에 대응하는 압축된 데이터(가령, 582-3)가 호스트로 전송되기 전에 (가령, 압축/압축해제 구성요소, 가령, 도 1에 도시된 압축/압축해제 구성요소(112)를 통해) 압축해제될 수 있다.
도 6a는 본 발명의 복수의 실시예에 따르는 관리 유닛(660)을 도시한다. 앞서 기재된 바와 같이, 관리 유닛(MU)은 압축되지 않은 데이터 세그먼트(가령, 섹터)에 대응하는 데이터의 양(가령, 크기)를 지칭할 수 있다. 압축 동작은 CMU를 형성하기 위한 데이터 세그먼트에 상응하는 MU에 대해 수행될 수 있다. 앞서 기재된 바와 같이, MU에 대응하는 데이터 세그먼트의 개수(가령 N)는 예를 들어 8일 수 있으며, 하나 이상의 CMU가 MU에 대응하는 공간 할당 내에 들어 맞을 수 있도록 하는 압축 동작을 통해 압축 가능하거나 압축 가능하지 않을 수 있다. 예를 들어, MU(660)에 대응하는 "N"개의 섹터가 압축 가능하지 않거나 최소한으로 압축 가능한 경우, "N"개의 섹터를 포함하는 단 하나의 CMU만 MU(660)에 대응하는 공간 할당 내에 들어 맞을 수 있다.
예를 들어, MU(660)는 8개의 압축되지 않은 512B의 호스트 섹터(가령, 4KB)와 동일한 공간 할당을 나타낼 수 있다. 복수의 실시예 및 도 6a에 도시된 바와 같이, MU(가령, 660)에 대응하는 공간 할당이 "N"개의 섹터(가령, 8개의 512B 섹터)에 대응하는 복수의 양자화된 공간 할당(가령, 671-1 내지 671-8)으로 분할될 수 있다. 따라서 도 6a에 도시된 MU(660)는 각자의 공간 할당(671-1 내지 671-8)에 대응하는 복수의 양자화된 경계(673-1 내지 673-8)을 포함한다. 따라서 각각의 연속하는 양자화된 경계(673-1 내지 673-8) 사이의 공간 할당이 압축되지 않은 섹터를 수용할 수 있다.
도 6b는 본 발명의 복수의 실시예에 따르는 데이터의 복수의 페이지(650-1 및 650-2)에 할당되는 복수의 CMU(661-1, 661-2, 661-3, 661-4)를 도시한다. 복수의 실시예에서, 하나의 페이지가 데이터(660)의 MU 양을 수용할 수 있고, MU는 N(가령, 8)개의 압축되지 않은 섹터에 대응한다. 예를 들어 도 6b에 도시된 바와 같이, 페이지(650-1)는 데이터(660)의 MU 양을 수용할 수 있고, 페이지(650-2)는 데이터(660)의 MU 양을 수용할 수 있다. 이 예시에서, 페이지(650-1 및 650-2)는 각자의 페이지 내 CMU의 물리 구성 및 페이지에 대응하는 에러 데이터(가령, 665-1), 가령, ECC 데이터를 가리킬 수 있는 메타데이터(가령, 662-1 및 662-2)를 포함한다.
앞서 기재된 바와 같이, CMU(661-1, 661-2, 661-3, 661-4) 각각은 데이터의 MU 양(가령, N개의 섹터, 여기서 N은 가령 8일 수 있다)에 대응할 수 있다. 페이지에 할당된 CMU 각각은 8개의 압축되거나 압축되지 않은 섹터에 대응하는 사용자 데이터를 포함할 수 있다. 예를 들어, CMU(661-1 내지 661-4) 각각은 8개의 압축된 섹터에 대응하는 사용자 데이터를 포함한다(가령, N은 8과 동일하다).
복수의 실시예 및 도 6b에 도시된 바와 같이, 하나의 페이지의 CMU 각각은 페이지의 복수의 양자화된 경계 중 하나에서 시작한다. 도 6b에 도시된 바와 같이, 페이지의 양자화된 경계는 MU(가령, 660)와 연관된 양자화된 공간 할당에 대응할 수 있다. 복수의 실시예에서, 페이지의 CMU는 또한 페이지의 양자화된 경계 상에서 종료되지만, CMU는 첫 번째 페이지(가령, 650-1)의 양자화된 경계에서 시작할 수 있고 상이한 페이지(가령, 650-2)의 양자화된 경계 상에서 종료할 수 있다.
도 6b의 예시에서, 페이지(650-1 및 650-2)는 MU(660)과 연관된 8개의 각자의 공간 할당(671-1 내지 671-8)에 대응하는 8개의 양자화된 경계(673-1 내지 673-8)를 포함한다. CMU(661-1)는 페이지(650-1)의 양자화된 경계(673-1)에서 시작하고 경계(673-3)에서 종료하여, 2개의 공간 할당에 걸쳐 있을 수 있다. 이 예시에서, CMU(661-1)에 대응하는 사용자 데이터는 2개보다 적은 양의 전체 공간 할당(full space allocation)으로 압축된다. 따라서 CMU(661-1)는 CMU(661-1)에 대응하는 버퍼(도시되지 않음)를 채우도록 사용될 수 있는 상당한 양의 가비지 데이터(675-1)를 포함한다. CMU(661-2)는 페이지(650-1)의 양자화된 경계(673-3)에서 시작하여 경계(673-4)에서 종료하여 하나의 공간 할당에 걸쳐 있을 수 있다. 이 예시에서, CMU(661-2)에 대응하는 사용자 데이터는 하나보다 적은 양의 전체 공간 할당으로 압축된다. 따라서 CMU(661-2)는 상당한 양의 가비지 데이터(675-2)를 포함한다. CMU(661-3)는 페이지(650-1)의 양자화된 경계(673-4)에서 시작하고 경계(673-8)에서 종료하여 4개의 공간 할당에 걸쳐 있도록 할 수 있다. 이 예시에서, CMU(661-3)에 대응하는 사용자 데이터는 4개보다 적은 양의 전체 공간 할당으로 압축된다. 따라서 CMU(661-3)는 상당한 양의 가비지 데이터(675-3)를 포함한다. CMU(661-4)는 페이지(650-1)의 양자화된 경계(673-8)에서 시작하고 페이지(650-2)의 경계(673-2)에서 종료하여 2개의 공간 할당에 걸쳐 있을 수 있다. 이 예시에서, CMU(661-4)에 대응하는 사용자 데이터는 2개보다 적은 양의 전체 공간 할당으로 압축된다. 따라서 CMU(661-4)는 상당한 양의 가비지 데이터(675-4)를 포함한다.
CMU(661-1 내지 661-4) 각각은 각자의 메타데이터 필드(663-1 내지 663-4)를 포함한다. 상기 메타데이터 필드(663-1 내지 663-4)는 예를 들어, 대응하는 CMU의 크기(가령, 길이), 다음 CMU의 시작 위치, 및/또는 CMU와 연관된 그 밖의 다른 정보를 가리킬 수 있다. 복수의 실시예에서, 상기 CMU(가령, 661-1 내지 661-4)가 개별적인 각자의 메타데이터 필드를 포함하지 않거나 메타데이터(가령, 663-1 내지 663-4)가 대응하는 CMU의 시작 부분이 아닌 다른 위치에 위치할 수 있다.
도 6c는 본 발명의 복수의 실시예에 따르는 데이터의 페이지(650-3)에 할당된 복수의 CMU(661-1 내지 661-8 )를 도시한다. 상기 페이지(650-3)는 데이터(660)의 MU 양, 가령, 8개의 압축되지 않은 섹터에 대응하는 데이터의 양을 수용할 수 있다. 이 예시에서, 페이지(650-3)는 페이지 내 CMU의 물리적 구성 및 페이지에 대응하는 에러 데이터(665-3), 가령, ECC 데이터를 포함할 수 있는 메타데이터(662-3)를 포함한다.
앞서 기재된 바와 같이, CMU(CMUs 661-1 내지 661-8) 각각은 8개의 섹터에 대응한다(가령, MU(660)가 8개의 섹터와 동일한 데이터의 양 더하기 대응하는 LA에 대응한다고 가정). 따라서 페이지(650-3)에 할당된 CMU(661-1 내지 661-8) 각각이 8개의 압축된 또는 압축되지 않은 섹터에 대응하는 사용자 데이터를 포함할 수 있다. 이 예시에서, CMU(661-1 내지 661-8) 각각은 8개의 압축된 섹터에 대응하는 사용자 데이터를 포함한다(가령, N은 8과 동일하고 CMU 각각은 압축 가능한 8개의 호스트 섹터에 대응한다).
도 6c에 도시된 실시예에서, 페이지(650-3)의 CMU(661-1 내지 661-8) 각각은 페이지의 복수의 양자화된 경계(673-1 내지 673-8) 중 하나에서 시작한다. 이 예시에서, 페이지(650-3)는 MU(660)와 연관된 8개의 각자의 공간 할당(671-1 내지 671-8)에 대응하는 8개의 양자화된 경계(673-1 내지 673-8)를 포함한다. 도 6c에 도시된 예시에서, CMU(661-1 내지 661-8) 각각은 8개의 양자화된 경계(673-1 내지 673-8) 사이에 들어 맞도록(가령, CMU(661-1 내지 661-8) 각각이 도 6a에 도시된 8개의 공간 할당(671-1 내지 671-3)의 단일 공간 할당 내에 들어맞도록) 압축 가능한 사용자 데이터를 포함한다. CMI(661-1)는 페이지(650-3)의 양자화된 경계(673-1)에서 시작하고 경계(673-2)에서 종료하며, CMU(661-1)에 대응하는 버퍼(도시되지 않음)를 채우도록 사용될 수 있는 양의 가비지 데이터(675-1)를 포함한다. CMU(661-2)는 페이지(650-3)의 양자화된 경계(673-2)에서 시작하고 경계(673-3)에서 종료하며 상당한 양의 가비지 데이터(675-2)를 포함한다. CMU(661-3)는 피이지(650-3)의 양자화된 경계(673-3)에서 시작하고 경계(673-4)에서 종료하며 상당한 양의 가비지 데이터(675-3)를 포함한다. CMU(661-4)는 페이지(650-3)의 양자화된 경계(673-4)에서 시작하고 경계(673-5)에서 종료하며 상당한 양의 가비지 데이터를 포함하지 않는다. CMU(661-5)는 페이지(650-3)의 양자화된 경계(673-5)에서 시작하고 경계(673-6)에서 종료하며 상당한 양의 가비지 데이터(675-5)를 포함한다. CMU(661-6)는 페이지(650-3)의 양자화된 경계(673-6)에서 시작하고 경계(673-7)에서 종료하며 상당한 양의 가비지 데이터를 포함하지 않는다. CMU(661-7)는 페이지(650-3)의 양자화된 경계(673-7)에서 시작하고 경계(673-8)에서 종료하며 상당한 양의 가비지 데이터(675-7)를 포함한다. CMU(661-8)는 페이지(650-3)의 양자화된 경계(673-8)에서 시작하며 공간 할당(671-8)에 걸쳐 있고, 상당한 양의 가비지 데이터(675-8)를 포함한다.
페이지(650-3)의 CMU(661-1 내지 661-8) 각각은 각자의 메타데이터 필드(663-1 내지 663-8)를 포함한다. 상기 메타데이터 필드(663-1 내지 663-8)는, 예를 들어, 대응하는 CMU의 크기(가령, 길이), 다음 CMU의 시작 위치, 및/또는 CMU와 연관된 그 밖의 다른 정보를 가리킬 수 있다. 복수의 실시예에서, 상기 CMU(가령, 661-1 내지 661-8)는 개별적인 각자의 메타데이터 필드를 포함하지 않거나, 메타데이터 필드(가령, 663-1 내지 663-4)가 대응하는 CMU의 시작부분이 아닌 다른 위치에 위치할 수 있다.
도 7은 본 발명의 복수의 실시예에 따르는 데이터 압축 및 관리에 대응하는 기능적 흐름을 도시한다. 도 7에서, 박스(730)는 호스트로부터 수신되고 압축 구성요소(712)(가령, 쓰기 동작과 연관하여)로 제공되는 복수의 데이터 세그먼트(가령, 호스트, 가령, 도 1에 도시된 호스트(102)로부터 수신된 데이터의 복수의 섹터)를 나타낸다. 압축 구성요소(712)는 압축 구성요소, 가령, 도 2에 도시된 압축 구성요소(212) 또는 도 1에 도시된 압축/압축해제 구성요소(112)일 수 있다. 이 예시에서, N개의 논리 주소(가령, 8개의 논리 주소(LA))에 대응하는 MU 양(가령, 8개의 섹터)의 데이터가 압축 구성요소(712)로 제공된다. N개의 LA가 MU 양의 데이터에 대응할 수 있는 N개의 512B의 압축되지 않은 호스트 섹터에 대응할 수 있다.
압축 구성요소(712)는 수신된 MU에 대응하는 N개의 섹터를 (섹터 중 하나 이상이 압축 가능한 경우) 압축할 수 있고, 이는 압축된 관리 유닛(CMU)를 형성한다. 따라서 복수의 실시예에서, CMU는 사용자 데이터(가령, N개의 논리 주소에 대응하는 사용자 데이터)에 상응하는 N개의 섹터를 포함할 수 있다. 복수의 실시예에서, 압축 구성요소(712)에 의해 수신된 MU에 대응하는 데이터의 N개의 압축되지 않은 섹터는 (가령, 각자의 압축률에 따라서) 개별적으로 압축될 수 있고, 조합되어 CMU를 형성할 수 있다. 그러나 실시예는 이에 한정되지 않는다. 예를 들어, 복수의 실시예에서, 압축 구성요소(712)에 의해 수신된 MU에 대응하는 N개의 압축되지 않은 섹터의 그룹이 다 함께 압축되어 하나의 CMU를 형성할 수 있다.
복수의 실시예 및 도 7에 도시된 바와 같이, 압축 구성요소(712)에 의해 형성된 CMU는 데이터의 페이지(가령, 페이지(750))에 할당될 수 있다. 앞서 기재된 바와 같이, 데이터의 페이지는 복수의 CMU를 포함할 수 있다. 복수의 실시예에서, 상기 CMU는 페이지(750)에 대응하는 복수의 양자화된 경계(가령, 773-1 내지 773-8) 중 하나에서 시작할 수 있다. 연속하는 경계(773-1 내지 773-8) 사이의 공간 할당의 크기는 예를 들어 압축되지 않은 섹터를 수용하도록 정해질 수 있다.
이 예시에서, 페이지(750)는 정보, 가령, 페이지(750) 내 CMU의 물리적 구성을 제공할 수 있는 메타데이터(762)를 포함한다. 또한 페이지(750)는 페이지(750)에 할당된 특정 CMU에 대한 정보를 제공할 수 있는 CMU 메타데이터(763)를 포함한다. 예를 들어, 메타데이터(763)는 특정 CMU의 크기(가령, 길이) 및/또는 특정 CMU에 대응하는 논리 주소 정보, 그 밖의 다른 정보를 가리킬 수 있다.
결론
본 발명은 데이터 압축 및 관리를 위한 장치 및 방법을 포함한다. 복수의 방법은 데이터의 관리 유닛에 대응하는 복수의 데이터 세그먼트를 수신하는 단계, 상기 복수의 데이터 세그먼트의 데이터 세그먼트 각각의 각자의 압축률을 결정하는 단계, 복수의 데이터 세그먼트의 데이터 세그먼트 각각을 각자의 결정된 압축률에 따라 압축하는 단계, 데이터의 관리 유닛 양에 대응하는 복수의 데이터 세그먼트에 대응하는 압축된 및/또는 압축되지 않은 데이터 세그먼트를 포함하는 압축된 관리 유닛을 형성하는 단계, 및 적어도 압축된 관리 유닛을 포함하는 데이터의 페이지를 형성하는 단계를 포함한다.
본 명세서에 특정 실시예가 도시되고 기재되었지만, 해당 분야의 통상의 기술자라면 이들 결과를 얻기 위해 계산된 배열이 특정 실시예에 대해 치환될 수 있음을 알 것이다. 본 개시내용은 본 발명의 하나 이상의 실시예의 각색 또는 변형을 커버하기 위한 것이다. 상기의 기재는 예시로서 이뤄졌으며 한정을 위한 것이 아님을 이해해야 한다. 상기의 실시예 및 본 명세서에 특정하게 기재되어 있지 않은 그 밖의 다른 실시예의 조합이 상기의 기재를 읽은 해당 분야의 통상의 기술자에게 자명할 것이다. 본 발명의 하나 이상의 실시예의 범위는 상기의 구조 및 방법이 사용되는 그 밖의 다른 적용예를 포함한다. 따라서 본 발명의 하나 이상의 실시예의 범위는 이하의 특허청구범위 및 이러한 특허청구범위가 적용되는 균등물의 전체 범위를 참조하여 결정되어야 한다.
이상의 상세한 설명에서, 일부 특징들이 본 발명을 간결화하기 위한 목적으로 하나의 실시예에서 그룹화된다. 이 개시 방법은 본 발명의 개시된 실시예가 각각의 청구항에서 명시적으로 언급된 특징보다 더 많은 특징을 사용해야 한다는 의도를 반영한 것이라고 해석되어서는 안 된다. 오히려 다음의 청구항이 반영할 때, 본 발명은 하나의 단일 개시된 실시예의 모든 특징보다 적은 특징으로 구성된다. 따라서 다음의 청구항은 상세한 설명 내에 포함되며, 각각의 청구항은 하나의 개별 실시예로서 나타난다.

Claims (38)

  1. 메모리를 동작시키기 위한 방법으로서, 상기 방법은
    데이터의 관리 유닛(managed unit) 양에 대응하는 복수의 데이터 세그먼트를 수신하는 단계,
    상기 복수의 데이터 세그먼트의 데이터 세그먼트 각각의 각자의 압축률(compressibility)을 결정하는 단계,
    각자의 결정된 압축률에 따라 복수의 데이터 세그먼트의 세그먼트 각각을 압축하는 단계,
    데이터의 관리 유닛 양에 대응하는 복수의 데이터 세그먼트에 대응하는 압축된 또는 압축되지 않은 데이터 세그먼트를 포함하는 압축된 관리 유닛(compressed managed unit)을 형성하는 단계, 및
    적어도 압축된 관리 유닛을 포함하는 데이터의 페이지를 형성하는 단계
    를 포함하는, 메모리를 동작시키기 위한 방법.
  2. 제1항에 있어서, 상기 복수의 데이터 세그먼트는 제 1 복수의 데이터 세그먼트이고 상기 압축된 관리 유닛은 제 1 압축된 관리 유닛이며, 상기 방법은
    데이터의 관리 유닛 양에 대응하는 제 2 복수의 데이터 세그먼트를 수신하는 단계,
    상기 제 2 복수의 데이터 세그먼트의 데이터 세그먼트 각각의 각자의 압축률을 결정하는 단계,
    각자의 결정된 압축률에 따라 상기 제 2 복수의 데이터 세그먼트의 데이터 세그먼트 각각을 압축하는 단계,
    데이터의 관리 유닛 양에 대응하는 제 2 복수의 데이터 세그먼트에 대응하는 압축된 또는 압축되지 않은 데이터 세그먼트를 포함하는 제 2 압축된 관리 유닛을 형성하는 단계, 및
    적어도 제 1 및 제 2 압축된 관리 유닛을 포함하도록 데이터의 페이지를 형성하는 단계
    를 포함하는, 메모리를 동작시키기 위한 방법.
  3. 제1항에 있어서, 압축된 관리 유닛을 형성하는 단계는 압축된 관리 유닛에 대한 압축 값을 결정하는 단계를 포함하는, 메모리를 동작시키기 위한 방법.
  4. 제3항에 있어서, 압축된 관리 유닛에 대한 압축 값을 결정하는 단계는 압축된 관리 유닛의 데이터 세그먼트 중 최소 압축 가능한 데이터 세그먼트를 결정하는 단계를 포함하는, 메모리를 동작시키기 위한 방법.
  5. 제3항에 있어서, 페이지를 형성하는 단계는 서로 다른 결정된 압축 값을 갖는 적어도 2개의 압축된 관리 유닛을 포함하는 페이지를 형성하는 단계를 포함하는, 메모리를 동작시키기 위한 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서, 메모리에 데이터의 페이지를 저장하는 단계를 더 포함하며, 상기 데이터의 페이지는
    적어도 압축된 관리 유닛, 및
    상기 페이지 내 압축된 관리 유닛의 특정 위치를 가리키는 메타데이터
    를 포함하는, 메모리를 동작시키기 위한 방법.
  7. 제1항 내지 제5항 중 어느 한 항에 있어서, 복수의 데이터 세그먼트의 데이터 세그먼트 각각에 대한 각자의 압축 레벨을 각자의 결정된 압축률을 기초로 하여 결정하는 단계를 더 포함하고, 압축된 관리 유닛을 형성하는 단계는 서로 다른 결정된 압축 레벨을 갖는 데이터 세그먼트를 포함하는 압축된 관리 유닛을 형성하는 단계를 더 포함하는, 메모리를 동작시키기 위한 방법.
  8. 제1항 내지 제5항 중 어느 한 항에 있어서, 페이지를 형성하는 단계는 각각 동일한 개수의 데이터 세그먼트를 포함하는 적어도 2개의 압축된 관리 유닛을 갖는 페이지를 형성하는 단계를 포함하는, 메모리를 동작시키기 위한 방법.
  9. 제1항 내지 제5항 중 어느 한 항에 있어서, 각자의 결정된 압축률에 따라 복수의 데이터 세그먼트의 세그먼트 각각을 압축하는 단계는 복수의 데이터 세그먼트 중 특정 데이터 세그먼트가 압축 불가능하다고 결정된 경우 복수의 데이터 세그먼트 중 상기 특정 데이터 세그먼트를 압축하지 않는 단계를 포함하는, 메모리를 동작시키기 위한 방법.
  10. 제1항 내지 제5항 중 어느 한 항에 있어서, 복수의 데이터 세그먼트는 대응하는 복수의 논리 주소와 함께 호스트로부터 수신된 데이터의 압축되지 않은 섹터이며, 데이터의 관리 유닛 양은 압축되지 않은 데이터의 N개의 섹터 및 N개의 논리 주소에 대응하며, 압축되지 않은 데이터의 N개의 섹터 및 N개의 논리 주소는 페이지에 들어 맞으며, 상기 페이지를 형성하는 단계는 적어도 2개의 압축된 관리 유닛을 포함하는 페이지를 형성하는 단계를 더 포함하고, 적어도 2개의 압축된 관리 유닛 각각은 데이터의 N개의 압축된 또는 압축되지 않은 섹터 및 N개의 논리 주소에 대응하는, 메모리를 동작시키기 위한 방법.
  11. 압축된 데이터 관리를 위한 방법으로서, 상기 방법은
    메모리에 데이터의 페이지를 저장하는 단계를 포함하고, 상기 데이터의 페이지는 데이터의 페이지 내 복수의 압축된 관리 유닛의 물리적 구성을 가리키는 메타데이터를 포함하며,
    압축된 관리 유닛 각각은 각자에 대응하는 복수의 압축된 데이터 세그먼트의 압축 레벨을 적어도 부분적으로 기초로 하는 각자의 압축 값을 갖고,
    각자의 압축된 관리 유닛에 대응하는 복수의 압축된 데이터 세그먼트의 데이터 세그먼트 각각은 각자의 논리 주소 및 각자 대응하는 압축 헤더를 갖는, 압축된 데이터 관리를 위한 방법.
  12. 제11항에 있어서,
    데이터의 페이지의 물리 주소, 및
    타깃 위치 주소에 대응하는 타깃 압축된 관리 유닛의 데이터의 페이지 내 위치
    를 가리키는 맵핑(mapping)을 제공하는 단계를 더 포함하는, 압축된 데이터 관리를 위한 방법.
  13. 제12항에 있어서, 타깃 압축된 관리 유닛과 연관된 압축 값을 적어도 부분적으로 기초로 하여 타깃 압축된 관리 유닛을 순회함으로써 타깃 논리 주소에 대응하는 특정 압축된 데이터 세그먼트의 위치를 찾는 단계를 더 포함하는, 압축된 데이터 관리를 위한 방법.
  14. 제13항에 있어서, 상기 맵핑을 제공하는 단계는 상기 타깃 압축된 관리 유닛의 데이터의 페이지 내 시작 위치를 가리키는 인덱스를 제공하는 단계를 더 포함하는, 압축된 데이터 관리를 위한 방법.
  15. 장치로서,
    복수의 메모리 소자를 포함하는 메모리, 및
    상기 복수의 메모리 소자와 연결되며,
    관리 유닛(managed unit) 양에 대응하는 복수의 데이터 세그먼트를 수신하는 것
    상기 복수의 데이터 세그먼트의 데이터 세그먼트 각각의 각자의 압축률(compressibility)을 결정하는 것,
    각자의 결정된 압축률에 따라 복수의 데이터 세그먼트의 세그먼트 각각을 압축하는 것,
    데이터의 관리 유닛 양에 대응하는 복수의 데이터 세그먼트에 대응하는 압축된 또는 압축되지 않은 데이터 세그먼트를 포함하는 압축된 관리 유닛(compressed managed unit)을 형성하는 것,
    적어도 압축된 관리 유닛을 포함하는 데이터의 페이지를 형성하는 것
    을 제어하도록 구성된 제어기
    를 포함하는, 장치.
  16. 제15항에 있어서, 상기 데이터의 페이지는 상기 페이지 내 압축된 관리 유닛의 특정 위치를 가리키는 토폴로지 메타데이터를 더 포함하는, 장치.
  17. 제16항에 있어서, 상기 제어기는 복수의 데이터 세그먼트와 연관된 논리 주소를 복수의 데이터 세그먼트의 물리 위치로 맵핑하기 위한 데이터 구조를 제공하는 것을 제어하도록 더 구성되고, 상기 데이터 구조는
    복수의 데이터 세그먼트와 연관된 물리 주소, 및
    압축된 관리 유닛의 페이지 내 물리 위치, 및
    상기 페이지에 할당되는 복수의 추가 압축된 관리 유닛의 페이지 내 물리 위치
    를 가리키는 오프셋 인덱스
    를 포함하는, 장치.
  18. 장치로서,
    데이터의 페이지를 저장하는 메모리
    를 포함하며, 상기 데이터의 페이지는 데이터의 페이지 내 복수의 압축된 관리 유닛의 물리적 구성을 가리키는 메타데이터를 포함하고,
    압축된 관리 유닛 각각은 각자에 대응하는 복수의 압축된 데이터 세그먼트의 압축 레벨을 적어도 부분적으로 기초로 하는 각자의 압축 값을 갖고,
    각자의 압축된 관리 유닛에 대응하는 복수의 압축된 데이터 세그먼트의 데이터 세그먼트 각각은 각자의 논리 주소 및 각자 대응하는 압축 헤더를 갖는, 장치.
  19. 제18항에 있어서, 메모리로 연결된 제어기를 더 포함하고, 상기 제어기는 데이터의 페이지의 물리 주소 및 타깃 논리 주소에 대응하는 타깃 압축된 관리 유닛의 데이터의 페이지 내 위치를 가리키는 맵핑을 제공하는 번역 구성요소를 포함하는, 장치.
  20. 제19항에 있어서, 상기 제어기는 타깃 압축된 관리 유닛에 대응하는 압축 값을 적어도 부분적으로 기초로 하는 타깃 압축된 관리 유닛을 순회함으로써 타깃 논리 주소에 대응하는 특정 압축된 데이터 세그먼트의 위치를 찾는 것을 제어하도록 구성되는, 장치.
  21. 복수의 메모리 소자를 포함하는 메모리, 및
    상기 복수의 메모리 소자와 연결되며,
    메모리에 저장될 데이터를 수신하는 것,
    수신된 데이터의 관리 유닛 양에 대한 압축 동작을 수행하는 것 - 상기 관리 유닛 양은 복수의 (N개의) 압축되지 않은 데이터 세그먼트임 - ,
    N개의 데이터 세그먼트에 대응하는 압축된 또는 압축되지 않은 데이터 세그먼트를 포함하는 제 1 압축된 관리 유닛을 형성하는 것, 및
    적어도 제 1 압축된 관리 유닛을 포함하는 데이터의 페이지를 형성하는 것 - 제 1 압축된 관리 유닛은 페이지의 복수의 양자화된 경계 중 하나에서 시작하며, 연속된 양자화된 경계 각각 사이의 공간 할당은 압축되지 않은 데이터 세그먼트를 수용할 수 있음 -
    을 제어하도록 구성된 제어기
    를 포함하는, 장치.
  22. 제21항에 있어서, 페이지의 양자화된 경계의 개수는 N이며, 제 1 압축된 관리 유닛은 N개의 양자화된 경계 중 적어도 2개에 걸쳐 있는, 장치.
  23. 제22항에 있어서, 제 1 압축된 관리 유닛은 한 데이터의 페이지에서 또 다른 데이터의 페이지까지 걸쳐 있는, 장치.
  24. 제22항에 있어서, 페이지의 양자화된 경계의 개수는 N이며, 제 1 압축된 관리 유닛은 복수의 양자화된 경계 중 하나와 상기 복수의 양자화된 경계의 다음 하나 사이에 들어 맞는, 장치.
  25. 제24항에 있어서, 데이터의 페이지는 N개의 압축된 관리 유닛을 포함하고, N개의 압축된 관리 유닛 각각은 N개의 양자화된 경계 중 서로 다른 양자화된 경계 상에서 시작하는, 장치.
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
KR1020157001499A 2012-06-22 2013-06-21 데이터 압축 및 관리 KR101660190B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/531,090 US9148172B2 (en) 2012-06-22 2012-06-22 Data compression and management
US13/531,090 2012-06-22
PCT/US2013/047107 WO2013192548A1 (en) 2012-06-22 2013-06-21 Data compression and management

Publications (2)

Publication Number Publication Date
KR20150033663A KR20150033663A (ko) 2015-04-01
KR101660190B1 true KR101660190B1 (ko) 2016-09-26

Family

ID=49769439

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157001499A KR101660190B1 (ko) 2012-06-22 2013-06-21 데이터 압축 및 관리

Country Status (7)

Country Link
US (2) US9148172B2 (ko)
EP (1) EP2864889A4 (ko)
JP (1) JP6096291B2 (ko)
KR (1) KR101660190B1 (ko)
CN (1) CN104471547B (ko)
TW (1) TWI542159B (ko)
WO (1) WO2013192548A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10613758B2 (en) 2017-11-22 2020-04-07 SK Hynix Inc. Memory system and method of operating the same

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9772936B2 (en) 2008-07-10 2017-09-26 Micron Technology, Inc. Data collection and compression in a solid state storage device
US9927998B2 (en) * 2014-02-05 2018-03-27 Tidal Systems, Inc. Flash memory compression
US10503661B2 (en) 2014-05-21 2019-12-10 Qualcomm Incorporated Providing memory bandwidth compression using compressed memory controllers (CMCs) in a central processing unit (CPU)-based system
US10838862B2 (en) * 2014-05-21 2020-11-17 Qualcomm Incorporated Memory controllers employing memory capacity compression, and related processor-based systems and methods
US20160378352A1 (en) * 2015-06-26 2016-12-29 Intel Corporation Efficient solid state drive data compression scheme and layout
US10255004B2 (en) * 2015-11-16 2019-04-09 Marvell World Trade Ltd. Systems and methods for managing address-mapping data in memory devices
US11336294B2 (en) * 2016-06-10 2022-05-17 Apple Inc. Hybrid, adaptive virtual memory compression
US10503443B2 (en) * 2016-09-13 2019-12-10 Netapp, Inc. Systems and methods for allocating data compression activities in a storage system
US10592170B2 (en) 2017-01-25 2020-03-17 International Business Machines Corporation Optimizing dual-layered compression in storage systems
KR102299880B1 (ko) * 2017-04-04 2021-09-09 에스케이하이닉스 주식회사 데이터 변환 장치 및 방법
US10140215B1 (en) 2017-05-26 2018-11-27 Seagate Technology Llc Low overhead mapping for highly sequential data
CN113282235A (zh) * 2018-06-16 2021-08-20 王梅 基于缓存内移出的数据组进行动态处理的方法及系统
CN109274377A (zh) * 2018-08-22 2019-01-25 泰康保险集团股份有限公司 区块链网络的数据处理方法、装置、介质及电子设备
JP2020154525A (ja) 2019-03-19 2020-09-24 キオクシア株式会社 メモリシステムおよび情報処理システム
KR20200114483A (ko) * 2019-03-28 2020-10-07 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN111966285B (zh) * 2020-07-20 2022-09-06 四川虹美智能科技有限公司 向eeprom存储数据的方法、主控芯片和系统
TWI770870B (zh) * 2021-03-11 2022-07-11 台灣優化水務股份有限公司 流體量時間變化模式數據編碼方法
US11632128B2 (en) * 2021-06-07 2023-04-18 Dell Products L.P. Determining compression levels to apply for different logical chunks of collected system state information
US20230236725A1 (en) * 2022-01-25 2023-07-27 Dell Products L.P. Method to opportunistically reduce the number of SSD IOs, and reduce the encryption payload, in an SSD based cache in a deduplication file system
CN117240305B (zh) * 2023-11-15 2024-01-26 上海叁零肆零科技有限公司 一种管网拓扑数据压缩方法、装置、设备及可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011128792A (ja) 2009-12-16 2011-06-30 Toshiba Corp メモリ管理装置
US20110289263A1 (en) 2007-05-30 2011-11-24 Mcwilliams Thomas M System including a fine-grained memory and a less-fine-grained memory

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6577254B2 (en) 2001-11-14 2003-06-10 Hewlett-Packard Development Company, L.P. Data compression/decompression system
US6657564B2 (en) 2001-12-13 2003-12-02 International Business Machines Corporation Method and apparatus for compressing data in which dictionary sizes are reduced
KR100524076B1 (ko) 2003-11-13 2005-10-26 삼성전자주식회사 데이터 압축 및 복원 장치
US7194596B2 (en) * 2004-06-09 2007-03-20 Simpletech Global Limited Method of efficient data management with flash storage system
KR100849305B1 (ko) 2006-11-24 2008-07-29 삼성전자주식회사 데이터를 압축하여 관리하는 메모리 및 그 방법
US9395929B2 (en) * 2008-04-25 2016-07-19 Netapp, Inc. Network storage server with integrated encryption, compression and deduplication capability
US9772936B2 (en) 2008-07-10 2017-09-26 Micron Technology, Inc. Data collection and compression in a solid state storage device
US8347023B2 (en) 2008-10-06 2013-01-01 Marvell World Trade Ltd. Compression based wear leveling for non-volatile memory
JP5148542B2 (ja) * 2009-03-31 2013-02-20 株式会社エヌ・ティ・ティ・ドコモ データ共有システム、共有データ管理装置、共有データ管理装置の制御方法
US8131688B2 (en) 2009-08-26 2012-03-06 Lsi Corporation Storage system data compression enhancement
KR101602939B1 (ko) 2009-10-16 2016-03-15 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 데이터 관리 방법
US8364929B2 (en) 2009-10-23 2013-01-29 Seagate Technology Llc Enabling spanning for a storage device
US8013762B2 (en) 2009-11-03 2011-09-06 Seagate Technology Llc Evaluating alternative encoding solutions during data compression
KR20110113420A (ko) * 2010-04-09 2011-10-17 삼성전자주식회사 저장 매체에 데이터를 저장하는 방법, 그를 이용한 데이터 저장 장치, 및 그것을 포함한 시스템
US8892809B2 (en) * 2010-10-25 2014-11-18 Marvell World Trade Ltd. Data compression and encoding in a memory system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110289263A1 (en) 2007-05-30 2011-11-24 Mcwilliams Thomas M System including a fine-grained memory and a less-fine-grained memory
JP2011128792A (ja) 2009-12-16 2011-06-30 Toshiba Corp メモリ管理装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10613758B2 (en) 2017-11-22 2020-04-07 SK Hynix Inc. Memory system and method of operating the same

Also Published As

Publication number Publication date
CN104471547B (zh) 2018-04-20
EP2864889A1 (en) 2015-04-29
TW201419770A (zh) 2014-05-16
JP2015525423A (ja) 2015-09-03
WO2013192548A1 (en) 2013-12-27
US20160018993A1 (en) 2016-01-21
CN104471547A (zh) 2015-03-25
TWI542159B (zh) 2016-07-11
JP6096291B2 (ja) 2017-03-15
US9148172B2 (en) 2015-09-29
EP2864889A4 (en) 2016-07-13
US9696910B2 (en) 2017-07-04
KR20150033663A (ko) 2015-04-01
US20130342375A1 (en) 2013-12-26

Similar Documents

Publication Publication Date Title
KR101660190B1 (ko) 데이터 압축 및 관리
US11449252B2 (en) Method of writing and reading data in an NVM using Lpage identification headers
US10346312B2 (en) Variable-size flash translation layer
TWI609263B (zh) 可變大小快閃轉變層
US10853234B2 (en) Memory controller
KR101759658B1 (ko) 메모리 장치 및 메모리 시스템
US9335950B2 (en) Multiple stream compression and formatting of data for data storage systems
EP2757479A1 (en) Management of and region selection for writes to non-volatile memory
WO2014025536A1 (en) Single-read based soft-decision decoding of non-volatile memory
US9035809B2 (en) Optimizing compression engine throughput via run pre-processing
US11074124B2 (en) Method and system for enhancing throughput of big data analysis in a NAND-based read source storage
KR20180052739A (ko) 고체 상태 드라이브 컨트롤러를 사용한 데이터 중복 제거
GB2519629A (en) Variable-size flash translation layer
JP2016052046A (ja) 圧縮装置、伸長装置およびストレージ装置
US10268537B2 (en) Initializing a pseudo-dynamic data compression system with predetermined history data typical of actual data
KR20220072398A (ko) 메모리 장치 및 메모리 시스템
KR20230091001A (ko) 압축된 연속 취소 알고리즘을 통한 높은 처리량의 극 ecc 디코딩

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
FPAY Annual fee payment

Payment date: 20190910

Year of fee payment: 4