[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR102072412B1 - 데이터 압축 회로의 동작 방법과 상기 방법을 수행할 수 있는 장치들 - Google Patents

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

Info

Publication number
KR102072412B1
KR102072412B1 KR1020130001407A KR20130001407A KR102072412B1 KR 102072412 B1 KR102072412 B1 KR 102072412B1 KR 1020130001407 A KR1020130001407 A KR 1020130001407A KR 20130001407 A KR20130001407 A KR 20130001407A KR 102072412 B1 KR102072412 B1 KR 102072412B1
Authority
KR
South Korea
Prior art keywords
data
data blocks
cache
blocks
buffer memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
KR1020130001407A
Other languages
English (en)
Other versions
KR20140090316A (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 KR1020130001407A priority Critical patent/KR102072412B1/ko
Priority to US14/146,846 priority patent/US9444490B2/en
Publication of KR20140090316A publication Critical patent/KR20140090316A/ko
Application granted granted Critical
Publication of KR102072412B1 publication Critical patent/KR102072412B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • AHUMAN NECESSITIES
    • A47FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
    • A47JKITCHEN EQUIPMENT; COFFEE MILLS; SPICE MILLS; APPARATUS FOR MAKING BEVERAGES
    • A47J17/00Household peeling, stringing, or paring implements or machines
    • A47J17/02Hand devices for scraping or peeling vegetables or the like
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B26HAND CUTTING TOOLS; CUTTING; SEVERING
    • B26DCUTTING; DETAILS COMMON TO MACHINES FOR PERFORATING, PUNCHING, CUTTING-OUT, STAMPING-OUT OR SEVERING
    • B26D3/00Cutting work characterised by the nature of the cut made; Apparatus therefor
    • B26D3/24Cutting work characterised by the nature of the cut made; Apparatus therefor to obtain segments other than slices, e.g. cutting pies
    • B26D3/26Cutting work characterised by the nature of the cut made; Apparatus therefor to obtain segments other than slices, e.g. cutting pies specially adapted for cutting fruit or vegetables, e.g. for onions
    • 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
    • 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
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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
    • 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/3091Data deduplication

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Food Science & Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Forests & Forestry (AREA)
  • Mechanical Engineering (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

데이터 압축 회로의 동작 방법은 캐시가 가득 찰 때까지 복수의 데이터 블록들을 수신하여 저장하는 단계와, 상기 캐시가 가득 찼을 때 상기 캐시에 저장된 상기 복수의 데이터 블록들을 버퍼 메모리에 라이트하는 단계를 포함한다. 상기 방법은 상기 캐시가 가득 찼을 때 상기 복수의 데이터 블록들 각각에 대한 반복 여부와 무관하게 상기 복수의 데이터 블록들 각각을 강제로 리터럴/리터럴 인코딩하는 단계를 더 포함한다.

Description

데이터 압축 회로의 동작 방법과 상기 방법을 수행할 수 있는 장치들{METHOD FOR OPERATING DATA COMPRESSING CIRCUIT AND DEVICES PERFORMING THE SAME}
본 발명의 개념에 따른 실시 예는 데이터 처리 기술에 관한 것으로, 특히 효율적인 버퍼 메모리 액세스 방법, 데이터 압축 방법, 및 상기 방법들을 수행할 수 있는 장치들에 관한 것이다.
데이터 압축 기술은, 통신 장치 및/또는 데이터 저장 장치에서, 데이터의 전송 속도를 높이고 상기 장치의 저장 공간의 활용성을 높이기 위해 다양한 방식으로 적용되고 있다.
상기 데이터 압축 기술은 플래시 메모리-기반 데이터 저장 장치에 저장될 데이터의 크기를 줄여줌으로써 상기 저장 장치에 대한 라이트(write) 회수 및/또는 리드(read) 회수를 줄여줄 수 있을 뿐만 아니라 상기 저장 장치의 기대 수명을 증가시킬 수 있다.
데이터 저장 장치에서 사용되는 데이터 압축 방식으로 무손실 압축(loseless compression) 방식과 손실 압축(lossy compression) 방식이 있다.
상기 무손실 압축 방식으로서 1977년과 1978년에 Abraham Lempel과 Jacob Ziv에 의해 논문으로 공개된 두 개의 무손실 데이터 압축 알고리즘인 LZ77과 LZ78, Abraham Lempel, Jacob Ziv, 및 Terry Welch에 의해 창조된 일반적인 무손실 데이터 압축 알고리즘인 LZW, 또는 Lempel-Ziv Ross Williams(LZRW)라고 불리는 무손실 데이터 압축 알고리즘이 사용된다.
본 발명이 이루고자 하는 기술적인 과제는, 버퍼 메모리에 대한 라이트 동작시에 필요한 사이클(cycle)을 줄이기 위해, 복수의 데이터 블록들을 라이트 캐시에 저장한 후, 상기 라이트 캐시가 가득 찼을 때 상기 라이트 캐시에 저장된 복수의 데이터 블록들을 상기 버퍼 메모리에 라이트할 수 있는 방법과 상기 방법을 수행할 수 있는 장치를 제공하는 것이다.
본 발명이 이루고자 하는 다른 기술적인 과제는, 상기 라이트 캐시가 가득 찼을 때, 상기 복수의 데이터 블록들 각각에 대한 실제 반복 여부에 무관하게 상기 복수의 데이터 블록들 각각을 강제 인코딩을 수행할 수 있는 방법과 상기 방법을 수행할 수 있는 장치를 제공하는 것이다.
본 발명이 이루고자 하는 또 다른 기술적인 과제는, 현재 사이클에서 처리될 데이터 블록에 대한 참조 데이터 블록을 리드할 때, 상기 참조 데이터 블록과 함께 다음 사이클에서 처리될 다음 데이터 블록에 대한 다음 참조 데이터 블록도 리드할 수 있는 방법과 상기 방법을 수행할 수 있는 장치를 제공하는 것이다.
본 발명의 실시 예에 따른 데이터 압축 회로의 동작 방법은 캐시가 가득 찰 때까지 복수의 데이터 블록들을 수신하여 저장하는 단계와, 상기 캐시가 가득 찼을 때, 상기 캐시에 저장된 상기 복수의 데이터 블록들을 버퍼 메모리에 라이트하는 단계를 포함한다.
상기 방법은 상기 캐시가 가득 찼을 때, 상기 복수의 데이터 블록들 각각에 대한 반복 여부와 무관하게 상기 복수의 데이터 블록들 각각을 강제로 인코딩하는 단계를 더 포함한다.
상기 캐시의 크기는 한 사이클 동안 상기 버퍼 메모리에 라이트 가능한 데이터의 크기로 결정된다.
상기 버퍼 메모리에 라이트하는 단계는 상기 복수의 데이터 블록들 각각을 인터리빙(interleaving) 방식으로 할당된 어드레스를 갖는 복수의 메모리들 각각에 라이트하고, 상기 복수의 메모리들 각각은 상기 버퍼 메모리에 포함된다.
상기 복수의 메모리들 각각은 싱글-포트 SRAM(single port static random access memory)일 수 있다.
본 발명의 실시 예에 따른 데이터 압축 회로는 복수의 데이터 블록들을 수신하여 저장하는 캐시와, 상기 캐시가 가득 찼을 때, 상기 캐시로부터 출력된 상기 복수의 데이터 블록들을 수신하여 저장하는 버퍼 메모리와, 상기 복수의 데이터 블록들 각각의 반복 여부와 무관하게, 상기 복수의 데이터 블록들을 강제로 인코딩하는 압축 데이터 생성 회로를 포함한다.
본 발명의 실시 예에 따른 데이터 처리 장치는 상기 데이터 압축 회로와, 상기 복수의 데이터 블록들을 포함하는 데이터 스트림을 출력하는 호스트와, 인코드된 복수의 데이터 블록들을 저장하는 데이터 저장 장치를 포함한다.
상기 데이터 저장 장치는 플래시 메모리-기반 데이터 저장 장치이고, 상기 데이터 처리 장치는 스마트폰 또는 태블릿 PC일 수 있다.
본 발명의 다른 실시 예에 따른 데이터 압축 회로의 동작 방법은 어드레스에 기초하여 버퍼 메모리로부터 서로 인접하는 복수의 참조 데이터 블록들을 동시에 리드하는 단계와, 리드된 복수의 참조 데이터 블록들 중의 어느 하나와 데이터 블록을 비교하는 단계와, 비교의 결과에 따라 상기 데이터 블록을 인코딩하는 단계를 포함한다.
상기 방법은 리드된 복수의 참조 데이터 블록들 중의 다른 하나와 상기 데이터 블록의 다음 데이터 블록을 비교하는 단계와, 비교의 결과에 따라 상기 다음 데이터 블록을 인코딩하는 단계를 더 포함한다.
상기 인코딩하는 단계는 상기 다음 데이터 블록을 리터럴/리터럴 인코딩하거나 길이/거리 인코딩한다.
본 발명의 실시 예에 따른 방법과 장치는, 입력 데이터 블록을 단일 사이클에서 처리하고 출력할 수 있음으로 상기 입력 데이터 블록에 대한 실시간(on-the-fly) 인코딩을 수행할 수 있는 효과가 있다.
본 발명의 실시 예에 따른 방법과 장치는 다음 참조 데이터 블록을 미리 읽음으로써 버퍼 메모리에 대한 리드 동작에서 필요한 사이클을 줄일 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 실시 예에 따른 데이터 처리 장치의 블록도를 나타낸다.
도 2는 도 1에 도시된 데이터 압축 회로의 일 실시 예를 나타내는 블록도이다.
도 3은 도 1에 도시된 데이터 압축 회로에서 수행되는 인코딩 방법의 일 실시 예를 설명하기 위한 개념도이다.
도 4는 도 1에 도시된 데이터 압축 회로에서 수행되는 인코딩 방법의 일 실시 예를 설명하기 위한 플로우차트이다.
도 5는 도 1에 도시된 데이터 압축 회로의 다른 실시 예를 나타내는 블록도이다.
도 6은 도 1에 도시된 데이터 압축 회로에서 수행되는 인코딩 방법의 다른 실시 예를 설명하기 위한 개념도이다.
도 7은 도 1에 도시된 데이터 압축 회로에서 수행되는 인코딩 방법의 다른 실시 예를 설명하기 위한 플로우차트이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 본 발명의 실시 예에 따른 데이터 처리 장치의 블록도를 나타낸다.
도 1을 참조하면, 데이터 처리 장치(100)는 호스트(110), 메모리 컨트롤러 (200), 제1데이터 저장 장치(130), 및 제2데이터 저장 장치(150)를 포함한다.
메모리 컨트롤러(200), 제1데이터 저장 장치(130), 및 제2데이터 저장 장치 (150) 중에서 적어도 두 개는 하나의 패키지, 예컨대 멀티-칩 패키지(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)는 리터럴/리터럴 인코딩(literal/literal encoding) 또는 길이/거리(length/distance) 인코딩을 수행할 수 있다. 물론, 메모리 컨트롤러(200)는 상기 인코딩 이외에도 다양한 인코딩을 수행할 수 있다.
상기 리터럴/리터럴 인코딩은 반복되지 않는 데이터 블록에 대한 인코딩 방식 또는 하나의 데이터 블록에 대한 인코딩 방식으로서 상기 데이터 블록을 인코딩하지 않고 바이패스한다. 이때 버퍼 메모리는 상기 데이터 블록을 복수의 메모리들 중에서 어느 하나에 라이트하는 라이트 동작만을 수행한다.
상기 길이/거리 인코딩은 반복되는 데이터 블록에 대한 인코딩 방식이고, 이때 버퍼 메모리는 상기 데이터 블록과 반복(또는 매치)되는 참조 데이터 블록을 복수의 메모리들 중에서 어느 하나로부터 리드하는 리드 동작과 상기 데이터 블록을 상기 복수의 메모리들 중에서 다른 하나에 라이트하는 라이트 동작 모두를 수행한다.
본 명세서에서는 설명의 편의를 위해, 하나의 데이터 블록은 4-바이트라고 가정하나 본 발명의 개념은 처리될 데이터 블록에 포함되는 바이트의 수에 한정되는 것은 아니다.
메모리 컨트롤러(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)의 제어에 따라, 데이터 블록 단위로 블록 데이터를 처리(예컨대, 리터럴/리터럴 인코딩(또는 바이패스(bypass)) 또는 길이/거리 인코딩)할 수 있다. 이때 데이터 압축 회로(230)는 인코더의 기능을 수행한다.
CPU(240)는 데이터 버스(241)를 통해 데이터 압축 회로(230), 제1메모리 컨트롤러(250), 제2메모리 컨트롤러(260), 및 데이터 압축해제 회로(270) 중에서 적어도 하나의 동작을 제어할 수 있다.
제1메모리 컨트롤러(250)는, 제1데이터 저장 장치(130)의 인터페이스 프로토콜에 따라, 메모리 컨트롤러(200)와 제1데이터 저장 장치(130) 사이에서 주고받는 데이터 및/또는 명령을 인터페이싱할 수 있다. 예컨대, 제1데이터 저장 장치(130)가 NAND 플래시 메모리일 때, 제1메모리 컨트롤러(250)는 NAND 플래시 컨트롤러로 구현될 수 있다.
제2메모리 컨트롤러(260)는, 제2데이터 저장 장치(150)의 인터페이스 프로토콜에 따라, 메모리 컨트롤러(200)와 제2데이터 저장 장치(150) 사이에서 주고받는 데이터 및/또는 명령을 인터페이싱할 수 있다. 예컨대, 제2데이터 저장 장치(150)가 DRAM일 때, 제2메모리 컨트롤러(260)는 DRAM 컨트롤러로 구현될 수 있다.
데이터 압축해제 회로(270)는 압축된 데이터(예컨대, 데이터 저장 장치(130 또는 150)로부터 출력된 데이터)를 압축해제하고, 압축 해제된 데이터 스트림(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)에 임시로 저장될 수 있다.
도 2는 도 1에 도시된 데이터 압축 회로의 일 실시 예를 나타내는 블록도이다.
도 2를 참조하면, 데이터 압축 회로(230)의 일 실시 예에 따른 데이터 압축 회로(230A)는 입력 데이터 레지스터(231), 캐시 컨트롤러(232), 라이트 캐시(233), 버퍼 메모리 컨트롤러(234), 버퍼 메모리(235), 비교 회로(236), 및 압축 데이터 생성 회로(237)를 포함한다.
입력 데이터 레지스터(231)는 입력 데이터 스트림(IDS)을 수신하고, 입력 데이터 스트림(IDS)에 포함된 복수의 데이터 블록들 각각의 지연(delay)을 해당 지연 회로(D1, D2, 및 D3)를 이용하여 조절하고, 지연 조절된 복수의 데이터 블록들 각각(DATA2, DATA3, 및 DATA4)을 데이터 처리 회로들(234, 236, 및 237) 각각으로 전송할 수 있다.
실시 예에 따라, 입력 데이터 레지스터(231)는 입력 데이터 스트림(IDS)에 포함된 각 데이터 블록(DATA1)을 캐시 컨트롤러(232)로 전송하고, 각 제1지연 데이터 블록(DATA2)을 버퍼 메모리 컨트롤러(234)로 전송하고, 각 제2지연 데이터 블록 (DATA3)을 비교 회로(236)로 전송하고, 각 제3지연 데이터 블록(DATA4)을 압축 데이터 생성 회로(237)로 전송할 수 있다.
다른 실시 예에 따라, 실시간(on-the fly) 데이터 처리를 위해, 입력 데이터 레지스터(231)는 입력 데이터 스트림(IDS)에 포함된 각 데이터 블록(DATA1)을 캐시 컨트롤러(232)로 전송하고 각 제3지연 데이터 블록(DATA4)을 압축 데이터 생성 회로(237)로 전송할 수 있다.
각 지연 회로(D1, D2, 및 D3)에 의한 지연을 고려하지 않는다면, 각 데이터 블록(DATA1, DATA2, DATA3, 및 DATA4)은 동일한 데이터 블록이다.
도 3은 도 1에 도시된 데이터 압축 회로에서 수행되는 인코딩 방법의 일 실시 예를 설명하기 위한 개념도이고, 도 4는 도 1에 도시된 데이터 압축 회로에서 수행되는 인코딩 방법의 일 실시 예를 설명하기 위한 플로우차트이다.
지연 라이트(delay write) 동작과 강제 인코딩 동작, 예컨대 강제 리터럴/리터럴 인코딩 동작은 도 1부터 도 4를 참조하여 상세히 설명될 것이다.
데이터 압축 회로(230A)는 복수의 메모리들, 예컨대 복수의 싱글-포트 SRAM들(single-port static random access memories; 235-1~235-4)을 포함하는 버퍼 메모리(235)를 이용하면서도 실시간(on-the fly)으로 복수의 데이터 블록들에 대한 강제 인코딩 동작, 예컨대 강제 리터럴/리터럴 인코딩 동작을 수행할 수 있다.
복수의 싱글-포트 SRAM들(235-1~235-4) 각각은 인터리빙(interleaving) 방식에 따라 할당된 어드레스를 갖는다. 도 2와 도 3에서는 설명의 편의를 위해, 4개의 싱글-포트 SRAM들(235-1~235-4)이 도시되어 있으나 이는 예시적인 것에 불과하다.
싱글-포트 SRAM은 듀얼-포트(dual-port) SRAM과 달리 하나의 사이클(cycle) 또는 동일 사이클 동안 리드 동작과 라이트 동작을 동시에 수행할 수 없으므로, 싱글-포트 SRAM은 상기 하나의 사이클 동안 상기 리드 동작과 상기 라이트 동작 중에서 어느 하나만을 수행할 수 있다.
복수의 싱글-포트 SRAM들(235-1~235-4) 각각은 복수의 메모리 영역들을 포함하고, 상기 복수의 메모리 영역들 각각은 데이터 블록을 저장할 수 있다. 저장된 데이터 블록은 처리될 데이터 블록에 대한 반복 여부를 판단할 수 있는 참조 데이터 블록으로서 사용될 수 있다.
캐시 컨트롤러(232)는 라이트 캐시(233)의 동작, 예컨대 라이트 동작과 리드 동작을 제어할 수 있다. 캐시 컨트롤러(232)는 라이트 캐시(233)가 가득 찰 때 (full)까지 복수의 데이터 블록들(W1~W4, W5~W8, W9~W12, 및 W13~W16, 집합적으로 (collectively) DATA1) 각각을 라이트 캐시(233)에 라이트한다(S110).
라이트 캐시(233)의 크기는 한 사이클 동안 버퍼 메모리(235)에 라이트 가능한 데이터의 크기(또는 양)로 결정된다.
복수의 데이터 블록들(W1~W4, W5~W8, W9~W12, 및 W13~W16) 각각이 버퍼 메모리(235)에 라이트되는데 필요한 사이클의 수를 줄이기 위해, 복수의 데이터 블록들 (W1~W4, W5~W8, W9~W12, 및 W13~W16) 각각은 라이트 캐시(233)에 저장된다.
라이트 캐시(233)가 가득 찼을 때, 캐시 컨트롤러(232)는 라이트 캐시(233)에 라이트된 복수의 데이터 블록들(W1~W4, W5~W8, W9~W12, 및 W13~W16) 각각을 버퍼 메모리(235)의 각 메모리 영역(235-1~235-4)에 라이트한다(S120).
정상 인코딩 동작 동안, 입력 데이터 블록(W1W2W3W4 또는 W9W10W11W12)이 버퍼 메모리(235)의 메모리(235-3 또는 235-1)에 저장된 참조 데이터 블록(R1R2R3R4 또는 R9R10R11R12)과 반복된다고 판단되면, 도 3의 (1)과 (3)과 같이, 입력 데이터 블록(W1W2W3W4 또는 W9W10W11W12)의 반복 여부를 판단(또는 비교)하기 위해, 참조 데이터 블록(R1R2R3R4 또는 R9R10R11R12)을 메모리(235-3 또는 235-1)로부터 리드하는 메모리 리드 동작(Memory Read)이 필요하다.
정상 인코딩 동작 동안, 비교 회로(236)는 입력 데이터 블록(W1W2W3W4 또는 W9W10W11W12, 이 경우에는 집합적으로 DATA3)과 버퍼 메모리(235)로부터 출력된 참조 데이터 블록(R1R2R3R4 또는 R9R10R11R12)의 일치 여부를 판단하고, 판단의 결과에 따른 지시 신호를 압축-데이터 생성 회로(237)로 출력할 수 있다. 이때, 압축-데이터 생성 회로(237)는 상기 지시 신호에 따라 입력 데이터 블록(W1W2W3W4 또는 W9W10W11W12, 이 경우에는 집합적으로 DATA4)에 대한 길이/거리 인코딩을 수행하고 길이/거리 인코드된 데이터(DATAO)를 출력한다.
그러나, 도 3의 (2)와 같이, 입력 데이터 블록(IDS=W5W6W7W8)은 반복 데이터가 아니므로, 압축-데이터 생성 회로(237)는 비교 회로(236)로부터 출력된 지시 신호에 따라 입력 데이터 블록(DATA4=W5W6W7W8)에 대한 리터럴/리터럴 인코딩을 수행하고 리터럴/리터럴 인코드된 데이터(DATAO)를 출력한다. 즉, 입력 데이터 블록 (DATA4=W5W6W7W8)은 압축-데이터 생성 회로(237)에 의해 바이패스된다.
상술한 바와 같이, 지연 라이트 동작 동안, 캐시 컨트롤러(232)는 라이트 캐시(233)에 라이트된 복수의 데이터 블록들(W1~W4, W5~W8, W9~W12, 및 W13~W16) 각각을 버퍼 메모리(235)의 각 메모리 영역(235-1~235-4)에 라이트한다(S120).
강제 인코딩 동작, 예컨대 강제 리터럴/리터럴 인코딩 동작 동안, 압축 데이터 생성 회로(237)는, 복수의 데이터 블록들(W1~W4, W5~W8, W9~W12, 및 W13~W16) 각각과 버퍼 메모리(235)에 저장된 복수의 참조 데이터 블록들 각각과의 반복 여부를 판단하지 않고, 도 3의 (4)와 같이 복수의 데이터 블록들(W1~W4, W5~W8, W9~W12, 및 W13~W16) 각각에 대해 강제 리터럴/리터럴 인코딩을 수행한다(S130).
버퍼 메모리 컨트롤러(234)는 라이트 캐시(233)로부터 출력된 각 데이터 블록을 버퍼 메모리(235)에 라이트하는 동작, 입력 데이터 레지스터(231)로부터 출력된 각 제1지연 데이터 블록(DATA2)을 버퍼 메모리(235)에 라이트하는 동작, 및/또는 버퍼 메모리(235)로부터 출력된 각 참조 데이터 블록을 비교 회로(236)로 전송하는 동작을 제어할 수 있다.
비교 회로(236)는 버퍼 메모리 컨트롤러(234)로부터 출력된 참조 데이터 블록과 입력 데이터 레지스터(231)로부터 출력된 제2지연 데이터 블록(DATA3)을 서로 비교하고, 비교의 결과에 따라 제2지연 데이터 블록(DATA3)의 반복 여부를 나타내는 지시 신호를 압축 데이터 생성 회로(237)로 출력할 수 있다.
압축 데이터 생성 회로(237)는 상기 지시 신호에 기초하여 입력 데이터 레지스터(231)로부터 출력된 제3지연 데이터 블록(DATA4)에 대해 리터럴/리터럴 인코딩 또는 길이/거리 인코딩을 수행하고, 수행의 결과에 따라 출력 데이터(DATA0)를 출력할 수 있다.
상술한 바와 같이, 데이터 압축 회로(230A)는 각 데이터 블록을 실시간(on-the fly)로 처리할 수 있는 효과가 있다.
도 5는 도 1에 도시된 데이터 압축 회로의 다른 실시 예를 나타내는 블록도이다.
해시 키 생성 회로(238)를 제외하면, 도 5에 도시된 데이터 압축 회로(230B)의 구조와 동작은 도 2에 도시된 데이터 압축 회로(230A)의 구조와 동작과 실질적으로 동일하다.
도 5를 참조하면, 해시 키 생성 회로(238)는 순차적으로 입력되는 각 데이터 블록(또는 각 데이터 패턴; DATA1)에 해당하는 해시 키(hash key)를 생성하고, 생성된 각 해시 키에 해당하며 해시 키 테이블(239)에 포함된 각 엔트리에 상기 각 데이터 블록이 존재하는 위치(position) 또는 어드레스(address)를 라이트한다.
처리될 데이터 블록(DATA1)이 이전에 입력된 데이터 블록과 매치되거나 동일할 때, 해시 키 생성 회로(238)는 데이터 블록 단위로 생성된 해시 키에 대응되는 어드레스(ADD)를 버퍼 메모리 컨트롤러(234)로 출력할 수 있다.
도 6은 도 1에 도시된 데이터 압축 회로에서 수행되는 인코딩 방법의 다른 실시 예를 설명하기 위한 개념도이고, 도 7은 도 1에 도시된 데이터 압축 회로에서 수행되는 인코딩 방법의 다른 실시 예를 설명하기 위한 플로우차트이다.
미리 읽는 방법(read ahead method)은 도 1, 및 도 5부터 도 7을 참조하여 상세히 설명될 것이다.
현재 처리될 데이터 블록이 이전에 처리된 이전 데이터 블록과 반복 가능성이 있을 때, 해시 키 생성 회로(238)는 상기 이전 데이터 블록에 대한 어드레스 (ADD)를 버퍼 메모리 컨트롤러(234)로 출력한다.
버퍼 메모리 컨트롤러(234)는, 어드레스(ADD)에 응답하여, 상기 이전 데이터 블록에 해당하는 참조 데이터 블록(R9R10R11R12)을 포함하는 복수의 참조 데이터 블록들(MDATA)을 버퍼 메모리(235)로부터 동시에 리드하고, 리드된 복수의 참조 데이터 블록들(MDATA)을 비교 회로(236)로 전송한다(S210).
또한, 버퍼 메모리 컨트롤러(234)는 현재 처리될 데이터 블록(DATA2)을 버퍼 메모리(235)에 저장한다.
비교 회로(236)는 복수의 참조 데이터 블록들(MDATA)을 수신하여 저장한다.
비교 회로(236)는 복수의 참조 데이터 블록들(MDATA) 중의 어느 하나 (R9R10R11R12)와 현재 처리될 데이터 블록(DATA3=W9W10W11W12)을 서로 비교하고 (S220), 비교의 결과에 따라 지시 신호를 압축 데이터 생성 회로(237)로 전송한다.
압축 데이터 생성 회로(237)는 상기 지시 신호에 기초하여 현재 처리될 데이터 블록(DATA4=W9W10W11W12)에 대해 길이/거리 인코딩을 수행하고, 길이/거리 인코드된 데이터(DATA0)를 출력한다(S230).
계속하여, 비교 회로(236)는 복수의 참조 데이터 블록들(MDATA) 중의 다른 하나(R13R14R15R16)와 현재 처리될 데이터 블록(DATA3=W13W14W15W16)을 서로 비교하고(S240), 비교의 결과에 따라 지시 신호를 압축 데이터 생성 회로(237)로 전송한다.
압축 데이터 생성 회로(237)는 상기 지시 신호에 기초하여 현재 처리될 데이터 블록(DATA4=W13W14W15W16)에 대해 길이/거리 인코딩을 수행하고 길이/거리 인코드된 데이터(DATA0)를 출력한다(S250).
도 6의 (11)을 참조하면, 현재 사이클에서 처리될 데이터 블록(W1W2W3W4)이 참조 데이터 블록(R1R2R3R4)과 반복될 때, 참조 데이터 블록(R1R2R3R4)이 저장된 메모리(235-3)의 메모리 영역을 지시하는 어드레스(ADD)에 기초하여, 버퍼 메모리 컨트롤러(234)는 참조 데이터 블록(R1R2R3R4)과 다음 사이클에서 리드될 가능성이 큰 참조 데이터 블록(R5R6R7R8)을 동시에 리드하고, 리드된 참조 데이터 블록들 (R1R2R3R4와 R5R6R7R8)을 비교 회로(236)로 전송한다.
현재 사이클에서, 서로 인접하는 참조 데이터 블록(R1R2R3R4)과 참조 데이터 블록(R5R6R7R8)이 동시에 리드되므로, 다음 사이클에서 버퍼 메모리 컨트롤러(234)는 참조 데이터 블록(R5R6R7R8)을 별도로 리드하지 않아도 된다. 따라서, 참조 데이터 블록(R5R6R7R8)을 리드하기 위한 사이클이 감소한다.
현재 사이클에서 데이터 블록(W1W2W3W4)이 참조 데이터 블록(R1R2R3R4)과 동일하므로, 데이터 블록(DATA4=W1W2W3W4)는 길이/거리 인코딩된다.
그러나, 도 6의 (12)를 참조하면, 다음 사이클에서 데이터 블록(W5W6W7W8)이 참조 데이터 블록(R5R6R7R8)과 동일하지 않을 때, 데이터 블록(DATA4=W5W6W7W8)은 리터럴/리터럴 인코딩, 예컨대 바이패스된다.
다른 예로서, 도 6의 (13)과 같이, 현재 사이클에서 처리될 데이터 블록 (W9W10W11W12)이 참조 데이터 블록(R9R10R11R12)과 반복될 때, 버퍼 메모리 컨트롤러(234)는 참조 데이터 블록(R9R10R11R12)과 다음 사이클에서 리드될 가능성이 큰 참조 데이터 블록(R13R14R15R16)을 동시에 리드하고, 리드된 참조 데이터 블록들 (R9R10R11R12와 R13R14R15R16)을 비교 회로(236)로 전송한다.
현재 사이클에서, 서로 인접하는 참조 데이터 블록(R9R10R11R12)과 참조 데이터 블록(R13R14R15R16)이 동시에 리드되므로, 다음 사이클에서 버퍼 메모리 컨트롤러(234)는 참조 데이터 블록(R13R14R15R16)을 별도로 리드하지 않아도 된다.
도 6의 (13)과 같이, 현재 사이클에서 데이터 블록(W9W10W11W12)이 참조 데이터 블록(R9R10R11R12)과 동일할 때, 데이터 블록(DATA4=W9W10W11W12)은 길이/거리 인코딩된다.
도 6의 (14)와 같이, 다음 사이클에서 데이터 블록(W13W14W15W16)이 참조 데이터 블록(R13R14R15R16)과 동일할 때, 데이터 블록(DATA4=W13W14W15W16)은 길이/거리 인코딩된다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100; 데이터 처리 장치
110; 호스트
130; 제1데이터 저장 장치
150; 제2데이터 저장 장치
200; 메모리 컨트롤러
210; 호스트 인터페이스
230, 230A, 및 230B; 데이터 압축 회로
231; 입력 데이터 레지스터
232; 캐시 컨트롤러
233; 라이트 캐시
234; 버퍼 메모리 컨트롤러
235; 버퍼 메모리
236; 비교 회로
237; 압축 데이터 생성 회로

Claims (10)

  1. 캐시가 가득 찰 때까지 입력 데이터 레지스터로부터 출력된 복수의 데이터 블록들을 수신하여 저장하는 단계; 및
    상기 캐시가 가득 찼을 때, 상기 캐시에 저장된 상기 복수의 데이터 블록들을 버퍼 메모리에 라이트하는 단계를 포함하되,
    상기 입력 데이터 레지스터는 상기 복수의 데이터 블록들을 포함하는 입력 데이터 스트림을 수신하고, 지연 회로들을 이용하여 상기 복수의 데이터 블록들 각각의 지연을 조절하고, 그리고 복수의 지연 조절된 데이터 블록들을 생성하는 데이터 압축 회로의 동작 방법.
  2. 제1항에 있어서,
    상기 캐시가 가득 찼을 때, 상기 복수의 데이터 블록들 각각에 대한 반복 여부와 무관하게 상기 복수의 데이터 블록들 각각을 강제로 인코딩하는 단계를 더 포함하는 데이터 압축 회로의 동작 방법.
  3. 제1항에 있어서,
    상기 캐시의 크기는 한 사이클 동안 상기 버퍼 메모리에 라이트 가능한 데이터의 크기로 결정되는 데이터 압축 회로의 동작 방법.
  4. 제1항에 있어서, 상기 버퍼 메모리에 라이트하는 단계는,
    상기 복수의 데이터 블록들 각각을 인터리빙(interleaving) 방식으로 할당된 어드레스를 갖는 복수의 메모리들 각각에 라이트하고,
    상기 복수의 메모리들 각각은 상기 버퍼 메모리에 포함되는 데이터 압축 회로의 동작 방법.
  5. 제4항에 있어서,
    상기 복수의 메모리들 각각은 싱글-포트 SRAM(single port static random access memory)인 데이터 압축 회로의 동작 방법.
  6. 복수의 데이터 블록들을 수신하여 저장하는 캐시; 및
    상기 캐시가 가득 찼을 때, 상기 캐시로부터 출력된 상기 복수의 데이터 블록들을 수신하여 저장하는 버퍼 메모리;
    상기 복수의 데이터 블록들을 포함하는 입력 데이터 스트림을 수신하고, 지연 회로들을 이용하여 상기 복수의 데이터 블록들의 지연을 조절하고, 그리고 복수의 지연 조절된 데이터 블록들을 생성하는 입력 데이터 레지스터;
    상기 복수의 지연 조절된 데이터 블록들 각각의 반복 여부와 무관하게, 상기 복수의 지연 조절된 데이터 블록들을 강제로 인코딩하는 압축 데이터 생성 회로; 및
    상기 입력 데이터 스트림을 수신하고 그리고 라이트 동작 및 리드 동작을 수행하는 캐시 컨트롤러를 포함하되,
    상기 입력 데이터 레지스터는 상기 복수의 데이터 블록들을 상기 캐시 컨트롤러에 전송하고 그리고 상기 복수의 지연 조절된 데이터 블록들을 상기 압축 데이터 생성 회로에 전송하고, 그리고
    상기 지연 회로들은 상기 캐시 및 상기 압축 데이터 생성 회로 사이에 연결되는 데이터 압축 회로.
  7. 제6항의 데이터 압축 회로;
    상기 복수의 데이터 블록들을 포함하는 데이터 스트림을 출력하는 호스트; 및
    인코드된 복수의 데이터 블록들을 저장하는 데이터 저장 장치를 포함하는 데이터 처리 장치.
  8. 제7항에 있어서,
    상기 데이터 저장 장치는 플래시 메모리-기반 데이터 저장 장치이고,
    상기 데이터 처리 장치는 스마트폰 또는 태블릿 PC인 데이터 처리 장치.
  9. 어드레스에 기초하여 버퍼 메모리로부터 서로 인접하는 복수의 참조 데이터 블록들을 동시에 리드하는 단계;
    지연 회로들에 의해, 제 1 지연 데이터 블록 및 제 2 지연 데이터 블록을 생성하기 위해 입력 데이터 스트림의 데이터 블록들을 지연시키는 단계;
    비교기에 의해 상기 복수의 참조 데이터 블록들 중 하나와 상기 제 1 지연 데이터 블록을 비교하는 단계;
    상기 제 1 지연 데이터 블록이 상기 복수의 참조 데이터 블록들 중 상기 하나와 동일한지 여부를 지시하는 지시 신호를 출력하는 단계; 및
    상기 지시 신호에 기초하여 상기 입력 데이터 스트림으로부터 출력된 상기 제 2 지연 데이터 블록을 인코딩하는 단계를 포함하는 데이터 압축 회로의 동작 방법.
  10. 제9항에 있어서,
    리드된 복수의 참조 데이터 블록들 중의 다른 하나와 상기 데이터 블록의 다음 데이터 블록을 비교하는 단계; 및
    비교의 결과에 따라 상기 다음 데이터 블록을 인코딩하는 단계를 더 포함하는 데이터 압축 회로의 동작 방법.
KR1020130001407A 2013-01-07 2013-01-07 데이터 압축 회로의 동작 방법과 상기 방법을 수행할 수 있는 장치들 Active KR102072412B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130001407A KR102072412B1 (ko) 2013-01-07 2013-01-07 데이터 압축 회로의 동작 방법과 상기 방법을 수행할 수 있는 장치들
US14/146,846 US9444490B2 (en) 2013-01-07 2014-01-03 Method of operating data compression circuit and devices to perform the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130001407A KR102072412B1 (ko) 2013-01-07 2013-01-07 데이터 압축 회로의 동작 방법과 상기 방법을 수행할 수 있는 장치들

Publications (2)

Publication Number Publication Date
KR20140090316A KR20140090316A (ko) 2014-07-17
KR102072412B1 true KR102072412B1 (ko) 2020-02-04

Family

ID=51061891

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130001407A Active KR102072412B1 (ko) 2013-01-07 2013-01-07 데이터 압축 회로의 동작 방법과 상기 방법을 수행할 수 있는 장치들

Country Status (2)

Country Link
US (1) US9444490B2 (ko)
KR (1) KR102072412B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI525996B (zh) * 2013-04-22 2016-03-11 國立交通大學 基於多通道獨立成分分析之訊號即時處理系統及方法
KR101558172B1 (ko) * 2014-10-14 2015-10-08 숭실대학교산학협력단 오류 분산을 위한 인터리빙 방법 및 장치, 이를 수행하기 위한 기록매체
US10387305B2 (en) * 2016-12-23 2019-08-20 Intel Corporation Techniques for compression memory coloring
US10972569B2 (en) * 2017-04-24 2021-04-06 International Business Machines Corporation Apparatus, method, and computer program product for heterogenous compression of data streams

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010047359A1 (en) * 2000-04-17 2001-11-29 Peter Videcrantz Method and apparatus for data compression
US20090006510A1 (en) * 2007-06-29 2009-01-01 Raza Microelectronics, Inc. System and method for deflate processing within a compression engine

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5771010A (en) * 1995-03-22 1998-06-23 Ibm Corporation Apparatus for compressing data using a Lempel-Ziv-type algorithm
US6128094A (en) 1998-07-08 2000-10-03 Hewlett-Packard Company Printer having processor with instruction cache and compressed program store
JP3327869B2 (ja) * 1998-07-28 2002-09-24 ゼロックス・コーポレーション 最小マッチ長が3のプリマッチストリングマッチアレイ
US6624762B1 (en) 2002-04-11 2003-09-23 Unisys Corporation Hardware-based, LZW data compression co-processor
JP5309015B2 (ja) 2006-04-07 2013-10-09 データ ストレージ グループ データ圧縮技術およびデータ格納技術
US7872598B2 (en) 2008-12-10 2011-01-18 Intel Corporation Accelerated decompression
US8044829B2 (en) 2009-03-05 2011-10-25 Marvell World Trade Ltd. Multi-mode encoding for data compression
US7944375B2 (en) 2009-06-02 2011-05-17 International Business Machines Corporation Wear reduction methods by using compression/decompression techniques with fast random access
US8325069B2 (en) 2009-12-22 2012-12-04 Intel Corporation System, method, and apparatus for a scalable processor architecture for a variety of string processing applications
US8350732B2 (en) * 2011-05-11 2013-01-08 Cavium, Inc. Compression with adjustable quality/bandwidth capability

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010047359A1 (en) * 2000-04-17 2001-11-29 Peter Videcrantz Method and apparatus for data compression
US20090006510A1 (en) * 2007-06-29 2009-01-01 Raza Microelectronics, Inc. System and method for deflate processing within a compression engine

Also Published As

Publication number Publication date
US20140195702A1 (en) 2014-07-10
US9444490B2 (en) 2016-09-13
KR20140090316A (ko) 2014-07-17

Similar Documents

Publication Publication Date Title
JP6512733B2 (ja) データ圧縮方法と、該方法を行う装置
CN103729307B (zh) 数据压缩装置和方法以及包括数据压缩装置的存储系统
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
US11704254B2 (en) Host side caching security for flash memory
US11687469B2 (en) Host-resident translation layer validity check techniques
US9946464B2 (en) Systems and methods for predicting compressibility of data
US10396827B2 (en) Data storage device
CN113841128B (zh) 大型数据读取方法、装置及可读介质
JP2018527681A (ja) ソリッドステートドライブコントローラを使用するデータ重複排除
KR20210035908A (ko) 호스트 상주 변환 계층 유효성 검사 기술
KR102072412B1 (ko) 데이터 압축 회로의 동작 방법과 상기 방법을 수행할 수 있는 장치들
US20200201752A1 (en) Host-based flash memory maintenance techniques
KR20120054699A (ko) 메모리 컨트롤러, 이를 포함하는 데이터 저장 시스템 및 그 방법
CN104881240B (zh) 数据写入方法、存储器存储装置及存储器控制电路单元
US10445012B2 (en) System and methods for in-storage on-demand data decompression
US10496317B2 (en) Memory system including memories having different characteristics and operation method thereof
KR20210043709A (ko) 컨트롤러와 분리된 인 패키지 시퀀서를 포함하는 메모리 서브 시스템
US20240393945A1 (en) In-situ memory compression
CN118020057A (zh) 使用内联元数据对压缩状态的早期检测
US11494263B2 (en) Controller and method of operating the same
KR20210052059A (ko) 반도체장치

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20130107

PG1501 Laying open of application
A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20171121

Comment text: Request for Examination of Application

Patent event code: PA02011R01I

Patent event date: 20130107

Comment text: Patent Application

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20190418

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20191029

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20200128

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20200129

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
PR1001 Payment of annual fee

Payment date: 20221221

Start annual number: 4

End annual number: 4

PR1001 Payment of annual fee

Payment date: 20231226

Start annual number: 5

End annual number: 5

PR1001 Payment of annual fee

Payment date: 20241226

Start annual number: 6

End annual number: 6