KR20060032507A - 불휘발성 메모리 장치 및 그것의 고속 프로그램 방법 - Google Patents

불휘발성 메모리 장치 및 그것의 고속 프로그램 방법 Download PDF

Info

Publication number
KR20060032507A
KR20060032507A KR1020040081465A KR20040081465A KR20060032507A KR 20060032507 A KR20060032507 A KR 20060032507A KR 1020040081465 A KR1020040081465 A KR 1020040081465A KR 20040081465 A KR20040081465 A KR 20040081465A KR 20060032507 A KR20060032507 A KR 20060032507A
Authority
KR
South Korea
Prior art keywords
data
bits
data bits
address
value
Prior art date
Application number
KR1020040081465A
Other languages
English (en)
Other versions
KR100645047B1 (ko
Inventor
임재우
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020040081465A priority Critical patent/KR100645047B1/ko
Priority to US11/249,095 priority patent/US7580322B2/en
Priority to JP2005296786A priority patent/JP4965106B2/ja
Publication of KR20060032507A publication Critical patent/KR20060032507A/ko
Application granted granted Critical
Publication of KR100645047B1 publication Critical patent/KR100645047B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • 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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • G11C7/1096Write circuits, e.g. I/O line write drivers

Landscapes

  • Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)

Abstract

여기에 개시된 불휘발성 메모리 장치 및 프로그램 방법은, 외부로부터 입력된 복수개의 데이터 비트들을 복수 개의 그룹으로 조합한다. 그리고, 조합 결과에 따라 실제 프로그램 될 데이터 비트들을 검출하는 데이터 스캐닝과, 검출된 비트에 대한 어드레스 계산을 선별적으로 수행한다. 본 발명에서는, 모든 데이터 비트를 스캐닝하는 대신에, 데이터 비트들의 조합에 따라 데이터 스캐닝을 선별적으로 수행하기 때문에, 데이터 스캐닝에 소요되는 시간 및 프로그램 시간이 줄어들게 된다.

Description

불휘발성 메모리 장치 및 그것의 고속 프로그램 방법{NON-VOLATILE MEMORY DEVICE AND HIGH SPEED PROGRAM METHOD THEREOF}
도 1은 본 발명의 바람직한 실시예에 따른 불휘발성 반도체 메모리 장치의 블록도;
도 2는 본 발명의 바람직한 실시예에 따른 불휘발성 메모리 장치의 프로그램 방법을 보여주는 흐름도;
도 3은 본 발명에 따른 불휘발성 메모리 장치의 프로그램시의 동작 타이밍을 보여주는 도면;
도 4a 내지 도 4d는 도 1에 도시된 스캔 데이터 발생부에 포함된 신호 조합 회로들의 회로도;
도 5는 도 1에 도시된 비트 카운터의 동작을 보여주는 흐름도;
도 6은 도 1에 도시된 어드레스 카운터의 동작을 보여주는 흐름도;
도 7은 도 1 및 도 6에 도시된 어드레스 카운터의 구성 예를 보여 주는 회로도;
도 8 및 도 9는 종래 기술에 따른 프로그램 예를 보여주는 도면; 그리고
도 10은 본 발명에 따른 프로그램 예를 보여주는 도면이다.
*도면의 주요 부분에 대한 부호의 설명*
10 : 메모리 셀 어레이 20 : 입출력 버퍼
30 : 데이터 스캐닝부 31 : 스캔 데이터 발생부
33 : 비트 카운터 35 : 어드레스 카운터
40 : 기입 드라이버 50 : 열 선택부
60 : 감지 증폭부 90 : 제어 로직
본 발명은 불휘발성 메모리 장치에 관한 것으로, 좀 더 구체적으로는 프로그램 시간을 단축할 수 있는 불휘발성 메모리 장치에 관한 것이다.
불휘발성 메모리 장치는 드라이브 전원이 공급되지 않아도 셀에 기록된 데이터가 소멸되지 않고 남아있다. 불휘발성 메모리들 중에서도 플래시 메모리는 전기적으로 셀의 데이터를 일괄적으로 소거하는 기능을 가지고 있기 때문에 컴퓨터 및 메모리 카드 등에 널리 사용되고 있다.
플래시 메모리는 셀과 비트 라인의 연결 상태에 따라 노어형과 낸드형으로 구분된다. 노어형 플래시 메모리는 1개의 비트 라인에 2개 이상의 셀 트랜지스터가 병렬로 연결된 형태로서, 채널 핫 일렉트론(channel hot electron) 방식을 사용하여 데이터를 저장하고, F-N 터널링(Fowler-Nordheim tunneling) 방식을 사용하여 데이터를 소거한다. 그리고, 낸드형 플래시 메모리는 1개의 비트 라인에 2개 이상의 셀 트랜지스터가 직렬로 연결된 형태로서, F-N 터널링 방식을 사용하여 데이터 를 저장 및 소거한다. 일반적으로, 노어형 플래시 메모리는 전류 소모가 크기 때문에 고집적화에는 불리하지만, 고속화에 용이하게 대처할 수 있는 장점이 있고, 낸드형 플래시 메모리는 노어형 플래시 메모리에 비해 적은 셀 전류를 사용하기 때문에, 고집적화에 유리한 장점이 있다.
노어형 플래시 메모리의 셀 어레이(cell array)는, 크게 복수 개의 뱅크(bank)로 구성되고, 각각의 뱅크는 복수 개의 섹터(sector)로 구성되며, 각각의 섹터는 복수개의 메모리 셀(memory cell)로 구성된다. 일반적으로, 노어형 플래시 메모리의 소거(erase) 동작은 섹터 단위로 수행되고, 프로그램(program)은 워드(word) 단위(또는, 바이트(byte) 단위)로 수행된다.
노어형 플래시 메모리의 셀 어레이에 데이터를 프로그램하기 위해서는, 먼저 플래시 메모리에 프로그램 명령어(program command)가 입력된 후, 프로그램 어드레스와 프로그램 데이터가 플래시 메모리에 입력된다. 입력된 프로그램 어드레스와 프로그램 데이터는 칩 내부에 임시로 저장되고, 프로그램 어드레스에 대응되는 메모리 셀이 선택된다. 이어서, 프로그램 데이터에 대응되는 프로그램 전압이 비트 라인으로 인가되어, 실질적인 프로그램이 수행된다. 그리고 나서, 내부적으로 미리 정해진 소정의 프로그램 수행 시간(program execution timing)이 경과하게 되면, 선택된 메모리 셀에 데이터가 프로그램되었는지의 여부를 판별하는 검증(verify) 동작이 수행된다. 이 같은 프로그램 및 검증 동작은, 선택된 메모리 셀에 데이터가 정상적으로 프로그램될 때까지 반복 수행된다.
일반적으로, 노어형 플래시 메모리를 프로그램하는데 사용되는 채널 핫 일렉 트론 방식에서는, 메모리 셀의 드레인(drain)에 4V 내지 6V 정도의 고전압이 인가되기 때문에 일정 수준 이상의 프로그램 전류(current)를 필요로 한다. 그리고, 드레인에 인가되는 고전압은 칩 내부에 구비된 챠지 펌프(charge pump)를 통해 생성되기 때문에, 동시에 프로그램할 수 있는 메모리의 개수는 통상 2개 내지 4개로 제한된다. 예를 들어, 동시에 프로그램할 수 있는 비트의 수가 4개일 때, 16 비트의 데이터는 4 비트씩 분할된 후, 총 4회에 걸쳐 메모리 셀에 프로그램된다.
플래시 메모리의 프로그램 특성을 살펴보면, 플래시 메모리에서 프로그램을 수행하기 위해서는 사전에 해당 어드레스 부분을 반드시 소거(erase)(즉, 데이터 값을 "1"로 만듦)하여야 하기 때문에, 프로그램 데이터가 "1"이라는 것은, 프로그램시 아무런 프로그램 동작을 수행하지 않아도 원하는 데이터를 프로그램한 것과 같다고 할 수 있다. 이와 같은 플래시 메모리의 프로그램 특성에도 불구하고, 대부분의 플래시 메모리는 프로그램될 데이터의 값이 "0"인지 "1"인지에 상관없이 각 데이터 그룹에 대해 일정한 프로그램 시간을 일률적으로 할당한다. 따라서, 프로그램 데이터 값에 상관없이 데이터를 프로그램하는데 걸리는 시간은 항상 일정하게 소요되는 문제가 있다.
따라서, 본 발명의 목적은 상술한 제반 문제점을 해결하기 위해 제안된 것으로, 프로그램 시간을 단축시킬 수 있는 불휘발성 메모리 장치 및 방법을 제공하는데 있다.
상기의 과제를 이루기 위하여 본 발명에 의한 불휘발성 메모리 장치의 프로그램 방법은, 외부로부터 입력된 데이터 비트들을 선택적으로 스캔하여 실제 프로그램 될 데이터 비트들을 검색하는 단계; 및 상기 검색된 데이터 비트들을 소정의 비트 단위로 프로그램하는 단계를 포함하는 것을 특징으로 한다.
바람직한 실시예에 있어서, 상기 검색 단계는 상기 입력된 데이터 비트들을 복수 개의 그룹으로 조합하는 단계; 및 상기 조합 결과에 따라 상기 데이터 비트들을 선택적으로 스캔하여 실제 프로그램 될 데이터 비트들을 검색하는 단계를 포함하는 것을 특징으로 한다.
바람직한 실시예에 있어서, 상기 검색 단계는 상기 검색된 데이터 비트에 대한 어드레스를 계산하는 단계를 더 포함하는 것을 특징으로 한다.
상기의 과제를 이루기 위하여 본 발명에 의한 불휘발성 메모리 장치의 프로그램 방법은, 외부로부터 입력된 데이터 비트들을 복수 개의 그룹으로 조합하는 단계; 상기 조합 결과에 따라 상기 데이터 비트들을 선택적으로 스캔하여 실제 프로그램 될 데이터 비트들을 검색하는 단계; 및 상기 검색된 데이터 비트들을 소정의 비트 단위로 프로그램하는 단계를 포함하는 것을 특징으로 한다.
바람직한 실시예에 있어서, 상기 데이터 비트들은 2N비트씩 조합되어, M개의 그룹(M, N은 자연수)을 형성하는 것을 특징으로 한다.
바람직한 실시예에 있어서, 상기 M개의 그룹들 모두가 상기 제 1 값을 가지는 경우 상기 실제 프로그램 될 데이터 비트의 개수가 카운트되고, 상기 M개의 그 룹들 중 적어도 하나의 그룹이 상기 제 2 값을 가지는 경우 상기 제 2 값을 가지는 해당 그룹에 대한 데이터 스캐닝이 생략되는 것을 특징으로 한다.
바람직한 실시예에 있어서, 상기 검색된 데이터 비트에 대한 어드레스를 계산하는 단계를 더 포함하며, 상기 어드레스는 상기 조합 결과에 따라 선택적으로 계산되는 것을 특징으로 한다.
상기의 과제를 이루기 위하여 본 발명에 의한 불휘발성 메모리 장치는, 외부로부터 입력된 데이터 비트들을 선택적으로 스캔하여 실제 프로그램 될 데이터 비트들을 검색하는 데이터 스캐닝부; 및 상기 검색된 데이터 비트들을 소정의 비트 단위로 프로그램하는 기입 드라이버를 포함하는 것을 특징으로 한다.
바람직한 실시예에 있어서, 상기 데이터 스캐닝부는 상기 입력된 데이터 비트들이 복수 개의 그룹으로 조합된 스캔 데이터를 발생하는 스캔 데이터 발생부; 및 상기 스캔 데이터의 값에 따라 상기 데이터 비트들을 선택적으로 스캔하여 실제 프로그램 될 데이터 비트들을 검색하는 비트 카운트부를 포함하는 것을 특징으로 한다.
이하 본 발명에 따른 실시예를 첨부된 도면을 참조하여 상세히 설명한다.
본 발명의 신규한 불휘발성 메모리 장치 및 그것의 프로그램 방법은, 외부로부터 입력된 복수개의 데이터 비트들을 복수 개의 그룹으로 조합한다. 그리고, 조합 결과에 따라서, 실제 프로그램 될 데이터 비트들을 검출하는 데이터 스캐닝과, 검출된 비트에 대한 어드레스 계산을 선별적으로 수행한다.
본 발명에서는 복수 개의 데이터 비트들 중 실제 프로그램 될 데이터 비트만 골라내어 소정 비트 단위로 프로그램한다. 이와 같은 프로그램 방식을 "비트 스캐닝 프로그램 방식(Bit Scanning Program Scheme)이라 칭한다. 특히, 본 발명에서는 모든 데이터 비트를 스캐닝하는 대신에, 데이터 비트들의 조합에 따라 데이터 스캐닝을 선별적으로 수행하기 때문에, 데이터 스캐닝에 걸리는 시간이 최소화되고, 데이터를 프로그램하는데 걸리는 평균 시간이 효과적으로 단축된다.
플래시 메모리와 같은 불휘발성 메모리에서 프로그램을 수행하기 위해서는 사전에 해당 어드레스 부분을 반드시 소거(데이터 값을 "1"의 상태로 만듦)하도록 되어 있다. 불휘발성 메모리에서 수행되는 프로그램 동작은 데이터 "1"을 데이터 "0"으로 변환시키는 것을 의미한다. 따라서, 프로그램 데이터가 "1"이라는 것은 프로그램시 아무런 프로그램 동작을 수행하지 않더라도 원하는 데이터를 프로그램한 것과 같다고 할 수 있다. 그러므로, 본 발명에서는 프로그램 시간이 효과적으로 단축될 수 있도록 데이터 값이 "0"인 것(즉, 실제 프로그램 될 데이터 비트)만 골라내어 프로그램을 수행한다. 특히, 본 발명에서는 프로그램에 소요되는 시간을 더욱 단축시킬 수 있도록, 데이터의 조합에 따라 상기 스캐닝 과정을 선별적으로 수행한다.
도 1은 본 발명의 바람직한 실시예에 따른 반도체 메모리 장치(100)의 구성을 보여주는 블록도이다.
일반적으로, 반도체 메모리 장치는 메모리 셀들로 구성된 어레이 영역과, 상기 어레이 영역의 행 및 열을 선택하기 위한 주변 회로들을 구비한다. 만일, 상기 어레이 영역이 복수 개의 어레이 블록들로 분리되는 경우, 그에 따라 해당되는 주 변 회로들 역시 그것에 각각 대응되도록 분리된다. 이와 같은 어레이 영역의 구성은 이 분야의 통상적인 지식을 가진 자들에게 자명하다. 이하 설명될 어레이 영역은 복수 개의 어레이 블록들 중 하나의 어레이 블록 및 이에 관련된 주변 회로들(특히, 프로그램과 관련된 주변회로들)만을 도시하였다. 특히, 도 1에 도시된 반도체 메모리 장치(100)는 노어형 플래시 메모리를 예로 든 것으로서, 본 발명에 따른 병렬 비트 스캐닝 프로그램 방식은 노어형 플래시 메모리가 아닌 타 불휘발성 메모리에도 적용 가능하다.
도 1을 참조하면, 본 발명에 따른 반도체 메모리 장치(100)는 메모리 셀 어레이(memory cell array ; 10), 입출력 버퍼(input/output buffer ; 20), 데이터 스캐닝부(data scanning unit ; 30), 기입 드라이버(write driver ; 40), 열 선택부(column selection unit ; 50), 감지 증폭부(sense amplifier ; 60), 및 제어 로직(control logic ; 90)을 포함한다.
메모리 셀 어레이(10)는 복수개의 노어형 플래시 메모리 셀들로 구성된다. 입출력 버퍼(20)는 메모리 셀 어레이(10)에 기입될 데이터와, 메모리 셀 어레이(10)로부터 감지된 데이터를 저장한다. 데이터 스캐닝부(30)는 입출력 버퍼(20)로부터 입력된 데이터를 조합한다. 데이터 스캐닝부(30)는 상기 조합 결과에 따라 데이터 스캐닝을 선별적으로 수행한다. 데이터 스캐닝부(30)는 스캐닝 과정을 통해 "0"의 값을 갖는 비트를 찾아내고, 그것의 어드레스를 계산한다. 데이터 스캐닝부(30)는 찾아낸 "0"의 비트의 개수를 카운트한다. 데이터 스캐닝부(30)는 카운트 된 "0"의 비트의 개수가 소정의 동시 프로그램 비트 수(BitMax)에 이르게 되면, 제어 로직(90)의 제어에 응답해서 검색된 해당 데이터 비트와 어드레스 정보를 기입 드라이버(40)로 전송한다. 여기서, 동시 프로그램 비트 수(BitMax)는 기입 드라이버(40)가 동시에 프로그램할 수 있는 최대 비트 수를 나타낸다. 상기 동시 프로그램 비트 수(BitMax)는 회로의 구성에 따라 다양하게 구성될 수 있으나, 본 발명에서는 4 비트로 구성되는 경우를 예를 들어 설명하고자 한다.
데이터 스캐닝부(30)는, 스캔 데이터 발생부(31), 비트 카운터(33), 및 어드레스 카운터(35)로 구성된다. 스캔 데이터 발생부(31)는 데이터 스캐닝부(30)의 선별적인 스캐닝 동작을 제어한다. 이를 위해 스캔 데이터 발생부(31)는 입출력 버퍼(20)로부터 입력된 데이터 비트를 조합하여, 복수 개 그룹의 스캔 데이터들(ScanData1, ScanData2, ScanData4, ScanData8)을 발생하는 복수 개의 신호 조합 회로들(311, 312, 314, 318)을 포함한다. 스캔 데이터 발생부(31)로부터 발생된 복수 개 그룹의 스캔 데이터들(ScanData1, ScanData2, ScanData4, ScanData8)은 각각 비트 카운터(33)와 어드레스 카운터(35)로 입력된다.
비트 카운터(33)는 스캔 데이터 발생부(31)로부터 발생된 복수 개 그룹의 스캔 데이터들(ScanData1, ScanData2, ScanData4, ScanData8)에 응답해서, 실제 프로그램 될 데이터 비트(즉, "0"의 데이터 비트)를 찾아내고, 그것의 개수를 카운트한다. 어드레스 카운터(35)는 스캔 데이터 발생부(31)로부터 발생된 복수 개 그룹의 스캔 데이터들(ScanData1, ScanData2, ScanData4, ScanData8)에 응답해서, 실제 프로그램 될 데이터 비트(즉, "0"의 데이터 비트)의 어드레스를 계산한다. 이와 같은 비트 카운터(33) 및 어드레스 카운터(35)의 카운트 동작은 제어 로직(90)의 제어에 따라 수행된다.
비트 카운터(33)에서 실제 프로그램 될 데이터 비트(즉, "0"의 데이터 비트)를 찾아내는 동작은, 실질적으로는 입출력 버퍼(20)로부터 입력된 데이터 비트를 스캐닝하는 것으로 기초로 한다. 그러나, 본 발명에서는 모든 데이터 비트들에 대해서 순차적인 스캐닝을 수행하는 대신, 스캔 데이터 발생부(31)로부터 발생된 복수 개 그룹의 스캔 데이터들(ScanData1, ScanData2, ScanData4, ScanData8)의 값에 따라 선택적으로 스캐닝을 수행한다. 그리고, 스캐닝이 필요 없다고 판단되는 경우에는 스캐닝 동작을 생략한다. 그 결과, 데이터 스캔에 소요되는 시간이 줄어들게 되고, 그로 인해 프로그램 시간이 더욱 줄어들게 된다.
기입 드라이버(40)는 데이터 스캐닝부(30)로부터 입력된 스캔 결과(즉, 소정 갯수의 "0"의 데이터 비트와 어드레스 정보)를 이용하여 셀 어레이(10)를 프로그램한다. 이 때, 실제로 프로그램되는 데이터 비트의 개수는 동시 프로그램 비트 수(BitMax)와 같다. 기입 드라이버(40) 내부에는 입출력 버퍼(20)로부터 받아들인 데이터를 저장하는 래치(미 도시됨)가 구비되어 있다. 기입 드라이버(40)는 프로그램시 모든 데이터를 프로그램하지 않고, 실제 프로그램되는 데이터 비트(즉, "0"의 값을 가지는 데이터 비트)만을 선별적으로 프로그램한다. 그리고, 소거 상태의 데이터 비트(즉, "1"의 값을 갖는 데이터 비트)는 프로그램하지 않는다. 열 선택부(50)는 기입 드라이버(40)에 의해 실제 프로그램 될 셀 어레이(10)의 비트라인(즉, 데이터 스캐닝부(30)로부터 발생된 어드레스 정보에 대응되는 비트라인)을 선택한다.
메모리 셀 어레이(10)에 데이터가 기입되고 나면, 메모리 셀 어레이(10)에 기입된 데이터는 감지 증폭부(60)를 통해 감지 및 증폭된다. 감지 증폭부(60)에 의해 감지 및 증폭된 데이터는 입출력 버퍼(20)의 해당 어드레스에 저장된 후, 외부로 출력된다. 감지 증폭부(60)를 통해 감지 및 증폭된 데이터는, 이 분야에 대한 통상의 지식을 가진 이들에게 잘 알려져 있는 바와 같이, 프로그램 검증부(미 도시됨)를 통해 프로그램이 올바로 수행되었는지(pass인지 fail인지)를 검증(verify)하는 데 사용될 수 있다. 그리고, 검증 결과 프로그램이 올바로 수행되지 않은 것으로 판명되면(즉, fail이면), 해당 데이터는 재 프로그램 된다. 본 발명에 따른 비트 스캐닝 프로그램 방법은 초기 프로그램 뿐만 아니라, 재 프로그램시에도 적용 가능하다.
앞에서 설명한 바와 같이, 본 발명에 따른 반도체 메모리 장치(100)에서는, 실제 프로그램될 데이터 비트를 찾아내는 데이터 스캐닝 과정을 모든 데이터 비트에 대해 수행하지 않고, 입력된 데이터 비트들의 조합에 따라 선별적으로 수행한다. 그 결과, 데이터 스캔에 소요되는 시간이 줄어들게 되고, 프로그램에 소요되는 시간이 더욱 줄어들게 된다.
도 2는 본 발명의 바람직한 실시예에 따른 불휘발성 메모리 장치의 프로그램 방법을 보여주는 흐름도이고, 도 3은 본 발명에 따른 불휘발성 메모리 장치의 프로그램시의 동작 타이밍을 보여주는 도면이다.
도 2 및 도 3을 참조하면, 본 발명에 따른 프로그램 방법은 입력된 데이터 비트들을 조합하여 복수 개의 스캔 데이터 그룹을 형성한다(1100 단계). 이를 위해 스캔 데이터 발생부(31)는, 입출력 버퍼(20)로부터 입력된 복수 개의 데이터 비트들을 조합한다. 그리고, 스캔 데이터 발생부(31)는 조합 결과로서 M개 그룹(M은 자연수)의 스캔 데이터들(ScanData1, ScanData2, ScanData4, ScanData8)을 발생한다. 각 그룹별 스캔 데이터들(ScanData1, ScanData2, ScanData4, ScanData8)은, 입력된 데이터 비트들이 2N비트씩 조합되어 발생된다(N은 자연수). 각 스캔 데이터 그룹들(ScanData1, ScanData2, ScanData4, ScanData8)의 발생 과정에 대해서는 아래의 도 4a 내지 도 4d에서 상세히 설명될 것이다.
1100 단계에서 데이터 비트들이 조합되어 M개 그룹의 스캔 데이터들(ScanData1, ScanData2, ScanData4, ScanData8)이 발생되고 나면, 상기 스캔 데이터들(ScanData1, ScanData2, ScanData4, ScanData8)에 따라 데이터 비트들에 대한 스캐닝이 선택적으로 수행된다(1200 단계).
아래에서는 도 3에 도시된 바와 같이 4개 그룹의 스캔 데이터들(ScanData1, ScanData2, ScanData4, ScanData8)이 발생된 경우에 대해 살펴보기로 한다. 예를 들어, 현재 스캐닝 되는 4개 그룹의 스캔 데이터들 중 적어도 하나의 데이터가 "1"의 값을 가지면, "1"의 값을 가지는 그룹에 대응되는 데이터 비트들의 스캐닝은 생략된다. 그리고, 현재 스캐닝 되는 위치에서 4개 그룹의 스캔 데이터 모두가 "0"의 값을 가지면, 해당 위치에 실제 프로그램 될 데이터 비트가 존재하는 것으로 판단하고 비트 카운트 값(BitCount)을 1만큼 증가시킨다. 비트 카운터(33)에서 수행되는 비트 카운트 동작은 아래의 도 5를 참조하여 상세히 설명될 것이다.
1200 단계에서 실제 프로그램 될 데이터 비트가 검출되면, 어드레스 카운터(35)는 M 개 그룹의 스캔 데이터들(ScanData1, ScanData2, ScanData4, ScanData8)에 응답해서, 검출된 데이터 비트의 어드레스를 계산한다(1300 단계). 어드레스 카운터(35)의 동작 및 구성은 아래의 도 6 및 도 7을 참조하여 상세히 설명될 것이다.
1200 단계 및 1300 단계에서 실제 프로그램 될 데이터 비트들과 어드레스가 계산되고 나면, 상기 데이터 비트들은 소정의 동시 프로그램 비트 수(BitMax) 단위로 프로그램 된다(1400 단계). 이를 위해 비트 카운터(33)는, 도 3에 도시된 바와 같이, 카운트 된 결과(BitCount)가 동시 프로그램 비트 수(BitMax)가 될 때까지 카운팅 동작을 수행한 후 "0"으로 리셋 된다. 비트 카운터(33)는, 상기 동시 프로그램 비트 수(BitMax) 단위의 프로그램이 수행되는 동안 리셋 된 값을 그대로 유지한다. 그리고, 비트 카운터(33)는 스캔 시작 신호(ScanStart)에 응답해서 나머지 데이터 비트들에 대한 스캔 및 카운트 동작을 수행한다. 이와 같은 선택적으로 데이터 스캐닝을 수행하는 프로그램 방법은, 프로그램 될 데이터 비트 수가 증가할수록, 프로그램 시간의 단축 효과는 더욱 커지게 된다.
도 4a 내지 도 4d는 도 1에 도시된 스캔 데이터 발생부에 포함된 신호 조합 회로들의 회로도이다. 도 4a에는 제 1 그룹의 스캔 데이터(ScanData1)를 발생하는 제 1 신호 조합 회로(311)의 구성이 도시되어 있고, 도 4b에는 제 2 그룹의 스캔 데이터(ScanData2)를 발생하는 제 2 신호 조합 회로(312)의 구성이 도시되어 있다. 그리고, 도 4c에는 제 3 그룹의 스캔 데이터(ScanData4)를 발생하는 제 3 신호 조 합 회로(314)의 구성이 도시되어 있고, 도 4d에는 제 4 그룹의 스캔 데이터(ScanData8)를 발생하는 제 4 신호 조합 회로(318)의 구성이 각각 도시되어 있다.
도 4a를 참조하면, 제 1 신호 조합 회로(311)는 외부로부터 입력된 스캔셀 선택 신호(ScanCellSelect<i>)에 응답해서, 입출력 버퍼(20)로부터 입력된 각각의 데이터 비트(ScanData<i>)를 선택적으로 출력한다. 제 1 신호 조합 회로(311)로부터 발생된 데이터는 제 1 그룹의 스캔 데이터(ScanData1)라 불린다. 제 1 신호 조합 회로(311)로부터 발생된 제 1 그룹의 스캔 데이터(ScanData1)는, 입출력 버퍼(20)로부터 입력된 각각의 데이터 비트(ScanData<i>)와 실질적으로 동일한 데이터 값을 가진다.
도 4b를 참조하면, 제 2 신호 조합 회로(312)는 입출력 버퍼(20)로부터 입력된 데이터 비트(ScanData<i>)의 연속된 2 개의 비트(즉, 21 비트)를 조합하여 제 2 그룹의 스캔 데이터(ScanData2)를 발생한다. 제 2 그룹의 스캔 데이터(ScanData2)는, 현재의 스캔 어드레스가 포함된 2 비트의 데이터 중에 "0"이 없으면 "1"의 값을 가지는 제 2 그룹의 스캔 데이터(ScanData2)를 출력하고, "0"이 하나라도 존재하면 "0"의 값을 가지는 제 2 그룹의 스캔 데이터(ScanData2)를 출력한다. 이를 위해 제 2 신호 조합 회로(312)는 스캔 어드레스(ScanAddress<4>, ScanAddress<5>)를 참조하여, 연속된 2 개의 비트(즉, 21 비트)를 조합한다. 이와 같은 제 2 그룹의 스캔 데이터(ScanData2)의 값은 입력된 데이터 비트(ScanData<i>) 중 연속된 2 개의 비트들에 대한 논리곱 결과와 같다.
도 4c를 참조하면, 제 3 신호 조합 회로(314)는 입출력 버퍼(20)로부터 입력된 데이터 비트(ScanData<i>)의 연속된 4 개의 비트(즉, 22 비트)를 조합하여 제 3 그룹의 스캔 데이터(ScanData4)를 발생한다. 제 3 그룹의 스캔 데이터(ScanData4)는, 현재의 스캔 어드레스가 포함된 4 비트의 데이터 중에 "0"이 없으면 "1"의 값을 가지는 제 3 그룹의 스캔 데이터(ScanData4)를 출력하고, "0"이 하나라도 존재하면 "0"의 값을 가지는 제 3 그룹의 스캔 데이터(ScanData4)를 출력한다. 이를 위해 제 3 신호 조합 회로(314)는 스캔 어드레스(ScanAddress<5>)를 참조하여, 연속된 4 개의 비트(즉, 22비트)를 조합한다. 이와 같은 제 3 그룹의 스캔 데이터(ScanData4)의 값은 입력된 데이터 비트(ScanData<i>) 중 연속된 4 개의 비트들에 대한 논리곱 결과와 같다.
도 4d를 참조하면, 제 4 신호 조합 회로(318)는 입출력 버퍼(20)로부터 입력된 데이터 비트(ScanData<i>)의 연속된 8 개의 비트(즉, 23비트)를 조합하여 제 4 그룹의 스캔 데이터(ScanData8)를 발생한다. 제 4 그룹의 스캔 데이터(ScanData8)는, 현재의 스캔 어드레스가 포함된 8 비트의 데이터 중에 "0"이 없으면 "1"의 값을 가지는 제 3 그룹의 스캔 데이터(ScanData8)를 출력하고, "0"이 하나라도 존재하면 "0"의 값을 가지는 제 4 그룹의 스캔 데이터(ScanData8)를 출력한다. 이 같은 제 4 그룹의 스캔 데이터(ScanData8)의 값은 입력된 데이터 비트(ScanData<i>) 중 연속된 8 개의 비트들에 대한 논리곱 결과와 같다.
아래에서 상세히 설명되겠지만, 제 1 내지 제 4 신호 조합 회로(311, 312, 314, 318)로부터 발생된 제 1 내지 제 4 그룹의 스캔 데이터들(ScanData1, ScanData2, ScanData4, ScanData8)은, 실제로 프로그램 될 데이터의 개수 및 어드레스를 카운트하는데 사용된다. 특히, 본 발명에서는 상기 스캔 데이터들(ScanData1, ScanData2, ScanData4, ScanData8)의 값에 따라 선별적인 스캔 동작을 수행하여 실제 프로그램 될 비트를 찾아내고, 실제 프로그램 될 비트의 어드레스를 계산한다. 이를 위한 비트 카운터(33) 및 어드레스 카운터(35)의 동작을 살펴보면 다음과 같다.
도 5는 도 1에 도시된 비트 카운터(33)의 동작을 보여주는 흐름도이다.
도 5를 참조하면, 비트 카운터(33)는 먼저 카운트된 결과(BitCount)(즉, 카운트 된 실제 프로그램 될 비트 수)가 소정의 동시 프로그램 비트 수(BitMax)와 같은지, 또는 마지막 데이터에 대한 스캔이 수행되었는지 여부를 판별한다(331 단계). 331 단계에서의 판별 결과, 카운트된 결과(BitCount)가 동시 프로그램 비트 수(BitMax)와 같거나, 마지막 데이터에 대한 스캔이 수행되었으면, 카운트 동작을 종료한다. 그리고, 331 단계에서의 판별 결과, 카운트된 결과(BitCount)가 동시 프로그램 비트 수(BitMax)와 같지 않거나 마지막 데이터에 대한 스캔이 수행되지 않았으면, 비트 카운터(33)는 현재 스캔 위치에 해당되는 스캔 데이터들(ScanData1, ScanData2, ScanData4, ScanData8) 중 어느 하나에 "1"의 값이 존재하는지 여부를 판별한다(333 단계).
333 단계에서의 판별 결과, 현재 스캔 위치에 해당되는 스캔 데이터들(ScanData1, ScanData2, ScanData4, ScanData8) 중 어느 하나에 "1"의 값이 존재하 지 않으면, 즉 해당 위치의 모든 스캔 데이터들(ScanData1, ScanData2, ScanData4, ScanData8)이 "0"의 값을 가지면, 스캐닝 되고 있는 현재의 비트를 실제 프로그램 될 데이터로 판정한다. 그리고 나서, 카운트 값(BitCount)을 1만큼 증가시킨다(337 단계).
그리고, 333 단계에서의 판별 결과 현재 스캔 위치에 해당되는 스캔 데이터들(ScanData1, ScanData2, ScanData4, ScanData8) 중 어느 하나에 "1"의 값이 존재하면, "1"의 값을 가지는 해당 비트에 대한 스캐닝을 생략한다(335 단계). 이 경우, 현재 스캐닝 되고 있는 위치의 제 4 그룹의 스캔 데이터(ScanData8) 값이 "1"이면, 이에 해당되는 8 비트의 데이터가 모두 프로그램되지 않을 것으로 판정하고, 8비트의 데이터 비트에 대한 스캐닝을 생략한다. 그리고, 현재 스캐닝 되고 있는 위치의 제 3 그룹의 스캔 데이터(ScanData4) 값이 "1"이면, 이에 해당되는 4 비트의 데이터에 대한 스캐닝을 생략한다. 마찬가지로, 현재 스캐닝 되고 있는 위치의 제 2 그룹의 스캔 데이터(ScanData2) 값이 "1"이면 2비트의 데이터에 대한 스캐닝을 생략한다. 그리고, 현재 스캐닝 되고 있는 위치의 제 1 그룹의 스캔 데이터(ScanData1) 값이 "1"이면, 해당 비트는 프로그램되지 않을 비트로 판정하고, 바로 다음 비트에 대한 스캐닝을 수행한다.
이와 같은 비트 카운터(33)의 카운팅 동작은 카운트된 결과(BitCount)가 소정의 동시 프로그램 비트 수(BitMax)에 도달하거나, 또는 마지막 데이터 비트가 스캔될 때까지 반복된다.
도 6은 도 1에 도시된 어드레스 카운터(35)의 동작을 보여주는 흐름도이고, 도 7은 도 1 및 도 6에 도시된 어드레스 카운터(35)의 구성 예를 보여 주는 회로도이다. 도 7에 도시된 어드레스 카운터(35)는 6 비트의 어드레스(ScanAddress<5:0>)를 계산하기 위해, 6 개의 플립플롭들(DFF_0, DFF_1, …, DFF_5)과, 6 개의 데이터 입력부들을 포함한다. 각각의 데이터 입력부들은, 현재의 페이지가 마지막 페이지인지를 나타내는 신호(PageFinal, PageFina2, …, PageFina8)와, 동시 프로그램 비트 수만큼 비트가 검색되었는지 여부를 나타내는 정보(BitMax)에 응답해서, 복수 개의 그룹의 스캔 데이터들(ScanData1, ScanData2, ScanData4, ScanData8)에 대한 논리 연산을 수행한다. 데이터 입력부에서 수행된 논리 연산 결과에 따라, 대응되는 플립플롭의 데이터 입출력 동작이 제어된다. 각각의 플립플롭들은 외부로부터 입력된 리셋신호(CounterReset) 신호에 따라 리셋된다. 그리고, 각각의 플립플롭들은 스캔클럭신호(ScanClock)에 응답해서 어드레스 카운팅을 수행한다. 스캔클럭신호(ScanClock)는 도 3에 도시되어 있는 바와 같이, 스캔 동작이 시작되고 나면(ScanStart) 발생되는 클럭 신호로서, 스캔 동작이 수행되는 동안에만 활성화 되고, 프로그램 동작이 수행되는 동안에는 비활성화 된다. 스캔 데이터들(ScanData1, ScanData2, ScanData4, ScanData8)의 값에 따른 어드레스 카운터(35)의 어드레스 카운트 동작은 다음과 같다.
도 6 및 도 7을 참조하면, 어드레스 카운터(35)는 먼저 비트 카운터(33)에서 카운트된 결과(BitCount)가 소정의 동시 프로그램 비트 수(BitMax)와 같은지, 또는 마지막 데이터에 대한 스캔이 수행되었는지 여부를 판별한다(351 단계). 351 단계에서의 판별 결과, 카운트된 결과(BitCount)가 동시 프로그램 비트 수(BitMax)와 같거나 마지막 데이터에 대한 스캔이 수행되었으면, 어드레스 카운트 동작을 종료한다.
그리고, 351 단계에서의 판별 결과, 카운트된 결과(BitCount)가 동시 프로그램 비트 수(BitMax)와 같지 않거나 마지막 데이터에 대한 스캔이 수행되지 않았으면, 어드레스 카운터(35)는 현재 스캐닝되고 있는 위치의 제 4 그룹의 스캔 데이터(ScanData8)가 "0"인지 여부를 판별한다(353 단계).
353 단계에서의 판별 결과, 현재 스캐닝되고 있는 위치의 제 4 그룹의 스캔 데이터(ScanData8)가 "0"이 아니면(즉, "1"의 값을 가지면), 연속된 8 비트의 데이터가 모두 프로그램되지 않을 것으로 판정한다. 따라서, 어드레스 카운터(35)는 프로그램되지 않을 8비트의 데이터 비트에 대한 어드레스가 건너뛸 수 있도록, 어드레스 카운트 값(AddCount)을 8만큼 증가시킨다(354 단계). 그리고, 353 단계에서의 판별 결과, 현재 스캐닝되고 있는 위치의 제 4 그룹의 스캔 데이터(ScanData8)가 "0"이면, 어드레스 카운터(35)는 현재 스캐닝되고 있는 위치의 제 3 그룹의 스캔 데이터(ScanData4)가 "0"인지 여부를 판별한다(355 단계).
355 단계에서의 판별 결과, 현재 스캐닝되고 있는 위치의 제 3 그룹의 스캔 데이터(ScanData4)가 "0"이 아니면, 연속된 4 비트의 데이터가 모두 프로그램되지 않을 것으로 판정한다. 따라서, 어드레스 카운터(35)는 프로그램되지 않을 4비트의 데이터 비트에 대한 어드레스가 건너뛸 수 있도록, 어드레스 카운트 값(AddCount)을 4만큼 증가시킨다(356 단계). 그리고, 355 단계에서의 판별 결과, 현재 스캐닝되고 있는 위치의 제 3 그룹의 스캔 데이터(ScanData4)가 "0"이면, 어드레스 카운 터(35)는 현재 스캐닝되고 있는 위치의 제 2 그룹의 스캔 데이터(ScanData2)가 "0"인지 여부를 판별한다(357 단계).
계속해서, 357 단계에서의 판별 결과, 현재 스캐닝되고 있는 위치의 제 2 그룹의 스캔 데이터(ScanData2)가 "0"이 아니면, 연속된 2 비트의 데이터가 모두 프로그램되지 않을 것으로 판정한다. 따라서, 어드레스 카운터(35)는 프로그램되지 않을 2비트의 데이터 비트에 대한 어드레스가 건너뛸 수 있도록, 어드레스 카운트 값(AddCount)을 2만큼 증가시킨다(358 단계). 그리고, 357 단계에서의 판별 결과, 현재 스캐닝되고 있는 위치의 제 2 그룹의 스캔 데이터(ScanData2)가 "0"이면, 어드레스 카운터(35)는 현재 스캐닝되고 있는 위치의 제 1 그룹의 스캔 데이터(ScanData1)가 "0"인지 여부를 판별한다. 그리고 나서, 현재 스캐닝되고 있는 위치의 제 1 그룹의 스캔 데이터(ScanData1)가 "0"이면, 어드레스 카운트 값(AddCount)을 1만큼 증가시킨다(359 단계).
이와 같은 어드레스 카운팅 방법에 따르면, 복수 개의 그룹의 스캔 데이터들(ScanData1, ScanData2, ScanData4, ScanData8)의 값에 따라, 실제 프로그램 될 데이터 비트의 어드레스가 직접 계산된다. 이와 같은 어드레스 계산 방식은, 순차적인 어드레스 카운팅 동작을 통해 어드레스를 결정하지 않고, 실제 프로그램 될 비트에 대한 어드레스 계산만을 선별적으로 수행하기 때문에, 어드레스 계산에 소요되는 시간을 효과적으로 줄일 수 있다.
도 8 내지 도 10을 참조하여, 본 발명에 따른 프로그램 방법, 및 이로 인해 얻어지는 효과를 살펴보면 다음과 같다.
도 8 및 도 9는 종래 기술에 따른 프로그램 예를 보여주는 도면이다. 도 8에는 프로그램 될 데이터의 값에 상관없이 소정의 비트 단위로 프로그램하는 예가 도시되어 있다. 그리고, 도 9에는 프로그램 될 데이터가 "0"의 값을 갖는지 "1"의 값을 갖는지에 따라 선별적으로 프로그램하는 예가 도시되어 있다.
도 8에 도시된 프로그램 방법에서는 프로그램 될 데이터의 값이 "0"인지 "1"인지에 상관없이 각 데이터 그룹에 대해 일정한 프로그램 시간을 일률적으로 할당한다. 이 경우, 동시 프로그램 비트 수(BitMax)가 4 비트인 경우, 4 워드의 프로그램을 수행하는데 총 16회의 프로그램 시간이 소요된다.
이와 달리, 도 9에 도시된 프로그램 방법에서는 프로그램 될 데이터의 값이 "0"인지 "1"인지에 따라 실제 프로그램 될 데이터를 찾아내어 선별적으로 프로그램을 수행한다. 이 경우, 동시 프로그램 비트 수(BitMax)가 4 비트인 경우, 4 워드의 프로그램을 수행하는데 총 4회의 프로그램 시간이 소요된다. 하지만, 도 9에 도시된 프로그램 방법에서는 모든 데이터 비트에 대해 순차적인 데이터 스캔을 수행(도 9의 화살표 참조)한 후, 스캔 결과에 따라 프로그램을 수행한다. 따라서, 데이터 스캔에 소요되는 시간이 많은 단점이 있다.
도 10은 본 발명에 따른 프로그램 예를 보여주는 도면이다.
도 10을 참조하면, 본 발명에 따른 프로그램 방법은 복수개의 데이터 비트들에 대한 데이터 조합 결과(ScanData1, ScanData2, ScanData4, ScanData8)에 따라 데이터 스캐닝을 선택적으로 수행하고(도 10의 화살표 참조), 프로그램 될 데이터 비트에 대한 어드레스 계산을 선별적으로 수행한다.
예를 들어, 현재 스캐닝되고 있는 비트의 위치에 해당되는 제 4 그룹의 스캔 데이터(ScanData8)의 값이 "1"이면 8 비트에 대한 데이터 스캐닝을 생략하고, 어드레스 값을 8만큼 증가시킨다. 그리고, 현재 스캐닝되고 있는 비트의 위치에 해당되는 제 3 그룹의 스캔 데이터(ScanData4)의 값이 "1"이면 4 비트에 대한 데이터 스캐닝을 생략하고, 어드레스 값을 4만큼 증가시킨다. 그리고, 현재 스캐닝되고 있는 비트의 위치에 해당되는 제 2 그룹의 스캔 데이터(ScanData2)의 값이 "1"이면 2 비트에 대한 데이터 스캐닝을 생략하고, 어드레스 값을 2만큼 증가시킨다. 이와 같은 선별적인 데이터 스캐닝 및 어드레스 계산에 따르면, 일부 데이터에 대한 스캐닝만이 선별적으로 수행되기 때문에(도 10의 화살표 참조), 데이터 스캐닝에 소요되는 시간이 현저히 줄어들게 된다.
앞에서 설명한 바와 같이, 본 발명에 따른 불휘발성 메모리 장치 및 그것의 프로그램 방법은, 외부로부터 입력된 복수개의 데이터 비트들을 복수 개의 그룹으로 조합하고, 조합 결과에 따라 데이터 비트들을 선택적으로 스캔한다. 그 결과, 실제 프로그램 될 데이터를 찾아내는 데이터 스캐닝 동작이 최소화된다. 그리고, 본 발명에서는 검출된 비트들에 대한 어드레스 계산만을 선별적으로 수행하기 때문에, 어드레스 계산에 소요되는 시간 또한 효과적으로 줄일 수 있다. 그 결과, 프로그램에 소요되는 시간을 효과적으로 줄일 수 있게 된다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사 용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
이상과 같은 본 발명에 의하면, 불휘발성 반도체 메모리 장치에서 데이터를 프로그램하는데 걸리는 평균 시간이 효과적으로 단축된다.

Claims (26)

  1. 외부로부터 입력된 데이터 비트들을 선택적으로 스캔하여 실제 프로그램 될 데이터 비트들을 검색하는 단계; 및
    상기 검색된 데이터 비트들을 소정의 비트 단위로 프로그램하는 단계를 포함하는 것을 특징으로 하는 불휘발성 메모리 장치의 프로그램 방법.
  2. 제 1 항에 있어서, 상기 검색 단계는
    상기 입력된 데이터 비트들을 복수 개의 그룹으로 조합하는 단계; 및
    상기 조합 결과에 따라 상기 데이터 비트들을 선택적으로 스캔하여 실제 프로그램 될 데이터 비트들을 검색하는 단계를 포함하는 것을 특징으로 하는 불휘발성 메모리 장치의 프로그램 방법.
  3. 제 2 항에 있어서,
    상기 데이터 비트들은 2N비트씩 조합되어, M개의 그룹(M, N은 자연수)을 형성하는 것을 특징으로 하는 불휘발성 메모리 장치의 프로그램 방법.
  4. 제 2 항에 있어서,
    상기 M개의 그룹들 모두가 상기 제 1 값을 가지는 경우, 상기 실제 프로그램 될 데이터 비트의 개수가 카운트되는 것을 특징으로 하는 불휘발성 메모리 장치의 프로그램 방법.
  5. 제 2 항에 있어서,
    상기 M개의 그룹들 중 적어도 하나의 그룹이 상기 제 2 값을 가지는 경우, 상기 제 2 값을 가지는 해당 그룹에 대한 데이터 스캐닝을 생략하는 것을 특징으로 하는 불휘발성 메모리 장치의 프로그램 방법.
  6. 제 2 항에 있어서, 상기 검색 단계는
    상기 검색된 데이터 비트에 대한 어드레스를 계산하는 단계를 더 포함하는 것을 특징으로 하는 불휘발성 메모리 장치의 프로그램 방법.
  7. 제 6 항에 있어서,
    상기 어드레스는 상기 조합 결과에 따라 선택적으로 계산되는 것을 특징으로 하는 불휘발성 메모리 장치의 프로그램 방법.
  8. 제 6 항에 있어서,
    상기 프로그램 단계에서는, 상기 계산된 어드레스에 응답해서 해당 비트가 선택적으로 프로그램되는 것을 특징으로 하는 불휘발성 메모리 장치의 프로그램 방법.
  9. 제 8 항에 있어서,
    상기 프로그램 단계에서는, 동시에 프로그램 가능한 최대 비트 수 만큼씩 상기 검색된 데이터에 대한 프로그램을 수행하는 것을 특징으로 하는 불휘발성 메모리 장치의 프로그램 방법.
  10. 외부로부터 입력된 데이터 비트들을 복수 개의 그룹으로 조합하는 단계;
    상기 조합 결과에 따라 상기 데이터 비트들을 선택적으로 스캔하여 실제 프로그램 될 데이터 비트들을 검색하는 단계; 및
    상기 검색된 데이터 비트들을 소정의 비트 단위로 프로그램하는 단계를 포함하는 것을 특징으로 하는 불휘발성 메모리 장치의 프로그램 방법.
  11. 제 10 항에 있어서,
    상기 데이터 비트들은 2N비트씩 조합되어, M개의 그룹(M, N은 자연수)을 형성하는 것을 특징으로 하는 불휘발성 메모리 장치의 프로그램 방법.
  12. 제 10 항에 있어서,
    상기 M개의 그룹들 모두가 상기 제 1 값을 가지는 경우에 프로그램 될 개수를 카운트하는 것을 특징으로 하는 불휘발성 메모리 장치의 프로그램 방법.
  13. 제 10 항에 있어서,
    상기 M개의 그룹들 중 적어도 하나의 그룹이 상기 제 2 값을 가지는 경우, 상기 제 2 값을 가지는 해당 그룹에 대한 데이터 스캐닝을 생략하는 것을 특징으로 하는 불휘발성 메모리 장치의 프로그램 방법.
  14. 제 10 항에 있어서,
    상기 검색된 데이터 비트에 대한 어드레스를 계산하는 단계를 더 포함하는 것을 특징으로 하는 불휘발성 메모리 장치의 프로그램 방법.
  15. 제 14 항에 있어서,
    상기 어드레스는 상기 조합 결과에 따라 선택적으로 계산되는 것을 특징으로 하는 불휘발성 메모리 장치의 프로그램 방법.
  16. 제 14 항에 있어서,
    상기 프로그램 단계에서는, 상기 계산된 어드레스에 응답해서 해당 비트가 선택적으로 프로그램되는 것을 특징으로 하는 불휘발성 메모리 장치의 프로그램 방법.
  17. 제 16 항에 있어서,
    상기 프로그램 단계에서는, 동시에 프로그램 가능한 최대 비트 수 만큼씩 상기 검색된 데이터에 대한 프로그램을 수행하는 것을 특징으로 하는 불휘발성 메모리 장치의 프로그램 방법.
  18. 외부로부터 입력된 데이터 비트들을 선택적으로 스캔하여 실제 프로그램 될 데이터 비트들을 검색하는 데이터 스캐닝부; 및
    상기 검색된 데이터 비트들을 소정의 비트 단위로 프로그램하는 기입 드라이버를 포함하는 것을 특징으로 하는 불휘발성 메모리 장치.
  19. 제 18 항에 있어서, 상기 데이터 스캐닝부는
    상기 입력된 데이터 비트들이 복수 개의 그룹으로 조합된 스캔 데이터를 발생하는 스캔 데이터 발생부; 및
    상기 스캔 데이터의 값에 따라 상기 데이터 비트들을 선택적으로 스캔하여 실제 프로그램 될 데이터 비트들을 검색하는 비트 카운트부를 포함하는 것을 특징으로 하는 불휘발성 메모리 장치.
  20. 제 19 항에 있어서,
    상기 데이터 비트들은 2N비트씩 조합되어, M개의 그룹(M, N은 자연수)을 형성하는 것을 특징으로 하는 불휘발성 메모리 장치.
  21. 제 19 항에 있어서,
    상기 비트 카운트부는, 상기 M개의 그룹들 모두가 상기 제 1 값을 가지는 경우, 상기 실제 프로그램 될 데이터 비트의 개수를 카운트하는 것을 특징으로 하는 불휘발성 메모리 장치.
  22. 제 19 항에 있어서,
    상기 비트 카운트부는, 상기 M개의 그룹들 중 적어도 하나의 그룹이 상기 제 2 값을 가지는 경우, 상기 제 2 값을 가지는 해당 그룹에 대한 데이터 스캐닝을 생략하는 것을 특징으로 하는 불휘발성 메모리 장치.
  23. 제 19 항에 있어서, 상기 데이터 스캐닝부는
    상기 검색된 데이터 비트에 대한 어드레스를 계산하는 어드레스 카운트부를 더 포함하는 것을 특징으로 하는 불휘발성 메모리 장치.
  24. 제 23 항에 있어서,
    상기 어드레스 카운트부는, 상기 스캔 데이터의 값에 응답하여 상기 검색된 데이터 비트에 대한 어드레스를 계산하는 것을 특징으로 하는 불휘발성 메모리 장치.
  25. 제 23 항에 있어서,
    상기 기입 드라이버는, 상기 계산된 어드레스에 응답해서 해당 비트를 선택적으로 프로그램하는 것을 특징으로 하는 불휘발성 메모리 장치.
  26. 제 25 항에 있어서,
    상기 기입 드라이버는, 동시에 프로그램 가능한 최대 비트 수 만큼씩 상기 검색된 데이터에 대한 프로그램을 수행하는 것을 특징으로 하는 불휘발성 메모리 장치.
KR1020040081465A 2004-10-12 2004-10-12 불휘발성 메모리 장치 및 그것의 고속 프로그램 방법 KR100645047B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020040081465A KR100645047B1 (ko) 2004-10-12 2004-10-12 불휘발성 메모리 장치 및 그것의 고속 프로그램 방법
US11/249,095 US7580322B2 (en) 2004-10-12 2005-10-11 High speed programming for nonvolatile memory
JP2005296786A JP4965106B2 (ja) 2004-10-12 2005-10-11 不揮発性メモリ装置及びそれの高速プログラム方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040081465A KR100645047B1 (ko) 2004-10-12 2004-10-12 불휘발성 메모리 장치 및 그것의 고속 프로그램 방법

Publications (2)

Publication Number Publication Date
KR20060032507A true KR20060032507A (ko) 2006-04-17
KR100645047B1 KR100645047B1 (ko) 2006-11-10

Family

ID=36145065

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040081465A KR100645047B1 (ko) 2004-10-12 2004-10-12 불휘발성 메모리 장치 및 그것의 고속 프로그램 방법

Country Status (3)

Country Link
US (1) US7580322B2 (ko)
JP (1) JP4965106B2 (ko)
KR (1) KR100645047B1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100866957B1 (ko) * 2007-02-08 2008-11-05 삼성전자주식회사 데이터 프로그램 시간을 단축시킨 불휘발성 메모리 장치 및그 구동방법
US7826276B2 (en) 2006-12-22 2010-11-02 Samsung Electronics Co., Ltd. Non-volatile memory device reducing data programming and verification time, and method of driving the same
US8432736B2 (en) 2010-03-16 2013-04-30 Samsung Electronics Co., Ltd. Nonvolatile memory device and method of programming the same
US8531884B2 (en) 2010-08-11 2013-09-10 Samsung Electronics Co., Ltd. Memory device, systems and devices including a memory device, methods of operating a memory device, and/or methods of operating systems and devices including a memory device
US8953377B2 (en) 2012-09-04 2015-02-10 SK Hynix Inc. Nonvolatile memory device and data storage device including the same

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7379372B2 (en) * 2004-09-15 2008-05-27 Samsung Electronics Co., Ltd. Non-volatile memory device with scanning circuit and method
US7233528B2 (en) * 2005-07-25 2007-06-19 Atmel Corporation Reduction of programming time in electrically programmable devices
JP2009146555A (ja) * 2007-11-20 2009-07-02 Toshiba Corp 不揮発性半導体記憶装置
JP4729062B2 (ja) * 2008-03-07 2011-07-20 株式会社東芝 メモリシステム
JP2009230414A (ja) * 2008-03-21 2009-10-08 Toshiba Corp 複数の不揮発性メモリデバイスを有する記憶装置
US8040730B2 (en) * 2008-11-28 2011-10-18 Samsung Electronics Co., Ltd. Nonvolatile memory device
US8327062B2 (en) * 2008-12-09 2012-12-04 Infineon Technologies Ag Memory circuit and method for programming in parallel a number of bits within data blocks
US8570828B2 (en) * 2010-04-12 2013-10-29 Mosaid Technologies Incorporated Memory programming using variable data width
JP5702573B2 (ja) * 2010-10-20 2015-04-15 スパンション エルエルシー 不揮発性半導体記憶装置およびそのデータ書き込み方法
KR101298191B1 (ko) * 2011-11-04 2013-08-20 에스케이하이닉스 주식회사 반도체 메모리 장치, 이를 위한 연속 프로그램 제어 회로 및 프로그램 방법
US8947972B2 (en) * 2013-03-15 2015-02-03 Sandisk 3D Llc Dynamic address grouping for parallel programming in non-volatile memory
US8947944B2 (en) 2013-03-15 2015-02-03 Sandisk 3D Llc Program cycle skip evaluation before write operations in non-volatile memory
US9711225B2 (en) 2013-10-16 2017-07-18 Sandisk Technologies Llc Regrouping and skipping cycles in non-volatile memory
US9564215B2 (en) 2015-02-11 2017-02-07 Sandisk Technologies Llc Independent sense amplifier addressing and quota sharing in non-volatile memory
KR20190130869A (ko) 2018-05-15 2019-11-25 에스케이하이닉스 주식회사 메모리 장치 및 이를 포함하는 메모리 시스템
TWI650769B (zh) * 2018-05-22 2019-02-11 華邦電子股份有限公司 記憶體裝置及記憶胞陣列的程式化方法
US10861564B2 (en) 2018-10-17 2020-12-08 Winbond Electronics Corp. Memory circuit and data bit status detector thereof
CN109872754B (zh) * 2019-02-15 2021-02-26 长江存储科技有限责任公司 数据编程方法及装置、存储器及存储介质
CN109935265B (zh) * 2019-02-15 2021-02-26 长江存储科技有限责任公司 数据读取方法及装置、存储器及存储介质

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3123274B2 (ja) * 1992-12-11 2001-01-09 ブラザー工業株式会社 メモリのプログラミング装置
US5537350A (en) * 1993-09-10 1996-07-16 Intel Corporation Method and apparatus for sequential programming of the bits in a word of a flash EEPROM memory array
US5646890A (en) * 1996-03-29 1997-07-08 Aplus Integrated Circuits, Inc. Flexible byte-erase flash memory and decoder
US5777923A (en) * 1996-06-17 1998-07-07 Aplus Integrated Circuits, Inc. Flash memory read/write controller
US5991196A (en) * 1997-12-16 1999-11-23 Microchip Technology Incorporated Reprogrammable memory device with variable page size
US6058042A (en) 1997-12-26 2000-05-02 Sony Corporation Semiconductor nonvolatile memory device and method of data programming the same
KR100258574B1 (ko) * 1997-12-30 2000-06-15 윤종용 반도체 메모리 장치 및 그 장치의 프로그램/소거 검증 방법
JP2000040382A (ja) 1998-07-23 2000-02-08 Sony Corp 不揮発性半導体記憶装置およびそのデータ書き込み方法
US6362990B1 (en) * 1999-09-10 2002-03-26 Sibercore Technologies Three port content addressable memory device and methods for implementing the same
JP4055103B2 (ja) 2000-10-02 2008-03-05 株式会社ルネサステクノロジ 不揮発性メモリおよびそれを内蔵した半導体集積回路並びに不揮発性メモリの書込み方法
KR100385229B1 (ko) 2000-12-14 2003-05-27 삼성전자주식회사 스트링 선택 라인에 유도되는 노이즈 전압으로 인한프로그램 디스터브를 방지할 수 있는 불휘발성 반도체메모리 장치 및 그것의 프로그램 방법
DE60041823D1 (de) * 2000-12-29 2009-04-30 St Microelectronics Srl Ein elektrisch modifizierbarer nichtflüchtiger Halbleiterspeicher der eingeschriebene Daten solange hält, bis ihre Neuprogrammierung abgeschlossen ist
ITRM20010530A1 (it) * 2001-08-31 2003-02-28 Micron Technology Inc Marcatura di settore di memoria flash per consecutiva cancellazione in settore o banco.
US6882583B2 (en) * 2003-04-30 2005-04-19 International Business Machines Corporation Method and apparatus for implementing DRAM redundancy fuse latches using SRAM
KR100645045B1 (ko) * 2004-09-30 2006-11-10 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법
KR100568118B1 (ko) * 2004-09-30 2006-04-05 삼성전자주식회사 불휘발성 메모리 장치 및 그것을 위한 고속 검증 방법

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7826276B2 (en) 2006-12-22 2010-11-02 Samsung Electronics Co., Ltd. Non-volatile memory device reducing data programming and verification time, and method of driving the same
KR100866957B1 (ko) * 2007-02-08 2008-11-05 삼성전자주식회사 데이터 프로그램 시간을 단축시킨 불휘발성 메모리 장치 및그 구동방법
US8432736B2 (en) 2010-03-16 2013-04-30 Samsung Electronics Co., Ltd. Nonvolatile memory device and method of programming the same
US8531884B2 (en) 2010-08-11 2013-09-10 Samsung Electronics Co., Ltd. Memory device, systems and devices including a memory device, methods of operating a memory device, and/or methods of operating systems and devices including a memory device
US8953377B2 (en) 2012-09-04 2015-02-10 SK Hynix Inc. Nonvolatile memory device and data storage device including the same

Also Published As

Publication number Publication date
US20060077720A1 (en) 2006-04-13
JP4965106B2 (ja) 2012-07-04
KR100645047B1 (ko) 2006-11-10
US7580322B2 (en) 2009-08-25
JP2006114042A (ja) 2006-04-27

Similar Documents

Publication Publication Date Title
KR100645047B1 (ko) 불휘발성 메모리 장치 및 그것의 고속 프로그램 방법
US6963501B2 (en) Nonvolatile memory
US7415568B2 (en) Method and apparatus for initialization control in a non-volatile memory device
KR100673023B1 (ko) 파이프라인-버퍼 방식으로 프로그램되는 반도체 메모리장치
US7290109B2 (en) Memory system and memory card
US7564718B2 (en) Method for programming a block of memory cells, non-volatile memory device and memory card device
US6556504B2 (en) Nonvolatile semiconductor memory device and data input/output control method thereof
US8234440B2 (en) Nonvolatile semiconductor memory device with advanced multi-page program operation
US8644065B2 (en) Memory system with user configurable density/performance option
US6567302B2 (en) Method and apparatus for programming multi-state cells in a memory device
JP2006107719A (ja) 不揮発性メモリ装置及びそれのプログラム方法
JP2007149241A (ja) 不揮発性半導体記憶装置
US6826081B2 (en) Nonvolatile semiconductor memory device, nonvolatile semiconductor memory device-integrated system, and defective block detecting method
US6335882B1 (en) Nonvolatile semiconductor memory device capable of erasing blocks despite variation in erasing characteristic of sectors
US7925820B2 (en) Nonvolatile semiconductor memory device and program method therefor
JP2006024347A (ja) ビットスキャニングプログラムを実行する不揮発性メモリ装置
KR100590219B1 (ko) 프로그램 시간을 줄일 수 있는 불 휘발성 메모리 장치
KR100568118B1 (ko) 불휘발성 메모리 장치 및 그것을 위한 고속 검증 방법
JP3143161B2 (ja) 不揮発性半導体メモリ
US7042795B2 (en) Flash memory device with burst read mode of operation
US8296499B2 (en) Flash memory device and program method thereof
KR20080058884A (ko) 데이터 프로그램 및 검증 시간을 단축시킨 불휘발성메모리 장치 및 그 구동방법
JP2006085896A (ja) 加速化されたビットスキャニングプログラムを実行する不揮発性メモリ装置
KR100960478B1 (ko) 불휘발성 메모리 장치의 듀얼 플레인 카피백 방법
KR100927119B1 (ko) 불 휘발성 반도체 메모리 장치 및 그것의 프로그램 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee