KR20150043127A - 메모리 시스템에서의 코딩 방법 및 디코딩 방법 - Google Patents

메모리 시스템에서의 코딩 방법 및 디코딩 방법 Download PDF

Info

Publication number
KR20150043127A
KR20150043127A KR20130122184A KR20130122184A KR20150043127A KR 20150043127 A KR20150043127 A KR 20150043127A KR 20130122184 A KR20130122184 A KR 20130122184A KR 20130122184 A KR20130122184 A KR 20130122184A KR 20150043127 A KR20150043127 A KR 20150043127A
Authority
KR
South Korea
Prior art keywords
bit
memory
stuck
pattern
page
Prior art date
Application number
KR20130122184A
Other languages
English (en)
Other versions
KR102204394B1 (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 KR1020130122184A priority Critical patent/KR102204394B1/ko
Priority to US14/446,350 priority patent/US9570174B2/en
Publication of KR20150043127A publication Critical patent/KR20150043127A/ko
Application granted granted Critical
Publication of KR102204394B1 publication Critical patent/KR102204394B1/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/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • 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
    • 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
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • 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/08Address circuits; Decoders; Word-line control circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Read Only Memory (AREA)

Abstract

제한된 다차원 메모리 시스템에서의 코딩 방법 및 디코딩 방법에 관하여 개시한다. 메모리 시스템에서의 코딩 방법은 입력 데이터 스트림으로부터 초기 설정된 금지 패턴이 발생될 수 있는 심볼들의 집합을 검색하는 단계 및, 상기 검색된 금지 패턴이 발생될 수 있는 심볼들의 집합에 포함된 적어도 하나의 비트를 상기 금지 패턴이 발생될 수 없도록 스턱 비트로 처리하는 단계를 포함한다.

Description

메모리 시스템에서의 코딩 방법 및 디코딩 방법{Coding method and decoding method in memory system}
본 발명은 코딩 방법 및 디코딩 방법에 관한 것으로서, 자세하게는 제한된 다차원 메모리 시스템에서의 코딩 방법 및 디코딩 방법에 관한 것이다.
반도체 메모리 장치의 저장 영역은 여러 블록으로 구성되고, 각 블록은 워드라인들로 구성되며, 각 워드라인은 복수개의 메모리 셀들로 구성된다. 그런데, 인접한 메모리 셀들 사이의 커플링 효과로 인하여 특정 데이터 패턴이 잘못 읽혀질 수 있다. 이에 따라서, 커플링 효과로 인하여 데이터 읽기 과정에서 오류가 발생될 가능성이 높은 패턴들을 회피하기 위한 코딩 기술의 연구가 필요하게 되었다.
본 발명의 목적은 다차원 제약이 존재하는 저장 매체에서의 스턱 비트 처리를 이용하여 입력 데이터 스트림을 인코딩 처리하는 메모리 시스템에서의 코딩 방법을 제공하는데 있다.
본 발명의 다른 목적은 다차원 제약이 존재하는 저장 매체에서의 디코딩 처리를 수행하는 메모리 시스템에서의 디코딩 방법을 제공하는데 있다.
본 발명의 기술적 사상의 일면에 따른 메모리 시스템에서의 코딩 방법은 입력 데이터 스트림으로부터 초기 설정된 금지 패턴이 발생될 수 있는 심볼들의 집합을 검색하는 단계 및, 상기 검색된 금지 패턴이 발생될 수 있는 심볼들의 집합에 포함된 적어도 하나의 비트를 상기 금지 패턴이 발생될 수 없도록 스턱 비트로 처리하는 단계를 포함한다.
본 발명의 실시 예에 따르면, 상기 금지 패턴이 발생될 수 있는 심볼들의 집합을 검색하는 단계는 상기 메모리 장치의 메모리 셀 어레이에서의 수평 방향 또는 수직 방향으로 각각 상기 금지 패턴이 발생될 수 있는 심볼들의 집합을 검색할 수 있다.
본 발명의 실시 예에 따르면, 상기 금지 패턴은 이웃하는 적어도 3개의 심볼들의 단위로 검색될 수 있다.
본 발명의 실시 예에 따르면, 상기 금지 패턴은 멀티 레벨 셀의 메모리 장치에서의 소거 상태의 심볼을 중심으로 좌우 또는 상하로 원하지 않는 프로그램 상태의 심볼들이 위치하는 패턴을 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 원하지 않는 프로그램 상태의 심볼들은 멀티 레벨 셀의 메모리 장치에서의 초기 설정된 문턱 전압 레벨 이상의 프로그램 상태들의 심볼들을 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 금지 패턴은 2비트 멀티 레벨 셀의 메모리 장치에서의 P3-E-P3 패턴을 포함하고, 2비트 멀티 레벨 셀에서 상기 소거 상태(E)는 가장 낮은 문턱 전압을 갖고, 제3프로그램 상태(P3)는 가장 높은 문턱 전압을 갖도록 결정할 수 있다.
본 발명의 실시 예에 따르면, 상기 금지 패턴이 발생될 수 있는 심볼들의 집합을 검색하는 단계는 상기 입력 데이터 스트림을 초기 설정된 제약 조건의 범위로 분할 처리하는 단계 및, 상기 분할 처리된 제약 조건의 범위에 포함된 입력 데이터의 패턴으로부터 상기 금지 패턴이 발생될 수 있는지를 판정하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 스턱 비트로 처리하는 단계는 상기 메모리 장치의 하나의 워드라인에 포함된 셀들을 적어도 2개의 그룹으로 분할하고, 상기 분할된 적어도 2개의 그룹들 중에서 하나의 그룹에서는 해당 워드라인의 상위 페이지에서 스턱 비트 처리를 수행하고, 다른 하나의 그룹에서는 해당 워드라인의 하위 페이지에서 스턱 비트 처리를 수행할 수 있다.
본 발명의 실시 예에 따르면, 상기 스턱 비트로 처리하는 단계는 상기 메모리 장치의 페이지 단위로 스턱 비트로 처리하는 개수를 초기 설정된 값으로 제한할 수 있다.
본 발명의 실시 예에 따르면, 상기 스턱 비트 처리된 비트에 대한 위치 정보를 생성시키는 단계를 더 포함하고, 상기 생성된 스턱 비트 처리된 비트에 대한 위치 정보를 상기 메모리 장치의 오버헤드 저장 영역에 쓸 수 있다.
본 발명의 실시 예에 따르면, 상기 금지 패턴이 발생될 수 있는 심볼들의 집합을 검색하는 단계는 멀티 레벨 셀의 메모리 장치에서의 소거 상태(E)를 갖는 메모리 셀에 이웃하게 위치하는 메모리 셀들에서 임계 개수를 초과하는 초기 설정된 문턱 전압 레벨 이상의 프로그램 상태가 발생될 수 있는 심볼들의 집합을 검색할 수 있다.
본 발명의 실시 예에 따르면, 상기 스턱 비트로 처리하는 단계는 상기 메모리 장치의 메모리 셀 어레이에서의 비트 라인들은 연속하는 3개의 비트 라인들의 단위 그룹으로 분류하고, 상기 단위 그룹에 포함된 3개의 비트 라인들 중에서 하나의 비트 라인에 대응되는 비트를 선택적으로 스턱 비트로 처리할 수 있다.
본 발명의 기술적 사상의 다른 면에 따른 메모리 시스템에서의 디코딩 방법은 읽기 명령에 따라서 메모리 장치로부터 데이터를 읽어내는 단계 및, 상기 읽어낸 데이터에 포함된 스턱 비트 처리된 비트에 대한 위치 정보를 이용하여 디코딩 처리를 수행하는 단계를 포함한다.
본 발명의 실시 예에 따르면, 상기 디코딩 처리를 수행하는 단계는 스턱 비트 처리된 비트에 대한 위치 정보를 이용하여 상기 읽어낸 데이터에 포함된 스턱 비트 처리된 위치의 비트 값을 스턱 비트 처리 이전 값으로 복원시키는 프로세스를 수행할 수 있다.
본 발명의 실시 예에 따르면, 상기 디코딩 처리를 수행하는 단계는 스턱 비트 처리 이전 값으로 복원시킨 데이터에 대한 에러 검출 및 정정 처리를 수행하는 프로세스를 수행할 수 있다.
본 발명에 의하면 이웃 셀들에 대한 커플링 유도에 따른 읽기 오류를 발생시킬 가능성이 높은 금지 패턴을 생성시킬 수 있는 심볼들의 집합에 포함된 하나의 비트를 스턱 비트 처리함으로써, 간단하게 금지되지 않은 패턴으로 변환시켜 프로그램 처리할 수 있는 효과가 발생된다.
그리고, 본 발명에 의하면 하나의 워드라인에 포함된 셀들을 적어도 2개의 그룹으로 분할하고, 상기 분할된 적어도 2개의 그룹들 중에서 하나의 그룹에서는 해당 워드라인의 상위 페이지에서 스턱 비트 처리를 수행하고, 다른 하나의 그룹에서는 해당 워드라인의 하위 페이지에서 스턱 비트 처리를 수행함으로써, 페이지 당 스턱 비트 처리되는 개수를 비교적 균등하게 발생시킬 수 있는 효과가 발생된다. 즉, 페이지 당 레이트를 균등하게 조절될 수 있는 효과가 발생된다.
또한, 본 발명에 의하면 디코딩 시에 원하는 페이지의 정보만을 검색하여 읽어내어 입력 스트림을 복원시킬 수 있는 효과가 발생된다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템의 구성도이다.
도 2는 본 발명의 다른 실시 예에 따른 복수의 채널을 구비하는 메모리 시스템의 구성도이다.
도 3은 도 1 및 도 2에 도시된 메모리 시스템의 채널 및 뱅크의 구성을 예시적으로 보여주는 도면이다.
도 4는 도 1 및 도 2에 도시된 메모리 장치에 포함된 플래시 메모리 칩의 세부 구성을 예시적으로 보여주는 도면이다.
도 5는 도 4에 도시된 셀 어레이에 포함된 메모리 셀의 일 예를 나타내는 단면도이다.
도 6은 싱글 레벨 셀의 소거 상태 및 프로그램 상태에 대한 문턱 전압 분포를 보여주는 도면이다.
도 7은 2비트 멀티 레벨 셀의 소거 상태 및 복수의 프로그램 상태들에 대한 문턱 전압 분포를 보여주는 도면이다.
도 8은 2비트 멀티 레벨 셀의 프로그램 동작을 설명하는 도면이다.
도 9는 플래시 메모리 칩의 내부 저장 구조를 보여주는 개념도이다.
도 10은 도 1에 도시된 프로세서의 소프트웨어 구조를 보여주는 도면이다.
도 11은 본 발명의 일 실시 예에 따른 인코더의 구성을 예시적으로 보여주는 도면이다.
도 12는 본 발명의 다른 실시 예에 따른 인코더의 구성을 예시적으로 보여주는 도면이다.
도 13은 본 발명의 일 실시 예에 따른 디코더의 구성을 예시적으로 보여주는 도면이다.
도 14는 본 발명의 실시 예에 따른 메모리 시스템에서의 코딩 방법의 흐름도이다.
도 15는 도 14에 도시된 금지 패턴이 발생될 수 있는 심볼들의 집합을 검색하는 프로세스에 대한 세부적인 흐름도를 예시적으로 보여준다.
도 16은 본 발명의 실시 예에 따른 메모리 시스템에서의 디코딩 방법의 흐름도이다.
도 17은 메모리 장치의 메모리 셀 어레이에서의 수평 방향으로 발생되는 금지 패턴의 예를 도시한 도면이다.
도 18은 메모리 장치의 메모리 셀 어레이에서의 수직 방향으로 발생되는 금지 패턴의 예를 도시한 도면이다.
도 19는 메모리 장치의 메모리 셀 어레이에서의 소거 상태를 갖는 메모리 셀에 이웃하게 위치하는 메모리 셀들의 금지 패턴의 예를 도시한 것이다.
도 20은 본 발명의 실시 예들에 따른 메모리 시스템이 채용된 전자 장치의 일 구현 예를 나타내는 블록도이다.
도 21은 본 발명의 실시 예들에 따른 메모리 시스템이 채용된 메모리 카드 시스템의 일 구현 예를 나타내는 블록도이다.
도 22는 본 발명의 실시 예들에 따른 SSD를 포함하는 서버 시스템에 대한 네트워크 구현 예를 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시 예에 대해 상세히 설명한다. 본 발명의 실시 예는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되는 것이다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용한다. 첨부된 도면에 있어서, 구조물들의 치수는 본 발명의 명확성을 기하기 위하여 실제보다 확대하거나 축소하여 도시한 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 본 발명의 일실시 예에 따른 메모리 시스템(1000A)의 구성도이다.
도 1에 도시된 바와 같이, 메모리 시스템(1000A)은 메모리 컨트롤러(100) 및 메모리 장치(200)를 포함한다.
메모리 장치(200)는 비휘발성 메모리 디바이스로 구현할 수 있다. 예로서, 메모리 장치(200)는 플래시 메모리 디바이스, PRAM(Phase change RAM), FRAM(Ferroelectric RAM), MRAM(Magnetic RAM) 디바이스 등으로 구성될 수 있다. 메모리 장치(200)는 적어도 하나의 비휘발성 메모리 디바이스들과 적어도 하나의 휘발성 메모리 디바이스들이 혼합된 형태로 구성될 수 있고, 적어도 두 종류 이상의 비휘발성 메모리 디바이스들이 혼합된 형태로 구성될 수도 있다.
그리고, 메모리 장치(200)는 단일의 플래시 칩으로 구성할 수 있다. 또한, 메모리 장치(200)는 복수의 플래시 메모리 칩들로 구성할 수도 있다.
메모리 컨트롤러(100)는 프로세서(110), 인코더(120), 디코더(130), RAM(Random Access Memory; 140), 호스트 인터페이스(150), 메모리 인터페이스(160) 및 버스(170)를 구비한다.
프로세서(110)는 버스(170)를 통하여 인코더(120), 디코더(130), RAM(140), 호스트 인터페이스(150) 및 메모리 인터페이스(160)와 전기적으로 접속된다.
버스(170)는 메모리 컨트롤러(100)의 구성 수단들 간의 정보를 전송하는 전송로를 의미한다.
프로세서(110)는 메모리 시스템(1000A)의 전반적인 동작을 제어한다. 세부적으로, 호스트로부터 수신되는 커맨드를 해독하고, 해독된 결과에 따른 동작을 수행하도록 메모리 시스템(1000A)을 제어한다.
프로세서(110)는 리드(read) 동작 시에는 리드 커맨드 및 어드레스를 메모리 장치(200)에 제공하고, 라이트(write) 동작 시에는 라이트 커맨드, 어드레스, 그리고 인코딩 처리된 코드워드를 메모리 장치(200)에 제공한다. 그리고, 프로세서(110)는 RAM(140)에 저장된 메타 데이터를 이용하여 호스트로부터 수신되는 논리적 주소를 물리적 페이지 주소로 변환시키는 처리를 수행한다.
RAM(140)에는 호스트로부터 전송된 데이터 및 프로세서(110)에서 생성된 데이터가 임시로 저장되거나 메모리 장치(200)에서 읽어낸 데이터가 임시로 저장된다. 또한, RAM(140)에는 메모리 장치(200)로부터 읽어낸 메타 데이터도 저장될 수 있다. 그리고, RAM(140)에는 메모리 장치(200)로부터 읽어낸 금지 패턴에 대한 정보, 스턱 비트 처리된 비트에 대한 위치 정보 등이 저장될 수 있다. RAM(200)은 DRAM, SRAM 등으로 구현될 수 있다.
메타 데이터(meta data)는 메모리 장치(200)를 관리하기 위하여 메모리 시스템(1000A)에서 생성된 정보이다. 관리 정보인 메타 데이터에는 논리적 주소(Logical Address)를 메모리 장치(200)의 물리적 페이지 주소(PPA)로 변환시키는데 이용되는 매핑(mapping) 테이블 정보가 포함되어 있다. 일 예로서, 메타 데이터에는 페이지 단위로 어드레스 매핑 처리를 수행하는데 필요한 페이지 매핑 테이블 정보가 포함될 수 있다. 또한, 메타 데이터에는 메모리 장치(200)의 저장 공간을 관리하기 위한 정보들도 포함할 수 있다.
호스트 인터페이스(150)는 메모리 장치(200)와 접속되는 호스트와의 데이터 교환 프로토콜을 구비하고 메모리 장치(200)와 호스트를 상호 연결한다. 호스트 인터페이스(150)는 ATA(Advanced Technology Attachment) 인터페이스, SATA(Serial Advanced Technology Attachment) 인터페이스, PATA(Parallel Advanced Technology Attachment) 인터페이스, USB(Universal Serial Bus) 또는 SAS(Serial Attached Small Computer System) 인터페이스, SCSI(Small Computer System Interface), eMMC(embedded Multi Media Card) 인터페이스, UFS(Unix File System) 인터페이스로 구현할 수 있다. 그러나 이는 예시일 뿐 이에 제한되는 것은 아니다. 세부적으로, 호스트 인터페이스(150)는 프로세서(110)의 제어에 따라서 호스트와 커맨드, 어드레스 및 데이터를 교환할 수 있다.
메모리 인터페이스(160)는 메모리 장치(200)와 전기적으로 연결되어 있다. 메모리 인터페이스(160)는 NAND 플래시 메모리 칩 또는 NOR 플래시 메모리 칩과의 인터페이스를 지원하도록 구성될 수 있다. 메모리 인터페이스(160)는 복수 개의 채널들을 통하여 소프트웨어 및 하드웨어 인터리브 동작들이 선택적으로 수행되도록 구성될 수도 있다.
프로세서(110)는 메모리 시스템(1000A)에 전원이 공급되면 메모리 장치(200)에 저장되어 있는 메타 데이터를 읽어내어 RAM(140)에 저장하도록 메모리 시스템(1000A)을 제어한다. 프로세서(110)는 메모리 장치(200)에서의 메타 데이터 변경을 발생시키는 동작에 따라서 RAM(140)에 저장된 메타 데이터를 업데이트 하도록 메모리 시스템(1000A)을 제어한다. 그리고, 프로세서(110)는 메모리 시스템(1000A)에서 파워 오프(POWER OFF) 되기 전에 RAM(140)에 저장되어 있는 메타 데이터를 메모리 장치(200)에 라이트하도록 메모리 시스템(1000A)을 제어한다.
프로세서(110)는 라이트 동작 시에는 호스트로부터 수신된 정보 워드를 인코더(120)에서 코딩 처리하고, 리드 동작 시에는 메모리 장치(200)로부터 읽어낸 데이터를 디코더(130)에서 디코딩 처리하도록 메모리 컨트롤러(100)를 제어한다.
인코더(120)는 호스트로 수신된 정보 워드에 패리티 비트들을 부가하여 코드워드를 생성한다. 예로서, RS 코드(Reed-Solomon code), 헤밍 코드(Hamming code), CRC(Cyclic Redundancy Code) 등과 같은 알고리즘을 이용하여 수신되는 정보 워드에 대한 패리티 비트들을 생성할 수 있다. 그리고, 생성된 코드워드로부터 초기 설정된 금지 패턴이 발생될 수 있는 심볼들의 집합을 검색하고, 검색된 금지 패턴이 발생될 수 있는 심볼들의 집합에 포함된 적어도 하나의 비트를 금지 패턴이 발생될 수 없도록 스턱(stuck) 비트로 처리한다. 이에 따라서, 금지 패턴이 발생될 수 있는 심볼들의 집합은 스턱 비트 처리에 의하여 금지 패턴이 생성될 수 없는 심볼들의 집합으로 변환된다. 예로서, 인코더(120)는 스턱 처리하여야 하는 비트의 제약조건을 주고 인코딩을 수행하고, 스턱 처리된 비트에 대하여 복원하는데 필요한 정보를 인코딩된 정보에 부가할 수 있다. 다른 예로서, 인코더(120)는 스턱 비트 처리된 비트에 대한 위치 정보를 생성시킬 수도 있다. 이와 같이 생성된 스턱 비트 처리된 비트에 대한 위치 정보는 해당 페이지의 오버헤드 저장 영역에 쓰여질 수 있다.
디코더(130)는 메모리 장치(200)로부터 읽어낸 데이터를 코드워드 단위로 디코딩 처리하여 정보 워드를 복원한다. 예로서, 읽어낸 데이터에 포함된 스턱 비트 처리된 비트에 대한 위치 정보를 이용하여 스턱 비트 처리된 비트를 스턱 비트 처리 이전 값으로 복원시킨다. 그리고 나서, 스턱 비트 처리 이전 값으로 복원된 코드워드를 패리티 비트를 이용하여 에러 검출 및 정정 처리를 수행한다.
도 2는 도 1에 도시된 메모리 장치(200)를 복수개의 메모리 칩들로 구성하여 복수의 채널(channel) 및 웨이(way)를 형성하는 메모리 시스템의 구성도이다.
도 2와 같이 구성된 메모리 시스템(1000B)으로 SSD(Solid State Drive)를 구현할 수 있다. SSD는 솔리드 스테이트 디스크(Solid State Disc)라고 칭해지기도 한다.
도 2를 참조하면, 메모리 시스템(1000B)은 메모리 장치(200')를 복수개의 플래시 메모리 칩들(201, 203)로 구현한 예를 보여준다.
메모리 시스템(1000B)은 N(N은 자연수)개의 채널을 갖고, 채널별로 4개의 플래시 메모리 칩들로 구성되는 예를 보여준다. 물론, 채널별로 구성되는 플래시 메모리 칩들의 개수는 다양하게 설정될 수 있다.
도 2에 도시된 메모리 컨트롤러(100)의 구성은 도 1에 도시된 메모리 컨트롤러(100)의 구성과 실질적으로 동일하므로 중복된 설명은 피하기로 한다.
도 3은 도 2에 도시된 메모리 시스템(1000B)의 채널 및 웨이의 구조를 예시적으로 보여주는 도면이다.
각각의 채널(CH1 ~ CHN))에는 복수 개의 플래시 메모리 칩들(201, 202, 203)이 전기적으로 연결될 수 있다. 각각의 채널(CH1 ~ CHN)은 대응되는 플래시 메모리 칩들(201, 202, 203)로 커맨드, 어드레스 및 데이터를 송수신할 수 있는 독립적인 버스를 의미할 수 있다. 서로 다른 채널에 접속된 플래시 메모리 칩들은 각각 독립적으로 동작할 수 있다. 각각의 채널에 접속된 복수의 플래시 메모리 칩들(201, 202, 203)은 복수 개의 웨이(way1 ~ wayM)들을 형성할 수 있다. 각 채널에 형성된 M개의 웨이에는 M개의 플래시 메모리 칩들이 접속될 수 있다.
예를 들어, 참조번호 201의 플래시 메모리 칩들은 1번 채널(CH1)에서 M개의 웨이들(way1 ~ wayM)을 형성할 수 있다. 1번 채널(CH1)의 M개의 웨이들(way1 ~ wayM) 각각에는 플래시 메모리 칩(201-1 ~ 201-M)이 접속될 수 있다. 이와 같은 플래시 메모리 칩들과 각각의 채널과 웨이의 형성 관계는 참조 번호 202의 플래시 메모리 칩들 및 참조번호 203의 플래시 메모리 칩들에도 적용될 수 있다.
웨이는 동일한 채널을 공유하는 플래시 메모리 칩들을 구분하기 위한 단위이다. 채널 번호와 웨이 번호에 따라서 각각의 플래시 메모리 칩들이 식별될 수 있다. 호스트로부터 제공된 리퀘스트(request)가 어느 채널의 어느 웨이의 플래시 메모리 칩에서 수행될 지는 호스트로부터 전달된 논리적 주소에 의해 정해질 수 있다.
도 4는 도 3의 메모리 장치(200')를 구성하는 하나의 플래시 메모리 칩(201-1)의 회로 구성을 예시적으로 보여주는 도면이다.
도 4에 도시된 바와 같이, 플래시 메모리 칩(201-1)은 셀 어레이(10), 페이지 버퍼(20), 제어 회로(30) 및 로우 디코더(40)를 포함할 수 있다.
셀 어레이(10)는 트랜지스터에 일정 전압을 인가하는 방식으로 데이터가 기입되는 영역이다. 셀 어레이(10)는 워드라인들(WL0~WLm-1) 및 비트라인들(BL0~BLn-1)이 교차한 곳에 형성된 메모리 셀들을 포함한다. 여기에서, m 및 n은 자연수이다. 도 4에서는 하나의 메모리 블록이 도시되어 있으나 셀 어레이(10)는 복수의 메모리 블록들을 포함할 수 있다. 각각의 메모리 블록들은 각 워드 라인들(WL0~WLm-1)에 대응되는 페이지들을 포함하고 있다. 그리고 페이지들 각각은 해당 워드라인에 연결된 복수의 메모리 셀들을 포함한다. 플래시 메모리 칩(201-1)은 블록 단위로 소거 동작을 수행하고, 페이지 단위로 프로그램 동작 혹은 읽기 동작을 수행한다.
메모리 셀 어레이(10)는 셀 스트링(cell string) 구조를 갖는다. 각각의 셀 스트링은 스트링 선택 라인(String Selection Line; SSL)에 연결되는 스트링 선택 트랜지스터(SST), 복수의 워드라인들(WLO ~ WLm-1)에 각각 연결된 복수의 메모리 셀들(MC0 ~ MCm-1), 그리고 접지 라인(Ground Section Line; GSL)에 연결된 접지 선택 트랜지스터(GST)를 포함한다. 여기에서, 스트링 선택 트랜지스터(SST)는 비트라인과 스트링 채널 사이에 연결되고, 접지 선택 트랜지스터(GST)는 스트링 채널과 공통 소스 라인(Common Source Line; CSL) 사이에 연결된다.
페이지 버퍼(20)는 복수의 비트라인들(BL0~BLn-1)을 통해 셀 어레이(10)에 연결된다. 페이지 버퍼(20)는 선택된 워드라인에 연결된 메모리 셀들에 기입할 데이터를 임시로 저장하거나 또는 선택된 워드라인에 연결된 메모리 셀들로부터 독출된 데이터를 임시로 저장한다.
제어 회로(30)는 프로그램(program) 또는 리드(read) 동작 그리고 소거 동작에 필요한 각종 전압들을 생성하고, 플래시 메모리 칩(201-1)의 제반 동작을 제어한다.
로우 디코더(40)는 선택 라인들(SSL, GSL) 및 복수의 워드라인들(WL0~WLm-1)을 통해 셀 어레이(10)에 연결된다. 로우 디코더(40)는 프로그램 동작 또는 리드 동작 시 어드레스를 입력받고, 입력된 어드레스에 따라 어느 하나의 워드라인을 선택한다. 여기에서 선택된 워드라인에는 프로그램 동작이 수행되거나 또는 리드 동작이 수행될 메모리 셀들이 연결되어 있다.
또한, 로우 디코더(40)는 선택된 워드라인, 비선택된 워드라인들, 그리고 선택 라인들(SSL, GSL)로 프로그램 동작 또는 리드 동작에 필요한 전압들(예를 들어, 프로그램 전압, 패스 전압, 읽기 전압, 스트링 선택 전압, 접지 선택 전압)을 인가한다.
각각의 메모리 셀은 한 비트의 데이터 혹은 2비트 이상의 데이터를 저장할 수 있다. 하나의 메모리 셀에 한 비트의 데이터를 저장하는 메모리 셀은 싱글 레벨 셀(Single Level Cell; SLC)이라고 불린다. 그리고, 하나의 메모리 셀에 2비트 이상의 데이터를 저장하는 메모리 셀은 멀티 레벨 셀(Multi Level Cell; MLC)이라고 불린다. 싱글 레벨 셀은 문턱 전압에 따라 소거 상태(Erase State) 또는 프로그램 상태(Program State)를 갖는다.
도 5는 도 4에 도시된 셀 어레이에 포함된 메모리 셀의 일 예를 보여주는 단면도이다.
도 5를 참조하면, 기판(SUB) 상에 소스(S) 및 드레인(D)이 형성되고, 소스(S)와 드레인(D)의 사이에는 채널 영역이 형성될 수 있다. 채널 영역의 상부에는 플로팅 게이트(FG)가 형성되는데, 채널 영역과 플로팅 게이트(FG)의 사이에는 터널링(tunneling) 절연층과 같은 절연층이 배치될 수 있다. 플로팅 게이트(FG)의 상부에는 컨트롤 게이트(CG)가 형성되는데, 플로팅 게이트(FG)와 컨트롤 게이트(CG)의 사이에는 블로킹(blocking) 절연층과 같은 절연층이 배치될 수 있다. 기판(SUB), 소스(S), 드레인(D) 및 컨트롤 게이트(CG)에는 메모리 셀(MCEL)에 대한 프로그램, 소거 및 독출 동작에 필요한 전압들이 인가될 수 있다.
플래시 메모리 장치에서는 메모리 셀(MCEL)의 문턱 전압(threshold voltage, Vth)의 구별에 의해 메모리 셀(MCEL)에 저장된 데이터가 독출될 수 있다. 이때, 메모리 셀(MCEL)의 문턱 전압(Vth)은 플로팅 게이트(FG)에 저장된 전자(electron)의 양에 따라 결정될 수 있다. 구체적으로, 플로팅 게이트(FG)에 저장된 전자가 많을수록 메모리 셀(MCEL)의 문턱 전압은 높아질 수 있다.
도 6은 싱글 레벨 셀의 소거 상태 및 프로그램 상태에 대한 문턱 전압(Vth) 분포를 보여주는 도면이다. 도 6을 참조하면, 메모리 셀들은 소거 상태(E) 및 프로그램 상태(P) 중의 하나의 상태를 가질 수 있다. 즉 2가지 상태들 중의 하나의 상태를 가질 수 있다.
도 7은 2비트 멀티 레벨 셀의 소거 상태 및 프로그램 상태들에 대한 문턱 전압 분포를 보여주는 도면이다. 도 7을 참조하면, 메모리 셀들은 소거 상태(E) 및 제1,2,3프로그램 상태들(P1, P2, P3) 중의 하나의 상태를 가질 수 있다. 즉, 4가지 상태들(E, P1, P2, P3) 중의 하나 상태를 가질 수 있다. 문턱 전압은 E -> P1 -> P2 -> P3 순으로 높아진다는 것을 알 수 있다. 도 7에서 Vr1 ~ Vr3은 리드 전압들을 나타낸다.
도 8은 2비트 멀티 레벨 셀의 프로그램 동작을 설명하는 도면이다.
2비트 멀티 레벨 셀에서의 하나의 메모리 셀에 프로그램되는 2개의 비트들은 상위 비트(MSB)와 하위 비트(LSB)를 포함할 수 있다. 상위 비트에 대한 페이지와 하위 비트에 대한 페이지는 메모리 셀 어레이에서 동일한 워드라인에 연결되는 메모리 셀들에 프로그램된다. 다만, 상위 비트와 하위 비트는 서로 다른 2개의 다른 페이지에 포함되므로, 하나의 메모리 셀에 프로그램되는 상위 비트와 하위 비트는 논리적으로 서로 다른 페이지 어드레스에 의하여 프로그램된다.
도 8을 참조하면, 하나의 워드라인에서 상위 비트(MSB)를 구성하는 페이지에 대한 프로그램을 수행한 후에, 상위 비트를 구성하는 페이지의 셀 산포로부터 하위 비트(LSB)를 구성하는 페이지에 대한 프로그램을 수행할 수 있다.
도 8에서는 상위 비트(MSB)에 대한 페이지를 제1페이지로 예시하였고, 하위 비트(LSB)에 대한 페이지를 제2페이지로 예시하였다. 위에서 언급한 바와 같이, 제1,2페이지는 하나의 워드라인에 포함된 메모리 셀들에 프로그램된다.
프로그램이 수행되기 전에 모든 메모리 셀들은 소거 상태(E)를 갖는다. 복수의 메모리 셀들에 대한 제1페이지의 프로그램이 수행되면, 해당 비트의 논리 값이 "0"인 메모리 셀들은 프로그램 상태(P)를 갖게 된다. 해당 비트의 논리 값이 "1"인 메모리 셀들은 소거 상태(E)를 유지한다.
그 후, 제2페이지의 프로그램이 수행되면, 메모리 셀들은 소거 상태(E), 제1,2,3프로그램 상태들(P1, P2, P3) 중의 하나의 상태를 갖게 된다. 이 때, 제1페이지에서 비트의 논리 값이 "1"이고 제2페이지에서 비트의 논리 값이 "1"인 메모리 셀들은 소거 상태(E)를 유지하고, 제1페이지에서 비트의 논리 값이 "1"이고 제2페이지에서 비트의 논리 값이 "0"인 메모리 셀들은 제1프로그램 상태(P1)를 갖도록 프로그램된다. 또한, 제1페이지에서 비트의 논리 값이 "0"이고 제2페이지에서 비트의 논리 값이 "0"인 메모리 셀들은 제2프로그램 상태(P2)로 프로그램되고, 제1페이지에서 비트의 논리 값이 "0"이고 제2페이지에서 비트의 논리 값이 "1"인 메모리 셀들은 제3프로그램 상태(P3)로 프로그램된다.
따라서, 2비트 멀티 레벨 셀에서의 소거 상태(E)를 갖는 메모리 셀은 "11", 제1프로그램 상태(P1)를 갖는 메모리 셀은 "10", 제2프로그램 상태(P2)를 갖는 메모리 셀은 "00", 제3프로그램 상태(P3)를 갖는 메모리 셀은 "01"의 비트 값을 갖게 된다.
도 9는 플래시 메모리 칩의 내부 저장 구조를 보여주는 개념도이다.
도 9에 도시된 바와 같이, 플래시 메모리 칩(201-1)의 내부 구조는 복수의 블록들로 구성되고, 각 블록들은 복수의 페이지들로 이루어져 있다.
플래시 메모리 칩(201-1)에서 데이터의 기입 및 독출은 페이지 단위로 수행되고, 전기적 소거는 블록 단위로 이루어진다. 또한, 기입 전에 블록의 전기적 소거 작업이 요구된다. 이에 따라서, 덮어쓰기가 불가능하다.
덮어쓰기가 불가능한 메모리 장치에서는 사용자 데이터를 사용자가 원하는 물리적 영역에 기입할 수 없다. 따라서 호스트로부터 기입 또는 독출을 위하여 액세스를 요청받는 경우, 기입 또는 독출이 요청된 영역을 나타내는 논리적 주소를 실제로 데이터가 저장되어 있는 또는 데이터가 저장될 물리적 영역을 나타내는 물리적 페이지 주소로 변환시키는 주소 변환 동작이 필요하다.
메모리 시스템(1000A 또는 1000B)에서 논리적 주소를 물리적 페이지 주소로 변환시키는 과정을 도 10을 참조하여 설명하기로 한다.
도 10은 메모리 시스템(1000A 또는 1000B)의 소프트웨어 구조를 보여주는 블록도이다. 일 예로서, 도 10에서는 메모리 장치(200)를 플래시 메모리로 구현한 경우의 소프트웨어 구조를 보여준다.
도 10을 참조하면, 메모리 시스템(1000A 또는 1000B)은 애플리케이션 계층(101), 파일 시스템 계층(102), 플래시 변환 계층(103), 그리고 플래시 메모리 계층(104)순으로 소프트웨어 계층 구조를 갖는다.
애플리케이션 계층(101)은 호스트에서의 사용자 입력에 응답하여 데이터를 가공하는 펌웨어를 의미한다. 애플리케이션 계층(101)에서는 사용자의 입력에 응답하여 사용자 데이터를 처리하고, 처리된 사용자 데이터를 플래시 메모리 칩에 저장하기 위한 커맨드를 파일 시스템 계층(102)으로 전달한다.
파일 시스템 계층(102)에서는 애플리케이션 계층(101)으로부터의 전달된 커맨드에 응답하여, 사용자 데이터가 저장될 논리적 주소를 할당한다. 파일 시스템(102)의 일종으로 FAT(File Allocation Table) 파일 시스템, NTFS 등이 있다.
플래시 변환 계층(Flash Translation Layer; FTL, 103)에서는 파일 시스템 계층(102)으로부터 전달받은 논리적 주소를 플래시 메모리 칩에서의 읽기/쓰기 동작을 위한 물리적 페이지 주소로의 변환 과정을 수행한다. 플래시 변환 계층(103)에서는 메타 데이터에 포함된 매핑 정보를 이용하여 논리적 주소를 물리적 페이지 주소 변환할 수 있다. 플래시 변환 계층(Flash Translation Layer; FTL, 103)에서의 주소 변환 동작은 메모리 컨트롤러(100)의 프로세서(110)에서 수행될 수 있다.
플래시 메모리 계층(104)에서는 논리적 주소로부터 변환된 물리적 페이지 주소를 액세스하여 데이터를 저장하거나 독출하기 위한 제어 신호들을 발생한다.
다시 도 4를 참조하면, 셀 어레이(10)의 인접한 셀들 사이의 커플 링 효과로 인해, 특정 데이터 패턴이 잘못 읽혀질 수 있다. 저장 구조가 2차원(2D)인 경우에, 셀은 수평 및 수직적으로 이웃한 셀들에 커플링 유도된다. 예로서, 2비트 멀티 레벨 셀에서 수평 방향으로 P3-E-P3 패턴은 높은 확률의 잘못된 판독을 야기시킬 수 있다. 본 발명이 속한 기술 분야에서 통상의 지식이 있는 사람에게 분명 같은 수직 패턴(즉, 동일한 비트 라인에 시이퀀스 P3-E-P3) 오류 확률의 측면에서 또한 문제가 될 수 있다. 그리고, 예를 들어, 2D 패턴에서 소거 셀이 하나 이상의 P3 상태의 셀들로 둘러싸여 있을 수 있다. 2D 패턴은 위험한 패턴(진부하게 1D P3-E-P3 수평 및 수직 패턴을 포함)으로 간주 될 수 있다.
참고적으로, 원치 않는 패턴의 이러한 문제의 해결을 위하여 제한된 코딩을 사용할 수 있으나, 다음과 같은 단점이 있다.
첫 번째는, 원치 않는 패턴의 모든 발생을 제거하려고 시도하는 것으로서 코드 레이트가 감소되는 단점이 있다.
두 번째는, 상태-스플리팅 알고리즘(state-splitting algorithm)을 사용하는 제약 코딩 이론에 의한 해결 방법으로서, 높은 코드 레이트를 발생시키나 계산량이 증가되는 단점이 있으며 비현실적일 수 있다.
세 번째는, 제한된 코딩은 디코딩 되기 위하여 WL에 있는 모든 페이지들의 정보를 필요로 하거나 상당한 레이트 패널티가 발생될 수 있다.
수직 제약에 대한 코딩은 디코딩 시에 여러 워드라인들을 읽을 필요가 있는 단점이 있다. 랜덤 액세스는 단일 페이지를 읽을 때 감내하기 어렵게 여러 워드라인들을 읽을 필요가 있다.
비록 1D 및 2D 패턴을 논의했지만, 보다 높은 차원에서 제약이 발생될 수 있다. 예로서 수직 NAND라고 기술에서는 여러 블록이 메모리 다이에 실리콘의 총 양을 줄이기 위해 다른 "수직"의 상단에 하나를 더 배치한다. 이는 3D 제약을 야기 할 수 있는 입체 (3D) 구조를 만든다. 이와 같은 3D 구조의 메모리에서도 위와 같은 문제들은 내포하고 있다.
본 발명에서는 위와 같은 단점들을 제거하는 다차원 제약을 갖는 메모리 시스템에 데이터를 저장하는 방법을 제안한다. 즉, 본 발명에서는 이와 같은 커플링 유도에 따른 데이터 읽기 동작에서의 오류 발생을 야기시킬 수 있는 데이터 패턴을 금지 패턴으로 설정하고, 코딩 과정에서 금지 패턴이 발생되는 것을 제한하도록 스턱 비트 처리를 수행한다. 이에 대해서는 아래에서 상세히 설명되어질 것이다.
본 발명의 기술적 사상의 개념은 금지 데이터 패턴 목록에 의하여 파라미터로 나타내는 제어 메커니즘을 설계하는 것이다. 제어 메커니즘은 두 가지 액션이 있다.
1. 제약받지 않는 데이터 입력 스트림을 수용하고, 페이지 단위 라이팅 처리 절차를 이용하여 다음과 같은 속성들 중 하나를 갖는 스트림으로 변환한다.
(a) 원하지 않는 패턴이 발생하지 않는다.
(b) 원하지 않는 패턴의 제어된 발생 개수를 아래와 같은 2가지들 중의 하나에 의해 파라미터로 나타낸다.
(i) 셀들의 총 개수로부터 발생의 임의의 비율.
(ii) 원하지 않는 패턴의 발생이 제거되는 임계 기반의 우선순위 메커니즘 디코딩
2. 위에서 생성된 제약 스트림을 읽고, 원하는 페이지의 정보만을 검색하여 읽어내는 방식으로 페이지 별로 오리지널 제약받지 않는 데이터 입력 스트림을 복구한다.
위의 인코딩 스텝은 추가적으로 블록들에서 전체 다차원 데이터 구조의 세그먼트들로 구성되며, 코딩 순서로 구성된다. 제약들은 구성 코드들로서 스턱(stuck) 비트들에 대한 이진 선형 코드들을 이용하여 완화된다.
이에 대한 설명은 아래에서 상세히 설명되어질 것이다.
우선, 본 발명의 설명에 관련된 몇 가지 기본적인 용어들을 다음과 같이 정의한다.
기본적인 데이터 단위(elementary data unit)는 전체 데이터 구조를 구성하는 가장 원시적인 데이터 단위로 정의한다. 예를 들어, NAND 플래시에서 기본적인 데이터 단위는 하나의 메모리 셀에 저장되는 심볼이 될 수 있다. 또한, 그것은 보다 높은 표기의 심볼로 저장된 단일 비트로 정의 할 수 있다.
차원들(dimensions)은 어떠한 기본적인 데이터 단위들도 정수의 벡터(또는 인덱스)에 의해 참조될 수 있다. 벡터의 각 엔트리는 차원에 관련된다.
예를 들어, NAND 플래시 메모리에서 기본적인 데이터 단위를 메모리 셀에서 심볼로 정의한다. 심볼은 차원이 2인 경우에 비트 라인(BL)과 워드라인(WL) 번호들에 의하여 인덱스 될 수 있다. 인덱싱의 레벨은 데이터에서의 제약들의 타입과 관련된다. 만일, 블록들 사이의 상관이 있으면, 셀들은 블록 번호로 인덱스될 수 있고, 차원은 3이 될 수 있다. 알고리즘들에 있어서, 기본적인 데이터 단위들은 비트들일 수 있고, 비트는 WL, BL 및 페이지 번호들로 인덱스될 수 있다.
다른 방안으로 차원이 3인 경우에 기본적인 데이터 단위는 몇몇 순서에 따라 블록에서의 페이지들의 번호로 단순화될 수 있고, 페이지 및 BL 번호들로 비트가 표시될 수 있다.
때때로 프로그래밍 및 또는 읽기 중에 데이터의 양 및 구조에 대한 제한들이 있을 수 있다. 예를 들어, 낸드 플래시 메모리에서 읽기 시간을 줄이기 위하여 요청된 정보에 포함된 페이지만을 읽혀지는 단일 페이지 제한이 강화될 수 있다. 프로그래밍에 대한 제한은 프로그래밍 버퍼 크기에 대한 제한에서 벗어날 수 있다.
본 발명의 개념에 따르면, 이진 선형 코드들은 구성 코드들로서 사용된다. 코딩 규칙들로 프로그래밍/읽기에서의 전술한 제한들이 변환될 필요가 있다. 예비 단계는 다음과 같다.
독립적인 차원(independent dimension)은 프로그램/읽기 제한들을 위반하지 않고 기본 코드워드들을 부호화할 수 있는 차원을 의미한다.
예로서, NAND 플래시를 고려하면, 독립적인 차원이 워드라인(WL)인 단일 페이지 요구 사항에서 기본적인 데이터 단위는 비트이다
다시 도 1을 참조하면, 인코더(120)에서 수행되는 본 발명에서 제안하는 인코딩 알고리즘에서 대하여 설명하기로 한다.
본 발명에서 제안하는 인코딩 알고리즘은 다음의 4단계로 수행될 수 있다.
<단계 1>
단계 1에서 데이터 구조를 M개 세그먼트들로 분할하고, 각 세그먼트에 번호를 할당한다. 각 세그먼트는 독립적인 차원에 속하는 기본적인 데이터 단위들을 포함하여야 한다.
<단계 2>
단계 2에서 숫자 1, ..., M으로 치환되는 인코딩 순서를 정의한다.
<단계 3>
단계 2에 의해 표시된 순서에 의하여 세그먼트들을 이동한다. i 번째 세그먼트에 대하여, 특정 값이 데이터 제약의 불가피한 위반을 일으킬 수 있는 세그먼트에 있는 모든 위치들을 찾는다. 이 세그먼트에 저장 될 수 있는 데이터에서의 제약들의 집합을 제공한다.
<단계 4>
단계 3에서 파생된 제약 조건들을 완화시키면서, 세그먼트에 필요한 정보를 저장하도록 스턱(stick) 셀들에 대한 코드를 사용한다.
이와 같은 알고리즘의 정의에 의해, 특히 단계 3 및 4, 그것은 어떤 제약 조건이 충족될 수 있다는 것이 분명하다. 그것에 대하여 어떠한 대가를 지불해야 하는가는 정보 레이트가 어떠한 가에 관련될 수 있다.
본 발명은 단계 1의 세그먼트에 민감할 수 있다. 즉, 다른 세그먼트들은 다른 정보 레이트들을 초래할 수 있다. 따라서, 특정 제약 조건에 대한 코드 설계의 중요한 부분은 레이트를 극대화시키는 데이터 구조의 세그먼트 및 데이터 구조의 순서에 대하여 검색하는 것이다.
다음으로, 본 발명에서 제안하는 파티셔닝의 일 예인 근접- 최적의 파티셔닝(near-optimal partitioning) 알고리즘에 대하여 설명하기로 한다.
가능한 모든 파티셔닝에 대한 검색은 확실히 엄청나게 복잡하다. 본 발명에서는 최적의 결과를 얻을 수 있는 간단한 파티셔닝을 제안한다. 귀착점으로 다음과 같은 조건을 정의할 수 있다.
제약 범위(constraint span)는 단일 제약 조건에 의해 영향을 받는 기본적인 데이터 단위의 수로 정의된다.
예를 들어, 도 17 및 18을 참조하면, 금지 패턴 P3-E-P3은 6 비트 또는 3 심볼의 범위(span)를 유도한다. 그리고, 도 19를 참조하면, 단일 P3이 소거된 셀 주변에 허용되는 2D 패턴은 18 비트 또는 9 심볼의 범위를 유도한다.
예상 제약 범위의 집합 G는 단일 제약에 의하여 영향을 받는 셀들의 위치를 나타내는 길이-n 벡터들을 포함한다. vi(여기에서, i=1, ...k, k=??G??)에 의하여 G에서의 벡터들을 표시한다.
그러면, j차 차원에서 예상 제약 범위는 수학식 1과 같이 정의된다.
[수학식 1]
Figure pat00001
여기에서, [vi]j는 벡터 vi의 j번째 요소를 나타낸다.
이제 파티션 방법은 쉽게 설명될 수 있다. s는 독립적인 차원에서 예상된 제약의 범위를 나타낸다. 그런 다음, 독립적인 차원을 다음과 같이 s개 동일한 세그먼트들로 파티셔닝 한다. 즉, i번째 세그먼트는 위치 i, i+s, i+2s, ... 에 있는 기본적인 데이터 단위들로 구성된다.
예를 들어, 페이지의 파티셔닝이 없는 경우에 WL 축에서 수직적인 P3-E-P3 제약의 예상 범위 1을 갖는다. 이에 따라서, 전체 페이지는 한번에 부호화된다.
그리고, 세그먼트 분할 처리 후에, 부호화 순서는 컴퓨터 검색과 일부 대칭 속성들을 이용하여 찾아낼 수 있다.
인코딩 알고리즘은 페이지 단위로 진행된다. i 번째 페이지는 각 셀의 i 번째 비트를 취해서 형성된 n 비트의 집합이다.
기본적인 데이터 단위는 비트이다. 페이지는 m개의 동일한 코드워드들로 파티셔닝 되며, 각 코드워드에 있는 비트들은 m 셀들에 의하여 분리된다. 여기에는 많은 등가적인 순서들이 존재한다. 하나의 순서에 따르면, 워드라인(WL) 0의 첫 번째 페이지에서 시작하여 모든 세그먼트들에 대하여 스턱 비트들에 대한 코드를 차례대로 적용하고, 동시에 과거 코딩된 비트들의 고정된 값들은 현재 코드워드에 대한 스턱 비트들을 결정하기 위한 참고 정보로서 제공된다.
블록 전체에 쓰여질 때까지 페이지 0에 대한 코딩 후에 두 번째 페이지로 이동하여 같은 동작을 수행한다. 일반적으로, i 번째 세그먼트를 검사할 때,
Figure pat00002
프로그래밍된 페이지가 존재하고, i 번째 세그먼트들에 있는 각 비트들에 대하여 결정되지 않은 비트는 다음 2가지 상태들 중의 하나에 있게 된다.
(1) 해당 비트가 제약받지 않을 수 있다. 즉, 해당 비트에 1 또는 0 중 하나를 쓰더라도 어떠한 바람직하지 않은 심볼 패턴을 생성시키지 않는다.
(2) 금지 패턴을 발생시키지 않게 하기 위하여 해당 비트가 1 또는 0으로 강요될 수 있다.
본 발명에서는 다음과 같은 제약이 있는 스턱 비트들에 대한 코드를 적용할 수 있다.
어떤 제약 조건에 대한 위의 파티셔닝은 너무 세밀하고, 조잡하며, 등가적인 파티셔닝이 정의될 수 있다. 제약이 없는 많은 코드 블록들이 발생되기 때문에, 이러한 코드 블록들은 코딩되지 않은 블록으로 단일하게 연합될 수 있다.
n MLC 플래시 셀들로 가정하자. 즉, 각 셀에서 레벨의 개수 q = 4이고, 각 셀에 저장되는 비트의 수 b = 2이다. 모든 셀의 4가지 상태는 E, P1, P2, P3으로 표시하고, 비트들은 Eㅡ> 11, P1ㅡ> 10, P2 ㅡ> 00, P3 ㅡ> 01과 같은 방식으로 매핑될 수 있다. 첫 번째 페이지가 왼쪽 비트에 해당되고, 두 번째 페이지는 오른쪽 비트에 해당된다.
우선, 본 발명의 실시 예에 따른 수평 패턴에서 원하지 않는 패턴인 P3-E-P3의 발생 수를 줄이는 알고리즘에 대하여 설명하기로 한다.
본 발명에서는 3개의 인접 셀들에서 즉, m=3에서 원하지 않는 패턴인 P3-E-P3의 발생 수를 줄이는 것을 목표로 한다. 위에서 제안하는 방법을 사용하고, 금지 패턴에 상응하는 데이터가 존재할 수 있는 5개의 첫 세그먼트들(제1페이지의 3개 세그먼트들 및 제2페이지의 2개 세그먼트들)에 대하여 다음과 같이 처리할 수 있다.
코딩 방식의 첫 번째 단계로서, WL은 두 그룹으로 분할된다. 첫 번째 그룹은 집합 U에 포함된 셀들로 구성되고, 두 번째 그룹은 상보적인 셀들로 구성된다.
집합 U는
Figure pat00003
로 정의된다. 즉, 3으로 나눌 수 있는 1과 N 사이의 모든 정수들로 정의된다. 상보적인 집합은 V로 표시된다. 정보 벡터는 D로 표시된다. 심볼들은 D1 및 D2로 표시되는 2 정보 비트 스트림으로 구성된다. 부호화된 심볼들 벡터는 C로 표시되고, 그것의 구성 페이지들은 C1 및 C2로 표시된다. 인코딩은 다음과 같이 행해진다.
1. C [V] = D [V]. 즉, 집합 V의 위치에 있는 오리지널 정보를 쓴다.
2. 집합 U를 2개의 동일하거나 거의 동일한 집합들로 분할한다. 수신기와 송신기가 모두 동기화될 때 어떠한 파티셔닝도 선택될 수 있다. U1과 U2에 의한 결과 집합으로 나타낸다.
3. C1 [U1] = D1 [U1], C2 [U2] = D2 [U2]로 설정한다. 즉, 집합 U1의 위치에 있는 첫 번째 페이지에 해당하는 비트들은 자유롭게 쓰여진다. 마찬가지로, 집합 U2의 위치에 있는 두 번째 페이지에 해당하는 비트들은 자유롭게 쓰여진다.
4. 모든
Figure pat00004
에 대하여, u = (D[i-1], D1[i], D[i +1])를 검사한다. 만일 u = [P3, 1, P3]이면, 그 때 비트 D2[i]는 0에 스턱(stuck)되어야 한다.
5. 모든
Figure pat00005
에 대하여, u = (D[i-2], D1[i-1], D[i])를 검사한다. 만일 u = [P3, E, 0]이면, 그 때 비트 D2[i]는 0에 스턱되어야 한다.
6. 모든
Figure pat00006
에 대하여, u = (D[i], D1[i+1], D[i+2])를 검사한다. 만일 u = [0, E, P3]이면, 그 때 비트 D2[i]는 0에 스턱되어야 한다.
7. 모든
Figure pat00007
에 대하여, u = (D[i-1], D1[i], D[i+1])를 검사한다. 만일 u = [P3, 1, P3]이면, 그 때 비트 D1[i]는 0에 스턱되어야 한다.
8. 모든
Figure pat00008
에 대하여, u = (D[i-2], D1[i-1], D[i])를 검사한다. 만일 u = [P3, E, 1]이면, 그 때 비트 D1[i]는 1에 스턱되어야 한다.
9. 모든
Figure pat00009
에 대하여, u = (D[i], D1[i+1], D[i+2])를 검사한다. 만일 u = [1, E, P3]이면, 그 때 비트 D1[i]는 1에 스턱되어야 한다.
10. 모든 스턱 비트들에 대한 코드를 이용하여, 스텝 4-6에서 획득한 스턱 비트 정보에 따라 정보 시퀀스 D2[U1]을 인코딩한다. 필요한 오버 헤드는 추가적인 s 셀들의 LSB에서 유지되어야 한다. s는 코드의 달성할 수 있는 레이트와 비트에서의 스턱의 수에 따라서 선택되어야 한다.
11. 모든 스턱 비트들에 대한 코드를 이용하여, 스텝 7-9에서 획득한 스턱 비트 정보에 따라 정보 시퀀스 D1[U2]를 인코딩한다. 필요한 오버 헤드는 추가적인 s 셀들의 MSB에서 유지되어야 한다. s는 코드의 달성할 수 있는 레이트와 스턱 비트들의 수에 따라서 선택되어야 한다.
위치
Figure pat00010
에서 비트에 대한 스턱되어야 할 확률은 3/32 이상이다. 파티셔닝 기술은 충분히 큰 WL에 대한 셀들에서 오버헤드가
Figure pat00011
에 근접하게 2개 페이지들의 오버헤드 사이에 밸런스를 유지하도록 스텝 2에서 유도할 수 있다. 여기에서,
Figure pat00012
는 사용된 코드의 용량에 대한 갭을 나타낸다.
N에 의한 WL의 길이를 표시하면, 점근적 레이트는
Figure pat00013
이다. 위에서 설명한 바와 같이, 용량
Figure pat00014
에 매우 근접하게 동작할 수 있는 합리적인 인코딩 복잡성을 갖는 코드를 갖는다. 이러한 코드에 대한 본 발명에서 제안하는 방법의 점근적 레이트는 0.9844 비트/페이지이다. 단순한 정규 코드를 사용하면,
Figure pat00015
=1.21, 그리고 레이트는 0.9811 비트/페이지가 된다.
코딩이 페이지 방향으로 이루어지기 때문에, 단일 페이지 읽기를 사용하여 디코딩할 수 있으며, 이는 중요한 특징이다.
다음으로, 본 발명의 다른 실시 예에 따른 수직 패턴에서 원하지 않는 패턴인 P3-E-P3의 발생 수를 줄이는 알고리즘에 대하여 설명하기로 한다.
셋업은 사전에 된다. 수직 패턴은 제한 범위(spam)가 m이라고 가정하자. 먼저 WL 차원(독립 차원)에서 제한의 추정 범위를 관찰한다. 확실하게 그것이 1(수직 제약)이며, 따라서 블록이 페이지들로 파티셔닝된다. 즉, 각 코드워드는 전체 페이지가 된다. 페이지 i를 인코딩할 때, 아래로부터
Figure pat00016
는 현재 페이지 WL로부터 첫 번째 mod(i,b)로서 고정된다. 각 비트에 대하여 아래로부터 m-1 WLs를 관찰하고, 그것에 근거하여 비트에 스턱이 되는지 여부를 결정한다.
예를 들어, 수직 P3-E-P3 패턴의 경우에 대하여 설명하기로 한다. 표기법은 수평 패턴의 예에서와 같다. 여기에서, U는 1과 N (N은 WL 길이) 사이의 모든 정수들의 집합을 나타냅니다. 우리는 첨자로 WL 번호를 나타낸다, 예를 들어, C3[7]은 WL 번호 3에서 일곱 번째 부호화된 심볼이고, Dl5[2]는 WL 5의 정보 MSB 페이지에 있는 2번째 비트이다. 블록에 L WLs가 있다고 가정하자.
인코더(120)에서의 인코딩 동작은 다음과 같이 수행된다.
1. C1 = D1, C2 = D2. 즉, WL 1 및 2는 자유롭게 쓴다. 그리고, WL 3은 다음과 같이 행한다.
2. 집합 U를 2개의 동일하거나 거의 동일한 집합들로 분할한다. 수신기와 송신기가 모두 동기화될 때 어떠한 파티셔닝도 선택될 수 있다. U1과 U2에 의한 결과 집합으로 나타낸다.
3. C1 [U1] = D1 [U1], C2 [U2] = D2 [U2]로 설정한다. 즉, 집합 U1의 위치에 있는 첫 번째 페이지에 해당하는 비트들은 자유롭게 쓴다. 마찬가지로, 집합 U2의 위치에 있는 두 번째 페이지에 해당하는 비트들은 자유롭게 쓴다.
4. WL j에서 모든
Figure pat00017
에 대하여,
Figure pat00018
를 검사한다. 만일 u = [P3, E, 0]이면, 그 때 비트 D2j[i]는 0으로 스턱 비트 처리한다.
5. WL j에서 모든
Figure pat00019
에 대하여,
Figure pat00020
를 검사한다. 만일 u = [P3, E, 1]이면, 그 때 비트 D1j[i]는 1로 스턱 비트 처리한다.
6. 모든 스턱 비트들에 대한 코드를 이용하여, 스텝 4에서 획득한 스턱 비트 정보에 따라 정보 시퀀스 D2j[U1]을 인코딩한다. 필요한 오버 헤드는 추가적인 s 셀들의 LSB에서 유지되어야 한다. s는 코드의 달성할 수 있는 레이트와 스턱 비트들의 개수에 따라서 선택될 수 있다.
11. 모든 스턱 비트들에 대한 코드를 이용하여, 스텝 5에서 획득한 스턱 비트 정보에 따라 정보 시퀀스 D1j[U2]을 인코딩한다. 필요한 오버 헤드는 추가적인 s 셀들의 MSB에서 유지되어야 한다. s는 코드의 달성할 수 있는 레이트와 스턱 비트들의 수에 따라서 선택될 수 있다.
이 코딩 방식은 마지막 2 WL에 관한 정보는 RAM(140)에 쓰거나 또는 메모리 장치(200)를 읽는 동작에 의하여 메모리 컨트롤러(100)의 인코더(120)에서 이용할 수 있다. 그러나, 디코더(130)가 디코딩하고자 하는 페이지보다 다른 페이지에 관한 정보를 알 필요가 없다. 위에서 설명한 바와 유사한 방식으로,
Figure pat00021
의 레이트를 달성할 수 있다. 즉, 수평 P3-E-P3 회피 코드로 정확히 같은 속도를 얻을 수 있다.
다음으로, 본 발명의 또 다른 실시 예에 따른 2D 패턴 회피 알고리즘에서 대하여 설명하기로 한다.
수직 및 수평 패턴은 모두 1 차원(1D) 문제들이다. 이 알고리즘은 소거 상태 산포의 커플링-유도된 확장의 오리지널 문제를 2개의 1D 문제들로 분리하지 않고 해결하는 방안이다. 이는 수평 및 수직 커플링은 산포의 확대에 기여하고, 비록 수직 커플링 계수는 수평 커플링 계수보다 크지만 수평 커플링 계수도 무시할 수 없다. 따라서, 위험한 패턴들의 보다 완벽한 취급은 1D 패턴들은 만족하는 결과들의 제공하는데 불충분하기 때문에 모든 해로운 2D 패턴을 고려하여야 한다.
정보 블록의 정교한 파티셔닝과 함께 스턱 비트들에 대한 코딩은 해당 작업을 완료할 수 있게 한다. 2D 경우에 대한 용량은 알려지지 않았기 때문에 용량에 대한 레이트를 비교할 수 없다. 그러나, 몇가지 경험적 고려들을 이용하면 레이트가 향상된다는 사실을 알 수 있다.
예로서, 소거 상태 주변에는 단지 하나의 P3이 포함될 수 있도록 프로그램 될 수 있는 경우를 고려한다. 이 제약 조건의 범위는 9 심볼들이고, WL(또는 페이지) 차원에서 예상된 제한의 범위는 3 심볼들이다. 이러한 지침에 따르면, 각 페이지는 수평 경우에서 3 코드워드들로 파티셔닝된다. 여기에 다시, WL에서 첫 번째 페이지는 자유롭게 쓰여질 수 있으며, 금지 심볼들은 P3 또는 E가 될 수 있는데 이는 두 번째 페이지에 근거하여 단독으로 제거될 수 있다. 두 번째 페이지의 i번째 코드워드(i=0,1,2)를 프로그래밍할 때, 오른쪽으로 2-i 심볼들은 아직 결정되지 않은데 비하여 아래로부터 2 WL들은 왼쪽으로 i 심볼로서 고정된다. 디코더가 각 비트에서의 스틱(stick)되는지 여부를 다음과 같이 결정한다.
코드 워드 0에 대하여, 만일 아래 심볼이 소거 상태에 있고 하나의 P3 이웃을 갖고, 제1페이지의 비트가 0이면, 제2페이지의 비트를 0으로 스턱 비트 처리하고, 그 외는 그것은 자유롭게 설정된다.
코드 워드 1에 대하여, 만일 아래 심볼이 소거 상태에 있고 하나의 P3 이웃을 갖고, 제1페이지의 비트가 0이면, 제2페이지의 비트를 0으로 스턱 비트 처리한다. 그 밖에 만일 아래 심볼이 P3이고 왼쪽에 있는 심볼이 또한 P3이고, 제1페이지의 비트가 1이면, 제2페이지의 비트는 0으로 스틱된다. 그 외는 자유롭게 설정된다.
코드 워드 2에 대하여, 만일 아래 심볼이 소거 상태에 있고 하나의 P3 이웃을 갖고, 제1페이지의 비트가 0이면, 제2페이지의 비트를 0으로 스턱 비트 처리한다. 만일 이웃한 적어도 2개의 심볼들이 P3에 있고, 제1페이지의 비트가 0이면, 제2페이지의 비트를 0으로 스턱 비트 처리한다. 그 외는 자유롭게 설정된다.
위에서는 모든 페이지들이 동일한 레이트를 갖지 않는 것이 분명하다. 실제에 있어서는 WL에서 모든 셀들은 동일한 작용을 하고, 연역적으로 알려진 "프리(free)" 셀들의 그룹은 존재하지 않는다. 위의 가정을 만드는 다른 제한은 다른 페이지를 읽을 필요 없이 단일 페이지의 정보 비트들을 획득하는 것을 필요로 하는 것을 실현할 수 없게 된다. 명백히 모든 페이지들의 모든 오버헤드 비트들을 K 페이지들에 함께 혼합되게 저장하는 것은 이러한 요구가 모순된다.
페이지의 모든 부호화된 비트들은 자체 페이지에 저장되어야 한다는 실제적인 이유를 이해해야 한다. WL에서 셀들의 개수는 가장 열악한 페이지를 지원해야 하기 때문에, 코딩 시스템의 전체 층의 레이트는 가장 열악한 페이지의 레이트가 된다.
i번째 페이지의 이진 코드의 레이트는 Ri로 표시되고, 셀당 비트들의 항목에서 전체 레이트는 수학식 2와 같다.
[수학식 2]
Figure pat00022
레이트를 최대로 하기 위하여 모든 페이지들은 동일한 레이트를 가져야 한다. 본 발명에서는 페이지 길이가 무한대가 되려는 경향으로서 점근적으로 그 목표를 달성하는 다음과 같은 밸런싱 알고리즘을 제안한다.
초기화 단계에서, 데이터 구조의 세분화를 적용한다. 페이지에서의 세그먼트의 수를 m으로 나타낸다.
단계 1:
Figure pat00023
에 c 순열의 집합을 선택한다. 각 순열은 WL 내부 페이지의 인코딩 순서를 정의한다.
단계 2: 각 세그먼트에 대하여 페이지 순서에 모든 c 순열을 적용하고, 각 순열에 대하여 사이즈 b의 확률 벡터를 획득하고, 그것의 i번째 요소는 페이지 i에서 스턱 비트들의 분수를 나타낸다. 여기에서, i=0, ...., b-1이다. 이 단계는 cm 확률 벡터들의 집합을 생성시키고,
Figure pat00024
로 나타낸다.
단계 3: 벡터 컬럼 Pj 로부터 매트릭스 A를 생성시킨다. A에서 벡터들의 순서는 세그먼트들의 순서에 따라야 한다. 즉, 가장 왼쪽에 있는 c 컬럼은 첫 번째 세그먼트의 순열에 속해야 한다. 매트릭스 A의 사이즈는 bxcm가 된다.
단계 4: 추가적으로 각 세그먼트들을 c 서브-세그먼트들로 파티셔닝한다. i번째 세그먼트의 j번째 서브-세그먼트에 속하는 셀들의 상대적인 개수를
Figure pat00025
로 표시한다. 두 번째 파티셔닝은 인코더 및 디코더 양쪽에서 알려진 소정의 방법으로 수행될 수 있다. j 번째 서브-세그먼트에서 인코딩 순서는 1 단계에서 정의된 j 번째 순열에 의하여 조정된다.
Figure pat00026
로 정의하자. 벡터
Figure pat00027
는 다른 페이지들에서 스턱 비트들의 예상 레이트를 나타낸다.
단계 6: 최고의 레이트를 달성하기 위하여,
Figure pat00028
에 있는 모든 엔트리들은 같아야 한다. 즉, 오버헤드 비트들의 완전한 밸런싱이 이루어진다. 선형 방정식 시스템은 수학식 3과 같이 표현할 수 있다.
[수학식 3]
Figure pat00029
여기에서, d는 포지티브 엔트리들의 임의의 벡터이다. 그리고, 엔트리들의 합이 1로 정규화될 수 있는 솔루션을 산출한다.
그러나, 그것들의 합보다 차라리
Figure pat00030
에 다른 제약을 둘 수 있다. 위의 중요한 파티셔닝은 그것의 구조를 반드시 지켜야 한다. 예로서, 다음의 "근사적-최적화 파티셔닝"에서 모든 세그먼트들은 반드시 동일 사이즈이여야 한다.
P에서 모든 벡터들의 구성 요소들의 최소 합을
Figure pat00031
로 표시하자. 즉,
Figure pat00032
이 된다. 그것의 임의 벡터에 있는 구성 요소들의 합이
Figure pat00033
가 되는 조건을 만족하는 b보다 큰 원소 개수를 갖는 P의 서브 집합(
Figure pat00034
)이 존재한다고 가정하자. 세그먼트들의 사이즈에 대한 제약들은 또한 선형적이고, 수학식 4와 같은 선형 방정식으로 표시할 수 있다.
[수학식 4]
Figure pat00035
여기에서, g에서 첫 번째 b 요소들은
Figure pat00036
이고, 마지막 m 요소는 1/m이다.
위의 시스템은 아직 불충분하게 결정되었다. 만일 솔루션이 존재하지 않으면 c를 증가시켜 단계 1로 돌아간다. 만일 시스템이 전체 컬럼에서 정렬되면 모든 엔트리들이 비-네거티브인 솔루션 벡터
Figure pat00037
을 선택하고 그것을 엔트리들의 합의 역수에 곱하여 정규화한다.
단계 6: 단계 4에 따라
Figure pat00038
에서의 확률에 따라 m 세그먼트들을 파티셔닝한다.
단계 7: 위에서 설명한 금지 패턴의 발생 수를 줄이기 위한 알고리즘을 이용한 이전 단계들에 의하여 조정된 위치 및 순서에 따라 데이터를 부호화한다.
위의 알고리즘은 밸런싱의 개념의 일예를 단지 설명하였으나, 이 기술이 속하는 분야의 통상의 지식을 가진 자가 다른 변형된 실시 예들을 쉽게 고안해 낼 수 있다. 예로서, 다른 세그먼트들에 대하여 순열들의 다른 집합들을 선택할 수 있다.
위에서 설명한 밸런싱 알고리즘의 핵심은 스턱 비트들의 개수가 모든 페이지들에 대하여 동일하게 되도록 세그먼트를 서브-세그먼트들로 파티셔닝하는 것이다. 위의 밸런싱 알고리즘은 이러한 문제를 해결하기 위하여 제안된 하나의 방법이다
스턱 비트들에 대한 코드의 본질은 단지 인코더만이 제약들을 알고 있는 제약들(스턱 비트들)을 갖고 메모리 장치(200)로 정보를 제공하고, 디코더(130)에서 제약들에 대하여 알지 못한 상태에서 정보를 복원시키는 것이다.
위에서 언급한 바와 같이, 모든 제약들을 완화시키지 않으면 스턱 비트들의 개수가 커지고 정보 레이트가 낮아진다. 그래서 인코더(120)는 항상 제약을 완화시키기 위하여 몇몇 값에서 스턱되어야 하는 비트를 예시적으로 지정하는데, 그것이 스턱될 가치가 있는 결정할 수 있다. 이는 제약의 기초가 되는 물리적인 팩터들에 대한 주변 정보의 도움을 받아 수행할 수 있다.
예로서, 낸드 플래시 메모리에서 P3-E-P3을 회피하기 위한 물리적인 이유는 소거된 셀의 이웃들에 의하여 야기되는 커플링은 임계 전압을 에러를 야기시킬 레벨로 증가시킬 수 있기 때문이다.
만일 이웃들을 프로그래밍하기 전에 소거된 전압이 매우 낮으면, 설령 그것의 이웃들이 P3에 있더라도 에러가 발생될 확률은 높아진다. 만일 반대로 소거된 셀의 임계 전압이 높으면 에러가 발생될 확률은 또한 매우 높아질 것이다.
에러 발생 확률을 pe라고 하자. 또한 시스템이 에러를 정정하는데 x비트를 필요로 하는 ECC를 사용하고, 스턱 비트들에 대한 코드는 단일 스턱을 처리하는데
Figure pat00039
비트들이 필요한 것으로 가정하자. 만일
Figure pat00040
이면 비트 스티킹으로부터 복원할 수 있다. 이러한 방식으로 예로서 BER 항목에서 정말로 위해한 패턴들의 발생을 제거할 수 있다. 소거된 전압의 값에 대한 정보는 프로그래밍 전에 약간의 읽기 동작을 이용하여 획득할 수 있다.
도 11은 도 1에 도시된 인코더(120)에 대한 구성의 일 예를 보여주는 도면이다.
도 11에 도시된 바와 같이, 인코더(120A)는 ECC 인코딩 처리부(120-1), 금지 패턴 검출부(120-2) 및 스턱 비트 처리부(120-3)를 포함한다.
ECC(Error Correction Code) 인코딩 처리부(120-1)는 RS 코드(Reed-Solomon code), 헤밍 코드(Hamming code), CRC(Cyclic Redundancy Code) 등과 같은 알고리즘을 이용하여 수신되는 정보 워드에 대한 패리티 비트들을 생성하고, 생성된 패리티 비트들을 정보 워드에 첨부하여 코드워드를 생성한다. 동일한 ECC 알고리즘을 이용하는 경우에 단위 데이터 사이즈 당 에러 정정 능력은 ECC 사이즈에 비례하여 향상되는 특성을 갖는다. 일 예로서, 1024 byte 데이터의 비트 에러를 16bit 이하까지 처리하는 ECC 알고리즘에서 4K Byte 페이지 당 112 바이트의 ECC 사이즈가 필요하다면, 1024 byte 데이터의 비트 에러를 32bit 이하까지 처리하는 ECC 알고리즘에서는 4K Byte 페이지 당 224 Byte의 ECC 사이즈가 필요하게 된다.
금지 패턴 검출부(120-2)는 ECC 인코딩 처리부(120-1)에서 생성된 코드워드로부터 초기 설정된 금지 패턴이 생성될 수 있는 심볼들의 집합을 검출한다. 즉, 위에서 설명한 바와 같은 코드워드를 초기 설정된 제약 조건의 범위로 분할 처리한 후에, 분할 처리된 제약 조건의 범위에 포함된 코드워드의 패턴으로부터 금지 패턴이 생성될 수 있는 심볼들의 집합을 검출한다. 예로서, 메모리 셀 어레이의 수평 방향, 수직 방향, 또는 2D 영역에서 금지 패턴이 발생될 수 있는 심볼들의 집합을 검출할 수 있다.
스턱 비트 처리부(120-3)는 금지 패턴이 생성될 수 있는 심볼들의 집합에 포함된 적어도 하나의 비트를 스턱 비트로 처리하여 금지 패턴이 발생될 수 없는 심볼들의 집합으로 변환시킨다. 그리고, 금지 패턴이 생성될 수 없는 심볼들의 집합에 대해서는 스턱 비트 처리를 하지 않는다. 즉, 금지 패턴이 생성될 수 없는 심볼들의 집합에 포함된 비트들은 변환 처리없이 그대로 출력된다. 이에 대해서는, 위의 수평 패턴에서 원하지 않는 패턴의 발생 수를 줄이는 알고리즘, 수직 패턴에서 원하지 않는 패턴의 발생 수를 줄이는 알고리즘 및 2D 패턴 회피 알고리즘에서 상세히 설명하였으므로 중복적인 설명은 피하기로 한다. 예로서, 스턱 비트 처리부(120-3)는 위에서 설명한 스턱 비트 처리와 함께 스턱 비트를 복원하는데 필요한 정보를 생성시켜 인코딩된 정보에 부가할 수도 있다.
스턱 비트 처리부(120-3)에서 출력되는 데이터는 메모리 인터페이스(160)를 통하여 메모리 장치(200)로 전송되어 플래시 변환 계층(103)에서 변환된 물리적 페이지에 프로그램된다.
도 12는 도 1에 도시된 인코더(120)의 구성에 대한 다른 예를 보여주는 도면이다.
도 12에 도시된 바와 같이, 인코더(120B)는 ECC 인코딩 처리부(120-1), 금지 패턴 검출부(120-2), 스턱 비트 처리부(120-3) 및 스턱 비트 정보 생성부(120-4)를 포함한다.
도 12에 도시된 ECC 인코딩 처리부(120-1), 금지 패턴 검출부(120-2) 및 스턱 비트 처리부(120-3)에 대해서는 도 11에서 이미 설명하였으므로, 중복된 설명은 피하기로 한다.
도 12에 도시된 인코더(120B)는 도 11에 도시된 인코더(120A)에 비하여 스턱 비트 정보 생성부(120-4)가 추가되는 구성을 갖는다. 스턱 비트 정보 생성부(120-4)는 금지 패턴이 발생될 수 없도록 스턱 비트 처리된 비트에 대한 위치 정보를 생성시킨다.
스턱 비트 처리부(120-3)에서 출력되는 데이터와 스턱 비트 처리된 비트에 대한 위치 정보는 메모리 인터페이스(160)를 통하여 메모리 장치(200)로 전송되어 플래시 변환 계층(103)에서 변환된 물리적 페이지에 프로그램된다. 예로서, 스턱 비트 처리된 비트에 대한 위치 정보는 해당 페이지의 오버헤드 저장 영역에 프로그램될 수 있다.
도 12에서는 스턱 비트 처리된 비트에 대한 위치 정보를 스턱 비트 정보 생성부(120-4)에서 생성시키는 것으로 설명되었다. 그러나, 다른 예로서 스턱 비트 처리부(120-3)에서 도 11에서 설명한 스턱 비트 처리와 함께 스턱 비트 처리된 비트에 대한 위치 정보를 생성시킬 수도 있다.
도 13은 도 1에 도시된 디코더(130)에 대한 구성의 일 예를 보여주는 도면이다.
도 13에 도시된 바와 같이, 디코더(130)는 스턱 비트 복원 처리부(130-0), 에러 검출부(130-1) 및 에러 정정부(130-2)를 포함한다.
스턱 비트 복원 처리부(130-0)는 메모리 장치(200)로부터 읽어낸 스턱 비트 처리된 비트에 대한 위치 정보를 이용하여 메모리 장치(200)로부터 읽어낸 데이터에 포함된 스턱 비트 처리된 위치의 비트 값을 스턱 비트 처리 이전 값으로 복원시킨다.
에러 검출부(130-1)는 ECC 알고리즘을 이용하여 스턱 비트 복원 처리된 데이터에 대한 에러 비트를 검출한다. 즉, 읽어낸 데이터에 부가되어 있는 패리티 비트들을 이용하여 스턱 비트 복원 처리된 데이터에 대한 에러 비트를 검출한다.
에러 정정부(130-2)는 에러 검출부(130-1)에서 검출된 에러 비트에 대한 비트 값을 정정 처리한다.
다음으로, 위에서 설명한 알고리즘들을 이용하여 도 1 또는 2에 도시된 메모리 시스템(1000A, 1000B)의 메모리 컨트롤러(100)에서 수행되는 본 발명의 실시 예에 따른 코딩 방법 및 디코딩 방법을 설명하면 다음과 같다.
도 14는 본 발명의 실시 예에 따른 메모리 시스템에서의 코딩 방법의 흐름도이다.
우선, 단계 S110에서 메모리 컨트롤러(100)는 메모리 장치(200)에 저장할 입력 데이터 스트림으로부터 초기 설정된 제약 조건의 금지 패턴이 발생될 수 있는 심볼들의 집합을 검색한다. 예로서, 금지 패턴은 멀티 레벨 셀의 메모리 장치(200)에서의 소거 상태의 심볼을 중심으로 좌우 또는 상하로 원하지 않는 프로그램 상태의 심볼들의 집합을 포함할 수 있다. 위에서 이미 설명한 바와 같은 메모리 셀 어레이의 수평 방향, 수직 방향, 또는 2D 영역에서 금지 패턴이 발생될 수 있는 심볼들의 집합을 검색할 수 있다.
다음으로, 단계 S120에서 메모리 컨트롤러(100)는 검색된 금지 패턴이 발생될 수 있는 심볼들의 집합에 포함된 적어도 하나의 비트를 금지 패턴이 발생될 수 없도록 스턱 비트로 처리한다. 예로서, 메모리 컨트롤러(100)는 메모리 장치(200)의 하나의 워드라인에 포함된 셀들을 적어도 2개의 그룹으로 분할하고, 분할된 적어도 2개의 그룹들 중에서 하나의 그룹에서는 해당 워드라인의 상위(MSB) 페이지에서 금지 패턴이 발생될 수 있는 심볼들의 집합에 포함된 하나의 비트에 대하여 스턱 비트 처리를 수행하고, 다른 하나의 그룹에서는 해당 워드라인의 하위(LSB) 페이지에서 금지 패턴이 발생될 수 있는 심볼들의 집합에 포함된 하나의 비트에 대하여 금지 패턴이 발생될 수 없도록 스턱 비트 처리를 수행할 수 있다. 예로서, 메모리 컨트롤러(100)는 페이지 단위로 스턱 비트로 처리하는 개수를 초기 설정된 값으로 제한할 수도 있다. 예로서, 메모리 컨트롤러(100)는 메모리 장치(200)의 메모리 셀 어레이에서의 비트 라인들을 연속하는 3개의 비트 라인들의 단위 그룹으로 분류하고, 단위 그룹에 포함된 3개의 비트 라인들 중에서 하나의 비트 라인에 대응되는 비트를 선택적으로 스턱 비트로 처리할 수 있다. 그리고, 메모리 컨트롤러(100)는 스턱 비트 처리된 비트에 대한 위치 정보를 생성시킬 수 있으며, 스턱 비트 처리된 비트에 대한 위치 정보를 메모리 장치(200)의 오버헤드 저장 영역에 쓰도록 메모리 시스템을 제어할 수 있다.
도 15는 도 14에 도시된 금지 패턴이 발생될 수 있는 위치를 검출하는 프로세스(S110)에 대한 세부적인 흐름도를 예시적으로 보여준다.
단계 S110-1에서 메모리 컨트롤러(100)는 입력 데이터 스트림을 초기 설정된 제약 조건의 범위로 분할 처리한다. 예로서, 초기 설정된 제약 조건의 범위가 3개 심볼인 경우에 입력 데이터 스트림을 3개 심볼 단위로 분할 처리할 수 있다. 그리고, 입력 데이터 스트림에서 심볼들을 하나씩 시프트시키면서 3개 심볼 단위로 분할 처리할 수 있다.
단계 S110-2에서 메모리 컨트롤러(100)는 분할 처리된 제약 조건의 범위에 포함된 입력 데이터의 패턴으로부터 금지 패턴이 발생될 수 있는지를 판정한다. 예로서, 제약 조건의 범위에 포함된 3개 심볼들을 구성하는 6개의 세그먼트들 중에서 5개의 세그먼트들에 대하여 금지 패턴이 발생될 수 있는지를 판정할 수 있다. 예로서, 하나의 워드라인에 포함된 셀들을 적어도 2개의 그룹으로 분할하고, 분할된 적어도 2개의 그룹들 중에서 하나의 그룹에서는 해당 워드라인의 MSB 페이지에서 3개 세그먼트와 LSB 페이지에서 2개 세그먼트들의 집합에 대하여 금지 패턴이 발생될 수 있는지 판정할 수 있다. 그리고, 다른 하나의 그룹에서는 해당 워드라인의 MSB 페이지에서 2개 세그먼트와 LSB 페이지에서 3개 세그먼트들의 집합에 대하여 금지 패턴이 발생될 수 있는지 판정할 수 있다.
도 16은 본 발명의 실시 예에 따른 메모리 시스템에서의 디코딩 방법의 흐름도이다.
우선, 단계 S210에서 메모리 컨트롤러(100)는 읽기 명령에 따라서 메모리 장치(200)로부터 데이터를 읽어낸다.
다음으로, 단계 S220에서 메모리 컨트롤러(100)는 메모리 장치(200)로부터 읽어낸 데이터를 디코딩 처리한다.
예로서, 메모리 장치(200)로부터 읽어낸 데이터를 스턱 비트를 복원하는데 필요한 정보를 이용하여 스턱 비트 처리 이전 값으로 복원시킨 후에 에러 검출 및 에러 정정 처리를 수행한다.
예로서, 메모리 장치(200)에 스턱 비트 처리된 비트에 대한 위치 정보가 저장되어 있는 경우에, 메모리 컨트롤러(100)는 스턱 비트 처리된 비트에 대한 위치 정보를 이용하여 메모리 장치(200)로부터 읽어낸 데이터에 포함된 스턱 비트 처리된 위치의 비트 값을 스턱 비트 처리 이전 값으로 복원시킨다. 그리고 나서, ECC 알고리즘에 따라서 패리티 비트를 이용하여 에러 검출 및 에러 정정 처리를 수행한다.
도 20은 본 발명의 실시 예들에 따른 메모리 시스템이 채용된 전자 장치의 일 구현 예를 나타내는 블록도이다.
도 20을 참조하면, 전자 장치(2000)는 프로세서(2100), RAM(2200), 입출력 장치(2300), 전원 장치(2400) 및 메모리 시스템(1000)을 포함할 수 있다. 한편, 도 23에는 도시되지 않았지만, 전자 장치(2000)는 비디오 카드, 사운드 카드, 메모리 카드, USB 장치 등과 통신하거나, 또는 다른 전자 기기들과 통신할 수 있는 포트(port)들을 더 포함할 수 있다. 전자 장치(2000)는 퍼스널 컴퓨터로 구현되거나, 노트북 컴퓨터, 휴대폰, PDA(personal digital assistant) 및 카메라 등과 같은 휴대용 전자 장치로 구현될 수 있다.
도 20에 도시된 메모리 시스템(1000)은 도 1 또는 도 2에 도시된 본 발명의 실시 예에 따른 메모리 시스템(1000A 또는 1000B)이 적용될 수 있다. 따라서, 메모리 컨트롤러(100)는 본 발명에서 제안하는 코딩 방법 및 디코딩 방법을 적용하여 금지 패턴이 회피되도록 코딩 처리 및 디코딩 처리를 할 수 있다.
프로세서(2100)는 특정 계산들 또는 태스크(task)들을 수행할 수 있다. 실시예에 따라, 프로세서(2100)는 마이크로프로세서(micro-processor), 중앙 처리 장치(Central Processing Unit; CPU)일수 있다. 프로세서(2100)는 어드레스 버스(address bus), 제어 버스(control bus) 및 데이터 버스(data bus) 등과 같은 버스(2500)를 통하여 RAM(2200), 입출력 장치(2300) 및 메모리 시스템(1000)과 통신을 수행할 수 있다. 실시 예에 따라, 프로세서(2100)는 주변 구성요소 상호연결(Peripheral Component Interconnect; PCI) 버스와 같은 확장 버스에도 연결될 수 있다.
RAM(2200)는 전자 장치(2000)의 동작에 필요한 데이터를 저장할 수 있다. 예를 들어, RAM(2200)는 디램(DRAM), 모바일 디램, 에스램(SRAM), 피램(PRAM), 에프램(FRAM), 알램(RRAM) 및/또는 엠램(MRAM)으로 구현될 수 있다.
입출력 장치(2300)는 키보드, 키패드, 마우스 등과 같은 입력 수단 및 프린터, 디스플레이 등과 같은 출력 수단을 포함할 수 있다. 전원 장치(2400)는 전자 장치(2000)의 동작에 필요한 동작 전압을 공급할 수 있다.
도 21은 본 발명의 실시 예들에 따른 메모리 시스템을 포함하는 메모리 카드 시스템을 나타내는 블록도이다.
도 21을 참조하면, 메모리 카드 시스템(3000)은 호스트(3100) 및 메모리 카드(3200)를 포함할 수 있다. 호스트(3100)는 호스트 컨트롤러(3110) 및 호스트 접속부(3120)를 포함할 수 있다. 메모리 카드(3200)는 카드 접속부(3210), 카드 컨트롤러(3220) 및 메모리 장치(3230)를 포함할 수 있다.
도 21에 도시된 카드 컨트롤러(3220) 및 메모리 장치(3230)는 각각 도 1 또는 도 2에 도시된 메모리 컨트롤러(100) 및 메모리 장치(200 또는 200')가 적용될 수 있다.
호스트(3100)는 메모리 카드(3200)에 데이터를 기입하거나, 메모리 카드(3200)에 저장된 데이터를 독출할 수 있다. 호스트 컨트롤러(3110)는 커맨드(CMD), 호스트(3100) 내의 클럭 발생기(미도시)에서 발생한 클럭 신호(CLK), 및 데이터(DATA)를 호스트 접속부(3120)를 통해 메모리 카드(3200)로 전송할 수 있다.
카드 컨트롤러(3220)는 카드 접속부(3210)를 통해 수신된 커맨드에 응답하여, 카드 컨트롤러(3220)는 본 발명에서 제안하는 코딩 방법 및 디코딩 방법을 적용하여 금지 패턴이 회피되도록 코딩 처리 및 디코딩 처리를 할 수 있다.
메모리 카드(3200)는 컴팩트 플래시 카드(CFC: Compact Flash Card), 마이크로 드라이브(Microdrive), 스마트 미디어 카드(SMC: Smart Media Card) 멀티미디어 카드(MMC: Multimedia Card), 보안 디지털 카드(SDC: Security Digital Card), 메모리 스틱(Memory Stick), 및 USB 플래시 메모리 드라이버 등으로 구현될 수 있다.
도 22는 본 발명의 실시 예들에 따른 SSD를 포함하는 서버 시스템에 대한 네트워크 구현 예를 나타내는 블록도이다.
도 22를 참조하면, 본 발명의 실시 예에 따른 네트워크 시스템(4000)은 네트워크(4200)를 통해 연결되는 서버 시스템(4100) 및 다수의 단말들(4300, 4400, 4500)을 포함할 수 있다. 본 발명의 실시예에 따른 서버 시스템(4100)은 네트워크(4200)에 연결되는 다수의 단말들(4300, 4400, 4500)로부터 수신되는 요청을 처리하는 서버(4110) 및 단말들(4300, 4400, 4500)로부터 수신되는 요청에 대응되는 데이터를 저장하는 SSD(4120)를 포함할 수 있다. 이때, SSD(4120)는 도 1 또는 도 2에 도시된 메모리 시스템(1000A 또는 1000B)이 적용될 수 있다.
한편, 상기에서 설명된 본 발명에 따른 메모리 시스템은 다양한 형태들의 패키지를 이용하여 실장 될 수 있다. 예를 들면, 본 발명에 따른 메모리 시스템은 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic MetricQuad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
1000A, 1000B : 메모리 시스템 100 : 메모리 컨트롤러
120, 120' : 메모리 장치 110 : 프로세서
120 : 인코더 130 : 디코더
140 : RAM 150 : 호스트 인터페이스
160 : 메모리 인터페이스 170 : 버스
200 : 메모리 장치 120-1 : ECC 인코딩 처리부
120-2 : 금지 패턴 검출부 120-3 : 스턱 비트 처리부
120-4 : 스턱 비트 정보 생성부 130-0 : 스턱 비트 복원 처리부
130-1 : 에러 검출부 130-2 : 에러 정정부
10 : 셀 어레이 20 : 페이지 버퍼
30 : 제어 회로 40 : 로우 디코더
2000 : 전자 장치 3000 : 메모리 카드 시스템
4000 : 네트워크 시스템

Claims (10)

  1. 입력 데이터 스트림으로부터 초기 설정된 금지 패턴이 발생될 수 있는 심볼들의 집합을 검색하는 단계; 및
    상기 검색된 금지 패턴이 발생될 수 있는 심볼들의 집합에 포함된 적어도 하나의 비트를 상기 금지 패턴이 발생될 수 없도록 스턱 비트로 처리하는 단계를 포함함을 특징으로 하는 메모리 시스템에서의 코딩 방법.
  2. 제1항에 있어서, 상기 금지 패턴이 발생될 수 있는 심볼들의 집합을 검색하는 단계는 상기 메모리 장치의 메모리 셀 어레이에서의 수평 방향 또는 수직 방향으로 각각 상기 금지 패턴이 발생될 수 있는 심볼들의 집합을 검색하는 것을 특징으로 하는 메모리 시스템에서의 코딩 방법.
  3. 제1항에 있어서, 상기 금지 패턴은 멀티 레벨 셀의 메모리 장치에서의 소거 상태의 심볼을 중심으로 좌우 또는 상하로 원하지 않는 프로그램 상태의 심볼들이 위치하는 패턴을 포함함을 특징으로 하는 메모리 시스템에서의 코딩 방법.
  4. 제1항에 있어서, 상기 금지 패턴이 발생될 수 있는 심볼들의 집합을 검색하는 단계는
    상기 입력 데이터 스트림을 초기 설정된 제약 조건의 범위로 분할 처리하는 단계; 및
    상기 분할 처리된 제약 조건의 범위에 포함된 입력 데이터의 패턴으로부터 상기 금지 패턴이 발생될 수 있는지를 판정하는 단계를 포함함을 특징으로 하는 메모리 시스템에서의 코딩 방법.
  5. 제1항에 있어서, 상기 스턱 비트로 처리하여 금지 패턴이 발생될 수 없는 심볼들의 집합으로 변환시키는 단계는 상기 메모리 장치의 하나의 워드라인에 포함된 셀들을 적어도 2개의 그룹으로 분할하고, 상기 분할된 적어도 2개의 그룹들 중에서 하나의 그룹에서는 해당 워드라인의 상위 페이지에서 스턱 비트 처리를 수행하고, 다른 하나의 그룹에서는 해당 워드라인의 하위 페이지에서 스턱 비트 처리를 수행하는 것을 특징으로 하는 메모리 시스템에서의 코딩 방법.
  6. 제1항에 있어서, 상기 스턱 비트 처리된 비트에 대한 위치 정보를 생성시키는 단계를 더 포함하고, 상기 생성된 스턱 비트 처리된 비트에 대한 위치 정보를 상기 메모리 장치의 오버헤드 저장 영역에 쓰는 것을 특징으로 하는 메모리 시스템에서의 코딩 방법.
  7. 제1항에 있어서, 상기 금지 패턴이 발생될 수 있는 심볼들의 집합을 검색하는 단계는 멀티 레벨 셀의 메모리 장치에서의 소거 상태(E)를 갖는 메모리 셀에 이웃하게 위치하는 메모리 셀들에서 임계 개수를 초과하는 초기 설정된 문턱 전압 레벨 이상의 프로그램 상태가 발생될 수 있는 심볼들의 집합을 검색하는 것을 특징으로 하는 메모리 시스템에서의 코딩 방법.
  8. 제1항에 있어서, 상기 스턱 비트로 처리하는 단계는 상기 메모리 장치의 메모리 셀 어레이에서의 비트 라인들은 연속하는 3개의 비트 라인들의 단위 그룹으로 분류하고, 상기 단위 그룹에 포함된 3개의 비트 라인들 중에서 하나의 비트 라인에 대응되는 비트를 선택적으로 스턱 비트로 처리하는 것을 특징으로 하는 메모리 시스템에서의 코딩 방법.
  9. 읽기 명령에 따라서 메모리 장치로부터 데이터를 읽어내는 단계; 및
    상기 읽어낸 데이터에 포함된 스턱 비트 처리된 비트에 대한 위치 정보를 이용하여 디코딩 처리를 수행하는 단계를 포함함을 특징으로 하는 메모리 시스템에서의 디코딩 방법.
  10. 제9항에 있어서, 상기 디코딩 처리를 수행하는 단계는 스턱 비트 처리된 비트에 대한 위치 정보를 이용하여 상기 읽어낸 데이터에 포함된 스턱 비트 처리된 위치의 비트 값을 스턱 비트 처리 이전 값으로 복원시키는 프로세스를 수행하는 것을 특징으로 하는 메모리 시스템에서의 디코딩 방법.
KR1020130122184A 2013-10-14 2013-10-14 메모리 시스템에서의 코딩 방법 및 디코딩 방법 KR102204394B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130122184A KR102204394B1 (ko) 2013-10-14 2013-10-14 메모리 시스템에서의 코딩 방법 및 디코딩 방법
US14/446,350 US9570174B2 (en) 2013-10-14 2014-07-30 Coding method and decoding method in memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130122184A KR102204394B1 (ko) 2013-10-14 2013-10-14 메모리 시스템에서의 코딩 방법 및 디코딩 방법

Publications (2)

Publication Number Publication Date
KR20150043127A true KR20150043127A (ko) 2015-04-22
KR102204394B1 KR102204394B1 (ko) 2021-01-19

Family

ID=52809528

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130122184A KR102204394B1 (ko) 2013-10-14 2013-10-14 메모리 시스템에서의 코딩 방법 및 디코딩 방법

Country Status (2)

Country Link
US (1) US9570174B2 (ko)
KR (1) KR102204394B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180051704A (ko) * 2016-11-07 2018-05-17 삼성전자주식회사 스토리지 장치를 포함하는 사용자 장치 및 그것의 트림 관리 방법

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9880772B2 (en) 2015-09-21 2018-01-30 Micron Technology, Inc. Systems and methods for providing file information in a memory system protocol
US9779819B1 (en) 2016-06-24 2017-10-03 Micron Technology, Inc. Connecting memory cells to a data line sequentially while applying a program voltage to the memory cells
US10726922B2 (en) 2018-06-05 2020-07-28 Sandisk Technologies Llc Memory device with connected word lines for fast programming
US10636487B2 (en) 2018-06-05 2020-04-28 Sandisk Technologies Llc Memory device with bit lines disconnected from NAND strings for fast programming
US11362681B2 (en) 2020-08-21 2022-06-14 Seagate Technology Llc One-shot state transition probability encoder and decoder

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009272016A (ja) * 2008-05-09 2009-11-19 Hitachi Ltd フラッシュメモリシステム
KR20100097961A (ko) * 2009-02-27 2010-09-06 삼성전자주식회사 반도체 메모리 장치 및 그것의 데이터 처리 방법
KR20100119502A (ko) * 2009-04-30 2010-11-09 인터내셔널 비지네스 머신즈 코포레이션 증가된 용량의 이종의 스토리지 엘리먼트들
KR20110041501A (ko) * 2008-07-01 2011-04-21 엘에스아이 코포레이션 플래시 메모리 디바이스 기록 방법 및 시스템
KR20110124045A (ko) * 2010-05-10 2011-11-16 삼성전자주식회사 데이터 저장 장치 및 그것의 프로그램 방법
KR20130049332A (ko) * 2011-11-04 2013-05-14 삼성전자주식회사 메모리 시스템 및 그것의 동작 방법

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7840875B2 (en) 2006-05-15 2010-11-23 Sandisk Corporation Convolutional coding methods for nonvolatile memory
US7818653B2 (en) 2006-09-28 2010-10-19 Sandisk Corporation Methods of soft-input soft-output decoding for nonvolatile memory
ITVA20070042A1 (it) 2007-04-27 2008-10-28 St Microelectronics Srl Metodo di gestione di un dispositivo di memoria e relativo dispositivo di memoria
EP2592553B1 (en) 2008-03-11 2015-11-18 Agere Systems, Inc. Methods and apparatus for storing data in a multi-level cell flash memory device with cross-page sectors, multi-page coding and per-page coding
KR101436506B1 (ko) 2008-07-23 2014-09-02 삼성전자주식회사 메모리 장치 및 메모리 데이터 프로그래밍 방법
KR101466270B1 (ko) * 2008-09-19 2014-11-28 삼성전자주식회사 비휘발성 메모리 시스템 및 그것의 데이터 처리 방법
US8321764B2 (en) 2008-12-11 2012-11-27 Micron Technology, Inc. Multilevel encoding with error correction
US8370702B2 (en) 2009-06-10 2013-02-05 Micron Technology, Inc. Error correcting codes for increased storage capacity in multilevel memory devices
US9009569B2 (en) * 2010-10-18 2015-04-14 Xyratex Technology Limited Detection and correction of silent data corruption
US8996969B2 (en) * 2012-12-08 2015-03-31 Lsi Corporation Low density parity check decoder with miscorrection handling
US8976474B1 (en) * 2013-10-03 2015-03-10 Seagate Technology Llc Universal modulation coding for a data channel

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009272016A (ja) * 2008-05-09 2009-11-19 Hitachi Ltd フラッシュメモリシステム
KR20110041501A (ko) * 2008-07-01 2011-04-21 엘에스아이 코포레이션 플래시 메모리 디바이스 기록 방법 및 시스템
KR20100097961A (ko) * 2009-02-27 2010-09-06 삼성전자주식회사 반도체 메모리 장치 및 그것의 데이터 처리 방법
KR20100119502A (ko) * 2009-04-30 2010-11-09 인터내셔널 비지네스 머신즈 코포레이션 증가된 용량의 이종의 스토리지 엘리먼트들
KR20110124045A (ko) * 2010-05-10 2011-11-16 삼성전자주식회사 데이터 저장 장치 및 그것의 프로그램 방법
KR20130049332A (ko) * 2011-11-04 2013-05-14 삼성전자주식회사 메모리 시스템 및 그것의 동작 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180051704A (ko) * 2016-11-07 2018-05-17 삼성전자주식회사 스토리지 장치를 포함하는 사용자 장치 및 그것의 트림 관리 방법

Also Published As

Publication number Publication date
KR102204394B1 (ko) 2021-01-19
US9570174B2 (en) 2017-02-14
US20150103596A1 (en) 2015-04-16

Similar Documents

Publication Publication Date Title
KR102078853B1 (ko) 메모리 시스템, 호스트 시스템 및 메모리 시스템에서의 라이트 동작 수행 방법
US9819361B2 (en) List decoding method for polar code and memory system using the same
US8788894B2 (en) Method of enhancing error correction performance and storage device using the method
CN103348330B (zh) 采用独立硅元件的动态较高级冗余模式管理
KR101979734B1 (ko) 메모리 장치의 독출 전압 제어 방법 및 이를 이용한 데이터 독출 방법
US9483413B2 (en) Nonvolatile memory devices and methods of controlling the same
KR102204394B1 (ko) 메모리 시스템에서의 코딩 방법 및 디코딩 방법
US9666280B2 (en) Flash memories using minimum push up, multi-cell and multi-permutation schemes for data storage
KR101824227B1 (ko) 메모리 시스템 및 그것의 프로그램 방법
EP2684134A2 (en) Programmable data storage management
US9164889B2 (en) Memory system to select program operation method and method thereof
US20130318420A1 (en) Code modulation encoder and decoder, memory controller including them, and flash memory system
WO2016164367A2 (en) Device-specific variable error correction
US9407289B2 (en) Method of operating cyclic redundancy check in memory system and memory controller using the same
KR101926608B1 (ko) 경 판정 디코딩 방법 및 이를 이용한 저밀도 패리티 체크 디코더
US10324785B2 (en) Decoder using low-density parity-check code and memory controller including the same
US20200266830A1 (en) Memory controller
CN110444240B (zh) 存储器系统的编码器和解码器及其方法
KR20130084469A (ko) 데이터 압축 저장 방법 및 이를 이용한 저장 장치
CN112241333A (zh) 用于存储器系统的编码器及其方法
KR20130130484A (ko) 읽기 카운터 로직을 포함하는 플래시 메모리 시스템
JP2018022546A (ja) ストレージシステム用のセル位置プログラミング
US11088713B1 (en) Solid state drive implementing a rate-compatible polar code
CN117149059A (zh) 非易失性存储器装置中的功率高效码字加扰
CN112599180A (zh) 用于存储器系统的解码器及其方法

Legal Events

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