KR20180086816A - 사전-검사된 에러율에 따른 적응형 에러정정을 수행하는 메모리장치 및 전자장치와, 메모리장치의 동작방법 - Google Patents
사전-검사된 에러율에 따른 적응형 에러정정을 수행하는 메모리장치 및 전자장치와, 메모리장치의 동작방법 Download PDFInfo
- Publication number
- KR20180086816A KR20180086816A KR1020170010731A KR20170010731A KR20180086816A KR 20180086816 A KR20180086816 A KR 20180086816A KR 1020170010731 A KR1020170010731 A KR 1020170010731A KR 20170010731 A KR20170010731 A KR 20170010731A KR 20180086816 A KR20180086816 A KR 20180086816A
- Authority
- KR
- South Korea
- Prior art keywords
- error correction
- correction code
- data
- storage device
- test vector
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1048—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1048—Adding 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/106—Correcting systematically all correctable errors, i.e. scrubbing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1044—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1068—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/02—Detection or location of defective auxiliary circuits, e.g. defective refresh counters
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/02—Detection or location of defective auxiliary circuits, e.g. defective refresh counters
- G11C29/028—Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/35—Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
- H03M13/353—Adaptation to the channel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7206—Reconfiguration of flash memory system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7207—Details relating to flash memory management management of metadata or control data
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0409—Online test
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Probability & Statistics with Applications (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
메모리장치는, 저장장치에 쓰여질 테스트 벡터를 발생시키는 테스트 벡터 발생기와, 저장장치로부터 읽은 리드 데이터와 테스트 벡터를 비교하여 두 데이터 사이의 차이에 대응되는 정보신호를 발생시키는 데이터 불일치 체커와, 입력되는 제어신호에 응답하여 복수개의 에러정정코드 레벨들 중 어느 하나의 에러정정코드 레벨에 따라 에러정정코드 인코딩 및 디코딩을 수행하는 에러정정코드 컨트롤러와, 그리고 테스트 벡터 발생기, 데이터 불일치 체커, 및 에러정정코드 컨트롤러를 제어하되, 데이터 불일치 체커로부터 발생되는 정보신호에 응답하여 저장장치의 에러율에 대응되는 제어신호를 에러정정코드 컨트롤러에 전송하는 메모리 컨트롤러를 포함한다.
Description
본 개시의 여러 실시예들은 메모리장치 및 그 메모리장치의 동작방법에 관한 것으로서, 특히 사전-검사된 에러율에 따른 적응형 에러정정을 수행하는 메모리장치 및 전자장치와, 메모리장치의 동작방법에 관한 것이다.
불휘발성(non-volatile) 메모리는 전원이 공급되지 않아도 저장된 데이터가 유지되는 메모리로서, 이를 기반으로 하는 데이터 저장장치는 스마트폰, 디지털 카메라 등 포터블 기기 및 컴퓨터 등에 널리 사용되고 있다. 불휘발성 메모리, 특히 낸드(NAND) 메모리의 집적도는, 미세 공정을 사용하여 셀의 크기와 회로 선폭을 줄이는 기술 및 셀 당 저장할 수 있는 비트 수를 늘려주는 멀티-레벨 셀(multi-level cell; 이하 MLC) 기술에 의해 향상되었다. 최근에는 기존의 2차원 형태인 플래너(planar) 구조가 갖는 미세 공정화의 한계를 극복하고 메모리의 집적도를 지속적으로 높이기 위한 새로운 기술로 셀을 3차원 배열 형태로 구성하는 수직형(vertical) 구조가 개발되었다.
메모리의 집적도를 높이기 위한 미세 공정화 및 MLC화는 메모리 자체의 신뢰성을 하락시키는 원인이 되고 있다. 공정 미세화로 인한 회로 선폭 감소에 의한 셀 간 간섭(cell-to-cell interference)에 취약해지고, MLC화로 각 레벨 간의 간격이 줄어들어 인접 레벨 간 겹치는 영역이 증가하기 때문이다. 이와 같이 메모리 자체의 오류가 증가하는 상황에서, 데이터 저장 장치의 신뢰성을 높은 수준으로 보장하기 위해서는 에러 정정 코드(Error Correction Code; 이하 ECC) 기술을 사용할 필요가 있다.
한편 상변화 램(PCRAM; Phase Change RAM), 자기메모리(MRAM; Magnetoresistive RAM), 나노 플로팅 게이트 메모리(NFGM; Nano Floating Gate Memory), 저항성 램(RRAM; Resistive RAM), 또는 폴리머 램(Polymer RAM)과 같이 최근 활발하게 연구가 이루어지고 있는 불휘발성 메모리의 경우, 셀 특성으로 인하여 데이터 "0"과 데이터 "1"을 구분하는 리드 마진(read margin)이 상대적으로 작다. 이와 같은 불휘발성 메모리는, 싱글 레벨 셀(single-level cell)의 구조를 갖더라도 낸드 메모리에 비하여 상대적으로 높은 에러율(error rate)을 나타내며, 그 결과 ECC 기술의 적용에 대한 요구가 더욱 더 크다.
본 출원이 해결하고자 하는 과제는, 저장장치의 에러율을 사전에 검사하고, 검사 결과인 에러율에 대응되는 에러정정코드 레벨을 사용하여 에러정정을 수행하는 메모리장치 및 전자장치를 제공하는 것이다.
본 출원이 해결하고자 하는 다른 과제는, 위와 같은 메모리장치의 동작방법을 제공하는 것이다.
본 개시의 일 예에 따른 메모리장치는, 저장장치에 쓰여질 테스트 벡터를 발생시키는 테스트 벡터 발생기와, 저장장치로부터 읽은 리드 데이터와 테스트 벡터를 비교하여 두 데이터 사이의 차이에 대응되는 정보신호를 발생시키는 데이터 불일치 체커와, 입력되는 제어신호에 응답하여 복수개의 에러정정코드 레벨들 중 어느 하나의 에러정정코드 레벨에 따라 에러정정코드 인코딩 및 디코딩을 수행하는 에러정정코드 컨트롤러와, 그리고 테스트 벡터 발생기, 데이터 불일치 체커, 및 에러정정코드 컨트롤러를 제어하되, 데이터 불일치 체커로부터 발생되는 정보신호에 응답하여 저장장치의 에러율에 대응되는 제어신호를 에러정정코드 컨트롤러에 전송하는 메모리 컨트롤러를 포함한다.
본 개시의 다른 예에 따른 메모리장치는, 저장장치에 쓰여질 테스트 벡터를 발생시키는 테스트 벡터 발생기와, 저장장치로부터 읽은 리드 데이터와 테스트 벡터를 비교하여 두 데이터 사이의 차이에 대응되는 정보신호를 발생시키는 데이터 불일치 체커와, 입력되는 에러정정코드 레벨을 적용하여 에러정정코드 인코딩 및 디코딩을 수행하는 에러정정코드 컨트롤러와, 그리고 테스트 벡터 발생기, 데이터 불일치 체커, 및 에러정정코드 컨트롤러를 제어하되, 데이터 불일치 체커로부터 발생되는 정보신호에 응답하여 복수개의 에러정정코드 레벨들 중 저장장치의 에러율에 대응되는 에러정정코드 레벨을 에러정정코드 컨트롤러에 전송하는 메모리 컨트롤러를 포함한다.
본 개시의 또 다른 예에 따른 메모리장치는, 저장장치에 쓰여질 테스트 벡터를 발생시키는 테스트 벡터 발생기와, 저장장치로부터 읽은 리드 데이터와 테스트 벡터를 비교하여 두 데이터 사이의 차이에 대응되는 정보신호를 발생시키는 데이터 불일치 체커, 및 테스트 벡터 발생기 및 데이터 불일치 체커를 제어하되, 데이터 불일치 체커로부터 발생되는 정보신호에 응답하여 복수개의 에러정정코드 레벨들 중 저장장치의 에러율에 대응되는 에러정정코드 레벨이 적용되는 에러정정코드 인코딩 및 디코딩을 수행하는 메모리 컨트롤러를 포함한다.
본 개시의 일 예에 따른 전자장치는, 펌웨어 코드가 저장되는 코드 메모리와, 코드 메모리에 쓰여질 테스트 벡터를 발생시키는 테스트 벡터 발생기와, 코드 메모리로부터 읽은 리드 데이터와 테스트 벡터를 비교하여 두 데이터 사이의 차이에 대응되는 정보신호를 발생시키는 데이터 불일치 체커와, 입력되는 제어신호에 응답하여 복수개의 에러정정코드 레벨들 중 어느 하나의 에러정정코드 레벨에 따라 펌웨어에 대한 에러정정코드 인코딩을 수행하는 에러정정코드 컨트롤러와, 그리고 데이터 불일치 체커로부터 발생되는 정보신호에 응답하여 복수개의 에러정정코드 레벨들 중 코드 메모리의 에러율에 대응되는 제어신호를 에러정정코드 컨트롤러에 전송하고, 에러정정코드 컨트롤러에 의해 에러정정코드 인코딩된 펌웨어를 코드 메모리에 기록하는 메모리 컨트롤러를 포함한다.
본 개시의 일 예에 따른 메모리장치의 동작방법은, 테스트 벡터를 저장장치에 기록하는 단계와, 저장장치에 기록된 테스트 벡터를 읽은 리드 데이터를 테스트 벡터와 비교하는 단계와, 리드 데이터와 테스트 벡터 사이에 데이터 불일치가 발생되면 저장장치의 에러율을 연산하는 단계와, 그리고 에러율에 대응되는 에러정정코드 레벨을 설정하는 단계를 포함한다.
본 개시의 다른 예에 따른 메모리장치의 동작방법은, 저장장치의 액세스 상태를 주기적으로 확인하는 단계와, 확인 결과 액세스 횟수가 설정값을 넘는 저장장치의 대상영역이 존재하는 경우, 테스트 벡터를 저장장치의 대상영역에 기록하는 단계와, 저장장치의 대상영역에 기록된 테스트 벡터를 읽은 리드 데이터를 테스트 벡터와 비교하는 단계와, 리드 데이터와 테스트 벡터 사이에 데이터 불일치가 발생되면 저장장치의 에러율을 연산하는 단계와, 그리고 에러율에 대응되는 에러정정코드 레벨을 설정하는 단계를 포함한다.
본 개시의 또 다른 예에 따른 메모리장치의 동작방법은, 저장장치의 에러율 변경을 감지하여 변경된 에러율에 대응되는 에러정정코드 레벨을 적용하여 읽기 및 쓰기 동작시에 에러정정코드 인코딩 및 디코딩을 수행하는 단계와, 그리고 저장장치의 데이터 중 서로 다른 에러정정코드 레벨이 적용되어 에러정정코드 인코딩된 데이터에 대해 현재 설정된 에러정정코드 레벨이 적용되어 에러정정코드 인코딩이 이루어지도록 하는 데이터 스크러빙을 수행하는 단계를 포함한다.
여러 실시예들에 따르면, 저장장치의 에러율을 사전에 검사하고, 검사 결과인 에러율에 대응되는 ECC 레벨을 사용하여 에러정정을 수행함으로써, 불필요한 패리티 비트로 인한 저장장치의 공간 소모를 줄이고, ECC 인코딩 및 디코딩 시간을 최적화함으로써 메모리장치의 성능을 향상시킬 수 있다는 이점이 제공된다. 특히 저장장치의 에러율을 사전에 검사하는 과정을 주기적으로 수행되도록 함으로써 리텐션(retention) 특성에 기인한 소프트 에러(soft error)를 억제할 수 있다는 이점도 제공된다.
도 1은 본 개시의 일 예에 따른 메모리장치를 나타내 보인 블록도이다.
도 2는 도 1의 메모리장치의 동작을 설명하기 위해 나타내 보인 플로 챠트이다.
도 3 내지 도 5는 도 1의 메모리장치의 에러율 사전 검사 과정을 설명하기 위해 나타내 보인 블록도들이다.
도 6은 도 1의 메모리장치의 ECC 컨트롤러에서의 ECC 인코딩 및 디코딩 동작을 설명하기 위해 나타내 보인 블록도이다.
도 7은 도 1의 메모리장치의 저장장치 에러율의 주기적인 검사를 통한 ECC 레벨 설정 동작을 설명하기 위해 나타내 보인 플로 챠트이다.
도 8은 도 1의 메모리장치의 데이터 스크러빙(data scrubbing) 과정을 설명하기 위해 나타내 보인 플로 챠트이다.
도 9는 본 개시의 다른 예에 따른 메모리장치를 나타내 보인 블록도이다.
도 10은 본 개시의 또 다른 예에 따른 메모리장치를 나타내 보인 블록도이다.
도 11은 본 개시의 일 예에 따른 전자 장치를 나타내 보인 블록도이다.
도 2는 도 1의 메모리장치의 동작을 설명하기 위해 나타내 보인 플로 챠트이다.
도 3 내지 도 5는 도 1의 메모리장치의 에러율 사전 검사 과정을 설명하기 위해 나타내 보인 블록도들이다.
도 6은 도 1의 메모리장치의 ECC 컨트롤러에서의 ECC 인코딩 및 디코딩 동작을 설명하기 위해 나타내 보인 블록도이다.
도 7은 도 1의 메모리장치의 저장장치 에러율의 주기적인 검사를 통한 ECC 레벨 설정 동작을 설명하기 위해 나타내 보인 플로 챠트이다.
도 8은 도 1의 메모리장치의 데이터 스크러빙(data scrubbing) 과정을 설명하기 위해 나타내 보인 플로 챠트이다.
도 9는 본 개시의 다른 예에 따른 메모리장치를 나타내 보인 블록도이다.
도 10은 본 개시의 또 다른 예에 따른 메모리장치를 나타내 보인 블록도이다.
도 11은 본 개시의 일 예에 따른 전자 장치를 나타내 보인 블록도이다.
본 출원의 예의 기재에서 "제1" 및 "제2"와 같은 기재는 부재를 구분하기 위한 것이며, 부재 자체를 한정하거나 특정한 순서를 의미하는 것으로 사용된 것은 아니다. 또한, 어느 부재의 "상"에 위치하거나 "상부", "하부", 또는 "측면"에 위치한다는 기재는 상대적인 위치 관계를 의미하는 것이지 그 부재에 직접 접촉하거나 또는 사이 계면에 다른 부재가 더 도입되는 특정한 경우를 한정하는 것은 아니다. 또한, 어느 한 구성 요소가 다른 구성 요소에 "연결되어 있다"거나 "접속되어 있다"의 기재는, 다른 구성 요소에 전기적 또는 기계적으로 직접 연결되어 있거나 또는 접속되어 있을 수 있으며, 또는, 중간에 다른 별도의 구성 요소들이 개재되어 연결 관계 또는 접속 관계를 구성할 수도 있다.
도 1은 본 개시의 일 예에 따른 메모리장치를 나타내 보인 블록도이다. 도 1을 참조하면, 일 예에 따른 메모리장치(100)는, 저장장치(Memory)(110), 테스트 벡터 발생기(Test Vector Generator)(120), 데이터 불일치 체커(Discrepancy Checker)(130), ECC 컨트롤러(ECC Controller)(140), 및 메모리 컨트롤러(Memory Controller)(150)를 포함한다. 메모리장치(100)는, 메모리 상태 체커(Memory Status Checker)(160)를 더 포함할 수 있다. 일 예에서 저장장치(110)는, 반도체메모리, 예컨대 상변화 램(PCRAM; Phase Change RAM), 자기메모리(MRAM; Magnetoresistive RAM), 나노 플로팅 게이트 메모리(NFGM; Nano Floating Gate Memory), 저항성 램(RRAM; Resistive RAM), 폴리머 램(Polymer RAM)일 수 있다.
테스트 벡터 발생기(120)는, 저장장치(110)에 쓰여질 테스트 벡터를 발생시킨다. 일 예에서 테스트 벡터는, 이진 데이터 스트림(binary data stream)으로 구성될 수 있다. 일 예에서 테스트 벡터 발생기(120)는, 메모리 컨트롤러(150)로부터의 요구에 의해 테스트 벡터를 발생시킨다. 이때 테스트 벡터의 이진 데이터는 랜덤(random)하게 구성될 수 있다. 테스트 벡터 발생기(120)에 의해 발생되는 테스트 벡터는 메모리 컨트롤러(150)를 통해 저장장치(110)에 기록된다. 또한 테스트 벡터는 데이터 불일치 체커(130)로 전송된다.
데이터 불일치 체커(130)는, 메모리 컨트롤러(150)를 통해 전송되는 저장장치(110)로부터 읽은 리드 데이터(read data)와 테스트 벡터를 비교하여 두 데이터 사이의 불일치 여부에 대응되는 신호를 발생시킨다. 이를 위해 데이터 불일치 체커(130)는 비교 로직을 포함할 수 있다. 일 예에서 데이터 불일치 체커(130)는 리드 데이터의 첫번째 비트 값부터 마지막 비트 값까지 테스트 벡터의 첫번째 비트 값부터 마지막 비트 값과 비교한다. 그리고 그 비교 결과를 포함하는 정보신호를 메모리 컨트롤러(150)에게 전송한다.
ECC 컨트롤러(140)는, ECC 인코딩을 수행하는 ECC 인코더(ECC encoder)(141)와, ECC 디코딩을 수행하는 ECC 디코더(ECC decoder)(142)를 포함한다. ECC 인코더(141)는, 메모리 컨트롤러(150)를 통해 호스트로부터 전송되는 데이터에 대한 ECC 인코딩을 수행한다. ECC 인코딩된 데이터는 메모리 컨트롤러(150)를 통해 저장장치(110)에 기록된다. ECC 디코더(142)는, 메모리 컨트롤러(150)를 통해 저장장치(110)로부터 전송되는 데이터에 대한 ECC 디코딩을 수행한다. ECC 디코딩된 데이터는 메모리 컨트롤러(150)를 통해 호스트로 전송된다. ECC 인코딩 및 ECC 디코딩은, 각각 복수개, 예컨대 N개의 ECC 레벨들(ECC Level-1, ECC Level-2, …, ECC Level-N) 중 어느 하나의 ECC 레벨에 따라 수행된다. 즉 ECC 컨트롤러(140)는, 메모리 컨트롤러(150)로부터의 제어신호에 응답하여 N개의 ECC 레벨들(ECC Level-1, ECC Level-2, …, ECC Level-N) 중 어느 하나의 ECC 레벨을 설정하고, 이 설정된 ECC 레벨에 따라 ECC 인코딩 및 디코딩이 이루어지도록 한다. 이를 위해 ECC 컨트롤러(140)는, N개의 ECC 레벨들(ECC Level-1, ECC Level-2, …, ECC Level-N)이 저장되어 있는 ECC 레벨 저장소(143)를 갖는다. 일 예에서 ECC 레벨들(ECC Level-1, ECC Level-2, …, ECC Level-N) 각각은 서로 다른 에러 정정 능력을 갖는다. 예컨대 첫번째 ECC 레벨(ECC Level-1)은 한 개의 비트에 대한 에러 정정 능력을 갖는다. N번째 ECC 레벨(ECC Level-N)은 N개의 비트에 대한 에러 정정 능력을 갖는다.
메모리 컨트롤러(150)는, 테스트 벡터 발생기(120), 데이터 불일치 체커(130), 및 ECC 컨트롤러(140)를 제어한다. 메모리 컨트롤러(150)는, 호스트(Host)와의 인터페이싱을 통해 호스트로부터 전송되는 데이터를 저장장치(110)에 쓰거나, 또는 저장장치(110)로부터 데이터를 읽어 호스트로 전송시킨다. 데이터 쓰기 과정에서, 메모리 컨트롤러(150)는 호스트로부터 전송되는 데이터를 ECC 컨트롤러(140)에 전송하여 ECC 인코딩이 수행되도록 한다. 메모리 컨트롤러(150)는, ECC 인코딩이 수행된 인코딩된 데이터를 전송받아 저장장치(110)에 기록한다. 데이터 읽기 과정에서, 메모리 컨트롤러(150)는 저장장치(110)에서 읽어 들인 데이터를 ECC 컨트롤러(140)에 전송하여 ECC 디코딩이 수행하여 에러가 정정되도록 한다. 메모리 컨트롤러(150)는 ECC 디코딩이 수행된 디코딩된 데이터를 전송받아 호스트로 전송한다. 메모리 컨트롤러(150)는, 초기화 단계에서 또는 주기적으로 저장장치(110)의 에러율을 검사하여 ECC 레벨을 결정하는 제어동작을 수행할 수 있다. 또한 메모리 컨트롤러(150)는 데이터 스크러빙(scrubbing) 동작을 위한 제어동작 및 데이터 스크러빙 과정에서의 ECC 레벨 변경을 위한 제어동작을 수행할 수 있다.
메모리 상태 체커(160)는, 메모리 컨트롤러(150)로부터 저장장치(110)의 현재 상태에 대한 정보를 입력받아 저장한다. 또한 메모리 상태 체커(160)는 저장장치(110)의 데이터 엑세스 상태를 주기적으로 확인하고, 그 결과를 메모리 컨트롤러(150)로 전송한다. 이를 위해 메모리 컨트롤러(150)는, 저장장치(110)에 대한 엑세스 제어동작을 수행하거나, 또는 저장장치(110)에 대한 초기화 제어동작을 수행하는 경우, 그 정보를 메모리 상태 체커(160)로 전송할 수 있다.
도 2는 도 1의 메모리장치의 동작을 설명하기 위해 나타내 보인 플로 챠트이다. 그리고 도 3 내지 도 5는 도 1의 메모리장치의 에러율 사전 검사 과정을 설명하기 위해 나타내 보인 블록도들이다. 도 3 내지 도 5에서 도 1과 동일한 참조부호는 동일한 구성요소를 나타낸다. 먼저 도 2를 도 3과 함께 참조하면, 메모리 컨트롤러(150)는 메모리 상태 체커(160)를 통해 저장장치(110)의 상태를 확인한다(단계 210). 확인 결과 저장장치(110)가 초기화 상태인지 아닌지 판단한다(단계 220). 저장장치(110)가 초기화 상태가 아닌 경우, ECC 레벨 설정 프로세스는 수행되지 않는다. 저장장치(110)가 이미 초기화 상태인 경우, 메모리 컨트롤러(150)는 바로 ECC 레벨 설정을 위한 제어 동작을 수행한다. ECC 레벨 설정을 위해 먼저 테스트 벡터 발생기(120)는 테스트 벡터(test vector)를 발생시킨다. 본 예에서 테스트 벡터는 모두 "0"의 값을 갖는 16비트의 이진 데이터 스트림(000000000000000)으로 구성되는 경우를 예로 들기로 한다. 이 테스트 벡터는, 테스트 벡터 발생기(120)로부터 데이터 불일치 체커(130) 및 메모리 컨트롤러(150)에 전송된다. 데이터 불일치 체커(130)는 후속의 데이터 불일치 체킹 동작을 위해 테스트 벡터를 저장해 놓는다. 메모리 컨트롤러(150)는 전송된 테스트 벡터를 저장장치(110)에 기록한다(단계 230).
다음에 도 2를 도 4와 함께 참조하면, 메모리 컨트롤러(150)는 저장장치(110)에 기록된 테스트 벡터에 대한 읽기 동작을 수행한다(단계 240). 저장장치(110)로 테스트 벡터를 쓰거나 저장장치(110)로부터 테스트 벡터를 읽는 과정에서 에러가 발생되지 않은 경우, 저장장치(110)로부터 읽은 리드 데이터(read data)와 테스트 벡터는 동일한 데이터 값을 가질 것이다. 반면에 저장장치(110)로 테스트 벡터를 쓰거나 저장장치(110)로부터 테스트 벡터를 읽는 과정에서 에러가 발생되는 경우, 저장장치(110)로부터 읽은 리드 데이터(read data)와 테스트 벡터는 일부 다른 값을 가질 것이다. 본 예에서는 다섯번째 비트에서 에러가 발생되어 리드 데이터가 "0000100000000000"의 이진 데이터 스트림을 갖는 경우를 예로 들기로 한다. 메모리 컨트롤러(150)는, 저장장치(110)로부터 읽은 리드 데이터를 데이터 불일치 체커(130)로 전송한다.
다음에 도 2를 도 5와 함께 참조하면, 데이터 불일치 체커(130)는, 테스트 벡터 발생기(120)로부터 전송된 테스트 벡터와, 메모리 컨트롤러(150)를 통해 전송된 리드 데이터를 비교한다(단계 250). 그리고 비교 결과에 따른 데이터 불일치 정보를 갖는 정보신호(DS)를 메모리 컨트롤러(150)에 전송한다. 이를 위해 데이터 불일치 체커(130)는 비교 로직을 포함할 수 있다. 일 예에서 정보신호(DS)는, 리드 데이터의 각각의 비트별로 테스트 벡터와 일치하는지 일치하지 않는지의 여부를 포함할 수 있다. 예컨대 테스트 벡터가 "000000000000000"의 이진 데이터 스트림으로 구성되고, 리드 데이터가 "0000100000000000"의 이진 데이터 스트림으로 구성되는 경우, 데이터 불일치 체커(130)는, 리드 데이터의 다섯번째 비트에서 테스트 벡터와 데이터가 불일치하고 나머지 비트들에서는 테스트 벡터와 데이터가 일치한다는 내용의 정보신호(DS)를 메모리 컨트롤러(150)에 전송한다.
메모리 컨트롤러(150)는, 데이터 불일치 체커(130)로부터의 정보신호(DS)에 응답하여 데이터가 불일치한지, 즉 에러가 발생되었는지의 여부를 판단한다(단계 260). 이 판단 결과, 에러가 발생되지 않은 것으로 판단되는 경우, ECC 레벨을 설정하지 않고 ECC 레벨 설정 과정을 종료한다. 이 경우 메모리 컨트롤러(150)는, 데이터 읽기 및 쓰기 동작을 수행하는데 있어서 후속의 ECC 레벨 설정 과정에 의해 ECC 레벨이 설정되기 전까지 ECC 컨트롤러(140)에 의한 ECC 인코딩 및 디코딩 과정에 생략되도록 할 수 있다.
정보신호(DS)에 의해 에러가 발생된 것으로 판단되는 경우, 메모리 컨트롤러(150)는 저장장치(110)의 에러율을 연산한다(단계 270). 이 연산에 의해 발생되는 에러율 신호(ERS)는 ECC 컨트롤러(140)에 전송된다. ECC 컨트롤러(140)는, 전송되는 에러율 신호(ERS)에서의 에러율에 적합한 ECC 레벨을 결정한다(단계 280). 그리고 결정된 ECC 레벨 신호(ECC level)를 메모리 컨트롤러(150)로 전송하여, 메모리 컨트롤러(150)가 현재 상태에서 적용되고 있는 ECC 레벨에 대한 정보를 갖도록 한다. ECC 컨트롤러(140)는, 이와 같은 과정에 의해 결정된 ECC 레벨에 따라 ECC 인코딩 및 디코딩이 수행되도록 한다. 일 예에서, 저장장치(110)가 하나의 비트에서 에러가 발생되는 에러율을 갖는 경우, ECC 컨트롤러(140)는, ECC 레벨들(ECC Level-1, ECC Level-2, …, ECC Level-N) 중에서 한 개의 비트에 대한 에러 정정 능력을 갖도록 설정된 첫번째 ECC 레벨(ECC Level-1)로 현재의 ECC 레벨로 설정하고, ECC 레벨이 다른 ECC 레벨로 갱신되기 전까지는 설정된 첫번째 ECC 레벨(ECC Level-1)에 따라 ECC 인코딩 및 디코딩을 수행한다.
도 6은 도 1의 메모리장치의 ECC 컨트롤러에서의 ECC 인코딩 및 디코딩 동작을 설명하기 위해 나타내 보인 블록도이다. 도 6을 도 1과 함께 참조하면, ECC 컨트롤러(140)로 입력되는 k비트의 오리지널 데이터는 ECC 인코더(141)로 입력된다. 오리지널 데이터는, 호스트로부터의 쓰기 명령과 함께 저장장치(110)에 기록될 데이터를 의미한다. 메모리 컨트롤러(150)는, 현재 적용되는 ECC 레벨을 확인한 후에 오리지널 데이터를 ECC 컨트롤러(140)에 전송한다. ECC 컨트롤러(140)로 전송되는 오리지널 데이터는 ECC 인코더(141)에 입력된다. ECC 인코더(141)는 k비트의 오리지널 데이터에 대한 ECC 인코딩을 수행하여 코드워드(codeword)를 발생시킨다. 일 예에서 ECC 인코딩은 BCH(Bose-Chaudhuri-Hochquenghem) 코드를 이용하여 수행할 수 있다. 코드워드는, (n+m) 비트의 이진 데이터 스트림으로 구성될 수 있다. 구체적으로 코드워드는, k비트의 오리지널 데이터와 (n-k)비트의 패리티 비트(parity bits)와, 그리고 m비트의 ECC 레벨 플래그 비트(ECC level flag bit)로 구성될 수 있다. (n-k)비트의 패리티 비트는, ECC 인코딩 과정에서 추가되는 이진 데이터로서 ECC 디코딩 과정에서 에러를 정정하는데 이용된다. m비트의 ECC 레벨 플래그 비트는, ECC 인코딩 과정에서 적용된 ECC 레벨을 정의하는 이진 데이터로서, ECC 디코딩 과정에서 동일한 ECC 레벨로 ECC 디코딩이 수행되도록 하는데 이용된다. ECC 인코더(141)로부터 인코딩된 데이터, 즉 (n+m)비트의 코드워드는 메모리 컨트롤러(150)를 통해 저장장치(110)에 기록된다.
호스트로부터의 읽기 명령이 발생되면, 메모리 컨트롤러(150)는 저장장치(110)에 저장된 코드워드를 읽어 ECC 컨트롤러(140)로 전송한다. 이 코드워드는 ECC 컨트롤러(140)의 ECC 디코더(142)로 입력된다. ECC 디코더(142)는, 메모리 컨트롤러(도 1의 150)를 통해 저장장치(도 1의 110)로부터 읽은 코드워드에 대해 ECC 디코딩을 수행하여 k비트의 디코딩된 데이터(decoded data)를 출력시킨다. k비트의 디코딩된 데이터는, 읽기 또는 쓰기 과정에서 발생되는 에러가 정정된 데이터로서 오리지널 데이터와 동일한 이진 데이터 스트림으로 구성된다. 이와 같은 ECC 디코딩을 수행하는 과정에서, ECC 디코더(142)는, 코드워드의 ECC 레벨 플래그 비트의 값을 통해 ECC 인코딩시 적용된 ECC 레벨과 동일한 ECC 레벨을 적용하여 ECC 디코딩을 수행한다. ECC 디코더(142)로부터 발생된 디코딩된 데이터는 메모리 컨트롤러(150)를 통해 호스트로 전송된다.
본 예에 따른 메모리장치에 따르면, 저장장치(110)가 초기화된 상태에서 저장장치(110)의 에러율을 사전에 검사하고, 검사된 에러율에 따라 적절한 ECC 레벨을 설정함으로써, 실질적으로 발생되는 에러와 관계없이 과도하게 수행될 수 있는 ECC 인코딩/디코딩 과정이 생략되도록 할 수 있다. 더욱이 이 과정에서 저장장치(110)가 에러율이 0인 경우, 즉 에러가 발생되지 않는 경우, ECC 컨트롤러(140)에서의 ECC 인코딩 및 디코딩을 생략할 수 있으므로, 과도한 ECC 인코딩 및 디코딩에 의한 메모리장치의 성능 저하를 방지할 수 있다. 통상적으로 저장장치(110)에 에러율은 사용 빈도가 증가함에 따라 점진적으로 높아진다. 본 예에 따른 메모리장치의 경우, 초기화 상태에서 에러율을 사전게 검사하는 동작 외에도, 주기적으로 에러율을 검사하여 ECC 레벨이 변경되도록 할 수 있으며, 이 경우 점점 증가하는 에러율에 대응되도록 ECC 레벨이 능동적으로 변경되도록 함으로써 메모리장치의 성능이 지속적으로 유지되도록 할 수 있다.
도 7은 도 1의 메모리장치의 저장장치 에러율의 주기적인 검사를 통한 ECC 레벨 설정 동작을 설명하기 위해 나타내 보인 플로 챠트이다. 도 7을 도 1과 함께 참조하면, 메모리 컨트롤러(150)는 메모리 상태 체커(160)를 통해 저장장치(110)의 액세스(access) 상태를 주기적으로 확인한다(단계 310). 확인 결과 저장장치(110)의 영역들 중 액세스 횟수가 설정값을 넘는 영역(이하 대상영역(target area)이라고 함)이 존재하는지의 여부를 판단한다(단계 320). 대상영역이 존재하지 않는 것으로 판단되는 경우, ECC 레벨 설정 프로세스를 생략하고 현재의 ECC 레벨이 유지되도록 한다. 대상영역이 존재하는 것으로 판단되는 경우, 테스트 벡터 발생기(120)는 테스트 벡터(test vector)를 발생시킨다. 이 테스트 벡터는, 테스트 벡터 발생기(120)로부터 데이터 불일치 체커(130) 및 메모리 컨트롤러(150)에 전송된다. 데이터 불일치 체커(130)는 후속의 데이터 불일치 체킹 동작을 위해 테스트 벡터를 저장해 놓는다. 메모리 컨트롤러(150)는 전송된 테스트 벡터를 저장장치(110)의 특정영역에 기록한다(단계 330). 이후에는 도 2를 참조하여 설명한 ECC 레벨 설정 프로세스(도 2의 단계 240-290)를 동일하게 수행한다.
도 8은 도 1의 메모리장치의 데이터 스크러빙(data scrubbing) 과정을 설명하기 위해 나타내 보인 플로 챠트이다. 도 8을 도 1과 함께 참조하면, 메모리 컨트롤러(150)는 저장장치(110)에 대한 액세스 요청(access request)이 있는지의 여부를 모니터링(monitering)한다(단계 410). 그리고 일정 시간 동안 저장장치 액세스 요청이 없는지의 여부를 판단한다(단계 420). 이 판단은 메모리 컨트롤러(150) 내부의 명령 큐(command queue) 저장소의 상태에 의해 수행될 수 있다. 일정 시간 내에 저장장치(110)에 대한 액세스를 수행하여야 할 경우, 메모리 컨트롤러(150)는 저장장치(110)에 대한 액세스를 위한 제어동작을 수행하면서 저장장치 액세스 요청에 대한 모니터링을 계속 수행한다. 일정 시간 내에 저장장치(110)에 대한 액세스를 수행할 필요가 없는 경우, 저장장치(110) 내의 데이터를 모두 읽고, 읽은 리드 데이터를 ECC 컨트롤러(140)로 전송한다. ECC 컨트롤러(140)의 ECC 디코더(142)는, 전송된 리드 데이터에 대한 ECC 디코딩을 수행한 후에 ECC 인코더(141)로 입력시킨다. 이때 ECC 디코더(142)에 의한 ECC 디코딩 과정은, 도 6을 참조하여 설명한 바와 같이, 리드 데이터에 포함되어 있는 ECC 레벨 플래그 비트의 값에 의해 ECC 인코딩시 적용된 ECC 레벨을 적용하여 수행되도록 한다(단계 430). ECC 디코더(142)에 의해 디코딩된 데이터를 입력받은 ECC 인코더(141)는, 현재 설정된 ECC 레벨을 적용하여 디코딩된 데이터에 대한 ECC 인코딩을 수행한다(단계 440). 메모리 컨트롤러(150)는 ECC 인코딩된 데이터를 저장장치(110)에 다시 기록시킨다(단계 450). 이와 같은 데이터 스크러빙을 통해, 저장장치(110) 내에 저장되어 있던 데이터들은 모두 현재 설정된 ECC 레벨로 인코딩된 상태가 된다.
도 9는 본 개시의 다른 예에 따른 메모리장치를 나타내 보인 블록도이다. 도 9를 참조하면, 일 예에 따른 메모리장치(500)는, 저장장치(Memory)(510), 테스트 벡터 발생기(Test Vector Generator)(520), 데이터 불일치 체커(Discrepancy Checker)(530), ECC 컨트롤러(ECC Controller)(540), 및 메모리 컨트롤러(Memory Controller)(550)를 포함한다. 메모리장치(500)는, 메모리 상태 체커(Memory Status Checker)(560)를 더 포함할 수 있다. 일 예에서 저장장치(510)는, 반도체메모리, 예컨대 상변화 램(PCRAM; Phase Change RAM), 자기메모리(MRAM; Magnetoresistive RAM), 나노 플로팅 게이트 메모리(NFGM; Nano Floating Gate Memory), 저항성 램(RRAM; Resistive RAM), 폴리머 램(Polymer RAM)일 수 있다.
테스트 벡터 발생기(520)는, 저장장치(510)에 쓰여질 테스트 벡터를 발생시킨다. 일 예에서 테스트 벡터는, 이진 데이터 스트림(binary data stream)으로 구성될 수 있다. 일 예에서 테스트 벡터 발생기(520)는, 메모리 컨트롤러(550)로부터의 요구에 의해 테스트 벡터를 발생시킨다. 이때 테스트 벡터의 이진 데이터는 랜덤(random)하게 구성될 수 있다. 테스트 벡터 발생기(520)에 의해 발생되는 테스트 벡터는 메모리 컨트롤러(550)를 통해 저장장치(510)에 기록된다. 또한 테스트 벡터는 데이터 불일치 체커(530)로 전송된다.
데이터 불일치 체커(530)는, 메모리 컨트롤러(550)를 통해 전송되는 저장장치(510)로부터 읽은 리드 데이터(read data)와 테스트 벡터를 비교하여 두 데이터 사이의 불일치 여부에 대응되는 신호를 발생시킨다. 이를 위해 데이터 불일치 체커(530)는 비교 로직을 포함할 수 있다. 일 예에서 데이터 불일치 체커(530)는 리드 데이터의 첫번째 비트 값부터 마지막 비트 값까지 테스트 벡터의 첫번째 비트 값부터 마지막 비트 값과 비교한다. 그리고 그 비교 결과를 포함하는 정보신호를 메모리 컨트롤러(550)에게 전송한다.
ECC 컨트롤러(540)는, ECC 인코딩을 수행하는 ECC 인코더(ECC encoder)(541)와, ECC 디코딩을 수행하는 ECC 디코더(ECC decoder)(542)를 포함한다. ECC 인코더(541)는, 메모리 컨트롤러(550)를 통해 호스트로부터 전송되는 데이터에 대한 ECC 인코딩을 수행한다. ECC 인코딩된 데이터는 메모리 컨트롤러(550)를 통해 저장장치(510)에 기록된다. ECC 디코더(542)는, 메모리 컨트롤러(550)를 통해 저장장치(510)로부터 전송되는 데이터에 대한 ECC 디코딩을 수행한다. ECC 디코딩된 데이터는 메모리 컨트롤러(550)를 통해 호스트로 전송된다. ECC 인코딩 및 ECC 디코딩은, 메모리 컨트롤러(550)로부터 제공되는 ECC 레벨에 따라 수행된다.
메모리 컨트롤러(550)는, 테스트 벡터 발생기(520), 데이터 불일치 체커(530), 및 ECC 컨트롤러(540)를 제어한다. 메모리 컨트롤러(550)는, 호스트(Host)와의 인터페이싱을 통해 호스트로부터 전송되는 데이터를 저장장치(510)에 쓰거나, 또는 저장장치(510)로부터 데이터를 읽어 호스트로 전송시킨다. 데이터 쓰기 과정에서, 메모리 컨트롤러(550)는 호스트로부터 전송되는 데이터를 ECC 컨트롤러(540)에 전송하여 ECC 인코딩이 수행되도록 한다. 메모리 컨트롤러(550)는, ECC 인코딩이 수행된 인코딩된 데이터를 전송받아 저장장치(510)에 기록한다. 데이터 읽기 과정에서, 메모리 컨트롤러(550)는 저장장치(510)에서 읽어 들인 데이터를 ECC 컨트롤러(540)에 전송하여 ECC 디코딩이 수행하여 에러가 정정되도록 한다. 메모리 컨트롤러(550)는 ECC 디코딩이 수행된 디코딩된 데이터를 전송받아 호스트로 전송한다.
메모리 컨트롤러(550)는, ECC 컨트롤러(540)에서의 ECC 인코딩 및 디코딩 과정에서 적용할 ECC 레벨을 설정 및 제공한다. 즉 ECC 컨트롤러(540)는, 메모리 컨트롤러(550)로부터 제공되는 복수개, 예컨대 N개의 ECC 레벨들(ECC Level-1, ECC Level-2, …, ECC Level-N) 중 어느 하나의 ECC 레벨에 따라 수행된다. 이를 위해 메모리 컨트롤러(550)는, N개의 ECC 레벨들(ECC Level-1, ECC Level-2, …, ECC Level-N)이 저장되어 있는 ECC 레벨 저장소(553)를 갖는다. 일 예에서 ECC 레벨들(ECC Level-1, ECC Level-2, …, ECC Level-N) 각각은 서로 다른 에러 정정 능력을 갖는다. 예컨대 첫번째 ECC 레벨(ECC Level-1)은 한 개의 비트에 대한 에러 정정 능력을 갖는다. N번째 ECC 레벨(ECC Level-N)은 N개의 비트에 대한 에러 정정 능력을 갖는다. 메모리 컨트롤러(550)는, ECC 레벨을 결정하기 위해, 초기화 단계에서 또는 주기적으로 저장장치(510)의 에러율을 검사하여 ECC 레벨을 결정하는 제어동작을 수행할 수 있다. 또한 메모리 컨트롤러(550)는 데이터 스크러빙(scrubbing) 동작을 위한 제어동작 및 데이터 스크러빙 과정에서의 ECC 레벨 변경을 위한 제어동작을 수행할 수 있다.
메모리 상태 체커(560)는, 메모리 컨트롤러(550)로부터 저장장치(510)의 현재 상태에 대한 정보를 입력받아 저장한다. 또한 메모리 상태 체커(560)는 저장장치(510)의 데이터 엑세스 상태를 주기적으로 확인하고, 그 결과를 메모리 컨트롤러(550)로 전송한다. 이를 위해 메모리 컨트롤러(550)는, 저장장치(510)에 대한 엑세스 제어동작을 수행하거나, 또는 저장장치(510)에 대한 초기화 제어동작을 수행하는 경우, 그 정보를 메모리 상태 체커(560)로 전송할 수 있다.
본 예에 따른 메모리장치(500)에 의해 수행되는 ECC 레벨 설정 과정은 도 2를 참조하여 설명한 바와 대부분 동일하다. 다만 본 예의 경우, 메모리 컨트롤러(500)는 데이터 불일치 체커(530)로부터의 정보신호에 따라 저장장치(510)의 에러율을 결정하고, ECC 레벨 저장소(553) 내에 저장되어 있는 N개의 ECC 레벨들(ECC Level-1, ECC Level-2, …, ECC Level-N) 중 결정된 에러율에 대응하는 하나의 ECC 레벨을 설정하여 ECC 컨트롤러(540)에 전송시킨다. ECC 컨트롤러(540)는 메모리 컨트롤러(550)로부터 전송되는 ECC 레벨에 따라 ECC 인코딩 및 디코딩을 수행한다.
도 10은 본 개시의 또 다른 예에 따른 메모리장치를 나타내 보인 블록도이다. 도 10을 참조하면, 일 예에 따른 메모리장치(600)는, 저장장치(Memory)(610), 테스트 벡터 발생기(Test Vector Generator)(620), 데이터 불일치 체커(Discrepancy Checker)(630), 및 메모리 컨트롤러(Memory Controller)(650)를 포함한다. 메모리장치(600)는, 메모리 상태 체커(Memory Status Checker)(660)를 더 포함할 수 있다. 본 예에 따른 메모리장치(600)는, ECC 컨트롤러(640)가 메모리 컨트롤러(650) 내에 포함된다는 점을 제외하고는 도 1을 참조하여 설명한 메모리장치(100)와 동일하다. 본 예에 따른 메모리장치(600)의 메모리 컨트롤러(650)는, ECC 컨트롤러(640)를 포함한다. ECC 컨트롤러(640)는, ECC 인코더(641), ECC 디코더(642), 및 ECC 레벨 저장소(643)을 포함하여 구성된다. 비록 도면에 나타내지는 않았지만, ECC 레벨 저장소(643)는 ECC 컨트롤러(640)가 아닌 메모리 컨트롤러(650)의 다른 부분에 배치될 수도 있다. 본 예에 따른 메모리장치(600)의 동작은, ECC 컨트롤러(640)의 동작이 메모리 컨트롤러(650) 내부에서 수행된다는 점을 제외하고는 도 1을 참조하여 설명한 메모리장치(100)의 동작과 동일하다.
도 11은 본 개시의 일 예에 따른 전자 장치를 나타내 보인 블록도이다. 도 11을 참조하면, 본 예에 따른 전자 장치(700)는, 버스(bus)(710), 프로세서(processor)(720), 부트 롬(Boot ROM)(730), 코드 메모리(Code Memory)(740), 제1 에러정정부(ECC1)(750), 데이터 메모리(Data Memory)(760), 제2 에러정정부(ECC2)(770), 주변장치(Peripherals)(780), 펌웨어(firmware)(790), 메모리 컨트롤러(810), 테스트 벡터 발생기(Test Vector Generator)(820), 및 데이터 불일치 체커(Discrepancy Checker)(830)를 포함하여 구성된다.
버스(710)는 전자 장치(700)의 성분들(components) 사이의 통신을 허용하는 경로(path)를 포함할 수 있다. 프로세서(720)는, 하나 또는 그 이상의 프로세서들, 예컨대 멀티-코어 프로세서들, 마이크로프로세서들, ASICS, FPGAs, 씨피유(CPU), 그래픽처리장치(GPU), 또는 명령을 해석하고 실행하는 다른 형태의 처리장치들일 수 있다. 부트 롬(730)은, 부팅 프로세스에 필요한 정보 및/또는 명령들을 저장할 수 있는 롬(ROM) 장치 또는 다른 형태의 정적 저장장치(static storage device)를 포함할 수 있다. 코드 메모리(720)는 펌웨어 코드(firmware code)가 저장되는 불휘발성 메모리소자일 수 있다. 제1 에러정정부(ECC1)(750)는 코드 메모리(720)로의 펌웨어 업데이트시 에러정정동작을 수행할 수 있다. 데이터 메모리(760)는 동적 메모리소자 또는 불휘발성 메모리소자일 수 있으며, 제2 에러정정부(ECC2)(770)는 데이터 메모리(760)로의 데이터 전송시 에러정정동작을 수행할 수 있다. 주변장치(780)는 입/출력 장치(I/O)를 통해 외부 장치와의 인터페이싱을 수행한다. 펌웨어(790)는 시스템의 펌웨어를 저장할 수 있다.
메모리 컨트롤러(810), 테스트 벡터 발생기(820), 및 데이터 불일치 체커(830)는, 도 1을 참조하여 설명한 메모리장치(100)의 경우와 동일하다. 본 예에 따른 전자장치(700)에 있어서, 부트 롬(730)에 저장된 부터 코드로 시스템이 부팅된 후에 테스트 벡터 발생기(820)로부터 발생되는 테스트 벡터를 이용하여 코드 메모리(740)와 데이터 메모리(760)의 에러율을 계산할 수 있다. 이 계산된 에러율은 주변장치(780)를 통해 시스템 외부로 출력될 수 있다. 메모리 컨트롤러(810)는 데이터 불일치 체커(830)를 이용하여 코드 메모리(740)와 데이터 메모리(760)의 에러율에 대응되는 ECC 레벨을 결정할 수 있다. ECC 레벨이 결정되면, 메모리 컨트롤러(810)는 제1 에러정정부(ECC1)(750)를 제어하여 결정된 ECC 레벨에 따라 펌웨어에 대한 ECC 인코딩이 수행되도록 하고, ECC 인코딩된 펌웨어를 코드 메모리(740)에 기록한다. ECC 인코딩된 펌웨어 데이터에는 ECC 레벨 플래그 비트가 포함될 수 있다. 시스템이 리셋된 후에는 코드 메모리(740)에 저장된 펌웨어에 대한 ECC 디코딩이 수행되고 이후 시스템은 정상적으로 운영된다. 결정된 ECC 레벨에 따른 ECC 인코딩 및 디코딩은 데이터 메모리(760)에 데이터를 쓰고 읽을 때에도 동일하게 적용될 수 있다.
상술한 바와 같이 본 출원의 실시 형태들을 도면들을 예시하며 설명하지만, 이는 본 출원에서 제시하고자 하는 바를 설명하기 위한 것이며, 세밀하게 제시된 형상으로 본 출원에서 제시하고자 하는 바를 한정하고자 한 것은 아니다.
100...메모리장치
110...저장장치
120...테스트 벡터 발생기 130...데이터 불일치 체커
140...ECC 컨트롤러 141...ECC 인코더
142...ECC 디코더 143...ECC 레벨 저장소
150...메모리 컨트롤러 160...메모리 상태 체커
120...테스트 벡터 발생기 130...데이터 불일치 체커
140...ECC 컨트롤러 141...ECC 인코더
142...ECC 디코더 143...ECC 레벨 저장소
150...메모리 컨트롤러 160...메모리 상태 체커
Claims (28)
- 저장장치에 쓰여질 테스트 벡터를 발생시키는 테스트 벡터 발생기;
상기 저장장치로부터 읽은 리드 데이터와 상기 테스트 벡터를 비교하여 두 데이터 사이의 차이에 대응되는 정보신호를 발생시키는 데이터 불일치 체커;
입력되는 제어신호에 응답하여 복수개의 에러정정코드 레벨들 중 어느 하나의 에러정정코드 레벨에 따라 에러정정코드 인코딩 및 디코딩을 수행하는 에러정정코드 컨트롤러; 및
상기 테스트 벡터 발생기, 데이터 불일치 체커, 및 에러정정코드 컨트롤러를 제어하되, 상기 데이터 불일치 체커로부터 발생되는 정보신호에 응답하여 상기 저장장치의 에러율에 대응되는 제어신호를 상기 에러정정코드 컨트롤러에 전송하는 메모리 컨트롤러를 포함하는 메모리장치. - 제1항에 있어서,
상기 저장장치의 상태를 상기 메모리 컨트롤러로부터 입력받아 저장하는 메모리 상태 체커를 더 포함하는 메모리장치. - 제1항에 있어서, 상기 에러정정코드 컨트롤러는,
상기 에러정정코드 인코딩을 수행하는 에러정정코드 인코더;
상기 에러정정코드 디코딩을 수행하는 에러정정코드 디코더; 및
상기 복수개의 에러정정코드 레벨들이 저장되는 에러정정코드 레벨 저장소를 포함하는 메모리장치. - 제3항에 있어서,
상기 에러정정코드 인코더는, 입력되는 오리지널 데이터에 에러정정코드 인코딩을 수행하여 오리지널 데이터와, 패리티 비트들과, 그리고 에정정정코드 레벨 플래그 비트를 포함하는 코드워드를 출력시키는 메모리장치. - 제4항에 있어서,
상기 에러정정코드 디코더는, 입력되는 코드워드에 상기 에러정정코드 레벨 플래그 비트의 값에 따른 에러정정코드 레벨을 적용하여 에러정정코드 디코딩을 수행하는 메모리장치. - 제1항에 있어서,
상기 복수개의 에러정정코드 레벨들은 서로 다른 에러정정능력을 갖는 메모리장치. - 제1항에 있어서,
상기 메모리 컨트롤러는, 상기 테스트 벡터를 상기 저장장치에 기록하고, 상기 저장장치에 기록된 테스트 벡터를 읽은 리드 데이터를 상기 데이터 불일치 체커에 전송하는 메모리장치. - 제7항에 있어서,
상기 메모리 컨트롤러는, 상기 저장장치가 초기화된 상태인 것을 확인한 후에 상기 테스트 벡터 발생기로 테스트 발생 요청 명령을 전송하는 메모리장치. - 제1항에 있어서,
상기 메모리 컨트롤러는, 상기 저장장치의 액세스 횟수가 설정값을 넘는 저장장치의 대상영역이 존재하는 경우 상기 테스트 벡터를 상기 저장장치의 대상영역에 기록하고, 상기 저장장치에 기록된 테스트 벡터를 읽은 리드 데이터를 상기 데이터 불일치 체커에 전송하는 메모리장치. - 제1항에 있어서,
상기 메모리 컨트롤러는, 상기 저장장치 내의 데이터를 모두 읽어 각각의 리드 데이터에 적용된 에러정정코드 레벨을 적용하여 에러정정코드 디코딩이 수행되도록 하고, 상기 에러정정코드 디코딩된 데이터에 현재 설정된 에러정정코드 레벨을 공통으로 적용하여 에러정정코드 인코딩이 수행되도록 하며, 그리고 상기 에러정정코드 인코딩된 데이터를 상기 저장장치에 기록하는 데이터 스크러빙 제어동작을 수행하는 메모리 장치. - 제10항에 있어서,
상기 데이터 스크러빙 제어동작은, 상기 저장장치에 대한 액세스가 일정 시간 이상 동안 없는 경우에 수행되도록 하는 메모리장치. - 저장장치에 쓰여질 테스트 벡터를 발생시키는 테스트 벡터 발생기;
상기 저장장치로부터 읽은 리드 데이터와 상기 테스트 벡터를 비교하여 두 데이터 사이의 차이에 대응되는 정보신호를 발생시키는 데이터 불일치 체커;
입력되는 에러정정코드 레벨을 적용하여 에러정정코드 인코딩 및 디코딩을 수행하는 에러정정코드 컨트롤러; 및
상기 테스트 벡터 발생기, 데이터 불일치 체커, 및 에러정정코드 컨트롤러를 제어하되, 상기 데이터 불일치 체커로부터 발생되는 정보신호에 응답하여 복수개의 에러정정코드 레벨들 중 상기 저장장치의 에러율에 대응되는 에러정정코드 레벨을 상기 에러정정코드 컨트롤러에 전송하는 메모리 컨트롤러를 포함하는 메모리장치. - 제12항에 있어서, 상기 에러정정코드 컨트롤러는,
상기 에러정정코드 인코딩을 수행하는 에러정정코드 인코더; 및
상기 에러정정코드 디코딩을 수행하는 에러정정코드 디코더를 포함하는 메모리장치. - 제13항에 있어서,
상기 에러정정코드 인코더는, 입력되는 오리지널 데이터에 에러정정코드 인코딩을 수행하여 오리지널 데이터와, 패리티 비트들과, 그리고 에정정정코드 레벨 플래그 비트를 포함하는 코드워드를 출력시키는 메모리장치. - 제14항에 있어서,
상기 에러정정코드 디코더는, 입력되는 코드워드에 상기 에러정정코드 레벨 플래그 비트의 값에 따른 에러정정코드 레벨을 적용하여 에러정정코드 디코딩을 수행하는 메모리장치. - 제12항에 있어서,
상기 메모리 컨트롤러는, 상기 복수개의 에러정정코드 레벨들이 저장되는 에러정정코드 레벨 저장소를 포함하는 메모리장치. - 제16항에 있어서,
상기 복수개의 에러정정코드 레벨들은 서로 다른 에러정정능력을 갖는 메모리장치. - 저장장치에 쓰여질 테스트 벡터를 발생시키는 테스트 벡터 발생기;
상기 저장장치로부터 읽은 리드 데이터와 상기 테스트 벡터를 비교하여 두 데이터 사이의 차이에 대응되는 정보신호를 발생시키는 데이터 불일치 체커; 및
상기 테스트 벡터 발생기 및 데이터 불일치 체커를 제어하되, 상기 데이터 불일치 체커로부터 발생되는 정보신호에 응답하여 복수개의 에러정정코드 레벨들 중 상기 저장장치의 에러율에 대응되는 에러정정코드 레벨이 적용되는 에러정정코드 인코딩 및 디코딩을 수행하는 메모리 컨트롤러를 포함하는 메모리장치. - 제18항에 있어서,
상기 메모리 컨트롤러는 에러정정코드 컨트롤러를 포함하되,
상기 에러정정코드 컨트롤러는,
상기 에러정정코드 인코딩을 수행하는 에러정정코드 인코더;
상기 에러정정코드 디코딩을 수행하는 에러정정코드 디코더; 및
상기 복수개의 에러정정코드 레벨들이 저장되는 에러정정코드 레벨 저장소를 포함하는 메모리장치. - 제19항에 있어서,
상기 에러정정코드 인코더는, 입력되는 오리지널 데이터에 에러정정코드 인코딩을 수행하여 오리지널 데이터와, 패리티 비트들과, 그리고 에정정정코드 레벨 플래그 비트를 포함하는 코드워드를 출력시키는 메모리장치. - 제20항에 있어서,
상기 에러정정코드 디코더는, 입력되는 코드워드에 상기 에러정정코드 레벨 플래그 비트의 값에 따른 에러정정코드 레벨을 적용하여 에러정정코드 디코딩을 수행하는 메모리장치. - 제18항에 있어서,
상기 복수개의 에러정정코드 레벨들은 서로 다른 에러정정능력을 갖는 메모리장치. - 펌웨어 코드가 저장되는 코드 메모리;
상기 코드 메모리에 쓰여질 테스트 벡터를 발생시키는 테스트 벡터 발생기;
상기 코드 메모리로부터 읽은 리드 데이터와 상기 테스트 벡터를 비교하여 두 데이터 사이의 차이에 대응되는 정보신호를 발생시키는 데이터 불일치 체커;
입력되는 제어신호에 응답하여 복수개의 에러정정코드 레벨들 중 어느 하나의 에러정정코드 레벨에 따라 펌웨어에 대한 에러정정코드 인코딩을 수행하는 에러정정코드 컨트롤러; 및
상기 데이터 불일치 체커로부터 발생되는 정보신호에 응답하여 복수개의 에러정정코드 레벨들 중 상기 코드 메모리의 에러율에 대응되는 제어신호를 상기 에러정정코드 컨트롤러에 전송하고, 상기 에러정정코드 컨트롤러에 의해 에러정정코드 인코딩된 펌웨어를 상기 코드 메모리에 기록하는 메모리 컨트롤러를 포함하는 전자장치. - 테스트 벡터를 저장장치에 기록하는 단계;
상기 저장장치에 기록된 테스트 벡터를 읽은 리드 데이터를 상기 테스트 벡터와 비교하는 단계;
상기 리드 데이터와 테스트 벡터 사이에 데이터 불일치가 발생되면 상기 저장장치의 에러율을 연산하는 단계; 및
상기 에러율에 대응되는 에러정정코드 레벨을 설정하는 단계를 포함하는 메모리장치의 동작방법. - 제24항에 있어서,
상기 테스트 벡터를 저장장치에 기록하는 단계는, 상기 저장장치가 초기화된 상태인 것을 확인한 후에 수행하는 메모리장치의 동작방법. - 저장장치의 액세스 상태를 주기적으로 확인하는 단계;
상기 확인 결과 액세스 횟수가 설정값을 넘는 저장장치의 대상영역이 존재하는 경우, 테스트 벡터를 상기 저장장치의 대상영역에 기록하는 단계;
상기 저장장치의 대상영역에 기록된 테스트 벡터를 읽은 리드 데이터를 상기 테스트 벡터와 비교하는 단계;
상기 리드 데이터와 테스트 벡터 사이에 데이터 불일치가 발생되면 상기 저장장치의 에러율을 연산하는 단계; 및
상기 에러율에 대응되는 에러정정코드 레벨을 설정하는 단계를 포함하는 메모리장치의 동작방법. - 저장장치의 에러율 변경을 감지하여 변경된 에러율에 대응되는 에러정정코드 레벨을 적용하여 읽기 및 쓰기 동작시에 에러정정코드 인코딩 및 디코딩을 수행하는 단계; 및
상기 저장장치의 데이터 중 서로 다른 에러정정코드 레벨이 적용되어 에러정정코드 인코딩된 데이터에 대해 현재 설정된 에러정정코드 레벨이 적용되어 에러정정코드 인코딩이 이루어지도록 하는 데이터 스크러빙을 수행하는 단계를 포함하는 메모리장치의 동작방법. - 제27항에 있어서, 상기 데이터 스크러빙을 수행하는 단계는,
저장장치 내의 데이터를 모두 읽어 각각의 리드 데이터에 적용된 각각의 에러정정코드 레벨을 적용하여 에러정정코드 디코딩을 수행하는 단계;
에러정정코드 디코딩된 데이터에 대해 현재 설정된 에러정정코드 레벨을 적용하여 에러정정코드 인코딩을 수행하는 단계; 및
에러정정코드 인코딩된 데이터를 상기 저장장치에 기록하는 단계를 포함하는 메모리장치의 동작방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170010731A KR20180086816A (ko) | 2017-01-23 | 2017-01-23 | 사전-검사된 에러율에 따른 적응형 에러정정을 수행하는 메모리장치 및 전자장치와, 메모리장치의 동작방법 |
US15/653,790 US10114693B2 (en) | 2017-01-23 | 2017-07-19 | Memory systems and electronic systems performing an adaptive error correction operation with pre-checked error rate, and methods of operating the memory systems |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170010731A KR20180086816A (ko) | 2017-01-23 | 2017-01-23 | 사전-검사된 에러율에 따른 적응형 에러정정을 수행하는 메모리장치 및 전자장치와, 메모리장치의 동작방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20180086816A true KR20180086816A (ko) | 2018-08-01 |
Family
ID=62906211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170010731A KR20180086816A (ko) | 2017-01-23 | 2017-01-23 | 사전-검사된 에러율에 따른 적응형 에러정정을 수행하는 메모리장치 및 전자장치와, 메모리장치의 동작방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10114693B2 (ko) |
KR (1) | KR20180086816A (ko) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200071916A (ko) * | 2018-12-11 | 2020-06-22 | 삼성전자주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US10976367B2 (en) | 2018-12-13 | 2021-04-13 | Micron Technology, Inc. | Controller structural testing with automated test vectors |
CN113391184A (zh) * | 2020-03-11 | 2021-09-14 | 长鑫存储技术有限公司 | 控制芯片的测试方法及相关设备 |
CN113393892A (zh) | 2020-03-11 | 2021-09-14 | 长鑫存储技术有限公司 | 控制芯片的测试方法及相关设备 |
KR102216006B1 (ko) * | 2020-07-01 | 2021-02-16 | 주식회사 파두 | 메모리 컨트롤러 및 이를 포함하는 스토리지 디바이스 |
KR20220103227A (ko) * | 2021-01-14 | 2022-07-22 | 삼성전자주식회사 | 비휘발성 메모리 장치, 그것을 제어하는 제어기, 그것을 갖는 저장 장치, 및 그것의 리드 방법 |
US12040032B2 (en) * | 2021-09-29 | 2024-07-16 | Dream Chip Technologies Gmbh | Electronic circuit and method for self-diagnosis of a data memory |
KR20230086446A (ko) * | 2021-12-08 | 2023-06-15 | 에스케이하이닉스 주식회사 | 저장 장치, 호스트 장치 및 그들의 동작 방법 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040153902A1 (en) * | 2003-01-21 | 2004-08-05 | Nexflash Technologies, Inc. | Serial flash integrated circuit having error detection and correction |
US8291295B2 (en) * | 2005-09-26 | 2012-10-16 | Sandisk Il Ltd. | NAND flash memory controller exporting a NAND interface |
US8156398B2 (en) * | 2008-02-05 | 2012-04-10 | Anobit Technologies Ltd. | Parameter estimation based on error correction code parity check equations |
US8161354B2 (en) * | 2008-10-16 | 2012-04-17 | Genesys Logic, Inc. | Flash memory controller having configuring unit for error correction code (ECC) capability and method thereof |
US8341501B2 (en) * | 2009-04-30 | 2012-12-25 | International Business Machines Corporation | Adaptive endurance coding of non-volatile memories |
KR101606718B1 (ko) | 2010-10-27 | 2016-03-28 | 엘에스아이 코포레이션 | 플래시 메모리 기반 데이터 저장을 위한 적응적 ecc 기술들 |
US8464137B2 (en) * | 2010-12-03 | 2013-06-11 | International Business Machines Corporation | Probabilistic multi-tier error correction in not-and (NAND) flash memory |
KR101772020B1 (ko) * | 2011-05-30 | 2017-08-29 | 삼성전자주식회사 | 불휘발성 메모리 장치, 이의 동작 방법, 및 이를 포함하는 메모리 시스템 |
KR101811298B1 (ko) * | 2011-12-28 | 2017-12-27 | 삼성전자주식회사 | 랜덤마이져로 씨드를 제공하는 씨드 컨트롤러 및 그것을 포함한 메모리 컨트롤러 |
US8990670B2 (en) * | 2012-09-28 | 2015-03-24 | Intel Corporation | Endurance aware error-correcting code (ECC) protection for non-volatile memories |
KR102068519B1 (ko) * | 2013-07-01 | 2020-01-21 | 삼성전자주식회사 | 저장 장치, 그것의 쓰기 방법 및 읽기 방법 |
US9417945B2 (en) * | 2014-03-05 | 2016-08-16 | International Business Machines Corporation | Error checking and correction for NAND flash devices |
KR102149668B1 (ko) * | 2014-04-22 | 2020-08-31 | 삼성전자주식회사 | 비휘발성 메모리 장치의 데이터 디코딩 방법 |
-
2017
- 2017-01-23 KR KR1020170010731A patent/KR20180086816A/ko unknown
- 2017-07-19 US US15/653,790 patent/US10114693B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US10114693B2 (en) | 2018-10-30 |
US20180210786A1 (en) | 2018-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10581458B2 (en) | Data storage apparatus and operating method thereof | |
KR20180086816A (ko) | 사전-검사된 에러율에 따른 적응형 에러정정을 수행하는 메모리장치 및 전자장치와, 메모리장치의 동작방법 | |
CN107133122B (zh) | 存储器控制方法 | |
US9817749B2 (en) | Apparatus and method of offloading processing from a data storage device to a host device | |
CN110347530B (zh) | 数据存储装置及其操作方法 | |
US9043678B2 (en) | Detecting effect of corrupting event on preloaded data in non-volatile memory | |
US9602134B2 (en) | Operating method of error correction code decoder and memory controller including the error correction code decoder | |
US10319461B2 (en) | Low-overhead mechanism to detect address faults in ECC-protected memories | |
US8386868B2 (en) | Using programming-time information to support error correction | |
KR20130087935A (ko) | 메모리, 메모리 시스템, 및 메모리에 대한 에러 검출/정정 방법 | |
US11409601B1 (en) | Memory device protection | |
EP3462318B1 (en) | Memory controller error checking process using internal memory device codes | |
US11003529B2 (en) | Encoding method and memory storage apparatus using the same | |
US11726665B1 (en) | Memory extension with error correction | |
KR20220045343A (ko) | 데이터 처리 시스템 내 데이터 전송에서 발생한 에러를 정정하는 장치 및 방법 | |
US10514980B2 (en) | Encoding method and memory storage apparatus using the same | |
US9189327B2 (en) | Error-correcting code distribution for memory systems | |
TW201921281A (zh) | 具備資料可靠性機制的儲存系統及其操作方法 | |
US11775382B2 (en) | Modified parity data using a poison data unit | |
US10431324B2 (en) | Data storage device for performing decoding operation and operating method thereof | |
US20190044546A1 (en) | Re-encoding data associated with failed memory devices | |
US11537464B2 (en) | Host-based error correction | |
US11709734B2 (en) | Error correction with syndrome computation in a memory device | |
KR20190069998A (ko) | 메모리 장치의 내부 상태에 따라 메모리 컨트롤러의 동작을 가변하는 메모리 시스템 | |
KR20180078426A (ko) | 데이터 저장 장치의 에러 정정 코드 처리 방법 |