KR20210041158A - 기입 오류가 발생한 데이터를 복구하는 메모리 시스템 및 호스트의 동작 방법 - Google Patents

기입 오류가 발생한 데이터를 복구하는 메모리 시스템 및 호스트의 동작 방법 Download PDF

Info

Publication number
KR20210041158A
KR20210041158A KR1020190123347A KR20190123347A KR20210041158A KR 20210041158 A KR20210041158 A KR 20210041158A KR 1020190123347 A KR1020190123347 A KR 1020190123347A KR 20190123347 A KR20190123347 A KR 20190123347A KR 20210041158 A KR20210041158 A KR 20210041158A
Authority
KR
South Korea
Prior art keywords
write
host
error
recovery
memory system
Prior art date
Application number
KR1020190123347A
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 KR1020190123347A priority Critical patent/KR20210041158A/ko
Priority to US16/858,959 priority patent/US11288183B2/en
Priority to CN202010825267.XA priority patent/CN112612639A/zh
Publication of KR20210041158A publication Critical patent/KR20210041158A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers
    • 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
    • G11C2029/0409Online test
    • 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
    • G11C2029/0411Online error correction
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents

Landscapes

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

Abstract

본 개시의 기술적 사상에 따른 메모리 장치를 포함하는 메모리 시스템의 동작 방법은, 호스트의 기입 요청에 응답하여, 호스트로부터 수신한 기입 데이터 및 물리 어드레스를 버퍼에 저장하는 단계, 기입 데이터 및 물리 어드레스를 기초로 메모리 장치에 대한 기입 동작을 수행하는 단계, 기입 오류가 발생하면 비동기 방식으로 호스트에 오류 발생 정보를 제공하는 단계 및 기입 오류가 발생한 기입 데이터 및 기입 오류의 복구에 이용되는 정보를 호스트에 제공하는 단계를 포함할 수 있다.

Description

기입 오류가 발생한 데이터를 복구하는 메모리 시스템 및 호스트의 동작 방법{OPERATING METHOD OF MEMORY SYSTEM AND HOST RECOVERING DATA WITH WRITE ERROR}
본 개시의 기술적 사상은 메모리 시스템, 호스트 및 이의 동작 방법에 관한 것으로서, 구체적으로 기입 오류가 발생한 데이터를 복구하는 메모리 시스템, 호스트 및 이의 동작 방법에 관한 것이다.
메모리 시스템은 플래시 변환 계층을 구비한 일반 SSD(Solid State Drive) 또는 플래시 변환 계층을 구비하지 않는 오픈 채널 SDD(Open Channel SSD)를 포함할 수 있다. 오픈 채널 SSD는 논리 어드레스와 저장 장치의 물리 어드레스를 맵핑하는 주소 맵핑 기능을 지원하지 않으므로, 내부에 발생한 기입 오류를 호스트에서 처리하도록 할 수 있다.
본 개시의 기술적 사상은 기입 오류가 발생한 데이터의 복구에 필요한 정보를 메모리 시스템이 생성하고, 호스트가 생성된 정보를 기초로 복구를 수행함에 따라 신뢰성 및 효율성이 향상된 메모리 시스템, 호스트 및 이의 동작 방법을 제공한다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따른 메모리 시스템의 동작 방법은, 호스트의 기입 요청에 응답하여, 호스트로부터 수신한 기입 데이터 및 물리 어드레스를 버퍼에 저장하는 단계, 기입 데이터 및 물리 어드레스를 기초로 메모리 장치에 대한 기입 동작을 수행하는 단계, 기입 오류가 발생하면 비동기 방식으로 호스트에 오류 발생 정보를 제공하는 단계 및 기입 오류가 발생한 기입 데이터 및 기입 오류의 복구에 이용되는 정보를 호스트에 제공하는 단계를 포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따른 메모리 시스템을 제어하는 호스트의 동작 방법은, 호스트에서, 기입 데이터 및 물리 어드레스에 기초하여 제1 기입 요청을 메모리 시스템에 전송하는 단계, 호스트에서, 메모리 시스템에서 발생한 기입 오류에 대한 오류 발생 정보를 메모리 시스템으로부터 비동기 방식으로 획득하는 단계, 호스트에서, 기입 오류가 발생한 기입 데이터 및 기입 오류의 복구에 이용되는 정보를 메모리 시스템으로부터 획득하는 단계, 호스트에서, 기입 오류가 발생한 기입 데이터 및 기입 오류의 복구에 이용되는 정보를 기초로 기입 오류가 발생한 기입 데이터를 복구하는 단계 및 호스트에서, 복구한 기입 데이터를 기초로 제2 기입 요청을 메모리 시스템에 전송하는 단계를 포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따른 컴퓨팅 시스템은, 메모리 장치를 포함하는 메모리 시스템 및 기입 데이터 및 물리 어드레스에 기초하여 기입 요청을 메모리 시스템에 전송하는 호스트를 포함하고, 메모리 시스템은, 호스트의 기입 요청에 응답하여, 호스트로부터 수신한 기입 데이터 및 물리 어드레스를 메모리 시스템의 버퍼에 저장하고, 기입 데이터 및 물리 어드레스를 기초로 메모리 장치에 대한 기입 동작을 수행하고, 기입 오류가 발생하면 비동기 방식으로 호스트에 오류 발생 정보를 제공하고, 기입 오류가 발생한 기입 데이터 및 기입 오류의 복구에 이용되는 정보를 호스트에 제공하고, 호스트는, 기입 오류가 발생한 기입 데이터 및 기입 오류의 복구에 이용되는 정보를 기초로 기입 오류가 발생한 기입 데이터를 복구하고, 복구한 기입 데이터를 기초로 복구 명령을 메모리 시스템에 전송할 수 있다.
본 개시의 예시적 실시예에 따른 메모리 시스템 및 호스트의 동작 방법에 의하면, 메모리 시스템이 자체적으로 기입 오류에 대한 복구를 수행할 수 있더라도, 복구 동작을 수행하는 과정에서 많은 연산 자원을 가지고 있는 호스트를 활용할 수 있으므로, 메모리 시스템 내에 수행 중인 다른 연산이 많은 경우에 메모리 시스템의 성능 향상을 기대할 수 있다.
또한, 메모리 시스템이 오픈 채널 SSD 등에 해당하여 자체적으로 기입 오류에 대한 복구를 수행할 수 없더라도, 호스트가 복구 동작을 수행할 수 있다. 또한, 호스트가 아닌 메모리 시스템이 기입 오류의 복구에 이용되는 정보를 생성함으로써, 호스트의 리소스의 활용도가 높아질 수 있다.
도 1은 본 개시의 일 실시예에 따른 컴퓨팅 시스템을 나타내는 블록도이다.
도 2는 도 1의 컴퓨팅 시스템의 구체적인 구현 예를 나타내는 블록도이다.
도 3은 본 개시의 일 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 4는 본 개시의 일 실시예에 따른 메모리 컨트롤러를 나타내는 도면이다.
도 5는 본 개시의 일 실시예에 따른 메모리 시스템의 동작 방법을 나타내는 순서도이다.
도 6은 본 개시의 일 실시예에 따른 기입 오류의 복구에 이용되는 정보의 예를 나타내는 도면이다.
도 7은 본 개시의 일 실시예에 따른 호스트의 복구 방법을 나타내는 순서도이다.
도 8은 본 개시의 일 실시예에 따른 복수의 기입 오류가 발생 시 호스트의 복구 방법을 나타내는 순서도이다.
도 9는 본 개시의 일 실시예에 따른 복수의 기입 오류가 발생 시 호스트의 복구 방법을 나타내는 순서도이다.
도 10은 본 개시의 일 실시예에 따른 메타 데이터를 이용한 호스트의 복구 동작을 나타내는 순서도이다.
도 11은 본 개시의 예시적인 실시예에 따른 컴퓨팅 시스템에서, 기입 오류의 복구에 관련된 호스트와 메모리 시스템 각각의 동작을 나타내는 개념도이다.
도 12는 본 개시의 일 실시예에 따른 HMB(Host Memory Buffer)를 포함한 컴퓨팅 시스템의 블록도이다.
도 13은 본 개시의 일 실시예에 따른 CMB(Controller Memory Buffer)를 포함한 컴퓨팅 시스템의 블록도이다.
도 14는 본 개시의 일 실시예에 따른 HPB(Host-aware Performance Booster)를 이용한 컴퓨팅 시스템의 블록도이다.
도 15는 본 개시의 일 실시예에 따른 HPB를 이용한 컴퓨팅 시스템의 복구 방법을 나타내는 순서도이다.
도 1은 본 개시의 일 실시예에 따른 컴퓨팅 시스템을 나타내는 블록도이다.
도 1을 참조하면, 컴퓨팅 시스템(1000)은 메모리 시스템(100) 및 호스트(200)를 포함할 수 있다. 컴퓨팅 시스템(1000)은 데이터를 저장하는 메모리 시스템(100)이 장착된 다양한 종류의 시스템일 수 있다. 일 예로서, 컴퓨팅 시스템(1000)은 컴퓨터, 넷북(net-book), 웹 타블렛(web tablet), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트 폰(smart phone), e-북(e-book), 네비게이션(navigation) 장치, 디지털 카메라(digital camera), 웨어러블(wearable) 장치, IoT(internet of things;) 장치, IoE(internet of everything:) 장치, e-북(e-book), VR(virtual reality) 장치 및 AR(augmented reality) 장치 등 다양한 종류의 시스템에 해당할 수 있다.
메모리 시스템(100)은 메모리 컨트롤러(110) 및 메모리 장치(120)를 포함할 수 있다. 메모리 시스템(100)은 하나 이상의 저장 매체들을 포함할 수 있다. 일 예로서, 메모리 시스템(100)은 하나 이상의 SSD(Solid State Drive)를 포함할 수 있다. 한편, 메모리 시스템(100)은 하나 이상의 오픈 채널 SSD(Open Channel SSD)를 포함할 수도 있다. 여기서 오픈 채널 SSD는 플래시 변환 계층(Flash Translation Layer, FTL)이 포함되지 않은 SSD를 의미한다. 오픈 채널 SSD는 호스트에서 제공되는 논리 어드레스와 저장 장치의 물리 어드레스를 맵핑할 수 있는 플래시 변환 계층(FTL)을 구비하지 않으므로 직접 어드레스들을 관리할 수 없다. 이에 따라, 오픈 채널 SSD는 호스트(200)로부터 논리 어드레스가 아닌 물리 어드레스를 수신하여 기입/독출/소거 동작 등을 수행할 수 있다. 또한, 오픈 채널 SSD는 저장 장치에 오류가 발생하더라도, 복구한 데이터를 임의로 다른 어드레스에 저장할 수 없어 호스트(200)를 통해 복구 동작을 수행할 수 있다. 한편, 실시 예에 따라 오픈 채널 SSD는 호스트에서 제공되는 논리 어드레스와 저장 장치의 물리 어드레스 사이의 관계를 정의하는 맵핑 정보를 포함할 수는 있으나, 오픈 채널 SSD는 맵핑 정보를 이용하여 직접 어드레스를 관리할 수는 없다.
호스트(200)는 메모리 시스템(100)으로 데이터의 억세스 요청을 제공할 수 있다. 일 예로서, 호스트(200)는 메모리 시스템(100)으로 데이터의 기입 또는 독출 요청을 제공하고, 메모리 시스템(100)은 호스트(200)로부터의 억세스 요청에 따라 데이터를 메모리 장치(120)에 기입하거나, 또는 메모리 장치(120)로부터 데이터를 독출하여 호스트(200)로 제공할 수 있다. 또한, 호스트(200)로부터의 데이터 소거 요청에 따라, 메모리 시스템(100)은 호스트(200)로부터 지시되는 영역의 데이터에 대한 소거 동작을 수행할 수 있다.
메모리 시스템(100)이 일반적인 SSD인 경우, 일반적으로 호스트(200)는 논리 어드레스 기초로 억세스 요청을 메모리 시스템(100)에 제공할 수 있다. 그러나 메모리 시스템(100)이 오픈 채널 SSD이거나, 호스트(200)가 논리 어드레스와 메모리 장치(120)의 물리 어드레스 사이의 관계를 정의하는 맵핑 정보를 구비하고 있는 경우, 호스트(200)는 메모리 시스템(100)의 물리 어드레스에 기초하여 메모리 시스템(100)으로 억세스 요청을 제공하는 식으로 구현될 수 있다. 예컨대, 호스트(200)는 맵핑 정보를 이용하여 물리 어드레스를 결정하고, 결정한 물리 어드레스에 기초하여 메모리 시스템(100)으로 억세스 요청을 제공할 수 있다. 그리고 메모리 시스템(100)은 호스트(200)로부터 수신한 물리 어드레스를 기초로 기입 동작, 독출 동작 또는 소거 동작을 수행할 수 있다.
호스트(200)는 복구 모듈(210)을 포함할 수 있다. 복구 모듈(210)은 다양한 형태로 구현되어 호스트(200)에 구비될 수 있다. 예컨대, 복구 모듈(210)은 오류가 발생한 데이터의 복구와 관련된 각종 처리를 수행하기 위한 회로 등과 같은 하드웨어(HW)로 구현될 수 있다. 또는, 복구 모듈(210)은 프로그램을 포함하는 소프트웨어(SW)로 구현될 수 있으며, 호스트(200) 내 프로세싱 유닛이 동작 메모리에 로딩된 복구 모듈(210)을 실행함에 의해 오류가 발생한 데이터의 복구와 관련된 각종 처리를 수행할 수 있다. 또는, 복구 모듈(210)은 하드웨어(HW)와 소프트웨어(SW)의 조합으로 구현될 수 있다.
복구 모듈(210)은 오류가 발생한 데이터를 복구하는 기능을 지원할 수 있다. 일 예로서, 메모리 시스템(100)이 호스트(200)로부터의 억세스 요청에 따라 데이터를 기입하는 과정에서 오류를 검출하고, 기입 오류가 발생한 기입 데이터(DATA) 및 복구에 이용되는 정보(Info_RCV)를 호스트(200)로 전송하면, 복구 모듈(210)은 기입 오류가 발생한 데이터(DATA) 및 복구에 이용되는 정보(Info_RCV)를 기초로 오류가 발생한 데이터의 복구를 수행할 수 있다.
예컨대, 호스트(200)는 메모리 시스템(100)의 맵핑 정보를 이용하여 결정한 물리 어드레스(또는, 실시 예에 따라 논리 어드레스)와 기입 데이터에 기초하여 기입 요청을 제공할 수 있다. 메모리 시스템(100)은 기입 요청에 응답하여, 호스트(200)로부터 수신한 기입 데이터 및 물리 어드레스(또는, 실시 예에 따라 논리 어드레스)를 버퍼(미도시)에 저장할 수 있다. 그리고 메모리 시스템(100)은 기입 데이터 및 물리 어드레스(또는, 실시 예에 따라 논리 어드레스)를 기초로 메모리 장치(120)에 대한 기입 동작을 수행할 수 있다. 한편, 이 과정에서 기입 오류가 발생하면, 메모리 시스템(100)은 호스트(200)에 기입 오류에 대한 오류 발생 정보를 비동기 방식으로 제공함으로써 기입 오류가 발생한 사실을 알릴 수 있다. 여기서 비동기 방식이란, 호스트(200)의 요청 없이도 기설정된 이벤트가 감지되면 메모리 시스템(100)이 특정 동작을 수행하는 방식을 의미한다. 그리고 메모리 시스템(100)은 기입 오류가 발생한 기입 데이터(DATA)와 복구에 이용되는 정보(Info_RCV)를 호스트(200)로 제공할 수 있다. 그리고 복구 모듈(210)은 메모리 시스템(100)으로부터 획득한 기입 오류가 발생한 기입 데이터(DATA)와 복구에 이용되는 정보(Info_RCV)를 이용하여 기입 데이터를 복구할 수 있다. 그리고 복구 모듈(210)을 통해 복구한 기입 데이터를 기초로 호스트(200)는 기입 요청을 생성하여 메모리 시스템(100)에 제공할 수 있다.
전술한 본 발명의 실시예에 따르면, 메모리 시스템(100)이 일반 SSD이어서 자체적으로 기입 오류에 대한 복구를 수행할 수 있더라도, 복구 동작을 수행함에 있어 많은 연산 자원을 가지고 있는 호스트(200)를 활용할 수 있으므로, 메모리 시스템(100) 내에 수행 중인 다른 연산이 많은 경우에 메모리 시스템(100)의 성능 향상을 기대할 수 있다.
또한, 메모리 시스템(100)이 오픈 채널 SSD이어서 직접 어드레스들을 관리할 수 없고, 이에 따라 복구한 데이터를 임의로 다른 어드레스에 저장할 수 없어, 자체적으로 기입 오류에 대한 복구를 수행할 수 없더라도, 메모리 시스템(100)의 맵핑 정보를 관리하는 호스트(200)의 복구 모듈(210)을 통해 복구 동작을 수행할 수 있다. 또한, 호스트(200)가 아닌 메모리 시스템(100)이 기입 오류의 복구에 이용되는 정보를 생성하므로, 호스트(200)의 리소스의 활용도가 높아질 수 있다. 이하에서는 메모리 시스템(100)이 오픈 채널 SSD인 경우에 대하여 보다 구체적인 동작을 설명한다.
도 2는 도 1의 컴퓨팅 시스템의 구체적인 구현 예를 나타내는 블록도이다.
도 1 및 도 2를 참조하면, 메모리 시스템(100)은 오픈 채널 SSD이고, 버퍼(111)를 포함하고, 호스트(200)는 플래시 변환 계층(220)과 호스트 버퍼(230)를 포함할 수 있다.
호스트(200)의 플래시 변환 계층(220)은 메모리 시스템(100)의 맵핑 정보를 이용하여 메모리 시스템(100)의 기입/독출/소거 등의 동작들을 관리할 수 있다. 또한, 플래시 변환 계층(220)은 호스트(200)에서 사용하는 논리 어드레스와 메모리 장치(120)의 물리 어드레스를 서로 맵핑하는 주소 맵핑 기능과 가비지 콜렉션 기능을 수행할 수 있다.
본 발명의 일 실시예에 따라, 복구 모듈은 플래시 변환 계층(220)에 포함될 수 있다. 그리고 플래시 변환 계층(220)은 메모리 시스템(100)의 기입/독출/소거 등의 동작들을 관리하면서 복구 모듈을 이용하여 메모리 시스템(100)에서 발생한 오류를 복구할 수 있다.
플래시 변환 계층(220)은 프로세싱 유닛에 의해 구동되는 펌웨어, 운영 체제, 응용과 같은 소프트웨어의 형태로 구현될 수 있다. 또는, 플래시 변환 계층(220)은 메모리 시스템(100)의 관리와 관련된 각종 처리를 수행하기 위한 회로 등과 같은 하드웨어(HW)로 구현될 수 있다. 또는, 플래시 변환 계층(220)은 하드웨어(HW)와 소프트웨어(SW)의 조합으로 구현될 수 있다.
호스트(200)는 플래시 변환 계층(220)을 통해 논리 어드레스를 메모리 장치(120)의 물리 어드레스로 변환하고, 기입 커맨드(CMD), 기입 데이터(DATA) 및 물리 어드레스(ADDR)를 메모리 시스템(100)에 전송할 수 있다.
이때, 호스트(200)는 메모리 시스템(100)에 전송한 기입 데이터(DATA) 및 물리 어드레스(ADDR)를 호스트 버퍼(230)에 할당할 수 있다. 호스트 버퍼(230)는 호스트(200)의 메모리 시스템(100)으로의 억세스 과정에서 임시적으로 기입 데이터(DATA) 및 물리 어드레스(ADDR)를 저장할 수 있다.
그리고 메모리 컨트롤러(110)는 수신한 기입 데이터(DATA) 및 물리 어드레스(ADDR)를 버퍼(111)에 저장할 수 있다. 버퍼(111)는 기입 동작을 수행하는 과정에서 호스트(200)로부터 수신한 기입 데이터(DATA) 및 물리 어드레스(ADDR)를 임시적으로 저장하는 역할을 할 수 있다. 그리고 메모리 컨트롤러(110)는 버퍼(111)에 기입 데이터(DATA) 및 물리 어드레스(ADDR)의 저장을 완료하면 호스트(200)로 응답 신호(RSP)를 전송할 수 있다. 그리고 호스트(200)가 메모리 시스템(100)으로부터 응답 신호(RSP)를 수신하면, 이에 대응되는 기입 데이터(DATA) 및 물리 어드레스(ADDR)는 호스트 버퍼(230)에서 할당 해제될 수 있다.
메모리 컨트롤러(110)는 버퍼(111)에 저장된 기입 데이터(DATA) 및 물리 어드레스(ADDR)를 기초로 기입 동작을 수행하기에 앞서, 차후에 발생할 수 있는 오류에 대비하여 복구에 이용되는 정보를 생성할 수 있다. 일 예로서, 메모리 컨트롤러(110)는 수신한 기입 데이터를 기초로 ECC(Error Correcting Code) 패리티를 생성하거나, RAID(Redundant Array of Inexpensive Disk) 방식에 따라 복구 단위의 기입 데이터들의 복구 패리티를 생성할 수 있다. 한편, 복구에 이용되는 정보는 상술한 예에 한하지 않으며, 다양한 정보를 생성할 수 있다.
그리고 메모리 컨트롤러(110)는 기입 데이터 및 생성한 패리티 정보를 메모리 장치(120)에 기입할 수 있다. 일 예로서, 메모리 컨트롤러(110)는 생성한 ECC 패리티 및/또는 복구 패리티를 기입 데이터와 메모리 장치(120)의 동일 영역 또는 상이한 영역에 기입할 수 있다. 그리고 메모리 컨트롤러(110)는 생성한 패리티가 저장된 영역의 물리 어드레스 정보를 포함하는 디렉토리(directory)를 생성할 수 있다. 그리고 실시 예에 따라, 메모리 컨트롤러(110)는 생성한 디렉토리를 호스트(200)와 공유할 수 있다.
그리고 메모리 컨트롤러(110)는 기입 오류의 발생 여부를 확인할 수 있다. 일 예로서, 메모리 컨트롤러(110)는 기입 데이터 및 생성된 패리티를 프로그램한 후, 프로그램 검증을 수행하여 기입 오류의 발생 여부를 확인할 수 있다. 또는, 메모리 컨트롤러(110)는 임의로 독출 커맨드를 생성하여 기입 데이터를 독출하고, 독출한 데이터 내의 에러 비트를 확인함으로써 기입 오류의 발생 여부를 확인할 수도 있다. 한편, 기입 오류의 발생 여부를 확인하는 방법은 상술한 예에 한하지 않는다.
그리고 메모리 컨트롤러(110)는 기입 오류가 발생하면 호스트(200)에 비동기 이벤트 정보(Asynchronized Event Information, AEI)를 전송할 수 있다. 여기서 비동기 이벤트 정보는, 비동기 방식으로 메모리 시스템(100)에 오류가 발생함을 알리는 정보를 의미한다. 일 예로서, 비동기 이벤트 정보(AEI)는 기입 오류가 발생한 기입 데이터의 물리 어드레스를 포함할 수 있다.
그리고 메모리 컨트롤러(110)는 기입 오류가 발생한 기입 데이터(DATA) 및 복구에 이용되는 정보(Info_RCV)를 버퍼(111) 또는 메모리 장치(120)로부터 독출할 수 있다. 여기서 복구에 이용되는 정보(Info_RCV)는, 기입 오류가 발생한 기입 데이터(DATA)의 ECC 패리티 및/또는 복구 패리티를 포함할 수 있으며, 기입 오류가 발생한 복구 단위 내 정상 데이터를 추가적으로 포함할 수 있다. 이에 대한 구체적인 설명은 도 6과 관련하여 후술한다. 또한, 복구에 이용되는 정보(Info_RCV)는 메타 데이터를 포함할 수 있다. 메타 데이터는 메모리 시스템(100)을 관리하는데 사용되는 각종 정보를 포함할 수 있다. 일 예로서, 메타 데이터는 논리 어드레스와 메모리 장치(120)의 물리 어드레스 사이의 관계를 정의하는 맵핑 정보, 메모리 장치(120)의 각 물리 블록에 포함된 페이지들의 정보를 나타내는 물리 블록 정보, 데이터의 유효/무효 여부를 나타내는 속성 정보, 및 메모리 장치(120)에 저장된 맵핑 정보, 물리 블록 정보 또는 패리티 정보 등의 물리 어드레스를 나타내는 디렉토리 등을 포함할 수 있다. 한편, 복구에 이용되는 정보(Info_RCV)는 상술한 예에 한하지 않는다.
호스트(200)는 오류와 관련된 정보를 요청하는 신호(REQ)를 메모리 컨트롤러(110)에 전송할 수 있다. 일 예로서, 호스트(200)는 메모리 컨트롤러(110)로부터 비동기 이벤트 정보(AEI)를 획득하면 오류와 관련된 정보를 요청하는 신호(REQ)를 메모리 컨트롤러(110)에 전송할 수 있다. 그리고 메모리 컨트롤러(110)는 미리 독출한 기입 데이터(DATA) 및 복구에 이용되는 정보(Info_RCV)를 호스트(200)에 제공할 수 있다.
한편, 메모리 컨트롤러(110)의 기입 데이터(DATA) 및 복구에 이용되는 정보(Info_RCV)의 독출 동작은 호스트(200)로부터 요청 신호(REQ)를 수신한 후에 수행되는 방식으로도 구현될 수 있다. 이때, 요청 신호(REQ)는 단순히 오류에 관련된 정보를 요청하는 신호일 수도 있다. 이 경우, 메모리 컨트롤러(110)는 요청 신호(REQ)를 수신하면 버퍼(111)로부터 기입 데이터를 독출하고, 디렉토리 정보를 기초로 복구에 이용되는 정보의 물리 어드레스를 확인하여 메모리 장치(120)로부터 복구에 이용되는 정보를 독출할 수 있다. 또는, 요청 신호(REQ)가 복구에 이용되는 정보의 물리 어드레스를 포함할 수 있다. 이 경우, 메모리 컨트롤러(110)는 버퍼(111)로부터 기입 데이터를 독출하고 요청 신호(REQ) 내 물리 어드레스를 기초로 메모리 장치(120)로부터 복구에 이용되는 정보를 독출할 수 있다.
한편, 메모리 컨트롤러(110)는 호스트(200)로부터 요청 신호(REQ)의 수신 여부와 무관하게, 비동기 이벤트 정보(AEI)를 제공시 기입 데이터(DATA) 및 복구에 이용되는 정보(Info_RCV)를 함께 제공하는 방식으로도 구현될 수 있다.
그리고 호스트(200)는 플래시 변환 계층(220) 및 복구 모듈을 통해 기입 오류가 발생한 기입 데이터의 복구를 수행할 수 있다. 일 예로서, 호스트(200)는 기입 오류가 발생한 기입 데이터(DATA)와 복구에 이용되는 정보(Info_RCV)를 이용하여 기입 데이터를 복구하고, 메모리 시스템(100)의 맵핑 정보를 이용하여 새로운 물리 어드레스를 결정하고, 새로운 물리 어드레스와 복구한 기입 데이터를 기초로 기입 요청을 생성하여 메모리 시스템(100)에 제공할 수 있다.
전술한 본 발명의 실시예에 따르면, 호스트(200)는 응답 신호(RSP)를 수신하면 기입 데이터(DATA) 및 물리 어드레스(ADDR)를 호스트 버퍼(230) 내에서 할당 해제함으로써, 기입 동작과 관련하여 호스트(200)와 메모리 시스템(100) 간의 동기화는 종료되고, 실제 메모리 시스템(100)의 기입 동작은 호스트(200)와 개별적으로 수행될 수 있다. 그리고 메모리 시스템(100)이 실제 기입 동작 중에 기입 오류가 발생하면 비동기 방식을 통해 호스트(200)에 오류 발생을 알림으로써 오류가 복구될 수 있다. 이에 따라, 호스트(200)는 메모리 시스템(100)의 기입 동작이 실제로 완료될 때까지 호스트 버퍼(230)에 기입 데이터(DATA) 및 물리 어드레스(ADDR)를 할당하지 않아도 되므로, 호스트 버퍼(230)의 활용도를 높일 수 있다. 또한, 그러면서도 여전히 호스트(200)를 통해 메모리 시스템(100)에서 발생한 기입 오류를 복구할 수 있다.
도 3은 본 개시의 일 실시예에 따른 메모리 시스템을 나타내는 블록도이다.
도 3을 참조하면, 메모리 시스템(100)은 메모리 컨트롤러(110) 및 메모리 장치(120)를 포함할 수 있으며, 메모리 컨트롤러(110)는 버퍼(111) 및 에러 정정 모듈(112)을 포함할 수 있고, 메모리 장치(120)는 메모리 셀 어레이(121), 전압 생성기(122) 및 제어 로직(123)을 포함할 수 있다.
메모리 컨트롤러(110)는 호스트(HOST)로부터의 기입/독출 요청에 응답하여 메모리 장치(120)에 데이터를 기입하거나 메모리 장치(120)에 저장된 데이터를 독출 또는 소거하도록 메모리 장치(120)를 제어할 수 있다. 구체적으로, 메모리 컨트롤러(110)는 메모리 장치(120)에 어드레스(ADDR), 커맨드(CMD) 또는 제어 신호(CTRL)를 제공함으로써, 메모리 장치(120)에 대한 기입, 독출 또는 소거 동작을 제어할 수 있다. 또한, 메모리 장치(120)에 기입될 데이터(DATA)와 메모리 장치(120)로부터 독출된 데이터(DATA)는 메모리 컨트롤러(110)와 메모리 장치(120) 사이에서 송수신될 수 있다.
또한, 본 개시의 일 실시예에 따라, 메모리 컨트롤러(110)는 호스트(HOST)로부터 기입 요청에 응답하여 수신한 기입 데이터 및 물리 어드레스를 버퍼(111)에 저장할 수 있다. 그리고 메모리 컨트롤러(110)는 버퍼(111)에 저장된 기입 데이터 및 물리 어드레스를 기초로 메모리 장치(120)에 대한 기입 동작을 수행할 수 있다. 그리고 메모리 컨트롤러(110)는 기입 동작이 완료되면 버퍼(111)에 저장된 기입 데이터 및 물리 어드레스를 삭제할 수 있다. 한편, 기입 동작이 실패한 경우, 메모리 컨트롤러(110)는 버퍼(111)에 저장된 기입 데이터 및 물리 어드레스를 삭제하지 않고 보유할 수 있다. 한편, 메모리 컨트롤러(110)는 기입 동작을 수행하기에 앞서, 에러 정정 모듈(112)을 이용하여 차후에 발생할 수 있는 오류에 대비하여 복구에 이용되는 정보를 생성할 수 있다. 에러 정정 모듈(112)은 호스트(HOST)로부터 수신한 기입 데이터에 기반하여 ECC 인코딩을 수행할 수 있다. 일 예로서, 에러 정정 모듈(112)은 기입 데이터에 대하여 XOR(exclusive OR) 연산하여 ECC 패리티를 생성하고, 기입 데이터와 생성된 ECC 패리티를 메모리 장치(120)로 전달할 수 있다.
그리고 에러 정정 모듈(112)은, 메모리 장치(120)로부터 수신된 데이터에서 에러 비트를 검출하고, 검출된 에러 비트를 정정하는 ECC 동작을 수행할 수 있다. 에러 정정 모듈(112)은 수신한 데이터에서 검출된 에러 비트의 개수가 에러 정정 모듈(112)의 에러 정정 능력을 초과하는지 판단할 수 있다. 만약 검출한 에러 비트의 개수가 에러 정정 능력을 초과하면, 에러 정정 모듈(112)은 독출 오류가 발생한 것으로 판단할 수 있다.
또는, 변경 가능한 실시예에 따라, 에러 정정 모듈(112)은 RAID 방식에 따른 복구 단위의 기입 데이터들의 복구 패리티를 생성할 수도 있다. 그리고 에러 정정 모듈(112)은 생성한 복구 패리티에 대해서도 ECC 패리티를 생성할 수 있다. 그리고 생성한 복구 패리티 또는 복구 패리티의 ECC 패리티를 메모리 장치(120)로 전달할 수 있다. 이에 대한 구체적인 설명은 도 6과 관련하여 후술한다.
한편, 에러 정정 모듈(112)이 ECC 패리티를 생성하거나 RAID 방식에 따른 복구 패리티를 생성할 수 있는 것으로 설명하였지만, 에러 정정 모듈(112)은 ECC 패리티를 생성하는 ECC 모듈(미도시) 및/또는 RAID 방식에 따른 복구 패리티를 생성하는 RAID 모듈(미도시)로 구성되는 방식으로 구현될 수도 있다.
메모리 장치(120)는 비휘발성 메모리 장치일 수 있다. 메모리 셀 어레이(121)는 복수의 메모리 셀들을 포함할 수 있으며, 예를 들어, 복수의 메모리 셀들은 플래쉬 메모리 셀들일 수 있다. 그러나 본 발명은 이에 한정되지 않고, 메모리 셀 어레이(121)에 포함된 복수의 메모리 셀들은 ReRAM(resistive RAM), PRAM(phase change RAM) 또는 MRAM(magnetic RAM)과 같은 저항성 메모리 셀들일 수 있다.
메모리 셀 어레이(121)는 다수의 블록들을 포함할 수 있다. 또한, 다수의 블록들 각각은 다수의 페이지들을 포함할 수 있으며, 각각의 페이지는 다수의 메모리 셀들을 포함할 수 있다. 메모리 셀 어레이(121)에서, 데이터의 소거 동작은 블록 단위로 수행될 수 있으며, 또한 데이터의 기입 및 독출 동작은 페이지 단위로 수행될 수 있다. 예를 들어, 메모리 장치(120)는 메모리 컨트롤러(110)로부터의 어드레스(ADDR)를 참조하여 블록 단위의 소거 동작을 수행하고, 또한 페이지 단위의 기입 및 독출 동작을 수행할 수 있다.
전압 생성기(122)는 전술한 기입/독출/소거 동작을 수행하기 위한 다양한 종류의 전압을 생성할 수 있다. 예를 들어, 데이터 기입 동작은 ISPP(Incremental Step Pulse Program)을 이용하여 수행될 수 있으며, 전압 생성기(122)는 ISPP에 사용되는 다수의 전압들을 생성하여 메모리 셀 어레이(121)로 제공할 수 있다. 또한, 전압 생성기(122)는 데이터의 독출 동작에 이용되는 독출 전압을 생성하여 메모리 셀 어레이(121)로 제공할 수 있다. 또한, 전압 생성기(122)는 소거 동작에 이용되는 고전압 레벨을 갖는 소거 전압을 생성하여 메모리 셀 어레이(121)로 제공할 수 있다.
제어 로직(123)은 메모리 동작과 관련하여 메모리 장치(120)의 전반적인 동작을 제어할 수 있다. 예를 들어, 제어 로직(123)은 전압 생성기(122)를 제어할 수 있으며, 전압 생성기(122)는 제어 로직(123)의 제어에 따라 생성하는 각종 전압들의 레벨을 변경할 수 있다. 또한, 전압 생성기(122)가 생성하는 전압들에 따라 메모리 셀 어레이(121)의 메모리 셀들의 문턱 전압 산포가 조절될 수 있다.
도 4는 본 개시의 일 실시예에 따른 메모리 컨트롤러를 나타내는 도면이다.
도 3 및 도 4를 참조하면, 메모리 컨트롤러(110)는 버퍼(111), 에러 정정 모듈(112), 프로세서(113), 호스트 인터페이스(114) 및 메모리 인터페이스(115)를 포함할 수 있고, 버스(116)를 통해 서로 통신할 수 있다. 버퍼(111) 및 에러 정정 모듈(112)은 도 3과 관련하여 전술한 내용과 실질적으로 동일할 수 있으므로, 중복된 설명은 생략한다.
버퍼(111)는 프로세서(113)의 제어에 따라 동작할 수 있고, 복수 개일 수 있다. 버퍼(111)는 DRAM, SRAM과 같은 휘발성 메모리로 구현되거나 PRAM, 플래시 메모리와 같은 비휘발성 메모리로 구현될 수 있다. 본 개시의 일 실시예에 따라, 버퍼(111)는 호스트(HOST)로부터 수신한 기입 데이터 및 물리 어드레스를 임시적으로 저장할 수 있다. 한편, 도 4를 도시하고 설명함에 있어서, 버퍼(111)가 메모리 컨트롤러(110)에 포함되는 것으로 도시하고 설명하였지만, 버퍼(111)는 메모리 컨트롤러(110)와 별도의 구성으로 구현될 수도 있다.
또한, 본 개시의 일 실시 예에 따른 메모리 시스템(100)은, 메모리(미도시)를 더 포함할 수 있다. 메모리(미도시)는 버퍼(111)와 같이 휘발성 메모리 또는 비휘발성 메모리로 구현될 수 있으며, 동작 메모리, 버퍼 메모리, 캐시 메모리 등으로 사용될 수 있다.
에러 정정 모듈(112)은 하드웨어로 구현될 수 있다. 일 실시예에서, 메모리 컨트롤러(110) 내 하드웨어 가속기(미도시)가 구비된 경우, 하드웨어 가속기(미도시)는 XOR 연산에 특화된 가속기로서 에러 정정 모듈(112)을 구현할 수도 있다. 하드웨어 가속기(미도시)는 FPGA(Field-programmable gate array), MPPA(Massively parallel processor array), GPU(Graphics processing unit), ASIC(Application-Specific Integrated Circuit), NPU(Neural processing unit), TPU(Tensor Processing Unit) 및 MPSoC(Multi-Processor System-on-Chip) 등의 다양한 종류의 가속기일 수 있다. 그러나 이에 한정되지 않으며, 에러 정정 모듈(112)은 펌웨어 또는 소프트웨어로 구현될 수 있고, 버퍼(111) 또는 메모리(미도시)에 로딩될 수 있다.
프로세서(113)는 중앙 처리 장치나 마이크로 프로세서 등을 포함할 수 있으며, 버퍼(111) 또는 메모리(미도시)에 저장된 명령어들(instructions)을 실행함으로써 메모리 컨트롤러(110)의 전반적인 동작을 제어할 수 있다.
호스트 인터페이스(114)는 호스트(HOST)와 메모리 시스템(100)의 물리적 연결을 제공할 수 있다. 일 예로서, 호스트 인터페이스(114)는, ATA(advanced technology attachment), SATA(serial ATA), e-SATA(external SATA), SCSI(small computer small interface), SAS(serial attached SCSI), PCI(peripheral component interconnection), PCI-E(PCI express), IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi media card), eMMC(embedded multi media card), CF(compact flash) 카드 인터페이스, NVMe(Non-Volatile Memory Express) 등과 같은 다양한 인터페이스 방식들을 포함할 수 있다.
그리고 호스트 인터페이스(114)는 프로세서(113)의 제어에 따라 각종 정보를 비동기 방식으로 호스트(200)에 전송할 수 있다. 일 예로서, 호스트 인터페이스(114)는 호스트(200)의 기설정된 영역에 인터럽트(Interrupt)를 발생시킴으로써 각종 정보를 호스트(200)로 전송할 수 있으며, 이는 MSI, MSI-X, pin based, AER(Advanced Error Reporting) 등의 다양한 방식들로 구현될 수 있다.
본 개시의 일 실시예에 따라, 호스트 인터페이스(114)는 호스트(200)로부터 기입 요청을 수신하고, 호스트(200)에 기입 요청에 대응되는 응답 신호를 전송할 수 있다. 그리고 호스트 인터페이스(114)는 비동기 방식으로 오류 발생 정보를 호스트(200)로 전송할 수 있다. 일 예로서, 호스트 인터페이스(114)는 기입 오류가 발생함을 알리는 비동기 이벤트 정보(AEI)를 호스트(200)로 전송할 수 있다. 그리고 호스트 인터페이스(114)는 호스트(200)로부터 오류에 대한 정보를 요청하는 요청 신호를 수신할 수 있으며, 기입 오류가 발생한 기입 데이터 및 복구에 이용되는 정보를 호스트(200)로 전송할 수 있다. 그리고 호스트 인터페이스(114)는 호스트(200)로부터 기입 오류를 복구하기 위한 기입 요청을 수신할 수 있다.
메모리 인터페이스(115)는 메모리 컨트롤러(110)와 메모리 장치(120) 사이의 채널을 제공할 수 있다. 예를 들어, 커맨드(CMD), 어드레스(ADDR) 및 데이터(DATA) 등이 메모리 인터페이스(115)를 통해 메모리 컨트롤러(110)와 메모리 장치(120) 사이에서 송수신될 수 있다.
도 5는 본 개시의 일 실시예에 따른 메모리 시스템의 동작 방법을 나타내는 순서도이다.
이하에서는, 기입 데이터로 지칭되는 용어는 유저 데이터에 해당할 수 있으나, 일부의 실시예에서는 상기 기입 데이터는 메타 데이터에 해당될 수도 있을 것이다. 또한, 본 실시예에 따른 동작 방법은 도 1 또는 도 2의 메모리 시스템(100)에서 수행될 수 있다. 도 1 내지 도 4를 참조하여 상술된 내용은 본 실시예에도 적용될 수 있다.
먼저, 메모리 시스템은 호스트의 기입 요청에 응답하여, 호스트로부터 수신한 기입 데이터 및 물리 어드레스를 버퍼에 저장할 수 있다(S11). 일 예로서, 메모리 시스템은 호스트로부터 기입 커맨드를 수신하면 함께 수신된 기입 데이터와 물리 어드레스를 버퍼 중 기입 동작에 관하여 할당된 영역에 저장할 수 있다. 그리고 메모리 시스템은 호스트로 응답 신호를 전송할 수 있다.
그리고 메모리 시스템은 기입 데이터 및 물리 어드레스를 기초로 기입 동작을 수행할 수 있다(S12). 일 예로서, 메모리 시스템은 버퍼에 저장된 물리 어드레스에 대응하는 메모리 장치의 영역에 기입 데이터를 기입할 수 있다.
한편, 메모리 시스템은 기입 동작을 수행하기에 앞서, 복구에 이용되는 정보를 생성할 수 있다. 일 예로서, 메모리 시스템은 수신한 기입 데이터를 기초로 XOR 연산을 통해 ECC 패리티를 생성하거나, RAID 방식에 따라 복구 단위의 기입 데이터들의 복구 패리티를 생성할 수 있다. 한편, 복구에 이용되는 정보는 상술한 예에 한하지 않으며, 다양한 정보를 생성할 수 있다. 그리고 메모리 시스템은 기입 데이터 및 생성한 패리티 정보를 기입할 수 있다. 그리고 메모리 시스템은 맵핑 정보 또는 속성 정보 등의 메타 데이터를 업데이트 할 수 있다.
그리고 메모리 시스템은 기입 오류가 발생하면 비동기 방식으로 오류 발생 정보를 호스트에 제공할 수 있다(S13). 일 예로서, 메모리 시스템은 기입 오류가 발생하면 비동기 이벤트 정보(AEI)를 전송할 수 있고, 비동기 이벤트 정보(AEI)는 기입 오류가 발생한 기입 데이터의 물리 어드레스를 포함할 수 있다.
그리고 메모리 시스템은 기입 오류가 발생한 기입 데이터 및 복구에 이용되는 정보를 호스트에 제공할 수 있다(S14). 일 예로서, 메모리 시스템은 기입 오류가 발생한 복구에 이용되는 정보를 메모리 장치로부터 먼저 독출하여 임시로 버퍼에 저장하고, 호스트로부터 요청 신호를 수신하면 버퍼에 저장된 기입 오류가 발생한 기입 데이터 및 복구에 이용되는 정보를 호스트에 제공할 수 있다.
또는, 메모리 시스템은 호스트로부터 요청 신호를 수신하면 기입 오류가 발생한 기입 데이터 및 복구에 이용되는 정보를 독출하여 호스트에 제공할 수도 있다. 이때, 호스트로부터 수신한 요청 신호에 복구에 이용되는 정보의 물리 어드레스가 포함되어 있는 경우, 메모리 시스템은 포함된 물리 어드레스를 기초로 복구에 이용되는 정보를 독출할 수 있다. 반면, 호스트로부터 물리 어드레스를 수신하지 않더라도 메모리 시스템은 디렉토리 정보 등을 참고하여 복구에 이용되는 정보의 물리 어드레스를 확인하여 독출할 수 있다.
여기서 복구에 이용되는 정보는, 기입 오류가 발생한 기입 데이터의 ECC 패리티 및/또는 복구 패리티를 포함할 수 있으며, 기입 오류가 발생한 복구 단위 내 정상 데이터를 추가적으로 포함할 수 있다. 또한, 복구에 이용되는 정보는 메타 데이터를 포함할 수도 있다.
그리고 메모리 시스템은 호스트로부터 추가적인 기입 요청이 제공되면, 기입 요청에 응답하여 기입 동작을 수행할 수 있다. 이때, 호스트로부터 제공된 추가적인 기입 요청은 기입 오류가 발생한 데이터를 복구하여 다시 메모리 시스템에 기입하기 위한 요청일 수 있다.
도 6은 본 개시의 일 실시예에 따른 복구에 이용되는 정보의 예를 나타내는 도면이다.
도 1 내지 도 6을 참조하면, 메모리 시스템(100)은 호스트(200)로부터 복수의 기입 데이터들 및 복수의 물리 어드레스들을 수신할 수 있다. 그리고 메모리 시스템(100)은 수신한 복수의 기입 데이터들 및 복수의 물리 어드레스들을 메모리 장치에 기입할 수 있다. 한편, 메모리 시스템(100)(혹은, 도 3의 에러 정정 모듈(112))은 기입 동작을 수행하기 전에 차후에 발생할 수 있는 오류에 대비하여 복구에 이용되는 정보를 생성할 수 있다. 복구에 이용되는 정보를 생성하는 동작은 다양한 방식에 의해 수행될 수 있다.
일 예로서, 메모리 시스템(100)은 기입 데이터에 대한 XOR 연산을 수행하여 ECC 패리티를 생성할 수 있다. 도 6을 참조하면, 메모리 시스템(100)은 복수의 기입 데이터들 DATA1 내지 DATA3 각각에 대하여 XOR 연산을 수행하여 ECC 패리티를 각각 생성할 수 있다. 그리고 메모리 시스템(100)은 복구에 이용되는 정보로서 생성한 ECC 패리티를 기입 데이터와 함께 메모리 장치에 기입할 수 있다.
또한, 메모리 시스템(100)은 RAID 방식에 따라 복구 단위의 기입 데이터들의 복구 패리티를 생성할 수 있다. 도 6을 참조하면, 복구 단위의 기입 데이터들인 DATA 1 내지 DATA 3에 대하여 XOR 연산을 수행하여 복구 패리티를 생성할 수 있다. 만약, 메모리 시스템(100)이 ECC 패리티와 RAID 방식에 따른 복구 패리티를 모두 생성하는 경우, 복구 패리티에 대한 ECC 패리티도 추가적으로 생성될 수 있다.
그리고 메모리 시스템(100)은 복구에 이용되는 정보로서 생성한 복구 패리티를 메모리 장치(120)에 기입할 수 있다. 이때, 복구 패리티가 저장되는 영역은 기입 데이터들이 저장되는 영역과 상이할 수 있다. 그리고 복수의 복구 단위들의 기입 데이터들이 존재하는 경우, 각 복구 단위들의 복구 패리티들이 저장되는 영역 또한, 서로 같거나 상이할 수 있으며, 이는 적용되는 RAID의 레벨에 따라 결정될 수 있다. 예컨대, RAID 4의 경우, 각 복구 단위들의 복구 패리티들은 메모리 장치 내 동일한 블록 내에 저장될 수 있으며, RAID 5의 경우, 각 복구 단위들의 복구 패리티들은 메모리 장치 내 서로 상이한 블록들에 저장될 수 있다.
한편, 도 6을 참조하면, DATA2에 기입 오류가 발생한 것을 확인할 수 있다. DATA2는 기입 오류로 인해 메모리 장치(120)에 기입되지 않은바, 메모리 시스템(100)은 기입 오류가 발생한 DATA2를 버퍼(111)로부터 독출하고, DATA2의 복구에 이용되는 정보는 메모리 장치(120)로부터 독출할 수 있다. 그리고 메모리 시스템(100)은 기입 오류가 발생한 DATA2와 복구에 이용되는 정보를 호스트에 제공할 수 있다. DATA2의 복구에 이용되는 정보는 DATA2의 ECC 패리티를 포함할 수 있다. 또한, RAID 방식에 따라 복구하는 경우, 복구에 이용되는 정보는 DATA2의 복구 패리티와 DATA2가 속하는 복구 단위의 기입 데이터들(DATA1 내지 DATA3) 중 정상 데이터(DATA1 및 DATA3)를 더 포함할 수 있다. 이 외에도, DATA2의 복구에 이용되는 정보는, 도 6에는 도시되어 있지 않으나, 메타 데이터 중 맵핑 정보를 포함할 수 있으며, 기입 오류가 발생한 DATA2가 유저 데이터 영역에 속하는 경우, 메타 데이터 중 DATA2의 유효성 여부를 나타내는 속성 정보를 더 포함할 수 있다.
그리고 호스트(200)는 메모리 시스템(100)으로부터 획득한 DATA2 및 DATA2의 복구에 이용되는 정보를 기초로 DATA2의 복구를 수행할 수 있다. 예컨대, 호스트(200)는 기입 오류가 발생한 DATA2 및 ECC 패리티를 기초로 오류가 발생한 비트를 정정할 수 있다. 또한, 호스트(200)는 복구 패리티와 복구 단위 내 정상 데이터들을 기초로 기입 오류가 발생한 데이터를 복구할 수 있다. 이외에도 호스트(200)는 메타 데이터를 추가적으로 고려하여 복구를 수행할 수 있으며, 호스트(200)가 복구를 수행하는 방법은 상술한 예에 한하지 않는다.
한편, 도 6을 도시하고 설명함에 있어서, 메모리 시스템(100)이 호스트(200)로 기입 오류가 발생한 기입 데이터(DATA2)를 제공하는 것으로 도시하고 설명하였지만, 메모리 시스템(100)이 기입 오류가 발생한 기입 데이터(DATA2)는 호스트(200)에 제공하지 않되, 복구에 이용되는 정보만을 호스트(200)로 제공하는 방식으로도 구현될 수 있다. 일 예로서, 메모리 시스템(100)이 RAID 방식에 따른 복구 패리티만을 생성한 경우, 호스트(200)가 기입 데이터를 복구 시, 복구 패리티와 기입 오류가 발생한 기입 데이터에 대응하는 복구 단위 내 정상 데이터들(DATA 1 및 DATA3)만으로도 복구할 수 있기 때문이다.
도 7은 본 개시의 일 실시예에 따른 호스트의 복구 방법을 나타내는 순서도이다.
본 실시예에 따른 동작 방법은 도 1 또는 도 2의 호스트(200)에서 수행될 수 있다. 이하에서는, 도 7에 도시된 동작들이 호스트에 의해 수행되는 것으로 설명될 것이나, 보다 구체적으로는 도 7에 도시된 동작들 중 적어도 일부는 호스트 내 복구 모듈에서 수행되는 동작에 해당할 수 있다.
먼저, 호스트는 기입 데이터 및 물리 어드레스를 기초로 기입 요청을 메모리 시스템에 전송할 수 있다(S21). 일 예로서, 호스트는 메모리 시스템의 맵핑 정보를 이용하여 물리 어드레스와 기입 데이터에 기초하여 기입 요청을 제공할 수 있다. 그리고 호스트는 메모리 시스템으로부터 제공한 기입 요청에 대한 응답 신호를 수신하면, 해당 기입 요청에 대응되는 기입 데이터 및 어드레스 정보를 호스트 내 버퍼에서 할당 해제할 수 있다. 이에 따라, 호스트는 버퍼의 활용도를 높일 수 있다.
그리고 호스트는 비동기 방식으로 오류 발생 정보를 메모리 시스템으로부터 획득할 수 있다(S22). 일 예로서, 호스트는 메모리 시스템으로부터 비동기 이벤트 정보(AEI)를 획득할 수 있고, 비동기 이벤트 정보(AEI)는 기입 오류가 발생한 기입 데이터의 물리 어드레스를 포함할 수 있다.
그리고 호스트는 기입 오류가 발생한 기입 데이터 및 복구에 이용되는 정보를 메모리 시스템으로부터 획득할 수 있다(S23). 일 예로서, 호스트는 비동기 이벤트 정보(AEI)를 획득하면 이에 대응하여 메모리 시스템에 오류와 관련된 정보를 요청하는 신호를 전송할 수 있다. 그리고 호스트는 메모리 시스템으로부터 기입 오류가 발생한 기입 데이터 및 복구에 이용되는 정보를 획득할 수 있다.
또는, 호스트는 비동기 이벤트 정보(AEI)를 획득하면 호스트의 동작 상태를 확인하고, 아이들(Idle) 상태에 진입하면 요청 신호를 전송하거나, 기설정된 개수의 비동기 이벤트 정보(AEI)를 획득하면 복수의 오류와 관련된 정보를 요청하는 요청 신호를 전송하여 정보를 획득하는 방식으로도 구현될 수 있다.
또는, 호스트는 비동기 이벤트 정보(AEI)에 포함된 기입 오류가 발생한 기입 데이터의 물리 어드레스와 메모리 시스템의 디렉토리 정보를 기초로, 복구에 이용되는 정보의 물리 어드레스를 확인하고, 확인된 물리 어드레스와 함께 요청 신호를 메모리 시스템에 전송하여 정보를 획득하는 방식으로도 구현될 수 있다. 한편, 호스트가 기입 오류가 발생한 기입 데이터 및 복구에 이용되는 정보를 획득하는 방법은 상술한 예에 한하지 않는다.
그리고 호스트는 기입 오류가 발생한 기입 데이터 및 복구에 이용되는 정보를 기초로 오류가 발생한 기입 데이터를 복구할 수 있다(S24). 여기서 복구에 이용되는 정보는 기입 오류가 발생한 기입 데이터의 ECC 패리티, 복구 패리티, 기입 오류가 발생한 복구 단위 내 정상 데이터 및 메타 데이터 중 적어도 하나를 포함할 수 있다. 그리고 메타 데이터는 맵핑 정보를 포함할 수 있으며, 기입 오류가 발생한 기입 데이터가 유저 데이터 영역에 속하는 경우, 메타 데이터는 해당 기입 데이터의 유효성 여부를 나타내는 속성 정보를 더 포함할 수 있다.
그리고 호스트는 복구한 기입 데이터를 기초로 제2 기입 요청을 메모리 시스템에 전송할 수 있다(S25). 일 예로서, 호스트는 메모리 시스템의 맵핑 정보를 이용하여 새로운 물리 어드레스를 결정하고, 새로운 물리 어드레스와 복구한 기입 데이터를 기초로 제2 기입 요청을 생성하여 메모리 시스템에 제공할 수 있다. 그리고 호스트는 메모리 시스템으로부터 제2 기입 요청에 대한 응답 신호를 수신하면 메모리 시스템의 맵핑 정보를 업데이트할 수 있다.
도 8은 본 개시의 일 실시예에 따른 복수의 기입 오류가 발생 시 호스트의 복구 방법을 나타내는 순서도이다.
도 8은 변형 가능한 실시예에 따른 호스트의 복구 방법을 나타내는 순서도이다. 호스트는 복수의 기입 요청을 제공하고, 메모리 시스템이 복수의 기입 동작을 수행하는 과정에서, 복수의 기입 오류들이 발생할 수 있다. 이하에서는 복수의 기입 오류들이 발생한 경우에서 호스트의 복구 방법을 설명한다. 한편, 도 8에 도시된 단계들의 동작들을 설명함에 있어서, 전술한 도 7에서와 중복되는 단계들에 대한 구체적인 설명은 생략된다.
먼저, 호스트는 복수의 오류 발생 정보들을 메모리 시스템으로부터 획득할 수 있다(S31). 일 예로서, 호스트는 복수의 비동기 이벤트 정보(AEI)들을 획득할 수 있다. 그리고 호스트는 획득한 순서에 따라 복수의 오류 발생 정보들을 FIFO에 입력할 수 있다(S32). 일 예로서, 호스트는 획득한 복수의 비동기 이벤트 정보(AEI)들을 획득한 순서에 따라 호스트 내 FIFO(First In First Out)에 입력할 수 있다. 또는, 호스트는 복수의 비동기 이벤트 정보(AEI)들 내에 포함된 물리 어드레스를 획득한 순서에 따라 호스트 내 FIFO(First In First Out)에 입력할 수 있다. 그리고 호스트는 복수의 기입 오류 각각이 발생한 기입 데이터들 및 복수의 기입 오류 각각의 복구에 이용되는 정보들을 메모리 시스템으로부터 획득할 수 있다(S33).
그리고 호스트는 FIFO 내 복수의 오류 발생 정보들의 입력 순서에 따라 오류가 발생한 기입 데이터들 각각을 복구하고 새로운 기입 요청을 메모리 시스템에 제공할 수 있다(S34). 일 예로서, 호스트는 FIFO에 먼저 입력된 비동기 이벤트 정보(AEI) 또는 물리 어드레스에 대응하는 기입 데이터 및 복구에 이용되는 정보를 이용하여 복구를 수행할 수 있다. 그리고 호스트는 복구한 기입 데이터와 새로운 물리 어드레스를 기초로 새로운 기입 요청을 생성하여 메모리 시스템에 제공할 수 있다. 그리고 호스트는 FIFO에 다음 순서로 입력된 기입 오류에 대하여 상술한 동작을 반복할 수 있다.
도 9는 본 개시의 일 실시예에 따른 복수의 기입 오류가 발생 시 호스트의 복구 방법을 나타내는 순서도이다.
도 9는 변형 가능한 실시예에 따른 호스트의 복구 방법을 나타내는 순서도이다. 이하에서는 복수의 기입 오류들이 발생한 경우에서 호스트의 또 다른 복구 방법을 설명한다. 한편, 도 9에 도시된 단계들의 동작들을 설명함에 있어서, 전술한 도 7 및 도 8에서와 중복되는 단계들에 대한 구체적인 설명은 생략된다.
먼저, 호스트는 복수의 오류 발생 정보들을 메모리 시스템으로부터 획득할 수 있다(S41). 일 예로서, 호스트는 복수의 비동기 이벤트 정보(AEI)들을 획득할 수 있다.
그리고 호스트는 복수의 오류 발생 정보들 내 포함된 물리 어드레스들을 기초로 우선순위를 결정할 수 있다(S42). 일 예로서, 호스트는 복수의 비동기 이벤트 정보(AEI)에 포함된 물리 어드레스들을 기초로 복수의 오류들이 각각 메모리 시스템의 저장 영역 중 어느 영역에서 발생한 것인지 판단할 수 있다. 예컨대, 호스트는 복수의 오류들이 메모리 시스템의 유저 데이터 영역과 메타 데이터 영역 중 어느 영역에서 발생했는지 여부를 확인할 수 있다. 그리고 호스트는 오류가 발생한 영역을 기초로 우선순위를 결정할 수 있다. 일 예로서, 호스트는 메타 데이터 영역에서 발생한 오류를 우선적으로 복구하는 것으로 결정할 수 있다. 한편, 호스트가 물리 어드레스를 기초로 우선순위를 결정하는 방법은 상술한 예에 한하지 않는다.
그리고 호스트는 복수의 기입 오류 각각의 복구에 이용되는 정보들을 메모리 시스템으로부터 획득할 수 있다(S43). 그리고 호스트는 결정된 우선순위에 따라 오류가 발생한 기입 데이터들 각각을 복구하고 새로운 기입 요청을 메모리 시스템에 제공할 수 있다(S44). 일 예로서, 호스트는 복수의 오류들 중 메타 데이터 영역에서 발생한 오류에 대응하는 기입 데이터 및 복구에 이용되는 정보를 이용하여 복구를 수행할 수 있다. 그리고 호스트는 복구한 기입 데이터와 새로운 물리 어드레스를 기초로 새로운 기입 요청을 생성하여 메모리 시스템에 제공할 수 있다. 그리고 호스트는 유저 데이터 영역에서 발생한 오류에 대하여 상술한 동작을 반복할 수 있다.
한편, 도 8 및 도 9를 도시하고 설명함에 있어서, 호스트가 복수의 오류 발생 정보를 획득한 순서 또는 오류 발생 정보 내 포함된 물리 어드레스를 기초로 우선순위를 결정하는 것으로 도시하고 설명하였지만, 복구에 이용되는 정보를 기초로 우선순위를 결정하는 방식으로도 구현될 수 있다.
도 10은 본 개시의 일 실시예에 따른 메타 데이터를 이용한 호스트의 복구 동작을 나타내는 순서도이다.
도 10은 변형 가능한 실시예에 따른 호스트의 복구 방법을 나타내는 순서도이다. 기입 오류가 발생한 기입 데이터는 경우에 따라 복구가 불필요한 경우가 있다. 이하에서는 호스트가 기입 오류가 발생한 기입 데이터에 대한 복구의 필요 여부를 판단하는 방법을 설명한다. 일 예로서, 도 10에 도시된 단계들의 동작들을 설명함에 있어서, 전술한 도 7에서와 중복되는 단계들에 대한 구체적인 설명은 생략된다.
먼저, 호스트는 기입 오류가 발생한 기입 데이터 및 복구에 이용되는 정보를 메모리 시스템으로부터 획득할 수 있다(S51). 그리고 호스트는 복구에 이용되는 정보 중 메타 데이터를 확인할 수 있다(S52). 일 예로서, 호스트는 획득한 다양한 종류의 복구에 이용되는 정보 중에서 기입 오류가 발생한 기입 데이터의 유효성 여부를 나타내는 속성 정보를 확인할 수 있다.
그리고 호스트는 메타 데이터를 기초로 기입 데이터의 유효성 유무를 확인할 수 있다(S53). 만약, 기입 데이터가 유효(valid)하면, 호스트는 기입 오류가 발생한 기입 데이터를 복구할 수 있다(S54). 그리고 호스트는 복구한 기입 데이터를 기초로 기입 요청을 메모리 시스템에 전송할 수 있다(S55). 반면, 기입 데이터가 유효하지 않으면(invalid), 호스트는 기입 오류가 발생한 기입 데이터에 대한 복구를 진행하지 않는 것으로 결정할 수 있다(S56).
전술한 본 발명의 실시예에 따르면, 기입 오류가 발생하였으나 어떠한 이유로 인해 유효하지 않은 기입 데이터까지 호스트가 복구하는 것을 방지할 수 있으므로, 호스트의 불필요한 연산을 줄일 수 있다.
한편, 도 10을 도시하고 설명함에 있어서, 호스트가 기입 오류의 복구 에이 이용되는 정보를 모두 획득하고 메타 데이터를 확인하는 것으로 도시하고 설명하였지만, 호스트가 메모리 시스템으로부터 기입 오류가 발생한 기입 데이터에 대한 메타 데이터만을 먼저 획득하여 기입 데이터에 대한 유효성을 확인하는 방식으로도 구현할 수 있다. 예컨대, 호스트는 기입 오류가 발생한 기입 데이터에 대한 메타 데이터를 먼저 확인하여 유효성이 확인되면, 그때 메모리 시스템으로부터 기입 오류가 발생한 기입 데이터의 ECC 패리티 및/또는 복구 패리티를 획득하여 복구를 수행하고, 유효성이 확인되지 않으면, 메모리 시스템으로부터 추가적인 정보를 획득하지 않고 복구 동작을 진행하지 않을 수 있다.
도 11은 본 개시의 예시적인 실시예에 따른 컴퓨팅 시스템에서, 기입 오류의 복구에 관련된 호스트와 메모리 시스템 각각의 동작을 나타내는 개념도이다.
본 실시예에 따른 동작 방법은 도 1 또는 도 2의 컴퓨팅 시스템(1000)에서 수행될 수 있다. 도 1 내지 도 10을 참조하여 상술된 내용은 본 실시예에도 적용될 수 있다. 호스트(200)는 비동기 오류 전달자(240) 및 기입 오류 처리자(250)를 포함할 수 있으며, 상기 비동기 오류 전달자(240) 및/또는 기입 오류 처리자(250)는 호스트(200)의 복구 모듈의 일부를 구성할 수 있다. 상기 비동기 오류 전달자(240) 및 기입 오류 처리자(250)는 하드웨어(HW)로 구현되거나 소프트웨어(SW)로 구현될 수 있으며, 하드웨어(HW)와 소프트웨어(SW)의 조합으로 구현될 수 있다.
먼저, 메모리 시스템(100)은 호스트(200)의 비동기 오류 전달자(240)에 비동기 방식으로 오류 발생 정보를 전송할 수 있다(①). 일 예로서, 메모리 시스템(100)은 기입 오류가 발생하면 호스트(200)의 비동기 오류 전달자(240)에 오류 발생 정보(혹은, 비동기 이벤트 정보(AEI))를 전달할 수 있다. 이때, 오류 발생 정보는 발생한 오류가 기입 오류에 해당함을 알리는 오류 타입과 오류가 발생한 데이터의 물리 어드레스를 포함할 수 있다.
그리고 비동기 오류 전달자(240)는 오류 발생 정보를 기초로 메모리 시스템(100)에 발생한 오류의 타입을 판단할 수 있다. 그리고 메모리 시스템(100)에 발생한 오류가 기입 오류인 경우, 비동기 오류 전달자(240)는 기입 오류에 대한 복구를 수행하는 기입 오류 처리자(250)에게 오류 발생 정보를 전달할 수 있다(②). 일 실시예에 따라, 호스트(200)가 독출 오류 처리자(미도시)와 같은 별도의 처리자를 구비하고 있는 경우, 비동기 오류 전달자(240)는 오류 타입에 대응되는 처리자에게 오류 발생 정보를 전달할 수 있다.
그리고 기입 오류 처리자(250)는 비동기 오류 전달자(240)로부터 전달받은 오류 발생 정보를 오류 처리 대기 리스트(251)에 등록할 수 있다(③). 만약 복수의 오류 발생 정보들이 전달되는 경우, 기입 오류 처리자(250)는 전달된 순서에 따라 복수의 오류 발생 정보들을 오류 처리 대기 리스트(251)에 등록하거나, 복수의 오류 발생 정보들의 물리 어드레스들을 기초로 우선순위를 결정하여 오류 처리 대기 리스트(251)에 등록할 수 있다.
그리고 기입 오류 처리자(250)는 오류 처리 대기 리스트(251)로부터 오류 발생 정보를 가져올 수 있다(④). 일 예로서, 기입 오류 처리자(250)는 메모리 시스템(100)으로부터 복구에 이용되는 정보가 준비됨을 알리는 신호를 수신하면 오류 처리 대기 리스트(251)로부터 오류 발생 정보를 가져올 수 있다. 또는, 기입 오류 처리자(250)는 복구를 수행할 시점(예컨대, 호스트(200)가 아이들(idle) 상태에 진입한 시점)에 오류 처리 대기 리스트(251)로부터 오류 발생 정보를 가져올 수 있다.
그리고 기입 오류 처리자(250)는 메모리 시스템(100)으로부터 메타 데이터 및 이의 복구에 이용되는 정보를 획득하여 복구를 수행할 수 있다(⑤). 일 예로서, 기입 오류가 발생한 데이터가 메타 데이터인 경우, 기입 오류 처리자(250)는 메모리 시스템(100)으로부터 기입 오류가 발생한 메타 데이터와 이의 ECC 패리티 및/또는 복구 패리티를 획득하여, 메타 데이터를 복구할 수 있다. 또한, 기입 오류가 발생한 데이터가 유저 데이터인 경우에도, 기입 오류 처리자(250)는 메타 데이터와 이의 ECC 패리티 및/또는 복구 패리티를 획득할 수 있다. 그리고 기입 오류 처리자(250)는 획득한 정보를 이용하여 유저 데이터를 복구할 수 있다.
그리고 기입 오류 처리자(250)는 메모리 시스템(100)으로부터 유저 데이터 및 이의 복구에 이용되는 정보를 획득하여 복구를 수행할 수 있다(⑥). 일 예로서, 기입 오류 처리자(250)는 메모리 시스템(100)으로부터 기입 오류가 발생한 유저 데이터와 이의 ECC 패리티 및/또는 복구 패리티를 획득하여, 유저 데이터를 복구할 수 있다. 이때, 기입 오류 처리자(250)는 앞서 획득한 메타 데이터 등도 이용하여 유저 데이터를 복구할 수 있다. 일 예로서, 기입 오류 처리자(250)는 메타 데이터 내에 포함된 유저 데이터의 유효성 정보를 확인하고, 유저 데이터가 유효하면 복구를 수행할 수 있다. 한편, 기입 오류 처리자(250)의 메타 데이터 및 유저 데이터의 복구 동작(⑤,⑥)은 상기의 설명과 같이 순차적으로 수행될 수도 있으나, 동시에 수행될 수도 있다.
그리고 기입 오류 처리자(250)는 메모리 시스템(100)의 맵핑 정보를 새로운 물리 어드레스를 결정하고, 새로운 물리 어드레스와 복구한 기입 데이터를 기초로 기입 요청을 생성하여 메모리 시스템(100)에 제공할 수 있다.
한편, 도 11을 도시하고 설명함에 있어서, 호스트(200)가 오류 처리 대기 리스트(251)를 포함하는 것으로 도시하고 설명하였지만, 호스트(200)가 충분히 복수의 기입 오류에 대한 복구를 동시에 처리할 수 있는 경우, 상기 오류 처리 대기 리스트(251)를 구비하지 않고도 복구를 수행할 수 있다.
도 12는 본 개시의 일 실시예에 따른 HMB(Host Memory Buffer)를 포함한 컴퓨팅 시스템의 블록도이다.
도 12는 변형 가능한 실시예에 따른 컴퓨팅 시스템을 나타낸다. 도 12를 참조하면, 컴퓨팅 시스템(1000')은 메모리 시스템(100') 및 호스트(200')를 포함할 수 있다. 또한, 메모리 시스템(100')은 메모리 컨트롤러(110) 및 메모리 장치(120)를 포함할 수 있고, 호스트(200')는 플래시 변환 계층(220) 및 HMB(Host Memory Buffer, 260)를 포함할 수 있다.
HMB(260)는 호스트(200') 내에 존재하는 버퍼 메모리이나, 메모리 시스템(100')에 접근 권한이 할당된 메모리이다. 메모리 시스템(100')은 HMB(260)에 직접 억세스하여 사용할 수 있다. 메모리 시스템(100')은 메모리 시스템(100')에서 발생한 기입 오류와 관련된 각종 정보들을 HMB(260)에 직접 저장할 수 있다. 일 예로서, 메모리 시스템(100')은 기입 오류가 발생하면 비동기 이벤트 정보(AEI)를 생성하여 HMB(260)에 저장할 수 있고, 기입 데이터 및 복구에 이용되는 정보를 독출하여 HMB(260)에 저장할 수 있다.
그리고 호스트(200")는 HMB(260)에 접근하여, 비동기 이벤트 정보(AEI), 기입 데이터 및 복구에 이용되는 정보를 획득할 수 있다. 일 예로서, 호스트(200')는 기설정된 주기로 HMB(260)에 접근하여 비동기 이벤트 정보(AEI)의 유무를 확인하고, 메모리 시스템(100')에 기입 오류가 발생됨을 확인하면 나머지 기입 데이터 및 복구에 이용되는 정보를 HMB(260)로부터 획득하여 복구 동작을 수행할 수 있다. 또는, 메모리 시스템(100')이 HMB(260)에 기입 오류와 관련된 각종 정보를 저장한 후, 호스트(200')에 저장이 완료됨을 알리는 리턴 신호를 전송하면, 호스트(200')가 HMB(260)에 접근하여 기입 오류와 관련된 각종 정보를 획득하고, 복구 동작을 수행할 수 있다.
도 13은 본 개시의 일 실시예에 따른 CMB(Controller Memory Buffer)를 포함한 컴퓨팅 시스템의 블록도이다.
도 13은 변형 가능한 실시예에 따른 컴퓨팅 시스템을 나타낸다. 도 13을 참조하면, 컴퓨팅 시스템(1000")은 메모리 시스템(100") 및 호스트(200")를 포함할 수 있다. 또한, 메모리 시스템(100")은 메모리 컨트롤러(110) 및 메모리 장치(120)를 포함할 수 있고, 호스트(200")는 플래시 변환 계층(220)을 포함할 수 있다. 또한, 메모리 컨트롤러(110)는 CMB(Controller Memory Buffer, 117)를 포함할 수 있다.
CMB(117)는 메모리 컨트롤러(110) 내에 존재하는 버퍼 메모리이나, 호스트(200")에 접근 권한이 할당된 메모리이다. 호스트(200")는 CMB(117)에 직접 억세스하여 사용할 수 있다. 메모리 시스템(100")은 메모리 시스템(100")에서 발생한 기입 오류와 관련된 각종 정보들을 CMB(117)에 저장할 수 있다. 일 예로서, 메모리 시스템(100")은 기입 오류가 발생하면 비동기 이벤트 정보(AEI)를 생성하여 CMB(117)에 저장할 수 있고, 기입 데이터 및 복구에 이용되는 정보를 독출하여 CMB(117)에 저장할 수 있다.
그리고 호스트(200")는 CMB(117)에 접근하여, 비동기 이벤트 정보(AEI), 기입 데이터 및 복구에 이용되는 정보를 획득할 수 있다. 일 예로서, 호스트(200")는 기설정된 주기로 CMB(117)에 접근하여 비동기 이벤트 정보(AEI)의 유무를 확인하고, 메모리 시스템(100")에 기입 오류가 발생됨을 확인하면 나머지 기입 데이터 및 복구에 이용되는 정보를 CMB(117)로부터 획득하여 복구 동작을 수행할 수 있다. 또는, 메모리 시스템(100")이 CMB(117)에 기입 오류와 관련된 각종 정보를 저장한 후, 호스트(200")에 저장이 완료됨을 알리는 리턴 신호를 전송하면, 호스트(200")가 CMB(117)에 접근하여 기입 오류와 관련된 각종 정보를 획득하고, 복구 동작을 수행할 수 있다.
도 14는 본 개시의 일 실시예에 따른 HPB(Host-aware Performance Booster)를 이용한 컴퓨팅 시스템의 블록도이다.
도 14는 변형 가능한 실시예에 따른 컴퓨팅 시스템을 나타낸다. 도 14를 참조하면, 컴퓨팅 시스템(1000"')은 메모리 시스템(100"') 및 호스트(200"')를 포함할 수 있다.
메모리 시스템(100"')은 메모리 컨트롤러(110) 및 메모리 장치(120)를 포함할 수 있고, 메모리 컨트롤러(110)는 플래시 변환 계층(118)을 포함할 수 있다. 즉, 메모리 시스템(100"')은 플래시 변환 계층(118)을 통해 주소 맵핑 기능을 수행할 수 있는바, 일반 SSD에 대응될 수 있다.
도 14의 호스트(200"')는 HPB(Host-aware Performance Booster) 방식이 적용된 것으로, 도 2의 호스트(200"')처럼 플래시 변환 계층을 구비하지 않는다. 이에 따라, 호스트(200"')는 주소 맵핑 기능을 수행할 수 없으므로, 기입 데이터를 저장할 물리 어드레스를 직접 결정하지 못하고, 논리 어드레스를 기초로 기입 요청을 전송할 수 있다. 반면, 호스트(200"')는 메모리 시스템(100"')의 맵핑 정보(270)를 포함할 수 있다. 이에 따라, 호스트(200"')는 맵핑 정보를 기초로 논리 어드레스에 대응하는 물리 어드레스를 확인하고, 확인된 물리 어드레스를 기초로 독출 요청을 전송할 수 있다.
이하에서는 HPB(Host-aware Performance Booster)를 이용한 컴퓨팅 시스템의 방법에 대해 구체적으로 설명한다.
도 15는 본 개시의 일 실시예에 따른 HPB를 이용한 컴퓨팅 시스템의 복구 방법을 나타내는 순서도이다.
본 실시예에 따른 동작 방법은 도 14의 컴퓨팅 시스템(1000)에서 수행될 수 있다. 먼저, 호스트(200" ')는 메모리 시스템(100" ')에 기입 요청을 전송할 수 있다(S105). 일 예로서, 호스트(200"')는 기입 커맨드(CMD), 기입 데이터(DATA), 논리 어드레스(ADDR)를 전송할 수 있다. 그리고 메모리 시스템(100"')은 수신한 기입 데이터 및 논리 어드레스를 메모리 시스템(100"')의 버퍼(미도시)에 저장할 수 있다(S110).
그리고 메모리 시스템(100"')은 호스트(200"')로 응답 신호(RSP)를 제공할 수 있다(S115). 그리고 호스트(200"')는 호스트 버퍼(미도시) 내 기입 데이터 및 논리 어드레스의 할당을 해제할 수 있다(S120). 일 예로서, 호스트(200"')는 호스트 버퍼에 저장된 복수의 기입 데이터들 및 복수의 논리 어드레스들 중 응답 신호에 대응하는 기입 데이터 및 논리 어드레스의 할당을 해제할 수 있다.
그리고 메모리 시스템(100"')은 기입 데이터를 기초로 ECC 패리티 및/또는 복구 패리티를 생성할 수 있다(S125). 그리고 메모리 시스템(100"')은 생성한 패리티와 기입 데이터에 대한 기입 동작을 수행할 수 있다(S130). 일 예로서, 메모리 시스템(100"')은 논리 어드레스(ADDR)에 대응하는 물리 어드레스를 확인하고, 해당 물리 어드레스에 대응하는 영역에 기입 동작을 수행할 수 있다.
그리고 메모리 시스템(100"')은 기입 오류가 발생하면 비동기 이벤트 정보(AEI)를 호스트(200"')에게 제공할 수 있다(S135). 그리고 호스트(200"')는 획득한 오류 발생 정보를 기초로 메모리 시스템(100"')에 발생한 오류가 기입 오류인지 판단할 수 있다(S140).
그리고 메모리 시스템(100"')은 기입 오류가 발생한 기입 데이터 및 복구에 이용되는 정보를 독출할 수 있다(S145). 그리고 호스트(200"')는 메모리 시스템(100"')으로 오류에 대한 정보를 요청할 수 있다(S150).
한편, 일 예로서, S145 및 S150과 관련하여 그 순서가 변경될 수 있다. 예컨대, 호스트(200"')는 요청 신호(REQ)를 메모리 시스템(100"')에 제공하고, 메모리 시스템(100"')이 요청 신호(REQ)에 응답하여, 오류가 발생한 기입 데이터 및 복구에 이용되는 정보를 독출하는 방식으로 구현될 수 있다. 이때, 호스트(200"')는 메모리 시스템(100"')의 디렉토리 정보를 이용하여 복구에 이용되는 정보의 물리 어드레스를 확인하고, 요청 신호(REQ) 내에 복구에 이용되는 정보의 물리 어드레스를 포함할 수 있다. 그리고 메모리 시스템(100"')은 버퍼(미도시)로부터 오류가 발생한 기입 데이터를 독출하고, 요청 신호(REQ) 내에 포함된 물리 어드레스를 기초로 메모리 장치(120)로부터 복구에 이용되는 정보를 독출할 수 있다.
그리고 메모리 시스템(100"')은 독출한 기입 데이터(DATA) 및 복구에 이용되는 정보(Info_RCV)를 호스트(200"')로 제공할 수 있다(S155). 그리고 호스트(200"')는 오류가 발생한 기입 데이터를 복구할 수 있다(S160). 그리고 호스트(200"')는 메모리 시스템(100"')에 제2 기입 요청을 전송할 수 있다(S165). 일 예로서, 호스트(200"')는 기입 커맨드(CMD2), 복구된 기입 데이터(DATA2), 새로운 논리 어드레스(ADDR2)를 전송할 수 있다. 그리고 호스트(200"')는 메모리 시스템으로부터 제2 기입 요청에 대한 응답 신호를 수신하면 메모리 시스템(100"')의 맵핑 정보를 업데이트할 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (10)

  1. 메모리 장치를 포함하는 메모리 시스템의 동작 방법에 있어서,
    호스트의 기입 요청에 응답하여, 상기 호스트로부터 수신한 기입 데이터 및 물리 어드레스를 버퍼에 저장하는 단계;
    상기 기입 데이터 및 상기 물리 어드레스를 기초로 상기 메모리 장치에 대한 기입 동작을 수행하는 단계;
    기입 오류가 발생하면 비동기 방식으로 상기 호스트에 오류 발생 정보를 제공하는 단계; 및
    상기 기입 오류가 발생한 기입 데이터 및 상기 기입 오류의 복구에 이용되는 정보를 상기 호스트에 제공하는 단계를 포함하는 메모리 시스템의 동작 방법.
  2. 제1항에 있어서,
    상기 기입 동작을 수행하는 단계는,
    상기 기입 데이터를 기초로, 상기 기입 데이터의 ECC(Error Correcting Code) 패리티 및 복구 단위의 기입 데이터들의 복구 패리티 중 적어도 하나를 생성하는 단계; 및
    상기 기입 데이터와 함께 상기 생성된 패리티를 기입하는 단계를 포함하는 것을 특징으로 하는 메모리 시스템의 동작 방법.
  3. 제2항에 있어서,
    상기 기입 오류의 복구에 이용되는 정보는,
    상기 기입 오류가 발생한 기입 데이터의 ECC 패리티, 복구 패리티, 상기 기입 오류가 발생한 복구 단위 내 정상 데이터 및 상기 메모리 시스템의 관리 정보 중 적어도 하나를 포함하는 것을 특징으로 하는 메모리 시스템의 동작 방법.
  4. 제1항에 있어서,
    상기 기입 오류의 복구에 이용되는 정보는,
    상기 기입 오류가 발생한 영역이 유저 데이터 영역인 경우, 상기 기입 오류가 발생한 기입 데이터에 대한 메타 데이터를 포함하는 것을 특징으로 하는 메모리 시스템의 동작 방법.
  5. 제1항에 있어서,
    상기 오류 발생 정보는,
    상기 기입 오류가 발생한 기입 데이터의 물리 어드레스를 포함하는 것을 특징으로 하는 메모리 시스템의 동작 방법.
  6. 제1항에 있어서,
    상기 기입 오류가 발생한 기입 데이터 및 상기 기입 오류의 복구에 이용되는 정보를 상기 호스트에 제공하는 단계는,
    상기 메모리 시스템에 포함된 컨트롤러 메모리 버퍼(Controller Memory Buffer) 또는 상기 호스트에 포함된 호스트 메모리 버퍼(Host Memory Buffer)에 저장하는 것을 특징으로 하는 메모리 시스템의 동작 방법.
  7. 메모리 시스템을 제어하는 호스트의 동작 방법에 있어서,
    호스트에서, 기입 데이터 및 물리 어드레스에 기초하여 제1 기입 요청을 상기 메모리 시스템에 전송하는 단계;
    상기 호스트에서, 상기 메모리 시스템에서 발생한 기입 오류에 대한 오류 발생 정보를 상기 메모리 시스템으로부터 비동기 방식으로 획득하는 단계;
    상기 호스트에서, 상기 기입 오류가 발생한 기입 데이터 및 상기 기입 오류의 복구에 이용되는 정보를 상기 메모리 시스템으로부터 획득하는 단계;
    상기 호스트에서, 상기 기입 오류가 발생한 기입 데이터 및 상기 기입 오류의 복구에 이용되는 정보를 기초로 상기 기입 오류가 발생한 기입 데이터를 복구하는 단계; 및
    상기 호스트에서, 상기 복구한 기입 데이터를 기초로 제2 기입 요청을 상기 메모리 시스템에 전송하는 단계를 포함하는 호스트의 동작 방법.
  8. 제7항에 있어서,
    상기 호스트에서, 복수의 오류 발생 정보들을 획득하면 상기 복수의 오류 발생 정보들 각각에 포함된 물리 어드레스들에 기초하여 복구의 우선순위를 결정하는 단계를 더 포함하고,
    상기 기입 오류가 발생한 기입 데이터 및 상기 기입 오류의 복구에 이용되는 정보를 획득하는 단계는,
    복수의 기입 오류들 각각이 발생한 기입 데이터들 및 복수의 기입 오류들 각각의 복구에 이용되는 정보들을 상기 메모리 시스템으로부터 획득하고,
    상기 기입 오류가 발생한 기입 데이터를 복구하는 단계는,
    상기 복구의 우선순위에 따라 상기 복수의 기입 오류들 각각의 복구에 이용되는 정보들을 기초로 상기 복수의 기입 오류들 각각이 발생한 기입 데이터들을 복구하는 것을 특징으로 하는 호스트의 동작 방법.
  9. 제7항에 있어서,
    상기 기입 오류의 복구에 이용되는 정보는,
    상기 기입 오류가 발생한 영역이 유저 데이터 영역인 경우, 상기 기입 오류가 발생한 기입 데이터에 대한 메타 데이터를 포함하고,
    상기 기입 오류가 발생한 기입 데이터를 복구하는 단계는,
    상기 호스트에서, 상기 메타 데이터를 기초로 상기 기입 오류가 발생한 기입 데이터의 복구 여부를 결정하는 단계; 및
    상기 호스트에서, 상기 결정에 따라 상기 기입 오류가 발생한 기입 데이터를 복구하는 단계를 포함하는 것을 특징으로 하는 호스트의 동작 방법.
  10. 메모리 장치를 포함하는 메모리 시스템; 및
    기입 데이터 및 물리 어드레스에 기초하여 기입 요청을 상기 메모리 시스템에 전송하는 호스트를 포함하고,
    상기 메모리 시스템은,
    상기 호스트의 기입 요청에 응답하여, 상기 호스트로부터 수신한 상기 기입 데이터 및 상기 물리 어드레스를 상기 메모리 시스템의 버퍼에 저장하고, 상기 기입 데이터 및 상기 물리 어드레스를 기초로 상기 메모리 장치에 대한 기입 동작을 수행하고, 기입 오류가 발생하면 비동기 방식으로 상기 호스트에 오류 발생 정보를 제공하고, 상기 기입 오류가 발생한 기입 데이터 및 상기 기입 오류의 복구에 이용되는 정보를 상기 호스트에 제공하고,
    상기 호스트는,
    상기 기입 오류가 발생한 기입 데이터 및 상기 기입 오류의 복구에 이용되는 정보를 기초로 상기 기입 오류가 발생한 기입 데이터를 복구하고, 상기 복구한 기입 데이터를 기초로 복구 명령을 상기 메모리 시스템에 전송하는 것을 특징으로 하는 컴퓨팅 시스템.
KR1020190123347A 2019-10-04 2019-10-04 기입 오류가 발생한 데이터를 복구하는 메모리 시스템 및 호스트의 동작 방법 KR20210041158A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190123347A KR20210041158A (ko) 2019-10-04 2019-10-04 기입 오류가 발생한 데이터를 복구하는 메모리 시스템 및 호스트의 동작 방법
US16/858,959 US11288183B2 (en) 2019-10-04 2020-04-27 Operating method of memory system and host recovering data with write error
CN202010825267.XA CN112612639A (zh) 2019-10-04 2020-08-17 操作存储器系统的方法、操作主机的方法和计算系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190123347A KR20210041158A (ko) 2019-10-04 2019-10-04 기입 오류가 발생한 데이터를 복구하는 메모리 시스템 및 호스트의 동작 방법

Publications (1)

Publication Number Publication Date
KR20210041158A true KR20210041158A (ko) 2021-04-15

Family

ID=75224844

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190123347A KR20210041158A (ko) 2019-10-04 2019-10-04 기입 오류가 발생한 데이터를 복구하는 메모리 시스템 및 호스트의 동작 방법

Country Status (3)

Country Link
US (1) US11288183B2 (ko)
KR (1) KR20210041158A (ko)
CN (1) CN112612639A (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11347586B2 (en) * 2018-07-25 2022-05-31 ScaleFlux, Inc. Realizing high-speed and low-latency RAID across multiple solid-state storage device with host-side FTL
US11531473B1 (en) * 2021-09-10 2022-12-20 Western Digital Technologies, Inc. Selective HMB backup in NVM for low power mode
US11929133B2 (en) * 2022-01-07 2024-03-12 Micron Technology, Inc. Methods for recovery for memory systems and memory systems employing the same

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5995426A (en) 1997-11-04 1999-11-30 Micron Technology, Inc. Testing parameters of an electronic device
KR100540486B1 (ko) 2003-10-31 2006-01-11 주식회사 하이닉스반도체 라이트회복시간의 조절이 가능한 동기식 메모리 장치
KR100543930B1 (ko) 2003-10-31 2006-01-20 주식회사 하이닉스반도체 카스레이턴시에 따라서 라이트회복시간의 조절이 가능한메모리 장치
US7944773B2 (en) 2008-04-30 2011-05-17 Micron Technology, Inc. Synchronous command-based write recovery time auto-precharge control
KR101522848B1 (ko) 2011-10-05 2015-05-26 엘에스아이 코포레이션 비휘발성 스토리지에 대한 셀프-저널링 및 계층적 일치성
US9304946B2 (en) 2012-06-25 2016-04-05 Empire Technology Development Llc Hardware-base accelerator for managing copy-on-write of multi-level caches utilizing block copy-on-write differential update table
TWI498890B (zh) 2012-08-10 2015-09-01 Etron Technology Inc 偽靜態隨機存取記憶體之運作方法及相關記憶裝置
US10474365B2 (en) 2013-01-25 2019-11-12 Stroz Friedberg, LLC System and method for file processing from a block device
US9652376B2 (en) * 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9229854B1 (en) 2013-01-28 2016-01-05 Radian Memory Systems, LLC Multi-array operation support and related devices, systems and software
US9557937B2 (en) 2013-08-21 2017-01-31 Netapp, Inc. Systems, methods, and computer program products implementing hybrid file structures for data storage
US10180875B2 (en) 2016-07-08 2019-01-15 Toshiba Memory Corporation Pool-level solid state drive error correction
US10534551B1 (en) * 2018-06-22 2020-01-14 Micron Technology, Inc. Managing write operations during a power loss
KR20210041159A (ko) * 2019-10-04 2021-04-15 삼성전자주식회사 정정 가능한 독출 오류가 발생한 데이터를 복구하는 메모리 시스템 및 호스트의 동작 방법

Also Published As

Publication number Publication date
CN112612639A (zh) 2021-04-06
US20210103517A1 (en) 2021-04-08
US11288183B2 (en) 2022-03-29

Similar Documents

Publication Publication Date Title
US11113149B2 (en) Storage device for processing corrupted metadata and method of operating the same
US11157357B2 (en) Operation methods of memory system and host, and computing system
KR102398186B1 (ko) 메모리 컨트롤러의 동작 방법 및 사용자 장치의 동작 방법
US8074017B2 (en) On-disk caching for raid systems
US10013307B1 (en) Systems and methods for data storage devices to use external resources
US9164833B2 (en) Data storage device, operating method thereof and data processing system including the same
EP3633517B1 (en) Storage device and method of operating storage device
US9372741B2 (en) Data storage device and operating method thereof
US11288183B2 (en) Operating method of memory system and host recovering data with write error
KR20140078893A (ko) 데이터 저장 장치의 동작 방법
KR20200114052A (ko) 컨트롤러, 메모리 시스템 및 그것의 동작 방법
US20240086113A1 (en) Synchronous write method and device, storage system and electronic device
CN111198825A (zh) 存储设备和包括存储设备的存储系统
KR20200114086A (ko) 컨트롤러, 메모리 시스템 및 그것의 동작 방법
CN108877862B (zh) 页条带的数据组织以及向页条带写入数据的方法与装置
CN114510372A (zh) 储存装置及其操作方法
US11061610B2 (en) Memory system
US7886310B2 (en) RAID control method and core logic device having RAID control function
KR20210001206A (ko) 컨트롤러, 메모리 시스템 및 그것의 동작 방법
US11893269B2 (en) Apparatus and method for improving read performance in a system
TWI712052B (zh) 記憶體管理方法、儲存控制器與儲存裝置
EP4258097A1 (en) Operation method of host device and operation method of storage device
KR20240053298A (ko) 호스트와 메모리 시스템에서 맵데이터를 관리하는 장치 및 방법
CN116893877A (zh) 主机装置的操作方法及存储装置的操作方法
KR20200114208A (ko) 컨트롤러, 메모리 시스템 및 컨트롤러의 동작 방법

Legal Events

Date Code Title Description
A201 Request for examination