KR20190024627A - 논리블록주소 기반 레이드 시스템 및 방법 - Google Patents

논리블록주소 기반 레이드 시스템 및 방법 Download PDF

Info

Publication number
KR20190024627A
KR20190024627A KR1020180064849A KR20180064849A KR20190024627A KR 20190024627 A KR20190024627 A KR 20190024627A KR 1020180064849 A KR1020180064849 A KR 1020180064849A KR 20180064849 A KR20180064849 A KR 20180064849A KR 20190024627 A KR20190024627 A KR 20190024627A
Authority
KR
South Korea
Prior art keywords
logical block
block address
data
parity
storage
Prior art date
Application number
KR1020180064849A
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 삼성전자주식회사
Publication of KR20190024627A publication Critical patent/KR20190024627A/ko

Links

Images

Classifications

    • 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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

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개의 스토리지 구성요소들로 이루어진 레이드 그룹에 데이터를 기입한다.

Description

논리블록주소 기반 레이드 시스템 및 방법{A SYSTEM AND METHOD FOR LBA-BASED RAID}
본 개시의 일부 실시예들은 일반적으로 다수의 스토리지 구성요소들을 갖는 스토리지 장치의 논리블록주소(Logical Block Address: LBA) 기반 RAID(Redundant Array of Independent Disk, 이하 "레이드"라 지칭)에 관한 것이다.
SSD 용량은 기가바이트에서 테라바이트에 이르는 저장 용량을 가진 드라이브가 도입된 이래로 꾸준히 증가해왔다. SSD 크기가 증가하면서 데이터 손상 및 드라이브 실패와 관련된 잠재적인 손실 문제가 점점 더 심각해지고 있다. 일반적으로 레이드는 데이터 보호 강화 및/또는 저장 성능 향상을 위해 사용되어왔다. 일반적인 레이드 구현기술에는 복수개의 드라이브들을 이용한 데이터 스트라이핑(레이드 0), 데이터 미러링(레이드 1), 및 패리티를 포함하는 스트라이핑(레이드 5 및 레이드 6)이 포함된다. 일부 레이드 시스템들은 패리티 계산을 위한 정적 물리적 페이지 번호(Physical Page Numbers: PPN) (예: 물리적 낸드 페이지)를 이용하여 구현된다. 하지만 SSD에서 물리적 페이지 번호를 사용하는 것은 비효율적이다. 따라서, SSD에서 레이드를 보다 효과적으로 활용하는 방법이 필요하다. 또한, 현재 각각의 레이드 구현기술은 다양한 수준으로 위험을 경감시키지만, 레이드를 구현하려면 여러 드라이브가 필요하다. 여러 드라이브를 사용하는 것은 많은 애플리케이션에서 선택 사양이 아니다. 그러므로 단일 드라이브에서 구성 가능하며 레이드와 유사한 데이터 보호 매커니즘이 필요하다.
전술한 정보는 본 개시에 따른 실시예들의 배경기술에 대한 이해를 돕기 위한 것일 뿐이므로 종래 기술을 형성하지 않는 정보를 포함할 수도 있다.
본 개시는 전술한 문제점을 해결하기 위해 논리블록주소 기반 레이드 시스템 및 방법을 제공하고자 한다.
본 개시의 일부 실시예들은 논리블록주소 레이드 스토리지 장치를 위한 시스템 및 방법을 제공한다. 다양한 실시예들에 있어서, 논리블록주소 레이드 스토리지 장치는 복수의 데이터 채널들 및 복수의 스토리지 구성요소들을 포함한다. 다양한 실시예들에 있어서, 복수의 스토리지 구성요소들 각각은 복수의 데이터 채널들 중 하나에 연결된다. 다양한 실시예들에 있어서, 논리블록주소 레이드 스토리지 장치는 스토리지 컨트롤러를 더 포함하며, 스토리지 컨트롤러는 데이터를 수신하고 레이드 그룹에 수신한 데이터를 기입한다. 레이드 그룹은 개별 데이터 채널에 각각 연결된 복수의 스토리지 구성요소들 중 적어도 2개의 스토리지 구성요소들을 포함한다.
다양한 실시예들에 있어서, 복수의 스토리지 구성요소들은 플래시 메모리 칩들을 포함한다.
다양한 실시예들에 있어서, 레이드 그룹은 데이터 수신을 위한 M개의 스토리지 구성요소들 및 하나의 패리티 스토리지 구성요소를 포함한다(M은 1보다 큼).
다양한 실시예들에 있어서, 레이드 그룹은 데이터 수신을 위한 N개의 스토리지 구성요소들 및 2개의 패리티 스토리지 구성요소들을 포함한다(N은 1보다 큼).
다양한 실시예들에 있어서, 복수의 스토리지 구성요소들은 제1 데이터 채널에서 동작하는 제1 스토리지 구성요소, 제2 데이터 채널에서 동작하는 제2 스토리지 구성요소, 제3 데이터 채널에서 동작하는 제3 스토리지 구성요소, 및 제4 데이터 채널에서 동작하는 제4 스토리지 구성요소를 포함한다. 다양한 실시예들에 있어서, 스토리지 컨트롤러는 제1 스토리지 구성요소, 제2 스토리지 구성요소 및 제3 스토리지 구성요소를 이용하여 데이터를 스트라이핑하고, 데이터에 대한 패리티를 계산하며, 제4 스토리지 구성요소에 패리티를 저장한다.
다양한 실시예들에 있어서, 제1 스토리지 구성요소, 제2 스토리지 구성요소 및 제3 스토리지 구성요소를 이용하여 데이터를 스트라이핑하는 것은, 제1 스토리지 구성요소의 제1 논리블록주소로 제1 데이터 세트를 기입하는 것과, 제2 스토리지 구성요소의 제2 논리블록주소로 제2 데이터 세트를 기입하는 것과, 제3 스토리지 구성요소의 제3 논리블록주소로 제3 데이터 세트를 기입하는 것을 포함한다.
다양한 실시예들에 있어서, 데이터에 대한 패리티를 계산하는 것은 제1 논리블록주소, 제2 논리블록주소 및 제3 논리블록주소에 기초하여 패리티를 계산하는 것을 포함한다.
다양한 실시예들에 있어서, 패리티는 제1 논리블록주소, 제2 논리블록주소 및 제3 논리블록주소의 배타 논리합(XOR) 연산을 수행함에 의해 계산된다.
다양한 실시예들에 있어서, 스토리지 컨트롤러는 논리블록주소-물리적 페이지 번호- 패리티 표 및 패리티 그룹 표를 포함한다.
다양한 실시예들에 있어서, 스토리지 컨트롤러는 논리블록주소-물리적 페이지 번호-패리티 표 및 패리티 그룹 표에 따라 레이드 그룹에 데이터를 기입한다.
다양한 실시예들에 있어서, 스토리지 컨트롤러는 복수의 스토리지 구성요소들에 대한 가비지 컬렉션 소거 블록의 유효 엔트리를 식별하고, 후보 데이터를 가비지 컬렉션 소거 블록으로부터 복수의 스토리지 구성요소들 중 동일한 스토리지 구성요소의 새로운 물리적 주소로 복사하며, 논리블록주소-물리적 패리티 번호-패리티 표를 새로운 물리적 주소로 갱신한다.
다양한 실시예들에 있어서, 논리블록주소 레이드 스토리지 장치는 다중 데이터 채널들에서 동작하는 다수의 스토리지 구성요소들을 포함한다. 논리블록주소 레이드 스토리지 장치는 제1 데이터 채널에서 동작하는 제1 스토리지 구성요소의 제1 논리블록주소, 제2 데이터 채널에서 동작하는 제2 스토리지 구성요소의 제2 논리블록주소, 제3 데이터 채널에서 동작하는 제3 스토리지 구성요소의 제3 논리블록주소, 제4 데이터 채널에서 동작하는 제4 스토리지 구성요소의 제4 논리블록주소를 포함한다. 다양한 실시예들에 있어서, 논리블록주소 레이드 스토리지 장치는 스토리지 컨트롤러는 더 포함하며, 스토리지 컨트롤러는 제1 논리블록주소, 제2 논리블록주소 및 제3 논리블록주소로 데이터를 기입하고, 데이터에 대한 패리티를 계산하며, 제4 논리블록주소로 패리티를 저장한다.
다양한 실시예들에 있어서, 제1 스토리지 구성요소, 제2 스토리지 구성요소, 제3 스토리지 구성요소 및 제4 스토리지 구성요소는 플래시 메모리 칩들을 포함한다.
다양한 실시예들에 있어서, 데이터를 기입하는 것은 제1 논리블록주소, 제2 논리블록주소 및 제3 논리블록주소로 데이터를 스트라이핑하는 것을 포함한다.
다양한 실시예들에 있어서, 패리티는 제1 논리블록주소, 제2 논리블록주소 및 제3 논리블록주소의 배타 논리합(XOR) 연산을 수행함에 의해 계산된다.
다양한 실시예들에 있어서, 스토리지 컨트롤러는 논리블록주소-물리적 페이지 번호-패리티 표 및 패리티 그룹 표를 포함한다.
다양한 실시예들에 있어서, 스토리지 컨트롤러는 논리블록주소-물리적 페이지 번호-패리티 표 및 패리티 그룹 표에 따라 레이드 그룹에 데이터를 기입한다.
다양한 실시예들에 있어서, 스토리지 컨트롤러는 제1 논리블록주소에 대한 가비지 컬렉션 소거 블록의 유효 엔트리를 식별하고, 후보 데이터를 제1 논리블록주소로부터 제1 스토리지 구성요소의 새로운 물리적 주소로 복사하며, 논리블록주소-물리적 페이지 번호-패리티 표를 제1 논리블록주소의 새로운 물리적 주소로 갱신한다.
다양한 실시예들에 있어서, 솔리드 스테이트 디스크 제어방법은 데이터를 저장하기 위한 기입 요청을 스토리지 컨트롤러에서 수신하는 단계, 제1 데이터 채널에서 동작하는 제1 스토리지 구성요소, 제2 데이터 채널에서 동작하는 제2 스토리지 구성요소, 및 제3 데이터 채널에서 동작하는 제3 스토리지 구성요소에 데이터를 기입하는 단계, 및 패리티를 계산하고 제4 데이터 채널에서 동작하는 제4 스토리지 구성요소에 패리티를 저장하는 단계를 포함한다.
다양한 실시예들에 있어서, 데이터를 기입하는 단계는 제1 스토리지 구성요소의 제1 논리블록주소, 제2 스토리지 구성요소의 제2 논리블록주소 및 제3 스토리지 구성요소의 제3 논리블록주소로 데이터를 기입하는 단계를 포함한다.
다양한 실시예들에 있어서, 펌웨어에 저장된 논리블록주소-물리적 페이지 번호-패리티 표 및 패리티 그룹 표에 따라 레이드 그룹에 기입 요청을 맵핑하는 단계를 더 포함한다.
다양한 실시예들에 있어서, 패리티를 계산하는 단계는 제1 논리블록주소, 제2 논리블록주소 및 제3 논리블록주소의 배타 논리합(XOR) 연산을 수행하는 단계를 포함한다.
본 개시는 다른 채널들에서 동작하는 플래시 칩들에 걸쳐 데이터를 스트라이핑하여 논리블록주소 기반 레이드를 수행함으로써 단일 드라이브에서도 효율적으로 데이터를 보호하고 저장 성능을 향상시킬 수 있다.
일부 실시예들은 다음과 같은 첨부도면을 참조하여 이하의 설명으로부터 보다 상세히 이해될 수 있다.
도 1은 본 발명의 다양한 실시예들에 따른 논리블록주소 기반 레이드 스토리지 장치의 예시도이다.
도 2는 본 발명의 다양한 실시예들에 따른 논리블록주소 기반 레이드 스토리지 장치의 메모리 칩 및 데이터 버스에 대한 예시도이다.
도 3은 본 발명의 다양한 실시예들에 따른 논리블록주소 기반 레이드 스토리지 장치의 데이터 저장 방법에 대한 흐름도이다.
도 4는 본 발명의 다양한 실시예들에 따른 논리블록주소 기반 레이드 스토리지 장치에서 동작하는 논리블록주소 기반 레이드 그룹의 예시도이다.
도 5는 본 발명의 다양한 실시예들에 따른 예시적인 논리블록주소-물리적 페이지 번호-패리티 표이다.
도 6은 본 발명의 다양한 실시예들에 따른 예시적인 패리티 그룹 표이다.
본 기술적 사상의 특징 및 이를 달성하는 방법은 실시예들에 대한 이하의 구체적인 설명 및 첨부도면을 참조하여 보다 쉽게 이해될 수 있다. 이하, 실시예들은 첨부도면을 참조하여 보다 상세히 설명될 것이며, 명세서 전반에 걸쳐 동일한 참조번호는 동일한 구성요소를 지칭한다. 그러나 본 발명은 다양한 형상으로 구체화될 수 있으며, 본 명세서에 설명된 실시예들만으로 제한 해석되어서는 안 된다. 오히려, 본 명세서에 설명된 실시예들은 본 개시가 철저히 완전해지고 본 발명의 기술분야에 속한 통상의 기술자에게 본 발명의 양상 및 특징들이 충분히 전달되도록 예시로서 제공되는 것이다. 따라서, 본 발명이 속한 기술분야의 통상의 기술자가 본 발명의 양상 및 특징들을 완전히 이해하는데 불필요한 프로세스들, 구성요소들 및 기법들은 설명되지 않을 수 있다. 특별히 언급되지 않는 한, 첨부도면 및 상세한 설명 전반에 걸쳐 동일한 참조번호는 동일한 구성요소를 지칭하므로, 이에 대한 설명은 반복되지 않는다. 도면에 도시된 구성요소들, 계층들 및 영역들의 상대적인 크기는 명확성을 위해 과장될 수 있다.
이하의 설명에는 설명의 목적으로 수많은 특정 세부사항들이 다양한 실시예들에 대한 완전한 이해를 돕기 위해 기재된다. 그러나 이러한 특정 세부사항들 없이도 또는 하나 이상의 등가 구성들로 다양한 실시예들이 실시될 수 있음은 명백하다. 다른 예시들에서, 공지된 구조들 및 장치들은 다양한 실시예들이 불필요하게 모호해지지 않도록 블록도 형태로 도시된다.
어느 요소, 계층, 영역 또는 구성이 다른 요소, 계층, 영역 또는 구성 "상에", "에 연결된", 또는 "에 결합된" 것으로 언급된 경우, 이는 직접적으로 다른 요소, 계층, 영역 또는 구성 "상에", "에 연결된", 또는 "에 결합된" 것을 의미하거나, 하나 이상의 매개 요소, 계층, 영역 또는 구성이 존재하는 것을 의미할 수도 있다. 그러나 "직접적으로 연결된/직접적으로 결합된"이라는 표현은 하나의 구성이 매개 구성없이 다른 구성과 직접적으로 연결 또는 결합된 것을 의미한다. 한편, "사이에", "바로 사이에", 또는 "인접한" 및 "바로 인접한"과 같이 구성들 간의 관계를 설명하는 다른 표현들도 유사하게 해석될 수 있다. 또한, 어느 요소 또는 계층이 두 요소들 또는 계층들 사이에 있는 것으로 언급되는 경우, 이는 오직 두 요소들 또는 계층들 사이에 있다는 것을 의미하거나, 하나 이상의 매개 요소 또는 계층이 존재하는 것을 의미할 수도 있다.
본 명세서에 사용되는 용어는 오직 특정 실시예들을 설명하기 위한 목적이며, 본 발명을 한정하고자 하는 것이 아니다. 본 명세서에서 사용되는 바와 같이, 단수형태 용어는 문맥상 명백히 달리 지시하지 않는 한 복수형태 용어도 포함한다. 또한, "포함하다", "포함하는", "갖는다", "갖는", "구비하다" 및 "구비하는"과 같은 용어들이 본 명세서에서 사용되는 경우, 이는 언급된 특징들, 숫자들, 단계들, 동작들, 요소들 및/또는 구성들이 존재함을 명시하는 것이지만, 하나 이상의 다른 특징들, 숫자들, 단계들, 동작들, 요소들, 구성들 및/또는 이들의 집합이 존재하거나 부가되는 것을 배제하는 것은 아니다. 본 명세서에서 사용되는 바와 같이, "및/또는"이라는 용어는 열거된 하나 이상의 관련 항목들의 임의의 조합 및 모든 조합들을 포함한다.
본 명세서에서 사용되는 바와 같이, "실질적으로", "약", "대략" 및 기타 유사한 용어들은 정도(degree)를 나타내는 용어가 아닌 근사함(approximation)을 나타내는 용어로서 사용되는 것이고, 본 발명이 속한 기술분야의 통상의 기술자들에 의해 인식될 측정값 또는 계산값에 내재된 편차를 설명하기 위한 것이다. 당해 측정 및 특정 양의 측정과 관련된 오차(즉, 측정 시스템의 한계)를 고려하여, 본 명세서에 사용된 "약" 또는 "대략"은 본 발명의 기술분야에 속한 통상의 기술자에 의해 결정된 특정 값에 대한 허용 가능 편차 범위 내의 평균 및 언급된 값을 포함한다. 예를 들어, "약"은 하나 이상의 표준편차 이내를 의미할 수 있거나, 언급된 값의 ± 30%, 20%, 10%, 5% 이내를 의미할 수 있다. 또한, 본 발명의 실시예들을 설명할 때 "할 수 있다"라는 표현을 사용하는 경우, 이는 "본 발명의 하나 이상의 실시예"를 나타내는 것이다. 본 명세서에 사용된 바와 같이, "사용하다", "사용하는" 및 "사용되는"이라는 용어들은 각각 "활용하다", "활용하는" 및 "활용되는"이라는 용어들과 동의어로 간주될 수 있다. 또한, "예시적인"이라는 용어는 예시 또는 일례를 지칭하는 것이다.
특정 실시예가 다르게 구현될 수 있는 경우, 구체적인 프로세스 순서는 설명된 순서와 다르게 수행될 수 있다. 예를 들어, 연이어 설명된 두 프로세스들은 실질적으로 동시에 또는 설명된 순서와 반대로 수행될 수 있다.
다양한 실시예들이 실시예 및/또는 중간 구조의 개략도인 단면도를 참조하여 본 명세서에서 설명된다. 도시된 형상들은 예컨대, 제조 기술 및/또는 허용 오차의 결과로서 달라질 수 있음을 예상할 수 있다. 또한, 본 명세서에 개시된 특정한 구조적 또는 기능적 설명은 단지 본 개시의 기술적 사상에 따른 실시예들을 설명하기 위해 예시로서 제공되는 것이다. 그러므로 본 명세서에 개시된 실시예들은 설명된 영역의 특정 형상으로 제한 해석되어서는 안 되며, 예를 들어 제조과정에서 비롯된 변형된 형상을 포함할 것이다. 예를 들어, 직사각형으로 도시된 주입 영역(implanted region)은 일반적으로 둥근 형상이나 굽은 형상을 가질 것이고, 및/또는 주입 영역에서 비주입 영역(non-implanted region)으로의 이분적 변화가 아닌 주입 농도 기울기를 그의 에지 영역에서 가질 것이다. 마찬가지로, 주입에 의해 형성된 매립 영역은 주입이 일어나는 면과 매립 영역 사이의 영역에 어느 정도의 주입을 발생시킬 수 있다. 그러므로, 도면에 도시된 영역들은 사실상 개략적인 것이고, 그 형태들은 장치의 어느 영역의 실제 형태를 도시하는 것이 아니며, 도시된 형상으로 제한하고자 하는 것도 아니다.
본 명세서에 기재된 본 발명의 실시예들에 따른 전자/전기 장치들 및/또는 임의의 다른 관련 장치/구성요소들은 임의의 적절한 하드웨어, 펌웨어(예: 주문형 집적회로), 소프트웨어, 또는 소프트웨어, 펌웨어 및 하드웨어의 조합을 이용하여 구현될 수 있다. 예를 들어, 이러한 장치들의 다양한 구성요소들은 하나의 집적회로(IC) 칩이나 개별 IC 칩들로 형성될 수 있다. 또한, 이러한 장치들의 다양한 구성요소들은 연성 인쇄회로 필름(Flexible Printed Circuit Film), 테이프 캐리어 패키지(Tape Carrier Package: TCP), 인쇄회로기판(Printed Circuit Board: PCB) 상에 구현되거나, 하나의 기판(substrate) 상에 형성될 수 있다. 또한, 이러한 장치들의 다양한 구성요소들은 하나 이상의 컴퓨팅 장치들의 하나 이상의 프로세서에서 실행되고 컴퓨터 프로그램 명령(어)들을 실행하며 본 명세서에서 기재된 다양한 기능들을 수행하기 위한 다른 시스템 구성요소들과 상호작용하는, 프로세스 또는 스레드일 수 있다. 컴퓨터 프로그램 명령(어)들은 메모리에 저장되며, 메모리는 예컨대, 랜덤 액세스 메모리(Random Access Memory: RAM)와 같은 표준 메모리 장치를 사용하는 컴퓨팅 장치에서 구현될 수 있다. 컴퓨터 프로그램 명령(어)들은 예컨대, CD-ROM, 플래시 드라이브 등과 같은 다른 비-일시적인 컴퓨터 판독매체에 저장될 수도 있다. 또한, 본 발명이 속한 기술분야의 통상의 기술자는 본 발명의 실시예들의 사상 및 범위를 벗어나지 않고, 다양한 컴퓨팅 장치들의 기능이 단일 컴퓨팅 장치로 결합 또는 통합될 수 있거나, 또는 특정 컴퓨팅 장치의 기능이 하나 이상의 다른 컴퓨팅 장치에 분산될 수 있다는 것을 인식할 것이다.
본 명세서에서 사용되는 모든 용어들(기술용어 및 과학용어 포함)은 달리 정의되지 않는 한, 본 발명이 속한 기술분야의 통상의 기술자가 일반적으로 이해하는 바와 동일한 의미를 갖는다. 또한, 일반적으로 사용되는 사전들에 정의된 것과 같은 용어들은 관련기술 및/또는 본 명세서의 문맥상의 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백히 정의하지 않는 한 이상적이거나 지나치게 형식적인 의미로 해석되어서는 안 된다.
본 발명의 실시예들은 논리블록주소 레이드 시스템 및 방법을 포함한다. 다양한 실시예들에 있어서, 본 시스템은 다중 데이터 채널에서 동작하는 다수의 플래시 메모리 칩들을 갖는 솔리드 스테이트 드라이브(Solid State Drive: SSD) 시스템을 포함한다. 일부 예시들에서, 플래시 메모리 칩들은 낸드 메모리 칩들일 수 있다. 다양한 실시예들에 있어서, SSD는 다른 채널들에서 동작하는 플래시 칩들을 이용하여 데이터를 스트라이핑함으로써 논리블록주소 기반 레이드에 맞게 구성될 수 있다. 다양한 실시예들에 있어서, 데이터를 보유하는 채널들과 다른 채널 상의 부가적인 칩들을 이용하여 패리티가 추가될 수 있다.
도 1은 본 발명의 다양한 실시예들에 따른 논리블록주소 기반 레이드 스토리지 장치의 예시도이다.
도 1을 참조하면, 다양한 실시예들에서 논리블록주소 레이드 스토리지 장치는 논리블록주소 레이드 스토리지 장치 내에서 논리블록주소 기반 레이드 동작들을 수행하는 다수의 메모리 구성요소 아키텍처를 이용한다. 예를 들어, 다양한 실시예들에서 논리블록주소 레이드 스토리지 장치는 입/출력(I/O) 동작들을 제어하기 위한 스토리지 컨트롤러(100) 및 펌웨어(110)를 포함한다. 스토리지 컨트롤러(100)는 호스트(예: 호스트 애플리케이션)로부터 입/출력 요청(예: 데이터)을 수신하고 펌웨어(110)에 저장된 레이드 구성에 따라 입/출력 요청들을 처리한다. 다양한 실시예들에 있어서, 논리블록주소 레이드 스토리지 장치는 복수의 메모리 구성요소들을 포함하는 영구 스토리지(120)를 포함한다. 예를 들어, 영구 스토리지(120)는 다중 데이터 채널들(130, 140, 150)을 포함할 수 있고, 각 데이터 채널은 다수의 메모리 칩들(132-136, 142-146, 152-156)을 포함할 수 있다. 다양한 실시예들에 있어서, 메모리 칩들은 임의의 영구 메모리 칩들을 포함할 수 있다. 예를 들어, 메모리 칩들은 플래시 메모리 칩(예: 낸드), 3D XPoint 등을 포함할 수 있다. 다양한 실시예들에 있어서, 컨트롤러(100) 및 펌웨어(110)는 논리블록주소 레이드를 생성하기 위해 서로 다른 데이터 채널들에서 동작하는 서로 다른 메모리 칩들(132-136, 142-146, 152-156)을 이용할 수 있다. 예를 들어, 다양한 실시예들에서 논리블록주소 레이드는 다수의 칩들을 이용하여 데이터를 스트라이핑할 수 있고 부가적인 칩에 패리티 비트를 포함할 수 있다. 다른 예로, 논리블록주소 레이드는 다수의 칩들을 이용하여 데이터를 스트라이핑할 수 있고 패리티 비트를 위해 2개의 부가적인 칩을 이용할 수 있다. 예를 들어, 논리블록주소 레이드는 M개의 데이터 칩 + 1 패리티 (레이드 5와 유사) 또는 N개의 데이터 칩 + 2 패리티 (레이드 6과 유사)로 구성될 수 있다. 여기서, M과 N은 1보다 큰 임의의 수이다. 서로 다른 채널들에서 동작하는 다수의 칩들을 이용한 데이터 스트라이핑은 드라이브 성능을 향상시킬 수 있다. 예를 들어, 어레이의 입/출력이 SSD의 다중 채널들로 분산될 수 있기 때문에 데이터 병목현상이 완화될 수 있다.
도 2는 본 발명의 다양한 실시예들에 따른 논리블록주소 기반 레이드 스토리지 장치의 메모리 칩 및 데이터 버스에 대한 예시도이다.
도 2를 참조하면, 다양한 실시예들에서 논리블록주소 레이드 스토리지 장치(200)는 다수의 플래시 메모리 칩들을 이용하는 레이드 시스템으로 동작할 수 있다. 예를 들어, 논리블록주소 레이드 스토리지 장치(200)는 복수의 플래시 메모리 칩들(201-216)을 포함한다. 다양한 실시예들에 있어서, 각각의 플래시 메모리 칩(201-216)은 논리블록주소를 가질 수 있다. 다양한 실시예들에 있어서, 복수의 플래시 메모리 칩들(201-216)은 다중 데이터 채널들(217-220)에서 동작할 수 있다. 예를 들어, 제1 복수의 플래시 메모리 칩들(201, 205, 209 및 213)은 모두 제1 채널(217)에서 동작할 수 있고, 제2 복수의 플래시 메모리 칩들(202, 206, 210 및 214)은 모두 제2 채널(218)에서 동작할 수 있으며, 제3 복수의 플래시 메모리 칩들(203, 207, 211 및 215)은 모두 제3 채널(219)에서 동작할 수 있고, 제4 복수의 플래시 메모리 칩들(204, 208, 212 및 216)은 모두 제4 채널(220)에서 동작할 수 있다.
다양한 실시예들에 있어서, 플래시 메모리 칩들은 여러 레이드 그룹으로 나뉠 수 있다. 예를 들어, 솔리드 스테이트 디스크(SSD, 200)는 제1 플래시 메모리 칩(201), 제2 플래시 메모리 칩(202), 제3 플래시 메모리 칩(203) 및 제4 플래시 메모리 칩(204)을 갖는 제1 레이드 어레이(230)를 포함할 수 있다. 이와 유사하게, SSD(200)는 제5 플래시 메모리 칩(205), 제6 플래시 메모리 칩(206), 제7 플래시 메모리 칩(207) 및 제8 플래시 메모리 칩(208)을 갖는 제2 레이드 어레이(240)를 포함할 수 있다. 다양한 실시예들에 있어서, 각각의 레이드 어레이(230, 240)는 패리티 칩으로 구성될 수 있다. 일부 실시예들에 있어서, 패리티 비트들은 다른 채널의 플래시 메모리 칩들에 저장될 수 있다. 예를 들어, 다양한 실시예들에서 제4 채널(220)의 플래시 메모리 칩들(204, 208) (250)은 모두 패리티 비트들을 저장하는데 사용될 수 있다.
다양한 실시예들에 있어서, 패리티 데이터는 논리블록주소에 기초하여 계산될 수 있다. 예를 들어, 다양한 실시예들에서 제1 플래시 메모리 칩(201)의 논리블록주소는 1일 수 있고, 제2 플래시 메모리 칩(202)의 논리블록주소는 2일 수 있으며, 제3 플래시 메모리 칩(203)의 논리블록주소는 3일 수 있다. 제4 플래시 메모리 칩(204)은 논리블록주소 1과 논리블록주소 2와 논리블록주소 3의 패리티 값을 가질 수 있다. 패리티 비트들은 사용되는 패리티 유형(예: 단일 패리티, 이중 패리티 등)과 동일한 임의의 방식으로 계산될 수 있다. 예를 들어, 다양한 실시예들에서 단일 패리티 시스템을 위한 패리티는 레이드 어레이의 각 논리블록주소에 저장된 데이터에 대한 배타 논리합(XOR) 연산을 통해 계산될 수 있다(예: 패리티 비트들은 논리블록주소 단위로 계산됨). 예를 들어, 제1 레이드 그룹(230)에서 데이터는 제1 플래시 메모리 칩(201), 제2 플래시 메모리 칩(202) 및 제3 플래시 메모리 칩(203)을 이용하여 스트라이핑될 수 있고, 패리티 비트들은 제1 플래시 메모리 칩(201), 제2 플래시 메모리 칩(202) 및 제3 플래시 메모리 칩(203)에 저장된 데이터에 대해 XOR 연산을 수행하여 계산될 수 있으며, 계산된 패리티 비트들은 제4 플래시 메모리 칩(402)에 저장될 수 있다(예: 데이터(LBA1) XOR 데이터(LBA2) XOR 데이터(LBA3) = 패리티 데이터).
도 3은 본 발명의 다양한 실시예들에 따른 논리블록주소 기반 레이드 스토리지 장치의 데이터 저장 방법에 대한 흐름도이다. 도 4는 본 발명의 다양한 실시예들에 따른 논리블록주소 기반 레이드 스토리지 장치에서 동작하는 논리블록주소 기반 레이드 그룹의 예시도이다.
도 3 및 4를 참조하면, 다양한 실시예들에 있어서 논리블록주소 레이드 스토리지 장치는 레이드 그룹(400) (예: 레이드 어레이)을 포함할 수 있다. 다양한 실시예들에 있어서, 레이드 그룹(400)은 데이터 저장을 위해 제1 플래시 메모리 칩(410), 제2 플래시 메모리 칩(420) 및 제3 플래시 메모리 칩(430)을 사용하고, 패리티를 위해 제4 플래시 메모리 칩(440)을 사용하는 3+1P 방식으로 구성될 수 있다(예: 도 2를 참조하여 전술한 바와 같이 3개의 칩들을 이용하여 데이터가 스트라이핑되고 4번째 칩은 패리티를 위해 사용되는 구성). 다양한 실시예들에 있어서, 각각의 플래시 메모리 칩(410-440)은 복수의 논리블록주소들을 포함할 수 있고 논리블록주소들을 이용하여 레이드를 수행할 수 있다. 예를 들어, LBA_i, LBA_j, LBA_k 및 LBA_P는 레이드 어레이를 구성할 수 있다. 다양한 실시예들에 있어서, 낸드 플래시 메모리 칩들(410, 420, 430, 440)은 4KB 물리적 페이지들로 구성될 수 있다. 일부 실시예들에 있어서, 기입되는 데이터는 논리블록주소 크기들의 배수인 레이드 구성 청크들로 분할될 수 있다. 예를 들어, 각각의 논리블록주소는 512 바이트일 수 있다. 그러므로 하나의 레이드 구성 청크는 논리블록주소 크기(512 바이트), 논리블록주소 크기의 8배(4KB), 논리블록주소 크기의 16배(8KB) 등일 수 있다.
다양한 실시예들에 있어서, 논리블록주소 레이드 스토리지 장치는 스토리지 컨트롤러에서 호스트(예: 애플리케이션)로부터의 데이터 세트를 저장하기 위한 저장 요청을 수신한다(S300). 다양한 실시예들에 있어서, 스토리지 컨트롤러는 논리블록주소-물리적 페이지 번호-패리티 표 및 패리티 그룹 표를 이용하여 데이터 세트 및 연관 패리티 비트들(예: LBA_i, LBA_j, LBA_k 및 LBA_P)을 저장하기 위한 적절한 위치를 결정할 수 있다(S310). 예를 들어, 다양한 실시예들에 있어서 저장 요청은 LBA_i에 데이터 세트를 저장하는 것이다. 스토리지 컨트롤러는 논리블록주소-물리적 페이지 번호-패리티 표를 참조하여 LBA_i에 대한 패리티 인덱스를 1로 결정한다. 그런 다음, 스토리지 컨트롤러는 패리티 그룹 표를 참조하여 레이드 그룹과 연관된 다른 논리블록주소를 결정하고 해당 레이드 그룹에 기입을 결정한다. 예를 들어, 스토리지 컨트롤러는 데이터 세트의 처음 4kb는 제1 칩(410)의 LBA_i에 기입되고 그 다음 4kb는 제2 칩(420)의 LBA_j에 기입될 수 있는 식으로, 분할된 수신 데이터 세트를 맵핑한다(S320). 그런 다음, 컨트롤러는 기입된 데이터에 대한 패리티 비트들을 계산(예: XOR 연산을 수행함으로써 계산)하여 LBA_P에 패리티 비트들을 저장할 수 있다(S330) (패리티 그룹 표 참조).
도 5는 본 발명의 다양한 실시예들에 따른 예시적인 논리블록주소-물리적 페이지 번호-패리티 표이다. 도 6은 본 발명의 다양한 실시예들에 따른 예시적인 패리티 그룹 표이다.
도 5 및 도 6을 참조하면, 논리블록주소 레이드 스토리지 장치는 데이터 위치, 레이드 어레이 및 패리티 정보를 유지관리하기 위해 논리블록주소-물리적 페이지 번호-패리티 표(500) 및 패리티 그룹 표(600)를 포함할 수 있다. 다양한 실시예들에 있어서, 논리블록주소-물리적 페이지 번호-패리티 표(500) 및 패리티 그룹 표(600)는 스토리지 장치의 펌웨어에 저장되고 스토리지 컨트롤러에 의해 갱신될 수 있다. 다양한 실시예들에 있어서, 논리블록주소-물리적 페이지 번호-패리티 표(500) 및 패리티 그룹 표(600)는 논리블록주소 레이드 스토리지 장치의 다양한 레이드 어레이들을 정의하고 맵핑하도록 구성된다. 예를 들어, 논리블록주소-물리적 페이지 번호-패리티 표(500) 및 패리티 그룹 표(600)는 어느 논리블록주소가 어레이를 구성하는지 및 각 어레이에 대한 패리티 데이터의 위치를 정의할 수 있다.
[0049] 다양한 실시예들에 있어서, 논리블록주소-물리적 페이지 번호-패리티 표(500)는 논리블록주소를 물리적 페이지 번호 및 패리티 인덱스에 맵핑하도록 구성된다. 예를 들어, 다양한 실시예들에서 논리블록주소-물리적 페이지 번호-패리티 표(500)는 논리블록주소 인덱스(510), 연관 물리적 페이지 번호(520) 및 연관 패리티 인덱스(530)를 포함한다.
다양한 실시예들에 있어서, 패리티 그룹 표(600)는 어떤 논리블록주소들이 어떤 패리티 논리블록주소 또는 물리적 페이지 번호와 연관되는지를 정의하도록 구성된다. 예를 들어, 패리티 그룹 표(600)는 논리블록주소-물리적 페이지 번호-패리티 표(500)에서 패리티 인덱스(530)로 맵핑되는 패리티 인덱스(610)를 포함한다. 각각의 논리블록주소(620, 630, 640)는 패리티 물리적 페이지 번호(650)와 함께 각각의 패리티 인덱스(610)와 연관된다. 예컨대, 논리블록주소-물리적 페이지 번호-패리티 표(500)에 도시된 바와 같이, LBA_i, LBA_j 및 LBA_k는 각각 패리티 인덱스 1과 연관된다. 따라서, LBA_i, LBA_j 및 LBA_k의 데이터가 수정될 때마다 패리티 P1 역시 갱신된다. 예를 들어, 다양한 실시예들에 있어서, 데이터가 갱신(예: 어레이의 논리블록주소들 중 적어도 하나의 데이터가 변경)되면 대응하는 패리티 또한 XOR 연산을 통해 다시 계산되고, 논리블록주소-물리적 페이지 번호-패리티 표(500) 및 패리티 그룹 표(600)에서 연관된 물리적 페이지 번호(예: PPN(520) 및 패리티 PPN(650))도 갱신된다.
다양한 실시예들에 있어서, 데이터는 논리블록주소 레이드 스토리지 장치의 논리블록주소에서 삭제될 수 있다. 예를 들어, 다양한 실시예들에 있어서 논리블록주소 데이터를 패리티와 XOR 연산함으로써 패리티에서 논리블록주소 데이터가 삭제된다. 그 후, 갱신된 패리티는 새로운 물리적 페이지 번호에 저장될 수 있다. 논리블록주소-물리적 페이지 번호-패리티 표(500)의 이전 물리적 페이지 번호 및 패리티 인덱스는 삭제될 수 있다. 그런 다음, 논리블록주소는 패리티 그룹 표(600)에서 삭제될 수 있다. 어떤 경우에는 모든 논리블록주소들이 레이드 어레이에서 삭제될 수 있다. 하나의 레이드 어레이에서 모든 논리블록주소들이 삭제되는 경우, 대응하는 패리티 엔트리(예: 패리티 인덱스(610)와 연관된 모든 엔트리)가 패리티 그룹 표(600)에서 삭제될 수 있다.
다양한 실시예들에 있어서, 논리블록주소 레이드 스토리지 장치는 인트라-칩 레벨 가비지 컬렉션(Garbage Collection) 및 웨어 레벨링(Wear Leveling)을 위해 구성된다. 예를 들어, 가비지 컬렉션 또는 웨어 레벨링 과정에서 유효 데이터가 신규 소거 블록에 복사되는 경우, 신규 소거 블록은 동일한 플래시 메모리 칩으로부터 할당될 수 있다. 예를 들어, LBA_i는 플래시 메모리 칩 x에서 가비지 컬렉션 후보 소거 블록(또는 웨어 레벨링 블록)의 유효 엔트리일 수 있으므로, LBA_i의 데이터는 신규 소거 블록에 복사될 필요가 있다. 다양한 실시예들에 있어서, 신규 소거 블록은 동일한 플래시 메모리 칩 x에 할당될 것이다. 이러한 경우에 논리블록주소-물리적 페이지 번호-패리티 표(500)에서 물리적 페이지 번호(520)가 갱신되고 패리티 그룹 표(600)는 (옮겨지는 데이터가 패리티 데이터가 아닌 한) 갱신될 필요가 없다.
따라서, 본 발명의 전술한 실시예들은 논리블록주소 기반 레이드 스토리지 장치를 위한 시스템 및 방법을 제공한다. 다양한 실시예들에 있어서, 논리블록주소 레이드 스토리지 장치는 SSD에서 데이터 보호 및 성능을 향상시키는 레이드 수행에 사용될 수 있는 낸드 메모리 칩(예: 플래시 메모리 칩)과 같은 다수의 구성요소들을 포함한다. 다양한 실시예들에 있어서, 논리블록주소-물리적 페이지 번호-패리티 표 및 패리티 그룹 표는 데이터 위치 및 연관 패리티 비트를 맵핑하는데 사용된다.
전술한 내용은 예시적인 실시예들을 설명하기 위한 것이며 본 발명을 한정하는 것으로 해석되어서는 안 된다. 일부 예시적인 실시예들이 설명되었으나, 본 발명의 기술분야에 속한 통상의 기술자들은 예시적인 실시예들의 신규한 교시 및 이점으로부터 실질적으로 벗어나지 않고 다양한 변형들이 가능함을 쉽게 이해할 것이다. 따라서, 이러한 모든 변형들은 청구범위에 정의된 바와 같은 예시적인 실시예들의 범위에 속하는 것으로 해석될 것이다. 청구범위에서 기능식 청구항은 명시된 기능을 수행하는 것으로 기재된 구조들을 포함하며, 구조적 등가물들뿐만 아니라 등가의 구조물들도 포함하는 것으로 해석된다. 그러므로 전술한 내용은 예시적인 실시예들을 설명하기 위한 것으로 개시된 특정 실시예들에 한정되는 것으로 해석되어서는 안되며, 개시된 예시적인 실시예들의 변형례뿐만 아니라 다른 예시적인 실시예들도 첨부된 청구항들의 범위에 포함되는 것으로 해석될 것이다. 본 기술적 사상은 청구범위에 의해 정의되며 청구범위에는 균등범위도 포함된다.

Claims (22)

  1. 복수의 데이터 채널들;
    상기 복수의 데이터 채널들 중 하나에 각각 연결되는 복수의 스토리지 구성요소들; 및
    데이터를 수신하여 레이드 그룹에 상기 데이터를 기입하는 스토리지 컨트롤러를 포함하되,
    상기 레이드 그룹은 각각 개별 데이터 채널에 연결되는 상기 복수의 스토리지 구성요소들 중 적어도 2개의 스토리지 구성요소들을 포함하는,
    논리블록주소 레이드 스토리지 장치.
  2. 제1항에 있어서,
    상기 복수의 스토리지 구성요소들은 플래시 메모리 칩들을 포함하는, 논리블록주소 레이드 스토리지 장치.
  3. 제1항에 있어서,
    상기 레이드 그룹은 상기 데이터 수신을 위한 M개(M은 1보다 큼)의 스토리지 구성요소들 및 하나의 패리티 스토리지 구성요소를 포함하는, 논리블록주소 레이드 스토리지 장치.
  4. 제1항에 있어서,
    상기 레이드 그룹은 상기 데이터 수신을 위한 N개(N은 1보다 큼)의 스토리지 구성요소들 및 2개의 패리티 스토리지 구성요소들을 포함하는, 논리블록주소 레이드 스토리지 장치.
  5. 제1항에 있어서,
    상기 복수의 스토리지 구성요소들은 제1 데이터 채널에서 동작하는 제1 스토리지 구성요소, 제2 데이터 채널에서 동작하는 제2 스토리지 구성요소, 제3 데이터 채널에서 동작하는 제3 스토리지 구성요소, 및 제4 데이터 채널에서 동작하는 제4 스토리지 구성요소를 포함하고;
    상기 스토리지 컨트롤러는,
    상기 제1 스토리지 구성요소, 상기 제2 스토리지 구성요소 및 상기 제3 스토리지 구성요소를 이용하여 상기 데이터를 스트라이핑하고;
    상기 데이터에 대한 패리티를 계산하며;
    상기 제4 스토리지 구성요소에 상기 패리티를 저장하는, 논리블록주소 레이드 스토리지 장치.
  6. 제5항에 있어서,
    상기 제1 스토리지 구성요소, 상기 제2 스토리지 구성요소 및 제3 스토리지 구성요소를 이용하여 상기 데이터를 스트라이핑하는 것은,
    상기 제1 스토리지 구성요소의 제1 논리블록주소로 제1 데이터 세트를 기입하는 것과;
    상기 제2 스토리지 구성요소의 제2 논리블록주소로 제2 데이터 세트를 기입하는 것과;
    상기 제3 스토리지 구성요소의 제3 논리블록주소로 제3 데이터 세트를 기입하는 것을 포함하는, 논리블록주소 레이드 스토리지 장치.
  7. 제6항에 있어서,
    상기 데이터에 대한 패리티를 계산하는 것은,
    상기 제1 논리블록주소, 제2 논리블록주소 및 제3 논리블록주소에 기초하여 패리티를 계산하는 것을 포함하는, 논리블록주소 레이드 스토리지 장치.
  8. 제7항에 있어서,
    상기 패리티는 상기 제1 논리블록주소, 상기 제2 논리블록주소 및 제3 논리블록주소의 배타 논리합(XOR) 연산을 수행함에 의해 계산되는, 논리블록주소 레이드 스토리지 장치.
  9. 제1항에 있어서,
    상기 스토리지 컨트롤러는 논리블록주소-물리적 페이지 번호-패리티 표 및 패리티 그룹 표를 포함하는, 논리블록주소 레이드 스토리지 장치.
  10. 제9항에 있어서,
    상기 스토리지 컨트롤러는 상기 논리블록주소-물리적 페이지 번호-패리티 표 및 상기 패리티 그룹 표에 따라 레이드 그룹에 상기 데이터를 기입하는, 논리블록주소 레이드 스토리지 장치.
  11. 제9항에 있어서,
    상기 스토리지 컨트롤러는,
    상기 복수의 스토리지 구성요소들에 대한 가비지 컬렉션 소거 블록의 유효 엔트리를 식별하고;
    후보 데이터를 상기 가비지 컬렉션 소거 블록으로부터 상기 복수의 스토리지 구성요소들 중 동일한 스토리지 구성요소의 새로운 물리적 주소로 복사하며;
    상기 논리블록주소-물리적 페이지 번호-패리티 표를 상기 새로운 물리적 주소로 갱신하는, 논리블록주소 레이드 스토리지 장치.
  12. 제1 데이터 채널에서 동작하는 제1 스토리지 구성요소의 제1 논리블록주소;
    제2 데이터 채널에서 동작하는 제2 스토리지 구성요소의 제2 논리블록주소;
    제3 데이터 채널에서 동작하는 제3 스토리지 구성요소의 제3 논리블록주소;
    제4 데이터 채널에서 동작하는 제4 스토리지 구성요소의 제4 논리블록주소; 및
    상기 제1 논리블록주소, 상기 제2 논리블록주소 및 상기 제3 논리블록주소로 데이터를 기입하고, 상기 데이터에 대한 패리티를 계산하며, 상기 제4 논리블록주소로 상기 패리티를 저장하는 스토리지 컨트롤러
    를 포함하는 논리블록주소 레이드 스토리지 장치.
  13. 제12항에 있어서,
    상기 제1 스토리지 구성요소, 제2 스토리지 구성요소, 제3 스토리지 구성요소 및 제4 스토리지 구성요소는 플래시 메모리 칩들을 포함하는, 논리블록주소 레이드 스토리지 장치
  14. 제12항에 있어서,
    상기 데이터를 기입하는 것은,
    상기 제1 논리블록주소, 상기 제2 논리블록주소 및 상기 제3 논리블록주소로 상기 데이터를 스트라이핑하는 것을 포함하는, 논리블록주소 레이드 스토리지 장치.
  15. 제12항에 있어서,
    상기 패리티는 상기 제1 논리블록주소, 상기 제2 논리블록주소 및 상기 제3 논리블록주소의 배타 논리합(XOR) 연산을 수행함에 의해 계산되는, 논리블록주소 레이드 스토리지 장치.
  16. 제12항에 있어서,
    상기 스토리지 컨트롤러는 논리블록주소-물리적 페이지 번호-패리티 표 및 패리티 그룹 표를 포함하는, 논리블록주소 레이드 스토리지 장치.
  17. 제16항에 있어서,
    상기 스토리지 컨트롤러는 상기 논리블록주소-물리적 페이지 번호-패리티 표 및 상기 패리티 그룹 표에 따라 레이드 그룹에 상기 데이터를 기입하는, 논리블록주소 레이드 스토리지 장치.
  18. 제16항에 있어서,
    상기 스토리지 컨트롤러는,
    상기 제1 논리블록주소에 대한 가비지 컬렉션 소거 블록의 유효 엔트리를 식별하고;
    후보 데이터를 상기 제1 논리블록주소로부터 상기 제1 스토리지 구성요소의 새로운 물리적 주소로 복사하며;
    상기 논리블록주소-물리적 페이지 번호-패리티 표를 상기 제1 논리블록주소의 상기 새로운 물리적 주소로 갱신하는, 논리블록주소 레이드 스토리지 장치.
  19. 데이터를 저장하기 위한 기입 요청을 스토리지 컨트롤러에서 수신하는 단계;
    제1 데이터 채널에서 동작하는 제1 스토리지 구성요소, 제2 데이터 채널에서 동작하는 제2 스토리지 구성요소, 및 제3 데이터 채널에서 동작하는 제3 스토리지 구성요소에 상기 데이터를 기입하는 단계; 및
    패리티를 계산하고, 제4 데이터 채널에서 동작하는 제4 스토리지 구성요소에 상기 패리티를 저장하는 단계
    를 포함하는 솔리드 스테이트 디스크 제어방법.
  20. 제19항에 있어서,
    상기 데이터를 기입하는 단계는,
    상기 제1 스토리지 구성요소의 제1 논리블록주소, 상기 제2 스토리지 구성요소의 제2 논리블록주소, 및 상기 제3 스토리지 구성요소의 제3 논리블록주소로 상기 데이터를 기입하는 단계를 포함하는, 솔리드 스테이트 디스크 제어방법.
  21. 제20항에 있어서,
    펌웨어에 저장된 논리블록주소-물리적 페이지 번호-패리티 표 및 패리티 그룹 표에 따라 레이드 그룹에 상기 기입 요청을 맵핑하는 단계를 더 포함하는, 솔리드 스테이트 디스크 제어방법.
  22. 제20항에 있어서,
    상기 패리티를 계산하는 단계는,
    상기 제1 논리블록주소, 상기 제2 논리블록주소 및 상기 제3 논리블록주소의 배타 논리합(XOR) 연산을 수행하는 단계를 포함하는, 솔리드 스테이트 디스크 제어방법.
KR1020180064849A 2017-08-29 2018-06-05 논리블록주소 기반 레이드 시스템 및 방법 KR20190024627A (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201762551505P 2017-08-29 2017-08-29
US62/551,505 2017-08-29
US201862621450P 2018-01-24 2018-01-24
US62/621,450 2018-01-24
US15/949,943 US11221958B2 (en) 2017-08-29 2018-04-10 System and method for LBA-based RAID
US15/949,943 2018-04-10

Publications (1)

Publication Number Publication Date
KR20190024627A true KR20190024627A (ko) 2019-03-08

Family

ID=65437250

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180064849A KR20190024627A (ko) 2017-08-29 2018-06-05 논리블록주소 기반 레이드 시스템 및 방법

Country Status (3)

Country Link
US (4) US11221958B2 (ko)
KR (1) KR20190024627A (ko)
CN (1) CN109426584B (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11221958B2 (en) * 2017-08-29 2022-01-11 Samsung Electronics Co., Ltd. System and method for LBA-based RAID
US10983724B2 (en) * 2018-09-14 2021-04-20 Micron Technology, Inc. Controller with distributed sequencer components
CN112764665B (zh) * 2019-10-21 2024-05-10 伊姆西Ip控股有限责任公司 存储管理的方法、设备和计算机程序产品
US11210002B2 (en) * 2020-01-29 2021-12-28 Samsung Electronics Co., Ltd. Offloaded device-driven erasure coding

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5822251A (en) 1997-08-25 1998-10-13 Bit Microsystems, Inc. Expandable flash-memory mass-storage using shared buddy lines and intermediate flash-bus between device-specific buffers and flash-intelligent DMA controllers
GB0123415D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
US8060670B2 (en) 2004-03-17 2011-11-15 Super Talent Electronics, Inc. Method and systems for storing and accessing data in USB attached-SCSI (UAS) and bulk-only-transfer (BOT) based flash-memory device
US20080086608A1 (en) 2006-10-10 2008-04-10 Hitachi, Ltd. System and method for migration of CDP journal data between storage subsystems
US20100037091A1 (en) * 2008-08-06 2010-02-11 Anant Baderdinni Logical drive bad block management of redundant array of independent disks
JP5489434B2 (ja) 2008-08-25 2014-05-14 株式会社日立製作所 フラッシュメモリ搭載ストレージ装置
US8266501B2 (en) * 2009-09-29 2012-09-11 Micron Technology, Inc. Stripe based memory operation
US8417877B2 (en) * 2010-08-31 2013-04-09 Micron Technology, Inc Stripe-based non-volatile multilevel memory operation
US8850104B2 (en) * 2011-03-21 2014-09-30 Apple Inc. Independent management of data and parity logical block addresses
US9432298B1 (en) 2011-12-09 2016-08-30 P4tents1, LLC System, method, and computer program product for improving memory systems
US9424128B2 (en) 2011-08-12 2016-08-23 Futurewei Technologies, Inc. Method and apparatus for flexible RAID in SSD
US9251059B2 (en) 2011-09-23 2016-02-02 Avalanche Technology, Inc. Storage system employing MRAM and redundant array of solid state disk
US9274937B2 (en) 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
KR101445025B1 (ko) 2012-02-09 2014-09-26 서울시립대학교 산학협력단 신뢰성 있는 ssd를 위한 효율적인 raid 기법
US8996782B2 (en) 2012-03-23 2015-03-31 Kabushiki Kaisha Toshiba Memory system and bank interleaving method
US8938584B2 (en) 2012-04-30 2015-01-20 Dell Products, Lp System and method to keep parity consistent in an array of solid state drives when data blocks are de-allocated
JP6039699B2 (ja) 2012-07-23 2016-12-07 株式会社日立製作所 ストレージシステム及びデータ管理方法
CN103577111B (zh) * 2012-07-23 2017-05-31 上海宝存信息科技有限公司 基于非易失性存储器的动态独立冗余阵列存储系统及方法
CN104956309B (zh) 2013-01-25 2017-12-12 株式会社日立制作所 存储系统及数据管理方法
US9268702B2 (en) 2013-04-11 2016-02-23 Institute of Computer Science (ICS) of the Foundation for Research and Technology—Hellas (FORTH) Storage I/O path partitioning to eliminate I/O interference in consolidated servers
US9798620B2 (en) * 2014-02-06 2017-10-24 Sandisk Technologies Llc Systems and methods for non-blocking solid-state memory
US9319073B2 (en) 2014-02-11 2016-04-19 Seagate Technology Llc Mitigation of write errors in multi-level cell flash memory through adaptive error correction code decoding
CN104407813B (zh) 2014-11-20 2019-02-19 上海宝存信息科技有限公司 一种基于固态存储介质的raid系统及方法
WO2016112957A1 (en) 2015-01-13 2016-07-21 Hitachi Data Systems Engineering UK Limited Computer program product, method, apparatus and data storage system for managing defragmentation in file systems
US10528272B2 (en) 2015-02-20 2020-01-07 International Business Machines Corporation RAID array systems and operations using mapping information
WO2016194095A1 (ja) 2015-06-01 2016-12-08 株式会社日立製作所 情報処理システム、ストレージ装置及び記憶デバイス
US9626246B1 (en) * 2015-09-10 2017-04-18 Datadirect Networks, Inc. System and method for I/O optimized data migration between high performance computing entities and a data storage supported by a de-clustered raid (DCR)architecture with vertical execution of I/O commands
US9778855B2 (en) * 2015-10-30 2017-10-03 Sandisk Technologies Llc System and method for precision interleaving of data writes in a non-volatile memory
US9910786B2 (en) * 2015-11-03 2018-03-06 Intel Corporation Efficient redundant array of independent disks (RAID) write hole solutions
JP6696280B2 (ja) 2016-04-13 2020-05-20 富士通株式会社 情報処理装置、raid制御方法、およびraid制御プログラム
US20180059976A1 (en) * 2016-08-26 2018-03-01 Sandisk Technologies Llc Storage System with Integrated Components and Method for Use Therewith
US10198205B1 (en) 2016-12-19 2019-02-05 Pure Storage, Inc. Dynamically adjusting a number of storage devices utilized to simultaneously service write operations
JP6798007B2 (ja) * 2017-03-28 2020-12-09 株式会社日立製作所 ストレージシステム、コンピュータ読み取り可能な記録媒体、システムの制御方法
US11221958B2 (en) * 2017-08-29 2022-01-11 Samsung Electronics Co., Ltd. System and method for LBA-based RAID
TWI775268B (zh) * 2021-01-07 2022-08-21 慧榮科技股份有限公司 儲存裝置、快閃記憶體控制器及其控制方法

Also Published As

Publication number Publication date
US20200272572A1 (en) 2020-08-27
CN109426584A (zh) 2019-03-05
CN109426584B (zh) 2024-03-08
US11221958B2 (en) 2022-01-11
US20190065389A1 (en) 2019-02-28
US11237977B2 (en) 2022-02-01
US20240037041A1 (en) 2024-02-01
US20220156199A1 (en) 2022-05-19
US11789873B2 (en) 2023-10-17

Similar Documents

Publication Publication Date Title
US11941255B2 (en) Storage system and data management method
US9921912B1 (en) Using spare disk drives to overprovision raid groups
US9898196B1 (en) Small block write operations in non-volatile memory systems
US11237977B2 (en) System and method for LBA-based raid
US10061710B2 (en) Storage device
TW201915742A (zh) 記憶體系統及控制非揮發性記憶體之控制方法
CN111149091B (zh) 基于跨多个装置的协调内部地址方案的冗余编码条带
US9632702B2 (en) Efficient initialization of a thinly provisioned storage array
TW201915746A (zh) 記憶體系統及控制非揮發性記憶體之控制方法
JP6947670B2 (ja) 仮想装置階層を利用した複数のメモリ装置を含む仮想装置に対する客体の格納及び読み取り方法とこれを用いたストレージ装置
US10481979B2 (en) Storage system, computing system, and methods thereof
WO2011073939A1 (en) Data management in solid state storage devices
US11150819B2 (en) Controller for allocating memory blocks, operation method of the controller, and memory system including the controller
WO2014028183A1 (en) Fractional redundant array of silicon independent elements
CN112346658B (zh) 在具有高速缓存体系结构的存储设备中提高数据热量跟踪分辨率
Wang et al. CR5M: A mirroring-powered channel-RAID5 architecture for an SSD
US9323617B2 (en) Remap raid to maintain raid level
KR20240057337A (ko) 쓰기 데이터를 복수의 메모리 영역에 분산 저장하는 장치 및 방법
CN116136739A (zh) 用于改善存储装置的数据输入/输出性能的设备和方法
KR20230040057A (ko) 시스템의 읽기 성능을 개선하기 위한 장치 및 방법
US12001717B2 (en) Memory device operations for unaligned write operations
JP2023039212A (ja) メモリシステムおよび制御方法
CN115509439A (zh) 使用映射页和脏页位图部分管理数据的迁移的机制
CN113420341A (zh) 一种数据保护方法、数据保护设备及计算机系统

Legal Events

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