KR20180092715A - 동작들의 횟수에 기초하여 복제된 데이터를 관리하는 스토리지 장치 - Google Patents

동작들의 횟수에 기초하여 복제된 데이터를 관리하는 스토리지 장치 Download PDF

Info

Publication number
KR20180092715A
KR20180092715A KR1020170018816A KR20170018816A KR20180092715A KR 20180092715 A KR20180092715 A KR 20180092715A KR 1020170018816 A KR1020170018816 A KR 1020170018816A KR 20170018816 A KR20170018816 A KR 20170018816A KR 20180092715 A KR20180092715 A KR 20180092715A
Authority
KR
South Korea
Prior art keywords
data
memory area
target data
replicated
controller
Prior art date
Application number
KR1020170018816A
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 KR1020170018816A priority Critical patent/KR20180092715A/ko
Priority to US15/840,036 priority patent/US10416895B2/en
Publication of KR20180092715A publication Critical patent/KR20180092715A/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/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • 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
    • 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
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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
    • 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/0647Migration mechanisms
    • G06F3/0649Lifecycle 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/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
    • 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/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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
    • 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/0284Multiple user address space allocation, e.g. using different base addresses
    • 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
    • G06F2212/2022Flash 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/7211Wear leveling

Abstract

본 발명은 하나 이상의 불휘발성 메모리들 및 컨트롤러를 포함하는 스토리지 장치를 제공한다. 불휘발성 메모리들은 대상 데이터를 저장한다. 대상 데이터에 대해 수행되는 동작들의 횟수가 제 1 기준 값 이상인 경우, 컨트롤러는 대상 데이터의 전부 또는 일부와 동일한 복제된 데이터를 불휘발성 메모리들에 저장한다. 복제된 데이터가 생성된 후 대상 데이터에 대해 수행되는 동작들의 횟수가 제 2 기준 값 이하로 변경되는 경우, 컨트롤러는 복제된 데이터를 무효화한다. 본 발명에 따르면, 스토리지 장치의 성능 및 신뢰성이 향상될 수 있다.

Description

동작들의 횟수에 기초하여 복제된 데이터를 관리하는 스토리지 장치 {STORAGE DEVICE MANAGING DUPLICATED DATA BASED ON THE NUMBER OF OPERATIONS}
본 발명은 전자 장치에 관한 것으로, 좀 더 구체적으로는 데이터를 저장하기 위한 스토리지 장치의 구성들 및 동작들에 관한 것이다.
근래 다양한 유형의 전자 장치들이 이용되고 있다. 전자 장치는 그것에 포함되는 전자 회로들의 동작들에 따라 고유의 기능들을 제공한다. 전자 장치의 전자 회로는 단독으로 특정 기능을 수행하거나, 다른 전자 회로와 통신하면서 복합적인 기능을 수행한다.
스토리지 장치는 전자 장치들의 한 예이다. 스토리지 장치는 데이터를 저장하거나 출력함으로써, 사용자에게 스토리지 서비스를 제공한다. 예로서, 스토리지 장치는 그것에 포함되는 메모리 소자들 및 제어 회로들의 동작들에 따라, 데이터를 저장하거나 출력한다.
많은 양의 데이터를 다루기 위해 스토리지 장치의 용량이 증가하고 빠른 데이터 처리에 대한 요구가 증가하는 동안, 안전하고 신뢰성 있게 데이터를 저장하기 위한 다양한 이슈가 논의되어 왔다. 예로서, 사용자에 의해 빈번하게 접근되는 "핫 데이터(Hot Data)"는 빠른 데이터 처리(즉, 높은 성능)를 필요로 하지만, 빈번한 접근은 스토리지 장치의 수명 및 신뢰성을 악화시킬 수 있다. 따라서, 사용자를 위해 스토리지 장치의 성능을 향상시키면서도 스토리지 장치의 신뢰성을 확보할 필요가 있다.
본 발명의 실시 예들은 빈번하게 접근되는 대상 데이터(Target Data)를 빠르게 출력하면서도 메모리 수명을 효율적으로 관리하기 위한 스토리지 장치의 구성들 및 동작들을 제공할 수 있다. 본 발명의 실시 예들에서, 빈번하게 접근되는 대상 데이터는 그 대상 데이터의 전부 또는 일부와 동일한 복제된 데이터(Duplicated Data)에 기초하여 관리될 수 있다.
본 발명의 몇몇 실시 예는 하나 이상의 불휘발성 메모리들 및 컨트롤러를 포함하는 스토리지 장치를 제공할 수 있다.
몇몇 실시 예에서, 불휘발성 메모리들은 대상 데이터를 저장하도록 구성되는 제 1 메모리 영역을 포함할 수 있다. 컨트롤러는 대상 데이터에 대해 수행되는 동작들의 횟수를 모니터링할 수 있다. 대상 데이터에 대해 수행되는 동작들의 횟수가 제 1 기준 값 이상인 경우, 컨트롤러는 대상 데이터의 전부 또는 일부와 동일한 복제된 데이터를 불휘발성 메모리들의 제 2 메모리 영역에 저장할 수 있다. 제 2 메모리 영역이 복제된 데이터를 저장한 후 대상 데이터에 대해 수행되는 동작들의 횟수가 제 2 기준 값 이하로 변경되는 경우, 컨트롤러는 제 2 메모리 영역의 복제된 데이터를 무효화할 수 있다.
몇몇 실시 예에서, 불휘발성 메모리들은 대상 데이터를 저장할 수 있다. 대상 데이터에 대해 수행되는 동작들의 횟수가 제 1 기준 값 이상인 경우, 컨트롤러는 대상 데이터에 대한 읽기 요청에 응답하여, 대상 데이터 및 복제된 데이터에 함께 기초하여 대상 데이터를 출력할 수 있다. 복제된 데이터가 생성된 후 대상 데이터에 대해 수행되는 동작들의 횟수가 제 2 기준 값 이하로 변경되는 경우, 컨트롤러는 대상 데이터에 대한 후속 읽기 요청에 응답하여, 복제된 데이터 없이 대상 데이터에만 기초하여 대상 데이터를 출력할 수 있다.
본 발명의 실시 예들에 따르면, 빈번하게 접근되는 대상 데이터가 빠르게 처리될 수 있고, 스토리지 장치의 성능이 향상될 수 있다. 나아가, 대상 데이터에 대해 수행되는 동작들이 특정 메모리 영역으로 집중되지 않고 여러 메모리 영역으로 분배(Distribute)될 수 있다. 따라서, 리드 디스터번스(Read Disturbance)에 기인하는 오류(Error) 및 고장(Failure)이 방지될 수 있고, 스토리지 장치의 신뢰성이 향상될 수 있다.
도 1은 본 발명의 실시 예들에 따른 스토리지 장치를 포함하는 스토리지 시스템을 보여주는 블록도이다.
도 2는 도 1의 스토리지 장치의 예시적인 동작을 설명하는 흐름도이다.
도 3은 도 1의 불휘발성 메모리들의 예시적인 상태(State)를 보여주는 개념도이다.
도 4a 내지 도 4c는 도 2의 예시적인 동작에 따라, 복제된 데이터를 저장하는 과정들을 보여주는 개념도들이다.
도 5는 도 1의 스토리지 장치의 예시적인 동작을 설명하는 흐름도이다.
도 6은 도 5의 예시적인 동작에서 수행되는 어드레스 맵핑(Address Mapping)을 보여주는 개념도이다.
도 7a 내지 도 7c는 도 5의 예시적인 동작에 따라 대상 데이터를 출력하는 과정들을 보여주는 개념도들이다.
도 8은 도 1의 스토리지 장치의 예시적인 동작을 설명하는 흐름도이다.
도 9는 본 발명의 실시 예들에 따른 스토리지 장치를 포함하는 전자 시스템의 구성 및 그것의 인터페이스들을 보여주는 블록도이다.
도 10은 본 발명의 실시 예들에 따른 스토리지 장치를 포함하는 컴퓨팅 장치를 보여주는 블록도이다.
도 11은 본 발명의 실시 예들에 따른 스토리지 장치를 포함하는 스토리지 시스템을 보여주는 블록도이다.
아래에서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자(이하, 통상의 기술자)들이 본 발명을 용이하게 실시할 수 있도록, 첨부되는 도면들을 참조하여 본 발명의 실시 예들이 명확하고 상세하게 설명될 것이다.
도 1은 본 발명의 실시 예들에 따른 스토리지 장치를 포함하는 스토리지 시스템을 보여주는 블록도이다. 스토리지 시스템(1000)은 호스트(Host, 1100) 및 스토리지 장치(1300)를 포함할 수 있다.
호스트(1100)는 스토리지 장치(1300)와 데이터(DAT)를 교환할 수 있다. 스토리지 장치(1300)는 호스트(1100)로부터 수신되는 커맨드에 응답하여, 호스트(1100)로 스토리지 서비스를 제공할 수 있다.
예로서, 호스트(1100)는 쓰기 커맨드, 및 쓰기 데이터를 포함하는 데이터(DAT)를 스토리지 장치(1300)로 제공할 수 있다. 스토리지 장치(1300)는 쓰기 커맨드에 응답하여, 데이터(DAT)에 포함되는 요청된 쓰기 데이터를 저장할 수 있다. 예로서, 호스트(1100)는 읽기 커맨드를 스토리지 장치(1300)로 제공할 수 있다. 스토리지 장치(1300)는 읽기 커맨드에 응답하여, 요청된 읽기 데이터를 포함하는 데이터(DAT)를 호스트(1100)로 출력할 수 있다.
예로서, 호스트(1100)는 하나 이상의 프로세서 코어들을 포함하도록 구현될 수 있다. 예로서, 호스트(1100)는 범용(General-purpose) 프로세서, 전용(Special-purpose) 프로세서, 또는 어플리케이션 프로세서(Application Processor)를 포함할 수 있다. 호스트(1100)는 프로세서 그 자체이거나, 프로세서(들)를 포함하는 전자 장치 또는 시스템일 수 있다.
스토리지 장치(1300)는 하나 이상의 불휘발성 메모리들(1310) 및 컨트롤러(1330)를 포함할 수 있다. 도 1은 하나 이상의 불휘발성 메모리들(1310)이 네 개의 불휘발성 메모리들(1311, 1312, 1313, 1314)을 포함하는 것을 보여준다. 그러나, 도 1은 더 나은 이해를 돕기 위해 제공되고, 본 발명은 도 1로 한정되지 않는다. 스토리지 장치(1300)에 포함되는 불휘발성 메모리들의 개수는 다양하게 변경 또는 수정될 수 있다.
불휘발성 메모리들(1311, 1312, 1313, 1314) 각각은 호스트(1100)에 의해 요청되는 데이터를 저장할 수 있다. 이를 위해, 불휘발성 메모리들(1311, 1312, 1313, 1314) 각각은 데이터를 저장하기 위한 메모리 영역(들)을 포함할 수 있다. 예로서, 불휘발성 메모리들(1311, 1312, 1313, 1314) 각각이 낸드 플래시 메모리(NAND-type Flash Memory)를 포함하는 경우, 불휘발성 메모리들(1311, 1312, 1313, 1314) 각각은 복수의 워드 라인 및 복수의 비트 라인을 따라 형성되는 메모리 셀 어레이를 포함할 수 있다.
그러나, 본 발명은 위 예로 한정되지 않고, 불휘발성 메모리들(1311, 1312, 1313, 1314) 각각은 PRAM(Phase-change Random Access Memory), MRAM(Magneto-resistive RAM), ReRAM(Resistive RAM), FRAM(Ferro-electric RAM) 등과 같은 다양한 불휘발성 메모리 중 하나 이상을 포함할 수 있다. 불휘발성 메모리들(1311, 1312, 1313, 1314) 각각의 구성은 다양하게 변경 또는 수정될 수 있다.
컨트롤러(1330)는 스토리지 장치(1300)의 전반적인 동작들을 제어할 수 있다. 예로서, 컨트롤러(1330)는 불휘발성 메모리들(1311, 1312, 1313, 1314)의 동작들을 스케줄링하거나, 스토리지 장치(1300)에서 처리되는 신호들/데이터를 인코딩 및 디코딩할 수 있다. 예로서, 컨트롤러(1330)의 제어에 따라, 호스트(1100)에 의해 요청되는 데이터가 불휘발성 메모리들(1311, 1312, 1313, 1314)에 저장될 수 있다.
불휘발성 메모리들(1311, 1312, 1313, 1314) 각각은 호스트(1100)에 의해 요청되는 데이터를 출력할 수 있다. 예로서, 컨트롤러(1330)의 제어에 따라, 불휘발성 메모리들(1311, 1312, 1313, 1314)에 저장된 데이터에 대해 읽기 동작이 수행될 수 있다. 읽기 동작에 따라, 호스트(1100)에 의해 요청되는 데이터가 접근될 수 있다. 컨트롤러(1330)의 제어에 따라, 불휘발성 메모리들(1311, 1312, 1313, 1314)에 저장된 데이터가 호스트(1100)로 제공될 수 있다.
예로서, 컨트롤러(1330)의 제어에 따라, 불휘발성 메모리들(1311, 1312, 1313, 1314)에 저장된 데이터에 대해 내부 관리 동작(예컨대, 리드 리클레임(Read Reclaim), 가비지 콜렉션(Garbage Collection) 등)이 수행될 수 있다. 내부 관리 동작에 따라, 컨트롤러(1330)에 의해 요청되는 데이터가 접근될 수 있다.
다만, 위 예들은 더 나은 이해를 돕기 위해 제공되는 것이고, 본 발명은 위 예들로 한정되지 않는다. 불휘발성 메모리들(1311, 1312, 1313, 1314)에 저장된 데이터는 다양한 다른 이유에 기인하여 접근될 수 있다. 이 명세서에서, 어떠한 이유에 기인하여 접근되는(예컨대, 저장되거나, 읽히거나, 또는 수정(Modify)되는) 데이터는 "대상 데이터(Target Data)"로 불릴 수 있다.
컨트롤러(1330)는 이러한 다양한 동작 및 뒤에서 설명될 동작들을 수행하기 위해, 하드웨어 구성, 소프트웨어 구성, 또는 그것들의 하이브리드(Hybrid) 구성을 포함할 수 있다. 예로서, 컨트롤러(1330)는 특정 동작을 수행하도록 구성되는 전용 하드웨어 회로를 포함할 수 있다. 추가로 또는 대안적으로, 컨트롤러(1330)는 특정 동작을 수행하도록 구성되는 프로그램 코드(Program Code)의 명령어 집합(Instruction Set)을 실행할 수 있는 하나 이상의 프로세서 코어들을 포함할 수 있다.
예로서, 호스트(1100)와 스토리지 장치(1300)는 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCIe(Peripheral Component Interconnect Express), M-PCIe(Mobile PCIe), NVMe(Nonvolatile Memory Express), ATA(Advanced Technology Attachment), PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI), IDE(Integrated Drive Electronics), UFS(Universal Flash Storage), Firewire 등과 같은 다양한 인터페이스 규약(Interface Protocol) 중 하나 이상에 따라 서로 통신할 수 있다.
몇몇 실시 예에서, 전자 시스템(1000)은 하나의 전자 장치로 구현될 수 있다. 예로서, 전자 시스템(1000)은 호스트(1100) 및 스토리지 장치(1300)를 포함하는 가전 기기, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트폰, 웨어러블(Wearable) 장치, 비디오 게임기(Video Game Console) 등과 같은 다양한 전자 장치 중 하나일 수 있다. 몇몇 실시 예에서, 전자 시스템(1000)은 복수의 전자 장치로 구현될 수 있다. 예로서, 호스트(1100) 및 스토리지 장치(1300)는 서로 별개의 전자 장치들일 수 있고, 전자 시스템(1000)을 구현하기 위해 로컬 또는 원격으로 연결될 수 있다.
도 2는 도 1의 스토리지 장치의 예시적인 동작을 설명하는 흐름도이다. 예로서, 도 2의 예시적인 동작은 호스트(1100) 상에서 실행되는 어플리케이션(예컨대, 운영체제, 사용자 어플리케이션 등과 같은 어떠한 유형의 어플리케이션이든 포함함)에 의해 스토리지 장치(1300)에/로부터 데이터를 입력/출력함으로써 시작할 수 있다.
S110 동작에서, 호스트(1100)의 요청에 응답하여, 스토리지 장치(1300)는 대상 데이터를 저장할 수 있다. 대상 데이터는 컨트롤러(1330)의 제어에 따라 하나 이상의 불휘발성 메모리들(1310)에 저장될 수 있다. 예로서, 대상 데이터는 하나 이상의 불휘발성 메모리들(1310)의 제 1 메모리 영역에 저장될 수 있다.
이후, 대상 데이터는 다양한 이유에 기인하여 접근될 수 있다. 대상 데이터가 접근됨에 따라, 대상 데이터에 대해 다양한 동작이 수행될 수 있다. 예로서, 대상 데이터가 읽히거나 수정됨에 따라, 대상 데이터에 대해 읽기 동작이 수행될 수 있다.
S120 동작에서, 컨트롤러(1330)는 대상 데이터에 대해 수행되는 동작들의 횟수를 모니터링할 수 있다. 예로서, 대상 데이터는 호스트(1100)의 요청에 응답하여 읽히거나 수정될 수 있다. 예로서, 컨트롤러(1330)는 대상 데이터로 향하는(Directed) 동작들의 횟수를 카운트할 수 있고, 절대적인 카운트 값을 관리할 수 있다. 추가로 또는 대안적으로, 컨트롤러(1330)는 기준 시간 구간(Reference Time Interval) 동안 대상 데이터에 대해 수행되는 동작들의 횟수를 카운트할 수 있고, 기준 시간 구간에 대한 상대적인 빈도(Frequency) 값을 관리할 수 있다.
S130 동작에서, 컨트롤러(1330)는 대상 데이터가 빈번하게 접근되는지 여부(즉, 대상 데이터가 소위 "핫 데이터(Hot Data)"인지 여부)를 판별할 수 있다. 예로서, 컨트롤러(1330)는 대상 데이터에 대해 수행되는 동작들의 횟수가 기준 값 이상인지 여부를 판별할 수 있다. 예로서, 대상 데이터에 대해 수행되는 동작들의 횟수가 기준 값 이상인 경우에 대상 데이터가 빈번하게 접근되는 것으로 이해될 수 있다.
예로서, S130 동작은 컨트롤러(1330)에 의해 관리되는 카운트 값 및/또는 빈도 값이 변경될 때마다 수행될 수 있다. 또는, S130 동작은 주기적으로 수행될 수 있고, 또는 특정 조건이 충족되는 때에 수행될 수 있다. S130 동작의 수행은 다양하게 변경 또는 수정될 수 있다.
대상 데이터에 대해 수행되는 동작들의 횟수가 기준 값 미만인 경우(즉, 대상 데이터가 빈번하게 접근되지 않는 경우), S120 동작이 수행될 수 있다. S120 동작에서, 컨트롤러(1330)는 대상 데이터에 대해 수행되는 동작들의 횟수를 계속 모니터링할 수 있다. 반면, 대상 데이터에 대해 수행되는 동작들의 횟수가 기준 값 이상인 경우(즉, 대상 데이터가 빈번하게 접근되는 경우), S140 동작이 수행될 수 있다.
S140 동작에서, 컨트롤러(1330)는 복제된 데이터(Duplicated Data)를 생성할 수 있다. 복제된 데이터는 대상 데이터의 전부 또는 일부와 동일하도록 생성될 수 있다. 복제된 데이터는 컨트롤러(1330)의 제어에 따라 하나 이상의 불휘발성 메모리들(1310)에 저장될 수 있다. 예로서, 대상 데이터는 하나 이상의 불휘발성 메모리들(1310)의 제 2 메모리 영역에 저장될 수 있다. 복제된 데이터를 저장하는 것은 도 3 내지 도 4c를 참조하여 좀 더 설명될 것이다.
대상 데이터가 빈번하게 접근되는 경우, 대상 데이터를 빠르게 처리할 필요가 있을 수 있다. 한편, 대상 데이터에 대해 수행되는 동작들에 기인하여, 대상 데이터가 저장되는 제 1 메모리 영역이 집중적으로 접근될 수 있다. 제 1 메모리 영역이 과도하게 접근되는 경우, 리드 디스터번스(Read Disturbance)에 기인하여 대상 데이터에 오류(Error)가 발생하거나 제 1 메모리 영역에 고장(Failure)이 발생할 수 있다.
따라서, 본 발명의 실시 예들에서, 컨트롤러(1330)는 빈번하게 접근되는 대상 데이터의 일부 또는 전부를 복제하여 복제된 데이터를 생성할 수 있고, 대상 데이터 및 복제된 데이터 모두에 기초하여 대상 데이터를 관리할 수 있다. 예로서, 컨트롤러(1330)가 호스트(1310)로부터 대상 데이터에 대한 읽기 요청을 수신하는 경우, 컨트롤러(1330)는 제 1 메모리 영역의 대상 데이터에만 기초하는 대신, 제 1 메모리 영역의 대상 데이터 및 제 2 메모리 영역의 복제된 데이터 모두에 기초하여 대상 데이터를 출력할 수 있다.
본 발명의 실시 예들에 따르면, 대상 데이터가 대상 데이터 및 복제된 데이터 모두에 기초하여 출력될 수 있기 때문에, 대상 데이터가 빠르게 출력될 수 있고 스토리지 장치(1300)의 성능이 향상될 수 있다. 나아가, 대상 데이터에 대해 수행되는 동작들이 제 1 메모리 영역으로 집중되지 않고 제 1 메모리 영역 및 제 2 메모리 영역으로 분배될 수 있다. 따라서, 제 1 메모리 영역에서 수행되는 동작들(예컨대, 읽기 동작들)의 횟수가 감소할 수 있고, 리드 디스터번스에 기인하는 오류 및 고장이 방지될 수 있다. 이는 스토리지 장치의 신뢰성을 향상시킬 수 있고, 하나 이상의 불휘발성 메모리들(1310)의 수명이 급격하게 감소하지 않게 할 수 있다.
기준 값은 다양한 요인에 의존하여 선택될 수 있다. 기준 값이 너무 큰 경우, 대상 데이터가 저장되는 제 1 메모리 영역이 과도하게 접근될 수 있고 스토리지 장치(1300)의 성능이 떨어질 수 있다. 반면, 기준 값이 너무 작은 경우, 복제된 데이터가 일찍 생성되어 하나 이상의 불휘발성 메모리들(1310)의 용량이 불필요하게 차지될 수 있다. 게다가, 복제된 데이터가 저장되는 제 2 메모리 영역 역시 과도하게 접근될 수 있다. 따라서, 기준 값은 스토리지 장치(1300)의 성능, 하나 이상의 불휘발성 메모리들(1310)의 수명, 저장 용량 등과 같은 다양한 요인을 고려하여 적절하게 선택될 수 있다.
도 3은 도 1의 불휘발성 메모리들의 예시적인 상태(State)를 보여주는 개념도이다.
예로서, 하나 이상의 불휘발성 메모리들(1310)은 적어도 불휘발성 메모리(1311) 및 불휘발성 메모리(1312)를 포함할 수 있다. 몇몇 실시 예에서, 불휘발성 메모리들(1311, 1312)은 각각 상이한 반도체 다이(Die)들 또는 칩들로 구현되어, 스토리지 장치(1300)에 포함되는 PCB(Printed Circuit Board) 상에 실장될 수 있다. 예로서, 불휘발성 메모리(1311)는 제 1 메모리 영역(MA1)을 포함할 수 있고, 불휘발성 메모리(1312)는 제 2 메모리 영역(MA2)을 포함할 수 있다.
예로서, 컨트롤러(1330)의 제어에 따라, 대상 데이터(tDAT)가 불휘발성 메모리(1311)의 제 1 메모리 영역(MA1)에 저장될 수 있다(도 2의 S110 동작). 한편, 불휘발성 메모리(1312)의 제 2 메모리 영역(MA2)은 스페어(Spare) 영역일 수 있고, 아직 어떤 데이터를 저장하지 않을 수 있다.
도 4a 내지 도 4c는 도 2의 예시적인 동작에 따라, 복제된 데이터를 저장하는 과정들을 보여주는 개념도들이다. 도 4a 내지 도 4c는 도 2의 S140 동작과 관련될 수 있다. 대상 데이터에 대해 수행되는 동작들의 횟수가 기준 값 이상인 경우(즉, 대상 데이터가 빈번하게 접근되는 경우), 복제된 데이터가 생성될 수 있다.
도 4a를 참조하면, 컨트롤러(1330)의 제어에 따라, 복제된 데이터(dDAT)가 스페어 영역(예컨대, 불휘발성 메모리(1312)의 제 2 메모리 영역(MA2))에 저장될 수 있다. 도 4a의 예에서, 복제된 데이터(dDAT)는 대상 데이터(tDAT)의 전부와 동일할 수 있다. 즉, 몇몇 실시 예에서, 컨트롤러(1330)는 대상 데이터(tDAT)의 전부를 복제하여 복제된 데이터(dDAT)를 생성할 수 있다. 몇몇 실시 예에서, 복제된 데이터(dDAT)가 제 2 메모리 영역(MA2)에 저장되더라도, 대상 데이터(tDAT)는 제 1 메모리 영역(MA1)에 유지될 수 있다(즉, 대상 데이터(tDAT)가 미러링될(Mirrored) 수 있다).
도 4b를 참조하면, 컨트롤러(1330)의 제어에 따라, 복제된 데이터(dDAT')가 스페어 영역(예컨대, 불휘발성 메모리(1312)의 제 2 메모리 영역(MA2))에 저장될 수 있다. 도 4b의 예에서, 복제된 데이터(dDAT')는 대상 데이터(tDAT)의 일부와 동일할 수 있다. 즉, 몇몇 실시 예에서, 컨트롤러(1330)는 대상 데이터(tDAT)의 일부를 복제하여 복제된 데이터(dDAT)를 생성할 수 있다. 몇몇 실시 예에서, 복제된 데이터(dDAT')가 제 2 메모리 영역(MA2)에 저장되더라도, 대상 데이터(tDAT)는 제 1 메모리 영역(MA1)에 유지될 수 있다.
예로서, 대상 데이터(tDAT)는 제 1 부분(P1) 및 제 2 부분(P2)을 포함할 수 있고, 제 1 부분(P1)은 제 2 부분(P2)과 중첩하지 않을 수 있다. 예로서, 복제된 데이터(dDAT')는 대상 데이터(tDAT)의 제 2 부분(P2)과 동일하도록 생성될 수 있다. 제 1 부분(P1)의 데이터 크기 및 제 2 부분(P2)의 데이터 크기는 다양하게 변경 또는 수정될 수 있다.
도 4c를 참조하면, 컨트롤러(1330)의 제어에 따라, 대상 데이터(tDAT)의 일부(예컨대, 제 2 부분(P2))와 동일한 복제된 데이터(dDAT')가 스페어 영역(예컨대, 불휘발성 메모리(1312)의 제 2 메모리 영역(MA2))에 저장될 수 있다. 몇몇 실시 예에서, 복제된 데이터(dDAT')가 제 2 메모리 영역(MA2)에 저장되는 경우, 컨트롤러(1330)는 제 1 메모리 영역(MA1)의 제 2 부분(P2)을 무효화(Invalidate)할 수 있다(즉, RAID(Redundant Array of Independent Disks) 스킴(Scheme)에서 이용되는 것과 유사하게, 대상 데이터(tDAT)가 스트라이핑될(Striped) 수 있다). 따라서, 제 1 메모리 영역(MA1)은 대상 데이터(tDAT)를 위해 제 1 부분(P1)만을 유지할 수 있다. 이러한 실시 예에서, 제 2 부분(P2)은 복제된 데이터(dDAT')에 기초하여 다루어질 수 있고, 이는 뒤에서 더 설명될 것이다.
무효화는 다양한 방식으로 구현될 수 있다. 예로서, 무효화는 특정 데이터 또는 일부를 메모리 소자로부터 물리적으로 소거하는 것을 의미할 수 있다. 다른 예로서, 무효화는, 특정 데이터 또는 일부가 호스트(1100)에 의해 인식되지 않도록, 그 특정 데이터 또는 일부의 물리 어드레스(Physical Address)와 논리 어드레스(Logical Address) 사이의 맵핑(Mapping)을 끊는 것을 의미할 수 있다(이 경우, 그 특정 데이터 또는 일부분은 메모리 소자로부터 물리적으로 소거되지는 않을 수 있다).
도 4a 내지 도 4c는 복제된 데이터(dDAT 또는 dDAT')를 저장하기 위한 몇몇 예시를 보여준다. 그러나, 복제된 데이터는 대상 데이터(tDAT)의 전부 또는 일부와 동일하도록 다른 방식에 따라 생성될 수 있고, 본 발명은 도 4a 내지 도 4c로 한정되지 않는다.
도 4a 내지 도 4c의 예시들에서, 복제된 데이터(dDAT 또는 dDAT')를 저장하는 불휘발성 메모리(1312)는 대상 데이터(tDAT)를 저장하는 불휘발성 메모리(1311)와 별개일 수 있다. 그러나, 다른 예시들에서, 복제된 데이터(dDAT 또는 dDAT')는 대상 데이터(tDAT)를 저장하는 것과 동일한 불휘발성 메모리에 저장될 수 있다. 이 경우, 복제된 데이터(dDAT 또는 dDAT')는 대상 데이터(tDAT)를 저장하는 것과 상이한 메모리 영역(예컨대, 메모리 블록, 메모리 페이지 등)에 저장될 수 있다. 몇몇 경우, 복제된 데이터(dDAT 또는 dDAT')는 복수의 불휘발성 메모리 또는 복수의 메모리 영역에 분산하여 저장될 수 있다.
도 4a 내지 도 4c의 예시들에서, 하나의 복제된 데이터(dDAT 또는 dDAT')가 생성될 수 있다. 그러나, 다른 예시들에서, 복수의 복제된 데이터가 생성될 수 있다. 복수의 복제된 데이터는 각각 상이한 불휘발성 메모리들에 저장되거나, 동일한 불휘발성 메모리에 저장될 수 있다. 복제된 데이터의 개수가 많아질수록, 성능 및 신뢰성이 향상될 수 있지만, 하나 이상의 불휘발성 메모리들(1310)의 용량이 과도하게 차지될 수 있다. 따라서, 복제된 데이터의 개수는 성능, 신뢰성, 용량 등과 같은 다양한 요인을 고려하여 적절하게 선택될 수 있다.
도 5는 도 1의 스토리지 장치의 예시적인 동작을 설명하는 흐름도이다. 예로서, 도 5의 예시적인 동작은 도 2의 S140 동작에서 복제된 데이터가 저장된 후에 개시될 수 있다.
S210 동작에서, 컨트롤러(1330)는 대상 데이터에 대한 읽기 요청을 수신할 수 있다. 읽기 요청은 호스트(1100)로부터 수신되거나, 컨트롤러(1330) 내부에서 생성될 수 있다.
S220 동작에서, 컨트롤러(1330)는 어드레스 맵핑을 수행할 수 있다. 예로서, 스토리지 장치(1300)가 낸드 플래시 메모리를 포함하는 스토리지 매체(예컨대, SSD(Solid State Drive), SD(Secure Digital) 카드, eMMC(Embedded Multimedia Card) 등)인 경우, 컨트롤러(1330)는 하나 이상의 불휘발성 메모리들(1310)의 물리 어드레스를 직접 관리할 수 있다. 한편, 호스트(1100)는 논리 어드레스에 기초하여 스토리지 장치(1300)와 통신할 수 있다. 이러한 예에서, 컨트롤러(1330)는 특정 데이터와 관련하여 물리 어드레스와 논리 어드레스 사이의 맵핑 관계를 관리할 수 있다.
본 발명의 실시 예들에서, 복제된 데이터가 대상 데이터와 함께 관리될 수 있다. 따라서, 대상 데이터에 대한 읽기 요청을 처리하기 위해, 컨트롤러(1330)는 대상 데이터 및 복제된 데이터 모두로 접근할 수 있다. 이를 위해, 컨트롤러(1330)는 읽기 요청에 포함되는 어드레스를, 대상 데이터가 저장된 불휘발성 메모리의 메모리 영역의 어드레스 및 복제된 데이터가 저장된 불휘발성 메모리의 메모리 영역의 어드레스로 맵핑할 수 있다.
S230 동작에서, 컨트롤러(1330)는 대상 데이터의 제 1 부분을 대상 데이터로부터 수신할 수 있다. S235 동작에서, 컨트롤러(1330)는 대상 데이터의 제 2 부분을 복제된 데이터로부터 수신할 수 있다. 이후, S240 동작에서, 컨트롤러(1330)는 S230 동작에서 수신된 제 1 부분과 S235 동작에서 수신된 제 2 부분을 결합하여, 결합된 데이터를 생성할 수 있다.
S250 동작에서, 컨트롤러(1330)는 결합된 데이터를 대상 데이터로서 출력할 수 있다. 따라서, 대상 데이터에 대해 수행되는 동작들의 횟수가 기준 값 이상인 경우, 컨트롤러(1330)는 대상 데이터 및 복제된 데이터 모두에 기초하여 대상 데이터를 출력할 수 있다.
도 6은 도 5의 예시적인 동작에서 수행되는 어드레스 맵핑을 보여주는 개념도이다. 도 6은 도 5의 S220 동작과 관련될 수 있다.
예로서, 컨트롤러(1330)는 호스트(1100)로부터 대상 데이터에 대한 읽기 요청(REQ)을 수신할 수 있다. 읽기 요청(REQ)은 호스트(1100)에 의해 인식되는 어드레스(ADDR1)(예컨대, 논리 어드레스)를 포함할 수 있다.
컨트롤러(1330)는 어드레스(ADDR1)를 어드레스(ADDR2) 및 어드레스(ADDR3)로 맵핑할 수 있다. 어드레스들(ADDR2, ADDR3) 각각은 컨트롤러(1330)에 의해 직접 관리되는 어드레스(예컨대, 물리 어드레스)를 포함할 수 있다. 어드레스(ADDR2)는 불휘발성 메모리(1311)에서 대상 데이터가 저장되는 메모리 영역의 어드레스와 관련될 수 있고, 어드레스(ADDR3)는 불휘발성 메모리(1312)에서 복제된 데이터가 저장되는 메모리 영역의 어드레스와 관련될 수 있다.
컨트롤러(1330)가 읽기 요청(REQ)을 처리하기 위해 어드레스(ADDR1)를 어드레스들(ADDR2, ADDR3) 모두로 맵핑할 수 있다. 어드레스(ADDR2)에 기초하여 불휘발성 메모리(1311)의 대상 데이터가 접근될 수 있고, 어드레스(ADDR3)에 기초하여 불휘발성 메모리(1312)의 복제된 데이터가 접근될 수 있다. 따라서, 대상 데이터는 불휘발성 메모리(1311)의 대상 데이터 및 불휘발성 메모리(1312)의 복제된 데이터 모두에 기초하여 읽힐 수 있다.
도 7a 내지 도 7c는 도 5의 예시적인 동작에 따라 대상 데이터를 출력하는 과정들을 보여주는 개념도들이다. 도 7a 내지 도 7c는 도 5의 S230 내지 S250 동작들과 관련될 수 있다.
도 7a는 도 4a의 예시에 따라 저장되는 대상 데이터(tDAT) 및 복제된 데이터(dDAT)와 관련된다. 도 7a를 참조하면, 컨트롤러(1330)는 대상 데이터(tDAT)를 출력하기 위해, 대상 데이터(tDAT)의 제 1 부분(P1)을 제 1 메모리 영역(MA1)의 대상 데이터(tDAT)로부터 수신할 수 있다. 나아가, 컨트롤러(1330)는 대상 데이터(tDAT)를 출력하기 위해, 대상 데이터(tDAT)의 제 2 부분(P2)을 제 2 메모리 영역(MA2)의 복제된 데이터(dDAT)로부터 수신할 수 있다.
이후, 컨트롤러(1330)는 제 1 부분(P1)과 제 2 부분(P2)을 결합하여, 결합된 데이터를 생성할 수 있다. 컨트롤러(1330)는 결합된 데이터를 대상 데이터(tDAT)로서 호스트(1100)로 출력할 수 있다.
대상 데이터(tDAT)가 빈번하게 접근되는 경우, 컨트롤러(1330)는 대상 데이터 및 복제된 데이터 모두에 기초하여 대상 데이터를 출력할 수 있다. 대상 데이터(tDAT)의 일부(P1)는 불휘발성 메모리(1311)로부터 읽히고 다른 일부(P2)는 불휘발성 메모리(1312)로부터 읽히기 때문에, 대상 데이터(tDAT)가 빠르게 출력될 수 있다. 복제된 데이터(dDAT)의 개수가 증가하는 경우, 대상 데이터(tDAT)를 출력하는 속도가 더 빨라질 수 있다.
게다가, 대상 데이터(tDAT)가 빈번하게 접근되더라도, 대상 데이터(tDAT)에 대해 수행되는 동작들이 불휘발성 메모리(1311)의 제 1 메모리 영역(MA1)으로 집중되지 않고, 불휘발성 메모리(1311)의 제 1 메모리 영역(MA1) 및 불휘발성 메모리(1312)의 제 2 메모리 영역(MA2)으로 분배될 수 있다. 따라서, 제 1 메모리 영역(MA1)에서 수행되는 동작들의 횟수가 감소할 수 있고, 불휘발성 메모리(1311)의 수명이 급격하게 감소하지 않을 수 있다.
제 1 부분(P1)의 데이터 크기/위치 및 제 2 부분(P2)의 데이터 크기/위치는 고정(Fixed)되거나 가변(Variable)할 수 있다. 예로서, 제 1 부분(P1)의 데이터 크기/위치 및 제 2 부분(P2)의 데이터 크기/위치는 컨트롤러(1330)의 로직에 의해 미리 결정될 수 있다. 다른 예로서, 제 1 부분(P1)의 데이터 크기/위치 및 제 2 부분(P2)의 데이터 크기/위치는 불휘발성 메모리들(1311, 1312) 각각의 대역폭(Bandwidth), 동작 부하(Workload), 웨어 레벨(Wear Level) 등과 같은 다양한 요인에 의존하여 정적으로 또는 동적으로 가변할 수 있다. 제 1 부분(P1)의 데이터 크기/위치 및 제 2 부분(P2)의 데이터 크기/위치가 가변하는 경우, 도 6의 어드레스들(ADDR2, ADDR3) 역시 가변할 수 있다.
도 7b는 도 4b의 예시에 따라 저장되는 대상 데이터(tDAT) 및 복제된 데이터(dDAT')와 관련된다. 도 7c는 도 4c의 예시에 따라 저장되는 대상 데이터(tDAT) 및 복제된 데이터(dDAT')와 관련된다.
도 7b 및 도 7c를 참조하면, 컨트롤러(1330)는 대상 데이터(tDAT)를 출력하기 위해, 대상 데이터(tDAT)의 제 1 부분(P1)을 제 1 메모리 영역(MA1)의 대상 데이터(tDAT)로부터 수신할 수 있다. 나아가, 컨트롤러(1330)는 대상 데이터(tDAT)를 출력하기 위해, 대상 데이터(tDAT)의 제 2 부분(P2)을 제 2 메모리 영역(MA2)의 복제된 데이터(dDAT')로부터 수신할 수 있다. 이후, 컨트롤러(1330)는 제 1 부분(P1)과 제 2 부분(P2)을 결합하여, 결합된 데이터를 생성할 수 있다. 컨트롤러(1330)는 결합된 데이터를 대상 데이터(tDAT)로서 호스트(1100)로 출력할 수 있다.
도 7a의 예시와 달리, 도 7b 및 도 7c의 예시들에서, 제 2 메모리 영역(MA2)이 제 1 부분(P1)을 저장하지 않거나 제 1 메모리 영역(MA1)의 제 2 부분(P2)이 무효화될 수 있다. 따라서, 컨트롤러(1330)는 제 1 부분(P1)의 데이터 크기/위치 및 제 2 부분(P2)의 데이터 크기/위치를 유연하게 조절하지 않을 수 있다. 그러나, 스페어 영역이 충분해지기 때문에, 불휘발성 메모리들(1311, 1312)의 가용 용량(Available Capacity)이 커질 수 있다.
몇몇 실시 예에서, 복수의 복제된 데이터가 생성될 수 있다. 예로서, 복수의 복제된 데이터 각각은 도 7a에 나타낸 것과 유사하게 대상 데이터(tDAT)와 동일할 수 있다. 또는, 복수의 복제된 데이터 각각은 도 7b 및 도 7c에 나타낸 것과 유사하게 대상 데이터(tDAT)의 일부와 중첩하지 않을 수 있다. 몇몇 경우, 복수의 복제된 데이터는 서로 중첩하지 않을 수 있다. 이러한 실시 예에서, 컨트롤러(1330)는 대상 데이터(tDAT) 및 복수의 복제된 데이터 모두에 기초하여 대상 데이터(tDAT)를 출력할 수 있다.
도 8은 도 1의 스토리지 장치의 예시적인 동작을 설명하는 흐름도이다. 예로서, 도 8의 예시적인 동작은 도 2의 S140 동작에서 복제된 데이터가 저장된 후에 개시될 수 있다.
S310 동작에서, 컨트롤러(1330)는 대상 데이터에 대해 수행되는 동작들의 횟수를 모니터링할 수 있다. S310 동작은 도 2의 S120 동작과 유사할 수 있다. 그러나, 도 8의 예시적인 동작은 복제된 데이터가 저장된 후에 개시되기 때문에, S310 동작에서, 컨트롤러(1330)는 대상 데이터 및 복제된 데이터 중 적어도 하나로 향하는 동작들의 횟수를 카운트할 수 있다.
S320 동작에서, 컨트롤러(1330)는 대상 데이터가 드물게 접근되는지 여부(즉, 대상 데이터가 소위 "콜드 데이터(Cold Data)"인지 여부)를 판별할 수 있다. 예로서, 컨트롤러(1330)는 대상 데이터(및/또는 복제된 데이터)에 대해 수행되는 동작들의 횟수가 기준 값 이하인지 여부를 판별할 수 있다. 예로서, 대상 데이터(및/또는 복제된 데이터)에 대해 수행되는 동작들의 횟수가 기준 값 이하인 경우에 대상 데이터가 드물게 접근되는 것으로 이해될 수 있다.
예로서, S320 동작은 컨트롤러(1330)에 의해 관리되는 카운트 값 및/또는 빈도 값이 변경될 때마다 수행될 수 있다. 또는, S320 동작은 주기적으로 수행될 수 있고, 또는 특정 조건이 충족되는 때에 수행될 수 있다. S320 동작의 수행은 다양하게 변경 또는 수정될 수 있다. 나아가, S320 동작의 기준 값은 도 2의 S130 동작의 기준 값과 동일하거나 상이할 수 있다. 기준 값들 역시 설계 의도에 의존하여 다양하게 변경 또는 수정될 수 있다.
대상 데이터(및/또는 복제된 데이터)에 대해 수행되는 동작들의 횟수가 기준 값을 초과하는 경우(즉, 대상 데이터가 여전히 빈번하게 접근되는 경우), S310 동작이 수행될 수 있다. S310 동작에서, 컨트롤러(1330)는 대상 데이터(및/또는 복제된 데이터)에 대해 수행되는 동작들의 횟수를 계속 모니터링할 수 있다. 반면, 대상 데이터(및/또는 복제된 데이터)에 대해 수행되는 동작들의 횟수가 기준 값 이하로 변경되는 경우(즉, 대상 데이터가 드물게 접근되는 경우), S330 또는 S340 동작이 수행될 수 있다.
S330 동작에서, 컨트롤러(1330)는 복제된 데이터에 기초하여 대상 데이터를 복원할 수 있다. S330 동작은 도 4c 및 도 7c에 나타낸 것과 유사하게 대상 데이터의 일부가 무효화된 경우에 수행될 수 있다. 예로서, 도 7c를 참조하면, 컨트롤러(1330)는 복제된 데이터(dDAT')에 기초하여, 불휘발성 메모리(1311)의 제 1 메모리 영역(MA1)의 대상 데이터(tDAT)를 위해 제 2 부분(P2)을 복원할 수 있다.
복원은 다양한 방식으로 구현될 수 있다. 예로서, 도 7c를 참조하면, 제 2 부분(P2)이 물리적으로 소거되었던 경우, 복원은 불휘발성 메모리(1312)의 제 2 메모리 영역(MA2)의 제 2 부분(P2)을 복제하고 복제된 제 2 부분(P2)을 제 1 메모리 영역(MA1)에 저장하는 것을 포함할 수 있다. 다른 예로서, 제 2 부분(P2)이 물리적으로 소거되지는 않은 경우, 복원은 제 1 메모리 영역(MA1)의 제 2 부분(P2)에 대응하는 물리 어드레스와 논리 어드레스를 재맵핑(Re-mapping)하는 것을 포함할 수 있다.
S340 동작에서, 컨트롤러(1330)는 복제된 데이터를 제거(또는, 무효화)할 수 있다. 대상 데이터가 드물게 접근되기 때문에, 높은 성능이 요구되지 않을 수 있다. 나아가, 대상 데이터에 대해 수행되는 동작들이 과도하게 수행되지 않을 수 있다. 따라서, 복제된 데이터를 제거(또는, 무효화)하는 것이 수용 가능할 수 있다.
S340 동작(및 S330 동작)이 수행된 후, 도 4a 내지 도 4c의 불휘발성 메모리들(1311, 1312)의 상태는 도 3에 나타낸 상태로 복원될 수 있다. 따라서, 불휘발성 메모리(1312)는 복제된 데이터를 저장하지 않을 수 있고, 불휘발성 메모리(1311)는 여전히 대상 데이터(tDAT)를 저장할 수 있다.
복제된 데이터가 제거(또는, 무효화)된 후, 스토리지 장치(1300)는 복제된 데이터 없이 대상 데이터에만 기초하여 동작할 수 있다. 예로서, 컨트롤러(1330)가 호스트(1100)로부터 후속 읽기 요청을 수신하는 경우, 컨트롤러(1330)는 대상 데이터만 불휘발성 메모리로부터 읽을 수 있다. 따라서, 컨트롤러(1330)는 후속 읽기 요청에 응답하여, 복제된 데이터 없이 대상 데이터에만 기초하여 대상 데이터를 출력할 수 있다.
도 9는 본 발명의 실시 예들에 따른 스토리지 장치를 포함하는 전자 시스템의 구성 및 그것의 인터페이스들을 보여주는 블록도이다.
전자 시스템(2000)은 MIPI(Mobile Industry Processor Interface) 연합(Alliance)에 의해 제안된 인터페이스를 이용하거나 지원할 수 있는 데이터 처리 장치로 구현될 수 있다. 예로서, 전자 시스템(2000)은 이동 통신 단말기, PDA(Personal Digital Assistant), PMP(Portable Media Player), 스마트폰, 태블릿 컴퓨터, 웨어러블(Wearable) 장치 등과 같은 전자 장치들 중 하나일 수 있다.
전자 시스템(2000)은 어플리케이션 프로세서(2100), 디스플레이(2220), 및 이미지 센서(2230)를 포함할 수 있다. 어플리케이션 프로세서(2100)는 DigRF 마스터(2110), DSI(Display Serial Interface) 호스트(2120), CSI(Camera Serial Interface) 호스트(2130), 및 물리 계층(2140)을 포함할 수 있다.
DSI 호스트(2120)는 DSI에 따라 디스플레이(2220)의 DSI 장치(2225)와 통신할 수 있다. 예로서, DSI 호스트(2120)에는 광 시리얼라이저(SER)가 구현될 수 있다. 예로서, DSI 장치(2225)에는 광 디시리얼라이저(DES)가 구현될 수 있다.
CSI 호스트(2130)는 CSI에 따라 이미지 센서(2230)의 CSI 장치(2235)와 통신할 수 있다. 예로서, CSI 호스트(2130)에는 광 디시리얼라이저(DES)가 구현될 수 있다. 예로서, CSI 장치(2235)에는 광 시리얼라이저(SER)가 구현될 수 있다.
전자 시스템(2000)은 어플리케이션 프로세서(2100)와 통신하는 RF(Radio Frequency) 칩(2240)을 더 포함할 수 있다. RF 칩(2240)은 물리 계층(2242), DigRF 슬레이브(2244), 및 안테나(2246)를 포함할 수 있다. 예로서, RF 칩(2240)의 물리 계층(2242)과 어플리케이션 프로세서(2100)의 물리 계층(2140)은 MIPI 연합에 의해 제안된 DigRF 인터페이스에 의해 서로 데이터를 교환할 수 있다.
전자 시스템(2000)은 워킹 메모리(2250) 및 임베디드(Embedded)/카드 스토리지(2255)를 더 포함할 수 있다. 워킹 메모리(2250) 및 임베디드/카드 스토리지(2255)는 어플리케이션 프로세서(2100)로부터 제공받은 데이터를 저장할 수 있다. 나아가, 워킹 메모리(2250) 및 임베디드/카드 스토리지(2255)는 그것들에 저장된 데이터를 어플리케이션 프로세서(2100)로 제공할 수 있다.
워킹 메모리(2250)는 어플리케이션 프로세서(2100)에 의해 처리된 또는 처리될 데이터를 일시적으로 저장할 수 있다. 워킹 메모리(2250)는 SRAM(Static RAM), DRAM(Dynamic RAM), SDRAM(Synchronous DRAM) 등과 같은 휘발성 메모리, 및/또는 플래시 메모리, PRAM, MRAM, ReRAM, FRAM 등과 같은 불휘발성 메모리를 포함할 수 있다.
임베디드/카드 스토리지(2255)는 전원 공급에 관계없이 데이터를 저장할 수 있다. 임베디드/카드 스토리지(2255)는 하나 이상의 불휘발성 메모리들 및 컨트롤러를 포함할 수 있다. 예로서, 임베디드/카드 스토리지(2255)는 플래시 메모리, PRAM, MRAM, ReRAM, FRAM 등과 같은 불휘발성 메모리들 중 적어도 하나를 포함할 수 있다. 예로서, 임베디드/카드 스토리지(2255)는 SD 카드, eMMC, UFS 카드 등과 같은 장치들일 수 있다.
워킹 메모리(2250) 및 임베디드/카드 스토리지(2255) 중 적어도 하나는 본 발명의 실시 예들에 따라 구현될 수 있다. 워킹 메모리(2250) 및 임베디드/카드 스토리지(2255) 중 적어도 하나에서, 대상 데이터가 빈번하게 접근되는 경우, 대상 데이터로의 접근은 대상 데이터 및 복제된 데이터 모두에 기초하여 처리될 수 있다. 따라서, 동작 성능이 향상될 수 있고, 수명이 급격하게 단축되지 않을 수 있다.
전자 시스템(2000)은 WiMAX(Worldwide Interoperability for Microwave Access, 2260), WLAN(Wireless Local Area Network, 2262), UWB(Ultra Wideband, 2264) 등과 같은 통신 모듈을 통해 외부 시스템과 통신할 수 있다. 전자 시스템(2000)은 음성 정보를 처리하기 위한 스피커(2270) 및 마이크(Microphone, 2275)를 더 포함할 수 있다. 전자 시스템(2000)은 위치 정보를 처리하기 위한 GPS(Global Positioning System) 장치(2280)를 더 포함할 수 있다. 전자 시스템(2000)은 주변 장치들과의 연결을 관리하기 위한 브릿지(Bridge) 칩(2290)을 더 포함할 수 있다.
도 10은 본 발명의 실시 예들에 따른 스토리지 장치를 포함하는 컴퓨팅 장치를 보여주는 블록도이다.
컴퓨팅 장치(3000)는 중앙 처리 유닛(3100), 워킹 메모리(3200), 스토리지 장치(3300), 통신 블록(3400), 유저 인터페이스(3500), 및 버스(3600)를 포함할 수 있다. 예로서, 컴퓨팅 장치(3000)는 데스크톱(Desktop) 컴퓨터, 랩톱(Laptop) 컴퓨터, 워크스테이션(Workstation), 서버(Server) 등과 같은 전자 장치들 중 하나일 수 있다.
중앙 처리 유닛(3100)은 컴퓨팅 장치(3000)의 전반적인 동작들을 제어할 수 있다. 중앙 처리 유닛(3100)은 다양한 종류의 산술 연산들 및/또는 논리 연산들을 수행할 수 있다. 예로서, 중앙 처리 유닛(3100)은 범용 프로세서 또는 전용 프로세서를 포함할 수 있다.
워킹 메모리(3200)는 중앙 처리 유닛(3100)과 데이터를 교환할 수 있다. 워킹 메모리(3200)는 컴퓨팅 장치(3000)의 동작에 이용되는 데이터를 일시적으로 저장할 수 있다. 워킹 메모리(3200)는 컴퓨팅 장치(3000)의 버퍼 또는 캐시로서 이용될 수 있다. 예로서, 워킹 메모리(3200)는 SRAM, DRAM, SDRAM 등과 같은 휘발성 메모리를 포함할 수 있다.
스토리지 장치(3300)는 전원 공급에 관계없이 데이터를 저장할 수 있다. 스토리지 장치(3300)는 하나 이상의 불휘발성 메모리들 및 컨트롤러를 포함할 수 있다. 예로서, 스토리지 장치(3300)는 플래시 메모리, PRAM, MRAM, ReRAM, FRAM 등과 같은 불휘발성 메모리들 중 적어도 하나를 포함할 수 있다. 예로서, 스토리지 장치(3300)는 SSD(Solid State Drive)와 같은 스토리지 매체를 포함할 수 있다.
스토리지 장치(3300)는 본 발명의 실시 예들에 따라 구현될 수 있다. 스토리지 장치(3300)에서, 대상 데이터가 빈번하게 접근되는 경우, 대상 데이터로의 접근은 대상 데이터 및 복제된 데이터 모두에 기초하여 처리될 수 있다. 따라서, 동작 성능이 향상될 수 있고, 수명이 급격하게 단축되지 않을 수 있다.
통신 블록(3400)은 중앙 처리 유닛(3100)의 제어에 따라 컴퓨팅 장치(3000)의 외부와 통신할 수 있다. 예로서, 통신 블록(3400)은 LTE(Long Term Evolution), WiMAX, GSM(Global System for Mobile communications), CDMA(Code Division Multiple Access), Bluetooth, NFC(Near Field Communication), WiFi(Wireless Fidelity), RFID(Radio Frequency Identification) 등의 다양한 무선 통신 규약 중 적어도 하나, 및/또는 TCP/IP(Transfer Control Protocol/Internet Protocol), USB, SCSI, ATA, PATA, SATA, SAS, IDE, Firewire 등의 다양한 유선 통신 규약 중 적어도 하나에 따라 컴퓨팅 장치(3000)의 외부와 통신할 수 있다.
유저 인터페이스(3500)는 중앙 처리 유닛(3100)의 제어에 따라 사용자와 컴퓨팅 장치(3000) 사이의 통신을 중계할 수 있다. 예로서, 유저 인터페이스(3500)는 키보드, 마우스, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서 등의 입력 인터페이스를 포함할 수 있다. 예로서, 유저 인터페이스(3500)는 LCD(Liquid Crystal Display) 장치, LED(Light Emitting Diode) 표시 장치, OLED(Organic LED) 표시 장치, AMOLED(Active Matrix OLED) 표시 장치, 스피커, 모터 등의 출력 인터페이스를 포함할 수 있다.
버스(3600)는 컴퓨팅 장치(3000)의 구성 요소들 사이에서 통신 경로를 제공할 수 있다. 컴퓨팅 장치(3000)의 구성 요소들은 버스(3600)의 버스 포맷에 기초하여 서로 데이터를 교환할 수 있다. 예로서, 버스 포맷은 USB, SCSI, PCIe, NVMe, ATA, PATA, SATA, SAS, IDE, UFS 등과 같은 다양한 규약들 중 하나 이상을 포함할 수 있다.
도 11은 본 발명의 실시 예들에 따른 스토리지 장치를 포함하는 스토리지 시스템을 보여주는 블록도이다.
스토리지 시스템(4000)은 스토리지 서버(4100) 및 클라이언트 장치들(4301, 4302, 4303)을 포함할 수 있다. 스토리지 서버(4100)는 네트워크(4500)를 통해 클라이언트 장치들(4301, 4302, 4303)과 통신할 수 있다.
스토리지 서버(4100)는 클라이언트 장치들(4301, 4302, 4303)을 위해 스토리지 서비스를 제공할 수 있다. 예로서, 스토리지 서버(4100)는 데이터베이스 서버, 클라우드 서버 등과 같이 클라이언트 장치들(4301, 4302, 4303)로부터 로컬로 또는 원격으로 분리되는 장치 또는 시스템일 수 있다.
스토리지 서버(4100)는 하나 이상의 스토리지 장치들을 포함할 수 있다. 각 스토리지 장치는 하나 이상의 불휘발성 메모리들 및 컨트롤러를 포함할 수 있다. 따라서, 스토리지 서버(4100)는 본 발명의 실시 예들에 따라 구현될 수 있다. 스토리지 서버(4100)에서, 대상 데이터가 빈번하게 접근되는 경우, 대상 데이터로의 접근은 대상 데이터 및 복제된 데이터 모두에 기초하여 처리될 수 있다. 따라서, 동작 성능이 향상될 수 있고, 수명이 급격하게 단축되지 않을 수 있다.
클라이언트 장치들(4301, 4302, 4303) 각각은 연산 처리 기능을 갖는 전자 장치일 수 있다. 예로서, 클라이언트 장치들(4301, 4302, 4303) 각각은 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트폰, 웨어러블 장치, 또 다른 서버 등과 같은 전자 장치들 중 하나일 수 있다.
네트워크(4500)는 LTE, WiMAX, GSM, CDMA, Bluetooth, NFC, WiFi, RFID 등의 다양한 무선 통신 규약 중 적어도 하나, 및/또는 TCP/IP 등의 다양한 유선 통신 규약 중 적어도 하나에 따라, 스토리지 서버(4100)와 클라이언트 장치들(4301, 4302, 4303) 사이의 통신을 허용할 수 있다.
위에서 설명된 내용은 본 발명의 기술 사상을 구현하기 위한 구체적인 예들이다. 본 발명의 기술 사상은 위에서 설명된 실시 예들뿐만 아니라, 단순하게 설계 변경하거나 용이하게 변경하여 얻어질 수 있는 실시 예들도 포함할 것이다. 또한, 본 발명의 기술 사상에는 위에서 설명된 실시 예들에 기초하여 앞으로 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다.
1000 : 스토리지 시스템 2000 : 전자 시스템
3000 : 컴퓨팅 장치 4000 : 스토리지 시스템

Claims (10)

  1. 대상 데이터를 저장하도록 구성되는 제 1 메모리 영역을 포함하는 하나 이상의 불휘발성 메모리들; 및
    상기 대상 데이터에 대해 수행되는 동작들의 횟수를 모니터링하고, 상기 수행되는 동작들의 상기 횟수가 제 1 기준 값 이상인 경우 상기 대상 데이터의 전부 또는 일부와 동일한 복제된 데이터를 상기 하나 이상의 불휘발성 메모리들의 제 2 메모리 영역에 저장하고, 상기 제 2 메모리 영역이 상기 복제된 데이터를 저장한 후 상기 수행되는 동작들의 상기 횟수가 제 2 기준 값 이하로 변경되는 경우 상기 제 2 메모리 영역의 상기 복제된 데이터를 무효화하도록 구성되는 컨트롤러를 포함하는 스토리지 장치.
  2. 제 1 항에 있어서,
    상기 하나 이상의 불휘발성 메모리들은 적어도 제 1 불휘발성 메모리 및 제 2 불휘발성 메모리를 포함하고,
    상기 제 1 불휘발성 메모리는 상기 제 1 메모리 영역을 포함하고, 상기 제 2 불휘발성 메모리는 상기 제 2 메모리 영역을 포함하는 스토리지 장치.
  3. 제 2 항에 있어서,
    상기 제 1 불휘발성 메모리 및 상기 제 2 불휘발성 메모리는 각각 상이한 반도체 다이(Die)들 또는 칩들로 구현되는 스토리지 장치.
  4. 제 1 항에 있어서,
    상기 제 2 메모리 영역이 상기 복제된 데이터를 저장하는 경우, 상기 제 1 메모리 영역은 상기 대상 데이터를 유지하는 스토리지 장치.
  5. 제 4 항에 있어서,
    상기 제 2 메모리 영역이 상기 복제된 데이터를 저장한 후, 상기 컨트롤러는 상기 대상 데이터를 호스트로 출력하기 위해, 상기 대상 데이터의 제 1 부분을 상기 제 1 메모리 영역의 상기 대상 데이터로부터 수신하고 상기 대상 데이터의 제 2 부분을 상기 제 2 메모리 영역의 상기 복제된 데이터로부터 수신하도록 구성되는 스토리지 장치.
  6. 제 4 항에 있어서,
    상기 제 2 메모리 영역이 상기 복제된 데이터를 저장한 후 상기 수행되는 동작들의 상기 횟수가 상기 제 2 기준 값 이하로 변경되는 경우, 상기 컨트롤러는 상기 제 2 메모리 영역의 상기 복제된 데이터를 무효화하기 위해 상기 복제된 데이터를 상기 제 2 메모리 영역으로부터 물리적으로 소거하거나 상기 복제된 데이터의 물리 어드레스와 논리 어드레스 사이의 맵핑을 끊는 스토리지 장치.
  7. 제 1 항에 있어서,
    상기 대상 데이터는 서로 중첩하지 않는 제 1 부분 및 제 2 부분을 포함하고, 상기 복제된 데이터는 상기 제 2 부분에 대응하고,
    상기 제 2 메모리 영역이 상기 복제된 데이터를 저장하는 경우, 상기 컨트롤러는 상기 제 1 메모리 영역의 상기 제 2 부분을 무효화하고 상기 제 1 메모리 영역은 상기 대상 데이터를 위해 상기 제 1 부분을 유지하는 스토리지 장치.
  8. 제 7 항에 있어서,
    상기 제 2 메모리 영역이 상기 복제된 데이터를 저장한 후, 상기 컨트롤러는 상기 대상 데이터를 호스트로 출력하기 위해, 상기 제 1 부분을 상기 제 1 메모리 영역의 상기 대상 데이터로부터 수신하고 상기 제 2 부분을 상기 제 2 메모리 영역의 상기 복제된 데이터로부터 수신하도록 구성되는 스토리지 장치.
  9. 제 7 항에 있어서,
    상기 제 2 메모리 영역이 상기 복제된 데이터를 저장한 후 상기 수행되는 동작들의 상기 횟수가 상기 제 2 기준 값 이하로 변경되는 경우, 상기 컨트롤러는 상기 복제된 데이터에 기초하여 상기 제 1 메모리 영역의 상기 제 2 부분을 복원하고 상기 제 2 메모리 영역의 상기 복제된 데이터를 무효화하는 스토리지 장치.
  10. 대상 데이터를 저장하도록 구성되는 하나 이상의 불휘발성 메모리들; 및
    상기 대상 데이터에 대해 수행되는 동작들의 횟수가 제 1 기준 값 이상인 경우, 상기 대상 데이터에 대한 읽기 요청에 응답하여, 상기 대상 데이터, 및 상기 대상 데이터의 전부 또는 일부를 동일하게 복제하여 생성되는 복제된 데이터에 함께 기초하여 상기 대상 데이터를 출력하고, 상기 수행되는 동작들의 상기 횟수가 제 2 기준 값 이하로 변경되는 경우, 상기 대상 데이터에 대한 후속 읽기 요청에 응답하여, 상기 복제된 데이터 없이 상기 대상 데이터에만 기초하여 상기 대상 데이터를 출력하도록 구성되는 컨트롤러를 포함하는 스토리지 장치.
KR1020170018816A 2017-02-10 2017-02-10 동작들의 횟수에 기초하여 복제된 데이터를 관리하는 스토리지 장치 KR20180092715A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020170018816A KR20180092715A (ko) 2017-02-10 2017-02-10 동작들의 횟수에 기초하여 복제된 데이터를 관리하는 스토리지 장치
US15/840,036 US10416895B2 (en) 2017-02-10 2017-12-13 Storage devices managing duplicated data based on the number of operations

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170018816A KR20180092715A (ko) 2017-02-10 2017-02-10 동작들의 횟수에 기초하여 복제된 데이터를 관리하는 스토리지 장치

Publications (1)

Publication Number Publication Date
KR20180092715A true KR20180092715A (ko) 2018-08-20

Family

ID=63106356

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170018816A KR20180092715A (ko) 2017-02-10 2017-02-10 동작들의 횟수에 기초하여 복제된 데이터를 관리하는 스토리지 장치

Country Status (2)

Country Link
US (1) US10416895B2 (ko)
KR (1) KR20180092715A (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110413214B (zh) * 2018-04-28 2023-07-18 伊姆西Ip控股有限责任公司 用于存储管理的方法、设备和计算机程序产品
KR20210034897A (ko) * 2019-09-23 2021-03-31 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법
KR20210066559A (ko) * 2019-11-28 2021-06-07 에스케이하이닉스 주식회사 컨트롤러 및 이를 포함하는 메모리 시스템
US11275510B2 (en) * 2020-02-07 2022-03-15 Samsung Electronics Co., Ltd. Systems and methods for storage device block-level failure prediction
US11734093B2 (en) 2020-06-23 2023-08-22 Samsung Electronics Co., Ltd. Storage device block-level failure prediction-based data placement

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI375953B (en) * 2008-02-21 2012-11-01 Phison Electronics Corp Data reading method for flash memory, controller and system therof
US8843691B2 (en) 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US8200925B2 (en) 2008-10-31 2012-06-12 Mosaid Technologies Incorporated Data mirroring in serial-connected memory system
US8407400B2 (en) 2008-11-12 2013-03-26 Micron Technology, Inc. Dynamic SLC/MLC blocks allocations for non-volatile memory
US8677203B1 (en) 2010-01-11 2014-03-18 Apple Inc. Redundant data storage schemes for multi-die memory systems
US9223693B2 (en) 2012-12-31 2015-12-29 Sandisk Technologies Inc. Memory system having an unequal number of memory die on different control channels
US20150370670A1 (en) 2014-06-18 2015-12-24 NXGN Data, Inc. Method of channel content rebuild via raid in ultra high capacity ssd
US9747177B2 (en) 2014-12-30 2017-08-29 International Business Machines Corporation Data storage system employing a hot spare to store and service accesses to data having lower associated wear
US10014060B2 (en) 2015-01-30 2018-07-03 Sandisk Technologies Llc Memory system and method for reducing read disturb errors
US20170199680A1 (en) * 2016-01-13 2017-07-13 Alibaba Group Holding Limited System and method of write amplification factor mitigation and flash lifespan extension

Also Published As

Publication number Publication date
US10416895B2 (en) 2019-09-17
US20180232144A1 (en) 2018-08-16

Similar Documents

Publication Publication Date Title
US11294825B2 (en) Memory system for utilizing a memory included in an external device
CN110032332B (zh) 存储设备和包括存储设备的电子设备
US9164833B2 (en) Data storage device, operating method thereof and data processing system including the same
US10789019B2 (en) Storage device capable of managing jobs without intervention of a processor
KR20180092715A (ko) 동작들의 횟수에 기초하여 복제된 데이터를 관리하는 스토리지 장치
US10866737B2 (en) Apparatus, method and system to store information for a solid state drive
CN113448504A (zh) 具有用于实现内部固态驱动器操作的外部软件执行的固态驱动器
US20180095674A1 (en) Selective data compression/decompression for intermemory transfer interface
US20170255561A1 (en) Technologies for increasing associativity of a direct-mapped cache using compression
US11416398B2 (en) Memory card with volatile and non volatile memory space having multiple usage model configurations
US20170177482A1 (en) Computing system having multi-level system memory capable of operating in a single level system memory mode
US20170160987A1 (en) Multilevel main memory indirection
KR20190033122A (ko) 멀티캐스트 통신 프로토콜에 따라 호스트와 통신하는 저장 장치 및 호스트의 통신 방법
WO2019090493A1 (zh) 内存块回收方法和装置
US10783033B2 (en) Device and method for accessing in-band memory using data protection
KR20150041873A (ko) 데이터 처리 시스템
US9971549B2 (en) Method of operating a memory device
KR20190051530A (ko) 데이터 처리 시스템 및 데이터 처리 시스템의 동작 방법
US20230169022A1 (en) Operating method of an electronic device
US10599341B2 (en) Storage device operating to prevent data loss when communicating is interrupted
KR20230078577A (ko) 동기식 쓰기 방법 및 장치, 스토리지 시스템 및 전자 장치
US11429282B2 (en) Apparatus and method for improving Input/Output throughput of memory system
US11500720B2 (en) Apparatus and method for controlling input/output throughput of a memory system
US20230376238A1 (en) Computing system for managing distributed storage devices, and method of operating the same
US20230359567A1 (en) Storage device, computing device including storage device and memory device, and operating method of computing device

Legal Events

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