KR102067611B1 - 메모리 컨트롤러의 동작 방법과 상기 메모리 컨트롤러를 포함하는 장치들 - Google Patents

메모리 컨트롤러의 동작 방법과 상기 메모리 컨트롤러를 포함하는 장치들 Download PDF

Info

Publication number
KR102067611B1
KR102067611B1 KR1020130028021A KR20130028021A KR102067611B1 KR 102067611 B1 KR102067611 B1 KR 102067611B1 KR 1020130028021 A KR1020130028021 A KR 1020130028021A KR 20130028021 A KR20130028021 A KR 20130028021A KR 102067611 B1 KR102067611 B1 KR 102067611B1
Authority
KR
South Korea
Prior art keywords
sequence
program state
program
data
bits
Prior art date
Application number
KR1020130028021A
Other languages
English (en)
Other versions
KR20140113839A (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 KR1020130028021A priority Critical patent/KR102067611B1/ko
Priority to US14/205,496 priority patent/US9460782B2/en
Publication of KR20140113839A publication Critical patent/KR20140113839A/ko
Application granted granted Critical
Publication of KR102067611B1 publication Critical patent/KR102067611B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/563Multilevel memory reading aspects
    • G11C2211/5632Multilevel reading using successive approximation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Error Detection And Correction (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)

Abstract

메모리 컨트롤러의 동작 방법이 개시된다. 상기 메모리 컨트롤러의 동작 방법은 제1데이터 시퀀스(data sequence)를 수신하여 m 비트(m은 2이상 자연수) 단위로 나뉠 수 있는 잉여 대표 시퀀스(coset representative sequence)를 생성하는 단계, 상기 잉여 대표 시퀀스의 m 비트들 각각과 이진 비트들(binary bits)에 대해 제1XOR 연산을 수행하고, 상기 제1XOR 연산 결과에 따라 모든 가능한 브랜치 메트릭스(all possible branch metrics)를 계산하는 단계, 상기 모든 가능한 브랜치 메트릭스에서 생존 경로 시퀀스(survivor path sequence)를 결정하는 단계, 및 상기 잉여 대표 시퀀스와 상기 생존 경로 시퀀스에 대해 제2XOR 연산을 수행하여 출력 시퀀스를 출력하는 단계를 포함한다.

Description

메모리 컨트롤러의 동작 방법과 상기 메모리 컨트롤러를 포함하는 장치들 {METHOD FOR OPERATING MEMORY CONTROLLER AND DEVICES HAVING THE SAME}
본 발명의 개념에 따른 실시 예는 메모리 컨트롤러에 관한 것으로, 특히 데이터 패턴을 제어하기 위한 메모리 컨트롤러의 동작 방법과 상기 메모리 컨트롤러를 포함하는 장치들에 관한 것이다.
NAND 플래시 메모리 장치와 같은 불휘발성 메모리 장치는 복수의 메모리 셀들을 포함한다. 기술이 발전함에 따라 상기 메모리 셀들 사이의 거리가 좁아진다. 이는 데이터 패턴에 따른 신뢰성을 열화(degrade)시킬 수 있다. 예컨대, 상기 복수의 메모리 셀들 중 어느 하나를 선택하여, 데이터를 상기 선택된 메모리 셀에 저장하는 프로그램 동작이 수행될 때, 상기 선택된 메모리 셀과 인접 메모리 셀들(adjacent memory cells) 사이에 커플링(coupling)이 발생할 수 있다. 상기 커플링은 전계 커플링(electric field coupling) 또는 F-폴리(poly) 커플링(coupling)이라고 호칭될 수 있다. 상기 커플링은 문턱 전압 분포들(threshold voltage distributions)의 확대(widening)를 초래한다. 이는 불휘발성 메모리 장치의 신뢰성에 영향을 미칠 수 있다. 따라서 불휘발성 메모리 장치의 신뢰성을 향상시키기 위한 방법이 요구된다.
본 발명이 이루고자 하는 기술적인 과제는 불휘발성 메모리 장치의 신뢰성 향상을 위해 원하는 데이터 패턴을 갖는 데이터 시퀀스(data sequence)를 제공할 수 있는 메모리 컨트롤러의 동작 방법과 상기 메모리 컨트롤러를 포함하는 장치들을 제공하는 것이다.
본 발명의 실시 예에 따른 메모리 컨트롤러의 동작 방법은 제1데이터 시퀀스를 수신하여 m 비트(m은 2이상 자연수) 단위로 나뉠 수 있는 잉여 대표 시퀀스를 생성하는 단계, 상기 잉여 대표 시퀀스의 m 비트들 각각과 이진 비트들에 대해 제1XOR 연산을 수행하고, 상기 제1XOR 연산 결과에 따라 모든 가능한 브랜치 메트릭스를 계산하는 단계, 상기 모든 가능한 브랜치 메트릭스에서 생존 경로 시퀀스(survivor path sequence)를 결정하는 단계, 및 상기 잉여 대표 시퀀스와 상기 생존 경로 시퀀스에 대해 제2XOR 연산을 수행하여 출력 시퀀스를 출력하는 단계를 포함한다.
상기 메모리 컨트롤러의 동작 방법은 상기 출력 시퀀스와 함께 제1워드 라인에 저장될 제2데이터 시퀀스와, 상기 출력 시퀀스를 프로그램 상태들과 매핑하는 단계, 및 상기 매핑된 프로그램 상태들에 따라 프로그램 동작을 수행하기 위해 불휘발성 메모리 장치를 제어하는 단계를 더 포함할 수 있다.
상기 모든 가능한 브랜치 메트릭스 각각은 파라미터들의 합에 의해 계산되며, 선택 비트에 따라 상기 파라미터들 각각이 정의된다.
상기 선택 비트가 '1'이고, 상기 제1XOR 연산 결과가 비트 '0'일 때, 상기 비트와 대응되는 상기 파라미터들 중 어느 하나의 값은 '0'이다.
상기 선택 비트가 '1'이고, 상기 제1XOR 연산 결과가 비트 '1'일 때, 상기 비트와 대응되는 상기 파라미터들 중 어느 하나의 값은 '1'이다.
실시 예에 따라 상기 모든 가능한 브랜치 메트릭스를 계산하는 단계는 상기 제1XOR 연산 결과와, 상기 출력 시퀀스와 함께 제1워드 라인에 저장될 제2데이터 시퀀스에 따라 결정되는 제1프로그램 상태 시퀀스, 및 제2워드 라인에 저장된 페이지 데이터 비트들에 따라 결정되는 제2프로그램 상태 시퀀스에 따라 상기 모든 가능한 브랜치 메트릭스를 계산하는 단계를 포함한다.
다른 실시 예에 따라 상기 모든 가능한 브랜치 메트릭스 각각은 파라미터들의 합에 의해 계산되며, 상기 제1프로그램 상태 시퀀스 중 k번째 비트 라인과 대응되는 프로그램 상태와, 상기 제2프로그램 상태 시퀀스 중 상기 k번째 비트 라인과 대응되는 프로그램 상태 각각이 소거(erase) 상태와 가장 높은 프로그램 상태(highest program state)일 때, 상기 k번째 비트 라인과 대응되는 파라미터의 값은 '1'이고, 그 외에 상기 파라미터의 값은 '0'이다.
또 다른 실시 예에 따라 상기 모든 가능한 브랜치 메트릭스 각각은 파라미터들의 합에 의해 계산되며, 상기 제1프로그램 상태 시퀀스와 상기 제2프로그램 상태 시퀀스에 따라 상기 파라미터들 각각은 서로 다른 값을 가진다.
또 다른 실시 예에 따라, 상기 모든 가능한 브랜치 메트릭스를 계산하는 단계는 상기 제1XOR 연산 결과, 및 상기 출력 시퀀스와 함께 제1워드 라인에 저장될 제2데이터 시퀀스에 따라 결정되는 프로그램 상태들에 따라 상기 모든 가능한 브랜치 메트릭스를 계산하는 단계를 포함할 수 있다.
상기 모든 가능한 브랜치 메트릭스 각각은, 파라미터들의 합에 의해 계산되며, 상기 프로그램 상태들 중 k번째 비트 라인과 대응되는 프로그램 상태와, 상기 프로그램 상태들 중 (k-1)번째 비트 라인과 대응되는 프로그램 상태에 따라 상기 k번째 비트 라인과 대응되는 파라미터의 값이 결정될 수 있다.
본 발명의 실시 예에 따른 메모리 컨트롤러는 제1데이터 시퀀스를 수신하여 m 비트(m은 2이상 자연수) 단위로 나뉠 수 있는 잉여 대표 시퀀스를 생성하는 인버스 신드롬 포머, 상기 잉여 대표 시퀀스의 m 비트들 각각과 이진 비트들에 대해 제1XOR 연산을 수행하고, 제1XOR 연산 결과에 따라 생존 경로 시퀀스를 결정하는 비터비 검출기, 및 상기 잉여 대표 시퀀스와 상기 생존 경로 시퀀스에 대해 제2XOR 연산을 수행하여 계산되는 출력 시퀀스와 함께 제1워드 라인에 저장될 제2데이터 시퀀스와, 상기 출력 시퀀스를 프로그램 상태들과 매핑(mapping)하는 비트-투-상태 맵퍼를 포함한다.
상기 비터비 검출기는 상기 제1XOR 연산 결과에 따라 모든 가능한 브랜치 메트릭스를 계산한다.
상기 모든 가능한 브랜치 메트릭스 각각은 파라미터들의 합에 의해 계산되며, 선택 비트에 따라 상기 파라미터들 각각이 정의된다.
실시 예에 따라, 상기 비터비 검출기는 상기 제1XOR 연산 결과와, 상기 출력 시퀀스와 함께 제1워드 라인에 저장될 제2데이터 시퀀스에 따라 결정되는 제1프로그램 상태 시퀀스, 및 제2워드 라인에 저장된 페이지 데이터 비트들에 따라 결정되는 제2프로그램 상태 시퀀스에 따라 상기 모든 가능한 브랜치 메트릭스를 계산한다.
본 발명의 실시 예에 따른 메모리 시스템은 상기 메모리 컨트롤러, 및 상기 메모리 컨트롤러로부터 출력되는 프로그램 상태들에 따라 프로그램 동작이 수행되는 불휘발성 메모리 장치를 포함한다.
상기 메모리 시스템은 스마트카드, SD카드, MMC, 또는 플래시 메모리 드라이브이다.
상기 메모리 시스템은 솔리드 스테이트 드라이브(solid state drive)이다.
본 발명의 실시 예에 따른 메모리 컨트롤러 및 이의 동작 방법은 원하는 데이터 패턴을 갖는 데이터 시퀀스를 탐색(search)하여, 상기 데이터 시퀀스를 불휘발성 메모리 장치에 제공함으로써 상기 불휘발성 메모리 장치의 신뢰성을 향상시킬 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 실시 예에 따른 메모리 컨트롤러를 포함하는 메모리 시스템의 블록도를 나타낸다.
도 2는 도 1에 도시된 인코더의 동작에 따른 문턱 전압 분포의 다이어그램의 일 실시 예를 나타낸다.
도 3은 도 1에 도시된 인코더의 동작에 따른 문턱 전압 분포의 다이어그램의 다른 실시 예를 나타낸다.
도 4는 도 1에 도시된 인코더의 블록도를 나타낸다.
도 5는 도 4에 도시된 인버스 신드롬 포머(inverse syndrome former)에서 출력되는 잉여 대표 시퀀스(coset representative sequence)의 다이어그램을 나타낸다.
도 6은 도 4에 도시된 인버스 신드롬 포머의 블록도의 일 실시 예를 나타낸다.
도 7 내지 도 9는 도 4에 도시된 인버스 신드롬 포머의 동작을 설명하기 위한 블록도의 일 실시 예들을 나타낸다.
도 10은 도 4에 도시된 비터비 검출기(viterbi detector)의 브랜치 메트릭스(branch metrics) 계산 동작을 설명하기 위한 트렐리스 다이어그램(trellis diagram)을 나타낸다.
도 11은 도 4에 도시된 비터비 검출기의 생존 경로 시퀀스(survivor path sequence) 결정 동작을 설명하기 위한 트렐리스 다이어그램을 나타낸다.
도 12는 도 1에 도시된 디코더의 블록도를 나타낸다.
도 13 내지 도 15는 도 12에 도시된 신드롬 포머의 동작을 설명하기 위한 블록도의 일 실시 예들을 나타낸다.
도 16은 도 1에 도시된 메모리 컨트롤러의 동작을 설명하기 위한 플로우차트이다.
도 17은 본 발명의 다른 실시 예에 따른 메모리 시스템의 블록도를 나타낸다.
도 18은 본 발명의 또 다른 실시 예에 따른 시스템의 블록도를 나타낸다.
도 19는 본 발명의 또 다른 실시 예에 따른 시스템의 블록도를 나타낸다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 본 발명의 실시 예에 따른 메모리 컨트롤러를 포함하는 메모리 시스템의 블록도를 나타낸다.
도 1을 참조하면, 메모리 시스템(100)은 전자 장치 또는 휴대용 장치로 구현될 수 있다. 메모리 시스템(100)은 이동 전화기, 스마트 폰(smart phone), 태블릿 (tablet) PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라 (digital still camera), 디지털 비디오 카메라 (digital video camera), PMP (portable multimedia player), PDN(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), 또는 e-북(e-book)으로 구현될 수 있다.
메모리 시스템(100)은 호스트(host; 10), 메모리 컨트롤러(20), 및 불휘발성 메모리 장치(90)를 포함할 수 있다.
호스트(10)는 메모리 컨트롤러(20)로 데이터 시퀀스(data sequence; DS1)를 전송하거나, 메모리 컨트롤러(20)로부터 데이터 시퀀스(DS2)를 수신할 수 있다.
메모리 컨트롤러(20)는 불휘발성 메모리 장치(90)를 제어한다. 메모리 컨트롤러(20)는 호스트(10)로부터 수신된 데이터 시퀀스(DS1)를 인코딩하여, 라이트 데이터 시퀀스(WD)를 불휘발성 메모리 장치(90)에 프로그램하도록 불휘발성 메모리 장치(90)를 제어한다. 상기 프로그램은 페이지(page) 단위로 수행된다. 예컨대, 상기 페이지는 512 바이트, 2048 바이트, 4096 바이트 또는 그 이상일 수 있다. 또한, 메모리 컨트롤러(20)는 불휘발성 메모리 장치(90)를 제어하여 리드 데이터 시퀀스(RD)를 수신하고, 리드 데이터 시퀀스(RD)를 디코딩하여 데이터 시퀀스(DS2)를 호스트(10)로 전송한다.
메모리 컨트롤러(20)는 인코더(30)와 디코더(60)를 포함한다. 인코더(30)는 바람직하지 않는 패턴(undesirable pattern)을 회피(avoid)하기 위해 데이터 시퀀스(DS1)를 인코딩하여, 라이트 데이터 시퀀스(WD)를 출력한다. 인코딩없이 데이터 시퀀스(DS1)를 불휘발성 메모리 장치(90)에 라이트하는 프로그램 동작이 수행될 때, 불휘발성 메모리 장치(90)에 포함된 메모리 셀들 사이에 커플링(coupling)이 발생할 수 있다. 상기 커플링은 문턱 전압 분포들(threshold voltage distributions)의 확대(widening)를 초래한다. 이는 불휘발성 메모리 장치(90)의 신뢰성에 영향을 미칠 수 있다.
디코더(60)는 리드 데이터 시퀀스(RD)를 디코딩하여 데이터 시퀀스(DS2)를 출력한다.
불휘발성 메모리 장치(90)는 플래시 메모리(flash memory)이다. 실시 예에 따라 불휘발성 메모리 장치(90)는 ROM(read only memory), PROM(programmable read only memory), EPROM(erasable programmable read only memory), EEPROM(electrically erasable programmable read only memory), FRAM(ferroelectrics random access memory), MRAM(magnetic random access memory), PRAM(phase change random access memory), NRAM(namo random access memory), SONOS(silicon-oxide-nitride-oxide-silicon), 저항 메모리(resistive memory), 또는 레이스 트랙 메모리(racetrack memory)와 같은 불휘발성 메모리일 수 있다. 불휘발성 메모리 장치(90)는 메모리 셀 어레이(91)를 포함할 수 있다. 메모리 셀 어레이(91)는 각각이 데이터를 저장할 수 있는 복수의 메모리 셀들을 포함할 수 있다. 상기 복수의 메모리 셀들 각각은 워드 라인들(WL1~WLx; x은 자연수)과 비트 라인들(BL1~BLy;y는 자연수)의 교차점들 각각에 위치한다.
도 2는 도 1에 도시된 인코더의 동작에 따른 문턱 전압 분포의 다이어그램의 일 실시 예를 나타낸다. 도 2는 한 셀당(per cell) 2개의 비트들을 저장할 수 있는 멀티 레벨 셀(multi level cell; MLC)의 문턱 전압 분포의 다이어그램을 나타낸다.
도 1과 도 2를 참조하면, 'E'는 소거 상태(erase state)를, 'P1', 'P2', 및 'P3'은 프로그램 상태들(program states)을 나타낸다.
인코더(30)는 불휘발성 메모리 장치(90)의 신뢰성을 향상시키기 위해 데이터 시퀀스(DS1)의 패턴을 제어한다. 즉, 인코더(30)는 바람직하지 않는 패턴(예컨대, 제1셀이 소거 상태 'E'이고, 인접 셀이 프로그램 상태 'P3'인 경우)을 회피하기 위한 데이터 시퀀스를 탐색한다. 인코더(30)는 임의의 프로그램 상태(예컨대, 'P3' 프로그램 상태)인 셀들의 개수를 감소시킬 수 있는 데이터 시퀀스를 탐색한다. 프로그램 상태 'P3'인 셀들의 개수가 감소됨에 따라, 프로그램 상태 'P1'인 셀들의 개수는 증가되며, 소거 상태 'E'인 셀들의 분포는 변화된다. 이는 상태 세이핑(state shaping)이라고 호칭될 수 있다. 따라서 임의의 프로그램 상태(예컨대, 프로그램 상태 'P3')인 셀들의 개수를 감소시킬 수 있는 데이터 시퀀스를 탐색함으로써 상기 바람직하지 않은 패턴이 회피될 수 있다.
도 3은 도 1에 도시된 인코더의 동작에 따른 문턱 전압 분포의 다이어그램의 다른 실시 예를 나타낸다. 도 3은 한 셀당(per cell) 3개의 비트들을 저장할 수 있는 트리플 레벨 셀(triple level cell; TLC)의 문턱 전압 분포의 다이어그램을 나타낸다.
도 1과 도 3을 참조하면, 'E'는 소거 상태를, 'P1'~'P7'은 프로그램 상태들을 나타낸다. 인코더(30)는 프로그램 상태 'P7'인 셀들의 개수를 감소시킬 수 있는 데이터 시퀀스를 탐색한다. 프로그램 상태 'P7'인 셀들의 개수가 감소됨에 따라, 프로그램 상태 'P4'인 셀들의 개수는 증가되며, 소거 상태 'E'인 셀들의 분포는 변화된다. 바람직하지 않는 패턴(예컨대, 제1셀이 소거 상태 'E'이고, 인접 셀이 프로그램 상태 'P7'인 경우)이 일부 회피될 수 있다.
설명의 편의를 위해 MLC의 문턱 전압 분포를 이용하여 본 발명의 기술적 특징에 대해 설명될 것이다.
도 4는 도 1에 도시된 인코더의 블록도를 나타내며, 도 5는 도 4에 도시된 인버스 신드롬 포머(inverse syndrome former)에서 출력되는 잉여 대표 시퀀스(coset representative sequence)의 다이어그램을 나타낸다.
도 1과 도 4를 참조하면, 인코더(30)는 인버스 신드롬 포머(inverse syndrome former; 40), 비터비 검출기(viterbi detector; 50), 버퍼(51), XOR 연산자(53), 및 비트-투-상태 맵퍼(bit-to-state mapper; 55)를 포함한다.
인버스 신드롬 포머(40)는 데이터 시퀀스(DS1)를 수신하여 m 비트(m은 자연수) 단위로 나뉠 수 있는 잉여 대표 시퀀스(RS)를 생성한다. 도 5를 참조하면, 잉여 대표 시퀀스(RS)의 길이는 N(N은 자연수)이다. 상기 N은 복수의 m 비트(m은 2이상 자연수)로 나뉠 수 있다. 인버스 신드롬 포머(40)의 동작에 대해서는 도 6 내지 도 9에서 자세히 설명될 것이다.
도 1과 도 4를 참조하면, 비터비 검출기(50)는 잉여 대표 시퀀스(RS)의 m 비트들 각각과 길쌈 부호화된 이진 비트들(convolutionally encoded binary bits)에 대해 제1XOR 연산을 수행하고, 제1XOR 연산 결과에 따라 생존 경로 시퀀스(SP)를 결정한다. 비터비 검출기(50)는 상기 m 단위로 상기 제1XOR 연산을 수행한다. 비터비 검출기(50)의 동작에 대해서는 도 10에서 자세히 설명될 것이다.
버퍼(51)는 잉여 대표 시퀀스(RS)를 일시적으로 저장한다.
XOR 연산자(53)는 잉여 대표 시퀀스(RS)와 생존 경로 시퀀스(SP)에 대해 제2XOR 연산을 수행하여 출력 시퀀스(OS)를 계산한다.
비트-투-상태 맵퍼(55)는 출력 시퀀스(OS)와 함께 제1워드 라인(WL1)에 저장될 제2데이터 시퀀스와, 상기 출력 시퀀스(OS)를 프로그램 상태들과 매핑하고, 매핑된 프로그램 상태들을 나타내는 라이트 데이터 시퀀스(WD)를 불휘발성 메모리 장치(90)로 출력한다.
도 6은 도 4에 도시된 인버스 신드롬 포머의 블록도의 일 실시 예를 나타낸다.
도 1, 도 4, 및 도 6을 참조하면, 인버스 신드롬 포머(40')는 구속장(constraint length)가 3이고, 생성 다항식(generator polynomial)이 [1 0 1] 및 [1 1 1]인 길쌈 부호를 기반으로 구성된다.
인버스 신드롬 포머(40')는 복수의 인버스 신드롬 포머 유닛들(40-1, 40-2, 40-3, 및 40-4)을 포함한다. 인버스 신드롬 포머(40')의 출력 비트들(y[0]~y[4])이 m비트일 때, 인버스 신드롬 포머(40')의 입력 비트들(x[0]~x[3])은 (m-1)비트이다. 예컨대, 인버스 신드롬 포머(40')의 입력 비트들(x[0]~x[3]) 각각은 제1워드 라인(WL1)에 저장될 MSB(most significant bit)일 수 있다. 인버스 신드롬 포머(40')의 입력 비트들(x[0]~x[3])은 데이터 시퀀스(DS1)의 일부이다. 제1인버스 신드롬 포머 유닛(40-1)은 복수의 XOR 연산자들(41과 43) 및 복수의 시프트 레지스터들(shift registers; 45과 47)을 포함한다. 나머지 인버스 신드롬 포머 유닛들(40-2, 40-3, 및 40-4)의 구성요소들은 제1인버스 신드롬 포머 유닛들(40-1)의 구성요소들과 동일하다. 실시 예에 따라 인버스 신드롬 포머 유닛들(40-1, 40-2, 40-3, 및 40-4)의 개수는 다양할 수 있다.
데이터 시퀀스(DS1)가 '0110 1101 1010'일 때, 인버스 신드롬 포머(40')는 각 (m-1) 비트인 '0110', '11010', 및 '1010'을 순차적으로 수신하여, 각 m 비트인 '00110', '01011', 및 '00111'을 순차적으로 출력한다.
도 7 내지 도 9는 도 4에 도시된 인버스 신드롬 포머의 동작을 설명하기 위한 블록도의 일 실시 예들을 나타낸다.
도 4와 도 7을 참조하면, 인버스 신드롬 포머(40')는 (m-1) 비트인 '0110'을 수신하여, m 비트인 '00110'을 출력한다.
도 4와 도 8을 참조하면, 인버스 신드롬 포머(40')는 m 비트인 '00110'을 출력한 후, (m-1) 비트인 '1101'을 수신하여, m 비트인 '01011'을 출력한다.
도 4와 도 9를 참조하면, 인버스 신드롬 포머(40')는 m 비트인 '01011'을 출력한 후, (m-1) 비트인 '1010'을 수신하여, m 비트인 '00111'을 출력한다.
즉, 인버스 신드롬 포머(40')는 데이터 시퀀스(DS1) '0110 1101 1010'를 수신할 때, 인버스 신드롬 포머(40')는 잉여 대표 시퀀스(RS) '00110 01011 00111'을 출력한다.
도 10은 도 4에 도시된 비터비 검출기(viterbi detector)의 브랜치 메트릭스(branch metrics) 계산 동작을 설명하기 위한 트렐리스 다이어그램(trellis diagram)을 나타낸다. 도 10에서 S0(k), S1(k), S2(k), 및 S3(k)은 현재(present) 상태를 나타내며, S0(k+1), S1(k+1), S2(k+1), 및 S3(k+1)은 다음(next) 상태를 나타낸다.
도 1, 도 4, 및 도 10을 참조하면, 비터비 검출기(50)는 잉여 대표 시퀀스(RS)의 m 비트들 각각과 이진 비트들(binary bits; A, B, C 및 D)에 대해 제1XOR 연산을 수행하고, 상기 제1XOR 연산 결과에 따라 모든 가능한 브랜치 메트릭스(all possible branch metrics)를 계산하다.
예컨대, 잉여 대표 시퀀스(RS)의 m 비트가 '00110'이고, 이진 비트들(A, B, C, 및 D) 각각이 '00000', '11111', '10101', 및 '01010'일 때, 상기 제1XOR 연산 결과는 '00110', '11001', '10011' 및 '01100'이다.
잉여 대표 시퀀스(RS)의 m 비트가 '01011'이고, 이진 비트들(A, B, C, 및 D) 각각이 '00000','11111', '10101', 및 '01010'일 때, 상기 제1XOR 연산 결과는 '01011', '10100', '11110' 및 '00001'이다.
잉여 대표 시퀀스(RS)의 m 비트가 '00111'이고, 이진 비트들(A, B, C, 및 D) 각각이 '00000','11111', '10101', 및 '01010'일 때, 상기 제1XOR 연산 결과는 '00111', '11000', '10010' 및 '01101'이다.
모든 가능한 브랜치 메트릭스 각각은 파라미터들(λ1234, 및 λ5) 합에 의해 계산된다. 상기 파라미터들 각각은 선택 비트(SEL)에 의해 정의된다.
예컨대, 선택 비트(SEL)가 '1'이고, 상기 제1XOR 연산 결과가 비트 '0'일 때, 상기 비트와 대응되는 파라미터들(λ1234, 및 λ5) 중 어느 하나의 값은 '0'이다. 상기 제1XOR 연산 결과가 '00110'일 때, 파라미터들(λ1234, 및 λ5) 각각의 값은 '0, 0, 1, 1, 0'이다. 브랜치 메트릭(branch metric)은 파라미터들(λ1234,및λ5) 합에 의해 계산되므로, 상기 브랜치 메트릭은 0+0+1+1+0=2이다. 이를 정리하면 표 1과 같다.
잉여 대표 시퀀스(RS)의 m 비트 이진 비트들(A, B, C, D) 제1XOR 연산 결과 모든 가능한 브랜치 메트릭스
'00110'


A='00000' '00110' 0+0+1+1+0=2
B='11111' '11001' 1+1+0+0+1=3
C='10101' '10011' 1+0+0+1+1=3
D='01010' '01100' 0+1+1+0+0=2
'01011'


A='00000' '01011' 0+1+0+1+1=3
B='11111' '10100' 1+0+1+0+0=2
C='10101' '11110' 1+1+1+1+0=4
D='01010' '00001' 0+0+0+0+1=1
'00111'


A='00000' '00111' 0+0+1+1+1=3
B='11111' '11000' 1+1+0+0+0=2
C='10101' '10010' 1+0+0+1+0=2
D='01010' '01101' 0+1+1+0+1=3
상기 선택 비트가 '1'이고, 상기 제1XOR 연산 결과가 비트 '1'일 때, 상기 비트와 대응되는 상기 파라미터들 중 어느 하나의 값은 '1'이다.
도 11은 도 4에 도시된 비터비 검출기의 생존 경로 시퀀스(survivor path sequence) 결정 동작을 설명하기 위한 트렐리스 다이어그램을 나타낸다. 도 11에서 'BMA', 'BMB', 'BMC', 및 'BMD'는 브랜치 메트릭스를 나타내며, 'PM0', 'PM1','PM2', 및 'PM3'은 패스(path) 메트릭스를 나타낸다.
도 1, 도 4, 및 도 11을 참조하면, 비터비 검출기(50)는 상기 모든 가능한 브랜치 메트릭스에서 생존 경로 시퀀스(SP)를 결정한다. 생존 경로 시퀀스(SP)는 '00000 11111 10101'이다. 상기 모든 가능한 브랜치 메트릭스에 따라 경로 메트릭스가 계산되고, 상기 경로 메트릭스에 의해 생존 경로 시퀀스(SP)가 결정된다.
XOR 연산자(53)는 잉여 대표 시퀀스(RS) '00110 01011 00111'와 생존 경로 시퀀스(SP) '00000 11111 10101'에 대해 제2XOR 연산을 수행하여 출력 시퀀스(OS)'00110 10100 10010'를 계산한다.
비트-투-상태 맵퍼(55)는 출력 시퀀스(OS) '00110 10100 10010'와 함께 제1워드 라인(WL1)에 저장될 제2데이터 시퀀스 (예컨대, '11000 01001 11100')와, 상기 출력 시퀀스(OS) '00110 10100 10010'를 프로그램 상태들과 매핑한다.
도 2를 참조하면, 소거 상태 'E'는 '11'이며, 프로그램 상태 'P1'은 '10'이고, 프로그램 상태 'P2'는 '00'이며, 프로그램 상태 'P3'는 '01'이므로, 매핑된 프로그램 상태는 'P3, P3, P1, P1, P2, P1, P3, P1, P2, P3, E, P3, P3, P1, 및 P2'이다.
비트-투-상태 맵퍼(55)는 상기 매핑된 프로그램 상태들에 따라 프로그램 동작을 수행하기 위해 불휘발성 메모리 장치(90)를 제어한다.
인코더(30)는 프로그램 상태 'P3'인 셀들의 개수를 감소시킬 수 있는 데이터 시퀀스를 탐색할 수 있다.
실시 예에 따라, 인코더(30)는 바람직하지 않는 패턴(예컨대, 제1셀이 소거 상태 'E'이고, 인접 셀이 프로그램 상태 'P3'인 경우)을 회피하기 위한 데이터 시퀀스를 탐색할 수 있다. 비터비 검출기(50)는 출력 시퀀스(OS)와 함께 제1워드 라인(예컨대, WL1)에 저장될 제1데이터 시퀀스를 수신할 수 있다. 출력 시퀀스(OS)가 제1워드 라인(WL1)의 MSB 데이터 시퀀스와 대응될 때, 상기 제1데이터 시퀀스는 LSB(least significant bit) 데이터 시퀀스와 대응된다. 상기 제1XOR 연산 결과와 상기 제1데이터 시퀀스는 제1프로그램 상태 시퀀스를 구성한다. 예컨대, 상기 제1XOR 연산 결과의 첫 번째 비트가 '0'이고, 상기 제1데이터 시퀀스의 첫 번째 비트가 '1'일 때, 상기 제1프로그램 상태 시퀀스의 첫 번째 상태는 'P3' 상태이다. 왜냐하면 도 2에서 'P3' 상태는 LSB가 '0'이고, MSB가 '1'이기 때문이다.
또한, 비터비 검출기(50)는 제2워드 라인(예컨대, WL2)에 저장된 페이지 데이터 비트들에 따라 결정되는 제2프로그램 상태 시퀀스를 수신할 수 있다. 예컨대, 제2워드 라인(WL2)의 첫 번째 MSB와 첫 번째 LSB 각각이 '0'과 '1'일 때, 상기 제2프로그램 상태 시퀀스의 첫 번째 상태는 'P1'이다. 왜냐하면 도 2에서 'P1' 상태는 LSB가 '1'이고, MSB가 '0'이기 때문이다.
비터비 검출기(50)는 상기 제1프로그램 상태 시퀀스와 상기 제2프로그램 상태 시퀀스에 따라 상기 모든 가능한 브랜치 메트릭스를 계산한다.
상기 모든 가능한 브랜치 메트릭스 각각은 파라미터의 합에 의해 계산된다. 상기 제1프로그램 상태 시퀀스는 복수의 비트 라인들의 순서와 대응된다. 예컨대, 상기 제1프로그램 상태 시퀀스 중 k번째 상태는 상기 복수의 비트 라인들 중 k번째 비트 라인과 대응된다.
상기 제1프로그램 상태 시퀀스 중 k번째 비트 라인과 대응되는 프로그램 상태와, 상기 제2프로그램 상태 시퀀스 중 상기 k번째 비트 라인과 대응되는 프로그램 상태 각각이 소거(erase) 상태 'E'와 가장 높은 프로그램 상태(highest program state) 'P3'일 때, 상기 k번째 비트 라인과 대응되는 파라미터의 값(λk)은 '1'이고, 그 외에 상기 파라미터의 값은 '0'이다. 이를 정리하면 표 2와 같다.
제1프로그램 상태 시퀀스 중 k번째 비트 라인과 대응되는 프로그램 상태 'E' 'P3' 그외의 경우
제2프로그램 상태 시퀀스 중 상기 k번째 비트 라인과 대응되는 프로그램 상태 'P3' 'E' 그외의 경우
상기 k번째 비트 라인과 대응되는 파라미터의 값(λk) 1 1 0
예컨대, 상기 제1XOR 연산 결과가 '00110'이고, 상기 제1데이터 시퀀스가 '11100'일 때, 상기 제1프로그램 상태 시퀀스는 'P1, P1, E, P3, 및 P2'이다. 상기 제2프로그램 상태 시퀀스는 'P2, P2, E, E, 및 P1'이라고 가정할 때, 파라미터들(λ1234, 및 λ5) 각각의 값은 '0, 0, 0, 1, 0'이다. 브랜치 메트릭(branch metric)은 파라미터들(λ1234,및λ5) 합에 의해 계산되므로, 상기 브랜치 메트릭은 0+0+0+1+0=1이다.
이를 정리하면 표 3과 같다.
제1프로그램 상태 시퀀스의 프로그램 상태 P1 P1 E P3 P2
제2프로그램 상태 시퀀스의 프로그램 상태 P2 P2 E E P1
파라미터들(λ1234, 및 λ5) λ1=0 λ2=0 λ30=0 λ4=1 λ5=0
브랜치 메트릭 0+0+0+1+0=1
실시 예에 따라 상기 제1프로그램 상태 시퀀스와 상기 제2프로그램 상태 시퀀스에 따라 상기 파라미터들 각각은 서로 다른 값을 가질 수 있다. 예컨대, 이는 표 4와 같이 나타낼 수 있다.
제1프로그램 상태 시퀀스 중 k번째 비트 라인과 대응되는 프로그램 상태 E E E E P1 P2 P3 나머지 경우
제2프로그램 상태 시퀀스 중 상기 k번째 비트 라인과 대응되는 프로그램 상태 E P1 P2 P3 E E E
상기 k번째 비트 라인과 대응되는 파라미터의 값(λk) 1 4 9 16 4 9 16 0
또 다른 실시 예에 따라, 비터비 검출기(50)가 출력 시퀀스(OS)와 함께 제1워드 라인(예컨대, WL1)에 저장될 제1데이터 시퀀스를 수신할 때, 비터비 검출기(50)는 상기 제1XOR 연산 결과, 및 상기 제1데이터 시퀀스에 따라 결정되는 프로그램 상태들에 따라 상기 모든 가능한 브랜치 메트릭스를 계산할 수 있다.
상기 모든 가능한 브랜치 메트릭스 각각은 파라미터들(λ1234, 및 λ5)의 합에 의해 계산된다. 상기 프로그램 상태들 중 k번째 비트 라인과 대응되는 프로그램 상태와, 상기 프로그램 상태들 중 (k-1)번째 비트 라인과 대응되는 프로그램 상태에 따라 상기 k번째 비트 라인과 대응되는 파라미터의 값(λk)은 다른 값을 가질 수 있다. 예컨대, 이는 표 5와 같이 나타낼 수 있다.
k번째 비트 라인과 대응되는 프로그램 상태 E E E E P1 P2 P3 나머지 경우
(k-1)번째 비트 라인과 대응되는 프로그램 상태 E P1 P2 P3 E E E
상기 k번째 비트 라인과 대응되는 파라미터의 값(λk) 1 4 9 16 4 9 16 0
도 12는 도 1에 도시된 디코더의 블록도를 나타낸다.
도 1과 도 12를 참조하면, 디코더(60)는 선택기(61)와 신드롬 포머(syndrome former; 70)를 포함한다. 디코더(60)는 불휘발성 메모리 장치(90)로부터 출력되는 리드 데이터 시퀀스(RD)를 수신한다. 리드 데이터 시퀀스(RD)는 임의의 워드 라인(예컨대, WL1)에 저장된 MSB 데이터 시퀀스(BD1)와 상기 워드 라인(WL1)에 저장된 LSB 데이터 시퀀스(BD2)를 포함할 수 있다. 선택기(61)는 선택 신호(PN)에 응답하여 MSB 데이터 시퀀스(BD1)를 신드롬 포머(70)로 출력하고, LSB 데이터 시퀀스(BD2)를 호스트(10)로 출력한다. 데이터 시퀀스(DS2)는 신드롬 포머(70)로부터 출력되는 데이터 시퀀스(BD1')와 LSB 데이터 시퀀스(BD2)를 포함한다.
도 13 내지 도 15는 도 12에 도시된 신드롬 포머의 동작을 설명하기 위한 블록도의 일 실시 예들을 나타낸다.
도 1, 도 12, 및 도 13을 참조하면, 신드롬 포머(70')는 복수의 신드롬 포머 유닛들(70-1, 70-2, 70-3, 70-4, 및 70-5)을 포함한다. 신드롬 포머(70')의 입력 비트들(r[0]~r[4])이 m비트일 때, 신드롬 포머(70')의 출력 비트들(x[0]~x[3])은 (m-1)비트이다. 예컨대, 신드롬 포머(70')의 입력 비트들(r[0]~r[4]) 각각은 제1워드 라인(WL1)에 저장된 MSB일 수 있다. 신드롬 포머(70')의 입력 비트들(r[0]~r[4])은 라이트 데이터 시퀀스(RD)의 일부이다. 제1신드롬 포머 유닛(70-1)은 복수의 XOR 연산자들(71과 73) 및 복수의 시프트 레지스터들(shift registers; 75과 77)을 포함한다. 나머지 신드롬 포머 유닛들(70-2, 70-3, 70-4, 및 70-5)의 구성요소들은 제1신드롬 포머 유닛들(70-1)의 구성요소들과 유사하다. 실시 예에 따라 신드롬 포머 유닛들(70-1, 70-2, 70-3, 70-4, 및 70-5)의 개수는 다양할 수 있다.
MSB 데이터 시퀀스(BD1)가 '00110 10100 10010'일 때, 신드롬 포머(70')는 각 m 비트인 '00110', '10100', 및 '10010'을 순차적으로 수신하여, 각 (m-1) 비트인 '0110', '1101', 및 '1010'을 순차적으로 출력한다.
도 16은 도 1에 도시된 메모리 컨트롤러의 동작을 설명하기 위한 플로우차트이다.
도 1, 도 4, 및 도 16을 참조하면, 인버스 신드롬 포머(40)는 제1데이터 시퀀스(DS1)를 수신하여 m 비트 단위로 나뉠 수 있는 잉여 대표 시퀀스(RS)를 생성한다(S10).
비터비 디코더(50)는 잉여 대표 시퀀스(RS)의 m 비트들 각각과 이진 비트들에 대해 제1XOR 연산을 수행하고, 상기 제1XOR 연산 결과에 따라 모든 가능한 브랜치 메트릭스를 계산한다(S20).
비터비 디코더(50)는 상기 모든 가능한 브랜치 메트릭스에서 생존 경로 시퀀스(SP)를 결정한다(S30).
XOR 연산자(53)는 상기 잉여 대표 시퀀스와 상기 생존 경로 시퀀스에 대해 제2XOR 연산을 수행하여 출력 시퀀스(OS)를 출력한다(S40).
비트-투-상태 맵퍼(55)는 출력 시퀀스(OS)와 함께 제1워드 라인(WL1)에 저장될 제2데이터 시퀀스와, 상기 출력 시퀀스(OS)를 프로그램 상태들과 매핑한다(S50).
불휘발성 메모리 장치(90)는 상기 매핑된 프로그램 상태들에 따라 프로그램 동작을 수행한다(S60).
도 17은 본 발명의 다른 실시 예에 따른 메모리 시스템의 블록도를 나타낸다.
도 17를 참조하면, 메모리 시스템(1700)은 메모리 컨트롤러(1730), 불휘발성 메모리 장치(1740), 및 프로세서(1710)를 포함한다. 실시 예에 따라, 메모리 컨트롤러(1730)는 프로세서(1710)의 내부에 구현될 수 있다.
메모리 컨트롤러(1730)와 불휘발성 메모리 장치(1740)는 도 1에 도시된 메모리 컨트롤러(20)와 불휘발성 메모리 장치(90)와 대응된다.
프로세서(1710)의 제어에 따라 메모리 컨트롤러(1730)는 불휘발성 메모리 장치(1740)의 액세스 동작, 예컨대 프로그램(program) 동작, 소거(erase) 동작, 또는 리드(read) 동작을 제어할 수 있다.
불휘발성 메모리 장치(1740)에 프로그램된 데이터는 프로세서(1710) 및/또는 메모리 컨트롤러(1730)의 제어에 따라 디스플레이(1720)를 통하여 디스플레이될 수 있다.
입력 장치(1760)는 프로세서(1710)의 동작을 제어하기 위한 제어 신호 또는 프로세서(1710)에 의하여 처리될 데이터를 입력할 수 있는 장치로서, 터치 패드(touch pad)와 컴퓨터 마우스(computer mouse)와 같은 포인팅 장치(pointing device), 키패드(keypad), 또는 키보드로 구현될 수 있다.
무선 송수신기(1750)는 안테나(ANT)를 통하여 무선 신호를 주거나 받을 수 있다. 예컨대, 무선 송수신기(1750)는 안테나(ANT)를 통하여 수신된 무선 신호를 프로세서(1710)에서 처리될 수 있는 신호로 변경할 수 있다.
따라서, 프로세서(1710)는 무선 송수신기(1750)로부터 출력된 신호를 처리하고 처리된 신호를 메모리 컨트롤러(1730) 또는 디스플레이(1720)로 전송할 수 있다. 메모리 컨트롤러(1730)는 프로세서(1710)에 의하여 처리된 신호를 불휘발성 메모리 장치(1740)에 프로그램할 수 있다.
또한, 무선 송수신기(1750)는 프로세서(1710)로부터 출력된 신호를 무선 신호로 변경하고, 변경된 무선 신호를 안테나(ANT)를 통하여 외부 장치로 출력할 수 있다.
프로세서(1710)는 메모리 컨트롤러(1730)로부터 출력된 데이터, 무선 송수신기(1750)로부터 출력된 데이터, 또는 입력 장치(1760)로부터 출력된 데이터가 디스플레이(1720)를 통하여 디스플레이될 수 있도록 디스플레이(1720)의 동작을 제어할 수 있다.
각 구성 요소(1710, 1720, 1730, 1740, 1750 및 1760)는 버스(1701)를 통하여 서로 통신할 수 있다.
도 18은 본 발명의 또 다른 실시 예에 따른 메모리 시스템의 블록도를 나타낸다.
도 18에 도시된 메모리 시스템(1800)은 메모리 카드(memory card) 또는 스마트 카드 (smart card)로 구현될 수 있다. 메모리 시스템(1800)은 호스트(1820)와 카드 시스템(1810)을 포함한다.
카드 시스템(1810)은 메모리 컨트롤러(1813), 불휘발성 메모리 장치(1815), 및 카드 인터페이스(1811)를 포함한다.
호스트(1820), 메모리 컨트롤러(1813), 및 불휘발성 메모리 장치(1815)는 도 1에 도시된 호스트(10), 메모리 컨트롤러(20), 및 불휘발성 메모리 장치(90)와 대응된다.
메모리 컨트롤러(1813)는 불휘발성 메모리 장치(1815)와 카드 인터페이스(1811) 사이에서 데이터의 교환을 제어할 수 있다.
실시 예에 따라, 카드 인터페이스(1811)는 SD(secure digital) 카드 인터페이스 또는 MMC(multi-media card) 인터페이스일 수 있으나 이에 한정되는 것은 아니다.
카드 인터페이스(1811)는 호스트(1820)의 프로토콜에 따라 호스트(1820)와 메모리 컨트롤러(1813) 사이에서 데이터 교환을 인터페이스할 수 있다.
실시 예에 따라 카드 인터페이스(1811)는 USB(Universal Serial Bus) 프로토콜, IC(InterChip)-USB 프로토콜을 지원할 수 있다. 여기서, 카드 인터페이스라 함은 호스트(1820)가 사용하는 프로토콜을 지원할 수 있는 하드웨어, 상기 하드웨어에 탑재된 소프트웨어, 또는 신호 전송 방식을 의미할 수 있다.
카드 시스템(1810)이 호스트(1820)의 호스트 인터페이스(1823)에 접속될 때, 호스트 인터페이스(1823)는 프로세서(1821)의 제어에 따라 카드 인터페이스(1811)와 메모리 컨트롤러(1813)를 통하여 불휘발성 메모리 장치(1815)와 데이터 통신을 수행할 수 있다.
이때, 호스트(1820)는 PC(personal computer), 태블릿(tablet) PC, 디지털 카메라, 디지털 오디오 플레이어, 이동 전화기, 스마트폰, 콘솔 비디오 게임 하드웨어, 또는 디지털 셋-탑 박스일 수 있다.
카드 시스템(1810)은 플래시 메모리 드라이브, USB 메모리 드라이브, IC-USB 메모리 드라이브, 또는 메모리 스틱(memory stick)으로 구현될 수 있다.
도 19는 본 발명의 또 다른 실시 예에 따른 메모리 시스템의 블록도를 나타낸다.
도 19를 참조하면, 메모리 시스템(1900)은 SSD(solid state drive)와 같은 데이터 처리 장치로 구현될 수 있다.
메모리 시스템(1900)은 호스트(1910), 메모리 컨트롤러(1950), 복수의 메모리 장치들(1960), 예컨대 복수의 NAND 플래시 메모리 장치들, 버퍼 매니저(1920), DRAM (dynamic ramdom access memory) 컨트롤러(1930), 및 DRAM(1940)을 포함한다.
호스트(1910), 메모리 컨트롤러(1950), 및 복수의 메모리 장치들(1960) 중 어느 하나는 도 1에 도시된 호스트(10), 메모리 컨트롤러(20), 및 불휘발성 메모리 장치(90)와 대응된다.
메모리 컨트롤러(1950)는 복수의 메모리 장치들(1960) 각각의 액세스 동작을 제어할 수 있다.
버퍼 매니저(1920)는 호스트(1910), 메모리 컨트롤러(1950), 및 메모리 컨트롤러(1950) 사이에서 데이터의 전송을 제어할 수 있다. DRAM 메모리 컨트롤러(1930)는 버퍼 매니저(1920)와 DRAM(1940) 사이에서 데이터의 전송을 제어할 수 있다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100; 메모리 시스템
10; 호스트
20; 메모리 컨트롤러
30; 인코더
40; 인버스 신드롬 포머
50; 비터비 검출기
51; 버퍼
55; 비트-투-상태 맵퍼
60; 디코더
90; 불휘발성 메모리 장치
91; 메모리 셀 어레이

Claims (10)

  1. 호스트로부터 제1데이터 시퀀스(data sequence)를 수신하는 단계;
    상기 제1데이터 시퀀스로부터 m 비트(m은 2이상 자연수) 단위로 나뉠 수 있는 잉여 대표 시퀀스(coset representative sequence)를 생성하는 단계;
    상기 잉여 대표 시퀀스의 m 비트들 각각에 대해 제1XOR 연산을 수행하는 단계;
    상기 제1XOR 연산의 결과에 따라 모든 가능한 브랜치 메트릭스(all possible branch metrics)를 계산하는 단계;
    상기 모든 가능한 브랜치 메트릭스에 기초하여 생존 경로 시퀀스(survivor path sequence)를 결정하는 단계;
    상기 잉여 대표 시퀀스와 상기 생존 경로 시퀀스에 대해 제2XOR 연산을 수행하여 출력 시퀀스를 출력하는 단계; 및
    상기 출력 시퀀스에 기초한 라이트 데이터를 비-휘발성 메모리 장치로 제공하는 단계를 포함하고,
    상기 모든 가능한 브랜치 메트릭스를 계산하는 단계는,
    상기 제1XOR 연산의 결과와, 상기 출력 시퀀스와 함께 제1워드 라인에 저장될 제2데이터 시퀀스에 따라 결정되는 제1프로그램 상태 시퀀스 및 제2워드 라인에 저장된 페이지 데이터 비트들에 따라 결정되는 제2프로그램 상태 시퀀스를 이용하여 상기 모든 가능한 브랜치 메트릭스를 계산하는 단계를 포함하는 메모리 컨트롤러의 동작 방법.
  2. 제1항에 있어서, 상기 제2데이터 시퀀스 및 상기 출력 시퀀스를 복수의 프로그램 상태들 각각에 대응하는 데이터 비트들로 매핑하는 단계; 및
    상기 비-휘발성 메모리 장치가 상기 매핑된 데이터 비트들에 따라 프로그램 동작을 수행하도록 제어하는 단계를 더 포함하는 메모리 컨트롤러의 동작 방법.
  3. 제1항에 있어서, 상기 모든 가능한 브랜치 메트릭스 각각은,
    파라미터들의 합에 의해 계산되며,
    상기 제1프로그램 상태 시퀀스 중 k번째 비트 라인과 대응되는 프로그램 상태와, 상기 제2프로그램 상태 시퀀스 중 상기 k번째 비트 라인과 대응되는 프로그램 상태 각각이 소거(erase) 상태와 가장 높은 프로그램 상태(highest program state)일 때, 상기 k번째 비트 라인과 대응되는 파라미터의 값은 '1'이고, 그 외에 상기 파라미터의 값은 '0'인 메모리 컨트롤러의 동작 방법.
  4. 제1항에 있어서, 상기 모든 가능한 브랜치 메트릭스 각각은,
    파라미터들의 합에 의해 계산되며,
    상기 제1프로그램 상태 시퀀스와 상기 제2프로그램 상태 시퀀스에 따라 상기 파라미터들 각각은 서로 다른 값을 가지는 메모리 컨트롤러의 동작 방법.
  5. 제1항에 있어서, 상기 모든 가능한 브랜치 메트릭스 각각은,
    파라미터들의 합에 의해 계산되며,
    선택 비트에 따라 상기 파라미터들 각각이 정의되는 메모리 컨트롤러의 동작 방법.
  6. 제1항에 있어서, 상기 모든 가능한 브랜치 메트릭스 각각은,
    파라미터들의 합에 의해 계산되며,
    상기 제1프로그램 상태 시퀀스 중 k번째 비트 라인과 대응되는 프로그램 상태와, 상기 제1프로그램 상태 시퀀스 중 (k-1)번째 비트 라인과 대응되는 프로그램 상태에 따라 상기 k번째 비트 라인과 대응되는 파라미터의 값이 결정되는 메모리 컨트롤러의 동작 방법.
  7. 호스트로부터 제1데이터 시퀀스를 수신하고, 상기 제1데이터 시퀀스로부터 m 비트(m은 2이상 자연수) 단위로 나뉠 수 있는 잉여 대표 시퀀스를 생성하는 인버스 신드롬 포머(inverse syndrome former);
    상기 잉여 대표 시퀀스의 m 비트들 각각에 대해 제1XOR 연산을 수행하고, 제1XOR 연산의 결과에 따라 생존 경로 시퀀스를 결정하는 비터비 검출기(viterbi detector); 및
    상기 잉여 대표 시퀀스와 상기 생존 경로 시퀀스에 대해 제2XOR 연산을 수행하여 계산되는 출력 시퀀스와 함께 제1워드 라인에 저장될 제2데이터 시퀀스 및 상기 출력 시퀀스를 복수의 프로그램 상태들 각각에 대응하는 데이터 비트들로 매핑(mapping)하는 비트-투-상태 맵퍼(bit-to-state mapper)를 포함하고,
    상기 비터비 검출기는,
    상기 제1XOR 연산의 결과와, 상기 제2데이터 시퀀스에 따라 결정되는 제1프로그램 상태 시퀀스 및 제2워드 라인에 저장된 페이지 데이터 비트들에 따라 결정되는 제2프로그램 상태 시퀀스를 이용하여 계산된 모든 가능한 브랜치 메트릭스에 기초하여 상기 생존 경로 시퀀스를 결정하는 메모리 컨트롤러.
  8. 제7항에 있어서, 상기 모든 가능한 브랜치 메트릭스 각각은,
    파라미터들의 합에 의해 계산되며,
    선택 비트에 따라 상기 파라미터들 각각이 정의되는 메모리 컨트롤러.
  9. 제7항에 있어서, 상기 모든 가능한 브랜치 메트릭스 각각은,
    파라미터들의 합에 의해 계산되며,
    상기 제1프로그램 상태 시퀀스와 상기 제2프로그램 상태 시퀀스에 따라 상기 파라미터들 각각은 서로 다른 값을 가지는 메모리 컨트롤러.
  10. 제7항에 기재된 메모리 컨트롤러; 및
    상기 메모리 컨트롤러로부터 출력되는 복수의 프로그램 상태들 각각에 대응하는 데이터 비트들에 따라 프로그램 동작을 수행하는 불휘발성 메모리 장치를 포함하는 메모리 시스템.
KR1020130028021A 2013-03-15 2013-03-15 메모리 컨트롤러의 동작 방법과 상기 메모리 컨트롤러를 포함하는 장치들 KR102067611B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130028021A KR102067611B1 (ko) 2013-03-15 2013-03-15 메모리 컨트롤러의 동작 방법과 상기 메모리 컨트롤러를 포함하는 장치들
US14/205,496 US9460782B2 (en) 2013-03-15 2014-03-12 Method of operating memory controller and devices including memory controller

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130028021A KR102067611B1 (ko) 2013-03-15 2013-03-15 메모리 컨트롤러의 동작 방법과 상기 메모리 컨트롤러를 포함하는 장치들

Publications (2)

Publication Number Publication Date
KR20140113839A KR20140113839A (ko) 2014-09-25
KR102067611B1 true KR102067611B1 (ko) 2020-01-20

Family

ID=51533927

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130028021A KR102067611B1 (ko) 2013-03-15 2013-03-15 메모리 컨트롤러의 동작 방법과 상기 메모리 컨트롤러를 포함하는 장치들

Country Status (2)

Country Link
US (1) US9460782B2 (ko)
KR (1) KR102067611B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102298607B1 (ko) * 2015-02-17 2021-09-06 삼성전자주식회사 저항성 메모리 시스템 및 저항성 메모리 시스템의 동작 방법
US9727261B2 (en) * 2015-09-24 2017-08-08 Western Digital Technologies, Inc. Weighted programming patterns in solid-state data storage systems
US11650795B2 (en) * 2019-08-23 2023-05-16 SK Hynix Inc. Raw read based physically unclonable function for flash memory

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050089121A1 (en) 2003-10-28 2005-04-28 Industrial Technology Research Institute Configurable architectrue and its implementation of viterbi decorder

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103280239B (zh) 2006-05-12 2016-04-06 苹果公司 存储设备中的失真估计和消除
US8085605B2 (en) 2007-08-29 2011-12-27 Marvell World Trade Ltd. Sequence detection for flash memory with inter-cell interference
US8499229B2 (en) 2007-11-21 2013-07-30 Micro Technology, Inc. Method and apparatus for reading data from flash memory
CN102132350B (zh) 2008-07-01 2015-06-17 Lsi公司 用于闪存存储器中的软解映射和单元间干扰减轻的方法和设备
EP2396791B1 (en) 2009-02-12 2014-08-06 Ramot at Tel-Aviv University Ltd. Apparatus and method for enhancing flash endurance by encoding data
US8386895B2 (en) 2010-05-19 2013-02-26 Micron Technology, Inc. Enhanced multilevel memory
TWI455136B (zh) 2010-07-01 2014-10-01 Silicon Motion Inc 用來進行資料整形之方法以及相關之記憶裝置及其控制器
TWI441181B (zh) 2010-09-09 2014-06-11 Silicon Motion Inc 用來進行資料整形之方法以及其記憶裝置及控制器
KR101250672B1 (ko) 2010-12-03 2013-04-09 한국과학기술원 플래시 메모리 장치의 셀 간 간섭을 최소화하기 위한 격자 부호 변조 방법, 이를 이용하는 격자 부호 변조 회로, 오류 정정 회로 및 플래시 메모리 장치의 데이터 입력 방법과 플래시 메모리 장치

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050089121A1 (en) 2003-10-28 2005-04-28 Industrial Technology Research Institute Configurable architectrue and its implementation of viterbi decorder

Also Published As

Publication number Publication date
KR20140113839A (ko) 2014-09-25
US20140281293A1 (en) 2014-09-18
US9460782B2 (en) 2016-10-04

Similar Documents

Publication Publication Date Title
JP6166868B2 (ja) メモリコントローラ及びその動作方法、並びにメモリコントローラを含むメモリシステム、3次元メモリシステム、メモリカード、ソリッドステートドライブ、及び携帯用通信装置
US11050438B2 (en) Memory controller
KR20100106142A (ko) 불휘발성 메모리 장치 및 그것을 포함하는 메모리 시스템
US10430101B2 (en) Semiconductor memory device that randomizes data and randomizer thereof
US10445002B2 (en) Data accessing method, memory controlling circuit unit and memory storage device
US20160070507A1 (en) Memory system and method of controlling memory device
KR20100124087A (ko) 메모리 컨트롤러, 그것을 포함하는 메모리 시스템 그리고 그것의 동작 방법
US10985780B2 (en) Error correction circuit, and memory controller having the error correction circuit and memory system having the memory controller
KR20160090054A (ko) 플래시 메모리 시스템 및 그의 동작 방법
KR20180021327A (ko) 데이터 처리 시스템 및 그의 동작 방법
US9507658B2 (en) Data reading method, memory storage device and memory controlling circuit unit
US11128315B2 (en) Error correction decoder
KR20120063329A (ko) 에러 체크 및 정정기 및 그것을 포함하는 메모리 시스템
US9720609B1 (en) Data protecting method, memory control circuit unit and memory storage device
US20170134049A1 (en) Decoding method, memory storage device and memory control circuit unit
KR20200004195A (ko) 메모리 컨트롤러 및 이의 동작 방법
KR20120129239A (ko) 비휘발성 메모리 장치, 이의 동작 방법, 및 이를 포함하는 메모리 시스템
US20170272101A1 (en) Memory system and operating method thereof
KR20200111509A (ko) 오류 정정 디코더 및 이를 포함하는 메모리 시스템
KR102067611B1 (ko) 메모리 컨트롤러의 동작 방법과 상기 메모리 컨트롤러를 포함하는 장치들
US11082068B2 (en) Error correction circuit, memory controller having error correction circuit, and memory system having memory controller
US20180335942A1 (en) Data reading method, memory control circuit unit and memory storage device
CN106158046B (zh) 用于turbo乘积码的误校正避免
KR20100109223A (ko) 불휘발성 메모리 장치, 그것을 포함하는 메모리 시스템, 그리고 그것의 동작 방법
US8448048B2 (en) Flash memory device and related programming method

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant