KR102321478B1 - 리텐션에 의한 데이터 손실을 방지하는 데이터 처리 시스템의 작동 방법 - Google Patents
리텐션에 의한 데이터 손실을 방지하는 데이터 처리 시스템의 작동 방법 Download PDFInfo
- Publication number
- KR102321478B1 KR102321478B1 KR1020150108354A KR20150108354A KR102321478B1 KR 102321478 B1 KR102321478 B1 KR 102321478B1 KR 1020150108354 A KR1020150108354 A KR 1020150108354A KR 20150108354 A KR20150108354 A KR 20150108354A KR 102321478 B1 KR102321478 B1 KR 102321478B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- memory
- read
- bits
- memory area
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
리텐션에 의한 데이터 손실을 방지하기 위한 메모리 영역을 포함하는 메모리 장치의 작동 방법이 공개된다. 상기 방법은 은 상기 메모리 영역에 저장된 데이터를 제1리드 전압을 이용하여 리드하고 제1데이터를 생성하는 단계와, 상기 메모리 영역에 저장된 상기 데이터를 제2리드 전압을 이용하여 리드하고 제2데이터를 생성하는 단계와, 상기 제1데이터와 상기 제2데이터를 비교하고, 비교 결과에 따라 변경된 비트들을 판별하고, 판별된 비트들 각각이 리텐션 복구 비트인지 손상된 셀 비트인지를 판단하는 단계와, 상기 판별된 비트들 중에서 상기 리텐션 복구 비트로 판단된 비트들을 포함하는 제3데이터를 생성하는 단계를 포함한다. 상기 제1리드 전압과 상기 제2리드 전압은 서로 동일하거나 서로 다를 수 있다.
Description
본 발명의 개념에 따른 실시 예는 데이터 손실 방지 기술에 관한 것으로, 특히 리텐션에 의한 데이터 손실을 방지하는 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템의 작동 방법에 관한 것이다.
메모리 장치는 데이터를 저장하는데 사용되고, 상기 메모리 장치는 휘발성 메모리 장치와 불휘발성 메모리 장치로 구분된다. 플래시 메모리 장치는 복수의 메모리 셀들이 한 번의 프로그램 작동으로 이레이즈(erase) 또는 프로그램(program)되는 EEPROM(Electrically Erasable Programmable Read-Only Memory)의 일 예이다.
예컨대, 프로그램 작동 또는 리드(read) 작동은 페이지(page) 단위로 수행되고, 이레이즈는 블록(block) 단위로 수행된다. 플래시 메모리 장치는 메모리 셀 어레이를 포함하고, 상기 메모리 셀 어레이는 복수의 블록들을 포함하고, 상기 복수의 블록들 각각은 페이지들을 포함하고, 상기 페이지들 각각은 불휘발성 메모리 셀들을 포함할 수 있다. 플래시 메모리 장치는 NAND-타입 플래시 메모리 장치와 NOR-타입 플래시 메모리 장치로 분류될 수 있다.
플래시 메모리 셀은 플로팅 게이트(floating gate)를 포함한다. 플래시 메모리 셀에 정보가 저장된 후 오랜 시간이 지나면, 플로팅 게이트에 저장된 전하들(즉, 상기 정보와 관련된 전하들)은 손실된다. 이러한 현상을 리텐션(retention)이라 한다. 리텐션에 의해 플래시 메모리 셀의 문턱 전압이 변경되고, 변경된 문턱 전압이 리드 전압보다 낮아지게 되면, 리드 작동 시에 상기 플래시 메모리 셀로부터 리드되는 비트의 값이 변경된다. 따라서, 상기 플래시 메모리 셀로부터 리드된 정보는 에러 비트가 될 수 있다.
페이지에 포함된 플래시 메모리 셀들 중에서 적어도 일부의 플래시 메모리 셀들의 문턱 전압들이 변경될 때, 상기 페이지에 해당하는 페이지 데이터는 많은 에러 비트들을 포함할 수 있다. 상기 에러 비트들이 ECC(error correction or correcting code)에 의해 정정될 수 없을 때, 리드 작동으로 상기 페이지 데이터는 복구되지 않는다. 따라서 상기 리드 작동은 실패한다.
본 발명이 이루고자 하는 기술적인 과제는 리드 작동의 대상이 되는 데이터에 대한 리드 작동을 여러 번 반복함으로써 리텐션에 약한 셀들의 문턱 전압들을 조절하여 상기 리텐션에 의한 데이터 손실을 방지하는 데이터 처리 시스템의 작동 방법을 제공하는 것이다.
본 발명의 실시 예에 따른, 메모리 영역을 포함하는 메모리 장치의 작동 방법은 상기 메모리 영역에 저장된 데이터를 제1리드 전압을 이용하여 리드하고 제1데이터를 생성하는 단계와, 상기 메모리 영역에 저장된 상기 데이터를 제2리드 전압을 이용하여 리드하고 제2데이터를 생성하는 단계와, 상기 제1데이터와 상기 제2데이터를 비교하고, 비교 결과에 따라 변경된 비트들을 판별하고, 판별된 비트들 각각이 리텐션 복구 비트인지 손상된 셀 비트인지를 판단하는 단계와, 상기 판별된 비트들 중에서 상기 리텐션 복구 비트로 판단된 비트들을 포함하는 제3데이터를 생성하는 단계를 포함하고, 상기 제1리드 전압과 상기 제2리드 전압은 서로 동일하거나 서로 다르다.
상기 메모리 장치의 작동 방법은, 상기 제1데이터를 생성하기 전에, 상기 메모리 영역에 저장된 상기 데이터에 대한 리드 작동을 적어도 한 번 수행하는 단계를 더 포함한다. 상기 메모리 장치의 작동 방법은, 상기 제2데이터를 생성하기 전에, 상기 메모리 영역에 저장된 상기 데이터에 대한 리드 작동을 적어도 한 번 수행하는 단계를 더 포함한다.
상기 메모리 장치의 작동 방법은 상기 제3데이터를 상기 메모리 장치에 프로그램하는 단계를 더 포함한다.
실시 예들에 따라, 상기 메모리 장치의 작동 방법은, 상기 제2데이터를 생성하기 전에, 상기 메모리 영역이 페이지일 때 상기 페이지를 포함하는 블록에 포함된 모든 페이지들 각각에 대해 리드 작동을 순차적으로 수행하는 단계를 더 포함한다.
실시 예들에 따라, 상기 메모리 장치의 작동 방법은, 상기 제2데이터를 생성하기 전에, 상기 메모리 영역이 페이지일 때, 상기 페이지를 포함하는 블록에 포함된 모든 페이지들 중에서 상기 페이지에 인접하는 일부의 페이지들 각각에 대해 리드 작동을 수행하는 단계를 더 포함한다.
상기 메모리 영역은 페이지보다 작을 수 있다. 상기 메모리 영역은 복수의 메모리 셀들을 포함하고, 상기 복수의 메모리 셀들 각각은 전하 트랩 레이어를 포함한다.
본 발명의 실시 예에 따라, 메모리 장치와 컨트롤러를 포함하는 데이터 저장 장치의 작동 방법은 상기 메모리 장치의 메모리 영역에 저장된 데이터로부터 제1데이터를 생성하는 단계와, 상기 메모리 영역에 대해 반복적인 리드 작동들을 수행하는 단계와, 상기 메모리 영역에 저장된 상기 데이터로부터 제2데이터를 생성하는 단계와, 상기 제1데이터와 상기 제2데이터를 비교하고, 비교 결과에 따라 변경된 비트들을 판별하고, 판별된 비트들 각각이 리텐션 복구 비트인지 손상된 셀 비트인지를 판단하는 단계와, 상기 판별된 비트들 중에서 상기 리텐션 복구 비트로 판단된 비트들을 포함하는 제3데이터를 생성하는 단계를 포함한다.
상기 제1데이터는 상기 메모리 영역으로 공급되는 제1리드 전압에 기초하여 생성되고, 상기 제2데이터는 상기 메모리 영역으로 공급되는 제2리드 전압에 기초하여 생성되고, 상기 제1리드 전압과 상기 제2리드 전압은 서로 동일하거나 서로 다르다.
상기 반복적인 리드 작동들을 수행하는 단계는 상기 반복적인 리드 작동들 각각을 위해 상기 제1리드 전압 또는 상기 제2리드 전압을 상기 메모리 영역으로 공급한다.
상기 데이터 저장 장치의 작동 방법은 상기 제3데이터에 대해 ECC(Error Correction Code) 디코딩하는 단계와, ECC 디코드된 데이터에 상응하는 상기 데이터를 호스트로 전송하는 단계를 더 포함한다.
상기 데이터 저장 장치의 작동 방법은 상기 제3데이터를 상기 메모리 장치에 프로그램하는 단계를 더 포함한다. 상기 데이터 저장 장치의 작동 방법은 상기 메모리 장치에 프로그램된 상기 제3데이터를 리드하는 단계와, 리드된 데이터를 ECC(Error Correction Code) 디코딩하는 단계와, ECC 디코드된 데이터에 상응하는 상기 데이터를 호스트로 전송하는 단계를 더 포함한다.
상기 제1데이터를 생성하는 단계는 상기 데이터를 제1리드 전압을 이용하여 리드하고 제1리드 데이터를 생성하는 단계와, 상기 제1리드 데이터에 대해 ECC 디코딩을 수행하고, 정정 불가능한 에러를 포함하는 상기 제1데이터를 생성하는 단계를 포함하고, 상기 제2데이터를 생성하는 단계는 상기 데이터를 제2리드 전압을 이용하여 리드하고 제2리드 데이터를 생성하는 단계와, 상기 제2리드 데이터에 대해 ECC 디코딩하고, 정정 불가능한 에러를 포함하는 상기 제2데이터를 생성하는 단계를 포함한다.
상기 메모리 영역은 제1메모리 셀과 제2메모리 셀을 포함하고, 상기 리텐션 복구 비트에 해당하는 상기 제1메모리 셀의 문턱 전압과 상기 손상된 셀 비트에 해당하는 상기 제2메모리 셀의 문턱 전압은 상기 반복적인 리드 작동들 각각이 수행될 때마다 서로 반대 방향으로 이동한다.
본 발명의 실시 예에 따른 메모리 장치의 작동 방법은 리드 작동의 대상이 되는 데이터에 대한 리드 작동을 여러 번 반복함으로써 리텐션에 약한 셀들의 문턱 전압들을 조절하여 상기 리텐션에 의한 데이터 손실을 방지하는 효과가 있다.
본 발명의 실시 예에 따른 메모리 장치의 작동 방법은 상기 메모리 장치에 데이터가 프로그램된 후 오랜 시간 동안 방치된 후라도 상기 데이터에 대한 복구 능력을 크게 향상시킬 수 있는 효과가 있다.
본 발명의 실시 예에 따른 메모리 장치 또는 상기 메모리 장치를 포함하는 데이터 저장 장치가 RAID 시스템에서 사용될 때, 상기 RAID 시스템은 상기 메모리 장치에 데이터가 프로그램된 후 오랜 시간 동안 방치된 후라도 상기 데이터를 빠르게 복구할 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 실시 예들에 따른 데이터 처리 시스템의 블록도이다.
도 2는 도 1에 도시된 불휘발성 메모리 장치의 개략적인 블록도이다.
도 3은 도 1에 도시된 데이터 저장 장치의 실시 예를 나타낸다.
도 4는 도 1에 도시된 데이터 처리 시스템의 작동을 설명하기 위한 개념도이다.
도 5는 도 1에 도시된 데이터 처리 시스템의 작동을 설명하기 위한 플로우 차트이다.
도 6과 도 7은 도 1에 도시된 데이터 처리 시스템의 작동을 설명하기 위한 플로우 차트이다.
도 8은 본 발명의 실시 예들에 따른 데이터 처리 시스템의 작동을 설명하기 위한 개념도이다.
도 9는 도 2의 불휘발성 메모리 장치에 포함되고 원본 데이터를 저장하는 블록을 나타낸다.
도 10은 본 발명의 실시 예들에 따른 반복적인 리드 작동들과 제2데이터를 생성하는 과정을 설명하기 위한 플로우 차트이다.
도 11은 본 발명의 실시 예들에 따른 반복적인 리드 작동들과 제2데이터를 생성하는 과정을 설명하기 위한 플로우 차트이다.
도 12는 본 발명의 실시 예들에 따른 반복적인 리드 작동들과 제2데이터를 생성하는 과정을 설명하기 위한 플로우 차트이다.
도 13은 본 발명의 실시 예들에 따른 데이터 처리 시스템의 블록도이다.
도 14는 본 발명의 실시 예들에 따른 데이터 처리 시스템의 블록도이다.
도 1은 본 발명의 실시 예들에 따른 데이터 처리 시스템의 블록도이다.
도 2는 도 1에 도시된 불휘발성 메모리 장치의 개략적인 블록도이다.
도 3은 도 1에 도시된 데이터 저장 장치의 실시 예를 나타낸다.
도 4는 도 1에 도시된 데이터 처리 시스템의 작동을 설명하기 위한 개념도이다.
도 5는 도 1에 도시된 데이터 처리 시스템의 작동을 설명하기 위한 플로우 차트이다.
도 6과 도 7은 도 1에 도시된 데이터 처리 시스템의 작동을 설명하기 위한 플로우 차트이다.
도 8은 본 발명의 실시 예들에 따른 데이터 처리 시스템의 작동을 설명하기 위한 개념도이다.
도 9는 도 2의 불휘발성 메모리 장치에 포함되고 원본 데이터를 저장하는 블록을 나타낸다.
도 10은 본 발명의 실시 예들에 따른 반복적인 리드 작동들과 제2데이터를 생성하는 과정을 설명하기 위한 플로우 차트이다.
도 11은 본 발명의 실시 예들에 따른 반복적인 리드 작동들과 제2데이터를 생성하는 과정을 설명하기 위한 플로우 차트이다.
도 12는 본 발명의 실시 예들에 따른 반복적인 리드 작동들과 제2데이터를 생성하는 과정을 설명하기 위한 플로우 차트이다.
도 13은 본 발명의 실시 예들에 따른 데이터 처리 시스템의 블록도이다.
도 14는 본 발명의 실시 예들에 따른 데이터 처리 시스템의 블록도이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
본 명세서에서 플래시 메모리 셀(예컨대, NAND-타입 플래시 메모리 셀 또는 NOR-타입 플래시 메모리 셀)의 플로팅 게이트 또는 전하 트랩 레이어(charge trap layer)에 전하들(또는 상기 전하들에 해당하는 정보)이 저장된 후 상기 플래시 메모리 셀이 오랜 시간 동안 방치되면, 상기 플로팅 게이트 또는 상기 전하 트랩 레이어에 저장된 전하들은 손실(또는 누설)될 수 있다. 이러한 현상은 리텐션 (retention)이라 한다.
약한 리텐션 시간을 갖는 메모리 셀(memory cells with weak retention time)은 리텐션에 의해 에러 비트를 발생시킬 수 있는 메모리 셀로서, 리드 작동들이 상기 메모리 셀에 여러 번 반복적으로 수행되면, 상기 메모리 셀의 문턱 전압 (threshold voltage)이 높아지는 메모리 셀을 의미할 수 있다. 따라서, 약한 리텐션 시간을 갖는 메모리 셀에 대해 리드 작동들이 반복적으로 수행됨에 따라 상기 약한 리텐션 시간을 갖는 메모리 셀의 문턱 전압은 높아지므로, 상기 약한 리텐션 시간을 갖는 메모리 셀에 저장된 비트는 에러 비트로부터 에러 비트가 아닌 비트로 변경될 수 있다. 이하, 반복적인 리드 작동들에 따라 에러 비트로부터 에러 비트가 아닌 비트로 변경되는 비트는 "리텐션 복구 비트"라 한다. 즉, 리텐션 복구 비트는 에러 비트로터 정상 비트로 변경되는 비트를 의미할 수 있다.
높게 손상된 메모리 셀(highly damaged memory cell)은 리텐션에 의해 에러 비트를 발생시키지 않는 메모리 셀로서, 리드 작동들이 상기 메모리 셀에 대해 여러 번 반복적으로 수행되면, 상기 메모리 셀의 문턱 전압이 낮아지는 메모리 셀을 의미할 수 있다. 따라서, 높게 손상된 메모리 셀에 대해 리드 작동들이 반복적으로 수행됨에 따라 상기 높게 손상된 메모리 셀의 문턱 전압이 낮아지므로, 상기 높게 손상된 메모리 셀에 저장된 비트는 에러 비트가 아닌 비트로부터 에러 비트로 변경될 수 있다. 이하, 반복적인 리드 작동들에 따라 에러 비트가 아닌 비트로부터 에러 비트로 변경된 비트는 "손상된 셀 비트"라 한다. 즉, 손상된 셀 비트는 정상 비트로부터 에러 비트로 변경되는 비트를 의미할 수 있다.
도 1은 본 발명의 실시 예들에 따른 데이터 처리 시스템의 블록도이다. 도 1을 참조하면, 데이터 처리 시스템(100)은 호스트(200)와, 인터페이스(110)를 통해 호스트(200)와 명령 및/또는 데이터를 주거나 받을 수 있는 데이터 저장 장치(300)를 포함할 수 있다.
실시 예들에 따라, 데이터 처리 시스템(100)은 PC(personal computer), 워크스테이션(workstation), 데이터 센터, 인터넷 데이터 센터(internet data center(IDC)), DAS(direct attached storage) 시스템, SAN(storage area network) 시스템, NAS(network attached storage) 시스템, RAID(redundant array of inexpensive disks, or redundant array of independent disks) 시스템, 또는 모바일 장치로 구현될 수 있으나 이에 한정되는 것은 아니다.
상기 모바일 장치는 랩탑 컴퓨터(laptop computer), 이동 전화기, 스마트 폰 (smart phone), 태블릿(tablet) PC, PDA (personal digital assistant), EDA (enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP (portable multimedia player), PND(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), 모바일 인터넷 장치(mobile internet device(MID)), 웨어러블 컴퓨터, 사물 인터넷(internet of things(IoT)) 장치, 만물 인터넷 (internet of everything(IoE)) 장치, 드론 (drone), 또는 e-북 (e-book)으로 구현될 수 있다.
실시 예들에 따라, 인터페이스(110)는 SATA(serial advanced technology attachment) 인터페이스, SATAe(SATA express) 인터페이스, SAS(serial attached small computer system interface(SCSI)) 인터페이스, PCIe(peripheral component interconnect express) 인터페이스, NVMe(non-volatile memory Express) 인터페이스, AHCI(advanced host controller interface) 인터페이스, 또는 멀티미디어 카드 (multimedia card(MMC))인터페이스로 구현될 수 있으나 이에 한정되는 것은 아니다. 실시 예들에 따라, 인터페이스(110)는 전기 신호들 또는 광신호들을 전송할 수 있다.
호스트(200)는 인터페이스(110)를 통해 데이터 저장 장치(300)의 데이터 처리 작동(예컨대, 라이트 작동 또는 리드 작동 등)을 제어할 수 있다. 호스트(200)는 호스트 컨트롤러를 의미할 수 있다. 호스트(200)는 버스 구조(210), CPU(220), 제1인터페이스(230), DMA(direct memory access) 컨트롤러(235), 및 메모리 장치 (240)를 포함할 수 있다. 실시 예들에 따라, 호스트(200)는 ECC 엔진을 더 포함할 수도 있다.
CPU(220)와 제1인터페이스(230)는 버스 구조(또는 버스; 210)를 통해 명령 및/또는 데이터를 서로 주거나 받을 수 있다.
실시 예들에 따라, 호스트(200)는 호스트 프로세서, 집적 회로(integrated circuit(IC)), 마더보드(motherboard), 시스템 온 칩(system on chip(SoC)), 애플리케이션 프로세서(application processor(AP)), 모바일(mobile) AP, 웹(web) 서버, 데이터 서버, 또는 데이터베이스 서버로 구현될 수 있으나 이에 한정되는 것은 아니다.
예컨대, 버스 구조(210)는 AMBA(advanced microcontroller bus architecture), AHB(advanced high-performance bus), APB(advanced peripheral bus), AXI(advanced eXtensible interface), ASB(advanced system bus), ACE(AXI Coherency Extensions), 또는 이들의 결합으로 구현될 수 있으나 이에 한정되는 것은 아니다.
CPU(220)는 데이터 저장 장치(300)의 라이트(write) 작동을 제어할 수 있는 라이트 요청, 또는 데이터 저장 장치(300)의 리드(read) 작동을 제어할 수 있는 리드 요청을 생성할 수 있다. 상기 라이트 요청은 라이트 어드레스를 포함할 수 있고, 상기 리드 요청은 리드 어드레스를 포함할 수 있다. 예컨대, CPU(220)는 하나 또는 그 이상의 코어들을 포함할 수 있다. 요청(request)은 명령(command)을 의미할 수 있다.
제1인터페이스(230)는 데이터 저장 장치(300)로 전송될 명령 및/또는 데이터의 포맷(format)을 변경하고, 변경된 포맷을 갖는 명령 및/또는 변경된 포맷을 갖는 데이터를 인터페이스(110)를 통해 데이터 저장 장치(300)로 전송할 수 있다. 제1인터페이스(230)는 인터페이스 로직(또는 인터페이스 로직 회로)으로 불릴 수 있다.
제1인터페이스(230)는 데이터 저장 장치(300)로부터 전송된 응답 및/또는 데이터의 포맷을 변경하고, 변경된 포맷을 갖는 응답 및/또는 변경된 포맷을 갖는 데이터를 수신할 수 있다. 실시 예에 따라, 제1인터페이스(230)는 명령 및/또는 데이터를 송수신할 수 있는 송수신기를 포함할 수 있다. 제1인터페이스(230)의 구조와 작동은 인터페이스(110)의 구조와 작동에 적합하게(compatible) 구현될 수 있다.
DMA 컨트롤러(235)는, CPU(220)의 제어에 따라, 제1인터페이스(230)와 메모리 장치(240) 사이에 주고받는 데이터의 전송을 제어할 수 있다.
메모리 장치(240)는 CPU(220)에 의해 처리될 데이터, CPU(220)에 의해 처리된 데이터 또는 DMA 컨트롤러(235)로부터 출력된 데이터를 저장할 수 있다. 메모리 장치(240)는 휘발성 메모리 장치 및/또는 불휘발성 메모리 장치로 구현될 수 있다. 예컨대, 상기 휘발성 메모리 장치는 RAM(random access memory), DRAM(dynamic RAM), 또는 SRAM(static RAM)으로 구현될 수 있으나 이에 한정되는 것은 아니다. 예컨대, 메모리 장치(240)는 주메모리 장치를 의미할 수 있다. 상기 불휘발성 메모리 장치는 NAND-타입 플래시 메모리 장치로 구현될 수 있다.
비록, 도 1에서는 메모리 장치(240)가 호스트(200)의 내부에 배치된 실시 예가 도시되어 있으나, 메모리 장치(240)는 호스트(200)의 외부에 구현될 수 있다. 실시 예들에 따라, 메모리 장치(240)는 제1데이터(DATA1), 제2데이터(DATA2), 및 제3데이터(DATA3)를 저장할 수 있다.
데이터 저장 장치(300)는 제2인터페이스(310), 컨트롤러(320), 버퍼(330), 및 메모리 클러스터(340)를 포함할 수 있다. 여기서, 메모리 클러스터(340)의 메모리 장치들(NVM)의 집합을 의미할 수 있다.
데이터 저장 장치(300)는 플래시-기반 스토리지(flash based storage)로 구현될 수 있으나 이에 한정되는 것은 아니다. 예컨대, 데이터 저장 장치(300)는 SSD (solid-state drive or solid-state disk), 임베디드 SSD(embedded SSD(eSSD)), 유니버셜 플래시 스토리지(universal flash storage(UFS)), 멀티미디어 카드 (multimedia card(MMC)), 임베디드 MMC(embedded MMC(eMMC)) 또는 매니지드 (managed) NAND로 구현될 수 있으나 이에 한정되는 것은 아니다. 예컨대, 플래시-기반 스토리지는 NAND-타입 플래시 메모리 장치 또는 NOR-타입 플래시 메모리 장치로 구현될 수 있다.
제2인터페이스(310)는 호스트(200)로 전송될 응답 및/또는 데이터의 포맷을 변경하고, 변경된 포맷을 갖는 응답 및/또는 변경된 포맷을 갖는 데이터를 인터페이스(110)를 통해 호스트(200)로 전송할 수 있다. 또한, 제2인터페이스(310)는 호스트(200)로부터 전송된 명령 및/또는 데이터를 수신하고, 수신된 명령 및/또는 데이터의 포맷을 변경하고, 변경된 포맷을 갖는 명령 및/또는 변경된 포맷을 갖는 데이터를 컨트롤러(320)로 전송할 수 있다. 실시 예에 따라, 제2인터페이스(310)는 신호 및/또는 데이터를 송수신할 수 있는 송수신기를 포함할 수 있다. 제2인터페이스(310)는 인터페이스 로직(또는 인터페이스 로직 회로)으로 불릴 수 있다.
제2인터페이스(310)의 구조와 작동은 인터페이스(110)의 구조와 작동에 적합하게 구현될 수 있다. 예컨대, 제2인터페이스(310)는 SATA 인터페이스, SATAe 인터페이스, SAS 인터페이스, PCIe 인터페이스, NVMe 인터페이스, AHCI 인터페이스, MMC 인터페이스, NAND-타입 플래시 메모리 인터페이스, 또는 NOR-타입 플래시 메모리 인터페이스로 구현될 수 있으나 이에 한정되는 것은 아니다.
컨트롤러(320)는 제2인터페이스(310), 버퍼(330), 및 메모리 클러스터(400) 사이에서 주거나 받는 명령 및/또는 데이터의 전송 또는 처리를 제어할 수 있다.
실시 예들에 따라, 컨트롤러(320)는 IC 또는 SoC로 구현될 수 있으나 이에 한정되는 것은 아니다. 예컨대, 컨트롤러(320)는 호스트(200)로부터 전송된 데이터를 메모리 클러스터(340)에 라이트하고, 메모리 클러스터(340)로부터 리드된 데이터를 호스트(200)로 전송할 수 있다.
컨트롤러(320)는 버스(321), CPU(323), 내부 메모리(325), 버퍼 매니저 (327), 메모리 컨트롤러(328), 및 ECC 엔진(329)을 포함할 수 있다. CPU(323), 내부 메모리(325), 버퍼 매니저(327), 메모리 컨트롤러(328), 및 ECC 엔진(329)은 버스(321)를 통해 서로 통신할 수 있다. 버스(321)는 AMBA, AHB, APB, AXI, ASB, ACE 또는 이들의 결합으로 구현될 수 있으나 이에 한정되는 것은 아니다.
CPU(323)는 구성 요소들(310, 325, 327, 328, 및 329) 각각의 작동을 제어할 수 있다. CPU(323)는 하나 또는 그 이상의 코어들(cores)을 포함할 수 있다. 상기 코어들은 동일한 반도체 기판을 공유할 수도 있고, 별개의 반도체 칩으로 구현될 수 있다. 비록, 도 1에서는 하나의 CPU(323)가 도시되어 있으나, 컨트롤러(320)는 제1CPU와 제2CPU를 포함할 수 있다.
예컨대, 상기 제1CPU는 제2인터페이스(310)의 작동을 제어할 수 있고, 상기 제2CPU는 메모리 컨트롤러(325)의 작동을 제어할 수 있다. 실시 예들에 따라, 상기 제1CPU와 상기 제2CPU는 멀티-CPU를 구성할 수 있다. 실시 예에 따라, 상기 제1CPU는 상기 제2CPU를 제어할 수 있으나 이에 한정되는 것은 아니다.
CPU(323)는 펌웨어를 실행할 수 있다. 상기 펌웨어는 리텐션에 의해 데이터 페일에 해당하는 블록(들)과 상기 블록(들)에 저장된 데이터를 관리할 수 있고, 리텐션에 의한 데이터 손실을 방지하기 위해 본 명세서에서 설명된 방법을 실행하여 상기 데이터를 복구할 수 있다.
내부 메모리(325)는 컨트롤러(320)의 작동에 필요한 데이터 또는 컨트롤러 (320)에 의해 수행된 데이터 처리 작동(예컨대, 라이트 작동 또는 리드 작동)에 의해 생성된 데이터를 저장할 수 있다. 예컨대, 내부 메모리(325)는 CPU(323)에 의해 실행될 수 있는 FTL(flash translation layer)을 저장할 수 있다. 예컨대, 데이터 저장 장치(300)가 부트(boot)될 때, FTL은 메모리 클러스터(400)로부터 내부 메모리(325)로 로드되고, 상기 FTL은 CPU(323)에 의해 실행될 수 있다.
실시 예들에 따라, 내부 메모리(325)는 ROM(read only memory), RAM, DRAM, SRAM, 버퍼, 버퍼 메모리, 캐시(cache), 또는 강하게 결합된 메모리(tightly coupled memory (TCM))로 구현될 수 있으나 이에 한정되는 것은 아니다.
버퍼 매니저(327)는, CPU(323)의 제어에 따라, 버퍼(330)에 데이터를 라이트하거나 버퍼(330)로부터 데이터를 리드할 수 있다. 버퍼 매니저(327)는 그 내부에 구현된 메모리 장치를 포함할 수 있다. 예컨대, 상기 메모리 장치는 SRAM으로 구현될 수 있으나 이에 한정되는 것은 아니다.
실시 예들에 따라, 버퍼 매니저(327)는 도 4부터 도 7을 참조하여 설명될 제1데이터(DATA1)와 제2데이터(DATA2)를 메모리 컨트롤러(328)로부터 수신하고, 수신된 각 데이터(DATA1과 DATA2)를 상기 메모리 장치에 저장하고, 제1데이터(DATA1)에 포함된 비트들과 제2데이터(DATA2)에 포함된 비트들을 비교하고, 비교 결과에 따라 변경된 비트들을 판별하고, 판별된 비트들 각각이 리텐션 복구 비트인지 손상된 셀 비트인지를 판단하고, 상기 판별된 비트들 중에서 상기 리텐션 복구 비트로 판단된 비트들을 포함하는 제3데이터(DATA3)를 생성할 수 있다. 버퍼 매니저(327)는 제3데이터(DATA3)를 ECC 엔진(329)으로 전송할 수 있다.
에러 정정 코드(error correction code(ECC)) 엔진(329)은 제3데이터(DATA3)에 대해 ECC 디코딩을 수행하고, 상기 ECC 디코딩이 성공일 때 데이터, 즉 원본 데이터(DATAx)를 버스(321)로 출력하고, 상기 ECC 디코딩이 실패일 때 실패 지시를 버스(321)로 출력할 수 있다.
실시 예들에 따라, ECC 엔진(329)은 메모리 클러스터(340)로부터 출력된 제3데이터(DATA3)를 수신하고, 제3데이터(DATA3)에 대해 ECC 디코딩을 수행할 수 있다. 상술한 바와 같이, 제3데이터(DATA3)는 버퍼 매니저(327) 또는 메모리 클러스터(340)에 의해 생성될 수 있다. ECC 엔진(329)은 메모리 클러스터(340)에 저장될 데이터를 ECC 인코딩할 수 있고, 메모리 클러스터(340)로부터 출력된 데이터를 ECC 디코딩할 수 있다.
제2인터페이스(310)는 버퍼 매니저(327)와 데이터를 주고받을 수 있다. 버퍼 매니저(327)는 버퍼(330)에 대한 라이트 작동과 리드 작동을 제어할 수 있는 버퍼 컨트롤러라고도 불릴 수 있다.
메모리 컨트롤러(328)는, CPU(323) 또는 버퍼 매니저(327)로부터 출력된 신호에 따라, 각 채널(CH0~CHm; m은 2 이상의 자연수)에 접속된 각 불휘발성 메모리 장치(NVM)의 데이터 처리 작동(예컨대, 라이트 작동 또는 리드 작동, 등)을 제어할 수 있다. 불휘발성 메모리 장치(NVM)가 플래시 메모리 장치일 때, 메모리 컨트롤러(328)는 플래시 메모리 컨트롤러를 의미할 수 있다.
실시 예들에 따라, 메모리 컨트롤러(328)는 SATA 인터페이스, SATAe 인터페이스, SAS 인터페이스, PCIe 인터페이스, NVMe 인터페이스, AHCI 인터페이스, MMC 인터페이스, NAND-타입 플래시 메모리 인터페이스, 또는 NOR-타입 플래시 메모리 인터페이스로 구현될 수 있으나 이에 한정되는 것은 아니다.
버퍼(330)는, 버퍼 매니저(327)의 제어에 따라, 데이터를 버퍼(330)에 라이트하거나 버퍼(330)로부터 데이터를 리드할 수 있다. 실시 예들에 따라, 버퍼(330)는 버퍼 메모리, RAM, SRAM, 또는 DRAM으로 구현될 수 있으나 이에 한정되는 것은 아니다.
버퍼(330)는 메모리 클러스터(340)에 대한 논리 어드레스-물리 어드레스 변환을 위한 매핑 테이블(mapping table)을 저장하는 제1영역과, 캐시(cache)의 기능을 수행할 수 있는 제2영역을 포함할 수 있으나 이에 한정되는 것은 아니다. 예컨대, CPU(323)에 의해 실행되는 FTL은 상기 제1영역에 저장된 매핑 테이블을 이용하여 논리 어드레스-물리 어드레스 변환을 수행할 수 있다.
실시 예들에 따라, 컨트롤러(320)와 버퍼(330) 각각이 서로 다른 반도체 칩 (chip)으로 구현될 때, 컨트롤러(320)와 버퍼(330)는 하나의 패키지, 예컨대, 패키지-온-패키지(package-on-package(PoP)), 멀티-칩 패키지(multi-chip package (MCP)) 또는 시스템-인 패키지(system-in package(SiP))로 구현될 수 있으나 이에 한정되는 것은 아니다. 예컨대, 버퍼(330)를 포함하는 제1칩은 컨트롤러(320)를 포함하는 제2칩의 위(above)에 스택 볼들(stack balls)을 통해 적층될 수 있으나 이에 한정되는 것은 아니다. 실시 예들에 따라, 컨트롤러(320), 버퍼(330), 및 메모리 클러스터(340)는 하나의 패키지(예컨대, ePoP(embedded package on package))로 구현될 수 있다.
메모리 클러스터(340)는 복수의 클러스터들(341~351)을 포함할 수 있다. 제1클러스터(341)에 포함된 불휘발성 메모리 장치들(343)은 제1채널(CH0)에 접속될 수 있고, 제m클러스터(351)에 포함된 불휘발성 메모리 장치들은 제m메인 채널(CHm)에 접속될 수 있다. 각 불휘발성 메모리 장치(NVM)는 메모리 패키지를 포함할 수 있다.
본 명세서에서 채널(channel)은 컨트롤러(320)와 하나의 클러스터 사이에 존재하는 독립적인 데이터 패스(data path)를 의미할 수 있다. 상기 데이터 패스는 데이터 및/또는 제어 신호들을 전송할 수 있는 전송 라인들을 포함할 수 있다. 웨이(way)는 하나의 채널을 공유하는 하나 또는 그 이상의 불휘발성 메모리 장치들 (NVM)의 그룹을 의미할 수 있다.
도 2는 도 1에 도시된 불휘발성 메모리 장치의 개략적인 블록도이다. 도 1과 도 2를 참조하면, 메모리 클러스터(340)에 포함된 각 불휘발성 메모리 장치(NVM)의 구조와 작동은 동일 또는 유사하므로, 불휘발성 메모리 장치(343)의 구조와 작동이 대표적으로 설명된다.
불휘발성 메모리 장치(343)는 메모리 셀 어레이(410), 제어 회로 블록(430), 데이터 레지스터 및 감지 증폭기 블록(450), Y-게이팅 회로(455), 입출력 로직 회로(460), 및 입출력 패드들(465)을 포함할 수 있다.
메모리 셀 어레이(410)는 복수의 블록들을 포함하고, 상기 복수의 블록들 각각은 복수의 페이지들을 포함하고, 상기 복수의 페이지들 각각은 복수의 메모리 셀들을 포함한다. 메모리 셀은 1-비트의 정보를 저장하는 싱글 레벨 셀(single level cell(SLC)) 또는 2-비트 이상의 정보를 저장하는 멀티 레벨 셀(multi level cell(MLC))로 구현될 수 있다. 메모리 셀 어레이(410)는 원본 데이터(DATAx)를 저장하는 메모리 영역(411)을 포함할 수 있다.
메모리 셀 어레이(410)는 3차원 메모리 셀 어레이들로 구현될 수 있다. 상기 3차원 메모리 셀 어레이는 실리콘 기판 위(on or above)에 배치된 액티브 영역을 갖는 메모리 셀들의 어레이의 하나 또는 그 이상의 물리적인 레벨들 내에서 모노리식하게(monolithically) 형성되고, 상기 메모리 셀들의 작동에 관련된 회로를 포함할 수 있다. 상기 회로는 상기 기판의 내부 또는 위(on or above)에 형성될 수 있다.
모노리식(monolithic) 이라는 용어는 어레이의 각 레벨의 레이어들(layers)이 상기 어레이의 각 하부 레벨(each underlying level)의 레이어들에 직접 증착 (directly deposited )되는 것을 의미한다. 3차원 메모리 셀 어레이는 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직으로 배향되는(vertically oriented) 수직 NAND 스트링을 포함할 수 있다. 상기 적어도 하나의 메모리 셀은 전하 트랩 레이어(charge trap layer)를 포함할 수 있다.
제어 회로 블록(430)은 메모리 셀 어레이(410), 데이터 레지스터 및 감지 증폭기 블록(450), 및 Y-게이팅 회로(455)의 작동을 제어할 수 있다.
제어 회로 블록(430)은 로우 디코더(또는 X-디코더; 431), 컬럼 디코더(또는 Y-디코더; 433), 고전압 생성기(435), 및 명령 레지스터(437)를 포함할 수 있다. 메모리 셀 어레이(410)에 배치된 복수의 메모리 셀들 중에서 적어도 하나는 로우 디코더(431)와 컬럼 디코더(433)에 의해 선택될 수 있다. 고전압 생성기(435)는 프로그램 작동, 리드 작동, 또는 이레이즈 작동을 위한 전압들을 생성할 수 있다. 명령 레지스터(437)는 프로그램 작동, 리드 작동, 또는 이레이즈 작동을 위한 명령을 저장할 수 있다.
데이터 레지스터 및 감지 증폭기 블록(450)은 페이지 버퍼들을 포함할 수 있고, 리드 작동 동안 메모리 셀 어레이(410)에 저장된 정보(또는 데이터)가 Y-게이팅 회로(455)로 출력될 때 데이터 레지스터 및 감지 증폭기 블록(450)은 상기 정보를 감지하고 일시적으로 저장할 수 있다. 프로그램 작동 동안 데이터 레지스터 및 감지 증폭기 블록(450)은 Y-게이팅 회로(455)로부터 전송된 데이터를 메모리 셀 어레이(410)에 프로그램할 수 있다.
경우 1(CASE1)과 같이, 데이터 레지스터 및 감지 증폭기 블록(450)은 제1데이터(DATA1)와 제2데이터(DATA2) 각각을 Y-게이팅 회로(455)를 통해 입출력 로직 회로(460)로 출력할 수 있다. 경우 1(CASE1)에서 제1데이터(DATA1)와 제2데이터(DATA2) 각각은 버퍼 매니저(327)에 저장되고, 제3데이터(DATA3)는 버퍼 매니저 (327)에 의해 생성될 수 있다.
경우 2(CASE2)와 같이, 데이터 레지스터 및 감지 증폭기 블록(450)은 제1데이터(DATA1)에 포함된 비트들과 제2데이터(DATA2)에 포함된 비트들을 이용하여 제3데이터(DATA3)를 생성하고, 제3데이터(DATA3)를 Y-게이팅 회로(455)를 통해 입출력 로직 회로(460)로 출력할 수 있다.
Y-게이팅 회로(455)는, 컬럼 디코더(433)의 제어에 따라, 데이터 레지스터 및 감지 증폭기 블록(450)과 입출력 로직 회로(460) 사이에서 데이터 경로를 형성할 수 있다. 즉, Y-게이팅 회로(455)는, 리드 작동 시에, 선택된 데이터를 데이터 레지스터 및 감지 증폭기 블록(450)으로부터 입출력 로직 회로(460)로 전송할 수 있다. Y-게이팅 회로(455)는, 프로그램 작동 시에, 선택된 데이터를 입출력 로직 회로(460)로부터 데이터 레지스터 및 감지 증폭기 블록(450)으로 전송할 수 있다. 입출력 로직 회로(460)는 입출력 패드들(465)을 통해 데이터의 입출력을 제어할 수 있다.
도 3은 도 1에 도시된 데이터 저장 장치의 실시 예를 나타낸다. 도 1부터 도 3을 참조하면, 데이터 저장 장치(300)는 SSD로 구현될 수 있다. SSD(300)는 탑 커버(top cover; 301), 인터페이스 커넥터(예컨대, 제2인터페이스; 310), 컨트롤러(예컨대, SSD 컨트롤러; 320), 버퍼(예컨대, DRAM 장치; 330), 메모리 클러스터 (340), 및 바닥 커버(bottom cover; 305)를 포함할 수 있다. 컨트롤러(320)는 컨트롤러 칩의 의미할 수 있고, 버퍼(330)는 캐시 칩(cache chip)을 의미할 수 있고, 복수의 불휘발성 메모리 장치들(NVM)은 로직 보드(logic board; 303)의 한쪽 면 또는 양쪽 면에 배치될 수 있다. 로직 보드(303)는 인쇄 회로 기판(printed circuit board(PCB))를 의미할 수 있다.
도 4는 도 1에 도시된 데이터 처리 시스템의 작동을 설명하기 위한 개념도이다. 도 1부터 도 4를 참조하면, 원본(original) 데이터(DATAx)는 도 4의 (a)의 문턱 전압 분포(distribution)를 갖는 메모리 영역(411)에 프로그램되었다고 가정한다. 각 메모리 셀(C1과 C2)은 약한 리텐션 시간을 갖는 메모리 셀이라고 가정하고, 리텐션에 의해 각 메모리 셀(C1과 C2)의 문턱 전압은 낮아진다고 가정한다. 또한, 메모리 셀(C3)에 대한 반복적인 리드 작동들(예컨대, 메모리 영역(411)에 여러 번 리드 전압(Vread)을 공급하는 작동들)에 따라 메모리 셀(C3)의 문턱 전압은 낮아진다고 가정한다.
도 4의 (d)에 도시된 바와 같이, 원본 데이터(DATAx)가 도 4의 (a)와 같은 문턱 전압 분포를 갖는 메모리 영역(411)에 프로그램된다. "ON"은 이레이즈 상태를 나타내고 "OFF"는 프로그램 상태를 나타낸다고 가정한다. "ON"은 로직(또는 데이터) 1에 대응되고 "OFF"는 로직(또는 데이터) 0에 대응된다고 가정한다. 본 명세서에서 리드 전압은 메모리 셀에 저장된 데이터가 로직 1인지 로직 0인지를 구별하기 위한 전압을 의미할 수 있고 실시 예에 따라 패스 전압을 의미할 수도 있다.
메모리 영역(411)에 프로그램된 원본 데이터(DATAx)가 오랜 시간 동안 방치되면, 도 4의 (b)에 도시된 바와 같이 리텐션에 의해 각 메모리 셀(C1과 C2)의 문턱 전압은 낮아진다. 도 4의 (b)와 도 (e)를 참조하면, 리드 전압(Vread)을 이용하여 메모리 영역(411)에 저장된 원본 데이터(DATAx)를 리드하면, 제1리드 데이터(즉, 제1데이터(DATA1))에서 각 메모리 셀(C1과 C2)에 저장된 비트 값은 "0"이 아니고 "1"이다. 즉, 리텐션에 의해 각 메모리 셀(C1과 C2)에 저장된 비트 값은 "0"으로부터 "1"로 변경되고, 상기 리텐션에도 불구하고 메모리 셀(C3)에 저장된 비트 값은 "0"을 그대로 유지한다.
메모리 영역(411)에 여러 번 동일한 리드 전압(Vread)을 공급하면, 즉 반복적인 리드 작동들에 의해 도 4의 (c)에 도시된 바와 같이, 각 메모리 셀(C1과 C2)의 문턱 전압은 올라가고 메모리 셀(C3)의 문턱 전압은 낮아진다. 즉, 반복적인 리드 작동들에 의해 각 메모리 셀(C1과 C2)에 저장된 비트는 에러 비트(예컨대, "1")로부터 정상 비트(예컨대, "0")로 변경될 수 있고, 메모리 셀(C3)에 저장된 비트는 정상 비트(예컨대, "0")로부터 에러 비트(예컨대, "1")로 변경될 수 있다.
도 4의 (c)와 도 (f)를 참조하면, 메모리 영역(411)에 대한 반복적인 리드 작동들이 수행된 후, 리드 전압(Vread)을 이용하여 메모리 영역(411)에 저장된 원본 데이터(DATAx)를 리드하면, 제2리드 데이터(즉, 제2데이터(DATA2))에서 메모리 셀(C3)에 저장된 비트 값은 "0"이 아니고 "1"이다.
각 메모리 셀(C1, C2, 및 C3)의 문턱 전압이 메모리 영역(411)에 대한 반복적인 리드 작동들에 의해 변경되더라도, 각 메모리 셀(C1, C2, 및 C3)과 관련된 비트의 변경이 리텐션 복구 비트인지 손상된 셀 비트인지에 따라 제3데이터(DATA3)가 생성될 수 있다. 즉, 제3데이터(DATA3)는 변경되지 않은 비트들과 리텐션 비트들을 포함할 수 있다.
비록, 도 4의 (e)와 (g)에서는 제1데이터(DATA1)와 리텐션 복구 비트들에 기초하여 제3데이터(DATA3)가 생성되는 실시 예가 도시되어 있으나, 실시 예에 따라 제3데이터(DATA3)는 제2데이터(DATA2)와 손상된 셀 비트(들)에 기초하여 생성될 수 있다.
데이터 레지스터 및 감지 증폭기 블록(450) 또는 버퍼 매니저(327)는 제1데이터(DATA1)에 포함된 비트들(10010111)과 제2데이터(DATA2)에 포함된 비트들 (00001111)을 비교하고, 도 4의 (g)에 도시된 바와 같이 제1데이터(DATA1)에 포함된 비트들(10010111) 중에서 리텐션 비트들(예컨대, C1과 C2 각각에 대응되는 비트)에 해당하는 비트들을 "1"로부터 "0"으로 변경하고, 제3데이터(DATA3=00000111)를 생성할 수 있다. 도 4의 (h)에 도시되 바와 같이, ECC 엔진(329)은 제3데이터 (DATA3=00000111)를 ECC 디코딩하여, 원본 데이터(DATAx=00000111)를 생성할 수 있다.
도 5는 도 1에 도시된 데이터 처리 시스템의 작동을 설명하기 위한 플로우 차트이다. 도 1부터 도 5를 참조하면, 실시 예들에 따라, 불휘발성 메모리 장치 (343)는 메모리 영역(411)에 저장된 원본 데이터(DATAx)를 리드 전압(Vread)을 이용하여 리드하고(S110), 리드 결과에 해당하는 제1데이터(DATA1)를 생성할 수 있다 (S112). 제1데이터(DATA1)가 생성되기 이전에, 메모리 영역(411)에 저장된 원본 데이터(DATAx)에 대한 리드 작동은 적어도 한번 수행될 수 있다. 실시 예들에 따라, 제1데이터(DATA1)의 생성에 관련된 리드 전압과 제1데이터(DATA1)가 생성되기 이전에 수행된 적어도 한 번의 리드 작동에 관련된 리드 전압은 서로 동일할 수도 있고 서로 다를 수도 있다.
불휘발성 메모리 장치(343)는 메모리 영역(411)에 대한 반복적인 리드 작동들을 수행할 수 있다(S113). 이때, 불휘발성 메모리 장치(343)는 메모리 영역 (411)으로 리드 전압(Vread)을 1회 또는 그 이상 공급할 수 있다. 이에 따라, 메모리 영역(411)에 포함된 불휘발성 메모리 셀들 각각의 문턱 전압은 변경될 수 있다.
메모리 영역(411)에 대한 반복적인 리드 작동들이 수행된 후(S113), 불휘발성 메모리 장치(343)는 메모리 영역(411)에 저장된 원본 데이터(DATAx)를 리드 전압(Vread)을 이용하여 리드하고(S114), 리드 결과에 해당하는 제2데이터(DATA2)를 생성할 수 있다(S116). 실시 예들에 따라, 제1데이터(DATA1)의 생성에 관련된 리드 전압과 제2데이터(DATA2)의 생성에 관련된 리드 전압은 서로 동일할 수도 있고 서로 다를 수도 있다. 또한, 반복적인 리드 작동들 각각을 위해 불휘발성 메모리 장치 (343)의 메모리 영역(411)으로 공급되는 리드 전압은 제2데이터(DATA2)의 생성에 관련된 리드 전압은 서로 동일할 수도 있고 서로 다를 수도 있다.
데이터 레지스터 및 감지 증폭기 블록(450)은 제1데이터(DATA1)와 제2데이터 (DATA2)를 저장(또는 래치)하고, 제1데이터(DATA1)에 포함된 비트들과 제2데이터 (DATA2)에 포함된 비트들을 비트-단위(bit-wise)로 비교하고, 변경된 비트들을 판별하고, 판별된 비트들 각각이 리텐션 복구 비트인지 손상된 셀 비트인지를 판단하고, 상기 판별된 비트들 중에서 상기 리텐션 복구 비트로 판단된 비트들을 포함하는 제3데이터(DATA3)를 생성할 수 있다(S118). 예컨대, 데이터 레지스터 및 감지 증폭기 블록(450)은 제1데이터(DATA1)를 저장하는 제1래치들과 제2데이터(DATA2)를 저장하는 래치들, 및 제3데이터(DATA3)를 저장하는 제3래치들을 포함할 수 있으나 이에 한정되는 것은 아니다.
실시 예들에 따라, 불휘발성 메모리 장치(343)는 메모리 영역(411)에 저장된 원본 데이터(DATAx)를 리드 전압(Vread)을 이용하여 리드하고(S110), 리드 결과에 해당하는 제1데이터(DATA1)를 생성하고(S112), 제1데이터(DATA1)를 메모리 컨트롤러(328)로 전송할 수 있다. 메모리 컨트롤러(328)는 제1데이터(DATA1)를 버퍼 매니저(327)로 전송할 수 있다. 불휘발성 메모리 장치(343)는 메모리 영역(411)에 대한 반복적인 리드 작동들을 수행할 수 있다(S113).
메모리 영역(411)에 대한 반복적인 리드 작동들이 수행된 후(S113), 불휘발성 메모리 장치(343)는 메모리 영역(411)에 저장된 원본 데이터(DATAx)를 리드 전압(Vread)을 이용하여 리드하고(S114), 리드 결과에 따라 제2데이터(DATA2)를 생성하고(S116), 제2데이터(DATA2)를 메모리 컨트롤러(328)로 전송할 수 있다. 메모리 컨트롤러(328)는 제2데이터(DATA2)를 버퍼 매니저(327)로 전송할 수 있다.
버퍼 매니저(327)는 제1데이터(DATA1)에 포함된 비트들과 제2데이터(DATA2)에 포함된 비트들을 비트-단위로 비교하고, 변경된 비트들을 판별하고, 판별된 비트들 각각이 리텐션 복구 비트인지 손상된 셀 비트인지를 판단하고, 상기 판별된 비트들 중에서 상기 리텐션 복구 비트로 판단된 비트들을 포함하는 제3데이터 (DATA3)를 생성할 수 있다(S118).
상술한 바와 같이, 단계(118)는 불휘발성 메모리 장치(343)의 내부 또는 버퍼 매니저(327) 내부에서 수행될 수 있으나 이에 한정되는 것은 아니다.
ECC 엔진(329)은 제3데이터(DATA3)에 대한 ECC 디코딩을 수행할 수 있다 (S120). 예컨대, 제3데이터(DATA3)는 메모리 컨트롤러(328)를 통해 ECC 엔진(329)으로 공급될 수 있으나 이에 한정되는 것은 아니다. 제3데이터(DATA3)에 대한 ECC 디코딩이 성공하면(S122의 YES), ECC 엔진(329)은 ECC 디코드된 데이터(DATAx)를 버스(321)를 통해 CPU(323)로 전송할 수 있다. CPU(323)는 ECC 디코드된 데이터 (DATAx)를 제2인터페이스(310)를 통해 호스트(200)로 전송할 수 있다(S124).
실시 예들에 따라, 제3데이터(DATA3)는, 메모리 컨트롤러(328)의 제어에 따라, 메모리 클러스터(340)에 프로그램될 수 있다(S126). 실시 예들에 따라, 메모리 컨트롤러(328)는 ECC 엔진(329)에 의해 인코딩되지 않은 제3데이터(DATA3), 예컨대, ECC 엔진(329)을 바이패스한 제3데이터(DATA3)를 메모리 클러스터(340)에 프로그램할 수 있다(S126). 실시 예들에 따라, 원본 데이터(DATAx)와 제3데이터(DATA3)는 동일한 블록 또는 서로 다른 블록에 프로그램될 수도 있다. 제3데이터(DATA3)가 프로그램되는 불휘발성 메모리 장치는 메모리 컨트롤러(328)에 의해 결정될 수 있다.
메모리 클러스터(340)에 프로그램된 제3데이터(DATA3)는 컨트롤러(320)로 전송되고, ECC 엔진(329)에 의해 ECC 디코딩될 수 있다.
제3데이터(DATA3)에 대한 ECC 디코딩이 실패하면(S122의 NO), ECC 엔진(329)은 ECC 디코딩 실패를 지시하는 제1지시 신호를 버스(321)를 통해 CPU(323)로 전송할 수 있다. CPU(323)는 상기 제1지시 신호에 응답하여 리드 작동 실패를 지시하는 제2지시 신호를 제2인터페이스(310)를 통해 호스트(200)로 전송할 수 있다(S128).
실시 예들에 따라, 제3데이터(DATA3)에 대한 ECC 디코딩이 실패하면(S122의 NO), 메모리 컨트롤러(328)는 메모리 영역(411)에 대한 추가적인 반복적인 리드 작동들을 수행할 수 있다. 이 경우, 단계들(S114~S128)이 다시 수행될 수 있다.
단계들(S112와 S113) 사이에서, 리드 전압을 변경하면서 최적의 리드 전압으로 메모리 영역(411)에 저장된 원본 데이터(DATAx)를 리드하는 방법이 적용될 수 있다. 상기 방법으로도 원본 데이터(DATAx)에 포함된 에러 비트들이 정정될 수 없을 때, 불휘발성 메모리 장치(343)는, 제1데이터(DATA1)를 리드하는데 사용된 리드 전압(Vread)을 이용하여, 메모리 영역(411)에 대한 반복적인 리드 작동들을 수행할 수 있다(S113). 그 후, 불휘발성 메모리 장치(343)는 메모리 영역(411)에 저장된 원본 데이터(DATAx)를 리드 전압(Vread)을 이용하여 리드하고(S114), 리드 결과에 따라 제2데이터(DATA2)를 생성할 수 있다(S116).
도 6과 도 7은 도 1에 도시된 데이터 처리 시스템의 작동을 설명하기 위한 플로우 차트이다. 도 1부터 도 4, 도 6과 도 7을 참조하면, 불휘발성 메모리 장치 (343)는 메모리 영역(411)에 저장된 원본 데이터(DATAx)를 리드 전압(Vread)을 이용하여 리드하고(S210), 리드 결과에 해당하는 제1데이터(DATA1)를 생성할 수 있다 (S212). 제1데이터(DATA1)는 메모리 컨트롤러(328)를 통해 ECC 엔진(329)으로 공급될 수 있다.
ECC 엔진(329A)은 제1데이터(DATA1)에 대한 ECC 디코딩을 수행할 수 있다 (S214). 제1데이터(DATA1)에 대한 ECC 디코딩이 성공하면(S216의 YES), ECC 엔진 (329)은 ECC 디코드된 데이터(DATAx)를 버스(321)를 통해 CPU(323)로 전송할 수 있고, CPU(323)는 ECC 디코드된 데이터(DATAx)를 제2인터페이스(310)를 통해 호스트 (200)로 전송할 수 있다(S218). 제1데이터(DATA1)에 대한 ECC 디코딩이 성공하면 (S216의 YES), 메모리 컨트롤러(328)는, CPU(323)의 제어에 따라, 메모리 영역 (411)에 대한 리드 작동을 종료할 수 있다.
제1데이터(DATA1)에 대한 ECC 디코딩이 실패하면(S216의 N0), 제1데이터 (DATA1)는, 메모리 컨트롤러(328)의 제어에 따라, 버퍼(예컨대, 버퍼 매니저(327))에 저장될 수 있다(S220). 불휘발성 메모리 장치(343)는 메모리 영역(411)에 대한 반복적인 리드 작동들을 수행할 수 있다(S221).
메모리 영역(411)에 대한 반복적인 리드 작동들이 수행된 후(S221), 불휘발성 메모리 장치(343)는 메모리 영역(411)에 저장된 원본 데이터(DATAx)를 리드 전압(Vread)을 이용하여 리드하고(S222), 리드 결과에 해당하는 제2데이터(DATA2)를 생성할 수 있다(S224). 제2데이터(DATA2)는 메모리 컨트롤러(328)를 통해 ECC 엔진 (329)으로 공급될 수 있다.
ECC 엔진(329)은 제2데이터(DATA2)에 대한 ECC 디코딩을 수행할 수 있다 (S226). 제2데이터(DATA2)에 대한 ECC 디코딩이 성공하면(S228의 YES), ECC 엔진 (329)은 ECC 디코드된 데이터(DATAx)를 버스(321)를 통해 CPU(323)로 전송할 수 있고, CPU(323)는 ECC 디코드된 데이터(DATAx)를 제2인터페이스(310)를 통해 호스트 (200)로 전송할 수 있다(S230). 제2데이터(DATA2)에 대한 ECC 디코딩이 성공하면 (S228의 YES), 메모리 컨트롤러(328)는, CPU(323)의 제어에 따라, 메모리 영역 (411)에 대한 리드 작동을 종료할 수 있다.
제2데이터(DATA2)에 대한 ECC 디코딩이 실패하면(S228의 N0), 제2데이터 (DATA2)는, 메모리 컨트롤러(328)의 제어에 따라, 버퍼(예컨대, 버퍼 매니저(327))에 저장될 수 있다(S232).
버퍼 매니저(327)는 제1데이터(DATA1)에 포함된 비트들과 제2데이터(DATA2)에 포함된 비트들을 비트-단위로 비교하고, 변경된 비트들을 판별하고, 판별된 비트들 각각이 리텐션 복구 비트인지 손상된 셀 비트인지를 판단하고, 상기 판별된 비트들 중에서 상기 리텐션 복구 비트로 판단된 비트들을 포함하는 제3데이터 (DATA3)를 생성할 수 있다(S234).
ECC 엔진(329)은 제3데이터(DATA3)에 대한 ECC 디코딩을 수행할 수 있다 (S236). 제3데이터(DATA3)에 대한 ECC 디코딩이 성공하면(S238의 YES), ECC 엔진 (329)은 ECC 디코드된 데이터(DATAx)를 버스(321)를 통해 CPU(323)로 전송할 수 있고, CPU(323)는 ECC 디코드된 데이터(DATAx)를 제2인터페이스(310)를 통해 호스트 (200)로 전송할 수 있다(S240).
제3데이터(DATA3)에 대한 ECC 디코딩이 실패하면(S238의 NO), ECC 엔진(329)은 ECC 디코딩 실패를 지시하는 제1지시 신호를 버스(321)를 통해 CPU(323)로 전송할 수 있다. CPU(323)는 상기 제1지시 신호에 응답하여 리드 작동 실패를 지시하는 제2지시 신호를 제2인터페이스(310)를 통해 호스트(200)로 전송할 수 있다(S242).
실시 예들에 따라, 제3데이터(DATA3)는, 메모리 컨트롤러(328)의 제어에 따라, 메모리 클러스터(340)에 프로그램될 수 있다(S244). 실시 예들에 따라, 메모리 컨트롤러(328)는 ECC 엔진(329)에 의해 인코딩되지 않은 제3데이터(DATA3)를 메모리 클러스터(340)에 프로그램할 수 있다(S244). 그 후 리드 작동 동안, 불휘발성 메모리 장치(343)는 메모리 클러스터(340)에 프로그램된 제3데이터(DATA3)를 리드 전압(Vread)을 이용하여 리드하고(S246), 리드 결과에 해당하는 제4데이터를 메모리 컨트롤러(328)를 통해 ECC 엔진(329)으로 공급할 수 있다.
ECC 엔진(329)은 제4데이터에 대한 ECC 디코딩을 수행할 수 있다(S248). 제4데이터에 대한 ECC 디코딩이 성공하면(S248의 YES), ECC 엔진(329)은 ECC 디코드된 데이터(DATAx)를 버스(321)를 통해 CPU(323)로 전송할 수 있고, CPU(323)는 ECC 디코드된 데이터(DATAx)를 제2인터페이스(310)를 통해 호스트(200)로 전송할 수 있다(S250).
제4데이터에 대한 ECC 디코딩이 실패하면(S248의 NO), ECC 엔진(329)은 ECC 디코딩 실패를 지시하는 제1지시 신호를 버스(321)를 통해 CPU(323)로 전송할 수 있다. CPU(323)는 상기 제1지시 신호에 응답하여 리드 작동 실패를 지시하는 제2지시 신호를 제2인터페이스(310)를 통해 호스트(200)로 전송할 수 있다(S252).
도 8은 본 발명의 실시 예들에 따른 데이터 처리 시스템의 작동을 설명하기 위한 개념도이다. 도 1, 도 2, 도 4 및 도 8을 참조하면, 데이터 처리 시스템(100A)은 데이터 저장 장치, ECC 엔진(329A), 및 호스트(200A)를 포함할 수 있다.
제1리드 작동 동안, 불휘발성 메모리 장치(343)는 메모리 영역(411)에 저장된 원본 데이터(DATAx)를 리드 전압(Vread)을 이용하여 리드하고(S310), 리드 결과에 해당하는 제1데이터(DATA1)를 ECC 엔진(329A)으로 공급할 수 있다(S312).
ECC 엔진(329A)은 제1데이터(DATA1)에 대한 ECC 디코딩을 수행할 수 있다. 제1데이터(DATA1)에 대한 ECC 디코딩이 성공하면, ECC 엔진(329A)은 ECC 디코드된 데이터(DATAx)를 호스트(200A)로 전송할 수 있다(S314).
제1데이터(DATA1)에 대한 ECC 디코딩이 실패하면, ECC 엔진(329A)은 제1데이터(DATA1)를 호스트(200A)로 전송할 수 있다(S316). 호스트(200A)는 제1데이터 (DATA1)를 메모리 장치(예컨대, 도 1의 240 또는 CPU(220)에 의해 액세스 가능한 메모리 장치(미도시))에 저장할 수 있다(S318). 불휘발성 메모리 장치(343)는 메모리 영역(411)에 대한 반복적인 리드 작동들을 수행할 수 있다.
메모리 영역(411)에 대한 반복적인 리드 작동들이 수행된 후, 제2리드 작동 동안 불휘발성 메모리 장치(343)는 메모리 영역(411)에 저장된 원본 데이터(DATAx)를 리드 전압(Vread)을 이용하여 리드하고(S320), 리드 결과에 해당하는 제2데이터 (DATA2)를 ECC 엔진(329A)으로 공급될 수 있다(S322).
ECC 엔진(329A)은 제2데이터(DATA2)에 대한 ECC 디코딩을 수행할 수 있다. 제2데이터(DATA2)에 대한 ECC 디코딩이 성공하면, ECC 엔진(329A)은 ECC 디코드된 데이터(DATAx)를 호스트(200A)로 전송할 수 있다(S314).
제2데이터(DATA2)에 대한 ECC 디코딩이 실패하면, ECC 엔진(329A)은 제2데이터(DATA2)를 호스트(200A)로 전송할 수 있다(S324). 호스트(200A)는 제2데이터 (DATA2)를 메모리 장치(예컨대, 도 1의 240 또는 CPU(220)에 의해 액세스 가능한 메모리 장치(미도시))에 저장할 수 있다(S326).
호스트(200A)는 메모리 장치(예컨대, 도 1의 240 또는 CPU(220)에 의해 액세스 가능한 메모리 장치(미도시))에 저장된 제1데이터(DATA1)에 포함된 비트들과 상기 메모리 장치에 저장된 제2데이터(DATA2)에 포함된 비트들을 비트-단위로 비교하고, 변경된 비트들을 판별하고, 판별된 비트들 각각이 리텐션 복구 비트인지 손상된 셀 비트인지를 판단하고, 상기 판별된 비트들 중에서 상기 리텐션 복구 비트로 판단된 비트들을 포함하는 제3데이터(DATA3)를 생성할 수 있다(S328).
호스트(200A)의 ECC 엔진(250)은 제3데이터(DATA3)에 대한 ECC 디코딩을 수행할 수 있다. 제3데이터(DATA3)에 대한 ECC 디코딩이 성공하면, ECC 엔진(250)은 ECC 디코드된 데이터(DATAx)를 외부 장치로 출력할 수 있다. 제3데이터(DATA3)에 대한 ECC 디코딩이 실패하면, ECC 엔진(250)은 ECC 디코딩 실패를 지시하는 지시 신호를 상기 외부 장치로 전송할 수 있다.
실시 예들에 따라, 호스트(200A)는 제3데이터(DATA3)를 메모리 클러스터 (340)에 프로그램할 수 있다(S330). 실시 예들에 따라, ECC 엔진(329A)에 의해 인코딩되지 않은 제3데이터(DATA3)는 메모리 클러스터(340)에 프로그램될 수 있다 (S330).
제3리드 작동 동안, 불휘발성 메모리 장치(343)는 메모리 클러스터(340)에 프로그램된 제3데이터(DATA3)를 리드 전압(Vread)을 이용하여 리드하고(S332), 제3데이터(DATA3)를 ECC 엔진(329A)으로 공급할 수 있다(S334).
ECC 엔진(329A)은 제3데이터(DATA3)에 대한 ECC 디코딩을 수행할 수 있다. 제3데이터(DATA3)에 대한 ECC 디코딩이 성공하면, ECC 엔진(329A)은 ECC 디코드된 데이터(DATAx)를 호스트(200A)로 전송할 수 있다(S336).
실시 예들에 따라, 제3데이터(DATA3)에 대한 ECC 디코딩은 호스트(200A)의 ECC 엔진(250)에 의해 수행될 수도 있고, 호스트(200A)의 외부의 ECC 엔진(329A)에 의해 수행될 수 있다.
ECC 엔진(329A)은 불휘발성 메모리 장치(343)와 함께 데이터 저장 장치 내부에 구현될 수도 있고, 상기 불휘발성 메모리 장치와 호스트(200A) 사이에 구현될 수 있다. ECC 엔진(329A)이 어디에 구현되더라도 본 발명의 실시 예에 따른 데이터 처리 시스템(100A)은 도 8을 참조하여 설명된 단계들(S310~S336)을 수행할 수 있다.
도 9는 도 2의 불휘발성 메모리 장치에 포함되고 원본 데이터를 저장하는 블록을 나타낸다. 블록(412)은 64개의 페이지들(PAGE0~PAGE63)을 포함한다고 가정하고, 원본 데이터(DATAx)는 제21페이지(PAGE20)의 메모리 영역(411)에 저장된다고 가정한다. 예컨대, 메모리 영역(411)의 크기는 제21페이지(PAGE20)의 크기와 동일할 수도 있고 작을 수도 있다.
도 10은 본 발명의 실시 예들에 따른 반복적인 리드 작동들과 제2데이터를 생성하는 과정을 설명하기 위한 플로우 차트이다. 도 9와 도 10을 참조하면, 제21페이지(PAGE20)에 저장된 원본 데이터(DATAx)를 리드하기 위한 리드 작동들이 2번 이상 수행될 수 있다(S310). 즉, 리드 전압(Vread)이 페이지(PAGE20)로 2번 이상 공급될 수 있다.
불휘발성 메모리 장치(343)는 메모리 영역(411)에 저장된 원본 데이터 (DATAx)를 리드 전압(Vread)을 이용하여 리드하고(S312), 리드 결과에 해당하는 제2데이터(DATA2)를 생성할 수 있다(S314).
도 11은 본 발명의 실시 예들에 따른 반복적인 리드 작동들과 제2데이터를 생성하는 과정을 설명하기 위한 플로우 차트이다. 도 9와 도 11을 참조하면, 첫 페이지(PAGE0)부터 마지막 페이지(PAGE63) 각각에 대한 리드 작동이 순차적으로 수행될 수 있다(S410). 제21페이지(PAGE20) 이외의 페이지들(PAGE0~PAGE19, PAGE21~PAGE63) 각각에 대해 리드 작동이 수행되더라도 제21페이지(PAGE20)에 포함된 불휘발성 메모리 셀들 각각의 문턱 전압은 변경될 수 있다.
불휘발성 메모리 장치(343)는 제21페이지(PAGE20)의 메모리 영역(411)에 저장된 원본 데이터(DATAx)를 리드 전압(Vread)을 이용하여 리드하고(S412), 리드 결과에 해당하는 제2데이터(DATA2)를 생성할 수 있다(S414).
도 12는 본 발명의 실시 예들에 따른 반복적인 리드 작동들과 제2데이터를 생성하는 과정을 설명하기 위한 플로우 차트이다. 도 9와 도 12를 참조하면, 블록 (412)에 포함된 모든 페이지들(PAGE0~PAGE63) 중에서 제21페이지(PAGE20)에 인접하는 페이지들(PAGE15~PAGE25) 각각에 대한 리드 작동이 순차적으로 수행될 수 있다 (S510). 페이지들(PAGE15~PAGE25) 각각에 대해 리드 작동이 수행되더라도 제21페이지(PAGE20)에 포함된 불휘발성 메모리 셀들 각각의 문턱 전압은 변경될 수 있다.
불휘발성 메모리 장치(343)는 제21페이지(PAGE20)의 메모리 영역(411)에 저장된 원본 데이터(DATAx)를 리드 전압(Vread)을 이용하여 리드하고(S512), 리드 결과에 해당하는 제2데이터(DATA2)를 생성할 수 있다(S514).
도 9부터 도 12에서 예시된 페이지들은 본 발명의 이해를 위해 예시된 것들로서 본 발명의 기술적 사상이 상기 예시들에 한정되는 것은 아니다.
도 13은 본 발명의 실시 예들에 따른 데이터 처리 시스템의 블록도이다. 도 1부터 도 13을 참조하면, 데이터 처리 시스템(100B)은 호스트(200)와 데이터 저장 장치(300B)를 포함할 수 있다.
데이터 저장 장치(300B)는 eMMC로 구현될 수 있으나 이에 한정되는 것은 아니다. 예컨대, 데이터 저장 장치(300B)는 버퍼(예컨대, DRAM; 330)를 포함하지 않을 수 있다. 또한, 메모리 클러스터(340)는 하나 또는 그 이상의 채널들을 포함할 수 있고, 각 채널에는 적어도 하나의 불휘발성 메모리 장치가 접속될 수 있다. 호스트(200)와 컨트롤러(320)는 데이터(DATA)를 주고받을 수 있고, 호스트(200)는 명령(CMD)과 클락 신호(CLK)를 컨트롤러(320)로 전송할 수 있다. 상술한 바와 같이, 제3데이터(DATA3)는 메모리 클러스터(340)에 포함된 불휘발성 메모리 장치(NVM) 내부에서 생성되거나 컨트롤러(320)에 배치된 버퍼 매니저(327)에 의해 생성될 수 있다. 제3데이터(DATA3)에 대한 ECC 디코딩은 컨트롤러(320)에 배치된 ECC 엔진(329)에 의해 실행될 수 있다.
도 14는 본 발명의 실시 예들에 따른 데이터 처리 시스템의 블록도이다. 도 1부터 도 14를 참조하면, 데이터 처리 시스템(500)은 데이터베이스(520), 데이터베이스 서버(530), 제2네트워크(540), 및 복수의 클라이언트 컴퓨터들(550과 551)을 포함할 수 있다. 데이터 센터, 인터넷 데이터 센터, 또는 클라우드 데이터 센터 (510)는 데이터베이스(520)와 데이터베이스 서버(530)를 포함할 수 있다.
데이터베이스(520)는 복수의 데이터 저장 장치들(300)을 포함할 수 있다. 복수의 데이터 저장 장치들(300)은 랙(rack)에 설치될 수 있다. 각 데이터 저장 장치 (300)의 구조와 작동은 도 1부터 도 12를 참조하여 설명된 데이터 저장 장치(300)의 구조와 작동과 실질적으로 동일 또는 유사하다. 각 데이터 저장 장치(300)는 DAS(Direct Attached Storage), NAS(Network Attached Storage), 또는 SAN(Storage Area Network)에 포함될 수 있다.
데이터베이스 서버(530)는 복수의 데이터 저장 장치들(300) 각각의 작동을 제어할 수 있다. 예컨대, 데이터베이스 서버(530)는 도 1에 도시된 호스트(200) 또는 도 8에 도시된 호스트(200A)의 기능을 수행할 수 있다. 데이터베이스 서버(530)는 제1네트워크(535), 예컨대 랜(Local Area Network(LAN))을 통해 제2무선 네트워크(540), 예컨대, 인터넷 또는 Wi-Fi에 접속될 수 있다. 복수의 클라이언트 컴퓨터들(550과 551) 각각은 제2네트워크(540)를 통해 데이터베이스 서버(530)에 접속할 수 있다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100, 100A, 100B, 500: 데이터 처리 시스템
200: 호스트
300: 데이터 저장 장치
310: 제2인터페이스
320: 컨트롤러
330: 버퍼 또는 DRAM
327: 버퍼 매니저
328: 메모리 컨트롤러
329: ECC 엔진
410: 메모리 셀 어레이
411: 메모리 영역
430: 제어 회로 블록
450: 데이터 레지스터 및 감지 증폭기
200: 호스트
300: 데이터 저장 장치
310: 제2인터페이스
320: 컨트롤러
330: 버퍼 또는 DRAM
327: 버퍼 매니저
328: 메모리 컨트롤러
329: ECC 엔진
410: 메모리 셀 어레이
411: 메모리 영역
430: 제어 회로 블록
450: 데이터 레지스터 및 감지 증폭기
Claims (10)
- 메모리 영역을 포함하는 메모리 장치의 작동 방법에 있어서,
상기 메모리 영역에 저장된 데이터를 제1리드 전압을 이용하여 리드하고, 제1데이터를 생성하는 단계;
상기 제1 데이터를 생성한 이후에, 상기 메모리 영역에 저장된 상기 데이터에 대한 리드 작동을 적어도 한 번 수행하는 단계;
상기 리드 작동을 적어도 한번 수행한 이후에, 상기 메모리 영역에 저장된 상기 데이터를 제2리드 전압을 이용하여 리드하고, 제2데이터를 생성하는 단계;
상기 제1데이터와 상기 제2데이터를 비교하고, 비교 결과에 따라 변경된 비트들을 판별하고, 판별된 비트들 각각이 리텐션 복구 비트인지 손상된 셀 비트인지를 판단하는 단계; 및
상기 판별된 비트들 중에서 상기 리텐션 복구 비트로 판단된 비트들을 포함하는 제3데이터를 생성하는 단계를 포함하고,
상기 제1리드 전압과 상기 제2리드 전압은 서로 동일하거나 서로 다른 메모리 장치의 작동 방법. - 제1항에 있어서,
상기 제1데이터를 생성하기 전에, 상기 메모리 영역에 저장된 상기 데이터에 대한 리드 작동을 적어도 한 번 수행하는 단계를 더 포함하는 메모리 장치의 작동 방법. - 제1항에 있어서,
상기 제3데이터를 상기 메모리 장치에 프로그램하는 단계를 더 포함하는 메모리 장치의 작동 방법. - 제1항에 있어서, 상기 제2데이터를 생성하기 전에,
상기 메모리 영역이 페이지일 때, 상기 페이지를 포함하는 블록에 포함된 모든 페이지들 각각에 대해 리드 작동을 순차적으로 수행하는 단계를 더 포함하는 메모리 장치의 작동 방법. - 제1항에 있어서, 상기 제2데이터를 생성하기 전에,
상기 메모리 영역이 페이지일 때, 상기 페이지를 포함하는 블록에 포함된 모든 페이지들 중에서 상기 페이지에 인접하는 일부의 페이지들 각각에 대해 리드 작동을 수행하는 단계를 더 포함하는 메모리 장치의 작동 방법. - 제1항에 있어서,
상기 메모리 영역은 페이지보다 작은 메모리 장치의 작동 방법. - 제1항에 있어서,
상기 메모리 영역은 복수의 메모리 셀들을 포함하고, 상기 복수의 메모리 셀들 각각은 전하 트랩 레이어를 포함하는 메모리 장치의 작동 방법. - 메모리 장치와 컨트롤러를 포함하는 데이터 저장 장치의 작동 방법에 있어서,
상기 메모리 장치의 메모리 영역에 저장된 데이터로부터 제1데이터를 생성하는 단계;
상기 제1데이터를 생성한 이후에, 상기 메모리 영역에 대해 반복적인 리드 작동들을 수행하는 단계;
상기 반복적인 리드 작동을 수행한 이후에, 상기 메모리 영역에 저장된 상기 데이터로부터 제2데이터를 생성하는 단계;
상기 제1데이터와 상기 제2데이터를 비교하고, 비교 결과에 따라 변경된 비트들을 판별하고, 판별된 비트들 각각이 리텐션 복구 비트인지 손상된 셀 비트인지를 판단하는 단계; 및
상기 판별된 비트들 중에서 상기 리텐션 복구 비트로 판단된 비트들을 포함하는 제3데이터를 생성하는 단계를 포함하는 데이터 저장 장치의 작동 방법. - 제8항에 있어서,
상기 제1데이터는 상기 메모리 영역으로 공급되는 제1리드 전압에 기초하여 생성되고,
상기 제2데이터는 상기 메모리 영역으로 공급되는 제2리드 전압에 기초하여 생성되
상기 제1리드 전압과 상기 제2리드 전압은 서로 동일하거나 서로 다른 데이터 저장 장치의 작동 방법. - 제9항에 있어서, 상기 반복적인 리드 작동들을 수행하는 단계는,
상기 반복적인 리드 작동들 각각을 위해 상기 제1리드 전압 또는 상기 제2리드 전압을 상기 메모리 영역으로 공급하는 데이터 저장 장치의 작동 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150108354A KR102321478B1 (ko) | 2015-07-30 | 2015-07-30 | 리텐션에 의한 데이터 손실을 방지하는 데이터 처리 시스템의 작동 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150108354A KR102321478B1 (ko) | 2015-07-30 | 2015-07-30 | 리텐션에 의한 데이터 손실을 방지하는 데이터 처리 시스템의 작동 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170014645A KR20170014645A (ko) | 2017-02-08 |
KR102321478B1 true KR102321478B1 (ko) | 2021-11-04 |
Family
ID=58155722
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150108354A KR102321478B1 (ko) | 2015-07-30 | 2015-07-30 | 리텐션에 의한 데이터 손실을 방지하는 데이터 처리 시스템의 작동 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102321478B1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102684106B1 (ko) * | 2018-03-21 | 2024-07-12 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100826500B1 (ko) * | 2006-10-23 | 2008-05-02 | 삼성전자주식회사 | 비휘발성 반도체 메모리 장치 및 상기 비휘발성 반도체메모리 장치의 데이터 복구 방법 |
US8365030B1 (en) * | 2009-03-30 | 2013-01-29 | Samsung Electronics Co., Ltd. | Nonvolatile memory devices and error correction methods thereof |
US9645177B2 (en) * | 2012-05-04 | 2017-05-09 | Seagate Technology Llc | Retention-drift-history-based non-volatile memory read threshold optimization |
KR102114234B1 (ko) * | 2013-10-22 | 2020-05-25 | 에스케이하이닉스 주식회사 | 데이터 저장 시스템 및 그것의 동작 방법 |
KR20160051331A (ko) * | 2014-11-03 | 2016-05-11 | 에스케이하이닉스 주식회사 | 데이터 복구 방법 및 이를 사용한 비휘발성 메모리 시스템 |
-
2015
- 2015-07-30 KR KR1020150108354A patent/KR102321478B1/ko active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
KR20170014645A (ko) | 2017-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10324639B2 (en) | Data storage device having multiple solid state drives for data duplication, and data processing system including the same | |
US10481799B2 (en) | Data storage device and method including receiving an external multi-access command and generating first and second access commands for first and second nonvolatile memories | |
US10719264B2 (en) | Solid state drive device and storage system having the same | |
KR102491624B1 (ko) | 데이터 저장 장치의 작동 방법과 상기 데이터 저장 장치를 포함하는 시스템의 작동 방법 | |
US10528506B2 (en) | Uniform performance monitor for a data storage device and method of operation | |
KR102321221B1 (ko) | 버퍼 상에서 메모리 동작을 제어하기 위한 장치 및 방법 | |
US10248501B2 (en) | Data storage apparatus and operation method thereof | |
US10740244B2 (en) | Memory system including a redirector for replacing a fail memory die with a spare memory die | |
KR20120017831A (ko) | 반도체 저장 장치 및 상기 반도체 저장 장치의 성능 조절 방법 | |
US9990149B2 (en) | Memory device for internally performing read-verify operation, method of operating the same, and memory system including the same | |
US10902924B2 (en) | Memory system varying pass voltage based on erase count of target memory block and operating method thereof | |
US11567685B2 (en) | Storage controller and storage device including the same | |
US20190155767A1 (en) | Storage device configured to update field programmable gate array and method of operating the same | |
US9847136B2 (en) | Operating method for host device and memory system including host device and storage device | |
KR102645786B1 (ko) | 컨트롤러, 메모리 시스템 및 그것의 동작 방법 | |
US10379940B2 (en) | Pipeline delay detection during decoding by a data storage device | |
US20190096493A1 (en) | Data storage device and operating method thereof | |
US11194512B2 (en) | Data storage device which selectively performs a cache read or a normal read operation depending on work load and operating method thereof | |
US10515693B1 (en) | Data storage apparatus and operating method thereof | |
KR102321478B1 (ko) | 리텐션에 의한 데이터 손실을 방지하는 데이터 처리 시스템의 작동 방법 | |
CN114730301B (zh) | 用于多协议处理的存储系统和方法 | |
US20210397558A1 (en) | Storage device and operating method thereof | |
US20210382649A1 (en) | Storage System and Method for Using Proactive Device Timeout information | |
US20200250082A1 (en) | Controller, memory system, and operating method thereof | |
US20160062688A1 (en) | Flash memory device, flash memory system, and operating method |
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 |