KR101826051B1 - 비휘발성 메모리 장치의 제어 방법 및 비휘발성 메모리 시스템 - Google Patents

비휘발성 메모리 장치의 제어 방법 및 비휘발성 메모리 시스템 Download PDF

Info

Publication number
KR101826051B1
KR101826051B1 KR1020120019748A KR20120019748A KR101826051B1 KR 101826051 B1 KR101826051 B1 KR 101826051B1 KR 1020120019748 A KR1020120019748 A KR 1020120019748A KR 20120019748 A KR20120019748 A KR 20120019748A KR 101826051 B1 KR101826051 B1 KR 101826051B1
Authority
KR
South Korea
Prior art keywords
sub
stripe
data
page
area
Prior art date
Application number
KR1020120019748A
Other languages
English (en)
Other versions
KR20130097995A (ko
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 KR1020120019748A priority Critical patent/KR101826051B1/ko
Priority to US13/613,906 priority patent/US9195541B2/en
Publication of KR20130097995A publication Critical patent/KR20130097995A/ko
Application granted granted Critical
Publication of KR101826051B1 publication Critical patent/KR101826051B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • 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
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • 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/109Sector level checksum or ECC, i.e. sector or stripe level checksum or ECC in addition to the RAID parity calculation
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

비휘발성 메모리 장치의 제어 방법이 제공된다. 비휘발성 메모리 장치의 제어 방법은, 제1 영역 내의 복수의 서브 페이지를 포함하는 제1 서브 스트라이프를 리드하고, 제1 서브 스트라이프 중 유효(valid) 서브 페이지에 저장된 데이터를, 제1 영역과 다른 제2 영역에 라이트하고, 제2 영역에 저장된 데이터를 이용하여 RAID 패리티를 생성하여, 신규 서브 스트라이프를 형성하는 것을 포함한다.

Description

비휘발성 메모리 장치의 제어 방법 및 비휘발성 메모리 시스템 {Method for controlling nonvolatile memory device and nonvolatile memory system}
본 발명은 비휘발성 메모리 장치의 제어 방법 및 비휘발성 메모리 시스템 에 관한 것이다.
RAID(Redundant Array of Inexpensive Disk)는 중요한 데이터를 가지고 있는 서버 등의 저장 매체에서 주로 사용되는 방법으로, 여러 저장 매체 중 하나의 저장 매체에 패리티(parity)를 저장하여 다른 저장 매체에 저장된 데이터에서 오류가 발생하더라도 이를 정상적인 데이터로 복원할 수 있는 방법이다. 이러한 RAID를 이용하게되면 입출력 작업의 균형을 이룰 수 있고 서버의 전체적인 성능이 개선될 수 있다.
최근 서버의 저장 매체로 HDD(Hard Disk Driver) 대신 SSD(Solid State Drive)가 점차 사용되고 있다. 이러한 SSD에 사용되는 반도체 메모리로는 예를 들어, 낸드(NAND) 플래시일 수 있는데, 낸드 플래시의 읽기 및 쓰기 단위는 일반적으로 페이지(page)이므로, 페이지 단위로 스트라이프(Strip)를 구성하여 RAID 기술을 적용한다.
그런데, 이 경우 둘 이상의 페이지에서 데이터 오류가 발생한다면, RAID 기술 이용해 데이터를 복구할 수 없는 문제가 존재한다. 따라서, 둘 이상의 페이지에서 데이터 오류가 발생하더라도 데이터를 복구할 수 있는 기술에 대한 연구가 진행되고 있다.
본 발명이 해결하고자 하는 기술적 과제는 둘 이상의 페이지에서 데이터 오류가 발생하더라도 데이터 복원이 가능한 비휘발성 메모리 장치의 제어 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는 둘 이상의 페이지에서 데이터 오류가 발생하더라도 데이터 복원이 가능한 비휘발성 메모리 시스템을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 비휘발성 메모리 장치의 제어 방법은, 제1 영역 내의 복수의 서브 페이지를 포함하는 제1 서브 스트라이프를 리드하고, 제1 서브 스트라이프 중 유효(valid) 서브 페이지에 저장된 데이터를, 제1 영역과 다른 제2 영역에 라이트하고, 제2 영역에 저장된 데이터를 이용하여 RAID 패리티를 생성하여, 신규 서브 스트라이프를 형성하는 것을 포함한다.
상기 다른 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 비휘발성 메모리 시스템은, 각각이, 복수의 페이지를 포함하는 제1 영역과 제2 영역을 포함하는 복수의 메모리 칩, 및 복수의 메모리 칩에 커플링되는 컨트롤러를 포함하되, 각 페이지는 복수의 ECC 청크(chunk)를 포함하고, 컨트롤러는, 서로 다른 메모리 칩에 배치된 ECC 청크들을 포함하는 제1 서브 스트라이프를 리드하고, 제1 서브 스트라이프 중 유효(valid) 서브 페이지에 저장된 데이터를, 제1 영역과 다른 제2 영역에 라이트하고, 제2 영역에 저장된 데이터를 이용하여 RAID 패리티를 생성하여, 제2 서브 스트라이프를 형성한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 일 실시예에 따른 비휘발성 메모리 시스템의 블록도이다.
도 2는 도 1의 비휘발성 메모리 장치에 대한 개념 블록도이다.
도 3은 도 2의 서브 페이지에 대한 상세 블록도이다.
도 4는 본 발명의 일 실시예에 따른 비휘발성 메모리 장치의 컨트롤 방법의 순서도이다.
도 5 및 도 6은 본 발명의 일 실시예에 따른 비휘발성 메모리 장치의 컨트롤 방법을 설명하기 위한 도면들이다.
도 7은 본 발명의 다른 실시예에 따른 비휘발성 메모리 장치의 컨트롤 방법의 순서도이다.
도 8은 본 발명의 또 다른 실시예에 따른 비휘발성 메모리 장치의 컨트롤 방법의 순서도이다.
도 9는 본 발명의 일 실시예에 따른 컴퓨팅 시스템의 블록도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 도면에서 표시된 구성요소의 크기 및 상대적인 크기는 설명의 명료성을 위해 과장된 것일 수 있다.
하나의 소자(elements)가 다른 소자와 "접속된(connected to)" 또는 "커플링된(coupled to)" 이라고 지칭되는 것은, 다른 소자와 직접 연결 또는 커플링된 경우 또는 중간에 다른 소자를 개재한 경우를 모두 포함한다. 반면, 하나의 소자가 다른 소자와 "직접 접속된(directly connected to)" 또는 "직접 커플링된(directly coupled to)"으로 지칭되는 것은 중간에 다른 소자를 개재하지 않은 것을 나타낸다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다. "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소 외에 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다.
비록 제1, 제2 등이 다양한 소자나 구성요소들을 서술하기 위해서 사용되나, 이들 소자나 구성요소들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 소자나 구성요소를 다른 소자나 구성요소와 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 소자나 구성요소는 본 발명의 기술적 사상 내에서 제2 소자나 구성요소 일 수도 있음은 물론이다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
도 1은 본 발명의 일 실시예에 따른 비휘발성 메모리 시스템의 블록도이다.
도 1을 참조하면, 비휘발성 메모리 시스템은 비휘발성 메모리 장치(100) 및 컨트롤러(200)를 포함한다.
비휘발성 메모리 장치(100)는 예를 들어, 복수의 비휘발성 메모리 칩들을 포함할 수 있다. 그리고 이러한 복수의 비휘발성 메모리 칩들은 예를 들어, 제1 내지 제k 채널들(CH1~CHk)을 통해 컨트롤러(200)와 통신할 수 있다.
컨트롤러(200)는 호스트(HOST) 및 비휘발성 메모리 장치(100)에 커플링될 수 있다. 호스트(HOST)로부터의 요청에 응답하여, 컨트롤러(200)는 비휘발성 메모리 장치(100)를 액세스하도록 구성될 수 있다. 예를 들어, 컨트롤러(200)는 비휘발성 메모리 장치(100)의 리드, 라이트, 이레이즈, 및 배경(background) 동작을 제어하도록 구성될 수 있다.
컨트롤러(200)는 비휘발성 메모리 장치(100) 및 호스트(HOST) 사이에서 인터페이스를 제공하도록 구성될 수 있다. 또한, 컨트롤러(200)는 비휘발성 메모리 장치(100)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구성될 수 있다.
예시적으로, 컨트롤러(200)는 램(RAM, Random Access Memory), 프로세싱 유닛(processing unit), 호스트 인터페이스(host interface), 그리고 메모리 인터페이스(memory interface)와 같은 잘 알려진 구성 요소들을 더 포함할 수 있다. 여기서, 램(RAM)은 프로세싱 유닛의 동작 메모리, 비휘발성 메모리 장치(100) 및 호스트(HOST) 사이의 캐시 메모리, 그리고 비휘발성 메모리 장치(100) 및 호스트(HOST) 사이의 버퍼 메모리 중 적어도 하나로서 이용될 수 있고, 프로세싱 유닛은 컨트롤러(200)의 제반 동작을 제어할 수 있다.
본 실시예에서, 비휘발성 메모리 시스템은 오류 정정 블록(미도시)을 포함할 수 있다. 이러한 오류 정정 블록(미도시)은 오류 정정 코드(ECC)를 이용하여 비휘발성 메모리 장치(100)로부터 리드된 데이터의 오류를 검출하고, 정정하도록 구성될 수 있다. 이러한 오류 정정 블록(미도시)은 예를 들어, 컨트롤러(200)의 한 구성 요소로서 제공될 수 있다.
한편 본 실시예에 따른 컨트롤러(200)는, 비휘발성 메모리 장치(100)에 대해 RAID 리커버리(recovery)를 수행할 수 있다. 구체적으로, 컨트롤러(200)는 비휘발성 메모리 장치(100)에 대해 서브 스트라이프(sub strip) 단위로 RAID 리커버리를 수행할 수 있다. 더욱 구체적으로, 컨트롤러(200)는 비휘발성 메모리 장치(100)에 대해 서브 스트라이프 단위로 외부 RAID 리커버리(external RAID recovery)를 수행할 수 있다.
종합하면, 본 실시예에 따른 메모리 시스템에는 외부 RAID 리커버리 기술과 ECC(Error Correction Code) 기술이 채택될 수 있다. 하지만, 본 발명이 이에 제한되는 것은 아니며, 본 발명의 다른 몇몇 실시예에 따른 메모리 시스템에는 내부 RAID 리커버리(internal RAID recovery) 기술과 ECC(Error Correction Code) 기술이 채택될 수도 있다. 여기서, 외부 RAID 기술은 다수의 독립적인 반도체 칩 중 어느 하나에 RAID 페리티(RAID parity) 데이터를 저정하여 데이터를 리커버리하는 기술을 의미하고, 내부 RAID 기술은 하나의 반도체 칩 내에 RAID 페리티(RAID parity) 데이터를 저정하여 데이터를 리커버리하는 기술을 의미할 수 있다.
또한, 이하에서 설명될 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)일 수도 있다.
본 발명의 실시예들에 따른 컨트롤러(200)의 상세 동작에 대해서는 후술하도록 한다.
호스트 인터페이스는 호스트(HOST) 및 컨트롤러(200) 사이의 데이터 교환을 수행하기 위한 프로토콜을 포함할 수 있다. 예시적으로, 컨트롤러(200)는 USB (Universal Serial Bus) 프로토콜, MMC (multimedia card) 프로토콜, PCI (peripheral component interconnection) 프로토콜, PCI-E (PCI-express) 프로토콜, ATA (Advanced Technology Attachment) 프로토콜, Serial-ATA 프로토콜, Parallel-ATA 프로토콜, SCSI (small computer small interface) 프로토콜, ESDI (enhanced small disk interface) 프로토콜, 그리고 IDE (Integrated Drive Electronics) 프로토콜 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 호스트(HOST)와 통신하도록 구성될 수 있다.
본 실시예에서, 컨트롤러(200) 및 비휘발성 메모리 장치(100)는 하나의 반도체 장치로 집적될 수 있다. 예시적으로, 컨트롤러(200) 및 비휘발성 메모리 장치(100)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들면, 컨트롤러(200) 및 비휘발성 메모리 장치(100)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
한편, 컨트롤러(200) 및 비휘발성 메모리 장치(100)는 하나의 반도체 장치로 집적되어 반도체 드라이브(SSD, Solid State Drive)를 구성할 수 있다. 컨트롤러(200)와 비휘발성 메모리 장치(100)가 하나의 반도체 장치로 집적되어 반도체 드라이브(SSD)로 이용되는 경우, 비휘발성 메모리 시스템에 연결된 호스트(HOST)의 동작 속도는 획기적으로 개선될 수 있다.
다른 예로서, 비휘발성 메모리 시스템은 컴퓨터, 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 장치, 또는 컴퓨팅 시스템을 구성하는 다양한 구성 요소들 중 하나 등과 같은 전자 장치의 다양한 구성 요소들 중 하나로 제공될 수 있다.
예시적으로, 비휘발성 메모리 장치(100) 또는 비휘발성 메모리 시스템은 다양한 형태들의 패키지화 될 수 있다. 예를 들어, 비휘발성 메모리 장치(100) 또는 비휘발성 메모리 시스템은 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는 도 1의 비휘발성 메모리 장치에 대한 개념 블록도이다. 도 3은 도 2의 서브 페이지에 대한 상세 블록도이다.
먼저 도 2를 참조하면, 비휘발성 메모리 장치(100)는 복수의 메모리 칩(CHIP 0 ~ CHIP N)을 포함할 수 있다. 그리고, 각 메모리 칩은 제1 영역(I)과 제2 영역(II)을 포함할 수 있는데, 각 메모리 칩의 제1 영역(I)에는 데이터가 저장된 복수의 페이지(PAGE)가 배치될 수 있고, 제2 영역(II)에는 데이터가 저장되지 않은 복수의 페이지(미도시)가 배치될 수 있다.
본 실시예에서, 하나의 페이지는 복수의 서브 페이지(SUG PAGE)를 포함할 수 있다. 도 2에서는, 비록 설명의 편의상 하나의 페이지가 2개의 서브 페이지로 구성된 것이 도시되어 있으나, 본 발명이 도시된 것에 제한되는 것은 아니다. 본 발명의 다른 몇몇 실시예들에서, 하나의 페이지에 포함되는 서브 페이지의 개수는 이보다 더 증가될 수 있다.
서로 다른 메모리 칩에 배치되는 서브 페이지들은 하나의 서브 스트라이프(SUB STRIPE)를 구성할 수 있다. 예를 들어, 도 2에서는 각 메모리 칩의 최상단에 배치된 서브 페이지들(SUB PAGE 0)이 하나의 서브 스트라이프(SUB STRIPE 0)를 구성하는 것이 도시되어 있다. 하지만, 도시된 것은 하나의 예시에 불과하며, 하나의 서브 스트라이프(SUB STRIPE 0)에 포함되는 서브 페이지(SUB PAGE)의 배치는 얼마든지 변형될 수 있다. 즉, 예를 들어, 첫번째 메모리 칩(CHIP0)의 두번째 서브 페이지(SUB PAGE 0)와 나머지 메모리 칩들(CHIP 1 ~ CHIP N)의 첫번째 서브 페이지(SUB PAGE 1)들이 하나의 서브 스트라이프(SUB STRIPE 0)를 구성할 수도 있다.
한편, 서로 다른 메모리 칩에 배치되는 페이지(PAGE)들은 하나의 스트라이프(STRIPE)를 구성할 수 있다. 예를 들어, 도 2에서 각 메모리 칩의 최상단에 배치된 페이지들(PAGE 0)은 하나의 스트라이프(STRIPE 0)를 구성할 수 있다. 하지만, 역시 도 2에 도시된 것은 하나의 예시에 불과하며, 하나의 스트라이프(STRIPE 0)에 포함되는 페이지(PAGE)의 배치는 얼마든지 변형될 수 있다.
본 실시예에서, 마지막 메모리 칩(CHIP N)에는 RAID 패리티(RAID parity)가 저장될 수 있다. 구체적으로, 마지막 메모리 칩(CHIP N)의 각 서브 페이지들은 대응 하는 서브 페이지에 대한 RAID 패리티를 저장할 수 있다. 더욱 구체적으로, 마지막 메모리 칩(CHIP N)의 각 서브 페이지들은 대응 하는 서브 페이지들의 데이터를 XOR 연산한 RAID 패리티를 저장할 수 있다.
이러한 RAID 패리티는 서브 스트라이프 단위로 RAID 리커버리를 수행하는데 사용될 수 있다. 이하에서는 설명의 편의상 마지막 메모리 칩(CHIP N)에 RAID 패리티가 저장된 것을 가정하여 설명할 것이나, 본 발명이 이에 제한되는 것은 아니다. 각 서브 스트라이프 별로 RAID 패리티가 저장되는 위치는 서로 달라질 수 있다. 예를 들어 제1 서브 스트라이프(SUB STRIPE 0)의 RAID 패리티는 마지막 메모리 칩(CHIP N)에 저장되나, 제2 서브 스트라이프(SUB STRIPE 1)의 RAID 패리티는 첫번째 메모리 칩(CHIP 0)에 저장될 수 있다. 즉, 후술할 설명에서 전제된 가정이 본 발명의 권리 범위를 제한하는 것은 아니다.
다음 도 3을 참조하면, 하나의 서브 페이지는 데이터 영역(10)과, 스페어 영역(20)과, ECC 패리티 영역(30)을 포함한다.
먼저, 데이터 영역(10)에는 호스트(도 1의 HOST) 등에 의해 서브 페이지에 저장될 데이터가 저장될 수 있다. 그리고, 스페어 영역(20)에는 후술할 리커버리 실패 플래그(recovery fail flag)가 저장될 수 있다. 마지막으로, ECC 패리티 영역(30)에는 데이터 영역(10)에 저장된 데이터에 대해 ECC 패리티가 생성되어 저장될 수 있다. 이렇게 ECC 패리티 영역(30)에 저장된 ECC 패리티는 데이터 영역(10)에 저장된 데이터에 오류가 발생하였을 때, 이를 리커버리하는데 이용될 수 있다. 구체적으로, 비휘발성 메모리 시스템(도 1)에 포함된 오류 정정 블록(미도시)은, 데이터 영역(10)에 저장된 데이터에 오류가 발생하였을 경우, ECC 패리티 영역(30)에 저장된 ECC 패리티를 이용하여 데이터 오류 리커버리를 먼저 시도할 수 있다.
이처럼 본 실시예에 따른 하나의 서브 페이지는, ECC 패리티로 오류 복구가 가능한 데이터 단위 중 최소 단위인 ECC 청크(chunk)일 수 있다. 그러나, 본 발명이 이에 제한되는 것은 아니며, 필요에 따라 서브 페이지의 단위는 이보다 더 확장될 수도 있다.
이하, 도 1 및 도 4 내지 도 6을 참조하여, 본 발명의 일 실시예에 따른 비휘발성 메모리 장치의 컨트롤 방법에 대해서 설명한다.
도 4는 본 발명의 일 실시예에 따른 비휘발성 메모리 장치의 컨트롤 방법의 순서도이다. 도 5 및 도 6은 본 발명의 일 실시예에 따른 비휘발성 메모리 장치의 컨트롤 방법을 설명하기 위한 도면들이다.
도 4를 참조하면, 서브 페이지를 선택한다(S100). 구체적으로, 컨트롤러(200)는 비휘발성 메모리 장치(100)에 포함된 복수의 메모리 칩 중에서 호스트(HOST)가 요청한 데이터를 포함하는 서브 페이지를 선택할 수 있다.
다음, 선택된 서브 페이지의 데이터에 오류가 있는지 판단한다(S110). 구체적으로, 컨트롤러(200)는 선택된 서브 페이지의 데이터 영역(도 3의 10)에 저장된 데이터에 오류가 있는 판단할 수 있다. 판단 결과, 오류가 없다면 컨트롤러(200)는 선택된 서브 페이지에 저장된 데이터를 호스트(HOST)에 제공할 수 있다. 하지만, 반대로 데이터에 오류가 있다면, 컨트롤러(200)의 오류 정정 블록(미도시)은 ECC 패리티 영역(도 3의 30)에 저장된 ECC 패리티를 이용하여 데이터 오류 리커버리를 수행할 수 있다.
수행 결과, 오류가 리커버리되었다면 컨트롤러(200)는 리커버리된 데이터를 호스트(HOST)에 제공할 수 있다. 하지만, 만약 이러한 시도에도 불구하고 데이터를 리커버리할 수 없다면 컨트롤러(200)는 후술할 RAID 리커버리를 수행할 수 있다.
다시 도 4를 참조하면, RAID 리커버리 수행을 위해 오류가 발생한 서브 페이지가 포함된 서브 스트라이프를 리드한다(S120).
구체적으로, 도 5에 도시된 비휘발성 메모리 장치(100)에서 두 번째 메모리 칩(CHIP 1)의 첫번째 서브 페이지(SUB PAGE 0)에서 오류가 발생되었다고 가정하자. 이 경우, 컨트롤러(200)는 오류가 발생된 서브 페이지(SUB PAGE 0)가 포함된 서브 스트라이프(SUB STRIPE 0)를 리드할 수 있다.
다음, 리드한 서브 스트라이프 내에 오류가 발생된 서브 페이지의 개수가 1 이하인지 아니면 2 이상인지 판단한다(S130). 만약, 그 결과가 1 이하라면 리드한 서브 스트라이프에 대해 RAID 리커버리를 수행한다(S140). 그리고, 그 결과가 2 이상이라면 오류가 발생된 서브 페이지에 리커버리 실패 플래그를 셋(set)한다(S150).
도 5의 예에서, 오류가 발생된 서브 페이지(SUB PAGE 0)가 포함된 서브 스트라이프(SUB STRIPE 0)에 포함된 오류 서브 페이지의 개수는 1이다. 따라서, 컨트롤러(200)는 마지막 메모리 칩(CHIP N)에 저장된 RAID 패리티를 이용하여 오류 서브 페이지(SUB PAGE 0)의 데이터를 리커버리한다. 본 실시예에서, 컨트롤러(200)는 이와 같이 서브 스트라이프(즉, 서브 페이지 또는 ECC 청크) 단위로 RAID 리커버리를 수행할 수 있다.
다음, 리드한 서브 스트라이프 내에 유효(valid) 서브 페이지에 저장된 데이터를 이동시킨다(S160).
이에 대한 구체적인 설명에 앞서, 먼저 유효(valid) 서브 페이지와 무효(invalid) 서브 페이지의 개념에 대해 도 6을 참조하여 설명하도록 한다.
예를 들어, 호스트로부터 논리 페이지 번호 0, 1, 2, 0, 1에 대응하는 데이터가 순차적으로 메모리 장치(PAGE BLOCK)에 입력된다고 가정하면, 메모리 장치(PAGE BLOCK)의 각 서브 페이지(SUB PAGE)에는 도 6과 같이 데이터가 저장된다. 즉, 논리 페이지 번호 0에 대응하는 데이터는 첫번째 서브 페이지에 먼저 저장되나 나중에 입력된 동일한 데이터에 의해 갱신되고, 네번째 서브 페이지에 새로 저장되게 된다. 논리 페이지 번호 1에 대응하는 데이터 역시, 두번째 서브 페이지에 먼저 저장되나 나중에 입력된 동일한 데이터에 의해 갱신되고, 다섯번째 서브 페이지에 새로 저장되게 된다. 논리 페이지 번호 2에 대응하는 데이터는 갱신 없이 세번째 서브 페이지에 저장된다.
여기서, 첫번째 서브 페이지와 두번째 서브 페이지는, 그에 포함된 데이터가 갱신되었으므로, 가비지 컬렉션 등에 의해 서브 페이지가 초기화될 때까지 더 이상 사용되지 않는 서브 페이지일 수 있고, 세번째 내지 다섯번째 서브 페이지들은 그에 포함된 데이터가 향후 사용될 수 있는 서브 페이지들일 수 있다.
본 명세서에서는, 도 6의 첫번째 서브 페이지와 두번째 서브 페이지 같이 가비지 컬렉션 등에 의해 서브 페이지가 초기화될 때까지 그에 포함된 데이터가 더 이상 사용되지 않는 서브 페이지를 무효(invalid) 서브 페이지라 정의하고, 도 5의 세번째 내지 다섯번째 서브 페이지들과 같이 그에 포함된 데이터가 향후 사용될 수 있는 서브 페이지들을 유효(valid) 서브 페이지라 정의한다.
도 5의 예에서, 리드한 서브 스트라이프(SUB STRIPTE0) 내에 유효 서브 페이지는 첫번째 메모리 칩(CHIP 0)의 첫번째 서브 페이지(SUB PAGE0)와 두번째 메모리 칩(CHIP 1)의 첫번째 서브 페이지(SUB PAGE0)이다. 따라서, 컨트롤러(200)는 각 메모리 칩의 제1 영역(I)에 저장된 이러한 유효 서브 페이지들을 제2 영역(II)으로 이동시킨다. 즉, 메모리 칩의 제2 영역(II)에 유효 서브 페이지들이 포함하는 데이터를 라이트한다.
이 때, 두번째 메모리 칩(CHIP 1)의 첫번째 서브 페이지(SUB PAGE0)에 대해서는, RAID 리커버리를 수행하여 복구된 데이터를 제2 영역(II)에 라이트한다. 다시 말해, 두번째 메모리 칩(CHIP 1)의 제2 영역(II)에 저장되는 서브 페이지는 오류가 복구된 서브페이지일 수 있다.
이처럼, 본 실시예에서, 리드된 서브 스트라이프 내의 유효 서브 페이지에 저장된 데이터를 메모리 칩의 다른 영역으로 이동시키는 것은, 추후 동일한 오류가 재발되는 것을 방지하기 위함이다. 일반적으로 특정 서브 페이지에서 발생한 데이터 오류는, 해당 메모리 칩에 포함되고 상기 서브 페이지의 데이터를 저장하는 특정 메모리 셀이 열화되거나 다른 메모리 셀로부터 간섭을 받아 발생될 수 있다. 따라서, 오류를 정정한 서브 페이지의 데이터를 이처럼 열화되거나 다른 메모리 셀로부터 간섭을 받는 메모리 셀에 그대로 저장하게되면 추후 다시 오류가 발생할 가능성이 크기 때문에, 본 실시예에서는 RAID 리커버리를 수행한 후, 그 중 유효 서브 페이지의 데이터만을 메모리 칩의 다른 영역에 라이트하게 된다.
다시 도 4를 참조하면, 리드된 서브 스트라이프가 포함된 스트라이프에 대해 리커버리가 완료되었는지 판단한다(S170). 그 결과, 리커버리가 완료되지 않았다면, 앞서 설명한 과정(S120~S160)을 반복한다.
도 5의 예에서, 하나의 스트라이프(STRIPE)는 두 개의 서브 스트라이프(SUB STRIPE 0, 1)을 포함한다. 따라서, 아직, 스트라이프에 대한 리커버리가 완료되지 않은 상태이다. 따라서, 컨트롤러(200)는 두번째 서브 스트라이프(SUB STRIPE 1)를 리드한다.
두번째 서브 스트라이프(SUB STRIPE 1)는 첫번째 서브 스트라이프(SUB STRIPE 0)와 달리, 오류 서브 페이지의 개수가 2개(두번째 메모리 칩(CHIP 1)의 두번째 서브 페이지(SUB PAGE 1) 및 세번째 메모리 칩(CHIP 2)의 두번째 서브 페이지(SUB PAGE 1))이다. 이러한 두번째 서브 스트라이프(SUB STRIPE 1)에 대해서는 RAID 리커버리 수행이 불가능하다. 따라서, 컨트롤러(200)는 두번째 서브 스트라이프(SUB STRIPE 1)에 대해 RAID 리커버리를 수행하지 않고, 오류 서브 페이지의 스페어 영역(도 3의 20)에 리커버리 실패 플래그를 셋(set)한다.
다음, 두번째 서브 스트라이프(SUB STRIPE 1)에 포함된 유효 서브 페이지는 두번째 메모리 칩(CHIP 1)의 두번째 서브 페이지(SUB PAGE 1)이다. 따라서, 컨트롤러(200)는 메모리 칩의 제2 영역(II)에 상기 서브 페이지가 포함하는 데이터를 라이트한다.
이 때, 제2 영역(II)에 라이트되는 데이터는 RAID 리커버리가 수행되지 않은 오류를 포함한 데이터이다. 즉, 세번째 메모리 칩(CHIP 2)의 제2 영역(II)에 저장되는 서브 페이지는 오류 서브 페이지일 수 있다. 하지만, 이 서브 페이지의 스패어 영역(도 3의 20)에는 리커버리 실패 플래그가 셋되어 있다. 따라서, 컨트롤러(200)는 이 페이지의 데이터가 오류를 갖고 있음을 미리알 수 있다. 이러한 서브 페이지를 선택하게 되면, 컨트롤러(200)는 호스트(HOST)에 예를 들어, 오류 메시지를 제공할 수 있다.
이렇게 서브 페이지 이동에 의해 신규 서브 스트라이프(NEW SUB STRIPE)가 구성되면, 마지막 메모리 칩(CHIP N)의 제2 영역(II)에 배치된 서브 페이지는 신규 서브 스트라이프(NEW SUB STRIPE)의 RAID 패리티를 저장할 수 있다.
이처럼 본 실시예에 따른, 비휘발성 메모리 장치의 제어 방법에서는, 서브 페이지로 이루어진 서브 스트라이프를 대상으로 RAID 리커버리를 수행한다. 따라서, 둘 이상의 페이지에서 데이터 오류가 발생하더라도 데이터를 복구할 수 있게 된다.
예를 들어, 도 5의 예에서, 도시된 것과 달리 두번째 메모리 칩(CHIP 1)의 첫번째 서브 페이지(SUB PAGE 0)와, 세번째 메모리 칩(CHIP 2)의 두번째 서브 페이지(SUB PAGE 1)에만 오류가 존재한다고 가정하자. 이 경우, 스트라이프를 대상으로 RAID 리커버리를 수행하면, 두번째 메모리 칩(CHIP 1)과 세번째 메모리 칩(CHIP 2)에 포함된 페이지에 오류가 있어 RAID 리커버리가 불가능하다. 하지만, 본 실시예와 같이 서브 스트라이프를 대상으로 RAID 리커버리를 수행하게 되면, 첫번째 서브 스트라이프(SUB STRIPE 0)와 두번째 서브 스트라이프(SUB STRIPE 1)에 대해 모두 RAID 리커버리 수행이 가능하다.
또한, 본 실시예에서는 RAID 리커버리가 수행된 서브 스트라이프 내의 유효 서브 페이지에 저장된 데이터를 메모리 칩의 다른 영역으로 이동시킨다. 따라서, 앞서 설명한 것과 같이 동일한 데이터 오류가 재발될 가능성이 낮아지게 된다.
다음 도 7을 참조하여, 본 발명의 다른 실시예에 따른 비휘발성 메모리 장치의 컨트롤 방법에 대해 설명한다.
도 7은 본 발명의 다른 실시예에 따른 비휘발성 메모리 장치의 컨트롤 방법의 순서도이다. 이하에서는, 앞서 설명한 실시예와 중복된 사항에 대해서는 자세한 설명을 생략하고, 그 차이점을 위주로 설명하도록 한다.
도 7을 참조하면, 본 발명의 다른 실시예에 따른 비휘발성 메모리 장치의 컨트롤 방법에서는, 오류가 발생한 서브 페이지가 포함된 서브 스트라이프를 리드할 때, 스트라이프에 포함된 모든 서브 스트라이프를 한번에 리드한다(S220).
도 5의 예에서, 앞서 설명한 실시예에서는 컨트롤러(200)가 첫번째 서브 스트라이프(SUB STRIPE 0)를 먼저 리드하고, 이에 대해 RAID 리커버리 및 데이터 이동을 수행한 후, 두번째 서브 스트라이프(SUB STRIPE 1)를 리드하였다. 하지만, 본 실시예에서는 컨트롤러(200)가 첫번째 서브 스트라이프(SUB STRIPE 0) 및 두번째 서브 스트라이프(SUB STRIPE 1) 모두를 먼저 리드하고(S220), 각 서브 스트라이프에 대해 순차적으로 RAID 리커버리 및 데이터 이동을 수행(S230)하는 점이 차이점이다.
컨트롤러(200)가 비휘발성 메모리 장치(100)에 저장된 데이터를 리드할 때 페이지 단위로 리드하는 환경에서는, 본 발명의 이러한 실시예가 동작 시간을 더 단축시킬 수 있는 장점이 있다.
다음 도 8을 참조하여, 본 발명의 또 다른 실시예에 따른 비휘발성 메모리 장치의 컨트롤 방법에 대해 설명한다.
도 8은 본 발명의 또 다른 실시예에 따른 비휘발성 메모리 장치의 컨트롤 방법의 순서도이다. 이하에서도, 앞서 설명한 실시예들과 중복된 사항에 대해서는 자세한 설명을 생략하고, 그 차이점을 위주로 설명하도록 한다.
도 8을 참조하면, 본 실시예에서는, 리드된 서브 스트라이프가 포함된 스트라이프에 대해 리커버리가 완료된 후(S380), 연관된 스트라이프에 대해서도 리커버리가 수행되었는지 판단하는 단계(S390)를 더 포함한다.
여기서, 연관된 스트라이프란 하나의 물리적 메모리 셀과 연관된 스트라이프들을 의미할 수 있다. 구체적으로, 하나의 물리적 메모리 셀에 저장된 데이터를 공유하는 페이지들을 포함하는 스트라이프들은 서로 연관된 관계에 있을 수 있다.
예를 들어, 도 2에서, 첫번째 메모리 칩(CHIP 0)의 첫번째 페이지(PAGE 0) 내지 세번째 페이지(PAGE 2)가 하나의 물리적 메모리 셀에 저장된 데이터를 공유하는 페이지들이라고 가정하자. 이러한 경우의 예로써, 하나의 물리적 메모리 셀에 3비트 데이터가 저장되고, 첫번째 페이지(PAGE 0)에는 그 중 LSB 비트 데이터가 저장되고, 두번째 페이지(PAGE 1)에는 그 중 CSB 비트 데이터가 저장되며, 세번째 페이지(PAGE 2)에는 그 중 MSB 비트 데이터가 저장되는 경우를 들 수 있다.
이렇게, 하나의 물리적 메모리 셀에 저장된 데이터를 공유하는 페이지들의 경우 RAID 리커버리를 같이 수행하는 것이 장치 신뢰성 향상에 도움이 될 수 있다. 따라서, 본 실시예에서는, 앞서 설명한 실시예들과 달리 이처럼 연관된 스트라이프들 모두에 대해 RAID 리커버리를 수행하게 되며, 특히, 동일 블록 내 배치된 연관된 스트라프들 모두에 대해 RAID 리커버리를 수행할 수 있다.
다음 도 9를 참조하여, 본 발명의 일 실시예에 따른 컴퓨팅 시스템에 대해 설명한다.
도 9는 본 발명의 일 실시예에 따른 컴퓨팅 시스템의 블록도이다.
도 9를 참조하면, 컴퓨팅 시스템(3000)은 중앙 처리 장치(3100), 램(3200, RAM, Random Access Memory), 사용자 인터페이스(3300), 전원(3400), 그리고 메모리 시스템(2000)을 포함할 수 있다.
여기서, 메모리 시스템(2000)은 앞서 설명한 실시예들에 따라 컨트롤러(2200)가 비휘발성 메모리 장치(2100)를 컨트롤하는 시스템일 수 있다. 이러한 메모리 시스템(2000)은 시스템 버스(3500)를 통해, 중앙처리장치(3100), 램(3200), 사용자 인터페이스(3300), 그리고 전원(3400)에 전기적으로 연결될 수 있다. 그리고, 사용자 인터페이스(3300)를 통해 제공되거나, 중앙 처리 장치(3100)에 의해서 처리된 데이터는 메모리 시스템(2000)에 저장될 수 있다.
비록 도 9에서는, 비휘발성 메모리 장치(2100)가 컨트롤러(2200)를 통해 시스템 버스(3500)에 연결되는 것으로 도시되어 있으나, 본 발명의 몇몇 실시예에 따른 컴퓨팅 시스템에서, 비휘발성 메모리 장치(2100)는 시스템 버스(3500)에 직접 연결되도록 구성될 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
10: 데이터 영역 20: 스페어 영역
30: ECC 패리티 영역 100: 비휘발성 메모리 장치
200: 컨트롤러
S100~S170, S200~S280, S300~S390: 비휘발성 메모리 장치의 컨트롤 방법

Claims (10)

  1. 데이터 오류 리커버리(recovery) 동작을 통해 데이터를 리커버리할 수 없는 경우의 비휘발성 메모리 장치의 제어 방법으로서,
    제1 메모리 영역내의, 오류가 있는 서브 페이지(sub page)가 포함된 제1 서브 스트라이프(sub stripe)를 포함하는 스트라이프(stripe)의 모든 서브 스트라이프를 동시에 리드하되, 상기 스트라이프는 상기 제1 메모리 영역에서 복수의 페이지를 포함하고, 상기 스트라이프 내의 각각의 페이지는 두개 이상의 서브 페이지를 포함하고,
    상기 제1 서브 스트라이프의 오류가 있는 서브 페이지들의 개수가 1개 이하인지 여부를 결정하고,
    상기 제1 서브 스트라이프의 오류가 있는 서브 페이지들의 개수가 1개 이하인 경우, 상기 제1 서브 스트라이프에 RAID 리커버리를 수행하고,
    상기 제1 서브 스트라이프의 유효 서브 페이지에 있는 데이터를 이동시키는 것을 포함하는 비휘발성 메모리 장치의 제어 방법.
  2. 제 1항에 있어서,
    상기 제1 서브 스트라이프에 RAID 리커버리를 수행하는 것은, RAID 패리티 데이터를 이용하여 상기 오류가 있는 서브 페이지의 데이터를 리커버리하는 것을 포함하는 비휘발성 메모리 장치의 제어 방법.
  3. 제 2항에 있어서,
    상기 오류가 있는 서브 페이지의 데이터를 리커버리하는 것은, 제2 영역으로 리커버리 된 유효 데이터를 라이트하는 것을 더 포함하는 비휘발성 메모리 장치의 제어 방법.
  4. 제 1항에 있어서,
    상기 제1 서브 스트라이프의 오류가 있는 서브 페이지의 개수가 2개 이상인 경우, 상기 오류가 있는 서브 페이지의 스페어 영역에 리커버리 실패 플래그를 셋(set)하는 것을 더 포함하는 비휘발성 메모리 장치의 제어 방법.
  5. 제 1항에 있어서,
    상기 제1 서브 스트라이프의 유효 서브 페이지에 있는 데이터를 이동시킨 후, 상기 스트라이프의, 제1 서브 스트라이프와 다른 제2 서브 스트라이프를 선택하고,
    상기 제2 서브 스트라이프의 오류가 있는 서브 페이지의 개수가 1개 이하인지 여부를 결정하고,
    상기 제2 서브 스트라이프의 오류가 있는 서브 페이지의 개수가 1개 이하인 경우, 상기 제2 서브 스트라이프에 RAID 리커버리를 수행하고,
    상기 제2 서브 스트라이프의 유효 서브 페이지에 있는 데이터를 이동시키는 것을 더 포함하는 비휘발성 메모리 장치의 제어 방법.
  6. 제 1항에 있어서,
    상기 비휘발성 메모리 장치는 다수의 메모리 칩을 포함하고,
    상기 복수의 서브 페이지는 각각 서로 다른 상기 메모리 칩에 배치되는 비휘발성 메모리 장치의 제어 방법.
  7. 각각이, 복수의 페이지를 포함하는 제1 영역과 제2 영역을 포함하는 복수의 메모리 칩; 및
    상기 복수의 메모리 칩에 커플링되는 컨트롤러를 포함하되,
    상기 각 페이지는 복수의 ECC 청크(chunk)를 포함하고,
    상기 컨트롤러가 데이터 오류 리커버리(recovery) 동작을 통해 데이터를 리커버리할 수 없는 경우,
    상기 컨트롤러는 제1 메모리 영역내의, 오류가 있는 서브 페이지(sub page)가 포함된 제1 서브 스트라이프(sub stripe)를 포함하는 스트라이프(stripe)의 모든 서브 스트라이프를 동시에 리드하되, 상기 스트라이프는 상기 제1 메모리 영역에서 복수의 페이지를 포함하고, 상기 스트라이프 내의 각각의 페이지는 두개 이상의 서브 페이지를 포함하고,
    상기 제1 서브 스트라이프의 오류가 있는 서브 페이지들의 개수가 1개 이하인지 여부를 결정하고,
    상기 제1 서브 스트라이프의 오류가 있는 서브 페이지들의 개수가 1개 이하인 경우, 상기 제1 서브 스트라이프에 RAID 리커버리를 수행하고,
    상기 제1 서브 스트라이프의 유효 서브 페이지에 있는 데이터를 이동시키는 비휘발성 메모리 시스템.
  8. 제 7항에 있어서,
    상기 각 ECC 청크는 데이터 영역과, 스페어 영역과, ECC 패리티 영역을 포함하는 비휘발성 메모리 시스템.
  9. 제 8항에 있어서,
    상기 컨트롤러가 상기 제1 서브 스트라이프에 RAID 리커버리를 수행하는 것은, RAID 패리티 데이터를 이용하여 상기 오류가 있는 서브 페이지의 데이터를 리커버리하는 것을 포함하는 비휘발성 메모리 시스템.
  10. 제 9항에 있어서,
    상기 컨트롤러가 상기 오류가 있는 서브 페이지의 데이터를 리커버리하는 것은 제2 영역으로 리커버리 된 유효 데이터를 라이트하는 것을 더 포함하고, 상기 제1 서브 스트라이프가 2개 이상의 오류 ECC 청크를 포함하면 상기 오류 ECC 청크의 상기 스페어 영역에 리커버리 실패 플래그를 셋(set)하는 비휘발성 메모리 시스템.
KR1020120019748A 2012-02-27 2012-02-27 비휘발성 메모리 장치의 제어 방법 및 비휘발성 메모리 시스템 KR101826051B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120019748A KR101826051B1 (ko) 2012-02-27 2012-02-27 비휘발성 메모리 장치의 제어 방법 및 비휘발성 메모리 시스템
US13/613,906 US9195541B2 (en) 2012-02-27 2012-09-13 Controlling nonvolatile memory device and nonvolatile memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120019748A KR101826051B1 (ko) 2012-02-27 2012-02-27 비휘발성 메모리 장치의 제어 방법 및 비휘발성 메모리 시스템

Publications (2)

Publication Number Publication Date
KR20130097995A KR20130097995A (ko) 2013-09-04
KR101826051B1 true KR101826051B1 (ko) 2018-02-07

Family

ID=49004634

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120019748A KR101826051B1 (ko) 2012-02-27 2012-02-27 비휘발성 메모리 장치의 제어 방법 및 비휘발성 메모리 시스템

Country Status (2)

Country Link
US (1) US9195541B2 (ko)
KR (1) KR101826051B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11508454B2 (en) 2020-04-16 2022-11-22 SK Hynix Inc. Data storage device and method of operating the same

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9524113B2 (en) * 2013-05-24 2016-12-20 Seagate Technology Llc Variable redundancy in a solid state drive
TWI603194B (zh) * 2013-12-04 2017-10-21 慧榮科技股份有限公司 資料儲存裝置以及其資料存取方法
US9606870B1 (en) 2014-03-31 2017-03-28 EMC IP Holding Company LLC Data reduction techniques in a flash-based key/value cluster storage
US10025843B1 (en) 2014-09-24 2018-07-17 EMC IP Holding Company LLC Adjusting consistency groups during asynchronous replication
US9529672B2 (en) 2014-09-25 2016-12-27 Everspin Technologies Inc. ECC word configuration for system-level ECC compatibility
KR102368071B1 (ko) * 2014-12-29 2022-02-25 삼성전자주식회사 레이드 스토리지 시스템에서의 스트라이프 재구성 방법 및 이를 적용한 가비지 컬렉션 동작 방법 및 레이드 스토리지 시스템
KR102372825B1 (ko) * 2015-07-31 2022-03-14 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10152527B1 (en) 2015-12-28 2018-12-11 EMC IP Holding Company LLC Increment resynchronization in hash-based replication
KR102549605B1 (ko) 2016-03-04 2023-06-30 삼성전자주식회사 Raid 스토리지 장치의 리커버리 방법
KR102580123B1 (ko) 2016-05-03 2023-09-20 삼성전자주식회사 Raid 스토리지 장치 및 그것의 관리 방법
KR102573301B1 (ko) * 2016-07-15 2023-08-31 삼성전자 주식회사 Raid 리커버리를 수행하는 메모리 시스템 및 그 동작방법
CN108877862B (zh) * 2017-05-10 2021-10-08 北京忆芯科技有限公司 页条带的数据组织以及向页条带写入数据的方法与装置
KR102479483B1 (ko) * 2017-10-19 2022-12-21 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법
US10691354B1 (en) 2018-01-31 2020-06-23 EMC IP Holding Company LLC Method and system of disk access pattern selection for content based storage RAID system
US10884889B2 (en) * 2018-06-22 2021-01-05 Seagate Technology Llc Allocating part of a raid stripe to repair a second raid stripe
CN109814805B (zh) * 2018-12-25 2020-08-25 华为技术有限公司 存储***中分条重组的方法及分条服务器
US11593207B2 (en) * 2021-01-20 2023-02-28 EMC IP Holding Company LLC Storage system having RAID stripe metadata
KR20220120967A (ko) * 2021-02-24 2022-08-31 삼성전자주식회사 스토리지 컨트롤러, 그 동작방법
WO2022183465A1 (en) 2021-03-05 2022-09-09 Yangtze Memory Technologies Co., Ltd. Method for redundant array of independent disks striping against programming failures and apparatus thereof

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100318844A1 (en) * 2008-02-08 2010-12-16 Fujitsu Limited Backup method and disk array apparatus
US20140089728A1 (en) 2012-09-27 2014-03-27 Bryan E. Veal Method and apparatus for synchronizing storage volumes

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3215237B2 (ja) * 1993-10-01 2001-10-02 富士通株式会社 記憶装置および記憶装置の書き込み/消去方法
US6766424B1 (en) * 1999-02-09 2004-07-20 Hewlett-Packard Development Company, L.P. Computer architecture with dynamic sub-page placement
TWI350526B (en) * 2005-11-21 2011-10-11 Infortrend Technology Inc Data access methods and storage subsystems thereof
US8751859B2 (en) * 2007-05-10 2014-06-10 International Business Machines Corporation Monitoring lost data in a storage system
KR20110050404A (ko) * 2008-05-16 2011-05-13 퓨전-아이오, 인크. 결함 있는 데이터 저장소를 검출하고 교체하는 장치, 시스템 및 프로그램 제품
JP2010015195A (ja) * 2008-06-30 2010-01-21 Toshiba Corp 記憶制御装置及び記憶制御方法
US8024496B2 (en) * 2009-04-10 2011-09-20 International Business Machines Corporation Enhanced memory migration descriptor format and method
US8307258B2 (en) * 2009-05-18 2012-11-06 Fusion-10, Inc Apparatus, system, and method for reconfiguring an array to operate with less storage elements
US8266501B2 (en) * 2009-09-29 2012-09-11 Micron Technology, Inc. Stripe based memory operation
US9577673B2 (en) * 2012-11-08 2017-02-21 Micron Technology, Inc. Error correction methods and apparatuses using first and second decoders

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100318844A1 (en) * 2008-02-08 2010-12-16 Fujitsu Limited Backup method and disk array apparatus
US20140089728A1 (en) 2012-09-27 2014-03-27 Bryan E. Veal Method and apparatus for synchronizing storage volumes

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11508454B2 (en) 2020-04-16 2022-11-22 SK Hynix Inc. Data storage device and method of operating the same

Also Published As

Publication number Publication date
KR20130097995A (ko) 2013-09-04
US9195541B2 (en) 2015-11-24
US20130227346A1 (en) 2013-08-29

Similar Documents

Publication Publication Date Title
KR101826051B1 (ko) 비휘발성 메모리 장치의 제어 방법 및 비휘발성 메모리 시스템
US10740175B2 (en) Pool-level solid state drive error correction
US8650463B2 (en) Solid state drive and method of controlling an error thereof
US8589761B2 (en) Apparatus and methods for providing data integrity
US9086983B2 (en) Apparatus and methods for providing data integrity
US9602134B2 (en) Operating method of error correction code decoder and memory controller including the error correction code decoder
US9292382B2 (en) Codewords that span pages of memory
US20190252035A1 (en) Decoding method, memory storage device and memory control circuit unit
CN107678695B (zh) 基于可用存储器空间选择冗余存储配置
US9812224B2 (en) Data storage system, data storage device and RAID controller
US20210081273A1 (en) Method and System for Host-Assisted Data Recovery Assurance for Data Center Storage Device Architectures
CN110473582B (zh) 存储器***及其操作方法
US11521701B2 (en) Memory controller with read error handling
CN113722144B (zh) 数据储存装置与数据处理方法
CN112068778B (zh) 用于保持从存储阵列中读取的数据的完整性的方法和设备
KR102665540B1 (ko) 비휘발성 메모리를 포함하는 raid 시스템
KR20150006616A (ko) 데이터 처리 시스템 및 그것의 동작 방법
US20130036259A1 (en) Solid state drive and data storing method thereof
CN113314179A (zh) 用于执行读取操作的存储器***及其操作方法
CN111580741B (zh) 数据写入方法、存储器控制电路单元与存储器存储装置
US10713160B1 (en) Data writing method, memory control circuit unit and memory storage device
US20210374294A1 (en) Data storage device and data processing method
US20220283728A1 (en) Method for redundant array of independent disks striping against programming failures and apparatus thereof
CN112579329A (zh) 快速处理uecc的方法及其存储设备
US9996412B2 (en) Enhanced chip-kill schemes by using sub-trunk CRC

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