KR101575248B1 - 메모리 컨트롤러 및 그것을 포함하는 메모리 시스템 - Google Patents

메모리 컨트롤러 및 그것을 포함하는 메모리 시스템 Download PDF

Info

Publication number
KR101575248B1
KR101575248B1 KR1020090038358A KR20090038358A KR101575248B1 KR 101575248 B1 KR101575248 B1 KR 101575248B1 KR 1020090038358 A KR1020090038358 A KR 1020090038358A KR 20090038358 A KR20090038358 A KR 20090038358A KR 101575248 B1 KR101575248 B1 KR 101575248B1
Authority
KR
South Korea
Prior art keywords
data
error
memory
controller
read
Prior art date
Application number
KR1020090038358A
Other languages
English (en)
Other versions
KR20100119310A (ko
Inventor
장우태
임용태
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020090038358A priority Critical patent/KR101575248B1/ko
Priority to US12/768,047 priority patent/US8522114B2/en
Publication of KR20100119310A publication Critical patent/KR20100119310A/ko
Application granted granted Critical
Publication of KR101575248B1 publication Critical patent/KR101575248B1/ko

Links

Images

Classifications

    • 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/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature

Abstract

본 발명의 실시 예에 따른 메모리 시스템은 메모리 셀 어레이 및 메모리 셀 어레이에서 읽기 및 쓰기 동작을 수행하도록 구성되는 읽기 및 쓰기 회로를 포함하는 불휘발성 메모리를 포함한다. 본 발명의 실시 예에 따른 메모리 시스템은 불휘발성 메모리를 제어하도록 구성되는 컨트롤러를 더 포함한다. 불휘발성 메모리로부터 데이터가 수신될 때, 수신되는 데이터에서 에러가 검출되면, 컨트롤러는 데이터 전송을 중지할 것을 불휘발성 메모리에 요청하고, 검출된 에러를 정정하고, 그리고 에러 정정이 완료되면 데이터 전송을 재개할 것을 불휘발성 메모리에 요청하도록 구성된다.

Description

메모리 컨트롤러 및 그것을 포함하는 메모리 시스템{MEMORY CONTROLLER AND MEMORY SYSTEM INCLUDING THE SAME}
본 발명은 반도체 장치에 관한 것으로, 더 상세하게는 메모리 컨트롤러 및 그것을 포함하는 메모리 시스템에 관한 것이다.
반도체 메모리 장치(semiconductor memory device)는 실리콘 등과 같은 반도체를 이용하여 구현되는 기억장치이다. 반도체 메모리 장치는 크게 휘발성 메모리 장치(Volatile memory device)와 불휘발성 메모리 장치(Nonvolatile memory device)로 구분된다.
휘발성 메모리 장치는 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 메모리 장치이다. 휘발성 메모리 장치에는 SRAM, DRAM, SDRAM 등이 있다. 불휘발성 메모리 장치는 전원 공급이 차단되어도 저장하고 있던 데이터가 소멸하지 않는 메모리 장치이다. 불휘발성 메모리 장치에는 ROM, PROM, EPROM, EEPROM, 플래시 메모리 장치, PRAM, MRAM, RRAM, FRAM 등이 있다. 플래시 메모리 장치는 크게 노어 타입과 낸드 타입으로 구분된다.
반도체 메모리를 포함하는 메모리 시스템에서, 반도체 메모리를 제어하기 위 한 컨트롤러(또는 메모리 컨트롤러)가 제공된다. 컨트롤러는 호스트와 통신하기 위한 인터페이스, 반도체 메모리와 통신하기 위한 인터페이스, 그리고 호스트의 요청에 응답하여 반도체 메모리를 제어하기 위한 로직 등을 포함한다.
본 발명의 목적은, 향상된 에러 정정 능력을 제공하는 메모리 컨트롤러 및 그것을 포함하는 메모리 시스템을 제공하는 데에 있다.
본 발명의 실시 예에 따른 메모리 시스템은 메모리 셀 어레이 및 상기 메모리 셀 어레이에서 읽기 및 쓰기 동작을 수행하도록 구성되는 읽기 및 쓰기 회로를 포함하는 불휘발성 메모리; 그리고 상기 불휘발성 메모리를 제어하도록 구성되는 컨트롤러를 포함하고, 상기 불휘발성 메모리로부터 데이터가 수신될 때 상기 수신되는 데이터에서 에러가 검출되면, 상기 컨트롤러는 데이터 전송을 중지할 것을 상기 불휘발성 메모리에 요청하고, 상기 검출된 에러를 정정하고, 그리고 에러 정정이 완료되면 데이터 전송을 재개할 것을 상기 불휘발성 메모리에 요청하도록 구성된다.
실시 예로서, 상기 읽기 및 쓰기 회로는 제 1 단위로 읽기 및 쓰기 동작을 수행하도록 구성되고, 상기 컨트롤러는 상기 불휘발성 메모리로부터 수신되는 데이터의 에러를 상기 제 1 단위보다 작은 제 2 단위로 체크하도록 구성된다.
실시 예로서, 상기 불휘발성 메모리로부터 상기 제 2 단위의 제 1 및 제 2 데이터가 수신될 때 상기 제 1 데이터에서 에러가 검출되면, 상기 컨트롤러는 상기 제 2 데이터의 전송을 중지할 것을 상기 불휘발성 메모리에 요청하도록 구성된다.
실시 예로서, 상기 컨트롤러는 상기 검출된 에러에 대응하며 상기 제 2 단위보다 작은 제 3 단위의 데이터를 상기 읽기 및 쓰기 회로부터 수신하고, 상기 수신된 데이터의 에러를 정정하고, 그리고 상기 에러 정정된 데이터를 이용하여 상기 읽기 및 쓰기 회로에서 상기 검출된 에러에 대응하는 영역을 갱신하도록 구성된다.
실시 예로서, 상기 불휘발성 메모리로부터 상기 제 1 단위의 데이터의 수신이 완료되면, 상기 컨트롤러는 카피-백 동작을 수행하도록 상기 불휘발성 메모리를 제어하도록 구성된다.
실시 예로서, 상기 컨트롤러는 상기 불휘발성 메모리로부터 수신되는 데이터의 에러를 체크하고, 상기 수신된 데이터에서 에러가 검출되면 대기 신호를 활성하도록 구성되는 에러 정정 블록; 그리고 상기 대기 신호에 응답하여, 데이터의 전송을 중지할 것을 상기 불휘발성 메모리에 요청하도록 구성되는 스테이트 머신을 포함한다.
실시 예로서, 상기 에러 정정 블록은 상기 불휘발성 메모리로부터 수신되는 데이터의 에러 위치 정보를 상기 스테이트 머신에 제공하도록 구성되고, 상기 스테이트 머신은 상기 에러 위치 정보를 이용하여 상기 불휘발성 메모리로부터 수신되는 데이터의 에러를 정정하도록 구성된다.
실시 예로서, 상기 스테이트 머신은 상기 에러 위치 정보를 이용하여 에러를 정정하고, 에러가 정정되었음을 나타내는 제어 신호를 상기 에러 정정 블록으로 전 송하도록 구성된다.
실시 예로서, 상기 에러 정정 블록은 상기 제어 신호의 전송수를 카운트하고, 상기 제어 신호의 전송수가 상기 불휘발성 메모리로부터 수신되는 데이터에서 검출된 에러의 수에 도달하면, 에러 정정이 완료되었음을 나타내는 제어 신호를 상기 스테이트 머신으로 전송하도록 구성된다.
실시 예로서, 상기 불휘발성 메모리 및 상기 컨트롤러는 반도체 드라이브(SSD, Solid State Drive)를 구성한다.
본 발명에 따르면, 랜덤 인(Random-in) 및 랜덤 아웃(Random-out) 방식으로 에러를 정정하는 것이 가능하다. 또한, 에러 정정 기능은 특정한 스테이트 머신(state machine)에 의해 제공된다. 따라서, 메모리 컨트롤러 및 그것을 포함하는 메모리 시스템의 에러 정정 능력이 향상된다.
이하에서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다. 동일한 구성 요소들은 동일한 참조 번호를 이용하여 인용될 것이다. 유사한 구성 요소들은 유사한 참조 번호들을 이용하여 인용될 것이다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템(10)을 보여주는 블록도이다. 도 1을 참조하면, 본 발명의 실시 예에 따른 메모리 시스템(10)은 불휘발성 메 모리(100) 및 컨트롤러(200)를 포함한다.
불휘발성 메모리(100)는 데이터를 저장하기 위한 메모리 셀 어레이, 메모리 셀 어레이에 데이터를 기입 및 독출하기 위한 읽기 및 쓰기 회로, 외부로부터 전달되는 어드레스를 디코딩하여 읽기 및 쓰기 회로에 전달하는 어드레스 디코더, 불휘발성 메모리(100)의 제반 동작을 제어하기 위한 제어 로직 등을 포함할 것이다. 본 발명의 실시 예에 따른 불휘발성 메모리(100)는 도 2를 참조하여 더 상세하게 설명된다.
컨트롤러(200)는 호스트(Host) 및 불휘발성 메모리(100)에 연결된다. 호스트(Host)로부터의 요청에 응답하여, 컨트롤러(200)는 불휘발성 메모리(100)를 액세스하도록 구성된다. 예를 들면, 컨트롤러(200)는 불휘발성 메모리(100)의 읽기, 쓰기, 그리고 소거 동작을 제어하도록 구성된다. 다른 예로서, 컨트롤러(200)는 불휘발성 메모리(100) 및 호스트(Host) 사이에 인터페이스를 제공하도록 구성된다. 다른 예로서, 컨트롤러(200)는 불휘발성 메모리(100)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구성된다. 컨트롤러(200)는 도 3을 참조하여 더 상세하게 설명된다.
불휘발성 메모리(100) 및 컨트롤러(200)는 하나의 반도체 장치로 집적될 수 있다. 예시적으로, 불휘발성 메모리(100) 및 컨트롤러(200)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 것이다. 예를 들면, 불휘발성 메모리(100) 및 컨트롤러(200)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS- MMC, MMCmicro), SD 카드(SD, miniSD, microSD), 유니버설 플래시 기억장치(UFS) 등을 구성할 것이다.
다른 예로서, 불휘발성 메모리(100) 및 컨트롤러(200)는 하나의 반도체 장치로 집적되어 반도체 드라이브(SSD, Solid State Drive)를 구성할 것이다. 예시적으로, 반도체 드라이브(SSD)는 반도체 메모리에 데이터를 저장하도록 구성되는 저장 장치를 포함할 것이다. 메모리 시스템(10)이 반도체 드라이브(SSD)로 이용되는 경우, 메모리 시스템(10)에 연결된 호스트(Host)의 동작 속도는 획기적으로 개선될 것이다.
다른 예로서, 메모리 시스템(10)은 컴퓨터, 휴대용 컴퓨터, UMPC, 워크스테이션, 넷북(net-book), PDA, 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), 디지털 카메라(digital camera), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), 정보를 무선 환경에서 송수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들 중 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치들 중 하나, 텔레매틱스 네트워크를 구성하는 다양한 전자 장치들 중 하나, 또는 컴퓨팅 시스템을 구성하는 다양한 구성 요소들 중 하나(예를 들면, 반도체 드라이브(SSD), 메모리 카드 등)에 적용될 것이다.
다른 예로서, 불휘발성 메모리(100) 또는 메모리 시스템(10)은 다양한 형태들의 패키지로 실장 될 수 있다. 예를 들면, 불휘발성 메모리(100) 또는 메모리 시스템(10)은 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) 등과 같은 방식으로 패키지화되어 실장될 것이다.
이하에서, 간결한 설명을 위하여, 낸드 플래시 메모리 장치의 예를 참조하여, 본 발명의 기술적 사상이 설명된다. 즉, 불휘발성 메모리(100)는 플래시 메모리인 것으로 가정한다. 그러나, 본 발명의 기술적 사상은 낸드 플래시 메모리 장치에 한정되지 않는다. 예시적으로, 본 발명의 기술적 사상은 ROM, PROM, EPROM, EEPROM, 플래시 메모리 장치, PRAM, MRAM, RRAM, FRAM 등을 포함하는 불휘발성 메모리 장치에 응용 및 적용될 수 있다.
도 2는 도 1의 플래시 메모리(100)를 보여주는 블록도이다. 도 2를 참조하면, 플래시 메모리(100)는 메모리 셀 어레이(110), 어드레스 디코더(120), 읽기 및 쓰기 회로(130), 그리고 제어 로직(140)을 포함한다.
메모리 셀 어레이(110)는 워드 라인들(WL)을 통해 어드레스 디코더(120)에 연결되고, 비트 라인들(BL)을 통해 읽기 및 쓰기 회로(130)에 연결된다. 메모리 셀 어레이(110)는 복수의 메모리 셀들을 포함한다. 예시적으로, 메모리 셀들의 행들은 워드 라인들(WL)에 연결될 것이다. 메모리 셀들의 열들은 비트 라인들(BL)에 연결될 것이다. 예시적으로, 메모리 셀들은 셀 당 하나 또는 그 이상의 비트를 저장할 수 있도록 구성될 것이다.
어드레스 디코더(120)는 워드 라인들(WL)을 통해 메모리 셀 어레이(110)에 연결된다. 어드레스 디코더(120)는 제어 로직(140)의 제어에 응답하여 동작한다. 어드레스 디코더(120)는 외부로부터 어드레스(ADDR)를 전달받는다. 예시적으로, 어드레스(ADDR)는 도 1의 컨트롤러(100)로부터 전달될 것이다.
어드레스 디코더(120)는 전달된 어드레스(ADDR) 중 행 어드레스를 디코딩할 것이다. 디코딩된 행 어드레스를 이용하여, 어드레스 디코더(120)는 워드 라인들(WL)을 선택할 것이다. 어드레스 디코더(120)는 전달된 어드레스(ADDR) 중 열 어드레스를 디코딩할 것이다. 디코딩된 열 어드레스는 읽기 및 쓰기 회로(130)에 전달될 것이다. 예시적으로, 어드레스 디코더(120)는 행 디코더, 열 디코더, 어드레스 버퍼 등과 같이 잘 알려진 구성 요소들을 포함할 것이다.
읽기 및 쓰기 회로(130)는 비트 라인들(BL)을 통해 메모리 셀 어레이(210)에 연결된다. 읽기 및 쓰기 회로(130)는 외부와 데이터를 교환한다. 예시적으로, 읽기 및 쓰기 회로(130)는 도 1의 컨트롤러(200)와 데이터를 교환할 것이다. 읽기 및 쓰기 회로(130)는 제어 로직(140)의 제어에 응답하여 동작한다. 읽기 및 쓰기 회 로(130)는 어드레스 디코더(120)로부터 디코딩된 열 어드레스를 수신할 것이다. 디코딩된 열 어드레스를 이용하여, 읽기 및 쓰기 회로(130)는 비트 라인들(BL)을 선택할 것이다.
예시적으로, 읽기 및 쓰기 회로(130)는 컨트롤러(200)로부터 데이터를 수신하고, 수신된 데이터를 메모리 셀 어레이(110)에 기입할 것이다. 다른 예로서, 읽기 및 쓰기 회로(130)는 메모리 셀 어레이(110)로부터 데이터를 읽고, 읽어진 데이터를 컨트롤러(200)에 전달할 것이다. 다른 예로서, 읽기 및 쓰기 회로(130)는 메모리 셀 어레이(110)의 제 1 저장 영역으로부터 데이터를 읽고, 읽어진 데이터를 메모리 셀 어레이(110)의 제 2 저장 영역에 기입할 것이다. 예를 들면, 읽기 및 쓰기 회로(130)는 카피-백(copy-back) 동작을 수행할 것이다.
예시적으로, 읽기 및 쓰기 회로(130)는 페이지 버퍼, 열 선택 회로, 데이터 버퍼 등과 같이 잘 알려진 구성 요소들을 포함할 것이다. 다른 예로서, 읽기 및 쓰기 회로(230)는 감지 증폭기, 쓰기 드라이버, 열 선택 회로, 데이터 버퍼 등과 같이 잘 알려진 구성 요소들을 포함할 것이다.
제어 로직(140)은 어드레스 디코더(120) 및 읽기 및 쓰기 회로(130)에 연결된다. 제어 로직(140)은 플래시 메모리(100)의 제반 동작을 제어한다. 제어 로직(140)은 외부로부터 전달되는 제어 신호(CTRL)에 응답하여 동작한다. 예시적으로, 제어 신호(CTRL)는 도 1의 컨트롤러(200)로부터 전달될 것이다.
플래시 메모리(100)에서, 읽기 및 쓰기 동작은 제 1 단위로 수행된다. 예시적으로, 제 1 단위는 페이지(예를 들면, Page1)인 것으로 가정하자. 도 2에 도시된 바와 같이, 하나의 페이지(Page2)는 제 2 단위의 데이터들(Seg1~Seg4) 및 대응하는 패리티들(P1~P4)로 구성된다. 예시적으로, 제 2 단위는 세그먼트(Segment)인 것으로 가정하자. 세그먼트들(Seg1~Seg4)은 사용자에 의해 기입 및 독출되는 데이터를 나타낸다.
예시적으로, 세그먼트들(Seg1~Seg4)은 호스트(Host)가 데이터를 액세스하는 단위일 것이다. 예를 들면, 세그먼트들(Seg1~Seg4)은 섹터들일 것이다. 패리티들(P1~P4)은 세그먼트들(Seg1~Seg4)에 기반하여 컨트롤러(200)에서 생성되는 데이터를 나타낸다. 예를 들면, 패리티들(P1~P4)은 세그먼트들(Seg1~Seg4)의 에러를 검출 및 정정하기 위한 데이터일 것이다.
도 2에서, 하나의 페이지(Page1)는 4 개의 세그먼트들(Seg1~Seg4) 및 대응하는 패리티들(P1~P4)로 구성되는 것으로 도시되어 있다. 그러나, 하나의 페이지(Page1)는 4 개의 세그먼트들(Seg1~Seg4) 및 대응하는 패리티들(P1~P4)로 구성되는 것으로 한정되지 않음이 이해될 것이다.
도 2에서, 세그먼트들(Seg1~Seg4)에 대응하는 패리티들(P1~P4)은 분산되어 저장되는 것으로 도시되어 있다. 그러나, 패리티들(P1~P4)은 분산되어 저장되는 것으로 한정되지 않음이 이해될 것이다. 예시적으로, 패리티들(P1~P4)은 세그먼트들(Seg1~Seg4)이 저장되는 저장 영역과 논리적 또는 물리적으로 분리된 저장 영역에 저장될 수 있음이 이해될 것이다.
도 3은 도 1의 컨트롤러(200)를 보여주는 블록도이다. 도 3을 참조하면, 컨트롤러(200)는 시스템 버스(210), 프로세서(220), 램(230, RAM, Random Access Memory), 호스트 인터페이스(240), 그리고 제어부(250)를 포함한다.
시스템 버스(210)는 컨트롤러(200)의 구성 요소들 사이에 채널을 제공한다.
프로세서(220)는 컨트롤러(200)의 제반 동작을 제어한다. 예시적으로, 프로세서(220)는 컨트롤러(200) 및 플래시 메모리(100)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구성될 것이다. 예를 들면, 프로세서(220)는 호스트 드라이버(host driver), 플래시 변환 계층(FTL, Flash Translation Layer) 등을 구동하도록 구성될 것이다.
램(230)은 컨트롤러(200)의 동작 메모리로 이용될 것이다. 예를 들면, 프로세서(220)는 램(230)을 이용하여 컨트롤러(200) 및 플래시 메모리(100)의 동작을 제어할 것이다. 다른 예로서, 램(230)은 컨트롤러(200)의 버퍼 메모리(Buffer Memory)로 이용될 것이다. 예시적으로, 램(230)은 DRAM, SRAM, SDRAM 등과 같은 휘발성 메모리를 포함할 것이다. 다른 예로서, 램(230)은 PRAM, MRAM, RRAM, FRAM, 노어 플래시 메모리 등과 같은 불휘발성 메모리를 포함할 것이다.
호스트 인터페이스(240)는 호스트(Host) 및 컨트롤러(200) 사이의 데이터 교환을 수행하기 위한 프로토콜을 포함할 것이다. 예시적으로, 호스트 인터페이스(240)는 USB, MMC, PCI-E, ATA(Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI, ESDI, 그리고 IDE(Integrated Drive Electronics) 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 통해 외부(호스트)와 통신하도록 구성될 것이다.
제어부(250)는 프로세서(220)의 제어에 응답하여 동작한다. 제어부(250)는 플래시 메모리(100)와 통신하도록 구성된다. 예를 들면, 제어부(250)는 플래시 메모리(100)로의 데이터 출력을 제어하도록 구성된다. 제어부(250)는 플래시 메모리(100)로부터의 데이터 입력을 제어하도록 구성된다. 제어부(250)는 플래시 메모리(100)의 읽기, 쓰기, 그리고 소거 동작을 제어하도록 구성된다. 예시적으로, 제어부(250)는 제어 신호(CTRL) 및 어드레스(ADDR)를 플래시 메모리(100)에 전달하도록 구성된다. 제어부(250)는 플래시 메모리(100)와 데이터(Data)를 교환하도록 구성된다.
제어부(250)는 플래시 메모리(100)로부터 읽어지는 데이터의 에러를 검출 및 정정하도록 구성된다. 특히, 카피-백 동작 시에, 제어부(250)는 플래시 메모리(100)로부터 읽어지는 데이터의 에러를 정정하도록 구성된다. 카피-백 동작은 플래시 메모리(100)의 제 1 저장 영역(예를 들면, 제 1 페이지)으로부터 데이터를 읽고, 읽어진 데이터를 플래시 메모리(100)의 제 2 저장 영역(예를 들면, 제 2 페이지)에 기입하는 동작을 나타낸다. 카피-백 동작은 카피-백 읽기 커맨드(read for copy-back) 및 카피-백(copy-back) 커맨드에 의해 수행될 것이다.
예시적으로, 제어부(250)는 플래시 메모리(100)에 카피-백 읽기 커맨드를 전송할 것이다. 카피-백 읽기 커맨드에 응답하여, 플래시 메모리(100)에서 제 1 단위(예를 들면, 페이지)로 데이터가 읽어질 것이다. 읽어진 데이터는 플래시 메모리(100)로부터 제어부(250)로 전송될 것이다.
제어부(250)는 플래시 메모리(100)로부터 수신되는 데이터의 에러를 제 1 단위(예를 들면, 페이지)보다 작은 제 2 단위(예를 들면, 세그먼트)로 체크할 것이 다. 예시적으로, 플래시 메모리(100)로부터 제 2 단위(예를 들면, 세그먼트)의 제 1 및 제 2 데이터가 수신되는 것으로 가정하자. 제 1 데이터에서 에러가 검출되면, 제어부(250)는 제 2 데이터의 송신을 중지할 것을 플래시 메모리(100)에 요청할 것이다.
제 1 데이터의 에러를 정정하기 위하여, 제어부(250)는 검출된 에러에 대응하는 데이터를 플래시 메모리(100)에 요청할 것이다. 예시적으로, 제어부(250)는 제 2 단위(예를 들면, 세그먼트)보다 작은 제 3 단위(예를 들면, 바이트)로 데이터를 요청할 것이다. 제어부(250)의 요청에 응답하여, 해당 데이터가 제 3 단위(예를 들면, 바이트)로 플래시 메모리(100)로부터 제어부(250)로 전송될 것이다.
제어부(250)는 플래시 메모리(100)로부터 제 3 단위(예를 들면, 바이트)로 수신된 데이터의 에러를 정정할 것이다. 제어부(250)는 에러 정정된 데이터를 제 3 단위(예를 들면, 바이트)로 플래시 메모리(100)에 전송할 것이다. 이후에, 제어부(250)는 카피-백 커맨드를 플래시 메모리(100)에 전달할 것이다. 카피-백 커맨드에 응답하여 에러 정정된 데이터가 제 1 단위로 플래시 메모리(100)의 제 2 페이지(Page2)에 기입될 것이다.
예시적으로, 제 3 단위(예를 들면, 바이트)는 플래시 메모리(100) 및 컨트롤러(200) 사이에서 한 번에 교환될 수 있는 양의 데이터를 나타낼 것이다. 즉, 제 2 단위(예를 들면, 세그먼트)의 데이터를 전송하기 위해, 플래시 메모리(100) 및 컨트로러(200)는 제 3 단위(예를 들면, 바이트)의 데이터 통신을 복수 회 수행할 것이다.
요약하면, 플래시 메모리(100)에서 제 1 단위(예를 들면, 페이지)로 데이터가 읽어진다. 그리고, 플래시 메모리(100)로부터 수신되는 데이터의 에러가 제 2 단위(예를 들면, 세그먼트)로 체크된다. 에러가 검출되면, 플래시 메모리(100) 및 컨트롤러(200) 사이의 제 3 단위(예를 들면, 바이트)의 데이터 입출력을 통해, 에러가 정정된다. 따라서, 카피-백 동작 시에, 랜덤-인(Random-in) 및 랜덤-아웃(Random-out)을 통해 에러를 정정하는 것이 가능하다.
제 1 단위(예를 들면, 페이지)로 읽어진 데이터의 에러를 정정하고, 에러 정정된 제 1 단위(예를 들면, 페이지)의 데이터를 기입하기 위해, 플래시 메모리(100) 및 컨트롤러(200) 사이에서 제 3 단위(예를 들면, 바이트)의 데이터 입출력이 복수회 수행된다. 제 3 단위(예를 들면, 바이트)의 데이터 입출력 회수는 검출된 에러들의 수에 대응한다. 따라서, 최소한의 데이터 입출력에 의해 카피-백 동작이 수행됨이 이해될 것이다.
제어부(250)는 스테이트 머신(251), 에러 정정 블록(253), 그리고 메모리 인터페이스(255)를 포함한다. 스테이트 머신(251)은 제어부(250)의 동작을 제어하도록 구성된다. 스테이트 머신(251)은 에러 정정 블록(253), 메모리 인터페이스(255), 그리고 시스템 버스(210)와 통신하도록 구성된다.
스테이트 머신(251)은 에러 정정 블록(253)에 데이터(Da1) 및 제어 신호(Do1)를 전송하도록 구성된다. 예시적으로, 데이터(Da1)는 플래시 메모리(100)로부터 메모리 인터페이스(255)를 통해 수신되는 데이터를 포함할 것이다. 다른 예로서, 데이터(Da1)는 호스트(Host)로부터 호스트 인터페이스(240)를 통해 수신되는 데이터를 포함할 것이다. 제어 신호(Do1)는 스테이트 머신(251)이 에러 정정 동작을 수행했음을 나타내는 신호일 것이다. 스테이트 머신(251)의 에러 정정 동작은 도 4 내지 9를 참조하여 더 상세하게 설명된다.
스테이트 머신(251)은 에러 정정 블록(253)으로부터 데이터(Da2), 제어 신호(Do2), 에러 위치 정보(EI), 그리고 대기 신호(Wait)를 수신하도록 구성된다. 예시적으로, 데이터(Da2)는 플래시 메모리(100)로부터 읽어지고 그리고 에러 정정 블록(253)에 의해 에러 정정된 데이터를 포함할 것이다. 다른 예로서, 데이터(Da2)는 호스트(Host)로부터 수신되고 그리고 에러 정정 블록(253)에 의해 생성된 패리티를 갖는 데이터를 포함할 것이다.
제어 신호(Do2)는 플래시 메모리(100)로부터 수신된 데이터의 에러 정정이 완료되었음을 나타내는 신호이다. 에러 위치 정보(EI)는 플래시 메모리(100)로부터 수신된 데이터의 에러의 위치를 나타내는 정보이다. 대기 신호(Wait)는 플래시 메모리(100)로부터 수신된 데이터에서 에러가 검출된 때에 활성화되는 신호이다. 제어 신호(Do2), 에러 위치 정보(EI), 그리고 대기 신호(Wait)에 응답하여, 스테이트 머신(251)은 에러 정정 동작을 수행하도록 구성된다. 스테이트 머신(251)의 에러 정정 동작은 도 4 내지 9를 참조하여 더 상세하게 설명된다.
에러 정정 블록(253)은 에러 제어 코드(Error Control Code)를 포함한다. 에러 정정 블록(253)은 수신되는 데이터에 기반하여 그리고 에러 제어 코드(ECC)를 이용하여 패리티를 생성하도록 구성된다. 에러 정정 블록(253)은 수신되는 패리티를 이용하여 수신되는 데이터의 에러를 검출 및 정정하도록 구성된다. 예시적으로, 에러 정정 블록(253)은 수신되는 데이터 및 패리티를 이용하여 신드롬(Syndrom) 연산을 수행하도록 구성될 것이다. 신드롬 연산을 통해, 에러 정정 블록(253)은 데이터의 에러를 검출하도록 구성된다.
예시적으로, 에러 정정 블록(253)은 Euclid & Chien Search Algorithm (이하, EC 알고리즘이라 칭함)을 수행하도록 구성된다. EC 알고리즘을 수행함으로써, 에러 정정 블록(253)은 에러 위치 정보(EI)를 검출하도록 구성된다. 에러 정정 동작 시에, 에러 정정 블록(253)은 제어 신호(Do2), 에러 위치 정보(EI), 그리고 대기 신호(Wait)를 생성하도록 구성된다.
메모리 인터페이스(255)는 스테이트 머신(251)의 제어에 응답하여 동작한다. 메모리 인터페이스(255)는 스테이트 머신(251)과 통신하도록 구성된다. 메모리 인터페이스(255)는 플래시 메모리(100)와 통신하기 위한 프로토콜을 포함하도록 구성된다. 예시적으로, 메모리 인터페이스(255)는 낸드 프로토콜을 포함하도록 구성될 것이다. 예시적으로, 메모리 인터페이스(255)는 플래시 메모리(100)에 제어 신호(CTRL) 및 어드레스(ADDR)를 전송하도록 구성된다. 예시적으로, 메모리 인터페이스(255)는 플래시 메모리(100)와 데이터(Data)를 교환하도록 구성된다.
이하에서, 도 1 내지 3을 참조하여, 메모리 시스템(10)의 쓰기 동작이 설명된다.
쓰기 동작 시에, 호스트(Host)로부터 호스트 인터페이스(240)로 쓰기 데이터가 전송될 것이다. 호스트 인터페이스(240)를 통해 수신되는 쓰기 데이터는 에러 정정 블록(253)에 전달될 것이다. 예시적으로, 쓰기 데이터는 시스템 버스(210) 및 스테이트 머신(251)을 통해 에러 정정 블록(253)에 전달될 것이다.
에러 정정 블록(253)은 제 2 단위(예를 들면, 세그먼트)로 호스트(Host)로부터 수신되는 데이터의 패리티들을 생성할 것이다. 예시적으로, 플래시 메모리(100)의 읽기 및 쓰기 동작의 단위(제 1 단위, 예를 들면 페이지(Page1))에 대응하는 데이터가 호스트(Host)로부터 수신되는 것으로 가정하자. 호스트(Host)로부터 수신되는 데이터는 제 2 단위(예를 들면, 세그먼트)로 분할될 것이다. 예를 들면, 호스트(Host)로부터 수신되는 데이터는 제 1 내지 제 4 세그먼트들(Seg1~Seg4)로 분할될 것이다. 에러 정정 블록(253)은 제 1 내지 제 4 세그먼트들(Seg1~Seg4)에 대응하는 패리티들(P1~P4)을 생성할 것이다.
제 1 내지 제 4 세그먼트들(Seg1~Seg4) 및 대응하는 패리티들(P1~P4)은 플래시 메모리(100)에 전송된다. 예시적으로, 제 1 내지 제 4 세그먼트들(Seg1~Seg4) 및 대응하는 패리티들(P1~P4)은 스테이트 머신(251) 및 메모리 인터페이스(255)를 통해 플래시 메모리(100)에 전송될 것이다. 제 1 내지 제 4 세그먼트들 (Seg1~Seg4) 및 대응하는 패리티들(P1~P4)은 플래시 메모리(100)의 읽기 및 쓰기 회로(130)에 저장된다. 읽기 및 쓰기 회로(130)는 제 1 내지 제 4 세그먼트들(Seg1~Seg4) 및 대응하는 패리티들(P1~P4)을 메모리 셀 어레이(110)의 대응하는 페이지(Page1)에 기입할 것이다.
쓰기 동작 시에, 제 1 내지 제 4 세그먼트들(Seg1~Seg4)을 임시로 저장하기 위하여 램(230)이 사용될 수 있음이 이해될 것이다. 즉, 컨트롤러(200)는 램(230)을 이용하여 제 1 내지 제 4 세그먼트들(Seg1~Seg4)을 버퍼링할 수 있음이 이해될 것이다.
이하에서, 도 1 내지 3을 참조하여, 메모리 시스템(10)의 읽기 동작이 설명된다.
읽기 동작 시에, 플래시 메모리(100)의 읽기 및 쓰기 회로(130)는 메모리 셀 어레이(110)로부터 읽기 데이터 및 대응하는 패리티들을 읽을 것이다. 예시적으로, 읽기 및 쓰기 회로(130)는 제 1 단위(예를 들면, 페이지)로 읽기 데이터 및 대응하는 패리티들을 읽을 것이다. 메모리 셀 어레이(110)의 하나의 페이지(Page1)로부터 제 1 내지 제 4 세그먼트들(Seg1~Seg4) 및 패리티들(P1~P4)이 읽어지는 것으로 가정하자. 제 1 내지 제 4 세그먼트들(Seg1~Seg4) 및 패리티들(P1~P4)은 에러 정정 블록(253)으로 전달될 것이다. 예시적으로, 제 1 내지 제 4 세그먼트들(Seg1~Seg4) 및 패리티들(P1~P4)은 메모리 인터페이스(255) 및 스테이트 머신(251)을 통해 에러 정정 블록(253)에 전달될 것이다.
에러 정정 블록(253)은 수신된 패리티들(P1~P4)을 이용하여 제 1 내지 제 4 세그먼트들(Seg1~Seg4)의 에러를 체크할 것이다. 예시적으로, 에러 정정 블록(253)은 제 2 단위(예를 들면, 세그먼트)로 제 1 내지 제 4 세그먼트들(Seg1~Seg4)의 에러를 체크할 것이다. 제 1 내지 제 4 세그먼트들(Seg1~Seg4)에서 에러가 검출되면, 에러 정정 블록(253)은 수신된 패리티(P1~P4)들을 이용하여 제 1 내지 제 4 세그먼트들(Seg1~Seg4)의 에러를 정정할 것이다. 에러가 정정된 제 1 내지 제 4 세그먼트들(Seg1~Seg4)은 호스트(Host)로 전송될 것이다. 예시적으로, 에러가 정정된 제 1 내지 제 4 세그먼트들(Seg1~Seg4)은 스테이트 머신(251), 시스템 버스(210) 그리고 호스트 인터페이스(240)를 통해 호스트(Host)로 전송될 것이다.
읽기 동작 시에, 제 1 내지 제 4 세그먼트들(Seg1~Seg4)을 임시로 저장하기 위하여, 램(230)이 사용될 수 있음이 이해될 것이다. 즉, 제 1 내지 제 4 세그먼트들(Seg1~Seg4)을 버퍼링하기 위하여, 램(230)이 사용될 수 있음이 이해될 것이다.
도 4는 도 1의 메모리 시스템(10)의 카피-백 동작을 설명하기 위한 순서도이다. 도 5 내지 9는 도 4의 순서도에 다른 메모리 시스템(10)의 상태를 설명하기 위한 블록도이다. 간결한 설명을 위하여, 도 5 내지 9에서, 플래시 메모리(100)의 구성 요소는 메모리 셀 어레이(110), 그리고 읽기 및 쓰기 회로(130)만이 도시되어 있다. 또한, 도 5 내지 9에서, 컨트롤러(200)의 구성 요소는 스테이트 머신(251) 및 에러 정정 블록(253) 만이 도시되어 있다. 이하에서, 도 1 내지 9를 참조하여, 메모리 시스템(10)의 카피-백 동작이 설명된다.
S110 단계에서, 카피-백 읽기 커맨드가 제공된다. 예시적으로, 컨트롤러(200)로부터 플래시 메모리(100)로 카피-백 읽기 커맨드가 제공될 것이다. 예를 들면, 컨트롤러(200)의 제어부(250)로부터 플래시 메모리(100)로 카피-백 읽기 커맨드가 제공될 것이다. 예를 들면, 제어부(250)의 스테이트 머신(251)으로부터 메모리 인터페이스(255)를 통해, 플래시 메모리(100)에 카피-백 읽기 커맨드가 전달될 것이다.
카피-백 읽기 커맨드에 응답하여, 읽기 및 쓰기 회로(130)는 읽기 동작을 수행할 것이다. 읽기 및 쓰기 회로(130)는 제 1 단위(예를 들면, 페이지)로 읽기 동작을 수행할 것이다. 예시적으로, 제 1 페이지(Page1)의 제 1 내지 제 4 세그먼트 들(Seg1~Seg4) 및 패리티들(P1~P4)이 읽어지는 것으로 가정하자. 읽어진 제 1 내지 제 4 세그먼트들(Seg1~Seg4) 및 패리티들(P1~P4)은 읽기 및 쓰기 회로(130)에 저장될 것이다(도 5의 ① 참조).
이후에, 읽기 및 쓰기 회로(130)는 제 1 내지 제 4 세그먼트들(Seg1~Seg4) 및 패리티들(P1~P4)을 컨트롤러(200)로 전송할 것이다. 제 1 내지 제 4 세그먼트들(Seg1~Seg4) 및 패리티들(P1~P4)은 순차적으로 컨트롤러(200)로 전송될 것이다. 예시적으로, 읽기 및 쓰기 회로(130)에서, 제 1 세그먼트(Seg1) 및 패리티(P1)로부터 제 4 세그먼트(Seg4) 및 패리티(P4)의 순서로 데이터가 전송되는 것으로 가정하자.
S120 단계에서, 컨트롤러(200)는 플래시 메모리(100)로부터 제 1 세그먼트(Seg1) 및 패리티(P1)를 수신한다. 예시적으로, 제 1 세그먼트(Seg1) 및 패리티(P1)는 스테이트 머신(251)으로 전송될 것이다(도 5의 ② 참조).
이후에, 수신된 제 1 세그먼트(Seg1)의 에러가 체크될 것이다. 스테이트 머신(251)은 플래시 메모리(100)로부터 전송되는 제 1 세그먼트(Seg1) 및 패리티(P1)를 에러 정정 블록(253)으로 전송할 것이다. 에러 정정 블록(253)은 수신되는 제 1 패리티(P1)를 이용하여, 수신되는 제 1 세그먼트(Seg1)의 에러를 체크할 것이다(도 5의 ③ 참조).
예시적으로, 에러 정정 블록(253)은 신드롬 연산을 수행하여, 수신된 데이터(Seg1)의 에러를 검출할 것이다. 예시적으로, 에러 정정 블록(253)은 EC 알고리즘을 수행하여, 수신된 데이터(Seg1)의 에러 위치를 검출할 것이다. 수신된 데이 터(Seg1)에서 에러가 검출되면, 에러 정정 블록(253)은 대기 신호(Wait)를 활성할 것이다. 대기 신호(Wait)는 스테이트 머신(251)으로 전송될 것이다.
S130 단계에서, 에러가 검출되었는지 판별된다. 에러가 검출되면, 대기 신호(Wait)가 활성된다. 예시적으로, 활성된 대기 신호(Wait)는 에러 정정 블록(253)으로부터 스테이트 머신(251)으로 전송된다.
대기 신호(Wait)가 수신되면, 즉 수신된 제 1 세그먼트(Seg1)에서 에러가 검출되면, 스테이트 머신(251)은 S150 단계를 수행할 것이다. 대기 신호(Wait)가 수신되지 않으면, 즉 수신된 제 1 세그먼트(Seg1)에서 에러가 검출되지 않으면, 스테이트 머신(251)은 S170 단계를 수행할 것이다. 간결한 설명을 위하여, 제 1 세그먼트(Seg1)에서 에러가 검출되지 않은 것으로 가정하자. 즉, 스테이트 머신(251)은 S170 단계를 수행하는 것으로 가정하자.
S170 단계에서, 에러 체크된 세그먼트(Seg1)가 마지막 세그먼트인지 판별된다. 에러 체크된 세그먼트(Seg1)가 마지막 세그먼트이면, S180 단계가 수행된다. 에러 체크된 세그먼트(Seg1)가 마지막 세그먼트가 아니면, S175 단계가 수행된다. 간결한 설명을 위하여, 에러 체크된 세그먼트(Seg1)는 마지막 세그먼트가 아닌 것으로 가정한다.
S175 단계에서, 데이터의 수신이 지속된다. 즉, 제 2 세그먼트(Seg2) 및 패리티(P2)가 플래시 메모리(100)로부터 수신된다(도 6의 ① 참조). 수신된 제 2 세그먼트(Seg2) 및 패리티(P2)는 에러 정정 블록(253)으로 전송된다(도 6의 ② 참조). 에러 정정 블록(253)은 신드롬 연산 및 EC 알고리즘을 수행하여, 수신된 제 2 세그먼트(Seg2)의 에러를 체크할 것이다.
S130 단계에서, 대기 신호(Wait)가 활성되는지 판별될 것이다. 예시적으로, 수신된 제 2 세그먼트(Seg2)에서 에러가 검출된 것으로 가정한다. 즉, 에러 정정 블록(253)은 대기 신호(Wait)를 활성하는 것으로 가정한다(도 6의 ③ 참조).
S140 단계에서, 대기 신호(Wait)에 응답하여, 컨트롤러(200)는 데이터의 전송을 중지할 것을 플래시 메모리(100)에 요청한다. 예시적으로, 스테이트 머신(251)은 데이터의 전송을 중지할 것을 플래시 메모리(100)에 요청할 것이다. 스테이트 머신(251)의 요청에 응답하여, 플래시 메모리(100)는 데이터의 전송을 중지할 것이다. 예시적으로, 제 2 세그먼트(Seg2)에서 에러가 검출되면, 플래시 메모리(100)는 제 3 세그먼트(Seg3)의 전송을 중지할 것이다.
다른 예로서, 플래시 메모리(100)로부터 전송되는 데이터가 제어부(250)에서 파이프-라인(pipe-line) 방식으로 수신되는 것으로 가정하자. 제어부(250)에서 제 n 세그먼트의 에러가 체크되는 동안, 플래시 메모리(100)로부터 제 n+1 세그먼트가 전송되는 것이 가능할 것이다. 이때, 스테이트 머신(251)의 요청에 응답하여, 플래시 메모리(100)는 제 n+2 세그먼트의 전송을 중단할 것이다.
간결한 설명을 위하여, 제 2 세그먼트(Seg2)에서 에러가 검출되면, 스테이트 머신(251)의 요청에 응답하여 플래시 메모리(100)는 제 3 세그먼트(Seg3)의 전송을 중단하는 것으로 가정하자. 이후에, S150 내지 S160 단계에서, 스테이트 머신(251)은 수신된 제 2 세그먼트(Seg2)에서 검출된 에러를 정정할 것이다.
S150 단계에서, 에러가 정정 가능한지 판별된다. 컨트롤러(200)는 검출된 에 러가 정정 가능한지 판별한다. 예시적으로, 스테이트 머신(251)은 에러 정정 블록(253)에 의해 정정 가능한 비트 수와 수신된 제 2 세그먼트(Seg2)에서 검출된 에러 비트 수를 비교할 것이다. 에러 비트 수가 정정 가능한 비트 수보다 크면, 에러 정정은 불가능할 것이다.
이때, S155 단계에서, 컨트롤러(200)는 에러 정정이 불가능함을 나타내는 신호(Error Report)를 발생할 것이다. 예시적으로, 스테이트 머신(251)은 정정 불가능한 에러가 발생되었음을 나타내는 신호(Error Report)를 발생할 것이다. 예시적으로, 신호(Error Report)는 호스트(Host)로 전달될 것이다. 이후에, S170 단계가 수행될 것이다.
다른 예로서, 컨트롤러(200)는 S170 단계를 수행하는 대신, 카피-백 동작을 종료하기 위한 신호를 발생할 것이다. 예를 들면, 스테이트 머신(251)은 S170 단계를 수행하는 대신, 카피-백 동작을 종료하기 위한 신호를 발생할 것이다. 즉, 수신된 제 2 세그먼트(Seg2)에서 정정 불가능한 에러가 검출되면, 카피-백 동작이 종료될 수 있음이 이해될 것이다.
수신된 제 2 세그먼트(Seg2)의 에러가 정정 가능하면, 스테이트 머신(251)은 S160 단계를 수행할 것이다. S160 단계에서, 컨트롤러(200)는 검출된 에러를 정정한다. 예시적으로, 스테이트 머신(251)은 검출된 에러를 정정할 것이다.
에러 정정 블록(253)은 EC 알고리즘을 통해 검출된 에러 위치 정보(EI)를 스테이트 머신(251)에 전송할 것이다(도 7의 ① 참조). 예시적으로, 에러 위치 정보(EI)는 에러 장소 정보(ERL, ERror Location) 및 에러 위치 정보(ERP, ERror Position)를 포함할 것이다.
예시적으로, 에러 장소 정보(ERL)는 복수의 제 3 단위들(예를 들면, 바이트)로 구성되는 제 2 단위(예를 들면, 세그먼트)의 데이터 중 어느 영역에러 에러가 검출되었는지를 나타낼 것이다. 예를 들면, 에러 장소 정보(ERL)는 수신된 제 2 세그먼트(Seg2)의 몇 번째 바이트에서 에러가 검출되었는지를 나타낼 것이다.
예시적으로, 에러 위치 정보(ERP)는 제 3 단위(예를 들면, 바이트)의 데이터 중 어느 영역에서 에러가 검출되었는지를 나타낼 것이다. 예를 들면, 에러 위치 정보(ERP)는 에러 장소 정보(ERL)에 의해 지적되는 바이트의 몇 번째 비트에서 에러가 검출되었는지를 나타낼 것이다.
스테이트 머신(251)은 에러 정정 블록(253)으로부터 에러 위치 정보(EI)를수신할 것이다. 에러 위치 정보(EI)에 기반하여, 스테이트 머신(251)은 수신된 데이터(Seg2) 중 검출된 에러에 대응하는 데이터(E1)를 플래시 메모리(100)에 요청할 것이다. 예시적으로, 스테이트 머신(251)은 에러 장소 정보(ERL)를 이용하여 데이터를 요청할 것이다. 예를 들면, 스테이트 머신(251)은 에러 장소 정보(ERL)에 의해 지적되는 제 3 단위(예를 들면, 바이트)의 데이터(E1)를 플래시 메모리(100)에 요청할 것이다.
스테이트 머신(251)의 요청에 응답하여, 플래시 메모리(100)의 읽기 및 쓰기 회로(130)로부터 해당 데이터(E1)가 컨트롤러(200)로 전송될 것이다. 예시적으로, 해당 데이터(E1)는 컨트롤러(200)의 스테이트 머신(251)으로 전송될 것이다(도 7의 ② 참조). 에러의 위치 정보(EI)에 기반하여, 스테이트 머신(251)은 수신된 데이 터(E1)의 에러를 정정할 것이다. 예시적으로, 스테이트 머신(251)은 에러 위치 정보(ERP)를 이용하여 해당 데이터(E1)의 에러를 정정할 것이다. 예를 들면, 스테이트 머신(251)은 에러 위치 정보(ERP)에 의해 지적되는 비트를 반전하도록 구성될 것이다.
스테이트 머신(251)은 에러 정정된 데이터(E1')를 플래시 메모리(100)로 전송할 것이다. 예시적으로, 에러 정정된 데이터(E1')는 플래시 메모리(100)의 읽기 및 쓰기 회로(130)에 전송될 것이다. 읽기 및 쓰기 회로(130)에 저장되어 있는 제 1 내지 제 4 세그먼트들(Seg1~Seg4) 중 에러가 검출된 제 2 세그먼트(Seg2)는 에러 정정된 데이터(E1')를 이용하여 갱신될 것이다. 즉, 읽기 및 쓰기 회로(130)에 저장되어 있는 제 2 세그먼트(Seg2)는 에러 정정된 제 2 세그먼트(Seg2')로 갱신될 것이다(도 7의 ③ 참조).
읽기 및 쓰기 회로(130)에 저장되어 있는 제 2 세그먼트(Seg2)의 에러가 정정되면, 스테이트 머신(251)은 제어 신호(Do1)를 활성할 것이다. 제어 신호(Do1)는 에러 정정 블록(253)으로 전송될 것이다. 제어 신호(Do1)에 응답하여, 에러 정정 블록(253)은 제 2 세그먼트(Seg2)의 다른 바이트에서 발생된 에러의 에러 위치 정보(EI)를 스테이트 머신(251)으로 전송할 것이다. 에러 정정 블록(253)으로부터 제공되는 에러 장소 정보(ERL)에 응답하여, 에러 정정 동작이 반복될 것이다.
예시적으로, 제 2 세그먼트(Seg2)의 두 개의 바이트들에서 에러가 검출되면, 에러 장소 정보(ERL)는 두 번 발생될 것이다. 스테이트 머신(251)은 에러 장소 정보(ERL)에 응답하여, 에러 데이터의 요청, 수신된 에러 데이터의 정정, 그리고 정 정된 데이터의 전송을 두 번 수행할 것이다. 그리고, 스테이트 머신(251)은 제어 신호(Do1)를 두 번 활성할 것이다.
에러 정정 블록(253)은 수신된 제 2 세그먼트(Seg2)에서 에러가 검출된 제 3 단위(예를 들면, 바이트)의 수(이하, 에러 수라 칭함)를 유지할 것이다. 에러 정정 블록(253)은 에러 수 및 제어 신호(Do1)의 전송수를 비교할 것이다.
제어 신호(Do1)의 전송수가 에러 수에 도달하면, 읽기 쓰기 회로(130)에 저장되어 있는 제 2 세그먼트(Seg2)의 에러는 모두 정정되었음을 나타낼 것이다. 이때, 에러 정정 블록(253)은 제어 신호(Do2)를 활성할 것이다(도 8의 ① 참조). 제어 신호(Do2)에 응답하여, 스테이트 머신(251)은 S170 단계를 수행할 것이다.
S170 단계에서, 스테이트 머신(251)은 에러 정정된 제 2 세그먼트(Seg2')가 마지막 세그먼트인지 판별한다. 에러 정정된 제 2 세그먼트(Seg2')가 마지막 세그먼트가 아니면, S175 단계가 수행된다. S175 단계에서, 데이터의 수신이 계속된다. 예시적으로, 플래시 메모리(100)는 제 3 세그먼트(Seg3)의 전송을 재개할 것이다(도 8의 ② 참조).
다른 예로서, 제어부(250)가 플래시 메모리(100)로부터 수신되는 데이터를 파이프-라인 방식으로 처리하는 것으로 가정하자. 그리고, 제 n 세그먼트가 마지막 세그먼트인 것으로 가정하자. 이때, 제어부(250)에서 제 n-1 세그먼트의 에러가 정정되고, 플래시 메모리(100)에서 제 n 세그먼트의 전송이 완료된 상황이 존재할 수 있음이 이해될 것이다. 이때, 제 n-1 세그먼트의 에러 정정이 완료되어도, 플래시 메모리(100)로부터의 데이터 전송은 재개되지 않을 것이다. 제어부(250)는 파이프- 라인 방식으로 수신되어 있는 제 n 세그먼트의 데이터에 대해 S130 내지 S170 단계를 수행하도록 구성될 것이다.
요약하면, 제어부(250)는 제 2 단위(예를 들면, 세그먼트)로 데이터 전송을 중지 및 재개하도록 구성될 것이다. 그리고, 에러를 정정하기 위하여, 제어부(250)는 제 3 단위(예를 들면, 바이트)로 플래시 메모리(100)와 데이터를 통신하도록 구성될 것이다.
S130 내지 S170 단계의 반복에 의해, 마지막 세그먼트(Seg4)의 에러 정정이 완료된 것으로 가정하자. 이때, 플래시 메모리(100)의 읽기 및 쓰기 회로(130)에 저장되어 있는 데이터는 에러 정정이 완료된 데이터일 것이다. S170 단계에서, 스테이트 머신(251)은 마지막 세그먼트(Seg4)의 에러 정정이 완료된 것으로 판별할 것이다. 이후에, S180 단계에서, 스테이트 머신(251)은 카피-백 커맨드를 플래시 메모리(100)에 전송한다.
카피-백 커맨드에 응답하여, 읽기 및 쓰기 회로(130)에 저장되어 있는 데이터가 메모리 셀 어레이(110)의 제 2 페이지(Page2)에 기입될 것이다(도 9의 ① 참조). 제 1 페이지(Page1)는 무효(Invalid) 페이지로 설정되고, 제 2 페이지(Page2)는 유효 페이지일 것이다.
상술한 바와 같이, 읽기 및 쓰기 회로(130)에 저장되어 있는 데이터는 에러 정정된 데이터이다. 따라서, 카피-백 동작 시에, 에러 정정된 데이터가 메모리 셀 어레이(110)의 제 2 페이지(Page2)에 기입됨이 이해될 것이다.
상술한 바와 같이, 본 발명의 실시 예에 따르면, 카피-백 동작 시에 에러 정 정 동작을 수행하는 것이 가능하다. 에러 정정 동작 시에, 플래시 메모리(100)의 읽기 및 쓰기 동작의 단위(제 1 단위, 예를 들면 페이지)보다 작은 제 2 단위(예를 들면, 세그먼트)로 플래시 메모리(100)로부터의 데이터 전송이 중단 및 재개된다. 플래시 메모리(100)로부터의 데이터 전송이 중단되면, 제 2 단위(예를 들면, 세그먼트)보다 작은 제 3 단위(예를 들면, 바이트)로 플래시 메모리(100)로의 데이터 입출력이 수행된다. 제 3 단위의 데이터 입출력에 의해, 읽어진 데이터의 에러가 정정된다.
즉, 에러 정정 동작은 플래시 메모리(100)의 읽기 및 쓰기 동작의 단위(제 1 단위, 예를 들면 페이지)보다 작은 단위의 랜덤-인(Random-in) 및 랜덤-아웃(Random-out)에 의해 수행된다. 읽어진 데이터 중 에러가 검출된 데이터만 컨트롤러(200) 및 플래시 메모리(100) 사이에서 교환되므로, 에러 정정 동작 시에 소요되는 시간이 감소됨이 이해될 것이다.
또한, 본 발명에 따르면, 카피-백 동작 시의 에러 정정 동작은 스테이트 머신(251) 및 에러 정정 블록(253)에 의해 수행된다. 카피-백 동작 시의 에러 정정 동작은 프로세서(220)의 개입 없이 수행된다. 따라서, 프로세서(220)의 오버헤드(overhead)가 감소될 수 있음이 이해될 것이다.
도 10 및 11은 도 1의 메모리 시스템(10)의 카피-백 갱신 동작을 설명하기 위한 다이어그램이다. 간결한 설명을 위하여, 도 10 및 11에서, 플래시 메모리(100)의 구성 요소는 메모리 셀 어레이(110), 그리고 읽기 및 쓰기 회로(130)만이 도시되어 있다. 또한, 도 10 및 11에서, 컨트롤러(200)의 구성 요소는 스테이트 머신(251) 및 에러 정정 블록(253) 만이 도시되어 있다. 이하에서, 도 1 내지 3, 그리고 도 10 및 11을 참조하여, 메모리 시스템(10)의 갱신 동작이 설명된다.
예시적으로, 플래시 메모리(100)의 제 1 페이지(Page1)의 제 4 세그먼트(Seg4)가 갱신되는 것으로 가정하자. 제어부(250)는 제 1 페이지(Page1)에 대한 카피-백 읽기 커맨드를 플래시 메모리(100)에 전송할 것이다. 카피-백 읽기 커맨드에 응답하여, 플래시 메모리(100)의 읽기 및 쓰기 회로(130)는 제 1 페이지(Page1)의 제 1 내지 제 4 세그먼트들(Seg1~Seg4) 및 대응하는 패리티들(P1~P4)을 읽을 것이다. 이후에, 도 4 내지 9를 참조하여 설명된 바와 같이, 읽기 및 쓰기 회로(130)에 저장되어 있는 제 1 내지 제 3 세그먼트(Seg1~Seg3)의 에러가 정정될 것이다.
외부로부터 제 4 세그먼트(Seg4)의 갱신 데이터(Seg4')가 수신될 것이다. 예시적으로, 갱신 데이터(Seg4')는 호스트(Host)로부터 전송될 것이다(도 10의 ① 참조). 스테이트 머신(251)은 갱신 데이터(Seg4')를 에러 정정 블록(253)에 전송할 것이다(도 9의 ② 참조). 에러 정정 블록(253)은 갱신 데이터(Seg4')의 패리티(P4')를 생성할 것이다. 갱신 데이터(Seg4') 및 대응하는 패리티(P4')는 스테이트 머신(251)으로 전송될 것이다(도 10의 ③ 참조).
스테이트 머신(251)은 갱신 데이터(Seg4') 및 패리티(P4')를 플래시 메모리(100)에 전송할 것이다. 예시적으로, 갱신 데이터(Seg4') 및 패리티(P4')는 플래시 메모리(100)의 읽기 및 쓰기 회로(130)에 전송될 것이다(도 10의 ④ 참조). 읽기 및 쓰기 회로(130)에 저장되어 있는 제 1 내지 제 4 세그먼트들(Seg1~Seg4) 중 제 4 세그먼트(Seg4)는 갱신 데이터(Seg4')로 갱신될 것이다. 제 4 세그먼트(Seg4) 에 대응하는 패리티(P4) 또한 제어부(250)로부터 전송된 패리티(P4')로 갱신될 것이다.
이때, 읽기 및 쓰기 회로(130)에 저장되어 있는 데이터의 에러는 정정 되어 있다. 또한, 읽기 및 쓰기 회로(130)에 저장되어 있는 데이터는 호스트로부터 수신된 갱신 데이터를 이용하여 갱신되어 있다. 스테이트 머신(251)은 카피-백 커맨드를 플래시 메모리(100)에 전송할 것이다. 카피-백 커맨드에 응답하여, 읽기 및 쓰기 회로(130)에 저장되어 있는 데이터가 메모리 셀 어레이(110)의 제 2 페이지(Page2)에 기입될 것이다(도 11의 ① 참조). 즉, 에러 정정되고 그리고 갱신된 데이터가 제 2 페이지(Page2)에 기입될 것이다. 제 1 페이지(Page1)는 무효(Invalid) 페이지로 설정되고, 제 2 페이지(Page2)는 유효 페이지일 것이다.
상술한 바와 같이, 본 발명의 실시 예에 따른 메모리 시스템(10) 및 컨트롤러(200)는 스테이트 머신(251) 및 에러 정정 블록(253)을 이용하여 데이터를 카피-백 갱신을 수행하는 것이 가능하다. 또한, 카피-백 갱신 시에, 랜덤-인 및 랜덤-아웃 방식으로 에러 정정 및 갱신을 수행하는 것이 가능하다. 따라서, 에러 정정 및 갱신 시간이 단축된다.
도 12는 도 3의 컨트롤러(200)의 다른 실시 예(200')를 보여주는 블록도이다. 도 12를 참조하면, 컨트롤러(200')는 시스템 버스(210), 프로세서(220), 램(230), 호스트 인터페이트(240), 그리고 제어부(250')를 포함한다.
시스템 버스(210), 프로세서(220), 램(230), 그리고 호스트 인터페이스(240)는 도 4을 참조하여 설명된 바와 마찬가지로 구성될 것이다. 따라서, 상세한 설명 은 생략된다.
제어부(250')는 스테이트 머신(251'), 에러 정정 블록(253'), 그리고 메모리 인터페이스(255')를 포함한다. 에러 정정 블록(253')이 메모리 인터페이스(255')와 데이터(Data)를 통신하는 것을 제외하면, 제어부(250')는 제어부(250)와 마찬가지로 구성된다.
쓰기 동작 시에, 호스트(Host)로부터 제어부(250')로 전송되는 데이터는 스테이트 머신(251')을 통하지 않고 에러 정정 블록(253')에 직접 전송될 것이다. 에러 정정 블록(253')은 수신되는 데이터의 패리티를 생성할 것이다. 에러 정정 블록(253')은 수신된 데이터 및 생성된 패리티를 메모리 인터페이스(255')로 전송할 것이다. 메모리 인터페이스(255')는 수신된 데이터 및 패리티를 플래시 메모리(100)로 전송할 것이다.
읽기 동작 시에, 메모리 인터페이스(255')는 플래시 메모리(100)로부터 데이터 및 패리티를 수신할 것이다. 메모리 인터페이스(255')는 수신된 데이터 및 패리티를 스테이트 머신(251')을 통하지 않고 에러 정정 블록(253')으로 전송할 것이다. 에러 정정 블록(253')은 수신된 패리티를 이용하여 수신된 데이터의 에러를 정정할 것이다. 에러 정정된 데이터는 스테이트 머신(251')을 통하지 않고 에러 정정 블록(253')으로부터 시스템 버스(210)로 전송될 것이다. 에러 정정된 데이터는 호스트 인터페이스(240)를 통해 호스트(Host)로 전송될 것이다.
카피-백 동작 시에, 카피-백 읽기 커맨드에 응답하여 플래시 메모리(100)로부터 메모리 인터페이스(255')에 데이터(예를 들면, 제 n 세그먼트) 및 패리티(예 를 들면, 제 n 패리티)가 수신될 것이다. 메모리 인터페이스는 수신된 제 n 세그먼트 및 패리티를 스테이트 머신(251')을 통하지 않고 에러 정정 블록(253')으로 전송할 것이다.
에러 정정 블록(253')은 수신된 제 n 패리티를 이용하여 수신된 제 n 세그먼트의 에러를 체크할 것이다. 제 n 세그먼트에서 에러가 검출되면, 에러 정정 블록(253')은 대기 신호(Wait)를 활성할 것이다. 대기 신호(Wait)에 응답하여, 스테이트 머신(251')은 데이터의 전송을 중지할 것을 플래시 메모리(100)에 요청할 것이다.
에러 정정 블록(253')은 에러 위치 정보(EI)를 스테이트 머신(251')에 전송할 것이다. 스테이트 머신(251')은 에러 위치 정보(EI)에 대응하는 데이터(예를 들면, 바이트)를 플래시 메모리(100')에 요청할 것이다. 에러 위치 정보(EI)를 이용하여, 스테이트 머신(251')은 플래시 메모리(100)로부터 전송되는 바이트의 에러를 정정할 것이다. 에러가 정정되면, 스테이트 머신(251')은 제어 신호(Do1)를 활성할 것이다.
에러 정정 블록(253')은 제어 신호(Do1)의 전송수를 카운트할 것이다. 제어 신호(Do1)의 전송수가 제 n 세그먼트에서 검출된 에러 수에 도달하면, 에러 정정 블록(253')은 제어 신호(Do2)를 활성할 것이다. 제어 신호(Do2)에 응답하여, 스테이트 머신(251')은 데이터의 전송을 재개할 것을 플래시 메모리(100)에 요청할 것이다.
상술한 바와 같이, 검출된 에러가 정정될 때에만 스테이트 머신(251')으로 데이터가 전송된다. 읽기 동작, 쓰기 동작, 그리고 에러가 검출되지 않은 카피-백 동작 시에, 데이터는 스테이트 머신(251')을 통해지 않고 전송된다. 따라서, 데이터 전송 시간이 단축될 수 있음이 이해될 것이다.
도 13은 도 1의 메모리 시스템(10)을 포함하는 컴퓨팅 시스템(300)을 보여주는 블록도이다. 도 13을 참조하면, 본 발명의 실시 예에 따른 컴퓨팅 시스템(300)은 중앙 처리 장치(310), 램(320, RAM, Random Access Memory), 사용자 인터페이스(330), 전원(340), 그리고 메모리 시스템(10)을 포함한다.
메모리 시스템(10)은 시스템 버스(350)를 통해, 중앙처리장치(310), 램(320), 사용자 인터페이스(330), 그리고 전원(340)에 전기적으로 연결된다. 사용자 인터페이스(330)를 통해 제공되거나, 중앙 처리 장치(310)에 의해서 처리된 데이터는 메모리 시스템(10)에 저장된다. 메모리 시스템(10)은 컨트롤러(100) 및 불휘발성 메모리 장치(200)를 포함한다.
예시적으로 메모리 시스템(10)은 반도체 드라이브(SSD, Solid State Drive)를 구성할 것이다. 메모리 시스템(10)은 하나의 컨트롤러(200) 및 복수의 불휘발성 메모리들(100)을 포함할 것이다. 복수의 불휘발성 메모리들(100)은 미리 설정된 수의 그룹들(예를 들면, m 개의 그룹들)로 분할될 것이다. 각각의 그룹은 컨트롤러(200)와 연결되어 하나의 채널을 형성할 것이다. 불휘발성 메모리들(100) 및 컨트로러(200)는 도 1 내지 11을 참조하여 설명된 바와 같이 동작하도록 구성될 것이다.
메모리 시스템(10)이 반도체 드라이브(SSD)로 장착되는 경우, 컴퓨팅 시스 템(300)의 부팅 속도가 획기적으로 빨라질 수 있다. 도면에 도시되지 않았지만, 본 발명에 따른 시스템은 응용 칩셋(Application Chipset), 카메라 이미지 프로세서(Camera Image Processor) 등을 더 포함할 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 이해될 것이다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 자명하다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 2는 도 1의 불휘발성 메모리를 보여주는 블록도이다.
도 3은 도 1의 컨트롤러를 보여주는 블록도이다.
도 4는 도 1의 메모리 시스템의 카피-백 동작을 설명하기 위한 순서도이다.
도 5 내지 9는 도 4의 순서도에 다른 메모리 시스템의 상태를 설명하기 위한 블록도이다.
도 10 및 11은 도 1의 메모리 시스템의 카피-백 갱신 동작을 설명하기 위한 다이어그램이다.
도 12는 도 3의 컨트롤러의 다른 실시 예를 보여주는 블록도이다.
도 13는 도 1의 메모리 시스템을 포함하는 컴퓨팅 시스템을 보여주는 블록도이다.

Claims (10)

  1. 메모리 셀 어레이 및 상기 메모리 셀 어레이에서 읽기 및 쓰기 동작을 수행하도록 구성되는 읽기 및 쓰기 회로를 포함하는 불휘발성 메모리; 그리고
    상기 불휘발성 메모리를 제어하도록 구성되는 컨트롤러를 포함하고,
    상기 불휘발성 메모리로부터 데이터가 수신될 때 상기 수신되는 데이터에서 에러가 검출되면, 상기 컨트롤러는 데이터 전송을 중지할 것을 상기 불휘발성 메모리에 요청하고, 상기 검출된 에러를 정정하고, 그리고 에러 정정이 완료되면 데이터 전송을 재개할 것을 상기 불휘발성 메모리에 요청하도록 구성되고,
    상기 읽기 및 쓰기 회로는 제 1 단위로 읽기 및 쓰기 동작을 수행하도록 구성되고, 상기 컨트롤러는 상기 불휘발성 메모리로부터 수신되는 데이터의 에러를 상기 제 1 단위보다 작은 제 2 단위로 체크하도록 구성되고,
    상기 컨트롤러는 상기 검출된 에러에 대응하며 상기 제 2 단위보다 작은 제 3 단위의 데이터를 상기 읽기 및 쓰기 회로부터 수신하고, 상기 수신된 데이터의 에러를 정정하고, 그리고 상기 에러 정정된 데이터를 이용하여 상기 읽기 및 쓰기 회로에서 상기 검출된 에러에 대응하는 영역을 갱신하도록 구성되고,
    상기 불휘발성 메모리로부터 상기 제 1 단위의 데이터의 수신이 완료되면, 상기 컨트롤러는 카피-백 동작을 수행하도록 상기 불휘발성 메모리를 제어하도록 구성되는 메모리 시스템.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 불휘발성 메모리로부터 상기 제 2 단위의 제 1 및 제 2 데이터가 수신될 때 상기 제 1 데이터에서 에러가 검출되면, 상기 컨트롤러는 상기 제 2 데이터의 전송을 중지할 것을 상기 불휘발성 메모리에 요청하도록 구성되는 메모리 시스템.
  4. 삭제
  5. 삭제
  6. 메모리 셀 어레이 및 상기 메모리 셀 어레이에서 읽기 및 쓰기 동작을 수행하도록 구성되는 읽기 및 쓰기 회로를 포함하는 불휘발성 메모리; 그리고
    상기 불휘발성 메모리를 제어하도록 구성되는 컨트롤러를 포함하고,
    상기 불휘발성 메모리로부터 데이터가 수신될 때 상기 수신되는 데이터에서 에러가 검출되면, 상기 컨트롤러는 데이터 전송을 중지할 것을 상기 불휘발성 메모리에 요청하고, 상기 검출된 에러를 정정하고, 그리고 에러 정정이 완료되면 데이터 전송을 재개할 것을 상기 불휘발성 메모리에 요청하도록 구성되고,
    상기 컨트롤러는
    상기 불휘발성 메모리로부터 수신되는 데이터의 에러를 체크하고, 상기 수신된 데이터에서 에러가 검출되면 대기 신호를 활성하도록 구성되는 에러 정정 블록; 그리고
    상기 대기 신호에 응답하여, 데이터의 전송을 중지할 것을 상기 불휘발성 메모리에 요청하도록 구성되는 스테이트 머신을 포함하고,
    상기 에러 정정 블록은 상기 불휘발성 메모리로부터 수신되는 데이터의 에러 위치 정보를 상기 스테이트 머신에 제공하도록 구성되고,
    상기 스테이트 머신은 상기 에러 위치 정보를 이용하여 상기 불휘발성 메모리로부터 수신되는 데이터의 에러를 정정하도록 구성되고,
    상기 스테이트 머신은 상기 에러 위치 정보를 이용하여 에러를 정정하고, 에러가 정정되었음을 나타내는 제어 신호를 상기 에러 정정 블록으로 전송하도록 구성되고,
    상기 에러 정정 블록은 상기 제어 신호의 전송수를 카운트하고, 상기 제어 신호의 전송수가 상기 불휘발성 메모리로부터 수신되는 데이터에서 검출된 에러의 수에 도달하면, 에러 정정이 완료되었음을 나타내는 제어 신호를 상기 스테이트 머신으로 전송하도록 구성되는 메모리 시스템.
  7. 삭제
  8. 삭제
  9. 삭제
  10. 제 6 항에 있어서,
    상기 불휘발성 메모리 및 상기 컨트롤러는 반도체 드라이브(SSD, Solid State Drive)를 구성하는 메모리 시스템.
KR1020090038358A 2009-04-30 2009-04-30 메모리 컨트롤러 및 그것을 포함하는 메모리 시스템 KR101575248B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090038358A KR101575248B1 (ko) 2009-04-30 2009-04-30 메모리 컨트롤러 및 그것을 포함하는 메모리 시스템
US12/768,047 US8522114B2 (en) 2009-04-30 2010-04-27 Memory controller and memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090038358A KR101575248B1 (ko) 2009-04-30 2009-04-30 메모리 컨트롤러 및 그것을 포함하는 메모리 시스템

Publications (2)

Publication Number Publication Date
KR20100119310A KR20100119310A (ko) 2010-11-09
KR101575248B1 true KR101575248B1 (ko) 2015-12-07

Family

ID=43031313

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090038358A KR101575248B1 (ko) 2009-04-30 2009-04-30 메모리 컨트롤러 및 그것을 포함하는 메모리 시스템

Country Status (2)

Country Link
US (1) US8522114B2 (ko)
KR (1) KR101575248B1 (ko)

Families Citing this family (90)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8533384B2 (en) 2007-12-27 2013-09-10 Sandisk Enterprise Ip Llc Flash memory controller garbage collection operations performed independently in multiple flash memory groups
US20120079349A1 (en) * 2010-09-24 2012-03-29 Arkady Bramnik Method and apparatus for multi-bit upset protection
US8909982B2 (en) * 2011-06-19 2014-12-09 Sandisk Enterprise Ip Llc System and method for detecting copyback programming problems
US8910020B2 (en) 2011-06-19 2014-12-09 Sandisk Enterprise Ip Llc Intelligent bit recovery for flash memory
US8707104B1 (en) 2011-09-06 2014-04-22 Western Digital Technologies, Inc. Systems and methods for error injection in data storage systems
US9195530B1 (en) 2011-09-06 2015-11-24 Western Digital Technologies, Inc. Systems and methods for improved data management in data storage systems
US8713357B1 (en) * 2011-09-06 2014-04-29 Western Digital Technologies, Inc. Systems and methods for detailed error reporting in data storage systems
US8700834B2 (en) * 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
US8793543B2 (en) 2011-11-07 2014-07-29 Sandisk Enterprise Ip Llc Adaptive read comparison signal generation for memory systems
US8954822B2 (en) 2011-11-18 2015-02-10 Sandisk Enterprise Ip Llc Data encoder and decoder using memory-specific parity-check matrix
US9048876B2 (en) 2011-11-18 2015-06-02 Sandisk Enterprise Ip Llc Systems, methods and devices for multi-tiered error correction
US8924815B2 (en) 2011-11-18 2014-12-30 Sandisk Enterprise Ip Llc Systems, methods and devices for decoding codewords having multiple parity segments
US9223649B2 (en) * 2012-02-15 2015-12-29 Sandisk Technologies Inc. System and method of sending correction data to a buffer of a non-volatile memory
US9053008B1 (en) 2012-03-26 2015-06-09 Western Digital Technologies, Inc. Systems and methods for providing inline parameter service in data storage devices
TWI497515B (zh) * 2012-07-10 2015-08-21 Silicon Motion Inc 快閃記憶體控制器、快閃記憶體偵錯方法
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
WO2014070200A1 (en) * 2012-11-02 2014-05-08 Hewlett-Packard Development Company, L.P. Selective error correcting code and memory access granularity switching
US9501398B2 (en) 2012-12-26 2016-11-22 Sandisk Technologies Llc Persistent storage device with NVRAM for staging writes
US9239751B1 (en) 2012-12-27 2016-01-19 Sandisk Enterprise Ip Llc Compressing data from multiple reads for error control management in memory systems
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US9003264B1 (en) 2012-12-31 2015-04-07 Sandisk Enterprise Ip Llc Systems, methods, and devices for multi-dimensional flash RAID data protection
US9454420B1 (en) 2012-12-31 2016-09-27 Sandisk Technologies Llc Method and system of reading threshold voltage equalization
US9214965B2 (en) 2013-02-20 2015-12-15 Sandisk Enterprise Ip Llc Method and system for improving data integrity in non-volatile storage
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US9136877B1 (en) 2013-03-15 2015-09-15 Sandisk Enterprise Ip Llc Syndrome layered decoding for LDPC codes
US9244763B1 (en) 2013-03-15 2016-01-26 Sandisk Enterprise Ip Llc System and method for updating a reading threshold voltage based on symbol transition information
US9092350B1 (en) 2013-03-15 2015-07-28 Sandisk Enterprise Ip Llc Detection and handling of unbalanced errors in interleaved codewords
US9367246B2 (en) 2013-03-15 2016-06-14 Sandisk Technologies Inc. Performance optimization of data transfer for soft information generation
US9236886B1 (en) 2013-03-15 2016-01-12 Sandisk Enterprise Ip Llc Universal and reconfigurable QC-LDPC encoder
US9009576B1 (en) 2013-03-15 2015-04-14 Sandisk Enterprise Ip Llc Adaptive LLR based on syndrome weight
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
US9170941B2 (en) 2013-04-05 2015-10-27 Sandisk Enterprises IP LLC Data hardening in a storage system
US9159437B2 (en) 2013-06-11 2015-10-13 Sandisk Enterprise IP LLC. Device and method for resolving an LM flag issue
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9384126B1 (en) 2013-07-25 2016-07-05 Sandisk Technologies Inc. Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems
US9043517B1 (en) 2013-07-25 2015-05-26 Sandisk Enterprise Ip Llc Multipass programming in buffers implemented in non-volatile data storage systems
US9235509B1 (en) 2013-08-26 2016-01-12 Sandisk Enterprise Ip Llc Write amplification reduction by delaying read access to data written during garbage collection
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
US9519577B2 (en) 2013-09-03 2016-12-13 Sandisk Technologies Llc Method and system for migrating data between flash memory devices
US9442670B2 (en) 2013-09-03 2016-09-13 Sandisk Technologies Llc Method and system for rebalancing data stored in flash memory devices
US9158349B2 (en) 2013-10-04 2015-10-13 Sandisk Enterprise Ip Llc System and method for heat dissipation
US9323637B2 (en) 2013-10-07 2016-04-26 Sandisk Enterprise Ip Llc Power sequencing and data hardening architecture
US9442662B2 (en) 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
US9298608B2 (en) 2013-10-18 2016-03-29 Sandisk Enterprise Ip Llc Biasing for wear leveling in storage systems
US9436831B2 (en) 2013-10-30 2016-09-06 Sandisk Technologies Llc Secure erase in a memory device
US9263156B2 (en) 2013-11-07 2016-02-16 Sandisk Enterprise Ip Llc System and method for adjusting trip points within a storage device
US9244785B2 (en) 2013-11-13 2016-01-26 Sandisk Enterprise Ip Llc Simulated power failure and data hardening
US9152555B2 (en) 2013-11-15 2015-10-06 Sandisk Enterprise IP LLC. Data management with modular erase in a data storage system
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9280429B2 (en) 2013-11-27 2016-03-08 Sandisk Enterprise Ip Llc Power fail latching based on monitoring multiple power supply voltages in a storage device
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9122636B2 (en) 2013-11-27 2015-09-01 Sandisk Enterprise Ip Llc Hard power fail architecture
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
US9250676B2 (en) 2013-11-29 2016-02-02 Sandisk Enterprise Ip Llc Power failure architecture and verification
US9092370B2 (en) 2013-12-03 2015-07-28 Sandisk Enterprise Ip Llc Power failure tolerant cryptographic erase
US9235245B2 (en) 2013-12-04 2016-01-12 Sandisk Enterprise Ip Llc Startup performance and power isolation
US9129665B2 (en) 2013-12-17 2015-09-08 Sandisk Enterprise Ip Llc Dynamic brownout adjustment in a storage device
US9549457B2 (en) 2014-02-12 2017-01-17 Sandisk Technologies Llc System and method for redirecting airflow across an electronic assembly
US9497889B2 (en) 2014-02-27 2016-11-15 Sandisk Technologies Llc Heat dissipation for substrate assemblies
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US9348377B2 (en) 2014-03-14 2016-05-24 Sandisk Enterprise Ip Llc Thermal isolation techniques
US9485851B2 (en) 2014-03-14 2016-11-01 Sandisk Technologies Llc Thermal tube assembly structures
US9519319B2 (en) 2014-03-14 2016-12-13 Sandisk Technologies Llc Self-supporting thermal tube structure for electronic assemblies
US9390814B2 (en) 2014-03-19 2016-07-12 Sandisk Technologies Llc Fault detection and prediction for data storage elements
US9454448B2 (en) 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
US9448876B2 (en) 2014-03-19 2016-09-20 Sandisk Technologies Llc Fault detection and prediction in storage devices
US9390021B2 (en) 2014-03-31 2016-07-12 Sandisk Technologies Llc Efficient cache utilization in a tiered data structure
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
US10656842B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US9093160B1 (en) 2014-05-30 2015-07-28 Sandisk Technologies Inc. Methods and systems for staggered memory operations
US8891303B1 (en) 2014-05-30 2014-11-18 Sandisk Technologies Inc. Method and system for dynamic word line based configuration of a three-dimensional memory device
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US10656840B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Real-time I/O pattern recognition to enhance performance and endurance of a storage device
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US9645749B2 (en) 2014-05-30 2017-05-09 Sandisk Technologies Llc Method and system for recharacterizing the storage density of a memory device or a portion thereof
US9070481B1 (en) 2014-05-30 2015-06-30 Sandisk Technologies Inc. Internal current measurement for age measurements
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
US9443601B2 (en) 2014-09-08 2016-09-13 Sandisk Technologies Llc Holdup capacitor energy harvesting
KR20180106494A (ko) * 2017-03-20 2018-10-01 에스케이하이닉스 주식회사 반도체장치
KR20210061171A (ko) * 2019-11-19 2021-05-27 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US11327884B2 (en) 2020-04-01 2022-05-10 Micron Technology, Inc. Self-seeded randomizer for data randomization in flash memory
US11256617B2 (en) 2020-04-01 2022-02-22 Micron Technology, Inc. Metadata aware copyback for memory devices
JP2022146585A (ja) 2021-03-22 2022-10-05 キオクシア株式会社 メモリシステム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080148124A1 (en) * 2004-06-04 2008-06-19 Yan Zhang Method and system for detecting and correcting errors while accessing memory devices in microprocessor systems
US20080222491A1 (en) * 2007-02-07 2008-09-11 Chang-Duck Lee Flash memory system for improving read performance and read method thereof

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6330688B1 (en) * 1995-10-31 2001-12-11 Intel Corporation On chip error correction for devices in a solid state drive
JPH09251427A (ja) 1996-03-18 1997-09-22 Nec Home Electron Ltd フラッシュメモリの符号誤り訂正装置及び方法
JP2000020409A (ja) 1998-07-07 2000-01-21 Seiko Epson Corp 半導体記憶装置
JP4074029B2 (ja) 1999-06-28 2008-04-09 株式会社東芝 フラッシュメモリ
US7231585B2 (en) * 2002-12-11 2007-06-12 Nvidia Corporation Error correction for flash memory
US20080147964A1 (en) * 2004-02-26 2008-06-19 Chow David Q Using various flash memory cells to build usb data flash cards with multiple partitions and autorun function
KR100634432B1 (ko) 2004-09-09 2006-10-16 삼성전자주식회사 카피백 프로그램 동작 중에 에러를 검출하는 낸드 플래시메모리 장치 및 에러 검출 방법
KR100918707B1 (ko) * 2007-03-12 2009-09-23 삼성전자주식회사 플래시 메모리를 기반으로 한 메모리 시스템
US8213229B2 (en) * 2008-08-22 2012-07-03 HGST Netherlands, B.V. Error control in a flash memory device

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080148124A1 (en) * 2004-06-04 2008-06-19 Yan Zhang Method and system for detecting and correcting errors while accessing memory devices in microprocessor systems
US20080222491A1 (en) * 2007-02-07 2008-09-11 Chang-Duck Lee Flash memory system for improving read performance and read method thereof

Also Published As

Publication number Publication date
US8522114B2 (en) 2013-08-27
US20100281342A1 (en) 2010-11-04
KR20100119310A (ko) 2010-11-09

Similar Documents

Publication Publication Date Title
KR101575248B1 (ko) 메모리 컨트롤러 및 그것을 포함하는 메모리 시스템
CN106326028B (zh) 具有不同奇偶校验区的存储器件
KR102519572B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
JP5166074B2 (ja) 半導体記憶装置、その制御方法、および誤り訂正システム
US9602134B2 (en) Operating method of error correction code decoder and memory controller including the error correction code decoder
KR102277521B1 (ko) 저장 장치 및 그것의 리드 리클레임 및 읽기 방법
CN110347530B (zh) 数据存储装置及其操作方法
KR102542375B1 (ko) 데이터 처리 시스템 및 그의 동작 방법
US8331151B2 (en) Semiconductor memory including control unit responsive to erase command to determine selection of redundant memory block
KR20170070921A (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
US20140032824A1 (en) Memory Controller, Memory System Including the Same, and Method for Operating the Same
US9311181B2 (en) Memory controller changing partial data in memory device and method for changing partial data thereof
KR102430798B1 (ko) 메모리 시스템 및 메모리 시스템의 동작방법
US11269551B2 (en) Semiconductor memory device and method of operating the same
KR20180069960A (ko) 메모리 시스템 및 그의 동작 방법
KR102603243B1 (ko) 반도체 메모리 장치 및 그것의 동작 방법
KR20160146332A (ko) 복수의 저장 영역들을 포함하는 메모리 시스템 및 그것의 동작 방법
US20150236716A1 (en) Memory system and method of controlling memory system
CN111048140A (zh) 错误校正电路、存储器控制器及存储器系统
KR101543433B1 (ko) 반도체 메모리 장치 및 그것을 포함하는 메모리 시스템
CN110838313A (zh) 半导体存储器装置及其操作方法
KR102608815B1 (ko) 반도체 메모리 장치 및 그것의 동작 방법
US10776273B2 (en) Memory system having multiple cache pages and operating method thereof
KR20200084200A (ko) 컨트롤러 및 컨트롤러의 동작방법
US8423878B2 (en) Memory controller and memory system including the same having interface controllers generating parity bits

Legal Events

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