KR101088235B1 - 반도체 메모리를 갖는 메모리 시스템 및 그 데이터 전송 방법 - Google Patents

반도체 메모리를 갖는 메모리 시스템 및 그 데이터 전송 방법 Download PDF

Info

Publication number
KR101088235B1
KR101088235B1 KR1020090056069A KR20090056069A KR101088235B1 KR 101088235 B1 KR101088235 B1 KR 101088235B1 KR 1020090056069 A KR1020090056069 A KR 1020090056069A KR 20090056069 A KR20090056069 A KR 20090056069A KR 101088235 B1 KR101088235 B1 KR 101088235B1
Authority
KR
South Korea
Prior art keywords
data
buffer
ecc
nand flash
parity
Prior art date
Application number
KR1020090056069A
Other languages
English (en)
Other versions
KR20100002147A (ko
Inventor
유타카 시라이
게이지 마루야마
Original Assignee
가부시끼가이샤 도시바
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 가부시끼가이샤 도시바 filed Critical 가부시끼가이샤 도시바
Publication of KR20100002147A publication Critical patent/KR20100002147A/ko
Application granted granted Critical
Publication of KR101088235B1 publication Critical patent/KR101088235B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

데이터 전송 방법은, NAND 플래시 메모리로부터 데이터를 페이지 단위로 제1 버퍼에 판독하는 단계, 상기 제1 버퍼에 판독된 상기 데이터에서의 패리티를 제2 버퍼에 전송하는 단계, 상기 패리티를 상기 제2 버퍼에 전송한 후, 상기 제1 버퍼에 판독된 상기 데이터에서의 메인 데이터를 상기 제2 버퍼에 전송하는 단계, 상기 패리티에 기초하여, 상기 제2 버퍼에 전송된 상기 메인 데이터에서의 에러를 정정하는 단계, 상기 에러 정정된 메인 데이터를 제3 버퍼에 전송하는 단계를 포함한다.

Description

반도체 메모리를 갖는 메모리 시스템 및 그 데이터 전송 방법{MEMORY SYSTEM WITH SEMICONDUCTOR MEMORY AND ITS DATA TRANSFER METHOD}
(관련 출원들에의 교차 참조)
본 출원은 2008년 6월 24일 출원된 일본 우선권 특허 출원 제2008-164949호에 기초하고, 이로부터의 우선권의 이익을 주장하며, 그 전체 내용이 여기서 참조용으로 사용되었다.
본 발명은 반도체 메모리를 갖는 메모리 시스템과 그 데이터 전송 방법에 관한 것이며, 보다 자세하게는 에러 정정 기능을 갖는 불휘발성 반도체 메모리에서의 데이터 전송 방법에 관한 것이다.
에러 검사 및 정정(error checking and correction, ECC) 기능을 갖는 반도체 메모리가 알려져 있다. ECC 기능은 판독 데이터에 어떠한 에러가 존재하는 지의 여부를 검사하는 것이고, 에러가 발견되면, 에러를 정정한다. 이러한 기능은, 예컨대 미국 특허 제7,290,082호에 개시되어 있다.
불휘발성 반도체 메모리로서 NAND 플래시 메모리가 널리 알려져 있다. NAND 플래시 메모리에서, 에러가 특정 확률로 발생할 것이므로, ECC 기능을 사용하는 것이 중요하다.
본 발명의 태양에 따른 데이터 전송 방법은,
NAND 플래시 메모리로부터 제1 버퍼에 데이터를 페이지 단위로 판독하는 단계;
상기 제1 버퍼에 판독된 상기 데이터에서의 패리티를 제2 버퍼로 전송하는 단계;
상기 패리티를 상기 제2 버퍼로 전송한 후, 상기 제1 버퍼에 판독된 상기 데이터에서의 메인 데이터를 상기 제2 버퍼로 전송하는 단계;
상기 패리티에 기초하여, 상기 제2 버퍼에 전송된 상기 메인 데이터에서의 에러를 정정하는 단계; 및
에러 정정된 메인 데이터를 제3 버퍼로 전송하는 단계
를 포함한다.
본 발명의 태양에 따른 메모리 시스템은,
데이터를 유지할 수 있는 NAND 플래시 메모리;
상기 데이터에 ECC 프로세싱을 수행하는 ECC 시스템;
상기 NAND 플래시 메모리로 및 상기 NAND 플래시 메모리로부터 상기 데이터를 입력하고 및 출력하는 데 사용되는 버퍼 메모리; 및
상기 NAND 플래시 메모리, 상기 ECC 시스템, 및 상기 버퍼 메모리의 동작들을 제어하는 컨트롤러로서, 상기 NAND 플래시 메모리, 상기 ECC 시스템, 상기 버퍼 메모리, 및 상기 컨트롤러 간에 클록이 전파되는 방향은, 상기 데이터가 로딩되거나 프로그래밍되는 지에 따라 스위칭되는 것인 상기 컨트롤러
를 포함한다.
본 발명에 의하면, 동작 성능을 향상시킬 수 있는 데이터 전송 방법을 제공할 수 있다.
[제1 실시예]
본 발명의 제1 실시예에 따른 메모리 시스템과 데이터 전송 방법을 도 1을 사용하여 설명한다. 도 1은 제1 실시예에 따른 데이터 전송 방법을 구현하는 메모리 시스템의 블록도이다.
<메모리 시스템의 전체 구성>
도 1에 도시된 바와 같이, 메모리 시스템(1)은, NAND 플래시 메모리(2), RAM 유닛(3), 및 컨트롤러 유닛(4)을 포함한다. NAND 플래시 메모리(2), RAM 유닛(3), 및 컨트롤러 유닛(4)은 하나의 칩으로 집적되도록 동일한 반도체 기판 상에 형성된다. 이하, 블록들 각각을 상세히 설명한다.
<NAND 플래시 메모리(2)>
NAND 플래시 메모리(2)는 메모리 시스템(1)의 주 기억 유닛으로서 기능한다. 도 1에 도시된 바와 같이, NAND 플래시 메모리(2)는 메모리 셀 어레이(10), 로우(row) 디코더(11), 페이지 버퍼(21), 전압 발생 회로(13), 시퀀서(14), 및 오실레이터(oscillator)들(15, 16)을 포함한다.
메모리 셀 어레이(10)는 데이터를 유지할 수 있는 복수의 메모리 셀 트랜지스터들을 포함한다. 도 2는 메모리 셀 어레이(10)의 회로도이다. 도 2에 도시된 바와 같이, 메모리 셀 어레이(10)는 일반적으로 제1 영역(17)과 제2 영역(18)을 포함한다. 제1 영역(17)은, 유저 데이터와 같은 네트 데이터(이하, 메인 데이터로 칭함)를 유지한다. 제2 영역(18)은, 제1 영역(17)에 대한 스페어(spare) 영역으로서 사용되며, 예컨대 에러 정정 정보(예컨대, 패리티)를 유지한다. 제1 영역(17)과 제2 영역(18) 각각은 복수의 메모리 셀 유닛들(19)을 포함한다. 이 메모리 셀 유닛들(19) 각각은, 예컨대 32개의 메모리 셀 트랜지스터들(MT0 내지 MT31)과 선택 트랜지스터들(ST1, ST2)을 포함한다. 이하, 메모리 셀 트랜지스터들(MT0 내지 MT31)이 서로 구분되지 않으면, 단순히 메모리 셀 트랜지스터들(MT)로 칭한다. 메모리 셀 트랜지스터들 각각은, 반도체 기판 상에 게이트 절연막이 사이에 개재되어 형성된 전하 축적층(예컨대, 부유 게이트)과, 상기 전하 축적층 상에 게이트간 절연막이 사이에 개재되어 형성된 제어 게이트를 포함하는 적층 게이트 구조를 갖는다. 메모리 셀 트랜지스터들(MT)의 수는 32개에 한정되지 않고, 8개, 16개, 64개, 128개, 256개 등일 수도 있다. 메모리 셀 트랜지스터들(MT)은, 질화막이 전자들을 트랩(trap)하도록 하는 방법을 사용하는 금속-산화물-질화물-산화물-실리콘(metal-oxide-nitride-oxide-silicon, MONOS) 구조를 가질 수도 있다.
메모리 셀 트랜지스터들(MT)은, 인접하는 메모리 셀 트랜지스터들이 드레인과 소스를 공유하는 방식으로 접속되어 있다. 또한, 메모리 셀 트랜지스터들은, 이들의 전류 경로들이 선택 트랜지스터들(ST1과 ST2) 사이에서 직렬로 접속되는 방식으로 배열되어 있다. 직렬로 접속된 메모리 셀 트랜지스터들(MT)의 일단 측의 드레인은 선택 트랜지스터(ST1)의 소스에 접속되어 있다. 타단 측의 소스는 선택 트랜지스터(ST2)의 드레인에 접속되어 있다.
동일한 행에서의 메모리 셀 트랜지스터들의 제어 게이트들은 통상적으로 워드선들(WL0 내지 WL31) 중 임의 하나에 접속된다. 동일한 행에서의 선택 트랜지스터들(ST1)의 게이트들은 통상적으로 선택 게이트선(SGD)에 접속된다. 동일한 행에서의 선택 트랜지스터들(ST2)의 게이트들은 통상적으로 선택 게이트선(SGS)에 접속된다. 쉽게 설명하기 위하여, 이하 워드선들(WL0 내지 WL31)은 단순히 워드선들(WL)로 칭할 수도 있다. 워드선들(WL)과 선택 게이트선들(SGD, SGS)은 제1 영역(17)과 제2 영역(18)에서 공유된다.
제1 영역(17)에서, 동일한 열에서의 선택 트랜지스터들(ST1)의 드레인들은 비트선들(BL0 내지 BLn(n은 자연수))에 공통으로 접속된다. 제2 영역(18)에서, 동일한 열에서의 선택 트랜지스터들(ST1)의 드레인들은 비트선들(BL(n+1) 내지 BLm(m은 자연수))에 공통으로 접속된다. 비트선들(BL0 내지 BLm)을 단순히 비트선들(BL)로 칭할 수도 있다. 선택 트랜지스터들(ST2)의 소스들은 동일하게 소스 선(SL)에 접속된다. 선택 트랜지스터들(ST1, ST2) 모두가 반드시 필요한 것은 아니다. 메모리 셀 유닛(19)이 선택될 수 있는 한, 선택 트랜지스터들(ST1, ST2) 중 하나만이 제공될 수도 있다.
이 구성으로, 데이터가 동일한 워드선(WL)에 접속된 복수의 메모리 셀 트랜지스터들에 또는 이 복수의 메모리셀 트랜지스터들로부터 동시에 기록 또는 판독된다. 기록 단위 또는 판독 단위를 페이지로 칭한다. 또한, 동일한 행에서의 복수의 메모리 셀 유닛들(19)의 데이터가 동시에 소거된다. 소거 단위를 메모리 블록으로 칭한다.
메모리 셀 트랜지스터들(MT) 각각은, 예컨대 전하 축적층으로 주입된 전자들 수에 따른 트랜지스터의 임계 전압에서의 변화에 따라 1비트의 데이터를 유지할 수 있다. 임계 전압의 제어는, 2비트 이상의 데이터가 메모리 셀 트랜지스터들(MT) 각각에 유지되도록 세분화될 수도 있다.
도 3은 도 2의 메모리 셀 어레이(10)로부터 판독된 또는 메모리 셀 어레이(10)에서 프로그래밍된 데이터의 한 페이지를 개략적으로 도시한다. 도 3은 페이지 버퍼(12)의 구성에 대응한다.
도 3에 도시된 바와 같이, 제1 영역(17)으로부터 판독된 또는 제1 영역에서 프로그래밍된 메인 데이터는, 각각 예컨대 512바이트의 크기를 갖는 4개의 섹터들(제1 섹터 내지 제4 섹터)을 포함한다. 따라서, 메인 데이터의 크기는 (512바이트 X 4) = 2048바이트(= 2K바이트, 여기서 K는 1024)가 된다. 또한, 예컨대 64바이트의 데이터는 제2 영역(18)에서 프로그래밍되고 또는 제2 영역(18)으로부터 판독된 다. 에러 정정 패리티에 대하여, 예컨대 80비트가 각 섹터에 대하여 준비된다. 따라서, 메인 데이터가 4개의 섹터들을 포함하면, 제2 영역(18)에 대응하는 64바이트의 데이터 중 (80비트 X 4) = 320비트가 에러 정정 패리티를 위한 것이다.
상술된 바와 같이, 1 페이지의 데이터 크기는 (2048+64)바이트이다. 이 크기의 데이터는 메모리 셀 어레이(10)에서 동시에 프로그래밍되거나, 이 메모리 셀 어레이(10)로부터 판독된다. 데이터는 동일한 워드선(WL)에 접속된 모든 메모리 셀 트랜지스터들(MT)로부터 판독될 수도 있다. 이 경우, 제1 영역(17)에 접속된 비트선들(BL) 수는 16384(n= 16383)이고, 제2 영역에 접속된 비트선들(BL) 수는 512(m = 16895)이다. 데이터는, 예컨대 모든 짝수 비트선 또는 모든 홀수 비트선에 대하여 프로그래밍 또는 판독될 수도 있다. 이 경우, 비트선들 수는 2배이다.
도 1로 돌아가, NAND 플래시 메모리(2)의 구성을 다시 설명한다. 데이터가 프로그래밍되고, 판독되고 또는 소거되면, 로우 디코더(11)는 워드선(WL)을 선택하고, 게이트선들(SGD, SGS)을 선택한다. 다음, 로우 디코더(11)는 워드선(WL)에 필요한 전압들을 인가하고, 게이트선들(SGD, SGS)을 선택한다.
페이지 버퍼(12)는, 데이터의 페이지 크기를 유지할 수 있도록 구성되며, RAM 유닛(3)으로부터 부여된 데이터를 일시적으로 유지하고, 데이터 프로그래밍 동작시 메모리 셀 어레이(10)에 데이터를 기록한다. 판독 동작에서, 페이지 버퍼(12)는 메모리 셀 어레이(10)로부터 판독된 데이터를 일시적으로 유지하고, 이 데이터를 RAM 유닛(3)에 전송한다. 다음, 도 3에 도시된 바와 같이, 영역의 일부는 메인 데이터를 유지하는 데 사용되고, 그 나머지는 패리티 등을 유지하는 데 사 용된다.
전압 발생 회로(13)는 외부로부터 공급된 전압을 승압하거나 강압함으로써, 데이터 프로그래밍, 판독 및 소거에 필요한 전압들을 생성한다. 전압 발생 회로(13)는, 예컨대 로우 디코더(11)에 생성된 전압을 공급한다. 전압 발생 회로(13)에서 생성된 전압은 워드선(WL)에 인가된다.
시퀀서(14)는 NAND 플래시 메모리(2)의 전체 동작을 감독한다. 특히, 컨트롤러 유닛(4)으로부터 프로그램 명령(도 1에 도시된 "프로그램"), 로드 명령(도 1에 도시된 "로드"), 또는 소거 명령(미도시)을 받으면, 시퀀서(14)는, 이것에 응답하여, 데이터 프로그래밍, 판독, 및 소거의 시퀀스를 실행한다. 다음, 시퀀스에 따라, 시퀀서(14)는 전압 발생 회로(13)의 동작과 페이지 버퍼(12)의 동작을 제어한다.
오실레이터(15)는 내부 클록(ICLK)을 생성한다. 즉, 오실레이터(15)는 클록 생성기로서 기능한다. 오실레이터(15)는 생성된 내부 클록(ICLK)을 시퀀서(14)에 공급한다. 시퀀서(14)는 내부 클록(ICLK)과 동기하여 동작한다.
오실레이터(16)는 내부 클록(ACLK)을 생성한다. 즉, 오실레이터(16)는 클록 생성기로서 기능한다. 오실레이터(16)는 생성된 내부 클록(ACLK)을 컨트롤러 유닛(4)과 RAM 유닛(3)에 공급한다. 내부 클록(ACLK)은 컨트롤러 유닛(4)과 RAM 유닛(3)의 동작을 위한 기준 클록이다.
<RAM 유닛(3)>
도 1을 참조하여, RAM 유닛(3)을 설명한다. RAM 유닛(3)은, ECC 유닛(20), 정적 랜덤 액세스 메모리(static random access memory, SRAM)(30), 인터페이스 유닛(40), 및 액세스 컨트롤러(50)를 포함한다. 이하, 이들 각각을 설명한다.
제1 실시예의 메모리 시스템(1)에서, NAND 플래시 메모리(2)는 주 기억 유닛으로서 기능하고, RAM 유닛(3)의 SRAM(30)은 버퍼로서 기능한다. 따라서, 데이터가 NAND 플래시 메모리(2)로부터 외부로 판독되면, 우선 NAND 플래시 메모리(2)의 메모리 셀 어레이(10)로부터 판독된 데이터가 페이지 버퍼(12)를 통하여 RAM 유닛(3)의 SRAM(30)에 기억된다. 그 후, SRAM(30)에서의 데이터는 인터페이스 유닛(40)으로 전송된 후, 이 데이터를 외부로 출력한다. 데이터가 NAND 플래시 메모리(2)에 기억되면, 우선 외부로부터 공급된 데이터는 인터페이스 유닛(40)을 통하여 RAM 유닛(3)의 SRAM(30)에 기억된다. 그 후, SRAM(30)에서의 데이터는 페이지 버퍼(12)에 전송된 후, 이 데이터를 메모리 셀 어레이(10)에 기록한다.
그 후, 데이터가 메모리 셀 어레이(10)로부터 판독될 때부터 데이터가 페이지 버퍼(12)를 통하여 SRAM(30)에 전송되기 까지의 동작을 "로딩" 데이터로 칭한다. 인터페이스 유닛(40)에서 버스트 버퍼들(41, 42)(후술함)을 통하여 인터페이스(43)에 전송되고 있는 SRAM(30)에서의 데이터의 동작을 "판독" 데이터로 칭한다.
또한, 인터페이스(43)에서 SRAM(30)으로 버스트 버퍼들(41, 42)을 통하여 전송되고 있는 NAND 플래시 메모리(2)에 기억될 데이터의 동작을 "기록" 데이터로 칭한다. SRAM(30)의 데이터가 페이지 버퍼(12)로 전송될 때부터 데이터가 NAND 플래시 메모리(2)의 메모리 셀 어레이(10)로 기록될 때까지의 동작을 "프로그래밍" 데이터로 칭한다.
<<ECC 유닛(20)>>
ECC 유닛(20)은 데이터에서의 에러를 검출하고 정정하고, 패리티를 생성한다(이하, 이들 프로세스들을 총칭하여 ECC 프로세싱으로 칭할 수도 있다). 특히, 데이터 로딩 시, ECC 유닛은 NAND 플래시 메모리(2)로부터 판독된 데이터에서의 에러를 검출하여 정정한다. 데이터 프로그래밍 시, ECC 유닛은 프로그래밍될 데이터에 대한 패리티를 생성한다. ECC 유닛(20)은 ECC 버퍼(21)와 ECC 엔진(22)을 포함한다.
ECC 버퍼(21)는, NAND 버스를 통하여 NAND 플래시 메모리(2)의 페이지 버퍼(12)에, 그리고 ECC 버스를 통하여 SRAM(30)에 접속된다. NAND 버스와 ECC 버스는, 예컨대 64비트를 포함하는 동일한 버스 폭을 갖는다. 데이터 로딩 시, ECC 버퍼(21)는, 페이지 버퍼(12)로부터 NAND 버스를 통하여 전송된 데이터를 유지할 뿐만 아니라, ECC 버스를 통하여 SRAM(30)으로 ECC 프로세싱을 받은 데이터를 전송한다. 데이터 프로그래밍 시, ECC 버퍼(21)는, SRAM(30)으로부터 ECC 버스를 통하여 전송된 데이터를 유지할 뿐만 아니라, NAND 버스를 통하여 페이지 버퍼(12)에 이 전송된 데이터와 패리티를 전송한다.
ECC 엔진(22)은 ECC 버퍼(21)에 유지된 데이터를 사용하여 ECC 프로세싱을 실행한다. ECC 엔진은, 예컨대 해밍(hamming) 코드를 사용하여 1비트 정정 방식을 사용한다. ECC 엔진(22)은 에러 프로세싱에 필요한 최소량의 패리티 데이터를 사용한다. ECC 엔진(22)은 512 비트의 단위로 도 3에 설명된 섹터들 각각에 ECC 프 로세싱을 수행한다. 즉, 2k 비트(k는 자연수) 중 1비트를 정정하기 위하여, (k + 1) 비트의 패리티가 필요하다. 따라서, ECC 프로세싱이 512 비트의 단위로 실행되면, k = 9이므로, 모든 512 비트에 대하여 10비트의 패리티가 필요하다.
특히, 데이터 로딩 시, ECC 엔진(22)은 모든 512비트에 대하여 10비트의 패리티를 사용하여 신드롬을 생성하고, 이 신드롬을 사용하여 에러를 검출한다. 에러를 검출했으면, ECC 엔진은 이 에러를 정정한다. 데이터 프로그래밍 시, ECC 엔진은 모든 512비트에 대하여 10비트의 패리티를 생성한다.
도 4는 ECC 유닛(20), 페이지 버퍼(12) 및 DQ 버퍼(31)의 블록도이다. DQ 버퍼(31)는 SRAM(30)에 포함된 버퍼이다. 도 4에 도시된 바와 같이, ECC 버퍼(21)는 제1 내지 제3 유지 유닛들(23 내지 25)을 포함한다. 제1 내지 제3 유지 유닛들(23 내지 25)은, 예컨대 64비트의 단위로 페이지 버퍼(12)와 DQ 버퍼(31) 간에서 데이터를 전송한다. 제1 및 제2 유지 유닛들(23, 24) 각각은 512비트의 메인 데이터를 유지할 수 있다. 제3 유지 유닛(25)은, 데이터 로딩 시 페이지 버퍼(12)로부터 전송된 패리티와, 데이터 프로그래밍 시 ECC 엔진(22)에서 생성된 패리티를 유지한다. 다음, ECC 엔진(22)은 제1 내지 제3 유지 유닛들(23 내지 25) 내의 데이터를 사용하여 ECC 프로세싱을 수행한다.
<<SRAM(30)>>
다음, 도 1로 돌아가, SRAM(30)을 설명한다. 메모리 시스템(1)에서, SRAM(30)은 NAND 플래시 메모리(2)에 대한 버퍼 메모리로서 기능한다. 도 1에 도 시된 바와 같이, SRAM(30)은 DQ 버퍼(31), 복수의 데이터 RAM들(제1 실시예에서 2개의 RAM들), 및 부트 RAM을 포함한다.
DQ 버퍼(31)는, 데이터를 데이터 RAM들 또는 부트 RAM에 기록하거나, 판독 동작에서 데이터를 일시적으로 유지한다. 상술된 바와 같이, DQ 버퍼(31)는 ECC 버스를 통하여 ECC 버퍼(21)와 데이터를 교환할 수 있도록 구성된다. 또한, DQ 버퍼(31)는, 예컨대 64 비트의 버스 폭을 갖는 RAM/레지스터 버스를 통하여 인터페이스 유닛(40)과 데이터를 교환할 수 있도록 구성된다. 페이지 버퍼(12)와 같이, DQ 버퍼(31)는 메인 데이터를 유지하기 위한 영역과, 패리티 등을 유지하기 위한 영역을 포함한다.
부트 RAM은, 예컨대 메모리 시스템(1)을 기동시키기 위한 부트 코드를 일시적으로 유지한다. 부트 RAM의 용량은, 예컨대 1K바이트이다. 데이터 RAM은 부트 코드 이외의 데이터(메인 데이터 및 패리티)를 일시적으로 유지한다. 데이터 RAM의 용량은, 예컨대 2K바이트이다. 데이터 RAM의 2개의 유닛들이 제공된다. 데이터 RAM과 부트 RAM 각각은 메모리 셀 어레이(32), 센스 앰프(33), 및 로우 디코더(34)를 포함한다.
메모리 셀 어레이(32)는 데이터를 유지할 수 있는 복수의 SRAM 셀들을 포함한다. SRAM 셀들 각각은 워드선과 비트선에 접속되어 있다. 메모리 셀 어레이(10)와 유사하게, 메모리 셀 어레이(32)는 메인 데이터를 유지하기 위한 영역과, 패리티 등을 유지하기 위한 영역을 포함한다. 센스 앰프(33)는 SRAM 셀로부터 비트선으로 판독된 데이터를 감지하여 증폭한다. 또한, 센스 앰프(33)는 DQ 버 퍼(31)에서의 데이터를 SRAM 셀들에 기록할 때 로드로서 기능한다. 로우 디코더(34)는 메모리 셀 어레이(32)에서의 워드선을 선택한다.
<<인터페이스 유닛(40)>>
다음, 인터페이스 유닛(40)을 도 1을 참조하여 설명한다. 도 1에 도시된 바와 같이, 인터페이스 유닛(40)은 복수의 버스트 버퍼들(제1 실시예에서의 2개의 버스트 버퍼들)(41, 42) 및 인터페이스(43)를 포함한다.
인터페이스(43)는, 메모리 시스템(1) 외부의 호스트 유닛과 접속할 수 있고, 호스트 유닛으로 및 호스트 유닛으로부터 데이터, 제어 신호들, 및 어드레스들(Add)을 포함하는 다양한 신호들의 입력과 출력을 감시한다. 제어 신호들의 예들은, 메모리 시스템(1)의 전체를 인에이블하는 칩 인에이블 신호(/CE), 어드레스가 래치되도록 하는 어드레스 밸리드 신호(/AVD), 버스트 판독용 클록(CLK), 기록 동작을 인에이블하는 기록 인에이블 신호(/WE), 및 외부로의 데이터의 출력을 인에이블하는 출력 인에이블 신호(/OE)를 포함한다.
인터페이스(43)는, 예컨대 16비트의 버스 폭을 갖는 DIN/DOUT을 통하여 버스트 버퍼(41, 42)에 접속된다. 인터페이스(43)는, 데이터 판독 요청, 로드 요청, 기록 요청, 프로그램 요청 등에 관련된 제어 신호들을 호스트 유닛으로부터 액세스 컨트롤러(50)에 전송한다. 다음, 데이터를 판독할 때, 인터페이스(43)는 버스트 버퍼들(41, 42)에서의 데이터를 호스트 유닛으로 출력한다. 데이터를 기록할 때, 인터페이스(43)는 호스트 유닛으로부터 공급된 데이터를 버스트 버퍼들(41, 42)에 전송한다.
버스트 버퍼들(41, 42)은, RAM/레지스터 버스를 통하여 DQ 버퍼(31)와 컨트롤러 유닛(4)뿐만 아니라, DIN/DOUT 버스를 통하여 인터페이스(43)와도 데이터를 교환할 수 있도록 구성된다. 버스트 버퍼들(41, 42)은, 인터페이스(43)를 통하여 호스트 유닛으로부터 공급된 데이터 또는 DQ 버퍼(31)로부터 공급된 데이터를 일시적으로 유지한다.
<<액세스 컨트롤러(50)>>
액세스 컨트롤러(50)는 인터페이스(43)로부터 제어 신호와 어드레스를 수신하고, SRAM(30)과 컨트롤러 유닛(4)을 제어하여 호스트 유닛의 요청을 만족시키기 위한 동작을 실행한다.
보다 자세하게는, 호스트 유닛의 요청에 따라, 액세스 컨트롤러(50)는 컨트롤러 유닛(4)의 SRAM(30) 또는 레지스터(60)(후술함)를 액티브 상태로 만든다. 다음, 액세스 컨트롤러(50)는 SRAM(30)에 데이터 라이트 커맨드 또는 리드 커맨드(도 1에 도시된 "기록/판독")를 발행한다. 또는, 액세스 컨트롤러(50)는 레지스터(60)에 데이터 라이트 커맨드 또는 리드 커맨드("기록/판독")를 발행한다(이하, 커맨드를 레지스터 라이트 커맨드 또는 레지스터 리드 커맨드로 칭한다). 이들 커맨드들의 발행의 결과로서, SRAM(30)과 컨트롤러 유닛(4)이 동작을 시작한다.
<컨트롤러 유닛(4)>
다음, 컨트롤러 유닛(4)을 도 1을 참조하여 설명한다. 컨트롤러 유닛(4)은 NAND 플래시 메모리(2)와 RAM 유닛(3)의 동작을 제어한다. 즉, 컨트롤러 유닛(4)은 메모리 시스템(1)의 전체 동작을 감시하는 기능을 갖는다. 도 1에 도시된 바와 같이, 컨트롤러 유닛(4)은, 레지스터(60), 커맨드 유저 인터페이스(61), 스테이트 머신(62), 어드레스/커맨드 발생 회로(63), 및 어드레스/타이밍 발생 회로(64)를 포함한다.
레지스터(60)는 기능(function)의 동작 상태를 설정하기 위한 것이다. 특히, 레지스터(60)는 액세스 컨트롤러(50)로부터 공급된 레지스터 라이트 커맨드 또는 레지스터 리드 커맨드에 따라 기능의 동작 상태를 설정한다. 보다 자게하게는, 예컨대, 데이터 로딩시에, 로드 커맨드가 레지스터(60)에 설정된다. 데이터를 프로그래밍할 때, 프로그램 커맨드가 레지스터(60)에 설정된다.
특정 커맨드가 레지스터(60)에 설정되었으면, 커맨드 유저 인터페이스(61)는, 기능 실행 커맨드가 메모리 시스템(1)에 부여되었다는 것을 인식한다. 다음, 커맨드 유저 인터페이스(61)는 내부 커맨드 신호(도 1에 도시된 "커맨드")를 발행하고, 이것을 스테이트 머신(62)에 출력한다.
커맨드 유저 인터페이스(61)에 의하여 부여된 내부 커맨드 신호에 기초하여, 스테이트 머신(62)는 메모리 시스템(1)에서의 시퀀스 동작을 제어한다. 스테이트 머신(62)는 로드, 프로그램 및 소거를 포함하는 많은 기능들을 지원한다. 스테이트 머신(62)는 NAND 플래시 메모리(2)와 RAM 유닛(3)의 동작을 제어하여 이들 기능들을 실행한다. 상술된 바와 같이, "로드"는 NAND 플래시 메모리(2)로부터의 데이터를 판독하고, 이 데이터를 SRAM(30)에 출력하는 동작이다. "프로그램"은 NAND 플래시 메모리(2)에 RAM 데이터를 기억하는 동작이다. "소거"는 NAND 플래시 메모리(2)에서 데이터를 소거하는 동작이다.
어드레스/커맨드 발생 회로(63)는 스테이트 머신(62)의 제어 하에 NAND 플래시 메모리(2)의 동작을 제어한다. 보다 자세하게는, 어드레스/커맨드 발생 회로(63)는 어드레스, 커맨드(도 1에 도시된 "프로그램/로드") 등을 생성하여, 이것을 NAND 플래시 메모리(2)에 출력한다. 어드레스/커맨드 발생 회로(63)는 오실레이터(16)에 의하여 생성된 내부 클록(ACLK)과 동기하여 이들 어드레스와 커맨드를 출력한다.
어드레스/타이밍 발생 회로(64)는 스테이트 머신(62)의 제어 하에 RAM 유닛(3)의 동작을 제어한다. 보다 자세하게는, 어드레스/타이밍 발생 회로(64)는 RAM 유닛(3)에 필요한 어드레스와 커맨드를 발행하여, 이들을 액세스 컨트롤러(50)와 ECC 엔진(22)에 출력한다.
<메모리 시스템(1)의 동작>
다음, 상술된 바와 같이 구성된 메모리 시스템(1)의 동작을 간단히 설명한다. 제1 실시예의 메모리 시스템(1)에서, NAND 플래시 메모리(2)와 호스트 유닛은 SRAM(30)을 통하여 데이터를 교환한다.
특히, 호스트 유닛이 메모리 시스템(1)의 NAND 플래시 메모리(2)에 데이터를 기억하면, 데이터는 호스트 유닛에 의하여 부여되는 라이트 커맨드와 SRAM(30)의 어드레스에 따라서, 데이터 RAM 또는 부트 RAM에 일시적으로 저장된다. 그 후, 호스트 유닛에 의하여 부여되는 프로그램 커맨드와 NAND 플래시 메모리(2)의 어드레스에 따라서, SRAM(30)에 기억된 데이터가 페이지 단위로 동시에 NAND 플래시 메모리(2)에 프로그래밍된다.
호스트 유닛이 NAND 플래시 메모리(2) 내의 데이터를 판독하는 경우에는, 우선, 호스트 유닛에 의하여 부여되는 로드 커맨드, NAND 플래시 메모리(2)의 어드레스, 및 SRAM(30)의 어드레스에 따라, 데이터가 NAND 플래시 메모리(2)로부터 판독되고, 데이터 RAM 또는 부트 RAM에 일시적으로 기억된다. 그 후, 호스트 유닛에 의하여 부여되는 리드 커맨드와 SRAM(30)의 어드레스에 따라서, 데이터 RAM 또는 부트 RAM에 유지된 데이터가 인터페이스 유닛(40)을 통해 호스트 유닛으로 판독된다.
이하, 로드 동작 순서의 예를 간단히 설명한다.
우선, 호스트 유닛은 인터페이스 유닛(40)에, 로딩될 NAND 플래시 메모리(2)의 어드레스와 SRAM의 어드레스 뿐만 아니라, 로드 커맨드도 입력한다.
다음, 메모리 시스템(1)에서, 액세스 컨트롤러(50)가 상기 어드레스 및 커맨드를 레지스터(60)에 설정한다. 레지스터(60)에 커맨드가 설정되었다는 것을 검지하면, 커맨드 유저 인터페이스(61)는 내부 커맨드 신호를 발행한다. 로딩의 경우, 커맨드 유저 인터페이스(61)는 로드 커맨드를 발행한다.
커맨드 유저 인터페이스(61)로부터 로드 커맨드를 수신하면, 스테이트 머신(62)이 기동한다. 스테이트 머신(62)은, 각 회로 블록의 필요한 초기화 후, 어드레스/커맨드 발생 회로(63)가 NAND 플래시 메모리(2)에 센스 커맨드를 발행하도록 요청한다.
다음, 어드레스/커맨드 발생 회로(63)는 레지스터(60)에 설정된 어드레스에 대하여 데이터를 감지하도록 시퀀서(14)에 센스 커맨드를 발행한다.
어드레스/커맨드 발생 회로(63)로부터 센스 커맨드를 수신하면, 시퀀서(14)가 기동한다. 시퀀서(14)는, NAND 플래시 메모리(2)의 필요한 초기화 후, 지정된 어드레스를 감지한다. 특히, 시퀀서(14)는 전압 발생 회로(13), 로우 디코더(11), 센스 앰프(미도시), 및 페이지 버퍼(12)를 제어하고, 감지된 데이터를 페이지 버퍼(12)에 기억한다. 그 후, 시퀀서(14)는, 센스 동작의 종료를 스테이트 머신(62)에 통지한다.
다음, 스테이트 머신(62)은 어드레스/커맨드 발생 회로(63)가 NAND 플래시 메모리(2)에 전송 커맨드를 발행하도록 명령한다. 전송 커맨드는 NAND 플래시 메모리(2)로부터 RAM 유닛(3)으로 데이터를 전송하기 위한 명령이다. 이 명령에 따라서, 어드레스/커맨드 발생 회로(63)는 전송 커맨드를 발행하여, 이것을 시퀀서(14)에 출력한다.
전송 커맨드를 받으면, 시퀀서(14)는 페이지 버퍼(12)를, 데이터를 전송할 수 있도록 설정한다. 시퀀서(14)의 제어 하에, 페이지 버퍼(12) 내의 데이터가 NAND 버스를 통해 ECC 버퍼(21)에 전송된다.
또한, 스테이트 머신(62)은 ECC 유닛(20)에 에러 정정 개시 제어 신호를 발행한다. 이 신호에 응답하여, ECC 유닛(20)이 ECC 프로세싱을 실행한다. 다음, ECC 프로세싱된 데이터는 ECC 유닛(20)으로부터 ECC 버스를 통해 DQ 버퍼(31)에 전송된다.
다음, 액세스 컨트롤러(50)의 명령에 따라서, DQ 버퍼(31) 내의 데이터가 SRAM(30)의 메모리 셀 어레이(32)에 기록된다.
이것은 데이터의 로딩의 동작을 완료시킨다. 그 후, 호스트 유닛은 인터페이스 유닛(40)을 통해 리드 커맨드를 발행하고, 이로써 메모리 셀 어레이(32)에 기록된 데이터를 판독한다.
<페이지 버퍼(12), ECC 유닛(20), 및 DQ 버퍼(31) 간의 데이터 전송 방법>
다음, 데이터를 로딩할 때 페이지 버퍼(12), ECC 유닛(20), 및 DQ 버퍼(31) 간의 데이터 전송 방법을 도 5를 이용하여 설명한다. 도 5는 제1 실시예에 따른 데이터 전송 방법의 흐름도이다.
도 5에 도시된 바와 같이, 우선, NAND 플래시 메모리(2)에서, 데이터가 페이지 버퍼(12)에 페이지 단위로 판독된다(단계 S10). 페이지 데이터는 제1 영역(17)으로부터 판독된 2K바이트의 데이터와, 제2 영역으로부터 판독된 64바이트의 데이터를 포함한다. 제2 영역으로부터 판독된 데이터는 320비트의 패리티를 포함한다.
그 후, 어드레스/커맨드 발생 회로(62)로부터의 명령에 응답하여, 시퀀서(14)는 패리티의 선두 어드레스를 NAND 플래시 메모리(2)의 페이지 버퍼(12)에 입력한다(단계 S11). 그 결과, 페이지 버퍼(12)는 패리티를 ECC 버퍼(21)의 제3 유지 유닛(25)에 64비트 단위로 전송한다(단계 S12).
다음, 시퀀서(14)는, 어드레스/커맨드 발생 회로(62)로부터의 명령에 따라, 메인 데이터의 선두 어드레스를 페이지 버퍼(12)에 입력한다(단계 S13). 그 결과, 페이지 버퍼(12)는, 메인 데이터를 ECC 버퍼(21)의 제1 유지 유닛(23)과 제2 유지 유닛(24) 중 어느 하나에 64비트 단위로 전송한다(단계 S14).
메인 데이터의 전송량이 512비트에 도달하고(단계 S15에서 YES), 또한 대상 섹터의 데이터가 전송되었으면(단계 S16에서 YES), 페이지 버퍼(12)로부터 ECC 버퍼(21)로 해당 섹터에서의 데이터의 전송이 정지된다. 대상 섹터가 여전히 전송될 데이터를 유지하고 있으면(단계 S16에서 NO), 페이지 버퍼(12)는 제1 및 제2 유지 유닛들(23, 24) 간에 데이터 전송 목적지를 스위칭하여(단계 S17), 메인 데이터의 전송을 재개한다(단계 S14).
단계 S15에서 메인 데이터의 전송량이 512비트에 도달하면, ECC 엔진(22)은 512비트 단위로 ECC 프로세싱을 수행한다(단계 S18). 즉, ECC 엔진은 패리티와 메인 데이터를 이용하여 신드롬을 생성하여, 데이터에서의 에러를 검출한다. ECC 엔진이 에러를 검출했으면, 에러를 정정한다. 또한, ECC 프로세싱된 메인 데이터가 있으면, 그 메인 데이터는 ECC 버퍼(21)로부터 DQ 버퍼(31)에 전송된다(단계 S19).
메인 데이터의 DQ 버퍼(31)로의 전송량이 512비트에 도달하고(단계 S20에서의 YES), 또한 대상 섹터의 데이터가 전부 전송되었으면(단계 S21에서의 YES), 제3 유지 유닛(25)은 마지막으로, 패리티를 DQ 버퍼에 전송하여(단계 S23), 처리를 완료한다. 대상 섹터가 DQ 버퍼(31)에 전송될 데이터를 여전히 유지하고 있으면(단계 S21에서의 NO), ECC 버퍼(31)는 제1 및 제2 유지 유닛들(23, 24) 간에 데이터 전송원을 스위칭하여(단계 S22), 메인 데이터의 전송을 재개한다(단계 S19).
단계 S14∼S17에서의 메인 데이터의 페이지 버퍼(12)로부터 ECC 버퍼(21)로의 전송 프로세스와, 단계 S18에서의 ECC 프로세싱과, 단계 S19∼S22에서의 메인 데이터의 ECC 버퍼(21)로부터 DQ 버퍼(31)로의 전송 프로세싱은, 서로 평행하게 실행된다. 보다 구체적으로는, 메인 데이터는 512비트 단위로, 제1 유지 유닛(23)과 제2 유지 유닛(24) 간을 스위칭하면서 전송된다. 이것을 구체예를 사용하여 이하에 상세히 설명한다.
<구체예>
데이터 전송의 구체예를 도 6 내지 도 10를 이용하여 설명한다. 도 6은, 데이터의 메모리 셀 어레이(10)로부터의 판독 개시로부터, 메인 데이터와 패리티의 DQ 버퍼(31)로의 전송까지의 프로세싱의 흐름을 설명하는 타이밍 차트이다. 도 7 내지 도 10은 데이터를 전송할 때, 관련된 회로 블록들의 블록도들이다. 도 6에서, "["와 "]" 사이에 끼운 숫자는 대응하는 프로세스를 실행하는 데 필요한 클록들수를 나타낸다.
<<시각 tO ∼ 시각 t1>>
도 6에 도시한 바와 같이, 시각 t0∼시각 t1의 기간에 있어서, 데이터(메인 데이터 + 패리티)가 메모리 셀 어레이(10)로부터 페이지 버퍼(12)로 판독된다(단계 S10).
<<시각 t1∼ 시각 t3>>
그 후, 시각 t1에 있어서, 패리티의 선두 어드레스가 페이지 버퍼(12)에 입력된다(단계 S11, 도 6에서의“Sp"). 패리티의 선두 어드레스의 입력은, 예컨대 10클록들을 요한다. 이에 이어, 시각 t2에서, 패리티는 페이지 버퍼(12)로부터 제3 유지 유닛(25)으로 전송된다(단계 S12, 도 6에서의“Ta-p"). 도 7은 이것을 도시한다. 도 7에 도시된 바와 같이, 예컨대 제1 섹터가 ECC 프로세싱을 받아야 한다면, 제1 섹터에 대응한 패리티(80비트)가 제3 유지 유닛(25)에 전송된다. NAND 버스는 64비트 폭을 가지므로, 패리티의 전송은 2클록들이 필요하다. 이하에서는, 메인 데이터의 제1 섹터를 512비트 단위로 순차적으로 데이터(D1) 내지 데이터(D8)로 칭한다.
<<시각 t3 ∼ 시각 t5>>
다음, 시각 t3 ∼ 시각 t5의 기간의 처리를 도 8을 참조하여 설명한다. 시각 t3에서, 메인 데이터의 선두 어드레스는 페이지 버퍼(12)에 입력된다(단계 S13,도 6에서“Sm"). 메인 데이터의 선두 어드레스의 입력은, 예컨대 10클록들을 요한다. 이에 이어, 시각 t4에서, 메인 데이터(데이터 Dl)가 페이지 버퍼(12)로부터 제1 유지 유닛(23)으로 전송된다(단계 S14, 도 6에서의 "Ta-1"). 512비트의 데이터(데이터 Dl)의 전송은 8클록들을 요한다. 시각 t5에서, 데이터 D1의 전송이 완료된다.
<<시각 t5 ∼ 시각 t6>>
다음에, 시각 t5 ∼ 시각 t6의 기간의 프로세스를 도 9를 참조하면서 설명한다. 시각 t5에서, 페이지 버퍼(12)는, 전송 목적지를 제1 유지 유닛(23)으로부터 제2 유지 유닛(24)으로 스위칭하고(단계 S17), 데이터 D1에 후속하는 데이터 D2를 제2 유지 유닛(24)으로 전송하는 것을 시작한다(단계 S14, 도 6에서의 "Ta-2"). 데이터 D2의 전송에도 8클록들이 필요하다. 시각 t6에서, 데이터 D2의 전송이 종료된다. 동시에, ECC 엔진(22)은, 제1 유지 유닛(23) 내의 데이터 D1와 제3 유지 유닛(25) 내의 패리티를 이용하여 ECC 프로세싱을 실행한다(단계 S18, 도 6에서 "Em-1").
<<시각 t6 ∼ 시각 t7>>
다음, 시각 t6 ∼ 시각 t7의 기간에서의 프로세스를 도 10을 참조하여 설명한다. 시각 t6에서, 페이지 버퍼(12)는 전송 목적지를 제2 유지 유닛(24)으로부터 제1 유지 유닛(23)으로 스위칭하여(단계 S17), 데이터 D2에 후속하는 데이터 D3을 제1 유지 유닛(23)에 전송하는 것을 시작한다(단계 S14, 도 6에서의 "Ta-3"). 데이터 D3의 전송도 8클록들이 필요하다. 시각 t7에서, 데이터 D3의 전송이 종료된다. 동시에, ECC 엔진(22)은 제2 유지 유닛(24) 내의 데이터 D2와 제3 유지 유닛(25) 내의 패리티를 이용하여 ECC 프로세싱을 실행한다(단계 S18, 도 6에서의 "Em-2"). 또한, 데이터 D3의 전송 및 데이터 D2에 관한 ECC 프로세싱과 병행하여, ECC 프로세싱된 데이터 D1가, 제1 유지 유닛(23)으로부터 DQ 버퍼(31)에 전송된다(단계 S19, 도 6에 있어서의 "Tb-1").
<<시각 t7 ∼ 시각 t10>>
이후, 시각 t7 ∼ 시각 t10 의 기간에서, 상기 설명된 시각 t6 ∼ 시각 t7의 기간의 프로세스를 반복한다. 즉, 시각 t7 ∼ 시각 t8의 기간에서, 페이지 버퍼(12)로부터의 데이터 D4의 제2 유지 유닛(24)으로의 전송과, ECC 엔진(22)에 의하여 데이터 D3에 수행된 ECC 프로세싱과, ECC 프로세싱된 데이터 D2의 DQ 버퍼(31)로의 전송이, 동시에 실행된다. 나머지는 상술된 바와 같다.
<<시각 tl0 ∼ 시각 t12>>
시각 tl0에서, 데이터 D8의 페이지 버퍼(12)로부터 ECC 버퍼(21)로의 전송이 완료된다(단계 S16에서 YES). 즉, 4096비트의 메인 데이터의 ECC 버퍼(21)로의 전 송이 종료된다. 다음, 시각 tll에서, 데이터 D8에 수행된 ECC 프로세싱이 종료된다. 또한, 시각 tl1에서, 데이터 D8이 DQ 버퍼(31)에 전송되는 것이 시작된다(단계 S19). 시각 t12에서, 전송이 완료된다(단계 S21에서 YES).
<<시각 t12 ∼ 시각 t13>>
마지막으로, 시각 t12 ∼ 시각 t13의 기간에 있어서, 제3 유지 유닛(25)에 유지된 패리티가 DQ 버퍼(31)에 전송되어(단계 S23), 일련의 프로세스들을 종료한다. 다음, DQ 버퍼 내의 데이터가 메모리 셀 어레이(32)에 기억된다.
<효과>
이상과 같이, 제1 실시예의 데이터 전송 방법으로, 메인 데이터보다도 먼저 패리티가 페이지 버퍼(12)로부터 판독된다. 또한, ECC 프로세싱은 섹터 단위가 아니라, 섹터가 더 분할된 단위로 실행된다. 따라서, 페이지 버퍼(12)로부터 ECC 유닛(20)으로의 데이터 전송과, ECC 프로세싱과, ECC 유닛(20)으로부터 DQ 버퍼(31)로의 데이터 전송이 병렬로 수행될 수 있다. 그 결과, 데이터 로딩 속도가 증가될 수 있고, 따라서 메모리 시스템의 동작 성능이 향상될 수 있다. 본 효과는 이하에 상세히 설명한다.
통상, ECC 기능을 갖는 NAND 플래시 메모리에서, 우선, 메인 데이터 모두가 ECC 유닛으로 판독된다. 그 후 패리티가 판독되고, ECC 프로세싱이 실행된다. 이 경우, 도 6에 설명된 데이터의 데이터 전송 시퀀스와, 이 시퀀스에 요하는 클록들 수는 다음과 같다.
(1) 선두 어드레스를 페이지 버퍼에 입력 : 10클록들
(2) 4096비트의 메인 데이터를 ECC 유닛으로 전송 : 64클록들
(3) 패리티를 ECC 유닛으로 전송 : 1클록
(4) ECC 프로세스 : 4클록들
(5) ECC 프로세싱된 4096비트의 메인 데이터를 DQ 버퍼로 전송 : 64클록들
(6) 패리티를 DQ 버퍼로 전송 : 1클록
따라서, 모든 프로세스들을 위하여 144클록들이 필요하다. 4096비트의 메인 데이터가 동시에 ECC 프로세싱되므로, 패리티는 13비트만을 요하고, 패리티의 전송은 1클록이 필요하다. 그러나, 전체로서의 프로세스는 144클록들이라는, 매우 장시간이 필요하다. 이것은, 메인 데이터의 사이즈가 커질수록, 데이터 로딩 속도가 극단적으로 저하한다는 문제를 유발한다.
그러나, 제1 실시예의 방법으로, 메인 데이터가 복수(예컨대 8개)로 분할되고, 분할한 단위로 ECC 프로세싱이 실행된다. 제1 실시예의 방법의 데이터 전송의 흐름은 다음과 같다.
(1) 패리티의 선두 어드레스를 페이지 버퍼(12)에 입력 : 10클록들
(2) 패리티를 ECC 유닛(20)으로 전송 : 2클록들
(3) 메인 데이터의 선두 어드레스를 페이지 버퍼(12)로 입력 : 10클록들
(4) (4-1) 4096비트의 메인 데이터를 ECC 유닛으로 전송
(4-2) 512비트의 메인 데이터의 전송이 완료되자마자, 512비트 단위로 ECC 프로세싱을 수행
(4-3) 512비트의 메인 데이터가 ECC 프로세싱되자마자, 512비트 단위로 DQ 버퍼로 메인 데이터를 전송 : (4) 전체로서 (8×10)= 80클록들 필요
(5) 패리티를 DQ 버퍼로 전송 : 2클록들
즉, 모든 프로세스에 필요한 클록들 수는 104클록들이다. 512비트 단위로 ECC 프로세싱이 실행되므로, 패리티는 매 4096비트에 대하여 80비트 필요하다. 또한, 페이지 버퍼(12)에, 메인 데이터의 선두 어드레스 뿐만 아니라, 패리티의 선두 어드레스도 입력되어야 한다. 메인 데이터의 ECC 유닛으로의 전송과, ECC 프로세싱과, 메인 데이터의 DQ 버퍼(31)로의 전송은 병렬로 실행될 수 있고, 이에 따라, 데이터 로딩 속도가 각별하게 향상되게 된다.
상기 방법을 실현하기 위해서, 제1 실시예에서의 메인 데이터보다 먼저, 80비트의 패리티가 판독된다. 이것은, 패리티 판독에 요하는 클록들 수를 최소(2클록들)로 억제한다. 또한, ECC 프로세싱의 단위와 동일하게 되는 만큼의 메인 데이터가 판독된 시점에서, ECC 프로세싱이 즉시 실행될 수 있다.
또한, 복수의 메인 데이터용의 ECC 버퍼들(제1 유지 유닛(23)과 제2 유지 유닛(24))이 제공된다. 이것은, 페이지 버퍼(12)로부터 ECC 버퍼(21)로의 메인 데이터의 전송과, ECC 프로세싱된 메인 데이터의 DQ 버퍼(31)로의 전송을 병행하여 실행할 수 있게 한다.
[제2 실시예]
다음, 본 발명의 제2 실시예에 따른 메모리 시스템과 데이터 전송 방법을 설명한다. 제2 실시예는 제1 실시예에서의 4096비트 단위로 ECC 프로세싱을 실행하는 방법에 관한 것이다. 제2 실시예의 메모리 시스템의 블록 구성과, 대략적인 동 작 흐름은 제1 실시예의 것과 동일하다. 따라서, 이하로서는 제1 실시예와 상이한 점만을 설명한다.
도 11은 제2 실시예에서 데이터의 1 페이지의 개략도이다. 도 11에 도시된 바와 같이, 메모리 셀 어레이(10)의 제1 영역(17)으로부터 판독된 데이터는, 제1 실시예에 설명된 도 3과 동일하다. 도 11은, 각 섹터에 대하여 필요한 패리티의 비트들수는 제1 실시예에서 80비트이고, 제2 실시예에서 13비트인 점에서, 도 3과 상이하다. 이 이유는, ECC 엔진(22)이 4096비트를 동시에 ECC 프로세싱을 하기 때문이다(4096 = 212).
도 12은 제2 실시예에 따른 ECC 유닛(20)의 블록도이다. 도 12에 도시된 바와 같이, ECC 버퍼(21)는, 메인 데이터 유지 유닛(26)과 패리티 유지 유닛(27)을 포함한다. 메인 데이터 유지 유닛(26)은, 4096비트의 메인 데이터를 유지할 수 있도록 구성되어 있다. 패리티 유지 유닛(27)은, 제1 실시예에서 설명된 제3 유지 유닛(25)과 동일하다. 메인 데이터 유지 유닛(26) 및 패리티 유지 유닛(27)은, 페이지 버퍼(12)와 NAND 버스로 접속되고, DQ 버퍼(31)와 ECC 버스로 접속된다.
<페이지 버퍼(12), ECC 유닛(20) 및 DQ 버퍼(31) 간의 데이터 전송 방법>
다음, 데이터의 로딩시 페이지 버퍼(12), ECC 유닛(20) 및 DQ 버퍼(31) 간의 데이터 전송 방법을 도 13를 이용하여 상세히 설명한다.
도 13은 제2 실시예에 따른 데이터 전송 방법의 흐름도이다.
도 13에 도시된 바와 같이, 제1 실시예에 설명된 도 5에서와 같이 단계 S10, S 11의 프로세스들 후, 페이지 버퍼(12)는 패리티를 패리티 유지 유닛(27)에 전송한다(단계 S30). 다음, 단계 S13의 프로세스 후, 페이지 버퍼(12)는 메인 데이터를 메인 데이터 유지 유닛(26)에 전송한다(단계 S31).
메인 데이터의 모든 비트(4096비트)가 메인 데이터 유지 유닛(26)에 전송된 후(단계 S32에서 YES), ECC 엔진(22)은 ECC 프로세싱을 실행한다(단계 S33).
ECC 프로세싱이 종료된 후, 메인 데이터가 DQ 버퍼에 전송된다(단계 S34). 다음, 메인 데이터의 모든 비트(4096비트)가 DQ 버퍼(31)에 전송된 후(단계 S35에서 YES), 패리티가 DQ 버퍼(31)에 전송된다(단계 S36).
<구체예>
데이터 전송의 구체예를 도 14을 이용하여 설명한다. 도 14는, NAND 플래시 메모리(2)로부터 데이터가 판독되기부터 메인 데이터와 패리티가 DQ 버퍼(31)로 전송되기까지의 프로세싱의 흐름을 설명하는 타이밍 차트이다. 도 14에서, 도 6에 서와 같이“["와 "]" 사이에 끼운 숫자는 대응하는 프로세스를 실행하는 데 필요한 클록들수를 나타낸다.
<<시각 t0 ∼ 시각 t5>>
도 14에 도시된 바와 같이, 시각 t0 에서 시각 t5까지의 기간에서의 프로세스는, 제1 실시예에서 설명된 도 6에서의 것과 동일하고(단계 S10 ∼ S31), 다른 것은, 패리티의 전송에 필요한 클록들수가 제2 실시예에서 단지 1이라는 점이다. 이것은, 제2 실시예에서의 패리티의 비트수가 제1 실시예에서보다 적기 때문이다. 시각 t5까지, 512비트의 메인 데이터가 메인 데이터 유지 유닛(26)에 전송된다.
<<시각 t5 ∼ 시각 t7>>
시각 t5부터, 페이지 버퍼(12)가 나머지 3584비트의 메인 데이터를 메인 데이터 유지 유닛(26)에 전송한다(단계 S31). 제1 실시예에서와는 달리, 시각 t5 내지 시각 t7의 기간에서, ECC 프로세싱이나 데이터의 DQ 버퍼(31)로의 전송은 실행되지 않는다. 메인 데이터의 메인 데이터 유지 유닛(26)으로의 전송은 총 (8 X 8클록들)= 64클록들이 필요하다.
<<시각 t7 ∼ 시각 t8>>
시각 t6에서 4096비트의 메인 데이터의 전송이 종료된 후, ECC 엔진(22)은 ECC 프로세싱의 실행을 시작한다. 상술한 대로, 4096비트가 ECC 프로세싱을 동시에 받는다(단계 S33).
<<시각 t8 ∼ 시각 t12>>
시각 t8에서 ECC 프로세싱이 종료된 후, ECC 프로세싱된 메인 데이터가 DQ 버퍼에 전송된다(단계 S34). 메인 데이터의 DQ 버퍼(31)에의 전송은 총 (8 X 8클록들)= 64클록들이 필요하다.
<<시각 t12 ∼ 시각 t13>>
마지막으로, 시각 t12 ∼ 시각 t13의 기간에 있어서, 패리티 유지 유닛(27)에 유지된 패리티가 DQ 버퍼(31)에 전송되고, 일련의 프로세스들을 종료한다. 이 전송에 필요한 클록들수는 1클록이다.
<효과>
이상과 같이, 제1 실시예에서와 같이 메인 데이터보다도 먼저 패리티를 판독 하는 방법을 이용하여, 데이터 전송은 ECC 프로세싱과 병행하여 수행되지 않을 수도 있다. 이 경우, 도 14에 도시된 바와 같이 모든 프로세스들에 요하는 클록들수가 154이지만, ECC 버퍼(21)에서 메인 데이터를 유지하기 위한 버퍼들 수는 단지 하나(메인 데이터 유지 유닛(26))이고, 패리티의 비트들수를 작게 할 수 있다.
[제3 실시예]
다음에, 본 발명의 제3 실시예에 따른 메모리 시스템과 데이터 전송 방법을 설명한다. 제3 실시예는, 제1 실시예에서 설명된 데이터 전송 방법이 프로그램 동작에 적용된 것이다. 제3 실시예의 메모리 시스템의 블록 구성과, 대략적인 동작 흐름은 제1 실시예의 것과 동일하다. 그러므로, 제1 실시예와 상이한 점만 이하에 설명한다.
도 15는, 제3 실시예의 메모리 시스템(1)에서 데이터 프로그래밍 시 DQ 버퍼(31), ECC 유닛(20), 및 페이지 버퍼(12) 간에 데이터를 전송하는 방법을 설명하는 흐름도이다. 제3 실시예는, 로드 동작에서의 데이터 흐름이 페이지 버퍼(12) -> ECC 유닛(20) -> DQ 버퍼(31)이고, 프로그램 동작에서 DQ 버퍼(31) -> ECC 유닛(20) -> 페이지 버퍼(12)인 점에서, 도 5에 설명된 제1 실시예와 상이하다.
도 15에 도시된 바와 같이, 어드레스/커맨드 발생 회로(62)로부터의 명령에 따라서, 시퀀서(14)가 메인 데이터의 선두 어드레스를 페이지 버퍼(12)에 미리 입력한다(단계 S40). 다음, 액세스 컨트롤러(50)로부터의 명령에 따라서, DQ 버퍼(31)가 메인 데이터와 스페어 데이터(스페어 데이터는 메모리 셀 어레이(10)의 제2 영역에 기록될 데이터)를, ECC 버퍼(21)의 제1 유지 유닛(23) 또는 제2 유지 유닛(24) 중 어느 한쪽에 64비트 단위로 전송한다(단계 S41). 이하, 메인 데이터와 스페어 데이터를 구별하지 않는 경우에는, 이들을 총칭하여 데이터라고 칭한다.
메인 데이터의 전송량이 512비트에 도달하고(단계 S42에서 YES), 또한 대상 섹터에 전송될 데이터가 여전히 있으면(단계 43에서 NO), 액세스 컨트롤러(50)는 데이터의 전송 목적지를 제1 유지 유닛(23)으로부터 제2 유지 유닛(24)으로 또는 그 역으로 스위칭하고(단계 S44), 데이터의 전송을 재개한다(단계 S41). 대상 섹터에서의 모든 데이터가 전송되었으면(단계 S43에서 YES), DQ 버퍼(31)는 ECC 버퍼(21)에의 데이터 전송을 정지한다. 또한, 패리티가 이미 생성되었던 메인 데이터가 있으면, ECC 버퍼(21)는 메인 데이터를 페이지 버퍼(12)에 전송한다(단계 S46).
메인 데이터의 페이지 버퍼(12)에의 전송량이 512비트에 도달하고(단계 S47에서 YES), 또한 대상 섹터의 메인 데이터 모두가 페이지 버퍼(12)에 전송되었으면(단계 S48에서 YES), ECC 유닛(21)은 제3 유지 유닛(25) 내의 패리티를 페이지 버퍼(12)에 64비트 단위로 전송한다(단계 S50). 그 후, 페이지 버퍼(12)에 기억된 메인 데이터와 패리티가 NAND 플래시 메모리(2)의 메모리 셀 어레이(10)에 페이지 단위로 기록된다(단계 S51).
한편, 단계 S48에서, 대상 섹터에 페이지 버퍼(12)에 전송될 데이터가 여전히 있으면(단계 S48에서 NO), ECC 버퍼(31)는 데이터 전송원을 제1 유지 유닛(23)으로부터 제2 유지 유닛(24)으로 또는 그 역으로 스위칭하고(단계 S49), 패리티가 이미 생성되었던 메인 데이터의 전송을 재개한다(단계 S46).
단계들 S41 ∼ S44에 있어서의 데이터의 DQ 버퍼(31)로부터 ECC 버퍼(21)로의 전송 프로세싱과, 단계 S45에서의 ECC 프로세싱과, 단계들 S46∼S49에 있어서의 메인 데이터의 ECC 버퍼(21)로부터 페이지 버퍼(12)에의 전송 프로세싱은 평행하게 실행된다. 보다 구체적으로는 데이터 로딩시와 같이, 512비트의 단위로 이들 프로세스들이 실행되고, 제1 유지 유닛(23)이 제2 유지 유닛(24)으로 또는 그 역으로 스위칭된다. 이것을 구체예를 이용하면서 이하에 설명한다.
<구체예>
데이터 전송의 구체예를 도 16을 이용하여 설명한다. 도 16은 NAND 플래시 메모리(2)에 페이지 버퍼(12)의 선두 어드레스가 입력되기부터, 메모리 셀 어레이(10)에 데이터가 프로그래밍될 때까지의 프로세싱의 흐름을 설명하는 타이밍 차트이다. 도 16에서, "["와 "]" 사이에 끼운 숫자는, 대응하는 프로세스를 실행하는 데 필요한 클록들수를 나타낸다.
<<시각 tO ∼ 시각 t1>>
도 16에 도시한 바와 같이, 시각 t0 ∼ 시각 t1의 기간에 있어서, 메인 데이터의 선두 어드레스는 페이지 버퍼(12)에 입력된다(단계 S40, 도 16에서의“S"). 메인 데이터의 선두 어드레스의 입력은, 예컨대 10클록들이 필요하다.
<<시각 t1 ∼ 시각 t2>>
다음, 시각 t1에서, DQ 버퍼(31)가 메인 데이터 D1을 제1 유지 유닛(23)에 전송한다(단계 S41, 도 16에서의 "Tb-1"). 512비트의 데이터(데이터 D1)의 전송은 8클록들이 필요하다. 시각 t2에서, 데이터 D1의 전송이 완료된다.
<<시각 t2 ∼ 시각 t3>>
시각 t2에서, DQ 버퍼(31)는, 전송 목적지를 제1 유지 유닛(23)에서 제2 유지 유닛(24)으로 스위칭하고(단계 S44), 데이터 D1에 후속하는 데이터 D2의 제2 유지 유닛(24)에의 전송을 시작한다(단계 S41, 도 6에서의 "Tb-2"). 데이터 D2의 전송은 8클록들이 필요하다. 시각 t3에서, 데이터 D2의 전송이 완료된다. 동시에, ECC 엔진(22)은 제1 유지 유닛(23) 내의 데이터 D1를 이용하여 ECC 프로세싱을 수행하여, 패리티를 생성한다(단계 S45, 도 16에서의 "Pm-1").
<<시각 t3 ∼ 시각 t4>>
시각 t3에서, DQ 버퍼(31)는 전송 목적지를 제2 유지 유닛(24)에서 제1 유지 유닛(23)으로 스위칭하고(단계 S44), 데이터 D2에 후속하는 데이터 D3의 제1 유지 유닛(24)으로의 전송을 시작한다(단계 S41, 도 16에서의 "Tb-3"). 데이터 D3의 전송은 8클록들이 필요하다. 시각 t4에서, 데이터 D3의 전송이 완료된다. 동시에, ECC 엔진(22)은 제2 유지 유닛(24) 내의 데이터 D2를 이용하여 ECC 프로세싱을 수행하여, 패리티를 생성한다(단계 S45, 도 16에서의 "Pm-2"). 또한, 시각 t3에서 데이터 D1에 대한 패리티의 생성이 완료되었으므로, 데이터 D3의 전송 및 데이터 D2의 ECC 프로세싱과 병행하여, 제1 유지 유닛(23)은 ECC 프로세싱된 데이터 D1을 페이지 버퍼(12)에 전송한다(단계 S46, 도 6에서의 "Ta-1").
<<시각 t4 ∼ 시각 t7>>
이후, 시각 t4 ∼ 시각 t7의 기간에서, 상기 설명된 시각 t3 ∼ 시각 t4의 기간에서의 프로세스들을 반복한다. 구체적으로, 시각 t4 ∼ 시각 t5의 기간에서, DQ 버퍼(31)로부터 데이터 D4의 제2 유지 유닛(24)에의 전송("Tb-4")과, ECC 엔진(22)에 의한 데이터 D3에 수행된 ECC 프로세싱("Pm3")과, ECC 프로세싱된 데이터 D2의 페이지 버퍼(12)로의 전송 프로세스("Ta-2")가 동시에 수행된다. 나머지는 상술된 바와 같다. 다음, 시각 t7에서, 메인 데이터의 DQ 버퍼(31)로부터 ECC 버퍼(21)에의 전송이 완료된다.
<<시각 t7 ∼ 시각 t8>>
시각 t7 ∼ 시각 t8의 기간에서, DQ 버퍼(31)로부터 패리티의 제3 유지 유닛(25)에의 전송("Tb-p")과, ECC 엔진(22)에 의한 데이터 D8에 수행되는 ECC 프로세싱("Pm8")과, ECC 프로세싱된 데이터 D7의 페이지 버퍼(12)에의 전송의 프로세스("Ta-7")가 동시에 수행된다.
<<시각 t8 ∼ 시각 t9>>
시각 t8 ∼ 시각 t9의 기간에서, ECC 엔진(22)에 의한 ECC 프로세싱("Pp")과, ECC 프로세싱된 데이터 D8의 페이지 버퍼(12)에의 전송 프로세스("Ta-8")가 동시에 수행된다. ECC 프로세싱(Pp)에서, ECC 프로세싱(Pm1∼Pm8)에서 획득된 프로세싱 결과에 기초하여 80비트의 패리티가 생성된다. 즉, 패리티는 4096비트의 메인 데이터를 이용하여 생성된다. 생성된 패리티는, ECC 버퍼(21)에 덮어쓰기된다. 다음, 시각 t9에서, 메인 데이터의 ECC 버퍼(21)로부터 페이지 버퍼(12)에의 전송이 종료된다(단계 S48에서 YES).
<<시각 t9 ∼ 시각 tl0>>
시각 t9 ∼ 시각 t10의 기간에서, ECC 유닛(20)은 제3 유지 유닛(25)에 유지 된 패리티를 페이지 버퍼(12)로 전송한다(단계 S50).
<<시각 t10 ∼ 시각 t11>>
다음, 페이지 버퍼(12)에 전송된 메인 데이터와 패리티가 메모리 셀 어레이에서 프로그래밍되고(단계 S51), 일련의 프로세스들이 종료된다.
<효과>
이상과 같이, 제3 실시예의 데이터 전송 방법으로, 제1 실시예에서와 같이, 섹터가 분할된 단위들로 ECC 프로세싱이 수행된다. 따라서, DQ 버퍼(31)로부터 ECC 유닛(20)에의 데이터의 전송과, ECC 프로세싱과, ECC 유닛(20)으로부터 페이지 버퍼(12)에의 데이터 전송이 병렬로 수행될 수 있다. 그 결과, 데이터 프로그래밍 속도가 향상될 수 있고, 메모리 시스템의 동작 성능이 향상될 수 있다. 본 효과를 이하에 상세히 설명한다.
통상의 NAND 플래시 메모리로, 제1 실시예에서 설명한 로드 동작에서와 같이 프로그램 동작시도 모든 메인 데이터가 ECC 유닛에 전송된 후 패리티가 생성되고, 그 후 메인 데이터와 패리티가 페이지 버퍼에 전송된다. 따라서, DQ 버퍼로부터 페이지 버퍼로의 데이터의 전송은 로드 동작에서와 같이 144클록들이 필요하다.
제3 실시예의 방법에서, 메인 데이터가 복수개(예컨대 8개)로 분할되어, 분할된 단위들로 ECC 프로세싱이 수행된다. 제3 실시예의 방법에서의 데이터 전송의 흐름은 다음과 같다.
(1) 메인 데이터의 선두 어드레스를 페이지 버퍼(12)에 입력: 10클록들
(2)(2-1) 4096비트의 메인 데이터와 패리티를 ECC 유닛으로 전송
(2-2) 512비트의 메인 데이터의 전송이 완료되자마자, 512비트 단위로 ECC 프로세싱을 수행
(2-3) 512비트의 메인 데이터가 ECC 프로세싱되자마자, 512비트 단위들로 메인 데이터를 페이지 버퍼로 전송
(2-4) 페이지 버퍼로 패티리를 전송 : (2) 전체로 (8 X 10)+ 2 = 82클록들.
즉, 모든 프로세스들에 필요한 클록들수는 92클록이다. 로드 동작시와는 달리, 프로그램 동작에서, 모든 메인 데이터가 제공된 후 패리티가 생성된다(도 16에서 "Pp"). 따라서, DQ 버퍼(31)로부터 ECC 버퍼(21)에의 데이터 전송의 순서는 메인 데이터 -> 패리티이다. 따라서, 메인 데이터의 선두 어드레스는 단지 한번 입력되어야 한다. 따라서, 프로그래밍 속도가 대폭 향상될 수 있다.
[제4 실시예]
다음, 본 발명의 제4 실시예에 따른 메모리 시스템을 설명한다. 제4 실시예는 제1 내지 제3 실시예들에서 설명된 메모리 시스템에 있어서의 클록과 데이터의 전송 방법에 관한 것이다. 이하에서는, 제1 내지 제3 실시예와 상이한 점만을 설명한다.
<클록 및 데이터의 전송 경로에 관해서>
도 17은 제4 실시예의 메모리 시스템(1)의 일부의 블록도이고, 특히 클록과 데이터의 전송 경로에 착안한다. 도 17은, 제4 실시예에 관련된, NAND 플래시 메모리(2), ECC 유닛(20), 및 SRAM(30) 각각의 내부 구조의 일부만을 도시한다.
도 17에 도시된 바와 같이, 메모리 시스템(1)은 클록을 전파하기 위한 스위치들(70 내지 72)을 포함한다. 스위치(70)는, 컨트롤러 유닛(4)와 NAND 플래시 메모리(2) 사이의 클록의 전파를 스위칭한다. 스위치(70)는 데이터 로딩 시에 온된다. 스위치(71)는 오실레이터(16)와 SRAM(30) 사이의 클록의 전파를 스위칭한다. 스위치(71)는 데이터 프로그래밍 시에 온된다. 스위치(72)는 컨트롤러 유닛(4) 및 ECC 유닛(20)과, NAND 플래시 메모리(2) 사이의 클록의 전파를 스위칭한다. 스위치(72)는 데이터 프로그래밍 시에 온된다.
NAND 플래시 메모리(2), ECC 유닛(20), 및 SRAM(30)은, 제1 내지 제3 실시예들에 설명된 구성 외에, 각각 입출력 유닛들(I/O)(80,28,35)을 포함한다. 데이터는 클록에 동기하여 입출력 유닛들(80, 28, 35)을 통하여 외부로 입력 또는 외부로부터 출력된다.
이하, NAND 플래시 메모리(2)와 ECC 유닛(20) 간에 교환된 데이터를 데이터 DATA_NAND으로 칭한다. ECC 유닛(20)과 SRAM(30) 간에 교환된 데이터는 데이터 DATA_RAM으로 칭한다.
<데이터 로딩에 관하여>
다음, 데이터 로딩 시에 클록과 데이터의 전파를 도 18을 참조하여 설명한다. 도 17과 같이, 도 18은 메모리 시스템(1)의 블록도이고, 특히 데이터가 로딩되는 방식을 도시한다.
도 18에 도시된 바와 같이, 스위치(70)가 온되고, 스위치(71,72)는 오프된다. 오실레이터(16)는 내부 클록(ACLK)을 생성하고, 이것을 컨트롤러 유닛(4)에 공급한다. 컨트롤러 유닛(4)은 내부 클록(ACLK)에 동기하여 동작하고, 또한 내부 클록(ACLK)에 기초로 하여 내부 클록(CLK_LOAD1)을 생성한다.
내부 클록(CLK_LOAD1)은 스위치(70)를 통해 NAND 플래시 메모리(2)에 공급된다. NAND 플래시 메모리(2)는 내부 클록(CLK_LOAD1)에 동기하여 동작한다. 그 입출력 유닛(80)은, 내부 클록(CLK_LOAD1)에 동기하여 데이터(DATA_NAND)(메인 데이터와 패리티)를 ECC 유닛(20)에 출력한다.
내부 클록(CLK_LOAD1)은 NAND 플래시 메모리(2) 뿐만 아니라 ECC 유닛(20)으로도 공급된다. ECC 유닛(20)은 내부 클록(CLK_LOAD1)에 동기하여 동작한다. 따라서 ECC 유닛(20)의 입출력 유닛(28)은 NAND 플래시 메모리(2)로부터 공급되는 데이터(DATA_NAND)를, 내부 클록(CLK_LOAD1)에 동기하여 받아 들인다.
또한, ECC 유닛(20)은 지연 회로(미도시), 버퍼 등으로 내부 클록(CLKL_LOAD1)을 파형 정형을 포함하여 처리함으로써, 내부 클록(CLK_LOAD2)을 생성한다. 다음, ECC 유닛(20)은, ECC 프로세싱을 수행한 후, 데이터(DATA_RAM)(에러 정정된 메인 데이터와 패리티)를, 내부 클록(CLK_LOAD2)에 동기하여, 입출력 유닛(28)으로부터 SRAM(30)에 출력한다.
ECC 유닛(30)은 데이터(DATA_RAM)과 함께 내부 클록(CLK_LOAD2)도 SRAM(30)에 공급한다. SRAM(30)은 내부 클록(CLK_LOAD2)에 동기하여 동작한다. 따라서 SRAM(30)의 입출력 유닛(35)은 ECC 유닛(20)으로부터 공급되는 데이터(DATA_RAM)를, 내부 클록(CLK_LOAD2)에 동기하여 받아 들인다.
도 19는 데이터 로딩시 내부 클록들(ACLK, CLK_LOADl, CLK_LOAD2) 및 데이 터(DATA_NAND, DATA_RAM)의 타이밍 차트이다.
도 19에 도시된 바와 같이, 데이터(DATA_NAND)는 내부 클록(CLK_LOAD1)에 동기하여 NAND 플래시 메모리(2)로부터 출력되어, ECC 유닛(20)에 의하여 받아 들여진다. 데이터(DATA_RAM)는 내부 클록(CLK_LOAD2)에 동기하여 ECC 유닛(20)으로부터 출력되고, SRAM(30)에 의하여 받아 들여진다.
<데이터 프로그래밍에 관하여>
다음, 데이터 프로그래밍 시에 클록과 데이터가 전파되는 방식을 도 20을 이용하여 설명한다. 도 18과 같이, 도 20은 메모리 시스템(1)의 블록도이고, 특히 데이터 프로그래밍을 도시한다.
도 20에 도시된 바와 같이, 스위치(71,72)가 온되고, 스위치(70)는 오프된다. 오실레이터(16)는 내부 클록(ACLK)을 생성하고, 이것을 컨트롤러 유닛(4)에 공급한다. 컨트롤러 유닛(4)은 내부 클록(ACLK)에 동기하여 동작한다.
내부 클록(ACLK)은 스위치(71)를 통해 SRAM(30)에도 공급된다. SRAM(30)은 내부 클록(CLK_LOAD1)에 동기하여 동작한다. 그 입출력 유닛(31)은, 내부 클록(ACLK)에 동기하여 데이터(DATA_NAND)(메인 데이터와 패리티)를 ECC 유닛(20)에 출력한다.
SRAM(30)은, 데이터(DATA_RAM) 뿐만 아니라 내부 클록도 ECC 유닛(20)에 공급한다. 이 내부 클록은 SRAM(30)에서 내부 클록(ACLK)을 기초로 하여 생성되고, 이 후, 내부 클록(CLK_PG1)으로 칭한다. ECC 유닛(20)은 내부 클록(CLK_PG1)에 동기하여 동작한다. 따라서, ECC 유닛(20)은 SRAM(30)으로부터 공급된 데이 터(DATA_RAM)를, 내부 클록(CLK_PG1)에 동기하여 받아 들인다.
또한, ECC 유닛(20)은, 지연 회로(미도시), 버퍼 등으로 내부 클록(CLK_PG1)을 파형 정형을 포함하여 프로세싱함으로써, 내부 클록(CLK_PG2)을 생성한다. 다음, ECC 유닛(20)은 내부 클록(CLK_PG2)에 동기하여, 데이터(DATA_NAND)(메인 데이터와 생성된 패리티)를 NAND 플래시 메모리(2)에 출력한다.
ECC 유닛(30)은 데이터(DATA_NAND)와 함께 내부 클록(CLK_PG2)도 NAND 플래시 메모리(2)에 공급한다. NAND 플래시 메모리(2)는 내부 클록(CLK_PG2)과 동기하여 동작한다. 따라서, NAND 플래시 메모리(2)는 ECC 유닛(20)으로부터 공급된 데이터(DATA_NAND)를 내부 클록(CLK_PG2)에 동기하여 받아 들인다.
도 21은 데이터 프로그래밍 시에 내부 클록들(ACLK, CLK_PG1, CLK_PG2) 및 데이터(DATA_NAND, DATA_RAM)의 타이밍 차트이다.
도 21에 도시된 바와 같이, 데이터(DATA_RAM)는 내부 클록(CLK_PG1)에 동기하여 NAND 플래시 메모리(2)로부터 출력되어, 내부 클록(CLK_PG1)에 동기하여 ECC 유닛(20)에 의해 받아 들여진다. 데이터(DATA_NAND)는, 내부 클록(CLK_PG2)에 동기하여 ECC 유닛(20)으로부터 출력되어, NAND 플래시 메모리(2)에 의하여 받아 들여진다.
<효과>
상술된 바와 같이, 제4 실시예의 메모리 시스템으로, 각 기능 블록들 간의 데이터 전송의 흐름에 따라 내부 클록이 전파된다. 바꿔 말하면, 데이터 로딩과 데이터 프로그래밍 간에 기준 클록이 상이하게 되어, 클록에 동기하여 데이터 전송 을 수행한다. 이것은, 메모리 시스템(1) 내에서의 데이터 전송 정밀도를 향상할 수 있게 하고, 메모리 시스템의 동작 신뢰성을 향상시킬 수 있게 한다. 본 효과를 이하에 설명한다.
최근, 휴대 전화의 다기능화 및 고성능화가 진행함에 따라서, 휴대 전화 시스템도 점차 다양화되어, 현재 여러가지 종류의 시스템이 사용되고 있다. 각각의 시스템에 사용되는 메모리는 가장 알맞은 종류와 용량의 조합을 갖는다. 이들 중 하나가 도 1에 도시된 메모리 시스템(1)이다. 메모리 시스템(1)에서, 컨트롤러 유닛(4)과, NAND 플래시 메모리(2)와, 고속 판독 성능을 갖는 NOR 인터페이스(인터페이스 유닛(40))와, 버퍼 메모리로서 동작하는 SRAM(30)과, 데이터 정정 기능을 갖는 ECC 유닛(20)이 하나의 칩에 집적된다. 복수의 회로 블록들(시스템들)이 하나의 칩에 집적되는 경우, 복수의 시스템들 간의 데이터 전송의 정밀도를 향상시키는 기술이 중요하다.
클록 발생기에 의하여 발생된 클록에 기초하여 복수의 시스템들이 동작하게 되는 경우, 다음의 문제점이 발생한다. 도 22는 컨트롤러 유닛(4), NAND 플래시 메모리(2), ECC 유닛(20) 및 SRAM(30)을 포함하는 시스템의 블럭도이다.
이 구성으로, ECC 유닛(20)과 SRAM(30)은 오실레이터(16)에 의하여 발생된 내부 클록(ACLK)에 동기하여 동작한다. 컨트롤러 유닛(4)은 내부 클록(ACLK)에 기초하여 내부 클록(CLK_LOAD)을 생성한다. 내부 클록(CLK_LOAD)에 동기하여 NAND 플래시 메모리(2)가 동작한다.
도 23은 이 경우에서 각종 신호의 타이밍 챠트이다. 도 23에서,“ACLK"는 오실레이터(16)에 의하여 발생된 클록을 나타낸다. "ACLK(ECC)" 및 "ACLK(SRAM)"은 각각 ECC 유닛(20) 및 SRAM(30)에 실제로 입력된 클록들을 나타낸다.
내부 클록들(ACLK(ECC), ACLK(SRAM))은 내부 클록(ACLK)을 지연함으로써 획득된 신호들이다. 오실레이터(16)로부터 ECC 유닛(20)으로의 경로에서의 지연은 오실레이터(16)로부터 SRAM(30)으로의 경로에서의 지연과는 통상적으로 상이하다. 경우에 따라서는 이들 간에 차이가 상당히 크다. 또한, 이들 간의 지연량의 차는, 데이터(DATA_RAM)가 ECC 유닛(20)으로부터 SRAM(30)에 전송될 때 발생하는 지연량과는 관련성이 없다. 마찬가지로, 내부 클록(ACLK 및 CLK_LOAD) 간의 위상차(이들 간의 지연량의 차)는, 데이터(DATA_NAND)가 NAND 플래시 메모리(2)로부터 ECC 유닛(20)에 전송될 때 발생하는 지연량과는 관련성이 없다.
그 결과, 도 23에 도시된 예에서, 데이터(DATA_NAND)에서, 셋업 타임(tS1)은 홀드 타임(tH1)보다 극단적으로 짧다. 또한, 데이터(DATA_RAM)에서, 홀드 타임(tH2)은 셋업 타임(tH2)보다 극단적으로 짧다. 따라서, 셋업 타임과 홀드 타임 간의 큰 불균형이 발생하여, 데이터를 정확하게 전송하기 위한 타이밍 제어를 매우 엄격하게 한다는 문제를 야기한다. 이 불균형을 개선하기 위하여, 배선 지연을 조정해야 하지만, 이것은 매우 곤란하다.
유사한 문제가 프로그램 동작시에도 발생한다. 도 24 및 도 25는 각각 프로그램 동작 시 시스템의 블록도 및 각종 신호들의 타이밍 차트이다. 도 24 및 도 25에 도시된 바와 같이, 이 경우에도, 데이터(DATA_RAM)와 데이터(DATA_NAND)에서, 셋업 타임(tS1)과 홀드 타임(tH1) 간의 불균형과 셋업 타임(tS2)과 홀드 타임(tH2) 간의 불균형이 발생한다.
그러나, 제4 실시예의 구성으로, 상기 문제가 해결될 수 있다. 구체적으로, 도 18 및 도 20을 이용하여 설명한 바와 같이, 각 회로 블록에서 사용되는 내부 클록은, 로드 또는 프로그램 동작이 수행되는 지에 따라 스위칭된다. 또한, 내부 클록이 전파하는 방향은 데이터가 전파되는 방향으로 설정된다. 예컨대, 데이터를 전송하는 배선들과 클록들을 전송하는 배선들은 병렬로 배치된다. 이들은 거의 동일한 배선 길이를 갖는다. 따라서, 내부 클록의 지연량은 데이터에 생기는 지연량과 거의 동일하여, 상기 문제가 해결된다.
보다 구체적으로는, 데이터 로딩 시, 내부 클록(CLK_LOAD1)이 NAND 플래시 메모리(2)에 도달하는 데 필요한 시간과, 내부 클록(CLK_LOAD1)이 ECC 유닛(20)에 도달하는 데 필요한 시간 간의 차는, 데이터(DATA_NAND)가 NAND 플래시 메모리(2)로부터 ECC 유닛(20)에 도달하는 데 필요한 시간과 거의 같다. 또한, 내부 클록(CLK_LOAD2)이 ECC 유닛(20)으로부터 SRAM(30)에 도달하는 데 필요한 시간은, 데이터(DATA_RAM)이 ECC 유닛(20)으로부터 SRAM(30)에 도달하는 데 필요한 시간과 거의 같다. 따라서, 도 19에 도시한 바와 같이, 데이터(DATA_NAND)와 데이터(DATA_RAM)에서의 셋업 타임(tS1)과 홀드 타임(tH1)을 거의 동일하게 할 수 있다.
또한, 데이터 프로그래밍 시, 내부 클록(CLK_PG1)이 SRAM(30)으로부터 ECC 유닛(20)에 도달할 때까지 필요한 시간은, 데이터(DATA_RAM)이 SRAM(30)으로부터 ECC 유닛(20)에 도달할 때까지 필요한 시간과 거의 같다. 또한, 내부 클록(CLK_PG2)이 ECC 유닛(20)으로부터 NAND 플래시 메모리(2)에 도달하는 데 필요한 시간은, 데이터(DATA_NAND)가 ECC 유닛(20)으로부터 NAND 플래시 메모리(2)에 도달하는 데 필요한 시간과 거의 동일하다. 따라서, 도 21에 도시된 바와 같이, 데이터(DATA_NAND)와 데이터(DATA_RAM)에서의 셋업 타임(tS2)과 홀드 타임(tH2)은 거의 동일하게 될 수 있다.
그 결과, 메모리 시스템(1) 내에서 각 회로 블록들 간의 데이터 전송 정밀도가 향상될 수 있고, 배선 지연에 의한 지터(jitter)가 대폭 개선될 수 있다.
상술된 바와 같이, 제1 내지 제4 실시예들에 따른 메모리 시스템으로, 주 메모리로서의 NAND 플래시 메모리, 버퍼로서의 SRAM, 에러 정정 기능을 갖는 ECC 유닛, 및 컨트롤러가 동일한 반도체 기판 상에 형성된 반도체 장치에 있어서, 블록들 간의 데이터 전송 성능이 향상될 수 있다. 이것은, 메모리 시스템의 성능 및 신뢰성이 향상되게 한다.
제1 및 제2 실시예들은 제3 실시예와 조합될 수도 있다. 구체적으로, 데이터 로딩 시 제1 또는 제2 실시예에서 설명한 데이터 전송 방법이 사용될 수도 있고, 데이터 프로그래밍 시 제3 실시예에서 설명한 데이터 전송 방법이 사용될 수도 있다. 이 경우, 제4 실시예는 제1 내지 제3 실시예들 중 적어도 하나와 조합될 수도 있고, 또는 이들 중 어떤 것과도 조합되지 않을 수도 있다. 즉, 제4 실시예에서, 패리티는 메인 데이터보다 후에 전송될 수도 있다.
또한, 제1 내지 제3 실시예들에서, 각 프로세스에 요하는 클록들수(각 회로 블록들에 요하는 클록들 수와, ECC 프로세싱에 요하는 클록들수)는 단지 설명을 위한 것이고, 상술된 바와 상이할 수도 있다. 또한, 4096비트(512바이트)의 메인 데이터가 ECC 프로세싱을 받은 경우를 설명했다. 그러나, 페이지 버퍼(12)의 사이즈가 2K바이트이면, 도 6, 도 14 또는 도 16에서 설명한 데이터 전송을 4회 반복함 으로써 페이지 사이즈의 데이터가 전송될 수 있다.
제3 실시예에서, 전송 프로세스(Tb-p)에서, 패리티가 DQ 버퍼(31)로부터 ECC 버퍼(21)에 전송된다. 그러나, 프로세스(Pp) 에서, 이미 수행된 프로세스들(Pm1∼Pm8)의 결과에 따라서 패리티가 생성되고, 이 패리티는 Tb-p에서 생성된 패리티에 덮어쓰기된다. 따라서, 전송 프로세스(Tb-p)가 생략될 수도 있다.
유사하게는, 데이터 로딩 시, 패리티는 ECC 프로세싱에 사용된 후, 불필요하게 된다. 따라서, 제1 및 제2 실시예들에서 설명한 전송 프로세스(Tb-p)는 생략될 수도 있다. 그러나, DQ 버퍼(31) 및 메모리 셀 어레이(32)에 패리티를 기억하기 위한 영역이 제공되고, 이 영역에 메인 데이터를 전송하는 것과 동일한 방식으로 패리티가 전송되어, ECC 프로세싱 시 패리티가 적절하게 생성되었는 지를 확인할 수 있게 된다.
또한, 제4 실시예에서, 클록의 상승 에지에 동기하여 데이터가 입출력되었지만, 데이터는 하강 에지에 동기하여 입출력될 수도 있다.
제1 내지 제4 실시예들에서, NAND 플래시 메모리(2), RAM 유닛(3) 및 컨트롤러 유닛(4)이 하나의 칩에 집적된 경우를 설명했다. 이러한 메모리 시스템(2)의 구체예는 OneNAND(등록 상표) 플래시 메모리이다. 그러나, NAND 플래시 메모리(2), RAM 유닛(3), 및 컨트롤러 유닛(4)이 반드시 하나의 칩에 집적되는 것은 아니고, 별개의 반도체 칩들에서 실현될 수도 있다.
구체적으로,
(1) 상기 실시예들에 따른 데이터 전송 방법은: NAND 플래시 메모리(10)로부터 데이터를 페이지 단위로 제1 버퍼(12)에 판독하는 단계 S10; 제1 버퍼(12)에 판독된 데이터에서의 패리티를 제2 버퍼(21)에 전송하는 단계 S12; 상기 패리티를 상기 제2 버퍼(21)에 전송한 후, 상기 제1 버퍼(12)에 판독된 데이터에서의 메인 데이터를 상기 제2 버퍼(21)에 전송하는 단계 S14∼S17; 상기 패리티에 기초하여, 상기 제2버퍼(21)에 전송된 상기 메인 데이터에서의 에러를 정정하는 단계 S18; 및 에러 정정된 메인 데이터를 제3 버퍼(31)에 전송하는 단계 S19를 포함한다.
(2) 상기 (1)에서, 상기 메인 데이터는 N개 그룹들(D1 내지 D8)(N은 3 이상의 자연수)로 분할되고, N개의 그룹들(D1 내지 D8)은 순차적으로 상기 제1 버퍼(12)로부터 상기 제2 버퍼(21)에 전송되고, i번째 그룹(Di)(i는 자연수이며, 식 i≤ N을 만족)이 상기 제1 버퍼(12)로부터 상기 제2 버퍼(21)에 전송되는 기간에, (i-1)번째 그룹(D(i-1))에서의 에러가 정정되고, 에러 정정된 (i-2)번째 그룹(D(i-2))이 상기 제3 버퍼(31)에 전송된다.
(3) 상기 (2)에서, 상기 제2 버퍼(21)는, 데이터를 유지할 수 있는 제1 데이터 유지 유닛(23)과 제2 데이터 유지 유닛(24)을 포함하고, 상기 제1 데이터 유지 유닛(23)에 상기 i번째의 그룹(Di)이 전송되는 기간에서, 상기 제2 데이터 유지 유 닛(24)은 상기 (i-1)번째 그룹(D(i-1))에서의 에러를 정정하는 데 사용된다.
(4) 상기 (1)에서, 상기 NAND 플래시 메모리(10)는, 상기 메인 데이터를 유지할 수 있는 제1 영역(17)과, 상기 패리티를 유지할 수 있는 제2 영역(18)을 포함하고, 상기 제1 내지 제3 버퍼들(12, 21, 31) 각각은, 상기 제1 영역(17) 내의 상기 메인 데이터에 대응하는 영역과, 상기 제2 영역(18) 내의 상기 패리티에 대응하는 영역을 포함한다.
(5) 상기 (1)에서, 상기 제1 버퍼(12)로부터 상기 제2 버퍼(21)에의 상기 메인 데이터의 전송, 상기 메인 데이터에서의 에러 정정 프로세스, 및 상기 제2 버퍼(21)로부터 상기 제3 버퍼(31)로의 상기 메인 데이터의 전송은, 상기 메인 데이터를 복수의 그룹들로 분할된 단위들로 행해진다.
(6) 상기 실시예들에 따른 데이터 전송 방법은: 제1 버퍼(31)로부터 메인 데이터를 제2 버퍼(21)에 전송하는 단계들 S41∼S44; 상기 제2 버퍼(21)에 전송된 상기 메인 데이터에 대하여, 에러 정정 회로(22)가 패리티를 생성하게 하는 단계 S46; 상기 메인 데이터와 상기 패리티를 제3 버퍼(12)에 전송하는 단계 S47; 및 상기 메인 데이터와 상기 패리티를, 페이지 단위로 NAND 플래시 메모리(10)에서 프로그래밍하는 단계 S50를 포함한다. 상기 메인 데이터는 N개 그룹들(D1~D8)(N은 3이상의 자연수)로 분할된다. N개 그룹들은 순차적으로 상기 제1 버퍼(31)로부터 상기 제2 버퍼(21)에 전송된다. i번째 그룹(Di)(i는 자연수이며, 식 (i+2)≤ N을 만족)이 상기 제2 버퍼(21)로부터 상기 제3 버퍼(12)에 전송되는 기간에, (i+1)번째 그룹(D(i+1))에 대하여 패리티가 생성되고, (i+2)번째 그룹(D(i+2))이 상기 제1 버 퍼(31)로부터 상기 제2 버퍼(21)에 전송된다.
(7) 상기 (6)에서, 상기 제2 버퍼(21)는, 데이터를 유지할 수 있는 제1 데이터 유지 유닛(23)과 제2 데이터 유지 유닛(24)을 포함하고, 상기 제1 데이터 유지 유닛(23)에 상기 i번째의 그룹(Di)이 전송되는 기간에서, 상기 제2 데이터 유지 유닛(24)은 (i-1)번째 그룹(D(i-1))에 대한 패리티를 생성하는 데 사용된다.
(8) 상기 (6)에서, 상기 제1 버퍼(31)로부터 상기 제2 버퍼(21)에의 상기 메인 데이터의 전송, 상기 메인 데이터에 대한 상기 패리티의 생성 프로세스, 및 상기 제2 버퍼(21)로부터의 상기 제3 버퍼(12)에의 상기 메인 데이터의 전송은, 상기 메인 데이터를 복수의 그룹들로 분할함으로써 획득된 단위들로 행해진다.
(9) 상기 (1) 내지 (8) 중 어느 하나에 있어서, 상기 제1 버퍼와 상기 제2 버퍼 간에 데이터를 전송하는 제1 전송 경로의 버스 폭은, 상기 제2 버퍼와 상기 제3 버퍼 간에 데이터를 전송하는 제2 전송 경로의 버스 폭과 같다.
(10) 상기 (9)에서, 상기 제2 버퍼(21)는 상기 메인 데이터를 동시에 입력하고 출력할 수 있다.
(11) 본 실시예들에 따른 메모리 시스템은: 데이터를 유지할 수 있는 NAND 플래시 메모리(2); 상기 데이터에 ECC 프로세싱을 수행하는 ECC 시스템(20); 상기 NAND 플래시 메모리로 및 상기 NAND 플래시 메모리로부터 데이터를 입력하고 출력하는 데 사용되는 버퍼 메모리(30); 상기 NAND 플래시 메모리(2), 상기 ECC 시스템(20) 및 상기 버퍼 메모리(30)의 동작들을 제어하는 컨트롤러(4)를 포함한다. 상기 NAND 플래시 메모리(2), 상기 ECC 시스템(20), 상기 버퍼 메모리(30) 및 상기 컨트롤러(4) 간에 클록이 전파되는 방향은 상기 데이터가 로딩되거나 프로그래밍되는 지에 따라 스위칭된다.
(12) 상기 (11)에서, 상기 시스템은 제1 클록(ACLK)을 생성하는 클록 생성기(16)를 더 포함한다. 상기 데이터가 프로그래밍될 때, 상기 데이터는 상기 버퍼 메모리(30)로부터 상기 ECC 시스템(20)을 통해 상기 NAND 플래시 메모리(2)에 전송되고, 상기 버퍼 메모리(30)는 상기 제1 클록(ACLK)에 기초하여 제2 클록(CLK_PG1)을 생성하고, 상기 제2 클록(CLK_PG1)에 동기하여, 상기 제2 클록(CLK_PG1)과 상기 데이터를 상기 ECC 시스템(20)에 전송하고, 상기 ECC 시스템(20)은 상기 데이터에 대한 패리티 뿐만 아니라, 상기 제2 클록에 기초하여 제3 클록(CLK_PG2)을 생성하고, 상기 제3 클록(CLK_PG2)에 동기하여, 상기 제3 클록(CLK_PG2)과 상기 데이터를 상기 NAND 플래시 메모리(2)에 전송하고, 상기 NAND 플래시 메모리(2)는 상기 제3 클록(CLK_PG2)에 동기하여 상기 데이터를 수신한다.
(13) 상기 (11)에서, 상기 시스템은, 제1 클록(ACLK)을 생성하는 클록 생성기(16)를 더 포함한다. 상기 데이터가 로딩될 때, 상기 컨트롤러(4)가 상기 제1 클록(ACLK)에 기초하여 제2 클록(CLK_LOAD1)을 생성하고, 상기 NAND 플래시 메모리(2)는 상기 제2 클록(CLK_LOAD1)에 동기하여 상기 데이터를 상기 ECC 시스템(20)에 전송하고, 상기 ECC 시스템(20)은, 상기 제2 클록(CLK_LOAD1)에 동기하여 상기 데이터를 수신하고, 상기 데이터에서의 에러를 검출 및 정정하고, 상기 제2 클록(CLK_LOAD1)에 기초하여 제3 클록(CLK_LOAD2)을 생성하고, 상기 제3 클록(CLK_LOAD2)에 동기하여 상기 제3 클록(CLK_LOAD2)과 상기 데이터를 상기 버퍼 메모리(30)에 출력하고, 상기 버퍼 메모리(30)는 상기 제3 클록(CLK_LOAD2)에 동기하여 상기 데이터를 수신한다.
추가적인 이점들 및 변형들이 당업자에게 용이하게 가능할 것이다. 따라서, 보다 광범위한 태양의 본 발명은 여기서 도시되고 설명된 특정 상세와 대표적인 실시예들에 한정되지 않는다. 따라서, 첨부된 청구범위 및 이들의 등가물들에 의하여 정의된 바와 같은 일반적인 본 발명의 개념의 사상 또는 범위로부터 벗어나지 않고 다양한 변형이 행해질 수도 있다.
도 1은 본 발명의 제1 실시예에 따른 메모리 시스템의 블록도이다.
도 2는 제1 실시예에 따른 메모리 셀 어레이의 회로도이다.
도 3은 제1 실시예에 따른 페이지 데이터의 개략도이다.
도 4는 제1 실시예에 따른 ECC 유닛의 블록도이다.
도 5는 제1 실시예에 따른 데이터 전송 방법의 흐름도이다.
도 6은 제1 실시예에 따른 데이터 전송 방법의 타이밍 챠트이다.
도 7 내지 도 10은 제1 실시예에 따른 메모리 시스템의 블록도들이다.
도 11은 본 발명의 제2 실시예에 따른 페이지 데이터의 개략도이다.
도 12는 제2 실시예에 따른 ECC 유닛의 블록도이다.
도 13은 제2 실시예에 따른 데이터 전송 방법의 흐름도이다.
도 14는 제2 실시예에 따른 데이터 전송 방법의 타이밍 챠트이다.
도 15는 본 발명의 제3 실시예에 따른 데이터 전송 방법의 흐름도이다.
도 16은 제3 실시예에 따른 데이터 전송 방법의 타이밍 챠트이다.
도 17 및 도 18은 본 발명의 제4 실시예에 따른 메모리 시스템의 블록도들이다.
도 19는 제4 실시예에 따른 로드 동작시 메모리 시스템의 데이터와 클록의 타이밍 챠트이다.
도 20은 제4 실시예에 따른 메모리 시스템의 블록도이다.
도 21은 제4 실시예에 따른 프로그램 동작시 메모리 시스템의 데이터와 클록 의 타이밍 챠트이다.
도 22는 로드 동작시 메모리 시스템의 블록도이다.
도 23은 로드 동작시 데이터와 클록의 타이밍 챠트이다.
도 24는 프로그램 동작시 메모리 시스템의 블록도이다.
도 25는 프로그램 동작시 데이터와 클록의 타이밍 챠트이다.

Claims (19)

  1. 데이터 전송 방법으로서,
    NAND 플래시 메모리로부터 데이터를 페이지 단위로 제1 버퍼에 판독하는 단계;
    상기 제1 버퍼에 판독된 상기 데이터에서의 패리티를 제2 버퍼에 전송하는 단계;
    상기 패리티를 상기 제2 버퍼에 전송한 후, 상기 제1 버퍼에 판독된 상기 데이터에서의 메인 데이터를 상기 제2 버퍼에 전송하는 단계;
    상기 패리티에 기초하여, 상기 제2 버퍼에 전송된 상기 메인 데이터에서의 에러를 정정하는 단계; 및
    에러 정정된 메인 데이터를 제3 버퍼에 전송하는 단계
    를 포함하고,
    상기 메인 데이터는 N개 그룹들(N은 3 이상의 자연수)로 분할되고, 상기 N개 그룹들은 순차적으로 상기 제1 버퍼로부터 상기 제2 버퍼에 전송되고,
    i번째 그룹(i는 자연수이며, 식 i≤ N을 만족)이 상기 제1 버퍼로부터 상기 제2 버퍼에 전송되는 기간에, (i-1)번째 그룹에서의 에러가 정정되고, 에러 정정된 (i-2)번째 그룹이 상기 제3 버퍼에 전송되는 것인 데이터 전송 방법.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 제2 버퍼는, 데이터를 유지할 수 있는 제1 데이터 유지 유닛과 제2 데이터 유지 유닛을 포함하고,
    상기 제1 데이터 유지 유닛에 상기 i번째 그룹이 전송되는 기간에, 상기 제2 데이터 유지 유닛은 상기 (i-1)번째 그룹에서의 에러를 정정하는 데 사용되는 것인 데이터 전송 방법.
  4. 제 1 항에 있어서,
    상기 NAND 플래시 메모리는, 상기 메인 데이터를 유지할 수 있는 제1 영역과, 상기 패리티를 유지할 수 있는 제2 영역을 포함하고,
    상기 제1 내지 제3 버퍼들 각각은, 상기 제1 영역 내의 상기 메인 데이터에 대응하는 영역과, 상기 제2 영역 내의 상기 패리티에 대응하는 영역을 포함하는 것인 데이터 전송 방법.
  5. 제 1 항에 있어서,
    상기 제1 버퍼로부터 상기 제2 버퍼에의 상기 메인 데이터의 전송, 상기 메인 데이터에서의 에러 정정 프로세스, 및 상기 제2 버퍼로부터 상기 제3 버퍼에의 상기 메인 데이터의 전송은, 상기 메인 데이터를 복수의 그룹들로 분할함으로써 획득된 단위들로 수행되는 것인 데이터 전송 방법.
  6. 제 1 항에 있어서,
    상기 제1 버퍼와 상기 제2 버퍼 간에 데이터를 전송하는 제1 전송 경로의 버스 폭은, 상기 제2 버퍼와 상기 제3 버퍼 간에 데이터를 전송하는 제2 전송 경로의 버스 폭과 동일한 것인 데이터 전송 방법.
  7. 제 6 항에 있어서,
    상기 제2 버퍼는 상기 메인 데이터를 동시에 입력하고 출력할 수 있는 것인 데이터 전송 방법.
  8. 제 1 항에 있어서,
    상기 제2 버퍼는 에러 정정 프로세스를 수행하는 ECC 시스템에 포함된 버퍼 메모리이고,
    상기 제3 버퍼는 상기 NAND 플래시 메모리의 버퍼 메모리로서 기능하는 SRAM에 포함된 버퍼 메모리인 것인 데이터 전송 방법.
  9. 데이터 전송 방법으로서,
    제1 버퍼로부터 메인 데이터를 제2 버퍼에 전송하는 단계로서, 상기 메인 데이터는 N개 그룹들(N은 3이상의 자연수)로 분할되고, 상기 N개 그룹들은 순차적으로 상기 제1 버퍼로부터 상기 제2 버퍼에 전송되는 것인 상기 전송하는 단계;
    상기 제2 버퍼에 전송된 상기 메인 데이터에 대하여 에러 정정 회로가 패리티를 생성하게 하는 단계;
    상기 메인 데이터와 상기 패리티를 제3 버퍼에 전송하는 단계로서, i번째 그룹(i는 자연수이며, 식 (i+2)≤ N을 만족)이 상기 제2 버퍼로부터 상기 제3 버퍼에 전송되는 기간에, (i+1)번째 그룹에 대하여 패리티가 생성될 뿐만 아니라, (i+2)번째 그룹이 상기 제1 버퍼로부터 상기 제2 버퍼에 전송되는 것인 상기 전송하는 단계; 및
    상기 메인 데이터와 상기 패리티를 페이지 단위로 NAND 플래시 메모리에서 프로그래밍하는 단계
    를 포함하는 데이터 전송 방법.
  10. 제 9 항에 있어서,
    상기 제2 버퍼는 데이터를 유지할 수 있는 제1 데이터 유지 유닛과 제2 데이터 유지 유닛을 포함하고,
    상기 제1 데이터 유지 유닛에 상기 i번째 그룹이 전송되는 기간에, 상기 제2 데이터 유지 유닛은 (i-1)번째 그룹에 대한 패리티를 생성하는 데 사용되는 것인 데이터 전송 방법.
  11. 제 9 항에 있어서,
    상기 제1 버퍼로부터 상기 제2 버퍼에의 상기 메인 데이터의 전송, 상기 메 인 데이터에 대한 상기 패리티의 생성 프로세스, 및 상기 제2 버퍼로부터 상기 제3 버퍼에의 상기 메인 데이터의 전송은, 상기 메인 데이터를 복수의 그룹들로 분할함으로써 획득된 단위들로 수행되는 것인 데이터 전송 방법.
  12. 제 9 항에 있어서,
    상기 제1 버퍼와 상기 제2 버퍼 간에 데이터를 전송하는 제1 전송 경로의 버스 폭은, 상기 제2 버퍼와 상기 제3 버퍼 간에 데이터를 전송하는 제2 전송 경로의 버스 폭과 동일한 것인 데이터 전송 방법.
  13. 제 12 항에 있어서,
    상기 제2 버퍼는 상기 메인 데이터를 동시에 입력하고 출력할 수 있는 것인 데이터 전송 방법.
  14. 제 9 항에 있어서,
    상기 제3 버퍼는 상기 NAND 플래시 메모리의 버퍼 메모리로서 기능하는 SRAM에 포함된 버퍼 메모리이고,
    상기 제2 버퍼는 에러 정정 프로세스를 수행하는 ECC 시스템에 포함된 버퍼 메모리인 것인 데이터 전송 방법.
  15. 삭제
  16. 메모리 시스템으로서,
    데이터를 유지할 수 있는 NAND 플래시 메모리;
    상기 데이터에 ECC 프로세싱을 수행하는 ECC 시스템;
    상기 NAND 플래시 메모리로 및 상기 NAND 플래시 메모리로부터 상기 데이터를 입력하고 출력하는 데 사용되는 버퍼 메모리;
    상기 NAND 플래시 메모리, 상기 ECC 시스템, 및 상기 버퍼 메모리의 동작들을 제어하는 컨트롤러로서, 상기 NAND 플래시 메모리, 상기 ECC 시스템, 상기 버퍼 메모리, 및 상기 컨트롤러 간에 클록이 전파되는 방향은 상기 데이터가 로딩되거나 프로그래밍되는 지에 따라 스위칭되는 것인 상기 컨트롤러; 및
    제1 클록을 생성하는 클록 생성기
    를 포함하고,
    상기 데이터가 프로그래밍될 때,
    상기 데이터는 상기 버퍼 메모리로부터 상기 ECC 시스템을 통해 상기 NAND 플래시 메모리에 전송되고,
    상기 버퍼 메모리는 상기 제1 클록에 기초하여 제2 클록을 생성하고, 상기 제2 클록에 동기하여 상기 제2 클록과 상기 데이터를 상기 ECC 시스템에 전송하고,
    상기 ECC 시스템은 상기 데이터에 대한 패리티 뿐만 아니라, 상기 제2 클록에 기초하여 제3 클록도 생성하고, 상기 제3 클록에 동기하여 상기 제3 클록과 상기 데이터를 상기 NAND 플래시 메모리에 전송하고,
    상기 NAND 플래시 메모리는 상기 제3 클록에 동기하여 상기 데이터를 수신하는 것인 메모리 시스템.
  17. 메모리 시스템으로서,
    데이터를 유지할 수 있는 NAND 플래시 메모리;
    상기 데이터에 ECC 프로세싱을 수행하는 ECC 시스템;
    상기 NAND 플래시 메모리로 및 상기 NAND 플래시 메모리로부터 상기 데이터를 입력하고 출력하는 데 사용되는 버퍼 메모리;
    상기 NAND 플래시 메모리, 상기 ECC 시스템, 및 상기 버퍼 메모리의 동작들을 제어하는 컨트롤러로서, 상기 NAND 플래시 메모리, 상기 ECC 시스템, 상기 버퍼 메모리, 및 상기 컨트롤러 간에 클록이 전파되는 방향은 상기 데이터가 로딩되거나 프로그래밍되는 지에 따라 스위칭되는 것인 상기 컨트롤러; 및
    제1 클록을 생성하는 클록 생성기
    를 포함하고,
    상기 데이터가 로딩될 때,
    상기 컨트롤러가 상기 제1 클록에 기초하여 제2 클록을 생성하고,
    상기 NAND 플래시 메모리는 상기 제2 클록에 동기하여 상기 데이터를 상기 ECC 시스템에 전송하고,
    상기 ECC 시스템은, 상기 제2 클록에 동기하여 상기 데이터를 수신하고, 상기 데이터에서의 에러를 검출 및 정정하고, 상기 제2 클록에 기초하여 제3 클록을 생성하고, 상기 제3 클록에 동기하여 상기 제3 클록과 상기 데이터를 상기 버퍼 메모리에 출력하고,
    상기 버퍼 메모리는 상기 제3 클록에 동기하여 상기 데이터를 수신하는 것인 메모리 시스템.
  18. 제 16 항 또는 제 17 항에 있어서,
    상기 NAND 플래시 메모리, 상기 ECC 시스템, 상기 버퍼 메모리, 및 상기 컨트롤러는 동일한 반도체 기판 상에 형성되는 것인 메모리 시스템.
  19. 제 18 항에 있어서,
    상기 버퍼 메모리는 SRAM인 것인 메모리 시스템.
KR1020090056069A 2008-06-24 2009-06-23 반도체 메모리를 갖는 메모리 시스템 및 그 데이터 전송 방법 KR101088235B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2008164949A JP2010009141A (ja) 2008-06-24 2008-06-24 データ転送方法
JPJP-P-2008-164949 2008-06-24

Publications (2)

Publication Number Publication Date
KR20100002147A KR20100002147A (ko) 2010-01-06
KR101088235B1 true KR101088235B1 (ko) 2011-11-30

Family

ID=41432524

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090056069A KR101088235B1 (ko) 2008-06-24 2009-06-23 반도체 메모리를 갖는 메모리 시스템 및 그 데이터 전송 방법

Country Status (3)

Country Link
US (1) US8239744B2 (ko)
JP (1) JP2010009141A (ko)
KR (1) KR101088235B1 (ko)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012119034A (ja) * 2010-11-30 2012-06-21 Toshiba Corp メモリシステム
DE102011010610B4 (de) 2011-02-08 2014-03-20 Austriamicrosystems Ag Schaltung zum Generieren einer Startsequenz und Verfahren zum Generieren einer Startfrequenz
US9128822B2 (en) * 2012-06-22 2015-09-08 Winbond Electronics Corporation On-chip bad block management for NAND flash memory
JP6072449B2 (ja) * 2012-07-09 2017-02-01 ルネサスエレクトロニクス株式会社 半導体記憶回路及びその動作方法
JP6041610B2 (ja) * 2012-10-02 2016-12-14 キヤノン株式会社 情報処理装置及びその制御方法、並びに、そのプログラムと記憶媒体
KR102048765B1 (ko) * 2013-01-15 2020-01-22 삼성전자주식회사 메모리 시스템의 동작 방법 및 메모리 시스템
CN103092717B (zh) * 2013-01-18 2016-03-02 深圳市硅格半导体有限公司 闪存的数据处理方法及装置
US9454422B2 (en) * 2014-01-30 2016-09-27 International Business Machines Corporation Error feedback and logging with memory on-chip error checking and correcting (ECC)
JP6131207B2 (ja) * 2014-03-14 2017-05-17 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置
US10395753B2 (en) * 2014-08-28 2019-08-27 Winbond Electronics Corp. Semiconductor memory device and programming method thereof
TWI562154B (en) * 2015-02-17 2016-12-11 Silicon Motion Inc Methods for reading data from a storage unit of a flash memory and apparatuses using the same
US10860320B1 (en) 2016-12-06 2020-12-08 Gsi Technology, Inc. Orthogonal data transposition system and method during data transfers to/from a processing array
US10770133B1 (en) 2016-12-06 2020-09-08 Gsi Technology, Inc. Read and write data processing circuits and methods associated with computational memory cells that provides write inhibits and read bit line pre-charge inhibits
US10998040B2 (en) 2016-12-06 2021-05-04 Gsi Technology, Inc. Computational memory cell and processing array device using the memory cells for XOR and XNOR computations
US10847212B1 (en) 2016-12-06 2020-11-24 Gsi Technology, Inc. Read and write data processing circuits and methods associated with computational memory cells using two read multiplexers
US11227653B1 (en) 2016-12-06 2022-01-18 Gsi Technology, Inc. Storage array circuits and methods for computational memory cells
US10891076B1 (en) 2016-12-06 2021-01-12 Gsi Technology, Inc. Results processing circuits and methods associated with computational memory cells
US10860318B2 (en) 2016-12-06 2020-12-08 Gsi Technology, Inc. Computational memory cell and processing array device using memory cells
US10854284B1 (en) 2016-12-06 2020-12-01 Gsi Technology, Inc. Computational memory cell and processing array device with ratioless write port
US10847213B1 (en) 2016-12-06 2020-11-24 Gsi Technology, Inc. Write data processing circuits and methods associated with computational memory cells
US10943648B1 (en) 2016-12-06 2021-03-09 Gsi Technology, Inc. Ultra low VDD memory cell with ratioless write port
US10777262B1 (en) 2016-12-06 2020-09-15 Gsi Technology, Inc. Read data processing circuits and methods associated memory cells
CN110058964B (zh) * 2018-01-18 2023-05-02 伊姆西Ip控股有限责任公司 数据恢复方法、数据恢复系统和计算机可读介质
JP2019204565A (ja) * 2018-05-22 2019-11-28 東芝メモリ株式会社 半導体記憶装置及びメモリシステム
US10958272B2 (en) 2019-06-18 2021-03-23 Gsi Technology, Inc. Computational memory cell and processing array device using complementary exclusive or memory cells
US10877731B1 (en) 2019-06-18 2020-12-29 Gsi Technology, Inc. Processing array device that performs one cycle full adder operation and bit line read/write logic features
US10930341B1 (en) 2019-06-18 2021-02-23 Gsi Technology, Inc. Processing array device that performs one cycle full adder operation and bit line read/write logic features
CN116072200A (zh) * 2021-10-29 2023-05-05 长鑫存储技术有限公司 基础芯片、存储系统以及半导体结构

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3527873B2 (ja) * 1999-09-03 2004-05-17 松下電器産業株式会社 誤り訂正装置
US6957378B2 (en) * 2001-06-04 2005-10-18 Kabushiki Kaisha Toshiba Semiconductor memory device
JP4112849B2 (ja) 2001-11-21 2008-07-02 株式会社東芝 半導体記憶装置
US20040083334A1 (en) 2002-10-28 2004-04-29 Sandisk Corporation Method and apparatus for managing the integrity of data in non-volatile memory system
KR100543447B1 (ko) 2003-04-03 2006-01-23 삼성전자주식회사 에러정정기능을 가진 플래쉬메모리장치
KR100546348B1 (ko) 2003-07-23 2006-01-26 삼성전자주식회사 플래시 메모리 시스템 및 그 데이터 저장 방법
JP4135680B2 (ja) 2004-05-31 2008-08-20 ソニー株式会社 半導体記憶装置および信号処理システム
KR20070076849A (ko) 2006-01-20 2007-07-25 삼성전자주식회사 메모리 카드의 카피백 동작을 수행하는 장치 및 방법

Also Published As

Publication number Publication date
JP2010009141A (ja) 2010-01-14
KR20100002147A (ko) 2010-01-06
US20090319871A1 (en) 2009-12-24
US8239744B2 (en) 2012-08-07

Similar Documents

Publication Publication Date Title
KR101088235B1 (ko) 반도체 메모리를 갖는 메모리 시스템 및 그 데이터 전송 방법
US7372744B2 (en) Memory system which copies successive pages, and data copy method therefor
US8375273B2 (en) Semiconductor device including a NAND flash memory
US7586785B2 (en) Non-volatile semiconductor memory device
US8625376B2 (en) Semiconductor memory device and method of operation the same
US8363468B2 (en) Semiconductor memory device
KR101532754B1 (ko) 비휘발성 메모리 장치의 프로그램 방법
US8472247B2 (en) Non-volatile memory device and method for programming the device, and memory system
JP2010040144A (ja) 不揮発性半導体記憶システム
US10236044B2 (en) Memory system
JPWO2003085676A1 (ja) 不揮発性記憶装置
US20090319863A1 (en) Error-correcting system of semiconductor memory, error-correcting method, and memory system with error-correcting system
WO2015033417A1 (ja) 半導体記憶装置及びデータ書き込み方法
JP2011100518A (ja) 半導体装置及びその制御方法
US20120159284A1 (en) Semiconductor memory device capable of transferring various types of data
US8842474B2 (en) Nonvolatile memory device and nonvolatile memory system including the same
JP2013030251A (ja) メモリシステム
JP5017443B2 (ja) メモリシステム
TWI776607B (zh) 半導體裝置及連續讀出方法
KR20090068617A (ko) 불휘발성 메모리 소자의 카피백 프로그램 방법
CN114360614A (zh) 半导体存储器装置及其操作方法
JP2012119033A (ja) メモリシステム

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
FPAY Annual fee payment

Payment date: 20141022

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151016

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161103

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20171018

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20191029

Year of fee payment: 9