KR20150133530A - 스토리지 시스템 - Google Patents

스토리지 시스템 Download PDF

Info

Publication number
KR20150133530A
KR20150133530A KR1020140060436A KR20140060436A KR20150133530A KR 20150133530 A KR20150133530 A KR 20150133530A KR 1020140060436 A KR1020140060436 A KR 1020140060436A KR 20140060436 A KR20140060436 A KR 20140060436A KR 20150133530 A KR20150133530 A KR 20150133530A
Authority
KR
South Korea
Prior art keywords
data
unit
signature
storage
mapping table
Prior art date
Application number
KR1020140060436A
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 KR1020140060436A priority Critical patent/KR20150133530A/ko
Priority to US14/713,013 priority patent/US20150339060A1/en
Publication of KR20150133530A publication Critical patent/KR20150133530A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer Security & Cryptography (AREA)

Abstract

스토리지 시스템이 제공된다. 스토리지 시스템은, 클라이언트로부터 데이터를 제공받는 컨트롤부, 및 상기 데이터를 저장하는 저장 장치를 포함하되, 상기 컨트롤부는, 상기 데이터의 중복 여부를 판단하여 중복 정보를 생성하는 중복 제거부를 포함하고, 상기 저장 장치는, 상기 데이터의 LBA(Logical Block Address)와 PBA(Physical Block Address) 사이의 변환 정보 및 상기 중복 정보를 포함하는 맵핑 테이블을 포함한다.

Description

스토리지 시스템{Storage System}
본 발명은 스토리지 시스템에 관한 것이다.
중복 제거(deduplication)는 동일한 데이터를 중복해서 저장하지 않고 링크값으로 관리 운영함으로써 중복된 데이터를 효율적으로 관리할 수 있게 하는 기술로서 스토리지 사용 효율(storage utilization)을 향상시키고 네트워크 등으로 전송되는 데이터를 줄일 수 있어 대용량 데이터를 위한 스토리지 시스템에 필요하다.
중복 제거를 수행하면, 중복 제거된 결과에 대한 맵핑 테이블(mapping table)을 작성해야 한다. 그런데 이를 별도로 관리하면 맵핑 테이블의 크기가 커지기 때문에, 스토리지 시스템을 효율적으로 관리할 수 없다.
본 발명이 해결하고자 하는 기술적 과제는, 중복 제거 결과에 대한 정보를 기존의 LBA(Logical Block Address)와 PBA(Physical Block Address) 사이의 변환 정보를 포함하는 맵핑 테이블에 통합하여 스토리지 시스템의 용량을 적게 사용하면서 효율적으로 관리할 수 있는 스토리지 시스템을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 스토리지 시스템은, 클라이언트로부터 데이터를 제공받는 컨트롤부, 및 상기 데이터를 저장하는 저장 장치를 포함하되, 상기 컨트롤부는, 상기 데이터의 중복 여부를 판단하여 중복 정보를 생성하는 중복 제거부를 포함하고, 상기 저장 장치는, 상기 데이터의 LBA(Logical Block Address)와 PBA(Physical Block Address) 사이의 변환 정보 및 상기 중복 정보를 포함하는 맵핑 테이블을 포함한다.
상기 저장 장치는, 컨트롤부와, 메모리부와, 상기 데이터를 저장하는 스토리지부를 포함하되, 상기 메모리부는 상기 맵핑 테이블을 포함할 수 있다.
상기 컨트롤부는, 상기 데이터를 청킹하여 복수개의 블록 단위 데이터를 생성하는 청킹부와, 상기 복수개의 블록 단위 데이터 각각의 시그니처(signature)를 생성하는 시그니처 생성부와, 상기 시그니처를 관리하는 시그니처 관리부를 더 포함하고, 상기 중복 제거부는 상기 시그니처를 비교하여 상기 중복 여부를 판단할 수 있다.
상기 시그니처는 상기 복수개의 블록 단위 데이터 각각의 해시값(hash value)을 포함할 수 있다.
상기 맵핑 테이블은 상기 데이터의 중복 여부를 판단할 때마다 업데이트될 수 있다.
상기 저장 장치와 상기 맵핑 테이블은 복수개이고, 상기 저장 장치 각각은 상기 맵핑 테이블을 하나씩 포함할 수 있다.
상기 맵핑 테이블 각각은, 상기 맵핑 테이블을 포함하는 상기 저장 장치의 PBA에 대한 LBA와 PBA 사이의 변환 정보를 포함할 수 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 다른 실시예에 따른 스토리지 시스템은, 제1 데이터를 저장하는 저장 장치, 및 클라이언트로부터 제공받은 제2 데이터를 상기 제1 데이터와 비교하여 중복 여부를 판단하고, 상기 중복 여부에 대한 중복 정보를 생성하는 컨트롤부를 포함하되, 상기 저장 장치는 상기 제1 데이터의 LBA와 PBA 사이의 변환 정보, 상기 제2 데이터의 LBA와 PBA 사이의 변환 정보, 및 상기 중복 정보를 포함하는 맵핑 테이블을 포함한다.
상기 제1 데이터와 상기 제2 데이터가 동일한 경우, 상기 맵핑 테이블에서, 상기 제1 데이터의 PBA와 상기 제2 데이터의 PBA는 동일할 수 있다.
상기 저장 장치는, 컨트롤부와, 메모리부와, 스토리지부를 포함하되, 상기 메모리부는 상기 맵핑 테이블을 포함할 수 있다.
상기 제1 데이터와 상기 제2 데이터가 서로 중복이 아닌 경우, 상기 제2 데이터는 상기 스토리지부에 저장되고, 상기 제1 데이터와 상기 제2 데이터가 중복이면, 상기 제2 데이터는 상기 스토리지부에 저장되지 않을 수 있다.
상기 컨트롤부는, 상기 제1 데이터를 청킹하여 제1 블록 단위 데이터를 생성하고, 상기 제1 블록 단위 데이터에 대한 제1 시그니처를 생성하고, 상기 제2 데이터를 청킹하여 제2 블록 단위 데이터를 생성하고, 상기 제2 블록 단위 데이터에 대한 제2 시그니처를 생성하고, 상기 제1 시그니처와 상기 제2 시그니처를 비교하여 상기 중복 여부를 판단할 수 있다.
상기 중복 정보는 제1 및 제2 참조값을 포함하고, 상기 컨트롤부는 상기 맵핑 테이블의 상기 제1 데이터에 제1 참조값을 기록하고, 상기 제2 데이터가 상기 제1 데이터와 중복이면 상기 맵핑 테이블의 상기 제2 데이터에 제2 참조값을 기록할 수 있다.
상기 제2 데이터가 상기 제1 데이터와 중복이면, 상기 맵핑 테이블의 상기 제1 데이터에 기록된 제1 참조값은 제3 참조값으로 바뀔 수 있다.
상기 제2 데이터가 상기 제1 데이터와 중복이 아니면, 상기 맵핑 테이블의 상기 제2 데이터에 상기 제1 참조값을 기록할 수 있다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 일 실시예에 따른 스토리지 시스템의 대략적인 블록도이다.
도 2는 컨트롤부 및 저장 장치의 동작 방법에 대한 순서도이다.
도 3 및 도 4는 컨트롤부 및 저장 장치의 동작 방법을 설명하기 위한 도면이다.
도 5는 본 발명의 다른 실시예에 따른 스토리지 시스템의 대략적인 블록도이다.
도 6은 본 발명의 일 실시예에 따른 비휘발성 메모리 장치를 포함하는 전자 장치의 블록도를 나타낸다.
도 7은 본 발명의 다른 실시예에 따른 비휘발성 메모리 장치를 포함하는 전자 장치의 블록도를 나타낸다.
도 8은 본 발명의 또다른 실시예에 따른 비휘발성 메모리 장치를 포함하는 전자 장치의 블록도를 나타낸다.
도 9는 본 발명의 또다른 실시예에 따른 비휘발성 메모리 장치를 포함하는 전자 장치의 블록도를 나타낸다.
도 10은 본 발명의 또다른 실시예에 따른 비휘발성 메모리 장치를 포함하는 전자 장치의 블록도를 나타낸다.
도 11은 본 발명의 또다른 실시예에 따른 비휘발성 메모리 장치를 포함하는 전자 장치의 블록도를 나타낸다.
도 12는 본 발명의 또다른 실시예에 따른 비휘발성 메모리 장치를 포함하는 전자 장치의 블록도를 나타낸다.
도 13은 도 12에 도시된 전자 장치를 포함하는 데이터 처리 시스템의 블록도를 나타낸다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 도면에서 표시된 구성요소의 크기 및 상대적인 크기는 설명의 명료성을 위해 과장된 것일 수 있다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭하며, "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소 외에 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다.
비록 제1, 제2 등이 다양한 소자나 구성요소들을 서술하기 위해서 사용되나, 이들 소자나 구성요소들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 소자나 구성요소를 다른 소자나 구성요소와 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 소자나 구성요소는 본 발명의 기술적 사상 내에서 제2 소자나 구성요소 일 수도 있음은 물론이다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
본 실시예에서 사용되는 사용되는 '부' 또는 '모듈'이라는 용어는 소프트웨어 또는 FPGA또는 ASIC과 같은 하드웨어 구성요소를 의미하며, '부' 또는 '모듈'은 어떤 역할들을 수행한다. 그렇지만 '부' 또는 '모듈'은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '부' 또는 '모듈'은 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '부' 또는 '모듈'은 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함할 수 있다. 구성요소들과 '부' 또는 '모듈'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '부' 또는 '모듈'들로 결합되거나 추가적인 구성요소들과 '부' 또는 '모듈'들로 더 분리될 수 있다.
도 1을 참조하여 본 발명의 일 실시예에 따른 스토리지 시스템(100)에 대해 설명하기로 한다.
도 1은 본 발명의 일 실시예에 따른 스토리지 시스템(100)의 대략적인 블록도이다.
도 1을 참조하면, 스토리지 시스템(100)은 컨트롤부(110)와 저장 장치(120)를 포함한다.
컨트롤부(110)는 클라이언트(10)로부터 데이터 입출력에 대한 요청을 받아 저장 장치(140)에 데이터를 라이트(WRITE)하거나 기저장된 데이터를 리드(READ)할 수 있다.
컨트롤부(110)는 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI) 등을 이용하여 저장 장치(140)와 통신할 수 있다.
컨트롤부(110)는 중복 제거(deduplication)를 수행할 수 있다. 구체적으로, 컨트롤부(110)는 클라이언트(10)로부터 제공받은 데이터를 저장 장치(140)에 기 저장된 데이터와 비교하여 중복 여부를 판단하고, 중복 여부에 대한 중복(duplication) 정보를 생성할 수 있다. 생성된 중복 정보는 저장 장치(140)로 전송될 수 있고, 저장 장치(140)는 중복 정보를 저장하고, 이를 캐시(cache), 웨어 레벨링(wear leveling) 등의 데이터 배치(data placement)에 활용할 수 있다.
컨트롤부(110)에서 중복 제거(deduplication)를 수행함으로써, 중복 제거의 효율을 높이고, File-level, Application-level 등 높은 차원의 중복 제거를 수행하는 것이 가능하다. 또한, 컨트롤부(110)가 중복 정보를 저장 장치(140)에 제공함으로써, 저장 장치(130)는 이를 데이터 배치(data placement)에 활용할 수 있다.
컨트롤부(110)는 파일 시스템(120), 블록 레이어(130)를 포함할 수 있다. 그리고, 블록 레이어(130)는 블록 인터페이스(131), 청킹부(132), 시그니처(signature) 생성부(133), 시그니처 관리부(134), 중복 제거부(135)를 포함할 수 있다.
파일 시스템(120)은 클라이언트(10)로부터 제공받은 데이터에 LBA(Logical Block Address)를 링크한다.
블록 레이어(130)는 파일 시스템(120)으로부터 LBA가 링크된 데이터를 받아 중복 제거 동작을 수행한다. 구체적으로, 블록 인터페이스(131)는 파일 시스템(120)으로부터 LBA가 링크된 데이터를 송수신할 수 있다. 블록 인터페이스(131)는 데이터 입출력을 지원하는 데이터 송수신 방식을 의미할 수 있으며, 예를 들어, ATA(AT attachment), IDE(Integrated Drive Electronics), SATA(Serial ATA), NVMe(Non Volatile Memory express) 등의 방식일 수 있다.
청킹부(132)는 클라이언트(10)로부터 제공받은 데이터(저장 요청 데이터)에 대해 저장 요청을 받은 경우, 저장 요청 데이터를 청킹(chunking)하여 복수개의 블록 단위 데이터를 생성할 수 있다. 예를 들면, 청킹부(132)는 저장 요청 데이터를 고정 길이로 청킹(fixed length chunking)하거나 가변 길이로 청킹(variable length chunking)할 수 있다. 또한, 청킹부(132)는 필요에 따라 작은 크기의 데이터들을 모아 좀더 큰 블록 단위 데이터로 만드는 것도 가능하다. 청킹부(132)는 예를 들어, 512byte, 4Kbyte 등으로 데이터를 청킹할 수 있다.
시그니처 생성부(133)는 청킹부(132)에 의행 청킹된 복수개의 블록 단위 데이터 각각에 대하여 시그니처를 생성한다. 시그니처는 예를 들어, 해시값(hash value)일 수 있다. 시그니처가 해시값이면, 시그니처 생성부(133)는 해시 알고리즘 또는 해시 함수 등을 이용하여 저장 요청 데이터의 해시값을 산출할 수 있다. 예를 들면, 시그니처 생성부(133)는 GOST, HAVAL, MD2, MD4, MD5, PANAMA, RadioGatu′n, RIPEMD, RIPEMD-128/256, RIPEMD-160, RIPEMD-320, SHA-0, SHA-1, SHA-256/224, SHA-512/384, SHA-3, WHIRLPOOL 등을 이용하여 저장 요청 데이터의 해시값을 산출할 수 있다.
또는, 시그니처 생성부(133)는 크립토그래픽 해시(cryptographic hash) 방식이 아닌 유사도 기반의 해시(similarity based hash)를 사용하여 해시값을 산출할 수 있다.
시그니처 관리부(134)는 시그니처 생성부(133)에서 생성한 시그니처를 시그니처 테이블의 형태로 저장할 수 잇다. 따라서, 시그니처 관리부(134)에는 저장 요청 데이터의 시그니처뿐만 아니라, 저장 장치(140)에 이미 저장된 데이터의 시그니처도 저장되어 있다.
중복 제거부(135)는 데이터의 중복 여부를 판단하여 중복 정보를 생성한다. 중복 제거부(135)는 클라이언트(10)로부터 저장 요청 받은 데이터와 저장 장치(140)에 기 저장된 데이터를 직접 비교하여 중복 여부를 판단할 수 있다. 또는, 블록 단위로 중복 여부를 판단하는 경우, 중복 제거부(135)는 데이터의 시그니처끼리 비교하여 중복 여부를 판단할 수 있다. 예를 들어, 중복 제거부(135)는 저장 요청 데이터의 산출된 시그니처와 동일한 시그니처가 시그니처 관리부(134)에 존재하는 경우 저장 요청 데이터는 중복된 데이터라고 판단하고, 산출된 시그니처와 동일한 시그니처가 존재하지 않는 경우 저장 요청 데이터는 중복된 데이터가 아니라고 판단할 수 있다.
저장 장치(140)는 저장 요청 데이터를 저장할 수 있으며, SSD(Solid State Drive 또는 Solid State Disk)로 구현될 수 있다. 이는 본 발명이 적용되는 일 실시예로서, 저장 장치(140)는 SSD에만 국한되지 않고 다양한 형태로 구현이 가능하다. 예를 들면, 저장 장치(140)는 하나의 반도체 장치로 집적되어, PC 카드(PCMCIA, Personal Computer Memory Card International Association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC 등), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro 등), SD 카드(SD, miniSD, microSD, SDHC 등), 유니버설 플래시 기억장치(UFS) 등으로 구현될 수도 있다.
저장 장치(140)는 컨트롤부(110)로부터 데이터를 입출력할 수 있으며, 컨트롤부(150), 메모리부(160), 스토리지부(170)를 포함할 수 있다.
컨트롤부(150)는 메모리부(160) 및 스토리지부(170)에 연결될 수 있다. 컨트롤부(150)는 컨트롤부(110)와 저장 장치(140) 간의 데이터 송수신을 관리하고, 스토리지부(170)와 컨트롤부(110) 간의 데이터 송수신을 중계 한다. 즉, 컨트롤부(150)는 컨트롤부(110)로부터 데이터의 입출력을 요청받고 이에 따라 스토리지부(170)를 제어할 수 있다.
메모리부(160)는 맵핑 테이블(161)을 포함할 수 있다. 맵핑 테이블(161)은 LBA(Logical Block Address)와 PBA(Physical Block Address) 사이의 변환 정보(162)와 중복 정보(163)를 포함할 수 있다. LBA와 PBA 사이의 변환 정보(162)는 컨트롤부(110)로부터 수신된 LBA를 스토리지부(170)의 PBA에 링크하는 경우, LBA와 PBA의 어떻게 대응되는지에 대한 정보를 포함할 수 있다. 중복 정보(163)는 컨트롤부(110)의 중복 제거부(135)로부터 받을 수 있다. 즉, 중복 제거부(135)가 생성한 중복 정보(163)는 중복 제거부(135)에 저장되지 않으며, 메모리부(160)에 저장된다.
맵핑 테이블(161)은 컨트롤부(110)에서 데이터의 중복 여부를 판단할 때마다 업데이트될 수 있다.
메모리부(160)는 DRAM일 수 있다. 다른 예에서, 메모리부(160)는 SRAM일 수 있다. 도 1에는 메모리부(160)가 컨트롤부(150)의 외부에 위치한 예가 도시되어 있으나, 실시예에 따라 메모리부(160)가 컨트롤부(150)의 내부에 위치할 수 있다.
스토리지부(170)는 컨트롤부(110)로부터 제공된 데이터를 저장할 수 있다. 스토리지부(170)는 예를 들어, NAND-FLASH, NOR-FLASH, PRAM, FRAM, RRAM, MRAM, 하드디스크, SSD(Solid State Drive)를 포함할 수 있으며, 전원 공급이 되지 않더라도 데이터가 유지 되는 저장 매체로 구성 되는 모든 저장 수단을 의미할 수 있다.
도 1 내지 도 4를 참조하여 도 1의 스토리지 시스템(100)의 동작 방법을 설명하기로 한다.
도 2는 컨트롤부(110) 및 저장 장치(140)의 동작 방법에 대한 순서도이고, 도 3 및 도 4는 컨트롤부(110) 및 저장 장치(140)의 동작 방법을 설명하기 위한 도면이다.
도 2 및 도 3을 참조하면, 먼저, 클라이언트(10)로부터 제1 파일(File 1), 즉 제1 데이터 “abcd”의 쓰기 요청(①)을 컨트롤부(110)가 받으면, 파일 시스템(120)은 제1 데이터 “abcd”에 LBA를 링크한다(S100). 그리고, 링크된 내용은 LBA 맵핑 테이블(129)에 저장한다. LBA 맵핑 테이블(129)은 파일 시스템(120)에 포함되고, 파일 시스템(120)에서 관리한다. 도 2에서는 예시적으로 제1 데이터 “abcd”에 LBA ‘100’이 링크된 것으로 도시하였다.
이어서, 블록 레이어(130)는 제1 데이터 “abcd”에 대하여 중복 여부를 판단(②)한다(S200). 이러한 판단은 특히, 중복 제거부(135)에서 수행될 수 있다. 이 때, 도 1에서 설명한 것과 같이 제1 데이터 “abcd”를 제1 블록 단위 데이터로 분리하고, 제1 블록 단위 데이터 각각의 제1 시그니처를 생성하고, 제1 시그니처를 이용하여 제1 데이터 “abcd”의 중복 여부를 판단할 수 있다. 중복 여부를 판단하면, 이에 대한 중복 정보(163)가 생성된다.
컨트롤부(110)는 제1 데이터 “abcd”가 중복 데이터가 아니라고 판단되면, 저장 장치(140)에 제1 데이터 “abcd”를 전송하고 라이트(③)할 것을 요청한다(S300). 저장 장치(140)는 맵핑 테이블(161)에 제1 데이터 “abcd”의 LBA와 PBA 사이의 변환 정보(162)를 기록하고, 중복 정보(163)를 기록한다(S400). 도 3에서는 예시적으로 제1 데이터 “abcd”에 PBA ‘10’이 링크되는 것으로 도시하였다. 맵핑 테이블(161)에는 PBA ‘10’이 LBA ‘100’에 링크된다는 것과, 제1 데이터 “abcd”의 중복 정보(163)가 기록된다.
중복 정보(163)는 제1 내지 제3 참조값을 포함할 수 있다. 예를 들어, 제1 참조값은 저장 요청 데이터가 중복 데이터가 아니라는 것을 나타내고, 제2 참조값은 저장 요청된 데이터가 중복 데이터라는 것을 나타낸다. 제3 참조값은 스토리지부(170)에 저장된 데이터가 복수번 인용되었다는 것을 나타낸다. 도 2에서, 제1 데이터 “abcd”는 중복 데이터가 아니므로, 제1 참조값(“1”)이 맵핑 테이블(161)의 제1 데이터 “abcd”에 기록된다.
맵핑 테이블(161)의 기록이 끝나면 제1 데이터 “abcd”는 PBA ‘10’에 해당하는 스토리지부(170)에 저장된다.
이어서, 컨트롤부(110)가 제2 파일(File 2), 즉 제2 데이터 “abcd”의 쓰기 요청(④)을 받으면(S100), 파일 시스템(120)은 제2 데이터 “abcd”에 LBA를 링크한다. 그리고, 링크된 내용은 LBA 맵핑 테이블(129)에 저장된다. 도 2에서는 예시적으로 제2 데이터 “abcd”에 LBA ‘200’이 링크된 것으로 도시하였다.
이어서, 블록 레이어(130)에서 제2 데이터 “abcd”에 대하여 중복 여부를 판단(⑤)한다(S200). 이 때, 도 1에서 설명한 것과 같이 제2 데이터 “abcd”를 제2 블록 단위 데이터로 분리하고, 제2 블록 단위 데이터 각각의 제2 시그니처 생성하고, 제2 시그니처를 제1 시그니처와 비교하여 제2 데이터 “abcd”가 제1 데이터 “abcd”와 중복인지 여부를 판단할 수 있다. 중복 여부를 판단하면, 이에 대한 중복 정보(163)가 생성된다. 제1 데이터 “abcd”와 제2 데이터 “abcd”는 동일하므로 제2 데이터 “abcd”는 중복 데이터이다.
컨트롤부(110)는 제2 데이터 “abcd”가 중복 데이터라고 판단되면, 저장 장치(140)에 제2 데이터 “abcd”를 전송하지 않는다. 따라서, 제2 데이터 “abcd”는 저장 장치(140)에 저장되지 않는다. 대신에, 맵핑 테이블(161)이 업데이트(⑥)된다. 맵핑 테이블(161)에 제2 데이터 “abcd”의 LBA와 PBA 사이의 변환 정보(162)를 기록하고, 중복 정보(163)를 기록한다(S400). 제2 데이터 “abcd”는 제1 데이터 “abcd”와 동일하므로 제1 데이터 “abcd”의 PBA ‘10’이 제2 데이터 “abcd”의 PBA로 기록된다. 그리고, 제2 데이터 “abcd”는 중복 데이터이므로 맵핑 테이블(161)의 제2 데이터 “abcd”에 참조값(“0”)이 기록된다. 제2 데이터 “abcd”는 제1 데이터 “abcd”와 동일한 중복 데이터이고 제1 데이터 “abcd”의 PBA를 공유하므로, 제1 데이터 “abcd”의 제1 참조값(“1”)은 제3 참조값(“2”)으로 갱신된다. 제3 참조값은 클라이언트(10)로부터 제1 데이터 “abcd”와 동일한 중복 데이터의 쓰기 요청이 발생할 때마다 증가할 수 있다. 예를 들어, 컨트롤부(110)가 클라이언트(10)로부터 제3 데이터, 제4 데이터 등에 대하여 저장 요청을 받고, 제3, 제4 데이터 등이 제1 데이터와 중복인 경우, 제3 참조값은 “2”에서 “3”으로, “3”에서 “4” 등으로 바뀔 수 있다.
도 4를 참조하여 제2 데이터가 제1 데이터와 중복이 아닌 경우를 설명하기로 한다.
도 4를 참조하면, 먼저, 클라이언트(10)로부터 제1 파일(File 1), 즉 제1 데이터 “abcd”의 쓰기 요청(①)을 컨트롤부(110)가 받으면, 파일 시스템(120)은 제1 데이터 “abcd”에 LBA를 링크한다. 그리고, 링크된 내용은 LBA 맵핑 테이블(129)에 저장된다. 도 2에서는 예시적으로 제1 데이터 “abcd”에 LBA ‘100’이 링크된 것으로 도시하였다.
이어서, 블록 레이어(130)에서 제1 데이터 “abcd”에 대하여 중복 여부를 판단(②)한다. 이 때, 도 1에서 설명한 것과 같이 제1 데이터 “abcd”를 블록 단위 데이터로 분리하고, 각각의 블록 단위 데이터의 시그니처를 이용하여 제1 데이터 “abcd”의 중복 여부를 판단할 수 있다. 중복 여부를 판단하면, 이에 대한 중복 정보(163)가 생성된다.
컨트롤부(110)는 제1 데이터 “abcd”가 중복 데이터가 아니라고 판단되면, 저장 장치(140)에 제1 데이터 “abcd”를 전송하고 라이트(③)할 것을 요청한다. 저장 장치(140)는 맵핑 테이블(161)에 제1 데이터 “abcd”의 LBA와 PBA 사이의 변환 정보(162)를 기록하고, 중복 정보(163)를 기록한다. 도 2에서는 예시적으로 제1 데이터 “abcd”에 PBA ‘10’이 할당되는 것을 도시하였다. PBA ‘10’이 LBA ‘100’에 링크된다는 것과 제1 참조값(“1”)이 맵핑 테이블(161)에 기록된다.
맵핑 테이블(161)의 기록이 끝나면 제1 데이터 “abcd”는 PBA ‘10’에 해당하는 스토리지부(170)에 저장된다.
이어서, 컨트롤부(110)가 제2 파일(File 2), 즉 제2 데이터 “αβγδ”가 클라이언트(10)로부터 쓰기 요청(④)을 받으면, 파일 시스템(120)은 제2 데이터 “αβγδ”에 LBA를 링크한다. 그리고, 링크된 내용은 LBA 맵핑 테이블(129)에 저장한다. 도 4에서는 예시적으로 제2 데이터 “αβγδ”에 LBA ‘200’이 링크된 것으로 도시하였다.
다음으로, 블록 레이어(130)에서 제2 데이터 “αβγδ”에 대하여 중복 여부를 판단(⑤)한다. 이 때, 제2 데이터 “αβγδ”를 블록 단위 데이터로 분리하고, 각각의 블록 단위 데이터의 시그니처를 생성하고, 생성된 시그니처와 제1 데이터 “abcd”의 시그니처를 서로 비교하여 중복 여부를 판단할 수 있다.
제1 데이터 “abcd”와 제2 데이터 “αβγδ”가 동일하지 않으면, 제2 데이터 “αβγδ”는 중복 데이터가 아니므로 저장 장치(140)에 저장된다. 그리고, 메모리부(160)에 포함된 맵핑 테이블(161)은 갱신된다. 구체적으로, 제2 데이터 “αβγδ”의 LBA ‘200’과, LBA ‘200’에 링크되는 PBA ‘20’이 맵핑 테이블(161)에 기록된다. 제2 데이터 “αβγδ”는 중복 데이터가 아니므로 중복 정보(163)로서 제1 참조값(“1”)이 맵핑 테이블(161)에 기록된다. 맵핑 테이블(161)의 기록이 끝나면 제2 데이터 “αβγδ”는 PBA ‘20’에 해당하는 스토리지부(170)에 저장된다.
일반적으로, 블록 레이어(130)는 중복 맵핑 테이블을 가질 수 있다. 특히, 중복 맵핑 테이블은 중복 제거부(135)에 저장되고 관리될 수 있다. 중복제거부(135)에서 데이터의 중복 여부를 판단한 후, 데이터의 중복 판단 결과는 중복 맵핑 테이블에 기록된다. 그리고 중복 맵핑 테이블의 손실을 방지하기 위하여, 중복 맵핑 테이블(139)은 스토리지부(170)에 백업된다. 저장 장치(140)는 LBA와 PBA 사이의 변환 정보를 저장하기 위한 맵핑 테이블을 중복 맵핑 테이블과는 별도로 가질 수 있다. 즉, 중복 맵핑 테이블과 맵핑 테이블을 별도로 관리하기 때문에 필요한 용량이 본 발명에 비하여 증가한다. 또한, 스토리지부(170)에 데이터를 저장하는 것과 별도로 중복 맵핑 테이블을 스토리지부(170)에 백업하기 위한 단계가 추가로 필요하여, 중복 제거를 수행하는 데에 많은 시간이 필요하다.
그러나, 본 발명과 같이 중복 맵핑 테이블을 스토리지부(170)의 맵핑 테이블(1671)에 통합하여 관리하면, 중복 제거를 수행하기 위해 필요한 용량을 줄일 수 있고, 중복 제거 수행 단계를 단축시켜 보다 효율적이고 빠른 속도로 스토리지 시스템(100)을 사용할 수 있다.
도 5를 참조하여 본 발명의 다른 실시예에 따른 스토리지 시스템(101)을 설명하기로 한다. 상술한 바와 중복되는 내용은 설명을 생략하고 차이점을 위주로 설명하기로 한다.
도 5는 본 발명의 다른 실시예에 따른 스토리지 시스템(101)의 대략적인 블록도이다. 도 5에서는 설명의 편의를 위해, 복수개의 저장 장치(140a, 140b, 140c) 각각이 포함하는 컨트롤부, 메모리부를 생략하고 도시하였다.
도 5를 참조하면, 본 발명의 다른 실시예에 따른 스토리지 시스템(101)은 컨트롤부(110)와 복수개의 저장 장치(140a, 140b, 140c)로 구성된 스토리지(storage) 구조에 적용될 수 있다. 컨트롤부(110)는 파일 시스템(120), 블록 레이어(130)를 포함하고, 블록 레이어(130)는 블록 인터페이스(131), 청킹부(132), 시그니처 생성부(133), 시그니처 관리부(134), 중복 제거부(135)를 포함할 수 있으며, 이는 상술하였으므로 더이상의 설명을 생략하기로 한다.
복수의 저장 장치(140a, 140b, 140c)로 구성된 스토리지 구조는 복수의 저장 장치(140a, 140b, 140c)가 단일의 노드로 구성된 스토리지 어레이와, 복수의 저장 장치(140a, 140b, 140c)가 네트워크 등으로 연결된 복수 노드로 나뉘어서 구성된 분산 스토리지 구조 등을 모두 포함할 수 있다. 또한, 도 5에는 예시적으로 저장 장치를 3개만 도시하였으나, 본 발명이 이에 제한되는 것은 아니며, 저장 장치의 개수는 이보다 적을 수도 많을 수도 있다.
복수개의 저장 장치(140a, 140b, 140c) 각각은 메모리부(160)에 하나씩 맵핑 테이블(161a, 161b, 161c)을 포함할 수 있다. 맵핑 테이블(161a, 161b, 161c)은 각각 LBA와 PBA 사이의 변환 정보(162a, 162b, 162c)와 중복 제거부(135)에서 생성된 중복 정보(163a, 163b, 163c)를 포함할 있다. 맵핑 테이블(161a, 161b, 161c) 각각은 맵핑 테이블(161a, 161b, 161c)을 포함하는 저장 장치(140a, 140b, 140c)의 PBA에 대한 LBA와 PBA 사이의 변환 정보(162a, 162b, 162c)를 포함할 수 있다. 구체적으로, 제1 맵핑 테이블(161a)은 제1 스토리지부(170a)의 PBA에 대한 제1 LBA와 PBA 사이의 변환 정보(162a)만 포함할 수 있다. 제2 맵핑 테이블(161b)은 제2 스토리지부(170b)의 PBA에 대한 제2 LBA와 PBA 사이의 변환 정보(162b)만 포함할 수 있다. 제3 맵핑 테이블(161c)은 제3 스토리지부(170c)의 PBA에 대한 제3 LBA와 PBA 사이의 변환 정보(162c)만 포함할 수 있다. 따라서 제1 내지 제3 맵핑 테이블(161a, 161b, 161c)은 서로 다른 정보를 포함하며 중복되지 않는다.
복수개의 저장 장치(140a, 140b, 140c)를 포함하더라도 중복 여부 판단은 컨트롤부(110)의 중복 제거부(135)에서 수행되므로 중복 제거는 문제없이 동작할 수 있다.
도 6은 본 발명의 일 실시예에 따른 비휘발성 메모리 장치를 포함하는 전자 장치의 블록도를 나타낸다.
도 6을 참조하면, 이동 전화기(cellular phone), 스마트 폰(smart phone), 또는 태블릿(tablet) PC와 같은 전자 장치(1100)는 플래시 메모리 장치로 구현될 수 있는 비휘발성 메모리 장치(20)와, 비휘발성 메모리 장치(20)의 동작을 제어할 수 있는 메모리 컨트롤러(1150)를 포함할 수 있다.
비휘발성 메모리 장치(20)는 도 1에 도시된 저장 장치(140) 및/또는 도 5에 도시된 저장 장치(140a, 140b, 140c)일 수 있다.
메모리 컨트롤러(1150)는 전자 장치(190)의 전반적인 동작을 제어하는 프로세서(110)에 의하여 제어된다. 메모리 컨트롤러(1150)는 도 1 및 도 5에 도시된 컨트롤부(110)일 수 있다.
비휘발성 메모리 장치(20)에 저장된 데이터는 프로세서(1110)의 제어에 따라 동작하는 메모리 컨트롤러(1150)의 제어에 따라 디스플레이(1130)를 통하여 디스플레이될 수 있다.
무선 송수신기(1120)는 안테나(ANT)를 통하여 무선 신호를 주거나 받을 수 있다. 예컨대, 무선 송수신기(1120)는 안테나(ANT)를 통하여 수신된 무선 신호를 프로세서(1110)가 처리할 수 있는 신호로 변환할 수 있다. 따라서 프로세서(1110)는 무선 송수신기(1120)로부터 출력된 신호를 처리하고, 처리된 신호를 메모리 컨트롤러 (1150)를 통하여 비휘발성 메모리 장치(20)에 저장하거나 또는 디스플레이(1130)를 통하여 디스플레이할 수 있다.
무선 송수신기(1120)는 프로세서(1110)로부터 출력된 신호를 무선 신호로 변환하고, 변환된 무선 신호를 안테나(ANT)를 통하여 외부로 출력할 수 있다.
입력 장치(1140)는 프로세서(1110)의 동작을 제어하기 위한 제어 신호 또는 프로세서(1110)에 의하여 처리될 데이터를 입력할 수 있는 장치로서, 터치 패드 (touch pad)와 컴퓨터 마우스(computer mouse)와 같은 포인팅 장치(pointing device), 키패드(keypad), 또는 키보드로 구현될 수 있다.
프로세서(1110)는 비휘발성 메모리 장치(20)로부터 출력된 데이터, 무선 송수신기(1120)로부터 출력된 무선 신호, 또는 입력 장치(1140)로부터 출력된 데이터가 디스플레이(1130)를 통하여 디스플레이될 수 있도록 디스플레이(1130)를 제어할 수 있다.
도 7은 본 발명의 다른 실시예에 따른 비휘발성 메모리 장치를 포함하는 전자 장치의 블록도를 나타낸다.
도 7을 참조하면, PC(personal computer), 태블릿 컴퓨터(tablet computer), 넷-북(net-book), e-리더(e-reader), PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 또는 MP4 플레이어와 같은 데이터 처리 장치로 구현될 수 있는 전자 장치(1200)는 플래시 메모리 장치와 같은 비휘발성 메모리 장치(20)와, 비휘발성 메모리 장치(20)의 동작을 제어할 수 있는 메모리 컨트롤러(1250)를 포함한다.
비휘발성 메모리 장치(20)는 도 1에 도시된 저장 장치(140) 및/또는 도 5에 도시된 저장 장치(140a, 140b, 140c)일 수 있다.
메모리 컨트롤러(1250)는 도 1 및/또는 도 5에 도시된 컨트롤부(110)일 수 있다.
전자 장치(1200)는 전자 장치(1200)의 전반적인 동작을 제어하기 위한 프로세서(1210)를 포함할 수 있다. 메모리 컨트롤러(1250)는 프로세서(1210)에 의하여 제어된다.
프로세서(1210)는 입력 장치(1220)에 의하여 발생한 입력 신호에 따라 비휘발성 메모리 장치(20)에 저장된 데이터를 디스플레이(1230)를 통하여 디스플레이할 수 있다. 예컨대, 입력 장치(1220)는 터치 패드 또는 컴퓨터 마우스와 같은 포인팅 장치, 키패드, 또는 키보드로 구현될 수 있다.
도 8은 본 발명의 또다른 실시예에 따른 비휘발성 메모리 장치를 포함하는 전자 장치의 블록도를 나타낸다.
도 8을 참조하면, 전자 장치(1300)는 카드 인터페이스(1310), 메모리 컨트롤러(1320), 및 비휘발성 메모리 장치(20), 예컨대 플래시 메모리 장치를 포함한다.
전자 장치(1300)는 카드 인터페이스(1310)를 통하여 호스트(HOST)와 데이터를 주거나 받을 수 있다. 실시 예에 따라, 카드 인터페이스(1310)는 SD(secure digital) 카드 인터페이스 또는 MMC(multi-media card) 인터페이스일 수 있으나 이에 한정되는 것은 아니다. 카드 인터페이스(1310)는 전자 장치(1300)와 통신할 수 있는 호스트(HOST)의 통신 프로토콜에 따라 호스트(HOST)와 메모리 컨트롤러(1320) 사이에서 데이터 교환을 인터페이스할 수 있다.
메모리 컨트롤러(1320)는 전자 장치(1300)의 전반적인 동작을 제어하며, 카드 인터페이스(1310)와 비휘발성 메모리 장치(20) 사이에서 데이터의 교환을 제어할 수 있다. 또한 메모리 컨트롤러(1320)의 버퍼 메모리(1325)는 카드 인터페이스(1310)와 비휘발성 메모리 장치(20) 사이에서 주고받는 데이터를 버퍼링할 수 있다.
메모리 컨트롤러(1320)는 데이터 버스(DATA) 및 어드레스 버스(ADDRESS)를 통하여 카드 인터페이스(1310)와 비휘발성 메모리(20)와 접속된다. 실시예에 따라 메모리 컨트롤러(1320)는 카드 인터페이스(1310)로부터 리드 또는 라이트하고자 하는 데이터의 어드레스를 어드레스 버스(ADDRESS)를 통하여 수신하고 이를 비휘발성 메모리 장치(20)로 전송한다.
또한, 메모리 컨트롤러(1320)는 카드 인터페이스(1310) 또는 비휘발성 메모리 장치(20) 각각에 접속된 데이터 버스(DATA)를 통하여 리드 또는 라이트하고자 하는 데이터를 수신하거나 전송한다. 실시예에 따라 도 8에 도시된 메모리 컨트롤러(1320)는 도 1 및/또는 도 5에 도시된 컨트롤부(110)와 동일 또는 유사한 기능을 수행할 수 있다. 따라서 메모리 컨트롤러(320)는 비휘발성 메모리 장치(20)에 데이터를 라이트하기 전에 중복 제거를 수행할 수 있다.
비휘발성 메모리 장치(20)에는 각종 데이터가 저장된다. 실시 예에 따라, 비휘발성 메모리 장치(20)에서 리드 동작과 라이트 동작이 동시에 수행될 수 있다. 이때 리드 동작이 수행되는 비휘발성 메모리 장치(20)의 메모리 셀 어레이와 라이트 동작이 수행되는 비휘발성 메모리(20)의 메모리 셀 어레이 각각은 서로 다를 수 있다. 비휘발성 메모리 장치(20)는 도 1에 도시된 저장 장치(140) 및/또는 도 5에 도시된 저장 장치(140a, 140b, 140c)일 수 있다.
도 8의 전자 장치(1300)가 PC, 태블릿 PC, 디지털 카메라, 디지털 오디오 플레이어, 이동 전화기, 콘솔 비디오 게임 하드웨어, 또는 디지털 셋-탑 박스와 같은 호스트(HOST)에 접속될 때, 호스트(HOST)는 카드 인터페이스(1310)와 메모리 컨트롤러(1320)를 통하여 비휘발성 메모리 장치(20)에 저장된 데이터를 주거나 받을 수 있다.
도 9는 본 발명의 또다른 실시예에 따른 비휘발성 메모리 장치를 포함하는 전자 장치의 블록도를 나타낸다.
도 9를 참조하면, 전자 장치(1400)는 카드 인터페이스(1410), 메모리 컨트롤러(1420), 및 비휘발성 메모리 장치(20), 예컨대 플래시 메모리를 포함한다.
전자 장치(1400)는 카드 인터페이스(1410)를 통하여 호스트(HOST)와 데이터 통신을 수행할 수 있다. 실시 예에 따라, 카드 인터페이스(1410)는 SD 카드 인터페이스 또는 MMC 인터페이스일 수 있으나 이에 한정되는 것은 아니다. 카드 인터페이스(1410)는 전자 장치(1400)와 통신할 수 있는 호스트(HOST)의 통신 프로토콜에 따라 호스트(HOST)와 메모리 컨트롤러(1420) 사이에서 데이터 통신을 수행할 수 있다.
메모리 컨트롤러(1420)는 전자 장치(1400)의 전반적인 동작을 제어하며, 카드 인터페이스(1410)와 비휘발성 메모리 장치(20) 사이에서 데이터의 교환을 제어할 수 있다.
또한, 메모리 컨트롤러(1420)에 포함된 버퍼 메모리(1425)는 전자 장치(1400)의 전반적인 동작을 제어하기 위하여 각종 데이터를 저장할 수 있다. 메모리 컨트롤러(1420)는 데이터 버스(DATA) 및 로지컬 어드레스 버스(LOGICAL ADDRESS)를 통하여 카드 인터페이스(410)와 비휘발성 메모리(20)와 접속될 수 있다.
실시예에 따라 메모리 컨트롤러(1420)는 카드 인터페이스(1410)로부터 리드 데이터 또는 라이트 데이터의 어드레스를 로지컬 어드레스 버스(LOGICAL ADDRESS)를 통하여 수신하고, 피지컬 어드레스 버스(PHYSICAL ADDRESS)를 통하여 비휘발성 메모리(20)로 전달할 수 있다. 비휘발성 메모리 장치(20)는 도 1에 도시된 저장 장치(140) 및/또는 도 5에 도시된 저장 장치(140a, 140b, 140c)일 수 있다.
또한, 메모리 컨트롤러(1420)는 카드 인터페이스(1410) 또는 비휘발성 메모리(20) 각각에 접속된 데이터 버스(DATA)를 통하여 리드 데이터 또는 라이트 데이터를 수신하거나 전송할 수 있다. 메모리 컨트롤러(1420)는 도 1 및/또는 도 5에 도시된 컨트롤부(110)와 동일 또는 유사한 기능을 수행할 수 있다. 따라서 메모리 컨트롤러(1420)는 중복 제거를 수행할 수 있다.
실시예에 따라, 전자 장치(1400)의 메모리 컨트롤러(1420)는 버퍼 메모리 (1425) 내에 어드레스 변환 테이블(Address Translation Table; 1426)을 포함할 수 있다. 상기 어드레스 변환 테이블에는 외부로부터 입력된 논리 어드레스와 비휘발성 메모리(20)에 액세스하기 위한 논리 어드레스가 포함될 수 있다. 라이트 동작시, 메모리 컨트롤러(1420)는 임의의 물리 어드레스에 새로운 데이터를 라이트하고, 상기 어드레스 변환 테이블을 업데이트할 수 있다.
메모리 컨트롤러(1420)는 어드레스 변환 테이블(1426)로부터 라이트 동작이 수행되는 데이터의 물리 어드레스를 참조함으로써 라이트 동작과 병행하여 리드 동작을 수행할 수 있는 물리 어드레스를 선택할 수 있다.
메모리 컨트롤러(1420)는 상기 라이트 동작과 상기 리드 동작을 병행하고, 상기 라이트 동작과 상기 리드 동작에 따라 어드레스 변환 테이블(1426)을 업-데이트할 수 있다. 따라서 전자 장치(1400)의 동작시간은 단축될 수 있다.
도 9의 전자 장치(1400)가 PC, 태블릿 PC, 디지털 카메라, 디지털 오디오 플레이어, 이동 전화기, 콘솔 비디오 게임 하드웨어, 또는 디지털 셋-탑 박스와 같은 호스트(HOST)에 접속될 때, 호스트(HOST)는 카드 인터페이스(1410)와 메모리 컨트롤러(1420)를 통하여 비휘발성 메모리(20)에 저장된 데이터를 주거나 받을 수 있다.
도 10은 본 발명의 또다른 실시예에 따른 비휘발성 메모리 장치를 포함하는 전자 장치의 블록도를 나타낸다.
도 10을 참조하면, 전자 장치(1500)는 플래시 메모리 장치와 같은 비휘발성 메모리 장치(20), 비휘발성 메모리 장치(20)의 데이터 처리 동작을 제어하기 위한 메모리 컨트롤러(1540), 및 전자 장치(1500)의 전반적인 동작을 제어할 수 있는 프로세서(1510)를 포함한다.
프로세서(1510)의 제어에 따라 메모리 컨트롤러(1540)는 리드 동작 동안 비휘발성 메모리 장치(20)로부터 최초로 리드된 데이터에 대한 리드 동작의 성공 여부를 판단하고 상기 리드 동작이 성공했을 때에도 리드 파라미터를 변경할 수 있다. 메모리 컨트롤러(1540)는 도 1 및/또는 도 5에 도시된 컨트롤부(110)와 동일 또는 유사한 기능을 가질 수 잇다. 따라서, 메모리 컨트롤러(1540)는 비휘발성 메모리 장치(20)에 데이터를 라이트할 때, 중복 제거를 수행할 수 있다.
전자 장치(1500)의 이미지 센서(1520)는 광학 신호를 디지털 신호로 변환하고, 변환된 디지털 신호는 프로세서(1510)의 제어 하에 비휘발성 메모리 장치(20)에 저장되거나 또는 디스플레이(1530)를 통하여 디스플레이된다. 또한, 비휘발성 메모리 장치(20)에 저장된 디지털 신호는 프로세서(1510)의 제어하에 디스플레이(1530)를 통하여 디스플레이된다.
비휘발성 메모리 장치(20)는 도 1에 도시된 저장 장치(140) 및/또는 도 5에 도시된 저장 장치(140a, 140b, 140c)일 수 있다.
도 11은 본 발명의 또다른 실시예에 따른 비휘발성 메모리 장치를 포함하는 전자 장치의 블록도를 나타낸다.
도 11을 참조하면, 전자 장치(1600)는 플래시 메모리 장치와 같은 비휘발성 메모리 장치(20), 비휘발성 메모리 장치(20)의 동작을 제어하기 위한 메모리 컨트롤러(1650), 및 전자 장치(1600)의 전반적인 동작을 제어할 수 있는 CPU(1610)를 포함한다.
전자 장치(1600)는 CPU(1610)의 동작 메모리(operation memory)로서 사용될 수 있는 메모리(1620)를 포함한다. 메모리(1620)는 ROM과 같은 비휘발성 메모리 또는 DRAM같은 휘발성 메모리로 구현될 수 있다.
전자 장치(1600)에 접속된 호스트(HOST)는 메모리 컨트롤러(1650)와 호스트 인터페이스(1640)를 통하여 비휘발성 메모리 장치(20)와 데이터를 주거나 받을 수 있다. 이때 메모리 컨트롤러(1650)는 메모리 인터페이스, 예컨대 플래시 메모리 인터페이스의 기능을 수행할 수 있다. 메모리 컨트롤러(1650)는 비휘발성 메모리 장치20)에 데이터를 라이트를 할 때, 중복 제거를 수행할 수 있다.
실시예에 따라 전자 장치(1600)는 ECC(error correction code) 블록(1630)을 더 포함할 수 있다. CPU(1610)의 제어에 따라 동작하는 ECC 블록(1630)은 메모리 컨트롤러(1650)를 통하여 비휘발성 메모리 장치(20)로부터 리드된 데이터에 포함된 에러를 검출하고 정정할 수 있다. 비휘발성 메모리 장치(20)는 도 1에 도시된 저장 장치(140) 및/또는 도 5에 도시된 저장 장치(140a, 140b, 140c)일 수 있다.
CPU(1610)는 버스(1601)를 통하여 메모리 컨트롤러(1650), ECC 블록(1630), 호스트 인터페이스(1640), 및 메모리(1620) 사이에서 데이터의 교환을 제어할 수 있다.
전자 장치(1600)는 USB(Universal Serial Bus) 메모리 드라이브 또는 메모리 스틱(memory stick) 등으로 구현될 수 있다.
도 12는 본 발명의 또다른 실시예에 따른 비휘발성 메모리 장치를 포함하는 전자 장치의 블록도를 나타낸다.
도 12를 참조하면, 전자 장치(1700)는 SSD(solid state drive)와 같은 데이터 저장 장치로 구현될 수 있다.
전자 장치(1700)는 복수개의 비휘발성 메모리 장치들(20-1~20-j)과, 복수개의 비휘발성 메모리 장치들(20-1~20-j) 각각의 데이터 처리 동작을 제어할 수 있는 메모리 컨트롤러(1710)를 포함할 수 있다.
전자 장치(1700)는 메모리 시스템 또는 메모리 모듈로 구현될 수 있다. 실시예에 따라 메모리 컨트롤러(1710)는 전자 장치(1700)의 내부 또는 외부에 구현될 수 있다. 메모리 컨트롤러(1710)는 복수개의 비휘발성 메모리 장치들(20-1∼20-j)에 데이터를 라이트할 때, 중복 제거를 수행할 수 있다. 복수개의 비휘발성 메모리 장치들(20-1∼20-j)은 도 1에 도시된 저장 장치(140) 및/또는 도 5에 도시된 저장 장치(140a, 140b, 140c)일 수 있다.
도 13은 도 12에 도시된 전자 장치를 포함하는 데이터 처리 시스템의 블록도를 나타낸다.
도 12와 도 13을 참조하면, RAID(redundant array of independent disks) 시스템으로 구현될 수 있는 데이터 저장 장치(1800)는 RAID 컨트롤러(1810)와, 복수개의 메모리 시스템들(1700-1~1700-n; n는 자연수)을 포함할 수 있다.
복수개의 메모리 시스템들(1700-1~1700-n) 각각은 도 12에 도시된 전자 장치(1700)일 수 있다. 복수개의 메모리 시스템들(1700-1~1700-n)은 RAID 어레이를 구성할 수 있다. 데이터 저장 장치(1800)는 PC(personal computer) 또는 SSD로 구현될 수 있다.
프로그램 동작 동안, RAID 컨트롤러(1810)는 호스트로부터 출력된 프로그램 데이터를 다수개의 RAID 레벨들 중에서 상기 호스트로부터 출력된 RAID 레벨 정보에 기초하여 선택된 어느 하나의 RAID 레벨에 따라 다수개의 메모리 시스템들(1700-1~1700-n) 중에서 어느 하나의 메모리 시스템으로 출력할 수 있다.
또한, 리드 동작 동안, RAID 컨트롤러(1810)는 복수개의 RAID 레벨들 중에서 상기 호스트로부터 출력된 RAID 레벨 정보에 기초하여 선택된 어느 하나의 RAID 레벨에 따라서 복수개의 메모리 시스템(1700-1~1700-n) 중에서 어느 하나의 메모리 시스템으로부터 리드된 데이터를 상기 호스트로 전송할 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
10: 클라이언트 100, 101: 스토리지 시스템
110: 컨트롤부 120: 파일 시스템
130: 블록 레이어 131: 블록 인터페이스
132: 청킹부 133: 시그니처 생성부
134: 시그니처 관리부 135: 중복 제거부
140, 140a, 140b, 140c: 저장 장치
150: 컨트롤부 160, 160a, 160b, 160c: 메모리부
161, 161a, 161b, 161c: 맵핑 테이블
162, 162a, 162b, 162c: LBA와 PBA 사이의 변환 정보
163, 163a, 163b, 163c: 중복 정보
170, 170a, 170b, 170c: 스토리지부

Claims (10)

  1. 클라이언트로부터 데이터를 제공받는 컨트롤부;및
    상기 데이터를 저장하는 저장 장치를 포함하되,
    상기 컨트롤부는, 상기 데이터의 중복 여부를 판단하여 중복 정보를 생성하는 중복 제거부를 포함하고,
    상기 저장 장치는, 상기 데이터의 LBA(Logical Block Address)와 PBA(Physical Block Address) 사이의 변환 정보 및 상기 중복 정보를 포함하는 맵핑 테이블을 포함하는 스토리지 시스템.
  2. 제 1항에 있어서,
    상기 저장 장치는 컨트롤부와, 메모리부와, 상기 데이터를 저장하는 스토리지부를 포함하되,
    상기 메모리부는 상기 맵핑 테이블을 포함하는 스토리지 시스템.
  3. 제 1항에 있어서,
    상기 컨트롤부는,
    상기 데이터를 청킹하여 복수개의 블록 단위 데이터를 생성하는 청킹부와,
    상기 복수개의 블록 단위 데이터 각각의 시그니처(signature)를 생성하는 시그니처 생성부와,
    상기 시그니처를 관리하는 시그니처 관리부를 더 포함하고,
    상기 중복 제거부는 상기 시그니처를 비교하여 상기 중복 여부를 판단하는 스토리지 시스템.
  4. 제 3항에 있어서,
    상기 시그니처는 상기 복수개의 블록 단위 데이터 각각의 해시값(hash value)을 포함하는 스토리지 시스템.
  5. 제 1항에 있어서,
    상기 맵핑 테이블은 상기 데이터의 중복 여부를 판단할 때마다 업데이트되는 스토리지 시스템.
  6. 제1 데이터를 저장하는 저장 장치;및
    클라이언트로부터 제공받은 제2 데이터를 상기 제1 데이터와 비교하여 중복 여부를 판단하고, 상기 중복 여부에 대한 중복 정보를 생성하는 컨트롤부를 포함하되,
    상기 저장 장치는 상기 제1 데이터의 LBA와 PBA 사이의 변환 정보, 상기 제2 데이터의 LBA와 PBA 사이의 변환 정보, 및 상기 중복 정보를 포함하는 맵핑 테이블을 포함하는 스토리지 시스템.
  7. 제 6항에 있어서,
    상기 제1 데이터와 상기 제2 데이터가 동일한 경우,
    상기 맵핑 테이블에서, 상기 제1 데이터의 PBA와 상기 제2 데이터의 PBA는 동일한 스토리지 시스템.
  8. 제 6항에 있어서,
    상기 저장 장치는 컨트롤부와, 메모리부와, 스토리지부를 포함하되,
    상기 메모리부는 상기 맵핑 테이블을 포함하는 스토리지 시스템.
  9. 제 8항에 있어서,
    상기 제1 데이터와 상기 제2 데이터가 서로 중복이 아닌 경우, 상기 제2 데이터는 상기 스토리지부에 저장되고,
    상기 제1 데이터와 상기 제2 데이터가 중복이면, 상기 제2 데이터는 상기 스토리지부에 저장되지 않는 스토리지 시스템.
  10. 제 6항에 있어서,
    상기 컨트롤부는,
    상기 제1 데이터를 청킹하여 제1 블록 단위 데이터를 생성하고, 상기 제1 블록 단위 데이터에 대한 제1 시그니처를 생성하고,
    상기 제2 데이터를 청킹하여 제2 블록 단위 데이터를 생성하고, 상기 제2 블록 단위 데이터에 대한 제2 시그니처를 생성하고,
    상기 제1 시그니처와 상기 제2 시그니처를 비교하여 상기 중복 여부를 판단하는 스토리지 시스템.
KR1020140060436A 2014-05-20 2014-05-20 스토리지 시스템 KR20150133530A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140060436A KR20150133530A (ko) 2014-05-20 2014-05-20 스토리지 시스템
US14/713,013 US20150339060A1 (en) 2014-05-20 2015-05-15 Storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140060436A KR20150133530A (ko) 2014-05-20 2014-05-20 스토리지 시스템

Publications (1)

Publication Number Publication Date
KR20150133530A true KR20150133530A (ko) 2015-11-30

Family

ID=54556104

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140060436A KR20150133530A (ko) 2014-05-20 2014-05-20 스토리지 시스템

Country Status (2)

Country Link
US (1) US20150339060A1 (ko)
KR (1) KR20150133530A (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9594678B1 (en) 2015-05-27 2017-03-14 Pure Storage, Inc. Preventing duplicate entries of identical data in a storage device
US9940261B2 (en) * 2016-05-05 2018-04-10 Western Digital Technology, Inc. Zoning of logical to physical data address translation tables with parallelized log list replay

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8291194B2 (en) * 2009-11-16 2012-10-16 Mediatek Inc. Methods of utilizing address mapping table to manage data access of storage medium without physically accessing storage medium and related storage controllers thereof
JP5740296B2 (ja) * 2011-12-16 2015-06-24 株式会社東芝 半導体記憶装置、半導体記憶装置の制御方法、制御プログラム
US9116936B2 (en) * 2013-06-06 2015-08-25 International Business Machines Corporation Inline learning-based selective deduplication for primary storage systems

Also Published As

Publication number Publication date
US20150339060A1 (en) 2015-11-26

Similar Documents

Publication Publication Date Title
US11113149B2 (en) Storage device for processing corrupted metadata and method of operating the same
US10089027B2 (en) Information processing system
US9304685B2 (en) Storage array system and non-transitory recording medium storing control program
TWI584125B (zh) 輸入/輸出裝置及計算主機相互運作
US8521949B2 (en) Data deleting method and apparatus
US10013307B1 (en) Systems and methods for data storage devices to use external resources
KR101813786B1 (ko) Ssd 상의 기록-시-복사를 위한 시스템 및 방법
US11474899B2 (en) Operation method of open-channel storage device
KR20130064518A (ko) 저장 장치 및 그것의 동작 방법
US10474527B1 (en) Host-assisted error recovery
KR20180034842A (ko) 메모리 제어장치 및 방법
KR20130088883A (ko) 2-레벨 시스템 메인 메모리
US20150039948A1 (en) Data storage device and operating method thereof
KR20140100113A (ko) 저장 장치 및 그것의 데이터 처리 방법
KR20150133530A (ko) 스토리지 시스템
KR20180058169A (ko) 데이터 중복 제거를 수행하는 스토리지 시스템, 스토리지 시스템 및 데이터 처리 시스템의 동작방법
US20220318091A1 (en) Storage system and operating method thereof
JP2019023936A (ja) 記憶装置及びメモリシステム
US11281381B2 (en) Storage node of distributed storage system and method of operating the same
KR20190105400A (ko) 데이터 스토리지 장치 및 이를 포함하는 raid 시스템
KR102032878B1 (ko) 플래시 메모리 컨트롤러의 에러 정정 방법
KR20210142863A (ko) 데이터 처리 시스템의 동작 효율성을 높이기 위한 장치 및 방법
US20200242165A1 (en) System and method for generating common metadata pointers
JP2015191407A (ja) ストレージ制御装置、制御プログラム、および制御方法
US20170277474A1 (en) Data processing system including data storage device

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