KR20190014744A - 에러 정정 회로 및 이를 포함하는 메모리 시스템 - Google Patents
에러 정정 회로 및 이를 포함하는 메모리 시스템 Download PDFInfo
- Publication number
- KR20190014744A KR20190014744A KR1020170098599A KR20170098599A KR20190014744A KR 20190014744 A KR20190014744 A KR 20190014744A KR 1020170098599 A KR1020170098599 A KR 1020170098599A KR 20170098599 A KR20170098599 A KR 20170098599A KR 20190014744 A KR20190014744 A KR 20190014744A
- Authority
- KR
- South Korea
- Prior art keywords
- error
- state information
- error correction
- memory
- generating
- 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/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
- 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
- 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
- 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/44—Indication or identification of errors, e.g. for repair
-
- 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
-
- 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/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/78—Masking faults in memories by using spares or by reconfiguring using programmable devices
- G11C29/783—Masking faults in memories by using spares or by reconfiguring using programmable devices with refresh of replacement cells, e.g. in DRAMs
-
- 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1515—Reed-Solomon codes
-
- 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1525—Determination and particular use of error location polynomials
- H03M13/153—Determination and particular use of error location polynomials using the Berlekamp-Massey algorithm
-
- 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1545—Determination of error locations, e.g. Chien search or other methods or arrangements for the determination of the roots of the error locator polynomial
-
- 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1575—Direct decoding, e.g. by a direct determination of the error locator polynomial from syndromes and subsequent analysis or by matrix operations involving syndromes, e.g. for codes with a small minimum Hamming distance
-
- 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3707—Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
-
- 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/65—Purpose and implementation aspects
- H03M13/6502—Reduction of hardware complexity or efficient processing
-
- 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
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- General Physics & Mathematics (AREA)
- Algebra (AREA)
- Pure & Applied Mathematics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Abstract
에러 정정 회로는, 데이터와 에러 정정 코드를 이용해 신드롬을 생성하는 신드롬 계산 블록; 상기 신드롬을 이용해 에러가 존재하는 위치를 구하기 위한 에러 위치 다항식을 생성하되, 상기 에러 위치 다항식을 생성하기 위해 사용되는 연산 스테이지들의 개수가 상태 정보에 의해 조절되는 에러 위치 다항식 생성 블록; 및 상기 에러 위치 다항식을 이용해 상기 데이터의 에러를 정정하는 치엔 서치 블록을 포함할 수 있다.
Description
본 특허 문헌은 에러 정정 회로 및 메모리 시스템에 관한 것이다.
반도체 메모리 산업 초기에는 반도체 제조 프로세스를 통과한 메모리 칩에서 불량 메모리 셀이 하나도 존재하지 않는 오리지날 굿 다이(original good die)가 웨이퍼(wafer) 상에 다수 분포하였다. 그러나 메모리 장치의 용량이 점차로 증가하면서 불량 메모리 셀이 하나도 존재하지 않는 메모리 장치를 만드는 것이 어려워졌으며, 현재에는 이러한 메모리 장치가 제조될 확률은 없다고 봐도 무방하다. 이러한 상황을 타개하기 위한 하나의 방편으로 메모리 장치의 불량 메모리 셀들을 리던던시 메모리 셀들로 리페어하는 방법이 사용되고 있다.
그리고 또 하나의 방편으로 메모리 시스템에서 에러를 정정하는 에러 정정 회로(ECC 회로)를 사용해 메모리 셀에서 발생하는 에러 및 메모리 시스템의 리드 및 라이트 과정에서 데이터가 전송되면서 발생하는 에러를 정정하고 있다.
본 발명의 실시예들은, 메모리 시스템에서 에러 정정의 효율성을 높이는 기술을 제공할 수 있다.
본 발명의 일실시예에 따른 에러 정정 회로는, 데이터와 에러 정정 코드를 이용해 신드롬을 생성하는 신드롬 계산 블록; 상기 신드롬을 이용해 에러가 존재하는 위치를 구하기 위한 에러 위치 다항식을 생성하되, 상기 에러 위치 다항식을 생성하기 위해 사용되는 연산 스테이지들의 개수가 상태 정보에 의해 조절되는 에러 위치 다항식 생성 블록; 및 상기 에러 위치 다항식을 이용해 상기 데이터의 에러를 정정하는 치엔 서치 블록을 포함할 수 있다.
본 발명의 일실시예에 따른 메모리 시스템은, 데이터와 에러 정정 코드를 저장하는 하나 이상의 메모리; 상기 하나 이상의 메모리에 라이트될 데이터를 이용해 상기 하나 이상의 메모리에 라이트될 에러 정정 코드를 생성하는 에러 정정 코드 생성 회로; 상기 하나 이상의 메모리의 에러 발생 확률을 나타내는 상태 정보를 생성하는 상태 정보 생성 회로; 및 상기 하나 이상의 메모리로부터 리드된 에러 정정 코드를 이용해 상기 하나 이상의 메모리로부터 리드된 데이터의 에러를 정정하되, 상기 에러 정정의 강도가 상기 상태 정보에 따라 조절되는 에러 정정 회로를 포함할 수 있다.
본 발명의 실시예들에 따르면, 메모리 시스템에서의 에러 정정의 효율성을 높일 수 있다.
도 1은 본 발명의 일실시예에 따른 메모리 시스템(100)의 구성도.
도 2는 도 1의 에러 정정 회로(133)의 일실시예 구성도.
도 2는 도 1의 에러 정정 회로(133)의 일실시예 구성도.
이하, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시예를 첨부 도면을 참조하여 설명하기로 한다. 본 발명을 설명함에 있어서, 본 발명의 요지와 무관한 공지의 구성은 생략될 수 있다. 각 도면의 구성요소들에 참조 번호를 부가함에 있어서, 동일한 구성요소들에 한해서는 비록 다른 도면 상에 표시되더라도 가능한 한 동일한 번호를 가지도록 하고 있음에 유의하여야 한다.
도 1은 본 발명의 일실시예에 따른 메모리 시스템(100)의 구성도이다. 도 1에서는 메모리 시스템(100)에서 데이터의 전송과 직접적으로 관련된 부분만을 도시했다.
도 1을 참조하면, 메모리 시스템(100)은 메모리 콘트롤러(110)와 메모리 모듈(120)을 포함할 수 있다.
메모리 콘트롤러(110)는 호스트(host)의 요청에 따라 메모리 모듈(120)의 리드(read) 및 라이트(write) 등의 동작을 제어할 수 있다. 라이트 동작시에는 메모리 콘트롤러(110)로부터 메모리 모듈(120)로 데이터(DATA)가 전송될 수 있으며, 리드 동작시에는 메모리 모듈(120)로부터 메모리 콘트롤러(110)로 데이터(DATA)가 전송될 수 있다. 대부분의 메모리 시스템에서 처리되는 데이터의 단위는 512비트이다. 즉, 한번의 리드 동작시에 메모리 모듈(120)로부터 메모리 콘트롤러(110)로는 512비트의 리드 데이터(DATA)가 전달되고, 한번의 라이트 동작시에 메모리 콘트롤러(110)로부터 메모리 모듈(120)로는 512비트의 라이트 데이터(DATA)가 전달될 수 있다. 도면의 512bit는 이를 나타낸다. 메모리 콘트롤러(110)는 CPU(Central Processing Unit), GPU(Graphic Processing Unit) 및 AP(Application Processor) 등과 같은 프로세서에 포함될 수도 있으며, 프로세서 외부에 별도로 존재할 수도 있다.
메모리 모듈(120)은 모듈 콘트롤러(130) 및 메모리들(140_0~140_9)을 포함할 수 있다. 메모리 모듈(120)은 DIMM (Dual In-Line Memory Module) 타입일 수 있다.
메모리 콘트롤러(110)로부터 메모리들(140_0~140_9)로 전달되는 커맨드(command, 미도시)와 어드레스(address, 미도시)는 모듈 콘트롤러(130)를 통해 메모리들(140_0~140_9)로 전달될 수 있다. 이 과정에서 모듈 콘트롤러(130)는 커맨드와 어드레스의 전송 타이밍, 포맷 등을 필요에 따라 조절할 수 있다. 메모리 콘트롤러(110)와 메모리들(140_0~140_9) 간의 데이터(DATA) 송수신도 모듈 콘트롤러(130)를 통해 수행될 수 있다. 모듈 콘트롤러(130)는 메모리들(140_0~140_9)에 저장된 데이터(DATA')의 에러를 정정하기 위한 동작과 관련된 구성들(131, 133, 135)을 포함할 수 있다. 즉, 모듈 콘트롤러(130)는 에러 정정 코드 생성 회로(131), 에러 정정 회로(133) 및 상태 정보 생성 회로(135)를 포함할 수 있다.
에러 정정 코드 생성 회로(131)는 라이트 동작시에 메모리 콘트롤러(110)로부터 전달된 데이터(DATA)를 이용해 에러 정정 코드(ECC)를 생성할 수 있다. 에러 정정 코드(ECC)는 RS(Reed Solomon) 코드일 수 있다. 에러 정정 코드 생성 회로(131)는 512비트의 데이터(DATA')에서 발생하는 에러를 정정하기 위해 128비트의 에러 정정 코드(ECC)를 생성할 수 있다. 여기서는 에러 정정 코드(ECC)의 비트수가 128비트로 예시되었지만, 이는 예시일 뿐이며 에러 정정 코드의 비트수가 이보다 많을 수도 적을 수도 있음은 당연하다. 도면의 데이터(DATA')는 모듈 콘트롤러(130)와 메모리들(140_0~140_9)간에 송수신되는 데이터를 나타내는데, 라이트 동작시에는 에러 정정 코드(ECC)가 생성될 뿐 데이터의 정정 동작이 수행되지는 않으므로 라이트 동작시에는 데이터(DATA)와 데이터(DATA')는 동일할 수 있다.
에러 정정 회로(133)는 리드 동작시에 메모리들(140_0~140_9)로부터 리드된 에러 정정 코드(ECC)를 이용해 메모리들(140_0~140_9)로부터 리드된 데이터(DATA')의 에러를 정정할 수 있다. 리드 동작시 메모리 콘트롤러(110)로는 에러 정정 회로(133)에 의해 에러가 정정된 데이터(DATA)가 전달될 수 있다. 에러 정정 회로(133)의 에러 정정 동작의 강도는 상태 정보(CONDITION)에 의해 조절될 수 있다. 상태 정보(CONDITION)가 메모리들(140_0~140_9)의 에러 발생 확률이 높다는 것을 나타내는 경우에, 에러 정정 회로(133)는 에러 정정 동작의 강도를 높일 수 있다. 그리고 상태 정보(CONDITION)가 메모리들(140_0~140_9)의 에러 발생 확률이 낮다는 것을 나타내는 경우에, 에러 정정 회로(133)는 에러 정정 동작의 강도를 낮출 수 있다. 에러 정정 회로(133)의 에러 정정 동작의 강도가 높게 설정된 경우에, 에러 정정 회로(133)는 많은 개수의 에러를 정정할 수 있지만 에러 정정 동작에 더 많은 시간이 필요할 수 있다. 또한, 에러 정정 회로(133)의 에러 정정 동작의 강도가 낮게 설정된 경우에, 에러 정정 회로(133)는 적은 개수의 에러를 정정 가능하지만 에러 정정 동작에 필요한 시간이 줄어들 수 있다. 즉, 에러 정정 동작의 강도가 높아질수록 정정 가능한 에러의 개수는 늘어나지만, 에러 정정 동작의 수행에 필요한 시간이 늘어날 수 있다.
상태 정보 생성 회로(135)는 메모리들(140_0~140_9)의 에러 발생 확률을 나타내는 상태 정보(CONDITION)를 생성할 수 있다. 상태 정보(CONDITION)는 1비트의 신호를 포함할 수도 있고, 멀티 비트의 신호들을 포함할 수 있다. 상태 정보(CONDITION)의 비트 수가 높을수록 상태 정보(CONDITION)의 정확도가 높아질 수 있다. 예를 들어, 상태 정보(CONDITION)가 1비트인 경우에 상태 정보(CONDITION)는 에러 발생 확률을 높음과 낮음으로만 나타낼 수 있지만, 상태 정보(CONDITION)가 2비트인 경우에 상태 정보(CONDITION)는 에러 발생 확률을 매우 높음, 높음, 낮음 및 매우 낮음으로 나타낼 수 있다. 상태 정보 생성 회로(135)는 (1)메모리들(140_0~140_9)의 온도, (2)메모리들(140_0~140_9)의 리프레시(refresh) 주기, (3)메모리들(140_0~140_9)의 에러 로그(error log) 기록, (4)메모리들(140_0~140_9)의 스피드(speed), (5)메모리들(140_0~140_9)의 전압 레벨 등의 정보들 중 하나 이상의 정보를 이용해 상태 정보를 생성할 수 있다.
(1)메모리들(140_0~140_9)의 온도를 이용해 상태 정보(CONDITION)를 생성.
메모리들(140_0~140_9)은 온도가 높을수록 저장된 데이터를 유실할 가능성이 높아지는데, 상태 정보 생성 회로(135)는 메모리들(140_0~140_9)의 온도 정보를 이용해 메모리들(140_0~140_9)의 온도가 높을수록 에러 발생 확률이 높다는 것을 나타내도록 상태 정보(CONDITION)를 생성할 수 있다. 메모리들(140_0~140_9) 각각의 내부에는 온도 센서가 구비되는데, 상태 정보 생성 회로(135)는 메모리들(140_0~140_9)의 온도 센서에 의해 센싱된 온도 정보를 읽어와 상태 정보(CONDITION)를 생성할 수 있다. 상태 정보 생성 회로(135)는 모든 메모리들(140_0~140_9)의 온도 센서들로부터 온도 정보를 읽어올 수도 있지만, 메모리들(140_0~140_9)의 온도는 거의 동일할 가능성이 높으므로, 메모리들(140_0~140_9) 중 하나의 메모리의 온도 센서로부터 온도 정보를 읽어와 상태 정보를 생성할 수도 있다.
(2)메모리들(140_0~140_9)의 리프레시(refresh) 주기를 이용해 상태 정보(CONDITION)를 생성.
메모리들(140_0~140_9)의 리프레시 동작이 빈번하게 수행될수록 메모리들(140_0~140_9)의 데이터가 유실되지 않을 가능성이 높아진다. 반면에 메모리들(140_0~140_9)의 리프레시 동작이 덜 수행될수록 메모리들(140_0~140_9)의 데이터가 유실될 가능성이 높아진다. 상태 정보 생성 회로(135)는 메모리들(140_0~140_9)의 리프레시 동작이 덜 수행될수록 에러 발생 확률이 높다는 것을 나타내도록 상태 정보(CONDITION)를 생성할 수 있다. 반대로 메모리들(140_0~140_9)의 리프레시 동작이 자주 수행될수록 에러 발생 확률이 낮다는 것을 나타내도록 상태 정보(CONDITION)를 생성할 수 있다. 메모리들(140_0~140_9)로 인가되는 리프레시 커맨드는 모듈 콘트롤러(120)를 통해 메모리들(140_0~140_9)로 전달되는데, 상태 정보 생성 회로(135)는 메모리들(140_0~140_9)로 전달되는 리프레시 커맨드를 모니터링해 메모리들(140_0~140_9)의 리프레시 동작이 빈번하게 수행되는지 그렇지 않은지를 파악할 수 있고 이를 기초로 상태 정보(CONDITION)를 생성할 수 있다.
(3)메모리들(140_0~140_9)의 에러 로그(error log) 기록을 이용해 상태 정보(CONDITION)를 생성.
상태 정보 생성 회로(135)는 에러 정정 회로(133)에 의해 에러가 발견될 때마다 이 이력을 저장해 에러 로그를 생성하고, 이를 이용해 상태 정보(CONDITION)를 생성할 수 있다. 예를 들어, 최근 100번의 리드 동작에서 발생한 에러의 개수가 0~30개 사이인 경우, 31-60개 사이인 경우, 61~90개 사이인 경우 및 91개 이상인 경우에 상태 정보(CONDITION)를 서로 다르게 생성할 수 있다.
(4)메모리들(140_0~140_9)의 스피드(speed)를 이용해 상태 정보(CONDITION)를 생성.
메모리들(140_0~140_9)이 빠른 속도로 동작하는 경우에는 메모리들(140_0~140_9)이 느린 속도로 동작하는 경우보다 에러가 발생할 확률이 높아질 수 있다. 상태 정보 생성 회로(135)는 메모리들(140_0~140_9)의 동작 주파수를 알아내고 이를 이용해 상태 정보(CONDITION)를 생성할 수 있다. 상태 정보 생성 회로(135)는 메모리들(140_0~140_9)로 전달되는 클럭(clock)의 주파수(frequency)를 감지하기 위한 주파수 감지기(frequency detector)를 포함하고, 주파수 감지기의 감지 결과를 이용해 상태 정보(CONDITION)를 생성할 수 있다.
(5)메모리들(140_0~140_9)의 전압 레벨을 이용해 상태 정보(CONDITION)를 생성.
메모리들(140_0~140_9)의 동작 전압이 낮은 경우보다는 메모리들(140_0~140_9)의 동작 전압이 높은 경우에 메모리들(140_0~140_9)이 보다 안정적으로 동작하므로, 메모리들(140_0~140_9)의 전압 레벨을 이용해 상태 정보(CONDITION)를 생성할 수 있다. 상태 정보 생성 회로(135)는 메모리들(140_0~140_9)로 공급되는 전원 전압의 레벨을 감지하는 전압 감지기를 포함하고, 전압 감지기의 감지 결과를 이용해 상태 정보(CONDITION)를 생성할 수 있다.
메모리들(140_0~140_9)은 DRAM, PCRAM(Phase Change Random Access Memory), Flash memory 등 모든 종류의 메모리 중 하나일 수 있다. 메모리들(140_~140_9) 각각은 한번의 라이트 동작시에 64비트의 데이터를 저장하고, 한번의 리드 동작시에 64비트의 데이터를 출력할 수 있다. 10개의 메모리들(140_0~140_9)에는 한번의 라이트 및 리드 동작시마다 총 640비트의 데이터가 입/출력 가능하므로, 512비트의 데이터(DATA')와 128비트의 에러 정정 코드(ECC)가 메모리들(140_0~140_9)에 라이트되거나 메모리들(140_0~140_9)로부터 리드될 수 있다.
도 1에서는 에러 정정 코드 생성 회로(131), 에러 정정 회로(133) 및 상태 정보 생성 회로(135)가 모듈 콘트롤러(130)에 포함된 것을 예시했지만, 이 회로들은 메모리 콘트롤러(110)에 포함될 수도 있고, 메모리 모듈(120) 상에서 모듈 콘트롤러(130)와 별도의 구성으로 존재할 수도 있는 등, 메모리 시스템(100) 내의 어디에든 존재할 수 있다.
도 2는 도 1의 에러 정정 회로(133)의 일실시예 구성도이다.
도 2를 참조하면, 에러 정정 회로(133)는 신드롬(syndrome) 계산 블록(210), 에러 위치 다항식 생성 블록(220) 및 치엔(chien) 서치 블록(230)을 포함할 수 있다.
신드롬(syndrome) 계산 블록(210)은 메모리들(140_0~140_9)로부터 리드된 데이터(DATA')와 에러 정정 코드(ECC)를 이용해 신드롬을 생성할 수 있다. 신드롬은 일반적으로 특정 매트릭스(matrix)와 코드워드(codeword)의 XOR 및 AND 등의 연산 결과 생성될 수 있다. 여기서 코드워드는 데이터(DATA')와 에러 정정 코드(ECC)를 의미할 수 있다.
에러 위치 다항식 생성 블록(220)은 신드롬 계산 블록에서 생성된 신드롬을 이용해 에러 위치 다항식(Error Location Polynomial)을 생성할 수 있다. 에러 위치 다항식의 생성은 다수의 연산 스테이지들(221_0~221_15)에 의해 BM(Berlekamp-Massey) 알고리즘을 이용한 연산을 반복 수행하는 것에 의해 이루어질 수 있다. 다수의 연산 스테이지들(221_0~221_15)은 직렬로 연결되어 BM 알고리즘을 이용한 연산을 반복 수행할 수 있다. BM 알고리즘을 이용한 연산이 몇번 반복되었는지에 따라 에러 정정 회로(133)의 에러 정정 능력이 변경될 수 있다. 예를 들어, RS 코드에서 1심볼이 8비트이고, 데이터(DATA')가 64심볼(=512비트), 에러 정정 코드(ECC)가 16심볼(=128비트)인 경우에, BM 알고리즘을 이용한 연산을 16번 반복 수행하면 8심볼의 에러를 정정 가능하고, BM 알고리즘을 이용한 연산을 12번 반복 수행하면 6심볼의 에러를 정정 가능하고, BM 알고리즘을 이용한 연산을 8번 수행하면 4심볼의 에러를 정정 가능할 수 있다.
에러 위치 다항식 생성 블록(220)은 다수의 연산 스테이지들(221_0~221_15) 및 상태 정보(CONDITION)에 응답해 연산 스테이지들(221_1, 221_3, 221_5~221_13, 221_15)의 출력들 중 하나를 선택해 치엔 서치 블록(230)으로 전달하기 위한 선택기(222)를 포함할 수 있다. 다수의 연산 스테이지들(221_0~221_15)은 직렬로 연결되어 각각 BM알고리즘을 이용한 연산을 수행할 수 있다. 선택기(222)는 상태 정보(CONDITION)이 에러 발생 확률이 높음을 나타낼수록 연산 스테이지들(221_1, 221_3, 221_5~221_13, 221_15) 중 뒷단의 연산 스테이지의 출력을 선택해 치엔 서치 블록(230)으로 전달할 수 있다. 선택기(222)가 뒷단의 연산 스테이지의 출력을 선택할수록 정정 가능한 에러의 개수와 에러 정정에 필요한 시간이 늘어날 수 있다. 또한, 선택기(222)가 앞단의 연산 스테이지의 출력을 선택할수록 정정 가능한 에러의 개수와 에러 정정에 필요한 시간이 줄어들 수 있다.
치엔(chien) 서치 블록(230)은 에러 위치 다항식 생성 블록(220)에서 생성된 에러 위치 다항식의 해를 구해 데이터(DATA')의 에러를 정정하고, 에러가 정정된 데이터(DATA)를 생성할 수 있다.
본 발명의 기술사상은 상기 바람직한 실시예에 따라 구체적으로 기술되었으나, 상기한 실시예는 그 설명을 위한 것이며 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술분야의 전문가라면 본 발명의 기술사상의 범위 내에서 다양한 실시예가 가능함을 알 수 있을 것이다.
133: 에러 정정 회로
210: 신드롬 계산 블록
220: 에러 위치 다항식 생성 블록
230: 치엔 서치 블록
210: 신드롬 계산 블록
220: 에러 위치 다항식 생성 블록
230: 치엔 서치 블록
Claims (17)
- 데이터와 에러 정정 코드를 이용해 신드롬을 생성하는 신드롬 계산 블록;
상기 신드롬을 이용해 에러가 존재하는 위치를 구하기 위한 에러 위치 다항식을 생성하되, 상기 에러 위치 다항식을 생성하기 위해 사용되는 연산 스테이지들의 개수가 상태 정보에 의해 조절되는 에러 위치 다항식 생성 블록; 및
상기 에러 위치 다항식을 이용해 상기 데이터의 에러를 정정하는 치엔 서치 블록
을 포함하는 에러 정정 회로.
- 제 1항에 있어서,
상기 에러 위치 다항식을 생성하기 위해 사용되는 연산 스테이지들의 개수는 상기 상태 정보가 에러의 발생 확률이 높음을 나타내는 경우에 상기 상태 정보가 에러의 발생 확률이 낮음을 나타내는 경우보다 더 많은
에러 정정 회로.
- 제 1항에 있어서,
상기 에러 위치 다항식 생성 블록은
순차적으로 BM(Berlekamp-Massey) 알고리즘을 이용한 연산을 수행하기 위한 다수의 연산 스테이지들; 및
상기 상태 정보에 응답해 상기 다수의 연산 스테이지들의 출력들 중 하나를 선택해 상기 치엔 서치 블록으로 전달하기 위한 선택기를 포함하는
에러 정정 회로.
- 제 1항에 있어서,
상기 상태 정보는
상기 데이터가 저장되는 메모리의 온도, 상기 데이터가 저장되는 메모리의 리프레시 주기, 상기 데이터가 저장되는 메모리의 에러 로그 기록, 상기 데이터가 저장되는 메모리의 스피드 정보 및 상기 데이터가 저장되는 메모리의 전압 레벨 정보 중 적어도 하나 이상을 포함하는
에러 정정 회로.
- 제 4항에 있어서,
상기 상태 정보를 생성하는 상태 정보 생성 회로는
상기 메모리 내부의 온도계의 온도 정보를 읽어와 상기 상태 정보를 생성하는
에러 정정 회로.
- 제 4항에 있어서,
상기 상태 정보를 생성하는 상태 정보 생성 회로는
상기 메모리로 전달되는 리프레시 커맨드를 모니터링해 상기 상태 정보를 생성하는
에러 정정 회로.
- 제 4항에 있어서,
상기 상태 정보를 생성하는 상태 정보 생성 회로는
상기 에러 정정 회로에 의해 발견된 에러의 이력을 저장하고, 저장된 에러의 이력을 이용해 상기 상태 정보를 생성하는
에러 정정 회로.
- 제 4항에 있어서,
상기 상태 정보를 생성하는 상태 정보 생성 회로는
상기 메모리로 전달되는 클럭의 주파수를 감지하는 주파수 감지기를 포함하고, 상기 주파수 감지기의 감지 결과를 이용해 상기 상태 정보를 생성하는
에러 정정 회로.
- 제 4항에 있어서,
상기 상태 정보를 생성하는 상태 정보 생성 회로는
전원 전압의 레벨을 감지하는 전압 감지기를 포함하고, 상기 전압 감지기의 감지 결과를 이용해 상기 상태 정보를 생성하는
에러 정정 회로.
- 데이터와 에러 정정 코드를 저장하는 하나 이상의 메모리;
상기 하나 이상의 메모리에 라이트될 데이터를 이용해 상기 하나 이상의 메모리에 라이트될 에러 정정 코드를 생성하는 에러 정정 코드 생성 회로;
상기 하나 이상의 메모리의 에러 발생 확률을 나타내는 상태 정보를 생성하는 상태 정보 생성 회로; 및
상기 하나 이상의 메모리로부터 리드된 에러 정정 코드를 이용해 상기 하나 이상의 메모리로부터 리드된 데이터의 에러를 정정하되, 상기 에러 정정의 강도가 상기 상태 정보에 따라 조절되는 에러 정정 회로
를 포함하는 메모리 시스템. - 제 10항에 있어서,
상기 에러 정정 회로는
상기 하나 이상의 메모리로부터 리드된 데이터와 상기 하나 이상의 메모리로부터 리드된 에러 정정 코드를 이용해 신드롬을 생성하는 신드롬 계산 블록;
상기 신드롬을 이용해 에러가 존재하는 위치를 구하기 위한 에러 위치 다항식을 생성하되, 상기 에러 위치 다항식을 생성하기 위해 사용되는 연산 스테이지들의 개수가 상기 상태 정보에 의해 조절되는 에러 위치 다항식 생성 블록; 및
상기 에러 위치 다항식을 이용해 상기 하나 이상의 메모리로부터 리드된 데이터의 에러를 정정하는 치엔 서치 블록을 포함하는
메모리 시스템.
- 제 11항에 있어서,
상기 에러 위치 다항식을 생성하기 위해 사용되는 연산 스테이지들의 개수는 상기 상태 정보가 에러의 발생 확률이 높음을 나타내는 경우에 상기 상태 정보가 에러의 발생 확률이 낮음을 나타내는 경우보다 더 많은
메모리 시스템.
- 제 11항에 있어서,
상기 에러 위치 다항식 생성 블록은
순차적으로 BM(Berlekamp-Massey) 알고리즘을 이용한 연산을 수행하기 위한 다수의 연산 스테이지들; 및
상기 상태 정보에 응답해 상기 다수의 연산 스테이지들의 출력들 중 하나를 선택해 상기 치엔 서치 블록으로 전달하기 위한 선택기를 포함하는
메모리 시스템.
- 제 10항에 있어서,
상기 상태 정보는
상기 하나 이상의 메모리의 온도, 상기 하나 이상의 메모리의 리프레시 주기, 상기 하나 이상의 메모리의 에러 로그 기록, 상기 하나 이상의 메모리의 스피드 정보 및 상기 하나 이상의 메모리의 전압 레벨 정보 중 적어도 하나 이상을 포함하는
메모리 시스템.
- 제 10항에 있어서,
상기 하나 이상의 메모리, 상기 에러 정정 코드 생성 회로, 상기 상태 정보 생성 회로 및 상기 에러 정정 회로는 메모리 모듈에 포함되는
메모리 시스템.
- 제 15항에 있어서,
상기 에러 정정 코드 생성 회로, 상기 상태 정보 생성 회로 및 상기 에러 정정 회로는 상기 메모리 모듈의 모듈 콘트롤러에 포함되는
메모리 시스템.
- 제 16항에 있어서,
상기 메모리 시스템은
상기 메모리 모듈을 제어하기 위한 메모리 콘트롤러를 더 포함하는
메모리 시스템.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170098599A KR20190014744A (ko) | 2017-08-03 | 2017-08-03 | 에러 정정 회로 및 이를 포함하는 메모리 시스템 |
US15/936,684 US20190042360A1 (en) | 2017-08-03 | 2018-03-27 | Error correction circuit and memory system including the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170098599A KR20190014744A (ko) | 2017-08-03 | 2017-08-03 | 에러 정정 회로 및 이를 포함하는 메모리 시스템 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20190014744A true KR20190014744A (ko) | 2019-02-13 |
Family
ID=65230325
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170098599A KR20190014744A (ko) | 2017-08-03 | 2017-08-03 | 에러 정정 회로 및 이를 포함하는 메모리 시스템 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20190042360A1 (ko) |
KR (1) | KR20190014744A (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10707899B2 (en) * | 2017-08-31 | 2020-07-07 | SK Hynix Inc. | Bit-flipping decoder for G-LDPC codes with syndrome-decoding for component codes |
KR20220081644A (ko) | 2020-12-09 | 2022-06-16 | 삼성전자주식회사 | 메모리 장치 및 이를 포함하는 메모리 시스템 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7028247B2 (en) * | 2002-12-25 | 2006-04-11 | Faraday Technology Corp. | Error correction code circuit with reduced hardware complexity |
JP4833173B2 (ja) * | 2006-10-30 | 2011-12-07 | 富士通株式会社 | 復号化器、符号化・復号化装置及び記録再生装置 |
US8370727B2 (en) * | 2009-02-03 | 2013-02-05 | Silicon Motion, Inc. | Method and circuit for decoding an error correction code |
US8301987B2 (en) * | 2009-10-29 | 2012-10-30 | Sandisk Il Ltd. | System and method of decoding data with reduced power consumption |
US8683293B2 (en) * | 2009-12-16 | 2014-03-25 | Nvidia Corporation | Method and system for fast two bit error correction |
CN102567134B (zh) * | 2012-01-06 | 2015-01-07 | 威盛电子股份有限公司 | 存储器模块的错误检查与校正系统以及方法 |
KR102121335B1 (ko) * | 2014-03-27 | 2020-06-12 | 에스케이하이닉스 주식회사 | 데이터 처리 블록 및 그것을 포함하는 데이터 저장 장치 |
-
2017
- 2017-08-03 KR KR1020170098599A patent/KR20190014744A/ko unknown
-
2018
- 2018-03-27 US US15/936,684 patent/US20190042360A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20190042360A1 (en) | 2019-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10467091B2 (en) | Memory module, memory system including the same, and error correcting method thereof | |
KR102387195B1 (ko) | 메모리 시스템 및 이의 에러 정정 방법 | |
JP5043562B2 (ja) | エラー訂正回路、その方法及び前記回路を備える半導体メモリ装置 | |
CN107039086B (zh) | 具有兼容不同数据长度的纠错功能的存储器和纠错方法 | |
KR20160024966A (ko) | 데이터 에러 교정용 회로, 장치, 및 방법 | |
US10353770B2 (en) | Memory system and error correcting method of the same | |
CN112527549A (zh) | 存储器控制器和包括该存储器控制器的存储器系统 | |
US11249844B2 (en) | Memory system and memory module | |
US10802912B2 (en) | Semiconductor memory device and memory system having the same | |
US11657890B2 (en) | Memory system, integrated circuit system, and operation method of memory system | |
KR20150090414A (ko) | 에러 정정 동작을 수행하는 반도체 장치 | |
US11188417B2 (en) | Memory system, memory module, and operation method of memory system | |
US10901842B2 (en) | Memory system and operating method thereof | |
KR20190014744A (ko) | 에러 정정 회로 및 이를 포함하는 메모리 시스템 | |
US10824507B2 (en) | Semiconductor memory device, controller, and memory system | |
US11265022B2 (en) | Memory system and operating method thereof | |
US20040160853A1 (en) | Semiconductor memory device inputting/outputting data and parity data in burst operation | |
US10915398B2 (en) | Memory system and operating method thereof | |
US10340955B2 (en) | Data processing circuit | |
KR20190040613A (ko) | 메모리 장치 및 이의 동작 방법 | |
KR102629457B1 (ko) | 반도체 메모리 장치, 제어 장치, 및 메모리 시스템 | |
KR20180052154A (ko) | 메모리 시스템 | |
US11747985B2 (en) | Memory system, integrated circuit system, and operation method of memory system | |
US11861180B2 (en) | Error correction in memory system | |
JP2011029857A (ja) | フラッシュファイルシステムの誤り検出訂正機能 |