KR20120062500A - 압축 데이터를 판별하는 방법 및 장치 그리고 그것을 포함한 데이터 저장 장치 - Google Patents

압축 데이터를 판별하는 방법 및 장치 그리고 그것을 포함한 데이터 저장 장치 Download PDF

Info

Publication number
KR20120062500A
KR20120062500A KR1020100123788A KR20100123788A KR20120062500A KR 20120062500 A KR20120062500 A KR 20120062500A KR 1020100123788 A KR1020100123788 A KR 1020100123788A KR 20100123788 A KR20100123788 A KR 20100123788A KR 20120062500 A KR20120062500 A KR 20120062500A
Authority
KR
South Korea
Prior art keywords
data
storage medium
compression
stored
symbols
Prior art date
Application number
KR1020100123788A
Other languages
English (en)
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 KR1020100123788A priority Critical patent/KR20120062500A/ko
Priority to US13/241,352 priority patent/US20120144148A1/en
Publication of KR20120062500A publication Critical patent/KR20120062500A/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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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/60General implementation details not specific to a particular type of compression
    • H03M7/6064Selection of Compressor
    • H03M7/6082Selection strategies
    • H03M7/6088Selection strategies according to the data type

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)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

여기에는 저장 매체를 포함하는 데이터 저장 장치의 쓰기 방법이 제공되며, 쓰기 방법은 상기 저장 매체에 저장될 데이터를 입력받고; 외부로부터 제공되는 부가 정보없이 상기 입력된 데이터가 압축된 데이터인 지의 여부를 판별하고; 그리고 상기 판별 결과에 따라 상기 입력된 데이터를 선택적으로 압축하는 것을 포함한다. 상기 입력된 데이터가 압축된 데이터인 지의 여부의 판별은 상기 입력된 데이터 중 적어도 일부에 포함된 실질적인 심볼들의 분포도에 의거하여 행해진다.

Description

압축 데이터를 판별하는 방법 및 장치 그리고 그것을 포함한 데이터 저장 장치{METHOD AND DEVICE OF JUDGING COMPRESSED DATA AND DATA STORAGE DEVICE INCLUDING THE SAME}
본 발명은 전자 장치에 관한 것으로, 좀 더 구체적으로 데이터 저장 장치에 관한 것이다.
이 분야에 잘 알려진 바와 같이, 컴퓨터 시스템은 일반적으로 다양한 형태의 메모리 시스템들을 사용한다. 예를 들면, 컴퓨터 시스템은 반도체 장치들로 구성된 소위 메인 메모리를 사용한다. 이 반도체 장치들은 일반적으로 다음과 같은 속성을 갖는다. 반도체 장치들은 상당히 빠른 액세스 속도로 랜덤하게 쓰여지거나 읽혀지며, 일반적으로 랜덤 액세스 메모리라 불린다. 하지만, 반도체 메모리가 비교적 고가이기 때문에, 다른 고밀도 및 저가 메모리가 종종 사용된다. 예를 들면, 다른 메모리 시스템은 마그네틱 디스크 저장 시스템을 포함한다. 마그네틱 디스크 저장 시스템의 경우 액세스 속도가 수십㎳인 반면에 메인 메모리의 경우 액세스 속도는 수백㎱이다. 디스크 저장 장치는 필요시 메인 메모리로 순차적으로 읽혀지는 대용량 데이터를 저장하는 데 사용된다. 다른 형태의 디스크와 같은 저장 장치는 반도체 디스크 (solid state disk: 이하, SSD라 칭함) (또는 반도체 드라이브라 불림)이다. SSD는 일반적인 하드 디스크 드라이브에서 사용되는 회전 접시 대신에 데이터를 저장하는 데 SDRAM과 같은 메모리 칩들을 사용한 데이터 저장 장치이다.
"SSD"라는 용어는 2가지 다른 종류의 제품들에 사용된다. SDRAM과 같은 고속 및 휘발성 메모리에 근거를 둔 첫 번째 형태의 SSD는 상당히 빠른 데이터 액세스에 의해서 특징지어 지며, 디스크 드라이브의 레이턴시에 의해서 지연되었던 어플리케이션의 속도를 늘리는 데 주로 사용된다. 이러한 SSD가 휘발성 메모리를 사용하기 때문에, 데이터 지속성을 보장하기 위해서 내부 배터리 및 백업 디스크 시스템이 일반적으로 SSD 내에 포함된다. 만약 전원이 어떤 이유로 인해 차단되면, 배터리는 모든 데이터를 램에서 백업 디스크로 복사하기에 충분히 긴 시간 동안 유니트로 전원을 공급한다. 전원이 복구됨에 따라, 데이터는 백업 디스크에서 램으로 다시 복사되고 SSD는 정상 동작을 재개한다. 이러한 장치들은 특히 많은 양의 램을 갖는 컴퓨터에서 특히 유용하다. 두 번째 타입의 SSD는 데이터를 저장하는 데 불 휘발성 메모리를 사용한다. 이러한 SSD는 하드 드라이브의 대체를 위해서 일반적으로 사용된다.
본 발명의 목적은 저장될 데이터의 압축 여부를 판별할 수 있는 장치 및 방법을 제공하는 것이다.
본 발명의 일 특징은 저장 매체를 포함하는 데이터 저장 장치의 쓰기 방법을 제공하는 것이며, 이 쓰기 방법은 상기 저장 매체에 저장될 데이터를 입력받고; 외부로부터 제공되는 부가 정보없이 상기 입력된 데이터가 압축된 데이터인 지의 여부를 판별하고; 그리고 상기 판별 결과에 따라 상기 입력된 데이터를 선택적으로 압축하는 것을 포함하며, 상기 입력된 데이터가 압축된 데이터인 지의 여부의 판별은 상기 입력된 데이터 중 적어도 일부에 포함된 실질적인 심볼들의 분포도에 의거하여 행해진다.
본 발명의 다른 특징은 저장 매체와; 그리고 상기 저장 매체를 제어하도록 구성된 제어기를 포함하는 데이터 저장 장치를 제공하는 것이다. 상기 제어기는 외부로부터 제공되는 부가 정보없이 상기 저장 매체에 저장될 데이터가 압축된 데이터인 지의 여부를 판별하도록 그리고 상기 판별 결과에 따라 상기 저장 매체에 저장될 데이터를 선택적으로 압축하도록 구성되며, 상기 입력된 데이터가 압축된 데이터인 지의 여부의 판별은 상기 입력된 데이터 중 적어도 일부에 포함된 실질적인 심볼들의 분포도에 의거하여 행해진다.
본 발명의 예시적인 실시예들에 의하면, 외부로부터 제공되는 정보없이 데이터의 압축 여부를 판별하는 것이 가능하다.
도 1은 본 발명의 예시적인 실시예에 따른 데이터 저장 장치를 개략적으로 보여주는 블록도이다.
도 2는 본 발명의 예시적인 실시예에 따른 도 1에 도시된 제어기를 개략적으로 보여주는 블록도이다.
도 3은 본 발명의 예시적인 실시예에 따른 도 2에 도시된 데이터 편차 검출 블록을 개략적으로 보여주는 블록도이다.
도 4는 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 쓰기 방법을 설명하기 위한 흐름도이다.
도 5는 본 발명의 일 실시예에 따른 도 4에 도시된 S200 단계의 데이터 편차 검출 동작을 설명하기 위한 흐름도이다.
도 6은 본 발명의 예시적인 실시예에 따른 도 5에서 설명된 데이터 저장 장치의 압축 방식을 설명하기 위한 도면이다.
도 7은 본 발명의 다른 실시예에 따른 도 4에 도시된 S200 단계의 데이터 편차 검출 동작을 설명하기 위한 흐름도이다.
도 8은 본 발명의 다른 예시적인 실시예에 따른 도 7에서 설명된 데이터 저장 장치의 압축 방식을 설명하기 위한 도면이다.
도 9는 본 발명의 다른 예시적인 실시예에 따른 데이터 저장 장치의 쓰기 방법을 설명하기 위한 흐름도이다.
도 10은 본 발명의 예시적인 실시예에 따른 도 2에 도시된 데이터 편차 검출 블록을 개략적으로 보여주는 블록도이다.
도 11은 본 발명의 다른 실시예에 따른 도 1에 도시된 제어기를 보여주는 블록도이다.
도 12는 본 발명의 예시적인 실시예들에 따른 데이터 편차 검출 기술이 적용되는 반도체 드라이브를 개략적으로 보여주는 블록도이다.
도 13은 도 12에 도시된 반도체 드라이브를 이용한 스토리지를 개략적으로 보여주는 블록도이다.
도 14는 도 12에 도시된 반도체 드라이브를 이용한 스트리지 서버를 개략적으로 보여주는 블록도이다.
도 15는 본 발명의 다른 실시예에 따른 스토리지를 개략적으로 보여주는 블록도이다.
도 16은 도 15에 도시된 스토리지를 이용한 스트리지 서버를 개략적으로 보여주는 블록도이다.
도 17 내지 도 19는 본 발명의 예시적인 실시예들에 따른 데이터 저장 장치가 적용되는 시스템들을 개략적으로 보여주는 도면들이다.
도 20은 본 발명의 예시적인 실시예에 따른 불 휘발성 메모리 장치를 포함한 컴퓨팅 시스템을 개략적으로 보여주는 블록도이다.
본 발명의 이점 및 특징, 그리고 그것을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 통해 설명될 것이다. 그러나 본 발명은 여기에서 설명되는 실시 예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 본 실시 예들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
도면들에 있어서, 본 발명의 실시 예들은 도시된 특정 형태로 제한되는 것이 아니며 명확성을 기하기 위하여 과장된 것이다. 또한 명세서 전체에 걸쳐서 동일한 참조번호로 표시된 부분들은 동일한 구성요소를 나타낸다.
본 명세서에서 ‘및/또는’이란 표현은 전후에 나열된 구성요소들 중 적어도 하나를 포함하는 의미로 사용된다. 또한, ‘연결되는/결합되는’이란 표현은 다른 구성요소와 직접적으로 연결되거나 다른 구성요소를 통해 간접적으로 연결되는 것을 포함하는 의미로 사용된다. 본 명세서에서 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 또한, 명세서에서 사용되는 ‘포함한다’ 또는 ‘포함하는’으로 언급된 구성요소, 단계, 동작 및 소자는 하나 이상의 다른 구성요소, 단계, 동작, 소자 및 장치의 존재 또는 추가를 의미한다.
도 1은 본 발명의 예시적인 실시예에 따른 데이터 저장 장치를 개략적으로 보여주는 블록도이다.
도 1을 참조하면, 본 발명의 예시적인 실시예에 따른 데이터 저장 장치는 저장 매체(1000)와 제어기(2000)를 포함할 것이다. 저장 매체(1000)는 텍스트, 그래픽, 소프트웨어 코드, 등과 같은 다양한 데이터 형태들을 갖는 데이터 정보를 저장하는 데 사용될 것이다. 저장 매체(1000)는, 예를 들면, 낸드 플래시 메모리, 노어 플래시 메모리, 상변화 메모리 장치(PRAM), 강유전체 메모리 장치(FeRAM), 자기 저항램 장치(MRAM), 등과 같은 불 휘발성 메모리들을 이용하여 구성될 수 있다. 하지만, 저장 매체(1000)에 적용되는 불 휘발성 메모리들이 여기에 게재된 것에 국한되지 않음은 잘 이해될 것이다. 제어기(2000)는 외부 요청에 응답하여 저장 매체(1000)를 제어하도록 구성될 것이다. 제어기(2000)는 부가 정보없이, 외부로부터 제공되는 데이터가 압축된 데이터인 지 또는 가공되지 않은 데이터(또는, 압축되지 않은 데이터)인지의 여부를 판별하도록 구성될 것이다. 외부로부터 제공되는 데이터가 압축된 데이터인 것으로 판별되면, 제어기(2000)는 압축없이 외부로부터 제공된 데이터를 저장 매체(1000)에 저장하도록 구성될 것이다. 외부로부터 제공되는 데이터가 압축되지 않은/가공되지 않은 데이터인 것으로 판별되면, 제어기(2000)는 외부로부터 제공된 데이터를 압축하도록 그리고 압축된 데이터를 저장 매체(1000)에 저장하도록 구성될 것이다. 이는 이후 상세히 설명될 것이다.
데이터 압축 방식이 데이터 저장 장치에 적용됨에 따라, 저장 매체(1000)를 효율적으로 사용하는 것이 가능하다. 예를 들면, 낮은 비용으로 많은 양의 데이터를 저장하는 것이 가능하다. 또한, 데이터 압축 방식이 데이터 저장 장치에 적용됨에 따라, 저장 매체(1000)와 제어기(2000) 사이에서 전송되는 데이터의 양을 감소시키는 것이 가능하다. 즉, 데이터 압축 방식에 의하면, 저장 매체(1000)와 제어기(2000) 사이의 데이터 전송 시간이 줄어든다.
도 2는 본 발명의 예시적인 실시예에 따른 도 1에 도시된 제어기를 개략적으로 보여주는 블록도이다.
도 2를 참조하면, 본 발명의 예시적인 실시예에 따른 제어기(2000)는 제 1 인터페이스(2100), 제 2 인터페이스(2200), 처리 유니트로서 CPU(2300), 버퍼(2400), 압축 블록(2500), 롬(2600), 그리고 데이터 편차 검출 블록(data deviation detection block)(2700)을 포함할 것이다.
제 1 인터페이스(2100)는 외부(또는, 호스트)와 인터페이스하도록 구성될 것이다. 제 2 인터페이스(2200)는 도 1에 도시된 저장 매체(1000)와 인터페이스하도록 구성될 것이다. 처리 유니트 즉, CPU(2300)는 제어기(2000)의 전반적인 동작을 제어하도록 구성될 것이다. 예를 들면, CPU(2300)는 롬(2600)에 저장된 메모리 변환 계층(Memory Translation Layer: MTL)과 같은 펌웨어를 운용하도록 구성될 것이다. 메모리 변환 계층(MTL)은 메모리 맵핑 정보를 관리하는 데 사용될 것이다. 하지만, 메모리 변환 계층(MTL)의 역할이 여기에 개시된 것에 제한되지 않음은 잘 이해될 것이다. 예를 들면, 메모리 변환 계층은 저장 매체(1000)의 웨어-레벨링(wear-leveling) 관리, 배드 블록 관리, 예상치 못한 전원 차단에 기인한 데이터 보존성 관리, 등을 관리하는 데 사용될 것이다. 롬(2600)은 선택적으로 사용될 수 있다. 예를 들면, 롬(2600)에 저장되는 펌웨어는 저장 매체(1000)에 저장되며, 파워-업시 버퍼(2400)에 로드될 수 있다.
버퍼(2400)는 제 1 인터페이스(2100)를 통해 외부로 전달되는 데이터를 임시 저장하는 데 사용될 것이다. 버퍼(2400)는 제 2 인터페이스(2200)를 통해 저장 매체(1000)로부터 전달되는 데이터를 임시 저장하는 데 사용될 것이다. 또한, 버퍼(2400)는 CPU(2300)의 동작 메모리로서 사용될 것이다. 버퍼(2400)는 DRAM, SRAM, 또는 DRAM과 SRAM의 조합으로 구성될 수 있다. 압축 블록(2500)은 CPU(2300)의 제어(또는, CPU(2300)에 의해서 운용되는 메모리 변환 계층의 제어)에 응답하여 동작하며, 압축 단위에 따라 버퍼(2400)에서 순차적으로 제공되는 데이터를 압축하도록 구성될 것이다. 각 압축된 데이터는 제 2 인터페이스(2200)를 통해 저장 매체(1000)에 저장될 것이다. 또한, 압축 블록(2500)은 CPU(2300)의 제어(또는, CPU(2300)에 의해서 운용되는 메모리 변환 계층의 제어)에 응답하여 동작하며, 저장 매체(1000)로부터 읽혀진 데이터의 압축을 해제하도록 구성될 것이다.
데이터 편차 검출 블록(2700)은 저장 매체(1000)에 저장될 데이터(예를 들면, 버퍼(2400)에 저장된 데이터 또는 외부에서 제공되는 데이터)가 압축된 데이터(compressed data)인지 또는 가공되지 않은 데이터(raw data)인 지의 여부를 검출하도록 구성될 것이다. 만약 저장 매체(1000)에 저장될 데이터(예를 들면, 버퍼(2400)에 저장된 데이터 또는 외부에서 제공되는 데이터)가 압축된 데이터인 것으로 판별되면, 저장 매체(1000)에 저장될 데이터에 대한 압축은 행해지지 않을 것이다. 이 경우, 압축 블록(2500)의 압축 기능은 오프될 것이다. 이는 저장 매체(1000)에 저장될 데이터(예를 들면, 버퍼(2400)에 저장된 데이터 또는 외부에서 제공되는 데이터)가 압축 블록(2500)의 압축 과정없이 저장 매체(1000)에 바로 저장됨을 의미한다. 만약 저장 매체(1000)에 저장될 데이터(예를 들면, 버퍼(2400)에 저장된 데이터 또는 외부에서 제공되는 데이터)가 압축되지 않은 데이터(또는, 가공되지 않은 데이터)인 것으로 판별되면, 저장 매체(1000)에 저장될 데이터에 대한 압축은 행해질 것이다. 이 경우, 압축 블록(2500)의 압축 기능은 온될 것이다. 이는 저장 매체(1000)에 저장될 데이터(예를 들면, 버퍼(2400)에 저장된 데이터 또는 외부에서 제공되는 데이터)가 먼저 압축 블록(2500)에 의해서 압축되고 압축된 데이터가 저장 매체(1000)에 저장됨을 의미한다.
앞서의 설명으로부터 알 수 있듯이, 압축 블록(2500)의 압축 기능은 데이터 편차 검출 블록(2700)의 검출 결과에 따라 선택적으로 행해질 수 있다. 압축 블록(3500)의 온/오프는 데이터 편차 검출 블록(2700)의 검출 결과에 따라 하드웨어(예를 들면, 레지스터) 또는 소프트웨어적으로 행해질 수 있다.
도 3은 본 발명의 예시적인 실시예에 따른 도 2에 도시된 데이터 편차 검출 블록을 개략적으로 보여주는 블록도이다.
저장 매체(1000)에 저장될 데이터는 외부에서 버퍼(2400)로 전송될 것이다. 버퍼(2400)에 저장된 데이터가 저장 매체(1000)에 저장되기에 앞서, 데이터 편차 검출 블록(2700)은 버퍼(2400)에 저장된 데이터가 압축된 데이터인 지의 여부를 판별할 것이다. 버퍼(2400)에 저장된 데이터는, 예를 들면, 외부 장치의 쓰기 요청에 따라 전송된 데이터일 것이다. 설명의 편의상, 압축 블록(2500)의 압축 단위를 청크(chunk)라 칭한다. 버퍼(2400)에 저장된 데이터는 하나 또는 그 보다 많은 청크들로 구성될 것이다. 압축 블록(2500)의 압축 단위는 고정되거나 가변될 수 있다.
데이터 편차 검출 블록(2700)은 버퍼(2400)로부터 제공되는 하나의 청크에 대응하는 데이터(이하, '데이터 청크'라 칭함)에 의거하여 데이터 편차(data deviation)(σ)를 검출하고, 데이터 편차(σ)에 따라 압축 여부(또는, 압축 블록(2500)의 활성화/비활성화)를 결정할 것이다. 데이터 청크(2001)는, 도 3에 도시된 바와 같이, 복수의 심볼들로 구성될 것이다. 심볼들 각각은 복수의 비트들로 구성될 것이다. 예를 들면, 심볼은 8개의 비트들로 구성될 것이다. 다른 예로서, 심볼은 바이트보다 적은 수의 비트들 또는 M-워드(M은 1 또는 그 보다 큰 정수)로 구성될 수 있다. 심볼이 8개의 비트들로 정의될 때, 총 256개(28)의 심볼들이 존재할 수 있다. 예를 들면, 심볼이 2-비트로 정의될 때, 4개의 다른 심볼들(예를 들면, 00, 01, 10, 11)이 존재할 것이다. 또는, 심볼이 워드로 정의될 때, 총 65536개(216)의 심볼들이 존재할 수 있다. 예시적인 실시예에 있어서, 데이터 청크를 구성하는 심볼들의 수는 심볼의 크기에 따라 결정될 것이다.
도 3에 도시된 바와 같이, 데이터 편차 검출 블록(2700)은 심볼 계수부(2710), 데이터 편차 계산부(2720), 그리고 압축 결정부(2730)를 포함할 것이다. 심볼 계수부(2710)는 버퍼(2400)로부터 제공되는 데이터 청크(2001)에 포함된 실질적인 심볼들 각각의 발생 횟수를 계수할 것이다. 예를 들면, 심볼 계수부(2710)는 S1의 값을 갖는 심볼이 검출될 때마다 그러한 심볼(S1)에 대응하는 계수값(C1)을 1만큼 증가시킬 것이다. 데이터 청크(2001)의 심볼들이 심볼 계수부(2710)에 전송됨에 따라, 데이터 청크(2001)에 포함된 실질적인 심볼들에 대응하는 계수 값들이 결정될 것이다. 심볼 계수부(2710)는, 또한, 하나의 데이터 청크(2001)에 속한 심볼들이 모두 입력되었는 지의 여부를 판별할 것이다. 이는 하나의 데이터 청크(2001)에 속한 심볼들이 모두 입력될 때까지 행해질 것이다.
데이터 편차 계산부(2720)는 아래의 수학식에 따라 데이터 편차(σ)를 계산할 것이다.
Figure pat00001
수학식 1에서, Ci는 데이터 청크(2001)의 각 심볼의 발생 횟수(이하, 실질적인 심볼 횟수라 칭함)를 나타내며, X는 데이터가 이상적으로 압축된 것으로 가정하였을 때 표현 가능한 모든 심볼들 각각의 발생 횟수(이하, 이상적인 심볼 횟수라 칭함)를 나타낸다. 예를 들면, 데이터 청크가 4096개의 심볼들로 구성되고 하나의 심볼이 8-비트로 정의된다고 가정하면, 이상적인 심볼 횟수(X)는 16(4096/256)일 것이다. 이상적인 심볼 횟수(X)는 데이터 청크의 크기와 심볼 크기에 의해서 결정될 것이다. 즉, 이상적인 심볼 횟수(X)는 심볼 크기에 따라 결정된 표현 가능한 심볼들의 평균 심볼 횟수를 나타낼 것이다. 이상적인 심볼 횟수(X)는 심볼 크기와 데이터 청크 크기에 의거하여 데이터 편차 계산부(2720)에 의해서 계산되거나, 미리 결정된 값으로 설정될 것이다. 예시적인 실시예에 있어서, 데이터 편차(σ)는 데이터 청크(2001)에 포함된 실질적인 심볼들의 분포도를 나타내는 데 사용될 수 있다.
압축 결정부(2730)는 데이터 편차 계산부(2720)에 의해서 계산된 데이터 편차(σ)에 따라 압축 여부(또는, 압축 블록(2500)의 활성화/비활성화)를 결정할 것이다. 예를 들면, 압축 결정부(2730)는 데이터 편차(σ)의 값이 기준값을 초과할 때 버퍼(2400)에 저장된 데이터(또는, 저장 매체(1000)에 저장될 데이터)를 압축되지 않은 데이터(또는, 가공되지 않은 데이터)로 판별할 것이다. 압축 결정부(2730)는 데이터 편차(σ)의 값이 기준값을 초과하지 않을 때 버퍼(2400)에 저장된 데이터(또는, 저장 매체(1000)에 저장될 데이터)를 압축된 데이터로 판별할 것이다. 버퍼(2400)에 저장된 데이터는 압축 결정부(2730)의 판별 결과에 따라 압축 블록(2500)에 의해서 선택적으로 압축될 것이다.
상술한 바와 같이, 저장 매체(1000)에 저장될 데이터가 압축된 데이터인 지 또는 가공되지 않은/압축되지 않은 데이터인 지의 여부는 하나의 데이터 청크를 기준으로 판별된다. 데이터 편차 검출 블록(2700)에 제공되는 데이터 청크는 버퍼(2400)로부터 제공된다. 이에 반해서, 데이터 편차 검출 블록(2700)에 제공되는 데이터 청크는 외부에서 버퍼(2400)로 전송되는 데이터일 수 있다.
몇몇 실시예들에 있어서, 저장 매체(1000)에 저장될 데이터가 압축된 데이터인 지 또는 가공되지 않은/압축되지 않은 데이터인 지의 여부의 판별은 복수의 데이터 청크들의 데이터 편차 값들을 기준으로 행해질 수 있다. 또는, 압축 블록(2500)의 활성화/비활성화는 저장 매체(1000)에 저장될 데이터의 모든 데이터 청크들에 대해서 개별적으로 행해질 수 있다.
도 4는 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 쓰기 방법을 설명하기 위한 흐름도이다. 이하, 본 발명의 일 실시예에 따른 데이터 저장 장치의 쓰기 방법이 참조 도면들에 의거하여 상세히 설명될 것이다.
S100 단계에서, 외부로부터 제공되는 데이터로서, 저장 매체(1000)에 저장될 데이터는 쓰기 요청시 버퍼(2400)에 저장될 것이다. 일단 저장 매체(1000)에 저장될 데이터가 버퍼(2400)에 저장되면, S200 단계에서, 저장 매체(1000)에 저장될 데이터가 압축된 데이터인 지의 여부가 판별될 것이다. 이러한 동작을 데이터 편차 검출 동작이라 칭한다. 데이터 편차 검출 동작은 도 3에서 설명된 데이터 편차 검출 블록(2700)을 통해 행해질 것이다. 이에 반해서, 이후 설명되는 바와 같이, 그러한 데이터 편차 검출 동작은 소프트웨어적으로 행해질 수 있다.
만약 저장 매체(1000)에 저장될 데이터가 압축되지 않은 데이터이면, 절차는 S300 단계로 진행할 것이다. S300 단계에서, 버퍼(2400)의 데이터는 압축 블록(2500)에 의해서 압축되고, 압축된 데이터는 저장 매체(1000)에 저장될 것이다. 이후, 절차는 종료될 것이다. 만약 저장 매체(1000)에 저장될 데이터가 압축된 데이터이면, 절차는 S400 단계로 진행할 것이다. S400 단계에서, 버퍼(2400)의 데이터는 압축없이 직접 저장 매체(1000)에 저장될 것이다.
S200 단계의 동작이 저장 매체(1000)에 저장될 데이터가 버퍼(2400)에 저장된 후에 행해지는 예가 예시적으로 설명되었다. 하지만, 저장 매체(1000)에 저장될 데이터의 일부가 버퍼(2400)에 저장될 때 S200 단계의 동작이 행해질 수 있다. 또는, S200 단계의 동작은 쓰기 요청이 입력된 후 외부 장치에서 버퍼(2400)로 전송되는 데이터에 의거하여 행해질 수 있다.
도 5는 본 발명의 일 실시예에 따른 도 4에 도시된 S200 단계의 데이터 편차 검출 동작을 설명하기 위한 흐름도이다. 이하, 본 발명의 일 실시예에 따른 데이터 편차 검출 동작이 참조 도면들에 의거하여 상세히 설명될 것이다.
S210 단계에서, 데이터 청크(2001)에 포함된 하나의 심볼이 버퍼(2400)에서 데이터 편차 검출 블록(2700)으로 전송될 것이다. 이는 중앙처리장치(2300)(또는, 중앙처리장치(2300)에 의해서 운용되는 펌웨어)의 제어하에 행해질 것이다. 또는, 버퍼(2400)에서 데이터 편차 검출 블록(2700)으로의 데이터 전송은 데이터 편차 검출 블록(2700)의 요청에 따라 행해질 수 있다. S220 단계에서, 데이터 편차 검출 블록(2700)의 심볼 계수부(2710)는 입력된 심볼에 의거하여 실질적인 심볼 횟수를 계수할 것이다. 즉, 실질적인 심볼(Si)에 대한 계수 값(Ci)이 1만큼 증가될 것이다. 이때, 심볼 계수부(2710)는 총 심볼 갯수의 값을 1만큼 증가시킬 것이다. S230 단계에서, 심볼 계수부(2710)는 총 심볼 갯수의 값에 의거하여 입력된 심볼이 데이터 청크의 마지막 심볼인 지의 여부를 판별할 것이다.
만약 입력된 심볼이 데이터 청크의 마지막 심볼이 아닌 것으로 판별되면, 절차는 S210 단계로 진행할 것이다. 이후, S210 내지 S230 단계들은 입력된 심볼이 데이터 청크의 마지막 심볼인 것으로 판별될 때까지 반복될 것이다. 만약 입력된 심볼이 데이터 청크의 마지막 심볼인 것으로 판별되면, 절차는 S240 단계로 진행할 것이다. S240 단계에서, 데이터 편차 계산부(2720)는 심볼 계수부(2710)에 의해서 생성된 계수 값들(Ci)과 이상적인 심볼 횟수(X)에 의거하여 데이터 편차(σ)를 계산할 것이다. 데이터 편차(σ)의 계산은 앞서 설명된 수학식에 의거하여 행해질 것이다. 여기서, 이상적인 심볼 횟수(X)는 앞서 설명된 바와 같이 데이터 청크의 크기와 심볼 크기에 의해서 결정될 것이다. 이상적인 심볼 횟수(X)는 데이터 청크의 크기와 심볼 크기를 이용하여 데이터 편차 계산부(2720)에 의해서 계산되거나 고정 값으로 설정될 수 있다.
S250 단계에서, 압축 결정부(2730)는 데이터 편차 계산부(2720)에 의해서 계산된 데이터 편차(σ)의 값이 기준값(σTH)을 초과하는 지의 여부를 판별할 것이다. 데이터 편차 계산부(2720)에 의해서 계산된 데이터 편차(σ)의 값이 기준값(σTH)을 초과하는 것으로 판별되면, 절차는 S260 단계로 진행할 것이다. S260 단계에서, 압축 블록(2500)의 압축 기능이 활성화될 것이다. 데이터 편차 계산부(2720)에 의해서 계산된 데이터 편차(σ)의 값이 기준값(σTH)을 초과함은 이상적인 심볼 횟수(X)와 실질적인 심볼 횟수(Ci)의 편차가 크다는 것을 의미한다. 다시 말해서, 이상적인 심볼 횟수(X)와 실질적인 심볼 횟수(Ci)의 편차가 크면 클수록, 버퍼(2400)의 데이터가 압축되지 않은 데이터일 가능성이 높다. 그러한 까닭에, 압축 블록(2500)의 압축 기능이 활성화될 것이다. 압축 블록(2500)의 압축 기능의 활성화는 앞서 언급된 바와 같이 하드웨어적으로 또는 소프트웨어적으로 행해질 것이다.
이에 반해서, 데이터 편차 계산부(2720)에 의해서 계산된 데이터 편차(σ)의 값이 기준값(σTH)을 초과하지 않은 것으로 판별되면, 절차는 S270 단계로 진행할 것이다. S270 단계에서, 압축 블록(2500)의 압축 기능이 비활성화될 것이다. 데이터 편차 계산부(2720)에 의해서 계산된 데이터 편차(σ)의 값이 기준값(σTH)을 초과하지 않음은 이상적인 심볼 횟수(X)와 실질적인 심볼 횟수(Ci)의 편차가 작음을 의미한다. 다시 말해서, 이상적인 심볼 횟수(X)와 실질적인 심볼 횟수(Ci)의 편차가 작을수록, 버퍼(2400)의 데이터가 압축된 데이터일 가능성이 높다. 그러한 까닭에, 압축 블록(2500)의 압축 기능이 비활성화될 것이다. 압축 블록(2500)의 압축 기능의 비활성화는 앞서 언급된 바와 같이 하드웨어적으로 또는 소프트웨어적으로 행해질 것이다.
이후, 압축 블록(2500)의 활성화 또는 비활성화가 앞서 설명된 바와 같이 결정됨에 따라, 버퍼(2400)에 저장된 데이터는 중앙처리장치(2300)(또는, 중앙처리장치(2300)에 의해서 운용되는 펌웨어)의 제어하에 압축 블록(2500)에 의해서 압축되거나, 압축없이 직접 저장 매체(1000)에 저장될 것이다. 압축 블록(2500)에 의해서 압축된 데이터는 저장 매체(1000)에 저장될 것이다.
도 6은 본 발명의 예시적인 실시예에 따른 도 5에서 설명된 데이터 저장 장치의 압축 방식을 설명하기 위한 도면이다.
도 3 내지 도 5에서 설명된 바와 같이 데이터 편차(σ)가 계산될 것이다. 계산된 데이터 편차(σ)가 기준값(σTH)보다 큰 경우, 도 6에 도시된 바와 같이, 압축률(compression ratio)이 높을 것이다. 압축률은 압축된 데이터의 크기를 압축되지 않은 데이터의 크기로 나눔으로써 결정될 것이다. 압축률이 높음은 압축 블록(2500)을 통해 압축된 데이터의 크기가 작음을 의미한다. 즉, 게산된 데이터 편차(σ)가 기준값(σTH)보다 크다는 것은 버퍼(2400)에 저장된 데이터의 압축 효율이 높음을 나타낼 것이다. 계산된 데이터 편차(σ)가 기준값(σTH)보다 작은 경우, 도 6에 도시된 바와 같이, 압축률(compression ratio)이 낮을 것이다. 압축률이 낮음은 압축 블록(2500)을 통해 압축된 데이터의 크기가 큼을 의미한다. 즉, 게산된 데이터 편차(σ)가 기준값(σTH)보다 작다는 것은 버퍼(2400)에 저장된 데이터의 압축 효율이 낮음을 나타낼 것이다. 따라서, 버퍼(2400)의 데이터가 압축된 데이터인지 의 여부에 대한 판별과 더불어, 버퍼(2400)의 데이터에 대한 압축 효율을 예측하는 것도 가능하다.
도 5에서 설명된 데이터 편차 검출 동작은 도 3에 도시된 데이터 편차 검출 블록(2700)을 통해 하드웨어적으로 행해지는 예가 예시적으로 설명되었다. 하지만, 도 5에서 설명된 데이터 편차 검출 동작이 소프트웨어적으로 행해질 수 있음은 잘 이해될 것이다. 예를 들면, 데이터 편차 검출 동작을 수행하기 위한 프로그램이 도 2에 도시된 롬(2600)에 저장될 수 있다. 그러한 프로그램은, 예를 들면, 앞서 설명된 메모리 변환 계층에 포함될 것이다. 메모리 변환 계층의 데이터 편차 검출 동작은 중앙처리장치(2300)의 제어하에 행해질 것이다. 이러한 경우, 비록 도면에는 도시되지 않았지만, 제어기(2000)는 도 2에 도시된 데이터 편차 검출 블록(2700)을 제외한 나머지 구성 요소들(2100?2600)을 갖도록 구성될 것이다.
도 7은 본 발명의 다른 실시예에 따른 도 4에 도시된 S200 단계의 데이터 편차 검출 동작을 설명하기 위한 흐름도이다. 이하, 본 발명의 다른 실시예에 따른 데이터 편차 검출 동작이 참조 도면들에 의거하여 상세히 설명될 것이다.
S510 단계에서, 데이터 청크(2001)에 포함된 심볼이 버퍼(2400)에서 데이터 편차 검출 블록(2700)으로 전송될 것이다. 이는 중앙처리장치(2300)(또는, 중앙처리장치(2300)에 의해서 운용되는 펌웨어)의 제어하에 행해질 것이다. S520 단계에서, 데이터 편차 검출 블록(2700)의 심볼 계수부(2710)는 입력된 심볼에 의거하여 실질적인 심볼 횟수(Ci)를 계수할 것이다. 즉, 실질적인 심볼에 대한 계수 값(Ci)이 1만큼 증가될 것이다. 이때, 심볼 계수부(2710)는 총 심볼 갯수의 값을 1만큼 증가시킬 것이다. S530 단계에서, 심볼 계수부(2710)는 총 심볼 갯수의 값에 의거하여 입력된 심볼이 데이터 청크의 마지막 심볼인 지의 여부를 판별할 것이다.
만약 입력된 심볼이 데이터 청크의 마지막 심볼이 아닌 것으로 판별되면, 절차는 S510 단계로 진행할 것이다. 이후, S510 내지 S530 단계들은 입력된 심볼이 데이터 청크의 마지막 심볼인 것으로 판별될 때까지 반복될 것이다. 만약 입력된 심볼이 데이터 청크의 마지막 심볼인 것으로 판별되면, 절차는 S540 단계로 진행할 것이다. S440 단계에서, 데이터 편차 계산부(2720)는 심볼 계수부(2710)에 의해서 생성된 계수 값들(Ci)과 이상적인 심볼 횟수(X)에 의거하여 데이터 편차(σ)를 계산할 것이다. 데이터 편차(σ)의 계산은 앞서 설명된 수학식에 의거하여 행해질 것이다. 예시적인 실시예에 있어서, 이상적인 심볼 횟수(X)는 데이터 청크의 크기와 심볼 크기를 이용하여 데이터 편차 계산부(2720)에 의해서 계산되거나 고정 값으로 설정될 수 있다.
S550 단계에서, 압축 결정부(2730)는 데이터 편차 계산부(2720)에 의해서 계산된 데이터 편차(σ)의 값이 제 1 기준값(σTH1)보다 큰 지의 여부를 판별할 것이다. 데이터 편차 계산부(2720)에 의해서 계산된 데이터 편차(σ)의 값이 제 1 기준값(σTH1)보다 작은 것으로 판별되면, 절차는 S560 단계로 진행할 것이다. S560 단계에서, 압축 블록(2500)의 압축 기능이 비활성화될 것이다. 데이터 편차 계산부(2720)에 의해서 계산된 데이터 편차(σ)의 값이 제 1 기준값(σTH1)을 초과하지 않음은 이상적인 심볼 횟수(X)와 실질적인 심볼 횟수(Ci)의 편차가 작다는 것을 의미한다. 다시 말해서, 이상적인 심볼 횟수(X)와 실질적인 심볼 횟수(Ci)의 편차가 작을수록, 버퍼(2400)의 데이터가 압축된 데이터일 가능성이 높다. 그러한 까닭에, 압축 블록(2500)의 압축 기능이 비활성화될 것이다. 압축 블록(2500)의 압축 기능의 비활성화는 앞서 언급된 바와 같이 하드웨어적으로 또는 소프트웨어적으로 행해질 것이다.
만약 데이터 편차 계산부(2720)에 의해서 계산된 데이터 편차(σ)의 값이 제 1 기준값(σTH1)을 초과하는 것으로 판별되면, 절차는 S570 단계로 진행할 것이다. S570 단계에서, 압축 결정부(2730)는 데이터 편차 계산부(2720)에 의해서 계산된 데이터 편차(σ)의 값이 제 1 기준값(σTH1)보다 크고 제 2 기준값(σTH2)보다 작은 지의 여부를 판별할 것이다. 만약 데이터 편차 계산부(2720)에 의해서 계산된 데이터 편차(σ)의 값이 제 2 기준값(σTH2)보다 큰 것으로 판별되면, 절차는 S580 단계로 진행할 것이다. S580 단계에서, 압축 블록(2500)의 압축 기능이 활성화될 것이다. 데이터 편차 계산부(2720)에 의해서 계산된 데이터 편차(σ)의 값이 제 2 기준값(σTH2)을 초과함은 이상적인 심볼 횟수(X)와 실질적인 심볼 횟수(Ci)의 편차가 크다는 것을 의미한다. 다시 말해서, 이상적인 심볼 횟수(X)와 실질적인 심볼 횟수(Ci)의 편차가 크면 클수록, 버퍼(2400)의 데이터가 압축되지 않은 데이터일 가능성이 높다. 그러한 까닭에, 압축 블록(2500)의 압축 기능이 활성화될 것이다. 압축 블록(2500)의 압축 기능의 활성화는 앞서 언급된 바와 같이 하드웨어적으로 또는 소프트웨어적으로 행해질 것이다.
만약 데이터 편차 계산부(2720)에 의해서 계산된 데이터 편차(σ)의 값이 제 1 기준값(σTH1)보다 크고 제 2 기준값(σTH2)보다 작은 것으로 판별되면, 절차는 S590 단계로 진행할 것이다. S590 단계에서, 압축 결정부(2730)는 추가적인 조건에 의거하여 압축 여부를 결정할 것이다. 예를 들면, 압축 결정부(2730)는 추가적인 조건으로서 이전에 행해진 데이터 편차 검출 결과를 참조하여 데이터에 대한 압축 여부를 결정할 것이다. 만약 이전에 행해진 데이터 편차 검출 결과가 압축 기능의 활성화에 대응하면, 압축 결정부(2730)는 압축 블록(2500)의 압축 기능을 활성화시킨다. 만약 이전에 행해진 데이터 편차 검출 결과가 압축 기능의 비활성화에 대응하면, 압축 결정부(2730)는 압축 블록(2500)의 압축 기능을 비활성화시킨다. 또는, 압축 블록(2500)이 서로 다른 압축 알고리즘들을 포함한다고 가정하자. 이러한 가정하에, 데이터 편차 계산부(2720)에 의해서 계산된 데이터 편차(σ)의 값이 제 1 기준값(σTH1)보다 크고 제 2 기준값(σTH2)보다 작을 때, S580 단계에서 사용된 압축 블록(2500)의 압축 알고리즘과 다른 압축 알고리즘이 선택될 것이다.
이후, 압축 블록(2500)의 활성화 또는 비활성화가 앞서 설명된 바와 같이 결정됨에 따라, 버퍼(2400)에 저장된 데이터는 중앙처리장치(2300)(또는, 중앙처리장치(2300)에 의해서 운용되는 펌웨어)의 제어하에 압축 블록(2500)에 의해서 압축되거나, 압축없이 직접 저장 매체(1000)에 저장될 것이다. 압축 블록(2500)에 의해서 압축된 데이터는 저장 매체(1000)에 저장될 것이다.
도 8은 본 발명의 다른 예시적인 실시예에 따른 도 7에서 설명된 데이터 저장 장치의 압축 방식을 설명하기 위한 도면이다.
도 3 내지 도 5에서 설명된 바와 같이 데이터 편차(σ)가 계산될 것이다. 계산된 데이터 편차(σ)가 제 1 기준값(σTH1)보다 작은 경우, 도 8에 도시된 바와 같이, 압축률(compression ratio)이 낮을 것이다. 압축률이 낮음은 압축 블록(2500)을 통해 압축된 데이터의 크기가 크다는 것을 의미한다. 즉, 게산된 데이터 편차(σ)가 제 1 기준값(σTH1)보다 작다는 것은 버퍼(2400)에 저장된 데이터의 압축 효율이 낮음을 나타낼 것이다. 따라서, 버퍼(2400)의 데이터가 압축된 데이터인지 의 여부에 대한 판별과 더불어, 버퍼(2400)의 데이터에 대한 압축 효율을 예측하는 것도 가능하다.
계산된 데이터 편차(σ)가 제 2 기준값(σTH2)보다 큰 경우, 도 8에 도시된 바와 같이, 압축률이 높을 것이다. 압축률은 압축된 데이터를 압축되지 않은 데이터로 나눔으로써 결정될 것이다. 압축률이 높음은 압축 블록(2500)을 통해 압축된 데이터의 크기가 작다는 것을 의미한다. 즉, 게산된 데이터 편차(σ)가 제 2 기준값(σTH2)보다 크다는 것은 버퍼(2400)에 저장된 데이터의 압축 효율이 높음을 나타낼 것이다.
계산된 데이터 편차(σ)가 제 1 기준값(σTH1)보다 크고 제 2 기준값(σTH2)보다 작은 경우, 도 8에 도시된 바와 같이, 압축률이 낮은 지 또는 낮은 지의 여부를 결정하는 것이 어려울 수 있다. 이러한 경우, 도 7에서 설명된 바와 같이, 압축 여부가 추가적인 조건(예를 들면, 이전에 행해진 데이터 편차 검출 결과)에 의거하여 결정될 수 있다. 예를 들면, 이전에 행해진 데이터 편차 검출 결과가 압축 기능의 활성화에 대응할 때, 압축 블록(2500)의 압축 기능이 활성화될 것이다. 이전에 행해진 데이터 편차 검출 결과가 압축 기능의 비활성화에 대응할 때, 압축 블록(2500)의 압축 기능이 비활성화될 것이다.
도 7에서 설명된 데이터 편차 검출 동작은 도 3에 도시된 데이터 편차 검출 블록(2700)을 통해 하드웨어적으로 행해지는 예가 예시적으로 설명되었다. 하지만, 도 7에서 설명된 데이터 편차 검출 동작이 소프트웨어적으로 행해질 수 있음은 잘 이해될 것이다. 예를 들면, 데이터 편차 검출 동작을 수행하기 위한 프로그램이 도 2에 도시된 롬(2600)에 저장될 수 있다. 그러한 프로그램은, 예를 들면, 앞서 설명된 메모리 변환 계층에 포함될 것이다. 메모리 변환 계층의 데이터 편차 검출 동작은 중앙처리장치(2300)의 제어하에 행해질 것이다. 이러한 경우, 비록 도면에는 도시되지 않았지만, 제어기(2000)는 도 2에 도시된 데이터 편차 검출 블록(2700)을 제외한 나머지 구성 요소들(2100?2600)을 갖도록 구성될 것이다.
도 9는 본 발명의 다른 예시적인 실시예에 따른 데이터 저장 장치의 쓰기 방법을 설명하기 위한 흐름도이다. 이하, 본 발명의 다른 실시예에 따른 데이터 저장 장치의 쓰기 방법이 참조 도면들에 의거하여 상세히 설명될 것이다.
S610 단계에서, 저장 매체(1000)에 저장될 데이터는 쓰기 요청시 버퍼(2400)에 저장될 것이다. 일단 저장 매체(1000)에 저장될 데이터가 쓰기 요청시 버퍼(2400)에 저장되면, S620 단계에서, 쓰기 요청시 전송된 데이터에 대한 압축 정보가 전송되었는 지의 여부가 판별될 것이다. 이는 호스트 인터페이스(2100)에 의해서 또는 중앙처리장치(2300)(또는, 중앙처리장치(2300)에 의해서 운용되는 펌웨어)에 의해서 행해질 수 있다. 압축 정보는 쓰기 요청시 전송된 데이터가 압축된 데이터인 지 또는 압축되지 않은/가공되지 않은 데이터인 지의 여부를 나타내는 정보일 것이다. 만약 쓰기 요청시 전송된 데이터에 대한 압축 정보가 전송된 것으로 판별되면, 절차는 S630 단계로 진행할 것이다. S630 단계에서, 제공된 압축 정보에 의거하여 압축 블록(2500)의 활성화가 결정될 것이다. S640 단계에서, 버퍼(2400)에 저장된 데이터는 결정 결과에 따라 압축되거나 압축되지 않으며, 그러한 데이터(즉, 압축된 데이터 또는 압축되지 않은 데이터)는 저장 매체(1000)에 저장될 것이다. 이후 절차는 종료될 것이다.
S620 단계로 돌아가서, 만약 쓰기 요청시 전송된 데이터에 대한 압축 정보가 전송되지 않은 것으로 판별되면, 절차는 S650 단계로 진행할 것이다. S650 단계에서, 앞서 설명된 것과 동일한 방식으로 데이터 편차가 결정될 것이다. S660 단계에서, 결정된 데이터 편차에 의거하여 압축 여부가 결정될 것이다. 이는 도 5 또는 도 7에서 설명된 것과 동일하게 행해질 것이다. S670 단계에서, 버퍼(2400)에 저장된 데이터는 결정 결과에 따라 압축되거나 압축되지 않으며, 그러한 데이터(즉, 압축된 데이터 또는 압축되지 않은 데이터)는 저장 매체(1000)에 저장될 것이다. 이후 절차는 종료될 것이다.
도 10은 본 발명의 예시적인 실시예에 따른 도 2에 도시된 데이터 편차 검출 블록을 개략적으로 보여주는 블록도이다. 도 10에 도시된 데이터 편차 검출 블록(2700A)은 해쉬 함수부(2740)가 추가된다는 점을 제외하면 도 3에 도시된 것과 실질적으로 동일하며, 그것에 대한 설명은 그러므로 생략될 것이다.
데이터 청크(2001)에 포함된 심볼들(S1?Sm) 각각은, 도 10에 도시된 바와 같이, 적어도 2-바이트(B1, B2)로 구성될 것이다. 해쉬 함수부(2740)는 미리 설정된 함수(f(B1, B2))에 따라 각 심볼을 해쉬 값으로 변경하도록 구성될 것이다. 예를 들면, 해쉬 함수부(2740)는 2-바이트 심볼에 의거하여 11-비트 해쉬 값을 발생하도록 구성될 것이다. 해쉬 값을 생성하는 방식은 이 분야에 잘 알려져 있으며, 그것에 대한 상세한 설명은 그러므로 생략될 것이다. 해쉬 함수부(2740)를 통해 변경된 해쉬 값은 심볼 계수부(2710)로 전달되며, 심볼 계수부(2710)는 도 10에 도시된 바와 같이 각 해쉬값의 발생 횟수를 계수할 것이다. 이후, 각 해쉬값의 발생 횟수의 계수값(Ci)에 의거하여 도 3에서 설명된 것과 동일한 방식으로 데이터 편차(σ)가 계산되며, 그러므로 그것에 대한 설명은 생략될 것이다. 16-비트 심볼을 11-비트 해쉬값으로 변경함으로써 계수값들을 저장하는 데 필요한 공간을 줄이는 것이 가능할 것이다.
도 11은 본 발명의 다른 실시예에 따른 도 1에 도시된 제어기를 보여주는 블록도이다.
도 11을 참조하면, 본 발명의 다른 실시예에 따른 제어기(3000)는 제 1 인터페이스(5100), 제 2 인터페이스(5200), 처리 유니트로서 CPU(5300), 버퍼(5400), 압축 블록(5500), 그리고 롬(5600)을 포함할 것이다. 도 11에 도시된 구성 요소들(3100?3500)은 도 2에 도시된 것과 실질적으로 동일하며, 그것에 대한 설명은 그러므로 생략될 것이다. 롬(5600)에는 앞서 설명된 데이터 편차 검출 기능을 지원하는 펌웨어(3610)(예를 들면, 메모리 변환 계층)가 저장될 것이다. 롬(5600)에 저장된 펌웨어(3610)는 중앙처리장치(3300)에 의해서 운용될 것이다. 도 11에 도시된 제어기(3000)는 소프트웨어 방식으로 데이터 편차 검출 기능이 행해진다는 점을 제외하면 도 2에 도시된 것과 실질적으로 동일하게 동작할 것이다.
도 12는 본 발명의 예시적인 실시예들에 따른 데이터 편차 검출 기술이 적용되는 반도체 드라이브를 개략적으로 보여주는 블록도이다.
도 12를 참조하면, 반도체 드라이브(4000)(SSD)는 저장 매체(4100)와 제어기(4200)를 포함할 것이다. 저장 매체(4100)는 복수의 채널들을 통해 제어기(4200)와 연결될 것이다. 각 채널에는 복수의 불 휘발성 메모리들이 공통으로 연결될 것이다. 제어기(4200)는 데이터를 압축하고 데이터의 압축을 해제하는 압축 블록(4210)을 포함할 것이다. 압축 블록(4210)의 압축 기능은 도 2 내지 도 11에서 설명된 것과 실질적으로 동일한 방식으로 얻어진 데이터 편차(σ)에 따라 선택적으로 활성화될 것이다. 즉, 압축 블록(4210)의 압축 기능의 활성화/비활성화는 소프트웨어적으로 또는 하드웨어적으로 행해질 것이다. 압축 블록(4210)의 압축 기능의 활성화/비활성화가 하드웨어적으로 행해지는 경우, 비록 도면에는 도시되지 않았지만, 제어기(4200)에는 도 2에서 설명된 데이터 편차 검출 블록(2700)이 제공될 것이다.
도 13은 도 12에 도시된 반도체 드라이브를 이용한 스토리지를 개략적으로 보여주는 블록도이고, 도 14는 도 12에 도시된 반도체 드라이브를 이용한 스트리지 서버를 개략적으로 보여주는 블록도이다.
본 발명의 예시적인 실시예에 따른 반도체 드라이브(4000)는 스토리지를 구성하는 데 사용될 수 있다. 도 13에 도시된 바와 같이, 스토리지는 도 12에서 설명된 것과 실질적으로 동일하게 구성되는 복수의 반도체 드라이브들(4000)을 포함할 것이다. 본 발명의 예시적인 실시예에 따른 반도체 드라이브(4000)는 스토리지 서버를 구성하는 데 사용될 수 있다. 도 14에 도시된 바와 같이, 스토리지 서버는 도 125에서 설명된 것과 실질적으로 동일하게 구성되는 복수의 반도체 드라이브들(4000)과 서버(4000A)를 포함할 것이다. 또한, 이 분야에 잘 알려진 RAID 제어기(4000B)가 스토리지 서버에 제공될 수 있음은 잘 이해될 것이다.
도 15는 본 발명의 다른 실시예에 따른 스토리지를 개략적으로 보여주는 블록도이고, 도 16은 도 15에 도시된 스토리지를 이용한 스트리지 서버를 개략적으로 보여주는 블록도이다.
도 15를 참조하면, 스토리지는 복수의 반도체 드라이브들(5000)과 제어 블록(5000A)을 포함할 것이다. 반도체 드라이브들(5000) 각각은 제어기(5100)와 저장 매체(5200)를 포함할 것이다. 제어기(5100)는 저장 매체(5200)와의 인터페이스 기능을 수행할 것이다. 반도체 드라이브들(5000)은 제어 블록(5000A)에 의해서 제어되며, 제어 블록(5000A)은 앞서 설명된 기능(예를 들면, 데이터 편차 검출 기능)을 수행하도록 구성될 것이다. 도 15에 도시된 스토리지 구성이 스토리지 서버를 구성하는 데 사용될 수 있다. 도 16에 도시된 바와 같이, 스토리지 서버는 도 15에서 설명된 것과 실질적으로 동일하게 구성되는 스토리지(5000, 5000A)와 서버(5000B)를 포함할 것이다. 또한, 이 분야에 잘 알려진 RAID 제어기(5000C)가 스토리지 서버에 제공될 수 있음은 잘 이해될 것이다.
도 17 내지 도 19는 본 발명의 예시적인 실시예들에 따른 데이터 저장 장치가 적용되는 시스템들을 개략적으로 보여주는 도면들이다.
본 발명의 예시적인 실시예들에 따른 데이터 저장 장치를 포함한 반도체 드라이브가 스토리지에 적용되는 경우, 도 17에 도시된 바와 같이, 시스템(6000)은유선 그리고/또는 무선으로 호스트와 통신하는 스토리지(6100)를 포함할 것이다. 본 발명의 예시적인 실시예들에 따른 데이터 저장 장치를 포함한 반도체 드라이브가 스토리지 서버에 적용되는 경우, 도 18에 도시된 바와 같이, 시스템(7000)은 유선 그리고/또는 무선으로 호스트와 통신하는 스토리지 서버들(7100, 7200)을 포함할 것이다. 또한, 도 19에 도시된 바와 같이, 본 발명의 예시적인 실시예에 따른 데이터 저장 장치를 포함한 반도체 드라이브는 메일 서버(8100)에도 적용될 수 있다.
불 휘발성 메모리 장치로서, 플래시 메모리 장치는 전력이 차단되어도 저장된 데이터를 유지할 수 있는 불 휘발성 메모리 장치이다. 셀룰러 폰, PDA 디지털 카메라, 포터블 게임 콘솔, 그리고 MP3P와 같은 모바일 장치들의 사용 증가에 따라, 플래시 메모리 장치는 데이터 스토리지 뿐만 아니라 코드 스토리지로서 보다 널리 사용된다. 플래시 메모리 장치는, 또한, HDTV, DVD, 라우터, 그리고 GPS와 같은 홈 어플리케이션에 사용될 수 있다.
도 20은 본 발명의 예시적인 실시예에 따른 불 휘발성 메모리 장치를 포함한 컴퓨팅 시스템을 개략적으로 보여주는 블록도이다.
본 발명에 따른 컴퓨팅 시스템은 마이크로프로세서(9100), 사용자 인터페이스(9200), 베이스밴드 칩셋(baseband chipset)과 같은 모뎀(9300), 메모리 제어기(9400), 그리고 불 휘발성 메모리 장치로서 플래시 메모리로 구성된 저장 매체(9500)를 포함한다. 메모리 제어기(9400)는 도 2 또는 도 11에 도시된 것과 실질적으로 동일하게 구성될 것이다. 저장 매체(9500)에는 마이크로프로세서(9100)에 의해서 처리된/처리될 N-비트 데이터(N은 1 또는 그 보다 큰 정수)가 메모리 제어기(9400)를 통해 저장될 것이다. 본 발명에 따른 컴퓨팅 시스템이 모바일 장치인 경우, 컴퓨팅 시스템의 동작 전압을 공급하기 위한 배터리(9600)가 추가적으로 제공될 것이다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 컴퓨팅 시스템에는 응용 칩셋(application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다. 메모리 제어기와 플래시 메모리 장치는, 예를 들면, 데이터를 저장하는 데 불 휘발성 메모리를 사용하는 반도체 드라이브/디스크(Solid State Drive/Disk: SSD)를 구성할 수 있다.
예시적인 실시예에 있어서, 제어기(2000)의 압축 블록(2500)은 아래의 압축 알고리즘들 중 하나 또는 그 보다 많은 압축 알고리즘들의 조합을 포함할 것이다. 압축 알고리즘들은 LZ77&LZ78, LZW, Entropy encoding, Huffman coding, Adpative Huffman coding, Arithmetic coding, DEFLATE, JPEG, 등을 포함할 것이다.
예시적인 실시예에 있어서, 제어기(2000)의 제 1 인터페이스(2100)는 컴퓨터 버스 표준들, 스토리지 버스 표준들, iFCPPeripheral 버스 표준들, 등 중 하나 또는 그 보다 많은 것들의 조합으로 구성될 수 있다. 컴퓨터 버스 표준들(computer bus standards)은 S-100 bus, Mbus, Smbus, Q-Bus, ISA, Zorro II, Zorro III, CAMAC, FASTBUS, LPC, EISA, VME, VXI, NuBus, TURBOchannel, MCA, Sbus, VLB, PCI, PXI, HP GSC bus, CoreConnect, InfiniBand, UPA, PCI-X, AGP, PCIe, Intel QuickPath Interconnect, Hyper Transport, 등을 포함한다. 스토리지 버스 표준들(Storage bus standards)은 ST-506, ESDI, SMD, Parallel ATA, DMA, SSA, HIPPI, USB MSC, FireWire(1394), Serial ATA, eSATA, SCSI, Parallel SCSI, Serial Attached SCSI, Fibre Channel, iSCSI, SAS, RapidIO, FCIP, 등을 포함한다. iFCPPeripheral 버스 표준들(iFCPPeripheral bus standards)은 Apple Desktop Bus, HIL, MIDI, Multibus, RS-232, DMX512-A, EIA/RS-422, IEEE-1284, UNI/O, 1-Wire, I2C, SPI, EIA/RS-485, USB, Camera Link, External PCIe, Light Peak, Multidrop Bus, 등을 포함한다.
본 발명의 범위 또는 기술적 사상을 벗어나지 않고 본 발명의 구조가 다양하게 수정되거나 변경될 수 있음은 이 분야에 숙련된 자들에게 자명하다. 상술한 내용을 고려하여 볼 때, 만약 본 발명의 수정 및 변경이 아래의 청구항들 및 동등물의 범주 내에 속한다면, 본 발명이 이 발명의 변경 및 수정을 포함하는 것으로 여겨진다.
1000: 저장 매체
2000: 제어기

Claims (10)

  1. 저장 매체를 포함하는 데이터 저장 장치의 쓰기 방법에 있어서:
    상기 저장 매체에 저장될 데이터를 입력받고;
    외부로부터 제공되는 부가 정보없이 상기 입력된 데이터가 압축된 데이터인 지의 여부를 판별하고; 그리고
    상기 판별 결과에 따라 상기 입력된 데이터를 선택적으로 압축하는 것을 포함하며,
    상기 입력된 데이터가 압축된 데이터인 지의 여부의 판별은 상기 입력된 데이터 중 적어도 일부에 포함된 실질적인 심볼들의 분포도에 의거하여 행해지는 것을 특징으로 하는 쓰기 방법.
  2. 제 1 항에 있어서,
    상기 입력된 데이터가 압축된 데이터일 때, 압축 없이 상기 입력된 데이터를 상기 저장 매체에 저장하는 것을 더 포함하는 특징으로 하는 쓰기 방법.
  3. 제 2 항에 있어서,
    상기 입력된 데이터가 압축되지 않는 데이터일 때, 상기 입력된 데이터를 압축하고 상기 압축된 데이터를 상기 저장 매체에 저장하는 것을 더 포함하는 특징으로 하는 쓰기 방법.
  4. 제 1 항에 있어서,
    상기 입력된 데이터의 적어도 일부는 압축 단위를 구성하며 복수의 심볼들을 포함하는 데이터 청크를 포함하는 것을 특징으로 하는 쓰기 방법.
  5. 제 4 항에 있어서,
    상기 실질적인 심볼들의 분포도는 상기 데이터 청크에 포함된 실질적인 심볼들의 계수값들과 상기 복수의 심보들의 평균 심볼 횟수에 의거하여 계산되는 데이터 편차에 따라 결정되는 것을 특징으로 하는 쓰기 방법.
  6. 제 4 항에 있어서,
    외부로부터 제공된 부가 정보없이 상기 입력된 데이터가 압축된 데이터인 지의 여부를 판별하는 것을 상기 각 계수값과 상기 평균 심볼 횟수 사이의 편차들을 합산함으로써 상기 데이터 편차를 계산하는 것을 포함하는 것을 특징으로 하는 쓰기 방법.
  7. 저장 매체와; 그리고
    상기 저장 매체를 제어하도록 구성된 제어기를 포함하며,
    상기 제어기는 외부로부터 제공되는 부가 정보없이 상기 저장 매체에 저장될 데이터가 압축된 데이터인 지의 여부를 판별하도록 그리고 상기 판별 결과에 따라 상기 저장 매체에 저장될 데이터를 선택적으로 압축하도록 구성되며,
    상기 입력된 데이터가 압축된 데이터인 지의 여부의 판별은 상기 입력된 데이터 중 적어도 일부에 포함된 실질적인 심볼들의 분포도에 의거하여 행해지는 데이터 저장 장치.
  8. 제 7 항에 있어서,
    상기 저장 매체에 저장될 데이터가 압축된 데이터로 판별될 때, 상기 제어기는 압축없이 상기 저장 매체에 저장될 데이터를 상기 저장 매체에 저장하는 데이터 저장 장치.
  9. 제 8 항에 있어서,
    상기 제어기는
    상기 저장 매체에 저장될 데이터를 압축하도록 구성된 압축 블록과; 그리고
    상기 저장 매체에 저장될 데이터의 일부에 의거하여 상기 저장 매체에 저장될 데이터에 포함된 실질적인 심볼들의 분포도를 결정하고, 상기 결정 결과에 따라 상기 저장 매체에 저장된 데이터에 대한 압축 여부를 판별하는 데이터 편차 검출 블록을 포함하며, 상기 압축 블록의 압축 기능은 상기 판별된 압축 여부에 따라 활성화되는 데이터 저장 장치.
  10. 제 9 항에 있어서,
    상기 데이터 편차 검출 블록은
    상기 저장 매체에 저장될 데이터 중 데이터 청크에 포함된 실질적인 심볼들을 계수하도록 구성된 심볼 계수부와;
    상기 심볼 계수부에 의해서 계수된 상기 실질적인 심볼들의 계수값들과 이상적인 심볼 횟수 사이의 편차들을 합산하여 데이터 편차를 계산하는 데이터 편차 계산부와; 그리고
    상기 계산된 데이터 편차에 의거하여 상기 저장 매체에 저장될 데이터가 압축된 데이터인 지의 여부를 결정하는 압축 결정부를 포함하는 데이터 저장 장치.
KR1020100123788A 2010-12-06 2010-12-06 압축 데이터를 판별하는 방법 및 장치 그리고 그것을 포함한 데이터 저장 장치 KR20120062500A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100123788A KR20120062500A (ko) 2010-12-06 2010-12-06 압축 데이터를 판별하는 방법 및 장치 그리고 그것을 포함한 데이터 저장 장치
US13/241,352 US20120144148A1 (en) 2010-12-06 2011-09-23 Method and device of judging compressed data and data storage device including the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100123788A KR20120062500A (ko) 2010-12-06 2010-12-06 압축 데이터를 판별하는 방법 및 장치 그리고 그것을 포함한 데이터 저장 장치

Publications (1)

Publication Number Publication Date
KR20120062500A true KR20120062500A (ko) 2012-06-14

Family

ID=46163357

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100123788A KR20120062500A (ko) 2010-12-06 2010-12-06 압축 데이터를 판별하는 방법 및 장치 그리고 그것을 포함한 데이터 저장 장치

Country Status (2)

Country Link
US (1) US20120144148A1 (ko)
KR (1) KR20120062500A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140111867A (ko) * 2013-03-12 2014-09-22 삼성전자주식회사 데이터 처리 시스템과 이의 동작 방법

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101814022B1 (ko) * 2012-01-27 2018-01-04 삼성전자주식회사 반도체 패키지
US9419716B2 (en) * 2013-11-14 2016-08-16 Nicolas Thomas Mathieu Dupont Variable color data transmission
US10028277B2 (en) 2013-11-20 2018-07-17 Cyborg Inc. Variable frequency data transmission

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6195024B1 (en) * 1998-12-11 2001-02-27 Realtime Data, Llc Content independent data compression method and system
GB2365158A (en) * 2000-07-28 2002-02-13 Content Technologies Ltd File analysis using byte distributions
US20030030575A1 (en) * 2001-05-07 2003-02-13 Harmonic Data Systems Ltd. Lossless data compression
US7111142B2 (en) * 2002-09-13 2006-09-19 Seagate Technology Llc System for quickly transferring data
KR101487190B1 (ko) * 2008-09-11 2015-01-28 삼성전자주식회사 압축 코덱을 구비한 플래시 메모리 집적 회로

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140111867A (ko) * 2013-03-12 2014-09-22 삼성전자주식회사 데이터 처리 시스템과 이의 동작 방법

Also Published As

Publication number Publication date
US20120144148A1 (en) 2012-06-07

Similar Documents

Publication Publication Date Title
KR101862341B1 (ko) 데이터 압축 기능을 갖는 데이터 저장 장치
KR101643273B1 (ko) 저장 매체에 데이터를 저장하는 방법, 그를 이용한 데이터 저장 장치, 및 그것을 포함한 시스템
US10642522B2 (en) Method and system for in-line deduplication in a storage drive based on a non-collision hash
US10564856B2 (en) Method and system for mitigating write amplification in a phase change memory-based storage device
US10853234B2 (en) Memory controller
US9767053B2 (en) Memory controller and memory system including the same
US20110252184A1 (en) Method of storing data in storage media, data storage device using the same, and system including the same
US8996947B2 (en) Generation of program data for nonvolatile memory
KR20110138076A (ko) 데이터 저장 장치 및 그것의 쓰기 방법
US8706953B2 (en) Data storage device and method performing background operation with selected data compression
JP2014529827A (ja) メモリエンデュランスのために動作させる装置および方法
US20110252007A1 (en) Method of storing data in storage media, data storage device using the same, and system including the same
US10678443B2 (en) Method and system for high-density converged storage via memory bus
KR20130066277A (ko) 메모리 시스템 및 그것의 동작 방법
CN111580746B (zh) 在存储服务器中进行数据压缩管理的方法及设备
US20200042230A1 (en) Method and system for facilitating atomicity and latency assurance on variable sized i/o
KR20120054699A (ko) 메모리 컨트롤러, 이를 포함하는 데이터 저장 시스템 및 그 방법
KR20120062500A (ko) 압축 데이터를 판별하는 방법 및 장치 그리고 그것을 포함한 데이터 저장 장치
US20220035703A1 (en) Memory system including field programmable gate array (fpga) and method of operating same
KR101845510B1 (ko) 반도체 저장 장치 및 시스템
KR20110138707A (ko) 데이터 저장 장치 및 그것의 쓰기 방법
KR20220072398A (ko) 메모리 장치 및 메모리 시스템
CN117099109A (zh) 用于深度神经网络权重的压缩技术
TW201805937A (zh) 資料儲存裝置、記憶體控制器及其資料管理方法
JP2016134166A (ja) 検索装置

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid