KR101925383B1 - 불휘발성 메모리 장치 및 그것의 데이터 관리 방법 - Google Patents

불휘발성 메모리 장치 및 그것의 데이터 관리 방법 Download PDF

Info

Publication number
KR101925383B1
KR101925383B1 KR1020120080206A KR20120080206A KR101925383B1 KR 101925383 B1 KR101925383 B1 KR 101925383B1 KR 1020120080206 A KR1020120080206 A KR 1020120080206A KR 20120080206 A KR20120080206 A KR 20120080206A KR 101925383 B1 KR101925383 B1 KR 101925383B1
Authority
KR
South Korea
Prior art keywords
data
hot
memory
raid
parity
Prior art date
Application number
KR1020120080206A
Other languages
English (en)
Other versions
KR20140013392A (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 KR1020120080206A priority Critical patent/KR101925383B1/ko
Priority to US13/935,593 priority patent/US9335955B2/en
Publication of KR20140013392A publication Critical patent/KR20140013392A/ko
Application granted granted Critical
Publication of KR101925383B1 publication Critical patent/KR101925383B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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

Landscapes

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

Abstract

본 발명은 반도체 메모리 장치에 관한 것으로, 좀더 구체적으로는 불휘발성 메모리 장치 및 그것의 데이터 관리 방법에 관한 것이다. 본 발명의 실시 예에 따른 불휘발성 메모리 장치는 복수의 메모리 블록들을 포함하는 불휘발성 메모리 및 상기 불휘발성 메모리를 제어하는 컨트롤러를 포함하며, 상기 컨트롤러는 상기 복수의 메모리 블록들 중 적어도 하나의 메모리 블록을 핫 메모리 블록으로 지정하고, 상기 핫 메모리 블록의 복수의 핫 페이지들 중 하나의 핫 페이지를 사용하여 적어도 두 개의 레이드 패리티 데이터를 생성한다. 본 발명의 실시 예에 따르면, 하나의 핫 페이지에 대응하는 데이터를 이용하여 적어도 두 개의 레이드 패리티 데이터를 생성하기 때문에, 핫 페이지에 저장된 데이터의 신뢰성이 향상될 수 있다.

Description

불휘발성 메모리 장치 및 그것의 데이터 관리 방법{NONVOLATILE MEMORY DEVICE AND DATA MANAGING METHOD THEREOF}
본 발명은 반도체 메모리 장치에 관한 것으로, 좀더 구체적으로는 불휘발성 메모리 장치 및 그것의 데이터 관리 방법에 관한 것이다.
반도체 메모리 장치에는 DRAM, SRAM 등과 같은 휘발성 메모리와 EEPROM, FRAM, PRAM, MRAM, Flash Memory 등과 같은 불휘발성 메모리 등이 있다. 휘발성 메모리는 전원이 차단될 때 저장된 데이터를 잃지만, 불휘발성 메모리는 전원이 차단되더라도 저장된 데이터를 보존한다. 불휘발성 메모리들 중에서도 플래시 메모리는, 전기적으로 셀의 데이터를 일괄적으로 소거하는 기능을 가지기 때문에, 컴퓨터, SSD(solid state drive/disk), 메모리 카드 등의 메모리로서 널리 사용되고 있다. 최근 들어서는, 휴대폰, PDA, 디지털 카메라 등과 같은 휴대용 정보기기의 사용이 급증함에 따라, 플래시 메모리가 데이터 저장 장치에 채용되어 널리 사용되고 있다.
그러한 데이터 저장 장치에서, 데이터의 에러 발생을 줄이기 위한 방법들 로서, 배드 블록 매니지먼트, 웨어 레벨링, 메타 데이터 미러링 등과 같은 기법들이 알려져 있다. 위와 같은 기법들은 특정한 메모리 블록에서 에러가 상대적으로 많이 발생되는 이슈나 데이터 저장 장치의 오랜 사용으로 인해 에러 발생이 증가되는 이슈에 대하여는 효율적인 대책을 가지기 어렵다.
본 발명은 불휘발성 메모리에 저장된 데이터의 신뢰성을 보장할 수 있는 불휘발성 메모리 장치 및 그것의 데이터 관리 방법을 제공하는데 목적이 있다.
본 발명의 실시 예에 따른 불휘발성 메모리 장치는 복수의 메모리 블록들을 포함하는 불휘발성 메모리; 및 상기 불휘발성 메모리를 제어하는 컨트롤러를 포함하며, 상기 컨트롤러는 상기 복수의 메모리 블록들 중 적어도 하나의 메모리 블록을 핫 메모리 블록으로 지정하고, 상기 핫 메모리 블록의 복수의 핫 페이지들 중 하나의 핫 페이지를 사용하여 적어도 두 개의 레이드 패리티 데이터를 생성한다.
실시 예로써, 상기 컨트롤러는 상기 복수의 핫 페이지들 중 제 1 핫 페이지에 대응하는 데이터를 이용하여 제 1 및 제 2 레이드 패리티 데이터를 생성하며, 상기 제 1 핫 페이지에 대응하는 데이터와 상기 제 1 레이드 패리티 데이터는 동일한 쓰기 스트라이프를 구성하고, 상기 제 1 핫 페이지에 대응하는 데이터와 상기 제 2 레이드 패리티 데이터는 서로 다른 쓰기 스트라이프를 구성한다.
실시 예로써, 상기 컨트롤러는 상기 제 1 핫 페이지에 대응하는 데이터 및 상기 복수의 핫 페이지들 중 제 2 핫 페이지에 대응하는 데이터에 대한 XOR 연산을 수행함으로써, 상기 제 1 레이드 패리티 데이터를 생성한다.
실시 예로써, 상기 제 2 핫 페이지에 대응하는 데이터와 상기 제 2 레이드 패리티 데이터는 동일한 쓰기 스트라이프를 구성한다.
실시 예로써, 상기 컨트롤러는 상기 제 1 핫 페이지에 대응하는 데이터 및 상기 제 2 핫 페이지에 대응하는 데이터를 저장하는 제 1 버퍼; 및 상기 XOR 연산의 결과 값을 저장하는 제 2 버퍼를 포함한다.
실시 예로써, 상기 제 1 핫 페이지에 대응하는 데이터 및 상기 제 2 핫 페이지에 대응하는 데이터는 상기 제 1 레이드 패리티 데이터의 생성이 완료될 때까지, 상기 제 1 버퍼에서 유지된다.
실시 예로써, 상기 제 1 레이드 패리티 데이터의 생성이 완료된 후에, 상기 제 2 버퍼에 저장된 데이터는 리셋된다.
실시 예로써, 상기 복수의 핫 페이지 중 선택된 핫 페이지에 저장된 데이터는 상기 불휘발성 메모리의 영역 중 상기 핫 메모리 블록 이외의 영역에 저장된다.
실시 예로써, 상기 복수의 핫 페이지들에 저장된 데이터들 모두에 대한 읽기 실패가 발생한 경우에, 상기 컨트롤러는 상기 선택된 핫 페이지에 저장된 데이터를 이용하여 상기 읽기 실패가 발생한 핫 페이지들의 데이터들을 복구한다.
실시 예로써, 상기 핫 메모리 블록은 복수의 메모리 블록들 중 소정 횟수 이상의 소거 동작이 수행된 메모리 블록이다.
실시 예로써, 상기 불휘발성 메모리는 3차원 구조로 형성된 복수의 메모리 셀들을 포함하며, 상기 핫 메모리 블록은 상기 복수의 메모리 셀들 중 공통 소스 라인에 인접한 워드 라인을 공유하는 메모리 셀들을 포함한다.
본 발명의 실시 예에 따른 복수의 메모리 블록들을 포함하는 불휘발성 메모리 장치의 데이터 관리 방법은 상기 복수의 메모리 블록들 중 핫 메모리 블록에 저장될 제 1 및 제 2 데이터를 제 1 버퍼에 저장하는 단계; 상기 제 1 버퍼에 저장된 상기 제 1 데이터를 제 2 버퍼로 전송하고, 상기 제 1 데이터를 상기 핫 메모리 블록에 프로그램하는 단계; 및 상기 제 2 버퍼에 저장된 제 1 데이터와 상기 제 2 데이터를 이용하여, 상기 제 1 데이터와 동일한 스트라이프를 구성하는 레이드 패리티 데이터를 생성하는 단계를 포함한다.
실시 예로써, 상기 레이드 패리티 데이터가 생성될 때까지, 상기 제 2 데이터는 상기 제 1 버퍼에서 유지된다.
실시 예로써, 상기 레이드 패리티 데이터가 생성된 후에, 상기 제 2 버퍼를 리셋하는 단계를 더 포함한다.
실시 예로써, 상기 레이드 패리티 데이터를 생성하는 단계는 상기 제 1 데이터, 상기 제 2 데이터, 그리고 상기 제 1 데이터와 동일한 스트라이프를 구성하는 적어도 하나의 사용자 데이터에 대한 XOR 연산을 수행함으로써 상기 레이드 패리티 데이터를 생성한다.
본 발명의 실시 예에 따르면, 하나의 핫 페이지에 대응하는 데이터를 이용하여 적어도 두 개의 레이드 패리티 데이터를 생성한다. 따라서, 핫 페이지에 저장된 데이터의 신뢰성이 향상될 수 있다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 도면이다.
도 2는 도 1의 컨트롤러를 좀더 자세히 보여주는 블록도이다.
도 3은 도 1의 저장 장치의 일 실시 예를 좀더 자세히 보여주는 도면이다.
도 4는 도 3의 불휘발성 메모리의 일 예를 설명하기 위한 도면이다.
도 5는 일반적인 레이드 기법을 이용하여 노멀 패리티 데이터(Normal Parity Data)를 생성하는 방법을 예시적으로 보여주는 도면이다.
도 6A 내지 도 6D는 본 발명의 실시 예에 따른 레이드 패리티 데이터(RAID Parity Data)를 생성하는 방법을 예시적으로 보여주는 도면이다.
도 7은 읽기 실패가 발생한 경우에, 본 발명의 실시 예에 따라 읽기 실패가 발생한 데이터를 복구하는 동작을 설명하는 도면이다.
도 8은 본 발명의 실시 예에 따른 복수의 레이드 패리티 데이터를 생성하는 방법 및 이를 이용한 복구 동작을 설명하는 도면이다.
도 9는 본 발명의 실시 예에 따른 복수의 레이드 패리티 데이터를 생성하는 방법 및 이를 이용한 복구 동작을 설명하는 도면이다.
도 10은 본 발명의 실시 예에 따른 데이터 관리 방법을 보여주는 순서도이다.
도 11은 본 발명에 사용되는 플래시 메모리를 예시적으로 보여주는 블록도이다.
도 12는 도 11에 도시된 메모리 블록의 3차원 구조를 예시적으로 보여주는 사시도이다.
도 13은 도 12에 도시된 메모리 블록의 등가 회로도이다.
도 14는 본 발명의 실시 예에 따른 불휘발성 메모리 장치를 메모리 카드 시스템에 적용한 예를 보여주는 블록도이다.
도 15는 본 발명의 실시 예에 따른 불휘발성 메모리 장치를 솔리드 스테이트 드라이브(SSD) 시스템에 적용한 예를 보여주는 블록도이다.
도 16은 도 15에 도시된 SSD 컨트롤러의 구성을 예시적으로 보여주는 블록도이다.
도 17은 본 발명의 실시 예에 따른 메모리 시스템을 전자 장치로 구현한 예를 보여주는 블록도이다.
이하에서는, 본 발명의 기술적 사상을 용이하게 이해할 수 있을 정도로 상세하게 설명하기 위하여, 본 발명의 실시 예들이 첨부된 도면을 참조하여 설명된다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템(100)을 보여주는 도면이다. 본 발명의 실시 예에 따른 메모리 시스템(100)은 레이드(RAID) 기법을 사용하여 데이터의 손실을 방지한다. 특히, 본 발명의 실시 예에 따른 메모리 시스템(100)은 하나의 핫 페이지(hot page)에 저장될 데이터를 서로 다른 복수의 레이드 패리티 데이터들(RAID parity data)을 생성하는데 사용함으로써, 핫 페이지에 저장된 데이터의 손실을 방지할 수 있다. 도 1을 참조하면, 메모리 시스템(100)은 저장 장치(110) 및 컨트롤러(120)를 포함한다.
저장 장치(110)는 텍스트, 그래픽, 소프트웨어 코드 등과 같은 다양한 데이터들을 저장하는데 사용된다. 저장 장치(100)는 하나의 불휘발성 메모리 또는 복수의 불휘발성 메모리들을 사용하여 구현될 수 있다. 저장 장치(110)는, 예를 들어, EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시 메모리(flash 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)의 불휘발성 메모리를 사용하여 구현될 수 있다. 설명의 편의상, 이하에서는 저장 장치(110)는 플래시 메모리를 이용하여 구현되는 것으로 가정될 것이다.
저장 장치(110)에 사용되는 불휘발성 메모리는 복수의 메모리 블록들을 포함한다. 이 경우, 복수의 메모리 블록들 중 소정 메모리 블록은 핫 메모리 블록(hot memory block)으로 지정될 수 있다. 예를 들어, 플래시 메모리의 메모리 블록들 중 소정 메모리 블록에 대한 소거 동작이 다른 메모리 블록들에 비하여 많이 수행된 메모리 블록은 핫 메모리 블록으로 지정될 수 있다.
이 경우, 핫 메모리 블록에 대한 소거 동작이 다른 메모리 블록들에 비하여 많이 수행되었기 때문에, 핫 메모리 블록의 메모리 셀들은 다른 메모리 블록의 메모리 셀들에 비하여 물리적으로 더욱 열화 되었다. 이는 핫 메모리 블록에 저장된 데이터에 대한 읽기 실패(read fail)의 가능성이 다른 메모리 블록들에 저장된 데이터에 비하여 큼을 의미한다. 본 발명의 실시 예에 따른 메모리 시스템(100)은 핫 메모리 블록에 저장된 데이터의 신뢰성을 보장하기 위하여, 레이드 유닛(130)을 포함한다.
컨트롤러(120)는 외부로부터 수신된 데이터를 저장 장치(110)에 저장하거나, 저장 장치(110)로부터 독출된 데이터를 외부로 전달한다. 특히, 본 발명의 실시 예에 있어서, 컨트롤러(120)는 저장 장치(110)의 핫 메모리 블록에 저장된 데이터의 신뢰성을 보장하기 위하여, 레이드 기법(RAID scheme)을 사용하여 데이터를 관리한다. 이를 위하여, 컨트롤러(120)는 레이드 유닛(130)을 포함한다.
레이드 유닛(130)은 프로그램 동작 시에, 레이드 기법을 사용하여 저장 장치(110)에 데이터를 저장한다. 또한, 읽기 동작 시에 읽기 오류가 발생한 경우, 레이드 유닛(130)은 레이드 기법을 사용하여 읽기 오류가 발생한 데이터를 복구한다.
특히, 본 발명의 실시 예에 있어서, 레이드 유닛(130)은 하나의 핫 페이지(hot page)에 대응하는 데이터가 서로 다른 두 개의 레이드 패리티 데이터들을 생성하는데 사용되도록, 프로그램 동작을 제어한다. 여기서, 핫 페이지는 저장 장치(110)의 핫 메모리 블록을 구성하는 페이지들을 의미한다. 핫 페이지의 물리적 특성의 열화로 인하여, 핫 페이지에 저장된 데이터에 대한 읽기 동작 수행 시에 읽기 실패가 발생할 가능성이 크다.
본 발명의 실시 예에 따른 메모리 시스템(100)은 하나의 핫 페이지에 대응하는 데이터가 서로 다른 두 개의 레이드 패리티 데이터들을 생성하는데 사용되도록 관리한다. 따라서, 하나의 핫 페이지에 저장된 데이터에 대한 읽기 실패가 발생하는 경우, 읽기 실패가 발생한 데이터는 두 개의 레이드 패리티 데이터에 의하여 복구될 수 있다. 따라서, 핫 페이지에 저장된 데이터의 신뢰성이 보장될 수 있다.
더욱이, 하나의 스트라이프를 구성하는 데이터들 중 적어도 두 개의 데이터들에 대한 읽기 실패가 발생한 경우, 일반적인 레이드 기법은 읽기 실패된 데이터들을 복구할 수 없다. 그러나, 본 발명의 실시 예에 따른 메모리 시스템(100)은 하나의 핫 페이지에 대응하는 데이터를 이용하여 서로 다른 두 개의 레이드 패리티 데이터들을 생성함으로써, 적어도 두 개의 읽기 실패된 데이터들에 대한 복구 동작을 수행할 수 있다.
도 2는 도 1의 컨트롤러(120)를 좀더 자세히 보여주는 블록도이다. 도 2를 참조하면, 컨트롤러(120)는 프로세서(121), 롬(122), 버퍼 컨트롤러(123), 버퍼 메모리(124), 레이드 컨트롤러(125), 레이드 버퍼(126), 호스트 인터페이스(127), 그리고 불휘발성 메모리 인터페이스(이하 NVM 인터페이스, 128)를 포함한다. 도 2의 레이드 컨트롤러(125) 및 레이드 버퍼(126)는 도 1의 레이드 유닛(130)을 구성한다.
프로세서(121)는 컨트롤러(120)의 전반적인 동작을 제어한다. 예를 들어, 프로세서(121)는 롬(122)에 저장된 플래시 변환 계층(FTL: Flash Translation Layer)와 같은 펌웨어를 운용하도록 구성될 수 있다. 예를 들어, 프로세서(121)는 플래시 변환 계층(FTL)을 이용하여 저장 장치(120)의 웨어-레벨링(wear-leveling), 배드 블록 등을 관리하도록 구성될 수 있다.
버퍼 컨트롤러(123)는 프로세서(121)의 제어에 응답하여 버퍼 메모리(124)를 제어한다. 버퍼 메모리(124)는 저장 장치(110)에 저장될 데이터를 임시로 저장하거나, 저장 장치(110)로부터 독출된 데이터를 임시로 저장한다.
레이드 컨트롤러(125)는 프로세서(121)의 제어에 응답하여 레이드 버퍼(126)를 제어한다. 레이드 버퍼(126)는 레이드 패리티 데이터를 생성하기 위한 워크 메모리(work memory)로 제공된다.
저장 장치(110)의 핫 메모리 블록에 저장될 데이터의 손실을 방지하기 위하여, 레이드 컨트롤러(125)는 레이드 기법에 기초하여 레이드 패리티 데이터를 생성한다. 레이드 패리티 데이터의 생성이 완료되면, 레이드 컨트롤러(125)는 레이드 패리티 데이터를 저장 장치(110)의 소정 영역에 저장한다.
본 발명의 기술적 사상에 따른 실시 예에 있어서, 레이드 컨트롤러(125)는 하나의 핫 페이지에 대응하는 데이터를 사용하여 서로 다른 두 개의 레이드 패리티 데이터들을 생성한다. 이는 레이드 컨트롤러(125)가 하나의 레이드 패리티 데이터를 생성하는데 서로 다른 두 개의 핫 페이지들에 저장될 데이터들을 이용함을 의미한다.
구체적으로, 레이드 패리트 데이터를 생성하기 위하여, 레이드 컨트롤러(125)는 먼저 동일한 패리티 스트라이프(Parity stripe)를 구성하는 데이터들에 대한 XOR 연산을 수행한다. 레이드 컨트롤러(125)는 레이드 패리티 데이터를 생성하는 과정에서 계산되는 XOR 연산의 결과 값을 레이드 버퍼(126)에 임시로 저장한다.
이 후, 레이드 컨트롤러(125)는 다른 패리티 스트라이프를 구성하는 핫 페이지의 데이터와 레이드 버퍼(126)에 저장된 데이터에 대한 XOR 연산을 수행함으로써, 하나의 레이드 패리티 데이터를 생성한다. 레이드 패리티 데이터의 생성이 완료된 경우, 레이드 컨트롤러(125)는 해당 레이드 패리티 데이터를 저장 장치(100)에 저장하고, 레이드 버퍼(126)를 리셋(reset) 한다.
한편, 호스트 인터페이스(127)는 호스트와의 인터페이싱을 제공하는데 사용되며, NVM 인터페이스(128)는 저장 장치(110)와의 인터페이싱을 제공하는데 사용된다.
도 3은 도 1의 저장 장치(110)의 일 실시 예를 좀더 자세히 보여주는 도면이다. 도 1에서 설명된 바와 같이, 도 1의 저장 장치(110)는 하나의 불휘발성 메모리로 구현될 수 있으며, 복수의 불휘발성 메모리들로 구현될 수도 있다. 도 3에서는, 설명의 편의상, 복수의 불휘발성 메모리들을 사용하여 도 1의 저장 장치(110)를 구현하는 예가 도시되어 있다.
도 3을 참조하면, 저장 장치(110)는 복수의 불휘발성 메모리들(NVM11~NVM88)을 포함한다. 저장 장치(110)는 복수의 채널들(CH1~CH8)을 통하여 NVM 인터페이스(128)에 연결된다. 동일한 채널을 공유하는 복수의 불휘발성 메모리들은 동일한 채널을 통하여 NVM 인터페이스(128)로부터 데이터를 수신하거나, NVM 인터페이스(128)로 독출된 데이터를 전송한다.
예를 들어, 제 1 채널(CH1)을 공유하는 불휘발성 메모리들(NVM11~NVM18)은 제 1 채널(CH1)을 통하여 NVM 인터페이스(128)로부터 데이터를 수신하거나, NVM 인터페이스(128)로 데이터를 전송한다. 한편, 동일한 채널을 공유하는 불휘발성 메모리들은 각각 독립적으로 프로그램 동작, 읽기 동작, 소거 동작을 수행할 수 있다.
서로 다른 채널을 공유하는 복수의 불휘발성 메모리들은 각각 병렬적으로 데이터 송수신 동작을 수행할 수 있다. 예를 들어, 제 1 채널(CH1)을 공유하는 불휘발성 메모리들(NVM11~NVM18)은 제 1 채널(CH1)을 통하여 데이터 송수신 동작을 수행하고, 제 2 채널(CH2)을 공유하는 불휘발성 메모리들(NVM21~NVM28)은 제 2 채널(CH2)을 통하여 데이터 송수신 동작을 수행한다. 이 경우, 제 1 채널(CH1)을 통한 데이터 송수신 동작과 제 2 채널(CH2)을 통한 데이터 송수신 동작은 각각 병렬적으로 수행될 수 있다.
한편, 도 3에서, 복수의 불휘발성 메모리들(NVM11~NVM88)은 8 개의 채널들(CH1~CH8)과 8 개의 웨이들(Way1~Way8)에 대응하는 것으로 가정된다. 다만 이는 예시적인 것이며, 본 발명의 실시 예에 따른 채널들의 개수 및 웨이들의 개수는 다양하게 변경되어 설계될 수 있음이 용이하게 이해될 것이다.
도 4는 도 3의 불휘발성 메모리(NVM)의 일 예를 설명하기 위한 도면이다. 도 4에서는 도 3의 복수의 불휘발성 메모리들(NVM11~NVM88) 중 제 1 채널(CH1) 및 제 1 웨이(Way1)에 대응하는 불휘발성 메모리(NVM11)가 예시적으로 도시되어 있다.
설명의 편의상, 불휘발성 메모리(NVM11)는 플래시 메모리를 사용하여 구현된다고 가정하자. 도 4를 참조하면, 불휘발성 메모리(NVM11)는 복수의 메모리 블록들을 포함하며, 각 메모리 블록은 복수의 페이지들을 포함한다.
덮어쓰기 동작(over-write operation)을 지원하지 않는 플래시 메모리의 특성으로 인하여, 플래시 메모리는 프로그램 단위와 소거 단위가 일치하지 않는 특성을 가진다. 즉, 프로그램 동작 시에는 페이지 단위로 프로그램 동작이 수행되나, 소거 동작 시에는 메모리 블록 단위로 소거 동작이 수행된다.
또한, 복수의 메모리 블록들 중 소정 메모리 블록에 대한 소거 동작은 다른 메모리 블록들에 대한 소거 동작에 비하여 빈번하게 수행될 수 있다. 예를 들어, 소정 메모리 블록에 저장된 데이터가 빈번하게 업데이트 되는 데이터인 경우, 해당 메모리 블록에 저장된 데이터는 다른 메모리 블록에 저장된 데이터에 비하여 빈번하게 무효화(invalid data) 된다. 이 경우, 해당 메모리 블록에 대한 소거 동작은 다른 메모리 블록들에 비하여 빈번하게 수행된다.
소거 동작이 많이 수행된 메모리 블록의 메모리 셀들은 다른 메모리 블록의 메모리 셀들에 비하여 쉽게 열화되기 때문에, 해당 메모리 블록의 신뢰성은 다른 메모리 블록에 비하여 감소된다. 즉, 소거 동작이 많이 수행된 메모리 블록에 저장된 데이터에 대한 읽기 실패(read fail)의 확률은 다른 메모리 블록에 비하여 증가한다.
설명의 편의상, 본 발명의 실시 예에 있어서, 소거 동작이 많이 수행된 메모리 블록은 핫 메모리 블록(hot block)이라 칭해진다. 또한, 핫 메모리 블록에 속하는 페이지들은 핫 페이지(hot page)라 칭해진다.
예를 들어, 도 4에 도시된 바와 같이, 불휘발성 메모리(NVM11)의 제 1 메모리 블록(BLK1)에 대한 소거 동작이 다른 메모리 블록들에 비하여 많이 수행된 경우, 제 1 메모리 블록(BLK1)은 핫 메모리 블록으로 지정될 수 있다. 예를 들어, 컨트롤러(120, 도 2 참조)의 프로세서(121, 도 2 참조)는 각 메모리 블록에 대한 소거 횟수를 카운팅하고, 복수의 메모리 블록들 중 가장 많은 소거 동작이 수행된 메모리 블록을 핫 메모리 블록으로 지정할 수 있다.
핫 메모리 블록에 속하는 핫 페이지들 중 소정 핫 페이지에 대한 읽기 실패가 발생한 경우, 해당 핫 페이지에 저장된 데이터는 복구되어야 한다. 일반적으로, 읽기 실패된 데이터를 복구하기 위하여, ECC를 이용한 복구 동작이 시도될 수 있다. 그러나, ECC의 복구 범위를 넘어서는 에러가 발생한 경우, 파일 시스템(File system)에 관련된 데이터에 대하여 에러가 발생한 경우, FTL 맵핑 정보에 관련된 데이터에 에러가 발생한 경우 등, ECC로 인하여 복구될 수 없는 에러가 발생할 수 있다.
핫 메모리 블록에 저장된 데이터의 손실을 방지하기 위하여, 본 발명의 실시 예에 따른 메모리 시스템(100, 도 1 참조)은 레이드 기법을 사용한다. 특히, 본 발명의 실시 예에 따른 메모리 시스템(100)은 하나의 핫 페이지(hot page)에 대응하는 데이터를 사용하여 복수의 레이드 패리티 데이터들(RAID parity data)을 생성함으로써, 핫 페이지에 저장된 데이터의 손실을 방지할 수 있다.
이하의 도 5에서는 일반적인 레이드 기법을 이용한 데이터의 관리 방법이 설명될 것이다. 또한, 도 6A 내지 도 6D에서는 본 발명의 실시 예에 따른 레이드 패리티 데이터의 생성 방법이 설명될 것이다. 도 7에서는 본 발명의 실시 예에 따른 데이터 복구 동작이 설명될 것이다.
이하에서 설명될 바와 같이, 본 발명의 실시 예는 하나의 핫 페이지(hot page)에 대응하는 데이터를 사용하여 복수의 레이드 패리티 데이터들(RAID parity data)을 생성함으로써, 일반적인 레이드 기법에 비하여 핫 페이지에 저장된 데이터의 신뢰성을 더욱 향상시킬 수 있다.
도 5는 일반적인 레이드 기법을 이용하여 노멀 패리티 데이터(Normal Parity Data)를 생성하는 방법을 예시적으로 보여주는 도면이다. 간략한 설명을 위하여, 하나의 스트라이프(stripe)를 구성하는 데이터들은 4 개의 사용자 데이터들과 1 개의 레이드 패리티 데이터로 구성된다고 가정된다. 또한, 하나의 스트라이프를 구성하는 데이터들은 제 1 내지 제 5 블록(BLK1~BLK5, 도 4 참조)의 첫 번째 페이지들(Page 11, Page12, Page13, Page14, Page 15)에 저장된다고 가정된다.
도 5를 참조하면, 버퍼 메모리(124)에 저장된 제 1 사용자 데이터(DT1)는 불휘발성 메모리(NVM11)의 제 1 블록(BLK1)의 페이지(Page11)에 프로그램된다. 이 경우, 제 1 사용자 데이터(DT1)는 레이드 버퍼(126)에 전송된다.
이 후, 버퍼 메모리(124)에 저장된 제 2 사용자 데이터(DT2)가 불휘발성 메모리(NVM11)의 제 2 블록(BLK2)의 페이지(Page12)에 프로그램된다. 이 경우, 제 2 사용자 데이터(DT2)는 제 1 사용자 데이터(DT1)와 XOR 연산되며, 연산된 XOR 결과 값은 레이드 버퍼(126)에 다시 저장된다.
이와 같은 방식으로, 제 3 및 제 4 사용자 데이터(DT3, DT4)는 각각 제 3 블록(BLK3)의 페이지(Page13) 및 제 4 블록(BLK4)의 페이지(Page14)에 저장되며, 제 1 내지 제 4 사용자 데이터들(DT1~DT4)의 XOR 결과 값이 레이드 버퍼(126)에 저장된다. 이 경우, 제 1 내지 제 4 사용자 데이터들(DT1~DT4)의 XOR 결과 값은 노멀 패리티 데이터(Normal Parity Data)를 의미한다. 이 후, 레이드 버퍼(126)에 저장된 XOR 결과 값(즉, 노멀 패리티 데이터)가 제 5 블록(BLK5)의 페이지(Page15)에 저장된다.
이와 같은 방법에 의하면, 스트라이프(stripe)를 이루는 데이터들 중 어느 하나의 데이터에 대한 읽기 실패가 발생한 경우, 해당 데이터는 RAID 기법에 의하여 복구될 수 있다. 그러나, 스트라이프를 이루는 데이터들 중 두 개의 데이터에 대한 읽기 실패가 발생한 경우, 해당 데이터들에 대한 복구는 불가능하다.
특히, 도 5와 같이, 제 1 사용자 데이터(DT1)가 핫 페이지에 저장된 경우에는, 제 1 사용자 데이터(DT1)를 포함하여 두 개 이상의 데이터들에 대한 읽기 실패가 발생할 가능성이 크다. 그러나, 도 5에서 설명된 바와 같이, 읽기 실패가 발생한 두 개의 데이터들에 대한 복구가 불가능하다.
도 6A 내지 도 6D는 본 발명의 실시 예에 따른 레이드 패리티 데이터(RAID Parity Data)를 생성하는 방법을 예시적으로 보여주는 도면이다. 본 발명의 실시 예에 따르면, 레이드 패리티 데이터는 서로 다른 두 개의 핫 페이지들에 대응하는 데이터들을 이용하여 생성된다. 또한, 하나의 핫 페이지에 대응하는 데이터는 서로 다른 두 개의 레이드 패리티 데이터를 생성하는데 사용된다. 따라서, 본 발명의 실시 예에 따른 메모리 시스템(100, 도 1 참조)은 도 5와 달리, 하나의 스트라이프를 구성하는 데이터들 중 두 개의 데이터들에 읽기 실패가 발생한다고 하더라도, 일기 실패된 데이터들을 복구할 수 있다.
설명의 편의상, 도 6A 내지 도 6D에서는, 제 1 패리티 스트라이프(Parity stripe 1)는 제 1 내지 제 4 사용자 데이터들(DT1~DT4) 및 제 1 레이드 패리티 데이터(Parity 1)로 구성된다고 가정된다. 또한, 제 1 내지 제 4 사용자 데이터들(DT1~DT4) 및 제 1 레이드 패리티 데이터(Parity 1)는 도 4의 페이지들(Page11~Page15)에 각각 프로그램된다고 가정된다.
이와 유사하게, 제 2 패리티 스트라이프(Parity stripe 1)는 제 5 내지 제 8 사용자 데이터들(DT5~DT8) 및 제 2 레이드 패리티 데이터(Parity 1)로 구성된다고 가정된다. 제 2 패리티 스트라이프(Parity stripe 1)는 제 5 내지 제 8 사용자 데이터들(DT5~DT8) 및 제 2 레이드 패리티 데이터(Parity 1)는 도 4의 페이지들(Page21~Page25)에 각각 프로그램된다고 가정된다.
이 경우, 도 4에 도시된 바와 같이, 제 1 블록(BLK1)은 핫 메모리 블록이며, 제 1 블록(BLK1)의 페이지들(Page11~Page81)은 모두 핫 페이지들이라고 가정된다. 따라서, 제 1 사용자 데이터(DT1) 및 제 2 사용자 데이터(DT2)는 각각 제 1 핫 페이지(Page11) 및 제 2 핫 페이지(Page21)에 저장된다고 가정된다.
도 6A를 참조하면, 버퍼 메모리(124)에 저장된 제 1 사용자 데이터(DT1)는 불휘발성 메모리(NVM11)의 페이지(Page11)에 프로그램된다. 이 경우, 버퍼 컨트롤러(123, 도 2 참조)는 제 1 사용자 데이터(DT1)를 레이드 컨트롤러(125, 도 2 참조)에 전송하고, 레이드 컨트롤러(125)는 제 1 사용자 데이터(DT1)를 레이드 버퍼(126)에 임시로 저장한다.
이 후, 버퍼 메모리(124)에 저장된 제 2 사용자 데이터(DT2)가 불휘발성 메모리(NVM11)의 페이지(Page12)에 프로그램된다. 이 경우, 버퍼 컨트롤러(123)는 제 2 사용자 데이터(DT2)를 레이드 컨트롤러(125)에 전송하고, 레이드 컨트롤러(125)는 제 1 사용자 데이터(DT1) 및 제 2 사용자 데이터(DT2)에 대한 XOR 연산을 수행한다. 레이드 컨트롤러(125)는 XOR 연산 값을 다시 레이드 버퍼(126)에 저장한다.
이와 같은 방식으로, 제 3 및 제 4 사용자 데이터(DT3, DT4)는 각각 제 3 블록(BLK3)의 페이지(Page13) 및 제 4 블록(BLK4)의 페이지(Page14)에 저장되고, 제 1 내지 제 4 사용자 데이터들(DT1~DT4)의 XOR 연산 값이 레이드 버퍼(126)에 저장된다.
도 6B를 참조하면, 레이드 컨트롤러(125)는 레이드 버퍼(126)에 저장된 제 1 내지 제 4 사용자 데이터들(DT1~DT4)에 대한 XOR 연산 값과 제 5 사용자 데이터(DT5)에 대한 XOR 연산을 다시 한번 수행하고, 이를 레이드 버퍼(126)에 다시 저장한다. 즉, 레이드 컨트롤러(125)는 제 1 내지 제 5 사용자 데이터(DT1~DT5)에 대한 XOR 연산을 수행하고, 이를 레이드 버퍼(126)에 저장한다.
이 경우, 제 1 내지 제 5 사용자 데이터(DT1~DT5)에 대한 XOR 연산 값은 제 1 레이드 패리티 데이터(first RAID Parity Data, Parity 1)라 칭해지며, 제 1 레이드 패리트 데이터(Parity 1)는 불휘발성 메모리(NVM11)의 페이지(Page15)에 저장된다.
도 6C 및 도 6D를 참조하면, 이 후 제 2 레이드 패리티 데이터(second RAID Parity Data, Parity 2)를 생성하는 과정이 수행된다. 도 6C를 참조하면, 버퍼 메모리(124)에 저장된 제 5 내지 제 8 사용자 데이터(DT5~DT8)가 각각 페이지들(Page21~Page25)에 순차적으로 저장되며, 레이드 컨트롤러(125)는 제 5 내지 제 8 사용자 데이터들(DT5~DT8)에 대한 XOR 연산을 순차적으로 수행된다. 제 5 내지 제 8 사용자 데이터들(DT5~DT8)에 대한 XOR 연산 값은 레이드 버퍼(126)에 저장된다.
이 후, 도 6D를 참조하면, 레이드 컨트롤러(125)는 레이드 버퍼(126)에 저장된 제 5 내지 제 8 사용자 데이터들(DT5~DT8)에 대한 XOR 연산 값과 제 1 사용자 데이터(DT1)에 대한 XOR 연산을 다시 한번 수행하고, 이를 레이드 버퍼(126)에 다시 저장한다. 이 경우, 제 5 내지 제 8 사용자 데이터(DT5~DT8) 및 제 1 사용자 데이터(DT1)에 대한 XOR 연산 값은 제 2 레이드 패리티 데이터(second RAID Parity Data, Parity 2)라 칭해지며, 제 2 레이드 패리트 데이터(Parity 2)는 불휘발성 메모리(NVM11)의 페이지(Page25)에 저장된다.
한편, 도 6A 내지 도 6D를 통하여 생성된 제 1 및 제 2 레이드 패리티 데이터(Parity 1, Parity 2)를 살펴보면, 제 1 레이드 패리티 데이터(Parity 1)는 제 1 패리티 스트라이프(Parity stripe 1)를 구성하고, 제 2 레이드 패리티 데이터(Parity 2)는 제 2 패리티 스트라이프(Parity stripe 2)를 구성한다.
제 1 레이드 패리티 데이터(Parity 1)는 제 1 패리티 스트라이프(Parity stripe 1)의 제 1 사용자 데이터(DT1) 및 제 2 패리티 스트라이프(Parity stripe 2)의 제 5 사용자 데이터(DT5)를 이용하여 생성된다. 즉, 제 1 레이드 패리티 데이터(Parity 1)는 서로 다른 패리트 스트라이프를 구성하는 두 개의 핫 페이지들에 저장될 데이터들을 사용하여 생성된다.
제 1 레이드 패리티 데이터(Parity 1)와 동일하게, 제 2 레이드 패리티 데이터(Parity 2)는 제 1 패리티 스트라이프(Parity stripe 1)의 제 1 사용자 데이터(DT1) 및 제 2 패리티 스트라이프(Parity stripe 2)의 제 5 사용자 데이터(DT5)를 이용하여 생성된다. 즉, 제 2 레이드 패리티 데이터(Parity 2)는 서로 다른 패리트 스트라이프를 구성하는 두 개의 핫 페이지들에 저장될 데이터들을 사용하여 생성된다.
한편, 핫 페이지에 대응하는 사용자 데이터의 관점에서 살펴보면, 제 1 핫 페이지(Page11)에 대응하는 제 1 사용자 데이터(DT1)는 제 1 및 제 2 레이드 패리티 데이터(Parity 1, Parity 2)를 생성하는데 사용된다. 이와 마찬가지로, 제 2 핫 페이지(Page21)에 대응하는 제 5 사용자 데이터(DT5)는 제 1 및 제 2 레이드 패리티 데이터(Parity 1, Parity 2)를 생성하는데 사용된다.
도 7은 읽기 실패가 발생한 경우에, 본 발명의 실시 예에 따라 읽기 실패가 발생한 데이터를 복구하는 동작을 설명하는 도면이다. 도 7에서는 하나의 패리티 스트라이프를 구성하는 데이터들 중 두 개의 사용자 데이터들에 읽기 실패가 발생한 경우에, 읽기 실패된 데이터들을 복구하는 동작이 예시적으로 설명된다.
설명의 편의상, 도 7의 제 1 레이드 패리티 데이터(Parity 1) 및 제 2 레이드 패리티 데이터(Parity 2)는 각각 도 6A 내지 도 6D를 통하여 생성된다고 가정된다. 또한, 제 1 패리티 스트라이프(Parity stripe 1)를 구성하는 제 1 사용자 데이터(DT1) 및 제 4 사용자 데이터(DT4)에 읽기 실패가 발생한다고 가정된다.
도 5의 일반적인 레이드 기법을 사용하는 경우, 하나의 스트라이프를 구성하는 데이터들 중 두 개의 데이터들에 대한 읽기 실패가 발생하면, 읽기 실패된 데이터들은 복구될 수 없다. 그러나, 본 발명의 실시 예에 따른 메모리 시스템(100, 도 1 참조)은 하나의 핫 페이지가 서로 다른 레이드 패리티 데이터들을 생성하는데 사용되었으므로, 이러한 경우에도 복구 동작을 수행할 수 있다.
도 7을 참조하여 좀더 자세히 설명하면, 제 1 사용자 데이터(DT1)와 제 4 사용자 데이터(DT4)가 복구되기 위해서는, 먼저, 제 1 사용자 데이터(DT1)가 복구되어야 한다. 제 1 사용자 데이터(DT1)는 제 1 레이드 패리티 데이터(Parity 1) 뿐만 아니라 제 2 레이드 패리티 데이터(Parity 2)를 생성하는 과정에서도 사용되었기 때문에, 제 1 사용자 데이터(DT1)는 제 2 레이드 패리티 데이터(Parity 2)에 의하여 복구될 수 있다.
즉, 도 7에 도시된 바와 같이, 먼저, 제 1 사용자 데이터(DT1)는 제 2 레이드 패리티 데이터(Parity 2)에 의하여 복구된다.
이 후, 제 4 사용자 데이터(DT4)에 대한 복구 동작이 수행된다. 제 1 사용자 데이터(DT1)가 이미 복구되었기 때문에, 제 4 사용자 데이터(DT4)는 제 1 레이드 패리티 데이터(Parity 1)에 의하여 복구될 수 있다. 즉, 도 7에 도시된 바와 같이, 제 4 사용자 데이터(DT4)는 복구된 제 1 사용자 데이터(DT1) 및 제 1 레이드 패리티 데이터(Parity 1)를 이용하여 복구될 수 있다.
한편, 도 6 및 도 7의 설명은 예시적인 것으로 이해되어야 하며, 본 발명의 기술적 사상은 이에 한정되지 않음이 이해될 것이다. 예를 들어, 도 6 및 도 7에서, 하나의 패리티 스트라이프는 4 개의 사용자 데이터들 및 하나의 레이드 패리티 데이터로 구성되는 것으로 가정되었다. 다만 이는 예시적인 것이며, 하나의 패리트 스트라이프의 구성은 설계자에 따라 다양하게 설정 및 변경될 수 있다.
또한, 도 6 및 도 7에서, 하나의 패리티 스트라이프를 구성하는 사용자 데이터들은 모두 동일한 불휘발성 메모리에 저장되는 것으로 가정되었다. 다만 이는 예시적인 것이며, 하나의 패리티 스트라이프를 구성하는 사용자 데이터들은 서로 다른 불휘발성 메모리(도 3 참조)에 저장될 수도 있다.
한편, 도 6 및 도 7에서는, 설명의 편의상, 두 개의 레이드 패리트 데이터들이 생성되고, 두 개의 레이드 패리트 데이터들을 이용하여 읽기 실패된 데이터들이 복구되는 과정이 설명되었다. 다만 이는 예시적인 것이며, 본 발명의 기술적 사상은 3 개 이상의 레이드 패리트 데이터들을 생성할 수 있으며, 두 개의 레이드 패리트 데이터들을 이용하여 읽기 실패된 데이터들을 복구할 수 있다. 이하의 도 8 및 도 9에서는 이에 대한 실시 예들이 좀더 자세히 설명된다.
도 8은 본 발명의 실시 예에 따른 복수의 레이드 패리티 데이터를 생성하는 방법 및 이를 이용한 복구 동작을 설명하는 도면이다. 도 8에서는 두 개의 핫 페이지들에 대응하는 사용자 데이터들에 대한 읽기 실패가 발생한 경우, 읽기 실패된 데이터들을 복구하는 동작이 예시적으로 설명된다.
설명의 편의상, 도 8에서는 제 1 내지 제 3 레이드 패리티 데이터들(Parity 1~Parity 3)이 생성된다고 가정된다. 또한, 제 1 내지 제 4 사용자 데이터들(DT1~DT4)은 불휘발성 메모리(NVM11, 도 4 참조)의 페이지들(Page11~Page14)에 저장되고, 제 5 내지 제 8 사용자 데이터들(DT5~DT8)은 불휘발성 메모리(NVM11)의 페이지들(Page21~Page24)에 저장되며, 제 9 내지 제 12 사용자 데이터들(DT9~DT12)은 불휘발성 메모리(NVM11)의 페이지들(Page31~Page34)에 저장된다고 가정된다.
도 8을 참조하면, 제 1 레이드 패리티 데이터(Parity 1)는 제 1 내지 제 5 사용자 데이터들(DT1~DT5)의 XOR 연산에 의하여 생성된다. 즉, 제 1 레이드 패리티 데이터(Parity 1)는 제 1 핫 페이지(Page11)에 대응하는 제 1 사용자 데이터(DT1) 및 제 2 핫 페이지(Page21)에 대응하는 제 5 사용자 데이터(DT5)에 의하여 생성된다. 이 경우, 제 5 사용자 데이터(DT5)는 제 2 패리티 스트라이프(Parity stripe 2)에 속하며, 제 2 레이드 패리티 데이터(Parity 2)를 생성하는데도 사용된다.
제 2 레이드 패리티 데이터(Parity 2)는 제 5 내지 제 9 사용자 데이터들(DT5~DT9)의 XOR 연산에 의하여 생성된다. 즉, 제 2 레이드 패리티 데이터(Parity 2)는 제 2 핫 페이지(Page21)에 대응하는 제 5 사용자 데이터(DT5) 및 제 3 핫 페이지(Page31)에 대응하는 제 9 사용자 데이터(DT9)에 의하여 생성된다. 이 경우, 제 9 사용자 데이터(DT9)는 제 3 패리티 스트라이프(Parity stripe 3)에 속하며, 제 3 레이드 패리티 데이터(Parity 3)를 생성하는데도 사용된다.
제 3 레이드 패리티 데이터(Parity 3)는 제 9 내지 제 12 사용자 데이터들(DT5~DT9) 및 제 1 사용자 데이터(DT1)의 XOR 연산에 의하여 생성된다. 즉, 제 3 레이드 패리티 데이터(Parity 3)는 제 3 핫 페이지(Page31)에 대응하는 제 9 사용자 데이터(DT9) 및 제 1 핫 페이지(Page11)에 대응하는 제 1 사용자 데이터(DT1)에 의하여 생성된다. 이 경우, 제 1 사용자 데이터(DT1)는 제 1 패리티 스트라이프(Parity stripe 1)에 속하며, 제 1 레이드 패리티 데이터(Parity 1)를 생성하는데도 사용된다.
도 8에 도시된 바와 같이, 제 1 내지 제 3 레이드 패리티 데이터(Parity 1~Parity 3)는 각각 서로 다른 두 개의 핫 페이지들의 데이터들에 의하여 생성된다. 또한, 하나의 페이지에 대응하는 데이터는 서로 다른 두 개의 레이드 패리티 데이터들을 생성하는데 사용된다.
한편, 이 경우, 핫 페이지에 대응하는 사용자 데이터는 서로 다른 두 개의 레이드 패리티 데이터들이 생성되는데 사용되기 때문에, 핫 페이지에 대응하는 사용자 데이터는 대응하는 레이드 패리티 데이터들이 생성될 때까지 유지되어야 한다. 예를 들어, 제 1 사용자 데이터(DT1)는 제 1 및 제 3 레이드 패리티 데이터(Parity 1, Parity 3)를 생성하는데 사용되기 때문에, 제 1 사용자 데이터(DT1)는 제 3 레이드 패리티 데이터(Parity 3)가 생성될 때까지 버퍼 메모리(124, 도 2 참조)에 유지될 것이다.
본 발명의 기술적 사상에 따른 실시 예에 있어서, 두 개의 핫 페이지들에 대응하는 사용자 데이터들에 읽기 실패가 발생한 경우, 본 발명의 실시 예에 따른 메모리 시스템(100)은 읽기 실패된 사용자 데이터들을 복구할 수 있다.
즉 도 8에 도시된 바와 같이, 제 1 사용자 데이터(DT1) 및 제 5 사용자 데이터(DT5)에 대한 읽기 실패가 발생했다고 가정된다. 이 경우, 제 1 사용자 데이터(DT1)는 제 3 레이드 패리티 데이터(Parity 3)를 생성하는 과정에서 사용되었기 때문에, 제 1 사용자 데이터(DT1)는 제 3 레이드 패리티 데이터(Parity 3)에 의하여 복구될 수 있다.
또한, 제 5 사용자 데이터(DT5)는 제 1 레이드 패리티 데이터(Parity 1)를 생성하는 과정에서 사용되었기 때문에, 제 5 사용자 데이터(DT5)는 제 1 레이드 패리티 데이터(Parity 1) 및 복구된 제 1 사용자 데이터(DT1)에 의하여 복구될 수 있다.
결국, 본 발명의 실시 예에 따른 메모리 시스템(100)은 두 개의 핫 페이지들에 대응하는 사용자 데이터들에 대한 읽기 실패가 발생한 경우에도, 읽기 실패된 데이터들을 성공적으로 복구할 수 있다.
도 9는 본 발명의 실시 예에 따른 복수의 레이드 패리티 데이터를 생성하는 방법 및 이를 이용한 복구 동작을 설명하는 도면이다. 도 9에서는 모든 핫 페이지들에 대응하는 사용자 데이터들에 대한 읽기 실패가 발생한 경우, 읽기 실패된 데이터들을 복구하는 동작이 예시적으로 설명된다.
설명의 편의상, 도 9에서는 도 8과 마찬가지로, 제 1 내지 제 3 레이드 패리티 데이터들(Parity 1~Parity3)이 생성된다고 가정된다. 또한, 도 9에서는, 모든 핫 페이지들에 저장된 사용자 데이터들에 대한 읽기 실패가 발생한다고 가정된다. 즉, 도 9에서는, 도 8과 달리, 제 1 및 제 5 사용자 데이터(DT1, DT5)에 대한 읽기 실패뿐만 아니라, 제 9 사용자 데이터(DT9)에 대한 읽기 실패도 발생한다고 가정된다.
이 경우, 제 1, 제 5, 제 9 사용자 데이터(DT1, DT5, DT9)에 대한 복구 동작을 수행하기 위해서는, 제 1, 제 5, 제 9 사용자 데이터(DT1, DT5, DT9) 중 어느 하나의 사용자 데이터가 저장되어야 한다.
이를 위하여, 본 발명의 실시 예에 따른 메모리 시스템(100)은 모든 핫 페이지들이 읽기 실패된 경우를 대비하여, 복수의 핫 페이지들 중 하나의 핫 페이지를 복수의 불휘발성 메모리들(도 3 참조) 중 어느 하나의 불휘발성 메모리에 저장할 수 있다. 예를 들어, 제 9 사용자 데이터(DT9)가 소정의 불휘발성 메모리에 저장되어 있는 경우, 메모리 시스템(100)은 도 9에 도시된 바와 같이 제 1 및 제 5 사용자 데이터(DT1, DT5)도 복구할 수 있다.
제 1 및 제 5 사용자 데이터(DT1, DT5)의 복구 동작은 도 8에서 설명된 바와 유사하므로, 자세한 설명은 생략된다.
도 10은 본 발명의 실시 예에 따른 데이터 관리 방법을 보여주는 순서도이다. 도 10에서는, 도 1 내지 도 9에서 설명된 본 발명의 실시 예에 따른 데이터 관리 방법이 좀더 자세히 설명된다.
S110 단계에서, 컨트롤러(120, 도 2 참조)는 호스트로부터 프로그램 명령 및 데이터를 수신한다. 수신된 데이터는 버퍼 메모리(124, 도 2 참조)에 임시로 저장된다.
S120 단계에서, 컨트롤러(120)는 본 발명의 실시 예에 따른 레이드 스킴(RAID scheme)을 수행할 것인지의 여부를 판단한다. 예를 들어, 프로그램될 데이터의 논리 주소(또는 물리 주소)가 핫 메모리 블록(hot memory block)에 대응하는 경우, 컨트롤러(120)는 본 발명의 실시 예에 따른 레이드 스킴을 적용할 것이다.
만약, 본 발명의 실시 예에 따른 레이드 스킴이 필요하지 않은 것으로 판단되면, 컨트롤러(120)는 일반적인 프로그램 동작을 수행할 것이다(S130 단계).
만약, 본 발명의 실시 예에 따른 레이드 스킴이 필요한 것으로 판단되면, 컨트롤러(120)는 본 발명의 실시 예에 따른 레이드 스킴에 따라 이하의 데이터 관리 동작을 수행할 것이다.
S140 단계에서, 데이터가 저장 장치(110, 도 1 참조)에 쓰여 진다. 즉, 도 6A 내지 도 6D에서 설명된 바와 같이, 버퍼 메모리(124)에 저장된 데이터가 저장 장치(110)에 프로그램된다. 이 경우, 데이터는 저장 장치(110) 내의 동일한 불휘발성 메모리에 프로그램될 수 있고, 저장 장치(110) 내의 서로 다른 불휘발성 메모리들에 분산되어 프로그램될 수 있다(도 3 참조). 한편, 버퍼 메모리(124)에 저장된 데이터는 프로그램 동작이 수행되기 전이나 프로그램 동작이 수행된 후에, 레이드 버퍼(126, 도 2 참조)로 전송된다.
S150 단계에서, 레이드 버퍼(126, 도 2 참조)에 저장된 데이터에 대한 XOR 연산이 수행된다. 즉, 도 6A 내지 도 6D에서 설명된 바와 같이, 레이드 컨트롤러(125, 도 2 참조)는 레이드 버퍼에 저장된 데이터에 대한 XOR 연산을 수행함으로써, 레이드 패리티 데이터(RAID Parity Data)를 생성한다.
이 경우, 레이드 컨트롤러(125)는 서로 다른 두 개의 핫 페이지들에 대응하는 데이터들을 이용하여 하나의 레이드 패리티 데이터를 생성하며, 레이드 패리티 데이터의 생성이 완료될 때까지 XOR 연산을 수행한다.
S160 단계에서, 레이드 패리티 데이터가 저장 장치(110)에 쓰여 진다. 즉, S150 단계에서 레이드 패리티 생성 동작이 완료되면, 생성된 레이드 패리티 데이터는 저장 장치(110)의 소정 영역에 프로그램된다. 이 후, S170 단계에서, 컨트롤러(120)는 레이드 버퍼(126)를 리셋(reset) 한다.
상술한 바와 같이, 본 발명의 실시 예에 따른 메모리 시스템(100)은 레이드(RAID) 기법을 사용하여 데이터의 손실을 방지한다. 특히, 본 발명의 실시 예에 따른 메모리 시스템(100)은 핫 메모리 블록(hot memory block)에 속하는 데이터의 신뢰성을 보장하기 위하여, 하나의 핫 페이지(hot page)에 저장될 데이터를 사용하여 서로 다른 복수의 레이드 패리티 데이터들(RAID parity data)을 생성한다. 따라서, 핫 페이지에 저장된 데이터의 손실을 방지할 수 있다.
한편, 도 1 내지 도 10에서 설명된 본 발명의 실시 예들은 예시적인 것들로 이해되어야 하며, 본 발명의 기술적 사상은 이에 한정되지 않는다. 예를 들어, 도 1 내지 도 10에서, 핫 메모리 블록은 다른 메모리 블록들에 비하여 소거 동작이 많이 수행된 블록으로 정의되었다. 다만 이는 예시적인 것이며, 본 발명의 기술적 사상은 이에 한정되지 않는다.
예를 들어, 본 발명의 기술적 사상은 3차원 메모리 셀에도 적용될 수 있다. 3차원 메모리 셀은 제조 공정상의 특이성으로 인하여, 공통 소스 라인에 인접하는 메모리 셀들의 데이터가 쉽게 손상될 수 있다. 이 경우, 핫 메모리 블록은 공통 소스 라인에 인접하는 메모리 셀들로 정의될 수 있다. 이하에서는 본 발명의 기술적 사상이 3차원 메모리 셀에 적용되는 경우의 실시 예가 예시적으로 설명된다.
도 11은 본 발명에 사용되는 플래시 메모리를 예시적으로 보여주는 블록도이다. 도 11을 참조하면, 플래시 메모리(1000)는 3차원 셀 어레이(1100), 데이터 입출력 회로(1200), 어드레스 디코더(1300), 그리고 제어 로직(1400)을 포함한다.
3차원 셀 어레이(1100)는 복수의 메모리 블록(BLK1~BLKz)을 포함한다. 각각의 메모리 블록은 3차원 구조 (또는 수직 구조)를 가질 수 있다. 2차원 구조 (또는 수평 구조)를 갖는 메모리 블록에서는, 메모리 셀들이 기판과 수평 방향으로 형성된다. 그러나 3차원 구조를 갖는 메모리 블록에서는, 메모리 셀들이 기판과 수직 방향으로 형성된다. 각각의 메모리 블록은 플래시 메모리(3100)의 소거 단위를 이룬다.
데이터 입출력 회로(1200)는 복수의 비트 라인(BLs)을 통해 3차원 셀 어레이(1100)와 연결된다. 데이터 입출력 회로(1200)는 외부로부터 데이터(DATA)를 입력받거나, 3차원 셀 어레이(1100)로부터 읽은 데이터(DATA)를 외부로 출력한다. 어드레스 디코더(1300)는 복수의 워드 라인(WLs) 및 선택 라인(GSL, SSL)을 통해 3차원 셀 어레이(1100)와 연결된다. 어드레스 디코더(1300)는 어드레스(ADDR)를 입력받고 워드 라인을 선택한다.
제어 로직(1400)은 플래시 메모리(1000)의 프로그램, 읽기, 소거 등의 동작을 제어한다. 예를 들면, 제어 로직(1400)은 프로그램 동작 시에, 어드레스 디코더(1300)를 제어함으로 선택 워드 라인으로 프로그램 전압이 제공되도록 하고, 데이터 입출력 회로(1200)를 제어함으로 데이터가 프로그램되도록 할 수 있다.
도 12는 도 11에 도시된 메모리 블록(BLK1)의 3차원 구조를 예시적으로 보여주는 사시도이다. 도 12를 참조하면, 메모리 블록(BLK1)은 기판(SUB)과 수직 방향으로 형성되어 있다. 기판(SUB)에는 n+ 도핑 영역이 형성된다. 기판(SUB) 위에는 게이트 전극막(gate electrode layer)과 절연막(insulation layer)이 교대로 증착된다. 그리고 게이트 전극막(gate electrode layer)과 절연막(insulation layer) 사이에는 전하 저장막(charge storage layer)이 형성될 수 있다.
게이트 전극막과 절연막을 수직 방향으로 패터닝(vertical patterning)하면, V자 모양의 필라(pillar)가 형성된다. 필라는 게이트 전극막과 절연막을 관통하여 기판(SUB)과 연결된다. 필라(Pillar)의 외곽 부분(O)은 채널 반도체로 구성될 수 있고, 내부(I)는 실리콘 산화물(Silicon Oxide)과 같은 절연 물질로 구성될 수 있다.
계속해서 도 12를 참조하면, 메모리 블록(BLK1)의 게이트 전극막(gate electrode layer)은 접지 선택 라인(GSL), 복수의 워드 라인(WL1~WL8), 그리고 스트링 선택 라인(SSL)에 연결될 수 있다. 그리고 메모리 블록(BLK1)의 필라(pillar)는 복수의 비트 라인(BL1~BL3)과 연결될 수 있다. 도 12에서는, 하나의 메모리 블록(BLK1)이 2개의 선택 라인(GSL, SSL), 8개의 워드 라인(WL1~WL8), 그리고 3개의 비트 라인(BL1~BL3)을 갖는 것으로 도시되어 있으나, 실제로는 이것들보다 더 많거나 적을 수 있다.
도 13은 도 12에 도시된 메모리 블록(BLK1)의 등가 회로도이다. 도 13을 참조하면, 비트 라인(BL1~BL3)과 공통 소스 라인(CSL) 사이에는 낸드 스트링(NS11~NS33)이 연결되어 있다. 각각의 낸드 스트링(예를 들면, NS11)은 스트링 선택 트랜지스터(SST), 복수의 메모리 셀(MC1~MC8), 그리고 접지 선택 트랜지스터(GST)를 포함한다.
스트링 선택 트랜지스터(SST)는 스트링 선택 라인(String Selection Line; SSL1~SSL3)에 연결되어 있다. 복수의 메모리 셀(MC1~MC8)은 각각 대응하는 워드 라인(WL1~WL8)에 연결되어 있다. 그리고 접지 선택 트랜지스터(GST)는 접지 선택 라인(Ground Selection Line; GSL1~GSL3)에 연결되어 있다. 스트링 선택 트랜지스터(SST)는 비트 라인(BL)에 연결되고, 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL; Common Source Line)에 연결되어 있다.
계속해서 도 13을 참조하면, 동일 높이의 워드 라인(예를 들면, WL1)은 공통으로 연결되어 있고, 접지 선택 라인(GSL1~GSL3) 및 스트링 선택 라인(SSL1~SSL3)은 분리되어 있다. 제 1 워드 라인(WL1)에 연결되어 있고 낸드 스트링(NS11, NS12, NS13)에 속해 있는 메모리 셀(이하, 페이지라 함)을 프로그램하는 경우에는, 제 1 워드 라인(WL1)과 제 1 선택 라인(SSL1, GSL1)이 선택된다.
다시 도 12 및 도 13을 참조하면, 3차원 메모리 블록의 경우, 필라의 직경은 공통 소스 라인(CSL)에 인접할 수 록 감소한다. 이는 공통 소스 라인(CSL)에 인접하는 메모리 셀들이 스트링 선택 라인(SSL)에 인접하는 메모리 셀들에 비하여 읽기 에러가 쉽게 발생할 수 있음을 의미한다.
본 발명의 기술적 사상에 따른 다른 실시 예에 있어서, 공통 소스 라인(CSL)에 인접하는 메모리 셀들은 핫 페이지들로 지정될 수 있다. 예를 들어, 도 12 및 도 13을 참조하면, 제 1 워드 라인(WL1)을 공유하는 메모리 셀들은 핫 페이지들로 지정될 수 있다. 이 경우, 핫 페이지들에 대응하는 데이터는 도 1 내지 도 10을 통하여 설명된 레이드 기법(RAID scheme)에 의하여 관리된다. 따라서, 핫 페이지들에 저장된 데이터의 손실을 방지할 수 있다.
도 12 및 도 13을 참조하여 좀더 자세히 설명하면, 공통 소스 라인(CSL)에 가장 인접하는 메모리 셀들은 제 1 워드 라인(WL1)을 공유한다. 이는 제 1 워드 라인(WL1)을 공유하는 메모리 셀들이 가장 작은 필라 직경에 대응함을 의미한다. 이 경우, 제 1 워드 라인(WL1)을 공유하며 제 1 스트링 선택 라인(SSL1)에 대응하는 메모리 셀들은 제 1 핫 페이지로 설정될 수 있다. 제 1 워드 라인(WL1)을 공유하며 제2 스트링 선택 라인(SSL2)에 대응하는 메모리 셀들은 제 2 핫 페이지로 설정될 수 있다. 마찬가지로, 제 1 워드 라인(WL1)을 공유하며 제 n 스트링 선택 라인(SSLn)에 대응하는 메모리 셀들은 제 n 핫 페이지로 설정될 수 있다.
이 경우, 핫 페이지들에 대응하는 데이터는 도 1 내지 도 10을 통하여 설명된 레이드 기법을 통하여 관리된다. 예를 들어, 제 1 핫 페이지에 속하는 데이터는 적어도 두 개의 레이드 페리티 데이터를 생성하는데 사용될 수 있다. 마찬가지로, 제 2 핫 페이지에 속하는 데이터는 적어도 두 개의 레이드 패리티 데이터를 생성하는데 사용될 수 있다. 따라서, 핫 페이지들에 저장된 데이터의 손실이 방지될 수 있다.
한편, 도 12 및 도 13에 있어서, 레이드 패리티 데이터는 다양한 방식으로 생성될 수 있다. 예를 들어, 하나의 레이드 패리티 데이터는 서로 다른 두 개의 핫 페이지와 복수의 노멀 페이지들을 이용하여 생성될 수 있다. 여기서, 노멀 페이지는 제 1 워드(WL1)을 제외한 다른 워드 라인에 대응하는 페이지일 수 있다.
이 경우, 하나의 레이드 패리티 데이터를 구성하는 노멀 페이지들은 각각 서로 다른 워드 라인에 대응할 수 있다. 즉, 하나의 레이드 패리티 데이터를 구성하는 노멀 페이지들은 각각 서로 다른 필라 직경에 대응할 수 있다.
한편, 도 1 내지 도 13을 참조하여 설명된 본 발명의 기술적 사상은 다양하게 적용 및 응용될 수 있다. 이하에서는, 본 발명의 기술적 사상의 다양한 응용 예 및 적용 예들이 설명된다.
도 14는 본 발명의 실시 예에 따른 불휘발성 메모리 장치를 메모리 카드 시스템에 적용한 예를 보여주는 블록도이다. 메모리 카드 시스템(2000)은 호스트(2100)와 메모리 카드(2200)를 포함한다. 호스트(2100)는 호스트 컨트롤러(2110), 호스트 접속 유닛(2120), 그리고 디램(2130)을 포함한다.
호스트(2100)는 메모리 카드(2200)에 데이터를 쓰거나, 메모리 카드(2200)에 저장된 데이터를 읽는다. 호스트 컨트롤러(2110)는 커맨드(예를 들면, 쓰기 커맨드), 호스트(2100) 내의 클록 발생기(도시되지 않음)에서 발생한 클록 신호(CLK), 그리고 데이터(DAT)를 호스트 접속 유닛(3220)을 통해 메모리 카드(2200)로 전송한다. 디램(2130)은 호스트(2100)의 메인 메모리이다.
메모리 카드(2200)는 카드 접속 유닛(2210), 카드 컨트롤러(2220), 그리고 플래시 메모리(1230)를 포함한다. 카드 컨트롤러(2220)는 카드 접속 유닛(2210)을 통해 수신된 커맨드에 응답하여, 카드 컨트롤러(2220) 내에 있는 클록 발생기(도시되지 않음)에서 발생한 클록 신호에 동기하여 데이터를 플래시 메모리(1230)에 저장한다. 플래시 메모리(1230)는 호스트(2100)로부터 전송된 데이터를 저장한다. 예를 들어, 호스트(2100)가 디지털 카메라인 경우에는 영상 데이터를 저장한다.
도 14에 도시된 메모리 카드 시스템(2000)은, 앞에서 설명한 바와 같이, 레이드(RAID) 기법을 사용하여 데이터의 손실을 방지한다. 특히, 본 발명의 실시 예에 따른 카드 시스템(2000)은 핫 메모리 블록(hot memory block)에 속하는 데이터의 신뢰성을 보장하기 위하여, 하나의 핫 페이지(hot page)에 저장될 데이터를 사용하여 서로 다른 복수의 레이드 패리티 데이터들(RAID parity data)을 생성한다. 따라서, 핫 페이지에 저장된 데이터의 손실을 방지할 수 있다.
도 15는 본 발명의 실시 예에 따른 불휘발성 메모리 장치를 솔리드 스테이트 드라이브(SSD) 시스템에 적용한 예를 보여주는 블록도이다. 도 15를 참조하면, SSD 시스템(3000)은 호스트(3100)와 SSD(3200)를 포함한다. 호스트(3100)는 호스트 인터페이스(3111), 호스트 컨트롤러(3120), 그리고 디램(3130)을 포함한다.
호스트(3100)는 SSD(3200)에 데이터를 쓰거나, SSD(3200)에 저장된 데이터를 읽는다. 호스트 컨트롤러(3120)는 커맨드, 어드레스, 제어 신호 등의 신호(SGL)를 호스트 인터페이스(3111)를 통해 SSD(3200)로 전송한다. 디램(3130)은 호스트(3100)의 메인 메모리이다.
SSD(3200)는 호스트 인터페이스(3211)를 통해 호스트(3100)와 신호(SGL)를 주고 받으며, 전원 커넥터(power connector, 6221)를 통해 전원을 입력받는다. SSD(3200)는 복수의 불휘발성 메모리(3201~220n0), SSD 컨트롤러(23100), 그리고 보조 전원 장치(3220)를 포함할 수 있다. 여기에서, 복수의 불휘발성 메모리(3201~220n0)는 낸드 플래시 메모리 이외에도 PRAM, MRAM, ReRAM, FRAM 등으로 구현될 수 있다.
복수의 불휘발성 메모리(3201~320n0)는 SSD(3200)의 저장 매체로서 사용된다. 복수의 불휘발성 메모리(3201~320n0)는 복수의 채널(CH1~CHn)을 통해 SSD 컨트롤러(3210)와 연결될 수 있다. 하나의 채널에는 하나 또는 그 이상의 불휘발성 메모리가 연결될 수 있다. 하나의 채널에 연결되는 불휘발성 메모리는 동일한 데이터 버스에 연결될 수 있다.
SSD 컨트롤러(3210)는 호스트 인터페이스(3211)를 통해 호스트(3100)와 신호(SGL)를 주고 받는다. 여기에서, 신호(SGL)에는 커맨드, 어드레스, 데이터 등이 포함될 수 있다. SSD 컨트롤러(3210)는 호스트(3100)의 커맨드에 따라 해당 불휘발성 메모리에 데이터를 쓰거나 해당 불휘발성 메모리로부터 데이터를 읽어낸다. SSD 컨트롤러(3210)의 내부 구성은 도 15를 참조하여 상세하게 설명된다.
보조 전원 장치(3220)는 전원 커넥터(3211)를 통해 호스트(3100)와 연결된다. 보조 전원 장치(3220)는 호스트(3100)로부터 전원(PWR)을 입력받고, 충전할 수 있다. 한편, 보조 전원 장치(3220)는 SSD(3200) 내에 위치할 수도 있고, SSD(3200) 밖에 위치할 수도 있다. 예를 들면, 보조 전원 장치(3220)는 메인 보드에 위치하며, SSD(3200)에 보조 전원을 제공할 수도 있다.
도 16은 도 15에 도시된 SSD 컨트롤러(3210)의 구성을 예시적으로 보여주는 블록도이다. 도 16을 참조하면, SSD 컨트롤러(3210)는 NVM 인터페이스(3211), 호스트 인터페이스(3212), 레이드 유닛(3213), 제어 유닛(3214), 그리고 에스램(3215)을 포함한다.
NVM 인터페이스(3211)는 호스트(3100)의 메인 메모리로부터 전달된 데이터를 각각의 채널들(CH1~CHn)로 스캐터링(Scattering)한다. 그리고 NVM 인터페이스(3211)는 불휘발성 메모리(3201~220n0)로부터 읽은 데이터를 호스트 인터페이스(3212)를 경유하여 호스트(3100)로 전달한다.
호스트 인터페이스(3212)는 호스트(3100)의 프로토콜에 대응하여 SSD(3200)와의 인터페이싱을 제공한다. 호스트 인터페이스(3212)는 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI) 등을 이용하여 호스트(3100)와 통신할 수 있다. 또한, 호스트 인터페이스(3212)는 호스트(3100)가 SSD(3200)를 하드 디스크 드라이브(HDD)로 인식하도록 지원하는 디스크 에뮬레이션(Disk Emulation) 기능을 수행할 수 있다.
레이드 유닛(3213)은, 도 1에서 설명된 바와 같이, 핫 메모리 블록(hot memory block)에 속하는 데이터의 신뢰성을 보장하기 위하여, 하나의 핫 페이지(hot page)에 저장될 데이터를 사용하여 서로 다른 복수의 레이드 패리티 데이터들(RAID parity data)을 생성한다. 따라서, 핫 페이지에 저장된 데이터의 손실을 방지할 수 있다.
제어 유닛(3214)이 전반적인 동작을 수행하는 데 필요한 워크 메모리(work memory)로 사용될 수 있다. 또한, DRAM(3214)은 데이터를 임시로 저장하기 위한 버퍼로 사용될 수 있다.
에스램(3215)은 불휘발성 메모리(3201~320n0)의 효율적 관리를 위해 사용되는 소프트웨어(S/W)를 구동하는 데 사용될 수 있다. 또한, 에스램(3215)은 호스트(3100)의 메인 메모리로부터 입력받은 메타 데이터를 저장하거나, 캐시 데이터를 저장할 수 있다. 서든 파워 오프 동작 시에, 에스램(3215)에 저장된 메타 데이터나 캐시 데이터는 보조 전원 장치(3220)를 이용하여 불휘발성 메모리(3201~320n0)에 저장될 수 있다.
다시 도 15를 참조하면, 본 발명의 실시 예에 따른 SSD 시스템(40000)은, 앞에서 설명한 바와 같이, 핫 메모리 블록(hot memory block)에 속하는 데이터의 신뢰성을 보장하기 위하여, 하나의 핫 페이지(hot page)에 저장될 데이터를 사용하여 서로 다른 복수의 레이드 패리티 데이터들(RAID parity data)을 생성한다. 따라서, 핫 페이지에 저장된 데이터의 손실을 방지할 수 있다.
도 17은 본 발명의 실시 예에 따른 메모리 시스템을 전자 장치로 구현한 예를 보여주는 블록도이다. 여기에서, 전자 장치(4000)는 퍼스널 컴퓨터(PC)로 구현되거나, 노트북 컴퓨터, 휴대폰, PDA(Personal Digital Assistant), 그리고 카메라 등과 같은 휴대용 전자 장치로 구현될 수 있다.
도 17을 참조하면, 전자 장치(4000)는 메모리 시스템(4100), 전원 장치(4200), 보조 전원 장치(32500), 중앙처리장치(4300), 디램(44000), 그리고 사용자 인터페이스(4500)를 포함한다. 메모리 시스템(4100)은 플래시 메모리(4110) 및 메모리 컨트롤러(4120)를 포함한다. 메모리 시스템(4100)은 전자 장치(4000)에 내장될 수 있다.
앞에서 설명한 바와 같이, 본 발명에 따른 전자 장치(4000)는 핫 메모리 블록(hot memory block)에 속하는 데이터의 신뢰성을 보장하기 위하여, 하나의 핫 페이지(hot page)에 저장될 데이터를 사용하여 서로 다른 복수의 레이드 패리티 데이터들(RAID parity data)을 생성한다. 따라서, 핫 페이지에 저장된 데이터의 손실을 방지할 수 있다.
본 발명의 범위 또는 기술적 사상을 벗어나지 않고 본 발명의 구조가 다양하게 수정되거나 변경될 수 있음은 이 분야에 숙련된 자들에게 자명하다. 상술한 내용을 고려하여 볼 때, 만약 본 발명의 수정 및 변경이 아래의 청구항들 및 동등물의 범주 내에 속한다면, 본 발명이 이 발명의 변경 및 수정을 포함하는 것으로 여겨진다.
100: 메모리 시스템
110: 저장 장치
120: 컨트롤러
121: 프로세서
122: 롬
123: 버퍼 컨트롤러
124: 버퍼 메모리
125: 레이드 컨트롤러
126: 레이드 버퍼
127: 호스트 인터페이스
128: NVM 인터페이스
RAID: Redundant Array of Independent Disk

Claims (10)

  1. 복수의 메모리 블록들을 포함하는 불휘발성 메모리; 및
    상기 불휘발성 메모리를 제어하는 컨트롤러를 포함하며,
    상기 컨트롤러는 상기 복수의 메모리 블록들 중 적어도 하나의 메모리 블록을 핫 메모리 블록으로 지정하고, 상기 핫 메모리 블록의 복수의 핫 페이지들 중 하나의 핫 페이지를 사용하여 적어도 두 개의 레이드 패리티 데이터를 생성하는 불휘발성 메모리 장치.
  2. 제 1 항에 있어서,
    상기 컨트롤러는 상기 복수의 핫 페이지들 중 제 1 핫 페이지에 대응하는 데이터를 이용하여 제 1 및 제 2 레이드 패리티 데이터를 생성하며,
    상기 제 1 핫 페이지에 대응하는 데이터와 상기 제 1 레이드 패리티 데이터는 동일한 쓰기 스트라이프를 구성하고, 상기 제 1 핫 페이지에 대응하는 데이터와 상기 제 2 레이드 패리티 데이터는 서로 다른 쓰기 스트라이프를 구성하는 불휘발성 메모리 장치.
  3. 제 2 항에 있어서,
    상기 컨트롤러는 상기 제 1 핫 페이지에 대응하는 데이터 및 상기 복수의 핫 페이지들 중 제 2 핫 페이지에 대응하는 데이터에 대한 XOR 연산을 수행함으로써, 상기 제 1 레이드 패리티 데이터를 생성하는 불휘발성 메모리 장치.
  4. 제 3 항에 있어서,
    상기 제 2 핫 페이지에 대응하는 데이터와 상기 제 2 레이드 패리티 데이터는 동일한 쓰기 스트라이프를 구성하는 불휘발성 메모리 장치.
  5. 제 3 항에 있어서,
    상기 컨트롤러는
    상기 제 1 핫 페이지에 대응하는 데이터 및 상기 제 2 핫 페이지에 대응하는 데이터를 저장하는 제 1 버퍼; 및
    상기 XOR 연산의 결과 값을 저장하는 제 2 버퍼를 포함하는 불휘발성 메모리 장치.
  6. 제 5 항에 있어서,
    상기 제 1 핫 페이지에 대응하는 데이터 및 상기 제 2 핫 페이지에 대응하는 데이터는 상기 제 1 레이드 패리티 데이터의 생성이 완료될 때까지, 상기 제 1 버퍼에서 유지되는 불휘발성 메모리 장치.
  7. 제 6 항에 있어서,
    상기 제 1 레이드 패리티 데이터의 생성이 완료된 후에, 상기 제 2 버퍼에 저장된 데이터는 리셋되는 불휘발성 메모리 장치.
  8. 복수의 메모리 블록들을 포함하는 불휘발성 메모리 장치의 데이터 관리 방법에 있어서:
    상기 복수의 메모리 블록들 중 핫 메모리 블록에 저장될 제 1 및 제 2 데이터를 제 1 버퍼에 저장하는 단계;
    상기 제 1 버퍼에 저장된 상기 제 1 데이터를 제 2 버퍼로 전송하고, 상기 제 1 데이터를 상기 핫 메모리 블록에 프로그램하는 단계; 및
    상기 제 2 버퍼에 저장된 제 1 데이터와 상기 제 2 데이터를 이용하여, 상기 제 1 데이터와 동일한 스트라이프를 구성하는 레이드 패리티 데이터를 생성하는 단계를 포함하는 불휘발성 메모리 장치의 데이터 관리 방법.
  9. 제 8 항에 있어서,
    상기 레이드 패리티 데이터가 생성될 때까지, 상기 제 2 데이터는 상기 제 1 버퍼에서 유지되는 불휘발성 메모리 장치의 데이터 관리 방법.
  10. 제 8 항에 있어서,
    상기 레이드 패리티 데이터를 생성하는 단계는
    상기 제 1 데이터, 상기 제 2 데이터, 그리고 상기 제 1 데이터와 동일한 스트라이프를 구성하는 적어도 하나의 사용자 데이터에 대한 XOR 연산을 수행함으로써 상기 레이드 패리티 데이터를 생성하는 불휘발성 메모리 장치의 데이터 관리 방법.
KR1020120080206A 2012-07-23 2012-07-23 불휘발성 메모리 장치 및 그것의 데이터 관리 방법 KR101925383B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120080206A KR101925383B1 (ko) 2012-07-23 2012-07-23 불휘발성 메모리 장치 및 그것의 데이터 관리 방법
US13/935,593 US9335955B2 (en) 2012-07-23 2013-07-05 Nonvolatile memory device and related data management method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120080206A KR101925383B1 (ko) 2012-07-23 2012-07-23 불휘발성 메모리 장치 및 그것의 데이터 관리 방법

Publications (2)

Publication Number Publication Date
KR20140013392A KR20140013392A (ko) 2014-02-05
KR101925383B1 true KR101925383B1 (ko) 2018-12-05

Family

ID=49947546

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120080206A KR101925383B1 (ko) 2012-07-23 2012-07-23 불휘발성 메모리 장치 및 그것의 데이터 관리 방법

Country Status (2)

Country Link
US (1) US9335955B2 (ko)
KR (1) KR101925383B1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015018451A (ja) * 2013-07-11 2015-01-29 株式会社東芝 メモリコントローラ、記憶装置およびメモリ制御方法
CN105094685B (zh) 2014-04-29 2018-02-06 国际商业机器公司 进行存储控制的方法和设备
KR102318561B1 (ko) * 2014-08-19 2021-11-01 삼성전자주식회사 스토리지 장치, 스토리지 장치의 동작 방법
KR102368071B1 (ko) 2014-12-29 2022-02-25 삼성전자주식회사 레이드 스토리지 시스템에서의 스트라이프 재구성 방법 및 이를 적용한 가비지 컬렉션 동작 방법 및 레이드 스토리지 시스템
US9747177B2 (en) 2014-12-30 2017-08-29 International Business Machines Corporation Data storage system employing a hot spare to store and service accesses to data having lower associated wear
US10073685B2 (en) 2015-01-19 2018-09-11 SK Hynix Inc. Methods of system optimization by over-sampling read
KR102280433B1 (ko) * 2015-09-23 2021-07-22 삼성전자주식회사 전력 공급 회로 및 이를 포함하는 저장 장치
KR102572357B1 (ko) 2016-02-03 2023-08-29 삼성전자주식회사 Raid-6 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US10318378B2 (en) * 2016-02-25 2019-06-11 Micron Technology, Inc Redundant array of independent NAND for a three-dimensional memory array
KR20180051703A (ko) * 2016-11-07 2018-05-17 삼성전자주식회사 Raid 방식으로 데이터를 저장하는 스토리지 장치
US10241877B2 (en) 2016-12-12 2019-03-26 International Business Machines Corporation Data storage system employing a hot spare to proactively store array data in absence of a failure or pre-failure event
KR20200085519A (ko) * 2019-01-07 2020-07-15 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
CN114503082B (zh) * 2019-10-09 2024-01-30 美光科技公司 配备有数据保护方案的存储器装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100255847B1 (ko) 1995-12-29 2000-05-01 김영환 레이드 제어기에서의 스트라이프 기록 방법
US20080010580A1 (en) 2005-06-27 2008-01-10 Seagate Technology Llc Redundancy for storage data structures
US20080250270A1 (en) 2007-03-29 2008-10-09 Bennett Jon C R Memory management system and method
US20090287956A1 (en) 2008-05-16 2009-11-19 David Flynn Apparatus, system, and method for detecting and replacing failed data storage
US20100325522A1 (en) 2008-02-28 2010-12-23 Fujitsu Limited Storage device, storage control device, data transfer intergrated circuit, and storage control method
US20110066793A1 (en) 2009-09-15 2011-03-17 Gregory Burd Implementing RAID In Solid State Memory
US20120151253A1 (en) 2010-12-14 2012-06-14 Western Digital Technologies, Inc. System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090204758A1 (en) 2008-02-13 2009-08-13 Dell Products, Lp Systems and methods for asymmetric raid devices
JP2010079445A (ja) 2008-09-24 2010-04-08 Toshiba Corp Ssd装置
US8639877B2 (en) 2009-06-30 2014-01-28 International Business Machines Corporation Wear leveling of solid state disks distributed in a plurality of redundant array of independent disk ranks
US8234520B2 (en) 2009-09-16 2012-07-31 International Business Machines Corporation Wear leveling of solid state disks based on usage information of data and parity received from a raid controller
KR101678868B1 (ko) 2010-02-11 2016-11-23 삼성전자주식회사 플래시 주소 변환 장치 및 그 방법
KR101778782B1 (ko) 2011-04-08 2017-09-27 삼성전자주식회사 데이터 저장 장치 및 그것의 동작 방법

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100255847B1 (ko) 1995-12-29 2000-05-01 김영환 레이드 제어기에서의 스트라이프 기록 방법
US20080010580A1 (en) 2005-06-27 2008-01-10 Seagate Technology Llc Redundancy for storage data structures
US20080250270A1 (en) 2007-03-29 2008-10-09 Bennett Jon C R Memory management system and method
US20100325522A1 (en) 2008-02-28 2010-12-23 Fujitsu Limited Storage device, storage control device, data transfer intergrated circuit, and storage control method
US20090287956A1 (en) 2008-05-16 2009-11-19 David Flynn Apparatus, system, and method for detecting and replacing failed data storage
US20110066793A1 (en) 2009-09-15 2011-03-17 Gregory Burd Implementing RAID In Solid State Memory
US20120151253A1 (en) 2010-12-14 2012-06-14 Western Digital Technologies, Inc. System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss

Also Published As

Publication number Publication date
KR20140013392A (ko) 2014-02-05
US20140025887A1 (en) 2014-01-23
US9335955B2 (en) 2016-05-10

Similar Documents

Publication Publication Date Title
KR101925383B1 (ko) 불휘발성 메모리 장치 및 그것의 데이터 관리 방법
US10496312B2 (en) Method of operating a storage device to compress or decompress data and a data storage system including the storage device
KR20130081534A (ko) 저장 장치 및 불휘발성 메모리 장치, 그리고 그것의 동작 방법
KR20180062246A (ko) 재분배기를 포함하는 메모리 시스템
KR20140001535A (ko) 스토리지 시스템 및 그것의 데이터 관리 방법
CN111813328A (zh) 存储器系统及其操作方法
KR102340094B1 (ko) 메모리 시스템 및 그의 동작 방법
CN113010095A (zh) 存储器系统、存储器控制器及其操作方法
US11561725B2 (en) System and operating method thereof
CN113936721A (zh) 存储器系统、存储器装置和操作存储器装置的方法
KR20220049109A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR20220089854A (ko) Ufs 장치 및 ufs 장치의 동작 방법
CN116126213A (zh) 存储装置共享系统及其操作方法
KR20230064279A (ko) 메모리 시스템에서 데이터를 복구하는 장치 및 방법
KR20230049858A (ko) 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법
KR20220068535A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR20220070989A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR20210152706A (ko) 메모리 장치, 메모리 시스템 및 메모리 장치의 동작 방법
CN112748871A (zh) 存储器系统、存储器控制器以及存储器控制器的操作方法
KR20230072062A (ko) 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
KR20220067070A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR20220025401A (ko) 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
KR20220163661A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR20220168510A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR20230020744A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant