KR20150061393A - 메모리 장치로부터 읽은 데이터를 고속으로 전송하는 메모리 컨트롤러 및 그것의 데이터 전송 방법. - Google Patents

메모리 장치로부터 읽은 데이터를 고속으로 전송하는 메모리 컨트롤러 및 그것의 데이터 전송 방법. Download PDF

Info

Publication number
KR20150061393A
KR20150061393A KR1020130145466A KR20130145466A KR20150061393A KR 20150061393 A KR20150061393 A KR 20150061393A KR 1020130145466 A KR1020130145466 A KR 1020130145466A KR 20130145466 A KR20130145466 A KR 20130145466A KR 20150061393 A KR20150061393 A KR 20150061393A
Authority
KR
South Korea
Prior art keywords
ecc
read data
host
data
divided
Prior art date
Application number
KR1020130145466A
Other languages
English (en)
Inventor
차상수
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020130145466A priority Critical patent/KR20150061393A/ko
Priority to US14/303,658 priority patent/US9489253B2/en
Publication of KR20150061393A publication Critical patent/KR20150061393A/ko

Links

Images

Classifications

    • 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/14Handling requests for interconnection or transfer
    • 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
    • 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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus

Landscapes

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

Abstract

본 발명은 메모리 시스템의 동작 방법에 관한 것으로, 본 발명은 선택 워드 라인에 연결된 복수의 메모리 셀들을 리드하고 리드 데이터를 생성 단계; 상기 리드 데이터에 기초하여 에러 정정을 수행하고 분할된 ECC 리드 데이터를 생성 하는 단계; 상기 분할된 ECC 리드 데이터를 호스트 사이드 버퍼로 전송하고 호스트 DMA 카운트 값을 증가시키는 단계; 및 상기 호스트 DMA 카운트 값과 미리 정해진 값을 비교하고, 비교 결과에 따라 ECC 상태 정보 신호를 업데이트 하고 상기 분할된 ECC 리드 데이터를 호스트로 전송하는 단계를 한다. 본 발명에 의하면, 내부 버퍼에 원본 데이터가 도달하는 시점에 호스트로 전송하기 때문에, 데이터 읽기 위한 대기 시간을 줄일 수 있다.

Description

메모리 장치로부터 읽은 데이터를 고속으로 전송하는 메모리 컨트롤러 및 그것의 데이터 전송 방법. {MEMORY CONTROLER TRANSMITTING READ DATA FROM MEMORY DEVICE AT HIGH SPEED AND METHOD FOR TRANSMITTING DATA THEREOF}
본 발명은 반도체 메모리 시스템에 관한 것으로, 다 상세하게는 메모리 장치로부터 읽은 데이터를 고속으로 전송하는 메모리 컨트롤러 및 그것의 데이터 전송 방법에 관한 것이다.
반도체 메모리 장치(semiconductor memory device)는 실리콘(Si, silicon), 게르마늄(Ge, Germanium), 비소 갈륨(GaAs, gallium arsenide), 인화인듐(InP, indium phospide) 등과 같은 반도체를 이용하여 구현되는 기억장치이다. 반도체 메모리 장치는 DRAM이나 SRAM과 같은 휘발성 메모리 장치(Volatile Memory Device)와 플래시 메모리나 MRAM(Magnetic RAM)과 같은 불휘발성 메모리 장치(Nonvolatile Memory Device)를 포함한다.
호스트가 메모리 장치에 읽기 명령을 주고 데이터를 전송 받기 위해 기다려야 하는 시간을 리드 레이턴시(Read Latency)라고 한다. 리드 레이턴시가 길면 데이터의 출력이 늦어짐에 따라 호스트의 성능저하와 전력 소모가 증가 될 수 있다.
본 발명은 상술한 기술적 과제를 해결하기 위한 것으로, 메모리 장치에 저장된 리드 데이터를 호스트로 전송하는 경우에, 데이터 읽기 및 전송 시간과 전력 소모를 줄일 수 있는 메모리 컨트롤러 및 메모리 시스템을 제공하는 데 있다.
본 발명의 메모리 컨트롤러의 고속 데이터 전송 방법에 관한 것으로, 본 발명은 선택 워드 라인에 연결된 복수의 메모리 셀들을 리드하고 리드 데이터를 생성 단계; 상기 리드 데이터에 기초하여 에러 정정을 수행 하고 분할된 ECC 리드 데이터를 생성 하는 단계; 상기 분할된 ECC 리드 데이터를 호스트 사이드 버퍼로 전송하고 호스트 DMA 카운트 값을 증가시키는 단계; 및 상기 호스트 DMA 카운트 값과 미리 정해진 값을 비교하고, 비교 결과에 따라 ECC 상태 정보 신호를 업데이트 하고 상기 분할된 ECC 리드 데이터를 호스트로 전송하는 단계를 포함한다.
실시 예로서, 본 발명은 상기 호스트 DMA 카운트 값이 상기 미리 정해진 값과 같은 경우에는 ECC 상태 정보 신호를 업데이트 하고 상기 분할된 ECC 리드 데이터를 상기 호스트로 전송하고, 상기 호스트 DMA 카운트 값이 미리 정해진 값과 다른 경우에는 상기 ECC 상태 정보 신호의 추가 업데이트 없이 상기 분할된 ECC 리드 데이터를 상기 호스트로 전송한다.
다른 실시 예로서, 본 발명은 상기 에러 정정을 수행하는 단계는, 상기 리드 데이터를 ECC 페이지 버퍼에 저장하는 단계; 에러 정정 코어에서 상기 저장된 리드 데이터에 기초하여 에러 정정을 수행하고 ECC 리드 데이터를 생성하는 단계; 및 상기 ECC 리드 데이터를 에러 정정 섹터 버퍼에 저장하는 단계를 포함한다.
또 다른 실시 예로서, 본 발명은 상기 분할된 ECC 리드 데이터를 생성하는 단계에서는, 상기 ECC 리드 데이터를 내부 버스 사이즈로 분할하여 상기 ECC 리드 데이터를 생성한다.
또 다른 실시 예로서, 본 발명은 상기 호스트 사이드 버퍼로 전송 하는 단계는, 상기 분할된 ECC 리드 데이터를 내부 클럭 신호에 동기하여 상기 호스트 사이드 버퍼로 전송한다.
다른 실시 예로서, 본 발명은 상기 호스트 DMA 카운트 값은 내부 클락 신호에 따라 상기 분할된 ECC 리드 데이터가 상기 호스트 사이드 버퍼로 전송될 때마다 증가한다.
또 다른 실시 예로서, 본 발명은 상기 호스트 DMA 카운트 값이 마지막 호스트 DMA 값과 같은 경우에, 상기 분할된 ECC 리드 데이터를 상기 호스트 사이드 버퍼로 전송하고 호스트 DMA 카운트 값을 증가시키는 단계를 더 포함한다.
본 발명의 다른 일면은 고속 데이터 전송 메모리 시스템에 관한 것으로 메모리 장치; 및 상기 메모리 장치를 제어하는 메모리 컨트롤러를 포함하고, 상기 메모리 컨트롤러는, 상기 메모리 장치로부터 입 받은 리드 데이터에 기초하여 에러 정정을 수행하고 ECC 완료 신호와 분할된 ECC 리드 데이터를 생성하는 ECC부; 상기 ECC부로부터 상기 분할된 ECC 리드 데이터를 입력받고 제1 데이터 수신 신호를 생성하는 호스트 사이드 버퍼; 상기 ECC부로부터 에러 정정 수행 완료 정보를 입력받고 상기 제1 데이터 수신 신호에 응답하여 ECC 상태 정보를 생성하는 상태 조정부; 및 내부 클럭 신호 clk를 생성하는 클럭 생성부를 포함하고, 상기 분할된 ECC 리드 데이터는 상기 내부 클럭 신호에 동기되어 상기 호스트 사이드 버퍼로 출력되고, 상기 ECC 상태 정보에 응답하여 호스트장치로 분할된 ECC 리드 데이터를 전송한다.
실시 예로서, 본 발명은 기 에러 정정 정보는 에러 정정된 데이터 비트 수와 ECC 완료 정보를 포함한다. 상기 호스트 사이드 버퍼는, 상기 분할된 ECC 리드 데이터를 입력받고 제1 데이터 수신 신호를 생성한다.
다른 실시 예로서, 본 발명은 상기 상태 조정부는, 상기 ECC 완료 신호와 제1 데이터 수신 신호를 입력받고 상기 내부 클럭 신호에 따라 호스트 DMA 카운트를 생성하는 호스트 DMA 카운터; 상기 호스트 DMA 카운트 값에 기초하여 상태 업데이트 신호를 생성하는 상태 결정부; 및 상기 상태 업데이트 신호에 응답하여 ECC 상태 정보를 생성하는 상태 업데이트부를 포함한다.
또 다른 실시 예로서, 본 발명은 상기 호스트 DMA 카운트 값은 상기 ECC 완료 신호와 제1 데이터 수신 신호가 활성화된 경우, 내부 클럭 신호에 따라 증가한다. 상기 상태 업데이트 신호는 호스트 DMA 카운트 값이 미리 정해진 값과 같을 때 활성화 된다. 상기 호스트로 전송되는 분할된 ECC 리드 데이터는 내부 클럭 신호 보다 느린 클럭 주기에 동기 되어 전송된다.
본 발명은 첫 번째 분할된 ECC 리드 데이터(SED)가 호스트 사이드 버퍼에 입력되면 호스트로 데이터를 전송하기 시작한다. 따라서 본 발명에 의하면, 리드 레이턴시(Read Latency)가 줄어들기 때문에 고속 리드 동작을 수행할 수 있고 대기 전력도 줄일 수 있다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도 이다.
도 2는 도 1에 도시된 메모리 장치를 보여주는 블록도 이다.
도 3 도 4는 도 2에 도시된 메모리 셀 어레이의 실시 예를 보여주는 회로도 이다.
도 5는 도 1에 도시된 메모리 컨트롤러를 보여주는 블록도 이다.
도 6은 도 5에 도시된 ECC부를 예시적으로 보여주는 블록도 이다.
도 7은 도 5에 도시된 ECC부와 호스트 사이드 버퍼 및 상태 조정부의 관계를 예시적으로 보여주는 블록도 이다.
도 8은 도 5에 도시된 상태 조정부를 예시적으로 보여주는 블록도 이다.
도 9는 본 발명의 실시 예에 따른 메모리 시스템의 데이터 전송 방법을 보여주는 순서도 이다.
도 10은 본 발명의 실시 예에 따른 메모리 컨트롤러의 동작 방법을 보여주는 타이밍도 이다.
도 11은 도 1에 도시된 메모리 시스템의 응용 예를 보여주는 블록도이다.
도 12는 본 발명의 실시 예에 따른 메모리 시스템이 카드로 구현된 예를 보여준다.
이하에서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다.
Ⅰ.상태 조정부를 포함하는 메모리 시스템
도 1은 본 발명의 실시 예에 따른 메모리 시스템(1000)을 보여주는 블록도이다. 도 1을 참조하면, 메모리 시스템(1000)은 메모리 장치(1100), 메모리 컨트롤러(1200), 그리고 호스트(1300)를 포함한다.
메모리 장치(1100)는 휘발성 메모리 장치(Volatile Memory Device) 또는 불휘발성 메모리 장치(Nonvolatile Memory Device)일 수 있다. 휘발성 메모리 장치는 전원 공급이 차단되면 저장한 데이터를 잃는 메모리 장치이다. 휘발성 메모리 장치에는 SRAM이나 DRAM 등이 있다. 불휘발성 메모리 장치는 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 메모리 장치이다. 불휘발성 메모리 장치에는 ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM(Electrically Erasable and Programmable ROM), 플래시 메모리 장치(1100), PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등이 있다. 메모리 장치(1100)는 리드(Read)한 데이터를 메모리 컨트롤러(1200)로 전송하고, 메모리 컨트롤러(1200)는 입력받은 데이터를 호스트(1300)로 전송한다.
메모리 컨트롤러(1200)는 메모리 장치(1100)와 호스트(1300) 사이에 연결된다. 메모리 컨트롤러(1200)는 호스트(1300)의 요청에 응답하여 메모리 장치(1100)를 액세스한다. 메모리 컨트롤러(1200)는 호스트(1300)로부터 데이터(DATA)를 입력받고, 부호화된 데이터(DATA_C; coded data)를 생성할 수 있다. 메모리 컨트롤러(1200)는 메모리 장치(1100)로 커맨드(CMA; command), 어드레스(ADDR; address), 부호화 데이터(DATA_C), 그리고 제어 신호(CTRL)를 제공할 수 있다.
한편, 메모리 컨트롤러(1200)는 메모리 장치(1100)로부터 부호화 데이터(DATA_C)를 수신하고, 이를 복호화 하여 원본 데이터(DATA; original data)를 복원할 수 있다. 메모리 컨트롤러(1200)는 복원된 데이터를 호스트(1300)로 전송할 수 있다.
계속해서 도 1을 참조하면, 메모리 컨트롤러(1200)는 상태 조정부(1270)를 포함한다. 상태 조정부(1270)는 메모리 장치(1100)로부터 수신한 부호화 데이터(DATA_C)가 복호화되어 원본 데이터(DATA)로 복원될 때, 호스트(1300)로 원본 데이터(DATA)를 전송하는 시점을 조정한다.
상태 조정부(1270)는 원본 데이터(DATA) 생성이 완료되고 호스트 사이드 버퍼(도 5 참조)로 메모리 컨트롤러(1200) 내부 버스 사이즈만큼의 데이터가 도달하는 시점에 호스트(1300)로 원본 데이터를 전송할 수 있도록 메모리 컨트롤러(1300)의 동작을 조정한다.
본 발명의 실시 예에 따른 메모리 시스템(1000)은 원본 데이터가 호스트 사이드 버퍼에 도달하는 시점에 호스트(1300)로 데이터를 전송 하기 때문에, 데이터 읽기 시간을 줄일 수 있다.
도 2는 도 1에 도시된 메모리 장치(1100)를 보여주는 블록도이다. 도 2를 참조하면, 메모리 장치(1100)는 메모리 셀 어레이(1110), 어드레스 디코더(1120), 데이터 입출력 회로(1130), 그리고 제어 로직(1140)을 포함한다.
메모리 셀 어레이(1110)는 워드 라인들(WL)을 통해 어드레스 디코더(1120)에 연결되고, 비트 라인들(BL)을 통해 데이터 입출력 회로(1130)에 연결된다. 메모리 셀 어레이(1110)는 복수의 메모리 셀을 포함한다. 행(row) 방향으로 배열되는 메모리 셀은 워드 라인들(WL)에 연결된다. 열(column) 방향으로 배열되는 메모리 셀은 비트 라인들(BL)에 연결된다. 하나의 메모리 셀에 하나 또는 그 이상의 데이터가 저장될 수 있다.
어드레스 디코더(1120)는 워드 라인(WL)을 통해 메모리 셀 어레이(1110)에 연결된다. 어드레스 디코더(1120)는 메모리 컨트롤러(도 1 참조, 1200)로부터 어드레스(ADDR)를 수신한다. 어드레스(ADDR)는 행 어드레스(row address)와 열 어드레스(column address)를 포함할 수 있다. 어드레스 디코더(1120)는 행 어드레스를 이용하여 하나 또는 그 이상의 워드 라인(WL)을 선택하고, 열 어드레스(CA; Column Address)를 데이터 입출력 회로(1130)에 전달한다.
데이터 입출력 회로(1130)는 비트 라인들(BL)을 통해 메모리 셀 어레이(1110)에 연결되고, 메모리 컨트롤러(1200)와 부호화 데이터(DATA_C)를 교환한다. 데이터 입출력 회로(1130)는 제어 로직(1140)의 제어에 응답하여 동작한다. 데이터 입출력 회로(1130)는 어드레스 디코더(1120)로부터 열 어드레스(CA)를 입력받고, 하나 또는 그 이상의 비트 라인(BL)을 선택한다.
데이터 입출력 회로(1130)는 외부로부터 부호화 데이터(DATA_C)를 수신하고, 수신된 데이터(DATA_C)를 메모리 셀 어레이(1110)에 제공한다. 데이터 입출력 회로(1130)는 메모리 셀 어레이(1110)로부터 부호화 데이터(DATA_C)를 읽고, 읽은 데이터(DATA_C)를 메모리 컨트롤러(1200)로 출력한다.
제어 로직(1140)은 어드레스 디코더(1120)와 데이터 입출력 회로(1130)에 연결된다. 제어 로직(1140)은 메모리 컨트롤러(1200)로부터 커맨드(CMD)와 제어 신호(CTRL)를 입력받고, 메모리 장치(1100)의 제반 동작(예를 들면, 읽기나 쓰기 동작 등)을 제어할 수 있다.
도 3 및 도 4는 도 2에 도시된 메모리 셀 어레이의 실시 예를 보여주는 회로도이다. 도 3은 NAND 플래시 메모리의 예를 보여주고, 도 4는VNAND(Vertical NAND flash memory)의 예를 보여준다.
도 3을 참조하면, 메모리 셀 어레이(1110a)는 복수의 플래시 메모리 셀을 포함한다. 행 방향을 따라 제공되는 메모리 셀들(MC1~MCm)은 워드 라인들(WL1~WLm)에 연결된다. 동일한 행의 메모리 셀들(MC)은 동일한 워드 라인(WL)에 연결된다. 열 방향을 따라 제공되는 메모리 셀들(MC1~MCm)은 비트 라인들(BL1~BLn)에 대응한다. 동일한 열의 메모리 셀들(MC1~MCm)은 동일한 비트 라인(BL)에 연결된다.
비트 라인들(BL1~BLn)과 메모리 셀들(MC1~MCm) 사이에 스트링 선택 트랜지스터들(SST)이 연결된다. 스트링 선택 트랜지스터들(SST)은 스트링 선택 라인(SSL)에 연결된다. 공통 소스 라인(CSL)과 메모리 셀들(MC1~MCm) 사이에 접지 선택 트랜지스터들(GST)이 연결된다. 접지 선택 트랜지스터들(GST)은 접지 선택 라인(GSL)에 연결될 수 있다.
도 4를 참조하면, 메모리 셀 어레이(1110b)는 수직 구조를 가지는 복수의 스트링(STR)들을 포함할 수 있다. 스트링(STR)은 제2 방향을 따라 복수 개로 형성되어 스트링 열을 형성할 수 있다. 스트링 열은 제3 방향을 따라 복수 개로 형성되어 스트링 어레이를 형성할 수 있다. 복수의 스트링(STR)은 비트 라인들(BL1,..., BLm)과 공통 소스 라인(CSL) 사이에 제1 방향을 따라 직렬로 배치되는 접지 선택 트랜지스터(GSTV)들, 메모리 셀(MC2)들 및 스트링 선택 트랜지스터(SSTV)들을 각각 포함할 수 있다.
접지 선택 트랜지스터(GSTV)들은 접지 선택 라인들(GSL11, GSL12, ..., GSLi1, GSLi2)에 각각 연결되고, 스트링 선택 트랜지스터(SSTV)들은 스트링 선택 라인들(SSL11, SSL12, ..., SSLi1, SSLi2)에 각각 연결될 수 있다. 동일한 층에 배열되는 메모리 셀(MC2)들은 워드 라인들(WL1~WLn) 중 하나에 공통으로 연결될 수 있다. 접지 선택 라인들(GSL11~GSLi2) 및 스트링 선택 라인들(SSL11~SSLi2)은 제2 방향으로 연장되며 제3 방향을 따라 복수 개로 형성될 수 있다. 워드 라인들(WL1~WLn)은 제2 방향으로 연장되며 제1 방향 및 제3 방향을 따라 복수 개로 형성될 수 있다. 비트 라인들(BL1~BLm)은 상기 제3 방향으로 연장되며 상기 제2 방향을 따라 복수 개로 형성될 수 있다. 메모리 셀(MC2)들은 워드 라인들(WL1~WLn)에 인가되는 전압의 레벨에 따라 제어될 수 있다.
셀 어레이(1110b)를 포함하는 수직형 플래시 메모리 장치는 낸드 플래시 메모리 셀들을 포함하므로, 일반적인 낸드 플래시 메모리 장치와 마찬가지로 페이지 단위로 기입 동작 및 독출 동작을 수행하며, 블록 단위로 소거 동작을 수행할 수 있다.
실시 예에 따라서, 하나의 스트링(STR)에 포함되는 두 개의 스트링 선택 트랜지스터들은 하나의 스트링 선택 라인에 연결되고 하나의 스트링에 포함되는 두 개의 접지 선택 트랜지스터들은 하나의 접지 선택 라인에 연결되도록 구현될 수도 있다. 또한, 실시 예에 따라서, 하나의 스트링은 하나의 스트링 선택 트랜지스터 및 하나의 접지 선택 트랜지스터를 포함하여 구현될 수도 있다.
다시 도 1을 참조하면, 본 발명의 실시 예에 따른 메모리 시스템(1000)은 메모리 컨트롤러(1200) 내에 상태 조정부(1270)를 포함한다. 본 발명의 실시 예에 따른 상태 조정부(1270)는 메모리 장치(1100)에 저장된 데이터가 리드된 경우에, 원본 데이터를 생성하고 고속으로 호스트(1300)로 데이터를 전송할 수 있다. 본 발명에 의하면, 내부 버퍼에 원본 데이터가 도달하는 시점에 호스트(1300)로 전송하기 때문에, 데이터를 읽기 위한 대기 시간(이하, 리드 레이턴시; read latency) 및 대기 전력을 줄일 수 있다.
Ⅱ. 리드 데이터를 고속으로 전송하는 방법
도 5는 도 1에 도시된 메모리 컨트롤러(1200)를 보여주는 블록도이다. 도 5를 참조하면, 메모리 컨트롤러(1200)는 시스템 버스(1210), 호스트 인터페이스부(1220), 내부 클럭 생성부(1230), RAM(Random Access Memory, 1240), 메모리 인터페이스(1250), 호스트 사이드 버퍼(1260), 상태조정부(1270), 그리고 ECC(Error Correcting Code)부(1280)를 포함한다. 시스템 버스(1210)(또는 내부 버스)는 내부 클럭 생성부(1230), RAM(1240), 메모리 인터페이스(1250), 호스트 인터페이스(1220), 호스트 사이드 버퍼(1260), ECC부(1280), 상태 조정부(1270) 사이에 채널을 제공한다.
호스트 인터페이스(1220)는 특정한 통신 규격에 따라 호스트(도 1 참조, 1300)와 통신할 수 있다. 예시적으로, 메모리 컨트롤러(1200)는 USB (Universal Serial Bus), 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), 그리고 파이어와이어(Firewire) 등과 같은 다양한 통신 규격들 중 적어도 하나를 통해 호스트(도 1 참조, 1300)와 통신할 수 있다.
내부 클럭 생성부(1230)는 일정 주기의 내부 클럭 신호를 생성하여 시스템 버스(1210) 통해 RAM(1240), 메모리 인터페이스(1250), 호스트 인터페이스(1220), 호스트 사이드 버퍼(1260), ECC부(1280), 상태 조정부(1270)에 내부 클럭 신호를 제공한다.
RAM(1240)은 메모리 컨트롤러(1200)의 내부 동작의 동작 메모리, 캐시 메모리, 그리고 버퍼 메모리 중 적어도 하나로 이용될 수 있다.
메모리 인터페이스(1250)는 메모리 장치(1100)와 인터페이싱한다. 예를 들면, 메모리 인터페이스(1250)는 낸드 플래시 인터페이스 또는 VNAND 인터페이스 등을 포함한다.
호스트 사이드 버퍼(1260)는 시스템 버스(1210)를 통해 ECC부(1280) 및 상태 조정부(1270)와 통신한다. 예를 들어, 호스트 사이드 버퍼(1260)는 ECC 수행이 완료된 데이터(DATA)를 입력받고 데이터 수신이 완료됨을 표시하는 신호를 활성화할 수 있다.
상태 조정부(1270)는 ECC 수행이 완료되고 호스트 사이드 버퍼(1260)에 내부 버스 사이즈의 최초의 데이터가 수신된 경우, 데이터 전송을 알리는 신호를 업데이트 하여 호스트(1300)로 데이터를 전송한다. 상태 조정부(1270)의 동작은 도 6 내지 도 8을 참조하여 좀 더 상세하게 설명될 것이다.
ECC부(1280)는 호스트(1300)로부터 수신되는 데이터를 ECC 인코딩하고 부호화 데이터를 생성한다. 또한 메모리 장치(1100)로부터 수신되는 부호화 데이터를 ECC 디코딩하고 원본 데이터를 생성한다. ECC 인코딩과 ECC 디코딩을 수행하는 것을 ECC 수행한다고 표기할 수 있다.
도 6은 도 5에 도시된 ECC부를 예시적으로 보여주는 블록도이다. 도 6을 참조하면, 메모리 컨트롤러(1200)는 호스트 사이드 버퍼(1260), 상태 조정부(1270), 그리고 ECC부(1280)를 포함한다. ECC부(1280)는 ECC 페이지 버퍼(1281, ECC Page Buffer), ECC 코어(1281, ECC core), 및 ECC 섹터 버퍼(1283, ECC Sector buffer)를 포함한다.
메모리 장치(1100)는 부호화된 리드 데이터(RD)를 메모리 컨트롤러(1200)로 전송할 수 있다. 메모리 장치(1100)는 선택 워드 라인에 연결된 복수의 메모리 셀을 리드하고 리드 데이터(RD; Read Data)를 생성한다. 생성된 리드 데이터는 메모리 컨트롤러(1200)로 전송할 수 있다. 리드 데이터(RD)는 도 1의 부호화된 데이터(DATA_C)와 동일한 데이터 일 수 있다.
계속해서 도 6을 참조하면, 메모리 컨트롤러(1200)는 입력받은 리드 데이터(RD)를 ECC부(1280)의 ECC 페이지 버퍼(1281)에 저장할 수 있다. ECC 페이지 버퍼(1281)는 입력받은 리드 데이터(RD)를 저장하고 ECC 코어(1282, ECC Core)에 전송한다.
ECC 코어(1282)는 리드 데이터(RD)에 기초하여 에러 정정 동작을 수행하고 ECC 리드 데이터(ERD; ECC Read Data)를 생성한다. ECC 리드 데이터(ERD)는 메모리 장치(1100)에서 입력받은 리드 데이터(RD)의 에러가 정정되어 원본 데이터로 복구된 데이터이다. ECC 코어(1282)는 생성된 ECC 리드 데이터(ERD)를 ECC 섹터 버퍼(1283)로 전송한다. 또한, ECC 수행이 완료될 때, ECC 수행 완료 신호(ED; ECC Done)를 상태 조정부(1270)로 전송한다.
ECC 섹터 버퍼(1283)는 입력받은 ECC 리드 데이터(ERD)를 저장하고, 메모리 컨트롤러(1200)의 시스템 버스(1210, 도 5 참조) 사이즈로 분할하여 분할된 ECC 리드 데이터(SED; Segmented ECC Read Data)를 생성한다. 생성된 분할된 리드 데이터(SED)의 사이즈는 ECC 코어(1282)에서 에러 정정 동작을 수행하는 데이터 사이즈 보다 작을 수 있다.
예를 들어, ECC 코어(1282)에서 에러 정정 동작을 수행하는 단위 데이터 사이즈가 1K바이트(byte)이고, 시스템 버스(1210)의 데이터 전송 사이즈는 16 바이트라고 가정하자. ECC 섹터 버퍼(1283)는 입력받은 1K 바이트의 ECC 리드 데이터(ERD)를 시스템 버스 사이즈 16 바이트로 분할하여 다수개의 분할된 ECC 리드 데이터(SED)를 생성할 수 있다.
ECC 섹터 버퍼(1283)는 생성된 분할된 ECC 리드 데이터(SED)를 호스트 사이드 버퍼(1260, Host Side Buffer)로 전송한다. 이때, 분할된 ECC 리드 데이터(SED)는 내부 클럭 생성부(1230, 도 5 참조)에서 생성된 내부 클럭 신호에 따라 전송될 수 있다.
호스트 사이드 버퍼(1260)는 입력받은 분할된 ECC 리드 데이터(SED)를 저장한다. 호스트 사이드 버퍼(1260)는 첫 번째 분할된 ECC 리드 데이터(SED)의 수신이 완료되면, 제 1 데이터 수신 신호(FDR: First Data Receiving)를 활성화하여 상태 조정부(1270)로 전송한다.
상태 조정부(1270)는 ECC 완료 신호(ED)와 제 1 데이터 수신 신호(FDR)를 입력받고, 두 신호가 활성화되면 ECC 상태 정보 신호(ESI; ECC Status Information)를 생성한다. ECC 상태 정보 신호(ESI)는 호스트 사이드 버퍼(1260)에서 저장된 분할된 ECC 리드 데이터(SED)를 호스트(1300)로 전송하도록 메모리 컨트롤러(1200)의 동작을 제어한다.
호스트 사이드 버퍼(1260)에 저장된 분할된 ECC 리드 데이터(SED)는 내부 클럭 신호의 주기보다 느린 클럭 주기에 동기 되어 전송될 수 있다. 예를 들어, 내부 클럭 생성기(1230)에서 생성된 내부 클럭 신호(CLK)의 주기가 220MHz이고 호스트(1300)로 데이터를 전송할 때는 내부 클럭 신호보다 느린 200MHz라고 가정하자. ECC 섹터 버퍼(1283)에서 생성된 분할된 ECC 리드 데이터(SED)는 내부 클럭 신호의 주기인 220MHz에 동기되어 호스트 사이드 버퍼(1283)에 전송된다. 호스트 사이드 버퍼(1283)에 저장된 분할된 ECC 리드 데이터(SED)는 내부 클럭 신호보다 느린 클럭 주기인 200MHz에 동기하여 호스트(1300)로 전송된다.
메모리 컨트롤러(1200) 내부의 시스템 버스(1210)에서 데이터 이동 속도가 호스트 사이드 버퍼(1260)에서 호스트(1300)로 데이터를 전송하는 속도보다 빠르기 때문에 호스트(1300)는 안정적으로 데이터를 전송받을 수 있다. 또한, ECC 코어(1282)의 에러 정정 동작을 수행하는 단위 데이터가 모두 호스트 사이드 버퍼(1260)에 모두 전송되기 이전에, 내부 시스템 버스의 사이즈만큼의 데이터만 호스크 사이드 버퍼(1260)에 저장되면, 저장된 데이터를 호스트(1300)로 바로 전송할 수 있기 때문에, 리드 레이턴시(read latency)가 줄어든다.
도 7은 도 5에 도시된 ECC부와 호스트 사이드 버퍼 및 상태 조정부의 관계를 예시적으로 보여주는 블록도이다. 도 7을 참조하면, ECC부(1280)는 ECC 페이지 버퍼(1281), ECC 코어부(1282), ECC 섹터 버퍼(1283), 그리고 ECC 정보부(1284)를 포함한다.
ECC 페이지 버퍼(1281)는 메모리 장치(1100)에서 입력된 제 1 리드 데이터(RD1)을 저장하고 ECC 코어부(1282)로 제 2 리드 데이터(RD2)를 출력한다. 여기에서, 제 1 리드 데이터(RD1)은 도 1에 도시된 부호화된 데이터(DATA_C)와 동일한 데이터일 수 있다.
ECC 코어부(1282)는 제 2 리드 데이터(RD2)에 기초하여 에러 정정 동작을 수행하고 ECC 리드 데이터(ERD; ECC Read Data)와 에러 정정 정보(EI; ECC Information)를 생성한다.
ECC 코어부(1282)의 동작을 자세히 살펴보면, ECC 코어부(1282)는 ECC 페이지 버퍼(1281)에서 출력된 제 2 리드 데이터(RD2)를 입력받고 에러 정정 동작을 수행한다. 이때, ECC 코어부(1282)는 메모리 장치(1100)에서 리드한 데이터를 호스트(1300)로 전송하기 위해 ECC 디코딩 동작을 수행한다. ECC 코어부(1282)는 제 2 리드 데이터(RD2)로부터 에러가 정정된 ECC 리드 데이터(ERD; ECC Read Data)를 생성하고, 생성된 ECC 리드 데이터(ERD)를 ECC 섹터 버퍼(1283)로 전송한다.
또한, ECC 코어부(1282)는 ECC 디코딩 동작이 완료 되면 에러 정정 정보(EI)를 생성하고 ECC 정보부(1284)로 전송한다. 에러 정정 정보(EI)는 에러 정정된 데이터 비트 수와 ECC 완료 정보를 포함할 수 있다.
ECC 섹터 버퍼(1283)는 ECC 리드 데이터(ERD)를 입력받고 내부 버스 사이즈로 분할하여 분할된 ECC 리드 데이터(SED1)를 생성한다. 예를 들어, ECC가 수행되는 단위 데이터의 사이즈가 1K 바이트이고, 내부 버스 사이즈(또는 시스템 버스 사이즈)가 16 바이트이면, ECC 섹터 버퍼(1283)는 64개의 분할된 ECC 리드 데이터를 생성할 수 있다. 분할된 ECC 리드 데이터(SED1)는 내부 클럭 신호에 동기 되어 호스트 사이드 버퍼(1260)로 출력된다.
ECC 정보부(1284)는 에러 정정 정보(EI)를 입력받고, ECC 완료 신호(ED; ECC Done)를 생성한다. ECC 완료 신호(ED)가 활성화되면, ECC 섹터 버퍼(1283)에서 생성된 분할된 ECC 리드 데이터(SED1)가 호스트 사이드 버퍼(1260)로 전송된다.
호스트 사이드 버퍼(1260)는 분할된 ECC 리드 데이터(SED1)를 입력받고, 제 1 데이터 수신 신호(FDR; First Data Receiving)를 생성하여 상태 조정부(1270)로 전송한다. 제 1 데이터 수신 신호(FDR)는 ECC 섹터 버퍼(1283)에서 입력된 분할된 ECC 리드 데이터(SED1) 중에서 제일 먼저 입력되는 분할된 ECC 리드 데이터의 입력이 완료되었을 때 생성된다. 호스트 사이드 버퍼(1260)는 상태 조정부(1270)의 ECC 상태 정보(ESI)의 응답하여 분할된 ECC 리드 데이터(SED2)를 호스트(1300)로 전송한다. 상태 조정부(1270)의 구성 및 동작 원리는 도 8에서 자세히 설명하기로 한다.
도 8은 도 7에 도시된 상태 조정부를 예시적으로 보여주는 블록도이다. 도 8을 참조하면, 상태 조정부(1270)는 호스트 DMA 카운터(1271), 상태 결정부(1272) 및 상태 업데이트부(1273)를 포함한다.
호스트 DMA 카운터(1271)는 ECC 완료 신호(ED)와 제 1 데이터 수신 신호(FDR)를 입력받고 내부 클럭 신호(CLK)에 따라 호스트 DMA 카운트(HDC; Host DMA Count)를 생성한다. 예를 들어, 신호가 활성화된 상태가 "H(High)" 또는 "1"라고 가정 하자. ECC 완료 신호(ED)가 "H"이고 제 1 데이터 수신 신호(FDR)가 "H" 일 때, 호스트 DMA 카운터(1271)는 첫 번째 내부 클럭 신호의 라이징 에지(rising edge)에 동기하여 호스트 DMA 카운트(HDC)의 값 "1"을 생성한다.
호스트 DMA 카운트(HDC)의 값은 입력받은 ECC 완료 신호(ED)와 제 1 데이터 수신 신호(FDR)가 모두 활성화 상태이면 내부 클럭 신호(CLK)의 라이징 에지(rising edge)마다 증가한다. ECC 완료 신호(ED) 또는 제 1 데이터 수신 신호(FDR) 중 하나라도 활성화 상태가 되지 않으면 호스트 DMA 카운트(HDC)는 생성되거나 증가되지 않는다.
상태 결정부(1272)는 호스트 DMA 카운트(HDC) 값에 기초하여 상태 업데이트 신호(SU; Status Update)를 생성한다. 상태 업데이트 신호(SU)는 호스트 DMA 카운트(HDC) 값이 미리 정해진 값과 같을 때 활성화 된다. 예를 들어, 상태 결정부(1272)는 상태 업데이트 신호(SU)를 생성하기 위한 "1"을 미리 정해진 값으로 갖는다고 가정하자. 상태 결정부(1272)는 호스트 DMA 카운트(HDC) 값이 "1"이 입력되면 상태 업데이트 신호(SU)를 생성하고 상태 업데이트부(1273)로 출력한다.
상태 업데이트부(1273)는 상태 업데이트 신호(SU)에 응답하여 ECC 상태 정보(ESI: ECC Status Information)를 생성한다. ECC 상태 정보(ESI)가 활성화되면 호스트 사이드 버퍼(1260, 도 7 참조)에서 호스트(1300)로 분할된 ECC 리드 데이터(SED2)가 전송된다. 분할된 ECC 리드 데이터(SED2)는 도 1에 표기된 원본 데이터(DATA, 도 1 참조)와 동일한 데이터 일 수 있다. ECC 상태 정보 신호(ESI)는 ECC 수행이 완료되고, ECC 수행 결과로 생성된 데이터가 호스트 사이드 버퍼(1260)에 입력이 완료되어 호스트(1300)로 데이터를 전송할 수 있는 상태를 임을 알려주기 위한 신호이다.
도 9는 본 발명의 실시 예에 따른 메모리 시스템의 데이터 전송 방법을 보여주는 순서도 이다.
S110 단계에서, 메모리 장치(도 1 참조, 1100)는 선택 워드 라인에 연결된 복수의 메모리 셀들을 리드하고 리드 데이터(RD)를 생성하고 메모리 컨트롤러(도 1 참조, 1200)로 전송한다. 메모리 컨트롤러(1200)는 호스트 DMA 카운트(HDC)의 값을 "0"으로 초기화 한다.
S120 단계에서, 메모리 컨트롤러(1200)는 리드 데이터(RD)에 기초하여 에러 정정 동작을 수행하고, 분할된 ECC 리드 데이터(SED)를 생성한다. S120 단계에서, 리드 데이터(RD)는 ECC 페이지 버퍼(도 7참조, 1281)에 저장될 수 있다. ECC 코어(도 7참조, 1282)는 저장된 리드 데이터(RD)에 기초하여 에러 정정 동작을 수행하고 ECC 리드 데이터(ERD)를 생성할 수 있다. ECC 리드 데이터(ERD)는 ECC 섹터 버퍼(1283)에 저장될 수 있다. 또한, S120 단계에서는 ECC 리드 데이터(ERD)를 내부 버스(또는 시스템 버스, 도 5 참조, 1210) 사이즈로 분할하여 ECC 리드 데이터(ERD)를 생성할 수 있다.
S130 단계에서, 메모리 컨트롤러(1200)는 분할된 ECC 리드 데이터(SED)를 호스트 사이드 버퍼(도 5 참조, 1260)로 전송하고, 호스트 DMA 카운트(HDC)를 증가 시킨다. S130 단계에서는 분할된 ECC 리드 데이터(SED)를 내부 클럭 신호에 동기하여 호스트 사이드 버퍼(1260)로 전송한다. 호스트 DMA 카운트(HDC)는 내부 클락 신호(CLK)에 따라, 분할된 ECC 리드 데이터(SED)가 호스트 사이드 버퍼(1260)로 전송될 때마다 증가한다.
S140 단계에서, 메모리 컨트롤러(1200)는 호스트 DMA 카운트(HDC)와 미리 정해진 카운트(predetermined count)를 비교한다. 미리 정해진 카운트와 호스트 DMA 카운트(HDC)가 같은 경우에는 S150 단계가 수행되고, 같지 않을 경우에는 S160 단계가 수행된다.
여기에서, 미리 정해진 카운트는 리드 레이턴시 카운트(read latency count) 일 수 있다. 리드 레이턴시 카운트의 값에 따라 호스트가 리드 데이터를 받기 위해 대기하는 리드 레이턴시 시간이 변동될 수 있다. 예를 들어, 리드 레이턴시 카운트 가 3인 경우에, 호스트 DMA 카운트(HDC)가 3일 때, 리드 데이터를 호스트로 전송한다. 따라서 리드 레이턴시 카운트 값이 3인 경우의 리드 레이턴시 시간을 리드 레이턴시 카운트 값이 1인 경우와 비교하면, 두 개의 내부 클럭 주기 즉, 호스트 DMA 카운트가 2만큼 더 증가하는 시간만큼 리드 레이턴시가 더 증가하게 된다.
S150 단계에서는, S140 단계에서 호스트 DMA 카운트(HDC)가 미리 정해진 카운트와 같은 경우에, 메모리 컨트롤러(1200)는 비교 결과에 따라 ECC 상태 정보(ESI)를 업데이트하고, 분할된 ECC 리드 데이터(SED)를 호스트(도 1 참조, 1300)로 전송한다.
S160 단계에서는, S140 단계에서 호스트 DMA 카운트(HDC)가 미리 정해진 카운트와 다른 경우에, ECC 상태 정보(ESI)의 추가 업데이트 없이 분할된 ECC 리드 데이터(SED)를 호스트(1300)로 전송한다. 또한, S160 단계에서는, S150 단계에서 ECC 상태 정보(ESI)를 업데이트 한 다음에, 호스트 사이드 버퍼(1260)로부터 호스트(1300)로 분할된 ECC 리드 데이터(SED)를 전송한다.
S170 단계에서, 호스트 DMA 카운트(HDC)가 마지막 호스트 DMA 카운트인지를 판단한다. 호스트 DMA 카운트(HDC)가 마지막 호스트 DMA 카운트와 동일하면 본 발명의 데이터 전송 동작을 종료하고, 다르면 S130 단계를 수행한다.
도 10은 본 발명의 실시 예에 따른 메모리 시스템의 동작 방법을 보여주는 타이밍도 이다. 메모리 시스템(도 1 참조, 1000)의 메모리 장치(1100)는 NAND 플래시 메모리이고, 메모리 컨트롤러(1200)는 NAND 플래시 메모리를 제어할 수 있다.
도 10을 참조하면, 호스트(도 1 참조, 1300)는 리드 커맨드(READ CMD)를 메모리 컨트롤러(도 1 참조, 1200)로 출력한다. 메모리 컨트롤러(1200)는 입력받은 리드 커맨드(READ CMD)에 응답하여 메모리 장치(1100)로 리드 동작을 명령한다. 이때, 메모리 장치(1100)의 상태를 알려주는 디바이스 상태(Device Status)신호는 비활성화 상태, 즉 "L(Low)" 또는 "0"의 값이 되어 메모리 컨트롤러(1200)에서 리드 동작이 수행되고 있음을 알려준다.
메모리 장치(1100)는 리드 동작이 수행되어 리드 데이터가 독출 되는 시간(tR)이 지나면 ECC 단위 block 별로 Data를 메모리 컨트롤러(1200)로 전송한다. 메모리 컨트롤러(1200)는 전송된 리드 데이터(RD)를 저장하고 에러 정정 동작을 수행한다. 메모리 컨트롤러(1200)는 ECC 수행 결과 데이터들을 호스트(1300)로 전송하기 위해 호스트 사이드 버퍼(도 5 참조, 1260)로 전송한다. 메모리 컨트롤러(1200)가 호스트 사이드 버퍼(1260)로 데이터를 전송 및 저장하는 단계를 호스트 DMA(Host DMA)라고 한다.
메모리 컨트롤러(1200)는 호스트 사이드 버퍼(1260)에 시스템 버스 사이즈인 첫 번째 분할된 ECC 리드 데이터(SED)가 도달하면 호스트(1300)로 데이터를 전송하기 위해서 ECC block0 Status 신호를 활성화한다. ECC block0 Status 신호는 도 7의 ECC 상태 정보와 동일한 신호일 수 있다. 메모리 컨트롤러(1200)는 분할된 ECC 리드 데이터(SED)를 호스트로 전송한다.
기존에는 ECC 처리 단위 데이터가 모두 호스트 사이드 버퍼(1260)에 전송이 완료 되고 난 후에 데이터를 전송한다. 반면에 본 발명은 첫 번째 분할된 ECC 리드 데이터(SED)가 호스트 사이드 버퍼(1260)에 입력되면 호스트(1300)로 데이터를 전송하기 시작한다. 따라서 본 발명은 리드 레이턴시(Read Latency)가 T2에서 T1으로 줄어 들기 때문에 고속 리드 동작을 수행할 수 있고 대기 전력도 줄일 수 있다.
또한, 메모리 컨트롤러(1200)의 시스템 버스가 동작하는 내부 클럭 신호(CLK)의 주기를 호스트(1300)로 데이터를 전송할 때 사용하는 클럭의 주기보다 빠르게 하여, 안정적으로 데이터를 전송할 수 있다.
Ⅲ. 본 발명의 적용 예
도 11은 도 1에 도시된 메모리 시스템의 응용 예를 보여주는 블록도이다. 도 11을 참조하면, 메모리 시스템(2000)은 메모리 장치(2100) 및 컨트롤러(2200)를 포함한다. 메모리 장치(2100)는 복수의 메모리 칩들을 포함한다. 복수의 메모리 칩들은 복수의 그룹들로 분할될 수 있다. 복수의 메모리 칩들의 각 그룹은 하나의 공통 채널을 통해 컨트롤러(2200)와 통신하도록 구성될 수 있다. 예시적으로, 복수의 메모리 칩들은 제 1 내지 제 k 채널들(CH1~CHk)을 통해 컨트롤러(2200)와 통신할 수 있다.
컨트롤러(2200)은 상태 조정부(1270)를 포함 할 수 있다. 상태 조정부(1270)는 도 1에 도시된 상태 조정부(1270)를 나타낸다. 컨트롤러(2200)는 상태 조정부 명령에 따라 리드 레이턴시를 감소시키며 데이터를 전송 할 수 있다.
도 12는 본 발명의 실시 예에 따른 메모리 시스템이 카드로 구현된 예를 보여준다. 도 12를 참조하면, 메모리 카드(3000)는 메모리 장치(3100), 컨트롤러(3200), 그리고 커넥터(3300)를 포함한다.
커넥터(3300)는 메모리 카드(3000)와 호스트를 전기적으로 연결할 수 있다. 메모리 카드(3000)는 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS) 등과 같은 메모리 카드들을 구성할 수 있다.
컨트롤러(3200)은 상태 조정부(1270)를 포함 할 수 있다. 상태 조정부(1270)는 도 1에 도시된 상태 조정부(1270)를 나타낸다. 컨트롤러(2200)는 상태 조정부 명령에 따라 리드 레이턴시를 감소시키며 데이터를 전송 할 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능하다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
1000, 2000; 메모리 시스템
1100, 2100; 메모리 장치 1200, 2200; 컨트롤러
1110; 메모리 셀 어레이 1120; 어드레스 디코더
1130; 읽기 및 쓰기 회로 1140; 제어 로직
1210; 시스템 버스 1220; 호스트 인터페이스
1230; 내부 클럭 생성부 1240; RAM
1250; 메모리 인터페이스 1260; 호스트 사이드 버퍼
1270; 상태 조정부 1280; ECC부

Claims (10)

  1. 선택 워드 라인에 연결된 복수의 메모리 셀로부터 데이터를 리드하고 리드 데이터를 생성하는 단계;
    상기 리드 데이터에 기초하여 에러 정정 동작을 수행하고 분할된 ECC 리드 데이터를 생성하는 단계;
    상기 분할된 ECC 리드 데이터를 호스트 사이드 버퍼로 전송하고 호스트 DMA 카운트 값을 증가시키는 단계; 및
    상기 호스트 DMA 카운트 값과 리드 레이턴시 카운트 값을 비교하고, 비교 결과에 따라 ECC 상태 정보 신호를 업데이트 하고 상기 분할된 ECC 리드 데이터를 호스트로 전송하는 단계를 포함하는 메모리 시스템의 동작 방법.
  2. 제 1 항에 있어서,
    상기 호스트 DMA 카운트 값이 상기 리드 레이턴시 카운트 값과 같은 경우에는 ECC 상태 정보 신호를 업데이트 하고 상기 분할된 ECC 리드 데이터를 상기 호스트로 전송하고,
    상기 호스트 DMA 카운트 값이 리드 레이턴시 카운트 값과 다른 경우에는 상기 ECC 상태 정보 신호의 추가 업데이트 없이 상기 분할된 ECC 리드 데이터를 상기 호스트로 전송하는 메모리 시스템의 동작 방법.
  3. 제 1 항에 있어서,
    상기 에러 정정 동작을 수행하고 분할된 ECC 리드 데이터를 생성하는 단계는,
    상기 리드 데이터를 ECC 페이지 버퍼에 저장하는 단계;
    ECC 코어에서 상기 저장된 리드 데이터에 기초하여 에러 정정 동작을 수행하고 ECC 리드 데이터를 생성하는 단계; 및
    상기 ECC 리드 데이터를 ECC 섹터 버퍼에 저장하는 단계를 포함하는 메모리 시스템의 동작 방법.
  4. 제 3 항에 있어서,
    상기 분할된 ECC 리드 데이터를 생성하는 단계에서는, 상기 ECC 리드 데이터를 내부 버스 사이즈로 분할하여 상기 ECC 리드 데이터를 생성하는 메모리 시스템의 동작 방법.
  5. 제 1 항에 있어서,
    상기 호스트 사이드 버퍼로 전송하고 호스트 DMA 카운트 값을 증가시키는 단계에서는, 상기 분할된 ECC 리드 데이터를 내부 클럭 신호에 동기하여 상기 호스트 사이드 버퍼로 전송하는 메모리 시스템의 동작 방법.
  6. 제 1 항에 있어서,
    상기 호스트 DMA 카운트 값은 내부 클락 신호에 따라 상기 분할된 ECC 리드 데이터가 상기 호스트 사이드 버퍼로 전송될 때마다 증가하는 메모리 시스템의 동작 방법.
  7. 제 1 항에 있어서,
    상기 호스트 DMA 카운트 값이 마지막 호스트 DMA 값과 같지 않은 경우에는 상기 분할된 ECC 리드 데이터를 상기 호스트 사이드 버퍼로 전송하고 호스트 DMA 카운트 값을 증가시키는 단계를 더 포함하는 메모리 시스템의 동작 방법.
  8. 메모리 장치; 및
    상기 메모리 장치를 제어하는 메모리 컨트롤러를 포함하고,
    상기 메모리 컨트롤러는,
    상기 메모리 장치로부터 입력받은 리드 데이터에 기초하여 에러 정정 동작을 수행하고 ECC 완료 신호와 분할된 ECC 리드 데이터를 생성하는 ECC부;
    상기 ECC부로부터 상기 분할된 ECC 리드 데이터를 입력받고 제 1 데이터 수신 신호를 생성하는 호스트 사이드 버퍼;
    상기 ECC부로부터 ECC 완료 정보를 입력받고 상기 제 1 데이터 수신 신호에 응답하여 ECC 상태 정보를 생성하는 상태 조정부; 및
    내부 클럭 신호를 생성하는 클럭 생성부를 포함하고,
    상기 분할된 ECC 리드 데이터는 상기 내부 클럭 신호에 동기되어 상기 호스트 사이드 버퍼로 출력되고,
    상기 ECC 상태 정보에 응답하여 분할된 ECC 리드 데이터를 상기 호스트로 전송하는 메모리 시스템.
  9. 제 8 항에 있어서,
    상기 ECC부는,
    상기 메모리 장치로부터 독출된 리드 데이터를 수신하여 저장하는 ECC 페이지 버퍼;
    상기 리드 데이터에 기초하여 에러 정정 동작을 수행하고 ECC 리드 데이터와 에러 정정 정보를 생성하는 ECC 코어부;
    상기 생성된 에러 정정 정보로부터 ECC 완료 신호를 생성하는 ECC 정보부; 및
    상기 ECC 리드 데이터를 입력받고 내부 버스 사이즈로 분할하고, 분할된 ECC 리드 데이터를 생성하는 ECC 섹터 버퍼를 포함하고,
    상기 ECC 완료 신호에 응답하여 분할된 ECC 리드 데이터를 상기 호스트 사이드 버퍼로 출력하는 메모리 시스템.
  10. 제 8 항에 있어서,
    상기 상태 조정부는
    상기 ECC 완료 신호와 제 1 데이터 수신 신호를 입력받고 상기 내부 클럭 신호에 따라 호스트 DMA 카운트를 생성하는 호스트 DMA 카운터;
    상기 호스트 DMA 카운트 값에 기초하여 상태 업데이트 신호를 생성하는 상태 결정부; 및
    상기 상태 업데이트 신호에 응답하여 ECC 상태 정보를 생성하는 상태 업데이트부를 포함하는 메모리 시스템.
KR1020130145466A 2013-11-27 2013-11-27 메모리 장치로부터 읽은 데이터를 고속으로 전송하는 메모리 컨트롤러 및 그것의 데이터 전송 방법. KR20150061393A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130145466A KR20150061393A (ko) 2013-11-27 2013-11-27 메모리 장치로부터 읽은 데이터를 고속으로 전송하는 메모리 컨트롤러 및 그것의 데이터 전송 방법.
US14/303,658 US9489253B2 (en) 2013-11-27 2014-06-13 Memory controller and method of operating memory controller for reading data from memory device at high speed

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130145466A KR20150061393A (ko) 2013-11-27 2013-11-27 메모리 장치로부터 읽은 데이터를 고속으로 전송하는 메모리 컨트롤러 및 그것의 데이터 전송 방법.

Publications (1)

Publication Number Publication Date
KR20150061393A true KR20150061393A (ko) 2015-06-04

Family

ID=53183756

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130145466A KR20150061393A (ko) 2013-11-27 2013-11-27 메모리 장치로부터 읽은 데이터를 고속으로 전송하는 메모리 컨트롤러 및 그것의 데이터 전송 방법.

Country Status (2)

Country Link
US (1) US9489253B2 (ko)
KR (1) KR20150061393A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10261860B2 (en) 2016-08-23 2019-04-16 SK Hynix Inc. Semiconductor systems

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10567006B2 (en) * 2016-08-05 2020-02-18 Sandisk Technologies Llc Data relocation
TWI637268B (zh) * 2017-03-22 2018-10-01 慧榮科技股份有限公司 主機裝置與資料傳輸速率控制方法
KR20190067669A (ko) * 2017-12-07 2019-06-17 에스케이하이닉스 주식회사 전자장치
CN111523302B (zh) * 2020-07-06 2020-10-02 成都晓多科技有限公司 一种句法分析方法、装置、存储介质及电子设备
CN113485652B (zh) * 2021-07-31 2022-02-22 郑州信大捷安信息技术股份有限公司 一种大数据块迭代的高速处理方法、fpga装置和系统
US11841767B2 (en) * 2021-11-24 2023-12-12 Samsung Electronics Co., Ltd. Controller controlling non-volatile memory device, storage device including the same, and operating method thereof

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07331460A (ja) * 1994-06-02 1995-12-19 Nippon Telegr & Teleph Corp <Ntt> ドライエッチング方法
JP4082913B2 (ja) 2002-02-07 2008-04-30 株式会社ルネサステクノロジ メモリシステム
KR100498508B1 (ko) 2003-09-16 2005-07-01 삼성전자주식회사 데이터 전송시간을 감소시키는 듀얼 버퍼링(Dualbuffering) 메모리 시스템 및 이에 대한 제어방법
US7173863B2 (en) 2004-03-08 2007-02-06 Sandisk Corporation Flash controller cache architecture
US7322002B2 (en) * 2004-05-26 2008-01-22 Micron Technology, Inc. Erasure pointer error correction
JP2006236211A (ja) 2005-02-28 2006-09-07 Renesas Technology Corp 情報処理システム
KR100845525B1 (ko) 2006-08-07 2008-07-10 삼성전자주식회사 메모리 카드 시스템, 그것의 데이터 전송 방법, 그리고반도체 메모리 장치
KR101373793B1 (ko) 2006-10-04 2014-03-13 마벨 월드 트레이드 리미티드 플래시 메모리 제어 인터페이스
US7525842B2 (en) 2007-01-25 2009-04-28 Micron Technology, Inc. Increased NAND flash memory read throughput
US8762620B2 (en) * 2007-12-27 2014-06-24 Sandisk Enterprise Ip Llc Multiprocessor storage controller
JP2009176136A (ja) 2008-01-25 2009-08-06 Toshiba Corp 半導体記憶装置
JP4519923B2 (ja) 2008-02-29 2010-08-04 株式会社東芝 メモリシステム
US8245111B2 (en) * 2008-12-09 2012-08-14 Intel Corporation Performing multi-bit error correction on a cache line
US8438453B2 (en) 2009-05-06 2013-05-07 Apple Inc. Low latency read operation for managed non-volatile memory
US8495332B2 (en) 2009-07-24 2013-07-23 Apple Inc. Controller for optimizing throughput of read operations

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10261860B2 (en) 2016-08-23 2019-04-16 SK Hynix Inc. Semiconductor systems

Also Published As

Publication number Publication date
US20150149858A1 (en) 2015-05-28
US9489253B2 (en) 2016-11-08

Similar Documents

Publication Publication Date Title
KR20150061393A (ko) 메모리 장치로부터 읽은 데이터를 고속으로 전송하는 메모리 컨트롤러 및 그것의 데이터 전송 방법.
US10877697B2 (en) Data storage device and operating method thereof
US10902928B2 (en) Memory system, operation method thereof, and nonvolatile memory device
US20150046638A1 (en) Multi-bit memory device and on-chip buffered program method thereof
CN107633862B (zh) 存储器系统及其操作方法
US20200026465A1 (en) Data storage device, operation method thereof and storage system having the same
US10741261B1 (en) Method and system for improving performance of a storage device using asynchronous independent plane read functionality
US11513736B2 (en) Revised host command generation for unaligned access
KR20200054534A (ko) 메모리 시스템 및 그것의 동작 방법
KR20190128498A (ko) 메모리 시스템, 그것의 동작 방법 및 전자 장치
US11664079B2 (en) Intervallic dynamic start voltage and program verify sampling in a memory sub-system
KR102375060B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US11740987B2 (en) Automatic chip initialization retry
US11948643B2 (en) Nonvolatile memory device, operating method thereof, and memory system including the same
KR20190102779A (ko) 불휘발성 메모리 장치, 이를 포함하는 데이터 저장 장치 및 그것의 동작 방법
US11106597B2 (en) Controller, data storage device and operating method thereof
KR20220149117A (ko) 복수의 비휘발성 메모리 장치와 메모리 컨트롤러 간 데이터 통신을 개선하기 위한 장치 및 방법
US20190179744A1 (en) Memory system and operating method thereof
US20150029792A1 (en) Semiconductor memory device and method of operating the same
US20190179749A1 (en) Memory system, operating method thereof and nonvolatile memory device
US10628322B2 (en) Memory system and operating method thereof
US11543992B2 (en) Decreasing physical secure erase times in solid state drives
US11961559B2 (en) Storage device and operating method of storage device
US20230367723A1 (en) Data burst queue management
US20240233827A1 (en) Nonvolatile memory device, operating method thereof, and memory system including the same

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