KR20100113135A - 반도체 기억 장치, 그 제어 방법, 및 에러 정정 시스템 - Google Patents

반도체 기억 장치, 그 제어 방법, 및 에러 정정 시스템 Download PDF

Info

Publication number
KR20100113135A
KR20100113135A KR1020107018696A KR20107018696A KR20100113135A KR 20100113135 A KR20100113135 A KR 20100113135A KR 1020107018696 A KR1020107018696 A KR 1020107018696A KR 20107018696 A KR20107018696 A KR 20107018696A KR 20100113135 A KR20100113135 A KR 20100113135A
Authority
KR
South Korea
Prior art keywords
error
error correction
data
unit
code
Prior art date
Application number
KR1020107018696A
Other languages
English (en)
Other versions
KR101203235B1 (ko
Inventor
아키라 야마가
Original Assignee
가부시끼가이샤 도시바
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 가부시끼가이샤 도시바 filed Critical 가부시끼가이샤 도시바
Publication of KR20100113135A publication Critical patent/KR20100113135A/ko
Application granted granted Critical
Publication of KR101203235B1 publication Critical patent/KR101203235B1/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/1012Adding 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 codes or arrangements adapted for a specific type of error
    • 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
    • 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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • 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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Read Only Memory (AREA)
  • Error Detection And Correction (AREA)

Abstract

에러 정정 능력의 손상 없이 소비 전력 및 회로 규모를 저감시킬 수 있는 반도체 기억 장치, 그 제어 방법, 및 에러 정정 시스템을 제공한다. SSD(Solid State Drive)의 ECC(Error Correction Code) 회로는 제1 에러 정정 코드(해밍 코드)를 이용하여 판독 데이터에 대해 제1 에러 정정을 수행하고, 제2 에러 정정 코드(BCH 코드)를 이용하여 제1 에러 정정의 결과에 대해 제2 에러 정정을 더 수행한다. 또한, ECC 회로는 제3 에러 정정 코드(RS 코드)를 이용하여 제2 에러 정정의 결과에 대해 제3 에러 정정을 수행한다.

Description

반도체 기억 장치, 그 제어 방법, 및 에러 정정 시스템{SEMICONDUCTOR STORAGE DEVICE, METHOD OF CONTROLLING THE SAME, AND ERROR CORRECTION SYSTEM}
본 발명은 반도체 기억 장치, 그 제어 방법, 및 에러 정정 시스템에 관한 것이며, 보다 구체적으로는 비휘발적으로 정보를 저장하는 반도체 메모리의 에러를 정정하는 에러 정정 회로를 포함하는 반도체 기억 장치, 그 제어 방법, 및 에러 정정 시스템에 관한 것이다.
최근에, 유지된 전하량에 따라 정보를 저장하는 플래시 메모리 등의 반도체 메모리 소자가 널리 알려져 있다. 또한, 복수의 전하량 임계치를 설정함으로써 2 비트 이상의 정보를 저장하기 위한 다치(multi-value) 메모리 기술도 개발되고 있다.
이러한 반도체 메모리 소자에서는, 시간의 경과에 따라 전하가 방전되기 때문에, 전하가 임계치를 초과하여 방전되면, 정보 판독 시에 에러가 발생할 수 있다. 특히, 다치형 메모리 소자는 일반적으로 임계치들 간의 폭이 좁기 때문에, 에러 발생 가능성이 높아진다.
일본 특허 출원 공개 제2007-87464호에는 이러한 반도체 메모리 소자를 이용하며, 부정확한 정보를 정확하게 복원하기 위한 에러 정정 기구를 포함하는 기억 장치가 개시되어 있다.
데이터의 마지막 기록 이후의 시간 경과로, 복수의 비트로 이루어진 데이터에 에러가 많이 포함될 수 있는 경우가 있으며, 이 경우에도, 일반적으로 에러를 정정하기 위해서는 높은 에러 정정 능력을 갖는 정정 기구가 필요하다. 높은 에러 정정 능력을 갖는 정정 기구는 회로 규모가 크고, 소비 전력이 크며, 처리에 장시간이 필요하다. 통상, 정보의 마지막 저장 이후 장시간이 경과한 후에도 부정확한 정보를 정확한 정보로 복원하는 것을 확실하게 하기 위해서 높은 에러 정정 능력을 갖는 정정 기구가 제공된다. 정보의 마지막 저장 이후의 시간 경과 길이에 관계없이 기억 장치에 일률적으로 고성능의 에러 정정 기구가 적용될 수 있다.
그 결과, 그 저장 이후 짧은 시간밖에 경과하지 않은 정보를 판독할 때에도, 이러한 고성능의 에러 정정 기구가 사용된다. 그렇기 때문에, 판독될 정보가 다수의 에러를 포함하지 않는 경우에도 고성능 에러 정정 기구를 쓸데없이 사용한다. 이것은 기억 장치의 소비 전력 낭비로 이어진다.
또한, 일반적으로, 에러 정정 능력을 높이기 위해서는 에러 정정 대상인 정보를 크게 하는 것이 필요하다. 예컨대, 512 바이트의 데이터에 대해 에러 정정 코드를 생성하는 대신에, 복수개의 512 바이트의 데이터가 서로 연결되어 있는 예컨대 4k 바이트의 데이터를 단위로서 이용하여 에러 정정 코드를 생성한다. 이 기술로 에러 정정 능력이 높아질 수 있다. 그러나, 이 기술에서는 예컨대 512 바이트의 데이터를 판독하고 싶어도 4k 바이트의 데이터를 판독하게 된다. 이 역시 쓸데없이 기억 장치에 전력을 소비하게 한다.
본 발명의 목적은 에러 정정 능력의 손상 없이 소비 전력 및 회로 규모를 저감시킬 수 있는 반도체 기억 장치, 그 제어 방법, 및 에러 정정 시스템을 제공하는 것이다.
그 문제들을 해결하여 목적을 달성하기 위해, 본 발명의 양태에 따른 반도체 기억 장치는, 행렬형으로 배열되며 각각 복수의 데이터로 구성되는 복수의 데이터 블록을 내부에 저장할 수 있는 일시 기억 유닛과, 상기 데이터 블록마다 에러를 검출하기 위한 에러 검출 코드를 생성하는 에러 검출 코드 생성 유닛과, 상기 데이터 블록으로 구성되는 제1 단위 데이터마다 에러를 정정하기 위한 제1 에러 정정 코드를 생성하는 제1 에러 정정 코드 생성 유닛과, 열 방향으로 배열된 데이터 블록으로 구성되는 제2 단위 데이터마다 에러를 정정하기 위한 제2 에러 정정 코드를 생성하는 제2 에러 정정 코드 생성 유닛과, 행 방향으로 배열된 데이터 블록으로 구성되는 제3 단위 데이터마다 에러를 정정하기 위한 제3 에러 정정 코드를 생성하는 제3 에러 정정 코드 생성 유닛과, 상기 데이터 블록, 생성된 에러 검출 코드, 및 생성된 제1∼제3 에러 정정 코드를 내부에 저장할 수 있는 비휘발성 반도체 메모리를 포함한다.
본 발명의 다른 양태에 따른 에러 정정 시스템은, 호스트 장치와, 상기 호스트 장치의 지시에 따라 비휘발성 메모리에 대해 데이터의 판독/기록을 수행하는 반도체 기억 장치를 포함하고, 상기 반도체 기억 장치는, 상기 호스트 장치로부터 전송되는 데이터를, 각각 복수의 데이터로 구성되는 복수의 데이터 블록으로 분할하여, 그 데이터 블록을 행렬형으로 내부에 저장하는 일시 기억 유닛과, 상기 데이터 블록마다 에러를 검출하기 위한 에러 검출 코드를 생성하는 에러 검출 코드 생성 유닛과, 상기 데이터 블록으로 구성되는 제1 단위 데이터마다 에러를 정정하기 위한 제1 에러 정정 코드를 생성하는 제1 에러 정정 코드 생성 유닛과, 열 방향으로 배열된 데이터 블록으로 구성되는 제2 단위 데이터마다 에러를 정정하기 위한 제2 에러 정정 코드를 생성하는 제2 에러 정정 코드 생성 유닛과, 행 방향으로 배열된 데이터 블록으로 구성되는 제3 단위 데이터마다 에러를 정정하기 위한 제3 에러 정정 코드를 생성하는 제3 에러 정정 코드 생성 유닛과, 상기 데이터 블록, 생성된 에러 검출 코드, 및 생성된 제1∼제3 에러 정정 코드를 내부에 저장할 수 있는 비휘발성 반도체 메모리와, 각각의 데이터 블록에 대해, 대응하는 상기 제1 에러 정정 코드를 이용하여 제1 에러 정정을 수행하는 제1 에러 정정 유닛과, 제1 에러 정정된 블록에서, 대응하는 상기 에러 검출 코드를 이용하여 에러를 검출하는 제1 에러 검출 유닛과, 상기 제1 에러 검출 유닛에 의해 검출된 상기 제1 에러 정정된 블록의 에러에 대해, 대응하는 상기 제2 에러 정정 코드를 이용하여 제2 에러 정정을 수행하는 제2 에러 정정 유닛과, 제2 에러 정정된 블록에서, 대응하는 상기 에러 검출 코드를 이용하여 에러를 검출하는 제2 에러 검출 유닛과, 상기 제2 에러 정정된 데이터 및 상기 제2 에러 검출 유닛의 검출 결과를 호스트 장치에 전송하는 전송 유닛을 포함하고, 상기 호스트 장치는, 상기 반도체 기억 장치로부터 수신되는, 상기 제2 에러 검출 유닛에 의해 검출된 제2 에러 정정된 블록의 에러에 대해, 대응하는 상기 제3 에러 정정 코드를 이용하여 제3 에러 정정을 수행하는 제3 에러 정정 유닛을 포함한다.
도 1은 SSD(Solid State Drive)의 구성예를 도시하는 블록도이다.
도 2는 NAND 메모리 칩에 포함되는 1 블록의 구성예를 도시하는 회로도이다.
도 3은 ECC(Error Correction Code) 회로의 에러 정정 원리의 개요를 설명하기 위한 개략도이다.
도 4는 ECC 회로의 코딩 시스템의 주요부를 도시하는 블록도이다.
도 5는 DRAM에 저장되는 데이터의 포맷의 일례를 도시하는 개략도이다.
도 6은 NAND 메모리에 전송되는 데이터의 포맷을 도시하는 개략도이다.
도 7은 ECC 회로의 에러 검출 코드 생성 동작 및 에러 정정 코드 생성 동작을 설명하기 위한 개략도이다.
도 8은 도 7에 이어지는 개략도이다.
도 9는 도 8에 이어지는 개략도이다.
도 10은 ECC 회로의 디코딩 시스템의 주요부를 도시하는 블록도이다.
도 11은 제1 에러 정정 후의 에러 검출을 설명하기 위한 개략도이다.
도 12는 제1 에러 정보의 일례를 도시하는 개략도이다.
도 13은 제2 에러 정정 후의 에러 검출을 설명하기 위한 개략도이다.
도 14는 제2 에러 정보의 일례를 도시하는 개략도이다.
도 15는 제2 ECC 정정 유닛이 수행하는 제1 라운드의 에러 정정 후의 블록 데이터를 도시하는 개략도이다.
도 16은 제3 ECC 정정 유닛이 수행하는 제1 라운드의 에러 정정 후의 블록 데이터를 도시하는 개략도이다.
도 17은 제2 ECC 정정 유닛이 수행하는 제2 라운드의 에러 정정 후의 블록 데이터를 도시하는 개략도이다.
도 18은 제3 ECC 정정 유닛이 수행하는 제2 라운드의 에러 정정 후의 블록 데이터를 도시하는 개략도이다.
도 19는 기록 후 경과 시간과 필요 정정 능력과의 관계를 도시하는 도면이다.
도 20은 본 발명의 제2 실시형태에 따른 에러 정정 원리를 설명하기 위한 개략도이다.
도 21은 제2 실시형태에 따른 SSD 및 호스트 장치의 구성을 도시하는 개략도이다.
도 22는 제2 실시형태에 따른 ECC 회로의 디코딩 시스템의 주요부를 도시하는 블록도이다.
이하에, 본 발명의 예시적인 실시형태들에 대하여 도면을 참조하면서 상세히 설명한다. 그러나, 본 발명이 이들 실시형태에 한정되는 것은 아니다. 또한, 이하의 실시형태들의 구성요소는 당업자가 발상할 수 있는 것을 포함하거나 또는 실질적으로 동일한 구성요소를 포함한다.
본 발명의 제1 실시형태에서는 플래시 메모리 등의 불량 비트를 갖는 메모리에 에러 정정 코딩/디코딩을 적용할 때에, 에러 정정 능력이 다른 3종류의 정정 코딩을 수행함으로써 소비 전력 및 회로 규모를 저감시킬 수 있다.
도 1은 SSD(Solid State Drive)(100)의 구성예를 도시하는 블록도이다. SSD(100)는 ATA(Advanced Technology Attachment) 인터페이스(ATA I/F)(2) 등의 메모리 접속 인터페이스를 통해 퍼스널 컴퓨터 혹은 CPU(Central Processing Unit) 코어 등의 호스트 장치(호스트)(1)에 접속되어, SSD(100)는 호스트 장치(1)의 외부 메모리로서 기능한다. 또한, SSD(100)는 RS232C 인터페이스(RS232C I/F) 등의 통신 인터페이스(3)를 통해, 디버깅 장치(200)와의 데이터 송신/수신을 수행할 수 있다. SSD(100)는 비휘발성 메모리인 NAND 플래시 메모리(이하, "NAND 메모리"라 함)(10)와, 컨트롤러인 드라이브 제어 회로(4)와, 휘발성 메모리인 DRAM(Dynamic Random Access Memory)(20)과, 전원 회로(5)와, 상태 표시용 LED(Light Emitting Diode)(6)를 포함한다.
전원 회로(5)는 호스트 장치(1) 측에 설치된 전원 회로에서 공급되는 외부 직류 전원으로부터 복수의 상이한 내부 직류 전원 전압을 생성하여, 이들 전압을 SSD(100) 내의 회로들에 공급한다. 또한, 전원 회로(5)는 외부 전원의 상승 엣지 또는 하강 엣지를 검출하여, 전원 온 리셋 신호 또는 전원 오프 리셋 신호를 생성하며, 그 신호를 드라이브 제어 회로(4)에 공급한다.
이 경우, NAND 메모리(10)는 4병렬 동작을 수행하는 4개의 병렬 동작 요소(10a∼10d)를 포함하며, 각각의 병렬 동작 요소는 2개의 NAND 메모리 패키지를 포함한다. 각 NAND 메모리 패키지는 적층된 복수의 NAND 메모리 칩[예컨대, 칩 당 2 기가바이트(GB)]으로 구성된다. 도 1에서는 NAND 메모리 패키지가 적층된 4개의 NAND 메모리 칩으로 구성되기 때문에, NAND 메모리(10)는 64 GB의 용량을 갖는다. NAND 메모리 패키지가 적층된 8개의 NAND 메모리 칩으로 구성된다면, NAND 메모리(10)는 128 GB의 용량을 갖게 된다.
DRAM(20)는 호스트 장치(1)와 NAND 메모리(10) 사이에서 데이터 전송용 캐쉬로서 기능하고 또 작업 영역용 메모리로서 기능한다.
드라이브 제어 회로(4)는 호스트 장치(1)와 NAND 메모리(10) 사이에서 DRAM(20)를 통해 데이터 전송을 제어하고, 또 SSD(100) 내의 구성요소들을 제어한다. 또한, 드라이브 제어 회로(4)는 LED(6)에 상태 표시 신호를 공급하고 전원 회로(5)로부터 전원 온/오프 리셋 신호를 수신하며 그 리셋 신호 및 클록 신호를 자체 회로 및 SSD(100) 내의 구성요소들에 공급하는 기능을 갖는다.
NAND 메모리 칩은 데이터 소거 단위로서 각각의 블록을 복수개 배열하여 구성된다. 도 2는 NAND 메모리 칩에 포함되는 1 블록의 구성예를 도시하는 회로도이다. 블록은 X 방향을 따라 순차 배열된 (m+1)개의 NAND 스트링을 포함한다(여기서, m : 0 이상의 정수). (m+1)개의 NAND 스트링에 각각 포함되는 선택 트랜지스터(ST1)는 드레인이 비트선(BL0∼BLm)에 각각 접속되고 게이트가 선택 게이트선(SGD)에 각각 공통 접속된다. 선택 트랜지스터(ST2)는 소스가 소스선(SL)에 각각 공통 접속되고 게이트가 선택 게이트선(SGS)에 각각 공통 접속된다.
메모리 셀 트랜지스터(MT)는 반도체 기판 상에 형성된 적층 게이트 구조를 포함하는 MOSFET(Metal Oxide Semiconductor Field-Effect Transistor)로 구성된다. 적층 게이트 구조는 반도체 기판 상에 게이트 절연막을 사이에 두고 형성된 전하 축적층(부유 게이트 전극), 및 전하 축적층 상에 게이트 간 절연막을 사이에 두고 형성된 제어 게이트 전극을 갖는다. 메모리 셀 트랜지스터(MT)는 부유 게이트 전극에 축적된 전자의 수에 따라 임계 전압을 변하게 하고, 그 임계 전압의 차이에 따라 내부에 데이터를 저장한다. 메모리 셀 트랜지스터(MT)는 1 비트를 저장하도록 구성될 수도 있고, 또는 다치(2 비트 이상의 데이터)를 저장하도록 구성될 수도 있다.
NAND 스트링에 있어서, (n+1)개의 메모리 셀 트랜지스터(MT)는 선택 트랜지스터(ST1)의 소스와 선택 트랜지스터(ST2)의 드레인 사이에서, 전류 경로가 직렬 접속되도록 배치된다. 보다 구체적으로, 복수의 메모리 셀 트랜지스터(MT)는 인접한 트랜지스터들이 확산 영역(소스 영역 또는 드레인 영역)을 공유하는 식으로 Y 방향으로 직렬 접속된다.
선택 트랜지스터(ST1)에 가장 가깝게 배치된 메모리 셀 트랜지스터(MT)로부터 순서대로 제어 게이트 전극이 워드선(WL0∼WLn)에 순차 접속된다. 따라서, 워드선(WL0)에 접속된 메모리 셀 트랜지스터(MT)의 드레인은 선택 트랜지스터(ST1)의 소스에 접속되고, 워드선(WLn)에 접속된 메모리 셀 트랜지스터(MT)의 소스는 선택 트랜지스터(ST2)의 드레인에 접속된다.
워드선(WL0∼WLn) 각각에는 블록의 NAND 스트링에 있는 메모리 셀 트랜지스터(MT)의 제어 게이트 전극이 공통 접속된다. 즉, 블록의 동일 행에 있는 메모리 셀 트랜지스터(MT)의 제어 게이트 전극은 동일한 워드선(WL)에 접속된다. 이 동일한 워드선(WL)에 접속된 (m+1)개의 메모리 셀 트랜지스터(MT)는 1 페이지로서 취급되고, 각 페이지마다 데이터의 기록 및 판독이 이루어진다.
비트선(BL0∼BLm) 각각에 있는 선택 트랜지스터(ST1)의 드레인은 다른 블록에 공통 접속된다. 즉, 복수의 블록의 동일 열에 있는 NAND 스트링은 동일한 비트선(BL)에 접속된다.
도 1에 도시하는 바와 같이, NAND 메모리(10)에서, 4개의 병렬 동작 요소(NAND 패키지)(10a∼10d)는 각 8 비트의 4 채널(ch0∼ch3)을 통해 드라이브 제어 회로(4)에 병렬 접속된다. 4개의 병렬 동작 요소(10a∼10d)가 단독으로 또는 병행하여 동작하는지의 여부에 기초하여 그리고 이들 2가지 중 하나와 NAND 메모리(10)의 배속 모드의 사용 여부와의 조합에 기초하여 이하 3종류의 액세스 모드가 제공된다.
(1) 8 비트 일반 모드
1 채널만 동작시켜, 8 비트 단위로 데이터를 기록 및 판독한다. 데이터 전송 사이즈 단위는 페이지 사이즈(4 kB)이다.
(2) 32 비트 일반 모드
4 채널을 병렬로 동작시켜, 32 비트 단위로 데이터를 기록 및 판독한다. 데이터 전송 사이즈 단위는 페이지 사이즈×4(16 kB)이다.
(3) 32 비트 배속 모드
4 채널을 병렬로 동작시키고, 또 NAND 메모리(10)의 배속 모드를 이용하여 데이터를 기록 및 판독한다. 데이터 전송 사이즈 단위는 페이지 사이즈×4×2(32 kB)이다.
4 채널을 병렬로 동작시키는 32 비트 일반 모드 또는 32 비트 배속 모드에서는 병렬로 동작하는 4 또는 8 블록이 NAND 메모리(10)의 소거 단위로서 결정되고, 병렬로 동작하는 4 또는 8 페이지는 NAND 메모리(10)에 대한 기록 단위 및 판독 단위로서 결정된다.
드라이브 제어 회로(4)는 컨트롤러(41)와, ECC(Error Correction Code) 회로(42)와, NAND I/F(43)를 포함한다.
컨트롤러(41)는 ATA 인터페이스(2)를 통해 호스트 장치(1)와의 사이에서 데이터를 송신/수신하고, 또 DRAM(20)에 대해 액세스 제어한다.
NAND I/F(43)는 NAND 메모리(10)의 각 NAND 패키지(10a∼10d)와의 인터페이스 처리를 수행한다[또는 각 NAND 패키지(10a∼10d)에 대해 입력/출력 제어(ctrl I/O)를 수행한다].
ECC 회로(42)는 NAND 메모리(10)에 기록될 데이터에 대해 에러 검출 코드 및 에러 정정 코드를 생성한다. 또한, ECC 회로(42)는 NAND 메모리(10)로부터 판독된 데이터에 대해 에러 검출 및 에러 정정을 수행한다.
이상과 같이 구성된 SSD(100)의 동작의 개요에 대해 이하에 설명한다. 기록되어야 하는 데이터(기록 데이터)가 호스트 장치(1)로부터 SSD(100)에 공급될 경우, 컨트롤러(41)는 그 기록 데이터를 DRAM(20)에 일시적으로 저장한다. 컨트롤러(41)는 그 저장된 기록 데이터를 각각의 미리 정해진 단위씩 ECC 회로(42)에 공급한다. ECC 회로(42)는 기록 데이터에 대해 에러 정정 코드 및 에러 검출 코드를 생성한다. NAND I/F(43)는 에러 정정 코드 및 에러 검출 코드가 부가된 기록 데이터를 NAND 메모리(10)에 기록한다.
또한, SSD(100)에서는 호스트 장치(1)로부터 데이터 판독 요구가 입력되면, NAND I/F(43)는 판독되어야 하는 데이터(판독 데이터)를 판독하고, 또 그 데이터에 부가된 에러 정정 코드 및 에러 검출 코드를 판독하여, 그 코드들과 데이터를 ECC 회로(42)에 공급한다. ECC 회로(42)는 판독 데이터에 대해 에러 검출 및 에러 정정을 수행한다. 컨트롤러(41)는 그 에러 정정된 데이터를 DRAM(20)에 저장한 다음, 그 데이터를 호스트 장치(1)에 전송한다.
이하에, ECC 회로(42)의 기본 동작 순서에 대해 설명한다. ECC 회로(42)는 NAND 메모리(10)에 기록될 데이터에 대해, 에러 정정 능력이 다른 3종류의 에러 코딩을 수행함으로써, 소비 전력 및 회로 규모를 저감시킬 수 있다. 제1 에러 정정 코드(도 6의 ECC1)는 데이터 블록(D) 단위로 에러 정정을 수행하는데 이용된다. 제2 에러 정정 코드(도 6의 ECC2)는 열 단위로 에러 정정을 수행하는데 이용되며, 그 열은 복수의 데이터 블록(D)으로 구성된다. 제3 에러 정정 코드(도 6의 RS)는 행 단위로 에러 정정을 수행하는데 이용되며, 그 행은 복수의 데이터 블록(D)으로 구성된다. 이 3가지 에러 정정 코드의 에러 정정 능력의 레벨은 제1 에러 정정 코드<제2 에러 정정 코드<제3 에러 정정 코드와 같은 오름차순으로 제공된다.
도 3은 ECC 회로(42)의 에러 정정 원리의 개요를 설명하기 위한 개략도이다. 도 3은 NAND 메모리(10)로부터 판독된 데이터를 나타내며, 각각 복수 데이터로 구성되는 데이터 블록(D)이 행렬형으로 배열된다. 빗금 그은 영역은 에러 데이터를 포함하는 에러 데이터 블록을 나타낸다. 먼저, 데이터 블록(D) 단위로 에러 정정(제1 에러 정정)이 이루어진다(A). 이어서, 에러 또는 에러들이 정정될 수 없는 데이터 블록(D)에 대해, 열 단위의 에러 정정(제1 라운드의 제2 에러 정정)이 이루어진다(B). 또한, 에러 또는 에러들이 정정될 수 없는 데이터 블록(D)에 대해, 행 단위의 에러 정정(제1 라운드의 제3 에러 정정)이 이루어진다(C). 에러 또는 에러들이 정정될 수 없는 데이터 블록(D)에 대해 다시 열 단위의 에러 정정(제2 라운드의 제2 에러 정정)이 이루어진다(D). 또, 에러 또는 에러들이 정정될 수 없는 데이터 블록(D)에 대해, 다시 행 단위의 에러 정정(제2 라운드의 제3 에러 정정)이 이루어진다(E). 이들 동작에 의해, 에러 없는 데이터가 디코딩된다(F).
전술한 바와 같이, 제1 실시형태에서는, 먼저 데이터 블록 단위로 에러 정정(제1 에러 정정)이 이루어진다. 여기서, 에러가 정정될 수 없는 임의의 데이터 블록이 있다면, 에러가 없어질 때까지, 열 단위의 에러 정정(제2 에러 정정)과 행 단위의 에러 정정(제3 에러 정정)이 교대로 반복되어, 에러 없는 데이터가 디코딩된다.
도 4는 ECC 회로(42)의 코딩 시스템의 주요부를 도시하는 블록도이다. 도 5는 호스트 장치(1)로부터 전송되는 데이터를 DRAM(20)에 저장하는 경우의 포맷의 일례를 도시하는 개략도이다. 도 6은 NAND 메모리(10)에 전송되는 데이터의 포맷의 일례를 도시하는 개략도이다.
도 4에 도시하는 바와 같이, ECC 회로(42)는 8개의 에러 검출 코드 생성기(50-1∼50-8)(에러 검출 코드 생성 유닛)와, 8개의 제1 ECC 생성기(51-1∼51-8)(제1 에러 정정 코드 생성 유닛)와, 제2 ECC 생성기(52)(제2 에러 정정 코드 생성 유닛)와, 8개의 제3 ECC 생성기(53-1∼53-8)(제3 에러 정정 코드 생성 유닛)를 포함한다.
각각의 에러 검출 코드 생성기(50-1∼50-8)[또는 이들을 에러 검출 코드 생성기(50)라고 표현할 수도 있음]는 기록 데이터의 각 데이터 블록(D)에서 에러를 검출하기 위한 에러 검출 코드를 생성한다. 데이터 블록(D)의 사이즈는 예컨대 512 바이트이다.
에러 검출 코드로서는, CRC(Cyclic Redundancy Checksum)-32, CRC-16 등을 이용할 수 있다. 제1 실시형태에서는 CRC-32를 사용하며, CRC-32(이하, "CRC")의 사이즈는 4 바이트로 설정된다. 에러 검출 코드 생성기(50)로서는 일반적으로 알려져 있는 임의의 장치를 이용할 수 있기 때문에 여기서는 상세한 설명은 생략한다.
각각의 제1 ECC 생성기(51-1∼51-8)[또는 이들을 제1 에러 정정 코드 생성기(51)라고 표현할 수도 있음]는 데이터 블록(D) 및 대응하는 에러 검출 코드로 구성되는 제1 단위 데이터마다 에러를 정정하기 위한 제1 에러 정정 코드를 생성한다.
제1 에러 정정 코드로서는, 예컨대 해밍 코드(Hamming code)와 BCH 코드(Bose-Chaudhuri-Hocquenghem code) 등의 에러 정정 코드를 이용하여 1 비트 혹은 복수 비트의 에러를 정정할 수 있다. 제1 실시형태에서는 제1 에러 정정 코드로서 해밍 코드를 사용하며, 이 해밍 코드의 사이즈는 4 바이트로 설정된다. 제1 ECC 생성기(51-1∼51-8)로서는 일반적으로 알려져 있는 임의의 장치를 이용할 수 있기 때문에 여기서는 상세한 설명은 생략한다.
제2 ECC 생성기(52)는 열 방향으로 배열된 복수의 제1 단위 데이터로 구성되는 제2 단위 데이터(UDa)마다 제2 에러 정정 코드를 생성한다. 제2 에러 정정 코드를 생성하는 단위가 되는 기록 데이터의 수는 달성하기 원하는 에러 정정 능력 및 사용되는 에러 정정 코드에 따라 결정된다.
제2 에러 정정 코드로서는, 제1 에러 정정 코드에 비해 에러 정정 능력이 높은 에러 정정 코드를 이용하고, 복수 비트의 에러를 정정할 수 있는 에러 정정 코드를 이용한다. 구체적으로, BCH 코드 및 LDPC 코드(Low-Density Parity Check code) 등을 이용할 수 있다. 제1 실시형태에서는, 열 방향으로 배열된 8개의 제1 단위 데이터로 구성되는 제2 단위 데이터(UDa)마다 BCH 코드를 생성하여, BCH 코드의 사이즈를 24 바이트로 설정하도록 구성된다. 제2 ECC 생성기(52)로서는 일반적으로 알려져 있는 임의의 장치를 이용할 수 있기 때문에 여기서는 상세한 설명은 생략한다.
각각의 제3 ECC 생성기(53-1∼53-8)[또는 이들을 제3 에러 정정 코드 생성기(53)라고 표현할 수도 있음]는 행 방향으로 배열된 복수의 데이터 블록(D)으로 구성되는 제3 단위 데이터(UDb)마다 제3 에러 정정 코드를 생성한다. 제3 에러 정정 코드를 생성하는 단위가 되는 데이터 블록(D)의 수는 달성하기 원하는 에러 정정 능력 및 사용하는 에러 정정 코드에 따라 결정된다.
제3 에러 정정 코드로서는, 복수 비트의 에러 정정을 수행하는 제2 에러 정정 코드를 이용하는 에러 정정에 비해 더 높은 능력의 에러 정정이 가능한 에러 정정 코드를 이용한다. 더 구체적으로, 제3 에러 정정 코드로서는 RS(Reed-Solomon) 코드 등을 이용할 수 있다. 제1 실시형태에서는, 1024개의 제1 단위 데이터(D)로 구성되는 제3 단위 데이터(UDb)마다, RS 코드를 생성하고, RS 코드의 사이즈를 데이터 블록(D)과 동일한 512 바이트로 설정하도록 구성된다. 제3 ECC 생성기(53)는 제3 단위 데이터(UDb)마다 예컨대 4개의 RS 코드를 생성한다. 따라서, 제3 단위 데이터(UDb)를 구성하는 1024개의 데이터 블록(D) 중 4개의 기록 데이터에서의 에러를 정정하는 것이 가능하다. 제3 ECC 생성기(53)로서는 일반적으로 알려져 있는 임의의 장치를 이용할 수 있기 때문에 여기서는 상세한 설명은 생략한다.
도 5에 도시하는 바와 같이, 컨트롤러(41)는 기록 데이터[D(1, 1)∼D(8, 1024)]를 호스트 장치(1)로부터 수신하면, 제1 ECC 생성기(51)의 처리 단위인 8개의 데이터 블록[D(1, p)∼D(8, p)]를 DRAM(20)에 열 방향으로 순차 저장하고, 제3 ECC 생성기(53)의 처리 단위인 1024개의 제1 단위 데이터[D(q, 1)∼D(q, 1024)]를 DRAM(20)에 저장하며, 그 저장된 데이터를 열 단위로 ECC 회로(42)에 순차 전송한다. 여기서, p는 1∼1024 중 임의의 수이고, q는 1∼8 중 임의의 수이다.
8개의 에러 검출 코드 생성기(50-1∼50-8)는 열 방향으로 배열된 8개의 데이터 블록[D(1, p)∼D(8, p)]에 대응하여 각각 설치된다. 8개의 에러 검출 코드 생성기(50-1∼50-8)는 8개의 데이터 블록[D(1, p)∼D(8, p)]에 대해 각각 8개의 CRC를 생성한다. 이 8개의 CRC는 이들에 대응하는 8개의 데이터 블록[D(1, p)∼D(8, p)]에서 에러를 검출하는데 이용된다. 8개의 CRC는 제1 ECC 생성기(51-1∼51-8) 각각에 그리고 제2 ECC 생성기(52)에 출력된다. 에러 검출 코드 생성기(50-1∼50-8)는 각각, 열 방향으로 배열된 8개의 RS(1, r)∼RS(8, r)에 대해서도 CRC를 생성한다는 것을 주지해야 하며, 여기서 r은 1∼4 중 임의의 수이다.
8개의 제1 ECC 생성기(51)는 각각, 열 방향으로 배열된 8개의 데이터 블록[D(1, p)∼D(8, p)]에 대응하여 설치된다. 8개의 제1 ECC 생성기(51-1∼51-8)는 각각, 제1 단위 데이터마다 또는 8개의 데이터 블록[D(1, p)∼D(8, p)]으로부터 그리고 8개의 CRC(1, p)∼CRC(8, p)로부터 해밍 코드를 생성한다. 이 8개의 해밍 코드는 각각, 대응하는 8개의 단위 데이터[D(1, p)∼D(8, p)]의 제1 에러 정정에 이용된다. 이 8개의 해밍 코드는 제2 ECC 생성기(52)에 출력된다. 제1 ECC 생성기(51-1∼51-8)는 각각, 열 방향으로 배열된 8개의 RS(1, r)∼RS(8, r) 및 대응하는 8개의 CRC에 대해 해밍 코드를 생성하고, 여기서 r는 1∼4 중 임의의 수이다.
제2 ECC 생성기(52)는 열 방향으로 배열된 8개의 제1 단위 데이터로 구성되는 제2 단위 데이터(UDa)마다, 즉 데이터 블록[D(1, p)∼D(8, p)] 및 대응하는 8개의 CRC(1, p)∼CRC(8, p)에 대해, 1개의 BCH 코드를 생성한다. 이 BCH 코드는 제2 단위 데이터(UDa)[ECC1(1, p)∼ECC1(8, p) 제외]에서의 에러를 정정하는데 이용된다. 제1 실시형태에서는, 제2 단위로 구성되는 데이터의 사이즈는 1 페이지[NAND 메모리(10)에의 최소 액세스 단위]에 대응한다.
제3 ECC 생성기(53)는 행 방향으로 배열된 1024개의 데이터 블록[D(q, 1)∼D(q, 1024)]로 구성되는 제3 단위 데이터(UDb)마다 4개의 RS 코드를 생성한다. 8개의 제3 ECC 생성기(53-1∼53-8)는 DRAM(20)에 저장된 기록 데이터의 행에 대응하여 설치된다. 제3 ECC 생성기(53)는 제3 단위 데이터(UDb)를 내부에 저장하는 버퍼를 포함한다. 구체적으로, 제3 ECC 생성기(53-1)는 데이터[D(1, 1)∼D(1, 1024)]로 구성되는 제3 단위 데이터(UDb1)에 대해 4개의 RS(1, 1)∼RS(1, 4)를 생성한다. 제2 행∼제8행에 각각 대응하는 제3 ECC 생성기(53-2∼53-8)에 관해서도 마찬가지이다.
데이터 블록(D), CRC, 해밍 코드, BCH 코드, 및 RS 코드는 도 6에 도시하는 페이지마다, NAND IF(43)를 통해 NAND 메모리(12)에 전송된다. NAND 메모리(10)는 이들 데이터를 페이지 순서대로 내부에 저장한다. 예컨대, 1 메모리 블록이 1028 페이지로 구성될 때, 도 6에 도시하는 데이터는 NAND 메모리(10) 내의 1 메모리 블록에 저장된다(8 비트 일반 모드의 경우). 그러나, 32 비트 모드(32 비트 일반 모드 또는 32 비트 배속 모드)의 경우에는, 이들 데이터가 각 채널의 메모리 칩에 병렬로 기록된다.
이하, 데이터 기록 동작에 있어서 ECC 회로(42)의 에러 검출 코드 생성 동작 및 에러 정정 코드 생성 동작에 대해서, 도 4∼도 9를 참조하여 설명한다.
먼저, 도 5를 참조하여, 컨트롤러(41)는 NAND 메모리(10)에 기록되는 대상인 데이터를 8개의 데이터 블록[D(1, p)∼D(8, p)]마다 DRAM(20)에 열 방향으로 순차 기록하여, 그 데이터 블록[D(1, 1)∼D(8, 1024)]을 내부에 저장하며, 저장된 8개의 데이터 블록 데이터[D(1, 1)∼D(8, 1024)]를 열 단위로 에러 검출 코드 생성기(50-1∼50-8), 제1 ECC 생성기(51-1∼51-8), 제2 ECC 생성기(52), 및 제3 ECC 생성기(53-1∼53-8)에 각각 출력한다.
그리고, 도 7에 도시한 바와 같이, 에러 검출 코드 생성기(50-1∼50-8)는 수신된 8개의 데이터 블록[D(1, 1)∼D(8, 1)]에 대응하여 8개의 에러 검출 코드 CRC(1, 1)∼CRC(8, 1)를 각각 생성한다. 제1 ECC 생성기(51-1∼51-8)는 8개의 기록 데이터[D(1, 1)∼D(8, 1)] 및 8개의 CRC(1, 1)∼CRC(8, 1)로부터 각각 해밍 코드[ECC1(1, 1)∼ECC1(8, 1)]를 생성한다.
계속해서, 도 8에 도시하는 바와 같이, 8개의 데이터 블록[D(1, 1)∼D(8, 1)] 및 대응하는 8개의 에러 검출 코드[CRC(1, 1)∼CRC(8, 1)]로 구성되는 제2 단위 데이터(UDa1)는 제2 ECC 생성기(52)에 출력된다. 제2 ECC 생성기(52)는 제2 단위 데이터(UDa1)를 이용하여, 이 제2 단위 데이터(UDa1)에서 에러를 정정하기 위한 BCH 코드(ECC2)를 생성한다. 이 BCH 코드(ECC2)는 제2 단위 데이터(UDa1)의 말미에 연결되어, 페이지 1(Page1)을 구성한다. 이 페이지 1은 NAND 메모리(10)에 저장된다.
페이지 2∼페이지 1024에 대한, 도 6에 도시하는 데이터가 전술한 바와 동일한 생성 동작으로 생성된다. 페이지 2∼페이지 1024는 NAND 메모리(10)에 저장된다.
도 9에 도시하는 바와 같이, 제3 ECC 생성기(53-1∼53-8)는 각각, 수신된 제1 단위 데이터[D(1, p)∼D(8, p)]를 열 단위로 버퍼에 순차 저장하고, 제3 단위 데이터(UDb1, UDb2, …, UDb8)를 이용하여, 4개의 RS(q, 1)∼RS(q, 4)를 각각 생성한다. 보다 구체적으로, 제3 ECC 생성기(53-1)는 제3 단위 데이터(UDb1)를 이용하여, 4개의 RS(1, 1)∼RS(1, 4)를 생성한다. 제3 ECC 생성기(53-2∼53-8)에 의해 수행되는 RS 생성 동작도 RS 생성기(53-1)의 동작과 마찬가지이다. 제1 실시형태에서는 제3 ECC 생성기(53-1∼53-8)가 에러 정정 코드 생성 동작을 서로 병행하여 수행한다. 제3 ECC 생성기(53-1∼53-8)의 병행 동작에 의해 처리 시간을 단축시킬 수 있다.
RS 코드를 이용할 경우, 통상, 4개의 용장 코드를 이용하여 2개의 에러 위치 정보와 2개의 에러 정정 정보를 얻기 때문에, 2개의 에러가 정정될 수 있다. 그러나, 제1 실시형태에서는 데이터 블록(D)의 에러 위치를 식별하기 위해 CRC를 별도로 이용한다. 따라서, 제1 실시형태에서는 4개의 용장 코드를 이용하여 4개의 에러를 정정할 수 있다. 구체적으로, 1024개의 데이터 블록[D(1, 1)∼D(1, 1024)] 중 4개의 에러를 정정하는 것이 가능하다.
계속해서, 에러 검출 코드 생성기(50-1∼50-8)는 데이터 블록(D)의 경우와 같이, RS(1, 1)∼RS(8, 4)마다 각각 CRC(1, 1025)∼CRC(8, 1028)를 생성한다. 또한, 제1 ECC 코드 생성기(51-1∼51-8)는 RS(1, 1)∼RS(8, 4) 및 대응하는 CRC(1, 1025)∼CRC(8, 1028)마다 해밍 코드[ECC1(1, 1025)∼ECC1(8, 1028)]를 생성한다. 또, 제2 ECC 생성기(52)는 RS(1, 1)∼RS(8, 4) 및 대응하는 CRC(1, 1025)∼CRC(8, 1028)마다 각각 BCH 코드(ECC2)를 생성하고, BCH 코드(ECC2)가 이들 코드의 말미에 각각 연결되어 페이지 1025∼페이지 1028을 구성한다. 이 페이지 1025∼페이지 1028은 NAND 메모리(10)에 전송되어 내부에 저장된다. 이들 동작에 의해, 도 6에 도시하는 데이터가 생성된다.
도 10은 ECC 회로(42)의 디코딩 시스템의 주요부를 도시하는 블록도이다. 도 11∼도 19는 ECC 회로(42)에서의 데이터 판독을 설명하기 위한 개략도이다. 도 10에 도시하는 바와 같이, ECC 회로(42)는 8개의 에러 검출 유닛(60-1~60-8)과, 8개의 제1 ECC 정정 유닛(61-1∼61-8)과, 제2 ECC 정정 유닛(62)과, 8개의 제3 ECC 정정 유닛(63-1∼63-8)을 포함한다. 도 10에서는 설명을 간략화하기 위해 컨트롤러(41) 및 NAND I/F(43)를 생략하였다.
SSD(100)에서, 호스트 장치(1)로부터 데이터 판독 요구가 입력되면, NAND I/F(43)을 통해, NAND 메모리(10)의 1 메모리 블록에 저장된 블록 데이터(도 6에 도시하는 데이터)가 판독되고(8 비트 일반 모드의 경우), 컨트롤러(41)는 그 판독된 데이터를 DRAM(20)에 저장한다. 구체적으로, DRAM(20)는 도 6에 도시하는 블록 데이터를 내부에 저장한다. 32 비트 모드(32 비트 일반 모드 또는 32 비트 배속 모드)의 경우에는 블록 데이터가 채널의 메모리 칩으로부터 병렬로 판독된다.
8개의 제1 ECC 정정 유닛(61-1~61-8)[또는 이들을 제1 ECC 정정 유닛(61)이라고 표현할 수도 있음]은 열 방향으로 배열된 8개의 데이터 블록[D(1, p)∼D(8, p)] 및 대응하는 CRC(1, p)∼CRC(8, p)에 대해 설치되고, 즉 행수에 대응하여 설치된다.
제1 ECC 정정 유닛(61-1∼61-8)은 열 방향으로 배열된 8개의 데이터 블록[D(1, p)∼D(8, p)] 및 CRC(1, p)∼CRC(8, p)에 대해, 해밍 코드[ECC1(1, p)∼ECC1(8, p)]를 이용하여 각각 제1 에러 정정을 수행하고, DRAM(20)에 저장된 데이터 중, 제1 에러 정정된 데이터(DC1-1∼DC1-8)(도 10)에 대응하는 데이터를 갱신한다. 마찬가지로, 제1 ECC 정정 유닛(61-1∼61-8)은 RS(1, 1)∼RS(8, 4) 및 대응하는 CRC(1, 1025)∼CRC(8, 1028)에 대해 제1 에러 정정을 각각 수행한다. 제1 ECC 정정 유닛(61)으로서는 일반적으로 알려져 있는 임의의 장치를 이용할 수 있기 때문에 여기서는 상세한 설명은 생략한다.
8개의 에러 검출 유닛(60-1∼60-8)[또는 이들을 에러 정정 유닛(60)이라고 표현할 수도 있음]은 열 방향으로 배열된 8개의 데이터 블록[D(1, p)∼D(8, p)] 및 대응하는 CRC(1, p)∼CRC(8, p)에 대해 설치되며, 즉 행수에 대응하여 설치된다.
에러 검출 유닛(60-1∼60-8)은 각각, 8개의 데이터 블록[D(1, p)∼D(8, p)]에 대해 생성된 8개의 CRC(1, p)∼CRC(8, p)를 이용하여, 제1 단위 데이터[D(1, p)∼D(8, p)]에서 에러를 검출한다. 에러 검출 유닛(60)으로서는 일반적으로 알려져 있는 임의의 장치를 이용할 수 있기 때문에 여기서는 상세한 설명은 생략한다.
제2 ECC 정정 유닛(62)은 페이지마다 생성된 BCH 코드(ECC2)를 이용하여, 8개의 제1 단위 데이터[D(1, p)∼D(8, p)] 및 대응하는 8개의 CRC(1, p)∼CRC(8, p)로 구성되는 제2 단위 데이터에서 제2 에러 정정을 수행하며, DRAM(20)에 저장된 데이터 중, 제2 에러 정정된 데이터(DC2)에 대응하는 데이터를 갱신한다. 페이지 1025∼페이지 1028에 대해서도 같은 방식으로 제2 에러 정정이 수행된다.
8개의 제3 ECC 정정 유닛(63-1∼63-8)[또는 이들을 제3 ECC 정정 유닛(63)이라고 표현할 수도 있음]은 열 방향으로 배열된 8개의 제1 단위 데이터[D(1, p)∼D(8, p)]에 대응하여 설치된다. 제3 ECC 정정 유닛(63-1)은 4개의 RS(1, 1)∼RS(1, 4)를 이용하여, 행 방향으로 배열된 1024개의 판독 데이터[D(1, 1)∼D(1, 1024)]로 구성되는 제3 단위 데이터(UDb1)에서 제3 에러 정정을 수행한다. 마찬가지로, 제3 ECC 정정 유닛(63-2∼63-8)은 제3 단위 데이터(UDb2∼UDb8)에서 제3 에러 정정을 수행한다. 제3 ECC 정정 유닛(63)으로서는 일반적으로 알려져 있는 임의의 장치를 이용할 수 있기 때문에 여기서는 상세한 설명은 생략한다.
제1 실시형태에서는, 4개의 리드 솔로몬 코드[RS(1, 1)∼RS(1, 4)] 모두가 에러 정정에 이용된다. 따라서, 제3 ECC 정정 유닛(63-1)은 1024개의 판독 데이터[D(1, 1)∼D(1, 1024)] 중 4개의 판독 데이터를 복원할 수 있다. 제2행∼제8행에 각각 대응하는 제3 ECC 정정 유닛(63-2∼63-8)에 관해서도 마찬가지이다. 제3 ECC 정정 유닛(63-1∼63-8)에 의해 정정된 제3 에러 정정된 데이터(DC3)는 DRAM(20)에 전송되고, DRAM(20)에 저장된 데이터 중, 제3 에러 정정된 데이터(DC3)에 대응하는 데이터가 갱신된다.
제1 ECC 정정 유닛(61-1∼61-8), 제2 ECC 정정 유닛(62), 및 제3 ECC 정정 유닛(63-1∼63-8)에 의해 정정된 데이터 블록[D(1, 1)∼D(8, 1024)]의 데이터는 컨트롤러(41)에 의해 호스트 장치(1)에 전송된다.
이하, 데이터 판독 동작 시의 ECC 회로(42)의 에러 검출 동작 및 에러 정정 동작에 관해서, 도 11∼도 19를 참조하여 설명한다.
에러 정정 동작 전에, NAND 메모리(10)의 1 메모리 블록에 저장된 블록 데이터(도 6에 도시하는 데이터)가 DRAM(20)에 전송된다(8 비트 일반 모드의 경우). 즉, DRAM(20)는 도 6에 도시하는 블록 데이터를 내부에 저장한다.
제1 ECC 정정 유닛(61-1∼61-8)에는 페이지 1∼페이지 1028의 데이터가 페이지 단위[BCH 코드(ECC2) 제외]로 순차 전송된다. 제1 ECC 정정 유닛(61-1∼61-8)은 해밍 코드[ECC1(1, 1)∼ECC1(8, 1028)]를 이용하여, 데이터 블록[D(1, 1)∼D(8, 1024)] 및 대응하는 CRC(1, 1)∼CRC(8, 1024)에 대해, 그리고 RS(1, 1)∼RS(8, 4) 및 대응하는 CRC(1, 1025)∼CRC(8, 1028)에 대해, 페이지 단위로 제1 에러 정정을 수행하고, 제1 에러 정정된 데이터(DC1-1∼DC1-8)는 DRAM(20)에 저장된다.
계속해서, 에러 검출 유닛(60)은 에러 검출 동작을 수행한다. 보다 구체적으로, 제1 에러 정정된 제1 단위 데이터[D(1, 1)∼D(8, 1024)]와, 대응하는 CRC(1, 1)∼CRC(8, 1024), 그리고 제1 에러 정정된 RS(1, 1)∼RS(8, 4)와, 대응하는 CRC(1, 1025)∼CRC(8, 1028)가 DRAM(20)로부터 에러 검출 유닛(60-1∼60-8)에 페이지 단위로 각각 전송된다.
에러 검출 유닛(60-1∼60-8)은 각각, 대응하는 CRC(1, 1)∼CRC(8, 1028)을 이용하여, 제1 에러 정정된 데이터 블록[D(1, 1)∼D(8, 1024)] 및 제1 에러 정정된 RS(1, 1)∼RS(8, 4)에서 페이지 단위로 에러를 검출한다. 에러 검출 유닛(60-1∼60-8)은 각각, 에러 검출의 결과로서, 판독된 데이터 블록(D) 및 RS 코드(RS)에 에러가 존재하는 것을 나타내는 제1 에러 정보(S1∼S8)를 페이지 단위로 생성한다. 이 제1 에러 정보(S1∼S8)는 제2 ECC 정정 유닛(62)에 전송된다. 에러 검출 유닛(60-1∼60-8)이 각각 데이터 블록(D)에 에러가 존재한다고 검출하면, 제1 에러 정정된 데이터(DC1-1∼DC1-8)가 아니라, 정정되기 전의 데이터 블록(D)이 제2 ECC 정정 유닛(62)에 전송된다. 이것은, 에러 검출 유닛(60-1∼60-8)에 의해 검출된 에러가 발견된 데이터 블록(D)은 정정 불가능한 것이거나, 그 데이터 블록(D)이 제1 ECC 정정 유닛(61-1∼61-8)의 정정 능력을 넘은 에러를 포함하여, 제1 ECC 정정 유닛(61-1∼61-8)에 의해 수행된 에러 정정은 데이터 블록(D)에 추가 에러를 부과하는 결과를 초래하기 때문이다. 따라서, 정정되기 전의 데이터는 추가 에러를 갖는 데이터보다 에러가 적기 때문에, 정정되기 전의 데이터가 제2 ECC 정정 유닛(62)에 송신된다. RS(1, 1)∼RS(8, 4)에 관해서도 마찬가지이다.
도 11은 제1 에러 정정 후의 에러 검출을 설명하기 위한 개략도이고, 도 12는 제1 에러 정보(S1∼S8)의 일례를 도시하는 개략도이다. 도 11 및 도 12에 있어서, 제1 에러 정정 후의 에러 검출 결과로서, 에러가 없는 제1 단위 데이터가 있다면, 이 데이터에 대한 제1 에러 정보는 S=0으로 설정되고, 한편 제1 에러 정정 후의 에러 검출의 결과로서, 에러가 있는 제1 단위 데이터가 있다면, 이 데이터에 대한 제1 에러 정보는 S=1로 설정된다. 도 11 및 도 12의 예에서는 제1 단위 데이터 1, 4, 5에 에러가 있는 것을 나타내고 있다. 에러가 있는 제1 단위 데이터는 제2 에러 정정의 대상이 된다.
제1 에러 정정 후의 제2 단위 데이터(UDa1∼UDa1028) 및 제1 에러 정보(S1∼S8)는 페이지 단위로 제2 ECC 정정 유닛(62)에 전송된다. 제2 ECC 정정 유닛(62)은 제2 단위 데이터(UDa)에 포함되는 BCH 코드(ECC2)를 사용하고 제1 에러 정보(S1∼S8)를 참조하여, 제2 에러 정정의 대상이 되는 제1 단위 데이터에 대해 제2 에러 정정을 수행한다. 제2 ECC 정정 유닛(62)에 의해 정정된 제2 에러 정정된 데이터(DC2)는 DRAM(20)에 전송되고, DRAM(20)에 저장된 데이터 중, 제2 에러 정정된 데이터(DC2)에 대응하는 데이터는 갱신된다.
계속해서, 에러 검출 유닛(60-1∼60-8)은 에러 검출 동작을 수행한다. 보다 구체적으로, 제2 에러 정정된 데이터 블록[D(1, 1)∼D(8, 1024)]과, 대응하는 CRC(1, 1)∼CRC(8, 1024), 및 제2 에러 정정된 RS(1, 1)∼RS(8, 4)과, 대응하는 CRC(1, 1025)∼CRC(8, 1028)가 DRAM(20)로부터 페이지 단위로 에러 검출 유닛(60-1∼60-8)에 각각 전송된다.
에러 검출 유닛(60-1∼60-8)은 각각, 대응하는 CRC(1, 1)∼CRC(8, 1028)을 이용하여, 제2 에러 정정된 데이터 블록[D(1, 1)∼D(8, 1024)] 및 제2 에러 정정된 RS(1, 1)∼RS(8, 4)에서 에러를 검출한다. 에러 검출 유닛(60-1∼60-8)은 각각, 에러 검출의 결과로서, 제1 단위 데이터 및 RS 코드에 에러가 존재하는 것을 나타내는 제2 에러 정보(S1∼S8)를 페이지 단위로 생성한다. 이 제2 에러 정보(S1∼S8)는 각각 제3 ECC 정정 유닛(63-1∼63-8)에 전송된다. 제1 에러 정정의 경우와 마찬가지로, 에러 검출 유닛(60-1∼60-8)에 의한 검출 결과로서, 에러가 존재하는 데이터 블록(D)이 있다면, 제2 에러 정정된 데이터(DC2)가 아니라, 정정되기 전의 데이터 블록(D)이 제3 ECC 정정 유닛(63-1∼63-8)에 각각 전송된다. 이것은, 에러 검출 유닛(60-1∼60-8)에 의해 검출된 에러가 있는 데이터 블록(D)이 정정되기 불가능하거나, 데이터 블록(D)이 제2 ECC 정정 유닛(62)의 정정 능력을 넘는 에러를 포함하여, 제2 ECC 정정 유닛(62)에 의해 수행된 에러 정정이 데이터 블록(D)에 추가 에러를 부과하는 결과를 초래하기 때문이다. 따라서, 정정되기 전의 데이터는 추가 에러가 있는 데이터보다 에러가 적기 때문에, 정정되기 전의 데이터가 제3 ECC 정정 유닛(63-1∼63-8)에 보내어진다. RS(1, 1)∼RS(8, 4)에 관해서도 마찬가지이다. 제1 실시형태에서는 에러 검출 유닛(60-1∼60-8)이 에러 검출 동작을 병행하여 수행한다. 이와 같이, 에러 검출 유닛(60-1∼60-8)의 병행 동작은 처리 시간을 단축시킬 수 있다.
도 13은 제2 에러 정정 후의 에러 검출을 설명하기 위한 개략도이며, 도 14는 제2 에러 정정 후의 제2 에러 정보(S1∼S8)의 일례를 도시하는 개략도이다. 도 13 및 도 14에 있어서, 제2 에러 정정 후의 에러 검출의 결과로서 에러가 없는 제1 단위 데이터가 있다면, 이 데이터에 대한 제2 에러 정보는 S=0으로 설정되고, 한편 제2 에러 정정 후의 에러 검출의 결과로서, 에러가 있는 블록이 있다면, 그 블록에 대한 제2 에러 정보는 S=1로 설정된다. 도 13 및 도 14의 예는 제1 단위 데이터 5에 에러가 존재하는 것을 나타낸다. 이 에러가 있는 제1 단위 데이터가 제3 에러 정정의 대상이 된다.
도 15는 제2 ECC 정정 유닛(62)에 의해 수행되는 제1 라운드의 에러 정정 후의 블록 데이터의 일례를 도시하는 개략도이다. 빗금은, 제2 ECC 정정 유닛(62)에 의해 수행된 제1 라운드의 에러 정정에 의해 에러가 정정될 수 없기 때문에, 에러 검출 유닛(60-1∼60-8)에 의해 에러가 검출되는 데이터를 나타낸다.
제2 ECC 정정 유닛(62)에 의해 수행된 제1 라운드의 에러 정정의 결과로서 판독 데이터 전체에 에러가 존재하지 않는다면, 에러 정정 동작은 이 단계에서 종료된다. 즉, 후술하는 제3 ECC 정정 유닛(63)에 의한 에러 정정은 이루어지지 않는다. 예컨대, 제3 ECC 정정 유닛(63)은 전원 회로(5)로부터의 전원 공급을 정지하거나 클록 회로(도시 생략)로부터의 클록 신호의 공급을 정지함으로써 에러 정정 동작을 정지한다. 그 결과, 에러가 적은 경우, 데이터 판독 시간을 단축시킬 수 있다. 또한, 제3 ECC 정정 유닛(63)에 의한 에러 정정 동작이 이루어지지 않기 때문에, 소비 전력을 저감시킬 수 있다.
계속해서, 제3 ECC 정정 유닛(63)에 의해 제1 라운드의 에러 정정 동작이 이루어진다. 더 구체적으로, 행 방향으로 배열된 1024개의 데이터 블록[D(1, 1)∼D(1, 1024)]으로 구성되는 제3 단위 데이터(UDb1)와, 이에 대응하여 생성된 4개의 RS(1, 1)∼RS(1, 4)는 DRAM(20)으로부터 제3 ECC 정정 유닛(63-1)에 보내어진다. 제3 ECC 정정 유닛(63-1)은 RS(1, 1)∼RS(1, 4)을 이용하여, 데이터 블록[D(1, 1)∼D(1, 1024)]에서 에러 정정을 수행한다. 제2행∼제8행에 대응하는 제3 ECC 정정 유닛(63-2∼63-8)에 대해서도 마찬가지이다.
제1 실시형태에서는, 제3 ECC 정정 유닛(63-1∼63-8)이 정정 동작을 병행하여 수행하고, 그 병행 동작에 의해 처리 시간을 단축시킬 수 있다. 제3 ECC 정정 유닛(63-1∼63-8)에 의해 정정된 제3 에러 정정된 데이터(DC3)는 DRAM(20)에 보내어진다. DRAM(20)에 저장된 데이터 중, 제3 에러 정정된 데이터(DC3)에 대응하는 데이터는 갱신된다.
도 16은 제3 ECC 정정 유닛(63)에 의해 제1 라운드의 제3 에러 정정이 수행된 후의 블록 데이터의 일례를 도시하는 개략도이다. 도 16에 도시한 바와 같이, 판독 데이터[D(1, 2) 및 D(1, 6)]의 에러는 제3 ECC 정정 유닛(63-1)에 의해 정정되고, 판독 데이터[D(8, 1) 및 D(8, 1022)]의 에러는 제3 ECC 정정 유닛(63-8)에 의해 정정된다.
전술한 바와 같이, 제3 ECC 정정 유닛(63)에 의해 에러 정정이 이루어지기 전에, 에러 검출 유닛(60)을 이용하여 에러가 존재하는 판독 데이터의 위치가 식별된다. 따라서, 제3 ECC 정정 유닛(63)은 에러가 검출되는 판독 데이터에 대해서만 단순히 에러 정정을 수행한다. 이에 따라, 제3 ECC 정정 유닛(63)에 의해 수행되는 정정 시간을 단축시킬 수 있고, 또 소비 전력을 저감시킬 수 있다.
계속해서, 페이지 1∼페이지 1028에 대하여, 제2 ECC 정정 유닛(62)에 의해 제2 라운드의 제2 에러 정정이 수행된다. 이 제2 에러 정정 동작은 제2 ECC 정정 유닛(62)에 의해 수행되는 제1 라운드의 에러 정정과 동일하다. 도 17은 제2 ECC 정정 유닛(62)에 의해 제2 라운드의 제2 에러 정정이 수행된 후의 블록 데이터의 일례를 도시하는 개략도이다. 도 17에 도시하는 바와 같이, 판독 데이터[D(2, 1), D(3, 2), 및 D(2, 1022)]의 에러는 제2 ECC 정정 유닛(62)에 의해 정정된다.
이어서, 에러 검출 유닛(60-1∼60-8)은 모든 데이터 블록(D) 및 RS 코드의 에러를 검출한다. 이 검출 동작은 에러 검출 유닛(60-1∼60-8)에 의해 수행되는 제1 라운드의 에러 검출 동작과 동일하다. 제3 단위 데이터(UDb1∼UDb8)에 대해 제3 ECC 정정 유닛(63-1∼63-8)에 의해 제2 라운드의 제3 에러 정정이 각각 수행된다. 이 제3 에러 정정 동작은 제3 ECC 정정 유닛(63-1∼63-8)에 의해 수행되는 제1 라운드의 에러 정정과 동일하다.
도 18은 제3 ECC 정정 유닛(63)에 의해 제2 라운드의 제3 에러 정정이 수행된 후의 블록 데이터의 일례를 도시하는 개략도이다. 데이터 블록[D(2, 5)]의 에러는 제3 ECC 정정 유닛(63-2)에 의해 정정된다. 또한, 데이터 블록[D(3, 4), D(3, 7), 및 D(3, 1023)]의 에러는 제3 ECC 정정 유닛(63-3)에 의해 정정된다. 이들 동작에 의해, 데이터 블록[D(1, 1)∼D(8, 1024)]의 에러는 모두 정정된다.
그 후, 에러가 모두 정정된 데이터 블록[D(1, 1)∼D(8, 1024)]이 DRAM(20)으로부터 호스트 장치(1)에 출력된다.
도 19는 NAND 메모리(10)에의 데이터 기록 후의 경과 시간과 필요 정정 능력과의 관계를 도시하는 도면이다. 도 19에 도시하는 바와 같이, 경과 시간이 길어지면, NAND 메모리(10)에 기록된 데이터에서의 에러 수가 증가한다. 그렇기 때문에, 에러 수의 증가와 연관하여 에러 정정 능력을 변경한다. 게다가, 과잉 레벨 또는 불충분한 레벨의 에러 정정 능력이 사용되지 않도록, 제1 ECC 정정 유닛(61)∼제3 ECC 정정 유닛(63) 각각의 에러 정정 능력을 결정한다. 더욱 구체적으로, 경과 시간이 짧을 경우에는 제1 ECC 정정 유닛(61)에 의해서만 에러 정정이 수행될 수 있고, 경과 시간이 미리 정해진 시간(에러 수가 급격히 증가하는 시간)을 경과한 후에는 제1 ECC 정정 유닛(61), 제2 ECC 정정 유닛(62)에 의해, 그리고 제3 ECC 정정 유닛(63)에 의해 에러 정정이 수행될 수 있도록, 제1 ECC 정정 유닛(61)∼제3 ECC 정정 유닛(63)의 에러 정정 능력이 결정된다.
전술한 바와 같이, 제1 실시형태에 따르면, 먼저, 판독 데이터에 대하여, 제1 에러 정정 코드(해밍 코드)를 이용하여 제1 에러 정정을 수행한 다음, 제2 에러 정정 코드(BCH 코드)를 이용하여, 제1 에러 정정 결과에 대해 제2 에러 정정을 수행하며, 제3 에러 정정 코드(RS 코드)를 이용하여, 제2 에러 정정 결과에 대해 제3 에러 정정을 더 수행하는 것이 가능하다. 따라서, 제1 에러 정정 코드∼제3 에러 정정 코드의 정정 능력을 낮게 할 경우에도, 원하는 정정 능력을 확보할 수 있고, 또 회로 규모를 삭감할 수 있다.
또한, 저레벨의 에러 정정 능력을 갖는 제1 에러 정정 코드(해밍 코드)와, 중레벨의 에러 정정 능력을 갖는 제2 에러 정정 코드(BCH 코드)와, 고레벨의 에러 정정 능력을 갖는 제3 에러 정정 코드(RS 코드)를 이용하여 에러 정정이 3중으로 수행되며, 이에 고레벨의 에러 정정의 디코딩 빈도를 대폭 줄일 수 있다. 이 결과, 하드웨어가 제공되지 않더라도, 소프트웨어를 이용하여 에러 정정을 만족스럽게 수행할 수 있게 되어, 회로 규모를 삭감할 수 있다.
제1 ECC 정정 유닛(61)에 의해 수행된 제1 에러 정정의 결과로서, 판독 데이터 전체에 에러가 존재하지 않는다고 결정되는 경우에, 제2 ECC 정정 유닛(62) 및 제3 ECC 정정 유닛(63)은 에러 정정을 수행하지 않는다. 이에 따라, 에러가 적은 경우에 데이터 판독 시간을 단축시킬 수 있다. 더 구체적으로, 에러가 적은 경우의 데이터 판독 시간의 단축과, 에러가 많은 경우의 높은 정정 능력에 따른 성능을 양립시킬 수 있다. 또한, 제2 ECC 정정 유닛(62) 및 제3 ECC 정정 유닛(63)의 동작을 정지함으로써, 소비 전력을 저감시킬 수 있다.
또한, 제2 에러 정정 코드(BCH 코드)를 이용하여 열 방향에서의 데이터 에러 정정을 수행하고, 제3 에러 정정 코드(RS 코드)를 이용하여 행 방향에서의 데이터 에러 정정을 수행한다. 이들 정정에 의해 NAND형 메모리(10)의 메모리 블록 내의 모든 페이지에 대해 에러 정정이 가능하다. 또한, 에러 발생 확률이 높은 영역에서는 에러 정정이 다수회 수행될 수 있기 때문에, 저장되는 데이터의 위치로 인해 에러 발생 확률이 크게 다른 반도체 메모리에 대해서는 제1 실시형태가 특히 유용하다.
에러 검출 유닛(60)을 이용하여 에러가 존재하는 데이터의 위치를 식별하는 것이 가능하기 때문에, 제2 ECC 정정 유닛(62) 및 제3 ECC 정정 유닛(63)은 에러가 검출된 판독 데이터에 대해서만 에러 정정을 수행해야 한다. 이에, 제2 ECC 정정 유닛(62) 및 제3 ECC 정정 유닛(63)에 의한 처리 시간을 단축시킬 수 있다.
또한, 에러 검출 코드(CRC)를 이용하여. 에러가 존재하는 데이터의 위치를 검출할 수 있기 때문에, 제3 ECC 정정 유닛(63)은 에러 검출을 수행할 필요가 없다. 이에 따라, RS 코드(제1 실시형태에서는 4개의 RS 코드)가 모두 에러 정정에 이용될 수 있다.
도 20∼도 22를 참조하여, 이하에 본 발명의 제2 실시형태에 따른 SSD에 대해서 설명한다. 제2 실시형태는, SSD(100)가 제1 및 제2 에러 정정을 수행하고, 고레벨의 에러 정정 능력을 갖는 제3 에러 정정을 SSD(100)가 아니라 호스트 장치(1)가 수행하도록 구성된다. 이 구성에 의해, 제1 및 제2 에러 정정에 의해 거의 모든 에러가 정정될 수 있고, 다른 것보다도 장시간의 처리 시간을 필요로 하는 제3 에러 정정을 덜 빈번하게 사용하기 때문에, SSD(100)에 대한 부하를 경감시킬 수 있다.
도 20은 제2 실시형태에 따른 에러 정정 원리를 설명하기 위한 개략도이다. 도 21은 제2 실시형태에 따른 SSD(100) 및 호스트 장치(201)의 구성을 도시하는 개략도이다. 도 20을 참조하면, 제1 에러 정정(A) 및 제2 에러 정정(B)은 SSD(100)에 의해 이루어지고, 제3 에러 정정(C) 이후의 처리는 호스트 장치(201)에 의해 이루어진다.
도 21에 도시하는 바와 같이, 호스트 장치(201)는 CRC를 이용하여 각 데이터 블록(D)의 에러를 검출하는 에러 검출 유닛(101)과, BCH 코드(제2 에러 정정 코드)를 이용하여 제2 에러 정정을 수행하는 제2 ECC 정정 유닛(102)과, RS 코드(제3 에러 정정 코드)를 이용하여 제3 에러 정정을 수행하는 제3 ECC 정정 유닛(103)을 포함한다. 호스트 장치(201)의 CPU는 소프트웨어를 실행하여 에러 검출 유닛(101), 제2 ECC 정정 유닛(102), 및 제3 ECC 정정 유닛(103)이 실현되게 한다.
SSD(100)는 제2 에러 정정된 데이터 블록[D(1, 1)∼D(8, 1024)] 및 대응하는 CRC(1, 1)∼CRC(8, 1024)과, RS(1, 1)∼RS(8, 4) 및 대응하는 CRC(1, 1025)∼CRC(8, 1028), ECC1(1, 1)∼ECC1(8, 1028), 및 제2 에러 정보를 호스트 장치(201)에 전송한다.
호스트 장치(201)는 제2 에러 정보를 이용하여, SSD(100)로부터 수신된 제2 에러 정정된 데이터에 대해 제3 에러 정정을 수행하고, CRC를 이용하여 정정 결과를 확인하다. 에러가 검출되면, 제2 에러 정정을 다시 수행하고, 에러가 없어질 때까지, 제2 및 제3 에러 정정을 교대로 반복한다(도 15∼도 19의 처리를 수행한다).
도 22는 제2 실시형태에 따른 ECC 회로(242)의 디코딩 시스템의 주요부를 도시하는 블록도이다. ECC 회로(242)의 디코딩 시스템은 제3 ECC 정정 유닛을 실장할 필요가 없기 때문에, 회로 규모를 삭감할 수 있다.
제2 실시형태에 따르면, 제3 에러 정정이 호스트 장치(201)에 의해 수행되기 때문에, SSD(100)에 의해 제3 에러 정정을 수행할 필요가 없어져, SSD(100)에 대한 부하 및 회로 규모를 삭감하는 것이 가능하다.
제2 실시형태에서는 본 발명이 NAND 메모리를 갖는 SSD에 적용되지만, 본 발명은 NOR형 메모리와 같은 다른 플래시 EEPROM(Electrically Erasable Programmable Read-Only Memory)을 갖는 임의의 SSD에도 적용될 수 있다.
본 발명에 따르면, 에러 정정 능력의 손상 없이 소비 전력 및 회로 규모를 저감시킬 수 있는 반도체 기억 장치, 그 제어 방법, 및 에러 정정 시스템을 제공하는 것이 가능하다.

Claims (13)

  1. 행렬형으로 배열되며 각각 복수의 데이터로 구성되는 복수의 데이터 블록을 내부에 저장할 수 있는 일시 기억 유닛과,
    상기 데이터 블록마다 에러를 검출하기 위한 에러 검출 코드를 생성하는 에러 검출 코드 생성 유닛과,
    상기 데이터 블록으로 구성되는 제1 단위 데이터마다 에러를 정정하기 위한 제1 에러 정정 코드를 생성하는 제1 에러 정정 코드 생성 유닛과,
    열 방향으로 배열된 데이터 블록으로 구성되는 제2 단위 데이터마다 에러를 정정하기 위한 제2 에러 정정 코드를 생성하는 제2 에러 정정 코드 생성 유닛과,
    행 방향으로 배열된 데이터 블록으로 구성되는 제3 단위 데이터마다 에러를 정정하기 위한 제3 에러 정정 코드를 생성하는 제3 에러 정정 코드 생성 유닛과,
    상기 데이터 블록, 생성된 에러 검출 코드, 및 생성된 제1∼제3 에러 정정 코드를 내부에 저장할 수 있는 비휘발성 반도체 메모리
    를 포함하는 반도체 기억 장치.
  2. 제1항에 있어서,
    각각의 데이터 블록에 대해, 대응하는 상기 제1 에러 정정 코드를 이용하여 제1 에러 정정을 수행하는 제1 에러 정정 유닛과,
    제1 에러 정정된 블록에서, 대응하는 상기 에러 검출 코드를 이용하여 에러를 검출하는 제1 에러 검출 유닛과,
    상기 제1 에러 검출 유닛에 의해 검출된 상기 제1 에러 정정된 블록의 에러에 대해, 대응하는 상기 제2 에러 정정 코드를 이용하여 제2 에러 정정을 수행하는 제2 에러 정정 유닛과,
    제2 에러 정정된 블록에서, 대응하는 상기 에러 검출 코드를 이용하여 에러를 검출하는 제2 에러 검출 유닛과,
    상기 제2 에러 검출 유닛에 의해 검출된 상기 제2 에러 정정된 블록의 에러에 대해, 대응하는 상기 제3 에러 정정 코드를 이용하여 제3 에러 정정을 수행하는 제3 에러 정정 유닛
    을 더 포함하는 반도체 기억 장치.
  3. 제1항에 있어서, 에러 정정 능력의 레벨은 제3 에러 정정>제2 에러 정정>제1 에러 정정과 같은 내림차순으로 제공되는 것인 반도체 기억 장치.
  4. 제2항에 있어서, 상기 제2 에러 정정 유닛과 상기 제3 에러 정정 유닛은 각각의 에러 정정 동작을 교대로 반복하는 것인 반도체 기억 장치.
  5. 제1항에 있어서, 상기 에러 검출 코드 생성 유닛은 상기 제3 에러 정정 코드의 에러를 검출하기 위한 에러 검출 코드를 생성하는 것인 반도체 기억 장치.
  6. 제1항에 있어서, 상기 제1 단위 데이터는 상기 데이터 블록에 대응하는 에러 검출 코드를 포함하는 것인 반도체 기억 장치.
  7. 제1항에 있어서, 상기 제2 단위 데이터는 그 제2 단위 데이터를 구성하는 데이터 블록에 각각 대응하는 에러 검출 코드를 포함하는 것인 반도체 기억 장치.
  8. 제1항에 있어서, 상기 제2 에러 정정 코드 생성 유닛은 열 방향으로 배열된 복수의 제3 에러 정정 코드 각각에서 에러를 정정하기 위한 제2 에러 정정 코드를 생성하는 것인 반도체 기억 장치.
  9. 제2항에 있어서, 상기 제1 에러 검출 유닛은 에러가 검출되는 데이터 블록을 식별하기 위한 제1 에러 정보를 생성하고,
    상기 제2 에러 정정 유닛은 상기 제1 에러 정보에 기초하여, 제2 에러 정정을 수행하며,
    상기 제2 에러 검출 유닛은 에러가 검출되는 데이터 블록을 식별하기 위한 제2 에러 정보를 생성하고,
    상기 제3 에러 정정 유닛은 상기 제2 에러 정보에 기초하여, 제3 에러 정정을 수행하는 것인 반도체 기억 장치.
  10. 제1항에 있어서, 상기 비휘발성 반도체 메모리는 NAND형 플래시 메모리인 것인 반도체 기억 장치.
  11. 반도체 기억 장치를 제어하는 방법에 있어서,
    행렬형으로 배열되며 각각 복수의 데이터로 구성되는 복수의 데이터 블록을 일시 기억장치에 저장하는 단계와,
    상기 데이터 블록마다 에러를 검출하기 위한 에러 검출 코드를 생성하는 단계와,
    상기 데이터 블록으로 구성되는 제1 단위 데이터마다 에러를 정정하기 위한 제1 에러 정정 코드를 생성하는 단계와,
    열 방향으로 배열된 데이터 블록으로 구성되는 제2 단위 데이터마다 에러를 정정하기 위한 제2 에러 정정 코드를 생성하는 단계와,
    행 방향으로 배열된 데이터 블록으로 구성되는 제3 단위 데이터마다 에러를 정정하기 위한 제3 에러 정정 코드를 생성하는 단계와,
    상기 데이터 블록, 생성된 에러 검출 코드, 및 생성된 제1∼제3 에러 정정 코드를 비휘발성 반도체 메모리에 저장하는 단계
    를 포함하는 반도체 기억 장치의 제어 방법.
  12. 제11항에 있어서,
    각각의 데이터 블록에 대해, 대응하는 상기 제1 에러 정정 코드를 이용하여 제1 에러 정정을 수행하는 단계와,
    제1 에러 정정된 블록에서, 대응하는 상기 에러 검출 코드를 이용하여 에러를 검출하는 제1 에러 검출 단계와,
    상기 제1 에러 검출 단계에서 검출된 상기 제1 에러 정정된 블록의 에러에 대해, 대응하는 상기 제2 에러 정정 코드를 이용하여 제2 에러 정정을 수행하는 단계와,
    제2 에러 정정된 블록에서, 대응하는 상기 에러 검출 코드를 이용하여 에러를 검출하는 제2 에러 검출 단계와,
    상기 제2 에러 검출 단계에서 검출된 상기 제2 에러 정정된 블록의 에러에 대해, 대응하는 상기 제3 에러 정정 코드를 이용하여 제3 에러 정정을 수행하는 단계
    를 더 포함하는 반도체 기억 장치의 제어 방법.
  13. 에러 정정 시스템에 있어서,
    호스트 장치와,
    상기 호스트 장치의 지시에 따라 비휘발성 메모리에 대해 데이터의 판독/기록을 수행하는 반도체 기억 장치
    를 포함하고, 상기 반도체 기억 장치는,
    상기 호스트 장치로부터 전송된 데이터를, 각각 복수의 데이터로 구성되는 복수의 데이터 블록으로 분할하여, 그 데이터 블록을 행렬형으로 내부에 저장하는 일시 기억 유닛과,
    상기 데이터 블록마다 에러를 검출하기 위한 에러 검출 코드를 생성하는 에러 검출 코드 생성 유닛과,
    상기 데이터 블록으로 구성되는 제1 단위 데이터마다 에러를 정정하기 위한 제1 에러 정정 코드를 생성하는 제1 에러 정정 코드 생성 유닛과,
    열 방향으로 배열된 데이터 블록으로 구성되는 제2 단위 데이터마다 에러를 정정하기 위한 제2 에러 정정 코드를 생성하는 제2 에러 정정 코드 생성 유닛과,
    행 방향으로 배열된 데이터 블록으로 구성되는 제3 단위 데이터마다 에러를 정정하기 위한 제3 에러 정정 코드를 생성하는 제3 에러 정정 코드 생성 유닛과,
    상기 데이터 블록, 생성된 에러 검출 코드, 및 생성된 제1∼제3 에러 정정 코드를 내부에 저장할 수 있는 비휘발성 반도체 메모리와,
    각각의 데이터 블록에 대해, 대응하는 상기 제1 에러 정정 코드를 이용하여 제1 에러 정정을 수행하는 제1 에러 정정 유닛과,
    제1 에러 정정된 블록에서, 대응하는 상기 에러 검출 코드를 이용하여 에러를 검출하는 제1 에러 검출 유닛과,
    상기 제1 에러 검출 유닛에 의해 검출된 상기 제1 에러 정정된 블록의 에러에 대해, 대응하는 상기 제2 에러 정정 코드를 이용하여 제2 에러 정정을 수행하는 제2 에러 정정 유닛과,
    제2 에러 정정된 블록에서, 대응하는 상기 에러 검출 코드를 이용하여 에러를 검출하는 제2 에러 검출 유닛과,
    제2 에러 정정된 데이터 및 상기 제2 에러 검출 유닛의 검출 결과를 상기 호스트 장치에 전송하는 전송 유닛
    을 포함하고,
    상기 호스트 장치는, 상기 반도체 기억 장치로부터 수신되는, 상기 제2 에러 검출 유닛에 의해 검출된 상기 제2 에러 정정된 블록의 에러에 대해, 대응하는 상기 제3 에러 정정 코드를 이용하여 제3 에러 정정을 수행하는 제3 에러 정정 유닛을 포함하는 것인 에러 정정 시스템.
KR1020107018696A 2008-02-29 2008-09-19 반도체 기억 장치, 그 제어 방법, 및 에러 정정 시스템 KR101203235B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JPJP-P-2008-051419 2008-02-29
JP2008051419A JP5166074B2 (ja) 2008-02-29 2008-02-29 半導体記憶装置、その制御方法、および誤り訂正システム
PCT/JP2008/067585 WO2009107267A1 (en) 2008-02-29 2008-09-19 Semiconductor storage device, method of controlling the same, and error correction system

Publications (2)

Publication Number Publication Date
KR20100113135A true KR20100113135A (ko) 2010-10-20
KR101203235B1 KR101203235B1 (ko) 2012-11-20

Family

ID=41015677

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107018696A KR101203235B1 (ko) 2008-02-29 2008-09-19 반도체 기억 장치, 그 제어 방법, 및 에러 정정 시스템

Country Status (6)

Country Link
US (4) US8086933B2 (ko)
EP (1) EP2248028A4 (ko)
JP (1) JP5166074B2 (ko)
KR (1) KR101203235B1 (ko)
CN (1) CN101946239A (ko)
WO (1) WO2009107267A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101320684B1 (ko) * 2011-11-18 2013-10-18 한국과학기술원 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치
US9654147B2 (en) 2013-11-29 2017-05-16 Korea Advanced Institute Of Science And Technology Concatenated error correction device

Families Citing this family (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7574272B2 (en) * 2000-10-13 2009-08-11 Eric Paul Gibbs System and method for data transfer optimization in a portable audio device
JP4564520B2 (ja) * 2007-08-31 2010-10-20 株式会社東芝 半導体記憶装置およびその制御方法
JP4672743B2 (ja) 2008-03-01 2011-04-20 株式会社東芝 誤り訂正装置および誤り訂正方法
CN102034552A (zh) * 2009-09-25 2011-04-27 威刚科技(苏州)有限公司 存储装置与其资料处理方法
WO2011073940A1 (en) * 2009-12-17 2011-06-23 International Business Machines Corporation Data management in solid state storage systems
US8631304B2 (en) 2010-01-28 2014-01-14 Sandisk Il Ltd. Overlapping error correction operations
US8365041B2 (en) * 2010-03-17 2013-01-29 Sandisk Enterprise Ip Llc MLC self-raid flash data protection scheme
JP5017407B2 (ja) 2010-03-24 2012-09-05 株式会社東芝 半導体記憶装置
JP4772909B1 (ja) * 2010-03-30 2011-09-14 株式会社東芝 情報処理装置および情報処理方法
US8572457B2 (en) * 2010-05-28 2013-10-29 Seagate Technology Llc Outer code protection for solid state memory devices
JP5361826B2 (ja) * 2010-08-09 2013-12-04 株式会社東芝 記録ユニット及び故障チップ特定方法
JP5651457B2 (ja) 2010-12-15 2015-01-14 株式会社東芝 半導体記憶装置
JP2012137994A (ja) 2010-12-27 2012-07-19 Toshiba Corp メモリシステムおよびその制御方法
KR101826137B1 (ko) * 2011-03-24 2018-03-22 삼성전자주식회사 메모리 컨트롤러, 이를 포함하는 장치들, 및 이의 동작 방법
US8589761B2 (en) * 2011-05-31 2013-11-19 Micron Technology, Inc. Apparatus and methods for providing data integrity
CN102231284A (zh) * 2011-06-02 2011-11-02 孙飞 一种降低闪存芯片数据写操作功耗的方法
JP2011210277A (ja) * 2011-06-20 2011-10-20 Toshiba Corp 情報処理装置および情報処理方法
US8832524B2 (en) 2011-09-22 2014-09-09 Violin Memory, Inc. System and method for correcting errors in data using a compound code
US8645789B2 (en) * 2011-12-22 2014-02-04 Sandisk Technologies Inc. Multi-phase ECC encoding using algebraic codes
US8719677B2 (en) * 2011-12-22 2014-05-06 Sandisk Technologies Inc. Using ECC encoding to verify an ECC decode operation
US8996950B2 (en) * 2012-02-23 2015-03-31 Sandisk Technologies Inc. Erasure correction using single error detection parity
JP5768022B2 (ja) 2012-03-19 2015-08-26 株式会社東芝 メモリコントローラ、記憶装置、誤り訂正装置および誤り訂正方法
JP2013205853A (ja) * 2012-03-27 2013-10-07 Nec Corp フラッシュメモリディスク装置、フラッシュメモリディスク装置におけるデータ記憶制御方法およびプログラム
US9230683B2 (en) 2012-04-25 2016-01-05 Semiconductor Energy Laboratory Co., Ltd. Semiconductor device and driving method thereof
TW201346922A (zh) 2012-05-14 2013-11-16 Toshiba Kk 記憶體控制器、記憶裝置及錯誤修正方法
US9215726B1 (en) 2012-07-24 2015-12-15 Spectranet, Inc. Low latency wireless messaging
US8954817B2 (en) 2012-07-31 2015-02-10 Kabushiki Kaisha Toshiba Storage apparatus and controller
JP2014035673A (ja) * 2012-08-09 2014-02-24 Renesas Electronics Corp 半導体記憶装置及び方法
US9312885B2 (en) * 2012-08-15 2016-04-12 Kabushiki Kaisha Toshiba Nonvolatile semiconductor memory system error correction capability of which is improved
TWI477104B (zh) * 2012-09-13 2015-03-11 Mstar Semiconductor Inc 錯誤校正裝置與錯誤校正方法
CN103716119B (zh) * 2012-09-29 2016-12-28 晨星软件研发(深圳)有限公司 错误校正装置与错误校正方法
WO2014061161A1 (ja) * 2012-10-19 2014-04-24 富士通株式会社 記録再生装置、誤り訂正方法および制御装置
CN103839594A (zh) * 2012-11-27 2014-06-04 建兴电子科技股份有限公司 固态储存装置及其联合编解码方法
US9230684B2 (en) 2012-12-19 2016-01-05 Kabushiki Kaisha Toshiba Memory controller, storage device, and memory control method
US10204008B2 (en) 2012-12-21 2019-02-12 Hewlett Packard Enterprise Development Lp Memory module having error correction logic
TWI527040B (zh) 2013-05-13 2016-03-21 群聯電子股份有限公司 資料寫入方法、記憶體儲存裝置與記憶體控制器
TWI497280B (zh) * 2013-07-08 2015-08-21 Phison Electronics Corp 資料保護方法、記憶體儲存裝置與記憶體控制器
US9424131B2 (en) * 2013-09-19 2016-08-23 Avago Technologies General Ip (Singapore) Pte. Ltd. Spatially decoupled redundancy schemes for a solid state drive (SSD)
JP5733766B2 (ja) * 2013-11-07 2015-06-10 国立大学法人 東京大学 データ入出力制御装置および半導体記憶装置システム
KR102094878B1 (ko) * 2014-02-10 2020-03-30 에스케이하이닉스 주식회사 반도체 메모리 장치 및 동작 방법
US9520901B2 (en) 2014-03-06 2016-12-13 Kabushiki Kaisha Toshiba Memory controller, memory system, and memory control method
TWI556254B (zh) 2014-10-14 2016-11-01 慧榮科技股份有限公司 資料儲存裝置及其資料存取方法
US9711240B2 (en) 2015-01-08 2017-07-18 Kabushiki Kaisha Toshiba Memory system
RU2682387C1 (ru) * 2015-03-09 2019-03-19 Тосиба Мемори Корпорейшн Полупроводниковое запоминающее устройство
JP6605839B2 (ja) * 2015-05-08 2019-11-13 株式会社東芝 復号装置、復号方法及びプログラム
US10063263B2 (en) * 2015-05-20 2018-08-28 International Business Machines Corporation Extended error correction coding data storage
CN106970852A (zh) * 2016-01-14 2017-07-21 钰创科技股份有限公司 闪存错误控制电路及其方法
CN107391026B (zh) 2016-04-27 2020-06-02 慧荣科技股份有限公司 闪存装置及闪存存储管理方法
US10019314B2 (en) 2016-04-27 2018-07-10 Silicon Motion Inc. Flash memory apparatus and storage management method for flash memory
CN112463433B (zh) * 2016-04-27 2024-03-29 慧荣科技股份有限公司 存取闪存模块的方法及相关的闪存控制器与记忆装置
US10025662B2 (en) 2016-04-27 2018-07-17 Silicon Motion Inc. Flash memory apparatus and storage management method for flash memory
CN111679787B (zh) 2016-04-27 2023-07-18 慧荣科技股份有限公司 闪存装置、闪存控制器及闪存存储管理方法
TWI614759B (zh) * 2016-04-27 2018-02-11 慧榮科技股份有限公司 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置
US10110255B2 (en) 2016-04-27 2018-10-23 Silicon Motion Inc. Method for accessing flash memory module and associated flash memory controller and memory device
US10133664B2 (en) * 2016-04-27 2018-11-20 Silicon Motion Inc. Method, flash memory controller, memory device for accessing 3D flash memory having multiple memory chips
US10289487B2 (en) 2016-04-27 2019-05-14 Silicon Motion Inc. Method for accessing flash memory module and associated flash memory controller and memory device
US9910772B2 (en) 2016-04-27 2018-03-06 Silicon Motion Inc. Flash memory apparatus and storage management method for flash memory
CN112214348B (zh) * 2016-04-27 2023-08-29 慧荣科技股份有限公司 存取闪存模块的方法及相关的闪存控制器与记忆装置
CN106502590A (zh) * 2016-10-24 2017-03-15 郑州云海信息技术有限公司 一种固态硬盘ssd存储系统及方法
KR20180052154A (ko) * 2016-11-09 2018-05-18 에스케이하이닉스 주식회사 메모리 시스템
KR20180078426A (ko) * 2016-12-29 2018-07-10 에스케이하이닉스 주식회사 데이터 저장 장치의 에러 정정 코드 처리 방법
KR102333140B1 (ko) 2017-08-18 2021-12-02 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10831596B2 (en) * 2018-01-22 2020-11-10 Micron Technology, Inc. Enhanced error correcting code capability using variable logical to physical associations of a data block
US10521296B2 (en) 2018-02-20 2019-12-31 Micron Technology, Inc. Performing an additional decoding operation on an identified set of bits of a data block
US10748462B2 (en) * 2018-05-29 2020-08-18 Shenzhen China Star Optoelectronics Technology Co., Ltd. Hardware controller of NAND device, control method and liquid crystal display
US11953988B2 (en) * 2019-05-23 2024-04-09 Micron Technology, Inc. Error correction memory device with fast data access
US11537464B2 (en) 2019-06-14 2022-12-27 Micron Technology, Inc. Host-based error correction
US11023317B2 (en) 2019-07-12 2021-06-01 Micron Technology, Inc. Read recovery control circuitry
US11428104B2 (en) 2019-07-29 2022-08-30 Pratt & Whitney Canada Corp. Partition arrangement for gas turbine engine and method
JP2021033530A (ja) 2019-08-21 2021-03-01 キオクシア株式会社 メモリシステム
KR20210147686A (ko) * 2020-05-29 2021-12-07 에스케이하이닉스 주식회사 오류 정정 회로 및 오류 정정 인코딩 방법
US11656937B2 (en) * 2020-08-25 2023-05-23 Micron Technology, Inc. Techniques for error detection and correction in a memory system
EP4227944A1 (en) 2020-09-18 2023-08-16 Changxin Memory Technologies, Inc. Memory
CN117079686A (zh) * 2020-09-18 2023-11-17 长鑫存储技术有限公司 存储器
CN115329399B (zh) * 2022-10-13 2023-01-31 江苏华存电子科技有限公司 基于nand的垂直水平raid4数据保护管理方法及系统

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61264599A (ja) * 1985-05-16 1986-11-22 Fujitsu Ltd 半導体記憶装置
JP2696212B2 (ja) * 1987-05-06 1998-01-14 セイコーエプソン株式会社 誤り訂正装置
EP0540007B1 (en) * 1991-10-29 1999-01-07 Nippon Hoso Kyokai Method and apparatus for the reception of information signals
JPH0675799A (ja) * 1992-08-28 1994-03-18 Matsushita Electric Ind Co Ltd メモリアクセス装置とメモリ装置
US5357527A (en) * 1992-12-31 1994-10-18 Trimble Navigation Limited Validation of RAM-resident software programs
JPH06236632A (ja) * 1993-02-09 1994-08-23 Matsushita Electric Ind Co Ltd 光ディスクおよび光ディスク再生装置
JPH0816488A (ja) * 1994-06-29 1996-01-19 Nec Corp 電子ディスク装置
JP3190853B2 (ja) * 1997-05-23 2001-07-23 エヌイーシーマイクロシステム株式会社 誤り訂正処理方法及びその装置
JPH11143787A (ja) * 1997-11-06 1999-05-28 Hitachi Ltd 記録再生装置
US6052815A (en) * 1997-11-14 2000-04-18 Cirrus Logic, Inc. ECC system for generating a CRC syndrome over randomized data in a computer storage device
US6453427B2 (en) * 1998-12-31 2002-09-17 Intel Corporation Method and apparatus for handling data errors in a computer system
JP3920558B2 (ja) * 2000-11-08 2007-05-30 株式会社東芝 データ処理方法及び装置及び記録媒体及び再生方法及び装置
JP4299558B2 (ja) 2003-03-17 2009-07-22 株式会社ルネサステクノロジ 情報記憶装置および情報処理システム
US7206987B2 (en) * 2003-04-30 2007-04-17 Hewlett-Packard Development Company, L.P. Error detection and correction in a layered, 3-dimensional storage architecture
JP2006146976A (ja) * 2004-11-16 2006-06-08 Sony Corp 記録再生システム、誤り訂正装置、記録再生方法
JP2006295510A (ja) * 2005-04-08 2006-10-26 Mitsubishi Electric Corp Fecフレーム符号化装置、fec多重化装置、fec多重分離装置、および光通信装置
US20060256615A1 (en) * 2005-05-10 2006-11-16 Larson Thane M Horizontal and vertical error correction coding (ECC) system and method
JP4413840B2 (ja) 2005-09-20 2010-02-10 株式会社東芝 記憶媒体再生装置、記憶媒体再生方法および記憶媒体再生プログラム
JP4071789B2 (ja) * 2005-09-26 2008-04-02 株式会社東芝 メモリアドレス発生装置及び方法
US8291295B2 (en) * 2005-09-26 2012-10-16 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
KR100845529B1 (ko) * 2007-01-03 2008-07-10 삼성전자주식회사 플래시 메모리 장치의 이씨씨 제어기 및 그것을 포함한메모리 시스템
JP2008300020A (ja) 2007-06-04 2008-12-11 Toshiba Corp 再生装置
JP4538034B2 (ja) * 2007-09-26 2010-09-08 株式会社東芝 半導体記憶装置、及びその制御方法
JP2009181439A (ja) * 2008-01-31 2009-08-13 Toshiba Corp メモリシステム
JP4672743B2 (ja) 2008-03-01 2011-04-20 株式会社東芝 誤り訂正装置および誤り訂正方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101320684B1 (ko) * 2011-11-18 2013-10-18 한국과학기술원 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치
US9654147B2 (en) 2013-11-29 2017-05-16 Korea Advanced Institute Of Science And Technology Concatenated error correction device

Also Published As

Publication number Publication date
JP5166074B2 (ja) 2013-03-21
US8381066B2 (en) 2013-02-19
CN101946239A (zh) 2011-01-12
JP2009211209A (ja) 2009-09-17
US20130132795A1 (en) 2013-05-23
EP2248028A1 (en) 2010-11-10
US20130297984A1 (en) 2013-11-07
US20120166908A1 (en) 2012-06-28
KR101203235B1 (ko) 2012-11-20
US20100313099A1 (en) 2010-12-09
EP2248028A4 (en) 2012-03-28
US8086933B2 (en) 2011-12-27
US8751896B2 (en) 2014-06-10
US8499216B2 (en) 2013-07-30
WO2009107267A1 (en) 2009-09-03

Similar Documents

Publication Publication Date Title
KR101203235B1 (ko) 반도체 기억 장치, 그 제어 방법, 및 에러 정정 시스템
JP4538034B2 (ja) 半導体記憶装置、及びその制御方法
US20190215015A1 (en) Semiconductor memory device and method of controlling the same
US7739576B2 (en) Variable strength ECC
KR101730510B1 (ko) 메타데이터 태그를 통한 불규칙적인 패리티 분포 검출
JP2009129070A (ja) フラッシュメモリ記憶装置の制御方法、その方法を用いたフラッシュメモリ記憶装置及びストレージシステム
US8760921B2 (en) Storage device and control method of nonvolatile memory
KR20110107273A (ko) 반도체 기억 장치
US8201053B2 (en) Dynamic electronic correction code feedback to extend memory device lifetime
US8347183B2 (en) Flash memory device using ECC algorithm and method of operating the same
US11055174B2 (en) Soft chipkill recovery for bitline failures
US20200412386A1 (en) Generalized concatenated error correction coding scheme with locality
US10396825B2 (en) Memory controller, semiconductor memory system and operating method thereof
US9715908B2 (en) Controller for a solid-state drive, and related solid-state drive
US11050442B2 (en) Reducing the latency of a syndrome-based quasi-cyclic decoder
JP2013196674A (ja) メモリシステムおよび多重化方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20151016

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee