KR102527992B1 - 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 - Google Patents
데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 Download PDFInfo
- Publication number
- KR102527992B1 KR102527992B1 KR1020160030241A KR20160030241A KR102527992B1 KR 102527992 B1 KR102527992 B1 KR 102527992B1 KR 1020160030241 A KR1020160030241 A KR 1020160030241A KR 20160030241 A KR20160030241 A KR 20160030241A KR 102527992 B1 KR102527992 B1 KR 102527992B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- ssd
- data segment
- type memory
- parity
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2017—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where memory access, memory control or I/O control functionality is redundant
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
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)
Abstract
데이터 저장 장치와 이를 포함하는 데이터 처리 시스템이 공개된다. 상기 데이터 저장 장치는 복수(2이상)의 솔리드 스테이트 디스크(SSD): 및 상기 복수의 SSD를 제어하는 컨트롤러를 포함하며, 상기 컨트롤러는 호스트의 제1 쓰기 요청에 응답하여 제1 데이터 세그먼트와 상기 제1 데이터 세그먼트의 이중화 데이터를 상기 복수(2이상)의 SSD 중 서로 다른 SSD의 제1 타입 메모리에 각각 저장하고, 상기 호스트의 제2 쓰기 요청에 응답하여 제2 데이터 세그먼트와 상기 제2 데이터 세그먼트의 이중화 데이터를 상기 복수의 SSD 중 서로 다른 SSD의 제1 타입 메모리에 각각 저장하며, 상기 이중화 데이터에 기초하여 생성된 패리티 데이터를 패리티 SSD의 제1 타입 메모리 또는 제2 타입 메모리에 저장한다.
Description
본 발명의 개념에 따른 실시 예는 데이터 저장 장치에 관한 것으로, 특히 내부에 비휘발성 랜덤 억세스 메모리를 포함하는 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템에 관한 것이다.
일반적으로, 대용량의 저장 장치는 복수의 메모리 장치들을 포함한다. 메모리 장치는 데이터를 저장하는데 사용되고, 상기 메모리 장치는 휘발성 메모리 장치와 불휘발성 메모리 장치로 구분된다. 플래시 메모리 장치는 복수의 메모리 셀들이 한 번의 프로그램 동작으로 이레이즈(erase) 또는 프로그램(program)되는 EEPROM의 일 예이다. 예컨대, 프로그램 또는 리드는 페이지 단위로 수행되고, 이레이즈는 블록 단위로 수행된다. 블록은 복수의 페이지들을 포함할 수 있다.
한편, 저장 장치의 불량이나 전원 불량 등에 대비하여 데이터를 복구하기 위하여 데이터를 이중화하는 기법이 많이 사용된다.
본 발명이 이루고자 하는 기술적인 과제는 디스크 오류 발생 시, 지속적인 데이터 접근 서비스를 제공하는 데이터 저장 장치 및 데이터 처리 시스템을 제공하는 것이다.
본 발명의 실시 예에 따른 데이터 저장 장치는 복수(2이상)의 솔리드 스테이트 디스크(SSD: solid-state drive 또는 solid-state disk); 및 상기 복수의 SSD를 제어하는 컨트롤러를 포함한다.
상기 컨트롤러는 호스트의 제1 쓰기 요청에 응답하여 제1 데이터 세그먼트와 상기 제1 데이터 세그먼트의 이중화 데이터를 상기 복수(2이상)의 SSD 중 서로 다른 SSD의 제1 타입 메모리에 각각 저장하고, 상기 호스트의 제2 쓰기 요청에 응답하여 제2 데이터 세그먼트와 상기 제2 데이터 세그먼트의 이중화 데이터를 상기 복수의 SSD 중 서로 다른 SSD의 제1 타입 메모리에 각각 저장하며, 상기 제1 데이터 세그먼트의 이중화 데이터와 상기 제2 데이터 세그먼트의 이중화 데이터에 기초하여 생성된 패리티 데이터를 상기 복수의 SSD 중 패리티 SSD의 제1 타입 메모리 또는 제2 타입 메모리에 저장하는 데이터 저장 장치.
상기 복수의 SSD는 제1 내지 제N(2이상의 정수) SSD를 포함하고, 상기 제1 데이터 세그먼트 및 상기 제2 데이터 세그먼트를 포함하는 (N-1)개의 데이터 세그먼트들은 각각 제1 내지 제(N-1) SSD에 저장되고, 상기 (N-1)개의 데이터 세그먼트들 각각의 이중화 데이터는 상기 제N SSD에 저장될 수 있다.
상기 제1 데이터 세그먼트의 이중화 데이터는 상기 제1 데이터 세그먼트와 동일하고, 상기 제2 데이터 세그먼트의 이중화 데이터는 상기 제2 데이터 세그먼트와 동일한 데이터일 수 있다.
본 발명의 실시 예에 따른 데이터 처리 시스템은 호스트; 및 상기 호스트에 접속된 데이터 저장 장치를 포함하고, 상기 데이터 저장 장치는, 제1 내지 제N(2이상의 정수) 솔리드 스테이트 디스크(SSD): 및 상기 제1 내지 제N SSD를 제어하는 컨트롤러를 포함한다.
상기 컨트롤러는 상기 호스트로부터 수신한 복수의 쓰기 요청에 상응하는 데이터 세그먼트들은 제1 내지 제(N-1) SSD의 제1 타입 메모리에 저장하고, 상기 데이터 세그먼트들 중 일부에 기초한 이중화 데이터는 상기 제N SSD의 제1 타입 메모리에 저장하며, 상기 데이터 세그먼트들 전부에 기초한 패리티 데이터는 상기 제N SSD의 상기 제1 타입 메모리 또는 제2 타입 메모리에 저장한다.
상기 컨트롤러는 제1 쓰기 요청에 응답하여 제1 데이터 세그먼트를 상기 제1 SSD에 저장하고, 상기 제1 데이터 세그먼트와 동일한 데이터를 상기 제N SSD에 저장하며, 제2 쓰기 요청에 응답하여 제2 데이터 세그먼트를 제2 SSD에 저장하고, 상기 제2 데이터 세그먼트와 동일한 데이터를 상기 제N SSD에 저장할 수 있다.
상기 제N SSD는 상기 컨트롤러로부터의 패리티 생성 및 저장 명령에 응답하여 상기 제N SSD의 제1 타입 메모리에 저장된 상기 제1 데이터 세그먼트 내지 상기 제(N-1) 데이터 세그먼트를 이용하여 상기 패리티 데이터를 생성하고, 상기 패리티 데이터를 상기 제N SSD의 제2 타입 메모리에 저장한 후, 상기 제N SSD의 제1 타입 메모리에 저장된 상기 제1 내지 제(N-1)데이터 세그먼트를 삭제할 수 있다.
상기 이중화 데이터는 상기 제1 데이터 세그먼트와 상기 제2 데이터 세그먼트를 이용하여 산출된 제1 부분 패리티 데이터일 수 있다.
상기 제N SSD는 상기 제1 데이터 세그먼트를 상기 제N SSD의 제1 타입 메모리에 저장하고, 상기 컨트롤러로부터 수신한 제2 데이터 세그먼트와 상기 제N SSD의 제1 타입 메모리에 저장된 상기 제1 데이터 세그먼트를 이용하여 상기 제1 부분 패리티 데이터를 생성하여 상기 제N SSD의 제1 타입 메모리에 저장한 후, 상기 제N SSD의 제1 타입 메모리에 저장된 상기 제1 데이터 세그먼트를 삭제할 수 있다.
본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법은 컨트롤러, 버퍼 및 복수(2이상)의 SSD를 포함하는 데이터 저장 장치의 동작 방법으로서, 호스트로부터 제1 쓰기 요청을 수신하는 단계; 상기 제1 쓰기 요청에 응답하여 제1 데이터 세그먼트를 상기 버퍼에 저장하는 단계; 상기 제1 데이터 세그먼트를 제1 SSD에 저장하는 단계; 상기 제1 데이터 세그먼트를 제N SSD에 저장하는 단계; 상기 호스트로 상기 제1 쓰기 요청에 대한 응답을 전송하는 단계; 상기 호스트로부터 제2 쓰기 요청을 수신하는 단계; 상기 제2 쓰기 요청에 응답하여 제2 데이터 세그먼트를 상기 버퍼에 저장하는 단계; 상기 제2 데이터 세그먼트를 제2 SSD에 저장하는 단계; 상기 제2 데이터 세그먼트에 기초한 이중화 데이터를 제 N SSD에 저장하는 단계; 및 상기 호스트로 상기 제2 쓰기 요청에 대한 응답을 전송하는 단계를 포함한다.
본 발명의 실시예에 따르면, 데이터 저장 장치(300)는 SSD 내의 제1 타입 메모리(예컨대, NVRAM)를 이중화 데이터(예컨대, 제1 단계 이중화 데이터)를 저장하기 위한 저장공간으로 활용함으로써, 이중화 데이터를 저장하기 위한 별도의 NVRAM, 즉, SSD 외의 별도의 NVRAM이 불필요하다.
따라서, 본 발명의 실시예에 따르면, 시스템의 밀도(density)를 높일 수 있다.
또한, 데이터 이중화를 위한 별도의 메모리 장치(예컨대, NVRAM 장치)가 불필요하므로, 메모리 장치를 장착하기 위한 슬롯(slot)과 같은 H/W 자원을 줄일 수 있다. 따라서, 파워 절감 및 비용 절감 효과를 얻을 수 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 데이터 처리 시스템을 나타내는 블록도이다.
도 2는 도 1에 도시된 호스트 및 컨트롤러의 일 실시예를 나타내는 블록도이다.
도 3은 도 1에 도시된 데이터 저장 장치의 일 실시예를 나타내는 블록도이다.
도 4a 내지 도 4c는 도 3에 도시된 제1 SSD의 실시 예를 나타내는 블록도이다.
도 5a는 본 발명의 실시예에 따른 NAND-타입 플래시 메모리 장치(NAND)의 2차원 메모리 셀 어레이의 일 실시예를 나타내는 도면이다.
도 5b는 본 발명의 실시예에 따른 NAND-타입 플래시 메모리 장치(NAND)의 3차원 메모리 셀 어레이의 일 실시예를 나타내는 도면이다.
도 6은 본 발명의 일 실시 예에 따른 데이터 저장 장치의 동작을 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시 예에 따른 데이터 저장 장치의 동작을 설명하기 위한 도면이다.
도 8은 본 발명의 일 실시 예에 따른 데이터 저장 장치의 동작을 설명하기 위한 도면이다.
도 9a 내지 도 9b는 컨트롤러가 SSD로 인가하는 명령의 일 예를 나타낸다.
도 10은 본 발명의 일 실시 예에 따른 데이터 이중화 방법은 설명하기 위한 플로우이다.
도 11은 본 발명의 일 실시 예에 따른 데이터 이중화 방법을 나타내는 플로우이다.
도 12는 본 발명의 실시 예에 따른 데이터 처리 시스템을 나타내는 블록도이다.
도 1은 본 발명의 일 실시 예에 따른 데이터 처리 시스템을 나타내는 블록도이다.
도 2는 도 1에 도시된 호스트 및 컨트롤러의 일 실시예를 나타내는 블록도이다.
도 3은 도 1에 도시된 데이터 저장 장치의 일 실시예를 나타내는 블록도이다.
도 4a 내지 도 4c는 도 3에 도시된 제1 SSD의 실시 예를 나타내는 블록도이다.
도 5a는 본 발명의 실시예에 따른 NAND-타입 플래시 메모리 장치(NAND)의 2차원 메모리 셀 어레이의 일 실시예를 나타내는 도면이다.
도 5b는 본 발명의 실시예에 따른 NAND-타입 플래시 메모리 장치(NAND)의 3차원 메모리 셀 어레이의 일 실시예를 나타내는 도면이다.
도 6은 본 발명의 일 실시 예에 따른 데이터 저장 장치의 동작을 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시 예에 따른 데이터 저장 장치의 동작을 설명하기 위한 도면이다.
도 8은 본 발명의 일 실시 예에 따른 데이터 저장 장치의 동작을 설명하기 위한 도면이다.
도 9a 내지 도 9b는 컨트롤러가 SSD로 인가하는 명령의 일 예를 나타낸다.
도 10은 본 발명의 일 실시 예에 따른 데이터 이중화 방법은 설명하기 위한 플로우이다.
도 11은 본 발명의 일 실시 예에 따른 데이터 이중화 방법을 나타내는 플로우이다.
도 12는 본 발명의 실시 예에 따른 데이터 처리 시스템을 나타내는 블록도이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
본 발명의 실시예에 따르면, 복수의 SSD(solid-state drive or solid-state disk)를 구비하고, 각 SSD 내에 제1 단계 이중화(예컨대, RAID 1 이중화)를 위한 제1 타입 메모리(예컨대, NVRAM)와 제2 단계 이중화(예컨대, RAID 5/6 이중화)를 위한 제2 타입 메모리(예컨대, NAND)를 구비하는 데이터 저장 장치가 제공될 수 있다.
도 1은 본 발명의 일 실시 예에 따른 데이터 처리 시스템을 나타내는 블록도이다. 도 2는 도 1에 도시된 호스트(200) 및 컨트롤러(310)의 일 실시예를 나타내는 블록도이다.
도 1 및 도 2를 참조하면, 데이터 처리 시스템(100)은 호스트(200) 및 호스트(200)와 인터페이스(110)를 통해 명령 및/또는 데이터를 주거나 받을 수 있는 데이터 저장 장치(300)를 포함할 수 있다.
실시 예들에 따라, 데이터 처리 시스템(100)은 PC(personal computer), 워크스테이션(workstation), 데이터 센터, 인터넷 데이터 센터(internet data center(IDC)), SAN(storage area network), NAS(network attached storage) 또는 모바일 컴퓨팅 장치로 구현될 수 있으나 이에 한정되는 것은 아니다.
모바일 컴퓨팅 장치는 랩탑 컴퓨터(laptop computer), 이동 전화기, 스마트 폰(smart phone), 태블릿(tablet) PC, PDA (personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP (portable multimedia player), PND(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), 모바일 인터넷 장치(mobile internet device(MID)), 웨어러블 컴퓨터, 사물 인터넷(internet of things(IoT)) 장치, 만물 인터넷(internet of everything(IoE)) 장치, 드론 (drone), 또는 e-북 (e-book)으로 구현될 수 있으나 이에 한정되는 것은 아니다.
인터페이스(110)는 SATA(serial advanced technology attachment) 인터페이스, SATAe(SATA express) 인터페이스, SAS(serial attached small computer system interface(SCSI)) 인터페이스, PCIe(peripheral component interconnect express) 인터페이스, NVMe(non-volatile memory Express) 인터페이스, AHCI(advanced host controller interface) 인터페이스, 또는 멀티미디어 카드(multimedia card(MMC))인터페이스로 구현될 수 있으나 이에 한정되는 것은 아니다. 실시 예들에 따라, 인터페이스(110)는 전기 신호들 또는 광신호들을 전송할 수 있다.
호스트(200)는, 인터페이스(110)를 통해, 데이터 저장 장치(300)의 데이터 처리 동작(예컨대, 라이트 동작 또는 리드 동작 등)을 제어할 수 있다. 호스트 (200)는 호스트 컨트롤러를 의미할 수 있다.
데이터 저장 장치(300)는 컨트롤러(310), 버퍼(360), 및 복수(2이상)의 메모리 장치들(400)을 포함할 수 있다. 또한, 데이터 저장 장치(300)는 PMIC(370)를 더 포함할 수 있다. 복수(2이상)의 메모리 장치들(400)을 메모리 클러스터(400)라 칭할 수 있다. 여기서, 메모리 클러스터(400)는 메모리 장치들의 집합을 의미할 수 있다. 복수(2이상)의 메모리 장치들(400)은 복수(N, 2이상의 정수)의 솔리드 스테이트 디스크(SSD: Solid State Disk 또는 solid State Drive)(410-450)를 포함할 수 있다. 도 1의 실시예에서는 SSD 의 수(N)는 5이고, 도 2의 실시예에서는, SSD의 수(N)는 3이나, 이에 한정되는 것은 아니며, SSD의 수는 달라질 수 있다.
데이터 저장 장치(300)는 플래시 메모리-기반 메모리 장치로 구현될 수 있으나 이에 한정되는 것은 아니다. 예컨대, 데이터 저장 장치(300)는 SSD(solid-state drive or solid-state disk), 임베디드 SSD(embedded SSD(eSSD)), 유니버셜 플래시 스토리지(universal flash storage(UFS)), 멀티미디어 카드(multimedia card(MMC)), 임베디드 MMC(embedded MMC(eMMC)) 또는 매니지드(managed) NAND로 구현될 수 있으나 이에 한정되는 것은 아니다.
플래시 메모리-기반 메모리 장치는 메모리 셀 어레이를 포함할 수 있다. 상기 메모리 셀 어레이는 복수의 메모리 셀들을 포함할 수 있다. 예컨대, 상기 메모리 셀 어레이는 2차원 메모리 셀 어레이 또는 3차원 메모리 셀 어레이를 포함할 수 있다.
3차원 메모리 셀 어레이는 실리콘 기판 위(on or above)에 배치된 액티브 영역(active region)을 갖는 메모리 셀들의 어레이의 하나 또는 그 이상의 물리적인 레벨들 내에서 모노리식하게(monolithically) 형성되고, 상기 메모리 셀들의 동작에 관련된 회로를 포함할 수 있다. 상기 회로는 상기 기판의 내부 또는 위(on or above)에 형성될 수 있다. 모노리식(monolithic) 이라는 용어는 어레이의 각 레벨의 레이어들(layers)이 상기 어레이의 각 하부 레벨(each underlying level)의 레이어들에 직접 증착 (directly deposited )되는 것을 의미한다. 3차원 메모리 셀 어레이는 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직으로 배향되는(vertically oriented) 수직 NAND 스트링을 포함할 수 있다. 상기 적어도 하나의 메모리 셀은 전하 트랩 레이어(charge trap layer)를 포함할 수 있다.
실시 예들에 따라, 데이터 저장 장치(300)는 하드 디스크 드라이브(hard disk drive(HDD)), PRAM(phase change RAM) 장치, MRAM(magnetoresistive RAM) 장치, STT-MRAM(spin-transfer torque MRAM) 장치, FRAM(ferroelectric RAM) 장치 또는 RRAM(resistive RAM) 장치로 구현될 수 있으나 이에 한정되는 것은 아니다.
컨트롤러(310)는 호스트(200), 버퍼(360), 및 메모리 클러스터(400) 사이에서 주거나 받는 명령 및/또는 데이터의 전송 또는 처리를 제어할 수 있다. 실시 예들에 따라, 컨트롤러(310)는 IC 또는 SoC로 구현될 수 있다.
도 2의 실시예에 따른 호스트(200)는 버스 구조(210), CPU(220) 및 제1인터페이스(230)를 포함할 수 있다.
도 2의 실시예에 따른 컨트롤러(310)는 버스 구조(311), 내부 메모리(예컨대, SRAM)(315), 제2인터페이스(320), CPU(330), 버퍼 컨트롤러(340), 및 제3인터페이스(350)를 포함할 수 있다.
CPU(220)와 제1인터페이스(230)는, 버스 구조(210)를 통해, 명령 및/또는 데이터를 서로 주거나 받을 수 있다. 비록, 도 3에는 버스 구조(210), CPU(220), 및 제1인터페이스(230)를 포함하는 호스트(200)가 도시되어 있으나, 본 발명의 기술적 사상이 도 3에 도시된 호스트(200)에 한정되는 것은 아니다.
실시 예에 따라, 호스트(200)는 집적 회로(integrated circuit(IC)), 마더보드(motherboard), 시스템 온 칩(system on chip(SoC)), 애플리케이션 프로세서 (application processor(AP)), 모바일(mobile) AP, 웹 서버(web server), 데이터 서버, 또는 데이터베이스 서버로 구현될 수 있으나 이에 한정되는 것은 아니다.
예컨대, 버스 구조(210)는 AMBA(advanced microcontroller bus architecture), AHB(advanced high-performance bus), APB(advanced peripheral bus), AXI(advanced eXtensible interface), ASB(advanced system bus), ACE(AXI Coherency Extensions), 또는 이들의 결합으로 구현될 수 있으나 이에 한정되는 것은 아니다.
CPU(220)는 데이터 저장 장치(300)의 라이트 동작(write operation)을 제어할 수 있는 라이트 요청, 또는 데이터 저장 장치(300)의 리드 동작(read operation)을 제어할 수 있는 리드 요청을 생성할 수 있다. 상기 라이트 요청은 라이트 어드레스(예컨대, 논리 어드레스)를 포함할 수 있고, 상기 리드 요청은 리드 어드레스(예컨대, 논리 어드레스)를 포함할 수 있다. 예컨대, CPU(220)는 하나 또는 그 이상의 코어들을 포함할 수 있다. 요청(request)은 명령(command)을 의미할 수 있다.
제1인터페이스(230)는 데이터 저장 장치(300)로 전송될 명령 및/또는 데이터의 포맷(format)을 변경하고, 변경된 포맷을 갖는 명령 및/또는 변경된 포맷을 갖는 데이터를 인터페이스(110)를 통해 데이터 저장 장치(300)로 전송할 수 있다. 또한, 제1인터페이스(230)는 데이터 저장 장치(300)로부터 전송된 응답(response) 및/또는 데이터의 포맷을 변경하고, 변경된 포맷을 갖는 응답 및/또는 변경된 포맷을 갖는 데이터를 버스 구조(210)를 통해 CPU(220)로 전송할 수 있다. 실시 예에 따라, 제1인터페이스(230)는 명령 및/또는 데이터를 송수신할 수 있는 송수신기를 포함할 수 있다. 제1인터페이스(230)의 구조와 동작은 인터페이스(110)의 구조와 동작에 적합하게(compatible) 구현될 수 있다.
버스 구조(311)는 AMBA, AHB, APB, AXI, ASB, ACE 또는 이들의 결합으로 구현될 수 있으나 이에 한정되는 것은 아니다.
내부 메모리(315)는 컨트롤러(310)의 동작에 필요한 데이터 또는 컨트롤러 (310)에 의해 수행된 데이터 처리 동작(예컨대, 라이트 동작 또는 리드 동작)에 의해 생성된 데이터를 저장할 수 있다. 예컨대, 내부 메모리(315)는 CPU(330)에 의해 실행될 수 있는 제1플래시 변환 계층(flash translation layer(FTL)) 코드를 저장할 수 있다. FTL 코드는 간단히 FTL이라 불릴 수 있다. 예컨대, 데이터 저장 장치(300)가 부팅(booting)될 때, 제1FTL 코드는 메모리 클러스터(400)로부터 내부 메모리(315)로 로드되고 CPU(330)에 의해 실행될 수 있다.
실시 예들에 따라, 내부 메모리(315)는 RAM(ramdom access memory), DRAM (dynamic RAM), SRAM(static RAM), 버퍼(buffer), 버퍼 메모리, 캐시(cache), 또는 강하게 결합된 메모리(tightly coupled memory (TCM))로 구현될 수 있으나 내부 메모리(315)의 종류가 이들에 한정되는 것은 아니다.
제2인터페이스(320)는 호스트(200)로 전송될 응답 및/또는 데이터의 포맷을 변경하고, 변경된 포맷을 갖는 응답 및/또는 변경된 포맷을 갖는 데이터를 인터페이스(110)를 통해 호스트(200)로 전송할 수 있다. 또한, 제2인터페이스(320)는 호스트(200)로부터 전송된 명령 및/또는 데이터를 수신하고, 수신된 명령 및/또는 데이터의 포맷을 변경하고, 변경된 포맷을 갖는 명령 및/또는 변경된 포맷을 갖는 데이터를 CPU(330) 및/또는 버퍼 컨트롤러(340)로 전송할 수 있다. 실시 예에 따라, 제2인터페이스(320)는 신호 및/또는 데이터를 송수신할 수 있는 송수신기를 포함할 수 있다.
제2인터페이스(320)의 구조와 동작은 인터페이스(110)의 구조와 동작에 적합하게 구현될 수 있다. 예컨대, 제2인터페이스(320)는 SATA 인터페이스, SATAe 인터페이스, SAS 인터페이스, PCIe 인터페이스, NVMe 인터페이스, AHCI 인터페이스, MMC 인터페이스, NAND-타입 플래시 메모리 인터페이스, 또는 NOR-타입 플래시 메모리 인터페이스로 구현될 수 있으나 이에 한정되는 것은 아니다.
CPU(330)는, 버스 구조(311)를 통해, 내부 메모리(315), 제2인터페이스(320), 버퍼 컨트롤러(340), 및 제3인터페이스(350)를 제어할 수 있다. CPU(330)는 하나 또는 그 이상의 코어들을 포함할 수 있다. 실시 예에 따라, CPU(330)는 PMIC(370)를 제어할 수 있다.
버퍼 컨트롤러(340)는, CPU(330)의 제어에 따라, 버퍼 (360)에 데이터를 라이트(write)하거나 버퍼(360)로부터 데이터를 리드(read)할 수 있다. 버퍼 컨트롤러(340)는 버퍼(360)에 대한 라이트 동작과 리드 동작을 제어할 수 있는 컨트롤러 또는 버퍼 매니저(buffer manager)로 불릴 수 있다.
제3인터페이스(350)는, CPU(330)의 제어에 따라, 복수의 메인 채널들(CHA, CHB, ..., CHC) 중에서 해당하는 메인 채널을 통해 메모리 클러스터(400)에 대한 데이터 처리 동작들(예컨대, 라이트 동작들 또는 리드 동작들, 등)을 제어할 수 있다.
실시 예들에 따라, 제3인터페이스(350)는 SATA 인터페이스, SATAe 인터페이스, SAS 인터페이스, PCIe 인터페이스, NVMe 인터페이스, AHCI 인터페이스, MMC 인터페이스, NAND-타입 플래시 메모리 인터페이스, 또는 NOR-타입 플래시 메모리 인터페이스로 구현될 수 있으나 이에 한정되는 것은 아니다.
예컨대, 제3인터페이스(350)는 에러 정정 코드(error correction code(ECC)) 엔진(미도시)을 포함할 수 있다. 상기 EEC 엔진은 메모리 클러스터(400)에 저장될 데이터 및/또는 메모리 클러스터(400)로부터 출력된 데이터에 포함된 에러를 정정할 수 있다. 실시 예에 따라, ECC 엔진은 컨트롤러(310) 내부의 어디라도 구현될 수 있다.
버퍼(360)는, 버퍼 컨트롤러(340)의 제어에 따라, 호스트(200)로부터 수신된 데이터를 라이트하거나 저장된 데이터를 리드할 수 있다. 실시 예들에 따라, 휘발성 메모리 장치로 구현될 수 있는 버퍼(360)는 버퍼 메모리, RAM, SRAM, 또는 DRAM으로 구현될 수 있으나 이에 한정되는 것은 아니다.
버퍼(360)는 복수의 메모리 장치들(410, 430, ... 450)에 대한 논리 어드레스-물리 어드레스 변환을 위한 매핑 테이블을 저장하는 제1영역과, 캐시(cache)의 기능을 수행할 수 있는 제2영역을 포함할 수 있으나 이에 한정되는 것은 아니다.
실시 예에 따라, 컨트롤러(310)와 버퍼(360) 각각이 서로 다른 반도체 칩 (semiconductor chip)으로 구현될 때, 컨트롤러(310)와 버퍼(360)는 하나의 패키지, 예컨대, 패키지-온-패키지(package-on-package(PoP)), 멀티-칩 패키지(multi-chip package(MCP)) 또는 시스템-인 패키지(system-in package(SiP))로 구현될 수 있으나 상기 패키지의 종류가 이들에 한정되는 것은 아니다. 예컨대, 버퍼(360)를 포함하는 제1칩은 컨트롤러(310)를 포함하는 제2칩의 위(above)에 스택 볼들(stack balls)을 통해 적층될 수 있다.
PMIC(370)는 컨트롤러(310), 버퍼(360), 및/또는 메모리 장치들(400)로 공급되는 동작 전압들을 제어할 수 있다. 예컨대, 컨트롤러(310)로 공급되는 제1 동작 전압, 버퍼(360)로 공급되는 제2 동작 전압, 및 메모리 장치들(400)로 공급되는 제3 동작 전압은 서로 동일하거나 서로 다를 수 있다.
메모리 장치들(400)은 복수의 SSD(410, 430, ... 450)를 포함할 수 있다. 제1 SSD(410)는 제1메인 채널(CHA)에 접속될 수 있고, 제2 SSD(420)는 제2메인 채널(CHB)에 접속될 수 있고, 제3 SSD(430)는 제3메인 채널(CHC)에 접속될 수 있다.
복수의 SSD들(410, 420, ... 450) 각각의 구조는 도 3 및 도 4를 참조하여 상세히 설명될 것이다. 복수의 SSD들(410, 420, ... 450) 각각의 구조는 실질적으로 동일 또는 유사하게 구현될 수 있다.
본 명세서에서 메인 채널(main channel)은 컨트롤러(310), 즉, 제3인터페이스(350)와 해당하는 하나의 SSD 사이에 존재하는 독립적인 데이터 패스(data path)를 의미할 수 있다. 상기 데이터 패스는 데이터 및/또는 제어 신호들을 전송할 수 있는 전송 라인들을 포함할 수 있다.
도 3은 도 1에 도시된 데이터 저장 장치의 일 실시예를 나타내는 블록도이다. 도 4a 내지 도 4c는 도 3에 도시된 제1 SSD의 실시 예를 나타내는 블록도이다.
도 3 내지 도 4c를 참조하면, 복수의 SSD들(410, 420, ... 450) 각각은 적어도 하나의 제1 타입 메모리(411, 422, 452) 및 적어도 하나의 제2 타입 메모리(415, 425, 455)를 포함한다.
제1 타입 메모리(412, 422, 452)는 불휘발성 RAM(NVRAM: Nonvolatile RAM)일 수 있고, 제2 타입 메모리(415, 425, 455)는 불휘발성 메모리, 예컨대 NAND-타입 플래시 메모리(NAND)일 수 있으나, 이에 한정되는 것은 아니다.
제1 타입 메모리(412, 422, 452)는 PRAM(phase change RAM), MRAM(magnetoresistive RAM), STT-MRAM(spin-transfer torque MRAM), FRAM(ferroelectric RAM) 또는 RRAM(resistive RAM)로 구현될 수 있다.
각 SSD(410~450)의 구조와 동작은 실질적으로 동일 또는 유사하므로, 제1 SSD(410)의 구조와 동작이 대표적으로 설명된다.
도 4a를 참조하면, 본 발명의 실시예에 따른, 제1 SSD(410A)는 SSD 컨트롤러(411), 적어도 하나의 불휘발성 RAM(412A)과 적어도 하나의 불휘발성 메모리 장치(415), 예컨대 NAND-타입 플래시 메모리 장치(NAND)를 포함할 수 있다.
제1 SSD 컨트롤러(411)는, 컨트롤러(310)의 명령에 응답하여 제1 SSD(410A)의 동작을 제어할 수 있다.
제1 SSD 컨트롤러(411)는 제1메인 채널(CHA), 채널들(CH11~CH12), 및 NVRAM(412A)에 접속될 수 있다. 각 채널(CH11~CH12)에는 대응되는 불휘발성 메모리 장치들(NAND)이 접속될 수 있다. 예컨대, 불휘발성 메모리 장치들(416)은 채널(CH11)에 접속되고, 불휘발성 메모리 장치들(417)은 채널(CH12)에 접속될 수 있다. 도 4a에는 편의상 두 개의 채널들(CH11~CH12)만이 도시되나, 채널의 개수는 달라질 수 있다.
불휘발성 메모리 장치들(NAND) 각각은 NAND-타입 플래시 메모리 또는 매니지드 NAND(managed-NAND) 플래시 메모리 장치일 수 있으나 이에 한정되는 것은 아니다. 여기서, 각 채널(CH11~CH12)은 제1 SSD 컨트롤러(411)와 해당하는 불휘발성 메모리 장치들(416, 417) 사이에 존재하는 독립적인 데이터 패스를 의미할 수 있다.
도 4a의 실시예에서, NVRAM(412A)은 커패시터-백드(Capacitor-backed) DRAM으로 구현될 수 있다.
NVRAM(412A)은 DRAM(413) 및 커패시터(414A)를 포함할 수 있다. 커패시터(414A)는 외부로부터 인가되는 공급 전압을 수신하여 저장하였다가, 외부 공급 전압이 차단되면 DRAM(413)으로 전원을 공급할 수 있다. DRAM(413)은 외부 공급 전압이 중단되어도, 데이터를 유지할 수 있다.
제1 SSD 컨트롤러(411)는 각 채널(CH11~CH12)을 통해 불휘발성 메모리 장치들(NAND) 각각의 동작을 제어할 수 있다.
도 4b를 참조하면, 본 발명의 실시예에 따른, 제1 SSD(410B)는 SSD 컨트롤러(411), 적어도 하나의 불휘발성 RAM(412B)과 적어도 하나의 불휘발성 메모리 장치(415), 예컨대 NAND-타입 플래시 메모리 장치(NAND)를 포함할 수 있다. 도 4b의 제1 SSD(410B)의 구성 및 동작은 도 4a의 제1 SSD(410A)의 구성 및 동작과 유사하므로, 설명의 중복을 피하기 위하여 차이점 위주로 기술한다.
도 4b의 실시예에서, NVRAM(412B)은 배터리-백드(Battery-backed) DRAM으로 구현될 수 있다.
NVRAM(412B)은 DRAM(413) 및 배터리(414B)를 포함할 수 있다. 배터리(414B)는 외부 공급 전압이 차단되면 DRAM(413)으로 전원을 공급할 수 있다. 따라서, DRAM(413)은 외부 공급 전압이 중단되어도, 데이터를 유지할 수 있다.
도 4c를 참조하면, 본 발명의 실시예에 따른, 제1 SSD(410C)는 SSD 컨트롤러(411), 적어도 하나의 제1 타입 메모리(412C)와 적어도 하나의 제2 타입 메모리 장치(415), 예컨대 NAND-타입 플래시 메모리 장치(NAND)를 포함할 수 있다.
도 4c의 제1 SSD(410C)의 구성 및 동작은 도 4a의 제1 SSD(410A) 또는 도 4b의 제1 SSD(410B)의 구성 및 동작과 유사하므로, 설명의 중복을 피하기 위하여 차이점 위주로 기술한다.
도 4c의 실시예에서, 제1 타입 메모리(412C)는 제2 타입 메모리와 마찬가지로, NAND-타입 플래시 메모리 장치(NAND)로 구현될 수 있다.
NAND-타입 플래시 메모리 장치(NAND)는 2차원 메모리 셀 어레이 또는 3차원 메모리 셀 어레이를 포함할 수 있다.
3차원 메모리 셀 어레이는 실리콘 기판 위(on or above)에 배치된 액티브 영역을 갖는 메모리 셀들의 어레이의 하나 또는 그 이상의 물리적인 레벨들 내에서 모노리식하게(monolithically) 형성되고, 상기 메모리 셀들의 작동에 관련된 회로를 포함할 수 있다. 상기 회로는 상기 기판의 내부 또는 위(on or above)에 형성될 수 있다.
모노리식(monolithic) 이라는 용어는 어레이의 각 레벨의 레이어들(layers)이 상기 어레이의 각 하부 레벨(each underlying level)의 레이어들에 직접 증착 (directly deposited )되는 것을 의미한다.
3차원 메모리 셀 어레이는 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직으로 배향되는(vertically oriented) 수직 NAND 스트링을 포함할 수 있다. 상기 적어도 하나의 메모리 셀은 전하 트랩 레이어(charge trap layer)를 포함할 수 있다.
도 5a는 본 발명의 실시예에 따른 NAND-타입 플래시 메모리 장치(NAND)의 2차원 메모리 셀 어레이의 일 실시예를 나타내는 도면이다.
도 5a를 참조하면, 메모리 셀 어레이(20)는 다수의 NAND 메모리 셀 스트링들(20-1, 20-2, ..., 20-m; m은 자연수)을 포함한다. 다수의 NAND 메모리 셀 스트링들(20-1, 20-2, ..., 20-m) 각각은 직렬로 접속된 다수의 비휘발성 메모리 셀들(21) 및 더미 셀들(25)을 포함한다.
각 NAND 메모리 셀 스트링(20-1, 20-2, ..., 20-m)은 2차원적으로 동일한 평면(또는 레이어(layer))에 배치(또는 구현)될 수 있다.
NAND 메모리 셀 스트링(20-1)은 비트 라인(BL1)에 접속된 제1선택 트랜지스터(또는, 스트링 선택 트랜지스터(string selection transistor); ST1)와 공통 소스 라인(common source line(CSL))에 접속된 제2선택 트랜지스터(또는, 접지 선택 트랜지스터(ground selection transistor); ST2) 사이에 직렬로 접속된 다수의 비휘발성 메모리 셀들(21) 및 더미 셀들(25)을 포함한다.
제1선택 트랜지스터(ST1)의 게이트는 스트링 선택 라인(string selection line(SSL))에 접속되고, 다수의 비휘발성 메모리 셀들(21) 각각의 게이트는 다수의 워드 라인들(WL0~WL63) 각각에 접속되고, 제2선택 트랜지스터(ST2)의 게이트는 접지 선택 라인(ground selection line(GSL))에 접속된다. 또한, 더미셀들(25) 각각의 게이트는 해당 더미 워드라인(DWL0, DWL1)에 접속된다.
각 NAND 메모리 셀 스트링 (20-1, 20-2, ..., 20-m)의 구조는 NAND 메모리 셀 스트링(20-1)의 구조와 실질적으로 동일하다.
따라서 설명의 편의를 위하여, 도 1 내지 도 2b에는 64개의 워드 라인들 (WL0~WL63)과 2개의 더미 워드라인들(DWL0, DWL1)이 도시되어 있으나, 본 발명의 기술적 사상이 워드 라인들 및 더미 워드라인의 개수에 한정되는 것은 아니다.
또한, 도 1 내지 도 2b에는 더미 워드라인들(DWL0, DWL1) 각각이 64개의 워드 라인들 (WL0~WL63)의 가장자리에, 즉, 스트링 선택 라인과 접지 선택 라인에 각각 인접하게 위치하고 있으나, 더미 워드라인의 위치 역시 이에 한정되는 것은 아니다. 실시예에 따라, 더미 워드라인들(DWL0, DWL1)은 생략될 수 있다.
각 NAND 메모리 셀 스트링(20-1~20-m)에 포함된 다수의 비휘발성 메모리 셀들(21) 각각은 1-비트 또는 그 이상의 비트들을 저장할 수 있다.
따라서 다수의 비휘발성 메모리 셀들(21) 각각은 1-비트 또는 그 이상의 비트들을 저장할 있는 NAND 플래시 메모리 셀, 예컨대 SLC(single level cell) 또는 MLC(multi-level cell)로 구현될 수 있다.
도 5b는 본 발명의 실시예에 따른 NAND-타입 플래시 메모리 장치(NAND)의 3차원 메모리 셀 어레이의 일 실시예를 나타내는 도면이다.
도 5b를 참조하면, 각 NAND 메모리 셀 스트링(20'-1, 20'-2, ..., 20'-k; k는 자연수)은 3차원적으로 서로 다른 평면에 배치될 수 있다. 이때, 각 NAND 메모리 셀 스트링(20'-1, 20'-2, ..., 20'-k)을 액세스할 수 있는 액세스 회로는 공유될 수 있다.
도 5b에 도시된 바와 같이, 제1 NAND 메모리 셀 스트링(20'-1)은 제1레이어 (21-1)에 배치될 수 있고, 제2 NAND 메모리 셀 스트링(20'-2)은 제1레이어(21-1)와 서로 다른 제2레이어(21-2)에 배치될 수 있고, 제k NAND 메모리 셀 스트링(20'-k)은 제2레이어(21-2)와 서로 다른 레이어(21-k)에 3차원적으로 배치될 수 있다.
다수의 레이어들(21-1~21-k)은 웨이퍼 적층(stack), 칩 적층, 또는 셀 적층을 통하여 형성될 수 있다. 다수의 레이어들(21-1~21-k)은 TSV(through-silicon via), 펌프(bump) 또는 와이어 본딩(wire bonding)을 통하여 접속될 수 있다. 다수의 레이어들(21-1~21-k) 각각은 다수의 셀 스트링들을 포함한다.
제1레이어(21-1)에 구현되는 제1 NAND 메모리 셀 스트링(20'-1)은 다수의 선택 트랜지스터들(ST11과 ST21) 사이에 직렬로 접속된 다수의 비휘발성 메모리 셀들(예컨대 NAND 플래시 메모리 셀들, 21) 및 더미 셀들(25)을 포함한다.
제2레이어(21-2)에 구현되는 제2 NAND 메모리 셀 스트링(20'-2)은 다수의 선택 트랜지스터들(ST12과 ST22) 사이에 직렬로 접속된 다수의 비휘발성 메모리 셀(예컨대 NAND 플래시 메모리 셀들, 21) 및 더미 셀들(25)을 포함한다.
제k레이어(21-k)에 구현되는 제k NAND 메모리 셀 스트링(20'-k)은 다수의 선택 트랜지스터들(ST1k과 ST2k) 사이에 직렬로 접속된 복수의 비휘발성 메모리 셀들(예컨대 NAND 플래시 메모리 셀들, 21) 및 더미 셀들(25)을 포함한다.
도 5b에 도시된 바와 같이, 각 NAND 메모리 셀 스트링(20'-1, 20'-2, ..., 20'-k)은 다수의 워드 라인들(WL0-WL63), 공통 소스 라인(CSL), 및 비트 라인(BL1)을 공유할 수 있다. 즉, 각 레이어(21-1~21-k)에서 대응되는 위치에 구현된 각 NAND 메모리 셀 스트링은 페이지 버퍼 & 감지 증폭기 블록(70)에 구현된 각 페이지 버퍼(71-1~71-m)에 접속될 수 있다.
도 6는 본 발명의 일 실시 예에 따른 데이터 저장 장치(300)의 동작을 설명하기 위한 도면이다. 도 6의 데이터 저장 장치의 동작은 도 1 내지 도 4c를 참조하여 상술한 본 발명의 일 실시 예에 따른 데이터 저장 장치(300)에 의해 수행될 수 있다. 도 6의 실시예에서는, 편의를 위하여 SSD의 수(N)는 4인 것으로 가정한다.
도 1 내지 도 6를 참조하면, 컨트롤러(310)는 호스트(200)로부터 복수의 쓰기 요청들을 수신할 수 있다. 복수의 쓰기 요청은 쓰기 요청 큐(Request Queue)에 저장될 수 있다. 쓰기 요청 큐(Request Queue)는 제1 타입 메모리(예컨대, NVRAM)(412, 422, 452)에 구현될 수도 있고, 별도로 구현될 수도 있다. 도 6 내지 도 8에서 쓰기 요청 큐(Request Queue) 내의 각종 모양(별 모양, 세모 모양, 동그라미 모양, 육각형 모양 등)은 호스트(200)로부터 복수의 쓰기 요청들 각각에 상응하는 데이터 세그먼트를 나타낸다.
컨트롤러(310)는 제1 쓰기 요청에 상응하는 제1 데이터 세그먼트(별모양)를
제1 SSD(410)에 저장한다. 제1 SSD(410)는 제1 데이터 세그먼트(별모양)를 제1 SSD(410)의 제1 타입 메모리(예컨대, NVRAM)(441)에 저장할 수 있다.
컨트롤러(310)는 또한, 제1 데이터 세그먼트(별모양)의 이중화를 위하여 제1 데이터 세그먼트(별모양)의 이중화 데이터를 제N SSD(440)에 저장한다. 본 실시예에서, N은 4인 것으로 가정한다. 컨트롤러(310)는 제1 데이터 세그먼트(별모양)를 제4 SSD(440)의 제1 타입 메모리(예컨대, NVRAM)(441)에 저장할 수 있다. 제1 데이터 세그먼트(별모양)의 이중화 데이터는 제1 데이터 세그먼트와 동일한 데이터일 수 있으나, 이에 한정되지 않는다.
상기와 같이, 컨트롤러(310)는 제1 데이터 세그먼트(별모양)를 제1 SSD(410)와 제4 SSD(440)의 제1 타입 메모리(412, 442) 각각에 저장함으로써, 제1 제1 데이터 세그먼트(별모양)에 대한 제1 단계 이중화를 수행할 수 있다.
실시예에 따라, 제1 데이터 세그먼트(별모양)를 제1 SSD(410)의 제1 타입 메모리(412)에 저장하는 동작과, 제1 데이터 세그먼트(별모양)를 제4 SSD(440)의 제1 타입 메모리(442)에 저장하는 동작은 병렬적으로 수행될 수도 있고, 순차적으로 수행될 수 있다.
컨트롤러(310)가 제1 데이터 세그먼트(별모양)를 제1 SSD(410)에 저장 요청할 때 사용하는 명령과 제1 데이터 세그먼트(별모양)를 제4 SSD(440)에 저장 요청할 때 사용하는 명령은 상호 같을 수도 있고, 다를 수 있다.
예컨대, 컨트롤러(310)가 제1 데이터 세그먼트(별모양)를 제1 SSD(410)에 저장할 때는 제1 데이터 세그먼트(별모양)의 제2 타입 메모리(413)로의 저장(flush) 여부를 지정하지 않을 수 있다. 이에 반해, 컨트롤러(3100가 제1 데이터 세그먼트(별모양)의 이중화 데이터를 제4 SSD(440)에 저장할 때는 제1 데이터 세그먼트(별모양)를 제2 타입 메모리로 저장(flush)하지 않도록 지정할 수 있다.
도 9a는 컨트롤러(310)가 SSD로 인가하는 새로운 명령의 일 예를 나타낸다.
WriteNV(LBA, DATA, Flush_manually) 명령은 컨트롤러(310)가 SSD(410, 420, 430, 440)로 인가하는 명령으로서, 괄호 속의 인자는 명령어 인자이다.
WriteNV(LBA, DATA, Flush_manually) 명령은 데이터(DATA)를 제1 타입 메모리의 지정 주소(LBA)에 쓰라는 명령일 수 있다.
이 때, 'Flush_manually' 인자를 이용하여, 제1 타입 메모리에서 제2 타입 메모리로 플러시(flush) 여부를 설정할 수 있다.
예컨대, 'Flush_manually'의 값이 '0'이면 컨트롤러(310)가 제1 타입 메모리에 저장된 데이터(DATA)의 제2 타입 메모리로의 플러시 여부를 지정하지 않는 명령일 수 있다. 따라서, SSD는, 제1 타입 메모리에 저장된 데이터(DATA)의 제2 타입 메모리로의 플러시 여부 및 시점을 컨트롤러(310)의 개입없이 자체적으로 결정할 수 있다.
WriteNV(LBA, DATA, Flush_manually) 명령은 컨트롤러(310)가 SSD로 하여금 데이터(DATA)를 제1 타입 메모리의 지정 주소(LBA)에 쓰라는 명령일 수 있다.
한편 'Flush_manually'의 값이 '1'이면 컨트롤러(310)가 제1 타입 메모리에 저장된 데이터(DATA)를 제2 타입 메모리로 플러시 하지 않도록 지정하는 명령일 수 있다. 따라서, SSD는, 컨트롤러(310)로부터 별도의 플러시 명령 없이는 제1 타입 메모리에 저장된 데이터(DATA)를 제2 타입 메모리로 플러시하지 않는다.
DeleteNV(LBA) 명령은 컨트롤러(310)가 SSD의 제1 타입 메모리에 저장된 지정 주소(LBA)의 데이터를 삭제하라는 명령일 수 있다.
실시예에 따라, 컨트롤러(310)가 제1 데이터 세그먼트(별모양)를 제1 SSD(410)에 저장할 때는 'Flush_manually'의 값을 '0'으로 설정하고, 컨트롤러(310)가 제1 데이터 세그먼트(별모양)를 제4 SSD(440)에 저장할 때는 'Flush_manually'의 값을 '1'로 설정할 수 있다.
이 경우, 제1 SSD(410)는 제1 SSD(410)의 제1 타입 메모리(412)에 저장된 제1 데이터 세그먼트(별모양)를 임의의 시점에 제2 타입 메모리(415)에 저장할 수 있다. 제1 데이터 세그먼트(별모양)가 제2 타입 메모리(415)에 저장되면, 제1 타입 메모리(412)의 제1 데이터 세그먼트(별모양)는 삭제될 수 있다.
한편, 제4 SSD(440)는 컨트롤러(310)로부터 별도의 명령(혹은 요청)이 없는 한 제4 SSD(440)의 제1 타입 메모리(442)에 저장된 제1 데이터 세그먼트(별모양)를 제2 타입 메모리(445)에 저장하지 않을 수 있다.
컨트롤러(310)는 제2 쓰기 요청에 상응하는 제2 데이터 세그먼트(세모 모양)에 대하여 제1 데이터 세그먼트(별모양)와 유사하게 처리할 수 있다.
컨트롤러(310)는 제2 쓰기 요청에 상응하는 제2 데이터 세그먼트(세모 모양)를 제2 SSD(420)의 제1 타입 메모리(422)에 저장한다.
컨트롤러(310)는 또한, 제2 데이터 세그먼트(세모 모양)를 제4 SSD(440)의 제1 타입 메모리(442)에 저장한다. 예컨대, 컨트롤러(310)는 제2 데이터 세그먼트(세모 모양)를 제2 SSD(420)와 제4 SSD(440)의 제1 타입 메모리(422, 442) 각각에 저장함으로써, 제2 데이터 세그먼트(세모 모양)에 대한 제1 단계 이중화를 수행한다.
실시예에 따라, 제2 데이터 세그먼트(세모 모양)를 제2 SSD(420)의 제1 타입 메모리(422)에 저장하는 동작과, 제2 데이터 세그먼트(세모 모양)를 제4 SSD(440)의 제1 타입 메모리(442)에 저장하는 동작은 병렬적으로 수행될 수도 있고, 순차적으로 수행될 수 있다.
컨트롤러(310)는 제3 쓰기 요청에 상응하는 제3 데이터 세그먼트(동그라미 모양)에 대하여 제1 데이터 세그먼트(별모양) 및 제2 데이터 세그먼트(세모 모양)과 유사하게 처리할 수 있다.
예컨대, 컨트롤러(310)는 제3 데이터 세그먼트(동그라미 모양)를 제3 SSD(430)의 제1 타입 메모리(432)에 저장한다. 컨트롤러(310)는 또한, 제3 데이터 세그먼트(동그라미 모양)를 제4 SSD(440)의 제1 타입 메모리(442)에 저장한다. 예컨대, 컨트롤러(310)는 제3 데이터 세그먼트(동그라미 모양)를 제3 SSD(430)와 제4 SSD(440)의 제1 타입 메모리(432, 442) 각각에 저장함으로써, 제3 데이터 세그먼트(동그라미 모양)에 대한 제1 단계 이중화를 수행한다.
실시예에 따라, 제3 데이터 세그먼트(동그라미 모양)를 제3 SSD(430)의 제1 타입 메모리(432)에 저장하는 동작과, 제3 데이터 세그먼트(동그라미 모양)를 제4 SSD(440)의 제1 타입 메모리(442)에 저장하는 동작은 병렬적으로 수행될 수도 있고, 순차적으로 수행될 수 있다.
제1 단계 이중화는 레이드 1(RAID 1) 이중화일 수 있으나, 이에 한정되는 것은 아니다.
컨트롤러(310)는 복수의 SSD에 저장된 데이터들이 미리 정해진 데이터 그룹을 형성하면 이중화 데이터가 저장된 SSD, 즉 패리티 SSD(예컨대, 제4 SSD(440))에, 패리티 생성 및 저장 명령을 인가할 수 있다.
미리 정해진 데이터 그룹이란, 레이드 스트라이프(RAID Stripe)를 의미할 수 있다. 예컨대, 컨트롤러(310)는 제1 내지 제N SSD에 저장된 데이터들로 하나의 레이드 스트라이프(RAID Stripe)가 완성되면, 이중화 데이터가 저장된 SSD, 즉 패리티 SSD에, 패리티 생성 및 저장 명령을 인가할 수 있다.
도 9b는 컨트롤러(310)가 제4 SSD(440)로 인가하는 패리티 생성 및 저장 명령의 일 예를 나타내나, 이에 한정되는 것은 아니다.
Calculate_Parity_And_Write1(DataSize, StartLBA, EndLBA, DestinationLBA) 명령은 컨트롤러(310)가 SSD로 인가하는 명령으로서, 제1 타입 메모리의 시작 주소(StartLBA)부터 끝 주소(EndLBA)까지의 지정된 데이터 크기(DataSize)를 갖는 데이터들에 대하여 패리티를 생성하여 목적지 주소(DestinationLBA)에 쓰라는 명령일 수 있다.
즉, Calculate_Parity_And_Write1(DataSize, StartLBA, EndLBA, DestinationLBA) 명령은 패리티 데이터를 계산할 데이터 세그먼트의 LBA시작 주소(StartLBA)와 끝 주소(EndLBA)를 지정하고, 생성된 패리티 데이터가 저장될 영역의 LBA 주소값(DestinationLBA)을 지정한다. 데이터 세그먼트가 연속적인 LBA에 저장되는 경우에 이 명령이 사용될 수 있다.
Calculate_Parity_And_Write2(DataSize, FirstLBA, SecondLBA, ... , LastLBA, DestinationLBA) 명령은 컨트롤러(310)가 SSD로 인가하는 명령으로서, 제1 타입 메모리의 제1 주소(FirstLBA)부터 마지막 주소(LastLBA)까지의 지정된 데이터 크기(DataSize)를 갖는 데이터들에 대하여 패리티를 생성하여 목적지 주소(DestinationLBA)에 쓰라는 명령일 수 있다.
즉, Calculate_Parity_And_Write2(DataSize, FirstLBA, SecondLBA, ... , LastLBA, DestinationLBA) 명령은 패리티 데이터를 계산하기 위한 데이터 사이즈와 데이터 세그먼트들 각각의 주소(LBA)를 지정한다. 데이터 세그먼트가 연속적이지 않은 LBA에 저장되는 경우에 이 명령이 사용될 수 있다.
Calculate_Parity_And_Write3(DataSize, StartLBA, Offset, DestinationLBA) 명령은 컨트롤러(310)가 SSD로 인가하는 명령으로서, 제1 타입 메모리의 시작 주소(StartLBA)부터 지정 오프셋(Offset)까지의 지정된 데이터 크기(DataSize)를 갖는 데이터들에 대하여 패리티를 생성하여 목적지 주소(DestinationLBA)에 쓰라는 명령일 수 있다.
즉, Calculate_Parity_And_Write3(DataSize, StartLBA, Offset, DestinationLBA) 명령은 데이터 사이즈(DataSize)를 비롯해, 시작 주소 (StartLBA)와 함께 오프셋(Offset)만 지정하여 패리티 데이터를 계산하는데 사용될 데이터의 영역을 지정한다.
패리티 SSD(440)는 패리티 생성 및 저장 명령에 응답하여 제1 타입 메모리(442)에 저장된 이중화 데이터들, 즉 제1 내지 제3 데이터 세그먼트(별모양, 세모 모양, 동그라미 모양)에 기초하여 패리티 데이터(parity data)(오각형 모양)를 생성하고, 생성된 패리티 데이터를 제2 타입 메모리(445)에 저장할 수 있다.
패리티 SSD(440)는 제1 내지 제3 데이터 세그먼트(별모양, 세모 모양, 동그라미 모양)을 부정논리합(XOR)함으로써 패리티 데이터(오각형 모양)를 생성할 수 있으나, 이에 한정되는 것은 아니다.
패리티 데이터(오각형 모양)가 제2 타입 메모리(445)에 저장되면, 패리티 SSD(440)는 제1 타입 메모리(442)에 저장된 이중화 데이터들, 즉 제1 내지 제3 데이터 세그먼트(별모양, 세모 모양, 동그라미 모양)를 삭제할 수 있다.
상술한 바와 같이, 제1 내지 제3 데이터 세그먼트(별모양, 세모 모양, 동그라미 모양)의 패리티 데이터(오각형 모양)를 제2 타입 메모리(445)에 저장함으로써, 제2 단계 이중화가 이루어질 수 있다.
제2 단계 이중화는 레이드 5/6(RAID 5/6) 이중화일 수 있으나, 이에 한정되는 것은 아니다.
도 6의 실시예에 따르면, 레이드 스트라이프를 구성하는 각 데이터 세그먼트는 각 SSD(410, 420, 430)의 제1 타입 메모리(NVRAM)에 우선적으로 저장된다.
패리티 SSD(440)에서도 각 데이터 세그먼트(즉, 각 데이터 세그먼트의 이중화 데이터) 역시 우선적으로 제1 타입 메모리(NVRAM)에 저장된다. 패리티 SSD(440)의 제1 타입 메모리(442)에 저장된 데이터는 컨트롤러(310)로부터 패리티 생성 및 저장 명령이 인가된 시점에 XOR 계산을 통해 패리티 데이터가 생성된 다음, 제2 타입 메모리(445)에 최종적으로 저장된다.
제1 내지 제3 SSD(410, 420, 430)의 제1 타입 메모리(NVRAM)에 저장된 데이터의 경우, 제2 타입 메모리에 플러시(Flush)되는 시점은 다양할 수 있다. 실시예에 따라, 제1 타입 메모리(NVRAM)에 저장된 후 즉시 제2 타입 메모리로 플러시될 수도 있고, 제1 타입 메모리(NVRAM)에 저장된 후, 일정 시간이 지나거나, 특정 이벤트(Event)가 발생한 경우, 제2 타입 메모리로 플러시될 수도 있다. 특정 이벤트는 해당 SSD의 파워 페일(Power Failure), 버퍼(Buffer)가 특정 임계치(Threshold)를 넘는 경우, 가비지 콜렉션(Garbage Collection) 등이 있을 수 있으나, 이에 한정되는 것은 아니다.
도 6의 실시예에서는, 패리티 데이터를 생성하기 전의 모든 데이터 세그먼트(예컨대, 제1 내지 제3 데이터 세그먼트(별모양, 세모 모양, 동그라미 모양)의 이중화 데이터도 제4 SSD(440)의 제1 타입 메모리(442)에 저장한 후, 컨트롤러(310)가, 제4 SSD(440)로 패리티 생성 및 저장 명령를 인가한다.
도 7은 본 발명의 일 실시 예에 따른 데이터 저장 장치(300)의 동작을 설명하기 위한 도면이다. 도 7의 데이터 저장 장치의 동작은 도 1 내지 도 4c를 참조하여 상술한 본 발명의 일 실시 예에 따른 데이터 저장 장치(300)에 의해 수행될 수 있다. 도 7의 실시예에서는, 편의를 위하여 SSD의 수는 4인 것으로 가정한다. 도 7의 실시예는 도 6의 실시예와 그 동작이 유사하므로, 차이점 위주로 기술한다.
도 7의 실시예에서는, 컨트롤러(310)는 제1 내지 제3 데이터 세그먼트(별모양, 세모 모양, 동그라미 모양)의 이중화 데이터를 모두 제4 SSD(440)의 제1 타입 메모리(442)에 저장하는 것이 하니라, 최신 패리티 데이터 만을 제1 타입 메모리(442)에 저장한다.
예컨대, 컨트롤러(310)는 제1 데이터 세그먼트(별모양)에 대해서는 제4 SSD(440)의 제1 타입 메모리(442)에 저장한다. 그러나, 다음 데이터 세그먼트(세모 모양, 동그라미 모양)에 대해서는 이중화 데이터(세모 모양, 동그라미 모양)를 제4 SSD(440)의 제1 타입 메모리(442)에 저장하는 것이 아니라, 패리티 데이터만 제4 SSD(440)의 제1 타입 메모리(442)에 저장한다.
이를 위하여, 컨트롤러(310)는 제4 SSD(440)로 제2 데이터 세그먼트(세모 모양)와 함께, 패리티 생성 및 저장 명령을 제4 SSD(440)로 인가할 수 있다. 예컨대, 컨트롤러(310)는 제2 데이터 세그먼트(세모 모양)와 함께, 패리티 데이터 생성에 필요한 영역을 지정하여 제4 SSD(440)로 인가할 수 있다.
제4 SSD(440)는 컨트롤러(310)로부터 수신한 제2 데이터 세그먼트(세모 모양)와, 제1 타입 메모리(442)에 기 저장된 제1 데이터 세그먼트(별모양)에 기초하여 부분 패리티 데이터(네모 모양)를 생성하고, 생성된 부분 패리티 데이터(네모 모양)를 제1 타입 메모리(442)에 저장할 수 있다.
부분 패리티 데이터(네모 모양)가 제1 타입 메모리(442)에 저장되면, 패리티 SSD(440)는 제1 타입 메모리(442)에 저장된 이중화 데이터, 즉 제1 데이터 세그먼트(별모양)를 삭제할 수 있다.
컨트롤러(310)는 또한, 제4 SSD(440)로 제3 데이터 세그먼트(동그라마 모양)와 함께, 패리티 생성 및 저장 명령을 제4 SSD(440)로 인가할 수 있다.
예컨대, 컨트롤러(310)는 제3 데이터 세그먼트(동그라미 모양)와 함께, 패리티 데이터 생성에 필요한 영역을 지정하여 제4 SSD(440)로 인가할 수 있다.
도 9c는 컨트롤러(310)가 제4 SSD(440)로 데이터 세그먼트를 포함하여 인가하는 패리티 생성 및 저장 명령의 일 예를 나타내나, 이에 한정되는 것은 아니다.
Write_and_Calc_Parity1(Data, DataSize, StartLBA, EndLBA, DestinationLBA) 명령은 컨트롤러(310)가 데이터 세그먼트와 함께 SSD로 인가하는 명령으로서, 새로운 데이터(Data)와 제1 타입 메모리의 시작 주소(StartLBA)부터 끝 주소(EndLBA)까지의 지정된 데이터 크기(DataSize)를 갖는 데이터들에 대하여 패리티를 생성하여 목적지 주소(DestinationLBA)에 쓰라는 명령일 수 있다.
패리티 SSD(440)에 패리티 데이터를 생성할 이중화 데이터가 모두 저장되어 있지는 않은 경우에 이 명령이 사용될 수 있다. 예컨대, 패리티 데이터를 생성할 이중화 데이터 중 일부만 패리티 SSD(440)에 기 저장되어 있는 경우, 패리티 데이터를 생성할 새로운(추가적인) 데이터와 함께, 패리티 SSD(440)에 기 저장된 데이터를 지정하기 위한 명령이다.
Write_and_Calc_Parity2(Data, DataSize, FirstLBA, SecondLBA, ... , LastLBA, DestinationLBA) 명령은 Calculate_Parity_And_Write2(DataSize, FirstLBA, SecondLBA, ... , LastLBA, DestinationLBA) 명령과 유사하지만, 새로운 데이터(Data)를 더 포함한다는 점에서 차이가 있는 명령이다.
Write_and_Calc_Parity2(DataSize, StartLBA, Offset, DestinationLBA) 명령 역시 Calculate_Parity_And_Write3(DataSize, StartLBA, Offset, DestinationLBA) 명령과 유사하지만, 새로운 데이터(Data)를 더 포함한다는 점에서 차이가 있는 명령이다.
컨트롤러(310)가 제3 데이터 세그먼트(동그라미 모양)와 함께, 패리티 데이터 생성에 필요한 영역을 지정하여 제4 SSD(440)로 인가하면, 제4 SSD(440)는 컨트롤러(310)로부터 수신한 제3 데이터 세그먼트(동그라미 모양)와, 제1 타입 메모리(442)에 기 저장된 부분 패리티 데이터(네모 모양)에 기초하여 패리티 데이터(오각형 모양)를 생성하고, 생성된 패리티 데이터(오각형 모양)를 제2 타입 메모리(445)에 저장할 수 있다.
패리티 데이터(오각형 모양)가 제2 타입 메모리(445)에 저장되면, 패리티 SSD(440)는 제1 타입 메모리(442)에 저장된 부분 패리티 데이터(네모 모양)를 삭제할 수 있다.
상술한 도 7의 실시예에 따르면, 패리티 SSD(440)는 기존 데이터 세그먼트를 이중으로 저장하지 않고, 최신 패리티 데이터만을 저장할 수 있다. 따라서, 제1 타입 메모리(442)의 저장 공간이 절약될 수 있다.
도 8은 본 발명의 일 실시 예에 따른 데이터 저장 장치(300)의 동작을 설명하기 위한 도면이다. 도 8의 데이터 저장 장치의 동작은 도 1 내지 도 4c를 참조하여 상술한 본 발명의 일 실시 예에 따른 데이터 저장 장치(300)에 의해 수행될 수 있다. 도 8의 실시예에서는, 편의를 위하여 SSD의 수는 4인 것으로 가정한다. 도 8의 실시예는 도 7의 실시예와 그 동작이 유사하므로, 차이점 위주로 기술한다.
도 8의 실시예에서는, 컨트롤러(310)는 쓰기 요청 큐에 쓰기 요청이 많이 쌓이는 경우, 컨트롤러(310)가 이중화해야 할 데이터들로부터 패리티 데이터를 생성하여 패리티 SSD(440)로 저장한다.
예컨대, 도 7의 실시예에서는, 컨트롤러(310)는 일부 데이터 세그먼트(별모양)의 이중화 데이터를 제4 SSD(440)의 제1 타입 메모리(442)에 저장한 후에는, 최신 패리티 데이터 만을 생성하여 제1 타입 메모리(442)에 저장한다.
이에 반해, 도 8의 실시예에서는, 컨트롤러(310)는 제1 및 제2 데이터 세그먼트(별모양, 세모 모양)에 대해서 부분 패리티 데이터(네모 모양)을 생성하여 제4 SSD(440)의 제1 타입 메모리(442)에 저장한다.
그리고, 다음 데이터 세그먼트(동그라미 모양)에 대해서는 제4 SSD(440)로 제3 데이터 세그먼트(동그라미 모양)와 함께, 패리티 생성 및 저장 명령을 제4 SSD(440)로 인가할 수 있다.
예컨대, 컨트롤러(310)는 3 데이터 세그먼트(동그라미 모양)와 함께, 패리티 데이터 생성에 필요한 영역을 지정하여 제4 SSD(440)로 인가할 수 있다.
도 9d는 컨트롤러(310)가 제4 SSD(440)로 데이터 세그먼트를 포함하여 인가하는 패리티 생성 및 저장 명령의 일 예를 나타내나, 이에 한정되는 것은 아니다.
Calculate_Parity_And_Write1(DataSize, StartLBA, EndLBA, DestinationLBA) 명령은 컨트롤러(310)가 패리티 SSD(440)에 인가하는 명령의 다른 예이다. Calculate_Parity_And_Write1(DataSize, StartLBA, EndLBA, DestinationLBA) 명령은 컨트롤러(310)가 패리티 SSD(440)에 데이터를 이중화하지 않고, 패리티 데이터의 업데이트를 저장하는 경우에 활용할 수 있는 명령이다. Calculate_Parity_And_Write1(DataSize, StartLBA, EndLBA, DestinationLBA) 명령은 패리티 SSD(440)의 제1 타입 메모리(442)에 이미 저장된 데이터 세그먼트 혹은 부분 패리티 데이터의 LBA 주소(PrevLBA)를 지정하고, 새로운 데이터(Data)와 데이터 사이즈(DataSize), 저장될 데이터의 LBA주소값(DataLBA)을 지정한다.
제4 SSD(440)는 Calculate_Parity_And_Write1(DataSize, StartLBA, EndLBA, DestinationLBA) 명령에 응답하여 패리티 SSD(440)의 제1 타입 메모리(442)에 이미 저장된 데이터 세그먼트 혹은 부분 패리티 데이터와 새로운 데이터(Data)를 이용하여 패리티 데이터를 생성하고, 생성된 패리티 데이터를 LBA주소값(DataLBA)에 저장할 수 있다.
예컨대, 제4 SSD(440)는 제1 타입 메모리(442)로부터 기존 LBA 주소(PrevLBA)에 저장된 데이터를 읽어와서 새로운 데이터(Data)와 데이터 사이즈(DataSize)만큼 패리티 데이터를 계산하고, LBA주소값(DataLBA)에 저장하게 된다. 실시예에 따라, LBA주소값(DataLBA)과 기존 LBA 주소(PrevLBA)는 동일할 수 있다.
도 8의 실시예에 따르면, 이중화 데이터의 일부를 패리티 SSD(440)의 제1 타입 메모리(442)에 저장할 필요성이 없어서, 제1 타입 메모리(NVRAM)에 대한 저장공간 오버헤드를 줄일 수 있다.
본 발명의 실시예에 따르면, 데이터 저장 장치(300)는 SSD 내의 제1 타입 메모리(예컨대, NVRAM)를 이중화 데이터(예컨대, 제1 단계 이중화 데이터)를 저장하기 위한 저장공간으로 활용한다. 이에 따라, 이중화 데이터를 저장하기 위한 별도의 NVRAM, 즉, SSD 외의 별도의 NVRAM이 불필요하다. 따라서, 본 발명의 실시예에 따르면, 시스템의 밀도(density)를 높일 수 있다.
또한, 데이터 이중화를 위한 별도의 메모리 장치(예컨대, NVRAM 장치)가 불필요하므로, 메모리 장치를 장착하기 위한 슬롯(slot)과 같은 H/W 자원을 줄일 수 있다. 따라서, 파워 절감 및 비용 절감 효과를 얻을 수 있다.
도 10는 본 발명의 일 실시 예에 따른 데이터 이중화 방법을 설명하기 위한 플로우이다. 도 10의 실시예에 따른 데이터 이중화 방법은 도 1 내지 도 4c를 참조하여 상술한 본 발명의 일 실시 예에 따른 데이터 저장 장치(300)에 의해 수행될 수 있다. 도 10의 실시예에서는, 편의를 위하여 SSD의 수(N)는 5인 것으로 가정한다.
도 1 내지 도 4c 및 도 10를 참조하면, 컨트롤러(310)는 호스트(200)로부터 복수의 쓰기 요청들(REQ1~REQk, k는 2이상의 정수)을 수신할 수 있다. 쓰기 요청들(REQ1~REQk)은 쓰기 요청 큐에 순차적으로 저장될 수 있다.
컨트롤러(310)는 호스트(200)로부터 제1 쓰기 요청(REQ1)를 수신하고(S101-1), 제1 쓰기 요청(REQ1)에 해당하는 제1 데이터 세그먼트(DAT1)를 먼저 버퍼(360)에 저장한다(S103-1). 그리고, 컨트롤러(310)는 제1 쓰기 요청(REQ1)에 응답하여, 제1 데이터 세그먼트(DAT1)를 제1 SSD(410)에 저장한다(S105-1). 제1 SSD(410)는 제1 데이터 세그먼트(DAT1)를 제1 SSD(410)의 제1 타입 메모리(예컨대, NVRAM)(412)에 저장할 수 있다.
컨트롤러(310)는 또한, 제1 데이터 세그먼트(DAT1)의 이중화 데이터(즉, 복사본)을 제N SSD(450)에 저장한다(S107-1). 제N SSD(450)는 제1 데이터 세그먼트(DAT1)를 제N SSD(450)의 제1 타입 메모리(예컨대, NVRAM)(452)에 저장할 수 있다.
상기와 같이, 컨트롤러(310)는 제1 데이터 세그먼트(DAT1)를 제1 SSD(410)와 제N SSD(450)의 제1 타입 메모리(412, 452) 각각에 저장함으로써, 제1 데이터 세그먼트(DAT1)에 대한 제1 단계 이중화를 수행할 수 있다.
실시예에 따라, 제1 데이터 세그먼트(DAT1)를 제1 SSD(410)의 제1 타입 메모리(412)에 저장하는 동작(S105-1)과, 제1 데이터 세그먼트(DAT1)를 제N SSD(450)의 제1 타입 메모리(452)에 저장하는 동작(S107-1)은 병렬적으로 수행될 수도 있고, 순차적으로 수행될 수 있다.
컨트롤러(310)가 제1 데이터 세그먼트(DAT1)를 제1 SSD(410)에 저장 요청할 때 사용하는 명령과 제1 데이터 세그먼트(DAT1)를 패리티 SSD인 제N SSD(450)에 저장 요청할 때 사용하는 명령은 상호 같을 수도 있고, 다를 수 있다.
제1 데이터 세그먼트(DAT1)를 저장하기 위하여 컨트롤러(310)는 도 9a에 도시된 명령(예컨대, WriteNV)을 해당 SSD로 인가할 수 있다.
컨트롤러(310)는 상기 호스트(200)로 상기 제1 쓰기 요청(REQ1)에 대한 응답(RESP1)을 전송한다(S109-1).
컨트롤러(310)는 호스트(200)로부터 수신한 제2 쓰기 요청(REQ2)에 대하여 상기 제1 쓰기 요청(REQ1)과 유사하게 처리할 수 있다. 컨트롤러(310)는 호스트(200)로부터 제2 쓰기 요청(REQ2)를 수신하고(S101-2), 제2 쓰기 요청(REQ2)에 해당하는 제2 데이터 세그먼트(DAT2)를 먼저 버퍼(360)에 저장한다(S103-2).
그리고, 컨트롤러(310)는 제2 쓰기 요청(REQ2)에 응답하여, 제2 데이터 세그먼트(DAT2)를 제2 SSD(420)에 저장한다(S105-2).
컨트롤러(310)는 또한, 제2 데이터 세그먼트(DAT2)를 제N SSD(450)의 제1 타입 메모리(452)에 저장한다(S107-2). 예컨대, 컨트롤러(310)는 제2 데이터 세그먼트(DAT2)를 제2 SSD(420)와 제N SSD(440)의 제1 타입 메모리(422, 452) 각각에 저장함으로써, 제2 데이터 세그먼트(DAT2)에 대한 제1 단계 이중화를 수행한다.
실시예에 따라, 제2 데이터 세그먼트(DAT2)를 제2 SSD(420)의 제1 타입 메모리(422)에 저장하는 동작(S105-2)과, 제2 데이터 세그먼트(DAT2)를 제N SSD(450)의 제1 타입 메모리(452)에 저장하는 동작(S107-2)은 병렬적으로 수행될 수도 있고, 순차적으로 수행될 수 있다.
컨트롤러(310)는 상기 호스트(200)로 상기 제2 쓰기 요청(REQ2)에 대한 응답(RESP2)을 전송한다(S109-2).
컨트롤러(310)는 상기 호스트(200)로부터 수신된 복수의 쓰기 요청에 상응하는 데이터 세그먼트들이 미리 정해진 데이터 그룹을 구성할 때까지, 다른 쓰기 요청(예컨대, REQ3~REQk)을 제1 및 제2 쓰기 요청(REQ1, REQ2)와 같이 처리할 수 있다.
도시되지는 않았지만, 컨트롤러(310)는 호스트(200)로부터 수신한 제3 쓰기 요청(REQ3)에 대해서도, 상기 제1 및 제2 쓰기 요청(REQ1, REQ2)과 유사하게 처리할 수 있다.
또한, 컨트롤러(310)는 호스트(200)로부터 수신한 제k 쓰기 요청(REQk)에 대해서도, 상기 제1 및 제2 쓰기 요청(REQ1, REQ2)과 유사하게 처리할 수 있다.
예컨대, 컨트롤러(310)는 호스트(220)로부터 제k 쓰기 요청(REQk)를 수신하고(S101-k), 제k 쓰기 요청(REQk)에 해당하는 제k 데이터 세그먼트(DATk)를 먼저 버퍼(360)에 저장한다(S103-k).
그리고, 컨트롤러(310)는 제k 쓰기 요청(REQk)에 응답하여, 제k 데이터 세그먼트(DATk)를 제k SSD(440)의 제1 타입 메모리(442)에 저장한다. 컨트롤러(310)는 또한, 제k 데이터 세그먼트(DATk)를 제N SSD(450)의 제1 타입 메모리(452)에 저장한다. 예컨대, 컨트롤러(310)는 제k 데이터 세그먼트(DATk)를 제k SSD(440)와 제N SSD(450)의 제1 타입 메모리 각각에 저장함으로써, 제k 데이터 세그먼트(DATk)에 대한 제1 단계 이중화를 수행한다.
실시예에 따라, 제k 데이터 세그먼트(DATk)를 제k SSD(440)의 제1 타입 메모리(442)에 저장하는 동작(S105-k)과, 제k 데이터 세그먼트(DATk)를 제N SSD(450)의 제1 타입 메모리(452)에 저장하는 동작(S107-k)은 병렬적으로 수행될 수도 있고, 순차적으로 수행될 수 있다.
컨트롤러(310)는 상기 호스트(200)로 제k 쓰기 요청(REQk)에 대한 응답(RESPk)을 전송한다.
여기서, k는 N-1일 수 있으나, 이에 한정되는 것은 아니다. 제1 단계 이중화는 레이드 1(RAID 1) 이중화일 수 있다.
컨트롤러는 복수의 SSD(410~440)에 저장된 데이터들이 미리 정해진 데이터 그룹을 형성하면 이중화 데이터가 저장된 SSD, 즉 패리티 SSD(450)에, 패리티 생성 및 저장 명령(Parity_write_NV)을 인가할 수 있다(S110).
컨트롤러(310)가 제N SSD(450)로 인가하는 패리티 생성 및 저장 명령(Parity_write_NV)은 도 9b에 도시된 명령들 중 하나일 수 있다.
패리티 SSD(450)는 패리티 생성 및 저장 명령(Parity_write_NV)에 응답하여 제1 타입 메모리(452)에 저장된 이중화 데이터들, 즉 제1 내지 제k 데이터 세그먼트(DAT1~DATk)에 기초하여 패리티 데이터(parity data)를 생성하고, 생성된 패리티 데이터를 제1 타입 메모리(452) 또는 제2 타입 메모리(455)에 저장할 수 있다.
패리티 SSD(450)는 제1 내지 제k 데이터 세그먼트(DAT1~DATk)을 부정논리합(XOR)함으로써 패리티 데이터를 생성할 수 있으나, 이에 한정되는 것은 아니다.
패리티 데이터가 제2 타입 메모리(455)에 저장되면, 패리티 SSD(450)는 제1 타입 메모리(452)에 저장된 이중화 데이터들, 즉 제1 내지 제k 데이터 세그먼트(DAT1~DATk)를 삭제할 수 있다.
도 10의 실시예에 따르면, 레이드 스트라이프를 구성하는 각 데이터 세그먼트는 각 SSD(410~440)의 제1 타입 메모리(예컨대, NVRAM)에 우선적으로 저장된다.
패리티 SSD(450)에서도 각 데이터 세그먼트(즉, 각 데이터 세그먼트의 이중화 데이터) 역시 우선적으로 제1 타입 메모리(452)에 저장된다. 패리티 SSD(450)는 제1 타입 메모리(452)에 저장된 데이터는 컨트롤러(310)로부터 패리티 생성 및 저장 명령이 인가된 시점에 제1 타입 메모리(452)에 저장된 데이터를 이용하여 패리티 데이터를 생성한 다음, 제1 타입 메모리(452) 또는 제2 타입 메모리(455)에 최종적으로 저장할 수 있다. 생성된 패리티 데이터가 제2 타입 메모리(455)에 저장되면, 제1 타입 메모리(452)에 저장된 이중화 데이터 및/또는 패리티 데이터는 삭제될 수 있다.
도 11은 본 발명의 일 실시 예에 따른 데이터 이중화 방법을 나타내는 플로우이다. 도 11의 실시예에 따른 데이터 이중화 방법은 도 1 내지 도 4c를 참조하여 상술한 본 발명의 일 실시 예에 따른 데이터 저장 장치(300)에 의해 수행될 수 있다. 도 11의 실시예에서는, 편의를 위하여 SSD의 수(N)는 5인 것으로 가정한다.
도 11의 실시예는 도 10의 실시예와 그 동작이 유사하므로, 차이점 위주로 기술한다.
도 11의 실시예에 따르면, 컨트롤러(310)는 패리티 SSD(450)에 이중화된 데이터 세그먼트를 매번 저장하는 것이 아니라, 특정 데이터 그룹(예컨대, 레이드 스트라이프)의 일부 데이터 세그먼트, 예컨대, 제1 데이터 세그먼트(DAT1)에 대해서만 이중화된 동일한 데이터를 패리티 SSD(450)에 저장하고, 그 다음 데이터 세그먼트(제2 데이터 세그먼트(DAT2))부터는 업데이트된 패리티 데이터(Parity data)만 패리티 SSD(450)에 저장한다.
도 1 내지 도 4c 및 도 11을 참조하면, 컨트롤러(310)는 호스트(200)로부터 복수의 쓰기 요청들(REQ1~REQk, k는 2이상의 정수)을 수신할 수 있다. 쓰기 요청들(REQ1~REQk)은 쓰기 요청 큐에 순차적으로 저장될 수 있다.
컨트롤러(310)는 제1 쓰기 요청(REQ1)에 대해서는, 도 10의 실시예와 동일하게 처리할 수 있다(S101-1, S103-1, S105-1, S107-1, S109-1)
컨트롤러(310)는 제2 쓰기 요청(REQ2)에 대해서는, 제2 데이터 세그먼트(DAT2)를 먼저 버퍼(360)에 저장하고(S103-2), 또한 제2 데이터 세그먼트(DAT2)를 제2 SSD(420)에 저장한다(S105-2).
그리고, 컨트롤러(310)는 제N SSD(450)로 제2 데이터 세그먼트(DAT2)와 함께, 패리티 생성 및 저장 명령(Cal_Parity2)을 제N SSD(450)로 인가할 수 있다(S207-2). 예컨대, 컨트롤러(310)는 제2 데이터 세그먼트(DAT2)와 함께, 패리티 데이터 생성에 필요한 영역을 지정하여 제N SSD(450)로 인가할 수 있다.
이를 위하여, 컨트롤러(310)는 도 9c에 도시된 명령들 중 하나를 패리티 생성 및 저장 명령(Cal_Parity2)으로 사용할 수 있다.
제N SSD(450)는 컨트롤러(310)로부터 수신한 제2 데이터 세그먼트(DAT2)와, 제1 타입 메모리(452)에 기 저장된 제1 데이터 세그먼트(DAT1)에 기초하여 패리티 데이터를 생성하고, 생성된 패리티 데이터를 제2 타입 메모리(455)에 저장할 수 있다.
도시되지는 않았지만, 컨트롤러(310)는 호스트(200)로부터 수신한 제3 쓰기 요청(REQ3)에 대해서도, 상기 제2 쓰기 요청(REQ2)과 유사하게 처리할 수 있다.
또한, 컨트롤러(310)는 호스트(200)로부터 수신한 제k 쓰기 요청(REQk)에 대해서도, 제2 및 제3 쓰기 요청(REQ2, REQ3)과 유사하게 처리할 수 있다.
예컨대, 컨트롤러(310)는 제k 쓰기 요청(REQk)에 대해서, 제k 데이터 세그먼트(DATk)를 먼저 버퍼(360)에 저장하고(S103-k), 또한 제k 데이터 세그먼트(DATk)를 제k SSD(440)에 저장한다(S105-k).
그리고, 컨트롤러(310)는 제N SSD(450)로 제k 데이터 세그먼트(DATk)와 함께, 패리티 생성 및 저장 명령(Cal_Parity2)을 인가할 수 있다(S207-k). 예컨대, 컨트롤러(310)는 제k 데이터 세그먼트(DATk)와 함께, 패리티 데이터 생성에 필요한 영역을 지정하여 제N SSD(450)로 인가할 수 있다.
제N SSD(450)는 컨트롤러(310)로부터 수신한 제k 데이터 세그먼트(DATk)와, 제1 타입 메모리(452)에 기 저장된 데이터 세그먼트들(DAT1, DAT2, DAT3)에 기초하여 패리티 데이터를 생성하고, 생성된 패리티 데이터를 지정된 주소에 저장할 수 있다.
컨트롤러(310)는 제N SSD(450)의 제1 타입 메모리(452)에 저장된 최종 패리티 데이터를 제2 타입 메모리(455)에 영구 저장하기 위하여 별도의 명령을 제N SSD(450)에 인가할 수 있다(S210).
도 11의 실시예에서는, 컨트롤러(310)는 패리티 SSD(450)로 패리티 생성 및 저장 명령(Parity_write_NV)을 인가하고, 이 명령에 응답하여 패리티 SSD(450)가 패리티 데이터를 생성한다.
그러나, 실시예에 따라, 컨트롤러(310)가 패리티 데이터를 생성하여 패리티 SSD(450)로 저장할 수도 있다.
예컨대, 컨트롤러(310)는 둘 이상의 데이터 세그먼트를 이용하여 패리티 데이터를 생성하고, 생성된 패리티 데이터를 패리티 SSD(450)의 제1 타입 메모리(452)에 저장할 수 있다.
또한, 컨트롤러(310)는 새로운 하나 이상의 데이터 세그먼트와 기존의 패리티 데이터를 이용하여 새로운 패리티 데이터를 생성(즉, 패리티 데이터를 업데이트)하고, 업데이트된 패리티 데이터를 패리티 SSD(450)의 제1 타입 메모리(452)에 저장할 수 있다.
도 12은 본 발명의 실시 예에 따른 데이터 처리 시스템을 나타내는 블록도이다. 도 1부터 도 12을 참조하면, 데이터 처리 시스템(500)은 데이터베이스 (520), 데이터베이스 서버(530), 제2네트워크(540), 및 복수의 클라이언트 컴퓨터들(550과 551)을 포함할 수 있다. 데이터 센터, 인터넷 데이터 센터, 또는 클라우드 데이터 센터(510)는 데이터베이스(520)와 데이터베이스 서버(530)를 포함할 수 있다.
데이터베이스(520)는 복수의 데이터 저장 장치들(300)을 포함할 수 있다. 복수의 데이터 저장 장치들(300)은 랙(rack)에 설치될 수 있다. 각 데이터 저장 장치(300)의 구조와 동작은 도 1부터 도 11을 참조하여 설명된 데이터 저장 장치(300)의 구조와 동작과 실질적으로 동일 또는 유사하다.
데이터베이스 서버(530)는 복수의 데이터 저장 장치들(300) 각각의 동작을 제어할 수 있다. 예컨대, 데이터베이스 서버(530)는 도 1에 도시된 호스트(200)의 기능을 수행할 수 있다. 데이터베이스 서버(530)는 제1네트워크(535), 예컨대 랜 (Local Area Network(LAN))을 통해 제2무선 네트워크(540), 예컨대, 인터넷 또는 Wi-Fi에 접속될 수 있다. 복수의 클라이언트 컴퓨터들(550과 551) 각각은 제2네트워크(540)를 통해 데이터베이스 서버(530)에 접속할 수 있다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100: 데이터 처리 시스템
200: 호스트
300: 데이터 저장 장치
310: 컨트롤러
410, 420, 430, 440, 450: SSD
412, 422, 432, 452: 제1 타입 메모리
415, 425, 435, 455: 제2 타입 메모리
200: 호스트
300: 데이터 저장 장치
310: 컨트롤러
410, 420, 430, 440, 450: SSD
412, 422, 432, 452: 제1 타입 메모리
415, 425, 435, 455: 제2 타입 메모리
Claims (20)
- 호스트; 및
상기 호스트에 연결된 데이터 저장 장치를 포함하고,
상기 데이터 저장 장치는:
제1 내지 제N(2이상의 정수) 솔리드 스테이트 디스크들(SSDs, solid-state disk); 및
상기 제1 내지 제N SSD들를 제어하도록 구성된 컨트롤러를 포함하며,
상기 제1 내지 제N SSD들 각각은 제1 타입 메모리 및 상기 제1 타입 메모리와 다른 제2 타입 메모리를 포함하고, 상기 제1 타입 메모리에 접근을 위한 접근 시간은 상기 제2 타입 메모리에 접근을 위한 접근 시간보다 빠르고,
상기 컨트롤러는 상기 호스트로부터 수신된 복수의 쓰기 요청들에 상응하는 데이터 세그먼트들 각각을 상기 제1 내지 제(N-1) SSD들 중 하나에 상응하는 상기 제1 타입 메모리에 저장하고, 상기 데이터 세그먼트들 중 적어도 일부에 기초하여 복사된 데이터를 상기 제N SSD의 상기 제1 타입 메모리에 저장하고, 상기 데이터 세그먼트들 전부에 기초하여 생성된 패리티 데이터를 상기 제N SSD의 상기 제1 타입 메모리 또는 상기 제2 타입 메모리에 저장하도록 구성되고,
상기 컨트롤러는 제1 쓰기 요청에 응답하여 제1 데이터 세그먼트를 상기 제1 SSD에 저장하고 상기 제1 데이터 세그먼트와 동일한 데이터를 상기 제N SSD에 저장하고, 제2 쓰기 요청에 응답하여 제2 데이터 세그먼트를 상기 제2 SSD에 저장하고 상기 제2 데이터 세그먼트와 동일한 데이터를 상기 제N SSD에 저장하도록 구성되고,
상기 제N SSD는 상기 컨트롤러로부터 수신된 패리티 생성 및 저장 명령에 응답하여 상기 제N SSD의 상기 제1 타입 메모리에 저장된 제1 내지 제(N-1) 데이터 세그먼트들을 이용하여 상기 패리티 데이터를 생성하고, 상기 패리티 데이터를 상기 제N SSD의 제2 타입 메모리에 저장하고, 그리고 상기 제N SSD의 제1 타입 메모리로부터 상기 제1 내지 제(N-1) 데이터 세그먼트들을 삭제하도록 구성되는 데이터 처리 시스템. - 제1항에 있어서,
상기 복사된 데이터는 제1 데이터 세그먼트 및 제2 데이터 세그먼트를 이용하여 계산된 제1 부분 패리티 데이터인 데이터 처리 시스템. - 제2항에 있어서,
상기 제N SSD는 상기 제1 데이터 세그먼트를 상기 제N SSD의 제1 타입 메모리에 저장하고, 상기 컨트롤러로부터 수신된 상기 제2 데이터 세그먼트 및 상기 제N SSD의 제1 타입 메모리에 저장된 상기 제1 데이터 세그먼트를 이용하여 상기 제1 부분 패리티 데이터를 생성하고, 상기 제1 부분 패리티 데이터를 상기 제N SSD의 제1 타입 메모리에 저장하고, 상기 제N SSD의 제1 타입 메모리로부터 상기 제1 데이터 세그먼트를 삭제하도록 구성된 데이터 처리 시스템. - 제1항에 있어서,
상기 제N SSD는 상기 컨트롤러로부터 제1 데이터 세그먼트 및 제2 데이터 세그먼트에 기초하여 생성된 상기 복사된 데이터를 수신하고,
상기 복사된 데이터를 상기 제N SSD의 제1 타입 메모리에 저장하도록 구성되는 데이터 처리 시스템. - 제1항에 있어서,
상기 SSD들 각각의 상기 제1 타입 메모리는 비휘발성 RAM(Non-Volatile Random Access Memory, NVRAM)이고, 상기 SSD들 각각의 제2 타입 메모리는 NAND 플래시 메모리인 데이터 처리 시스템. - 컨트롤러, 버퍼 및 복수의 SSD(Solid State Disk)들을 포함하는 데이터 저장 장치의 동작 방법에 있어서,
호스트로부터 제1 쓰기 요청을 수신하는 단계;
상기 제1 쓰기 요청에 응답하여 제1 데이터 세그먼트를 상기 버퍼에 저장하는 단계;
상기 제1 데이터 세그먼트를 상기 복수의 SSD들 중 제1 SSD에 저장하는 단계;
상기 제1 데이터 세그먼트를 상기 복수의 SSD들 중 제N SSD에 저장하는 단계;
상기 호스트로 상기 제1 쓰기 요청에 대한 응답을 전송하는 단계;
상기 호스트로부터 제2 쓰기 요청을 수신하는 단계;
상기 제2 쓰기 요청에 응답하여 제2 데이터 세그먼트를 상기 버퍼에 저장하는 단계;
상기 제2 데이터 세그먼트를 상기 복수의 SSD들 중 제2 SSD에 저장하는 단계;
상기 제2 데이터 세그먼트에 기초하여 복사된 데이터를 상기 제N SSD에 저장하는 단계;
상기 제2 쓰기 요청에 대한 응답을 상기 호스트에 전송하는 단계; 및
제1 내지 제(N-1)데이터 세그먼트들에 기초하여 생성된 패리티 데이터를 상기 제N SSD에 저장하는 단계를 포함하되,
상기 패리티 데이터를 상기 제N SSD에 저장하는 단계는:
상기 제N SSD의 제1 타입 메모리에 저장된 상기 제1 데이터 세그먼트 및 상기 제2 데이터 세그먼트를 이용하여 상기 패리티 데이터를 생성하는 단계;
상기 패리티 데이터를 상기 제N SSD의 제2 타입 메모리에 저장하는 단계; 그리고
상기 제N SSD의 상기 제1 타입 메모리로부터 상기 제1 데이터 세그먼트 및 상기 제2 데이터 세그먼트를 삭제하는 단계를 포함하는 방법. - 제6항에 있어서,
상기 제2 데이터 세그먼트에 기초한 상기 복사된 데이터는 상기 제2 데이터 세그먼트와 동일한 방법. - 제6항에 있어서,
상기 제2 데이터 세그먼트에 기초한 상기 복사된 데이터는 상기 제1 데이터 세그먼트 및 상기 제2 데이터 세그먼트를 이용하여 계산된 제1 부분 패리티 데이터인 방법. - 제8항에 있어서,
상기 제2 데이터 세그먼트에 기초한 상기 복사된 데이터를 상기 제N SSD에 저장하는 단계는:
상기 컨트롤러로부터 상기 제2 데이터 세그먼트를 수신하는 단계;
상기 제N SSD의 제1 타입 메모리에 저장된 상기 제2 데이터 세그먼트 및 상기 제1 데이터 세그먼트를 이용하여 상기 제2 데이터 세그먼트에 기초한 상기 복사된 데이터를 생성하는 단계;
상기 제2 데이터 세그먼트에 기초한 상기 복사된 데이터를 상기 제N SSD의 상기 제1 타입 메모리에 저장하는 단계; 및
상기 제N SSD의 상기 제1 타입 메모리로부터 상기 제1 데이터 세그먼트를 삭제하는 단계를 포함하는 방법. - 적어도 제1 SSD, 제2 SSD, 및 패리티 SSD를 포함하는 복수의 SSD들;
상기 복수의 SSD들의 동작을 제어하도록 구성된 컨트롤러를 포함하고,
상기 SSD들 각각은 적어도 제1 타입 메모리 및 상기 제1 타입 메모리와 다른 제2 타입 메모리를 포함하고, 상기 제1 타입 메모리에 접근을 위한 접근 시간은 상기 제2 타입 메모리에 접근을 위한 접근 시간보다 빠르고,
상기 컨트롤러는 호스트로부터 수신된 제1 쓰기 명령에 응답하여 제1 데이터 세그먼트를 상기 제1 SSD의 상기 제1 타입 메모리에 저장하고, 상기 호스트로부터 수신된 제2 쓰기 명령에 응답하여 제2 데이터 세그먼트를 상기 제2 SSD의 상기 제1 타입 메모리에 저장하고, 상기 호스트로부터 수신된 상기 제1 및 제2 쓰기 명령들 중 적어도 하나에 응답하여 상기 제1 데이터 세그먼트 및 상기 제2 데이터 세그먼트에 기초하여 데이터를 상기 패리티 SSD의 상기 제1 타입 메모리에 저장하고, 적어도 상기 제1 데이터 세그먼트 및 상기 제2 데이터 세그먼트로부터 생성된 패리티 데이터를 상기 패리티 SSD의 상기 제1 타입 메모리 및 상기 제2 타입 메모리 중 적어도 하나에 저장하도록 구성되고
상기 제1 데이터 세그먼트 및 상기 제2 데이터 세그먼트에 기초한 상기 데이터는 상기 제1 데이터 세그먼트 및 제2 데이터 세그먼트에 대한 상기 제1 데이터 세그먼트 및 부분 패리티 데이터를 포함하고, 그리고 상기 컨트롤러는 상기 제1 쓰기 명령에 응답하여 상기 제1 데이터 세그먼트를 상기 패리티 SSD의 상기 제1 타입 메모리에 저장하고, 상기 제2 쓰기 명령에 응답하여 상기 제1 데이터 세그먼트 및 제2 데이터 세그먼트에 대한 상기 부분 패리티 데이터를 상기 패리티 SSD의 상기 제1 타입 메모리에 저장하도록 구성되는 데이터 저장 장치. - 제10항에 있어서,
상기 제1 타입 메모리는 비휘발성 RAM(Non-Volatile Random Access Memory, NVRAM)인 데이터 저장 장치. - 제11항에 있어서,
상기 제1 타입 메모리는 NAND 플래시 메모리인 데이터 저장 장치. - 제10항에 있어서,
상기 제1 데이터 세그먼트 및 상기 제2 데이터 세그먼트에 기초한 상기 데이터는 상기 제1 데이터 세그먼트 및 상기 제2 데이터 세그먼트를 포함하고, 상기 컨트롤러는 상기 제1 쓰기 명령에 응답하여 상기 제1 데이터 세그먼트를 상기 패리티 SSD의 상기 제1 타입 메모리에 저장하고, 상기 제2 쓰기 명령에 응답하여 상기 제2 데이터 세그먼트를 상기 패리티 SSD의 상기 제1 타입 메모리에 저장하도록 구성된 데이터 저장 장치. - 제10항에 있어서,
상기 제1 데이터 세그먼트 및 상기 제2 데이터 세그먼트에 기초한 상기 데이터는 상기 제1 데이터 세그먼트 및 제2 데이터 세그먼트에 대한 상기 제1 데이터 세그먼트 및 부분 패리티 데이터를 포함하고, 상기 컨트롤러는 상기 제2 쓰기 명령에 응답하여 상기 제1 데이터 세그먼트 및 제2 데이터 세그먼트에 대한 상기 부분 패리티 데이터를 상기 패리티 SSD의 상기 제1 타입 메모리에 저장하도록 구성된 데이터 저장 장치. - 제10항에 있어서,
상기 제1 데이터 세그먼트 및 상기 제2 데이터 세그먼트는 k개의 데이터 세그먼트들을 포함하는 미리 정해진 데이터 그룹에 속하고, 여기서 k는 2보다 큰 정수이고, 상기 제1 데이터 세그먼트 및 상기 제2 데이터 세그먼트로부터 생성된 상기 패리티 데이터는 모든 k개의 데이터 세그먼트들로부터 생성된 패리티 데이터를 포함하고, 상기 컨트롤러는 상기 호스트로부터 상기 제k 데이터 세그먼트를 상기 SSD들 중 하나인 제k SSD의 상기 제1 타입 메모리에 저장하기 위한 제k 쓰기 요청을 수신한 후, 상기 패리티 데이터를 상기 패리티 SSD의 상기 제1 타입 메모리 및 상기 제2 타입 메모리 중 적어도 하나에 저장하는 데이터 저장 장치. - 삭제
- 삭제
- 삭제
- 삭제
- 삭제
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160030241A KR102527992B1 (ko) | 2016-03-14 | 2016-03-14 | 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 |
US15/425,587 US10324639B2 (en) | 2016-03-14 | 2017-02-06 | Data storage device having multiple solid state drives for data duplication, and data processing system including the same |
CN201710151764.4A CN107193486B (zh) | 2016-03-14 | 2017-03-14 | 数据存储设备和包括该数据存储设备的数据处理*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160030241A KR102527992B1 (ko) | 2016-03-14 | 2016-03-14 | 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170106752A KR20170106752A (ko) | 2017-09-22 |
KR102527992B1 true KR102527992B1 (ko) | 2023-05-03 |
Family
ID=59786472
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160030241A KR102527992B1 (ko) | 2016-03-14 | 2016-03-14 | 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10324639B2 (ko) |
KR (1) | KR102527992B1 (ko) |
CN (1) | CN107193486B (ko) |
Families Citing this family (61)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SE533007C2 (sv) | 2008-10-24 | 2010-06-08 | Ilt Productions Ab | Distribuerad datalagring |
US11604598B2 (en) | 2014-07-02 | 2023-03-14 | Pure Storage, Inc. | Storage cluster with zoned drives |
US10853311B1 (en) | 2014-07-03 | 2020-12-01 | Pure Storage, Inc. | Administration through files in a storage system |
US10430079B2 (en) | 2014-09-08 | 2019-10-01 | Pure Storage, Inc. | Adjusting storage capacity in a computing system |
US10164841B2 (en) | 2014-10-02 | 2018-12-25 | Pure Storage, Inc. | Cloud assist for storage systems |
US9710165B1 (en) | 2015-02-18 | 2017-07-18 | Pure Storage, Inc. | Identifying volume candidates for space reclamation |
US11503031B1 (en) | 2015-05-29 | 2022-11-15 | Pure Storage, Inc. | Storage array access control from cloud-based user authorization and authentication |
US9768953B2 (en) | 2015-09-30 | 2017-09-19 | Pure Storage, Inc. | Resharing of a split secret |
US10572460B2 (en) | 2016-02-11 | 2020-02-25 | Pure Storage, Inc. | Compressing data in dependence upon characteristics of a storage system |
US10261690B1 (en) | 2016-05-03 | 2019-04-16 | Pure Storage, Inc. | Systems and methods for operating a storage system |
US11531577B1 (en) | 2016-09-07 | 2022-12-20 | Pure Storage, Inc. | Temporarily limiting access to a storage device |
US10235229B1 (en) | 2016-09-07 | 2019-03-19 | Pure Storage, Inc. | Rehabilitating storage devices in a storage array that includes a plurality of storage devices |
US10331588B2 (en) | 2016-09-07 | 2019-06-25 | Pure Storage, Inc. | Ensuring the appropriate utilization of system resources using weighted workload based, time-independent scheduling |
US9747039B1 (en) | 2016-10-04 | 2017-08-29 | Pure Storage, Inc. | Reservations over multiple paths on NVMe over fabrics |
US10481798B2 (en) | 2016-10-28 | 2019-11-19 | Pure Storage, Inc. | Efficient flash management for multiple controllers |
US11550481B2 (en) | 2016-12-19 | 2023-01-10 | Pure Storage, Inc. | Efficiently writing data in a zoned drive storage system |
US11461273B1 (en) | 2016-12-20 | 2022-10-04 | Pure Storage, Inc. | Modifying storage distribution in a storage system that includes one or more storage devices |
US11307998B2 (en) | 2017-01-09 | 2022-04-19 | Pure Storage, Inc. | Storage efficiency of encrypted host system data |
US11442825B2 (en) | 2017-03-10 | 2022-09-13 | Pure Storage, Inc. | Establishing a synchronous replication relationship between two or more storage systems |
US10521344B1 (en) | 2017-03-10 | 2019-12-31 | Pure Storage, Inc. | Servicing input/output (‘I/O’) operations directed to a dataset that is synchronized across a plurality of storage systems |
US20180357017A1 (en) | 2017-06-12 | 2018-12-13 | Pure Storage, Inc. | Accessible fast durable storage integrated into a bulk storage device |
WO2018231350A1 (en) | 2017-06-12 | 2018-12-20 | Pure Storage, Inc. | Accessible fast durable storage integrated into a bulk storage device |
US11592991B2 (en) * | 2017-09-07 | 2023-02-28 | Pure Storage, Inc. | Converting raid data between persistent storage types |
US11609718B1 (en) | 2017-06-12 | 2023-03-21 | Pure Storage, Inc. | Identifying valid data after a storage system recovery |
US10831935B2 (en) | 2017-08-31 | 2020-11-10 | Pure Storage, Inc. | Encryption management with host-side data reduction |
US11861423B1 (en) | 2017-10-19 | 2024-01-02 | Pure Storage, Inc. | Accelerating artificial intelligence (‘AI’) workflows |
US10671434B1 (en) | 2017-10-19 | 2020-06-02 | Pure Storage, Inc. | Storage based artificial intelligence infrastructure |
US10929226B1 (en) | 2017-11-21 | 2021-02-23 | Pure Storage, Inc. | Providing for increased flexibility for large scale parity |
CN108334278B (zh) * | 2017-12-15 | 2021-05-07 | 中兴通讯股份有限公司 | 一种存储***均衡管理方法和装置 |
US10929031B2 (en) | 2017-12-21 | 2021-02-23 | Pure Storage, Inc. | Maximizing data reduction in a partially encrypted volume |
US10834190B2 (en) | 2018-01-18 | 2020-11-10 | Portworx, Inc. | Provisioning of clustered containerized applications |
KR102490191B1 (ko) * | 2018-03-05 | 2023-01-18 | 삼성전자주식회사 | 데이터 스토리지 장치 및 이를 포함하는 raid 시스템 |
US10942650B1 (en) | 2018-03-05 | 2021-03-09 | Pure Storage, Inc. | Reporting capacity utilization in a storage system |
US10924548B1 (en) | 2018-03-15 | 2021-02-16 | Pure Storage, Inc. | Symmetric storage using a cloud-based storage system |
KR102658230B1 (ko) * | 2018-06-01 | 2024-04-17 | 삼성전자주식회사 | 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 반도체 메모리 장치의 동작 방법 |
US10929229B2 (en) * | 2018-06-21 | 2021-02-23 | International Business Machines Corporation | Decentralized RAID scheme having distributed parity computation and recovery |
US11500570B2 (en) | 2018-09-06 | 2022-11-15 | Pure Storage, Inc. | Efficient relocation of data utilizing different programming modes |
CN110990175B (zh) | 2018-10-03 | 2023-03-14 | 慧荣科技股份有限公司 | 错误处置方法以及数据存储装置及其控制器 |
TWI684988B (zh) * | 2018-10-03 | 2020-02-11 | 慧榮科技股份有限公司 | 錯誤處置方法以及資料儲存裝置及其控制器 |
CN110989918B (zh) | 2018-10-03 | 2023-03-28 | 慧荣科技股份有限公司 | 写入控制方法以及数据存储装置及其控制器 |
WO2020073233A1 (en) * | 2018-10-10 | 2020-04-16 | Alibaba Group Holding Limited | System and method for data recovery in parallel multi-tenancy ssd with finer granularity |
US11379254B1 (en) | 2018-11-18 | 2022-07-05 | Pure Storage, Inc. | Dynamic configuration of a cloud-based storage system |
US10949297B2 (en) | 2018-12-05 | 2021-03-16 | Micron Technology, Inc. | NAND device mixed parity management |
US11003369B1 (en) | 2019-01-14 | 2021-05-11 | Pure Storage, Inc. | Performing a tune-up procedure on a storage device during a boot process |
US11487715B1 (en) | 2019-07-18 | 2022-11-01 | Pure Storage, Inc. | Resiliency in a cloud-based storage system |
US11941116B2 (en) | 2019-11-22 | 2024-03-26 | Pure Storage, Inc. | Ransomware-based data protection parameter modification |
US11868318B1 (en) | 2019-12-06 | 2024-01-09 | Pure Storage, Inc. | End-to-end encryption in a storage system with multi-tenancy |
US11494128B1 (en) | 2020-01-28 | 2022-11-08 | Pure Storage, Inc. | Access control of resources in a cloud-native storage system |
US11494267B2 (en) | 2020-04-14 | 2022-11-08 | Pure Storage, Inc. | Continuous value data redundancy |
US11474986B2 (en) | 2020-04-24 | 2022-10-18 | Pure Storage, Inc. | Utilizing machine learning to streamline telemetry processing of storage media |
CN111709872B (zh) * | 2020-05-19 | 2022-09-23 | 北京航空航天大学 | 一种图三角形计数算法的自旋存内计算架构 |
US11442652B1 (en) | 2020-07-23 | 2022-09-13 | Pure Storage, Inc. | Replication handling during storage system transportation |
US11593017B1 (en) | 2020-08-26 | 2023-02-28 | Pure Storage, Inc. | Protection of objects in an object store from deletion or overwriting |
US11487455B2 (en) | 2020-12-17 | 2022-11-01 | Pure Storage, Inc. | Dynamic block allocation to optimize storage system performance |
CN112717419A (zh) * | 2021-01-04 | 2021-04-30 | 厦门梦加网络科技股份有限公司 | 一种游戏数据的保存方法 |
US11531467B1 (en) | 2021-01-29 | 2022-12-20 | Pure Storage, Inc. | Controlling public access of resources in a secure distributed storage system |
CN112817533A (zh) * | 2021-01-29 | 2021-05-18 | 深圳忆联信息***有限公司 | Ssd管理方法、装置计算机设备及存储介质 |
US11520516B1 (en) | 2021-02-25 | 2022-12-06 | Pure Storage, Inc. | Optimizing performance for synchronous workloads |
US20220365827A1 (en) | 2021-05-12 | 2022-11-17 | Pure Storage, Inc. | Rebalancing In A Fleet Of Storage Systems Using Data Science |
US11733927B2 (en) * | 2021-11-30 | 2023-08-22 | Microsoft Technology Licensing, Llc | Hybrid solid-state drive |
US11886295B2 (en) | 2022-01-31 | 2024-01-30 | Pure Storage, Inc. | Intra-block error correction |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5603001A (en) | 1994-05-09 | 1997-02-11 | Kabushiki Kaisha Toshiba | Semiconductor disk system having a plurality of flash memories |
US5659704A (en) | 1994-12-02 | 1997-08-19 | Hewlett-Packard Company | Methods and system for reserving storage space for data migration in a redundant hierarchic data storage system by dynamically computing maximum storage space for mirror redundancy |
US20010029570A1 (en) | 1997-09-12 | 2001-10-11 | Akira Yamamoto | Storage controller |
US6725392B1 (en) | 1999-03-03 | 2004-04-20 | Adaptec, Inc. | Controller fault recovery system for a distributed file system |
US20120192035A1 (en) | 2011-01-25 | 2012-07-26 | Sony Corporation | Memory system and operation method thereof |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040117414A1 (en) * | 2002-12-17 | 2004-06-17 | Capital One Financial Corporation | Method and system for automatically updating operating systems |
JP5242264B2 (ja) | 2008-07-07 | 2013-07-24 | 株式会社東芝 | データ制御装置、ストレージシステムおよびプログラム |
JP4719802B2 (ja) | 2009-03-09 | 2011-07-06 | 富士通株式会社 | ストレージ管理装置、ストレージ管理方法およびストレージシステム |
KR101079367B1 (ko) * | 2010-01-13 | 2011-11-02 | 성균관대학교산학협력단 | 플래시 메모리를 사용하는 raid 저장 장치에서 패리티 데이터 관리 방법 및 그 장치 |
JP5066199B2 (ja) | 2010-02-12 | 2012-11-07 | 株式会社東芝 | 半導体記憶装置 |
US8583866B2 (en) | 2010-02-22 | 2013-11-12 | International Business Machines Corporation | Full-stripe-write protocol for maintaining parity coherency in a write-back distributed redundancy data storage system |
JP5388976B2 (ja) | 2010-09-22 | 2014-01-15 | 株式会社東芝 | 半導体記憶制御装置 |
US8615681B2 (en) | 2010-12-14 | 2013-12-24 | Western Digital Technologies, Inc. | System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss |
US8862804B2 (en) | 2011-04-29 | 2014-10-14 | Western Digital Technologies, Inc. | System and method for improved parity determination within a data redundancy scheme in a solid state memory |
JP5776436B2 (ja) | 2011-08-22 | 2015-09-09 | 富士通株式会社 | ストレージシステム、ストレージ制御装置およびストレージ制御方法 |
JP5744244B2 (ja) | 2011-10-19 | 2015-07-08 | 株式会社日立製作所 | ストレージシステム |
CN103645969B (zh) * | 2013-12-13 | 2017-06-20 | 华为技术有限公司 | 数据复制方法及数据存储*** |
KR102318478B1 (ko) | 2014-04-21 | 2021-10-27 | 삼성전자주식회사 | 스토리지 컨트롤러, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법 |
KR20150127434A (ko) * | 2014-05-07 | 2015-11-17 | 에스케이텔레콤 주식회사 | 메모리제어장치 및 메모리제어장치의 동작 방법 |
KR102368071B1 (ko) * | 2014-12-29 | 2022-02-25 | 삼성전자주식회사 | 레이드 스토리지 시스템에서의 스트라이프 재구성 방법 및 이를 적용한 가비지 컬렉션 동작 방법 및 레이드 스토리지 시스템 |
-
2016
- 2016-03-14 KR KR1020160030241A patent/KR102527992B1/ko active IP Right Grant
-
2017
- 2017-02-06 US US15/425,587 patent/US10324639B2/en active Active
- 2017-03-14 CN CN201710151764.4A patent/CN107193486B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5603001A (en) | 1994-05-09 | 1997-02-11 | Kabushiki Kaisha Toshiba | Semiconductor disk system having a plurality of flash memories |
US5659704A (en) | 1994-12-02 | 1997-08-19 | Hewlett-Packard Company | Methods and system for reserving storage space for data migration in a redundant hierarchic data storage system by dynamically computing maximum storage space for mirror redundancy |
US20010029570A1 (en) | 1997-09-12 | 2001-10-11 | Akira Yamamoto | Storage controller |
US6725392B1 (en) | 1999-03-03 | 2004-04-20 | Adaptec, Inc. | Controller fault recovery system for a distributed file system |
US20120192035A1 (en) | 2011-01-25 | 2012-07-26 | Sony Corporation | Memory system and operation method thereof |
Also Published As
Publication number | Publication date |
---|---|
US10324639B2 (en) | 2019-06-18 |
CN107193486A (zh) | 2017-09-22 |
CN107193486B (zh) | 2021-11-26 |
KR20170106752A (ko) | 2017-09-22 |
US20170262202A1 (en) | 2017-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102527992B1 (ko) | 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 | |
US11182078B2 (en) | Method of accessing a data storage device using a multi-access command | |
US10579279B2 (en) | Data storage device and data processing system having the same | |
US10534560B2 (en) | Data storage device and data processing system having the same | |
US9996282B2 (en) | Method of operating data storage device and method of operating system including the same | |
US10216578B2 (en) | Data storage device for increasing lifetime and RAID system including the same | |
US10114550B2 (en) | Data storage device and data processing system including the data storage device | |
US9864526B2 (en) | Wear leveling using multiple activity counters | |
KR102506135B1 (ko) | 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 | |
US20170116117A1 (en) | Identifying storage descriptors based on a metric | |
US9990149B2 (en) | Memory device for internally performing read-verify operation, method of operating the same, and memory system including the same | |
US10445252B2 (en) | Storage device and operating method performed by the same | |
US20160291869A1 (en) | Data storage device and data processing system including the same | |
US11762572B2 (en) | Method of operating storage device and method of operating storage system using the same | |
US10114555B2 (en) | Semiconductor device having register sets and data processing device including the same | |
US10416886B2 (en) | Data storage device that reassigns commands assigned to scale-out storage devices and data processing system having the same | |
US10331366B2 (en) | Method of operating data storage device and method of operating system including the same | |
US20230130884A1 (en) | Method of scheduling commands for memory device and memory system performing the same | |
US12014772B2 (en) | Storage controller and storage device including the same | |
US20170031633A1 (en) | Method of operating object-oriented data storage device and method of operating system including the same | |
US20230146540A1 (en) | Storage device and an operating method of a storage controller thereof | |
US20240176540A1 (en) | Storage device and storage system for direct storage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |