KR101992274B1 - 데이터 압축 방법과 상기 방법을 수행할 수 있는 장치들 - Google Patents

데이터 압축 방법과 상기 방법을 수행할 수 있는 장치들 Download PDF

Info

Publication number
KR101992274B1
KR101992274B1 KR1020130000074A KR20130000074A KR101992274B1 KR 101992274 B1 KR101992274 B1 KR 101992274B1 KR 1020130000074 A KR1020130000074 A KR 1020130000074A KR 20130000074 A KR20130000074 A KR 20130000074A KR 101992274 B1 KR101992274 B1 KR 101992274B1
Authority
KR
South Korea
Prior art keywords
data block
previous
data
current
memory area
Prior art date
Application number
KR1020130000074A
Other languages
English (en)
Other versions
KR20140088319A (ko
Inventor
서만근
김대욱
손홍락
공준진
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020130000074A priority Critical patent/KR101992274B1/ko
Priority to JP2013262636A priority patent/JP6512733B2/ja
Priority to US14/135,628 priority patent/US9280287B2/en
Priority to EP13199794.2A priority patent/EP2752760B1/en
Priority to CN201410001223.XA priority patent/CN103916131B/zh
Publication of KR20140088319A publication Critical patent/KR20140088319A/ko
Application granted granted Critical
Publication of KR101992274B1 publication Critical patent/KR101992274B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3086Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

데이터 압축 방법은 처리될 현재 데이터 블록과 현재 참조 데이터 블록을 비교하는 동안, 이전 데이터 블록의 일부와 이전 참조 데이터 블록의 일부를 비교하는 단계와, 비교의 결과들에 기초하여 상기 이전 데이터 블록의 상기 일부와 상기 현재 데이터 블록을 포함하는 확장 데이터 블록을 압축하거나 상기 현재 데이터 블록을 출력하는 단계를 포함한다.

Description

데이터 압축 방법과 상기 방법을 수행할 수 있는 장치들{METHOD FOR COMPRESSING DATA AND DEVICES USING THE METHOD}
본 발명의 개념에 따른 실시 예는 데이터 압축 기술에 관한 것으로, 특히 데이터 압축 가속화(data compression acceleration)와 상기 데이터 압축 가속화 시에 손실되는 데이터 압축률(data compression ratio)을 보상할 수 있는 데이터 압축 방법과 상기 방법을 수행할 수 있는 장치들에 관한 것이다.
데이터 압축 기술은 통신 장치 및/또는 데이터 저장 장치에서 데이터의 전송 속도를 높이고 상기 장치의 저장 공간의 활용성을 높이기 위해 다양한 방식으로 적용되고 있다.
상기 데이터 압축 기술은 플래시 메모리 장치-기반 데이터 저장 장치에 저장될 데이터의 크기를 줄여줌으로써 상기 저장 장치에 대한 라이트 회수 및/또는 리드 회수를 줄여 줄 수 있을 뿐만 아니라 상기 저장 장치의 기대 수명을 증가시킬 수 있다.
데이터 저장 장치에서 사용되는 데이터 압축 방식으로 무손실 압축(loseless compression) 방식과 손실 압축(lossy compression) 방식이 있다.
상기 무손실 압축 방식으로서 1977년과 1978년에 Abraham Lempel과 Jacob Ziv에 의해 논문으로 공개된 두 개의 무손실 데이터 압축 알고리즘인 LZ77과 LZ78, Abraham Lempel, Jacob Ziv, 및 Terry Welch에 의해 창조된 일반적인 무손실 데이터 압축 알고리즘인 LZW, 또는 Lempel-Ziv Ross Williams(LZRW)라고 불리는 무손실 데이터 압축 알고리즘이 사용된다.
본 발명이 이루고자 하는 기술적인 과제는 데이터 압축 가속화와 상기 데이터 압축 가속화 시에 손실되는 데이터 압축률을 보상할 수 있는 데이터 압축 방법과 상기 방법을 수행할 수 있는 장치들을 제공하는 것이다.
본 발명의 실시 예에 따른 데이터 압축 방법은 처리될 현재 데이터 블록과 현재 참조 데이터 블록을 비교하는 동안, 이전 데이터 블록의 일부와 이전 참조 데이터 블록의 일부를 비교하는 단계와, 비교의 결과들에 기초하여, 상기 이전 데이터 블록의 상기 일부와 상기 현재 데이터 블록을 포함하는 확장 데이터 블록을 압축하거나 상기 현재 데이터 블록을 출력하는 단계를 포함한다.
상기 현재 참조 데이터 블록이 저장된 메모리 영역과 상기 이전 참조 데이터 블록이 저장된 메모리 영역 각각은 인터리빙 방식으로 할당되고 독립적으로 액세스 가능한 서로 다른 메모리에 구현된다.
상기 확장 데이터 블록의 크기와 상기 현재 데이터 블록의 크기의 비는 대소수(mixed decimal)일 수 있다.
상기 데이터 압축 방법은 상기 비교를 위해 버퍼 메모리로부터 상기 이전 참조 데이터 블록의 상기 일부와 상기 현재 참조 데이터 블록을 동시에 리드하는 단계를 더 포함한다.
본 발명의 실시 예에 따른 데이터 압축 회로는 제1메모리 영역, 제2메모리 영역, 및 제3메모리 영역을 포함하는 버퍼 메모리와, 어드레스에 응답하여 상기 제1메모리 영역에 저장된 이전 참조 데이터 블록의 일부와 상기 제2메모리 영역에 저장된 현재 참조 데이터 블록을 출력하는 버퍼 메모리 컨트롤러와, 이전 데이터 블록의 일부와 상기 이전 참조 데이터 블록의 일부의 매치 여부와 현재 데이터 블록과 상기 현재 참조 데이터 블록의 매치 여부를 판단하고 판단의 결과들에 따라 제어 정보를 생성하는 비교 회로와, 상기 제어 정보에 기초하여, 상기 현재 데이터 블록을 출력하거나 상기 이전 데이터 블록의 상기 일부와 상기 현재 데이터 블록을 포함하는 확장 데이터 블록을 압축하여 생성된 압축 데이터를 출력하는 압축 데이터 생성 회로를 포함한다.
본 발명의 실시 예에 따른 데이터 처리 장치는 데이터 저장 장치와, 이전 데이터 블록과 현재 데이터 블록을 포함하는 데이터 스트림을 출력하는 호스트와, 상기 호스트로부터 출력된 상기 데이터 스트림을 데이터 블록 단위 또는 확장 데이터 블록 단위로 매치 여부를 판단하고, 판단의 결과에 따라 상기 데이터 스트림을 상기 데이터 블록 단위 또는 상기 확장 데이터 블록 단위로 압축하고, 압축된 데이터를 상기 데이터 저장 장치로 출력하는 메모리 컨트롤러를 포함하며, 상기 메모리 컨트롤러는 상기 이전 데이터 블록에 대한 매치 여부를 판단한 후, 상기 이전 데이터 블록의 일부와 상기 현재 데이터 블록을 포함하는 확장 데이터 블록에 대한 매치 여부를 판단한다.
상기 확장 데이터 블록의 크기와 상기 현재 데이터 블록의 크기의 비는 정수가 아니다.
상기 메모리 컨트롤러는 제1메모리 영역, 제2메모리 영역, 및 제3메모리 영역을 포함하는 버퍼 메모리와, 어드레스에 응답하여, 상기 제1메모리 영역에 저장된 이전 참조 데이터 블록의 일부와 상기 제2메모리 영역에 저장된 현재 참조 데이터 블록을 동시에 출력하는 버퍼 메모리 컨트롤러와, 상기 이전 데이터 블록의 상기 일부와 상기 이전 참조 데이터 블록의 상기 일부의 매치 여부와 상기 현재 데이터 블록과 상기 현재 참조 데이터 블록의 매치 여부를 동시에 판단하고 판단의 결과들에 따라 제어 정보를 생성하는 비교 회로와, 상기 제어 정보에 기초하여, 상기 현재 데이터 블록을 출력하거나 상기 확장 데이터 블록을 압축해서 생성된 상기 압축 데이터를 출력하는 압축 데이터 생성 회로를 포함한다.
상기 제1메모리 영역, 상기 제2메모리 영역, 및 상기 제3메모리 영역 각각은 인터리빙 방식으로 할당되고 독립적으로 액세스 가능한 서로 다른 메모리에 구현된다.
상기 버퍼 메모리 컨트롤러는 상기 어드레스를 이용하여 상기 제1메모리 영역에 대한 제1어드레스와 상기 제2메모리 영역에 대한 제2어드레스를 생성하는 어드레스 생성기와, 상기 제1어드레스를 이용하여 상기 제1메모리 영역으로부터 상기 이전 참조 데이터 블록의 상기 일부를 리드하는 동시에 상기 제2어드레스를 이용하여 상기 제2메모리 영역으로부터 상기 현재 참조 데이터 블록을 리드하고, 상기 현재 데이터 블록에 대한 제3어드레스에 기초하여 상기 현재 데이터 블록을 상기 제3메모리 영역에 라이트하는 버퍼 메모리 액세스 제어 회로를 포함한다.
상기 비교 회로는 상기 이전 데이터 블록의 상기 일부를 저장하는 레지스터와, 상기 레지스터로부터 출력된 상기 이전 데이터 블록의 상기 일부와 상기 버퍼 메모리 컨트롤러로부터 출력된 상기 이전 참조 데이터 블록의 상기 일부의 매치 여부를 판단하는 제1비교기와, 상기 현재 데이터 블록과 상기 현재 참조 데이터 블록의 매치 여부를 판단하는 제2비교기와, 상기 제1비교기의 출력 신호와 상기 제2비교기의 출력 신호에 기초하여 상기 매치 여부를 나타내는 매치 정보와 매치된 데이터의 길이를 나타내는 길이 정보를 출력하는 길이 계산 회로와, 상기 이전 데이터 블록의 상기 일부에 대한 어드레스와 상기 현재 데이터 블록에 대한 어드레스에 기초하여 거리 정보를 출력하는 거리 계산 회로를 포함하며, 상기 제어 정보는 상기 매치 정보, 상기 길이 정보, 및 상기 거리 정보를 포함한다.
상기 압축 데이터 생성 회로는 상기 매치 정보에 기초하여 선택 신호를 생성하는 선택 신호 생성 회로와, 상기 길이 정보와 상기 거리 정보에 기초하여 상기 압축 데이터를 생성하는 코드 생성 회로와, 상기 선택 신호에 응답하여, 상기 현재 데이터 블록 또는 상기 압축 데이터를 출력하는 선택 회로를 포함한다.
상기 데이터 저장 장치는 플래시 메모리, eMMC(embedded multimedia card), UFS(Universal Flash Storage), USB 플래시 드라이버, 또는 SSD(solid-state drive)일 수 있다.
또한, 상기 데이터 저장 장치는 하드 디스크 드라이브(hard disk drive)일 t수 있다.
상기 데이터 처리 장치는 스마트폰, 태블릿 PC, 또는 e-북과 같은 휴대용 전자 장치일 수 있다.
본 발명의 실시 예에 따른 데이터 압축 방법과 데이터 압축 장치는 데이터 블록 단위로 데이터 블록을 압축할 수 있으므로 데이터 압축 속도를 증가시킬 수 있을 뿐만 아니라 확장 데이터 블록을 압축할 수 있으므로 압축률을 감소를 방지할 수 있는 효과가 있다.
본 발명의 실시 예에 따른 데이터 압축 방법과 데이터 압축 장치는 인터리브된 메모리들 또는 서로 독립적으로 액세스 가능한 메모리들을 사용하여 확장 참조 데이터 블록을 처리할 수 있으므로 압축 효율을 향상시킬 수 있는 효과가 있다.
본 발명의 실시 예에 따른 데이터 압축 방법과 데이터 압축 장치는 이미 처리된 데이터 블록의 일부에 대해서도 이전 참조 데이터 블록의 일부와 매치 여부를 판단할 수 있으므로 데이터 압축률 또는 데이터 압축 효율을 향상시킬 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1a는 본 발명의 실시 예에 따른 데이터 처리 장치의 블록도를 나타낸다.
도 1b와 도 1c는 본 발명의 다른 실시 예들에 따른 데이터 처리 장치의 블록도를 나타낸다.
도 2는 도 1a에 도시된 데이터 압축 회로의 블록도를 나타낸다.
도 3은 도 2에 도시된 해시 키 생성 회로의 블록도를 나타낸다.
도 4는 도 2에 도시된 해시 키 생성 회로의 동작을 설명하기 위한 개념도이다.
도 5는 도 2에 도시된 버퍼 메모리 컨트롤러와 버퍼 메모리의 블록도를 나타낸다.
도 6은 도 2에 도시된 버퍼 메모리 컨트롤러의 블록도를 나타낸다.
도 7은 도 2에 도시된 비교 회로의 블록도를 나타낸다.
도 8은 도 2에 도시된 압축 데이터 생성 회로의 블록도를 나타낸다.
도 9는 도 2에 도시된 데이터 압축 해제 회로의 블록도를 나타낸다.
도 10은 본 발명의 일 실시 예에 따른 데이터 압축 방법을 설명하기 위한 플로우차트이다.
도 11은 본 발명의 다른 실시 예에 따른 데이터 압축 방법을 설명하기 위한 플로우차트이다.
도 12는 도 11에 도시된 데이터 압축 방법을 설명하기 위한 개념도이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
이전 또는 현재 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 이전구성 요소는 현재 구성 요소로 명명될 수 있고 유사하게 현재 구성 요소는 이전구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1a는 본 발명의 실시 예에 따른 데이터 처리 장치의 블록도를 나타낸다.
도 1a을 참조하면, 데이터 처리 장치(100)는 호스트(110), 메모리 컨트롤러 (200), 제1데이터 저장 장치(130), 및 제2데이터 저장 장치(150)를 포함한다.
메모리 컨트롤러(200)와 제1데이터 저장 장치(130)는 하나의 패키지, 예컨대 멀티-칩 패키지(multi-chip package)로 패키징될 수 있다.
데이터 처리 장치(100)는 PC(personal computer), 데이터 서버, 또는 휴대용 전자 장치(portable electronic device)로 구현될 수 있다.
상기 휴대용 전자 장치는 랩탑 컴퓨터(laptop computer), 이동 전화기, 스마트 폰(smart phone), 태블릿(tablet) PC, PDA(personal digital assistant), EDA (enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), PND(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), 또는 e-북(e-book)으로 구현될 수 있다.
호스트(110)는 데이터 블록들을 포함하는 입력 데이터 스트림(IDS)을 메모리 컨트롤러(200)로 출력할 수 있다. 데이터 압축을 신속하게 처리하기 위해, 상기 데이터 블록들 각각은 N(N은 2 이상의 자연수)-바이트 단위로 처리될 수 있다.
메모리 컨트롤러(200)는 데이터 블록 단위로 데이터 블록들 각각을 처리, 예컨대 압축 또는 바이패스(bypass)할 수 있다. 또한, 압축률을 향상시키기 위해, 메모리 컨트롤러(200)는 처리될 현재 데이터 블록과 이전 데이터 블록의 일부를 포함하는 확장 데이터 블록을 압축할 수 있다. 예컨대, 확장 데이터 블록의 크기와 데이터 블록의 크기의 비는 데이터 블록의 관점에서 대소수(mixed decimal)일 수 있다.
본 명세서에서는 설명의 편의를 위해, 데이터 블록은 4-바이트이고 확장 데이터 블록은 6-바이트라고 가정하나 본 발명의 개념은 처리될 바이트의 수에 한정되는 것은 아니다.
메모리 컨트롤러(200)는 호스트(110), 제1데이터 저장 장치(130), 및 제2데이터 저장 장치(150) 사이에서 주고받는 데이터 및/또는 명령을 대응되는 인터페이스 프로토콜(interface protocol)에 따라 인터페이싱 또는 처리할 수 있다.
메모리 컨트롤러(200)는 호스트 인터페이스(210), 데이터 압축 회로(data compression circuit; 230), CPU(또는 프로세서; 240), 제1메모리 컨트롤러(250), 제2메모리 컨트롤러(260), 및 데이터 압축해제 회로(data de-compression circuit; 270)를 포함한다. 예컨대, 메모리 컨트롤러(200)는 시스템 온 칩(system on chip(SoC))으로 구현될 수 있다.
호스트 인터페이스(210), 예컨대 호스트 사이드 인터페이스(host side interface)는 호스트(110)와 메모리 컨트롤러(200) 사이에서 주고받는 데이터 및/또는 명령을 인터페이싱한다.
예컨대, 호스트 인터페이스(210)는 데이터 압축 동작 동안에는 호스트(110)로부터 출력된 입력 데이터 스트림(IDS)을 데이터 압축 회로(230)로 전송하고 데이터 압축 해제 동작 동안에는 데이터 압축해제 회로(270)로부터 출력된 압축 해제된 데이터 스트림(DDS)을 호스트(110)로 전송한다.
데이터 압축 회로(230)는, CPU(240)의 제어에 따라, 데이터 블록 단위로 블록 데이터를 처리(예컨대, 압축 또는 바이패스)하거나 또는 확장 데이터를 처리(예컨대, 압축)할 수 있다. 따라서 상기 데이터 블록 또는 상기 확장 데이터 블록을 처리할 수 있는 데이터 압축 회로(230)는 압축 처리를 가속화하면서도 압축률 저하를 최소화할 수 있다. 데이터 압축 회로(230)는 인코더의 기능을 수행한다.
CPU(240)는 데이터 버스(241)를 통해 데이터 압축 회로(230), 제1메모리 컨트롤러(250), 제2메모리 컨트롤러(260), 및 데이터 압축해제 회로(270) 중에서 적어도 하나의 동작을 제어할 수 있다.
제1메모리 컨트롤러(250)는, 제1데이터 저장 장치(130)의 인터페이스 프로토콜(interface protocol)에 따라, 메모리 컨트롤러(200)와 제1데이터 저장 장치 (130) 사이에서 주고받는 데이터 및/또는 명령을 인터페이싱할 수 있다. 예컨대, 제1데이터 저장 장치(130)가 NAND 플래시 메모리일 때, 제1메모리 컨트롤러(250)는 NAND 플래시 컨트롤러로 구현될 수 있다.
제2메모리 컨트롤러(260)는, 제2데이터 저장 장치(150)의 인터페이스 프로토콜에 따라, 메모리 컨트롤러(200)와 제2데이터 저장 장치(150) 사이에서 주고받는 데이터 및/또는 명령을 인터페이싱할 수 있다. 예컨대, 제2데이터 저장 장치(150)가 DRAM일 때, 제2메모리 컨트롤러(260)는 DRAM 컨트롤러로 구현될 수 있다.
데이터 압축해제 회로(270)는 압축된 데이터를 압축해제하고 압축 해제된 데이터 스트림(DDS)을 호스트 인터페이스(210)를 통하여 호스트(110)로 전송할 수 있다. 데이터 압축해제 회로(270)는 디코더의 기능을 수행한다.
실시 예에 따라, 제1데이터 저장 장치(130)는 플래시-기반 메모리, 예컨대 플래시 메모리, eMMC(embedded multimedia card), UFS(Universal Flash Storage), USB 플래시 드라이브(USB flash drive), 또는 SSD(solid-state drive)일 수 있다.
다른 실시 예에 따라, 제1데이터 저장 장치(130)는 불휘발성 메모리일 수 있다. 상기 불휘발성 메모리는 EEPROM(Electrically Erasable Programmable Read-Only Memory), MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase change RAM), 저항 메모리(Resistive RAM: ReRAM), 나노튜브 RRAM(Nanotube RRAM), 폴리머 RAM(Polymer RAM: PoRAM), 나노 부유 게이트 메모리(Nano Floating Gate Memory: NFGM), 홀로그래픽 메모리 (holographic memory), 분자 전자 메모리 소자 (Molecular Electronics Memory Device), 또는 절연 저항 변화 메모리(Insulator Resistance Change Memory)일 수 있다.
또 다른 실시 예에 따라, 제1데이터 저장 장치(130)는 하드 디스크 드라이브 (hard disk drive)일 수 있다.
제2데이터 저장 장치(150)는 DRAM(dynamic random access memory) 또는 DDR SDRAM(Double data rate synchronous dynamic random access memory)일 수 있다.
예컨대, 제1데이터 저장 장치(130)로/로부터 입력/출력되는 데이터는 제2메모리 컨트롤러(260)의 제어에 따라 제2데이터 저장 장치(150)에 임시로 저장될 수 있다.
도 1b와 도 1c는 본 발명의 다른 실시 예들에 따른 데이터 처리 장치의 블록도를 나타낸다.
도 1a부터 도 1c에 도시된 바와 같이 데이터 압축 회로(230) 및/또는 데이터 압축해제 회로(270)의 설계 위치는 실시 예들에 따라 다양하게 변경될 수 있다.
도 2는 도 1a에 도시된 데이터 압축 회로의 블록도를 나타낸다.
도 2를 참조하면, 데이터 압축 회로(230)는 입력 데이터 레지스터(231), 해시 키(hash key) 생성 회로(233), 버퍼 메모리 컨트롤러(237), 버퍼 메모리(239), 비교 회로(241), 및 압축 데이터 생성 회로(243)를 포함한다.
입력 데이터 레지스터(231)는 입력 데이터 스트림(IDS)을 수신하고, 입력 데이터 스트림(IDS)에 포함된 데이터 블록들 각각의 지연(delay)을 대응되는 지연 회로(D1, D2, 및 D3)를 이용하여 조절하고, 지연 조절된 데이터 블록들 각각(DATA2, DATA3, 및 DATA4)을 처리 회로들(237, 241, 및 243) 각각으로 전송한다.
각 지연 회로(D1, D2, 및 D3)의 지연은 각 처리 회로(233, 237, 및 241)의 처리 시간에 따라 조절될 수 있다.
입력 데이터 레지스터(231)는 입력 데이터 스트림(IDS)에 포함된 데이터 블록(DATA1)을 해시 키 생성 회로(233)로 전송하고, 제1지연 데이터 블록(DATA2)을 버퍼 메모리 컨트롤러(237)로 전송하고, 제2지연 데이터 블록(DATA3)을 비교 회로 (241)로 전송하고, 제3지연 데이터 블록(DATA4)을 압축 데이터 생성 회로(243)로 전송한다.
지연을 무시하면, 각 데이터 블록(DATA1, DATA2, DATA3, 및 DATA4)은 동일한 데이터 블록이다.
도 3은 도 2에 도시된 해시 키 생성 회로의 블록도를 나타낸다.
도 3을 참조하면, 해시 키 생성 회로(233)는 순차적으로 입력되는 각 데이터 블록(또는 각 데이터 패턴; DATA1)에 대응하는 해시 키(Hi)를 생성하고, 생성된 해시 키(Hi)에 해당하는 해시 키 테이블(235)의 엔트리(entry)에 상기 각 데이터 블록이 존재하는(또는 저장된) 버퍼 메모리(239)에 포함된 각 저장 영역(또는 메모리 영역)의 위치 (position) 또는 어드레스(address)를 라이트한다.
해시 키 생성 회로(233)는 해시 키 생성기(233-1), 제1카운터(233-2), 및 해시 키 테이블(235)을 포함한다.
도 4는 도 2에 도시된 해시 키 생성 회로의 동작을 설명하기 위한 개념도이다.
도 3과 도 4를 참조하면, 해시 키 생성기(233-1)는 하나의 데이터 블록을 구성하는 L(L는 자연수, 설명의 편의를 위해 본 명세서에서 L=4)-바이트 단위로 해시 키(Hi)를 생성하고 생성된 해시 키(Hi)를 해시 키 테이블(235)로 출력한다.
제1카운터(233-2)는 각 데이터 블록(DATA1)에 포함된 바이트들을 바이트-단위로 카운트하고, 카운트 결과에 따라 제1카운트 값(BCNT)을 해시 키 테이블(235)로 출력한다.
해시 키 테이블(235)은 해시 키(Hi)에 의해 지정된 엔트리에 제1카운트 값 (BCNT)을 저장한다. 이때, 제1카운트 값(BCNT)은 어드레스(ADD)에 대응될 수 있다.
예컨대, 해시 키 생성기(233-1)는 제1처리 유닛(PU1), 즉 4-바이트 (A1A2A3A4)에 상응하는 해시 키(H0)를 생성하고, 카운터(233-2)는 4-바이트 (A1A2A3A4)의 시작 위치를 지시하는 제1카운트 값(BCNT)으로서 Ox00을 생성한다.
해시 키 테이블(235)은 해시 키(H0)에 의해 지정된 엔트리에 제1카운트 값 (BCNT) 또는 어드레스(ADD), 즉 Ox00을 저장한다. 본 명세서에서 어드레스는 액세스할 저장 영역을 지시하는 어드레스를 의미한다.
이때, 해시 키 테이블(235)은 제1처리 유닛(PU1=A1A2A3A4)에 대한 어드레스 (ADD)로서 Ox00을 출력할 수 있다.
또한, 해시 키 생성기(233-1)는 다음 4-바이트(A2A3A4B5)에 상응하는 해시 키(H2)를 생성하고, 카운터(233-2)는 다음 4-바이트(A2A3A4B5)의 시작 위치를 지시하는 제1카운트 값(BCNT)으로서 Ox01을 생성한다.
해시 키 생성기(233-1)는 다음 4-바이트(A3A4B5B6) 상응하는 해시 키(H4)를 생성하고, 카운터(233-2)는 4-바이트(A3A4B5B6)의 시작 위치를 지시하는 제1카운트 값(BCNT)으로서 Ox02을 생성한다. 해시 키 생성기(233-1)는 다음 4-바이트 (A4B5B6B7) 상응하는 해시 키(H6)를 생성하고, 카운터(233-2)는 4-바이트 (A4B5B6B7)의 시작 위치를 지시하는 제1카운트 값(BCNT)으로서 Ox03을 생성한다.
해시 키 생성기(233-1)는 제2처리 유닛(PU2), 즉 4-바이트(B5B6B7B8)에 상응하는 해시 키(H8)를 생성하고, 카운터(233-2)는 4-바이트(B5B6B7B8)의 시작 위치를 지시하는 제1카운트 값(BCNT)으로서 Ox04을 생성한다. 이때, 해시 키 테이블(235)은 제2처리 유닛(PU2=B5B6B7B8)에 대한 어드레스(ADD)로서 Ox04를 출력할 수 있다.
해시 키 생성기(233-1)는 제3처리 유닛(PU3), 즉 4-바이트(C1C2A3A4)에 상응하는 해시 키를 생성하고, 카운터(233-2)는 4-바이트(C1C2A3A4)의 시작 위치를 지시하는 제1카운트 값(BCNT)으로서 Ox08을 생성한다. 이때, 해시 키 테이블(235)은 제3처리 유닛(PU3=C1C2A3A4)에 대한 어드레스(ADD)로서 Ox08를 출력할 수 있다.
해시 키 생성기(233-1)는 제4처리 유닛(PU4), 즉 4-바이트(B1B2B3B4)에 상응하는 해시 키(H1)를 생성하고, 카운터(233-2)는 4-바이트(B1B2B3B4)의 시작 위치를 지시하는 제1카운트 값(BCNT)으로서 Ox0C을 생성한다. 이때, 해시 키 테이블(235)은 어드레스(ADD)로서 Ox0C를 출력할 수 있다.
해시 키 생성기(233-1)는 제5처리 유닛(PU5), 즉 4-바이트(C3C4A3A4)에 상응하는 해시 키(H7)를 생성하고, 카운터(233-2)는 4-바이트(C3C4A3A4)의 시작 위치를 지시하는 제1카운트 값(BCNT)으로서 Ox40을 생성한다. 이때, 해시 키 테이블(235)은 어드레스(ADD)로서 Ox40를 출력할 수 있다.
제4처리 유닛(PU4=B1B2B3B4)과 동일한 제6처리 유닛(PU6=B1B2B3B4)이 해시 키 생성기(233-1)로 입력되면, 해시 키 생성기(233-1)는 제4처리 유닛(PU4)에 대한 해시 키(H1)와 동일한 해시 키(H1)를 생성하고, 카운터(233-2)는 제6처리 유닛 (PU6)의 4-바이트(B1B2B3B4)의 시작 위치를 지시하는 제1카운트 값(BCNT)으로서 Ox44를 생성한다.
이때, 해시 키 테이블(235)은 제6처리 유닛(PU6=B1B2B3B4)에 대한 어드레스 (ADD)로서 Ox44를 출력하는 대신에 OxOC를 출력한다. 이때, 해시 키(H1)에 상응하는 엔트리의 어드레스(ADD)는 Ox0C로부터 Ox44로 업데이트된다.
처리될 현재 데이터 블록이 이전 데이터 블록과 매치 또는 동일할 때, 해시 키 테이블(235)은 데이터 블록 단위로 생성된 해시 키(Hi)에 대응되는 어드레스 (ADD)를 버퍼 메모리 컨트롤러(237)로 출력할 수 있다.
도 5는 도 2에 도시된 버퍼 메모리 컨트롤러와 버퍼 메모리의 블록도를 나타낸다.
버퍼 메모리 컨트롤러(237)는, 해시 키 생성 회로(233)로부터 출력된 어드레스(ADD)에 기초하여, 서로 다른 메모리들(239-1~239-4) 중의 어느 하나에 저장된 이전 참조 데이터 블록의 일부와 메모리들(239-1~239-4) 중의 다른 하나에 저장된 현재 참조 데이터 블록을 포함하는 확장 참조 데이터 블록(MDATA)과, 확장 참조 데이터 블록(MDATA)의 시작 위치를 지시하는 확장 참조 데이터 블록 시작 어드레스 (MDATA_ADD)를 비교 회로(241)로 전송한다.
또한, 버퍼 메모리 컨트롤러(237)는 제1지연 데이터 블록(DATA2)의 시작 위치를 지시하는 라이트 어드레스에 응답하여 제1지연 데이터 블록(DATA2)을 인터리브된 구조를 갖는 메모리들(239-1~239-4) 중의 어느 하나에 라이트한다.
버퍼 메모리(239)는 인터리빙(interleaving) 방식으로 할당되고 독립적으로 액세스 가능한 서로 다른 메모리들(239-1~239-4)을 포함한다. 메모리들(239-1~239-4) 각각은 듀얼-포트(dual-port) SRAM으로 구현될 수 있다. 상기 듀얼-포트 SRAM은 싱글-포트(single-port) SRAM과 달리 동일한 사이클 내에서 리드 동작과 라이트 동작을 동시에 수행할 수 있다.
버퍼 메모리 컨트롤러(237)가 인터리빙 방식으로 할당된 서로 다른 어드레스를 갖는 서로 다른 메모리들(239-1~239-4)을 이용할 수 있으므로, 버퍼 메모리 컨트롤러(237)는 이전 참조 데이터 블록의 일부와 현재 참조 데이터 블록을 동시에 리드할 수 있다.
도 6은 도 2에 도시된 버퍼 메모리 컨트롤러의 블록도를 나타낸다.
제1처리 유닛(PU1), 즉 최초 데이터 블록(A1A2A3A4)이 처리되는 과정이 도 1a부터 도 8까지를 참조하여 상세히 설명된다.
해시 키 생성 회로(233)로부터 제1처리 유닛(PU1)에 대한 해시 키(H0)에 대응되는 데이터 블록(A1A2A3A4)의 시작 위치를 지시하는 어드레스(ADD=Ox00)가 입력되고 제1지연 데이터 블록(DATA2=A1A2A3A4)이 입력 데이터 레지스터(231)를 통하여 입력되면, 버퍼 메모리 컨트롤러(237)의 어드레스 생성기(237-1)는 현재 참조 어드레스(ADD_C)와 직전(immediately previous; 또는 이전(previous)) 참조 어드레스 (ADD_P)를 생성한다.
이때, 현재 참조 어드레스(ADD_C)는 해시 키 생성 회로(233)로부터 출력된 어드레스(ADD=Ox00)와 동일하고, 직전 참조 어드레스(ADD_P)는 바로 인접하는 메모리의 메모리 영역의 어드레스를 나타낸다. 제1처리 유닛(PU1)의 데이터 블록이 최초 데이터 블록일 때, 직전 참조 어드레스(ADD_P)는 디폴트로 설정된 어드레스일 수 있다.
도 6의 제2카운터(237-2)는 제1지연 데이터 블록(DATA2=A1A2A3A4)의 시작 위치를 카운트하고 제2카운트 값(BCNT1=Ox00)을 생성한다. 이때, 제2카운트 값 (BCNT1)은 제1지연 데이터 블록(DATA2=A1A2A3A4)이 저장될 메모리 영역의 어드레스에 상응한다.
도 6에서는 제2카운터(237-2)가 도시되어 있으나, 실시 예에 따라 제2카운터 (237-2)가 구현되지 않는 경우, 제2카운트 값(BCNT1) 대신에, 도 3의 제1카운터 (233-2)의 제1카운트 값(BCNT=Ox00)이 직접 버퍼 메모리 액세스 제어 회로(273-3)로 입력될 수 있다.
버퍼 메모리 액세스 제어 회로(273-3)는 현재 참조 어드레스(ADD_C=Ox00)에 대응되는 제1메모리 영역(MR1)에 저장된 현재 참조 데이터 블록, 예컨대 4-바이트 (X1X2X3X4)를 리드하는 동시에 디폴트로 설정된 직전 참조 어드레스(ADD_P)에 대응되는 메모리 영역에 저장된 직전 참조 데이터 블록의 일부, 예컨대 2-바이트를 리드한다.
여기서, 직전 참조 데이터 블록은 디폴트로 선택된 메모리 영역에 저장된 데이터 블록일 수 있다.
그 후, 버퍼 메모리 액세스 제어 회로(273-3)는 어드레스(ADD=Ox00)에 대응되는 제1메모리(239-1)의 제1메모리 영역(MR1)에 제1지연 데이터 블록 (DATA2=A1A2A3A4)을 라이트한다. 따라서, 현재 참조 데이터 블록(X1X2X3X4)은 제1지연 데이터 블록(DATA2=A1A2A3A4)으로 업데이트된다.
버퍼 메모리 액세스 제어 회로(273-3)는 직전 참조 데이터 블록의 일부와 제1메모리 영역(MR1)에 저장된 현재 참조 데이터 블록(X1X2X3X4)을 포함하는 확장 참조 데이터 블록(MDATA), 예컨대 6-바이트를 비교 회로(241)로 출력할 수 있다. 또한, 버퍼 메모리 액세스 제어 회로(273-3)는 확장 참조 데이터 블록(MDATA)의 시작 위치를 나타내는 확장 참조 데이터 블록 시작 어드레스(MDATA_ADD)를 비교 회로(241)로 출력할 수 있다.
도 7은 도 2에 도시된 비교 회로의 블록도를 나타낸다.
레지스터(301)는 제2지연 데이터 블록(DATA3=A1A2A3A4)이 입력되기 직전의 데이터 블록 중에서 일부를 저장한다. 제2지연 데이터 블록(DATA3=A1A2A3A4)이 최초 데이터 블록일 때, 레지스터(301)에 저장된 2-바이트는 디폴트로 설정된 데이터일 수 있다.
제1비교기(303)는 레지스터(301)에 저장된 2-바이트(PDATA1)와 직전 참조 데이터 블록의 일부(PDATA)를 서로 비교하고 비교의 결과에 따라 제1비교 신호(CP1)를 생성한다.
이와 동시에 또는 병렬적으로, 제2비교기(305)는 현재 참조 데이터 블록 (RDATA=X1X2X3X4)과 제2지연 데이터 블록(DATA3=A1A2A3A4)을 서로 비교하고 비교의 결과에 따라 제2비교 신호(CP2)를 생성한다.
길이 계산 회로(311)는 제1비교 신호(CP1)와 제2비교 신호(CP2)에 기초하여 반복 데이터(repeated data)의 길이를 나타내는 길이 정보(Match_LEN)와 매치 여부를 나타내는 매치 정보(Match_FLAG)를 생성한다.
레지스터(301)에 저장된 2-바이트(PDATA1)와 직전 참조 데이터 블록의 일부 (PDATA)가 서로 일치하지 않고, 현재 참조 데이터 블록(RDATA=X1X2X3X4)과 제2지연 데이터 블록(DATA3=A1A2A3A4)이 서로 일치하지 않으므로, 길이 계산 회로(311)는 제1레벨, 예컨대 하이 레벨을 갖는 매치 정보(Match_FLAG)를 출력할 수 있다. 이때, 길이 계산 회로(311)는 길이 정보(Match_LEN)를 생성하지 않을 수 있다.
거리 계산 회로(309)는 확장 참조 데이터 블록 시작 어드레스(MDATA_ADD)와 제3카운트 값(BCNT2)에 기초하여 확장 데이터 블록의 상대적인 위치, 거리 또는 오프셋(offset)을 나타내는 거리 정보(Match_DIS)를 생성할 수 있다. 실시 예에 따라, 거리 계산 회로(309)는 매치 정보(Match_FLAG)에 기초하여 인에이블 또는 디스에이블될 수 있다.
제3카운터(307)는 제2지연 데이터 블록(DATA3=A1A2A3A4)의 시작 위치를 카운트하고 카운트 결과에 따라 제3카운트 값(BCNT2)을 생성할 수 있다.
도 7에서는 제3카운터(307)가 별도로 구현된 예가 도시되어 있으나, 실시 예에 따라 제3카운터(307)가 구현되지 않을 때, 카운트 값(BCNT2) 대신에, 도 3에 도시된 제1카운터(233-2)의 제1카운트 값(BCNT)이 직접 거리 계산 회로(309)로 입력될 수도 있다.
압축 데이터 생성 회로(243)의 동작을 제어할 수 있는 제어 정보(COMP)는 길이 정보(Match_LEN), 매치 정보(Match_FLAG), 및 거리 정보(Match_DIS)를 포함한다.
도 8은 도 2에 도시된 압축 데이터 생성 회로의 블록도를 나타낸다.
압축 데이터 생성 회로(243)는 제어 정보(COMP)와 제3지연 데이터 블록 (DATA4)에 기초하여 LLD(literals and length/distance) 데이터를 생성할 수 있다.
즉, 압축 데이터 생성 회로(243)는, 제어 정보(COMP)에 기초하여, 처리될 제3지연 데이터 블록(DATA4)이 반복(repeated) 데이터 블록 또는 반복 데이터 패턴인지를 판단하고, 판단의 결과에 따라 제3지연 데이터 블록(DATA4)을 압축하지 않고 그대로 출력하거나 또는 제3지연 데이터 블록(DATA4)을 포함하는 확장 데이터 블록을 압축할 수 있다.
이때, 압축되지 않은 데이터 블록은 제1인코딩 방식에 따라 생성된 데이터, 예컨대 "리터럴(literal) 데이터"라 하고, 압축된 데이터 블록 또는 압축된 확장 데이터 블록은 제2인코딩 방식에 따라 생성된 데이터, 예컨대 "길이/거리 데이터"라 한다.
예컨대, 압축 데이터 생성 회로(243)는 유한 상태 머신(finite state machine)으로 구현될 수 있다.
선택 신호 생성 회로(401)는 매치 정보(Match_FLAG)에 응답하여 선택 신호 (SEL)를 생성한다. 예컨대, 매치 정보(Match_FLAG)가 제1레벨을 갖는 신호일 때, 선택 회로(405)는, 제1레벨을 갖는 매치 정보(Match_FLAG)에 응답하여, 제2지연 데이터 블록(DATA4=A1A2A3A4)을 압축하지 않고 그대로 출력한다. 따라서, 리터럴 데이터(A1A2A3A4)가 출력 데이터(DATAO)로서 출력된다.
계속하여 제2처리 유닛(PU2)의 데이터 블록(B5B6B7B8)이 처리되는 과정이 도 1a부터 도 8까지를 참조하여 상세히 설명된다.
해시 키 생성 회로(233)로부터 제2처리 유닛(PU2)의 데이터 블록(B5B6B7B8)의 시작 위치를 지시하는 어드레스(ADD=Ox04)가 입력되고 제1지연 데이터 블록 (DATA2=B5B6B7B8)이 입력 데이터 레지스터(231)를 통해 입력되면, 어드레스 생성기 (237-1)는 현재 참조 어드레스(ADD_C=Ox04)와 직전 참조 어드레스(ADD_P=Ox00)를 생성한다.
어드레스 생성기(237-1)의 구현 예에 따라, 직전 참조 어드레스(ADD_P)로서 Ox02가 출력될 때, 버퍼 메모리 액세스 제어 회로(237-3)는 Ox02와 Ox03에 저장된 데이터를 읽을 수 있다.
또한, 어드레스 생성기(237-1)의 구현 예에 따라, 직전 참조 어드레스 (ADD_P)로서 Ox00가 출력될 때, 버퍼 메모리 액세스 제어 회로(237-3)는 Ox02와 Ox03에 저장된 데이터를 읽을 수 있다.
카운터(237-2)는 제1지연 데이터 블록(DATA2=B5B6B7B8)의 시작 위치를 카운트하고 카운트 결과에 따라 제2카운트 값(BCNT1=Ox04), 즉 라이트 어드레스를 생성한다.
버퍼 메모리 액세스 제어 회로(273-3)는 현재 참조 어드레스(ADD_C=Ox04)에 대응되는 제2메모리(239-2)의 제2메모리 영역(MR2)에 저장된 현재 참조 데이터 블록(X5X6X7X8)을 리드하는 동시에 직전 참조 어드레스(ADD_P=Ox00)에 대응되는 제1메모리(239-1)의 제1메모리 영역(MR1)에 저장된 직전 참조 데이터 블록(A1A2A3A4)의 일부, 예컨대 2-바이트(A3A4)를 리드한다.
그리고, 버퍼 메모리 액세스 제어 회로(273-3)는 라이트 어드레스 (BCNT1=Ox04 또는 실시 예에 따라 BCNT=Ox04)에 응답하여 제2메모리(239-2)의 제2메모리 영역(MR2)에 제1지연 데이터 블록(DATA2=B5B6B7B8)을 라이트한다. 따라서, 제2메모리 영역(MR2)에 저장된 현재 참조 데이터 블록(X5X6X7X8)은 제1지연 데이터 블록(DATA2=B5B6B7B8)으로 업데이트 된다.
버퍼 메모리 액세스 제어 회로(273-3)는 제1메모리 영역(MR1)에 저장된 직전 참조 데이터 블록(A1A2A3A4)의 일부(A3A4)와 제2메모리 영역(MR2)에 저장된 현재 참조 데이터 블록(X5X6X7X8)을 포함하는 확장 참조 데이터 블록 (MDATA=A3A4X5X6X7X8), 예컨대 6-바이트를 비교 회로(241)로 출력한다. 또한, 버퍼 메모리 액세스 제어 회로(273-3)는 확장 참조 데이터 블록(MDATA)의 시작 위치를 나타내는 확장 참조 데이터 블록 시작 어드레스(MDATA_ADD=Ox02)를 비교 회로(241)로 출력할 수 있다.
도 7의 레지스터(301)는 제2지연 데이터 블록(DATA3=B5B6B7B8)이 입력되기 직전의 데이터 블록들(A1A2A3A4) 중에서 일부(A3A4)를 저장한다.
제1비교기(303)는 레지스터(301)에 저장된 2-바이트(PDATA1=A3A4)와 직전 참조 데이터 블록의 일부(PDATA=A3A4)를 서로 비교하고 비교의 결과에 따라 제1비교 신호(CP1)를 생성한다.
이와 동시에 또는 병렬적으로 제2비교기(305)는 현재 참조 데이터 블록 (RDATA=X5X6X7X8)과 제2지연 데이터 블록(DATA3=B5B6B7B8)을 서로 비교하고 비교의 결과에 따라 제2비교 신호(CP2)를 생성한다.
길이 계산 회로(311)는 제1비교 신호(CP1)와 제2비교 신호(CP2)에 기초하여 길이 정보(Match_LEN)와 매치 정보(Match_FLAG)를 생성한다.
레지스터(301)에 저장된 2-바이트(PDATA1=A3A4)와 직전 참조 데이터 블록의 일부(PDATA=A3A4)가 서로 일치하고 현재 참조 데이터 블록(RDATA=X5X6X7X8)과 제2지연 데이터 블록(DATA3=B5B6B7B8)이 서로 일치하지 않으므로, 길이 계산 회로 (311)는 제1레벨, 예컨대 하이 레벨을 갖는 매치 정보(Match_FLAG)를 출력한다.
거리 계산 회로(309)는 확장 참조 데이터 블록 시작 어드레스 (MDATA_ADD=Ox02)와 카운트 값(BCNT2=Ox04)에 기초하여 거리 정보(Match_DIS)를 생성한다. 상술한 바와 같이, 거리 계산 회로(309)가 매치 정보(Match_FLAG)에 따라 인에이블 또는 디스에이블될 때 거리 계산 회로(309)는 제1레벨을 갖는 매치 정보(Match_FLAG)에 응답하여 디스에이블될 수 있다.
도 8의 선택 회로(405)는 제1레벨을 갖는 매치 정보(Match_FLAG)에 응답하여 제2지연 데이터 블록(DATA4=B5B6B7B8)을 압축하지 않고 그대로 출력한다. 즉, 제2지연 데이터 블록(DATA4=B5B6B7B8)은 리터럴 데이터(DATAO)로서 출력된다.
제3처리 유닛(PU3)의 데이터 블록(C1C2A3A4), 제4처리 유닛(PU4)의 데이터 블록(B1B2B34B), 및 제5처리 유닛(PU5)의 데이터 블록(C3C4A3A4)이 처리되는 과정은 제2처리 유닛(PU2)의 데이터 블록(B5B6B7B8)이 처리되는 과정과 실질적으로 동일 또는 유사하다.
따라서, 각 메모리 영역(MR3, MR4, 및 MR5)에 저장된 각 참조 데이터 블록 (Y1Y2Y3Y4, Y5Y6Y7Y8, 및 Z1Z2Z3Z4)은 각 데이터 블록(C1C2A3A4, B1B2B34B, 및 C3C4A3A4)으로 업데이트 된다.
도 8의 선택 회로(405)는 제1레벨을 갖는 매치 정보(Match_FLAG)에 응답하여 각 제3지연 데이터 블록(DATA4=C1C2A3A4, B1B2B34B, 및 C3C4A3A4)을 압축하지 않고 그대로 출력한다. 즉, 각 제3지연 데이터 블록(DATA4=C1C2A3A4, B1B2B34B, 및 C3C4A3A4)은 리터럴 데이터(DATAO)로서 출력된다.
제6처리 유닛(PU6)의 데이터 블록(B1B2B3B4)이 처리되는 과정이 도 1a부터 도 8까지를 참조하여 상세히 설명된다.
해시 키 생성 회로(233)는 제6처리 유닛(PU6)의 데이터 블록(B1B2B3B4)에 대한 해시 키(H1)를 생성하고, 생성된 해시 키(H1)에 대응되는 해시 키 테이블(235)의 엔트리에 저장된 제1카운트 값(BCNT), 예컨대 제4처리 유닛(PU4)의 데이터 블록 (B1B2B3B4)의 시작 위치를 지시하는 어드레스(ADD=Ox0C)를 버퍼 메모리 컨트롤러 (237)로 출력한다.
그리고, 해시 키 생성 회로(233)는 생성된 해시 키(H1)에 대응되는 엔트리에 저장된 제1카운트 값(BCNT), Ox0C를 제6처리 유닛(PU6)의 데이터 블록(B1B2B3B4)의 시작 위치를 나타내는 제1카운트 값(BCNT), Ox44로 업데이트 한다. 따라서, 새로운 데이터 블록(B1B2B3B4)이 입력되면, 해시 키 생성 회로(233)는 업데이트된 제1카운트 값(BCNT), Ox44을 어드레스(ADD)로서 출력한다.
버퍼 메모리 컨트롤러(237)의 어드레스 생성기(237-1)는 어드레스(ADD=Ox0C)에 응답하여 현재 참조 어드레스(ADD_C=Ox0C)와 직전 참조 어드레스(ADD_P=Ox08)를 생성한다.
이때, 카운터(237-2)는 제1지연 데이터 블록(DATA2=PU6=B1B2B3B4)의 시작 위치를 카운트하고 카운트 결과에 따라 제2카운트 값(BCNT1=Ox44), 즉 라이트 어드레스를 생성한다.
도 6의 버퍼 메모리 액세스 제어 회로(273-3)는 현재 참조 어드레스 (ADD_C=Ox0C)에 대응되는 제4메모리 영역(MR4)에 저장된 현재 참조 데이터 블록 (B1B2B3B4)를 리드하는 동시에 직전 참조 어드레스(ADD_P=Ox08)에 대응되는 제3메모리 영역(MR3)에 저장된 직전 참조 데이터 블록(C1C2A3A4)의 일부, 예컨대 2-바이트(A3A4)를 리드한다.
그리고, 버퍼 메모리 액세스 제어 회로(273-3)는 라이트 어드레스(ADD=Ox44)에 응답하여 제2메모리(239-2)의 제6메모리 영역(MR6)에 제1지연 데이터 블록 (DATA2=PU6=B1B2B3B4)을 라이트한다. 따라서, 제6메모리 영역(MR6)에 저장된 현재 참조 데이터 블록(Z5Z6Z7Z8)은 제1지연 데이터 블록(DATA2=PU6=B1B2B3B4)으로 업데이트 된다.
버퍼 메모리 액세스 제어 회로(273-3)는 제3메모리 영역(MR3)에 저장된 직전 참조 데이터 블록(C1C2A3A4)의 일부(A3A4)와 제4메모리 영역(MR4)에 저장된 현재 참조 데이터 블록(B1B2B3B4)을 포함하는 확장 참조 데이터 블록 (MDATA=A3A4B1B2B3B4), 예컨대 6-바이트를 비교 회로(241)로 출력할 수 있다. 또한, 버퍼 메모리 액세스 제어 회로(273-3)는 확장 참조 데이터 블록(MDATA)의 시작 위치를 나타내는 확장 참조 데이터 블록 시작 어드레스(MDATA_ADD=Ox0A)를 비교 회로(241)로 출력할 수 있다.
레지스터(301)는 제2지연 데이터 블록(DATA3=PU6=B1B2B3B4)이 입력되기 직전의 데이터 블록들(PU5=C3C4A3A4) 중에서 일부(A3A4)를 저장한다.
제1비교기(303)는 레지스터(301)에 저장된 2-바이트(PDATA1=A3A4)와 직전 참조 데이터 블록의 일부(PDATA=A3A4)를 서로 비교하고 비교의 결과에 따라 제1비교 신호(CP1)를 생성한다.
이와 동시에 제2비교기(305)는 현재 참조 데이터 블록(RDATA=B1B2B3B4)과 제2지연 데이터 블록(DATA3=PU6=B1B2B3B4)을 서로 비교하고 비교의 결과에 따라 제2비교 신호(CP2)를 생성한다.
길이 계산 회로(311)는 제1비교 신호(CP1)와 제2비교 신호(CP2)에 기초하여 길이 정보(Match_LEN)와 매치 정보(Match_FLAG)를 생성한다.
레지스터(301)에 저장된 2-바이트(PDATA1=A3A4)와 직전 참조 데이터 블록의 일부(PDATA=A3A4)가 서로 일치하고 현재 참조 데이터 블록(RDATA=B1B2B3B4)과 제2지연 데이터 블록(DATA3=PU6=B1B2B3B4)이 서로 일치하므로, 길이 계산 회로(311)는 제2레벨, 예컨대 로우 레벨을 갖는 매치 정보(Match_FLAG)를 출력한다.
거리 계산 회로(309)는 확장 참조 데이터 블록 시작 어드레스(MDATA_ADD)와 카운트 값(BCNT2)에 기초하여 거리 정보(Match_DIS)를 생성한다.
선택 회로(405)는 제2레벨을 갖는 매치 정보(Match_FLAG)에 응답하여 코드 생성 회로(403)에 의해 생성된 코드, 즉 길이/거리 데이터를 출력 데이터(DATAO)로서 출력한다.
코드 생성 회로(403)는 길이 정보(Match_LEN)와 거리 정보(Match_DIS)에 기초하여 길이/거리 데이터, 예컨대 압축 데이터를 생성한다.
따라서, 선택 회로(405)는 제5처리 유닛(PU5)에 포함된 2-바이트(A3A4)와 제6처리 유닛(PU6)에 포함된 4-바이트(B1B2B3B4)를 포함하는 확장 데이터, 즉 6-바이트를 출력하는 대신에 코드, 예컨대 길이와 거리를 나타내는 압축 데이터([6, 50])를 출력한다.
본 발명의 실시 예에 따른 데이터 압축 회로(230)는, 데이터 블록 단위로 압축 여부 판단하여 데이터 압축 속도를 향상시킬 수 있을 뿐만 아니라 확장 데이터를 압축할 수 있으므로 압축률을 향상시킬 수 있는 효과가 있다.
예컨대, 제1메모리 컨트롤러(250)는 데이터 압축 회로(230)로부터 출력된 데이터(DATAO)의 압축 여부를 나타내는 플래그(flag)를 생성하고 생성된 플래그와 함께 리터럴 데이터 또는 길이/거리 데이터를 제1데이터 저장 장치(130)에 저장할 수 있다. 이때, 리터럴 데이터 또는 길이/거리 데이터는 제2데이터 저장 장치(150)를 통하여 제1데이터 저장 장치(130)에 저장될 수 있다.
도 9는 도 2에 도시된 데이터 압축 해제 회로의 블록도를 나타낸다.
도 9를 참조하면, 데이터 압축 해제 회로(270)는 유한 상태 머신(271), 출력 데이터 생성 회로(273), 및 출력 데이터 버퍼(275)를 포함한다.
유한 상태 머신(271)은 압축 데이터, 즉 리터럴 데이터와 길이/거리 데이터를 포함하는 압축 데이터(CDATA)와 압축 여부를 나타내는 플래그를 포함하는 헤더 (HEADER)를 수신하고, 헤더(HEADER)에 기초하여 압축 데이터(CDATA)의 압축해제를 지시하는 제어 신호를 출력한다.
출력 데이터 생성 회로(273)는 유한 상태 머신(271)으로부터 출력된 압축 데이터(CDATA)와 상기 제어 신호에 기초하여 압축 데이터(CDATA)에 대한 압축을 해제하고 압축 해제된 데이터 스트림을 출력 데이터 버퍼(275)로 출력한다.
출력 데이터 버퍼(275)는 압축 해제된 데이터 스트림(DDS)을 호스트 인터페이스(210)로 전송한다.
도 10은 본 발명의 일 실시 예에 따른 데이터 압축 방법을 설명하기 위한 플로우차트이다.
도 1a부터 도 8까지, 및 도 10을 참조하면, 데이터 압축 회로(230)의 버퍼 메모리 컨트롤러(237)는 해시 키 생성 회로(233)로부터 출력된 어드레스(ADD)에 기초하여 서로 다른 메모리들(239-1~239-4) 각각에 저장된 이전 참조 데이터 블록의 일부와 현재 참조 데이터 블록을 동시에 읽고 읽혀진 데이터를 비교 회로(241)로 전송한다(S110).
비교 회로(241)는 이전 참조 데이터 블록의 일부와 이전 데이터 블록의 일부를 비교하는 동시에 현재 참조 데이터 블록과 현재 데이터 블록을 비교한다(S120).
상기 이전 참조 데이터 블록의 상기 일부와 상기 이전 데이터 블록의 상기 일부가 서로 매칭되고 상기 현재 참조 데이터 블록과 상기 현재 데이터 블록이 서로 매칭될 때, 압축 데이터 생성 회로(243)는 상기 이전 데이터 블록의 상기 일부와 상기 현재 데이터 블록을 포함하는 확장 데이터 블록을 압축하고 압축 데이터, 즉 길이/거리 데이터를 출력한다(S140).
그러나, 상기 이전 참조 데이터 블록의 상기 일부와 상기 이전 데이터 블록의 상기 일부가 서로 매칭되고 상기 현재 참조 데이터 블록과 상기 현재 데이터 블록이 서로 매칭되지 않을 때, 상기 현재 참조 데이터 블록을 압축하거나 또는 바이패스할 수 있다(S150).
상술한 바와 같이, 이전 데이터 블록과 이전 참조 데이터 블록이 매치되지 않고 현재 데이터 블록과 현재 참조 데이터 블록이 매치될 때, 데이터 압축 회로 (230)는 확장 참조 데이터 블록을 버퍼 메모리(239)로부터 동시에 리드하고, 리드된 확장 참조 데이터 블록과 확장 데이터 블록을 동시에 비교하고, 비교의 결과에 기초하여 상기 확장 데이터 블록을 압축할 수 있다.
여기서, 상기 확장 참조 데이터 블록은 상기 이전 참조 데이터 블록의 일부와 상기 현재 참조 데이터 블록을 포함한다. 상기 확장 참조 데이터 블록의 크기와 상기 현재 참조 데이터 블록의 크기의 비는 정수가 아닌 대소수(mixed decimal)이다.
상술한 바와 같이, 데이터 압축 회로(230)는, 이전 데이터 블록의 반복 여부와 현재 데이터 블록의 반복 여부에 따라, (i) 현재 데이터 블록을 리터럴 데이터로서 출력하거나 (ⅱ) 상기 이전 데이터 블록과 상기 현재 데이터 블록을 압축해서 생성된 길이/거리 데이터를 출력하거나 (ⅲ) 상기 이전 데이터 블록의 일부와 상기 현재 데이터 블록을 포함하는 확장 데이터 블록을 압축해서 생성된 길이/거리 데이터를 출력할 수 있다.
상기 확장 데이터 블록의 크기와 상기 현재 데이터 블록의 크기의 비는 정수가 아닌 대소수이다.
도 11은 본 발명의 다른 실시 예에 따른 데이터 압축 방법을 설명하기 위한 플로우차트이고, 도 12는 도 11에 도시된 데이터 압축 방법을 설명하기 위한 개념도이다.
코딩 위치(coding position)를 변경시켜가면서 데이터 블록을 압축하는 방법은 도 1a, 도 11, 및 도 12를 참조하여 상세히 설명된다.
도 12에 도시된 바와 같이 코딩 위치(CD1, CD2, 및 CD3)는 압축될 데이터 블록의 시작 위치를 의미한다.
데이터 압축 회로(230)는, 처리될 현재 데이터 블록(CDB=A3A4B1B2)과 참조 데이터 블록(RDB)의 매치 여부 또는 반복 여부를 판단하기 위해, 제i코딩 위치 (CD1)에서 현재 데이터 블록(CDB=A3A4B1B2)과 제1참조 데이터 블록(RDB=A1A2A3A4)의 매치 여부를 데이터 블록 단위로 판단한다(S210). 여기서, i는 자연수로서 1부터 시작하고, N은 자연수 3이라고 가정한다.
제i코딩 위치(CD1)에서 매칭 데이터 블록이 발견되지 않을 때(S220), 즉 현재 데이터 블록(CDB=A3A4B1B2)과 제1참조 데이터 블록(RDB=A1A2A3A4)이 매치되지 않을 때, 데이터 압축 회로(230)는 제i코딩 위치(CD1)를 제(i+1) 코딩 위치(CD2)로 변경한다(S230). (i+1)이 N보다 작을 때(S250), 데이터 압축 회로(230)는 제(i+1) 코딩 위치(CD2)에서 현재 데이터 블록(CDB=A3A4B1B2)과 제2참조 데이터 블록 (RDB=B1B2B3B4)의 매치 여부를 데이터 블록 단위로 판단한다(S210).
제(i+1) 코딩 위치(CD2)에서 매칭 데이터 블록이 발견되지 않을 때(S220), 데이터 압축 회로(230)는 제(i+1) 코딩 위치(CD2)를 제(i+2) 코딩 위치(CD3)로 변경한다(S230). (i+1)이 N보다 작을 때(S250), 데이터 압축 회로(230)는 제(i+2) 코딩 위치(CD3)에서 현재 데이터 블록(CDB=A3A4B1B2)과 제3참조 데이터 블록 (RDB=A3A4B1B2)의 매치 여부를 데이터 블록 단위로 판단한다(S210).
제(i+2) 코딩 위치(CD3)에서 매칭 데이터 블록이 발견될 때(S220), 데이터 압축 회로(230)는 제3참조 데이터 블록(RDB=A3A4B1B2)에 기초하여 현재 데이터 블록(CDB=A3A4B1B2)을 길이/거리 데이터로 압축한다(S240).
그러나, 제(i+2) 코딩 위치(CD3)에서도 매칭 데이터 블록이 발견되지 않을 때(S220), 데이터 압축 회로(230)는 제(i+2) 코딩 위치(CD3)를 제(i+3) 코딩 위치로 변경한다(S230). 그러나, (i+1)이 N보다 크므로(S250), 현재 데이터 블록 (CDB=A3A4B1B2)은 리터럴 데이터로서 출력된다(S240).
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100; 데이터 처리 장치
110; 호스트
130; 제1데이터 저장 장치
150; 제2데이터 저장 장치
200; 메모리 컨트롤러
210; 호스트 인터페이스
230; 데이터 압축 회로
231; 입력 데이터 레지스터
233; 해시 키 생성 회로
237; 버퍼 메모리 컨트롤러
239; 버퍼 메모리
241; 비교 회로
243; 압축 데이터 생성 회로
240; CPU
250; 제1메모리 컨트롤러
260; 제2메모리 컨트롤러
270; 데이터 압축 해제 회로

Claims (20)

  1. 입력 데이터 레지스터에서 이전 데이터 블록과 현재 데이터 블록을 포함하는 입력 데이터 스트림을 수신하는 단계;
    상기 입력 데이터 레지스터에서 지연 회로들 중에서 대응되는 지연 회로를 이용하여 상기 현재 데이터 블록의 지연을 조절하고, 제1지연 데이터 블록과 제2지연 데이터 블록을 생성하는 단계;
    비교 회로에서 상기 이전 데이터 블록의 일부와 상기 이전 데이터 블록과 관련되는 이전 참조 데이터 블록의 일부를 비교하는 제1비교와 상기 제1지연 데이터 블록의 전부와 상기 현재 데이터 블록과 관련되는 현재 참조 데이터 블록의 전부를 비교하는 제2비교를 수행하는 단계; 및
    압축 데이터 생성 회로에서 상기 제1비교의 결과와 상기 제2비교의 결과에 기초하여, 상기 제2지연 데이터 블록을 출력하거나 확장 데이터 블록을 압축하는 단계를 포함하되,
    상기 입력 데이터 스트림을 수신하는 단계는:
    상기 이전 데이터 블록을 수신하는 단계; 및
    상기 이전 데이터 블록을 수신한 이후에 상기 현재 데이터 블록을 수신하는 단계를 더 포함하고,
    상기 제1비교와 상기 제2비교는 병렬적으로 수행되고,
    상기 확장 데이터 블록은 상기 이전 데이터 블록의 상기 일부와 상기 제2지연 데이터 블록을 포함하고,
    상기 현재 데이터 블록의 크기는 상기 이전 데이터 블록의 상기 일부의 크기보다 크고,
    상기 현재 참조 데이터 블록의 크기는 상기 이전 참조 데이터 블록의 상기 일부의 크기보다 큰 데이터 압축 방법.
  2. 제1항에 있어서,
    상기 현재 참조 데이터 블록이 저장된 메모리 영역과 상기 이전 참조 데이터 블록이 저장된 메모리 영역 각각은 인터리빙 방식으로 할당되고 독립적으로 액세스 가능한 서로 다른 메모리에 구현되는 데이터 압축 방법.
  3. 제1항에 있어서,
    상기 확장 데이터 블록의 크기와 상기 현재 데이터 블록의 크기의 비는 대소수(mixed decimal)인 데이터 압축 방법.
  4. 제1항에 있어서,
    버퍼 메모리로부터 상기 이전 참조 데이터 블록의 상기 일부와 상기 현재 참조 데이터 블록을 병렬적으로 리드하는 단계를 더 포함하는 데이터 압축 방법.
  5. 제1메모리 영역, 제2메모리 영역, 및 제3메모리 영역을 포함하는 버퍼 메모리;
    해시 키 생성 회로로부터 출력된 어드레스에 응답하여, 이전 데이터 블록과 관련되는 상기 제1메모리 영역에 저장된 이전 참조 데이터 블록의 일부와 현재 데이터 블록과 관련되는 상기 제2메모리 영역에 저장된 현재 참조 데이터 블록을 출력하는 버퍼 메모리 컨트롤러;
    상기 이전 데이터 블록 및 상기 현재 데이터 블록을 포함하는 입력 데이터 스트림을 수신하고, 지연 회로들 중에서 대응되는 지연 회로를 이용하여 상기 입력 데이터 스트림에 포함된 상기 현재 데이터 블록의 지연을 조절하고, 제1지연 데이터 블록과 제2지연 데이터 블록을 생성하는 입력 데이터 레지스터;
    상기 이전 데이터 블록의 일부와 상기 이전 참조 데이터 블록의 상기 일부의 매치 여부와 상기 제1지연 데이터 블록과 상기 현재 참조 데이터 블록의 매치 여부를 판단하고, 판단의 결과들에 따라 제어 정보를 생성하는 비교 회로; 및
    상기 제어 정보에 기초하여, 상기 제2지연 데이터 블록을 출력하거나 상기 이전 데이터 블록의 상기 일부와 상기 제2지연 데이터 블록을 포함하는 확장 데이터 블록을 압축하여 생성된 압축 데이터를 출력하는 압축 데이터 생성 회로를 포함하되,
    상기 현재 데이터 블록은 상기 이전 데이터 블록이 상기 입력 데이터 레지스터로 수신된 이후에 상기 입력 데이터 레지스터로 수신되고,
    상기 현재 데이터 블록의 크기는 상기 이전 데이터 블록의 상기 일부의 크기보다 크고,
    상기 현재 참조 데이터 블록의 크기는 상기 이전 참조 데이터 블록의 상기 일부의 크기보다 큰 데이터 압축 회로.
  6. 제5항에 있어서,
    상기 제1메모리 영역, 상기 제2메모리 영역, 및 상기 제3메모리 영역 각각은 인터리빙 방식으로 할당되고 독립적으로 액세스가능한 서로 다른 메모리에 구현되는 데이터 압축 회로.
  7. 제5항에 있어서, 상기 버퍼 메모리 컨트롤러는,
    상기 제1메모리 영역으로부터 상기 이전 참조 데이터 블록의 상기 일부와 상기 제2메모리 영역으로부터 상기 현재 참조 데이터 블록을 병렬적으로 리드한 후, 상기 현재 데이터 블록을 상기 제3메모리 영역에 라이트하는 데이터 압축 회로.
  8. 제5항에 있어서, 상기 버퍼 메모리 컨트롤러는,
    상기 어드레스를 이용하여 상기 제1메모리 영역에 대한 제1어드레스와 상기 제2메모리 영역에 대한 제2어드레스를 생성하는 어드레스 생성기; 및
    상기 제1어드레스를 이용하여 상기 제1메모리 영역으로부터 상기 이전 참조 데이터 블록의 상기 일부의 리드와 병렬적으로 상기 제2어드레스를 이용하여 상기 제2메모리 영역으로부터 상기 현재 참조 데이터 블록을 리드하고, 상기 현재 데이터 블록에 대한 제3어드레스에 기초하여 상기 현재 데이터 블록을 상기 제3메모리 영역에 라이트하는 버퍼 메모리 액세스 제어 회로를 포함하는 데이터 압축 회로.
  9. 제5항에 있어서, 상기 비교 회로는,
    상기 이전 데이터 블록의 상기 일부와 상기 이전 참조 데이터 블록의 상기 일부의 매치 여부와 상기 현재 데이터 블록과 상기 현재 참조 데이터 블록의 매치 여부를 병렬적으로 판단하는 데이터 압축 회로.
  10. 제5항에 있어서, 상기 비교 회로는,
    상기 이전 데이터 블록의 상기 일부를 저장하는 레지스터;
    상기 레지스터로부터 출력된 상기 이전 데이터 블록의 상기 일부와 상기 버퍼 메모리 컨트롤러로부터 출력된 상기 이전 참조 데이터 블록의 상기 일부의 매치 여부를 판단하는 제1비교기;
    상기 현재 데이터 블록과 상기 현재 참조 데이터 블록의 매치 여부를 판단하는 제2비교기;
    상기 제1비교기의 출력 신호와 상기 제2비교기의 출력 신호에 기초하여 상기 매치 여부를 나타내는 매치 정보와 매치된 데이터의 길이를 나타내는 길이 정보를 출력하는 길이 계산 회로; 및
    상기 이전 데이터 블록의 상기 일부에 대한 어드레스와 상기 현재 데이터 블록에 대한 어드레스에 기초하여 거리 정보를 출력하는 거리 계산 회로를 포함하며,
    상기 제어 정보는 상기 매치 정보, 상기 길이 정보, 및 상기 거리 정보를 포함하는 데이터 압축 회로.
  11. 제10항에 있어서, 상기 압축 데이터 생성 회로는,
    상기 매치 정보에 기초하여 선택 신호를 생성하는 선택 신호 생성 회로;
    상기 길이 정보와 상기 거리 정보에 기초하여 상기 압축 데이터를 생성하는 코드 생성 회로; 및
    상기 선택 신호에 응답하여, 상기 제2지연 데이터 블록 또는 상기 압축 데이터를 출력하는 선택 회로를 포함하는 데이터 압축 회로.
  12. 데이터 저장 장치;
    이전 데이터 블록과 현재 데이터 블록을 포함하는 데이터 스트림을 출력하는 호스트; 및
    상기 데이터 스트림을 수신함으로써 상기 이전 데이터 블록 및 상기 현재 데이터 블록을 순차적으로 수신하고, 지연 회로들 중에서 대응되는 지연 회로를 이용하여 상기 현재 데이터 블록의 지연을 조절하고, 제1지연 데이터 블록과 제2지연 데이터 블록을 생성하는 입력 데이터 레지스터를 포함하는 메모리 컨트롤러를 포함하고,
    상기 메모리 컨트롤러는,
    상기 호스트로부터 출력된 상기 데이터 스트림을 데이터 블록 단위 또는 확장 데이터 블록 단위로 매치 여부를 판단하고, 판단의 결과에 따라 상기 데이터 스트림을 제2지연 데이터 블록 단위 또는 상기 확장 데이터 블록 단위로 압축하고, 압축된 데이터를 상기 데이터 저장 장치로 출력하고,
    상기 메모리 컨트롤러는,
    상기 이전 데이터 블록에 대한 매치 여부를 판단한 후, 상기 이전 데이터 블록의 일부와 상기 제2지연 데이터 블록을 포함하는 확장 데이터 블록에 대한 매치 여부를 판단하고,
    상기 메모리 컨트롤러는,
    상기 이전 데이터 블록과 관련되는 이전 참조 데이터 블록의 일부와 상기 이전 데이터 블록의 상기 일부의 매치 여부와 상기 현재 데이터 블록과 관련되는 현재 참조 데이터 블록과 상기 제1지연 데이터 블록의 매치 여부를 병렬적으로 판단하는 비교 회로를 더 포함하고,
    상기 현재 데이터 블록의 크기는 상기 이전 데이터 블록의 상기 일부의 크기보다 크고,
    상기 현재 참조 데이터 블록의 크기는 상기 이전 참조 데이터 블록의 상기 일부의 크기보다 큰 데이터 처리 장치.
  13. 제12항에 있어서, 상기 메모리 컨트롤러는,
    제1메모리 영역, 제2메모리 영역, 및 제3메모리 영역을 포함하는 버퍼 메모리; 및
    어드레스에 응답하여, 상기 제1메모리 영역에 저장된 상기 이전 참조 데이터 블록의 상기 일부와 상기 제2메모리 영역에 저장된 상기 현재 참조 데이터 블록을 병렬적으로 출력하는 버퍼 메모리 컨트롤러를 더 포함하고,
    상기 비교 회로는 상기 매치 여부의 판단 결과들에 따라 제어 정보를 더 생성하고,
    상기 제어 정보에 기초하여, 상기 현재 데이터 블록을 출력하거나 상기 확장 데이터 블록을 압축해서 생성된 상기 압축된 데이터를 출력하는 압축 데이터 생성 회로를 포함하는 데이터 처리 장치.
  14. 제13항에 있어서,
    상기 제1메모리 영역, 상기 제2메모리 영역, 및 상기 제3메모리 영역 각각은 인터리빙 방식으로 할당된 서로 다른 어드레스를 갖는 서로 다른 메모리에 구현되는 데이터 처리 장치.
  15. 제13항에 있어서, 상기 버퍼 메모리 컨트롤러는,
    상기 어드레스를 이용하여 상기 제1메모리 영역에 대한 제1어드레스와 상기 제2메모리 영역에 대한 제2어드레스를 생성하는 어드레스 생성기; 및
    상기 제1어드레스를 이용하여 상기 제1메모리 영역으로부터 상기 이전 참조 데이터 블록의 상기 일부의 리드와 병렬적으로 상기 제2어드레스를 이용하여 상기 제2메모리 영역으로부터 상기 현재 참조 데이터 블록을 리드하고, 상기 현재 데이터 블록에 대한 제3어드레스에 기초하여 상기 현재 데이터 블록을 상기 제3메모리 영역에 라이트하는 버퍼 메모리 액세스 제어 회로를 포함하는 데이터 처리 장치.
  16. 제13항에 있어서, 상기 비교 회로는,
    상기 이전 데이터 블록의 상기 일부를 저장하는 레지스터;
    상기 레지스터로부터 출력된 상기 이전 데이터 블록의 상기 일부와 상기 버퍼 메모리 컨트롤러로부터 출력된 상기 이전 참조 데이터 블록의 상기 일부의 매치 여부를 판단하는 제1비교기;
    상기 현재 데이터 블록과 상기 현재 참조 데이터 블록의 매치 여부를 판단하는 제2비교기;
    상기 제1비교기의 출력 신호와 상기 제2비교기의 출력 신호에 기초하여 상기 매치 여부를 나타내는 매치 정보와 매치된 데이터의 길이를 나타내는 길이 정보를 출력하는 길이 계산 회로; 및
    상기 이전 데이터 블록의 상기 일부에 대한 어드레스와 상기 현재 데이터 블록에 대한 어드레스에 기초하여 거리 정보를 출력하는 거리 계산 회로를 포함하며,
    상기 제어 정보는 상기 매치 정보, 상기 길이 정보, 및 상기 거리 정보를 포함하는 데이터 처리 장치.
  17. 제16항에 있어서, 상기 압축 데이터 생성 회로는,
    상기 매치 정보에 기초하여 선택 신호를 생성하는 선택 신호 생성 회로;
    상기 길이 정보와 상기 거리 정보에 기초하여 상기 압축된 데이터를 생성하는 코드 생성 회로; 및
    상기 선택 신호에 응답하여, 상기 현재 데이터 블록 또는 상기 압축 데이터를 출력하는 선택 회로를 포함하는 데이터 처리 장치.
  18. 제12항에 있어서,
    상기 확장 데이터 블록의 크기와 상기 현재 데이터 블록의 크기의 비는 정수가 아닌 대소수(mixed decimal)인 데이터 처리 장치.
  19. 제12항에 있어서,
    상기 데이터 저장 장치는 플래시 메모리, eMMC(embedded multimedia card), UFS(Universal Flash Storage), USB 플래시 드라이버, 또는 SSD(solid-state drive)인 데이터 처리 장치.
  20. 제12항에 있어서, 상기 데이터 처리 장치는 스마트폰, 태블릿 PC, 또는 e-북인 데이터 처리 장치.
KR1020130000074A 2013-01-02 2013-01-02 데이터 압축 방법과 상기 방법을 수행할 수 있는 장치들 KR101992274B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020130000074A KR101992274B1 (ko) 2013-01-02 2013-01-02 데이터 압축 방법과 상기 방법을 수행할 수 있는 장치들
JP2013262636A JP6512733B2 (ja) 2013-01-02 2013-12-19 データ圧縮方法と、該方法を行う装置
US14/135,628 US9280287B2 (en) 2013-01-02 2013-12-20 Method of compressing data and device for performing the same
EP13199794.2A EP2752760B1 (en) 2013-01-02 2013-12-30 Method of compressing data and devices for performing the same
CN201410001223.XA CN103916131B (zh) 2013-01-02 2014-01-02 压缩数据的方法和用于执行该方法的设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130000074A KR101992274B1 (ko) 2013-01-02 2013-01-02 데이터 압축 방법과 상기 방법을 수행할 수 있는 장치들

Publications (2)

Publication Number Publication Date
KR20140088319A KR20140088319A (ko) 2014-07-10
KR101992274B1 true KR101992274B1 (ko) 2019-09-30

Family

ID=50150526

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130000074A KR101992274B1 (ko) 2013-01-02 2013-01-02 데이터 압축 방법과 상기 방법을 수행할 수 있는 장치들

Country Status (5)

Country Link
US (1) US9280287B2 (ko)
EP (1) EP2752760B1 (ko)
JP (1) JP6512733B2 (ko)
KR (1) KR101992274B1 (ko)
CN (1) CN103916131B (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9438940B2 (en) * 2014-04-07 2016-09-06 The Nielsen Company (Us), Llc Methods and apparatus to identify media using hash keys
CN105790768B (zh) * 2014-12-19 2018-12-25 珠海全志科技股份有限公司 数据存储方法和系统
CN104485967B (zh) * 2015-01-08 2017-10-03 中山大学 由序列通项表达式驱动的并行计算传输列表实时压缩方法
US10542457B2 (en) 2015-04-20 2020-01-21 Qualcomm Incorporated Enhanced compression formats for data compression
US20170038978A1 (en) * 2015-08-05 2017-02-09 HGST Netherlands B.V. Delta Compression Engine for Similarity Based Data Deduplication
US10394724B2 (en) 2016-08-22 2019-08-27 Qualcomm Incorporated Low power data transfer for memory subsystem using data pattern checker to determine when to suppress transfers based on specific patterns
US10809928B2 (en) 2017-06-02 2020-10-20 Western Digital Technologies, Inc. Efficient data deduplication leveraging sequential chunks or auxiliary databases
US10503608B2 (en) 2017-07-24 2019-12-10 Western Digital Technologies, Inc. Efficient management of reference blocks used in data deduplication
CN107622781B (zh) * 2017-10-12 2020-05-19 华中科技大学 一种提升三层忆阻器写性能的编解码方法
CN111124940B (zh) * 2018-10-31 2022-03-22 深信服科技股份有限公司 一种基于全闪存阵列的空间回收方法及系统
CN112070652A (zh) * 2019-06-10 2020-12-11 上海赜睿信息科技有限公司 数据压缩、解压方法、可读存储介质和电子设备
KR20200143611A (ko) 2019-06-14 2020-12-24 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
CN114077554B (zh) * 2022-01-20 2022-06-21 广州匠芯创科技有限公司 一种数据解码方法、系统、设备及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020091905A1 (en) 1999-01-29 2002-07-11 Interactive Silicon, Incorporated, Parallel compression and decompression system and method having multiple parallel compression and decompression engines
JP2006092725A (ja) 2004-09-24 2006-04-06 Nec Lab America Inc 圧縮システム及び方法
JP2007037115A (ja) 2005-07-11 2007-02-08 Quantum Corp デジタルデータを符号化する方法、データセグメントのストリームを符号化する方法、エンコーダ、データのソースを符号化するためのパラレルエンコーダ、符号化データのソースを復号するためのパラレルデコーダ、コード化データを復号する方法、磁気テープドライブ、およびデータのストリームを符号化する方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2259824B (en) * 1991-09-19 1995-01-18 Sony Broadcast & Communication Data compression
US5371499A (en) * 1992-02-28 1994-12-06 Intersecting Concepts, Inc. Data compression using hashing
US5521597A (en) * 1993-08-02 1996-05-28 Mircosoft Corporation Data compression for network transport
US5977977A (en) * 1995-08-04 1999-11-02 Microsoft Corporation Method and system for multi-pass rendering
US5990955A (en) * 1997-10-03 1999-11-23 Innovacom Inc. Dual encoding/compression method and system for picture quality/data density enhancement
JP3541930B2 (ja) * 1998-08-13 2004-07-14 富士通株式会社 符号化装置及び復号化装置
JP2000148656A (ja) * 1998-11-09 2000-05-30 Mitsubishi Electric Corp メモリシステム
US6601104B1 (en) * 1999-03-11 2003-07-29 Realtime Data Llc System and methods for accelerated data storage and retrieval
US6658148B1 (en) 2000-06-06 2003-12-02 Matsushita Electric Works, Ltd. Image processing method and apparatus
US6763444B2 (en) * 2001-05-08 2004-07-13 Micron Technology, Inc. Read/write timing calibration of a memory array using a row or a redundant row
TWI220959B (en) * 2003-06-05 2004-09-11 Carry Computer Eng Co Ltd Storage device with optimized compression management mechanism
BRPI0412889B1 (pt) * 2003-07-21 2019-09-10 Fraunhofer Ges Forschung métodos para a conversão, combinação e decodificação, aparelhos para conversão e para a decodificação, e meio legível por computador
US7321991B2 (en) 2004-01-10 2008-01-22 Hynix Semiconductor Inc. Semiconductor memory device having advanced test mode
US20060106870A1 (en) * 2004-11-16 2006-05-18 International Business Machines Corporation Data compression using a nested hierarchy of fixed phrase length dictionaries
JP5431148B2 (ja) 2006-05-31 2014-03-05 インターナショナル・ビジネス・マシーンズ・コーポレーション ストレージ用論理データオブジェクトの変換方法およびシステム
CN101212682B (zh) * 2007-12-22 2011-06-15 深圳市同洲电子股份有限公司 一种运动搜索区域的数据加载装置和方法
JP5481809B2 (ja) * 2008-08-12 2014-04-23 富士通株式会社 コンパレータ回路及びそれを有するアナログデジタルコンバータ
CN101478311B (zh) * 2009-01-22 2010-10-20 浙江大学 bzip2压缩算法硬件加速实现方法
CN101505427A (zh) * 2009-02-20 2009-08-12 杭州爱威芯科技有限公司 视频压缩编码算法中的运动估计装置
WO2010113454A1 (ja) * 2009-03-31 2010-10-07 パナソニック株式会社 記録媒体、再生装置、及び集積回路
KR20120090194A (ko) * 2011-02-07 2012-08-17 삼성전자주식회사 데이터 처리 장치 및 이를 포함하는 데이터 처리 시스템

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020091905A1 (en) 1999-01-29 2002-07-11 Interactive Silicon, Incorporated, Parallel compression and decompression system and method having multiple parallel compression and decompression engines
JP2006092725A (ja) 2004-09-24 2006-04-06 Nec Lab America Inc 圧縮システム及び方法
JP2007037115A (ja) 2005-07-11 2007-02-08 Quantum Corp デジタルデータを符号化する方法、データセグメントのストリームを符号化する方法、エンコーダ、データのソースを符号化するためのパラレルエンコーダ、符号化データのソースを復号するためのパラレルデコーダ、コード化データを復号する方法、磁気テープドライブ、およびデータのストリームを符号化する方法

Also Published As

Publication number Publication date
US9280287B2 (en) 2016-03-08
EP2752760A2 (en) 2014-07-09
JP6512733B2 (ja) 2019-05-15
EP2752760B1 (en) 2019-03-20
CN103916131A (zh) 2014-07-09
KR20140088319A (ko) 2014-07-10
CN103916131B (zh) 2019-05-28
JP2014132750A (ja) 2014-07-17
US20140189279A1 (en) 2014-07-03
EP2752760A3 (en) 2015-07-29

Similar Documents

Publication Publication Date Title
KR101992274B1 (ko) 데이터 압축 방법과 상기 방법을 수행할 수 있는 장치들
JP6366249B2 (ja) データ圧縮装置及び方法、データ圧縮装置を含むメモリシステム
US20190196907A1 (en) Compression techniques for distributed data
KR101759658B1 (ko) 메모리 장치 및 메모리 시스템
US10877668B2 (en) Storage node offload of residual part of a portion of compressed and distributed data to a second storage node for decompression
TW201539187A (zh) 快閃記憶體之壓縮、讀取方法及應用其方法的裝置
CN105207678A (zh) 一种改进型lz4压缩算法的硬件实现系统
US9479194B2 (en) Data compression apparatus and data decompression apparatus
US9934234B2 (en) Adaptive rate compression hash processor
US9035809B2 (en) Optimizing compression engine throughput via run pre-processing
US11955995B2 (en) Apparatus and method for two-stage lossless data compression, and two-stage lossless data decompression
CN110419036B (zh) 数据压缩方法、设备与计算设备
US20140006536A1 (en) Techniques to accelerate lossless compression
KR20180048938A (ko) 하드웨어-가속화된 스토리지 압축
KR102072412B1 (ko) 데이터 압축 회로의 동작 방법과 상기 방법을 수행할 수 있는 장치들
CN106484852B (zh) 数据压缩方法、设备与计算设备
CN110827902B (zh) 一种随机编码方法及固态硬盘
US9787323B1 (en) Huffman tree decompression
KR20210035912A (ko) 암호화 동작에 기초한 데이터 세그먼트 수정
CN105630529A (zh) Fpga配置文件的加载方法和解码器
WO2020112559A1 (en) Per cursor logical unit number sequencing
Safieh et al. Address space partitioning for the parallel dictionary LZW data compression algorithm
US20240106459A1 (en) Compression device and compression method
US11494263B2 (en) Controller and method of operating the same
JP2023039698A (ja) データ圧縮装置およびメモリシステム

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