KR20130111821A - Raid 메모리 시스템 - Google Patents

Raid 메모리 시스템 Download PDF

Info

Publication number
KR20130111821A
KR20130111821A KR1020120034010A KR20120034010A KR20130111821A KR 20130111821 A KR20130111821 A KR 20130111821A KR 1020120034010 A KR1020120034010 A KR 1020120034010A KR 20120034010 A KR20120034010 A KR 20120034010A KR 20130111821 A KR20130111821 A KR 20130111821A
Authority
KR
South Korea
Prior art keywords
stripe
block
raid
data
stripe block
Prior art date
Application number
KR1020120034010A
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 KR1020120034010A priority Critical patent/KR20130111821A/ko
Priority to US13/771,477 priority patent/US20130262920A1/en
Publication of KR20130111821A publication Critical patent/KR20130111821A/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • 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
    • 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/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/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
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation

Abstract

RAID 메모리 시스템은 스트라이프 블록을 포함하는 비휘발성 메모리 장치, 및 상기 스트라이프 블록의 프로그램/이레이즈 싸이클 및 읽기 오류 발생 빈도 중 적어도 하나를 측정하고, 측정된 값을 고려하여 상기 스트라이프 블록의 크기의 변경 여부를 결정하는 메모리 컨트롤러를 포함한다.

Description

RAID 메모리 시스템{RAID memory system}
본 발명은 RAID 메모리 시스템에 관한 것이다.
RAID(Redundant Array of Inexpensive Disk)는 중요한 데이터를 가지고 있는 서버 등의 저장 장치에서 주로 사용되는 기술이다. 구체적으로, RAID 기술을 이용하면, 저장 장치에서 데이터 오류가 발생하더라도, RAID 패리티(parity)를 이용하여 RAID 리커버리(recovery)를 수행함으로써, 데이터 오류를 해결하고 정상적인 데이터를 복원할 수 있다. 그러므로, RAID를 이용하면 입출력 작업의 균형을 이룰 수 있고 서버의 전체적인 성능이 개선될 수 있다.
최근 서버로 HDD(Hard Disk Driver) 대신 SSD(Solid State Driver)를 사용하고 있다. SSD에 사용되는 반도체 메모리는, 예컨대 낸드(NAND) 플래시 메모리 칩을 포함할 수 있다. RAID 패리티를 구성하는 단위로 스트라이프(stripe)가 정의되며, 복수의 페이지가 모여서 패리티 페이지를 구성하는 단위인 스트라이프 페이지(stripe page)가 정의될 수 있다. 그리고, RAID 리커버리(recovery)는 스트라이프 페이지를 기본 단위로 수행될 수 있다.
복수의 낸드 플래시 메모리 칩을 포함하는 저장 장치에서, 스트라이프 페이지를 구성하는 페이지의 수는 정적(靜的)으로 관리된다. 즉, 저장 장치에서, 스트라이프 페이지를 구성하는 페이지의 수는 변하지 않으며, 최초에 설정된 값으로 유지된다.
그런데, 스트라이프 페이지를 구성하는 페이지의 수를 줄이면, RAID 리커버리에 의한 에러 복구율이 향상될 수 있다. 그러므로, 저장 장치가 노화된 경우, 스트라이프 페이지를 구성하는 페이지의 수를 줄여서, RAID 리커버리에 의한 에러 복구율을 높이는 것이 필요하다.
본 발명이 해결하려는 과제는, 스트라이프의 크기를 동적(動的)으로 변경하여, RAID 리커버리에 의한 에러 복구율을 최적할 수 있는 RAID 메모리 시스템을 제공하는 것이다.
본 발명이 해결하려는 과제들은 이상에서 언급한 과제들로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 과제를 해결하기 위한 본 발명의 RAID 메모리 시스템의 일 실시예는 스트라이프 블록을 포함하는 비휘발성 메모리 장치, 및 상기 스트라이프 블록의 프로그램/이레이즈 싸이클 및 읽기 오류 발생 빈도 중 적어도 하나를 측정하고, 측정된 값을 고려하여 상기 스트라이프 블록의 크기의 변경 여부를 결정하는 메모리 컨트롤러를 포함한다.
상기 과제를 해결하기 위한 본 발명의 RAID 메모리 장치의 다른 실시예는 각각 물리적 블록을 갖는 복수의 비휘발성 메모리 칩을 포함하는 비휘발성 메모리 장치로서, 각각 복수의 상기 물리적 블록으로 구성되는 복수의 스트라이프 블록을 포함하는 비휘발성 메모리 장치, 및 상기 비휘발성 메모리 장치에 포함되는 특정한 물리적 블록에서 오류가 발생하면, RAID 리커버리를 수행하는 메모리 컨트롤러를 포함하되, 상기 비휘발성 메모리 장치에는, 각각의 상기 스트라이프 블록에 어떠한 물리적 블록이 포함되는지에 대한 제1 데이터, 각각의 상기 물리적 블록이 복수의 상기 스트라이프 블록 중 어떠한 스트라이프 블록에 포함되는지에 대한 제2 데이터가 기록되고, 상기 RAID 리커버리를 수행하는 것은, 상기 제2 데이터를 이용하여 상기 특정한 물리적 블록이 포함되는 특정한 스트라이프 블록을 찾고, 상기 제1 데이터를 이용하여 상기 특정한 스트라이프 블록에 포함되는 복수의 물리적 블록을 찾고, 상기 복수의 물리적 블록에 포함된 페이지에 저장된 데이터를 이용하여 오류 데이터를 복구하는 것을 포함한다.
본 발명의 기타 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 실시예에 따른 RAID 메모리 시스템을 설명하기 위한 블록도이다.
도 2 및 도 3은 도 1의 비휘발성 메모리 장치의 구성을 설명하기 위한 블록도이다.
도 4는 도 3의 비휘발성 메모리 칩의 구성을 설명하기 위한 블록도이다.
도 5 및 도 6은 본 발명의 실시예에 따른 RAID 메모리 시스템의 스트라이프 블록의 크기를 변경하는 방법을 설명하기 위한 블록도이다.
도 7은 본 발명의 실시예에 따른 RAID 메모리 시스템의 RAID 리커버리 방법을 설명하기 위한 순서도이다.
도 8은 본 발명의 실시예에 따른 RAID 메모리 시스템의 RAID 리커버리 방법을 설명하기 위한 블록도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
하나의 소자(elements)가 다른 소자와 "접속된(connected to)" 또는 "커플링된(coupled to)" 이라고 지칭되는 것은, 다른 소자와 직접 연결 또는 커플링된 경우 또는 중간에 다른 소자를 개재한 경우를 모두 포함한다. 반면, 하나의 소자가 다른 소자와 "직접 접속된(directly connected to)" 또는 "직접 커플링된(directly coupled to)"으로 지칭되는 것은 중간에 다른 소자를 개재하지 않은 것을 나타낸다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다. "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
비록 제1, 제2 등이 다양한 소자, 구성요소 및/또는 섹션들을 서술하기 위해서 사용되나, 이들 소자, 구성요소 및/또는 섹션들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 소자, 구성요소 또는 섹션들을 다른 소자, 구성요소 또는 섹션들과 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 소자, 제1 구성요소 또는 제1 섹션은 본 발명의 기술적 사상 내에서 제2 소자, 제2 구성요소 또는 제2 섹션일 수도 있음은 물론이다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
도 1 내지 도 4를 참조하여, 본 발명의 실시예에 따른 RAID 메모리 시스템의 구성을 설명한다. 도 1은 본 발명의 실시예에 따른 RAID 메모리 시스템을 설명하기 위한 블록도이다. 도 2 및 도 3은 도 1의 비휘발성 메모리 장치의 구성을 설명하기 위한 블록도이다. 도 4는 도 3의 비휘발성 메모리 칩의 구성을 설명하기 위한 블록도이다.
도 1을 참조하면, RAID 메모리 시스템(1)은 메모리 컨트롤러(100)와 비휘발성 메모리 장치(200)를 포함할 수 있다.
RAID 메모리 시스템(1)은, 오류로 인한 데이터 손실을 방지하고 데이터 신뢰성을 높이기 위하여, RAID(Redundant Array of Inexpensive Disk)와 ECC(Error Correction Code)를 채택할 수 있으나, 이에 한정되는 것은 아니다.
본 명세서에서 설명될 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)일 수도 있다.
메모리 컨트롤러(100)는 호스트(HOST) 및 비휘발성 메모리 장치(200)에 커플링될 수 있다. 호스트(HOST)로부터의 요청에 응답하여, 메모리 컨트롤러(100)는 비휘발성 메모리 장치(200)에 액세스하도록 구성될 수 있다. 예를 들어, 메모리 컨트롤러(100)는 비휘발성 메모리 장치(200)의 리드, 프로그램, 및 이레이즈 등의 동작을 제어하도록 구성될 수 있다.
그리고, 메모리 컨트롤러(100)는 호스트(HOST)로부터 출력되는 데이터를 기초로 RAID 패러티(parity)를 생성할 수 있다. 예컨대, 메모리 컨트롤러(100)는 복수의 데이터를 XOR 연산하여 RAID 패러티를 생성할 수 있다. 또한, 메모리 컨트롤러(100)는 비휘발성 메모리 장치(200)에 대하여 RAID 리커버리(recovery)를 수행할 수 있다. RAID 리커버리를 수행하는 방법에 대하여는, 후술한다.
메모리 컨트롤러(100)는 비휘발성 메모리 장치(200) 및 호스트(HOST) 사이에서 인터페이스를 제공하도록 구성될 수 있다. 메모리 컨트롤러(100)는 비휘발성 메모리 장치(200)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구성될 수 있다.
비휘발성 메모리 장치(200)는 복수의 비휘발성 메모리 칩을 포함할 수 있다. 그리고, 이러한 복수의 비휘발성 메모리 칩은 예컨대, 제1 내지 제n 채널(CH1 내지 CHn, 단, n은 자연수)을 통해 메모리 컨트롤러(100)와 통신할 수 있다.
비휘발성 메모리 칩에 사용되는 메모리 셀은 예를 들어, 플래시 메모리(flash memory), EEPROM(Electrically Erasable Programmable Read-Only Memory), MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), OUM(Ovonic Unified Memory)라고도 불리는 PRAM(Phase change RAM), 저항 메모리(Resistive RAM: RRAM 또는 ReRAM), 나노튜브 RRAM (Nanotube RRAM), 폴리머 RAM(Polymer RAM: PoRAM), 나노 부유 게이트 메모리(Nano Floating Gate Memory: NFGM), 홀로그래픽 메모리 (holographic memory), 분자 전자 메모리 소자(Molecular Electronics Memory Device), 또는 절연 저항 변화 메모리(Insulator Resistance Change Memory)로 구현될 수 있다.
예시적으로, RAID 메모리 시스템(1)은 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들면, RAID 메모리 시스템(1)는 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS) 등과 같은 메모리 카드를 구성할 것이다.
또한, RAID 메모리 시스템(1)은 하나의 반도체 장치로 집적되어, SSD(Solid State Drive)를 구성할 수 있다. 메모리 컨트롤러(100)와 비휘발성 메모리 장치(200)가 하나의 반도체 장치로 집적되어 SSD로 이용되는 경우, RAID 메모리 시스템(1)에 연결된 호스트(HOST)의 동작 속도는 획기적으로 개선될 수 있다.
다른 예로서, RAID 메모리 시스템(1)은 컴퓨터, UMPC(Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA(Personal Digital Assistants), 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), e-북(e-book), PMP(portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 블랙박스(black box), 디지털 카메라(digital camera), 3차원 수상기(3-dimensional television), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), 정보를 무선 환경에서 송수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들 중 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치들 중 하나, 텔레매틱스 네트워크를 구성하는 다양한 전자 장치들 중 하나, RFID 장치, 또는 컴퓨팅 시스템을 구성하는 다양한 구성 요소들 중 하나 등과 같은 전자 장치의 다양한 구성 요소들 중 하나로 제공된다.
예시적으로, RAID 메모리 시스템(1)은 다양한 형태들의 패키지로 실장될 수 있다. 예를 들면, RAID 메모리 시스템(1)은 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP) 등과 같은 방식으로 패키지화되어 실장될 수 있다.
도 2를 참조하여, 비휘발성 메모리 장치(200)의 구성을 설명한다. 비휘발성 메모리 장치(200)는 유저 데이터가 저장되는 유저 데이터 영역(200-1)과 유저 데이터 이외의 데이터가 저장되는 오버-프로비전 영역(200-2, over-provision region)을 포함할 수 있다. 유저 데이터 영역(200-1)과 오버-프로비전 영역(200-2)이 물리적으로 분리되지는 않는다. 다만, 비휘발성 메모리 장치(200)는 저장되는 데이터의 종류에 따라, 유저 데이터 영역(200-1) 또는 오버-프로비전 영역(200-2) 중 어느 하나에 저장된 것으로 인식할 수 있다.
예컨대, RAID 패리티는 오버-프로비전 영역(200-2)에 저장될 수 있다. 이 밖에, 각각의 스트라이프 블록(stripe block)에 어떠한 물리적 블록(physical block)이 포함되는지에 대한 제1 데이터, 각각의 물리적 블록이 복수의 스트라이프 블록 중 어떠한 스트라이프 블록에 포함되는지에 대한 제2 데이터, 및 각각의 물리적 블록의 프로그램/이레이즈 싸이클 및 읽기 오류 발생 빈도 중 적어도 하나에 대한 제3 데이터가 오버-프로비전 영역(200-2)에 저장될 수 있으며, 제1 내지 제3 데이터에 대한 설명은 후술하도록 한다. 다만, 오버-프로비전 영역(200-2)에 저장되는 데이터는 상술한 데이터로 제한되지 않는다.
이어서, 도 1, 도 3 및 도 4를 참조하여, 비휘발성 메모리 장치(200)의 구성을 설명한다. 비휘발성 메모리 장치(200)는 n개의 비휘발성 메모리 칩(CHIP1 내지 CHIPn, 단, n은 자연수)을 포함할 수 있다. n개의 비휘발성 메모리 칩(CHIP1 내지 CHIPn)은 채널(CH1 내지 CHn)에 대응될 수 있다. 여기서, 채널(CH1 내지 CHn)은 데이터 및 RAID 패러티가 전송되는 적어도 하나의 데이터 라인일 수 있다.
각각의 비휘발성 메모리 칩(CHIP1 내지 CHIPn)은, 이레이즈 동작의 기본 단위인 물리적 블록(PHYSICAL BLOCK)과, 물리적 블록을 구성하며 리드 및 프로그램(또는 라이트)의 기본 단위인 페이지(PAGE)로 구성될 수 있다.
구체적으로, 각각의 비휘발성 메모리 칩(CHIP1 내지 CHIPn)은 복수의 페이지를 포함할 수 있다. 각각의 페이지에는 페이지 데이터((DATA(x, y), 단, x, y는 자연수) 또는 RAID 패리티(PARITY)가 저장될 수 있다.
그리고, 각각의 비휘발성 메모리 칩(CHIP1 내지 CHIPn)은 복수의 물리적 블록을 포함할 수 있다. 물리적 블록은 비휘발성 메모리 칩(CHIP1 내지 CHIPn)에서 이레이즈 동작의 기본 단위일 수 있다. 하나의 물리적 블록은 복수의 페이지를 포함할 수 있다. 예컨대, m(단, m은 자연수)개의 페이지가 하나의 물리적 블록을 구성할 수 있다. 제1 비휘발성 메모리 칩(CHIP1)의 제1 물리적 블록(PHYSICAL BLOCK1)은 제1 내지 제m 페이지(PAGE1 내지 PAGEm)를 포함할 수 있고, 제2 물리적 블록(PHYSICAL BLOCK2)은 제m+1 내지 제2m 페이지(PAGEm+1 내지 PAGE2m)를 포함할 수 있다.
예컨대, 비휘발성 메모리 칩(CH1 내지 CHn)에 사용되는 메모리 셀이 SLC(Single Level Cell)일 경우 각 물리적 블록은 64개의 페이지를 포함할 수 있고, 사용되는 메모리 셀이 MLC(Multi Level Cell)일 경우 각 물리적 블록은 128개의 페이지를 포함할 수 있고, 사용되는 메모리 셀이 TLC(Triple Level Cell)일 경우 각 물리적 블록은 192개의 페이지를 포함할 수 있다.
비휘발성 메모리 장치(200)는 스트라이프 페이지(STRIPE PAGE) 및 스트라이프 블록(STRIPE BLOCK)을 포함할 수 있다. RAID 리커버리를 위해서는 RAID 패리티(parity)가 필요한데, 스트라이프는 RAID 패리티를 구성하는 기본 단위로 정의될 수 있다. 스트라이프 페이지는 RAID 패리티 페이지(PARITY PAGE)를 구성하는 기본 단위이며, RAID 패리티 페이지를 생성하는데 사용되는 복수의 페이지를 포함할 수 있다. 예컨대, 제1 스트라이프 페이지(STRIPE PAGE1)는 제1 RAID 패리티 페이지(PARITY1)을 생성하는데 사용되는 복수의 페이지를 포함할 수 있다. 제1 RAID 패리티 페이지(PARITY1)을 생성하는데 사용되는 복수의 페이지는, 제1 내지 제n-1 비휘발성 메모리 칩(CHIP1 내지 CHIPn-1) 각각의 제1 페이지일 수 있다. 그리고, 제1 RAID 패리티 페이지(PARITY1)는 제1 내지 제n-1 비휘발성 메모리 칩(CHIP1 내지 CHIPn-1)의 제1 페이지에 저장된 데이터(DATA(1,1) 내지 DATA(n-1, 1))를 XOR 연산하여 생성될 수 있다.
다만, 도 3에는 RAID 레벨 4가 적용되어, 제n 비휘발성 메모리 칩(CHIPn)에 모든 RAID 패리티 페이지가 저장된 것으로 도시되었다. 그러나, 이에 제한되지 않으며, RAID 패리티 페이지는 제n 비휘발성 메모리 칩(CHIPn) 이외의 다른 비휘발성 메모리 칩에도 저장될 수 있다.
그리고, 복수의 스트라이프 페이지가 모여, 스트라이프 블록을 구성할 수 있다. 예컨대, 제1 스트라이프 블록(STRIPE BLOCK1)은 제1 내지 제m 스트라이프 페이지(STRIPE PAGE1 내지 STRIPE PAGEm)를 포함할 수 있다. 다만, 스트라이프 블록의 크기는 물리적 블록의 크기의 배수로 결정될 수 있다. 즉, 하나의 물리적 블록을 구성하는 페이지의 개수와 동일한 개수의 스트라이프 페이지가 모여서 하나의 스트라이프 블록을 구성하므로, 스트라이프 블록의 크기는 물리적 블록의 크기의 배수일 수 있다.
정리하면, 비휘발성 메모리 장치(200)는 각각 물리적 블록을 갖는 복수의 비휘발성 메모리 칩(CH1 내지 CHn)을 포함하고, 또한, 비휘발성 메모리 장치(200)는 각각 복수의 물리적 블록으로 구성되는 복수의 스트라이프 블록을 포함할 수 있다.
스트라이프 블록의 크기 또는 스트라이프 페이지의 크기는 RAID 메모리 시스템(1)의 신뢰성 및 성능에 영향을 미칠 수 있다.
하나의 스트라이프 페이지는 n개의 페이지가 모여서 구성되며, 이에 따라, 하나의 스트라이프 블록은 n개의 물리적 블록이 모여서 구성된다. 스트라이프 페이지를 구성하는 페이지의 수가 작아질수록 RAID 리커버리를 이용한 에러 복구율이 높아질 수 있다. 반면에, 스트라이프 페이지를 구성하는 페이지의 수가 작아지면, 비휘발성 메모리 장치(200)에 존재하는 스트라이프 페이지의 개수는 증가할 수 있다. 그러므로, RAID 패리티 페이지의 개수도 증가할 수 있다. 상술한 바와 같이, RAID 패리티 페이지는 오버-프로비전 영역(200-2)에 저장될 수 있는데, RAID 패리티 페이지의 개수가 증가하면, 사용 가능한 오버-프로비전 영역(200-2)이 감소하기 때문에, 결과적으로 WAF가 감소할 수 있다.
이와 반대로, 스트라이프 페이지를 구성하는 페이지의 수가 커질수록 RAID 리커버리를 이용한 에러 복구율이 낮아질 수 있다. 또한, ECC로 복구가 불가능한 읽기 오류 발생하여, RAID 리커버리를 수행할 때, 리드해야할 페이지 수가 늘어날 수 있다. 반면에, 스트라이프 페이지를 구성하는 페이지의 수가 커지면, 비휘발성 메모리 장치(200)에서 스트라이프 페이지의 개수가 감소할 수 있다. 그러므로, RAID 패리티 페이지의 개수가 줄어들 수 있다. 그러므로, RAID 패리티 페이지의 개수가 줄어들면, 사용 가능한 오버-프로비전 영역(200-2)이 증가하기 때문에, 결과적으로 WAF가 증가할 수 있다.
상술한 바와 같이, 스트라이프 블록의 크기 또는 스트라이프 페이지의 크기는 RAID 메모리 시스템(1)의 신뢰성 및 성능에 영향을 미치므로, 본 발명의 실시예에 따른 RAID 메모리 시스템(1)은, 스트라이프 블록의 크기를 조절하여, RAID 메모리 시스템(1)의 신뢰성을 유지하고, 성능을 최적화할 수 있다.
구체적으로, 본 발명의 실시예에 따른 RAID 메모리 시스템(1)에 의하면, 비휘발성 메모리 장치(200)의 스트라이프 블록의 크기가 변경될 수 있다. 스트라이프 블록의 크기가 변경되는 것은, 스트라이프 블록에 포함되는 물리적 블록의 개수가 변경되는 것을 의미할 수 있다.
메모리 컨트롤러(100)는 스트라이프 블록에 저장된 데이터의 신뢰성을 판단하여, 스트라이프 블록의 크기의 변경 여부를 결정할 수 있다. 구체적으로, 데이터의 신뢰성을 판단하는 기준으로, 예컨대, 프로그램/이레이즈 싸이클(P/E cycle) 및 읽기 오류 발생 빈도 중 적어도 하나가 이용될 수 있다. 즉, 메모리 컨트롤러(100)는 각각의 스트라이프 블록의 프로그램/이레이즈 싸이클 및 읽기 오류 발생 빈도 중 적어도 하나를 측정하고, 측정된 값을 고려하여 스트라이프 블록의 크기를 변경할지 여부를 결정할 수 있다. 다만, 스트라이프 블록에 저장된 데이터의 신뢰성을 판단하는 기준은, 프로그램/이레이즈 싸이클 및 읽기 오류 발생 빈도로 제한되지 않는다.
프로그램/이레이즈 싸이클은 스트라이프 블록의 노화 정도를 판단할 수 있는 척도가 될 수 있으므로, 이를 통해 스트라이프 블록에 저장된 데이터의 신뢰성을 판단할 수 있다. 그리고, 읽기 오류 발생 빈도는 스트라이프 블록에 저장된 데이터의 신뢰성을 직접적으로 나타낼 수 있는 척도가 될 수 있으므로, 이를 통해 스트라이프 블록에 저장된 데이터의 신뢰성을 판단할 수 있다.
스트라이프 블록의 프로그램/이레이즈 싸이클 및 읽기 오류 발생 빈도 중 적어도 하나를 측정하여, 측정된 값을 고려하여 스트라이프 블록의 크기의 변경 여부를 결정하는 방법은 다양할 수 있다.
예컨대, 측정된 값을 이용하여 연산을 수행하고, 연산 결과를 기준으로 스트라이프 블록의 크기의 변경 여부를 결정할 수 있다. 프로그램/이레이즈 싸이클과 관련된 변수를 m1라고 하고, 읽기 오류 발생 빈도와 관련된 변수를 m2라고 할 때, 연산식은 N(a*m1+b*m2)와 같이 구성될 수 있다. (단, a, b는 상수) 그러므로, 측정된 프로그램/이레이즈 싸이클 값 및 읽기 오류 발생 빈도 값을 상기 연산식에 대입하여 연산 결과를 얻을 수 있다. 그리고, 연산 결과를 기준으로, 스트라이프 블록의 크기를 변경할지 여부를 결정할 수 있다. 그리고, 스트라이프 블록의 크기를 변경하는 경우, 연산 결과를 기준으로 스트라이프 블록의 크기의 변경 정도도 결정할 수 있다.
N(a*m1+b*m2) 값 스트라이프 블록의 크기
M0 < N(a*m1+b*m2) < M1 N1
M1 < N(a*m1+b*m2) < M2 N2
Mk-1 < N(a*m1+b*m2) < Mk Nk
단, N1 > N2 > Nk
표 1을 참조하면, N(a*m1+b*m2)의 값에 따라 스트라이프 블록의 크기가 정해져 있다. 그러므로, 연산 결과를 기준으로, 스트라이프 블록의 크기를 변경할지 여부와 스트라이프 블록의 크기의 변경 정도도 결정할 수 있다. 만약, 연산 결과에 해당하는 스트라이프 블록의 크기와, 현재의 스트라이프 블록의 크기가 동일하면, 스트라이프 블록의 크기를 변경할 필요가 없다.
그러나, 연산 결과에 해당하는 스트라이프 블록의 크기와, 현재의 스트라이프 블록의 크기가 동일하지 않으면, 스트라이프 블록의 크기를 변경하는 것으로 결정될 수 있다. 그리고, 연산 결과에 해당하는 스트라이프 블록의 크기가, 현재의 스트라이프 블록의 크기가 작으면, 현재의 스트라이프 블록은 복수의 스트라이프 블록으로 분할될 수 있다. 즉, 현재의 스트라이프 블록의 데이터 신뢰도가 낮으므로, 스트라이프 블록의 크기를 줄임으로써, RAID 리커버리를 이용한 에러 복구율을 높여, RAID 메모리 시스템(1)의 신뢰성을 높일 수 있다.
또한, 연산 결과에 해당하는 스트라이프 블록의 크기가, 현재의 스트라이프 블록의 크기보다 크면, 현재의 스트라이프 블록은 다른 스트라이프 블록과 병합되는 등의 방법으로, 스트라이프 블록의 크기가 커질 수 있다. 즉, 현재의 스트라이프 블록의 데이터 신뢰도가 높으므로, 스트라이프 블록의 크기를 늘림으로써, WAF를 증가시켜, RAID 메모리 시스템(1)의 성능을 높일 수 있다.
정리하면, 측정된 프로그램/이레이즈 싸이클 값 및 읽기 오류 발생 빈도 값이 높아서, 연산 결과 값이 크다면, 이는 해당 스트라이프 블록이 노화되고, 에러 발생율이 높아서, 데이터의 신뢰성이 낮다는 의미일 수 있다. 즉, RAID 리커버리를 이용한 에러 복구율을 높이는 것이 필요하므로, 연산 결과 값이 클수록 이에 해당하는 스트라이프 블록의 크기는 작아질 수 있다. 결과적으로, 스트라이프 블록을 구성하는 기본 단위가 작아지면, RAID 리커버리를 이용한 에러 복구율이 높아질 수 있으므로, RAID 메모리 시스템(1)의 전반적인 데이터 신뢰성을 높일 수 있다.
추가적으로, 스트라이프 블록의 크기의 변경 여부는, 각각의 스트라이프 블록마다 개별적으로 결정될 수 있다. 그러므로, RAID 메모리 시스템(1)의 성능을 최적화 하기 유리할 수 있다. 결과적으로, 비휘발성 메모리 장치(200) 내에는 서로 다른 크기의 스트라이프 블록이 존재할 수 있다.
다만, 상기 연산식은 설명을 위한 예시일 뿐, 프로그램/이레이즈 싸이클 및 읽기 오류 발생 빈도 중 적어도 하나를 변수로 사용하고, 데이터의 신뢰성이 저하될수록, 스트라이프 블록의 크기가 줄어들도록 연산 결과를 도출할 수 있는 연산식이라면, 제한이 없다.
연산 결과에 따라, 스트라이프 블록의 크기를 변경하는 것으로 결정되면, 메모리 컨트롤러(200)는 스트라이프 블록의 크기를 변경한다. 스트라이프 블록의 크기가 변경되면, RAID 패리티를 구성하는 구성 단위가 변경되는 것이므로, 메모리 컨트롤러(200)는 새로운 RAID 패리티를 생성할 수 있다. 결과적으로, 스트라이프 블록의 크기의 변경 전의 RAID 패리티와, 스트라이프 블록의 크기의 변경 후의 새로운 RAID 패리티는 다를 수 있다. 상기의 RAID 패리티는 동일한 스트라이프 블록에 포함되는 RAID 패리티 페이지를 총칭하는 것으로 정의될 수 있다.
그리고, 스트라이프 블록의 크기가 변경됨에 따라, 비휘발성 메모리 장치(200)에 존재하는 RAID 패리티의 개수도 변경될 수 있다. 그러므로, 스트라이프 블록의 크기가 변경 전의 비휘발성 메모리 장치(200)에서 RAID 패리티가 차지하는 저장 비율은, 스트라이프 블록의 크기가 변경 후의 비휘발성 메모리 장치(200)에서 RAID 패리티가 차지하는 저장 비율과 다를 수 있다.
메모리 컨트롤러(100)에서 스트라이프 블록의 프로그램/이레이즈 싸이클(P/E cycle) 및 읽기 오류 발생 빈도 중 적어도 하나를 측정하는 방법은 다음과 같다.
상술한 바와 같이, 비휘발성 메모리 장치(200)의 오버-프로비전 영역(200-2)에는 각각의 스트라이프 블록(stripe block)에 어떠한 물리적 블록(physical block)이 포함되는지에 대한 제1 데이터, 각각의 물리적 블록이 복수의 스트라이프 블록 중 어떠한 스트라이프 블록에 포함되는지에 대한 제2 데이터 및 각각의 물리적 블록의 프로그램/이레이즈 싸이클 및 읽기 오류 발생 빈도 중 적어도 하나에 대한 제3 데이터가 저장될 수 있다. 그리고, 상기의 데이터들은, 데이터의 변경이 있을 때마다 수시로 업데이트될 수 있다.
예컨대, 메모리 컨트롤러(100)에서 특정한 스트라이프 블록의 프로그램/이레이즈 싸이클을 측정하기 위해, 제1 데이터를 이용하여 특정한 스트라이프 블록에 포함되는 복수의 물리적 블록을 찾고, 해당되는 복수의 물리적 블록의 제3 데이터를 찾아서, 프로그램/이레이즈 싸이클을 취합할 수 있다.
이와 마찬가지로, 특정한 스트라이프 블록의 읽기 오류 발생 빈도를 측정하기 위해, 특정한 스트라이프 블록에 포함되는 복수의 물리적 블록을 찾고, 해당되는 복수의 물리적 블록의 제3 데이터를 찾아서, 읽기 오류 발생 빈도를 취합할 수 있다.
도 5 및 도 6을 참조하여, 비휘발성 메모리 장치(200)의 스트라이프 블록을 변경하는 방법을 구체적으로 설명한다. 도 5 및 도 6은 본 발명의 실시예에 따른 RAID 메모리 시스템의 스트라이프 블록의 크기를 변경하는 방법을 설명하기 위한 블록도이다.
도 5 및 도 6을 참조하면, 비휘발성 메모리 칩(CHIP1 내지 CHIP1024)의 개수가 1024개일 때를 예시하여 설명한다. 비휘발성 메모리 장치(200)는 복수의 스트라이프 블록을 포함할 수 있다. 도 5에는 모든 스트라이프 블록의 크기가 동일한 것으로 도시되었지만, 이는 설명의 편의를 위해서 도시한 것일 뿐, 비휘발성 메모리 장치(200)는 다양한 크기의 스트라이프 블록을 포함할 수 있다.
제1 스트라이프 블록(STRIPE BLOCK1) 및 제4 스트라이프 블록(STRIPE BLOCK4)은, 연산 결과에 해당하는 스트라이프 블록의 크기와, 현재의 스트라이프 블록의 크기가 동일한 경우를 예시한 것으로, 스트라이프 블록의 크기를 변경할 필요가 없다. 그러므로, 도 5 및 도 6에서 제1 스트라이프 블록(STRIPE BLOCK1) 및 제4 스트라이프 블록(STRIPE BLOCK4)의 크기는 변함이 없다.
제2 스트라이프 블록(STRIPE BLOCK2) 및 제3 스트라이프 블록(STRIPE BLOCK3)은, 연산 결과에 해당하는 스트라이프 블록의 크기가 현재의 스트라이프 블록의 크기가 작기 때문에, 현재의 스트라이프 블록은 복수의 스트라이프 블록으로 분할될 수 있다. 구체적으로, 제3 스트라이프 블록(STRIPE BLOCK3)이 제2 스트라이프 블록(STRIPE BLOCK2)에 비해, 데이터의 신뢰성이 낮은 것으로 평가된 것일 수 있다. 예컨대, 제3 스트라이프 블록(STRIPE BLOCK3)에 대한 연산 결과 값이, 제2 스트라이프 블록(STRIPE BLOCK2)에 대한 연산 결과 값에 비해 클 수 있다. 그러므로, 제3 스트라이프 블록(STRIPE BLOCK3)의 스트라이프 블록의 크기가 상대적으로 더 작도록 변경될 수 있다.
결과적으로, 1024개의 물리적 블록으로 구성된 제2 스트라이프 블록(STRIPE BLOCK2)은, 각각 512개의 물리적 블록으로 구성된 제2-1 및 제2-2 스트라이프 블록(STRIPE BLOCK2-1, STRIPE BLOCK2-2)으로 분할되었다. 그리고, 1024개의 물리적 블록으로 구성된 제3 스트라이프 블록(STRIPE BLOCK3)은, 각각 256개의 물리적 블록으로 구성된 제3-1 내지 제3-4 스트라이프 블록(STRIPE BLOCK3-1 내지 STRIPE BLOCK3-4)으로 분할되었다.
이어서, 도 7 및 도 8을 참조하여, 본 발명의 실시예에 따른 RAID 메모리 시스템의 RAID 리커버리 방법을 설명한다. 도 7은 본 발명의 실시예에 따른 RAID 메모리 시스템의 RAID 리커버리 방법을 설명하기 위한 순서도이다. 도 8은 본 발명의 실시예에 따른 RAID 메모리 시스템의 RAID 리커버리 방법을 설명하기 위한 블록도이다.
도 7 및 도 8을 참조하면, 특정한 물리적 블록에 속한 페이지에서 ECC로 복구가 불가능한 읽기 오류가 발생하면, 메모리 컨트롤러(100)는 RAID 리커버리를 수행할 수 있다.
우선, 메모리 컨트롤러(100)는 오류가 발생한 물리적 블록이 어떤 스트라이프 블록에 포함되는지 찾을 수 있다(S10). 구체적으로, 비휘발성 메모리 장치(200)에 저장된 제2 데이터를 이용할 수 있다. 제2 데이터는, 각각의 물리적 블록이 복수의 스트라이프 블록 중 어떠한 스트라이프 블록에 포함되는지에 관한 데이터이기 때문에, 오류가 발생한 물리적 블록이 어떤 스트라이프 블록에 포함되는지 알 수 있다.
예컨대, 제1 비휘발성 메모리 칩(CHIP1)의 제1 페이지에서 에러가 발생한 경우, 제2 데이터를 이용하여, 제1 비휘발성 메모리 칩(CHIP1)의 제1 페이지가 속한 물리적 블록이 제1 스트라이프 블록(STRIPE BLOCK1)에 포함되는지 알 수 있다.
이어서, 오류가 발생한 물리적 블록이 속하는 스트라이프 블록에 포함되는 다른 물리적 블록을 찾을 수 있다(S20). 구체적으로, 비휘발성 메모리 장치(200)에 저장된 제1 데이터를 이용할 수 있다. 제1 데이터는, 각각의 스트라이프 블록에 어떠한 물리적 블록(physical block)이 포함되는지에 관한 데이터이기 때문에, 오류가 발생한 물리적 블록이 속하는 스트라이프 블록에 포함되는 다른 물리적 블록을 검색할 수 있다.
예컨대, 제1 데이터를 이용하여, 제1 스트라이프 블록(STRIPE BLOCK1)에 속하는 다른 물리적 블록을 찾을 수 있다.
이어서, 오류가 발생한 물리적 블록이 속하는 스트라이프 블록에 포함되는 다른 물리적 블록의 페이지를 리드할 수 있다(S30). 검색된 물리적 페이지를 리드함으로써, RAID 리커버리를 위한 데이터를 얻을 수 있다.
예컨대, 제1 스트라이프 블록(STRIPE BLOCK1)에 속하는 다른 물리적 블록의 페이지를 리드할 수 있다. 구체적으로, 제2 내지 제1024 비휘발성 메모리 칩(CHIP2 내지 CHIP1024)의 제1 페이지를 리드할 수 있다.
이어서, RAID 리커버리로 복구 가능한지 판단할 수 있다(S40). 만약, RAID 리커버리로 복구 가능하다고 판단된 경우, 리드된 복수의 데이터 XOR하여 데이터를 복구할 수 있다(S50). 즉, 검색된 물리적 블록에 포함된 페이지에 저장된 데이터를 이용하여, 오류 데이터를 복구할 수 있다. 다만, RAID 리커버리로 복구 불가능한 경우, 복구할 수 없는 오류로 판단할 수 있다(S60).
예컨대, RAID 리커버리로 복구 가능하다고 판단된 경우, 제2 내지 제1024 비휘발성 메모리 칩(CHIP2 내지 CHIP1024)의 제1 페이지로부터 리드된 복수의 데이터를 XOR하여 제1 비휘발성 메모리 칩(CHIP1)의 제1 페이지의 데이터를 복구할 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
1: RAID 메모리 시스템 100: 메모리 컨트롤러
200: 비휘발성 메모리 장치 200-1: 유저 데이터 영역
200-2: 오버-프로비전 영역

Claims (10)

  1. 스트라이프 블록을 포함하는 비휘발성 메모리 장치; 및
    상기 스트라이프 블록의 프로그램/이레이즈 싸이클 및 읽기 오류 발생 빈도 중 적어도 하나를 측정하고, 측정된 값을 고려하여 상기 스트라이프 블록의 크기의 변경 여부를 결정하는 메모리 컨트롤러를 포함하는 RAID 메모리 시스템.
  2. 제1 항에 있어서,
    상기 측정된 값을 고려하여 상기 스트라이프 블록의 크기의 변경 여부를 결정하는 것은,
    상기 측정된 값을 이용하여 상기 스트라이프 블록의 데이터의 신뢰성을 판단하는 연산을 수행하고, 연산 결과를 기준으로 상기 스트라이프 블록의 크기의 변경 여부를 결정하는 것인 RAID 메모리 시스템.
  3. 제2 항에 있어서,
    상기 연산 결과를 기준으로 상기 스트라이프 블록의 크기의 변경 여부를 결정하는 것은, 상기 연산 결과를 기준으로 상기 스트라이프 블록의 크기의 변경 여부 및 상기 스트라이프 블록의 변경 크기를 결정하는 것을 포함하는 RAID 메모리 시스템.
  4. 제1 항에 있어서,
    상기 스트라이프 블록은 RAID 패리티를 포함하고,
    상기 메모리 컨트롤러는, 상기 스트라이프 블록의 크기를 변경하는 것으로 결정되면, 상기 스트라이프 블록의 크기를 변경하며,
    상기 스트라이프 블록의 크기를 변경하는 것은, 변경된 크기의 스트라이프 블록에 해당하는 새로운 RAID 패리티를 생성하는 것을 포함하는 RAID 메모리 시스템.
  5. 제4 항에 있어서,
    상기 비휘발성 메모리 장치에서 상기 RAID 패리티가 차지하는 저장 비율은, 상기 비휘발성 메모리 장치에서 상기 새로운 RAID 패리티가 차지하는 저장 비율과 다른 RAID 메모리 시스템.
  6. 제1 항에 있어서,
    상기 비휘발성 메모리 장치는 각각 물리적 블록을 갖는 복수의 비휘발성 메모리 칩을 포함하고,
    상기 스트라이프 블록은 복수의 상기 물리적 블록들로 구성되는 RAID 메모리 시스템.
  7. 제6 항에 있어서,
    상기 스트라이프 블록의 크기의 변경 여부는 상기 스트라이프 블록을 구성하는 상기 물리적 블록들의 개수의 변경 여부인 RAID 메모리 시스템.
  8. 제6 항에 있어서,
    상기 비휘발성 메모리 장치는 복수의 상기 스트라이프 블록을 포함하고,
    상기 비휘발성 메모리 장치에는, 각각의 스트라이프 블록에 어떠한 물리적 블록이 포함되는지에 대한 제1 데이터, 각각의 물리적 블록이 복수의 상기 스트라이프 블록 중 어떠한 스트라이프 블록에 포함되는지에 대한 제2 데이터, 및 각각의 물리적 블록의 프로그램/이레이즈 싸이클 및 읽기 오류 발생 빈도 중 적어도 하나에 대한 제3 데이터가 기록되는 RAID 메모리 시스템.
  9. 제8 항에 있어서,
    상기 메모리 컨트롤러는, 상기 비휘발성 메모리 장치에 포함되는 특정한 물리적 블록에서 오류가 발생하면, RAID 리커버리를 수행하되,
    상기 RAID 리커버리를 수행하는 것은, 상기 제2 데이터를 이용하여 상기 특정한 물리적 블록이 포함되는 특정한 스트라이프 블록을 찾고, 상기 제1 데이터를 이용하여 상기 특정한 스트라이프 블록에 포함되는 복수의 물리적 블록을 찾고, 상기 복수의 물리적 블록에 포함된 페이지에 저장된 데이터를 이용하여 오류 데이터를 복구하는 것을 포함하는 RAID 메모리 시스템.
  10. 각각 물리적 블록을 갖는 복수의 비휘발성 메모리 칩을 포함하는 비휘발성 메모리 장치로서, 각각 복수의 상기 물리적 블록으로 구성되는 복수의 스트라이프 블록을 포함하는 비휘발성 메모리 장치; 및
    상기 비휘발성 메모리 장치에 포함되는 특정한 물리적 블록에서 오류가 발생하면, RAID 리커버리를 수행하는 메모리 컨트롤러를 포함하되,
    상기 비휘발성 메모리 장치에는, 각각의 상기 스트라이프 블록에 어떠한 물리적 블록이 포함되는지에 대한 제1 데이터, 각각의 상기 물리적 블록이 복수의 상기 스트라이프 블록 중 어떠한 스트라이프 블록에 포함되는지에 대한 제2 데이터가 기록되고,
    상기 RAID 리커버리를 수행하는 것은, 상기 제2 데이터를 이용하여 상기 특정한 물리적 블록이 포함되는 특정한 스트라이프 블록을 찾고, 상기 제1 데이터를 이용하여 상기 특정한 스트라이프 블록에 포함되는 복수의 물리적 블록을 찾고, 상기 복수의 물리적 블록에 포함된 페이지에 저장된 데이터를 이용하여 오류 데이터를 복구하는 것을 포함하는 RAID 메모리 시스템.
KR1020120034010A 2012-04-02 2012-04-02 Raid 메모리 시스템 KR20130111821A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120034010A KR20130111821A (ko) 2012-04-02 2012-04-02 Raid 메모리 시스템
US13/771,477 US20130262920A1 (en) 2012-04-02 2013-02-20 Raid memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120034010A KR20130111821A (ko) 2012-04-02 2012-04-02 Raid 메모리 시스템

Publications (1)

Publication Number Publication Date
KR20130111821A true KR20130111821A (ko) 2013-10-11

Family

ID=49236730

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120034010A KR20130111821A (ko) 2012-04-02 2012-04-02 Raid 메모리 시스템

Country Status (2)

Country Link
US (1) US20130262920A1 (ko)
KR (1) KR20130111821A (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101412830B1 (ko) * 2013-02-07 2014-06-27 홍익대학교 산학협력단 반도체 저장장치 및 이를 제어하는 방법
KR20160044289A (ko) * 2014-10-15 2016-04-25 삼성전자주식회사 데이터 저장 시스템, 데이터 저장 장치 및 raid 컨트롤러
KR20170104073A (ko) * 2016-03-04 2017-09-14 삼성전자주식회사 Raid 스토리지 장치의 리커버리 방법
KR20180032352A (ko) * 2016-09-22 2018-03-30 삼성전자주식회사 가변 소거 유닛 크기를 가지는 스토리지 디바이스 및 이를 포함하는 레이드 스토리지 시스템
KR20190043860A (ko) * 2017-10-19 2019-04-29 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법
KR20220023476A (ko) 2020-08-21 2022-03-02 에스케이하이닉스 주식회사 레이드 데이터 저장 장치 및 이를 포함하는 데이터 저장 시스템

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2864885B1 (en) * 2012-06-25 2017-05-17 Storone Ltd. System and method for datacenters disaster recovery
US9405480B2 (en) 2014-01-13 2016-08-02 Seagate Technology Llc Interleaving codewords over multiple flash planes
CN106681934B (zh) * 2014-03-19 2020-09-11 华为技术有限公司 一种存储设备垃圾回收的方法及设备
US9830110B2 (en) * 2014-06-20 2017-11-28 Dell Products, Lp System and method to enable dynamic changes to virtual disk stripe element sizes on a storage controller
KR102417182B1 (ko) 2015-06-22 2022-07-05 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
KR102580123B1 (ko) * 2016-05-03 2023-09-20 삼성전자주식회사 Raid 스토리지 장치 및 그것의 관리 방법
US10620983B2 (en) 2016-11-08 2020-04-14 International Business Machines Corporation Memory stripe with selectable size
US10235202B2 (en) 2016-11-08 2019-03-19 International Business Machines Corporation Thread interrupt offload re-prioritization
CN108228085A (zh) * 2016-12-21 2018-06-29 伊姆西Ip控股有限责任公司 用于管理存储系统的方法和设备
WO2018165958A1 (en) 2017-03-16 2018-09-20 Microsoft Technology Licensing, Llc. Storage system control
CN107632940A (zh) * 2017-08-11 2018-01-26 记忆科技(深圳)有限公司 一种固态硬盘raid垃圾回收方法
KR102504293B1 (ko) 2017-11-29 2023-02-27 삼성전자 주식회사 패키지 온 패키지 형태의 반도체 패키지
US11106370B2 (en) 2019-07-02 2021-08-31 Micron Technology, Inc. Changing of memory components to be used for a stripe based on an endurance condition
CN112748849A (zh) * 2019-10-29 2021-05-04 伊姆西Ip控股有限责任公司 用于存储数据的方法、设备和计算机程序产品
JP2023037877A (ja) * 2021-09-06 2023-03-16 キオクシア株式会社 メモリシステム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3579389B2 (ja) * 2001-11-30 2004-10-20 株式会社東芝 ディスクアレイ装置及び同装置におけるデータ復旧方法
US20100017650A1 (en) * 2008-07-19 2010-01-21 Nanostar Corporation, U.S.A Non-volatile memory data storage system with reliability management
US8775868B2 (en) * 2010-09-28 2014-07-08 Pure Storage, Inc. Adaptive RAID for an SSD environment

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101412830B1 (ko) * 2013-02-07 2014-06-27 홍익대학교 산학협력단 반도체 저장장치 및 이를 제어하는 방법
KR20160044289A (ko) * 2014-10-15 2016-04-25 삼성전자주식회사 데이터 저장 시스템, 데이터 저장 장치 및 raid 컨트롤러
KR20170104073A (ko) * 2016-03-04 2017-09-14 삼성전자주식회사 Raid 스토리지 장치의 리커버리 방법
KR20180032352A (ko) * 2016-09-22 2018-03-30 삼성전자주식회사 가변 소거 유닛 크기를 가지는 스토리지 디바이스 및 이를 포함하는 레이드 스토리지 시스템
KR20190043860A (ko) * 2017-10-19 2019-04-29 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법
KR20220023476A (ko) 2020-08-21 2022-03-02 에스케이하이닉스 주식회사 레이드 데이터 저장 장치 및 이를 포함하는 데이터 저장 시스템
US11481274B2 (en) 2020-08-21 2022-10-25 SK Hynix Inc. Raid data storage device and data storage system including the same

Also Published As

Publication number Publication date
US20130262920A1 (en) 2013-10-03

Similar Documents

Publication Publication Date Title
KR20130111821A (ko) Raid 메모리 시스템
US9292382B2 (en) Codewords that span pages of memory
US10613929B2 (en) Fractional redundant array of silicon independent elements
US10228990B2 (en) Variable-term error metrics adjustment
KR101912596B1 (ko) 리던던트 어레이들을 통한 비휘발성 메모리 프로그램 실패 복구
KR101636785B1 (ko) 독립 실리콘 소자들을 갖는 동적 상위 레벨 리던던시 모드 관리
US9158617B2 (en) Method of performing write operation or read operation in memory system and system thereof
US9921908B2 (en) Storage device and read reclaim and read method thereof
US9323612B2 (en) Mixed granularity higher-level redundancy for non-volatile memory
US9348695B2 (en) System and method of storing redundancy data
US8862804B2 (en) System and method for improved parity determination within a data redundancy scheme in a solid state memory
US9195541B2 (en) Controlling nonvolatile memory device and nonvolatile memory system
KR101679530B1 (ko) 이용 가능한 메모리 공간에 기초한 이중화 저장 장치 구성의 선택
US9904621B2 (en) Methods and systems for flash buffer sizing
KR20180008219A (ko) Raid 리커버리를 수행하는 메모리 시스템 및 그 동작방법
US10108494B2 (en) RAID controller device and storage device configured to recover data having uncorrectable ECC error
KR20130049464A (ko) 에러 정정 성능 신장 방법 및 이를 이용한 저장 장치
US10097208B2 (en) Error locator polynomial decoder method
US10572189B2 (en) Method and decoder to adjust an error locator polynomial based on an error parity
CN107807788B (zh) 块条带构造方法、构造装置及固态存储设备
US9524794B1 (en) Constrained data shaping
KR102545698B1 (ko) 데이터 저장 시스템
McEwan et al. Age Distribution Convergence Mechanisms for Flash Based File Systems.
WO2022183465A1 (en) Method for redundant array of independent disks striping against programming failures and apparatus thereof
CN108574495B (zh) 错误定位多项式解码器及方法

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid