KR100949471B1 - 소프트웨어(s/w) 에러정정코드(ecc)를 이용한낸드 플래시에서의 데이터 입출력 방법 및 그 방법을이용한 임베디드 시스템 - Google Patents

소프트웨어(s/w) 에러정정코드(ecc)를 이용한낸드 플래시에서의 데이터 입출력 방법 및 그 방법을이용한 임베디드 시스템 Download PDF

Info

Publication number
KR100949471B1
KR100949471B1 KR1020080031402A KR20080031402A KR100949471B1 KR 100949471 B1 KR100949471 B1 KR 100949471B1 KR 1020080031402 A KR1020080031402 A KR 1020080031402A KR 20080031402 A KR20080031402 A KR 20080031402A KR 100949471 B1 KR100949471 B1 KR 100949471B1
Authority
KR
South Korea
Prior art keywords
ecc
nand flash
data
page
error
Prior art date
Application number
KR1020080031402A
Other languages
English (en)
Other versions
KR20090105760A (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 KR1020080031402A priority Critical patent/KR100949471B1/ko
Publication of KR20090105760A publication Critical patent/KR20090105760A/ko
Application granted granted Critical
Publication of KR100949471B1 publication Critical patent/KR100949471B1/ko

Links

Images

Classifications

    • 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
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • 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/1068Adding 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 sector programmable memories, e.g. flash disk
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/403Error protection encoding, e.g. using parity or ECC codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명은 H/W ECC의 한계를 극복하면서도 속도 면에서도 우수한 정정오류능력을 채용한 낸드 플래시에서의 데이터 입출력 방법 및 그 방법을 이용한 임베디드 시스템을 제공한다. 그 데이터 입출력 방법은 낸드 플래시(NAND flash)의 데이터 영역에 데이터를 쓰는 과정에 오류가 발생한 경우에 소프트웨어(S/W) 에러정정코드(ECC)를 이용하여 데이터 쓰기 오류정정부호(parity)를 발생시키는 단계; 및 상기 오류 부호를 낸드 플래시의 스페어 영역에 쓰는 과정에 오류가 발생한 경우에 하드웨어(H/W) ECC를 이용하여 스페어 오류정정부호(parity)를 발생시키는 단계;를 포함한다.
ECC(Error Correction Code), 오류정정부호(Parity), MLC(Multi-Level Cell)

Description

소프트웨어(S/W) 에러정정코드(ECC)를 이용한 낸드 플래시에서의 데이터 입출력 방법 및 그 방법을 이용한 임베디드 시스템{Method of inputing and outputing data in NAND flash using software(S/W) error correction code(ECC) and embedded system using the same method}
본 발명은 임베디드 시스템 및 그 데이터 입출력 방법에 관한 것으로, 특히 비휘발성 메모리 장치의 하나인 임베디드 시스템 및 그 임베디드 시스템에서의 데이터 입출력 방법에 관한 것이다.
낸드 플래시 메모리는 블록이라고 명명하는 단위로 구성되며, 이러한 블록은 페이지라고 명명하는 단위로 구성되어 있다. 한 페이지는 데이터 영역과 스페어 영역으로 구분되어 있다.
낸드 플래시는 페이지 단위로 읽기 동작이 수행되며, 블록 단위로 쓰기 동작이 수행된다. 왜냐하면, 낸드 플래시 메모리에서 데이터를 저장하기 위해서는 먼저 데이터 저장 위치의 데이터를 지우는 작업이 우선되어야 하는데, 지우는 작업의 단위가 블록 별로 이루어지기 때문에, 결국 쓰기 동작은 블록 단위로 이루어지게 된다.
일반적으로 데이터 영역에는 데이터가 저장되고, 스페어 영역에는 데이터의 오류정정부호가 저장되게 된다.
도 1은 낸드 플래시에서 읽기 동작을 수행하는 과정을 보여주는 흐름도이다.
도 1에 도시한 바와 같이, 읽기 동작이 수행되면, 먼저 낸드 플래시 인터페이스를 통해 읽기 명령이 전송되고(S10), 해당 주소가 전달된다(S12). 그 후, 확인 명령이 전송되어(S14), RnB(Ready or Busy) 체크가 수행된다(S16). 낸드 플래시 메모리가 비지 상태에 있으면, 계속 RnB 체크를 하며 기다리고, 레디 상태가 되면 해당 페이지로부터 데이터를 읽는다(S18).
도 2a ~ 2c는 낸드 플래시에서 쓰기 동작을 수행하는 과정을 보여주는 흐름도로서, 도 2a는 쓰기 동작의 전체를 보여주고, 도 2b는 도 2a의 블록 쓰기를 좀더 상세하게 보여주며, 도 2c는 도 2b의 페이지 쓰기를 좀더 상세하게 보여준다.
도 2a에서 도시한 바와 같이, 쓰기 동작이 수행되면, 먼저 낸드 플래시 인터페이스를 통해 해당 블록을 읽고(S20), 데이터를 변경, 즉 해당 블럭에서 데이터를 삭제한다(S30). 다음 블록 쓰기를 진행한다(S40).
도 2b에서 보듯이 블록 쓰기가 시작되면, 순차적으로 페이지에 데이터를 쓰게 되는데(S42), 쓴 페이지의 번호가 블록당 총 페이지 수와 동일한가를 비교하여(S44), 블록에 포함된 전체의 페이지에 대하여 데이터를 쓰게 된다.
도 2b는 페이지 쓰기 과정을 좀더 구체적으로 보여주는데, 페이지 쓰기가 시작되면, 먼저 쓰기 명령이 전달되고(S42a), 주소가 전달되면(S42b), 데이터 쓰기가 진행되는데(42c). 그 후 RnB 체크하여 페이지에 대한 데이터 쓰기가 완료됐는지 검 사하여(S42d), 페이지 쓰기를 종료한다(S42d).
한편, 낸드 플래시에서 이러한 읽기 또는 쓰기 동작 중에 발생하는 오류를 검사 및 정정하기 위하여, 낸드 플래시 인터페이스에 동기되어 있는 하드웨어(H/W) 에러정정코드(Error Correction Code: ECC)를 이용한다. 이러한 H/W ECC를 통해 읽기 및 쓰기 동작 중에 오류정정부호(parity)를 발생시키고 이것을 이용하여 오류를 정정하는 방법은 매우 일반적이고 범용적으로 사용되는 방법이다.
그러나 H/W ECC는 고정되어 있는 오류 정정 방법이기 때문에 오류 정정 능력을 향상시키거나 최소 설계에서 생각하지 못한 오류를 정정할 수는 없다. 예컨대, H/W ECC의 오류 정정의 능력이 1비트라고 가정하면, MLC(Multi-Level Cell)같은 특성을 갖는 메모리를 사용하여 시스템을 구성할 때, MLC에서 발생하는 오류를 모두 대응하기가 어렵다. 왜냐하면, MLC의 특성상 한 개의 셀에 2비트 이상의 데이터가 저장되기 때문이다. 즉 셀 한 개의 오류는 2비트 이상의 오류를 발생시키므로, 오류 정정 능력이 1비트인 H/W ECC로서는 MLC의 오류에 대응할 수 없다.
따라서, 본 발명이 해결하고자 하는 과제는 위와 같은 H/W ECC의 한계를 극복하면서도 속도 면에서도 우수한 정정오류능력을 채용한 낸드 플래시에서의 데이터 입출력 방법 및 그 방법을 이용한 임베디드 시스템을 제공하는 데에 있다.
상기 과제를 달성하기 위하여, 본 발명은 낸드 플래시(NAND flash)의 데이터 영역에 데이터를 쓰는 과정에 오류가 발생한 경우에 소프트웨어(S/W) 에러정정코드(ECC)를 이용하여 데이터 쓰기 오류정정부호(parity)를 발생시키는 단계; 및 상기 오류 부호를 낸드 플래시의 스페어 영역에 쓰는 과정에 오류가 발생한 경우에 하드웨어(H/W) ECC를 이용하여 스페어 오류정정부호(parity)를 발생시키는 단계;를 포함하는 낸드 플래시에서의 데이터 입출력 방법을 제공한다.
본 발명에 있어서, 상기 S/W ECC는 현재 페이지의 쓰기 동작에 대한 RnB(Ready or Busy) 체크 이전에 동작고, 이러한 상기 S/W ECC를 통한 데이터 쓰기 오류정정부호 발생은 다음 페이지에 대하여 이루어지게 된다. 따라서, 본 발명의 상기 S/W ECC는 상기 낸드 플래시의 블럭(block) 단위에서 페이지별로 다음 페이지를 위해 동작하게 된다. 한편, 상기 낸드 플래시의 한 블럭 내의 최초 페이지 쓰기의 경우에는 상기 S/W ECC는 상기 최초 페이지의 쓰기 명령 이전에 동작하게 된다.
구체적으로 상기 낸드 플래시의 블럭 단위 페이지 쓰기에 대하여 설명하면, 상기 데이터 쓰기 오류정정부호(parity) 발생 단계에서 상기 S/W ECC가 첫 페이지 에 대한 데이터 쓰기 오류정정부호를 발생시키며, 상기 데이터 쓰기 오류정정부호 발생 단계 이후에, 상기 낸드 플래시의 인터페이스를 통해 첫 페이지에 대한 쓰기 명령, 주소 전송 및 데이터 전송이 수행되고, 상기 스페어 오류정정부호를 발생시키는 단계에서 상기 H/W ECC 온(on), 상기 데이터 쓰기 오류정정부호 전송 및 H/W ECC 오프(off) 과정을 통해 상기 스페어 오류정정부호를 발생시키며, 상기 스페어 오류정정부호 발생 단계 이후에, 상기 스페어 오류정정부호 전송 및 확인 명령이 수행되며, 상기 확인 명령 후, 상기 첫 페이지에 대한 RnB 체크를 수행하기 전에 상기 S/W ECC가 다음 페이지에 대한 데이터 쓰기 오류정정부호를 발생시키게 된다.
상기 RnB 체크 후에 상기 RnB 체크를 한 페이지가 상기 블록의 마지막 페이지인지 판단하고, 상기 판단에서 마지막 페이지가 아닌 경우에, 상기 쓰기 명령으로 돌아가 상기 다음 페이지에 대한 상기의 과정을 반복하게 된다.
본 발명은 또한 상기 과제를 달성하기 위해, 낸드 플래시(NAND flash)에 저장된 데이터를 읽는 과정에 오류가 발생한 경우에 소프트웨어(S/W) 에러정정코드(ECC)를 이용하여 데이터 읽기 오류정정부호를 발생시키는 단계; 상기 오류정정부호가 발생했는지 판단하는 단계; 및 상기 오류정정부호가 발생한 경우 데이터를 수정하는 단계;를 포함하는 낸드 플래시의 데이터 입출력 방법을 제공한다.
본 발명에 있어서, 상기 데이터 입출력 방법은, 상기 데이터를 수정하는 단계 전에, 발생한 오류의 바이트(byte)가 수정가능한 바이트 내인지 판단하는 단계를 더 포함하고, 상기 데이터 수정하는 단계에서는 발생한 오류의 바이트가 수정가능한 바이트 내이면 데이터를 수정하게 된다.
상기 S/W ECC는 읽기를 수행할 페이지에 대한 RnB(Ready or Busy) 체크 이후에 동작하게 된다. 즉, 상기 낸드 플래시의 페이지 읽기가 시작되면, 상기 데이터 읽기 오류정정부호 발생 단계 전에 해당 페이지에 대한 상기 낸드 플래시의 인터페이스를 통해 읽기 명령, 주소 전송, 확인 명령 및 RnB 체크가 수행된다.
더 나아가 본 발명은 상기 과제를 달성하기 위하여, 데이터가 저장되는 낸드 플래시 메모리; 상기 낸드 플래시 메모리의 데이터 입출력을 제어하는 낸드 플래시 인터페이스(interface); 상기 낸드 플래시 인터페이스와 동기되어 데이터 입출력 시에 오류정정부호(parity)를 발생시키는 하드웨어(H/W) 에러정정코드(ECC) 발생장치; 및 상기 낸드 플래시 메모리로 데이터를 입출력 시에 소프트웨어(S/W)를 통해 오류정정부호를 발생시키는 S/W ECC 발생부;를 포함하는 임베디드 시스템을 제공한다.
본 발명에 있어서, 상기 S/W ECC를 통한 데이터 쓰기 오류정정부호발생은 다음 페이지에 대하여 이루어짐으로써, 상기 S/W ECC는 상기 낸드 플래시의 블럭(block) 단위에서 페이지별로 다음 페이지를 위해 동작하게 된다. 한편, 상기 임베디드 시스템에서 데이터 읽기 동작이 수행되는 경우에는, 상기 S/W ECC 발생부는 읽기를 수행할 페이지에 대한 RnB 체크 이후에 동작하고, ECC로서 데이터 읽기 오류정정부호를 발생시키게 된다.
본 발명에 따른 소프트웨어(S/W) 에러정정코드(ECC)를 이용한 낸드 플래시에서의 데이터 입출력 방법 및 그 방법을 이용한 임베디드 시스템은 H/W을 MLC 등에 적용하는 경우에 발생하는 문제점을 해결할 수 있으며, 또한 오류정정의 속도 면에서도 기존 H/W ECC과 거의 대응한 속도를 보여주므로 사용하는데 제약을 주지 않는다.
따라서, 기능이 한정된 H/W ECC를 내장한 칩을 리비젼하거나 다른 칩으로 대체하지 않고 간단한 S/W ECC를 추가만으로 낸드 플래시의 다양한 구조 및 응용분야에 쉽게 활용할 수 있다.
H/W ECC의 경우 데이터를 송/수신하는 동안 계산이 되기 때문에 추가 연산 시간이 필요하지 않게 된다. 한편, 소프트웨어(S/W) ECC를 이용하여 오류를 정정할 수도 있는데, 이러한 S/W ECC를 이용한 정정의 경우 데이터 송/수신과 별도의 시간을 필요로 하게 된다. 따라서 오류 계산의 시점과 방법에 따라 전체 성능에 영향을 주게 된다.
낸드 플래시에 쓰기 동작을 살펴보면 데이터 전송 후에 RnB 신호를 기다리는 구간이 있다. 실제로 쓰기 동작 중에 가장 많은 시간이 소요되는 구간이 바로 이 구간인데, 이 구간에서 S/W ECC를 이용하여 오류 정정을 처리하게 된다면 어느 정도의 시간을 절약할 수 있는 효과를 볼 수 있다. 그러나 데이터를 전송한 이후이기 때문에 현재 쓰려는 페이지에 S/W ECC 적용하여 오류 계산을 수행할 수는 없다. 따라서 현재 페이지 쓰기 동작에서, 다음 쓰기에서 사용할 데이터에 대하여 S/W ECC 이용한 오류 계산을 수행한다.
이런 동작이 가능한 이유는 낸드 플래시의 쓰기는 페이지 단위가 아닌 블록 단위로 이루어 지기 때문이다. 또한 MLC 구조의 낸드 플래시의 경우 한 개의 블록은 128개의 페이지로 구성이 되기 때문에 쓰기 동작은 128페이지가 연속적으로 이루어진다.
읽기 동작의 경우 페이지 단위로 동작이 일어나기 때문에 S/W ECC를 이용한 오류 계산을 하는 최적의 위치는 존재하지 않는다. 따라서 읽기 동작의 마지막에 S/W ECC 루틴을 추가하여, 읽기 동작 시에도 S/W ECC에 의한 오류 정정 루틴을 거치도록 한다.
이하에서는 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명한다. 이하의 설명에서 어떤 구성 요소가 다른 구성 요소에 연결된다고 기술될 때, 이는 다른 구성 요소와 바로 연결될 수도 있지만, 그 사이에 제3의 구성 요소가 개재될 수도 있다. 또한, 도면에서 각 구성 요소의 구조나 크기는 설명의 편의 및 명확성을 위하여 과장되었고, 설명과 관계없는 부분은 생략되었다. 도면상에서 동일 부호는 동일한 요소를 지칭한다. 한편, 사용되는 용어들은 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다.
도 3은 본 발명의 일 실시예에 따른 낸드 플래시에서 S/W ECC를 이용한 쓰기 동작을 수행하는 과정을 보여주는 흐름도이다.
도 3을 참조하여, 본 실시예의 블록 쓰기 동작을 살펴보면, 먼저 첫 페이지, 즉 페이지 번호 N=0에 써야할 데이터에 대하여 S/W ECC를 이용하여 오류정정부호(parity)를 발생시킨다. 물론 오류가 없는 경우에는 오류정정부호가 발생하지 않 음은 당연하다.이와 같이 첫 페이지에 대한 S/W ECC를 통한 오류계산이 끝난 후, 첫 페이지에 대한 구체적인 쓰기 동작이 수행된다.
즉, 쓰기 명령(S110), 주소 전송(S120), 및 데이터 전송(S130)이 수행됨으로써, 데이터에 대한 쓰기 동작이 수행된다. 그 후, H/W ECC 또는 스페어 ECC가 온(On)되고(S140), 앞서, S/W ECC를 통해 발생한 오류정정부호, 즉 데이터 패리티(parity)가 전송되어 낸드 플래시의 스페어 영역에 쓰여지게 되고, 데이터 패리티 쓰기 동작에서의 오류를 H/W ECC가 계산하게 된다. 즉, 스페어 패리티를 계산하게 된다.
이후, H/W ECC가 오프(Off)된(S160) 후, 계산된 스페어 패리티가 전송되고(S170), 확인 명령이 수행된다(S180). 이러한 확인 명령 수행 후, 일반적으로는 현재 데이터 쓰기에 대한 RnB 체크를 하게 된다. 그러나, 본 실시예에서는 RnB 체크 전에 다음 페이지(페이지 번호 = N+1)에 대하여 S/W ECC를 이용하여 오류 계산을 수행한다(S100a). 즉 다음 페이지에 대한 오류정정부호를 발생시킨다.
S/W ECC에 의한 다음 페이지에 대한 오류 계산 후에 현재 페이지에 대한 RnB 체크를 수행하고(S190) 레디가 되면 현재 페이지에 대한 쓰기 동작이 완료되고 다음 페이지에 대한 쓰기 동작이 수행된다. 그에 따라 RnB 체크 이후에 다음 페이지 번호와 블록당 총 페이지 수를 비교한(S200) 후, 다음 페이지 번호가 총 페이지 수보다 작으면 쓰기 명령(S110)으로 돌아가서 다음 페이지에 대한 쓰기 동작을 계속 수행한다.
전체적으로 간단하게 다시 설명하면, 쓰기 동작은 쓰기 명령 전송, 주소 및 데이터 전송, 확인 명령 전송, RnB 신호 대기, 종료로 이루어지는데 이러한 쓰기 동작이 본 실시예를 통해 S/W ECC 계산_N, 쓰기 명령 전송_N, 주소 및 데이터 전송_N, 확인 명령 전송_N, ECC 계산_N+1, RnB 신호 대기_N, 반복, 종료 순으로 적용하게 된다. 여기서, 데이터 전송_N 및 확인 명령 전송_N 사이에 H/W ECC를 통한 스페어 오류정정부호를 발생하는 과정이 포함됨은 물론이다.
본 실시예의 S/W ECC를 이용한 데이터 오류 계산은 다음 페이지에 대하여 현재 페이지의 RnB 체크 전에 수행하므로, 많은 시간이 소요되지 않는다. 즉, 쓰기 동작에서 RnB 체크에 많은 시간이 소요되는데, 그 RnB 체크 시간의 일부분을 할애하여 S/W ECC의한 다음 페이지에 대한 데이터의 오류를 계산한다는 원리이다. 한편, S/W ECC를 이용하기 때문에, H/W ECC와는 달리 MLC 구조의 낸드 플래시에서의 오류 발생에 효과적으로 대응할 수 있다.
도 4는 본 발명의 다른 실시예에 따른 낸드 플래시에서 S/W ECC를 이용한 읽기 동작을 수행하는 과정을 보여주는 흐름도이다.
도 4를 참조하여, 본 실시예의 읽기 동작을 살펴보면, 종래와 같이 읽기 명령(S300), 주소 전송(S310), 확인 명령(S320) 및 RnB 체크(S330)가 수행되고, 그 후 S/W ECC에 의한 읽기 오류를 계산한다(S340). 즉, 읽기 오류정정부호를 발생시킨다. 한편, S/W ECC에 의한 읽기 오류를 계산한다는 것은 데이터 읽기가 수행되고 있다는 의미이기도 한다.
전술한 바와 같이 읽기 동작의 경우, 페이지 단위로 수행되기 때문에 쓰기 동작과 같이 미리 다음 페이지에 대한 오류를 계산한다는 것은 무의미하다. 또한, 페이지를 읽기 전에 오류를 검출하는 것도 불가능하다. 따라서, 본 실시예와 같이 읽기 동작과 함께 실시하는 것이 바람직하다. 한편, 읽기 동작에서도 S/W ECC를 이용하기 때문에 종래 H/W ECC 사용에 의한 MLC 구조에서의 문제점을 극복할 수 있음은 물론이다.
한편, 이러한 S/W ECC에 의한 오류를 계산한 경우에는 그 오류를 정정하는 동작을 수행할 수 있다. 즉, 일단 오류정정부호가 발생했는지 판단하고(S350), 오류가 발생한 경우에 오류를 정정한다. 다만, 각 메모리 시스템마다 오류를 고칠 수 있는 크기가 정해져 있는 경우가 대부분이다. 따라서, 오류가 발생한 경우에도, 오류가 발생한 바이트가 몇 바이트인지 먼저 판단하고(S360) 난후에 정정가능한 바이트(N 바이트), 예컨대, 2 바이트 이하인 경우, 오류를 수행하고(S370), 만약 정정가능한 바이트를 초과하면 읽기 동작을 종료하는 식으로 진행한다.
도 5는 낸드 플래시에서 종래 H/W ECC을 사용한 경우의 읽기 및 쓰기 동작에 대한 성능테스트 사진이다.
도 5를 참조하면, 종래 H/W ECC를 사용했을 때, 읽기 동작의 경우 4.5 MB/sec 정도의 속도가 나오며, 쓰기 동작의 경우 1.5 MB/sec 정도의 속도가 나옴을 알 수 있다.
도 6은 낸드 플래시에서 종래 S/W ECC을 사용한 경우의 읽기 및 쓰기 동작에 대한 성능테스트 사진이다.
도 6을 참조하면, 종래 S/W ECC를 사용했을 때, 읽기 동작의 경우 0.8 MB/sec 정도의 속도가 나오며, 쓰기 동작의 경우 0.3 MB/sec 정도의 속도가 나옴을 알 수 있는데, H/W ECC 사용에 비해 읽기 및 쓰기 동작이 현저하게 속도가 낮아짐을 확인할 수 있다.
도 7은 낸드 플래시에서 본 발명의 S/W ECC을 사용한 경우의 읽기 및 쓰기 동작에 대한 성능테스트 사진이다.
도 7을 참조하면, 본 발명의 S/W ECC를 사용했을 때, 읽기 동작의 경우 1.9 MB/sec 정도의 속도가 나오며, 쓰기 동작의 경우 1.3 MB/sec 정도의 속도가 나옴을 알 수 있다. 종래 H/W ECC 사용한 경우와 비교해 보면, 읽기 동작의 경우에는 많이 속도가 느려졌지만 쓰기 동작의 경우 거의 동일한 수준의 속도를 유지하고 있음을 알 수 있다.
도 8은 본 발명의 또 다른 실시예에 따른 S/W ECC 발생부를 포함한 임베디드 시스템에 대한 개략적인 구성도이다.
도 8을 참조하면, 본 실시예의 임베디드 시스템은 데이터가 저장되는 낸드 플래시 메모리(100), 낸드 플래시 메모리(100)에 연결되어 데이터의 입출력을 제어 및 중계하는 낸드 플래시 인터페이스(interface, 200), 낸드 플래시 인터페이스(200)와 동기되어 데이터 입출력 시에 오류정정부호(parity)를 발생시키는 하드웨어(H/W) 에러정정코드(ECC) 발생장치(400), 낸드 플래시 메모리로 데이터를 입출력 시에 소프트웨어(S/W)를 통해 오류정정부호를 발생시키는 S/W ECC 발생부(300) 및 낸드 플래시 인터페이스(200)에 연결되어 낸드 플래시 메모리(100)에 대한 전체적인 입출력을 컨트롤하는 메모리 프로세서(500)를 포함한다.
도면상 H/W ECC 발생 장치(400)와 S/W ECC 발생부(300)가 낸드 플래시 인터 페이스(200)와 별개로 분리되어 있지만, H/W ECC 발생 장치(400) 및 S/W ECC 발생부(300)가 낸드 플래시 인터페이스(200) 내에 위치할 수도 있음은 물론이다.
한편, 본 실시예의 임베디드 시스템에서는 S/W ECC 발생부(300)가 데이터 쓰기 및 읽기에서 정정오류부호를 발생시킨다. 그에 따라, H/W ECC 발생 장치(400)는 데이터 쓰기에서 정정오류부호 발생에는 이용되지 않고 스페어 오류정정부호 발생에만 이용된다.
이와 같은 구조의 임베디드 시스템은 도 3 및 도 4에서 전술한 바와 같이, 데이터 쓰기 및 읽기 동작에서 S/W ECC를 이용하여 오류 계산, 즉 정정오류부호를 발생시키기 때문에, MLC와 같은 다중 비트 셀에서 오류가 발생한 경우에도 효과적으로 오류를 체크 및 정정할 수 있다. 한편, 쓰기 동작의 경우에는 RnB 체크 시간에 S/W ECC를 이용하여 오류를 계산하기 때문에 종래 H/W ECC를 이용한 오류 계산과 거의 비슷한 속도로 가지고 읽기 동작을 수행할 수 있다.
지금까지, 본 발명을 도면에 도시된 실시예를 참고로 설명하였으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
도 1은 낸드 플래시에서 읽기 동작을 수행하는 과정을 보여주는 흐름도이다.
도 2a ~ 2c는 낸드 플래시에서 쓰기 동작을 수행하는 과정을 보여주는 흐름도이다.
도 3은 본 발명의 일 실시예에 따른 낸드 플래시에서 S/W ECC를 이용한 쓰기 동작을 수행하는 과정을 보여주는 흐름도이다.
도 4는 본 발명의 다른 실시예에 따른 낸드 플래시에서 S/W ECC를 이용한 읽기 동작을 수행하는 과정을 보여주는 흐름도이다.
도 5는 낸드 플래시에서 종래 H/W ECC을 사용한 경우의 읽기 및 쓰기 동작에 대한 성능테스트 사진이다.
도 6은 낸드 플래시에서 종래 S/W ECC을 사용한 경우의 읽기 및 쓰기 동작에 대한 성능테스트 사진이다.
도 7은 낸드 플래시에서 본 발명의 S/W ECC을 사용한 경우의 읽기 및 쓰기 동작에 대한 성능테스트 사진이다.
도 8은 본 발명의 또 다른 실시예에 따른 S/W ECC 발생부를 포함한 임베디드 시스템에 대한 개략적인 구성도이다.

Claims (16)

  1. 낸드 플래시(NAND flash)의 데이터 영역에 데이터를 쓰는 과정에 오류가 발생한 경우에 소프트웨어(S/W) 에러정정코드(ECC)를 이용하여 데이터 쓰기 오류정정부호(parity)를 발생시키는 단계; 및
    상기 데이터 쓰기 오류정정부호를 낸드 플래시의 스페어 영역에 쓰는 과정에 오류가 발생한 경우에 하드웨어(H/W) ECC를 이용하여 스페어 오류정정부호(parity)를 발생시키는 단계;를 포함하고,
    상기 S/W ECC는 현재 페이지의 쓰기 동작에 대한 RnB(Ready or Busy) 체크 이전에 동작하는 것을 특징으로 하는 낸드 플래시에서의 데이터 입출력 방법.
  2. 삭제
  3. 제1 항에 있어서,
    상기 S/W ECC를 통한 데이터 쓰기 오류정정부호 발생은 다음 페이지에 대하여 이루어지는 것을 특징으로 하는 낸드 플래시에서의 데이터 입출력 방법.
  4. 제1 항에 있어서,
    상기 S/W ECC는 상기 낸드 플래시의 블럭(block) 단위에서 페이지별로 다음 페이지를 위해 동작하는 것을 특징으로 하는 낸드 플래시에서의 데이터 입출력 방법.
  5. 제1 항에 있어서,
    상기 낸드 플래시의 한 블럭 내의 최초 페이지 쓰기의 경우에는 상기 S/W ECC는 상기 최초 페이지의 쓰기 명령 이전에 동작하는 것을 특징으로 하는 낸드 플래시에서의 데이터 입출력 방법.
  6. 제1 항에 있어서,
    상기 낸드 플래시의 블럭 단위 페이지 쓰기가 시작되면,
    상기 데이터 쓰기 오류정정부호(parity) 발생 단계에서 상기 S/W ECC가 첫 페이지에 대한 데이터 쓰기 오류정정부호를 발생시키며,
    상기 데이터 쓰기 오류정정부호 발생 단계 이후에, 상기 낸드 플래시의 인터페이스를 통해 첫 페이지에 대한 쓰기 명령, 주소 전송 및 데이터 전송이 수행되고,
    상기 스페어 오류정정부호를 발생시키는 단계에서 상기 H/W ECC 온(on), 상기 데이터 쓰기 오류정정부호 전송, 및 H/W ECC 오프(off) 과정을 통해 상기 스페어 오류정정부호를 발생시키며,
    상기 스페어 오류정정부호 발생 단계 이후에, 상기 스페어 오류정정부호 전송 및 확인 명령이 수행되며,
    상기 확인 명령 후, 상기 첫 페이지에 대한 RnB 체크를 수행하기 전에 상기 S/W ECC가 다음 페이지에 대한 데이터 쓰기 오류정정부호를 발생시키는 것을 특징으로 하는 낸드 플래시에서의 데이터 입출력 방법.
  7. 제6 항에 있어서,
    상기 RnB 체크 후에 상기 RnB 체크를 한 페이지가 상기 낸드 플래시의 블록의 마지막 페이지인지 판단하고,
    상기 판단에서 마지막 페이지가 아닌 경우에, 상기 쓰기 명령으로 돌아가 상기 다음 페이지에 대한 상기의 과정을 반복하는 것을 특징으로 하는 낸드 플래시에서의 데이터 입출력 방법.
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 데이터가 저장되는 낸드 플래시 메모리;
    상기 낸드 플래시 메모리의 데이터 입출력을 제어 및 중계하는 낸드 플래시 인터페이스(interface);
    상기 낸드 플래시 인터페이스와 동기되어 데이터 입출력 시에 오류정정부호(parity)를 발생시키는 하드웨어(H/W) 에러정정코드(ECC) 발생장치; 및 상기 낸드 플래시 메모리로 데이터를 입출력 시에 소프트웨어(S/W)를 통해 오류정정부호를 발생시키는 S/W ECC 발생부;를 포함하고,
    데이터 쓰기 동작이 수행되는 경우, 상기 S/W ECC 발생부는 현재 페이지에 대한 RnB 체크 이전에 동작하고, ECC로서 데이터 쓰기 오류정정부호를 발생시키며, 상기 H/W ECC 발생장치는 상기 데이터 쓰기 오류정정부호를 상기 낸드 플래시 메모리의 스페어 영역에 쓰는 과정에 ECC로서 스페어 오류정정부호를 발생시키는 것을 특징으로 하는 임베디드 시스템(Embedded System).
  13. 삭제
  14. 제12 항에 있어서,
    상기 S/W ECC를 통한 데이터 쓰기 오류정정부호발생은 다음 페이지에 대하여 이루어짐으로써,
    상기 S/W ECC는 상기 낸드 플래시의 블럭(block) 단위에서 페이지별로 다음 페이지를 위해 동작하는 것을 특징으로 하는 임베디드 시스템.
  15. 제12 항에 있어서,
    상기 임베디드 시스템에서 데이터 읽기 동작이 수행되는 경우,
    상기 S/W ECC 발생부는 읽기를 수행할 페이지에 대한 RnB 체크 이후에 동작하고, ECC로서 데이터 읽기 오류정정부호를 발생시키는 것을 특징으로 하는 임베디드 시스템.
  16. 제15 항에 있어서,
    상기 S/W ECC 발생부에 의해 데이터 읽기 오류정정부호가 발생한 경우,
    상기 임베디드 시스템은 발생한 상기 오류에 대하여 수정 가능한 범위인지 판단하여 수정가능한 범위에서 오류를 수정하는 것을 특징으로 하는 임베디드 시스템.
KR1020080031402A 2008-04-03 2008-04-03 소프트웨어(s/w) 에러정정코드(ecc)를 이용한낸드 플래시에서의 데이터 입출력 방법 및 그 방법을이용한 임베디드 시스템 KR100949471B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080031402A KR100949471B1 (ko) 2008-04-03 2008-04-03 소프트웨어(s/w) 에러정정코드(ecc)를 이용한낸드 플래시에서의 데이터 입출력 방법 및 그 방법을이용한 임베디드 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080031402A KR100949471B1 (ko) 2008-04-03 2008-04-03 소프트웨어(s/w) 에러정정코드(ecc)를 이용한낸드 플래시에서의 데이터 입출력 방법 및 그 방법을이용한 임베디드 시스템

Publications (2)

Publication Number Publication Date
KR20090105760A KR20090105760A (ko) 2009-10-07
KR100949471B1 true KR100949471B1 (ko) 2010-03-29

Family

ID=41535420

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080031402A KR100949471B1 (ko) 2008-04-03 2008-04-03 소프트웨어(s/w) 에러정정코드(ecc)를 이용한낸드 플래시에서의 데이터 입출력 방법 및 그 방법을이용한 임베디드 시스템

Country Status (1)

Country Link
KR (1) KR100949471B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101401379B1 (ko) 2010-10-13 2014-05-30 한국전자통신연구원 낸드 플래시 메모리의 데이터 입출력 방법과 그 방법을 이용한 임베디드 시스템
KR101772020B1 (ko) 2011-05-30 2017-08-29 삼성전자주식회사 불휘발성 메모리 장치, 이의 동작 방법, 및 이를 포함하는 메모리 시스템
KR101979734B1 (ko) 2012-08-07 2019-05-17 삼성전자 주식회사 메모리 장치의 독출 전압 제어 방법 및 이를 이용한 데이터 독출 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005085464A (ja) * 2003-09-10 2005-03-31 Hewlett-Packard Development Co Lp 誤り訂正符号化を有する磁気メモリ
KR100736093B1 (ko) * 2006-01-16 2007-07-06 삼성전자주식회사 Nand 플래시 제어 장치 및 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005085464A (ja) * 2003-09-10 2005-03-31 Hewlett-Packard Development Co Lp 誤り訂正符号化を有する磁気メモリ
KR100736093B1 (ko) * 2006-01-16 2007-07-06 삼성전자주식회사 Nand 플래시 제어 장치 및 방법

Also Published As

Publication number Publication date
KR20090105760A (ko) 2009-10-07

Similar Documents

Publication Publication Date Title
US7239547B2 (en) Memory device
JP4901334B2 (ja) メモリコントローラ
US8175012B2 (en) Decoding/encoding method for booting from a NAND flash and system thereof
US8386699B2 (en) Method for giving program commands to flash memory for writing data according to a sequence, and controller and storage system using the same
US7823044B2 (en) Method for streamlining error connection code computation while reading or programming a NAND flash memory
JP4901987B1 (ja) 記憶装置、電子機器及び誤りデータの訂正方法
CN109062827B (zh) 闪存控制装置、闪存控制系统以及闪存控制方法
US9424126B2 (en) Memory controller
JP4908083B2 (ja) メモリコントローラ
JP2010512601A (ja) メモリにおけるキャッシュを利用した誤り検出及び訂正方法及び装置
KR20150029402A (ko) 데이터 저장 시스템 및 그것의 동작 방법
CN112612634A (zh) 存储器系统和主机的操作方法以及计算系统
JP2009301194A (ja) 半導体記憶装置の制御システム
KR100688549B1 (ko) 비휘발성 메모리를 지원하는 온더플라이 bcc 코덱시스템 및 방법
KR100949471B1 (ko) 소프트웨어(s/w) 에러정정코드(ecc)를 이용한낸드 플래시에서의 데이터 입출력 방법 및 그 방법을이용한 임베디드 시스템
JP2009259113A (ja) 不揮発性メモリ管理装置
JP5363460B2 (ja) 誤り訂正機能付きコントローラ、誤り訂正機能付き記憶装置、及び誤り訂正機能付きシステム
EP2194458A2 (en) Request processing device, request processing system, and access testing method
JP7253594B2 (ja) 半導体記憶装置
JP7178465B1 (ja) 半導体記憶装置
JP2010140132A (ja) メモリシステム及びメモリコントローラ
JP2004126911A (ja) 制御装置
JP6448254B2 (ja) メモリ制御装置及びメモリ制御方法
CN118092819A (zh) 数据读取方法、Flash存储器、设备及存储介质
KR20230132139A (ko) 리드동작을 효과적으로 수행하기 위한 메모리 장치 및 메모리 장치의 동작방법

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130111

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140102

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee