KR102546229B1 - 리드 리클레임 동작 시에 버퍼 메모리를 이용하는 스토리지 장치 - Google Patents

리드 리클레임 동작 시에 버퍼 메모리를 이용하는 스토리지 장치 Download PDF

Info

Publication number
KR102546229B1
KR102546229B1 KR1020180119087A KR20180119087A KR102546229B1 KR 102546229 B1 KR102546229 B1 KR 102546229B1 KR 1020180119087 A KR1020180119087 A KR 1020180119087A KR 20180119087 A KR20180119087 A KR 20180119087A KR 102546229 B1 KR102546229 B1 KR 102546229B1
Authority
KR
South Korea
Prior art keywords
memory
read
target data
target
memory block
Prior art date
Application number
KR1020180119087A
Other languages
English (en)
Other versions
KR20200039882A (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 KR1020180119087A priority Critical patent/KR102546229B1/ko
Priority to US16/506,809 priority patent/US11301388B2/en
Priority to SG10201909143XA priority patent/SG10201909143XA/en
Priority to EP19201359.7A priority patent/EP3633516B1/en
Priority to CN201910950548.5A priority patent/CN111007983A/zh
Publication of KR20200039882A publication Critical patent/KR20200039882A/ko
Priority to US17/688,148 priority patent/US11625330B2/en
Application granted granted Critical
Publication of KR102546229B1 publication Critical patent/KR102546229B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • 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/7211Wear leveling

Landscapes

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

Abstract

본 발명은 리드 리클레임 동작 시에 버퍼 메모리를 이용하는 스토리지 장치에 관한 것이다. 본 발명의 실시예에 따른 스토리지 장치는 불휘발성 메모리 장치, 메모리 컨트롤러, 및 버퍼 메모리를 포함한다. 메모리 컨트롤러는 불휘발성 메모리 장치에서 리드 리클레임 동작을 수행하기 위한 메모리 블록을 결정하고, 메모리 블록의 타겟 영역으로부터 타겟 데이터를 읽는다. 타겟 데이터는 버퍼 메모리에 저장된다. 메모리 컨트롤러는 타겟 영역의 적어도 일부에 대응되는 읽기 요청에 응답하여 버퍼 메모리에 저장된 상기 타겟 데이터의 적어도 일부를 읽는다.

Description

리드 리클레임 동작 시에 버퍼 메모리를 이용하는 스토리지 장치{STORAGE DEVICE USING BUFFER MEMORY IN READ RECLAIM OPERATION}
본 발명은 반도체 메모리 장치에 관한 것으로, 좀 더 상세하게는 리드 리클레임 동작 시에 버퍼 메모리를 이용하는 스토리지 장치에 관한 것이다.
플래시 메모리 장치는 컴퓨터, 스마트폰, PDA, 또는 휴대용 컴퓨터와 같은 다양한 전자 장치들의 데이터 저장 매체로서 널리 사용되고 있다. 그러나 플래시 메모리에 데이터를 쓰기 위해서는 소거 동작이 반드시 선행되어야 하며, 쓰여지는 데이터의 단위보다 소거되는 데이터의 단위가 크다는 특징이 있다.
플래시 메모리 장치를 구비하는 다양한 스토리지 장치에서는 리드 리클레임(Read reclaim)이란 동작 모드를 수행하고 있다. 어느 하나의 메모리 블록이 반복적으로 읽혀지는 경우, 읽기 교란(Read disturbance)과 같은 문제로 에러 비트가 증가하게 된다. 리드 리클레임은 메모리 블록에 저장된 데이터에서 정정 불가 에러(Uncorrectable Error)가 발생하기 전에 메모리 블록에 저장된 데이터를 다른 메모리 블록으로 이동시키는 동작을 의미한다.
리드 리클레임 동작이 지연되는 경우, 해당 데이터에 정정 불가 에러가 발생될 수 있고, 해당 데이터는 소실될 수 있다. 또한, 리드 리클레임 동작에 의하여, 호스트의 읽기 요청에 대한 응답이 지연될 수 있다. 따라서, 리드 리클레임 동작에 의한 스토리지 장치의 품질 저하를 감소시키기 위한 요구가 제기되고 있다.
본 발명은 데이터의 소실을 줄이면서 읽기 동작의 속도 저하를 감소시키도록 리드 리클레임 동작 시에 버퍼 메모리를 이용하는 스토리지 장치를 제공할 수 있다.
본 발명의 실시예에 따른 스토리지 장치는 불휘발성 메모리 장치, 메모리 컨트롤러, 및 버퍼 메모리를 포함한다. 메모리 컨트롤러는 불휘발성 메모리 장치에서 리드 리클레임 동작을 수행하기 위한 제1 메모리 블록을 결정하고, 제1 메모리 블록의 타겟 영역으로부터 타겟 데이터를 읽는다. 타겟 데이터는 버퍼 메모리에 저장된다. 메모리 컨트롤러는 제1 메모리 블록에 저장된 데이터를 불휘발성 메모리 장치의 제2 메모리 블록으로 이동시키고, 타겟 영역의 적어도 일부에 대응되는 읽기 요청에 응답하여 버퍼 메모리에 저장된 상기 타겟 데이터의 적어도 일부를 읽는다.
일례로, 타겟 영역은 읽기 카운트와 기준 카운트의 비교 결과에 기초하여 검출될 수 있다. 일례로, 타겟 영역은 에러 비트의 정정 동작에 기초하여 검출될 수 있다.
본 발명의 실시 예에 따르면, 리드 리클레임 동작 시에 버퍼 메모리를 이용하여 읽기 동작을 수행함으로써, 데이터의 소실을 줄이고, 리드 리클레임 동작에 의한 읽기 동작의 지연을 줄일 수 있다.
도 1은 본 발명의 실시예에 따른 스토리지 장치의 블록도이다.
도 2는 도 1의 메모리 컨트롤러의 예시적인 블록도이다.
도 3은 도 1의 불휘발성 메모리 장치의 예시적인 블록도이다.
도 4는 도 3의 메모리 블록의 예시적인 회로도이다.
도 5는 리드 리클레임을 위한 스토리지 장치의 동작을 설명하기 위한 블록도이다.
도 6은 도 5의 스토리지 장치의 리드 리클레임 방법에 대한 순서도이다.
도 7은 도 6의 S130 단계를 구체화한 순서도이다.
도 8은 리드 리클레임을 위한 스토리지 장치의 동작을 설명하기 위한 블록도이다.
도 9는 도 8의 스토리지 장치의 리드 리클레임 방법에 대한 순서도이다.
도 10은 도 5 또는 도 8의 스토리지 장치의 리드 리클레임 방법에 대한 순서도이다.
도 11 내지 도 13은 본 발명의 실시예에 따른 스토리지 시스템의 예시적인 블록도이다.
아래에서는, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재된다.
도 1은 본 발명의 실시예에 따른 스토리지 장치의 블록도이다. 도 1을 참조하면, 스토리지 장치(100)는 메모리 컨트롤러(110), 불휘발성 메모리 장치(120), 및 버퍼 메모리(130)를 포함한다. 일례로, 스토리지 장치(100)는 솔리드 스테이트 드라이브(Solid State Drive, SSD), 메모리 카드, eMMC(ebedded Multi Media Card), 또는 UFS(Universal Flash Storage) 등의 형태로 구성될 수 있으나, 이에 제한되지 않는다.
메모리 컨트롤러(110)는 호스트와 같은 외부 장치의 제어에 따라 불휘발성 메모리 장치(120)를 제어할 수 있다. 예를 들어, 메모리 컨트롤러(110)는 외부 요청에 따라, 불휘발성 메모리 장치(120)에 데이터(DATA)를 쓰거나, 불휘발성 메모리 장치(120)에 저장된 데이터(DATA)를 읽을 수 있다. 이를 위하여, 메모리 컨트롤러(110)는 불휘발성 메모리 장치(120)에 어드레스(ADDR), 커맨드(CMD), 및 제어 신호(CTRL)를 전송할 수 있다.
메모리 컨트롤러(110)는 버퍼 메모리(130)를 이용하여 스토리지 장치(100)를 관리할 수 있다. 일례로, 메모리 컨트롤러(110)는 불휘발성 메모리 장치(120)에 쓰여질 데이터 또는 불휘발성 메모리 장치(120)로부터 읽혀진 데이터를 버퍼 메모리(130)에 임시로 저장할 수 있다. 일례로, 메모리 컨트롤러(110)는 불휘발성 메모리 장치(120)를 관리하는데 필요한 메타 데이터를 버퍼 메모리(130)에 로드할 수 있다.
불휘발성 메모리 장치(120)는 메모리 컨트롤러(110)의 제어에 따라 동작할 수 있다. 예를 들어, 불휘발성 메모리 장치(120)는 어드레스(ADDR), 커맨드(CMD), 및 제어 신호(CTRL)를 수신할 수 있다. 불휘발성 메모리 장치(120)는 어드레스(ADDR)에 대응되는 공간에 데이터(DATA)를 저장하거나, 어드레스(ADDR)에 대응되는 데이터(DATA)를 메모리 컨트롤러(110)로 전송할 수 있다.
버퍼 메모리(130)는 메모리 컨트롤러(110)에 의하여 실행되는 코드들 및 명령들을 저장할 수 있다. 버퍼 메모리(130)는 메모리 컨트롤러(110)에 의하여 처리되는 데이터를 저장할 수 있다. 메모리 컨트롤러(110)를 제어하기 위한 소프트웨어 (또는 펌웨어)는 버퍼 메모리(130)에 로딩될 수 있다. 버퍼 메모리(130)는 랜덤 액세스 메모리(RAM)일 수 있으며, 일례로, DRAM일 수 있다. 도시되지 않았으나, 플래시 변환 계층(FTL) 또는 다양한 메모리 관리 모듈이 버퍼 메모리(130)에 저장될 수 있다. 일례로, 플래시 변환 계층(FTL)은 불휘발성 메모리 장치(120)와 호스트 사이의 인터페이스를 위하여 수행되는 어드레스 맵핑, 가비지 컬렉션, 웨어 레벨링 등을 수행할 수 있다.
버퍼 메모리(130)는 리드 캐시 메모리(132)를 포함할 수 있다. 리드 캐시 메모리(132)는 리드 리클레임 동작에 따라, 불휘발성 메모리 장치(120) 내에서 다른 메모리 블록으로 이동될 데이터를 저장하는데 사용되는 메모리 영역으로 정의될 수 있다. 상술한 바와 같이, 리드 리클레임은 메모리 블록에 저장된 데이터에서 정정 불가 에러(Uncorrectable Error)가 발생하기 전에 메모리 블록에 저장된 데이터를 다른 메모리 블록으로 이동시키는 동작을 의미한다.
리드 캐시 메모리(132)는 불휘발성 메모리 장치(120)에 저장된 데이터 중, 정정 불가 에러가 발생할 가능성이 높은 데이터를 저장할 수 있다. 또는, 리드 캐시 메모리(132)는 불휘발성 메모리 장치(120)에 저장된 데이터 중, 다른 페이지에 정정 불가 에러를 유발시킬 가능성이 높은 페이지에 대응되는 데이터를 저장한다. 정정 불가 에러가 발생할 가능성이 높은 페이지 또는 다른 페이지에 정정 불가 에러를 유발시킬 가능성이 높은 페이지는 타겟 영역으로 정의될 수 있다. 타겟 영역을 판단하는 방안은 후술된다.
리드 리클레임 동작 중에 호스트로부터 수신된 읽기 요청에 응답하여, 리드 캐시 메모리(132)에 저장된 데이터는 메모리 컨트롤러(110)를 통하여 호스트에 전송될 수 있다. 이 경우, 읽기 요청은 타겟 영역의 적어도 일부에 대한 읽기 요청일 수 있다. 스토리지 장치(100)는 불휘발성 메모리 장치(120)로부터 타겟 영역에 대응되는 데이터를 읽지 않고, 리드 캐시 메모리(132)에 저장된 데이터를 읽을 수 있다.
리드 캐시 메모리(132)는 타겟 영역에 대응되는 데이터 또는 타겟 영역 주변의 페이지에 대응되는 데이터의 소실을 줄일 수 있다. 타겟 영역에 대한 읽기 동작이 지속적으로 발생하여 타겟 영역에 지속적으로 접근할 경우, 정정 불가 에러가 발생할 수 있다. 이 경우, 해당 데이터는 소실된다. 리드 캐시 메모리(132)는 타겟 영역에 대응되는 읽기 요청에 응답하여, 불휘발성 메모리 장치(120) 대신에 데이터를 전송한다. 따라서, 불휘발성 메모리 장치(120)의 타겟 영역에 대한 접근이 방지될 수 있다.
리드 캐시 메모리(132)는 리드 리클레임 동작에 따른 읽기 동작의 지연을 줄일 수 있다. 타겟 영역 또는 타겟 영역에 인접한 영역에서의 정정 불가 에러의 발생을 방지하기 위하여, 리드 리클레임 동작 시에, 불휘발성 메모리 장치(120)의 타겟 영역에 대한 읽기 동작은 차단될 수 있다. 특히, 타겟 영역이 많은 경우, 읽기 동작이 차단되는 시간이 증가함은 물론이고, 후순위 타겟 영역에 대하여 리드 리클레임 동작이 등록되지 못함으로써, 읽기 동작이 지속되어 데이터가 소실될 수 있다. 리드 캐시 메모리(132)를 이용하지 않는 경우, 타겟 영역에 저장된 데이터를 읽기 위하여, 리드 리클레임 동작이 완료될 때까지 읽기 동작이 지연될 수 있다. 리드 캐시 메모리(132)를 이용함으로써, 리드 리클레임 동작 시에, 타겟 영역에 대응되는 데이터의 읽기가 가능하다.
리드 리클레임 매니저(134)는 버퍼 메모리(130)에 로딩되고, 메모리 컨트롤러(110)에 의하여 실행될 수 있다. 또는, 리드 리클레임 매니저(134)는 ASIC(application specific integrated circuit), FPGA(field programmable gate array) 등에 의하여 하드웨어로 구현될 수 있다. 메모리 컨트롤러(110)에 의한 리드 리클레임 매니저(134)의 실행에 따라, 메모리 컨트롤러(110)는 불휘발성 메모리 장치(120)로부터 타겟 영역을 검출하고, 타겟 영역에 대응되는 타겟 데이터를 리드 캐시 메모리(132)에 쓸 수 있다. 리드 리클레임 매니저(134)의 실행에 따라, 메모리 컨트롤러(110)는 호스트의 타겟 영역에 대응되는 읽기 요청 시에, 리드 캐시 메모리(132)에 접근하여 타겟 데이터를 읽을 수 있다. 일례로, 리드 리클레임 매니저(134)는 플래시 변환 계층(FTL)에 의하여 구동되는 코드의 일부로 제공될 수 있다.
도 2는 도 1의 메모리 컨트롤러의 예시적인 블록도이다. 도 2를 참조하면, 메모리 컨트롤러(110)는 프로세서(111), 버퍼 제어 회로(112), 호스트 인터페이스(113), 에러 정정 코드 엔진(114), 및 메모리 인터페이스(115)를 포함한다. 설명의 편의상 도 1의 도면 부호를 참조하여, 도 2가 설명된다.
프로세서(111)는 메모리 컨트롤러(110)의 제반 동작을 제어하고, 논리 연산을 수행할 수 있다. 프로세서(111)는 호스트 인터페이스(113)를 통하여 외부의 호스트와 통신하고, 메모리 인터페이스(115)를 통하여 불휘발성 메모리 장치(120)와 통신하고, 버퍼 제어 회로(112)를 통하여 버퍼 메모리(130)와 통신할 수 있다. 프로세서(111)는 버퍼 메모리(130)를 사용하여 스토리지 장치(100)를 제어할 수 있다.
프로세서(111)는 버퍼 메모리(130)에 로드되는 리드 리클레임 매니저(134)를 실행할 수 있다. 리드 리클레임 매니저(134)의 실행에 따라, 프로세서(111)는 리드 리클레임 동작을 위한 타겟 영역을 검출하고, 리드 캐시 메모리(132)에 타겟 영역에 대응되는 타겟 데이터를 저장할 수 있다. 호스트의 읽기 요청에 응답하여, 프로세서(111)는 리드 캐시 메모리(132)에 저장된 타겟 데이터를 읽을 수 있다.
버퍼 제어 회로(112)는 프로세서(111)의 제어 하에, 버퍼 메모리(130)를 제어하도록 구성된다. 일례로, 버퍼 제어 회로(112)는 불휘발성 메모리 장치(120)와 호스트가 교환하는 데이터(DATA)를 일시적으로 저장하도록 버퍼 메모리(130)를 제어할 수 있다. 버퍼 제어 회로(112)는 리드 리클레임 동작 시에, 타겟 데이터를 저장하도록 버퍼 메모리(130)를 제어하고, 타겟 영역에 대한 읽기 요청 시에, 타겟 데이터를 출력하도록 버퍼 메모리(130)를 제어할 수 있다.
호스트 인터페이스(113)는 프로세서(111)의 제어에 따라, 호스트 장치와 통신하도록 구성된다. 호스트 인터페이스(113)는 USB (Universal Serial Bus), SATA (Serial AT Attachment), SAS (Serial Attached SCSI), HSIC (High Speed Interchip), SCSI (Small Computer System Interface), PCI (Peripheral Component Interconnection), PCIe (PCI express), NVMe (NonVolatile Memory express), UFS (Universal Flash Storage), SD (Secure Digital), MMC (MultiMedia Card), eMMC (embedded MMC), DIMM (Dual In-line Memory Module), RDIMM (Registered DIMM), LRDIMM (Load Reduced DIMM) 등과 같은 통신 방식들 중 적어도 하나를 이용하여 통신하도록 구성될 수 있다.
에러 정정 코드 엔진(114)은 다양한 원인으로 인해 손상되는 데이터의 에러를 정정할 수 있다. 예를 들어, 에러 정정 코드 엔진(114)은 불휘발성 메모리 장치(120)로부터 읽혀진 데이터의 에러를 검출 및 정정하기 위한 연산을 수행할 수 있다. 일례로, 에러 정정 코드 엔진(114)은 리드 리클레임 매니저(134)의 요청에 따라, 읽혀진 데이터의 정정 가능한 셀들의 개수 또는 정정을 위한 연산의 반복 회수를 카운트할 수 있다. 카운트된 셀들의 개수 또는 반복 회수에 기초하여, 불휘발성 메모리 장치(120)의 타겟 영역이 검출될 수 있다. 다만, 이에 제한되지 않고, 타겟 영역은 에러 정정 코드 엔진(114)을 이용하지 않고 검출될 수 있다. 예를 들어, 타겟 영역은 리드 리클레임 매니저(134)의 요청에 따라, 읽기 카운트를 검출함으로써, 결정될 수 있다. 타겟 영역의 검출에 대한 내용은 후술된다.
메모리 인터페이스(115)는 프로세서(111)의 제어에 따라, 불휘발성 메모리 장치(120)와 통신하도록 구성된다. 메모리 인터페이스(115)는 입출력 채널을 통해, 커맨드(CMD), 어드레스(ADDR), 및 데이터(DATA)를 불휘발성 메모리 장치(120)와 통신할 수 있다. 메모리 인터페이스(115)는 제어 채널을 통해 제어 신호를 불휘발성 메모리 장치(120)와 통신할 수 있다.
버스(118)는 메모리 컨트롤러(110)의 구성 요소들 사이에서 통신 경로를 제공한다. 프로세서(111), 버퍼 제어 회로(112), 호스트 인터페이스(113), 에러 정정 코드 엔진(114), 및 메모리 인터페이스(115)는 버스(118)를 통해 서로 데이터를 교환할 수 있다. 버스(118)는 메모리 컨트롤러(110)에 이용되는 다양한 유형의 통신 포맷을 지원하도록 구성될 수 있다.
도 3은 도 1의 불휘발성 메모리 장치의 예시적인 블록도이다. 도 3을 참조하면, 불휘발성 메모리 장치(120)는 메모리 셀 어레이(121), 어드레스 디코더(124), 페이지 버퍼 회로(125), 데이터 입출력 회로(126), 및 제어 로직 회로(127)를 포함한다. 설명의 편의상 도 1의 도면 부호를 참조하여 도 3이 설명된다.
메모리 셀 어레이(121)는 제1 메모리 영역(122) 및 제2 메모리 영역(123)을 포함할 수 있다. 제1 메모리 영역(122)은 제1 내지 제i 메모리 블록들(BLK1~BLKi)을 포함한다. 제2 메모리 영역(123)은 하나의 메모리 블록(BLKj)을 포함하는 것으로 도시되었으나, 이에 제한되지 않는다. 일례로, 복수의 메모리 블록들(BLK1~BLKj) 각각은 복수의 페이지들을 포함한다. 일례로, 제1 메모리 블록(BLK1)은 제1 내지 제k 페이지들(PG1~PGk)을 포함할 수 있다. 제1 메모리 영역(122) 및 제2 메모리 영역(123)에서, 쓰기 동작 및 읽기 동작은 페이지 단위로 수행될 수 있다. 소거 동작은 메모리 블록 단위로 수행될 수 있다.
메모리 셀 어레이(121)는 워드 라인들(WL) 또는 선택 라인들을 통해 어드레스 디코더(124)에 연결되고, 비트 라인들(BL)을 통해 페이지 버퍼 회로(125)에 연결된다. 하나의 페이지는 하나의 워드 라인에 연결될 수 있다. 읽기 동작을 수행하는 페이지에 읽기 전압이 인가되고, 동일한 메모리 블록 내의 다른 페이지들에 비선택 읽기 전압이 인가될 수 있다. 비선택 읽기 전압은 비선택된 페이지들을 턴온 시키기 위한 전압으로 읽기 전압보다 높은 전압 레벨을 가질 수 있다. 따라서, 비선택된 페이지들에 비선택 읽기 전압이 인가되면, 페이지들에 포함된 메모리 셀들에 주입된 전하량은 간섭에 의한 영향을 받을 수 있다. 이러한 간섭은 읽기 교란(Read Disturbance)로 정의될 수 있다.
일례로, 제a 페이지(PGa)에 대한 읽기 동작이 수행되는 경우, 제1 내지 제a-1 페이지들(PG1~PGa-1) 및 제a+1 내지 제k 페이지들(PGa+1~PGk)에 비선택 읽기 전압이 인가될 수 있다. 특히, 제a 페이지(PGa)에 대한 읽기 동작이 반복적으로 수행되는 경우, 제a 페이지에 인접한 제a+1 페이지(PGa+1) 및 제a-1 페이지(PGa-1)는 읽기 전압과 비선택 읽기 전압 사이의 전위차에 의한 간섭을 지속적으로 받게 될 수 있다. 즉, 제a+1 페이지(PGa+1) 및 제a-1 페이지(PGa-1)는 다른 페이지들에 비하여 더 높은 읽기 교란의 영향을 받을 수 있다.
제1 내지 제k 페이지들(PG1~PGk) 중 정정 불가 에러가 발생될 가능성이 높은 페이지는 메모리 컨트롤러(110)에 의하여 타겟 영역으로 결정될 수 있다. 메모리 컨트롤러(110)는 타겟 영역을 결정하기 위하여, 페이지의 정정 불가 에러의 발생 가능성을 계산할 수 있다. 메모리 컨트롤러(110)는 검사되는 페이지의 정정 불가 에러의 발생 가능성이 기준치 이상 (또는 초과)인 경우, 해당 페이지를 타겟 영역으로 결정할 수 있다.
일례로, 타겟 영역은 호스트에 의한 읽기 요청이 제공되지 않은 백그라운드 동작에서 검출될 수 있다. 백그라운드 동작에서, 메모리 컨트롤러(110)는 에러 검출을 위하여, 주기적으로 메모리 블록들에 대한 읽기 동작을 수행할 수 있다. 일례로, 메모리 컨트롤러(110)는 랜덤하게 또는 순차적으로 페이지들에 대한 읽기 동작을 수행할 수 있다. 메모리 컨트롤러(110)는 데이터 스크러빙(data scrubbing) 등을 통하여, 읽기 동작이 수행된 페이지에 대한 에러를 검사할 수 있다.
일례로, 메모리 컨트롤러(110)는 해당 페이지의 에러 정정 코드 엔진(114)에 의하여 정정된 에러 비트, 즉 에러 비트의 정정 이력에 기초하여, 타겟 영역을 판단할 수 있다. 일례로, 메모리 컨트롤러(110)는 정정 가능한 셀(correctable cell)들의 개수를 기준 개수와 비교하여, 타겟 영역에 포함되는 페이지인지 판단할 수 있다. 기준 개수는 읽기 동작이 페일될 것으로 예상되는 정정 가능한 셀들의 상한보다 작은 값으로 정의될 수 있다. 일례로, 메모리 컨트롤러(110)는 해당 페이지의 에러 정정을 위한 연산의 반복 회수를 기준 회수와 비교하여, 타겟 영역에 포함되는 페이지인지 판단할 수 있다. 기준 회수는 읽기 동작이 페일될 것으로 예상되는 반복 회수의 상한보다 작은 값으로 정의될 수 있다.
제1 내지 제k 페이지들(PG1~PGk) 중 인접한 페이지에 정정 불가 에러를 유발시킬 가능성이 높은 페이지는 메모리 컨트롤러(110)에 의하여 타겟 영역으로 결정될 수 있다. 예를 들어, 읽기 동작이 빈번한 페이지는 주변의 페이지들에 읽기 교란을 유발시킬 수 있다. 즉, 메모리 컨트롤러(110)는 읽기 동작이 많이 발생한 페이지를 타겟 영역으로 결정할 수 있다. 호스트의 읽기 요청에 응답하여, 제a 페이지(PGa)에 대한 읽기 동작이 수행되는 경우, 읽기 카운트가 기준 읽기 카운트와 비교될 수 있다. 기준 읽기 카운트는 특정 페이지에 대한 읽기 동작이 계속적으로 발생함에 따라, 특정 페이지 주변의 페이지들이 간섭되어 에러가 발생될 것으로 예상되는 읽기 회수의 상한보다 작은 값으로 정의될 수 있다.
제a 페이지(PGa)의 읽기 카운트가 기준 읽기 카운트 이상 (또는 초과)인 경우, 제a 페이지(PGa)는 타겟 영역으로 정의될 수 있다. 제a 페이지(PGa) 주변의 페이지들 (제a+1 페이지(PGa+1) 및 제a-1 페이지(PGa-1))은 정정 불가 에러의 발생 가능성이 높다. 따라서, 제a 페이지(PGa)를 타겟 영역으로 지정하여, 제a 페이지(PGa)의 읽기 동작을 리드 캐시 메모리(132)에서 대신 수행함으로써, 주변의 페이지들을 보호할 수 있다. 또는, 제a 페이지(PGa)의 읽기 카운트가 기준 읽기 카운트 이상 (또는 초과)인 경우, 주변의 페이지들인 제a+1 페이지(PGa+1) 및 제a-1 페이지(PGa-1)를 타겟 영역으로 설정할 수도 있다.
타겟 영역이 포함된 메모리 블록에 대하여 리드 리클레임 동작이 수행된다. 제1 메모리 블록(BLK1)에 타겟 영역이 포함되는 경우, 제1 메모리 블록(BLK1)에 저장된 데이터는 다른 메모리 블록으로 이동할 수 있다. 일례로, 제1 메모리 블록(BLK1)에 저장된 데이터는 제2 메모리 블록(BLK2)에 쓰여지고, 제1 메모리 블록(BLK1)에 대한 소거 동작이 수행될 수 있다. 또한, 타겟 영역에 대응되는 타겟 데이터는 상술한 바와 같이, 리드 캐시 메모리(132)에 저장될 수 있다.
제2 메모리 영역(123)은 리드 캐시 메모리(132)의 잔여 공간이 충분하지 않은 경우, 타겟 데이터를 저장할 수 있다. 제1 메모리 영역(122)에 포함된 메모리 셀은 멀티 레벨 셀(MLC)일 수 있고, 제2 메모리 영역(123)에 포함된 메모리 셀은 싱글 레벨 셀(SLC)일 수 있다. 다만, 이에 제한되지 않고, 일례로 제1 메모리 영역(122)은 트리플 레벨 셀(TLC) 또는 쿼드 레벨 셀(QLC)일 수 있다. 단위 메모리 셀당 저장 가능한 비트 수가 증가할수록, 프로그램 상태들이 증가하므로, 정정 불가 에러의 발생 가능성이 증가한다. 제2 메모리 영역(123)이 단일 레벨 셀인 경우, 하나의 프로그램 상태를 갖는다. 따라서, 제2 메모리 영역(123)에 저장된 데이터는 제1 메모리 영역(122)에 저장된 데이터보다 낮은 정정 불가 에러의 발생 가능성을 가질 수 있다.
어드레스 디코더(124)는 메모리 컨트롤러(110)로부터 수신된 어드레스(ADDR)를 디코딩하도록 구성된다. 어드레스 디코더(124)는 디코딩된 어드레스(ADDR)를 기반으로 워드 라인들(WL)에 인가되는 전압을 제어할 수 있다. 일례로, 어드레스 디코더(124)는 읽기 동작을 위한 페이지에 읽기 전압을 제공하고, 나머지 페이지들에 비선택 읽기 전압을 제공할 수 있다.
페이지 버퍼 회로(125)는 동작 모드에 따라 쓰기 드라이버 또는 감지 증폭기로 동작할 수 있다. 쓰기 동작 시에, 페이지 버퍼 회로(125)는 메모리 셀 어레이(121)의 비트 라인으로 쓰기 데이터에 대응하는 비트 라인 전압을 전달한다. 읽기 동작 시에, 페이지 버퍼 회로(125)는 선택된 메모리 셀에 저장된 데이터를 비트 라인을 통해서 감지한다.
데이터 입출력 회로(126)는 쓰기 동작 시에, 메모리 컨트롤러(110)로부터 제공되는 데이터(DATA)를 데이터 라인들(DL)을 통하여 페이지 버퍼 회로(125)로 제공한다. 데이터 입출력 회로(126)는 읽기 동작 시에, 페이지 버퍼 회로(125)로부터 데이터 라인들(DL)을 통하여 데이터(DATA)를 수신한다. 데이터 입출력 회로(126)는 수신된 데이터(DATA)를 메모리 컨트롤러(110)로 전송할 수 있다.
제어 로직 회로(127)은 메모리 컨트롤러(110)로부터 전달되는 커맨드(CMD) 및 제어 신호(CTRL)에 응답하여, 어드레스 디코더(124), 페이지 버퍼 회로(125), 및 데이터 입출력 회로(126)를 제어한다. 제어 로직 회로(127)는 커맨드(CMD)에 기초하여, 쓰기 동작, 읽기 동작, 또는 소거 동작을 수행하도록 불휘발성 메모리 장치(120)를 제어할 수 있다.
도 4는 도 3의 메모리 블록의 예시적인 회로도이다. 메모리 블록(BLK1)은 도 3의 메모리 셀 어레이(121)에 포함된 임의의 메모리 블록일 수 있다. 도 4를 참조하면, 복수의 셀 스트링들(CS11, CS12, CS21, CS22)이 행 방향 및 열 방향으로 배치될 수 있다.
셀 스트링들(CS11, CS12)은 스트링 선택 라인들(SSL1a, SSL1b)과 연결되어, 제1 행을 형성할 수 있다. 셀 스트링들(CS21, CS22)은 스트링 선택 라인들(SSL2a, SSL2b)과 연결되어 제2 행을 형성할 수 있다. 셀 스트링들(CS11, CS21)은 제1 비트 라인(BL1)과 연결되어 제1 열을 형성할 수 있다. 셀 스트링들(CS12, CS22)은 제2 비트 라인(BL2)과 연결되어 제2 열을 형성할 수 있다.
복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각은 스트링 선택된 트랜지스터들(SSTa, SSTb), 복수의 메모리 셀들(MC1~MC8), 접지 선택된 트랜지스터들(GSTa, GSTb), 및 더미 메모리 셀들(DMC1, DMC2)을 포함할 수 있다. 일례로, 복수의 셀 스트링들(CS11, CS12, CS21, CS22)에 포함된 복수의 셀 트랜지스터들 각각은 전하 트랩형 플래시(CTF; charge trap flash) 메모리 셀일 수 있다.
복수의 메모리 셀들(MC1~MC8)은 직렬 연결되며, 행 방향 및 열 방향에 의해 형성된 평면에 수직 방향인 높이 방향으로 적층된다. 스트링 선택된 트랜지스터들(SSTa, SSTb)은 직렬 연결되고, 직렬 연결된 스트링 선택된 트랜지스터들(SSTa, SSTb)은 복수의 메모리 셀들(MC1~MC8) 및 비트 라인들(BL1, BL2) 사이에 제공된다. 접지 선택된 트랜지스터들(GSTa, GSTb)은 직렬 연결되고, 직렬 연결된 접지 선택된 트랜지스터들(GSTa, GSTb)은 복수의 메모리 셀들(MC1~MC8) 및 공통 소스 라인(CSL) 사이에 제공된다. 예시적으로, 복수의 메모리 셀들(MC1~MC8) 및 접지 선택된 트랜지스터들(GSTa, GSTb) 사이에 제1 더미 메모리 셀(DMC1)이 제공될 수 있다. 예시적으로, 복수의 메모리 셀들(MC1~MC8) 및 스트링 선택된 트랜지스터들(SSTa, SSTb) 사이에 제2 더미 메모리 셀(DMC2)이 제공될 수 있다.
셀 스트링들(CS11, CS12, CS21, CS22)의 접지 선택된 트랜지스터들(GSTa, GSTb)은 접지 선택 라인(GSL)에 공통으로 연결될 수 있다. 예시적으로, 동일한 행의 접지 선택된 트랜지스터들은 동일한 접지 선택 라인에 연결될 수 있고, 다른 행의 접지 선택된 트랜지스터들은 다른 접지 선택 라인에 연결될 수 있다. 예를 들어, 제1 행의 셀 스트링들(CS11, CS12)의 제1 접지 선택된 트랜지스터들(GSTa)은 제1 접지 선택 라인에 연결될 수 있고, 제2 행의 셀 스트링들(CS21, CS22)의 제1 접지 선택된 트랜지스터들(GSTa)은 제2 접지 선택 라인에 연결될 수 있다.
메모리 블록(BLK1)의 읽기 동작 및 쓰기 동작은 행 단위, 즉 페이지 단위로 수행될 수 있다. 예를 들어, 스트링 선택 라인들(SSL1a, SSL1b, SSL2a, SSL2b)에 의해 메모리 블록(BLK1)의 하나의 행이 선택될 수 있다. 워드 라인을 구동함으로써 구동되는 행의 메모리 셀들 중 동일한 높이의 메모리 셀들이 선택된다. 선택된 메모리 셀들에서 읽기 및 쓰기 동작이 수행될 수 있다.
메모리 블록(BLK1)에서 소거 동작은 메모리 블록 단위로 수행될 수 있다. 메모리 블록 단위로 소거가 수행될 때, 메모리 블록(BLK1)의 모든 메모리 셀들(MC)이 하나의 소거 요청에 따라 동시에 소거될 수 있다. 다만, 이에 제한되지 않고, 메모리 블록(BLK1)의 메모리 셀들(MC) 중 일부는 하나의 소거 요청에 따라 동시에 소거되고, 나머지 일부는 소거 금지될 수 있다.
도 5는 리드 리클레임을 위한 스토리지 장치의 동작을 설명하기 위한 블록도이다. 도 5를 참조하면, 스토리지 장치(200)는 메모리 컨트롤러(210), 불휘발성 메모리 장치(220), 및 리드 캐시 메모리(230)를 포함한다. 메모리 컨트롤러(210), 불휘발성 메모리 장치(220), 및 리드 캐시 메모리(230) 각각은 도 1의 메모리 컨트롤러(110), 불휘발성 메모리 장치(120), 및 리드 캐시 메모리(132)에 대응된다.
불휘발성 메모리 장치(220)는 복수의 메모리 블록들(BLK1~BLKi)을 포함한다. 예시적으로, 제1 메모리 블록(BLK1)은 제1 타겟 영역(TA1)을 포함하고, 제2 메모리 블록(BLK2)은 제2 타겟 영역(TA2)을 포함한다. 도 4에서 설명된 바와 같이, 제1 및 제2 타겟 영역들(TA1, TA2)은 읽기 카운트, 정정 가능한 셀들의 개수, 또는 에러 정정을 위한 동작의 반복 회수 등에 기초하여, 검출될 수 있다.
메모리 컨트롤러(210)는 불휘발성 메모리 장치(220)로부터 제1 및 제2 타겟 영역들(TA1, TA2)을 검출할 수 있다. 메모리 컨트롤러(210)는 읽기 동작 시에 또는 백그라운드 동작에서 에러 검출을 위한 읽기 동작 시에 제1 및 제2 타겟 영역들(TA1, TA2)을 결정할 수 있다. 메모리 컨트롤러(210)는 제1 및 제2 타겟 영역들(TA1, TA2)에 저장된 타겟 데이터(TAD)를 읽을 수 있다.
메모리 컨트롤러(210)는 타겟 데이터(TAD)를 리드 캐시 메모리(230)에 쓸 수 있다. 이후, 메모리 컨트롤러(210)는 제1 및 제2 메모리 블록들(BLK1, BLK2)에 대한 리드 리클레임 동작을 수행할 수 있다. 일례로, 제1 및 제2 메모리 블록들(BLK1, BLK2)에 저장된 데이터는 다른 메모리 블록들 (예를 들어, 제3 메모리 블록(BLK3) 및 제i 메모리 블록(BLKi))로 이동할 수 있다. 제1 및 제2 메모리 블록들(BLK1, BLK2)에 저장된 데이터는 삭제될 수 있다.
리드 리클레임 동작을 수행하는 동안, 메모리 컨트롤러(210)는 호스트로부터 읽기 요청을 수신할 수 있다. 읽기 요청은 제1 및 제2 타겟 영역들(TA1, TA2)에 포함된 적어도 하나의 페이지에 대한 읽기 요청일 수 있다. 이 경우, 메모리 컨트롤러(210)는 불휘발성 메모리 장치(220)의 해당 페이지에 접근하지 않는다. 메모리 컨트롤러(210)는 리드 캐시 메모리(230)에 저장된 타겟 데이터(TAD) 중 해당 페이지에 대응되는 데이터인 읽기 데이터(RD)를 읽는다. 읽기 데이터(RD)는 메모리 컨트롤러(210)를 통하여 호스트에 전송될 수 있다. 호스트는 리드 리클레임 동작을 인식하지 못할 수 있다. 따라서, 리드 리클레임 동작 중에도, 신속한 읽기 동작이 가능하고, 타겟 데이터(TAD)의 소실이 방지될 수 있다.
도 6은 도 5의 스토리지 장치의 리드 리클레임 방법에 대한 순서도이다. 리드 리클레임 방법은 도 1 및 도 5의 스토리지 장치(100, 200)에서 수행될 수 있다. 설명의 편의상 도 5의 도면 부호를 참조하여, 도 6이 설명된다.
S110 단계에서, 메모리 컨트롤러(210)는 위크 페이지를 검출한다. 위크 페이지는 호스트에 의한 읽기 동작 시에, 또는 백그라운드 동작에서 에러 검출을 위한 읽기 동작 시에 검출될 수 있다.
위크 페이지는 주변의 페이지들의 데이터 손상을 유발시킬 수 있는 페이지일 수 있다. 일례로, 위크 페이지는 읽기 동작 시의 읽기 카운트가 기준 읽기 카운트 이상 (또는 초과)인 페이지를 포함할 수 있다. 위크 페이지는 정정 불가 에러의 발생 가능성이 높은 페이지일 수 있다. 일례로, 위크 페이지는 읽기 동작 시에 정정 가능한 셀들의 개수가 기준 개수 이상 (또는 초과)인 페이지, 또는 에러 정정을 위한 동작의 반복 회수가 기준 회수 이상 (또는 초과)인 페이지를 포함할 수 있다. 이외에도, 위크 페이지는 페이지들의 문턱 전압 산포를 분석하는 등의 다양한 방식으로 검출될 수 있다.
S120 단계에서, 메모리 컨트롤러(210)는 타겟 영역을 읽고, 타겟 영역에 대응되는 타겟 데이터(TAD)를 리드 캐시 메모리(230)에 로드할 수 있다. 타겟 영역은 위크 페이지를 포함할 수 있다.
S130 단계에서, 메모리 컨트롤러(210)는 타겟 영역을 포함하는 메모리 블록(타겟 메모리 블록)에 대한 리드 리클레임 동작을 수행할 수 있다. 메모리 컨트롤러(210)는 타겟 메모리 블록에 저장된 데이터를 다른 메모리 블록으로 이동시킬 수 있다. 메모리 컨트롤러(210)는 타겟 메모리 블록을 읽고, 다른 메모리 블록에 읽혀진 데이터를 쓰고, 타겟 메모리 블록을 소거할 수 있다.
S140 단계에서, 메모리 컨트롤러(210)는 타겟 영역의 적어도 하나의 페이지에 대응되는 읽기 요청을 수신할 수 있다. 읽기 요청은 S130 단계가 진행되는 동안에 수신될 수 있다. 읽기 요청은 호스트로부터 제공될 수 있다.
S150 단계에서, 메모리 컨트롤러(210)는 리드 캐시 메모리(230)에 대한 읽기 동작을 수행할 수 있다. 메모리 컨트롤러(210)는 불휘발성 메모리 장치(220)에 접근하는 대신, 리드 캐시 메모리(230)에 접근할 수 있다. 메모리 컨트롤러(210)는 타겟 데이터(TAD)에서 읽기 요청된 페이지에 대응되는 읽기 데이터(RD)를 리드 캐시 메모리(230)에서 읽을 수 있다. 읽기 데이터(RD)는 메모리 컨트롤러(210)를 통하여 호스트에 전달된다.
도 7은 도 6의 S130 단계를 구체화한 순서도이다. S130 단계에 따른 리드 리클레임 동작은 도 1 및 도 5의 스토리지 장치(100, 200)에서 수행될 수 있다. 설명의 편의상 도 1의 도면 부호를 참조하여, 도 7이 설명된다.
S131 단계에서, 메모리 컨트롤러(110)는 타겟 메모리 블록을 리드 리클레임 매니저(134)에 등록할 수 있다. 일례로, 리드 리클레임 매니저(134)는 리드 리클레임 동작을 수행하기 위한 큐(Queue)를 포함할 수 있다. 메모리 컨트롤러(110)는 타겟 메모리 블록 정보를 생성하여 큐에 등록할 수 있다. 다만, 큐에 등록 가능한 범위가 존재하고, 리드 리클레임이 요구되는 메모리 블록이 다발하는 경우, 선순위 리드 리클레임 동작이 완료될 때까지 타겟 메모리 블록이 큐에 등록되지 않을 수 있다.
만약 S130 단계 이전에 S120 단계가 존재하지 않는다면, 호스트의 읽기 요청에 따라, 큐에 등록되지 않은 타겟 영역에 대한 읽기 동작이 지속적으로 수행되므로, 타겟 데이터가 소실될 수 있다. 다만, S120 단계에서, 타겟 데이터가 리드 캐시 메모리(132)에 저장되므로, 메모리 컨트롤러(110)는 리드 캐시 메모리(132)를 통하여, 타겟 데이터에 대한 읽기 동작을 수행할 수 있다.
S132 단계에서, 메모리 컨트롤러(110)는 다른 메모리 블록에 타겟 메모리 블록에 대응되는 블록 데이터를 복제할 수 있다. 여기에서, 블록 데이터는 타겟 영역에 대응되는 타겟 데이터를 포함한다. 메모리 컨트롤러(110)는 타겟 메모리 블록을 읽고, 읽혀진 블록 데이터를 다른 메모리 블록에 쓸 수 있다.
S133 단계에서, 메모리 컨트롤러(110)는 타겟 메모리 블록을 소거할 수 있다. S133 단계 이후 복제된 블록 데이터를 위한 읽기 요청 시에, 메모리 컨트롤러(110)는 S132 단계에서 블록 데이터가 저장된 메모리 블록을 통하여 데이터를 읽을 수 있다. 리드 리클레임 동작을 통하여, 데이터를 다른 메모리 블록에 저장함으로써, 반복된 읽기에 의한 정정 불가 에러의 발생이 사전에 방지될 수 있다.
도 8은 리드 리클레임을 위한 스토리지 장치의 동작을 설명하기 위한 블록도이다. 도 8을 참조하면, 스토리지 장치(300)는 메모리 컨트롤러(310), 불휘발성 메모리 장치(320), 및 리드 캐시 메모리(330)를 포함한다. 메모리 컨트롤러(310), 불휘발성 메모리 장치(320), 및 리드 캐시 메모리(330) 각각은 도 1의 메모리 컨트롤러(110), 불휘발성 메모리 장치(120), 및 리드 캐시 메모리(132)에 대응된다.
불휘발성 메모리 장치(320)는 제1 메모리 영역(322) 및 제2 메모리 영역(323)을 포함한다. 제1 메모리 영역(322) 및 제2 메모리 영역(323) 각각은 도 3의 제1 메모리 영역(122) 및 제2 메모리 영역(123)에 대응된다. 제1 메모리 영역(322)은 복수의 메모리 블록들(BLK1~BLKi)을 포함한다. 도 5와 같이, 제1 메모리 블록(BLK1)은 제1 타겟 영역(TA1)을 포함하고, 제2 메모리 블록(BLK2)은 제2 타겟 영역(TA2)을 포함할 수 있다.
메모리 컨트롤러(310)는 불휘발성 메모리 장치(320)로부터 제1 및 제2 타겟 영역들(TA1, TA2)을 검출할 수 있다. 메모리 컨트롤러(310)는 제1 및 제2 타겟 영역들(TA1, TA2)에 저장된 타겟 데이터(TAD)를 읽을 수 있다. 메모리 컨트롤러(310)는 타겟 데이터(TAD)를 리드 캐시 메모리(330)에 쓸 수 있다. 다만, 리드 캐시 메모리(330)의 잔여 공간이 타겟 데이터(TAD)를 저장할 만큼 남아있지 않을 수 있다. 메모리 컨트롤러(310)는 리드 캐시 메모리(330)의 잔여 공간을 판단할 수 있다.
리드 캐시 메모리(330)의 잔여 공간이 타겟 데이터(TAD)를 저장할 만큼 충분한 경우, 도 5와 같이, 타겟 데이터(TAD)는 리드 캐시 메모리(330)에 저장된다. 다만, 리드 캐시 메모리(330)의 잔여 공간이 타겟 데이터(TAD)를 저장할 만큼 충분하지 않은 경우, 타겟 데이터(TAD)는 제2 메모리 영역(323)에 저장될 수 있다. 이후, 메모리 컨트롤러(310)는 제1 및 제2 메모리 블록들(BLK1, BLK2)에 대한 리드 리클레임 동작을 수행할 수 있다.
리드 리클레임 동작을 수행하는 동안, 메모리 컨트롤러(310)는 호스트로부터 제1 및 제2 타겟 영역들(TA1, TA2)에 포함된 적어도 하나의 페이지에 대한 읽기 요청을 수신할 수 있다. 메모리 컨트롤러(310)는 제1 메모리 영역(322)에 접근하지 않고, 제2 메모리 영역(323)에 접근한다. 메모리 컨트롤러(310)는 제2 메모리 영역(323)에 저장된 타겟 데이터(TAD) 중 읽기 요청에 대응되는 읽기 데이터(RD)를 읽는다. 읽기 데이터(RD)는 메모리 컨트롤러(310)를 통하여 호스트에 전송될 수 있다.
도 8에 도시된 바와 달리, 리드 캐시 메모리(330)에 잔여 공간이 충분하지 않더라도, 타겟 데이터(TAD)는 리드 캐시 메모리(330)에 저장될 수 있다. 이를 위하여, 리드 캐시 메모리(330)에 기저장된 데이터 중 일부를 축출(eviction)할 수 있다. 일례로, 축출된 데이터는 제2 메모리 영역(323)에 저장될 수 있다. 축출된 데이터에 의하여 확보된 공간은 타겟 데이터(TAD)를 저장하는데 이용될 수 있다. 이 경우, 읽기 요청에 응답하여, 메모리 컨트롤러(310)는 리드 캐시 메모리(330)로부터 읽기 데이터(RD)를 읽을 수 있다.
도 9는 도 8의 스토리지 장치의 리드 리클레임 방법에 대한 순서도이다. 리드 리클레임 방법은 도 1 및 도 8의 스토리지 장치(100, 300)에서 수행될 수 있다. 설명의 편의상 도 8의 도면 부호를 참조하여, 도 9가 설명된다.
S210 단계에서, 메모리 컨트롤러(310)는 제1 메모리 영역(322)에서 위크 페이지를 검출한다. S210 단계는 도 6의 S110 단계에 대응된다. 메모리 컨트롤러(310)는 위크 페이지에 기초하여, 타겟 영역을 결정하고, 타겟 영역을 읽을 수 있다.
S220 단계에서, 메모리 컨트롤러(310)는 리드 캐시 메모리(330)의 공간이 타겟 영역에 대응되는 타겟 데이터(TAD)를 로드하기에 충분한지 판단할 수 있다. 리드 캐시 메모리(330)의 잔여 공간이 타겟 데이터(TAD)의 크기 이상 (또는 초과)인 경우, 잔여 공간은 충분한 것으로 판단될 수 있다. 리드 캐시 메모리(330)의 잔여 공간이 충분한 경우, S230 단계가 진행된다. 리드 캐시 메모리(330)의 잔여 공간이 타겟 데이터(TAD)의 크기 미만 (또는 이하)인 경우, 잔여 공간은 충분하지 않은 것으로 판단될 수 있다. 리드 캐시 메모리(330)의 잔여 공간이 충분하지 않은 경우, S240 단계가 진행된다.
S230 단계에서, 리드 캐시 메모리(330)에 잔여 공간이 충분하므로, 메모리 컨트롤러(310)는 리드 캐시 메모리(330)에 타겟 데이터(TAD)를 로드한다. S240 단계에서, 리드 캐시 메모리(330)에 잔여 공간이 충분하지 않으므로, 메모리 컨트롤러(310)는 제2 메모리 영역(323)에 타겟 데이터(TAD)를 로드한다.
S250 단계에서, 메모리 컨트롤러(310)는 타겟 영역을 포함하는 메모리 블록에 대한 리드 리클레임 동작을 수행할 수 있다. 리드 리클레임 동작이 수행되는 동안, 메모리 컨트롤러(310)는 호스트로부터 타겟 영역의 적어도 하나의 페이지에 대응되는 읽기 요청을 수신할 수 있다. S250 단계가 S230 단계 이후에 진행되는 경우, 메모리 컨트롤러(310)는 읽기 데이터(RD)를 리드 캐시 메모리(330)에서 읽을 수 있다. S250 단계가 S240 단계 이후에 진행되는 경우, 메모리 컨트롤러(310)는 읽기 데이터(RD)를 제2 메모리 영역(323)에서 읽을 수 있다.
도 10은 도 5 또는 도 8의 스토리지 장치의 리드 리클레임 방법에 대한 순서도이다. 리드 리클레임 방법은 도 1, 도 5, 및 도 8의 스토리지 장치(100, 200, 300)에서 수행될 수 있다. 설명의 편의상 도 8의 도면 부호를 참조하여, 도 10이 설명된다.
S310 단계에서, 메모리 컨트롤러(310)는 위크 페이지를 검출한다. S310 단계는 도 6의 S110 단계 또는 도 8의 S210 단계에 대응된다. 메모리 컨트롤러(310)는 위크 페이지에 기초하여, 타겟 영역을 결정하고, 타겟 영역을 읽을 수 있다.
S320 단계에서, 메모리 컨트롤러(310)는 리드 캐시 메모리(330)의 공간이 타겟 영역에 대응되는 타겟 데이터(TAD)를 로드하기에 충분한지 판단할 수 있다. 리드 캐시 메모리(330)의 잔여 공간이 충분한 경우, S340 단계가 진행된다. 리드 캐시 메모리(330)의 잔여 공간이 충분하지 않은 경우, S330 단계가 진행된다.
S330 단계에서, 리드 캐시 메모리(330)에 잔여 공간이 충분하지 않으므로, 메모리 컨트롤러(310)는 축출(eviction) 데이터를 결정한다. 축출 데이터는 리드 캐시 메모리(330)에서 소거된다. 불휘발성 메모리 장치(320)가 제2 메모리 영역(323)을 포함하는 경우, 축출 데이터는 제2 메모리 영역(323)에 쓰여질 수 있다.
일례로, 축출 데이터는 데이터의 사용 빈도에 기초하여 결정될 수 있다. 예를 들어, 리드 캐시 메모리(330)에 저장된 데이터는 읽기 카운트 (또는 히트 카운트(hit count))가 적은 순서대로 축출될 수 있다. 즉, 읽기 카운트가 낮은 데이터는 주변 페이지들을 손상시킬 우려가 적은 것으로 판단되어 축출될 수 있다.
일례로, 축출 데이터는 리드 리클레임 동작의 수행 순서에 기초하여 결정될 수 있다. 예를 들어, 리드 리클레임 동작이 완료된 순서대로 리드 캐시 메모리(330)에 저장된 데이터가 축출될 수 있다. 리드 리클레임 동작은 큐에 등록된 순서대로 수행될 수 있고, 큐에 등록된 메모리 블록의 순서에 기초하여, 메모리 블록에 대응되는 데이터가 축출될 수 있다. 즉, 리드 리클레임 동작이 선순위로 수행되는 데이터는 소실 가능성이 적은 것으로 판단되어 축출될 수 있다.
일례로, 축출 데이터는 데이터의 손상 정도에 기초하여 결정될 수 있다. 예를 들어, 열화가 작은 순서대로 데이터가 축출될 수 있다. 예를 들어, 열화는 도 2의 에러 정정 코드 엔진(114)에 의하여 정정된 에러 비트에 기초하여 판단될 수 있다. 예를 들어, 열화 정도는 정정 가능한 셀들의 개수 또는 에러 정정을 위한 동작의 반복 회수에 기초하여 판단될 수 있다. 정정 가능한 셀들의 개수 또는 반복 회수가 작을수록 데이터가 먼저 축출될 수 있다. 즉, 열화가 작은 데이터는 소실 가능성이 적은 것으로 판단되어 축출될 수 있다.
상술된 축출 데이터의 예시는 리드 캐시 메모리(330)에 저장된 데이터에 대하여 결정되는 것으로 설명되었으나, 이에 제한되지 않고, 제2 메모리 영역(323)에 저장된 데이터에도 적용될 수 있는 것으로 이해될 것이다. 즉, 제2 메모리 영역(323)에 잔여 공간이 충분하지 않은 경우, 데이터의 사용 빈도, 리드 리클레임 동작의 수행 순서, 또는 데이터의 손상 정도에 기초하여, 데이터가 축출될 수 있다.
S340 단계에서, 메모리 컨트롤러(310)는 리드 캐시 메모리(330)에 타겟 데이터(TAD)를 로드한다. S320 단계에서, 리드 캐시 메모리(330)에 잔여 공간이 충분한 것으로 판단되거나, S330 단계에서, 리드 캐시 메모리(330)의 일부 데이터를 축출하였으므로, 타겟 데이터(TAD)는 리드 캐시 메모리(330)에 저장될 수 있다.
S350 단계에서, 타겟 영역을 포함하는 메모리 블록에 대한 리드 리클레임 동작을 수행할 수 있다. 리드 리클레임 동작이 수행되는 동안, 메모리 컨트롤러(310)는 호스트로부터 타겟 영역의 적어도 하나의 페이지에 대응되는 읽기 요청을 수신할 수 있다. 메모리 컨트롤러(310)는 읽기 데이터(RD)를 리드 캐시 메모리(330)에서 읽을 수 있다.
도 11은 본 발명의 실시예에 따른 스토리지 시스템의 예시적인 블록도이다. 도 11을 참조하면, 스토리지 시스템(1000)은 호스트(1100) 및 솔리드 스테이트 드라이브(1200) (이하, SSD)를 포함한다. 도 1 내지 도 10에서 설명된 스토리지 장치(100, 200, 300)는 SSD(1200)에 구현된다. SSD(1200)는 신호 커넥터(1201)를 통해 호스트(1100)와 신호를 주고 받고, 전원 커넥터(1202)를 통해 전원을 입력받는다. SSD(1200)는 SSD 컨트롤러(1210), 복수의 불휘발성 메모리 장치들(1221~122n), 보조 전원 장치(1230), 및 버퍼 메모리(1240)를 포함한다.
SSD 컨트롤러(1210)는 호스트(1100)로부터 수신된 신호에 응답하여 복수의 불휘발성 메모리 장치들(1221~122n)을 제어할 수 있다. 복수의 불휘발성 메모리 장치들(1221~122n) 각각은 복수의 채널들(CH1~CHn)을 통하여 SSD 컨트롤러(1210)와 연결된다. SSD 컨트롤러(1210) 및 복수의 불휘발성 메모리 장치들(1221~122n) 각각은 도 1 내지 도 10을 참조하여 설명된 메모리 컨트롤러(110, 210, 310) 및 불휘발성 메모리 장치(120, 220, 230)에 대응된다.
즉, SSD 컨트롤러(1210)는 복수의 불휘발성 메모리 장치들(1221~122n)의 타겟 영역을 검출하고, 타겟 영역에 저장된 타겟 데이터를 버퍼 메모리(1240)에 쓸 수 있다. SSD 컨트롤러(1210)는 타겟 영역에 대응되는 메모리 블록의 리드 리클레임 동작을 수행한다. 리드 리클레임 동작을 수행하는 동안, 타겟 영역에 대응되는 읽기 요청이 수신된 경우, SSD 컨트롤러(1210)는 버퍼 메모리(1240)로부터 타겟 데이터를 읽을 수 있다.
보조 전원 장치(1230)는 전원 커넥터(1202)를 통해 호스트(1100)로부터 전원을 입력 받아 충전될 수 있다. 보조 전원 장치(1230)는 호스트(1100)로부터의 전원 공급이 원활하지 않을 경우, 스토리지 시스템(1000)의 전원을 제공할 수 있다. 일례로, 보조 전원 장치(1230)는 SSD(1200) 내에 위치하거나, SSD(1200) 외부에 위치할 수 있다.
버퍼 메모리(1240)는 SSD(1200)의 버퍼 메모리로 동작한다. 버퍼 메모리(1240)는 도 1에서 설명된 버퍼 메모리(130)에 대응된다. 버퍼 메모리(1240)는 리드 리클레임 동작 전에 타겟 데이터를 저장하기 위한 리드 캐시 메모리(1242)를 포함한다. 리드 캐시 메모리(1242)는 도 1 내지 도 10을 참조하여 설명된 리드 캐시 메모리(132, 230, 330)에 대응된다.
도 12는 본 발명의 실시예에 따른 스토리지 시스템의 예시적인 블록도이다. 도 12를 참조하면, 스토리지 시스템(2000)은 어플리케이션 프로세서(2100), 스토리지부(2200), 버퍼 메모리(2300), 사용자 인터페이스(2400), 모뎀(2500), 및 버스(2600)를 포함한다. 도 1 내지 10에서 설명된 스토리지 장치(100, 200, 300)는 스토리지 시스템(2000)의 스토리지부(2200) 및 버퍼 메모리(2300)를 통하여 구현될 수 있다.
어플리케이션 프로세서(2100)는 스토리지 시스템(2000)에 포함된 구성 요소들, 운영체제(OS; Operating System)를 구동시킬 수 있다. 예시적으로, 어플리케이션 프로세서(2100)는 스토리지 시스템(2000)에 포함된 구성 요소들을 제어하는 컨트롤러들, 인터페이스들, 그래픽 엔진 등을 포함할 수 있다. 어플리케이션 프로세서(2100)는 시스템-온-칩(SoC; System-on-Chip)으로 제공될 수 있다.
스토리지부(2200)은 복수의 스토리지 장치들(2210~22n0)을 포함한다. 복수의 스토리지 장치들(2210~22n0) 각각은 도 1 내지 도 10을 참조하여 설명된 스토리지 장치(100, 200, 300)에 대응될 수 있다. 복수의 스토리지 장치들(2210~22n0) 각각은 상술된 리드 리클레임 동작을 수행할 수 있다. 스토리지부(2200)는 어플리케이션 프로세서(2100)로부터 수신한 데이터를 저장할 수 있다. 스토리지부(2200)는 복수의 스토리지 장치들(2210~22n0)에 저장된 데이터를 어플리케이션 프로세서(2100)로 전송할 수 있다.
버퍼 메모리(2300)는 스토리지 시스템(2000)의 버퍼 메모리로 동작한다. 버퍼 메모리(2300)는 리드 리클레임 동작 전에 타겟 데이터를 저장하기 위한 리드 캐시 메모리(2320)를 포함한다. 리드 캐시 메모리(2320)는 도 1 내지 도 10을 참조하여 설명된 리드 캐시 메모리(132, 230, 330)에 대응된다. 리드 캐시 메모리(2320)는 복수의 스토리지 장치들(2210~22n0) 외부에 구비될 수 있다.
사용자 인터페이스(2400)는 어플리케이션 프로세서(2100)에 데이터 또는 명령어를 입력하거나 또는 외부 장치로 데이터를 출력하는 인터페이스들을 포함할 수 있다. 사용자 인터페이스(1600)는 키보드, 마우스, 터치 패널, 마이크 등과 같이 사용자로부터 정보를 수신하는 사용자 입력 인터페이스, 그리고 모니터, 스피커, 모터 등과 같이 사용자에게 정보를 제공하는 사용자 출력 인터페이스를 포함할 수 있다.
모뎀(2500)은 외부 장치와 유선 또는 무선 통신을 수행하도록 구성된다. 모뎀(2500)은 LTE, 이더넷, 와이파이, 블루투스 등과 같은 다양한 표준들 중 적어도 하나를 구현하도록 구성될 수 있다.
버스(2600)는 스토리지 시스템(2000)의 구성 요소들 사이에 채널들을 제공할 수 있다. 버스(2600)는 PCIe, AMBA 등과 같은 다양한 표준들 중 하나에 따라 구현될 수 있다.
도 13은 본 발명의 실시예에 따른 스토리지 시스템의 예시적인 블록도이다. 도 13을 참조하면, 스토리지 시스템(3000)은 호스트(3100) 및 스토리지 장치(3200)를 포함한다. 호스트(3100)는 버퍼 메모리(3110)를 포함한다. 도 1 내지 도 10에서 설명된 스토리지 장치(100, 200, 300)는 스토리지 시스템(3000)의 스토리지 장치(3200) 및 버퍼 메모리(3110)를 통하여 구현될 수 있다.
버퍼 메모리(3110)는 스토리지 시스템(3000)의 버퍼 메모리로 동작한다. 버퍼 메모리(3110)는 리드 리클레임 동작 전에 타겟 데이터를 저장하기 위한 리드 캐시 메모리(3112)를 포함한다. 리드 캐시 메모리(3112)는 도 1 내지 도 10을 참조하여 설명된 리드 캐시 메모리(132, 230, 330)에 대응된다. 리드 캐시 메모리(3112)는 호스트에 구비될 수 있다.
스토리지 장치(3200)는 메모리 컨트롤러(3210) 및 불휘발성 메모리 장치(3220)를 포함한다. 메모리 컨트롤러(3210) 및 불휘발성 메모리 장치(3220) 각각은 도 1 내지 도 10을 참조하여 설명된 메모리 컨트롤러(110, 210, 310) 및 불휘발성 메모리 장치(120, 220, 230)에 대응된다. 즉, 메모리 컨트롤러(3210)는 불휘발성 메모리 장치(3220)의 타겟 영역을 검출하고, 타겟 영역에 저장된 타겟 데이터를 리드 캐시 메모리(3112)에 쓸 수 있다.
위에서 설명한 내용은 본 발명을 실시하기 위한 구체적인 예들이다. 본 발명에는 위에서 설명한 실시 예들뿐만 아니라, 단순하게 설계 변경하거나 용이하게 변경할 수 있는 실시 예들도 포함될 것이다. 또한, 본 발명에는 상술한 실시 예들을 이용하여 앞으로 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다.
100, 200, 300: 스토리지 장치
110, 210, 310: 메모리 컨트롤러
120, 220, 320: 불휘발성 메모리 장치
130, 1240, 2300, 3110: 버퍼 메모리
132, 230, 330, 1242, 2320, 3112: 리드 캐시 메모리

Claims (20)

  1. 불휘발성 메모리 장치;
    상기 불휘발성 메모리 장치에서 리드 리클레임 동작을 수행하기 위한 제1 메모리 블록을 결정하고, 상기 제1 메모리 블록의 타겟 영역으로부터 제1 타겟 데이터를 읽는 메모리 컨트롤러; 및
    상기 제1 타겟 데이터가 저장되는 버퍼 메모리를 포함하고,
    상기 메모리 컨트롤러는:
    상기 리드 리클레임 동작을 수행하기로 결정한 것에 응답하여 상기 제1 타겟 데이터를 포함하는 상기 제1 메모리 블록에 저장된 데이터를 상기 불휘발성 메모리 장치의 제2 메모리 블록으로 이동시킨 후, 상기 제1 메모리 블록에 대한 소거 동작을 수행하고;
    상기 리드 리클레임 동작을 수행하기 전에, 상기 제1 메모리 블록에 저장된 상기 제1 타겟 데이터를 상기 버퍼 메모리에 저장하고;
    상기 리드 리클레임 동작을 수행하는 동안, 호스트로부터의 상기 타겟 영역의 적어도 일부에 대응되는 제1 읽기 요청에 응답하여 상기 버퍼 메모리에 저장된 상기 제1 타겟 데이터의 적어도 일부를 읽고; 그리고
    상기 리드 리클레임 동작을 완료한 후, 상기 호스트로부터의 상기 타겟 영역의 적어도 일부에 대응되는 제2 읽기 요청에 응답하여 상기 제2 메모리 블록에 저장된 상기 제1 타겟 데이터의 적어도 일부를 읽는 스토리지 장치.
  2. 제1 항에 있어서,
    상기 타겟 영역은, 읽기 카운트가 기준 읽기 카운트 이상인 페이지를 포함하는 스토리지 장치.
  3. 제1 항에 있어서,
    상기 타겟 영역은, 읽기 카운트가 기준 읽기 카운트 이상인 제1 페이지에 인접한 제2 페이지를 포함하는 스토리지 장치.
  4. 제1 항에 있어서,
    상기 타겟 영역은, 정정 가능한 셀들의 개수가 기준 개수 이상이거나 상기 정정 가능한 셀들의 정정을 위한 동작의 반복 회수가 기준 회수 이상인 페이지를 포함하는 스토리지 장치.
  5. 제1 항에 있어서,
    상기 메모리 컨트롤러는, 상기 리드 리클레임 동작을 수행하기로 결정하기 전에 상기 호스트로부터 상기 제1 메모리 블록에 대한 제3 읽기 요청을 수신하지 않을 때, 상기 타겟 영역을 검출하는 스토리지 장치.
  6. 제1 항에 있어서,
    상기 메모리 컨트롤러는, 상기 제1 메모리 블록에 포함된 적어도 하나의 페이지를 읽고, 상기 타겟 영역을 검출하는 스토리지 장치.
  7. 제1 항에 있어서,
    상기 제1 타겟 데이터는, 상기 버퍼 메모리에 포함된 리드 캐시 메모리에 저장되고,
    상기 메모리 컨트롤러는, 상기 불휘발성 메모리 장치에서 제2 리드 리클레임 동작을 수행하기 위한 제3 메모리 블록을 결정하고, 상기 제3 메모리 블록의 제2 타겟 영역으로부터 제2 타겟 데이터를 읽고, 상기 제2 타겟 데이터의 크기와 상기 리드 캐시 메모리의 잔여 공간을 비교하는 스토리지 장치.
  8. 제7 항에 있어서,
    상기 메모리 컨트롤러는, 상기 잔여 공간이 상기 제2 타겟 데이터의 상기 크기 이상인 경우, 상기 제2 타겟 데이터를 상기 리드 캐시 메모리에 쓰는 스토리지 장치.
  9. 제7 항에 있어서,
    상기 메모리 컨트롤러는, 상기 잔여 공간이 상기 제2 타겟 데이터의 상기 크기보다 작은 경우, 상기 제2 타겟 데이터를 상기 불휘발성 메모리 장치의 제4 메모리 블록에 쓰는 스토리지 장치.
  10. 제9 항에 있어서,
    상게 제4 메모리 블록은 상기 제1 내지 제3 메모리 블록들보다 적은 단위 메모리 셀 당 저장되는 비트 수를 갖는 스토리지 장치.
  11. 제7 항에 있어서,
    상기 메모리 컨트롤러는, 상기 잔여 공간이 상기 제2 타겟 데이터의 상기 크기보다 작은 경우, 상기 제1 타겟 데이터를 상기 불휘발성 메모리 장치의 제4 메모리 블록으로 이동시키고, 상기 제2 타겟 데이터를 상기 리드 캐시 메모리에 쓰는 스토리지 장치.
  12. 제7 항에 있어서,
    상기 메모리 컨트롤러는, 상기 잔여 공간이 상기 제2 타겟 데이터의 상기 크기보다 작은 경우, 상기 리드 캐시 메모리에 저장된 페이지들에 대응되는 읽기 카운트들에 기초하여, 상기 리드 캐시 메모리로부터 축출되는 데이터를 결정하는 스토리지 장치.
  13. 제7 항에 있어서,
    상기 메모리 컨트롤러는, 상기 잔여 공간이 상기 제2 타겟 데이터의 상기 크기보다 작은 경우, 상기 리드 캐시 메모리에 저장된 페이지들에 대응되는 상기 불휘발성 메모리 장치의 메모리 블록들의 리드 리클레임 동작 순서에 기초하여, 상기 리드 캐시 메모리로부터 축출되는 데이터를 결정하는 스토리지 장치.
  14. 제7 항에 있어서,
    상기 메모리 컨트롤러는, 상기 잔여 공간이 상기 제2 타겟 데이터의 상기 크기보다 작은 경우, 상기 리드 캐시 메모리에 저장된 페이지들 각각의 정정된 에러 비트들에 기초하여, 상기 리드 캐시 메모리로부터 축출되는 데이터를 결정하는 스토리지 장치.
  15. 제1 항에 있어서,
    상기 메모리 컨트롤러는, 상기 제1 타겟 데이터가 상기 버퍼 메모리에 저장된 이후에, 상기 타겟 영역의 접근을 차단하는 스토리지 장치.
  16. 제1 메모리 블록 및 제2 메모리 블록을 포함하는 불휘발성 메모리 장치;
    읽기 카운트와 기준 읽기 카운트의 비교 결과에 기초하여, 상기 제1 메모리 블록의 타겟 영역을 검출하는 메모리 컨트롤러; 및
    상기 타겟 영역에 대응되는 타겟 데이터가 저장되는 버퍼 메모리를 포함하고,
    상기 메모리 컨트롤러는:
    리드 리클레임 동작을 수행하기로 결정한 것에 응답하여, 상기 타겟 데이터를 포함하는 상기 제1 메모리 블록에 저장된 데이터를 상기 불휘발성 메모리 장치의 상기 제2 메모리 블록으로 이동시킨 후, 상기 제1 메모리 블록에 대한 소거 동작을 수행하고;
    상기 리드 리클레임 동작을 수행하기 전에, 상기 제1 메모리 블록에 저장된 상기 타겟 데이터를 상기 버퍼 메모리에 저장하고;
    상기 리드 리클레임 동작을 수행하는 동안, 호스트로부터의 상기 타겟 영역의 적어도 일부에 대응되는 제1 읽기 요청에 응답하여 상기 버퍼 메모리에 저장된 상기 타겟 데이터의 적어도 일부를 읽고; 그리고
    상기 리드 리클레임 동작을 완료한 후, 상기 호스트로부터의 상기 타겟 영역의 적어도 일부에 대응되는 제2 읽기 요청에 응답하여 상기 제2 메모리 블록에 저장된 상기 타겟 데이터의 적어도 일부를 읽는 스토리지 장치.
  17. 삭제
  18. 제16 항에 있어서,
    상기 타겟 영역은 상기 리드 리클레임 동작을 수행하기로 결정하기 전, 상기 호스트로부터의 제3 읽기 요청에 응답하여 검출되는 스토리지 장치.
  19. 제1 메모리 블록 및 제2 메모리 블록을 포함하는 불휘발성 메모리 장치;
    에러 비트의 정정 동작에 기초하여, 상기 제1 메모리 블록의 타겟 영역을 검출하는 메모리 컨트롤러; 및
    상기 타겟 영역에 대응되는 타겟 데이터가 저장되는 버퍼 메모리를 포함하고,
    상기 메모리 컨트롤러는:
    리드 리클레임 동작을 수행하기로 결정한 것에 응답하여, 상기 타겟 데이터를 포함하는 상기 제1 메모리 블록에 저장된 데이터를 상기 불휘발성 메모리 장치의 상기 제2 메모리 블록으로 이동시킨 후, 상기 제1 메모리 블록에 대한 소거 동작을 수행하고;
    상기 리드 리클레임 동작을 수행하기 전에, 상기 제1 메모리 블록에 저장된 상기 타겟 데이터를 상기 버퍼 메모리에 저장하고;
    상기 리드 리클레임 동작을 수행하는 동안, 호스트로부터의 상기 타겟 영역의 적어도 일부에 대응되는 제1 읽기 요청에 응답하여 상기 버퍼 메모리에 저장된 상기 타겟 데이터의 적어도 일부를 읽고; 그리고
    상기 리드 리클레임 동작을 완료한 후, 상기 호스트로부터의 상기 타겟 영역의 적어도 일부에 대응되는 제2 읽기 요청에 응답하여 상기 제2 메모리 블록에 저장된 상기 타겟 데이터의 적어도 일부를 읽는 스토리지 장치.
  20. 제19 항에 있어서,
    상기 메모리 컨트롤러는, 상기 에러 비트의 상기 정정 동작에 기초하여, 정정 가능한 셀들의 개수 또는 상기 정정 가능한 셀들에 대한 정정 동작의 반복 회수를 계산하고, 계산 결과에 기초하여 상기 타겟 영역을 검출하는 스토리지 장치.
KR1020180119087A 2018-10-05 2018-10-05 리드 리클레임 동작 시에 버퍼 메모리를 이용하는 스토리지 장치 KR102546229B1 (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR1020180119087A KR102546229B1 (ko) 2018-10-05 2018-10-05 리드 리클레임 동작 시에 버퍼 메모리를 이용하는 스토리지 장치
US16/506,809 US11301388B2 (en) 2018-10-05 2019-07-09 Storage device using buffer memory in read reclaim operation
SG10201909143XA SG10201909143XA (en) 2018-10-05 2019-09-30 Storage device using buffer memory in read reclaim operation
EP19201359.7A EP3633516B1 (en) 2018-10-05 2019-10-03 Storage device using buffer memory in read reclaim operation
CN201910950548.5A CN111007983A (zh) 2018-10-05 2019-10-08 在读取回收操作中使用缓冲存储器的存储设备
US17/688,148 US11625330B2 (en) 2018-10-05 2022-03-07 Storage device using buffer memory in read reclaim operation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180119087A KR102546229B1 (ko) 2018-10-05 2018-10-05 리드 리클레임 동작 시에 버퍼 메모리를 이용하는 스토리지 장치

Publications (2)

Publication Number Publication Date
KR20200039882A KR20200039882A (ko) 2020-04-17
KR102546229B1 true KR102546229B1 (ko) 2023-06-22

Family

ID=68137941

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180119087A KR102546229B1 (ko) 2018-10-05 2018-10-05 리드 리클레임 동작 시에 버퍼 메모리를 이용하는 스토리지 장치

Country Status (5)

Country Link
US (2) US11301388B2 (ko)
EP (1) EP3633516B1 (ko)
KR (1) KR102546229B1 (ko)
CN (1) CN111007983A (ko)
SG (1) SG10201909143XA (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102546229B1 (ko) * 2018-10-05 2023-06-22 삼성전자주식회사 리드 리클레임 동작 시에 버퍼 메모리를 이용하는 스토리지 장치
JP2020144554A (ja) * 2019-03-05 2020-09-10 キオクシア株式会社 記憶装置およびデータ読出方法
KR20200113990A (ko) * 2019-03-27 2020-10-07 에스케이하이닉스 주식회사 메모리 시스템 내 메모리 장치의 동작 상태를 확인하는 방법 및 장치
US11256628B2 (en) * 2019-08-02 2022-02-22 EMC IP Holding Company LLC Volatile read cache in a content addressable storage system
KR20210108208A (ko) * 2020-02-25 2021-09-02 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US20210265004A1 (en) * 2020-02-25 2021-08-26 SK Hynix Inc. Storage device and operating method thereof
KR20220025558A (ko) * 2020-08-24 2022-03-03 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
US11886741B2 (en) 2021-04-16 2024-01-30 Samsung Electronics Co., Ltd. Method and storage device for improving NAND flash memory performance for intensive read workloads
KR102344380B1 (ko) 2021-06-02 2021-12-28 삼성전자주식회사 비휘발성 메모리 장치, 그것을 제어하는 제어기, 그것을 포함하는 저장 장치 및 그것의 동작 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180190362A1 (en) * 2016-12-30 2018-07-05 Western Digital Technologies, Inc. Methods and apparatus for read disturb detection and handling
US20180276136A1 (en) * 2017-03-23 2018-09-27 SK Hynix Inc. Data storage device and operating method thereof

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6396744B1 (en) 2000-04-25 2002-05-28 Multi Level Memory Technology Flash memory with dynamic refresh
JP2010039737A (ja) * 2008-08-05 2010-02-18 Koyo Electronics Ind Co Ltd プログラマブルコントローラ高速化方式およびこの方式によるプログラマブルコントローラ
US8886990B2 (en) * 2011-01-27 2014-11-11 Apple Inc. Block management schemes in hybrid SLC/MLC memory
WO2013085488A1 (en) 2011-12-05 2013-06-13 Intel Corporation Background reordering - a preventive wear-out control mechanism with limited overhead
US20140101370A1 (en) 2012-10-08 2014-04-10 HGST Netherlands B.V. Apparatus and method for low power low latency high capacity storage class memory
US10248328B2 (en) 2013-11-07 2019-04-02 Netlist, Inc. Direct data move between DRAM and storage on a memory module
US9229644B2 (en) * 2013-11-25 2016-01-05 Sandisk Technologies Inc. Targeted copy of data relocation
US9710173B2 (en) 2014-05-20 2017-07-18 Micron Technology, Inc. Read cache memory with DRAM class promotion
US9804922B2 (en) * 2014-07-21 2017-10-31 Sandisk Technologies Llc Partial bad block detection and re-use using EPWR for block based architectures
US9766972B2 (en) * 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
KR20160144546A (ko) * 2015-06-08 2016-12-19 삼성전자주식회사 스토리지 장치
KR102403253B1 (ko) * 2015-07-06 2022-05-30 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 스토리지 장치
US10229047B2 (en) 2016-08-06 2019-03-12 Wolley Inc. Apparatus and method of wear leveling for storage class memory using cache filtering
KR20180076715A (ko) * 2016-12-28 2018-07-06 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
KR20180076765A (ko) 2016-12-28 2018-07-06 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR102302187B1 (ko) * 2017-03-13 2021-09-14 삼성전자주식회사 비휘발성 메모리 장치의 동작 방법 및 비휘발성 메모리 장치
KR102546229B1 (ko) * 2018-10-05 2023-06-22 삼성전자주식회사 리드 리클레임 동작 시에 버퍼 메모리를 이용하는 스토리지 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180190362A1 (en) * 2016-12-30 2018-07-05 Western Digital Technologies, Inc. Methods and apparatus for read disturb detection and handling
US20180276136A1 (en) * 2017-03-23 2018-09-27 SK Hynix Inc. Data storage device and operating method thereof

Also Published As

Publication number Publication date
US11301388B2 (en) 2022-04-12
KR20200039882A (ko) 2020-04-17
US20220188236A1 (en) 2022-06-16
US20200110708A1 (en) 2020-04-09
EP3633516A1 (en) 2020-04-08
CN111007983A (zh) 2020-04-14
US11625330B2 (en) 2023-04-11
EP3633516B1 (en) 2023-07-26
SG10201909143XA (en) 2020-05-28

Similar Documents

Publication Publication Date Title
KR102546229B1 (ko) 리드 리클레임 동작 시에 버퍼 메모리를 이용하는 스토리지 장치
US10373693B2 (en) Storage device and method of operating the storage device
US10789125B2 (en) Memory system and method
CN110827907A (zh) 包括非易失性存储器器件的储存设备及其操作方法
US10388395B2 (en) Storage device and bad block assigning method thereof
KR20210020689A (ko) 추론에 기초하여 요청을 처리하는 메모리 시스템 및 이의 동작 방법
US20190377641A1 (en) Memory system having storage device and memory controller and operating method thereof
US11068201B2 (en) Flash memory controller, method for managing flash memory module and associated electronic device
KR102306853B1 (ko) 호스트 장치가 스토리지 장치를 제어하는 방법 및 호스트 장치와 스토리지 장치를 포함하는 메모리 시스템
US11061615B2 (en) Memory system, memory controller and operating method thereof
US20210382655A1 (en) Memory device, memory system, and operation method of memory device
US20240202090A1 (en) Storage device for storing temperature log information according to temperature storage level and operating method thereof
US11461232B2 (en) Memory system and operating method of memory system
US11599476B2 (en) Memory system and operating method thereof
US20240176541A1 (en) Storage device controlling target operation based on collected performance information and operating method thereof
US11544204B2 (en) Memory system, memory controller and method for operating memory controller
US20240118998A1 (en) Decoding device for determining whether to decode data unit, and operating method thereof
US20240184486A1 (en) Storage device determining memory area to which data is written using write throughput and method of operation
US11404137B1 (en) Memory system and operating method of memory system
US20240078023A1 (en) Storage device determining whether to apply thermal throttling mode to target operation
US11594289B2 (en) Semiconductor device, memory system and semiconductor memory device
US11237767B2 (en) Memory system, memory controller and method for operating memory controller
US20240143186A1 (en) Storage device determining victim memory block for garbage collection or wear leveling, and method thereof
US20240143168A1 (en) Storage device controlling garbage collection or wear leveling on the basis of timestamp, and method thereof
US20240176407A1 (en) Storage device for executing background operation based on power state and operating method thereof

Legal Events

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