KR20110127615A - 개량된 멀티레벨 메모리 - Google Patents

개량된 멀티레벨 메모리 Download PDF

Info

Publication number
KR20110127615A
KR20110127615A KR1020110047060A KR20110047060A KR20110127615A KR 20110127615 A KR20110127615 A KR 20110127615A KR 1020110047060 A KR1020110047060 A KR 1020110047060A KR 20110047060 A KR20110047060 A KR 20110047060A KR 20110127615 A KR20110127615 A KR 20110127615A
Authority
KR
South Korea
Prior art keywords
information
value
memory
memory cells
memory cell
Prior art date
Application number
KR1020110047060A
Other languages
English (en)
Other versions
KR101409551B1 (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 마이크론 테크놀로지, 인크.
Publication of KR20110127615A publication Critical patent/KR20110127615A/ko
Application granted granted Critical
Publication of KR101409551B1 publication Critical patent/KR101409551B1/ko

Links

Images

Classifications

    • 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
    • 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
    • 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
    • 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
    • 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
    • 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/564Miscellaneous aspects
    • G11C2211/5644Multilevel memory comprising counting devices
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Read Only Memory (AREA)
  • Error Detection And Correction (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Abstract

본 발명은 반도체 메모리에 관한 것으로, 특히 멀티레벨 비휘발성 또는 휘발성 메모리에 관한 것이다.

Description

개량된 멀티레벨 메모리{ENHANCED MULTILEVEL MEMORY}
본 발명은 반도체 메모리에 관한 것으로, 특히 멀티레벨 비휘발성 메모리에 관한 것이다.
메모리 장치는 예컨대 컴퓨터, 셀룰러 폰, PDA, 정보 로거(information logger), 네비게이션 장비와 같은 다양한 형태의 전자 장치에 이용된다. 이러한 전자 장치들에는 예컨대 NAND나 NOR 플래시 메모리, SRAM, DRAM, 상변화 메모리와 같은 각종 비휘발성 메모리가 이용될 수 있다. 일반적으로 그와 같은 메모리 장치에 정보를 저장하는 데는 쓰기 또는 프로그래밍 프로세스가 이용될 수 있고, 저장된 정보를 읽어내는 데는 읽기 프로세스가 이용될 수 있다.
프로그래밍가능한 메모리의 저장 밀도는 예컨대 메모리 셀의 물리적 크기를 축소하여 그 공간적 점유 면적을 줄이고 메모리를 집적하는 다이 상의 동일 실리콘 면적 상에 더 많은 메모리 셀을 형성할 수 있게 함으로써 증가될 수 있다. 저장 밀도를 증가시킬 수 있는 다른 방법은 메모리 셀이 둘 이상의 정보 비트를 저장할 수 있는 소위 "멀티레벨(multilevel)" 프로그래밍 방식을 이용하는 것일 수 있다. 특히 그러한 멀티레벨 프로그래밍 방식을 이용하면 메모리 셀은 각각이 대응 논리값과 연관된 여러 가지 상이한 프로그래밍 상태들 중 하나에서 프로그래밍될 수 있다. 메모리 셀의 프로그래밍 상태는 그 메모리 셀에 포함된 트랜지스터의 임계 전압 값에 의해 정의될 수 있다. 예컨대 2 비트를 저장하도록 구성된 메모리 셀의 경우에 이 메모리 셀의 임계 전압 값은 4가지 상이한 값들 중 하나를 취할 수 있다. 특정 예에서, 그와 같은 저장된 비트 쌍의 논리값은 증가하는 임계 전압 값에 대응하는 바이너리 시퀀스 "11", "10", "01"및 "00"에 대응할 수 있다. 여기서 논리값 "11"은 가장 낮은 임계 전압 값을 가진 상태(소거 상태)와 연관될 수 있으며, 나머지 상태는 증가하는 임계 전압 값을 가진 상태와 연속적으로 연관될 수 있다. 그러나 그와 같은 메모리에 본래적인 것일 수 있는 거의 불가피한 공차로 인해, 프로그래밍된 메모리 셀의 임계 전압은 4개의 원하는 값들 중 하나로 정확히 프로그래밍되는 것 대신에 4가지 프로그램 분포("모집단"이라고도 함) 중에 분포될 수 있다. 따라서 각 프로그래밍 상태는 하나의 임계 전압과 연관되지 않고, 예컨대 임계 전압의 범위와 연관되고 이어서 각자의 프로그램 분포로 정의될 수 있다.
첨부 도면을 참조로 비한정적 비망라적(non-limiting and non-exhaustive) 실시예들에 대해 설명한다. 달리 규정하지 않는 한 도면 전체에 걸쳐 동일 구성요소에 대해서는 동일 도면부호를 병기한다.
도 1은 실시예에 따른 메모리 장치의 개략 블록도.
도 2a는 실시예에 따른 인코딩 유닛의 블록도.
도 2b는 실시예에 따른 선형 결합기 유닛의 블록도.
도 2c는 실시예에 따른 선형 결합기의 격자 구조도.
도 3은 실시예에 따른 프로그램 분포와 그러한 분포의 분할을 보여주는 도.
도 4는 다른 실시예에 따른 격자 구조도.
도 5a는 실시예에 따른 감지 회로의 개략도.
도 5b는 실시예에 따른 감지 회로의 타이밍도.
도 6은 실시예에 따른 디코딩 유닛의 개략 블록도.
도 7a는 실시예에 따른 프로그램 분포와 그러한 분포의 메트릭 함수를 보여주는 도.
도 7b는 실시예에 따른 메트릭 함수를 구현하는 탐색표.
도 7c는 실시예에 따른 프로그램 분포와 메트릭 값을 보여주는 개략도.
도 8은 다른 실시예에 따른 격자 구조도.
도 9a는 다른 실시예에 따른 인코딩 유닛의 블록도.
도 9b는 다른 실시예에 따른 선형 결합기 유닛의 블록도.
도 9c는 실시예에 따른, 서브세트로 분할된 프로그래밍을 보여주는 개략도.
도 10은 실시예에 따른 컴퓨팅 시스템과 메모리 장치의 개략도.
본 명세서에서 "일 실시예"또는 "실시예"는 그 실시예와 관련하여 설명된 특정 형상, 구조 또는 특징이 본 발명의 적어도 한가지 실시예에 포함된다는 것을 의미한다. 따라서, 본 명세서의 여러 곳에서 나타나는 "일 실시예에서" 또는 "실시예에서"라는 구절은 반드시 동일한 실시예를 말하는 것은 아니다. 더욱이 이러한 특정 형상, 구조 또는 특징들은 하나 이상의 실시예에서 조합될 수 있다.
실시예에서 메모리 장치의 저장 밀도는 1 정보 비트를 나타내는 2가지 보다 많은 프로그래밍 상태를 저장할 수 있는 멀티레벨 메모리 셀을 포함함으로써 증가될 수 있다. 개별 멀티레벨 메모리 셀이 프로그래밍될 수 있는 여러 가지 상이한 프로그래밍 상태를 선택하기 전에 메모리 장치 설계자는 메모리 장치의 공급 전압 값과 메모리 장치에 본래적일 수 있는 공차 파라미터를 포함하여 몇 개의 파라미터를 고려할 수 있다. 예컨대 공급 전압 값은 프로그램 분포 세트로 전개된 전압 범위의 상위를 정의할 수 있으며, 각 프로그램 분포의 폭은 메모리 장치에 본래적인 공차 파라미터에 관련될 수 있다. 실시예에서 저장 밀도를 더 증가시키는 방식은 심볼을 제공하는 컨볼루션 코드에 따라서 정보를 인코딩하고 그와 같은 심볼을 하나 이상의 멀티레벨 메모리 셀에 저장함으로써 정보를 저장하는 것을 포함할 수 있다. 그와 같은 저장된 정보를 검색하는 것은 그와 같은 저장된 심볼에 대한 소위 "소프트 판정(soft decision)"과 컨볼루션 디코딩을 적용하는 것을 포함할 수 있다. 다른 실시예에서 저장 밀도를 증가시키는 방식은 메모리 장치의 메모리 셀에 정보를 저장하기 전에 에러 정정 코드(ECC)를 이용하여 정보를 처리하는 것을 포함할 수 있다. 이런 식으로, 소프트 판정 방식을 이용하여 메모리 셀의 내용을 읽어냄으로써, 프로그램 분포 수가 하기에 설명하는 바와 같이 인접한 프로그램 분포들 간에 부분적으로 중첩될 정도로 비교적 많더라도 잘못된 판독이 일어날 확률은 줄어들 수 있다.
실시예에서 메모리 장치는 정렬된 프로그램 분포 시퀀스 중에서 하나의 프로그램 분포에 설정된 임계 전압 값을 가진 복수의 메모리 셀을 포함할 수 있다. 그와 같은 메모리 장치는 타겟 메모리 셀 세트에 저장될 제1 입력 정보를 수신할 수 있다. 이 제1 입력 정보는 이 제1 입력 정보를 대응하는 제2 입력 정보로 인코딩하는 제1 수의 비트를 포함할 수 있다. 제2 입력 정보는 제1 수의 비트보다 많은 제2 수의 비트를 포함할 수 있다. 메모리 장치는 이 제2 입력 정보에 따라서 타겟 메모리 셀 세트의 임계 전압을 그 시퀀스의 선택된 프로그램 분포 세트에 설정하도록 프로그래밍될 수 있다. 그 시퀀스의 프로그램 분포들은 각각이 그 시퀀스 내의 연속한 프로그램 분포가 될 필요는 없는 복수의 프로그램 분포를 포함할 수 있는 서브세트들로 정렬될 수 있다. 제2 입력 정보는 그 프로그램 분포 세트가 속하는 서브세트를 식별하는 서브세트 정보부를 포함할 수 있는데, 이에 대해서는 뒤에 자세히 설명한다.
도 1은 실시예에 따른 메모리(100)의 개략 블록도이다. 특히 비휘발성 반도체 메모리(100)는 예컨대 전기적으로 프로그래밍가능한 비휘발성 플래시 메모리를 포함할 수 있다. 메모리(100)는 반도체 재료 칩(이 도에는 미도시)에 집적될 수 있으며, 예컨대 복수의 행과 열로 배열된 정보를 저장하는 메모리 셀(110) 메트릭스(105)를 포함할 수 있다. 일 구현에서 메모리 셀(110)은, 전자에 의해 충전될 도전성 플로팅 게이트와 같은 전하 축적 소자를 가진 N-채널 MOS 트랜지스터를 포함할 수 있지만 본 발명은 이에 한정되는 것은 아니다.
메모리(100)는 멀티레벨 메모리를 포함할 수 있다. 메모리 셀(110)은 소거 상태에서 작은 임계 전압 값을 가질 수 있다. 메모리 셀(110)은 메모리 셀(110)의 플로팅 게이트에 특정 전하량을 둠으로써 여러 가지 상태들 중 하나로 프로그래밍될 수 있다. 그와 같은 상태들의 특징은 이전 상태에 비해 플로팅 게이트의 전하량이 증가함으로 인해 임계 전압 값이 증가한다는 것일 수 있다. 특정 실시예에서 메모리(100)는 NAND 구조를 포함할 수 있으며, 이 경우에 매트릭스(105)는 각자의 메모리 셀 스트링(string)을 구성하도록 서로 직렬로 연결된 8, 16 또는 그 이상의 메모리 셀들로(110) 이루어진 그룹과 같은 그룹을 포함할 수 있다. 동일한 매트릭스 열에 속하는 여러 가지 상이한 메모리 셀 스트링들은 각자의 비트 라인 BL(112)을 구성하도록 서로 병렬로 연결될 수 있지만, 본 발명은 이에 한정되는 것은 아니다.
메모리(100)는 원하는 메모리 셀(110) 또는 메모리 셀 그룹(110)을 선택하는 어드레스 코드 ADR을 수신할 수 있다. 어드레스 코드 ADR은, 예컨대 페이지 버퍼 회로(미도시)와 같은 읽기 및 프로그램 회로와 선택기 회로를 포함할 수 있는 읽기 프로그램 유닛(115)에 제공될 수 있다. 그와 같은 선택기 회로는 어드레스 지정된 메모리 셀(110)을 선택할 수 있고, 읽기 및 프로그램 회로는 예컨대 메모리 셀(110)에 대해 수행될 수 있는 읽기 및 프로그램 동작을 실행할 수 있다.
메모리(100)에서, 정보는 메모리 셀(110)에 저장되기 전에 인코딩될 수 있다. 이를 위해, 실시예에 따라서, 메모리(100)는 메모리 셀(110)에 저장될 입력 신호 DIN에 대한 인코딩 동작과 메모리 셀(110)로부터 읽어진 출력 인코딩된 신호 DCOUT에 대한 디코딩 동작을 수행하는 인코딩-디코딩 유닛(120)을 포함할 수 있다. 특히, 인코딩-디코딩 유닛(120)은, 메모리(100)의 I/O 단자(150)와 연관될 수 있는 I/O 버퍼(140)로부터 입력 신호 DIN을 수신하는 인코딩 유닛(130)을 포함할 수 있다. 일 구현에서 인코딩-디코딩 유닛(120)은 입력 신호 DIN에 대해 인코딩 동작을 수행하고 이에 대응하는 입력 인코딩된 신호 DCIN을 읽기 및 프로그램 유닛(115)에 제공할 수 있다. 그러면, 적어도 부분적으로 어드레스 코드 ADR에 기초하여, 입력 인코딩된 신호 DCIN은 매트릭스(105)의 해당 메모리 셀(110)에 저장될 수 있다. 인코딩-디코딩 유닛(120)은 어드레스 지정된 메모리 셀(110)로부터 읽어낸 출력 인코딩된 신호 DCOUT을 읽기 및 프로그램 유닛(115)으로부터 수신하고, 이 신호에 대해 디코딩 동작을 수행하고, 그리고/또는 대응하는 (디코딩된) 출력 신호 DOUT을 I/O 버퍼(140)에 제공하는 디코딩 유닛(160)을 더 포함할 수 있다.
실시예에서 시스템은 메모리(100)와 같은 메모리 장치를 포함할 수 있다. 특정 구현에서 메모리 장치는 하나 이상의 멀티레벨 메모리 셀에 대한 정보를 나타내는 신호를 저장하는 메모리 어레이와, 이 메모리 어레이에 소프트 판정과 컨볼루션 인코딩을 적용하여 이 정보의 값을 결정하는 컨트롤러를 포함할 수 있다. 그와 같은 시스템은 메모리 장치를 동작시키는 메모리 장치 컨트롤러와, 하나 이상의 애플리케이션을 호스트(host)하며, 메모리 장치 컨트롤러에 대한 쓰기 및/또는 읽기 명령을 개시하여 메모리 어레이에의 액세스를 제공하는 프로세서를 더 포함할 수 있다. 물론 이러한 메모리 장치의 구체적인 사항은 단지 예일 뿐이며 본 발명은 이에 한정되는 것은 아니다.
도 2a는 실시예에 따른 인코딩 유닛(130)의 블록도이다. 특정 예에서 메모리 셀(110)은 각각이 3 비트 정보를 저장하도록 프로그래밍될 수 있다. 물론 다른 구현에서는 다른 수의 비트가 저장될 수 있다. 여기서 예들은 특정한 수, 값 등과 관련된 특정 구현을 기술할 수 있다. 그러나 그와 같은 특정 예들은 단지 예시적인 것이며 본 발명은 그에 한정되는 것은 아니다. 어드레스 지정된 메모리 셀(110)에 저장될 입력 신호 DIN은 3 비트 스트링, 즉 a1(k), a2(k), a3(k)(여기서 "k"는 정수를 포함한 지수임)로 표현될 수 있다. 예컨대 클록 신호(도 5b)에 의해 정의될 수 있는 메모리(100)의 k번째 동작 사이클마다 새로운 비트 스트링 a1(k), a2(k), a3(k)가 인코딩되도록 인코딩 유닛(130)에 제공될 수 있다. 특정 메모리 액세스 중에, 예컨대 특정 k번째 동작 사이클 중에 프로그래밍될 메모리 셀(110)의 수는 1 보다 클 수 있다. 그러나 간단하게 하기 위해 여기서 설명된 구현은 1 동작 사이클에서 액세스될 수 있는 단일 메모리 셀(110)과 관련된다.
인코딩 유닛(130)은 3 비트 스트링을 포함하는 입력 신호 DIN을 인코딩하여 입력 인코딩된 신호 DCIN을 얻을 수 있다. 실시예에서 따라서 인코딩 유닛(130)은 선형 인코딩 프로세스를 이용하여 입력 신호 DIN에 리던던시(redundancy)를 부가하는 컨볼루션 인코더를 포함할 수 있다. 일 구현에서 그와 같은 선형 인코딩 프로세스는 비터비(Viterbi) 프로세스를 포함할 수 있지만, 본 발명은 이에 한정되는 것은 아니다. 인코딩 유닛(130)에 의해 부가된 리던던시는 입력 신호 DIN을 구성하는 각 3 비트 스트링 a1(k), a2(k), a3(k)가 입력 인코딩된 신호 DCIN을 구성하는 대응하는 4 비트 심볼 b1(k), b2(k), b3(k), b4(k)로 인코딩될 수 있도록 1 비트를 포함할 수 있다. 그러면 그와 같은 4 비트 심볼 b1(k), b2(k), b3(k), b4(k)는 예컨대 어드레스 코드 ADR로 어드레스 지정된 메모리 셀(110)에 저장되도록 읽기-프로그램 유닛(115)에 제공될 수 있다. 뒤에 더 자세히 설명하겠지만, 각 메모리 셀(110)은 예컨대 24=16개의 상이한 상태로 프로그래밍될 수 있다. 그와 같은 특정 예들도 단지 예시적인 것이며 본 발명은 그에 한정되는 것은 아니다. 인코딩 유닛(130)은 예컨대 비트 a3(k)로부터 비트 b3(k) 및 b4(k)를 생성하는 유한 상태 머신을 포함하는 선형 결합기 유닛(205)을 포함할 수 있다. 한편, 비트 b1(k)는 비트 a1(k)와 일치할 수 있으며, 비트 b2(k)는 비트 a2(k)와 일치할 수 있다. k번째 동작 사이클마다, 비트 b3(k)와 b4(k)는, 예컨대, 특정 동작 사이클 중에 선형 결합기 유닛(205)에 제공된 신호(예컨대 비트 a3(k))에 적어도 부분적으로 기초하여, 그리고, 그 이전 동작 사이클(여기서는 (k-1)번째 동작 사이클을 의미함) 중에 선형 결합기 유닛(205)에 제공된 정보가 취하는 값에 따라 달라질 수 있는 선형 결합기 유닛(205)(유한 상태 머신임)의 내부 상태에 적어도 부분적으로 기초하여 산출될 수 있다. 물론 그와 같은 인코딩 유닛의 세부 사항은 단지 예시적인 것이며 본 발명은 그에 한정되는 것은 아니다.
도 2b는 실시예에 따른 선형 결합기(205)의 블록도이다. 선형 결합기(205)는 3개의 지연 소자(210, 215, 220) 및/또는 바이너리 가산기(225)를 포함할 수 있다. 각 지연 소자는 메모리(100)의 동작 사이클 중에 비트를 수신하고 이 비트의 값을 기억할 수 있다. 이런 식으로 메모리(100)의 k번째 동작 사이클마다 지연 소자는 그 이전의 (k-1)번째 동작 사이클에서 수신된 값을 나타내는 출력 신호를 제공할 수 있다. 예컨대 지연 소자(210)는 비트 a3(k)를 수신하여 저장할 수 있다. 지연 소자(210)는 지연 소자(215)의 입력 단자(회로 절점 B)에 연결된 출력 단자를 포함할 수 있다. 지연 소자(215)는 지연 소자(220)의 입력 단자(회로 절점 C)에 연결된 출력 단자를 포함할 수 있으며, 이 지연 소자(220)는 바이너리 가산기(225)의 제1 입력 단자(회로 절점 D)에 연결된 출력 단자를 가질 수 있다. 바이너리 가산기(225)는 절점 B에 연결된 제2 입력 단자와, 비트 a3(k)를 수신하는 제3 입력 단자를 포함할 수 있다. 선형 결합기(205)는 비트 b3(k)를 제공하기 위해 절점 C에 연결된 제1 출력 단자와, 비트 b4(k)를 제공하기 위해 바이너리 가산기(225)의 출력 단자에 연결된 제2 출력 단자를 포함할 수 있다. 물론 그와 같은 선형 결합기의 세부 사항은 단지 예시적인 것이며 본 발명은 그에 한정되는 것은 아니다.
일 구현에서 인코딩 유닛(130)이 수행하는 인코딩 동작은 선형 결합기(205)에 의해 정의될 수 있는 특정 ECC와 관련될 수 있다. 도 2c는 실시예에 따른 선형 결합기(205)로부터 생기는 코드 구조를 나타낼 수 있는 격자 구조도(trellis diagram)(230)를 보여준다. 특히 격자 구조도(230)는 선형 결합기(205)의 입력부에서 수신된 비트 a3(k)의 값에 적어도 부분적으로 의존하여 선형 결합기(205)의 전개되는 내부 상태를 묘사할 수 있다.
선형 결합기(205)의 내부 상태 세트는 회로 절점 B, C, D가 취하는 값으로 정의될 수 있으며, 따라서 예컨대 23=8개의 상이한 내부 상태를 포함할 수 있다. 격자 구조도(230)에서 내부 상태는 기준 Si(k) 및 Si(k+1)(여기서 i=0, 1, ..., 7)을 가지고 식별될 수 있다. 특히 기준 Si(k)는 메모리(100)의 k번째 동작 사이클에서 선형 결합기(205)가 취하는 내부 상태에 대응하고, 기준 Si(k+1)은 후속하는 (k+1)번째 동작 사이클에서 취해진 내부 상태에 대응할 수 있다. 물론 그와 같은 격자 구조도는 단지 예시적인 것이며 본 발명은 그에 한정되는 것은 아니다.
격자 구조도(230)는 비트 a3(k)의 값에 적어도 부분적으로 기초하여 선형 결합기(205)의 "현재" 내부 상태 Si(k)와 "장래" 내부 상태 Si(k+1) 간에 발생하는 허용가능한 천이(transition)를 보여준다. 특히 현재 내부 상태 Si(k)는 2가지 서로 다른 장래 내부 상태 Sj(k+1) 또는 Sl(k+1)로 천이될 수 있다. 예컨대 비트 a3(k)가 "0"이라면 격자 구조도(230)는 내부 상태 Si(k)가 천이 화살표 tij(실선으로 표시)를 통해 대응 내부 상태 Sj(k+1)로 천이할 수 있음을 보여준다. 반면에 비트 a3(k)가 "1"이라면 내부 상태 Si(k)는 다른 천이 화살표 t'il(점선으로 표시)를 통해 대응 내부 상태 Sl(k+1)로 천이할 수 있다. 허용가능한 천이(예컨대 천이 화살표 tij와 t'il)는 코드 구조를 정의할 수 있다. 그러면 허용가능한 천이는 선형 결합기(205)의 구조에 의해 정의될 수 있다. 예컨대 지연 소자 및/또는 바이너리 가산기 간의 연결을 변경함으로써 선형 결합기(205)의 구조가 변하면, 격자 구조도(230)의 허용가능한 천이 및/또는 그 대응 코드 구조도 그에 따라서 변할 수 있다.
격자 구조도(230)에 의해 정의된 코드를 이용하여 인코딩 유닛(130)에 의해 생성된 4 비트 심볼 b1(k), b2(k), b3(k), b4(k)를 저장하기 위하여, 어드레스 지정된 메모리 셀(110)은 각자의 16개 프로그램 분포 D0, D1, ..., D15에 대응하는 16가지 상이한 상태들 중 해당하는 상태로 프로그래밍될 수 있다. 비트 b1(k), b2(k), b3(k), b4(k)가 취하는 값에 적어도 부분적으로 기초할 수 있는 이 16개 프로그램 분포 D0, D1, ..., D15는 도 3에 도시되어 있다. 이와 같은 프로그램 분포 D0, D1, ..., D15는 각자의 폭 때문에 서로 중첩될 수 있으며, 적어도 부분적으로 메모리(100)에 본래적인 공차에 따라 달라질 수 있다. 이점에 관해서 프로그램 분포 D0, D1, ..., D15는 도 3에서 일정 비례에 따라서 나타내지 않을 수도 있다.
실시예에 따라서 비트 b1(k), b2(k), b3(k), b4(k)와 여러가지 프로그램 분포 D0, D1, ..., D15 간의 연관은 다음과 같이 서브세트 분할과 관련될 수 있다. 예컨대 16개의 프로그램 분포 D0, D1, ..., D15는 각각이 4개의 프로그램 분포를 포함하는 4개의 상이한 서브세트 B0, B1, B2, B3으로 분할될 수 있다. 이 서브세트들은 비트 b3(k)와 b4(k)의 해당 값으로 식별될 수 있다. 예컨대 서브세트 B0는 b3(k)=0, b4(k)=0에 대응할 수 있으며 프로그램 분포 D0, D4, D8, D12를 포함할 수 있고, 서브세트 B1은 b3(k)=0, b4(k)=1에 대응할 수 있으며 프로그램 분포 D1, D5, D9, D13을 포함할 수 있고, 서브세트 B2는 b3(k)=1, b4(k)=0에 대응할 수 있으며 프로그램 분포 D2, D6, D10, D14를 포함할 수 있고, 서브세트 B3는 b3(k)=1, b4(k)=1에 대응할 수 있으며 프로그램 분포 D3, D7, D11, D15를 포함할 수 있다.
서브세트 B0, B1, B2, B3 내에서, 4개의 프로그램 분포는 비트 b1(k), b2(k)에 적어도 부분적으로 기초하여 판별될 수 있다. 예컨대 서브세트의 제1 프로그램 분포들 D0, D1, D2, D3은 b1(k)=0, b2(k)=0에 대응할 수 있고, 제2 프로그램 분포들 D4, D5, D6, D7은 b1(k)=1, b2(k)=0에 대응할 수 있고, 제3 프로그램 분포들 D8, D9, D10, D11은 b1(k)=0, b2(k)=1에 대응할 수 있고, 제4 프로그램 분포들 D12, D13, D14, D15는 b1(k)=1, b2(k)=1에 대응할 수 있다. 더욱이 서브세트 B0, B1, B2, B3 내에서, 인접한 프로그램 분포들 간의 거리는 동일 서브세트의 프로그램 분포들 간의 중첩을 피하도록 증가될 수 있다.
비트 b3(k) 및 b4(k)와 4개의 서브세트 B0, B1, B2, B3과의 연관을 설정하고 도 2c의 격자 구조도(230)를 이용하여 선형 결합기(205)의 내부 상태 Si(k)의 천이를 조사하면, 특정 천이를 위해 어느 서브세트가 선택되는지를 판단할 수 있다. 예컨대 선형 결합기(205)가 상태 S0(k)에 있고 k번째 동작 사이클에서 수신된 비트 a3(k)의 값이 "0"이라면, 내부 상태는 S0(k+1)로 천이할 수 있고 비트 b3(k)와 b4(k)는 각각 값 "0"과 "0"을 취할 수 있다. 내부 상태는 예컨대 천이 화살표 t00를 통해 천이할 수 있다. 이 한 쌍의 값은 서브세트 B0에 해당할 수 있다. 반면에 비트 a3(k)의 값이 "1"이라면, 내부 상태가 화살표 t'01을 통해 S4(k+1)로 천이할 수 있고 비트 b3(k)와 b4(k)는 각각 값 "1"과 "0"을 취할 수 있기 때문에 선택된 서브세트는 B2를 포함할 수 있다. 물론 이러한 메모리 장치의 세부 사항은 단지 예시적인 것이며 본 발명은 그에 한정되는 것은 아니다.
도 4는 다른 실시예에 따른 격자 구조도이다. 특정 예에서 12 비트 정보 시퀀스는 4개의 메모리 셀(110)에 저장될 수 있다. 이러한 시퀀스는 4개의 연속한 동작 사이클 중에 수신된 입력 신호 DIN의 4개 부분을 포함할 수 있다. 구체적으로, 사이클 "k"에서 입력 신호 DIN은 스트링 a1(k)=0, a2(k)=1, a3(k)=0에 대응할 수 있고, 사이클 "k+1"에서 입력 신호 DIN은 스트링 a1(k+1)=0, a2(k+1)=1, a3(k+1)=1에 대응할 수 있고, 사이클 "k+2"에서 입력 신호 DIN은 스트링 a1(k+2)=1, a2(k+2)=0, a3(k+2)=1에 대응할 수 있고, 사이클 "k+3"에서 입력 신호 DIN은 스트링 a1(k+3)=0, a2(k+3)=0, a3(k+3)=0에 대응할 수 있다. 선형 결합기(205)의 초기 내부 상태는 S0(k)일 수 있다. 물론 그와 같은 격자 구조도는 단지 예시적인 것이며 본 발명은 그에 한정되는 것은 아니다.
k번째 동작 사이클에서 스트링 a1(k)=0, a2(k)=1, a3(k)=0은 인코딩 유닛(130)에 제공될 수 있다. 대응하는 격자 구조도(405)에서 보는 바와 같이, 후속하는 (k+1)번째 동작 사이클에서 선형 결합기(205)는 천이 화살표 t00를 따르는 동일한 내부 상태 S0(k+1)을 유지할 수 있다. 인코딩 유닛(130)에 의해 생성되어 제1 메모리 셀(110)에 저장될 대응 4 비트 심볼은 b1(k)=0, b2(k)=1, b3(k)=0, b4(k)=0일 수 있으며, 이는 예컨대 서브세트 B0에 속하는 분포 D8에 대응할 수 있다.
(k+1)번째 동작 사이클에서 스트링 a1(k+1)=0, a2(k+1)=1, a3(k+1)=1은 인코딩 유닛(130)에 제공될 수 있다. 대응하는 격자 구조도(410)에서 보는 바와 같이, 선형 결합기(205)는 천이 화살표 t'01을 통해 내부 상태 S4(k+2)로 전환할 수 있다. 따라서 인코딩 유닛(130)에 의해 생성되어 제2 메모리 셀(110)에 저장될 대응 4 비트 심볼은 b1(k+1)=0, b2(k+1)=1, b3(k+1)=1, b4(k+1)=0일 수 있으며, 이는 서브세트 B2에 속하는 분포 D10에 대응한다.
(k+2)번째 동작 사이클에서 스트링 a1(k+2)=1, a2(k+2)=0, a3(k+2)=1이 인코딩 유닛(130)에 제공되면, 선형 결합기(205)는 천이 화살표 t'46을 통해 내부 상태 S4(k+2)로부터 내부 상태 S6(k+3)으로 전환할 수 있다(격자 구조도(415) 참조). 따라서 인코딩 유닛(130)에 의해 생성되어 제3 메모리 셀(110)에 저장될 대응 4 비트 심볼은 b1(k+2)=1, b2(k+2)=0, b3(k+2)=0, b4(k+2)=0일 수 있으며, 이는 서브세트 B0에 속하는 분포 D4에 대응할 수 있다.
마지막으로, (k+3)번째 동작 사이클에서 스트링 a1(k+3)=0, a2(k+3)=0, a3(k+3)=0이 인코딩 유닛(130)에 제공되면, 결합기 유닛(205)은 천이 화살표 t63을 통해 내부 상태 S6(k+3)로부터 내부 상태 S3(k+4)로 전환할 수 있다(격자 구조도(420) 참조). 따라서 인코딩 유닛(130)에 의해 생성되어 제4 메모리 셀(110)에 저장될 대응 4 비트 심볼은 b1(k+3)=0, b2(k+3)=0, b3(k+3)=1, b4(k+3)=1일 수 있으며, 이는 서브세트 B3에 속하는 분포 D3에 대응할 수 있다.
따라서, 인코딩 유닛(130)이 수행한 인코딩은 이전 동작 사이클에서 수신된 입력 신호 DIN의 전력(past history)을 고려할 수 있는 인코딩 경로를 통해 인코딩 유닛(130)에 의해 각 심볼이 생성될 수 있도록 컨볼루션 코드를 이용할 수 있다. 예컨대 앞에서의 예를 참조하여 설명하자면 입력 신호 DIN 시퀀스는 인코딩 경로 S0(k)-S0(k+1)-S4(k+2)-S6(k+3)-S3(k+4)에 따라서 인코딩되었을 수 있다. 4 비트 심볼 b1(k+3), b2(k+3), b3(k+3), b4(k+3)은 내부 상태 S6(k+3)부터 시작하여 산출되었을 수 있으며, 이 상태는 내부 상태 S0(k)부터 시작하여 3개의 동작 사이클을 거친 후에 도달되었을 수 있다. 예컨대 3개의 이전 동작 사이클 중에 수신된 입력 신호 DIN 시퀀스가 서로 달랐다면 인코딩 경로는 서로 다를 수 있으며, 따라서 결합기 유닛(205)의 내부 상태도 S6(k+3)과 다를 수 있다.
실시예에서 어드레스 지정된 메모리 셀(110) 그룹에 저장된 정보 비트는 읽기-프로그램 유닛(115)에 의해 감지된 출력 인코딩된 신호 DCOUT(도 1)에 대한 소프트 판정 시스템을 이용하여 검색될 수 있다. 더 구체적으로는 읽기-프로그램 유닛(115)이 제공한 출력 인코딩된 신호 DCOUT은 예컨대 어드레스 지정된 메모리 셀(110)의 임계 전압을 나타내는 수의 디지털 시퀀스를 포함할 수 있다. 신뢰도가 충분한, 예컨대 에러 확률이 낮은 소프트 판정 시스템을 이용하여 저장된 정보 비트를 검색하기 위해서, 읽기-프로그램 유닛(115)에 의해 감지된 임계 전압의 값은 비교적 높은 해상도를 갖고 있을 수 있으며, 따라서 정밀도가 비교적 높을 수가 있다.
예컨대 어드레스 지정된 메모리 셀(110)의 임계 전압은 전압 램프 판독 방식에 따라서 감지될 수 있으며, 이 경우에 증가하는 선형 전압 램프가 그 어드레스 지정된 메모리 셀의 게이트 단자에 인가될 수 있고 회로가 메모리 셀이 턴 온하는데 걸리는 시간을 측정할 수 있다. 일 구현에서 예컨대 도 5에 도시된 감지 회로(500)를 이용하여 메모리 셀(110)의 임계 전압의 값을 감지할 수 있다. 감지 회로(500)는 읽기-프로그램 유닛(115)의 일부를 포함할 수 있다. 감지 회로(500)는 어드레스 지정된 메모리 셀(110)에 대응하는 비트 라인 BL의 전압을 나타내는 비트 라인 전압 Vbl을 수신하기 위한 제1 입력 단자를 구비한 전압 비교기(505)를 포함할 수 있다. 또한 전압 비교기(505)는 기준 전압 Vref를 수신하기 위해 기준 발생기 블록(510)에 연결된 제2 입력 단자와, 비트 라인 전압 Vbl의 값이 기준 전압 VREF 이하로 떨어지는 경우에 트리거 신호 TRIG를 카운터 회로(515)에 제공하기 위한 출력 단자를 포함할 수 있다. 실시예에 따라서 카운터 회로(515)는 예컨대 값 "000000"에서부터 시작하여 값 "111111"로 끝나는 예컨대 6 비트 시퀀스를 생성할 수 있다. 카운터 회로(515)는 그 시퀀스의 값이 갱신되는 빈도를 정의하는 클록 신호 CK를 수신할 수 있다. 카운터 회로(515)의 동작은 리셋 신호 RESET, 개시 신호 START 및 중지 신호 STOP을 통해 제어 블록(520)에 의해 관리될 수 있다. 구체적으로 카운터 회로(515)에 의해 생성된 시퀀스는 예컨대 어써트(assertional) 개시 신호 START에 응답하여 개시될 수 있고, 어써트 중지 신호 STOP에 응답하여 중지되고, 어써트 리셋 신호 RESET에 응답하여 (예컨대 값 "000000"로) 리셋될 수 있다. 더욱이 전압 비교기(505)에 의해 생성된 트리거 신호 TRIG도 제어 블록(520)에 제공될 수 있다. 물론 그와 같은 감지 회로의 세부 사항은 단지 예시적인 것이며 본 발명은 그에 한정되는 것은 아니다.
제어 블록(520)은 카운터 회로(515)에 의해 발생된 시퀀스가 (예컨대 값 "111111"에 도달하는) 완전한 사이클을 실행했다면 어써트될 수 있는 오버플로우 신호 OFL을 카운터 회로(515)로부터 수신할 수도 있다. 제어 블록(520)은 어드레스 지정된 메모리 셀(110)의 게이트 단자에 제공될 읽기 전압 Vrd를 발생할 수 있는 읽기 전압 발생기(525)에 연결될 수도 있다. 뒤에 자세히 설명하겠지만, 읽기 전압 Vrd는 수행될 동작에 따라서 여러 가지 값을 취할 수 있다. 감지 회로(500)는 예컨대 8 비트를 적어도 임시적으로 저장하는 레지스터(530)를 더 포함할 수 있다. 예컨대 레지스터(530)의 제1 영역(535)은 카운터 회로(515)에 의해 발생된 6 비트를 저장할 수 있고, 레지스터(530)의 제2 영역(540)은 제어 블록(520)에 의해 발생된 2 비트 스트링 RN을 저장할 수 있다. 6 입력 NOR 게이트(545)는 그 입력 단자들에서 제1 영역(535)에 저장된 6 비트를 수신하도록 레지스터(530)에 연결될 수 있다. NOR 게이트(545)의 출력 단자는 신호 NO DATA를 제어 블록(520)에 공급하도록 제어 블록(520)에 연결될 수 있다.
도 5b는 실시예에 따른 감지 회로(500)의 타이밍도(550)이다. 이 타이밍도(550)는 예컨대 어드레스 지정된 메모리 셀(110)의 임계 전압을 감지하기 위한 동작 중에 관련 신호의 진행을 보여줄 수 있다. 감지 회로(500)가 수행하는 감지 동작은 스트링 RN의 대응 값에 의해 각각 식별되는 구별되는 단계(phase)를 4개 이상까지 실행할 수 있다. 제1 단계(RN=00)의 시작에서 제어 블록(520)은 카운터 회로(515)를 리셋하기 위해 리셋 신호 RESET을 어써트할 수 있고, 레지스터(530)는 제1 영역(535)에 스트링 "000000"을 저장할 수 있다. 이것은 예컨대 신호 NO DATA가 하이 값으로 설정될 수 있다는 것을 의미한다. 그와 동시에, 어드레스 지정된 메모리 셀(110)을 포함하는 메모리 스트링에 연결된 비트 라인 BL의 전압은 예비 충전 회로(미도시)를 이용함으로써 특정 예비 충전 전압 PV로 될 수 있다. 이 시점에서, 읽기 전압 발생기(525)에 의해 발생된 읽기 전압 Vrd는 제1 값으로 설정될 수 있고, 개시 신호 START는 카운터 회로(515)에 의해 카운트된 시퀀스를 개시하도록 제어 블록(520)에 의해 어써트될 수 있다.
어드레스 지정된 메모리 셀(110)의 게이트 단자가 읽기 전압 Vrd로 바이어스된 상태에서, 비트 라인 BL은 메모리 셀(110)의 임계 전압에 적어도 부분적으로 의존하는 방전율로 방전하기 시작할 수 있다. 더 구체적으로, 메모리 셀(110)이 비교적 높은 임계 전압에 대응하는 프로그램 분포로 프로그래밍되었다면 읽기 전압 Vrd의 값은 어드레스 지정된 메모리 셀(110)을 턴 온시키기에 충분치 않을 수 있다. 그와 같은 경우에 비트 라인 BL이 어드레스 지정된 메모리 셀(110)에 존재하는 역방향 바이어스 접합부로 인한 거의 불가피한 누설 효과 때문에 방전될 수 있기 때문에 방전율이 특히 낮을 수가 있다. 반면에 임계 전압이 충분히 낮다면 읽기 전압 Vrd는 예컨대 방전율을 대응하는 것만큼 증가시켜 메모리 셀(110)을 (적어도 부분적으로) 턴 온시키기에 충분할 수 있다.
카운터 회로(515)는 비트 라인 BL이 방전하는데 걸리는 시간을 측정할 수 있다. 이러한 측정값은 메모리 셀(110)의 임계 전압을 나타낼 수 있다. 더 구체적으로, 비트 라인 전압 Vbl이 기준 전압 VREF이하가 되면 전압 비교기(505)는 예컨대 트리거 신호 TRIG를 어써트할 수 있다. 제어 블록(520)은 트리거 신호 TRIG의 어써트에 응답하여 중지 신호 STOP을 어써트하여 카운터 회로(515)에 의해 발생된 시퀀스를 중지시킬 수 있다. 그러면 이 시퀀스가 취하는 값은 레지스터(530)의 제1 영역(535)에 임시로 저장될 수 있다. 레지스터(530)에 저장된 값은 어드레스 지정된 메모리 셀(110)의 임계 전압을 비교적 정밀하게 정량화할 기회를 제공할 수 있다. 이 값이 "000000"이 아니라면 NOR 게이트(545)에 의해 발생된 신호 NO DATA는 임계 전압이 올바르게 감지되었다는 것을 나타내는 논리 로우 값으로 전환될 수 있다.
비트 라인 BL의 방전율이 너무 낮으면 카운터 회로(515)에 의해 발생된 시퀀스는 예컨대 비트 라인 전압 Vbl이 기준 전압 VREF에 도달하기 전에 값 "111111"에 도달할 수 있다. 이 경우에 카운터 회로(515)는 오버플로우 신호 OFL을 어써트할 수 있고 제어 블록(520)은 중지 신호 STOP을 어써트하여 카운터 회로(115)를 중지시킬 수 있다. 이 시점에서 제2 단계(RN=01)가 개시될 수 있으며, 제어 블록(520)은 카운터 회로(515)를 리셋하기 위한 리셋 신호 RESET을 다시 어써트하고 비트 라인 BL은 예비 충전 전압 PV로 복귀한다. 감지 회로(500)는, 읽기 전압 Vrd의 값이 증가하여도, 전술한 동작을 다시 수행할 수 있다. 다시, 비트 라인 BL의 방전율이 너무 낮으면 예컨대 계속해서 증가된 읽기 전압 Vrd를 이용하여 제3 단계(RN=10) 또는 제4 단계(RN=11)가 수행될 수 있다. 그러므로 감지 회로(500)가 수행하는 감지 동작의 결과는 디지털 스트링을 포함할 수 있다. 특정 구현에서 그와 같은 스트링은 레지스터(530)에 저장된 8 비트 디지털 스트링을 포함할 수 있으며, 그 값은 어드레스 지정된 메모리 셀(110)의 임계 전압을 나타낼 수 있다. 물론 전술한 그와 같은 스트링과 기타 다른 세부 사항은 단지 예시적인 것이며 본 발명은 그에 한정되는 것은 아니다.
도 5b에 도시된 예에서 비트 라인 전압 Vbl은 제4 단계 중에만 기준 전압 VREF 이하로 떨어질 수 있으며, 이는 높은 임계 전압이 비교적 높은 프로그램 분포에 대응할 수 있음을 의미한다. 예컨대 레지스터(530)에 저장된 것과 같은 값은 메모리 셀(110)이 어느 프로그램 분포에 프로그래밍되었는지를 판단하기에는 충분치 않을 수 있다. 도 3을 참조로 전술한 바와 같이, 16개의 프로그램 분포 D0, D1, ..., D15는 서로 중첩할 수 있으며, 따라서 감지 회로(500)를 이용하여 감지된 특정 임계 전압 값은 2개의 상이한 인접 프로그램 분포 중 하나에 속할 수 있다. 이를 위해 더 많은 동작이 수행될 수 있는데, 이에 대해서는 뒤에 설명한다.
임계 전압이 올바르게 감지되었다면 레지스터(530)에 저장된 8 비트 디지털 스트링은 디코딩 유닛(160)에 제공될 출력 인코딩된 신호 DCOUT을 나타낼 수 있다. 메모리 셀(110)은 인코딩 유닛(130)에 의해 정의된 코드에 따라서 특정 프로그램 분포로 프로그래밍되었을 수 있으며, 따라서 상기 8 비트 디지털 스트링에 의해 주어진 정보(예컨대 감지된 임계 전압 값)가 디코딩되어 (디코딩된) 출력 신호 DOUT을 얻을 수 있다. 감지 회로(500)는, 전술한 바와 같이, 4단계 절차를 이용하여 예컨대 8 비트의 해상도를 가지고 어드레스 지정된 메모리 셀(110)의 임계 전압 값을 감지할 수 있다. 더 구체적으로, 감지 회로(500)는 각각 6 비트의 해상도를 가지고 2 비트 스트링 RN에 의해 식별되는 4개의 구별되는 읽기를 실행할 수 있으나, 본 발명은 이에 한정되는 것은 아니다. 이 4개의 읽기 동작 각각은 비트 라인 BL이 다시 예비 충전 전압 PV가 된 후에 일어날 수 있다.
메모리 셀(110) 당 1 비트 라인 보다 많은 예비 충전을 수반할 필요가 없는 임계 전압을 감지하는 대안은 전술한 4개 읽기 동작 중 하나와 거의 유사하지만 예컨대 8 비트 해상도와 같이 해상도가 더 향상된 단일 읽기 동작을 포함할 수 있다. 그러나 이 경우에는, 그와 같은 단일 읽기 동작은 수행 시간이 더 길기 때문에 메모리 셀의 누설 효과로 인해 감지 동작이 방해를 받을 수 있으며, 따라서 비트 라인 BL의 방전율은 주로 그러한 누설 효과에 기인할 수 있다.
도 6은 실시예에 따른 디코딩 유닛(160)의 개략 블록도이다. 전술한 바와 같이, 디코딩 유닛(160)은 출력 인코딩된 신호 DCOUT에 대해 디코딩 동작을 수행하여 대응하는 (디코딩된) 출력 신호 DOUT을 얻을 수 있다. 디코딩 유닛(160)은 예컨대 감지된 임계 전압의 값을 나타내는 출력 인코딩된 신호 DCOUT을 수신하는 메트릭 유닛(605)을 포함할 수 있다. 이에 따라서 디코딩 유닛(160)은 감지된 임계 전압이 각각 서브세트 B0, B1, B2, B3에 속하는 프로그램 분포에 속하는 확률을 정량화할 수 있는 4개의 대응하는 메트릭 값 MR0, MR1, MR2, MR3을 생성할 수 있다. 메모리 셀(110)이 취할 수 있는 임계 전압의 값들에 대해서(예컨대 출력 인코딩된 신호 DCOUT의 값들에 대해서) 메트릭 유닛(605)은 예컨대 프로그램 분포 D0, D1, ..., D15의 서브세트 분할의 정의에 적어도 부분적으로 기초하여 메트릭 값, MR0, MR1, MR2, MR3을 산출할 수 있다. 물론 그와 같은 디코딩 유닛의 세부 사항은 단지 예시적인 것이며 본 발명은 그에 한정되는 것은 아니다.
실시예에 따라서, 메트릭 유닛(605)이 여러 개의 메트릭 값, MR0, MR1, MR2, MR3을 산출할 수 있는 방법을 설명하기 위해, (프로그램 분포 D0, D1, ..., D15를 서브세트 B0, B1, B2, B3으로 분할하는 방법을 설명하는) 도 3과 관련하여 도 7a에 대해 설명한다. 도 7a는 각 서브세트 Bi(i=0, 1, 2, 3)에 대해서 대응하는 메트릭 함수 FBi(그 동향(trend)은 임계 전압이 서브세트 Bi에 대응하는 확률과 상관될 수 있음)를 보여준다. FBi의 동향은 예컨대 메모리 셀(110)의 임계 전압에 적어도 부분적으로 의존할 수 있다. 메트릭 함수 FBi는 예컨대 프로그램 분포 수와 프로그램 분포가 서브세트에 정렬되는 방식을 고려하여 설정될 수 있다. 실시예에 따라서 도 7a에 나타낸 메트릭 함수 FBi는 서브세트 Bi에 속하는 각 프로그램 분포의 중심 피크에 대응하는 최대값을 나타내는 주기 함수를 포함할 수 있다. 이 주기 함수는 임계 전압이 피크에 대응하는 값에서 벗어남에 따라 감소할 수 있다. 예컨대 메트릭 함수 FB0은 분포 D0, D4, D8 및 D12의 중심 피크에 대응하는 4개의 임계 전압 값에 대한 최대값을 나타낼 수 있다. 따라서 이 4개의 임계 전압 값은 이들 값이 서브세트 B0 자신을 구성하는 프로그램 분포 D0, D4, D8, D12의 중심에 대응할 수 있기 때문에 서브세트 B0에 속할 최대 확률을 가진 것들일 수 있다. 더욱이 메트릭 함수 FB0는 프로그램 분포 D0, D4, D8, D12의 중심으로부터 최대 거리에 있는 임계 전압 값들에 대해서는 제로일 수 있다. 예컨대 분포 D2의 피크에 대응하는 임계 전압 값은 서브세트 B0에 속하는 가장 가까운 프로그램 분포(예컨대 D0와 D4)의 피크로부터 최대 거리에 위치할 수 있으며, 따라서 제로에 가까운 서브세트 B0에 포함된 프로그램 분포에 속할 확률을 갖고 있다.
실시예에 따라서 메트릭 함수 FB0, FB1, FB2, FB3는 도 7b에 도시된 탐색표(710)와 같은 탐색표를 이용하여 구현될 수 있다. 더 구체적으로, 감지 회로(500)를 이용하여 (예컨대 단지 예로서 8 비트의 해상도를 가진) 출력 인코딩된 신호 DCOUT이 발생되었다면 탐색표(710)는 각각이 임계 전압의 값에 대응하는 28=256개의 행을 포함할 수 있다. 탐색표(710)의 각 행은 그 행에 대응하는 임계 전압 값에 관련된 4개의 메트릭 값 MR0, MR1, MR2, MR3를 포함할 수 있다. 예컨대 특정 구현에 따라서 4개의 메트릭 값 MR0, MR1, MR2, MR3은 4개의 대응하는 6 비트 디지털 스트링으로 표현될 수 있다. 이 4개의 6 비트 디지털 스트링의 값은 탐색표(710)의 그 행에 포함된 임계 전압에서 메트릭 함수 FB0, FB1, FB2, FB3이 취하는 값에 비례할 수 있다. 탐색표(710)에서 분포 D0의 피크에 대응하는 임계 전압 값은 DCOUT="8"에 대응하도록 되었을 수도 있다. 따라서 탐색표(710)의 제8 행에 포함된 메트릭 값 MR0은 "111111"일 수 있으며, 이는 임계 전압 값이 (프로그램 분포 D0을 포함하는) 서브세트 B0에 속할 확률이 최고값임을 의미한다. 탐색표(710)는 대응하는 읽기 전용 메모리(ROM), 또는 각각이 예컨대 메트릭 값 MR0, MR1, MR2, MR3 중 각자의 것에 전용인 4개의 서로 다른 ROM에 저장될 수 있다. 물론 그와 같은 해상도 비트 수와 같은 세부 사항은 단지 예시적인 것이며 본 발명은 그에 한정되는 것은 아니다.
이제 도 7c를 참조로 설명한다. 도 7c는 실시예에 따른, 읽기-프로그램 유닛(115)에 의해 발생된 4개의 특정 출력 인코딩된 신호 DCOUT 값에 응답하여 메트릭 유닛(605)에 의해 발생된 메트릭 값 MR0, MR1, MR2, MR3를 보여준다. 수신된 DCOUT의 제1 값은 값 "135"를 포함할 수 있다. 예컨대 이 값은 도 4에서 설명된 예에서 프로그래밍되었던 제1 메모리 셀(110)이 취한 임계 전압 값에 대응할 수 있다. 따라서 DCOUT="135"는 서브세트 B0에 속할 수 있는 프로그램 분포 D8의 중심 피크 부근에 위치한 임계 전압에 대응할 수 있다. 이 특정 출력 인코딩된 신호 DCOUT 값을 가지고 최고 메트릭 값은 "60"일 수 있는 MR0일 수 있다(명확하게 하기 위해 여기서는 메트릭 값은 십진수로 나타냄).
수신된 DCOUT의 제2 값은 값 "157"을 가질 수 있다. 예컨대 이 값은 도 4에서 설명된 예에서 프로그래밍되었던 제2 메모리 셀(110)이 취한 임계 전압 값에 대응할 수 있다. 따라서 DCOUT="157"은 서브세트 B1에 속할 수 있는 프로그램 분포 D9와 서브세트 B2에 속할 수 있는 프로그램 분포 D10 사이의 중심 값 부근에 위치한 임계 전압에 대응할 수 있다. 실제로 이 특정 DCOUT 값을 가지고 MR2="31"일 수 있는 최고 메트릭 값은 메트릭 값 MR1="29"와 거의 같을 수 있다.
수신된 DCOUT의 제3 값은 값 "84"를 포함할 수 있다. 예컨대 이 값은 도 4에서 설명된 예에서 프로그래밍되었던 제3 메모리 셀(110)이 취한 임계 전압 값에 대응할 수 있다. 따라서 DCOUT="84"는 서브세트 B0에 속하지만 서브세트 B1에 속할 수 있는 프로그램 분포 D5쪽으로 약간 이동한 프로그램 분포 D4의 중심 피크 부근에 위치한 임계 전압에 대응할 수 있다. 그 결과, MR0="40"을 포함할 수 있는 최고 메트릭 값은 MR1="25"를 포함할 수 있는 두 번째로 최고로 높은 메트릭 값보다 상당히 더 클 수 있다.
마지막으로, DCOUT의 제4 값은 값 "61"을 가질 수 있다. 예컨대 이 값은 도 4에서 설명된 예에서 프로그래밍되었던 제4 메모리 셀(110)이 취한 임계 전압 값에 대응할 수 있다. 따라서 DCOUT="61"은 서브세트 B3에 속하지만 서브세트 B2에 속할 수 있는 프로그램 분포 D2쪽으로 약간 이동한 프로그램 분포 D3의 중심 피크 부근에 위치한 임계 전압에 대응할 수 있다. 그 결과, MR3="48"을 포함할 수 있는 최고 메트릭 값은 MR2="20"을 포함할 수 있는 두 번째로 최고로 높은 메트릭 값보다 상당히 더 클 수 있다. 따라서 제1 메모리 셀이 서브세트 B0에 속하는 프로그램 분포로 프로그래밍되었다고 판단할 수 있다. 마찬가지로 제3 메모리 셀은 서브세트 B0에 속하는 프로그램 분포로 프로그래밍되었을 수 있고, 제4 메모리 셀은 서브세트 B3에 속하는 프로그램 분포로 프로그래밍되었을 수 있다. 그러나 서브세트 B1 및 B2는 거의 동일한 확률을 갖고 있을 수 있기 때문에 제2 메모리 셀이 프로그래밍되었을 수 있는 서브세트를 결정하는 것은 비교적 어려울 수 있다.
실시예에서, 뒤에 더 자세히 설명하겠지만, 디코딩 유닛(160)은 인코딩 유닛(130)에 의해 인코딩된 정보 비트를 검색하여 이 정보를 n개의 메모리 셀(110)로 이루어진 그룹에 저장할 수 있다. 예컨대 디코딩 유닛(160)은 n개의 메모리 셀(110)로부터 읽어낸 DCOUT에 따라서 산출된 메트릭 값에 대해 소프트 판정 디코딩 동작을 수행함으로써 정보 비트를 검색할 수 있다. 다시 도 6을 참조로 설명하면, 메트릭 유닛(605)은 n개의 메모리 셀(110)로부터 읽어낸 DCOUT의 메트릭 값 MR0, MR1, MR2, MR3를 누적할 수 있는 가산-비교-선택(ACS) 유닛(610)에 연결될 수 있다. 이런 식으로 경로 메트릭 값 PMVi(k)(여기서 i=0 내지 7, 예컨대 인코딩 유닛(130)에 의해 구현된 코드를 정의하는 격자 구조도를 구성하는 상태 Si(k)의 수) 세트가 메모리 셀마다 생성될 수 있다. 이와 같은 경로 메트릭 값에 따라서 n개의 메모리 셀(110)에 저장된 정보 비트를 인코딩하기 위해 거쳤던 가장 가능성이 높은 인코딩 경로를 결정할 수가 있다. n개의 메모리 셀(110) 각각에 대응하는 경로 메트릭 값 PMVi(k)는 예컨대 경로 메트릭 레지스터(615)에 임시로 저장될 수 있다.
디코딩 유닛(160)은 n개의 메모리 셀(110)로부터 읽어낸 DCOUT을 임시로 저장하는 인코딩된 정보 레지스터(617)와, 경로 메트릭 값 PMVi(k)를 수신하기 위해 경로 메트릭 레지스터(615)에 연결된 트레이스백(trace-back) 유닛(620)을 더 포함할 수 있다. 트레이스백 유닛(620)은, 수신된 경로 메트릭 값 PMVi(k)에 적어도 부분적으로 기초하여, n개 메모리 셀(110) 각각에 대해서 특정 메모리 셀(110)이 프로그래밍되었던 프로그램 분포를 포함하는 서브세트를 검색하기 위해 소프트 판정 동작을 실시할 수 있다. 트레이스백 유닛(620)은 선형 결합기 유닛(205)을 통해 이전에 인코딩되어 특정 메모리 셀(110)에 저장된 신호 DIN의 일부를 포함할 수 있는 출력 신호 DOUT의 제1 부분을 검색할 수 있다. 도 2c에 도시된 격자 코드(230)에 의해 정의된 ECC를 참조로 설명하면, 트레이스백 유닛(620)에 의해 검색된 신호 DIN의 일부는 3 비트 스트링 a1(k), a2(k), a3(k) 중 비트 a3(k)를 포함할 수 있다. 비트 a3(k)는 DCIN의 비트 b3(k), b4(k)를 생성하는데 이용될 수 있다.
인코딩되지 않았던 신호 DIN의 부분(예컨대 2 비트 a1(k), a2(k))에 대응하는 신호 DOUT의 나머지 부분을 검색하기 위하여 디코딩 유닛(160)은 트레이스백 유닛(620)과 인코딩된 정보 레지스터(617)에 연결된 판별기 유닛(625)을 더 포함할 수 있다. 특히, 뒤에 설명하겠지만, 신호 DOUT의 나머지 부분은 트레이스백 유닛(620)에 의해 검색된 특정 서브세트와 DCOUT에 적어도 부분적으로 기초하여 산출될 수 있다.
일례로서, 디코딩 유닛(160)은 도 4에서 설명된 예에서 제공된 인코딩된 신호 DCIN에 따라서 프로그래밍되었던 4개 메모리 셀(110)로부터 감지된 출력 인코딩된 신호 DCOUT 시퀀스를 디코딩할 수 있다. 따라서 제1 메모리 셀(110)은 스트링 a1(k)=0, a2(k)=1, a3(k)=0에 따라서 프로그래밍될 수 있고, 제2 메모리 셀(110)은 스트링 a1(k+1)=0, a2(k+1)=1, a3(k+1)=1에 따라서 프로그래밍될 수 있고, 제3 메모리 셀(110)은 스트링 a1(k+2)=1, a2(k+2)=0, a3(k+2)=1에 따라서 프로그래밍될 수 있고, 제4 메모리 셀(110)은 스트링 a1(k+3)=0, a2(k+3)=0, a3(k+3)=0에 따라서 프로그래밍될 수 있다. 디코딩 유닛(160)에 의해 실시된 동작은 도 8을 참조로 설명한다. 도 8은 전술한 4개 메모리 셀에 대응하는 격자 구조도(405, 410, 415, 420)를 보여준다.
제1의 k번째 동작 사이클에서 메트릭 유닛(605)은 제1 메모리 셀의 임계 전압에 대응하는 제1 출력 인코딩된 신호 DCOUT을 감지 회로(500)로부터 수신할 수 있다. 이 경우에 이 출력 인코딩된 신호 DCOUT은 "135"일 수 있다. 전술한 바와 같이, 메트릭 유닛(605)은 이 경우에 각각 "60", "10", "2" 및 "12"일 수 있는 대응하는 메트릭 값 MR0, MR1, MR2, MR3을 산출할 수 있다.
ACS 유닛(610)은 하기에 설명되는 프로세스에 따라서 메트릭 값 MR0, MR1, MR2, MR3으로부터 경로 메트릭 값 PMVi(k)를 생성할 수 있다. 전술한 바와 같이, 인코딩 유닛(130)이 수행한 인코딩 동작 중에는 격자 구조도에서의 천이는 대응하는 서브세트 선택과 연관될 수 있다. 이에 따라서 ACS 유닛(610)은 상태 Si(k)와 상태 Si(k+1) 간에 발생하는 격자 구조도(405)에서의 각 가능한 천이에 그 천이와 연관된 서브세트의 메트릭 값을 할당할 수 있다. 예컨대 천이 화살표 t00으로 식별될 수 있는 상태 S0(k)로부터 상태 S0(k+1)로의 천이는 서브세트 B0의 선택과 연관될 수 있으므로 ACS 유닛(610)은 이 경우에 "60"일 수 있는 메트릭 값 MR0을 그 천이에 할당할 수 있다. 천이 화살표 t'04로 식별될 수 있는 상태 S0(k)로부터 상태 S4(k+1)로의 천이는 서브세트 B2의 선택과 연관될 수 있다. 따라서 ACS 유닛(610)은 이 경우에 "2"일 수 있는 메트릭 값 MR2를 그 천이에 할당할 수 있다. 그와 같은 격자 구조도도 단지 예시적인 것이며 본 발명은 그에 한정되는 것은 아니다.
실시예에서 메트릭 값을 격자 구조도(405)의 여러 가지 천이에 할당할 있는 프로세스는 대응하는 "분기(branch) 메트릭 세트"를 정의할 수 있다. 격자 구조도(405)의 각 상태 Si(k)에 대해서, "분기 메트릭 값"이라고 하는 2개의 메트릭 값은 상태 Si(k) 자신으로부터 분기하는 2개의 천이에 할당될 수 있다. 그와 같은 분기 메트릭 값은 예컨대 분기 메트릭 레지스터(630)에 임시로 저장될 수 있다.
그런 다음에, 격자 구조도(405)의 각 상태 Si(k)에 대해서, ACS 유닛(610)은 이 2개의 대응하는 메트릭 값을 비교하고, 그 중 높은 것을 선택하고, 그 선택된 메트릭 값에 경로 메트릭 값 PMVi(k)를 설정하고, 그 선택된 메트릭 값을 경로 메트릭 레지스터(615)에 저장할 수 있다. 이 경우에 제1 메모리 셀에 대응하는, k번째 동작 사이클 중에 생성된 경로 메트릭 값 PMVi(k)는 PMV0(k)="60", PMV1(k)="12", PMV2(k)="60", PMV3(k)="12", PMV4(k)="60", PMV5(k)="12", PMV6(k)="60" 및 PMV7(k)="12"를 포함할 수 있다.
이어지는 (k+1)번째 동작 사이클에서 메트릭 유닛(605)은 제2 메모리 셀의 임계 전압에 대응할 수 있는 제2 출력 인코딩된 신호 DCOUT을 감지 회로(500)로부터 수신할 수 있다. 이 경우에 예컨대, DCOUT은 "157"일 수 있으며, 대응하는 메트릭 값 MR0, MR1, MR2, MR3은 각각 "8", "29", "31" 및 "11"일 수 있다. 전술한 바와 같이, 그와 같은 새로운 메트릭 값을 이용함으로써 ACS 유닛(610)은 격자 구조도(410)에 대응하는 새로운 분기 메트릭 세트를 생성할 수 있으며 그 분기 메트릭 세트를 분기 메트릭 레지스터(630)에 저장할 수 있다.
실시예에서, 격자 구조도(410)의 각 상태 Si(k+1)에 대해서, ACS 유닛(610)은 이 2개의 대응하는 메트릭 값을 비교하고, 그 중 높은 것을 선택하고, 그 선택된 메트릭 값과 경로 메트릭 레지스터(615)에 이미 저장된 이전의 k번째 동작 사이클에서 산출된 경로 메트릭 값 PMVi(k) 간의 메트릭 값들의 합에 메트릭 값 PMVi(k+1)을 설정할 수 있다. ACS 유닛(610)은 그 경로 메트릭 값을 경로 메트릭 레지스터(615)에 저장할 수 있다. 이 경우에 제2 메모리 셀에 대응하는 도출된 경로 메트릭 값 PMVi(k+1)은 PMV0(k+1)="68", PMV1(k+1)="89", PMV2(k+1)="91", PMV3(k+1)="71", PMV4(k+1)="91", PMV5(k+1)="71", PMV6(k+1)="68" 및 PMV7(k+1)="89"를 포함할 수 있다. 물론 이와 같은 메트릭 값 할당의 세부 사항은 단지 예시적인 것이며 본 발명은 그에 한정되는 것은 아니다. 제3 메모리 셀에 대응하는,(k+2)번째 동작 사이클 중에 생성된 경로 메트릭 값 PMVi(k+2)는 PMV0(k+2)="108", PMV1(k+2)="116", PMV2(k+2)="111", PMV3(k+2)="111", PMV4(k+2)="129", PMV5(k+2)="99", PMV6(k+2)="131" 및 PMV7(k+2)="97"을 포함할 수 있다. 더욱이 제4 메모리 셀에 대응하는, (k+3)번째 동작 사이클 중에 생성된 경로 메트릭 값 PMVi(k+3)은 PMV0(k+3)="136", PMV1(k+3)="159", PMV2(k+3)="149", PMV3(k+3)="179", PMV4(k+3)="128", PMV5(k+3)="159", PMV6(k+3)="140" 및 PMV7(k+3)="145"를 포함할 수 있다.
실시예에서 경로 메트릭 값 PMVi(k), PMVi(k+1), PMVi(k+2), PMVi(k+3)은 각 동작 사이클에서 격자 구조도의 각 상태에 대해 최고 메트릭 값을 가진 천이를 선택함으로써 생성될 수 있다. 이에 따라서 선형 결합기 유닛(205)에 제공된 신호 DIN의 일부를 인코딩하기 위한 인코딩 유닛(130)이 따르는 인코딩 경로를 검색할 수 있다. 구체적으로, 트레이스백 유닛(620)은 예컨대 경로 메트릭 레지스터(615)에 액세스하고, 읽어질 마지막 메모리 셀(110)에 대응하는 경로 메트릭 값 PMVi(k+3)을 스캔하고, 최고 경로 메트릭 값 PMVi(k+3)을 가진 상태 Si(k+4)를 선택할 수 있다. 소프트 판정 선택을 이용하면 이 상태는 검색될 인코딩 경로의 최종 상태가 될 가장 가능성이 높은 후보일 수 있다. 이 예에서 이 상태는 "179"인 경로 메트릭 PMVi(k+3)을 가진 상태 S3(k+4)를 포함할 수 있다.
이 시점에서, 인코딩 경로의 이전 상태(이 경우에는 (k+3) 상태)를 트레이스 백하기(trace back) 위해서 트레이스백 유닛(620)은 상태 Si(k+3)에서 선택된 상태 Si(k+4)로의 천이를 체크할 수 있다. 이 경우에 그와 같은 천이는 상태 S6(k+3)에서 시작하는 천이와 상태 S7(k+3)에서 시작하는 천이를 포함할 수 있다. 그러면 트레이스백 유닛(620)은 최고 경로 메트릭 값 PMVi(k+2)를 가진 상태 Si(k+3)에서 시작하는 천이를 선택할 수 있다. 선택된 상태는 검색될 인코딩 경로의 마지막 상태 바로 전의 상태를 나타낼 수 있다. 이 예에서, 선택된 상태는 "131"인 경로 메트릭 값 PMVi(k+2)를 가진 상태 S6(k+3)을 포함할 수 있다. 인코딩 경로의 마지막 2개의 상태를 연결하는 천이를 결정하고 나면, 예컨대 격자 구조도의 각 천이가 특정 서브세트(이 경우에는 서브세트 B3)의 선택과 연관될 수 있기 때문에, 제4 메모리 셀(110)의 임계 전압이 프로그래밍되었던 서브세트를 검색하는 것이 가능할 수 있다.
전술한 바와 같이, 한 쌍의 상태들 간의 격자 구조도의 각 천이는 인코딩되었던 신호 DIN의 일부의 대응 값과도 연관될 수 있다. 즉, 인코딩 경로의 마지막 2개의 상태를 연결하는 천이를 결정하고 나면, 제4 메모리 셀(110)에 저장되었던 비트 a3(k+3)을 검색하는 것이 가능할 수 있다. 이 예에서 상태 S6(k+3)에서 시작하여 상태 S3(k+4)에서 끝날 수 있는 선택된 천이는 a3(k+3)="0"에 대응할 수 있다. 이 시점에서 프로세스는 최고 경로 메트릭 값을 가진 천이를 선택함으로써 인코딩 경로의 다른 이전의 상태를 트레이스 백하기 위해 반복될 수 있다.
도 8을 참조로 설명하면, 전술한 프로세스에 따라 검색된 인코딩 경로는 두꺼운 선으로 나타내며 (첫 번째 상태부터 마지막 상태로의) 상태 시퀀스: S0(k)-S0(k+1)-S4(k+2)-S6(k+3)-S3(k+4)를 포함한다. 이 인코딩 경로는 도 4에서 설명된 예의 제4 메모리 셀(110)에 저장될 정보 비트를 인코딩하기 위해 인코딩 유닛(130)이 실제로 따르는 경로와 일치할 수 있다. 이에 따라서 트레이스백 유닛(620)에 의해 생성된 비트 시퀀스가 올바른 것, 예컨대 a3(k)="0", a3(k+1)="1", a3(k+2)="1" 및 a3(k+3)="0"일 수 있다. 인코딩되지 않았던 신호 DIN의 부분(예컨대 비트 a1(k), a2(k), a1(k+1), a2(k+1), a1(k+2), a2(k+2), a1(k+3) 및 a2(k+3))에 대응하는 신호 DOUT의 나머지 부분은 대신에 판별기 유닛(625)에 의해 검색될 수 있다. 구체적으로, 각 메모리 셀(110)에 대해, 판별기 유닛(625)은 메모리 셀(110)의 임계 전압이 프로그래밍되었던 서브세트에 적어도 부분적으로 기초하고, 그리고 메모리 셀(110)의 임계 전압을 나타내는 DCOUT에 적어도 부분적으로 기초하여 신호 DOUT의 일부를 검색할 수 있다. 임계 전압은 트레이스백 유닛(620)에 의해 결정될 수 있다. DCOUT은 인코딩된 정보 레지스터(617)에 저장될 수 있다.
실시예에서 서브세트에 속하는 프로그램 분포는 서로 중첩하지 않을 수 있으며, 서브세트 내의 각 프로그램 분포는 신호 DIN의 결정된 부분(예컨대 인코딩되지 않았던 부분)과 연관될 수 있다. 이에 따라서 메모리 셀(110)의 임계 전압이 프로그래밍되었던 서브세트와 그 임계 전압 자체의 값을 안다면 그 임계 전압이 프로그래밍되었던 특정 프로그램 분포와 신호 DIN의 관련 부분을 식별하는데 충분할 수 있다. 예컨대 앞서의 예의 제4 메모리 셀(110)을 참조로 설명하면, 트레이스백 유닛(620)은 이 메모리 셀의 임계 전압이 프로그래밍되었던 서브세트가 서브세트 B3이라고 판단할 수 있다. 도 3을 참조로 설명하면, 서브세트 B3은 프로그램 분포 D3, D7, D11 및 D15를 포함할 수 있다. 관련된 DCOUT은 서브세트 B3에 속하지만 서브세트 B2에 속할 수 있는 프로그램 분포 D2쪽으로 약간 이동한 프로그램 분포 D3의 중심 피크 부근에 위치한 임계 전압에 대응할 수 있다(도 7C 참조). 따라서, 그 임계 전압이 프로그래밍되었던 서브세트가 서브세트 B3을 포함한다는 것을 안다면 그 임계 전압이 프로그램 분포 D3로 프로그래밍되었는지를 판단할 수 있다. 예컨대 각 서브세트의 제1 프로그램 분포 D0, D1, D2, D3은 b1(k+3)=0 및 b2(k+3)=0과 연관될 수 있고, 제2 프로그램 분포 D4, D5, D6, D7은 b1(k+3)=1 및 b2(k+3)=0과 연관될 수 있고, 제3 프로그램 분포 D8, D9, D10, D11은 b1(k+3)=0 및 b2(k+3)=1과 연관될 수 있고, 제4 프로그램 분포 D12, D13, D14, D15는 b1(k+3)=1 및 b2(k+3)=1과 연관될 수 있다. b1(k+3)=a1(k+3)이고 b2(k+3)=a2(k+3)이므로, 제4 메모리 셀(110)에 대응하는 신호 DOUT의 나머지 부분은 a1(k+3)=0과 a2(k+3)=0을 포함할 수 있다. 이 예의 제4 메모리 셀(110)에 대해 이러한 동작을 반복함으로써, 신호 DOUT은 검색될 수 있다. 예컨대 제1 메모리 셀(110)에 대해서는 a1(k)=0, a2(k)=1, a3(k)=0이고, 제2 메모리 셀(110)에 대해서는 a1(k+1)=0, a2(k+1)=1, a3(k+1)=1이고, 제3 메모리 셀(110)에 대해서는 a1(k+2)=1, a2(k+2)=0, a3(k+2)=1이고, 제4 메모리 셀(110)에 대해서는 a1(k+3)=0, a2(k+3)=0, a3(k+3)=0이다.
전술한 인코딩-디코딩 유닛(120)이 수행하는 동작은 선형 결합기(205)에 의해 정의된 특정 컨볼루션 코드와 특정 서브세트 분할을 이용할 수 있다. 그러나 메모리 셀에 저장될 정보를 인코딩하는데 이용되는 서브세트 분할과 코드가 다른 경우에도 유사한 고려 사항이 적용될 수 있다. 예컨대 전술한 실시예들에서, 각 메모리 셀(110)에 3 비트 정보(비트 a1(k), a2(k), a3(k)로 구성된 코딩되지 않은 스트링과 같은 것)를 저장하기 위해 각 메모리 셀(110)은, 대응하는 (인코딩된) 스트링 b1(k), b2(k), b3(k), b4(k)가 취하는 값에 따라서, 16개의 프로그램 분포 D0, D1, ..., D15에 대응하는 16가지 상이한 상태 중 대응하는 상태로 프로그래밍될 수 있다. 프로그램 분포의 수는 그 스트링을 발생시키는데 이용된 코드에 의해 도입된 리던던시에 의해 정의될 수 있는 스트링 b1(k), b2(k), b3(k), b4(k)를 구성하는 비트 수에 의해 정의될 수 있다.
메모리 셀에 본래적인 공차에 의한 한계 때문에 상기 예에서 설명된 16개와 같은 프로그램 분포 수는 지나치게 많은 것일 수 있으며 인접한 프로그램 분포들간의 중첩이 지나치게 많게 될 수가 있다. 보다 적은 수의 프로그램 분포를 이용하여 동일한 수의 정보 비트를 저장할 수 있는 방법은 정보를 둘 이상의 메모리 셀에 대응하는 블록들에 저장되도록 인코딩하는 것일 수 있다. 이런 식으로 코드에 의해 정의된 리던던시는 그 블록들에 대응하는 메모리 셀들 간에 세분될 수 있다. 그 결과, 각 메모리 셀이 프로그래밍될 수 있는 프로그램 분포의 수가 줄어들 수 있다. 이러한 해법을 구현하는 방법의 일례를 도 9a, 9B 및 9C를 참조로 설명한다. 특정 예에서 메모리에 저장될 정보는 6 비트 정보의 블록들을 포함할 수 있으며, 6 비트의 각 블록은 대응하는 어드레스 지정된 메모리 셀(110) 쌍에 저장될 수 있다. 이를 위해 인코딩 유닛(130)은 예컨대 인코딩 유닛(910)으로 변경될 수 있다. 특정 구현에서 한 쌍의 어드레스 지정된 메모리 셀(110)에 저장될 신호 DIN은 6 비트 스트링 a1(k), a2(k), a3(k), a4(k), a5(k), a6(k)로 나타낼 수 있다. 인코딩 유닛(910)은 신호 DIN을 구성하는 6 비트 스트링을 인코딩하여 인코딩된 신호 DCIN을 얻을 수 있다. 인코딩 유닛(910)은 선형 인코딩 방식을 이용하여 신호 DIN에 리던던시를 부가하는 컨볼루션 인코더를 포함할 수 있다. 그러나, 이 경우에, 인코딩 유닛(910)에 의해 부가된 리던던시는 한 쌍의 메모리 셀(110) 당 1 비트를 포함할 수 있다. 신호 DIN을 구성하는 각 6 비트 스트링 a1(k), a2(k), a3(k), a4(k), a5(k), a6(k)는 인코딩된 신호 DCIN을 구성하는 대응하는 7 비트 심볼 b1(k), b2(k), b3(k), b4(k), b5(k), b6(k), b7(k)로 인코딩될 수 있다. 그러면 그와 같은 7 비트 심볼 b1(k), b2(k), b3(k), b4(k), b5(k), b6(k), b7(k)는 어드레스 코드 ADR로 어드레스 지정된 한 쌍의 메모리 셀(110)에 저장되도록 읽기-프로그램 유닛(115)에 제공될 수 있다. 실시예에 따라서, 도 9b에 도시된 바와 같이, 비트 b1(k), b2(k), b3(k), b4(k)는 비트 a1(k), a2(k), a3(k), a4(k)와 일치할 수 있으며, 비트 b5(k), b6(k), b7(k)는 선형 결합기(920)에 의해 비트 a5(k), a6(k)로부터 생성될 수 있다. 이 6 비트 스트링 a1(k), a2(k), a3(k), a4(k), a5(k), a6(k)는 대응하는 7 비트 심볼 b1(k), b2(k), b3(k), b4(k), b5(k), b6(k), b7(k)로 인코딩될 수 있기 때문에, 각 메모리 셀(110) 쌍은 27=128개의 상이한 상태로 프로그래밍될 수 있다.
따라서, 그 어드레스 지정된 메모리 셀(110) 쌍들 각각은 (그 쌍의 제1 메모리 셀에 대한) 각자의 12개 프로그램 분포 E0, E1, ..., E11과 (그 쌍의 제2 메모리 셀에 대한) 12개 프로그램 분포 F0, F1, ..., F11에 대응하는 12가지 상이한 상태들 중 해당하는 상태로 프로그래밍될 수 있다. 이런 식으로 각 메모리 셀(110) 쌍이 프로그래밍될 수 있는 128가지 상이한 상태들 중 각 상태는 프로그램 분포 쌍들 Ei, Fj(i=1 내지 11, j=1 내지 11)에 의해 정의된 12*12=144가지의 상태들 중 해당하는 상태와 연관될 수 있다. 따라서 그와 같은 값을 이용하면 144-128=16개의 분포 쌍들 Ei, Fj는 사용할 필요가 없다.
비트 b1(k), b2(k), b3(k), b4(k), b5(k), b6(k), b7(k)의 값에 의해 정의된 128가지 상태와 프로그램 분포 쌍들 Ei, Fj 간의 관계는 인코딩 유닛(910)에 또는 읽기-프로그램 유닛(115)에 포함된 맵핑 유닛(미도시)에 의해 정의될 수 있다. 이 경우에도 비트 b1(k), b2(k), b3(k), b4(k), b5(k), b6(k), b7(k)에 의해 정의된 128가지 상태와 여러 가지 프로그램 분포 쌍들 Ei, Fj 간의 연관은 서브세트 분할과 관련될 수 있다. 더 구체적으로, 도 9c에 도시된 바와 같이, 128가지 상태는 각각이 24=16개의 프로그램 분포 쌍들 Ei, Fj들을 포함하는 23=8개의 상이한 서브세트 SB0, SB1, SB2, SB3, SB4, SB5, SB6, SB7으로 분할될 수 있다. 각 서브세트는 선형 결합기(920)에 의해 생성된 스트링 b5(k), b6(k), b7(k)의 대응 값에 의해 식별될 수 있다. 더욱이, 각 서브세트 SB0, SB1, SB2, SB3, SB4, SB5, SB6, SB7 내에서 여러 가지 프로그램 분포 쌍들 Ei, Fj들 간의 "거리"는 동일 서브세트의 프로그램 분포들 간의 중첩을 피하도록 증가될 수 있다.
도 10은 실시예에 따른 컴퓨팅 시스템과 메모리 장치의 개략도이다. 이 컴퓨팅 장치는 예컨대 애플리케이션 및/또는 기타 다른 코드를 실행하는 하나 이상의 프로세서를 포함할 수 있다. 예컨대 메모리 장치(810)는 도 1에 도시된 메모리(100)를 포함할 수 있다. 컴퓨팅 장치(804)는 메모리 장치(810)를 관리하도록 구성될 수 있는 임의의 장치, 가전 기기 또는 기계를 대표할 수 있다. 메모리 장치(810)는 메모리 컨트롤러(815)와 메모리(822)를 포함할 수 있다. 예컨대 컴퓨팅 장치(804)는 예컨대 데스크탑 컴퓨터, 랩탑 컴퓨터, 워크스테이션, 서버 장치 등과 같은 하나 이상의 컴퓨팅 장치 및/또는 플랫폼; 예컨대 개인 휴대 정보 단말, 이동 통신 장치 등과 같은 하나 이상의 개인 컴퓨팅 또는 통신 장치나 가전 기기; 예컨대 데이터베이스나 데이터 스토리지 서비스 프로바이더/시스템과 같은 컴퓨팅 시스템 및/또는 관련 서비스 프로바이더 설비; 및/또는 이들의 조합을 포함할 수 있으나 이에 한정되는 것은 아니다.
시스템(800)의 여러 가지 장치의 전부 또는 일부는 하드웨어, 펌웨어, 소프트웨어 또는 이들의 조합을 이용하거나 포함함으로써 구현될 수 있음은 잘 알 수 있다. 따라서 예컨대 컴퓨팅 장치(804)는 버스(840)와 호스트 또는 메모리 컨트롤러(815)를 통해 메모리(822)에 작용적으로 연결되는 적어도 하나의 처리 유닛(820)을 포함할 수 있으나 이에 한정되는 것은 아니다. 처리 유닛(820)은 데이터 컴퓨팅 절차 또는 프로세스의 적어도 일부를 수행하도록 구성될 수 있는 하나 이상의 회로를 대표한다. 예컨대 처리 유닛(820)은 하나 이상의 프로세서, 컨트롤러, 마이크로프로세서, 마이크로컨트롤러, 주문형 직접 회로, 디지털 신호 프로세서, 프로그래머블 로직 장치, 필드 프로그래머블 게이트 어레이 등, 또는 이들의 조합을 포함할 수 있으나 이에 한정되는 것은 아니다. 처리 유닛(820)은 메모리 컨트롤러(815)와 통신하도록 구성된 운영 체제를 포함할 수 있다. 그와 같은 운영 체제는 예컨대 버스(840)를 통해 메모리 컨트롤러(815)에 전송될 명령을 발생할 수 있다. 그와 같은 명령은 읽기 및/또는 쓰기 명령을 포함할 수 있다. 예컨대 메모리 컨트롤러(815)는 쓰기 명령에 응답하여, 이 쓰기 명령과 연관된 정보를 쓰기 위한 설정 또는 리셋 펄스와 같은 바이어스 신호를 예컨대 메모리 파티션에 제공할 수 있다. 일 구현에서 메모리 컨트롤러(815)는 메모리 장치(810)를 동작시킬 수 있으며, 처리 유닛(820)은 하나 이상의 애플리케이션을 호스트(host)하며, 그리고/또는 메모리 컨트롤러에 대한 쓰기 명령을 개시하여, 예컨대 메모리 장치(810)의 메모리 셀에의 액세스를 제공할 수 있다.
일 실시예에서 시스템은 하나 이상의 멀티레벨 메모리 셀에 걸쳐 정보를 저장하는 메모리 어레이를 포함하는 메모리 장치, 이 메모리 어레이에 소프트 판정과 컨볼루션 인코딩을 적용하여 이 정보의 값을 결정하는 컨트롤러, 및 이 메모리 장치를 동작시키는 메모리 장치 컨트롤러를 포함할 수 있다. 이 시스템은 하나 이상의 애플리케이션을 호스트하며, 메모리 장치 컨트롤러에 대한 쓰기 및/또는 읽기 명령을 개시하여 메모리 어레이에의 액세스를 제공하는 프로세서를 더 포함할 수 있다.
메모리(822)는 임의의 데이터 저장 메커니즘을 대표한다. 메모리(822)는 예컨대 주 메모리(824) 및/또는 보조 메모리(826)를 포함할 수 있다. 주 메모리(824)는 예컨대 RAM(random access memory), ROM(read only memory) 등을 포함할 수 있다. 이 예에서는 주 메모리(824)가 처리 유닛(820)과 분리되어 있는 것으로 예시되어 있지만, 주 메모리(824)의 전부 또는 일부는 처리 유닛(820)의 내부에 또는 이 유닛과 동일 위치에 배치되고/연결될 수 있음은 물론이다.
보조 메모리(826)는 예컨대 주 메모리와 동일 또는 유사한 타입의 메모리 및/또는 예컨대 디스크 드라이브, 광 디스크 드라이브, 테이프 드라이브, 고상(solid state) 메모리 드라이브 등과 같은 하나 이상의 데이터 저장 장치 또는 시스템을 포함할 수 있다. 특정 구현에서, 보조 메모리(826)는 컴퓨터 판독 매체(828)를 작용적으로 수용하거나 이에 연결되도록 구성될 수 있다. 컴퓨터 판독 매체(828)는 예컨대 시스템(800)의 장치들 중 하나 이상을 위한 데이터, 코드 및/또는 명령어를 갖고 있고 그리고/또는 이에 액세스할 수 있는 임의의 매체를 포함할 수 있다.
컴퓨팅 장치(804)는 예컨대 입/출력부(832)를 포함할 수 있다. 입/출력부(832)는 인간 및/또는 기계 입력을 받아들이거나 도입하도록 구성될 수 있는 하나 이상의 장치 또는 피처(feature), 및/또는 인간 및/또는 기계 출력을 전달 또는 제공하도록 구성될 수 있는 하나 이상의 장치 또는 피처를 대표한다. 예컨대 입/출력부(832)는 작용적으로 구성된 디스플레이, 스피커, 키보드, 마우스, 트랙볼, 터치 스크린, 데이터 포트 등을 포함할 수 있다.
지금까지 예시적인 실시예들을 통해 본 발명을 설명하였지만 당업자라면 본 발명의 본질과 범위로부터 벗어남이 없이 다른 여러 가지 변형이 가능하고 등가물로 대체될 수 있음을 잘 알 것이다. 그 외에도 특정 상황을 여기서 설명된 핵심 개념에서 벗어남이 없이 본 발명의 교시에 맞도록 여러 가지로 변형할 수 있다. 그러므로 본 발명은 개시된 특정 실시예들에 한정되는 것이 아니라, 첨부된 청구범위와 그 등가물의 범위 내에 있는 모든 실시예들을 포함하는 것이다.

Claims (20)

  1. 하나 이상의 멀티레벨 메모리 셀에 정보를 저장하는 단계; 및
    소프트 판정과 컨볼루션 인코딩을 이용하여 상기 정보의 값을 결정하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 정보 저장 단계는
    컨볼루션 코드에 따라서 상기 정보를 인코딩하여 심볼을 제공하는 단계; 및
    상기 심볼을 상기 하나 이상의 멀티레벨 메모리 셀에 저장하는 단계
    를 더 포함하는 방법.
  3. 제2항에 있어서,
    상기 저장된 심볼로부터 상기 정보를 검색하고 상기 소프트 판정과 컨볼루션 디코딩을 적용하여 상기 저장된 정보를 복구하는 단계를 더 포함하는 방법.
  4. 제1항에 있어서,
    상기 소프트 판정은 상기 정보를 결정하기 위해 복수의 프로그램 상태 중에서 가장 가능성이 큰 프로그램 상태를 고려하는 것을 포함하는 방법.
  5. 제1항에 있어서,
    상기 정보를 상기 하나 이상의 멀티레벨 메모리 셀의 임계 전압을 나타내는 수의 디지털 시퀀스로 변환하는 단계; 및
    상기 디지털 시퀀스에 대해 상기 소프트 판정을 적용하고 상기 컨볼루션 인코딩을 디코딩하여 상기 정보를 읽어내는 단계
    를 더 포함하는 방법.
  6. 제1항에 있어서,
    상기 멀티레벨 메모리 셀은 2 이상의 비트를 저장할 수 있는 방법.
  7. 제1항에 있어서,
    감지된 임계 전압이 상기 하나 이상의 멀티레벨 메모리 셀의 특정 프로그램 분포에 속하는 확률을 정량화하는 메트릭 값을 생성하는 단계를 더 포함하는 방법.
  8. 제1항에 있어서,
    탐색표를 이용하여 메트릭 함수를 생성하는 단계를 더 포함하고, 상기 메트릭 함수는 디지털 변환된 셀 임계 전압 값에 적어도 부분적으로 기초하는 방법.
  9. 하나 이상의 멀티레벨 메모리 셀에 정보를 저장하는 메모리 어레이; 및
    상기 메모리 어레이에 소프트 판정을 적용하고 컨볼루션 인코딩을 디코딩하여 상기 정보의 값을 결정하는 컨트롤러
    를 포함하는 메모리 장치.
  10. 제9항에 있어서,
    상기 소프트 판정은 상기 정보를 결정하기 위해 복수의 프로그램 상태 중에서 가장 가능성이 큰 프로그램 상태를 고려하는 메모리 장치.
  11. 제9항에 있어서,
    상기 하나 이상의 멀티레벨 메모리 셀의 임계 전압을 결정하는 감지 회로; 및
    상기 정보를 상기 하나 이상의 멀티레벨 메모리 셀의 상기 임계 전압을 나타내는 수의 디지털 시퀀스로 변환하는 변환기
    를 더 포함하는 메모리 장치.
  12. 제11항에 있어서,
    상기 감지 회로는 상기 하나 이상의 멀티레벨 메모리 셀 중 하나에 대응하는 비트 라인 전압과 기준 전압을 수신하는 다중 입력부를 가진 전압 비교기를 포함하는 메모리 장치.
  13. 제9항에 있어서,
    상기 멀티레벨 메모리 셀은 2 이상의 비트를 저장할 수 있는 메모리 장치.
  14. 제9항에 있어서,
    감지된 임계 전압이 상기 하나 이상의 멀티레벨 메모리 셀의 특정 프로그램 분포에 속하는 확률을 정량화하는 메트릭 값을 생성하는 디코딩 유닛을 더 포함하는 메모리 장치.
  15. 하나 이상의 멀티레벨 메모리 셀에 정보를 저장하는 메모리 어레이와,
    상기 메모리 어레이에 소프트 판정을 적용하고 컨볼루션 인코딩을 디코딩하여 상기 정보의 값을 결정하는 컨트롤러
    를 포함하는 메모리 장치;
    상기 메모리 장치를 동작시키는 메모리 장치 컨트롤러; 및
    하나 이상의 애플리케이션을 호스트하며, 상기 메모리 장치 컨트롤러에 대한 쓰기 및/또는 읽기 명령을 개시하여 상기 메모리 어레이에의 액세스를 제공하는 프로세서
    를 포함하는 시스템.
  16. 제15항에 있어서,
    상기 소프트 판정은 상기 정보를 결정하기 위해 복수의 프로그램 상태 중에서 가장 가능성이 큰 프로그램 상태를 고려하는 시스템.
  17. 제15항에 있어서,
    상기 하나 이상의 멀티레벨 메모리 셀의 임계 전압을 결정하는 감지 회로; 및
    상기 정보를 상기 하나 이상의 멀티레벨 메모리 셀의 상기 임계 전압을 나타내는 수의 디지털 시퀀스로 변환하는 변환기
    를 더 포함하는 시스템.
  18. 제17항에 있어서,
    상기 감지 회로는 상기 하나 이상의 멀티레벨 메모리 셀 중 하나에 대응하는 비트 라인 전압과 기준 전압을 수신하는 다중 입력부를 가진 전압 비교기를 포함하는 시스템.
  19. 제15항에 있어서,
    상기 컨볼루션 인코딩은 비터비 인코딩을 포함하는 시스템.
  20. 제15항에 있어서,
    감지된 임계 전압이 상기 하나 이상의 멀티레벨 메모리 셀의 특정 프로그램 분포에 속하는 확률을 정량화하는 메트릭 값을 생성하는 디코딩 유닛을 더 포함하는 시스템.
KR1020110047060A 2010-05-19 2011-05-18 개량된 멀티레벨 메모리 KR101409551B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/783,483 2010-05-19
US12/783,483 US8386895B2 (en) 2010-05-19 2010-05-19 Enhanced multilevel memory

Publications (2)

Publication Number Publication Date
KR20110127615A true KR20110127615A (ko) 2011-11-25
KR101409551B1 KR101409551B1 (ko) 2014-07-02

Family

ID=44973482

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110047060A KR101409551B1 (ko) 2010-05-19 2011-05-18 개량된 멀티레벨 메모리

Country Status (6)

Country Link
US (2) US8386895B2 (ko)
JP (1) JP5555840B2 (ko)
KR (1) KR101409551B1 (ko)
CN (1) CN102254571B (ko)
DE (1) DE102011075966B4 (ko)
TW (1) TWI484497B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9001598B2 (en) 2013-04-02 2015-04-07 SK Hynix Inc. Semiconductor devices and semiconductor systems including the same

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8386895B2 (en) * 2010-05-19 2013-02-26 Micron Technology, Inc. Enhanced multilevel memory
US9251873B1 (en) 2010-05-20 2016-02-02 Kandou Labs, S.A. Methods and systems for pin-efficient memory controller interface using vector signaling codes for chip-to-chip communications
US9275720B2 (en) * 2010-12-30 2016-03-01 Kandou Labs, S.A. Differential vector storage for dynamic random access memory
IT1403667B1 (it) * 2011-01-31 2013-10-31 St Microelectronics Srl Dispositivo di memoria con misurazione interna di parametri funzionali
US8780659B2 (en) * 2011-05-12 2014-07-15 Micron Technology, Inc. Programming memory cells
US8797805B2 (en) 2011-12-22 2014-08-05 Micron Technology, Inc. Methods and apparatuses for determining threshold voltage shift
US8943386B1 (en) * 2012-02-16 2015-01-27 Sk Hynix Memory Solutions Inc. Generating soft read values which optimize dynamic range
US8737139B2 (en) 2012-04-11 2014-05-27 Micron Technology, Inc. Determining soft data for combinations of memory cells
US9239754B2 (en) * 2012-08-04 2016-01-19 Seagate Technology Llc Single read based soft-decision decoding of non-volatile memory
US8848453B2 (en) 2012-08-31 2014-09-30 Micron Technology, Inc. Inferring threshold voltage distributions associated with memory cells via interpolation
KR102125371B1 (ko) 2012-12-04 2020-06-22 삼성전자주식회사 비휘발성 메모리 장치 및 그것의 동작방법
KR102067611B1 (ko) 2013-03-15 2020-01-20 삼성전자주식회사 메모리 컨트롤러의 동작 방법과 상기 메모리 컨트롤러를 포함하는 장치들
TWI498893B (zh) * 2013-10-31 2015-09-01 Innostor Technology Corp MLC memory write method in multiple environments
EP3672176B1 (en) 2014-02-28 2022-05-11 Kandou Labs, S.A. Clock-embedded vector signaling codes
US9373408B2 (en) * 2014-10-07 2016-06-21 SanDisk Technologies, Inc. Highly linear analog-to-digital converter and method for nonvolatile memory
US10379940B2 (en) * 2016-12-08 2019-08-13 Sandisk Technologies Llc Pipeline delay detection during decoding by a data storage device
US10467177B2 (en) 2017-12-08 2019-11-05 Kandou Labs, S.A. High speed memory interface
US10777286B2 (en) * 2018-12-28 2020-09-15 Micron Technology, Inc. Apparatus and methods for determining data states of memory cells
CN113924622B (zh) * 2019-06-04 2022-09-09 美光科技公司 存储器阵列外围中的位串累加
US10942889B2 (en) 2019-06-04 2021-03-09 Micron Technology, Inc. Bit string accumulation in memory array periphery

Family Cites Families (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4058851A (en) 1976-10-18 1977-11-15 Sperry Rand Corporation Conditional bypass of error correction for dual memory access time selection
KR930004862B1 (ko) 1990-12-17 1993-06-09 삼성전자 주식회사 상태 평가량 기억장치
EP0709776B1 (en) 1994-10-31 2000-02-23 STMicroelectronics S.r.l. Method for detecting and correcting an error in a multilevel memory and memory device implementing the method
US6857099B1 (en) 1996-09-18 2005-02-15 Nippon Steel Corporation Multilevel semiconductor memory, write/read method thereto/therefrom and storage medium storing write/read program
US6023781A (en) 1996-09-18 2000-02-08 Nippon Steel Corporation Multilevel semiconductor memory, write/read method thereto/therefrom and storage medium storing write/read program
US5956743A (en) 1997-08-25 1999-09-21 Bit Microsystems, Inc. Transparent management at host interface of flash-memory overhead-bytes using flash-specific DMA having programmable processor-interrupt of high-level operations
FR2769747B1 (fr) 1997-10-15 2001-10-05 Sgs Thomson Microelectronics Perfectionnement aux memoires non volatiles programmables par effet dit "de porteurs chauds" et effacables par effet tunnel
US6279133B1 (en) 1997-12-31 2001-08-21 Kawasaki Steel Corporation Method and apparatus for significantly improving the reliability of multilevel memory architecture
DE69932962T2 (de) 1998-01-21 2007-02-01 Sony Corp. Kodierungsverfahren und Speicheranordnung
JP3308915B2 (ja) 1998-11-11 2002-07-29 エヌイーシーマイクロシステム株式会社 不良救済用メモリセル及びそれを用いた記憶装置
US6871303B2 (en) 1998-12-04 2005-03-22 Qualcomm Incorporated Random-access multi-directional CDMA2000 turbo code interleaver
IL141800A0 (en) 1999-07-06 2002-03-10 Samsung Electronics Co Ltd Rate matching device and method for a data communication system
US20050114587A1 (en) 2003-11-22 2005-05-26 Super Talent Electronics Inc. ExpressCard with On-Card Flash Memory with Shared Flash-Control Bus but Separate Ready Lines
US6487251B1 (en) 1999-08-30 2002-11-26 Hughes Electronics Corporation System and method for performing combined multi-rate convolutional coding
US6175522B1 (en) 1999-09-30 2001-01-16 Advanced Micro Devices, Inc. Read operation scheme for a high-density, low voltage, and superior reliability nand flash memory device
US6628723B1 (en) 1999-10-15 2003-09-30 Cisco Technology Coding rate reduction for turbo codes
US6731538B2 (en) 2000-03-10 2004-05-04 Kabushiki Kaisha Toshiba Semiconductor memory device including page latch circuit
JP2002076915A (ja) 2000-08-31 2002-03-15 Sony Corp インターリーブ装置及びインターリーブ方法、並びに、復号装置及び復号方法
US6591394B2 (en) 2000-12-22 2003-07-08 Matrix Semiconductor, Inc. Three-dimensional memory array and method for storing data bits and ECC bits therein
JP4017177B2 (ja) 2001-02-28 2007-12-05 スパンション エルエルシー メモリ装置
KR100390959B1 (ko) * 2001-06-29 2003-07-12 주식회사 하이닉스반도체 센싱회로를 이용한 멀티레벨 플래시 메모리 프로그램/리드방법
KR100438537B1 (ko) 2001-07-19 2004-07-03 엘지전자 주식회사 이동 통신 단말기에서의 복호 장치 및 그 제어 방법
US6683817B2 (en) 2002-02-21 2004-01-27 Qualcomm, Incorporated Direct memory swapping between NAND flash and SRAM with error correction coding
US6751766B2 (en) * 2002-05-20 2004-06-15 Sandisk Corporation Increasing the effectiveness of error correction codes and operating multi-level memory systems by using information about the quality of the stored data
US7293217B2 (en) 2002-12-16 2007-11-06 Interdigital Technology Corporation Detection, avoidance and/or correction of problematic puncturing patterns in parity bit streams used when implementing turbo codes
US6839870B2 (en) 2003-03-21 2005-01-04 Terayon Communications Systems, Inc. Error-correcting code interleaver
US7467264B2 (en) 2003-06-27 2008-12-16 Hewlett-Packard Development Company, L.P. Methods and apparatuses for determining the state of a memory element
JP3984209B2 (ja) 2003-07-31 2007-10-03 株式会社東芝 半導体記憶装置
JP2005078721A (ja) * 2003-09-01 2005-03-24 Nippon Telegr & Teleph Corp <Ntt> 誤り訂正方法およびメモリ回路
US7389465B2 (en) 2004-01-30 2008-06-17 Micron Technology, Inc. Error detection and correction scheme for a memory device
US7607073B1 (en) 2004-08-04 2009-10-20 Marvell International Ltd. Methods, algorithms, software, circuits, receivers and systems for iteratively decoding a tailbiting convolutional code
EP1797645B1 (en) 2004-08-30 2018-08-01 Google LLC Systems and methods for providing nonvolatile memory management in wireless phones
US7061804B2 (en) 2004-11-18 2006-06-13 Qualcomm Incorporated Robust and high-speed memory access with adaptive interface timing
KR100578141B1 (ko) 2004-11-22 2006-05-10 삼성전자주식회사 읽기 속도를 향상시킬 수 있는 낸드 플래시 메모리 장치
KR100915650B1 (ko) 2004-12-28 2009-09-04 인터내셔널 비지네스 머신즈 코포레이션 정보 기록 장치, 그 데이터 흐름 제어기, 및 그 데이터흐름의 제어 방법
US7359279B2 (en) 2005-03-31 2008-04-15 Sandisk 3D Llc Integrated circuit memory array configuration including decoding compatibility with partial implementation of multiple memory layers
US7644338B2 (en) 2005-09-13 2010-01-05 Samsung Electronics Co., Ltd. Method of detecting and correcting a prescribed set of error events based on error detecting code
US8291295B2 (en) 2005-09-26 2012-10-16 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
US7469368B2 (en) 2005-11-29 2008-12-23 Broadcom Corporation Method and system for a non-volatile memory with multiple bits error correction and detection for improving production yield
US7844879B2 (en) * 2006-01-20 2010-11-30 Marvell World Trade Ltd. Method and system for error correction in flash memory
US8055979B2 (en) 2006-01-20 2011-11-08 Marvell World Trade Ltd. Flash memory with coding and signal processing
US7388781B2 (en) 2006-03-06 2008-06-17 Sandisk Il Ltd. Multi-bit-per-cell flash memory device with non-bijective mapping
KR101202537B1 (ko) * 2006-05-12 2012-11-19 애플 인크. 메모리 디바이스를 위한 결합된 왜곡 추정 및 에러 보정 코딩
US20070266296A1 (en) 2006-05-15 2007-11-15 Conley Kevin M Nonvolatile Memory with Convolutional Coding
US7840875B2 (en) 2006-05-15 2010-11-23 Sandisk Corporation Convolutional coding methods for nonvolatile memory
US7836364B1 (en) * 2006-05-30 2010-11-16 Marvell International Ltd. Circuits, architectures, apparatuses, systems, methods, algorithms, software and firmware for using reserved cells to indicate defect positions
US7627803B2 (en) 2006-07-05 2009-12-01 Harris Corporation System and method for variable forward error correction (FEC) protection
US8046660B2 (en) 2006-08-07 2011-10-25 Marvell World Trade Ltd. System and method for correcting errors in non-volatile memory using product codes
US7739576B2 (en) 2006-08-31 2010-06-15 Micron Technology, Inc. Variable strength ECC
US7805663B2 (en) 2006-09-28 2010-09-28 Sandisk Corporation Methods of adapting operation of nonvolatile memory
TWI360126B (en) * 2006-09-28 2012-03-11 Sandisk Corp Nonvolatile memory with adaptive operations and me
JP5177991B2 (ja) * 2006-10-25 2013-04-10 株式会社東芝 不揮発性半導体記憶装置
US7904780B2 (en) 2006-11-03 2011-03-08 Sandisk Corporation Methods of modulating error correction coding
US8151163B2 (en) 2006-12-03 2012-04-03 Anobit Technologies Ltd. Automatic defect management in memory devices
KR100766042B1 (ko) 2006-12-06 2007-10-12 삼성전자주식회사 연접 부호화를 이용한 멀티 레벨 셀 메모리 장치
KR100845529B1 (ko) 2007-01-03 2008-07-10 삼성전자주식회사 플래시 메모리 장치의 이씨씨 제어기 및 그것을 포함한메모리 시스템
KR100842680B1 (ko) 2007-01-08 2008-07-01 삼성전자주식회사 플래시 메모리 장치의 오류 정정 컨트롤러 및 그것을포함하는 메모리 시스템
US8010735B2 (en) 2007-07-31 2011-08-30 Broadcom Corporation Flash memory with millimeter wave host interface and method for use therewith
US7904793B2 (en) * 2007-03-29 2011-03-08 Sandisk Corporation Method for decoding data in non-volatile storage using reliability metrics based on multiple reads
US7975209B2 (en) * 2007-03-31 2011-07-05 Sandisk Technologies Inc. Non-volatile memory with guided simulated annealing error correction control
US7966546B2 (en) * 2007-03-31 2011-06-21 Sandisk Technologies Inc. Non-volatile memory with soft bit data transmission for error correction control
KR101492595B1 (ko) 2007-05-21 2015-02-11 라모트 앳 텔-아비브 유니버시티 리미티드 메모리 효율적인 ldpc 디코딩
US8065583B2 (en) 2007-07-06 2011-11-22 Micron Technology, Inc. Data storage with an outer block code and a stream-based inner code
US8051358B2 (en) 2007-07-06 2011-11-01 Micron Technology, Inc. Error recovery storage along a nand-flash string
JP5354979B2 (ja) 2007-07-12 2013-11-27 パナソニック株式会社 低密度パリティ検査畳み込み符号(ldpc−cc)符号化器及びldpc−cc復号器
US7860200B2 (en) 2007-10-12 2010-12-28 Harris Corporation Communications system using adaptive filter that is selected based on output power
US8327245B2 (en) 2007-11-21 2012-12-04 Micron Technology, Inc. Memory controller supporting rate-compatible punctured codes
US7633798B2 (en) * 2007-11-21 2009-12-15 Micron Technology, Inc. M+N bit programming and M+L bit read for M bit memory cells
US8499229B2 (en) 2007-11-21 2013-07-30 Micro Technology, Inc. Method and apparatus for reading data from flash memory
US8046542B2 (en) 2007-11-21 2011-10-25 Micron Technology, Inc. Fault-tolerant non-volatile integrated circuit memory
WO2009072103A2 (en) * 2007-12-05 2009-06-11 Densbits Technologies Ltd. Flash memory apparatus and methods using a plurality of decoding stages including optional use of concatenated bch codes and/or designation of 'first below' cells
KR101398212B1 (ko) * 2008-03-18 2014-05-26 삼성전자주식회사 메모리 장치 및 인코딩/디코딩 방법
US8051240B2 (en) * 2008-05-09 2011-11-01 Sandisk Technologies Inc. Compensating non-volatile storage using different pass voltages during program-verify and read
US8023334B2 (en) * 2008-10-31 2011-09-20 Micron Technology, Inc. Program window adjust for memory cell signal line delay
US8510628B2 (en) * 2009-11-12 2013-08-13 Micron Technology, Inc. Method and apparatuses for customizable error correction of memory
US8451664B2 (en) 2010-05-12 2013-05-28 Micron Technology, Inc. Determining and using soft data in memory devices and systems
US8386895B2 (en) * 2010-05-19 2013-02-26 Micron Technology, Inc. Enhanced multilevel memory
US8194441B2 (en) 2010-09-23 2012-06-05 Micron Technology, Inc. Phase change memory state determination using threshold edge detection

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9001598B2 (en) 2013-04-02 2015-04-07 SK Hynix Inc. Semiconductor devices and semiconductor systems including the same

Also Published As

Publication number Publication date
TW201214457A (en) 2012-04-01
US8700978B2 (en) 2014-04-15
US8386895B2 (en) 2013-02-26
DE102011075966B4 (de) 2016-09-01
US20110289376A1 (en) 2011-11-24
CN102254571A (zh) 2011-11-23
JP2011243198A (ja) 2011-12-01
US20130242652A1 (en) 2013-09-19
TWI484497B (zh) 2015-05-11
KR101409551B1 (ko) 2014-07-02
DE102011075966A1 (de) 2011-12-29
JP5555840B2 (ja) 2014-07-23
CN102254571B (zh) 2015-06-17

Similar Documents

Publication Publication Date Title
KR101409551B1 (ko) 개량된 멀티레벨 메모리
US9092350B1 (en) Detection and handling of unbalanced errors in interleaved codewords
KR101618311B1 (ko) 플래시 메모리 장치 및 그것의 읽기 방법
US20100277989A1 (en) Increased capacity heterogeneous storage elements
KR20180121797A (ko) 메모리에서 에러 정정 코드(ecc) 연산
KR20140090671A (ko) 메모리 시스템들을 위한 소프트 정보 생성
KR20080080041A (ko) 메모리 컨트롤러 및 반도체 장치
KR20150087337A (ko) 메모리를 위한 성형 코드들
JP2016219092A (ja) 誤り訂正符号の編成を含む装置および方法
KR20120136116A (ko) 불휘발성 메모리 장치 및 불휘발성 메모리 장치의 프로그램 방법
KR20100124087A (ko) 메모리 컨트롤러, 그것을 포함하는 메모리 시스템 그리고 그것의 동작 방법
US10741212B2 (en) Error correction code (ECC) encoders, ECC encoding methods capable of encoding for one clock cycle, and memory controllers including the ECC encoders
CN110729017B (zh) 存储器装置以及电子装置
US10691536B2 (en) Method to select flash memory blocks for refresh after read operations
JP5283989B2 (ja) メモリシステム及びメモリアクセス方法
JP2017107620A (ja) 半導体装置及び不揮発メモリ
US11923000B2 (en) Data scrambling method that controls code density
JP2023116927A (ja) メモリシステムおよびメモリ制御方法
JP2018022546A (ja) ストレージシステム用のセル位置プログラミング
JP2016081547A (ja) 不揮発性記憶装置及び不揮発性記憶装置の制御方法
US11088713B1 (en) Solid state drive implementing a rate-compatible polar code
JP2014517976A (ja) メモリセルをプログラミングすること
US9361181B2 (en) Error protection for memory devices
JP2005196886A (ja) 多値記憶不揮発性メモリ装置
JP5492329B2 (ja) メモリアクセス装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
FPAY Annual fee payment

Payment date: 20170522

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180530

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190612

Year of fee payment: 6