KR20110127615A - 개량된 멀티레벨 메모리 - Google Patents
개량된 멀티레벨 메모리 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital 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/5621—Digital 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/5628—Programming or writing circuits; Data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital 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/5621—Digital 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/5642—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/564—Miscellaneous aspects
- G11C2211/5644—Multilevel memory comprising counting devices
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data 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
본 발명은 반도체 메모리에 관한 것으로, 특히 멀티레벨 비휘발성 메모리에 관한 것이다.
메모리 장치는 예컨대 컴퓨터, 셀룰러 폰, 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은 실시예에 따른 메모리 장치의 개략 블록도.
도 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항에 있어서,
상기 소프트 판정은 상기 정보를 결정하기 위해 복수의 프로그램 상태 중에서 가장 가능성이 큰 프로그램 상태를 고려하는 것을 포함하는 방법. - 제1항에 있어서,
상기 정보를 상기 하나 이상의 멀티레벨 메모리 셀의 임계 전압을 나타내는 수의 디지털 시퀀스로 변환하는 단계; 및
상기 디지털 시퀀스에 대해 상기 소프트 판정을 적용하고 상기 컨볼루션 인코딩을 디코딩하여 상기 정보를 읽어내는 단계
를 더 포함하는 방법. - 제1항에 있어서,
상기 멀티레벨 메모리 셀은 2 이상의 비트를 저장할 수 있는 방법. - 제1항에 있어서,
감지된 임계 전압이 상기 하나 이상의 멀티레벨 메모리 셀의 특정 프로그램 분포에 속하는 확률을 정량화하는 메트릭 값을 생성하는 단계를 더 포함하는 방법. - 제1항에 있어서,
탐색표를 이용하여 메트릭 함수를 생성하는 단계를 더 포함하고, 상기 메트릭 함수는 디지털 변환된 셀 임계 전압 값에 적어도 부분적으로 기초하는 방법. - 하나 이상의 멀티레벨 메모리 셀에 정보를 저장하는 메모리 어레이; 및
상기 메모리 어레이에 소프트 판정을 적용하고 컨볼루션 인코딩을 디코딩하여 상기 정보의 값을 결정하는 컨트롤러
를 포함하는 메모리 장치. - 제9항에 있어서,
상기 소프트 판정은 상기 정보를 결정하기 위해 복수의 프로그램 상태 중에서 가장 가능성이 큰 프로그램 상태를 고려하는 메모리 장치. - 제9항에 있어서,
상기 하나 이상의 멀티레벨 메모리 셀의 임계 전압을 결정하는 감지 회로; 및
상기 정보를 상기 하나 이상의 멀티레벨 메모리 셀의 상기 임계 전압을 나타내는 수의 디지털 시퀀스로 변환하는 변환기
를 더 포함하는 메모리 장치. - 제11항에 있어서,
상기 감지 회로는 상기 하나 이상의 멀티레벨 메모리 셀 중 하나에 대응하는 비트 라인 전압과 기준 전압을 수신하는 다중 입력부를 가진 전압 비교기를 포함하는 메모리 장치. - 제9항에 있어서,
상기 멀티레벨 메모리 셀은 2 이상의 비트를 저장할 수 있는 메모리 장치. - 제9항에 있어서,
감지된 임계 전압이 상기 하나 이상의 멀티레벨 메모리 셀의 특정 프로그램 분포에 속하는 확률을 정량화하는 메트릭 값을 생성하는 디코딩 유닛을 더 포함하는 메모리 장치. - 하나 이상의 멀티레벨 메모리 셀에 정보를 저장하는 메모리 어레이와,
상기 메모리 어레이에 소프트 판정을 적용하고 컨볼루션 인코딩을 디코딩하여 상기 정보의 값을 결정하는 컨트롤러
를 포함하는 메모리 장치;
상기 메모리 장치를 동작시키는 메모리 장치 컨트롤러; 및
하나 이상의 애플리케이션을 호스트하며, 상기 메모리 장치 컨트롤러에 대한 쓰기 및/또는 읽기 명령을 개시하여 상기 메모리 어레이에의 액세스를 제공하는 프로세서
를 포함하는 시스템. - 제15항에 있어서,
상기 소프트 판정은 상기 정보를 결정하기 위해 복수의 프로그램 상태 중에서 가장 가능성이 큰 프로그램 상태를 고려하는 시스템. - 제15항에 있어서,
상기 하나 이상의 멀티레벨 메모리 셀의 임계 전압을 결정하는 감지 회로; 및
상기 정보를 상기 하나 이상의 멀티레벨 메모리 셀의 상기 임계 전압을 나타내는 수의 디지털 시퀀스로 변환하는 변환기
를 더 포함하는 시스템. - 제17항에 있어서,
상기 감지 회로는 상기 하나 이상의 멀티레벨 메모리 셀 중 하나에 대응하는 비트 라인 전압과 기준 전압을 수신하는 다중 입력부를 가진 전압 비교기를 포함하는 시스템. - 제15항에 있어서,
상기 컨볼루션 인코딩은 비터비 인코딩을 포함하는 시스템. - 제15항에 있어서,
감지된 임계 전압이 상기 하나 이상의 멀티레벨 메모리 셀의 특정 프로그램 분포에 속하는 확률을 정량화하는 메트릭 값을 생성하는 디코딩 유닛을 더 포함하는 시스템.
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)
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)
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)
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 |
-
2010
- 2010-05-19 US US12/783,483 patent/US8386895B2/en active Active
-
2011
- 2011-05-11 JP JP2011106289A patent/JP5555840B2/ja active Active
- 2011-05-17 DE DE102011075966.2A patent/DE102011075966B4/de active Active
- 2011-05-18 KR KR1020110047060A patent/KR101409551B1/ko active IP Right Grant
- 2011-05-18 CN CN201110136221.8A patent/CN102254571B/zh active Active
- 2011-05-19 TW TW100117641A patent/TWI484497B/zh active
-
2013
- 2013-02-25 US US13/776,418 patent/US8700978B2/en active Active
Cited By (1)
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 |