Nothing Special   »   [go: up one dir, main page]

KR102051179B1 - 데이터를 압축하는 시스템들 및 방법들 - Google Patents

데이터를 압축하는 시스템들 및 방법들 Download PDF

Info

Publication number
KR102051179B1
KR102051179B1 KR1020167018184A KR20167018184A KR102051179B1 KR 102051179 B1 KR102051179 B1 KR 102051179B1 KR 1020167018184 A KR1020167018184 A KR 1020167018184A KR 20167018184 A KR20167018184 A KR 20167018184A KR 102051179 B1 KR102051179 B1 KR 102051179B1
Authority
KR
South Korea
Prior art keywords
data
context
memory
identifier
group
Prior art date
Application number
KR1020167018184A
Other languages
English (en)
Other versions
KR20160105802A (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 KR20160105802A publication Critical patent/KR20160105802A/ko
Application granted granted Critical
Publication of KR102051179B1 publication Critical patent/KR102051179B1/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
    • 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/0644Management of space entities, e.g. partitions, extents, pools
    • 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/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]

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)
  • Memory System (AREA)

Abstract

방법은, 제1 데이터에 대응하고 그리고 제1 식별자로 식별가능한 제1 콘텍스트(context)에 대응하는 제1 기입 명령(write command) 및 제2 데이터에 대응하고 그리고 제2 식별자로 식별가능한 제2 콘텍스트에 대응하는 제2 기입 명령에 응답하여, 상기 제1 콘텍스트의 제1 식별자가 상기 제2 콘텍스트의 제2 식별자와 매칭하는지를 결정하는 단계를 포함한다. 상기 방법은, 또한, 상기 제1 콘텍스트의 제1 식별자가 상기 제2 콘텍스트의 제2 식별자와 매칭한다고 결정되면, 상기 제1 데이터 및 상기 제2 데이터를 포함하는 데이터의 압축 그룹을 형성하는 단계와; 그리고 상기 데이터의 압축 그룹에 대응하는 압축된 데이터를 발생시키는 단계를 포함한다.

Description

데이터를 압축하는 시스템들 및 방법들{SYSTEMS AND METHODS OF COMPRESSING DATA}
본 발명은 일반적으로 데이터 저장 디바이스에서 저장을 위해 데이터를 압축하는 것에 관한 것이다.
일부 호스트 디바이스들 및 데이터 저장 디바이스들은 메모리의 저장 용량을 효율적으로 이용하기 위해 데이터 압축을 사용한다. 데이터 압축은, 비트들의 제2 세트를 발생시키기 위해 비트들의 제1 세트를 포함하는 데이터를 인코딩함으로써 수행되고, 상기 비트들의 제2 세트는 상기 비트들의 제1 세트보다 더 적은 비트들을 포함한다. 따라서, 압축된 데이터는 원래의 데이터를 나타내기 위해 사용된 것보다 더 적은 비트들을 사용하여 표현된다. 그에 따라, 상기 압축된 데이터는, 상기 메모리의 이용가능한 저장 용량을 적게 사용하여 상기 메모리에 저장될 수 있다.
일반적으로, 데이터 압축은 상기 데이터로부터 중복되거나 불필요한 정보를 제거한다. 데이터 압축은, 데이터의 더 적은 블록들이 함께 압축될 때보다 데이터의 더 큰 블록들이 함께 압출될 때, 더 공간 효율적인 경향이 있다. 예를 들어, 데이터의 큰 블록이 압축될 때, 데이터의 큰 블록이 압축 이전에 많은 수의 데이터의 작은 블록들로 분할되는 경우보다 많은 비트들이 중복되는 것으로 고려될 수 있다. 따라서, 많은 비트들은, 분할된 작은 블록들을 압축하는 것보다 (한 단위로서) 데이터의 큰 블록을 압축함으로써 제거될 수 있다.
하지만, 데이터의 압축 및 압축해제는 시간이 걸리고 전력을 소모한다. 추가로, 데이터의 일부만이 호스트 디바이스에 의해 요청되는지 관계없이, 함께 압축된 데이터는 일반적으로 전체로서 압축해제되어야만 한다. 따라서, 관련된 데이터의 큰 블록을 함께 압축하는 것이 공간을 절약할 수 있는 반면에, 호스트 디바이스가 데이터의 일부를 요청할 때, (관련없는 부분들을 포함하는) 전체의 큰 블록은 원하는 부분에 액세스하기 위해 압축해제되어야 한다. 데이터의 큰 블록들을 압축해제하는 것은, 시간 및 전력을 집약하도록 한다. 또한, 큰 블록의 압축해제 동작들과 관련된 지연들은 만족스럽지 못한 사용자 경험을 초래할 수 있다.
특정 실시예에서, 호스트 디바이스에 의해 제공된 정보는 데이터 저장 디바이스에서 데이터의 압축을 제어하기 위해 사용된다. 예를 들어, 상기 호스트 디바이스는 기입 명령의 일부분으로서 콘텍스트 식별자를 데이터 저장 디바이스에 제공할 수 있다. 콘텍스트 식별자는, eMMC 표준에 따라 호스트 디바이스에 의해 발생 및 제공될 수 있거나(예를 들어, 콘텍스트 식별자는 eMMC 콘텍스트 ID 필드에 포함될 수 있다), UFS(Universal Flash Storage) 표준에 따라 호스트 디바이스에 의해 발생 및 제공될 수 있거나(예를 들어, 콘텍스트 식별자는 UFS 콘텍스트 ID 필드에 포함될 수 있다), 또는 둘 모두에 해당할 수 있다. 데이터 저장 디바이스는, 관련되거나 또는 함께 액세스될 가능성이 있는 데이터를 식별하기 위해 콘텍스트 식별자를 사용할 수 있다. 기입 동작 동안, 상기 데이터 저장 디바이스는, 콘텍스트 식별자에 의해 관련된 데이터를 사용하여 압축 그룹들을 발생시킬 수 있다. 상기 데이터 저장 디바이스는 그때마다(on-the-fly) 압축을 위한 콘텍스트 매칭을 수행할 수 있거나 또는 대안으로, 예를 들어, 액세스와 관련된 콘텍스트 식별자를 저장하고, 저장된 콘텍스트 식별자를 오프라인과 매칭하며 그리고 그에 따라 압축함으로써 오프라인 압축을 위해 콘텍스트 매칭을 수행할 수 있다. 압축 그룹으로부터의 데이터는, 데이터 저장 디바이스의 메모리에 기입하기 위해 압축된 데이터를 발생시키도록 (예를 들어, 단일 유닛으로서) 함께 압축될 수 있다. 압축 그룹이 너무 크면(예를 들어, 임계 크기보다 훨씬 크면), 압축 그룹은, 압축을 위해 2개 이상의 서브-그룹들로 분할될 수 있다. 판독 동작 동안, 압축 그룹과 관련된 압축된 데이터는 (단일 유닛으로서) 함께 압축해제될 수 있다. 그에 따라, 데이터 저장 디바이스는 메모리의 저장 용량을 효율적으로 이용할 수 있고 그리고 판독 동작 동안 대량의 관련없는 데이터를 압축해제 하는 것을 피할 수 있다.
도 1은 저장을 위해 데이터를 압축하도록 구성된 데이터 저장 디바이스를 포함하는 시스템의 제1 특정 실시예의 블록 다이어그램이다.
도 2는 저장을 위해 데이터를 압축하도록 구성된 데이터 저장 디바이스를 포함하는 시스템의 제2 특정 실시예의 블록 다이어그램이다.
도 3은 데이터 저장 디바이스에 데이터를 압축하는 방법의 제1 특정 실시예를 나타내는 흐름도이다.
도 4는 데이터 저장 디바이스에 데이터를 압축하는 방법의 제2 특정 실시예를 나타내는 흐름도이다.
도 5는 데이터 저장 디바이스에 데이터를 압축하는 방법의 제3 특정 실시예를 나타내는 흐름도이다.
도 6은 데이터 저장 디바이스에 데이터를 압축하는 방법의 제4 특정 실시예를 나타내는 흐름도이다.
도 7은 데이터 저장 디바이스로부터 압축된 데이터를 판독하는 특정 실시예를 나타내는 흐름도이다.
도 1은 저장을 위해 데이터를 압축하도록 구성된 데이터 저장 디바이스(102)를 포함하는 시스템(100)의 제1 특정 실시예의 블록 다이어그램이다. 데이터 저장 디바이스(102)는 제어기(106) 및 메모리(104)(예를 들어, 비-휘발성 메모리)를 포함한다. 특정 구현에서, 메모리(104)는, 제어기(106)로부터 분리된 메모리 다이 상에 존재하고 그리고 버스를 통해 제어기(106)에 결합된다. 다른 구현들에서, 메모리(104) 및 제어기(106)는 공통의 다이 상에 존재할 수 있다.
메모리(104)는 비-휘발성 메모리, 예를 들어, 플래시 메모리(예를 들어, NAND, NOR, 멀티-레벨 셀(MLC), 분할된 비트-라인 NOR(DINOR), AND, 고용량 결합 비율(HiCR), 비대칭 비접촉 트랜지스터(ACT) 또는 다른 플래시 메모리들), 삭제가능한 프로그램가능 판독-전용 메모리(EPROM), 전기적으로-삭제가능한 프로그램가능 판독-전용 메모리(EEPROM), 판독-전용 메모리(ROM), 저항성 랜덤 액세스 메모리(RRAM), 1회 프로그램가능한 메모리(OTP) 또는 다른 타입의 메모리일 수 있다. 메모리(104)는, 수직 비트 라인(VBL) 3D 아키텍처와 같은, 3차원(3D) 메모리 구성을 가질 수 있다. 예를 들어, 메모리(104)는 3D VBL ReRAM을 포함할 수 있다. 특정한 구현에서, 메모리(104)는 3D 메모리 구성을 갖는 비-휘발성 메모리이고, 이러한 3D 메모리 구성은 상기의 실리콘 기판 위에 배치된 활성 영역을 갖는 메모리 셀들의 어레이들의 하나 이상의 물리적 레벨들로 단일하게 형성된다. 대안으로, 메모리(104)는 다른 구성, 예를 들어, 2차원(2D) 메모리 구성 또는 적층된 2D 메모리 구성과 같은 다른 구성을 가질 수 있다.
데이터 저장 디바이스(102)는 호스트 디바이스(120)와 상호작용하도록 구성될 수 있다. 호스트 디바이스(120)는, 메모리(104)에 저장을 위해 데이터를 데이터 저장 디바이스(102)에 제공하고 그리고 메모리(104)로부터의 판독을 위해 데이터를 요청하도록 구성될 수 있다. 예를 들어, 호스트 디바이스(120)는 이동 전화, 뮤직 플레이어, 비디오 플레이어, 게임 콘솔, 전자 책 판독기, PDA, 컴퓨터(예를 들어, 랩톱 컴퓨터, 노트북 컴퓨터, 또는 태블릿), 어떤 다른 전자 디바이스 또는 이들의 조합일 수 있다. 호스트 디바이스(120)는, 데이터 저장 디바이스(102)로부터 판독을 가능하게 하고 그리고 데이터 저장 디바이스(102)에 기입을 가능하게 하는 메모리 인터페이스를 통해 통신한다. 예를 들어, 호스트 디바이스(120)는, JEDEC(Joint Electron Devices Engineering Council) 산업 사양, 예를 들어, 임베딩된 멀티미디어 카드(eMMC) 사양에 따라 동작할 수 있다. 다른 예들로서, 호스트 디바이스(120)는, UFS(Universal Flash Storage) 호스트 제어기 인터페이스 사양, USB(Universal Serial Bus) 사양, 또는 Secure Digital(SD) 호스트 제어기 사양에 따라 동작할 수 있고, 이러한 예들이 도시된다. 대안으로, 호스트 디바이스(120)는 다른 통신 프로토콜에 따라 데이터 저장 디바이스(102)와 통신할 수 있다.
특정 실시예에서, 데이터 저장 디바이스(102)는 임베딩된 메모리로서 호스트 디바이스(120)에 연결되도록 구성된다. 다른 특정 실시예에서, 데이터 저장 디바이스(120)는 호스트 디바이스(120)에 결합된 착탈가능한 디바이스이다. 예를 들어, 데이터 저장 디바이스(102)는 메모리 카드일 수 있다. 데이터 저장 디바이스는 JEDEC 산업 사양, 하나 이상의 다른 사양들 또는 이들의 조합에 따라 동작할 수 있다. 예를 들어, 데이터 저장 디바이스(102)는 eMMC 사양, USB 사양, SD 사양 또는 이들의 조합에 따라 동작할 수 있다.
특정 실시예에서, 데이터 저장 디바이스(102)는, 메모리(104)에서 저장을 위해 호스트 디바이스(120)로부터 데이터를 수신하도록 구성된다. 호스트 디바이스(120)는 콘텍스트 실별자를 데이터에 제공할 수 있다. 상기 콘텍스트 식별자는 관련된 데이터를 식별하기 위해 데이터 저장 디바이스(102)에 의해 사용될 수 있다. 예를 들어, 호스트 디바이스(120)는 제1 파일(122) 및 제2 파일(124)에 관련된 동작들을 포함하거나 또는 수행할 수 있다. 제1 파일(122)은 제1 콘텍스트와 관련될 수 있고, 그리고 제2 파일(124)은 제2 콘텍스트와 관련될 수 있다. 호스트 디바이스(120)는 제1 콘텍스트 식별자를 제1 콘텍스트에 할당할 수 있고 그리고 제2 콘텍스트 식별자를 제2 콘텍스트에 할당할 수 있다. 콘텍스트들은 도 1내의 파일들과 관련되지만, 이는 단지 설명의 편리함을 위한 것이다. 여러 구현들에서, 호스트 디바이스(120)는 애플리케이션들, 프로세스들 또는 데이터 세트들에 콘텍스트 식별자들을 할당할 수 있다.
제어기(106)는, 데이터가 압축을 위해 함께 그룹화되어야 하는지를 결정하기 위해 콘텍스트 식별자들을 사용할 수 있다. 예를 들어, 제어기(106)는, 제1 기입 명령(126)을 통해 호스트 디바이스(120)로부터 제1 데이터를 수신하도록 구성될 수 있다. 제1 기입 명령(126)은, 제1 데이터와 관련된 제1 콘텍스트를 식별하는 제1 콘텍스트 식별자를 포함할 수 있다. 제어기(106)는 또한 제2 기입 명령(128)을 통해 호스트 디바이스(120)로부터 제2 데이터를 수신할 수 있다. 제2 데이터는, 상기 제2 데이터와 관련된 제2 콘텍스트를 식별하는 제2 콘텍스트 식별자를 포함할 수 있다. 제1 콘텍스트 및 제2 콘텍스트는 동일할 수 있다. 예를 들어, 제1 데이터 및 제2 데이터는 모두 제1 파일(122)과 관련될 수 있다. 대안으로, 제1 콘텍스트 및 제2 콘텍스트는 서로 상이할 수 있다. 예를 들어, 제1 데이터는 제1 파일(122)과 관련될 수 있고 그리고 제2 데이터는 제2 파일(124)과 관련될 수 있다.
제1 데이터 및 제2 데이터를 수신한 후, 상기 제어기(106)는, 상기 제1 콘텍스트가 상기 제2 콘텍스트와 매칭하는지를 결정할 수 있다. 예를 들어, 콘텍스트 비교기(110)는 상기 제1 콘텍스트 식별자와 제2 콘텍스트 식별자를 비교할 수 있다. 제1 콘텍스트와 제2 콘텍스트가 매칭한다는 조건하에서, 제어기(106)는, 제1 데이터 및 제2 데이터를 사용하여 메모리(104)에서 저장을 위해 압축된 데이터를 발생시킬 수 있다. 예를 들어, 제어기(106)는, 데이터의 압축 그룹에 제1 데이터 및 제2 데이터를 할당할 수 있다. 상기 데이터의 압축 그룹은, 압축된 데이터(132)를 발생시키기 위해 (예를 들어, 유닛으로서) 압축될 수 있다. 예를 들어, 상기 데이터의 압축 그룹은 상기 제1 데이터 및 제2 데이터를 결합함으로써(예를 들어, 합병)함으로써 형성될 수 있다. 이러한 예에서, 압축 엔진(108)은, 압축된 데이터(132)를 형성하기 위해 데이터의 압축 그룹의 데이터를 함께 압축할 수 있다. 그에 따라, 압축된 데이터(132)는 제1 및 제2 데이터가 함께 압축된 버전에 대응한다.
특정 실시예에서, 제1 기입 명령(126), 제2 기입 명령(128) 또는 둘 모두는, 각 기입 명령과 관련된 데이터가 압축가능한지를 나타내는 호스트 디바이스(120)로부터의 명령을 포함할 수 있다. 예를 들어, 제1 기입 명령(126)은, 플래그, 데이터, 상기 데이터의 식별자, 또는 상기 제1 데이터가 압축가능한지 여부를 나타내는 호스트 디바이스(120)로부터의 정보를 포함할 수 있다. 설명을 위해, 상기 호스트(120)가 이미 상기 제1 데이터를 압축했을 때 상기 제1 데이터는 압축가능하지 않을 수 있다. 다른 예에서, 상기 제1 데이터는, 상기 제1 데이터의 타입 또는 특성으로 인해 압축가능하지 않을 수 있다.
특정 실시예에서, 데이터 저장 디바이스(102)는, 압축을 수행하기 이전에 다수의 기입 명령들, 예를 들어, 제1 기입 명령(126), 제2 기입 명령(128) 및 제3 기입 명령(130)을 수신할 수 있다. 예를 들어, 호스트 디바이스(120)로부터 수신된 제1 데이터가 압축가능하면, 제어기(106)는, 제1 기입 명령(126)을 수신한 후 그리고 제2 기입 명령(128)을 수신하기 전에 (예를 들어, 메모리(104)의 영역에 상기 제1 데이터를 기입함으로써) 상기 제1 데이터를 일시적으로 저장할 수 있다. 제1 데이터가 압축가능하지 않으면, 제1 데이터는 압축 없이 메모리(104)에 저장될 수 있다. 제2 기입 명령어(128)를 수신한 후, 콘텍스트 비교기(110)는, 제1 기입 명령어(126)의 콘텍스트 식별자와 제2 기입 명령어(128)의 콘텍스트 식별자를 비교할 수 있다. 제1 콘텍스트 식별자와 제2 콘텍스트 식별자가 매칭하면, 제어기(106)는 제1 데이터 및 제2 데이터를 포함하는 데이터의 압축 그룹을 발생시킬 수 있다. 예를 들어, 데이터의 압축 그룹은, 메모리의 영역으로부터 제1 데이터를 판독하고 그리고 데이터의 압축 그룹을 형성하기 위해 상기 제1 데이터 및 상기 제2 데이터를 결합함으로써 발생될 수 있다. 제어기(106)는, 압축된 데이터(132)를 발생시키기 위해 압축된 엔진(108)에 데이터의 압축 그룹을 제공할 수 있다.
콘텍스트 식별자들이 구별된다고(즉, 제1 콘텍스트 식별자가 제2 콘텍스트 식별자와 매칭하지 않는다고) 콘텍스트 비교기(110)가 결정할 때, 제2 데이터는 제2 콘텍스트에 관련된 다른 데이터의 도착을 대기하기 위해(예를 들어, 메모리의 영역에 제2 데이터를 기입함으로써) 일시적으로 저장될 수 있다. 제3 기입 명령(130)이 수신될 때, 콘텍스트 비교기(110)는, 제3 기입 명령(130)에 관련된 제3 콘텍스트 식별자와 제1 콘텍스트 식별자, 제2 콘텍스트 식별자 또는 둘 모두를 비교할 수 있다. 제3 콘텍스트 식별자가 제1 콘텍스트 식별자와 매칭하면, 상기 제1 데이터 및 제3 데이터를 포함하는 데이터의 압축 그룹을 형성하기 위해 제3 데이터는 제1 데이터와 결합될 수 있다. 대안으로, 제3 콘텍스트 식별자가 제2 콘텍스트 식별자와 매칭하면, 제2 데이터 및 제3 데이터를 포함하는 데이터의 압축 그룹을 형성하기 위해 제3 데이터는 제2 데이터와 결합될 수 있다. 데이터의 압축 그룹은, 압축된 그룹(132)을 형성하기 위해 압축될 수 있다.
특정 실시예에서, 데이터의 압축 그룹이 임계 크기에 도달할 때, 압축된 데이터를 형성하기 위해 제어기(106)는 데이터의 압축 그룹상에서 압축 동작을 수행할 수 있다. 예를 들어, 제1 기입 명령(126)이 수신될 때, 제어기(106)는, 제1 데이터가 임계치를 만족하는지 여부, 예를 들어, 제1 데이터가 임계 크기보다 크거나 또는 임계 크기와 동일한 크기를 갖는지 여부를 결정할 수 있다. 제1 데이터가 임계 크기보다 작을 때, 상기 제1 콘텍스트와 관련된 추가 데이터를 대기하도록 상기 제어기(106)는 상기 제1 데이터를 메모리의 영역에 기입할 수 있다. 제2 기입 명령(128)이 수신될 때, 제2 콘텍스트가 제1 콘텍스와 매칭하면, 제어기(106)는 제1 데이터 및 제2 데이터를 포함하는 데이터의 압축 그룹을 형성할 수 있다. 제어기(106)는, 이후, 데이터의 압축 그룹의 크기와 임계 크기를 비교할 수 있다. 데이터의 압축 그룹의 크기가 상기 임계 크기를 만족하면(예를 들어, 상기 임계 크기 보다 크거나 동일하면), 제어기(106)는 압축된 데이터(132)를 발생시키도록 압축 엔진(108)에 지시할 수 있다. 하지만, 데이터의 압축 그룹의 크기가 임계 크기를 만족하지 않으면(예를 들어, 상기 임계 크기보다 작으면), 동일한 콘텍스트와 관련된 추가 데이터를 대기하도록 제어기(106)는 일시적으로 제2 데이터를 저장할 수 있다(예를 들어, 메모리(104)의 영역에 제2 데이터를 기입할 수 있다).
제3 기입 명령(130)을 수신한 후, 제3 데이터가 제1 데이터 및 제2 데이터처럼 동일한 콘텍스트와 관련되는지 여부를 콘텍스트 비교기(110)가 결정할 수 있다. 제3 데이터가 제1 데이터 및 제2 데이터처럼 동일한 콘텍스트와 관련되면, 제어기(106)는, 제1 데이터 및 제2 데이터를 포함하는 데이터의 압축 그룹에 제3 데이터를 추가할 수 있다. 제어기(106)는, 데이터의 압축 그룹의 크기가 임계 크기를 만족하는지 여부(예를 들어, 임계 크기보다 크거나 또는 동일한지 여부)를 결정할 수 있다. 데이터의 압축 그룹의 크기가 임계 크기를 만족하면, 제어기(106)는, 데이터의 압축 그룹에 기초하여 압축 데이터(132)를 발생시키도록 압축 엔진(108)에 명령할 수 있다. 상기 데이터의 압축 그룹의 크기가 임계 크기를 만족하지 않으면, 동일한 콘텍스트에 관련된 추가 데이터의 수신을 대기하도록, 제어기(106)는 (예를 들어, 메모리(104)의 영역에 제3 데이터를 기입함으로써) 제3 데이터를 일시적으로 저장할 수 있다.
특정 실시예에서, 호스트 디바이스(120)가 콘텍스트의 사용을 중지할 때(예를 들어, 파일을 닫거나 또는 프로세스를 중지할 때), 호스트 디바이스(120)는, 닫기 콘텍스트 통지(도 2를 참조하여 추가로 서술됨)를 전송한다. 상기 닫기 콘텍스트 통지는, 닫힌 콘텍스트의 콘텍스트 식별자를 포함한다. 데이터 저장 디바이스(102)가 닫기 콘텍스트 통지를 수신할 때, 제어기(106)는, 일시적으로 저장된 데이터가 상기 닫힌 콘텍스와 관련되는지 여부를 결정할 수 있다. 제어기(106)는, (예를 들어, 닫기 콘텍스트 통지가 수신될 때 데이터의 압축 그룹의 크기에 관계없이) 상기 닫기 콘텍스트와 관련된 데이터의 압축 그룹에 기초하여 압축된 데이터를 발생시킬 것을 압축 엔진(108)에 지시할 수 있다.
데이터의 압축 그룹이 압축된 데이터(132)를 발생시키기 위해 압축된 후, 압축된 데이터(132)는, 하나 이상의 어드레스들에 대응하는 메모리(104)의 저장 소자들에 기입될 수 있다. 제어기(106)는, 압축된 데이터(132)의 그룹 식별자를 하나 이상의 어드레스들에 맵핑하는 맵핑 정보(112)를 저장할 수 있다. 예를 들어, 맵핑 정보(112)는, 상기 그룹 식별자를 식별할 수 있고 그리고 상기 압축된 데이터(132)의 저장 위치에 대응하는 하나 이상의 논리 블록 어드레스들을 식별할 수 있다. 압축된 데이터(132)가 기입되는 논리 블록 어드레스들의 특정 세트는, 논리 블록 어드레스들의 순차적인 범위를 정의할 수 있다.
그룹 식별자는, 압축된 데이터(132)에 대응하는 데이터의 압축 그룹에 관련될 수 있다. 특정 실시예에서, 그룹 식별자는, 제어기(106)에 의해 데이터의 압축 그룹에 할당된다(예를 들어, 그룹 식별자는, 호스트 디바이스(120)에 의해 할당된 콘텍스트 식별자로부터 구별된다). 다른 특정 실시예에서, 그룹 식별자는, 데이터의 압축 그룹에서 그룹화된 데이터와 연관되는 콘텍스트 식별자를 포함하거나 또는 콘텍스트 식별자를 포함한다(예를 들어, 그룹 식별자는 호스트 디바이스(120)에 의해 할당된 콘텍스트 식별자에 대응한다).
일부 구현들에서, 호스트 디바이스(120)는 콘텍스트 식별자들을 재사용할 수 있다. 예를 들어, 호스트 디바이스(120)가 제1 파일(122)을 사용하는 동안, 제1 콘텍스트 식별자는 제1 파일(122)과 관련될 수 있다. 호스트 디바이스(120)가 제1 파일(122) 상에서의 동작들을 닫거나 또는 중단한 후, 호스트 디바이스(120)는 다른 파일(예를 들어, 제2 파일(124))을 열 수 있다. 호스트 디바이스(120)는 제2 파일(124)에 콘텍스트 식별자를 할당할 수 있고, 이러한 제2 파일(124)은, 제1 파일(122)이 열려서 사용될 때, 제1 파일(122)에 할당되는 콘텍스트 식별자와 동일할 수 있다. 그에 따라, 호스트 디바이스(120)가 콘텍스트 식별자들을 재사용하는 구현에서, 호스트 디바이스(120)가 특정 콘텍스트와 관련된 동작들을 중단할 때, 호스트 디바이스(120)는 데이터 저장 디바이스(102)에 닫기 콘텍스트 통지를 전송할 수 있다. 데이터 저장 디바이스(102)가, 이전에 닫혀진 콘텍스트 식별자와 관련된 후속 기입 명령을 수신할 때, 제어기(106)는 상기 콘텍스트 식별자와 관련된 데이터의 압축 그룹에 새로운 그룹 식별자를 할당할 수 있다.
상기 압축된 데이터(132)를 메모리(104)에 기입한 후, 데이터 저장 디바이스(102)는 호스트 디바이스(120) 또는 다른 호스트 디바이스(도시되지 않음)로부터 판독 명령을 수신할 수 있다. 상기 판독 명령은, (예를 들어, 저장 소자들의 세트와 관련된 특정 논리 블록 어드레스와 같은 어드레스를 제공함으로써) 판독되는 저장 소자들의 세트를 식별할 수 있다. 제어기(106)는, 판독 명령에서 식별되는 주소가 맵핑 정보(112) 내의 그룹 식별자와 관련되는지 결정할 수 있다. 상기 어드레스가 맵핑 정보(112) 내의 그룹 식별자에 관련될 때, 제어기(106)는, 맵핑 정보(112) 내의 그룹 식별자와 관련되는 메모리 어드레스에 대응하는 각 저장 소자로부터 데이터를 판독할 수 있다. 예를 들어, 상기 어드레스가 맵핑 정보 내의 제1 그룹 식별자와 관련될 때, 제어기(106)는, 맵핑 정보(112) 내의 그룹 식별자에 대응하는 메모리(104)의 물리적(또는 논리적) 어드레스들을 결정할 수 있다. 상기 그룹 식별자는, 상기 맵핑 정보(112)에서, 데이터의 전체 압축 그룹의 저장 위치들과 관련된다. 제어기(106)는, 그룹 식별자와 관련되는 각 저장 위치를 판독할 수 있다. 따라서, 제어기(106)는, (예를 들어, 판독 명령에 의해 식별되는 어드레스뿐만 아니라 오히려) 데이터의 전체 압축 그룹에 대응하는 압축된 데이터를 판독한다. 제어기(106)는, 상기 압축 엔진(108)으로 하여금, 상기 메모리(104)로부터 판독된 데이터를 압축 해제할 수 있게 한다. 그에 따라, 판독 명령에 응답하여, 제어기(106)는, 데이터의 압축 해제에 기초하여 발생된 압축된 데이터(132)를 압축해제할 수 있다.
따라서, 데이터 저장 디바이스(102)는, 관련된 데이터를 함께 압축함으로써 상기 메모리(104)의 저장 용량을 효율적으로 이용할 수 있다. 추가적으로, 단일 콘텍스트에 대응하는 데이터의 압축 그룹을 사용하여 상기 압축된 데이터(132)를 발생시킴으로써, 데이터 저장 디바이스(102)는, 판독 동작 동안 대량의 관련되지 않은 데이터를 압축해제하는 것과 관련된 지연 및 전력 사용을 피할 수 있다.
도 2는, 저장을 위해 데이터를 압축하도록 구성된 데이터 저장 디바이스(202)를 포함하는 시스템(200)의 제2 특정 실시예의 블록도이다. 데이터 저장 디바이스(202)는, 제1 메모리 영역(240) 및 제2 메모리 영역(250)과 같은 다수의 영역들로 (논리적으로 또는 물리적으로) 분할될 수 있는 메모리(204)(예를 들어, 비-휘발성 메모리)를 포함한다. 데이터 저장 디바이스(202)는 또한 제어기(206)를 포함한다. 제어기(206)는, 압축 엔진(208), 콘텍스트 비교기(210) 및 맵핑 정보(212)를 포함한다. 제어기(206)는 또한, 논리-대-물리 어드레스 표(216)를 포함하거나 또는 논리-대-물리 어드레스 표(216)에 액세스할 수 있다. 데이터 저장 디바이스(202)는, 메모리(204)에 기입하기 위해 데이터를 수신하거나 또는 메모리(204)로부터 데이터를 판독하기 위해 명령들을 수신하도록 호스트 디바이스(220)에 결합될 수 있다. 특정 실시예에서, 데이터 저장 디바이스(202)는 도 1의 데이터 저장 디바이스(102)에 대응한다. 예를 들어, 제어기(206)는 도 1의 제어기(106)에 대응할 수 있고, 그리고 메모리(204)는 도 1의 메모리(104)에 대응할 수 있다.
압축 엔진(208)은, 메모리(204)에서 저장을 위해 압축된 데이터를 발생시키도록 구성될 수 있다. 특정한 실시예에서, 상기 압축된 데이터는 제2 메모리 영역(250)에 저장된다. 압축된 데이터를 발생시키기 위해 상기 데이터가 압축 엔진(208)에 제공될 때까지 상기 제어기(206)는 또한 상기 제1 메모리 영역(240)에 데이터를 일시적으로 저장할 수 있다. 이러한 실시예에서, 제2 메모리 영역(250)은 멀티레벨 셀 플래시 메모리에 대응할 수 있고, 그리고 제1 메모리 영역(240)은 단일 레벨 셀 플래시 메모리에 대응할 수 있다.
동작 중에, 호스트 디바이스(220)는 복수의 기입 명령들(222 내지 226)을 데이터 저장 디바이스(202)에 제공할 수 있다. 상기 기입 명령들(222 내지 226) 각각은, 데이터 및 상기 데이터와 관련된 콘텍스트 식별자를 포함할 수 있다. 상기 콘텍스트 식별자는 호스트 디바이스(120)에 의해 할당될 수 있고 그리고 상기 호스트 디바이스(220) 내의 상기 데이터에 관련된 특정 동작 콘텍스트를 포함할 수 있다. 상기 콘텍스트 식별자는, 제어기(206)로 하여금 함께 압축될 관련된 데이터를 식별하도록 할 수 있다.
데이터 저장 디바이스(202)는, 제1 데이터 및 제1 콘텍스트 식별자를 포함하는 제1 기입 명령(222)을 호스트 디바이스(220)로부터 수신할 수 있다. 제어기(206)는, 제1 데이터(241)로서 상기 제1 데이터를 제1 메모리 영역(240)에 기입할 수 있다. 제1 기입 명령(222)을 수신한 후, 데이터 저장 디바이스(202)는, 제2 데이터 및 제2 콘텍스트 식별자를 포함하는 제2 기입 명령(223)을 호스트 디바이스(220)로부터 수신할 수 있다. 제2 기입 명령(223)을 수신하는 것에 응답하여, 콘텍스트 비교기(210)는 제1 데이터(241)의 제1 콘텍스트 식별자와 제2 콘텍스트 식별자를 비교할 수 있다. 도 2에서, 제1 콘텍스트에 관련되는 제1 메모리 영역(240)에 저장된 데이터는 크로스-해칭을 갖는 것으로 도시되고, 그리고 제2 콘텍스트에 관련되는 제2 데이터(제1 콘텍스트와 구별됨)는 크로스-해칭을 갖지 않는 것으로 도시된다. 그 결과, 도 2에서 도시된 예에서, 제1 데이터(241)는 제1 콘텍스트 및 제1 콘텍스트 식별자에 관련되고 그리고 제2 데이터(242)는 제2 콘텍스트 및 제2 콘텍스트 식별자에 관련된다. 제1 콘텍스트와 제2 콘텍스트는 서로 상이하기에 제1 콘텍스트 식별자는 제2 콘텍스트 식별자와 매칭하지 않는다. 상기 제1 콘텍스트 식별자가 제2 콘텍스트 식별자와 매칭하지 않기에, 데이터의 어떤 압축 그룹도 제1 데이터 및 제2 데이터를 사용하여 형성되지 않는다.
제2 기입 명령(223)을 수신한 후, 데이터 저장 디바이스(202)는, 제3 데이터 및 제3 콘텍스트 식별자를 포함하는 제3 기입 명령(224)을 호스트 디바이스(220)로부터 수신할 수 있다. 콘텍스트 비교기(210)는 상기 제3 콘텍스트 식별자와 상기 제1 메모리 영역(240)에 저장된 다른 데이터와 관련된 콘텍스트 식별자들(예를 들어, 제1 콘텍스트 식별자 및 제2 콘텍스트 식별자)을 비교할 수 있다. 도 2에 도시된 예에서, 상기 제3 데이터는 제1 콘텍스트 식별자와 관련된다(예를 들어, 제3 콘텍스트 식별자는 상기 제1 콘텍스트 식별자와 매칭한다). 그에 따라, 제어기(206)는, 제1 데이터(241) 및 제3 데이터(243)를 사용하여 데이터의 제1 압축 그룹을 형성할 수 있다.
데이터의 압축 그룹이 임계 크기에 도달하거나, 데이터의 압축 그룹과 관련된 콘텍스트에 대한 닫기 콘텍스트 통지가 수신되거나 또는 둘 모두일 때, 압축 엔진(208)은 데이터 압축 그룹을 사용하여 압축된 데이터를 발생시킬 수 있다. 하기의 논의에서, 데이터의 압축 그룹이 임계 크기에 도달할 때 압축 엔진(208)이 압축된 데이터를 발생시키는 것으로 제1 예가 서술된다. 제1 예의 후속으로, 상기 데이터의 압축 그룹과 관련되는 콘텍스트에 대한 닫기 콘텍스트 통지가 수신된 후, 압축 엔진(208)이 압축된 데이터를 발생시키는 것으로 제2 예가 서술된다. 제1 예 및 제2 예, 모두, 도 2를 사용하여 서술된다. 추가적으로, 제1 예에 대응하는 방법은, 도 4를 참조하여 서술되고, 그리고 제2 예에 대응하는 방법은, 도 5를 참조하여 서술된다.
제1 예에서, 제3 기입 명령(224)을 수신한 후, 제어기(206)는, 데이터의 제1 압축 그룹의 크기에 기초하여 압축된 데이터를 발생시킬지 여부를 결정한다. 예를 들어, 제어기(206)는, 제1 데이터(241) 및 제3 데이터(243)를 포함하는 데이터의 제1 압축 그룹의 크기와 임계 크기를 비교할 수 있다. 데이터의 제1 압축 그룹의 크기가 임계 크기보다 크거나 또는 임계 크기와 동일하면, 제어기(206)는 데이터의 제1 압축 그룹에 기초하여 제1 압축 데이터(251)를 발생시킨다. 데이터의 제1 압축 그룹의 크기가 임계 크기보다 작으면, 제어기(206)는 제1 콘텍스트에 관련된 추가적인 데이터에 대해 계속 대기하고 그리고 아직 제1 압축된 데이터(251)를 발생시키지 않는다.
제3 기입 명령(224)을 수신한 후, 데이터 저장 디바이스(202)는, 제4 데이터(244) 및 제4 콘텍스트 식별자를 포함하는 제4 기입 명령(225)을 호스트 디바이스(220)로부터 수신할 수 있다. 콘텍스트 비교기(210)는, 제4 콘텍스트 식별자와 제1 메모리 영역(240)에 저장된 데이터와 관련된 콘텍스트 식별자들(예를 들어, 제1 콘텍스트 식별자 및 제2 콘텍스트 식별자)를 비교할 수 있다. 도 2에 도시된 예에서, 제4 데이터(244)는 제1 콘텍스트와 관련된다(예를 들어, 제4 콘텍스트 식별자는 제1 콘텍스트 식별자와 매칭한다). 그에 따라, 콘텍스트 비교기(204)는 제4 데이터(244)를 데이터의 제1 압축 그룹에 부가하고, 이러한 데이터의 제1 압축 그룹은 제1 데이터(241) 및 제3 데이터(243)를 포함한다.
제4 데이터(244)가 데이터의 제1 압축 그룹에 부가된 후, 제어기(206)는, 데이터의 제1 압축 그룹에 기초하여 제1 압축된 데이터(251)를 발생시킬지 여부를 결정한다. 예를 들어, 압축 엔진(208)은 데이터의 제1 압축 그룹의 크기와 임계 크기를 비교할 수 있다. 제1 압축 그룹의 크기가 임계 크기와 갖거나 임계 크기보다 크면, 압축 엔진(208)은 상기 제1 압축 그룹에 기초하여 제1 압축 데이터(251)를 발생시킨다. 제1 압축 그룹의 크기가 임계 크기보다 작으면, 압축 엔진(208)은 제1 콘텍스트에 관련된 추가적인 데이터를 계속해서 대기하고 제1 압축된 데이터(251)를 아직 발생시키지 않는다.
제4 기입 명령(225)을 수신한 후에, 데이터 저장 디바이스(202)는 제5 데이터(245) 및 제5 콘텍스트 식별자를 포함하는 제5 기입 명령(226)을 호스트 디바이스(220)로부터 수신할 수 있다. 콘텍스트 비교기(210)는, 제5 데이터(245)와 관련된 제5 콘텍스트 식별자와 제1 메모리 영역(240)에 저장된 데이터와 관련된 콘텍스트 식별자들(예를 들어, 제1 데이터, 제3 데이터 및 제4 데이터(241, 243, 244)에 관련된 제1 콘텍스트 식별자 및 제2 데이터(242)에 관련된 제2 콘텍스트 식별자)을 비교할 수 있다. 도 2에서 설명된 예에서, 제5 데이터(245)는 제2 콘텍스트와 관련된다(예를 들어, 제5 콘텍스트 식별자는 제2 콘텍스트 식별자와 매칭한다). 그에 따라, 제5 데이터(245)는 데이터의 제2 압축 그룹을 형성하기 위해 제2 데이터(242)와 결합된다. 제어기(206)는, 데이터의 제2 압축 그룹에 기초하여 제2 압축 데이터(252)를 형성할지 여부를 결정할 수 있다. 예를 들어, 데이터의 제2 압축 그룹의 크기는, 임계 크기와 비교될 수 있다. 데이터의 제2 압축 그룹의 크기가 임계 크기보다 크거나 임계 크기와 동일하면, 압축 엔진(208)은 제2 압축 데이터(252)를 발생시킨다. 데이터의 제2 압축 그룹의 크기가 임계 크기보다 작으면, 압축 엔진(208)은 제2 콘텍스에 관련된 추가 데이터를 대기하고 그리고 아직 제2 압축된 데이터(252)를 발생시키지 않는다.
특정한 실시예에서, 호스트 디바이스(220)가 제1 콘텍스트와 관련된 프로세싱을 완료하면, 호스트 디바이스(220)는 제1 콘텍스트(예를 들어, 제1 콘텍스트 식별자를 포함)와 관련된 닫기 콘텍스트 통지(227)를 데이터 저장 디바이스(202)에 전송한다. 특정 콘텍스트에 관련된 닫기 콘텍스트 통지(예를 들어, 닫기 콘텍스트 통지(227))를 수신하는 것에 응답하여, 제어기(206)는 특정 콘텍스트와 관련된 데이터의 압축 그룹에 기초하여 압축된 데이터를 발생시킨다. 도 2에서 도시된 예에서, 닫기 콘텍스트 통지(227)는 제1 콘텍스트 식별자를 포함한다. 제1 데이터(241), 제3 데이터(243) 및 제4 데이터(244)를 포함하는 데이터의 제1 압축 그룹은, 제1 콘텍스트 식별자와 관련된다. 따라서, 압축 엔진(208)은, 닫혀진 콘텍스트 통지(227)의 수신에 응답하여 데이터의 제1 압축 그룹에 관련된 제1 압축 데이터(251)를 발생시킨다.
제1 압축된 데이터(251)가 발생된 후, 제1 압축된 데이터(251)는 제2 메모리 영역(250)에 저장될 수 있다. 제1 압축된 데이터(251)의 저장 위치(예를 들어, 하나 이상의 메모리 어드레스들)는 맵핑 정보(212)에서 식별될 수 있고 그리고 그룹 식별자와 관련될 수 있다. 특정 실시예에서, 맵핑 정보(212)는, 데이터의 압축된 그룹들과 관련된 그룹 식별자들, 및 데이터의 각 압축 그룹에 대응하는 압축된 데이터가 저장되는 메모리 어드레스들(예를 들어, 논리 블록 어드레스들 또는 물리적 어드레스)을 저장할 수 있다. 특정 실시예에서, 데이터의 단일 압축 그룹과 관련된 압축된 데이터는, 순차적인 논리 블록 어드레스들의 세트에서 메모리(204)에 저장될 수 있다. 제어기(206)는 그룹 식별자를 데이터의 각 압축 그룹에 또는 대응하는 압축된 데이터에 할당할 수 있다. 예를 들어, 제1 그룹 식별자는, 제어기(206)에 의해, 제1 압축된 데이터(251)에 할당될 수 있다.
압축 엔진(208)이 압축된 데이터를 발생시키는 제2 예에서, 데이터의 압축 그룹에 관련된 콘텍스트에 대한 닫기 콘텍스트 통지가 수신된 후, 특정 콘텍스트에 대한 닫기 콘텍스트 통지(예를 들어, 제1 콘텍스트에 관련된 닫기 콘텍스트 통지(227))가 수신될 때까지, 제어기(226)는 각 콘텍스트에 대한 제1 메모리 영역(240)에 데이터를 계속해서 부가할 수 있다. 설명을 위해, 도 2에서, 데이터 저장 디바이스(202)에 의해 수신되는 제1 콘텍스트 식별자와 관련된 데이터는, (예를 들어, 각 기입 명령을 수신한 후 데이터의 압축 그룹과 임계 크기를 비교함없이) 닫힌 콘텍스트 통지(227)가 수신될 때까지 제1 메모리 영역(240)에 계속해서 기입될 수 있다.
닫혀진 콘텍스트 통지(227)가 수신된 후, 제어기(206)는, 닫혀진 콘텍스트(예를 들어, 제1 콘텍스트)에 관련된 데이터가 너무 커 효율적으로 함께 압축될 수 없을지에 대해 결정할 수 있다. 예를 들어, 제어기(206)는, 닫혀진 콘텍스트에 관련된 데이터의 세트(예를 들어, 이 예에서, 제1 데이터(241), 제3 데이터(243) 및 제4 데이터(244))의 크기와 임계 크기를 비교할 수 있다. 닫혀진 콘텍스트에 관련된 데이터의 세트의 크기가 임계 크기를 초과하면, 제어기(206)는 닫혀진 콘텍스트에 관련된 데이터의 세트를 복수의 서브그룹들로 분할할 수 있다. 이 예에서, 서브그룹들 각각은, 데이터의 하나의 압축 그룹에 대응한다. 닫혀진 콘텍스트에 관련된 데이터의 세트의 크기가 임계 크기보다 작을 때, 제어기(206)는 데이터의 세트를 포함하는 데이터의 단일 압축 그룹을 발생시킨다. 압축 엔진(208)은 데이터의 하나 이상의 압축 그룹들 각각에 기초하여 압축된 데이터를 발생시킨다.
압축된 데이터가 (예를 들어, 상기에서 서술된 제1 예에 따라 또는 상기에서 서술된 제2 예에 따라) 발생되고 그리고 메모리(204)에 저장된 후, 데이터 저장 디바이스(202)는 호스트 디바이스(220)로부터 판독 요청(228)을 수신할 수 있다. 판독 요청(228)은 판독되는 데이터와 관련된 어드레스를 식별할 수 있다. 판독 요청(228)은 또한 콘텍스트 식별자(예를 들어, N번째 콘텍스트 식별자)를 포함할 수 있다. 제어기(206)는, 판독 요청(228)으로부터의 어드레스를 메모리(204)의 하나 이상의 저장 위치들과 관련시키기 위해 논리-대-물리 어드레스 표(216)를 액세스할 수 있다. 제어기(206)는, 또한, 판독 요청(228)의 어드레스가 맵핑 정보(212) 내의 그룹 식별자와 관련되는지 여부를 결정할 수 있다. 판독 요청(228)의 어드레스가 맵핑 정보(212) 내의 그룹 식별자와 관련될 때, 제어기(206)는 제2 메모리 영역(250)으로부터 그룹 식별자와 관련된 압축된 데이터를 판독할 수 있다. 예를 들어, 판독 요청(228)의 어드레스는, 메모리(204)의 단일 논리 블록 어드레스에 대응할 수 있다. 하지만, 상기 어드레스가 맵핑 정보(212) 내의 그룹 식별자와 관련되면, 제어기(206)는 상기 단일 논리 블록 어드레스보다 많은 것으로부터 데이터를 판독할 수 있다. 설명을 위해, 제어기(206)는, 제2 메모리 영역(250)으로부터의 그룹 식별자에 대응하는 (예를 들어, 가능한 상기 단일 논리 블록 어드레스보다 많은) 어드레스들의 세트 중 각 어드레스에 관련된 저장 소자들로부터 데이터를 판독할 수 있다. 압축 엔진(208)은, 저장 소자들로부터 판독된 데이터를 사용하여 그룹 식별자와 관련된 데이터의 압축 그룹에 대응하는 압축해제된 데이터를 발생시킬 수 있다. 판독 요청(228)의 어드레스가 그룹 식별자와 관련되지 않을 때, 판독 요청(228)에 의해 식별되는 특정 어드레스에 대응하는 데이터만이 판독된다. 설명을 위해, 판독 요청(228)의 어드레스가 단일 논리 블록 어드레스에 대응할 때, 상기 단일 논리 블록 어드레스에 대응하는 데이터만이 판독되고 그리고 어떤 추가 데이터(예를 들어, 데이터의 압축 그룹에 대응하는 데이터)는 판독 요청(228)에 기초하여 판독된다. 상기 압축해제된 데이터는, 데이터(230)로서 호스트 디바이스(220)에 제공될 수 있다.
따라서, 데이터 저장 디바이스(202)는, 관련된 데이터를 함께 압축함으로써 메모리(204)의 저장 용량을 효율적으로 사용할 수 있다. 추가적으로, 단일 콘텍스트에 대응하느 데이터의 압축 그룹을 사용하여 압축된 데이터를 발생시킴으로써, 데이터 저장 디바이스(202)는, 판독 동작 동안 대량의 관련되지 않은 데이터를 압축해제하는 것에 대한 지연 및 전력 사용을 피한다.
도 3은, 저장 디바이스에서 데이터를 압축하는 방법(300)의 제1 특정 실시예를 나타내는 흐름도이다. 데이터 저장 디바이스는, 도 1의 데이터 저장 디바이스, 도 2의 데이터 저장 디바이스, 또는 둘 모두에 대응할 수 있다. 예를 들어, 방법(300)은 도 1의 제어기(106)에서 또는 도 2의 제어기(206)에서 수행될 수 있다.
방법(300)은, 302에서, 제1 데이터 및 제1 콘텍스트 식별자로 식별가능한 제1 콘텍스트에 대응하는 제1 기입 명령을 획득(예를 들어, 수신 또는 액세스)하는 단계를 포함하고, 그리고, 304에서, 제2 데이터 및 제2 콘텍스트 식별자로 식별가능한 제2 콘텍스트에 대응하는 제2 기입 명령을 획득(예를 들어, 수신 또는 액세스)하는 단계를 포함한다. 예를 들어, 도 1의 데이터 저장 디바이스(102)는 호스트 디바이스(120)로부터 제1 기입 명령(126) 및 제2 기입 명령(128)을 수신할 수 있다. 제1 기입 명령(126)은 제1 데이터를 포함할 수 있고 그리고 제1 콘텍스트 식별자에 의해 표시되는 제1 콘텍스트와 관련될 수 있으며, 그리고 제2 기입 명령(126)은 제2 데이터를 포함할 수 있고 그리고 제2 콘텍스트 식별자에 의해 표시되는 제2 콘텍스트와 관련될 수 있다.
방법(300)은 또한, 306에서, 상기 제1 식별자가 제2 식별자와 매칭하는지 결정하는 단계를 포함한다. 방법(300)은 또한, 308에서, 상기 제1 식별자가 제2 식별자와 매칭하면 제1 데이터 및 제2 데이터를 포함하는 데이터의 압축 그룹을 형성하는 단계를 포함한다. 예를 들어, 도 1을 참조하면, 제어기(106)는, 제1 기입 명령(126)의 제1 콘텍스트에 대응하는 제1 콘텍스트 식별자와 제2 기입 명령(128)의 제2 콘텍스트에 대응하는 제2 콘텍스트 식별자의 비교를 수행할 수 있다. 제1 콘텍스트 식별자가 제2 콘텍스트 식별자와 매칭하면, 제어기(106)는, 데이터의 압축 그룹에서의 포함을 위해 제1 데이터 및 제2 데이터를 선택할 수 있다. 제어기(106)는 이후, 제1 데이터 및 제2 데이터를 포함하는 데이터의 압축 그룹을 발생시킬 수 있다.
방법(300)은, 또한, 310에서, 데이터의 압축 그룹에 대응하는 압축 데이터를 발생시키는 단계를 포함한다. 예를 들어, 제어기(106)는, 데이터의 압축 그룹의 크기가 임계 크기를 만족하는지를 결정할 수 있거나 또는 제어기(106)는 호스트 디바이스로부터 닫기 콘텍스트 통지를 수신할 수 있다. 제어기(106)는, 압축된 데이터(132)를 발생시키기 위해 압축 엔진(108)에 데이터의 압축 그룹을 제공할 수 있다. 압축된 데이터(132)는 비-휘발성 메모리(104)에 저장될 수 있다.
따라서, 방법(300)은, 관련된 데이터를 함께 압축함으로써 데이터 저장 디바이스로 하여금 메모리의 저장 용량을 효율적으로 사용하도록 할 수 있다. 추가로, 단일 콘텍스트에 대응하는 데이터의 압축 그룹을 사용하여 압축된 데이터를 발생시킴으로써, 데이터 저장 디바이스는, 판독 동작 동안 대량의 관련되지 않은 데이터를 압축해제하는 것에 대한 지연 및 전력 사용을 피한다.
도 4는 데이터 저장 디바이스에서 데이터를 압축하는 방법(400)의 제2 특정 실시예를 도시하는 흐름도이다. 데이터 저장 디바이스는 도 1의 데이터 저장 디바이스(102), 도 2의 데이터 저장 디바이스 또는 둘 모두에 대응할 수 있다. 예를 들어, 방법(400)은 도 1의 제어기(600)에서 또는 도 2의 제어기(206)에서 수행될 수 있다.
방법(400)은, 402에서, 제1 데이터 및 제1 콘텍스트에 대응하는 제1 기입 명령을 획득(예를 들어, 수신 또는 액세스)하는 단계를 포함한다. 방법(400)은, 또한, 404에서, 상기 제1 데이터를 메모리에 기입하는 단계를 포함한다. 예를 들어, 도 2의 데이터 저장 디바이스(202)는, 제1 데이터(241) 및 제1 콘텍스트 식별자를 포함하는 제1 기입 명령(222)을 호스트 디바이스(220)로부터 수신할 수 있다. 제1 데이터(241)는 제1 메모리 영역(240)에 기입될 수 있다.
방법(400)은, 또한, 406에서, 제2 데이터 및 제2 콘텍스트에 대응하는 제2 기입 명령을 획득(예를 들어, 수신 또는 액세스)하는 단계를 포함한다. 예를 들어, 도 2에서, 데이터 저장 디바이스(202)는, 제2 데이터(242) 및 제2 콘텍스트 식별자를 포함하는 제2 기입 명령(223)을 호스트 디바이스(223)로부터 수신할 수 있다. 방법(400)은, 또한, 408에서, 제1 콘텍스트의 제1 콘텍스트 식별자와 제2 콘텍스트의 제2 콘텍스트 식별자를 비교하는 단계를 포함한다. 410에서, 제1 콘텍스트 식별자가 제2 콘텍스트 식별자와 매칭하지 않으면, 방법(400)은, 412에서, 제2 데이터를 메모리에 기입하는 단계를 포함한다. 예를 들어, 도 2에서, 제2 데이터(242)는, 제1 데이터와 관련된 콘텍스트 식별자와 매칭하지 않는 제2 콘텍스트와 관련된다. 그에 따라, 제2 데이터(242)는 제1 메모리 영역(240)에 기입된다. 제2 데이터는, 제1 메모리 영역(240)에 기입되기 전 (제1 데이터와 별개로) 압축될 수 있다. 412에서, 제2 데이터를 메모리에 기입한 후, 방법은, 414에서, 추가적인 데이터를 수신하는 단계를 포함한다. 상기 추가적인 데이터는, 제1 콘텍스트에 관련된 추가적인 데이터, 제2 콘텍스트에 관련된 추가적인 데이터, 다른 콘텍스트에 관련된 추가적인 데이터 또는 이들의 조합을 포함할 수 있다. 예를 들어, 도 2에서, 제2 기입 명령(223)을 수신한 후, 데이터 저장 디바이스(202)는, 제3 기입 명령(224), 제4 기입 명령(225) 또는 제5 기입 명령(226)과 같은 하나 이상의 추가적인 기입 명령들을 수신할 수 있다. 수신되는 각 추가적인 기입 명령과 관련된 콘텍스트 식별자는, 매칭 콘텍스트들을 식별하기 위해 메모리(204)에 저장되는 데이터와 관련된 콘텍스트 식별자들과 비교될 수 있다. 매칭 콘텍스트들과 관련된 데이터가 식별될 때, 상기 데이터는 상기 식별자와 매칭하는 제1 식별자의 예에 대해 아래에서 서술된 것처럼 프로세싱될 수 있다.
410에서, 제1 식별자가 제2 식별자와 매칭할 때, 방법(400)은, 416에서, 메모리로부터 제1 데이터를 판독하는 단계를 포함하고, 그리고 418에서, 데이터 압축 그룹을 형성하기 위해 상기 제1 데이터 및 상기 제2 데이터를 결합하는 단계를 포함한다. 방법(400)은 또한, 420에서, 데이터의 압축 그룹의 크기를 결정하는 단계를 포함할 수 있다. 422에서, 데이터의 압축의 크기가 임계 크기를 초과할 때, 방벙(400)은 데이터의 압축 그룹에 대응하는 압축된 데이터를 발생시키기 위해 데이터의 압축 그룹을 압축하는 단계를 포함한다. 422에서, 데이터의 압축 그룹의 크기가 임계 크기를 초과하지 않을 때, 426에서, 방법(400)은 추가 데이터 또는 닫혀진 콘텍스트 통지를 수신하는 단계를 포함한다. 데이터의 압축 그룹에 관련된 추가적인 데이터를 수신한 후 또는 닫혀진 콘텍스트 통지를 수신한 후, 방법(400)은, 424에서, 데이터의 압축 그룹에 대응하는 압축된 데이터를 발생시키기 위해 데이터의 압축 그룹을 압축하는 단계를 포함할 수 있다. 예를 들어, 도 2를 참조하여, 제1 압축된 데이터(251)는, 제1 콘텍스트에 대한 닫기 콘텍스트 통지(227)가 수신된 후 발생될 수 있거나 또는 데이터의 제1 압축 그룹의 크기가 임계 크기에 도달한 후에 발생될 수 있다.
따라서, 방법(400)은, 관련된 데이터를 함께 압축함으로써 데이터 저장 디바이스로 하여금 상기 메모리의 저장 용량을 효율적으로 이용할 수 있도록 한다. 추가적으로, 단일 콘텍스트에 대응하는 데이터의 압축 그룹을 사용하여 압축된 데이터를 발생시킴으로써, 상기 데이터 저장 디바이스는 판독 동작 동안 대량의 관련되지 않은 데이터를 압축해제하는 것과 관련된 지연 및 전력 사용을 피한다.
도 5는 데이터 저장 디바이스에서 데이터를 압축하는 방법(500)의 제3 특정 실시예를 나타내는 흐름도이다. 데이터 저장 디바이스는, 도 1의 데이터 저장 디바이스(102), 도 2의 데이터 저장 디바이스(202) 또는 둘 모두에 대응할 수 있다. 예를 들어, 방법(500)은 도 1의 제어기(106)에서 또는 도 2의 제어기(206)에서 수행될 수 있다.
방법(500)은, 502에서, 제1 데이터 및 제1 콘텍스트에 대응하는 제1 기입 명령을 획득(예를 들어, 수신 또는 액세스)하는 단계 및 504에서, 제2 데이터 및 제2 콘텍스트에 대응하는 제2 기입 명령을 획득(예를 들어, 수신 또는 액세스)하는 단계를 포함한다. 제1 콘텍스트 및 제2 콘텍스트는 동일할 수 있거나 또는 서로 상이할 수 있다. 예를 들어, 도 2의 데이터 저장 디바이스(202)는, 호스트 디바이스(220)로부터 제1 기입 명령(222) 및 제2 기입 명령(223)을 수신할 수 있다. 제1 기입 명령(222)은 제1 데이터(241)를 포함하고 그리고 (제1 콘텍스트 식별자에 의해 표시된 것처럼) 제1 콘텍스트에 관련되며, 그리고 제2 기입 명령(223)은 제2 데이터(242)를 포함하고 그리고 (제2 콘텍스트 식별자에 의해 표시된 것처럼) 제2 콘텍스트에 관련된다. 방법(500)의 이러한 예에서, 제1 콘텍스트는 제2 콘텍스트와 서로 상이하다. 하지만, 도 2로부터의 다른 실시예에서, 도 2의 데이터 저장 디바이스(202)는 호스트 디바이스(220)로부터 제1 기입 명령(222) 및 제3 기입 명령(224)을 수신할 수 있다. 제1 기입 명령(222)은 제1 데이터(241)를 포함하고 그리고 (제1 콘텍스트 식별자에 의해 표시된 것처럼) 제1 콘텍스트와 관련되며, 그리고 제3 기입 명령(224)은 제3 데이터(243) 및 (제1 콘텍스트 식별자에 의해 표시된 것처럼) 제1 콘텍스트와 관련된다. 방법(500)의 이러한 실시예에서, 제1 콘텍스트는 제2 콘텍스트와 동일하다. 방법(500)은, 506에서, 추가 데이터에 대응하는 하나 이상의 추가 기입 명령들을 회득(수신 또는 액세스)하는 단계를 포함할 수 있다. 하나 이상의 추가 기입 명령들은 제1 콘텍스트, 제2 콘텍스트 또는 추가 콘텍스트(예를 들어, 제3 콘텍스트)에 대응할 수 있다.
방법(500)은 또한, 508에서, 특정 콘텍스트에 관련된 닫기 콘텍스트 통지를 수신하는 단계를 포함한다. 예를 들어, 도 2를 참조하면, 데이터 저장 디바이스(202)는, 하나 이상의 기입 명령들(222 내지 226)을 수신한 후 닫기 콘텍스트 통지(227)를 수신할 수 있다. 방법(500)은, 510에서, 특정 콘텍스트에 대한 관련된 데이터를 식별하는 단계를 포함한다. 예를 들어, 도 2에서, 닫기 콘텍스트 통지(227)는 제1 콘텍스트와 관련된다. 그에 따라, 제어기(206)는 제1 콘텍스트와 관련된 제1 메모리 영역(240)에 저장된 데이터(예를 들어, 제1 데이터(241), 제3 데이터(243) 및 제4 데이터(244))를 식별할 수 있다.
방법(500)은 또한, 512에서, 관련된 데이터의 크기(예를 들어, 비트들의 수와 같은 데이터 크기)를 결정하는 단계를 포함한다. 예를 들어, 도 2를 참조하면, 제어기(206)는 상기 제1 콘텍스트에 관련된 제1 메모리 영역(240)에 저장된 데이터(예를 들어, 제1 데이터(241), 제3 데이터(243) 및 제4 데이터(244))의 크기를 결정할 수 있다. 514에서, 관련된 데이터의 크기가 임계 크기를 초과하지 않을 때, 516에서, 방법(500)은 관련된 데이터를 포함하는 데이터의 압축 그룹에 대응하는 압축된 데이터 발생시키는 단계를 포함한다. 예를 들어, 도 2에서, 데이터의 제1 압축 그룹의 크기가 임계 크기보다 작으면, 압축 엔진(208)은, 데이터(제1 데이터(241), 제3 데이터(243) 및 제4 데이터(244))의 제1 압축 그룹에 대응하는 제1 압축된 그룹에 대응하는 제1 압축된 데이터(251)를 발생시킬 수 있다.
514에서, 관련된 데이터의 크기가 임계 크기를 초과하면, 방법(500)은, 518에서, 상기 관련된 데이터를 데이터의 복수의 서브그룹들로 분할하는 단계 및 복수의 압축 그룹들을 발생시키는 단계를 포함하고, 각 압축 그룹은 데이터의 서브그룹들 중 하나에 대응한다. 방법(500)은, 또한, 520에서, 데이터의 압축 그룹(예를 들어, 관련된 데이터의 서브그룹)에 대응하는 압축된 데이터를 발생시키는 단계 및 522에서, 데이터의 하나 이상의 다른 압축 그룹들(예를 들어, 관련된 데이터의 다른 서브그룹)에 대응하는 추가적인 압축된 데이터를 발생시키는 단계를 포함한다. 예를 들어, 도 2에서, 압축 엔진(208)은, 제1 콘텍스트에 관련된 데이터의 제1 서브그룹(예를 들어, 제1 데이터(241) 및 제3 데이터(243)를 포함하는 데이터의 제1 압축 그룹)을 발생시킬 수 있다. 압축 엔진(208)은, 또한, 제1 콘텍스트에 관련된 데이터의 제2 서브그룹(예를 들어, 제4 데이터(244)를 포함하는 데이터의 제2 압축 그룹)에 대응하는 제2 압축 데이터(252)를 발생시킬 수 있다.
따라서, 방법(500)은, 데이터 저장 디바이스로 하여금, 관련된 데이터를 함께 압축함으로써 상기 메모리의 저장 용량을 효율적으로 이용하게 할 수 있다. 추가적으로, 단일 콘텍스트에 대응하는 데이터의 압축 그룹을 사용하여 압축된 데이터를 발생시킴으로써, 상기 데이터 저장 디바이스는 판독 동작 동안 대량의 관련되지 않은 데이터를 압축해제하는 것과 관련된 지연 및 전력 사용을 피한다.
도 6은, 데이터 저장 디바이스에서 데이터를 압축하는 방법(600)의 제4 특정 실시예를 나타내는 흐름도이다. 데이터 저장 디바이스는, 도 1의 데이터 저장 디바이스(102), 도 2의 데이터 저장 디바이스(202) 또는 둘 모두에 대응할 수 있다. 예를 들어, 방법(600)은 도 1의 제어기(106)에서 또는 도 2의 제어기(206)에서 수행될 수 있다.
방법(600)은, 602에서, 제1 데이터에 대응하고 그리고 제1 콘텍스트 식별자로 식별가능한 제1 콘텍스트에 대응하는 제1 기입 명령을 획득(예를 들어, 수신 또는 액세스)하는 단계를 포함하며, 그리고 604에서, 제2 데이터에 대응하고 그리고 제2 콘텍스트 식별자로 식별가능한 제2 콘텍스트에 대응하는 제2 기입 명령을 획득(예를 들어, 수신 또는 액세스)하는 단계를 포함한다. 예를 들어, 도 2의 데이터 저장 디바이스(202)는, 제1 기입 명령(222) 및 제2 기입 명령(223)을 호스트 디바이스(220)로부터 수신할 수 있다. 제1 기입 명령(222)은 제1 데이터(241)를 포함하고 그리고 제1 콘텍스트 식별자에 의해 표시된 것과 같은 제1 콘텍스트와 관련되며, 그리고 제2 기입 명령(223)은 제2 데이터(242)를 포함하고 그리고 제2 콘텍스트 식별자에 의해 표시된 것과 같은 제2 콘텍스트와 관련된다.
방법(600)은 또한, 606에서, 제1 콘텍스트 식별자가 제2 콘텍스트 식별자와 매칭하면, 데이터의 압축 그룹에 대응하는 압축된 데이터를 발생시키는 단계를 포함하고, 데이터의 압축 그룹은 제1 데이터 및 제2 데이터를 포함한다. 예를 들어, 도 2의 제1 기입 명령(222)의 제1 콘텍스트 식별자가 제3 기입 명령(224)의 제3 콘텍스트 식별자와 매칭한다고 결정하는 것에 응답하여, 제어기(206)는 제1 데이터(241) 및 제3 데이터(243)를 포함하는 데이터의 압축 그룹을 발생시킬 수 있다. 제어기(206)는, 제1 데이터(241) 및 제3 데이터(243)에 대응하는 제1 압축된 데이터(251)를 발생시키기 위해 데이터의 압축 그룹을 압축 엔진(208)에 제공할 수 있다. 방법(600)은, 또한, 608에서, 압축된 데이터를 메모리의 영역에 기입하는 단계를 포함한다. 예를 들어, 도 2를 참조하면, 제1 압축된 데이터(251)는 제2 메모리 영역(250)에 기입될 수 있고, 이러한 제2 메모리 영역(250)은 논리-대-물리 어드레스 표(216)에서 식별되는 논리 블록 어드레스들의 세트와 관련될 수 있다.
방법(600)은, 610에서, 데이터의 압축 그룹(또는 압축된 데이터)에 그룹 식별자를 할당하는 단계 및 612에서, 어드레스들의 세트(예를 들어, 논리 블록 어드레스들의 세트)를 데이터의 압축 그룹의 그룹 식별자와 관련시키는 맵핑 정보를 저장하는 단계를 포함한다. 예를 들어, 도 2의 제어기(206)는, 맵핑 정보(212)에서, 데이터의 제1 압축 그룹(및 제1 압축된 데이터)과 관련된 그룹 식별자 및 데이터의 제1 압축 그룹에 대한 압축 데이터가 저장되는 메모리 어드레스들의 세트를 식별하는 정보를 저장할 수 있다.
따라서, 방법(600)은, 관련된 데이터를 함께 압축함으로써 데이터 저장 디바이스로 하여금 상기 메모리의 저장 용량을 효율적으로 이용가능하게 한다. 추가적으로, 단일 콘텍스트에 대응하는 데이터의 압축 그룹을 사용하여, 상기 데이터 저장 디바이스는 판독 동작 동안 대량의 관련되지 않은 데이터를 압축해제하는 것과 관련된 지연 및 전력 사용을 피한다.
도 7은, 데이터 저장 디바이스로부터 압축된 데이터를 판독하는 방법(700)의 특정 실시예를 나타내는 흐름도이다. 데이터 저장 디바이스는 도 1의 데이터 저장 디바이스(102), 도 2의 데이터 저장 디바이스(202) 또는 둘 모두에 대응할 수 있다. 예를 들어, 방법(700)은 도 1의 제어기(106)에서 또는 도 2의 제어기(206)에서 수행될 수 있다. 특정 실시예에서, 방법(700)은, 압축된 정보 및 방법(300), 방법(400), 방법(500), 방법(600) 또는 이들의 조합에 따른 맵핑 정보를 저장한 데이터 저장 디바이스에서 수행될 수 있다.
방법(700)은, 702에서, 맵핑 정보를 저장한 후에 판독 명령을 수신하는 단계를 포함하고, 상기 판독 명령은 특정 메모리 어드레스에 관련된다. 예를 들어, 도 2에서, 데이터 저장 디바이스(202)는 호스트 디바이스(220)로부터 판독 요청(228)을 수신할 수 있다. 판독 요청(228)은 메모리 어드레스를 식별하는 정보를 포함한다.
방법(700)은, 704에서, 특정 메모리 어드레스가 맵핑 정보에 기초하여 그룹 식별자와 관련되는지를 결정하는 단계를 포함한다. 예를 들어, 판독 요청(228)의 어드레스가 맵핑 정보(212) 내의 그룹 식별자와 관련되는지를 결정하기 위해, 비교기(206)는 판독 요청(228)으로부터의 어드레스와 맵핑 정보(212)를 비교할 수 있다.
특정 메모리 어드레스가 그룹 식별자와 관련될 때, 방법(700)은, 706에서, 그룹 식별자에 의해 식별되는 그룹에 대응하는 메모리 어드레스들의 세트를 결정하는 단계들을 포함하고, 상기 메모리 어드레스들의 세트는 특정 메모리 어드레스 및 하나 이상의 추가 메모리 어드레스들을 포함한다. 예를 들어, 제어기(206)는, 데이터의 압축 그룹에 대응하는 LBA들의 세트를 식별하기 위해 맵핑 정보(212)를 사용할 수 있다. 제어기(206)는 또한 논리-대-물리 어드레스 표(216)를 사용하여 LBA들의 세트에 대응하는 저장 소자들을 결정할 수 있다.
방법(700)은, 708에서, 메모리의 저장 소자들의 세트로부터 압축된 데이터를 판독하기 위해 판독 동작을 수행하는 단계를 포함하고 상기 저장 소자들의 세트는 메모리 어드레스들의 세트에 대응하며, 그리고 710에서, 데이터의 압축 그룹에 대응하는 압축해제된 데이터를 발생시키는 단계를 포함한다. 예를 들어, 도 2를 참조하면, 판독 요청(228)의 어드레스가 데이터의 제1 압축 그룹(예를 들어, 제1 압축된 데이터(251)가 형성되는 데이터의 압축 그룹)의 그룹 식별자에 관련될 때, 제어기(206)는 제2 메모리 영역(250)으로부터 다수의 어드레스들을 판독할 수 있고, 상기 다수의 어드레스들 각각은 그룹 식별자와 관련된다. 따라서, 데이터의 압축 그룹과 관련된 데이터를 포함하는 한 세트의 저장 소자들 중 각각의 저장 소자는, 특정 메모리 어드레스가 저장 소자들의 세트의 서브세트에만 대응하는 경우에도, 판독될 수 있다.
특정 메모리 어드레스가 어떤 그룹 식별자와 관련되지 않을 때, 방법(700)은, 712에서, (예를 들어, 다른 메모리 어드레스들을 판독하지 않고) 특정 메모리 어드레스에 대응하는 메모리의 저장 소자들로부터 데이터를 판독하기 위해 판독 동작을 수행하는 단계 및 714에서, 특정 메모리 어드레스에 대응하는 압축해제된 데이터를 발생시키는 단계를 포함한다. 예를 들어, 도 2를 참조하면, 판독 요청(228)에서 표시된 어드레스가 맵핑 정보(212) 내의 그룹 식별자와 관련이 없을 때, 제어기(206)는 데이터(230)를 발생시키기 위해 판독 요청(228)에 표시된 어드레스에 대응하는 데이터만을 판독할 수 있다.
여기에서 도시된 여러 컴포넌트들이 블록 컴포넌트들로 설명되고 그리고 일반적인 용어들로 서술되지만, 그와 같은 컴포넌트들은 하나 이상의 마이크로프로세스들, 상태 머신들, 또는 도 1의 데이터 저장 디바이스(102) 또는 도 2의 데이터 저장 디바이스(202)와 같은 데이터 저장 디바이스로 하여금 그와 같은 컴포넌트들에 속하는 특정 기능들 또는 이들의 임의의 조합을 수행할 수 있도록 구성된 다른 회로들을 포함할 수 있다. 여기에 서술된 컴포넌트들은, 하나 이상의 노드들, 하나 이상의 버스들(예를 들어, 데이터 버스들 및/또는 제어 버스들), 하나 이상의 다른 구조들, 또는 이들의 조합에 동작적으로 결합될 수 있다. 여기에서 기술된 하나 이상의 컴포넌트들(예를 들어, 도 1의 제어기(106) 또는 도 2의 제어기(206))는, (압축된 데이터(132), 압축된 데이터(251) 또는 압축된 데이터(252)와 같은) 압축된 데이터를 발생시키기 위해, 압축 엔진(108), 콘텍스트 비교기(110), 압축 엔진(208), 콘텍스트 비교기(210) 또는 이들의 조합에 명령하는 물리적 컴포넌트들, 예를 들어, 하드웨어 제어기들, 상태 머신들, 로직 회로들 또는 다른 구조들을 나타낼 수 있다.
제어기(106) 또는 제어기(206)는, (예를 들어, 도 3의 방법(300), 도 4의 방법(400), 도 5의 방법(500) 또는 도 6의 방법(600)의 하나 이상의 동작들을 사용하여) 압축된 데이터를 발생시키거나 또는 (예를 들어, 도 7의 방법(700)의 하나 이상의 동작들을 사용하여) 압축해제된 데이터를 발생시키기 위해 프로그래밍된 마이크로프로세서 또는 마이크로제어기를 사용하여 구현될 수 있다. 특정 실시예에서, 특정 실시예에서, 제어기(106) 또는 제어기(206)는, 메모리(104) 또는 메모리(204)에 각각 저장된 프로세서 실행 명령어들을 포함한다. 대안으로 또는 추가로, 프로세서에 의해 실행되는 실행가능한 명령어들은, 판독-전용 메모리(ROM)(도시되지 않음)와 같은 메모리(104) 또는 메모리(204)의 일 부분이 아닌 개별 메모리 위치에 저장될 수 있다.
추가적인 설명을 위해, 제어기(예를 들어, 제어기(106) 또는 제어기(206))는 여기에서 서술된 특정 동작들을 수행하도록 명령어들을 실행하도록 구성된 프로세서를 포함할 수 있다. 상기 프로세서는 명령어들을 실행가능하도록 동작가능한 실행 유닛을 포함할 수 있다. 상기 프로세서는 (예를 들어, 도 2의 제1 기입 명령(222) 및 제2 기입 명령(223)을 수신하기 위해) 호스트 디바이스로부터 명령들을 수신하도록 명령어들을 실행할 수 있다. 예를 들어, 상기 프로세서는, eMMC 사양, UFS(Universal Flash Storage) 사양, USB 사양, 또는 SD 사양과 같은 JEDEC 산업 사양을 구현하도록 하는 명령어들과 같은, 통신 프로토콜과 관련된 하나 이상의 명령어들을 실행할 수 있다. 상기 프로세서는, 추가로, 콘텍스트 식별자들을 비교하기 위해 상기 명령어들을 실행할 수 있다. 예를 들어, 상기 프로세서는, 제1 기입 명령과 관련된 제1 콘텍스트의 제1 식별자와 제2 기입 명령과 관련된 제2 콘텍스트의 제2 식별자와의 비교를 수행하기 위해 하나 이상의 명령어들을 실행할 수 있다. 다른 예에서, 상기 프로세서는, 도 1의 콘텍스트 비교기(110) 또는 도 2의 콘텍스트 비교기(210)와 같은 콘텍스트 비교기에 제1 식별자 및 제2 식별자를 제공하기 위해 하나 이상의 명령어들을 실행할 수 있다. 상기 프로세서는, 또한, 상기 제1 식별자가 상기 제2 식별자와 매칭함을 나타내는 비교를 조건으로, 제1 데이터 및 제2 데이터를 포함하는 데이터의 압축 그룹을 형성하도록 상기 명령어들을 실행할 수 있다. 예를 들어, 상기 제1 식별자와 상기 제2 식별자와 매칭하면, 상기 프로세서는 제1 데이터 및 제2 데이터를 결합(예를 들어, 병합)하도록 하나 이상의 명령어들을 실행할 수 있다. 상기 프로세서는 또한, 데이터의 압축 그룹에 대응하는 압축된 데이터를 발생시키도록 명령어들을 실행할 수 있다. 예를 들어, 상기 프로세서는, 허프만 코딩, 산술 코딩, 부분적인 스트링 매칭을 갖는 예측(PPM) 압축, 콘텍스트-트리 가중(CTW) 압축, 렘펠-지브(LZO) 코딩 또는 다른 압축 기법을 사용하여 데이터를 수행하도록 하나 이상의 명령어들을 실행할 수 있다.
데이터 저장 디바이스(102) 또는 데이터 저장 디바이스(202)는, 하나 이상의 호스트 디바이스들 내에, 예를 들어, 휴대용 통신 디바이스의 하우징 내에 부착되거나 임베딩될 수 있다. 예를 들어, 데이터 저장 디바이스(102) 또는 데이터 저장 디바이스(202)는, 무선 전화, PDA, 게임 디바이스 또는 콘솔, 휴대용 내비게이션 디바이스 또는 내부 비-휘발성 메모리를 사용하는 다른 디바이스와 같은 패키징된 장치 내에 존재할 수 있다. 하지만, 다른 실시예들에서, 데이터 저장 디바이스(102) 또는 데이터 저장 디바이스(202)는, 하나 이상의 내부 디바이스들에 선택적으로 결합되도록 구성된 휴대용 디바이스일 수 있다.
추가의 설명을 위해, 데이터 저장 디바이스(예를 들어, 데이터 저장 디바이스(102) 또는 데이터 저장 디바이스(202))는, 도시된 예에서처럼, 임베딩된 멀티미디어 카드(eMMC®)(JEDEC Solid State Technology Association, Arlington, Virginia의 상표) 구성과 접속되는 것과 같은 임베딩된 메모리로서 호스트 디바이스(예를 들어, 호스트 디바이스(120) 또는 호스트 디바이스(220))에 결합되도록 구성될 수 있다. 데이터 저장 디바이스는 eMMC 디바이스에 대응할 수 있다. 다른 예로서, 데이터 저장 디바이스는, 메모리 카드, 예를 들어, Secure Digital SD® 카드, microSD® 카드, miniSD.TM 카드(SD-3C LLC, Wilmington, Delaware의 상표들), MultiMediaCardTM(MMCTM) 카드(JEDEC Solid State Technology Association, Arlington, Virginia의 상표) 또는 CompactFlash® (CF) 카드(SanDisk Corporation, Milpitas, California의 상표)에 대응할 수 있다. 데이터 저장 디바이스는 JEDEC 산업 사양에 따라 동작할 수 있다. 예를 들어, 상기 데이터 저장 디바이스는 JEDEC eMMC 사양, JEDEC UFS(Universal Flash Storage) 사양, 하나 이상의 다른 사양들, 또는 이들의 조합에 따라 동작할 수 있다.
특정 실시예들에서, 메모리(예를 들어, 메모리(104) 또는 메모리(204))는 3차원(3D) 메모리, 예를 들어, 저항성 랜덤 액세스 메모리(ReRAM), 플래시 메모리(예를 들어, NAND 메모리, NOR 메모리, 단일-레벨 셀(SLC) 플래시 메모리, 멀티-레벨 셀(MLC) 플래시 메모리, 분할된 비트-라인 NOR(DINOR) 메모리, AND 메모리, 고용량성 결합 비율(HiCR) 디바이스, 비대칭 비접촉 트랜지스터(ACT) 디바이스 또는 다른 플래시 메모리), 삭제가능한 프로그램가능 판독-전용 메모리(EPROM), 전기적으로 삭제가능한 프로그램가능 판독-전용 메모리(EEPROM), 판독-전용 메모리(ROM), 1회 프로그램가능한 메모리(OTP) 또는 이들의 조합을 포함할 수 있다. 대안으로 또는 추가로, 메모리는 다른 타입의 메모리를 포함할 수 있다. 상기 메모리는 반도체 메모리 디바이스를 포함할 수 있다.
반도체 메모리 디바이스들은, 동적인 랜덤 액세스 메모리("DRAM") 또는 정적인 랜덤 액세스 메모리("SRAM") 디바이스들과 같은 휘발성 메모리 디바이스들, 저항성 랜덤 액세스 메모리("ReRAM"), 전기적으로 삭제가능한 프로그램가능 판독 전용 메모리("EEPROM"), 플래시 메모리(EEPROM의 서브세트로 또한 고려될 수 있음), 페로일렉트릭 랜덤 액세스 메모리("FRAM"), 및 정보를 저장할 수 있는 다른 반도체 소자들과 같은 비-휘발성 메모리 디바이스들, 및 정보를 저장할 수 있는 다른 반도체 소자들을 포함할 수 있다. 예를 들어, 플래시 메모리 디바이스들은 NAND 또는 NOR 구성으로 구성될 수 있다.
메모리 디바이스들은, 수동 및/또는 능동 소자들로부터, 임의의 조합들로 형성될 수 있다. 비-제한적인 예로서, 수동 반도체 메모리 소자들은, ReRAM 디바이스 소자들을 포함하고, 일부 실시예들에서, ReRAM 디바이스 소자들은 저항성 스위칭 저장 소자, 예를 들어, 안티-퓨즈, 위상 변경 물질 등을 포함하고 그리고 선택적으로 다이오드 등과 같은 스티어링 소자를 포함한다. 추가로, 비제한적인 예로서, 능동 반도체 메모리 소자들은 EEPROM 및 플래시 메모리 디바이스 소자들을 포함하고, 일부 구현들에서, 플래시 메모리 디바이스 소자들은 플로팅 게이트, 도전성 나노입자들, 또는 전하 저장 유전 물질과 같은 전하 저장 영역을 포함하는 소자들을 포함한다.
다수의 메모리 소자들은, 직렬로 접속되거나 또는 각 소자가 개별적으로 액세스가능하도록 구성될 수 있다. 비-제한적인 예로서, NAND 구성(NAND 메모리) 내의 플래시 메모리 디바이스들은 통상적으로 직렬로 접속되는 메모리 소자들을 포함한다. NAND 메모리 어레이는, 상기 어레이가 다수의 메모리의 스트링들로 이뤄지도록 구성될 수 있고, 다수의 메모리 스트링들 중 하나의 스트링은, 단일 비트 라인을 공유하고 그리고 그룹으로서 액세스되는 다수의 메모리로 구성된다. 대안으로, 메모리 소자들은, 각 소자가 개별적으로 액세스가능할 수 있도록 구성될 수 있다. 예를 들어, 메모리 소자는 NOR 메모리 어레이일 수 있다. NAND 및 NOR 메모리 구성들은 예시적이고 그리고 메모리 소자들은 다르게 구성될 수 있다.
기판 내에 그리고/또는 기판 위에 배치되는 반도체 메모리 소자들은, 2차원 메모리 구조 또는 3차원 메모리 구조와 같은 2 또는 3차원으로 배열될 수 있다. 2차원 메모리 구조에서, 반도체 메모리 소자들은 단일 평면 또는 단일 메모리 디바이스 레벨로 배열된다. 통상적으로, 2차원 메모리 구조에서, 메모리 소자들은, 상기 메모리 소자들을 뒷받침하는 기판의 주요 표면에 실질적으로 평행하게 연장하는 평면(예를 들어, x-z 방향 평면)으로 배열된다. 상기 기판은, 메모리 소자들의 층이 형성되는 것 위에 또는 내부의 웨이퍼가 될 수 있거나 또는 상기 기판은, 상기 메모리 소자들의 층이 형성된 후 메모리 소자들에 부착되는 캐리어 기판이 될 수 있다. 비-제한적인 예로서, 상기 기판은 실리콘과 같은 반도체를 포함할 수 있다.
메모리 소자들은, 복수의 로우들 및/또는 컬럼들과 같은 순서화된 어레이에서 단일 메모리 디바이스 레벨로 배열될 수 있다. 하지만, 메모리 소자들은, 비규칙적인 구성 또는 직교가 아닌 구성으로 배열될 수 있다. 상기 메모리 소자들은 각각, 2개 이상의 전극들, 또는 비트 라인들 및 워드 라인들과 같은 콘택트 라인들을 가질 수 있다.
3차원 방향 메모리 어레이는, 메모리 소자들이 다수의 평면 또는 다수의 메모리 디바이스 레벨들을 점유하고, 그 결과 3차원으로(즉, x, y 및 z 방향으로, 여기서, y 방향은 실질적으로 수직이고 그리고 x 및 z 방향은 기판의 주요 평면에 실질적으로 평행함) 구조를 형성하도록 배열된다. 비-제한적인 예로서, 3차원 메모리 구조는 2차원 메모리 디바이스 레벨들에서 다수의 스택으로 수직으로 배열될 수 있다. 다른 비-제한적인 예로서, 3차원 메모리 어레이는, 각 칼럼에서 다수의 메모리 소자들을 갖는 각 칼럼을 갖는 다수의 수직 칼럼들(예를 들어, 기판의 주요 평면에 실질적으로 수직으로, 즉, y 방향으로 실질적으로 연장하는 칼럼들)로서 배열된다. 상기 컬럼들은, 다수의 수직으로 적층된 메모리 평면들 상의 소자들을 갖는 메모리 소자들의 3차원 구성을 야기하는, 2차원 구성, 예를 들어, x-z 평면으로 배열될 수 있다. 3차원에서의 메모리 소자들의 다른 구성들은 또한 3차원 메모리 어레이를 구성할 수 있다.
비-제한적인 예로서, 3차원 NAND 메모리 어레이에서, 상기 메모리 소자들은, 하나의 수평(예를 들어, x-z) 메모리 디바이스 레벨 내에 NAND 스트링을 형성하기 위해 함께 결합될 수 있다. 대안으로, 메모리 소자들은, 다수의 수평 메모리 디바이스 레벨들을 가로지르는 수직 NAND 스트링을 형성하기 위해 함께 결합될 수 있다. 다른 3차원 구성들은, 일부 NAND 스트링들이 단일 메모리 레벨로 메모리 소자들을 포함하는 반면 다른 스트링들은 다수의 메모리 레벨들을 통해 확장되는 메모리 소자들을 포함한다. 3차원 메모리 어레이들은 또한 NOR 구성 및 ReRAM 구성으로 설계될 수 있다.
통상적으로, 단일의 3차원 메모리 어레이에서, 하나 이상의 메모리 디바이스 레벨들은 단일 기판 위에 형성된다. 선택적으로, 상기 단일의 3차원 메모리 어레이는 또한 단일의 기판 내에서 적어도 부분적으로 하나 이상의 메모리 층들을 가질 수 있다. 비-제한적인 예로서, 상기 기판은 실리콘과 같은 반도체를 포함할 수 있다. 단일의 3차원 어레이에서, 상기 어레이의 각 메모리 디바이스 레벨을 구성하는 층들은 통상적으로 상기 어레이의 하부의 메모리 디바이스 레벨들의 층들 상에 형성된다. 하지만, 단일의 3차원 메모리 어레이의 인접한 메모리 디바이스 레벨들의 층들은 공유될 수 있거나 또는 메모리 디바이스 레벨들 사이의 중간 층들을 가질 수 있다.
대안으로, 2차원 어레이들은 개별적으로 형성될 수 있고 그리고 이후 메모리의 다수의 층들을 갖는 비-단일 메모리 디바이스를 형성하기 위해 함께 패키징될 수 있다. 예를 들어, 비-단일의 적층된 메모리들은, 개별 기판들 위에 메모리 레벨들을 형성함으로써 그리고 이후 서로의 위에 메모리 레벨들을 적층함으로써 구성될 수 있다. 상기 기판들은 얇아질 수 있거나 또는 적층이전에 메모리 디바이스 레벨들로부터 제거될 수 있지만, 메모리 디바이스 레벨들이 개별 기판들 위에 먼저 형성될 때, 발생한 메모리 어레이들은 단일의 3차원 메모리 어레이들이 아니다. 또한, 다수의 2차원 메모리 어레이들 또는 3차원 메모리 어레이들(단일 또는 비-단일)은 개별 칩들 상에 형성될 수 있고 이후 적층된-칩 메모리 디바이스를 형성하기 위해 함께 패키징된다.
연계 회로는 통상적으로 메모리 소자들의 동작을 용이하게 하도록 그리고 메모리 소자들과의 통신을 위해 사용된다. 비-제한적인 예들로서, 메모리 디바이스들은, 프로그래밍 및 판독과 같은 기능들을 달성하기 위해 메모리 소자들을 제어하고 구동하기 위해 사용되는 회로를 가질 수 있다. 이러한 연계 회로는 메모리 소자들로서 동일한 기판상에 그리고/또는 개별 기판상에 존재할 수 있다. 예를 들어, 메모리 판독-기입 동작들에 대한 제어기는 개별 제어기 칩 상에 그리고/또는 메모리 소자들로서 동일한 기판상에 위치될 수 있다.
상기에서 기술된 주제는 예시적인 것으로 그리고 제한적이지 않는 것으로 고려되고, 첨부된 청구범위는 모든 그와 같은 수정들, 개선들 및 다른 실시예들을 커버하도록 의도되며, 이는 본 발명의 범위 내에 존재한다. 따라서, 법에서 허용하는 최대의 범위까지, 본 발명의 범위는, 하기의 청구범위들 및 이들의 균등범위의 가장 넓은 허용가능한 해석에 의해 결정되고 그리고 이전의 상세한 설명에 의해 제한되거나 또는 제한되지 않을 것이다.

Claims (32)

  1. 방법에 있어서,
    제어기 및 메모리를 포함하는 데이터 저장 디바이스로서, 상기 메모리는 제1 데이터를 저장하는 단일 레벨 셀 - 상기 제1 데이터는 액세스 디바이스로부터의 제1 기입 명령과 관련되고 제1 데이터가 압축가능한지를 나타내는 액세스 디바이스로부터의 정보와 관련되며, 상기 제1 기입 명령은 제1 기입 명령에 포함된 제1 콘텍스트 식별자로 식별가능한 제1 콘텍스트에 대응함 - 및 멀티 레벨 셀을 갖는 데이터 저장 디바이스에서,
    제2 기입 명령으로서, 제2 데이터에 대응하고 상기 제2 기입 명령에 포함된 제2 콘텍스트 식별자로 식별가능한 제2 콘텍스트에 대응하는 액세스 디바이스로부터의 제2 기입 명령에 응답하여, 상기 제1 콘텍스트의 제1 콘텍스트 식별자가 상기 제2 콘텍스트의 제2 콘텍스트 식별자와 매칭하는지를 결정하는 단계와;
    상기 제1 콘텍스트의 제1 콘텍스트 식별자가 상기 제2 콘텍스트의 제2 콘텍스트 식별자와 매칭한다고 결정되면, 상기 제1 데이터 및 상기 제2 데이터를 포함하는 데이터의 그룹을 형성하는 단계 - 상기 제1 콘텍스트 식별자는 상기 액세스 디바이스 내에서 상기 제1 데이터와 관련된 제1 동작 콘텍스트를 나타내기 위해 상기 액세스 디바이스에 의해 할당되고, 상기 제2 콘텍스트 식별자는 상기 액세스 디바이스 내에서 상기 제2 데이터와 관련된 제2 동작 콘텍스트를 나타내기 위해 상기 액세스 디바이스에 의해 할당됨 - 와; 그리고
    멀티 레벨 셀의 일부에 압축된 데이터를 기입하는 단계 - 상기 압축된 데이터는 상기 데이터의 압축 그룹에 대응하고 상기 제1 데이터 또는 제2 데이터 중 적어도 하나를 포함함 - 를 수행하는, 방법.
  2. 제1항에 있어서,
    상기 액세스 디바이스는 호스트 디바이스를 포함하고,
    상기 제2 기입 명령에 응답하기 전에 상기 제1 데이터를 상기 메모리에 기입하는 단계와; 그리고
    상기 제2 기입 명령에 응답한 후, 상기 제1 콘텍스트 식별자가 상기 제2 콘텍스트 식별자와 매칭하면,
    상기 제1 데이터를 상기 메모리로부터 판독하는 단계와;
    상기 데이터의 그룹을 형성하기 위해 상기 제1 데이터 및 상기 제2 데이터를 결합하는 단계와; 그리고
    압축된 데이터를 발생시키기 위해 상기 데이터의 그룹을 압축하는 단계를 더 포함하는, 방법.
  3. 제1항에 있어서,
    상기 데이터의 그룹의 크기를 결정하는 단계를 더 포함하고,
    상기 압축된 데이터는, 상기 데이터의 그룹의 크기가 임계 크기를 초과하는지를 결정하는 것에 응답하여 발생되는, 방법.
  4. 제1항에 있어서,
    상기 압축된 데이터를 발생시키기 전에, 추가 데이터에 대응하는 하나 이상의 추가 기입 명령을 수신하는 단계와;
    특정 콘텍스트와 관련된 닫기 콘텍스트 통지를 수신하는 단계와;
    닫기 콘텍스트 통지를 수신한 후, 하나 이상의 기입 명령을 통해 수신되고 특정 콘텍스트와 관련된 관련 데이터를 식별하는 단계와;
    관련 데이터의 크기를 결정하는 단계와;
    상기 관련 데이터의 크기가 임계 크기를 초과하면, 상기 관련 데이터를 복수의 데이터의 서브-그룹들로 분할하는 단계 - 상기 데이터의 그룹은 상기 복수의 서브-그룹들 중 하나의 서브-그룹에 대응함 - 와; 그리고
    상기 복수의 서브-그룹들 중 다른 서브-그룹들에 대응하는 추가적인 압축된 데이터를 발생시키는 단계를 더 포함하는, 방법.
  5. 제1항에 있어서,
    상기 압축된 데이터는, 상기 제1 데이터 및 상기 제2 데이터가 압축가능함을 나타내는 액세스 디바이스로부터의 데이터를 수신한 후 발생되는, 방법.
  6. 제1항에 있어서,
    상기 제1 콘텍스트 식별자 및 상기 제2 콘텍스트 식별자는, 임베딩된 멀티미디어 카드(eMMC) 표준에 따라 액세스 디바이스로부터 수신된 콘텍스트 식별자들인, 방법.
  7. 제1항에 있어서,
    상기 제1 콘텍스트 식별자 및 상기 제2 콘텍스트 식별자는, 범용 플래시 저장소(UFS) 표준에 따라 액세스 디바이스로부터 수신된 콘텍스트 식별자들인, 방법.
  8. 제1항에 있어서,
    상기 데이터의 압축 그룹은 제1 데이터 및 제2 데이터를 포함하고, 상기 압축된 데이터는 메모리의 메모리 어드레스들의 세트와 연관된 상기 메모리의 영역에 기입되고,
    상기 데이터의 압축 그룹의 그룹 식별자와 상기 메모리 어드레스들의 세트를 관련시키는 맵핑 정보를 저장하는 단계를 더 포함하는, 방법.
  9. 제8항에 있어서,
    상기 메모리 어드레스들의 세트는 논리 블록 어드레스들의 순차적인 범위에 대응하는, 방법.
  10. 제8항에 있어서,
    상기 맵핑 정보를 저장한 후에, 특정 메모리 어드레스와 관련된 판독 명령을 수신하는 단계와;
    상기 특정 메모리 어드레스가 상기 맵핑 정보에 기초하여 상기 그룹 식별자와 관련되는지 결정하는 단계와;
    상기 특정 메모리 어드레스가 상기 그룹 식별자와 관련되면, 상기 그룹 식별자와 관련된 메모리 어드레스들의 세트 중 각각의 메모리 어드레스를 판독하는 단계와; 그리고
    상기 메모리 어드레스들의 세트로부터 판독된 데이터를 사용하여 상기 데이터의 압축 그룹에 대응하는 압축해제된 데이터를 발생시키는 단계를 더 포함하는, 방법.
  11. 제8항에 있어서,
    상기 그룹 식별자는 상기 제1 콘텍스트 또는 상기 제2 콘텍스트의 콘텍스트 식별자인, 방법.
  12. 제8항에 있어서,
    상기 그룹 식별자를 상기 데이터의 압축 그룹에 할당하는 단계를 더 포함하고, 상기 그룹 식별자는 상기 제1 콘텍스트 식별자와 구별되고, 상기 제2 콘텍스트 식별자와 구별되는, 방법.
  13. 제1항에 있어서,
    제3 데이터에 대응하고 제3 콘텍스트 식별자로 식별가능한 제3 콘텍스트에 대응하는 제3 기입 명령에 응답하여, 상기 제3 콘텍스트 식별자가 상기 제1 콘텍스트 식별자와 매칭하는지를 결정하는 단계와;
    상기 제3 콘텍스트 식별자가 상기 제1 콘텍스트 식별자와 매칭하지 않으면, 상기 제3 데이터에 대응하는 제2 압축된 데이터를 발생시키는 단계와; 그리고
    상기 제3 콘텍스트 식별자가 상기 제1 콘텍스트 식별자와 매칭하면, 상기 압축된 데이터를 발생시키기 전에 상기 데이터의 그룹에 상기 제3 데이터를 부가하는 단계를 더 포함하는, 방법.
  14. 제1항에 있어서,
    상기 메모리는 3차원(3D) 메모리 구성을 갖는, 방법.
  15. 제14항에 있어서,
    상기 3D 메모리 구성은, 메모리 다이의 메모리 셀들의 어레이들의 하나 이상의 물리적 레벨들에서 단일하게 형성되고, 상기 메모리 다이는 실리콘 기판 위에 활성 영역을 갖고, 그리고
    상기 메모리 다이는 상기 메모리 셀들의 동작과 관련된 회로를 더 포함하는, 방법.
  16. 데이터 저장 디바이스에 있어서,
    제어기와; 그리고
    상기 제어기에 결합되고, 또한 액세스 디바이스로부터의 제1 기입 명령과 관련되고 제1 데이터가 압축가능한지를 나타내는 액세스 디바이스로부터의 정보와 관련되는 제1 데이터를 저장하는 단일 레벨 셀을 갖는 메모리를 포함하고,
    상기 제어기는:
    제1 콘텍스트와 관련되고 제1 기입 명령에 포함되는 제1 콘텍스트 식별자와 제2 콘텍스트와 관련되고 액세스 디바이스로부터의 제2 기입 명령에 포함되는 제2 콘텍스트 식별자의 비교를 수행 - 상기 제1 콘텍스트 식별자는 상기 액세스 디바이스 내에서 상기 제1 데이터와 관련된 제1 동작 콘텍스트를 나타내기 위해 상기 액세스 디바이스에 의해 할당되고, 상기 제2 콘텍스트 식별자는 상기 액세스 디바이스 내에서 제2 데이터와 관련된 제2 동작 콘텍스트를 나타내기 위해 상기 액세스 디바이스에 의해 할당됨 - 하고; 그리고
    상기 제1 콘텍스트 식별자가 상기 제2 콘텍스트 식별자와 매칭하면, 메모리의 멀티 레벨 셀에 압축된 데이터를 기입 - 상기 압축된 데이터는 상기 제2 기입 명령에 대응하는 제1 데이터 및 제2 데이터 중 적어도 하나를 포함하는 데이터의 압축 그룹을 압축함으로써 발생됨 - 하도록 구성되는, 데이터 저장 디바이스.
  17. 제16항에 있어서,
    상기 제어기는,
    상기 압축된 데이터를 발생시키기 전에 상기 제1 데이터를 상기 메모리에 기입하고;
    상기 비교를 수행한 후에, 상기 제1 콘텍스트 식별자와 상기 제2 콘텍스트 식별자가 매칭하면,
    상기 메모리로부터 상기 제1 데이터를 판독하고; 그리고
    상기 데이터의 압축 그룹을 형성하기 위해 상기 제1 데이터 및 상기 제2 데이터를 결합하도록 더 구성되는, 데이터 저장 디바이스.
  18. 제16항에 있어서,
    상기 제1 콘텍스트 식별자 및 상기 제2 콘텍스트 식별자는, JEDEC(Joint Electron Devices Engineering Council) 산업 사양에 따라 수신된 콘텍스트 식별자들이고,
    상기 제어기는 콘텍스트 식별자가 매칭하지 않으면, 콘텍스트 식별자와 관련된 특정 압축된 데이터를 발생시키도록 더 구성되는, 데이터 저장 디바이스.
  19. 제16항에 있어서,
    상기 제1 콘텍스트 식별자 및 상기 제2 콘텍스트 식별자는, 임베딩된 멀티미디어 카드(eMMC) 표준 또는 범용 플래시 저장소(UFS) 표준에 따라 액세스 디바이스로부터 수신된 콘텍스트 식별자들인, 데이터 저장 디바이스.
  20. 제16항에 있어서,
    상기 멀티 레벨 셀은 메모리의 메모리의 메모리 어드레스들의 세트와 관련되고,
    상기 제어기는 상기 제1 콘텍스트 식별자가 상기 제2 콘텍스트 식별자와 매칭하면, 상기 데이터의 압축 그룹과 관련된 그룹 식별자와 상기 메모리 어드레스들의 세트를 관련시키는 맵핑 정보를 저장하도록 더 구성되는, 데이터 저장 디바이스.
  21. 제20항에 있어서,
    상기 메모리 어드레스들의 세트는 논리 블록 어드레스들의 순차적인 범위에 대응하는, 데이터 저장 디바이스.
  22. 제20항에 있어서,
    상기 제어기는,
    상기 맵핑 정보를 저장한 후에, 특정 메모리 어드레스와 관련된 판독 명령을 수신하고;
    상기 특정 메모리 어드레스가 상기 맵핑 정보에 기초하여 상기 그룹 식별자와 관련되는지 결정하고;
    상기 특정 메모리 어드레스가 상기 그룹 식별자와 관련되면, 상기 메모리 어드레스들의 세트 중 각각의 메모리 어드레스를 판독하고; 그리고
    상기 메모리 어드레스들의 세트로부터 판독된 데이터를 사용하여 상기 데이터의 압축 그룹에 대응하는 압축해제된 데이터를 발생시키도록 더 구성되는, 데이터 저장 디바이스.
  23. 제20항에 있어서,
    상기 그룹 식별자는 상기 제1 콘텍스트 또는 상기 제2 콘텍스트의 콘텍스트 식별자인, 데이터 저장 디바이스.
  24. 제20항에 있어서,
    상기 제어기는 상기 그룹 식별자를 상기 데이터의 압축 그룹에 할당하도록 더 구성되고, 상기 그룹 식별자는 상기 제1 콘텍스트 식별자와 구별되고 그리고 상기 제2 콘텍스트 식별자와 구별되는, 데이터 저장 디바이스.
  25. 제16항에 있어서,
    상기 메모리는 3차원(3D) 메모리 구성을 갖는, 데이터 저장 디바이스.
  26. 제25항에 있어서,
    상기 3D 메모리 구성은, 메모리 다이의 메모리 셀들의 어레이들의 하나 이상의 물리적 레벨들에서 단일하게 형성되고, 상기 메모리 다이는 실리콘 기판 위에 활성 영역을 갖고, 그리고
    상기 메모리 다이는 상기 메모리 셀들의 동작과 관련된 회로를 더 포함하는, 데이터 저장 디바이스.
  27. 방법에 있어서,
    제어기 및 메모리를 포함하는 데이터 저장 디바이스로서, 상기 메모리는 정보를 저장하기 위한 단일 레벨 셀 - 상기 정보는 정보가 압축가능한지를 나타내는 액세스 디바이스로부터의 인디케이터(indicator)와 관련되고 액세스 디바이스로부터의 명령에 포함된 콘텍스트 식별자와 관련되고, 상기 콘텍스트 식별자는 상기 액세스 디바이스 내의 제2 데이터와 관련된 액세스 디바이스 동작 콘텍스트 내의 정보와 관련된 동작 콘텍스트를 나타내기 위해 상기 액세스 디바이스에 의해 할당됨 - 을 갖는 데이터 저장 디바이스에서,
    특정 메모리 어드레스와 관련된 액세스 디바이스로부터의 판독 명령에 응답하여, 데이터의 압축 그룹들과 관련된 그룹 식별자들에 상기 메모리의 멀티 레벨 셀의 메모리 어드레스들을 맵핑하는 맵핑 정보에 기초하여, 상기 특정 메모리 어드레스가 상기 그룹 식별자 중 임의의 그룹 식별자와 관련되는지 결정하는 단계와;
    상기 특정 메모리 어드레스가 상기 그룹 식별자와 관련되면,
    상기 그룹 식별자에 의해 식별되는 데이터의 압축 그룹에 대응하고, 상기 특정 메모리 어드레스 및 하나 이상의 추가적인 메모리 어드레스들을 포함하는 메모리 어드레스들의 세트를 결정하는 단계와;
    상기 메모리 어드레스들의 세트에 대응하는 상기 메모리의 저장 소자들의 세트로부터 압축된 데이터를 판독하기 위해 판독 동작을 수행하는 단계와; 그리고
    상기 압축된 데이터에 대응하는 압축해제된 데이터를 발생시키는 단계를 수행하는, 방법.
  28. 제27항에 있어서,
    상기 특정 메모리 어드레스가 상기 그룹 식별자들 중 임의의 그룹 식별자와 관련되지 않으면,
    상기 특정 메모리 어드레스에 대응하는 상기 메모리의 저장 소자들로부터 데이터를 판독하기 위해 판독 동작을 수행하는 단계와; 그리고
    상기 특정 메모리 어드레스에 대응하는 압축해제된 데이터를 발생시키는 단계를 더 포함하는, 방법.
  29. 제27항에 있어서,
    상기 맵핑 정보는, 상기 제어기가 상기 데이터의 압축 그룹을 형성한 후에, 상기 제어기에 의해 상기 메모리에 저장되는, 방법.
  30. 제27항에 있어서,
    상기 그룹 식별자는, 상기 제어기에 의해 상기 데이터의 압축 그룹에 할당되는, 방법.
  31. 장치에 있어서,
    정보를 저장하기 위한 수단 - 상기 저장하기 위한 수단은 상기 저장하기 위한 수단으로의 액세스를 제공하기 위한 수단으로부터의 제1 기입 명령과 관련되고, 제1 데이터가 압축가능한지를 나타내는 액세스를 제공하기 위한 수단으로부터의 정보와 관련된, 제1 데이터를 저장하도록 구성된 단일 레벨 셀을 가짐 - 과; 그리고
    상기 저장하기 위한 수단을 제어하기 위한 수단을 포함하고,
    상기 제어하기 위한 수단은,
    제1 콘텍스트와 관련되고 제1 기입 명령에 포함되는 제1 콘텍스트 식별자와 제2 콘텍스트와 관련되고 상기 액세스를 제공하기 위한 수단으로부터의 제2 기입 명령에 포함되는 제2 콘텍스트 식별자의 비교를 수행 - 상기 제1 콘텍스트 식별자는 상기 액세스를 제공하기 위한 수단 내에서 상기 제1 데이터와 관련된 제1 동작 콘텍스트를 나타내기 위해 상기 액세스를 제공하기 위한 수단에 의해 할당되고, 상기 제2 콘텍스트 식별자는 상기 액세스를 제공하기 위한 수단 내에서 제2 데이터와 관련된 제2 동작 콘텍스트를 나타내기 위해 상기 액세스를 제공하기 위한 수단에 의해 할당됨 - 하고; 그리고
    상기 제1 콘텍스트 식별자가 상기 제2 콘텍스트 식별자와 매칭하면, 상기 저장하기 위한 수단의 멀티 레벨 셀에 압축된 데이터를 기입 - 상기 압축된 데이터는 상기 제2 기입 명령에 대응하는 제1 데이터 및 제2 데이터 중 적어도 하나를 포함하는 데이터의 압축 그룹을 압축함으로써 발생됨 - 하도록 구성되는, 장치.
  32. 제31항에 있어서,
    상기 제어하기 위한 수단은,
    압축된 데이터를 발생시키기 전에 상기 저장하기 위한 수단에 제1 데이터를 기입하고; 그리고
    상기 비교를 수행한 후에, 상기 제1 콘텍스트 식별자와 상기 제2 콘텍스트 식별자가 매칭하면,
    상기 저장하기 위한 수단으로부터 상기 제1 데이터를 판독하고; 그리고
    상기 데이터의 압축 그룹을 형성하기 위해 상기 제1 데이터 및 상기 제2 데이터를 결합하도록 더 구성되는, 장치.
KR1020167018184A 2013-12-20 2014-12-09 데이터를 압축하는 시스템들 및 방법들 KR102051179B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361919614P 2013-12-20 2013-12-20
US61/919,614 2013-12-20
US14/502,554 2014-09-30
US14/502,554 US9959072B2 (en) 2013-12-20 2014-09-30 Systems and methods of compressing data
PCT/US2014/069240 WO2015094800A1 (en) 2013-12-20 2014-12-09 Systems and methods of compressing data

Publications (2)

Publication Number Publication Date
KR20160105802A KR20160105802A (ko) 2016-09-07
KR102051179B1 true KR102051179B1 (ko) 2020-01-08

Family

ID=53400069

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167018184A KR102051179B1 (ko) 2013-12-20 2014-12-09 데이터를 압축하는 시스템들 및 방법들

Country Status (5)

Country Link
US (1) US9959072B2 (ko)
EP (1) EP3084586B1 (ko)
KR (1) KR102051179B1 (ko)
CN (1) CN105874420B (ko)
WO (1) WO2015094800A1 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105431831B (zh) * 2014-02-17 2018-10-02 联发科技股份有限公司 数据存取方法和利用相同方法的数据存取装置
JP6570809B2 (ja) * 2014-02-28 2019-09-04 三菱重工サーマルシステムズ株式会社 冷凍機制御装置、冷凍機、及び冷凍機の診断方法
US10613756B2 (en) * 2015-09-03 2020-04-07 Qualcomm Incorporated Hardware-accelerated storage compression
CN105204781B (zh) * 2015-09-28 2019-04-12 华为技术有限公司 压缩方法、装置和设备
CN107526538B (zh) * 2016-06-22 2020-03-20 伊姆西Ip控股有限责任公司 用于在存储系统中传递消息的方法和系统
US10735462B2 (en) * 2016-12-01 2020-08-04 Kaminario Technologies Ltd. Computer malware detection
US10387305B2 (en) * 2016-12-23 2019-08-20 Intel Corporation Techniques for compression memory coloring
US10761756B1 (en) * 2016-12-28 2020-09-01 EMC IP Holding Company LLC Compressing data in line using weighted compression budgets
US11052930B2 (en) 2017-06-16 2021-07-06 Verb Surgical Inc. Robotic arm cart having locking swivel joints and other position adjustment features and uses therefor
US11099789B2 (en) 2018-02-05 2021-08-24 Micron Technology, Inc. Remote direct memory access in multi-tier memory systems
US12135876B2 (en) 2018-02-05 2024-11-05 Micron Technology, Inc. Memory systems having controllers embedded in packages of integrated circuit memory
US10880401B2 (en) * 2018-02-12 2020-12-29 Micron Technology, Inc. Optimization of data access and communication in memory systems
CN109709589B (zh) * 2019-01-09 2023-07-18 深圳市芯鹏智能信息有限公司 一种海空区域立体感知防控系统
US11429279B2 (en) * 2020-09-16 2022-08-30 Samsung Electronics Co., Ltd. Automatic data separation and placement for compressed data in a storage device
CN115225094A (zh) * 2021-04-21 2022-10-21 伊姆西Ip控股有限责任公司 数据压缩方法、电子设备和计算机程序产品
US20240143227A1 (en) * 2022-10-26 2024-05-02 Western Digital Technologies, Inc. Data Storage Device and Method for Reducing Flush Latency

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130145085A1 (en) 2008-06-18 2013-06-06 Super Talent Technology Corp. Virtual Memory Device (VMD) Application/Driver with Dual-Level Interception for Data-Type Splitting, Meta-Page Grouping, and Diversion of Temp Files to Ramdisks for Enhanced Flash Endurance
US20130179409A1 (en) 2012-01-06 2013-07-11 International Business Machines Corporation Separation of data chunks into multiple streams for compression
US20130246721A1 (en) 2012-02-08 2013-09-19 Kabushiki Kaisha Toshiba Controller, data storage device, and computer program product

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5990810A (en) * 1995-02-17 1999-11-23 Williams; Ross Neil Method for partitioning a block of data into subblocks and for storing and communcating such subblocks
US5870036A (en) * 1995-02-24 1999-02-09 International Business Machines Corporation Adaptive multiple dictionary data compression
US6301394B1 (en) 1998-09-25 2001-10-09 Anzus, Inc. Method and apparatus for compressing data
US6100825A (en) * 1998-12-31 2000-08-08 Microsoft Corporation Cluster-based data compression system and method
US6819271B2 (en) * 1999-01-29 2004-11-16 Quickshift, Inc. Parallel compression and decompression system and method having multiple parallel compression and decompression engines
US6446145B1 (en) * 2000-01-06 2002-09-03 International Business Machines Corporation Computer memory compression abort and bypass mechanism when cache write back buffer is full
US6618397B1 (en) * 2000-10-05 2003-09-09 Provisionpoint Communications, Llc. Group packet encapsulation and compression system and method
US7047382B2 (en) * 2000-11-29 2006-05-16 Quickshift, Inc. System and method for managing compression and decompression and decompression of system memory in a computer system
KR100777271B1 (ko) * 2001-02-28 2007-11-20 엘지전자 주식회사 디지털 시스템의 메모리 관리 방법
US6859858B2 (en) 2001-11-15 2005-02-22 Intel Corporation Methods and apparatuses for content-based speed variation of an optical storage drive
US7081377B2 (en) * 2002-06-27 2006-07-25 Sandisk 3D Llc Three-dimensional memory
US6711635B1 (en) * 2002-09-30 2004-03-23 Western Digital Technologies, Inc. Disk drive employing thresholds for cache memory allocation
US7433994B2 (en) 2004-12-07 2008-10-07 Ocz Technology Group, Inc. On-device data compression to increase speed and capacity of flash memory-based mass storage devices
US7711890B2 (en) * 2006-06-06 2010-05-04 Sandisk Il Ltd Cache control in a non-volatile memory device
US8412682B2 (en) * 2006-06-29 2013-04-02 Netapp, Inc. System and method for retrieving and using block fingerprints for data deduplication
US8327051B2 (en) 2007-11-20 2012-12-04 Sandisk Technologies Inc. Portable handheld memory card and methods for use therewith
CN101521039B (zh) * 2008-02-29 2012-05-23 群联电子股份有限公司 数据储存系统、控制器及方法
US8630987B2 (en) 2008-07-16 2014-01-14 Cleversafe, Inc. System and method for accessing a data object stored in a distributed storage network
US8533564B2 (en) * 2009-12-23 2013-09-10 Sandisk Technologies Inc. System and method of error correction of control data at a memory device
US8326811B2 (en) * 2010-10-26 2012-12-04 Hitachi, Ltd. File management method and computer system
KR20130030640A (ko) * 2011-09-19 2013-03-27 삼성전자주식회사 저장 매체에 데이터를 저장하는 방법 및 그것을 포함하는 데이터 저장 장치
US20140007098A1 (en) 2011-12-28 2014-01-02 Paul M. Stillwell, Jr. Processor accelerator interface virtualization
WO2013098463A1 (en) * 2011-12-29 2013-07-04 Nokia Corporation Method for erasing data entity in memory module
US8918579B2 (en) 2012-02-06 2014-12-23 Sandisk Technologies Inc. Storage device and method for selective data compression
JP5536255B2 (ja) * 2012-06-04 2014-07-02 慧榮科技股▲分▼有限公司 データアクセス時間を短縮したフラッシュメモリ装置及びフラッシュメモリのデータアクセス方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130145085A1 (en) 2008-06-18 2013-06-06 Super Talent Technology Corp. Virtual Memory Device (VMD) Application/Driver with Dual-Level Interception for Data-Type Splitting, Meta-Page Grouping, and Diversion of Temp Files to Ramdisks for Enhanced Flash Endurance
US20130179409A1 (en) 2012-01-06 2013-07-11 International Business Machines Corporation Separation of data chunks into multiple streams for compression
US20130246721A1 (en) 2012-02-08 2013-09-19 Kabushiki Kaisha Toshiba Controller, data storage device, and computer program product

Also Published As

Publication number Publication date
WO2015094800A1 (en) 2015-06-25
CN105874420B (zh) 2019-06-18
US20150178013A1 (en) 2015-06-25
EP3084586A1 (en) 2016-10-26
KR20160105802A (ko) 2016-09-07
US9959072B2 (en) 2018-05-01
EP3084586B1 (en) 2021-12-29
CN105874420A (zh) 2016-08-17

Similar Documents

Publication Publication Date Title
KR102051179B1 (ko) 데이터를 압축하는 시스템들 및 방법들
US9626312B2 (en) Storage region mapping for a data storage device
US9471254B2 (en) Storage module and method for adaptive burst mode
US9720769B2 (en) Storage parameters for a data storage device
US10318193B2 (en) Systems and methods of command authorization
US9478315B2 (en) Bit error rate mapping in a memory system
US20160162215A1 (en) Meta plane operations for a storage device
US20160019160A1 (en) Methods and Systems for Scalable and Distributed Address Mapping Using Non-Volatile Memory Modules
US9244858B1 (en) System and method of separating read intensive addresses from non-read intensive addresses
JP2017523587A (ja) メモリモジュール
US9760481B2 (en) Multiport memory
US9870174B2 (en) Multi-stage programming at a storage device using multiple instructions from a host
US20170102879A1 (en) Descriptor data management
US9582205B2 (en) Protection scheme with dual programming of a memory system
US10642681B2 (en) Memory die temperature adjustment based on aging condition
WO2019203915A1 (en) Storage cache management
US9870167B2 (en) Systems and methods of storing data
US9990145B2 (en) Memory system and method for increasing read parallelism of translation pages
US10372351B2 (en) Techniques for non-blocking control information and data synchronization by a data storage device
CN112114740A (zh) 存储装置及其操作方法
US10013173B2 (en) Data storage device with command buffer management module and method of operating same
US10579611B2 (en) Selective event logging

Legal Events

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