KR20210023203A - 데이터 저장 장치 및 그것의 동작 방법 - Google Patents

데이터 저장 장치 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20210023203A
KR20210023203A KR1020190103087A KR20190103087A KR20210023203A KR 20210023203 A KR20210023203 A KR 20210023203A KR 1020190103087 A KR1020190103087 A KR 1020190103087A KR 20190103087 A KR20190103087 A KR 20190103087A KR 20210023203 A KR20210023203 A KR 20210023203A
Authority
KR
South Korea
Prior art keywords
zone
data
random
storage device
data storage
Prior art date
Application number
KR1020190103087A
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 KR1020190103087A priority Critical patent/KR20210023203A/ko
Priority to US16/841,274 priority patent/US11243709B2/en
Priority to DE102020112512.7A priority patent/DE102020112512A1/de
Priority to CN202010571897.9A priority patent/CN112416242B/zh
Priority to JP2020111045A priority patent/JP2021034026A/ja
Priority to US17/000,082 priority patent/US11734175B2/en
Publication of KR20210023203A publication Critical patent/KR20210023203A/ko
Priority to US18/346,203 priority patent/US20230350803A1/en

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/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/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/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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
    • 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
    • G06F11/1458Management of the backup or restore process
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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/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/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/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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/068Hybrid storage device
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host 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/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

본 발명의 실시 예에 따른 데이터 저장 장치는 존 매핑 테이블과 시스템 정보를 저장하는 영역 및 랜덤 라이트가 가능한 랜덤 존(Random Zone)을 포함하는 휘발성 메모리; 백업 존(Backup Zone) 및 시퀀셜 라이트가 가능한 복수의 시퀀셜 존(Sequential Zone)을 포함하는 불휘발성 메모리; 및 호스트 장치로부터 라이트 커맨드 또는 리드 커맨드 시 전달되는 논리주소 및 데이터 크기를 수신하면, 논리주소가 랜덤 존 또는 시퀀셜 존에 속하는지 여부를 파악하여 라이트 커맨드 또는 리드 커맨드에 대응되는 동작을 수행하도록 제어하는 컨트롤러를 포함한다.

Description

데이터 저장 장치 및 그것의 동작 방법{Data storage device and operating method thereof}
본 발명은 반도체 장치에 관한 것으로, 보다 구체적으로는 데이터 저장 장치 및 그것의 동작 방법에 관한 것이다.
메모리 장치를 이용한 데이터 저장 장치는 기계적인 구동부가 없어서 안정성 및 내구성이 뛰어나며 정보의 액세스 속도가 매우 빠르고 전력 소모가 적다는 장점이 있다. 이러한 장점을 갖는 데이터 저장 장치는 USB(Universal Serial Bus) 메모리 장치, 다양한 인터페이스를 갖는 메모리 카드, UFS(Universal Flash Storage) 장치, 솔리드 스테이트 드라이브(Solid State Drive)를 포함한다.
대부분의 솔리드 스테이트 드라이브(Solid State Drive)는 낸드 플래시 메모리(Nand Flash Memory)를 기본으로 사용하고 있다. 낸드 플래시 메모리는 오버 라이트(Overwrite)가 되지 않기 때문에, 호스트 장치에서 사용하는 논리주소와 낸드 플래시 메모리에서 사용하는 물리주소를 서로 매칭해서 관리해야 한다.
일반적으로 논리주소와 물리주소 간의 매핑 테이블은 4KB 단위로 관리되는데, 데이터 접근 성능을 높이기 위해서 DRAM(Dynamic Random Access Memory)에 저장할 수 있다.
본 발명의 실시 예는 휘발성 메모리의 데이터 저장 공간을 랜덤 라이트(Random Write)가 가능한 영역으로 확보하여 기입 성능이 향상된 데이터 저장 장치 및 그것의 동작 방법을 제공한다.
본 발명의 실시 예에 따른 데이터 저장 장치는, 존 매핑 테이블과 시스템 정보를 저장하는 영역 및 랜덤 라이트가 가능한 랜덤 존(Random Zone)을 포함하는 휘발성 메모리; 백업 존(Backup Zone) 및 시퀀셜 라이트가 가능한 복수의 시퀀셜 존(Sequential Zone)을 포함하는 불휘발성 메모리; 및 호스트 장치로부터 라이트 커맨드 또는 리드 커맨드 시 전달되는 논리주소를 수신하면, 상기 논리주소가 상기 랜덤 존 또는 상기 시퀀셜 존에 속하는지 여부를 파악한 후, 파악된 존의 상기 라이트 커맨드 또는 상기 리드 커맨드에 대응되는 동작을 수행하도록 제어하는 컨트롤러를 포함하고, 상기 컨트롤러는 상기 랜덤 존에 저장된 데이터를 기 설정된 기준에 따라 상기 백업 존에 백업하고 전원이 오프(Off)된 후 온(On) 상태로 전환하면, 상기 백업 존에 저장된 데이터를 상기 랜덤 존으로 복구할 수 있다.
본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법은, 호스트 장치로부터 라이트 커맨드 또는 리드 커맨드 시 전달되는 논리주소를 수신하는 단계; 상기 논리주소가 휘발성 메모리 내 랜덤 존(Random Zone) 또는 불휘발성 메모리 내 시퀀셜 존(Sequential Zone)에 속하는지 여부를 파악하는 단계; 및 상기 파악된 랜덤 존 또는 시퀀셜 존에 따라, 상기 라이트 커맨드 또는 상기 리드 커맨드에 대응되는 동작을 수행하는 단계를 포함하고, 상기 휘발성 메모리는 존 매핑 테이블과 시스템 정보를 저장하는 영역 및 랜덤 라이트가 가능한 상기 랜덤 존을 포함하고, 상기 불휘발성 메모리는 백업 존(Backup Zone) 및 시퀀셜 라이트가 가능한 복수의 상기 시퀀셜 존을 포함할 수 있다.
본 실시 예들에 따르면, 매핑 테이블의 구조 변경에 따라 휘발성 메모리에 데이터 기입을 위한 여유 공간이 확보되기 때문에, 데이터 저장 공간을 확보할 수 있고 휘발성 메모리의 특성 상 기입 속도를 증가시킬 수 있어 기입 동작의 성능을 향상시킬 수 있다는 효과를 기대할 수 있다.
또한, 휘발성 메모리에 저장된 데이터를 불휘발성 메모리에 백업 및 복구함에 따라 휘발성 메모리의 데이터 손실을 미연에 방지할 수 있다는 것이다.
도 1은 본 발명의 실시 예에 따른 데이터 저장 장치의 구성을 나타낸 도면이다.
도 2는 본 발명의 실시 예에 따른 불휘발성 메모리의 구성을 나타낸 도면이다.
도 3은 본 발명의 실시 예에 따른 메모리 셀 어레이의 구성을 나타낸 도면이다.
도 4는 본 발명의 실시 예에 따른 데이터 처리 시스템의 구성을 나타낸 도면이다.
도 5는 본 발명의 실시예에 따른 휘발성 메모리의 구성을 나타낸 도면이다.
도 6은 본 발명의 실시 예에 따른 존 매핑 테이블의 일 예를 나타낸 도면이다.
도 7은 본 발명의 실시 예에 따른 백업 과정을 설명하기 위한 예시도이다.
도 8은 본 발명의 실시 예에 따른 복구 과정을 설명하기 위한 예시도이다.
도 9는 본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법을 설명하기 위한 흐름도이다.
도 10은 도 9의 데이터 라이트 방법을 상세하게 설명하기 위한 흐름도이다.
도 11은 도 9의 데이터 리드 방법을 상세하게 설명하기 위한 흐름도이다.
도 12는 본 발명의 다른 실시예에 따른 데이터 저장 장치의 동작 방법을 설명하기 위한 흐름도이다.
도 13은 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브(SSD)를 포함하는 데이터 처리 시스템을 예시적으로 나타낸 도면이다.
도 14는 도 13의 컨트롤러의 구성을 예시적으로 나타낸 도면이다.
도 15는 본 발명의 실시 예에 따른 데이터 저장 장치를 포함하는 데이터 처리 시스템을 예시적으로 나타낸 도면이다.
도 16은 본 발명의 실시 예에 따른 데이터 저장 장치를 포함하는 데이터 처리 시스템을 예시적으로 나타낸 도면이다.
도 17은 본 발명의 실시 예에 따른 데이터 저장 장치를 포함하는 네트워크 시스템을 예시적으로 나타낸 도면이다.
이하, 첨부한 도면에 의거하여 본 발명의 바람직한 실시 예를 설명하도록 한다.
도 1은 본 발명의 실시 예에 따른 데이터 저장 장치(10)의 구성을 예시적으로 나타낸 도면이다.
도 1을 참조하면, 본 실시 예에 따른 데이터 저장 장치(10)는 휴대폰, MP3 플레이어, 랩탑 컴퓨터, 데스크탑 컴퓨터, 게임기, TV, 차량용 인포테인먼트(in-vehicle infotainment) 시스템 등과 같은 호스트 장치(도시되지 않음)에 의해서 액세스되는 데이터를 저장할 수 있다. 데이터 저장 장치(10)는 메모리 시스템으로 불릴 수 있다.
데이터 저장 장치(10)는 호스트 장치와 연결되는 인터페이스 프로토콜에 따라서 다양한 종류의 저장 장치들 중 어느 하나로 제조될 수 있다. 예를 들어, 데이터 저장 장치(10)는 솔리드 스테이트 드라이브(solid state drive, SSD), MMC, eMMC, RS-MMC, micro-MMC 형태의 멀티미디어 카드(multimedia card), SD, mini-SD, micro-SD 형태의 시큐어 디지털(secure digital) 카드, USB(universal storage bus) 저장 장치, UFS(universal flash storage) 장치, PCMCIA(personal computer memory card international association) 카드 형태의 저장 장치, PCI(peripheral component interconnection) 카드 형태의 저장 장치, PCI-E(PCI-express) 카드 형태의 저장 장치, CF(compact flash) 카드, 스마트 미디어(smart media) 카드, 메모리 스틱(memory stick) 등과 같은 다양한 종류의 저장 장치들 중 어느 하나로 구성될 수 있다.
데이터 저장 장치(10)는 다양한 종류의 패키지(package) 형태들 중 어느 하나로 제조될 수 있다. 예를 들어, 데이터 저장 장치(10)는 POP(package on package), SIP(system in package), SOC(system on chip), MCP(multi chip package), COB(chip on board), WFP(wafer-level fabricated package), WSP(wafer-level stack package) 등과 같은 다양한 종류의 패키지 형태들 중 어느 하나로 제조될 수 있다.
도 1에서 도시하는 바와 같이, 데이터 저장 장치(10)는 불휘발성 메모리(100), 컨트롤러(200) 및 휘발성 메모리(300)를 포함할 수 있다.
불휘발성 메모리(100)는 데이터 저장 장치(10)의 저장 매체로서 동작할 수 있다. 불휘발성 메모리(100)는 메모리 셀에 따라서 낸드(NAND) 플래시 메모리 장치, 노어(NOR) 플래시 메모리 장치, 강유전체 커패시터를 이용한 강유전체 램(ferroelectric random access memory, FRAM), 티엠알(tunneling magneto-resistive, TMR) 막을 이용한 마그네틱 램(magnetic random access memory, MRAM), 칼코겐 화합물(chalcogenide alloys)을 이용한 상 변화 램(phase change random access memory, PRAM), 전이 금속 화합물(transition metal oxide)을 이용한 저항성 램(resistive random access memory, ReRAM) 등과 같은 다양한 형태의 불휘발성 메모리들 중 어느 하나로 구성될 수 있다.
도 2는 도 1의 불휘발성 메모리(100)의 구성을 예시적으로 나타낸 도면이고, 도 3은 도 2의 메모리 셀 어레이(110)의 구성을 예시적으로 나타낸 도면이다.
도 2를 참조하면, 불휘발성 메모리(100)는 메모리 셀 어레이(memory cell array)(110), 로우 디코더(row decoder)(120), 기입/독출 회로(130), 컬럼 디코더(column decoder)(140), 페이지 버퍼(page buffer)(150), 전압 발생기(voltage generator)(160), 제어 로직(control logic)(170), 및 입출력 회로(I/O circuit)(180)를 포함할 수 있다.
메모리 셀 어레이(110)는 복수의 비트라인(BL)들 및 복수의 워드라인(WL)들이 교차하는 영역들에 각각 배치되는 복수의 메모리 셀들(도시되지 않음)을 포함할 수 있다. 도 3을 참조하면, 메모리 셀 어레이(110)는 복수의 메모리 블록들(BLK1~BLKi)을 포함할 수 있고, 복수의 메모리 블록들(BLK1~BLKi)은 각각 복수의 페이지들(PG1~PGj)을 포함할 수 있다.
메모리 셀 어레이(110)의 메모리 셀들은 각각 1비트의 데이터를 저장하는 싱글 레벨 셀(single, level cell, SLC), 2비트의 데이터를 저장하는 멀티 레벨 셀(multi level cell, MLC), 3비트의 데이터를 저장하는 트리플 레벨 셀(triple level cell, TLC) 또는 4비트의 데이터를 저장하는 쿼드러플 레벨 셀(quadruple level cell, QLC)일 수 있다. 메모리 셀 어레이(110)는 싱글 레벨 셀, 멀티 레벨 셀, 트리플 레벨 셀, 및 쿼드러플 레벨 셀 중 적어도 하나 이상을 포함할 수 있다. 메모리 셀 어레이(110)는 2차원의 수평 구조로 배치된 메모리 셀들을 포함할 수도 있고, 또는 3차원의 수직 구조로 배치된 메모리 셀들을 포함할 수도 있다.
로우 디코더(120)는 워드라인(WL)들을 통해 메모리 셀 어레이(110)와 연결될 수 있다. 로우 디코더(120)는 제어 로직(170)의 제어에 따라 동작할 수 있다. 로우 디코더(120)는 제어 로직(170)으로부터 제공되는 로우 어드레스(X_ADDR)를 디코딩하고, 디코딩 결과에 근거하여 워드라인(WL)들 중 적어도 하나의 워드라인(WL)을 선택하여 구동 시킬 수 있다. 로우 디코더(120)는 전압 발생기(160)로부터 제공되는 동작 전압(Vop)을 선택된 워드라인(WL)에 제공할 수 있다.
기입/독출 회로(130)는 비트 라인(BL)들을 통해서 메모리 셀 어레이(110)와 연결될 수 있다. 기입/독출 회로(130)는 비트 라인들(BL) 각각에 대응하는 기입/독출 회로들(도시되지 않음)을 포함할 수 있다. 기입/독출 회로(130)는 제어 로직(170)의 제어에 따라 동작할 수 있다. 기입/독출 회로(130)는 메모리 셀들에 데이터를 기입하기 위한 기입 드라이버(WD)와, 메모리 셀 들로부터 독출된 데이터를 증폭하는 센스 앰프(SA)를 포함할 수 있다. 기입/독출 회로(130)는 메모리 셀 어레이(110)의 메모리 셀들 중 로우 디코더(120) 및 컬럼 디코더(140)에 의해 선택되는 메모리 셀들에 전류 펄스 또는 전압 펄스를 제공함으로써 선택된 메모리 셀들에 대한 기입 및 독출 동작을 수행할 수 있다.
컬럼 디코더(140)는 제어 로직(170)의 제어에 따라 동작할 수 있다. 컬럼 디코더(140)는 제어 로직(170)으로부터 제공되는 컬럼 어드레스(Y_ADDR)를 디코딩할 수 있다. 컬럼 디코더(140)는 디코딩 결과에 근거하여 비트 라인(BL)들 각각에 대응하는 기입/독출 회로(130)의 기입/독출 회로들과 페이지 버퍼(150)를 연결할 수 있다.
페이지 버퍼(150)는 컨트롤러(200)의 메모리 인터페이스(240)로부터 제공되고 메모리 셀 어레이(110)에 기입될 데이터 또는 메모리 셀 어레이(110)로부터 독출되고 컨트롤러(200)의 메모리 인터페이스(240)로 제공될 데이터를 임시 저장하도록 구성될 수 있다. 페이지 버퍼(150)는 제어 로직(170)의 제어에 따라 동작할 수 있다.
전압 발생기(160)는 제어 로직(170)으로부터 제공되는 전압 제어 신호(CTRL_vol)에 근거하여 메모리 셀 어레이(110)에 대한 기입, 독출 및 소거 동작을 수행하기 위한 다양한 전압들을 생성할 수 있다. 전압 발생기(160)는 복수의 워드 라인들(WL) 및 비트 라인들(BL)을 구동하기 위한 구동 전압들(Vop)을 생성할 수 있다. 또한, 전압 생성부(140)는 메모리 셀(MC)에 저장된 데이터를 독출하기 위하여 적어도 하나 이상의 기준 전압들을 생성할 수 있다.
제어 로직(170)은 컨트롤러(200)로부터 수신된 커맨드(CMD_op), 어드레스(ADDR) 및 제어 신호(CTRL)에 근거하여 메모리 셀 어레이(110)에 데이터(DATA)를 기입하거나, 또는 메모리 셀 어레이(110)로부터 데이터(DATA)를 독출하기 위한 각종 제어 신호를 출력할 수 있다. 제어 로직(170)에서 출력되는 각종 제어 신호는 로우 디코더(120), 기입/독출 회로(130), 컬럼 디코더(140), 페이지 버퍼(150) 및 전압 발생기(160)에 제공될 수 있다. 이에 따라, 제어 로직(170)은 불휘발성 메모리(100)에서 수행되는 각종 동작들을 전반적으로 제어할 수 있다.
구체적으로, 제어 로직(170)은 커맨드(CMD) 및 제어 신호(CTRL)에 근거하여 동작 제어 신호(CTRL_op)를 생성할 수 있고, 생성된 동작 제어 신호(CTRL_op)를 기입/독출 회로(130)에 제공할 수 있다. 제어 로직(170)은 어드레스(ADDR)에 포함된 로우 어드레스(X_ADDR) 및 컬럼 어드레스(Y_ADDR)를 각각 로우 디코더(120) 및 컬럼 디코더(140)에 제공할 수 있다.
입출력 회로(180)는 컨트롤러(200)로부터 제공되는 커맨드(CMD), 어드레스(ADDR), 및 데이터(DATA)를 수신하거나 또는 메모리 셀 어레이(110)로부터 독출된 데이터(DATA)를 컨트롤러(200)로 제공하도록 구성될 수 있다. 입출력 회로(180)는 컨트롤러(200)로부터 수신된 커맨드(CMD) 및 어드레스(ADDR)는 제어 로직(170)으로 출력하고, 데이터(DATA)는 페이지 버퍼(150)로 출력할 수 있다. 입출력 회로(180)는 페이지 버퍼(150)로부터 수신된 데이터(DATA)를 컨트롤러(200)로 출력할 수 있다. 입출력 회로(180)는 제어 로직(170)의 제어에 따라 동작할 수 있다.
컨트롤러(200)는 메모리(230)에 로딩된 펌웨어 또는 소프트웨어의 구동을 통해서 데이터 저장 장치(10)의 제반 동작을 제어할 수 있다. 컨트롤러(200)는 펌웨어 또는 소프트웨어와 같은 코드 형태의 명령(instruction) 또는 알고리즘을 해독하고 구동할 수 있다. 컨트롤러(200)는 하드웨어, 또는 하드웨어와 소프트웨어가 조합된 형태로 구현될 수 있다.
컨트롤러(200)는 호스트 장치(20)로부터 전달되는 라이트 커맨드 또는 리드 커맨드에 따라 불휘발성 메모리(100) 또는 휘발성 메모리(300)로 데이터를 라이트 하거나 또는 리드하도록 제어할 수 있다. 이에 대한 상세 설명은 후술하기로 한다.
컨트롤러(200)는 호스트 인터페이스(210), 프로세서(220), 메모리(230) 및 메모리 인터페이스(240)를 포함할 수 있다.
호스트 인터페이스(210)는 호스트 장치의 프로토콜에 대응하여 호스트 장치와 데이터 저장 장치(10) 사이를 인터페이싱할 수 있다. 예를 들어, 호스트 인터페이스(210)는 USB(universal serial bus), UFS(universal flash storage), MMC(multimedia card), PATA(parallel advanced technology attachment), SATA(serial advanced technology attachment), SCSI(small computer system interface), SAS(serial attached SCSI), PCI(peripheral component interconnection), PCI-e(PCI express) 프로토콜 중 어느 하나를 통해 호스트 장치와 통신할 수 있다.
프로세서(220)는 마이크로 컨트롤 유닛(micro control unit)(MCU), 중앙 처리 장치(central processing unit)(CPU)로 구성될 수 있다. 프로세서(220)는 호스트 장치로부터 전송된 요청을 처리할 수 있다. 호스트 장치로부터 전송된 요청을 처리하기 위해서, 프로세서(220)는 메모리(230)에 로딩된 코드 형태의 명령(instruction) 또는 알고리즘, 즉, 펌웨어를 구동하고, 호스트 인터페이스(210), 메모리(230) 및 메모리 인터페이스(240) 등과 같은 내부 기능 블록들 및 불휘발성 메모리(100)를 제어할 수 있다.
프로세서(220)는 호스트 장치로부터 전송된 요청들에 근거하여 불휘발성 메모리(100)의 동작을 제어할 제어 신호들을 생성하고, 생성된 제어 신호들을 메모리 인터페이스(240)를 통해 불휘발성 메모리(100)로 제공할 수 있다.
메모리(230)는 동적 랜덤 액세스 메모리(DRAM) 또는 정적 랜덤 액세스 메모리(SRAM)와 같은 랜덤 액세스 메모리로 구성될 수 있다. 메모리(230)는 프로세서(220)에 의해서 구동되는 펌웨어를 저장할 수 있다. 또한, 메모리(230)는 펌웨어의 구동에 필요한 데이터, 예를 들면, 메타 데이터를 저장할 수 있다. 즉, 메모리(230)는 프로세서(220)의 동작 메모리(working memory)로서 동작할 수 있다.
메모리(230)는 호스트 장치로부터 불휘발성 메모리(100)로 전송될 기입 데이터 또는 불휘발성 메모리(100)로부터 호스트 장치로 전송될 독출 데이터를 임시 저장하기 위한 데이터 버퍼(data buffer, DB)(도시되지 않음)를 포함하도록 구성될 수 있다. 즉, 메모리(230)는 버퍼 메모리(buffer memory)로서 동작할 수 있다.
메모리 인터페이스(240)는 프로세서(220)의 제어에 따라 불휘발성 메모리(100)를 제어할 수 있다. 메모리 인터페이스(240)는 메모리 컨트롤러로도 불릴 수 있다. 메모리 인터페이스(240)는 제어 신호들을 불휘발성 메모리(100)로 제공할 수 있다. 제어 신호들은 불휘발성 메모리(100)를 제어하기 위한 커맨드(CMD), 어드레스(ADDR), 동작 제어 신호(CTRL) 등을 포함할 수 있다. 메모리 인터페이스(240)는 데이터(DATA)를 불휘발성 메모리(100)로 제공하거나, 불휘발성 메모리(100)로부터 데이터(DATA)를 제공받을 수 있다.
도 5에서 도시하는 바와 같이, 휘발성 메모리(300)는 존 매핑 테이블과 시스템 정보를 저장하는 영역(300a) 및 랜덤 라이트가 가능한 랜덤 존(Random Zone)(300b)을 포함할 수 있으며, 이에 대한 상세 설명은 후술하기로 한다.
도 4는 본 발명의 실시 예에 따른 데이터 처리 시스템의 구성을 나타낸 도면이다.
이하에서는, 본 발명의 실시 예에 따른 휘발성 메모리의 구성을 나타낸 도 5, 본 발명의 실시 예에 따른 존 매핑 테이블의 일 예를 나타낸 도 6, 본 발명의 실시 예에 따른 백업 과정을 설명하기 위한 예시도인 도 7, 본 발명의 실시 예에 따른 복구 과정을 설명하기 위한 예시도인 도 8을 참조하여 설명하기로 한다.
도 4를 참조하면, 데이터 처리 시스템은 데이터 저장 장치(10) 및 호스트 장치(20)를 포함할 수 있다.
데이터 저장 장치(10)는 불휘발성 메모리(100), 컨트롤러(200) 및 휘발성 메모리(300)를 포함할 수 있다.
불휘발성 메모리(100)는 낸드 플래시(NAND Flash) 영역으로서, 동일한 크기를 가지는 존(Zone)들의 집합(Zone 0 ~ Zone N)으로 구성될 수 있다. 이때, 존들은 복수의 물리적인 블록들의 집합으로 구성될 수 있다.
도 4를 참조하면, 불휘발성 메모리(100)는 백업 존(Backup Zone)(100a) 및 시퀀셜 라이트(Sequential Write)가 가능한 복수의 시퀀셜 존(Sequential Zone)(100b)을 포함할 수 있다.
백업 존(100a)은 휘발성 메모리(300) 영역 중 시스템 영역 외 여유 공간인 랜덤 존(Random Zone)(300b)의 비 휘발 특성을 제공하기 위한 백업(Backup) 공간으로서, SLC 방식으로 사용할 수 있다. 백업 존(100a)은 랜덤 존(300b)의 크기에 2배 또는 3배 사이즈일 수 있으며, 이에 한정되지 않는다.
시퀀셜 존(Sequential Zone)(100b)은 사용자 영역으로서, TLC 또는 QLC 방식으로 사용될 수 있다. 이 때, 시퀀셜 존(100b)은 시퀀셜 라이트(Sequential Write) 방식으로 라이트 동작을 수행할 수 있다.
도 5를 참조하면, 휘발성 메모리(300)는 존들의 물리주소를 관리하는 존 매핑 테이블과 시스템 정보를 저장하는 영역(300a) 및 랜덤 라이트(Random Write)가 가능한 랜덤 존(Random Zone)(300b)을 포함할 수 있다. 이때, 휘발성 메모리(300)는 DRAM으로 구현될 수 있으며, 이에 한정되지 않는다.
본 발명의 실시 예에 따른 존은 페이지(Page) 또는 블록(Block)에 비해 상대적으로 큰 크기를 가지며, 하나의 존에 대해서 시작 물리주소(Start PBA)와 전체 크기(Total Length) 및 최종 라이트 위치만을 매칭하여 저장하기 때문에, 기존 대비 저장되는 매핑 데이터의 양이 줄어 휘발성 메모리(300) 영역에 여유 공간이 생길 수 있다.
구체적으로, 도 6과 같이, 휘발성 메모리(300)에 저장되는 존 매핑 테이블은 논리주소 그룹, 존 인덱스, 시작 물리주소(PBA 0), 전체크기 및 최종 라이트 위치를 포함할 수 있으며, 이들이 서로 매칭되는 형태로 저장될 수 있다. 이때, 논리주소 그룹은 복수의 논리주소를 임의의 개수로 그룹화한 것을 의미하고, 존 인덱스는 존을 식별하기 위한 식별정보를 의미하며, 존 매핑 테이블의 최종 라이트 위치는 현재를 기준으로 마지막으로 라이트 된 위치를 의미하고, 전체크기는 물리주소의 전체 길이를 의미하는 것으로 정의하기로 한다.
예를 들어, 논리주소 그룹 0(LBAG 0)은 LBA 0 내지 LBA 99를 포함할 수 있으며, 다른 논리주소 그룹 역시 100개씩의 논리주소를 포함할 수 있다. 이러한 논리주소 그룹은 각각 하나의 존과 매칭될 수 있다. 즉, 종래에는 논리주소와 물리주소가 각각 일대일로 매칭되기 때문에, 매핑 테이블에 포함되는 데이터의 양이 상대적으로 방대하였다. 본 발명의 실시 예에서는 복수의 논리주소가 하나의 존에 매칭되어 관리되기 때문에, 매핑 테이블의 데이터 양이 줄어들 수 있는 것이다.
상술한 이유로 인해, 존 매핑 테이블은 기존과 같이 4KB 단위의 매핑 방식을 사용하지 않고 존 단위로 관리할 수 있기 때문에 매핑 데이터의 크기가 상대적으로 줄어 들어 휘발성 메모리(300)의 여유 공간을 확보할 수 있는 것이다. 이러한, 존 매핑 테이블 구조 변경에 따라 존 매핑 테이블의 크기가 축소되어 확보된 휘발성 메모리(300) 영역은 랜덤 라이트(Random Write)가 가능한 랜덤 존(300b)으로 사용될 수 있다.
상술한 불휘발성 메모리(100)와 휘발성 메모리(300)는 각각 복수의 존(Zone 0 ~ Zone N+1)으로 구성될 수 있다. 이로 인해, 호스트 장치(20)는 휘발성 메모리(300) 및 불휘발성 메모리(100) 내 복수의 존 각각에 대해 논리적 영역으로 인식할 수 있다. 즉, 호스트 장치(20)는 데이터 저장 장치(10)를 복수의 존을 보유하는 스토리지 장치로 인식할 수 있는 것이다. 예를 들어, 호스트 장치(20)는 N+1개의 존(도 4 참조)을 인식할 수 있는 것이다.
컨트롤러(200)는 호스트 장치(20)로부터 라이트 커맨드 또는 리드 커맨드 시 전달되는 논리주소를 수신하면, 논리주소가 랜덤 존(300b) 또는 시퀀셜 존(100b)에 속하는지 여부를 파악한 후, 파악된 존의 라이트 커맨드 또는 리드 커맨드에 대응되는 동작을 수행하도록 제어할 수 있다. 이때, 컨트롤러(200)는 호스트 장치(20)로부터 라이트 커맨드 또는 리드 커맨드 시 데이터 크기도 수신할 수 있다. 상기 논리주소는 존의 시작 논리주소를 의미할 수 있고, 상기 논리주소가 랜덤 존 또는 시퀀셜 존에 속한다는 것은 상기 논리주소에 대응되는 물리주소가 랜덤 존 또는 시퀀셜 존에 속한다는 의미일 수 있다.
즉, 컨트롤러(200)는 논리주소가 시퀀셜 존에 속할 경우, 논리주소에 대응되는 물리주소를 시작 주소로 상기 라이트 커맨드 또는 상기 리드 커맨드에 대응되는 동작을 수행하도록 제어할 수 있다.또한, 컨트롤러(200)는 랜덤 존(300b)에 저장된 데이터를 기 설정된 기준에 따라 백업 존(100a)에 백업하고 전원이 오프(Off)된 후 온(On) 상태로 전환하면, 상기 백업 존(100a)에 저장된 데이터를 상기 랜덤 존(300b)으로 복구할 수 있다.
컨트롤러(200)는 존 매핑 테이블을 기초로 존의 시작 논리주소에 매칭되는 존 인덱스를 확인하고, 존 인덱스가 랜덤 존(300b)인지 또는 시퀀셜 존(100b)인지 여부를 파악할 수 있다.
예를 들어, 존의 시작 논리주소가 LBA 5인 경우, 컨트롤러(200)는 존 매핑 테이블을 기초로 LBA 5가 논리주소 그룹 0(도 6의 LBAG 0)에 속한 것을 파악하고, 논리주소 그룹 0은 존 인덱스 0와 매칭되어 있는 것을 통해 시퀀셜 존(100b)에 속하는 것을 파악하는 것이다. 여기에서, 논리주소 그룹 0은 LBA 0 ~ LBA 99를 포함하고, 존 인덱스 0과 매칭되는 것을 예로 들어 설명할 수 있다. 이와 같이, 논리주소 그룹별로 매칭되는 LBA와 존 인덱스 등은 사전에 설정될 수 있다.
상술한 랜덤 존(300b)은 휘발성 메모리이고, 시퀀셜 존(100b)은 불휘발성 메모리이기 때문에, 컨트롤러(200)는 라이트 커맨드 또는 리드 커맨드 시 물리주소를 파악하는 방식을 서로 다르게 적용하는 것이다.
컨트롤러(200)는 호스트 장치(20)로부터 라이트 커맨드 시 수신한 논리주소가 시퀀셜 존(100b)에 속하는 경우, 존 매핑 테이블을 기초로 존의 시작 논리주소에 매칭된 존 인덱스를 파악하고, 파악된 존 인덱스의 최종 라이트 위치 다음부터 라이트 커맨드 시 수신한 데이터 크기만큼 데이터를 라이트 한 후, 존 매핑 테이블에 최종 라이트 위치를 업데이트할 수 있다.
예를 들어, 존의 시작 논리주소가 LBA 5인 경우, 컨트롤러(200)는 존 매핑 테이블을 기초로 LBA 5에 매칭되는 논리주소 그룹 0 및 존 인덱스 0을 파악할 수 있다. 컨트롤러(200)는 존 인덱스 0의 최종 라이트 물리주소가 10인 경우, 11부터 라이트 커맨드 시 전송된 데이터의 크기(예를 들어, 4)만큼 데이터를 라이트를 수행할 수 있다. 또한, 컨트롤러(200)는 최종 라이트 위치로 물리주소 14를 최종 라이트 위치로 존 매핑 테이블에 업데이트 할 수 있다.
컨트롤러(200)는 호스트 장치(20)로부터 라이트 커맨드 수신 시 수신한 논리주소가 랜덤 존(300b)에 속하는 경우, 랜덤 존(300b)의 시작 물리주소를 기준으로 호스트 장치(20)로부터 전달된 데이터 크기만큼 데이터의 라이트를 수행할 수 있다.
예를 들어, 존의 시작 논리주소가 902인 경우, 컨트롤러(200)는 존 매핑 테이블을 기초로 LBA 902가 속한 논리주소 그룹 10 및 사전에 랜덤 존(300b)으로 설정된 존 인덱스 10을 파악할 수 있다. 휘발성 메모리(300)의 존 매핑 테이블과 시스템 정보를 저장하는 영역(300a)의 물리주소가 0 ~ 599이고, 랜덤 존(Random Zone)(300b)의 물리주소가 600 ~ 999인 경우, 컨트롤러(200)는 랜덤 존(300b)의 시작 물리주소인 600으로부터 데이터 크기(예를 들어, 4)만큼의 데이터를 라이트 하는 것이다. 여기에서, 랜덤 존(300b)은 휘발성 메모리이기 때문에, 컨트롤러(200)는 랜덤 존(300b)의 시작 물리주소부터 데이터 라이트를 수행할 수 있다.
컨트롤러(200)는 호스트 장치(20)로부터 리드 커맨드 수신 시 수신한 논리주소가 시퀀셜 존(100b)에 속하는 경우, 존 매핑 테이블을 기초로 논리주소에 매칭된 존 인덱스를 파악하고, 파악된 존 인덱스의 해당 존에서 논리주소에 대응되는 물리주소를 시작 주소로 호스트 장치(20)로부터 전달된 데이터 크기만큼의 데이터를 리드할 수 있다.
컨트롤러(200)는 호스트 장치(20)로부터 리드 커맨드 수신 시, 논리주소가 랜덤 존(300b)에 속하는 경우, 랜덤 존(300b)의 시작 물리주소에 호스트 장치(20)로부터 전달된 논리주소를 합산하여 최종 물리주소를 파악하고, 최종 물리주소로부터 호스트 장치(20)로부터 전달된 데이터 크기만큼 데이터를 리드할 수 있다.
도 7을 참고하면, 랜덤 존(300b)은 복수의 슬라이스(Slice) 영역(Backup slice 0 ~ n)을 포함하고, 복수의 슬라이스 영역 각각은 순차적으로 랜덤 인덱스(0 ~ n)가 부여될 수 있다. 이때, 랜덤 인덱스는 랜덤 존(300b) 내 복수의 슬라이스 영역 각각에 부여된 인덱스를 의미하는 것으로 정의하기로 한다. 상기 슬라이스 영역은 한 번에 라이트가 가능한 데이터 크기에 대응되는 크기일 수 있으며, 이에 한정되지 않는다.
또한, 랜덤 인덱스 각각은 랜덤 존(300b)에 저장된 데이터를 백업 존(100a)으로 백업하였는지 여부를 나타내는 플러쉬 플래그(Flush Flag)(Flush 1 또는 0) 및 랜덤 존(300b)에 저장된 데이터가 신규 데이터로 업데이트되었는지 여부를 나타내는 업데이트 플래그(Update Flag)(Update 1 또는 0)와 매칭될 수 있다.
또한, 백업 존(100a)은 랜덤 존(300b)에 라이트 되는 데이터를 일대 일로 백업하는 제1 영역(Index 0, Index 1) 및 파워 오프 시 랜덤 존(300b)에 업데이트된 최신 데이터를 백업하는 제2 영역(Index 2)을 포함할 수 있다. 상기 제1 영역 및 제2 영역은 각각 가상의 백업 인덱스와 매칭될 수 있다. 이때, 백업 인덱스는 백업 존 각각에 부여된 인덱스를 의미하는 것으로 정의하기로 한다. 예를 들어, 제1 영역은 Index 0, Index 1, 제2 영역은 Index 2와 같은 가상의 존 인덱스가 부여될 수 있다.
한편, 도 7에서 도시하는 바와 같이, 랜덤 존(300b)과 동일 또는 유사한 크기의 영역을 하나로 간주할 때, 제1 영역은 Index 0, Index 1처럼 둘 이상의 영역을 포함하도록 구성될 수 있다.
컨트롤러(200)는 Index 1 및 Index 2 중 최신 데이터를 저장하는 백업 인덱스를 시스템 정보로 별도 관리할 수 있다. 이러한 최신 백업 인덱스는 시스템 정보로 휘발성 메모리(300)에 저장될 수 있다.
일 예로, 컨트롤러(200)는 랜덤 존(300b)에 라이트된 데이터 양이 기준치 이상인 경우, 랜덤 존(300b)에 저장된 데이터를 백업 존(100a)에 백업하고, 백업한 랜덤 존에 대해 플러쉬 플래그의 값을 1(One)로 변경할 수 있다.
다른 예로, 컨트롤러(200)는 호스트 장치(20)로부터 전달되는 라이트 커맨드의 횟수가 기준치 이상인 경우, 복수의 슬라이스 영역에 저장된 데이터를 랜덤 인덱스의 번호에 따라 순차적으로 백업 존(100a)에 라이트하고, 백업한 슬라이스 영역에 대해 상기 플러쉬 플래그의 값을 1(One)로 변경할 수 있다. 이때, 플러쉬 플래그 1은 데이터를 백업 존(100a)으로 백업하였음을 나타내는 것이고, 플러쉬 플래그 0은 데이터를 백업 존(100a)으로 백업하지 않은 상태를 나타내는 것이다.
컨트롤러(200)는 백업 조건으로 라이트 커맨드의 횟수가 아닌 호스트 장치(20)의 요청에 따라 라이트 된 데이터가 슬라이스 크기에 도달하는 것을 적용할 수도 있으며, 이에 한정되지 않고, 운용자의 필요에 따라 변경 또는 추가가 가능하다 할 것이다.
컨트롤러(200)는 랜덤 존(300b) 내 모든 슬라이스 영역에 대한 데이터 백업이 완료되면, 모든 플러쉬 플래그의 값을 0(Zero)으로 리셋 할 수 있다.
컨트롤러(200)는, 복수의 슬라이스 영역에 저장된 데이터가 백업 존(100a)에 라이트 된 후, 호스트 장치(20)로부터 랜덤 존(300b)에 저장된 데이터의 업데이트가 발생하는 경우, 해당 슬라이스 영역에 대한 업데이트 플래그의 값을 1(One)로 변경할 수 있다. 이때, 업데이트 플래그 1은 신규 데이터로 업데이트되었으나, 백업 전 상태를 나타내는 것이고, 업데이트 플래그 0은 신규 데이터를 백업 존(100a)으로 백업한 상태를 나타내는 것이다.
도 7을 참조하면, 컨트롤러(200)는 랜덤 존(300b)에 저장된 데이터 중 업데이트 플래그가 1인 데이터를 제2 영역(Index 2)으로 백업할 수 있다. 컨트롤러(200)는 업데이트 데이터에 대한 백업을 완료한 후, 해당 슬라이스 영역에 대한 업데이트 플래그를 0으로 리셋 할 수 있다.
컨트롤러(200)는 전원이 오프(Off)되는 신호를 수신하면, 랜덤 존(300b)으로부터 플러쉬 플래그가 0이거나 또는 업데이트 플래그가 1인 데이터를 제2 영역(Index 2)에 라이트 할 수 있다. 컨트롤러(200)는 제2 영역(Index 2)에 데이터를 라이트 할 때, 해당 랜덤 인덱스를 함께 저장할 수 있다. 이때, 랜덤 인덱스는 첫 번째 페이지의 스페어(Spare) 영역에 함께 기입될 수 있다. 상기 함께 저장된 랜덤 인덱스는 데이터 복구 시 백업 전 랜덤 존 내 위치를 파악하는 데 활용될 수 있다.
만약, 비정상적인 종료인 경우, 데이터 저장 장치(10)는 내부 Cap 또는 외부 전원에 의해서 백업 동작이 수행될 수 있도록 함은 당연하다 할 것이다.
도 8을 참조하면, 컨트롤러(200)는 전원이 오프(Off)된 후 온(On) 상태로 전환하면, 제1 영역(Index 0, Index 1)의 백업 인덱스에 해당하는 물리주소를 계산하여 랜덤 존(300b)에 순차적으로 데이터를 리드할 수 있다. 구체적으로, 컨트롤러(200)는 백업 인덱스에 랜덤 존의 시작 물리주소를 반영하여 데이터가 복구되어야 하는 최종 물리주소를 계산할 수 있다.
또한, 컨트롤러(200)는 제1 영역에 대한 로드가 종료하면 제2 영역(도 8의 Index 2)의 백업 존(100a)에 저장된 최신 데이터를 랜덤 존(300b)에 리드할 수 있다.
컨트롤러(200)는 제2 영역에 함께 저장된 해당 랜덤 인덱스를 기초로 최신 데이터를 리드할 랜덤 존(300b)의 위치를 파악할 수 있다.
도 9은 본 발명의 실시예에 따른 데이터 저장 장치의 동작 방법을 설명하기 위한 흐름도이다.
도 9를 참조하면, 데이터 저장 장치(10)는 호스트 장치(20)로부터 라이트 커맨드 또는 리드 커맨드 시 전달되는 논리주소를 수신할 수 있다(S101). 이때, 데이터 저장 장치(10)는 호스트 장치(20)로부터 라이트 커맨드 또는 리드 커맨드 시 데이터 크기도 수신할 수 있다.
다음, 데이터 저장 장치(10)는 논리주소가 휘발성 메모리(300) 내 랜덤 존(Random Zone)(300b) 또는 불휘발성 메모리(100) 내 시퀀셜 존(Sequential Zone)(100b)에 속하는지 여부를 파악할 수 있다(S103, S105).
상기 논리주소는 존의 시작 논리주소를 의미할 수 있고, 상기 논리주소가 랜덤 존 또는 시퀀셜 존에 속한다는 것은 상기 논리주소에 대응되는 물리주소가 랜덤 존 또는 시퀀셜 존에 속한다는 의미일 수 있다. 즉, 데이터 저장 장치(10)는 논리주소가 시퀀셜 존에 속할 경우, 논리주소에 대응되는 물리주소를 시작 주소로 상기 라이트 커맨드 또는 상기 리드 커맨드에 대응되는 동작을 수행하도록 제어할 수 있다.
상기 휘발성 메모리(300)는 존 매핑 테이블과 시스템 정보를 저장하는 영역(300a) 및 랜덤 라이트가 가능한 랜덤 존(300b)을 포함할 수 있다. 상기 불휘발성 메모리는 백업 존(Backup Zone)(100a) 및 시퀀셜 라이트가 가능한 복수의 시퀀셜 존(100b)을 포함할 수 있다.
데이터 저장 장치(10)는 단계 S103에서 파악된 랜덤 존(300b) 또는 시퀀셜 존(100b)에 따라, 라이트 커맨드 또는 리드 커맨드에 대응되는 동작을 수행할 수 있다(S107, S117). 이에 대한 상세 설명은 후술하기로 한다.
다음, 데이터 저장 장치(10)는 랜덤 존(300b)에 저장된 데이터를 기 설정된 기준에 따라 백업 존(100a)에 백업할 수 있다(S109, S111).
상기 랜덤 존(300b)은 복수의 슬라이스(Slice) 영역을 포함하고, 상기 복수의 슬라이스 영역 각각이 랜덤 인덱스와 매칭되며, 상기 랜덤 인덱스 각각은 상기 랜덤 존(300b)에 저장된 데이터를 상기 백업 존(100a)으로 백업하였는지 여부를 나타내는 플러쉬 플래그(Flush Flag) 및 상기 랜덤 존(300b)에 저장된 데이터가 신규 데이터로 업데이트되었는지 여부를 나타내는 업데이트 플래그(Update Flag)와 매칭될 수 있다.
상기 백업 존(100a)은 랜덤 존(300b)에 라이트 되는 데이터를 일대 일로 백업하는 제1 영역(도 7의 Index 0, Index 1) 및 파워 오프 시 랜덤 존(300b)에 업데이트된 최신 데이터를 백업하는 제2 영역(도 7의 Index 2)을 포함하고, 상기 제1 영역 및 상기 제2 영역은 각각 가상의 백업 인덱스와 매칭될 수 있다.
일 예로, 단계 S109 및 S111에서 데이터 저장 장치(10)는 랜덤 존(300b)에 라이트된 데이터 양이 기준치 이상인 경우, 랜덤 존(300b)에 저장된 데이터를 백업 존(100a)에 백업하고, 백업한 랜덤 존(300b)에 대해 플러쉬 플래그의 값을 1(One)로 변경할 수 있다. 다른 예로, 단계 S109 및 S111에서 데이터 저장 장치(10)는 호스트 장치(20)로부터 전달되는 라이트 커맨드의 횟수가 기준치 이상인 경우, 데이터 저장 장치(10)는 상기 복수의 슬라이스 영역에 저장된 데이터를 랜덤 인덱스의 번호에 따라 순차적으로 백업 존(100a)에 라이트 할 수 있다.
도 7을 참고하면, 데이터 저장 장치(10)는 랜덤 인덱스 0으로부터 n까지 순차적으로 슬라이스 영역에 저장된 데이터를 백업 존(100a)으로 백업할 수 있다.
이후, 데이터 저장 장치(10)는 백업한 슬라이스 영역에 대해 플러쉬 플래그의 값을 1(One)로 변경할 수 있다.
다음, 데이터 저장 장치(10)는 복수의 슬라이스 영역에 저장된 데이터가 백업 존(100a)에 라이트 된 후, 호스트 장치(20)로부터 랜덤 존(300b)에 저장된 데이터의 업데이트가 발생하는 경우, 해당 슬라이스 영역에 대한 업데이트 플래그의 값을 1(One)로 변경할 수 있다.
한편, 데이터 저장 장치(10)는 전원이 오프(Off)되는 신호를 수신하면, 랜덤 존(300b)으로부터 플러쉬 플래그가 0(Flush 0)이거나 또는 업데이트 플래그가 1(Update 1)인 데이터를 제2 영역(Index 2)에 라이트 할 수 있다.
데이터 저장 장치(10)는 제2 영역에 데이터를 라이트 할 때, 해당 랜덤 인덱스를 함께 저장할 수 있다.
다음, 데이터 저장 장치(10)는 전원이 오프(Off)된 후 온(On) 상태로 전환하면, 백업 존(100a)에 저장된 데이터를 랜덤 존(300b)으로 복구할 수 있다(S113, 115).
구체적으로, 데이터 저장 장치(10)는 전원이 오프(Off)된 후 온(On) 상태로 전환하면, 제1 영역(Index 1, Index 2)의 백업 인덱스에 해당하는 물리주소를 계산하여 랜덤 존(300b)에 순차적으로 데이터를 리드할 수 있다.
이때, 데이터 저장 장치(10)는 Index 1 및 Index 2 중 최신 데이터를 저장하는 백업 인덱스를 시스템 정보로 별도 관리할 수 있다. 이러한 최신 백업 인덱스는 시스템 정보로 휘발성 메모리(300)에 저장될 수 있다. 단계 S115에서, 데이터 저장 장치(10)는 최신 백업 인덱스를 확인한 후, 해당 백업 인덱스의 데이터를 랜덤 존(300b)으로 복구 시킬 수 있다.
다음, 데이터 저장 장치(10)는 제1 영역에 대한 로드가 종료하면 제2 영역의 백업 존(100a)에 저장된 최신 데이터를 상기 랜덤 존(300b)에 리드할 수 있다.
도 10은 도 9의 데이터 라이트 방법을 상세하게 설명하기 위한 흐름도이다.
데이터 저장 장치(10)는 호스트 장치(20)로부터 라이트 커맨드 시 전달되는 논리주소를 수신할 수 있다(S201). 이때, 컨트롤러(200)는 호스트 장치(20)로부터 라이트 커맨드 또는 리드 커맨드 시 데이터 크기도 수신할 수 있다.
다음, 데이터 저장 장치(10)는 논리주소가 휘발성 메모리 내 랜덤 존(Random Zone)(300b) 또는 불휘발성 메모리 내 시퀀셜 존(Sequential Zone)(100b)에 속하는지 여부를 파악할 수 있다(S203, S205).
단계 S205의 결과, 논리주소가 랜덤 존(300b)에 속하는 경우, 데이터 저장 장치(10)는 랜덤 존(300b)의 시작 물리주소를 기준으로 호스트 장치(20)로부터 전달된 데이터 크기만큼 데이터의 라이트를 수행할 수 있다(S207, S209).
만약, 단계 S205의 확인 결과, 논리주소가 상기 시퀀셜 존(100b)에 속하는 경우, 데이터 저장 장치(10)는 존 매핑 테이블을 기초로 호스트 장치(20)로부터 라이트 커맨드 시 전달되는 논리주소에 매칭된 존 인덱스를 파악할 수 있다.
다음, 데이터 저장 장치(10)는 파악된 존 인덱스의 최종 라이트 위치를 확인하여 라이트를 수행할 물리주소를 파악할 수 있다(S211).
다음, 데이터 저장 장치(10)는 파악된 존 인덱스의 최종 라이트 위치 다음부터 데이터 크기만큼 데이터를 라이트 할 수 있다(S213).
다음, 데이터 저장 장치(10)는 라이트 수행 후, 존 매핑 테이블에 최종 라이트 위치를 업데이트할 수 있다(S215).
도 11은 도 9의 데이터 리드 방법을 상세하게 설명하기 위한 흐름도이다.
데이터 저장 장치(10)는 호스트 장치(20)로부터 리드 커맨드 시 전달되는 논리주소를 수신할 수 있다(S301).다음, 데이터 저장 장치(10)는 논리주소가 휘발성 메모리 내 랜덤 존(Random Zone)(300b) 또는 불휘발성 메모리 내 시퀀셜 존(Sequential Zone)(100b)에 속하는지 여부를 파악할 수 있다(S303, S305).
단계 S305의 확인 결과, 논리주소가 랜덤 존(300b)에 속하는 경우, 데이터 저장 장치(20)는 랜덤 존(300b)의 시작 물리주소에 호스트 장치(20)로부터 전달된 논리주소를 합산하여 최종 물리주소를 파악할 수 있다(S307).
도 5와 같이, 휘발성 메모리(300)는 존 매핑 테이블과 시스템 정보를 저장하는 영역(300a)이 메모리 공간의 일부를 차지하고 나머지 여유 공간을 랜덤 존(300b)으로 사용하기 때문에, 랜덤 존(300b)의 시작 물리주소는 0이 아닌 존 매핑 테이블과 시스템 정보를 저장하는 영역(300a)의 다음 순번의 물리주소일 수 있다. 이에, 데이터 저장 장치(20)는 호스트 장치(20)로부터 전달된 존의 시작 논리주소를 랜덤 존(300b)의 시작 물리주소에 합산하여 실제로 데이터를 리드해야 할 최종 물리주소를 파악하는 것이다.
다음, 데이터 저장 장치(20)는 최종 물리주소로부터 리드 커맨드 시 전달된 데이터 크기만큼 데이터를 리드할 수 있다(S309).
단계 S305의 확인 결과, 논리주소가 시퀀셜 존(100b)에 속하는 경우, 데이터 저장 장치(10)는 존 매핑 테이블을 기초로 논리주소에 매칭된 존 인덱스를 파악할 수 있다. 데이터 저장 장치(10)는 파악된 존 인덱스에서 논리주소에 대응되는 시작 물리주소를 파악할 수 있다(S311).
다음, 데이터 저장 장치(20)는 단계 S311에서 파악된 시작 물리주소로부터 호스트 장치(20)로부터 요청된 데이터 크기만큼의 데이터를 리드할 수 있다(S313).
도 12는 본 발명의 다른 실시예에 따른 데이터 저장 장치의 동작 방법을 설명하기 위한 흐름도로서, 데이터 저장 장치(10)가 랜덤 존(300b)에 저장된 데이터를 백업 존(100a)으로 이동하는 경우를 예로 들어 설명하기로 한다.
데이터 저장 장치(10)는 백업 조건이 만족되면, 랜덤 존(300b)에 저장된 데이터를 백업 존(100a)으로 백업할 수 있다.
일 예로, 데이터 저장 장치(10)는 랜덤 존(300b)에 라이트된 데이터 양이 기준치 이상인지 여부를 확인할 수 있다(S401).
상기 랜덤 존(300b)은 복수의 슬라이스(Slice) 영역을 포함하고, 상기 복수의 슬라이스 영역 각각이 랜덤 인덱스와 매칭되며, 상기 랜덤 인덱스 각각은 상기 랜덤 존(300b)에 저장된 데이터를 상기 백업 존(100a)으로 백업하였는지 여부를 나타내는 플러쉬 플래그(Flush Flag) 및 상기 랜덤 존(300b)에 저장된 데이터가 신규 데이터로 업데이트되었는지 여부를 나타내는 업데이트 플래그(Update Flag)와 매칭될 수 있다.
상기 백업 존(100a)은 랜덤 존(300b)에 라이트 되는 데이터를 일대 일로 백업하는 제1 영역(도 7의 Index 0, Index 1) 및 파워 오프 시 랜덤 존(300b)에 업데이트된 최신 데이터를 백업하는 제2 영역(도 7의 Index 2)을 포함하고, 상기 제1 영역 및 상기 제2 영역은 각각 가상의 백업 인덱스와 매칭될 수 있다.
확인 결과 랜덤 존(300b)에 라이트된 데이터 양이 기준치 이상인 경우, 데이터 저장 장치(10)는 랜덤 존 내 복수의 슬라이스 영역에 저장된 데이터를 랜덤 인덱스의 번호에 따라 순차적으로 백업 존(100a)에 라이트 할 수 있다(S403).
다음, 데이터 저장 장치(10)는 백업한 랜덤 존(300b)에 대해 플러쉬 플래그의 값을 1(One)로 변경할 수 있다(S405).
한편, 단계 S401의 확인 결과 랜덤 존(300b)에 라이트된 데이터 양이 기준치 이상이 아닌 경우, 데이터 저장 장치(10)는 호스트 장치(20)로부터 전달되는 라이트 커맨드의 횟수가 기준치 이상인지 여부를 확인할 수 있다(S407).
확인 결과 라이트 커맨드의 횟수가 기준치 이상인 경우, 데이터 저장 장치(10)는 복수의 슬라이스 영역에 저장된 데이터를 랜덤 인덱스의 번호에 따라 순차적으로 백업 존(100a)에 라이트 할 수 있다(S409).
이후, 데이터 저장 장치(10)는 백업한 슬라이스 영역에 대해 플러쉬 플래그의 값을 1(One)로 변경할 수 있다(S411).
다음, 데이터 저장 장치(10)는 복수의 슬라이스 영역에 저장된 데이터가 백업 존(100a)에 라이트 된 후, 호스트 장치(20)로부터 랜덤 존(300b)에 저장된 데이터의 업데이트가 발생하는 경우, 해당 슬라이스 영역에 대한 업데이트 플래그의 값을 1(One)로 변경할 수 있다(S413).
한편, 데이터 저장 장치(10)는 전원이 오프(Off)되는 신호를 수신하면(S415), 랜덤 존(300b)으로부터 플러쉬 플래그가 0(Flush 0)이거나 또는 업데이트 플래그가 1(Update 1)인 데이터를 제2 영역(Index 2)에 라이트 할 수 있다(S417). 이때, 데이터 저장 장치(10)는 제2 영역에 데이터를 라이트 할 때, 해당 랜덤 인덱스를 함께 저장할 수 있다.
도시하지 않았지만, 데이터 저장 장치(10)는 전원이 오프(Off)된 후 온(On) 상태로 전환하면, 백업 존(100a)에 저장된 데이터를 랜덤 존(300b)으로 복구할 수 있다.
도 13은 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브(SSD)를 포함하는 데이터 처리 시스템을 예시적으로 나타낸 도면이다. 도 13을 참조하면, 데이터 처리 시스템(2000)은 호스트 장치(2100)와 솔리드 스테이트 드라이브(⑧solid state drive)(2200)(이하, SSD라 칭함)를 포함할 수 있다.
SSD(2200)는 컨트롤러(2210), 버퍼 메모리 장치(2220), 불휘발성 메모리들(2231~223n), 전원 공급기(2240), 신호 커넥터(2250) 및 전원 커넥터(2260)를 포함할 수 있다.
컨트롤러(2210)는 SSD(2200)의 제반 동작을 제어할 수 있다.
버퍼 메모리 장치(2220)는 불휘발성 메모리들(2231~223n)에 저장될 데이터를 임시 저장할 수 있다. 또한, 버퍼 메모리 장치(2220)는 불휘발성 메모리들(2231~223n)로부터 읽힌 데이터를 임시 저장할 수 있다. 버퍼 메모리 장치(2220)에 임시 저장된 데이터는 컨트롤러(2210)의 제어에 따라 호스트 장치(2100) 또는 불휘발성 메모리들(2231~223n)로 전송될 수 있다.
불휘발성 메모리들(2231~223n)은 SSD(2200)의 저장 매체로 사용될 수 있다. 불휘발성 메모리들(2231~223n) 각각은 복수의 채널들(CH1~CHn)을 통해 컨트롤러(2210)와 연결될 수 있다. 하나의 채널에는 하나 또는 그 이상의 불휘발성 메모리가 연결될 수 있다. 하나의 채널에 연결되는 불휘발성 메모리들은 동일한 신호 버스 및 데이터 버스에 연결될 수 있다.
전원 공급기(2240)는 전원 커넥터(2260)를 통해 입력된 전원(PWR)을 SSD(2200) 내부에 제공할 수 있다. 전원 공급기(2240)는 보조 전원 공급기(2241)를 포함할 수 있다. 보조 전원 공급기(2241)는 서든 파워 오프(sudden power off)가 발생되는 경우, SSD(2200)가 정상적으로 종료될 수 있도록 전원을 공급할 수 있다. 보조 전원 공급기(2241)는 전원(PWR)을 충전할 수 있는 대용량 커패시터들(capacitors)을 포함할 수 있다.
컨트롤러(2210)는 신호 커넥터(2250)를 통해서 호스트 장치(2100)와 신호(SGL)를 주고받을 수 있다. 여기에서, 신호(SGL)는 커맨드, 어드레스, 데이터 등을 포함할 수 있다. 신호 커넥터(2250)는 호스트 장치(2100)와 SSD(2200)의 인터페이스 방식에 따라 다양한 형태의 커넥터로 구성될 수 있다.
도 14는 도 13의 컨트롤러의 구성을 예시적으로 나타낸 도면이다. 도 14를 참조하면, 컨트롤러(2210)는 호스트 인터페이스 유닛(2211), 컨트롤 유닛(2212), 랜덤 액세스 메모리(2213), 에러 정정 코드(ECC) 유닛(2214) 및 메모리 인터페이스 유닛(2215)을 포함할 수 있다.
호스트 인터페이스 유닛(2211)은, 호스트 장치(2100)의 프로토콜에 따라서, 호스트 장치(2100)와 SSD(2200)를 인터페이싱할 수 있다. 예를 들면, 호스트 인터페이스 유닛(2211)은, 시큐어 디지털(secure digital), USB(universal serial bus), MMC(multi-media card), eMMC(embedded MMC), PCMCIA(personal computer memory card international association), PATA(parallel advanced technology attachment), SATA(serial advanced technology attachment), SCSI(small computer system interface), SAS(serial attached SCSI), PCI(peripheral component interconnection), PCI-E(PCI Express), UFS(universal flash storage) 프로토콜들 중 어느 하나를 통해서 호스트 장치(2100)와 통신할 수 있다. 또한, 호스트 인터페이스 유닛(2211)은 호스트 장치(2100)가 SSD(2200)를 범용 데이터 저장 장치, 예를 들면, 하드 디스크 드라이브(HDD)로 인식하도록 지원하는 디스크 에뮬레이션(disk emulation) 기능을 수행할 수 있다.
컨트롤 유닛(2212)은 호스트 장치(2100)로부터 입력된 신호(SGL)를 분석하고 처리할 수 있다. 컨트롤 유닛(2212)은 SSD(2200)를 구동하기 위한 펌웨어 또는 소프트웨어에 따라서 내부 기능 블록들의 동작을 제어할 수 있다. 랜덤 액세스 메모리(2213)는 이러한 펌웨어 또는 소프트웨어를 구동하기 위한 동작 메모리로서 사용될 수 있다.
에러 정정 코드(ECC) 유닛(2214)은 불휘발성 메모리들(2231~223n)로 전송될 데이터의 패리티 데이터를 생성할 수 있다. 생성된 패리티 데이터는 데이터와 함께 불휘발성 메모리들(2231~223n)에 저장될 수 있다. 에러 정정 코드(ECC) 유닛(2214)은 패리티 데이터에 근거하여 불휘발성 메모리들(2231~223n)로부터 독출된 데이터의 에러를 검출할 수 있다. 만약, 검출된 에러가 정정 범위 내이면, 에러 정정 코드(ECC) 유닛(2214)은 검출된 에러를 정정할 수 있다.
메모리 인터페이스 유닛(2215)은, 컨트롤 유닛(2212)의 제어에 따라서, 불휘발성 메모리들(2231~223n)에 커맨드 및 어드레스와 같은 제어 신호를 제공할 수 있다. 그리고 메모리 인터페이스 유닛(2215)은, 컨트롤 유닛(2212)의 제어에 따라서, 불휘발성 메모리들(2231~223n)과 데이터를 주고받을 수 있다. 예를 들면, 메모리 인터페이스 유닛(2215)은 버퍼 메모리 장치(2220)에 저장된 데이터를 불휘발성 메모리들(2231~223n)로 제공하거나, 불휘발성 메모리들(2231~223n)로부터 읽힌 데이터를 버퍼 메모리 장치(2220)로 제공할 수 있다.
도 15는 본 발명의 실시 예에 따른 데이터 저장 장치를 포함하는 데이터 처리 시스템을 예시적으로 나타낸 도면이다. 도 15를 참조하면, 데이터 처리 시스템(3000)은 호스트 장치(3100)와 데이터 저장 장치(3200)를 포함할 수 있다.
호스트 장치(3100)는 인쇄 회로 기판(printed circuit board)과 같은 기판(board) 형태로 구성될 수 있다. 비록 도시되지 않았지만, 호스트 장치(3100)는 호스트 장치의 기능을 수행하기 위한 내부 기능 블록들을 포함할 수 있다.
호스트 장치(3100)는 소켓(socket), 슬롯(slot) 또는 커넥터(connector)와 같은 접속 터미널(3110)을 포함할 수 있다. 데이터 저장 장치(3200)는 접속 터미널(3110)에 마운트(mount)될 수 있다.
데이터 저장 장치(3200)는 인쇄 회로 기판과 같은 기판 형태로 구성될 수 있다. 데이터 저장 장치(3200)는 메모리 모듈 또는 메모리 카드로 불릴 수 있다. 데이터 저장 장치(3200)는 컨트롤러(3210), 버퍼 메모리 장치(3220), 불휘발성 메모리(3231~3232), PMIC(power management integrated circuit)(3240) 및 접속 터미널(3250)을 포함할 수 있다.
컨트롤러(3210)는 데이터 저장 장치(3200)의 제반 동작을 제어할 수 있다. 컨트롤러(3210)는 도 15에 도시된 컨트롤러(2210)와 동일하게 구성될 수 있다.
버퍼 메모리 장치(3220)는 불휘발성 메모리들(3231~3232)에 저장될 데이터를 임시 저장할 수 있다. 또한, 버퍼 메모리 장치(3220)는 불휘발성 메모리들(3231~3232)로부터 읽힌 데이터를 임시 저장할 수 있다. 버퍼 메모리 장치(3220)에 임시 저장된 데이터는 컨트롤러(3210)의 제어에 따라 호스트 장치(3100) 또는 불휘발성 메모리들(3231~3232)로 전송될 수 있다.
불휘발성 메모리들(3231~3232)은 데이터 저장 장치(3200)의 저장 매체로 사용될 수 있다.
PMIC(3240)는 접속 터미널(3250)을 통해 입력된 전원을 데이터 저장 장치(3200) 내부에 제공할 수 있다. PMIC(3240)는, 컨트롤러(3210)의 제어에 따라서, 데이터 저장 장치(3200)의 전원을 관리할 수 있다.
접속 터미널(3250)은 호스트 장치의 접속 터미널(3110)에 연결될 수 있다. 접속 터미널(3250)을 통해서, 호스트 장치(3100)와 데이터 저장 장치(3200) 간에 커맨드, 어드레스, 데이터 등과 같은 신호와, 전원이 전달될 수 있다. 접속 터미널(3250)은 호스트 장치(3100)와 데이터 저장 장치(3200)의 인터페이스 방식에 따라 다양한 형태로 구성될 수 있다. 접속 터미널(3250)은 데이터 저장 장치(3200)의 어느 한 변에 배치될 수 있다.
도 16은 본 발명의 실시 예에 따른 데이터 저장 장치를 포함하는 데이터 처리 시스템을 예시적으로 나타낸 도면이다. 도 16을 참조하면, 데이터 처리 시스템(4000)은 호스트 장치(4100)와 데이터 저장 장치(4200)를 포함할 수 있다.
호스트 장치(4100)는 인쇄 회로 기판(printed circuit board)과 같은 기판(board) 형태로 구성될 수 있다. 비록 도시되지 않았지만, 호스트 장치(4100)는 호스트 장치의 기능을 수행하기 위한 내부 기능 블록들을 포함할 수 있다.
데이터 저장 장치(4200)는 표면 실장형 패키지 형태로 구성될 수 있다. 데이터 저장 장치(4200)는 솔더 볼(solder ball)(4250)을 통해서 호스트 장치(4100)에 마운트될 수 있다. 데이터 저장 장치(4200)는 컨트롤러(4210), 버퍼 메모리 장치(4220) 및 불휘발성 메모리(4230)를 포함할 수 있다.
컨트롤러(4210)는 데이터 저장 장치(4200)의 제반 동작을 제어할 수 있다. 컨트롤러(4210)는 도 15에 도시된 컨트롤러(2210)와 동일하게 구성될 수 있다.
버퍼 메모리 장치(4220)는 불휘발성 메모리(4230)에 저장될 데이터를 임시 저장할 수 있다. 또한, 버퍼 메모리 장치(4220)는 불휘발성 메모리들(4230)로부터 읽힌 데이터를 임시 저장할 수 있다. 버퍼 메모리 장치(4220)에 임시 저장된 데이터는 컨트롤러(4210)의 제어에 따라 호스트 장치(4100) 또는 불휘발성 메모리(4230)로 전송될 수 있다.
불휘발성 메모리(4230)는 데이터 저장 장치(4200)의 저장 매체로 사용될 수 있다.
도 17은 본 발명의 실시 예에 따른 데이터 저장 장치를 포함하는 네트워크 시스템(5000)을 예시적으로 나타낸 도면이다. 도 17을 참조하면, 네트워크 시스템(5000)은 네트워크(5500)를 통해서 연결된 서버 시스템(5300) 및 복수의 클라이언트 시스템들(5410~5430)을 포함할 수 있다.
서버 시스템(5300)은 복수의 클라이언트 시스템들(5410~5430)의 요청에 응답하여 데이터를 서비스할 수 있다. 예를 들면, 서버 시스템(5300)은 복수의 클라이언트 시스템들(5410~5430)로부터 제공된 데이터를 저장할 수 있다. 다른 예로서, 서버 시스템(5300)은 복수의 클라이언트 시스템들(5410~5430)로 데이터를 제공할 수 있다.
서버 시스템(5300)은 호스트 장치(5100) 및 데이터 저장 장치(5200)를 포함할 수 있다. 데이터 저장 장치(5200)는 도 1의 데이터 저장 장치(10), 도 13의 데이터 저장 장치(2200), 도 15의 데이터 저장 장치(3200) 및 도 16의 데이터 저장 장치(4200)로 구성될 수 있다.
본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있으므로, 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
10: 데이터 저장 장치 20: 호스트 장치
100: 불휘발성 메모리 200: 컨트롤러
210: 호스트 인터페이스 220: 프로세서
230: 메모리 240: 메모리 인터페이스
300: 휘발성 메모리

Claims (29)

  1. 존 매핑 테이블과 시스템 정보를 저장하는 영역 및 랜덤 라이트가 가능한 랜덤 존(Random Zone)을 포함하는 휘발성 메모리;
    백업 존(Backup Zone) 및 시퀀셜 라이트가 가능한 복수의 시퀀셜 존(Sequential Zone)을 포함하는 불휘발성 메모리; 및
    호스트 장치로부터 라이트 커맨드 또는 리드 커맨드 시 전달되는 논리주소를 수신하면, 상기 논리주소가 상기 랜덤 존 또는 상기 시퀀셜 존에 속하는지 여부를 파악한 후, 파악된 존의 상기 라이트 커맨드 또는 상기 리드 커맨드에 대응되는 동작을 수행하도록 제어하는 컨트롤러를 포함하고,
    상기 컨트롤러는 상기 랜덤 존에 저장된 데이터를 기 설정된 기준에 따라 상기 백업 존에 백업하고 전원이 오프(Off)된 후 온(On) 상태로 전환하면, 상기 백업 존에 저장된 데이터를 상기 랜덤 존으로 복구하는 데이터 저장 장치.
  2. 제1항에 있어서,
    상기 컨트롤러는,
    상기 논리주소가 상기 시퀀셜 존에 속할 경우, 상기 논리주소에 대응되는 물리주소를 시작 주소로 상기 라이트 커맨드 또는 상기 리드 커맨드에 대응되는 동작을 수행하도록 제어하는 데이터 저장 장치.
  3. 제2항에 있어서,
    상기 존 매핑 테이블은,
    논리주소 그룹, 존 인덱스, 시작 물리주소, 전체크기 및 최종 라이트 위치를 포함하는 데이터 저장 장치.
  4. 제3항에 있어서,
    상기 호스트 장치로부터 라이트 커맨드 시 수신한 상기 논리주소가 상기 시퀀셜 존에 속하는 경우,
    상기 컨트롤러는,
    상기 존 매핑 테이블을 기초로 상기 논리주소에 매칭된 존 인덱스를 파악하고, 파악된 상기 존 인덱스의 상기 최종 라이트 위치 다음부터 상기 호스트 장치로부터 전달된 데이터 크기만큼 데이터를 라이트한 후, 상기 존 매핑 테이블에 최종 라이트 위치를 업데이트하는 데이터 저장 장치.
  5. 제3항에 있어서,
    상기 호스트 장치로부터 상기 라이트 커맨드 시 수신한 상기 논리주소가 상기 랜덤 존에 속하는 경우,
    상기 컨트롤러는,
    상기 랜덤 존의 시작 물리주소를 기준으로 상기 호스트 장치로부터 전달된 데이터 크기만큼 데이터의 라이트를 수행하는 데이터 저장 장치.
  6. 제3항에 있어서,
    상기 호스트 장치로부터 상기 리드 커맨드 시 수신한 상기 논리주소가 상기 시퀀셜 존에 속하는 경우,
    상기 컨트롤러는,
    상기 존 매핑 테이블을 기초로 상기 논리주소에 매칭된 존 인덱스를 파악하고, 파악된 상기 존 인덱스의 해당 존에서 상기 논리주소에 대응되는 물리주소를 시작 주소로 상기 호스트 장치로부터 전달된 데이터 크기만큼의 데이터를 리드하는 데이터 저장 장치.
  7. 제3항에 있어서,
    상기 호스트 장치로부터 상기 리드 커맨드 시 수신한 상기 논리주소가 상기 랜덤 존에 속하는 경우,
    상기 컨트롤러는,
    상기 랜덤 존의 시작 물리주소에 상기 호스트 장치로부터 전달된 상기 논리주소를 합산하여 최종 물리주소를 파악하고, 상기 최종 물리주소로부터 상기 호스트 장치로부터 전달된 데이터 크기만큼 데이터를 리드하는 데이터 저장 장치.
  8. 제1항에 있어서,
    상기 랜덤 존은 복수의 슬라이스(Slice) 영역을 포함하고, 상기 복수의 슬라이스 영역 각각이 랜덤 인덱스와 매칭되며, 상기 랜덤 인덱스 각각은 상기 랜덤 존에 저장된 데이터를 상기 백업 존으로 백업하였는지 여부를 나타내는 플러쉬 플래그(Flush Flag) 및 상기 랜덤 존에 저장된 데이터가 신규 데이터로 업데이트되었는지 여부를 나타내는 업데이트 플래그(Update Flag)와 매칭되는 데이터 저장 장치.
  9. 제8항에 있어서,
    상기 컨트롤러는,
    상기 랜덤 존에 라이트된 데이터 양이 기준치 이상인 경우, 상기 랜덤 존에 저장된 데이터를 상기 백업 존에 백업하고, 백업한 랜덤 존에 대해 상기 플러쉬 플래그의 값을 1(One)로 변경하는 데이터 저장 장치.
  10. 제8항에 있어서,
    상기 컨트롤러는,
    상기 호스트 장치로부터 전달되는 라이트 커맨드의 횟수가 기준치 이상인 경우, 상기 복수의 슬라이스 영역에 저장된 데이터를 상기 랜덤 인덱스의 번호에 따라 순차적으로 상기 백업 존에 라이트하고, 백업한 슬라이스 영역에 대해 상기 플러쉬 플래그의 값을 1(One)로 변경하는 데이터 저장 장치.
  11. 제10항에 있어서,
    상기 컨트롤러는,
    상기 랜덤 존 내 모든 슬라이스 영역에 대한 데이터 백업이 완료되면, 모든 플러쉬 플래그의 값을 0(Zero)으로 리셋하는 데이터 저장 장치.
  12. 제8항에 있어서,
    상기 컨트롤러는,
    상기 복수의 슬라이스 영역에 저장된 데이터가 상기 백업 존에 라이트 된 후, 상기 호스트 장치로부터 상기 랜덤 존에 저장된 데이터의 업데이트가 발생하는 경우, 해당 슬라이스 영역에 대한 상기 업데이트 플래그의 값을 1(One)로 변경하는 데이터 저장 장치.
  13. 제12항에 있어서,
    상기 백업 존은 상기 랜덤 존에 라이트 되는 데이터를 일대 일로 백업하는 제1 영역 및 파워 오프 시 상기 랜덤 존에 업데이트된 최신 데이터를 백업하는 제2 영역을 포함하고,
    상기 제1 영역 및 상기 제2 영역은 각각 가상의 백업 인덱스와 매칭되는 데이터 저장 장치.
  14. 제13항에 있어서,
    상기 컨트롤러는,
    상기 전원이 오프(Off)되는 신호를 수신하면, 상기 랜덤 존으로부터 상기 플러쉬 플래그가 0이거나 또는 상기 업데이트 플래그가 1인 데이터를 상기 제2 영역에 라이트하고,
    상기 제2 영역에 상기 데이터를 라이트 할 때, 해당 랜덤 인덱스를 함께 저장하는 데이터 저장 장치.
  15. 제14항에 있어서,
    상기 컨트롤러는,
    상기 전원이 오프(Off)된 후 온(On) 상태로 전환하면, 상기 제1 영역의 백업 인덱스에 해당하는 물리주소를 계산하여 상기 랜덤 존에 순차적으로 데이터를 로드하고, 상기 제1 영역에 대한 로드가 종료하면 상기 제2 영역의 백업 존에 저장된 최신 데이터를 상기 랜덤 존에 로드하는 데이터 저장 장치.
  16. 제15항에 있어서,
    상기 컨트롤러는,
    상기 제2 영역에 함께 저장된 상기 해당 랜덤 인덱스를 기초로 상기 최신 데이터를 리드할 상기 랜덤 존의 위치를 파악하는 데이터 저장 장치.
  17. 호스트 장치로부터 라이트 커맨드 또는 리드 커맨드 시 전달되는 논리주소를 수신하는 단계;
    상기 논리주소가 휘발성 메모리 내 랜덤 존(Random Zone) 또는 불휘발성 메모리 내 시퀀셜 존(Sequential Zone)에 속하는지 여부를 파악하는 단계; 및
    상기 파악된 랜덤 존 또는 시퀀셜 존에 따라, 상기 라이트 커맨드 또는 상기 리드 커맨드에 대응되는 동작을 수행하는 단계를 포함하고,
    상기 휘발성 메모리는 존 매핑 테이블과 시스템 정보를 저장하는 영역 및 랜덤 라이트가 가능한 상기 랜덤 존을 포함하고, 상기 불휘발성 메모리는 백업 존(Backup Zone) 및 시퀀셜 라이트가 가능한 복수의 상기 시퀀셜 존을 포함하는 데이터 저장 장치의 동작 방법.
  18. 제17항에 있어서,
    상기 논리주소가 상기 시퀀셜 존에 속할 경우,
    상기 라이트 커맨드 또는 상기 리드 커맨드에 대응되는 동작을 수행하는 단계에서,
    상기 논리주소에 대응되는 물리주소를 시작 주소로 상기 라이트 커맨드 또는 상기 리드 커맨드에 대응되는 동작을 수행하는 데이터 저장 장치의 동작 방법.
  19. 제18항에 있어서,
    상기 논리주소가 상기 시퀀셜 존에 속하는 경우,
    상기 라이트 커맨드에 대응되는 동작을 수행하는 단계는,
    상기 존 매핑 테이블을 기초로 상기 호스트 장치로부터 라이트 커맨드 시 전달되는 상기 논리주소에 매칭된 존 인덱스를 파악하는 단계;
    파악된 상기 존 인덱스의 상기 최종 라이트 위치 다음부터 상기 호스트 장치로부터 전달된 데이터 크기만큼 데이터를 라이트하는 단계; 및
    상기 존 매핑 테이블에 최종 라이트 위치를 업데이트하는 단계;
    를 포함하는 데이터 저장 장치의 동작 방법.
  20. 제18항에 있어서,
    상기 논리주소가 상기 랜덤 존에 속하는 경우,
    상기 라이트 커맨드에 대응되는 동작을 수행하는 단계에서,
    상기 랜덤 존의 시작 물리주소를 기준으로 상기 호스트 장치로부터 전달된 데이터 크기만큼 데이터의 라이트를 수행하는 데이터 저장 장치의 동작 방법.
  21. 제18항에 있어서,
    상기 논리주소가 상기 시퀀셜 존에 속하는 경우,
    상기 리드 커맨드에 대응되는 동작을 수행하는 단계는,
    상기 존 매핑 테이블을 기초로 상기 논리주소에 매칭된 존 인덱스를 파악하는 단계;
    파악된 상기 존 인덱스의 해당 존에서 상기 논리주소에 대응되는 물리주소를 시작 주소로 하여 설정하는 단계; 및
    설정된 상기 시작 주소로부터 상기 호스트 장치로부터 전달된 데이터 크기만큼의 데이터를 리드하는 단계;
    를 포함하는 데이터 저장 장치의 동작 방법.
  22. 제18항에 있어서,
    상기 논리주소가 상기 랜덤 존에 속하는 경우,
    상기 리드 커맨드에 대응되는 동작을 수행하는 단계는,
    상기 랜덤 존의 시작 물리주소에 상기 호스트 장치로부터 전달된 상기 논리주소를 합산하여 최종 물리주소를 파악하는 단계; 및
    상기 최종 물리주소로부터 상기 데이터 크기만큼 데이터를 리드하는 단계;
    를 포함하는 데이터 저장 장치의 동작 방법.
  23. 제18항에 있어서,
    상기 랜덤 존에 저장된 데이터를 기 설정된 기준에 따라 상기 백업 존에 백업하는 단계; 및
    전원이 오프(Off)된 후 온(On) 상태로 전환하면, 상기 백업 존에 저장된 데이터를 상기 랜덤 존으로 복구하는 단계를 더 포함하는 데이터 저장 장치의 동작 방법.
  24. 제23항에 있어서,
    상기 랜덤 존은 복수의 슬라이스(Slice) 영역을 포함하고, 상기 복수의 슬라이스 영역 각각이 랜덤 인덱스와 매칭되며, 상기 랜덤 인덱스 각각은 상기 랜덤 존에 저장된 데이터를 상기 백업 존으로 백업하였는지 여부를 나타내는 플러쉬 플래그(Flush Flag) 및 상기 랜덤 존에 저장된 데이터가 신규 데이터로 업데이트되었는지 여부를 나타내는 업데이트 플래그(Update Flag)와 매칭되는 데이터 저장 장치의 동작 방법.
  25. 제24항에 있어서,
    상기 백업 존에 백업하는 단계에서,
    상기 랜덤 존에 라이트된 데이터 양이 기준치 이상인 경우, 상기 랜덤 존에 저장된 데이터를 상기 백업 존에 백업하는 단계; 및
    백업한 랜덤 존에 대해 상기 플러쉬 플래그의 값을 1(One)로 변경하는 단계;
    를 포함하는 데이터 저장 장치의 동작 방법.
  26. 제24항에 있어서,
    상기 백업 존에 백업하는 단계는,
    상기 호스트 장치로부터 전달되는 라이트 커맨드의 횟수가 기준치 이상인 경우, 상기 복수의 슬라이스 영역에 저장된 데이터를 상기 랜덤 인덱스의 번호에 따라 순차적으로 상기 백업 존에 라이트하는 단계; 및
    백업한 슬라이스 영역에 대해 상기 플러쉬 플래그의 값을 1(One)로 변경하는 단계;
    를 포함하는 데이터 저장 장치의 동작 방법.
  27. 제24항에 있어서,
    상기 백업 존에 백업하는 단계는,
    상기 복수의 슬라이스 영역에 저장된 데이터가 상기 백업 존에 라이트 된 후, 상기 호스트 장치로부터 상기 랜덤 존에 저장된 데이터의 업데이트가 발생하는 경우, 해당 슬라이스 영역에 대한 업데이트 플래그의 값을 1(One)로 변경하는 단계를 더 포함하는 데이터 저장 장치의 동작 방법.
  28. 제27항에 있어서,
    상기 백업 존은 상기 랜덤 존에 라이트 되는 데이터를 일대 일로 백업하는 제1 영역 및 파워 오프 시 상기 랜덤 존에 업데이트된 최신 데이터를 백업하는 제2 영역을 포함하고, 상기 제1 영역 및 상기 제2 영역은 각각 가상의 백업 인덱스와 매칭되며,
    상기 백업 존에 백업하는 단계는,
    상기 전원이 오프(Off)되는 신호를 수신하면, 상기 랜덤 존으로부터 상기 플러쉬 플래그가 0이거나 또는 상기 업데이트 플래그가 1인 데이터를 상기 제2 영역에 라이트하고,
    상기 제2 영역에 상기 데이터를 라이트 할 때, 해당 랜덤 인덱스를 함께 저장하는 데이터 저장 장치의 동작 방법.
  29. 제28항에 있어서,
    상기 랜덤 존으로 복구하는 단계는,
    상기 전원이 오프(Off)된 후 온(On) 상태로 전환하면, 상기 제1 영역의 백업 인덱스에 해당하는 물리주소를 계산하여 상기 랜덤 존에 순차적으로 데이터를 로드하는 단계;
    상기 제1 영역에 대한 로드가 종료하면 상기 제2 영역의 백업 존에 저장된 최신 데이터를 상기 랜덤 존에 로드하는 단계;
    를 포함하는 데이터 저장 장치의 동작 방법.
KR1020190103087A 2019-08-22 2019-08-22 데이터 저장 장치 및 그것의 동작 방법 KR20210023203A (ko)

Priority Applications (7)

Application Number Priority Date Filing Date Title
KR1020190103087A KR20210023203A (ko) 2019-08-22 2019-08-22 데이터 저장 장치 및 그것의 동작 방법
US16/841,274 US11243709B2 (en) 2019-08-22 2020-04-06 Data storage apparatus and operating method thereof
DE102020112512.7A DE102020112512A1 (de) 2019-08-22 2020-05-08 Datenspeichergerät und Betriebsverfahren dafür
CN202010571897.9A CN112416242B (zh) 2019-08-22 2020-06-22 数据存储设备及其操作方法
JP2020111045A JP2021034026A (ja) 2019-08-22 2020-06-29 データ保存装置及びその動作方法
US17/000,082 US11734175B2 (en) 2019-08-22 2020-08-21 Storage device and method of operating the same
US18/346,203 US20230350803A1 (en) 2019-08-22 2023-07-01 Storage device and method of operating the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190103087A KR20210023203A (ko) 2019-08-22 2019-08-22 데이터 저장 장치 및 그것의 동작 방법

Publications (1)

Publication Number Publication Date
KR20210023203A true KR20210023203A (ko) 2021-03-04

Family

ID=74495906

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190103087A KR20210023203A (ko) 2019-08-22 2019-08-22 데이터 저장 장치 및 그것의 동작 방법

Country Status (5)

Country Link
US (1) US11243709B2 (ko)
JP (1) JP2021034026A (ko)
KR (1) KR20210023203A (ko)
CN (1) CN112416242B (ko)
DE (1) DE102020112512A1 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11843597B2 (en) * 2016-05-18 2023-12-12 Vercrio, Inc. Automated scalable identity-proofing and authentication process
US11734175B2 (en) * 2019-08-22 2023-08-22 SK Hynix Inc. Storage device and method of operating the same
TWI777087B (zh) * 2019-09-06 2022-09-11 群聯電子股份有限公司 資料管理方法、記憶體控制電路單元以及記憶體儲存裝置
US11762769B2 (en) 2019-09-20 2023-09-19 SK Hynix Inc. Memory controller based on flush operation and method of operating the same
KR102456176B1 (ko) 2020-05-21 2022-10-19 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11573891B2 (en) 2019-11-25 2023-02-07 SK Hynix Inc. Memory controller for scheduling commands based on response for receiving write command, storage device including the memory controller, and operating method of the memory controller and the storage device
US11604740B2 (en) * 2020-12-01 2023-03-14 Capital One Services, Llc Obfuscating cryptographic material in memory
US11620084B2 (en) 2020-12-30 2023-04-04 Samsung Electronics Co., Ltd. Storage device including memory controller and operating method of memory controller
CN112947996B (zh) * 2021-05-14 2021-08-27 南京芯驰半导体科技有限公司 基于虚拟映射的片外非易失性存储器动态装载***及方法
CN113568579B (zh) * 2021-07-28 2022-05-03 深圳市高川自动化技术有限公司 一种存储器、数据存储方法以及数据读取方法
CN113687710B (zh) * 2021-10-26 2022-03-22 西安羚控电子科技有限公司 一种固定翼无人机的飞控管理计算机掉电处理方法及***
KR102385572B1 (ko) 2021-11-02 2022-04-13 삼성전자주식회사 컨트롤러, 스토리지 장치 및 스토리지 장치의 동작 방법
US20230205705A1 (en) * 2021-12-23 2023-06-29 Advanced Micro Devices, Inc. Approach for providing indirect addressing in memory modules
US11941286B2 (en) 2022-02-04 2024-03-26 Western Digital Technologies, Inc. Keeping a zone random write area in non-persistent memory
EP4343767A3 (en) * 2022-08-31 2024-05-22 Samsung Electronics Co., Ltd. Storage device including nonvolatile memory device and operating method of storage device

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8452912B2 (en) * 2007-10-11 2013-05-28 Super Talent Electronics, Inc. Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read
US20070150645A1 (en) * 2005-12-28 2007-06-28 Intel Corporation Method, system and apparatus for power loss recovery to enable fast erase time
KR100771521B1 (ko) * 2006-10-30 2007-10-30 삼성전자주식회사 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법
KR100825802B1 (ko) 2007-02-13 2008-04-29 삼성전자주식회사 기입 데이터의 논리적 페이지보다 이전 논리적 페이지들을가지는 데이터들을 데이터 블록으로부터 복사하는 불휘발성메모리 장치의 데이터 기입 방법
US7752489B2 (en) * 2007-05-10 2010-07-06 International Business Machines Corporation Data integrity validation in storage systems
US8751859B2 (en) * 2007-05-10 2014-06-10 International Business Machines Corporation Monitoring lost data in a storage system
KR101449524B1 (ko) 2008-03-12 2014-10-14 삼성전자주식회사 스토리지 장치 및 컴퓨팅 시스템
KR101506675B1 (ko) 2008-12-09 2015-03-30 삼성전자주식회사 보조 전원 장치를 갖는 사용자 장치
US8347041B2 (en) * 2009-01-02 2013-01-01 Lsi Corporation System and method to preserve and recover unwritten data present in data cache of a disk subsystem across power outages
KR20110046243A (ko) 2009-10-27 2011-05-04 삼성전자주식회사 사용자 장치 및 그것의 맵핑 데이터 관리 방법
US9753847B2 (en) * 2009-10-27 2017-09-05 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
KR101636248B1 (ko) 2009-12-10 2016-07-06 삼성전자주식회사 플래시 메모리 장치, 이를 포함하는 플래시 메모리 시스템 및 이의 프로그램 방법
TWI399644B (zh) * 2009-12-24 2013-06-21 Univ Nat Taiwan 非揮發記憶體區塊管理方法
EP2598996B1 (en) * 2010-07-28 2019-07-10 SanDisk Technologies LLC Apparatus, system, and method for conditional and atomic storage operations
JP5553309B2 (ja) * 2010-08-11 2014-07-16 国立大学法人 東京大学 データ処理装置
US8595414B2 (en) 2010-09-30 2013-11-26 Apple Inc. Selectively combining commands for a system having non-volatile memory
US9690695B2 (en) * 2012-09-20 2017-06-27 Silicon Motion, Inc. Data storage device and flash memory control method thereof
US20140229657A1 (en) * 2013-02-08 2014-08-14 Microsoft Corporation Readdressing memory for non-volatile storage devices
US9454474B2 (en) * 2013-03-05 2016-09-27 Western Digital Technologies, Inc. Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive
US9218279B2 (en) * 2013-03-15 2015-12-22 Western Digital Technologies, Inc. Atomic write command support in a solid state drive
JP6020278B2 (ja) 2013-03-21 2016-11-02 富士通株式会社 自律分散型キャッシュ配置制御システム
KR102025180B1 (ko) * 2013-08-08 2019-09-26 삼성전자주식회사 스토리지 시스템 및 그것의 쓰기 방법
KR102218735B1 (ko) * 2014-01-21 2021-02-23 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 소거 방법
US9383927B2 (en) * 2014-05-28 2016-07-05 SandDisk Technologies LLC Method and system for creating a mapping table cache from an interleaved subset of contiguous mapping data for a storage device
US9418699B1 (en) 2014-10-09 2016-08-16 Western Digital Technologies, Inc. Management of sequentially written data
US9507711B1 (en) * 2015-05-22 2016-11-29 Sandisk Technologies Llc Hierarchical FTL mapping optimized for workload
KR102447471B1 (ko) * 2015-06-24 2022-09-27 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 스토리지 장치
KR20180024615A (ko) 2016-08-30 2018-03-08 삼성전자주식회사 보조 전력을 공급하기 위한 커패시터들을 포함하는 전자 장치의 전력 및 성능 관리 방법
JP2018073040A (ja) 2016-10-27 2018-05-10 東芝メモリ株式会社 メモリシステム
US10564888B2 (en) * 2016-11-09 2020-02-18 Sandisk Technologies Llc Method and system for visualizing a correlation between host commands and storage system performance
KR102610537B1 (ko) 2016-11-10 2023-12-06 삼성전자주식회사 솔리드 스테이트 드라이브 장치 및 이를 포함하는 저장 시스템
KR20180080589A (ko) * 2017-01-04 2018-07-12 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10733100B2 (en) * 2017-06-12 2020-08-04 Western Digital Technologies, Inc. Method and apparatus for classifying and buffering write commands
US10698817B2 (en) 2017-06-12 2020-06-30 Dell Products, L.P. Method for determining available stored energy capacity at a power supply and system therefor
US20180364938A1 (en) * 2017-06-14 2018-12-20 Burlywood, LLC Extent-based data location table management
US10643707B2 (en) * 2017-07-25 2020-05-05 Western Digital Technologies, Inc. Group write operations for a data storage device
US10289557B2 (en) * 2017-08-28 2019-05-14 Western Digital Technologies, Inc. Storage system and method for fast lookup in a table-caching database
TWI670600B (zh) * 2017-09-18 2019-09-01 深圳大心電子科技有限公司 資料備份方法、資料恢復方法以及儲存控制器
US10379948B2 (en) * 2017-10-02 2019-08-13 Western Digital Technologies, Inc. Redundancy coding stripe based on internal addresses of storage devices
KR102410671B1 (ko) 2017-11-24 2022-06-17 삼성전자주식회사 스토리지 장치, 스토리지 장치를 제어하는 호스트 장치, 및 스토리지 장치의 동작 방법
US10572186B2 (en) * 2017-12-18 2020-02-25 Formulus Black Corporation Random access memory (RAM)-based computer systems, devices, and methods
KR20190087217A (ko) * 2018-01-16 2019-07-24 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US11157179B2 (en) 2019-12-03 2021-10-26 Pure Storage, Inc. Dynamic allocation of blocks of a storage device based on power loss protection
EP3866013A1 (en) 2020-02-11 2021-08-18 Aptiv Technologies Limited Data logging system for collecting and storing input data

Also Published As

Publication number Publication date
US20210055864A1 (en) 2021-02-25
US11243709B2 (en) 2022-02-08
DE102020112512A1 (de) 2021-02-25
CN112416242A (zh) 2021-02-26
CN112416242B (zh) 2024-06-28
JP2021034026A (ja) 2021-03-01

Similar Documents

Publication Publication Date Title
CN112416242B (zh) 数据存储设备及其操作方法
KR102395538B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
CN110858129B (zh) 数据存储装置及其操作方法
KR20200095103A (ko) 데이터 저장 장치 및 그 동작 방법
KR20200085967A (ko) 데이터 저장 장치 및 그 동작 방법
KR20190120573A (ko) 메모리 시스템, 데이터 처리 시스템 및 메모리 시스템의 동작 방법
KR20200020464A (ko) 데이터 저장 장치 및 그 동작 방법
KR20190083148A (ko) 데이터 저장 장치 및 그것의 동작 방법 및 그것을 포함하는 데이터 처리 시스템
US11704048B2 (en) Electronic device
US20230273748A1 (en) Memory system, operating method thereof and computing system
KR20200129863A (ko) 컨트롤러, 메모리 시스템 및 그것의 동작 방법
CN111813328A (zh) 存储器***及其操作方法
KR20200114212A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20210144249A (ko) 저장 장치 및 이의 동작 방법
KR20210147696A (ko) 데이터 저장 장치 및 그것의 동작 방법
CN111752858A (zh) 控制器、存储器***及其操作方法
KR20200089939A (ko) 메모리 시스템 및 그 동작 방법
KR20220103340A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20190090634A (ko) 메모리 시스템 및 그것의 동작 방법
KR20210018570A (ko) 컨트롤러, 컨트롤러의 동작 방법 및 이를 포함하는 저장 장치
US11720276B2 (en) Memory system and controller for managing write status
US11157401B2 (en) Data storage device and operating method thereof performing a block scan operation for checking for valid page counts
KR20230037255A (ko) 이벤트 로그 관리 방법, 컨트롤러 및 저장 장치
KR20220130526A (ko) 메모리 시스템 및 그 동작 방법
KR20210079894A (ko) 데이터 저장 장치 및 그것의 동작 방법

Legal Events

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