KR101990971B1 - 메모리, 메모리 시스템, 및 메모리에 대한 에러 검출/정정 방법 - Google Patents

메모리, 메모리 시스템, 및 메모리에 대한 에러 검출/정정 방법 Download PDF

Info

Publication number
KR101990971B1
KR101990971B1 KR1020120009207A KR20120009207A KR101990971B1 KR 101990971 B1 KR101990971 B1 KR 101990971B1 KR 1020120009207 A KR1020120009207 A KR 1020120009207A KR 20120009207 A KR20120009207 A KR 20120009207A KR 101990971 B1 KR101990971 B1 KR 101990971B1
Authority
KR
South Korea
Prior art keywords
data
memory array
memory
scheme
ecc
Prior art date
Application number
KR1020120009207A
Other languages
English (en)
Other versions
KR20130087935A (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 KR1020120009207A priority Critical patent/KR101990971B1/ko
Priority to US13/648,421 priority patent/US9136872B2/en
Publication of KR20130087935A publication Critical patent/KR20130087935A/ko
Application granted granted Critical
Publication of KR101990971B1 publication Critical patent/KR101990971B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • H03M13/356Unequal error protection [UEP]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3707Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (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

메모리, 메모리 시스템, 및 메모리에 대한 에러 검출/정정 방법이 개시된다. 본 발명의 실시예에 따른 메모리 시스템은, 제1 메모리 어레이에 일시적으로 저장되는 데이터 및 상기 제1 메모리 어레이로부터 독출되는 데이터에 대하여 제1 방식으로 에러 검출 및 정정 동작을 수행하고, 상기 제1 메모리 어레이로부터 독출되어 제2 메모리 어레이에 저장되는 데이터 및 상기 제2 메모리 어레이로부터 독출되는 데이터에 대하여, 제2 방식으로 에러 검출 및 정정 동작을 수행하는 ECC(Error Checking and Correction) 엔진을 구비하고, 제어 신호의 제1 논리 레벨에 응답하여, 상기 제1 방식은 상기 제2 방식보다 에러 정정 능력이 낮은 방식으로 설정된다.

Description

메모리, 메모리 시스템, 및 메모리에 대한 에러 검출/정정 방법{Memory, memory system, and error checking/correction method for memory}
본 발명은 메모리, 메모리 시스템, 및 메모리에 대한 에러 검출 및 정정 방법에 관한 것으로, 특히 플래시 메모리에 적용된 스킴(scheme)에 최적화된 에러 검출 및 정정을 수행하여, 플래시 메모리의 신뢰성을 향상시키면서도 전력 소모 및 레이턴시를 줄일 수 있는, 메모리, 메모리 시스템, 및 메모리에 대한 에러 검출 및 정정 방법에 관한 것이다.
플래시 메모리는 고집적화의 요구에 따라 스케일링 다운(scaling down)되고, 각 메모리 셀에 저장되는 비트의 수가 증가되고 있다. 따라서, 각 프로그램 스테이트(program state)들 사이의 리드 마진이 줄어들고 있다. 따라서, 리드 에러(read error)의 발생이 빈번하다. 따라서, 에러를 정확하고 효율적으로 수행하기 위한 방안들이 논의되고 있다.
본 발명이 이루고자 하는 기술적 과제는 플래시 메모리의 신뢰성을 향상시키면서도 전력 소모 및 레이턴시를 줄일 수 있는, 메모리, 메모리 시스템, 및 메모리에 대한 에러 검출 및 정정 방법을 제공하는 것에 있다.
본 발명의 실시예에 따른 메모리 시스템은, 제1 메모리 어레이에 일시적으로 저장되는 데이터 및 상기 제1 메모리 어레이로부터 독출되는 데이터에 대하여 제1 방식으로 에러 검출 및 정정 동작을 수행하고, 상기 제1 메모리 어레이로부터 독출되어 제2 메모리 어레이에 저장되는 데이터 및 상기 제2 메모리 어레이로부터 독출되는 데이터에 대하여, 제2 방식으로 에러 검출 및 정정 동작을 수행하는 ECC(Error Checking and Correction) 엔진을 구비하고, 제어 신호의 제1 논리 레벨에 응답하여, 상기 제1 방식은 상기 제2 방식보다 에러 정정 능력이 낮은 방식으로 설정된다.
본 발명의 실시예에 따른 낸드 플래시 메모리 장치는, 제1 메모리 어레이에 일시적으로 저장되었다가 독출되는 데이터에 대한 에러 검출 및 정정을 위해 제1 방식으로 ECC(Error Checking and Correction) 디코딩을 수행하고, 상기 제1 메모리 어레이로부터 독출되어 제2 메모리 어레이에 저장하고자 하는 데이터에 대한 에러 검출 및 정정을 위해 제2 방식으로 ECC 인코딩을 수행하는 내부 ECC 엔진을 구비하고, 상기 제1 방식은 상기 제2 방식보다 에러 정정 능력이 낮은 방식으로 설정된다.
본 발명의 실시예에 따른 메모리, 메모리 시스템, 및 메모리에 대한 에러 검출 및 정정 방법에 의하면, 플래시 메모리에 적용된 스킴에 최적화된 에러 검출 및 정정을 수행하여, 플래시 메모리의 신뢰성을 향상시키면서도 전력 소모 및/또는 ECC 인코딩/디코딩 시간을 줄일 수 있는 장점이 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 실시예에 따른 메모리 시스템을 나타내는 도면이다.
도 2 및 도 3은 각각 도 1의 메모리 시스템의 일 예를 나타내는 도면이다.
도 4는 도 1의 메모리 시스템에서의 에러 검출 및 정정 방법의 일 예를 나타내는 도면이다.
도 5는 본 발명의 다른 실시예에 따른 메모리 시스템을 나타내는 도면이다.
도 6 및 도 7은 각각, 도 5의 메모리 시스템에서의 에러 검출 및 정정 방법의 일 예를 나타내는 도면이다.
도 8은 본 발명의 다른 실시예에 따른 메모리 시스템을 나타내는 도면이다.
도 9는 도 8의 메모리 시스템에서의 에러 검출 및 정정 방법의 일 예를 나타내는 도면이다.
도 10은 본 발명의 다른 실시예에 따른 메모리 시스템을 나타내는 도면이다.
도 11 및 도 12는 각각, 도 10의 메모리 시스템에서의 에러 검출 및 정정 방법의 일 예를 나타내는 도면이다.
도 13은 본 발명의 다른 실시예에 따른 메모리 시스템을 나타내는 도면이다.
도 14 및 도 15은 각각, 도 13의 메모리 시스템에서의 에러 검출 및 정정 방법의 일 예를 나타내는 도면이다.
도 16 내지 도 19는 각각, 본 발명의 실시예에 따른 제1 메모리 어레이 및 제2 메모리 어레이의 구현 예를 나타내는 도면이다.
도 20은 본 발명의 실시예에 따른 컴퓨터 장치를 나타내는 도면이다.
도 21은 본 발명의 실시예에 따른 메모리 카드를 나타내는 도면이다.
도 22는 본 발명의 실시예에 따른 솔리드 스테이트 드라이브(Solid State Drive)를 나타내는 도면이다.
도 23은 본 발명의 실시예에 따른 서버 시스템 및 네트워크 시스템을 나타내는 도면이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다.
본 발명의 실시예들은 당해 기술 분야에서 통상의 지식을 가진 자에게 본 발명을 더욱 완전하게 설명하기 위하여 제공되는 것이며, 아래의 실시예들은 여러 가지 다른 형태로 변형될 수 있으며, 본 발명의 범위가 아래의 실시예들로 한정되는 것은 아니다. 오히려, 이들 실시예는 본 개시를 더욱 충실하고 완전하게 하며 당업자에게 본 발명의 사상을 완전하게 전달하기 위하여 제공되는 것이다.
본 명세서에서 사용된 용어는 특정 실시예를 설명하기 위하여 사용되며, 본 발명을 제한하기 위한 것이 아니다. 본 명세서에서 사용된 바와 같이 단수 형태는 문맥상 다른 경우를 분명히 지적하는 것이 아니라면, 복수의 형태를 포함할 수 있다. 또한, 본 명세서에서 사용되는 경우 “포함한다(comprise)” 및/또는 “포함하는(comprising)”은 언급한 형상들, 숫자, 단계, 동작, 부재, 요소 및/또는 이들 그룹의 존재를 특정하는 것이며, 하나 이상의 다른 형상, 숫자, 동작, 부재, 요소 및/또는 그룹들의 존재 또는 부가를 배제하는 것이 아니다. 본 명세서에서 사용된 바와 같이, 용어 “및/또는”은 해당 열거된 항목 중 어느 하나 및 하나 이상의 모든 조합을 포함한다.
본 명세서에서 제1, 제2 등의 용어가 다양한 부재, 영역 및/또는 부위들을 설명하기 위하여 사용되지만, 이들 부재, 부품, 영역, 층들 및/또는 부위들은 이들 용어에 의해 한정되어서는 안됨은 자명하다. 이들 용어는 특정 순서나 상하, 또는 우열의 의미하지 않으며, 하나의 부재, 영역 또는 부위를 다른 부재, 영역 또는 부위와 구별하기 위하여만 사용된다. 따라서, 이하 상술할 제1 부재, 영역 또는 부위는 본 발명의 가르침으로부터 벗어나지 않고서도 제2 부재, 영역 또는 부위를 지칭할 수 있다.
이하, 본 발명의 실시예들은 본 발명의 실시예들을 개략적으로 도시하는 도면들을 참조하여 설명한다. 도면들에 있어서, 예를 들면, 제조 기술 및/또는 공차에 따라, 도시된 형상의 변형들이 예상될 수 있다. 따라서, 본 발명의 실시예는 본 명세서에 도시된 영역의 특정 형상에 제한된 것으로 해석되어서는 아니 되며, 예를 들면 제조상 초래되는 형상의 변화를 포함하여야 한다.
도 1은 본 발명의 실시예에 따른 플래시 메모리 시스템을 나타내는 블록도이다.
도 1을 참조하면, 본 발명의 실시예에 따른 메모리 시스템(MSYS)은 제1 메모리 어레이(MArr1), 제2 메모리 어레이(MArr2), 에러 검출 및 정정 엔진(ECCE, 이하 ECC 엔진) 및 ECC 제어부(ECU)를 구비한다. 제1 메모리 어레이(MArr1) 및 제2 메모리 어레이(MArr2)는 각각 프로그램 데이터(PDTA)를 저장한다. 특히, 제1 메모리 어레이(MArr1)는 기입 성능(write performance)를 위해 또는 코어스-파인(coarse-fine) 프로그램 등 다양한 프로그램 스킴 등을 사용하기 위해 일정 기간 데이터를 보관하여야 하는 경우, 제2 메모리 어레이(MArr2)에 프로그램 하고자 하는 프로그램 데이터(PDTA)를 일시적으로 저장하는 메모리 어레이일 수 있다. 따라서, 제1 메모리 어레이(MArr1)는 제2 메모리 어레이(MArr2)보다 액세스 속도, 기입 속도 또는 독출 속도가 빠를 수 있다.
본 발명의 실시예에 따른 플래시 메모리 시스템(MSYS)에서의 프로그램은, 전술한 바와 같이 코어스-파인 프로그램 방식으로 수행될 수 있다. 이때, 본 발명의 실시예에 따른 플래시 메모리 시스템(MSYS)은 셀들 사이의 커플링 노이즈(cell-to-cell coupling noise)를 줄이기 위해, 온-칩 버퍼드 프로그램(On-chip buffered program) 방식을 채택할 수 있다. 온-칩 버퍼드 프로그램에 의해, 본 발명의 실시예에 따른 플래시 메모리 시스템(MSYS)은 먼저 프로그램 하는 셀에 대해 코어스(coarse)하게 1차 프로그램을 수행하고, 해당 셀에 커플링(coupling) 영향을 미치는 인접 셀에도 다른 데이터로 1차 프로그램을 수행한 후, 해당 셀에 파인(fine)하게 문턱전압을 조정하는 2차 프로그램(fine program)을 수행할 수 있다.
본 발명의 실시예에 따른 플래시 메모리 시스템(MSYS)은 1차 프로그램(coarse program)만 되어 있는 셀의 데이터를 제1 메모리 어레이(MArr1), 예를 들어 온-칩 버퍼(on-chip buffer)에 먼저 프로그램 한 후, 2차 프로그램의 수행을 위해, 제1 메모리 어레이(MArr1)로부터 데이터를 읽어 제2 메모리 어레이(MArr2)로 옮겨 쓸 수 있다.
본 발명의 실시예에 따른 플래시 메모리 시스템(MSYS)은 또한, 플래시 메모리(flash memory, 예를 들어, 도 3의 MEM)에 데이터가 프로그램 되고 있는 동안에도, 플래시 메모리는 외부로부터 데이터를 받아들여, 진행되고 있던 프로그램이 끝난 후에, 곧 바로 다음 프로그램을 수행할 수 있다. 외부라 함은, 예를 들어, 호스트, 버퍼 매니저 또는 메모리 컨트롤러 등일 수 있다. 이와 같은 프로그램 방식은 캐시 프로그램(cache program)이라 불리기도 한다. 본 발명의 실시예에 따른 플래시 메모리 시스템(MSYS)은 제1 메모리 어레이(MArr1)에 프로그램된 데이터를 읽어 제2 메모리 어레이(MArr2)로 옮겨 씀으로써, 상기의 동작을 수행할 수 있다.
제1 메모리 어레이(MArr1) 및 제2 메모리 어레이(MArr2)의 예에 대하여 알아본다. 예를 들어, 도 2에 도시되는 바와 같이, 제1 메모리 어레이(MArr1)는 캐쉬 메모리이고, 제2 메모리 어레이(MArr2)는 메인 메모리 어레이일 수 있다. 예를 들어, 제1 메모리 어레이(MArr1)는 낸드 플래시 메모리로 구현되는 캐쉬 메모리이고, 제2 메모리 어레이(MArr2)는 낸드 플래시 메모리로 구현되는 메인 메모리 어레이일 수 있다. 제2 메모리 어레이(MArr2)가 멀티-레벨 셀 낸드 플래시 메모리인 경우, 제1 메모리 어레이(MArr1)는 프로그램 및 독출 속도가 빠른 싱글-레벨 셀 방식으로 프로그램 되는 캐쉬(버퍼)로 동작할 수 있다. 본 발명의 실시예에 따른 메모리 시스템은 온-칩 버퍼드 프로그램(on-chip buffered programm) 방식 또는 캐시 프로그램(cache program) 방식으로 프로그램 될 수 있고, 각 경우에 따라, 전술된 캐쉬 메모리는 캐시 또는 온-칩 버퍼로 동작할 수 있다.
또는, 제1 메모리 어레이(MArr1)는 제2 메모리 어레이(MArr2)보다, 셀당 프로그램 되는 비트의 수가 작은 멀티-레벨 셀 낸드 플래시 메모리일 수도 있다. 예를 들어, 제1 메모리 어레이(MArr1)는 2-비트 멀티-레벨 셀 낸드 플래시 메모리이고, 제2 메모리 어레이(MArr2)는 3-비트 멀티-레벨 셀 낸드 플래시 메모리일 수 있다.
또는, 제1 메모리 어레이(MArr1)와 제2 메모리 어레이(MArr2)는 동일한 비트의 멀티-레벨 셀 낸드 플래시 메모리일 수도 있다. 예를 들어, 제1 메모리 어레이(MArr1) 및 제2 메모리 어레이(MArr2)는 모두 3-비트 멀티-레벨 셀 낸드 플래시 메모리일 수 있다. 다만, 이 경우, 제1 메모리 어레이(MArr1)는 LSB(Least Significant Bit)를 저장할 수 있고, 제2 메모리 어레이(MArr2)는 MSB(Most Significant Bit)를 저장할 수 있다.
또는, 제1 메모리 어레이(MArr1)는 DRAM, MRAM 또는 PRAM 등으로 구현되는 캐쉬 메모리일 수 있고, 제2 메모리 어레이(MArr2)는 낸드 플래시 메모리일수 있다.
또는, 제1 메모리 어레이(MArr1) 및 제2 메모리 어레이(MArr2)는 플래시 메모리의 서로 다른 블록(이레이즈(erase) 단위)으로 설정될 수 있다. 또는 제1 메모리 어레이(MArr1) 및 제2 메모리 어레이(MArr2)는 플래시 메모리에서, 서로 다른 전압이 인가되거나 공통 소스 라인을 달리하는 단위로 설정될 수 있다.
다만, 이에 한정되는 것은 아니다. 또한, 제1 메모리 어레이(MArr1) 및 제2 메모리 어레이(MArr2)의 다양한 구현에 대한 좀더 자세한 설명은 후술된다.
다시 도 1을 참조하면, 제1 메모리 어레이(MArr1) 및 제2 메모리 어레이(MArr2)에 저장된 데이터는 에러를 포함할 수 있다. 예를 들어, 제1 메모리 어레이(MArr1) 및 제2 메모리 어레이(MArr2)에 저장된 데이터는, 프로그램 하고자 했던 프로그램 데이터(PDTA)와 다른 값을 가질 수 있다.
도 1의 메모리 시스템(MSYS)은 메모리 및 메모리 컨트롤러로 구분될 수 있다. 예를 들어, 도 3에 도시되는 바와 같이, 제1 메모리 어레이(MArr1) 및 제2 메모리 어레이(MArr2)를 포함하는 메모리(MEM), 및 ECC 엔진(ECCE) 및 ECC 제어부(ECU)를 포함하는 메모리 컨트롤러(Ctrl)를 포함할 수 있다.
ECC 엔진(ECCE)은 이러한 에러를 검출하고 정정한다. 구체적으로, ECC 엔진(ECCE)은 제1 메모리 어레이(MArr1)에 저장되는 프로그램 데이터(PDTA)를 제1 방식으로 인코딩한 제1 인코딩 정보(EnCD1)를 생성한다. 제1 인코딩 정보(EnCD1)는 제1 메모리 어레이(MArr1)에 전송될 수 있다. ECC 엔진(ECCE)은 제1 메모리 어레이(MArr1)로부터 수신되는 제1 인코딩 정보(EnCD1)를 제1 방식으로 디코딩한 제1 디코딩 정보(EnDD1)를 이용하여, 제1 메모리 어레이(MArr1)에 프로그램 된 데이터의 에러를 검출하고 정정한다. 예를 들어, ECC 엔진(ECCE)은 제1 메모리 어레이(MArr1)에 저장하고자 하는 프로그램 데이터(PDTA)를 인코딩하여 패리티 데이터와 같은 제1 인코딩 정보(EnCD1)로 생성하고, 제1 메모리 어레이(MArr1)에 저장할 수 있다. 그리고, ECC 엔진(ECCE)은 제1 인코딩 정보(EnCD1)를 디코딩한 제1 디코딩 정보(EnDD1)로부터 제1 메모리 어레이(MArr1)에서 독출된 데이터에 포함된 에러를 검출하고, 예를 들어, 에러 비트를 배타적 논리합하여 에러를 정정할 수 있다.
도 1 및 이하에서 설명되는 도면에서 제1 디코딩 정보(EnDD1)가 제1 메모리 어레이(MArr1)로부터 ECC 엔진(ECCE)으로 전송되는 것과 같이 도시되고 있으나, 전술한 바와 같이, 제1 디코딩 정보(EnDD1)는 제1 메모리 어레이(MArr1)로부터 전송되는 제1 인코딩 정보(EnCD1)가 디코딩된 결과이다. 그럼에도, 제1 메모리 어레이(MArr1)로 저장하고자 하는 데이터에 대해 제1 인코딩 정보(EnCD1)가 생성되는 것에 대응되고, ECC 엔진(ECCE)이 제1 메모리 어레이(MArr1)로부터 독출되는 데이터에 대해 제1 디코딩 정보(EnDD1)를 생성함을 개념적으로 나타내기 위해, 제1 메모리 어레이(MArr1)로부터 독출되는 데이터의 전송 패스(화살표)에 제1 디코딩 정보(EnDD1)를 부가하였음을 알려둔다. 후술되는 제2 디코딩 정보(EnDD2)도 마찬가지이다.
ECC 엔진(ECCE)은, 제1 메모리 어레이(MArr1)로부터 독출되고 에러 검출 및 정정된 데이터를 제2 방식으로 인코딩한 제2 인코딩 정보(EnCD2)를, 제1 메모리 어레이(MArr1)에 전송한다. 그리고, ECC 엔진(ECCE)은, 제2 인코딩 정보(EnCD2)를 디코딩한 제2 디코딩 정보(EnDD2)로부터 제2 메모리 어레이(MArr2)에서 독출된 데이터에 포함된 에러를 검출 및 정정한다. 제2 메모리 어레이(MArr2)로부터 독출되고 에러 검출 및 정정된 데이터는 독출 데이터(RDTA)로 출력될 수 있다.
본 발명의 실시예에 따른 ECC 엔진(ECCE)은, 상기에서 설명된 패리티 방식에 한정되지 아니하고, LDPC(Low-Density Parity Code) 방식으로 채택하여, 소프트 디시젼(soft decision) 결과를 이용하여 에러를 검출하고 정정할 수도 있다.
계속해서 도 1을 참조하면, 제1 인코딩 정보(EnCD1) 및 제1 디코딩 정보(EnDD1)를 생성하는 제1 방식, 및 제2 인코딩 정보(EnCD2) 및 제2 디코딩 정보(EnDD2)를 생성하는 제2 방식은 예를 들어, 제1 방식 및 제2 방식은 ECC 엔진(ECCE)의 에러 정정 능력(error correctability)에 대한 것일 수 있다. 예를 들어, 제1 방식은 n개의 비트에 대한 에러 정정이 가능한 방식일 수 있다. 그리고, 제2 방식은 m(≠n)개의 비트에 대한 에러 정정이 가능한 방식일 수 있다.
ECC 엔진(ECCE)은 ECC 제어부(ECU)로부터 전송되는 제어 신호(XCON)에 응답하여, 제1 방식 및 제2 방식을 상이하게 설정할 수 있다. ECC 제어부(ECU)는 모드 신호(XMOD)에 응답하여, 제어 신호(XCON)를 설정할 수 있다. 예를 들어, 모드 신호(XMOD)는 제1 방식 및 제2 방식이 상이한 제1 모드 및 제1 방식 및 제2 방식이 동일한 제2 모드 중 하나를 나타낼 수 있다. 모드 신호(XMOD)는 외부로부터 인가되거나 디폴트(default)로 설정될 수도 있다. 또는 모드 신호(XMOD)는 메모리 시스템(MSYS)의 동작 환경에 따라 자동적으로 설정될 수도 있다.
제어 신호(XCON)의 논리 레벨은 데이터를 프로그램 하고자 하는 제1 메모리 어레이(MArr1) 또는 제2 메모리 어레이(Marr2)에 대한 어드레스에 대응될 수 있다. 또는 제어 신호(XCON)의 논리 레벨은 데이터가 제1 메모리 어레이(MArr1) 및 제2 메모리 어레이(Marr2) 중 어느 메모리 어레이에 프로그램 될지를 나타내는 플래그(flag)일 수 있다. 예를 들어, 데이터를 캐시 메모리인 제1 메모리 어레이(MArr1)에 프로그램 하고자 할 경우, 본 발명의 실시예에 따른 제어 신호(XCON)는, 캐쉬 플래그(cache flag)를 참조하여, 제1 논리 레벨로 설정될 수 있다.
이상에서 설명된 본 발명의 실시예에 따른 메모리 시스템(MSYS)에서의 에러 검출 및 정정 방법을 요약하면 도 4와 같을 수 있다. 즉, 프로그램 데이터(PDTA)는, ECC 엔진(ECCE)에 의해 프로그램 데이터(PDTA)을 제1 방식으로 인코딩한 제1 인코딩 정보(EnCD1)와 함께, 제1 메모리 어레이(MArr1)에 저장된다. 제1 메모리 어레이(MArr1)에 저장된 데이터는 제2 메모리 어레이(MArr2)로 옮겨질 수 있다. 예를 들어, 제1 메모리 어레이(MArr1)에 더 이상 저장할 공간이 없거나, 해당 데이터를 다시 액세스할 필요가 없어진 경우 등에, 제1 메모리 어레이(MArr1)에 저장된 데이터는 제2 메모리 어레이(MArr2)로 옮겨질 수 있다. 이러한 경우, 제1 메모리 어레이(MArr1)에 저장된 데이터에 포함되어 있을 수 있는 에러의 검출 및 정정을 위해, ECC 엔진(ECCE)은 제1 메모리 어레이(MArr1)로부터 수신된 제1 인코딩 정보(EnCD1)를 제1 방식으로 디코딩한 제1 디코딩 정보(EnDD1)를, 제1 메모리 어레이(MArr1)로부터 수신된 데이터와 비교한다. 비교 결과, 제1 디코딩 정보(EnDD1)의 각 비트와 제1 메모리 어레이(MArr1)로부터 수신된 데이터의 각 비트가 상이한 경우, 해당 비트의 논리를 반전시켜 에러를 정정할 수 있다.
ECC 엔진(ECCE)는 에러 정정된 제1 메모리 어레이(MArr1)의 데이터를 제2 방식으로 인코딩한다. 그리고, 제2 메모리 어레이(MArr2)에 저장된 데이터에 대한 독출 명령이 수신되면, ECC 엔진(ECCE)은 제2 메모리 어레이(MArr2)로부터 수신된 제2 인코딩 정보(EnCD2)를 제2 방식으로 디코딩한 제2 디코딩 정보(EnDD2)를, 제2 메모리 어레이(MArr2)로부터 수신된 데이터와 비교한다. 비교 결과, 제2 디코딩 정보(EnDD2)의 각 비트와 제2 메모리 어레이(MArr2)로부터 수신된 데이터의 각 비트가 상이한 경우, 해당 비트의 논리를 반전시켜 에러를 정정할 수 있다. 에러가 정정된 데이터는 독출 데이터(RDTA)로 출력된다.
전술한 바와 같이, 제1 방식은 n개의 비트에 대한 에러 정정이 가능한 방식이고, 제2 방식은 m개의 비트에 대한 에러 정정이 가능한 방식으로, 서로 상이할 수 있다. 도 2의 예와 같이, 제1 메모리 어레이(MArr1)가 캐쉬 메모리이고 제2 메모리 어레이(MArr2)가 메인 메모리 어레이일 경우, n은 m보다 작을 수 있다. 예를 들어, 본 발명의 실시예에 따른 메모리 시스템(MSYS)이 낸드 플래시 메모리 시스템인 경우, 캐시 메모리의 데이터에 대하여는 20 비트의 에러 정정 능력을 갖는 ECC 방식을 채택하고, 메인 메모리의 데이터에 대하여는 60 비트의 에러 정정 능력을 갖는 ECC 방식을 채택할 수 있다. 캐쉬 메모리에는 전술한 바와 같이, 싱글-레벨 셀 방식으로 프로그램 되는 낸드 플래시 메모리이거나, DRAM이나 PRAM 등과 같이 워드 단위로 액세스가 가능한 메모리일 수 있으므로, 에러 발생 비율이, 메인 메모리보다 낮을 수 있다.
따라서, 프로그램 데이터를 제2 메모리 어레이에 프로그램 하기 전에 일시적으로 데이터를 저장할 수 있는 제1 메모리 어레이를, 제2 메인 메모리 어레이와 별도로 구비하는, 본 발명의 실시예에 따른 메모리 시스템 및 이의 에러 검출 및 정정 방법에 의하면, 에러 확률이 낮은 제1 메모리 어레이의 데이터와 에러 확률이 높은 제2 메모리 어레이의 데이터에 상이한 에러 검출 및 정정 스킴을 채택함으로써, 에러 검출 및 정정의 정확성은 유지하면서도 에러 검출 및 정정의 속도를 향상시킬 수 있다.
도 5는 본 발명의 다른 실시예에 따른 메모리 시스템을 나타내는 도면이다.
도 5를 참조하면, ECC 엔진(ECCE)이 제1 서브 엔진(ECCE1) 및 제2 서브 엔진(ECCE2)을 포함한다. 제1 서브 엔진(ECCE1)은 제1 메모리 어레이(MArr1)의 데이터에 대해 제1 방식으로 인코딩 및 디코딩을 수행한다. 제2 서브 엔진(ECCE2)은 제2 메모리 어레이(MArr2)의 데이터에 대해 제2 방식으로 인코딩 및 디코딩을 수행한다. 제1 서브 엔진(ECCE1) 및 제2 서브 엔진(ECCE2)은 도 1의 ECC 엔진(ECCE)과 마찬가지로, 제어 신호(XCON)에 응답하여, 서로 다른 제1 방식 및 제2 방식으로 인코딩 및 디코딩을 수행할 수 있다. 그 밖의 각 서브 엔진의 인코딩 및 디코딩 동작도 전술된 ECC 엔진(ECCE)의 인코딩 및 디코딩 동작과 동일하므로 이에 대한 더 자세한 설명은 생략한다.
도 5의 메모리 시스템(MSYS)은 도 1의 메모리 시스템(MSYS)과 마찬가지로, 도 6과 같이 순차적인 데이터 기입 및 독출 동작을 할 수 있다. 도 6을 참조하면, 제1 서브 엔진(ECCE1)은 프로그램 데이터(PDTA)를 제1 방식으로 제1 인코딩 정보(EnCD1)를 생성하고 제1 메모리 어레이(MArr1)로부터 독출된 데이터의 에러를 검출 및 정정하기 위해, 제1 인코딩 정보(EnCD1)를 제1 방식으로 디코딩하여 제1 디코딩 정보(EnDD1)를 생성한다. 제2 서브 엔진(ECCE2)은 제1 메모리 어레이(MArr1)에 저장되었다가 전달된 데이터를, 제2 방식으로 제2 인코딩 정보(EnCD2)를 생성하고 제2 메모리 어레이(MArr2)로부터 독출된 데이터를, 제2 인코딩 정보(EnCD2)를 제2 방식으로 디코딩한 제2 디코딩 정보(EnDD2)를 이용하여 에러 검출 및 정정하여, 독출 데이터(RDTA)로 출력한다.
또한, 도 5의 메모리 시스템(MSYS)은 이렇게 ECC 엔진(ECCE)이 서로 독립하여 동작할 수 있는 다수의 서브 엔진들로 구비되는 경우, 도 7과 같이 에러 검출 및 정정 동작이 병렬적으로 수행될 수 있다. 도 7을 참조하면, 제1 서브 엔진(ECCE1)이 제2 프로그램 데이터(PDTA2)에 대하여 제1 방식으로 인코딩 또는 디코딩 동작을 수행하는 동안, 제2 서브 엔진(ECCE2)은 다른 프로그램 데이터(제1 프로그램 데이터(PDTA1))에 대하여 제2 방식으로 인코딩 또는 디코딩 동작을 수행할 수 있다. 제1 프로그램 데이터(PDTA1)는 제2 프로그램 데이터(PDTA2)보다 먼저 메모리 시스템(MSYS)에 수신된 데이터일 수 있다. 다만, 제2 프로그램 데이터(PDTA2)는 제1 프로그램 데이터(PDTA1)에 연속한 데이터이거나, 연속하지 아니한 데이터일 수 있다. 제2 서브 엔진(ECCE2)은 에러 검출 및 정정된 제1 프로그램 데이터(PDTA1)를 제1 독출 데이터(RDTA)로 출력한다.
이렇듯, 도 5의 메모리 시스템에 의하면, 제1 메모리 어레이 및 제2 메모리 어레이 각각에 대한 에러 검출 및 정정 동작을 병렬적으로 수행함에 따라, 에러 검출 및 정정 속도를 향상시킬 수 있다.
도 8은 본 발명의 다른 실시예에 따른 메모리 시스템을 나타내는 도면이고, 도 9는 도 8의 메모리 시스템에서의 에러 검출 및 정정 방법의 흐름을 나타내는 도면이다.
도 8을 참조하면, 본 발명의 다른 실시예에 따른 메모리 시스템(MSYS)은 메모리 컨트롤러(Ctrl) 및 메모리(MEM) 각각에 ECC 엔진을 포함한다. 메모리 컨트롤러(Ctrl)에 포함되는 ECC 엔진을 외부 ECC 엔진(ExECCE)이라 하고, 메모리(MEM)에 포함되는 ECC 엔진을 내부 ECC 엔진(InECCE)이라 명명한다.
외부 ECC 엔진(ExECCE)은 프로그램 데이터(PDTA)에 대한 제1 인코딩 정보(EnCD1)를 생성한다. 내부 ECC 엔진(InECCE)은, 제1 인코딩 정보(EnCD1)를 디코딩한 제1 디코딩 정보(EnDD1)를 이용하여, 제1 메모리 어레이(MArr1)로부터 독출된 프로그램 데이터(PDTA)의 에러를 검출하고 정정한다. 내부 ECC 엔진(InECCE)은 또한, 에러 검출 및 정정 동작을 거친 제1 메모리 어레이(MArr1)로부터 독출된 프로그램 데이터(PDTA)에 대한 제2 인코딩 정보(EnCD2)를 생성한다. 외부 ECC 엔진(ExECCE)은 제2 메모리 어레이(MArr2)에 저장된 프로그램 데이터(PDTA)에 대한 독출 요청이 있는 경우, 제2 인코딩 정보(EnCD2)를 디코딩한 제2 디코딩 정보(EnDD2)를 이용하여, 제2 메모리 어레이(MArr2)로부터 독출된 프로그램 데이터(PDTA)의 에러를 검출하고 정정한다. 외부 ECC 엔진(ExECCE)은 제2 메모리 어레이(MArr2)로부터 독출된 프로그램 데이터(PDTA)의 에러를 검출하고 정정하여 독출 데이터(RDTA)로 출력할 수 있다.
도 8의 메모리 시스템(MSYS)의 외부 ECC 엔진(ExECCE) 및 내부 ECC 엔진(InECCE)은 도 10과 같이 구현될 수 있다. 도 10을 참조하면, 외부 ECC 엔진(ExECCE)은 제1 ECC 인코더(ECCE1_EN) 및 제2 ECC 디코더(ECCE2_DEC)를 구비할 수 있다. 그리고, 내부 ECC 엔진(InECCE)은 제1 ECC 디코더(ECCE1_DEC) 및 제2 ECC 인코더(ECCE2_EN)를 구비할 수 있다.
도 10의 메모리 시스템(MSYS)에서의 에러 검출 및 정정 동작은, 도 11과 같이, 제1 ECC 인코더(ECCE1_EN), 제1 ECC 디코더(ECCE1_DEC), 제2 ECC 인코더(ECCE2_EN) 및 제2 ECC 디코더(ECCE2_DEC)의 순서대로 순차적으로 수행될 수 있다. 구체적으로, 제1 ECC 인코더(ECCE1_EN)는 프로그램 데이터(PDTA)에 대한 제1 인코딩 정보(EnCD1)를 생성한다. 제1 ECC 디코더(ECCE1_DEC)는, 제1 인코딩 정보(EnCD1)를 디코딩한 제1 디코딩 정보(EnDD1)를 이용하여, 제1 메모리 어레이(MArr1)로부터 독출된 프로그램 데이터(PDTA)의 에러를 검출하고 정정한다. 제2 ECC 인코더(ECCE2_EN)는 에러 검출 및 정정 동작을 거친 제1 메모리 어레이(MArr1)로부터 독출된 프로그램 데이터(PDTA)에 대한 제2 인코딩 정보(EnCD2)를 생성한다. 제2 ECC 디코더(ECCE2_DEC)는 제2 메모리 어레이(MArr2)에 저장된 프로그램 데이터(PDTA)에 대한 독출 요청이 있는 경우, 제2 인코딩 정보(EnCD2)를 디코딩한 제2 디코딩 정보(EnDD2)를 이용하여, 제2 메모리 어레이(MArr2)로부터 독출된 프로그램 데이터(PDTA)의 에러를 검출하고 정정한다.
반면, 도 10의 메모리 시스템(MSYS)에서의 에러 검출 및 정정 동작은, 도 12와 같이, 제1 ECC 인코더(ECCE1_EN) 및 제1 ECC 디코더(ECCE1_DEC)는, 제2 ECC 인코더(ECCE2_EN) 및 제2 ECC 디코더(ECCE2_DEC)와 병렬적으로 동작할 수 있다. 구체적으로, 제1 ECC 인코더(ECCE1_EN)는 제2 프로그램 데이터(PDTA2)에 대한 제1 인코딩 정보(EnCD1)를 생성하거나, 제1 인코딩 정보(EnCD1)를 디코딩한 제1 디코딩 정보(EnDD1)를 이용하여 제1 메모리 어레이(MArr1)로부터 독출된 제2 프로그램 데이터(PDTA2)의 에러를 검출하고 정정한다. 제1 ECC 인코더(ECCE1_EN)의 인코딩 동작 또는 제1 ECC 디코더(ECCE1_DEC)의 디코딩 동작과 동시에, 제2 ECC 인코더(ECCE2_EN)는 제1 프로그램 데이터(PDTA1)에 대한 제2 인코딩 정보(EnCD2)를 생성하거나, 제2 ECC 디코더(ECCE2_DEC)는 제2 인코딩 정보(EnCD2)를 디코딩한 제2 디코딩 정보(EnDD2)를 이용하여 제2 메모리 어레이(MArr2)로부터 독출된 프로그램 데이터(PDTA)의 에러를 검출하고 정정할 수 있다.
전술한 바와 같이, 제1 메모리 어레이(MArr1)는 제2 메모리 어레이(MArr2)보다 에러 확률이 적은 방식으로 데이터를 저장할 수 있다. 따라서, 제1 메모리 어레이(MArr1)로부터 독출된 데이터에 대한 디코딩, 및 제1 메모리 어레이(MArr1)로부터 독출된 데이터를 제2 메모리 어레이(MArr2)에 저장하기 위한 인코딩을 수행하기 위한 로직의 복잡도를 상대적으로 줄일 수 있다.
이 경우, 도 8 또는 도 10과 같이, 제1 메모리 어레이(MArr1)로부터 독출된 데이터에 대한 디코딩, 및 제1 메모리 어레이(MArr1)로부터 독출된 데이터를 제2 메모리 어레이(MArr2)에 저장하기 위한 인코딩을 위한 ECC 엔진을 메모리(MEM)의 내부에 위치시킬 수 있다. 따라서, 본 발명의 실시예에 따른 메모리 시스템은 에러 검출 및 정정의 효율을 높이면서도 컨트롤러와 메모리 사이의 데이터의 송수신 횟수를 줄임으로써, 시스템의 성능을 향상시킬 수 있다. 또한, 동일한 성능을 가지면서도, 제2 ECC 디코더(ECCE2_DEC)에 비해 설계 복잡도가 낮은 제2 ECC 인코더(ECCE2_EN)만을 메모리(MEM)의 내부에 위치시키고 상대적으로 설계 복잡도가 높은 제2 ECC 디코더(ECCE2_DEC)를 메모리(MEM)의 외부에 위치시킴으로써, 메모리(MEM)의 레이아웃 면적을 줄일 수 있다.
이상에서는 제1 메모리 어레이에 대한 인코딩 및 디코딩의 제1 방식이, 제2 메모리 어레이에 대한 인코딩 및 디코딩의 제2 방식과 상이한 예에 한하여 기술되었다. 그러나, 이에 한정되는 것은 아니다. 본 발명의 다른 실시예에 따른 메모리 시스템에 의하면, 특정한 동작 환경에서는 제1 방식 및 제2 방식을 동일하게 설정할 수 있다. 이에 대하여 설명한다.
도 13은 본 발명의 다른 실시예에 따른 메모리 시스템을 나타내는 도면이다.
도 13을 참조하면, 도 13의 메모리 시스템(MSYS)의 ECC 제어부(ECU)는 환경 신호(XSIT)를 더 수신할 수 있다. 환경 신호(XSIT)는 메모리 시스템(MSYS)의 동작 환경에 대한 정보를 포함할 수 있다. 예를 들어, 환경 신호(XSIT)는 P/E 사이클(Program/Erase cycle)이 제1 기준 값보다 작은지를 나타낼 수 있다. 또는, 환경 신호(XSIT)는 비트 오류율(BER: Bit Error Rate)가 제2 기준 값보다 작은지를 나타낼 수 있다. 제1 기준 값 및 제2 기준 값은 각각, 메모리 시스템(MSYS)의 에러 특성 등을 참조하여 설정될 수 있다.
P/E 사이클이 증가하게 되면, 산포 열화가 야기되어 에러 발생 확률이 높아질 수 있다. 그러나, 메모리 시스템(MSYS)의 사용 초기와 같이 P/E 사이클이 많지 않은 동안에는, 즉 P/E 사이클이 제1 기준 값보다 작으면, 실제 에러 발생 확률이 메모리 시스템(MSYS)에 예상된 에러 발생 확률보다 작을 수 있다. 비트 오류율, 프로그램 타임(program time) 또는 리텐션 타임(retetsion time)의 경우도 마찬가지이다. P/E 사이클은 메모리 컨트롤러(Ctrl)의 카운터(미도시)에서 카운트될 수 있다. P/E 사이클의 카운트 값은 메모리 컨트롤러(Ctrl)에 저장되거나, 메모리 어레이의 내부에 기록될 수 있다. 비트 오류율은 ECC 디코딩 결과로 검출될 수 있다.
전술된 도 4 등에서는, 에러 발생 확률이 낮은 스킴으로 동작하는 제1 메모리 어레이(MArr1)에 대하여만 에러 정정 능력이 상대적으로 낮은 n-비트 에러정정 능력의 제1 방식으로 ECC 인코딩 및 디코딩을 수행하고, 에러 발생 확률이 높은 스킴으로 동작하는 제2 메모리 어레이(MArr2)에 대하여는 에러 정정 능력이 상대적으로 높은 m(m>n)-비트 에러정정 능력의 제2 방식으로 ECC 인코딩 및 디코딩을 수행하였다.
반면, 도 13의 메모리 시스템(MSYS)에서의 에러 검출 및 정정 방법의 일 예를 나타내는 도 14에 도시되는 바와 같이, P/E 사이클이 제1 기준 값보다 작거나, 비트 오류율이 제2 기준 값보다 작으면, 즉 에러 발생 확률이 낮은 동작 환경에서는, 제2 메모리 어레이(MArr2)에 프로그램 데이터(PDTA)를 저장하고, 제2 메모리 어레이(MArr2)로부터 독출 데이터(RDTA)를 독출하는데 적용되는 ECC 인코딩 및 디코딩 방식이, 도 4에서 제1 메모리 어레이(MArr1)에 대한 데이터에 적용하던 제1 방식과 동일할 수 있다. 예를 들어, 제2 인코딩 정보(EnCD2) 및 제2 디코딩 정보(EnDD2)도 n-비트 에러정정 능력의 제1 방식으로 ECC 인코딩 및 디코딩되어 생성될 수 있다.
또는, P/E 사이클이 제1 기준 값 이상이거나, 비트 오류율이 제2 기준 값 이상이면, 즉 에러 발생 확률이 높은 동작 환경에서는, 도 13의 메모리 시스템(MSYS)에서의 에러 검출 및 정정 방법의 다른 예를 나타내는 도 15에 도시되는 바와 같이, 제1 메모리 어레이(MArr1)에 프로그램 데이터(PDTA)를 저장하고, 제1 메모리 어레이(MArr1)로부터 독출 데이터(RDTA)를 독출하는데 적용되는 ECC 인코딩 및 디코딩 방식이, 도 4에서 제2 메모리 어레이(MArr2)에 대한 데이터에 적용하던 제2 방식과 동일할 수 있다. 예를 들어, 제1 인코딩 정보(EnCD1) 및 제1 디코딩 정보(EnDD1)도 m-비트 에러정정 능력의 제2 방식으로 ECC 인코딩 및 디코딩되어 생성될 수 있다.
도 14 또는 도 15의 예에서, 제1 메모리 어레이(MArr1) 또는 제2 메모리 어레이(Marr2)의 열화 상태를 구분하는 단위는, 해당 메모리 어레이의 셀 단위, 페이지 단위, 블록 단위 또는 해당 메모리 어레이 자체의 단위 등 다양한 단위로 설정될 수 있다.
이상에서는 도 13의 메모리 시스템(MSYS)이 환경 신호(XSIT)에 응답하여 동작하는 예에 대하여 설명하였다. 도 13의 메모리 시스템(MSYS)은 환경 신호(XSIT)와 함께 모드 신호(XMOD)에 응답하여 동작할 수도 있다. 예를 들어, ECC 제어부(ECU)는 모드 신호(XMOD) 및 P/E 사이클이 제1 기준 값보다 작거나 비트 오류율이 제2 기준 값보다 작음을 나타내는 환경 신호(XSIT)에 응답하여, 제1 메모리 어레이(MArr1)에 대한 ECC 인코딩 및 디코딩 방식이 제1 방식으로 설정되도록 제어할 수 있다. 반면, ECC 제어부(ECU)는 모드 신호(XMOD)가 활성화되더라도, P/E 사이클이 제1 기준 값 이상이거나 비트 오류율이 제2 기준 값 이상임을 나타내는 환경 신호(XSIT)가 수신되면, 제1 메모리 어레이(MArr1)에 대한 ECC 인코딩 및 디코딩 방식이 제2 방식으로 설정되도록 제어 신호(XCON)를 생성할 수 있다.
도 13의 메모리 시스템(MSYS)에서의 에러 검출 및 정정 방법은 도 14 및 도 15에 한정되지 아니한다. 도 13의 메모리 시스템(MSYS)의 ECC 엔진(ECCE)은 전술된 도 5 또는 도 10의 ECC 엔진(ECCE)과 같을 수 있다. 이 경우, 도 13의 메모리 시스템(MSYS)에서의 에러 검출 및 정정 방법은 도 7 또는 도 12 등과 같이, 제1 메모리 어레이(MArr1)의 데이터에 대한 ECC 인코딩 및 디코딩을, 제2 메모리 어레이(MArr2)의 데이터에 대한 ECC 인코딩 및 디코딩을 병렬적으로 수행할 수 있다.
이렇듯, 본 발명의 실시예에 따른 메모리 시스템에 의하면, 에러 발생 확률에 근거하여 최적화된 ECC 인코딩 및 디코딩 방식을 채택함으로써, 에러 정정의 정확성을 유지하면서도 에러 정정 속도를 향상시킬 수 있다. 따라서, 본 발명의 실시예에 따른 메모리 시스템에 의하면, 리드 속도를 향상시키면서도 시스템의 신뢰성을 유지할 수 있다.
또한, 캐시 프로그램과 ECC가 결합되어 사용될 경우, 에러 정정 방법에 따라, 에러 정정 코드의 인코딩 및 디코딩에 관한 파워 소모와 레이턴시(latency)가 달라질 수 있는데, 본 발명의 실시예에 따른 메모리 시스템에 의하면, 에러 발생 확률에 근거하여 최적화된 ECC 인코딩 및 디코딩 방식을 채택되는 다양한 에러 정정을 수행함으로써, 파워 소모 및 레이턴시를 줄일 수 있다.
도 16 내지 도 19는 각각, 본 발명의 실시예에 따른 제1 메모리 어레이 및 제2 메모리 어레이의 다양한 구현 예를 나타내는 도면이다.
도 16을 참조하면, 본 발명의 실시예에 따른 메모리(MEM)에 포함되는 제1 메모리 어레이(MArr1) 및 제2 메모리 어레이(MArr2)는 동일한 레이어에 서로 다른 칩(chip)으로 구현될 수 있다. 제1 메모리 어레이(MArr1)는 DRAM 또는 PRAM 등으로 구비되거나, 싱글-레벨 셀 낸드 플래시 메모리로 구비될 수 있다.
다만, 본 발명의 실시예에 따른 제1 메모리 어레이(MArr1)에 저장되는 데이터는 싱글-레벨의 프로그램 데이터에 한하는 것은 아니다. 예를 들어, 제1 메모리 어레이(MArr1)에는 2-비트 MLC의 프로그램 데이터가 저장되고, 제2 메모리 어레이(MArr2)에는 3-비트 이상의 MLC의 프로그램 데이터가 저장되도록 설정될 수도 있다.
또한, 전술한 바와 같이, 제1 메모리 어레이(MArr1) 및 제2 메모리 어레이(MArr2)는 플래시 메모리의 서로 다른 블록(이레이즈(erase) 단위)으로 설정될 수 있다. 또는 제1 메모리 어레이(MArr1) 및 제2 메모리 어레이(MArr2)는 플래시 메모리에서, 서로 다른 전압이 인가되거나 공통 소스 라인을 달리하는 단위로 설정될 수 있다.
도 17a를 참조하면, 본 발명의 실시예에 따른 메모리(MEM)는 다수의 플레인(plane)을 구비할 수 있다. 도 17a은 n개의 플레인(Mat1~Matn)이 구비되는 예를 도시한다. 도 17a의 예에서, 본 발명의 실시예에 따른 제1 메모리 어레이(MArr1) 및 제2 메모리 어레이(MArr2)는 각 플레인(Mat1~Matn)에 구비된다. 그리고, 각 플레인의 제1 메모리 어레이(MArr1)는 각각, 동일한 플레인에 포함되는 제2 메모리 어레이(MArr2)에 대한 캐시 메모리로 기능한다. 예를 들어, 제1 플레인(Mat1)의 제1 메모리 어레이(MArr1)의 페이지(PAG1)은 제1 플레인(Mat1)의 제2 메모리 어레이(Marr2)의 페이지(PAG2)에 대응될 수 있다. 도 17a와 같이 동일한 플레인의 메모리 어레이에 대한 캐싱 방식을 인트라-매트 캐싱(intra-mat caching)이라 할 수 있다.
반면, 도 17b를 참조하면, 각 플레인의 제1 메모리 어레이(MArr1)는 동일한 플레인에 포함되는 제2 메모리 어레이(MArr2)에 대한 캐시 메모리로 기능할 수 있음과 함께, 다른 플레인의 제2 메모리 어레이(MArr2)에 대한 캐시 메모리로도 기능할 수 있다. 예를 들어, 제n 플레인(Matn)의 제1 메모리 어레이(MArr1)의 페이지(PAG1)은 제n 플레인(Matn)의 제2 메모리 어레이(Marr2)의 페이지(PAG2)에 대응될 수도 있고, 제1 플레인(Mat1)의 제2 메모리 어레이(Marr2)의 페이지(PAG2)에 대응될 수도 있다. 도 17b에 도시된, 다른 매트의 메모리 어레이에 대한 캐싱 방식을 인터-매트 캐싱(inter-mat caching)이라 할 수 있다.
도 17c는 동일한 플레인에 각각 제1 메모리 어레이(MArr1) 및 제2 메모리 어레이(MArr2)를 구비하는 다수의 블록이 포함된 메모리(MEM)의 예를 도시한다. 전술한 바와 같이, 제1 메모리 어레이(MArr1)는 제2 메모리 어레이(MArr2)에 대한 캐시 메모리일 수 있고, 도 17c는 각 메인 블록들에 캐시 메모리가 포함되는 예를 도시한다.
도 17c의 실선은, 각 블록의 제1 메모리 어레이(MArr1)가 각각, 동일 블록에 포함되는 제2 메모리 어레이(MArr2)에 대한 캐시 메모리로 기능함을 나타낸다. 예를 들어, 동일한 블록의 제1 메모리 어레이(MArr1)의 페이지(PAG1)은 동일한 제2 메모리 어레이(Marr2)의 페이지(PAG2)에 대응될 수 있다. 이와 같이 동일한 블록의 메모리 어레이에 대한 캐싱 방식을 인트라-블록 캐싱(intra-block caching)이라 할 수 있다.
반면, 도 17c의 점선은, 각 블록의 제1 메모리 어레이(MArr1)가 다른 블록에 포함되는 제2 메모리 어레이(MArr2)에 대한 캐시 메모리로 기능할 수 있다. 예를 들어, 제1 블록의 제1 메모리 어레이(MArr1)의 페이지(PAG1)은 제2 블록의 제2 메모리 어레이(Marr2)의 페이지(PAG2)에 대응될 수 있다. 이와 같이 상이한 블록의 메모리 어레이에 대한 캐싱 방식을 인터- 블록 캐싱(inter-block caching)이라 할 수 있다.
도 18을 참조하면, 본 발명의 실시예에 따른 메모리(MEM)에 포함되는 제1 메모리 어레이(MArr1) 및 제2 메모리 어레이(MArr2)는 서로 다른 레이어에 위치할 수 있다. 예를 들어, 제1 메모리 어레이(MArr1)는 제1 레이어(Layer1)에 위치하고, 제2 메모리 어레이(MArr2)는 제2 레이어(Layer2)에 위치할 수 있다. 다만, 이에 한정되는 것은 아니다. 도 18과 달이, 본 발명의 실시예에 따른 메모리(MEM)에 포함되는 제1 메모리 어레이(MArr1)는 제2 레이어(Layer2)에 위치하고, 제2 메모리 어레이(MArr2)는 제1 레이어(Layer1)에 위치할 수도 있다.
도 19a 내지 도 19e를 참조하면, 본 발명의 실시예에 따른 메모리(MEM)에 포함되는 제1 메모리 어레이(MArr1) 및 제2 메모리 어레이(MArr2)는 버티컬 낸드(Vertical NAND) 플래시 메모리(VND)일 수 있다. Vertical NAND 플래시 메모리(VNAD)인 제1 메모리 어레이(MArr1) 및 제2 메모리 어레이(MArr2)는 도 19a와 같이, 제1 메모리 어레이(Marr1)가 탑(top)에 위치하거나 도 19b와 같이 제2 메모리 어레이(MArr2)가 탑에 위치할 수 있다. 또한, 제1 메모리 어레이(MArr1) 및 제2 메모리 어레이(MArr2)는 도 19c와 같이 섞여 적층될 수 있다(intermingled). 전술한 바와 같이, 제1 메모리 어레이(MArr1)는 캐시 메모리이고 제2 메모리 어레이(MArr2)는 메인 메모리일 수 있다.
도 19a 내지 도 19c는 동일한 풋프린티드(footprinted) 영역에 레이어를 달리하는 예를 도시하였다. 반면, 본 발명의 실시예에 따른 Vertical NAND 플래시 메모리(VNAD)인 제1 메모리 어레이(MArr1) 및 제2 메모리 어레이(MArr2)는 도 19d 및 도 19e와 같이, 서로 다른 풋프린티드 영역에 구비될 수 있다. 도 19d는 제1 메모리 어레이(MArr1)의 제1 영역(ARE1)이 서로 다른 풋프린티드 영역에 위치하는 제2 메모리 어레이(MArr2)의 제2 영역(ARE2) 대한 캐싱 동작을 수행함에 있어, 제1 영역(ARE1) 및 제2 영역(ARE2)이 동일한 레이어에 위치하는 예를 도시한다. 반면, 도 19e는 제1 메모리 어레이(MArr1)의 제1 영역(ARE1)이 서로 다른 풋프린티드 영역에 위치하는 제2 메모리 어레이(MArr2)의 제2 영역(ARE2) 대한 캐싱 동작을 수행함에 있어, 제1 영역(ARE1) 및 제2 영역(ARE2)이 서로 다른 레이어에 위치하는 예를 도시한다.
CTF(Charge Trap Flash) 기반의 Vertical NAND의 경우, P/E 사이클로부터의 산포 열화가 적다. 따라서, 제1 메모리 어레이(MArr1)의 빈번한 프로그램 및 독출에 의하여도 제1 메모리 어레이(MArr1)의 산포 열화가 낮아, 제1 메모리 어레이(MArr1)에 대한 데이터를 상대적으로 낮은 비트의 에러 정정 능력을 갖는 방식으로 에러 검출 및 정정을 수행하더라도, 데이터의 신뢰성 문제가 발생되지 않을 수 있다. 또한, 낮은 비트의 에러 정정 능력을 갖는 방식으로 에러 검출 및 정정을 수행함으로써, 에러 검출 및 정정의 속도를 향상시킬 수 있고, 에러 검출 및 정정을 위한 로직의 레이아웃 면적을 줄일 수 있다.
도 20은 본 발명의 실시예에 따른 컴퓨팅 시스템 장치를 나타내는 블럭도이다.
본 발명의 실시예에 따른 컴퓨팅 시스템(CSYS)은 버스(BUS)에 전기적으로 연결된 프로세서(CPU), 사용자 인터페이스(UI) 및 플래시 메모리 시스템(MSYS)을 구비한다. 플래시 메모리 시스템(MSYS)은 메모리 컨트롤러(Ctrl) 및 플래시 메모리(MEM)를 포함한다. 플래시 메모리(MEM)에는 프로세서(CPU)에 의해서 처리된 또는 처리될 N-비트 데이터(N은 1 또는 그 보다 큰 정수)가, 메모리 컨트롤러(Ctrl)를 통해, 저장될 것이다. 도 20의 플래시 메모리(MEM)는 도 3 등의 플래시 메모리 와 같을 수 있다. 따라서, 컴퓨팅 시스템(CSYS)에 의하면, 최적화된 에러 검출 및 정정 동작을 수행할 수 있다.
본 발명의 실시예에 따른 컴퓨팅 시스템(CSYS)는 파워 공급 장치(PS)를 더 구비할 수 있다. 또한, 본 발명의 실시예에 따른 컴퓨팅 시스템(CSYS)은 휘발성 메모리 장치(예를 들어, RAM)을 더 구비할 수 있다.
본 발명의 실시예에 따른 컴퓨팅 시스템(CSYS)이 모바일 장치인 경우, 컴퓨팅 시스템의 동작 전압을 공급하기 위한 배터리 및 베이스밴드 칩셋(baseband chipset)과 같은 모뎀이 추가적으로 제공될 수 있다. 또한, 본 발명의 실시예에 따른 컴퓨팅 시스템(CSYS)에는 응용 칩셋(application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명한 사항인 바, 더 자세한 설명은 생략한다.
도 21은 본 발명의 실시예에 따른 메모리 카드를 나타내는 블럭도이다.
도 21을 참조하면, 본 발명의 실시예에 따른 메모리 카드(MCRD)는, 메모리 컨트롤러(Ctrl) 및 플래시 메모리(MEM)를 구비한다. 메모리 컨트롤러(Ctrl)는 입출력 수단(I/O)를 통해 수신되는 외부의 호스트(미도시)의 요청에 응답하여 플래시 메모리(MEM)로의 데이터 기입 또는 플래시 메모리(MEM)로부터의 데이터 리드를 제어한다. 또한, 메모리 컨트롤러(Ctrl)는 플래시 메모리(MEM)에 대한 소거 동작을 제어한다. 본 발명의 실시예에 따른 메모리 카드(MCRD)의 메모리 컨트롤러(Ctrl)는 상기와 같은 제어 동작을 수행하기 위해, 각각 호스트 및 메모리 장치와의 인터페이스를 수행하는 인터페이스부들(미도시), 및 램(RAM) 등을 구비할 수 있다. 본 발명의 실시예에 따른 메모리 카드(MCRD)의 플래시 메모리(MEM)는 도 3 등의 플래시 메모리(MEM)로 구현될 수 있다.
도 21의 메모리 카드(MCRD)는 컴팩트 플래시 카드(CFC: Compact Flash Card), 마이크로 드라이브(Microdrive), 스마트 미디어 카드(SMC: Smart Media Card) 멀티미디어 카드(MMC: Multimedia Card), 보안 디지털 카드(SDC: Security Digital Card), 메모리 스틱(Memory Stick), 및 USB 플래시 메모리 드라이버 등으로 구현될 수 있다. 따라서, 도 21의 메모리 카드(MCRD)에 의하면, 최적화된 에러 검출 및 정정 동작을 수행할 수 있다.
도 22는 본 발명의 실시예에 따른 솔리드 스테이트 드라이브(SSD: Solid State Drive)를 나타내는 도면이다.
도 22를 참조하면, 본 발명의 실시예에 따른 SSD는 SSD 컨트롤러(SCTL) 및 플래시 메모리(MEM)를 포함한다. SSD 컨트롤러(SCTL)는 버스(BUS)로 연결되는 프로세서(PROS), 램(RAM), 캐쉬 버퍼(CBUF) 및 메모리 컨트롤러(Ctrl)를 구비할 수 있다. 프로세서(PROS)는 호스트(미도시)의 요청(명령, 어드레스, 데이터)에 응답하여 메모리 컨트롤러(Ctrl)가 플래시 메모리(MEM)와 데이터를 송수신하도록 제어한다. 본 발명의 실시예에 따른 SSD의 프로세서(PROS) 및 메모리 컨트롤러(Ctrl)는 하나의 ARM 프로세서로 구현될 수도 있다. 프로세서(PROS)의 동작에 필요한 데이터는 램(RAM)에 로딩될 수 있다.
호스트 인터페이스(HOST I/F)는 호스트의 요청을 수신하여 프로세서(PROS)로 전송하거나, 플래시 메모리(MEM)로부터 전송된 데이터를 호스트로 전송한다. 호스트 인터페이스(HOST I/F)는 USB(Universal Serial Bus), MMC(Man Machine Communication), PCI-E(Peripheral Component Interconnect-Express), SATA(Serial Advanced Technology Attachment), PATA(Parallel Advanced Technology Attachment), SCSI(Small Computer System Interface), ESDI(Enhanced Small Device Interface), 그리고 IDE(Intelligent Drive Electronics) 등과 같은 다양한 인터페이스 프로토콜로, 호스트와 인터페이스 할 수 있다. 플래시 메모리(MEM)로 전송하고자 하거나, 플래시 메모리(MEM)로부터 전송된 데이터는 캐쉬 버퍼(CBUF)에 임시로 저장될 수 있다. 캐쉬 버퍼(CBUF)는 SRAM 등일 수 있다.
본 발명의 실시예에 따른 SSD는 도 3 등의 플래시 메모리(MEM)를 포함할 수 있다. 따라서, 도 22의 SSD에 의하면, 최적화된 에러 검출 및 정정 동작을 수행할 수 있다.
도 23은 SSD를 포함하는 서버 시스템 및 네트워크 시스템을 나타내는 도면이다.
도 23을 참조하면, 본 발명의 실시예에 따른 네트워크 시스템(NSYS)은 네트워크를 통해 연결되는 서버 시스템(SSYS) 및 다수의 단말들(TEM1~TEMn)을 포함할 수 있다. 본 발명의 실시예에 따른 서버 시스템(SSYS)은 네트워크에 연결되는 다수의 단말들(TEM1~TEMn)로부터 수신되는 요청을 처리하는 서버(SERVER) 및 단말들(TEM1~TEMn)로부터 수신되는 요청에 대응되는 데이터를 저장하는 SSD를 포함하는 구비할 수 있다. 이때, 도 23의 SSD는 도 22의 SSD일 수 있다. 즉, 도 23의 SSD는 SSD 컨트롤러(SCTL) 및 플래시 메모리(MEM)를 포함하고, 플래시 메모리(MEM)는 도 1 등의 에러 검출 및 정정을 수행하는 플래시 메모리일 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (10)

  1. 제1 메모리 어레이;
    상기 제1 메모리 어레이와 상이한 제2 메모리 어레이; 및
    제1 데이터 및 상기 제1 데이터를 제1 방식에 따라 인코딩하여 획득한 제1 인코딩 데이터를 상기 제1 메모리 어레이에 저장하고,
    상기 제1 데이터와 상기 제1 인코딩 데이터를 상기 제1 방식에 따라 디코딩하여 획득한 제1 디코딩 데이터와 비교하고,
    상기 제1 데이터와 상기 제1 디코딩 데이터가 상이한 경우, 에러 정정된 제1 데이터를 제2 데이터로 출력하고,
    상기 제2 데이터 및 상기 제2 데이터를 제2 방식에 따라 인코딩하여 획득한 제2 인코딩 데이터를 상기 제2 메모리 어레이에 저장하고,
    상기 제2 데이터와 상기 제2 인코딩 데이터를 상기 제2 방식에 따라 디코딩하여 획득한 제2 디코딩 데이터와 비교하고,
    상기 제2 데이터와 상기 제2 디코딩 데이터가 상이한 경우, 에러 정정된 제2 데이터를 독출 데이터로 출력하는 ECC(Error Checking and Correction) 엔진을 구비하고,
    제어 신호의 제1 논리 레벨에 응답하여, 상기 제1 방식은 상기 제2 방식보다 에러 정정 능력이 낮은 방식으로 설정되는 것을 특징으로 하는 메모리 시스템.
  2. 제1 항에 있어서,
    상기 제1 방식은 상기 데이터에 포함되는 n(n은 자연수)개의 비트의 에러를 정정할 수 있는 에러 검출 및 정정 방식이고,
    상기 제2 방식은 상기 데이터에 포함되는 m(m은 n보다 큰 자연수)개의 비트의 에러를 정정할 수 있는 에러 검출 및 정정 방식인 것을 특징으로 하는 메모리 시스템.
  3. 제1 항에 있어서, 상기 ECC 엔진은,
    상기 제1 메모리 어레이의 데이터 저장 및 독출에 대한 상기 제1 방식으로 에러 검출 및 정정을 수행하는 제1 서브 엔진; 및
    상기 제2 메모리 어레이의 데이터 저장 및 독출에 대한 상기 제2 방식으로 에러 검출 및 정정을 수행하는 제2 서브 엔진을 구비하는 것을 특징으로 하는 메모리 시스템.
  4. 제3 항에 있어서,
    상기 제2 서브 엔진이 상기 제2 메모리 어레이로 저장되는 제1 데이터에 대한 상기 제2 방식의 ECC 인코딩을 수행하거나 상기 제2 메모리 어레이로부터 독출되는 상기 제1 데이터에 대한 상기 제2 방식의 ECC 디코딩을 수행하는 동안,
    상기 제1 서브 엔진이 상기 제1 메모리 어레이로 저장되는 제2 데이터에 대한 상기 제1 방식의 ECC 인코딩을 수행하거나 상기 제1 메모리 어레이로부터 독출되는 상기 제2 데이터에 대한 상기 제1 방식의 ECC 디코딩을 수행하는 것을 특징으로 하는 메모리 시스템.
  5. 제1 항에 있어서,
    상기 메모리 시스템은 메모리 컨트롤러 및 메모리를 구비하고,
    상기 ECC 엔진은,
    상기 메모리 컨트롤러에 구비되고, 상기 제1 메모리 어레이의 데이터에 대한 상기 제1 방식의 ECC 인코딩 및 상기 제2 메모리 어레이의 데이터에 대한 상기 제2 방식의 ECC 디코딩을 수행하는 외부 ECC 엔진; 및
    상기 메모리에 구비되고, 상기 제1 메모리 어레이의 데이터에 대한 상기 제1 방식의 ECC 디코딩 및 상기 제2 메모리 어레이의 데이터에 대한 상기 제2 방식의 ECC 인코딩을 수행하는 내부 ECC 엔진을 포함하는 것을 특징으로 하는 메모리 시스템.
  6. 제5 항에 있어서,
    상기 내부 ECC 엔진의 디자인 복잡도(design complexity)가 상기 외부 ECC 엔진의 복잡도보다 낮은 것을 특징으로 하는 메모리 시스템.
  7. 제1 항에 있어서, 상기 제어 신호는,
    상기 제1 메모리 어레이의 열화 상태가 기준 값보다 작은 경우에 상기 제1 논리 레벨로 생성되고,
    상기 제어 신호의 제1 논리 레벨은,
    상기 데이터에 대한 어드레스 또는 상기 데이터가 상기 제1 메모리 어레이 및 상기 제2 메모리 어레이 중 어느 메모리 어레이에 프로그램 되는지를 알리는 플래그(flag)에 대응되는 것을 특징으로 하는 메모리 시스템.
  8. 제7 항에 있어서, 상기 제1 메모리 어레이의 상기 열화 상태는,
    상기 제1 메모리 어레이에 대한 P/E 사이클(program/erase cycle), 리텐션 타임(retention time) 또는 비트 오류율(bit error rate)로 판단되는 것을 특징으로 하는 메모리 시스템.
  9. 제1 항에 있어서,
    상기 제1 메모리 어레이 및 상기 제2 메모리 어레이는,
    버티컬 낸드(Vertical NAND)인 것을 특징으로 하는 메모리 시스템.
  10. 낸드 플래시 메모리 장치에 있어서,
    제1 메모리 어레이;
    상기 제1 메모리 어레이와 상이한 제2 메모리 어레이; 및
    제1 데이터 및 상기 제1 데이터를 제1 방식에 따라 인코딩하여 획득한 제1 인코딩 데이터를 상기 제1 메모리 어레이에 저장하고,
    상기 제1 데이터와 상기 제1 인코딩 데이터를 상기 제1 방식에 따라 디코딩하여 획득한 제1 디코딩 데이터와 비교하고,
    상기 제1 데이터와 상기 제1 디코딩 데이터가 상이한 경우, 에러 정정된 제1 데이터를 제2 데이터로 출력하고,
    상기 제2 데이터 및 상기 제2 데이터를 제2 방식에 따라 인코딩하여 획득한 제2 인코딩 데이터를 상기 제2 메모리 어레이에 저장하고,
    상기 제2 데이터와 상기 제2 인코딩 데이터를 상기 제2 방식에 따라 디코딩하여 획득한 제2 디코딩 데이터와 비교하고,
    상기 제2 데이터와 상기 제2 디코딩 데이터가 상이한 경우, 에러 정정된 제2 데이터를 독출 데이터로 출력하는 내부 ECC 엔진을 구비하고,
    상기 제1 방식은 상기 제2 방식보다 에러 정정 능력이 낮은 방식으로 설정되는 것을 특징으로 하는 낸드 플래시 메모리 장치.
KR1020120009207A 2012-01-30 2012-01-30 메모리, 메모리 시스템, 및 메모리에 대한 에러 검출/정정 방법 KR101990971B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120009207A KR101990971B1 (ko) 2012-01-30 2012-01-30 메모리, 메모리 시스템, 및 메모리에 대한 에러 검출/정정 방법
US13/648,421 US9136872B2 (en) 2012-01-30 2012-10-10 Memory, memory system, and error checking and correcting method for memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120009207A KR101990971B1 (ko) 2012-01-30 2012-01-30 메모리, 메모리 시스템, 및 메모리에 대한 에러 검출/정정 방법

Publications (2)

Publication Number Publication Date
KR20130087935A KR20130087935A (ko) 2013-08-07
KR101990971B1 true KR101990971B1 (ko) 2019-06-19

Family

ID=48871404

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120009207A KR101990971B1 (ko) 2012-01-30 2012-01-30 메모리, 메모리 시스템, 및 메모리에 대한 에러 검출/정정 방법

Country Status (2)

Country Link
US (1) US9136872B2 (ko)
KR (1) KR101990971B1 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9587576B2 (en) * 2013-03-27 2017-03-07 Ford Global Technologies, Llc Methods and system for improving vehicle operation
US9275740B2 (en) * 2013-08-05 2016-03-01 CNEXLABS, Inc. Method and apparatus for improving data integrity using threshold voltage recalibration
KR102127287B1 (ko) 2014-02-11 2020-06-26 삼성전자주식회사 메모리 컨트롤러 및 메모리 컨트롤러가 불휘발성 메모리로부터 데이터를 읽는 데이터 읽기 방법
KR101628925B1 (ko) * 2014-06-17 2016-06-10 고려대학교 산학협력단 메모리 시스템 및 메모리 시스템의 동작 방법
US9430326B2 (en) 2014-07-22 2016-08-30 HGST Netherlands B.V. Multiple ECC codeword sizes in an SSD
US9558065B2 (en) * 2015-02-02 2017-01-31 Kabushiki Kaisha Toshiba Memory system including cache
KR102504763B1 (ko) * 2016-02-05 2023-03-02 에스케이하이닉스 주식회사 데이터 저장 장치
KR102466239B1 (ko) * 2016-04-05 2022-11-14 에스케이하이닉스 주식회사 메모리 컨트롤러를 포함하는 메모리 시스템 및 그의 동작 방법
US9922696B1 (en) 2016-10-28 2018-03-20 Samsung Electronics Co., Ltd. Circuits and micro-architecture for a DRAM-based processing unit
KR102410566B1 (ko) * 2018-02-05 2022-06-17 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 반도체 메모리 장치의 동작 방법
US20190042358A1 (en) * 2018-02-06 2019-02-07 Intel Corporation Shared parity check for correcting memory errors
TWI658463B (zh) * 2018-08-23 2019-05-01 群聯電子股份有限公司 資料存取方法、記憶體控制電路單元與記憶體儲存裝置
KR20200073429A (ko) 2018-12-14 2020-06-24 삼성전자주식회사 반도체 소자
US11962928B2 (en) 2018-12-17 2024-04-16 Meta Platforms Technologies, Llc Programmable pixel array
US11888002B2 (en) 2018-12-17 2024-01-30 Meta Platforms Technologies, Llc Dynamically programmable image sensor
US11935291B2 (en) 2019-10-30 2024-03-19 Meta Platforms Technologies, Llc Distributed sensor system
US11948089B2 (en) 2019-11-07 2024-04-02 Meta Platforms Technologies, Llc Sparse image sensing and processing
US11825228B2 (en) 2020-05-20 2023-11-21 Meta Platforms Technologies, Llc Programmable pixel array having multiple power domains
US11935575B1 (en) * 2020-12-23 2024-03-19 Meta Platforms Technologies, Llc Heterogeneous memory system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000174639A (ja) * 1998-12-10 2000-06-23 Hitachi Ltd 誤り訂正方式
WO2001061706A1 (en) * 2000-02-18 2001-08-23 Invensys Systems, Inc. Fault-tolerant data transfer

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0306211A3 (en) * 1987-09-04 1990-09-26 Digital Equipment Corporation Synchronized twin computer system
JP3192664B2 (ja) 1991-01-22 2001-07-30 株式会社日立製作所 キャッシュメモリシステムおよびキャッシュメモリコントローラ
JP2000020397A (ja) 1998-07-03 2000-01-21 Pfu Ltd キャッシュメモリ制御装置
US7191379B2 (en) * 2003-09-10 2007-03-13 Hewlett-Packard Development Company, L.P. Magnetic memory with error correction coding
US7212440B2 (en) * 2004-12-30 2007-05-01 Sandisk Corporation On-chip data grouping and alignment
US7502921B2 (en) 2005-08-02 2009-03-10 Sandisk Corporation Situation sensitive memory performance
JP2008158779A (ja) 2006-12-22 2008-07-10 Toshiba Corp 情報処理装置、ecc制御装置およびecc制御方法
US7975205B2 (en) 2007-01-26 2011-07-05 Hewlett-Packard Development Company, L.P. Error correction algorithm selection based upon memory organization
US7900118B2 (en) 2007-02-12 2011-03-01 Phison Electronics Corp. Flash memory system and method for controlling the same
US8706145B2 (en) 2007-07-10 2014-04-22 Qualcomm Incorporated Multihop paging of a peer in a peer-to-peer communication network
KR101397549B1 (ko) 2007-08-16 2014-05-26 삼성전자주식회사 고속 프로그램이 가능한 불휘발성 반도체 메모리 시스템 및그것의 독출 방법
KR101466694B1 (ko) 2007-08-28 2014-11-28 삼성전자주식회사 Ecc 회로, ecc 회로를 구비하는 메모리 시스템 및그의 오류 정정 방법
US8443260B2 (en) 2007-12-27 2013-05-14 Sandisk Il Ltd. Error correction in copy back memory operations
US7814300B2 (en) * 2008-04-30 2010-10-12 Freescale Semiconductor, Inc. Configurable pipeline to process an operation at alternate pipeline stages depending on ECC/parity protection mode of memory access
KR101750457B1 (ko) * 2010-12-30 2017-06-23 삼성전자주식회사 Ecc를 이용하는 메모리 장치 및 그 시스템
US8788889B2 (en) * 2011-11-23 2014-07-22 Sandisk Technologies Inc. Bit stream aliasing in memory system with probabilistic decoding

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000174639A (ja) * 1998-12-10 2000-06-23 Hitachi Ltd 誤り訂正方式
WO2001061706A1 (en) * 2000-02-18 2001-08-23 Invensys Systems, Inc. Fault-tolerant data transfer

Also Published As

Publication number Publication date
US9136872B2 (en) 2015-09-15
KR20130087935A (ko) 2013-08-07
US20130198577A1 (en) 2013-08-01

Similar Documents

Publication Publication Date Title
KR101990971B1 (ko) 메모리, 메모리 시스템, 및 메모리에 대한 에러 검출/정정 방법
KR101369444B1 (ko) 정정 불가능한 에러를 해결하는 하이브리드 에러 정정 코딩
US8499217B2 (en) Memory device and error control codes decoding method
US8112689B2 (en) ECC controller for use in flash memory device and memory system including the same
US8938656B2 (en) Data storage device with intermediate ECC stage
US8200607B2 (en) Memory devices and data decision methods
KR101835605B1 (ko) 플래시 메모리 시스템 및 플래시 메모리 시스템의 리드 방법
US9602134B2 (en) Operating method of error correction code decoder and memory controller including the error correction code decoder
US8862967B2 (en) Statistical distribution based variable-bit error correction coding
US9195539B2 (en) Method for reading data from block of flash memory and associated memory device
CN107408069B (zh) 用于检测和缓解闪速存储器中的位线开路的装置和方法
US10824523B2 (en) Data storage device and operating method thereof
US20140149828A1 (en) Solid state drive and joint encoding/decoding method thereof
US9329928B2 (en) Bandwidth optimization in a non-volatile memory system
US20150358036A1 (en) Decoding method, memory storage device and memory control circuit unit
US9870830B1 (en) Optimal multilevel sensing for reading data from a storage medium
US20190026182A1 (en) Methods and apparatuses for error correction
US20170286219A1 (en) Data storage device and operating method thereof
US11106518B2 (en) Failure mode study based error correction
CN109559774B (zh) 解码方法、存储器控制电路单元以及存储器存储装置
US10963340B2 (en) Storing critical data at a memory system
CN110797069B (zh) 电压调整方法、存储器控制电路单元以及存储器存储装置
CN109508252B (zh) 数据编码方法、存储器控制电路单元与存储器存储装置
CN107590018B (zh) 译码方法、存储器控制电路单元及存储器存储装置
US11675530B2 (en) Memory controller, storage device and operating method of memory controller

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant