KR20180051703A - Raid 방식으로 데이터를 저장하는 스토리지 장치 - Google Patents

Raid 방식으로 데이터를 저장하는 스토리지 장치 Download PDF

Info

Publication number
KR20180051703A
KR20180051703A KR1020160147673A KR20160147673A KR20180051703A KR 20180051703 A KR20180051703 A KR 20180051703A KR 1020160147673 A KR1020160147673 A KR 1020160147673A KR 20160147673 A KR20160147673 A KR 20160147673A KR 20180051703 A KR20180051703 A KR 20180051703A
Authority
KR
South Korea
Prior art keywords
stripe
parity
memory
controller
raid engine
Prior art date
Application number
KR1020160147673A
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 KR1020160147673A priority Critical patent/KR20180051703A/ko
Priority to US15/711,129 priority patent/US10521152B2/en
Priority to CN201710986336.3A priority patent/CN108073357B/zh
Publication of KR20180051703A publication Critical patent/KR20180051703A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1028Distributed, i.e. distributed RAID systems with parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • G06F2212/262Storage comprising a plurality of storage devices configured as RAID

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)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

스토리지 장치는 복수의 불휘발성 메모리 및 컨트롤러를 포함한다. 복수의 불휘발성 메모리는 스트라이프 세트에 대한 제1 및 제2 스트라이프들을 분산하여 저장하도록 구성된다. 컨트롤러는 호스트로부터 제1 및 제2 스트라이프들을 수신하고, 제1 및 제2 스트라이프들을 복수의 불휘발성 메모리로 분산하여 저장하고, 제1 및 제2 스트라이프들에 기초하여 패리티 연산을 수행한다. 컨트롤러는 제1 스트라이프에 기초하여 중간 패리티를 생성하고, 중간 패리티를 컨트롤러 내부의 제1 메모리에 저장하고, 패리티 연산이 중단되는 경우, 제1 메모리에 저장된 중간 패리티를 컨트롤러 내부의 제2 메모리로 이동시킨다.

Description

RAID 방식으로 데이터를 저장하는 스토리지 장치{STORAGE DEVICE STORING DATA IN RAID MANNER}
본 발명은 반도체 메모리 장치에 관한 것으로, 좀 더 구체적으로는 RAID 방식으로 데이터를 저장하는 스토리지 장치에 관한 것이다.
플래시 메모리 장치는 컴퓨터, 스마트폰, PDA, 디지털 카메라, 캠코더, 보이스 리코더, MP3 플레이어, 휴대용 컴퓨터(Handheld PC)와 같은 정보 기기들의 음성 및 영상 데이터 저장 매체로서 널리 사용되고 있다. 그러나 플래시 메모리에 데이터를 기입하기 위해서는 소거 동작이 반드시 선행되어야 하며, 기입되는 데이터의 단위보다 삭제되는 데이터의 단위가 크다는 특징이 있다. 이러한 특징은 플래시 메모리가 보조기억장치로 사용되는 경우에도 일반 하드디스크용 파일 시스템(File System)을 그대로 활용하는 것을 저해하는 요인이 된다. 더불어, 이러한 특징은 플래시 메모리로의 연속적인(Sequential) 입출력 처리가 비연속적 입출력 처리보다 효율적임을 암시한다.
플래시 메모리 기반의 대용량 스토리지 장치의 예로 솔리드 스테이트 드라이브(Solid State Drive: 이하, SSD)가 대표적이다. SSD의 수요 증가와 함께 그 용도는 다양하게 분화되고 있다. 예를 들면, 서버용 SSD, 클라이언트용 SSD, 스트라이프 세트 센터용 SSD 등으로 용도가 세분화될 수 있다. SSD의 인터페이스는 이러한 각각의 용도에 따라 최적의 속도와 신뢰성을 제공할 수 있어야 한다. 이러한 요구를 충족하기 위해서 최적의 SSD 인터페이스로 SATA, PCIe, SAS 등이 적용되고 있다.
더불어, 높은 신뢰성을 위해 복수의 스토리지 장치를 포함하는 스토리지 장치가 사용된다. 예로서, RAID(Redundant Array of Independent Disks) 스토리지 시스템은 하나의 스트라이프 세트(Stripe Set)에 대응하는 데이터를 분할하고, 분할된 "스트라이프(Stripe)"들을 복수의 스토리지 장치에 분산하여 저장한다. 복수의 스토리지 장치가 동시에 문제를 야기하는 경우는 거의 발생하지 않기 때문에, 이러한 스토리지 장치는 데이터의 높은 신뢰성을 보장할 수 있다.
본 발명의 몇몇 실시 예들은 RAID 방식을 채용하는 스토리지 장치 또는 스토리지 시스템에서 성능이 저하되는 것을 방지하기 위한 구성들 및 동작들을 제공할 수 있다.
본 발명의 실시 예에 따른 스토리지 장치는 복수의 불휘발성 메모리 및 컨트롤러를 포함한다. 복수의 불휘발성 메모리는 스트라이프 세트(Stripe Set)에 대한 제1 및 제2 스트라이프(Strip)들을 분산하여 저장하도록 구성된다. 컨트롤러는 호스트로부터 제1 및 제2 스트라이프들을 수신하고, 제1 및 제2 스트라이프들을 복수의 불휘발성 메모리로 분산하여 저장하고, 제1 및 제2 스트라이프들에 기초하여 패리티 연산을 수행한다.
몇몇 실시 예로서, 컨트롤러는 제1 스트라이프에 기초하여 중간 패리티를 생성하고, 중간 패리티를 컨트롤러 내부의 제1 메모리에 저장하고, 패리티 연산이 중단되는 경우, 제1 메모리에 저장된 중간 패리티를 컨트롤러 내부의 제2 메모리로 이동시킨다.
본 발명의 실시 예에 따른 스토리지 장치는 복수의 불휘발성 메모리 및 컨트롤러를 포함한다. 복수의 불휘발성 메모리는 제1 스트라이프 세트(Stripe Set)에 대한 제1 및 제2 스트라이프(Strip)들 및 제2 스트라이프 세트에 대한 제3 스트라이프를 각각 분산하여 저장하도록 구성된다. 컨트롤러는 호스트로부터 제1 및 제2 스트라이프들 및 제3 스트라이프를 수신하고, 제1 및 제2 스트라이프들 및 제3 스트라이프를 복수의 불휘발성 메모리로 분산하여 저장한다.
몇몇 실시 예로서, 컨트롤러는 제1 스트라이프에 기초하여 제1 중간 패리티를 생성하고, 제1 중간 패리티를 컨트롤러 내부의 제1 메모리에 저장하고, 제1 스트라이프 다음에 제2 스트라이프 대신 제3 스트라이프가 수신되는 경우, 제1 메모리에 저장된 제1 중간 패리티를 컨트롤러 내부의 제2 메모리로 이동시키고, 제3 스트라이프에 기초하여 제2 중간 패리티를 생성하고, 제2 중간 패리티를 제1 메모리에 저장한다
본 발명의 실시 예에 따르면, 데이터에 대한 패리티 연산이 중지되면, 스토리지 장치는 메모리에 저장된 중간 패리티를 다른 메모리로 이동시키고 다른 데이터에 대한 패리티 연산을 수행할 수 있다. 따라서, 패리티를 생성하는 데에 대한 레이턴시가 감소하고, 스토리지의 성능이 향상될 수 있다.
도 1은 본 발명의 실시 예에 따른 전자 시스템을 보여주기 위한 블록도이다.
도 2는 도 1의 스토리지 장치에서 컨트롤러의 구성을 보여주기 위한 블록도이다.
도 3은 도 1의 스토리지 장치에서 RAID 방식을 이용하여 스트라이프 세트를 처리하는 방법을 설명하기 위한 도면이다.
도 4는 스토리지 장치에서 RAID 방식을 이용하여 스트라이프 세트를 처리하는 방법을 보여주기 위한 블록도이다.
도 5는 스토리지 장치에서 패리티를 생성하는 예시적인 과정을 보여주기 위한 개념도이다.
도 6은 도 1의 스토리지 장치에서 RAID 방식을 이용하여 스트라이프 세트를 처리하는 방법을 보여주기 위한 블록도이다.
도 7은 도 6의 RAID 엔진에서 스트라이프 세트를 처리하는 방법에 따라 제1 메모리 및 제2 메모리 사이에서 이동되는 중간 패리티에 대해 예시적으로 보여주기 위한 블록도이다.
도 8은 도 6의 RAID 엔진에서 RAID 방식을 이용하여 스트라이프 세트를 처리하는 방법을 보여주기 위한 순서도이다.
도 9는 도 1의 스토리지 장치에서 RAID 방식을 이용하여 스트라이프 세트를 처리하는 방법을 보여주기 위한 블록도이다.
도 10은 도 9의 RAID 엔진에서 패리티를 생성하는 예시적인 과정을 보여주기 위한 개념도이다.
도 11은 도 1의 스토리지 장치에서 RAID 방식을 이용하여 스트라이프 세트를 처리하는 방법을 보여주기 위한 블록도이다.
도 12는 도 11의 RAID 엔진에서 스트라이프 세트를 처리하는 방법에 따라 제1 메모리 및 제2 메모리 사이에서 이동되는 중간 패리티에 대해 예시적으로 보여주기 위한 블록도이다.
도 13은 도 11의 RAID 엔진에서 패리티를 생성하는 예시적인 과정을 보여주기 위한 개념도이다.
도 14는 도 11의 RAID 엔진에서 RAID 방식을 이용하여 스트라이프 세트를 처리하는 방법을 보여주기 위한 순서도이다.
도 15는 도 1의 스토리지 장치에서 RAID 방식을 이용하여 스트라이프 세트를 처리하는 방법을 보여주기 위한 블록도이다.
도 16은 도 15의 RAID 엔진에서 패리티를 생성하는 예시적인 과정을 보여주기 위한 개념도이다.
도 17a 내지 도 17c는 도 15의 RAID 엔진에서 스트라이프 세트를 처리하는 방법에 따라 제1 메모리 및 제2 메모리 사이에서 이동되는 중간 패리티에 대해 예시적으로 보여주기 위한 블록도이다.
아래에서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자(이하, 통상의 기술자)들이 본 발명을 용이하게 실시할 수 있도록, 첨부되는 도면들을 참조하여 본 발명의 실시 예들이 명확하고 상세하게 설명될 것이다.
도 1은 본 발명의 실시 예에 따른 전자 시스템을 보여주기 위한 블록도이다. 전자 시스템(1000)는 호스트(1100) 및 스토리지 장치(1200)를 포함할 수 있다.
호스트(1100)는 스토리지 장치(1200)와 데이터(DATA)를 교환할 수 있다. 스토리지 장치(1200)는 호스트(1100)는 스토리지 장치(1200)로부터 데이터(DATA)를 독출하기 위해, 스토리지 장치로 커맨드를 전송할 수 있다. 스토리지 장치(1200)는 커맨드에 응답하여, 호스트(1100)로 요청된 데이터(DATA)를 제공할 수 있다. 예로서, 스토리지 장치(1200)는 복수의 불휘발성 메모리(1210)으로부터 요청된 스트라이프 세트를 독출하여 호스트(1100)로 제공할 수 있다.
호스트(1100)는 하나 이상의 프로세서 코어들을 포함하도록 구현될 수 있다. 예로서, 호스트(1100)는 범용(General-purpose) 프로세서, 전용(Special-purpose) 프로세서, 또는 어플리케이션 프로세서(Application Processor)를 포함할 수 있다. 호스트(1100)는 프로세서 그 자체이거나, 프로세서(들)를 포함하는 전자 장치 또는 시스템일 수 있다.
스토리지 장치(1200)는 복수의 불휘발성 메모리(1210), 및 컨트롤러(1220)를 포함할 수 있다. 복수의 불휘발성 메모리(1210)에 포함되는 불휘발성 메모리들(1211, 1212, 1213, 1214) 각각은 호스트(1100)에 의해 요청되는 쓰기 데이터를 저장하거나 읽기 데이터를 출력할 수 있다. 이를 위해, 불휘발성 메모리들(1211, 1212, 1213, 1214) 각각은 데이터를 저장하기 위한 메모리 영역(들)을 포함할 수 있다. 도 1은 네 개의 불휘발성 메모리들(1211, 1212, 1213, 1214)을 보여주지만, 본 발명은 이에 한정되지 않고, 불휘발성 메모리들의 개수는 다양하게 변경 또는 수정될 수 있다.
예로서, 불휘발성 메모리(1211, 1212, 1213, 1214) 각각이 낸드 플래시 메모리(NAND-type Flash Memory)를 포함하는 경우, 불휘발성 메모리들(1211, 1212, 1213, 1214) 각각은 복수의 워드 라인 및 복수의 비트 라인을 따라 형성되는 메모리 셀 어레이를 포함할 수 있다. 그러나, 본 발명은 이 예로 한정되지 않고, 불휘발성 메모리들(1311, 1312, 1313, 1314) 각각은 PRAM(Phase-change Random Access Memory), MRAM(Magneto-resistive RAM), ReRAM(Resistive RAM), FRAM(Ferro-electric RAM) 등과 같은 다양한 불휘발성 메모리 중 하나 이상을 포함할 수 있다. 불휘발성 메모리들(1211, 1212, 1213, 1214) 각각의 구성은 다양하게 변경 또는 수정될 수 있다. 몇몇 실시 예에서, 불휘발성 메모리들(1211, 1212, 1213, 1214) 중 일부 또는 전부가 SRAM(Static RAM), DRAM(Dynamic RAM), SDRAM(Synchronous DRAM) 등과 같은 휘발성 메모리로 대체될 수 있다.
컨트롤러(1220)는 RAID 엔진(Redundant Array of Independent Disks), 제1 메모리(1222) 및 제2 메모리(1223)를 포함할 수 있다. 컨트롤러(1220)는 스토리지 장치(1200)의 전반적인 동작들을 제어할 수 있다. 스케줄링하거나, 스토리지 장치(1200)에서 처리되는 신호들/데이터를 인코딩 및 디코딩할 수 있다.
컨트롤러(1220)는 이러한 다양한 동작 및 뒤에서 설명될 동작들을 수행하기 위해, 하드웨어 구성, 소프트웨어 구성, 또는 그것들의 하이브리드(Hybrid) 구성을 포함할 수 있다. 예로서, 컨트롤러(1220)는 특정 동작을 수행하도록 구성되는 전용 하드웨어 회로를 포함할 수 있다. 또는, 컨트롤러(1220)는 특정 동작을 수행하도록 구성되는 프로그램 코드(Program Code)의 명령어 집합(Instruction Set)을 실행할 수 있는 하나 이상의 프로세서 코어들을 포함할 수 있다.
RAID 엔진(1221)은 RAID 방식으로 데이터(DATA)를 불휘발성 메모리들(1211, 1212, 1213, 1214)에 저장할 수 있다. 여기서 RAID는 다양한 레벨을 가질 수 있다. 예로서, RAID 레벨 0(Striped SET without parity or Striping), RAID 레벨 1(Mirrored SET without parity or Mirroring), RAID 레벨 2(Hamming code parity),RAID 레벨 3(Striped SET with dedicated parity, bit interleaved parity, or byte level parity), RAID 레벨 4(Block level parity), RAID 레벨 5(Striped SET with distributed parity or interleave parity), RAID 레벨 6(Striped SET with dual distributed parity), RAID 레벨 7, RAID 레벨 10, 및 RAID 레벨 53 중에서 어느 하나 또는 상기 RAID 레벨들 중에서 적어도 2개를 혼합한(merged) RAID 레벨(예컨대, RAID 0+1, RAID 1+0,RAID 5+0, RAID 5+1, 또는 RAID 0+1+5)일 수도 있다. RAID 방식에 대해서는 도 3을 참조하여 더 설명될 것이다.
제1 메모리(1222) 및 제2 메모리(1223) 각각은 컨트롤러(1220)의 동작들에 이용되는 데이터를 저장할 수 있다. 이를 위해, 제1 메모리(1222) 및 제2 메모리(1223)는 각각 다양한 불휘발성/휘발성 메모리 중 하나 이상을 포함할 수 있다. 예로서, 제1 메모리(1222)는 컨트롤러(1220)의 높은 성능을 제공하기 위해, 빠른 속도로 동작할 수 있다. 이를 위해, 제1 메모리(1222)는 SRAM을 포함할 수 있다. 몇몇 실시 예에서, 전자 시스템(1000)은 하나의 전자 장치로 구현될 수 있다. 예로서, 전자 시스템(1000)은 호스트(1100) 및 스토리지 장치(1200)를 포함하는 가전 기기, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트폰, 웨어러블(Wearable) 장치, 비디오 게임기(Video Game Console) 등과 같은 다양한 전자 장치 중 하나일 수 있다.
도 2는 도 1의 스토리지 장치에서 컨트롤러의 구성을 보여주기 위한 블록도이다. 컨트롤러는 RAID 엔진(1221), 제1 메모리(1222), 제2 메모리(1223), 중앙처리장치(1224), 호스트 인터페이스(1225), 데이터 관리자(1226), 및 플래시 인터페이스(1227)를 포함할 수 있다.
RAID 엔진(1221)은 쓰기 요청되는 데이터를 복수의 불휘발성 메모리(1210)에 RAID 방식으로 저장하기 위한 스트라이프(Stripe) 단위로 처리할 수 있다. 예로서, 쓰기 요청되는 데이터는 하나의 스트라이프 세트(Stripe Set) 단위로 관리될 수 있다. 그리고, 하나의 스트라이프 세트는 복수의 불휘발성 메모리(1210) 각각에 저장되는 스트라이프들로 분리될 수 있다. RAID 엔진(1221)은 스트라이프들에 기초하여 패리티(Parity) 연산을 수행할 수 있다.
RAID 엔진(1221)은 패리티를 생성하는 동안 발생하는 중간 결과물들을 제1 메모리(1222)에 버퍼링할 수 있다. 만약, 컨트롤러(1220)로 수신되는 데이터의 흐름에 에러가 문제가 발생하는 경우, RAID 엔진(1221)은 패리티 연산을 중단할 수 있다. 컨트롤러(1220)로 데이터의 수신이 지연되거나, 데이터가 다 수신되지 않은 상태에서 다른 데이터가 컨트롤러(1220)로 수신되는 경우, 에러가 발생할 수 있다. 또는, 컨트롤러(1220)의 하드웨어 구성 또는 소프트웨어 구성에서 에러가 발생하여 데이터의 흐름이 제어되지 않는 경우, RAID 엔진(1221)은 패리티 연산을 중단할 수 있다. RAID 엔진(1221)의 패리티 연산이 중단되는 경우, 제1 메모리(1222)에 저장된 중간 결과물들은 제2 메모리(1223)로 이동될 수 있다.
그리고, 컨트롤러(1220)로 데이터가 정상적으로 수신되거나, 컨트롤러(1220)에서 발생된 에러가 해결되는 경우, RAID 엔진(1221)은 패리티 연산을 재개할 수 있다. RAID 엔진(1221)이 패리티 연산을 재개하기 위해서 제2 메모리(1222)에 저장된 중간 결과물들은 제1 메모리(1222)로 이동될 수 있다. RIAD 엔진(1221)의 패리티 연산의 중단 및 재개 동작에 대해서는 도 6내지 도 17c를 참조하여 설명된다.
중앙처리장치(1224)는 복수의 불휘발성 메모리(1210)에 대한 읽기/쓰기 동작에 필요한 다양한 제어 정보를 호스트 인터페이스(1225) 및 플래시 인터페이스(1227)의 레지스터들에 전달할 수 있다. 중앙처리장치(1224)는 스토리지 컨트롤러(1220)의 다양한 제어 동작을 위해 제공되는 펌웨어에 따라 동작할 수 있다. 예를 들면, 중앙처리장치(1224)는 복수의 불휘발성 메모리 (1210)을 관리하기 위한 가비지 컬렉션(Garbage collection)이나, 주소 맵핑, 웨어 레벨링 등을 수행하기 위한 플래시 변환 계층(FTL)을 실행할 수 있다.
컨트롤러(1220)의 하드웨어 구성 또는 소프트웨어 구성에서 에러가 발생하는 경우, 중앙처리장치(1224)는 RAID 엔진(1221)의 패리티 연산을 중단하도록 제어할 수 있다. 또는, 컨트롤러(1220)로 수신되는 데이터의 흐름에 에러가 발생하는 경우, 중앙처리장치(1224)는 RAID 엔진(1221)의 패리티 연산을 중단하도록 제어할 수 있다. 그리고, 중앙처리장치(1224)는 제1 메모리(1222)에 저장된 중간 결과물이 제2 메모리(1223)로 이동되도록 제어할 수 있다.
컨트롤러(1220)로 데이터가 정상적으로 수신되거나, 컨트롤러(1220)에서 발생된 에러가 해결되는 경우, 중앙처리장치(1224)는 RAID 엔진(1221)에서 패리티 연산이 재개되도록 제어할 수 있다.
호스트 인터페이스(1225)는 호스트(1100)와의 통신을 수행할 수 있다. 예를 들면, 호스트 인터페이스(1225)는 호스트(1100)와의 통신 채널을 제공한다. 호스트 인터페이스(1225)는 호스트(1100)와 스토리지 장치(1200)와의 물리적 연결을 제공할 수 있다. 즉, 호스트 인터페이스(1225)는 호스트(1100)의 버스 포맷(Bus format)에 대응하여 스토리지 장치(1200)와의 인터페이싱을 제공할 수 있다. 호스트(1100)의 버스 포맷은 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI), UFS(Universal Flash Storage) 중 적어도 하나로 구성될 수 있다.
데이터 관리기(1226)는 호스트(1100)로부터 수신되는 데이터(예로서, 스트라이프 세트)의 흐름을 관리할 수 있다. 예로서, 데이터 관리기(1226)는 스트라이프 세트를 구성하는 복수의 스트라이프 각각의 메타 또는 헤더 정보를 확인할 수 있다. 데이터 관리기(1226)는 메타 또는 헤더 정보에 기초하여, 수신되는 스트라이프의 순서를 확인할 수 있다. 수신되는 스트라이프 세트에 대응하는 스트라이프가 수신되는 시간이 기준 시간보다 딜레이 되거나, 다른 스트라이프 세트에 대응하는 스트라이프가 수신되는 경우, 데이터 관리기(1226)는 이러한 정보를 중앙처리장치(1224) 및 RAID 엔진(1221) 중 적어도 하나로 제공할 수 있다.
플래시 인터페이스(1227)는 복수의 불휘발성 메모리(1210)와 데이터(예로서, 스트라이프 세트)를 교환한다. 플래시 인터페이스(1227)는 메모리 채널들(미 도시)을 경유하여 복수의 불휘발성 메모리(1210)에 데이터 기입한다. 그리고 불휘발성 메모리 장치(230, 240, 250)로부터 메모리 채널들(미 도시)을 통하여 제공되는 읽기 데이터(Read data)는 플래시 인터페이스(1227)에 의해서 취합될 수 있다.
도 3은 도 1의 스토리지 장치에서 RAID 방식을 이용하여 스트라이프 세트를 처리하는 방법을 설명하기 위한 도면이다. RAID 방식에서, 데이터는 스트라이프 세트(Stripe Set) 단위로 관리될 수 있다. 컨트롤러(1220)는 호스트(1100)로부터 제1 스트라이프 세트(S_SET1)를 수신할 수 있다. 이때, 제1 스트라이프 세트(S_SET1)는 하나의 데이터에 해당할 수 있다. 그리고, 제1 스트라이프 세트(S_SET1)는 복수의 스트라이프(Stripe)로 구성될 수 있다. 복수의 스트라이프 각각은 데이터 청크(data chunk)에 해당할 수 있다. 예로서, 제1 스트라이프 세트(S_SET1)는 제1 내지 제3 스트라이프(S11, S12, S13)로 구성될 수 있다.
RAID 엔진(1221)은 호스트(1100)로부터 복수의 스트라이프(S11, S12, S13)으로 구성되는 제1 스트라이프 세트(S_SET1)를 수신할 수 있다. RAID 엔진(1221)은 복수의 스트라이프(S11, S12, S13)에 기초하여 패리티(P13)를 생성할 수 있다. 복수의 스트라이프(S11, S12, S13) 중 일부가 손실되거나 손상되는 경우, 패리티(P13)는 손실 또는 손상된 스트라이프를 복원 또는 복구하기 위해 이용될 수 있다.
RAID 엔진(1221)은 복수의 스트라이프(S11, S12, S13)에 기초하여 패리티(P13)를 생성하기 위해, 다양한 연산들을 수행할 수 있다. 제1 메모리(1222), 및/또는 제2 메모리(1223)는 연산들이 수행되는 동안 생성/처리되는 중간 결과물들 저장하거나 버퍼링 할 수 있다. 예로서, RAID 엔진(1221)은 패리티(P13)를 생성하는 동안 발생하는 중간 결과물들을 제1 메모리(1222)에 버퍼링할 수 있다. 만약, 컨트롤러(1220)의 동작에 에러가 발생하는 경우, RAID 엔진(1221)은 제1 메모리(1222)에 저장된 중간 결과물들을 제2 메모리(1223)로 이동시킬 수 있다. 이에 대해서는 도 5 및 도 16을 참조하여 설명된다.
복수의 스트라이프(S11, S12, S13) 및 패리티(P13)는 불휘발성 메모리들(1211, 1212, 1213, 1214)로 분산하여 저장될 수 있다. 예로서, 컨트롤러(1220)는 불휘발성 메모리들(1211, 1212, 1213, 1214)로 각각 복수의 스트라이프(S11, S12, S13) 및 패리티(P13)를 저장할 수 있다.
패리티(P13)는 불휘발성 메모리들(1211, 1212, 1213, 1214) 중 적어도 하나에 에러가 발생하는 경우, 에러가 발생한 불휘발성 메모리에 포함되는 스트라이프에 해당하는 데이터 청크는 손상될 수 있다. 이 같은 경우, 컨트롤러(1220)는 복수의 스트라이프(S11, S12, S13) 중 손상되지 않은 스트라이프들, 및 패리티(P13)에 기초하여 손상된 스트라이프에 해당하는 데이터 청크를 복원할 수 있다. RAID 방식은 스토리지 장치(1300)의 신뢰성을 향상시킬 수 있다.
도 4는 스토리지 장치에서 RAID 방식을 이용하여 스트라이프 세트를 처리하는 방법을 보여주기 위한 블록도이다. 도 5는 스토리지 장치에서 패리티를 생성하는 예시적인 과정을 보여주기 위한 개념도이다.
도 4를 참조하면, RAID 엔진(1221)은 복수의 스트라이프(S11, S12, S13)를 수신할 수 있다. RAID 엔진(1221)은 제1 스트라이프 세트(S_SET1)에 대한 제1 스트라이프(S11), 제2 스트라이프(S12), 및 제3 스트라이프(S13) 순서로 복수의 스트라이프(S11, S12, S13)를 각각 수신할 수 있다.
RAID 엔진(1221)은 복수의 스트라이프(S11, S12, S13)에 기초하여 패리티(P13)를 생성하기 위해, 패리티 연산을 수행할 수 있다. 예로서, 패리티 연산은 비트 단위의(Bitwise) 배타적 논리 합(Exclusive Logical OR) 연산을 포함할 수 있다. RAID 엔진(1221)은 패리티 연산을 수행하기 위한 연산기(Operator)를 포함할 수 있다.
제1 메모리(1222)는 RAID 엔진(1221)에서 산출되는 중간 패리티 및/또는 최종 패리티를 저장할 수 있다. 예로서, 중간 패리티는 최종 패리티가 산출되는 동안 생성되는 중간 결과들을 의미할 수 있고, 최종 패리티는 복수의 불휘발성 메모리(1210)에 저장되는 패리티를 의미할 수 있다.
제2 메모리(1223)는 RAID 엔진(1221)에서 산출되는 중간 패리티를 저장할 수 있다. 만약, RAID 엔진(1221)이 최종 패리티를 생성하는 동안, 컨트롤러(1220)의 동작에 에러가 발생하는 경우, 제1 메모리(1222)에 저장되어 있던 중간 패리티는 제2 메모리(1223)로 이동될 수 있다. 이는 도 5 내지 도 7을 참조하여 설명된다.
도 5 및 도 4를 참조하면, 시각 t11에서, RAID 엔진(1221)은 제1 스트라이프(S11)를 수신할 수 있다. RAID 엔진(1221)은 제1 스트라이프 (S11)에 기초하여 중간 패리티(P11)를 생성할 수 있다. 예로서, 중간 패리티(P11)는 제1 스트라이프(S11)와 실질적으로 동일할 수 있다. 시각 t12에서, 중간 패리티(P11)는 제1 메모리(1222)에 저장될 수 있고, 제1 스트라이프(S11)는 복수의 불휘발성 메모리(1210)에 저장될 수 있다.
시각 t13에서, RAID 엔진(1221)은 제2 스트라이프(S12)를 수신할 수 있다. 그리고, RAID 엔진(1221)은 제1 메모리(1222)로부터 중간 패리티(P11)를 수신할 수 있다. RAID 엔진(1221)은 제2 스트라이프(S12) 및 중간 패리티(P11)에 대해 패리티 연산을 수행하여 중간 패리티(P12)를 생성할 수 있다. 시각 t14에서, RAID 엔진(1221)은 중간 패리티(P12)를 제1 메모리(1222)에 저장할 수 있다. 그리고, RAID 엔진(1221)은 복수의 불휘발성 메모리(1210)에 제2 스트라이프(S12)를 저장할 수 있다.
시각 t15에서, RAID 엔진(1221)은 제3 스트라이프(S13)를 수신할 수 있다. 그리고, RAID 엔진(1221)은 제1 메모리(1222)로부터 중간 패리티(P12)를 수신할 수 있다. RAID 엔진(1221)은 제3 스트라이프(S13) 및 중간 패리티(P12)에 대해 패리티 연산을 수행하여 최종 패리티(P13)(또는, 패리티(P13))를 생성할 수 있다. 시각 t16에서, RAID 엔진(1221)은 패리티(P13)를 제1 메모리(1222)에 저장할 수 있다. RAID 엔진(1221)은 복수의 불휘발성 메모리(1210)에 제3 스트라이프(S13) 를 저장할 수 있다. 그리고, 제1 메모리(1222)는 복수의 불휘발성 메모리(1210)에 패리티(P13)를 저장할 수 있다.
도 6은 도 1의 스토리지 장치에서 RAID 방식을 이용하여 스트라이프 세트를 처리하는 방법을 보여주기 위한 블록도이다. 도 7은 도 6의 RAID 엔진에서 스트라이프 세트를 처리하는 방법에 따라 제1 메모리 및 제2 메모리 사이에서 이동되는 중간 패리티에 대해 예시적으로 보여주기 위한 블록도이다.
도 5를 참조하면, RAID 엔진(1221)은 복수의 스트라이프(S11, S12, S13)를 수신할 수 있다. RAID 엔진(1221)은 제1 스트라이프 세트(S_SET1)에 대한 제1 스트라이프(S11), 제2 스트라이프(S12), 및 제3 스트라이프(S13) 순서로 복수의 스트라이프(S11, S12, S13)를 각각 수신할 수 있다.
예로서, 제2 스트라이프(S12)의 입력과 제3 스트라이프(S13)의 입력 사이에서 시간 딜레이(time delay, td)가 발생할 수 있다. 호스트(1100)의 제3 스트라이프(S13)의 출력이 지연됨에 따라 시간 딜레이(td)가 발생할 수 있다. 또는, 제1 내지 제3 스트라이프들(S11, S12, S13)이 컨트롤러(12200)로 수신된 후, 컨트롤러(1220)의 하드웨어 구성 또는 소프트웨어 구성에서 에러가 발생하는 경우, 시간 딜레이(td)가 발생할 수 있다.
시간 딜레이(td)가 기준 시간보다 길어지는 경우, RAID 엔진(1221)의 패리티 연산은 중지될 수 있다. 그리고, 도 7 참조하면, 제1 메모리(1222)에 저장된 중간 패리티는 제2 메모리(1223)로 이동될 수 있다. 좀 더 구체적으로, 제1 메모리(1222)에 저장된 제2 스트라이프(S12)에 대해 생성된 중간 패리티(P12)는 제2 메모리(1223)로 이동될 수 있다. 그리고, 다른 스트라이프 세트에 대한 패리티 연산을 수행하기 위해, 제1 메모리(1222)의 중간 패리티(P12)는 삭제될 수 있다.
도 8은 도 6의 RAID 엔진에서 RAID 방식을 이용하여 스트라이프 세트를 처리하는 방법을 보여주기 위한 순서도이다. 도 6 및 도 8을 참조하면, S110 단계에서, RAID 엔진(1221)은 제1 스트라이프 세트(S_SET1)와 관련하여 처음으로 처리되는 스트라이프를 수신할 수 있다.
S115 단계에서, RAID 엔진(1221)은 스트라이프에 기초하여 중간 패리티를 생성할 수 있고, 생성된 중간 패리티는 제1 메모리(1222)에 저장될 수 있다. S120 단계에서, RAID 엔진(1221)은 패리티 연산을 중지해야 하는 상황이 발생하였는지 판단할 수 있다. 예로서, 컨트롤러(1220) 동작에 에러가 발생하는 경우, RAID 엔진(1221)의 패리티 연산은 중지될 수 있다. 컨트롤러(1220) 동작에 에러가 발생하는 경우, 스트라이프에 대응하는 데이터가 처리되지 못할 수 있다. 또는, 컨트롤러(1220)로 스트라이프의 수신이 딜레이 되는 경우, RAID 엔진(1221)의 패리티 연산은 중지될 수 있다.
RAID 엔진(1221)에서 패리티 연산을 중지해야 하는 상황이 발생하는 경우(Yes), S125 단계에서, RAID 엔진(1221)은 패리티 연산을 중단한다. 패리티 연산이 중단되고, S130 단계에서, 제1 메모리(1222)에 저장된 중간 패리티는 제2 메모리(1223)로 이동될 수 있다. 그리고, RAID 엔진(1221)의 패리티 연산은 종료될 수 있다.
RAID 엔진(1221)에서 패리티 연산을 중지해야 하는 상황이 발생하지 않는 경우(Yes), S135 단계에서, RAID 엔진(1221)은 수신된 스트라이프 및 제1 메모리(1222)에 저장된 중간 패리티에 기초하여 중간 패리티를 생성할 수 있다. 그리고, RAID 엔진(1221)은 생성된 중간 패리티를 제1 메모리(1222)에 저장할 수 있다.
S140 단계에서, 컨트롤러(1220)는 제1 스트라이프 세트(S_SET1)의 마지막 스트라이프가 수신되었는지 판단할 수 있다. 예로서, RAID 엔진(1221)은 데이터 관리기(1226, 도 2에 도시)로부터 스트라이프의 순서에 대한 정보를 수신할 수 있다. 수신된 스트라이프가 제1 스트라이프 세트(S_SET1)에 대해 마지막으로 수신되는 스트라이프가 아닌 경우(No), RAID 엔진(1221)은 S135 단계에서 수신된 스트라이프 및 제1 메모리(1222)에 저장된 중간 패리티에 기초하여 중간 패리티를 생성할 수 있다.
수신된 스트라이프가 제1 스트라이프 세트(S_SET1)에 대해 마지막으로 수신되는 스트라이프인 경우(Yes), S145 단계에서, RAID 엔진(1221)은 마지막 스트라이프 및 제1 메모리(1222)에 저장된 중간 패리티에 기초하여 패리티(예로서, 최종 패리티)를 생성할 수 있다. 그리고 생성된 패리티는 복수의 불휘발성 메모리(1210)에 저장될 수 있다.
도 9는 도 1의 스토리지 장치에서 RAID 방식을 이용하여 스트라이프 세트를 처리하는 방법을 보여주기 위한 블록도이다. 도 10은 도 9의 RAID 엔진에서 패리티를 생성하는 예시적인 과정을 보여주기 위한 개념도이다.
도 9를 참조하면, 제1 스트라이프 세트(S_SET1)에 대한 모든 스트라이프들(예로서, S11, S12, S13)이 RAID 엔진(1221)으로 수신되지 못하고, 일부 스트라이프들(예로서, S11, S12)만 RAID 엔진(1221)으로 수신될 수 있다. 그리고, 제1 스트라이프 세트(S_SET1)의 일부 스트라이프들(예로서, S11, S12)이 RAID 엔진(1221)으로 수신된 상태에서, 제2 스트라이프 세트(S_SET2)에 대한 스트라이프들(S21, S22, S23)이 RAID 엔진(1221)으로 수신될 수 있다. RAID 엔진(1221)의 패리티 생성 및 저장하는 방법에 대해서 도 9를 참조하여 설명된다.
도 9 및 도 10을 참조하면, 시각 t21에서, RAID 엔진(1221)은 제1 스트라이프(S11)를 수신할 수 있다. RAID 엔진(1221)은 제1 스트라이프(S11)에 기초하여 중간 패리티(P11)를 생성할 수 있다. 예로서, 중간 패리티(P11)는 제1 스트라이프(S11)와 실질적으로 동일할 수 있다. 시각 t22에서, 중간 패리티(P11)는 제1 메모리(1222)에 저장될 수 있고, 제1 스트라이프(S11)는 복수의 불휘발성 메모리(1210)에 저장될 수 있다.
시각 t23에서, RAID 엔진(1221)은 제2 스트라이프(S12)를 수신할 수 있다. 그리고, RAID 엔진(1221)은 제1 메모리(1222)로부터 중간 패리티(P11)를 수신할 수 있다. RAID 엔진(1221)은 제2 스트라이프(S12) 및 중간 패리티(P11)에 대해 패리티 연산을 수행하여 중간 패리티(P12)를 생성할 수 있다. 시각 t24에서, RAID 엔진(1221)은 중간 패리티(P12)를 제1 메모리(1222)에 저장할 수 있다. 그리고, RAID 엔진(1221)은 제2 스트라이프(S12)를 복수의 불휘발성 메모리(1210)에 저장할 수 있다.
시각 t25에서, RAID 엔진(1221)은 제2 스트라이프 세트(S_SET2)에 대한 제1 스트라이프(S21)를 수신할 수 있다. 제1 스트라이프 세트(S_SET1)가 모두 수신되지 않은 상태에서, 제2 스트라이프 세트(S_SET2)가 수신되었다. 이로 인해, RAID 엔진(1221)의 패리티 연산은 중지될 수 있다.
시각 t26에서, 중간 패리티(P12)는 제1 메모리(1222)에서 제2 메모리(1223)로 이동될 수 있다. 그리고, RAID 엔진(1221)에서 제2 스트라이프 세트(S_SET2)의 스트라이프들(S21, S22, S23)에 대해 패리티 연산이 수행되도록, 제1 메모리(1222)에 저장된 중간 패리티(P12)는 삭제될 수 있다.
시각 t27에서, RAID 엔진(1221)은 제1 스트라이프(S21)에 기초하여 중간 패리티(P21)를 생성할 수 있다. 예로서, 중간 패리티(P21)는 제1 스트라이프(S21)와 실질적으로 동일할 수 있다. 시각 t28에서, 중간 패리티(P21)는 제1 메모리(1222)에 저장될 수 있고, 제1 스트라이프(S21)는 복수의 불휘발성 메모리(1210)에 저장될 수 있다.
시각 t29에서, RAID 엔진(1221)은 제2 스트라이프(S22)를 수신할 수 있다. 그리고, RAID 엔진(1221)은 제1 메모리(1222)로부터 중간 패리티(P21)를 수신할 수 있다. RAID 엔진(1221)은 제2 스트라이프(S22) 및 중간 패리티(P21)에 대해 패리티 연산을 수행하여 중간 패리티(P22)를 생성할 수 있다. 시각 t30에서, RAID 엔진(1221)은 중간 패리티(P22)를 제1 메모리(1222)에 저장할 수 있다. 그리고, RAID 엔진(1221)은 복수의 불휘발성 메모리(1210)에 제2 스트라이프(S22)를 저장할 수 있다.
시각 t31에서, RAID 엔진(1221)은 제3 스트라이프(S23)를 수신할 수 있다. 그리고, RAID 엔진(1221)은 제1 메모리(1222)로부터 중간 패리티(P22)를 수신할 수 있다. RAID 엔진(1221)은 제3 스트라이프(S23) 및 중간 패리티(P22)에 대해 패리티 연산을 수행하여 최종 패리티(P23)(또는, 패리티(P23))를 생성할 수 있다. 시각 t32에서, RAID 엔진(1221)은 패리티(P33)를 제1 메모리(1222)에 저장할 수 있다. RAID 엔진(1221)은 복수의 불휘발성 메모리(1210)에 제3 스트라이프(S23)를 저장할 수 있다. 그리고, 제1 메모리(1222)는 복수의 불휘발성 메모리(1210)에 패리티(P23)를 저장할 수 있다.
컨트롤러(1220)로 데이터의 수신이 딜레이 되거나, 컨트롤러(1220) 내부의 동작에 에러가 발생하는 경우, 본 발명의 실시 예에 따른 RAID 엔진(1221)은 수신되는 스트라이프 세트에 대한 패리티 연산을 중단할 수 있다. 그리고, 제1 메모리(1222)에 저장되는 중간 패리티는 제2 메모리(1223)로 이동될 수 있다. 제1 메모리(1222)에 저장된 중간 패리티는 삭제되고, RAID 엔진(1221)은 다른 스트라이프 세트에 대한 패리티 연산을 수행할 수 있도록 준비될 수 있다. 따라서, 패리티를 생성하는 데에 대한 레이턴시가 감소할 수 있고, 스토리지 장치(1200)의 성능이 향상될 수 있다.
도 11은 도 1의 스토리지 장치에서 RAID 방식을 이용하여 스트라이프 세트를 처리하는 방법을 보여주기 위한 블록도이다. 도 12는 도 11의 RAID 엔진에서 스트라이프 세트를 처리하는 방법에 따라 제1 메모리 및 제2 메모리 사이에서 이동되는 중간 패리티에 대해 예시적으로 보여주기 위한 블록도이다. 도 13은 도 11의 RAID 엔진에서 패리티를 생성하는 예시적인 과정을 보여주기 위한 개념도이다.
도 11을 참조하면, 컨트롤러(1220)로 데이터가 정상적으로 수신되거나, 컨트롤러(1220)에서 발생된 에러가 해결되는 경우, 제1 스트라이프 세트(S_SET1)에 대한 패리티가 다시 RAID 엔진(1221)으로 수신될 수 있다. 예로서, 도 9를 참조하면, 제2 스트라이프 세트(S_SET2)에 대한 스트라이프들(S21, S22, S23)의 패리티 연산이 완료된 후, 다시 RAID 엔진(12210)으로 제1 스트라이프 세트(S_SET1)에 대한 패리티가 수신될 수 있다. RAID 엔진(1221)은 제1 스트라이프 세트(S_SET1)에 대한 패리티 연산을 재개할 수 있다. 제3 스트라이프(S13)는 제1 스트라이프 세트(S_SET1)에 대해 마지막으로 처리되는 스트라이프이므로, RAID 엔진(12210)은 제1 스트라이프 세트(S_SET1)에 대한 패리티 연산을 한 번만 수행할 수 있다.
도 12를 참조하면, RAID 엔진(12210)은 제1 스트라이프 세트(S_SET1)에 대한 패리티 연산을 재개할 수 있다. 패리티 연산을 재개하기 위해서, 제2 메모리(1223)에 저장된 중간 패리티(P12)는 제1 메모리(1222)로 이동될 수 있다. RAID 엔진(12210)의 패리티를 생성하는 과정은 도 13을 참조하여 더 설명된다.
도 11 및 도 13을 참조하면, 시각 t41에서, 제3 스트라이프(S13)가 RAID 엔진(12210)으로 수신될 수 있다. 시각 t42에서, 중간 패리티(P12)는 제2 메모리(1223)에서 제1 메모리(1222)로 이동될 수 있다.
시각 t43에서, RAID 엔진(12210)은 제3 스트라이프(S13) 및 중간 패리티(P12)에 대해 패리티 연산을 수행하여 최종 패리티(P13)(또는, 패리티(P13))를 생성할 수 있다. 시각 t44에서, RAID 엔진(12210)은 패리티(P13)를 제1 메모리(1222)에 저장할 수 있다. RAID 엔진(12210)은 복수의 불휘발성 메모리(1210)에 제3 스트라이프(S13)를 저장할 수 있다. 그리고, 제1 메모리(1222)는 복수의 불휘발성 메모리(1210)에 패리티(P13)를 저장할 수 있다.
도 14는 도 11의 RAID 엔진에서 RAID 방식을 이용하여 스트라이프 세트를 처리하는 방법을 보여주기 위한 순서도이다. S210 단계에서, 컨트롤러(1220)는 RAID 엔진(12210)에서 제1 스트라이프 세트(S_SET1)에 대한 패리티 연산을 재개할 수 있는지 판단할 수 있다. 제1 스트라이프 세트(S_SET1)에 대한 패리티 연산을 재개할 수 있는 경우(Yes), RAID 엔진(1221)은 제1 스트라이프 세트(S_SET1)의 스트라이프를 수신할 수 있다. 예로서, 수신된 스트라이프는 제1 스트라이프 세트(S_SET1)에 대한 스트라이프들 중 처리되지 못한 스트라이프일 수 있다.
S220 단계에서, 제2 메모리(1223)에 저장된 중간 패리티는 제1 메모리(1222)로 이동될 수 있다. 예로서, 제2 메모리(1223)에 저장된 중간 패리티는 수신된 스트라이프 이전에 수신되었던 스트라이프에 대한 패리티 연산의 결과이다.
S230 단계에서, RAID 엔진(1221)은 수신된 스트라이프 및 중간 패리티에 기초하여 중간 패리티를 생성할 수 있고, 생성된 중간 패리티는 제1 메모리(1222)에 저장될 수 있다.
S240 단계에서, 컨트롤러(1220)는 제1 스트라이프 세트(S_SET1)의 마지막 스트라이프가 수신되었는지 판단할 수 있다. 예로서, RAID 엔진(1221)은 데이터 관리기(1226, 도 2에 도시)로부터 스트라이프의 순서에 대한 정보를 수신할 수 있다.
수신된 스트라이프가 제1 스트라이프 세트(S_SET1)에 대해 마지막으로 수신되는 스트라이프가 아닌 경우(No), RAID 엔진(1221)은 S230 단계에서 수신된 스트라이프 및 제1 메모리(1222)에 저장된 중간 패리티에 기초하여 중간 패리티를 생성할 수 있다. 수신된 스트라이프가 제1 스트라이프 세트(S_SET1)에 대해 마지막으로 수신되는 스트라이프인 경우(Yes), S250 단계에서, RAID 엔진(1221)은 마지막 스트라이프 및 제1 메모리(1222)에 저장된 중간 패리티에 기초하여 패리티(예로서, 최종 패리티)를 생성할 수 있다. 그리고 생성된 패리티는 복수의 불휘발성 메모리(1210)에 저장될 수 있다.
도 15는 도 1의 스토리지 장치에서 RAID 방식을 이용하여 스트라이프 세트를 처리하는 방법을 보여주기 위한 블록도이다. 도 15를 참조하면, 제1 스트라이프 세트(S_SET1)에 대한 스트라이프들(S11, S12, S13) 및 제2 스트라이프 세트(S_SET2)에 대한 스트라이프들(S21, S22, S23)은 RAID 엔진(1221)으로 비순차적으로 입력될 수 있다.
예로서, 제1 스트라이프 세트(S_SET1)에 대한 제1 스트라이프(S11), 제2 스트라이프(S12), 제2 스트라이프 세트(S_SET2)에 대한 제1 스트라이프(S21), 제2 스트라이프(S22), 및 제1 스트라이프 세트(S_SET1)에 대한 제3 스트라이프(S13) 마지막으로 제2 스트라이프 세트(S_SET2)에 대한 제3 스트라이프(S23) 순서로 입력될 수 있다. 스트라이프들이 RAID 엔진(1221)으로 비순차적으로 입력되는 경우, 패리티의 생성되는 과정은 도 16를 참조하여 설명된다.
제1 메모리(1222)는 복수의 메모리 영역(1222_1, 1222_2)으로 구분될 수 있다. 복수의 메모리 영역(1222_1, 1222_2)은 각각 제1 스트라이프 세트(S_SET1)에 대한 중간 패리티 및 제2 스트라이프 세트(S_SET2)에 대한 중간 패리티를 저장할 수 있다. 그리고, 제2 메모리(1223)는 복수의 메모리 영역(1223_1, 1223_2)으로 구분될 수 있다. 복수의 메모리 영역(1223_1, 1223_2)은 각각 제1 메모리(1222)의 복수의 메모리 영역(1222_1, 1222_2)으로부터 수신되는 중간 패리티를 저장할 수 있다. 도 15의 제1 및 제2 메모리들(1222, 1223)은 각각 두 개의 메모리 영역을 보여주지만, 본 발명은 이에 한정되지 않고, 메모리 영역들의 개수는 다양하게 변경 또는 수정될 수 있다.
도 16은 도 15의 RAID 엔진에서 패리티를 생성하는 예시적인 과정을 보여주기 위한 개념도이다. 도 17a 내지 도 17c는 도 15의 스트라이프 세트를 처리하는 방법에 따라 제1 메모리 및 제2 메모리 사이에서 이동되는 중간 패리티에 대해 예시적으로 보여주기 위한 블록도이다.
도 16 및 도 15를 참조하면, 시각 t51에서, RAID 엔진(1221)은 제1 스트라이프 세트(S_SET1)에 대한 제1 스트라이프(S11)를 수신할 수 있다. RAID 엔진(1221)은 제1 스트라이프(S11)에 기초하여 중간 패리티(P11)를 생성할 수 있다. 예로서, 중간 패리티(P11)는 제1 스트라이프(S11)와 실질적으로 동일할 수 있다. 시각 t52에서, 중간 패리티(P11)는 제1 메모리(1222)의 제1 메모리 영역(1222_1) 저장될 수 있고, 제1 스트라이프(S11)는 복수의 불휘발성 메모리(1210)에 저장될 수 있다.
시각 t53에서, RAID 엔진(1221)은 제1 스트라이프 세트(S_SET1)에 대한 제2 스트라이프(S12)를 수신할 수 있다. 그리고, RAID 엔진(1221)은 제1 메모리(1222)의 제1 메모리 영역(1222_1)으로부터 중간 패리티(P11)를 수신할 수 있다. RAID 엔진(1221)은 제2 스트라이프(S12) 및 중간 패리티(P11)에 대해 패리티 연산을 수행하여 중간 패리티(P12)를 생성할 수 있다. 시각 t54에서, RAID 엔진(1221)은 중간 패리티(P12)를 제1 메모리(1222)의 제1 메모리 영역(1222_1)에 저장할 수 있다. 그리고, RAID 엔진(1221)은 복수의 불휘발성 메모리(1210)에 제2 스트라이프(S12)를 저장할 수 있다.
시각 t55에서, RAID 엔진(1221)은 제2 스트라이프 세트(S_SET2)에 대한 제1 스트라이프(S21)를 수신할 수 있다. 제1 스트라이프 세트(S_SET1)가 모두 수신되지 않은 상태에서, 제2 스트라이프 세트(S_SET2)가 수신되었다. 이로 인해, RAID 엔진(1221)의 제1 스트라이프 세트(S_SET1)에 대한 패리티 연산은 중지된다.
도 17a를 함께 참조하면, 시각 t56에서, 제1 메모리(1222)의 제1 메모리 영역(1222_1)에 저장된 중간 패리티(P12)는 제2 메모리(1223)의 제1 메모리 영역(1223_1)으로 이동될 수 있다(①). 그리고, RAID 엔진(1221)에서 제2 스트라이프 세트(S_SET2)의 스트라이프들(S21, S22, S23)에 대해 패리티 연산이 수행되기 위해, 제1 메모리(1222)에 저장된 중간 패리티(P12)는 삭제될 수 있다.
시각 t57에서, RAID 엔진(1221)은 제1 스트라이프(S21)에 기초하여 중간 패리티(P21)를 생성할 수 있다. 예로서, 중간 패리티(P21)는 제1 스트라이프(S21)와 실질적으로 동일할 수 있다. 시각 t58에서, 중간 패리티(P21)는 제1 메모리(1222)의 제2 메모리 영역(1222_2)에 저장될 수 있고, 제1 스트라이프(S21)는 복수의 불휘발성 메모리(1210)에 저장될 수 있다.
시각 t59에서, RAID 엔진(1221)은 제2 스트라이프(S22)를 수신할 수 있다. 그리고, RAID 엔진(1221)은 제1 메모리(1222)의 제2 메모리 영역(1222_2)로부터 중간 패리티(P21)를 수신할 수 있다. RAID 엔진(1221)은 제2 스트라이프(S22) 및 중간 패리티(P21)에 대해 패리티 연산을 수행하여 중간 패리티(P22)를 생성할 수 있다. 시각 t60에서, RAID 엔진(1221)은 중간 패리티(P22)를 제1 메모리(1222)의 제2 메모리 영역(1222_2)에 저장할 수 있다. 그리고, RAID 엔진(1221)은 복수의 불휘발성 메모리(1210)로 제2 스트라이프(S22)를 저장할 수 있다.
시각 t61에서, RAID 엔진(1221)은 제1 스트라이프 세트(S_SET1)에 대한 제3 스트라이프(S13)를 수신할 수 있다 RAID 엔진(1221)은 제1 스트라이프 세트(S_SET1)에 대한 패리티 연산을 재개할 수 있다. RAID 엔진(1221)은 제3 스트라이프(S13)대한 패리티 연산을 수행하기 위해, 제2 스트라이프 세트(S_SET2)에 대한 패리티 연산을 중지할 수 있다.
도 17b를 함께 참조하면, 시각 t62에서, 제2 메모리(1223)의 제1 메모리 영역(1223_1)에 저장된 제1 스트라이프 세트(S_SET1)에 대한 중간 패리티(P12)는 제1 메모리(1222)의 제1 메모리 영역(1222_1)으로 이동될 수 있다(②). 그리고, 제1 메모리(1222)의 제2 메모리 영역(1222_2)에 저장된 제2 스트라이프 세트(S_SET2)에 대한 중간 패리티(P22)는 제2 메모리(1223)의 제2 메모리 영역(1223_2)로 이동될 수 있다(③). 제1 메모리(1222) 및 제2 메모리(1223) 사이에서 중간 패리티들의 이동은 동시에 수행될 수 있다.
시각 t63에서, RAID 엔진(1221)은 제1 메모리(1222)의 제1 메모리 영역(1222_1)으로부터 중간 패리티(P12)를 수신할 수 있다. RAID 엔진(1221)은 제3 스트라이프(S13) 및 중간 패리티(P12)에 대해 패리티 연산을 수행하여 최종 패리티(P13)(또는, 패리티(P13))를 생성할 수 있다. 시각 t64에서, RAID 엔진(1221)은 패리티(P13)를 제1 메모리(1222)의 제1 메모리 영역(1222_1)에 저장할 수 있다 RAID 엔진(1221)은 복수의 불휘발성 메모리(1210)에 제3 스트라이프(S13)를 저장할 수 있다. 그리고, 제1 메모리(1222)는 복수의 불휘발성 메모리(1210)에 패리티(P13)를 저장할 수 있다.
시각 t65에서, RAID 엔진(1221)은 제2 스트라이프 세트(S_SET12)에 대한 제3 스트라이프(S23)를 수신할 수 있다 RAID 엔진(1221)은 제2 스트라이프 세트(S_SET2)에 대한 패리티 연산을 재개할 수 있다. 도 17c를 함께 참조하면, 2 스트라이프 세트(S_SET2)에 대한 패리티 연산을 재개하기 위해, 제2 메모리(1223)의 제2 메모리 영역(1223_2)에 저장된 중간 패리티(P22)는 제1 메모리(1222)의 제2 메모리 영역(1222_2)으로 이동될 수 있다(④).
시각 t66에서, RAID 엔진(1221)은 제1 메모리(1222)의 제2 메모리 영역(1222_2)으로부터 중간 패리티(P22)를 수신할 수 있다. RAID 엔진(1221)은 제3 스트라이프(S23) 및 중간 패리티(P22)에 대해 패리티 연산을 수행하여 최종 패리티(P23)(또는, 패리티(P13))를 생성할 수 있다. 시각 t67에서, RAID 엔진(1221)은 패리티(P23)를 제1 메모리(1222)의 제2 메모리 영역(1222_2)에 저장할 수 있다 RAID 엔진(1221)은 복수의 불휘발성 메모리(1210)에 제3 스트라이프(S23)를 저장할 수 있다. 그리고, 제1 메모리(1222)는 복수의 불휘발성 메모리(1210)에 패리티(P23)를 저장할 수 있다.
컨트롤러(1220)로 스트라이프의 수신이 딜레이 되거나, 컨트롤러(1220) 내부에 발생하는 에러에 의해 스트라이프의 흐름이 제어되지 않는 경우, 본 발명의 실시 예에 따른 RAID 엔진(1221)은 수신되는 스트라이프 세트에 대한 패리티 연산을 중단할 수 있다. 그리고, RAID 엔진(1221)은 제1 메모리(1222)에 저장되는 패리티 연산 중 생성되는 중간 패리티를 제2 메모리(1223)로 이동시킬 수 있다. RAID 엔진(1221)은 제1 메모리(1222)에 저장된 중간 패리티를 삭제하고, 다른 스트라이프 세트에 대한 패리티 연산을 수행할 수 있도록 준비될 수 있다. 그리고, 컨트롤러(1220)로 데이터가 정상적으로 수신되거나, 컨트롤러(1220)에서 발생된 에러가 해결되는 경우, RAID 엔진(1221)은 패리티 연산을 재개할 수 있다. 따라서, 패리티를 생성하는 데에 대한 레이턴시가 감소할 수 있고, 스토리지 장치(1200)의 성능이 향상될 수 있다.
위에서 설명된 내용은 본 발명의 기술 사상을 구현하기 위한 구체적인 예들이다. 본 발명의 기술 사상은 위에서 설명된 실시 예들뿐만 아니라, 단순하게 설계 변경하거나 용이하게 변경하여 얻어질 수 있는 실시 예들도 포함할 것이다. 또한, 본 발명의 기술 사상에는 위에서 설명된 실시 예들에 기초하여 앞으로 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다.

Claims (10)

  1. 스트라이프 세트(Stripe Set)에 대한 제1 및 제2 스트라이프(Strip)들을 분산하여 저장하도록 구성되는 복수의 불휘발성 메모리; 및
    호스트로부터 상기 제1 및 제2 스트라이프들을 수신하고, 상기 제1 및 제2 스트라이프들을 상기 복수의 불휘발성 메모리로 분산하여 저장하고, 상기 제1 및 제2 스트라이프들에 기초하여 패리티 연산을 수행하는 컨트롤러를 포함하되,
    상기 컨트롤러는 상기 제1 스트라이프에 기초하여 중간 패리티를 생성하고,
    상기 중간 패리티를 상기 컨트롤러 내부의 제1 메모리에 저장하고,
    상기 패리티 연산이 중단되는 경우, 상기 제1 메모리에 저장된 상기 중간 패리티를 상기 컨트롤러 내부의 제2 메모리로 이동시키는 스토리지 장치.
  2. 제 1 항에 있어서,
    상기 컨트롤러는 상기 패리티 연산을 수행하기 위한 RAID 엔진을 포함하는 스토리지 장치.
  3. 제 2 항에 있어서,
    상기 RAID 엔진이 제1 및 제2 스트라이프들에 기초하여 패리티 연산을 수행하는 중에 상기 컨트롤러의 동작에 에러가 발생하는 경우, 상기 패리티 연산이 중단되고, 상기 제1 메모리에 저장된 상기 중간 패리티는 상기 제2 메모리로 이동되는 스토리지 장치.
  4. 제 2 항에 있어서,
    상기 제1 스트라이프 다음에 상기 제2 스트라이프가 기준 시간 이내에 수신되지 않는 경우, 상기 RAID 엔진은 상기 패리티 연산을 중단하고,
    상기 제1 메모리에 저장된 상기 중간 패리티는 상기 제2 메모리로 이동되는 스토리지 장치.
  5. 제 4 항에 있어서,
    상기 스트라이프 세트는 제1 스트라이프 세트고,
    상기 호스트로부터 상기 제1 스트라이프 세트와 다른 제2 스트라이프 세트에 대한 제3 및 제4 스트라이프들이 상기 컨트롤러로 수신되는 경우, 상기 RAID 엔진은 상기 제3 및 제4 스트라이프들에 기초하여 상기 패리티 연산을 수행하는 스토리지 장치.
  6. 제 5 항에 있어서,
    상기 RAID 엔진은
    상기 제3 스트라이프에 기초하여 제1 중간 패리티를 생성하고,
    상기 제1 중간 패리티를 상기 제1 메모리에 저장하고,
    상기 제3 스트라이프 다음에 수신되는 상기 제4 스트라이프가 상기 제2 스트라이프 세트에 관련하여 마지막으로 처리되는 스트라이프인 경우, 상기 제4 스트라이프 및 상기 제1 메모리에 저장되는 상기 제1 중간 패리티에 기초하여 상기 제2 스트라이프 세트에 대한 패리티를 생성하고, 상기 제2 스트라이프 세트에 대한 패리티를 상기 제1 메모리에 저장하는 스토리지 장치.
  7. 제 1 항에 있어서,
    상기 패리티 연산이 재개되는 경우, 상기 컨트롤러는 상기 제2 메모리에 저장된 상기 중간 패리티를 상기 제1 메모리로 이동시키는 스토리지 장치.
  8. 제1 스트라이프 세트(Stripe Set)에 대한 제1 및 제2 스트라이프(Strip)들 및 제2 스트라이프 세트에 대한 제3 스트라이프를 각각 분산하여 저장하도록 구성되는 복수의 불휘발성 메모리; 및
    호스트로부터 상기 제1 및 제2 스트라이프들 및 상기 제3 스트라이프를 수신하고, 상기 제1 및 제2 스트라이프들 및 상기 제3 스트라이프를 상기 복수의 불휘발성 메모리로 분산하여 저장하기 위한 컨트롤러를 포함하되,
    상기 컨트롤러는 상기 제1 스트라이프에 기초하여 제1 중간 패리티를 생성하고,
    상기 제1 중간 패리티를 상기 컨트롤러 내부의 제1 메모리에 저장하고,
    상기 제1 스트라이프 다음에 상기 제2 스트라이프 대신 상기 제3 스트라이프가 수신되는 경우, 상기 제1 메모리에 저장된 상기 제1 중간 패리티를 상기 컨트롤러 내부의 제2 메모리로 이동시키고,
    상기 제3 스트라이프에 기초하여 제2 중간 패리티를 생성하고,
    상기 제2 중간 패리티를 상기 제1 메모리에 저장하는 스토리지 장치.
  9. 제 8 항에 있어서,
    상기 컨트롤러는:
    상기 제1 스트라이프에 기초하여 상기 제1 중간 패리티를 생성하고, 상기 제1 중간 패리티를 상기 제1 메모리에 저장하고, 상기 제3 스트라이프에 기초하여 상기 제2 중간 패리티를 생성하고, 상기 제2 중간 패리티를 상기 제1 메모리에 저장하도록 구성되는 RAID 엔진을 포함하는 스토리지 장치.
  10. 제 9 항에 있어서,
    상기 컨트롤러는 상기 제3 스트라이프 다음에 상기 상기 제2 스트라이프 세트에 대한 제4 스트라이프 대신 상기 제2 스트라이프가 수신되는 경우, 상기 제1 메모리에 저장된 상기 제2 중간 패리티를 상기 제2 메모리로 이동시키고,
    상기 제2 메모리에 저장된 상기 제1 중간 패리티를 상기 제1 메모리로 이동시키는 스토리지 장치.
KR1020160147673A 2016-11-07 2016-11-07 Raid 방식으로 데이터를 저장하는 스토리지 장치 KR20180051703A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020160147673A KR20180051703A (ko) 2016-11-07 2016-11-07 Raid 방식으로 데이터를 저장하는 스토리지 장치
US15/711,129 US10521152B2 (en) 2016-11-07 2017-09-21 Storage device storing data in raid manner
CN201710986336.3A CN108073357B (zh) 2016-11-07 2017-10-20 以raid方式存储数据的存储装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160147673A KR20180051703A (ko) 2016-11-07 2016-11-07 Raid 방식으로 데이터를 저장하는 스토리지 장치

Publications (1)

Publication Number Publication Date
KR20180051703A true KR20180051703A (ko) 2018-05-17

Family

ID=62063949

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160147673A KR20180051703A (ko) 2016-11-07 2016-11-07 Raid 방식으로 데이터를 저장하는 스토리지 장치

Country Status (3)

Country Link
US (1) US10521152B2 (ko)
KR (1) KR20180051703A (ko)
CN (1) CN108073357B (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018229944A1 (ja) * 2017-06-15 2018-12-20 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法
US10353606B2 (en) * 2017-10-12 2019-07-16 International Business Machines Corporation Partial data replay in a distributed memory buffer system
TWI661307B (zh) * 2017-12-06 2019-06-01 慧榮科技股份有限公司 資料儲存裝置、主機裝置、以及資料寫入方法
US10838805B2 (en) * 2018-02-23 2020-11-17 Micron Technology, Inc. Generating parity data based on a characteristic of a stream of data
CN108920094B (zh) * 2018-06-01 2021-06-08 深圳忆联信息系统有限公司 擦除单元raid方法、装置、计算机设备及存储介质
CN109189340B (zh) * 2018-08-29 2021-11-09 上海兆芯集成电路有限公司 用于存取独立硬盘冗余阵列的系统与方法
KR20200108650A (ko) * 2019-03-11 2020-09-21 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US11010247B2 (en) * 2019-05-24 2021-05-18 Violin Systems Llc Dynamic memory management system
CN110908826B (zh) * 2019-10-16 2021-04-20 长江存储科技有限责任公司 数据处理方法及相关产品
WO2023028820A1 (en) 2021-08-31 2023-03-09 Yangtze Memory Technologies Co., Ltd. System and apparatus for redundant array of independent disks striping against programming failures
CN114115745B (zh) * 2021-11-30 2023-07-04 深圳忆联信息系统有限公司 多Pass编程NAND的RAID优化方法、装置及计算机设备
US11822429B2 (en) * 2022-04-08 2023-11-21 Dell Products L.P. Storage device raid data write intermediate parity system

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5157670A (en) 1989-12-04 1992-10-20 Avasem Corporation Error correction code interruption system
WO1993023803A1 (fr) * 1992-05-21 1993-11-25 Fujitsu Limited Appareil de commande pour pile de disques
JP3713788B2 (ja) * 1996-02-28 2005-11-09 株式会社日立製作所 記憶装置および記憶装置システム
JP3458804B2 (ja) * 1999-12-27 2003-10-20 日本電気株式会社 情報記録装置およびその制御方法
US6912687B1 (en) 2000-05-11 2005-06-28 Lsi Logic Corporation Disk array storage subsystem with parity assist circuit that uses scatter-gather list
US7392428B2 (en) 2004-11-19 2008-06-24 International Business Machines Corporation Method and system for recovering from abnormal interruption of a parity update operation in a disk array system
US7392458B2 (en) 2004-11-19 2008-06-24 International Business Machines Corporation Method and system for enhanced error identification with disk array parity checking
WO2007140260A2 (en) 2006-05-24 2007-12-06 Compellent Technologies System and method for raid management, reallocation, and restriping
KR101226685B1 (ko) 2007-11-08 2013-01-25 삼성전자주식회사 수직형 반도체 소자 및 그 제조 방법.
US9223514B2 (en) 2009-09-09 2015-12-29 SanDisk Technologies, Inc. Erase suspend/resume for memory
KR101691092B1 (ko) 2010-08-26 2016-12-30 삼성전자주식회사 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템
US8553466B2 (en) 2010-03-04 2013-10-08 Samsung Electronics Co., Ltd. Non-volatile memory device, erasing method thereof, and memory system including the same
US9536970B2 (en) 2010-03-26 2017-01-03 Samsung Electronics Co., Ltd. Three-dimensional semiconductor memory devices and methods of fabricating the same
KR101682666B1 (ko) 2010-08-11 2016-12-07 삼성전자주식회사 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템
US8583987B2 (en) 2010-11-16 2013-11-12 Micron Technology, Inc. Method and apparatus to perform concurrent read and write memory operations
US20120167100A1 (en) 2010-12-23 2012-06-28 Yan Li Manual suspend and resume for non-volatile memory
US8756371B2 (en) 2011-10-12 2014-06-17 Lsi Corporation Methods and apparatus for improved raid parity computation in a storage controller
US20150160999A1 (en) * 2012-07-13 2015-06-11 Samsung Electronics Co., Ltd. Solid state drive controller, solid state drive, data processing method of solid state drive, multi-channel solid state drive, raid controller and computer-readable recording medium having recorded therein computer program for providing sequence information to solid state drive
KR101925383B1 (ko) * 2012-07-23 2018-12-05 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 데이터 관리 방법
US20160217040A1 (en) 2013-08-27 2016-07-28 Agency For Science, Technology And Research Raid parity stripe reconstruction
US9946655B2 (en) * 2013-10-09 2018-04-17 Hitachi, Ltd. Storage system and storage control method
US20150205667A1 (en) * 2014-01-23 2015-07-23 DSSD, Inc. Method and system for service-aware data placement in a storage system
US8949692B1 (en) * 2014-01-23 2015-02-03 DSSD, Inc. Method and system for service-aware parity placement in a storage system
US9891993B2 (en) 2014-05-23 2018-02-13 International Business Machines Corporation Managing raid parity stripe contention
KR102368071B1 (ko) * 2014-12-29 2022-02-25 삼성전자주식회사 레이드 스토리지 시스템에서의 스트라이프 재구성 방법 및 이를 적용한 가비지 컬렉션 동작 방법 및 레이드 스토리지 시스템
US9830093B2 (en) * 2015-03-27 2017-11-28 Intel Corporation Method and apparatus for improving immunity to defects in a non-volatile memory

Also Published As

Publication number Publication date
US10521152B2 (en) 2019-12-31
CN108073357B (zh) 2022-07-26
CN108073357A (zh) 2018-05-25
US20180129451A1 (en) 2018-05-10

Similar Documents

Publication Publication Date Title
CN108073357B (zh) 以raid方式存储数据的存储装置
US10860508B2 (en) Offloaded disaggregated storage architecture
JP5649742B2 (ja) トランザクションログの復元
US10275310B2 (en) Updating exclusive-or parity data
US10127166B2 (en) Data storage controller with multiple pipelines
US9703816B2 (en) Method and system for forward reference logging in a persistent datastore
US20130205114A1 (en) Object-based memory storage
US9632702B2 (en) Efficient initialization of a thinly provisioned storage array
US20180173419A1 (en) Hybrid ssd with delta encoding
US9858146B2 (en) Reducing latency for raid destage operations
KR20210000877A (ko) 메모리 시스템의 입출력 성능을 향상시키는 장치 및 방법
KR20220045343A (ko) 데이터 처리 시스템 내 데이터 전송에서 발생한 에러를 정정하는 장치 및 방법
KR102530583B1 (ko) 저장 장치 및 메모리 시스템
KR20210124705A (ko) 메모리 시스템 내 맵 정보를 제어하는 장치 및 방법
CN109815157B (zh) 编程命令处理方法与装置
KR20220103378A (ko) 메모리 시스템에 저장된 데이터를 처리하는 장치 및 방법
KR20220090020A (ko) 비휘발성 메모리 시스템이 생성한 메타데이터를 전송하는 장치 및 방법
CN112988450A (zh) 在存储器子系统中将奇偶校验数据与主机数据分离
US11853554B2 (en) Aligned and unaligned data deallocation
KR20230160620A (ko) 메모리 시스템에서 데이터를 복구하는 장치 및 방법
KR20230064279A (ko) 메모리 시스템에서 데이터를 복구하는 장치 및 방법
KR102032878B1 (ko) 플래시 메모리 컨트롤러의 에러 정정 방법
KR20220049230A (ko) 메모리 시스템에서 비휘발성 메모리 장치 내 오류를 확인하는 장치 및 방법
KR20220032826A (ko) 메모리 시스템 내 맵 정보를 제어 및 저장하는 장치 및 방법
KR20220086934A (ko) 비휘발성 메모리 시스템의 저널링 제어 장치 및 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right