KR101862341B1 - 데이터 압축 기능을 갖는 데이터 저장 장치 - Google Patents

데이터 압축 기능을 갖는 데이터 저장 장치 Download PDF

Info

Publication number
KR101862341B1
KR101862341B1 KR1020120002554A KR20120002554A KR101862341B1 KR 101862341 B1 KR101862341 B1 KR 101862341B1 KR 1020120002554 A KR1020120002554 A KR 1020120002554A KR 20120002554 A KR20120002554 A KR 20120002554A KR 101862341 B1 KR101862341 B1 KR 101862341B1
Authority
KR
South Korea
Prior art keywords
compression
data
input data
hash key
block
Prior art date
Application number
KR1020120002554A
Other languages
English (en)
Other versions
KR20130081532A (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 KR1020120002554A priority Critical patent/KR101862341B1/ko
Priority to US13/617,786 priority patent/US8954693B2/en
Publication of KR20130081532A publication Critical patent/KR20130081532A/ko
Application granted granted Critical
Publication of KR101862341B1 publication Critical patent/KR101862341B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • G06F2212/262Storage comprising a plurality of storage devices configured as RAID
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

여기에는 저장 매체를 제어하도록 구성된 메모리 제어기가 제공되며, 상기 메모리 제어기는 입력 데이터의 압축률이 목표 압축률을 초과하는 지의 여부를 계산하도록 구성된 압축률 계산기를 포함하는 호스트 인터페이스와; 상기 호스트 인터페이스를 통해 전송되는 상기 입력 데이터를 임시 저장하는 버퍼 메모리와; 그리고 상기 압축률 계산기의 계산 결과에 따라 상기 버퍼 메모리에 저장된 상기 입력 데이터를 압축하도록 구성된 압축 블록을 포함한다.

Description

데이터 압축 기능을 갖는 데이터 저장 장치{DATA STORAGE DEVICE WITH DATA COMPRESSION FUNCTION}
본 발명은 전자 장치에 관한 것으로, 좀 더 구체적으로 데이터 저장 장치에 관한 것이다.
이 분야에 잘 알려진 바와 같이, 컴퓨터 시스템은 일반적으로 다양한 형태의 메모리 시스템들을 사용한다. 예를 들면, 컴퓨터 시스템은 반도체 장치들로 구성된 소위 메인 메모리를 사용한다. 이 반도체 장치들은 일반적으로 다음과 같은 속성을 갖는다. 반도체 장치들은 상당히 빠른 액세스 속도로 랜덤하게 쓰여지거나 읽혀지며, 일반적으로 랜덤 액세스 메모리라 불린다. 하지만, 반도체 메모리가 비교적 고가이기 때문에, 다른 고밀도 및 저가 메모리가 종종 사용된다. 예를 들면, 다른 메모리 시스템은 마그네틱 디스크 저장 시스템을 포함한다. 마그네틱 디스크 저장 시스템의 경우 액세스 속도가 수십㎳인 반면에 메인 메모리의 경우 액세스 속도는 수백㎱이다. 디스크 저장 장치는 필요시 메인 메모리로 순차적으로 읽혀지는 대용량 데이터를 저장하는 데 사용된다. 다른 형태의 디스크와 같은 저장 장치는 반도체 디스크 (solid state disk: 이하, SSD라 칭함) (또는 반도체 드라이브라 불림)이다. SSD는 일반적인 하드 디스크 드라이브에서 사용되는 회전 접시 대신에 데이터를 저장하는 데 SDRAM과 같은 메모리 칩들을 사용한 데이터 저장 장치이다.
"SSD"라는 용어는 2가지 다른 종류의 제품들에 사용된다. SDRAM과 같은 고속 및 휘발성 메모리에 근거를 둔 첫 번째 형태의 SSD는 상당히 빠른 데이터 액세스에 의해서 특징지어 지며, 디스크 드라이브의 레이턴시에 의해서 지연되었던 어플리케이션의 속도를 늘리는 데 주로 사용된다. 이러한 SSD가 휘발성 메모리를 사용하기 때문에, 데이터 지속성을 보장하기 위해서 내부 배터리 및 백업 디스크 시스템이 일반적으로 SSD 내에 포함된다. 만약 전원이 어떤 이유로 인해 차단되면, 배터리는 모든 데이터를 램에서 백업 디스크로 복사하기에 충분히 긴 시간 동안 유니트로 전원을 공급한다. 전원이 복구됨에 따라, 데이터는 백업 디스크에서 램으로 다시 복사되고 SSD는 정상 동작을 재개한다. 이러한 장치들은 특히 많은 양의 램을 갖는 컴퓨터에서 특히 유용하다. 두 번째 타입의 SSD는 데이터를 저장하는 데 불 휘발성 메모리를 사용한다. 이러한 SSD는 하드 드라이브의 대체를 위해서 일반적으로 사용된다.
본 발명의 목적은 성능을 향상시킬 수 있는 기술을 제공하는 것이다.
본 발명의 일 특징은 저장 매체를 제어하도록 구성된 메모리 제어기를 제공하는 것이며, 메모리 제어기는 입력 데이터의 압축률이 목표 압축률을 초과하는 지의 여부를 계산하도록 구성된 압축률 계산기를 포함하는 호스트 인터페이스와; 상기 호스트 인터페이스를 통해 전송되는 상기 입력 데이터를 임시 저장하는 버퍼 메모리와; 그리고 상기 압축률 계산기의 계산 결과에 따라 상기 버퍼 메모리에 저장된 상기 입력 데이터를 압축하도록 구성된 압축 블록을 포함한다.
예시적인 실시예에 있어서, 상기 호스트 인터페이스는 상기 버퍼 메모리와 상기 압축 블록에 연결된 버스와 호스트 사이의 전송 속도차를 해소하도록 상기 입력 데이터를 버퍼링하는 호스트 버퍼 매니저를 더 포함한다.
예시적인 실시예에 있어서, 상기 압축률 계산기는 상기 호스트 버퍼 매니저로 전송되는 데이터에 의거하여 압축률을 계산하도록 구성된다.
예시적인 실시예에 있어서, 상기 압축률 계산기는 상기 호스트 버퍼 매니저로부터 출력되는 데이터에 의거하여 압축률을 계산하도록 구성된다.
예시적인 실시예에 있어서, 상기 압축률 계산기의 계산 결과는 상기 압축 블록의 레지스터에 저장된다.
예시적인 실시예에 있어서, 상기 메모리 제어기의 전반적인 동작을 제어하도록 구성된 중앙 처리 장치를 더 포함하며, 상기 중앙 처리 장치는 상기 버퍼 메모리로의 데이터 전송이 종료될 때 상기 압축 블록의 레지스터에 저장된 계산 결과를 참조하여 상기 압축 블록의 압축 기능을 제어한다.
예시적인 실시예에 있어서, 상기 계산 결과가 상기 입력 데이터의 압축률이 목표 압축률을 초과함을 나타낼 때, 상기 중앙 처리 장치는 상기 입력 데이터를 압축하도록 상기 압축 블록의 압축 기능을 활성화시킨다.
예시적인 실시예에 있어서, 상기 계산 결과가 상기 입력 데이터의 압축률이 목표 압축률을 초과하지 않음을 나타낼 때, 상기 중앙 처리 장치는 상기 입력 데이터가 압축없이 상기 저장 매체에 저장되도록 상기 압축 블록의 압축 기능을 비활성화시킨다.
예시적인 실시예에 있어서, 상기 압축률 계산기는 상기 버퍼 메모리로부터 소정 단위로 데이터를 순차적으로 입력받고, 상기 소정 단위로 입력된 데이터에 대응하는 해쉬키 값을 발생하는 해쉬키 발생 유니트와; 그리고 상기 해쉬키 발생 유니트에 의해서 생성된 해쉬키 값들에 의거하여 상기 입력 데이터의 중복성 레벨을 검출하도록 구성된 중복성 검출기를 포함한다.
예시적인 실시예에 있어서, 상기 중복성 검출기는 해쉬키 값들에 각각 대응하는 엔트리들로 구성되는 해쉬 테이블과; 상기 각 엔트리는 대응하는 해쉬키 값이 생성되었는 지의 여부를 나타내는 플래그 비트를 저장하며; 상기 해쉬키 발생 유니트로부터 제공되는 해쉬키 값에 대응하는 엔트리를 상기 플래그 비트로 설정하도록 구성되며, 상기 해쉬 테이블의 엔트리들의 값들에 의거하여 현재 입력된 해쉬키 값이 이전에 생성되었는 지의 여부를 판별하도록 구성된 제어 로직과; 그리고 상기 제어 로직의 제어에 응답하여 히트 카운트 값을 계산하는 카운터를 포함하며, 현재 입력된 해쉬키 값이 이전에 생성된 것으로 판별될 때, 상기 제어 로직은 상기 히트 카운트 값이 증가하도록 상기 카운터를 제어한다.
본 발명의 예시적인 실시예들에 의하면, 외부로부터 제공되는 정보없이 데이터의 압축 여부를 판별하는 것이 가능하다.
도 1은 본 발명의 실시예에 따른 데이터 저장 장치를 개략적으로 보여주는 블록도이다.
도 2는 본 발명의 실시예에 따른 도 1에 도시된 제어기를 개략적으로 보여주는 블록도이다.
도 3은 본 발명의 실시예에 따른 도 2에 도시된 압축률 계산기를 개략적으로 보여주는 블록도이다.
도 4는 도 3에 도시된 해쉬키 발생기를 개략적으로 보여주는 블록이다.
도 5는 도 3에 도시된 중복성 검출기를 개략적으로 보여주는 블록도이다.
도 6은 본 발명의 실시예에 따른 데이터 저장 장치의 쓰기 방법을 설명하기 위한 흐름도이다.
도 7은 도 6에 도시된 S100 동작을 구체적으로 설명하기 위한 흐름도이다.
도 8 및 도 9는 본 발명의 실시예들에 따른 압축률 계산기의 물리적인 위치를 설명하기 위한 도면들이다.
도 10은 본 발명의 다른 실시예에 따른 도 1에 도시된 제어기를 보여주는 블록도이다.
도 11은 본 발명의 실시예에 따른 압축률 계산 기술이 적용되는 반도체 드라이브를 개략적으로 보여주는 블록도이다.
도 12는 도 11에 도시된 반도체 드라이브를 이용한 스토리지를 개략적으로 보여주는 블록도이다.
도 13은 도 11에 도시된 반도체 드라이브를 이용한 스트리지 서버를 개략적으로 보여주는 블록도이다.
도 14는 본 발명의 다른 실시예에 따른 스토리지를 개략적으로 보여주는 블록도이다.
도 15는 도 14에 도시된 스토리지를 이용한 스트리지 서버를 개략적으로 보여주는 블록도이다.
도 16 내지 도 18은 본 발명의 실시예에 따른 데이터 저장 장치가 적용되는 시스템들을 개략적으로 보여주는 도면들이다.
도 19는 본 발명의 실시예에 따른 데이터 저장 장치를 포함한 컴퓨팅 시스템을 개략적으로 보여주는 블록도이다.
본 발명의 이점 및 특징, 그리고 그것을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 통해 설명될 것이다. 그러나 본 발명은 여기에서 설명되는 실시 예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 본 실시 예들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
도면들에 있어서, 본 발명의 실시 예들은 도시된 특정 형태로 제한되는 것이 아니며 명확성을 기하기 위하여 과장된 것이다. 또한 명세서 전체에 걸쳐서 동일한 참조번호로 표시된 부분들은 동일한 구성요소를 나타낸다.
본 명세서에서 ‘및/또는’이란 표현은 전후에 나열된 구성요소들 중 적어도 하나를 포함하는 의미로 사용된다. 또한, ‘연결되는/결합되는’이란 표현은 다른 구성요소와 직접적으로 연결되거나 다른 구성요소를 통해 간접적으로 연결되는 것을 포함하는 의미로 사용된다. 본 명세서에서 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 또한, 명세서에서 사용되는 ‘포함한다’ 또는 ‘포함하는’으로 언급된 구성요소, 단계, 동작 및 소자는 하나 이상의 다른 구성요소, 단계, 동작, 소자 및 장치의 존재 또는 추가를 의미한다.
도 1은 본 발명의 실시예에 따른 데이터 저장 장치를 개략적으로 보여주는 블록도이다.
도 1을 참조하면, 본 발명의 실시예에 따른 데이터 저장 장치는 저장 매체(1000)와 제어기(2000)를 포함할 것이다. 저장 매체(1000)는 텍스트, 그래픽, 소프트웨어 코드, 등과 같은 다양한 데이터 형태들을 갖는 데이터 정보를 저장하는 데 사용될 것이다. 저장 매체(1000)는, 예를 들면, 낸드 플래시 메모리, 노어 플래시 메모리, 상변화 메모리 장치(PRAM), 강유전체 메모리 장치(FeRAM), 자기 저항램 장치(MRAM), 등과 같은 불 휘발성 메모리들을 이용하여 구성될 수 있다. 하지만, 저장 매체(1000)에 적용되는 불 휘발성 메모리들이 여기에 게재된 것에 국한되지 않음은 잘 이해될 것이다. 제어기(2000)는 외부 요청에 응답하여 저장 매체(1000)를 제어하도록 구성될 것이다. 제어기(2000)는 외부의 부가 정보없이 외부로부터 제공되는 데이터의 압축률을 판별하도록 구성될 것이다. 압축률이 목표 압축률(또는, 기준 압축률)보다 높을 때, 제어기(2000)는 외부로부터 제공되는 데이터를 압축하고, 압축된 데이터를 저장 매체(1000)에 저장할 것이다. 압축률이 목표 압축률보다 낮을 때, 제어기(2000)는 외부로부터 제공되는 데이터를 저장 매체(1000)에 직접 저장할 것이다. 즉, 압축률이 목표 압축률보다 낮을 때, 제어기(2000)는 외부로부터 제공되는 데이터에 대한 압축 동작을 생략할 것이다. 이는 이후 상세히 설명될 것이다.
데이터 압축 방식이 데이터 저장 장치에 적용됨에 따라, 저장 매체(1000)를 효율적으로 사용하는 것이 가능하다. 예를 들면, 낮은 비용으로 많은 양의 데이터를 저장하는 것이 가능하다. 또한, 데이터 압축 방식이 데이터 저장 장치에 적용됨에 따라, 저장 매체(1000)와 제어기(2000) 사이에서 전송되는 데이터의 양을 감소시키는 것이 가능하다. 즉, 데이터 압축 방식에 의하면, 저장 매체(1000)와 제어기(2000) 사이의 데이터 전송 시간이 줄어든다. 또한, 데이터 압축률에 따라 압축 동작을 선택적으로 수행함으로써 불필요한 압축 동작으로 인한 메모리 접근 동작, 전력 소모, 그리고 쓰기 지연을 줄이는 것이 가능하다.
도 2는 본 발명의 실시예에 따른 도 1에 도시된 제어기를 개략적으로 보여주는 블록도이다.
도 2를 참조하면, 본 발명의 실시예에 따른 제어기(2000)는 제 1 인터페이스로서 호스트 인터페이스 블록(2100), 제 2 인터페이스로서 메모리 인터페이스 블록(2200), 처리 유니트로서 CPU(2300), 버퍼(2400), 압축 블록(2500), 롬(2600), 그리고 ECC 블록(2700)을 포함할 것이다.
호스트 인터페이스 블록(2100)은 외부(또는, 호스트)와 인터페이스하도록 구성될 것이다. 메모리 인터페이스 블록(2200)은 도 1에 도시된 저장 매체(1000)와 인터페이스하도록 구성될 것이다. 처리 유니트 즉, CPU(2300)는 제어기(2000)의 전반적인 동작을 제어하도록 구성될 것이다. 예를 들면, CPU(2300)는 롬(2600)에 저장된 메모리 변환 계층(Memory Translation Layer: MTL)과 같은 펌웨어를 운용하도록 구성될 것이다. 메모리 변환 계층(MTL)은 메모리 맵핑 정보를 관리하는 데 사용될 것이다. 하지만, 메모리 변환 계층(MTL)의 역할이 여기에 개시된 것에 제한되지 않음은 잘 이해될 것이다. 예를 들면, 메모리 변환 계층은 저장 매체(1000)의 웨어-레벨링(wear-leveling) 관리, 배드 블록 관리, 예상치 못한 전원 차단에 기인한 데이터 보존성 관리, 등을 관리하는 데 사용될 것이다. 롬(2600)은 선택적으로 사용될 수 있다. 예를 들면, 롬(2600)에 저장되는 펌웨어는 저장 매체(1000)에 저장되며, 파워-업시 버퍼(2400)에 로드될 수 있다.
버퍼(2400)는 호스트 인터페이스 블록(2100)을 통해 외부로 전달되는 데이터를 임시 저장하는 데 사용될 것이다. 버퍼(2400)는 메모리 인터페이스 블록(2200)을 통해 저장 매체(1000)로부터 전달되는 데이터를 임시 저장하는 데 사용될 것이다. 또한, 버퍼(2400)는 CPU(2300)의 동작 메모리로서 사용될 것이다. 버퍼(2400)는 DRAM 또는 SRAM과 같은 휘발성 메모리 장치 또는 MRAM, FeRAM, PRAM 등과 같은 불 휘발성 메모리 장치들 중 하나로 구성될 수 있다. 압축 블록(2500)은 CPU(2300)의 제어(또는, CPU(2300)에 의해서 운용되는 메모리 변환 계층의 제어)에 응답하여 동작하며, 압축 단위에 따라 버퍼(2400)에서 순차적으로 제공되는 데이터를 압축하도록 구성될 것이다. 압축된 데이터는 메모리 인터페이스 블록(2200)을 통해 저장 매체(1000)에 저장될 것이다. 또한, 압축 블록(2500)은 CPU(2300)의 제어(또는, CPU(2300)에 의해서 운용되는 메모리 변환 계층의 제어)에 응답하여 동작하며, 저장 매체(1000)로부터 읽혀진 데이터의 압축을 해제하도록 구성될 것이다.
본 발명에 따른 호스트 인터페이스 블록(2100)은 호스트 버퍼 매니저(2110)와 압축률 계산기(2120)를 포함할 것이다. 호스트 버퍼 매니저(2110)는 호스트와 시스템 버스(2001) 사이의 전송 속도차를 해소하기 위해서 호스트로부터 제공되는 데이터를 버퍼링하도록 구성될 것이다. 압축률 계산기(2120)는 호스트 버퍼 매니저(2110)에 제공되는 데이터 또는 호스트 버퍼 매니저(2110)로부터 출력되는 데이터가 압축 가능한 데이터인 지의 여부를 실시간으로(on-the-fly) 예측하도록 구성될 것이다. 압축률 계산기(2120)는 예측 결과를 압축 블록(2500)으로 전송한다. 전송된 예측 결과는 압축 블록(2500)의 레지스터에 저장될 것이다. 쓰기 요청된 데이터가 모두 입력된 후, CPU(2300)(또는, CPU(2300)에 의해서 운용되는 펌웨어)는 압축 블록(2500)의 레지스터에 저장된 예측 결과에 의거하여 입력된 데이터에 대한 압축 여부를 결정할 것이다.
이상의 설명에 따르면, 만약 저장 매체(1000)에 저장될 데이터가 압축이 필요하지 않은 데이터인 것으로 판별되면, 저장 매체(1000)에 저장될 데이터에 대한 압축은 행해지지 않을 것이다. 이 경우, 압축 블록(2500)의 압축 기능은 오프될 것이다. 이는 저장 매체(1000)에 저장될 데이터가 압축 블록(2500)의 압축 과정없이 저장 매체(1000)에 바로 저장됨을 의미한다. 만약 저장 매체(1000)에 저장될 데이터가 압축이 필요한 데이터인 것으로 판별되면, 저장 매체(1000)에 저장될 데이터에 대한 압축은 행해질 것이다. 이 경우, 압축 블록(2500)의 압축 기능은 온될 것이다. 이는 저장 매체(1000)에 저장될 데이터가 먼저 압축 블록(2500)에 의해서 압축되고 압축된 데이터가 저장 매체(1000)에 저장됨을 의미한다.
헤더 데이터나 상위 계층(파일 시스템, 호스트 인터페이스, 등)의 부가적인 정보없이 압축 여부 또는 압축 효율을 예측함으로써 최소의 연산과 지연으로 압축률을 예측하는 것이 가능하다. 이러한 예측 기준을 바탕으로 압축 효율이 높을 것이라고 예상되는 데이터의 경우에만 선별적으로 압축 동작을 수행함으로써 버퍼 접근 및 버스 밴드폭 사용량을 줄일 수 있으며, 쓰기 처리에 필요한 지연 시간을 최소화하는 것이 가능하다.
도 3은 본 발명의 실시예에 따른 도 2에 도시된 압축률 계산기를 개략적으로 보여주는 블록도이고, 도 4는 도 3에 도시된 해쉬키 발생기를 개략적으로 보여주는 블록이다.
도 3을 참조하면, 압축률 계산기(2120)는 해쉬키 발생 유니트(2121)와 중복성 검출기(2122)를 포함할 것이다. 해쉬키 발생 유니트(2121)는 입력 데이터에 의거하여 해쉬키 값을 발생하도록 구성될 것이다. 예를 들면, 해쉬키 발생 유니트(2121)는 데이터를 소정 단위(예를 들면, n-바이트(n은 2 또는 그 보다 큰 정수))로 순차적으로 입력받고, 소정 단위로 입력된 데이터의 해쉬키 값을 발생한다. 현재 입력된 데이터가 이전에 입력된 데이터와 동일한 데이터 패턴을 가질 때, 현재 입력된 데이터의 해쉬키 값은 이전에 입력된 데이터의 해쉬키 값(Hx)과 동일할 것이다. 현재 입력된 데이터가 이전에 입력된 데이터와 다른 데이터 패턴을 가질 때, 현재 입력된 데이터의 해쉬키 값은 이전에 입력된 데이터의 해쉬키 값(Hx)과 다를 것이다.
해쉬키 발생 유니트(2121)는 하나 또는 그 보다 많은 해쉬키 발생기들로 구성될 수 있다. 예를 들면, 도 4를 참조하면, 해쉬키 발생 유니트(2121)는 4개의 해쉬키 발생기들(2121a, 2121b, 2121c, 2121d)로 구성될 수 있다. 하지만, 해쉬키 발생기들의 수는 여기에 개시된 것에 국한되지 않음은 잘 이해될 것이다. 해쉬키 발생기들(2121a, 2121b, 2121c, 2121d)은 동일하게 구성될 것이다. 해쉬키 발생기들(2121a, 2121b, 2121c, 2121d) 각각은 소정 단위, 예를 들면, 3-바이트 단위로 데이터를 입력받고, 입력받은 데이터의 패턴에 대응하는 해쉬키 값(Hx)을 발생할 것이다. 해쉬키 발생기들(2121a, 2121b, 2121c, 2121d) 각각은 데이터 패턴에 따라 결정되는 해쉬키 값(Hx)을 발생할 것이다. 즉, 해쉬키 발생기에 입력된 데이터의 패턴들이 동일한 경우, 동일한 해쉬키 값이 생성될 것이다. 해쉬키 발생기에 입력된 데이터의 패턴들이 다른 경우, 다른 해쉬키 값들이 생성될 것이다. 해쉬키 발생기들(2121a, 2121b, 2121c, 2121d) 각각에 제공되는 데이터의 단위는 다양하게 변경될 수 있다.
다시 도 3을 참조하면, 중복성 검출기(2122)는 해쉬키 발생 유니트(2121)에 의해서 생성된 해쉬키 값(Hx)에 의거하여 중복성 레벨을 검출한다. 여기서, 중복성 레벨이 높음은 압축률이 목표 압축률보다 높음을 의미한다. 다시 말해서, 중복성 레벨이 높은 경우, 압축 효율이 높을 것이다. 중복성 레벨은 해쉬키 발생 유니트(2121)로부터 제공되는 해쉬키 값들의 히트 카운트를 기준으로 결정될 수 있다. 중복성 검출기(2122)는 중복성 레벨을 나타내는 히트 카운트 값(Chit)을 발생한다. 히트 카운트 값(Chit)은 도 2의 압축 블록(2500)의 레지스터에 저장될 것이다. 다른 예로서, 히트 카운트 값(Chit)은 압축률 계산기(2120) 내에 임시 저장되며, 저장된 히트 카운트 값(Chit)은 압축 여부를 결정하기 위해서 쓰기 요청된 데이터의 입력이 완료될 때 CPU(2300)에 의해서 참조될 수 있다.
도 5는 도 3에 도시된 중복성 검출기를 개략적으로 보여주는 블록도이다.
도 5를 참조하면, 중복성 검출기(2122)는 제어 로직(2122-1), 해쉬 테이블(2122-2), 그리고 카운터(2122-3)를 포함할 것이다. 제어 로직(2122-1)은 중복성 검출기(2122)의 전반적인 동작을 제어하도록 구성될 것이다. 해쉬 테이블(2122-2)은 해쉬키 값들에 각각 대응하는 엔트리들로 구성되며, 각 엔트리는 대응하는 해쉬키 값이 생성되었는 지의 여부를 나타내는 정보(예를 들면, 플래그 비트)를 저장하는 데 사용될 것이다. 예를 들면, 현재 입력된 해쉬키 값이 'H1'인 경우, 입력된 해쉬키 값에 대응하는 엔트리(H1)는 제어 로직(2122-1)의 제어 하에 '1'로 설정될 것이다. 엔트리 값은 대응하는 해쉬키 값이 이전에 생성되었음을 나타내는 지표로서 사용될 것이다. 특정 해쉬키 값이 생성되면, 해쉬 테이블(2122-2)의 대응하는 엔트리가 제어 로직(2122-1)의 제어 하에 '1'로 설정될 것이다. 즉, 제어 로직(2122-1)은 해쉬 테이블(2122-2)의 엔트리들의 값들에 의거하여, 현재 입력된 해쉬키 값이 이전에 생성되었는 지의 여부를 판별할 것이다. 만약 현재 입력된 해쉬키 값이 이전에 생성된 것으로 판별되면, 제어 로직(2122-1)은 히트 카운트 값(Chit)이 미리 설정된 값, 예를 들면, '1'만큼 증가되도록 카운터(2122-3)를 제어할 것이다. 앞서 설명된 바와 같이, 히트 카운트 값(Chit)은 중복성 레벨을 나타낼 것이다. 히트 카운트 값(Chit)이 클 수록, 쓰기 요청된 데이터 중 압축 가능한 데이터의 양이 많을 것이다.
본 발명의 중복성 검출기(2120)가 여기에 개시된 것에 국한되지 않음은 잘 이해될 것이다. 예를 들면, 중복성 검출기(2120)는 해쉬키 값들 각각에 대응하는 카운터들과; 그리고 카운터들의 값들을 가산하는 가산기로 구성될 수 있다. 가산기의 출력은 히트 카운트 값(Chit)으로서 사용될 것이다.
도 6은 본 발명의 실시예에 따른 데이터 저장 장치의 쓰기 방법을 설명하기 위한 흐름도이고, 도 7은 도 6에 도시된 S100 동작을 구체적으로 설명하기 위한 흐름도이다. 이하, 본 발명의 실시예에 따른 데이터 저장 장치의 쓰기 방법이 참조 도면들에 의거하여 상세히 설명될 것이다.
호스트로부터 쓰기 요청된 데이터는 CPU(2300)의 제어 하에 호스트 인터페이스 블록(2100)을 통해 버퍼(2400)에 저장될 것이다. S100 단계에서, 호스트로부터 전송된 쓰기 요청된 데이터가 버퍼(2400)으로 전송되는 동안, 압축률 계산기(2120)는 쓰기 요청된 데이터의 압축률을 실시간으로 계산할 것이다. 압축률을 계산하는 동작은, 도 7을 참조하면, 쓰기 요청된 데이터를 입력받고(S110), 해쉬키 값들을 생성하고(S120), 히트 카운트 값(Chit)을 갱신하고(S130), 그리고 쓰기 요청된 데이터가 모두 입력되었는 지의 여부를 판별하는(S140) 것을 포함할 것이다. 이러한 동작들(S110-S140)은 쓰기 요청된 데이터가 모두 입력될 때까지 반복될 것이다. 쓰기 요청된 데이터에 대한 히트 카운트 값(Chit)은 압축 블록(2500)의 레지스터에 저장될 것이다. 히트 카운트 값(Chit)을 생성하는 동작은 도 3 내지 도 5에서 설명된 것과 실질적으로 동일하게 행해지며, 그것에 대한 설명은 그러므로 생략될 것이다.
예시적인 실시예에 있어서, 쓰기 요청된 데이터의 크기는 한 페이지에 대응하는 데이터 크기일 것이다. 또는, 쓰기 요청된 데이터의 크기는 한 페이지의 데이터 중 일부에 대응할 것이다. 또는, 쓰기 요청된 데이터의 크기는 2개 또는 그 보다 많은 페이지들에 대응하는 데이터 크기일 것이다. 압축률 또는 히트 카운트 값은 페이지 단위를 기준으로 계산되거나, 그 보다 작은 또는 그 보다 큰 단위를 기준으로 계산될 수 있다.
다시 도 6을 참조하면, S200 단계에서, 계산된 압축률 또는 계산된 히트 카운트 값(Chit)에 의거하여 쓰기 요청된 데이터에 대한 압축 여부가 판별될 것이다. 예를 들면, 쓰기 요청된 데이터의 입력이 완료될 때, CPU(2300)(또는, CPU(2300)에 의해서 운용되는 펌웨어)는 압축 블록(2500)의 레지스터에 저장된 히트 카운트 값(Chit)을 참조하여 쓰기 요청된 데이터에 대한 압축 여부를 판별할 것이다. 예시적인 실시예에 있어서, CPU(2300)(또는, CPU(2300)에 의해서 운용되는 펌웨어)는 계산된 히트 카운트 값(Chit)이 목표 압축률을 나타내는 기준값(Cref)보다 큰 지의 여부를 판별할 것이다. 계산된 히트 카운트 값(Chit)이 목표 압축률을 나타내는 기준값(Cref)보다 큰 경우, 방법은 S300 단계로 진행할 것이다. 계산된 히트 카운트 값(Chit)이 목표 압축률을 나타내는 기준값(Cref)보다 작은 경우, 방법은 S400 단계로 진행할 것이다.
S300 단계에서, 버퍼(2400)에 저장된 쓰기 요청된 데이터는 압축 블록(2500)을 통해 압축되며, 압축된 데이터는 메모리 인터페이스 블록(2200)을 통해 저장 매체(1000)에 저장될 것이다. 압축된 데이터에 대한 패리티 정보는 ECC 블록(2700)을 통해 생성될 것이다. 계산된 히트 카운트 값(Chit)이 목표 압축률을 나타내는 기준값(Cref)보다 큰 경우, 쓰기 요청된 데이터는 중복되는 데이터 패턴들을 많이 포함할 것이다. 그러한 까닭에, 쓰기 요청된 데이터의 압축률이 높을 것이다. 즉, 쓰기 요청된 데이터의 압축률이 목표 압축률보다 높을 것이다. 예시적인 실시예에 있어서, 압축 블록(2500)은 버퍼(2400)에 저장된 쓰기 요청된 데이터를 압축하고, 압축된 데이터를 버퍼(2400)에 저장할 것이다. 이러한 압축 동작은 시스템 버스(2001)를 사용하여 행해질 것이다. 즉, 압축 동작이 행해지는 동안 시스템 버스(2001)가 압축 블록(2500)에 의해서 점유될 것이다. 압축 동작이 완료되면, 압축된 데이터는 CPU(2300)의 제어 하에 메모리 인터페이스 블록(2200)을 통해 저장 매체(1000)로 전송될 것이다. 압축된 데이터는 버퍼링없이 직접 저장 매체(1000)로 전송될 수 있다.
S400 단계에서, 버퍼(2400)에 저장된 쓰기 요청된 데이터는 압축 과정없이 메모리 인터페이스 블록(2200)으 통해 저장 매체(1000)에 직접 저장될 것이다. 쓰기 요청된 데이터에 대한 패리티 정보는 ECC 블록(2700)을 통해 생성될 것이다. 계산된 히트 카운트 값(Chit)이 목표 압축률을 나타내는 기준값(Cref)보다 작은 경우, 쓰기 요청된 데이터에 포함되는 중복되는 데이터 패턴들의 수가 적을 것이다. 그러한 까닭에, 쓰기 요청된 데이터의 압축률이 낮을 것이다. 즉, 쓰기 요청된 데이터의 압축률이 목표 압축률보다 낮을 것이다.
도 8 및 도 9는 본 발명의 실시예들에 따른 압축률 계산기의 물리적인 위치를 설명하기 위한 도면들이다.
본 발명에 따른 압축률 계산기(2120)는 쓰기 요청된 데이터의 압축률(또는, 히트 카운트 값)을 실시간으로 계산하도록 하드웨어로 구성될 것이다. 도 8에 도시된 바와 같이, 압축률 계산기(2120)는 호스트 버퍼 매니저(2110)로부터 출력되는 데이터에 의거하여 쓰기 요청된 데이터의 압축률(또는, 히트 카운트 값)을 실시간으로 계산하도록 구성될 수 있다. 또는, 도 9에 도시된 바와 같이, 압축률 계산기(2120)는 호스트 버퍼 매니저(2110)로 제공되는 데이터에 의거하여 쓰기 요청된 데이터의 압축률(또는, 히트 카운트 값)을 실시간으로 계산하도록 구성될 수 있다. 하지만, 압축률 계산기(2120)의 위치가 여기에 개시된 것에 국한되지 않음은 잘 이해될 것이다.
도 10은 본 발명의 다른 실시예에 따른 도 1에 도시된 제어기를 보여주는 블록도이다.
도 10을 참조하면, 본 발명의 다른 실시예에 따른 제어기(3000)는 제 1 인터페이스(3100), 제 2 인터페이스(3200), 처리 유니트로서 CPU(3300), 버퍼(3400), 압축 블록(3500), 그리고 롬(3600)을 포함할 것이다. 도 10에 도시된 구성 요소들(3100∼3500)은 도 2에 도시된 것과 실질적으로 동일하며, 그것에 대한 설명은 그러므로 생략될 것이다. 롬(3600)에는 앞서 설명된 압축률(또는, 히트 카운트 값) 계산 기능을 지원하는 펌웨어(3610)(예를 들면, 메모리 변환 계층)가 저장될 것이다. 롬(3600)에 저장된 펌웨어(3610)는 중앙처리장치(3300)에 의해서 운용될 것이다. 도 10에 도시된 제어기(3000)는 소프트웨어 방식으로 압축률(또는, 히트 카운트 값) 계산 기능이 행해진다는 점을 제외하면 도 2에 도시된 것과 실질적으로 동일하게 동작할 것이다.
도 11은 본 발명의 실시예들에 따른 압축률 계산 기술이 적용되는 반도체 드라이브를 개략적으로 보여주는 블록도이다.
도 11을 참조하면, 반도체 드라이브(4000)(SSD)는 저장 매체(4100)와 제어기(4200)를 포함할 것이다. 저장 매체(4100)는 복수의 채널들을 통해 제어기(4200)와 연결될 것이다. 각 채널에는 복수의 불 휘발성 메모리들이 공통으로 연결될 것이다. 제어기(4200)는 데이터를 압축하고 데이터의 압축을 해제하는 압축 블록(4210)을 포함할 것이다. 압축 블록(4210)의 압축 기능은 도 2 내지 도 9에서 설명된 것과 실질적으로 동일한 방식으로 얻어진 히트 카운트 값에 따라 선택적으로 활성화될 것이다.
도 12는 도 11에 도시된 반도체 드라이브를 이용한 스토리지를 개략적으로 보여주는 블록도이고, 도 13은 도 11에 도시된 반도체 드라이브를 이용한 스트리지 서버를 개략적으로 보여주는 블록도이다.
본 발명의 예시적인 실시예에 따른 반도체 드라이브(4000)는 스토리지를 구성하는 데 사용될 수 있다. 도 12에 도시된 바와 같이, 스토리지는 도 11에서 설명된 것과 실질적으로 동일하게 구성되는 복수의 반도체 드라이브들(4000)을 포함할 것이다. 본 발명의 예시적인 실시예에 따른 반도체 드라이브(4000)는 스토리지 서버를 구성하는 데 사용될 수 있다. 도 13에 도시된 바와 같이, 스토리지 서버는 도 11에서 설명된 것과 실질적으로 동일하게 구성되는 복수의 반도체 드라이브들(4000)과 서버(4000A)를 포함할 것이다. 또한, 이 분야에 잘 알려진 RAID 제어기(4000B)가 스토리지 서버에 제공될 수 있음은 잘 이해될 것이다.
도 14는 본 발명의 다른 실시예에 따른 스토리지를 개략적으로 보여주는 블록도이고, 도 15는 도 14에 도시된 스토리지를 이용한 스트리지 서버를 개략적으로 보여주는 블록도이다.
도 14를 참조하면, 스토리지는 복수의 반도체 드라이브들(5000)과 제어 블록(5000A)을 포함할 것이다. 반도체 드라이브들(5000) 각각은 제어기(5100)와 저장 매체(5200)를 포함할 것이다. 제어기(5100)는 저장 매체(5200)와의 인터페이스 기능을 수행할 것이다. 반도체 드라이브들(5000)은 제어 블록(5000A)에 의해서 제어되며, 제어 블록(5000A)은 앞서 설명된 기능(예를 들면, 압축률/히트 카운트 값 계산 기능)을 수행하도록 구성될 것이다. 도 14에 도시된 스토리지 구성이 스토리지 서버를 구성하는 데 사용될 수 있다. 도 15에 도시된 바와 같이, 스토리지 서버는 도 14에서 설명된 것과 실질적으로 동일하게 구성되는 스토리지(5000, 5000A)와 서버(5000B)를 포함할 것이다. 또한, 이 분야에 잘 알려진 RAID 제어기(5000C)가 스토리지 서버에 제공될 수 있음은 잘 이해될 것이다.
도 16 내지 도 18은 본 발명의 예시적인 실시예들에 따른 데이터 저장 장치가 적용되는 시스템들을 개략적으로 보여주는 도면들이다.
본 발명의 예시적인 실시예들에 따른 데이터 저장 장치를 포함한 반도체 드라이브가 스토리지에 적용되는 경우, 도 16에 도시된 바와 같이, 시스템(6000)은유선 그리고/또는 무선으로 호스트와 통신하는 스토리지(6100)를 포함할 것이다. 본 발명의 예시적인 실시예들에 따른 데이터 저장 장치를 포함한 반도체 드라이브가 스토리지 서버에 적용되는 경우, 도 17에 도시된 바와 같이, 시스템(7000)은 유선 그리고/또는 무선으로 호스트와 통신하는 스토리지 서버들(7100, 7200)을 포함할 것이다. 또한, 도 18에 도시된 바와 같이, 본 발명의 예시적인 실시예에 따른 데이터 저장 장치를 포함한 반도체 드라이브는 메일 서버(8100)에도 적용될 수 있다.
불 휘발성 메모리 장치로서, 플래시 메모리 장치는 전력이 차단되어도 저장된 데이터를 유지할 수 있는 불 휘발성 메모리 장치이다. 셀룰러 폰, PDA 디지털 카메라, 포터블 게임 콘솔, 그리고 MP3P와 같은 모바일 장치들의 사용 증가에 따라, 플래시 메모리 장치는 데이터 스토리지 뿐만 아니라 코드 스토리지로서 보다 널리 사용된다. 플래시 메모리 장치는, 또한, HDTV, DVD, 라우터, 그리고 GPS와 같은 홈 어플리케이션에 사용될 수 있다.
도 19는 본 발명의 실시예에 따른 데이터 저장 장치를 포함한 컴퓨팅 시스템을 개략적으로 보여주는 블록도이다.
본 발명에 따른 컴퓨팅 시스템은 마이크로프로세서(9100), 사용자 인터페이스(9200), 베이스밴드 칩셋(baseband chipset)과 같은 모뎀(9300), 메모리 제어기(9400), 그리고 저장 매체(9500)를 포함한다. 메모리 제어기(9400) 및 저장 매체(9500)는 데이터 저장 장치를 구성하며, 도 1에 도시된 것과 실질적으로 동일하게 구성될 것이다. 저장 매체(9500)에는 마이크로프로세서(9100)에 의해서 처리된/처리될 N-비트 데이터(N은 1 또는 그 보다 큰 정수)가 메모리 제어기(9400)를 통해 저장될 것이다. 본 발명에 따른 컴퓨팅 시스템이 모바일 장치인 경우, 컴퓨팅 시스템의 동작 전압을 공급하기 위한 배터리(9600)가 추가적으로 제공될 것이다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 컴퓨팅 시스템에는 응용 칩셋(application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다. 메모리 제어기와 플래시 메모리 장치는, 예를 들면, 데이터를 저장하는 데 불 휘발성 메모리를 사용하는 반도체 드라이브/디스크(Solid State Drive/Disk: SSD)를 구성할 수 있다.
예시적인 실시예에 있어서, 제어기의 압축 블록(2500)은 아래의 압축 알고리즘들 중 하나 또는 그 보다 많은 압축 알고리즘들의 조합을 포함할 것이다. 압축 알고리즘들은 LZ77&LZ78, LZW, Entropy encoding, Huffman coding, Adpative Huffman coding, Arithmetic coding, DEFLATE, JPEG, 등을 포함할 것이다.
예시적인 실시예에 있어서, 제어기의 호스트 인터페이스 블록(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. 삭제
  3. 삭제
  4. 제 1 항에 있어서,
    상기 압축률 계산기는 상기 호스트 버퍼 매니저로 전송되는 데이터 또는 상기 호스트 버퍼 매니저로부터 출력되는 데이터에 기초하여 상기 입력 데이터의 상기 압축률을 계산하도록 구성되는 메모리 제어기.
  5. 제 1 항에 있어서,
    상기 압축률 계산기는 상기 계산의 결과를 저장하도록 구성되는 레지스터를 포함하는 메모리 제어기.
  6. 제 5 항에 있어서,
    상기 입력 데이터를 임시로 저장하도록 구성되는 버퍼 메모리; 및
    상기 버퍼 메모리로의 데이터 전송이 종료될 때 상기 레지스터에 저장된 상기 계산의 상기 결과를 참조하여 상기 압축 블록의 압축 동작을 제어하도록 구성되는 중앙 처리 장치를 더 포함하는 메모리 제어기.
  7. 제 6 항에 있어서,
    상기 압축률 계산기가 상기 입력 데이터의 상기 압축률이 상기 기준 압축률을 초과하는 것으로 계산한 경우, 상기 중앙 처리 장치는 상기 입력 데이터가 압축되도록 상기 압축 블록의 상기 압축 동작을 활성화시키는 메모리 제어기.
  8. 제 6 항에 있어서,
    상기 압축률 계산기가 상기 입력 데이터의 상기 압축률이 상기 기준 압축률을 초과하지 않는 것으로 계산한 경우, 상기 중앙 처리 장치는 상기 입력 데이터가 압축 없이 저장 매체에 저장되도록 상기 압축 블록의 상기 압축 동작을 비활성화시키는 메모리 제어기.
  9. 제 1 항에 있어서,
    상기 압축률 계산기는:
    각각이 소정 단위를 갖는 상기 입력 데이터의 상기 일부분들을 입력받고, 상기 입력받은 일부분들에 각각 대응하는 상기 해쉬키 값들을 발생하도록 구성되는 해쉬키 발생 유니트; 및
    상기 해쉬키 값들에 기초하여 상기 입력 데이터의 중복성 레벨을 검출하도록 구성되는 중복성 검출기를 포함하는 메모리 제어기.
  10. 제 9 항에 있어서,
    상기 중복성 검출기는:
    상기 해쉬키 값들에 각각 대응하고, 각각에 대응하는 해쉬키 값이 생성되었는지 여부를 나타내는 플래그 비트들을 각각 저장하는 엔트리들로 구성되는 해쉬 테이블;
    상기 해쉬키 발생 유니트로부터 제공되는 해쉬키 값에 대응하는 엔트리의 플래그 비트를 설정하고, 상기 엔트리들의 값들에 기초하여 현재 입력되는 해쉬키 값이 이전에 생성되었는지 여부를 판별하도록 구성되는 제어 로직; 및
    상기 제어 로직의 제어에 응답하여 상기 히트 카운트 값을 계산하도록 구성되는 카운터를 포함하되,
    상기 현재 입력되는 해쉬키 값이 이전에 생성된 것으로 판별되는 경우, 상기 제어 로직은 상기 히트 카운트 값이 증가하도록 상기 카운터를 제어하는 메모리 제어기.
KR1020120002554A 2012-01-09 2012-01-09 데이터 압축 기능을 갖는 데이터 저장 장치 KR101862341B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120002554A KR101862341B1 (ko) 2012-01-09 2012-01-09 데이터 압축 기능을 갖는 데이터 저장 장치
US13/617,786 US8954693B2 (en) 2012-01-09 2012-09-14 Data storage device with selective data compression

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120002554A KR101862341B1 (ko) 2012-01-09 2012-01-09 데이터 압축 기능을 갖는 데이터 저장 장치

Publications (2)

Publication Number Publication Date
KR20130081532A KR20130081532A (ko) 2013-07-17
KR101862341B1 true KR101862341B1 (ko) 2018-05-30

Family

ID=48744778

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120002554A KR101862341B1 (ko) 2012-01-09 2012-01-09 데이터 압축 기능을 갖는 데이터 저장 장치

Country Status (2)

Country Link
US (1) US8954693B2 (ko)
KR (1) KR101862341B1 (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9355613B2 (en) * 2012-10-09 2016-05-31 Mediatek Inc. Data processing apparatus for transmitting/receiving compression-related indication information via display interface and related data processing method
US9053121B2 (en) 2013-01-10 2015-06-09 International Business Machines Corporation Real-time identification of data candidates for classification based compression
US9792350B2 (en) 2013-01-10 2017-10-17 International Business Machines Corporation Real-time classification of data into data compression domains
US9564918B2 (en) * 2013-01-10 2017-02-07 International Business Machines Corporation Real-time reduction of CPU overhead for data compression
KR102114388B1 (ko) 2013-10-18 2020-06-05 삼성전자주식회사 전자 장치의 메모리 압축 방법 및 장치
EP3063622A4 (en) * 2013-10-30 2017-07-05 Intel Corporation Platform non-volatile store management and platform configuration
KR101468336B1 (ko) * 2013-11-25 2014-12-04 성균관대학교산학협력단 데이터 압축률 예측 기법에 기반한 데이터 분산 저장 방법, 이를 이용한 저장 장치 및 시스템
KR101398072B1 (ko) * 2014-02-13 2014-05-27 한국기계연구원 액티브 빈을 이용한 풍력 발전기 상태 감시 시스템의 측정 데이터 축약 방법
TWI540582B (zh) * 2014-07-10 2016-07-01 群聯電子股份有限公司 資料管理方法、記憶體控制電路單元以及記憶體儲存裝置
US9710199B2 (en) 2014-11-07 2017-07-18 International Business Machines Corporation Non-volatile memory data storage with low read amplification
US10162700B2 (en) 2014-12-23 2018-12-25 International Business Machines Corporation Workload-adaptive data packing algorithm
US9916338B2 (en) 2015-04-24 2018-03-13 International Business Machines Corporation Managing data records
US9916320B2 (en) * 2015-04-26 2018-03-13 International Business Machines Corporation Compression-based filtering for deduplication
KR102535825B1 (ko) * 2015-06-03 2023-05-23 삼성전자주식회사 시스템 온 칩 및 시스템 온 칩의 동작 방법
US9552384B2 (en) * 2015-06-19 2017-01-24 HGST Netherlands B.V. Apparatus and method for single pass entropy detection on data transfer
US9712190B2 (en) 2015-09-24 2017-07-18 International Business Machines Corporation Data packing for compression-enabled storage systems
US10275186B2 (en) * 2015-10-30 2019-04-30 Sandisk Technologies Llc System and method of data compression and data shaping
US9870285B2 (en) 2015-11-18 2018-01-16 International Business Machines Corporation Selectively de-straddling data pages in non-volatile memory
CN105389283A (zh) * 2015-12-11 2016-03-09 中国航空工业集团公司西安航空计算技术研究所 一种基于CoreConnect总线的电子盘控制器电路及控制方法
US10019372B2 (en) * 2015-12-16 2018-07-10 Western Digital Technologies, Inc. Caching sensing device data in data storage device
US10013170B1 (en) * 2016-03-31 2018-07-03 EMC IP Holding Company LLC Intelligent data compression
US10592170B2 (en) 2017-01-25 2020-03-17 International Business Machines Corporation Optimizing dual-layered compression in storage systems
KR102490191B1 (ko) * 2018-03-05 2023-01-18 삼성전자주식회사 데이터 스토리지 장치 및 이를 포함하는 raid 시스템
KR102267477B1 (ko) 2020-02-20 2021-06-22 삼성전자주식회사 스토리지 장치 및 이의 동작 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110320915A1 (en) * 2010-06-29 2011-12-29 Khan Jawad B Method and system to improve the performance and/or reliability of a solid-state drive

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3273119B2 (ja) 1995-09-29 2002-04-08 京セラ株式会社 データ圧縮・伸長装置
JPH10200415A (ja) 1997-01-10 1998-07-31 Ricoh Co Ltd データ圧縮方法及びデータ圧縮/伸長装置
KR100516701B1 (ko) 2003-06-30 2005-09-22 주식회사 대우일렉트로닉스 데이터 압축 장치 및 방법
US20080288436A1 (en) 2007-05-15 2008-11-20 Harsha Priya N V Data pattern matching to reduce number of write operations to improve flash life
KR101599834B1 (ko) * 2009-05-28 2016-03-04 삼성전자주식회사 메모리 컨트롤러 및 그것을 포함하는 메모리 시스템
KR101049699B1 (ko) 2009-07-17 2011-07-15 (주)이스트소프트 데이터의 압축방법
US8489832B1 (en) * 2009-12-10 2013-07-16 Guidance-Tableau, Llc System and method for duplicating electronically stored data
US9134918B2 (en) 2009-12-31 2015-09-15 Sandisk Technologies Inc. Physical compression of data with flat or systematic pattern
US8463797B2 (en) * 2010-07-20 2013-06-11 Barracuda Networks Inc. Method for measuring similarity of diverse binary objects comprising bit patterns
JP5712609B2 (ja) * 2010-12-24 2015-05-07 富士通株式会社 データ処理装置及びデータ記録方法
US8725933B2 (en) * 2011-07-01 2014-05-13 Intel Corporation Method to detect uncompressible data in mass storage device

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110320915A1 (en) * 2010-06-29 2011-12-29 Khan Jawad B Method and system to improve the performance and/or reliability of a solid-state drive

Also Published As

Publication number Publication date
KR20130081532A (ko) 2013-07-17
US8954693B2 (en) 2015-02-10
US20130179659A1 (en) 2013-07-11

Similar Documents

Publication Publication Date Title
KR101862341B1 (ko) 데이터 압축 기능을 갖는 데이터 저장 장치
US10642522B2 (en) Method and system for in-line deduplication in a storage drive based on a non-collision hash
KR101643273B1 (ko) 저장 매체에 데이터를 저장하는 방법, 그를 이용한 데이터 저장 장치, 및 그것을 포함한 시스템
JP6606039B2 (ja) メモリシステムおよび制御方法
KR101912596B1 (ko) 리던던트 어레이들을 통한 비휘발성 메모리 프로그램 실패 복구
KR101636785B1 (ko) 독립 실리콘 소자들을 갖는 동적 상위 레벨 리던던시 모드 관리
JP6265746B2 (ja) 記憶アドレス空間と不揮発性メモリのアドレス、範囲、および長さとの間のマッピング/変換
KR101732030B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
JP6284351B2 (ja) メモリ制御器及びそれを含むメモリシステム
CN110832590A (zh) 在基于相变存储器的存储设备中减轻写入放大的方法和系统
KR101649357B1 (ko) 데이터 저장 장치, 그것의 동작 방법, 그리고 그것을 포함한 스토리지 서버
KR20120115012A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20110138076A (ko) 데이터 저장 장치 및 그것의 쓰기 방법
KR20180031572A (ko) 메모리 장치의 동작 방법, 이를 이용한 메모리 장치 및 그 장치를 포함하는 메모리 시스템
US20110252007A1 (en) Method of storing data in storage media, data storage device using the same, and system including the same
US11756643B2 (en) Apparatus and method for correcting an error in data transmission of a data processing system
US9430375B2 (en) Techniques for storing data in bandwidth optimized or coding rate optimized code words based on data access frequency
US11385833B2 (en) Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
US20120144148A1 (en) Method and device of judging compressed data and data storage device including the same
US20120102277A1 (en) Data storage device and write method thereof
US11442811B1 (en) Apparatus and method for using an error correction code in a memory system
Zuolo et al. Memory driven design methodologies for optimal SSD performance
KR20190076589A (ko) 플래시 메모리 컨트롤러의 에러 정정 방법
KR20160107381A (ko) 데이터 저장 장치 및 그것의 동작 방법

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