KR102085127B1 - 메모리 컨트롤러의 구동 방법 및 메모리 컨트롤러에 의해서 제어되는 비휘발성 메모리 장치 - Google Patents

메모리 컨트롤러의 구동 방법 및 메모리 컨트롤러에 의해서 제어되는 비휘발성 메모리 장치 Download PDF

Info

Publication number
KR102085127B1
KR102085127B1 KR1020130137833A KR20130137833A KR102085127B1 KR 102085127 B1 KR102085127 B1 KR 102085127B1 KR 1020130137833 A KR1020130137833 A KR 1020130137833A KR 20130137833 A KR20130137833 A KR 20130137833A KR 102085127 B1 KR102085127 B1 KR 102085127B1
Authority
KR
South Korea
Prior art keywords
wear leveling
running average
average value
memory
memory device
Prior art date
Application number
KR1020130137833A
Other languages
English (en)
Other versions
KR20150055445A (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 KR1020130137833A priority Critical patent/KR102085127B1/ko
Priority to US14/523,978 priority patent/US9594673B2/en
Publication of KR20150055445A publication Critical patent/KR20150055445A/ko
Application granted granted Critical
Publication of KR102085127B1 publication Critical patent/KR102085127B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C2029/4402Internal storage of test result, quality data, chip identification, repair information
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents

Landscapes

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

Abstract

본 발명은 비휘발성 메모리 장치를 제어하는 메모리 컨트롤러 구동 방법에 관한 것이다. 본 발명에 따른 메모리 컨트롤러 구동 방법은, 상기 비휘발성 메모리 장치로부터 리드 데이터를 제공받고, 상기 리드 데이터 중에 에러 비트 개수를 카운트하고; 상기 에러 비트 개수를 사용하여 러닝 에버리지(RA)를 계산하고; 그리고, 상기 런닝 에버리지 값을 웨어 레벨링 인덱스로 하여, 상기 비휘발성 메모리 장치에 대한 웨어 레벨링(wear leveling) 동작을 수행한다.

Description

메모리 컨트롤러의 구동 방법 및 메모리 컨트롤러에 의해서 제어되는 비휘발성 메모리 장치{the method of memory controller operation and the non volatile memory device under the control of the memory controller}
본 발명은 메모리 컨트롤러의 구동 방법에 관한 것으로, 좀 더 구체적으로는 비휘발성 메모리에 대한 웨어 레벨링을 수행하는 메모리 컨트롤러 구동 방법 및 메모리 컨트롤러에 의해서 제어되는 비휘발성 메모리 장치에 관한 것이다.
반도체 메모리 장치는 일반적으로 DRAM, SRAM 등과 같은 휘발성 메모리 장치와 EEPROM, FRAM, PRAM, MRAM, 플래시 메모리 등과 같은 불휘발성 메모리 장치로 구분할 수 있다. 휘발성 메모리 장치는 전원이 차단될 때 저장된 데이터를 잃지만, 불휘발성 메모리는 전원이 차단되더라도 저장된 데이터를 보존한다. 특히, 플래시 메모리는 빠른 읽기 속도, 낮은 전력 소비, 대용량 데이터 저장 등의 장점을 갖는다. 따라서 플래시 메모리를 포함하는 메모리 시스템은 데이터 저장 매체로 널리 사용되고 있다.
불휘발성 메모리를 포함하는 메모리 시스템은 파일 데이터를 효율적으로 관리하고 시스템의 성능을 향상하기 위하여, 데이터를 사용자 영역에 저장하기 전에 버퍼 영역에 저장한다. 이러한 프로그램 방식에 의하면, 머지 동작(merge operation)이나 블록 소거(block erase) 횟수 등을 줄일 수 있다. 그리고 메모리 컨트롤러 내의 SRAM 버퍼의 사용량을 줄일 수 있는 장점이 있다.
그러나 이러한 프로그램 방식은 버퍼 영역에 저장하는 파일 데이터의 사이즈가 커지면서 버퍼 영역의 공간이 부족할 수 있고, 버퍼 영역과 사용자 영역 간의 파일 데이터의 이동이 빈번히 일어나서 메모리 시스템의 성능이 저하될 수 있다. 또한, 모든 프로그램 동작 시에 버퍼 영역을 사용하기 때문에, 버퍼 영역의 마모도(wear level)가 사용자 영역에 비하여 빠르게 증가하는 문제점이 있다.
본 발명이 해결하려는 기술적 과제는, 비휘발성 메모리 장치에 대한 웨어 레벨링을 수행하는 메모리 컨트롤러 동작 방법 및 비휘발성 메모리 장치를 제공하는 것이다.
본 발명이 해결하려는 과제들은 이상에서 언급한 과제들로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 과제를 해결하기 위한 본 발명의 메모리 컨트롤러 구동 방법의 몇몇 태양(aspect)은 비휘발성 메모리 장치로부터 리드 데이터를 제공받고, 리드 데이터 중에 에러 비트 개수를 카운트하여 러닝 에버리지(RA) 값을 계산한다. 그리고, 런닝 에버리지 값을 웨어 레벨링 인덱스로 하여, 비휘발성 메모리 장치에 대한 웨어 레벨링(wear leveling)을 수행한다. 러닝 에버리지 값은 노이즈 파라미터에 의해서 결정된다. 메모리 컨트롤러는 런닝 에버리지 값이 기준 값보다 작은 경우, 프로그램 이레이즈 사이클의 횟수를 증가시켜 비휘발성 메모리 장치에 대한 웨어 레벨링을 수행할 수 있다. 그리고 메모리 컨트롤러는 러닝 에버리지 값이 기준 값보다 큰 경우, 프로그램 이레이즈 사이클의 횟수를 감소시켜 상기 비휘발성 메모리 장치에 대한 웨어 레벨링을 수행할 수 있다.
상기 과제를 해결하기 위한 본 발명의 비휘발성 메모리 장치의 일 태양(aspect)은 데이터를 저장하는 복수의 메모리 블록들을 포함하는 메모리 셀 어레이 및 메모리 셀 어레이와 비트 라인을 통해 연결되고, 상기 메모리 셀 어레이로부터 리드된 데이터를 센싱하고 저장하는 센스 래치(latch)를 포함하는 페이지 버퍼 회로를 포함한다. 그리고, 페이지 버퍼 회로를 제어하는 컨트롤 로직을 포함한다. 컨트롤 로직은 센스 래치에 저장된 리드 데이터와 오리지널 데이터를 비교한 결과값을 참조하여, 상기 리드된 데이터의 에러 비트 개수를 카운트하고, 에러 비트 개수를 사용하여 러닝 에버리지(RA) 값을 계산하여, 복수의 메모리 블록의 웨어 레벨링 인덱스를 형성하는 웨어 레벨링 인덱스 형성기를 포함한다. 페이지 버퍼 회로는 상기 데이터 래치와 상기 센스 래치를 XOR 논리 연산을 수행하여 그 결과를 상기 웨어 레벨링 인덱스 형성기로 제공한다. 웨어 레벨링 인덱스 형성기는 상기 XOR 논리 연산의 결과 중에, 1의 개수를 카운트하여, 상기 에러 비트 개수를 계산할 수 있다.
상기 과제를 해결하기 위한 본 발명의 메모리 컨트롤러의 일 태양(aspect)은 비휘발성 메모리 장치로 제공될 프로그램 또는 리드 명령어를 제어 및 해석하는 마이크로프로세서, 마이크로프로세서의 제어하에 휘발성 메모리 장치로부터 리드된 데이터의 에러 비트 개수를 카운트하는 ECC 디코더 및 에러 비트 개수 및 노이즈 파라미터를 사용하여 러닝 에버리지를 계산하여, 상기 런닝 에버리지에 따라서 상기 비휘발성 메모리 장치의 웨어 레벨링을 수행하는 웨어 레벨링 컨트롤 유닛을 포함한다.
본 발명의 기타 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명은 러닝 에버리지 값을 웨어 레벨링 인덱스로 사용하여, 웨어 레벨링 동작을 수행함으로, 비휘발성 메모리 장치의 메모리 블록을 고르게 프로그램 및/또는 이레이즈할 수 있다. 본 발명에 의하면, 비휘발성 메모리 장치의 동작 수명을 연장할 수 있다.
도 1은 본 발명의 일 실시 예에 따른 비휘발성 메모리 시스템을 보여주는 블록도이다.
도 2는 도 1에 도시된 메모리 컨트롤러를 예시적으로 보여주는 블록도이다.
도 3은 본 발명의 다른 실시 예에 따른 저장 장치를 보여주는 블록도이다.
도 4는 도 3에 도시된 플래시 메모리(2100)를 예시적으로 보여주는 블록도이다.
도 5는 도 4에 도시된 메모리 셀 어레이의 메모리 블록(BLK1)을 예시적으로 보여주는 회로도이다.
도 6은 도 5에 도시된 제 n-1 페이지의 로직컬 페이지를 보여주는 개념도이다.
도 7은 3 비트 플래시 메모리의 프로그램 상태를 보여주는 다이어그램이다.
도 8은 도 4에 도시된 페이지 버퍼 회로를 예시적으로 보여주는 블록도이다.
도 9는 본 발명의 실시 예에 따른 비휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 구동 방법을 보여주는 순서도이다.
도 10은 비휘발성 메모리 장치의 웨어 레벨링 동작을 수행하기 위한 러닝 에버리지 값을 보여주는 그래프이다.
도 11 내지 도 13은 도 4에 도시된 플래시 메모리의 메모리 블록을 3차원으로 구현한 예를 보여준다.
도 14는 본 발명의 실시 예에 따른 메모리 컨트롤러 및 비휘발성 메모리 장치를 포함하는 전자 장치의 블록도를 나타낸다.
도 15는 본 발명의 다른 실시 예에 따른 메모리 컨트롤러 및 플래시 메모리를 포함하는 전자 장치의 블록도를 나타낸다.
도 16은 본 발명의 또 다른 실시 예에 따른 비휘발성 메모리 장치를 포함하는 전자 장치의 블록도를 나타낸다.
도 17은 본 발명의 또 다른 실시 예에 따른 메모리 컨트롤러 및 플래시 메모리를 포함하는 전자 장치의 블록도를 나타낸다.
도 18은 본 발명의 또 다른 실시 예에 따른 메모리 컨트롤러 및 플래시 메모리를 포함하는 전자 장치의 블록도를 나타낸다.
도 19는 도 18에 도시된 전자 장치를 포함하는 데이터 처리 시스템의 블록도를 나타낸다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
하나의 소자(elements)가 다른 소자와 "접속된(connected to)" 또는 "커플링된(coupled to)" 이라고 지칭되는 것은, 다른 소자와 직접 연결 또는 커플링된 경우 또는 중간에 다른 소자를 개재한 경우를 모두 포함한다. 반면, 하나의 소자가 다른 소자와 "직접 접속된(directly connected to)" 또는 "직접 커플링된(directly coupled to)"으로 지칭되는 것은 중간에 다른 소자를 개재하지 않은 것을 나타낸다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다. "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
비록 제1, 제2 등이 다양한 소자, 구성요소 및/또는 섹션들을 서술하기 위해서 사용되나, 이들 소자, 구성요소 및/또는 섹션들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 소자, 구성요소 또는 섹션들을 다른 소자, 구성요소 또는 섹션들과 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 소자, 제1 구성요소 또는 제1 섹션은 본 발명의 기술적 사상 내에서 제2 소자, 제2 구성요소 또는 제2 섹션일 수도 있음은 물론이다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
도 1은 본 발명의 일 실시 예에 따른 비휘발성 메모리 시스템을 보여주는 블록도이다. 도 1을 참조하면, 비휘발성 메모리 시스템(1000)은 비휘발성 메모리 장치(1100) 및 메모리 컨트롤러(1200)를 포함한다. 도 1에 도시된 비휘발성 메모리 시스템(1000)에는 메모리 카드, USB 메모리, SSD 등과 같은 비휘발성 메모리를 기반으로 하는 데이터 저장 매체가 모두 포함될 수 있다.
비휘발성 메모리 장치(1100)는 메모리 컨트롤러(1200)의 제어에 따라 소거, 쓰기 또는 읽기 동작 등을 수행할 수 있다. 이를 위해 비휘발성 메모리 장치(1100)는 입출력 라인을 통해 커맨드(CMD), 어드레스(ADDR), 그리고 데이터(DATA)를 입력받는다. 또한, 비휘발성 메모리 장치(1100)는 전원 라인을 통해 전원(PWR)을 입력받고, 제어 라인을 통해 제어 신호(CTRL)를 입력받는다.
메모리 컨트롤러(1200)는 비휘발성 메모리 장치(1100)의 제반 동작을 제어할 수 있다. 메모리 컨트롤러(1200)는 ECC 엔진(error correction code engine; 1260) 및 웨어 레벨링 제어 유닛(wear leveling control unit; 1270)을 포함한다.
ECC 엔진(ECC engine; 1260)은 에러 비트의 개수를 카운트하고, 에러 비트를 정정한다. ECC 엔진(1260)은 비휘발성 메모리 장치(1100)에 프로그램될 데이터를 오류정정 인코딩을 하여, 패리티(parity) 비트가 부가된 데이터를 형성한다. 패리티 비트는 비휘발성 메모리 장치(1100)에 저장될 수 있다.
ECC 엔진(1260)은 비휘발성 메모리 장치(1100)로부터 리드한 데이터의 에러 비트들의 개수를 카운트하고, 에러 비트 정정 디코딩을 수행할 수 있다. ECC 엔진(1260)은 에러 비트 정정 디코딩을 수행한 결과에 따라 에러 정정 디코딩의 성공 여부를 판단할 수 있다. ECC 엔진(1260)은 ECC 인코딩시에 생성된 페리티(parity) 비트를 사용하여 데이터의 에러 비트를 정정할 수 있다.
ECC 엔진(1260)은 리드 데이터 중에서 에러 비트들의 개수를 카운트하여, 에러 비트 개수가 정정 가능한 에러 비트 한계치 이상 발생하면, 에러 비트를 정정할 수 없다. 이 경우에는 에러 정정 페일(fail)이 발생한다.
계속해서 도 1을 참조하면, ECC 엔진(1260)은 리드 데이터의 에러 비트 정보를 웨어 레벨링 제어 유닛(1270)으로 제공한다. 여기에서, 리드 데이터는 데이터를 프로그램한 직후에 읽은 데이터일 수 있다. 또는 리드 데이터는 데이터를 프로그램한 후에 일정 시간이 경과하여, 마이크로 프로세서 제어하에서 읽은 데이터일 수 있다. 그리고, 리드 데이터는 호스트가 리드 명령어를 제공 시에 읽은 데이터일 수 있다.
웨어 레벨링 제어 유닛(wear leveling control unit; 1270)은 비휘발성 메모리 장치(1100)의 마모도(wear level)를 프로그램 이레이즈 사이클(P/E cycle)을 조정함으로써 관리한다. 웨어 레벨링 제어 유닛(1270)은 하드웨어나 소프트웨어로 구현될 수 있다. 즉, 웨어 레벨링 제어 유닛(1270)은 메모리 컨트롤러(1200) 내에 하나의 칩이나 모듈로 설치되거나, 플로피 디스크나 컴팩트 디스트 또는 USB 등과 같은 외장 메모리를 통해 연결될 수도 있다. 한편, 웨어 레벨링 제어 유닛(1270)은 사용자에 의해 프로그램될 수 있는 형태로 구현될 수도 있다.
웨어 레벨링 제어 유닛(1270)은 비휘발성 메모리 장치(1100)의 웨어 레벨링 인덱스를 형성하는 웨어 레벨링 인덱스 형성기(1271)를 포함한다. 웨어 레벨링 제어 유닛(1270)은 ECC 엔진(1260)으로부터 제공받는 리드 데이터의 에러 비트 개수를 웨어 레벨링 인덱스 형성기(1271)로 제공한다.
웨어 레벨링 인덱스 형성기(1271)는 에러 비트 개수와 노이즈 파라미터를 사용하여 러닝 에버리지 값(running average value)을 계산한다. 구체적인 수식은 도 2에서 설명하도록 한다. 웨어 레벨링 제어 유닛(1270)은 러닝 에버리지 값을 웨어 레벨링 인덱스로 하여, 비휘발성 메모리 장치(1100)의 웨어 레벨링 동작을 수행한다. 웨어 레벨링 제어 유닛(1270)은 러닝 에버리지 값이 크면, 비휘발성 메모리 장치(1100)의 프로그램 또는 이레이즈 횟수를 줄인다. 즉, 러닝 에버리지 값이 기준 값보다 크면, 러닝 에버리지 값에 대응되는 비휘발성 메모리 장치(1100)의 메모리 블록은 마모도(wear level)가 이미 증가한 상태이므로, 프로그램 또는 이레이즈의 횟수를 줄인다.
웨어 레벨링 제어 유닛(1270)은 러닝 에버리지 값이 작으면, 비휘발성 메모리 장치(1100)의 프로그램 또는 이레이즈 횟수를 늘인다. 즉, 러닝 에버리지 값이 기준 값보다 작으면, 러닝 에버리지 값에 대응되는 비휘발성 메모리 장치(1100)의 메모리 블록은 마모도(wear level)가 증가하지 않은 상태이므로, 프로그램 이레이즈의 횟수를 늘인다.
웨어 레벨링 제어 유닛(1270)은 러닝 에버리지 값을 참조하여, 비휘발성 메모리 장치(1100)의 메모리 블록들의 마모도(wear level)를 파악할 수 있으므로, 비휘발성 메모리 장치(1100)의 수명을 예측할 수 있다.
웨어 레벨링 제어 유닛(1270)은 러닝 에버리지 값을 웨어 레벨링 수행의 인덱스(index)로 사용하여, 비휘발성 메모리 장치(1100)의 메모리 블록 별로 균등하게 웨어 레벨링(wear leveling)을 수행할 수 있다. 모든 메모리 블록의 프로그램 이레이즈 사이클은 규등하게 유지될 수 있기 때문에, 비휘발성 메모리 시스템(1000)의 수명이 연장될 수 있다. 비휘발성 메모리 장치(1100)의 마모도(wear level)는 일반적으로 P/E 사이클, ECC 에러율이 증가할수록 마모도(wear level)가 증가한다.
도 2는 도 1에 도시된 메모리 컨트롤러를 예시적으로 보여주는 블록도이다. 메모리 컨트롤러(1200)는 호스트 인터페이스(1210), 램(RAM; 1230), 마이크로 프로세서(microprocessor; 1240), 비휘발성 메모리 인터페이스(1220), 롬(ROM; 1250), ECC 엔진(1260), 그리고 웨어 레벨링 제어 유닛(1270)을 포함한다. 그리고, 메모리 컨트롤러(1200)의 구성요소들(1210~1270)은 버스(bus; 1280)를 통해서 전기적으로 연결될 수 있다.
호스트 인터페이스(1210)는 외부 호스트와 USB (Universal Serial Bus), SCSI (Small Computer System Interface), PCI express, ATA, PATA (Parallel ATA), SATA (Serial ATA), SAS (Serial Attached SCSI) 등을 통해서 통신할 수 있다. 비휘발성 메모리 인터페이스(1220)는 메모리 컨트롤러(1200)와 비휘발성 메모리 장치(1100) 사이에 인터페이스를 수행할 수 있다.
램(RAM; random access memory; 1230)은 버퍼(buffer)역할을 하는 메모리로, 호스트 인터페이스(1210)를 통하여 입력되는 최초 명령어, 데이터, 각종 변수들 또는 비휘발성 메모리 장치(1100)로부터 출력되는 데이터들을 저장할 수 있다. 그리고, 비휘발성 메모리 장치(1100)로 입력되고 출력되는 데이터, 각종 파라미터 및 변수들을 저장할 수 있다.
마이크로프로세서(microprocessor; 1240)는 회로, 로직, 코드 또는 이들의 조합으로 구현할 수 있다. 마이크로프로세서(1240)는 메모리 컨트롤러(1200)를 포함한 비휘발성 메모리 시스템(1000)의 동작을 전반적으로 제어한다. 비휘발성 메모리 시스템(1000)에 전원이 인가되면, 마이크로 프로세서(1240)는 롬(ROM; 1250)에 저장된 펌웨어(firmware)를 램(RAM; 1230) 상에서 구동시킴으로써 비휘발성 메모리 시스템(1000)의 전반적인 동작을 제어할 수 있다. 또한, 마이크로프로세서(1240)는 호스트에서 인가되는 명령어를 해석하고, 해석 결과에 따라 비휘발성 메모리 장치(1100)의 전반적인 동작을 제어할 수 있다.
비휘발성 메모리 인터페이스(1220)를 통해서 마이크로프로세서(1240)가 요구하는 명령어가 비휘발성 메모리 장치(1100)로 제공될 수 있으며, 또한 메모리 컨트롤러(1200)로부터 비휘발성 메모리 장치(1100)로 데이터가 전송될 수 있다. 또한, 비휘발성 메모리 장치(1100)로부터 제공되는 데이터는 비휘발성 메모리 인터페이스(1220)를 통해서 메모리 컨트롤러(1200)로 제공된다.
롬(ROM; 1250)은 비휘발성 메모리 시스템(1000)의 구동 펌웨어 코드 및 메모리 컨트롤러(1200) 동작에 필요한 코드들을 저장할 수 있으며, 본 발명의 범위가 이에 한정되는 것은 아니다. 펌웨어 코드는 롬(1250) 이외의 다양한 비휘발성 메모리 장치, 예를 들면, 플래시 메모리 장치에 저장될 수도 있다.
따라서, 마이크로 프로세서(1240)의 제어 또는 개입이란, 마이크로 프로세서(1240)의 하드웨어적인 직접적 제어뿐만 아니라, 마이크로프로세서(1240)에 의해서 구동되는 소프트웨어인 펌웨어의 간섭도 포함 할 수 있다.
ECC 엔진(error correction code unit; 1260)은 에러 비트 정정을 수행한다. 도 2를 참조하면, ECC 유닛(1260)은 ECC 인코더(1261)와 ECC 디코더(1262)를 포함한다.
ECC 인코더(1261)는 비휘발성 메모리 장치(1100)로 제공되는 데이터의 오류정정 인코딩을 하여, 패리티(parity) 비트가 부가된 코드워드(codeword)를 생성한다. 코드워드는 비휘발성 메모리 장치(1100)에 저장될 수 있다.
ECC 디코더(1262)는 출력된 데이터에 대하여 에러 비트 개수를 카운트 하고, 수행 결과에 따라 에러 정정 디코딩의 성공 여부를 판단한다. 리드한 데이터는 ECC 디코더(1262)로 전송되고, ECC 디코더(1262)는 페리티(parity) 비트를 사용하여 데이터의 에러 비트를 정정할 수 있다. ECC 디코더(1262)는 에러 비트 개수를 카운트 하고, 정정 가능한 에러 비트가 한계치 이상이면, ECC 디코더(1262)는 에러 비트를 정정할 수 없다. ECC 디코더(1262)는 리드 데이터의 에러 비트 개수를 카운트 하여, 에러 비트 개수를 웨어 레벨링 제어 유닛(1270)으로 제공한다.
ECC 인코더(1261)와 ECC 디코더(1262)는 LDPC(low density parity check) code, BCH code, turbo code, 리드-솔로몬 코드(Reed-Solomon code), convolution code, RSC(recursive systematic code), TCM(trellis-coded modulation), BCM(Block coded modulation) 등의 코디드 모듈레이션(coded modulation)을 사용하여 에러 정정을 할 수 있으며 이에 한정되는 것은 아니다.
웨어 레벨링 제어 유닛(wear leveling control unit; 1270)은 프로그램 이레이즈 사이클(P/E cycle)을 조정함으로써 비휘발성 메모리 장치(1100)의 마모도(wear level)를 관리한다. 웨어 레벨링 제어 유닛(1270)은 하드웨어나 소프트웨어로 구현될 수 있다. 즉, 웨어 레벨링 제어 유닛(1270)은 메모리 컨트롤러(1200) 내에 하나의 칩이나 모듈로 설치되거나, 플로피 디스크나 컴팩트 디스트 또는 USB 등과 같은 외장 메모리를 통해 연결될 수도 있다. 한편, 웨어 레벨링 제어 유닛(1270)은 사용자에 의해 프로그램 될 수 있는 형태로 구현될 수도 있다.
웨어 레벨링 제어 유닛(1270)은 비휘발성 메모리 장치(1100)의 웨어 레벨링 인덱스를 형성하는 웨어 레벨링 인덱스 형성기(1271)를 포함한다. 웨어 레벨링 제어 유닛(1270)은 ECC 엔진(1260)으로부터 제공받는 리드 데이터의 에러 비트 개수를 웨어 레벨링 인덱스 형성기(1271)로 제공한다. 웨어 레벨링 인덱스 형성기(1271)는 에러 비트 개수를 사용하여 러닝 에버리지 값(running average value)을 계산하고 웨어 레벨링 인덱스를 형성한다.
본 발명의 일 실시예에 따르면, 웨어 레벨링 인덱스 형성기(1271)는 에러 비트 개수와 노이즈 파라미터를 사용하여 러닝 에버리지 값(running average value)을 계산한다. 러닝 에버리지 값을 구하는 수학식은 아래와 같다.
Figure 112013103500085-pat00001
수학식 1에서, RA(N)은 해당 프로그램 이레이즈 사이클에서 구하고자 하는 N번째 러닝 에버리지 값을 나타내고, RA(N-1)은 (N-1)번째 러닝 에버리지 값을 나타낸다. ECC는 해당 프로그램 이레이즈 사이클에서 얻는 에러 비트의 수이고, M은 노이즈 파라미터이다. 수학식 1을 참조하면, 웨어 레벨링의 인덱스로 사용되는 러닝 에버리지 값(RA)은 에러 비트 개수 및 노이즈 파라미터에 의해서 결정된다.
노이즈 파라미터(M) 값이 크면, 프로그램 이레이즈 사이클에 대응되는 에러 비트들의 편차의 폭이 작아지므로, 에러 비트들의 편차의 반영 비율이 감소하여, 러닝 에버리지 값의 노이즈가 감소하게 된다. 그러나, 노이즈 파라미터(M) 값이 크면, 프로그램 이레이즈 사이클이 증가함에 따라서, 에러 비트 개수의 변화를 트래킹(tracking)하는 속도가 느려지게 된다.
노이즈 파라미터(M) 값이 작으면, 프로그램 및/이레이즈 사이클에 대응되는 에러 비트들의 편차의 폭이 증가하므로, 에러 비트들의 편차의 반영비율이 증가하여 러닝 에버리지 값의 노이즈가 증가하게 된다. 따라서, 웨어 레벨링 인덱스 형성기(1271)는 초기의 프로그램 이레이즈 사이클에서는 노이즈 파라미터를 작게 설정하고, 프로그램 이레이즈 사이클이 증가함에 따라 노이즈 파라미터를 큰 값으로 설정할 수 있다.
본 발명의 다른 실시 예에 따르면, 웨어 레벨링 인덱스 형성기(1271)는 비휘발성 메모리 장치(1100)의 워드 라인(도 5 참조, WLn-1)을 복수 회 리드하여 제공된 데이터의 에러 비트 개수를 사용하여, 러닝 에버리지 값 또는 에버리지 값을 계산한다. 그리고, 웨어 레벨링 인덱스 형성기(1271)는 계산된 에버리지 값을 사용하여 웨어 레벨링 인덱스를 형성한다.
본 발명의 또 다른 실시 예에 따르면, 웨어 레벨링 인덱스 형성기(1271)는 동일한 프로그램 이레이즈 사이클 회수에 대응되는 복수의 워드 라인으로부터 제공된 데이터의 에러 비트 개수를 사용하여, 러닝 에버리지 값 또는 에버리지 값을 계산한다. 그리고 웨어 레벨링 인덱스 형성기(1271)는 계산된 에버리지 값을 사용하여 웨어 레벨링 인덱스를 형성한다.
본 발명의 또 다른 실시 예에 따르면, 웨어 레벨링 인덱스 형성기(1271)는 복수의 프로그램 이레이즈 사이클 회수 동안, 복수의 워드 라인으로부터 제공된 데이터의 에러 비트 개수를 사용하여, 러닝 에버리지 값 또는 에버리지 값을 계산한다. 그리고 웨어 레벨링 인덱스 형성기(1271)는 계산된 에버리지 값을 사용하여 웨어 레벨링 인덱스를 형성한다. 웨어 레벨링 제어 유닛(1270)은 러닝 에버리지 값을 웨어 레벨링 인덱스로 사용하여, 비휘발성 메모리 장치(1100)에 대한 웨어 레벨링을 수행한다.
웨어 레벨링 제어 유닛(1270)은 러닝 에버리지 값이 크면, 비휘발성 메모리 장치(1100)의 프로그램 또는 이레이즈 횟수를 줄인다. 웨어 레벨링 제어 유닛(1270)은 러닝 에버리지 값이 기준 값보다 크면, 러닝 에버리지 값에 대응되는 비휘발성 메모리 장치(1100)의 메모리 블록은 마모도(wear level)가 이미 증가한 상태이므로, 프로그램 또는 이레이즈 횟수를 줄인다.
웨어 레벨링 제어 유닛(1270)은 러닝 에버리지 값이 작으면, 비휘발성 메모리 장치(1100)의 프로그램 또는 이레이즈 횟수를 늘인다. 웨어 레벨링 제어 유닛(1270)은 러닝 에버리지 값이 기준 값보다 작으면, 러닝 에버리지 값에 대응되는 비휘발성 메모리 장치(1100)의 메모리 블록은 마모도(wear level)가 증가하지 않은 상태이므로, 프로그램 또는 이레이즈 횟수를 늘인다.
여기에서, 기준 값은 비휘발성 메모리 시스템(1000)의 제조 당시에 결정될 수 있다. 기준 값은 비휘발성 메모리 장치(1100)의 프로그램 이레이즈 사이클이 증가함에 따라서 변경될 수 있으므로, 수학적으로 확정된 값은 아니다. 그리고 웨어 레벨링 제어 유닛(1270)은 러닝 에버리지 값을 참조하여, 비휘발성 메모리 장치(1100)의 메모리 블록들의 마모도(wear level)을 파악할 수 있으므로, 비휘발성 메모리 장치(1100)의 수명을 예측할 수 있다.
웨어 레벨링 제어 유닛(1270)은 러닝 에버리지 값을 웨어 레벨링 수행의 인덱스(index)로 사용함으로, 비휘발성 메모리 장치(1100)의 메모리 블록 별로 균등하게 웨어 레벨링(wear leveling) 동작을 수행할 수 있다. 모든 블록들의 프로그램 이레이즈 사이클은 규등하게 유지될 수 있기 때문에, 비휘발성 메모리 시스템(1000)의 수명은 연장될 수 있다.
도 3은 본 발명의 다른 실시 예에 따른 저장 장치를 보여주는 블록도이다. 도 3을 참조하면, 저장 장치(2000)는 플래시 메모리(2100)와 메모리 컨트롤러(2200)를 포함한다. 도 1의 예에서는, 웨어 레벨링 인덱스 형성기(1271)가 메모리 컨트롤러(1200) 내에 포함되어 있다. 그러나 도 3에 도시된 바와 같이, 웨어 레벨링 인덱스(2161)는 플래시 메모리(2100)와 같은 비휘발성 메모리 장치 내에 포함될 수도 있다.
도 3을 참조하면, 플래시 메모리(2100)는 웨어 레벨링 인덱스 형성기(2161)를 포함한다. 플래시 메모리(2100)는 형성한 웨어 레벨링 인덱스를 메모리 컨트롤러(2200)로 제공할 수 있다. 그리고, 메모리 컨트롤러(2200)는 웨어 레벨링 인덱스에 따라서 플래시 메모리 (2100)에 대한 웨어 레벨링을 수행한다.
웨어 레벨링 인덱스 형성기(2161)는 에러 비트 개수와 노이즈 파라미터를 사용하여 러닝 에버리지(running average) 값 또는 에버리지 값을 계산한다. 러닝 에버리지 값을 구하는 수학식은 도 2에서 설명한 바와 동일하다.
도 4는 도 3에 도시된 플래시 메모리(2100)를 예시적으로 보여주는 블록도이다. 도 4를 참조하면, 플래시 메모리(2100)는 메모리 셀 어레이(2110), 어드레스 디코더(2120), 페이지 버퍼 회로(2130), 데이터 입출력 회로(2140), 전압 발생기(2150), 그리고 제어 로직(2160)을 포함한다.
메모리 셀 어레이(2110)는 복수의 메모리 블록(memory block)을 포함한다. 메모리 셀 어레이는 평면으로 형성될 수 있고, 기판으로부터 수직 방향으로 메모리 셀들이 적층된 3차원 구조로 형성될 수 있다. 메모리 블록은 물리 페이지(physical page)를 포함한다. 여기에서, 물리 페이지는 하나의 워드 라인(word line; WL)에 연결되어 있는 메모리 셀의 집합을 의미한다.
하나의 메모리 셀에는 싱글 비트 데이터 또는 두 비트 이상의 멀티 비트 데이터가 저장될 수 있다. 싱글 비트 데이터가 저장될 수 있는 메모리 셀은 싱글 레벨 셀(SLC; Single Level Cell) 또는 싱글 비트 셀(single bit cell)이라 부르고, 멀티 비트 데이터가 저장될 수 있는 메모리 셀은 멀티 레벨 셀(MLC; Multi Level Cell) 또는 멀티 비트 셀(multi bit cell)이라 부른다. 예를 들면, 2 비트 MLC 플래시 메모리 장치의 경우, 하나의 물리 페이지(physical page)에 두 개의 논리 페이지(logical page)가 저장될 수 있다. 여기에서, 논리 페이지는 하나의 물리 페이지에 동시에 프로그램될 수 있는 데이터의 집합을 의미한다.
어드레스 디코더(2120)는 선택 라인(SSL, GSL) 또는 워드 라인(WL)을 통해 메모리 셀 어레이(2110)와 연결된다. 프로그램 또는 읽기 동작 시에, 어드레스 디코더(2120)는 어드레스(ADDR)를 입력받고, 어느 하나의 워드 라인을 선택할 수 있다.
페이지 버퍼 회로(2130)는 비트 라인(BL)을 통해 메모리 셀 어레이(2110)와 연결된다. 하나의 페이지 버퍼에는 하나의 비트 라인이 연결(all BL 구조)되거나, 두 개 또는 그 이상의 비트 라인이 연결(shield BL 구조)될 수도 있다. 페이지 버퍼 회로(2130)는 복수의 래치를 포함한다.
페이지 버퍼 회로(2130)는 선택 페이지에 프로그램될 오리지널 데이터나 선택 페이지로부터 읽은 데이터를 임시로 저장할 수 있다. 또한, 페이지 버퍼 회로(2130)는 데이터 리드 시에, 리드 데이터와 원본 데이터를 XOR(exclusive OR) 논리 연산을 수행하고, 그 결과를 제어 로직(2160) 내의 웨어 레벨링 인덱스 형성기(2161)로 제공할 수 있다.
데이터 입출력 회로(2140)는 내부적으로는 데이터 라인(DL)을 통해 페이지 버퍼 회로(2130)와 연결되고, 외부적으로는 입출력 라인(I/O)을 통해 메모리 컨트롤러(도 3 참조, 2200)와 연결된다. 데이터 입출력 회로(2140)는 프로그램 동작 시 메모리 컨트롤러(2200)로부터 프로그램 데이터(program data)를 입력 받고, 읽기 동작 시 읽기 데이터(read data)를 메모리 컨트롤러(2200)로 제공한다.
전압 발생기(2150)는 메모리 컨트롤러(2200)로부터 전원(PWR)을 입력받고, 데이터를 읽거나 쓰는 데 필요한 워드 라인 전압(VWL)을 발생한다. 워드 라인 전압(VWL)은 어드레스 디코더(2120)로 제공된다.
제어 로직(2160)은 커맨드(CMD), 어드레스(ADDR), 그리고 제어신호(CTRL)를 이용하여, 플래시 메모리(2100)의 프로그램, 읽기, 소거 등의 동작을 제어할 수 있다. 예를 들면, 제어 로직(2160)은 프로그램 동작 시에, 어드레스 디코더(2120)를 제어함으로 선택 워드 라인으로 리드 전압이 제공되도록 하고, 페이지 버퍼 회로(2130) 및 데이터 입출력 회로(2140)를 제어함으로 선택 페이지의 데이터를 리드 할 수 있다.
계속해서 도 4를 참조하면, 제어 로직(2160)은 웨어 레벨링 인덱스 형성기(2161)를 포함한다. 웨어 레벨링 인덱스 형성기(2161)는 페이지 버퍼 회로(2130)로부터 제공받은 XOR 논리 연산 결과 값을 사용하여, 리드 데이터의 에러 비트 개수를 카운트할 수 있다.
예를 들면, 제어 로직(2160)은 페이지 버퍼(2130)로부터 제공받은 XOR 논리 연산 결과 값 중에서 1의 개수를 카운트함으로, 리드 데이터의 에러 비트 개수를 카운트할 수 있다. 웨어 레벨링 인덱스 형성기(2161)는 카운트한 에러 비트 개수 및 노이즈 파라미터를 사용하여 러닝 에버리지 값을 계산한다. 웨어 레벨링 인덱스 형성기(2161)는 러닝 에버리지 값을 사용하여 복수의 메모리 블록들의 웨어 레벨링 인덱스를 형성한다.
웨어 레벨링 인덱스 형성기(2161)는 러닝 에버리지 값을 메모리 컨트롤러(2200)로 제공한다. 웨어 레벨링 인덱스 형성기(2161)는 도 2에서 도시한 웨어 레벨링 인덱스 형성기(1171)와 동일한 수학식을 사용하여, 러닝 에버리지 값을 계산할 수 있다. 웨어 레벨링 인덱스 형성기(2161)는 도 2에서 설명한 방법과 동일한 방법으로 웨어 레벨링 인덱스를 형성할 수 있다.
앞에서 설명한 바와 같이, 러닝 에버리지 값이 기준 값보다 크면, 러닝 에버리지 값에 대응되는 플래시 메모리(2100)의 메모리 블록은 마모도(wear level)가 이미 증가한 상태이므로, 프로그램 또는 이레이즈 횟수를 줄인다. 반대로, 러닝 에버리지 값이 기준 값보다 작으면, 러닝 에버리지 값에 대응되는 플래시 메모리(2100)의 메모리 블록은 마모도(wear level)가 증가하지 않은 상태이므로, 프로그램 또는 이레이즈 횟수를 늘인다.
플래시 메모리(2100) 제조 시에 메모리 블록의 프로그램 이레이즈 사이클의 최대 횟수가 결정되나, 러닝 에버리지 값에 따라서, 프로그램 이레이즈 사이클의 횟수가 변할 수 있다.
도 5는 도 4에 도시된 메모리 셀 어레이의 메모리 블록(BLK1)을 예시적으로 보여주는 회로도이다. 도 5를 참조하면, 메모리 블록(BLK1)은 복수의 셀 스트링(cell string)으로 구성되어 있다. 각각의 셀 스트링은 스트링 선택 라인(SSL; String Selection Line)에 연결되는 스트링 선택 트랜지스터, 복수의 워드 라인(WL1~WLn)에 연결되는 복수의 메모리 셀, 그리고 접지 선택 라인(GSL; Ground Selection Line)에 연결되는 접지 선택 트랜지스터를 포함한다. 스트링 선택 트랜지스터는 비트 라인(BL)에 연결되고, 접지 선택 트랜지스터는 공통 소스 라인(CSL; Common Source Line)에 연결된다.
계속해서 도 5를 참조하면, 메모리 블록(BLK1)의 n개의 워드 라인 중에 (n-1)번째 워드 라인(Wn-1)에 연결된 메모리 셀들의 집합을 제 n-1 페이지(1111)라고 정의한다. 그리고 제 n-1 페이지(1111)는 복수의 로직컬 페이지를 포함한다.
도 6은 도 5에 도시된 제 n-1 페이지의 로직컬 페이지를 보여주는 개념도이다. 3 비트 플래시 메모리는 7개의 프로그램 스테이트와 1개의 이레이지 스테이트를 가지며, 하나의 페이지는 3개의 로직컬 페이지를 포함할 수 있다.
도 6을 참조하면, 제 n-1 워드 라인(WLn-1)에 연결되는 제 n-1 페이지(1111)는 제 1 내지 제 3 로지컬 페이지를 포함한다. 예를 들면, 제 1 로직컬 페이지는 LSB(least significant bit) 페이지이고, 제 2 페이지는 CSB(center significant bit) 페이지이며, 제 3 페이지는 MSB(most sinificnat bit) 페이지일 수 있다. 따라서, 제 1 내지 제 3 로직컬 페이지에 저장된 데이터들은 7개의 프로그램 스테이트 및 1개의 이레이즈 스테이트를 형성한다.
도 7은 3 비트 플래시 메모리의 프로그램 상태를 보여주는 다이어그램이다.
MLC 플래시 메모리의 경우, 하나의 메모리 셀에 k개의 비트를 프로그램하면, 메모리 셀은 2k 개의 문턱 전압 산포 중 어느 하나로 형성된다.
다수의 메모리 셀들 간의 미세한 전기적 특성의 차이로 인해, 동일한 데이터가 프로그램 된 메모리 셀들의 각각의 문턱 전압은 일정한 범위의 문턱 전압 산포(threshold voltage distribution)를 형성할 수 있다. 각각의 문턱 전압 산포는 k개의 비트에 의해 생성될 수 있는 2k 개의 데이터 값 각각에 대응될 수 있다. 3 비트 플래시 메모리의 경우, 도 7에 도시된 바와 같이 7개의 프로그램 상태(state)의 문턱 전압의 산포(P1~P7)와 하나의 이레이즈 상태(state)의 문턱 전압 산포(E)가 형성된다. 플래시 메모리는 제 1 내지 제 7 리드 전압(Vread1~Vread7)을 사용하여, 데이터를 리드 할 수 있다.
한편, 플래시 메모리는 시간이 지남에 따라, 플로팅 게이트(floating gate) 또는 터널 산화물(tunnel oxide)에 포획(trap)된 전자들이 방출되는 차지 로스(charge loss)가 발생할 수 있다. 또한, 프로그램 및 이레이즈를 반복하면서 터널 산화물이 열화되어 차지 로스(charge loss)가 더욱 증가할 수 있다. 차지 로스(charge loss)는 문턱 전압을 감소시킬 수 있다. 즉, 문턱 전압의 산포가 왼쪽으로 이동될 수 있다.
또한, 프로그램 디스터번스, 이레이즈 디스터번스, 및/또는 백 패턴 디펜던시(back pattern dependency) 현상에 의해, 문턱 전압의 산포가 증가할 수 있다. 따라서, 상술한 이유로 인한 메모리 셀의 특성 열화로 인하여, 도 7에 도시된 바와 같이 인접한 각 상태(E, P1~P7)의 문턱 전압 산포가 서로 중첩될 수 있다.
문턱 전압 산포가 중첩되면 특정 리드 전압 인가 시, 리드되는 데이터에는 많은 오류가 포함될 수 있다. 예를 들면, 플래시 메모리가 정상이고 제 3 리드 전압(Vread3)이 인가되는 경우에, 메모리 셀은 온(on) 상태이면 제 2 프로그램 상태(P2)에 있고 오프(off) 상태이면 제 3 프로그램 상태(P3)에 있다. 그러나, 문턱 전압 산포가 중첩되는 경우에, 메모리 셀이 오프(off) 상태로 리드되어야 할 경우에도 온(on) 상태로 리드될 수 있다. 이와 같이 메모리 셀의 열화로 인해 문턱 전압 산포가 중첩되면 리드된 데이터에 많은 에러 비트들이 포함될 수 있다.
계속해서 도 7을 참조하면, LSB 페이지 데이터를 리드하는 경우에는, 플래시 메모리는 제 1 리드 전압(Vread1) 및 제 5 리드 전압(Vread5)을 사용하여 2회에 걸쳐서 리드 동작을 수행 한다. 그리고, CSB 페이지 데이터를 리드 하는 경우에는, 제 2 리드 전압(Vread2), 제 4 리드 전압(Vread4) 및 제 6 리드 전압(Vread6)을 사용하여, 3회에 걸쳐서 리드 동작을 수행한다. 마지막으로, MSB 페이지 데이터를 리드하는 경우에는, 제 3 리드 전압(Vread3) 및 제 7 리드 전압(Vread7)을 사용하여, 2회에 걸쳐서 리드 동작을 수행한다. 플래시 메모리는 LSB 페이지, CSB페이지, 및 MSB 페이지의 리드 결과를 ECC 엔진(도 2 참조, 1260)으로 제공하고, ECC 디코더(도 2 참조, 1262)는 리드 결과에 대해서, 에러 비트 개수를 카운트하고, 에러 비트를 정정한다.
도 8은 도 4에 도시된 페이지 버퍼 회로를 예시적으로 보여주는 블록도이다. 도 8을 참조하면, 페이지 버퍼 회로(2130)는 적어도 하나 이상의 래치(2131~2134)를 포함할 수 있다. 도 8에서는 예시적으로 제 1 내지 제 4 래치(2131~2134)를 도시하였으나 이에 한정되는 것은 아니다. 제 1 내지 제 4의 래치(2131~2134)는 전기적으로 연결되어 있다.
제 1 래치(2131)는 메모리 셀의 데이터를 감지하는 감지 래치(sense latch)이다. 제 2 내지 제 4 래치(2132~2134)는 플래시 메모리에 프로그램된 오리지널 데이터를 저장하는 데이터 래치이다. 예를 들면, 제 2 래치(2132)는 LSB 데이터를 저장하고, 제 3 래치(2133)는 CSB 데이터를 저장하며, 제 4 래치(2134)는 MSB 데이터를 저장할 수 있다.
페이지 버퍼 회로(2130)는 제어 로직(2160)의 제어에 따라 제 1 내지 4 래치(2131~2134)의 조합을 통해서 XOR 논리 연산을 수행할 수 있다. 구체적으로, 리드 데이터가 LSB 데이터이면, 제 1 래치(2131)와 제 2 래치(2132)를 조합함으로서, 리드 데이터와 오리지널 데이터에 대한 XOR 논리 연산을 수행할 수 있다. 리드 데이터가 CSB 데이터이면, 제 1 래치(2131)와 제 3 래치(2133)를 조합함으로서, 리드 데이터와 오리지널 데이터에 대한 XOR 논리 연산을 수행할 수 있다.
페이지 버퍼 회로(2130)는 XOR 논리 연산 결과를 제어 로직(도 4 참조, 2160)에 있는 웨어 레벨링 인덱스 형성기(2161)로 제공한다. 그리고 웨어 레벨링 인덱스 형성기(2161)는 XOR 논리 연산 결과들 중에서 1의 개수를 카운트하여, 에러 비트 개수를 계산할 수 있다. 따라서, 웨어 레벨링 인덱스 형성기(2161)는 페이지 버퍼 회로(2130)로부터 제공받은 XOR 논리 연산 결과를 사용하여, 에버리지 값 또는 러닝 에버리지 값을 계산할 수 있다.
웨어 레벨링 인덱스 형성기(2161)는 러닝 에버리지 값을 메모리 컨트롤러(도 3 참조, 2200)로 제공하고, 메모리 컨트롤러(2200)는 러닝 에버리지 값에 기초하여 플래시 메모리(2100)에 대한 웨어 레벨링 동작을 수행할 수 있다.
도 9는 본 발명의 실시 예에 따른 비휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 구동 방법을 보여주는 순서도이다. 이하에서는 도 1 및 도 2를 참조하여, 본 발명의 실시 예에 따른 메모리 컨트롤러(1200)의 구동 방법이 상세하게 설명될 것이다.
S110 단계에서, 메모리 컨트롤러(1200)는 비휘발성 메모리 장치(1100)로부터 리드 데이터를 제공받고, 리드 데이터 중에서 에러 비트 개수들을 카운트한다. 예를 들면, 메모리 컨트롤러(1200)는 ECC 엔진(1260)을 포함할 수 있으며, ECC 엔진(1260)은 리드 데이터의 에러 비트 개수를 카운트할 수 있다.
S120 단계에서, 메모리 컨트롤러(1200)는 에러 비트 개수를 사용하여 러닝 에버리지 값(running average value)을 계산할 수 있다. 구체적으로, 메모리 컨트롤러(1200)는 웨어 레벨링 인덱스 형성기(1271)를 포함하고, 웨어 레벨링 인덱스 형성기(1271)는 에러 비트 개수 및 노이즈 파라미터를 사용하여, 러닝 에버리지 값을 계산한다. 러닝 에버리지 값은 웨어 레벨링 동작을 수행하기 위한 인덱스로 사용된다.
S130 단계에서, 메모리 컨트롤러(1200)는 러닝 에버리지 값에 기초하여, 비휘발성 메모리 장치(1100)에 대한 웨어 레벨링을 수행할 수 있다. 예를 들면, 런닝 에버리지 값이 기준 값보다 작은 경우, 메모리 컨트롤러(1200)는 비휘발성 메모리 장치(1100)의 프로그램 또는 이레이즈 횟수를 늘리는 방향으로 비휘발성 메모리 장치(1100)에 대한 웨어 레벨링 동작을 수행한다. 러닝 에버리지 값이 기준 값보다 큰 경우, 메모리 컨트롤러(1200)는 프로그램 또는 이레이즈 횟수를 줄이는 방향으로 비휘발성 메모리 장치(1100)에 대한 웨어 레벨링 동작을 수행한다.
도 10은 비휘발성 메모리 장치의 웨어 레벨링 동작을 수행하기 위한 러닝 에버리지 값을 보여주는 그래프이다. 도 10을 참조하면, 가로축은 비휘발성 메모리 장치의 프로그램 이레이즈 사이클 횟수를 나타내고, 세로 축은 비휘발성 메모리 장치의 에러 비트들의 개수를 나타낸다. 그리고 굵은 실선은 러닝 에버리지 값(RA)을 나타내며, 얇은 실선은 에러 비트 개수들을 나타낸다.
도 10을 참조하면, 프로그램 이레이즈 사이클에 대응되는 에러 비트 수는 편차가 크지 않도록 노이즈를 제거한다. 웨어 레벨링의 인덱스로 사용되는 러닝 에버리지 값(RA)은 에러 비트 개수 및 노이즈 파라미터에 의해서 결정된다. 노이즈 파라미터 값이 크면, 프로그램 이레이즈 사이클에 대응되는 에러 비트들의 편차가 작아져서, 러닝 에버리지 값의 노이즈가 감소하게 된다.
도 11 내지 도 13은 도 4에 도시된 플래시 메모리의 메모리 블록을 3차원으로 구현한 예를 보여준다. 도 11은 메모리 블록(BLK1)을 예시적으로 보여주는 사시도이고, 도 12는 메모리 블록(BLK1)의 I-I' 단면도이고, 도 13은 등가 회로도이다.
도 9 및 도 10을 참조하면, 메모리 블록(BLK1)은 제 1 내지 제 3 방향들을 따라 신장된 구조물들을 포함한다. 우선, 기판(111)이 제공된다. 예시적으로, 기판(111)은 제 1 타입 불순물로 도핑된 실리콘 물질을 포함할 것이다. 예를 들면, 기판(111)은 p 타입 불순물로 도핑된 실리콘 물질을 포함하거나, p 타입 웰(예를 들면, 포켓 p 웰)일 수 있고, p-타입 웰을 둘러싸는 n-타입 웰을 더 포함할 수 있다. 이하에서, 기판(111)은 p 타입 실리콘인 것으로 가정한다. 그러나, 기판(111)은 p 타입 실리콘으로 한정되지 않는다.
기판(111) 상에, 제 1 방향을 따라 신장된 복수의 도핑 영역들(311~314)이 제공된다. 예를 들면, 복수의 도핑 영역들(311~314)은 기판(111)과 상이한 제 2 타입을 가질 것이다. 예를 들면, 복수의 도핑 영역들(311~314)은 n-타입을 가질 것이다. 이하에서, 제 1 내지 제 4 도핑 영역들(311~314)은 n-타입들인 것으로 가정한다. 그러나, 제 1 내지 제 4 도핑 영역들(311~314)은 n-타입들인 것으로 한정되지 않는다.
제 1 및 제 2 도핑 영역들(311, 312) 사이에 대응하는 기판(111) 상의 영역에서, 제 1 방향을 따라 신장되는 복수의 절연 물질들(112)이 제 2 방향을 따라 순차적으로 제공된다. 예를 들면, 복수의 절연 물질들(112) 및 기판(111)은 제 2 방향을 따라 미리 설정된 거리만큼 이격되어 제공될 것이다. 예를 들면, 복수의 절연 물질들(112)은 각각 제 2 방향을 따라 미리 설정된 거리만큼 이격되어 제공될 것이다. 예시적으로, 절연 물질들(112)은 실리콘 산화물(Silicon Oxide)과 같은 절연 물질을 포함할 것이다.
제 1 및 제 2 도핑 영역들(311, 312) 사이에 대응하는 기판(111) 상의 영역에서, 제 1 방향을 따라 순차적으로 배치되며 제 2 방향을 따라 절연 물질들(112)을 관통하는 복수의 필라들(113)이 제공된다. 예시적으로, 복수의 필라들(113) 각각은 절연 물질들(112)을 관통하여 기판(111)과 연결될 것이다.
예시적으로, 각 필라(113)는 복수의 물질들로 구성될 것이다. 예를 들면, 각 필라(113)의 표면층(114)은 제 1 타입으로 도핑된 실리콘 물질을 포함할 것이다. 예를 들면, 각 필라(113)의 표면층(114)은 기판(111)과 동일한 타입으로 도핑된 실리콘 물질을 포함할 것이다. 이하에서, 각 필라(113)의 표면층(114)은 p-타입 실리콘을 포함하는 것으로 가정한다. 그러나, 각 필라(113)의 표면층(114)은 p-타입 실리콘을 포함하는 것으로 한정되지 않는다.
각 필라(113)의 내부층(115)은 절연 물질로 구성된다. 예를 들면, 각 필라(113)의 내부층(115)은 실리콘 산화물(Silicon Oxide)과 같은 절연 물질로 충진될 것이다.
제 1 및 제 2 도핑 영역들(311, 312) 사이의 영역에서, 절연 물질들(112), 필라들(113), 그리고 기판(111)의 노출된 표면을 따라 절연막(116)이 제공된다. 예시적으로, 절연막(116)의 두께는 절연 물질들(112) 사이의 거리의 1/2 보다 작을 것이다. 즉, 절연 물질들(112) 중 제 1 절연 물질의 하부 면에 제공된 절연막(116), 그리고 제 1 절연 물질 하부의 제 2 절연 물질의 상부 면에 제공된 절연막(116) 사이에, 절연 물질들(112) 및 절연막(116) 이외의 물질이 배치될 수 있는 영역이 제공될 것이다.
제 1 및 제 2 도핑 영역들(311, 312) 사이의 영역에서, 절연막(116)의 노출된 표면 상에 도전 물질들(211~291)이 제공된다. 예를 들면, 기판(111)에 인접한 절연 물질(112) 및 기판(111) 사이에 제 1 방향을 따라 신장되는 도전 물질(211)이 제공된다. 더 상세하게는, 기판(111)에 인접한 절연 물질(112)의 하부 면의 절연막(116) 및 기판(111) 사이에, 제 1 방향으로 신장되는 도전 물질(211)이 제공된다.
절연 물질들(112) 중 특정 절연 물질 상부 면의 절연막(116) 및 특정 절연 물질 상부에 배치된 절연 물질의 하부 면의 절연막(116) 사이에, 제 1 방향을 따라 신장되는 도전 물질이 제공된다. 예시적으로, 절연 물질들(112) 사이에, 제 1 방향으로 신장되는 복수의 도전 물질들(221~281)이 제공된다. 또한, 절연 물질들(112) 상의 영역에 제 1 방향을 따라 신장되는 도전 물질(291)이 제공된다. 예시적으로, 제 1 방향으로 신장된 도전 물질들(211~291)은 금속 물질일 것이다. 예시적으로, 제 1 방향으로 신장된 도전 물질들(211~291)은 폴리 실리콘 등과 같은 도전 물질들일 것이다.
제 2 및 제 3 도핑 영역들(312, 313) 사이의 영역에서, 제 1 및 제 2 도핑 영역들(311, 312) 상의 구조물과 동일한 구조물이 제공될 것이다. 예시적으로, 제 2 및 제 3 도핑 영역들(312, 313) 사이의 영역에서, 제 1 방향으로 신장되는 복수의 절연 물질들(112), 제 1 방향을 따라 순차적으로 배치되며 제 3 방향을 따라 복수의 절연 물질들(112)을 관통하는 복수의 필라들(113), 복수의 절연 물질들(112) 및 복수의 필라들(113)의 노출된 표면에 제공되는 절연막(116), 그리고 제 1 방향을 따라 신장되는 복수의 도전 물질들(212~292)이 제공된다.
제 3 및 제 4 도핑 영역들(313, 314) 사이의 영역에서, 제 1 및 제 2 도핑 영역들(311, 312) 상의 구조물과 동일한 구조물이 제공될 것이다. 예시적으로, 제 3 및 제 4 도핑 영역들(312, 313) 사이의 영역에서, 제 1 방향으로 신장되는 복수의 절연 물질들(112), 제 1 방향을 따라 순차적으로 배치되며 제 3 방향을 따라 복수의 절연 물질들(112)을 관통하는 복수의 필라들(113), 복수의 절연 물질들(112) 및 복수의 필라들(113)의 노출된 표면에 제공되는 절연막(116), 그리고 제 1 방향을 따라 신장되는 복수의 도전 물질들(213~293)이 제공된다.
복수의 필라들(113) 상에 드레인들(320)이 각각 제공된다. 예시적으로, 드레인들(320)은 제 2 타입으로 도핑된 실리콘 물질들일 것이다. 예를 들면, 드레인들(320)은 n 타입으로 도핑된 실리콘 물질들일 것이다. 이하에서, 드레인들(320)는 n-타입 실리콘을 포함하는 것으로 가정한다. 그러나, 드레인들(320)은 n-타입 실리콘을 포함하는 것으로 한정되지 않는다. 예시적으로, 각 드레인(320)의 폭은 대응하는 필라(113)의 폭 보다 클 수 있다. 예를 들면, 각 드레인(320)은 대응하는 필라(113)의 상부면에 패드 형태로 제공될 수 있다.
드레인들(320) 상에, 제 3 방향으로 신장된 도전 물질들(331~333)이 제공된다. 도전 물질들(331~333)은 제 1 방향을 따라 순차적으로 배치된다. 도전 물질들(331~333) 각각은 대응하는 영역의 드레인들(320)과 연결된다. 예시적으로, 드레인들(320) 및 제 3 방향으로 신장된 도전 물질(333)은 각각 콘택 플러그들(contact plug)을 통해 연결될 수 있다. 예시적으로, 제 3 방향으로 신장된 도전 물질들(331~333)은 금속 물질들일 것이다. 예시적으로, 제 3 방향으로 신장된 도전 물질들(331~333)은 폴리 실리콘 등과 같은 도전 물질들일 것이다.
도 11 및 도 12 에서, 각 필라(113)는 절연막(116)의 인접한 영역 및 제 1 방향을 따라 신장되는 복수의 도체 라인들(211~291, 212~292, 213~293) 중 인접한 영역과 함께 스트링을 형성한다. 예를 들면, 각 필라(113)는 절연막(116)의 인접한 영역 및 제 1 방향을 따라 신장되는 복수의 도체 라인들(211~291, 212~292, 213~293) 중 인접한 영역과 함께 낸드 스트링(NS)을 형성한다. 낸드 스트링(NS)은 복수의 트랜지스터 구조들(TS)을 포함한다. 트랜지스터 구조(TS)는 도 16를 참조하여 더 상세하게 설명된다.
도 11 및 도 12에서, 제 1 방향으로 신장되는 도체 라인들(211~291, 212~292, 213~293)은 9개의 층에 제공되는 것으로 설명되었다. 그러나, 제 1 방향으로 신장되는 도체 라인들(211~291, 212~292, 213~293)은 9개의 층에 제공되는 것으로 한정되지 않는다. 예를 들면, 제 1 방향으로 신장되는 도체 라인들은 8개의 층, 16개의 층, 또는 복수의 층에 제공될 수 있다. 즉, 하나의 낸드 스트링에서, 트랜지스터는 8개, 16개, 또는 복수 개일 수 있다.
도 11 및 도 12에서, 하나의 비트 라인(BL)에 3 개의 낸드 스트링들(NS)이 연결되는 것으로 설명되었다. 그러나, 하나의 비트 라인(BL)에 3개의 낸드 스트링들(NS)이 연결되는 것으로 한정되지 않는다. 예시적으로, 메모리 블록(BLK1)에서, 하나의 비트 라인(BL)에 m 개의 낸드 스트링들(NS)이 연결될 수 있다. 이때, 하나의 비트 라인(BL)에 연결되는 낸드 스트링들(NS)의 수만큼, 제 1 방향으로 신장되는 도전 물질들(211~291, 212~292, 213~293)의 수 및 공통 소스 라인들(311~314)의 수 또한 조절될 것이다.
도 11 및 도 12에서, 제 1 방향으로 신장된 하나의 도전 물질에 3 개의 낸드 스트링들(NS)이 연결되는 것으로 설명되었다. 그러나, 제 1 방향으로 신장된 하나의 도전 물질에 3 개의 낸드 스트링들(NS)이 연결되는 것으로 한정되지 않는다. 예를 들면, 제 1 방향으로 신장된 하나의 도전 물질에, n 개의 낸드 스트링들(NS)이 연결될 수 있다. 이때, 제 1 방향으로 신장된 하나의 도전 물질에 연결되는 낸드 스트링들(NS)의 수만큼, 비트 라인들(331~333)의 수 또한 조절될 것이다.
도 13은 도 11 및 도 12를 참조하여 설명된 메모리 블록(BLK1)의 등가 회로이다. 도 11 내지 도 13을 참조하면, 제 1 비트 라인(BL1) 및 공통 소스 라인(CSL) 사이에 낸드 스트링들(NS11~NS31)이 제공된다. 제 1 비트 라인(BL1)은 제 3 방향으로 신장된 도전 물질(331)에 대응할 것이다. 제 2 비트 라인(BL2) 및 공통 소스 라인(CSL) 사이에 낸드 스트링들(NS12, NS22, NS32)이 제공된다. 제 2 비트 라인(BL2)은 제 3 방향으로 신장된 도전 물질(332)에 대응할 것이다. 제 3 비트 라인(BL3) 및 공통 소스 라인(CSL) 사이에, 낸드 스트링들(NS13, NS23. NS33)이 제공된다. 제 3 비트 라인(BL3)은 제 3 방향으로 신장된 도전 물질(333)에 대응할 것이다.
각 낸드 스트링(NS)의 스트링 선택 트랜지스터(SST)는 대응하는 비트 라인(BL)과 연결된다. 각 낸드 스트링(NS)의 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL)과 연결된다. 각 낸드 스트링(NS)의 스트링 선택 트랜지스터(SST) 및 접지 선택 트랜지스터(GST) 사이에 메모리 셀들(MC)이 제공된다. 이하에서, 행 및 열 단위로 낸드 스트링들(NS)을 정의한다. 하나의 비트 라인에 공통으로 연결된 낸드 스트링들(NS)은 하나의 열을 형성한다. 예를 들면, 제 1 비트 라인(BL1)에 연결된 낸드 스트링들(NS11~NS31)은 제 1 열에 대응할 것이다. 제 2 비트 라인(BL2)에 연결된 낸드 스트링들(NS12~NS32)은 제 2 열에 대응할 것이다. 제 3 비트 라인(BL3)에 연결된 낸드 스트링들(NS13~NS33)은 제 3 열에 대응할 것이다. 하나의 스트링 선택 라인(SSL)에 연결되는 낸드 스트링들(NS)은 하나의 행을 형성한다. 예를 들면, 제 1 스트링 선택 라인(SSL1)에 연결된 낸드 스트링들(NS11~NS13)은 제 1 행을 형성한다. 제 2 스트링 선택 라인(SSL2)에 연결된 낸드 스트링들(NS21~NS23)은 제 2 행을 형성한다. 제 3 스트링 선택 라인(SSL3)에 연결된 낸드 스트링들(NS31~NS33)은 제 3 행을 형성한다.
각 낸드 스트링(NS)에서, 높이가 정의된다. 예시적으로, 각 낸드 스트링(NS)에서, 접지 선택 트랜지스터(GST)에 인접한 메모리 셀(MC1)의 높이는 1이다. 각 낸드 스트링(NS)에서, 스트링 선택 트랜지스터(SST)에 인접할수록 메모리 셀의 높이는 증가한다. 각 낸드 스트링(NS)에서, 스트링 선택 트랜지스터(SST)에 인접한 메모리 셀(MC7)의 높이는 7이다.
동일한 행의 낸드 스트링들(NS)의 스트링 선택 트랜지스터들(SST)은 스트링 선택 라인(SSL)을 공유한다. 상이한 행의 낸드 스트링들(NS)의 스트링 선택 트랜지스터들(SST)은 상이한 스트링 선택 라인들(SSL1, SSL2, SSL3)에 각각 연결된다.
동일한 행의 낸드 스트링들(NS)의 동일한 높이의 메모리 셀들은 워드 라인(WL)을 공유한다. 동일한 높이에서, 상이한 행의 낸드 스트링들(NS)의 메모리 셀들(MC)에 연결된 워드 라인들(WL)은 공통으로 연결된다. 동일한 행의 낸드 스트링들(NS)의 접지 선택 트랜지스터들(GST)은 접지 선택 라인(GSL)을 공유한다. 상이한 행의 낸드 스트링들(NS)의 접지 선택 트랜지스터들(GST)은 접지 선택 라인(GSL)을 공유한다. 즉, 낸드 스트링들(NS11~NS13, NS21~NS23, NS31~NS33)은 접지 선택 라인(GSL)에 공통으로 연결된다.
도 13에 도시된 바와 같이, 동일 깊이의 워드 라인들(WL)은 공통으로 연결된다. 따라서, 특정 워드 라인(WL)이 선택될 때, 특정 워드 라인(WL)에 연결된 모든 낸드 스트링들(NS)이 선택될 것이다. 상이한 행의 낸드 스트링들(NS)은 상이한 스트링 선택 라인(SSL)에 연결된다. 따라서, 스트링 선택 라인들(SSL1~SSL3)을 선택함으로써, 동일 워드 라인(WL)에 연결된 낸드 스트링들(NS) 중 비선택 행의 낸드 스트링들(NS)이 비트 라인들(BL1~BL3)로부터 분리될 수 있다. 즉, 스트링 선택 라인들(SSL1~SSL3)을 선택함으로써, 낸드 스트링들(NS)의 행이 선택될 수 있다. 그리고, 비트 라인들(BL1~BL3)을 선택함으로써, 선택 행의 낸드 스트링들(NS)이 열 단위로 선택될 수 있다.
도 14는 본 발명의 실시 예에 따른 메모리 컨트롤러(15000) 및 비휘발성 메모리 장치(16000)를 포함하는 전자 장치(10000)의 블록도를 나타낸다. 도 14를 참조하면, 이동 전화기(cellular phone), 스마트 폰(smart phone), 또는 태블릿(tablet) PC와 같은 전자 장치(10000)는 플래시 메모리(16000)와, 플래시 메모리(16000)의 동작을 제어할 수 있는 메모리 컨트롤러(15000)를 포함할 수 있다.
플래시 메모리(16000)는 도 1에 도시된 비휘발성 메모리 장치(1100)를 의미할 수 있다. 메모리 컨트롤러(15000)는 전자 장치의 전반적인 동작을 제어하는 프로세서(11000)에 의하여 제어된다. 플래시 메모리(16000)에 저장된 데이터는 프로세서(11000)의 제어에 따라 동작하는 메모리 컨트롤러(15000)의 제어에 따라 디스플레이(13000)를 통하여 디스플레이될 수 있다.
무선 송수신기(12000)는 안테나(ANT)를 통하여 무선 신호를 주거나 받을 수 있다. 예컨대, 무선 송수신기(12000)는 안테나(ANT)를 통하여 수신된 무선 신호를 프로세서(11000)가 처리할 수 있는 신호로 변환할 수 있다. 따라서 프로세서(11000)는 무선 송수신기(12000)로부터 출력된 신호를 처리하고, 처리된 신호를 메모리 컨트롤러(15000)를 통하여 플래시 메모리(16000)에 저장하거나 또는 디스플레이(13000)를 통하여 디스플레이할 수 있다.
무선 송수신기(12000)는 프로세서(11000)로부터 출력된 신호를 무선 신호로 변환하고, 변환된 무선 신호를 안테나(ANT)를 통하여 외부로 출력할 수 있다. 입력 장치(14000)는 프로세서(11000)의 동작을 제어하기 위한 제어 신호 또는 프로세서(11000)에 의하여 처리될 데이터를 입력할 수 있는 장치로서, 터치 패드 (touch pad)와 컴퓨터 마우스(computer mouse)와 같은 포인팅 장치(pointing device), 키패드(keypad), 또는 키보드로 구현될 수 있다.
프로세서(11000)는 플래시 메모리(16000)로부터 출력된 데이터, 무선 송수신기(12000)로부터 출력된 무선 신호, 또는 입력 장치(14000)로부터 출력된 데이터가 디스플레이될 수 있도록 디스플레이(13000)를 제어할 수 있다.
도 15는 본 발명의 다른 실시 예에 따른 메모리 컨트롤러(24000)및 플래시 메모리(25000)를 포함하는 전자 장치(20000)의 블록도를 나타낸다.
도 15를 참조하면, PC(personal computer), 태블릿 컴퓨터(tablet computer), 넷-북(net-book), e-리더(e-reader), PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 또는 MP4 플레이어와 같은 데이터 처리 장치로 구현될 수 있는 전자 장치(20000)는 플래시 메모리(25000)와 이것의 동작을 제어할 수 있는 메모리 컨트롤러(24000)를 포함한다.
전자 장치(20000)는 전자 장치(20000)의 전반적인 동작을 제어하기 위한 프로세서(21000)를 포함할 수 있다. 메모리 컨트롤러(24000)는 프로세서(21000)에 의하여 제어된다. 프로세서(21000)는 입력 장치(22000)에 의하여 발생한 입력 신호에 따라 플래시 메모리(25000)에 저장된 데이터를 디스플레이를 통하여 디스플레이할 수 있다. 예컨대, 입력 장치(22000)는 터치 패드 또는 컴퓨터 마우스와 같은 포인팅 장치, 키패드, 또는 키보드로 구현될 수 있다.
도 16은 본 발명의 또 다른 실시 예에 따른 비휘발성 메모리 장치(34000)를 포함하는 전자 장치(30000)의 블록도를 나타낸다. 도 16을 참조하면, 전자 장치(30000)는 카드 인터페이스(31000), 메모리 컨트롤러(32000), 및 비휘발성 메모리 장치(34000), 예컨대 플래시 메모리 장치를 포함한다.
전자 장치(30000)는 카드 인터페이스(31000)를 통하여 호스트(HOST)와 데이터를 주거나 받을 수 있다. 실시 예에 따라, 카드 인터페이스(31000)는 SD(secure digital) 카드 인터페이스 또는 MMC(multi-media card) 인터페이스일 수 있으나 이에 한정되는 것은 아니다. 카드 인터페이스(31000)는 전자 장치(30000)와 통신할 수 있는 호스트(HOST)의 통신 프로토콜에 따라 호스트(HOST)와 메모리 컨트롤러(32000) 사이에서 데이터 교환을 인터페이스할 수 있다.
메모리 컨트롤러(32000)는 전자 장치(30000)의 전반적인 동작을 제어하며, 카드 인터페이스(31000)와 비휘발성 메모리 장치(34000) 사이에서 데이터의 교환을 제어할 수 있다. 또한 메모리 컨트롤러(32000)의 버퍼 메모리(325)는 카드 인터페이스(31000)와 비휘발성 메모리 장치(34000) 사이에서 주고받는 데이터를 버퍼링할 수 있다.
메모리 컨트롤러(32000)는 데이터 버스(DATA) 및 어드레스 버스(ADDRESS)를 통하여 카드 인터페이스(31000)와 비휘발성 메모리 장치(34000)와 접속된다. 실시 예에 따라 메모리 컨트롤러(32000)는 카드 인터페이스(31000)로부터 리드 또는 라이트하고자 하는 데이터의 어드레스를 어드레스 버스(ADDRESS)를 통하여 수신하고 이를 비휘발성 메모리 장치(34000)로 전송한다.
또한, 메모리 컨트롤러(32000)는 카드 인터페이스(31000) 또는 비휘발성 메모리 장치(34000) 각각에 접속된 데이터 버스(DATA)를 통하여 리드 또는 라이트하고자 하는 데이터를 수신하거나 전송한다.
도 16의 전자 장치(30000)가 PC, 태블릿 PC, 디지털 카메라, 디지털 오디오 플레이어, 이동 전화기, 콘솔 비디오 게임 하드웨어, 또는 디지털 셋-탑 박스와 같은 호스트(HOST)에 접속될 때, 호스트(HOST)는 카드 인터페이스(31000)와 메모리 컨트롤러(32000)를 통하여 비휘발성 메모리 장치(34000)에 저장된 데이터를 주거나 받을 수 있다.
도 17은 본 발명의 또 다른 실시 예에 따른 메모리 컨트롤러 및 플래시 메모리를 포함하는 전자 장치의 블록도를 나타낸다.
도 17를 참조하면, 전자 장치(40000)는 플래시 메모리(45000), 플래시 메모리(45000)의 데이터 처리 동작을 제어하기 위한 메모리 컨트롤러(44000), 및 전자 장치(40000)의 전반적인 동작을 제어할 수 있는 이미지 센서(42000)를 포함한다. 전자 장치(40000)의 이미지 센서(42000)는 광학 신호를 디지털 신호로 변환하고, 변환된 디지털 신호는 이미지 센서(41000)의 제어 하에 플래시 메모리(45000)에 저장되거나 또는 디스플레이(43000)를 통하여 디스플레이된다. 또한, 플래시 메모리(45000)에 저장된 디지털 신호는 이미지 센서(41000)의 제어 하에 디스플레이(43000)를 통하여 디스플레이된다.
도 18은 본 발명의 또 다른 실시 예에 따른 메모리 컨트롤러(61000) 및 플래시 메모리(62000A, 62000B, 62000C)를 포함하는 전자 장치(60000)의 블록도를 나타낸다. 도 18을 참조하면, 전자 장치(60000)는 SSD(solid state drive)와 같은 데이터 저장 장치로 구현될 수 있다.
전자 장치(60000)는 다수개의 플래시 메모리(62000A, 62000B, 62000C)와, 다수개의 플래시 메모리(62000A, 62000B, 62000C) 각각의 데이터 처리 동작을 제어할 수 있는 메모리 컨트롤러(61000)를 포함할 수 있다. 전자 장치(60000)는 메모리 시스템 또는 메모리 모듈로 구현될 수 있다. 실시 예에 따라 메모리 컨트롤러(61000)는 전자 장치(60000)의 내부 또는 외부에 구현될 수 있다.
도 19는 도 18에 도시된 전자 장치를 포함하는 데이터 처리 시스템의 블록도를 나타낸다. 도 18과 도 19을 참조하면, RAID(redundant array of independent disks) 시스템으로 구현될 수 있는 데이터 저장 장치(70000)는 RAID 컨트롤러(71000)와, 다수개의 메모리 시스템들(72000A~72000N; N는 자연수)을 포함할 수 있다.
다수개의 메모리 시스템들(72000A~72000N) 각각은 도 18에 도시된 전자 장치(60000)일 수 있다. 다수개의 메모리 시스템들(72000A~72000N)은 RAID 어레이를 구성할 수 있다. 데이터 저장 장치(70000)는 PC(personal computer) 또는 SSD로 구현될 수 있다.
프로그램 동작 동안, RAID 컨트롤러(71000)는 호스트로부터 출력된 프로그램 데이터를 다수개의 RAID 레벨들 중에서 호스트로부터 출력된 RAID 레벨 정보에 기초하여 선택된 어느 하나의 RAID 레벨에 따라 다수개의 메모리 시스템들(72000A~72000N) 중에서 어느 하나의 메모리 시스템으로 출력할 수 있다.
또한, 리드 동작 동안, RAID 컨트롤러(71000)는 다수개의 RAID 레벨들 중에서 호스트로부터 출력된 RAID 레벨 정보에 기초하여 선택된 어느 하나의 RAID 레벨에 따라서 다수개의 메모리 시스템(72000A~72000N)에서 어느 하나의 메모리 시스템으로부터 리드된 데이터를 호스트로 전송할 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
1000: 비휘발성 메모리 시스템
1100: 비휘발성 메모리 장치
1200: 메모리 컨트롤러
1270: 웨어 레벨링 제어 유닛
1271: 웨어 레벨링 인덱스 형성기
1260: ECC 엔진

Claims (10)

  1. 비휘발성 메모리 장치를 제어하는 메모리 컨트롤러 구동 방법에 있어서;
    상기 비휘발성 메모리 장치로부터 리드 데이터를 제공받고, 상기 리드 데이터 중에 에러 비트 개수를 카운트하고;
    상기 에러 비트 개수를 사용하여 러닝 에버리지(RA)를 계산하고; 그리고,
    상기 러닝 에버리지 값을 웨어 레벨링 인덱스로 하여, 상기 비휘발성 메모리 장치에 대한 웨어 레벨링(wear leveling)을 수행하는 메모리 컨트롤러 구동 방법.
  2. 제 1 항에 있어서,
    상기 러닝 에버리지 값은 노이즈 파라미터에 의해서 결정되는 메모리 컨트롤러 구동 방법.
  3. 제 1 항에 있어서,
    상기 러닝 에버리지 값이 기준 값보다 작은 경우, 프로그램 또는 이레이즈 횟수를 늘리는 방향으로 상기 비휘발성 메모리 장치에 대한 웨어 레벨링 동작을 수행하는 메모리 컨트롤러 구동 방법.
  4. 제 1 항에 있어서,
    상기 러닝 에버리지 값이 기준 값보다 큰 경우, 프로그램 또는 이레이즈 횟수를 줄이는 방향으로 상기 비휘발성 메모리 장치에 대한 웨어 레벨링 동작을 수행하는 메모리 컨트롤러 구동 방법.
  5. 제 1 항에 있어서,
    상기 메모리 컨트롤러는 ECC 디코더를 포함하고,
    상기 에러 비트 개수 카운트는 상기 ECC 디코더에서 계산하는 메모리 컨트롤러 구동 방법.
  6. 제 5 항에 있어서,
    상기 메모리 컨트롤러는 웨어 레벨링 인덱스 형성기를 더 포함하고,
    상기 ECC 디코더는 상기 카운트된 에러 비트 개수를 상기 웨어 레벨링 인덱스 형성기로 제공하고, 상기 웨어 레벨링 인덱스 형성기는 상기 에러 비트 개수를 사용하여 러닝 에버리지 값을 계산하는 메모리 컨트롤러 구동 방법.
  7. 데이터를 저장하는 복수의 메모리 블록을 포함하는 메모리 셀 어레이;
    상기 메모리 셀 어레이와 비트 라인을 통해 연결되고, 상기 메모리 셀 어레이로부터 리드된 데이터를 센싱하고 저장하는 센스 래치(latch)를 포함하는 페이지 버퍼 회로; 및
    상기 페이지 버퍼 회로를 제어하는 제어 로직을 포함하고,
    상기 제어 로직은 상기 센스 래치에 저장된 리드 데이터와 오리지널 데이터를 비교한 결과 값을 참조하여, 상기 리드된 데이터의 에러 비트 개수를 카운트하고, 상기 에러 비트 개수를 사용하여 러닝 에버리지(RA) 값을 계산하여, 상기 복수의 메모리 블록의 웨어 레벨링 인덱스를 형성하는 웨어 레벨링 인덱스 형성기를 포함하는 비휘발성 메모리 장치.
  8. 제 7 항에 있어서,
    상기 웨어 레벨링 인덱스 형성기는 노이즈 파라미터를 사용하여 상기 러닝 에버리지 값을 계산하는 비휘발성 메모리 장치.
  9. 제 7항에 있어서,
    상기 러닝 에버리지 값이 기준 값보다 작은 경우, 상기 러닝 에버리지 값에 대응되는 메모리 블록의 프로그램 또는 이레이즈 횟수를 줄이는 비휘발성 메모리 장치.
  10. 제 7 항에 있어서,
    상기 러닝 에버리지 값이 기준 값보다 큰 경우, 상기 러닝 에버리지 값에 대응되는 메모리 블록의 프로그램 또는 이레이즈 횟수를 늘리는 비휘발성 메모리 장치.
KR1020130137833A 2013-11-13 2013-11-13 메모리 컨트롤러의 구동 방법 및 메모리 컨트롤러에 의해서 제어되는 비휘발성 메모리 장치 KR102085127B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130137833A KR102085127B1 (ko) 2013-11-13 2013-11-13 메모리 컨트롤러의 구동 방법 및 메모리 컨트롤러에 의해서 제어되는 비휘발성 메모리 장치
US14/523,978 US9594673B2 (en) 2013-11-13 2014-10-27 Driving method of memory controller and nonvolatile memory device controlled by memory controller

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130137833A KR102085127B1 (ko) 2013-11-13 2013-11-13 메모리 컨트롤러의 구동 방법 및 메모리 컨트롤러에 의해서 제어되는 비휘발성 메모리 장치

Publications (2)

Publication Number Publication Date
KR20150055445A KR20150055445A (ko) 2015-05-21
KR102085127B1 true KR102085127B1 (ko) 2020-04-14

Family

ID=53044895

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130137833A KR102085127B1 (ko) 2013-11-13 2013-11-13 메모리 컨트롤러의 구동 방법 및 메모리 컨트롤러에 의해서 제어되는 비휘발성 메모리 장치

Country Status (2)

Country Link
US (1) US9594673B2 (ko)
KR (1) KR102085127B1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572489B (zh) * 2013-10-23 2019-12-24 深圳市腾讯计算机系统有限公司 磨损均衡方法及装置
KR20160108659A (ko) * 2015-03-04 2016-09-20 에스케이하이닉스 주식회사 반도체 메모리 장치의 동작 방법 및 반도체 메모리 장치를 포함하는 메모리 시스템
KR102381218B1 (ko) * 2015-09-25 2022-04-01 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10049757B2 (en) * 2016-08-11 2018-08-14 SK Hynix Inc. Techniques for dynamically determining performance of read reclaim operations
KR20180025357A (ko) * 2016-08-29 2018-03-09 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR20180076765A (ko) 2016-12-28 2018-07-06 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR102224564B1 (ko) * 2017-03-29 2021-03-09 에스케이하이닉스 주식회사 컨트롤러, 메모리 시스템 및 그것의 동작 방법
KR102469539B1 (ko) 2017-12-22 2022-11-22 삼성전자주식회사 비휘발성 메모리 장치, 비휘발성 메모리 장치의 동작 방법 및 저장 장치
US11294580B2 (en) * 2017-12-22 2022-04-05 Samsung Electronics Co., Ltd. Nonvolatile memory device
KR102610821B1 (ko) * 2018-11-15 2023-12-06 삼성전자주식회사 내구성 저하를 판단하는 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 메모리 컨트롤러의 동작방법
KR20210006664A (ko) * 2019-07-09 2021-01-19 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
KR20220041574A (ko) * 2020-09-25 2022-04-01 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그 동작 방법

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4199519B2 (ja) 2002-11-05 2008-12-17 パナソニック株式会社 メモリ管理装置及びメモリ管理方法
US7653778B2 (en) 2006-05-08 2010-01-26 Siliconsystems, Inc. Systems and methods for measuring the useful life of solid-state storage devices
US7739576B2 (en) * 2006-08-31 2010-06-15 Micron Technology, Inc. Variable strength ECC
US7743203B2 (en) * 2007-05-11 2010-06-22 Spansion Llc Managing flash memory based upon usage history
JP4858344B2 (ja) 2007-07-25 2012-01-18 ソニー株式会社 毛を用いた生体リズム情報取得方法
KR101413736B1 (ko) * 2007-09-13 2014-07-02 삼성전자주식회사 향상된 신뢰성을 갖는 메모리 시스템 및 그것의웨어-레벨링 기법
US7971023B2 (en) * 2008-04-30 2011-06-28 Sandisk Corporation Guaranteed memory card performance to end-of-life
KR101548175B1 (ko) 2008-11-05 2015-08-28 삼성전자주식회사 싱글 레벨 메모리 셀 블락과 멀티 레벨 메모리 셀 블락을 포함하는 불휘발성 메모리 장치의 마모 레벨링 방법
KR20100062191A (ko) 2008-12-01 2010-06-10 엘지전자 주식회사 플래시 메모리장치, 및 그 제어방법
KR101015655B1 (ko) * 2009-05-29 2011-02-22 주식회사 하이닉스반도체 불휘발성 메모리 장치의 구동 방법
US8321727B2 (en) * 2009-06-29 2012-11-27 Sandisk Technologies Inc. System and method responsive to a rate of change of a performance parameter of a memory
US8370712B2 (en) 2009-07-23 2013-02-05 International Business Machines Corporation Memory management in a non-volatile solid state memory device
US8453021B2 (en) 2009-07-29 2013-05-28 Stec, Inc. Wear leveling in solid-state device
US8374261B2 (en) * 2009-07-30 2013-02-12 Texas Instruments Incorporated Method and apparatus for Doppler estimation in orthogonal frequency-division multiplexing (OFDM)
KR101080191B1 (ko) 2010-03-18 2011-11-07 스티븐 상근 오 웨어레벨링 방법
US8621141B2 (en) 2010-04-01 2013-12-31 Intel Corporations Method and system for wear leveling in a solid state drive
US20110252289A1 (en) * 2010-04-08 2011-10-13 Seagate Technology Llc Adjusting storage device parameters based on reliability sensing
KR20120001405A (ko) * 2010-06-29 2012-01-04 삼성전자주식회사 메모리 시스템 및 그것의 웨어 레벨링 방법
KR101736337B1 (ko) * 2011-02-28 2017-05-30 삼성전자주식회사 비휘발성 메모리 장치, 상기 메모리 장치를 제어하는 컨트롤러, 및 상기 컨트롤러 동작 방법
JP2012212312A (ja) 2011-03-31 2012-11-01 Pioneer Electronic Corp メモリ制御装置及びメモリ制御方法
KR101835605B1 (ko) * 2011-11-24 2018-03-08 삼성전자 주식회사 플래시 메모리 시스템 및 플래시 메모리 시스템의 리드 방법
KR20130060791A (ko) * 2011-11-30 2013-06-10 삼성전자주식회사 마모도 제어 로직을 포함하는 메모리 시스템, 데이터 저장 장치, 메모리 카드, 그리고 솔리드 스테이트 드라이브
KR101989850B1 (ko) * 2012-04-03 2019-06-18 삼성전자주식회사 불휘발성 메모리 장치, 메모리 시스템 및 그것의 프로그램 방법
US20130346812A1 (en) * 2012-06-22 2013-12-26 Micron Technology, Inc. Wear leveling memory using error rate
US8966343B2 (en) * 2012-08-21 2015-02-24 Western Digital Technologies, Inc. Solid-state drive retention monitor using reference blocks
US9042181B2 (en) * 2013-03-15 2015-05-26 SanDisk Technologies, Inc. Periodic erase operation for a non-volatile medium
US9298534B2 (en) * 2013-09-05 2016-03-29 Kabushiki Kaisha Toshiba Memory system and constructing method of logical block

Also Published As

Publication number Publication date
KR20150055445A (ko) 2015-05-21
US9594673B2 (en) 2017-03-14
US20150135025A1 (en) 2015-05-14

Similar Documents

Publication Publication Date Title
KR102085127B1 (ko) 메모리 컨트롤러의 구동 방법 및 메모리 컨트롤러에 의해서 제어되는 비휘발성 메모리 장치
KR102149770B1 (ko) 메모리 컨트롤러 및 그것의 동작 방법
CN105719703B (zh) 存储系统及其操作方法
KR102110767B1 (ko) 메모리 컨트롤러 구동방법 및 메모리 컨트롤러
KR102123946B1 (ko) 멀티 레벨 셀 메모리 장치 및 그것의 동작방법
US9117536B2 (en) Method for operating non-volatile memory device and memory controller
CN105989885B (zh) 存储系统及其操作方法
KR102125371B1 (ko) 비휘발성 메모리 장치 및 그것의 동작방법
KR102137934B1 (ko) 메모리 컨트롤러 구동방법 및 메모리 컨트롤러를 포함하는 메모리 시스템
CN105739914B (zh) 数据处理系统及其操作方法
US10521352B2 (en) Memory system and operating method of memory system
CN106910521B (zh) 存储器系统及其操作方法
KR20160102740A (ko) 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
CN106920570B (zh) 存储器系统及其操作方法
US10013209B2 (en) Memory system and operating method of memory system
KR20160073834A (ko) 메모리 시스템 및 메모리 시스템 동작 방법
US10558368B2 (en) Memory system and operating method of the memory system
CN106935264B (zh) 存储器系统及其操作方法
KR20150111692A (ko) 메모리 컨트롤러 구동방법 및 메모리 컨트롤러를 포함하는 메모리 시스템
KR20170076878A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
CN106775441B (zh) 存储器系统
KR20160057186A (ko) 반도체 메모리 시스템 및 그것의 동작 방법
CN106406749B (zh) 存储系统及其操作方法
KR20140073685A (ko) 비휘발성 메모리 장치 및 그것의 동작 방법
US10073628B2 (en) Memory system and operating method of memory system

Legal Events

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