KR20210034897A - 스토리지 장치 및 그것의 동작 방법 - Google Patents

스토리지 장치 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20210034897A
KR20210034897A KR1020190116814A KR20190116814A KR20210034897A KR 20210034897 A KR20210034897 A KR 20210034897A KR 1020190116814 A KR1020190116814 A KR 1020190116814A KR 20190116814 A KR20190116814 A KR 20190116814A KR 20210034897 A KR20210034897 A KR 20210034897A
Authority
KR
South Korea
Prior art keywords
data
physical address
reference data
storage device
duplicated
Prior art date
Application number
KR1020190116814A
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 KR1020190116814A priority Critical patent/KR20210034897A/ko
Priority to US16/874,871 priority patent/US11281379B2/en
Priority to DE102020113704.4A priority patent/DE102020113704A1/de
Priority to CN202010971671.8A priority patent/CN112540722A/zh
Publication of KR20210034897A publication Critical patent/KR20210034897A/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/0614Improving the reliability of 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • 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
    • 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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/0653Monitoring storage devices or systems
    • 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/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile 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/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명의 하나의 실시 예에 따른 하나 이상의 불휘발성 메모리들을 포함하는 스토리지 장치의 동작 방법은 상기 하나 이상의 불휘발성 메모리들 중 제1 메모리 영역에 기준 데이터를 저장하는 단계, 상기 기준 데이터에 대한 접근 빈도가 제1 기준 값을 초과하는 경우, 상기 기준 데이터와 동일한 제1 복제된 데이터를 상기 하나 이상의 불휘발성 메모리들 중 제2 메모리 영역에 저장하는 단계, 상기 제1 복제된 데이터가 저장된 후, 상기 기준 데이터 또는 상기 제1 복제된 데이터 중 하나에 대한 접근 빈도가 상기 제1 기준 값을 초과하는 경우, 상기 기준 데이터와 동일한 제2 복제된 데이터를 상기 하나 이상의 불휘발성 메모리들 중 제3 메모리 영역에 저장하는 단계, 및 상기 제1 및 제2 복제된 데이터가 상기 하나 이상의 불휘발성 메모리들에 저장됨에 따라 상기 제1 메모리 영역의 제1 물리 어드레스가 상기 제2 메모리 영역의 제2 물리 어드레스와 상기 제3 메모리 영역의 제3 물리 어드레스에 대응하도록 상기 제2 물리 어드레스 및 상기 제3 물리 어드레스를 관리하는 단계를 포함한다.

Description

스토리지 장치 및 그것의 동작 방법{STORAGE DEVICE AND OPERATING METHOD THEREOF}
본 발명은 반도체 장치에 관한 것으로, 좀 더 상세하게는 불휘발성 메모리에 저장되는 데이터를 관리하기 위한 스토리지 장치 및 그것의 동작 방법에 관한 것이다.
스토리지 장치는 컴퓨터, 스마트 폰, 스마트 패드 등과 같은 호스트 장치의 제어에 따라 데이터를 저장하는 장치이다. 스토리지 장치는 하드 디스크 드라이브(HDD; Hard Disk Drive)와 같이 자기 디스크에 데이터를 저장하는 장치, 솔리드 스테이트 드라이브(SSD; Solid State Drive), 메모리 카드 등과 같이 반도체 메모리, 특히 불휘발성 메모리에 데이터를 저장하는 장치를 포함한다.
불휘발성 메모리는 읽기 전용 메모리(ROM; Read Only Memory), 프로그램 가능한 ROM(PROM; Programmable ROM), 전기적으로 프로그램 가능한 ROM(EPROM; Electrically Programmable ROM), 전기적으로 소거 및 프로그램 가능한 ROM(EEPROM; Electrically Erasable and Programmable ROM), 플래시 메모리, 상 변화 랜덤 액세스 메모리(PRAM; Phase-change Random Access Memory), 자기 RAM(MRAM; Magnetic RAM), 저항성 RAM(RRAM; Resistive RAM), 강유전체 RAM (FRAM; Ferroelectric RAM) 등을 포함한다.
제한된 용량을 가지는 스토리지 장치에 많은 양의 데이터를 저장하기 위해 스토리지 장치는 데이터 중복 제거(deduplication)를 수행할 수 있다. 스토리지 장치는 중복 제거를 통해 동일한 값을 가지는 복수의 데이터 중 하나 또는 일부 데이터만을 스토리지 장치에 저장할 수 있다. 이에 따라, 스토리지 장치에 저장되는 데이터의 양이 감소될 수 있다. 그러나, 중복 제거에 따라 복수의 데이터 중 하나 또는 일부 데이터가 스토리지 장치에 저장되는 경우, 저장된 데이터에 대하여 빈번한 접근이 이루어질 수 있다. 이 경우, 스토리지 장치의 신뢰성 및 성능이 저하될 수 있다. 따라서, 스토리지 장치의 성능을 향상시키면서도 스토리지 장치의 신뢰성을 확보할 필요가 있다.
본 발명의 목적은 중복 제거를 수행하면서 빈번하게 접근되는 데이터의 신뢰성을 확보할 수 있는 스토리지 장치를 제공하는데 있다.
본 발명의 하나의 실시 예에 따른 하나 이상의 불휘발성 메모리들을 포함하는 스토리지 장치의 동작 방법은 상기 하나 이상의 불휘발성 메모리들 중 제1 메모리 영역에 기준 데이터를 저장하는 단계, 상기 기준 데이터에 대한 접근 빈도가 제1 기준 값을 초과하는 경우, 상기 기준 데이터와 동일한 제1 복제된 데이터를 상기 하나 이상의 불휘발성 메모리들 중 제2 메모리 영역에 저장하는 단계, 상기 제1 복제된 데이터가 저장된 후, 상기 기준 데이터 또는 상기 제1 복제된 데이터 중 하나에 대한 접근 빈도가 상기 제1 기준 값을 초과하는 경우, 상기 기준 데이터와 동일한 제2 복제된 데이터를 상기 하나 이상의 불휘발성 메모리들 중 제3 메모리 영역에 저장하는 단계, 및 상기 제1 및 제2 복제된 데이터가 상기 하나 이상의 불휘발성 메모리들에 저장됨에 따라 상기 제1 메모리 영역의 제1 물리 어드레스가 상기 제2 메모리 영역의 제2 물리 어드레스와 상기 제3 메모리 영역의 제3 물리 어드레스에 대응하도록 상기 제2 물리 어드레스 및 상기 제3 물리 어드레스를 관리하는 단계를 포함한다.
본 발명의 하나의 실시 예에 따른 하나 이상의 불휘발성 메모리들을 포함하는 스토리지 장치의 동작 방법은 상기 하나 이상의 불휘발성 메모리들 중 제1 메모리 영역에 기준 데이터를 저장하는 단계, 상기 기준 데이터에 대한 중복 제거 비율이 기준 비율을 초과하는 경우, 상기 기준 데이터와 동일한 제1 복제된 데이터를 상기 하나 이상의 불휘발성 메모리들 중 제2 메모리 영역에 저장하는 단계, 상기 제1 복제된 데이터가 저장된 후, 상기 기준 데이터 또는 상기 제1 복제된 데이터 중 하나에 대한 접근 빈도가 제1 기준 값을 초과하는 경우, 상기 기준 데이터와 동일한 제2 복제된 데이터를 상기 하나 이상의 불휘발성 메모리들 중 제3 메모리 영역에 저장하는 단계, 및 상기 제1 및 제2 복제된 데이터가 상기 하나 이상의 불휘발성 메모리들에 저장됨에 따라 상기 제1 메모리 영역의 제1 물리 어드레스가 상기 제2 메모리 영역의 제2 물리 어드레스와 상기 제3 메모리 영역의 제3 물리 어드레스에 대응하도록 상기 제2 물리 어드레스 및 상기 제3 물리 어드레스를 관리하는 단계를 포함한다.
본 발명의 하나의 실시 예에 따른 스토리지 장치는 기준 데이터를 저장하도록 구성되는 제1 메모리 영역을 포함하는 하나 이상의 불휘발성 메모리들 및 상기 기준 데이터에 대한 접근 빈도가 제1 기준 값을 초과하는 경우, 상기 기준 데이터와 동일한 제1 복제된 데이터를 상기 하나 이상의 불휘발성 메모리들 중 제2 메모리 영역에 저장하고, 상기 제1 복제된 데이터가 저장된 후, 상기 기준 데이터 또는 상기 제1 복제된 데이터 중 하나에 대한 접근 빈도가 상기 제1 기준 값을 초과하는 경우, 상기 기준 데이터와 동일한 제2 복제된 데이터를 상기 하나 이상의 불휘발성 메모리들 중 제3 메모리 영역에 저장하도록 구성되는 메모리 컨트롤러를 포함하고, 상기 메모리 컨트롤러는 상기 제1 복제된 데이터가 저장됨에 따라 어드레스 관리 테이블에 상기 제1 메모리 영역의 제1 물리 어드레스에 대응하여 상기 제2 메모리 영역의 제2 물리 어드레스를 저장하고, 상기 제2 복제된 데이터가 저장됨에 따라 상기 어드레스 관리 테이블에 상기 제2 물리 어드레스에 대응하여 상기 제3 메모리 영역의 제3 물리 어드레스를 저장하도록 더 구성된다.
본 발명에 따르면, 스토리지 장치는 중복 제거에 따라 불휘발성 메모리에 저장된 데이터에 대한 복제된 데이터를 생성할 수 있다. 이에 따라, 스토리지 장치는 중복 제거 동작 이후 불휘발성 메모리에 저장된 데이터에 대한 접근 동작들을 복제된 데이터로 분산시킬 수 있다. 따라서, 중복 제거된 데이터에 대한 빈번한 접근 동작에 따라 발생될 수 있는 에러를 방지함으로써 스토리지 장치의 신뢰성이 향상될 수 있다.
또한, 본 발명에 따르면, 스토리지 장치는 복제된 데이터를 생성한 후, 드물게 접근되는 복제된 데이터를 제거하여 불휘발성 메모리의 가용 용량을 확보할 수 있다.
도 1은 본 발명의 실시 예들에 따른 스토리지 시스템을 보여주는 블록도이다.
도 2는 도 1의 메모리 컨트롤러의 예시적인 구성을 보여주는 블록도이다.
도 3은 도 1의 스토리지 장치가 수행하는 데이터 중복 제거의 예시를 보여준다.
도 4는 도 1의 스토리지 장치가 기준 데이터를 복제하는 하나의 예시적인 동작을 보여주는 순서도이다.
도 5는 도 1의 스토리지 장치가 기준 데이터를 복제하는 다른 하나의 예시적인 동작을 보여주는 순서도이다.
도 6은 도 1의 스토리지 장치가 기준 데이터를 복제하는 다른 예시적인 동작을 보여주는 순서도이다.
도 7a 및 도 7b는 도 1의 스토리지 장치가 본 발명의 실시 예들에 따라 복제된 데이터를 생성하는 예시를 보여준다.
도 8은 도 1의 스토리지 장치가 기준 데이터에 대한 읽기를 수행하는 예시적인 동작을 보여주는 순서도이다.
도 9는 도 1의 스토리지 장치가 본 발명의 실시 예에 따라 읽기 동작을 수행하는 예시를 보여준다.
도 10은 도 1의 스토리지 장치가 기준 데이터 또는 복제된 데이터를 제거하는 예시적인 동작을 보여주는 순서도이다.
도 11a 및 도 11b는 도 1의 스토리지 장치가 본 발명의 실시 예에 따라 복제된 데이터를 제거하는 예시를 보여준다.
도 12a 및 도 12b는 도 1의 스토리지 장치가 본 발명의 실시 예에 따라 기준 데이터를 제거하는 예시를 보여준다.
도 13은 본 발명의 실시 예에 따른 SSD 시스템을 보여주는 블록도이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 본 발명의 실시 예들에 따른 스토리지 시스템을 보여주는 블록도이다. 스토리지 시스템(1000)은 스토리지 장치(100) 및 호스트 장치(200)를 포함할 수 있다. 예시적인 실시 예에서, 스토리지 시스템(1000)은 하나의 전자 장치로 구현될 수 있다. 예를 들어, 스토리지 시스템(1000)은 가전 기기, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트 폰, 전기 자동차, 웨어러블(Wearable) 장치, 비디오 게임기 등과 같은 다양한 전자 장치 중 하나일 수 있다. 예시적인 실시 예에서, 스토리지 시스템(1000)은 복수의 전자 장치들로 구현될 수 있다. 예를 들어, 스토리지 장치(100) 및 호스트 장치(200)는 각각 별개의 전자 장치들일 수 있고, 스토리지 시스템(1000)을 구현하기 위해 로컬 또는 원격으로 연결될 수 있다.
호스트 장치(200)는 스토리지 장치(100)의 다양한 동작들을 제어할 수 있다. 이를 위해, 호스트 장치(200)는 스토리지 장치(100)로 커맨드(CMD)를 전송할 수 있다. 예를 들어, 데이터(DATA)를 스토리지 장치(100)에 저장하기 위해, 호스트 장치(200)는 쓰기 동작을 가리키는 커맨드(CMD), 어드레스(ADDR), 및 데이터(DATA)를 스토리지 장치(100)로 전송할 수 있다. 스토리지 장치(100)는 커맨드(CMD)에 응답하여 데이터(DATA)를 저장할 수 있다. 예를 들어, 스토리지 장치(100)로부터 데이터(DATA)를 출력하기 위해, 호스트 장치(200)는 읽기 동작을 가리키는 커맨드(CMD) 및 어드레스(ADDR)를 스토리지 장치(100)로 전송할 수 있다. 스토리지 장치(100)는 커맨드(CMD)에 응답하여 어드레스(ADDR)데이터(DATA)를 호스트 장치(200)로 출력할 수 있다.
예시적인 실시 예에서, 호스트 장치(200)는 하나 이상의 프로세서 코어들을 포함하도록 구현될 수 있다. 예를 들어, 호스트 장치(200)는 범용 프로세서, 전용 프로세서, 또는 어플리케이션 프로세서를 포함할 수 있다. 호스트 장치(200)는 프로세서 그 자체이거나, 프로세서(들)를 포함하는 전자 장치 또는 시스템일 수 있다.
스토리지 장치(100)는 하나 이상의 불휘발성 메모리들(110) 및 메모리 컨트롤러(120)를 포함할 수 있다. 도 1은 하나 이상의 불휘발성 메모리들(110)이 제1 내지 제3 불휘발성 메모리들(111, 112, 113)을 포함하는 것을 보여준다. 그러나, 본 발명은 이에 한정되지 않으며, 스토리지 장치(100)에 포함되는 불휘발성 메모리들의 개수는 다양하게 변경 또는 수정될 수 있다.
불휘발성 메모리들(111~113) 각각은 호스트 장치(200)에 의해 제공되는 데이터(DATA)를 저장할 수 있다. 이를 위해, 불휘발성 메모리들(111~113) 각각은 데이터(DATA)를 저장하기 위한 메모리 영역(들)을 포함할 수 있다. 예를 들어, 불휘발성 메모리들(111~113) 각각이 낸드 플래시 메모리(NAND-type Flash Memory)를 포함하는 경우, 불휘발성 메모리들(111~113) 각각은 복수의 워드 라인 및 복수의 비트 라인을 따라 형성되는 메모리 셀 어레이를 포함할 수 있다.
그러나, 본 발명은 이에 한정되지 않으며, 불휘발성 메모리들(111~113) 각각은 PRAM(Phase-change Random Access Memory), MRAM(Magneto-resistive RAM), ReRAM(Resistive RAM), FRAM(Ferro-electric RAM) 등과 같은 다양한 불휘발성 메모리 중 하나 이상을 포함할 수 있다.
메모리 컨트롤러(120)는 스토리지 장치(100)의 전반적인 동작들을 제어할 수 있다. 예를 들어, 메모리 컨트롤러(120)는 불휘발성 메모리들(110)의 동작들을 스케줄링하거나, 스토리지 장치(100)에서 처리되는 데이터를 인코딩 및 디코딩할 수 있다. 예를 들어, 메모리 컨트롤러(120)의 제어에 따라, 불휘발성 메모리들(110)에 저장된 데이터에 대하여 내부 관리 동작(예컨대, 리드 리클레임(Read Reclaim), 가비지 콜렉션(Garbage Collection) 등)이 수행될 수 있다. 예를 들어, 메모리 컨트롤러(120)의 제어에 따라, 호스트 장치(200)로부터 제공되는 데이터(DATA)가 불휘발성 메모리들(110)에 저장되거나, 불휘발성 메모리들(110)로부터 출력된 데이터(DATA)가 호스트 장치(200)로 제공될 수 있다.
예시적인 실시 예에서, 불휘발성 메모리들(111~113)은 각각 서로 다른 반도체 다이(Die)들 또는 칩(Chip)들로 구현되어, 스토리지 장치(100)에 포함되는 PCB(Printed Circuit Board) 상에 실장될 수 있다. 이 경우, 메모리 컨트롤러(120)는 불휘발성 메모리들(111~113)을 병렬적으로 제어할 수 있다. 예를 들어, 메모리 컨트롤러(120)는 제1 불휘발성 메모리(111) 및 제2 불휘발성 메모리(112)로부터 각각에 저장된 데이터를 병렬적으로 출력할 수 있다.
예시적인 실시 예에서, 메모리 컨트롤러(120)는 쓰기 동작에서 불휘발성 메모리들(110)에 동일한 값을 가지는 데이터가 중복하여 저장되지 않도록 중복 제거(deduplication)를 수행할 수 있다. 예를 들어, 호스트 장치(200)로부터 데이터(DATA) 쓰기가 요청되는 경우, 메모리 컨트롤러(120)는 호스트 장치(200)로부터 제공된 데이터(DATA)와 불휘발성 메모리들(110)에 미리 저장된 데이터를 비교할 수 있다. 호스트 장치(200)로부터 제공된 데이터(DATA)와 동일한 데이터가 불휘발성 메모리들(110)에 미리 저장된 경우, 쓰기 요청된 데이터(DATA)가 불휘발성 메모리들(110)에 저장되지 않을 수 있다. 즉, 중복 제거에 따라 복수의 데이터 중 하나 또는 일부 데이터만이 불휘발성 메모리들(110)에 저장될 수 있다. 이하에서는, 설명의 편의를 위해, 중복 제거에 따라 동일한 값을 가지는 데이터 중 불휘발성 메모리들(110)에 저장된 데이터를 기준 데이터로 지칭한다.
예시적인 실시 예에서, 메모리 컨트롤러(120)는 기준 데이터와 연관된 정보에 따라 기준 데이터를 복제하고, 복제된 데이터(replicated data)를 불휘발성 메모리들(110)에 저장할 수 있다. 예를 들어, 메모리 컨트롤러(120)는 기준 데이터에 대한 접근 빈도(access frequency)(즉, 단위 시간 당 접근 횟수)에 따라 기준 데이터를 복제할 수 있다. 기준 데이터는 다양한 원인에 기인하여 접근될 수 있다(예를 들어, 기준 데이터가 저장되거나, 읽히거나, 또는 수정(Modify)됨으로써). 기준 데이터에 대한 접근 빈도가 제1 기준 값을 초과하는 경우, 메모리 컨트롤러(120)는 기준 데이터를 복제할 수 있다. 불휘발성 메모리들(110)에 기준 데이터와 복제된 데이터가 저장되는 경우, 기준 데이터에 대한 접근들이 복제된 데이터로 분산될 수 있기 때문에 기준 데이터에 대한 직접적인 접근 횟수 또는 접근 빈도가 감소될 수 있다.
예시적인 실시 예에서, 메모리 컨트롤러(120)는 기준 데이터 및 복제된 데이터와 연관된 정보에 따라 불휘발성 메모리들(110)에 저장된 기준 데이터 또는 복제된 데이터를 제거(remove)(또는, 무효화(invalidate))할 수 있다. 예를 들어, 기준 데이터 및 복제된 데이터에 대한 접근 빈도가 제2 기준 값 이하가 되는 경우, 메모리 컨트롤러(120)는 기준 데이터 또는 복제된 데이터를 제거할 수 있다. 이에 따라, 불휘발성 메모리들(110)에서 동일한 값을 가지는 복수의 데이터 중 하나 또는 일부 데이터만을 제외한 나머지 데이터가 제거될 수 있다. 여기서, 데이터를 제거 또는 무효화하는 것은 데이터를 메모리 소자로부터 물리적으로 소거하는 것을 의미하거나, 데이터가 저장된 물리 어드레스(physical address)와 관련된 어드레스 매핑을 끊는 것을 의미할 수 있다.
상술한 바와 같이, 메모리 컨트롤러(120)는 중복 제거를 수행하면서 빈번하게 접근되는 기준 데이터(즉, 핫(hot) 데이터)를 복제할 수 있다. 이에 따라, 기준 데이터에 대한 과도한 접근으로 발생될 수 있는 에러(예를 들어, 리드 디스터번스(Read Disturbance)에 기인하는 에러)를 방지하여 스토리지 장치(100)의 신뢰성을 향상시킬 수 있다. 또한, 메모리 컨트롤러(120)는 드물게 접근되는 기준 데이터 또는 복제된 데이터(즉, 콜드(cold) 데이터)를 제거할 수 있다. 이에 따라, 메모리 컨트롤러(120)는 데이터의 신뢰성을 유지하면서 불휘발성 메모리들(110)의 가용 용량을 확보할 수 있다.
메모리 컨트롤러(120)는 이러한 다양한 동작 및 뒤에서 설명될 동작들을 수행하기 위해, 하드웨어 구성, 소프트웨어 구성, 또는 그것들의 하이브리드(Hybrid) 구성을 포함할 수 있다. 예를 들어, 메모리 컨트롤러(120)는 특정 동작을 수행하도록 구성되는 전용 하드웨어 회로를 포함할 수 있다. 추가로 또는 대안적으로, 메모리 컨트롤러(120)는 특정 동작을 수행하도록 구성되는 프로그램 코드(Program Code)의 명령어 집합(Instruction Set)을 실행할 수 있는 하나 이상의 프로세서 코어들을 포함할 수 있다.
도 2는 도 1의 메모리 컨트롤러의 예시적인 구성을 보여주는 블록도이다. 간결한 설명을 위하여, 메모리 컨트롤러(120)의 일부 구성 요소들이 도 2에 도시된다. 그러나 본 발명이 이에 한정되는 것은 아니며, 메모리 컨트롤러(120)는 에러 정정 코드(ECC; Error Correction Code) 회로 등과 같은 다른 구성 요소들을 더 포함할 수 있다.
도 2를 참조하면, 메모리 컨트롤러(120)는 시스템 버스(121), 프로세서(122), RAM(123), ROM(124), 호스트 인터페이스(125), 메모리 인터페이스(126), 및 데이터 중복 제거기(127)를 포함한다.
시스템 버스(121)는 메모리 컨트롤러(120)의 구성 요소들 사이에 채널을 제공하도록 구성된다. 프로세서(122)는 메모리 컨트롤러(120)의 제반 동작을 제어할 수 있다. RAM(123)은 메모리 컨트롤러(120)의 버퍼 메모리, 캐시 메모리, 또는 동작 메모리로서 사용될 수 있다. RAM(123)은 프로세서(122)가 실행하는 코드들 및 명령들을 저장할 수 있다. RAM(123)은 프로세서(122)에 의해 처리되는 데이터를 저장할 수 있다. ROM(124)은 메모리 컨트롤러(120)가 동작하는데 요구되는 다양한 정보를 펌웨어 형태로 저장할 수 있다.
메모리 컨트롤러(120)는 호스트 인터페이스(125)를 통해 호스트 장치(200)와 통신할 수 있다. 메모리 컨트롤러(120)는 메모리 인터페이스(126)를 통해 불휘발성 메모리들(110)과 통신할 수 있다.
예시적인 실시 예에서, FTL(128)은 RAM(123)에 저장될 수 있다. FTL(128)은 메모리 컨트롤러(120)의 소프트웨어 동작을 수행하는 소프트웨어 계층으로서 프로세서(122)에 의해 구동될 수 있다. FTL(128)은 불휘발성 메모리들(110)이 효율적으로 사용될 수 있도록 호스트 장치(200) 및 불휘발성 메모리들(110) 사이에서 다양한 유지 관리 동작을 수행할 수 있다.
예를 들어, FTL(128)은 논리 어드레스(logical address) 및 물리 어드레스 사이의 변환 동작을 수행할 수 있다. 논리 어드레스는 호스트 장치(200)의 파일 시스템에 의해 관리되는 정보로서, 도 1의 호스트 장치(200)로부터 스토리지 장치(100)로 전송되는 어드레스(ADDR)는 논리 어드레스에 대응할 수 있다. 물리 어드레스는 불휘발성 메모리들(110)에서 데이터가 저장되는 메모리 영역의 물리적 위치를 가리키는 정보이다. FTL(128)은 어드레스 매핑 테이블을 통해 어드레스 변환 동작을 관리할 수 있다.
예시적인 실시 예에서, FTL(128)은 물리 어드레스와 연관된 메타 데이터를 관리할 수 있다. 예를 들어, FTL(128)은 물리 어드레스에 대응하는 영역에 저장된 데이터에 대한 읽기 횟수(Read Count), 쓰기 시간(Write Time), P/E 싸이클(Program/Erase Cycle) 등을 관리할 수 있다. 이 경우, 물리 어드레스에 대응하는 메타 데이터는 RAM(123)에 저장될 수 있다.
데이터 중복 제거기(127)는 FTL(128)을 구동하여 데이터 중복 제거를 수행할 수 있다. 예시적인 실시 예에서, 데이터 중복 제거기(127)는 중복 제거 비율(deduplication ratio)에 따라 동일한 값을 가지는 데이터에 대한 중복 제거를 수행할 수 있다. 예를 들어, 중복 제거 비율이 20:1인 경우, 데이터 중복 제거기(127)는 20개의 동일한 값을 가지는 데이터 중 하나의 데이터를 기준 데이터로서 불휘발성 메모리들(110)에 저장할 수 있다. 중복 제거 비율은 호스트 장치(200)에 의한 요청 또는 메모리 컨트롤러(120) 내부의 알고리즘에 따라 달라질 수 있다. 중복 제거 비율은 데이터 별로 다르게 관리될 수 있다. 예를 들어, 이미지 또는 영상 데이터가 스토리지 장치(100)로 제공되는 상황에서, 이미지 또는 영상 데이터에 대한 중복 제거 비율이 증가될 수 있다. 즉, 스토리지 장치(100)의 동작 상황에 따라 중복 제거 비율이 달라질 수 있다.
데이터 중복 제거기(127)는 기준 데이터에 연관된 정보(예를 들어, 접근 빈도)에 따라 기준 데이터를 복제하거나, 기준 데이터 및 복제된 데이터에 연관된 정보(예를 들어, 접근 빈도)에 따라 기준 데이터 또는 복제된 데이터를 제거할 수 있다.
도 2에는 데이터 중복 제거기(127)가 프로세서(122) 또는 FTL(128)과 별도로 존재하는 것으로 도시되었으나, 본 발명이 이에 한정되는 것은 아니다. 예를 들어, 데이터 중복 제거기(127)의 데이터 중복 제거, 데이터 복제, 및 데이터 제거와 관련된 동작들은 프로세서(122) 또는 FTL(128)에 의해 수행될 수 있다.
도 3은 도 1의 스토리지 장치가 수행하는 데이터 중복 제거의 예시를 보여준다. 도 3을 참조하면, 메모리 컨트롤러(120)는 논리 어드레스와 물리 어드레스의 매핑 정보를 포함하는 어드레스 매핑 테이블(AMT)을 기반으로 데이터 중복 제거를 수행할 수 있다. 예를 들어, 어드레스 매핑 테이블(AMT)은 도 2의 RAM(123)에 저장되고, FTL(128)에 의해 관리될 수 있다.
메모리 컨트롤러(120)는 호스트 장치(200)로부터 쓰기 동작(WR)을 가리키는 커맨드(CMD), 어드레스(ADDR), 및 데이터(DATA)를 수신할 수 있다. 예를 들어, 메모리 컨트롤러(120)는 어드레스(ADDR)로서 제1 내지 제4 논리 어드레스들(LA1~LA4) 및 데이터(DATA1, DATA2, DATA1, DATA1)를 순차적으로 수신할 수 있다. 이 경우, 데이터(DATA1, DATA2, DATA1, DATA1)는 제1 내지 제4 논리 어드레스들(LA1~LA4) 각각에 대응할 수 있다. 메모리 컨트롤러(120)는 수신되는 어드레스(ADDR) 및 데이터(DATA)의 순서에 따라 쓰기 동작을 수행할 수 있다.
첫 번째로 제1 논리 어드레스(LA1) 및 제1 데이터(DATA1)가 수신되는 경우, 메모리 컨트롤러(120)는 제1 데이터(DATA1)와 동일한 데이터가 불휘발성 메모리들(110)에 존재하는지 여부를 판별할 수 있다. 예를 들어, 메모리 컨트롤러(120)는 특정 물리 어드레스들에 대응하는 불휘발성 메모리들(110)의 영역들에 저장된 데이터를 메모리 컨트롤러(120)의 내부 메모리(예를 들어, 도 2의 RAM(123))에 미리 저장할 수 있다. 메모리 컨트롤러(120)는 제1 데이터(DATA1)와 내부 메모리에 미리 저장된 데이터를 비교할 수 있다. 제1 데이터(DATA1)와 동일한 데이터가 불휘발성 메모리들(110)에 존재하지 않는 것으로 판별된 경우, 도 3에 도시된 바와 같이, 메모리 컨트롤러(120)는 제1 데이터(DATA1)를 제1 불휘발성 메모리(111)에 저장할 수 있다. 이 경우, 제1 불휘발성 메모리(111)는 제1 메모리 영역(MA1)에 제1 데이터(DATA1)를 저장할 수 있다. 제1 메모리 영역(MA1)은 제1 물리 어드레스(PA1)에 대응할 수 있다. 제1 메모리 영역(MA1)에 제1 데이터(DATA1)가 저장됨에 따라, 메모리 컨트롤러(120)는 제1 논리 어드레스(LA1)와 제1 물리 어드레스(PA1)의 매핑 정보를 어드레스 매핑 테이블(AMT)에 저장할 수 있다.
두 번째로 제2 논리 어드레스(LA2) 및 제2 데이터(DATA2)가 수신되는 경우, 메모리 컨트롤러(120)는 제2 데이터(DATA2)와 동일한 데이터가 불휘발성 메모리들(110)에 존재하는지 여부를 판별할 수 있다. 제2 데이터(DATA2)와 동일한 데이터가 불휘발성 메모리들(110)에 존재하지 않는 것으로 판별된 경우, 도 3에 도시된 바와 같이, 메모리 컨트롤러(120)는 제2 데이터(DATA2)를 제2 불휘발성 메모리(112)에 저장할 수 있다. 이 경우, 제2 불휘발성 메모리(112)는 제2 메모리 영역(MA2)에 제2 데이터(DATA2)를 저장할 수 있다. 제2 메모리 영역(MA2)은 제2 물리 어드레스(PA2)에 대응할 수 있다. 제2 메모리 영역(MA2)에 제2 데이터(DATA2)가 저장됨에 따라, 메모리 컨트롤러(120)는 제2 논리 어드레스(LA2)와 제2 물리 어드레스(PA2)의 매핑 정보를 어드레스 매핑 테이블(AMT)에 저장할 수 있다.
세 번째로 제3 논리 어드레스(LA3) 및 제1 데이터(DATA1)가 수신되는 경우, 메모리 컨트롤러(120)는 제1 데이터(DATA1)와 동일한 데이터가 불휘발성 메모리들(110)에 존재하는지 여부를 판별할 수 있다. 도 3에 도시된 바와 같이, 제1 불휘발성 메모리(111)에 제1 데이터(DATA1)가 미리 저장되어 있으므로, 메모리 컨트롤러(120)는 제1 데이터(DATA1)와 동일한 데이터가 불휘발성 메모리들(110)에 존재하는 것으로 판별할 수 있다. 이에 따라, 메모리 컨트롤러(120)는 중복 제거를 위해 수신된 제1 데이터(DATA1)를 불휘발성 메모리들(110)에 저장하지 않을 수 있다. 수신된 제1 데이터(DATA1)가 제1 물리 어드레스(PA1)에 대응하는 제1 메모리 영역(MA1)에 미리 저장되어 있으므로, 메모리 컨트롤러(120)는 제3 논리 어드레스(LA3)와 제1 물리 어드레스(PA1)의 매핑 정보를 어드레스 매핑 테이블(AMT)에 저장할 수 있다.
네 번째로 제4 논리 어드레스(LA4) 및 제1 데이터(DATA1)가 수신되는 경우, 메모리 컨트롤러(120)는, 앞에서 설명한 바와 같이, 중복 제거를 위해 수신된 제1 데이터(DATA1)를 불휘발성 메모리들(110)에 저장하지 않을 수 있다. 수신된 제1 데이터(DATA1)가 제1 물리 어드레스(PA1)에 대응하는 제1 메모리 영역(MA1)에 미리 저장되어 있으므로, 메모리 컨트롤러(120)는 제4 논리 어드레스(LA4)와 제1 물리 어드레스(PA1)의 매핑 정보를 어드레스 매핑 테이블(AMT)에 저장할 수 있다.
상술한 바와 같이, 메모리 컨트롤러(120)의 중복 제거 동작에 따라, 제1 논리 어드레스(LA1), 제3 논리 어드레스(LA3), 및 제4 논리 어드레스(LA4)에 대응하는 제1 데이터(DATA1)가 제1 불휘발성 메모리(111)에 한 번만 저장될 수 있다. 또한, 제2 논리 어드레스(LA2)에 대응하는 제2 데이터(DATA2)는 제2 불휘발성 메모리(112)에 한 번만 저장될 수 있다. 즉, 중복 제거에 따라 제1 데이터(DATA1) 및 제2 데이터(DATA2)가 불휘발성 메모리들(110)에 저장되므로, 제1 데이터(DATA1) 및 제2 데이터(DATA2)는 기준 데이터일 수 있다.
도 3에서는 제1 데이터(DATA1) 및 제2 데이터(DATA2)가 제1 불휘발성 메모리(111) 및 제2 불휘발성 메모리(112)에 저장되는 것으로 도시하였으나, 본 발명이 이에 한정되는 것은 아니다. 예를 들어, 제1 데이터(DATA1) 및 제2 데이터(DATA2)는 불휘발성 메모리들(110)의 임의의 메모리 영역들에 저장될 수 있다.
이하에서는, 도 4 내지 도 8b를 참조하여 스토리지 장치(100)가 중복 제거에 따라 저장된 기준 데이터를 복제하는 동작들을 상세하게 설명할 것이다.
도 4는 도 1의 스토리지 장치가 기준 데이터를 복제하는 하나의 예시적인 동작을 보여주는 순서도이다. 도 1 및 도 4를 참조하면, S101 단계에서, 스토리지 장치(100)는 불휘발성 메모리에 기준 데이터를 저장할 수 있다. 예를 들어, 기준 데이터는 동일한 값을 가지는 데이터 중 중복 제거에 따라 불휘발성 메모리에 저장된 데이터일 수 있다.
S102 단계에서, 스토리지 장치(100)는 기준 데이터에 대한 접근 빈도가 제1 기준 값을 초과하는지 여부를 판별할 수 있다. 예를 들어, 스토리지 장치(100)는 특정 시간 동안 기준 데이터에 대한 읽기 횟수가 제1 기준 값을 초과하는지 여부를 판별할 수 있다. 예를 들어, 도 3의 제1 데이터(DATA1)를 기준 데이터라 가정하면, 제1 논리 어드레스(LA1), 제3 논리 어드레스(LA3), 및 제4 논리 어드레스(LA4) 중 어느 하나에 대한 읽기 동작에 따라 기준 데이터에 대한 읽기 횟수가 증가될 수 있다. 이에 따라, 기준 데이터에 대한 접근 빈도가 증가될 수 있다.
기준 데이터에 대한 접근 빈도가 제1 기준 값을 초과하는 경우, S103 단계에서, 스토리지 장치(100)는 기준 데이터에 대한 복제된 데이터를 생성하고 복제된 데이터를 불휘발성 메모리에 저장할 수 있다. 예를 들어, 스토리지 장치(100)는 기준 데이터가 저장된 불휘발성 메모리와 다른 불휘발성 메모리에 복제된 데이터를 저장할 수 있다. 이에 따라, 기준 데이터의 값과 동일한 값을 가지는 복제된 데이터가 불휘발성 메모리에 저장될 수 있다.
S104 단계에서, 스토리지 장치(100)는 기준 데이터 또는 복제된 데이터에 대한 접근 빈도가 제1 기준 값을 초과하는지 여부를 판별할 수 있다. 기준 데이터 또는 복제된 데이터에 대한 접근 빈도가 제1 기준 값을 초과하는 경우, S103 단계에서, 스토리지 장치(100)는 기준 데이터에 대한 복제된 데이터를 생성하고 복제된 데이터를 불휘발성 메모리에 저장할 수 있다. 이에 따라, 복수의 복제된 데이터가 생성될 수 있다. 이 경우, 스토리지 장치(100)는 기준 데이터 및 기존의 복제된 데이터가 저장된 불휘발성 메모리와 다른 불휘발성 메모리에 새로운 복제된 데이터를 저장할 수 있다.
즉, 스토리지 장치(100)는 기준 데이터에 대한 접근이 복제된 데이터로 분산되더라도 기준 데이터에 대한 접근이 계속하여 빈번하게 이루어지는 경우, 스토리지 장치(100)는 S103 및 S104 단계들을 통해 복제된 데이터를 계속하여 생성할 수 있다.
상술한 바와 같이, 스토리지 장치(100)는 중복 제거를 수행함에도 불구하고, 데이터에 대한 접근 빈도에 따라 복제된 데이터를 생성할 수 있다. 복제된 데이터가 생성된 이후에도 데이터에 대한 접근이 계속하여 빈번하게 이루어지는 경우, 스토리지 장치(100)는 추가적으로 복제된 데이터를 생성할 수 있다. 이에 따라, 기준 데이터에 대한 접근 동작들이 분산될 수 있고, 기준 데이터에 대한 접근이 빈번하게 이루어짐으로써 발생될 수 있는 에러가 감소될 수 있다. 따라서, 스토리지 장치(100)의 신뢰성이 향상될 수 있다. 또한, 기준 데이터가 저장된 불휘발성 메모리와 다른 불휘발성 메모리에 복제된 데이터가 저장되는 경우, 기준 데이터 및 복제된 데이터가 병렬적으로 출력될 수 있다. 따라서, 기준 데이터에 대한 읽기 속도가 향상될 수 있다.
도 5는 도 1의 스토리지 장치가 기준 데이터를 복제하는 다른 하나의 예시적인 동작을 보여주는 순서도이다. 도 1 및 도 5를 참조하면, S111 단계에서, 스토리지 장치(100)는 불휘발성 메모리에 기준 데이터를 저장할 수 있다.
S112 단계에서, 스토리지 장치(100)는 기준 데이터에 대한 중복 제거 비율이 기준 비율을 초과하는지 여부를 판별할 수 있다. 예를 들어, 도 3의 제1 데이터(DATA1)를 기준 데이터라 가정하면, 제1 데이터(DATA1)에 대한 중복 제거 비율이 기준 비율을 초과하는지 여부를 판별할 수 있다.
기준 데이터에 대한 중복 제거 비율이 기준 비율을 초과하는 경우, S113 단계에서, 스토리지 장치(100)는 기준 데이터에 대한 복제된 데이터를 생성하고 복제된 데이터를 불휘발성 메모리에 저장할 수 있다. 예를 들어, 스토리지 장치(100)는 기준 데이터가 저장된 불휘발성 메모리와 다른 불휘발성 메모리에 복제된 데이터를 저장할 수 있다.
S114 단계에서, 스토리지 장치(100)는 기준 데이터 또는 복제된 데이터에 대한 접근 빈도가 제1 기준 값을 초과하는지 여부를 판별할 수 있다. 기준 데이터 또는 복제된 데이터에 대한 접근 빈도가 제1 기준 값을 초과하는 경우, S113 단계에서, 스토리지 장치(100)는 기준 데이터에 대한 복제된 데이터를 생성하고 복제된 데이터를 불휘발성 메모리에 저장할 수 있다. 이에 따라, 복수의 복제된 데이터가 생성될 수 있다. 이 경우, 스토리지 장치(100)는 기준 데이터 및 기존의 복제된 데이터가 저장된 불휘발성 메모리와 다른 불휘발성 메모리에 새로운 복제된 데이터를 저장할 수 있다.
상술한 바와 같이, 스토리지 장치(100)는 중복 제거를 수행함에도 불구하고, 데이터에 대한 중복 제거 비율 및 접근 빈도에 따라 복제된 데이터를 생성할 수 있다.
도 6은 도 1의 스토리지 장치가 기준 데이터를 복제하는 다른 예시적인 동작을 보여주는 순서도이다. 도 1 및 도 6을 참조하면, S121 단계에서, 스토리지 장치(100)는 불휘발성 메모리에 기준 데이터를 저장할 수 있다.
S122 단계에서, 스토리지 장치(100)는 기준 데이터에 대한 데이터 보유 시간(data retention time)이 기준 시간을 초과하는지 여부를 판별할 수 있다. 예를 들어, 스토리지 장치(100)는 기준 데이터가 불휘발성 메모리에 쓰여진 시간(이하에서는 쓰기 시간이라 지칭함)을 기준으로 데이터 보유 시간을 산출하고, 산출된 데이터 보유 시간이 기준 시간을 초과하는지 여부를 판별할 수 있다. 데이터 보유 시간이 기준 시간을 초과하는 경우, 기준 데이터의 값이 변경될 가능성이 높아짐에 따라 데이터의 신뢰성이 저하될 수 있다.
기준 데이터에 대한 데이터 보유 시간이 기준 시간을 초과하는 경우, S123 단계에서, 스토리지 장치(100)는 기준 데이터에 대한 복제된 데이터를 생성하고 복제된 데이터를 불휘발성 메모리에 저장할 수 있다. 예를 들어, 스토리지 장치(100)는 기준 데이터가 저장된 불휘발성 메모리와 다른 불휘발성 메모리에 복제된 데이터를 저장할 수 있다.
S124 단계에서, 스토리지 장치(100)는 최근의 복제된 데이터에 대한 데이터 보유 시간이 기준 시간을 초과하는지 여부를 판별할 수 있다. 데이터 보유 시간이 기준 시간을 초과하는 경우, S123 단계에서, 스토리지 장치(100)는 복제된 데이터를 생성하고 복제된 데이터를 불휘발성 메모리에 저장할 수 있다. 이에 따라, 복수의 복제된 데이터가 생성될 수 있다. 이 경우, 스토리지 장치(100)는 기준 데이터 및 기존의 복제된 데이터가 저장된 불휘발성 메모리와 다른 불휘발성 메모리에 새로운 복제된 데이터를 저장할 수 있다.
상술한 바와 같이, 스토리지 장치(100)는 중복 제거를 수행함에도 불구하고, 데이터 보유 시간에 따라 복제된 데이터를 생성할 수 있다. 복제된 데이터가 생성된 이후에도 복제된 데이터에 대한 데이터 보유 시간이 기준 시간을 초과하는 경우, 스토리지 장치(100)는 추가적으로 복제된 데이터를 생성할 수 있다. 이에 따라, 시간이 지남에 따라 기준 데이터의 값이 달라짐으로써 발생될 수 있는 에러가 감소될 수 있다. 따라서, 스토리지 장치(100)의 신뢰성이 향상될 수 있다.
도 7a 및 도 7b는 도 1의 스토리지 장치가 본 발명의 실시 예들에 따라 복제된 데이터를 생성하는 예시를 보여준다. 설명의 편의를 위해, 도 3을 참조하여 설명한 중복 제거 동작에 따라 제1 물리 어드레스(PA1)에 대응하는 제1 메모리 영역(MA1)에 기준 데이터(rDATA)가 저장된 것으로 가정한다.
도 7a를 참조하면, 메모리 컨트롤러(120)는 물리 어드레스와 연관된 메타 데이터를 관리하기 위한 물리 어드레스 관리 테이블(PAMT)을 기반으로 복제된 데이터를 생성할 수 있다. 물리 어드레스 관리 테이블(PAMT)은 데이터가 기입된 물리 어드레스, 데이터에 대한 읽기 횟수, 쓰기 시간, 및 복제된 데이터 어드레스 필드들을 포함할 수 있다. 여기서, 복제된 데이터 어드레스는 데이터에 대한 복제된 데이터가 생성되는 경우, 복제된 데이터가 저장되는 메모리 영역의 물리 어드레스를 나타낸다. 예를 들어, 기준 데이터에 대한 복제된 데이터가 생성되지 않은 경우, 기준 데이터의 물리 어드레스에 대응하는 복제된 데이터 어드레스는 널(null) 값일 수 있다. 예를 들어, 물리 어드레스 관리 테이블(PAMT)은 도 2의 RAM(123)에 저장되고, FTL(128)에 의해 관리될 수 있다.
메모리 컨트롤러(120)는 제1 메모리 영역(MA1)에 기준 데이터(rDATA)가 저장됨에 따라 물리 어드레스 관리 테이블(PAMT)에 제1 물리 어드레스(PA1)에 관한 정보를 추가할 수 있다. 예를 들어, 메모리 컨트롤러(120)는 물리 어드레스 관리 테이블(PAMT)에 기준 데이터(rDATA)에 대한 읽기 횟수로서 제1 읽기 횟수(RC1)를 저장하고, 쓰기 시간으로서 제1 쓰기 시간(WT1)을 저장할 수 있다. 메모리 컨트롤러(120)는 기준 데이터(rDATA)에 대한 접근 동작을 모니터하고, 모니터 결과에 따라 제1 읽기 횟수(RC1)를 갱신할 수 있다. 도 6a에는 도시되지 않았으나, 메모리 컨트롤러(120)는 기준 데이터(rDATA)에 대한 중복 제거 비율을 관리할 수 있다.
메모리 컨트롤러(120)는 기준 데이터(rDATA)와 연관된 정보에 따라 제1 복제된 데이터(dDATA1)를 생성할 수 있다. 예시적인 실시 예에서(도 4 참조), 메모리 컨트롤러(120)는 기준 데이터(rDATA)에 대응하는 제1 읽기 횟수(RC1)에 따라 기준 데이터(rDATA)에 대한 제1 복제된 데이터(dDATA1)를 생성할 수 있다. 예를 들어, 메모리 컨트롤러(120)는 특정 시간 동안 제1 읽기 횟수(RC1)의 증가분에 따라 기준 데이터(rDATA)에 대한 접근 빈도를 산출할 수 있다. 기준 데이터(rDATA)에 대한 접근 빈도가 제1 기준 값을 초과하는 경우, 메모리 컨트롤러(120)는 기준 데이터(rDATA)에 대한 제1 복제된 데이터(dDATA1)를 생성할 수 있다.
다른 예시적인 실시 예에서(도 5 참조), 메모리 컨트롤러(120)는 기준 데이터(rDATA)에 대응하는 중복 제거 비율에 따라 기준 데이터(rDATA)에 대한 제1 복제된 데이터(dDATA1)를 생성할 수 있다. 예를 들어, 메모리 컨트롤러(120)는 중복 제거 비율이 기준 비율을 초과하는 경우, 제1 복제된 데이터(dDATA1)를 생성할 수 있다.
다른 예시적인 실시 예에서(도 6 참조), 메모리 컨트롤러(120)는 기준 데이터(rDATA)에 대응하는 제1 쓰기 시간(WT1)에 따라 기준 데이터(rDATA)에 대한 제1 복제된 데이터(dDATA1)를 생성할 수 있다. 예를 들어, 메모리 컨트롤러(120)는 제1 쓰기 시간(WT1)과 현재 시간을 기반으로 데이터 보유 시간을 산출할 수 있다. 기준 데이터(rDATA)에 대한 데이터 보유 시간이 기준 시간을 초과하는 경우, 메모리 컨트롤러(120)는 기준 데이터(rDATA)에 대한 제1 복제된 데이터(dDATA1)를 생성할 수 있다.
메모리 컨트롤러(120)는 제1 복제된 데이터(dDATA1)를 기준 데이터(rDATA)가 저장된 제1 불휘발성 메모리(111)와 다른 제2 불휘발성 메모리(112)에 저장할 수 있다.
메모리 컨트롤러(120)는 물리 어드레스 관리 테이블(PAMT)에서 제1 복제된 데이터(dDATA1)가 저장된 제2 메모리 영역(MA2)의 제2 물리 어드레스(PA2)를 제1 물리 어드레스(PA1)에 대응하여 저장할 수 있다. 메모리 컨트롤러(120)는 제2 메모리 영역(MA2)에 제1 복제된 데이터(dDATA1)가 저장됨에 따라 물리 어드레스 관리 테이블(PAMT)에 제2 물리 어드레스(PA2)에 대응하는 메타 데이터를 추가할 수 있다. 예를 들어, 메모리 컨트롤러(120)는 물리 어드레스 관리 테이블(PAMT)에 제1 복제된 데이터(dDATA1)에 대한 읽기 횟수로서 제2 읽기 횟수(RC2)를 저장하고, 쓰기 시간으로서 제2 쓰기 시간(WT2)을 저장할 수 있다. 메모리 컨트롤러(120)는 제1 복제된 데이터(dDATA1)에 대한 접근 동작을 모니터하고, 모니터 결과에 따라 제2 읽기 횟수(RC2)를 갱신할 수 있다.
도 7b를 참조하면, 도 7a에서 제1 복제된 데이터(dDATA1)가 저장된 후, 메모리 컨트롤러(120)는 기준 데이터(rDATA) 또는 제1 복제된 데이터(dDATA1)와 연관된 정보에 따라 제2 복제된 데이터(dDATA2)를 생성할 수 있다. 예시적인 실시 예에서(도 4 및 도 5 참조), 메모리 컨트롤러(120)는 기준 데이터(rDATA)에 대응하는 제1 읽기 횟수(RC1) 또는 제1 복제된 데이터(dDATA1)에 대응하는 제2 읽기 횟수(RC2)에 따라 기준 데이터(rDATA)에 대한 제2 복제된 데이터(dDATA2)를 생성할 수 있다. 예를 들어, 메모리 컨트롤러(120)는 특정 시간 동안 제1 읽기 횟수(RC1)의 증가분에 따라 기준 데이터(rDATA)에 대한 제1 접근 빈도를 산출하고, 특정 시간 동안 제2 읽기 횟수(RC2)의 증가분에 따라 제1 복제된 데이터(dDATA1)에 대한 제2 접근 빈도를 산출할 수 있다. 제1 접근 빈도 또는 제2 접근 빈도가 제1 기준 값을 초과하는 경우, 메모리 컨트롤러(120)는 기준 데이터(rDATA)에 대한 제2 복제된 데이터(dDATA2)를 생성할 수 있다.
다른 예시적인 실시 예에서(도 6 참조), 메모리 컨트롤러(120)는 제1 복제된 데이터(dDATA1)에 대응하는 제2 쓰기 시간(WT2)에 따라 기준 데이터(rDATA)에 대한 제2 복제된 데이터(dDATA2)를 생성할 수 있다. 예를 들어, 메모리 컨트롤러(120)는 제2 쓰기 시간(WT2)과 현재 시간을 기반으로 제2 복제된 데이터(dDATA2)에 대한 데이터 보유 시간을 산출할 수 있다. 제2 복제된 데이터(dDATA2)에 대한 데이터 보유 시간이 기준 시간을 초과하는 경우, 메모리 컨트롤러(120)는 기준 데이터(rDATA)에 대한 제2 복제된 데이터(dDATA2)를 생성할 수 있다. 이 경우, 메모리 컨트롤러(120)는 제1 복제된 데이터(dDATA1)를 기반으로 제2 복제된 데이터(dDATA2)를 생성할 수 있다.
메모리 컨트롤러(120)는 제2 복제된 데이터(dDATA2)를 기준 데이터(rDATA) 및 제1 복제된 데이터(dDATA1)가 저장된 불휘발성 메모리들(111, 112)과 다른 제3 불휘발성 메모리(113)에 저장할 수 있다.
메모리 컨트롤러(120)는 물리 어드레스 관리 테이블(PAMT)에서 제2 복제된 데이터(dDATA2)가 저장된 제3 메모리 영역(MA3)의 제3 물리 어드레스(PA3)를 제2 물리 어드레스(PA2)에 대응하여 저장할 수 있다. 이에 따라, 기준 데이터(rDATA)에 대응하는 제1 물리 어드레스(PA1)는 제2 물리 어드레스(PA2)를 가리키고, 제2 물리 어드레스(PA2)는 제3 물리 어드레스(PA3)를 가리킬 수 있다. 즉, 기준 데이터(rDATA)와 제1 및 제2 복제된 데이터(dDATA1, dDATA2)에 대응하는 제1 내지 제3 물리 어드레스들(PA1~PA3)은 연결 리스트(linked list) 형태로 물리 어드레스 관리 테이블(PAMT)에서 관리될 수 있다. 이에 따라, 제2 및 제3 물리 어드레스들(PA2, PA3)은 제1 물리 어드레스(PA1)에 대응할 수 있다.
메모리 컨트롤러(120)는 제3 메모리 영역(MA3)에 제2 복제된 데이터(dDATA2)가 저장됨에 따라 물리 어드레스 관리 테이블(PAMT)에 제3 물리 어드레스(PA3)에 대응하는 메타 데이터를 추가할 수 있다. 예를 들어, 메모리 컨트롤러(120)는 물리 어드레스 관리 테이블(PAMT)에 제2 복제된 데이터(dDATA2)에 대한 읽기 횟수로서 제3 읽기 횟수(RC3)를 저장하고, 쓰기 시간으로서 제3 쓰기 시간(WT3)을 저장할 수 있다. 메모리 컨트롤러(120)는 제2 복제된 데이터(dDATA2)에 대한 접근 동작을 모니터하고, 모니터 결과에 따라 제3 읽기 횟수(RC3)를 갱신할 수 있다.
상술한 바와 같이, 물리 어드레스 관리 테이블(PAMT)을 통해 기준 데이터 및 복제된 데이터가 기입된 물리 어드레스들의 연결 관계가 관리될 수 있으나, 본 발명이 이에 한정되는 것은 아니다. 예를 들어, 도 3의 어드레스 매핑 테이블(AMT)을 통해 기준 데이터 및 복제된 데이터가 기입된 물리 어드레스들의 연결 관계가 관리될 수 있다.
도 7a 및 도 7b에서는 기준 데이터 및 복제된 데이터가 서로 다른 불휘발성 메모리들에 저장되는 것으로 도시되었으나, 본 발명이 이에 한정되는 것은 아니다. 예를 들어, 기준 데이터 및 복제된 데이터는 동일한 불휘발성 메모리(예를 들어, 제1 불휘발성 메모리(111))에 저장될 수 있다. 이 경우, 리드 디스터번스를 감소시키기 위해, 기준 데이터 및 복제된 데이터는 인접한 메모리 영역들에 저장되지 않을 수 있다.
상술한 바와 같이, 스토리지 장치(100)는 기준 데이터(rDATA)에 대한 접근 빈도에 따라 복제된 데이터를 생성할 수 있다. 기준 데이터(rDATA)에 대한 접근 빈도는 기준 데이터(rDATA)가 저장된 메모리 영역에 대한 접근 횟수를 기반으로 산출될 수 있으나, 본 발명은 이에 한정되지 않는다. 예를 들어, 기준 데이터(rDATA)에 대한 접근 빈도는 기준 데이터(rDATA)가 저장된 메모리 영역 및 인접한 메모리 영역에 대한 접근 횟수를 기반으로 산출될 수 있다.
이하에서는, 도 8 및 도 9을 참조하여 불휘발성 메모리들(110)에 저장된 기준 데이터(rDATA)에 대한 읽기 동작을 자세하게 설명할 것이다.
도 8은 도 1의 스토리지 장치가 기준 데이터에 대한 읽기를 수행하는 예시적인 동작을 보여주는 순서도이다. 도 8에 도시된 동작들은 도 4 내지 도 7b를 참조하여 설명한 바와 같이, 기준 데이터에 대한 복제된 데이터가 불휘발성 메모리에 저장된 후 수행될 수 있다.
도 1 및 도 8을 참조하면, S131 단계에서, 스토리지 장치(100)는 기준 데이터에 대한 읽기 요청을 수신할 수 있다. 예를 들어, 스토리지 장치(100)는 호스트 장치(200)로부터 기준 데이터에 대한 읽기 커맨드를 수신할 수 있다.
S132 단계에서, 스토리지 장치(100)는 기준 데이터와 복제된 데이터 중 하나를 선택할 수 있다. 복제된 데이터는 기준 데이터와 동일한 값을 가지므로, 선택된 데이터는 읽기 요청된 기준 데이터와 동일할 수 있다. 예시적인 실시 예에서, 스토리지 장치(100)는 기준 데이터에 대한 읽기 횟수, P/E 싸이클 수, 인접한 메모리 영역에 저장된 데이터에 대한 읽기 횟수 등을 기반으로 데이터를 선택할 수 있다. 예를 들어, 스토리지 장치(100)는 기준 데이터 및 복제 데이터 중 가장 적은 읽기 횟수를 가지는 데이터를 선택할 수 있다.
다른 예로서, 스토리지 장치(100)는 미리 정해진 순서에 따라 데이터를 선택할 수 있다. 구체적으로, 기준 데이터와 두 개의 복제된 데이터가 존재하는 경우, 스토리지 장치(100)는 첫 번째 읽기 커맨드에 응답하여 기준 데이터를 선택할 수 있다. 스토리지 장치(100)는 두 번째 읽기 커맨드에 응답하여 하나의 복제된 데이터를 선택하고, 세 번째 읽기 커맨드에 응답하여 다른 하나의 복제된 데이터를 선택할 수 있다.
S133 단계에서, 스토리지 장치(100)는 선택된 데이터를 출력할 수 있다. 예를 들어, 스토리지 장치(100)는 선택된 데이터를 호스트 장치(200)로 제공할 수 있다.
상술한 바와 같이, 스토리지 장치(100)는 기준 데이터에 대한 읽기 요청을 수신하는 경우, 복제된 데이터를 출력함으로써 기준 데이터에 대한 접근량을 분산시킬 수 있다. 이에 따라, 리드 디스터번스에 따라 발생될 수 있는 에러가 감소될 수 있고, 데이터의 신뢰성이 향상될 수 있다.
도 8을 참조하여 설명된 스토리지 장치(100)의 읽기 동작은 예시적인 동작일 뿐이며, 본 발명이 이에 한정되는 것은 아니다. 예를 들어, 호스트 장치(200)로부터 기준 데이터에 대한 읽기 요청이 수신되는 경우, 스토리지 장치(100)는 기준 데이터의 일부 섹터와 복제된 데이터의 일부 섹터를 출력하고, 출력된 섹터들을 기반으로 기준 데이터의 값과 동일한 값을 가지는 데이터를 호스트 장치(200)로 제공할 수 있다.
도 9는 도 1의 스토리지 장치가 본 발명의 실시 예에 따라 읽기 동작을 수행하는 예시를 보여준다. 설명의 편의를 위해, 스토리지 장치(100)의 중복 제거 동작에 따라 기준 데이터(rDATA)가 제1 물리 어드레스(PA1)에 대응하는 제1 메모리 영역(MA1)에 저장되고, 메모리 컨트롤러(120)의 어드레스 매핑 테이블(AMT)이 제1 내지 제3 논리 어드레스들(LA1~LA3)에 대응하여 제1 물리 어드레스(PA1)를 저장하는 것으로 가정한다.
도 9를 참조하면, 도 4 내지 도 7b를 참조하여 설명된 바에 따라, 불휘발성 메모리들(110)은 기준 데이터(rDATA), 제1 및 제2 복제된 데이터(dDATA1, dDATA2)를 저장할 수 있다. 기준 데이터(rDATA)는 제1 메모리 영역(MA1)에 저장되고, 제1 복제된 데이터(dDATA1)는 제2 메모리 영역(MA2)에 저장되고, 제2 복제된 데이터(dDATA2)는 제3 메모리 영역(MA3)에 저장될 수 있다. 이에 따라, 메모리 컨트롤러(120)의 물리 어드레스 관리 테이블(PAMT)에는 제1 내지 제3 물리 어드레스들(PA1~PA3)에 대응하는 메타 데이터가 저장될 수 있다.
메모리 컨트롤러(120)는 호스트 장치(200)로부터 기준 데이터(rDATA)를 읽기 위한 읽기 동작(RD)을 나타내는 커맨드(CMD) 및 어드레스(ADDR)를 수신할 수 있다. 예를 들어, 어드레스(ADDR)는 제1 논리 어드레스(LA1), 제2 논리 어드레스(LA2), 또는 제3 논리 어드레스(LA3) 중 하나를 포함할 수 있다.
도 9에 도시된 바와 같이, 메모리 컨트롤러(120)는 커맨드(CMD)에 응답하여 기준 데이터(rDATA), 제1 및 제2 복제된 데이터(dDATA1, dDATA2) 중 제2 복제된 데이터(dDATA2)를 출력할 수 있다. 예를 들어, 메모리 컨트롤러(120)는 기준 데이터(rDATA)에 대한 제1 읽기 횟수(RC1), 제1 복제된 데이터(dDATA1)에 대한 제2 읽기 횟수(RC2), 및 제2 복제된 데이터(dDATA2)에 대한 제3 읽기 횟수(RC3)를 비교할 수 있다. 메모리 컨트롤러(120)는 비교 결과에 따라 가장 적은 제3 읽기 횟수(RC3)를 가지는 제2 복제된 데이터(dDATA2)를 선택할 수 있다. 메모리 컨트롤러(120)는 제3 불휘발성 메모리(113)로부터 선택된 제2 복제된 데이터(dDATA2)를 출력할 수 있다.
이에 따라, 메모리 컨트롤러(120)는 호스트 장치(200)로부터의 커맨드(CMD)에 응답하여 제2 복제된 데이터(dDATA2)를 호스트 장치(200)로 제공할 수 있다.
이하에서는, 도 10 내지 도 12b를 참조하여 스토리지 장치(100)가 기준 데이터 또는 복제된 데이터를 제거하는 동작들을 상세하게 설명할 것이다.
도 10은 도 1의 스토리지 장치가 기준 데이터 또는 복제된 데이터를 제거하는 예시적인 동작을 보여주는 순서도이다. 도 10에 도시된 동작들은 도 4 내지 도 7b를 참조하여 설명한 바와 같이, 복제된 데이터가 생성된 후 수행될 수 있다.
도 1 및 도 10를 참조하면, S141 단계에서, 스토리지 장치(100)는 기준 데이터 및 복제된 데이터 중 적어도 하나에 대한 접근 빈도가 제2 기준 값보다 작은지 여부를 판별할 수 있다. 예를 들어, 스토리지 장치(100)는 특정 시간 동안 기준 데이터에 대한 읽기 횟수를 기반으로 산출된 접근 빈도가 제2 기준 값보다 작은지 여부를 판별할 수 있다. 다른 예로서, 스토리지 장치(100)는 특정 시간 동안 복제된 데이터에 대한 읽기 횟수를 기반으로 산출된 접근 빈도가 제2 기준 값보다 작은지 여부를 판별할 수 있다. 다른 예로서, 스토리지 장치(100)는 특정 시간 동안 기준 데이터 및 복제된 데이터에 대한 읽기 횟수들의 합을 기반으로 산출된 접근 빈도가 제2 기준 값보다 작은지 여부를 판별할 수 있다. 예를 들어, 제2 기준 값은 복제된 데이터를 생성하기 위한 제1 기준 값과 동일하거나, 또는 제2 기준 값이 제1 기준 값보다 작을 수 있다.
기준 데이터 및 복제된 데이터 중 적어도 하나에 대한 접근 빈도가 제2 기준 값보다 작은 경우, S142 단계에서, 스토리지 장치(100)는 기준 데이터 및 복제된 데이터에 대한 총 읽기 횟수가 기준 횟수보다 작은지 여부를 판별할 수 있다. 예를 들어, 스토리지 장치(100)는 저장된 데이터에 대하여 제한된 읽기 가능 횟수를 가질 수 있다. 이 경우, 기준 데이터 및 복제된 데이터에 대한 총 읽기 가능 횟수가 정해질 수 있다. 기준 데이터 및 복제된 데이터에 대한 총 읽기 횟수가 기준 횟수보다 작은 경우, 스토리지 장치(100)는 기준 데이터 및 복제된 데이터에 대하여 남아있는 읽기 가능 횟수가 충분한 것으로 판별할 수 있다. 즉, 스토리지 장치(100)는 기준 데이터 또는 복제된 데이터 중 하나가 제거되더라도 남아있는 데이터를 기반으로 읽기 동작들이 충분히 수행될 수 있는 것으로 판별할 수 있다.
기준 데이터 및 복제된 데이터에 대한 총 읽기 횟수가 기준 횟수보다 작은 경우, S143 단계에서, 스토리지 장치(100)는 기준 데이터 및 복제된 데이터 중 하나를 선택할 수 있다. 예를 들어, 스토리지 장치(100)는 가장 오래된(즉, 쓰기 시간이 가장 빠른) 데이터를 선택할 수 있다. 이 경우, 기준 데이터가 선택될 수 있다. 다른 예로서, 스토리지 장치(100)는 기준 데이터 및 복제된 데이터 중 가장 큰 읽기 횟수를 가지는 데이터를 선택할 수 있다.
S144 단계에서, 스토리지 장치(100)는 선택된 데이터를 제거할 수 있다. 예를 들어, 스토리지 장치(100)는 가비지 콜렉션을 수행하여 선택된 데이터를 제거할 수 있다. 선택된 데이터가 제거됨으로써 선택된 데이터가 저장되었던 메모리 공간이 이용 가능한 메모리 영역으로서 추가로 확보될 수 있다.
상술한 바와 같이, 스토리지 장치(100)는 복제된 데이터가 생성된 이후에 데이터에 대한 접근 빈도에 따라 기준 데이터 또는 복제된 데이터를 제거할 수 있다. 복제된 데이터가 생성된 이후에 데이터에 대한 접근이 드물게 이루어지고, 동일한 값을 가지는 복수의 데이터 중 일부 데이터가 삭제되어도 읽기 동작에 문제가 없다고 판단되는 경우, 스토리지 장치(100)는 기준 데이터 또는 복제된 데이터를 제거할 수 있다. 이에 따라, 스토리지 장치(100)의 가용 용량이 추가로 확보될 수 있다.
도 11a 및 도 11b는 도 1의 스토리지 장치가 본 발명의 실시 예에 따라 복제된 데이터를 제거하는 예시를 보여준다. 설명의 편의를 위해, 도 7a 및 도 7b의 복제된 데이터 생성 동작에 따라 제1 및 제2 복제된 데이터(dDATA1, dDATA2)가 불휘발성 메모리들(110)에 저장된 후, 제1 복제된 데이터(dDATA1)를 제거하는 것으로 가정한다.
도 11a를 참조하면, 메모리 컨트롤러(120)는 기준 데이터(rDATA), 제1 및 제2 복제된 데이터(dDATA1, dDATA2) 중 적어도 하나에 대한 접근 빈도를 산출할 수 있다. 예를 들어, 메모리 컨트롤러(120)는 기준 데이터(rDATA)의 제1 읽기 횟수(RC1)를 기반으로 기준 데이터(rDATA)에 대한 접근 빈도를 산출할 수 있다. 예를 들어, 메모리 컨트롤러(120)는 기준 데이터(rDATA)의 제1 읽기 횟수(RC1), 제1 복제된 데이터(dDATA1)의 제2 읽기 횟수(RC2), 및 제2 복제된 데이터(dDATA2)의 제3 읽기 횟수(RC3)를 기반으로 기준 데이터(rDATA), 제1 및 제2 복제된 데이터(dDATA1, dDATA2)에 대한 접근 빈도(즉, 총 접근 빈도)를 산출할 수 있다.
기준 데이터(rDATA), 제1 및 제2 복제된 데이터(dDATA1, dDATA2) 중 적어도 하나에 대한 접근 빈도가 제2 기준 값보다 작은 경우, 메모리 컨트롤러(120)는 기준 데이터(rDATA), 제1 및 제2 복제된 데이터(dDATA1, dDATA2)의 총 읽기 횟수를 산출할 수 있다.
총 읽기 횟수가 기준 횟수보다 작은 경우, 메모리 컨트롤러(120)는 중복된 데이터를 제거하기 위해 기준 데이터(rDATA), 제1 및 제2 복제된 데이터(dDATA1, dDATA2) 중 제1 복제된 데이터(dDATA1)를 선택할 수 있다. 예를 들어, 메모리 컨트롤러(120)는 제1 내지 제3 읽기 횟수들(RC1~RC3) 중 제2 읽기 횟수(RC2)가 가장 큰 것으로 판별하고, 제2 읽기 횟수(RC2)에 대응하는 제1 복제된 데이터(dDATA1)를 선택할 수 있다. 다른 예로서, 메모리 컨트롤러(120)는 제1 내지 제3 쓰기 시간들(WT1~WT3) 중 제2 쓰기 시간(WT2)이 가장 빠른 것으로 판별하고, 제2 쓰기 시간(WT2)을 가지는 제1 복제된 데이터(dDATA1)를 선택할 수 있다.
도 11a에 도시된 바와 같이, 메모리 컨트롤러(120)는 선택된 제1 복제된 데이터(dDATA1)를 제거할 수 있다. 예를 들어, 메모리 컨트롤러(120)는 가비지 콜렉션을 통해 제1 복제된 데이터(dDATA1)가 저장된 제2 메모리 영역(MA2)을 제거할 수 있다.
도 11b를 참조하면, 제1 복제된 데이터(dDATA1)가 제거됨에 따라 메모리 컨트롤러(120)는 물리 어드레스 관리 테이블(PAMT)을 갱신할 수 있다. 예를 들어, 메모리 컨트롤러(120)는 제2 물리 어드레스(PA2)에 대응하는 메타 데이터를 삭제하고, 제1 물리 어드레스(PA1)에 대응하는 복제된 데이터 어드레스로서 제3 물리 어드레스(PA3)를 저장할 수 있다.
도 12a 및 도 12b는 도 1의 스토리지 장치가 본 발명의 실시 예에 따라 기준 데이터를 제거하는 예시를 보여준다. 설명의 편의를 위해, 도 7a 및 도 7b의 복제된 데이터 생성 동작에 따라 제1 및 제2 복제된 데이터(dDATA1, dDATA2)가 불휘발성 메모리들(110)에 저장된 후, 기준 데이터(rDATA)를 제거하는 것으로 가정한다.
도 12a를 참조하면, 메모리 컨트롤러(120)는 기준 데이터(rDATA), 제1 및 제2 복제된 데이터(dDATA1, dDATA2) 중 적어도 하나에 대한 접근 빈도를 산출할 수 있다. 기준 데이터(rDATA), 제1 및 제2 복제된 데이터(dDATA1, dDATA2) 중 적어도 하나에 대한 접근 빈도가 제2 기준 값보다 작은 경우, 메모리 컨트롤러(120)는 기준 데이터(rDATA), 제1 및 제2 복제된 데이터(dDATA1, dDATA2)의 총 읽기 횟수를 산출할 수 있다.
총 읽기 횟수가 기준 횟수보다 작은 경우, 메모리 컨트롤러(120)는 중복된 데이터를 제거하기 위하여 기준 데이터(rDATA), 제1 및 제2 복제된 데이터(dDATA1, dDATA2) 중 기준 데이터(rDATA)를 선택할 수 있다. 예를 들어, 메모리 컨트롤러(120)는 제1 내지 제3 읽기 횟수들(RC1~RC3) 중 제1 읽기 횟수(RC1)가 가장 큰 것으로 판별하고, 제1 읽기 횟수(RC1)를 가지는 기준 데이터(rDATA)를 선택할 수 있다. 다른 예로서, 메모리 컨트롤러(120)는 제1 내지 제3 쓰기 시간들(WT1~WT3) 중 제1 쓰기 시간(WT1)이 가장 빠른 것으로 판별하고, 제1 쓰기 시간(WT1)을 가지는 기준 데이터(rDATA)를 선택할 수 있다.
도 12a에 도시된 바와 같이, 메모리 컨트롤러(120)는 선택된 기준 데이터(rDATA)를 제거할 수 있다. 예를 들어, 메모리 컨트롤러(120)는 가비지 콜렉션을 통해 기준 데이터(rDATA)가 저장된 제1 메모리 영역(MA1)을 제거할 수 있다.
도 12b를 참조하면, 기준 데이터(rDATA)가 제거됨에 따라 메모리 컨트롤러(120)는 물리 어드레스 관리 테이블(PAMT)을 갱신할 수 있다. 예를 들어, 메모리 컨트롤러(120)는 제1 물리 어드레스(PA1)에 대응하는 메타 데이터를 삭제할 수 있다. 또한, 기준 데이터(rDATA)가 제거됨에 따라 메모리 컨트롤러(120)는 제1 물리 어드레스(PA1)가 저장된 어드레스 매핑 테이블(AMT)을 갱신할 수 있다. 예를 들어, 메모리 컨트롤러(120)는 제1 내지 제3 논리 어드레스들(LA1~LA3)에 대응하는 물리 어드레스들을 제2 물리 어드레스들(PA2)로 재매핑할 수 있다. 이에 따라, 제1 복제된 데이터(dDATA1)가 기준 데이터(rDATA)로서 취급될 수 있다.
도 13은 본 발명의 실시 예에 따른 SSD 시스템을 보여주는 블록도이다. 도 13을 참조하면, SSD 시스템(2000)은 호스트(2100) 및 SSD(2200)를 포함한다.
SSD(2200)는 신호 커넥터(2201)를 통해 호스트(2100)와 신호(SIG)를 주고 받고, 전원 커넥터(2202)를 통해 전원(PWR)을 입력 받는다. SSD(2200)는 SSD 컨트롤러(2210), 복수의 플래시 메모리들(2221~222n), 보조 전원 장치(2230), 및 버퍼 메모리(2240)를 포함한다. 플래시 메모리들(2221~222n) 각각은 별도의 다이, 또는 별도의 칩으로 구현될 수 있다. 예를 들어, 플래시 메모리들(2221~222n) 각각은 도 1 내지 도 12b를 참조하여 설명된 불휘발성 메모리들(111~113) 각각에 대응할 수 있다.
SSD 컨트롤러(2210)는 호스트(2100)로부터 수신된 신호(SIG)에 응답하여 플래시 메모리들(2221~222n)을 제어할 수 있다. 플래시 메모리들(2221~222n)은 SSD 컨트롤러(2210)의 제어에 따라 동작할 수 있다. SSD 컨트롤러(2210)는 도 1 내지 도 12b를 참조하여 설명된 메모리 컨트롤러(120)의 기능을 포함할 수 있다. 예를 들어, SSD 컨트롤러(2210)는 데이터 중복 제거를 수행할 수 있다. 이에 따라, 플래시 메모리들(2221~222n)에는 기준 데이터가 저장될 수 있다. SSD 컨트롤러(2210)는 기준 데이터에 대한 접근이 빈번하게 이루어지는 경우, 기준 데이터에 대한 복제된 데이터를 생성할 수 있다. SSD 컨트롤러(2210)는 기준 데이터 및 복제된 데이터 중 적어도 하나에 대한 접근이 드물게 이루어지는 경우, 기준 데이터 또는 복제된 데이터를 제거할 수 있다.
보조 전원 장치(2230)는 전원 커넥터(2202)를 통해 호스트(2100)와 연결된다. 보조 전원 장치(2230)는 호스트(2100)로부터 전원(PWR)을 입력 받고, 충전할 수 있다. 보조 전원 장치(2230)는 호스트(2100)로부터의 전원 공급이 원활하지 않을 경우, SSD(2200)의 전원을 제공할 수 있다.
버퍼 메모리(2240)는 SSD(2200)의 버퍼 메모리로 동작한다. 예를 들어, 버퍼 메모리(2240)는 호스트(2100)로부터 수신된 데이터를 임시 저장하거나, 플래시 메모리들(2221~222n)의 메타 데이터(예를 들어, 도 물리 어드레스 관리 테이블(PAMT))를 임시 저장할 수 있다. 또는, 버퍼 메모리(2240)는 SSD 컨트롤러(2210)가 동작하는데 요구되는 다양한 정보들을 임시 저장할 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
100: 스토리지 장치
110: 불휘발성 메모리들
111~113: 불휘발성 메모리
120: 메모리 컨트롤러
200: 호스트 장치

Claims (10)

  1. 하나 이상의 불휘발성 메모리들을 포함하는 스토리지 장치의 동작 방법에 있어서,
    상기 하나 이상의 불휘발성 메모리들 중 제1 메모리 영역에 기준 데이터를 저장하는 단계;
    상기 기준 데이터에 대한 접근 빈도가 제1 기준 값을 초과하는 경우, 상기 기준 데이터와 동일한 제1 복제된 데이터를 상기 하나 이상의 불휘발성 메모리들 중 제2 메모리 영역에 저장하는 단계;
    상기 제1 복제된 데이터가 저장된 후, 상기 기준 데이터 또는 상기 제1 복제된 데이터 중 하나에 대한 접근 빈도가 상기 제1 기준 값을 초과하는 경우, 상기 기준 데이터와 동일한 제2 복제된 데이터를 상기 하나 이상의 불휘발성 메모리들 중 제3 메모리 영역에 저장하는 단계; 및
    상기 제1 및 제2 복제된 데이터가 상기 하나 이상의 불휘발성 메모리들에 저장됨에 따라 상기 제1 메모리 영역의 제1 물리 어드레스가 상기 제2 메모리 영역의 제2 물리 어드레스와 상기 제3 메모리 영역의 제3 물리 어드레스에 대응하도록 상기 제2 물리 어드레스 및 상기 제3 물리 어드레스를 관리하는 단계를 포함하는 동작 방법.
  2. 제 1 항에 있어서,
    상기 제2 물리 어드레스 및 상기 제3 물리 어드레스를 관리하는 단계는,
    상기 제1 물리 어드레스에 대응하여 상기 제2 물리 어드레스를 저장하는 단계; 및
    상기 제2 물리 어드레스에 대응하여 상기 제3 물리 어드레스를 저장하는 단계를 포함하는 동작 방법.
  3. 제 1 항에 있어서,
    상기 기준 데이터에 대한 읽기 요청에 응답하여 상기 기준 데이터, 상기 제1 복제된 데이터, 및 상기 제2 복제된 데이터 중 하나를 선택하는 단계; 및
    상기 하나 이상의 불휘발성 메모리들로부터 상기 선택된 데이터를 출력하는 단계를 더 포함하는 동작 방법.
  4. 제 1 항에 있어서,
    상기 기준 데이터, 상기 제1 복제된 데이터, 및 상기 제2 복제된 데이터 중 적어도 하나에 대한 접근 빈도가 제2 기준 값보다 작고, 상기 기준 데이터, 상기 제1 복제된 데이터, 및 상기 제2 복제된 데이터에 대한 총 읽기 횟수가 기준 횟수보다 작은 경우, 상기 기준 데이터, 상기 제1 복제된 데이터, 및 상기 제2 복제된 데이터 중 하나를 선택하는 단계; 및
    상기 선택된 데이터를 제거하는 단계를 더 포함하는 동작 방법.
  5. 제 4 항에 있어서,
    상기 선택된 데이터는 상기 기준 데이터에 대한 제1 읽기 횟수, 상기 제1 복제된 데이터에 대한 제2 읽기 횟수, 및 상기 제2 복제된 데이터에 대한 제3 읽기 횟수 중 가장 큰 읽기 횟수에 대응하는 데이터인 동작 방법.
  6. 제 4 항에 있어서,
    상기 선택된 데이터는 상기 기준 데이터의 제1 쓰기 시간, 상기 제1 복제된 데이터의 제2 쓰기 시간, 및 상기 제2 복제된 데이터의 제3 쓰기 시간 중 가장 빠른 쓰기 시간에 대응하는 데이터인 동작 방법.
  7. 제 1 항에 있어서,
    상기 접근 빈도는 특정 시간 동안 데이터에 대한 읽기 횟수의 증가분인 동작 방법.
  8. 하나 이상의 불휘발성 메모리들을 포함하는 스토리지 장치의 동작 방법에 있어서,
    상기 하나 이상의 불휘발성 메모리들 중 제1 메모리 영역에 기준 데이터를 저장하는 단계;
    상기 기준 데이터에 대한 중복 제거 비율이 기준 비율을 초과하는 경우, 상기 기준 데이터와 동일한 제1 복제된 데이터를 상기 하나 이상의 불휘발성 메모리들 중 제2 메모리 영역에 저장하는 단계;
    상기 제1 복제된 데이터가 저장된 후, 상기 기준 데이터 또는 상기 제1 복제된 데이터 중 하나에 대한 접근 빈도가 제1 기준 값을 초과하는 경우, 상기 기준 데이터와 동일한 제2 복제된 데이터를 상기 하나 이상의 불휘발성 메모리들 중 제3 메모리 영역에 저장하는 단계; 및
    상기 제1 및 제2 복제된 데이터가 상기 하나 이상의 불휘발성 메모리들에 저장됨에 따라 상기 제1 메모리 영역의 제1 물리 어드레스가 상기 제2 메모리 영역의 제2 물리 어드레스와 상기 제3 메모리 영역의 제3 물리 어드레스에 대응하도록 상기 제2 물리 어드레스 및 상기 제3 물리 어드레스를 관리하는 단계를 포함하는 동작 방법.
  9. 제 8 항에 있어서,
    상기 제2 물리 어드레스 및 상기 제3 물리 어드레스를 관리하는 단계는,
    상기 제1 물리 어드레스에 대응하여 상기 제2 물리 어드레스를 저장하는 단계; 및
    상기 제2 물리 어드레스에 대응하여 상기 제3 물리 어드레스를 저장하는 단계를 포함하는 동작 방법.
  10. 제 8 항에 있어서,
    상기 기준 데이터, 상기 제1 복제된 데이터, 및 상기 제2 복제된 데이터 중 적어도 하나에 대한 접근 빈도가 제2 기준 값보다 작고, 상기 기준 데이터, 상기 제1 복제된 데이터, 및 상기 제2 복제된 데이터에 대한 총 읽기 횟수가 기준 횟수보다 작은 경우, 상기 기준 데이터, 상기 제1 복제된 데이터, 및 상기 제2 복제된 데이터 중 하나를 선택하는 단계; 및
    상기 선택된 데이터를 제거하는 단계를 더 포함하는 동작 방법.
KR1020190116814A 2019-09-23 2019-09-23 스토리지 장치 및 그것의 동작 방법 KR20210034897A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020190116814A KR20210034897A (ko) 2019-09-23 2019-09-23 스토리지 장치 및 그것의 동작 방법
US16/874,871 US11281379B2 (en) 2019-09-23 2020-05-15 Storage device and operating method thereof for storing replicated data based on access frequency
DE102020113704.4A DE102020113704A1 (de) 2019-09-23 2020-05-20 Speichervorrichtung und Betriebsverfahren derselben
CN202010971671.8A CN112540722A (zh) 2019-09-23 2020-09-16 存储设备及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190116814A KR20210034897A (ko) 2019-09-23 2019-09-23 스토리지 장치 및 그것의 동작 방법

Publications (1)

Publication Number Publication Date
KR20210034897A true KR20210034897A (ko) 2021-03-31

Family

ID=74880822

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190116814A KR20210034897A (ko) 2019-09-23 2019-09-23 스토리지 장치 및 그것의 동작 방법

Country Status (3)

Country Link
US (1) US11281379B2 (ko)
KR (1) KR20210034897A (ko)
CN (1) CN112540722A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113392152B (zh) * 2020-03-11 2024-06-21 伊姆西Ip控股有限责任公司 用于更新信息的方法、电子设备和计算机程序产品

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5026213B2 (ja) 2007-09-28 2012-09-12 株式会社日立製作所 ストレージ装置及びデータ重複排除方法
JP5084551B2 (ja) * 2008-02-26 2012-11-28 Kddi株式会社 重複排除技術を用いたデータバックアップ方法、記憶制御通信装置及びプログラム
US8108638B2 (en) * 2009-02-06 2012-01-31 International Business Machines Corporation Backup of deduplicated data
US8645334B2 (en) * 2009-02-27 2014-02-04 Andrew LEPPARD Minimize damage caused by corruption of de-duplicated data
JP5785390B2 (ja) 2010-12-22 2015-09-30 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 情報処理装置、データ複製方法、プログラムおよび記録媒体
US9223511B2 (en) 2011-04-08 2015-12-29 Micron Technology, Inc. Data deduplication
CN103797470B (zh) 2011-09-16 2017-02-15 日本电气株式会社 存储系统
JP6003610B2 (ja) * 2012-12-17 2016-10-05 日本電気株式会社 情報処理装置
US9043668B2 (en) 2013-02-08 2015-05-26 Seagate Technology Llc Using ECC data for write deduplication processing
US9811457B2 (en) 2014-01-16 2017-11-07 Pure Storage, Inc. Data placement based on data retention in a tiered storage device system
US9836419B2 (en) * 2014-09-15 2017-12-05 Microsoft Technology Licensing, Llc Efficient data movement within file system volumes
US9665287B2 (en) 2015-09-18 2017-05-30 Alibaba Group Holding Limited Data deduplication using a solid state drive controller
US9690801B1 (en) 2016-06-02 2017-06-27 International Business Machines Corporation Techniques for improving deduplication efficiency in a storage system with multiple storage nodes
KR20180092715A (ko) * 2017-02-10 2018-08-20 삼성전자주식회사 동작들의 횟수에 기초하여 복제된 데이터를 관리하는 스토리지 장치

Also Published As

Publication number Publication date
US20210089219A1 (en) 2021-03-25
US11281379B2 (en) 2022-03-22
CN112540722A (zh) 2021-03-23

Similar Documents

Publication Publication Date Title
CN101699406B (zh) 数据储存系统与方法
TWI645404B (zh) 資料儲存裝置以及非揮發式記憶體操作方法
US20130151759A1 (en) Storage device and operating method eliminating duplicate data storage
KR20210027642A (ko) 메모리 시스템에서 맵 정보를 전송하는 방법 및 장치
US10416895B2 (en) Storage devices managing duplicated data based on the number of operations
KR20200113992A (ko) 메모리 시스템의 복구 동작 중 비휘발성 메모리 오픈 블록의 셀 디스터브를 줄이는 방법 및 장치
KR20220001222A (ko) 베드 블록을 처리하는 메모리 시스템 및 동작 방법
KR20200030245A (ko) 메모리 시스템에서의 유효 데이터 관리 방법 및 장치
US20190004907A1 (en) Method for management tables recovery
KR20160074025A (ko) 데이터 저장 장치의 동작 방법
US11443811B2 (en) Data erase operations for a memory system
KR20150015621A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20210028729A (ko) 논리적 대 물리적 테이블 프래그먼트들
CN116888585A (zh) 用于简单复制命令的基于高速缓存的流
US10642531B2 (en) Atomic write method for multi-transaction
KR20200058867A (ko) 메모리 시스템의 복구 동작 중 비휘발성 메모리 블록의 반복 접근을 줄이는 방법 및 장치
KR20210034897A (ko) 스토리지 장치 및 그것의 동작 방법
KR101369408B1 (ko) 스토리지 시스템 및 이의 데이터 전송 방법
US10490237B2 (en) Data storage device and method of operating the same
KR20200095010A (ko) 메모리 시스템에서 맵 정보를 전송하는 방법 및 장치
US11416263B1 (en) Boosted boot procedure by background re-arrangement of read patterns
KR20230147950A (ko) 시스템 내 전원 손실 데이터 보호를 위한 장치 및 방법
CN113204315B (zh) 一种固态硬盘读写方法和装置
CN115729457A (zh) 用于存储器子系统的不正常关机的元数据管理
CN111752475B (zh) 在存储服务器中进行数据存取管理的方法与装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal