이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 본 발명의 실시 예를 첨부된 도면을 참조하여 설명할 것이다.
도 1은 본 발명의 비휘발성 메모리 장치의 프로그램 방법을 설명하기 위한 개략도이다. 도 1을 참조하면, 비휘발성 메모리 장치의 프로그램 방법은 다음과 같이 진행될 것이다.
비휘발성 메모리 장치는 외부로부터 입력된 프로그램 비트들(Program bits) 혹은 금지 비트들(Inhibit bits)에 따라 프로그램 동작을 수행할 것이다(S10). 여기서 프로그램 비트들은 프로그램될 메모리 셀들에 대응하는 데이터이고, 금지 비트들은 프로그램 금지될 메모리 셀들에 대응하는 데이터이다. 예를 들어, 프로그램 비트는 데이터 '0'에 대응되고, 금지 비트는 데이터 '1'에 대응될 수 있다.
프로그램 동작 후에, 비휘발성 메모리 장치는 프로그램 비트들 및 금지 비트들에 대한 프로그램 검증 동작을 수행할 것이다(S20). 여기서 프로그램 비트들에 대한 프로그램 검증 동작은 제대로 프로그램 동작이 수행되었는지를 판별하는 것이고, 금지 비트들에 대한 프로그램 검증 동작은 제대로 프로그램 금지 동작이 수행되었는지를 판별한 것이다.
이로써, 프로그램 검증 동작시, 페일된 프로그램 비트와 디스터브된 금지 비트가 검출될 것이다. 여기서, 페일된 프로그램 비트는 프로그램 비트가 프로그램되지 않은 것이고, 디스터브된 금지 비트는 프로그램 금지되어야 할 금지 비트가 프로그램된 것이다. 아래에서는 페일된 프로그램 비트와 디스터브된 금지 비트를 통칭하여 페일 비트라고 하겠다.
이러한 프로그램 비트들 및 금지 비트들에 대한 프로그램 검증동작은 동시에 수행될 것이다. 그러나 본 발명의 프로그램 검증 동작이 반드시 여기에 국한될 필 요는 없다. 본 발명의 프로그램 검증 동작은, 프로그램 비트들에 대한 프로그램 검증 동작을 수행한 뒤에 금지 비트들에 대한 프로그램 검증 동작을 수행할 수 있다. 혹은, 본 발명의 프로그램 검증 동작은, 금지 비트들에 대한 프로그램 검증 동작을 수행한 뒤에 프로그램 비트들에 대한 프로그램 검증 동작을 수행할 수 있다.
상술 된 프로그램 검증 동작 결과로써, 전체적인 페일 비트들(total fail bits)이 알려지게 될 것이다. 비휘발성 메모리 장치는 알려진 페일 비트의 개수에 따라 프로그램 종료(Program Finish)를 결정할 것이다(S30). 예를 들어, 페일 비트의 개수가 사전에 결정된 값보다 크지 않을 때, 프로그램 종료(Program Finish)가 결정될 것이다. 여기서 사전에 결정된 값은 에러 정정 코드(Error Correction Code)에 의해 정정 가능한 최대값 보다 크지 않을 것이다.
한편, 이전 프로그램 단계에서의 페일 비트의 개수보다 현재 프로그램 단계에서의 페일 비트의 개수가 증가될 때 프로그램 종료(Program Finish)가 결정될 것이다. 한편, S30 단계에서 프로그램 종료가 결정되지 않으면, 다시 프로그램 동작이 수행될 것이다.
본 발명의 비휘발성 메모리 장치는 프로그램 동작시 프로그램 비트들 및 금지 비트들에 대한 프로그램 검증 동작을 수행하고, 그 결과로써 전체 페일 비트의 개수에 따라 프로그램 종료를 결정할 것이다. 이로써, 본 발명의 비휘발성 메모리 장치는 프로그램 동작시 일반적인 비휘발성 메모리 장치보다 인가되는 프로그램 펄스의 개수 혹은 페일 비트의 개수를 줄일 수 있다.
도 2는 본 발명의 비휘발성 메모리 장치가 일반적인 비휘발성 메모리 장치와 비교할 때 인가되는 프로그램 펄스의 개수 혹은 페일 비트의 개수를 줄이는 이유를 설명하기 위한 도면이다. 도 2를 참조하면, 커브(A)는 프로그램 펄스의 증가에 따라 페일된 프로그램 비트의 개수를 보여주는 곡선이고, 커브(B)는 프로그램 펄스의 증가에 따라 디스터브된 금지 비트의 개수를 보여주는 곡선이고, 커브(C)는 전체적인 페일 비트의 개수를 보여주는 곡선이다.
여기서, 페일된 프로그램 비트의 개수는, 프로그램 비트들에 대한 프로그램 검증 동작으로 알려질 것이다. 또한, 디스터브된 금지 비트의 개수는, 금지 비트들에 대한 프로그램 검증 동작으로 알려질 것이다.
커브(A)에 따르면, 프로그램 펄스의 증가에 따라 페일된 프로그램 비트의 개수는 점차적으로 줄어들 것이다. 커브(B)에 따르면, 프로그램 펄스의 증가에 따라 디스터브된 금지 비트의 개수는 점차적으로 증가될 것이다.
본 발명의 실시 예에 따른 비휘발성 메모리 장치는 프로그램 동작시 전체 페일 비트의 개수에 따라 프로그램 동작을 종료할 것이다.
일반적인 비휘발성 메모리 장치는 프로그램되지 않는 비트의 개수가 사전에 결정된 종료점(CFP) 아래에 도달할 때 프로그램 동작을 종료하였다. 반면에 본 발명의 비휘발성 메모리 장치는 페일된 프로그램 비트의 개수 및 디스터브된 금지 비트의 개수의 합이 사전에 결정된 종료점(PFP) 아래에 도달할 때 프로그램 동작을 종료할 것이다.
여기서 본 발명의 종료점(PFP)은, 커브(C)에 도시된 바와 같이 최저값을 갖는 페일 비트의 개수(N_PFP)로 결정될 수 있다. 한편, 본 발명의 종료점(PFP)에 대 응하는 페일 비트들의 전체 개수(N_PFP)는 에러 정정 코드에 의해 정정될 수 있는 최대 비트 값보다 크지 않을 것이다.
도 2를 다시 참조하면, 프로그램 동작이 종료될 때까지 본 발명의 실시 예에 따른 비휘발성 메모리 장치의 프로그램 펄스의 개수(P_PFP)는 일반적인 비휘발성 메모리 장치의 그것(P_CFP)보다 적을 것이다. 그 결과로써, 본 발명의 비휘발성 메모리 장치는 프로그램 동작시 일반적인 비휘발성 메모리 장치보다 메모리 셀의 신뢰성을 향상시킬 수 있다.
또한, 프로그램 동작이 종료될 때까지 본 발명의 실시 예에 따른 비휘발성 메모리 장치의 전체 페일 비트의 개수(N_PFP)는 일반적인 비휘발성 메모리 장치의 그것(N_CFP)보다 적을 것이다. 이에, 전체적으로 정정될 에러 비트의 개수가 줄어들 것이다. 그 결과로써 비휘발성 메모리 장치를 포함한 메모리 시스템의 전체적인 성능이 향상될 수 있다.
아래에서는 설명의 편의를 위하여, 비휘발성 메모리 장치는 낸드 플래시 메모리 장치라고 가정하겠다. 하지만, 본 발명의 비휘발성 메모리 장치가 반드시 낸드 플래시 메모리 장치에 국한될 필요는 없다. 본 발명의 비휘발성 메모리 장치는 노아 플래시 메모리 장치, 저항변화 메모리 장치(Resistive Random Access Memory: RRAM), 상변화 메모리 장치(Phase-Change Memory: PRAM), 자기저항 메모리 장치(Magnetroresistive Random Access Memory: MRAM), 강유전체 메모리 장치(Ferroelectric Random Access Memory: FRAM), 스핀주입 자화반전 메모리 장치(Spin Transfer Torque Random Access Memory: STT-RAM) 등이 될 수 있다. 또한, 본 발명의 비휘발성 메모리 장치는 3차원 어레이 구조(Three-Dimentional Array Structure)로 구현될 수 있다.
또한, 아래에서는 설명의 편의를 위하여, 비휘발성 메모리 장치는 증가형 펄스 프로그램(Incremental Step Pulse Program: ISPP) 방식으로 프로그램 동작을 수행한다고 가정하겠다. 여기서, 증가형 펄스 프로그램 방식은, 루프 회수가 증가됨에 따라 점차적으로 증가된 프로그램 전압을 인가해 주는 방식이다. 하지만, 본 발명의 프로그램 방식이, 반드시 증가형 펄스 프로그램 방식에 국한될 필요는 없다.
도 3은 본 발명의 실시 예에 따른 비휘발성 메모리 장치에 대한 제 1 실시 예를 보여주는 도면이다. 도 3을 참조하면, 비휘발성 메모리 장치(100)는 메모리 셀 어레이(110), 어드레스 디코더(120), 입출력 회로(130), 페일 비트 지시기(140), 및 제어 로직(150)을 포함할 것이다. 본 발명의 비휘발성 메모리 장치(100)는 페일 비트의 개수에 따라 프로그램 종료(Program Finish)를 결정하는 제어 로직(150)을 포함할 것이다. 여기서 페일 비트의 개수는 페일된 프로그램 비트의 개수와 디스터브된 금지 비트의 개수이다.
메모리 셀 어레이(110)는 복수의 워드라인들(WL0~WLm-1) 및 복수의 비트라인들(BL0~BLn-1)이 교차한 곳에 형성된 복수의 메모리 셀들을 포함할 것이다. 여기서, m 및 n은 자연수이다. 메모리 셀 어레이(110)는 복수의 메모리 블록들(도시되지 않음)을 포함할 것이다. 도 3에서는 실시 예로써, 하나의 메모리 블록이 도시되어 있다. 각각의 메모리 블록들은 복수의 페이지들을 포함할 것이다. 그리고 페이지들 각각은 대응하는 워드라인에 연결된 복수의 메모리 셀들을 포함할 것이다. 비 휘발성 메모리 장치(100)는 블록 단위로 소거 동작을 수행하고, 페이지 단위로 쓰기 동작 혹은 읽기 동작을 수행할 수 있다.
각각의 메모리 셀은 한 비트의 데이터 혹은 두 비트 이상의 데이터를 저장할 수 있다. 하나의 메모리 셀에 한 비트의 데이터를 저장할 수 있는 메모리 셀은 싱글 레벨 셀(Single Level Cell: SLC)이라고 불린다. 하나의 메모리 셀에 두 비트 이상의 데이터를 저장할 수 있는 메모리 셀은 멀티 레벨 셀(Multi Level Cell: MLC)라고 불린다. 싱글 레벨 셀(SLC)은 문턱 전압에 따라 소거 상태(Erase State) 혹은 프로그램 상태(Program State)를 갖는다. 멀티 레벨 셀(MLC)은 문턱 전압에 따라 소거 상태와 복수의 프로그램 상태들 중 어느 하나를 갖는다.
계속해서 도 3을 참조하면, 메모리 셀 어레이(110)는 셀 스트링 구조(Cell String Structure)로 구현될 것이다. 각각의 셀 스트링은 스트링 선택 라인(String Selection Line: SSL)에 연결되는 스트링 선택 트랜지스터(SST), 복수의 워드라인들(WL0~WLm-1)에 각각 연결되는 복수의 메모리 셀들(MC0~MCm-1), 그리고 접지 선택 라인(Ground Selection Line: GSL)에 연결되는 접지 선택 트랜지스터(GST)를 포함할 것이다. 여기서 스트링 선택 트랜지스터(SST)는 비트라인과 스트링 채널(String Channel) 사이에 연결되고, 접지 선택 트랜지스터(GST)는 스트링 채널과 공통 소스 라인(Common Source Line: CSL) 사이에 연결될 것이다.
어드레스 디코더(120)는 선택 라인들(SSL, GSL), 및 복수의 워드라인들(WL0~WLm-1)을 통해 메모리 셀 어레이(110)에 연결될 것이다. 어드레스 디코더(120)는 프로그램 동작 혹은 읽기 동작시 어드레스(ADDR)를 입력받고, 입력된 어 드레스(ADDR)에 따라 어느 하나의 워드라인을 선택할 것이다. 여기서 선택된 워드라인에는 프로그램 동작이 수행되거나 혹은 읽기 동작이 수행될 메모리 셀들이 연결될 것이다.
또한, 어드레스 디코더(120)는 선택된 워드라인, 비선택된 워드라인들, 그리고 선택 라인들(SSL, GSL)로 프로그램 동작 혹은 읽기 동작에 필요한 바이어스 전압들(예를 들어, 프로그램 전압, 패스 전압, 스트링 선택 전압, 접지 선택 전압)을 인가할 것이다. 여기서 바이어스 전압들은 제어 로직(150)으로부터 생성될 것이다.
입출력 회로(130)는 복수의 비트라인들(BL0~BLn-1)을 통하여 메모리 셀 어레이(110)에 연결될 것이다. 입출력 회로(130)는 복수의 페이지 버퍼들(PB0~PBn-1)을 포함할 것이다. 복수의 페이지 버퍼들(PB0~PBn-1)은 선택된 워드라인에 연결된 메모리 셀들에 프로그램될 데이터를 임시로 저장하거나, 혹은 선택된 워드라인에 연결된 메모리 셀들로부터 읽은 데이터를 임시로 저장할 것이다.
프로그램 동작시, 프로그램 셀들에 연결된 비트라인들로는 비트라인 프로그램 전압(예를 들어, 0V)이 각각 인가되고, 프로그램 금지 셀들에 연결된 비트라인들로는 비트라인 금지 전압(예를 들어, 전원전압)이 각각 인가될 것이다. 한편, 비트라인 금지 전압은 비트라인 프리차지 전압으로 불리기도 한다.
페이지 버퍼들(PB0~PBn-1) 각각은 프로그램 검증 동작시 프로그램 비트가 제대로 프로그램되었는지 및 금지 비트가 제대로 금지되었는지를 알려주는 페일 비트를 생성할 것이다. 즉, 프로그램 비트가 제대로 프로그램되지 않았을 때이거나 금지 비트가 제대로 금지되지 않았을 때 페일 비트가 생성될 것이다. 페이지 버퍼 들(PB0~PBn-1) 각각은 프로그램 검증 동작시 검출된 페일 비트를 페일 비트 지시기(140)로 출력할 것이다.
페이지 버퍼들(PB0~PBn-1)로부터 검출된 페일 비트들은 하나의 공유된 출력 라인을 통하여 페일 비트 지시기(140)로 출력될 수 있다. 이 경우에는 프로그램 검증 동작이 와이어드 오어링 방식(WiredOring)으로 수행될 것이다.
한편, 페이지 버퍼들(PBO~PBn-1)로부터 검출된 페일 비트들은 대응하는 각각의 출력 라인들을 통하여 페일 비트 지시기(140)로 출력될 수 있다. 이 경우에는 프로그램 검증 동작이 스캔 방식(Scan)으로 수행될 것이다.
페일 비트 지시기(140)는 프로그램 검증 동작시 페이지 버퍼들(PB0~PBn-1)로부터 출력되는 페일 비트들로부터 전체적인 페일 비트의 개수를 알아낼 것이다. 여기서 프로그램 검증 동작은, 프로그램 비트들에 대한 프로그램 검증 동작 및 금지 비트들에 대한 프로그램 검증 동작으로 구분될 것이다. 페일 비트 지시기(140)는 프로그램 비트들에 대한 프로그램 검증 동작 결과에 따른 페일 비트의 개수와 금지 비트들에 대한 프로그램 검증 동작 결과에 따른 페일 비트의 개수를 알아낼 것이다.
와이어드 오어 방식으로 프로그램 검증 동작이 수행될 경우에, 페일 비트 지시기(140)는 공유된 출력 라인에 흐르는 전류량에 따라 페일 비트의 개수를 알아낼 것이다. 스캔 방식으로 프로그램 검증 동작이 수행될 경우에, 페일 비트 지시기(140)는 출력된 페일 비트들을 직접 카운트함으로써 페일 비트의 개수를 알아낼 것이다.
도 3에 도시된 페일 비트 지시기(140)는 제어 로직(150)의 외부에 존재하지만, 본 발명의 페일 비트 지시기(140)가 반드시 여기에 국한될 필요는 없다. 본 발명의 페일 비트 지시기는 제어 로직(150)의 내부에 존재할 수도 있다.
제어 로직(150)은 비휘발성 메모리 장치(100)의 전반적인 동작(예를 들어, 프로그램/읽기/소거)을 제어할 것이다. 제어 로직(150)은 외부로부터 제공되는 제어 신호들(CTRL)에 따라 프로그램/읽기/소거 동작을 수행할 것이다.
제어 로직(150)은 증가형 펄스 프로그램 방식에 따라 프로그램 동작을 수행하도록 어드레스 디코더(120) 및 입출력 회로(130)를 제어할 것이다. 제어 로직(150)은 프로그램 동작시 루프 회수에 대응하는 전압 레벨을 갖는 프로그램 전압을 생성할 것이다. 이때 생성된 프로그램 전압은 선택된 워드라인으로 제공될 것이다. 제어 로직(150)은 프로그램 동작시 비선택된 워드라인들에 제공될 패스 전압을 생성할 것이다.
제어 로직(150)은 프로그램 동작시 페일 비트 지시기(140)에서 출력된 페일 비트의 개수에 따라 프로그램 종료를 결정할 것이다. 예를 들어, 전체 페일 비트의 개수가 사전에 결정된 값보다 크지 않을 때, 제어 로직(150)은 프로그램 루프를 종료할 것이다. 다른 방법으로, 이전 프로그램 루프에서의 페일 비트의 개수보다 현재의 프로그램 루프에서의 페일 비트의 개수가 증가될 때, 제어 로직(150)은 프로그램 루프를 종료할 것이다.
본 발명의 비휘발성 메모리 장치(100)는 프로그램 동작시 페일 비트의 개수에 따라 프로그램 루프를 종료할 것이다. 이로써, 본 발명의 비휘발성 메모리 장 치(100)는 프로그램 동작시 메모리 셀의 신뢰성을 향상시키거나 에러 비트의 개수를 줄일 수 있다.
도 4는 도 3에 도시된 페이지 버퍼에 대한 실시 예를 보여주기 위한 도면이다. 도 4를 참조하면, 페이지 버퍼(PB0)는 비트라인 풀업 회로(131), 비트라인 풀다운 회로(132), 비트라인 셋업 신호 발생회로(133), 페일 비트 체크회로(134), 비트라인 제어 트랜지스터(SHT), 비트라인 선택 트랜지스터(SLT), 금지 데이터 래치(Inhibit DL), 감지 래치(SL), 및 복수의 데이터 래치들(DL0~DLk)을 포함할 것이다. 여기서, k는 자연수이다. 본 발명의 페이지 버퍼(PB0)는 프로그램 검증 동작시 페일 비트를 검출할 것이다. 여기서 페일 비트는, 페일된 프로그램 비트 혹은 디스터브된 금지 비트이다. 즉, 페이지 버퍼(PB0)는 프로그램 검증 동작시 페일된 프로그램 비트 및 디스터브된 금지 비트를 동시에 검출할 것이다.
비트라인 풀업 회로(131)는 전원 전압(VCC)과 감지 노드(S0) 사이에 연결될 것이다. 비트라인 풀업 회로(131)는 비트라인(BL0)를 프리차지(precharge)하기 위한 전압을 감지 노드(SO)에 제공할 것이다. 비트라인 풀업 회로(131)는 전원 전압(VCC)에 연결된 드레인, 비트라인 셋업 신호(BLSTP)를 입력받는 게이트, 및 감지 노드(S0)에 연결된 소스를 갖는 피모스 트랜지스터(PUT)로 구현될 것이다.
비트라인 풀업 회로(131)는 비트라인 셋업 신호(BLSTP)에 응답하여 감지 노드(SO)로 전원 전압(VCC)을 제공할 것이다. 여기서, 비트라인 셋업 신호(BLSTP)는 비트라인 셋업 신호 발생회로(133)로부터 제공될 것이다.
비트라인 풀다운 회로(132)는 감지 노드(SO)와 접지 전원(GND, 0V) 사이에 연결될 것이다. 비트라인 풀다운 회로(132)는 비트라인(BL0)에 0V를 인가하기 위하여 감지 노드(SO)에 연결될 것이다. 비트라인 풀다운 회로(132)는 감지 노드(SO)에 연결된 드레인, 비트라인 셋업 신호(BLSTP)를 입력받는 게이트, 및 접지 전원(GND)에 연결된 소스를 갖는 엔모스 트랜지스터(PDT)로 구현될 것이다. 비트라인 풀다운 회로(132)는 비트라인 셋업 신호(BLSTP)에 응답하여 감지 노드(SO)로 0V를 제공할 것이다. 여기서, 비트라인 셋업 신호(BLSTP)는 비트라인 셋업 신호 발생회로(133)로부터 제공될 것이다.
비트라인 셋업 신호 발생회로(133)는 감지 노드(SO)의 레벨을 결정하기 위한 비트라인 셋업 신호(BLSTP)를 생성할 것이다. 한편, 도 4에 도시되지 않았지만, 비트라인 셋업 신호(BLSTP)는 제어 로직(150)으로부터 제공될 수도 있다.
특히, 비트라인 셋업 신호 발생회로(133)는 프로그램 검증 동작시 금지 데이터 래치(Inhibit DL)에 저장된 데이터 및 감지 래치(SL)에 저장된 데이터에 따라 비트라인 셋업 신호(BLSTP)을 생성할 것이다. 여기서 금지 데이터 래치(Inhibit DL)에 저장된 데이터는 금지 비트(예를 들어, 데이터 '1')이고, 감지 래치(SL)에 저장된 데이터는 프로그램 검증 동작시 대응하는 메모리 셀이 프로그램되었는지를 알려주는 데이터이다. 예를 들어, 메모리 셀이 프로그램되었다면, 감지 래치(SL)은 데이터 '1'을 저장할 것이다. 반면에, 메모리 셀이 프로그램되지 않았다면, 감지 래치(SL)은 데이터 0'을 저장할 것이다.
본 발명의 실시 예에 따른 비트라인 셋업 신호 발생회로(133)는 프로그램 검증 동작시 금지 데이터 래치(Inhibit DL) 및 감지 래치(SL)에 저장된 데이터에 따 라 프로그램 패스 혹은 페일을 나타내는 비트라인 셋업 신호(BLSTP)를 생성할 것이다. 여기서, 프로그램 패스는, 프로그램 비트가 성공적으로 프로그램된 상태이거나 금지비트가 제대로 금지된 상태를 의미한다. 또한, 프로그램 페일은, 프로그램 비트가 제대로 프로그램되지 않은 상태(즉, 페일된 프로그램 비트)이거나 금지 비트가 프로그램된 상태(즉, 디스터브된 금지 비트)를 의미한다.
아래는, 비트라인 셋업 신호 발생회로(133)에서 금지 데이터 래치(Inhibit DL)에 래치된 데이터 및 감지 래치(SL)에 래치된 데이터에 따라 생성되는 비트라인 셋업 신호(BLSTP)에 대한 실시 예를 보여주는 표1이다.
Inhibit DL |
SL |
BLSTP |
1 (Inhibit bit) |
0 (Inhibit state) |
1 (Pass) |
0 (Program bit) |
1 (Program state) |
1 (Pass) |
1 (Inhibit bit) |
1 (Program state) |
0 (Fail) |
0 (Program bit) |
0 (Inhibit state) |
0 (Fail) |
프로그램 검증 동작시 상술 된 표1에 따라, 비트라인 셋업 발생회로(133)는 비트라인 셋업 신호(BLSTP)를 생성할 것이다. 이에 생성된 비트라인 셋업 신호(BLSTP)에 응답하여 감지 노드(SO)의 레벨이 결정되고, 이렇게 결정된 감지 노드(S0)의 레벨에 따라 최종적으로 출력될 감지 래치(SL)의 데이터가 결정될 것이다.
표1를 참조하면, 페이지 버퍼(PB0)의 페일 비트 검출 동작은 다음과 같이 진행될 것이다.
금지 비트의 데이터 '1'이 입력되고 프로그램 동작시 금지 비트가 제대로 금지될 경우에, 초기의 감지 래치(SL)는 데이터 '0'을 저장할 것이다. 비트라인 셋업 발생회로(133)는 페일 비트 검출시 금지 데이터 래치(Inhibit DL)에 저장된 데이터 '1'의 값과 감지 래치(SL)에 저장된 데이터 '0'을 입력받아 데이터 '1'를 출력할 것이다. 이에 따라, 감지 노드(SO)의 레벨은 하이 레벨 상태가 되고, 최종적으로 감지 래치(SL)는 데이터 '1'를 저장할 것이다. 이후, 페일 비트 체크회로(134)에 의해 감지 래치(SL)에 최종적으로 저장된 데이터 '1'이 출력될 것이다. 여기서 감지 래치(SL)에서 출력되는 데이터 '1'는 프로그램 패스를 의미한다.
프로그램 비트의 데이터 '0'이 입력되고 프로그램 동작시 프로그램 비트가 제대로 프로그램될 경우에, 초기의 감지 래치(SL)는 데이터 '1'을 저장할 것이다. 비트라인 셋업 발생회로(133)는 페일 비트 검출시 금지 데이터 래치(Inhibit DL)에 저장된 데이터 '0'의 값과 감지 래치(SL)에 저장된 데이터 '1'을 입력받아 데이터 '1'를 출력할 것이다. 이에 따라, 감지 노드(SO)의 레벨은 하이 레벨 상태가 되고, 최종적으로 감지 래치(SL)는 데이터 '1'를 저장할 것이다. 이후, 페일 비트 체크회로(134)에 의해 감지 래치(SL)에 최종적으로 저장된 데이터 '1'이 출력될 것이다. 여기서 감지 래치(SL)에서 출력되는 데이터 '1'는 프로그램 패스를 의미한다.
금지 비트의 데이터 '1'이 입력되고 프로그램 동작시 금지 비트가 디스터브되어 프로그램된 경우에, 초기의 감지 래치(SL)는 데이터 '1'을 저장할 것이다. 비트라인 셋업 발생회로(133)는 페일 비트 검출시 금지 데이터 래치(Inhibit DL)에 저장된 데이터 '1'의 값과 감지 래치(SL)에 저장된 데이터 '1'을 입력받아 데이터 '0'를 출력할 것이다. 이에 따라, 감지 노드(SO)의 레벨은 로우 레벨 상태가 되고, 최종적으로 감지 래치(SL)는 데이터 '0'를 저장할 것이다. 이후, 페일 비트 체크회로(134)에 의해 감지 래치(SL)에 최종적으로 저장된 데이터 '0'이 출력될 것이다. 여기서 감지 래치(SL)에서 출력되는 데이터 '0'는 프로그램 페일을 의미한다.
프로그램 비트의 데이터 '0'이 입력되고 프로그램 동작시 프로그램 비트가 제대로 프로그램되지 않은 경우에, 초기의 감지 래치(SL)는 데이터 '0'을 저장할 것이다. 비트라인 셋업 발생회로(133)는 페일 비트 검출시 금지 데이터 래치(Inhibit DL)에 저장된 데이터 '0'의 값과 감지 래치(SL)에 저장된 데이터 '0'을 입력받아 데이터 '0'를 출력할 것이다. 이에 따라, 감지 노드(SO)의 레벨은 로우 레벨 상태가 되고, 최종적으로 감지 래치(SL)는 데이터 '0'를 저장할 것이다. 이후, 페일 비트 체크회로(134)에 의해 감지 래치(SL)에 최종적으로 저장된 데이터 '0'이 출력될 것이다. 여기서 감지 래치(SL)에서 출력되는 데이터 '0'는 프로그램 페일을 의미한다.
페일 비트 체크회로(134)는 감지 래치(SL)에 연결될 것이다. 페일 비트 체크회로(134)는 프로그램 검증 동작시 최종적으로 감지 래치(SL)에 저장된 데이터에 따라 프로그램 패스 혹은 페일을 검증할 것이다. 다른 말로, 페일 비트 체크회로(134)는 프로그램 검증 동작시 감지 래치(SL)에 저장된 페일 비트(예를 들어, 데이터 '0')를 페일 비트 지시기(140)로 출력할 것이다.
페일 비트 체크회로(134)는 프로그램 검증 동작시 프로그램 체크 신호(PGMC)에 응답하여 최종적으로 감지 래치(SL)에 저장된 데이터를 출력할 것이다. 이때 출력된 데이터 값은 와이어드 오어링(Wired Oring) 방식으로 페일 비트 지시기(140)로 전달될 것이다. 한편, 본 발명의 페일 비트 체크회로(134)가 페일 비트 지시기(140)로 와이어드 오어링 방식으로 감지 래치(SL)에 래치된 데이터를 출력한다고 국한될 필요는 없다.
본 발명의 페일 비트 체크회로(134)는 감지 래치(SL)에 래치된 데이터를 직접 페일 비트 지시기(140)로 전달할 수도 있다. 이때, 각 페이지 버퍼들(PB0~PBn-1)로부터 출력된 페일 비트들이 스캔 방식으로 직접 카운트될 것이다.
비트라인 제어 트랜지스터(SHT)는 비트라인 제어 신호(BLSHF)에 응답하여 감지 노드(SO)로 고전압이 전달되는 것을 방지할 것이다. 즉, 비트라인 제어 트랜지스터(SHT)는 비트라인(BL0)에 인가된 고전압으로부터 페이지 버퍼(PB0)를 보호하는데 이용될 것이다. 여기서, 비트라인 제어 신호(BLSHF)는 제어 로직(150)으로부터 제공될 것이다.
비트라인 선택 트랜지스터(SLT)는 비트라인 제어 트랜지스터(SHT)의 일단과 비트라인(BL0) 사이에 연결될 것이다. 비트라인 선택 트랜지스터(SLT)는 비트라인 선택 신호(BLSLT)에 응답하여 비트라인(BL0)에 페이지 버퍼(PB0)를 전기적으로 연결할 것이다. 여기서, 비트라인 선택 신호(BLSLT)는 제어 로직(150)으로부터 제공될 것이다.
금지 데이터 래치(Inhibit DL)는 프로그램 동작시 입력되는 프로그램 비트(예를 들어, 데이터 '0') 혹은 금지 비트(예를 들어, 데이터 '1')를 저장할 것이다. 이렇게 금지 데이터 래치(Inhibit DL)에 저장된 데이터는 프로그램 검증 동작시 페일 비트를 검출하는데 이용될 것이다.
감지 래치(SL)는 비트라인(BL0)의 전압의 레벨을 감지하여 비트라인(BL0)에 연결된 메모리 셀의 데이터를 저장하거나, 프로그램 혹은 읽기 동작시 데이터 래치 들(DL0~DLk) 중 어느 하나에 래치된 데이터를 저장할 수 있다. 데이터 래치들(DL0~DLk)은 프로그램 동작시 입력된 데이터를 저장하거나, 감지 래치(SL)에 래치된 데이터를 저장할 수 있다.
한편, 나머지 페이지 버퍼들(PB1~PBn-1)도, 도 4에 도시된 페이지 버퍼(PB0)와 동일하게 구현될 것이다.
도 4에서는 페이지 버퍼(PB0)에 하나의 금지 데이터 래치(Inhibit DL)가 포함되었다. 그러나 본 발명의 페이지 버퍼가 반드시 여기에 국한될 필요는 없다. 본 발명의 페이지 버퍼는 금지 비트를 저장하기 위한 적어도 하나의 금지 데이터 래치를 포함할 것이다. 예를 들어, 프로그램 동작시 복수의 금지 비트들을 설정할 경우, 복수의 금지 비트들을 저장하기 위한 복수의 금지 데이터 래치들이 필요할 것이다. 참고로, 본 발명의 상세한 설명에서는 소거된(erased) 비트들을 금지 비트로 가정하여 설명하고 있다.
본 발명의 실시 예에 따른 페이지 버퍼(PB0)는 LSB(Least Significant Bit) 프로그램 동작 혹은 MSB(Most Significant Bit) 프로그램 동작시에도 적용가능하다. LSB 프로그램 동작시, 소거 상태에 대응하는 비트 데이터가 금지 데이터 래치(Inhibit DL)에 저장될 것이다. LSB 프로그램 검증 동작시, 페이지 버퍼(PB0)는 금지 데이터 래치(Inhibit DL)에 저장된 데이터 및 감지 래치(SL)에 저장된 데이터를 이용하여 페일 비트를 출력될 것이다.
MSB 프로그램 동작시, 페이지 버퍼(PB0)는 LSB 읽기 동작시 읽혀진 데이터 및 입력된 데이터의 조합으로 프로그램 금지 상태에 대응하는 금지 비트(예를 들 어, 데이터 '1')를 생성하고, 생성된 금지 비트를 금지 데이터 래치(Inhibit DL)에 저장할 것이다. MSB 프로그램 검증 동작시, 페이지 버퍼(PB0)는 금지 데이터 래치(Inhibit DL)에 저장된 데이터 및 감지 래치(SL)에 저장된 데이터를 이용하여 페일 비트를 출력할 것이다.
도 5는 도 4에 도시된 페이지 버퍼가 프로그램 검증 동작시 페일 비트를 검출하는 방법을 보여주기 위한 도면이다. 도 4 및 도 5를 참조하면, 페일 비트 검출 방법은 다음과 같이 진행될 것이다. 아래에서는 설명의 편의를 위하여, 금지 비트에 대한 프로그램 검증 방법에 한정하여 설명하도록 하겠다.
프로그램 동작시 금지 비트가 유지되기 위해서 감지 노드(SO)의 레벨은 하이레벨 상태를 유지해야 할 것이다. 감지 노드(SO)의 레벨이 하이 레벨 상태가 되도록 금지 데이터 래치(Inhibit DL)에 저장된 데이터에 따라 비트라인 셋업 신호(BLSTP)가 생성될 것이다. 이때 감지 래치(SL)는 감지 노드(S0)의 하이레벨의 상태를 감지할 것이다. 페일 비트 체크회로(134)는 프로그램 검증 신호(PGMC)에 응답하여 감지 래치(SL)에 감지된 데이터 '1' 상태를 출력할 것이다. 여기서 출력되는 데이터 '1'의 상태는 프로그램 동작이 패스되었다는 의미이다.
본 발명의 실시 예에 따른 금지 데이터 래치(Inhibit DL)는 프로그램 검증 동작시 감지 노드(SO)의 레벨이 하이레벨 상태이더라도 무조건 프로그램 동작이 패스되었다고 출력되는 것을 방지할 수 있다. 예를 들어, 감지 노드(SO)의 레벨이 하이레벨 상태이고, 금지 데이터 래치(Inhibit DL)에 래치된 데이터가 '1'일 때, 금지 비트(예를 들어, 데이터 '1')가 디스터브된 것이다. 즉, 이러한 경우는 프로그 램 동작 중에 금지 비트가 프로그램된 것이다. 이러한 경우에, 비트라인 셋업 신호 발생회로(133)는 금지 데이터 래치(Inhibit DL)에 래치된 데이터를 이용하여 감지 노드(SO)의 레벨을 하이레벨 상태에서 로우레벨 상태로 셋팅시키는 비트라인 셋업 신호(BLSTP)을 생성할 것이다.
이렇게 생성된 비트라인 셋업 신호(BLSTP)에 응답하여 감지 노드(SO)의 레벨은 로우레벨 상태가 될 것이다. 감지 래치(SL)는 로우레벨 상태의 감지 노드(SO)를 감지하여 데이터 '0'를 저장할 것이다. 이후, 페일 비트 체크회로(134)는 프로그램 검증 신호(PGMC)에 응답하여 감지 래치(SL)에 저장된 데이터 '0'를 출력 라인(WRDR)으로 출력할 것이다. 여기서 출력되는 데이터 '0'는 프로그램 동작이 페일되었다는 의미이다.
상술 된 바와 같이, 본 발명의 페이지 버퍼는 프로그램 검증 동작시 체크 검증기(134)로부터 출력되는 데이터에 따라 프로그램 패스 혹은 페일을 검출할 것이다.
도 6은 도 3에 도시된 비휘발성 메모리 장치에서 프로그램 종료 시점을 결정하는 방법을 보여주기 위한 제 1 실시 예이다. 도 6을 참조하면, 루프 (i-1)에서 프로그램 검증 동작시 20개의 페일 비트들이 검출되고, 그 다음 루프 (i)에서 프로그램 검증 동작시 10개의 페일 비트들이 검출되고, 그 다음 루프 (i+1)에서 프로그램 검증 동작시 11개의 페일 비트들이 검출될 때, 프로그램 동작은 종료될 것이다.
제어 로직(도 3을 참조, 150)은 이전 루프의 페일 비트의 개수를 저장하고, 저장된 이전 루프의 페일 비트의 개수와 현재 루프의 페일 비트의 개수와 비교하 고, 비교결과로써 페일 비트의 개수가 증가될 때 프로그램 루프를 종료할 것이다. 한편, 프로그램 종료시 페일 비트의 개수가 에러 정정 코드가 정정할 수 있는 최대값 이상일 때, 프로그램 동작은 페일 처리될 것이다.
비휘발성 메모리 장치(100)는 루프 증가시 페일 비트 개수의 변동 상태에 따라 프로그램 동작을 종료할 것이다. 예를 들어, 페일 비트 개수가 감소하다가 처음으로 증가하는 루프에서, 프로그램 루프가 종료될 것이다.
도 6에서는 페일 비트 개수의 변동 상태를 페이지 단위로 모니터링하였다. 그러나 본 발명이 반드시 여기에 국한될 필요는 없다. 본 발명의 비휘발성 메모리 장치(100)는 적어도 하나의 섹터 단위로 페일 비트 개수의 변동 상태를 모니터링할 수 있다. 이때 적어도 하나의 섹터 단위로 에러 정정이 가능할 것이다. 이때 적어도 하나의 섹터에 대응하는 에러 정정 코드값은 페이지의 스페어 영역에 저장될 것이다.
도 7은 도 3에 도시된 비휘발성 메모리 장치에서 프로그램 종료 시점을 결정하는 방법을 보여주기 위한 제 2 실시 예이다. 도 7을 참조하면, 하나의 페이지는 8개의 섹터들(STR1~STR8)로 구분될 것이다.
페일 비트 지시기(도 3 참조, 140)는 섹터 단위로 페일 비트의 개수를 검출할 것이다. 검출된 섹터들(STR1~STR8)로부터 검출된 페일 비트의 개수는 제어 로직(도 3 참조, 150)에 전송될 것이다. 제어 로직(150)은 섹터들(STR1~STR8)의 페일 비트 개수들 중에서 가장 큰 페일 비트 개수를 저장할 것이다.
예를 들어, 도 7에 도시된 바와 같이, 루프 (i-1)에서는 제 3 섹터(STR3)의 페일 비트 개수(20b)가 저장되고, 루프 (i)에서는 제 6 섹터(STR6)의 페일 비트 개수(10b)가 저장되고, 루프 (i+1)에서는 제 6 섹터(STR6)의 페일 비트 개수(11b)가 저장될 것이다. 여기서, 제 6 섹터(STR6)는 최악의 페일 비트 섹터(Worst fail bit sector)라고 부르겠다. 최악의 페일 비트 섹터는 섹터들 중에서 가장 많은 페일 비트의 개수를 갖고, 이전 페일 비트의 개수보다 증가되는 페일 비트의 개수를 갖는 섹터를 의미한다.
제어 로직(150)은 이렇게 저장된 페일 비트의 개수에 따라 프로그램 루프의 종료를 결정할 것이다. 예를 들어, 최악의 페일 비트 섹터(STR6)의 페일 비트 개수가 감소하다가 증가할 때, 제어 로직(150)은 프로그램 루프 동작을 종료시킬 것이다.
도 8은 도 3에 도시된 비휘발성 메모리 장치의 프로그램 방법에 대한 제 1 실시 예를 보여주는 흐름도이다. 도 3, 도 4, 및 도 8을 참조하면, 비휘발성 메모리 장치의 프로그램 방법은 다음과 같이 진행될 것이다.
프로그램 동작시 프로그램될 데이터가 입출력 회로(도 3 참조, 130)의 각 페이지 버퍼들(PB0~PBn-1)에 로딩 될 것이다(S110). 또한, 제어 로직(150)은 프로그램 동작에 필요한 바이어스 전압들을 생성할 것이다. 전압 발생기 및 제어 로직(150)은 프로그램 루프를 진행시킬 것이다.
제어 로직(150)은 페이지 버퍼들(PB0~PBn-1)에 로딩된 데이터에 따라 비트라인들(BL0~BLn-1)을 셋업시킬 것이다. 예를 들어, 접지전압(OV)은 프로그램 비트가 입력된 페이지 버퍼들에 연결된 비트라인들로는 인가될 것이고, 프리차지 전압(전 원전압)은 금지 비트가 입력된 페이지 버퍼들에 연결된 비트라인들로 인가될 것이다.
이후, 비선택된 워드라인들로 패스 전압이 인가되고, 선택된 워드라인으로 프로그램 전압(Vpgm_i)이 인가될 것이다(S120). 여기서 프로그램 전압(Vpgm_i)의 레벨은 루프 회수(i)가 증가됨에 따라 소정의 값만큼 증가될 것이다. 프로그램 전압(Vpgm_i)이 인가되기 전에 선택된 워드라인으로 소정의 시간 동안 패스 전압이 인가될 수 있다. 이후, 프로그램 리커버리 동작이 수행될 것이다. 이러한 프로그램 리커버리 동작에서는, 워드라인들(WL0~WLm-1) 및 스트링 선택라인(SSL)에 인가된 바이어스 전압들이 디스챠지되고, 비트라인들(BL0~BLn-1)에 인가된 전압들이 디스챠지될 것이다.
이후, 프로그램이 제대로 수행되었는지를 판별하기 위한 프로그램 검증 동작이 수행될 것이다(S130). 여기서 프로그램 검증 동작은 검증 읽기 전압(MLC의 경우, 복수의 검증 읽기 전압들)로 프로그램될 셀들에 저장된 데이터를 판별할 것이다. 페일 비트 체크회로(도 4 참조, 134)는 프로그램 검증 신호(PGMC)에 응답하여 감지 래치(SL)에 래치된 데이터를 출력 라인(WRDR)으로 출력할 것이다.
페일 비트 지시기(도 3 참조, 140)는 각 페이지 버퍼들(PB0~PBn-1)로부터 출력 라인(WRDR)을 통하여 출력되는 데이터를 감지하여 페일 비트의 개수를 검출할 것이다. 예를 들어, 페일 비트 지시기(140)는 출력 라인(WRDR)에 흐르는 전류량을 감지함으로써 페일 비트의 개수를 검출할 수 있다. 혹은, 페일 비트 지시기(140)는 스캔 방식으로 출력된 페일 비트들을 직접 카운트함으로써 페일 비트의 개수를 알 아낼 수 있다.
이후 제어 로직(도 3참조, 150)은 최악의 페일 비트 섹터가 존재하는지를 판별할 것이다(S150). 여기서 최악의 페일 비트 섹터는 현재 루프에서 복수의 섹터들 중에서 가장 많은 페일 비트 개수를 가지며, 이전 루프에서 발생된 페일 비트의 최대값보다 큰 페일 비트 값을 갖는 섹터이다. 최악의 페일 비트 섹터가 존재하면, 제어 로직(150)은 최악의 페일 비트 섹터에 존재하는 페일 비트 값이 에러 정정 가능한 지를 판별할 것이다(S155). 만약, 최악의 페일 비트 섹터에 존재하는 페일 비트 값이 에러 정정 가능하다면, 프로그램 동작은 종료될 것이다. 만약, 에러 정정 코드에 정정가능하지 않다면, 프로그램 동작은 페일 처리될 것이다.
만약, 최악의 페일 비트 섹터가 존재하지 않으면, 루프 회수(i)가 최대값인지 판별할 것이다(S160). 만약, 루프 회수(i)가 최대이면, 프로그램 동작은 실패로 처리될 것이다. 반면에, 루프 회수(i)가 최대가 아니라면, 루프 회수(i)가 1만큼 증가되고, 그 다음 루프가 진행될 것이다(S170).
도 9는 도 3에 도시된 비휘발성 메모리 장치의 프로그램 종료 시점을 결정하는 방법을 보여주기 위한 제 3 실시 예이다. 도 9를 참조하면, 루프 (i-1)에서 프로그램 검증 동작시 15개의 페일 비트들이 검출되고, 그 다음 루프 (i)에서 프로그램 검증 동작시 10개의 페일 비트들이 검출될 때, 프로그램 동작은 종료될 것이다. 여기서 루프 (i)에서 검출된 10개의 페일 비트 개수는 사전에 결정된 값보다 크지 않은 값이다. 사전에 결정된 값은 에러 정정 코드에서 정정 가능한 최대값이 될 것이다.
본 발명의 실시 예에 따른 비휘발성 메모리 장치(100)는 페일 비트의 개수가 사전에 결정된 값보다 크지 않을 때 프로그램 동작을 종료할 것이다.
도 9에서는 페일 비트 개수를 페이지 단위로 모니터링하였다. 그러나 본 발명이 반드시 여기에 국한될 필요는 없다. 본 발명의 비휘발성 메모리 장치(100)는 적어도 하나의 섹터 단위로 페일 비트 개수를 모니터링할 수 있다. 이때 적어도 하나의 섹터 단위로 에러 정정이 가능할 것이다. 이때 적어도 하나의 섹터에 대응하는 에러 정정 코드값은 페이지의 스페어 영역에 저장될 것이다.
도 10은 도 3에 도시된 비휘발성 메모리 장치의 프로그램 종료 시점을 결정하는 방법을 보여주기 위한 제 4 실시 예이다. 도 10을 참조하면, 하나의 페이지는 8개의 섹터들(STR1~STR8)로 구분될 것이다.
페일 비트 지시기(도 3참조, 140)는 섹터 단위로 페일 비트의 개수를 검출할 것이다. 검출된 섹터들(STR1~STR8)로부터 검출된 페일 비트의 개수는 제어 로직(도 3 참조, 150)에 전송될 것이다.
제어 로직(150)은 섹터들(STR1~STR8) 중에서 가장 큰 페일 비트의 개수를 갖는 섹터를 알아내고, 대응하는 최대 페일 비트의 개수를 저장할 것이다. 이후, 제어 로직(150)은 이렇게 저장된 최대 페일 비트의 개수가 사전에 결정된 값보다 크지 않은 지를 판별할 것이다. 페일 비트의 개수가 사전에 결정된 값보다 크면, 제어 로직(150)은 다음 프로그램 루프를 진행할 것이다. 예를 들어, 도 10에 도시된 바와 같이, 루프 (i-1)에서 최대 페일 비트의 개수를 갖는 제 3 섹터(STR3)의 페일 비트의 개수는 20이다. 이때, 페일 비트의 개수(20)는 사전에 결정된 값보다 크기 때문에, 제어 로직(150)은 루프 (i)를 진행시킬 것이다.
반면에, 페일 비트의 개수가 사전에 결정된 값보다 크지 않으면, 제어 로직(150)은 프로그램 루프를 종료할 것이다. 예를 들어, 도 10에 도시된 바와 같이, 루프 (i)에서 최대 페일 비트의 개수를 갖는 제 6 섹터(STR6)의 페일 비트의 개수는 10이다. 이때, 페일 비트의 개수(10)는 사전에 결정된 값보다 크지 않기 때문에, 제어 로직(150)은 프로그램 루프를 종료할 것이다.
본 발명의 실시 예에 따른 비휘발성 메모리 장치(100)는 최대 페일 비트의 개수를 갖는 섹터의 페일 비트의 개수가 사전에 결정된 값보다 크지 않을 때 프로그램 루프를 종료할 것이다.
도 11은 도 3에 도시된 비휘발성 메모리 장치의 프로그램 방법에 대한 제 2 실시 예를 보여주는 흐름도이다. 도 3, 도 10, 및 도 11을 참조하면, 비휘발성 메모리 장치의 프로그램 방법은 다음과 같이 진행될 것이다.
프로그램 동작시 프로그램될 데이터가 입출력 회로(도 3 참조, 130)의 각 페이지 버퍼들(PB0~PBn-1)에 로딩 될 것이다(S210). 또한, 제어 로직(도 3 참조, 150)은 프로그램 동작에 필요한 바이어스 전압들을 생성할 것이다. 제어 로직(150)은 프로그램 루프를 진행시킬 것이다.
제어 로직(150)은 페이지 버퍼들(PB0~PBn-1)에 로딩된 데이터에 따라 비트라인들(BL0~BLn-1)을 셋업시킬 것이다. 예를 들어, 접지전압(OV)은 프로그램 비트(예를 들어, 데이터 '1')가 입력된 페이지 버퍼들에 연결된 비트라인들로는 인가될 것이고, 프리차지 전압(전원전압)은 금지 비트(예를 들어, 데이터 '0')가 입력된 페 이지 버퍼들에 연결된 비트라인들로 인가될 것이다.
이후, 비선택된 워드라인들로 패스 전압이 인가되고, 선택된 워드라인으로 프로그램 전압(Vpgm_i)이 인가될 것이다(S220). 여기서 프로그램 전압(Vpgm_i)의 레벨은 루프 회수(i)가 증가됨에 따라 소정의 값만큼 증가될 것이다. 프로그램 전압(Vpgm_i)이 인가되기 전에 선택된 워드라인으로 소정의 시간 동안 패스 전압이 인가될 수 있다. 이후, 프로그램 리커버리 동작이 수행될 것이다. 이러한 프로그램 리커버리 동작에서는, 워드라인들(WL0~WLm-1) 및 스트링 선택라인(SSL)에 인가된 바이어스 전압들이 디스챠지되고, 비트라인들(BL0~BLn-1)에 인가된 전압들이 디스챠지될 것이다.
이후, 프로그램이 제대로 수행되었는지를 판별하기 위한 프로그램 검증 동작이 수행될 것이다(S230). 여기서 프로그램 검증 동작은 검증 읽기 전압(MLC의 경우, 복수의 검증 읽기 전압들)로 프로그램될 셀들에 저장된 데이터를 판별할 것이다. 페일 비트 체크회로(도 4 참조, 134)는 프로그램 검증 신호(PGMC)에 응답하여 감지 래치(SL)에 래치된 데이터를 출력 라인(WRDR)으로 출력할 것이다. 페일 비트 지시기(도 3 참조, 140)는 각 페이지 버퍼들(PB0~PBn-1)로부터 출력 라인(WRDR)을 통하여 출력되는 데이터를 감지하여 페일 비트의 개수를 검출할 것이다.
이후에 제어 로직(150)은 최악의 페일 비트 섹터가 존재하는지를 판별할 것이다(S250). 여기서 현재 루프에서 복수의 섹터들 중에서 가장 많은 페일 비트 개수를 갖는 섹터의 페일 비트의 개수가 사전에 결정된 값보다 동일하거나 작은지 판별할 것이다(S250).
만약, 복수의 섹터들 중에서 가장 많은 페일 비트 개수를 갖는 섹터의 페일 비트의 개수가 사전에 결정된 값보다 동일하거나 작다면, 제어 로직(150)은 프로그램 루프를 종료할 것이다.
반면에, 복수의 섹터들 중에서 가장 많은 페일 비트를 개수를 갖는 섹터의 페일 비트의 개수가 사전에 결정된 값보다 크다면, 루프 회수(i)가 최대값인지 판별할 것이다(S260). 만약, 루프 회수(i)가 최대이면, 프로그램 동작은 실패로 처리될 것이다. 반면에, 루프 회수(i)가 최대가 아니라면, 루프 회수(i)가 1만큼 증가되고, 그 다음 루프가 진행될 것이다(S270).
도 3 내지 도 11에서 상술 된 비휘발성 메모리 장치(100)는 프로그램 검증 동작에 사용될 금지 비트들을 페이지 버퍼들에 저장하였으나, 본 발명이 반드시 여기에 국한될 필요는 없다. 본 발명의 프로그램 검증 동작에 사용될 금지 비트들은 페이지 버퍼 외에 다른 어떤 장치에도 저장 가능하다. 예를 들어, 비휘발성 메모리 장치는 프로그램 검증 동작에 사용될 금지 비트들을 임시의 메모리 블록에 저장할 수 있다.
도 12는 본 발명의 실시 예에 따른 비휘발성 메모리 장치의 제 2 실시 예를 보여주는 블록도이다. 도 12를 참조하면, 비휘발성 메모리 장치(200)는 메모리 셀 어레이(210), 어드레스 디코더(220), 입출력 회로(230), 페일 비트 지시기(240), 및 제어 로직(250)을 포함할 것이다.
메모리 셀 어레이(210)는 사용자 데이터 블록(212) 및 임시 블록(214)을 포함할 것이다. 여기서 사용자 데이터 블록(212) 및 임시 블록(214)은, 도 3에 도시 된 메모리 블록과 동일하게 구현될 것이다. 임시 블록(214)은 프로그램 동작시 금지 비트에 대한 정보를 저장하는 데이터 공간이다. 여기서 금지 비트에 대한 정보는 금지 비트의 위치 정보일 수 있다.
한편, 임시 블록(214)이 모두 프로그램되면, 현재의 임시 블록(214)은 소거되고, 다른 사용자 데이터 블록(212) 중에서 어느 하나의 블록이 새로운 임시 블록(214)으로 변경될 것이다. 이때 소거되는 이전의 임시 블록은 새로운 사용자 데이터 블록(212)에 포함될 수 있다. 이러한 임시 블록(214)에 대한 맵핑 관리는 메모리 제어기(도시되지 않음)에서 수행될 것이다.
어드레스 디코더(220)는 프로그램 동작 혹은 읽기 동작시 어드레스(ADDR)를 입력받고, 입력된 어드레스(ADDR)에 따라 어느 하나의 워드라인을 선택할 것이다. 여기서 선택된 워드라인에는 프로그램 동작이 수행되거나 혹은 읽기 동작이 수행될 메모리 셀들이 연결될 것이다.
입출력 회로(230)는 복수의 비트라인들(BL0~BLn-1)을 통하여 메모리 셀 어레이(210)에 연결될 것이다. 입출력 회로(230)는 복수의 페이지 버퍼들(PB0~PBn-1)을 포함할 것이다. 복수의 페이지 버퍼들(PB0~PBn-1)은 선택된 워드라인에 연결된 메모리 셀들에 프로그램될 데이터를 임시로 저장하거나, 혹은 선택된 워드라인에 연결된 메모리 셀들로부터 읽은 데이터를 임시로 저장할 것이다.
페일 비트 지시기(240)는 프로그램 검증 동작시 전체적인 페일 비트의 개수를 알아낼 것이다. 여기서 프로그램 검증 동작은, 프로그램 비트들에 대한 프로그램 검증 동작 및 금지 비트들에 대한 프로그램 검증 동작으로 구분될 것이다. 페일 비트 지시기(240)는 프로그램 비트들에 대한 프로그램 검증 동작 결과에 따른 페일 비트의 개수와 금지 비트들에 대한 프로그램 검증 동작 결과에 따른 페일 비트의 개수를 알아낼 것이다. 여기서 금지 비트들에 대한 프로그램 검증 동작은 임시 블록(214)으로부터 읽어온 금지 비트들에 따라 페이지 버퍼들(PB0~PBn-1)의 감지 래치들을 제어함으로써 수행될 것이다.
제어 로직(250)은 비휘발성 메모리 장치(200)의 전반적인 동작(예를 들어, 프로그램/읽기/소거)을 제어할 것이다. 제어 로직(250)은 외부로부터 제공되는 제어 신호들(CTRL)에 따라 프로그램/읽기/소거 동작을 수행할 것이다.
제어 로직(250)은 증가형 펄스 프로그램 방식에 따라 프로그램 동작을 수행하도록 어드레스 디코더(220) 및 입출력 회로(230)를 제어할 것이다. 제어 로직(250)은 프로그램 동작시 루프 회수에 대응하는 전압 레벨을 갖는 프로그램 전압을 생성할 것이다. 이때 생성된 프로그램 전압은 선택된 워드라인으로 제공될 것이다. 제어 로직(250)은 프로그램 동작시 비선택된 워드라인들에 제공될 패스 전압을 생성할 것이다.
제어 로직(250)은 프로그램 동작시 페일 비트 지시기(240)에서 출력된 전체 페일 비트의 개수에 따라 프로그램 종료를 결정할 것이다. 예를 들어, 전체 페일 비트의 개수가 사전에 결정된 값보다 크지 않을 때, 제어 로직(250)은 프로그램 루프를 종료할 것이다. 또한, 이전 프로그램 루프에서의 전체 페일 비트의 개수보다 현재의 프로그램 루프에서의 전체 페일 비트의 개수가 증가될 때, 제어 로직(250)은 프로그램 루프를 종료할 것이다.
도 13은 도 12에 도시된 비휘발성 메모리 장치의 프로그램 방법에 대한 제 1 실시 예를 보여주는 흐름도이다. 도 12 및 도 13을 참조하면, 비휘발성 메모리 장치의 프로그램 방법은 다음과 같이 진행될 것이다.
프로그램 동작시 프로그램될 데이터가 입출력 회로(도 12 참조, 230)의 각 페이지 버퍼들(PB0~PBn-1)에 로딩 되고, 금지 비트 정보가 임시 블록(도 12 참조, 214)으로 저장될 것이다(S210). 또한, 제어 로직(도 12 참조, 250)은 프로그램 동작에 필요한 바이어스 전압들을 생성할 것이다. 제어 로직(250)은 프로그램 루프를 진행시킬 것이다.
제어 로직(350)은 페이지 버퍼들(PB0~PBn-1)에 로딩된 데이터에 따라 비트라인들(BL0~BLn-1)을 셋업시킬 것이다. 이후, 비선택된 워드라인들로 패스 전압이 인가되고, 선택된 워드라인으로 프로그램 전압(Vpgm_i)이 인가될 것이다(S320). 여기서 프로그램 전압(Vpgm_i)의 레벨은 루프 회수(i)가 증가됨에 따라 소정의 값만큼 증가될 것이다. 프로그램 전압(Vpgm_i)이 인가되기 전에 선택된 워드라인으로 소정의 시간 동안 패스 전압이 인가될 수 있다. 이후, 프로그램 리커버리 동작이 수행될 것이다. 이러한 프로그램 리커버리 동작에서는, 워드라인들(WL0~WLm-1) 및 스트링 선택라인(SSL)에 인가된 바이어스 전압들이 디스챠지되고, 비트라인들(BL0~BLn-1)에 인가된 전압들이 디스챠지될 것이다.
이후, 프로그램이 제대로 수행되었는지를 판별하기 위한 프로그램 검증 동작이 수행될 것이다(S330). 여기서 프로그램 검증 동작은 검증 읽기 전압(MLC의 경우, 복수의 검증 읽기 전압들)로 프로그램될 셀들에 저장된 데이터를 판별할 것이 다.
이후, 임시 블록(214)으로부터 금지 비트 정보가 읽혀질 것이다(S340). 여기서 읽혀진 정보는 페이지 버퍼들(도 12 참조, PB0~PBn-1)의 내부에 있는 데이터 래치에 저장될 것이다.
각 페이지 버퍼들(PB0~PBn-1)은 검증 읽기 동작으로 읽혀진 데이터 및 임시 블록(214)으로부터 읽혀진 데이터를 이용하여 페일 비트를 검출할 것이다. 각 페이지 버퍼들(PB0~PBn-1)은 이렇게 검출된 페일 비트들을 출력할 것이다. 페일 비트 지시기(도 12참조, 250)는 이렇게 검출된 페일 비트들을 통하여 전체적인 페일 비트의 개수를 알아낼 것이다. 여기서 페일 비트의 개수는 섹터 단위로 알려질 것이다(S350).
이후에 제어 로직(250)은 페일 비트 지시기(240)로부터 전달된 섹터들의 페일 비트의 개수들로부터 현재 루프에서 최악의 페일 비트 섹터가 존재하는 지를 판별할 것이다(S360). 여기서 최악의 페일 비트 섹터는 현재 루프에서 복수의 섹터들 중에서 가장 많은 페일 비트 개수를 가지며, 이전 루프에서 발생된 페일 비트의 최대값보다 큰 페일 비트 값을 갖는 섹터이다. 최악의 페일 비트 섹터가 존재하면, 제어 로직(250)은 최악의 페일 비트 섹터에 존재하는 페일 비트 값이 에러 정정 가능한 지를 판별할 것이다(S365). 만약, 최악의 페일 비트 섹터에 존재하는 페일 비트 값이 에러 정정 가능하다면, 프로그램 동작은 종료될 것이다. 만약, 에러 정정 코드에 정정가능하지 않다면, 프로그램 동작은 페일 처리될 것이다.
만약, 최악의 페일 비트 섹터가 존재하지 않으면, 루프 회수(i)가 최대값인 지 판별할 것이다(S370). 만약, 루프 회수(i)가 최대이면, 프로그램 동작은 실패로 처리될 것이다. 반면에, 루프 회수(i)가 최대가 아니라면, 루프 회수(i)가 1만큼 증가되고, 그 다음 루프가 진행될 것이다(S380).
도 14는 도 12에 도시된 비휘발성 메모리 장치의 프로그램 방법에 대한 제 2 실시 예를 보여주는 흐름도이다. 도 12 및 도 14를 참조하면, 비휘발성 메모리 장치의 프로그램 방법은 다음과 같이 진행될 것이다.
프로그램 동작시 프로그램될 데이터가 입출력 회로(도 12 참조, 230)의 각 페이지 버퍼들(PB0~PBn-1)에 로딩 되고, 금지 비트 정보가 임시 블록(도 12 참조, 214)으로 저장될 것이다(S410). 또한, 제어 로직(도 12 참조, 250)은 프로그램 동작에 필요한 바이어스 전압들을 생성할 것이다. 제어 로직(250)은 프로그램 루프를 진행시킬 것이다.
제어 로직(350)은 페이지 버퍼들(PB0~PBn-1)에 로딩된 데이터에 따라 비트라인들(BL0~BLn-1)을 셋업시킬 것이다. 이후, 비선택된 워드라인들로 패스 전압이 인가되고, 선택된 워드라인으로 프로그램 전압(Vpgm_i)이 인가될 것이다(S420). 여기서 프로그램 전압(Vpgm_i)의 레벨은 루프 회수(i)가 증가됨에 따라 소정의 값만큼 증가될 것이다. 프로그램 전압(Vpgm_i)이 인가되기 전에 선택된 워드라인으로 소정의 시간 동안 패스 전압이 인가될 수 있다. 이후, 프로그램 리커버리 동작이 수행될 것이다. 이러한 프로그램 리커버리 동작에서는, 워드라인들(WL0~WLm-1) 및 스트링 선택라인(SSL)에 인가된 바이어스 전압들이 디스챠지되고, 비트라인들(BL0~BLn-1)에 인가된 전압들이 디스챠지될 것이다.
이후, 프로그램이 제대로 수행되었는지를 판별하기 위한 프로그램 검증 동작이 수행될 것이다(S430). 여기서 프로그램 검증 동작은 검증 읽기 전압(MLC의 경우, 복수의 검증 읽기 전압들)로 프로그램될 셀들에 저장된 데이터를 판별할 것이다.
이후, 임시 블록(214)으로부터 금지 비트 정보가 읽혀질 것이다(S440). 여기서 읽혀진 정보는 페이지 버퍼들(도 12 참조, PB0~PBn-1)의 내부에 있는 데이터 래치에 저장될 것이다.
각 페이지 버퍼들(PB0~PBn-1)은 검증 읽기 동작으로 읽혀진 데이터 및 임시 블록(214)으로부터 읽혀진 데이터를 이용하여 페일 비트를 검출할 것이다. 각 페이지 버퍼들(PB0~PBn-1)은 이렇게 검출된 페일 비트들을 출력할 것이다. 페일 비트 지시기(도 12참조, 250)는 이렇게 검출된 페일 비트들을 통하여 전체적인 페일 비트의 개수를 알아낼 것이다. 여기서 페일 비트의 개수는 섹터 단위로 알려질 것이다(S450).
이후에 제어 로직(250)은 현재 루프에서 복수의 섹터들 중에서 가장 많은 페일 비트 개수를 갖는 섹터의 페일 비트의 개수가 사전에 결정된 값보다 동일하거나 작은지 판별할 것이다(S460).
만약, 복수의 섹터들 중에서 가장 많은 페일 비트 개수를 갖는 섹터의 페일 비트의 개수가 사전에 결정된 값보다 동일하거나 작다면, 제어 로직(250)은 프로그램 루프를 종료할 것이다.
반면에, 복수의 섹터들 중에서 가장 많은 페일 비트를 개수를 갖는 섹터의 페일 비트의 개수가 사전에 결정된 값보다 크다면, 루프 회수(i)가 최대값인지 판별할 것이다(S470). 만약, 루프 회수(i)가 최대이면, 프로그램 동작은 실패로 처리될 것이다. 반면에, 루프 회수(i)가 최대가 아니라면, 루프 회수(i)가 1만큼 증가되고, 그 다음 루프가 진행될 것이다(S480).
본 발명의 사상에 따른 비휘발성 메모리 장치의 프로그램 방법은 프로그램 조건에 따라 프로그램 종료를 결정하기 위한 기준 값을 변경할 수 있다. 여기서, 프로그램 조건에는 프로그램 동작이 수행될 프로그램/소거 회수(P/E cycle count), 프로그램 루프 회수 등이 될 수 있다. 예를 들어, 프로그램/소거 회수가 낮은 메모리 블록에 프로그램 동작을 수행할 때에는 기준값이 낮게 설정되고, 반면에 프로그램/소거 회수가 높은 메모리 블록에 프로그램 동작을 수행할 때에는 기준값이 높게 설정될 것이다. 한편, 기준값은 비휘발성 메모리 장치를 제어하는 메모리 제어기로부터 제공될 것이다.
도 15는 본 발명의 실시 예에 따른 비휘발성 메모리 장치에 대한 제 3 실시 예를 보여주는 도면이다. 도 15를 참조하면, 비휘발성 메모리 장치(300)는 메모리 셀 어레이(310), 어드레스 디코더(320), 입출력 회로(330), 페일 비트 지시기(340), 및 제어 로직(350)을 포함할 것이다.
메모리 셀 어레이(310)는, 도 1에 도시된 메모리 셀 어레이(110)가 동일하게 구현될 것이다. 어드레스 디코더(320)는, 도 1에 도시된 어드레스 디코더(220)와 동일하게 구현될 것이다. 입출력 회로(330)는, 도 1에 도시된 입출력 회로(130)와 동일하게 구현될 것이다. 페일 비트 지시기(340)는, 도 1에 도시된 페일 비트 지시 기(140)와 동일하게 구현될 것이다.
제어 로직(350)은 비휘발성 메모리 장치(300)의 전반적인 동작(예를 들어, 프로그램/읽기/소거)을 제어할 것이다. 제어 로직(350)은 증가형 펄스 프로그램 방식에 따라 프로그램 동작을 수행하도록 어드레스 디코더(220) 및 입출력 회로(230)를 제어할 것이다. 제어 로직(350)은 프로그램 동작시 루프 회수에 대응하는 전압 레벨을 갖는 프로그램 전압을 생성할 것이다. 이때 생성된 프로그램 전압은 선택된 워드라인으로 제공될 것이다. 제어 로직(350)은 프로그램 동작시 비선택된 워드라인들에 제공될 패스 전압을 생성할 것이다.
제어 로직(350)은 프로그램 동작시 페일 비트 지시기(240)에서 출력된 페일 비트의 개수에 따라 프로그램 종료를 결정할 것이다. 예를 들어, 전체 페일 비트의 개수가 기준값보다 크지 않을 때, 제어 로직(350)은 프로그램 루프를 종료할 것이다. 여기서, 기준값은 기준값 레지스터(352)에 저장된 값이다. 또한, 기준값은 에러 정정 코드에 의해 정정 가능한 최대값보다 크지 않다.
한편, 기준값은 프로그램 조건에 따라 메모리 제어기(400)으로부터 제공될 것이다. 예를 들어, 메모리 제어기(400)는 프로그램 동작이 수행될 메모리 블록의 프로그램/소거 회수에 따라 기준값을 결정하고, 결정된 기준값을 제어 로직(350)의 기준값 레지스터(352)에 저장시킬 것이다.
도 16은 도 15에 도시된 비휘발성 메모리 장치에서 프로그램/소거 회수에 따른 기준값의 변경에 대한 실시 예를 보여주는 도면이다. 도 16을 참조하면, 프로그램/소거 회수가 증가함에 따라 기준값이 점점 줄어든다. 이렇게 기준값을 변경할 경우에, 프로그램/소거 회수가 적은 메모리 블록에서 프로그램 동작시 프로그램 시간(tPROG)이 향상될 것이다. 프로그램/소거 회수가 적은 메모리 블록에서는 비트 에러 비율(Bit Error Rate)가 낮으므로 기준값이 증가될 수 있다.
한편, 본 발명의 사상에 따른 비휘발성 메모리 장치에서는, 소거 페일 비트 및 프로그램 페일 비트의 허용치가 프로그램/소거 회수에 의해 각각 독립적으로 조절될 수도 있다.
도 17은 본 발명의 실시 예에 따른 비휘발성 메모리 장치의 프로그램 방법에서 프로그램 펄스가 제거되는 것을 보여주는 도면이다. 프로그램 검증 동작시 페일 비트의 개수에 따라 프로그램 동작을 계속할지 혹은 프로그램 동작을 종료할지가 결정될 것이다. 도 17에 도시된 바와 같이, 현재 프로그램 단계에서 전체 페일 비트의 개수(N)가 이전 프로그램 단계에서의 전체 페일 비트 개수(K)보다 작으면, 계속해서 프로그램 동작이 수행될 것이다. 반면에, 현재 프로그램 단계에서 페일 비트의 개수(M)가 이전 프로그램 단계에서의 페일 비트의 개수(N)보다 크게 되면, 프로그램 동작이 종료될 것이다. 이로써 다음 펄스는 제거될 것이다.
도 18은 본 발명의 실시 예에 따른 비휘발성 메모리 장치의 프로그램 루프에 대한 실시 예를 보여주는 도면이다. 도 18을 참조하면, 루프 (i)은 다음과 같이 진행될 것이다. 이전 루프 (i-1)가 프로그램 페일되면, 어드레스에 의해 선택된 메모리 셀들에 대한 프로그램 동작이 수행될 것이다(S510). 이후, 프로그램 동작이 수행된 메모리 셀들에 대하여 프로그램 비트들 혹은 금지 비트들에 대한 프로그램 검증 동작이 수행될 것이다(S520). 프로그램 검증 동작 수행으로부터 알게 된 페일 비트의 개수가 에러 정정 코드에 의해 정정 가능하다면, 프로그램 동작은 종료될 것이다. 반면에, 페일 비트의 개수가 에러 정정 코드에 의해 정정 가능하지 않다면, 다음 루프(i+1)가 진행될 것이다(S530). 여기서 루프(i+1)는 상술 된 이전 루프 (i)와 동일하게 진행될 것이다.
도 19는 본 발명의 실시 예에 따른 메모리 시스템에 대한 실시 예를 보여주는 블록도이다. 도 19를 참조하면, 메모리 시스템(10)은 비휘발성 메모리 장치(12) 및 메모리 제어기(14)를 포함할 것이다.
비휘발성 메모리 장치(12)는, 도 3에 도시된 비휘발성 메모리 장치(100), 도 12에 도시된 비휘발성 메모리 장치(200), 도 15에 도시된 비휘발성 메모리 장치(300) 중 어느 하나와 동일하게 구현될 것이다.
메모리 제어기(14)는 외부(예를 들어, 호스트)의 요청에 따라 비휘발성 메모리 장치(12)를 제어할 것이다. 메모리 제어기(14)는 시스템(10)은 컨트롤러(100) 및 불휘발성 메모리 장치(200)를 포함한다. 예를 들어, 메모리 제어기러(14)는 비휘발성 메모리 장치(12)의 읽기, 쓰기, 및 소거 동작을 제어하도록 구현될 것이다.
메모리 제어기(14) 비휘발성 메모리 장치(14) 및 호스트 사이에 인터페이스를 제공할 것이다. 메모리 제어기(14)는 비휘발성 메모리 장치(14)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구현될 것이다. 메모리 제어기(14)는 중앙처리장치(14_1), 버퍼(14_2), 에러정정회로(14_3), 롬(14_4), 호스트 인터페이스(14_5), 및 메모리 인터페이스(14_6)를 포함할 것이다.
중앙처리장치(14_1)는 메모리 제어기(14)의 전반적인 동작을 제어할 것이다.
버퍼(14_2)는 중앙처리장치(14_1)의 동작 메모리로서 이용될 것이다. 호스트의 쓰기 요청시, 호스트로부터 입력된 데이터는 버퍼(14_2)에 임시로 저장될 것이다. 또한, 호스트의 읽기 요청시, 비휘발성 메모리 장치(12)로부터 읽혀진 데이터는 버퍼(14-2)에 임시로 저장될 것이다.
에러정정회로(14_3)는 쓰기 요청시 버퍼(14_2)에 저장된 데이터를 에러정정코드에 의해 디코딩할 것이다. 이때, 디코딩된 데이터 및 이용된 에러정정코드 값은 비휘발성 메모리 장치(12)에 저장될 것이다. 한편, 에러정정회로(14_3)는 읽기 요청시 비휘발성 메모리 장치(12)로부터 읽혀진 데이터를 에러정정코드 값을 이용하여 복원시킬 것이다. 여기서 에러정정코드 값은 읽혀진 데이터에 포함될 것이다.
롬(14_4)은 메모리 제어기(14)를 구동하기 위하여 필요한 데이터가 저장될 것이다.
호스트 인터페이스(14_5)는 호스트(Host) 및 메모리 제어기(14) 사이의 데이터 교환을 수행하기 위한 프로토콜을 포함할 것이다. 예를 들어, 메모리 제어기(14) USB (Universal Serial Bus) 프로토콜, MMC (multimedia card) 프로토콜, PCI (peripheral component interconnection) 프로토콜, PCI-E (PCI-express) 프로토콜, ATA (Advanced Technology Attachment) 프로토콜, Serial-ATA 프로토콜, Parallel-ATA 프로토콜, SCSI (small computer small interface) 프로토콜, ESDI (enhanced small disk interface) 프로토콜, 그리고 IDE (Integrated Drive Electronics) 프로토콜 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 통해 외부(호스트)와 통신하도록 구성될 것이다.
메모리 인터페이스(14_6)는 비휘발성 메모리 장치(12)와 메모리 제어기(14) 사이의 인터페이싱할 것이다.
도 20은 본 발명의 실시 예에 따른 비휘발성 메모리 장치를 갖는 메모리 카드에 대한 블록도이다. 도 20을 참조하면, 메모리 카드(20)는 낸드 플래시 메모리 장치(22) 및 그것을 제어하는 메모리 제어기(24)를 포함할 것이다.
낸드 플래시 메모리 장치(22)는, 도 3에 도시된 비휘발성 메모리 장치(100), 도 12에 도시된 비휘발성 메모리 장치(200), 및 도 15에 도시된 비휘발성 메모리 장치(300) 중 어느 하나와 동일하게 구현될 것이다. 본 발명의 낸드 플래시 메모리 장치(22)는 프로그램 동작시 전체 페일 비트의 개수에 따라 프로그램 동작을 종료시킬 것이다.
메모리 제어기(24)는 호스트 및 낸드 플래시 메모리 장치(22)에 연결될 것이다. 호스트로부터의 요청에 응답하여, 메모리 제어기(24)는 낸드 플래시 메모리 장치(22)를 억세스하도록 구현될 것이다.
메모리 제어기(24)는 낸드 플래시 메모리 장치(22)를 제어하기 위한 펌웨어(firmware_)를 구동하도록 구현될 것이다. 메모리 제어기(22)는 램(RAM, Random Access Memory), 프로세싱 유닛(Processing Unit), 호스트 인터페이스(Host interface), 및 낸드 플래시 인터페이스와 같은 잘 알려진 구성 요소들을 포함할 것이다. 호스트 인터페이스는 호스트와 메모리 제어기(24) 사이에 데이터 교환을 수행하기 위한 카드(예를 들어, MMC) 프로토콜을 통해 호스트와 인터페이싱할 것이다.
이러한 메모리 카드(20)는 멀티미디어 카드(Multimedia Card: MMC), 보안 디지털(Security Digital: SD), miniSD, 메모리 스틱(Memory Stick), 스마트미디어(SmartMedia), 트랜스플래시(TransFlash) 카드 등에 적용가능하다.
도 21은 본 발명의 실시 예에 따른 비휘발성 메모리 장치를 갖는 모비낸드를 보여주는 블록도이다. 도 21을 참조하면, 모비낸드(30)는 낸드 플래시 메모리 장치(32) 및 제어기(34)를 포함할 것이다.
낸드 플래시 메모리 장치(32)는 단품의 낸드 플래시 메모리들이 한 패키지(예를 들어, FBGA, Fine-pitch Ball Grid Array)에 적층됨으로써 구현될 것이다. 여기서, 단품의 낸드 플래시 메모리들 각각은, 도 3에 도시된 비휘발성 메모리 장치(100), 도 12에 도시된 비휘발성 메모리 장치(200), 및 도 15에 도시된 비휘발성 메모리 장치(300) 중 어느 하나와 동일하게 구현될 것이다. 본 발명의 낸드 플래시 메모리 장치(32)는 프로그램 동작시 프로그램 동작시 전체 페일 비트의 개수에 따라 프로그램 동작을 종료시킬 것이다.
한편, 낸드 플래시 메모리 장치(32)는 멀티 레벨 셀(Multi Level Cell) 혹은 싱글 레벨 셀(Single Level Cell)을 포함할 것이다.
제어기(34)는 제어기 코어(35), 낸드 인터페이스(36), 및 호스트 인터페이스(37)를 포함할 것이다. 제어기 코어(34)는 모비낸드(30)의 전반적인 동작을 제어할 것이다. 낸드 인터페이스(36)는 낸드 플래시 메모리 장치(32)와 제어기(34)의 인터페이싱을 수행할 것이다. 호스트 인터페이스(37)는 제어기(34)와 호스트의 MMC(Multi Media Card) 인터페이싱을 수행할 것이다.
모비낸드(30)는 호스트로부터 전원전압들(Vcc, Vccq)을 제공받을 것이다. 여기서, 전원전압(Vcc: 3V)은 낸드 플래시 메모리 장치(32) 및 낸드 인터페이스(26)에 공급되고, 전원전압(Vccq: 1.8V/3V)은 제어기(34)에 공급될 것이다.
한편, 본 발명은 솔리드 스테이트 드라이버(Solid State Drive: 이하, 'SSD'라고 함)에 적용가능하다.
도 22는 본 발명의 실시 예에 따른 SSD를 보여주는 블록도이다. 도 22를 참조하면, SSD(40)는 프로세서(41), ATA 인터페이스(42), 램(43), 캐쉬 버퍼 램(44), 플래시 제어기(45), 및 복수의 플래시 메모리 장치들(46)을 포함할 것이다. 여기서, 복수의 플래시 메모리 장치들 각각은, 도 3에 도시된 비휘발성 메모리 장치(100), 도 12에 도시된 비휘발성 메모리 장치(200), 및 도 15에 도시된 비휘발성 메모리 장치(300) 중 어느 하나와 동일하게 구현될 것이다. 본 발명의 플래시 메모리 장치들(46)은 프로그램 동작시 전체 페일 비트의 개수에 따라 프로그램 동작을 종료시킬 것이다.
ATA 인터페이스(42)는 프로세서(41)의 제어에 따라 외부와 데이터를 교환할 것이다. ATA 인터페이스(42)는 호스트로부터 명령어 및 주소를 패치하여 CPU 버스를 통해서 프로세서(41)로 전달할 것이다. 여기서 ATA 인터페이스(42)는 SATA(Serial Advanced Technology Attachment) 인터페이스, PATA(Parallel Advanced Technology Attachment) 인터페이스, ESATA(External SATA) 인터페이스 등 중에서 어느 하나일 것이다.
ATA 인터페이스(42)를 통해 외부로부터 입력되는 데이터나 외부로 전송되어 야 할 데이터는 프로세서(41)의 제어에 따라 CPU 버스를 경유하지 않고 캐시 버퍼 램(44)을 통해 전달될 것이다.
램(43)은 SSD(40)의 동작에 필요한 데이터를 임시로 저장하는데 이용될 것이다. 이러한 램(43)은 휘발성 메모리 장치로써, DRAM, SRAM 등이 될 수 있다.
캐쉬 버퍼 램(44)은 호스트와 플래시 메모리 장치들(46) 간의 이동 데이터를 일시 저장할 것이다. 또한, 캐쉬 버퍼 램(44)은 프로세서(41)에 의해서 운용될 프로그램을 저장하는 데에도 사용될 것이다. 캐쉬 버퍼 램(44)은 일종의 버퍼 메모리로 간주할 수 있으며, 에스램(SRAM)으로 구현될 수 있다.
플래시 제어기(45)는 저장 장치로 사용되는 플래시 메모리 장치들(46)과 데이터를 주고받을 것이다. 플래시 제어기(45)는 낸드 플래시 메모리, 원내드(One-NAND) 플래시 메모리, 멀티 레벨 플래시 메모리, 싱글 레벨 플래시 메모리를 지원하도록 구성될 수 있다.
한편, 프로세서(41)와 플래시 제어기(45)는 하나의 ARM 프로세서로 구현될 수도 있다.
도 23은 SSD를 이용한 서버 시스템에 대한 실시 예를 보여주는 블록도이다. 도 23을 참조하면, 서버 시스템(50)은 서버(51), 및 서버(51)를 구동하는 데 필요한 데이터를 저장하는 SSD(58)를 포함할 것이다. 여기서 SSD(58)는, 도 22에 도시된 SSD(40)와 동일한 구성을 포함할 것이다.
서버(51)는 응용 통신 모듈(52), 데이터 처리 모듈(53), 업그레이드 모듈(54), 스케줄링 센터(55), 로컬 리소스 모듈(56), 그리고 리페어 정보 모듈(57) 을 포함할 것이다.
응용 통신 모듈(52)은 서버(51)와 네트워크에 연결된 컴퓨팅 시스템과 통신하거나 혹은 서버(51)과 SSD(58)이 통신하도록 구현될 것이다. 응용 통신 모듈(52)은 사용자 인터페이스를 통하여 제공된 데이터 혹은 정보를 데이터 처리 모듈(53)로 전송할 것이다.
데이터 처리 모듈(53)은 로컬 자원 모듈(46)에 링크될 것이다. 여기서 로컬 자원 모듈(56)은 서버(51)에 입력된 데이터 혹은 정보를 근거로 하여 사용자에게 리페어 숍들(repair shops)/딜러들(dealers)/기술적인 정보의 목록을 제공할 것이다.
업그레이드 모듈(54)은 데이터 처리 모듈(53)과 인터페이싱할 것이다. 업그레이드 모듈(54)은 SSD(58)로부터 전송된 데이터 혹은 정보를 근거로 하여 펌웨어, 리셋 코드, 진단 시스템 업그레이드 혹은 다른 정보들을 전자기기(appliance)에 업그레이드할 것이다.
스케쥴링 센터(55)는 서버(51)에 입력된 데이터 혹은 정보를 근거로 하여 사용자에게 실시간의 옵션을 허용할 것이다.
리페어 정보 모듈(57)은 데이터 처리 모듈(53)과 인터페이싱할 것이다. 리페어 정보 모듈(57)은 사용자에게 리페어 관련 정보(예를 들어, 오디오, 비디오, 혹은 문서 파일)를 제공하는데 이용될 것이다. 데이터 처리 모듈(53)은 SSD(58)으로부터 전달된 정보를 근거로하여 관련된 정보를 패키징할 것이다. 그 뒤, 이러한 정보는 SSD(58)에 전송되거나 혹은 사용자에게 디스플레이될 것이다.
도 24는 본 발명의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다. 도 24를 참조하면, 컴퓨팅 시스템(60)은, 중앙처리장치(61), 롬(62), 램(63), 입출력 장치(64), 그리고, SSD(65)을 포함할 것이다.
중앙처리장치(51)는 시스템 버스에 연결될 것이다. 롬(62)은 컴퓨팅 시스템(50)을 구동하는데 필요한 데이터가 저장될 것이다. 이러한 데이터에는 개시 명령 시퀀스, 혹은 기본적인 입/출력 동작 시스템(예를 들어, BIOS) 시퀀스 등이 될 것이다. 램(63)은 중앙처리장치(61)가 실행될 때 발생되는 데이터가 임시로 저장될 것이다.
입출력 장치(64)는, 예를 들어, 키보드, 포인팅 장치(마우스), 모니터, 모뎀, 등이 입출력 장치 인터페이스를 통하여 시스템 버스에 연결될 것이다.
SSD(65)는 읽기 가능한 저장 장치로써, 도 22에 도시된 SSD(40)와 동일하게 구현될 것이다.
도 25는 본 발명의 실시 예에 따른 전자기기에 대한 블록도이다. 도 25를 참조하면, 전자기기(70)는, 프로세서(71), 롬(72), 램(73), 그리고 플래시 인터페이스(74), 및 SSD(75)을 포함할 것이다.
프로세서(71)는 펌웨어 코드 혹은 임의의 코드를 실행하기 위하여 램(73)을 억세스할 것이다. 또한, 프로세서(71)는 개시 명령 시퀀스 혹은 기본 입출력 동작 시스템 시퀀스들과 같은 고정 명령 시퀀스들을 실행하기 위하여 롬(72)에 억세스할 것이다. 플래시 인터페이스(74)는 전자기기(70)와 SSD(75) 사이의 인터페이싱을 수행할 것이다.
SSD(75)는 전자기기(70)에 착탈이 가능할 것이다. SSD(75)는, 도 22에 도시된 SSD(40)와 동일하게 구현될 것이다.
본 발명의 전자기기(70)는 셀룰러 폰, 개인 디지털 보조기(Personal Digital Assistants: PDAs), 디지털 카메라, 캠코더, 및 휴대용 오디오 재생장치(예를 들어, MP3), PMP 등이 될 수 있다.
본 발명의 실시 예에 따른 메모리 시스템 또는 저장 장치는 다양한 형태들의 패키지를 이용하여 실장 될 수 있다. 예를 들면, 본 발명의 실시 예에 따른 메모리 시스템 또는 저장 장치는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장될 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지로 변형할 수 있다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허 청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해 져야 한다.