KR102404257B1 - 에러보정코드를 이용한 오류보정 기능을 가지는 비동기용 대용량 메모리 모듈 및 에러보정코드를 이용한 비동기용 대용량 메모리 모듈의 오류보정방법 - Google Patents

에러보정코드를 이용한 오류보정 기능을 가지는 비동기용 대용량 메모리 모듈 및 에러보정코드를 이용한 비동기용 대용량 메모리 모듈의 오류보정방법 Download PDF

Info

Publication number
KR102404257B1
KR102404257B1 KR1020200182337A KR20200182337A KR102404257B1 KR 102404257 B1 KR102404257 B1 KR 102404257B1 KR 1020200182337 A KR1020200182337 A KR 1020200182337A KR 20200182337 A KR20200182337 A KR 20200182337A KR 102404257 B1 KR102404257 B1 KR 102404257B1
Authority
KR
South Korea
Prior art keywords
error correction
data
correction code
memory module
asynchronous
Prior art date
Application number
KR1020200182337A
Other languages
English (en)
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 KR1020200182337A priority Critical patent/KR102404257B1/ko
Application granted granted Critical
Publication of KR102404257B1 publication Critical patent/KR102404257B1/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/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • G06F11/1056Updating check bits on partial write, i.e. read/modify/write
    • 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
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명은 낸드플래시 메모리(NAND Flash Memory)와 같은 비동기용 대용량 메모리 모듈의 성능을 향상시키기 위한 방법에 관한 것으로, 본 발명에 따르면, 종래, 오류의 탐지만 가능하고 오류발생시 대처가 불가능하였던 종래기술의 CRC(Cyclic Redundancy Check) 방식의 단점과, 에러보정코드(ECC) 데이터가 증가할수록 오버헤드가 증가하여 성능이 저하되는 한계가 있었던 종래기술의 ECC 알고리즘의 문제점을 해결하여, 낸드플래시 메모리의 배드블록(Bad Block) 정보를 효율적으로 관리하기 위한 BBT(bad block table)를 설계하고, 비동기용 대용량 메모리 모듈의 전원이 OFF 되면 에러보정코드를 낸드플래시 메모리에 쓰며, 다시 전원이 ON 되면 에러보정코드 알고리즘을 이용하여 낸드플래시 메모리의 데이터와 에러보정코드를 비교하여 에러비트를 정상데이터로 보정하도록 구성됨으로써, 비동기용 메모리 모듈의 신뢰성 및 안정성을 향상시키고 성능향상을 도모할 수 있도록 구성되는 에러보정코드를 이용한 비동기용 대용량 메모리 모듈 및 그 오류보정방법이 제공된다.

Description

에러보정코드를 이용한 오류보정 기능을 가지는 비동기용 대용량 메모리 모듈 및 에러보정코드를 이용한 비동기용 대용량 메모리 모듈의 오류보정방법{Asynchronous mass memory module with error corrction function using error correction code and error correction method of asynchronous mass memory module using error correction code}
본 발명은 대표적인 비휘발성 메모리 소자의 하나인 낸드플래시 메모리(NAND Flash Memory)와 같은 비동기용 대용량 메모리 모듈(asynchronous mass memory module)의 성능을 향상시키기 위한 방법에 관한 것으로, 더 상세하게는, 종래, 데이터 오류(Error)를 탐지하기 위한 오류탐지 코드로 사용되는 CRC(Cyclic Redundancy Check) 방식은 오류의 탐지만 가능하고 오류가 발생되었을 때 이를 수정하거나 원래의 데이터로 복구하는 등의 대처가 불가능하였던 단점을 해결하기 위해, 데이터의 읽기 및 쓰기 과정에서 발생한 오류보정코드를 이용하여 오류가 발생된 에러비트(error bit)를 찾아내고, 찾아낸 에러비트를 오류보정 알고리즘을 통해 정상 데이터로 보정할 수 있도록 구성되는 에러보정코드를 이용한 오류보정 기능을 가지는 비동기용 대용량 메모리 모듈 및 에러보정코드를 이용한 비동기용 대용량 메모리 모듈의 오류보정방법에 관한 것이다.
또한, 본 발명은, 상기한 바와 같이 오류의 탐지만 가능하고 오류발생시 대처가 불가능하였던 종래기술의 CRC 방식의 문제점을 해결하는 동시에, 데이터를 오류로부터 보호하기 위한 에러보정코드(error correction code ; ECC) 데이터가 증가할수록 오버헤드가 증가하여 처리시간 및 전체적인 성능이 저하되는 한계가 있었던 종래기술의 ECC 알고리즘의 문제점을 해결하기 위해, 낸드플래시 메모리의 배드블록(Bad Block) 정보를 효율적으로 관리하기 위한 BBT(bad block table)를 설계하고, 비동기용 대용량 메모리 모듈의 전원이 OFF 되면 에러보정코드를 낸드플래시 메모리에 쓰며, 다시 전원이 ON 되면 에러보정코드 알고리즘을 이용하여 낸드플래시 메모리의 데이터와 에러보정코드를 비교하여 에러비트를 정상데이터로 보정하는 것에 의해, 비동기용 메모리 모듈의 신뢰성 및 안정성을 향상시키고, 그것에 의해, 비동기용 메모리 모듈 및 전체적인 시스템의 성능향상을 도모할 수 있도록 구성되는 에러보정코드를 이용한 오류보정 기능을 가지는 비동기용 대용량 메모리 모듈 및 에러보정코드를 이용한 비동기용 대용량 메모리 모듈의 오류보정방법에 관한 것이다.
종래, 일반적으로, 임베디드 컴퓨터 시스템 환경에 있어서, 코드나 데이터를 저장하기 위한 메모리로서 SRAM(Static Random Access Memory)과 DRAM(Dynamic Random Access Memory)이 널리 사용되고 있다.
여기서, DRAM은 백만분의 몇 초마다 리플래쉬(Reflash)를 해주어야만 내용이 유지되는 반면, SRAM은 리플래쉬 없이도 내용이 유지되므로 DRAM보다 SRAM이 사용하기 편리하다는 장점이 있으나, SRAM은 회로가 복잡하여 집적도가 낮고, 단가가 비싼 단점이 있다.
또한, 종래, DRAM의 단순한 구조와 재기록 회로를 내장하여 SRAM과 DRAM의 장점만을 취하는 형태의 메모리로서 유사 정적램(Pseudo Static Random Access Memory ; PSRAM)이 제시된 바 있으며, 이는, 사용자의 측면에서 보면 SRAM과 동일하게 동작하지만 내부에서는 DRAM과 같이 재기록 동작을 하는 구조로 이루어져 있다.
아울러, 최근 주로 사용되는 플래시 메모리에는 NOR형과 NAND형 두 가지가 있으며, 이 중, 낸드플래시 메모리는 전원을 공급하지 않아도 저장된 데이터를 유지하는 비휘발성(non-volatile) 메모리로서, 주로 USB 메모리, SSD(solid-state-drive) 등과 같은 저장매체에 적용되나, 최근 모바일 장치들이 대용량화하면서 스마트폰과 디지털카메라 등에 많이 사용되어 급격하게 시장이 성장하고 있다.
그러나 상기한 낸드플래시 메모리는, 전기적 충격에 취약하여 이로 인한 읽기/쓰기 작업 도중에 오류가 발생할 수 있는 단점이 있고, 이에, 종래에는, 데이터를 오류로부터 보호하기 위해, 예를 들면, LDPC(Low-Density Parity-Check) 코드, 터보(Turbo) 코드, BCH(Bose-Chaudhuri-Hocquenghem) 등과 같이, 다양한 에러보정코드(error correction code) 연산기법을 사용하여 데이터의 신뢰성을 보장하도록 하고 있다.
여기서, 상기한 바와 같은 ECC 알고리즘은, 일반적으로 ECC 데이터(ECC codeword)가 증가할수록 성능이 증가하게 되나, ECC 데이터가 너무 커지게 되면 데이터 읽기시 최대 페이지 읽기를 반복하게 되어 오버헤드가 증가하고, 그로 인해 처리시간이 증가하여 전체적인 성능이 저하되는 문제점이 있다.
또한, 데이터의 신뢰성을 보장하기 위해 데이터의 오류를 탐지하기 위한 오류탐지 코드로서, 종래, 순환중복검사(Cyclic Redundancy Check ; CRC) 방식이 많이 사용되고 있으나, 이러한 CRC 방식은 오류의 탐지만 가능하고 오류가 발생되었을 때 이를 수정하거나 원래의 데이터로 복구하는 등의 대처가 불가능하였던 한계가 있었다.
이에, 상기한 바와 같은 종래기술의 ECC 및 CRC 방식의 문제점을 해결하기 위해서는, 데이터의 읽기 및 쓰기 과정에서 오류가 발생된 에러비트(error bit)를 찾아내고 정상 데이터로 보정하는 처리가 보다 간단한 구성으로 신속하게 이루어질 수 있도록 구성되는 새로운 구성의 비동기용 대용량 메모리 모듈 및 그러한 비동기용 대용량 메모리 모듈의 오류보정방법을 제시하는 것이 요구되나 아직까지 그러한 요구를 모두 만족시키는 장치나 방법은 제시되지 못하고 있는 실정이다.
한국 등록특허공보 제10-2076624호 (2020.02.06.) 한국 공개특허공보 제10-2019-0009630호 (2019.01.29.)
본 발명은 상기한 바와 같은 종래기술의 문제점을 해결하고자 하는 것으로, 따라서 본 발명의 목적은, 오류의 탐지만 가능하고 오류가 발생되었을 때 이를 수정하거나 원래의 데이터로 복구하는 등의 대처가 불가능하였던 종래기술의 CRC 방식의 문제점을 해결하기 위해, 데이터의 읽기 및 쓰기 과정에서 발생한 오류보정코드를 이용하여 오류가 발생된 에러비트를 찾아내고, 찾아낸 에러비트를 오류보정 알고리즘을 통해 정상 데이터로 보정할 수 있도록 구성되는 에러보정코드를 이용한 오류보정 기능을 가지는 비동기용 대용량 메모리 모듈 및 에러보정코드를 이용한 비동기용 대용량 메모리 모듈의 오류보정방법을 제공하고자 하는 것이다.
또한, 본 발명의 다른 목적은, 상기한 바와 같이 오류의 탐지만 가능하고 오류발생시 대처가 불가능하였던 종래기술의 CRC 방식의 문제점을 해결하는 동시에, 데이터를 오류로부터 보호하기 위한 에러보정코드(ECC) 데이터가 증가할수록 오버헤드가 증가하여 처리시간 및 전체적인 성능이 저하되는 한계가 있었던 종래기술의 ECC 알고리즘의 문제점을 해결하기 위해, 낸드플래시 메모리의 배드블록(Bad Block) 정보를 효율적으로 관리하기 위한 BBT(bad block table)를 설계하고, 비동기용 대용량 메모리 모듈의 전원이 OFF 되면 에러보정코드를 낸드플래시 메모리에 쓰며, 다시 전원이 ON 되면 에러보정코드 알고리즘을 이용하여 낸드플래시 메모리의 데이터와 에러보정코드를 비교하여 에러비트를 정상데이터로 보정하는 것에 의해, 비동기용 메모리 모듈의 신뢰성 및 안정성을 향상시키고, 그것에 의해, 비동기용 메모리 모듈 및 전체적인 시스템의 성능향상을 도모할 수 있도록 구성되는 에러보정코드를 이용한 오류보정 기능을 가지는 비동기용 대용량 메모리 모듈 및 에러보정코드를 이용한 비동기용 대용량 메모리 모듈의 오류보정방법을 제공하고자 하는 것이다.
상기한 바와 같은 목적을 달성하기 위해, 본 발명에 따르면, 읽기(Read) 및 쓰기(Write) 작업 중 발생하는 데이터의 오류를 보정할 수 있도록 구성되는 비동기용 대용량 메모리 모듈(asynchronous mass memory module)에 있어서, 상기 메모리 모듈에 데이터를 저장하기 위한 PSRAM(Pseudo Static Random Access Memory)과 낸드플래시 메모리(Nand Flash Memory)를 포함하여 이루어지는 데이터 저장모듈; 및 상기 PSRAM과 상기 낸드플래시 메모리의 동작을 제어하고, 상기 낸드플래시 메모리의 물리적 블록번호(Physical block number)와 접근하려는 논리적 블록번호(Logical block number)를 연결하고 배드블록(Bad Block) 정보를 관리하기 위해 미리 정해진 BBT(bad block table)의 내용에 근거하여, 에러보정코드(Error Correction Code)를 이용한 오류보정처리를 통해 데이터의 읽기 및 쓰기 동작시 발생하는 오류를 보정하는 처리가 수행되는 MPU(Micro Processor Unit)를 포함하여 이루어지는 데이터 처리모듈을 포함하여 구성되는 것을 특징으로 하는 비동기용 대용량 메모리 모듈이 제공된다.
여기서, 상기 BBT는, 첫번째 페이지(Page 0)에 상기 BBT의 내용에 대한 데이터와 상기 BBT에 대한 CRC32(cyclic redundancy check) 데이터 및 상기 PSRAM에 대한 CRC 데이터가 포함되고, 두번째 페이지(Page 1)에 첫번째 유효 블록(Block)의 데이터와 두번째 유효블록의 데이터가 포함되며, 이후의 페이지에는 각각의 페이지별 CRC 데이터가 포함되어 이루어지는 것을 특징으로 한다.
또한, 상기 MPU는, 상기 메모리 모듈의 전원이 ON 일 때는 상기 PSRAM에 데이터를 저장하고, 상기 BBT의 내용에 근거하여, 상기 메모리 모듈의 전원이 OFF 되면 상기 PSRAM에 있는 데이터와 상기 MPU에서 생성된 에러보정코드를 함께 상기 낸드플래시 메모리의 유효블록에 저장하며, 다시 상기 메모리 모듈의 전원이 ON 되면, 상기 낸드플래시 메모리의 데이터와 상기 에러보정코드를 상기 PSRAM으로 쓰고 상기 PSRAM에 저장된 데이터를 읽는 동시에, 상기 BBT의 내용에 근거하여, 상기 에러보정코드를 비교하여 데이터의 읽기 및 쓰기 과정에서 에러가 발생된 에러비트(Error bit)를 찾고, 찾아낸 에러비트를 정상 데이터로 보정하는 처리가 수행되도록 구성되는 것을 특징으로 한다.
아울러, 상기 메모리 모듈은, 상기 낸드플래시 메모리 내부에 에러보정코드 없이 상기 MPU의 에러보정코드를 사용하는 오프칩(Off-chip) ECC 방식으로 구성되는 것을 특징으로 한다.
더욱이, 본 발명에 따르면, 상기에 기재된 에러보정코드를 이용한비동기용 대용량 메모리 모듈을 이용하여, 비동기용 대용량 메모리 모듈의 읽기(Read) 및 쓰기(Write) 작업 중 발생하는 데이터의 오류를 보정할 수 있도록 구성되는 에러보정코드를 이용한 비동기용 대용량 메모리 모듈의 오류보정방법에 있어서, 상기 메모리 모듈의 전원이 ON 일 때는 상기 메모리 모듈의 PSRAM에 데이터를 저장하고, 상기 메모리 모듈의 낸드플래시 메모리의 물리적 블록번호(Physical block number)와 접근하려는 논리적 블록번호(Logical block number)를 연결하고 배드블록(Bad Block) 정보를 관리하기 위해 미리 정해진 BBT(bad block table)의 내용에 근거하여, 상기 메모리 모듈의 전원이 OFF 되면 상기 PSRAM에 있는 데이터와 상기 메모리 모듈의 MPU에서 생성된 에러보정코드를 함께 상기 낸드플래시 메모리의 유효블록에 저장하는 처리가 수행되는 데이터 저장단계; 및 다시 상기 메모리 모듈의 전원이 ON 되면, 상기 낸드플래시 메모리의 데이터와 상기 에러보정코드를 상기 PSRAM으로 쓰고 상기 PSRAM에 저장된 데이터를 읽는 동시에, 상기 BBT의 내용에 근거하여, 상기 에러보정코드를 비교하여 데이터의 읽기 및 쓰기 과정에서 에러가 발생된 에러비트(Error bit)를 찾고, 찾아낸 에러비트를 정상 데이터로 보정하는 처리가 수행되는 오류보정단계를 포함하여 구성되는 것을 특징으로 하는 에러보정코드를 이용한 비동기용 대용량 메모리 모듈의 오류보정방법이 제공된다.
상기한 바와 같이, 본 발명에 따르면, 낸드플래시 메모리의 배드블록(Bad Block) 정보를 효율적으로 관리하기 위한 BBT(bad block table)를 설계하고, 비동기용 대용량 메모리 모듈의 전원이 OFF 되면 에러보정코드를 낸드플래시 메모리에 쓰며, 다시 전원이 ON 되면 에러보정코드 알고리즘을 이용하여 낸드플래시 메모리의 데이터와 에러보정코드를 비교하여 에러비트를 정상데이터로 보정하도록 구성되는 에러보정코드를 이용한 오류보정 기능을 가지는 비동기용 대용량 메모리 모듈 및 에러보정코드를 이용한 비동기용 대용량 메모리 모듈의 오류보정방법이 제공됨으로써, 오류의 탐지만 가능하고 오류가 발생되었을 때 이를 수정하거나 원래의 데이터로 복구하는 등의 대처가 불가능하였던 종래기술의 CRC 방식의 문제점을 해결할 수 있다.
또한, 본 발명에 따르면, 상기한 바와 같이 데이터의 읽기 및 쓰기 과정에서 발생한 오류보정코드를 이용하여 오류가 발생된 에러비트를 찾아내고, 찾아낸 에러비트를 오류보정 알고리즘을 통해 정상 데이터로 보정할 수 있도록 구성되는 에러보정코드를 이용한 오류보정 기능을 가지는 비동기용 대용량 메모리 모듈 및 에러보정코드를 이용한 비동기용 대용량 메모리 모듈의 오류보정방법이 제공됨으로써, 오류의 탐지만 가능하고 오류가 발생되었을 때 이를 수정하거나 원래의 데이터로 복구하는 등의 대처가 불가능하였던 종래기술의 CRC 방식의 문제점을 해결하는 동시에, 데이터를 오류로부터 보호하기 위한 에러보정코드(ECC) 데이터가 증가할수록 오버헤드가 증가하여 처리시간 및 전체적인 성능이 저하되는 한계가 있었던 종래기술의 ECC 알고리즘의 문제점을 해결할 수 있으며, 그것에 의해, 비동기용 메모리 모듈의 신뢰성 및 안정성을 향상시키고 전체적인 시스템의 성능향상을 도모할 수 있다.
도 1은 본 발명에 따른 에러보정코드를 이용한 오류보정 기능을 가지는 비동기용 대용량 메모리 모듈 및 그 오류보정방법을 구현하기 위한 실시예에 적용된 낸드플래시 메모리의 전체적인 메모리 구조를 개략적으로 나타내는 도면이다.
도 2는 본 발명에 따른 에러보정코드를 이용한 오류보정 기능을 가지는 비동기용 대용량 메모리 모듈 및 그 오류보정방법을 구현하기 위한 실시예에 적용된 낸드플래시 메모리의 전체적인 구성을 개략적으로 나타내는 블록도이다.
도 3은 본 발명의 실시예에 따른 에러보정코드를 이용한 오류보정 기능을 가지는 비동기용 대용량 메모리 모듈 및 그 오류보정방법에 적용되는 낸드플래시 메모리의 BBT(Bad block table)를 나타낸 도면이다.
도 4는 본 발명의 실시예에 따른 에러보정코드를 이용한 오류보정 기능을 가지는 비동기용 대용량 메모리 모듈 및 그 오류보정방법이 적용되는 비동기용 대용량 메모리 모듈의 전체적인 구조를 개략적으로 나타내는 도면이다.
도 5는 본 발명의 실시예에 따른 에러보정코드를 이용한 오류보정방법의 읽기 및 쓰기 처리동작을 개략적으로 나타내는 도면이다.
도 6은 본 발명의 실시예에 따른 에러보정코드를 이용한 오류보정방법에 적용되는 에러보정코드 알고리즘의 에러보정코드를 나타내는 도면이다.
도 7은 본 발명의 실시예에 따른 에러보정코드를 이용한 오류보정 기능을 가지는 비동기용 대용량 메모리 모듈 및 그 오류보정방법의 성능을 시험하기 위해 실제 구현된 비동기용 대용량 메모리 모듈의 구성을 개략적으로 나타내는 도면이다.
도 8은 본 발명의 실시예에 따른 에러보정코드 알고리즘이 적용된 비동기용 대용량 메모리 모듈의 실제 성능을 측정한 결과를 나타낸 도면으로, 도 8a는 NVSRAM 모듈의 전원을 ON 했을 때의 측정결과를 나타내는 도면이고, 도 8b는 NVSRAM 모듈의 전원을 OFF 했을 때의 측정결과를 나타내는 도면이다.
이하, 첨부된 도면을 참조하여, 본 발명에 따른 에러보정코드를 이용한 오류보정 기능을 가지는 비동기용 대용량 메모리 모듈 및 에러보정코드를 이용한 비동기용 대용량 메모리 모듈의 오류보정방법의 구체적인 실시예에 대하여 설명한다.
여기서, 이하에 설명하는 내용은 본 발명을 실시하기 위한 하나의 실시예일 뿐이며, 본 발명은 이하에 설명하는 실시예의 내용으로만 한정되는 것은 아니라는 사실에 유념해야 한다.
또한, 이하의 본 발명의 실시예에 대한 설명에 있어서, 종래기술의 내용과 동일 또는 유사하거나 당업자의 수준에서 용이하게 이해하고 실시할 수 있다고 판단되는 부분에 대하여는, 설명을 간략히 하기 위해 그 상세한 설명을 생략하였음에 유념해야 한다.
즉, 본 발명은, 후술하는 바와 같이, 오류의 탐지만 가능하고 오류가 발생되었을 때 이를 수정하거나 원래의 데이터로 복구하는 등의 대처가 불가능하였던 종래기술의 CRC 방식의 문제점을 해결하기 위해, 데이터의 읽기 및 쓰기 과정에서 발생한 오류보정코드를 이용하여 오류가 발생된 에러비트를 찾아내고, 찾아낸 에러비트를 오류보정 알고리즘을 통해 정상 데이터로 보정할 수 있도록 구성되는 에러보정코드를 이용한 오류보정 기능을 가지는 비동기용 대용량 메모리 모듈 및 에러보정코드를 이용한 비동기용 대용량 메모리 모듈의 오류보정방법에 관한 것이다.
아울러, 본 발명은, 후술하는 바와 같이, 오류의 탐지만 가능하고 오류발생시 대처가 불가능하였던 종래기술의 CRC 방식의 문제점을 해결하는 동시에, 데이터를 오류로부터 보호하기 위한 에러보정코드(ECC) 데이터가 증가할수록 오버헤드가 증가하여 처리시간 및 전체적인 성능이 저하되는 한계가 있었던 종래기술의 ECC 알고리즘의 문제점을 해결하기 위해, 낸드플래시 메모리의 배드블록(Bad Block) 정보를 효율적으로 관리하기 위한 BBT(bad block table)를 설계하고, 비동기용 대용량 메모리 모듈의 전원이 OFF 되면 에러보정코드를 낸드플래시 메모리에 쓰며, 다시 전원이 ON 되면 에러보정코드 알고리즘을 이용하여 낸드플래시 메모리의 데이터와 에러보정코드를 비교하여 에러비트를 정상데이터로 보정하는 것에 의해, 비동기용 메모리 모듈의 신뢰성 및 안정성을 향상시키고, 그것에 의해, 비동기용 메모리 모듈 및 전체적인 시스템의 성능향상을 도모할 수 있도록 구성되는 에러보정코드를 이용한 오류보정 기능을 가지는 비동기용 대용량 메모리 모듈 및 에러보정코드를 이용한 비동기용 대용량 메모리 모듈의 오류보정방법에 관한 것이다.
즉, 이하에 설명하는 본 발명의 실시예에서는, 비동기용 대용량 메모리 모듈의 구조와 사용된 낸드플래시 메모리의 구조를 기술하고, BBT(Bad block table) 설계에 대해 설명하며, 쓰기와 읽기의 데이터 신뢰성을 높이기 위한 에러보정코드 알고리즘을 제시하고, 제시된 에러보정코드 알고리즘에 대한 성능실험 결과를 통해 타당성을 제시하였다.
이를 위해, 이하에 설명하는 본 발명의 실시예에서는, 낸드플래시 메모리의 배드블록(Bad Block) 정보를 효율적으로 관리하기 위해 BBT(bad block table)를 설계하였고, 비동기용 대용량 메모리 모듈의 전원이 OFF가 되면 PSRAM(Pseudo Static Random Access Memory)의 데이터와 외부 컨트롤러를 통해 에러보정코드를 낸드플래시 메모리에 쓰며, 다시 전원이 ON 되면 낸드플래시 메모리의 데이터와 에러보정코드를 PSRAM으로 읽고, 에러보정코드 알고리즘을 이용하여 낸드플래시 메모리의 데이터와 에러보정코드를 비교하고 맞으면 정상, 틀리면 에러가 난 비트를 반전시켜 정상데이터로 보정하는 알고리즘을 설계하여 비동기용 메모리 모듈의 신뢰성 및 안정성을 향상시킬 수 있도록 하였다.
계속해서, 도면을 참조하여, 본 발명에 따른 에러보정코드를 이용한 오류보정 기능을 가지는 비동기용 대용량 메모리 모듈 및 에러보정코드를 이용한 비동기용 대용량 메모리 모듈의 오류보정방법의 구체적인 내용에 대하여 설명한다.
먼저, 도 1 및 도 2를 참조하면, 도 1은 본 발명에 따른 에러보정코드를 이용한 비동기용 대용량 메모리 모듈 및 그 오류보정방법을 구현하기 위한 실시예에 적용된 낸드플래시 메모리의 전체적인 메모리 구조를 개략적으로 나타내는 도면이고, 도 2는 본 발명에 따른 에러보정코드를 이용한 비동기용 대용량 메모리 모듈 및 그 오류보정방법을 구현하기 위한 실시예에 적용된 낸드플래시 메모리의 전체적인 구성을 개략적으로 나타내는 블록도이다.
더 상세하게는, 낸드플래시 메모리는 대표적인 비휘발성 메모리 소자 중 하나로 반도체 집적기술의 발전에 따라 면적대비 높은 용량을 지니고 있으며, 최근에는, 하나의 셀당 각각 2비트, 3비트를 저장하여 대용량 저장장치를 구성하는 MLC(Multi-Level Cell) 및 TLC(Triple-Level Cell) 낸드플래시 메모리가 상대적으로 저렴한 비용으로 많은 양의 데이터를 저장 가능하여 각광받고 있으나, 이는, 하나의 셀당 1비트를 저장하는 SLC(Single-Level Cell) 낸드플래시 메모리에 비해 내구성과 신뢰도가 낮은 단점이 있다.
이에, 본 실시예에서는, 도 1 및 도 2에 나타낸 바와 같이, 낸드플래시 메모리로서 Micron사의 SLC(Single-Level Cell)를 사용한 1Gbytes, 페이지 사이즈(Page size)는 2048bytes인 낸드플래시 메모리를 사용하였으며, 이러한 낸드플래시 메모리의 메모리 구조의 낸드플래시 메모리 어레이는, 바이트 또는 워드로 데이터를 전송하고, 데이터 레지스터 및 캐시 레지스터를 통해 페이지 기반 작업을 하여 낸드플래시 메모리 어레이를 프로그래밍 하도록 구성된다.
또한, 이러한 낸드플래시 메모리의 특성으로는 시리얼(Serial) 전송을 한다는 점과 페이지(Page) 단위로 읽기/쓰기(Read/Write)를 한다는 점, 그리고 배드블록(Bad Block)을 가지고 있다는 점 등이 있다.
아울러, 낸드플래시 메모리의 경우 비트라인(Bit Line)을 한번에 묶어 큰 덩어리 단위로 전송하고 이러한 한 단위를 페이지(Page)라고 하며, 스페어(Spare) 영역은 보통 메타데이터를 기록하기 위해 사용되고, 특히, 배드블록(Bad Block) 정보 및 에러보정코드 정보를 기록한다.
여기서, 이러한 배드블록(Bad Block)은 생산 중(Initial bad block)에 발생하기도 하고, 사용 도중(Run-time bad block)에 발생하기도 하며, 초기 불량블록(Early Bad Blocks)은 반도체 제조공정상의 오류로 인해 발생하고 블록의 특정 위치에 기록된 배드블록 표시를 통해 초기 배드블록 여부를 판별하며, 사용도중 불량블록(Later Bad Blocks)은 반복적인 지우기 및 쓰기 연산으로 인한 셀의 마모로 인해 발생하고 지우기/쓰기 연산이 실패하는 경우 동작중 배드블록으로 판별한다.
또한, 저장장치의 데이터 무결성을 위해서는 배드블록이 사용되지 않도록 보장하는 기법이 필수적이며, 이를 위해, 종래, 배드블록 관리기법의 정확성을 쉽게 검증하고 FTL(Flash translation layer) 및 파일 시스템의 구현 복잡도를 줄이기 위해 독립적인 소프트웨어 계측에서 배드 블록을 관리하는 여러 가지 방안이 제시된 바 있다.
즉, 예를 들면, BBT(Bad block table)는 NAND의 물리적 블록번호(Physical block number)와 접근하려는 논리적 블록번호(Logical block number)를 연결해 주는 방식으로, 이러한 BBT의 구현은 난이도가 높으나 제대로 구현하면 랜덤 억세스(Random Access) 및 안정성이 메우 높아지고 메모리 관리의 효율성이 증가하는 이점이 있다.
계속해서, 도 3을 참조하여, 본 발명의 실시예에 따른 에러보정코드를 이용한 비동기용 대용량 메모리 모듈 및 그 오류보정방법에 적용되는 낸드플래시 메모리의 BBT(Bad block table) 설계에 대하여 설명한다.
도 3을 참조하면, 도 3은 본 발명의 실시예에 따른 에러보정코드를 이용한 비동기용 대용량 메모리 모듈 및 그 오류보정방법에 적용되는 낸드플래시 메모리의 BBT를 나타낸 도면이다.
도 3에 나타낸 바와 같이, 본 발명의 실시예에 적용된 낸드플래시 메모리의 BBT 구조는, 먼저, 첫번째 페이지(Page)에서 BBT는 1024bytes로 구성되어 있고, BBT에 대한 CRC32(cyclic redundancy check) 4bytes, PSRAM에 대한 CRC 4bytes로 구성되어 있으며, 두번째 페이지는 첫번째 유효 블록(Block)의 데이터, 두번째 유효블록 데이터와 각각 페이지별 CRC 데이터도 포함되어 있다.
또한, 기존의 방식은 모듈의 전원을 끄게 되면 PSRMA의 데이터를 낸드플래시 메모리의 유효블록에 저장하고 전원을 켜게 되면 PSRAM에 저장되어 있는 데이터를 읽게 되는데, 이때 데이터의 CRC를 확인하여 정상 CRC는 데이터를 읽고, 비정상 CRC는 오류(Error)를 띄우는데 그치는 것으로, 그 이후의 대책이 없다는 한계가 있었다.
이에, 본 발명에서는, 후술하는 바와 같이 하여, 에러보정코드를 사용한 알고리즘을 이용하여 에러보정코드를 보정하고 오류가 발생하더라도 오류가 보정되어 데이터를 정상적으로 읽을 수 있도록 구성됨으로써, CRC를 확인하여 오류가 발생하였을 때 대처할 수 없었던 종래기술의 문제점을 해결하였다.
계속해서, 도 4 내지 도 6을 참조하여, 본 발명의 실시예에 따른 에러보정코드를 이용한 비동기용 대용량 메모리 모듈 및 그 오류보정방법의 구체적인 내용에 대하여 설명한다.
먼저, 도 4를 참조하면, 도 4는 본 발명의 실시예에 따른 에러보정코드를 이용한 오류보정방법이 적용되는 비동기용 대용량 메모리 모듈의 전체적인 구조를 개략적으로 나타내는 도면이다.
더 상세하게는, 도 4에 나타낸 바와 같이, 본 발명의 실시예에 적용된 NVSRAM 모듈의 구성은, 에러보정코드를 이용한 오류보정방법이 수행되는 MPU(Micro Processor Unit)와 데이터를 저장하기 위한 PSRAM 및 낸드플래시 메모리를 포함하여 구성될 수 있다.
여기서, 본 실시예에서는, ST사의 Cortex-M7 STM32H750 MPU와, ISSI사의 4Mbytes메모리인 PSRAM, Micron사의 1Gbytes용량의 낸드플래시 메모리를 이용하여 도 3에 나타낸 바와 같은 NVSRAM 모듈을 구성한 경우를 예로 하여 본 발명을 설명하였으나, 본 발명은 반드시 이러한 구성으로만 한정되는 것은 아니며, 필요에 따라 다양한 형태로 구성될 수 있는 것임에 유념해야 한다.
또한, NVSRAM 모듈의 테스트를 위한 테스트 보드는 ST사의 Cortex-M7 STM32F746 MCU와 외부전압을 변환하는 전압조정기(Voltage Regulator)로 구성되어 있으며, 이러한 구성을 통하여, 전원이 있을 때는 PSRAM에 데이터가 저장되고, 모듈의 전원이 꺼지게 되면 슈퍼커패시터를 통해 낸드 플래시 메모리에 데이터가 저장된다.
아울러, 에러보정코드는 낸드플래시 메모리의 내부 컨트롤러에 존재하는 온칩(On-chip) ECC와 낸드플래시 메모리의 외부 컨트롤러를 사용하는 오프칩(Off-chip) ECC로 나누어질 수 있으며, 오프칩(Off-chip) ECC는 보드 레벨에서 신뢰성을 얻기 위해 사용되고, 온칩(On-chip) ECC는 MLC및 TLC에서 메모리 자체의 신뢰성 확보를 위해 자주 사용된다.
여기서, 본 실시예에서 사용된 에러보정코드는 오프칩(Off-chip) ECC의 낸드플래시 메모리를 사용하였고, 내부에 에러보정코드 없이 CPU 내부의 에러보정코드를 사용하였다.
또한, 도 5 및 도 6을 참조하면, 도 5는 본 발명의 실시예에 따른 에러보정코드를 이용한 오류보정방법의 읽기 및 쓰기 처리동작을 개략적으로 나타내는 도면이고, 도 6은 본 발명의 실시예에 따른 에러보정코드를 이용한 오류보정방법에 적용되는 에러보정코드 알고리즘의 에러보정코드를 나타내는 도면이다.
즉, 본 실시예에서는, 기존에 데이터 오류를 탐지하기 위한 오류탐지코드로 사용되는 CRC(Cyclic Redundancy Check) 방식은 오류가 발생되었을 때 대처가 불가능하였던 한계를 보완하여 도 5 및 도 6에 나타낸 바와 같은 에러보정코드 알고리즘을 제시하였다.
더 상세하게는, 도 5 및 도 6에 나타낸 바와 같이, NVSRAM 모듈의 전원을 끌 때 PSRAM에 있는 데이터와 MPU에서 생성된 에러보정코드를 함께 낸드플래시 메모리에 쓰게 되고, NVSRAM 모듈의 전원을 켜게 되면 낸드플래시 메모리의 데이터와 에러보정 코드를 PSRAM으로 읽게 되는데, 이때, 쓰고 읽을때 에러보정코드를 비교하며, 낸드플래시 메모리에 2048bytes의 데이터와 4bytes의 에러보정코드를 저장한다.
즉, 본 발명의 실시예에 따른 에러보정코드 알고리즘은, 도 5 및 도 6에 나타낸 바와 같이, 쓰고/읽을때 발생한 에러보정코드를 비교하여 에러가 발생된 에러비트(Error bit)를 찾고, 찾아낸 에러비트를 에러보정코드 알고리즘에 의해 정상 데이터로 보정하는 처리가 수행되도록 구성된다.
따라서 상기한 바와 같은 ECC 알고리즘을 이용하면, 비트에러 보정을 통해 데이터 손실을 감소하고 데이터의 안정성 및 신뢰성을 확보할 수 있다.
계속해서, 도 7 및 도 8을 참조하여, 본 발명에 따른 에러보정코드를 이용한 비동기용 대용량 메모리 모듈 및 그 오류보정방법의 실제 성능을 실험을 통해 검증한 결과에 대하여 설명한다.
먼저, 도 7을 참조하면, 도 7은 본 발명의 실시예에 따른 에러보정코드를 이용한 오류보정방법의 성능을 시험하기 위해 실제 구현된 비동기용 대용량 메모리 모듈의 구성을 개략적으로 나타내는 도면이다.
즉, 본 발명자들은, 본 발명의 실시예에 따른 ECC 알고리즘의 테스트를 위해 도 7에 나타낸 바와 같은 NVSRAM 모듈을 설계하였으며, 이때, 사용된 메모리로는 4Mbytes PSRAM과 1Gbytes 낸드플래시 메모리가 사용되었고, 낸드플래시 메모리는 내부에서 에러보정코드를 제어할 수 없고, 외부 MPU를 통해 에러보정코드를 제어하였으며, 모듈의 전원이 꺼졌을때 전원을 유지하도록 5V/0.47F인 슈퍼커패시터를 사용하였다.
아울러, 도 3에 나타낸 바와 같이 낸드플래시 메모리의 BBT(Bad block table)를 설계하였으며, 에러보정코드 알고리즘을 적용하였을 때의 비동기용 대용량 메모리 모듈의 비트 에러율을 ECC 알고리즘이 적용되지 않은 경우와 비교하였다.
더 상세하게는, 도 8을 참조하면, 도 8은 본 발명의 실시예에 따른 에러보정코드 알고리즘이 적용된 비동기용 대용량 메모리 모듈의 실제 성능을 측정한 결과를 나타낸 도면으로, 도 8a는 NVSRAM 모듈의 전원을 ON 했을 때의 측정결과를 나타내는 도면이고, 도 8b는 NVSRAM 모듈의 전원을 OFF 했을 때의 측정결과를 나타내는 도면이다.
도 8a에 나타낸 바와 같이, NVSRAM 모듈의 전원을 ON 했을 때 낸드플래시 메모리에서 PSRAM으로 읽을 때 약 0.45초가 걸리며, 2048bytes의 데이터와 4bytes의 에러보정코드를 읽게 된다.
또한, 도 8b에 나타낸 바와 같이, NVSRAM 모듈의 전원을 OFF 했을 때에는 전원이 바로 꺼지지 않고 슈퍼커패시터에 의해 PSRAM에서 낸드플래시 메모리로 데이터를 보내게 되며, 이때 약 1.08초가 경과되었다.
아울러, 쓰기시에는 읽을 때와 같이 2048bytes의 데이터와 4bytes의 에러보정코드를 쓰게 되며, 본 발명자들은 이와 같이 데이터를 읽고 쓸 때의 에러보정코드를 비교하여 비트 에러율을 확인하는 실험을 통해 ECC 알고리즘의 성능을 검증하였다.
실험 결과, 에러보정코드 알고리즘을 사용하지 않았을 때 총 3번의 실험결과에서 page 단위당 평균 100ppm의 에러율이 나타났으나, 반면, 에러보정코드 알고리즘을 사용하였을 때는 page 단위당 평균 0ppm의 에러율이 나타난 것으로 확인되어 비트에러 보정을 통한 데이터 손실이 줄어든 것을 확인할 수 있었다.
상기한 바와 같이, 본 발명에서는, 종래, 낸드플래시 메모리는 전기적 충격에 약하여 읽기/쓰기 작업 도중 오류가 발생할 수 있으므로 정확한 데이터를 송수신하기 위해서는 에러를 검출하는 과정이 필수적으로 수반되어야 하고 이를 위해 에러보정코드를 사용하여 신뢰성을 보장하도록 하고 있으나, CRC를 사용하는 기존의 데이터 에러검사의 경우 오류가 발생했을 경우 대처가 불가능 하다는 점을 개선하기 위해 에러보정코드를 이용한 알고리즘을 설계하여 제시하였다.
즉, 상기한 본 발명의 실시예에서 제시된 에러보정코드 알고리즘은 데이터 오류로 인한 ECC가 발생했을 때 ECC를 보정하여 오류를 줄이고 신뢰성을 높일 수 있도록 구성된 것으로, 이를 위해, 낸드플래시 메모리와 PSRAM을 사용한 비동기용 대용량 메모리 모듈이 사용되었으며, 내부 컨트롤이 되지 않는 낸드플래시 메모리를 사용하여 외부 MPU를 이용한 컨트롤 로직을 설계하였다.
또한, 낸드플래시 메모리의 불량인 배드블록(Bad Block) 정보를 효율적으로 관리하기 위해 BBT(bad block table)를 구성하여 안정성을 높이고, 에러보정코드 알고리즘을 설계하여 모듈이 켜지고 꺼질 때, 즉, 읽기/쓰기 작업 도중 생길 수 있는 에러를 최소화였으며, 본 발명의 실시예에서 제시된 에러보정코드 알고리즘을 이용해 성능실험을 진행한 결과 4Mbytes 메모리의 page 단위당 비트 에러율은 평균 0ppm의 결과가 나왔으며, 이러한 결과를 통해 에러보정코드를 이용하지 않았을시의 100ppm의 비트 에러율과 비교하면 보정을 통한 데이터 안정성 및 신뢰도 증가를 확인하였고, 기존의 CRC 방식과 비교하였을 때 처리시간은 조금 늘어 날수 있지만 데이터 손실에 대한 안정성과 신뢰도를 확보할 수 있다는 큰 장점이 있음을 확인하였다.
따라서 상기한 바와 같이 하여, 본 발명의 실시예에 따른 에러보정코드를 이용한 오류보정 기능을 가지는 비동기용 대용량 메모리 모듈 및 에러보정코드를 이용한 비동기용 대용량 메모리 모듈의 오류보정방법을 용이하게 구현할 수 있다.
또한, 상기한 바와 같이 하여 본 발명의 실시예에 따른 에러보정코드를 이용한 오류보정 기능을 가지는 비동기용 대용량 메모리 모듈 및 에러보정코드를 이용한 비동기용 대용량 메모리 모듈의 오류보정방법을 구현하는 것에 의해, 본 발명에 따르면, 낸드플래시 메모리의 배드블록(Bad Block) 정보를 효율적으로 관리하기 위한 BBT(bad block table)를 설계하고, 비동기용 대용량 메모리 모듈의 전원이 OFF 되면 에러보정코드를 낸드플래시 메모리에 쓰며, 다시 전원이 ON 되면 에러보정코드 알고리즘을 이용하여 낸드플래시 메모리의 데이터와 에러보정코드를 비교하여 에러비트를 정상데이터로 보정하도록 구성되는 에러보정코드를 이용한 오류보정 기능을 가지는 비동기용 대용량 메모리 모듈 및 에러보정코드를 이용한 비동기용 대용량 메모리 모듈의 오류보정방법이 제공됨으로써, 오류의 탐지만 가능하고 오류가 발생되었을 때 이를 수정하거나 원래의 데이터로 복구하는 등의 대처가 불가능하였던 종래기술의 CRC 방식의 문제점을 해결할 수 있다.
아울러, 본 발명에 따르면, 상기한 바와 같이 데이터의 읽기 및 쓰기 과정에서 발생한 오류보정코드를 이용하여 오류가 발생된 에러비트를 찾아내고, 찾아낸 에러비트를 오류보정 알고리즘을 통해 정상 데이터로 보정할 수 있도록 구성되는 에러보정코드를 이용한 오류보정 기능을 가지는 비동기용 대용량 메모리 모듈 및 에러보정코드를 이용한 비동기용 대용량 메모리 모듈의 오류보정방법이 제공됨으로써, 오류의 탐지만 가능하고 오류가 발생되었을 때 이를 수정하거나 원래의 데이터로 복구하는 등의 대처가 불가능하였던 종래기술의 CRC 방식의 문제점을 해결하는 동시에, 데이터를 오류로부터 보호하기 위한 에러보정코드(ECC) 데이터가 증가할수록 오버헤드가 증가하여 처리시간 및 전체적인 성능이 저하되는 한계가 있었던 종래기술의 ECC 알고리즘의 문제점을 해결할 수 있으며, 그것에 의해, 비동기용 메모리 모듈의 신뢰성 및 안정성을 향상시키고 전체적인 시스템의 성능향상을 도모할 수 있다.
이상, 상기한 바와 같은 본 발명의 실시예를 통하여 본 발명에 따른 에러보정코드를 이용한 오류보정 기능을 가지는 비동기용 대용량 메모리 모듈 및 에러보정코드를 이용한 비동기용 대용량 메모리 모듈의 오류보정방법의 상세한 내용에 대하여 설명하였으나, 본 발명은 상기한 실시예에 기재된 내용으로만 한정되는 것은 아니며, 따라서 본 발명은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 설계상의 필요 및 기타 다양한 요인에 따라 여러 가지 수정, 변경, 결합 및 대체 등이 가능한 것임은 당연한 일이라 하겠다.

Claims (5)

  1. 전원이 차단되거나 재가동되는 경우 휘발성 메모리와 비휘발성 메모리 사이에서 데이터의 읽기(Read) 및 쓰기(Write) 작업 중 발생하는 데이터의 오류를 보정할 수 있도록 구성되는 비동기용 대용량 메모리 모듈(asynchronous mass memory module)에 있어서,
    상기 메모리 모듈에 데이터를 저장하기 위한 PSRAM(Pseudo Static Random Access Memory)과 낸드플래시 메모리(Nand Flash Memory)를 포함하여 이루어지는 데이터 저장모듈; 및
    상기 PSRAM과 상기 낸드플래시 메모리의 동작을 제어하고, 상기 낸드플래시 메모리의 물리적 블록번호(Physical block number)와 접근하려는 논리적 블록번호(Logical block number)를 연결하고 배드블록(Bad Block) 정보를 관리하기 위해 미리 정해진 BBT(bad block table)의 내용에 근거하여, 에러보정코드(Error Correction Code)를 이용한 오류보정처리를 통해 전원이 차단되거나 재가동되는 경우 상기 PSRAM과 상기 낸드플래시 메모리 사이에서 데이터의 읽기(Read) 및 쓰기(Write) 작업 중 발생하는 데이터의 오류를 보정하는 처리가 수행되는 MPU(Micro Processor Unit)를 포함하여 이루어지는 데이터 처리모듈을 포함하여 구성되는 것을 특징으로 하는 비동기용 대용량 메모리 모듈.
  2. 제 1항에 있어서,
    상기 BBT는,
    첫번째 페이지(Page 0)에 상기 BBT의 내용에 대한 데이터와 상기 BBT에 대한 CRC32(cyclic redundancy check) 데이터 및 상기 PSRAM에 대한 CRC 데이터가 포함되고, 두번째 페이지(Page 1)에 첫번째 유효 블록(Block)의 데이터와 두번째 유효블록의 데이터가 포함되며, 이후의 페이지에는 각각의 페이지별 CRC 데이터가 포함되어 이루어지는 것을 특징으로 하는 에러보정코드를 이용한 비동기용 대용량 메모리 모듈.
  3. 제 2항에 있어서,
    상기 MPU는,
    상기 메모리 모듈의 전원이 ON 일 때는 상기 PSRAM에 데이터를 저장하고,
    상기 BBT의 내용에 근거하여, 상기 메모리 모듈의 전원이 OFF 되면 상기 PSRAM에 있는 데이터와 상기 MPU에서 생성된 에러보정코드를 함께 상기 낸드플래시 메모리의 유효블록에 저장하며,
    다시 상기 메모리 모듈의 전원이 ON 되면, 상기 낸드플래시 메모리의 데이터와 상기 에러보정코드를 상기 PSRAM으로 쓰고 상기 PSRAM에 저장된 데이터를 읽는 동시에, 상기 BBT의 내용에 근거하여, 상기 에러보정코드를 비교하여 데이터의 읽기 및 쓰기 과정에서 에러가 발생된 에러비트(Error bit)를 찾고, 찾아낸 에러비트를 정상 데이터로 보정하는 처리가 수행되도록 구성되는 것을 특징으로 하는 에러보정코드를 이용한 비동기용 대용량 메모리 모듈.
  4. 제 1항에 있어서,
    상기 메모리 모듈은,
    상기 낸드플래시 메모리 내부에 에러보정코드 없이 상기 MPU의 에러보정코드를 사용하는 오프칩(Off-chip) ECC 방식으로 구성되는 것을 특징으로 하는 에러보정코드를 이용한 비동기용 대용량 메모리 모듈.
  5. 청구항 1항 내지 청구항 4항 중 어느 한 항에 기재된 에러보정코드를 이용한비동기용 대용량 메모리 모듈을 이용하여, 전원이 차단되거나 재가동되는 경우 휘발성 메모리와 비휘발성 메모리 사이에서 데이터의 읽기(Read) 및 쓰기(Write) 작업 중 발생하는 데이터의 오류를 보정할 수 있도록 구성되는 에러보정코드를 이용한 비동기용 대용량 메모리 모듈의 오류보정방법에 있어서,
    상기 메모리 모듈의 전원이 ON 일 때는 상기 메모리 모듈의 PSRAM에 데이터를 저장하고, 상기 메모리 모듈의 낸드플래시 메모리의 물리적 블록번호(Physical block number)와 접근하려는 논리적 블록번호(Logical block number)를 연결하고 배드블록(Bad Block) 정보를 관리하기 위해 미리 정해진 BBT(bad block table)의 내용에 근거하여, 상기 메모리 모듈의 전원이 OFF 되면 상기 PSRAM에 있는 데이터와 상기 메모리 모듈의 MPU에서 생성된 에러보정코드를 함께 상기 낸드플래시 메모리의 유효블록에 저장하는 처리가 수행되는 데이터 저장단계; 및
    다시 상기 메모리 모듈의 전원이 ON 되면, 상기 낸드플래시 메모리의 데이터와 상기 에러보정코드를 상기 PSRAM으로 쓰고 상기 PSRAM에 저장된 데이터를 읽는 동시에, 상기 BBT의 내용에 근거하여, 상기 에러보정코드를 비교하여 데이터의 읽기 및 쓰기 과정에서 에러가 발생된 에러비트(Error bit)를 찾고, 찾아낸 에러비트를 정상 데이터로 보정하는 처리가 수행되는 오류보정단계를 포함하여 구성되는 것을 특징으로 하는 에러보정코드를 이용한 비동기용 대용량 메모리 모듈의 오류보정방법.
KR1020200182337A 2020-12-23 2020-12-23 에러보정코드를 이용한 오류보정 기능을 가지는 비동기용 대용량 메모리 모듈 및 에러보정코드를 이용한 비동기용 대용량 메모리 모듈의 오류보정방법 KR102404257B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200182337A KR102404257B1 (ko) 2020-12-23 2020-12-23 에러보정코드를 이용한 오류보정 기능을 가지는 비동기용 대용량 메모리 모듈 및 에러보정코드를 이용한 비동기용 대용량 메모리 모듈의 오류보정방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200182337A KR102404257B1 (ko) 2020-12-23 2020-12-23 에러보정코드를 이용한 오류보정 기능을 가지는 비동기용 대용량 메모리 모듈 및 에러보정코드를 이용한 비동기용 대용량 메모리 모듈의 오류보정방법

Publications (1)

Publication Number Publication Date
KR102404257B1 true KR102404257B1 (ko) 2022-06-02

Family

ID=81984927

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200182337A KR102404257B1 (ko) 2020-12-23 2020-12-23 에러보정코드를 이용한 오류보정 기능을 가지는 비동기용 대용량 메모리 모듈 및 에러보정코드를 이용한 비동기용 대용량 메모리 모듈의 오류보정방법

Country Status (1)

Country Link
KR (1) KR102404257B1 (ko)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080040531A1 (en) * 2006-08-14 2008-02-14 Dennis Anderson Data storage device
KR20160118526A (ko) * 2015-04-02 2016-10-12 한국외국어대학교 연구산학협력단 에러 정정 코드 생성방법 및 장치
KR20170004693A (ko) * 2015-07-03 2017-01-11 에스케이하이닉스 주식회사 메모리 장치의 컨트롤러 및 그 동작 방법
KR20170087043A (ko) * 2016-01-19 2017-07-27 에스케이하이닉스 주식회사 저속 메모리를 이용하여 페이지 리맵핑 방식으로 바이트 어드레스 지정 능력 및 근-dram 성능을 달성하는 메커니즘
JP2018022495A (ja) * 2017-08-03 2018-02-08 東芝メモリ株式会社 情報記録システム
US20180052775A1 (en) * 2007-10-24 2018-02-22 Greenthread, Llc Nonvolatile memory systems with embedded fast read and write memories
KR20190009630A (ko) 2017-07-19 2019-01-29 삼성전자주식회사 비휘발성 메모리의 ecc 제어 방법 및 이를 수행하는 메모리 시스템
KR20190091035A (ko) * 2018-01-26 2019-08-05 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR102076624B1 (ko) 2018-12-06 2020-02-12 한국외국어대학교 연구산학협력단 플래시 메모리 기반의 저장 시스템 및 이의 에러 보정 방법
KR20200113047A (ko) * 2019-03-20 2020-10-06 삼성전자주식회사 오픈 채널 스토리지 장치의 동작 방법

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080040531A1 (en) * 2006-08-14 2008-02-14 Dennis Anderson Data storage device
US20180052775A1 (en) * 2007-10-24 2018-02-22 Greenthread, Llc Nonvolatile memory systems with embedded fast read and write memories
KR20160118526A (ko) * 2015-04-02 2016-10-12 한국외국어대학교 연구산학협력단 에러 정정 코드 생성방법 및 장치
KR20170004693A (ko) * 2015-07-03 2017-01-11 에스케이하이닉스 주식회사 메모리 장치의 컨트롤러 및 그 동작 방법
KR20170087043A (ko) * 2016-01-19 2017-07-27 에스케이하이닉스 주식회사 저속 메모리를 이용하여 페이지 리맵핑 방식으로 바이트 어드레스 지정 능력 및 근-dram 성능을 달성하는 메커니즘
KR20190009630A (ko) 2017-07-19 2019-01-29 삼성전자주식회사 비휘발성 메모리의 ecc 제어 방법 및 이를 수행하는 메모리 시스템
JP2018022495A (ja) * 2017-08-03 2018-02-08 東芝メモリ株式会社 情報記録システム
KR20190091035A (ko) * 2018-01-26 2019-08-05 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR102076624B1 (ko) 2018-12-06 2020-02-12 한국외국어대학교 연구산학협력단 플래시 메모리 기반의 저장 시스템 및 이의 에러 보정 방법
KR20200113047A (ko) * 2019-03-20 2020-10-06 삼성전자주식회사 오픈 채널 스토리지 장치의 동작 방법

Similar Documents

Publication Publication Date Title
US8627180B2 (en) Memory controller ECC
CN108269604B (zh) 用于读取干扰检测以及处理的方法和装置
US8589766B2 (en) Codeword remapping schemes for non-volatile memories
US8832507B2 (en) Systems and methods for generating dynamic super blocks
US8566675B2 (en) Data handling
US8635510B2 (en) Non-systematic coded error correction
US8510634B2 (en) Methods of data handling
JP5675954B2 (ja) メタデータタグを介した不規則なパリティ分布の検出
US10762967B2 (en) Recovering from failure in programming a nonvolatile memory
US9858002B1 (en) Open block stability scanning
US20100287448A1 (en) Flash memory device with rectifiable redundancy bit and method of controlling the same
US7308638B2 (en) System and method for controlling application of an error correction code (ECC) algorithm in a memory subsystem
US20130047056A1 (en) Flash memory device with rectifiable redundancy and method of controlling the same
US20190044546A1 (en) Re-encoding data associated with failed memory devices
US11010245B2 (en) Memory storage apparatus with dynamic data repair mechanism and method of dynamic data repair thereof
KR102404257B1 (ko) 에러보정코드를 이용한 오류보정 기능을 가지는 비동기용 대용량 메모리 모듈 및 에러보정코드를 이용한 비동기용 대용량 메모리 모듈의 오류보정방법
US10922025B2 (en) Nonvolatile memory bad row management
US11995224B2 (en) Data storage device and data processing method
US20210374294A1 (en) Data storage device and data processing method
US11537466B2 (en) Detection of data discrepancy after XOR recovery

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant