KR101835605B1 - 플래시 메모리 시스템 및 플래시 메모리 시스템의 리드 방법 - Google Patents

플래시 메모리 시스템 및 플래시 메모리 시스템의 리드 방법 Download PDF

Info

Publication number
KR101835605B1
KR101835605B1 KR1020110123662A KR20110123662A KR101835605B1 KR 101835605 B1 KR101835605 B1 KR 101835605B1 KR 1020110123662 A KR1020110123662 A KR 1020110123662A KR 20110123662 A KR20110123662 A KR 20110123662A KR 101835605 B1 KR101835605 B1 KR 101835605B1
Authority
KR
South Korea
Prior art keywords
read
data
ecc
flash memory
latch
Prior art date
Application number
KR1020110123662A
Other languages
English (en)
Other versions
KR20130057758A (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 KR1020110123662A priority Critical patent/KR101835605B1/ko
Priority to US13/656,849 priority patent/US8850292B2/en
Publication of KR20130057758A publication Critical patent/KR20130057758A/ko
Application granted granted Critical
Publication of KR101835605B1 publication Critical patent/KR101835605B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • 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/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • 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/63Joint error correction and other techniques
    • H03M13/6306Error control coding in combination with Automatic Repeat reQuest [ARQ] and diversity transmission, e.g. coding schemes for the multiple transmission of the same information or the transmission of incremental redundancy
    • 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)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명의 실시예에 따른 메모리 시스템에서의 리드 방법은 리드 리트라이 테이블(read retry table)의 인덱스(index) 중 제1 인덱스에 포함된 리드 레벨(read level)로 리드(read)한 제1 데이터를, 래치들 중 제1 래치를 거쳐 제2 래치로 전송하는 단계; 상기 리드 리트라이 테이블의 인덱스 중 제2 인덱스에 포함된 리드 레벨로 리드한 제2 데이터를 상기 제1 래치로 전송하는 동안, 상기 제2 래치에 전송된 상기 제1 데이터에 대한 ECC 디코딩(Error Check and Correction Decoding)을 수행하는 단계; 상기 제1 래치의 상기 제2 데이터를 상기 제2 래치로 전송하고, 상기 제2 래치에 전송된 상기 제2 데이터에 대한 ECC 디코딩을 수행하는 단계; 및 상기 제1 데이터의 ECC 디코딩 결과 및 상기 제2 데이터의 디코딩 결과를 비교하여, 상기 제1 데이터를 리드한 리드 레벨 및 상기 제2 데이터를 리드한 리드 레벨 중 하나의 리드 레벨에서 소프트 디시젼(Soft Decision)을 수행하는 단계를 구비한다.

Description

플래시 메모리 시스템 및 플래시 메모리 시스템의 리드 방법{Flash memory device and reading method of flash memory device}
본 발명은 플래시 메모리 시스템 및 플래시 메모리 시스템에서의 리드 방법에 관한 것으로, 특히 리드 에러를 신속하게 정정하여 리드의 신뢰성을 향상시킬 수 있는 플래시 메모리 시스템 및 플래시 메모리 시스템에서의 리드 방법에 관한 것이다.
플래시 메모리 시스템은 고집적화의 요구에 따라 스케일링 다운(scaling down)되고, 각 메모리 셀에 저장되는 비트의 수가 증가되고 있다. 따라서, 각 프로그램 스테이트(program state)들 사이의 리드 마진이 줄어들고 있다. 따라서, 리드 에러(read error)의 발생이 빈번하다. 따라서, 리드 에러를 정확하고 빠르게 수행하기 위한 방안들이 논의되고 있다.
본 발명이 이루고자 하는 기술적 과제는 리드 에러를 빠르고 정확하게 정정하여 시스템의 오버헤드를 줄이고, 리드의 신뢰성을 향상시킬 수 있는 플래시 메모리 시스템 및 플래시 메모리 시스템에서의 리드 방법을 제공하는 것에 있다.
본 발명의 실시예에 따른 다수의 래치들을 포함하는 버퍼부를 구비하는 낸드 플래시 메모리 및 상기 낸드 플래시 메모리로의 리드를 제어하는 메모리 컨트롤러를 구비하는 메모리 시스템에서의 리드 방법에 있어서, 리드 리트라이 테이블(read retry table)의 인덱스(index) 중 제1 인덱스에 포함된 리드 레벨(read level)로 리드(read)한 제1 데이터를, 상기 래치들 중 제1 래치를 거쳐 제2 래치로 전송하는 단계; 상기 리드 리트라이 테이블의 인덱스 중 제2 인덱스에 포함된 리드 레벨로 리드한 제2 데이터를 상기 제1 래치로 전송하는 동안, 상기 제2 래치에 전송된 상기 제1 데이터에 대한 ECC 디코딩(Error Check and Correction Decoding)을 수행하는 단계; 상기 제1 래치의 상기 제2 데이터를 상기 제2 래치로 전송하고, 상기 제2 래치에 전송된 상기 제2 데이터에 대한 ECC 디코딩을 수행하는 단계; 및 상기 제1 데이터의 ECC 디코딩 결과 및 상기 제2 데이터의 디코딩 결과를 비교하여, 상기 제1 데이터를 리드한 리드 레벨 및 상기 제2 데이터를 리드한 리드 레벨 중 하나의 리드 레벨에서 소프트 디시젼(Soft Decision)을 수행하는 단계를 구비한다.
상기 제1 데이터의 ECC 디코딩 결과 및 상기 제2 데이터의 디코딩 결과는 각각, 상기 제1 데이터에 대한 ECC 디코딩에 의해 상기 제1 데이터에서 정정된 ECC 섹터의 개수 및 상기 제2 데이터에 대한 ECC 디코딩에 의해 상기 제2 데이터에서 정정된 ECC 섹터의 개수일 수 있다.
상기 제1 데이터를 리드한 리드 레벨 및 상기 제2 데이터를 리드한 리드 레벨 중 하나의 리드 레벨에서 소프트 디시젼을 수행하는 단계는, 상기 제1 데이터 및 상기 제2 데이터 중 정정된 ECC 섹터의 개수가 많은 데이터를 리드한 리드 레벨에서 소프트 디시젼을 수행할 수 있다.
상기 제1 데이터를 리드한 리드 레벨 및 상기 제2 데이터를 리드한 리드 레벨 중 하나의 리드 레벨에서 소프트 디시젼을 수행하는 단계는, 상기 제1 데이터에서 정정된 ECC 섹터의 개수 및 상기 제2 데이터에서 정정된 ECC 섹터의 개수가 동일한 경우, 상기 제1 데이터 및 상기 제2 데이터 중 평균 반복 횟수가 적은 데이터를 리드한 리드 레벨에서 소프트 디시젼을 수행할 수 있다.
상기 제1 데이터에 대한 ECC 디코딩 및 상기 제2 데이터에 대한 ECC 디코딩은 각각, 상기 제1 데이터의 모든 필드(field)들 및 상기 제2 데이터의 모든 필드들에 대해 수행될 수 있다.
상기 리드 리트라이 테이블의 나머지 인덱스의 리드 레벨로 리드한 데이터들에 대한 ECC 디코딩을 수행하는 단계; 및 상기 제1 데이터의 ECC 디코딩 결과 및 상기 제2 데이터의 디코딩 결과, 및 상기 리드 리트라이 테이블의 나머지 인덱스의 리드 레벨로 리드한 데이터들에 대한 ECC 디코딩 결과에 따라 선택된 리드 레벨에서 상기 소프트 디시젼을 수행하는 단계를 더 구비할 수 있다.
상기 리드 리트라이 테이블의 나머지 인덱스의 리드 레벨로 리드한 데이터들에 대한 ECC 디코딩을 수행하는 단계는, 상기 데이터들 중 하나의 데이터를 상기 제1 래치에 전송하는 동안, 상기 제1 래치를 거쳐 상기 제2 래치에 저장되어 있는 데이터에 대한 ECC 디코딩을 수행할 수 있다.
상기 리드 방법은, 이니셜 리드(initial read)에서의 리드 에러가 리드 리트라이(read retry)에 의해서도 정정되지 아니하는 경우에 수행될 수 있다.
상기 플래시 메모리의 블록들 각각을 인덱스로 하는 마모도 테이블(wear-out table)을 참조하여, 상기 리드 리트라이 테이블의 인덱스 중 하나에 포함된 리드 레벨을, 상기 리드 리트라이를 시작하는 리드 레벨로 설정하는 단계; 및 상기 리드 리트라이를 시작하는 리드 레벨에서부터 상기 리드 리트라이 테이블의 마지막 인덱스의 마지막 리드 레벨까지의 리드 레벨로, 상기 리드 리트라이를 반복할 수 있다.
상기 리드 리트라이 테이블은, 상기 플래시 메모리의 인듀어런스(endurance) 상태 구간마다 달리 구비되는 리드 리트라이 테이블들 중 하나일 수 있다.
상기 마모도 테이블은, 상기 메모리 컨트롤러부터 전송되는 제1 명령에 응답하여 상기 플래시 메모리로부터 검출되는 상태 정보에 근거하여, 상기 플래시 메모리의 제1 블록에 대한 마모도 정보를 업데이트할 수 있다.
상기 플래시 메모리의 제1 블록에 대한 리드 리트라이의 현재 요청에서 상기 리드 리트라이를 시작하는 리드 레벨은, 상기 제1 블록에 대한 리드 리트라이의 이전 요청에서 상기 리드 에러를 정정한 리드 레벨일 수 있다.
상기 리드 리트라이 테이블의 인덱스 중 상기 리드 리트라이의 이전 요청에서 상기 리드 에러를 정정한 리드 레벨을 포함하는 인덱스에 대한 정보는, 상기 마모도 테이블의 상기 제1 블록에 대응되는 인덱스에 포함될 수 있다.
상기 제1 명령은 이레이즈 명령이고, 상기 플래시 메모리는, 상기 이레이즈 명령에 응답하여 상기 선택 블록이 이레이즈 되는데 소요되는 ISPE 루프 카운트(Incremental Step Pulse Erase Loop Count) 값을 상기 선택 블록에 대한 마모도로, 상기 메모리 컨트롤러로 전송할 수 있다.
상기 기술적 과제를 해결하기 위한 본 발명의 실시예에 따른 솔리드 스테이트 드라이브(Solid State Drive)는 상기 리드 방법으로 리드 동작을 수행한다.
본 발명의 실시예에 따른 플래시 메모리 시스템 및 플래시 메모리 시스템에서의 리드 방법에 의하면, 최적의 리드 리트라이 레벨을 기준으로 소프트 디시젼을 수행함으로써, 고집적화에 따른 리드의 신뢰성 및 속도 저하를 방지할 수 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 실시예에 따른 플래시 메모리 시스템에서의 리드 방법을 나타내는 순서도이다.
도 2는 본 발명의 실시예에 따른 플래시 메모리 시스템을 나타내는 블록도이다.
도 3a 및 도 3b는 도 2의 플래시 메모리의 메모리 셀 어레이를 나타내는 도면이다.
도 4는 도 2의 플래시 메모리의 메모리 셀의 산포를 나타내는 도면이다.
도 5는 리드 에러의 일 예를 나타내는 도면이다.
도 6은 리드 리트라이 테이블의 일 예를 나타내는 도면이다.
도 7은 리드 리트라이 동작의 일 예를 나타내는 도면이다.
도 8은 도 1의 리드 방법이 수행되는 시점에 대한 일 예를 나타내는 도면이다.
도 9는 도 2의 버퍼에서의 데이터 흐름을 나타내는 도면이다.
도 10은 도 1의 리드 방법에서 ECC 디코딩이 수행되는 방법을 나타내는 도면이다.
도 11 및 도 12는 도 1의 리드 방법을 구체적으로 나타내는 도면이다.
도 13은 도 11과 다른 예를 나타내는 도면이다.
도 14 내지 도 16은 각각, 본 발명의 실시예에 따른 리드 리트라이가 시작하는 리드 레벨의 설정에 대한 설명을 위한 도면이다.
도 17은 본 발명의 실시예에 따른 컴퓨팅 시스템 장치를 나타내는 블럭도이다.
도 18은 본 발명의 실시예에 따른 메모리 카드를 나타내는 블럭도이다.
도 19는 본 발명의 실시예에 따른 솔리드 스테이트 드라이브(SSD: Solid State Drive)를 나타내는 도면이다.
도 20은 SSD를 포함하는 서버 시스템 및 네트워크 시스템을 나타내는 도면이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다.
본 발명의 실시예들은 당해 기술 분야에서 통상의 지식을 가진 자에게 본 발명을 더욱 완전하게 설명하기 위하여 제공되는 것이며, 아래의 실시예들은 여러 가지 다른 형태로 변형될 수 있으며, 본 발명의 범위가 아래의 실시예들로 한정되는 것은 아니다. 오히려, 이들 실시예는 본 개시를 더욱 충실하고 완전하게 하며 당업자에게 본 발명의 사상을 완전하게 전달하기 위하여 제공되는 것이다.
본 명세서에서 사용된 용어는 특정 실시예를 설명하기 위하여 사용되며, 본 발명을 제한하기 위한 것이 아니다. 본 명세서에서 사용된 바와 같이 단수 형태는 문맥상 다른 경우를 분명히 지적하는 것이 아니라면, 복수의 형태를 포함할 수 있다. 또한, 본 명세서에서 사용되는 경우 “포함한다(comprise)” 및/또는 “포함하는(comprising)”은 언급한 형상들, 숫자, 단계, 동작, 부재, 요소 및/또는 이들 그룹의 존재를 특정하는 것이며, 하나 이상의 다른 형상, 숫자, 동작, 부재, 요소 및/또는 그룹들의 존재 또는 부가를 배제하는 것이 아니다. 본 명세서에서 사용된 바와 같이, 용어 “및/또는”은 해당 열거된 항목 중 어느 하나 및 하나 이상의 모든 조합을 포함한다.
본 명세서에서 제1, 제2 등의 용어가 다양한 부재, 영역 및/또는 부위들을 설명하기 위하여 사용되지만, 이들 부재, 부품, 영역, 층들 및/또는 부위들은 이들 용어에 의해 한정되어서는 안됨은 자명하다. 이들 용어는 특정 순서나 상하, 또는 우열의 의미하지 않으며, 하나의 부재, 영역 또는 부위를 다른 부재, 영역 또는 부위와 구별하기 위하여만 사용된다. 따라서, 이하 상술할 제1 부재, 영역 또는 부위는 본 발명의 가르침으로부터 벗어나지 않고서도 제2 부재, 영역 또는 부위를 지칭할 수 있다.
이하, 본 발명의 실시예들은 본 발명의 실시예들을 개략적으로 도시하는 도면들을 참조하여 설명한다. 도면들에 있어서, 예를 들면, 제조 기술 및/또는 공차에 따라, 도시된 형상의 변형들이 예상될 수 있다. 따라서, 본 발명의 실시예는 본 명세서에 도시된 영역의 특정 형상에 제한된 것으로 해석되어서는 아니 되며, 예를 들면 제조상 초래되는 형상의 변화를 포함하여야 한다.
도 1은 본 발명의 실시예에 따른 플래시 메모리 시스템에서의 리드(read) 방법을 나타내는 순서도이다.
도 1을 참조하면, 본 발명의 실시예에 따른 리드 방법은, 리드 리트라이 테이블의 인덱스 중 제1 인덱스에 포함된 리드 레벨로 리드한 제1 데이터를, 래치들 중 제1 래치를 거쳐 제2 래치로 전송하는 단계(S120), 리드 리트라이 테이블의 인덱스 중 제2 인덱스에 포함된 리드 레벨로 리드한 제2 데이터를 제1 래치로 전송하는 동안, 제2 래치에 전송된 제1 데이터에 대한 ECC 디코딩을 수행하는 단계(S140), 제1 래치의 제2 데이터를 제2 래치로 전송하고, 제2 래치에 전송된 제2 데이터에 대한 ECC 디코딩을 수행하는 단계(S160) 및 제1 데이터의 ECC 디코딩 결과 및 제2 데이터의 디코딩 결과를 비교하여, 제1 데이터를 리드한 리드 레벨 및 제2 데이터를 리드한 리드 레벨 중 하나의 리드 레벨에서 소프트 디시젼을 수행하는 단계(S180)를 구비한다.
도 2는 본 발명의 실시예에 따른 플래시 메모리 시스템을 나타내는 블록도이다.
도 1 및 도 2를 참조하면, 도 1의 리드 방법은, 도 2의 플래시 메모리 시스템(MSYS)에서의 리드 방법일 수 있다. 도 2의 메모리 시스템(MSYS)은 데이터(DTA)를 저장하는 플래시 메모리(MEM) 및 플래시 메모리(MEM)의 프로그램(program) 또는 리드를 제어하는 메모리 컨트롤러(Ctrl)를 구비할 수 있다.
플래시 메모리(MEM)는 낸드 플래시 메모리일 수 있다. 플래시 메모리(MEM)는 메모리 셀 어레이(MA) 및 버퍼부(BFU)를 구비할 수 있다. 플래시 메모리(MEM)는 그 밖에, 제어 로직(미도시), 입출력부(미도시) 및 전원 생성부(미도시) 등을 더 구비할 수 있으나, 이에 대한 설명은 생략한다. 플래시 메모리(MEM)는 리드 명령(CMD_RD)에 응답하여, 메모리 셀 어레이(MA)에 저장된 데이터(DTA)를 출력한다. 구체적으로, 플래시 메모리(MEM)는 리드 명령(CMD_RD)의 어드레스(Addr)에 대응되는 메모리 셀들(미도시)에 이니셜 리드 전압(initial read voltage, RV0)을 인가하여, 해당 메모리 셀들에 저장된 데이터(DTA)를, 버퍼부(BFU)를 거쳐 메모리 컨트롤러(Ctrl)로 출력된다. 본 발명의 실시예에 따른 버퍼부(BFU)는 다수의 래치들(LAT1~LATn)을 구비한다.
플래시 메모리(MEM)는 또한, 후술되는 리드 리트라이(REDR)의 리드 레벨(RLEV)로 리드되는 데이터(DTA)도, 리드 명령(CMD_RD)의 이니셜 리드 전압(RV0)으로 리드되는 경우와 동일한 방법으로 출력한다. 다만, 도 2는 리드 리트라이(REDR) 및 리드 명령(CMD_RD)을 별개로 도시하였으나, 후술되는 바와 같이, 리드 리트라이(REDR)는 리드 명령(CMD_RD)에서 이니셜 리드 전압(RV0)을 리드 리트라이를 위한 리드 레벨(RLEV)로 변경하는 것일 수 있다. 이에 대한 더 자세한 사항은 후술된다.
본 발명의 실시예에 따른 플래시 메모리(MEM)의 메모리 셀 어레이(MA)는 도 3a에 도시되는 구조로 구비될 수 있다. 메모리 셀 어레이(MA)는 a(a는 2 이상의 정수)개의 블록들(BLK0~BLKa-1)을 구비하고, 각 블록들(BLK0~BLKa-1)은 b(b는 2 이상의 정수)개의 페이지들(PAG0~PAGb-1)을 구비하며, 각 페이지들(PAG0~PAGb-1)은 c(c는 2 이상의 정수)개의 섹터들(SEC0~SECc-1)을 포함할 수 있다. 도 3a에서는 도시의 편의를 위해, 블록 BLK0에 대하여만 페이지들(PAG0~PAGb-1) 및 섹터들(SEC0~SECc-1)을 도시하였으나, 다른 블록들(BLK1~BLKa-1)도 블록 BLK0와 동일한 구조를 가질 수 있다.
그리고, 본 발명의 실시예에 따른 메모리 셀 어레이(MA)가 낸드 플래시(NAND flash) 메모리의 메모리 셀 어레이인 경우, 도 3a의 블록들(BLK0~BLKa-1)은 각각, 도 3b와 같은 예로 구비될 수 있다. 도 3b를 참조하면, 각 블록들(BLK0~BLKa-1)은 비트 라인(BL0~BLd-1) 방향으로, 8개의 메모리 셀(MCEL)들이 직렬로 연결되는 d(d는 2 이상의 정수)개의 스트링(STR)들로 구비될 수 있다. 각 스트링(STR)은 또한, 각각 직렬로 연결되는 메모리 셀(MCEL)들의 양 끝에 연결되는, 드레인(drain) 선택 트랜지스터(Str1) 및 소스(source) 선택 트랜지스터(Str2)를 포함할 수 있다.
도 3b와 같은 구조를 갖는 낸드 플래시 메모리 장치는 블록 단위로 이레이즈가 수행되고, 각 워드 라인(WL0~WL7)에 대응되는 페이지(PAG) 단위로 프로그램을 수행한다. 도 3b는 하나의 블록에 8개의 워드 라인들(WL0~WL7)에 대한 8개의 페이지(PAG)들이 구비되는 예를 도시한다. 다만, 본 발명의 실시예에 따른 메모리 셀 어레이(MA)의 블록들(BLK0~BLKa-1)은 도 3b의 도시되는 메모리 셀(MCEL) 및 페이지(PAG)의 개수와 다른 개수의 메모리 셀 및 페이지를 구비할 수도 있다. 또한, 도 1의 플래시 메모리(MEM)는 이상에서 설명된 메모리 셀 어레이(MA)와 동일한 구조로 동일한 동작을 수행하는 복수개의 메모리 셀 어레이들이 구비될 수도 있다.
도 3b와 같은 구조의 반도체 메모리 장치의 메모리 셀(MCEL)들은 각각, 프로그램 되어 있는 프로그램 데이터의 비트의 개수에 따라, 도 4와 같은 산포 중 하나의 산포에 포함되는 문턱 전압(Vth)을 가질 수 있다. 도 4의 (a)는 메모리 셀(MCEL)들이 각각 하나의 비트로 프로그램 되는 SLC(Single-Level Cell) 플래시 메모리에서의 셀 산포를 나타내고, 도 4의 (b)는 메모리 셀(MCEL)들이 각각 2 비트로 프로그램 되는 2 비트 MLC(Multi-Level Cell) 플래시 메모리에서의 셀 산포를 나타내며, 도 4의 (c)는 메모리 셀(MCEL)들이 각각 3 비트로 프로그램 되는 3 비트 MLC 플래시 메모리에서의 셀 산포를 나타낸다.
SLC 플래시 메모리의 경우, 도 3b의 메모리 셀 어레이(MA)의 메모리 셀(MCEL)들 각각은, 프로그램 된 데이터의 값에 따라, 도 4의 (a)와 같이 이레이즈 상태(E) 및 프로그램 상태(P) 중 하나의 상태에 포함되는 문턱 전압을 갖는다. 또는, 2 비트 MLC 플래시 메모리의 경우, 도 3b의 메모리 셀 어레이(MA)의 메모리 셀(MCEL)들 각각은, 이레이즈 상태(E) 및 제1 프로그램 상태(P1) 내지 제3 프로그램 상태(P3) 중 하나의 상태에 포함되는 문턱 전압을 갖는다. 또는, 3 비트 MLC 플래시 메모리의 경우, 도 3b의 메모리 셀 어레이(MA)의 메모리 셀(MCEL)들 각각은, 이레이즈 상태(E) 및 제1 프로그램 상태(P1) 내지 제7 프로그램 상태(P7) 중 하나의 상태에 포함되는 문턱 전압을 갖는다.
그러나, 이에 한정되는 것은 아니고, 도 3b의 메모리 셀 어레이(MA)의 메모리 셀(MCEL)들 각각은 도 4에는 도시되지 아니하였으나, 4 비트 이상으로 프로그램 될 수 있다. 또한, 도 1의 플래시 메모리(MEM)는 서로 다른 개수의 비트로 프로그램 되는 메모리 셀(MCEL)들을 포함할 수도 있다.
다시 도 2를 참조하면, 메모리 컨트롤러(Ctrl)는 ECC 엔진(Error Check and Correction engine, ECCE) 및 에러 제어부(ECUT)를 구비한다. ECC 엔진(ECCE)은 플래시 메모리(MEM)로부터 리드된 데이터(DTA)에 에러(리드 에러)가 존재하는지를 체크하고 정정한다.
리드 에러는 도 5의 (a)와 같이, 두 개의 셀 산포(S1, S2) 사이의 전압 레벨로 설정된 이니셜 리드 전압(RV0)에 의해 두 개의 셀 산포(S1, S2)가 식별되었던 것이, 플래시 메모리(MEM)의 리드 환경의 변화에 의해 셀 산포가 도 5의 (b)와 같이 이동함에 따라 발생될 수 있다. 리드 환경의 변화는 플래시 메모리의 리텐션(retention) 특성 또는 리드 디스터브(read disturb) 현상 등에 의해 야기될 수 있다. 도 5의 (b)는 제1 셀 산포(S1)가 제2 셀 산포(S2) 방향으로 이동된 예를 보여준다. 도 5의 (b)의 예에서, 이니셜 리드 전압(RV0)으로 리드할 경우, 빗금친 부분은 프로그램 된 데이터와 다른 데이터로 리드되는 리드 에러가 발생할 수 있다.
전술한 바와 같이, ECC 엔진(ECCE)은 이러한 이니셜 리드 전압으로 리드된 데이터에 포함된 리드 에러를 검출하고 정정한다. 예를 들어, ECC 엔진은 데이터(DTA)를 프로그램할 때에 생성되어 저장된 패리티(parity)와 데이터(DTA)를 리드할 때 생성된 패리티를 비교하여, 데이터의 에러 비트(error bit)를 검출하고 검출된 에러 비트를 배타적 논리합(XOR)함으로써 리드 에러를 정정할 수 있다. 그런데, 이와 같은 에러 정정에 의하여도 리드 에러가 정정되지 아니할 수 있다.
에러 제어부(ECUT)는 ECC 엔진(ECCE)의 상기와 같은 에러 정정 동작에 의해서도 정정되지 아니하는 에러에 대해, ECC 엔진(ECCE)으로부터 전송되는 리드 리트라이 요청(RRR)에 응답하여 리드 리트라이의 수행을 제어할 수 있다. 에러 제어부(ECUT)는 도 1의 리드 리트라이 테이블(RTAB)로부터 이니셜 리드 전압(RV0)과 다른 리드 레벨(RLEV)로, 리드 명령(CMD_RD)의 어드레스(Addr)에 프로그램 된 데이터(DTA)에 대한 리드가 재차 수행되도록 제어한다. 도 1은 리드 리트라이(REDR)가 리드 명령(CMD_RD)과 구분되어 도시하고 있으나, 이는 리드 명령과 리드 리트라이의 구분을 개념적으로 나타내기 위한 것에 불과하다. 즉, 리드 리트라이(REDR)는 이니셜 리드 전압(RV0)이 리드 레벨(RLEV)로 변경된 리드 명령(CMD_RD)일 수 있다.
도 6을 참조하면, 리드 리트라이 테이블(RTAB)은 각 인덱스마다 리드 레벨을 포함한다. 또한, 리드 리트라이 테이블(RTAB)의 각 인덱스에는 다수의 리드 레벨을 포함할 수 있는데, 도 6은 일 예로 각 인덱스에 3개의 리드 레벨들(REVL1, REVL2, REVL3)을 포함하는 예를 도시한다. 예를 들어, 도 6의 리드 리트라이 테이블(RTAB)의 인덱스 0은 각각, RV11, RV12 및 RV13의 값의 리드 레벨들(REVL1, REVL2, REVL3)을 포함하고, 인덱스 1은 각각, RV21, RV22 및 RV23의 값의 리드 레벨들(REVL1, REVL2, REVL3)을 포함한다. 이는 MLC 플래시 메모리의 경우 MLC를 판독하는데 다수의 리드 레벨을 요구하기 때문이다. 예를 들어, 도 4의 (b)와 같은 4개의 상태(셀 산포)를 구분하기 위해서는 3개의 서로 다른 리드 레벨의 값들 요구된다.
본 발명의 실시예에 따른 에러 제어부(ECUT)는 리드 에러가 정정될 때까지, 하나의 인덱스의 리드 레벨에서부터 순차적으로, 다음 인덱스의 리드 레벨로 리드 레벨을 변경하여, 리드 리트라이 동작이 수행되도록 제어한다. 예를 들어, 리드 리트라이 테이블(RTAB)의 인덱스 0의 리드 레벨 RV11, RV12 및 RV13로 리드 리트라이를 수행하였으나 에러가 정정되지 아니한 경우 리드 리트라이 테이블(RTAB)의 인덱스 1의 리드 레벨 RV21, RV22 및 RV23로 다시 리드 리트라이가 수행될 수 있다. 그럼에도 에러가 정정되지 아니한 경우, 리드 리트라이 테이블(RTAB)의 인덱스 2의 리드 레벨 RV31, RV32 및 RV33로 다시 리드 리트라이가 수행된다.
도 7을 참조하면, 이니셜 리드 전압(RV0) 중 제1 셀 산포(S1) 및 제2 셀 산포(S2)를 식별하기 위한 제1 이니셜 리드 전압이 RV01이라면, 제1 셀 산포(S1) 및 제2 셀 산포(S2) 사이의 식별(리드)의 에러는, 상기 예에 의할 경우 리드 리트라이 테이블(RTAB)의 인덱스 0의 제1 리드 레벨 RV11 및 리드 리트라이 테이블(RTAB)의 인덱스 1의 제1 리드 레벨 RV21에 의해서 리드 리트라이되는 경우 에러가 여전히 존재한다. 그 다음, 제1 셀 산포(S1) 및 제2 셀 산포(S2)는, 리드 리트라이 테이블(RTAB)의 인덱스 2의 제1 리드 레벨 RV31에 의해 정확하게 리드될 수 있다.
그런데, 리드 리트라이 테이블(RTAB)의 마지막 인덱스 n의 리드 레벨 RVn1, RVn2 및 RVn3에 의하여도 정정되지 아니하는 에러가 존재하는 경우, 도 8에 도시되는 바와 같이 도 1의 단계 S120 내지 S180이 수행될 수 있다. 구체적으로, 본 발명의 실시예에 따른 리드 방법에 의하면, 도 2의 이니셜 리드 전압(RV0)으로 리드 명령(CMD_RD)을 수행하고 이의 에러가 정정되지 아니하는 경우 리드 리트라이가 수행되는데(S820), 그 결과 에러가 정정되면(S840의 YES), 리드 에러의 정정을 완료한다(S860). 반면, 리드 리트라이 테이블(RTAB)의 마지막 인덱스 n의 리드 레벨에 의한 리드 리트라이에도 에러가 정정되지 아니하면(S840의 NO), 도 1의 리드 방법에 의한 소프트 디시젼이 수행된다(S880). 이에 대하여 더 자세히 설명한다.
다시 도 1 및 도 2를 참조하면, 리드 명령(CMD_RD) 또는 리드 리트라이(REDR)에 의해 메모리 셀 어레이(MA)에 프로그램 된 데이터(DTA)는 전술한 바와 같이, 버퍼부(BFU)를 거쳐 리드된다. 버퍼부(BFU)는 다수의 래치들(LAT1~LATn)을 포함할 수 있는데, 그 결과 도 9와 같이 하나의 래치에 데이터를 수신하는 동안 다른 래치로부터 데이터를 출력할 수 있다. 이러한 스킴의 리드 동작을 캐시 리드 리트라이(cache read retry)라고도 한다.
도 9의 (a)를 참조하면, 먼저 제1 데이터(DTA1)가 메모리 셀 어레이(MA)로부터 제1 래치(LAT1)로 전송된다. 도 9의 (b)와 같이, 제1 래치(LAT1)의 제1 데이터(DTA1)는 제2 래치(LAT2)로 재전송된다. 다음으로, 도 9의 (c)와 같이, 제2 데이터(DTA2)가 메모리 셀 어레이(MA)로부터 제1 래치(LAT1)로 전송되는 동안, 제2 래치(LAT2)의 제1 데이터(DTA1)는 ECC 엔진(ECCE)으로 출력될 수 있다. 도 9에서는 데이터가 제1 래치(LAT1) 및 제2 래치(LAT2)만을 거쳐 출력되는 것으로 도시하고 있으나, 이에 한정되는 것은 아니다.
따라서, 본 발명의 실시예에 따른 리드 방법에서는 도 10에 도시되는 바와 같이, 메모리 셀 어레이로부터 제2 데이터(DTA2)를 리드하는 동안 다른 래치의 제1 데이터(DTA1)를 출력하여 ECC 디코딩을 수행할 수 있다. 그 결과, 리드 동작에 소요되는 시간(tREAD)에 데이터 출력 시간(tData_Out) 또는 ECC 디코딩 시간(tECC)이 쉐도윙(shadowing)되어, 모든 ECC 섹터(sector)들에 대한 디코딩을 수행하더라도 성능의 열화가 야기되지 아니한다.
그러므로, 본 발명의 실시예에 따른 리드 방법에 의하면, 데이터의 모든 필드(ECC 섹터(ECC 정정 단위)들에 대한 ECC 디코딩을 수행할 경우 성능 열화가 야기되어, 정정되지 아니한 ECC 섹터만을 디코딩하는 경우에 발생할 수 있는, 실제 정정된 ECC 섹터의 개수와 정정된 것으로 검출된 ECC 섹터의 개수가 상이한 경우를 방지함으로써, 정확하게 정정된 ECC 섹터의 개수를 검출할 수 있다.
도 2 및 도 11을 참조하면, ECC 엔진(ECCE)은 리드 리트라이 테이블(RTAB)의 각 인덱스에 포함된 리드 레벨로 리드 리트라이된 데이터에 대한 ECC 결과(ECCR)를 에러 제어부(ECUT)로 전송한다. ECC 결과(ECCR)는 리드 리트라이 테이블(RTAB)의 각 인덱스의 리드 레벨에 의해 정정된 ECC 섹터들에 대한 정보를 포함한다. 예를 들어, 리드 리트라이 테이블(RTAB)이 4개의 인덱스를 포함하는 도 11의 예에서, ECC 결과(ECCR)는 인덱스 1에 대해 2개의 ECC 섹터들이 정정되고, 인덱스 2에 대해 4개의 ECC 섹터들이 정정되었음을 나타낼 수 있다. 또한, ECC 결과(ECCR)는 인덱스 3에 대해 5개의 ECC 섹터들이 정정되고, 인덱스 4에 대해 2개의 ECC 섹터들이 정정되었음을 나타낼 수 있다.
에러 제어부(ECUT)는 ECC 결과(ECCR)에 응답하여, 리드 리트라이 테이블(RTAB)의 인덱스 중 하나의 인덱스의 리드 레벨을 선택한다. 이때, 에러 제어부(ECUT)는 정정된 ECC 섹터의 개수가 가장 많은 인덱스를 선택할 수 있다. 도 11의 예에서, 에러 제어부(ECUT)는 5개의 ECC 섹터를 정정한 인덱스 3을 선택할 수 있다.
에러 제어부(ECUT)는 선택한 인덱스의 리드 레벨을 기준으로 소프트 디시젼을 수행한다. 저밀도 패리티 체크 코드(Low Density Parity Check Code, LDPC) 방식의 ECC 엔진(ECCE)은 도 12와 같이, 하드 디시젼(Hard Decision)에 의해 하드 데이터(DTA) 및 소프트 디시젼(soft decision)에 의한 소프트 데이터(DTA)에 근거하여 에러를 정정할 수 있다. 에러 제어부(ECUT)는 도 11의 인덱스 3의 리드 레벨을 도 12의 하드 디시젼을 위한 리드 레벨(HV)로 설정할 수 있다. 이 경우, 에러 제어부(ECUT)는 하드 디시젼을 위한 리드 레벨(HV)을 기준으로, 소프트 디시젼을 위한 도 12의 리드 레벨(SV)를 설정할 수 있다. 도 2에서, 소프트 디시젼(SD)은 리드 명령(CMD_RD)과 별개인 것으로 도시하고 있으나 이는 개념을 명확하게 하기 위한 것에 불과하다. 소프트 디시젼(SD)은 이니셜 리드 전압(RV0)을 소프트 디시젼을 위한 리드 레벨(RLEV)로 변경한 것에 불과할 수 있다.
상기와 같은 에러 정정 동작을 통해, 도 2의 ECC 엔진(ECCE)은 정정된 데이터(DTA_Corrected)를 메모리 시스템(MSYS)의 외부로 출력할 수 있다. 이렇듯, 본 발명의 실시예에 따른 리드 방법은 가장 좋은 정정 능력을 가진 리드 리트라이의 리드 레벨을 정확하게 검출하고, 가장 좋은 정정 능력을 가진 리드 리트라이의 리드 레벨을 기준으로 소프트 디시젼을 수행함으로써, 에러 정정의 속도와 신뢰성을 향상시킬 수 있다.
상기에서는 정정되는 ECC 섹터들의 개수가 가장 많은 리드 레벨이 하나인 경우에 한하여 설명하였다. 그런데, 도 13과 같이, 정정되는 ECC 섹터들의 개수가 가장 많은 리드 레벨이 둘 이상인 경우, 에러 제어부(ECUT)는 가장 적은 평균 반복 횟수를 기록한 리드 레벨을 기준으로 소프트 디시젼을 수행할 수도 있다. 도 13은 리드 리트라이 테이블의 인덱스 2 및 인덱스 3에 대해 5개의 ECC 섹터들이 정정되어 정정되는 ECC 섹터들의 개수가 가장 많은 리드 레벨이 둘인 경우를 도시한다.
이상에서는 리드 리트라이를 수행함에 있어, 하나의 리드 리트라이 테이블의 처음 인덱스부터 순차적으로 수행되는 예에 한하여 도시하였다. 그러나, 이에 한정되는 것은 아니다. 본 발명의 실시예에 따른 리드 방법 및 메모리 시스템에 의하면, 도 14 내지 도 16과 같이, 메모리 컨트롤러(Ctrl)로부터 플래시 메모리(MEM)로 전송되는 제1 명령()에 응답하여 플래시 메모리(MEM)로부터 검출하는 상태 정보(Inf_ST)에 포함되는 마모도 및 리드 리트라이의 이전 요청에서 에러가 정정된 리드 레벨에 대한 정보에 근거하여, 리드 리트라이를 수행할 수 있다.
도 14에서, 제1 명령(CMD1)은 이레이즈 명령일 수 있고, 이레이즈가 ISPE(Incremental Step Pulse Erase) 방식으로 수행되는 경우, 이레이즈 명령에 대한 상태 정보(Inf_ST)에 포함되는 마모도는 ISPE 루프 카운트 값에 대응될 수 있다. ISPE 루프 카운트 값은 이레이즈 명령에 응답하여 선택 블록이 이레이즈 되는데 소요되는 이레이즈 전압 펄스들의 개수를 나타낸다.
도 15의 마모도 테이블(WTAB)은 플래시 메모리(MEM)의 각 블록을 인덱스로 하고, 각 블록에 대한 상태 정보(Inf_ST)에 포함되는 마모도(WO) 및 리드 리트라이의 이전 요청에서 에러가 정정된 리드 레벨에 대한 정보(LInd)를 포함할 수 있다. 예를 들어, 마모도 테이블(WTAB)의 인덱스는 도 3a의 블록들 BLK0 내지 BLKa-1에 대한 어드레스 0 내지 a-1일 수 있다.
본 발명의 실시예에 따른 리드 방법 및 메모리 시스템은, 마모도 테이블(WTAB) 상의 마모도 정보에 근거하여, 리드 리트라이 테이블을 선택할 수 있다. 본 발명의 실시예에 따른 리드 방법 및 메모리 시스템은, 리드 리트라이 테이블을, 플래시 메모리(MEM)의 인듀어런스(endurance) 상태마다 별도로 구비될 수 있다. 플래시 메모리의 인듀어런스는 P/E 사이클(Program/Erase Cycle)로 나타내어 질 수 있다. 예를 들어, 도 16의 제1 리드 리트라이 테이블(RTABA)은 P/E 사이클(Program/Erase Cycle)이 1K 미만인 경우에 대한 리드 리트라이 테이블이고, 제2 리드 리트라이 테이블(RTABB)은 P/E 사이클이 1K 이상 2K 미만인 경우에 대한 리드 리트라이 테이블이며, 제3 리드 리트라이 테이블(RTABC)은 P/E 사이클이 2K 이상 3K 미만인 경우에 대한 리드 리트라이 테이블일 수 있다. 다만, 이에 한정되지 아니하고, 본 발명의 실시예에 따른 리드 리트라이 테이블들은 다른 횟수의 P/E 사이클에 대해 설정될 수 있다.
에러 제어부(ECUT)는 임의의 블록에 대한 리드 리트라이가 요구되는 경우, 마모도 테이블(WTAB)의 선택 인덱스 상의 마모도에 근거하여, 다수의 리드 리트라이 테이블들 중 하나를 선택한다. 예를 들어, 블록 BLK1에 대한 도 15의 인덱스 1의 마모도가 2라면, 에러 제어부(ECUT)는 도 16의 제1 리드 리트라이 테이블(RTABA) 내지 제3 리드 리트라이 테이블(RTABC) 중 P/E 사이클이 1K 미만인 제1 리드 리트라이 테이블(RTABA)을 참조하여, 블록 BLK1에 대한 리드 리트라이 동작을 수행할 수 있다.
이렇듯, 본 발명의 실시예에 따른 메모리 시스템 및 이의 리드 방법에 의하면, 플래시 메모리의 고집적화 등에 의해 리드 에러가 증가하고 리드 리트라이 진입 시점이 빨라지는 상황에서, 인듀어런스마다 별도로 구비되는 리드 리트라이 테이블을 참조하여 리드 리트라이를 수행함으로써, 리드 리트라이 횟수를 최소화할 수 있다.
또한, 전술한 바와 같이, 도 15의 마모도 테이블(WTAB)은 리드 리트라이의 이전 요청에서 에러가 정정된 리드 레벨에 대한 정보(LInd)를 포함할 수 있다. 이에 따라, 본 발명의 실시예에 따른 메모리 시스템 및 이의 리드 방법에 의하면, 해당 블록에 대한 리드 리트라이가 재차 요청되는 경우, 최근에 해당 블록에 대해 에러를 정정한 리드 레벨로부터 리드 리트라이를 수행함으로써, 리드 리트라이 횟수를 최소화할 수 있다. 예를 들어, 블록 BLK1에 대한 도 15의 인덱스 1의 리드 리트라이의 이전 요청에서 에러가 정정된 리드 레벨에 대한 정보(LInd)가 1이라면, 에러 제어부(ECUT)는 도 16의 제1 리드 리트라이 테이블(RTABA) 내지 제3 리드 리트라이 테이블(RTABC) 중 마모도 정보에 대응되는 리드 리트라이 테이블의 인덱스 1의 리드 레벨을, 현재의 요청에 따른 리드 리트라이의 시작 리드 레벨로 설정할 수 있다.
따라서, 본 발명의 실시예에 따른 메모리 시스템 및 이의 리드 방법에 의하면, 시스템 자원을 아낄 수 있고, 리드 리트라이에 소요되는 시간을 줄일 수 있다.
도 17은 본 발명의 실시예에 따른 컴퓨팅 시스템 장치를 나타내는 블럭도이다.
본 발명의 실시예에 따른 컴퓨팅 시스템(CSYS)은 버스(BUS)에 전기적으로 연결된 프로세서(CPU), 사용자 인터페이스(UI) 및 플래시 메모리 시스템(MSYS)을 구비한다. 플래시 메모리 시스템(MSYS)은 메모리 컨트롤러(Ctrl) 및 플래시 메모리(MEM)를 포함한다. 플래시 메모리(MEM)에는 프로세서(CPU)에 의해서 처리된 또는 처리될 N-비트 데이터(N은 1 또는 그 보다 큰 정수)가, 메모리 컨트롤러(Ctrl)를 통해, 저장될 것이다. 도 17의 플래시 메모리 시스템(MSYS)은 도 2 등의 플래시 메모리 시스템(MSYS)과 같을 수 있다. 따라서, 컴퓨팅 시스템(CSYS)에 의하면, 플래시 메모리 시스템(MSYS)의 리드의 신뢰성을 향상시킬 수 있다.
본 발명의 실시예에 따른 컴퓨팅 시스템(CSYS)는 파워 공급 장치(PS)를 더 구비할 수 있다. 또한, 플래시 메모리(MEM)가 도 2등의 프로그램 방법으로 프로그램을 수행하는 플래시 메모리 장치일 경우, 본 발명의 실시예에 따른 컴퓨팅 시스템(CSYS)은 휘발성 메모리 장치(예를 들어, RAM)을 더 구비할 수 있다.
본 발명의 실시예에 따른 컴퓨팅 시스템(CSYS)이 모바일 장치인 경우, 컴퓨팅 시스템의 동작 전압을 공급하기 위한 배터리 및 베이스밴드 칩셋(baseband chipset)과 같은 모뎀이 추가적으로 제공될 수 있다. 또한, 본 발명의 실시예에 따른 컴퓨팅 시스템(CSYS)에는 응용 칩셋(application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명한 사항인 바, 더 자세한 설명은 생략한다.
도 18은 본 발명의 실시예에 따른 메모리 카드를 나타내는 블럭도이다.
도 18을 참조하면, 본 발명의 실시예에 따른 메모리 카드(MCRD)는, 메모리 컨트롤러(Ctrl) 및 플래시 메모리(MEM)를 구비한다. 메모리 컨트롤러(Ctrl)는 입출력 수단(I/O)를 통해 수신되는 외부의 호스트(미도시)의 요청에 응답하여 플래시 메모리(MEM)로의 데이터 기입 또는 플래시 메모리(MEM)로부터의 데이터 리드를 제어한다. 또한, 메모리 컨트롤러(Ctrl)는 플래시 메모리(MEM)에 대한 소거 동작을 제어한다. 본 발명의 실시예에 따른 메모리 카드(MCRD)의 메모리 컨트롤러(Ctrl)는 상기와 같은 제어 동작을 수행하기 위해, 각각 호스트 및 메모리 장치와의 인터페이스를 수행하는 인터페이스부들(미도시), 및 램(RAM) 등을 구비할 수 있다. 본 발명의 실시예에 따른 메모리 카드(MCRD)는 도 2 등의 플래시 메모리 시스템(MSYS)으로 구현될 수 있다.
도 18의 메모리 카드(MCRD)는 컴팩트 플래시 카드(CFC: Compact Flash Card), 마이크로 드라이브(Microdrive), 스마트 미디어 카드(SMC: Smart Media Card) 멀티미디어 카드(MMC: Multimedia Card), 보안 디지털 카드(SDC: Security Digital Card), 메모리 스틱(Memory Stick), 및 USB 플래시 메모리 드라이버 등으로 구현될 수 있다. 따라서, 도 12의 메모리 카드(MCRD)에 의하면, 플래시 메모리 시스템(MSYS)의 리드의 신뢰성을 향상시키면서도 시스템의 오버헤드를 줄일 수 있다.
도 19는 본 발명의 실시예에 따른 솔리드 스테이트 드라이브(SSD: Solid State Drive)를 나타내는 도면이다.
도 19를 참조하면, 본 발명의 실시예에 따른 SSD는 SSD 컨트롤러(SCTL) 및 플래시 메모리(MEM)를 포함한다. SSD 컨트롤러(SCTL)는 버스(BUS)로 연결되는 프로세서(PROS), 램(RAM), 캐쉬 버퍼(CBUF) 및 메모리 컨트롤러(Ctrl)를 구비할 수 있다. 프로세서(PROS)는 호스트(미도시)의 요청(명령, 어드레스, 데이터)에 응답하여 메모리 컨트롤러(Ctrl)가 플래시 메모리(MEM)와 데이터를 송수신하도록 제어한다. 본 발명의 실시예에 따른 SSD의 프로세서(PROS) 및 메모리 컨트롤러(Ctrl)는 하나의 ARM 프로세서로 구현될 수도 있다. 프로세서(PROS)의 동작에 필요한 데이터는 램(RAM)에 로딩될 수 있다. 예를 들어, 도 2의 리드 리트라이 테이블(RTAB)이 램(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는 도 2 등의 플래시 메모리 시스템(MSYS)으로 구현될 수 있다. 따라서, 도 19의 SSD에 의하면, 리드의 신뢰성을 향상시키면서도 시스템의 오버헤드를 줄일 수 있다.
도 20은 SSD를 포함하는 서버 시스템 및 네트워크 시스템을 나타내는 도면이다.
도 20을 참조하면, 본 발명의 실시예에 따른 네트워크 시스템(NSYS)은 네트워크를 통해 연결되는 서버 시스템(SSYS) 및 다수의 단말들(TEM1~TEMn)을 포함할 수 있다. 본 발명의 실시예에 따른 서버 시스템(SSYS)은 네트워크에 연결되는 다수의 단말들(TEM1~TEMn)로부터 수신되는 요청을 처리하는 서버(SERVER) 및 단말들(TEM1~TEMn)로부터 수신되는 요청에 대응되는 데이터를 저장하는 SSD를 포함하는 구비할 수 있다. 이때, 도 20의 SSD는 도 19의 SSD일 수 있다. 즉, 도 20의 SSD는 SSD 컨트롤러(SCTL) 및 플래시 메모리(MEM)를 포함하고, 플래시 메모리(MEM)는 도 1 등의 리드 방법으로 리드를 수행하는 플래시 메모리 장치일 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (10)

  1. 다수의 래치들을 포함하는 버퍼부를 구비하는 낸드 플래시 메모리 및 상기 낸드 플래시 메모리로의 리드를 제어하는 메모리 컨트롤러를 구비하는 메모리 시스템에서의 리드 방법에 있어서,
    리드 리트라이 테이블(read retry table)의 인덱스(index) 중 제1 인덱스에 포함된 리드 레벨(read level)로 리드(read)한 제1 데이터를, 상기 래치들 중 제1 래치를 거쳐 제2 래치로 전송하는 단계;
    상기 리드 리트라이 테이블의 인덱스 중 제2 인덱스에 포함된 리드 레벨로 리드한 제2 데이터를 상기 제1 래치로 전송하는 동안, 상기 제2 래치에 전송된 상기 제1 데이터에 대한 ECC 디코딩(Error Check and Correction Decoding)을 수행하는 단계;
    상기 제1 래치의 상기 제2 데이터를 상기 제2 래치로 전송하고, 상기 제2 래치에 전송된 상기 제2 데이터에 대한 ECC 디코딩을 수행하는 단계; 및
    상기 제1 데이터의 ECC 디코딩 결과 및 상기 제2 데이터의 디코딩 결과를 비교하여, 상기 제1 데이터를 리드한 리드 레벨 및 상기 제2 데이터를 리드한 리드 레벨 중 하나의 리드 레벨에 기초하여, 소프트 디시젼(Soft Decision)을 수행하는 단계를 구비하는 것을 특징으로 하는 리드 방법.
  2. 제1 항에 있어서, 상기 제1 데이터의 ECC 디코딩 결과 및 상기 제2 데이터의 디코딩 결과는 각각,
    상기 제1 데이터에 대한 ECC 디코딩에 의해 상기 제1 데이터에서 정정된 ECC 섹터의 개수 및 상기 제2 데이터에 대한 ECC 디코딩에 의해 상기 제2 데이터에서 정정된 ECC 섹터의 개수인 것을 특징으로 하는 리드 방법.
  3. 제2 항에 있어서, 상기 제1 데이터를 리드한 리드 레벨 및 상기 제2 데이터를 리드한 리드 레벨 중 하나의 리드 레벨에 기초하여, 소프트 디시젼을 수행하는 단계는,
    상기 제1 데이터 및 상기 제2 데이터 중 정정된 ECC 섹터의 개수가 많은 데이터를 리드한 리드 레벨에서 소프트 디시젼을 수행하는 것을 특징으로 하는 리드 방법.
  4. 제3 항에 있어서, 상기 제1 데이터를 리드한 리드 레벨 및 상기 제2 데이터를 리드한 리드 레벨 중 하나의 리드 레벨에 기초하여, 소프트 디시젼을 수행하는 단계는,
    상기 제1 데이터에서 정정된 ECC 섹터의 개수 및 상기 제2 데이터에서 정정된 ECC 섹터의 개수가 동일한 경우, 상기 제1 데이터 및 상기 제2 데이터 중 평균 반복 횟수가 적은 데이터를 리드한 리드 레벨에서 소프트 디시젼을 수행하는 것을 특징으로 하는 리드 방법.
  5. 제1 항에 있어서, 상기 제1 데이터에 대한 ECC 디코딩 및 상기 제2 데이터에 대한 ECC 디코딩은 각각,
    상기 제1 데이터의 모든 필드(field)들 및 상기 제2 데이터의 모든 필드들에 대해 수행되는 것을 특징으로 하는 리드 방법.
  6. 제1 항에 있어서,
    상기 리드 리트라이 테이블의 나머지 인덱스의 리드 레벨로 리드한 데이터들에 대한 ECC 디코딩을 수행하는 단계; 및
    상기 제1 데이터의 ECC 디코딩 결과 및 상기 제2 데이터의 디코딩 결과, 및 상기 리드 리트라이 테이블의 나머지 인덱스의 리드 레벨로 리드한 데이터들에 대한 ECC 디코딩 결과에 따라 선택된 리드 레벨에 기초하여, 상기 소프트 디시젼을 수행하는 단계를 더 구비하는 것을 특징으로 하는 리드 방법.
  7. 제6 항에 있어서, 상기 리드 리트라이 테이블의 나머지 인덱스의 리드 레벨로 리드한 데이터들에 대한 ECC 디코딩을 수행하는 단계는,
    상기 데이터들 중 하나의 데이터를 상기 제1 래치에 전송하는 동안, 상기 제1 래치를 거쳐 상기 제2 래치에 저장되어 있는 데이터에 대한 ECC 디코딩을 수행하는 것을 특징으로 하는 리드 방법.
  8. 제1 항에 있어서, 상기 리드 방법은,
    이니셜 리드(initial read)에서의 리드 에러가 리드 리트라이(read retry)에 의해서도 정정되지 아니하는 경우에 수행되는 것을 특징으로 하는 리드 방법.
  9. 제8 항에 있어서,
    상기 플래시 메모리의 블록들 각각을 인덱스로 하는 마모도 테이블(wear-out table)을 참조하여, 상기 리드 리트라이 테이블의 인덱스 중 하나에 포함된 리드 레벨을, 상기 리드 리트라이를 시작하는 리드 레벨로 설정하는 단계; 및
    상기 리드 리트라이를 시작하는 리드 레벨에서부터 상기 리드 리트라이 테이블의 마지막 인덱스의 마지막 리드 레벨까지의 리드 레벨로, 상기 리드 리트라이를 반복하는 것을 특징으로 하는 리드 방법.
  10. 제9 항에 있어서, 상기 리드 리트라이 테이블은,
    상기 플래시 메모리의 인듀어런스(endurance) 상태 구간마다 달리 구비되는 리드 리트라이 테이블들 중 하나인 것을 특징으로 하는 리드 방법.
KR1020110123662A 2011-11-24 2011-11-24 플래시 메모리 시스템 및 플래시 메모리 시스템의 리드 방법 KR101835605B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020110123662A KR101835605B1 (ko) 2011-11-24 2011-11-24 플래시 메모리 시스템 및 플래시 메모리 시스템의 리드 방법
US13/656,849 US8850292B2 (en) 2011-11-24 2012-10-22 Flash memory system and read method in flash memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110123662A KR101835605B1 (ko) 2011-11-24 2011-11-24 플래시 메모리 시스템 및 플래시 메모리 시스템의 리드 방법

Publications (2)

Publication Number Publication Date
KR20130057758A KR20130057758A (ko) 2013-06-03
KR101835605B1 true KR101835605B1 (ko) 2018-03-08

Family

ID=48467955

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110123662A KR101835605B1 (ko) 2011-11-24 2011-11-24 플래시 메모리 시스템 및 플래시 메모리 시스템의 리드 방법

Country Status (2)

Country Link
US (1) US8850292B2 (ko)
KR (1) KR101835605B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10943634B2 (en) 2018-11-30 2021-03-09 SK Hynix Inc. Read latency improvement method and memory system thereof

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101991437B1 (ko) * 2012-08-30 2019-06-20 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그의 동작방법
KR102114234B1 (ko) * 2013-10-22 2020-05-25 에스케이하이닉스 주식회사 데이터 저장 시스템 및 그것의 동작 방법
KR102085127B1 (ko) * 2013-11-13 2020-04-14 삼성전자주식회사 메모리 컨트롤러의 구동 방법 및 메모리 컨트롤러에 의해서 제어되는 비휘발성 메모리 장치
TWI521525B (zh) * 2013-11-22 2016-02-11 群聯電子股份有限公司 時間估測方法、記憶體儲存裝置、記憶體控制電路單元
KR102110767B1 (ko) * 2013-12-24 2020-06-09 삼성전자 주식회사 메모리 컨트롤러 구동방법 및 메모리 컨트롤러
KR102127287B1 (ko) 2014-02-11 2020-06-26 삼성전자주식회사 메모리 컨트롤러 및 메모리 컨트롤러가 불휘발성 메모리로부터 데이터를 읽는 데이터 읽기 방법
KR102190694B1 (ko) 2014-03-14 2020-12-14 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 동작 방법
KR102187116B1 (ko) 2014-04-07 2020-12-04 삼성전자주식회사 비휘발성 메모리 장치와 이를 포함하는 메모리 시스템, 및 비휘발성 메모리 장치의 구동 방법
US9460783B2 (en) 2014-06-03 2016-10-04 Micron Technology, Inc. Determining soft data
KR102219293B1 (ko) 2014-07-28 2021-02-23 삼성전자 주식회사 메모리 장치, 메모리 시스템, 상기 메모리 장치의 동작 방법 및 상기 메모리 시스템의 동작 방법
KR102188061B1 (ko) 2014-07-29 2020-12-07 삼성전자 주식회사 메모리 장치, 메모리 시스템 및 메모리 장치의 동작방법
TWI556249B (zh) * 2014-11-07 2016-11-01 群聯電子股份有限公司 資料讀取方法、記憶體儲存裝置及記憶體控制電路單元
KR20160073834A (ko) * 2014-12-17 2016-06-27 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템 동작 방법
US9613691B2 (en) * 2015-03-27 2017-04-04 Intel Corporation Apparatus and method for drift cancellation in a memory
CN106158038B (zh) 2015-04-14 2021-03-09 恩智浦美国有限公司 从非易失性存储器读取数据的方法
KR102291309B1 (ko) 2015-05-20 2021-08-20 삼성전자주식회사 불휘발성 메모리 장치 및 불휘발성 메모리 장치를 포함하는 스토리지 장치
KR20160143371A (ko) * 2015-06-05 2016-12-14 에스케이하이닉스 주식회사 메모리 시스템 및 그 동작 방법
US9779818B2 (en) * 2015-07-09 2017-10-03 Apple Inc. Adaptation of high-order read thresholds
US9697075B2 (en) 2015-09-08 2017-07-04 Apple Inc. Efficient search for optimal read thresholds in flash memory
KR102412781B1 (ko) 2015-11-03 2022-06-24 삼성전자주식회사 비휘발성 메모리 장치 및 비휘발성 메모리 장치의 독출 방법
KR102378541B1 (ko) * 2015-11-27 2022-03-25 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR102609130B1 (ko) * 2016-02-17 2023-12-05 삼성전자주식회사 읽기 전압 서치 유닛을 포함하는 데이터 저장 장치
JP6164712B1 (ja) * 2016-08-18 2017-07-19 ウィンボンド エレクトロニクス コーポレーション フラッシュメモリ
KR20180064088A (ko) 2016-12-05 2018-06-14 에스케이하이닉스 주식회사 메모리 제어 장치 및 방법
KR102302187B1 (ko) * 2017-03-13 2021-09-14 삼성전자주식회사 비휘발성 메모리 장치의 동작 방법 및 비휘발성 메모리 장치
US10175892B1 (en) * 2017-06-23 2019-01-08 Amazon Technologies, Inc. Adaptive read algorithm for a nonvolatile medium
US10388394B2 (en) 2017-07-25 2019-08-20 Apple Inc. Syndrome weight based evaluation of memory cells performance using multiple sense operations
CN109698002B (zh) * 2017-10-23 2020-11-10 北京兆易创新科技股份有限公司 存储阵列数据的锁存方法及装置
KR102427638B1 (ko) 2018-01-10 2022-08-01 삼성전자주식회사 비휘발성 메모리 장치 및 이의 읽기 방법
KR102567314B1 (ko) * 2018-04-27 2023-08-17 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
US11099781B2 (en) * 2018-07-19 2021-08-24 Silicon Motion, Inc. Flash memory controller, flash memory module and associated electronic device
KR20200066911A (ko) * 2018-12-03 2020-06-11 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11127471B2 (en) * 2019-07-23 2021-09-21 SK Hynix Inc. Read retry threshold voltage selection
US11960358B1 (en) 2022-09-30 2024-04-16 Nxp B.V. More secure data reading with error correction codes

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080126686A1 (en) 2006-11-28 2008-05-29 Anobit Technologies Ltd. Memory power and performance management
US20100162084A1 (en) 2008-12-18 2010-06-24 Richard Coulson Data error recovery in non-volatile memory
US20120240007A1 (en) 2010-10-20 2012-09-20 Stec, Inc. Ldpc decoding for solid state storage devices

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7904788B2 (en) * 2006-11-03 2011-03-08 Sandisk Corporation Methods of varying read threshold voltage in nonvolatile memory
US8341506B2 (en) 2007-03-30 2012-12-25 HGST Netherlands B.V. Techniques for correcting errors using iterative decoding
US8533562B2 (en) * 2007-09-12 2013-09-10 Sandisk Technologies Inc. Data protection after possible write abort or erase abort
JP2009187146A (ja) 2008-02-04 2009-08-20 Fuji Xerox Co Ltd 情報処理システム及び情報処理プログラム
KR20090126829A (ko) 2008-06-05 2009-12-09 삼성전자주식회사 반복 복호 방법과 반복 복호 장치
US8331168B2 (en) 2009-04-30 2012-12-11 International Business Machines Corporation Increased capacity heterogeneous storage elements
US8422303B2 (en) * 2010-12-22 2013-04-16 HGST Netherlands B.V. Early degradation detection in flash memory using test cells
US9047210B2 (en) * 2011-09-15 2015-06-02 Sandisk Technologies Inc. Data storage device and method to correct bit values using multiple read voltages

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080126686A1 (en) 2006-11-28 2008-05-29 Anobit Technologies Ltd. Memory power and performance management
US20100162084A1 (en) 2008-12-18 2010-06-24 Richard Coulson Data error recovery in non-volatile memory
US20120240007A1 (en) 2010-10-20 2012-09-20 Stec, Inc. Ldpc decoding for solid state storage devices

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10943634B2 (en) 2018-11-30 2021-03-09 SK Hynix Inc. Read latency improvement method and memory system thereof

Also Published As

Publication number Publication date
US20130139036A1 (en) 2013-05-30
KR20130057758A (ko) 2013-06-03
US8850292B2 (en) 2014-09-30

Similar Documents

Publication Publication Date Title
KR101835605B1 (ko) 플래시 메모리 시스템 및 플래시 메모리 시스템의 리드 방법
US9224489B2 (en) Flash memory devices having multi-bit memory cells therein with improved read reliability
US8499217B2 (en) Memory device and error control codes decoding method
US9001587B2 (en) Flash memory and reading method of flash memory
US8576622B2 (en) Non-volatile memory device and read method thereof
KR101990971B1 (ko) 메모리, 메모리 시스템, 및 메모리에 대한 에러 검출/정정 방법
US20130185612A1 (en) Flash memory system and read method of flash memory system
US20170148511A1 (en) Memory access module for performing memory access management
US11711095B2 (en) Bit flipping low-density parity-check decoders with low error floor
US9478298B2 (en) Memory system and method of reading data thereof
KR20130084901A (ko) 플래시 메모리 시스템 및 플래시 메모리 시스템의 리드 방법
KR102089570B1 (ko) 저장 장치 및 그것의 데이터 처리 방법
KR20090099265A (ko) 메모리 장치 및 데이터 판정 방법
US10658065B2 (en) Failure mode detection method and error correction method for solid state storage device
CN113342259A (zh) 存储器子***、方法和存储器装置
US11581047B2 (en) Iterative read calibration enhanced according to patterns of shifts in read voltages
US10698761B2 (en) Memory system and method for operating semiconductor memory device
KR20130030099A (ko) 플래시 메모리 시스템 및 플래시 메모리 시스템의 독출 방법
CN115938446A (zh) 存储器装置、其操作方法以及存储器***
KR20160110774A (ko) 메모리 장치 및 이를 포함하는 시스템
KR20130102397A (ko) 플래시 메모리 및 플래시 메모리에서의 리드 방법
CN110100236B (zh) 数据读取方法及闪存设备
CN115527596A (zh) 用于在非易失性存储器装置中编程数据的设备及***
US11444637B2 (en) Self-adaptive low-density parity check hard decoder
US11587630B2 (en) Program with consecutive verifies for non-volatile memory

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