KR20080080041A - 메모리 컨트롤러 및 반도체 장치 - Google Patents

메모리 컨트롤러 및 반도체 장치 Download PDF

Info

Publication number
KR20080080041A
KR20080080041A KR1020080017873A KR20080017873A KR20080080041A KR 20080080041 A KR20080080041 A KR 20080080041A KR 1020080017873 A KR1020080017873 A KR 1020080017873A KR 20080017873 A KR20080017873 A KR 20080017873A KR 20080080041 A KR20080080041 A KR 20080080041A
Authority
KR
South Korea
Prior art keywords
data
value
memory
digit
memory cell
Prior art date
Application number
KR1020080017873A
Other languages
English (en)
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 KR20080080041A publication Critical patent/KR20080080041A/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits

Abstract

반도체 기억 장치의 동작 신뢰성을 향상시킬 수 있는 메모리 컨트롤러 및 반도체 장치를 제공하는 것이다. 복수의 메모리 셀 MC를 구비한 반도체 기억 장치(10)를 제어하는 메모리 컨트롤러(20)로서, 상기 메모리 셀 MC에 대하여 일괄하여 기입할 제1 데이터를 바탕으로 복수의 제2 데이터를 생성하는 데이터 생성 수단(21)과, 각 자릿수가 상기 메모리 셀에의 기입 완료 데이터의 비트마다의 누적 결과인 누적치를 유지하고, 상기 제2 데이터 중, 상기 누적치의 각 자릿수와 상기 제2 데이터 각각의 각 비트와의 가산 결과의 각 자릿수 사이에서 보다 평균화되는 어느 하나를 선택하는 선택 수단(22)을 구비하고, 상기 선택 수단(22)에서 선택된 상기 제2 데이터와 그 선택 정보가 상기 메모리 셀 MC에 기입되고, 상기 선택 수단(22)은 선택한 상기 제2 데이터에 관한 상기 가산 결과를 새로운 상기 누적치로 하여 유지한다.
메모리 셀, 누적치, 자릿수, 비트, 부호화 데이터, 비반전치, 반전치, 의사 난수

Description

메모리 컨트롤러 및 반도체 장치{MEMORY CONTROLLER AND SEMICONDUCTOR DEVICE}
본 발명은 NAND형 플래시 메모리를 제어하는 메모리 컨트롤러 및 이 메모리 컨트롤러를 구비한 반도체 장치에 관한 것이다.
최근, 디지털 카메라나 휴대형 오디오 플레이어의 급속한 보급에 의해, 대용량의 불휘발성 반도체 메모리의 수요가 확대되고 있다. 그리고, 불휘발성 반도체 메모리로서 NAND형 플래시 메모리(이하, 간단히 플래시 메모리라고 부르는 경우가 있음)가 널리 사용되고 있다.
NAND형 플래시 메모리에서는, 전자가 주입된 메모리 셀 수가 증가하면, 비선택의 메모리 셀이 유지하는 데이터가 파괴되는, 즉 프로그램 디스터브(Program Disturb)라고 불리는 문제가 발생한다. 또한, 메모리 셀 어레이 내에서 동일한 데이터가 연속되는 경우에는, GIDL(Gate Induced Drain Leakage)에 의해, 역시 프로그램 디스터브의 문제가 생긴다.
상기 문제에 대하여, 메모리 셀 어레이 전체로서의 차지량을 평균화함으로써, 프로그램 디스터브를 해결하는 방법이 제안되어 있다(예를 들면 특허 문헌 1 참조). 그러나 본 방법에서는, 차지량의 평균화는 충분하지 않고, 또한 동일한 데이터가 연속되는 것도 방지할 수 없다. 따라서, NAND형 플래시 메모리의 대용량화에 따라서, 그 동작 신뢰성이 악화된다고 하는 문제가 있었다.
[특허 문헌 1] 일본 특개평 7-334991호 공보
본 발명은 반도체 기억 장치의 동작 신뢰성을 향상시킬 수 있는 메모리 컨트롤러 및 반도체 장치를 제공한다.
본 발명의 일 양태에 따른 메모리 컨트롤러는, 동일한 워드선에 접속된 복수의 불휘발성의 메모리 셀에 대하여 일괄하여 기입 동작이 행해지는 반도체 기억 장치를 제어하는 메모리 컨트롤러로서, 상기 메모리 셀에 대하여 일괄하여 기입할 복수 비트의 제1 데이터를 바탕으로 하여, 복수의 제2 데이터를 생성하는 데이터 생성 수단과, 각 자릿수가 상기 메모리 셀에 대한 기입 완료 데이터의 비트마다의 누적 결과인 누적치를 유지하고, 또한 복수의 상기 제2 데이터 중, 상기 누적치의 각 자릿수와 상기 제2 데이터 각각의 각 비트와의 가산 결과가, 상기 가산 결과의 각 자릿수 사이에서 보다 평균화되는 어느 하나를 선택하는 선택 수단을 구비하고, 상기 선택 수단에서 선택된 상기 제2 데이터와, 어떤 제2 데이터가 선택되었는지를 나타내는 정보가, 상기 메모리 셀에 대하여 기입되고, 상기 선택 수단은, 선택한 상기 제2 데이터에 관한 상기 가산 결과를, 새로운 상기 누적치로 하여 유지한다.
또한, 본 발명의 일 양태에 따른 반도체 장치는, 상기 메모리 컨트롤러와, 상기 메모리 컨트롤러의 상기 선택 수단에 의해 선택된 상기 제2 데이터가 기입되는 상기 메모리 셀이 복수 배치된 제1 메모리 영역과, 어떤 제2 데이터가 선택되었는지를 나타내는 상기 정보가 기입되는 상기 메모리 셀이 배치된 제2 메모리 영역을 구비한 상기 반도체 기억 장치를 구비한다.
본 발명에 따르면, 반도체 기억 장치의 동작 신뢰성을 향상시킬 수 있는 메모리 컨트롤러 및 반도체 장치를 제공할 수 있다.
이하, 본 발명의 실시 형태에 대하여 도면을 참조하여 설명한다. 이 설명 시에 있어서, 전체 도면에 걸쳐서, 공통되는 부분에는 공통된 참조 부호를 붙인다.
[제1 실시 형태]
본 발명의 제1 실시 형태에 따른 반도체 장치에 대하여, 도 1을 이용하여 설명한다. 도 1은, 본 실시 형태에 따른 메모리 시스템의 블록도이다. 도시하는 바와 같이 메모리 시스템(1)은, 대략적으로는 NAND형 플래시 메모리(10)와, NAND형 플래시 메모리(10)를 제어하는 메모리 컨트롤러(20)를 구비하고 있다.
우선, NAND형 플래시 메모리(10)의 구성에 대하여 설명한다. 또한 이하에서는, NAND형 플래시 메모리(10)를 간단히 플래시 메모리(10)라고 부르는 것이 있다. 도시하는 바와 같이 플래시 메모리(10)는, 메모리 셀 어레이(11), 페이지 버퍼(12), 및 센스 앰프(13)를 구비하고 있다. 메모리 셀 어레이(11)는, 복수의 불 휘발성의 메모리 셀 MC가 배치된 복수의 메모리 블록(14)을 구비하고 있다. 메모리 셀 MC 각각은, 1 비트, 즉 2치의 데이터를 유지 가능하게 되어 있다. 동일한 메모리 블록(14) 내에 포함되는 모든 메모리 셀 MC는 일괄하여 소거되고, 또한 복수의 메모리 셀 MC에 대하여 일괄하여 데이터가 기입된다. 이하, 일괄하여 데이터가 기입되는 메모리 셀 MC의 단위를, 페이지라고 부른다. 페이지 버퍼(12)는, 메모리 셀 MC에의 기입 데이터를 페이지 단위로 유지하고, 유지한 기입 데이터를 메모리 셀 MC에 기입한다. 센스 앰프(13)는, 메모리 셀 MC로부터 읽어내어진 데이터를 센스하여 증폭한다.
상기 메모리 블록(14)의 구성에 대하여, 도 2를 이용하여 설명한다. 도 2는, 메모리 블록(14)의 일부 구성을 도시하는 회로도이다. 도시하는 바와 같이 메모리 블록(14)은, 레귤러 셀 어레이(15)와 ECC 셀 어레이(16)를 구비하고 있다. 레귤러 셀 어레이(15)는, 외부로부터 공급된 기입 데이터의 유지용으로서 이용되고, ECC 셀 어레이(16)는 기입 데이터로부터 생성된 ECC 데이터의 유지용으로서 이용된다.
레귤러 셀 어레이(15) 및 ECC 셀 어레이(16)는, 복수의 NAND 스트링을 구비하고 있다. NAND 스트링 각각은, 선택 트랜지스터 ST1, ST2, 및 32개의 메모리 셀 트랜지스터 MT를 구비하고 있다. NAND 스트링 내에 포함되는 메모리 셀 트랜지스터 MT의 수는 일례에 지나지 않으며, 예를 들면 8개, 32개, 64개, 128개 등이어도 된다. 각각의 NAND 스트링에 포함되는 선택 트랜지스터 ST1은, 드레인이 비트선 BL0∼BL4313 중의 어느 하나에 접속되고, 게이트가 셀렉트 게이트선 SGD에 공통 접 속되어 있다. 또한 선택 트랜지스터 ST2는, 소스가 소스선 SL에 공통 접속되고, 게이트가 셀렉트 게이트선 SGS에 공통 접속되어 있다.
메모리 셀 트랜지스터 MT의 각각은, 반도체 기판 상에 게이트 절연막을 개재하여 형성된 적층 게이트를 구비한 MOS 트랜지스터이다. 적층 게이트는, 게이트 절연막 상에 형성된 전하 축적층(예를 들면 부유 게이트)과, 전하 축적층 상에 게이트간 절연막을 개재하여 형성된 제어 게이트를 포함하고 있다. 각각의 NAND 스트링에서, 32개의 메모리 셀 트랜지스터 MT는, 선택 트랜지스터 ST1의 소스와 선택 트랜지스터 ST2의 드레인 사이에, 각각의 전류 경로가 직렬 접속되도록 배치되어 있다. 그리고, 가장 소스측에 위치하는 메모리 셀 트랜지스터 MT로부터 순서대로, 제어 게이트가 워드선 WL0∼WL31에 각각 접속되어 있다. 따라서, 워드선 WL31에 접속된 메모리 셀 트랜지스터 MT의 드레인은 선택 트랜지스터 ST1의 소스에 접속되고, 워드선 WL0에 접속된 메모리 셀 트랜지스터 MT의 소스는 선택 트랜지스터 ST2의 드레인에 접속되어 있다.
상기 구성의 NAND 스트링이, 레귤러 셀 어레이(15) 내에는 4096개 배치되고, ECC 셀 어레이(16) 내에는 218개 배치된다. 그리고, 4096개의 비트선 BL0∼BL4095가 레귤러 셀 어레이(15) 내의 NAND 스트링의 각각에 접속되고, 218개의 비트선 BL4096∼BL4313이, ECC 셀 어레이(16) 내의 NAND 스트링 각각에 접속된다. 따라서, 1개의 레귤러 셀 어레이(15)는 워드선 1개당 4k 비트의 메모리 용량을 갖고, 1개의 ECC 셀 어레이(16)는 워드선 1개당 218 비트의 메모리 용량을 갖는다.
1개의 메모리 블록(14) 내에는, 상기 구성의 레귤러 셀 어레이(15)와 ECC 셀 어레이(16)와의 조합이, 8개 배치된다. 따라서, 1개의 메모리 블록(14)에서의 워드선 1개당의 레귤러 셀 어레이(15)의 메모리 용량은 (4k비트×8개)=4k바이트이고, ECC 셀 어레이(16)의 메모리 용량은 (218 비트×8개)=218바이트이다. 그리고, 각 메모리 블록(14)에서, 동일한 워드선에 접속된 메모리 셀 트랜지스터 MT에 대하여, 일괄하여 데이터가 기입된다. 즉, 1 페이지의 용량은 (4k바이트+218바이트)로 된다. 또한, 각 메모리 블록(14) 내의 메모리 셀 트랜지스터 MT는, 일괄하여 데이터가 소거된다. 즉 소거 사이즈는, 워드선의 개수가 32개이기 때문에, ((4k 바이트+218바이트)×32)=(128k 바이트+6976바이트)이다.
다음으로, 도 1로 되돌아가서 메모리 컨트롤러(20)의 구성에 대하여 설명한다. 도시하는 바와 같이 메모리 컨트롤러(20)는, 인코더(21), 누적치 판정기(22), 인코더(23), 및 읽어내기용 디코더(24)를 구비하고 있다.
도 3은 인코더(21)의 구성의 일례를 도시하는 블록도이다. 도시하는 바와 같이 인코더(21)는, 반전기(30) 및 셀렉터(31)를 구비하고 있다. 인코더(21)는, 외부로부터 레귤러 셀 어레이(15)의 1 페이지분의 입력 데이터(4k 바이트)를 수신한다. 반전기(30)는, 입력 데이터의 각 비트를 반전시킨다. 그리고, 입력 데이터(비반전치)와, 반전기(30)에서 얻어진 반전치가, 누적치 판정기(22)에 출력된다. 또한 셀렉터(31)는, 누적치 판정기(22)로부터 공급되는 인코드 ID에 따라서, 비반전치와 반전치 중 어느 하나를 선택하여, 선택한 어느 한쪽을, 기입 데이터로서 페이지 버퍼(12)에 출력한다. 기입 데이터는, 메모리 셀 어레이(11)에서의 레귤러 셀 어레이(15) 내에 기입된다. 또한 인코드 ID에 대해서는 후술한다.
도 1로 되돌아가서 메모리 컨트롤러(20)의 설명을 계속한다. 누적치 판정기(22)는, 인코더(21)로부터 수신한 비반전치와 반전치 중, 메모리 셀 어레이(11)에 기입할 어느 한쪽을 선택한다. 그리고 그 선택 정보를, 인코드 ID로 하여 인코더(21) 및 ECC 인코더(23)에 출력한다. 이 선택 동작은, 누적치에 기초하여 행해진다. 누적치란, 임의의 메모리 블록(14)에서의 메모리 셀 트랜지스터 MT에 대한 기입 완료 데이터를, 비트선마다 누적한 값의 것이다. 그리고, 누적치의 각 자릿수가, 각 비트선에서의 "1" 데이터(전하가 부유 게이트에 주입되어 있지 않은 상태)의 수, 즉, 개개의 NAND 스트링에서 "1" 데이터가 기입된 메모리 셀 트랜지스터 MT의 수를 나타낸다. 따라서, 레귤러 셀 어레이(15)의 비트선 개수가 (4096×8)개이면, 누적치의 자릿수도 (4096×8)자릿수로 된다. 누적치 판정부(22)는, 이 누적치를 유지한다. 그리고, 비반전치와 반전치 중, 비반전치와 반전치의 각 비트와 누적치의 각 자릿수와의 가산 결과에서, 가산 결과의 각 자릿수의 값이 보다 평균화되는 어느 한쪽을 선택한다.
ECC 인코더(23)는, 인코더(21)로부터 공급되는 기입 데이터와 인코드 ID에 기초하여 ECC 데이터를 생성한다. 그리고 ECC 데이터와, 누적치 판정기(22)로부터 공급되는 인코드 ID를, 페이지 버퍼(12)에 출력한다. ECC 데이터 및 인코드 ID는, ECC 셀 어레이(16) 내에 기입된다. 특히 메모리 블록(14)에서 비트선 BL4313에 접속된 메모리 셀 트랜지스터 MT는, 인코드 ID 유지용으로서 이용된다.
읽어내기용 디코더(24)는, 센스 앰프(13)에서 센스 증폭된 읽어내기 데이터를, 인코드 ID를 바탕으로 하여 해독한다. 즉, 읽어내어진 인코드 ID가, 비반전치 를 선택했다는 취지의 정보이면, 읽어내기 데이터를 그대로 출력한다. 한편, 반전치를 선택했다는 취지의 정보이면, 읽어내기 데이터의 각 비트를 반전시키고, 이를 해독 데이터로서 출력한다.
다음으로, 상기 구성의 메모리 시스템에서의 기입 동작에 대하여, 인코더(21) 및 누적치 판정기(22)의 동작에 주목하여 설명한다. 우선 도 4를 이용하여 인코더(21)의 동작에 대하여 설명한다. 도 4는 인코더(21)의 동작의 흐름을 설명하는 플로우차트이다.
도시하는 바와 같이 인코더(21)는, 우선 외부로부터 레귤러 셀 어레이(15)의 1 페이지분의 입력 데이터를 접수한다(스텝 S10). 그리고 인코더(21)는, 접수한 입력 데이터를 그대로 비반전치로서 누적치 판정기(22)에 통지한다(스텝 S11). 동시에 인코더(21)는, 입력 데이터를 반전기(30)에서 반전시키고, 반전치를 누적치 판정기(22)에 통지한다(스텝 S12). 그 후, 인코더(21)는 누적치 판정기(22)로부터 인코드 ID를 수신한다(스텝 S13). 그리고, 인코더(21)의 셀렉터(31)가, 인코드 ID에 따라서 비반전치와 반전치 중 어느 한쪽을, 기입 데이터로서 NAND형 플래시 메모리(10)에 출력한다(스텝 S14). 인코더(21)에 대해서는, 복수의 입력 데이터가 연속해서 입력되지만, 입력 데이터가 최종 데이터인 경우에는(스텝 S15, 예), 처리를 종료하고, 최종 데이터가 아니면(스텝 S15, 아니오), 스텝 S10으로 되돌아간다.
다음으로, 도 5를 이용하여 누적치 판정기(22)의 동작에 대하여 설명한다. 도 5는 누적치 판정기(22)의 동작의 흐름을 설명하는 플로우차트이다.
도시하는 바와 같이, 누적치 판정기(22)는, 우선 인코더(21)로부터 비반전치 를 수취하고(스텝 S20), 또한 반전치를 수취한다(스텝 S21). 그리고, 수취한 비반전치 및 반전치가 해당 메모리 블록(14)에 대한 최초의 입력 데이터인 경우에는(스텝 S22, 예), 비반전치와 반전치 중, 값이 "1"인 비트가 많은 쪽을 선택한다. "1"인 비트의 수가 동수인 경우에는 반전치를 선택한다. 또한 이 선택 정보는, 인코드 ID로서 인코더(21) 및 ECC 인코더(23)에 출력된다(스텝 S23). 그 결과, 인코더(21)로부터 출력된 기입 데이터가 레귤러 셀 어레이(15) 내에 기입되고, 기입 데이터에 기초하여 생성된 ECC 데이터 및 인코드 ID가 ECC 셀 어레이(16) 내에 기입된다. 또한 누적치 판정기(22)는, 스텝 S23에서 선택한 비반전치와 반전치 중 어느 한쪽을, 누적치로 하여 유지한다(스텝 S24). 그리고, 스텝 S23에서 선택되어 메모리 셀 MC에 기입된 데이터가, 해당 메모리 셀 블록(14)에 대한 최종의 기입 데이터이면(스텝 S25, 예), 처리는 종료한다. 그렇지 않으면(스텝 S25, 아니오), 스텝 S20으로 되돌아가 처리를 반복한다.
상기 스텝 S22에서, 최초의 입력이 아닌 경우에는(스텝 S22, 아니오), 누적치 판정기(22)는 다음에 비반전치의 전체 비트가 "0"인지의 여부를 판정한다. 전체 비트가 "0"인 경우에는(스텝 S26, 예), 누적치 판정기(22)는 반전치를 선택하고, 그 선택 정보를 인코드 ID로 하여 인코더(21) 및 ECC 인코더(23)에 출력한다(스텝 S27). 따라서, 이 경우에는 레귤러 셀 어레이(15)에는 반전치가 기입된다. 그리고 누적치 판정기(22)는, 비반전치와 반전치 중 어느 하나를 선택한 쪽의 각 비트와, 자신이 유지하는 누적치의 각 자릿수와의 가산 결과를, 새로운 누적치로 하여 유지한다(스텝 S28). 즉, 스텝 S27 후에, 누적치 판정기(22)에 지금까지 유 지되어 있던 누적치는, 반전치가 더 가산된 값으로 갱신된다. 그리고 스텝 S25로 진행한다.
상기 스텝 S26에서, 전체 비트가 "0"이 아닌 경우, 즉 어느 하나의 비트가 "1"인 경우에는(스텝 S26, 아니오), 누적치 판정기(22)는 다음에 비반전치의 전체 비트가 "1"인지의 여부를 판정한다. 전체 비트가 "1"인 경우에는(스텝 S29, 예), 누적치 판정기(22)는 비반전치를 선택하고, 그 선택 정보를 인코드 ID로 하여 인코더(21) 및 ECC 인코더(23)에 출력한다(스텝 S30). 따라서, 이 경우에는 레귤러 셀 어레이(15)에는 비반전치가 기입된다. 그 후, 스텝 S28의 처리로 진행한다. 즉, 스텝 S30 후에, 누적치 판정기(22)에 지금까지 유지되어 있던 누적치는, 비반전치가 더 가산된 값으로 갱신된다. 그리고 스텝 S25로 진행한다.
상기 스텝 S29에서, 전체 비트가 "1"이 아닌 경우, 즉 어느 하나의 비트가 "0"인 경우에는(스텝 S29, 아니오), 스텝 S31의 처리로 진행한다. 스텝 S31에서 누적치 판정기(22)는, 자신이 유지하는 누적치의 각 자릿수와, 스텝 S20, S21에서 수취한 비반전치 및 반전치의 각 비트를 가산한다. 그리고, 비반전치 및 반전치의 각각의 가산 결과에서의 각 자릿수의 최대치와 최소치의 차를 산출한다(스텝 S31). 이어서 누적치 판정기(22)는, 스텝 S31에서 얻어진 비반전치 및 반전치의 각각의 가산 결과에 대하여 얻어진 차의 대소 관계를 판정한다(스텝 S32). 그리고, 비반전치에 대한 가산 결과의 최대치와 최소치의 차가, 반전치에 대한 가산 결과의 최대치와 최소치의 차보다도 작으면(스텝 S33, 아니오), 누적치 판정기(22)는 비반전치를 선택한다. 그리고 비반전치를 선택했다는 취지의 정보를, 인코드 ID로 하여 인코더(21) 및 ECC 인코더(23)에 출력한다(스텝 S34). 즉, 레귤러 셀 어레이(15)에는 비반전치가 기입된다.
반대로 스텝 S32의 결과, 비반전치에 대한 가산 결과의 최대치와 최소치의 차가, 반전치에 대한 가산 결과의 최대치와 최소치의 차 이상이면(스텝 S33, 예), 누적치 판정기(22)는 반전치를 선택한다. 그리고 반전치를 선택했다는 취지의 정보를, 인코드 ID로 하여 인코더(21) 및 ECC 인코더(23)에 출력한다(스텝 S35). 즉, 레귤러 셀 어레이(15)에는 반전치가 기입된다.
스텝 S34, S35 후에, 누적치 판정기(22)는 스텝 S28의 처리로 진행한다.
다음으로, 상기한 도 4, 도 5의 처리에 대하여, 구체예를 이용하여 이하 설명한다. 도 6은 누적치 판정기(22)에서 이용되는 각종 신호를 나타내는 다이어그램이다. 도 6에서는, 일례로서 1 페이지의 사이즈가 4 비트인 경우에 대하여 도시하고 있다. 도 6에서, 「입력 번호」는, 임의의 메모리 블록(14)에 기입되는 복수의 페이지 데이터의 입력 순서를 나타낸다. 「입력치」는, 각 입력 번호에서 외부로부터 인코더(21)에 입력되는 입력 데이터의 것이다. 「누적치(가산 결과)」는, 입력 번호 1에 대해서는 누적치를 나타내고, 입력 번호 2 이후에서는, 스텝 S31에서 얻어진 가산 결과를 나타낸다. 「판정」은, 스텝 S23, S27, S30, S34, S35에서, 비반전치와 반전치 중 어느 것을 선택했는지를 나타내며, ○ 표시가 선택된 것을 나타내고, × 표시가 비선택인 것을 나타낸다. 인코드 ID는, 비반전치가 선택되었을 때에 "0"으로 되고, 반전치가 선택되었을 때에 "1"로 된다. 또한, 입력 데이터, 비반전치, 및 반전치는 2진수로 나타내고, 누적치는 10진수로 나타내고 있 다.
우선 처음에, 인코더에 최초의 입력 데이터 "1000"이 입력된다. 이 경우의 비반전치 및 반전치는 각각 "1000", "0111"이다. 메모리 블록(14)에 기입되는 최초의 데이터이기 때문에(스텝 S22, 예), 비반전치와 반전치 중, 값이 "1"인 비트가 많은 쪽, 즉 반전치 "0111"을 누적치 판정기(22)는 선택한다(스텝 S23). 그리고 누적치는 "0111"로 되고, 인코드 ID로서 "1"이 인코더(21) 및 ECC 인코더(23)에 통지된다(스텝 S24).
다음으로, 인코더에 입력 데이터 "1100"이 입력된다. 이 경우의 비반전치 및 반전치는 각각 "1100", "0011"이다. 그렇게 하면, 최초의 데이터가 아니고(스텝 S22, 아니오), 비반전치의 전체 비트가 "0"이 아니고(스텝 S26, 아니오), 또한 비반전치의 전체 비트가 "1"이 아니기(스텝 S29, 아니오) 때문에, 누적치 판정기(22)는, 누적치의 각 자릿수와, 비반전치 및 반전치의 각 비트를 가산한다(스텝 S31). 그렇게 하면, 이 시점에서의 누적치는 "0111"이므로, 누적치와 비반전치 "1100"과의 가산 결과는, "1211"로 된다. 또한 누적치와 반전치 "0011"과의 가산 결과는, "0122"로 된다. 그렇게 하면, 누적치와 비반전치와의 가산 결과에서의 각 자릿수의 최대치는 "2"이고, 최소치는 "1"이기 때문에, 최대치와 최소치의 차는 "1"이다. 또한, 누적치와 반전치와의 가산 결과에서의 각 자릿수의 최대치는 "2"이고, 최소치는 "0"이기 때문에, 최대치와 최소치의 차는 "2"이다. 따라서, 비반전치에 대한 가산 결과에서의 최대치와 최소치의 차 "1"은, 반전치에 대한 가산 결과에서의 최대치와 최소치의 차 "2"보다도 작다(스텝 S33, 아니오). 따라서, 누적 치 판정기(22)는 비반전치 "1100"을 선택하고, 인코드 ID를 "0"으로 한다. 그리고 누적치 판정기(22)는, 반전치에 대한 가산 결과 "1211"을, 새로운 누적치로 하여 유지한다(스텝 S28). 또한 도 6에서, 입력 번호 "2" 이후에는 사선을 붙여서 가산 결과가 새로운 누적치로 된다.
이하, 입력 번호 "3", "4"에 대해서는 입력 번호 "2"의 경우와 마찬가지의 처리가 행해진다.
다음으로, 입력 번호 "5"에 대하여 설명한다. 5번째의 입력 데이터는 "0000"이다. 이 경우의 비반전치 및 반전치는 각각 "0000", "1111"이다. 그렇게 하면, 최초의 데이터가 아니고(스텝 S22, 아니오), 비반전치의 전체 비트가 "0"이므로(스텝 S26, 예), 누적치 판정기(22)는 반전치 "1111"을 선택한다(스텝 S27). 그렇게 하면, 이 시점에서의 누적치는 "2322"이므로, 누적치 "2322"와 반전치 "1111"과의 가산 결과 "3433"이 새로운 누적치로 된다(스텝 S28).
이하, 입력 번호 "6", "7"에 대해서는 입력 번호 "2"의 경우와 마찬가지의 처리가 행해진다.
다음으로 입력 번호 "8"에 대하여 설명한다. 8번째의 입력 데이터는 "0011"이다. 이 경우의 비반전치 및 반전치는 각각 "0011", "1100"이다. 그렇게 하면 누적치 판정기(22)는, 누적치의 각 자릿수와, 비반전치 및 반전치의 각 비트를 가산한다(스텝 S31). 이 시점에서의 누적치는 "4554"이므로, 누적치와 비반전치 "0011"과의 가산 결과는, "4565"로 된다. 또한 누적치와 반전치 "1100"과의 가산 결과는, "5654"로 된다. 그렇게 하면, 누적치와 비반전치와의 가산 결과에서의 각 비트의 최대치는 "6"이고, 최소치는 "5"이기 때문에, 최대치와 최소치의 차는 "1"이다. 또한, 누적치와 반전치와의 가산 결과에서의 각 자릿수의 최대치는 "6"이고, 최소치는 "5"이기 때문에, 최대치와 최소치의 차는 "1"이다. 따라서, 비반전치에 대한 가산 결과에서의 최대치와 최소치의 차 "1"은, 반전치에 대한 가산 결과에서의 최대치와 최소치의 차 "1"에 동등하다(스텝 S33, 예). 따라서, 누적치 판정기(22)는 반전치 "1100"을 선택하고, 인코드 ID를 "1"로 한다. 그리고 누적치 판정기(22)는, 반전치에 대한 가산 결과 "5654"를, 새로운 누적치로 하여 유지한다(스텝 S28).
이하, 입력 번호 "9"에 대해서는 입력 번호 "8"의 경우와 마찬가지의 처리가 행해지고, 입력 번호 "10", "11"에 대해서는 입력 번호 "2"의 경우와 마찬가지의 처리가 행해진다.
상기와 같이, 본 발명의 제1 실시 형태에 따른 메모리 시스템에서는, 하기 (1), (2)의 효과가 얻어진다.
(1) 반도체 기억 장치의 동작 신뢰성을 향상시킬 수 있다.
본 실시 형태에 따른 구성에서는, 메모리 컨트롤러(20)는 누적치 판정기(22)를 구비하고 있고, 비트선마다 기입 완료 데이터를 누적하여 유지하고 있다. 그리고, 이 누적치에 따라서, 입력 데이터를 그대로 기입할지, 또는 반전하여 기입할지를 결정하고 있다. 따라서, NAND형 플래시 메모리의 동작 신뢰성을 향상시킬 수 있다. 본 효과에 대하여, 이하에 설명한다.
예를 들면 배경 기술에서 설명한 특허 문헌 1에 기재된 NAND형 플래시 메모 리에서는, 메모리 셀 어레이 전체로서의 차지량이 평균화된다. 그러나, 차지량이 평균화되는 것은 메모리 셀 어레이 전체로서에 지나지 않고, 비트선 간의 차지량의 변동은 고려되어 있지 않다. 따라서, 경우에 따라서는 어느 하나의 비트선에 차지가 집중되는 일도 일어날 수 있다. 차지가 임의의 비트선에 집중되면, 그 비트선에서는 데이터의 오류가 발생하기 쉽다. 그러면, ECC 기능을 탑재한 NAND형 플래시 메모리에서는, 가장 오류가 발생하기 쉬운 비트선에서 구제할 수 있도록 ECC를 행해야 하기 때문에, 차지가 임의의 비트선에 집중되는 경우에는, ECC 효율이 저하한다고 하는 문제가 있었다.
그러나, 본 실시 형태에 따른 구성에서는, 과거에 메모리 셀 트랜지스터 MT에 기입한 데이터를, 비트선마다 누적하고 있다. 그리고, 새롭게 기입할 데이터의 비반전치 및 반전치와 누적치를 가산하고, 그 가산 결과에서의 각 자릿수의 최대치와 최소치의 차가 작게 되는 것을 선택하고 있다. 즉, 가산 결과의 각 자릿수는, 각 비트선에서의 토탈의 "1" 데이터의 수를 나타내고 있다. 따라서, 가산 결과의 각 자릿수의 최대치와 최소치가 클수록, 비트선 간에서 차지의 변동이 큰 것을 나타내고 있다. 따라서, 각 자릿수의 최대치와 최소치의 차가 보다 작아지도록, 즉 비트선 간에서의 차지의 변동이 작아지도록, 비반전치와 반전치 중 어느 하나를 선택하여, 메모리 셀 트랜지스터 MT에 기입하고 있다.
따라서, 비트선 간에서, "1" 데이터를 유지하는 메모리 셀 트랜지스터 MT의 수가 평균화된다. 즉, 임의의 비트선에 차지가 집중되는 것을 방지할 수 있다. 그 때문에, 데이터의 오류의 발생 확률이 비트선 간에서 균등화되어, ECC의 효율을 향상시킬 수 있다. 이에 의해, NAND형 플래시 메모리(10)의 동작 신뢰성을 향상시킬 수 있다.
(2) 반도체 기억 장치의 동작 신뢰성을 향상시킬 수 있다.
최근의 NAND형 플래시 메모리의 대용량화의 요청은 점점 더 증가하고 있다. 그 반면, 기입 및 읽어내기 데이터의 신뢰성은 서서히 나빠지는 경향에 있다. 그 이유로서, 예를 들면 NAND형 플래시 메모리에서는, 터널 전류를 이용한 데이터 기록 방식인 것으로부터, 게이트 절연막(터널 산화막)의 막 두께를 일정치 이하로 얇게 할 수 없다. 그럼에도 불구하고, 메모리 셀 트랜지스터 MT의 게이트 길이, 게이트 폭 등 가로 방향의 사이즈를 축소해 왔기 때문에, 소위 GIDL 현상에 의한 데이터 리텐션(기록 데이터 소실)이 현저해져 온 것을 들 수 있다.
또한, 비트당의 면적을 삭감하기 위해서, NAND 스트링 내의 메모리 셀 트랜지스터수가 커져 가고 있다. 그 결과, NAND 스트링에 흘려보낼 수 있는 전류가 작아져서, 데이터를 읽어내어 센스할 때에 필요한 전압 변동이나 전류치가 점점 더 작아지는 것도 들 수 있다.
또한, NAND 스트링 내의 메모리 셀 트랜지스터수가 커지는 것은, 리드 디스터브(Read Disturb: 이하 RD라고 약기함)에 대한 내성이나, 프로그램 디스터브(이하 PD라고 약기함)에 대한 내성을 악화시키는 경향이 있다. 이들 RD 및 PD의 악화는, NAND 스트링 내에서 직렬로 연속되는 메모리 셀 트랜지스터가 온하는 경우에, 그 연속하는 메모리 셀 트랜지스터수가 크면 클수록 현저해지는 경향이 있다. 이것은 다음과 같은 이유에 의한다.
즉, 각 메모리 셀 트랜지스터 MT에는, 예를 들면 메모리 셀 트랜지스터의 소스 또는 드레인 영역과, 메모리 셀 트랜지스터가 형성되는 웰 영역과의 사이의 pn 접합에 의해 형성된 기생 용량이 존재한다. 그러면, 컬럼 방향에서 연속하는 복수의 메모리 셀 트랜지스터 MT가 온 상태로 되면, NAND 스트링 내에는 매우 큰 기생 용량이 발생한다. 즉, 온 상태로 된 메모리 셀 트랜지스터의 기생 용량이 병렬 접속되어, 거대한 기생 용량이 형성된다. 그리고 이 기생 용량이, NAND형 플래시 메모리에 대하여 다양한 악영향을 미친다. 예를 들면, 임의의 워드선 WL에 읽어내기 전압이 인가되었을 때에, 기생 용량으로부터 공급된 대량의 전하(전류)가, 워드선 WL의 게이트 전압에서 가속되어 핫 일렉트론을 발생한다. 그리고, 발생된 핫 일렉트론이, 워드선 WL에 접속된 메모리 셀 트랜지스터의 터널 산화막을 초과하여, 이 메모리 셀 트랜지스터의 기록 데이터를 파괴한다. 이것이, 소위 GIDL 현상이다. 또한, 연속한 많은 메모리 셀 트랜지스터가 온으로 되는 경우에는, RD뿐만 아니라 PD도 일어나기 쉬운 것이 판명되었다.
그러나, 본 실시 형태에 따른 구성에서는, 입력 데이터를 비반전 또는 반전시켜 데이터를 기입하고 있다. 즉, 입력 데이터에서, 임의의 비트선에 "0" 데이터가 연속하는 경우라도, 누적치 판정기(22)의 판정 결과에 따라서는, 그 반전치인 "1" 데이터가 기입되게 되어, "0" 데이터가 동일 컬럼 상에 연속하는 것을 방지할 수 있다. 따라서, NAND 스트링 내에서 연속한 많은 메모리 셀 트랜지스터가 동시에 온으로 되는 것을 방지할 수 있다. 그 결과, 상기한 RD나 PD의 문제를 완화하여, NAND형 플래시 메모리의 동작 신뢰성을 향상시킬 수 있다.
또한, 상기 제1 실시 형태에서는, 스텝 S31∼S33에서, 누적치와 비반전치 및 반전치와의 가산 결과에서의, 각 자릿수의 최대치와 최소치의 차의 대소 관계를 판정하고 있었다. 그러나, 이 판정 처리는, 반드시 가산 결과의 각 자릿수의 최대치와 최소치를 바탕으로 하여 행할 필요는 없으며, 예를 들면 표준 편차를 이용해서 행하여도 된다. 도 7은 이와 같은 경우에서의 누적치 판정기(22)의 처리의 흐름을 설명하는 플로우차트이다.
도시하는 바와 같이, 스텝 S29에서 「비반전치의 전체 비트가 "1"」인 조건을 충족하지 않은 경우(스텝 S29, 아니오), 누적치 판정기(22)는, 누적치의 각 자릿수와, 비반전치 및 반전치의 각 비트를 가산한다. 다음으로, 비반전치 및 반전치에 대한 가산 결과의 각각에 대하여, 표준 편차를 산출한다(스텝 S40). 다음으로, 비반전치 및 반전치에 대한 가산 결과의 표준 편차의 대소 관계를 판정한다(스텝 S41). 그리고, 누적치와 비반전치와의 가산 결과의 표준 편차가, 누적치와 반전치와의 가산 결과의 표준 편차보다도 작은 경우(스텝 S42, 아니오)에는, 스텝 S34로 진행한다. 반대로 누적치와 비반전치와의 가산 결과의 표준 편차가, 누적치와 반전치와의 가산 결과의 표준 편차 이상인 경우(스텝 S42, 예)에는, 스텝 S35로 진행한다. 본 방법에 의해서도, 상기 설명한 (1) 및 (2)의 효과가 얻어진다.
[제2 실시 형태]
다음으로, 본 발명의 제2 실시 형태에 따른 반도체 장치에 대하여 설명한다. 본 실시 형태는, 상기 제1 실시 형태에서, 누적치의 모든 자릿수가 "1" 이상인 경우에는, 각 자릿수의 값을 각각 "1" 감하는 것이다. 메모리 시스템(1)의 구성이 나, 인코더(21)의 동작 등은 상기 제1 실시 형태와 마찬가지이므로, 이하에서는 제1 실시 형태와 서로 다른 점에 대해서만 설명한다.
도 8은, 본 실시 형태에 따른 누적치 판정기(22)의 동작을 도시하는 플로우차트이다. 도시하는 바와 같이, 제1 실시 형태에서 설명한 도 5와 서로 다른 점은, 스텝 S24, S28 후에, 스텝 S50의 처리를 행하는 점에 있다. 스텝 S50에서는, 스텝 S24, S28에서 얻어진 누적치의 모든 자릿수가 "1" 이상인지의 여부를 판정하여, 모든 자릿수가 "1" 이상인 경우에는, 모든 자릿수의 각각의 값으로부터 "1"을 감산하고, 이를 새로운 누적치로 하여 누적치 판정기(22)는 유지한다.
다음으로, 상기 도 8의 처리에 대하여, 구체예를 이용하여 이하 설명한다. 도 9는 누적치 판정기(22)에서 이용되는 각종 신호를 나타내는 다이어그램이며, 도 6과 마찬가지의 정보를 나타내고 있다.
도시하는 바와 같이, 입력 번호 "2"에서, 누적치 "0111"과 비반전치 "1100"과의 가산 결과는 "1211"이고, 반전치 "0011"과의 가산 결과는 "0122"이다. 그렇게 하면, 스텝 S28에서, 누적치 판정기(22)는 가산 결과 "1211"을 누적치로 하여 유지한다. 그렇게 하면, 누적치 "1211"은 모든 자릿수가 "1" 이상이기 때문에, 누적치 판정기(22)는 스텝 S50에서, 누적치 "1211"의 각 자릿수에 대하여 "1"을 감한 "0100"을 새로운 누적치로 하여 유지한다.
다음의 입력 번호 "3"에서는, 스텝 S50에서 얻어진 누적치 "0100"과, 비반전치 "0110" 및 반전치 "1001"의 가산이 행해진다. 그렇게 하면, 비반전치에 대한 가산 결과는 "0210"이고, 반전치에 대한 가산 결과는 "1101"로 된다. 따라서, 누 적치 판정기(22)는 가산 결과 "1101"을 누적치로 하여 유지한다. 이 경우에는, 누적치의 2자릿수째가 "0"이기 때문에, 스텝 S50에서 각 비트로부터 "1"을 감하지 않고, 가산 결과 "1101"을 그대로 누적치로 하여 유지한다. 이하, 마찬가지이다.
이상과 같이, 본 발명의 제2 실시 형태에 따른 메모리 시스템(1)에서는, 상기 제1 실시 형태에서 설명한 (1), (2)의 효과 외에, 하기 (3)의 효과가 얻어진다.
(3) 메모리 컨트롤러(20)의 사이즈를 삭감할 수 있다.
누적치가 단순히 과거에 기입된 데이터를 누적한 것인 경우, 그 최대치는, 해당 누적치가 계수하고 있는 NAND 스트링 내의 워드선의 개수와 동등해진다. 예를 들면 워드선이 32개 있는 경우에는, 누적치의 각 자릿수의 값은 최대로 "32"로 된다. 그렇게 하면, 누적치의 각 자릿수는 2진수로 5 비트의 데이터로 되고, 누적치의 각 자릿수당, 5단의 레지스터가 필요해진다.
이에 대하여 본 실시 형태에 따른 구성에서는, 누적치의 각 자릿수의 값이 "1"을 초과한 경우에는, 모든 자릿수로부터 "1"을 감하고 있다. 이에 의해, 누적치의 각 자릿수가, 취할 수 있는 최대치(워드선 개수가 32개인 경우에는 "32")로 될 가능성이 저감된다. 따라서, 누적치의 각 자릿수당의 레지스터수를 삭감하고, 메모리 컨트롤러(20)의 사이즈를 삭감할 수 있다.
또한, 누적치의 절대치 자체에는 의미는 없고, 누적치의 비트간의 값의 차를 알면 충분하다. 왜냐하면, 누적치의 각 자릿수의 값의 차가, 비트선 간의 차지의 차를 의미하고 있기 때문이다. 따라서, 본 실시 형태와 같이 누적치의 각 자릿수의 값을 "1" 감했다고 하더라도, 비트선 간에서 차지를 평균화하는 데에 아무런 영 향을 주지 않는다.
또한, 본 실시 형태에서도, 스텝 S31∼S33의 공정을, 도 7을 이용하여 설명한 스텝 S40∼S42로 치환하는 것이 가능하다.
[제3 실시 형태]
다음으로, 본 발명의 제3 실시 형태에 따른 반도체 장치에 대하여 설명한다. 본 실시 형태는, 상기 제2 실시 형태에서, 가산 결과의 어느 하나의 자릿수에 있어서 오버플로우(자릿수 넘김)가 생기는 경우에는, 그 자릿수의 값을, 그 자릿수로 계수 가능한 최대치의 "2"의 몫으로 치환하고, 그 밖의 각 자릿수는 유지하는 값의 "2"의 몫으로 치환하는 것이다. 메모리 시스템(1)의 구성이나, 인코더(21)의 동작 등은 상기 제1, 제2 실시 형태와 마찬가지이므로, 이하에서는 제1, 제2 실시 형태와 서로 다른 점에 대해서만 설명한다.
도 10은, 본 실시 형태에 따른 누적치 판정기(22)의 동작을 도시하는 플로우차트이다. 도시하는 바와 같이, 제2 실시 형태에서 설명한 도 8과 서로 다른 점은, 스텝 S31을 스텝 S60∼S63으로 치환한 점에 있다. 즉, 스텝 S29에서, 「비반전치의 전체 비트가 "1"」인 조건을 충족하지 않는 경우(스텝 S29, 아니오), 누적치 판정부(22)는 누적치의 각 자릿수와, 비반전치 및 반전치의 각 비트와의 가산을 행한다(스텝 S60). 그리고, 스텝 S60에서 얻어진 가산 결과 중 어느 하나의 자릿수에 오버플로우가 발생했는지 여부를 판정한다. 오버플로우가 발생하지 않은 경우에는(스텝 S61, 아니오), 스텝 S32의 처리로 진행한다. 즉, 이 경우의 처리는 상기 제1, 제2 실시 형태와 마찬가지이다.
스텝 S61에서 오버플로우가 발생하는 경우에는(스텝 S61, 예), 누적치 판정부(22)는, 오버플로우를 일으킨 자릿수를, 그 자릿수가 취할 수 있는 최대치로 하고, 또한 모든 자릿수를 1 비트 우시프트시킨 값을, 새로운 가산 결과로 한다(스텝 S62). 예를 들면, 누적치의 임의의 자릿수의 최대치가 "7"이었다고 한다. 이 자릿수의 값이 예를 들면 "8"로 되어 오버플로우를 일으키는 경우에는, 이 자릿수의 값을 우선 최대치인 "7"(2진수의 "111")로 한다. 그런 다음에, 1 비트 우시프트를 행한다. 즉, "111"→"011"(10진수로 "3")로 한다. 그 결과 얻어진 "3"을, 해당 자릿수에 대한 가산 결과로 한다. 바꾸어 말하면, 오버플로우를 일으키는 자릿수를, 해당 자릿수가 취할 수 있는 최대치 "7"을, "2"로 나눈 몫 "3"으로 치환한다. 또한 나눈 나머지는 버린다. 다른 각 자릿수에 대해서도 유지하는 값에 대하여 마찬가지의 처리를 행한다.
그리고, 스텝 S62에서 얻어진 가산 결과를 이용하여, 비반전치 및 반전치에 대한 가산 결과에서의, 각 자릿수의 최대치와 최소치의 차를 산출하고(스텝 S63), 스텝 S32로 진행한다. 이 후의 처리는 상기 제1, 제2 실시 형태와 마찬가지이다.
이상과 같이, 본 발명의 제3 실시 형태에 따른 메모리 시스템(1)에서는, 상기 제1 실시 형태에서 설명한 (1), (2)의 효과, 및 제2 실시 형태에서 설명한 (3)의 효과 외에, 하기 (4)의 효과가 얻어진다.
(4) 메모리 컨트롤러(20)의 사이즈를 삭감할 수 있다.
도 11은, 누적치 판정부(22)에서 누적치를 유지하는 누적치 유지부의 블록도이다. 또한 도 11에서는, 누적치가 4 자릿수, 즉 비트선 개수가 4개인 경우에 대 하여 도시하고 있다.
도시하는 바와 같이 누적치 유지부는, 4개의 유지부(40∼43)를 구비하고 있다. 유지부(40∼43)의 각각은, 4 자릿수의 누적치의 각 자릿수의 값을 유지한다. 그리고 유지부(40∼43)의 각각은, 2개의 레지스터(44, 45)를 구비하고 있으며, 각 레지스터(44, 45)가 2진수 1 비트의 데이터를 유지한다. 도 11에서는, 누적치로서 "3210"을 유지하고 있는 모습을 도시하고 있다. 즉, 유지부(40)의 레지스터(44, 45)는 각각 "0", "0"을 유지하고, 유지부(41)의 레지스터(44, 45)는 각각 "0", "1"을 유지하고, 유지부(42)의 레지스터(44, 45)는 각각 "1", "0"을 유지하고, 유지부(43)의 레지스터(44, 45)는 각각 "1", "1"을 유지하고 있다.
이 상태에서, 또한 "1000"을 가산하는 경우를 생각한다. 유지부(43)에는 "1"이 가산되기 때문에, 본래라면 가산 결과는 "3"+"1"="4"로 되어야 하지만, 유지부(43)는 최대로 "3"까지밖에 계수할 수 없다. 즉 오버플로우를 일으켜, 정확한 가산이 곤란해진다.
그러나 본 실시 형태에서는, 오버플로우를 일으키는 경우의 룰을 미리 정하고 있다. 구체적으로는, 해당 유지부(43)가 유지 가능한 최대치인 "2"의 몫을, 오버플로우를 일으켰을 때에 유지할 값으로 한다. 따라서 도 11의 경우에는, "3"을 "2"로 나눈 몫인 "1"을 유지한다. 바꾸어 말하면, 유지부(43)에 포함되는 전체 레지스터(44, 45)의 값을 "1"로 하고, 이 값을 1 비트 우시프트시킨다. 유지부(40, 41, 42)에 대해서는 유지하는 값을 1 비트 우시프트시켜, 각각 "0", "0", "1"로 되고, 새로운 누적치로서, "1100"을 유지한다.
이에 의해, 오버플로우를 일으키는 경우라도, 정확한 처리가 가능해진다. 본 처리는, 특히 제2 실시 형태와 조합하는 경우에 현저한 효과로 된다. 즉, 제2 실시 형태에서는, 누적치의 각 자릿수로부터 "1"을 감함으로써, 누적치를 유지하는 레지스터수를 삭감한다. 그러나 이 경우, 누적치의 각 자릿수가 도달할 수 있는 최대치는 경험적으로 구하게 된다. 따라서, 레지스터수를 지나치게 감하면 누적치의 각 자릿수에서 오버플로우가 발생할 우려가 있다. 그러나 이러한 경우에도, 본 실시 형태와 같이 오버플로우 시의 대책을 실시함으로써, 레지스터수를 효과적으로 줄이면서, 정확한 처리가 가능해진다.
또한, NAND형 플래시 메모리(10)에서는, 데이터는 소스측의 셀렉트 게이트선 SGS에 가까운 메모리 셀 트랜지스터 MT(워드선 WL0에 접속된 메모리 셀 트랜지스터 MT)로부터 순차적으로 데이터가 기입된다. 따라서, 셀렉트 게이트선 SGS에 가까운 메모리 셀 트랜지스터 MT일수록, 비트선 간의 차지량을 보다 케어해야 한다. 이 점에서, 누적치의 오버플로우는 기입이 느린 메모리 셀 트랜지스터 MT, 즉 드레인측의 셀렉트 게이트선 SGD에 가까운 메모리 셀 트랜지스터 MT에의 기입 시에 발생하고, 소스측의 셀렉트 게이트선 SGS에 가까운 메모리 셀 트랜지스터 MT에의 기입 시에는 발생하기 어렵다. 따라서, 오버플로우가 발생함으로써, 누적치가 비트선 간의 차지량의 차를 정확하게 나타내지 않게 되었다고 하더라도, 그 시점에서는, 셀렉트 게이트선 SGS에 가까운 메모리 셀 트랜지스터 MT에의 기입은 종료되어 있을 것이므로, 실제 상, 문제는 발생하지 않는다.
또한, 본 실시 형태에서도 스텝 S63, S32의 처리는, 제1 실시 형태에서 설명 한 도 7과 같이 표준 편차를 이용해서 행하여도 된다. 또한 스텝 S50의 처리는 반드시 필요하지는 않으며, 생략해도 된다.
[제4 실시 형태]
다음으로, 본 발명의 제4 실시 형태에 따른 반도체 장치에 대하여 설명한다. 본 실시 형태는, 상기 제1 내지 제3 실시 형태에서 인코더(21)를, 의사 난수 발생기를 이용하여 형성하는 것이다. 이하에서는, 상기 제1 내지 제3 실시 형태와 서로 다른 점에 대해서만 설명한다. 도 12는 본 실시 형태에 따른 메모리 컨트롤러(20)가 구비하는 인코더(21)의 구성을 도시하는 블록도이다.
도시하는 바와 같이 인코더(21)는, 제1 의사 난수 발생기(32), 제2 의사 난수 발생기(33), XOR 게이트(34, 35), 및 셀렉터(36)를 구비하고 있다.
제1 의사 난수 발생기(32)는, 기입 데이터의 어드레스의 상위 비트(이하, 상위 어드레스라고 부름)를 기초로 의사 난수를 발생한다. 즉, 상위 어드레스를 스크램블 시드로 하여 의사 난수를 발생한다. 제2 의사 난수 발생기(33)는, 기입 데이터의 어드레스의 하위 비트(이하, 하위 어드레스라고 부름)를 기초로 의사 난수를 발생한다. 즉, 하위 어드레스를 스크램블 시드로 하여 의사 난수를 발생한다. 제1, 제2 의사 난수 발생기(32, 33)는, 모두 마찬가지의 구성으로서, 스크램블 시드가 동일하면, 모두 동일한 의사 난수를 발생한다.
XOR 게이트(34)는, 제1 의사 난수 발생기(32)에서 발생된 의사 난수와, 입력 데이터와의 배타적 논리합 연산을 행하고, 연산 결과를 제1 스크램블 데이터로서 출력한다. XOR 게이트(35)는, 제2 의사 난수 발생기(33)에서 발생된 의사 난수와, 입력 데이터와의 배타적 논리합 연산을 행하고, 연산 결과를 제2 스크램블 데이터로서 출력한다.
셀렉터(36)는, 인코드 ID에 따라서, 제1, 제2 스크램블 데이터 중 어느 한쪽을 기입 데이터로서 출력한다. 보다 구체적으로는, 인코드 ID가 "0"인 경우에는 제1 스크램블 데이터를 선택하고, 인코드 ID가 "1"인 경우에는 제2 스크램블 데이터를 선택한다.
도 13은, 읽어내기용 디코더(24)의 구성을 도시하는 블록도이다. 도시하는 바와 같이 읽어내기용 디코더(24)는, 셀렉터(60), 의사 난수 발생기(61), 및 XOR 게이트(62)를 구비하고 있다.
셀렉터(60)는, 인코드 ID에 따라서, 상위 어드레스와 하위 어드레스 중 어느 한쪽을 선택한다. 보다 구체적으로는, 인코드 ID가 "0"인 경우에는 상위 어드레스를 선택하고, 인코드 ID가 "1"인 경우에는 하위 어드레스를 선택한다. 의사 난수 발생기(61)는, 인코더(21)에서의 제1, 제2 의사 난수 발생기(32, 33)와 마찬가지의 구성을 갖고 있으며, 셀렉터(60)에서 선택된 상위 어드레스와 하위 어드레스 중 어느 한쪽을 스크램블 시드(Scramble Seed)로서 의사 난수를 발생한다. XOR 게이트(62)는, 센스 앰프(13)에서 센스 증폭된 읽어내기 데이터와, 의사 난수 발생기(61)에서 발생된 의사 난수의 배타적 논리합 연산을 행한다. 그리고 XOR 게이트(62)에서의 연산 결과가, 해독된 데이터로 된다.
본 실시 형태에 따른 인코더(21)의 동작은, 상기 제1 실시 형태에서 설명한 도 4의 플로우차트에서, 비반전치와 반전치를, 각각 제1, 제2 스크램블 데이터로 치환한 것이다.
또한, 본 실시 형태에 따른 누적치 판정기(22)의 동작은, 상기 제1 내지 제3 실시 형태에서 설명한 도 5, 도 7, 도 8, 도 10의 플로우차트에서, 비반전치와 반전치를, 각각 제1, 제2 스크램블 데이터로 치환한 것이다.
즉, 입력 데이터는 제1, 제2 의사 난수 발생기(32, 33)에 의해, 각각 서로 다른 규칙에 따라서 스크램블된다. 이와 같이 해서 생성된 제1, 제2 스크램블 데이터가, 기입 데이터로서 NAND형 플래시 메모리(10)에 기입된다.
누적치 판정기(22)는, NAND형 플래시 메모리(10)에 기입된 제1, 제2 스크램블 데이터를 누적 가산한다. 이 누적치의 각 자릿수는, NAND형 플래시 메모리(10)에서의 각 비트선에 대응한다. 그리고 누적치 판정기(22)는, 누적치의 각 자릿수와 제1 스크램블 데이터의 각 비트를 가산하고, 또한 누적치의 각 자릿수와 제2 스크램블 데이터의 각 비트를 가산한다. 또한, 제1, 제2 스크램블 데이터 중, 가산 결과의 각 자릿수의 최대치와 최소치의 차, 또는 표준 편차가 보다 작은 어느 한쪽을 선택한다.
이상과 같이, 본 발명의 제4 실시 형태에 따른 메모리 시스템(1)에서는, 상기 제1 내지 제3 실시 형태에서 설명한 (1) 내지 (4)의 효과 외에, 하기 (5)의 효과가 얻어진다.
(5) 반도체 기억 장치의 동작 신뢰성을 향상시킬 수 있다.
본 실시 형태에 따른 메모리 시스템(1)에서는, 인코더(21)는, 제1, 제2 의사 난수 발생기(32, 33)와 XOR 게이트(34, 35)를 포함하는 리니어 피드백 시프트 레지 스터(Linear Feedback Shift Register)를 구비하고 있다. 그리고, 이 리니어 피드백 시프트 레지스터에 의해 입력 데이터를 스크램블해서 얻어진 제1, 제2 스크램블 데이터 중 어느 한쪽을, 메모리 셀 트랜지스터 MT에 기입하고 있다.
즉, NAND형 플래시 메모리(10)에 기입되는 데이터는, 제1, 제2 스크램블 데이터 중 어느 것을 선택할지에 따라, 비트선 방향에서 랜덤화(랜더마이즈: randomize)된다. 또한, 의사 난수를 이용하여 스크램블함으로써, 페이지 내에서도 랜더마이즈된다. 바꾸어 말하면, 워드선 방향에서도 랜더마이즈된다.
따라서, 비트선 방향뿐만 아니라, 워드선 방향으로도 동일 데이터가 연속하는 것을 방지할 수 있다. 따라서, 제1 실시 형태에서 효과 (2)로서 설명한 바와 같이, RD나 PD의 문제를 완화하여, NAND형 플래시 메모리의 동작 신뢰성을 향상시킬 수 있다.
또한, 본 실시 형태에서는, 인코더(21)가 2개의 의사 난수 발생기를 구비하는 경우에 대해서 설명했다. 그러나, 의사 난수 발생기의 수는 1개이어도 된다. 이 경우에는, 1개의 의사 난수 발생기가, 상위 어드레스 및 하위 어드레스를 스크램블 시드에 이용하여 2개의 의사 난수를 발생하고, 이를 레지스터에 유지시킨다. 그리고, 레지스터에 유지된 의사 난수와 입력 데이터의 배타적 논리합 연산을 행하면 된다.
또한, 인코더(21)는 3개 이상의 스크램블 데이터를 발생해도 된다. 이 경우에는, 1개의 의사 난수 발생기가 3개 이상의 난수를 발생해도 되고, 3개 이상의 의사 난수 발생기를 설치해도 된다.
[제5 실시 형태]
다음으로, 본 발명의 제5 실시 형태에 따른 반도체 장치에 대하여 설명한다. 본 실시 형태는, 상기 제1 내지 제3 실시 형태에서, 메모리 셀 트랜지스터 MT 각각이 4치의 데이터를 유지하는 경우에 관한 것이다. 이하에서는, 상기 제1 내지 제3 실시 형태와 서로 다른 점에 대해서만 설명한다.
본 실시 형태에 따른 메모리 셀 트랜지스터 MT의 임계치에 대하여, 도 14를 이용하여 설명한다. 도 14는 메모리 셀 트랜지스터 MT의 임계치 분포를 도시하는 그래프이고, 횡축이 임계치 전압 Vth를 나타내고, 종축이 메모리 셀의 존재 확률을 나타낸다.
도시하는 바와 같이 메모리 셀 MC는, 임계치 전압 Vth가 낮은 순으로 "11", "10", "00", "01"의 4개의 데이터를 유지할 수 있다. "11" 데이터를 유지하는 메모리 셀의 임계치 전압 Vth는, Vth<0V이다. "10" 데이터를 유지하는 메모리 셀의 임계치 전압 Vth는, 0V<Vth<Vth1이다. "00" 데이터를 유지하는 메모리 셀의 임계치 전압 Vth는, Vth1<Vth<Vth2이다. "01" 데이터를 유지하는 메모리 셀의 임계치 전압 Vth는, Vth2<Vth<Vth3이다.
상기 4치의 데이터의 메모리 셀 MC에의 기입 방법에 대하여 도 15를 이용하여 간단히 설명한다. 도 15는 메모리 셀의 임계치 분포를 도시하는 그래프이고, 기입 시에서의 메모리 셀의 임계치 전압 Vth의 변화의 모습을 나타내고 있다. 데이터는 1 페이지에 대하여 일괄하여 기입된다. 또한 데이터의 기입은, 제1 기입과 제2 기입의 2회로 나누어 행해진다.
기입에 있어서, 메모리 셀은 소거 상태에 있다. 즉, 메모리 셀의 임계치 전압 Vth는 마이너스의 값이고, "11" 데이터를 유지한 상태이다. 그 상태에서, 우선 제1 기입을 행한다. 기입 데이터(제1 기입 데이터)가 "1"인 경우에는, 부유 게이트에 전자는 주입되지 않고, 임계치 전압 Vth는 불변이다. 제1 기입 데이터가 "0"인 경우에는, 부유 게이트에 전자가 주입되고, 임계치 전압 Vth는 플러스의 방향으로 변화되어, Vth1<Vth<Vth2로 된다. 즉, 메모리 셀은 "00"을 유지하고 있을 때와 거의 동일한 임계치로 된다.
다음으로 제2 기입을 행한다. 우선 제1 기입 데이터가 "1"이었던 경우에 대해서 설명한다. 이 경우에, 제2 기입에서의 기입 데이터(제2 기입 데이터)가 "1"이었던 경우에는, 제2 기입 시에서도 부유 게이트에 전자는 주입되지 않고, 임계치 전압 Vth는 마이너스의 값을 유지한다. 그 결과, 메모리 셀에는 "11"이 기입된다. 제2 기입 데이터가 "0"인 경우, 부유 게이트에 전자가 주입된다. 그 결과, 임계치 전압 Vth는 마이너스로부터 플러스의 방향으로 변화되어, 약 0V<Vth<Vth1로 된다. 즉, 메모리 셀에는 "10"이 기입된다.
다음으로 제1 기입 데이터가 "0"이었던 경우에 대해서 설명한다. 이 경우에서, 제2 기입 데이터가 "0"인 경우, 제2 기입 시에는 부유 게이트에 전자가 주입되지 않는다. 따라서, 제1 기입의 결과의 값을 유지한다. 즉, Vth1<Vth<Vth2이고, 그 결과 메모리 셀에는 "00"이 기입된다. 제2 기입 데이터가 "1"인 경우, 또한 부유 게이트에 전자가 주입된다. 그 결과, 임계치 전압 Vth는 더 플러스의 방향으로 변화되어, Vth2<Vth<Vth3으로 된다. 즉, 메모리 셀에는 "01"이 기입된다.
다음으로, 본 실시 형태에 따른 메모리 컨트롤러(20)가 구비하는 인코더(21)의 구성에 대하여 도 16을 이용하여 설명한다. 도 16은, 인코더(21)의 블록도이다. 도시하는 바와 같이 인코더(21)는, 제1 실시 형태에서 설명한 도 3의 구성에서, 제1 부호화기(37), 제2 부호화기(38), 및 메모리(39)를 더 구비하고 있다.
메모리(39)는, 부호화 테이블(70)을 구비하고 있다. 부호화 테이블의 일례에 대하여 도 17을 이용하여 설명한다. 도 17은 부호화 테이블의 개념도이다. 도시하는 바와 같이 부호화 테이블은, 입력 데이터의 비반전치 및 반전치에 대한 누적용 부호를 유지한다. 누적용 부호로서 "0", "1", "2", "3"이, 차지량이 많은 순으로 할당된다. 즉, 비반전치 또는 반전치가 "01"인 경우의 누적용 부호는 "0"이고, 비반전치 또는 반전치가 "00"인 경우의 누적용 부호는 "1"이고, 비반전치 또는 반전치가 "10"인 경우의 누적용 부호는 "2"이며, 비반전치 또는 반전치가 "11"인 경우의 누적용 부호는 "3"이다.
제1 부호화기(37)는, 메모리(39) 내의 부호화 테이블(70)에 따라서, 비반전치를 부호화해서 제1 부호화 데이터를 생성하고, 누적치 판정기(22)에 출력한다. 즉 제1 부호화기(37)는, 비반전치가 "01", "00", "10", "11"인 경우에는, 제1 부호화 데이터로서 각각 "0", "1", "2", "3"을 출력한다.
제2 부호화기(38)는, 메모리(39) 내의 부호화 테이블(70)에 따라서, 반전치를 부호화해서 제2 부호화 데이터를 생성하고, 누적치 판정기(22)에 출력한다. 즉 제2 부호화기(38)는, 반전치가 "01", "00", "10", "11"인 경우에는, 제2 부호화 데이터로서 각각 "0", "1", "2", "3"을 출력한다.
그 밖의 구성은, 상기 제1 내지 제3 실시 형태와 마찬가지이므로, 설명은 생략한다.
다음으로, 상기 구성의 인코더(21)의 동작에 대하여, 도 18을 이용하여 설명한다. 도 18은 본 실시 형태에 따른 인코더(21)의 동작의 흐름을 설명하는 플로우차트이다.
도시하는 바와 같이 인코더(21)는, 우선 외부로부터 레귤러 셀 어레이(15)의 1 페이지분의 입력 데이터를 접수한다(스텝 S10). 그리고 인코더(21)의 제1 부호화기(37)가, 비반전치를 부호화 테이블(70)에 따라서 부호화하고, 그 결과 얻어지는 제1 부호화 데이터를 누적치 판정기(22)에 통지한다(스텝 S70). 동시에 인코더(21)의 제2 부호화기(38)가, 반전기(30)에서 얻어진 반전치를 부호화 테이블(70)에 따라서 부호화하고, 그 결과 얻어지는 제2 부호화 데이터를 누적치 판정기(22)에 통지한다(스텝 S71). 그 후, 인코더(21)는 누적치 판정기(22)로부터 인코드 ID를 수신한다(스텝 S13). 그리고, 인코더(21)의 셀렉터(31)가, 인코드 ID에 따라서 비반전치와 반전치 중 어느 한쪽을, 기입 데이터로 하여 NAND형 플래시 메모리(10)에 출력한다(스텝 S14). 그 후, 입력 데이터가 최종 데이터인 경우에는(스텝 S15, 예), 처리를 종료하고, 최종 데이터가 아니면(스텝 S15, 아니오), 스텝 S10으로 되돌아간다.
누적치 판정기(22)의 동작은, 대략적으로는 상기 제1 내지 제3 실시 형태에서 설명한 도 5, 도 7, 도 8, 및 도 10의 플로우차트에서, 비반전치 및 반전치를, 각각 제1, 제2 부호화 데이터로 치환한 것이다. 도 19는, 본 실시 형태에 따른 누 적치 판정기(22)의 처리의 흐름을 설명하는 플로우차트이다.
도시하는 바와 같이 누적치 판정기(22)는, 우선 인코더(21)로부터 제1 부호화 데이터를 수취하고(스텝 S90), 또한 제2 부호화 데이터를 수취한다(스텝 S91). 그리고, 수취한 제1, 제2 부호화 데이터가 해당 메모리 블록(14)에 대한 최초의 입력 데이터에 대응하는 것인 경우에는(스텝 S92, 예), 제1, 제2 부호화 데이터 중, 각 자릿수의 합이 큰 쪽을 선택한다. 각 자릿수의 합이 동일 값인 경우에는 제2 부호화 데이터를 선택한다. 또한 이 선택 정보는, 인코드 ID로서 인코더(21) 및 ECC 인코더(23)에 출력된다(스텝 S93). 그 결과, 인코더(21)로부터 출력된 기입 데이터가 레귤러 셀 어레이(15) 내에 기입되고, 기입 데이터에 기초하여 생성된 ECC 데이터 및 인코드 ID가 ECC 셀 어레이(16) 내에 기입된다. 또한 누적치 판정기(22)는, 스텝 S93에서 선택한 제1, 제2 부호화 데이터 중 어느 한쪽을, 누적치로 하여 유지한다(스텝 S94). 그리고, 스텝 S93에서 선택되어 메모리 셀 MC에 기입된 데이터가, 해당 메모리 셀 블록(14)에 대한 최종의 기입 데이터이면(스텝 S95, 예), 처리는 종료한다. 그렇지 않으면(스텝 S95, 아니오), 스텝 S90으로 되돌아가 처리를 반복한다.
상기 스텝 S92에서, 최초의 입력이 아닌 경우에는(스텝 S92, 아니오), 누적치 판정기(22)는 다음으로, 비반전치의 값이 모두 동일하며, 또한 그 상위 비트가 "0"인지의 여부를 판정한다. 비반전치가 모두 동일한지의 여부의 판정은, 제1 부호화 데이터의 전체 비트가 동일한 값인지의 여부를 봄으로써 행할 수 있다. 또한 그 상위 비트가 "0"인지의 여부의 판정은, 누적치에 제1, 제2 부호화 데이터와는 별도로 비반전치를 입력하여, 이에 의해 판정을 행해도 되고, 누적치 판정기(22)가 도 17에 도시하는 대응 관계에 기초하여 제1 부호화 데이터로부터 판단해도 된다. 비반전치가 모두 동일하며, 또한 그 상위 비트가 "0"인 경우에는(스텝 S96, 예), 누적치 판정기(22)는 제2 부호화 데이터를 선택하고, 그 선택 정보를 인코드 ID로 하여 인코더(21) 및 ECC 인코더(23)에 출력한다(스텝 S97). 따라서, 이 경우에는 레귤러 셀 어레이(15)에는 반전치가 기입된다. 그리고 누적치 판정기(22)는, 제1, 제2 부호화 데이터 중 어느 하나를 선택한 쪽의 각 비트와, 자신이 유지하는 누적치의 각 자릿수와의 가산 결과를, 새로운 누적치로 하여 유지한다(스텝 S98). 즉, 스텝 S97 후에, 누적치 판정기(22)에 지금까지 유지되어 있던 누적치는, 제2 부호화 데이터가 더 가산된 값으로 갱신된다. 그리고 스텝 S95로 진행한다.
상기 스텝 S96의 조건이 충족되지 않은 경우에는(스텝 S96, 아니오), 누적치 판정기(22)는 다음으로, 비반전치의 값이 모두 동일하며, 또한 그 상위 비트가 "1"인지의 여부를 판정한다. 비반전치가 모두 동일하며, 또한 그 상위 비트가 "1"인 경우에는(스텝 S99, 예), 누적치 판정기(22)는 제1 부호화 데이터를 선택하고, 그 선택 정보를 인코드 ID로 하여 인코더(21) 및 ECC 인코더(23)에 출력한다(스텝 S100). 따라서, 이 경우에는 레귤러 셀 어레이(15)에는 비반전치가 기입된다. 그 후, 스텝 S98의 처리로 진행한다. 즉, 스텝 S100 후에, 누적치 판정기(22)에 지금까지 유지되어 있던 누적치는, 제1 부호화 데이터가 더 가산된 값으로 갱신된다. 그리고 스텝 S95로 진행한다.
상기 스텝 S99의 조건을 충족하지 않은 경우, 즉 「비반전치의 값이 모두 동 일」한 조건을 충족하지 않은 경우에는(스텝 S99, 아니오), 스텝 S101의 처리로 진행한다. 스텝 S101에서 누적치 판정기(22)는, 자신이 유지하는 누적치의 각 자릿수와, 스텝 S90, S91에서 수취한 제1 부호화 데이터 및 제2 부호화 데이터의 각 비트를 가산한다. 그리고, 제1 부호화 데이터 및 제2 부호화 데이터의 각각의 가산 결과에서의 각 자릿수의 최대치와 최소치의 차를 산출한다(스텝 S101). 계속해서 누적치 판정기(22)는, 스텝 S101에서 얻어진 제1 부호화 데이터 및 제2 부호화 데이터의 각각의 가산 결과에 대하여 얻어진 차의 대소 관계를 판정한다(스텝 S102). 그리고, 제1 부호화 데이터에 대한 가산 결과의 최대치와 최소치의 차가, 제2 부호화 데이터에 대한 가산 결과의 최대치와 최소치의 차보다도 작으면(스텝 S103, 아니오), 누적치 판정기(22)는 제1 부호화 데이터를 선택한다. 그리고 제1 부호화 데이터를 선택했다는 취지의 정보를, 인코드 ID로 하여 인코더(21) 및 ECC 인코더(23)에 출력한다(스텝 S104). 즉, 레귤러 셀 어레이(15)에는 비반전치가 기입된다.
반대로 스텝 S102의 결과, 제1 부호화 데이터에 대한 가산 결과의 최대치와 최소치의 차가, 제2 부호화 데이터에 대한 가산 결과의 최대치와 최소치의 차 이상이면(스텝 S103, 예), 누적치 판정기(22)는 제2 부호화 데이터를 선택한다. 그리고 제2 부호화 데이터를 선택했다는 취지의 정보를, 인코드 ID로 하여 인코더(21) 및 ECC 인코더(23)에 출력한다(스텝 S105). 즉, 레귤러 셀 어레이(15)에는 반전치가 기입된다.
스텝 S104, S105 후에, 누적치 판정기(22)는 스텝 S98의 처리로 진행한다.
상기 처리의 구체예에 대하여, 도 20을 이용하여 설명한다. 도 20은, 누적치 판정기(22)에서 이용되는 각종 신호를 나타내는 다이어그램이며, 도 6과 마찬가지의 정보를 도시하고 있으며, 또한 제1, 제2 부호화 데이터에 대해서도 도시하고 있다. 또한 제1, 제2 부호화 데이터 및 누적치에 관해서는, 어느 하나의 자릿수의 값이 "10" 이상으로 된 경우에는, 각 자릿수 사이에 「,」를 표기했다.
우선 처음에, 인코더(21)에 최초의 입력 데이터 "01", "11", "10", "11"이 입력된다. 이 경우의 반전치는 "10", "00", "01", "00"이다. 그렇게 하면, 제1 부호화 데이터는 도 17의 규칙에 따라서 "0323"으로 되고, 제2 부호화 데이터는 "2101"로 된다. 메모리 블록(14)에 기입되는 최초의 데이터이기 때문에(스텝 S92, 예), 누적치 판정기(22)는 스텝 S93의 처리로 진행한다. 그렇게 하면, 제1, 제2 부호화 데이터 중, 제1 부호화 데이터의 "0323"의 각 자릿수의 합은 "8", 제2 부호화 데이터의 "2101"의 각 자릿수의 합은 "4"로 되고, 각 자릿수의 합이 큰 쪽, 즉 제1 부호화 데이터 "0323"을 누적치 판정기(22)는 선택한다(스텝 S93). 그리고 누적치는 "0323"으로 된다(스텝 S94).
다음으로, 인코더(21)에 입력 데이터 "00", "01", "10", "00"이 입력된다. 이 경우의 반전치는 "11", "10", "01", "11"이다. 그리고, 제1, 제2 부호화 데이터는 각각, "1021", "3203"로 된다. 그렇게 하면, 최초의 데이터가 아니고(스텝 S92, 아니오), 비반전치의 모두가 동일하지도 않으므로(스텝 S96, NO, 스텝 S99, 아니오), 누적치 판정기(22)는, 누적치의 각 자릿수와, 제1, 제2 부호화 데이터의 각 비트를 가산한다(스텝 S101). 그렇게 하면, 이 시점에서의 누적치는 "0323"이 므로, 누적치와 제1 부호화 데이터와의 가산 결과는 "1344"로 된다. 또한 누적치와 제2 부호화 데이터와의 가산 결과는 "3526"으로 된다. 그렇게 하면, 누적치와 제1 부호화 데이터와의 가산 결과의 각 자릿수의 최대치와 최소치의 차 "3"은, 누적치와 제2 부호화 데이터와의 가산 결과의 각 자릿수의 최대치와 최소치의 차 "4"보다도 작다(스텝 S103, 아니오). 따라서, 누적치 판정기(22)는 제1 부호화 데이터 "1344"를 선택하고, 인코드 ID를 "0"으로 한다. 그리고 누적치 판정기(22)는, 제1 부호화 데이터에 대한 가산 결과 "1344"를, 새로운 누적치로 하여 유지한다(스텝 S98). 인코드 ID가 "0"으로 된 것에 의해, 인코더(21)의 셀렉터(31)는 비반전치를 선택하고, 비반전치 "00", "01", "10", "00"을 기입 데이터로서 출력한다.
이하, 입력 번호 "3", "4"에 대해서는 입력 번호 "2"인 경우와 마찬가지의 처리가 행해진다.
다음으로, 입력 번호 "5"에 대하여 설명한다. 5번째의 입력 데이터는 "11", "11", "11", "11"이다. 이 경우의 반전치는 "00", "00", "00", "00"이다. 그리고, 제1, 제2 부호화 데이터는 각각 "3333", "1111"이다. 그렇게 하면, 최초의 데이터가 아니고(스텝 S92, 아니오), 비반전치가 모두 동일하며, 또한 그 상위 비트가 "1"이다(스텝 S96, NO, 스텝 S99, 예). 따라서, 누적치 판정기(22)는 제1 부호화 데이터 "3333"을 선택한다(스텝 S100). 그렇게 하면, 이 시점에서의 누적치는 "7665"이므로, 누적치 "7665"와 제1 부호화 데이터 "3333"과의 가산 결과 "10", "9", "9", "8"이 새로운 누적치로 된다(스텝 S98).
다음으로 입력 번호 "6"에 대하여 설명한다. 6번째의 입력 데이터는 "00", "00", 00", "00"이다. 이 경우의 반전치는 "11", "11", "11", "11"이다. 그리고, 제1, 제2 부호화 데이터는 각각 "1111", "3333"이다. 그렇게 하면, 최초의 데이터가 아니고(스텝 S92, 아니오), 비반전치가 동일하며, 또한 그 상위 비트가 "0"이므로(스텝 S96, 예), 누적치 판정기(22)는 제2 부호화 데이터 "3333"을 선택하고, 인코드 ID를 "1"로 한다. 그리고 누적치 판정기(22)는, 제2 부호화 데이터에 대한 가산 결과 "13", "12", "12", "11"을, 새로운 누적치로 하여 유지한다(스텝 S97). 인코드 ID가 "1"로 된 것에 의해, 인코더(21)의 셀렉터(31)는 반전치를 선택하고, 반전치 "11", "11", "11", "11"을 기입 데이터로서 출력한다.
상기와 같이, 본 발명의 제5 실시 형태에 따른 메모리 시스템에서는, 다치 데이터를 제1, 제2 부호화기(37, 38)에 의해, 그 다치 데이터에 대응한 차지량에 따라서 부호화하고 있다. 보다 구체적으로는, 해당 다치 데이터를 기입했을 때에 부유 게이트에 주입되는 차지량이 적은 순번으로, 부호화의 값을 크게 하고 있다(도 17 참조). 그리고, 이 부호화 데이터에 의해 누적치를 계산하고 있다. 따라서, 다치 데이터를 유지 가능한 메모리 셀 트랜지스터 MT를 구비한 NAND형 플래시 메모리(10)의 경우라도, 상기 제1 실시 형태에서 설명한 (1) 및 (2)의 효과가 얻어진다. 또한, 상기 제2, 제3 실시 형태에 따른 구성을 이용하면, 마찬가지로 하여 (3), (4)의 효과가 얻어진다.
또한, 본 실시 형태는 상기 제4 실시 형태와 조합하는 것도 가능하다. 도 21은, 이 경우의 인코더(21)의 블록도이다. 도시하는 바와 같이, 인코더(21)는, 상기 제4 실시 형태에서 설명한 도 12의 구성에서, 제1 부호화기(37), 제2 부호화 기(38), 및 메모리(39)를 더 구비하고 있다. 그리고 제1, 제2 부호화기(37, 38)는, XOR 게이트(34, 35)로부터 각각 출력되는 제1, 제2 스크램블 데이터를, 부호화 테이블(70)에 따라서 부호화하고, 그 결과를 제1, 제2 부호화 데이터로서 누적치 판정기(22)에 출력한다. 이 경우에는, 메모리(39) 내의 부호화 테이블(70)은, 제1, 제2 스크램블 데이터와 누적용 부호와의 관계를 유지한다. 본 구성에 따르면, 제4 실시 형태에서 설명한 (5)의 효과가 얻어진다.
[제6 실시 형태]
다음으로, 본 발명의 제6 실시 형태에 따른 반도체 장치에 대하여 설명한다. 본 실시 형태는, 상기 제5 실시 형태에서의 다른 부호화의 방법에 관한 것이다. 이하에서는, 제5 실시 형태와 서로 다른 점에 대해서만 설명한다.
도 22는, 본 실시 형태에 따른 인코더(21)의 메모리(39)가 구비하는 부호화 테이블(70)의 개념도이다. 도시하는 바와 같이, 비반전치 또는 반전치가 "01", "00"인 경우의 누적용 부호는 "0"이고, 비반전치 또는 반전치가 "10", "11"인 경우의 누적용 부호는 "1"이다. 즉, 비반전치 및 반전치의 상위 비트가 제1, 제2 부호화 데이터로 된다.
다음으로, 본 실시 형태에 따른 인코더(21)의 동작에 대하여, 도 23을 이용하여 설명한다. 도 23은 본 실시 형태에 따른 인코더(21)의 동작의 흐름을 설명하는 플로우차트이다.
도시하는 바와 같이 인코더(21)는, 우선 외부로부터 레귤러 셀 어레이(15)의 1 페이지분의 입력 데이터를 접수한다(스텝 S10). 그리고 인코더(21)의 제1 부호 화기(37)가, 부호화 테이블(70)에 따라서, 비반전치의 상위 비트를 제1 부호화 데이터로서 누적치 판정기(22)에 통지한다(스텝 S80). 동시에 인코더(21)의 제2 부호화기(38)가, 부호 테이블(70)에 따라서, 반전기(20)에서 얻어진 반전치의 상위 비트를 제2 부호화 데이터로서 누적치 판정기(22)에 통지한다(스텝 S81). 그 후에는 스텝 S13 이하의 처리를 행한다. 누적치 판정기(22)의 동작은, 상기 제5 실시 형태와 마찬가지이다.
상기와 같이, 본 발명의 제6 실시 형태에 따른 메모리 시스템에서는, 제5 실시 형태와 마찬가지로, 상기한 (1) 내지 (4)의 효과가 얻어진다. 또한, 하기 (6)의 효과가 얻어진다.
(6) 메모리 컨트롤러(20)의 사이즈를 삭감할 수 있다.
본 실시 형태에 따른 구성에서는, 제1, 제2 부호화기(37, 38)는 비반전치 및 반전치의 상위 비트를 제1, 제2 부호화 데이터로서 출력한다. 따라서, 입력 데이터가 2 비트 데이터이면, 제1, 제2 부호화 데이터가 취할 수 있는 값은 "0" 또는 "1"이다. 따라서, 상기 제5 실시 형태의 경우에 비하여 누적치의 값을 작게 할 수 있다. 구체적으로는, 상기 제5 실시 형태의 경우, 워드선의 개수가 3개인 경우에, 누적치의 각 자릿수가 취할 수 있는 최대치는 ("3"×32개)="96"이다. 이에 대하여 본 실시 형태의 경우에는, 누적치의 각 자릿수가 취할 수 있는 최대치는 ("1"×32개)="32"로 된다. 그 때문에, 누적치를 유지하는 레지스터 사이즈를 작게 할 수 있어, 메모리 컨트롤러(20)의 사이즈를 삭감할 수 있다.
또한, 상기에서는 인코더(21)가 메모리(39)에 부호화 테이블(70)을 유지하는 경우에 대하여 설명했다. 그러나, 제1, 제2 부호화기(37, 38)가 비반전치 및 반전치의 상위 비트를 취출할 수 있는 구성으로 하면, 특별히 부호화 테이블(70)은 불필요하다. 또한, 상기 제5 실시 형태에서 도 21과 마찬가지로, 본 실시 형태에서도 비반전치 및 반전치 대신에 제1, 제2 스크램블 데이터를 제1, 제2 부호화기(37, 38)에 입력해도 된다.
[제7 실시 형태]
다음으로, 본 발명의 제7 실시 형태에 따른 반도체 장치에 대하여 설명한다. 본 실시 형태는, 누적치에 의한 비트선 간의 차지량의 평균화를 행하지 않고, 페이지 데이터의 워드선 방향의 랜더마이즈를 행하는 구성에 관한 것이다.
도 24는, 본 실시 형태에 따른 메모리 시스템(1)의 블록도이다. 도시하는 바와 같이, 본 실시 형태에 따른 메모리 시스템(1)은, 제1 실시 형태에서 설명한 도 1의 구성에서, 누적치 판정기(22)를 폐한 구성을 갖는다. NAND형 플래시 메모리(10)의 구성은 제1 실시 형태에서 설명한 바와 같다.
본 실시 형태에 따른 인코더(21)는, 제4 실시 형태에서 설명한 도 12의 구성에서, 제2 의사 난수 발생기(33), XOR 게이트(35), 및 셀렉터(36)를 폐한 구성을 갖고 있다. 제1 의사 난수 발생기(32)는, 기입 데이터의 어드레스를 스크램블 시드에 이용하여 의사 난수를 발생한다. 이 때, 기입 데이터의 어드레스의 상위 어드레스이어도 되고 하위 어드레스이어도 되고, 기입 데이터의 어드레스에 관련한 데이터이면 한정되지 않는다. XOR 게이트(34)는, 제1 의사 난수 발생기(32)에서 발생된 의사 난수와 입력 데이터의 배타적 논리합 연산을 행한다. 그리고, XOR 게 이트(34)에서 얻어진 연산 결과가, 스크램블 데이터로서 NAND형 플래시 메모리(10)에 기입된다.
ECC 인코더(23)는, XOR 게이트(34)로부터 출력되는 스크램블 데이터를 바탕으로 하여 ECC 데이터를 생성한다.
읽어내기용 디코더(24)는, 제4 실시 형태에서 설명한 도 13의 구성에서, 셀렉터(60)를 폐한 구성을 갖고 있다. 의사 난수 발생기(61)는, 인코더에서 사용한 기입 데이터의 어드레스를 스크램블 시드에 이용하여 의사 난수를 발생한다. XOR 게이트(62)는, 의사 난수 발생기(61)에서 발생된 의사 난수와 읽어내기 데이터의 배타적 논리합 연산을 행한다. 그리고 XOR 게이트(62)에서의 연산 결과가 해독 데이터로 된다.
상기와 같이, 본 발명의 제7 실시 형태에 따른 메모리 시스템(1)에서는, 하기 (7)의 효과가 얻어진다.
(7) 간편한 구성에 의해, 상기 (1) 및 (5)의 효과가 얻어진다.
본 실시 형태에 따른 구성에서는, 입력 데이터는 의사 난수 발생기(32)에서 발생된 의사 난수에 의해 스크램블되어 NAND형 플래시 메모리(10)에 기입된다. 즉, 기입 데이터는 워드선 방향에서 랜더마이즈된다. 따라서, 워드선 방향을 따라서 동일 데이터가 연속하는 것을 방지하고, 상기 제4 실시 형태에서 설명한 (5)의 효과가 얻어진다.
또한, 입력 데이터가 의사 난수에 의해 스크램블됨으로써, 비트선 간에서의 차지량도 평균화된다. 따라서, 상기 제1 실시 형태에서 설명한 (1)의 효과가 얻어 진다. 물론, 차지량의 평균화에 대해서는, 비트선의 차지량의 누적치에 기초하여 기입 데이터를 선택하는 제1 실시 형태의 방법 쪽이 우수하다. 이에 대하여 본 실시 형태에서는, 누적치 판정기(22)나 인코더(21)에서 셀렉터(31)가 불필요하다. 따라서, 회로 구성의 간략화가 강하게 요구되고 있는 경우에는, 본 실시 형태에 따른 구성을 채용하는 것이 바람직하다. 또한, 본 실시 형태의 경우에는 인코드 ID를 사용하지 않으므로, ECC 셀 어레이(16)에서 비트선 BL4313에 접속된 메모리 셀 트랜지스터 MT도, ECC 데이터 유지용으로서 이용하는 것이 가능하다.
상기와 같이, 본 발명의 제1 내지 제6 실시 형태에 따른 반도체 장치에서는, 메모리 컨트롤러(20)의 누적치 판정기(22)가, 각 자릿수가 비트선마다의 차지량의 누적 결과인 누적치를 유지한다. 누적치의 각 자릿수의 값이 클수록, 대응하는 비트선에서의 차지량은 작고, 각 자릿수의 값이 작을수록 차지량은 크다. 그리고, 누적치의 자릿수 간의 차가 작아지도록, 즉 평균화되도록, 누적치 판정기(22)는 기입 데이터를 선택한다. 그 결과, 비트선 간에서의 차지량이 평균화되어, PD나 RD의 문제를 해소하여, 반도체 장치의 동작 신뢰성을 향상시킬 수 있다. 또한 제7 실시 형태에서도, 기입 데이터를 워드선 방향에서 랜더마이즈함으로써, 마찬가지의 효과가 얻어진다.
또한, 상기 실시 형태에서는 인코더(21)가 비반전치 및 반전치를 출력하는 경우와, 제1, 제2 스크램블 데이터를 출력하는 경우의 각각에 대하여 설명했지만, 이들을 조합하는 것도 가능하다. 도 25는 그 경우의 인코더(21)의 블록도이다.
도시하는 바와 같이, 인코더(21)는 데이터 변환 회로(100, 101) 및 셀렉 터(31)를 구비하고 있다. 데이터 변환 회로(100)는, 제1 실시 형태 등에서 설명한 반전기(30)를 구비하고, 입력 데이터의 반전치와 비반전치를 출력한다. 데이터 변환 회로(101)는, 제4 실시 형태 등에서 설명한 리니어 피드백 레지스터를 구비하고, 입력 데이터를 기초로 하여 제1, 제2 스크램블 데이터를 출력한다. 셀렉터(31)는, 인코드 ID에 따라서, 비반전치, 반전치, 및 제1, 제2 스크램블 데이터 중 어느 하나를 선택한다.
이 경우의 누적치 판정기(22)는, 누적치의 각 비트와, 반전치의 각 비트, 비반전치의 각 비트, 및 제1, 제2 스크램블 데이터의 각 비트와의 가산을 행한다. 그리고, 반전치, 비반전치, 및 제1, 제2 스크램블 데이터 중, 가산 결과의 각 자릿수의 최대치와 최소치의 차가 보다 작아지는 어느 하나를 선택한다. 이와 같이, 4개의 데이터를 기입 후보로 하여, 그 중 어느 하나의 최적의 데이터를 선택해도 된다.
따라서, 상기 제1 내지 제6 실시 형태에서의 인코더(21)는, 도 26의 구성으로 표현할 수도 있다. 도 26은 인코더(21)의 블록도이다. 도시하는 바와 같이 인코더(21)는, 예를 들면 k개(k는 1 이상의 자연수)의 기입 데이터 후보 생성 회로(102-1∼102-k)와 셀렉터(31)를 구비하고 있다. 기입 데이터 후보 생성 회로(102-1∼102-k)는, 예를 들면 상기 제1 실시 형태에서 설명한 반전기(30)나, 제4 실시 형태에서 설명한 리니어 피드백 레지스터이다. 그리고, 기입 데이터 후보 생성 회로(102-1∼102-k)에 의해, 제1 내지 제2 k 기입 데이터 후보가 생성된다. 이 데이터 후보가, 예를 들면 비반전치, 반전치, 및 제1, 제2 스크램블 데이터에 상당 한다. 그리고 셀렉터(31)가, 제1 내지 제2 k 기입 데이터 후보 중 어느 하나를, 인코드 ID에 따라서 기입 데이터로서 선택한다.
이 경우, 누적치 판정기(22)는, 누적치의 각 비트와, 제1 내지 제2 k 기입 데이터 후보의 각 비트의 가산을 행한다. 그리고, 제1 내지 제2 k 기입 데이터 중, 가산 결과의 각 자릿수의 최대치와 최소치의 차가 보다 작아지는 어느 하나를 선택한다.
또한, 상기 실시 형태는 다양한 NAND형 플래시 메모리 디바이스에 적용 가능하다. 이하, 상기 제1 내지 제7 실시 형태를 메모리 카드에 적용한 경우에 대해서 설명한다. 도 27은 메모리 시스템(1)의 블록도이다.
도시하는 바와 같이 메모리 시스템(1)은, 메모리 카드(110), 메모리 컨트롤러(20), 및 호스트 기기(120)를 구비하고 있다. 호스트 기기(120)는, 버스 인터페이스(121)를 통해서 접속되는 메모리 컨트롤러(20)에 대하여 액세스를 행하기 위한 하드웨어 및 소프트웨어를 구비하고 있다. 메모리 컨트롤러(20)는, 상기 제1 내지 제7 실시 형태에서 설명한 바와 같이, 인코더(21), 누적치 판정기(22), ECC 인코더(23), 및 읽어내기용 디코더(24)를 구비하고, 라인 버퍼(25)를 더 구비하고 있다.
메모리 카드(110)는, 버스 인터페이스(122)를 통해서 메모리 컨트롤러(20)에 접속된다. 메모리 카드(110)는, 상기 제1 실시 형태에서 설명한 NAND형 플래시 메모리(10)와, 복수의 신호 핀(111)을 구비하고 있다. 신호 핀(111)은, 메모리 컨트롤러(20)와 전기적으로 접속 가능하게 되어 있다. 신호 핀(111)에 의해, 메모리 컨트롤러(20)로부터 전원이나 각종 신호가 공급된다.
상기 구성에서, 버스 인터페이스(121, 122)는 예를 들면 8 비트의 데이터선을 갖는다. 그리고, 1 페이지(4096 바이트)의 데이터를 기입하는 경우에는, 데이터는 8 비트씩 4096회로 나누어서 전송된다. 메모리 컨트롤러(20)의 라인 버퍼(25)는, 이 전송 데이터를 버퍼링하기 위해서 이용된다. 그리고, 라인 버퍼에서 버퍼링된 1 페이지분의 데이터가, 인코더(21)에 입력된다. 이와 같이, 상기 제1 내지 제7 실시 형태에서 설명한 처리는, 메모리 카드(110)의 외부에서 행해져도 된다.
도 28은, 다른 메모리 카드의 예를 도시하는 메모리 시스템(1)의 블록도이다. 도시하는 바와 같이 메모리 시스템(1)은, 메모리 카드(130) 및 호스트 기기(120)를 구비하고 있다. 호스트 기기(120)는, 버스 인터페이스(123)를 통해서 메모리 카드(130)에 접속된다. 메모리 카드(130)는, 상기 제1 내지 제7 실시 형태에서 설명한 메모리 컨트롤러(20), NAND형 플래시 메모리(10), 및 복수의 신호 핀(131)을 구비하고 있다. 신호 핀(131)에는, 호스트 기기(120)로부터 전원이나 각종 신호가 공급된다.
본 예의 경우, 상기 제1 내지 제7 실시 형태에서 설명한 처리나, ECC 데이터의 생성은, 메모리 카드(130) 내부에서 행해진다. 그리고, 메모리 컨트롤러(20)와 NAND형 플래시 메모리(10)를 접속하는 내부 버스에 의해, 기입 데이터 및 ECC 데이터가 NAND형 플래시 메모리(10) 내의 페이지 버퍼(12)에 전송된다. 이 전송도 도 27의 경우와 마찬가지로 8 비트씩 행해지고, 4096 바이트의 기입을 행하는 경우에 는, 기입 데이터는 4096회로 나누어서 전송된다.
또한, 도 27 및 도 28에서는 메모리 카드의 경우를 예로 설명했지만, 메모리 카드에 한하지 않고, NAND형 플래시 메모리 전반에 적용할 수 있다. 또한, NAND형 플래시 메모리에 한하지 않고, 마찬가지의 문제가 생기는 다른 반도체 메모리 전반에 적용 가능하다.
또한, 상기 실시 형태에서는 누적치를 "1" 데이터의 누적 결과로서 설명했지만, 반대로 "0" 데이터의 누적 결과이어도 된다. 즉, 누적치는 그 절대치 그 자체에는 의미가 없고, 누적치의 각 자릿수 사이에서 차지량의 차를 알면 된다. 또한, 상기 제5 실시 형태에서는, 각 메모리 셀이 2 비트의 데이터(4치)를 유지하는 경우에 대해서 설명했다. 그러나, 각 메모리 셀은 3 비트(8치) 이상의 데이터를 유지하는 경우라도 된다. 이 경우에도, 도 19와 동일한 방법으로 대응 가능하다. 단, 도 19에서의 스텝 S96, S99의 처리는, 어디까지나 페이지 데이터가 동일한 경우에, 메모리 셀의 차지량을 저감하기 위한 처리이다. 따라서, 데이터가 "0"인지 "1"인지는 특별히 문제는 아니며, 입력 데이터의 비반전치와 반전치 중, 보다 차지량이 적은 쪽을 선택 가능할 수 있으면 된다. 이와 같이, 보다 차지량이 적은 데이터를 선택한다고 하는 사고 방식은 스텝 S93에서도 마찬가지이고, 제1 내지 제4 실시 형태에서의 스텝 S23, S26, S29도 마찬가지이다.
또한, 본원 발명은 상기 실시 형태에 한정되는 것은 아니고, 실시 단계에서는 그 요지를 일탈하지 않는 범위에서 다양하게 변형하는 것이 가능하다. 또한, 상기 실시 형태에는 다양한 단계의 발명이 포함되어 있으며, 개시되는 복수의 구성 요건에서의 적절한 조합에 의해 다양한 발명이 추출될 수 있다. 예를 들면, 실시 형태에 개시되는 전체 구성 요건으로부터 몇가지의 구성 요건이 삭제되더라도, 발명이 해결하고자 하는 과제의 란에서 설명한 과제를 해결할 수 있어, 발명의 효과의 란에 설명되어 있는 효과가 얻어지는 경우에는, 이 구성 요건이 삭제된 구성이 발명으로서 추출될 수 있다.
도 1은 본 발명의 제1 실시 형태에 따른 메모리 시스템의 블록도.
도 2는 본 발명의 제1 실시 형태에 따른 NAND형 플래시 메모리의 회로도.
도 3은 본 발명의 제1 실시 형태에 따른 인코더의 블록도.
도 4는 본 발명의 제1 실시 형태에 따른 인코더에서의 처리를 도시하는 플로우차트.
도 5는 본 발명의 제1 실시 형태에 따른 누적치 판정기에서의 처리를 도시하는 플로우차트.
도 6은 본 발명의 제1 실시 형태에 따른 누적치 판정기에서의 처리를 도시하는 개념도.
도 7은 본 발명의 제1 실시 형태의 변형예에 따른 누적치 판정기의 처리를 도시하는 플로우차트.
도 8은 본 발명의 제2 실시 형태에 따른 누적치 판정기에서의 처리를 도시하는 플로우차트.
도 9는 본 발명의 제2 실시 형태에 따른 누적치 판정기에서의 처리를 도시하는 개념도.
도 10은 본 발명의 제3 실시 형태에 따른 누적치 판정기에서의 처리를 도시하는 플로우차트.
도 11은 본 발명의 제3 실시 형태에 따른 누적치 판정기에서, 누적치 유지부의 블록도.
도 12는 본 발명의 제4 실시 형태에 따른 인코더의 블록도.
도 13은 본 발명의 제4 실시 형태에 따른 읽어내기용 디코더의 블록도.
도 14는 본 발명의 제5 실시 형태에 따른 NAND형 플래시 메모리의 임계치 분포를 나타내는 그래프.
도 15는 본 발명의 제5 실시 형태에 따른 NAND형 플래시 메모리의 임계치 분포를 나타내는 그래프로서, 데이터의 기입 방법을 도시하는 도면.
도 16은 본 발명의 제5 실시 형태에 따른 인코더의 블록도.
도 17은 본 발명의 제5 실시 형태에 따른 인코더가 구비하는 부호화 테이블의 개념도.
도 18은 본 발명의 제5 실시 형태에 따른 인코더에서의 처리를 도시하는 플로우차트.
도 19는 본 발명의 제5 실시 형태에 따른 누적치 판정기에서의 처리를 도시하는 플로우차트.
도 20은 본 발명의 제5 실시 형태에 따른 누적치 판정기에서의 처리를 도시하는 개념도.
도 21은 본 발명의 제5 실시 형태의 변형예에 따른 인코더의 블록도.
도 22는 본 발명의 제6 실시 형태에 따른 인코더가 구비하는 부호화 테이블의 개념도.
도 23은 본 발명의 제6 실시 형태에 따른 인코더에서의 처리를 도시하는 플로우차트.
도 24는 본 발명의 제7 실시 형태에 따른 메모리 시스템의 블록도.
도 25는 본 발명의 제1 내지 제6 실시 형태의 제1 변형예에 따른 인코더의 블록도.
도 26은 본 발명의 제1 내지 제6 실시 형태의 제2 변형예에 따른 인코더의 블록도.
도 27은 본 발명의 제1 내지 제7 실시 형태의 제1 변형예에 따른 메모리 시스템의 블록도.
도 28은 본 발명의 제1 내지 제7 실시 형태의 제2 변형예에 따른 메모리 시스템의 블록도.
<도면의 주요부분에 대한 부호의 설명>
1: 메모리 시스템 10: NAND형 플래시 메모리
11: 메모리 셀 어레이 12: 페이지 버퍼
13: 센스 앰프 14: 메모리 블록
15: 레귤러 셀 어레이 16: ECC 셀 어레이
20: 메모리 컨트롤러 21: 인코더
22: 누적치 판정기 23: ECC 인코더
24: 읽어내기용 디코더 30: 반전기
31, 36, 60: 셀렉터 32, 33, 61: 의사 난수 발생기
34, 35, 62: XOR 게이트 37, 38: 부호화기
39: 메모리 70: 부호화 테이블

Claims (10)

  1. 동일한 워드선에 접속된 복수의 불휘발성의 메모리 셀에 대하여 일괄하여 기입 동작이 행해지는 반도체 기억 장치를 제어하는 메모리 컨트롤러로서,
    상기 메모리 셀에 대하여 일괄하여 기입할 복수 비트의 제1 데이터를 바탕으로 하여, 복수의 제2 데이터를 생성하는 데이터 생성 수단과,
    각 자릿수가 상기 메모리 셀에 대한 기입 완료 데이터의 비트마다의 누적 결과인 누적치를 유지하고, 또한 복수의 상기 제2 데이터 중, 상기 누적치의 각 자릿수와 상기 제2 데이터 각각의 각 비트와의 가산 결과가, 상기 가산 결과의 각 자릿수 사이에서 보다 평균화되는 어느 하나를 선택하는 선택 수단
    을 구비하고,
    상기 선택 수단에서 선택된 상기 제2 데이터와, 어떤 제2 데이터가 선택되었는지를 나타내는 정보가, 상기 메모리 셀에 대하여 기입되고,
    상기 선택 수단은, 선택한 상기 제2 데이터에 관한 상기 가산 결과를, 새로운 누적치로 하여 유지하는
    것을 특징으로 하는 메모리 컨트롤러.
  2. 동일한 워드선에 접속된 복수의 불휘발성의 메모리 셀에 대하여 일괄하여 기입 동작이 행해지는 반도체 기억 장치를 제어하는 메모리 컨트롤러로서,
    상기 메모리 셀에 대하여 일괄하여 기입할 복수 비트의 제1 데이터를 바탕으 로 복수의 제2 데이터를 생성하고, 또한 상기 제2 데이터 각각에 의해 상기 메모리 셀에 차지되는 전하량에 따라서 상기 제2 데이터를 부호화한 제3 데이터를 생성하는 데이터 생성 수단과,
    각 자릿수가 상기 메모리 셀에 대한 기입 완료 데이터에 대응하는 상기 제3 데이터의 비트마다의 누적 결과인 누적치를 유지하고, 또한 복수의 상기 제2 데이터 중, 상기 누적치의 각 자릿수와, 상기 제2 데이터 각각에 대한 상기 제3 데이터의 각 비트와의 가산 결과가, 상기 가산 결과의 각 자릿수 사이에서 보다 평균화되는 어느 하나를 선택하는 선택 수단
    을 구비하고,
    상기 선택 수단에서 선택된 상기 제2 데이터와, 어떤 제2 데이터가 선택되었는지를 나타내는 정보가, 상기 메모리 셀에 대하여 기입되고,
    상기 선택 수단은, 선택한 상기 제2 데이터에 관한 상기 가산 결과를, 새로운 누적치로 하여 유지하는
    것을 특징으로 하는 메모리 컨트롤러.
  3. 동일한 워드선에 접속된 복수의 불휘발성의 메모리 셀에 대하여 일괄하여 기입 동작이 행해지는 반도체 기억 장치를 제어하는 메모리 컨트롤러로서,
    의사 난수를 발생하는 의사 난수 발생 수단과,
    상기 메모리 셀에 대하여 일괄하여 기입할 복수 비트 데이터의 각 비트와, 상기 의사 난수와의 배타적 논리합을 산출하는 논리 게이트
    를 구비하고,
    상기 논리 게이트에서의 산출 결과가 상기 메모리 셀에 기입되는
    것을 특징으로 하는 메모리 컨트롤러.
  4. 제1항 또는 제2항에 있어서,
    상기 데이터 생성 수단은, 상기 제1 데이터의 각 비트를 반전시키는 데이터 반전 수단을 구비하고, 비반전의 상기 제1 데이터와, 상기 데이터 반전 수단에 의해 각 비트를 반전시킨 상기 제1 데이터를, 각각 상기 제2 데이터로서 출력하는 것을 특징으로 하는 메모리 컨트롤러.
  5. 제1항 또는 제2항에 있어서,
    상기 데이터 생성 수단은, 복수의 의사 난수를 발생시키는 의사 난수 발생 수단과,
    복수의 상기 의사 난수의 각각과 상기 제1 데이터의 각 비트와의 배타적 논리합을 산출하고, 산출 결과를 각각 상기 제2 데이터로서 출력하는 논리 게이트를 구비하는 것을 특징으로 하는 메모리 컨트롤러.
  6. 제1항 또는 제2항에 있어서,
    상기 선택 수단은, 상기 가산 결과에서의 각 자릿수의 최대치와 최소치의 차가 최소로 되는 상기 제2 데이터를 선택하는 것을 특징으로 하는 메모리 컨트롤러.
  7. 제1항 또는 제2항에 있어서,
    상기 선택 수단은, 상기 가산 결과에서의 각 자릿수의 값의 표준 편차가 최소로 되는 상기 제2 데이터를 선택하는 것을 특징으로 하는 메모리 컨트롤러.
  8. 제1항 또는 제2항에 있어서,
    상기 선택 수단은, 선택한 상기 제2 데이터에 대한 상기 가산 결과의 모든 자릿수가 "1" 이상인 경우에는, 상기 가산 결과의 각 자릿수로부터 "1"을 감하여 얻어지는 결과를, 새로운 누적치로 하는 것을 특징으로 하는 메모리 컨트롤러.
  9. 제1항 또는 제2항에 있어서,
    상기 선택 수단은, 상기 가산 결과 중 어느 하나의 자릿수가 오버플로우를 일으키는 경우, 그 자릿수의 값을, 그 자릿수로 계수 가능한 최대치의 "2"의 몫으로 치환하고, 그 밖의 각 자릿수를 "2"의 몫으로 치환하는 것을 특징으로 하는 메모리 컨트롤러.
  10. 제1항 또는 제2항의 메모리 컨트롤러와,
    상기 메모리 컨트롤러의 상기 선택 수단에 의해 선택된 상기 제2 데이터가 기입되는 상기 메모리 셀이 복수 배치된 제1 메모리 영역과, 어떤 제2 데이터가 선택되었는지를 나타내는 정보가 기입되는 상기 메모리 셀이 배치된 제2 메모리 영역 을 구비한 상기 반도체 기억 장치를 구비하는 것을 특징으로 하는 반도체 장치.
KR1020080017873A 2007-02-28 2008-02-27 메모리 컨트롤러 및 반도체 장치 KR20080080041A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2007-00050390 2007-02-28
JP2007050390A JP2008217857A (ja) 2007-02-28 2007-02-28 メモリコントローラ及び半導体装置

Publications (1)

Publication Number Publication Date
KR20080080041A true KR20080080041A (ko) 2008-09-02

Family

ID=39715703

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080017873A KR20080080041A (ko) 2007-02-28 2008-02-27 메모리 컨트롤러 및 반도체 장치

Country Status (4)

Country Link
US (2) US7796429B2 (ko)
JP (1) JP2008217857A (ko)
KR (1) KR20080080041A (ko)
TW (1) TWI381381B (ko)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7885112B2 (en) * 2007-09-07 2011-02-08 Sandisk Corporation Nonvolatile memory and method for on-chip pseudo-randomization of data within a page and between pages
WO2008084489A1 (en) * 2007-01-08 2008-07-17 Ashok Vishwanath Sathe System of actuation of drive coupling to engage and disengage the drive to rotary tool holders
JP4930251B2 (ja) * 2007-07-31 2012-05-16 富士通セミコンダクター株式会社 誤り訂正装置及びデスクランブル回路
US8503678B2 (en) 2007-09-28 2013-08-06 Intel Corporation Suppressing power supply noise using data scrambling in double data rate memory systems
US7945050B2 (en) * 2007-09-28 2011-05-17 Intel Corporation Suppressing power supply noise using data scrambling in double data rate memory systems
JP5019611B2 (ja) * 2007-12-27 2012-09-05 株式会社東芝 メモリシステム
JP4533968B2 (ja) 2007-12-28 2010-09-01 株式会社東芝 半導体記憶装置及びその制御方法、コントローラ、情報処理装置
JP4461170B2 (ja) 2007-12-28 2010-05-12 株式会社東芝 メモリシステム
JP4489127B2 (ja) * 2008-02-29 2010-06-23 株式会社東芝 半導体記憶装置
US7986552B2 (en) * 2008-03-10 2011-07-26 Hynix Semiconductor Inc. Nonvolatile memory device and method of operation to program/read data by encoding/decoding using actual data and random data for program/read operation
US8281061B2 (en) * 2008-03-31 2012-10-02 Micron Technology, Inc. Data conditioning to improve flash memory reliability
JP4439569B2 (ja) 2008-04-24 2010-03-24 株式会社東芝 メモリシステム
US8219740B2 (en) 2008-06-25 2012-07-10 International Business Machines Corporation Flash sector seeding to reduce program times
JP2010015197A (ja) 2008-06-30 2010-01-21 Toshiba Corp ストレージ制御装置、データ復元装置およびストレージシステム
JP2010009548A (ja) * 2008-06-30 2010-01-14 Toshiba Corp 記憶装置、制御装置、記憶システム、および記憶方法
JP2010015195A (ja) * 2008-06-30 2010-01-21 Toshiba Corp 記憶制御装置及び記憶制御方法
JP5242264B2 (ja) * 2008-07-07 2013-07-24 株式会社東芝 データ制御装置、ストレージシステムおよびプログラム
JP4551958B2 (ja) * 2008-12-22 2010-09-29 株式会社東芝 半導体記憶装置および半導体記憶装置の制御方法
JP5268710B2 (ja) 2009-02-27 2013-08-21 株式会社東芝 半導体記憶装置
KR20100124087A (ko) * 2009-05-18 2010-11-26 삼성전자주식회사 메모리 컨트롤러, 그것을 포함하는 메모리 시스템 그리고 그것의 동작 방법
JP5492679B2 (ja) * 2009-06-30 2014-05-14 パナソニック株式会社 記憶装置およびメモリコントローラ
US9170933B2 (en) 2010-06-28 2015-10-27 International Business Machines Corporation Wear-level of cells/pages/sub-pages/blocks of a memory
KR20120002760A (ko) * 2010-07-01 2012-01-09 삼성전자주식회사 낸드 플래쉬 메모리의 동작 신뢰성을 향상시키는 데이터 기록 방법 및 데이터 기록 장치
KR101736337B1 (ko) * 2011-02-28 2017-05-30 삼성전자주식회사 비휘발성 메모리 장치, 상기 메모리 장치를 제어하는 컨트롤러, 및 상기 컨트롤러 동작 방법
KR101818445B1 (ko) * 2011-07-08 2018-01-16 삼성전자주식회사 메모리 컨트롤러, 이의 동작 방법, 및 상기 메모리 컨트롤러를 포함하는 전자 장치들
US8762626B2 (en) * 2011-09-12 2014-06-24 Sandisk Technologies Inc. Data modification based on matching bit patterns
JP2013069392A (ja) * 2011-09-26 2013-04-18 Toshiba Corp 不揮発性半導体記憶装置及び不揮発性半導体記憶装置のデータ書き込み方法
US9292428B2 (en) * 2012-09-05 2016-03-22 Kabushiki Kaisha Toshiba Memory system
CN104769558B (zh) * 2012-11-05 2017-07-21 三菱电机株式会社 存储器控制装置
KR102327076B1 (ko) * 2014-12-18 2021-11-17 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
JP6411282B2 (ja) * 2015-05-15 2018-10-24 ラピスセミコンダクタ株式会社 半導体メモリ及びデータ書込方法
US11515897B2 (en) 2015-05-29 2022-11-29 SK Hynix Inc. Data storage device
US11611359B2 (en) 2015-05-29 2023-03-21 SK Hynix Inc. Data storage device
KR102285940B1 (ko) * 2015-05-29 2021-08-05 에스케이하이닉스 주식회사 데이터 처리 회로, 데이터 처리 회로를 포함하는 데이터 저장 장치 및 그것의 동작 방법
US10396827B2 (en) 2015-09-25 2019-08-27 SK Hynix Inc. Data storage device
US11177835B2 (en) 2015-09-25 2021-11-16 SK Hynix Inc. Data storage device
TWI774183B (zh) * 2021-01-08 2022-08-11 瑞昱半導體股份有限公司 具有位址打亂機制的記憶體存取裝置及其記憶體存取方法

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2647321B2 (ja) * 1991-12-19 1997-08-27 株式会社東芝 不揮発性半導体記憶装置及びこれを用いた記憶システム
US6222762B1 (en) * 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
JPH0729395A (ja) * 1993-06-25 1995-01-31 Mitsubishi Electric Corp Eeprom装置
JP2927163B2 (ja) * 1993-11-30 1999-07-28 日本ビクター株式会社 情報信号記録方法及び情報信号記録装置
JPH07334991A (ja) * 1994-06-07 1995-12-22 Sony Corp 半導体不揮発性記憶装置
JPH07240098A (ja) * 1994-02-25 1995-09-12 Sony Corp 半導体不揮発性記憶装置
JP2723832B2 (ja) * 1994-06-07 1998-03-09 松下電器産業株式会社 光学式情報記録担体及び光学式情報記録方法、ならびにそれらを利用した光学式情報再生装置
JPH0850562A (ja) * 1994-08-05 1996-02-20 Fujitsu Ltd メモリの監視回路
US6728825B1 (en) * 1996-10-15 2004-04-27 Micron Technology, Inc. Apparatus and method for reducing programming cycles for multistate memory system
JPH11110967A (ja) * 1997-10-01 1999-04-23 Nec Corp 半導体メモリ装置
US6279133B1 (en) 1997-12-31 2001-08-21 Kawasaki Steel Corporation Method and apparatus for significantly improving the reliability of multilevel memory architecture
US6587977B1 (en) * 1999-12-06 2003-07-01 Maxtor Corporation o,k,m,/m recording code
EP1130600A1 (en) 2000-03-01 2001-09-05 Hewlett-Packard Company, A Delaware Corporation Data balancing scheme in solid state storage devices
JP2001351398A (ja) * 2000-06-12 2001-12-21 Nec Corp 記憶装置
US6941505B2 (en) * 2000-09-12 2005-09-06 Hitachi, Ltd. Data processing system and data processing method
JP4112849B2 (ja) * 2001-11-21 2008-07-02 株式会社東芝 半導体記憶装置
US6934903B1 (en) * 2001-12-17 2005-08-23 Advanced Micro Devices, Inc. Using microcode to correct ECC errors in a processor
JP3861878B2 (ja) * 2002-03-29 2006-12-27 ソニー株式会社 データ記録再生方法及びデータ記録再生装置
JP3866627B2 (ja) 2002-07-12 2007-01-10 株式会社東芝 不揮発性半導体メモリ
JP3969240B2 (ja) * 2002-08-02 2007-09-05 ソニー株式会社 半導体記憶装置
US7206891B2 (en) * 2002-09-26 2007-04-17 Lsi Logic Corporation Multi-port memory controller having independent ECC encoders
US7069494B2 (en) * 2003-04-17 2006-06-27 International Business Machines Corporation Application of special ECC matrix for solving stuck bit faults in an ECC protected mechanism
JP3940713B2 (ja) * 2003-09-01 2007-07-04 株式会社東芝 半導体装置
JP2005100527A (ja) * 2003-09-25 2005-04-14 Matsushita Electric Ind Co Ltd 半導体不揮発性記憶装置
JP4223427B2 (ja) * 2004-03-30 2009-02-12 株式会社ルネサステクノロジ 不揮発性半導体記憶装置及びそのデータ書き換え方法
JP4119881B2 (ja) * 2004-11-15 2008-07-16 株式会社メガチップス 半導体メモリ装置
EP1684308A1 (en) * 2005-01-19 2006-07-26 Saifun Semiconductors Ltd. Methods for preventing fixed pattern programming
JP4660353B2 (ja) 2005-11-01 2011-03-30 株式会社東芝 記憶媒体再生装置
JP4575288B2 (ja) 2005-12-05 2010-11-04 株式会社東芝 記憶媒体、記憶媒体再生装置、記憶媒体再生方法および記憶媒体再生プログラム
US7388781B2 (en) * 2006-03-06 2008-06-17 Sandisk Il Ltd. Multi-bit-per-cell flash memory device with non-bijective mapping
US7330373B2 (en) * 2006-03-28 2008-02-12 Sandisk Corporation Program time adjustment as function of program voltage for improved programming speed in memory system

Also Published As

Publication number Publication date
US20080205145A1 (en) 2008-08-28
US20100122147A1 (en) 2010-05-13
JP2008217857A (ja) 2008-09-18
TWI381381B (zh) 2013-01-01
TW200901199A (en) 2009-01-01
US7848143B2 (en) 2010-12-07
US7796429B2 (en) 2010-09-14

Similar Documents

Publication Publication Date Title
KR20080080041A (ko) 메모리 컨트롤러 및 반도체 장치
US8230158B2 (en) Memory devices and methods of storing data on a memory device
KR101618311B1 (ko) 플래시 메모리 장치 및 그것의 읽기 방법
US8341333B2 (en) Method of writing data into semiconductor memory and memory controller
US8136014B2 (en) Non-volatile semiconductor memory device
US8014207B2 (en) Nonvolatile memory device and method of operating the same
KR100916874B1 (ko) 판독 레벨을 정확하게 보정할 수 있는 반도체 메모리디바이스
JP5019611B2 (ja) メモリシステム
US8782505B2 (en) Methods and devices to reduce outer code failure rate variability
US8644066B2 (en) Multi-level non-volatile memory device, system and method with state-converted data
JP5562329B2 (ja) フラッシュ・メモリ・コントローラとフラッシュ・メモリ・アレイの間でインタフェースをとるための方法および装置
US7826277B2 (en) Non-volatile memory device and method of operating the same
US20140173172A1 (en) System and method to update read voltages in a non-volatile memory in response to tracking data
CN102160120A (zh) 使用调制编码减轻单元间干扰的方法和设备
KR20070012810A (ko) 개선된 부분 페이지 프로그램 능력을 가진 비휘발성 메모리및 제어
KR20190051570A (ko) 메모리 시스템 및 그것의 동작 방법
US10204043B2 (en) Memory controller, method of controlling nonvolatile memory and memory system
JP4358299B2 (ja) メモリコントローラ及び半導体装置
KR101495795B1 (ko) 불휘발성 메모리 장치 및 그것의 프로그램 방법
JP5940704B1 (ja) 半導体記憶装置
US9239751B1 (en) Compressing data from multiple reads for error control management in memory systems
KR101508665B1 (ko) 비휘발성 메모리 장치, 이를 위한 메모리 제어기 및 동작 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E601 Decision to refuse application